chipmunk.land/harmonies/ruffle/ruffle.js.map

1 line
No EOL
731 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{"version":3,"file":"ruffle.js","mappings":"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","sources":["webpack://ruffle-selfhosted/webpack/runtime/load script","webpack://ruffle-selfhosted/../../node_modules/jszip/dist/jszip.min.js","webpack://ruffle-selfhosted/webpack/bootstrap","webpack://ruffle-selfhosted/webpack/runtime/compat get default export","webpack://ruffle-selfhosted/webpack/runtime/define property getters","webpack://ruffle-selfhosted/webpack/runtime/ensure chunk","webpack://ruffle-selfhosted/webpack/runtime/get javascript chunk filename","webpack://ruffle-selfhosted/webpack/runtime/global","webpack://ruffle-selfhosted/webpack/runtime/harmony module decorator","webpack://ruffle-selfhosted/webpack/runtime/hasOwnProperty shorthand","webpack://ruffle-selfhosted/webpack/runtime/make namespace object","webpack://ruffle-selfhosted/webpack/runtime/publicPath","webpack://ruffle-selfhosted/webpack/runtime/jsonp chunk loading","webpack://ruffle-selfhosted/../core/dist/version.js","webpack://ruffle-selfhosted/../core/dist/version-range.js","webpack://ruffle-selfhosted/../../node_modules/wasm-feature-detect/dist/esm/index.js","webpack://ruffle-selfhosted/../core/dist/js-polyfills.js","webpack://ruffle-selfhosted/../core/dist/current-script.js","webpack://ruffle-selfhosted/../core/dist/public-path.js","webpack://ruffle-selfhosted/../core/dist/load-ruffle.js","webpack://ruffle-selfhosted/../../node_modules/@fluent/bundle/esm/types.js","webpack://ruffle-selfhosted/../../node_modules/@fluent/bundle/esm/resolver.js","webpack://ruffle-selfhosted/../../node_modules/@fluent/bundle/esm/scope.js","webpack://ruffle-selfhosted/../../node_modules/@fluent/bundle/esm/builtins.js","webpack://ruffle-selfhosted/../../node_modules/@fluent/bundle/esm/memoizer.js","webpack://ruffle-selfhosted/../../node_modules/@fluent/bundle/esm/bundle.js","webpack://ruffle-selfhosted/../../node_modules/@fluent/bundle/esm/resource.js","webpack://ruffle-selfhosted/../../node_modules/@fluent/langneg/esm/locale.js","webpack://ruffle-selfhosted/../../node_modules/@fluent/langneg/esm/negotiate_languages.js","webpack://ruffle-selfhosted/../../node_modules/@fluent/langneg/esm/matches.js","webpack://ruffle-selfhosted/../core/dist/i18n.js","webpack://ruffle-selfhosted/../core/dist/shadow-template.js","webpack://ruffle-selfhosted/../core/dist/register-element.js","webpack://ruffle-selfhosted/../core/dist/load-options.js","webpack://ruffle-selfhosted/../core/dist/config.js","webpack://ruffle-selfhosted/../core/dist/flash-identifiers.js","webpack://ruffle-selfhosted/../core/dist/swf-utils.js","webpack://ruffle-selfhosted/../core/dist/build-info.js","webpack://ruffle-selfhosted/../core/dist/ruffle-player.js","webpack://ruffle-selfhosted/../core/dist/ruffle-embed.js","webpack://ruffle-selfhosted/../core/dist/ruffle-object.js","webpack://ruffle-selfhosted/../core/dist/plugin-polyfill.js","webpack://ruffle-selfhosted/../core/dist/polyfills.js","webpack://ruffle-selfhosted/../core/dist/source-api.js","webpack://ruffle-selfhosted/../core/dist/public-api.js","webpack://ruffle-selfhosted/./js/ruffle.js"],"sourcesContent":["var inProgress = {};\nvar dataWebpackPrefix = \"ruffle-selfhosted:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","/*!\n\nJSZip v3.10.1 - A JavaScript class for generating and reading zip files\n<http://stuartk.com/jszip>\n\n(c) 2009-2016 Stuart Knightley <stuart [at] stuartk.com>\nDual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/main/LICENSE.markdown.\n\nJSZip uses the library pako released under the MIT license :\nhttps://github.com/nodeca/pako/blob/main/LICENSE\n*/\n\n!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{(\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this).JSZip=e()}}(function(){return function s(a,o,h){function u(r,e){if(!o[r]){if(!a[r]){var t=\"function\"==typeof require&&require;if(!e&&t)return t(r,!0);if(l)return l(r,!0);var n=new Error(\"Cannot find module '\"+r+\"'\");throw n.code=\"MODULE_NOT_FOUND\",n}var i=o[r]={exports:{}};a[r][0].call(i.exports,function(e){var t=a[r][1][e];return u(t||e)},i,i.exports,s,a,o,h)}return o[r].exports}for(var l=\"function\"==typeof require&&require,e=0;e<h.length;e++)u(h[e]);return u}({1:[function(e,t,r){\"use strict\";var d=e(\"./utils\"),c=e(\"./support\"),p=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";r.encode=function(e){for(var t,r,n,i,s,a,o,h=[],u=0,l=e.length,f=l,c=\"string\"!==d.getTypeOf(e);u<e.length;)f=l-u,n=c?(t=e[u++],r=u<l?e[u++]:0,u<l?e[u++]:0):(t=e.charCodeAt(u++),r=u<l?e.charCodeAt(u++):0,u<l?e.charCodeAt(u++):0),i=t>>2,s=(3&t)<<4|r>>4,a=1<f?(15&r)<<2|n>>6:64,o=2<f?63&n:64,h.push(p.charAt(i)+p.charAt(s)+p.charAt(a)+p.charAt(o));return h.join(\"\")},r.decode=function(e){var t,r,n,i,s,a,o=0,h=0,u=\"data:\";if(e.substr(0,u.length)===u)throw new Error(\"Invalid base64 input, it looks like a data url.\");var l,f=3*(e=e.replace(/[^A-Za-z0-9+/=]/g,\"\")).length/4;if(e.charAt(e.length-1)===p.charAt(64)&&f--,e.charAt(e.length-2)===p.charAt(64)&&f--,f%1!=0)throw new Error(\"Invalid base64 input, bad content length.\");for(l=c.uint8array?new Uint8Array(0|f):new Array(0|f);o<e.length;)t=p.indexOf(e.charAt(o++))<<2|(i=p.indexOf(e.charAt(o++)))>>4,r=(15&i)<<4|(s=p.indexOf(e.charAt(o++)))>>2,n=(3&s)<<6|(a=p.indexOf(e.charAt(o++))),l[h++]=t,64!==s&&(l[h++]=r),64!==a&&(l[h++]=n);return l}},{\"./support\":30,\"./utils\":32}],2:[function(e,t,r){\"use strict\";var n=e(\"./external\"),i=e(\"./stream/DataWorker\"),s=e(\"./stream/Crc32Probe\"),a=e(\"./stream/DataLengthProbe\");function o(e,t,r,n,i){this.compressedSize=e,this.uncompressedSize=t,this.crc32=r,this.compression=n,this.compressedContent=i}o.prototype={getContentWorker:function(){var e=new i(n.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new a(\"data_length\")),t=this;return e.on(\"end\",function(){if(this.streamInfo.data_length!==t.uncompressedSize)throw new Error(\"Bug : uncompressed data size mismatch\")}),e},getCompressedWorker:function(){return new i(n.Promise.resolve(this.compressedContent)).withStreamInfo(\"compressedSize\",this.compressedSize).withStreamInfo(\"uncompressedSize\",this.uncompressedSize).withStreamInfo(\"crc32\",this.crc32).withStreamInfo(\"compression\",this.compression)}},o.createWorkerFrom=function(e,t,r){return e.pipe(new s).pipe(new a(\"uncompressedSize\")).pipe(t.compressWorker(r)).pipe(new a(\"compressedSize\")).withStreamInfo(\"compression\",t)},t.exports=o},{\"./external\":6,\"./stream/Crc32Probe\":25,\"./stream/DataLengthProbe\":26,\"./stream/DataWorker\":27}],3:[function(e,t,r){\"use strict\";var n=e(\"./stream/GenericWorker\");r.STORE={magic:\"\\0\\0\",compressWorker:function(){return new n(\"STORE compression\")},uncompressWorker:function(){return new n(\"STORE decompression\")}},r.DEFLATE=e(\"./flate\")},{\"./flate\":7,\"./stream/GenericWorker\":28}],4:[function(e,t,r){\"use strict\";var n=e(\"./utils\");var o=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t){return void 0!==e&&e.length?\"string\"!==n.getTypeOf(e)?function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a<s;a++)e=e>>>8^i[255&(e^t[a])];return-1^e}(0|t,e,e.length,0):function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a<s;a++)e=e>>>8^i[255&(e^t.charCodeAt(a))];return-1^e}(0|t,e,e.length,0):0}},{\"./utils\":32}],5:[function(e,t,r){\"use strict\";r.base64=!1,r.binary=!1,r.dir=!1,r.createFolders=!0,r.date=null,r.compression=null,r.compressionOptions=null,r.comment=null,r.unixPermissions=null,r.dosPermissions=null},{}],6:[function(e,t,r){\"use strict\";var n=null;n=\"undefined\"!=typeof Promise?Promise:e(\"lie\"),t.exports={Promise:n}},{lie:37}],7:[function(e,t,r){\"use strict\";var n=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Uint32Array,i=e(\"pako\"),s=e(\"./utils\"),a=e(\"./stream/GenericWorker\"),o=n?\"uint8array\":\"array\";function h(e,t){a.call(this,\"FlateWorker/\"+e),this._pako=null,this._pakoAction=e,this._pakoOptions=t,this.meta={}}r.magic=\"\\b\\0\",s.inherits(h,a),h.prototype.processChunk=function(e){this.meta=e.meta,null===this._pako&&this._createPako(),this._pako.push(s.transformTo(o,e.data),!1)},h.prototype.flush=function(){a.prototype.flush.call(this),null===this._pako&&this._createPako(),this._pako.push([],!0)},h.prototype.cleanUp=function(){a.prototype.cleanUp.call(this),this._pako=null},h.prototype._createPako=function(){this._pako=new i[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var t=this;this._pako.onData=function(e){t.push({data:e,meta:t.meta})}},r.compressWorker=function(e){return new h(\"Deflate\",e)},r.uncompressWorker=function(){return new h(\"Inflate\",{})}},{\"./stream/GenericWorker\":28,\"./utils\":32,pako:38}],8:[function(e,t,r){\"use strict\";function A(e,t){var r,n=\"\";for(r=0;r<t;r++)n+=String.fromCharCode(255&e),e>>>=8;return n}function n(e,t,r,n,i,s){var a,o,h=e.file,u=e.compression,l=s!==O.utf8encode,f=I.transformTo(\"string\",s(h.name)),c=I.transformTo(\"string\",O.utf8encode(h.name)),d=h.comment,p=I.transformTo(\"string\",s(d)),m=I.transformTo(\"string\",O.utf8encode(d)),_=c.length!==h.name.length,g=m.length!==d.length,b=\"\",v=\"\",y=\"\",w=h.dir,k=h.date,x={crc32:0,compressedSize:0,uncompressedSize:0};t&&!r||(x.crc32=e.crc32,x.compressedSize=e.compressedSize,x.uncompressedSize=e.uncompressedSize);var S=0;t&&(S|=8),l||!_&&!g||(S|=2048);var z=0,C=0;w&&(z|=16),\"UNIX\"===i?(C=798,z|=function(e,t){var r=e;return e||(r=t?16893:33204),(65535&r)<<16}(h.unixPermissions,w)):(C=20,z|=function(e){return 63&(e||0)}(h.dosPermissions)),a=k.getUTCHours(),a<<=6,a|=k.getUTCMinutes(),a<<=5,a|=k.getUTCSeconds()/2,o=k.getUTCFullYear()-1980,o<<=4,o|=k.getUTCMonth()+1,o<<=5,o|=k.getUTCDate(),_&&(v=A(1,1)+A(B(f),4)+c,b+=\"up\"+A(v.length,2)+v),g&&(y=A(1,1)+A(B(p),4)+m,b+=\"uc\"+A(y.length,2)+y);var E=\"\";return E+=\"\\n\\0\",E+=A(S,2),E+=u.magic,E+=A(a,2),E+=A(o,2),E+=A(x.crc32,4),E+=A(x.compressedSize,4),E+=A(x.uncompressedSize,4),E+=A(f.length,2),E+=A(b.length,2),{fileRecord:R.LOCAL_FILE_HEADER+E+f+b,dirRecord:R.CENTRAL_FILE_HEADER+A(C,2)+E+A(p.length,2)+\"\\0\\0\\0\\0\"+A(z,4)+A(n,4)+f+b+p}}var I=e(\"../utils\"),i=e(\"../stream/GenericWorker\"),O=e(\"../utf8\"),B=e(\"../crc32\"),R=e(\"../signature\");function s(e,t,r,n){i.call(this,\"ZipFileWorker\"),this.bytesWritten=0,this.zipComment=t,this.zipPlatform=r,this.encodeFileName=n,this.streamFiles=e,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}I.inherits(s,i),s.prototype.push=function(e){var t=e.meta.percent||0,r=this.entriesCount,n=this._sources.length;this.accumulate?this.contentBuffer.push(e):(this.bytesWritten+=e.data.length,i.prototype.push.call(this,{data:e.data,meta:{currentFile:this.currentFile,percent:r?(t+100*(r-n-1))/r:100}}))},s.prototype.openedSource=function(e){this.currentSourceOffset=this.bytesWritten,this.currentFile=e.file.name;var t=this.streamFiles&&!e.file.dir;if(t){var r=n(e,t,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:r.fileRecord,meta:{percent:0}})}else this.accumulate=!0},s.prototype.closedSource=function(e){this.accumulate=!1;var t=this.streamFiles&&!e.file.dir,r=n(e,t,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(r.dirRecord),t)this.push({data:function(e){return R.DATA_DESCRIPTOR+A(e.crc32,4)+A(e.compressedSize,4)+A(e.uncompressedSize,4)}(e),meta:{percent:100}});else for(this.push({data:r.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},s.prototype.flush=function(){for(var e=this.bytesWritten,t=0;t<this.dirRecords.length;t++)this.push({data:this.dirRecords[t],meta:{percent:100}});var r=this.bytesWritten-e,n=function(e,t,r,n,i){var s=I.transformTo(\"string\",i(n));return R.CENTRAL_DIRECTORY_END+\"\\0\\0\\0\\0\"+A(e,2)+A(e,2)+A(t,4)+A(r,4)+A(s.length,2)+s}(this.dirRecords.length,r,e,this.zipComment,this.encodeFileName);this.push({data:n,meta:{percent:100}})},s.prototype.prepareNextSource=function(){this.previous=this._sources.shift(),this.openedSource(this.previous.streamInfo),this.isPaused?this.previous.pause():this.previous.resume()},s.prototype.registerPrevious=function(e){this._sources.push(e);var t=this;return e.on(\"data\",function(e){t.processChunk(e)}),e.on(\"end\",function(){t.closedSource(t.previous.streamInfo),t._sources.length?t.prepareNextSource():t.end()}),e.on(\"error\",function(e){t.error(e)}),this},s.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(!this.previous&&this._sources.length?(this.prepareNextSource(),!0):this.previous||this._sources.length||this.generatedError?void 0:(this.end(),!0))},s.prototype.error=function(e){var t=this._sources;if(!i.prototype.error.call(this,e))return!1;for(var r=0;r<t.length;r++)try{t[r].error(e)}catch(e){}return!0},s.prototype.lock=function(){i.prototype.lock.call(this);for(var e=this._sources,t=0;t<e.length;t++)e[t].lock()},t.exports=s},{\"../crc32\":4,\"../signature\":23,\"../stream/GenericWorker\":28,\"../utf8\":31,\"../utils\":32}],9:[function(e,t,r){\"use strict\";var u=e(\"../compressions\"),n=e(\"./ZipFileWorker\");r.generateWorker=function(e,a,t){var o=new n(a.streamFiles,t,a.platform,a.encodeFileName),h=0;try{e.forEach(function(e,t){h++;var r=function(e,t){var r=e||t,n=u[r];if(!n)throw new Error(r+\" is not a valid compression method !\");return n}(t.options.compression,a.compression),n=t.options.compressionOptions||a.compressionOptions||{},i=t.dir,s=t.date;t._compressWorker(r,n).withStreamInfo(\"file\",{name:e,dir:i,date:s,comment:t.comment||\"\",unixPermissions:t.unixPermissions,dosPermissions:t.dosPermissions}).pipe(o)}),o.entriesCount=h}catch(e){o.error(e)}return o}},{\"../compressions\":3,\"./ZipFileWorker\":8}],10:[function(e,t,r){\"use strict\";function n(){if(!(this instanceof n))return new n;if(arguments.length)throw new Error(\"The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.\");this.files=Object.create(null),this.comment=null,this.root=\"\",this.clone=function(){var e=new n;for(var t in this)\"function\"!=typeof this[t]&&(e[t]=this[t]);return e}}(n.prototype=e(\"./object\")).loadAsync=e(\"./load\"),n.support=e(\"./support\"),n.defaults=e(\"./defaults\"),n.version=\"3.10.1\",n.loadAsync=function(e,t){return(new n).loadAsync(e,t)},n.external=e(\"./external\"),t.exports=n},{\"./defaults\":5,\"./external\":6,\"./load\":11,\"./object\":15,\"./support\":30}],11:[function(e,t,r){\"use strict\";var u=e(\"./utils\"),i=e(\"./external\"),n=e(\"./utf8\"),s=e(\"./zipEntries\"),a=e(\"./stream/Crc32Probe\"),l=e(\"./nodejsUtils\");function f(n){return new i.Promise(function(e,t){var r=n.decompressed.getContentWorker().pipe(new a);r.on(\"error\",function(e){t(e)}).on(\"end\",function(){r.streamInfo.crc32!==n.decompressed.crc32?t(new Error(\"Corrupted zip : CRC32 mismatch\")):e()}).resume()})}t.exports=function(e,o){var h=this;return o=u.extend(o||{},{base64:!1,checkCRC32:!1,optimizedBinaryString:!1,createFolders:!1,decodeFileName:n.utf8decode}),l.isNode&&l.isStream(e)?i.Promise.reject(new Error(\"JSZip can't accept a stream when loading a zip file.\")):u.prepareContent(\"the loaded zip file\",e,!0,o.optimizedBinaryString,o.base64).then(function(e){var t=new s(o);return t.load(e),t}).then(function(e){var t=[i.Promise.resolve(e)],r=e.files;if(o.checkCRC32)for(var n=0;n<r.length;n++)t.push(f(r[n]));return i.Promise.all(t)}).then(function(e){for(var t=e.shift(),r=t.files,n=0;n<r.length;n++){var i=r[n],s=i.fileNameStr,a=u.resolve(i.fileNameStr);h.file(a,i.decompressed,{binary:!0,optimizedBinaryString:!0,date:i.date,dir:i.dir,comment:i.fileCommentStr.length?i.fileCommentStr:null,unixPermissions:i.unixPermissions,dosPermissions:i.dosPermissions,createFolders:o.createFolders}),i.dir||(h.file(a).unsafeOriginalName=s)}return t.zipComment.length&&(h.comment=t.zipComment),h})}},{\"./external\":6,\"./nodejsUtils\":14,\"./stream/Crc32Probe\":25,\"./utf8\":31,\"./utils\":32,\"./zipEntries\":33}],12:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"../stream/GenericWorker\");function s(e,t){i.call(this,\"Nodejs stream input adapter for \"+e),this._upstreamEnded=!1,this._bindStream(t)}n.inherits(s,i),s.prototype._bindStream=function(e){var t=this;(this._stream=e).pause(),e.on(\"data\",function(e){t.push({data:e,meta:{percent:0}})}).on(\"error\",function(e){t.isPaused?this.generatedError=e:t.error(e)}).on(\"end\",function(){t.isPaused?t._upstreamEnded=!0:t.end()})},s.prototype.pause=function(){return!!i.prototype.pause.call(this)&&(this._stream.pause(),!0)},s.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(this._upstreamEnded?this.end():this._stream.resume(),!0)},t.exports=s},{\"../stream/GenericWorker\":28,\"../utils\":32}],13:[function(e,t,r){\"use strict\";var i=e(\"readable-stream\").Readable;function n(e,t,r){i.call(this,t),this._helper=e;var n=this;e.on(\"data\",function(e,t){n.push(e)||n._helper.pause(),r&&r(t)}).on(\"error\",function(e){n.emit(\"error\",e)}).on(\"end\",function(){n.push(null)})}e(\"../utils\").inherits(n,i),n.prototype._read=function(){this._helper.resume()},t.exports=n},{\"../utils\":32,\"readable-stream\":16}],14:[function(e,t,r){\"use strict\";t.exports={isNode:\"undefined\"!=typeof Buffer,newBufferFrom:function(e,t){if(Buffer.from&&Buffer.from!==Uint8Array.from)return Buffer.from(e,t);if(\"number\"==typeof e)throw new Error('The \"data\" argument must not be a number');return new Buffer(e,t)},allocBuffer:function(e){if(Buffer.alloc)return Buffer.alloc(e);var t=new Buffer(e);return t.fill(0),t},isBuffer:function(e){return Buffer.isBuffer(e)},isStream:function(e){return e&&\"function\"==typeof e.on&&\"function\"==typeof e.pause&&\"function\"==typeof e.resume}}},{}],15:[function(e,t,r){\"use strict\";function s(e,t,r){var n,i=u.getTypeOf(t),s=u.extend(r||{},f);s.date=s.date||new Date,null!==s.compression&&(s.compression=s.compression.toUpperCase()),\"string\"==typeof s.unixPermissions&&(s.unixPermissions=parseInt(s.unixPermissions,8)),s.unixPermissions&&16384&s.unixPermissions&&(s.dir=!0),s.dosPermissions&&16&s.dosPermissions&&(s.dir=!0),s.dir&&(e=g(e)),s.createFolders&&(n=_(e))&&b.call(this,n,!0);var a=\"string\"===i&&!1===s.binary&&!1===s.base64;r&&void 0!==r.binary||(s.binary=!a),(t instanceof c&&0===t.uncompressedSize||s.dir||!t||0===t.length)&&(s.base64=!1,s.binary=!0,t=\"\",s.compression=\"STORE\",i=\"string\");var o=null;o=t instanceof c||t instanceof l?t:p.isNode&&p.isStream(t)?new m(e,t):u.prepareContent(e,t,s.binary,s.optimizedBinaryString,s.base64);var h=new d(e,o,s);this.files[e]=h}var i=e(\"./utf8\"),u=e(\"./utils\"),l=e(\"./stream/GenericWorker\"),a=e(\"./stream/StreamHelper\"),f=e(\"./defaults\"),c=e(\"./compressedObject\"),d=e(\"./zipObject\"),o=e(\"./generate\"),p=e(\"./nodejsUtils\"),m=e(\"./nodejs/NodejsStreamInputAdapter\"),_=function(e){\"/\"===e.slice(-1)&&(e=e.substring(0,e.length-1));var t=e.lastIndexOf(\"/\");return 0<t?e.substring(0,t):\"\"},g=function(e){return\"/\"!==e.slice(-1)&&(e+=\"/\"),e},b=function(e,t){return t=void 0!==t?t:f.createFolders,e=g(e),this.files[e]||s.call(this,e,null,{dir:!0,createFolders:t}),this.files[e]};function h(e){return\"[object RegExp]\"===Object.prototype.toString.call(e)}var n={load:function(){throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\")},forEach:function(e){var t,r,n;for(t in this.files)n=this.files[t],(r=t.slice(this.root.length,t.length))&&t.slice(0,this.root.length)===this.root&&e(r,n)},filter:function(r){var n=[];return this.forEach(function(e,t){r(e,t)&&n.push(t)}),n},file:function(e,t,r){if(1!==arguments.length)return e=this.root+e,s.call(this,e,t,r),this;if(h(e)){var n=e;return this.filter(function(e,t){return!t.dir&&n.test(e)})}var i=this.files[this.root+e];return i&&!i.dir?i:null},folder:function(r){if(!r)return this;if(h(r))return this.filter(function(e,t){return t.dir&&r.test(e)});var e=this.root+r,t=b.call(this,e),n=this.clone();return n.root=t.name,n},remove:function(r){r=this.root+r;var e=this.files[r];if(e||(\"/\"!==r.slice(-1)&&(r+=\"/\"),e=this.files[r]),e&&!e.dir)delete this.files[r];else for(var t=this.filter(function(e,t){return t.name.slice(0,r.length)===r}),n=0;n<t.length;n++)delete this.files[t[n].name];return this},generate:function(){throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\")},generateInternalStream:function(e){var t,r={};try{if((r=u.extend(e||{},{streamFiles:!1,compression:\"STORE\",compressionOptions:null,type:\"\",platform:\"DOS\",comment:null,mimeType:\"application/zip\",encodeFileName:i.utf8encode})).type=r.type.toLowerCase(),r.compression=r.compression.toUpperCase(),\"binarystring\"===r.type&&(r.type=\"string\"),!r.type)throw new Error(\"No output type specified.\");u.checkSupport(r.type),\"darwin\"!==r.platform&&\"freebsd\"!==r.platform&&\"linux\"!==r.platform&&\"sunos\"!==r.platform||(r.platform=\"UNIX\"),\"win32\"===r.platform&&(r.platform=\"DOS\");var n=r.comment||this.comment||\"\";t=o.generateWorker(this,r,n)}catch(e){(t=new l(\"error\")).error(e)}return new a(t,r.type||\"string\",r.mimeType)},generateAsync:function(e,t){return this.generateInternalStream(e).accumulate(t)},generateNodeStream:function(e,t){return(e=e||{}).type||(e.type=\"nodebuffer\"),this.generateInternalStream(e).toNodejsStream(t)}};t.exports=n},{\"./compressedObject\":2,\"./defaults\":5,\"./generate\":9,\"./nodejs/NodejsStreamInputAdapter\":12,\"./nodejsUtils\":14,\"./stream/GenericWorker\":28,\"./stream/StreamHelper\":29,\"./utf8\":31,\"./utils\":32,\"./zipObject\":35}],16:[function(e,t,r){\"use strict\";t.exports=e(\"stream\")},{stream:void 0}],17:[function(e,t,r){\"use strict\";var n=e(\"./DataReader\");function i(e){n.call(this,e);for(var t=0;t<this.data.length;t++)e[t]=255&e[t]}e(\"../utils\").inherits(i,n),i.prototype.byteAt=function(e){return this.data[this.zero+e]},i.prototype.lastIndexOfSignature=function(e){for(var t=e.charCodeAt(0),r=e.charCodeAt(1),n=e.charCodeAt(2),i=e.charCodeAt(3),s=this.length-4;0<=s;--s)if(this.data[s]===t&&this.data[s+1]===r&&this.data[s+2]===n&&this.data[s+3]===i)return s-this.zero;return-1},i.prototype.readAndCheckSignature=function(e){var t=e.charCodeAt(0),r=e.charCodeAt(1),n=e.charCodeAt(2),i=e.charCodeAt(3),s=this.readData(4);return t===s[0]&&r===s[1]&&n===s[2]&&i===s[3]},i.prototype.readData=function(e){if(this.checkOffset(e),0===e)return[];var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./DataReader\":18}],18:[function(e,t,r){\"use strict\";var n=e(\"../utils\");function i(e){this.data=e,this.length=e.length,this.index=0,this.zero=0}i.prototype={checkOffset:function(e){this.checkIndex(this.index+e)},checkIndex:function(e){if(this.length<this.zero+e||e<0)throw new Error(\"End of data reached (data length = \"+this.length+\", asked index = \"+e+\"). Corrupted zip ?\")},setIndex:function(e){this.checkIndex(e),this.index=e},skip:function(e){this.setIndex(this.index+e)},byteAt:function(){},readInt:function(e){var t,r=0;for(this.checkOffset(e),t=this.index+e-1;t>=this.index;t--)r=(r<<8)+this.byteAt(t);return this.index+=e,r},readString:function(e){return n.transformTo(\"string\",this.readData(e))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var e=this.readInt(4);return new Date(Date.UTC(1980+(e>>25&127),(e>>21&15)-1,e>>16&31,e>>11&31,e>>5&63,(31&e)<<1))}},t.exports=i},{\"../utils\":32}],19:[function(e,t,r){\"use strict\";var n=e(\"./Uint8ArrayReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./Uint8ArrayReader\":21}],20:[function(e,t,r){\"use strict\";var n=e(\"./DataReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.byteAt=function(e){return this.data.charCodeAt(this.zero+e)},i.prototype.lastIndexOfSignature=function(e){return this.data.lastIndexOf(e)-this.zero},i.prototype.readAndCheckSignature=function(e){return e===this.readData(4)},i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./DataReader\":18}],21:[function(e,t,r){\"use strict\";var n=e(\"./ArrayReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.readData=function(e){if(this.checkOffset(e),0===e)return new Uint8Array(0);var t=this.data.subarray(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./ArrayReader\":17}],22:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"../support\"),s=e(\"./ArrayReader\"),a=e(\"./StringReader\"),o=e(\"./NodeBufferReader\"),h=e(\"./Uint8ArrayReader\");t.exports=function(e){var t=n.getTypeOf(e);return n.checkSupport(t),\"string\"!==t||i.uint8array?\"nodebuffer\"===t?new o(e):i.uint8array?new h(n.transformTo(\"uint8array\",e)):new s(n.transformTo(\"array\",e)):new a(e)}},{\"../support\":30,\"../utils\":32,\"./ArrayReader\":17,\"./NodeBufferReader\":19,\"./StringReader\":20,\"./Uint8ArrayReader\":21}],23:[function(e,t,r){\"use strict\";r.LOCAL_FILE_HEADER=\"PK\u0003\u0004\",r.CENTRAL_FILE_HEADER=\"PK\u0001\u0002\",r.CENTRAL_DIRECTORY_END=\"PK\u0005\u0006\",r.ZIP64_CENTRAL_DIRECTORY_LOCATOR=\"PK\u0006\u0007\",r.ZIP64_CENTRAL_DIRECTORY_END=\"PK\u0006\u0006\",r.DATA_DESCRIPTOR=\"PK\u0007\\b\"},{}],24:[function(e,t,r){\"use strict\";var n=e(\"./GenericWorker\"),i=e(\"../utils\");function s(e){n.call(this,\"ConvertWorker to \"+e),this.destType=e}i.inherits(s,n),s.prototype.processChunk=function(e){this.push({data:i.transformTo(this.destType,e.data),meta:e.meta})},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],25:[function(e,t,r){\"use strict\";var n=e(\"./GenericWorker\"),i=e(\"../crc32\");function s(){n.call(this,\"Crc32Probe\"),this.withStreamInfo(\"crc32\",0)}e(\"../utils\").inherits(s,n),s.prototype.processChunk=function(e){this.streamInfo.crc32=i(e.data,this.streamInfo.crc32||0),this.push(e)},t.exports=s},{\"../crc32\":4,\"../utils\":32,\"./GenericWorker\":28}],26:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"./GenericWorker\");function s(e){i.call(this,\"DataLengthProbe for \"+e),this.propName=e,this.withStreamInfo(e,0)}n.inherits(s,i),s.prototype.processChunk=function(e){if(e){var t=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=t+e.data.length}i.prototype.processChunk.call(this,e)},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],27:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"./GenericWorker\");function s(e){i.call(this,\"DataWorker\");var t=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type=\"\",this._tickScheduled=!1,e.then(function(e){t.dataIsReady=!0,t.data=e,t.max=e&&e.length||0,t.type=n.getTypeOf(e),t.isPaused||t._tickAndRepeat()},function(e){t.error(e)})}n.inherits(s,i),s.prototype.cleanUp=function(){i.prototype.cleanUp.call(this),this.data=null},s.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,n.delay(this._tickAndRepeat,[],this)),!0)},s.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(n.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},s.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var e=null,t=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case\"string\":e=this.data.substring(this.index,t);break;case\"uint8array\":e=this.data.subarray(this.index,t);break;case\"array\":case\"nodebuffer\":e=this.data.slice(this.index,t)}return this.index=t,this.push({data:e,meta:{percent:this.max?this.index/this.max*100:0}})},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],28:[function(e,t,r){\"use strict\";function n(e){this.name=e||\"default\",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}n.prototype={push:function(e){this.emit(\"data\",e)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit(\"end\"),this.cleanUp(),this.isFinished=!0}catch(e){this.emit(\"error\",e)}return!0},error:function(e){return!this.isFinished&&(this.isPaused?this.generatedError=e:(this.isFinished=!0,this.emit(\"error\",e),this.previous&&this.previous.error(e),this.cleanUp()),!0)},on:function(e,t){return this._listeners[e].push(t),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(e,t){if(this._listeners[e])for(var r=0;r<this._listeners[e].length;r++)this._listeners[e][r].call(this,t)},pipe:function(e){return e.registerPrevious(this)},registerPrevious:function(e){if(this.isLocked)throw new Error(\"The stream '\"+this+\"' has already been used.\");this.streamInfo=e.streamInfo,this.mergeStreamInfo(),this.previous=e;var t=this;return e.on(\"data\",function(e){t.processChunk(e)}),e.on(\"end\",function(){t.end()}),e.on(\"error\",function(e){t.error(e)}),this},pause:function(){return!this.isPaused&&!this.isFinished&&(this.isPaused=!0,this.previous&&this.previous.pause(),!0)},resume:function(){if(!this.isPaused||this.isFinished)return!1;var e=this.isPaused=!1;return this.generatedError&&(this.error(this.generatedError),e=!0),this.previous&&this.previous.resume(),!e},flush:function(){},processChunk:function(e){this.push(e)},withStreamInfo:function(e,t){return this.extraStreamInfo[e]=t,this.mergeStreamInfo(),this},mergeStreamInfo:function(){for(var e in this.extraStreamInfo)Object.prototype.hasOwnProperty.call(this.extraStreamInfo,e)&&(this.streamInfo[e]=this.extraStreamInfo[e])},lock:function(){if(this.isLocked)throw new Error(\"The stream '\"+this+\"' has already been used.\");this.isLocked=!0,this.previous&&this.previous.lock()},toString:function(){var e=\"Worker \"+this.name;return this.previous?this.previous+\" -> \"+e:e}},t.exports=n},{}],29:[function(e,t,r){\"use strict\";var h=e(\"../utils\"),i=e(\"./ConvertWorker\"),s=e(\"./GenericWorker\"),u=e(\"../base64\"),n=e(\"../support\"),a=e(\"../external\"),o=null;if(n.nodestream)try{o=e(\"../nodejs/NodejsStreamOutputAdapter\")}catch(e){}function l(e,o){return new a.Promise(function(t,r){var n=[],i=e._internalType,s=e._outputType,a=e._mimeType;e.on(\"data\",function(e,t){n.push(e),o&&o(t)}).on(\"error\",function(e){n=[],r(e)}).on(\"end\",function(){try{var e=function(e,t,r){switch(e){case\"blob\":return h.newBlob(h.transformTo(\"arraybuffer\",t),r);case\"base64\":return u.encode(t);default:return h.transformTo(e,t)}}(s,function(e,t){var r,n=0,i=null,s=0;for(r=0;r<t.length;r++)s+=t[r].length;switch(e){case\"string\":return t.join(\"\");case\"array\":return Array.prototype.concat.apply([],t);case\"uint8array\":for(i=new Uint8Array(s),r=0;r<t.length;r++)i.set(t[r],n),n+=t[r].length;return i;case\"nodebuffer\":return Buffer.concat(t);default:throw new Error(\"concat : unsupported type '\"+e+\"'\")}}(i,n),a);t(e)}catch(e){r(e)}n=[]}).resume()})}function f(e,t,r){var n=t;switch(t){case\"blob\":case\"arraybuffer\":n=\"uint8array\";break;case\"base64\":n=\"string\"}try{this._internalType=n,this._outputType=t,this._mimeType=r,h.checkSupport(n),this._worker=e.pipe(new i(n)),e.lock()}catch(e){this._worker=new s(\"error\"),this._worker.error(e)}}f.prototype={accumulate:function(e){return l(this,e)},on:function(e,t){var r=this;return\"data\"===e?this._worker.on(e,function(e){t.call(r,e.data,e.meta)}):this._worker.on(e,function(){h.delay(t,arguments,r)}),this},resume:function(){return h.delay(this._worker.resume,[],this._worker),this},pause:function(){return this._worker.pause(),this},toNodejsStream:function(e){if(h.checkSupport(\"nodestream\"),\"nodebuffer\"!==this._outputType)throw new Error(this._outputType+\" is not supported by this method\");return new o(this,{objectMode:\"nodebuffer\"!==this._outputType},e)}},t.exports=f},{\"../base64\":1,\"../external\":6,\"../nodejs/NodejsStreamOutputAdapter\":13,\"../support\":30,\"../utils\":32,\"./ConvertWorker\":24,\"./GenericWorker\":28}],30:[function(e,t,r){\"use strict\";if(r.base64=!0,r.array=!0,r.string=!0,r.arraybuffer=\"undefined\"!=typeof ArrayBuffer&&\"undefined\"!=typeof Uint8Array,r.nodebuffer=\"undefined\"!=typeof Buffer,r.uint8array=\"undefined\"!=typeof Uint8Array,\"undefined\"==typeof ArrayBuffer)r.blob=!1;else{var n=new ArrayBuffer(0);try{r.blob=0===new Blob([n],{type:\"application/zip\"}).size}catch(e){try{var i=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);i.append(n),r.blob=0===i.getBlob(\"application/zip\").size}catch(e){r.blob=!1}}}try{r.nodestream=!!e(\"readable-stream\").Readable}catch(e){r.nodestream=!1}},{\"readable-stream\":16}],31:[function(e,t,s){\"use strict\";for(var o=e(\"./utils\"),h=e(\"./support\"),r=e(\"./nodejsUtils\"),n=e(\"./stream/GenericWorker\"),u=new Array(256),i=0;i<256;i++)u[i]=252<=i?6:248<=i?5:240<=i?4:224<=i?3:192<=i?2:1;u[254]=u[254]=1;function a(){n.call(this,\"utf-8 decode\"),this.leftOver=null}function l(){n.call(this,\"utf-8 encode\")}s.utf8encode=function(e){return h.nodebuffer?r.newBufferFrom(e,\"utf-8\"):function(e){var t,r,n,i,s,a=e.length,o=0;for(i=0;i<a;i++)55296==(64512&(r=e.charCodeAt(i)))&&i+1<a&&56320==(64512&(n=e.charCodeAt(i+1)))&&(r=65536+(r-55296<<10)+(n-56320),i++),o+=r<128?1:r<2048?2:r<65536?3:4;for(t=h.uint8array?new Uint8Array(o):new Array(o),i=s=0;s<o;i++)55296==(64512&(r=e.charCodeAt(i)))&&i+1<a&&56320==(64512&(n=e.charCodeAt(i+1)))&&(r=65536+(r-55296<<10)+(n-56320),i++),r<128?t[s++]=r:(r<2048?t[s++]=192|r>>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t}(e)},s.utf8decode=function(e){return h.nodebuffer?o.transformTo(\"nodebuffer\",e).toString(\"utf-8\"):function(e){var t,r,n,i,s=e.length,a=new Array(2*s);for(t=r=0;t<s;)if((n=e[t++])<128)a[r++]=n;else if(4<(i=u[n]))a[r++]=65533,t+=i-1;else{for(n&=2===i?31:3===i?15:7;1<i&&t<s;)n=n<<6|63&e[t++],i--;1<i?a[r++]=65533:n<65536?a[r++]=n:(n-=65536,a[r++]=55296|n>>10&1023,a[r++]=56320|1023&n)}return a.length!==r&&(a.subarray?a=a.subarray(0,r):a.length=r),o.applyFromCharCode(a)}(e=o.transformTo(h.uint8array?\"uint8array\":\"array\",e))},o.inherits(a,n),a.prototype.processChunk=function(e){var t=o.transformTo(h.uint8array?\"uint8array\":\"array\",e.data);if(this.leftOver&&this.leftOver.length){if(h.uint8array){var r=t;(t=new Uint8Array(r.length+this.leftOver.length)).set(this.leftOver,0),t.set(r,this.leftOver.length)}else t=this.leftOver.concat(t);this.leftOver=null}var n=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t}(t),i=t;n!==t.length&&(h.uint8array?(i=t.subarray(0,n),this.leftOver=t.subarray(n,t.length)):(i=t.slice(0,n),this.leftOver=t.slice(n,t.length))),this.push({data:s.utf8decode(i),meta:e.meta})},a.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:s.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},s.Utf8DecodeWorker=a,o.inherits(l,n),l.prototype.processChunk=function(e){this.push({data:s.utf8encode(e.data),meta:e.meta})},s.Utf8EncodeWorker=l},{\"./nodejsUtils\":14,\"./stream/GenericWorker\":28,\"./support\":30,\"./utils\":32}],32:[function(e,t,a){\"use strict\";var o=e(\"./support\"),h=e(\"./base64\"),r=e(\"./nodejsUtils\"),u=e(\"./external\");function n(e){return e}function l(e,t){for(var r=0;r<e.length;++r)t[r]=255&e.charCodeAt(r);return t}e(\"setimmediate\"),a.newBlob=function(t,r){a.checkSupport(\"blob\");try{return new Blob([t],{type:r})}catch(e){try{var n=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);return n.append(t),n.getBlob(r)}catch(e){throw new Error(\"Bug : can't construct the Blob.\")}}};var i={stringifyByChunk:function(e,t,r){var n=[],i=0,s=e.length;if(s<=r)return String.fromCharCode.apply(null,e);for(;i<s;)\"array\"===t||\"nodebuffer\"===t?n.push(String.fromCharCode.apply(null,e.slice(i,Math.min(i+r,s)))):n.push(String.fromCharCode.apply(null,e.subarray(i,Math.min(i+r,s)))),i+=r;return n.join(\"\")},stringifyByChar:function(e){for(var t=\"\",r=0;r<e.length;r++)t+=String.fromCharCode(e[r]);return t},applyCanBeUsed:{uint8array:function(){try{return o.uint8array&&1===String.fromCharCode.apply(null,new Uint8Array(1)).length}catch(e){return!1}}(),nodebuffer:function(){try{return o.nodebuffer&&1===String.fromCharCode.apply(null,r.allocBuffer(1)).length}catch(e){return!1}}()}};function s(e){var t=65536,r=a.getTypeOf(e),n=!0;if(\"uint8array\"===r?n=i.applyCanBeUsed.uint8array:\"nodebuffer\"===r&&(n=i.applyCanBeUsed.nodebuffer),n)for(;1<t;)try{return i.stringifyByChunk(e,r,t)}catch(e){t=Math.floor(t/2)}return i.stringifyByChar(e)}function f(e,t){for(var r=0;r<e.length;r++)t[r]=e[r];return t}a.applyFromCharCode=s;var c={};c.string={string:n,array:function(e){return l(e,new Array(e.length))},arraybuffer:function(e){return c.string.uint8array(e).buffer},uint8array:function(e){return l(e,new Uint8Array(e.length))},nodebuffer:function(e){return l(e,r.allocBuffer(e.length))}},c.array={string:s,array:n,arraybuffer:function(e){return new Uint8Array(e).buffer},uint8array:function(e){return new Uint8Array(e)},nodebuffer:function(e){return r.newBufferFrom(e)}},c.arraybuffer={string:function(e){return s(new Uint8Array(e))},array:function(e){return f(new Uint8Array(e),new Array(e.byteLength))},arraybuffer:n,uint8array:function(e){return new Uint8Array(e)},nodebuffer:function(e){return r.newBufferFrom(new Uint8Array(e))}},c.uint8array={string:s,array:function(e){return f(e,new Array(e.length))},arraybuffer:function(e){return e.buffer},uint8array:n,nodebuffer:function(e){return r.newBufferFrom(e)}},c.nodebuffer={string:s,array:function(e){return f(e,new Array(e.length))},arraybuffer:function(e){return c.nodebuffer.uint8array(e).buffer},uint8array:function(e){return f(e,new Uint8Array(e.length))},nodebuffer:n},a.transformTo=function(e,t){if(t=t||\"\",!e)return t;a.checkSupport(e);var r=a.getTypeOf(t);return c[r][e](t)},a.resolve=function(e){for(var t=e.split(\"/\"),r=[],n=0;n<t.length;n++){var i=t[n];\".\"===i||\"\"===i&&0!==n&&n!==t.length-1||(\"..\"===i?r.pop():r.push(i))}return r.join(\"/\")},a.getTypeOf=function(e){return\"string\"==typeof e?\"string\":\"[object Array]\"===Object.prototype.toString.call(e)?\"array\":o.nodebuffer&&r.isBuffer(e)?\"nodebuffer\":o.uint8array&&e instanceof Uint8Array?\"uint8array\":o.arraybuffer&&e instanceof ArrayBuffer?\"arraybuffer\":void 0},a.checkSupport=function(e){if(!o[e.toLowerCase()])throw new Error(e+\" is not supported by this platform\")},a.MAX_VALUE_16BITS=65535,a.MAX_VALUE_32BITS=-1,a.pretty=function(e){var t,r,n=\"\";for(r=0;r<(e||\"\").length;r++)n+=\"\\\\x\"+((t=e.charCodeAt(r))<16?\"0\":\"\")+t.toString(16).toUpperCase();return n},a.delay=function(e,t,r){setImmediate(function(){e.apply(r||null,t||[])})},a.inherits=function(e,t){function r(){}r.prototype=t.prototype,e.prototype=new r},a.extend=function(){var e,t,r={};for(e=0;e<arguments.length;e++)for(t in arguments[e])Object.prototype.hasOwnProperty.call(arguments[e],t)&&void 0===r[t]&&(r[t]=arguments[e][t]);return r},a.prepareContent=function(r,e,n,i,s){return u.Promise.resolve(e).then(function(n){return o.blob&&(n instanceof Blob||-1!==[\"[object File]\",\"[object Blob]\"].indexOf(Object.prototype.toString.call(n)))&&\"undefined\"!=typeof FileReader?new u.Promise(function(t,r){var e=new FileReader;e.onload=function(e){t(e.target.result)},e.onerror=function(e){r(e.target.error)},e.readAsArrayBuffer(n)}):n}).then(function(e){var t=a.getTypeOf(e);return t?(\"arraybuffer\"===t?e=a.transformTo(\"uint8array\",e):\"string\"===t&&(s?e=h.decode(e):n&&!0!==i&&(e=function(e){return l(e,o.uint8array?new Uint8Array(e.length):new Array(e.length))}(e))),e):u.Promise.reject(new Error(\"Can't read the data of '\"+r+\"'. Is it in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?\"))})}},{\"./base64\":1,\"./external\":6,\"./nodejsUtils\":14,\"./support\":30,setimmediate:54}],33:[function(e,t,r){\"use strict\";var n=e(\"./reader/readerFor\"),i=e(\"./utils\"),s=e(\"./signature\"),a=e(\"./zipEntry\"),o=e(\"./support\");function h(e){this.files=[],this.loadOptions=e}h.prototype={checkSignature:function(e){if(!this.reader.readAndCheckSignature(e)){this.reader.index-=4;var t=this.reader.readString(4);throw new Error(\"Corrupted zip or bug: unexpected signature (\"+i.pretty(t)+\", expected \"+i.pretty(e)+\")\")}},isSignature:function(e,t){var r=this.reader.index;this.reader.setIndex(e);var n=this.reader.readString(4)===t;return this.reader.setIndex(r),n},readBlockEndOfCentral:function(){this.diskNumber=this.reader.readInt(2),this.diskWithCentralDirStart=this.reader.readInt(2),this.centralDirRecordsOnThisDisk=this.reader.readInt(2),this.centralDirRecords=this.reader.readInt(2),this.centralDirSize=this.reader.readInt(4),this.centralDirOffset=this.reader.readInt(4),this.zipCommentLength=this.reader.readInt(2);var e=this.reader.readData(this.zipCommentLength),t=o.uint8array?\"uint8array\":\"array\",r=i.transformTo(t,e);this.zipComment=this.loadOptions.decodeFileName(r)},readBlockZip64EndOfCentral:function(){this.zip64EndOfCentralSize=this.reader.readInt(8),this.reader.skip(4),this.diskNumber=this.reader.readInt(4),this.diskWithCentralDirStart=this.reader.readInt(4),this.centralDirRecordsOnThisDisk=this.reader.readInt(8),this.centralDirRecords=this.reader.readInt(8),this.centralDirSize=this.reader.readInt(8),this.centralDirOffset=this.reader.readInt(8),this.zip64ExtensibleData={};for(var e,t,r,n=this.zip64EndOfCentralSize-44;0<n;)e=this.reader.readInt(2),t=this.reader.readInt(4),r=this.reader.readData(t),this.zip64ExtensibleData[e]={id:e,length:t,value:r}},readBlockZip64EndOfCentralLocator:function(){if(this.diskWithZip64CentralDirStart=this.reader.readInt(4),this.relativeOffsetEndOfZip64CentralDir=this.reader.readInt(8),this.disksCount=this.reader.readInt(4),1<this.disksCount)throw new Error(\"Multi-volumes zip are not supported\")},readLocalFiles:function(){var e,t;for(e=0;e<this.files.length;e++)t=this.files[e],this.reader.setIndex(t.localHeaderOffset),this.checkSignature(s.LOCAL_FILE_HEADER),t.readLocalPart(this.reader),t.handleUTF8(),t.processAttributes()},readCentralDir:function(){var e;for(this.reader.setIndex(this.centralDirOffset);this.reader.readAndCheckSignature(s.CENTRAL_FILE_HEADER);)(e=new a({zip64:this.zip64},this.loadOptions)).readCentralPart(this.reader),this.files.push(e);if(this.centralDirRecords!==this.files.length&&0!==this.centralDirRecords&&0===this.files.length)throw new Error(\"Corrupted zip or bug: expected \"+this.centralDirRecords+\" records in central dir, got \"+this.files.length)},readEndOfCentral:function(){var e=this.reader.lastIndexOfSignature(s.CENTRAL_DIRECTORY_END);if(e<0)throw!this.isSignature(0,s.LOCAL_FILE_HEADER)?new Error(\"Can't find end of central directory : is this a zip file ? If it is, see https://stuk.github.io/jszip/documentation/howto/read_zip.html\"):new Error(\"Corrupted zip: can't find end of central directory\");this.reader.setIndex(e);var t=e;if(this.checkSignature(s.CENTRAL_DIRECTORY_END),this.readBlockEndOfCentral(),this.diskNumber===i.MAX_VALUE_16BITS||this.diskWithCentralDirStart===i.MAX_VALUE_16BITS||this.centralDirRecordsOnThisDisk===i.MAX_VALUE_16BITS||this.centralDirRecords===i.MAX_VALUE_16BITS||this.centralDirSize===i.MAX_VALUE_32BITS||this.centralDirOffset===i.MAX_VALUE_32BITS){if(this.zip64=!0,(e=this.reader.lastIndexOfSignature(s.ZIP64_CENTRAL_DIRECTORY_LOCATOR))<0)throw new Error(\"Corrupted zip: can't find the ZIP64 end of central directory locator\");if(this.reader.setIndex(e),this.checkSignature(s.ZIP64_CENTRAL_DIRECTORY_LOCATOR),this.readBlockZip64EndOfCentralLocator(),!this.isSignature(this.relativeOffsetEndOfZip64CentralDir,s.ZIP64_CENTRAL_DIRECTORY_END)&&(this.relativeOffsetEndOfZip64CentralDir=this.reader.lastIndexOfSignature(s.ZIP64_CENTRAL_DIRECTORY_END),this.relativeOffsetEndOfZip64CentralDir<0))throw new Error(\"Corrupted zip: can't find the ZIP64 end of central directory\");this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir),this.checkSignature(s.ZIP64_CENTRAL_DIRECTORY_END),this.readBlockZip64EndOfCentral()}var r=this.centralDirOffset+this.centralDirSize;this.zip64&&(r+=20,r+=12+this.zip64EndOfCentralSize);var n=t-r;if(0<n)this.isSignature(t,s.CENTRAL_FILE_HEADER)||(this.reader.zero=n);else if(n<0)throw new Error(\"Corrupted zip: missing \"+Math.abs(n)+\" bytes.\")},prepareReader:function(e){this.reader=n(e)},load:function(e){this.prepareReader(e),this.readEndOfCentral(),this.readCentralDir(),this.readLocalFiles()}},t.exports=h},{\"./reader/readerFor\":22,\"./signature\":23,\"./support\":30,\"./utils\":32,\"./zipEntry\":34}],34:[function(e,t,r){\"use strict\";var n=e(\"./reader/readerFor\"),s=e(\"./utils\"),i=e(\"./compressedObject\"),a=e(\"./crc32\"),o=e(\"./utf8\"),h=e(\"./compressions\"),u=e(\"./support\");function l(e,t){this.options=e,this.loadOptions=t}l.prototype={isEncrypted:function(){return 1==(1&this.bitFlag)},useUTF8:function(){return 2048==(2048&this.bitFlag)},readLocalPart:function(e){var t,r;if(e.skip(22),this.fileNameLength=e.readInt(2),r=e.readInt(2),this.fileName=e.readData(this.fileNameLength),e.skip(r),-1===this.compressedSize||-1===this.uncompressedSize)throw new Error(\"Bug or corrupted zip : didn't get enough information from the central directory (compressedSize === -1 || uncompressedSize === -1)\");if(null===(t=function(e){for(var t in h)if(Object.prototype.hasOwnProperty.call(h,t)&&h[t].magic===e)return h[t];return null}(this.compressionMethod)))throw new Error(\"Corrupted zip : compression \"+s.pretty(this.compressionMethod)+\" unknown (inner file : \"+s.transformTo(\"string\",this.fileName)+\")\");this.decompressed=new i(this.compressedSize,this.uncompressedSize,this.crc32,t,e.readData(this.compressedSize))},readCentralPart:function(e){this.versionMadeBy=e.readInt(2),e.skip(2),this.bitFlag=e.readInt(2),this.compressionMethod=e.readString(2),this.date=e.readDate(),this.crc32=e.readInt(4),this.compressedSize=e.readInt(4),this.uncompressedSize=e.readInt(4);var t=e.readInt(2);if(this.extraFieldsLength=e.readInt(2),this.fileCommentLength=e.readInt(2),this.diskNumberStart=e.readInt(2),this.internalFileAttributes=e.readInt(2),this.externalFileAttributes=e.readInt(4),this.localHeaderOffset=e.readInt(4),this.isEncrypted())throw new Error(\"Encrypted zip are not supported\");e.skip(t),this.readExtraFields(e),this.parseZIP64ExtraField(e),this.fileComment=e.readData(this.fileCommentLength)},processAttributes:function(){this.unixPermissions=null,this.dosPermissions=null;var e=this.versionMadeBy>>8;this.dir=!!(16&this.externalFileAttributes),0==e&&(this.dosPermissions=63&this.externalFileAttributes),3==e&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||\"/\"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var e=n(this.extraFields[1].value);this.uncompressedSize===s.MAX_VALUE_32BITS&&(this.uncompressedSize=e.readInt(8)),this.compressedSize===s.MAX_VALUE_32BITS&&(this.compressedSize=e.readInt(8)),this.localHeaderOffset===s.MAX_VALUE_32BITS&&(this.localHeaderOffset=e.readInt(8)),this.diskNumberStart===s.MAX_VALUE_32BITS&&(this.diskNumberStart=e.readInt(4))}},readExtraFields:function(e){var t,r,n,i=e.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});e.index+4<i;)t=e.readInt(2),r=e.readInt(2),n=e.readData(r),this.extraFields[t]={id:t,length:r,value:n};e.setIndex(i)},handleUTF8:function(){var e=u.uint8array?\"uint8array\":\"array\";if(this.useUTF8())this.fileNameStr=o.utf8decode(this.fileName),this.fileCommentStr=o.utf8decode(this.fileComment);else{var t=this.findExtraFieldUnicodePath();if(null!==t)this.fileNameStr=t;else{var r=s.transformTo(e,this.fileName);this.fileNameStr=this.loadOptions.decodeFileName(r)}var n=this.findExtraFieldUnicodeComment();if(null!==n)this.fileCommentStr=n;else{var i=s.transformTo(e,this.fileComment);this.fileCommentStr=this.loadOptions.decodeFileName(i)}}},findExtraFieldUnicodePath:function(){var e=this.extraFields[28789];if(e){var t=n(e.value);return 1!==t.readInt(1)?null:a(this.fileName)!==t.readInt(4)?null:o.utf8decode(t.readData(e.length-5))}return null},findExtraFieldUnicodeComment:function(){var e=this.extraFields[25461];if(e){var t=n(e.value);return 1!==t.readInt(1)?null:a(this.fileComment)!==t.readInt(4)?null:o.utf8decode(t.readData(e.length-5))}return null}},t.exports=l},{\"./compressedObject\":2,\"./compressions\":3,\"./crc32\":4,\"./reader/readerFor\":22,\"./support\":30,\"./utf8\":31,\"./utils\":32}],35:[function(e,t,r){\"use strict\";function n(e,t,r){this.name=e,this.dir=r.dir,this.date=r.date,this.comment=r.comment,this.unixPermissions=r.unixPermissions,this.dosPermissions=r.dosPermissions,this._data=t,this._dataBinary=r.binary,this.options={compression:r.compression,compressionOptions:r.compressionOptions}}var s=e(\"./stream/StreamHelper\"),i=e(\"./stream/DataWorker\"),a=e(\"./utf8\"),o=e(\"./compressedObject\"),h=e(\"./stream/GenericWorker\");n.prototype={internalStream:function(e){var t=null,r=\"string\";try{if(!e)throw new Error(\"No output type specified.\");var n=\"string\"===(r=e.toLowerCase())||\"text\"===r;\"binarystring\"!==r&&\"text\"!==r||(r=\"string\"),t=this._decompressWorker();var i=!this._dataBinary;i&&!n&&(t=t.pipe(new a.Utf8EncodeWorker)),!i&&n&&(t=t.pipe(new a.Utf8DecodeWorker))}catch(e){(t=new h(\"error\")).error(e)}return new s(t,r,\"\")},async:function(e,t){return this.internalStream(e).accumulate(t)},nodeStream:function(e,t){return this.internalStream(e||\"nodebuffer\").toNodejsStream(t)},_compressWorker:function(e,t){if(this._data instanceof o&&this._data.compression.magic===e.magic)return this._data.getCompressedWorker();var r=this._decompressWorker();return this._dataBinary||(r=r.pipe(new a.Utf8EncodeWorker)),o.createWorkerFrom(r,e,t)},_decompressWorker:function(){return this._data instanceof o?this._data.getContentWorker():this._data instanceof h?this._data:new i(this._data)}};for(var u=[\"asText\",\"asBinary\",\"asNodeBuffer\",\"asUint8Array\",\"asArrayBuffer\"],l=function(){throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\")},f=0;f<u.length;f++)n.prototype[u[f]]=l;t.exports=n},{\"./compressedObject\":2,\"./stream/DataWorker\":27,\"./stream/GenericWorker\":28,\"./stream/StreamHelper\":29,\"./utf8\":31}],36:[function(e,l,t){(function(t){\"use strict\";var r,n,e=t.MutationObserver||t.WebKitMutationObserver;if(e){var i=0,s=new e(u),a=t.document.createTextNode(\"\");s.observe(a,{characterData:!0}),r=function(){a.data=i=++i%2}}else if(t.setImmediate||void 0===t.MessageChannel)r=\"document\"in t&&\"onreadystatechange\"in t.document.createElement(\"script\")?function(){var e=t.document.createElement(\"script\");e.onreadystatechange=function(){u(),e.onreadystatechange=null,e.parentNode.removeChild(e),e=null},t.document.documentElement.appendChild(e)}:function(){setTimeout(u,0)};else{var o=new t.MessageChannel;o.port1.onmessage=u,r=function(){o.port2.postMessage(0)}}var h=[];function u(){var e,t;n=!0;for(var r=h.length;r;){for(t=h,h=[],e=-1;++e<r;)t[e]();r=h.length}n=!1}l.exports=function(e){1!==h.push(e)||n||r()}}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}],37:[function(e,t,r){\"use strict\";var i=e(\"immediate\");function u(){}var l={},s=[\"REJECTED\"],a=[\"FULFILLED\"],n=[\"PENDING\"];function o(e){if(\"function\"!=typeof e)throw new TypeError(\"resolver must be a function\");this.state=n,this.queue=[],this.outcome=void 0,e!==u&&d(this,e)}function h(e,t,r){this.promise=e,\"function\"==typeof t&&(this.onFulfilled=t,this.callFulfilled=this.otherCallFulfilled),\"function\"==typeof r&&(this.onRejected=r,this.callRejected=this.otherCallRejected)}function f(t,r,n){i(function(){var e;try{e=r(n)}catch(e){return l.reject(t,e)}e===t?l.reject(t,new TypeError(\"Cannot resolve promise with itself\")):l.resolve(t,e)})}function c(e){var t=e&&e.then;if(e&&(\"object\"==typeof e||\"function\"==typeof e)&&\"function\"==typeof t)return function(){t.apply(e,arguments)}}function d(t,e){var r=!1;function n(e){r||(r=!0,l.reject(t,e))}function i(e){r||(r=!0,l.resolve(t,e))}var s=p(function(){e(i,n)});\"error\"===s.status&&n(s.value)}function p(e,t){var r={};try{r.value=e(t),r.status=\"success\"}catch(e){r.status=\"error\",r.value=e}return r}(t.exports=o).prototype.finally=function(t){if(\"function\"!=typeof t)return this;var r=this.constructor;return this.then(function(e){return r.resolve(t()).then(function(){return e})},function(e){return r.resolve(t()).then(function(){throw e})})},o.prototype.catch=function(e){return this.then(null,e)},o.prototype.then=function(e,t){if(\"function\"!=typeof e&&this.state===a||\"function\"!=typeof t&&this.state===s)return this;var r=new this.constructor(u);this.state!==n?f(r,this.state===a?e:t,this.outcome):this.queue.push(new h(r,e,t));return r},h.prototype.callFulfilled=function(e){l.resolve(this.promise,e)},h.prototype.otherCallFulfilled=function(e){f(this.promise,this.onFulfilled,e)},h.prototype.callRejected=function(e){l.reject(this.promise,e)},h.prototype.otherCallRejected=function(e){f(this.promise,this.onRejected,e)},l.resolve=function(e,t){var r=p(c,t);if(\"error\"===r.status)return l.reject(e,r.value);var n=r.value;if(n)d(e,n);else{e.state=a,e.outcome=t;for(var i=-1,s=e.queue.length;++i<s;)e.queue[i].callFulfilled(t)}return e},l.reject=function(e,t){e.state=s,e.outcome=t;for(var r=-1,n=e.queue.length;++r<n;)e.queue[r].callRejected(t);return e},o.resolve=function(e){if(e instanceof this)return e;return l.resolve(new this(u),e)},o.reject=function(e){var t=new this(u);return l.reject(t,e)},o.all=function(e){var r=this;if(\"[object Array]\"!==Object.prototype.toString.call(e))return this.reject(new TypeError(\"must be an array\"));var n=e.length,i=!1;if(!n)return this.resolve([]);var s=new Array(n),a=0,t=-1,o=new this(u);for(;++t<n;)h(e[t],t);return o;function h(e,t){r.resolve(e).then(function(e){s[t]=e,++a!==n||i||(i=!0,l.resolve(o,s))},function(e){i||(i=!0,l.reject(o,e))})}},o.race=function(e){var t=this;if(\"[object Array]\"!==Object.prototype.toString.call(e))return this.reject(new TypeError(\"must be an array\"));var r=e.length,n=!1;if(!r)return this.resolve([]);var i=-1,s=new this(u);for(;++i<r;)a=e[i],t.resolve(a).then(function(e){n||(n=!0,l.resolve(s,e))},function(e){n||(n=!0,l.reject(s,e))});var a;return s}},{immediate:36}],38:[function(e,t,r){\"use strict\";var n={};(0,e(\"./lib/utils/common\").assign)(n,e(\"./lib/deflate\"),e(\"./lib/inflate\"),e(\"./lib/zlib/constants\")),t.exports=n},{\"./lib/deflate\":39,\"./lib/inflate\":40,\"./lib/utils/common\":41,\"./lib/zlib/constants\":44}],39:[function(e,t,r){\"use strict\";var a=e(\"./zlib/deflate\"),o=e(\"./utils/common\"),h=e(\"./utils/strings\"),i=e(\"./zlib/messages\"),s=e(\"./zlib/zstream\"),u=Object.prototype.toString,l=0,f=-1,c=0,d=8;function p(e){if(!(this instanceof p))return new p(e);this.options=o.assign({level:f,method:d,chunkSize:16384,windowBits:15,memLevel:8,strategy:c,to:\"\"},e||{});var t=this.options;t.raw&&0<t.windowBits?t.windowBits=-t.windowBits:t.gzip&&0<t.windowBits&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new s,this.strm.avail_out=0;var r=a.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(r!==l)throw new Error(i[r]);if(t.header&&a.deflateSetHeader(this.strm,t.header),t.dictionary){var n;if(n=\"string\"==typeof t.dictionary?h.string2buf(t.dictionary):\"[object ArrayBuffer]\"===u.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,(r=a.deflateSetDictionary(this.strm,n))!==l)throw new Error(i[r]);this._dict_set=!0}}function n(e,t){var r=new p(t);if(r.push(e,!0),r.err)throw r.msg||i[r.err];return r.result}p.prototype.push=function(e,t){var r,n,i=this.strm,s=this.options.chunkSize;if(this.ended)return!1;n=t===~~t?t:!0===t?4:0,\"string\"==typeof e?i.input=h.string2buf(e):\"[object ArrayBuffer]\"===u.call(e)?i.input=new Uint8Array(e):i.input=e,i.next_in=0,i.avail_in=i.input.length;do{if(0===i.avail_out&&(i.output=new o.Buf8(s),i.next_out=0,i.avail_out=s),1!==(r=a.deflate(i,n))&&r!==l)return this.onEnd(r),!(this.ended=!0);0!==i.avail_out&&(0!==i.avail_in||4!==n&&2!==n)||(\"string\"===this.options.to?this.onData(h.buf2binstring(o.shrinkBuf(i.output,i.next_out))):this.onData(o.shrinkBuf(i.output,i.next_out)))}while((0<i.avail_in||0===i.avail_out)&&1!==r);return 4===n?(r=a.deflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===l):2!==n||(this.onEnd(l),!(i.avail_out=0))},p.prototype.onData=function(e){this.chunks.push(e)},p.prototype.onEnd=function(e){e===l&&(\"string\"===this.options.to?this.result=this.chunks.join(\"\"):this.result=o.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},r.Deflate=p,r.deflate=n,r.deflateRaw=function(e,t){return(t=t||{}).raw=!0,n(e,t)},r.gzip=function(e,t){return(t=t||{}).gzip=!0,n(e,t)}},{\"./utils/common\":41,\"./utils/strings\":42,\"./zlib/deflate\":46,\"./zlib/messages\":51,\"./zlib/zstream\":53}],40:[function(e,t,r){\"use strict\";var c=e(\"./zlib/inflate\"),d=e(\"./utils/common\"),p=e(\"./utils/strings\"),m=e(\"./zlib/constants\"),n=e(\"./zlib/messages\"),i=e(\"./zlib/zstream\"),s=e(\"./zlib/gzheader\"),_=Object.prototype.toString;function a(e){if(!(this instanceof a))return new a(e);this.options=d.assign({chunkSize:16384,windowBits:0,to:\"\"},e||{});var t=this.options;t.raw&&0<=t.windowBits&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(0<=t.windowBits&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),15<t.windowBits&&t.windowBits<48&&0==(15&t.windowBits)&&(t.windowBits|=15),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new i,this.strm.avail_out=0;var r=c.inflateInit2(this.strm,t.windowBits);if(r!==m.Z_OK)throw new Error(n[r]);this.header=new s,c.inflateGetHeader(this.strm,this.header)}function o(e,t){var r=new a(t);if(r.push(e,!0),r.err)throw r.msg||n[r.err];return r.result}a.prototype.push=function(e,t){var r,n,i,s,a,o,h=this.strm,u=this.options.chunkSize,l=this.options.dictionary,f=!1;if(this.ended)return!1;n=t===~~t?t:!0===t?m.Z_FINISH:m.Z_NO_FLUSH,\"string\"==typeof e?h.input=p.binstring2buf(e):\"[object ArrayBuffer]\"===_.call(e)?h.input=new Uint8Array(e):h.input=e,h.next_in=0,h.avail_in=h.input.length;do{if(0===h.avail_out&&(h.output=new d.Buf8(u),h.next_out=0,h.avail_out=u),(r=c.inflate(h,m.Z_NO_FLUSH))===m.Z_NEED_DICT&&l&&(o=\"string\"==typeof l?p.string2buf(l):\"[object ArrayBuffer]\"===_.call(l)?new Uint8Array(l):l,r=c.inflateSetDictionary(this.strm,o)),r===m.Z_BUF_ERROR&&!0===f&&(r=m.Z_OK,f=!1),r!==m.Z_STREAM_END&&r!==m.Z_OK)return this.onEnd(r),!(this.ended=!0);h.next_out&&(0!==h.avail_out&&r!==m.Z_STREAM_END&&(0!==h.avail_in||n!==m.Z_FINISH&&n!==m.Z_SYNC_FLUSH)||(\"string\"===this.options.to?(i=p.utf8border(h.output,h.next_out),s=h.next_out-i,a=p.buf2string(h.output,i),h.next_out=s,h.avail_out=u-s,s&&d.arraySet(h.output,h.output,i,s,0),this.onData(a)):this.onData(d.shrinkBuf(h.output,h.next_out)))),0===h.avail_in&&0===h.avail_out&&(f=!0)}while((0<h.avail_in||0===h.avail_out)&&r!==m.Z_STREAM_END);return r===m.Z_STREAM_END&&(n=m.Z_FINISH),n===m.Z_FINISH?(r=c.inflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===m.Z_OK):n!==m.Z_SYNC_FLUSH||(this.onEnd(m.Z_OK),!(h.avail_out=0))},a.prototype.onData=function(e){this.chunks.push(e)},a.prototype.onEnd=function(e){e===m.Z_OK&&(\"string\"===this.options.to?this.result=this.chunks.join(\"\"):this.result=d.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},r.Inflate=a,r.inflate=o,r.inflateRaw=function(e,t){return(t=t||{}).raw=!0,o(e,t)},r.ungzip=o},{\"./utils/common\":41,\"./utils/strings\":42,\"./zlib/constants\":44,\"./zlib/gzheader\":47,\"./zlib/inflate\":49,\"./zlib/messages\":51,\"./zlib/zstream\":53}],41:[function(e,t,r){\"use strict\";var n=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Int32Array;r.assign=function(e){for(var t=Array.prototype.slice.call(arguments,1);t.length;){var r=t.shift();if(r){if(\"object\"!=typeof r)throw new TypeError(r+\"must be non-object\");for(var n in r)r.hasOwnProperty(n)&&(e[n]=r[n])}}return e},r.shrinkBuf=function(e,t){return e.length===t?e:e.subarray?e.subarray(0,t):(e.length=t,e)};var i={arraySet:function(e,t,r,n,i){if(t.subarray&&e.subarray)e.set(t.subarray(r,r+n),i);else for(var s=0;s<n;s++)e[i+s]=t[r+s]},flattenChunks:function(e){var t,r,n,i,s,a;for(t=n=0,r=e.length;t<r;t++)n+=e[t].length;for(a=new Uint8Array(n),t=i=0,r=e.length;t<r;t++)s=e[t],a.set(s,i),i+=s.length;return a}},s={arraySet:function(e,t,r,n,i){for(var s=0;s<n;s++)e[i+s]=t[r+s]},flattenChunks:function(e){return[].concat.apply([],e)}};r.setTyped=function(e){e?(r.Buf8=Uint8Array,r.Buf16=Uint16Array,r.Buf32=Int32Array,r.assign(r,i)):(r.Buf8=Array,r.Buf16=Array,r.Buf32=Array,r.assign(r,s))},r.setTyped(n)},{}],42:[function(e,t,r){\"use strict\";var h=e(\"./common\"),i=!0,s=!0;try{String.fromCharCode.apply(null,[0])}catch(e){i=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(e){s=!1}for(var u=new h.Buf8(256),n=0;n<256;n++)u[n]=252<=n?6:248<=n?5:240<=n?4:224<=n?3:192<=n?2:1;function l(e,t){if(t<65537&&(e.subarray&&s||!e.subarray&&i))return String.fromCharCode.apply(null,h.shrinkBuf(e,t));for(var r=\"\",n=0;n<t;n++)r+=String.fromCharCode(e[n]);return r}u[254]=u[254]=1,r.string2buf=function(e){var t,r,n,i,s,a=e.length,o=0;for(i=0;i<a;i++)55296==(64512&(r=e.charCodeAt(i)))&&i+1<a&&56320==(64512&(n=e.charCodeAt(i+1)))&&(r=65536+(r-55296<<10)+(n-56320),i++),o+=r<128?1:r<2048?2:r<65536?3:4;for(t=new h.Buf8(o),i=s=0;s<o;i++)55296==(64512&(r=e.charCodeAt(i)))&&i+1<a&&56320==(64512&(n=e.charCodeAt(i+1)))&&(r=65536+(r-55296<<10)+(n-56320),i++),r<128?t[s++]=r:(r<2048?t[s++]=192|r>>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t},r.buf2binstring=function(e){return l(e,e.length)},r.binstring2buf=function(e){for(var t=new h.Buf8(e.length),r=0,n=t.length;r<n;r++)t[r]=e.charCodeAt(r);return t},r.buf2string=function(e,t){var r,n,i,s,a=t||e.length,o=new Array(2*a);for(r=n=0;r<a;)if((i=e[r++])<128)o[n++]=i;else if(4<(s=u[i]))o[n++]=65533,r+=s-1;else{for(i&=2===s?31:3===s?15:7;1<s&&r<a;)i=i<<6|63&e[r++],s--;1<s?o[n++]=65533:i<65536?o[n++]=i:(i-=65536,o[n++]=55296|i>>10&1023,o[n++]=56320|1023&i)}return l(o,n)},r.utf8border=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t}},{\"./common\":41}],43:[function(e,t,r){\"use strict\";t.exports=function(e,t,r,n){for(var i=65535&e|0,s=e>>>16&65535|0,a=0;0!==r;){for(r-=a=2e3<r?2e3:r;s=s+(i=i+t[n++]|0)|0,--a;);i%=65521,s%=65521}return i|s<<16|0}},{}],44:[function(e,t,r){\"use strict\";t.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],45:[function(e,t,r){\"use strict\";var o=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a<s;a++)e=e>>>8^i[255&(e^t[a])];return-1^e}},{}],46:[function(e,t,r){\"use strict\";var h,c=e(\"../utils/common\"),u=e(\"./trees\"),d=e(\"./adler32\"),p=e(\"./crc32\"),n=e(\"./messages\"),l=0,f=4,m=0,_=-2,g=-1,b=4,i=2,v=8,y=9,s=286,a=30,o=19,w=2*s+1,k=15,x=3,S=258,z=S+x+1,C=42,E=113,A=1,I=2,O=3,B=4;function R(e,t){return e.msg=n[t],t}function T(e){return(e<<1)-(4<e?9:0)}function D(e){for(var t=e.length;0<=--t;)e[t]=0}function F(e){var t=e.state,r=t.pending;r>e.avail_out&&(r=e.avail_out),0!==r&&(c.arraySet(e.output,t.pending_buf,t.pending_out,r,e.next_out),e.next_out+=r,t.pending_out+=r,e.total_out+=r,e.avail_out-=r,t.pending-=r,0===t.pending&&(t.pending_out=0))}function N(e,t){u._tr_flush_block(e,0<=e.block_start?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,F(e.strm)}function U(e,t){e.pending_buf[e.pending++]=t}function P(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function L(e,t){var r,n,i=e.max_chain_length,s=e.strstart,a=e.prev_length,o=e.nice_match,h=e.strstart>e.w_size-z?e.strstart-(e.w_size-z):0,u=e.window,l=e.w_mask,f=e.prev,c=e.strstart+S,d=u[s+a-1],p=u[s+a];e.prev_length>=e.good_match&&(i>>=2),o>e.lookahead&&(o=e.lookahead);do{if(u[(r=t)+a]===p&&u[r+a-1]===d&&u[r]===u[s]&&u[++r]===u[s+1]){s+=2,r++;do{}while(u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&s<c);if(n=S-(c-s),s=c-S,a<n){if(e.match_start=t,o<=(a=n))break;d=u[s+a-1],p=u[s+a]}}}while((t=f[t&l])>h&&0!=--i);return a<=e.lookahead?a:e.lookahead}function j(e){var t,r,n,i,s,a,o,h,u,l,f=e.w_size;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=f+(f-z)){for(c.arraySet(e.window,e.window,f,f,0),e.match_start-=f,e.strstart-=f,e.block_start-=f,t=r=e.hash_size;n=e.head[--t],e.head[t]=f<=n?n-f:0,--r;);for(t=r=f;n=e.prev[--t],e.prev[t]=f<=n?n-f:0,--r;);i+=f}if(0===e.strm.avail_in)break;if(a=e.strm,o=e.window,h=e.strstart+e.lookahead,u=i,l=void 0,l=a.avail_in,u<l&&(l=u),r=0===l?0:(a.avail_in-=l,c.arraySet(o,a.input,a.next_in,l,h),1===a.state.wrap?a.adler=d(a.adler,o,l,h):2===a.state.wrap&&(a.adler=p(a.adler,o,l,h)),a.next_in+=l,a.total_in+=l,l),e.lookahead+=r,e.lookahead+e.insert>=x)for(s=e.strstart-e.insert,e.ins_h=e.window[s],e.ins_h=(e.ins_h<<e.hash_shift^e.window[s+1])&e.hash_mask;e.insert&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[s+x-1])&e.hash_mask,e.prev[s&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=s,s++,e.insert--,!(e.lookahead+e.insert<x)););}while(e.lookahead<z&&0!==e.strm.avail_in)}function Z(e,t){for(var r,n;;){if(e.lookahead<z){if(j(e),e.lookahead<z&&t===l)return A;if(0===e.lookahead)break}if(r=0,e.lookahead>=x&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+x-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!==r&&e.strstart-r<=e.w_size-z&&(e.match_length=L(e,r)),e.match_length>=x)if(n=u._tr_tally(e,e.strstart-e.match_start,e.match_length-x),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=x){for(e.match_length--;e.strstart++,e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+x-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart,0!=--e.match_length;);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+1])&e.hash_mask;else n=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(n&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=e.strstart<x-1?e.strstart:x-1,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}function W(e,t){for(var r,n,i;;){if(e.lookahead<z){if(j(e),e.lookahead<z&&t===l)return A;if(0===e.lookahead)break}if(r=0,e.lookahead>=x&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+x-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=x-1,0!==r&&e.prev_length<e.max_lazy_match&&e.strstart-r<=e.w_size-z&&(e.match_length=L(e,r),e.match_length<=5&&(1===e.strategy||e.match_length===x&&4096<e.strstart-e.match_start)&&(e.match_length=x-1)),e.prev_length>=x&&e.match_length<=e.prev_length){for(i=e.strstart+e.lookahead-x,n=u._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-x),e.lookahead-=e.prev_length-1,e.prev_length-=2;++e.strstart<=i&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+x-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!=--e.prev_length;);if(e.match_available=0,e.match_length=x-1,e.strstart++,n&&(N(e,!1),0===e.strm.avail_out))return A}else if(e.match_available){if((n=u._tr_tally(e,0,e.window[e.strstart-1]))&&N(e,!1),e.strstart++,e.lookahead--,0===e.strm.avail_out)return A}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(n=u._tr_tally(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<x-1?e.strstart:x-1,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}function M(e,t,r,n,i){this.good_length=e,this.max_lazy=t,this.nice_length=r,this.max_chain=n,this.func=i}function H(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=v,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new c.Buf16(2*w),this.dyn_dtree=new c.Buf16(2*(2*a+1)),this.bl_tree=new c.Buf16(2*(2*o+1)),D(this.dyn_ltree),D(this.dyn_dtree),D(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new c.Buf16(k+1),this.heap=new c.Buf16(2*s+1),D(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new c.Buf16(2*s+1),D(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function G(e){var t;return e&&e.state?(e.total_in=e.total_out=0,e.data_type=i,(t=e.state).pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=t.wrap?C:E,e.adler=2===t.wrap?0:1,t.last_flush=l,u._tr_init(t),m):R(e,_)}function K(e){var t=G(e);return t===m&&function(e){e.window_size=2*e.w_size,D(e.head),e.max_lazy_match=h[e.level].max_lazy,e.good_match=h[e.level].good_length,e.nice_match=h[e.level].nice_length,e.max_chain_length=h[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=x-1,e.match_available=0,e.ins_h=0}(e.state),t}function Y(e,t,r,n,i,s){if(!e)return _;var a=1;if(t===g&&(t=6),n<0?(a=0,n=-n):15<n&&(a=2,n-=16),i<1||y<i||r!==v||n<8||15<n||t<0||9<t||s<0||b<s)return R(e,_);8===n&&(n=9);var o=new H;return(e.state=o).strm=e,o.wrap=a,o.gzhead=null,o.w_bits=n,o.w_size=1<<o.w_bits,o.w_mask=o.w_size-1,o.hash_bits=i+7,o.hash_size=1<<o.hash_bits,o.hash_mask=o.hash_size-1,o.hash_shift=~~((o.hash_bits+x-1)/x),o.window=new c.Buf8(2*o.w_size),o.head=new c.Buf16(o.hash_size),o.prev=new c.Buf16(o.w_size),o.lit_bufsize=1<<i+6,o.pending_buf_size=4*o.lit_bufsize,o.pending_buf=new c.Buf8(o.pending_buf_size),o.d_buf=1*o.lit_bufsize,o.l_buf=3*o.lit_bufsize,o.level=t,o.strategy=s,o.method=r,K(e)}h=[new M(0,0,0,0,function(e,t){var r=65535;for(r>e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(j(e),0===e.lookahead&&t===l)return A;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var n=e.block_start+r;if((0===e.strstart||e.strstart>=n)&&(e.lookahead=e.strstart-n,e.strstart=n,N(e,!1),0===e.strm.avail_out))return A;if(e.strstart-e.block_start>=e.w_size-z&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):(e.strstart>e.block_start&&(N(e,!1),e.strm.avail_out),A)}),new M(4,4,8,4,Z),new M(4,5,16,8,Z),new M(4,6,32,32,Z),new M(4,4,16,16,W),new M(8,16,32,32,W),new M(8,16,128,128,W),new M(8,32,128,256,W),new M(32,128,258,1024,W),new M(32,258,258,4096,W)],r.deflateInit=function(e,t){return Y(e,t,v,15,8,0)},r.deflateInit2=Y,r.deflateReset=K,r.deflateResetKeep=G,r.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?_:(e.state.gzhead=t,m):_},r.deflate=function(e,t){var r,n,i,s;if(!e||!e.state||5<t||t<0)return e?R(e,_):_;if(n=e.state,!e.output||!e.input&&0!==e.avail_in||666===n.status&&t!==f)return R(e,0===e.avail_out?-5:_);if(n.strm=e,r=n.last_flush,n.last_flush=t,n.status===C)if(2===n.wrap)e.adler=0,U(n,31),U(n,139),U(n,8),n.gzhead?(U(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),U(n,255&n.gzhead.time),U(n,n.gzhead.time>>8&255),U(n,n.gzhead.time>>16&255),U(n,n.gzhead.time>>24&255),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(U(n,255&n.gzhead.extra.length),U(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=p(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69):(U(n,0),U(n,0),U(n,0),U(n,0),U(n,0),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,3),n.status=E);else{var a=v+(n.w_bits-8<<4)<<8;a|=(2<=n.strategy||n.level<2?0:n.level<6?1:6===n.level?2:3)<<6,0!==n.strstart&&(a|=32),a+=31-a%31,n.status=E,P(n,a),0!==n.strstart&&(P(n,e.adler>>>16),P(n,65535&e.adler)),e.adler=1}if(69===n.status)if(n.gzhead.extra){for(i=n.pending;n.gzindex<(65535&n.gzhead.extra.length)&&(n.pending!==n.pending_buf_size||(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending!==n.pending_buf_size));)U(n,255&n.gzhead.extra[n.gzindex]),n.gzindex++;n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=73)}else n.status=73;if(73===n.status)if(n.gzhead.name){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindex<n.gzhead.name.length?255&n.gzhead.name.charCodeAt(n.gzindex++):0,U(n,s)}while(0!==s);n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.gzindex=0,n.status=91)}else n.status=91;if(91===n.status)if(n.gzhead.comment){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindex<n.gzhead.comment.length?255&n.gzhead.comment.charCodeAt(n.gzindex++):0,U(n,s)}while(0!==s);n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.status=103)}else n.status=103;if(103===n.status&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&F(e),n.pending+2<=n.pending_buf_size&&(U(n,255&e.adler),U(n,e.adler>>8&255),e.adler=0,n.status=E)):n.status=E),0!==n.pending){if(F(e),0===e.avail_out)return n.last_flush=-1,m}else if(0===e.avail_in&&T(t)<=T(r)&&t!==f)return R(e,-5);if(666===n.status&&0!==e.avail_in)return R(e,-5);if(0!==e.avail_in||0!==n.lookahead||t!==l&&666!==n.status){var o=2===n.strategy?function(e,t){for(var r;;){if(0===e.lookahead&&(j(e),0===e.lookahead)){if(t===l)return A;break}if(e.match_length=0,r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}(n,t):3===n.strategy?function(e,t){for(var r,n,i,s,a=e.window;;){if(e.lookahead<=S){if(j(e),e.lookahead<=S&&t===l)return A;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=x&&0<e.strstart&&(n=a[i=e.strstart-1])===a[++i]&&n===a[++i]&&n===a[++i]){s=e.strstart+S;do{}while(n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&i<s);e.match_length=S-(s-i),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=x?(r=u._tr_tally(e,1,e.match_length-x),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),r&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}(n,t):h[n.level].func(n,t);if(o!==O&&o!==B||(n.status=666),o===A||o===O)return 0===e.avail_out&&(n.last_flush=-1),m;if(o===I&&(1===t?u._tr_align(n):5!==t&&(u._tr_stored_block(n,0,0,!1),3===t&&(D(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),F(e),0===e.avail_out))return n.last_flush=-1,m}return t!==f?m:n.wrap<=0?1:(2===n.wrap?(U(n,255&e.adler),U(n,e.adler>>8&255),U(n,e.adler>>16&255),U(n,e.adler>>24&255),U(n,255&e.total_in),U(n,e.total_in>>8&255),U(n,e.total_in>>16&255),U(n,e.total_in>>24&255)):(P(n,e.adler>>>16),P(n,65535&e.adler)),F(e),0<n.wrap&&(n.wrap=-n.wrap),0!==n.pending?m:1)},r.deflateEnd=function(e){var t;return e&&e.state?(t=e.state.status)!==C&&69!==t&&73!==t&&91!==t&&103!==t&&t!==E&&666!==t?R(e,_):(e.state=null,t===E?R(e,-3):m):_},r.deflateSetDictionary=function(e,t){var r,n,i,s,a,o,h,u,l=t.length;if(!e||!e.state)return _;if(2===(s=(r=e.state).wrap)||1===s&&r.status!==C||r.lookahead)return _;for(1===s&&(e.adler=d(e.adler,t,l,0)),r.wrap=0,l>=r.w_size&&(0===s&&(D(r.head),r.strstart=0,r.block_start=0,r.insert=0),u=new c.Buf8(r.w_size),c.arraySet(u,t,l-r.w_size,r.w_size,0),t=u,l=r.w_size),a=e.avail_in,o=e.next_in,h=e.input,e.avail_in=l,e.next_in=0,e.input=t,j(r);r.lookahead>=x;){for(n=r.strstart,i=r.lookahead-(x-1);r.ins_h=(r.ins_h<<r.hash_shift^r.window[n+x-1])&r.hash_mask,r.prev[n&r.w_mask]=r.head[r.ins_h],r.head[r.ins_h]=n,n++,--i;);r.strstart=n,r.lookahead=x-1,j(r)}return r.strstart+=r.lookahead,r.block_start=r.strstart,r.insert=r.lookahead,r.lookahead=0,r.match_length=r.prev_length=x-1,r.match_available=0,e.next_in=o,e.input=h,e.avail_in=a,r.wrap=s,m},r.deflateInfo=\"pako deflate (from Nodeca project)\"},{\"../utils/common\":41,\"./adler32\":43,\"./crc32\":45,\"./messages\":51,\"./trees\":52}],47:[function(e,t,r){\"use strict\";t.exports=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name=\"\",this.comment=\"\",this.hcrc=0,this.done=!1}},{}],48:[function(e,t,r){\"use strict\";t.exports=function(e,t){var r,n,i,s,a,o,h,u,l,f,c,d,p,m,_,g,b,v,y,w,k,x,S,z,C;r=e.state,n=e.next_in,z=e.input,i=n+(e.avail_in-5),s=e.next_out,C=e.output,a=s-(t-e.avail_out),o=s+(e.avail_out-257),h=r.dmax,u=r.wsize,l=r.whave,f=r.wnext,c=r.window,d=r.hold,p=r.bits,m=r.lencode,_=r.distcode,g=(1<<r.lenbits)-1,b=(1<<r.distbits)-1;e:do{p<15&&(d+=z[n++]<<p,p+=8,d+=z[n++]<<p,p+=8),v=m[d&g];t:for(;;){if(d>>>=y=v>>>24,p-=y,0===(y=v>>>16&255))C[s++]=65535&v;else{if(!(16&y)){if(0==(64&y)){v=m[(65535&v)+(d&(1<<y)-1)];continue t}if(32&y){r.mode=12;break e}e.msg=\"invalid literal/length code\",r.mode=30;break e}w=65535&v,(y&=15)&&(p<y&&(d+=z[n++]<<p,p+=8),w+=d&(1<<y)-1,d>>>=y,p-=y),p<15&&(d+=z[n++]<<p,p+=8,d+=z[n++]<<p,p+=8),v=_[d&b];r:for(;;){if(d>>>=y=v>>>24,p-=y,!(16&(y=v>>>16&255))){if(0==(64&y)){v=_[(65535&v)+(d&(1<<y)-1)];continue r}e.msg=\"invalid distance code\",r.mode=30;break e}if(k=65535&v,p<(y&=15)&&(d+=z[n++]<<p,(p+=8)<y&&(d+=z[n++]<<p,p+=8)),h<(k+=d&(1<<y)-1)){e.msg=\"invalid distance too far back\",r.mode=30;break e}if(d>>>=y,p-=y,(y=s-a)<k){if(l<(y=k-y)&&r.sane){e.msg=\"invalid distance too far back\",r.mode=30;break e}if(S=c,(x=0)===f){if(x+=u-y,y<w){for(w-=y;C[s++]=c[x++],--y;);x=s-k,S=C}}else if(f<y){if(x+=u+f-y,(y-=f)<w){for(w-=y;C[s++]=c[x++],--y;);if(x=0,f<w){for(w-=y=f;C[s++]=c[x++],--y;);x=s-k,S=C}}}else if(x+=f-y,y<w){for(w-=y;C[s++]=c[x++],--y;);x=s-k,S=C}for(;2<w;)C[s++]=S[x++],C[s++]=S[x++],C[s++]=S[x++],w-=3;w&&(C[s++]=S[x++],1<w&&(C[s++]=S[x++]))}else{for(x=s-k;C[s++]=C[x++],C[s++]=C[x++],C[s++]=C[x++],2<(w-=3););w&&(C[s++]=C[x++],1<w&&(C[s++]=C[x++]))}break}}break}}while(n<i&&s<o);n-=w=p>>3,d&=(1<<(p-=w<<3))-1,e.next_in=n,e.next_out=s,e.avail_in=n<i?i-n+5:5-(n-i),e.avail_out=s<o?o-s+257:257-(s-o),r.hold=d,r.bits=p}},{}],49:[function(e,t,r){\"use strict\";var I=e(\"../utils/common\"),O=e(\"./adler32\"),B=e(\"./crc32\"),R=e(\"./inffast\"),T=e(\"./inftrees\"),D=1,F=2,N=0,U=-2,P=1,n=852,i=592;function L(e){return(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function s(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new I.Buf16(320),this.work=new I.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function a(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg=\"\",t.wrap&&(e.adler=1&t.wrap),t.mode=P,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new I.Buf32(n),t.distcode=t.distdyn=new I.Buf32(i),t.sane=1,t.back=-1,N):U}function o(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,a(e)):U}function h(e,t){var r,n;return e&&e.state?(n=e.state,t<0?(r=0,t=-t):(r=1+(t>>4),t<48&&(t&=15)),t&&(t<8||15<t)?U:(null!==n.window&&n.wbits!==t&&(n.window=null),n.wrap=r,n.wbits=t,o(e))):U}function u(e,t){var r,n;return e?(n=new s,(e.state=n).window=null,(r=h(e,t))!==N&&(e.state=null),r):U}var l,f,c=!0;function j(e){if(c){var t;for(l=new I.Buf32(512),f=new I.Buf32(32),t=0;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(T(D,e.lens,0,288,l,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;T(F,e.lens,0,32,f,0,e.work,{bits:5}),c=!1}e.lencode=l,e.lenbits=9,e.distcode=f,e.distbits=5}function Z(e,t,r,n){var i,s=e.state;return null===s.window&&(s.wsize=1<<s.wbits,s.wnext=0,s.whave=0,s.window=new I.Buf8(s.wsize)),n>=s.wsize?(I.arraySet(s.window,t,r-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):(n<(i=s.wsize-s.wnext)&&(i=n),I.arraySet(s.window,t,r-n,i,s.wnext),(n-=i)?(I.arraySet(s.window,t,r-n,n,0),s.wnext=n,s.whave=s.wsize):(s.wnext+=i,s.wnext===s.wsize&&(s.wnext=0),s.whave<s.wsize&&(s.whave+=i))),0}r.inflateReset=o,r.inflateReset2=h,r.inflateResetKeep=a,r.inflateInit=function(e){return u(e,15)},r.inflateInit2=u,r.inflate=function(e,t){var r,n,i,s,a,o,h,u,l,f,c,d,p,m,_,g,b,v,y,w,k,x,S,z,C=0,E=new I.Buf8(4),A=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!e||!e.state||!e.output||!e.input&&0!==e.avail_in)return U;12===(r=e.state).mode&&(r.mode=13),a=e.next_out,i=e.output,h=e.avail_out,s=e.next_in,n=e.input,o=e.avail_in,u=r.hold,l=r.bits,f=o,c=h,x=N;e:for(;;)switch(r.mode){case P:if(0===r.wrap){r.mode=13;break}for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(2&r.wrap&&35615===u){E[r.check=0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0),l=u=0,r.mode=2;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&u)<<8)+(u>>8))%31){e.msg=\"incorrect header check\",r.mode=30;break}if(8!=(15&u)){e.msg=\"unknown compression method\",r.mode=30;break}if(l-=4,k=8+(15&(u>>>=4)),0===r.wbits)r.wbits=k;else if(k>r.wbits){e.msg=\"invalid window size\",r.mode=30;break}r.dmax=1<<k,e.adler=r.check=1,r.mode=512&u?10:12,l=u=0;break;case 2:for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(r.flags=u,8!=(255&r.flags)){e.msg=\"unknown compression method\",r.mode=30;break}if(57344&r.flags){e.msg=\"unknown header flags set\",r.mode=30;break}r.head&&(r.head.text=u>>8&1),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=3;case 3:for(;l<32;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.head&&(r.head.time=u),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,E[2]=u>>>16&255,E[3]=u>>>24&255,r.check=B(r.check,E,4,0)),l=u=0,r.mode=4;case 4:for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.head&&(r.head.xflags=255&u,r.head.os=u>>8),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=5;case 5:if(1024&r.flags){for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.length=u,r.head&&(r.head.extra_len=u),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&(o<(d=r.length)&&(d=o),d&&(r.head&&(k=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),I.arraySet(r.head.extra,n,s,d,k)),512&r.flags&&(r.check=B(r.check,n,d,s)),o-=d,s+=d,r.length-=d),r.length))break e;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===o)break e;for(d=0;k=n[s+d++],r.head&&k&&r.length<65536&&(r.head.name+=String.fromCharCode(k)),k&&d<o;);if(512&r.flags&&(r.check=B(r.check,n,d,s)),o-=d,s+=d,k)break e}else r.head&&(r.head.name=null);r.length=0,r.mode=8;case 8:if(4096&r.flags){if(0===o)break e;for(d=0;k=n[s+d++],r.head&&k&&r.length<65536&&(r.head.comment+=String.fromCharCode(k)),k&&d<o;);if(512&r.flags&&(r.check=B(r.check,n,d,s)),o-=d,s+=d,k)break e}else r.head&&(r.head.comment=null);r.mode=9;case 9:if(512&r.flags){for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(u!==(65535&r.check)){e.msg=\"header crc mismatch\",r.mode=30;break}l=u=0}r.head&&(r.head.hcrc=r.flags>>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=12;break;case 10:for(;l<32;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}e.adler=r.check=L(u),l=u=0,r.mode=11;case 11:if(0===r.havedict)return e.next_out=a,e.avail_out=h,e.next_in=s,e.avail_in=o,r.hold=u,r.bits=l,2;e.adler=r.check=1,r.mode=12;case 12:if(5===t||6===t)break e;case 13:if(r.last){u>>>=7&l,l-=7&l,r.mode=27;break}for(;l<3;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}switch(r.last=1&u,l-=1,3&(u>>>=1)){case 0:r.mode=14;break;case 1:if(j(r),r.mode=20,6!==t)break;u>>>=2,l-=2;break e;case 2:r.mode=17;break;case 3:e.msg=\"invalid block type\",r.mode=30}u>>>=2,l-=2;break;case 14:for(u>>>=7&l,l-=7&l;l<32;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if((65535&u)!=(u>>>16^65535)){e.msg=\"invalid stored block lengths\",r.mode=30;break}if(r.length=65535&u,l=u=0,r.mode=15,6===t)break e;case 15:r.mode=16;case 16:if(d=r.length){if(o<d&&(d=o),h<d&&(d=h),0===d)break e;I.arraySet(i,n,s,d,a),o-=d,s+=d,h-=d,a+=d,r.length-=d;break}r.mode=12;break;case 17:for(;l<14;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(r.nlen=257+(31&u),u>>>=5,l-=5,r.ndist=1+(31&u),u>>>=5,l-=5,r.ncode=4+(15&u),u>>>=4,l-=4,286<r.nlen||30<r.ndist){e.msg=\"too many length or distance symbols\",r.mode=30;break}r.have=0,r.mode=18;case 18:for(;r.have<r.ncode;){for(;l<3;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.lens[A[r.have++]]=7&u,u>>>=3,l-=3}for(;r.have<19;)r.lens[A[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,S={bits:r.lenbits},x=T(0,r.lens,0,19,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg=\"invalid code lengths set\",r.mode=30;break}r.have=0,r.mode=19;case 19:for(;r.have<r.nlen+r.ndist;){for(;g=(C=r.lencode[u&(1<<r.lenbits)-1])>>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(b<16)u>>>=_,l-=_,r.lens[r.have++]=b;else{if(16===b){for(z=_+2;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(u>>>=_,l-=_,0===r.have){e.msg=\"invalid bit length repeat\",r.mode=30;break}k=r.lens[r.have-1],d=3+(3&u),u>>>=2,l-=2}else if(17===b){for(z=_+3;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}l-=_,k=0,d=3+(7&(u>>>=_)),u>>>=3,l-=3}else{for(z=_+7;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}l-=_,k=0,d=11+(127&(u>>>=_)),u>>>=7,l-=7}if(r.have+d>r.nlen+r.ndist){e.msg=\"invalid bit length repeat\",r.mode=30;break}for(;d--;)r.lens[r.have++]=k}}if(30===r.mode)break;if(0===r.lens[256]){e.msg=\"invalid code -- missing end-of-block\",r.mode=30;break}if(r.lenbits=9,S={bits:r.lenbits},x=T(D,r.lens,0,r.nlen,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg=\"invalid literal/lengths set\",r.mode=30;break}if(r.distbits=6,r.distcode=r.distdyn,S={bits:r.distbits},x=T(F,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,S),r.distbits=S.bits,x){e.msg=\"invalid distances set\",r.mode=30;break}if(r.mode=20,6===t)break e;case 20:r.mode=21;case 21:if(6<=o&&258<=h){e.next_out=a,e.avail_out=h,e.next_in=s,e.avail_in=o,r.hold=u,r.bits=l,R(e,c),a=e.next_out,i=e.output,h=e.avail_out,s=e.next_in,n=e.input,o=e.avail_in,u=r.hold,l=r.bits,12===r.mode&&(r.back=-1);break}for(r.back=0;g=(C=r.lencode[u&(1<<r.lenbits)-1])>>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(g&&0==(240&g)){for(v=_,y=g,w=b;g=(C=r.lencode[w+((u&(1<<v+y)-1)>>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}u>>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,r.length=b,0===g){r.mode=26;break}if(32&g){r.back=-1,r.mode=12;break}if(64&g){e.msg=\"invalid literal/length code\",r.mode=30;break}r.extra=15&g,r.mode=22;case 22:if(r.extra){for(z=r.extra;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.length+=u&(1<<r.extra)-1,u>>>=r.extra,l-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;g=(C=r.distcode[u&(1<<r.distbits)-1])>>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(0==(240&g)){for(v=_,y=g,w=b;g=(C=r.distcode[w+((u&(1<<v+y)-1)>>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}u>>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,64&g){e.msg=\"invalid distance code\",r.mode=30;break}r.offset=b,r.extra=15&g,r.mode=24;case 24:if(r.extra){for(z=r.extra;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.offset+=u&(1<<r.extra)-1,u>>>=r.extra,l-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg=\"invalid distance too far back\",r.mode=30;break}r.mode=25;case 25:if(0===h)break e;if(d=c-h,r.offset>d){if((d=r.offset-d)>r.whave&&r.sane){e.msg=\"invalid distance too far back\",r.mode=30;break}p=d>r.wnext?(d-=r.wnext,r.wsize-d):r.wnext-d,d>r.length&&(d=r.length),m=r.window}else m=i,p=a-r.offset,d=r.length;for(h<d&&(d=h),h-=d,r.length-=d;i[a++]=m[p++],--d;);0===r.length&&(r.mode=21);break;case 26:if(0===h)break e;i[a++]=r.length,h--,r.mode=21;break;case 27:if(r.wrap){for(;l<32;){if(0===o)break e;o--,u|=n[s++]<<l,l+=8}if(c-=h,e.total_out+=c,r.total+=c,c&&(e.adler=r.check=r.flags?B(r.check,i,c,a-c):O(r.check,i,c,a-c)),c=h,(r.flags?u:L(u))!==r.check){e.msg=\"incorrect data check\",r.mode=30;break}l=u=0}r.mode=28;case 28:if(r.wrap&&r.flags){for(;l<32;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(u!==(4294967295&r.total)){e.msg=\"incorrect length check\",r.mode=30;break}l=u=0}r.mode=29;case 29:x=1;break e;case 30:x=-3;break e;case 31:return-4;case 32:default:return U}return e.next_out=a,e.avail_out=h,e.next_in=s,e.avail_in=o,r.hold=u,r.bits=l,(r.wsize||c!==e.avail_out&&r.mode<30&&(r.mode<27||4!==t))&&Z(e,e.output,e.next_out,c-e.avail_out)?(r.mode=31,-4):(f-=e.avail_in,c-=e.avail_out,e.total_in+=f,e.total_out+=c,r.total+=c,r.wrap&&c&&(e.adler=r.check=r.flags?B(r.check,i,c,e.next_out-c):O(r.check,i,c,e.next_out-c)),e.data_type=r.bits+(r.last?64:0)+(12===r.mode?128:0)+(20===r.mode||15===r.mode?256:0),(0==f&&0===c||4===t)&&x===N&&(x=-5),x)},r.inflateEnd=function(e){if(!e||!e.state)return U;var t=e.state;return t.window&&(t.window=null),e.state=null,N},r.inflateGetHeader=function(e,t){var r;return e&&e.state?0==(2&(r=e.state).wrap)?U:((r.head=t).done=!1,N):U},r.inflateSetDictionary=function(e,t){var r,n=t.length;return e&&e.state?0!==(r=e.state).wrap&&11!==r.mode?U:11===r.mode&&O(1,t,n,0)!==r.check?-3:Z(e,t,n,n)?(r.mode=31,-4):(r.havedict=1,N):U},r.inflateInfo=\"pako inflate (from Nodeca project)\"},{\"../utils/common\":41,\"./adler32\":43,\"./crc32\":45,\"./inffast\":48,\"./inftrees\":50}],50:[function(e,t,r){\"use strict\";var D=e(\"../utils/common\"),F=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],N=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],U=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],P=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];t.exports=function(e,t,r,n,i,s,a,o){var h,u,l,f,c,d,p,m,_,g=o.bits,b=0,v=0,y=0,w=0,k=0,x=0,S=0,z=0,C=0,E=0,A=null,I=0,O=new D.Buf16(16),B=new D.Buf16(16),R=null,T=0;for(b=0;b<=15;b++)O[b]=0;for(v=0;v<n;v++)O[t[r+v]]++;for(k=g,w=15;1<=w&&0===O[w];w--);if(w<k&&(k=w),0===w)return i[s++]=20971520,i[s++]=20971520,o.bits=1,0;for(y=1;y<w&&0===O[y];y++);for(k<y&&(k=y),b=z=1;b<=15;b++)if(z<<=1,(z-=O[b])<0)return-1;if(0<z&&(0===e||1!==w))return-1;for(B[1]=0,b=1;b<15;b++)B[b+1]=B[b]+O[b];for(v=0;v<n;v++)0!==t[r+v]&&(a[B[t[r+v]]++]=v);if(d=0===e?(A=R=a,19):1===e?(A=F,I-=257,R=N,T-=257,256):(A=U,R=P,-1),b=y,c=s,S=v=E=0,l=-1,f=(C=1<<(x=k))-1,1===e&&852<C||2===e&&592<C)return 1;for(;;){for(p=b-S,_=a[v]<d?(m=0,a[v]):a[v]>d?(m=R[T+a[v]],A[I+a[v]]):(m=96,0),h=1<<b-S,y=u=1<<x;i[c+(E>>S)+(u-=h)]=p<<24|m<<16|_|0,0!==u;);for(h=1<<b-1;E&h;)h>>=1;if(0!==h?(E&=h-1,E+=h):E=0,v++,0==--O[b]){if(b===w)break;b=t[r+a[v]]}if(k<b&&(E&f)!==l){for(0===S&&(S=k),c+=y,z=1<<(x=b-S);x+S<w&&!((z-=O[x+S])<=0);)x++,z<<=1;if(C+=1<<x,1===e&&852<C||2===e&&592<C)return 1;i[l=E&f]=k<<24|x<<16|c-s|0}}return 0!==E&&(i[c+E]=b-S<<24|64<<16|0),o.bits=k,0}},{\"../utils/common\":41}],51:[function(e,t,r){\"use strict\";t.exports={2:\"need dictionary\",1:\"stream end\",0:\"\",\"-1\":\"file error\",\"-2\":\"stream error\",\"-3\":\"data error\",\"-4\":\"insufficient memory\",\"-5\":\"buffer error\",\"-6\":\"incompatible version\"}},{}],52:[function(e,t,r){\"use strict\";var i=e(\"../utils/common\"),o=0,h=1;function n(e){for(var t=e.length;0<=--t;)e[t]=0}var s=0,a=29,u=256,l=u+1+a,f=30,c=19,_=2*l+1,g=15,d=16,p=7,m=256,b=16,v=17,y=18,w=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],k=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],x=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],S=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],z=new Array(2*(l+2));n(z);var C=new Array(2*f);n(C);var E=new Array(512);n(E);var A=new Array(256);n(A);var I=new Array(a);n(I);var O,B,R,T=new Array(f);function D(e,t,r,n,i){this.static_tree=e,this.extra_bits=t,this.extra_base=r,this.elems=n,this.max_length=i,this.has_stree=e&&e.length}function F(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}function N(e){return e<256?E[e]:E[256+(e>>>7)]}function U(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function P(e,t,r){e.bi_valid>d-r?(e.bi_buf|=t<<e.bi_valid&65535,U(e,e.bi_buf),e.bi_buf=t>>d-e.bi_valid,e.bi_valid+=r-d):(e.bi_buf|=t<<e.bi_valid&65535,e.bi_valid+=r)}function L(e,t,r){P(e,r[2*t],r[2*t+1])}function j(e,t){for(var r=0;r|=1&e,e>>>=1,r<<=1,0<--t;);return r>>>1}function Z(e,t,r){var n,i,s=new Array(g+1),a=0;for(n=1;n<=g;n++)s[n]=a=a+r[n-1]<<1;for(i=0;i<=t;i++){var o=e[2*i+1];0!==o&&(e[2*i]=j(s[o]++,o))}}function W(e){var t;for(t=0;t<l;t++)e.dyn_ltree[2*t]=0;for(t=0;t<f;t++)e.dyn_dtree[2*t]=0;for(t=0;t<c;t++)e.bl_tree[2*t]=0;e.dyn_ltree[2*m]=1,e.opt_len=e.static_len=0,e.last_lit=e.matches=0}function M(e){8<e.bi_valid?U(e,e.bi_buf):0<e.bi_valid&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0}function H(e,t,r,n){var i=2*t,s=2*r;return e[i]<e[s]||e[i]===e[s]&&n[t]<=n[r]}function G(e,t,r){for(var n=e.heap[r],i=r<<1;i<=e.heap_len&&(i<e.heap_len&&H(t,e.heap[i+1],e.heap[i],e.depth)&&i++,!H(t,n,e.heap[i],e.depth));)e.heap[r]=e.heap[i],r=i,i<<=1;e.heap[r]=n}function K(e,t,r){var n,i,s,a,o=0;if(0!==e.last_lit)for(;n=e.pending_buf[e.d_buf+2*o]<<8|e.pending_buf[e.d_buf+2*o+1],i=e.pending_buf[e.l_buf+o],o++,0===n?L(e,i,t):(L(e,(s=A[i])+u+1,t),0!==(a=w[s])&&P(e,i-=I[s],a),L(e,s=N(--n),r),0!==(a=k[s])&&P(e,n-=T[s],a)),o<e.last_lit;);L(e,m,t)}function Y(e,t){var r,n,i,s=t.dyn_tree,a=t.stat_desc.static_tree,o=t.stat_desc.has_stree,h=t.stat_desc.elems,u=-1;for(e.heap_len=0,e.heap_max=_,r=0;r<h;r++)0!==s[2*r]?(e.heap[++e.heap_len]=u=r,e.depth[r]=0):s[2*r+1]=0;for(;e.heap_len<2;)s[2*(i=e.heap[++e.heap_len]=u<2?++u:0)]=1,e.depth[i]=0,e.opt_len--,o&&(e.static_len-=a[2*i+1]);for(t.max_code=u,r=e.heap_len>>1;1<=r;r--)G(e,s,r);for(i=h;r=e.heap[1],e.heap[1]=e.heap[e.heap_len--],G(e,s,1),n=e.heap[1],e.heap[--e.heap_max]=r,e.heap[--e.heap_max]=n,s[2*i]=s[2*r]+s[2*n],e.depth[i]=(e.depth[r]>=e.depth[n]?e.depth[r]:e.depth[n])+1,s[2*r+1]=s[2*n+1]=i,e.heap[1]=i++,G(e,s,1),2<=e.heap_len;);e.heap[--e.heap_max]=e.heap[1],function(e,t){var r,n,i,s,a,o,h=t.dyn_tree,u=t.max_code,l=t.stat_desc.static_tree,f=t.stat_desc.has_stree,c=t.stat_desc.extra_bits,d=t.stat_desc.extra_base,p=t.stat_desc.max_length,m=0;for(s=0;s<=g;s++)e.bl_count[s]=0;for(h[2*e.heap[e.heap_max]+1]=0,r=e.heap_max+1;r<_;r++)p<(s=h[2*h[2*(n=e.heap[r])+1]+1]+1)&&(s=p,m++),h[2*n+1]=s,u<n||(e.bl_count[s]++,a=0,d<=n&&(a=c[n-d]),o=h[2*n],e.opt_len+=o*(s+a),f&&(e.static_len+=o*(l[2*n+1]+a)));if(0!==m){do{for(s=p-1;0===e.bl_count[s];)s--;e.bl_count[s]--,e.bl_count[s+1]+=2,e.bl_count[p]--,m-=2}while(0<m);for(s=p;0!==s;s--)for(n=e.bl_count[s];0!==n;)u<(i=e.heap[--r])||(h[2*i+1]!==s&&(e.opt_len+=(s-h[2*i+1])*h[2*i],h[2*i+1]=s),n--)}}(e,t),Z(s,u,e.bl_count)}function X(e,t,r){var n,i,s=-1,a=t[1],o=0,h=7,u=4;for(0===a&&(h=138,u=3),t[2*(r+1)+1]=65535,n=0;n<=r;n++)i=a,a=t[2*(n+1)+1],++o<h&&i===a||(o<u?e.bl_tree[2*i]+=o:0!==i?(i!==s&&e.bl_tree[2*i]++,e.bl_tree[2*b]++):o<=10?e.bl_tree[2*v]++:e.bl_tree[2*y]++,s=i,u=(o=0)===a?(h=138,3):i===a?(h=6,3):(h=7,4))}function V(e,t,r){var n,i,s=-1,a=t[1],o=0,h=7,u=4;for(0===a&&(h=138,u=3),n=0;n<=r;n++)if(i=a,a=t[2*(n+1)+1],!(++o<h&&i===a)){if(o<u)for(;L(e,i,e.bl_tree),0!=--o;);else 0!==i?(i!==s&&(L(e,i,e.bl_tree),o--),L(e,b,e.bl_tree),P(e,o-3,2)):o<=10?(L(e,v,e.bl_tree),P(e,o-3,3)):(L(e,y,e.bl_tree),P(e,o-11,7));s=i,u=(o=0)===a?(h=138,3):i===a?(h=6,3):(h=7,4)}}n(T);var q=!1;function J(e,t,r,n){P(e,(s<<1)+(n?1:0),3),function(e,t,r,n){M(e),n&&(U(e,r),U(e,~r)),i.arraySet(e.pending_buf,e.window,t,r,e.pending),e.pending+=r}(e,t,r,!0)}r._tr_init=function(e){q||(function(){var e,t,r,n,i,s=new Array(g+1);for(n=r=0;n<a-1;n++)for(I[n]=r,e=0;e<1<<w[n];e++)A[r++]=n;for(A[r-1]=n,n=i=0;n<16;n++)for(T[n]=i,e=0;e<1<<k[n];e++)E[i++]=n;for(i>>=7;n<f;n++)for(T[n]=i<<7,e=0;e<1<<k[n]-7;e++)E[256+i++]=n;for(t=0;t<=g;t++)s[t]=0;for(e=0;e<=143;)z[2*e+1]=8,e++,s[8]++;for(;e<=255;)z[2*e+1]=9,e++,s[9]++;for(;e<=279;)z[2*e+1]=7,e++,s[7]++;for(;e<=287;)z[2*e+1]=8,e++,s[8]++;for(Z(z,l+1,s),e=0;e<f;e++)C[2*e+1]=5,C[2*e]=j(e,5);O=new D(z,w,u+1,l,g),B=new D(C,k,0,f,g),R=new D(new Array(0),x,0,c,p)}(),q=!0),e.l_desc=new F(e.dyn_ltree,O),e.d_desc=new F(e.dyn_dtree,B),e.bl_desc=new F(e.bl_tree,R),e.bi_buf=0,e.bi_valid=0,W(e)},r._tr_stored_block=J,r._tr_flush_block=function(e,t,r,n){var i,s,a=0;0<e.level?(2===e.strm.data_type&&(e.strm.data_type=function(e){var t,r=4093624447;for(t=0;t<=31;t++,r>>>=1)if(1&r&&0!==e.dyn_ltree[2*t])return o;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return h;for(t=32;t<u;t++)if(0!==e.dyn_ltree[2*t])return h;return o}(e)),Y(e,e.l_desc),Y(e,e.d_desc),a=function(e){var t;for(X(e,e.dyn_ltree,e.l_desc.max_code),X(e,e.dyn_dtree,e.d_desc.max_code),Y(e,e.bl_desc),t=c-1;3<=t&&0===e.bl_tree[2*S[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t}(e),i=e.opt_len+3+7>>>3,(s=e.static_len+3+7>>>3)<=i&&(i=s)):i=s=r+5,r+4<=i&&-1!==t?J(e,t,r,n):4===e.strategy||s===i?(P(e,2+(n?1:0),3),K(e,z,C)):(P(e,4+(n?1:0),3),function(e,t,r,n){var i;for(P(e,t-257,5),P(e,r-1,5),P(e,n-4,4),i=0;i<n;i++)P(e,e.bl_tree[2*S[i]+1],3);V(e,e.dyn_ltree,t-1),V(e,e.dyn_dtree,r-1)}(e,e.l_desc.max_code+1,e.d_desc.max_code+1,a+1),K(e,e.dyn_ltree,e.dyn_dtree)),W(e),n&&M(e)},r._tr_tally=function(e,t,r){return e.pending_buf[e.d_buf+2*e.last_lit]=t>>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&r,e.last_lit++,0===t?e.dyn_ltree[2*r]++:(e.matches++,t--,e.dyn_ltree[2*(A[r]+u+1)]++,e.dyn_dtree[2*N(t)]++),e.last_lit===e.lit_bufsize-1},r._tr_align=function(e){P(e,2,3),L(e,m,z),function(e){16===e.bi_valid?(U(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):8<=e.bi_valid&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}},{\"../utils/common\":41}],53:[function(e,t,r){\"use strict\";t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\"\",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(e,t,r){(function(e){!function(r,n){\"use strict\";if(!r.setImmediate){var i,s,t,a,o=1,h={},u=!1,l=r.document,e=Object.getPrototypeOf&&Object.getPrototypeOf(r);e=e&&e.setTimeout?e:r,i=\"[object process]\"==={}.toString.call(r.process)?function(e){process.nextTick(function(){c(e)})}:function(){if(r.postMessage&&!r.importScripts){var e=!0,t=r.onmessage;return r.onmessage=function(){e=!1},r.postMessage(\"\",\"*\"),r.onmessage=t,e}}()?(a=\"setImmediate$\"+Math.random()+\"$\",r.addEventListener?r.addEventListener(\"message\",d,!1):r.attachEvent(\"onmessage\",d),function(e){r.postMessage(a+e,\"*\")}):r.MessageChannel?((t=new MessageChannel).port1.onmessage=function(e){c(e.data)},function(e){t.port2.postMessage(e)}):l&&\"onreadystatechange\"in l.createElement(\"script\")?(s=l.documentElement,function(e){var t=l.createElement(\"script\");t.onreadystatechange=function(){c(e),t.onreadystatechange=null,s.removeChild(t),t=null},s.appendChild(t)}):function(e){setTimeout(c,0,e)},e.setImmediate=function(e){\"function\"!=typeof e&&(e=new Function(\"\"+e));for(var t=new Array(arguments.length-1),r=0;r<t.length;r++)t[r]=arguments[r+1];var n={callback:e,args:t};return h[o]=n,i(o),o++},e.clearImmediate=f}function f(e){delete h[e]}function c(e){if(u)setTimeout(c,0,e);else{var t=h[e];if(t){u=!0;try{!function(e){var t=e.callback,r=e.args;switch(r.length){case 0:t();break;case 1:t(r[0]);break;case 2:t(r[0],r[1]);break;case 3:t(r[0],r[1],r[2]);break;default:t.apply(n,r)}}(t)}finally{f(e),u=!1}}}}function d(e){e.source===r&&\"string\"==typeof e.data&&0===e.data.indexOf(a)&&c(+e.data.slice(a.length))}}(\"undefined\"==typeof self?void 0===e?this:e:self)}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}]},{},[10])(10)});","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"core.ruffle.\" + {\"159\":\"d7f25d7aa9d9335bc613\",\"339\":\"b57a46ab31c228f2633f\"}[chunkId] + \".js\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.hmd = (module) => {\n\tmodule = Object.create(module);\n\tif (!module.children) module.children = [];\n\tObject.defineProperty(module, 'exports', {\n\t\tenumerable: true,\n\t\tset: () => {\n\t\t\tthrow new Error('ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: ' + module.id);\n\t\t}\n\t});\n\treturn module;\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"\";","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t179: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkruffle_selfhosted\"] = self[\"webpackChunkruffle_selfhosted\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","/**\n * A representation of a semver 2 compliant version string\n */\nexport class Version {\n /**\n * Construct a Version from specific components.\n *\n * If you wish to parse a string into a Version then please use [[fromSemver]].\n *\n * @param major The major version component.\n * @param minor The minor version component.\n * @param patch The patch version component.\n * @param prIdent A list of pre-release identifiers, if any\n * @param buildIdent A list of build identifiers, if any\n */\n constructor(major, minor, patch, prIdent, buildIdent) {\n this.major = major;\n this.minor = minor;\n this.patch = patch;\n this.prIdent = prIdent;\n this.buildIdent = buildIdent;\n }\n /**\n * Construct a version from a semver 2 compliant string.\n *\n * This function is intended for use with semver 2 compliant strings.\n * Malformed strings may still parse correctly, but this result is not\n * guaranteed.\n *\n * @param versionString A semver 2.0.0 compliant version string\n * @returns A version object\n */\n static fromSemver(versionString) {\n const buildSplit = versionString.split(\"+\"), prSplit = buildSplit[0].split(\"-\"), versionSplit = prSplit[0].split(\".\");\n const major = parseInt(versionSplit[0], 10);\n let minor = 0;\n let patch = 0;\n let prIdent = null;\n let buildIdent = null;\n if (versionSplit[1] !== undefined) {\n minor = parseInt(versionSplit[1], 10);\n }\n if (versionSplit[2] !== undefined) {\n patch = parseInt(versionSplit[2], 10);\n }\n if (prSplit[1] !== undefined) {\n prIdent = prSplit[1].split(\".\");\n }\n if (buildSplit[1] !== undefined) {\n buildIdent = buildSplit[1].split(\".\");\n }\n return new Version(major, minor, patch, prIdent, buildIdent);\n }\n /**\n * Returns true if a given version is compatible with this one.\n *\n * Compatibility is defined as having the same nonzero major version\n * number, or if both major versions are zero, the same nonzero minor\n * version number, or if both minor versions are zero, the same nonzero\n * patch version number.\n *\n * This implements the ^ operator in npm's semver package, with the\n * exception of the prerelease exclusion rule.\n *\n * @param other The other version to test against\n * @returns True if compatible\n */\n isCompatibleWith(other) {\n return ((this.major !== 0 && this.major === other.major) ||\n (this.major === 0 &&\n other.major === 0 &&\n this.minor !== 0 &&\n this.minor === other.minor) ||\n (this.major === 0 &&\n other.major === 0 &&\n this.minor === 0 &&\n other.minor === 0 &&\n this.patch !== 0 &&\n this.patch === other.patch));\n }\n /**\n * Returns true if this version has precedence over (is newer than) another\n * version.\n *\n * Precedence is defined as in the Semver 2 spec. This implements the >\n * operator in npm's semver package, with the exception of the prerelease\n * exclusion rule.\n *\n * @param other The other version to test against\n * @returns True if this version has precedence over the other one\n */\n hasPrecedenceOver(other) {\n if (this.major > other.major) {\n return true;\n }\n else if (this.major < other.major) {\n return false;\n }\n if (this.minor > other.minor) {\n return true;\n }\n else if (this.minor < other.minor) {\n return false;\n }\n if (this.patch > other.patch) {\n return true;\n }\n else if (this.patch < other.patch) {\n return false;\n }\n if (this.prIdent === null && other.prIdent !== null) {\n return true;\n }\n else if (this.prIdent !== null && other.prIdent === null) {\n return false;\n }\n else if (this.prIdent !== null && other.prIdent !== null) {\n const isNumeric = /^[0-9]*$/;\n for (let i = 0; i < this.prIdent.length && i < other.prIdent.length; i += 1) {\n const numericThis = isNumeric.test(other.prIdent[i]);\n const numericOther = isNumeric.test(this.prIdent[i]);\n if (!numericOther && numericThis) {\n return true;\n }\n else if (numericOther && numericThis) {\n const intThis = parseInt(this.prIdent[i], 10);\n const intOther = parseInt(other.prIdent[i], 10);\n if (intThis > intOther) {\n return true;\n }\n else if (intThis < intOther) {\n return false;\n }\n }\n else if (numericOther && !numericThis) {\n return false;\n }\n else if (!numericOther && !numericThis) {\n if (this.prIdent[i] > other.prIdent[i]) {\n return true;\n }\n else if (this.prIdent[i] < other.prIdent[i]) {\n return false;\n }\n }\n }\n if (this.prIdent.length > other.prIdent.length) {\n return true;\n }\n else if (this.prIdent.length < other.prIdent.length) {\n return false;\n }\n }\n // Unlike prerelease, we prefer to have a build ident than to not\n if (this.buildIdent !== null && other.buildIdent === null) {\n return true;\n }\n else if (this.buildIdent === null && other.buildIdent !== null) {\n return false;\n }\n else if (this.buildIdent !== null && other.buildIdent !== null) {\n const isNumeric = /^[0-9]*$/;\n for (let i = 0; i < this.buildIdent.length && i < other.buildIdent.length; i += 1) {\n const numricThis = isNumeric.test(this.buildIdent[i]);\n const numericOther = isNumeric.test(other.buildIdent[i]);\n if (!numricThis && numericOther) {\n return true;\n }\n else if (numricThis && numericOther) {\n const intThis = parseInt(this.buildIdent[i], 10);\n const intOther = parseInt(other.buildIdent[i], 10);\n if (intThis > intOther) {\n return true;\n }\n else if (intThis < intOther) {\n return false;\n }\n }\n else if (numricThis && !numericOther) {\n return false;\n }\n else if (!numricThis && !numericOther) {\n if (this.buildIdent[i] > other.buildIdent[i]) {\n return true;\n }\n else if (this.buildIdent[i] < other.buildIdent[i]) {\n return false;\n }\n }\n }\n return this.buildIdent.length > other.buildIdent.length;\n }\n return false;\n }\n /**\n * Tests if a given version is equivalent to this one.\n *\n * Build and prerelease tags are ignored.\n *\n * @param other The other version to test against\n * @returns True if the given version is equivalent\n */\n isEqual(other) {\n return (this.major === other.major &&\n this.minor === other.minor &&\n this.patch === other.patch);\n }\n /**\n * Tests if a given version is stable or a compatible prerelease for this\n * version.\n *\n * This implements the prerelease exclusion rule of NPM semver: a\n * prerelease version can only pass this check if the major/minor/patch\n * components of both versions are the same. Otherwise, the prerelease\n * version always fails.\n *\n * @param other The other version to test against\n * @returns True if the given version is either stable, or a\n * prerelease in the same series as this one.\n */\n isStableOrCompatiblePrerelease(other) {\n if (other.prIdent === null) {\n return true;\n }\n else {\n return (this.major === other.major &&\n this.minor === other.minor &&\n this.patch === other.patch);\n }\n }\n}\n","import { Version } from \"./version\";\n/**\n * Represents a set of version requirements.\n */\nexport class VersionRange {\n /**\n * Constructs a range of versions as specified by the given requirements.\n *\n * If you wish to construct this object from a string representation,\n * then use [[fromRequirementString]].\n *\n * @param requirements Requirements to set this range by\n */\n constructor(requirements) {\n this.requirements = requirements;\n }\n /**\n * Determine if a given version satisfies this range.\n *\n * @param fver A version object to test against.\n * @returns Whether or not the given version matches this range\n */\n satisfiedBy(fver) {\n for (const requirement of this.requirements) {\n let matches = true;\n for (const { comparator, version } of requirement) {\n matches =\n matches && version.isStableOrCompatiblePrerelease(fver);\n if (comparator === \"\" || comparator === \"=\") {\n matches = matches && version.isEqual(fver);\n }\n else if (comparator === \">\") {\n matches = matches && fver.hasPrecedenceOver(version);\n }\n else if (comparator === \">=\") {\n matches =\n matches &&\n (fver.hasPrecedenceOver(version) ||\n version.isEqual(fver));\n }\n else if (comparator === \"<\") {\n matches = matches && version.hasPrecedenceOver(fver);\n }\n else if (comparator === \"<=\") {\n matches =\n matches &&\n (version.hasPrecedenceOver(fver) ||\n version.isEqual(fver));\n }\n else if (comparator === \"^\") {\n matches = matches && version.isCompatibleWith(fver);\n }\n }\n if (matches) {\n return true;\n }\n }\n return false;\n }\n /**\n * Parse a requirement string into a version range.\n *\n * @param requirement The version requirements, consisting of a\n * series of space-separated strings, each one being a semver version\n * optionally prefixed by a comparator or a separator.\n *\n * Valid comparators are:\n * - `\"\"` or `\"=\"`: Precisely this version\n * - `\">`\": A version newer than this one\n * - `\">`=\": A version newer or equal to this one\n * - `\"<\"`: A version older than this one\n * - `\"<=\"`: A version older or equal to this one\n * - `\"^\"`: A version that is compatible with this one\n *\n * A separator is `\"||`\" which splits the requirement string into\n * left OR right.\n * @returns A version range object.\n */\n static fromRequirementString(requirement) {\n const components = requirement.split(\" \");\n let set = [];\n const requirements = [];\n for (const component of components) {\n if (component === \"||\") {\n if (set.length > 0) {\n requirements.push(set);\n set = [];\n }\n }\n else if (component.length > 0) {\n const match = /[0-9]/.exec(component);\n if (match) {\n const comparator = component.slice(0, match.index).trim();\n const version = Version.fromSemver(component.slice(match.index).trim());\n set.push({ comparator, version });\n }\n }\n }\n if (set.length > 0) {\n requirements.push(set);\n }\n return new VersionRange(requirements);\n }\n}\n","export const bigInt=()=>(async e=>{try{return(await WebAssembly.instantiate(e)).instance.exports.b(BigInt(0))===BigInt(0)}catch(e){return!1}})(new Uint8Array([0,97,115,109,1,0,0,0,1,6,1,96,1,126,1,126,3,2,1,0,7,5,1,1,98,0,0,10,6,1,4,0,32,0,11])),bulkMemory=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,3,1,0,1,10,14,1,12,0,65,0,65,0,65,0,252,10,0,0,11])),exceptions=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,8,1,6,0,6,64,25,11,11])),extendedConst=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,5,3,1,0,1,11,9,1,0,65,1,65,2,106,11,0])),gc=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,10,2,95,1,125,0,96,0,1,107,0,3,2,1,1,10,12,1,10,0,67,0,0,0,0,251,7,0,11])),memory64=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,5,3,1,4,1])),multiValue=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,6,1,96,0,2,127,127,3,2,1,0,10,8,1,6,0,65,0,65,0,11])),mutableGlobals=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,2,8,1,1,97,1,98,3,127,1,6,6,1,127,1,65,0,11,7,5,1,1,97,3,1])),referenceTypes=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,7,1,5,0,208,112,26,11])),relaxedSimd=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,15,1,13,0,65,1,253,15,65,2,253,15,253,128,2,11])),saturatedFloatToInt=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,12,1,10,0,67,0,0,0,0,252,0,26,11])),signExtensions=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,8,1,6,0,65,0,192,26,11])),simd=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,65,0,253,15,253,98,11])),streamingCompilation=()=>(async()=>\"compileStreaming\"in WebAssembly)(),tailCall=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,6,1,4,0,18,0,11])),threads=()=>(async e=>{try{return\"undefined\"!=typeof MessageChannel&&(new MessageChannel).port1.postMessage(new SharedArrayBuffer(1)),WebAssembly.validate(e)}catch(e){return!1}})(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,4,1,3,1,1,10,11,1,9,0,65,0,254,16,2,0,26,11]));\n","/**\n * Polyfills the `Array.prototype.reduce` method.\n *\n * Production steps of ECMA-262, Edition 5, 15.4.4.21\n * Reference: https://es5.github.io/#x15.4.4.21\n * https://tc39.github.io/ecma262/#sec-array.prototype.reduce\n */\nfunction polyfillArrayPrototypeReduce() {\n Object.defineProperty(Array.prototype, \"reduce\", {\n value(...args) {\n if (args.length === 0 &&\n window.Prototype &&\n window.Prototype.Version &&\n window.Prototype.Version < \"1.6.1\") {\n // Off-spec: compatibility with prototype.js\n return this.length > 1 ? this : this[0];\n }\n const callback = args[0];\n if (this === null) {\n throw new TypeError(\"Array.prototype.reduce called on null or undefined\");\n }\n if (typeof callback !== \"function\") {\n throw new TypeError(`${callback} is not a function`);\n }\n const o = Object(this);\n const len = o.length >>> 0;\n let k = 0;\n let value;\n if (args.length >= 2) {\n value = args[1];\n }\n else {\n while (k < len && !(k in o)) {\n k++;\n }\n if (k >= len) {\n throw new TypeError(\"Reduce of empty array with no initial value\");\n }\n value = o[k++];\n }\n while (k < len) {\n if (k in o) {\n value = callback(value, o[k], k, o);\n }\n k++;\n }\n return value;\n },\n });\n}\n/**\n * Polyfills the `Window` function.\n */\nfunction polyfillWindow() {\n if (typeof window.constructor !== \"function\" ||\n !isNativeFunction(window.constructor)) {\n // Don't polyfill `Window` if `window.constructor` has been overridden.\n return;\n }\n // @ts-expect-error: `Function not assignable to { new (): Window; prototype: Window; }`\n window.Window = window.constructor;\n}\n/**\n * Polyfills the `Reflect` object and members.\n *\n * This is a partial implementation, just enough to match our needs.\n */\nfunction tryPolyfillReflect() {\n if (window.Reflect === undefined || window.Reflect === null) {\n // @ts-expect-error: {} indeed doesn't implement Reflect's interface.\n window.Reflect = {};\n }\n if (typeof Reflect.get !== \"function\") {\n Object.defineProperty(Reflect, \"get\", {\n value(target, key) {\n return target[key];\n },\n });\n }\n if (typeof Reflect.set !== \"function\") {\n Object.defineProperty(Reflect, \"set\", {\n value(target, key, value) {\n target[key] = value;\n },\n });\n }\n if (typeof Reflect.has !== \"function\") {\n Object.defineProperty(Reflect, \"has\", {\n value(target, key) {\n // @ts-expect-error: Type 'T' is not assignable to type 'object'.\n return key in target;\n },\n });\n }\n if (typeof Reflect.ownKeys !== \"function\") {\n Object.defineProperty(Reflect, \"ownKeys\", {\n value(target) {\n return [\n ...Object.getOwnPropertyNames(target),\n ...Object.getOwnPropertySymbols(target),\n ];\n },\n });\n }\n}\n/**\n * Determines whether a function is native or not.\n *\n * @param func The function to test.\n * @returns True if the function hasn't been overridden.\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction isNativeFunction(func) {\n const val = typeof Function.prototype.toString === \"function\"\n ? Function.prototype.toString()\n : null;\n if (typeof val === \"string\" && val.indexOf(\"[native code]\") >= 0) {\n return (Function.prototype.toString.call(func).indexOf(\"[native code]\") >= 0);\n }\n return false;\n}\n/**\n * Checks and applies the polyfills to the current window, if needed.\n */\nexport function setPolyfillsOnLoad() {\n if (typeof Array.prototype.reduce !== \"function\" ||\n !isNativeFunction(Array.prototype.reduce)) {\n // Some external libraries override the `Array.prototype.reduce` method in a way\n // that causes Webpack to crash (#1507, #1865), so we need to override it again.\n polyfillArrayPrototypeReduce();\n }\n if (typeof Window !== \"function\" || !isNativeFunction(Window)) {\n // Overriding the native `Window` function causes issues in wasm-bindgen, as a\n // code like `window instanceof Window` will no longer work.\n polyfillWindow();\n }\n // Some pages override the native `Reflect` object, which causes various issues:\n // 1- wasm-bindgen's stdlib may crash (#3173).\n // 2- FlashVars may be ignored (#8537).\n tryPolyfillReflect();\n}\n","// This must be in global scope because `document.currentScript`\n// works only while the script is initially being processed.\nexport let currentScriptURL = null;\nexport let isExtension = false;\ntry {\n if (document.currentScript !== undefined &&\n document.currentScript !== null &&\n \"src\" in document.currentScript &&\n document.currentScript.src !== \"\") {\n let src = document.currentScript.src;\n // CDNs allow omitting the filename. If it's omitted, append a slash to\n // prevent the last component from being dropped.\n if (!src.endsWith(\".js\") && !src.endsWith(\"/\")) {\n src += \"/\";\n }\n currentScriptURL = new URL(\".\", src);\n isExtension = currentScriptURL.protocol.includes(\"extension\");\n }\n}\ncatch (e) {\n console.warn(\"Unable to get currentScript URL\");\n}\n","import { currentScriptURL, isExtension } from \"./current-script\";\n/**\n * Attempt to discover the public path of the current Ruffle source. This can\n * be used to configure Webpack.\n *\n * A global public path can be specified for all sources using the RufflePlayer\n * config:\n *\n * ```js\n * window.RufflePlayer.config.publicPath = \"/dist/\";\n * ```\n *\n * If no such config is specified, then the parent path of where this script is\n * hosted is assumed, which should be the correct default in most cases.\n *\n * @param config The `window.RufflePlayer.config` object.\n * @returns The public path for the given source.\n */\nexport function publicPath(config) {\n var _a;\n // Default to the directory where this script resides.\n let path = (_a = currentScriptURL === null || currentScriptURL === void 0 ? void 0 : currentScriptURL.href) !== null && _a !== void 0 ? _a : \"\";\n if (!isExtension &&\n \"publicPath\" in config &&\n config.publicPath !== null &&\n config.publicPath !== undefined) {\n path = config.publicPath;\n }\n // Webpack expects the paths to end with a slash.\n if (path !== \"\" && !path.endsWith(\"/\")) {\n path += \"/\";\n }\n return path;\n}\n","/**\n * Conditional ruffle loader\n */\nimport { bulkMemory, simd, saturatedFloatToInt, signExtensions, referenceTypes, } from \"wasm-feature-detect\";\nimport { setPolyfillsOnLoad } from \"./js-polyfills\";\nimport { publicPath } from \"./public-path\";\n/**\n * Load ruffle from an automatically-detected location.\n *\n * This function returns a new instance of Ruffle and downloads it every time.\n * You should not use it directly; this module will memoize the resource\n * download.\n *\n * @param config The `window.RufflePlayer.config` object.\n * @param progressCallback The callback that will be run with Ruffle's download progress.\n * @returns A ruffle constructor that may be used to create new Ruffle\n * instances.\n */\nasync function fetchRuffle(config, progressCallback) {\n var _a;\n // Apply some pure JavaScript polyfills to prevent conflicts with external\n // libraries, if needed.\n setPolyfillsOnLoad();\n // NOTE: Keep this list in sync with $RUSTFLAGS in the CI build config!\n const extensionsSupported = (await Promise.all([\n bulkMemory(),\n simd(),\n saturatedFloatToInt(),\n signExtensions(),\n referenceTypes(),\n ])).every(Boolean);\n if (!extensionsSupported) {\n console.log(\"Some WebAssembly extensions are NOT available, falling back to the vanilla WebAssembly module\");\n }\n __webpack_public_path__ = publicPath(config);\n // Note: The argument passed to import() has to be a simple string literal,\n // otherwise some bundler will get confused and won't include the module?\n const { default: init, Ruffle } = await (extensionsSupported\n ? import(\"../dist/ruffle_web-wasm_extensions\")\n : import(\"../dist/ruffle_web\"));\n let response;\n const wasmUrl = extensionsSupported\n ? new URL(\"../dist/ruffle_web-wasm_extensions_bg.wasm\", import.meta.url)\n : new URL(\"../dist/ruffle_web_bg.wasm\", import.meta.url);\n const wasmResponse = await fetch(wasmUrl);\n // The Pale Moon browser currently lacks support for ReadableStream.\n // Unfortunately, currently it also lacks a sufficient WASM runtime.\n // If this becomes the last thing Pale Moon lacks, allow Ruffle to work.\n const readableStreamDefined = typeof ReadableStream === \"function\";\n if (progressCallback && readableStreamDefined) {\n const contentLength = ((_a = wasmResponse === null || wasmResponse === void 0 ? void 0 : wasmResponse.headers) === null || _a === void 0 ? void 0 : _a.get(\"content-length\")) || \"\";\n let bytesLoaded = 0;\n // Use parseInt rather than Number so the empty string is coerced to NaN instead of 0\n const bytesTotal = parseInt(contentLength);\n response = new Response(new ReadableStream({\n async start(controller) {\n var _a;\n const reader = (_a = wasmResponse.body) === null || _a === void 0 ? void 0 : _a.getReader();\n if (!reader) {\n throw \"Response had no body\";\n }\n progressCallback(bytesLoaded, bytesTotal);\n for (;;) {\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n if (value === null || value === void 0 ? void 0 : value.byteLength) {\n bytesLoaded += value === null || value === void 0 ? void 0 : value.byteLength;\n }\n controller.enqueue(value);\n progressCallback(bytesLoaded, bytesTotal);\n }\n controller.close();\n },\n }), wasmResponse);\n }\n else {\n response = wasmResponse;\n }\n await init(response);\n return Ruffle;\n}\nlet lastLoaded = null;\n/**\n * Obtain an instance of `Ruffle`.\n *\n * This function returns a promise which yields `Ruffle` asynchronously.\n *\n * @param config The `window.RufflePlayer.config` object.\n * @param progressCallback The callback that will be run with Ruffle's download progress.\n * @returns A ruffle constructor that may be used to create new Ruffle\n * instances.\n */\nexport function loadRuffle(config, progressCallback) {\n if (lastLoaded === null) {\n lastLoaded = fetchRuffle(config, progressCallback);\n }\n return lastLoaded;\n}\n","/**\n * The `FluentType` class is the base of Fluent's type system.\n *\n * Fluent types wrap JavaScript values and store additional configuration for\n * them, which can then be used in the `toString` method together with a proper\n * `Intl` formatter.\n */\nexport class FluentType {\n /**\n * Create a `FluentType` instance.\n *\n * @param value The JavaScript value to wrap.\n */\n constructor(value) {\n this.value = value;\n }\n /**\n * Unwrap the raw value stored by this `FluentType`.\n */\n valueOf() {\n return this.value;\n }\n}\n/**\n * A `FluentType` representing no correct value.\n */\nexport class FluentNone extends FluentType {\n /**\n * Create an instance of `FluentNone` with an optional fallback value.\n * @param value The fallback value of this `FluentNone`.\n */\n constructor(value = \"???\") {\n super(value);\n }\n /**\n * Format this `FluentNone` to the fallback string.\n */\n toString(scope) {\n return `{${this.value}}`;\n }\n}\n/**\n * A `FluentType` representing a number.\n *\n * A `FluentNumber` instance stores the number value of the number it\n * represents. It may also store an option bag of options which will be passed\n * to `Intl.NumerFormat` when the `FluentNumber` is formatted to a string.\n */\nexport class FluentNumber extends FluentType {\n /**\n * Create an instance of `FluentNumber` with options to the\n * `Intl.NumberFormat` constructor.\n *\n * @param value The number value of this `FluentNumber`.\n * @param opts Options which will be passed to `Intl.NumberFormat`.\n */\n constructor(value, opts = {}) {\n super(value);\n this.opts = opts;\n }\n /**\n * Format this `FluentNumber` to a string.\n */\n toString(scope) {\n try {\n const nf = scope.memoizeIntlObject(Intl.NumberFormat, this.opts);\n return nf.format(this.value);\n }\n catch (err) {\n scope.reportError(err);\n return this.value.toString(10);\n }\n }\n}\n/**\n * A `FluentType` representing a date and time.\n *\n * A `FluentDateTime` instance stores the number value of the date it\n * represents, as a numerical timestamp in milliseconds. It may also store an\n * option bag of options which will be passed to `Intl.DateTimeFormat` when the\n * `FluentDateTime` is formatted to a string.\n */\nexport class FluentDateTime extends FluentType {\n /**\n * Create an instance of `FluentDateTime` with options to the\n * `Intl.DateTimeFormat` constructor.\n *\n * @param value The number value of this `FluentDateTime`, in milliseconds.\n * @param opts Options which will be passed to `Intl.DateTimeFormat`.\n */\n constructor(value, opts = {}) {\n super(value);\n this.opts = opts;\n }\n /**\n * Format this `FluentDateTime` to a string.\n */\n toString(scope) {\n try {\n const dtf = scope.memoizeIntlObject(Intl.DateTimeFormat, this.opts);\n return dtf.format(this.value);\n }\n catch (err) {\n scope.reportError(err);\n return new Date(this.value).toISOString();\n }\n }\n}\n","/* global Intl */\n/**\n * @overview\n *\n * The role of the Fluent resolver is to format a `Pattern` to an instance of\n * `FluentValue`. For performance reasons, primitive strings are considered\n * such instances, too.\n *\n * Translations can contain references to other messages or variables,\n * conditional logic in form of select expressions, traits which describe their\n * grammatical features, and can use Fluent builtins which make use of the\n * `Intl` formatters to format numbers and dates into the bundle's languages.\n * See the documentation of the Fluent syntax for more information.\n *\n * In case of errors the resolver will try to salvage as much of the\n * translation as possible. In rare situations where the resolver didn't know\n * how to recover from an error it will return an instance of `FluentNone`.\n *\n * All expressions resolve to an instance of `FluentValue`. The caller should\n * use the `toString` method to convert the instance to a native value.\n *\n * Functions in this file pass around an instance of the `Scope` class, which\n * stores the data required for successful resolution and error recovery.\n */\nimport { FluentType, FluentNone, FluentNumber, FluentDateTime, } from \"./types.js\";\n/**\n * The maximum number of placeables which can be expanded in a single call to\n * `formatPattern`. The limit protects against the Billion Laughs and Quadratic\n * Blowup attacks. See https://msdn.microsoft.com/en-us/magazine/ee335713.aspx.\n */\nconst MAX_PLACEABLES = 100;\n/** Unicode bidi isolation characters. */\nconst FSI = \"\\u2068\";\nconst PDI = \"\\u2069\";\n/** Helper: match a variant key to the given selector. */\nfunction match(scope, selector, key) {\n if (key === selector) {\n // Both are strings.\n return true;\n }\n // XXX Consider comparing options too, e.g. minimumFractionDigits.\n if (key instanceof FluentNumber &&\n selector instanceof FluentNumber &&\n key.value === selector.value) {\n return true;\n }\n if (selector instanceof FluentNumber && typeof key === \"string\") {\n let category = scope\n .memoizeIntlObject(Intl.PluralRules, selector.opts)\n .select(selector.value);\n if (key === category) {\n return true;\n }\n }\n return false;\n}\n/** Helper: resolve the default variant from a list of variants. */\nfunction getDefault(scope, variants, star) {\n if (variants[star]) {\n return resolvePattern(scope, variants[star].value);\n }\n scope.reportError(new RangeError(\"No default\"));\n return new FluentNone();\n}\n/** Helper: resolve arguments to a call expression. */\nfunction getArguments(scope, args) {\n const positional = [];\n const named = Object.create(null);\n for (const arg of args) {\n if (arg.type === \"narg\") {\n named[arg.name] = resolveExpression(scope, arg.value);\n }\n else {\n positional.push(resolveExpression(scope, arg));\n }\n }\n return { positional, named };\n}\n/** Resolve an expression to a Fluent type. */\nfunction resolveExpression(scope, expr) {\n switch (expr.type) {\n case \"str\":\n return expr.value;\n case \"num\":\n return new FluentNumber(expr.value, {\n minimumFractionDigits: expr.precision,\n });\n case \"var\":\n return resolveVariableReference(scope, expr);\n case \"mesg\":\n return resolveMessageReference(scope, expr);\n case \"term\":\n return resolveTermReference(scope, expr);\n case \"func\":\n return resolveFunctionReference(scope, expr);\n case \"select\":\n return resolveSelectExpression(scope, expr);\n default:\n return new FluentNone();\n }\n}\n/** Resolve a reference to a variable. */\nfunction resolveVariableReference(scope, { name }) {\n let arg;\n if (scope.params) {\n // We're inside a TermReference. It's OK to reference undefined parameters.\n if (Object.prototype.hasOwnProperty.call(scope.params, name)) {\n arg = scope.params[name];\n }\n else {\n return new FluentNone(`$${name}`);\n }\n }\n else if (scope.args &&\n Object.prototype.hasOwnProperty.call(scope.args, name)) {\n // We're in the top-level Pattern or inside a MessageReference. Missing\n // variables references produce ReferenceErrors.\n arg = scope.args[name];\n }\n else {\n scope.reportError(new ReferenceError(`Unknown variable: $${name}`));\n return new FluentNone(`$${name}`);\n }\n // Return early if the argument already is an instance of FluentType.\n if (arg instanceof FluentType) {\n return arg;\n }\n // Convert the argument to a Fluent type.\n switch (typeof arg) {\n case \"string\":\n return arg;\n case \"number\":\n return new FluentNumber(arg);\n case \"object\":\n if (arg instanceof Date) {\n return new FluentDateTime(arg.getTime());\n }\n // eslint-disable-next-line no-fallthrough\n default:\n scope.reportError(new TypeError(`Variable type not supported: $${name}, ${typeof arg}`));\n return new FluentNone(`$${name}`);\n }\n}\n/** Resolve a reference to another message. */\nfunction resolveMessageReference(scope, { name, attr }) {\n const message = scope.bundle._messages.get(name);\n if (!message) {\n scope.reportError(new ReferenceError(`Unknown message: ${name}`));\n return new FluentNone(name);\n }\n if (attr) {\n const attribute = message.attributes[attr];\n if (attribute) {\n return resolvePattern(scope, attribute);\n }\n scope.reportError(new ReferenceError(`Unknown attribute: ${attr}`));\n return new FluentNone(`${name}.${attr}`);\n }\n if (message.value) {\n return resolvePattern(scope, message.value);\n }\n scope.reportError(new ReferenceError(`No value: ${name}`));\n return new FluentNone(name);\n}\n/** Resolve a call to a Term with key-value arguments. */\nfunction resolveTermReference(scope, { name, attr, args }) {\n const id = `-${name}`;\n const term = scope.bundle._terms.get(id);\n if (!term) {\n scope.reportError(new ReferenceError(`Unknown term: ${id}`));\n return new FluentNone(id);\n }\n if (attr) {\n const attribute = term.attributes[attr];\n if (attribute) {\n // Every TermReference has its own variables.\n scope.params = getArguments(scope, args).named;\n const resolved = resolvePattern(scope, attribute);\n scope.params = null;\n return resolved;\n }\n scope.reportError(new ReferenceError(`Unknown attribute: ${attr}`));\n return new FluentNone(`${id}.${attr}`);\n }\n scope.params = getArguments(scope, args).named;\n const resolved = resolvePattern(scope, term.value);\n scope.params = null;\n return resolved;\n}\n/** Resolve a call to a Function with positional and key-value arguments. */\nfunction resolveFunctionReference(scope, { name, args }) {\n // Some functions are built-in. Others may be provided by the runtime via\n // the `FluentBundle` constructor.\n let func = scope.bundle._functions[name];\n if (!func) {\n scope.reportError(new ReferenceError(`Unknown function: ${name}()`));\n return new FluentNone(`${name}()`);\n }\n if (typeof func !== \"function\") {\n scope.reportError(new TypeError(`Function ${name}() is not callable`));\n return new FluentNone(`${name}()`);\n }\n try {\n let resolved = getArguments(scope, args);\n return func(resolved.positional, resolved.named);\n }\n catch (err) {\n scope.reportError(err);\n return new FluentNone(`${name}()`);\n }\n}\n/** Resolve a select expression to the member object. */\nfunction resolveSelectExpression(scope, { selector, variants, star }) {\n let sel = resolveExpression(scope, selector);\n if (sel instanceof FluentNone) {\n return getDefault(scope, variants, star);\n }\n // Match the selector against keys of each variant, in order.\n for (const variant of variants) {\n const key = resolveExpression(scope, variant.key);\n if (match(scope, sel, key)) {\n return resolvePattern(scope, variant.value);\n }\n }\n return getDefault(scope, variants, star);\n}\n/** Resolve a pattern (a complex string with placeables). */\nexport function resolveComplexPattern(scope, ptn) {\n if (scope.dirty.has(ptn)) {\n scope.reportError(new RangeError(\"Cyclic reference\"));\n return new FluentNone();\n }\n // Tag the pattern as dirty for the purpose of the current resolution.\n scope.dirty.add(ptn);\n const result = [];\n // Wrap interpolations with Directional Isolate Formatting characters\n // only when the pattern has more than one element.\n const useIsolating = scope.bundle._useIsolating && ptn.length > 1;\n for (const elem of ptn) {\n if (typeof elem === \"string\") {\n result.push(scope.bundle._transform(elem));\n continue;\n }\n scope.placeables++;\n if (scope.placeables > MAX_PLACEABLES) {\n scope.dirty.delete(ptn);\n // This is a fatal error which causes the resolver to instantly bail out\n // on this pattern. The length check protects against excessive memory\n // usage, and throwing protects against eating up the CPU when long\n // placeables are deeply nested.\n throw new RangeError(`Too many placeables expanded: ${scope.placeables}, ` +\n `max allowed is ${MAX_PLACEABLES}`);\n }\n if (useIsolating) {\n result.push(FSI);\n }\n result.push(resolveExpression(scope, elem).toString(scope));\n if (useIsolating) {\n result.push(PDI);\n }\n }\n scope.dirty.delete(ptn);\n return result.join(\"\");\n}\n/**\n * Resolve a simple or a complex Pattern to a FluentString\n * (which is really the string primitive).\n */\nfunction resolvePattern(scope, value) {\n // Resolve a simple pattern.\n if (typeof value === \"string\") {\n return scope.bundle._transform(value);\n }\n return resolveComplexPattern(scope, value);\n}\n","export class Scope {\n constructor(bundle, errors, args) {\n /**\n * The Set of patterns already encountered during this resolution.\n * Used to detect and prevent cyclic resolutions.\n * @ignore\n */\n this.dirty = new WeakSet();\n /** A dict of parameters passed to a TermReference. */\n this.params = null;\n /**\n * The running count of placeables resolved so far.\n * Used to detect the Billion Laughs and Quadratic Blowup attacks.\n * @ignore\n */\n this.placeables = 0;\n this.bundle = bundle;\n this.errors = errors;\n this.args = args;\n }\n reportError(error) {\n if (!this.errors || !(error instanceof Error)) {\n throw error;\n }\n this.errors.push(error);\n }\n memoizeIntlObject(ctor, opts) {\n let cache = this.bundle._intls.get(ctor);\n if (!cache) {\n cache = {};\n this.bundle._intls.set(ctor, cache);\n }\n let id = JSON.stringify(opts);\n if (!cache[id]) {\n cache[id] = new ctor(this.bundle.locales, opts);\n }\n return cache[id];\n }\n}\n","/**\n * @overview\n *\n * The FTL resolver ships with a number of functions built-in.\n *\n * Each function take two arguments:\n * - args - an array of positional args\n * - opts - an object of key-value args\n *\n * Arguments to functions are guaranteed to already be instances of\n * `FluentValue`. Functions must return `FluentValues` as well.\n */\nimport { FluentNone, FluentNumber, FluentDateTime, } from \"./types.js\";\nfunction values(opts, allowed) {\n const unwrapped = Object.create(null);\n for (const [name, opt] of Object.entries(opts)) {\n if (allowed.includes(name)) {\n unwrapped[name] = opt.valueOf();\n }\n }\n return unwrapped;\n}\nconst NUMBER_ALLOWED = [\n \"unitDisplay\",\n \"currencyDisplay\",\n \"useGrouping\",\n \"minimumIntegerDigits\",\n \"minimumFractionDigits\",\n \"maximumFractionDigits\",\n \"minimumSignificantDigits\",\n \"maximumSignificantDigits\",\n];\n/**\n * The implementation of the `NUMBER()` builtin available to translations.\n *\n * Translations may call the `NUMBER()` builtin in order to specify formatting\n * options of a number. For example:\n *\n * pi = The value of π is {NUMBER($pi, maximumFractionDigits: 2)}.\n *\n * The implementation expects an array of `FluentValues` representing the\n * positional arguments, and an object of named `FluentValues` representing the\n * named parameters.\n *\n * The following options are recognized:\n *\n * unitDisplay\n * currencyDisplay\n * useGrouping\n * minimumIntegerDigits\n * minimumFractionDigits\n * maximumFractionDigits\n * minimumSignificantDigits\n * maximumSignificantDigits\n *\n * Other options are ignored.\n *\n * @param args The positional arguments passed to this `NUMBER()`.\n * @param opts The named argments passed to this `NUMBER()`.\n */\nexport function NUMBER(args, opts) {\n let arg = args[0];\n if (arg instanceof FluentNone) {\n return new FluentNone(`NUMBER(${arg.valueOf()})`);\n }\n if (arg instanceof FluentNumber) {\n return new FluentNumber(arg.valueOf(), {\n ...arg.opts,\n ...values(opts, NUMBER_ALLOWED),\n });\n }\n if (arg instanceof FluentDateTime) {\n return new FluentNumber(arg.valueOf(), {\n ...values(opts, NUMBER_ALLOWED),\n });\n }\n throw new TypeError(\"Invalid argument to NUMBER\");\n}\nconst DATETIME_ALLOWED = [\n \"dateStyle\",\n \"timeStyle\",\n \"fractionalSecondDigits\",\n \"dayPeriod\",\n \"hour12\",\n \"weekday\",\n \"era\",\n \"year\",\n \"month\",\n \"day\",\n \"hour\",\n \"minute\",\n \"second\",\n \"timeZoneName\",\n];\n/**\n * The implementation of the `DATETIME()` builtin available to translations.\n *\n * Translations may call the `DATETIME()` builtin in order to specify\n * formatting options of a number. For example:\n *\n * now = It's {DATETIME($today, month: \"long\")}.\n *\n * The implementation expects an array of `FluentValues` representing the\n * positional arguments, and an object of named `FluentValues` representing the\n * named parameters.\n *\n * The following options are recognized:\n *\n * dateStyle\n * timeStyle\n * fractionalSecondDigits\n * dayPeriod\n * hour12\n * weekday\n * era\n * year\n * month\n * day\n * hour\n * minute\n * second\n * timeZoneName\n *\n * Other options are ignored.\n *\n * @param args The positional arguments passed to this `DATETIME()`.\n * @param opts The named argments passed to this `DATETIME()`.\n */\nexport function DATETIME(args, opts) {\n let arg = args[0];\n if (arg instanceof FluentNone) {\n return new FluentNone(`DATETIME(${arg.valueOf()})`);\n }\n if (arg instanceof FluentDateTime) {\n return new FluentDateTime(arg.valueOf(), {\n ...arg.opts,\n ...values(opts, DATETIME_ALLOWED),\n });\n }\n if (arg instanceof FluentNumber) {\n return new FluentDateTime(arg.valueOf(), {\n ...values(opts, DATETIME_ALLOWED),\n });\n }\n throw new TypeError(\"Invalid argument to DATETIME\");\n}\n","const cache = new Map();\nexport function getMemoizerForLocale(locales) {\n const stringLocale = Array.isArray(locales) ? locales.join(\" \") : locales;\n let memoizer = cache.get(stringLocale);\n if (memoizer === undefined) {\n memoizer = new Map();\n cache.set(stringLocale, memoizer);\n }\n return memoizer;\n}\n","import { resolveComplexPattern } from \"./resolver.js\";\nimport { Scope } from \"./scope.js\";\nimport { FluentNone } from \"./types.js\";\nimport { NUMBER, DATETIME } from \"./builtins.js\";\nimport { getMemoizerForLocale } from \"./memoizer.js\";\n/**\n * Message bundles are single-language stores of translation resources. They are\n * responsible for formatting message values and attributes to strings.\n */\nexport class FluentBundle {\n /**\n * Create an instance of `FluentBundle`.\n *\n * @example\n * ```js\n * let bundle = new FluentBundle([\"en-US\", \"en\"]);\n *\n * let bundle = new FluentBundle(locales, {useIsolating: false});\n *\n * let bundle = new FluentBundle(locales, {\n * useIsolating: true,\n * functions: {\n * NODE_ENV: () => process.env.NODE_ENV\n * }\n * });\n * ```\n *\n * @param locales - Used to instantiate `Intl` formatters used by translations.\n * @param options - Optional configuration for the bundle.\n */\n constructor(locales, { functions, useIsolating = true, transform = (v) => v, } = {}) {\n /** @ignore */\n this._terms = new Map();\n /** @ignore */\n this._messages = new Map();\n this.locales = Array.isArray(locales) ? locales : [locales];\n this._functions = {\n NUMBER,\n DATETIME,\n ...functions,\n };\n this._useIsolating = useIsolating;\n this._transform = transform;\n this._intls = getMemoizerForLocale(locales);\n }\n /**\n * Check if a message is present in the bundle.\n *\n * @param id - The identifier of the message to check.\n */\n hasMessage(id) {\n return this._messages.has(id);\n }\n /**\n * Return a raw unformatted message object from the bundle.\n *\n * Raw messages are `{value, attributes}` shapes containing translation units\n * called `Patterns`. `Patterns` are implementation-specific; they should be\n * treated as black boxes and formatted with `FluentBundle.formatPattern`.\n *\n * @param id - The identifier of the message to check.\n */\n getMessage(id) {\n return this._messages.get(id);\n }\n /**\n * Add a translation resource to the bundle.\n *\n * @example\n * ```js\n * let res = new FluentResource(\"foo = Foo\");\n * bundle.addResource(res);\n * bundle.getMessage(\"foo\");\n * // → {value: .., attributes: {..}}\n * ```\n *\n * @param res\n * @param options\n */\n addResource(res, { allowOverrides = false, } = {}) {\n const errors = [];\n for (let i = 0; i < res.body.length; i++) {\n let entry = res.body[i];\n if (entry.id.startsWith(\"-\")) {\n // Identifiers starting with a dash (-) define terms. Terms are private\n // and cannot be retrieved from FluentBundle.\n if (allowOverrides === false && this._terms.has(entry.id)) {\n errors.push(new Error(`Attempt to override an existing term: \"${entry.id}\"`));\n continue;\n }\n this._terms.set(entry.id, entry);\n }\n else {\n if (allowOverrides === false && this._messages.has(entry.id)) {\n errors.push(new Error(`Attempt to override an existing message: \"${entry.id}\"`));\n continue;\n }\n this._messages.set(entry.id, entry);\n }\n }\n return errors;\n }\n /**\n * Format a `Pattern` to a string.\n *\n * Format a raw `Pattern` into a string. `args` will be used to resolve\n * references to variables passed as arguments to the translation.\n *\n * In case of errors `formatPattern` will try to salvage as much of the\n * translation as possible and will still return a string. For performance\n * reasons, the encountered errors are not returned but instead are appended\n * to the `errors` array passed as the third argument.\n *\n * If `errors` is omitted, the first encountered error will be thrown.\n *\n * @example\n * ```js\n * let errors = [];\n * bundle.addResource(\n * new FluentResource(\"hello = Hello, {$name}!\"));\n *\n * let hello = bundle.getMessage(\"hello\");\n * if (hello.value) {\n * bundle.formatPattern(hello.value, {name: \"Jane\"}, errors);\n * // Returns \"Hello, Jane!\" and `errors` is empty.\n *\n * bundle.formatPattern(hello.value, undefined, errors);\n * // Returns \"Hello, {$name}!\" and `errors` is now:\n * // [<ReferenceError: Unknown variable: name>]\n * }\n * ```\n */\n formatPattern(pattern, args = null, errors = null) {\n // Resolve a simple pattern without creating a scope. No error handling is\n // required; by definition simple patterns don't have placeables.\n if (typeof pattern === \"string\") {\n return this._transform(pattern);\n }\n // Resolve a complex pattern.\n let scope = new Scope(this, errors, args);\n try {\n let value = resolveComplexPattern(scope, pattern);\n return value.toString(scope);\n }\n catch (err) {\n if (scope.errors && err instanceof Error) {\n scope.errors.push(err);\n return new FluentNone().toString(scope);\n }\n throw err;\n }\n }\n}\n","// This regex is used to iterate through the beginnings of messages and terms.\n// With the /m flag, the ^ matches at the beginning of every line.\nconst RE_MESSAGE_START = /^(-?[a-zA-Z][\\w-]*) *= */gm;\n// Both Attributes and Variants are parsed in while loops. These regexes are\n// used to break out of them.\nconst RE_ATTRIBUTE_START = /\\.([a-zA-Z][\\w-]*) *= */y;\nconst RE_VARIANT_START = /\\*?\\[/y;\nconst RE_NUMBER_LITERAL = /(-?[0-9]+(?:\\.([0-9]+))?)/y;\nconst RE_IDENTIFIER = /([a-zA-Z][\\w-]*)/y;\nconst RE_REFERENCE = /([$-])?([a-zA-Z][\\w-]*)(?:\\.([a-zA-Z][\\w-]*))?/y;\nconst RE_FUNCTION_NAME = /^[A-Z][A-Z0-9_-]*$/;\n// A \"run\" is a sequence of text or string literal characters which don't\n// require any special handling. For TextElements such special characters are: {\n// (starts a placeable), and line breaks which require additional logic to check\n// if the next line is indented. For StringLiterals they are: \\ (starts an\n// escape sequence), \" (ends the literal), and line breaks which are not allowed\n// in StringLiterals. Note that string runs may be empty; text runs may not.\nconst RE_TEXT_RUN = /([^{}\\n\\r]+)/y;\nconst RE_STRING_RUN = /([^\\\\\"\\n\\r]*)/y;\n// Escape sequences.\nconst RE_STRING_ESCAPE = /\\\\([\\\\\"])/y;\nconst RE_UNICODE_ESCAPE = /\\\\u([a-fA-F0-9]{4})|\\\\U([a-fA-F0-9]{6})/y;\n// Used for trimming TextElements and indents.\nconst RE_LEADING_NEWLINES = /^\\n+/;\nconst RE_TRAILING_SPACES = / +$/;\n// Used in makeIndent to strip spaces from blank lines and normalize CRLF to LF.\nconst RE_BLANK_LINES = / *\\r?\\n/g;\n// Used in makeIndent to measure the indentation.\nconst RE_INDENT = /( *)$/;\n// Common tokens.\nconst TOKEN_BRACE_OPEN = /{\\s*/y;\nconst TOKEN_BRACE_CLOSE = /\\s*}/y;\nconst TOKEN_BRACKET_OPEN = /\\[\\s*/y;\nconst TOKEN_BRACKET_CLOSE = /\\s*] */y;\nconst TOKEN_PAREN_OPEN = /\\s*\\(\\s*/y;\nconst TOKEN_ARROW = /\\s*->\\s*/y;\nconst TOKEN_COLON = /\\s*:\\s*/y;\n// Note the optional comma. As a deviation from the Fluent EBNF, the parser\n// doesn't enforce commas between call arguments.\nconst TOKEN_COMMA = /\\s*,?\\s*/y;\nconst TOKEN_BLANK = /\\s+/y;\n/**\n * Fluent Resource is a structure storing parsed localization entries.\n */\nexport class FluentResource {\n constructor(source) {\n this.body = [];\n RE_MESSAGE_START.lastIndex = 0;\n let cursor = 0;\n // Iterate over the beginnings of messages and terms to efficiently skip\n // comments and recover from errors.\n while (true) {\n let next = RE_MESSAGE_START.exec(source);\n if (next === null) {\n break;\n }\n cursor = RE_MESSAGE_START.lastIndex;\n try {\n this.body.push(parseMessage(next[1]));\n }\n catch (err) {\n if (err instanceof SyntaxError) {\n // Don't report any Fluent syntax errors. Skip directly to the\n // beginning of the next message or term.\n continue;\n }\n throw err;\n }\n }\n // The parser implementation is inlined below for performance reasons,\n // as well as for convenience of accessing `source` and `cursor`.\n // The parser focuses on minimizing the number of false negatives at the\n // expense of increasing the risk of false positives. In other words, it\n // aims at parsing valid Fluent messages with a success rate of 100%, but it\n // may also parse a few invalid messages which the reference parser would\n // reject. The parser doesn't perform any validation and may produce entries\n // which wouldn't make sense in the real world. For best results users are\n // advised to validate translations with the fluent-syntax parser\n // pre-runtime.\n // The parser makes an extensive use of sticky regexes which can be anchored\n // to any offset of the source string without slicing it. Errors are thrown\n // to bail out of parsing of ill-formed messages.\n function test(re) {\n re.lastIndex = cursor;\n return re.test(source);\n }\n // Advance the cursor by the char if it matches. May be used as a predicate\n // (was the match found?) or, if errorClass is passed, as an assertion.\n function consumeChar(char, errorClass) {\n if (source[cursor] === char) {\n cursor++;\n return true;\n }\n if (errorClass) {\n throw new errorClass(`Expected ${char}`);\n }\n return false;\n }\n // Advance the cursor by the token if it matches. May be used as a predicate\n // (was the match found?) or, if errorClass is passed, as an assertion.\n function consumeToken(re, errorClass) {\n if (test(re)) {\n cursor = re.lastIndex;\n return true;\n }\n if (errorClass) {\n throw new errorClass(`Expected ${re.toString()}`);\n }\n return false;\n }\n // Execute a regex, advance the cursor, and return all capture groups.\n function match(re) {\n re.lastIndex = cursor;\n let result = re.exec(source);\n if (result === null) {\n throw new SyntaxError(`Expected ${re.toString()}`);\n }\n cursor = re.lastIndex;\n return result;\n }\n // Execute a regex, advance the cursor, and return the capture group.\n function match1(re) {\n return match(re)[1];\n }\n function parseMessage(id) {\n let value = parsePattern();\n let attributes = parseAttributes();\n if (value === null && Object.keys(attributes).length === 0) {\n throw new SyntaxError(\"Expected message value or attributes\");\n }\n return { id, value, attributes };\n }\n function parseAttributes() {\n let attrs = Object.create(null);\n while (test(RE_ATTRIBUTE_START)) {\n let name = match1(RE_ATTRIBUTE_START);\n let value = parsePattern();\n if (value === null) {\n throw new SyntaxError(\"Expected attribute value\");\n }\n attrs[name] = value;\n }\n return attrs;\n }\n function parsePattern() {\n let first;\n // First try to parse any simple text on the same line as the id.\n if (test(RE_TEXT_RUN)) {\n first = match1(RE_TEXT_RUN);\n }\n // If there's a placeable on the first line, parse a complex pattern.\n if (source[cursor] === \"{\" || source[cursor] === \"}\") {\n // Re-use the text parsed above, if possible.\n return parsePatternElements(first ? [first] : [], Infinity);\n }\n // RE_TEXT_VALUE stops at newlines. Only continue parsing the pattern if\n // what comes after the newline is indented.\n let indent = parseIndent();\n if (indent) {\n if (first) {\n // If there's text on the first line, the blank block is part of the\n // translation content in its entirety.\n return parsePatternElements([first, indent], indent.length);\n }\n // Otherwise, we're dealing with a block pattern, i.e. a pattern which\n // starts on a new line. Discrad the leading newlines but keep the\n // inline indent; it will be used by the dedentation logic.\n indent.value = trim(indent.value, RE_LEADING_NEWLINES);\n return parsePatternElements([indent], indent.length);\n }\n if (first) {\n // It was just a simple inline text after all.\n return trim(first, RE_TRAILING_SPACES);\n }\n return null;\n }\n // Parse a complex pattern as an array of elements.\n function parsePatternElements(elements = [], commonIndent) {\n while (true) {\n if (test(RE_TEXT_RUN)) {\n elements.push(match1(RE_TEXT_RUN));\n continue;\n }\n if (source[cursor] === \"{\") {\n elements.push(parsePlaceable());\n continue;\n }\n if (source[cursor] === \"}\") {\n throw new SyntaxError(\"Unbalanced closing brace\");\n }\n let indent = parseIndent();\n if (indent) {\n elements.push(indent);\n commonIndent = Math.min(commonIndent, indent.length);\n continue;\n }\n break;\n }\n let lastIndex = elements.length - 1;\n let lastElement = elements[lastIndex];\n // Trim the trailing spaces in the last element if it's a TextElement.\n if (typeof lastElement === \"string\") {\n elements[lastIndex] = trim(lastElement, RE_TRAILING_SPACES);\n }\n let baked = [];\n for (let element of elements) {\n if (element instanceof Indent) {\n // Dedent indented lines by the maximum common indent.\n element = element.value.slice(0, element.value.length - commonIndent);\n }\n if (element) {\n baked.push(element);\n }\n }\n return baked;\n }\n function parsePlaceable() {\n consumeToken(TOKEN_BRACE_OPEN, SyntaxError);\n let selector = parseInlineExpression();\n if (consumeToken(TOKEN_BRACE_CLOSE)) {\n return selector;\n }\n if (consumeToken(TOKEN_ARROW)) {\n let variants = parseVariants();\n consumeToken(TOKEN_BRACE_CLOSE, SyntaxError);\n return {\n type: \"select\",\n selector,\n ...variants,\n };\n }\n throw new SyntaxError(\"Unclosed placeable\");\n }\n function parseInlineExpression() {\n if (source[cursor] === \"{\") {\n // It's a nested placeable.\n return parsePlaceable();\n }\n if (test(RE_REFERENCE)) {\n let [, sigil, name, attr = null] = match(RE_REFERENCE);\n if (sigil === \"$\") {\n return { type: \"var\", name };\n }\n if (consumeToken(TOKEN_PAREN_OPEN)) {\n let args = parseArguments();\n if (sigil === \"-\") {\n // A parameterized term: -term(...).\n return { type: \"term\", name, attr, args };\n }\n if (RE_FUNCTION_NAME.test(name)) {\n return { type: \"func\", name, args };\n }\n throw new SyntaxError(\"Function names must be all upper-case\");\n }\n if (sigil === \"-\") {\n // A non-parameterized term: -term.\n return {\n type: \"term\",\n name,\n attr,\n args: [],\n };\n }\n return { type: \"mesg\", name, attr };\n }\n return parseLiteral();\n }\n function parseArguments() {\n let args = [];\n while (true) {\n switch (source[cursor]) {\n case \")\": // End of the argument list.\n cursor++;\n return args;\n case undefined: // EOF\n throw new SyntaxError(\"Unclosed argument list\");\n }\n args.push(parseArgument());\n // Commas between arguments are treated as whitespace.\n consumeToken(TOKEN_COMMA);\n }\n }\n function parseArgument() {\n let expr = parseInlineExpression();\n if (expr.type !== \"mesg\") {\n return expr;\n }\n if (consumeToken(TOKEN_COLON)) {\n // The reference is the beginning of a named argument.\n return {\n type: \"narg\",\n name: expr.name,\n value: parseLiteral(),\n };\n }\n // It's a regular message reference.\n return expr;\n }\n function parseVariants() {\n let variants = [];\n let count = 0;\n let star;\n while (test(RE_VARIANT_START)) {\n if (consumeChar(\"*\")) {\n star = count;\n }\n let key = parseVariantKey();\n let value = parsePattern();\n if (value === null) {\n throw new SyntaxError(\"Expected variant value\");\n }\n variants[count++] = { key, value };\n }\n if (count === 0) {\n return null;\n }\n if (star === undefined) {\n throw new SyntaxError(\"Expected default variant\");\n }\n return { variants, star };\n }\n function parseVariantKey() {\n consumeToken(TOKEN_BRACKET_OPEN, SyntaxError);\n let key;\n if (test(RE_NUMBER_LITERAL)) {\n key = parseNumberLiteral();\n }\n else {\n key = {\n type: \"str\",\n value: match1(RE_IDENTIFIER),\n };\n }\n consumeToken(TOKEN_BRACKET_CLOSE, SyntaxError);\n return key;\n }\n function parseLiteral() {\n if (test(RE_NUMBER_LITERAL)) {\n return parseNumberLiteral();\n }\n if (source[cursor] === '\"') {\n return parseStringLiteral();\n }\n throw new SyntaxError(\"Invalid expression\");\n }\n function parseNumberLiteral() {\n let [, value, fraction = \"\"] = match(RE_NUMBER_LITERAL);\n let precision = fraction.length;\n return {\n type: \"num\",\n value: parseFloat(value),\n precision,\n };\n }\n function parseStringLiteral() {\n consumeChar('\"', SyntaxError);\n let value = \"\";\n while (true) {\n value += match1(RE_STRING_RUN);\n if (source[cursor] === \"\\\\\") {\n value += parseEscapeSequence();\n continue;\n }\n if (consumeChar('\"')) {\n return { type: \"str\", value };\n }\n // We've reached an EOL of EOF.\n throw new SyntaxError(\"Unclosed string literal\");\n }\n }\n // Unescape known escape sequences.\n function parseEscapeSequence() {\n if (test(RE_STRING_ESCAPE)) {\n return match1(RE_STRING_ESCAPE);\n }\n if (test(RE_UNICODE_ESCAPE)) {\n let [, codepoint4, codepoint6] = match(RE_UNICODE_ESCAPE);\n let codepoint = parseInt(codepoint4 || codepoint6, 16);\n return codepoint <= 0xd7ff || 0xe000 <= codepoint\n ? // It's a Unicode scalar value.\n String.fromCodePoint(codepoint)\n : // Lonely surrogates can cause trouble when the parsing result is\n // saved using UTF-8. Use U+FFFD REPLACEMENT CHARACTER instead.\n \"<22>\";\n }\n throw new SyntaxError(\"Unknown escape sequence\");\n }\n // Parse blank space. Return it if it looks like indent before a pattern\n // line. Skip it othwerwise.\n function parseIndent() {\n let start = cursor;\n consumeToken(TOKEN_BLANK);\n // Check the first non-blank character after the indent.\n switch (source[cursor]) {\n case \".\":\n case \"[\":\n case \"*\":\n case \"}\":\n case undefined: // EOF\n // A special character. End the Pattern.\n return false;\n case \"{\":\n // Placeables don't require indentation (in EBNF: block-placeable).\n // Continue the Pattern.\n return makeIndent(source.slice(start, cursor));\n }\n // If the first character on the line is not one of the special characters\n // listed above, it's a regular text character. Check if there's at least\n // one space of indent before it.\n if (source[cursor - 1] === \" \") {\n // It's an indented text character (in EBNF: indented-char). Continue\n // the Pattern.\n return makeIndent(source.slice(start, cursor));\n }\n // A not-indented text character is likely the identifier of the next\n // message. End the Pattern.\n return false;\n }\n // Trim blanks in text according to the given regex.\n function trim(text, re) {\n return text.replace(re, \"\");\n }\n // Normalize a blank block and extract the indent details.\n function makeIndent(blank) {\n let value = blank.replace(RE_BLANK_LINES, \"\\n\");\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n let length = RE_INDENT.exec(blank)[1].length;\n return new Indent(value, length);\n }\n }\n}\nclass Indent {\n constructor(value, length) {\n this.value = value;\n this.length = length;\n }\n}\n","/* eslint no-magic-numbers: 0 */\nconst languageCodeRe = \"([a-z]{2,3}|\\\\*)\";\nconst scriptCodeRe = \"(?:-([a-z]{4}|\\\\*))\";\nconst regionCodeRe = \"(?:-([a-z]{2}|\\\\*))\";\nconst variantCodeRe = \"(?:-(([0-9][a-z0-9]{3}|[a-z0-9]{5,8})|\\\\*))\";\n/**\n * Regular expression splitting locale id into four pieces:\n *\n * Example: `en-Latn-US-macos`\n *\n * language: en\n * script: Latn\n * region: US\n * variant: macos\n *\n * It can also accept a range `*` character on any position.\n */\nconst localeRe = new RegExp(`^${languageCodeRe}${scriptCodeRe}?${regionCodeRe}?${variantCodeRe}?$`, \"i\");\nexport class Locale {\n /**\n * Parses a locale id using the localeRe into an array with four elements.\n *\n * If the second argument `range` is set to true, it places range `*` char\n * in place of any missing piece.\n *\n * It also allows skipping the script section of the id, so `en-US` is\n * properly parsed as `en-*-US-*`.\n */\n constructor(locale) {\n const result = localeRe.exec(locale.replace(/_/g, \"-\"));\n if (!result) {\n this.isWellFormed = false;\n return;\n }\n let [, language, script, region, variant] = result;\n if (language) {\n this.language = language.toLowerCase();\n }\n if (script) {\n this.script = script[0].toUpperCase() + script.slice(1);\n }\n if (region) {\n this.region = region.toUpperCase();\n }\n this.variant = variant;\n this.isWellFormed = true;\n }\n isEqual(other) {\n return (this.language === other.language &&\n this.script === other.script &&\n this.region === other.region &&\n this.variant === other.variant);\n }\n matches(other, thisRange = false, otherRange = false) {\n return ((this.language === other.language ||\n (thisRange && this.language === undefined) ||\n (otherRange && other.language === undefined)) &&\n (this.script === other.script ||\n (thisRange && this.script === undefined) ||\n (otherRange && other.script === undefined)) &&\n (this.region === other.region ||\n (thisRange && this.region === undefined) ||\n (otherRange && other.region === undefined)) &&\n (this.variant === other.variant ||\n (thisRange && this.variant === undefined) ||\n (otherRange && other.variant === undefined)));\n }\n toString() {\n return [this.language, this.script, this.region, this.variant]\n .filter(part => part !== undefined)\n .join(\"-\");\n }\n clearVariants() {\n this.variant = undefined;\n }\n clearRegion() {\n this.region = undefined;\n }\n addLikelySubtags() {\n const newLocale = getLikelySubtagsMin(this.toString().toLowerCase());\n if (newLocale) {\n this.language = newLocale.language;\n this.script = newLocale.script;\n this.region = newLocale.region;\n this.variant = newLocale.variant;\n return true;\n }\n return false;\n }\n}\n/**\n * Below is a manually a list of likely subtags corresponding to Unicode\n * CLDR likelySubtags list.\n * This list is curated by the maintainers of Project Fluent and is\n * intended to be used in place of the full likelySubtags list in use cases\n * where full list cannot be (for example, due to the size).\n *\n * This version of the list is based on CLDR 30.0.3.\n */\nconst likelySubtagsMin = {\n ar: \"ar-arab-eg\",\n \"az-arab\": \"az-arab-ir\",\n \"az-ir\": \"az-arab-ir\",\n be: \"be-cyrl-by\",\n da: \"da-latn-dk\",\n el: \"el-grek-gr\",\n en: \"en-latn-us\",\n fa: \"fa-arab-ir\",\n ja: \"ja-jpan-jp\",\n ko: \"ko-kore-kr\",\n pt: \"pt-latn-br\",\n sr: \"sr-cyrl-rs\",\n \"sr-ru\": \"sr-latn-ru\",\n sv: \"sv-latn-se\",\n ta: \"ta-taml-in\",\n uk: \"uk-cyrl-ua\",\n zh: \"zh-hans-cn\",\n \"zh-hant\": \"zh-hant-tw\",\n \"zh-hk\": \"zh-hant-hk\",\n \"zh-mo\": \"zh-hant-mo\",\n \"zh-tw\": \"zh-hant-tw\",\n \"zh-gb\": \"zh-hant-gb\",\n \"zh-us\": \"zh-hant-us\",\n};\nconst regionMatchingLangs = [\n \"az\",\n \"bg\",\n \"cs\",\n \"de\",\n \"es\",\n \"fi\",\n \"fr\",\n \"hu\",\n \"it\",\n \"lt\",\n \"lv\",\n \"nl\",\n \"pl\",\n \"ro\",\n \"ru\",\n];\nfunction getLikelySubtagsMin(loc) {\n if (Object.prototype.hasOwnProperty.call(likelySubtagsMin, loc)) {\n return new Locale(likelySubtagsMin[loc]);\n }\n const locale = new Locale(loc);\n if (locale.language && regionMatchingLangs.includes(locale.language)) {\n locale.region = locale.language.toUpperCase();\n return locale;\n }\n return null;\n}\n","import { filterMatches } from \"./matches.js\";\n/**\n * Negotiates the languages between the list of requested locales against\n * a list of available locales.\n *\n * It accepts three arguments:\n *\n * requestedLocales:\n * an Array of strings with BCP47 locale IDs sorted\n * according to user preferences.\n *\n * availableLocales:\n * an Array of strings with BCP47 locale IDs of locale for which\n * resources are available. Unsorted.\n *\n * options:\n * An object with the following, optional keys:\n *\n * strategy: 'filtering' (default) | 'matching' | 'lookup'\n *\n * defaultLocale:\n * a string with BCP47 locale ID to be used\n * as a last resort locale.\n *\n *\n * It returns an Array of strings with BCP47 locale IDs sorted according to the\n * user preferences.\n *\n * The exact list will be selected differently depending on the strategy:\n *\n * 'filtering': (default)\n * In the filtering strategy, the algorithm will attempt to match\n * as many keys in the available locales in order of the requested locales.\n *\n * 'matching':\n * In the matching strategy, the algorithm will attempt to find the\n * best possible match for each element of the requestedLocales list.\n *\n * 'lookup':\n * In the lookup strategy, the algorithm will attempt to find a single\n * best available locale based on the requested locales list.\n *\n * This strategy requires defaultLocale option to be set.\n */\nexport function negotiateLanguages(requestedLocales, availableLocales, { strategy = \"filtering\", defaultLocale } = {}) {\n const supportedLocales = filterMatches(Array.from(requestedLocales !== null && requestedLocales !== void 0 ? requestedLocales : []).map(String), Array.from(availableLocales !== null && availableLocales !== void 0 ? availableLocales : []).map(String), strategy);\n if (strategy === \"lookup\") {\n if (defaultLocale === undefined) {\n throw new Error(\"defaultLocale cannot be undefined for strategy `lookup`\");\n }\n if (supportedLocales.length === 0) {\n supportedLocales.push(defaultLocale);\n }\n }\n else if (defaultLocale && !supportedLocales.includes(defaultLocale)) {\n supportedLocales.push(defaultLocale);\n }\n return supportedLocales;\n}\n","/* eslint no-magic-numbers: 0 */\nimport { Locale } from \"./locale.js\";\n/**\n * Negotiates the languages between the list of requested locales against\n * a list of available locales.\n *\n * The algorithm is based on the BCP4647 3.3.2 Extended Filtering algorithm,\n * with several modifications:\n *\n * 1) available locales are treated as ranges\n *\n * This change allows us to match a more specific request against\n * more generic available locale.\n *\n * For example, if the available locale list provides locale `en`,\n * and the requested locale is `en-US`, we treat the available locale as\n * a locale that matches all possible english requests.\n *\n * This means that we expect available locale ID to be as precize as\n * the matches they want to cover.\n *\n * For example, if there is only `sr` available, it's ok to list\n * it in available locales. But once the available locales has both,\n * Cyrl and Latn variants, the locale IDs should be `sr-Cyrl` and `sr-Latn`\n * to avoid any `sr-*` request to match against whole `sr` range.\n *\n * What it does ([requested] * [available] = [supported]):\n *\n * ['en-US'] * ['en'] = ['en']\n *\n * 2) likely subtags from LDML 4.3 Likely Subtags has been added\n *\n * The most obvious likely subtag that can be computed is a duplication\n * of the language field onto region field (`fr` => `fr-FR`).\n *\n * On top of that, likely subtags may use a list of mappings, that\n * allow the algorithm to handle non-obvious matches.\n * For example, making sure that we match `en` to `en-US` or `sr` to\n * `sr-Cyrl`, while `sr-RU` to `sr-Latn-RU`.\n *\n * This list can be taken directly from CLDR Supplemental Data.\n *\n * What it does ([requested] * [available] = [supported]):\n *\n * ['fr'] * ['fr-FR'] = ['fr-FR']\n * ['en'] * ['en-US'] = ['en-US']\n * ['sr'] * ['sr-Latn', 'sr-Cyrl'] = ['sr-Cyrl']\n *\n * 3) variant/region range check has been added\n *\n * Lastly, the last form of check is against the requested locale ID\n * but with the variant/region field replaced with a `*` range.\n *\n * The rationale here laid out in LDML 4.4 Language Matching:\n * \"(...) normally the fall-off between the user's languages is\n * substantially greated than regional variants.\"\n *\n * In other words, if we can't match for the given region, maybe\n * we can match for the same language/script but other region, and\n * it will in most cases be preferred over falling back on the next\n * language.\n *\n * What it does ([requested] * [available] = [supported]):\n *\n * ['en-AU'] * ['en-US'] = ['en-US']\n * ['sr-RU'] * ['sr-Latn-RO'] = ['sr-Latn-RO'] // sr-RU -> sr-Latn-RU\n *\n * It works similarly to getParentLocales algo, except that we stop\n * after matching against variant/region ranges and don't try to match\n * ignoring script ranges. That means that `sr-Cyrl` will never match\n * against `sr-Latn`.\n */\nexport function filterMatches(requestedLocales, availableLocales, strategy) {\n const supportedLocales = new Set();\n const availableLocalesMap = new Map();\n for (let locale of availableLocales) {\n let newLocale = new Locale(locale);\n if (newLocale.isWellFormed) {\n availableLocalesMap.set(locale, new Locale(locale));\n }\n }\n outer: for (const reqLocStr of requestedLocales) {\n const reqLocStrLC = reqLocStr.toLowerCase();\n const requestedLocale = new Locale(reqLocStrLC);\n if (requestedLocale.language === undefined) {\n continue;\n }\n // 1) Attempt to make an exact match\n // Example: `en-US` === `en-US`\n for (const key of availableLocalesMap.keys()) {\n if (reqLocStrLC === key.toLowerCase()) {\n supportedLocales.add(key);\n availableLocalesMap.delete(key);\n if (strategy === \"lookup\") {\n return Array.from(supportedLocales);\n }\n else if (strategy === \"filtering\") {\n continue;\n }\n else {\n continue outer;\n }\n }\n }\n // 2) Attempt to match against the available range\n // This turns `en` into `en-*-*-*` and `en-US` into `en-*-US-*`\n // Example: ['en-US'] * ['en'] = ['en']\n for (const [key, availableLocale] of availableLocalesMap.entries()) {\n if (availableLocale.matches(requestedLocale, true, false)) {\n supportedLocales.add(key);\n availableLocalesMap.delete(key);\n if (strategy === \"lookup\") {\n return Array.from(supportedLocales);\n }\n else if (strategy === \"filtering\") {\n continue;\n }\n else {\n continue outer;\n }\n }\n }\n // 3) Attempt to retrieve a maximal version of the requested locale ID\n // If data is available, it'll expand `en` into `en-Latn-US` and\n // `zh` into `zh-Hans-CN`.\n // Example: ['en'] * ['en-GB', 'en-US'] = ['en-US']\n if (requestedLocale.addLikelySubtags()) {\n for (const [key, availableLocale] of availableLocalesMap.entries()) {\n if (availableLocale.matches(requestedLocale, true, false)) {\n supportedLocales.add(key);\n availableLocalesMap.delete(key);\n if (strategy === \"lookup\") {\n return Array.from(supportedLocales);\n }\n else if (strategy === \"filtering\") {\n continue;\n }\n else {\n continue outer;\n }\n }\n }\n }\n // 4) Attempt to look up for a different variant for the same locale ID\n // Example: ['en-US-mac'] * ['en-US-win'] = ['en-US-win']\n requestedLocale.clearVariants();\n for (const [key, availableLocale] of availableLocalesMap.entries()) {\n if (availableLocale.matches(requestedLocale, true, true)) {\n supportedLocales.add(key);\n availableLocalesMap.delete(key);\n if (strategy === \"lookup\") {\n return Array.from(supportedLocales);\n }\n else if (strategy === \"filtering\") {\n continue;\n }\n else {\n continue outer;\n }\n }\n }\n // 5) Attempt to match against the likely subtag without region\n // In the example below, addLikelySubtags will turn\n // `zh-Hant` into `zh-Hant-TW` giving `zh-TW` priority match\n // over `zh-CN`.\n //\n // Example: ['zh-Hant-HK'] * ['zh-TW', 'zh-CN'] = ['zh-TW']\n requestedLocale.clearRegion();\n if (requestedLocale.addLikelySubtags()) {\n for (const [key, availableLocale] of availableLocalesMap.entries()) {\n if (availableLocale.matches(requestedLocale, true, false)) {\n supportedLocales.add(key);\n availableLocalesMap.delete(key);\n if (strategy === \"lookup\") {\n return Array.from(supportedLocales);\n }\n else if (strategy === \"filtering\") {\n continue;\n }\n else {\n continue outer;\n }\n }\n }\n }\n // 6) Attempt to look up for a different region for the same locale ID\n // Example: ['en-US'] * ['en-AU'] = ['en-AU']\n requestedLocale.clearRegion();\n for (const [key, availableLocale] of availableLocalesMap.entries()) {\n if (availableLocale.matches(requestedLocale, true, true)) {\n supportedLocales.add(key);\n availableLocalesMap.delete(key);\n if (strategy === \"lookup\") {\n return Array.from(supportedLocales);\n }\n else if (strategy === \"filtering\") {\n continue;\n }\n else {\n continue outer;\n }\n }\n }\n }\n return Array.from(supportedLocales);\n}\n","import { FluentBundle, FluentResource } from \"@fluent/bundle\";\nimport { negotiateLanguages } from \"@fluent/langneg\";\n// This is automatically populated by `tools/bundle_texts.js` via a postbuild script\nconst BUNDLED_TEXTS = {\n \"ar-SA\": {\n \"context_menu.ftl\": \"context-menu-download-swf = تحميل .swf\\ncontext-menu-copy-debug-info = نسخ معلومات التصحيح\\ncontext-menu-open-save-manager = فتح مدير الحفظ\\ncontext-menu-about-ruffle =\\n { $flavor ->\\n [extension] حول ملحق رفل ({ $version })\\n *[other] حول رفل ({ $version })\\n }\\ncontext-menu-hide = إخفاء هذه القائمة\\ncontext-menu-exit-fullscreen = الخروج من وضعية الشاشة الكاملة\\ncontext-menu-enter-fullscreen = تفعيل وضعية الشاشة الكاملة\\n\",\n \"messages.ftl\": \"message-cant-embed =\\n لم تكن رفل قادرة على تشغيل الفلاش المضمنة في هذه الصفحة.\\n يمكنك محاولة فتح الملف في علامة تبويب منفصلة، لتجاوز هذه المشكلة.\\npanic-title = لقد حدث خطأ ما :(\\nmore-info = معلومات أكثر\\nrun-anyway = التشغيل على أي حال\\ncontinue = الاستمرار\\nreport-bug = إبلاغ عن خلل\\nupdate-ruffle = تحديث رفل\\nruffle-demo = ويب التجريبي\\nruffle-desktop = برنامج سطح المكتب\\nruffle-wiki = عرض رفل ويكي\\nview-error-details = عرض تفاصيل الخطأ\\nopen-in-new-tab = فتح في علامة تبويب جديدة\\nclick-to-unmute = انقر لإلغاء الكتم\\nerror-file-protocol =\\n يبدو أنك تقوم بتشغيل رفل على بروتوكول \\\"الملف:\\\".\\n هذا لن يعمل لأن المتصفحات تمنع العديد من الميزات من العمل لأسباب أمنية.\\n بدلاً من ذلك، ندعوك إلى إعداد خادم محلي أو استخدام عرض الويب أو تطبيق سطح المكتب.\\nerror-javascript-config =\\n تعرض رفل إلى مشكلة رئيسية بسبب الإعدادات الخاطئة للجافا سكريبت.\\n إذا كنت مسؤول الخادم، نحن ندعوك إلى التحقق من تفاصيل الخطأ لمعرفة سبب المشكلة.\\n يمكنك أيضا الرجوع إلى رفل ويكي للحصول على المساعدة.\\nerror-wasm-not-found =\\n فشل رفل في تحميل مكون الملف \\\".wasm\\\" المطلوب.\\n إذا كنت مسؤول الخادم، الرجاء التأكد من أن الملف قد تم تحميله بشكل صحيح.\\n إذا استمرت المشكلة، قد تحتاج إلى استخدام إعدادات \\\"المسار العام\\\": الرجاء مراجعة رفل ويكي للحصول على المساعدة.\\nerror-wasm-mime-type =\\n واجهت رفل مشكلة رئيسية أثناء محاولة التهيئة.\\n خادم الويب هذا لا يخدم ملفات \\\". wasm\\\" مع نوع MIME الصحيح.\\n إذا كنت مسؤول الخادم، يرجى مراجعة رفل ويكي للحصول على المساعدة.\\nerror-swf-fetch =\\n فشل رفل في تحميل ملف فلاش SWF.\\n السبب الأكثر احتمالا هو أن الملف لم يعد موجودا، لذلك لا يوجد شيء ليحمله رفل.\\n حاول الاتصال بمسؤول الموقع للحصول على المساعدة.\\nerror-swf-cors =\\n فشل الروفل في تحميل ملف فلاش SWF.\\n من المحتمل أن تم حظر الوصول إلى المنال بواسطة سياسة CORS.\\n إذا كنت مسؤول الخادم، يرجى مراجعة رفل ويكي للحصول على المساعدة.\\nerror-wasm-cors =\\n فشل رفل في تحميل مكون ملف \\\".wasm\\\" المطلوب.\\n من المحتمل أن تم حظر الوصول إلى المنال بواسطة سياسة CORS.\\n إذا كنت مسؤول الخادم، يرجى مراجعة رفل ويكي للحصول على المساعدة.\\nerror-wasm-invalid =\\n واجهت رفل مشكلة رئيسية أثناء محاولة التهيئة.\\n خادم الويب هذا لا يخدم ملفات \\\". wasm\\\" مع نوع MIME الصحيح.\\n إذا كنت مسؤول الخادم، يرجى مراجعة رفل ويكي للحصول على المساعدة.\\nerror-wasm-download =\\n واجهت رفل مشكلة رئيسية أثناء محاولتها التهيئة.\\n هذا يمكن أن يحل نفسه في كثير من الأحيان، لذلك يمكنك محاولة إعادة تحميل الصفحة.\\n خلاف ذلك، يرجى الاتصال بمدير الموقع.\\nerror-wasm-disabled-on-edge =\\n فشل رفل في تحميل مكون الملف \\\".wasm\\\" المطلوب.\\n لإصلاح هذه المشكلة، حاول فتح إعدادات المتصفح الخاص بك، انقر فوق \\\"الخصوصية، البحث، الخدمات\\\"، والتمرير لأسفل، وإيقاف \\\"تعزيز أمانك على الويب\\\".\\n هذا سيسمح للمتصفح الخاص بك بتحميل الملفات \\\".wasm\\\" المطلوبة.\\n إذا استمرت المشكلة، قد تحتاج إلى استخدام متصفح أخر.\\nerror-javascript-conflict =\\n واجهت رفل مشكلة رئيسية أثناء محاولة التهيئة.\\n يبدو أن هذه الصفحة تستخدم كود جافا سكريبت الذي يتعارض مع رفل.\\n إذا كنت مسؤول الخادم، فإننا ندعوك إلى محاولة تحميل الملف على صفحة فارغة.\\nerror-javascript-conflict-outdated = يمكنك أيضًا محاولة تحميل نسخة أحدث من رفل التي قد تحل المشكلة (النسخة الحالية قديمة: { $buildDate }).\\nerror-csp-conflict =\\n واجهت رفل مشكلة رئيسية أثناء محاولة التهيئة.\\n لا تسمح سياسة أمان المحتوى لخادم الويب هذا بتشغيل مكون \\\".wasm\\\" المطلوب.\\n إذا كنت مسؤول الخادم، يرجى الرجوع إلى رفل ويكي للحصول على المساعدة.\\nerror-unknown =\\n واجهت رول مشكلة رئيسية أثناء محاولة عرض محتوى الفلاش هذا.\\n { $outdated ->\\n [true] إذا كنت مسؤول الخادم، الرجاء محاولة تحميل إصدار أحدث من رفل (النسخة الحالية قديمة: { $buildDate }).\\n *[false] ليس من المفترض أن يحدث هذا، لذلك نحن نقدر حقًا إذا قمت بالتبليغ عن الخطأ!\\n }\\n\",\n \"save-manager.ftl\": \"save-delete-prompt = هل أنت متأكد أنك تريد حذف ملف حفظ اللعبة هذا؟\\nsave-reload-prompt =\\n الطريقة الوحيدة لـ { $action ->\\n [delete] حذف\\n *[replace] استبدال\\n } هذا الملف الحفظ دون تضارب محتمل هي إعادة تحميل هذا المحتوى. هل ترغب في المتابعة على أي حال؟\\nsave-download = تحميل\\nsave-replace = استبدال\\nsave-delete = حذف\\nsave-backup-all = تحميل جميع الملفات المحفوظة\\n\",\n \"volume-controls.ftl\": \"\"\n },\n \"ca-ES\": {\n \"context_menu.ftl\": \"context-menu-download-swf = Baixa el fitxer .swf\\ncontext-menu-copy-debug-info = Copia la informació de depuració\\ncontext-menu-open-save-manager = Obre el gestor d'emmagatzematge\\ncontext-menu-about-ruffle =\\n { $flavor ->\\n [extension] Quant a l'extensió de Ruffle ({ $version })\\n *[other] Quant a Ruffle ({ $version })\\n }\\ncontext-menu-hide = Amaga aquest menú\\ncontext-menu-exit-fullscreen = Surt de la pantalla completa\\ncontext-menu-enter-fullscreen = Pantalla completa\\n\",\n \"messages.ftl\": \"panic-title = Alguna cosa ha fallat :(\\nmore-info = Més informació\\nrun-anyway = Reprodueix igualment\\ncontinue = Continua\\nreport-bug = Informa d'un error\\nupdate-ruffle = Actualitza Ruffle\\nruffle-demo = Demostració web\\nruffle-desktop = Aplicació d'escriptori\\nruffle-wiki = Obre la wiki de Ruffle\\nview-error-details = Mostra detalls de l'error\\nopen-in-new-tab = Obre en una pestanya nova\\nclick-to-unmute = Feu clic per activar el so\\n\",\n \"save-manager.ftl\": \"\",\n \"volume-controls.ftl\": \"\"\n },\n \"cs-CZ\": {\n \"context_menu.ftl\": \"context-menu-download-swf = Stáhnout .swf\\ncontext-menu-copy-debug-info = Zkopírovat debug info\\ncontext-menu-open-save-manager = Otevřít správce uložení\\ncontext-menu-about-ruffle =\\n { $flavor ->\\n [extension] O Ruffle rozšíření ({ $version })\\n *[other] O Ruffle ({ $version })\\n }\\ncontext-menu-hide = Skrýt menu\\ncontext-menu-exit-fullscreen = Ukončit režim celé obrazovky\\ncontext-menu-enter-fullscreen = Přejít do režimu celé obrazovky\\ncontext-menu-volume-controls = Ovládání hlasitosti\\n\",\n \"messages.ftl\": \"message-cant-embed =\\n Ruffle nemohl spustit Flash vložený na této stránce.\\n Můžete se pokusit otevřít soubor na samostatné kartě, abyste se vyhnuli tomuto problému.\\npanic-title = Něco se pokazilo :(\\nmore-info = Další informace\\nrun-anyway = Přesto spustit\\ncontinue = Pokračovat\\nreport-bug = Nahlásit chybu\\nupdate-ruffle = Aktualizovat Ruffle\\nruffle-demo = Web Demo\\nruffle-desktop = Desktopová aplikace\\nruffle-wiki = Zobrazit Ruffle Wiki\\nenable-hardware-acceleration = Zdá se, že hardwarová akcelerace není povolena. I když Ruffle funguje správně, může být nepřiměřeně pomalý. Jak povolit hardwarovou akceleraci zjistíte na tomto odkazu.\\nview-error-details = Zobrazit podrobnosti o chybě\\nopen-in-new-tab = Otevřít na nové kartě\\nclick-to-unmute = Kliknutím zrušíte ztlumení\\nerror-file-protocol =\\n Zdá se, že používáte Ruffle na protokolu \\\"file:\\\".\\n To není možné, protože prohlížeče blokují fungování mnoha funkcí z bezpečnostních důvodů.\\n Namísto toho vám doporučujeme nastavit lokální server nebo použít web demo či desktopovou aplikaci.\\nerror-javascript-config =\\n Ruffle narazil na problém v důsledku nesprávné konfigurace JavaScriptu.\\n Pokud jste správcem serveru, doporučujeme vám zkontrolovat podrobnosti o chybě, abyste zjistili, který parametr je vadný.\\n Pomoc můžete získat také na wiki Ruffle.\\nerror-wasm-not-found =\\n Ruffle se nepodařilo načíst požadovanou komponentu souboru „.wasm“.\\n Pokud jste správcem serveru, zkontrolujte, zda byl soubor správně nahrán.\\n Pokud problém přetrvává, možná budete muset použít nastavení „publicPath“: pomoc naleznete na wiki Ruffle.\\nerror-wasm-mime-type =\\n Ruffle narazil na problém při pokusu o inicializaci.\\n Tento webový server neposkytuje soubory „.wasm“ se správným typem MIME.\\n Pokud jste správcem serveru, nápovědu najdete na Ruffle wiki.\\nerror-swf-fetch =\\n Ruffle se nepodařilo načíst SWF soubor Flash.\\n Nejpravděpodobnějším důvodem je, že soubor již neexistuje, takže Ruffle nemá co načíst.\\n Zkuste požádat o pomoc správce webu.\\nerror-swf-cors =\\n Ruffle se nepodařilo načíst SWF soubor Flash.\\n Přístup k načítání byl pravděpodobně zablokován politikou CORS.\\n Pokud jste správcem serveru, nápovědu najdete na Ruffle wiki.\\nerror-wasm-cors =\\n Ruffle se nepodařilo načíst požadovanou komponentu souboru „.wasm“.\\n Přístup k načítání byl pravděpodobně zablokován politikou CORS.\\n Pokud jste správcem serveru, nápovědu najdete na Ruffle wiki.\\nerror-wasm-invalid =\\n Ruffle narazil na problém při pokusu o inicializaci.\\n Zdá se, že na této stránce chybí nebo jsou neplatné soubory ke spuštění Ruffle.\\n Pokud jste správcem serveru, nápovědu najdete na Ruffle wiki.\\nerror-wasm-download =\\n Ruffle narazil na problém při pokusu o inicializaci.\\n Problém se může vyřešit i sám, takže můžete zkusit stránku načíst znovu.\\n V opačném případě kontaktujte administrátora stránky.\\nerror-wasm-disabled-on-edge =\\n Ruffle se nepodařilo načíst požadovanou komponentu souboru „.wasm“.\\n Chcete-li tento problém vyřešit, zkuste otevřít nastavení prohlížeče, klikněte na položku „Ochrana osobních údajů, vyhledávání a služby“, přejděte dolů a vypněte možnost „Zvyšte svou bezpečnost na webu“.\\n Vašemu prohlížeči to umožní načíst požadované soubory „.wasm“.\\n Pokud problém přetrvává, budete možná muset použít jiný prohlížeč.\\nerror-javascript-conflict =\\n Ruffle narazil na problém při pokusu o inicializaci.\\n Zdá se, že tato stránka používá kód JavaScript, který je v konfliktu s Ruffle.\\n Pokud jste správcem serveru, doporučujeme vám zkusit načíst soubor na prázdnou stránku.\\nerror-javascript-conflict-outdated = Můžete se také pokusit nahrát novější verzi Ruffle, která může daný problém vyřešit (aktuální build je zastaralý: { $buildDate }).\\nerror-csp-conflict =\\n Ruffle narazil na problém při pokusu o inicializaci.\\n Zásady zabezpečení obsahu tohoto webového serveru nepovolují spuštění požadované komponenty „.wasm“.\\n Pokud jste správcem serveru, nápovědu najdete na Ruffle wiki.\\nerror-unknown =\\n Ruffle narazil na problém při pokusu zobrazit tento Flash obsah.\\n { $outdated ->\\n [true] Pokud jste správcem serveru, zkuste nahrát novější verzi Ruffle (aktuální build je zastaralý: { $buildDate }).\\n *[false] Toto by se nemělo stát, takže bychom opravdu ocenili, kdybyste mohli nahlásit chybu!\\n }\\n\",\n \"save-manager.ftl\": \"save-delete-prompt = Opravdu chcete odstranit tento soubor s uloženými pozicemi?\\nsave-reload-prompt =\\n Jediný způsob, jak { $action ->\\n [delete] vymazat\\n *[replace] nahradit\\n } tento soubor s uloženými pozicemi bez potenciálního konfliktu je opětovné načtení tohoto obsahu. Chcete přesto pokračovat?\\nsave-download = Stáhnout\\nsave-replace = Nahradit\\nsave-delete = Vymazat\\nsave-backup-all = Stáhnout všechny soubory s uloženými pozicemi\\n\",\n \"volume-controls.ftl\": \"volume-controls = Ovládání hlasitosti\\nvolume-controls-mute = Ztlumit\\nvolume-controls-volume = Hlasitost\\n\"\n },\n \"de-DE\": {\n \"context_menu.ftl\": \"context-menu-download-swf = .swf herunterladen\\ncontext-menu-copy-debug-info = Debug-Info kopieren\\ncontext-menu-open-save-manager = Dateimanager öffnen\\ncontext-menu-about-ruffle =\\n { $flavor ->\\n [extension] Über Ruffle Erweiterung ({ $version })\\n *[other] Über Ruffle ({ $version })\\n }\\ncontext-menu-hide = Menü ausblenden\\ncontext-menu-exit-fullscreen = Vollbild verlassen\\ncontext-menu-enter-fullscreen = Vollbildmodus aktivieren\\ncontext-menu-volume-controls = Lautstärke einstellen\\n\",\n \"messages.ftl\": \"message-cant-embed =\\n Ruffle konnte den Flash in dieser Seite nicht ausführen.\\n Du kannst versuchen, die Datei in einem separaten Tab zu öffnen, um dieses Problem zu umgehen.\\npanic-title = Etwas ist schief gelaufen\\nmore-info = Weitere Informationen\\nrun-anyway = Trotzdem ausführen\\ncontinue = Fortfahren\\nreport-bug = Fehler melden\\nupdate-ruffle = Ruffle aktuallisieren\\nruffle-demo = Web-Demo\\nruffle-desktop = Desktop-Anwendung\\nruffle-wiki = Ruffle-Wiki anzeigen\\nview-error-details = Fehlerdetails anzeigen\\nopen-in-new-tab = In einem neuen Tab öffnen\\nclick-to-unmute = Klicke zum Entmuten\\nerror-file-protocol =\\n Es scheint, dass Sie Ruffle auf dem \\\"file:\\\"-Protokoll ausführen.\\n Dies funktioniert nicht so, als Browser viele Funktionen aus Sicherheitsgründen blockieren.\\n Stattdessen laden wir Sie ein, einen lokalen Server einzurichten oder entweder die Webdemo oder die Desktop-Anwendung zu verwenden.\\nerror-javascript-config =\\n Ruffle ist aufgrund einer falschen JavaScript-Konfiguration auf ein großes Problem gestoßen.\\n Wenn du der Server-Administrator bist, laden wir dich ein, die Fehlerdetails zu überprüfen, um herauszufinden, welcher Parameter fehlerhaft ist.\\n Sie können auch das Ruffle-Wiki für Hilfe konsultieren.\\nerror-wasm-not-found =\\n Ruffle konnte die erforderliche \\\".wasm\\\"-Datei-Komponente nicht laden.\\n Wenn Sie der Server-Administrator sind, stellen Sie bitte sicher, dass die Datei korrekt hochgeladen wurde.\\n Wenn das Problem weiterhin besteht, müssen Sie unter Umständen die \\\"publicPath\\\"-Einstellung verwenden: Bitte konsultieren Sie das Ruffle-Wiki für Hilfe.\\nerror-wasm-mime-type =\\n Ruffle ist auf ein großes Problem beim Initialisieren gestoßen.\\n Dieser Webserver dient nicht \\\". asm\\\"-Dateien mit dem korrekten MIME-Typ.\\n Wenn Sie der Server-Administrator sind, konsultieren Sie bitte das Ruffle-Wiki für Hilfe.\\nerror-swf-fetch =\\n Ruffle konnte die Flash-SWF-Datei nicht laden.\\n Der wahrscheinlichste Grund ist, dass die Datei nicht mehr existiert, so dass Ruffle nicht geladen werden kann.\\n Kontaktieren Sie den Website-Administrator für Hilfe.\\nerror-swf-cors =\\n Ruffle konnte die Flash-SWF-Datei nicht laden.\\n Der Zugriff auf den Abruf wurde wahrscheinlich durch die CORS-Richtlinie blockiert.\\n Wenn Sie der Server-Administrator sind, konsultieren Sie bitte das Ruffle-Wiki für Hilfe.\\nerror-wasm-cors =\\n Ruffle konnte die Flash-SWF-Datei nicht laden.\\n Der Zugriff auf den Abruf wurde wahrscheinlich durch die CORS-Richtlinie blockiert.\\n Wenn Sie der Server-Administrator sind, konsultieren Sie bitte das Ruffle-Wiki für Hilfe.\\nerror-wasm-invalid =\\n Ruffle ist auf ein großes Problem beim Initialisieren gestoßen.\\n Dieser Webserver dient nicht \\\". asm\\\"-Dateien mit dem korrekten MIME-Typ.\\n Wenn Sie der Server-Administrator sind, konsultieren Sie bitte das Ruffle-Wiki für Hilfe.\\nerror-wasm-download =\\n Ruffle ist auf ein großes Problem gestoßen, während er versucht hat zu initialisieren.\\n Dies kann sich oft selbst beheben, so dass Sie versuchen können, die Seite neu zu laden.\\n Andernfalls kontaktieren Sie bitte den Website-Administrator.\\nerror-wasm-disabled-on-edge =\\n Ruffle konnte die erforderliche \\\".wasm\\\"-Datei-Komponente nicht laden.\\n Um dies zu beheben, versuche die Einstellungen deines Browsers zu öffnen, klicke auf \\\"Privatsphäre, Suche und Dienste\\\", scrollen nach unten und schalte \\\"Verbessere deine Sicherheit im Web\\\" aus.\\n Dies erlaubt Ihrem Browser die erforderlichen \\\".wasm\\\"-Dateien zu laden.\\n Wenn das Problem weiterhin besteht, müssen Sie möglicherweise einen anderen Browser verwenden.\\nerror-javascript-conflict =\\n Ruffle ist auf ein großes Problem beim Initialisieren gestoßen.\\n Es scheint, als ob diese Seite JavaScript-Code verwendet, der mit Ruffle kollidiert.\\n Wenn Sie der Server-Administrator sind, laden wir Sie ein, die Datei auf einer leeren Seite zu laden.\\nerror-javascript-conflict-outdated = Du kannst auch versuchen, eine neuere Version von Ruffle hochzuladen, die das Problem umgehen könnte (aktuelle Version ist veraltet: { $buildDate }).\\nerror-csp-conflict =\\n Ruffle ist auf ein großes Problem beim Initialisieren gestoßen.\\n Dieser Webserver dient nicht \\\". asm\\\"-Dateien mit dem korrekten MIME-Typ.\\n Wenn Sie der Server-Administrator sind, konsultieren Sie bitte das Ruffle-Wiki für Hilfe.\\nerror-unknown =\\n Bei dem Versuch, diesen Flash-Inhalt anzuzeigen, ist Ruffle auf ein großes Problem gestoßen.\\n { $outdated ->\\n [true] Wenn Sie der Server-Administrator sind, Bitte versuchen Sie, eine neuere Version von Ruffle hochzuladen (aktuelle Version ist veraltet: { $buildDate }).\\n *[false] Dies soll nicht passieren, deshalb würden wir uns sehr darüber freuen, wenn Sie einen Fehler melden könnten!\\n }\\n\",\n \"save-manager.ftl\": \"save-delete-prompt = Sind Sie sicher, dass Sie diese Speicherdatei löschen möchten?\\nsave-reload-prompt =\\n Der einzige Weg zu { $action ->\\n [delete] löschen\\n *[replace] ersetzen\\n } diese Speicherdatei ohne möglichen Konflikt ist das erneute Laden dieses Inhalts. Möchten Sie trotzdem fortfahren?\\nsave-download = Herunterladen\\nsave-replace = Ersetzen\\nsave-delete = Löschen\\nsave-backup-all = Alle gespeicherten Dateien herunterladen\\n\",\n \"volume-controls.ftl\": \"volume-controls = Lautstärkeeinstellungen\\nvolume-controls-mute = Stummschalten\\nvolume-controls-volume = Lautstärke\\n\"\n },\n \"en-US\": {\n \"context_menu.ftl\": \"context-menu-download-swf = Download .swf\\ncontext-menu-copy-debug-info = Copy debug info\\ncontext-menu-open-save-manager = Open Save Manager\\ncontext-menu-about-ruffle =\\n { $flavor ->\\n [extension] About Ruffle Extension ({$version})\\n *[other] About Ruffle ({$version})\\n }\\ncontext-menu-hide = Hide this menu\\ncontext-menu-exit-fullscreen = Exit fullscreen\\ncontext-menu-enter-fullscreen = Enter fullscreen\\ncontext-menu-volume-controls = Volume controls\\n\",\n \"messages.ftl\": \"message-cant-embed =\\n Ruffle wasn't able to run the Flash embedded in this page.\\n You can try to open the file in a separate tab, to sidestep this issue.\\npanic-title = Something went wrong :(\\nmore-info = More info\\nrun-anyway = Run anyway\\ncontinue = Continue\\nreport-bug = Report Bug\\nupdate-ruffle = Update Ruffle\\nruffle-demo = Web Demo\\nruffle-desktop = Desktop Application\\nruffle-wiki = View Ruffle Wiki\\nenable-hardware-acceleration = It looks like hardware acceleration is not enabled. While Ruffle may work, it could be unreasonably slow. You can find out how to enable hardware acceleration by following this link.\\nview-error-details = View Error Details\\nopen-in-new-tab = Open in a new tab\\nclick-to-unmute = Click to unmute\\nerror-file-protocol =\\n It appears you are running Ruffle on the \\\"file:\\\" protocol.\\n This doesn't work as browsers block many features from working for security reasons.\\n Instead, we invite you to setup a local server or either use the web demo or the desktop application.\\nerror-javascript-config =\\n Ruffle has encountered a major issue due to an incorrect JavaScript configuration.\\n If you are the server administrator, we invite you to check the error details to find out which parameter is at fault.\\n You can also consult the Ruffle wiki for help.\\nerror-wasm-not-found =\\n Ruffle failed to load the required \\\".wasm\\\" file component.\\n If you are the server administrator, please ensure the file has correctly been uploaded.\\n If the issue persists, you may need to use the \\\"publicPath\\\" setting: please consult the Ruffle wiki for help.\\nerror-wasm-mime-type =\\n Ruffle has encountered a major issue whilst trying to initialize.\\n This web server is not serving \\\".wasm\\\" files with the correct MIME type.\\n If you are the server administrator, please consult the Ruffle wiki for help.\\nerror-swf-fetch =\\n Ruffle failed to load the Flash SWF file.\\n The most likely reason is that the file no longer exists, so there is nothing for Ruffle to load.\\n Try contacting the website administrator for help.\\nerror-swf-cors =\\n Ruffle failed to load the Flash SWF file.\\n Access to fetch has likely been blocked by CORS policy.\\n If you are the server administrator, please consult the Ruffle wiki for help.\\nerror-wasm-cors =\\n Ruffle failed to load the required \\\".wasm\\\" file component.\\n Access to fetch has likely been blocked by CORS policy.\\n If you are the server administrator, please consult the Ruffle wiki for help.\\nerror-wasm-invalid =\\n Ruffle has encountered a major issue whilst trying to initialize.\\n It seems like this page has missing or invalid files for running Ruffle.\\n If you are the server administrator, please consult the Ruffle wiki for help.\\nerror-wasm-download =\\n Ruffle has encountered a major issue whilst trying to initialize.\\n This can often resolve itself, so you can try reloading the page.\\n Otherwise, please contact the website administrator.\\nerror-wasm-disabled-on-edge =\\n Ruffle failed to load the required \\\".wasm\\\" file component.\\n To fix this, try opening your browser's settings, clicking \\\"Privacy, search, and services\\\", scrolling down, and turning off \\\"Enhance your security on the web\\\".\\n This will allow your browser to load the required \\\".wasm\\\" files.\\n If the issue persists, you might have to use a different browser.\\nerror-javascript-conflict =\\n Ruffle has encountered a major issue whilst trying to initialize.\\n It seems like this page uses JavaScript code that conflicts with Ruffle.\\n If you are the server administrator, we invite you to try loading the file on a blank page.\\nerror-javascript-conflict-outdated = You can also try to upload a more recent version of Ruffle that may circumvent the issue (current build is outdated: {$buildDate}).\\nerror-csp-conflict =\\n Ruffle has encountered a major issue whilst trying to initialize.\\n This web server's Content Security Policy does not allow the required \\\".wasm\\\" component to run.\\n If you are the server administrator, please consult the Ruffle wiki for help.\\nerror-unknown =\\n Ruffle has encountered a major issue whilst trying to display this Flash content.\\n {$outdated ->\\n [true] If you are the server administrator, please try to upload a more recent version of Ruffle (current build is outdated: {$buildDate}).\\n *[false] This isn't supposed to happen, so we'd really appreciate if you could file a bug!\\n }\\n\",\n \"save-manager.ftl\": \"save-delete-prompt = Are you sure you want to delete this save file?\\nsave-reload-prompt =\\n The only way to {$action ->\\n [delete] delete\\n *[replace] replace\\n } this save file without potential conflict is to reload this content. Do you wish to continue anyway?\\nsave-download = Download\\nsave-replace = Replace\\nsave-delete = Delete\\nsave-backup-all = Download all save files\",\n \"volume-controls.ftl\": \"volume-controls = Volume controls\\nvolume-controls-mute = Mute\\nvolume-controls-volume = Volume\\n\"\n },\n \"es-ES\": {\n \"context_menu.ftl\": \"context-menu-download-swf = Descargar .swf\\ncontext-menu-copy-debug-info = Copiar Información de depuración\\ncontext-menu-open-save-manager = Abrir gestor de guardado\\ncontext-menu-about-ruffle =\\n { $flavor ->\\n [extension] Sobre la extensión de Ruffle ({ $version })\\n *[other] Sobre Ruffle ({ $version })\\n }\\ncontext-menu-hide = Ocultar este menú\\ncontext-menu-exit-fullscreen = Salir de pantalla completa\\ncontext-menu-enter-fullscreen = Entrar a pantalla completa\\ncontext-menu-volume-controls = Controles de volumen\\n\",\n \"messages.ftl\": \"message-cant-embed =\\n Ruffle no pudo ejecutar el Flash incrustado en esta página.\\n Puedes intentar abrir el archivo en una pestaña aparte, para evitar este problema.\\npanic-title = Algo salió mal :(\\nmore-info = Más info\\nrun-anyway = Ejecutar de todos modos\\ncontinue = Continuar\\nreport-bug = Reportar un Error\\nupdate-ruffle = Actualizar Ruffle\\nruffle-demo = Demostración de web\\nruffle-desktop = Aplicación de Desktop\\nruffle-wiki = Ver la página wiki\\nenable-hardware-acceleration = Al parecer, la aceleración de hardware no esta habilitada. Puede que Ruffle funcione, pero será extremadamente lento. Puedes averiguar como habilitar la aceleración de hardware al entrar al enlace.\\nview-error-details = Ver los detalles del error\\nopen-in-new-tab = Abrir en una pestaña nueva\\nclick-to-unmute = Haz clic para dejar de silenciar\\nerror-file-protocol =\\n Parece que está ejecutando Ruffle en el protocolo \\\"archivo:\\\".\\n Esto no funciona porque los navegadores bloquean que muchas características funcionen por razones de seguridad.\\n En su lugar, le invitamos a configurar un servidor local o bien usar la demostración web o la aplicación de desktop.\\nerror-javascript-config =\\n Ruffle ha encontrado un problema crítico debido a una configuración JavaScript incorrecta.\\n Si usted es el administrador del servidor, le invitamos a comprobar los detalles del error para averiguar qué parámetro está en falta.\\n También puedes consultar la wiki de Ruffle para obtener ayuda.\\nerror-wasm-not-found =\\n Ruffle no pudo cargar el componente de archivo \\\".wasm\\\" requerido.\\n Si usted es el administrador del servidor, asegúrese de que el archivo ha sido subido correctamente.\\n Si el problema persiste, puede que necesite usar la configuración \\\"publicPath\\\": por favor consulte la wiki de Ruffle para obtener ayuda.\\nerror-wasm-mime-type =\\n Ruffle ha encontrado un problema crítico al intentar inicializar.\\n Este servidor web no está sirviendo archivos wasm\\\" con el tipo MIME correcto.\\n Si usted es el administrador del servidor, consulte la wiki de Ruffle para obtener ayuda.\\nerror-swf-fetch =\\n Ruffle no pudo cargar el archivo Flash SWF.\\n La razón más probable es que el archivo ya no existe, así que no hay nada para cargar Ruffle.\\n Intente ponerse en contacto con el administrador del sitio web para obtener ayuda.\\nerror-swf-cors =\\n Ruffle no pudo cargar el archivo Flash SWF.\\n Es probable que el acceso a la búsqueda haya sido bloqueado por la política CORS.\\n Si usted es el administrador del servidor, consulte la wiki de Ruffle para obtener ayuda.\\nerror-wasm-cors =\\n Ruffle no pudo cargar el archivo \\\".wasm.\\\"\\n Es probable que el acceso a la búsqueda o la llamada a la función fetch haya sido bloqueado por la política CORS.\\n Si usted es el administrador del servidor, consulte la wiki de Ruffle para obtener ayuda.\\nerror-wasm-invalid =\\n Ruffle ha encontrado un problema crítico al intentar inicializar.\\n Este servidor web no está sirviendo archivos wasm\\\" con el tipo Mime correcto.\\n Si usted es el administrador del servidor, consulte la wiki de Ruffle para obtener ayuda.\\nerror-wasm-download =\\n Ruffle ha encontrado un problema crítico mientras intentaba inicializarse.\\n Esto a menudo puede resolverse por sí mismo, así que puede intentar recargar la página.\\n De lo contrario, póngase en contacto con el administrador del sitio web.\\nerror-wasm-disabled-on-edge =\\n Ruffle no pudo cargar el componente de archivo \\\".wasm\\\" requerido.\\n Para solucionar esto, intenta abrir la configuración de tu navegador, haciendo clic en \\\"Privacidad, búsqueda y servicios\\\", desplazándote y apagando \\\"Mejore su seguridad en la web\\\".\\n Esto permitirá a su navegador cargar los archivos \\\".wasm\\\" necesarios.\\n Si el problema persiste, puede que tenga que utilizar un navegador diferente.\\nerror-javascript-conflict =\\n Ruffle ha encontrado un problema crítico mientras intentaba inicializarse.\\n Parece que esta página utiliza código JavaScript que entra en conflicto con Ruffle.\\n Si usted es el administrador del servidor, le invitamos a intentar cargar el archivo en una página en blanco.\\nerror-javascript-conflict-outdated = También puedes intentar subir una versión más reciente de Ruffle que puede eludir el problema (la versión actual está desactualizada: { $buildDate }).\\nerror-csp-conflict =\\n Ruffle encontró un problema al intentar inicializarse.\\n La Política de Seguridad de Contenido de este servidor web no permite el componente requerido \\\".wasm\\\". \\n Si usted es el administrador del servidor, por favor consulta la wiki de Ruffle para obtener ayuda.\\nerror-unknown =\\n Ruffle ha encontrado un problema al tratar de mostrar el contenido Flash.\\n { $outdated ->\\n [true] Si usted es el administrador del servidor, intenta cargar una version más reciente de Ruffle (la version actual esta desactualizada: { $buildDate }).\\n *[false] Esto no deberia suceder! apreciariamos que reportes el error!\\n }\\n\",\n \"save-manager.ftl\": \"save-delete-prompt = ¿Está seguro de querer eliminar este archivo de guardado?\\nsave-reload-prompt =\\n La única forma de { $action ->\\n [delete] eliminar\\n *[replace] sobreescribir\\n } este archivo de guardado sin conflictos potenciales es reiniciando el contenido. ¿Desea continuar de todos modos?\\nsave-download = Descargar\\nsave-replace = Sobreescribir\\nsave-delete = Borrar\\nsave-backup-all = Borrar todos los archivos de guardado\\n\",\n \"volume-controls.ftl\": \"volume-controls = Controles de volumen\\nvolume-controls-mute = Silenciar\\nvolume-controls-volume = Volumen\\n\"\n },\n \"fr-FR\": {\n \"context_menu.ftl\": \"context-menu-download-swf = Télécharger en tant que .swf\\ncontext-menu-copy-debug-info = Copier les infos de débogage\\ncontext-menu-open-save-manager = Ouvrir le gestionnaire de stockage\\ncontext-menu-about-ruffle =\\n { $flavor ->\\n [extension] À propos de Ruffle Extension ({ $version })\\n *[other] À propos de Ruffle ({ $version })\\n }\\ncontext-menu-hide = Masquer ce menu\\ncontext-menu-exit-fullscreen = Sortir du mode plein écran\\ncontext-menu-enter-fullscreen = Afficher en plein écran\\n\",\n \"messages.ftl\": \"message-cant-embed =\\n Ruffle n'a pas été en mesure de lire le fichier Flash intégré dans cette page.\\n Vous pouvez essayer d'ouvrir le fichier dans un onglet isolé, pour contourner le problème.\\npanic-title = Une erreur est survenue :(\\nmore-info = Plus d'infos\\nrun-anyway = Exécuter quand même\\ncontinue = Continuer\\nreport-bug = Signaler le bug\\nupdate-ruffle = Mettre à jour Ruffle\\nruffle-demo = Démo en ligne\\nruffle-desktop = Application de bureau\\nruffle-wiki = Wiki de Ruffle\\nview-error-details = Détails de l'erreur\\nopen-in-new-tab = Ouvrir dans un nouvel onglet\\nclick-to-unmute = Cliquez pour activer le son\\nerror-file-protocol =\\n Il semblerait que vous exécutiez Ruffle sur le protocole \\\"file:\\\".\\n Cela ne fonctionne pas car les navigateurs bloquent de nombreuses fonctionnalités pour des raisons de sécurité.\\n Nous vous invitons soit à configurer un serveur local, soit à utiliser la démo en ligne ou l'application de bureau.\\nerror-javascript-config =\\n Ruffle a rencontré un problème majeur en raison d'une configuration JavaScript incorrecte.\\n Si vous êtes l'administrateur du serveur, nous vous invitons à vérifier les détails de l'erreur pour savoir quel est le paramètre en cause.\\n Vous pouvez également consulter le wiki de Ruffle pour obtenir de l'aide.\\nerror-wasm-not-found =\\n Ruffle n'a pas réussi à charger son fichier \\\".wasm\\\".\\n Si vous êtes l'administrateur du serveur, veuillez vous assurer que ce fichier a bien été mis en ligne.\\n Si le problème persiste, il vous faudra peut-être utiliser le paramètre \\\"publicPath\\\" : veuillez consulter le wiki de Ruffle pour obtenir de l'aide.\\nerror-wasm-mime-type =\\n Ruffle a rencontré un problème majeur durant sa phase d'initialisation.\\n Ce serveur web ne renvoie pas le bon type MIME pour les fichiers \\\".wasm\\\".\\n Si vous êtes l'administrateur du serveur, veuillez consulter le wiki de Ruffle pour obtenir de l'aide.\\nerror-swf-fetch =\\n Ruffle n'a pas réussi à charger le fichier Flash.\\n La raison la plus probable est que le fichier n'existe pas ou plus.\\n Vous pouvez essayer de prendre contact avec l'administrateur du site pour obtenir plus d'informations.\\nerror-swf-cors =\\n Ruffle n'a pas réussi à charger le fichier Flash.\\n La requête a probablement été rejetée en raison de la configuration du CORS.\\n Si vous êtes l'administrateur du serveur, veuillez consulter le wiki de Ruffle pour obtenir de l'aide.\\nerror-wasm-cors =\\n Ruffle n'a pas réussi à charger son fichier \\\".wasm\\\".\\n La requête a probablement été rejetée en raison de la configuration du CORS.\\n Si vous êtes l'administrateur du serveur, veuillez consulter le wiki de Ruffle pour obtenir de l'aide.\\nerror-wasm-invalid =\\n Ruffle a rencontré un problème majeur durant sa phase d'initialisation.\\n Il semblerait que cette page comporte des fichiers manquants ou invalides pour exécuter Ruffle.\\n Si vous êtes l'administrateur du serveur, veuillez consulter le wiki de Ruffle pour obtenir de l'aide.\\nerror-wasm-download =\\n Ruffle a rencontré un problème majeur durant sa phase d'initialisation.\\n Le problème détecté peut souvent se résoudre de lui-même, donc vous pouvez essayer de recharger la page.\\n Si le problème persiste, veuillez prendre contact avec l'administrateur du site.\\nerror-wasm-disabled-on-edge =\\n Ruffle n'a pas réussi à charger son fichier \\\".wasm\\\".\\n Pour résoudre ce problème, essayez d'ouvrir les paramètres de votre navigateur et de cliquer sur \\\"Confidentialité, recherche et services\\\". Puis, vers le bas de la page, désactivez l'option \\\"Améliorez votre sécurité sur le web\\\".\\n Cela permettra à votre navigateur de charger les fichiers \\\".wasm\\\".\\n Si le problème persiste, vous devrez peut-être utiliser un autre navigateur.\\nerror-javascript-conflict =\\n Ruffle a rencontré un problème majeur durant sa phase d'initialisation.\\n Il semblerait que cette page contienne du code JavaScript qui entre en conflit avec Ruffle.\\n Si vous êtes l'administrateur du serveur, nous vous invitons à essayer de charger le fichier dans une page vide.\\nerror-javascript-conflict-outdated = Vous pouvez également essayer de mettre en ligne une version plus récente de Ruffle qui pourrait avoir corrigé le problème (la version que vous utilisez est obsolète : { $buildDate }).\\nerror-csp-conflict =\\n Ruffle a rencontré un problème majeur durant sa phase d'initialisation.\\n La stratégie de sécurité du contenu (CSP) de ce serveur web n'autorise pas l'exécution de fichiers \\\".wasm\\\".\\n Si vous êtes l'administrateur du serveur, veuillez consulter le wiki de Ruffle pour obtenir de l'aide.\\nerror-unknown =\\n Ruffle a rencontré un problème majeur durant l'exécution de ce contenu Flash.\\n { $outdated ->\\n [true] Si vous êtes l'administrateur du serveur, veuillez essayer de mettre en ligne une version plus récente de Ruffle (la version que vous utilisez est obsolète : { $buildDate }).\\n *[false] Cela n'est pas censé se produire, donc nous vous serions reconnaissants si vous pouviez nous signaler ce bug !\\n }\\n\",\n \"save-manager.ftl\": \"save-delete-prompt = Voulez-vous vraiment supprimer ce fichier de sauvegarde ?\\nsave-reload-prompt =\\n La seule façon de { $action ->\\n [delete] supprimer\\n *[replace] remplacer\\n } ce fichier de sauvegarde sans conflit potentiel est de recharger ce contenu. Souhaitez-vous quand même continuer ?\\nsave-download = Télécharger\\nsave-replace = Remplacer\\nsave-delete = Supprimer\\nsave-backup-all = Télécharger tous les fichiers de sauvegarde\\n\",\n \"volume-controls.ftl\": \"\"\n },\n \"he-IL\": {\n \"context_menu.ftl\": \"context-menu-download-swf = הורדת קובץ הswf.\\ncontext-menu-copy-debug-info = העתקת נתוני ניפוי שגיאות\\ncontext-menu-open-save-manager = פתח את מנהל השמירות\\ncontext-menu-about-ruffle =\\n { $flavor ->\\n [extension] אודות התוסף Ruffle ({ $version })\\n *[other] אודות Ruffle ({ $version })\\n }\\ncontext-menu-hide = הסתר תפריט זה\\ncontext-menu-exit-fullscreen = יציאה ממסך מלא\\ncontext-menu-enter-fullscreen = מסך מלא\\ncontext-menu-volume-controls = בקרת עוצמת קול\\n\",\n \"messages.ftl\": \"message-cant-embed =\\n Ruffle לא הצליח להריץ את תוכן הפלאש המוטמע בדף זה.\\n אתה יכול לפתוח את הקובץ בלשונית נפרדת, על מנת לעקוף בעיה זו.\\npanic-title = משהו השתבש :(\\nmore-info = מידע נוסף\\nrun-anyway = הפעל בכל זאת\\ncontinue = המשך\\nreport-bug = דווח על תקלה\\nupdate-ruffle = עדכן את Ruffle\\nruffle-demo = הדגמה\\nruffle-desktop = אפליקציית שולחן עבודה\\nruffle-wiki = ראה את Ruffle wiki\\nenable-hardware-acceleration = נראה שהאצת החומרה שלך לא מופעלת. בעוד שראפל עשוי לעבוד, הוא יכול להיות איטי. תוכל לראות כיצד להפעיל תכונה זו בלחיצה על הלינק הזה.\\nview-error-details = ראה פרטי שגיאה\\nopen-in-new-tab = פתח בכרטיסייה חדשה\\nclick-to-unmute = לחץ על מנת לבטל השתקה\\nerror-file-protocol =\\n נדמה שאתה מריץ את Ruffle תחת פרוטוקול \\\"file:\\\".\\n זה לא יעבוד מכיוון שדפדפנים חוסמים אפשרויות רבות מלעבוד עקב סיבות אבטחה.\\n במקום זה, אנו מזמינים אותך לאחסן אתר זה תחת שרת מקומי או הדגמה ברשת או דרך אפליקציית שולחן העבודה.\\nerror-javascript-config =\\n Ruffle נתקל בתקלה חמורה עקב הגדרת JavaScript שגויה.\\n אם אתה מנהל האתר, אנו מזמינים אותך לבדוק את פרטי השגיאה על מנת למצוא איזה פרמטר הוא שגוי.\\n אתה יכול לעיין ולהועץ בwiki של Ruffle על מנת לקבל עזרה.\\nerror-wasm-not-found =\\n Ruffle נכשל לטעון את קובץ ה\\\"wasm.\\\" הדרוש.\\n אם אתה מנהל האתר, אנא וודא כי הקובץ הועלה כשורה.\\n אם הבעיה ממשיכה, ייתכן ותצטרך להשתמש בהגדרת \\\"publicPath\\\": אנא עיין והועץ בwiki של Ruffle על מנת לקבל עזרה.\\nerror-wasm-mime-type =\\n Ruffle נתקל בבעיה חמורה תוך כדי ניסיון לאתחל.\\n שרתו של אתר זה לא משייך קבצי \\\".wasm\\\" עם סוג הMIME הנכון.\\n אם אתה מנהל האתר, אנא עיין והועץ בwiki של Ruffle על מנת לקבל עזרה.\\nerror-swf-fetch =\\n Ruffle נכשל לטעון את קובץ הפלאש/swf. .\\n זה נובע ככל הנראה מכיוון והקובץ לא קיים יותר, אז אין לRuffle מה לטעון.\\n נסה ליצור קשר עם מנהל האתר על מנת לקבל עזרה.\\nerror-swf-cors =\\n Ruffle נכשל לטעון את קובץ הפלאש/swf. .\\n גישה לfetch ככל הנראה נחסמה על ידי מדיניות CORS.\\n אם אתה מנהל האתר, אנא עיין והועץ בwiki של Ruffle על מנת לקבל עזרה.\\nerror-wasm-cors =\\n Ruffle נכשל לטעון את קובץ ה\\\".wasm\\\" הדרוש.\\n גישה לfetch ככל הנראה נחסמה על ידי מדיניות CORS.\\n אם אתה מנהל האתר, אנא עיין והועץ בwiki של Ruffle על מנת לקבל עזרה.\\nerror-wasm-invalid =\\n Ruffle נתקל בבעיה חמורה תוך כדי ניסיון לאתחל.\\n נדמה כי בדף זה חסרים או לא עובדים כראוי קבצים אשר משמשים את Ruffle כדי לפעול\\n אם אתה מנהל האתר, אנא עיין והועץ בwiki של Ruffle על מנת לקבל עזרה.\\nerror-wasm-download =\\n Ruffle נתקל בבעיה חמורה תוך כדי ניסיון לאתחל.\\n לעיתים בעיה זו יכולה לפתור את עצמה, אז אתה יכול לנסות לטעון מחדש את הדף זה.\\n אם לא, אנא פנה למנהל האתר.\\nerror-wasm-disabled-on-edge =\\n Ruffle נכשל לטעון את קובץ ה\\\".wasm\\\" הדרוש.\\n על מנת לתקן בעיה זו, נסה לפתוח את הגדרות הדפדפן שלך, לחץ על \\\"אבטחה, חיפוש ושירות\\\",\\n גלול מטה, וכבה את \\\"הגבר את האבטחה שלך ברשת\\\".\\n זה יאפשר לדפדפן שלך לטעון את קובץ ה\\\".wasm\\\" הדרוש.\\n אם הבעיה ממשיכה, ייתכן ועליך להשתמש בדפדפן אחר.\\nerror-javascript-conflict =\\n Ruffle נתקל בבעיה חמורה תוך כדי ניסיון לאתחל.\\n נדמה כי דף זה משתמש בקוד JavaScript אשר מתנגש עם Ruffle.\\n אם אתה מנהל האתר, אנו מזמינים אותך לנסות לטעון את הדף תחת עמוד ריק.\\nerror-javascript-conflict-outdated = בנוסף, אתה יכול לנסות ולהעלות גרסאות עדכניות של Ruffle אשר עלולים לעקוף בעיה זו (גרסה זו הינה מיושנת : { $buildDate }).\\nerror-csp-conflict =\\n Ruffle נתקל בבעיה חמורה תוך כדי ניסיון לאתחל.\\n מדיניות אבטחת התוכן של שרתו של אתר זה אינה מאפשרת לקובץ ה\\\"wasm.\\\" הדרוש לפעול.\\n אם אתה מנהל האתר, אנא עיין והועץ בwiki של Ruffle על מנת לקבל עזרה.\\nerror-unknown =\\n Ruffle נתקל בבעיה חמורה בניסיון להציג את תוכן פלאש זה.\\n { $outdated ->\\n [true] אם אתה מנהל האתר, אנא נסה להעלות גרסה עדכנית יותר של Ruffle (גרסה זו הינה מיושנת: { $buildDate }).\\n *[false] זה לא אמור לקרות, נשמח אם תוכל לשתף תקלה זו!\\n }\\n\",\n \"save-manager.ftl\": \"save-delete-prompt = האם אתה בטוח שברצונך למחוק את קובץ שמירה זה?\\nsave-reload-prompt =\\n הדרך היחידה { $action ->\\n [delete] למחוק\\n *[replace] להחליף\\n } את קובץ השמירה הזה מבלי לגרום לו להתנגש היא לטעון מחדש את תוכן זה. האם אתה רוצה להמשיך בכל זאת?\\nsave-download = הורדה\\nsave-replace = החלפה\\nsave-delete = מחיקה\\nsave-backup-all = הורדת כל קבצי השמירה\\n\",\n \"volume-controls.ftl\": \"volume-controls = בקרת עוצמת קול\\nvolume-controls-mute = השתק\\nvolume-controls-volume = עוצמת קול\\n\"\n },\n \"hu-HU\": {\n \"context_menu.ftl\": \"context-menu-download-swf = .swf fájl letöltése\\ncontext-menu-copy-debug-info = Hibakeresési információk másolása\\ncontext-menu-open-save-manager = Mentéskezelő megnyitása\\ncontext-menu-about-ruffle =\\n { $flavor ->\\n [extension] A Ruffle kiegészítő ({ $version }) névjegye\\n *[other] A Ruffle ({ $version }) névjegye\\n }\\ncontext-menu-hide = Ezen menü elrejtése\\ncontext-menu-exit-fullscreen = Kilépés a teljes képernyőből\\ncontext-menu-enter-fullscreen = Váltás teljes képernyőre\\ncontext-menu-volume-controls = Hangerőszabályzó\\n\",\n \"messages.ftl\": \"message-cant-embed =\\n A Ruffle nem tudta futtatni az oldalba ágyazott Flash tartalmat.\\n A probléma kikerüléséhez megpróbálhatod megnyitni a fájlt egy külön lapon.\\npanic-title = Valami baj történt :(\\nmore-info = További információ\\nrun-anyway = Futtatás mégis\\ncontinue = Folytatás\\nreport-bug = Hiba jelentése\\nupdate-ruffle = Ruffle frissítése\\nruffle-demo = Webes demó\\nruffle-desktop = Asztali alkalmazás\\nruffle-wiki = Ruffle Wiki megnyitása\\nenable-hardware-acceleration = Úgy tűnik, a hardveres gyorsítás nincs engedélyezve. Bár a Ruffle működhet, nagyon lassú lehet. Ezt a hivatkozást követve megtudhatod, hogyan engedélyezd a hardveres gyorsítást.\\nview-error-details = Hiba részletei\\nopen-in-new-tab = Megnyitás új lapon\\nclick-to-unmute = Kattints a némítás feloldásához\\nerror-file-protocol =\\n Úgy tűnik, a Ruffle-t a \\\"file:\\\" protokollon futtatod.\\n Ez nem működik, mivel így a böngészők biztonsági okokból számos funkció működését letiltják.\\n Ehelyett azt ajánljuk hogy indíts egy helyi kiszolgálót, vagy használd a webes demót vagy az asztali alkalmazást.\\nerror-javascript-config =\\n A Ruffle komoly problémába ütközött egy helytelen JavaScript-konfiguráció miatt.\\n Ha a szerver rendszergazdája vagy, kérjük, ellenőrizd a hiba részleteit, hogy megtudd, melyik paraméter a hibás.\\n A Ruffle wikiben is találhatsz ehhez segítséget.\\nerror-wasm-not-found =\\n A Ruffle nem tudta betölteni a szükséges \\\".wasm\\\" összetevőt.\\n Ha a szerver rendszergazdája vagy, kérjük ellenőrizd, hogy a fájl megfelelően lett-e feltöltve.\\n Ha a probléma továbbra is fennáll, előfordulhat, hogy a \\\"publicPath\\\" beállítást kell használnod: segítségért keresd fel a Ruffle wikit.\\nerror-wasm-mime-type =\\n A Ruffle komoly problémába ütközött az inicializálás során.\\n Ez a webszerver a \\\".wasm\\\" fájlokat nem a megfelelő MIME-típussal szolgálja ki.\\n Ha a szerver rendszergazdája vagy, kérjük, keresd fel a Ruffle wikit segítségért.\\nerror-swf-fetch =\\n A Ruffle nem tudta betölteni a Flash SWF fájlt.\\n A legvalószínűbb ok az, hogy a fájl már nem létezik, így a Ruffle számára nincs mit betölteni.\\n Próbáld meg felvenni a kapcsolatot a webhely rendszergazdájával segítségért.\\nerror-swf-cors =\\n A Ruffle nem tudta betölteni a Flash SWF fájlt.\\n A lekéréshez való hozzáférést valószínűleg letiltotta a CORS-házirend.\\n Ha a szerver rendszergazdája vagy, kérjük, keresd fel a Ruffle wikit segítségért.\\nerror-wasm-cors =\\n A Ruffle nem tudta betölteni a szükséges \\\".wasm\\\" összetevőt.\\n A lekéréshez való hozzáférést valószínűleg letiltotta a CORS-házirend.\\n Ha a szerver rendszergazdája vagy, kérjük keresd fel a Ruffle wikit segítségért.\\nerror-wasm-invalid =\\n A Ruffle komoly problémába ütközött az inicializálás során.\\n Úgy tűnik, hogy ezen az oldalon hiányoznak vagy hibásak a Ruffle futtatásához szükséges fájlok.\\n Ha a szerver rendszergazdája vagy, kérjük keresd fel a Ruffle wikit segítségért.\\nerror-wasm-download =\\n A Ruffle komoly problémába ütközött az inicializálás során.\\n Ez gyakran magától megoldódik, ezért megpróbálhatod újratölteni az oldalt.\\n Ellenkező esetben fordulj a webhely rendszergazdájához.\\nerror-wasm-disabled-on-edge =\\n A Ruffle nem tudta betölteni a szükséges \\\".wasm\\\" összetevőt.\\n A probléma megoldásához nyisd meg a böngésző beállításait, kattints az „Adatvédelem, keresés és szolgáltatások” elemre, görgess le, és kapcsold ki a „Fokozott biztonság a weben” opciót.\\n Ez lehetővé teszi a böngésző számára, hogy betöltse a szükséges \\\".wasm\\\" fájlokat.\\n Ha a probléma továbbra is fennáll, lehet, hogy másik böngészőt kell használnod.\\nerror-javascript-conflict =\\n A Ruffle komoly problémába ütközött az inicializálás során.\\n Úgy tűnik, ez az oldal olyan JavaScript-kódot használ, amely ütközik a Ruffle-lel.\\n Ha a kiszolgáló rendszergazdája vagy, kérjük, próbáld meg a fájlt egy üres oldalon betölteni.\\nerror-javascript-conflict-outdated = Megpróbálhatod továbbá feltölteni a Ruffle egy újabb verzióját is, amely megkerülheti a problémát (a jelenlegi elavult: { $buildDate }).\\nerror-csp-conflict =\\n A Ruffle komoly problémába ütközött az inicializálás során.\\n A kiszolgáló tartalombiztonsági házirendje nem teszi lehetővé a szükséges „.wasm” összetevők futtatását.\\n Ha a szerver rendszergazdája vagy, kérjük, keresd fel a Ruffle wikit segítségért.\\nerror-unknown =\\n A Ruffle komoly problémába ütközött, miközben megpróbálta megjeleníteni ezt a Flash-tartalmat.\\n { $outdated ->\\n [true] Ha a szerver rendszergazdája vagy, kérjük, próbáld meg feltölteni a Ruffle egy újabb verzióját (a jelenlegi elavult: { $buildDate }).\\n *[false] Ennek nem lett volna szabad megtörténnie, ezért nagyon hálásak lennénk, ha jeleznéd a hibát!\\n }\\n\",\n \"save-manager.ftl\": \"save-delete-prompt = Biztosan törölni akarod ezt a mentést?\\nsave-reload-prompt =\\n Ennek a mentésnek az esetleges konfliktus nélküli { $action ->\\n [delete] törléséhez\\n *[replace] cseréjéhez\\n } újra kell tölteni a tartalmat. Mégis szeretnéd folytatni?\\nsave-download = Letöltés\\nsave-replace = Csere\\nsave-delete = Törlés\\nsave-backup-all = Az összes fájl letöltése\\n\",\n \"volume-controls.ftl\": \"volume-controls = Hangerőszabályzó\\nvolume-controls-mute = Némítás\\nvolume-controls-volume = Hangerő\\n\"\n },\n \"id-ID\": {\n \"context_menu.ftl\": \"context-menu-download-swf = Unduh .swf\\ncontext-menu-copy-debug-info = Salin info debug\\ncontext-menu-open-save-manager = Buka Manager Save\\ncontext-menu-about-ruffle =\\n { $flavor ->\\n [extension] Tentang Ekstensi Ruffle ({ $version })\\n *[other] Tentang Ruffle ({ $version })\\n }\\ncontext-menu-hide = Sembunyikan Menu ini\\ncontext-menu-exit-fullscreen = Keluar dari layar penuh\\ncontext-menu-enter-fullscreen = Masuk mode layar penuh\\n\",\n \"messages.ftl\": \"message-cant-embed =\\n Ruffle tidak dapat menjalankan Flash yang disematkan di halaman ini.\\n Anda dapat mencoba membuka file di tab terpisah, untuk menghindari masalah ini.\\npanic-title = Terjadi kesalahan :(\\nmore-info = Info lebih lanjut\\nrun-anyway = Jalankan\\ncontinue = Lanjutkan\\nreport-bug = Laporkan Bug\\nupdate-ruffle = Perbarui Ruffle\\nruffle-demo = Demo Web\\nruffle-desktop = Aplikasi Desktop\\nruffle-wiki = Kunjungi Wiki Ruffle\\nview-error-details = Tunjukan Detail Error\\nopen-in-new-tab = Buka di Tab Baru\\nclick-to-unmute = Tekan untuk menyalakan suara\\nerror-file-protocol =\\n Sepertinya anda menjalankan Ruffle di protokol \\\"file:\\\". \\n Ini tidak berfungsi karena browser memblokir fitur ini dengan alasan keamanan.\\n Sebagai gantinya, kami mengajak anda untuk membuat server lokal, menggunakan demo web atau aplikasi desktop.\\nerror-javascript-config =\\n Ruffle mengalami masalah besar karena konfigurasi JavaScript yang salah.\\n Jika Anda adalah administrator server ini, kami mengajak Anda untuk memeriksa detail kesalahan untuk mengetahui parameter mana yang salah.\\n Anda juga dapat membaca wiki Ruffle untuk mendapatkan bantuan.\\nerror-wasm-not-found =\\n Ruffle gagal memuat komponen file \\\".wasm\\\" yang diperlukan.\\n Jika Anda adalah administrator server ini, pastikan file telah diunggah dengan benar.\\n Jika masalah terus berlanjut, Anda mungkin perlu menggunakan pengaturan \\\"publicPath\\\": silakan baca wiki Ruffle untuk mendapatkan bantuan.\\nerror-wasm-mime-type =\\n Ruffle mengalami masalah ketika mencoba melakukan inisialisasi.\\n Server web ini tidak melayani file \\\".wasm\\\" dengan tipe MIME yang benar.\\n Jika Anda adalah administrator server ini, silakan baca wiki Ruffle untuk mendapatkan bantuan.\\nerror-swf-fetch =\\n Ruffle gagal memuat file SWF Flash.\\n Kemungkinan file tersebut sudah tidak ada, sehingga tidak dapat dimuat oleh Ruffle.\\n Coba hubungi administrator situs web ini untuk mendapatkan bantuan.\\nerror-swf-cors =\\n Ruffle gagal memuat file SWF Flash.\\n Akses untuk memuat kemungkinan telah diblokir oleh kebijakan CORS.\\n Jika Anda adalah administrator server ini, silakan baca wiki Ruffle untuk mendapatkan bantuan.\\nerror-wasm-cors =\\n Ruffle gagal memuat komponen file \\\".wasm\\\" yang diperlukan.\\n Akses untuk mengambil kemungkinan telah diblokir oleh kebijakan CORS.\\n Jika Anda adalah administrator server ini, silakan baca wiki Ruffle untuk mendapatkan bantuan.\\nerror-wasm-invalid =\\n Ruffle mengalami masalah besar ketika mencoba melakukan inisialisasi.\\n Sepertinya halaman ini memiliki file yang hilang atau tidak valid untuk menjalankan Ruffle.\\n Jika Anda adalah administrator server ini, silakan baca wiki Ruffle untuk mendapatkan bantuan.\\nerror-wasm-download =\\n Ruffle mengalami masalah besar ketika mencoba melakukan inisialisasi.\\n Hal ini sering kali dapat teratasi dengan sendirinya, sehingga Anda dapat mencoba memuat ulang halaman.\\n Jika tidak, silakan hubungi administrator situs web ini.\\nerror-wasm-disabled-on-edge =\\n Ruffle gagal memuat komponen file \\\".wasm\\\" yang diperlukan.\\n Untuk mengatasinya, coba buka pengaturan peramban Anda, klik \\\"Privasi, pencarian, dan layanan\\\", turun ke bawah, dan matikan \\\"Tingkatkan keamanan Anda di web\\\".\\n Ini akan memungkinkan browser Anda memuat file \\\".wasm\\\" yang diperlukan.\\n Jika masalah berlanjut, Anda mungkin harus menggunakan browser yang berbeda.\\nerror-javascript-conflict =\\n Ruffle mengalami masalah besar ketika mencoba melakukan inisialisasi.\\n Sepertinya situs web ini menggunakan kode JavaScript yang bertentangan dengan Ruffle.\\n Jika Anda adalah administrator server ini, kami mengajak Anda untuk mencoba memuat file pada halaman kosong.\\nerror-javascript-conflict-outdated = Anda juga dapat mencoba mengunggah versi Ruffle yang lebih baru yang mungkin dapat mengatasi masalah ini (versi saat ini sudah kedaluwarsa: { $buildDate }).\\nerror-csp-conflict =\\n Ruffle mengalami masalah besar ketika mencoba melakukan inisialisasi.\\n Kebijakan Keamanan Konten server web ini tidak mengizinkan komponen \\\".wasm\\\" yang diperlukan untuk dijalankan.\\n Jika Anda adalah administrator server ini, silakan baca wiki Ruffle untuk mendapatkan bantuan.\\nerror-unknown =\\n Ruffle telah mengalami masalah besar saat menampilkan konten Flash ini.\\n { $outdated ->\\n [true] Jika Anda administrator server ini, cobalah untuk mengganti versi Ruffle yang lebih baru (versi saat ini sudah kedaluwarsa: { $buildDate }).\\n *[false] Hal ini seharusnya tidak terjadi, jadi kami sangat menghargai jika Anda dapat melaporkan bug ini!\\n }\\n\",\n \"save-manager.ftl\": \"save-delete-prompt = Anda yakin ingin menghapus berkas ini?\\nsave-reload-prompt =\\n Satu-satunya cara untuk { $action ->\\n [delete] menghapus\\n *[replace] mengganti\\n } berkas penyimpanan ini tanpa potensi konflik adalah dengan memuat ulang konten ini. Apakah Anda ingin melanjutkannya?\\nsave-download = Unduh\\nsave-replace = Ganti\\nsave-delete = Hapus\\nsave-backup-all = Unduh semua berkas penyimpanan\\n\",\n \"volume-controls.ftl\": \"\"\n },\n \"it-IT\": {\n \"context_menu.ftl\": \"context-menu-download-swf = Scarica .swf\\ncontext-menu-copy-debug-info = Copia informazioni di debug\\ncontext-menu-open-save-manager = Apri Gestione salvataggi\\ncontext-menu-about-ruffle =\\n { $flavor ->\\n [extension] Informazioni su Ruffle Extension ({ $version })\\n *[other] Informazioni su Ruffle ({ $version })\\n }\\ncontext-menu-hide = Nascondi questo menu\\ncontext-menu-exit-fullscreen = Esci dallo schermo intero\\ncontext-menu-enter-fullscreen = Entra a schermo intero\\n\",\n \"messages.ftl\": \"message-cant-embed =\\n Ruffle non è stato in grado di eseguire il Flash incorporato in questa pagina.\\n Puoi provare ad aprire il file in una scheda separata, per evitare questo problema.\\npanic-title = Qualcosa è andato storto :(\\nmore-info = Maggiori informazioni\\nrun-anyway = Esegui comunque\\ncontinue = Continua\\nreport-bug = Segnala Un Bug\\nupdate-ruffle = Aggiorna Ruffle\\nruffle-demo = Demo Web\\nruffle-desktop = Applicazione Desktop\\nruffle-wiki = Visualizza Ruffle Wiki\\nview-error-details = Visualizza Dettagli Errore\\nopen-in-new-tab = Apri in una nuova scheda\\nclick-to-unmute = Clicca per riattivare l'audio\\nerror-file-protocol =\\n Sembra che tu stia eseguendo Ruffle sul protocollo \\\"file:\\\".\\n Questo non funziona come browser blocca molte funzionalità di lavoro per motivi di sicurezza.\\n Invece, ti invitiamo a configurare un server locale o a utilizzare la demo web o l'applicazione desktop.\\nerror-javascript-config =\\n Ruffle ha incontrato un problema importante a causa di una configurazione JavaScript non corretta.\\n Se sei l'amministratore del server, ti invitiamo a controllare i dettagli dell'errore per scoprire quale parametro è in errore.\\n Puoi anche consultare il wiki Ruffle per aiuto.\\nerror-wasm-not-found =\\n Ruffle non è riuscito a caricare il componente di file \\\".wasm\\\".\\n Se sei l'amministratore del server, assicurati che il file sia stato caricato correttamente.\\n Se il problema persiste, potrebbe essere necessario utilizzare l'impostazione \\\"publicPath\\\": si prega di consultare il wiki Ruffle per aiuto.\\nerror-wasm-mime-type =\\n Ruffle ha incontrato un problema importante durante il tentativo di inizializzazione.\\n Questo server web non serve \\\". asm\\\" file con il tipo MIME corretto.\\n Se sei l'amministratore del server, consulta la wiki Ruffle per aiuto.\\nerror-swf-fetch =\\n Ruffle non è riuscito a caricare il file Flash SWF.\\n La ragione più probabile è che il file non esiste più, quindi non c'è nulla che Ruffle possa caricare.\\n Prova a contattare l'amministratore del sito web per aiuto.\\nerror-swf-cors =\\n Ruffle non è riuscito a caricare il file SWF Flash.\\n L'accesso al recupero probabilmente è stato bloccato dalla politica CORS.\\n Se sei l'amministratore del server, consulta la wiki Ruffle per ricevere aiuto.\\nerror-wasm-cors =\\n Ruffle non è riuscito a caricare il componente di file \\\".wasm\\\".\\n L'accesso al recupero probabilmente è stato bloccato dalla politica CORS.\\n Se sei l'amministratore del server, consulta la wiki Ruffle per ricevere aiuto.\\nerror-wasm-invalid =\\n Ruffle ha incontrato un problema importante durante il tentativo di inizializzazione.\\n Sembra che questa pagina abbia file mancanti o non validi per l'esecuzione di Ruffle.\\n Se sei l'amministratore del server, consulta la wiki Ruffle per ricevere aiuto.\\nerror-wasm-download =\\n Ruffle ha incontrato un problema importante durante il tentativo di inizializzazione.\\n Questo può spesso risolversi da solo, quindi puoi provare a ricaricare la pagina.\\n Altrimenti, contatta l'amministratore del sito.\\nerror-wasm-disabled-on-edge =\\n Ruffle non ha caricato il componente di file \\\".wasm\\\" richiesto.\\n Per risolvere il problema, prova ad aprire le impostazioni del tuo browser, facendo clic su \\\"Privacy, search, and services\\\", scorrendo verso il basso e disattivando \\\"Migliora la tua sicurezza sul web\\\".\\n Questo permetterà al tuo browser di caricare i file \\\".wasm\\\" richiesti.\\n Se il problema persiste, potresti dover usare un browser diverso.\\nerror-javascript-conflict =\\n Ruffle ha riscontrato un problema importante durante il tentativo di inizializzazione.\\n Sembra che questa pagina utilizzi il codice JavaScript che è in conflitto con Ruffle.\\n Se sei l'amministratore del server, ti invitiamo a provare a caricare il file su una pagina vuota.\\nerror-javascript-conflict-outdated = Puoi anche provare a caricare una versione più recente di Ruffle che potrebbe aggirare il problema (l'attuale build è obsoleta: { $buildDate }).\\nerror-csp-conflict =\\n Ruffle ha incontrato un problema importante durante il tentativo di inizializzare.\\n La Politica di Sicurezza dei Contenuti di questo server web non consente l'impostazione richiesta\\\". asm\\\" componente da eseguire.\\n Se sei l'amministratore del server, consulta la Ruffle wiki per aiuto.\\nerror-unknown =\\n Ruffle ha incontrato un problema importante durante il tentativo di visualizzare questo contenuto Flash.\\n { $outdated ->\\n [true] Se sei l'amministratore del server, prova a caricare una versione più recente di Ruffle (la versione attuale è obsoleta: { $buildDate }).\\n *[false] Questo non dovrebbe accadere, quindi ci piacerebbe molto se si potesse inviare un bug!\\n }\\n\",\n \"save-manager.ftl\": \"save-delete-prompt = Sei sicuro di voler eliminare questo file di salvataggio?\\nsave-reload-prompt =\\n L'unico modo per { $action ->\\n [delete] delete\\n *[replace] replace\\n } questo salvataggio file senza potenziali conflitti è quello di ricaricare questo contenuto. Volete continuare comunque?\\nsave-download = Scarica\\nsave-replace = Sostituisci\\nsave-delete = Elimina\\nsave-backup-all = Scarica tutti i file di salvataggio\\n\",\n \"volume-controls.ftl\": \"\"\n },\n \"ja-JP\": {\n \"context_menu.ftl\": \"context-menu-download-swf = .swfをダウンロード\\ncontext-menu-copy-debug-info = デバッグ情報をコピー\\ncontext-menu-open-save-manager = セーブマネージャーを開く\\ncontext-menu-about-ruffle =\\n { $flavor ->\\n [extension] Ruffle拡張機能について ({ $version })\\n *[other] Ruffleについて ({ $version })\\n }\\ncontext-menu-hide = メニューを隠す\\ncontext-menu-exit-fullscreen = フルスクリーンを終了\\ncontext-menu-enter-fullscreen = フルスクリーンにする\\ncontext-menu-volume-controls = 音量調節\\n\",\n \"messages.ftl\": \"message-cant-embed =\\n Ruffleはこのページに埋め込まれた Flash を実行できませんでした。\\n 別のタブでファイルを開くことで、この問題を解決できるかもしれません。\\npanic-title = エラーが発生しました :(\\nmore-info = 詳細情報\\nrun-anyway = とにかく実行する\\ncontinue = 続行\\nreport-bug = バグを報告\\nupdate-ruffle = Ruffleを更新\\nruffle-demo = Webデモ\\nruffle-desktop = デスクトップアプリケーション\\nruffle-wiki = Ruffle Wikiを表示\\nview-error-details = エラーの詳細を表示\\nopen-in-new-tab = 新しいタブで開く\\nclick-to-unmute = クリックでミュートを解除\\nerror-file-protocol =\\n Ruffleを\\\"file:\\\"プロトコルで使用しているようです。\\n ブラウザはセキュリティ上の理由から殆どの機能を制限しているため、正しく動作しません。\\n ローカルサーバーをセットアップするか、ウェブデモまたはデスクトップアプリをご利用ください。\\nerror-javascript-config =\\n JavaScriptの設定が正しくないため、Ruffleで問題が発生しました。\\n サーバー管理者の方は、エラーの詳細から、どのパラメーターに問題があるのかを確認してください。\\n Ruffleのwikiを参照することで、解決方法が見つかるかもしれません。\\nerror-wasm-not-found =\\n Ruffleの初期化時に重大な問題が発生しました。\\n このWebサーバーのコンテンツセキュリティポリシーが、実行に必要となる「.wasm」コンポーネントの実行を許可していません。サーバーの管理者の場合は、ファイルが正しくアップロードされているか確認をしてください。この問題が解決しない場合は、「publicPath」の設定を使用する必要があります。\\n サーバーの管理者は、Ruffleのwikiを参照してください。\\nerror-wasm-mime-type =\\n Ruffleの初期化に失敗する大きな問題が発生しました。\\n このWebサーバーは正しいMIMEタイプの「.wasm」ファイルを提供していません。\\n サーバーの管理者は、Ruffleのwikiを参照してください。\\nerror-swf-fetch =\\n RuffleがFlash SWFファイルの読み込みに失敗しました。\\n 最も考えられる原因は、SWFファイルが既に存在しない事でRuffleが読み込みに失敗するという問題です。\\n Webサイトの管理者にお問い合わせください。\\nerror-swf-cors =\\n RuffleはSWFファイルの読み込みに失敗しました。\\n CORSポリシーの設定により、fetchへのアクセスがブロックされている可能性があります。\\n サーバー管理者の方は、Ruffleのwikiを参照してください。\\nerror-wasm-cors =\\n Ruffleに必要となる「.wasm」ファイルコンポーネントの読み込みに失敗しました。\\n CORSポリシーによってfetchへのアクセスがブロックされている可能性があります。\\n サーバーの管理者は、Ruffle wikiを参照してください。\\nerror-wasm-invalid =\\n Ruffleの初期化時に重大な問題が発生しました。\\n このページにはRuffleを実行するためのファイルが存在しないか、無効なファイルがあるかもしれません。\\n サーバーの管理者は、Ruffleのwikiを参照してください。\\nerror-wasm-download =\\n Ruffleの初期化時に重大な問題が発生しました。\\n この問題はページを再読み込みする事で大抵は解決するはずなので行なってみてください。\\n もしも解決しない場合は、Webサイトの管理者にお問い合わせください。\\nerror-wasm-disabled-on-edge =\\n Ruffleに必要となる「.wasm」ファイルコンポーネントの読み込みに失敗しました。\\n この問題を解決するにはブラウザーの設定を開き、「プライバシー、検索、サービス」をクリックし、下にスクロールで「Web上のセキュリティを強化する」をオフにしてみてください。\\n これで必要となる「.wasm」ファイルが読み込まれるようになります。\\n それでも問題が解決しない場合、別のブラウザーを使用する必要があるかもしれません。\\nerror-javascript-conflict =\\n Ruffleの初期化時に重大な問題が発生しました。\\n このページではRuffleと競合するJavaScriptコードが使用されているかもしれません。\\n サーバーの管理者は、空白のページでファイルを読み込みし直してみてください。\\nerror-javascript-conflict-outdated = 新しいバージョンのRuffleをアップロードすることで、この問題を回避できる可能性があります。(現在のビルドは古い物です:{ $buildDate })\\nerror-csp-conflict =\\n Ruffleの初期化時に重大な問題が発生しました。\\n このWebサーバーのコンテンツセキュリティポリシーが実行に必要となる「.wasm」コンポーネントの実行を許可していません。\\n サーバーの管理者は、Ruffleのwikiを参照してください。\\nerror-unknown =\\n Flashコンテンツを表示する際にRuffleで問題が発生しました。\\n { $outdated ->\\n [true] 現在使用しているビルドは最新ではないため、サーバー管理者の方は、最新版のRuffleに更新してみてください(現在利用中のビルド: { $buildDate })。\\n *[false] 想定外の問題なので、バグとして報告していただけると嬉しいです!\\n }\\n\",\n \"save-manager.ftl\": \"save-delete-prompt = このセーブファイルを削除してもよろしいですか?\\nsave-reload-prompt =\\n セーブファイルを競合の可能性なく { $action ->\\n [delete] 削除する\\n *[replace] 置き換える\\n } ために、このコンテンツを再読み込みすることを推奨します。続行しますか?\\nsave-download = ダウンロード\\nsave-replace = 置き換え\\nsave-delete = 削除\\nsave-backup-all = すべてのセーブファイルをダウンロード\\n\",\n \"volume-controls.ftl\": \"volume-controls = 音量調節\\nvolume-controls-mute = 消音\\nvolume-controls-volume = 音量\\n\"\n },\n \"ko-KR\": {\n \"context_menu.ftl\": \"context-menu-download-swf = .swf 다운로드\\ncontext-menu-copy-debug-info = 디버그 정보 복사\\ncontext-menu-open-save-manager = 저장 관리자 열기\\ncontext-menu-about-ruffle =\\n { $flavor ->\\n [extension] Ruffle 확장 프로그램 정보 ({ $version })\\n *[other] Ruffle 정보 ({ $version })\\n }\\ncontext-menu-hide = 이 메뉴 숨기기\\ncontext-menu-exit-fullscreen = 전체화면 나가기\\ncontext-menu-enter-fullscreen = 전체화면으로 열기\\ncontext-menu-volume-controls = 음량 조절\\n\",\n \"messages.ftl\": \"message-cant-embed = Ruffle이 이 페이지에 포함된 플래시를 실행할 수 없었습니다. 별도의 탭에서 파일을 열어봄으로서 이 문제를 해결할 수 있습니다.\\npanic-title = 문제가 발생했습니다 :(\\nmore-info = 추가 정보\\nrun-anyway = 그래도 실행하기\\ncontinue = 계속하기\\nreport-bug = 버그 제보\\nupdate-ruffle = Ruffle 업데이트\\nruffle-demo = 웹 데모\\nruffle-desktop = 데스크톱 애플리케이션\\nruffle-wiki = Ruffle 위키 보기\\nenable-hardware-acceleration = 하드웨어 가속이 활성화되지 않은 것 같습니다. Ruffle은 계속 작동하지만 실행 속도가 매우 느릴 수 있습니다. 하드웨어 가속을 활성화하는 방법을 알아보려면 다음 링크를 참고해보세요.\\nview-error-details = 오류 세부 정보 보기\\nopen-in-new-tab = 새 탭에서 열기\\nclick-to-unmute = 클릭하여 음소거 해제\\nerror-file-protocol =\\n Ruffle을 \\\"file:\\\" 프로토콜에서 실행하고 있는 것으로 보입니다.\\n 브라우저에서는 이 프로토콜을 보안상의 이유로 많은 기능을 작동하지 않게 차단하므로 이 방법은 작동하지 않습니다.\\n 대신, 로컬 서버를 직접 열어서 설정하거나 웹 데모 또는 데스크톱 애플리케이션을 사용하시기 바랍니다.\\nerror-javascript-config =\\n 잘못된 자바스크립트 설정으로 인해 Ruffle에서 중대한 문제가 발생했습니다.\\n 만약 당신이 서버 관리자인 경우, 오류 세부사항을 확인하여 어떤 매개변수가 잘못되었는지 알아보세요.\\n 또는 Ruffle 위키를 통해 도움을 받아 볼 수도 있습니다.\\nerror-wasm-not-found =\\n Ruffle이 \\\".wasm\\\" 필수 파일 구성요소를 로드하지 못했습니다.\\n 만약 당신이 서버 관리자라면 파일이 올바르게 업로드되었는지 확인하세요.\\n 문제가 지속된다면 \\\"publicPath\\\" 옵션을 사용해야 할 수도 있습니다: Ruffle 위키를 참조하여 도움을 받으세요.\\nerror-wasm-mime-type =\\n Ruffle이 초기화를 시도하는 동안 중대한 문제가 발생했습니다.\\n 이 웹 서버는 올바른 MIME 유형의 \\\".wasm\\\" 파일을 제공하지 않습니다.\\n 만약 당신이 서버 관리자라면 Ruffle 위키를 통해 도움을 받으세요.\\nerror-swf-fetch =\\n Ruffle이 플래시 SWF 파일을 로드하는 데 실패하였습니다.\\n 이는 주로 파일이 더 이상 존재하지 않아 Ruffle이 로드할 수 있는 것이 없을 가능성이 높습니다.\\n 웹사이트 관리자에게 문의하여 도움을 받아보세요.\\nerror-swf-cors =\\n Ruffle이 플래시 SWF 파일을 로드하는 데 실패하였습니다.\\n CORS 정책에 의해 데이터 가져오기에 대한 액세스가 차단되었을 수 있습니다.\\n 만약 당신이 서버 관리자라면 Ruffle 위키를 참조하여 도움을 받아볼 수 있습니다.\\nerror-wasm-cors =\\n Ruffle이 \\\".wasm\\\" 필수 파일 구성요소를 로드하지 못했습니다.\\n CORS 정책에 의해 데이터 가져오기에 대한 액세스가 차단되었을 수 있습니다.\\n 만약 당신이 서버 관리자라면 Ruffle 위키를 참조하여 도움을 받아볼 수 있습니다.\\nerror-wasm-invalid =\\n Ruffle이 초기화를 시도하는 동안 중대한 문제가 발생했습니다.\\n 이 페이지에 Ruffle을 실행하기 위한 파일이 누락되었거나 잘못된 것 같습니다.\\n 만약 당신이 서버 관리자라면 Ruffle 위키를 참조하여 도움을 받아볼 수 있습니다.\\nerror-wasm-download =\\n Ruffle이 초기화를 시도하는 동안 중대한 문제가 발생했습니다.\\n 이 문제는 때때로 바로 해결될 수 있으므로 페이지를 새로고침하여 다시 시도해보세요.\\n 그래도 문제가 지속된다면, 웹사이트 관리자에게 문의해주세요.\\nerror-wasm-disabled-on-edge =\\n Ruffle이 \\\".wasm\\\" 필수 파일 구성요소를 로드하지 못했습니다.\\n 이를 해결하려면 브라우저 설정에서 \\\"개인 정보, 검색 및 서비스\\\"를 클릭한 후, 하단으로 스크롤하여 \\\"웹에서 보안 강화\\\" 기능을 꺼야 합니다.\\n 이는 필요한 \\\".wasm\\\" 파일을 브라우저에서 로드할 수 있도록 허용합니다.\\n 이 문제가 지속될 경우 다른 브라우저를 사용해야 할 수 있습니다.\\nerror-javascript-conflict =\\n Ruffle이 초기화를 시도하는 동안 중대한 문제가 발생했습니다.\\n 이 페이지에서 사용되는 자바스크립트 코드가 Ruffle과 충돌하는 것으로 보입니다.\\n 만약 당신이 서버 관리자라면 빈 페이지에서 파일을 로드해보세요.\\nerror-javascript-conflict-outdated = 또한 Ruffle의 최신 버전을 업로드하는 것을 시도하여 문제를 우회해볼 수 있습니다. (현재 빌드가 오래되었습니다: { $buildDate }).\\nerror-csp-conflict =\\n Ruffle이 초기화를 시도하는 동안 중대한 문제가 발생했습니다.\\n 이 웹 서버의 CSP(Content Security Policy) 정책이 \\\".wasm\\\" 필수 구성요소를 실행하는 것을 허용하지 않습니다.\\n 만약 당신이 서버 관리자라면 Ruffle 위키를 참조하여 도움을 받아볼 수 있습니다.\\nerror-unknown =\\n Ruffle이 플래시 콘텐츠를 표시하려고 시도하는 동안 중대한 문제가 발생했습니다.\\n { $outdated ->\\n [true] 만약 당신이 서버 관리자라면, Ruffle의 최신 버전을 업로드하여 다시 시도해보세요. (현재 빌드가 오래되었습니다: { $buildDate }).\\n *[false] 이런 현상이 발생해서는 안되므로, 버그를 제보해주신다면 감사하겠습니다!\\n }\\n\",\n \"save-manager.ftl\": \"save-delete-prompt = 정말로 이 세이브 파일을 삭제하시겠습니까?\\nsave-reload-prompt =\\n \\b이 파일을 잠재적인 충돌 없이 { $action ->\\n [delete] 삭제\\n *[replace] 교체\\n }하려면 콘텐츠를 다시 로드해야 합니다. 그래도 계속하시겠습니까?\\nsave-download = 다운로드\\nsave-replace = 교체\\nsave-delete = 삭제\\nsave-backup-all = 모든 저장 파일 다운로드\\n\",\n \"volume-controls.ftl\": \"volume-controls = 음량 조절\\nvolume-controls-mute = 음소거\\nvolume-controls-volume = 음량\\n\"\n },\n \"nl-NL\": {\n \"context_menu.ftl\": \"context-menu-download-swf = .swf downloaden\\ncontext-menu-copy-debug-info = Kopieer debuginformatie\\ncontext-menu-open-save-manager = Open opgeslagen-data-manager\\ncontext-menu-about-ruffle =\\n { $flavor ->\\n [extension] Over Ruffle Uitbreiding ({ $version })\\n *[other] Over Ruffle ({ $version })\\n }\\ncontext-menu-hide = Verberg dit menu\\ncontext-menu-exit-fullscreen = Verlaat volledig scherm\\ncontext-menu-enter-fullscreen = Naar volledig scherm\\n\",\n \"messages.ftl\": \"message-cant-embed =\\n Ruffle kon de Flash-inhoud op de pagina niet draaien.\\n Je kan proberen het bestand in een apart tabblad te openen, om hier omheen te werken.\\npanic-title = Er ging iets mis :(\\nmore-info = Meer informatie\\nrun-anyway = Toch starten\\ncontinue = Doorgaan\\nreport-bug = Bug rapporteren\\nupdate-ruffle = Ruffle updaten\\nruffle-demo = Web Demo\\nruffle-desktop = Desktopapplicatie\\nruffle-wiki = Bekijk de Ruffle Wiki\\nview-error-details = Foutdetails tonen\\nopen-in-new-tab = Openen in een nieuw tabblad\\nclick-to-unmute = Klik om te ontdempen\\nerror-file-protocol =\\n Het lijkt erop dat je Ruffle gebruikt met het \\\"file\\\" protocol.\\n De meeste browsers blokkeren dit om veiligheidsredenen, waardoor het niet werkt.\\n In plaats hiervan raden we aan om een lokale server te draaien, de web demo te gebruiken, of de desktopapplicatie.\\nerror-javascript-config =\\n Ruffle heeft een groot probleem ondervonden vanwege een onjuiste JavaScript configuratie.\\n Als je de serverbeheerder bent, kijk dan naar de foutdetails om te zien wat er verkeerd is.\\n Je kan ook in de Ruffle wiki kijken voor hulp.\\nerror-wasm-not-found =\\n Ruffle kon het vereiste \\\".wasm\\\" bestandscomponent niet laden.\\n Als je de serverbeheerder bent, controleer dan of het bestaand juist is geüpload.\\n Mocht het probleem blijven voordoen, moet je misschien de \\\"publicPath\\\" instelling gebruiken: zie ook de Ruffle wiki voor hulp.\\nerror-wasm-mime-type =\\n Ruffle heeft een groot probleem ondervonden tijdens het initialiseren.\\n Deze webserver serveert \\\".wasm\\\" bestanden niet met het juiste MIME type.\\n Als je de serverbeheerder bent, kijk dan in de Ruffle wiki voor hulp.\\nerror-swf-fetch =\\n Ruffle kon het Flash SWF bestand niet inladen.\\n De meest waarschijnlijke reden is dat het bestand niet langer bestaat, en er dus niets is om in te laden.\\n Probeer contact op te nemen met de websitebeheerder voor hulp.\\nerror-swf-cors =\\n Ruffle kon het Flash SWD bestand niet inladen.\\n Toegang is waarschijnlijk geblokeerd door het CORS beleid.\\n Als je de serverbeheerder bent, kijk dan in de Ruffle wiki voor hulp.\\nerror-wasm-cors =\\n Ruffle kon het vereiste \\\".wasm\\\" bestandscomponent niet laden.\\n Toegang is waarschijnlijk geblokeerd door het CORS beleid.\\n Als je de serverbeheerder bent, kijk dan in de Ruffle wiki voor hulp.\\nerror-wasm-invalid =\\n Ruffle heeft een groot probleem ondervonden tijdens het initialiseren.\\n Het lijkt erop dat de Ruffle bestanden ontbreken of ongeldig zijn.\\n Als je de serverbeheerder bent, kijk dan in de Ruffle wiki voor hulp.\\nerror-wasm-download =\\n Ruffle heeft een groot probleem ondervonden tijdens het initialiseren.\\n Dit lost zichzelf vaak op als je de bladzijde opnieuw inlaadt.\\n Zo niet, neem dan contact op met de websitebeheerder.\\nerror-wasm-disabled-on-edge =\\n Ruffle kon het vereiste \\\".wasm\\\" bestandscomponent niet laden.\\n Om dit op te lossen, ga naar je browserinstellingen, klik op \\\"Privacy, zoeken en diensten\\\", scroll omlaag, en schakel \\\"Verbeter je veiligheid op he web\\\" uit.\\n Dan kan je browser wel de vereiste \\\".wasm\\\" bestanden inladen.\\n Als het probleem zich blijft voordoen, moet je misschien een andere browser gebruiken.\\nerror-javascript-conflict =\\n Ruffle heeft een groot probleem ondervonden tijdens het initialiseren.\\n Het lijkt erop dat deze pagina JavaScript code gebruikt die conflicteert met Ruffle.\\n Als je de serverbeheerder bent, raden we aan om het bestand op een lege pagina te proberen in te laden.\\nerror-javascript-conflict-outdated = Je kan ook proberen een nieuwe versie van Ruffle te installeren, om om het probleem heen te werken (huidige versie is oud: { $buildDate }).\\nerror-csp-conflict =\\n Ruffle heeft een groot probleem ondervonden tijdens het initialiseren.\\n Het CSP-beleid staat niet toe dat het vereiste \\\".wasm\\\" component kan draaien.\\n Als je de serverbeheerder bent, kijk dan in de Ruffle wiki voor hulp.\\nerror-unknown =\\n Ruffle heeft een groot probleem onderbonden tijdens het weergeven van deze Flash-inhoud.\\n { $outdated ->\\n [true] Als je de serverbeheerder bent, upload dan een nieuwe versie van Ruffle (huidige versie is oud: { $buildDate }).\\n *[false] Dit hoort niet te gebeuren, dus we stellen het op prijs als je de fout aan ons rapporteert!\\n }\\n\",\n \"save-manager.ftl\": \"save-delete-prompt = Weet je zeker dat je deze opgeslagen data wilt verwijderen?\\nsave-reload-prompt =\\n De enige manier om deze opgeslagen data te { $action ->\\n [delete] verwijderen\\n *[replace] vervangen\\n } zonder potentiële problemen is door de inhoud opnieuw te laden. Toch doorgaan?\\nsave-download = Downloaden\\nsave-replace = Vervangen\\nsave-delete = Verwijderen\\nsave-backup-all = Download alle opgeslagen data\\n\",\n \"volume-controls.ftl\": \"\"\n },\n \"pl-PL\": {\n \"context_menu.ftl\": \"context-menu-download-swf = Pobierz .swf\\ncontext-menu-copy-debug-info = Kopiuj informacje debugowania\\ncontext-menu-open-save-manager = Otwórz Menadżer Zapisów\\ncontext-menu-about-ruffle =\\n { $flavor ->\\n [extension] O Rozszerzeniu Ruffle ({ $version })\\n *[other] O Ruffle ({ $version })\\n }\\ncontext-menu-hide = Ukryj to menu\\ncontext-menu-exit-fullscreen = Zamknij pełny ekran\\ncontext-menu-enter-fullscreen = Pełny ekran\\ncontext-menu-volume-controls = Sterowanie głośnością\\n\",\n \"messages.ftl\": \"message-cant-embed =\\n Ruffle nie było w stanie uruchomić zawartości Flash w tej stronie.\\n Możesz spróbować otworzyć plik w nowej karcie, aby uniknąć tego problemu.\\npanic-title = Coś poszło nie tak :(\\nmore-info = Więcej informacji\\nrun-anyway = Uruchom mimo tego\\ncontinue = Kontynuuj\\nreport-bug = Zgłoś błąd\\nupdate-ruffle = Zaktualizuj Ruffle\\nruffle-desktop = Aplikacja na komputer\\nruffle-wiki = Zobacz Wiki Ruffle\\nenable-hardware-acceleration = Wygląda na to, że akceleracja sprzętowa nie jest włączona. Chociaż Ruffle może działać, może być nieproporcjonalnie wolna. Możesz dowiedzieć się, jak włączyć akcelerację sprzętową, podążając za tym linkiem.\\nview-error-details = Zobacz szczegóły błędu\\nopen-in-new-tab = Otwórz w nowej karcie\\nclick-to-unmute = Kliknij aby wyłączyć wyciszenie\\nerror-file-protocol =\\n Wygląda na to, że używasz Ruffle w protokole \\\"plik:\\\".\\n To nie działa ponieważ przeglądarka blokuje wiele funkcji przed działaniem ze względów bezpieczeństwa.\\n Zamiast tego zapraszamy do konfiguracji serwera lokalnego lub użycia aplikacji demo lub desktopowej.\\nerror-javascript-config =\\n Ruffle napotkał poważny problem z powodu nieprawidłowej konfiguracji JavaScript.\\n Jeśli jesteś administratorem serwera, prosimy o sprawdzenie szczegółów błędu, aby dowiedzieć się, który parametr jest błędny.\\n Możesz również zapoznać się z wiki Ruffle po pomoc.\\nerror-wasm-not-found =\\n Ruffle nie udało się załadować wymaganego komponentu pliku \\\".wasm\\\".\\n Jeśli jesteś administratorem serwera, upewnij się, że plik został poprawnie przesłany.\\n Jeśli problem będzie się powtarzał, być może będziesz musiał użyć ustawienia \\\"publicPath\\\": zapoznaj się z wiki Ruffle aby uzyskać pomoc.\\nerror-wasm-mime-type =\\n Ruffle napotkał poważny problem podczas próby zainicjowania.\\n Ten serwer internetowy nie obsługuje \\\". asm\\\" pliki z poprawnym typem MIME.\\n Jeśli jesteś administratorem serwera, zapoznaj się z wiki Ruffle aby uzyskać pomoc.\\nerror-swf-fetch =\\n Ruffle nie udało się załadować pliku Flash SWF.\\n Najbardziej prawdopodobnym powodem jest to, że plik już nie istnieje, więc Ruffle nie ma nic do załadowania.\\n Spróbuj skontaktować się z administratorem witryny, aby uzyskać pomoc.\\nerror-swf-cors =\\n Ruffle nie udało się załadować pliku Flash SWF.\\n Dostęp do pobierania został prawdopodobnie zablokowany przez politykę CORS.\\n Jeśli jesteś administratorem serwera, prosimy o pomoc z wiki Ruffle.\\nerror-wasm-cors =\\n Ruffle nie udało się załadować wymaganego komponentu pliku \\\".wasm\\\".\\n Dostęp do pobierania został prawdopodobnie zablokowany przez politykę CORS.\\n Jeśli jesteś administratorem serwera, prosimy o pomoc z wiki Ruffle.\\nerror-wasm-invalid =\\n Ruffle napotkał poważny problem podczas próby zainicjowania.\\n Wygląda na to, że ta strona ma brakujące lub nieprawidłowe pliki do uruchomienia Ruffle.\\n Jeśli jesteś administratorem serwera, prosimy o pomoc z wiki Ruffle.\\nerror-wasm-download =\\n Ruffle napotkał poważny problem podczas próby zainicjowania.\\n Może to często rozwiązać siebie, więc możesz spróbować odświeżyć stronę.\\n W przeciwnym razie skontaktuj się z administratorem witryny.\\nerror-wasm-disabled-on-edge =\\n Ruffle nie udało się załadować wymaganego komponentu pliku \\\".wasm\\\".\\n Aby to naprawić, spróbuj otworzyć ustawienia przeglądarki, klikając \\\"Prywatność, wyszukiwanie i usługi\\\", przewijając w dół i wyłączając \\\"Zwiększ bezpieczeństwo w sieci\\\".\\n Pozwoli to przeglądarce załadować wymagane pliki \\\".wasm\\\".\\n Jeśli problem będzie się powtarzał, być może będziesz musiał użyć innej przeglądarki.\\nerror-javascript-conflict =\\n Ruffle napotkał poważny problem podczas próby zainicjowania.\\n Wygląda na to, że ta strona używa kodu JavaScript, który koliduje z Ruffle.\\n Jeśli jesteś administratorem serwera, zapraszamy Cię do ładowania pliku na pustej stronie.\\nerror-javascript-conflict-outdated = Możesz również spróbować przesłać nowszą wersję Ruffle, która może ominąć problem (obecna wersja jest przestarzała: { $buildDate }).\\nerror-csp-conflict =\\n Ruffle napotkał poważny problem podczas próby zainicjowania.\\n Polityka bezpieczeństwa zawartości tego serwera nie zezwala na wymagany \\\". wasm\\\" komponent do uruchomienia.\\n Jeśli jesteś administratorem serwera, zapoznaj się z wiki Ruffle po pomoc.\\nerror-unknown =\\n Ruffle napotkał poważny problem podczas próby wyświetlenia tej zawartości Flash.\\n { $outdated ->\\n [true] Jeśli jesteś administratorem serwera, spróbuj przesłać nowszą wersję Ruffle (obecna wersja jest przestarzała: { $buildDate }).\\n *[false] To nie powinno się wydarzyć, więc bylibyśmy wdzięczni, gdybyś mógł zgłosić błąd!\\n }\\n\",\n \"save-manager.ftl\": \"save-delete-prompt = Czy na pewno chcesz skasować ten plik zapisu?\\nsave-reload-prompt =\\n Jedyną opcją, aby { $action ->\\n [delete] usunąć\\n *[replace] zamienić\\n } ten plik zapisu bez potencjalnych konfliktów jest przeładowanie zawartości. Czy chcesz kontynuować?\\nsave-download = Pobierz\\nsave-replace = Zamień\\nsave-delete = Usuń\\nsave-backup-all = Pobierz wszystkie pliki zapisu\\n\",\n \"volume-controls.ftl\": \"volume-controls = Sterowanie głośnością\\nvolume-controls-mute = Wycisz\\nvolume-controls-volume = Głośność\\n\"\n },\n \"pt-BR\": {\n \"context_menu.ftl\": \"context-menu-download-swf = Baixar .swf\\ncontext-menu-copy-debug-info = Copiar informação de depuração\\ncontext-menu-open-save-manager = Abrir o Gerenciador de Salvamento\\ncontext-menu-about-ruffle =\\n { $flavor ->\\n [extension] Sobre a extensão do Ruffle ({ $version })\\n *[other] Sobre o Ruffle ({ $version })\\n }\\ncontext-menu-hide = Esconder este menu\\ncontext-menu-exit-fullscreen = Sair da tela cheia\\ncontext-menu-enter-fullscreen = Entrar em tela cheia\\n\",\n \"messages.ftl\": \"message-cant-embed =\\n Ruffle não conseguiu executar o Flash incorporado nesta página.\\n Você pode tentar abrir o arquivo em uma guia separada para evitar esse problema.\\npanic-title = Algo deu errado :(\\nmore-info = Mais informação\\nrun-anyway = Executar mesmo assim\\ncontinue = Continuar\\nreport-bug = Reportar Bug\\nupdate-ruffle = Atualizar Ruffle\\nruffle-demo = Demo Web\\nruffle-desktop = Aplicativo de Desktop\\nruffle-wiki = Ver Wiki do Ruffle\\nview-error-details = Ver detalhes do erro\\nopen-in-new-tab = Abrir em uma nova guia\\nclick-to-unmute = Clique para ativar o som\\nerror-file-protocol =\\n Parece que você está executando o Ruffle no protocolo \\\"file:\\\".\\n Isto não funciona como navegadores bloqueiam muitos recursos de funcionar por razões de segurança.\\n Ao invés disso, convidamos você a configurar um servidor local ou a usar a demonstração da web, ou o aplicativo de desktop.\\nerror-javascript-config =\\n O Ruffle encontrou um grande problema devido a uma configuração incorreta do JavaScript.\\n Se você for o administrador do servidor, convidamos você a verificar os detalhes do erro para descobrir qual parâmetro está com falha.\\n Você também pode consultar o wiki do Ruffle para obter ajuda.\\nerror-wasm-not-found =\\n Ruffle falhou ao carregar o componente de arquivo \\\".wasm\\\" necessário.\\n Se você é o administrador do servidor, por favor, certifique-se de que o arquivo foi carregado corretamente.\\n Se o problema persistir, você pode precisar usar a configuração \\\"publicPath\\\": por favor consulte a wiki do Ruffle para obter ajuda.\\nerror-wasm-mime-type =\\n Ruffle encontrou um grande problema ao tentar inicializar.\\n Este servidor de web não está servindo \\\".wasm\\\" arquivos com o tipo MIME correto.\\n Se você é o administrador do servidor, por favor consulte o wiki do Ruffle para obter ajuda.\\nerror-swf-fetch =\\n Ruffle falhou ao carregar o arquivo Flash SWF.\\n A razão provável é que o arquivo não existe mais, então não há nada para o Ruffle carregar.\\n Tente contatar o administrador do site para obter ajuda.\\nerror-swf-cors =\\n Ruffle falhou ao carregar o arquivo Flash SWF.\\n O acesso para fetch provavelmente foi bloqueado pela política CORS.\\n Se você for o administrador do servidor, consulte o wiki do Ruffle para obter ajuda.\\nerror-wasm-cors =\\n Ruffle falhou ao carregar o componente de arquivo \\\".wasm\\\" necessário.\\n O acesso para fetch foi provavelmente bloqueado pela política CORS.\\n Se você é o administrador do servidor, por favor consulte a wiki do Ruffle para obter ajuda.\\nerror-wasm-invalid =\\n Ruffle encontrou um grande problema ao tentar inicializar.\\n Parece que esta página tem arquivos ausentes ou inválidos para executar o Ruffle.\\n Se você for o administrador do servidor, consulte o wiki do Ruffle para obter ajuda.\\nerror-wasm-download =\\n O Ruffle encontrou um grande problema ao tentar inicializar.\\n Muitas vezes isso pode se resolver sozinho, então você pode tentar recarregar a página.\\n Caso contrário, contate o administrador do site.\\nerror-wasm-disabled-on-edge =\\n O Ruffle falhou ao carregar o componente de arquivo \\\".wasm\\\" necessário.\\n Para corrigir isso, tente abrir configurações do seu navegador, clicando em \\\"Privacidade, pesquisa e serviços\\\", rolando para baixo e desativando \\\"Melhore sua segurança na web\\\".\\n Isso permitirá que seu navegador carregue os arquivos \\\".wasm\\\" necessários.\\n Se o problema persistir, talvez seja necessário usar um navegador diferente.\\nerror-javascript-conflict =\\n Ruffle encontrou um grande problema ao tentar inicializar.\\n Parece que esta página usa código JavaScript que entra em conflito com o Ruffle.\\n Se você for o administrador do servidor, convidamos você a tentar carregar o arquivo em uma página em branco.\\nerror-javascript-conflict-outdated = Você também pode tentar fazer o upload de uma versão mais recente do Ruffle que pode contornar o problema (a compilação atual está desatualizada: { $buildDate }).\\nerror-csp-conflict =\\n Ruffle encontrou um grande problema ao tentar inicializar.\\n A política de segurança de conteúdo deste servidor da web não permite a execução do componente \\\".wasm\\\" necessário.\\n Se você for o administrador do servidor, consulte o wiki do Ruffle para obter ajuda.\\nerror-unknown =\\n O Ruffle encontrou um grande problema enquanto tentava exibir este conteúdo em Flash.\\n { $outdated ->\\n [true] Se você é o administrador do servidor, por favor tente fazer o upload de uma versão mais recente do Ruffle (a compilação atual está desatualizada: { $buildDate }).\\n *[false] Isso não deveria acontecer, então apreciaríamos muito se você pudesse arquivar um bug!\\n }\\n\",\n \"save-manager.ftl\": \"save-delete-prompt = Tem certeza que deseja excluir este arquivo de salvamento?\\nsave-reload-prompt =\\n A única maneira de { $action ->\\n [delete] excluir\\n *[replace] substituir\\n } este arquivo sem potencial conflito é recarregar este conteúdo. Deseja continuar mesmo assim?\\nsave-download = Baixar\\nsave-replace = Substituir\\nsave-delete = Excluir\\nsave-backup-all = Baixar todos os arquivos de salvamento\\n\",\n \"volume-controls.ftl\": \"\"\n },\n \"pt-PT\": {\n \"context_menu.ftl\": \"context-menu-download-swf = Descarga.swf\\ncontext-menu-copy-debug-info = Copiar informações de depuração\\ncontext-menu-open-save-manager = Abrir Gestor de Gravações\\ncontext-menu-about-ruffle =\\n { $flavor ->\\n [extension] Sobre a extensão do Ruffle ({ $version })\\n *[other] Sobre o Ruffle ({ $version })\\n }\\ncontext-menu-hide = Esconder este menu\\ncontext-menu-exit-fullscreen = Fechar Ecrã Inteiro\\ncontext-menu-enter-fullscreen = Abrir Ecrã Inteiro\\ncontext-menu-volume-controls = Controlos de volume\\n\",\n \"messages.ftl\": \"message-cant-embed =\\n O Ruffle não conseguiu abrir o Flash integrado nesta página.\\n Para tentar resolver o problema, pode abrir o ficheiro num novo separador.\\npanic-title = Algo correu mal :(\\nmore-info = Mais informações\\nrun-anyway = Executar mesmo assim\\ncontinue = Continuar\\nreport-bug = Reportar falha\\nupdate-ruffle = Atualizar o Ruffle\\nruffle-demo = Demonstração na Web\\nruffle-desktop = Aplicação para Desktop\\nruffle-wiki = Ver a Wiki do Ruffle\\nenable-hardware-acceleration = Parece que a aceleração de hardware não está ativada. Mesmo que o Ruffle funcione, pode estar excessivamente lento. Descubra como ativar a aceleração de hardware seguindo este link.\\nview-error-details = Ver detalhes do erro\\nopen-in-new-tab = Abrir num novo separador\\nclick-to-unmute = Clique para ativar o som\\nerror-file-protocol =\\n Parece que executa o Ruffle no protocolo \\\"file:\\\".\\n Isto não funciona, já que os navegadores bloqueiam muitas funcionalidades por razões de segurança.\\n Em vez disto, recomendados configurar um servidor local ou usar a demonstração na web, ou a aplicação para desktop.\\nerror-javascript-config =\\n O Ruffle encontrou um problema maior devido a uma configuração de JavaScript incorreta.\\n Se é o administrador do servidor, convidamo-lo a verificar os detalhes do erro para descobrir o parâmetro problemático.\\n Pode ainda consultar a wiki do Ruffle para obter ajuda.\\nerror-wasm-not-found =\\n O Ruffle falhou ao carregar o componente de ficheiro \\\".wasm\\\" necessário.\\n Se é o administrador do servidor, por favor certifique-se de que o ficheiro foi devidamente carregado.\\n Se o problema persistir, poderá querer usar a configuração \\\"publicPath\\\": consulte a wiki do Ruffle para obter ajuda.\\nerror-wasm-mime-type =\\n O Ruffle encontrou um problema maior ao tentar inicializar.\\n Este servidor de web não suporta ficheiros \\\".wasm\\\" com o tipo MIME correto.\\n Se é o administrador do servidor, por favor consulte o wiki do Ruffle para obter ajuda.\\nerror-swf-fetch =\\n Ruffle falhou ao carregar o arquivo SWF do Flash\\n A razão mais provável é que o arquivo não existe mais, então não há nada para o Ruffle carregar.\\n Tente contactar o administrador do site para obter ajuda.\\nerror-swf-cors =\\n O Ruffle falhou ao carregar o ficheiro Flash SWF.\\n Acesso a buscar foi provavelmente bloqueado pela política de CORS.\\n Se é o administrador do servidor, por favor consulte a wiki do Ruffle para obter ajuda.\\nerror-wasm-cors =\\n O Ruffle falhou ao carregar o componente de ficheiro \\\".wasm\\\" necessário.\\n O acesso a buscar foi provavelmente bloqueado pela política CORS.\\n Se é o administrador do servidor, por favor consulte a wiki do Ruffle para obter ajuda.\\nerror-wasm-invalid =\\n Ruffle encontrou um grande problema ao tentar inicializar.\\n Parece que esta página está ausente ou arquivos inválidos para executar o Ruffle.\\n Se você é o administrador do servidor, por favor consulte a wiki do Ruffle para obter ajuda.\\nerror-wasm-download =\\n O Ruffle encontrou um problema maior ao tentar inicializar.\\n Isto frequentemente resolve-se sozinho, portanto experimente recarregar a página.\\n Caso contrário, por favor contacte o administrador do site.\\nerror-wasm-disabled-on-edge =\\n O Ruffle falhou ao carregar o componente de ficheiro \\\".wasm\\\" necessário.\\n Para corrigir isso, tente abrir as opções do seu navegador, clicando em \\\"Privacidade, pesquisa e serviços\\\", rolando para baixo e desativando \\\"Melhore a sua segurança na web\\\".\\n Isto permitirá ao seu navegador carregar os ficheiros \\\".wasm\\\" necessários.\\n Se o problema persistir, talvez seja necessário usar um navegador diferente.\\nerror-javascript-conflict =\\n O Ruffle encontrou um problema maior ao tentar inicializar.\\n Parece que esta página usa código JavaScript que entra em conflito com o Ruffle.\\n Se é o administrador do servidor, convidamo-lo a tentar carregar o ficheiro em numa página em branco.\\nerror-javascript-conflict-outdated = Pode ainda tentar carregar uma versão mais recente do Ruffle que talvez contorne o problema (a compilação atual está desatualizada: { $buildDate }).\\nerror-csp-conflict =\\n O Ruffle encontrou um problema maior ao tentar inicializar.\\n A Política de Segurança de Conteúdo deste servidor não permite que o componente \\\".wasm\\\" necessário seja executado.\\n Se é o administrador do servidor, por favor consulte o wiki do Ruffle para obter ajuda.\\nerror-unknown =\\n O Ruffle encontrou um problema maior enquanto tentava mostrar este conteúdo em Flash.\\n { $outdated ->\\n [true] Se é o administrador do servidor, por favor tente carregar uma versão mais recente do Ruffle (a compilação atual está desatualizada: { $buildDate }).\\n *[false] Não era suposto isto ter acontecido, por isso agradeceríamos muito se pudesse reportar a falha!\\n }\\n\",\n \"save-manager.ftl\": \"save-delete-prompt = Tem a certeza de que quer apagar esta gravação?\\nsave-reload-prompt =\\n A única forma de { $action ->\\n [delete] apagar\\n *[replace] substituir\\n } esta gravação sem um potencial conflito é recarregar este conteúdo. Deseja continuar mesmo assim?\\nsave-download = Descarregar\\nsave-replace = Substituir\\nsave-delete = Apagar\\nsave-backup-all = Descarregar todas as gravações\\n\",\n \"volume-controls.ftl\": \"volume-controls = Controlos de volume\\nvolume-controls-mute = Silenciar\\nvolume-controls-volume = Volume\\n\"\n },\n \"ro-RO\": {\n \"context_menu.ftl\": \"context-menu-download-swf = Descarcă .swf\\ncontext-menu-copy-debug-info = Copiază informațiile de depanare\\ncontext-menu-open-save-manager = Deschide managerul de salvări\\ncontext-menu-about-ruffle =\\n { $flavor ->\\n [extension] Despre extensia Ruffle ({ $version })\\n *[other] Despre Ruffle ({ $version })\\n }\\ncontext-menu-hide = Ascunde acest meniu\\ncontext-menu-exit-fullscreen = Ieși din ecranul complet\\ncontext-menu-enter-fullscreen = Intră în ecran complet\\n\",\n \"messages.ftl\": \"message-cant-embed =\\n Ruffle nu a putut rula Flash încorporat în această pagină.\\n Puteți încerca să deschideți fișierul într-o filă separată, pentru a evita această problemă.\\npanic-title = Ceva a mers prost :(\\nmore-info = Mai multe informații\\nrun-anyway = Rulează oricum\\ncontinue = Continuă\\nreport-bug = Raportează un bug\\nupdate-ruffle = Actualizează Ruffle\\nruffle-demo = Demo web\\nruffle-desktop = Aplicație desktop\\nruffle-wiki = Vezi wikiul Ruffle\\nview-error-details = Vezi detaliile erorii\\nopen-in-new-tab = Deschide într-o filă nouă\\nclick-to-unmute = Dă click pentru a dezmuți\\nerror-file-protocol =\\n Se pare că rulezi Ruffle pe protocolul „file:”.\\n Acesta nu funcționează, deoarece browserele blochează funcționarea multor funcții din motive de securitate.\\n În schimb, te invităm să configurezi un server local sau să folosești fie demoul web, fie aplicația desktop.\\nerror-javascript-config =\\n Ruffle a întâmpinat o problemă majoră din cauza unei configurări incorecte a JavaScript.\\n Dacă sunteți administratorul serverului, vă invităm să verificați detaliile de eroare pentru a afla care parametru este defect.\\n Puteți consulta și Ruffle wiki pentru ajutor.\\nerror-wasm-not-found =\\n Ruffle a eșuat la încărcarea componentei de fișier \\\".wasm\\\".\\n Dacă sunteți administratorul serverului, vă rugăm să vă asigurați că fișierul a fost încărcat corect.\\n Dacă problema persistă, poate fi necesar să utilizaţi setarea \\\"publicPath\\\": vă rugăm să consultaţi Ruffle wiki pentru ajutor.\\nerror-wasm-mime-type =\\n Ruffle a întâmpinat o problemă majoră în timp ce se încerca inițializarea.\\n Acest server web nu servește \\\". asm\\\" fișiere cu tipul corect MIME.\\n Dacă sunteți administrator de server, vă rugăm să consultați Ruffle wiki pentru ajutor.\\nerror-swf-fetch =\\n Ruffle a eșuat la încărcarea fișierului Flash SWF.\\n Motivul cel mai probabil este că fişierul nu mai există, deci nu există nimic pentru Ruffle să se încarce.\\n Încercați să contactați administratorul site-ului web pentru ajutor.\\nerror-swf-cors =\\n Ruffle a eșuat la încărcarea fișierului Flash SWF.\\n Accesul la preluare a fost probabil blocat de politica CORS.\\n Dacă sunteţi administratorul serverului, vă rugăm să consultaţi Ruffle wiki pentru ajutor.\\nerror-wasm-cors =\\n Ruffle a eșuat în încărcarea componentei de fișier \\\".wasm\\\".\\n Accesul la preluare a fost probabil blocat de politica CORS.\\n Dacă sunteţi administratorul serverului, vă rugăm să consultaţi Ruffle wiki pentru ajutor.\\nerror-wasm-invalid =\\n Ruffle a întâmpinat o problemă majoră în timp ce se încearcă inițializarea.\\n Se pare că această pagină are fișiere lipsă sau invalide pentru rularea Ruffle.\\n Dacă sunteţi administratorul serverului, vă rugăm să consultaţi Ruffle wiki pentru ajutor.\\nerror-wasm-download =\\n Ruffle a întâmpinat o problemă majoră în timp ce încerca să inițializeze.\\n Acest lucru se poate rezolva adesea, astfel încât puteţi încerca să reîncărcaţi pagina.\\n Altfel, vă rugăm să contactaţi administratorul site-ului.\\nerror-wasm-disabled-on-edge =\\n Ruffle nu a putut încărca componenta de fișier \\\".wasm\\\".\\n Pentru a remedia acest lucru, încercați să deschideți setările browser-ului dvs., apăsând pe \\\"Confidențialitate, căutare și servicii\\\", derulând în jos și închizând \\\"Îmbunătățește-ți securitatea pe web\\\".\\n Acest lucru va permite browser-ului să încarce fișierele \\\".wasm\\\" necesare.\\n Dacă problema persistă, ar putea fi necesar să folosiți un browser diferit.\\nerror-javascript-conflict =\\n Ruffle a întâmpinat o problemă majoră în timp ce încerca să inițializeze.\\n Se pare că această pagină folosește codul JavaScript care intră în conflict cu Ruffle.\\n Dacă sunteţi administratorul serverului, vă invităm să încărcaţi fişierul pe o pagină goală.\\nerror-javascript-conflict-outdated = De asemenea, poți încerca să încarci o versiune mai recentă de Ruffle care poate ocoli problema (versiunea curentă este expirată: { $buildDate }).\\nerror-csp-conflict =\\n Ruffle a întâmpinat o problemă majoră în timp ce se încerca inițializarea.\\n Politica de securitate a conținutului acestui server web nu permite serviciul necesar\\\". asm\\\" componentă pentru a rula.\\n Dacă sunteți administratorul de server, consultați Ruffle wiki pentru ajutor.\\nerror-unknown =\\n Ruffle a întâmpinat o problemă majoră în timp ce încerca să afișeze acest conținut Flash.\\n { $outdated ->\\n [true] Dacă ești administratorul serverului, te rugăm să încerci să încarci o versiune mai recentă de Ruffle (versiunea actuală este depăşită: { $buildDate }).\\n *[false] Acest lucru nu ar trebui să se întâmple, așa că am aprecia foarte mult dacă ai putea trimite un bug!\\n }\\n\",\n \"save-manager.ftl\": \"save-delete-prompt = Sigur vrei să ștergi acest fișier de salvare?\\nsave-reload-prompt =\\n Singura cale de a { $action ->\\n [delete] șterge\\n *[replace] înlocui\\n } acest fișier de salvare fără un conflict potențial este de a reîncărca acest conținut. Dorești să continui oricum?\\nsave-download = Descarcă\\nsave-replace = Înlocuiește\\nsave-delete = Șterge\\n\",\n \"volume-controls.ftl\": \"volume-controls = Comenzi pentru volum\\n\"\n },\n \"ru-RU\": {\n \"context_menu.ftl\": \"context-menu-download-swf = Скачать .swf\\ncontext-menu-copy-debug-info = Копировать отладочную информацию\\ncontext-menu-open-save-manager = Менеджер сохранений\\ncontext-menu-about-ruffle =\\n { $flavor ->\\n [extension] О расширении Ruffle ({ $version })\\n *[other] О Ruffle ({ $version })\\n }\\ncontext-menu-hide = Скрыть это меню\\ncontext-menu-exit-fullscreen = Оконный режим\\ncontext-menu-enter-fullscreen = Полноэкранный режим\\ncontext-menu-volume-controls = Громкость\\n\",\n \"messages.ftl\": \"message-cant-embed =\\n Ruffle не смог запустить Flash, используемый на этой странице.\\n Чтобы обойти эту проблему, вы можете попробовать открыть файл в отдельной вкладке.\\npanic-title = Что-то пошло не так :(\\nmore-info = Подробнее\\nrun-anyway = Всё равно запустить\\ncontinue = Продолжить\\nreport-bug = Сообщить об ошибке\\nupdate-ruffle = Обновить Ruffle\\nruffle-demo = Веб-демо\\nruffle-desktop = Настольное приложение\\nruffle-wiki = Открыть вики Ruffle\\nenable-hardware-acceleration = Похоже, что аппаратное ускорение не включено. Хоть Ruffle и будет работать, он может быть неоправданно медленным. О том, как включить аппаратное ускорение, можно узнать, перейдя по ссылке.\\nview-error-details = Сведения об ошибке\\nopen-in-new-tab = Открыть в новой вкладке\\nclick-to-unmute = Включить звук\\nerror-file-protocol =\\n Похоже, что вы запускаете Ruffle по протоколу \\\"file:\\\".\\n Это не работает, поскольку браузеры блокируют работу многих функций по соображениям безопасности.\\n Вместо этого мы предлагаем вам использовать настольное приложение, веб-демо или настроить локальный сервер.\\nerror-javascript-config =\\n Возникла серьёзная ошибка из-за неправильной конфигурации JavaScript.\\n Если вы являетесь администратором сервера, мы предлагаем вам проверить детали ошибки, чтобы выяснить, какой параметр дал сбой.\\n Вы также можете обратиться за помощью к вики Ruffle.\\nerror-wasm-not-found =\\n Ruffle не удалось запустить необходимый компонент файла \\\".wasm\\\".\\n Если вы администратор сервера, пожалуйста, убедитесь, что файл был загружен правильно.\\n Если проблема не устраняется, вам может потребоваться использовать настройку \\\"publicPath\\\": обратитесь к вики Ruffle.\\nerror-wasm-mime-type =\\n Ruffle столкнулся с серьёзной проблемой во время инициализации.\\n Этот веб-сервер не предоставляет файлы \\\".wasm\\\" с правильным типом MIME.\\n Если вы администратор сервера, обратитесь за помощью к вики Ruffle.\\nerror-swf-fetch =\\n Ruffle не удалось запустить SWF-файл Flash.\\n Вероятнее всего, файл больше не существует, поэтому Ruffle нечего загружать.\\n Попробуйте связаться с администратором сайта для получения помощи.\\nerror-swf-cors =\\n Ruffle не удалось запустить SWF-файл Flash.\\n Скорее всего, доступ к файлу был заблокирован политикой CORS.\\n Если вы администратор сервера, обратитесь за помощью к вики Ruffle.\\nerror-wasm-cors =\\n Ruffle не удалось загрузить необходимый компонент файла \\\".wasm\\\".\\n Скорее всего, доступ к файлу был заблокирован политикой CORS.\\n Если вы администратор сервера, обратитесь за помощью к вики Ruffle.\\nerror-wasm-invalid =\\n Ruffle столкнулся с серьёзной проблемой во время инициализации.\\n Похоже, что на этой странице отсутствуют файлы для запуска Ruffle или они недействительны.\\n Если вы администратор сервера, обратитесь за помощью к вики Ruffle.\\nerror-wasm-download =\\n Ruffle столкнулся с серьёзной проблемой во время инициализации.\\n Чаще всего эта проблема устраняется сама собою, поэтому вы можете просто перезагрузить страницу.\\n Если ошибка продолжает появляться, свяжитесь с администратором сайта.\\nerror-wasm-disabled-on-edge =\\n Ruffle не удалось загрузить необходимый компонент файла \\\".wasm\\\".\\n Чтобы исправить эту ошибку, попробуйте отключить в настройках браузера дополнительную конфиденциальность. Это позволит браузеру загрузить необходимые WASM-файлы.\\n Если проблема осталась, вам может потребоваться другой браузер.\\nerror-javascript-conflict =\\n Ruffle столкнулся с серьёзной проблемой во время инициализации.\\n Похоже, что эта страница использует конфликтующий с Ruffle код JavaScript.\\n Если вы являетесь администратором сервера, мы предлагаем вам попробовать запустить файл на пустой странице.\\nerror-javascript-conflict-outdated = Вы также можете попробовать загрузить последнюю версию Ruffle, которая может обойти проблему (текущая версия устарела: { $buildDate }).\\nerror-csp-conflict =\\n Ruffle столкнулся с серьёзной проблемой во время инициализации.\\n Политика безопасности содержимого этого веб-сервера не позволяет использовать требуемые компоненты для запуска \\\".wasm\\\".\\n Если вы являетесь администратором сервера, обратитесь за помощью к вики Ruffle.\\nerror-unknown =\\n Ruffle столкнулся с серьёзной проблемой при попытке отобразить этот Flash-контент.\\n { $outdated ->\\n [true] Если вы администратор сервера, попробуйте загрузить более новую версию Ruffle (текущая версия устарела: { $buildDate }).\\n *[false] Этого не должно происходить, поэтому мы будем очень признательны, если вы сообщите нам об ошибке!\\n }\\n\",\n \"save-manager.ftl\": \"save-delete-prompt = Удалить этот файл сохранения?\\nsave-reload-prompt =\\n Единственный способ { $action ->\\n [delete] удалить\\n *[replace] заменить\\n } этот файл сохранения без потенциального конфликта перезапустить запущенный контент. Всё равно продолжить?\\nsave-download = Скачать\\nsave-replace = Заменить\\nsave-delete = Удалить\\nsave-backup-all = Скачать все сохранения\\n\",\n \"volume-controls.ftl\": \"volume-controls = Регулировка громкости\\nvolume-controls-mute = Без звука\\nvolume-controls-volume = Громкость\\n\"\n },\n \"sk-SK\": {\n \"context_menu.ftl\": \"context-menu-download-swf = Stiahnuť .swf\\ncontext-menu-copy-debug-info = Skopírovať debug info\\ncontext-menu-open-save-manager = Otvoriť správcu uložení\\ncontext-menu-about-ruffle =\\n { $flavor ->\\n [extension] O Ruffle rozšírení ({ $version })\\n *[other] O Ruffle ({ $version })\\n }\\ncontext-menu-hide = Skryť menu\\ncontext-menu-exit-fullscreen = Ukončiť režim celej obrazovky\\ncontext-menu-enter-fullscreen = Prejsť do režimu celej obrazovky\\ncontext-menu-volume-controls = Ovládanie hlasitosti\\n\",\n \"messages.ftl\": \"message-cant-embed =\\n Ruffle nemohol spustiť Flash vložený na tejto stránke.\\n Môžete sa pokúsiť otvoriť súbor na samostatnej karte, aby ste sa vyhli tomuto problému.\\npanic-title = Niečo sa pokazilo :(\\nmore-info = Viac informácií\\nrun-anyway = Spustiť aj tak\\ncontinue = Pokračovať\\nreport-bug = Nahlásiť chybu\\nupdate-ruffle = Aktualizovať Ruffle\\nruffle-demo = Web Demo\\nruffle-desktop = Desktopová aplikácia\\nruffle-wiki = Zobraziť Ruffle Wiki\\nenable-hardware-acceleration = Zdá sa, že hardvérová akcelerácia nie je povolená. Aj keď Ruffle funguje správne, môže byť neprimerane pomalý. Ako povoliť hardvérovú akceleráciu zistíte na tomto odkaze.\\nview-error-details = Zobraziť podrobnosti o chybe\\nopen-in-new-tab = Otvoriť na novej karte\\nclick-to-unmute = Kliknutím zapnete zvuk\\nerror-file-protocol =\\n Zdá sa, že používate Ruffle na protokole \\\"file:\\\".\\n To nie je možné, pretože prehliadače blokujú fungovanie mnohých funkcií z bezpečnostných dôvodov.\\n Namiesto toho vám odporúčame nastaviť lokálny server alebo použiť web demo či desktopovú aplikáciu.\\nerror-javascript-config =\\n Ruffle narazil na problém v dôsledku nesprávnej konfigurácie JavaScriptu.\\n Ak ste správcom servera, odporúčame vám skontrolovať podrobnosti o chybe, aby ste zistili, ktorý parameter je chybný.\\n Pomoc môžete získať aj na wiki Ruffle.\\nerror-wasm-not-found =\\n Ruffle sa nepodarilo načítať požadovaný komponent súboru „.wasm“.\\n Ak ste správcom servera, skontrolujte, či bol súbor správne nahraný.\\n Ak problém pretrváva, možno budete musieť použiť nastavenie „publicPath“: pomoc nájdete na wiki Ruffle.\\nerror-wasm-mime-type =\\n Ruffle narazil na problém pri pokuse o inicializáciu.\\n Tento webový server neposkytuje súbory „.wasm“ so správnym typom MIME.\\n Ak ste správcom servera, pomoc nájdete na Ruffle wiki.\\nerror-swf-fetch =\\n Ruffle sa nepodarilo načítať SWF súbor Flash.\\n Najpravdepodobnejším dôvodom je, že súbor už neexistuje, takže Ruffle nemá čo načítať.\\n Skúste požiadať o pomoc správcu webovej lokality.\\nerror-swf-cors =\\n Ruffle sa nepodarilo načítať SWF súbor Flash.\\n Prístup k načítaniu bol pravdepodobne zablokovaný politikou CORS.\\n Ak ste správcom servera, pomoc nájdete na Ruffle wiki.\\nerror-wasm-cors =\\n Ruffle sa nepodarilo načítať požadovaný komponent súboru „.wasm“.\\n Prístup k načítaniu bol pravdepodobne zablokovaný politikou CORS.\\n Ak ste správcom servera, pomoc nájdete na Ruffle wiki.\\nerror-wasm-invalid =\\n Ruffle narazil na problém pri pokuse o inicializáciu.\\n Zdá sa, že na tejto stránke chýbajú alebo sú neplatné súbory na spustenie Ruffle.\\n Ak ste správcom servera, pomoc nájdete na Ruffle wiki.\\nerror-wasm-download =\\n Ruffle narazil na problém pri pokuse o inicializáciu.\\n Problém sa môže vyriešiť aj sám, takže môžete skúsiť stránku načítať znova.\\n V opačnom prípade kontaktujte administrátora stránky.\\nerror-wasm-disabled-on-edge =\\n Ruffle sa nepodarilo načítať požadovaný komponent súboru „.wasm“.\\n Ak chcete tento problém vyriešiť, skúste otvoriť nastavenia prehliadača, kliknite na položku „Ochrana osobných údajov, vyhľadávanie a služby“, prejdite nadol a vypnite možnosť „Zvýšte svoju bezpečnosť na webe“.\\n Vášmu prehliadaču to umožní načítať požadované súbory „.wasm“.\\n Ak problém pretrváva, možno budete musieť použiť iný prehliadač.\\nerror-javascript-conflict =\\n Ruffle narazil na problém pri pokuse o inicializáciu.\\n Zdá sa, že táto stránka používa kód JavaScript, ktorý je v konflikte s Ruffle.\\n Ak ste správcom servera, odporúčame vám skúsiť načítať súbor na prázdnu stránku.\\nerror-javascript-conflict-outdated = Môžete sa tiež pokúsiť nahrať novšiu verziu Ruffle, ktorá môže daný problém vyriešiť (aktuálny build je zastaraný: { $buildDate }).\\nerror-csp-conflict =\\n Ruffle narazil na problém pri pokuse o inicializáciu.\\n Zásady zabezpečenia obsahu tohto webového servera nepovoľujú spustenie požadovaného komponentu „.wasm“.\\n Ak ste správcom servera, pomoc nájdete na Ruffle wiki.\\nerror-unknown =\\n Ruffle narazil na problém pri pokuse zobraziť tento Flash obsah.\\n { $outdated ->\\n [true] Ak ste správcom servera, skúste nahrať novšiu verziu Ruffle (aktuálny build je zastaraný: { $buildDate }).\\n *[false] Toto by sa nemalo stať, takže by sme naozaj ocenili, keby ste mohli nahlásiť chybu!\\n }\\n\",\n \"save-manager.ftl\": \"save-delete-prompt = Naozaj chcete odstrániť tento súbor s uloženými pozíciami?\\nsave-reload-prompt =\\n Jediný spôsob, ako { $action ->\\n [delete] vymazať\\n *[replace] nahradiť\\n } tento súbor s uloženými pozíciami bez potenciálneho konfliktu je opätovné načítanie tohto obsahu. Chcete napriek tomu pokračovať?\\nsave-download = Stiahnuť\\nsave-replace = Nahradiť\\nsave-delete = Vymazať\\nsave-backup-all = Stiahnuť všetky súbory s uloženými pozíciami\\n\",\n \"volume-controls.ftl\": \"volume-controls = Ovládanie hlasitosti\\nvolume-controls-mute = Stlmiť\\nvolume-controls-volume = Hlasitosť\\n\"\n },\n \"sv-SE\": {\n \"context_menu.ftl\": \"context-menu-download-swf = Ladda ner .swf\\ncontext-menu-copy-debug-info = Kopiera felsökningsinfo\\ncontext-menu-open-save-manager = Öppna Sparhanteraren\\ncontext-menu-about-ruffle =\\n { $flavor ->\\n [extension] Om Ruffletillägget ({ $version })\\n *[other] Om Ruffle ({ $version })\\n }\\ncontext-menu-hide = Dölj denna meny\\ncontext-menu-exit-fullscreen = Avsluta helskärm\\ncontext-menu-enter-fullscreen = Helskärm\\ncontext-menu-volume-controls = Ljudkontroller\\n\",\n \"messages.ftl\": \"message-cant-embed =\\n Ruffle kunde inte köra Flashinnehållet som är inbäddad på denna sida.\\n Du kan försöka öppna filen i en separat flik för att kringgå problemet.\\npanic-title = Något gick fel :(\\nmore-info = Mer info\\nrun-anyway = Kör ändå\\ncontinue = Fortsätt\\nreport-bug = Rapportera Bugg\\nupdate-ruffle = Uppdatera Ruffle\\nruffle-demo = Webbdemo\\nruffle-desktop = Skrivbordsprogram\\nruffle-wiki = Se Rufflewiki\\nenable-hardware-acceleration = Det verkar som att hårdvaruacceleration inte är på. Ruffle kan fortfarande fungera men kan vara orimligt långsam. Du kan ta reda på hur man sätter på hårdvaruacceleration genom att följa denna länk.\\nview-error-details = Visa Felinformation\\nopen-in-new-tab = Öppna i ny flik\\nclick-to-unmute = Klicka för ljud\\nerror-file-protocol =\\n Det verkar som att du kör Ruffle på \\\"fil:\\\"-protokollet.\\n Detta fungerar inte eftersom webbläsare blockerar många funktioner från att fungera av säkerhetsskäl.\\n Istället bjuder vi in dig att sätta upp en lokal server eller antingen använda webbdemon eller skrivbordsprogrammet.\\nerror-javascript-config =\\n Ruffle har stött på ett stort fel på grund av en felaktig JavaScript-konfiguration.\\n Om du är serveradministratören bjuder vi in dig att kontrollera feldetaljerna för att ta reda på vilken parameter som är felaktig.\\n Du kan också konsultera Rufflewikin för hjälp.\\nerror-wasm-not-found =\\n Ruffle misslyckades ladda \\\".wasm\\\"-filkomponenten.\\n Om du är serveradministratören se till att filen har laddats upp korrekt.\\n Om problemet kvarstår kan du behöva använda inställningen \\\"publicPath\\\": konsultera vänligen Rufflewikin för hjälp.\\nerror-wasm-mime-type =\\n Ruffle har stött på ett stort fel under initialiseringen.\\n Denna webbserver serverar inte \\\".wasm\\\"-filer med korrekt MIME-typ.\\n Om du är serveradministratören konsultera vänligen Rufflewikin för hjälp.\\nerror-swf-fetch =\\n Ruffle misslyckades ladda SWF-filen.\\n Det mest sannolika skälet är att filen inte längre existerar, så det finns inget för Ruffle att köra.\\n Försök att kontakta webbplatsadministratören för hjälp.\\nerror-swf-cors =\\n Ruffle misslyckades ladda SWF-filen.\\n Åtkomst att hämta har sannolikt blockerats av CORS-policy.\\n Om du är serveradministratören konsultera vänligen Rufflewikin för hjälp.\\nerror-wasm-cors =\\n Ruffle misslyckades ladda \\\".wasm\\\"-filkomponenten.\\n Åtkomst att hämta har sannolikt blockerats av CORS-policy.\\n Om du är serveradministratören konsultera vänligen Rufflewikin för hjälp.\\nerror-wasm-invalid =\\n Ruffle har stött på ett stort fel under initialiseringen.\\n Det verkar som att den här sidan har saknade eller ogiltiga filer för att köra Ruffle.\\n Om du är serveradministratören konsultera vänligen Rufflewikin för hjälp.\\nerror-wasm-download =\\n Ruffle har stött på ett stort fel under initialiseringen.\\n Detta kan ofta lösas av sig själv så du kan prova att ladda om sidan.\\n Kontakta annars vänligen webbplatsens administratör.\\nerror-wasm-disabled-on-edge =\\n Ruffle misslyckades ladda \\\".wasm\\\"-filkomponenten.\\n För att åtgärda detta försök att öppna webbläsarens inställningar, klicka på \\\"Sekretess, sökning och tjänster\\\", bläddra ner och stäng av \\\"Förbättra säkerheten på webben\\\".\\n Detta tillåter din webbläsare ladda \\\".wasm\\\"-filerna.\\n Om problemet kvarstår kan du behöva använda en annan webbläsare.\\nerror-javascript-conflict =\\n Ruffle har stött på ett stort fel under initialiseringen.\\n Det verkar som att den här sidan använder JavaScript-kod som stör Ruffle.\\n Om du är serveradministratören bjuder vi in dig att försöka ladda filen på en blank sida.\\nerror-javascript-conflict-outdated = Du kan också försöka ladda upp en nyare version av Ruffle, vilket kan kringgå problemet (nuvarande version är utdaterad: { $buildDate }).\\nerror-csp-conflict =\\n Ruffle har stött på ett stort fel under initialiseringen.\\n Denna webbservers Content Security Policy tillåter inte \\\".wasm\\\"-komponenten att köra.\\n Om du är serveradministratören konsultera vänligen Rufflewikin för hjälp.\\nerror-unknown =\\n Ruffle har stött på ett stort fel medan den försökte visa Flashinnehållet.\\n { $outdated ->\\n [true] Om du är serveradministratören försök att ladda upp en nyare version av Ruffle (nuvarande version är utdaterad: { $buildDate }).\\n *[false] Detta är inte tänkt att hända så vi skulle verkligen uppskatta om du kunde rapportera in en bugg!\\n }\\n\",\n \"save-manager.ftl\": \"save-delete-prompt = Är du säker på att du vill radera sparfilen?\\nsave-reload-prompt =\\n Det enda sättet att { $action ->\\n [delete] radera\\n *[replace] ersätta\\n } denna sparfil utan potentiell konflikt är att ladda om innehållet. Vill du fortsätta ändå?\\nsave-download = Ladda ner\\nsave-replace = Ersätt\\nsave-delete = Radera\\nsave-backup-all = Ladda ner alla sparfiler\\n\",\n \"volume-controls.ftl\": \"volume-controls = Ljudkontroller\\nvolume-controls-mute = Stäng av ljud\\nvolume-controls-volume = Volym\\n\"\n },\n \"tr-TR\": {\n \"context_menu.ftl\": \"context-menu-download-swf = İndir .swf\\ncontext-menu-copy-debug-info = Hata ayıklama bilgisini kopyala\\ncontext-menu-open-save-manager = Kayıt Yöneticisini Aç\\ncontext-menu-about-ruffle =\\n { $flavor ->\\n [extension] Ruffle Uzantısı Hakkında ({ $version })\\n *[other] Ruffle Hakkında ({ $version })\\n }\\ncontext-menu-hide = Bu menüyü gizle\\ncontext-menu-exit-fullscreen = Tam ekrandan çık\\ncontext-menu-enter-fullscreen = Tam ekran yap\\n\",\n \"messages.ftl\": \"message-cant-embed =\\n Ruffle, bu sayfaya gömülü Flash'ı çalıştıramadı.\\n Bu sorunu ortadan kaldırmak için dosyayı ayrı bir sekmede açmayı deneyebilirsiniz.\\npanic-title = Bir şeyler yanlış gitti :(\\nmore-info = Daha fazla bilgi\\nrun-anyway = Yine de çalıştır\\ncontinue = Devam et\\nreport-bug = Hata Bildir\\nupdate-ruffle = Ruffle'ı Güncelle\\nruffle-demo = Ağ Demosu\\nruffle-desktop = Masaüstü Uygulaması\\nruffle-wiki = Ruffle Wiki'yi Görüntüle\\nview-error-details = Hata Ayrıntılarını Görüntüle\\nopen-in-new-tab = Yeni sekmede aç\\nclick-to-unmute = Sesi açmak için tıklayın\\nerror-file-protocol =\\n Görünüşe göre Ruffle'ı \\\"dosya:\\\" protokolünde çalıştırıyorsunuz.\\n Tarayıcılar güvenlik nedenleriyle birçok özelliğin çalışmasını engellediğinden bu işe yaramaz.\\n Bunun yerine, sizi yerel bir sunucu kurmaya veya ağın demosunu ya da masaüstü uygulamasını kullanmaya davet ediyoruz.\\nerror-javascript-config =\\n Ruffle, yanlış bir JavaScript yapılandırması nedeniyle önemli bir sorunla karşılaştı.\\n Sunucu yöneticisiyseniz, hangi parametrenin hatalı olduğunu bulmak için sizi hata ayrıntılarını kontrol etmeye davet ediyoruz.\\n Yardım için Ruffle wiki'sine de başvurabilirsiniz.\\nerror-wasm-not-found =\\n Ruffle gerekli \\\".wasm\\\" dosya bileşenini yükleyemedi.\\n Sunucu yöneticisi iseniz, lütfen dosyanın doğru bir şekilde yüklendiğinden emin olun.\\n Sorun devam ederse, \\\"publicPath\\\" ayarını kullanmanız gerekebilir: yardım için lütfen Ruffle wiki'sine başvurun.\\nerror-wasm-mime-type =\\n Ruffle, başlatmaya çalışırken önemli bir sorunla karşılaştı.\\n Bu web sunucusu, doğru MIME tipinde \\\".wasm\\\" dosyaları sunmuyor.\\n Sunucu yöneticisiyseniz, yardım için lütfen Ruffle wiki'sine başvurun.\\nerror-swf-fetch =\\n Ruffle, Flash SWF dosyasını yükleyemedi.\\n Bunun en olası nedeni, dosyanın artık mevcut olmaması ve bu nedenle Ruffle'ın yükleyeceği hiçbir şeyin olmamasıdır.\\n Yardım için web sitesi yöneticisiyle iletişime geçmeyi deneyin.\\nerror-swf-cors =\\n Ruffle, Flash SWF dosyasını yükleyemedi.\\n Getirme erişimi muhtemelen CORS politikası tarafından engellenmiştir.\\n Sunucu yöneticisiyseniz, yardım için lütfen Ruffle wiki'sine başvurun.\\nerror-wasm-cors =\\n Ruffle gerekli \\\".wasm\\\" dosya bileşenini yükleyemedi.\\n Getirme erişimi muhtemelen CORS politikası tarafından engellenmiştir.\\n Sunucu yöneticisiyseniz, yardım için lütfen Ruffle wiki'sine başvurun.\\nerror-wasm-invalid =\\n Ruffle, başlatmaya çalışırken önemli bir sorunla karşılaştı.\\n Görünüşe göre bu sayfada Ruffle'ı çalıştırmak için eksik veya geçersiz dosyalar var.\\n Sunucu yöneticisiyseniz, yardım için lütfen Ruffle wiki'sine başvurun.\\nerror-wasm-download =\\n Ruffle, başlatmaya çalışırken önemli bir sorunla karşılaştı.\\n Bu genellikle kendi kendine çözülebilir, bu nedenle sayfayı yeniden yüklemeyi deneyebilirsiniz.\\n Aksi takdirde, lütfen site yöneticisiyle iletişime geçin.\\nerror-wasm-disabled-on-edge =\\n Ruffle gerekli \\\".wasm\\\" dosya bileşenini yükleyemedi.\\n Bunu düzeltmek için tarayıcınızın ayarlarınıın, \\\"Gizlilik, arama ve hizmetler\\\"i tıklayın, aşağı kaydırın ve \\\"Web'de güvenliğinizi artırın\\\"ı kapatmayı deneyin.\\n Bu, tarayıcınızın gerekli \\\".wasm\\\" dosyalarını yüklemesine izin verecektir.\\n Sorun devam ederse, farklı bir tarayıcı kullanmanız gerekebilir.\\nerror-javascript-conflict =\\n Ruffle, başlatmaya çalışırken önemli bir sorunla karşılaştı.\\n Görünüşe göre bu sayfa, Ruffle ile çakışan JavaScript kodu kullanıyor.\\n Sunucu yöneticisiyseniz, sizi dosyayı boş bir sayfaya yüklemeyi denemeye davet ediyoruz.\\nerror-javascript-conflict-outdated = Ayrıca sorunu giderebilecek daha yeni bir Ruffle sürümü yüklemeyi de deneyebilirsiniz (mevcut yapım eskimiş: { $buildDate }).\\nerror-csp-conflict =\\n Ruffle, başlatmaya çalışırken önemli bir sorunla karşılaştı.\\n Bu web sunucusunun İçerik Güvenliği Politikası, gerekli \\\".wasm\\\" bileşeninin çalışmasına izin vermiyor.\\n Sunucu yöneticisiyseniz, yardım için lütfen Ruffle wiki'sine bakın.\\nerror-unknown =\\n Ruffle, bu Flash içeriğini görüntülemeye çalışırken önemli bir sorunla karşılaştı.\\n { $outdated ->\\n [true] Sunucu yöneticisiyseniz, lütfen Ruffle'ın daha yeni bir sürümünü yüklemeyi deneyin (mevcut yapım eskimiş: { $buildDate }).\\n *[false] Bunun olmaması gerekiyor, bu yüzden bir hata bildirebilirseniz çok memnun oluruz!\\n }\\n\",\n \"save-manager.ftl\": \"save-delete-prompt = Bu kayıt dosyasını silmek istediğinize emin misiniz?\\nsave-reload-prompt =\\n Bu kaydetme dosyasını potansiyel çakışma olmadan { $action ->\\n [delete] silmenin\\n *[replace] değiştirmenin\\n } tek yolu, bu içeriği yeniden yüklemektir. Yine de devam etmek istiyor musunuz?\\nsave-download = İndir\\nsave-replace = Değiştir\\nsave-delete = Sil\\nsave-backup-all = Tüm kayıt dosyalarını indir\\n\",\n \"volume-controls.ftl\": \"\"\n },\n \"zh-CN\": {\n \"context_menu.ftl\": \"context-menu-download-swf = 下载 .swf\\ncontext-menu-copy-debug-info = 复制调试信息\\ncontext-menu-open-save-manager = 打开存档管理器\\ncontext-menu-about-ruffle =\\n { $flavor ->\\n [extension] 关于 Ruffle 扩展 ({ $version })\\n *[other] 关于 Ruffle ({ $version })\\n }\\ncontext-menu-hide = 隐藏此菜单\\ncontext-menu-exit-fullscreen = 退出全屏\\ncontext-menu-enter-fullscreen = 进入全屏\\ncontext-menu-volume-controls = 音量控制\\n\",\n \"messages.ftl\": \"message-cant-embed =\\n Ruffle 无法运行嵌入在此页面中的 Flash。\\n 您可以尝试在单独的标签页中打开该文件,以回避此问题。\\npanic-title = 出了些问题 :(\\nmore-info = 更多信息\\nrun-anyway = 仍然运行\\ncontinue = 继续\\nreport-bug = 反馈问题\\nupdate-ruffle = 更新 Ruffle\\nruffle-demo = 网页演示\\nruffle-desktop = 桌面应用程序\\nruffle-wiki = 查看 Ruffle Wiki\\nenable-hardware-acceleration = 看起来硬件加速未启用。虽然 Ruffle 可能运行,但可能会非常慢。您可以通过此链接了解启用硬件加速的方法。\\nview-error-details = 查看错误详情\\nopen-in-new-tab = 在新标签页中打开\\nclick-to-unmute = 点击取消静音\\nerror-file-protocol =\\n 看来您正在 \\\"file:\\\" 协议上使用 Ruffle。\\n 由于浏览器以安全原因阻止许多功能,因此这不起作用。\\n 相反我们邀请您设置本地服务器或使用网页演示或桌面应用程序。\\nerror-javascript-config =\\n 由于错误的 JavaScript 配置Ruffle 遇到了一个重大问题。\\n 如果您是服务器管理员,我们邀请您检查错误详细信息,以找出哪个参数有故障。\\n 您也可以查阅 Ruffle 的 Wiki 获取帮助。\\nerror-wasm-not-found =\\n Ruffle 无法加载所需的 “.wasm” 文件组件。\\n 如果您是服务器管理员,请确保文件已正确上传。\\n 如果问题仍然存在,您可能需要使用 “publicPath” 设置:请查看 Ruffle 的 Wiki 获取帮助。\\nerror-wasm-mime-type =\\n Ruffle 在试图初始化时遇到了一个重大问题。\\n 该网站服务器没有提供 \\\".asm” 文件正确的 MIME 类型。\\n 如果您是服务器管理员,请查阅 Ruffle Wiki 获取帮助。\\nerror-swf-fetch =\\n Ruffle 无法加载 Flash SWF 文件。\\n 最可能的原因是文件不再存在所以 Ruffle 没有要加载的内容。\\n 请尝试联系网站管理员寻求帮助。\\nerror-swf-cors =\\n Ruffle 无法加载 Flash SWF 文件。\\n 获取权限可能被 CORS 策略阻止。\\n 如果您是服务器管理员,请参考 Ruffle Wiki 获取帮助。\\nerror-wasm-cors =\\n Ruffle 无法加载所需的“.wasm”文件组件。\\n 获取权限可能被 CORS 策略阻止。\\n 如果您是服务器管理员,请查阅 Ruffle Wiki 获取帮助。\\nerror-wasm-invalid =\\n Ruffle 在试图初始化时遇到了一个重大问题。\\n 这个页面似乎缺少文件来运行 Curl。\\n 如果您是服务器管理员,请查阅 Ruffle Wiki 获取帮助。\\nerror-wasm-download =\\n Ruffle 在试图初始化时遇到了一个重大问题。\\n 这通常可以自行解决,因此您可以尝试重新加载页面。\\n 否则请联系网站管理员。\\nerror-wasm-disabled-on-edge =\\n Ruffle 无法加载所需的 “.wasm” 文件组件。\\n 要解决这个问题,请尝试打开您的浏览器设置,单击\\\"隐私、搜索和服务\\\",向下滚动并关闭\\\"增强 Web 安全性\\\"。\\n 这将允许您的浏览器加载所需的 “.wasm” 文件。\\n 如果问题仍然存在,您可能必须使用不同的浏览器。\\nerror-javascript-conflict =\\n Ruffle 在试图初始化时遇到了一个重大问题。\\n 这个页面似乎使用了与 Ruffle 冲突的 JavaScript 代码。\\n 如果您是服务器管理员,我们建议您尝试在空白页面上加载文件。\\nerror-javascript-conflict-outdated = 您还可以尝试上传可能规避该问题的最新版本的 (当前构建已过时: { $buildDate })。\\nerror-csp-conflict =\\n Ruffle 在试图初始化时遇到了一个重大问题。\\n 该网站服务器的内容安全策略不允许运行所需的 “.wasm” 组件。\\n 如果您是服务器管理员,请查阅 Ruffle Wiki 获取帮助。\\nerror-unknown =\\n Ruffle 在试图显示此 Flash 内容时遇到了一个重大问题。\\n { $outdated ->\\n [true] 如果您是服务器管理员,请尝试上传更新的 Ruffle 版本 (当前版本已过时: { $buildDate }).\\n *[false] 这不应该发生,因此如果您可以报告错误,我们将非常感谢!\\n }\\n\",\n \"save-manager.ftl\": \"save-delete-prompt = 确定要删除此存档吗?\\nsave-reload-prompt =\\n 为了避免潜在的冲突,{ $action ->\\n [delete] 删除\\n *[replace] 替换\\n } 此存档文件需要重新加载当前内容。是否仍然继续?\\nsave-download = 下载\\nsave-replace = 替换\\nsave-delete = 删除\\nsave-backup-all = 下载所有存档文件\\n\",\n \"volume-controls.ftl\": \"volume-controls = 音量控制\\nvolume-controls-mute = 静音\\nvolume-controls-volume = 音量\\n\"\n },\n \"zh-TW\": {\n \"context_menu.ftl\": \"context-menu-download-swf = 下載SWF檔案\\ncontext-menu-copy-debug-info = 複製除錯資訊\\ncontext-menu-open-save-manager = 打開存檔管理器\\ncontext-menu-about-ruffle =\\n { $flavor ->\\n [extension] 關於Ruffle擴充功能 ({ $version })\\n *[other] 關於Ruffle ({ $version })\\n }\\ncontext-menu-hide = 隱藏菜單\\ncontext-menu-exit-fullscreen = 退出全螢幕\\ncontext-menu-enter-fullscreen = 進入全螢幕\\ncontext-menu-volume-controls = 音量控制\\n\",\n \"messages.ftl\": \"message-cant-embed =\\n 目前Ruffle沒辦法執行嵌入式Flash。\\n 你可以在新分頁中開啟來解決這個問題。\\npanic-title = 完蛋,出問題了 :(\\nmore-info = 更多資訊\\nrun-anyway = 直接執行\\ncontinue = 繼續\\nreport-bug = 回報BUG\\nupdate-ruffle = 更新Ruffle\\nruffle-demo = 網頁展示\\nruffle-desktop = 桌面應用程式\\nruffle-wiki = 查看Ruffle Wiki\\nenable-hardware-acceleration =\\n 看起來你的硬體加速沒有開啟雖然Ruffle還可以執行但是你會感覺到會很慢。\\n 你可以在下方連結找到如何開啟硬體加速。\\nview-error-details = 檢視錯誤詳細資料\\nopen-in-new-tab = 開啟新增分頁\\nclick-to-unmute = 點擊以取消靜音\\nerror-file-protocol =\\n 看起來你想要用Ruffle來執行\\\"file:\\\"的協議。\\n 因為瀏覽器禁了很多功能以資安的理由來講。\\n 我們建議你建立本地伺服器或著直接使用網頁展示或桌面應用程式。\\nerror-javascript-config =\\n 目前Ruffle遇到不正確的JavaScript配置。\\n 如果你是伺服器管理員,我們建議你檢查哪個環節出錯。\\n 或著你可以查詢Ruffle wiki得到需求幫助。\\nerror-wasm-not-found =\\n 目前Ruffle找不到\\\".wasm\\\"檔案。\\n 如果你是伺服器管理員,確保檔案是否放對位置。\\n 如果還是有問題的話,你要用\\\"publicPath\\\"來設定: 或著查詢Ruffle wiki得到需求幫助。\\nerror-wasm-mime-type =\\n 目前Ruffle初始化時遇到重大問題。\\n 這網頁伺服器並沒有服務\\\".wasm\\\"檔案或正確的網際網路媒體類型。\\n 如果你是伺服器管理員請查詢Ruffle wiki得到需求幫助。\\nerror-swf-fetch =\\n 目前Ruffle無法讀取Flash的SWF檔案。\\n 很有可能要讀取的檔案不存在所以Ruffle讀不到東西。\\n 請嘗試溝通伺服器管理員得到需求幫助。\\nerror-swf-cors =\\n 目前Ruffle無法讀取Flash的SWF檔案。\\n 看起來是使用權被跨來源資源共用機制被擋到了。\\n 如果你是伺服器管理員請查詢Ruffle wiki得到需求幫助。\\nerror-wasm-cors =\\n 目前Ruffle無法讀取\\\".wasm\\\"檔案。\\n 看起來是使用權被跨來源資源共用機制被擋到了。\\n 如果你是伺服器管理員請查詢Ruffle wiki得到需求幫助。\\nerror-wasm-invalid =\\n 目前Ruffle初始化時遇到重大問題。\\n 看起來這網頁有缺失檔案導致Ruffle無法運行。\\n 如果你是伺服器管理員請查詢Ruffle wiki得到需求幫助。\\nerror-wasm-download =\\n 目前Ruffle初始化時遇到重大問題。\\n 這可以你自己解決,你只要重新整理就好了。\\n 否則,請嘗試溝通伺服器管理員得到需求幫助。\\nerror-wasm-disabled-on-edge =\\n 目前Ruffle無法讀取\\\".wasm\\\"檔案。\\n 要修正的話,打開你的瀏覽器設定,點選\\\"隱私權、搜尋與服務\\\",把\\\"防止追蹤\\\"給關掉。\\n 這樣一來你的瀏覽器會讀取需要的\\\".wasm\\\"檔案。\\n 如果問題一直還在的話,你必須要換瀏覽器了。\\nerror-javascript-conflict =\\n 目前Ruffle初始化時遇到重大問題。\\n 看起來這網頁使用的JavaScript會跟Ruffle起衝突。\\n 如果你是伺服器管理員,我們建議你開個空白頁來測試。\\nerror-javascript-conflict-outdated = 你也可以上傳最新版的Ruffle說不定你要說的的問題已經不見了(現在使用的版本已經過時: { $buildDate })。\\nerror-csp-conflict =\\n 目前Ruffle初始化時遇到重大問題。\\n 這網頁伺服器被跨來源資源共用機制禁止讀取\\\".wasm\\\"檔案。\\n 如果你是伺服器管理員請查詢Ruffle wiki得到需求幫助。\\nerror-unknown =\\n 目前Ruffle初始化要讀取Flash內容時遇到重大問題\\n { $outdated ->\\n [true] 如果你是伺服器管理員, 請上傳最新版的Ruffle(現在使用的版本已經過時: { $buildDate }).\\n *[false] 這不應該發生的我們也很高興你告知bug!\\n }\\n\",\n \"save-manager.ftl\": \"save-delete-prompt = 你確定要刪除這個存檔嗎?\\nsave-reload-prompt =\\n 唯一方法只有 { $action ->\\n [delete] 刪除\\n *[replace] 取代\\n } 這個存檔不會完全取代直到重新啟動. 你需要繼續嗎?\\nsave-download = 下載\\nsave-replace = 取代\\nsave-delete = 刪除\\nsave-backup-all = 下載所有存檔檔案。\\n\",\n \"volume-controls.ftl\": \"volume-controls = 音量控制\\nvolume-controls-mute = 靜音\\nvolume-controls-volume = 音量\\n\"\n }\n};\nconst bundles = {};\nfor (const [locale, files] of Object.entries(BUNDLED_TEXTS)) {\n const bundle = new FluentBundle(locale);\n if (files) {\n for (const [filename, text] of Object.entries(files)) {\n if (text) {\n for (const error of bundle.addResource(new FluentResource(text))) {\n console.error(`Error in text for ${locale} ${filename}: ${error}`);\n }\n }\n }\n }\n bundles[locale] = bundle;\n}\n/**\n * Gets the localised text for the given locale and text ID.\n *\n * If the locale does not contain a text for this ID, it will return null.\n *\n * @param locale Locale to prefer when retrieving text, ie \"en-US\"\n * @param id ID of the text to retrieve\n * @param args Any arguments to use when creating the localised text\n * @returns Localised text or null if not found\n */\nfunction tryText(locale, id, args) {\n const bundle = bundles[locale];\n if (bundle !== undefined) {\n const message = bundle.getMessage(id);\n if (message !== undefined && message.value) {\n return bundle.formatPattern(message.value, args);\n }\n }\n return null;\n}\n/**\n * Gets the localised text for the given text ID.\n *\n * The users preferred locales are used, in priority order, to find the given text.\n *\n * If no text is found for any preferred locale, en-US will be used.\n * If en-US does not contain a text for this ID, an error will be logged and the ID itself will be returned.\n *\n * @param id ID of the text to retrieve\n * @param args Any arguments to use when creating the localised text\n * @returns Localised text\n */\nexport function text(id, args) {\n const locales = negotiateLanguages(navigator.languages, Object.keys(bundles), { defaultLocale: \"en-US\" });\n for (const i in locales) {\n const result = tryText(locales[i], id, args);\n if (result) {\n return result;\n }\n }\n console.error(`Unknown text key '${id}'`);\n return id;\n}\n/**\n * Gets the localised text for the given text ID, as <p>paragraphs</p> and HTML entities safely encoded.\n *\n * The users preferred locales are used, in priority order, to find the given text.\n *\n * If no text is found for any preferred locale, en-US will be used.\n * If en-US does not contain a text for this ID, an error will be logged and the ID itself will be returned.\n *\n * @param id ID of the text to retrieve\n * @param args Any arguments to use when creating the localised text\n * @returns Localised text with each line in a Paragraph element\n */\nexport function textAsParagraphs(id, args) {\n const result = document.createElement(\"div\");\n text(id, args)\n .split(\"\\n\")\n .forEach((line) => {\n const p = document.createElement(\"p\");\n p.innerText = line;\n result.appendChild(p);\n });\n return result;\n}\n","import { text } from \"./i18n\";\n/**\n * Insert all rules from array in the style sheet.\n *\n * @param sheet The style sheet to which to apply the rules.\n * @param rules An array of rules to be applied.\n */\nfunction insertRules(sheet, rules) {\n for (const rule of rules) {\n try {\n sheet.insertRule(rule);\n }\n catch (err) {\n // Ignore unsupported rules\n }\n }\n}\n/**\n * The default styles to apply to the shadow template.\n * This function must be run after the shadow template is added to the page.\n *\n * @param styleElement The static style element to which to add the rules\n */\nexport function applyStaticStyles(styleElement) {\n if (!styleElement.sheet) {\n return;\n }\n const rules = [\n `:host {\n all: initial;\n\n --ruffle-blue: #37528c;\n --ruffle-orange: #ffad33;\n\n display: inline-block;\n position: relative;\n /* Default width/height; this will get overridden by user styles/attributes. */\n width: 550px;\n height: 400px;\n font-family: Arial, sans-serif;\n letter-spacing: 0.4px;\n touch-action: none;\n user-select: none;\n -webkit-user-select: none;\n -webkit-tap-highlight-color: transparent;\n }`,\n /* Ruffle's width/height CSS interferes with Safari's fullscreen CSS. */\n /* Ensure that Safari's fullscreen mode actually fills the screen. */\n `:host(:-webkit-full-screen) {\n display: block;\n width: 100% !important;\n height: 100% !important;\n }`,\n `.hidden {\n display: none !important;\n }`,\n /* All of these use the dimensions specified by the embed. */\n `#container,\n #play-button,\n #unmute-overlay,\n #unmute-overlay .background,\n #panic,\n #splash-screen,\n #message-overlay {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n }`,\n `#container {\n overflow: hidden;\n }`,\n `#container canvas {\n width: 100%;\n height: 100%;\n }`,\n `#play-button,\n #unmute-overlay {\n cursor: pointer;\n display: none;\n }`,\n `#unmute-overlay .background {\n background: black;\n opacity: 0.7;\n }`,\n `#play-button .icon,\n #unmute-overlay .icon {\n position: absolute;\n top: 50%;\n left: 50%;\n width: 50%;\n height: 50%;\n max-width: 384px;\n max-height: 384px;\n transform: translate(-50%, -50%);\n opacity: 0.8;\n }`,\n `#play-button:hover .icon,\n #unmute-overlay:hover .icon {\n opacity: 1;\n }`,\n /* Includes inverted colors from play button! */\n `#panic {\n font-size: 20px;\n text-align: center;\n background: linear-gradient(180deg, #fd3a40 0%, #fda138 100%);\n color: white;\n display: flex;\n flex-flow: column;\n justify-content: space-around;\n }`,\n `#panic a {\n color: var(--ruffle-blue);\n font-weight: bold;\n }`,\n `#panic-title {\n font-size: xxx-large;\n font-weight: bold;\n }`,\n `#panic-body.details {\n flex: 0.9;\n margin: 0 10px;\n }`,\n `#panic-body textarea {\n width: 100%;\n height: 100%;\n resize: none;\n }`,\n `#panic ul {\n padding: 0;\n display: flex;\n list-style-type: none;\n justify-content: space-evenly;\n }`,\n `#message-overlay {\n position: absolute;\n background: var(--ruffle-blue);\n color: var(--ruffle-orange);\n opacity: 1;\n z-index: 2;\n display: flex;\n align-items: center;\n justify-content: center;\n overflow: auto;\n }`,\n `#message-overlay .message {\n text-align: center;\n max-height: 100%;\n max-width: 100%;\n padding: 5%;\n font-size: 20px;\n }`,\n `#message-overlay p {\n margin: 0.5em 0;\n }`,\n `#message-overlay .message div {\n display: flex;\n justify-content: center;\n flex-wrap: wrap;\n column-gap: 1em;\n }`,\n `#message-overlay a, #message-overlay button {\n cursor: pointer;\n background: var(--ruffle-blue);\n color: var(--ruffle-orange);\n border: 2px solid var(--ruffle-orange);\n font-weight: bold;\n font-size: 1.25em;\n border-radius: 0.6em;\n padding: 10px;\n text-decoration: none;\n margin: 2% 0;\n }`,\n `#message-overlay a:hover, #message-overlay button:hover {\n background: #ffffff4c;\n }`,\n `#continue-btn {\n cursor: pointer;\n background: var(--ruffle-blue);\n color: var(--ruffle-orange);\n border: 2px solid var(--ruffle-orange);\n font-weight: bold;\n font-size: 20px;\n border-radius: 20px;\n padding: 10px;\n }`,\n `#continue-btn:hover {\n background: #ffffff4c;\n }`,\n `#context-menu-overlay {\n width: 100%;\n height: 100%;\n z-index: 1;\n position: absolute;\n }`,\n `#context-menu {\n color: black;\n background: #fafafa;\n border: 1px solid gray;\n box-shadow: 0px 5px 10px -5px black;\n position: absolute;\n font-size: 14px;\n text-align: left;\n list-style: none;\n padding: 0;\n margin: 0;\n }`,\n `#context-menu .menu-item {\n padding: 5px 10px;\n cursor: pointer;\n color: black;\n }`,\n `#context-menu .menu-item.disabled {\n cursor: default;\n color: gray;\n }`,\n `#context-menu .menu-item:not(.disabled):hover {\n background: lightgray;\n }`,\n `#context-menu .menu-separator hr {\n border: none;\n border-bottom: 1px solid lightgray;\n margin: 2px;\n }`,\n `#splash-screen {\n display: flex;\n flex-direction: column;\n background: var(--splash-screen-background, var(--preloader-background, var(--ruffle-blue)));\n align-items: center;\n justify-content: center;\n }`,\n `.loadbar {\n width: 100%;\n max-width: 316px;\n max-height: 10px;\n height: 20%;\n background: #253559;\n }`,\n `.loadbar-inner {\n width: 0px;\n max-width: 100%;\n height: 100%;\n background: var(--ruffle-orange);\n }`,\n `.logo {\n display: var(--logo-display, block);\n max-width: 380px;\n max-height: 150px;\n }`,\n `.loading-animation {\n max-width: 28px;\n max-height: 28px;\n margin-bottom: 2%;\n width: 10%;\n aspect-ratio: 1;\n }`,\n `.spinner {\n stroke-dasharray: 180;\n stroke-dashoffset: 135;\n stroke: var(--ruffle-orange);\n transform-origin: 50% 50%;\n animation: rotate 1.5s linear infinite;\n }`,\n `@keyframes rotate {\n to {\n transform: rotate(360deg);\n }\n }`,\n `#virtual-keyboard {\n position: absolute;\n opacity: 0;\n top: -100px;\n width: 1px;\n height: 1px;\n }`,\n `.modal {\n height: inherit;\n user-select: text;\n }`,\n `.modal-area {\n position: sticky;\n background: white;\n width: fit-content;\n padding: 16px 28px 16px 16px;\n border: 3px solid black;\n margin: auto;\n }`,\n `#modal-area {\n height: 500px;\n max-height: calc(100% - 38px);\n min-height: 80px;\n }`,\n `#restore-save {\n display: none;\n }`,\n `.replace-save {\n display: none;\n }`,\n `.save-option {\n display: inline-block;\n padding: 3px 10px;\n margin: 5px 2px;\n cursor: pointer;\n border-radius: 50px;\n background-color: var(--ruffle-blue);\n color: white;\n }`,\n `.close-modal {\n position: absolute;\n top: 5px;\n right: 10px;\n cursor: pointer;\n font-size: x-large;\n }`,\n `.general-save-options {\n text-align: center;\n padding-bottom: 8px;\n border-bottom: 2px solid #888;\n }`,\n `#local-saves {\n border-collapse: collapse;\n overflow-y: auto;\n display: block;\n padding-right: 16px;\n height: calc(100% - 45px);\n min-height: 30px;\n }`,\n `#local-saves td {\n border-bottom: 1px solid #bbb;\n height: 30px;\n }`,\n `#local-saves tr td:nth-child(1) {\n padding-right: 1em;\n word-break: break-all;\n }`,\n `#local-saves tr:nth-child(even) {\n background-color: #f2f2f2;\n }`,\n `#video-holder {\n padding-top: 20px;\n }`,\n `.slider-container {\n margin-top: 10px;\n display: flex;\n align-items: center;\n }`,\n `#volume-slider {\n margin-left: 10px;\n margin-right: 10px;\n }`,\n `#volume-slider-text {\n text-align: right;\n width: 28px;\n }`,\n `.acceleration-link {\n color: var(--ruffle-blue);\n text-decoration: none;\n }`,\n `.acceleration-link:hover {\n text-decoration: underline;\n }`,\n ];\n insertRules(styleElement.sheet, rules);\n}\n/**\n * Create and return a new HTML Element with the given arguments.\n *\n * @param tag The HTML tag name of the new element.\n * @param id The id of the new element.\n * @param className The class name of the new element.\n * @param attributes A hash of attributes for the new element.\n * @param ns The namespace of the new element.\n *\n * @returns The newly created Element\n */\nfunction createElement(tag, id, className, attributes, ns) {\n const element = ns\n ? document.createElementNS(ns, tag)\n : document.createElement(tag);\n if (id) {\n element.id = id;\n }\n if (className && ns) {\n element.classList.add(className);\n }\n else if (className) {\n element.className = className;\n }\n if (attributes) {\n for (const [key, attr] of Object.entries(attributes)) {\n element.setAttribute(key, attr);\n }\n }\n return element;\n}\n/**\n * Create and return a new HTMLInputElement with the given arguments.\n *\n * @param htmlType The type of input element.\n * @param id The id of the input element.\n * @param min The min of the input element.\n * @param max The max of the input element.\n * @param step The step of the input element.\n *\n * @returns The newly created HTMLInputElement\n */\nfunction createInputElement(htmlType, id, min, max, step) {\n const element = createElement(\"input\", id);\n element.type = htmlType;\n if (min) {\n element.min = min;\n }\n if (max) {\n element.max = max;\n }\n if (step) {\n element.step = step;\n }\n return element;\n}\n/**\n * Create and return a new HTMLLabelElement with the given arguments.\n *\n * @param id The id of the label element.\n * @param htmlFor The for of the label element.\n *\n * @returns The newly created HTMLLabelElement\n */\nfunction createLabelElement(id, htmlFor) {\n const element = createElement(\"label\", id);\n element.htmlFor = htmlFor;\n return element;\n}\n/**\n *\n * @param parentElement The node to which to append a child element.\n * @param childElement The node to be appended to the parent element.\n */\nfunction appendElement(parentElement, childElement) {\n parentElement.appendChild(childElement);\n}\n/**\n * The shadow template which is used to fill the actual Ruffle player element\n * on the page.\n *\n */\nexport const ruffleShadowTemplate = document.createElement(\"template\");\nconst svgns = \"http://www.w3.org/2000/svg\";\nconst staticStyles = createElement(\"style\", \"static-styles\");\nconst dynamicStyles = createElement(\"style\", \"dynamic-styles\");\nconst container = createElement(\"div\", \"container\");\n// Play button elements\nconst playButton = createElement(\"div\", \"play-button\");\nconst playIcon = createElement(\"div\", undefined, \"icon\");\nconst playSvg = createElement(\"svg\", undefined, undefined, {\n xmlns: svgns,\n \"xmlns:xlink\": \"http://www.w3.org/1999/xlink\",\n preserveAspectRatio: \"xMidYMid\",\n viewBox: \"0 0 250 250\",\n width: \"100%\",\n height: \"100%\",\n}, svgns);\nconst playDefs = createElement(\"defs\", undefined, undefined, undefined, svgns);\nconst playLinearGradient = createElement(\"linearGradient\", \"a\", undefined, {\n gradientUnits: \"userSpaceOnUse\",\n x1: \"125\",\n y1: \"0\",\n x2: \"125\",\n y2: \"250\",\n spreadMethod: \"pad\",\n}, svgns);\nconst playStop0 = createElement(\"stop\", undefined, undefined, {\n offset: \"0%\",\n \"stop-color\": \"#FDA138\",\n}, svgns);\nconst playStop100 = createElement(\"stop\", undefined, undefined, {\n offset: \"100%\",\n \"stop-color\": \"#FD3A40\",\n}, svgns);\nconst playG = createElement(\"g\", \"b\", undefined, undefined, svgns);\nconst playPath1 = createElement(\"path\", undefined, undefined, {\n fill: \"url(#a)\",\n d: \"M250 125q0-52-37-88-36-37-88-37T37 37Q0 73 0 125t37 88q36 37 88 37t88-37q37-36 37-88M87 195V55l100 70-100 70z\",\n}, svgns);\nconst playPath2 = createElement(\"path\", undefined, undefined, {\n fill: \"#FFF\",\n d: \"M87 55v140l100-70L87 55z\",\n}, svgns);\nconst playUse = document.createElementNS(svgns, \"use\");\nplayUse.href.baseVal = \"#b\";\n// Unmute overlay elements\nconst unmuteOverlay = createElement(\"div\", \"unmute-overlay\");\nconst background = createElement(\"div\", undefined, \"background\");\nconst unmuteIcon = createElement(\"div\", undefined, \"icon\");\nconst unmuteSvg = createElement(\"svg\", \"unmute-overlay-svg\", undefined, {\n xmlns: svgns,\n \"xmlns:xlink\": \"http://www.w3.org/1999/xlink\",\n preserveAspectRatio: \"xMidYMid\",\n viewBox: \"0 0 512 584\",\n width: \"100%\",\n height: \"100%\",\n scale: \"0.8\",\n}, svgns);\nconst unmutePath1 = createElement(\"path\", undefined, undefined, {\n fill: \"#FFF\",\n stroke: \"#FFF\",\n d: \"m457.941 256 47.029-47.029c9.372-9.373 9.372-24.568 0-33.941-9.373-9.373-24.568-9.373-33.941 0l-47.029 47.029-47.029-47.029c-9.373-9.373-24.568-9.373-33.941 0-9.372 9.373-9.372 24.568 0 33.941l47.029 47.029-47.029 47.029c-9.372 9.373-9.372 24.568 0 33.941 4.686 4.687 10.827 7.03 16.97 7.03s12.284-2.343 16.971-7.029l47.029-47.03 47.029 47.029c4.687 4.687 10.828 7.03 16.971 7.03s12.284-2.343 16.971-7.029c9.372-9.373 9.372-24.568 0-33.941z\",\n}, svgns);\nconst unmutePath2 = createElement(\"path\", undefined, undefined, {\n fill: \"#FFF\",\n stroke: \"#FFF\",\n d: \"m99 160h-55c-24.301 0-44 19.699-44 44v104c0 24.301 19.699 44 44 44h55c2.761 0 5-2.239 5-5v-182c0-2.761-2.239-5-5-5z\",\n}, svgns);\nconst unmutePath3 = createElement(\"path\", undefined, undefined, {\n fill: \"#FFF\",\n stroke: \"#FFF\",\n d: \"m280 56h-24c-5.269 0-10.392 1.734-14.578 4.935l-103.459 79.116c-1.237.946-1.963 2.414-1.963 3.972v223.955c0 1.557.726 3.026 1.963 3.972l103.459 79.115c4.186 3.201 9.309 4.936 14.579 4.936h23.999c13.255 0 24-10.745 24-24v-352.001c0-13.255-10.745-24-24-24z\",\n}, svgns);\nconst unmuteText = createElement(\"text\", \"unmute-text\", undefined, {\n x: \"256\",\n y: \"560\",\n \"text-anchor\": \"middle\",\n \"font-size\": \"60px\",\n fill: \"#FFF\",\n stroke: \"#FFF\",\n}, svgns);\n// Virtual keyboard element\nconst virtualKeyboard = createElement(\"input\", \"virtual-keyboard\", undefined, {\n type: \"text\",\n autocapitalize: \"off\",\n autocomplete: \"off\",\n autocorrect: \"off\",\n});\n// Splash screen elements\nconst splashScreen = createElement(\"div\", \"splash-screen\", \"hidden\");\nconst splashScreenSvg = createElement(\"svg\", undefined, \"logo\", {\n xmlns: svgns,\n \"xmlns:xlink\": \"http://www.w3.org/1999/xlink\",\n preserveAspectRatio: \"xMidYMid\",\n viewBox: \"0 0 380 150\",\n}, svgns);\nconst splashScreenG = createElement(\"g\", undefined, undefined, undefined, svgns);\nconst splashScreenPath1 = createElement(\"path\", undefined, undefined, {\n fill: \"#966214\",\n d: \"M58.75 85.6q.75-.1 1.5-.35.85-.25 1.65-.75.55-.35 1.05-.8.5-.45.95-1 .5-.5.75-1.2-.05.05-.15.1-.1.15-.25.25l-.1.2q-.15.05-.25.1-.4 0-.8.05-.5-.25-.9-.5-.3-.1-.55-.3l-.6-.6-4.25-6.45-1.5 11.25h3.45m83.15-.2h3.45q.75-.1 1.5-.35.25-.05.45-.15.35-.15.65-.3l.5-.3q.25-.15.5-.35.45-.35.9-.75.45-.35.75-.85l.1-.1q.1-.2.2-.35.2-.3.35-.6l-.3.4-.15.15q-.5.15-1.1.1-.25 0-.4-.05-.5-.15-.8-.4-.15-.1-.25-.25-.3-.3-.55-.6l-.05-.05v-.05l-4.25-6.4-1.5 11.25m-21.15-3.95q-.3-.3-.55-.6l-.05-.05v-.05l-4.25-6.4-1.5 11.25h3.45q.75-.1 1.5-.35.85-.25 1.6-.75.75-.5 1.4-1.1.45-.35.75-.85.35-.5.65-1.05l-.45.55q-.5.15-1.1.1-.9 0-1.45-.7m59.15.3q-.75-.5-1.4-1-3.15-2.55-3.5-6.4l-1.5 11.25h21q-3.1-.25-5.7-.75-5.6-1.05-8.9-3.1m94.2 3.85h3.45q.6-.1 1.2-.3.4-.1.75-.2.35-.15.65-.3.7-.35 1.35-.8.75-.55 1.3-1.25.1-.15.25-.3-2.55-.25-3.25-1.8l-4.2-6.3-1.5 11.25m-45.3-4.85q-.5-.4-.9-.8-2.3-2.35-2.6-5.6l-1.5 11.25h21q-11.25-.95-16-4.85m97.7 4.85q-.3-.05-.6-.05-10.8-1-15.4-4.8-3.15-2.55-3.5-6.35l-1.5 11.2h21Z\",\n}, svgns);\nconst splashScreenPath2 = createElement(\"path\", undefined, undefined, {\n fill: \"var(--ruffle-orange)\",\n d: \"M92.6 54.8q-1.95-1.4-4.5-1.4H60.35q-1.35 0-2.6.45-1.65.55-3.15 1.8-2.75 2.25-3.25 5.25l-1.65 12h.05v.3l5.85 1.15h-9.5q-.5.05-1 .15-.5.15-1 .35-.5.2-.95.45-.5.3-.95.7-.45.35-.85.8-.35.4-.65.85-.3.45-.5.9-.15.45-.3.95l-5.85 41.6H50.3l5-35.5 1.5-11.25 4.25 6.45.6.6q.25.2.55.3.4.25.9.5.4-.05.8-.05.1-.05.25-.1l.1-.2q.15-.1.25-.25.1-.05.15-.1l.3-1.05 1.75-12.3h11.15L75.8 82.6h16.5l2.3-16.25h-.05l.8-5.7q.4-2.45-1-4.2-.35-.4-.75-.8-.25-.25-.55-.5-.2-.2-.45-.35m16.2 18.1h.05l-.05.3 5.85 1.15H105.2q-.5.05-1 .15-.5.15-1 .35-.5.2-.95.45-.5.3-1 .65-.4.4-.8.85-.25.3-.55.65-.05.1-.15.2-.25.45-.4.9-.2.45-.3.95-.1.65-.2 1.25-.2 1.15-.4 2.25l-4.3 30.6q-.25 3 1.75 5.25 1.6 1.8 4 2.15.6.1 1.25.1h27.35q3.25 0 6-2.25.35-.35.7-.55l.3-.2q2-2 2.25-4.5l1.65-11.6q.05-.05.1-.05l1.65-11.35h.05l.7-5.2 1.5-11.25 4.25 6.4v.05l.05.05q.25.3.55.6.1.15.25.25.3.25.8.4.15.05.4.05.6.05 1.1-.1l.15-.15.3-.4.3-1.05 1.3-9.05h-.05l.7-5.05h-.05l.15-1.25h-.05l1.65-11.7h-16.25l-2.65 19.5h.05v.2l-.05.1h.05l5.8 1.15H132.7q-.5.05-1 .15-.5.15-1 .35-.15.05-.3.15-.3.1-.55.25-.05 0-.1.05-.5.3-1 .65-.4.35-.7.7-.55.7-.95 1.45-.35.65-.55 1.4-.15.7-.25 1.4v.05q-.15 1.05-.35 2.05l-1.2 8.75v.1l-2.1 14.7H111.4l2.25-15.55h.05l.7-5.2 1.5-11.25 4.25 6.4v.05l.05.05q.25.3.55.6.55.7 1.45.7.6.05 1.1-.1l.45-.55.3-1.05 1.3-9.05h-.05l.7-5.05h-.05l.15-1.25h-.05l1.65-11.7h-16.25l-2.65 19.5m106.5-41.75q-2.25-2.25-5.5-2.25h-27.75q-3 0-5.75 2.25-1.3.95-2.05 2.1-.45.6-.7 1.2-.2.5-.35 1-.1.45-.15.95l-4.15 29.95h-.05l-.7 5.2h-.05l-.2 1.35h.05l-.05.3 5.85 1.15h-9.45q-2.1.05-3.95 1.6-1.9 1.55-2.25 3.55l-.5 3.5h-.05l-5.3 38.1h16.25l5-35.5 1.5-11.25q.35 3.85 3.5 6.4.65.5 1.4 1 3.3 2.05 8.9 3.1 2.6.5 5.7.75l1.75-11.25h-12.2l.4-2.95h-.05l.7-5.05h-.05q.1-.9.3-1.9.1-.75.2-1.6.85-5.9 2.15-14.9 0-.15.05-.25l.1-.9q.2-1.55.45-3.15h11.25l-3.1 20.8h16.5l4.1-28.05q.15-1.7-.4-3.15-.5-1.1-1.35-2.1m46.65 44.15q-.5.3-1 .65-.4.4-.8.85-.35.4-.7.85-.25.45-.45.9-.15.45-.3.95l-5.85 41.6h16.25l5-35.5 1.5-11.25 4.2 6.3q.7 1.55 3.25 1.8l.05-.1q.25-.4.35-.85l.3-1.05 1.8-14.05v-.05l5.35-37.45h-16.25l-6.15 44.3 5.85 1.15h-9.45q-.5.05-1 .15-.5.15-1 .35-.5.2-.95.45m5.4-38.9q.15-1.7-.4-3.15-.5-1.1-1.35-2.1-2.25-2.25-5.5-2.25h-27.75q-2.3 0-4.45 1.35-.65.35-1.3.9-1.3.95-2.05 2.1-.45.6-.7 1.2-.4.9-.5 1.95l-4.15 29.95h-.05l-.7 5.2h-.05l-.2 1.35h.05l-.05.3 5.85 1.15h-9.45q-2.1.05-3.95 1.6-1.9 1.55-2.25 3.55l-.5 3.5h-.05l-1.2 8.75v.1l-4.1 29.25h16.25l5-35.5 1.5-11.25q.3 3.25 2.6 5.6.4.4.9.8 4.75 3.9 16 4.85l1.75-11.25h-12.2l.4-2.95h-.05l.7-5.05h-.05q.15-.9.3-1.9.1-.75.25-1.6.15-1.25.35-2.65v-.05q.95-6.7 2.35-16.5h11.25l-3.1 20.8h16.5l4.1-28.05M345 66.35h-.05l1.15-8.2q.5-3-1.75-5.25-1.25-1.25-3-1.75-1-.5-2.25-.5h-27.95q-.65 0-1.3.1-2.5.35-4.7 2.15-2.75 2.25-3.25 5.25l-1.95 14.7v.05l-.05.3 5.85 1.15h-9.45q-1.9.05-3.6 1.35-.2.1-.35.25-1.9 1.55-2.25 3.55l-4.85 34.1q-.25 3 1.75 5.25 1.25 1.4 3 1.95 1.05.3 2.25.3H320q3.25 0 6-2.25 2.75-2 3.25-5l2.75-18.5h-16.5l-1.75 11H302.5l2.1-14.75h.05l.85-6 1.5-11.2q.35 3.8 3.5 6.35 4.6 3.8 15.4 4.8.3 0 .6.05h15.75L345 66.35m-16.4-.95-1.25 8.95h-11.3l.4-2.95h-.05l.7-5.05h-.1l.15-.95h11.45Z\",\n}, svgns);\nconst loadingAnimation = createElement(\"svg\", undefined, \"loading-animation\", {\n xmlns: svgns,\n viewBox: \"0 0 66 66\",\n}, svgns);\nconst spinner = createElement(\"circle\", undefined, \"spinner\", {\n fill: \"none\",\n \"stroke-width\": \"6\",\n \"stroke-linecap\": \"round\",\n cx: \"33\",\n cy: \"33\",\n r: \"30\",\n}, svgns);\nconst loadbar = createElement(\"div\", undefined, \"loadbar\");\nconst loadbarInner = createElement(\"div\", undefined, \"loadbar-inner\");\n// Save manager elements\nconst saveManager = createElement(\"div\", \"save-manager\", \"modal hidden\");\nconst saveModalArea = createElement(\"div\", \"modal-area\", \"modal-area\");\nconst saveModalClose = createElement(\"span\", undefined, \"close-modal\");\nsaveModalClose.textContent = \"\\u00D7\";\nconst generalSaveOptions = createElement(\"div\", undefined, \"general-save-options\");\nconst backupSaves = createElement(\"span\", \"backup-saves\", \"save-option\");\nconst localSaves = createElement(\"table\", \"local-saves\");\n// Volume control elements\nconst volumeControlsModal = createElement(\"div\", \"volume-controls-modal\", \"modal hidden\");\nconst volumeModalArea = createElement(\"div\", undefined, \"modal-area\");\nconst volumeModalClose = createElement(\"span\", undefined, \"close-modal\");\nvolumeModalClose.textContent = \"\\u00D7\";\nconst volumeControls = createElement(\"div\", \"volume-controls\");\nconst volumeControlsHeading = createElement(\"h2\", \"volume-controls-heading\");\nconst muteCheckboxLabel = createLabelElement(\"mute-checkbox-label\", \"mute-checkbox\");\nconst muteCheckbox = createInputElement(\"checkbox\", \"mute-checkbox\");\nconst sliderContainer = createElement(\"div\", undefined, \"slider-container\");\nconst volumeSliderLabel = createLabelElement(\"volume-slider-label\", \"volume-slider\");\nconst volumeSlider = createInputElement(\"range\", \"volume-slider\", \"0\", \"100\", \"1\");\nconst volumeSliderText = createElement(\"span\", \"volume-slider-text\");\n// Video modal elements\nconst videoModal = createElement(\"div\", \"video-modal\", \"modal hidden\");\nconst videoModalArea = createElement(\"div\", undefined, \"modal-area\");\nconst videoModalClose = createElement(\"span\", undefined, \"close-modal\");\nvideoModalClose.textContent = \"\\u00D7\";\nconst videoHolder = createElement(\"div\", \"video-holder\");\n// Hardware acceleration modal elements\nconst hardwareModal = createElement(\"div\", \"hardware-acceleration-modal\", \"modal hidden\");\nconst hardwareModalArea = createElement(\"div\", undefined, \"modal-area\");\nconst hardwareModalClose = createElement(\"span\", undefined, \"close-modal\");\nhardwareModalClose.textContent = \"\\u00D7\";\nconst hardwareModalLink = document.createElement(\"a\");\nhardwareModalLink.href =\n \"https://github.com/ruffle-rs/ruffle/wiki/Frequently-Asked-Questions-For-Users#chrome-hardware-acceleration\";\nhardwareModalLink.target = \"_blank\";\nhardwareModalLink.className = \"acceleration-link\";\nhardwareModalLink.textContent = text(\"enable-hardware-acceleration\");\n// Context menu overlay elements\nconst contextMenuOverlay = createElement(\"div\", \"context-menu-overlay\", \"hidden\");\nconst contextMenu = createElement(\"ul\", \"context-menu\");\nappendElement(ruffleShadowTemplate.content, staticStyles);\nappendElement(ruffleShadowTemplate.content, dynamicStyles);\nappendElement(ruffleShadowTemplate.content, container);\n// Play button append\nappendElement(container, playButton);\nappendElement(playButton, playIcon);\nappendElement(playIcon, playSvg);\nappendElement(playSvg, playDefs);\nappendElement(playDefs, playLinearGradient);\nappendElement(playLinearGradient, playStop0);\nappendElement(playLinearGradient, playStop100);\nappendElement(playDefs, playG);\nappendElement(playG, playPath1);\nappendElement(playG, playPath2);\nappendElement(playSvg, playUse);\n// Unmute overlay append\nappendElement(container, unmuteOverlay);\nappendElement(unmuteOverlay, background);\nappendElement(unmuteOverlay, unmuteIcon);\nappendElement(unmuteIcon, unmuteSvg);\nappendElement(unmuteSvg, unmutePath1);\nappendElement(unmuteSvg, unmutePath2);\nappendElement(unmuteSvg, unmutePath3);\nappendElement(unmuteSvg, unmuteText);\n// Virtual keyboard append\nappendElement(container, virtualKeyboard);\n// Splash screen append\nappendElement(ruffleShadowTemplate.content, splashScreen);\nappendElement(splashScreen, splashScreenSvg);\nappendElement(splashScreenSvg, splashScreenG);\nappendElement(splashScreenG, splashScreenPath1);\nappendElement(splashScreenG, splashScreenPath2);\nappendElement(splashScreen, loadingAnimation);\nappendElement(loadingAnimation, spinner);\nappendElement(splashScreen, loadbar);\nappendElement(loadbar, loadbarInner);\n// Save manager append\nappendElement(ruffleShadowTemplate.content, saveManager);\nappendElement(saveManager, saveModalArea);\nappendElement(saveModalArea, saveModalClose);\nappendElement(saveModalArea, generalSaveOptions);\nappendElement(generalSaveOptions, backupSaves);\nappendElement(saveModalArea, localSaves);\n// Volume control append\nappendElement(ruffleShadowTemplate.content, volumeControlsModal);\nappendElement(volumeControlsModal, volumeModalArea);\nappendElement(volumeModalArea, volumeModalClose);\nappendElement(volumeModalArea, volumeControls);\nappendElement(volumeControls, volumeControlsHeading);\nappendElement(volumeControls, muteCheckboxLabel);\nappendElement(volumeControls, muteCheckbox);\nappendElement(volumeControls, sliderContainer);\nappendElement(sliderContainer, volumeSliderLabel);\nappendElement(sliderContainer, volumeSlider);\nappendElement(sliderContainer, volumeSliderText);\n// Video modal append\nappendElement(ruffleShadowTemplate.content, videoModal);\nappendElement(videoModal, videoModalArea);\nappendElement(videoModalArea, videoModalClose);\nappendElement(videoModalArea, videoHolder);\n// Hardware acceleration modal append\nappendElement(ruffleShadowTemplate.content, hardwareModal);\nappendElement(hardwareModal, hardwareModalArea);\nappendElement(hardwareModalArea, hardwareModalClose);\nappendElement(hardwareModalArea, hardwareModalLink);\n// Context menu overlay append\nappendElement(ruffleShadowTemplate.content, contextMenuOverlay);\nappendElement(contextMenuOverlay, contextMenu);\n","/**\n * Number of times to try defining a custom element.\n */\nconst MAX_TRIES = 999;\n/**\n * A mapping between internal element IDs and DOM element IDs.\n */\nconst privateRegistry = {};\n/**\n * Lookup a previously registered custom element.\n *\n * The returned object will have `name`, `class`, and `internal_name`\n * properties listing the external name, implementing class, and internal name\n * respectively.\n *\n * @param elementName The internal element name, previously used to\n * register the element with the private registry.\n * @returns The element data in the registry, or null if there is\n * no such element name registered.\n */\nexport function lookupElement(elementName) {\n const data = privateRegistry[elementName];\n if (data !== undefined) {\n return {\n internalName: elementName,\n name: data.name,\n class: data.class,\n };\n }\n else {\n return null;\n }\n}\n/**\n * Register a custom element.\n *\n * This function is designed to be tolerant of naming conflicts. If\n * registration fails, we modify the name, and try again. As a result, this\n * function returns the real element name to use.\n *\n * Calling this function multiple times will *not* register multiple elements.\n * We store a private registry mapping internal element names to DOM names.\n * Thus, the proper way to use this function is to call it every time you are\n * about to work with custom element names.\n *\n * @param elementName The internal name of the element.\n * @param elementClass The class of the element.\n *\n * You must call this function with the same class every time.\n * @returns The actual element name.\n * @throws Throws an error if two different elements were registered with the\n * same internal name.\n */\nexport function registerElement(elementName, elementClass) {\n const registration = privateRegistry[elementName];\n if (registration !== undefined) {\n if (registration.class !== elementClass) {\n throw new Error(\"Internal naming conflict on \" + elementName);\n }\n else {\n return registration.name;\n }\n }\n let tries = 0;\n if (window.customElements !== undefined) {\n while (tries < MAX_TRIES) {\n let externalName = elementName;\n if (tries > 0) {\n externalName = externalName + \"-\" + tries;\n }\n if (window.customElements.get(externalName) !== undefined) {\n tries += 1;\n continue;\n }\n else {\n window.customElements.define(externalName, elementClass);\n }\n privateRegistry[elementName] = {\n class: elementClass,\n name: externalName,\n internalName: elementName,\n };\n return externalName;\n }\n }\n throw new Error(\"Failed to assign custom element \" + elementName);\n}\n","/**\n * Represents the various types of auto-play behaviours that are supported.\n */\nexport var AutoPlay;\n(function (AutoPlay) {\n /**\n * The player should automatically play the movie as soon as it is loaded.\n *\n * If the browser does not support automatic audio, the movie will begin\n * muted.\n */\n AutoPlay[\"On\"] = \"on\";\n /**\n * The player should not attempt to automatically play the movie.\n *\n * This will leave it to the user or API to actually play when appropriate.\n */\n AutoPlay[\"Off\"] = \"off\";\n /**\n * The player should automatically play the movie as soon as it is deemed\n * \"appropriate\" to do so.\n *\n * The exact behaviour depends on the browser, but commonly requires some\n * form of user interaction on the page in order to allow auto playing videos\n * with sound.\n */\n AutoPlay[\"Auto\"] = \"auto\";\n})(AutoPlay || (AutoPlay = {}));\n/**\n * Controls whether the content is letterboxed or pillarboxed when the\n * player's aspect ratio does not match the movie's aspect ratio.\n *\n * When letterboxed, black bars will be rendered around the exterior\n * margins of the content.\n */\nexport var Letterbox;\n(function (Letterbox) {\n /**\n * The content will never be letterboxed.\n */\n Letterbox[\"Off\"] = \"off\";\n /**\n * The content will only be letterboxed if the content is running fullscreen.\n */\n Letterbox[\"Fullscreen\"] = \"fullscreen\";\n /**\n * The content will always be letterboxed.\n */\n Letterbox[\"On\"] = \"on\";\n})(Letterbox || (Letterbox = {}));\n/**\n * When the player is muted, this controls whether or not Ruffle will show a\n * \"click to unmute\" overlay on top of the movie.\n */\nexport var UnmuteOverlay;\n(function (UnmuteOverlay) {\n /**\n * Show an overlay explaining that the movie is muted.\n */\n UnmuteOverlay[\"Visible\"] = \"visible\";\n /**\n * Don't show an overlay and pretend that everything is fine.\n */\n UnmuteOverlay[\"Hidden\"] = \"hidden\";\n})(UnmuteOverlay || (UnmuteOverlay = {}));\n/**\n * Console logging level.\n */\nexport var LogLevel;\n(function (LogLevel) {\n LogLevel[\"Error\"] = \"error\";\n LogLevel[\"Warn\"] = \"warn\";\n LogLevel[\"Info\"] = \"info\";\n LogLevel[\"Debug\"] = \"debug\";\n LogLevel[\"Trace\"] = \"trace\";\n})(LogLevel || (LogLevel = {}));\n/**\n * The window mode of a Ruffle player.\n */\nexport var WindowMode;\n(function (WindowMode) {\n /**\n * The Flash content is rendered in its own window and layering is done with the browser's\n * default behavior.\n *\n * In Ruffle, this mode functions like `WindowMode::Opaque` and will layer the Flash content\n * together with other HTML elements.\n */\n WindowMode[\"Window\"] = \"window\";\n /**\n * The Flash content is layered together with other HTML elements, and the stage color is\n * opaque. Content can render above or below Ruffle based on CSS rendering order.\n */\n WindowMode[\"Opaque\"] = \"opaque\";\n /**\n * The Flash content is layered together with other HTML elements, and the SWF stage color is\n * transparent. Content beneath Ruffle will be visible through transparent areas.\n */\n WindowMode[\"Transparent\"] = \"transparent\";\n /**\n * Request compositing with hardware acceleration when possible.\n * This mode has no effect in Ruffle and will function like `WindowMode.Opaque`.\n */\n WindowMode[\"Direct\"] = \"direct\";\n /**\n * Request a direct rendering path, bypassing browser compositing when possible.\n * This mode has no effect in Ruffle and will function like `WindowMode::Opaque`.\n */\n WindowMode[\"Gpu\"] = \"gpu\";\n})(WindowMode || (WindowMode = {}));\n/**\n * The render backend of a Ruffle player.\n *\n * The available backends may change in future releases.\n */\nexport var RenderBackend;\n(function (RenderBackend) {\n /**\n * An [in-development API](https://caniuse.com/webgpu) that will be preferred if available in the future.\n * Should behave the same as wgpu-webgl, except with lower overhead and thus better performance.\n */\n RenderBackend[\"WebGpu\"] = \"webgpu\";\n /**\n * The most featureful and currently preferred backend.\n * Rendering is done the same way as in the desktop app, then translated to WebGL on-the-fly.\n */\n RenderBackend[\"WgpuWebgl\"] = \"wgpu-webgl\";\n /**\n * A vanilla WebGL backend. Was the default backend until the start of 2023,\n * but is now used as a fallback for devices that do not support WebGL 2.\n * Supports fewer features and has a faster initialization time;\n * may be useful for content that does not need advanced features like bitmap drawing or blend modes.\n */\n RenderBackend[\"Webgl\"] = \"webgl\";\n /**\n * The slowest and most basic backend, used as a fallback when all else fails.\n * However, this is currently the only backend that accurately scales hairline strokes.\n * If you notice excessively thick strokes in specific content,\n * you may want to use the canvas renderer for that content until the issue is resolved.\n */\n RenderBackend[\"Canvas\"] = \"canvas\";\n})(RenderBackend || (RenderBackend = {}));\n/**\n * Represents the various context menu options that are supported.\n */\nexport var ContextMenu;\n(function (ContextMenu) {\n /**\n * The context menu should appear when right-clicking or long-pressing\n * the Ruffle instance.\n */\n ContextMenu[\"On\"] = \"on\";\n /**\n * The context menu should only appear when right-clicking\n * the Ruffle instance.\n */\n ContextMenu[\"RightClickOnly\"] = \"rightClickOnly\";\n /**\n * The context menu should not appear when right-clicking or long-pressing\n * the Ruffle instance.\n */\n ContextMenu[\"Off\"] = \"off\";\n})(ContextMenu || (ContextMenu = {}));\n/**\n * The handling mode of links opening a new website.\n */\nexport var OpenURLMode;\n(function (OpenURLMode) {\n /**\n * Allow all links to open a new website.\n */\n OpenURLMode[\"Allow\"] = \"allow\";\n /**\n * A confirmation dialog opens with every link trying to open a new website.\n */\n OpenURLMode[\"Confirm\"] = \"confirm\";\n /**\n * Deny all links to open a new website.\n */\n OpenURLMode[\"Deny\"] = \"deny\";\n})(OpenURLMode || (OpenURLMode = {}));\n/**\n * The networking API access mode of the Ruffle player.\n */\nexport var NetworkingAccessMode;\n(function (NetworkingAccessMode) {\n /**\n * All networking APIs are permitted in the SWF file.\n */\n NetworkingAccessMode[\"All\"] = \"all\";\n /**\n * The SWF file may not call browser navigation or browser interaction APIs.\n *\n * The APIs navigateToURL(), fscommand() and ExternalInterface.call() are\n * prevented in this mode.\n */\n NetworkingAccessMode[\"Internal\"] = \"internal\";\n /**\n * The SWF file may not call browser navigation or browser interaction APIs\n * and it cannot use any SWF-to-SWF communication APIs.\n *\n * Additionally to the ones in internal mode, the APIs sendToURL(),\n * FileReference.download(), FileReference.upload(), Loader.load(),\n * LocalConnection.connect(), LocalConnection.send(), NetConnection.connect(),\n * NetStream.play(), Security.loadPolicyFile(), SharedObject.getLocal(),\n * SharedObject.getRemote(), Socket.connect(), Sound.load(), URLLoader.load(),\n * URLStream.load() and XMLSocket.connect() are prevented in this mode.\n *\n * This mode is not implemented yet.\n */\n NetworkingAccessMode[\"None\"] = \"none\";\n})(NetworkingAccessMode || (NetworkingAccessMode = {}));\n","import { AutoPlay, ContextMenu, Letterbox, LogLevel, OpenURLMode, NetworkingAccessMode, UnmuteOverlay, WindowMode, } from \"./load-options\";\nexport const DEFAULT_CONFIG = {\n allowScriptAccess: false,\n parameters: {},\n autoplay: AutoPlay.Auto,\n backgroundColor: null,\n letterbox: Letterbox.Fullscreen,\n unmuteOverlay: UnmuteOverlay.Visible,\n upgradeToHttps: true,\n compatibilityRules: true,\n favorFlash: true,\n warnOnUnsupportedContent: true,\n logLevel: LogLevel.Error,\n showSwfDownload: false,\n contextMenu: ContextMenu.On,\n // Backwards-compatibility option\n preloader: true,\n splashScreen: true,\n maxExecutionDuration: 15,\n base: null,\n menu: true,\n salign: \"\",\n forceAlign: false,\n quality: \"high\",\n scale: \"showAll\",\n forceScale: false,\n frameRate: null,\n wmode: WindowMode.Opaque,\n publicPath: null,\n polyfills: true,\n playerVersion: null,\n preferredRenderer: null,\n openUrlMode: OpenURLMode.Allow,\n allowNetworking: NetworkingAccessMode.All,\n openInNewTab: null,\n socketProxy: [],\n};\n","export const FLASH_MIMETYPE = \"application/x-shockwave-flash\";\nexport const FUTURESPLASH_MIMETYPE = \"application/futuresplash\";\nexport const FLASH7_AND_8_MIMETYPE = \"application/x-shockwave-flash2-preview\";\nexport const FLASH_MOVIE_MIMETYPE = \"application/vnd.adobe.flash.movie\";\nexport const FLASH_ACTIVEX_CLASSID = \"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\";\n","import { FLASH_MIMETYPE, FUTURESPLASH_MIMETYPE, FLASH7_AND_8_MIMETYPE, FLASH_MOVIE_MIMETYPE, } from \"./flash-identifiers\";\n/**\n * Returns whether the given filename ends in a known Flash extension.\n *\n * @param filename The filename to test.\n * @returns True if the filename is a Flash movie (swf or spl).\n */\nfunction isSwfFilename(filename) {\n let pathname = \"\";\n try {\n // A base URL is required if `filename` is a relative URL, but we don't need to detect the real URL origin.\n pathname = new URL(filename, \"https://example.com\").pathname;\n }\n catch (err) {\n // Some invalid filenames, like `///`, could raise a TypeError. Let's fail silently in this situation.\n }\n if (pathname && pathname.length >= 4) {\n const extension = pathname.slice(-4).toLowerCase();\n if (extension === \".swf\" || extension === \".spl\") {\n return true;\n }\n }\n return false;\n}\n/**\n * Returns whether the given MIME type is a known Flash type.\n *\n * @param mimeType The MIME type to test.\n * @param allowExtraMimes Whether extra MIME types, non-Flash related, are allowed.\n * @returns True if the MIME type is a Flash MIME type.\n */\nfunction isSwfMimeType(mimeType, allowExtraMimes) {\n mimeType = mimeType.toLowerCase();\n switch (mimeType) {\n case FLASH_MIMETYPE.toLowerCase():\n case FUTURESPLASH_MIMETYPE.toLowerCase():\n case FLASH7_AND_8_MIMETYPE.toLowerCase():\n case FLASH_MOVIE_MIMETYPE.toLowerCase():\n return true;\n default:\n if (allowExtraMimes) {\n // Allow extra MIME types to improve detection of Flash content.\n // Extension: Some sites (e.g. swfchan.net) might (wrongly?) serve files with octet-stream.\n // Polyfill: Other sites (e.g. #11050) might use octet-stream when defining an <embed> tag.\n switch (mimeType) {\n case \"application/octet-stream\":\n case \"binary/octet-stream\":\n return true;\n }\n }\n }\n return false;\n}\n/**\n * Returns whether the given filename and MIME type resolve as a Flash content.\n *\n * @param filename The filename to test.\n * @param mimeType The MIME type to test.\n * @returns True if the given arguments resolve as a Flash content.\n */\nexport function isSwf(filename, mimeType) {\n const isSwfExtension = isSwfFilename(filename);\n if (!mimeType) {\n // If no MIME type is specified (null or empty string), returns whether the movie ends in a known Flash extension.\n return isSwfExtension;\n }\n else {\n return isSwfMimeType(mimeType, isSwfExtension);\n }\n}\n/**\n * Create a filename to save a downloaded SWF into.\n *\n * @param swfUrl The URL of the SWF file.\n * @returns The filename the SWF file can be saved at.\n */\nexport function swfFileName(swfUrl) {\n const pathName = swfUrl.pathname;\n const name = pathName.substring(pathName.lastIndexOf(\"/\") + 1);\n return name;\n}\n","/**\n * Stores build information. The string literals are replaces at compile time by `set_version.js`.\n */\nexport const buildInfo = {\n versionNumber: \"0.1.0\",\n versionName: \"nightly 2023-10-18\",\n versionChannel: \"nightly\",\n buildDate: \"2023-10-18T00:25:07.036Z\",\n commitHash: \"e6f9796094b645566050c7e45b6f642d4887a149\",\n};\n","import { loadRuffle } from \"./load-ruffle\";\nimport { applyStaticStyles, ruffleShadowTemplate } from \"./shadow-template\";\nimport { lookupElement } from \"./register-element\";\nimport { DEFAULT_CONFIG } from \"./config\";\nimport { AutoPlay, ContextMenu, UnmuteOverlay, WindowMode, } from \"./load-options\";\nimport { swfFileName } from \"./swf-utils\";\nimport { buildInfo } from \"./build-info\";\nimport { text, textAsParagraphs } from \"./i18n\";\nimport JSZip from \"jszip\";\nimport { isExtension } from \"./current-script\";\nconst RUFFLE_ORIGIN = \"https://ruffle.rs\";\nconst DIMENSION_REGEX = /^\\s*(\\d+(\\.\\d+)?(%)?)/;\nlet isAudioContextUnmuted = false;\nvar PanicError;\n(function (PanicError) {\n PanicError[PanicError[\"Unknown\"] = 0] = \"Unknown\";\n PanicError[PanicError[\"CSPConflict\"] = 1] = \"CSPConflict\";\n PanicError[PanicError[\"FileProtocol\"] = 2] = \"FileProtocol\";\n PanicError[PanicError[\"InvalidWasm\"] = 3] = \"InvalidWasm\";\n PanicError[PanicError[\"JavascriptConfiguration\"] = 4] = \"JavascriptConfiguration\";\n PanicError[PanicError[\"JavascriptConflict\"] = 5] = \"JavascriptConflict\";\n PanicError[PanicError[\"WasmCors\"] = 6] = \"WasmCors\";\n PanicError[PanicError[\"WasmDownload\"] = 7] = \"WasmDownload\";\n PanicError[PanicError[\"WasmMimeType\"] = 8] = \"WasmMimeType\";\n PanicError[PanicError[\"WasmNotFound\"] = 9] = \"WasmNotFound\";\n PanicError[PanicError[\"WasmDisabledMicrosoftEdge\"] = 10] = \"WasmDisabledMicrosoftEdge\";\n PanicError[PanicError[\"SwfFetchError\"] = 11] = \"SwfFetchError\";\n PanicError[PanicError[\"SwfCors\"] = 12] = \"SwfCors\";\n})(PanicError || (PanicError = {}));\n/**\n * Converts arbitrary input to an easy to use record object.\n *\n * @param parameters Parameters to sanitize\n * @returns A sanitized map of param name to param value\n */\nfunction sanitizeParameters(parameters) {\n if (parameters === null || parameters === undefined) {\n return {};\n }\n if (!(parameters instanceof URLSearchParams)) {\n parameters = new URLSearchParams(parameters);\n }\n const output = {};\n for (const [key, value] of parameters) {\n // Every value must be type of string\n output[key] = value.toString();\n }\n return output;\n}\nclass Point {\n constructor(x, y) {\n this.x = x;\n this.y = y;\n }\n distanceTo(other) {\n const dx = other.x - this.x;\n const dy = other.y - this.y;\n return Math.sqrt(dx * dx + dy * dy);\n }\n}\nclass PanicLinkInfo {\n constructor(url = \"#\", label = text(\"view-error-details\")) {\n this.url = url;\n this.label = label;\n }\n}\n/**\n * The ruffle player element that should be inserted onto the page.\n *\n * This element will represent the rendered and intractable flash movie.\n */\nexport class RufflePlayer extends HTMLElement {\n /**\n * Indicates the readiness of the playing movie.\n *\n * @returns The `ReadyState` of the player.\n */\n get readyState() {\n return this._readyState;\n }\n /**\n * The metadata of the playing movie (such as movie width and height).\n * These are inherent properties stored in the SWF file and are not affected by runtime changes.\n * For example, `metadata.width` is the width of the SWF file, and not the width of the Ruffle player.\n *\n * @returns The metadata of the movie, or `null` if the movie metadata has not yet loaded.\n */\n get metadata() {\n return this._metadata;\n }\n /**\n * Constructs a new Ruffle flash player for insertion onto the page.\n */\n constructor() {\n super();\n // Allows the user to permanently disable the context menu.\n this.contextMenuForceDisabled = false;\n // Whether the most recent pointer event was from a touch (or pen).\n this.isTouch = false;\n // Whether this device sends contextmenu events.\n // Set to true when a contextmenu event is seen.\n this.contextMenuSupported = false;\n this.panicked = false;\n this.rendererDebugInfo = \"\";\n this.longPressTimer = null;\n this.pointerDownPosition = null;\n this.pointerMoveMaxDistance = 0;\n /**\n * Any configuration that should apply to this specific player.\n * This will be defaulted with any global configuration.\n */\n this.config = {};\n this.shadow = this.attachShadow({ mode: \"open\" });\n this.shadow.appendChild(ruffleShadowTemplate.content.cloneNode(true));\n this.dynamicStyles = (this.shadow.getElementById(\"dynamic-styles\"));\n this.staticStyles = (this.shadow.getElementById(\"static-styles\"));\n this.container = this.shadow.getElementById(\"container\");\n this.playButton = this.shadow.getElementById(\"play-button\");\n this.playButton.addEventListener(\"click\", () => this.play());\n this.unmuteOverlay = this.shadow.getElementById(\"unmute-overlay\");\n this.splashScreen = this.shadow.getElementById(\"splash-screen\");\n this.virtualKeyboard = (this.shadow.getElementById(\"virtual-keyboard\"));\n this.virtualKeyboard.addEventListener(\"input\", this.virtualKeyboardInput.bind(this));\n this.saveManager = (this.shadow.getElementById(\"save-manager\"));\n this.videoModal = (this.shadow.getElementById(\"video-modal\"));\n this.hardwareAccelerationModal = (this.shadow.getElementById(\"hardware-acceleration-modal\"));\n this.volumeControls = (this.shadow.getElementById(\"volume-controls-modal\"));\n this.addModalJavaScript(this.saveManager);\n this.addModalJavaScript(this.volumeControls);\n this.addModalJavaScript(this.videoModal);\n this.addModalJavaScript(this.hardwareAccelerationModal);\n this.volumeSettings = new VolumeControls(false, 100);\n this.addVolumeControlsJavaScript(this.volumeControls);\n const backupSaves = (this.saveManager.querySelector(\"#backup-saves\"));\n if (backupSaves) {\n backupSaves.addEventListener(\"click\", this.backupSaves.bind(this));\n backupSaves.innerText = text(\"save-backup-all\");\n }\n const unmuteSvg = (this.unmuteOverlay.querySelector(\"#unmute-overlay-svg\"));\n if (unmuteSvg) {\n const unmuteText = (unmuteSvg.querySelector(\"#unmute-text\"));\n unmuteText.textContent = text(\"click-to-unmute\");\n }\n this.contextMenuOverlay = this.shadow.getElementById(\"context-menu-overlay\");\n this.contextMenuElement = this.shadow.getElementById(\"context-menu\");\n window.addEventListener(\"pointerdown\", this.checkIfTouch.bind(this));\n this.addEventListener(\"contextmenu\", this.showContextMenu.bind(this));\n this.container.addEventListener(\"pointerdown\", this.pointerDown.bind(this));\n this.container.addEventListener(\"pointermove\", this.checkLongPressMovement.bind(this));\n this.container.addEventListener(\"pointerup\", this.checkLongPress.bind(this));\n this.container.addEventListener(\"pointercancel\", this.clearLongPressTimer.bind(this));\n this.addEventListener(\"fullscreenchange\", this.fullScreenChange.bind(this));\n this.addEventListener(\"webkitfullscreenchange\", this.fullScreenChange.bind(this));\n this.instance = null;\n this.onFSCommand = null;\n this._readyState = ReadyState.HaveNothing;\n this._metadata = null;\n this.lastActivePlayingState = false;\n this.setupPauseOnTabHidden();\n }\n /**\n * Add functions to open and close a modal.\n *\n * @param modalElement The element containing the modal.\n */\n addModalJavaScript(modalElement) {\n const videoHolder = modalElement.querySelector(\"#video-holder\");\n this.container.addEventListener(\"click\", () => {\n modalElement.classList.add(\"hidden\");\n if (videoHolder) {\n videoHolder.textContent = \"\";\n }\n });\n const modalArea = modalElement.querySelector(\".modal-area\");\n if (modalArea) {\n modalArea.addEventListener(\"click\", (event) => event.stopPropagation());\n }\n const closeModal = modalElement.querySelector(\".close-modal\");\n if (closeModal) {\n closeModal.addEventListener(\"click\", () => {\n modalElement.classList.add(\"hidden\");\n if (videoHolder) {\n videoHolder.textContent = \"\";\n }\n });\n }\n }\n /**\n * Add the volume control texts, set the controls to the current settings and\n * add event listeners to update the settings and controls when being changed.\n *\n * @param volumeControlsModal The element containing the volume controls modal.\n */\n addVolumeControlsJavaScript(volumeControlsModal) {\n const muteCheckbox = volumeControlsModal.querySelector(\"#mute-checkbox\");\n const volumeSlider = volumeControlsModal.querySelector(\"#volume-slider\");\n const volumeSliderText = volumeControlsModal.querySelector(\"#volume-slider-text\");\n const heading = volumeControlsModal.querySelector(\"#volume-controls-heading\");\n const muteCheckboxLabel = volumeControlsModal.querySelector(\"#mute-checkbox-label\");\n const volumeSliderLabel = volumeControlsModal.querySelector(\"#volume-slider-label\");\n // Add the texts.\n heading.textContent = text(\"volume-controls\");\n muteCheckboxLabel.textContent = text(\"volume-controls-mute\");\n volumeSliderLabel.textContent = text(\"volume-controls-volume\");\n // Set the controls to the current settings.\n muteCheckbox.checked = this.volumeSettings.isMuted;\n volumeSlider.disabled = muteCheckbox.checked;\n volumeSlider.valueAsNumber = this.volumeSettings.volume;\n volumeSliderLabel.style.color = muteCheckbox.checked ? \"grey\" : \"black\";\n volumeSliderText.style.color = muteCheckbox.checked ? \"grey\" : \"black\";\n volumeSliderText.textContent = String(this.volumeSettings.volume);\n // Add event listeners to update the settings and controls.\n muteCheckbox.addEventListener(\"change\", () => {\n var _a;\n volumeSlider.disabled = muteCheckbox.checked;\n volumeSliderLabel.style.color = muteCheckbox.checked\n ? \"grey\"\n : \"black\";\n volumeSliderText.style.color = muteCheckbox.checked\n ? \"grey\"\n : \"black\";\n this.volumeSettings.isMuted = muteCheckbox.checked;\n (_a = this.instance) === null || _a === void 0 ? void 0 : _a.set_volume(this.volumeSettings.get_volume());\n });\n volumeSlider.addEventListener(\"input\", () => {\n var _a;\n volumeSliderText.textContent = volumeSlider.value;\n this.volumeSettings.volume = volumeSlider.valueAsNumber;\n (_a = this.instance) === null || _a === void 0 ? void 0 : _a.set_volume(this.volumeSettings.get_volume());\n });\n }\n /**\n * Setup event listener to detect when tab is not active to pause instance playback.\n * this.instance.play() is called when the tab becomes visible only if the\n * the instance was not paused before tab became hidden.\n *\n * See: https://developer.mozilla.org/en-US/docs/Web/API/Page_Visibility_API\n * @ignore\n * @internal\n */\n setupPauseOnTabHidden() {\n document.addEventListener(\"visibilitychange\", () => {\n if (!this.instance) {\n return;\n }\n // Tab just changed to be inactive. Record whether instance was playing.\n if (document.hidden) {\n this.lastActivePlayingState = this.instance.is_playing();\n this.instance.pause();\n }\n // Play only if instance was playing originally.\n if (!document.hidden && this.lastActivePlayingState === true) {\n this.instance.play();\n }\n }, false);\n }\n /**\n * Polyfill of height getter for HTMLEmbedElement and HTMLObjectElement\n *\n * @ignore\n * @internal\n */\n get height() {\n return this.getAttribute(\"height\") || \"\";\n }\n /**\n * Polyfill of height setter for HTMLEmbedElement and HTMLObjectElement\n *\n * @ignore\n * @internal\n */\n set height(height) {\n this.setAttribute(\"height\", height);\n }\n /**\n * Polyfill of width getter for HTMLEmbedElement and HTMLObjectElement\n *\n * @ignore\n * @internal\n */\n get width() {\n return this.getAttribute(\"width\") || \"\";\n }\n /**\n * Polyfill of width setter for HTMLEmbedElement and HTMLObjectElement\n *\n * @ignore\n * @internal\n */\n set width(widthVal) {\n this.setAttribute(\"width\", widthVal);\n }\n /**\n * Polyfill of type getter for HTMLEmbedElement and HTMLObjectElement\n *\n * @ignore\n * @internal\n */\n get type() {\n return this.getAttribute(\"type\") || \"\";\n }\n /**\n * Polyfill of type setter for HTMLEmbedElement and HTMLObjectElement\n *\n * @ignore\n * @internal\n */\n set type(typeVal) {\n this.setAttribute(\"type\", typeVal);\n }\n /**\n * @ignore\n * @internal\n */\n connectedCallback() {\n this.updateStyles();\n applyStaticStyles(this.staticStyles);\n }\n /**\n * @ignore\n * @internal\n */\n static get observedAttributes() {\n return [\"width\", \"height\"];\n }\n /**\n * @ignore\n * @internal\n */\n attributeChangedCallback(name, _oldValue, _newValue) {\n if (name === \"width\" || name === \"height\") {\n this.updateStyles();\n }\n }\n /**\n * @ignore\n * @internal\n */\n disconnectedCallback() {\n this.destroy();\n }\n /**\n * Updates the internal shadow DOM to reflect any set attributes from\n * this element.\n */\n updateStyles() {\n if (this.dynamicStyles.sheet) {\n if (this.dynamicStyles.sheet.cssRules) {\n for (let i = this.dynamicStyles.sheet.cssRules.length - 1; i >= 0; i--) {\n this.dynamicStyles.sheet.deleteRule(i);\n }\n }\n const widthAttr = this.attributes.getNamedItem(\"width\");\n if (widthAttr !== undefined && widthAttr !== null) {\n const width = RufflePlayer.htmlDimensionToCssDimension(widthAttr.value);\n if (width !== null) {\n this.dynamicStyles.sheet.insertRule(`:host { width: ${width}; }`);\n }\n }\n const heightAttr = this.attributes.getNamedItem(\"height\");\n if (heightAttr !== undefined && heightAttr !== null) {\n const height = RufflePlayer.htmlDimensionToCssDimension(heightAttr.value);\n if (height !== null) {\n this.dynamicStyles.sheet.insertRule(`:host { height: ${height}; }`);\n }\n }\n }\n }\n /**\n * Determine if this element is the fallback content of another Ruffle\n * player.\n *\n * This heuristic assumes Ruffle objects will never use their fallback\n * content. If this changes, then this code also needs to change.\n *\n * @private\n */\n isUnusedFallbackObject() {\n const element = lookupElement(\"ruffle-object\");\n if (element !== null) {\n let parent = this.parentNode;\n while (parent !== document && parent !== null) {\n if (parent.nodeName === element.name) {\n return true;\n }\n parent = parent.parentNode;\n }\n }\n return false;\n }\n /**\n * Ensure a fresh Ruffle instance is ready on this player before continuing.\n *\n * @throws Any exceptions generated by loading Ruffle Core will be logged\n * and passed on.\n *\n * @private\n */\n async ensureFreshInstance() {\n var _a;\n this.destroy();\n if (this.loadedConfig &&\n this.loadedConfig.splashScreen !== false &&\n this.loadedConfig.preloader !== false) {\n this.showSplashScreen();\n }\n if (this.loadedConfig && this.loadedConfig.preloader === false) {\n console.warn(\"The configuration option preloader has been replaced with splashScreen. If you own this website, please update the configuration.\");\n }\n if (this.loadedConfig &&\n this.loadedConfig.maxExecutionDuration &&\n typeof this.loadedConfig.maxExecutionDuration !== \"number\") {\n console.warn(\"Configuration: An obsolete format for duration for 'maxExecutionDuration' was used, \" +\n \"please use a single number indicating seconds instead. For instance '15' instead of \" +\n \"'{secs: 15, nanos: 0}'.\");\n }\n if (this.loadedConfig &&\n typeof this.loadedConfig.contextMenu === \"boolean\") {\n console.warn('The configuration option contextMenu no longer takes a boolean. Use \"on\", \"off\", or \"rightClickOnly\".');\n }\n const ruffleConstructor = await loadRuffle(this.loadedConfig || {}, this.onRuffleDownloadProgress.bind(this)).catch((e) => {\n console.error(`Serious error loading Ruffle: ${e}`);\n // Serious duck typing. In error conditions, let's not make assumptions.\n if (window.location.protocol === \"file:\") {\n e.ruffleIndexError = PanicError.FileProtocol;\n }\n else {\n e.ruffleIndexError = PanicError.WasmNotFound;\n const message = String(e.message).toLowerCase();\n if (message.includes(\"mime\")) {\n e.ruffleIndexError = PanicError.WasmMimeType;\n }\n else if (message.includes(\"networkerror\") ||\n message.includes(\"failed to fetch\")) {\n e.ruffleIndexError = PanicError.WasmCors;\n }\n else if (message.includes(\"disallowed by embedder\")) {\n e.ruffleIndexError = PanicError.CSPConflict;\n }\n else if (e.name === \"CompileError\") {\n e.ruffleIndexError = PanicError.InvalidWasm;\n }\n else if (message.includes(\"could not download wasm module\") &&\n e.name === \"TypeError\") {\n e.ruffleIndexError = PanicError.WasmDownload;\n }\n else if (e.name === \"TypeError\") {\n e.ruffleIndexError = PanicError.JavascriptConflict;\n }\n else if (navigator.userAgent.includes(\"Edg\") &&\n message.includes(\"webassembly is not defined\")) {\n // Microsoft Edge detection.\n e.ruffleIndexError = PanicError.WasmDisabledMicrosoftEdge;\n }\n }\n this.panic(e);\n throw e;\n });\n this.instance = await new ruffleConstructor(this.container, this, this.loadedConfig);\n this.instance.set_volume(this.volumeSettings.get_volume());\n this.rendererDebugInfo = this.instance.renderer_debug_info();\n if (this.rendererDebugInfo.includes(\"Adapter Device Type: Cpu\")) {\n this.container.addEventListener(\"mouseover\", this.openHardwareAccelerationModal.bind(this), {\n once: true,\n });\n }\n const actuallyUsedRendererName = this.instance.renderer_name();\n console.log(\"%c\" +\n \"New Ruffle instance created (Version: \" +\n buildInfo.versionName +\n \" | WebAssembly extensions: \" +\n (ruffleConstructor.is_wasm_simd_used() ? \"ON\" : \"OFF\") +\n \" | Used renderer: \" +\n (actuallyUsedRendererName !== null && actuallyUsedRendererName !== void 0 ? actuallyUsedRendererName : \"\") +\n \")\", \"background: #37528C; color: #FFAD33\");\n // In Firefox, AudioContext.state is always \"suspended\" when the object has just been created.\n // It may change by itself to \"running\" some milliseconds later. So we need to wait a little\n // bit before checking if autoplay is supported and applying the instance config.\n if (this.audioState() !== \"running\") {\n this.container.style.visibility = \"hidden\";\n await new Promise((resolve) => {\n window.setTimeout(() => {\n resolve();\n }, 200);\n });\n this.container.style.visibility = \"\";\n }\n this.unmuteAudioContext();\n // On Android, the virtual keyboard needs to be dismissed as otherwise it re-focuses when clicking elsewhere\n if (navigator.userAgent.toLowerCase().includes(\"android\")) {\n this.container.addEventListener(\"click\", () => this.virtualKeyboard.blur());\n }\n // Treat invalid values as `AutoPlay.Auto`.\n if (!this.loadedConfig ||\n this.loadedConfig.autoplay === AutoPlay.On ||\n (this.loadedConfig.autoplay !== AutoPlay.Off &&\n this.audioState() === \"running\")) {\n this.play();\n if (this.audioState() !== \"running\") {\n // Treat invalid values as `UnmuteOverlay.Visible`.\n if (!this.loadedConfig ||\n this.loadedConfig.unmuteOverlay !== UnmuteOverlay.Hidden) {\n this.unmuteOverlay.style.display = \"block\";\n }\n this.container.addEventListener(\"click\", this.unmuteOverlayClicked.bind(this), {\n once: true,\n });\n const audioContext = (_a = this.instance) === null || _a === void 0 ? void 0 : _a.audio_context();\n if (audioContext) {\n audioContext.onstatechange = () => {\n if (audioContext.state === \"running\") {\n this.unmuteOverlayClicked();\n }\n audioContext.onstatechange = null;\n };\n }\n }\n }\n else {\n this.playButton.style.display = \"block\";\n }\n }\n /**\n * Uploads the splash screen progress bar.\n *\n * @param bytesLoaded The size of the Ruffle WebAssembly file downloaded so far.\n * @param bytesTotal The total size of the Ruffle WebAssembly file.\n */\n onRuffleDownloadProgress(bytesLoaded, bytesTotal) {\n const loadBar = (this.splashScreen.querySelector(\".loadbar-inner\"));\n const outerLoadbar = (this.splashScreen.querySelector(\".loadbar\"));\n if (Number.isNaN(bytesTotal)) {\n if (outerLoadbar) {\n outerLoadbar.style.display = \"none\";\n }\n }\n else {\n loadBar.style.width = `${100.0 * (bytesLoaded / bytesTotal)}%`;\n }\n }\n /**\n * Destroys the currently running instance of Ruffle.\n */\n destroy() {\n if (this.instance) {\n this.instance.destroy();\n this.instance = null;\n this._metadata = null;\n this._readyState = ReadyState.HaveNothing;\n console.log(\"Ruffle instance destroyed.\");\n }\n }\n checkOptions(options) {\n if (typeof options === \"string\") {\n return { url: options };\n }\n const check = (condition, message) => {\n if (!condition) {\n const error = new TypeError(message);\n error.ruffleIndexError = PanicError.JavascriptConfiguration;\n this.panic(error);\n throw error;\n }\n };\n check(options !== null && typeof options === \"object\", \"Argument 0 must be a string or object\");\n check(\"url\" in options || \"data\" in options, \"Argument 0 must contain a `url` or `data` key\");\n check(!(\"url\" in options) || typeof options.url === \"string\", \"`url` must be a string\");\n return options;\n }\n /**\n * Reloads the player, as if you called {@link RufflePlayer.load} with the same config as the last time it was called.\n *\n * If this player has never been loaded, this method will return an error.\n */\n async reload() {\n if (this.loadedConfig) {\n await this.load(this.loadedConfig);\n }\n else {\n throw new Error(\"Cannot reload if load wasn't first called\");\n }\n }\n /**\n * Loads a specified movie into this player.\n *\n * This will replace any existing movie that may be playing.\n *\n * @param options One of the following:\n * - A URL, passed as a string, which will load a URL with default options.\n * - A [[URLLoadOptions]] object, to load a URL with options.\n * - A [[DataLoadOptions]] object, to load data with options.\n *\n * The options will be defaulted by the [[config]] field, which itself\n * is defaulted by a global `window.RufflePlayer.config`.\n */\n async load(options) {\n var _a, _b;\n options = this.checkOptions(options);\n if (!this.isConnected || this.isUnusedFallbackObject()) {\n console.warn(\"Ignoring attempt to play a disconnected or suspended Ruffle element\");\n return;\n }\n if (isFallbackElement(this)) {\n // Silently fail on attempt to play a Ruffle element inside a specific node.\n return;\n }\n try {\n this.loadedConfig = Object.assign(Object.assign(Object.assign(Object.assign({}, DEFAULT_CONFIG), ((_b = (_a = window.RufflePlayer) === null || _a === void 0 ? void 0 : _a.config) !== null && _b !== void 0 ? _b : {})), this.config), options);\n // Pre-emptively set background color of container while Ruffle/SWF loads.\n if (this.loadedConfig.backgroundColor &&\n this.loadedConfig.wmode !== WindowMode.Transparent) {\n this.container.style.backgroundColor =\n this.loadedConfig.backgroundColor;\n }\n await this.ensureFreshInstance();\n if (\"url\" in options) {\n console.log(`Loading SWF file ${options.url}`);\n this.swfUrl = new URL(options.url, document.baseURI);\n this.instance.stream_from(this.swfUrl.href, sanitizeParameters(options.parameters));\n }\n else if (\"data\" in options) {\n console.log(\"Loading SWF data\");\n this.instance.load_data(new Uint8Array(options.data), sanitizeParameters(options.parameters), options.swfFileName || \"movie.swf\");\n }\n }\n catch (e) {\n console.error(`Serious error occurred loading SWF file: ${e}`);\n const err = new Error(e);\n if (err.message.includes(\"Error parsing config\")) {\n err.ruffleIndexError = PanicError.JavascriptConfiguration;\n }\n this.panic(err);\n throw err;\n }\n }\n /**\n * Plays or resumes the movie.\n */\n play() {\n if (this.instance) {\n this.instance.play();\n this.playButton.style.display = \"none\";\n }\n }\n /**\n * Whether this player is currently playing.\n *\n * @returns True if this player is playing, false if it's paused or hasn't started yet.\n */\n get isPlaying() {\n if (this.instance) {\n return this.instance.is_playing();\n }\n return false;\n }\n /**\n * Returns the master volume of the player.\n *\n * The volume is linear and not adapted for logarithmic hearing.\n *\n * @returns The volume. 1.0 is 100% volume.\n */\n get volume() {\n if (this.instance) {\n return this.instance.volume();\n }\n return 1.0;\n }\n /**\n * Sets the master volume of the player.\n *\n * The volume should be linear and not adapted for logarithmic hearing.\n *\n * @param value The volume. 1.0 is 100% volume.\n */\n set volume(value) {\n if (this.instance) {\n this.instance.set_volume(value);\n }\n }\n /**\n * Checks if this player is allowed to be fullscreen by the browser.\n *\n * @returns True if you may call [[enterFullscreen]].\n */\n get fullscreenEnabled() {\n return !!(document.fullscreenEnabled || document.webkitFullscreenEnabled);\n }\n /**\n * Checks if this player is currently fullscreen inside the browser.\n *\n * @returns True if it is fullscreen.\n */\n get isFullscreen() {\n return ((document.fullscreenElement || document.webkitFullscreenElement) ===\n this);\n }\n /**\n * Exported function that requests the browser to change the fullscreen state if\n * it is allowed.\n *\n * @param isFull Whether to set to fullscreen or return to normal.\n */\n setFullscreen(isFull) {\n if (this.fullscreenEnabled && isFull !== this.isFullscreen) {\n if (isFull) {\n this.enterFullscreen();\n }\n else {\n this.exitFullscreen();\n }\n }\n }\n /**\n * Requests the browser to make this player fullscreen.\n *\n * This is not guaranteed to succeed, please check [[fullscreenEnabled]] first.\n */\n enterFullscreen() {\n const options = {\n navigationUI: \"hide\",\n };\n if (this.requestFullscreen) {\n this.requestFullscreen(options);\n }\n else if (this.webkitRequestFullscreen) {\n this.webkitRequestFullscreen(options);\n }\n else if (this.webkitRequestFullScreen) {\n this.webkitRequestFullScreen(options);\n }\n }\n /**\n * Requests the browser to no longer make this player fullscreen.\n */\n exitFullscreen() {\n if (document.exitFullscreen) {\n document.exitFullscreen();\n }\n else if (document.webkitExitFullscreen) {\n document.webkitExitFullscreen();\n }\n else if (document.webkitCancelFullScreen) {\n document.webkitCancelFullScreen();\n }\n }\n /**\n * Called when entering / leaving fullscreen.\n */\n fullScreenChange() {\n var _a;\n (_a = this.instance) === null || _a === void 0 ? void 0 : _a.set_fullscreen(this.isFullscreen);\n }\n /**\n * Prompt the user to download a file.\n *\n * @param blob The content to download.\n * @param name The name to give the file.\n */\n saveFile(blob, name) {\n const blobURL = URL.createObjectURL(blob);\n const link = document.createElement(\"a\");\n link.href = blobURL;\n link.style.display = \"none\";\n link.download = name;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n URL.revokeObjectURL(blobURL);\n }\n checkIfTouch(event) {\n this.isTouch =\n event.pointerType === \"touch\" || event.pointerType === \"pen\";\n }\n base64ToBlob(bytesBase64, mimeString) {\n const byteString = atob(bytesBase64);\n const ab = new ArrayBuffer(byteString.length);\n const ia = new Uint8Array(ab);\n for (let i = 0; i < byteString.length; i++) {\n ia[i] = byteString.charCodeAt(i);\n }\n const blob = new Blob([ab], { type: mimeString });\n return blob;\n }\n /**\n * @returns If the string represent a base-64 encoded SOL file\n * Check if string is a base-64 encoded SOL file\n * @param solData The base-64 encoded SOL string\n */\n isB64SOL(solData) {\n try {\n const decodedData = atob(solData);\n return decodedData.slice(6, 10) === \"TCSO\";\n }\n catch (e) {\n return false;\n }\n }\n confirmReloadSave(solKey, b64SolData, replace) {\n if (this.isB64SOL(b64SolData)) {\n if (localStorage[solKey]) {\n if (!replace) {\n const confirmDelete = confirm(text(\"save-delete-prompt\"));\n if (!confirmDelete) {\n return;\n }\n }\n const swfPath = this.swfUrl ? this.swfUrl.pathname : \"\";\n const swfHost = this.swfUrl\n ? this.swfUrl.hostname\n : document.location.hostname;\n const savePath = solKey.split(\"/\").slice(1, -1).join(\"/\");\n if (swfPath.includes(savePath) && solKey.startsWith(swfHost)) {\n const confirmReload = confirm(text(\"save-reload-prompt\", {\n action: replace ? \"replace\" : \"delete\",\n }));\n if (confirmReload && this.loadedConfig) {\n this.destroy();\n replace\n ? localStorage.setItem(solKey, b64SolData)\n : localStorage.removeItem(solKey);\n this.reload();\n this.populateSaves();\n this.saveManager.classList.add(\"hidden\");\n }\n return;\n }\n replace\n ? localStorage.setItem(solKey, b64SolData)\n : localStorage.removeItem(solKey);\n this.populateSaves();\n this.saveManager.classList.add(\"hidden\");\n }\n }\n }\n /**\n * Replace save from SOL file.\n *\n * @param event The change event fired\n * @param solKey The localStorage save file key\n */\n replaceSOL(event, solKey) {\n const fileInput = event.target;\n const reader = new FileReader();\n reader.addEventListener(\"load\", () => {\n if (reader.result && typeof reader.result === \"string\") {\n const b64Regex = new RegExp(\"data:.*;base64,\");\n const b64SolData = reader.result.replace(b64Regex, \"\");\n this.confirmReloadSave(solKey, b64SolData, true);\n }\n });\n if (fileInput &&\n fileInput.files &&\n fileInput.files.length > 0 &&\n fileInput.files[0]) {\n reader.readAsDataURL(fileInput.files[0]);\n }\n }\n /**\n * Delete local save.\n *\n * @param key The key to remove from local storage\n */\n deleteSave(key) {\n const b64SolData = localStorage.getItem(key);\n if (b64SolData) {\n this.confirmReloadSave(key, b64SolData, false);\n }\n }\n /**\n * Puts the local save SOL file keys in a table.\n */\n populateSaves() {\n const saveTable = this.saveManager.querySelector(\"#local-saves\");\n if (!saveTable) {\n return;\n }\n try {\n if (localStorage === null) {\n return;\n }\n }\n catch (e) {\n return;\n }\n saveTable.textContent = \"\";\n Object.keys(localStorage).forEach((key) => {\n const solName = key.split(\"/\").pop();\n const solData = localStorage.getItem(key);\n if (solName && solData && this.isB64SOL(solData)) {\n const row = document.createElement(\"TR\");\n const keyCol = document.createElement(\"TD\");\n keyCol.textContent = solName;\n keyCol.title = key;\n const downloadCol = document.createElement(\"TD\");\n const downloadSpan = document.createElement(\"SPAN\");\n downloadSpan.textContent = text(\"save-download\");\n downloadSpan.className = \"save-option\";\n downloadSpan.addEventListener(\"click\", () => {\n const blob = this.base64ToBlob(solData, \"application/octet-stream\");\n this.saveFile(blob, solName + \".sol\");\n });\n downloadCol.appendChild(downloadSpan);\n const replaceCol = document.createElement(\"TD\");\n const replaceInput = (document.createElement(\"INPUT\"));\n replaceInput.type = \"file\";\n replaceInput.accept = \".sol\";\n replaceInput.className = \"replace-save\";\n replaceInput.id = \"replace-save-\" + key;\n const replaceLabel = (document.createElement(\"LABEL\"));\n replaceLabel.htmlFor = \"replace-save-\" + key;\n replaceLabel.textContent = text(\"save-replace\");\n replaceLabel.className = \"save-option\";\n replaceInput.addEventListener(\"change\", (event) => this.replaceSOL(event, key));\n replaceCol.appendChild(replaceInput);\n replaceCol.appendChild(replaceLabel);\n const deleteCol = document.createElement(\"TD\");\n const deleteSpan = document.createElement(\"SPAN\");\n deleteSpan.textContent = text(\"save-delete\");\n deleteSpan.className = \"save-option\";\n deleteSpan.addEventListener(\"click\", () => this.deleteSave(key));\n deleteCol.appendChild(deleteSpan);\n row.appendChild(keyCol);\n row.appendChild(downloadCol);\n row.appendChild(replaceCol);\n row.appendChild(deleteCol);\n saveTable.appendChild(row);\n }\n });\n }\n /**\n * Gets the local save information as SOL files and downloads them as a single ZIP file.\n */\n async backupSaves() {\n const zip = new JSZip();\n const duplicateNames = [];\n Object.keys(localStorage).forEach((key) => {\n let solName = String(key.split(\"/\").pop());\n const solData = localStorage.getItem(key);\n if (solData && this.isB64SOL(solData)) {\n const blob = this.base64ToBlob(solData, \"application/octet-stream\");\n const duplicate = duplicateNames.filter((value) => value === solName).length;\n duplicateNames.push(solName);\n if (duplicate > 0) {\n solName += ` (${duplicate + 1})`;\n }\n zip.file(solName + \".sol\", blob);\n }\n });\n const blob = await zip.generateAsync({ type: \"blob\" });\n this.saveFile(blob, \"saves.zip\");\n }\n /**\n * Opens the hardware acceleration info modal.\n */\n openHardwareAccelerationModal() {\n this.hardwareAccelerationModal.classList.remove(\"hidden\");\n }\n /**\n * Opens the save manager.\n */\n openSaveManager() {\n this.saveManager.classList.remove(\"hidden\");\n }\n /**\n * Opens the volume controls.\n */\n openVolumeControls() {\n this.volumeControls.classList.remove(\"hidden\");\n }\n /**\n * Fetches the loaded SWF and downloads it.\n */\n async downloadSwf() {\n try {\n if (this.swfUrl) {\n console.log(\"Downloading SWF: \" + this.swfUrl);\n const response = await fetch(this.swfUrl.href);\n if (!response.ok) {\n console.error(\"SWF download failed\");\n return;\n }\n const blob = await response.blob();\n this.saveFile(blob, swfFileName(this.swfUrl));\n }\n else {\n console.error(\"SWF download failed\");\n }\n }\n catch (err) {\n console.error(\"SWF download failed\");\n }\n }\n virtualKeyboardInput() {\n const input = this.virtualKeyboard;\n const string = input.value;\n for (const char of string) {\n for (const eventType of [\"keydown\", \"keyup\"]) {\n this.dispatchEvent(new KeyboardEvent(eventType, {\n key: char,\n bubbles: true,\n }));\n }\n }\n input.value = \"\";\n }\n openVirtualKeyboard() {\n // On Android, the Rust code that opens the virtual keyboard triggers\n // before the TypeScript code that closes it, so delay opening it\n if (navigator.userAgent.toLowerCase().includes(\"android\")) {\n setTimeout(() => {\n this.virtualKeyboard.focus({ preventScroll: true });\n }, 100);\n }\n else {\n this.virtualKeyboard.focus({ preventScroll: true });\n }\n }\n isVirtualKeyboardFocused() {\n return this.shadow.activeElement === this.virtualKeyboard;\n }\n contextMenuItems() {\n const CHECKMARK = String.fromCharCode(0x2713);\n const items = [];\n const addSeparator = () => {\n // Don't start with or duplicate separators.\n if (items.length > 0 && items[items.length - 1] !== null) {\n items.push(null);\n }\n };\n if (this.instance && this.isPlaying) {\n const customItems = this.instance.prepare_context_menu();\n customItems.forEach((item, index) => {\n if (item.separatorBefore) {\n addSeparator();\n }\n items.push({\n // TODO: better checkboxes\n text: item.caption + (item.checked ? ` (${CHECKMARK})` : ``),\n onClick: () => { var _a; return (_a = this.instance) === null || _a === void 0 ? void 0 : _a.run_context_menu_callback(index); },\n enabled: item.enabled,\n });\n });\n addSeparator();\n }\n if (this.fullscreenEnabled) {\n if (this.isFullscreen) {\n items.push({\n text: text(\"context-menu-exit-fullscreen\"),\n onClick: () => { var _a; return (_a = this.instance) === null || _a === void 0 ? void 0 : _a.set_fullscreen(false); },\n });\n }\n else {\n items.push({\n text: text(\"context-menu-enter-fullscreen\"),\n onClick: () => { var _a; return (_a = this.instance) === null || _a === void 0 ? void 0 : _a.set_fullscreen(true); },\n });\n }\n }\n items.push({\n text: text(\"context-menu-volume-controls\"),\n onClick: () => {\n this.openVolumeControls();\n },\n });\n if (this.instance &&\n this.swfUrl &&\n this.loadedConfig &&\n this.loadedConfig.showSwfDownload === true) {\n addSeparator();\n items.push({\n text: text(\"context-menu-download-swf\"),\n onClick: this.downloadSwf.bind(this),\n });\n }\n if (window.isSecureContext) {\n items.push({\n text: text(\"context-menu-copy-debug-info\"),\n onClick: () => navigator.clipboard.writeText(this.getPanicData()),\n });\n }\n this.populateSaves();\n const localSaveTable = this.saveManager.querySelector(\"#local-saves\");\n if (localSaveTable && localSaveTable.textContent !== \"\") {\n items.push({\n text: text(\"context-menu-open-save-manager\"),\n onClick: this.openSaveManager.bind(this),\n });\n }\n addSeparator();\n items.push({\n text: text(\"context-menu-about-ruffle\", {\n flavor: isExtension ? \"extension\" : \"\",\n version: buildInfo.versionName,\n }),\n onClick() {\n window.open(RUFFLE_ORIGIN, \"_blank\");\n },\n });\n // Give option to disable context menu when touch support is being used\n // to avoid a long press triggering the context menu. (#1972)\n if (this.isTouch) {\n addSeparator();\n items.push({\n text: text(\"context-menu-hide\"),\n onClick: () => (this.contextMenuForceDisabled = true),\n });\n }\n return items;\n }\n pointerDown(event) {\n this.pointerDownPosition = new Point(event.pageX, event.pageY);\n this.pointerMoveMaxDistance = 0;\n this.startLongPressTimer();\n }\n clearLongPressTimer() {\n if (this.longPressTimer) {\n clearTimeout(this.longPressTimer);\n this.longPressTimer = null;\n }\n }\n startLongPressTimer() {\n const longPressTimeout = 800;\n this.clearLongPressTimer();\n this.longPressTimer = setTimeout(() => this.clearLongPressTimer(), longPressTimeout);\n }\n checkLongPressMovement(event) {\n if (this.pointerDownPosition !== null) {\n const currentPosition = new Point(event.pageX, event.pageY);\n const distance = this.pointerDownPosition.distanceTo(currentPosition);\n if (distance > this.pointerMoveMaxDistance) {\n this.pointerMoveMaxDistance = distance;\n }\n }\n }\n checkLongPress(event) {\n const maxAllowedDistance = 15;\n if (this.longPressTimer) {\n this.clearLongPressTimer();\n // The pointerType condition is to ensure right-click does not trigger\n // a context menu the wrong way the first time you right-click,\n // before contextMenuSupported is set.\n }\n else if (!this.contextMenuSupported &&\n event.pointerType !== \"mouse\" &&\n this.pointerMoveMaxDistance < maxAllowedDistance) {\n this.showContextMenu(event);\n }\n }\n showContextMenu(event) {\n var _a, _b, _c;\n const modalOpen = Array.from(this.shadow.querySelectorAll(\".modal\")).some((modal) => !modal.classList.contains(\"hidden\"));\n if (this.panicked || modalOpen) {\n return;\n }\n event.preventDefault();\n if (event.type === \"contextmenu\") {\n this.contextMenuSupported = true;\n window.addEventListener(\"click\", this.hideContextMenu.bind(this), {\n once: true,\n });\n }\n else {\n window.addEventListener(\"pointerup\", this.hideContextMenu.bind(this), { once: true });\n event.stopPropagation();\n }\n if ([false, ContextMenu.Off].includes((_b = (_a = this.loadedConfig) === null || _a === void 0 ? void 0 : _a.contextMenu) !== null && _b !== void 0 ? _b : ContextMenu.On) ||\n (this.isTouch &&\n ((_c = this.loadedConfig) === null || _c === void 0 ? void 0 : _c.contextMenu) ===\n ContextMenu.RightClickOnly) ||\n this.contextMenuForceDisabled) {\n return;\n }\n // Clear all context menu items.\n while (this.contextMenuElement.firstChild) {\n this.contextMenuElement.removeChild(this.contextMenuElement.firstChild);\n }\n // Populate context menu items.\n for (const item of this.contextMenuItems()) {\n if (item === null) {\n const menuSeparator = document.createElement(\"li\");\n menuSeparator.className = \"menu-separator\";\n const hr = document.createElement(\"hr\");\n menuSeparator.appendChild(hr);\n this.contextMenuElement.appendChild(menuSeparator);\n }\n else {\n const { text, onClick, enabled } = item;\n const menuItem = document.createElement(\"li\");\n menuItem.className = \"menu-item\";\n menuItem.textContent = text;\n this.contextMenuElement.appendChild(menuItem);\n if (enabled !== false) {\n menuItem.addEventListener(this.contextMenuSupported ? \"click\" : \"pointerup\", onClick);\n }\n else {\n menuItem.classList.add(\"disabled\");\n }\n }\n }\n // Place a context menu in the top-left corner, so\n // its `clientWidth` and `clientHeight` are not clamped.\n this.contextMenuElement.style.left = \"0\";\n this.contextMenuElement.style.top = \"0\";\n this.contextMenuOverlay.classList.remove(\"hidden\");\n const rect = this.getBoundingClientRect();\n const x = event.clientX - rect.x;\n const y = event.clientY - rect.y;\n const maxX = rect.width - this.contextMenuElement.clientWidth - 1;\n const maxY = rect.height - this.contextMenuElement.clientHeight - 1;\n this.contextMenuElement.style.left =\n Math.floor(Math.min(x, maxX)) + \"px\";\n this.contextMenuElement.style.top =\n Math.floor(Math.min(y, maxY)) + \"px\";\n }\n hideContextMenu() {\n var _a;\n (_a = this.instance) === null || _a === void 0 ? void 0 : _a.clear_custom_menu_items();\n this.contextMenuOverlay.classList.add(\"hidden\");\n }\n /**\n * Pauses this player.\n *\n * No more frames, scripts or sounds will be executed.\n * This movie will be considered inactive and will not wake up until resumed.\n */\n pause() {\n if (this.instance) {\n this.instance.pause();\n this.playButton.style.display = \"block\";\n }\n }\n audioState() {\n if (this.instance) {\n const audioContext = this.instance.audio_context();\n return (audioContext && audioContext.state) || \"running\";\n }\n return \"suspended\";\n }\n unmuteOverlayClicked() {\n if (this.instance) {\n if (this.audioState() !== \"running\") {\n const audioContext = this.instance.audio_context();\n if (audioContext) {\n audioContext.resume();\n }\n }\n this.unmuteOverlay.style.display = \"none\";\n }\n }\n /**\n * Plays a silent sound based on the AudioContext's sample rate.\n *\n * This is used to unmute audio on iOS and iPadOS when silent mode is enabled on the device (issue 1552).\n */\n unmuteAudioContext() {\n // No need to play the dummy sound again once audio is unmuted.\n if (isAudioContextUnmuted) {\n return;\n }\n // TODO: Use `navigator.userAgentData` to detect the platform when support improves?\n if (navigator.maxTouchPoints < 1) {\n isAudioContextUnmuted = true;\n return;\n }\n this.container.addEventListener(\"click\", () => {\n var _a;\n if (isAudioContextUnmuted) {\n return;\n }\n const audioContext = (_a = this.instance) === null || _a === void 0 ? void 0 : _a.audio_context();\n if (!audioContext) {\n return;\n }\n const audio = new Audio();\n audio.src = (() => {\n // Returns a seven samples long 8 bit mono WAVE file.\n // This is required to prevent the AudioContext from desyncing and crashing.\n const arrayBuffer = new ArrayBuffer(10);\n const dataView = new DataView(arrayBuffer);\n const sampleRate = audioContext.sampleRate;\n dataView.setUint32(0, sampleRate, true);\n dataView.setUint32(4, sampleRate, true);\n dataView.setUint16(8, 1, true);\n const missingCharacters = window\n .btoa(String.fromCharCode(...new Uint8Array(arrayBuffer)))\n .slice(0, 13);\n return `data:audio/wav;base64,UklGRisAAABXQVZFZm10IBAAAAABAAEA${missingCharacters}AgAZGF0YQcAAACAgICAgICAAAA=`;\n })();\n audio.load();\n audio\n .play()\n .then(() => {\n isAudioContextUnmuted = true;\n })\n .catch((err) => {\n console.warn(`Failed to play dummy sound: ${err}`);\n });\n }, { once: true });\n }\n /**\n * Copies attributes and children from another element to this player element.\n * Used by the polyfill elements, RuffleObject and RuffleEmbed.\n *\n * @param element The element to copy all attributes from.\n */\n copyElement(element) {\n if (element) {\n for (const attribute of element.attributes) {\n if (attribute.specified) {\n // Issue 468: Chrome \"Click to Active Flash\" box stomps on title attribute\n if (attribute.name === \"title\" &&\n attribute.value === \"Adobe Flash Player\") {\n continue;\n }\n try {\n this.setAttribute(attribute.name, attribute.value);\n }\n catch (err) {\n // The embed may have invalid attributes, so handle these gracefully.\n console.warn(`Unable to set attribute ${attribute.name} on Ruffle instance`);\n }\n }\n }\n for (const node of Array.from(element.children)) {\n this.appendChild(node);\n }\n }\n }\n /**\n * Converts a dimension attribute on an HTML embed/object element to a valid CSS dimension.\n * HTML element dimensions are unitless, but can also be percentages.\n * Add a 'px' unit unless the value is a percentage.\n * Returns null if this is not a valid dimension.\n *\n * @param attribute The attribute to convert\n *\n * @private\n */\n static htmlDimensionToCssDimension(attribute) {\n if (attribute) {\n const match = attribute.match(DIMENSION_REGEX);\n if (match) {\n let out = match[1];\n if (!match[3]) {\n // Unitless -- add px for CSS.\n out += \"px\";\n }\n return out;\n }\n }\n return null;\n }\n /**\n * When a movie presents a new callback through `ExternalInterface.addCallback`,\n * we are informed so that we can expose the method on any relevant DOM element.\n *\n * This should only be called by Ruffle itself and not by users.\n *\n * @param name The name of the callback that is now available.\n *\n * @internal\n * @ignore\n */\n onCallbackAvailable(name) {\n const instance = this.instance;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this[name] = (...args) => {\n return instance === null || instance === void 0 ? void 0 : instance.call_exposed_callback(name, args);\n };\n }\n /**\n * Sets a trace observer on this flash player.\n *\n * The observer will be called, as a function, for each message that the playing movie will \"trace\" (output).\n *\n * @param observer The observer that will be called for each trace.\n */\n set traceObserver(observer) {\n var _a;\n (_a = this.instance) === null || _a === void 0 ? void 0 : _a.set_trace_observer(observer);\n }\n /**\n * Get data included in any panic of this ruffle-player\n *\n * @returns A string containing all the data included in the panic.\n */\n getPanicData() {\n let result = \"\\n# Player Info\\n\";\n result += `Allows script access: ${this.loadedConfig ? this.loadedConfig.allowScriptAccess : false}\\n`;\n result += `${this.rendererDebugInfo}\\n`;\n result += this.debugPlayerInfo();\n result += \"\\n# Page Info\\n\";\n result += `Page URL: ${document.location.href}\\n`;\n if (this.swfUrl) {\n result += `SWF URL: ${this.swfUrl}\\n`;\n }\n result += \"\\n# Browser Info\\n\";\n result += `User Agent: ${window.navigator.userAgent}\\n`;\n result += `Platform: ${window.navigator.platform}\\n`;\n result += `Has touch support: ${window.navigator.maxTouchPoints > 0}\\n`;\n result += \"\\n# Ruffle Info\\n\";\n result += `Version: ${buildInfo.versionNumber}\\n`;\n result += `Name: ${buildInfo.versionName}\\n`;\n result += `Channel: ${buildInfo.versionChannel}\\n`;\n result += `Built: ${buildInfo.buildDate}\\n`;\n result += `Commit: ${buildInfo.commitHash}\\n`;\n result += `Is extension: ${isExtension}\\n`;\n result += \"\\n# Metadata\\n\";\n if (this.metadata) {\n for (const [key, value] of Object.entries(this.metadata)) {\n result += `${key}: ${value}\\n`;\n }\n }\n return result;\n }\n /**\n * @param footerInfo An array of PanicLinkInfo objects.\n *\n * @returns The <ul> element to be used as the error footer\n */\n createErrorFooter(footerInfo) {\n const errorFooter = document.createElement(\"ul\");\n for (const linkInfo of footerInfo) {\n const footerItem = document.createElement(\"li\");\n const footerLink = document.createElement(\"a\");\n footerLink.href = linkInfo.url;\n footerLink.textContent = linkInfo.label;\n if (linkInfo.url === \"#\") {\n footerLink.id = \"panic-view-details\";\n }\n else {\n footerLink.target = \"_top\";\n }\n footerItem.appendChild(footerLink);\n errorFooter.appendChild(footerItem);\n }\n return errorFooter;\n }\n /**\n * Panics this specific player, forcefully destroying all resources and displays an error message to the user.\n *\n * This should be called when something went absolutely, incredibly and disastrously wrong and there is no chance\n * of recovery.\n *\n * Ruffle will attempt to isolate all damage to this specific player instance, but no guarantees can be made if there\n * was a core issue which triggered the panic. If Ruffle is unable to isolate the cause to a specific player, then\n * all players will panic and Ruffle will become \"poisoned\" - no more players will run on this page until it is\n * reloaded fresh.\n *\n * @param error The error, if any, that triggered this panic.\n */\n panic(error) {\n var _a;\n if (this.panicked) {\n // Only show the first major error, not any repeats - they aren't as important\n return;\n }\n this.panicked = true;\n this.hideSplashScreen();\n if (error instanceof Error &&\n (error.name === \"AbortError\" ||\n error.message.includes(\"AbortError\"))) {\n // Firefox: Don't display the panic screen if the user leaves the page while something is still loading\n return;\n }\n const errorIndex = (_a = error === null || error === void 0 ? void 0 : error.ruffleIndexError) !== null && _a !== void 0 ? _a : PanicError.Unknown;\n const errorArray = Object.assign([], {\n stackIndex: -1,\n avmStackIndex: -1,\n });\n errorArray.push(\"# Error Info\\n\");\n if (error instanceof Error) {\n errorArray.push(`Error name: ${error.name}\\n`);\n errorArray.push(`Error message: ${error.message}\\n`);\n if (error.stack) {\n const stackIndex = errorArray.push(`Error stack:\\n\\`\\`\\`\\n${error.stack}\\n\\`\\`\\`\\n`) - 1;\n if (error.avmStack) {\n const avmStackIndex = errorArray.push(`AVM2 stack:\\n\\`\\`\\`\\n ${error.avmStack\n .trim()\n .replace(/\\t/g, \" \")}\\n\\`\\`\\`\\n`) - 1;\n errorArray.avmStackIndex = avmStackIndex;\n }\n errorArray.stackIndex = stackIndex;\n }\n }\n else {\n errorArray.push(`Error: ${error}\\n`);\n }\n errorArray.push(this.getPanicData());\n const errorText = errorArray.join(\"\");\n const buildDate = new Date(buildInfo.buildDate);\n const monthsPrior = new Date();\n monthsPrior.setMonth(monthsPrior.getMonth() - 6); // 6 months prior\n const isBuildOutdated = monthsPrior > buildDate;\n // Create a link to GitHub with all of the error data, if the build is not outdated.\n // Otherwise, create a link to the downloads section on the Ruffle website.\n let actionLink;\n if (!isBuildOutdated) {\n let url;\n if (document.location.protocol.includes(\"extension\")) {\n url = this.swfUrl.href;\n }\n else {\n url = document.location.href;\n }\n // Remove query params for the issue title.\n url = url.split(/[?#]/, 1)[0];\n const issueTitle = `Error on ${url}`;\n let issueLink = `https://github.com/ruffle-rs/ruffle/issues/new?title=${encodeURIComponent(issueTitle)}&template=error_report.md&labels=error-report&body=`;\n let issueBody = encodeURIComponent(errorText);\n if (errorArray.stackIndex > -1 &&\n String(issueLink + issueBody).length > 8195) {\n // Strip the stack error from the array when the produced URL is way too long.\n // This should prevent \"414 Request-URI Too Large\" errors on GitHub.\n errorArray[errorArray.stackIndex] = null;\n if (errorArray.avmStackIndex > -1) {\n errorArray[errorArray.avmStackIndex] = null;\n }\n issueBody = encodeURIComponent(errorArray.join(\"\"));\n }\n issueLink += issueBody;\n actionLink = new PanicLinkInfo(issueLink, text(\"report-bug\"));\n }\n else {\n actionLink = new PanicLinkInfo(RUFFLE_ORIGIN + \"#downloads\", text(\"update-ruffle\"));\n }\n // Clears out any existing content (ie play button or canvas) and replaces it with the error screen\n let errorBody, errorFooter;\n switch (errorIndex) {\n case PanicError.FileProtocol:\n // General error: Running on the `file:` protocol\n errorBody = textAsParagraphs(\"error-file-protocol\");\n errorFooter = this.createErrorFooter([\n new PanicLinkInfo(RUFFLE_ORIGIN + \"/demo\", text(\"ruffle-demo\")),\n new PanicLinkInfo(RUFFLE_ORIGIN + \"#downloads\", text(\"ruffle-desktop\")),\n ]);\n break;\n case PanicError.JavascriptConfiguration:\n // General error: Incorrect JavaScript configuration\n errorBody = textAsParagraphs(\"error-javascript-config\");\n errorFooter = this.createErrorFooter([\n new PanicLinkInfo(\"https://github.com/ruffle-rs/ruffle/wiki/Using-Ruffle#javascript-api\", text(\"ruffle-wiki\")),\n new PanicLinkInfo(),\n ]);\n break;\n case PanicError.WasmNotFound:\n // Self hosted: Cannot load `.wasm` file - file not found\n errorBody = textAsParagraphs(\"error-wasm-not-found\");\n errorFooter = this.createErrorFooter([\n new PanicLinkInfo(\"https://github.com/ruffle-rs/ruffle/wiki/Using-Ruffle#configuration-options\", text(\"ruffle-wiki\")),\n new PanicLinkInfo(),\n ]);\n break;\n case PanicError.WasmMimeType:\n // Self hosted: Cannot load `.wasm` file - incorrect MIME type\n errorBody = textAsParagraphs(\"error-wasm-mime-type\");\n errorFooter = this.createErrorFooter([\n new PanicLinkInfo(\"https://github.com/ruffle-rs/ruffle/wiki/Using-Ruffle#configure-webassembly-mime-type\", text(\"ruffle-wiki\")),\n new PanicLinkInfo(),\n ]);\n break;\n case PanicError.SwfFetchError:\n errorBody = textAsParagraphs(\"error-swf-fetch\");\n errorFooter = this.createErrorFooter([new PanicLinkInfo()]);\n break;\n case PanicError.SwfCors:\n // Self hosted: Cannot load SWF file - CORS issues\n errorBody = textAsParagraphs(\"error-swf-cors\");\n errorFooter = this.createErrorFooter([\n new PanicLinkInfo(\"https://github.com/ruffle-rs/ruffle/wiki/Using-Ruffle#configure-cors-header\", text(\"ruffle-wiki\")),\n new PanicLinkInfo(),\n ]);\n break;\n case PanicError.WasmCors:\n // Self hosted: Cannot load `.wasm` file - CORS issues\n errorBody = textAsParagraphs(\"error-wasm-cors\");\n errorFooter = this.createErrorFooter([\n new PanicLinkInfo(\"https://github.com/ruffle-rs/ruffle/wiki/Using-Ruffle#configure-cors-header\", text(\"ruffle-wiki\")),\n new PanicLinkInfo(),\n ]);\n break;\n case PanicError.InvalidWasm:\n // Self hosted: Cannot load `.wasm` file - incorrect configuration or missing files\n errorBody = textAsParagraphs(\"error-wasm-invalid\");\n errorFooter = this.createErrorFooter([\n new PanicLinkInfo(\"https://github.com/ruffle-rs/ruffle/wiki/Using-Ruffle#addressing-a-compileerror\", text(\"ruffle-wiki\")),\n new PanicLinkInfo(),\n ]);\n break;\n case PanicError.WasmDownload:\n // Usually a transient network error or botched deployment\n errorBody = textAsParagraphs(\"error-wasm-download\");\n errorFooter = this.createErrorFooter([new PanicLinkInfo()]);\n break;\n case PanicError.WasmDisabledMicrosoftEdge:\n // Self hosted: User has disabled WebAssembly in Microsoft Edge through the\n // \"Enhance your Security on the web\" setting.\n errorBody = textAsParagraphs(\"error-wasm-disabled-on-edge\");\n errorFooter = this.createErrorFooter([\n new PanicLinkInfo(\"https://github.com/ruffle-rs/ruffle/wiki/Frequently-Asked-Questions-For-Users#edge-webassembly-error\", text(\"more-info\")),\n new PanicLinkInfo(),\n ]);\n break;\n case PanicError.JavascriptConflict:\n // Self hosted: Cannot load `.wasm` file - a native object / function is overriden\n errorBody = textAsParagraphs(\"error-javascript-conflict\");\n if (isBuildOutdated) {\n errorBody.appendChild(textAsParagraphs(\"error-javascript-conflict-outdated\", {\n buildDate: buildInfo.buildDate,\n }));\n }\n errorFooter = this.createErrorFooter([\n actionLink,\n new PanicLinkInfo(),\n ]);\n break;\n case PanicError.CSPConflict:\n // General error: Cannot load `.wasm` file - a native object / function is overriden\n errorBody = textAsParagraphs(\"error-csp-conflict\");\n errorFooter = this.createErrorFooter([\n new PanicLinkInfo(\"https://github.com/ruffle-rs/ruffle/wiki/Using-Ruffle#configure-wasm-csp\", text(\"ruffle-wiki\")),\n new PanicLinkInfo(),\n ]);\n break;\n default:\n // Unknown error\n errorBody = textAsParagraphs(\"error-unknown\", {\n buildDate: buildInfo.buildDate,\n outdated: String(isBuildOutdated),\n });\n errorFooter = this.createErrorFooter([\n actionLink,\n new PanicLinkInfo(),\n ]);\n break;\n }\n const panicDiv = document.createElement(\"div\");\n panicDiv.id = \"panic\";\n const panicTitle = document.createElement(\"div\");\n panicTitle.id = \"panic-title\";\n panicTitle.textContent = text(\"panic-title\");\n panicDiv.appendChild(panicTitle);\n const panicBody = document.createElement(\"div\");\n panicBody.id = \"panic-body\";\n panicBody.appendChild(errorBody);\n panicDiv.appendChild(panicBody);\n const panicFooter = document.createElement(\"div\");\n panicFooter.id = \"panic-footer\";\n panicFooter.appendChild(errorFooter);\n panicDiv.appendChild(panicFooter);\n this.container.textContent = \"\";\n this.container.appendChild(panicDiv);\n const viewDetails = (this.container.querySelector(\"#panic-view-details\"));\n if (viewDetails) {\n viewDetails.onclick = () => {\n const panicBody = (this.container.querySelector(\"#panic-body\"));\n panicBody.classList.add(\"details\");\n const panicText = document.createElement(\"textarea\");\n panicText.readOnly = true;\n panicText.value = errorText;\n panicBody.replaceChildren(panicText);\n return false;\n };\n }\n // Do this last, just in case it causes any cascading issues.\n this.destroy();\n }\n displayRootMovieDownloadFailedMessage() {\n var _a, _b, _c;\n const openInNewTab = (_a = this.loadedConfig) === null || _a === void 0 ? void 0 : _a.openInNewTab;\n if (openInNewTab && window.location.origin !== this.swfUrl.origin) {\n const url = new URL(this.swfUrl);\n if ((_b = this.loadedConfig) === null || _b === void 0 ? void 0 : _b.parameters) {\n const parameters = sanitizeParameters((_c = this.loadedConfig) === null || _c === void 0 ? void 0 : _c.parameters);\n Object.entries(parameters).forEach(([key, value]) => {\n url.searchParams.set(key, value);\n });\n }\n this.hideSplashScreen();\n const div = document.createElement(\"div\");\n div.id = \"message-overlay\";\n const innerDiv = document.createElement(\"div\");\n innerDiv.className = \"message\";\n innerDiv.appendChild(textAsParagraphs(\"message-cant-embed\"));\n const buttonDiv = document.createElement(\"div\");\n const link = document.createElement(\"a\");\n link.innerText = text(\"open-in-new-tab\");\n link.onclick = () => openInNewTab(url);\n buttonDiv.appendChild(link);\n innerDiv.appendChild(buttonDiv);\n div.appendChild(innerDiv);\n this.container.prepend(div);\n }\n else {\n const error = new Error(\"Failed to fetch: \" + this.swfUrl);\n if (!this.swfUrl.protocol.includes(\"http\")) {\n error.ruffleIndexError = PanicError.FileProtocol;\n }\n else if (window.location.origin === this.swfUrl.origin ||\n // The extension's internal player page is not restricted by CORS\n window.location.protocol.includes(\"extension\")) {\n error.ruffleIndexError = PanicError.SwfFetchError;\n }\n else {\n // This is a selfhosted build of Ruffle that tried to make a cross-origin request\n error.ruffleIndexError = PanicError.SwfCors;\n }\n this.panic(error);\n }\n }\n /**\n * Show a dismissible message in front of the player.\n *\n * @param message The message shown to the user.\n */\n displayMessage(message) {\n const div = document.createElement(\"div\");\n div.id = \"message-overlay\";\n const messageDiv = document.createElement(\"div\");\n messageDiv.className = \"message\";\n const messageP = document.createElement(\"p\");\n messageP.textContent = message;\n messageDiv.appendChild(messageP);\n const buttonDiv = document.createElement(\"div\");\n const continueButton = document.createElement(\"button\");\n continueButton.id = \"continue-btn\";\n continueButton.textContent = text(\"continue\");\n buttonDiv.appendChild(continueButton);\n messageDiv.appendChild(buttonDiv);\n div.appendChild(messageDiv);\n this.container.prepend(div);\n (this.container.querySelector(\"#continue-btn\")).onclick = () => {\n div.parentNode.removeChild(div);\n };\n }\n /**\n * Show a video that uses an unsupported codec in a pop up.\n *\n * @param url The url of the video to be shown over the canvas.\n */\n displayUnsupportedVideo(url) {\n const videoHolder = this.videoModal.querySelector(\"#video-holder\");\n if (videoHolder) {\n const video = document.createElement(\"video\");\n video.addEventListener(\"contextmenu\", (event) => event.stopPropagation());\n video.src = url;\n video.autoplay = true;\n video.controls = true;\n videoHolder.textContent = \"\";\n videoHolder.appendChild(video);\n this.videoModal.classList.remove(\"hidden\");\n }\n }\n debugPlayerInfo() {\n return \"\";\n }\n hideSplashScreen() {\n this.splashScreen.classList.add(\"hidden\");\n this.container.classList.remove(\"hidden\");\n }\n showSplashScreen() {\n this.splashScreen.classList.remove(\"hidden\");\n this.container.classList.add(\"hidden\");\n }\n setMetadata(metadata) {\n this._metadata = metadata;\n // TODO: Switch this to ReadyState.Loading when we have streaming support.\n this._readyState = ReadyState.Loaded;\n this.hideSplashScreen();\n this.dispatchEvent(new Event(RufflePlayer.LOADED_METADATA));\n // TODO: Move this to whatever function changes the ReadyState to Loaded when we have streaming support.\n this.dispatchEvent(new Event(RufflePlayer.LOADED_DATA));\n }\n}\n/**\n * Triggered when a movie metadata has been loaded (such as movie width and height).\n *\n * @event RufflePlayer#loadedmetadata\n */\nRufflePlayer.LOADED_METADATA = \"loadedmetadata\";\n/**\n * Triggered when a movie is fully loaded.\n *\n * @event RufflePlayer#loadeddata\n */\nRufflePlayer.LOADED_DATA = \"loadeddata\";\n/**\n * Describes the loading state of an SWF movie.\n */\nexport var ReadyState;\n(function (ReadyState) {\n /**\n * No movie is loaded, or no information is yet available about the movie.\n */\n ReadyState[ReadyState[\"HaveNothing\"] = 0] = \"HaveNothing\";\n /**\n * The movie is still loading, but it has started playback, and metadata is available.\n */\n ReadyState[ReadyState[\"Loading\"] = 1] = \"Loading\";\n /**\n * The movie has completely loaded.\n */\n ReadyState[ReadyState[\"Loaded\"] = 2] = \"Loaded\";\n})(ReadyState || (ReadyState = {}));\n/**\n * Returns whether a SWF file can call JavaScript code in the surrounding HTML file.\n *\n * @param access The value of the `allowScriptAccess` attribute.\n * @param url The URL of the SWF file.\n * @returns True if script access is allowed.\n */\nexport function isScriptAccessAllowed(access, url) {\n if (!access) {\n access = \"sameDomain\";\n }\n switch (access.toLowerCase()) {\n case \"always\":\n return true;\n case \"never\":\n return false;\n case \"samedomain\":\n default:\n try {\n return (new URL(window.location.href).origin ===\n new URL(url, window.location.href).origin);\n }\n catch (_a) {\n return false;\n }\n }\n}\n/**\n * Returns whether a SWF file should show the built-in context menu items.\n *\n * @param menu The value of the `menu` attribute.\n * @returns True if the built-in context items should be shown.\n */\nexport function isBuiltInContextMenuVisible(menu) {\n if (menu === null || menu.toLowerCase() === \"true\") {\n return true;\n }\n return false;\n}\n/**\n * Returns whether the given filename is a Youtube Flash source.\n *\n * @param filename The filename to test.\n * @returns True if the filename is a Youtube Flash source.\n */\nexport function isYoutubeFlashSource(filename) {\n if (filename) {\n let pathname = \"\";\n let hostname = \"\";\n try {\n // A base URL is required if `filename` is a relative URL, but we don't need to detect the real URL origin.\n const url = new URL(filename, RUFFLE_ORIGIN);\n pathname = url.pathname;\n hostname = url.hostname;\n }\n catch (err) {\n // Some invalid filenames, like `///`, could raise a TypeError. Let's fail silently in this situation.\n }\n // See https://wiki.mozilla.org/QA/Youtube_Embedded_Rewrite\n if (pathname.startsWith(\"/v/\") &&\n /^(?:(?:www\\.|m\\.)?youtube(?:-nocookie)?\\.com)|(?:youtu\\.be)$/i.test(hostname)) {\n return true;\n }\n }\n return false;\n}\n/**\n * Workaround Youtube mixed content if upgradeToHttps is true.\n *\n * @param elem The element to change.\n * @param attr The attribute to adjust.\n */\nexport function workaroundYoutubeMixedContent(elem, attr) {\n var _a, _b;\n const value = elem.getAttribute(attr);\n const config = (_b = (_a = window.RufflePlayer) === null || _a === void 0 ? void 0 : _a.config) !== null && _b !== void 0 ? _b : {};\n if (value) {\n try {\n const url = new URL(value);\n if (url.protocol === \"http:\" &&\n window.location.protocol === \"https:\" &&\n (!(\"upgradeToHttps\" in config) ||\n config.upgradeToHttps !== false)) {\n url.protocol = \"https:\";\n elem.setAttribute(attr, url.toString());\n }\n }\n catch (err) {\n // Some invalid filenames, like `///`, could raise a TypeError. Let's fail silently in this situation.\n }\n }\n}\n/**\n * Determine if an element is a child of a node that was not supported\n * in non-HTML5 compliant browsers. If so, the element was meant to be\n * used as a fallback content.\n *\n * @param elem The element to test.\n * @returns True if the element is inside an <audio> or <video> node.\n */\nexport function isFallbackElement(elem) {\n let parent = elem.parentElement;\n while (parent !== null) {\n switch (parent.tagName) {\n case \"AUDIO\":\n case \"VIDEO\":\n return true;\n }\n parent = parent.parentElement;\n }\n return false;\n}\n/**\n * The volume controls of the Ruffle web GUI.\n */\nclass VolumeControls {\n constructor(isMuted, volume) {\n this.isMuted = isMuted;\n this.volume = volume;\n }\n /**\n * Returns the volume between 0 and 1 (calculated out of the\n * checkbox and the slider).\n *\n * @returns The volume between 0 and 1.\n */\n get_volume() {\n return !this.isMuted ? this.volume / 100 : 0;\n }\n}\n","import { isBuiltInContextMenuVisible, isFallbackElement, isScriptAccessAllowed, isYoutubeFlashSource, RufflePlayer, workaroundYoutubeMixedContent, } from \"./ruffle-player\";\nimport { NetworkingAccessMode, WindowMode } from \"./load-options\";\nimport { registerElement } from \"./register-element\";\nimport { isSwf } from \"./swf-utils\";\n/**\n * A polyfill html element.\n *\n * This specific class tries to polyfill existing `<embed>` tags,\n * and should not be used. Prefer [[RufflePlayer]] instead.\n *\n * @internal\n */\nexport class RuffleEmbed extends RufflePlayer {\n /**\n * Constructs a new Ruffle flash player for insertion onto the page.\n *\n * This specific class tries to polyfill existing `<embed>` tags,\n * and should not be used. Prefer [[RufflePlayer]] instead.\n */\n constructor() {\n super();\n }\n /**\n * @ignore\n * @internal\n */\n connectedCallback() {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v;\n super.connectedCallback();\n const src = this.attributes.getNamedItem(\"src\");\n if (src) {\n const allowScriptAccess = (_b = (_a = this.attributes.getNamedItem(\"allowScriptAccess\")) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : null;\n const menu = (_d = (_c = this.attributes.getNamedItem(\"menu\")) === null || _c === void 0 ? void 0 : _c.value) !== null && _d !== void 0 ? _d : null;\n // Kick off the SWF download.\n this.load({\n url: src.value,\n allowScriptAccess: isScriptAccessAllowed(allowScriptAccess, src.value),\n parameters: (_f = (_e = this.attributes.getNamedItem(\"flashvars\")) === null || _e === void 0 ? void 0 : _e.value) !== null && _f !== void 0 ? _f : null,\n backgroundColor: (_h = (_g = this.attributes.getNamedItem(\"bgcolor\")) === null || _g === void 0 ? void 0 : _g.value) !== null && _h !== void 0 ? _h : null,\n base: (_k = (_j = this.attributes.getNamedItem(\"base\")) === null || _j === void 0 ? void 0 : _j.value) !== null && _k !== void 0 ? _k : null,\n menu: isBuiltInContextMenuVisible(menu),\n salign: (_m = (_l = this.attributes.getNamedItem(\"salign\")) === null || _l === void 0 ? void 0 : _l.value) !== null && _m !== void 0 ? _m : \"\",\n quality: (_p = (_o = this.attributes.getNamedItem(\"quality\")) === null || _o === void 0 ? void 0 : _o.value) !== null && _p !== void 0 ? _p : \"high\",\n scale: (_r = (_q = this.attributes.getNamedItem(\"scale\")) === null || _q === void 0 ? void 0 : _q.value) !== null && _r !== void 0 ? _r : \"showAll\",\n wmode: (_t = (_s = this.attributes.getNamedItem(\"wmode\")) === null || _s === void 0 ? void 0 : _s.value) !== null && _t !== void 0 ? _t : WindowMode.Window,\n allowNetworking: (_v = (_u = this.attributes.getNamedItem(\"allowNetworking\")) === null || _u === void 0 ? void 0 : _u.value) !== null && _v !== void 0 ? _v : NetworkingAccessMode.All,\n });\n }\n }\n /**\n * Polyfill of HTMLObjectElement.\n *\n * @ignore\n * @internal\n */\n get src() {\n var _a;\n return (_a = this.attributes.getNamedItem(\"src\")) === null || _a === void 0 ? void 0 : _a.value;\n }\n /**\n * Polyfill of HTMLObjectElement.\n *\n * @ignore\n * @internal\n */\n set src(srcval) {\n if (srcval) {\n const attr = document.createAttribute(\"src\");\n attr.value = srcval;\n this.attributes.setNamedItem(attr);\n }\n else {\n this.attributes.removeNamedItem(\"src\");\n }\n }\n /**\n * @ignore\n * @internal\n */\n static get observedAttributes() {\n return [\"src\", \"width\", \"height\"];\n }\n /**\n * @ignore\n * @internal\n */\n attributeChangedCallback(name, oldValue, newValue) {\n var _a, _b, _c, _d;\n super.attributeChangedCallback(name, oldValue, newValue);\n if (this.isConnected && name === \"src\") {\n const src = this.attributes.getNamedItem(\"src\");\n if (src) {\n this.load({\n url: src.value,\n parameters: (_b = (_a = this.attributes.getNamedItem(\"flashvars\")) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : null,\n base: (_d = (_c = this.attributes.getNamedItem(\"base\")) === null || _c === void 0 ? void 0 : _c.value) !== null && _d !== void 0 ? _d : null,\n });\n }\n }\n }\n /**\n * Checks if the given element may be polyfilled with this one.\n *\n * @param elem Element to check.\n * @returns True if the element looks like a Flash embed.\n */\n static isInterdictable(elem) {\n const src = elem.getAttribute(\"src\");\n const type = elem.getAttribute(\"type\");\n // Don't polyfill when no file is specified.\n if (!src) {\n return false;\n }\n // Don't polyfill if the element is inside a specific node.\n if (isFallbackElement(elem)) {\n return false;\n }\n // Don't polyfill when the file is a YouTube Flash source.\n if (isYoutubeFlashSource(src)) {\n // Workaround YouTube mixed content; this isn't what browsers do automatically, but while we're here, we may as well.\n workaroundYoutubeMixedContent(elem, \"src\");\n return false;\n }\n return isSwf(src, type);\n }\n /**\n * Creates a RuffleEmbed that will polyfill and replace the given element.\n *\n * @param elem Element to replace.\n * @returns Created RuffleEmbed.\n */\n static fromNativeEmbedElement(elem) {\n const externalName = registerElement(\"ruffle-embed\", RuffleEmbed);\n const ruffleObj = document.createElement(externalName);\n ruffleObj.copyElement(elem);\n return ruffleObj;\n }\n}\n","import { isBuiltInContextMenuVisible, isFallbackElement, isScriptAccessAllowed, isYoutubeFlashSource, workaroundYoutubeMixedContent, RufflePlayer, } from \"./ruffle-player\";\nimport { FLASH_ACTIVEX_CLASSID } from \"./flash-identifiers\";\nimport { registerElement } from \"./register-element\";\nimport { RuffleEmbed } from \"./ruffle-embed\";\nimport { isSwf } from \"./swf-utils\";\n/**\n * Find and return the first value in obj with the given key.\n * Many Flash params were case insensitive, so we use this when checking for them.\n *\n * @param obj Object to check\n * @param key Key to find\n * @param defaultValue Value if not found\n * @returns Value if found, else [[defaultValue]]\n */\nfunction findCaseInsensitive(obj, key, defaultValue) {\n key = key.toLowerCase();\n for (const [k, value] of Object.entries(obj)) {\n if (k.toLowerCase() === key) {\n return value;\n }\n }\n return defaultValue;\n}\n/**\n * Returns all flash params ([[HTMLParamElement]]) that are for the given object.\n *\n * @param elem Element to check.\n * @returns A record of every parameter.\n */\nfunction paramsOf(elem) {\n var _a, _b;\n const params = {};\n for (const param of elem.children) {\n if (param instanceof HTMLParamElement) {\n const key = (_a = param.attributes.getNamedItem(\"name\")) === null || _a === void 0 ? void 0 : _a.value;\n const value = (_b = param.attributes.getNamedItem(\"value\")) === null || _b === void 0 ? void 0 : _b.value;\n if (key && value) {\n params[key] = value;\n }\n }\n }\n return params;\n}\n/**\n * A polyfill html element.\n *\n * This specific class tries to polyfill existing `<object>` tags,\n * and should not be used. Prefer [[RufflePlayer]] instead.\n *\n * @internal\n */\nexport class RuffleObject extends RufflePlayer {\n /**\n * Constructs a new Ruffle flash player for insertion onto the page.\n *\n * This specific class tries to polyfill existing `<object>` tags,\n * and should not be used. Prefer [[RufflePlayer]] instead.\n */\n constructor() {\n super();\n this.params = {};\n }\n /**\n * @ignore\n * @internal\n */\n connectedCallback() {\n var _a;\n super.connectedCallback();\n this.params = paramsOf(this);\n let url = null;\n if (this.attributes.getNamedItem(\"data\")) {\n url = (_a = this.attributes.getNamedItem(\"data\")) === null || _a === void 0 ? void 0 : _a.value;\n }\n else if (this.params[\"movie\"]) {\n url = this.params[\"movie\"];\n }\n const allowScriptAccess = findCaseInsensitive(this.params, \"allowScriptAccess\", null);\n const parameters = findCaseInsensitive(this.params, \"flashvars\", this.getAttribute(\"flashvars\"));\n const backgroundColor = findCaseInsensitive(this.params, \"bgcolor\", this.getAttribute(\"bgcolor\"));\n const allowNetworking = findCaseInsensitive(this.params, \"allowNetworking\", this.getAttribute(\"allowNetworking\"));\n const base = findCaseInsensitive(this.params, \"base\", this.getAttribute(\"base\"));\n const menu = findCaseInsensitive(this.params, \"menu\", null);\n const salign = findCaseInsensitive(this.params, \"salign\", \"\");\n const quality = findCaseInsensitive(this.params, \"quality\", \"high\");\n const scale = findCaseInsensitive(this.params, \"scale\", \"showAll\");\n const wmode = findCaseInsensitive(this.params, \"wmode\", \"window\");\n if (url) {\n const options = { url };\n options.allowScriptAccess = isScriptAccessAllowed(allowScriptAccess, url);\n if (parameters) {\n options.parameters = parameters;\n }\n if (backgroundColor) {\n options.backgroundColor = backgroundColor;\n }\n if (base) {\n options.base = base;\n }\n options.menu = isBuiltInContextMenuVisible(menu);\n if (salign) {\n options.salign = salign;\n }\n if (quality) {\n options.quality = quality;\n }\n if (scale) {\n options.scale = scale;\n }\n if (wmode) {\n options.wmode = wmode;\n }\n if (allowNetworking) {\n options.allowNetworking =\n allowNetworking;\n }\n // Kick off the SWF download.\n this.load(options);\n }\n }\n debugPlayerInfo() {\n var _a;\n let result = \"Player type: Object\\n\";\n let url = null;\n if (this.attributes.getNamedItem(\"data\")) {\n url = (_a = this.attributes.getNamedItem(\"data\")) === null || _a === void 0 ? void 0 : _a.value;\n }\n else if (this.params[\"movie\"]) {\n url = this.params[\"movie\"];\n }\n result += `SWF URL: ${url}\\n`;\n Object.keys(this.params).forEach((key) => {\n result += `Param ${key}: ${this.params[key]}\\n`;\n });\n Object.keys(this.attributes).forEach((key) => {\n var _a;\n result += `Attribute ${key}: ${(_a = this.attributes.getNamedItem(key)) === null || _a === void 0 ? void 0 : _a.value}\\n`;\n });\n return result;\n }\n /**\n * Polyfill of HTMLObjectElement.\n *\n * @ignore\n * @internal\n */\n get data() {\n return this.getAttribute(\"data\");\n }\n /**\n * Polyfill of HTMLObjectElement.\n *\n * @ignore\n * @internal\n */\n set data(href) {\n if (href) {\n const attr = document.createAttribute(\"data\");\n attr.value = href;\n this.attributes.setNamedItem(attr);\n }\n else {\n this.attributes.removeNamedItem(\"data\");\n }\n }\n /**\n * Checks if the given element may be polyfilled with this one.\n *\n * @param elem Element to check.\n * @returns True if the element looks like a Flash object.\n */\n static isInterdictable(elem) {\n var _a, _b, _c, _d;\n // Don't polyfill if the element is inside a specific node.\n if (isFallbackElement(elem)) {\n return false;\n }\n // Don't polyfill if there's already a <ruffle-object> or a <ruffle-embed> inside the <object>.\n if (elem.getElementsByTagName(\"ruffle-object\").length > 0 ||\n elem.getElementsByTagName(\"ruffle-embed\").length > 0) {\n return false;\n }\n const data = (_a = elem.attributes.getNamedItem(\"data\")) === null || _a === void 0 ? void 0 : _a.value.toLowerCase();\n const type = (_c = (_b = elem.attributes.getNamedItem(\"type\")) === null || _b === void 0 ? void 0 : _b.value) !== null && _c !== void 0 ? _c : null;\n const params = paramsOf(elem);\n // Check for SWF file.\n let filename;\n if (data) {\n // Don't polyfill when the file is a YouTube Flash source.\n if (isYoutubeFlashSource(data)) {\n // Workaround YouTube mixed content; this isn't what browsers do automatically, but while we're here, we may as well.\n workaroundYoutubeMixedContent(elem, \"data\");\n return false;\n }\n filename = data;\n }\n else if (params && params[\"movie\"]) {\n // Don't polyfill when the file is a YouTube Flash source.\n if (isYoutubeFlashSource(params[\"movie\"])) {\n // Workaround YouTube mixed content; this isn't what browsers do automatically, but while we're here, we may as well.\n const movieElem = elem.querySelector(\"param[name='movie']\");\n if (movieElem) {\n workaroundYoutubeMixedContent(movieElem, \"value\");\n // The data attribute needs to be set for the re-fetch to happen.\n // It also needs to be set on Firefox for the YouTube object rewrite to work, regardless of mixed content.\n const movieSrc = movieElem.getAttribute(\"value\");\n if (movieSrc) {\n elem.setAttribute(\"data\", movieSrc);\n }\n }\n return false;\n }\n filename = params[\"movie\"];\n }\n else {\n // Don't polyfill when no file is specified.\n return false;\n }\n // Check ActiveX class ID.\n const classid = (_d = elem.attributes\n .getNamedItem(\"classid\")) === null || _d === void 0 ? void 0 : _d.value.toLowerCase();\n if (classid === FLASH_ACTIVEX_CLASSID.toLowerCase()) {\n // classid is an old-IE style embed that would not work on modern browsers.\n // Often there will be an <embed> inside the <object> that would take precedence.\n // Only polyfill this <object> if it doesn't contain a polyfillable <embed> or\n // another <object> that would be supported on modern browsers.\n return (!Array.from(elem.getElementsByTagName(\"object\")).some(RuffleObject.isInterdictable) &&\n !Array.from(elem.getElementsByTagName(\"embed\")).some(RuffleEmbed.isInterdictable));\n }\n else if (classid) {\n // Non-Flash classid.\n return false;\n }\n return isSwf(filename, type);\n }\n /**\n * Creates a RuffleObject that will polyfill and replace the given element.\n *\n * @param elem Element to replace.\n * @returns Created RuffleObject.\n */\n static fromNativeObjectElement(elem) {\n const externalName = registerElement(\"ruffle-object\", RuffleObject);\n const ruffleObj = (document.createElement(externalName));\n // Avoid copying embeds-inside-objects to avoid double polyfilling.\n for (const embedElem of Array.from(elem.getElementsByTagName(\"embed\"))) {\n if (RuffleEmbed.isInterdictable(embedElem)) {\n embedElem.remove();\n }\n }\n // Avoid copying objects-inside-objects to avoid double polyfilling.\n // This may happen when Internet Explorer's conditional comments are used.\n for (const objectElem of Array.from(elem.getElementsByTagName(\"object\"))) {\n if (RuffleObject.isInterdictable(objectElem)) {\n objectElem.remove();\n }\n }\n ruffleObj.copyElement(elem);\n return ruffleObj;\n }\n}\n","import { FLASH_MIMETYPE, FUTURESPLASH_MIMETYPE, FLASH7_AND_8_MIMETYPE, FLASH_MOVIE_MIMETYPE, } from \"./flash-identifiers\";\n/**\n * Replacement object for `MimeTypeArray` that lets us install new fake mime\n * types.\n *\n * Unlike plugins we can at least enumerate mime types in Firefox, so we don't\n * lose data.\n *\n * We also expose a method called `install` which adds a new plugin. This is\n * used to falsify Flash detection. If the existing `navigator.mimeTypes` has an\n * `install` method, you should not use `RuffleMimeTypeArray` as some other\n * plugin emulator is already present.\n */\nclass RuffleMimeTypeArray {\n constructor(mimeTypes) {\n this.__mimeTypes = [];\n this.__namedMimeTypes = {};\n if (mimeTypes) {\n for (let i = 0; i < mimeTypes.length; i++) {\n this.install(mimeTypes[i]);\n }\n }\n }\n /**\n * Install a MIME Type into the array.\n *\n * @param mimeType The mime type to install\n */\n install(mimeType) {\n const index = this.__mimeTypes.length;\n this.__mimeTypes.push(mimeType);\n this.__namedMimeTypes[mimeType.type] = mimeType;\n this[mimeType.type] = mimeType;\n this[index] = mimeType;\n }\n item(index) {\n // This behavior is done to emulate a 32-bit uint,\n // which browsers use.\n return this.__mimeTypes[index >>> 0];\n }\n namedItem(name) {\n return this.__namedMimeTypes[name];\n }\n get length() {\n return this.__mimeTypes.length;\n }\n [Symbol.iterator]() {\n return this.__mimeTypes[Symbol.iterator]();\n }\n}\n/**\n * Equivalent object to `Plugin` that allows us to falsify plugins.\n */\nclass RufflePlugin extends RuffleMimeTypeArray {\n constructor(name, description, filename) {\n super();\n this.name = name;\n this.description = description;\n this.filename = filename;\n }\n}\n/**\n * Replacement object for `PluginArray` that lets us install new fake plugins.\n *\n * This object needs to wrap the native plugin array, since the user might have\n * actual plugins installed. Firefox doesn't let us enumerate the array, though,\n * which has some consequences. Namely, we can't actually perfectly wrap the\n * native plugin array, at least unless there's some secret \"unresolved object\n * property name handler\" that I've never known before in JS...\n *\n * We can still wrap `namedItem` perfectly at least.\n *\n * We also expose a method called `install` which adds a new plugin. This is\n * used to falsify Flash detection. If the existing `navigator.plugins` has an\n * `install` method, you should not use `RufflePluginArray` as some other plugin\n * emulator is already present.\n */\nclass RufflePluginArray {\n constructor(plugins) {\n this.__plugins = [];\n this.__namedPlugins = {};\n for (let i = 0; i < plugins.length; i++) {\n this.install(plugins[i]);\n }\n }\n install(plugin) {\n const index = this.__plugins.length;\n this.__plugins.push(plugin);\n this.__namedPlugins[plugin.name] = plugin;\n this[plugin.name] = plugin;\n this[index] = plugin;\n }\n item(index) {\n // This behavior is done to emulate a 32-bit uint,\n // which browsers use. Cloudflare's anti-bot\n // checks rely on this.\n return this.__plugins[index >>> 0];\n }\n namedItem(name) {\n return this.__namedPlugins[name];\n }\n refresh() {\n // Nothing to do, we just need to define the method.\n }\n [Symbol.iterator]() {\n return this.__plugins[Symbol.iterator]();\n }\n get length() {\n return this.__plugins.length;\n }\n}\n/**\n * A fake plugin designed to trigger Flash detection scripts.\n */\nexport const FLASH_PLUGIN = new RufflePlugin(\"Shockwave Flash\", \"Shockwave Flash 32.0 r0\", \"ruffle.js\");\nFLASH_PLUGIN.install({\n type: FUTURESPLASH_MIMETYPE,\n description: \"Shockwave Flash\",\n suffixes: \"spl\",\n enabledPlugin: FLASH_PLUGIN,\n});\nFLASH_PLUGIN.install({\n type: FLASH_MIMETYPE,\n description: \"Shockwave Flash\",\n suffixes: \"swf\",\n enabledPlugin: FLASH_PLUGIN,\n});\nFLASH_PLUGIN.install({\n type: FLASH7_AND_8_MIMETYPE,\n description: \"Shockwave Flash\",\n suffixes: \"swf\",\n enabledPlugin: FLASH_PLUGIN,\n});\nFLASH_PLUGIN.install({\n type: FLASH_MOVIE_MIMETYPE,\n description: \"Shockwave Flash\",\n suffixes: \"swf\",\n enabledPlugin: FLASH_PLUGIN,\n});\n/**\n * Install a fake plugin such that detectors will see it in `navigator.plugins`.\n *\n * This function takes care to check if the existing implementation of\n * `navigator.plugins` already accepts fake plugin entries. If so, it will use\n * that version of the plugin array. This allows the plugin polyfill to compose\n * across multiple plugin emulators with the first emulator's polyfill winning.\n *\n * @param plugin The plugin to install\n */\nexport function installPlugin(plugin) {\n if (!(\"install\" in navigator.plugins) || !navigator.plugins[\"install\"]) {\n Object.defineProperty(navigator, \"plugins\", {\n value: new RufflePluginArray(navigator.plugins),\n writable: false,\n });\n }\n const plugins = navigator.plugins;\n plugins.install(plugin);\n if (plugin.length > 0 &&\n (!(\"install\" in navigator.mimeTypes) || !navigator.mimeTypes[\"install\"])) {\n Object.defineProperty(navigator, \"mimeTypes\", {\n value: new RuffleMimeTypeArray(navigator.mimeTypes),\n writable: false,\n });\n }\n const mimeTypes = navigator.mimeTypes;\n for (let i = 0; i < plugin.length; i += 1) {\n mimeTypes.install(plugin[i]);\n }\n}\n","var _a, _b;\nimport { RuffleObject } from \"./ruffle-object\";\nimport { RuffleEmbed } from \"./ruffle-embed\";\nimport { installPlugin, FLASH_PLUGIN } from \"./plugin-polyfill\";\nimport { publicPath } from \"./public-path\";\nimport { isExtension } from \"./current-script\";\nconst globalConfig = (_b = (_a = window.RufflePlayer) === null || _a === void 0 ? void 0 : _a.config) !== null && _b !== void 0 ? _b : {};\nconst jsScriptUrl = publicPath(globalConfig) + \"ruffle.js\";\n/**\n * Polyfill native Flash elements with Ruffle equivalents.\n *\n * This polyfill isn't fool-proof: If there's a chance site JavaScript has\n * access to a pre-polyfill element, then this will break horribly. We can\n * keep native objects out of the DOM, and thus out of JavaScript's grubby\n * little hands, but only if we load first.\n */\nlet objects;\nlet embeds;\n/**\n * Check if this browser has pre-existing Flash support.\n *\n * @returns Whether this browser has a plugin indicating pre-existing Flash support.\n */\nfunction isFlashEnabledBrowser() {\n var _a, _b;\n // If the user sets a configuration value not to favor Flash, pretend the browser does not support Flash so Ruffle takes effect.\n if (\"favorFlash\" in globalConfig && globalConfig[\"favorFlash\"] === false) {\n return false;\n }\n // Otherwise, check for pre-exisiting Flash support.\n return (((_b = (_a = navigator.plugins.namedItem(\"Shockwave Flash\")) === null || _a === void 0 ? void 0 : _a.filename) !== null && _b !== void 0 ? _b : \"ruffle.js\") !== \"ruffle.js\");\n}\n/**\n *\n */\nfunction polyfillFlashInstances() {\n try {\n // Create live collections to track embed tags.\n objects = objects !== null && objects !== void 0 ? objects : document.getElementsByTagName(\"object\");\n embeds = embeds !== null && embeds !== void 0 ? embeds : document.getElementsByTagName(\"embed\");\n // Replace <object> first, because <object> often wraps <embed>.\n for (const elem of Array.from(objects)) {\n if (RuffleObject.isInterdictable(elem)) {\n const ruffleObject = RuffleObject.fromNativeObjectElement(elem);\n elem.replaceWith(ruffleObject);\n }\n }\n for (const elem of Array.from(embeds)) {\n if (RuffleEmbed.isInterdictable(elem)) {\n const ruffleEmbed = RuffleEmbed.fromNativeEmbedElement(elem);\n elem.replaceWith(ruffleEmbed);\n }\n }\n }\n catch (err) {\n console.error(`Serious error encountered when polyfilling native Flash elements: ${err}`);\n }\n}\n/**\n * Inject Ruffle into <iframe> and <frame> elements.\n *\n * This polyfill isn't fool-proof either: On self-hosted builds, it may\n * not work due to browsers CORS policy or be loaded too late for some\n * libraries like SWFObject. These should be less of a problem on the\n * web extension. This polyfill should, however, do the trick in most\n * cases, but users should be aware of its natural limits.\n */\nlet iframes;\nlet frames;\n/**\n *\n */\nfunction polyfillFrames() {\n // Create live collections to track embed tags.\n iframes = iframes !== null && iframes !== void 0 ? iframes : document.getElementsByTagName(\"iframe\");\n frames = frames !== null && frames !== void 0 ? frames : document.getElementsByTagName(\"frame\");\n [iframes, frames].forEach((elements) => {\n for (const element of elements) {\n if (element.dataset[\"rufflePolyfilled\"] !== undefined) {\n // Don't re-polyfill elements with the \"data-ruffle-polyfilled\" attribute.\n continue;\n }\n element.dataset[\"rufflePolyfilled\"] = \"\";\n const elementWindow = element.contentWindow;\n // Cross origin requests may reach an exception, so let's prepare for this eventuality.\n const errorMessage = `Couldn't load Ruffle into ${element.tagName}[${element.src}]: `;\n try {\n if (elementWindow.document.readyState === \"complete\") {\n injectRuffle(elementWindow, errorMessage);\n }\n }\n catch (err) {\n if (!isExtension) {\n // The web extension should be able to load Ruffle into cross origin frames\n // because it has \"all_frames\" set to true in its manifest.json: RufflePlayer\n // config won't be injected but it's not worth showing an error.\n console.warn(errorMessage + err);\n }\n }\n // Attach listener to the element to handle frame navigation.\n element.addEventListener(\"load\", () => {\n injectRuffle(elementWindow, errorMessage);\n }, false);\n }\n });\n}\n/**\n * @param elementWindow The (i)frame's window object.\n * @param errorMessage The message to log when Ruffle cannot access the (i)frame's document.\n */\nasync function injectRuffle(elementWindow, errorMessage) {\n var _a;\n // The document is supposed to be completely loaded when this function is run.\n // As Chrome may be unable to access the document properties, we have to delay the execution a little bit.\n await new Promise((resolve) => {\n window.setTimeout(() => {\n resolve();\n }, 100);\n });\n let elementDocument;\n try {\n elementDocument = elementWindow.document;\n if (!elementDocument) {\n // Don't polyfill if the window has no document: the element may have been removed from the parent window.\n return;\n }\n }\n catch (err) {\n if (!isExtension) {\n console.warn(errorMessage + err);\n }\n return;\n }\n if (!isExtension &&\n elementDocument.documentElement.dataset[\"ruffleOptout\"] !== undefined) {\n // Don't polyfill elements with the \"data-ruffle-optout\" attribute.\n return;\n }\n if (!isExtension) {\n if (!elementWindow.RufflePlayer) {\n const script = elementDocument.createElement(\"script\");\n script.setAttribute(\"src\", jsScriptUrl);\n script.onload = () => {\n // Inject parent configuration once the script is loaded, preventing it from being ignored.\n elementWindow.RufflePlayer = {};\n elementWindow.RufflePlayer.config = globalConfig;\n };\n elementDocument.head.appendChild(script);\n }\n }\n else {\n if (!elementWindow.RufflePlayer) {\n elementWindow.RufflePlayer = {};\n }\n // Merge parent window and frame configurations, will likely be applied too late though.\n elementWindow.RufflePlayer.config = Object.assign(Object.assign({}, globalConfig), ((_a = elementWindow.RufflePlayer.config) !== null && _a !== void 0 ? _a : {}));\n }\n}\n/**\n * Listen for changes to the DOM.\n */\nfunction initMutationObserver() {\n const observer = new MutationObserver(function (mutationsList) {\n // If any embed or object nodes were added, re-run the polyfill to detect any new instances.\n const embedOrObjectAdded = mutationsList.some((mutation) => Array.from(mutation.addedNodes).some((node) => [\"EMBED\", \"OBJECT\"].includes(node.nodeName) ||\n (node instanceof Element &&\n node.querySelector(\"embed, object\") !==\n null)));\n if (embedOrObjectAdded) {\n polyfillFlashInstances();\n polyfillFrames();\n }\n });\n observer.observe(document, { childList: true, subtree: true });\n}\n/**\n * Polyfills the detection of Flash plugins in the browser.\n */\nexport function pluginPolyfill() {\n if (!isFlashEnabledBrowser()) {\n installPlugin(FLASH_PLUGIN);\n }\n}\n/**\n * Polyfills legacy Flash content on the page.\n */\nexport function polyfill() {\n if (!isFlashEnabledBrowser()) {\n polyfillFlashInstances();\n polyfillFrames();\n initMutationObserver();\n }\n}\n","import { pluginPolyfill, polyfill } from \"./polyfills\";\nimport { registerElement } from \"./register-element\";\nimport { RufflePlayer } from \"./ruffle-player\";\nimport { buildInfo } from \"./build-info\";\n/**\n * Represents this particular version of Ruffle.\n *\n * Multiple APIs can be instantiated from different sources; e.g. an \"extension\"\n * version, versus a \"local\" version. This expresses to the Public API\n * negotiator (see [[PublicAPI]]) what this particular version of Ruffle is and\n * how to control it.\n */\nexport const SourceAPI = {\n /**\n * The version of this particular API, as a string in a semver compatible format.\n */\n version: buildInfo.versionNumber + \"+\" + buildInfo.buildDate.substring(0, 10),\n /**\n * Start up the polyfills.\n *\n * Do not run polyfills for more than one Ruffle source at a time.\n */\n polyfill() {\n polyfill();\n },\n /**\n * Polyfill the plugin detection.\n *\n * This needs to run before any plugin detection script does.\n */\n pluginPolyfill() {\n pluginPolyfill();\n },\n /**\n * Create a Ruffle player element using this particular version of Ruffle.\n *\n * @returns The player element. This is a DOM element that may be inserted\n * into the current page as you wish.\n */\n createPlayer() {\n const name = registerElement(\"ruffle-player\", RufflePlayer);\n return document.createElement(name);\n },\n};\n","import { Version } from \"./version\";\nimport { VersionRange } from \"./version-range\";\nimport { SourceAPI } from \"./source-api\";\n/**\n * Represents the Ruffle public API.\n *\n * The public API exists primarily to allow multiple installs of Ruffle on a\n * page (e.g. an extension install and a local one) to cooperate. In an ideal\n * situation, all Ruffle sources on the page install themselves into a single\n * public API, and then the public API picks the newest version by default.\n *\n * This API *is* versioned, in case we need to upgrade it. However, it must be\n * backwards- and forwards-compatible with all known sources.\n */\nexport class PublicAPI {\n /**\n * Construct the Ruffle public API.\n *\n * Do not use this function to negotiate a public API. Instead, use\n * `public_api` to register your Ruffle source with an existing public API\n * if it exists.\n *\n * Constructing a Public API will also trigger it to initialize Ruffle once\n * the page loads, if the API has not already been superseded.\n *\n * @param prev What used to be in the public API slot.\n *\n * This is used to upgrade from a prior version of the public API, or from\n * a user-defined configuration object placed in the public API slot.\n */\n constructor(prev) {\n var _a;\n this.sources = (prev === null || prev === void 0 ? void 0 : prev.sources) || {};\n this.config = (prev === null || prev === void 0 ? void 0 : prev.config) || {};\n this.invoked = (prev === null || prev === void 0 ? void 0 : prev.invoked) || false;\n this.newestName = (prev === null || prev === void 0 ? void 0 : prev.newestName) || null;\n (_a = prev === null || prev === void 0 ? void 0 : prev.superseded) === null || _a === void 0 ? void 0 : _a.call(prev);\n if (document.readyState === \"loading\") {\n // Cloudflare Rocket Loader interferes with the DOMContentLoaded event,\n // so we listen for readystatechange instead\n document.addEventListener(\"readystatechange\", this.init.bind(this));\n }\n else {\n window.setTimeout(this.init.bind(this), 0);\n }\n }\n /**\n * The version of the public API.\n *\n * This is *not* the version of Ruffle itself.\n *\n * This allows a page with an old version of the Public API to be upgraded\n * to a new version of the API. The public API is intended to be changed\n * very infrequently, if at all, but this provides an escape mechanism for\n * newer Ruffle sources to upgrade older installations.\n *\n * @returns The version of this public API.\n */\n get version() {\n return \"0.1.0\";\n }\n /**\n * Register a given source with the Ruffle Public API.\n *\n * @param name The name of the source.\n */\n registerSource(name) {\n this.sources[name] = SourceAPI;\n }\n /**\n * Determine the name of the newest registered source in the Public API.\n *\n * @returns The name of the source, or `null` if no source\n * has yet to be registered.\n */\n newestSourceName() {\n let newestName = null, newestVersion = Version.fromSemver(\"0.0.0\");\n for (const k in this.sources) {\n if (Object.prototype.hasOwnProperty.call(this.sources, k)) {\n const kVersion = Version.fromSemver(this.sources[k].version);\n if (kVersion.hasPrecedenceOver(newestVersion)) {\n newestName = k;\n newestVersion = kVersion;\n }\n }\n }\n return newestName;\n }\n /**\n * Negotiate and start Ruffle.\n *\n * This function reads the config parameter to determine which polyfills\n * should be enabled. If the configuration parameter is missing, then we\n * use a built-in set of defaults sufficient to fool sites with static\n * content and weak plugin detection.\n */\n init() {\n if (!this.invoked) {\n this.invoked = true;\n this.newestName = this.newestSourceName();\n if (this.newestName === null) {\n throw new Error(\"No registered Ruffle source!\");\n }\n const polyfills = \"polyfills\" in this.config ? this.config.polyfills : true;\n if (polyfills !== false) {\n this.sources[this.newestName].polyfill();\n }\n }\n }\n /**\n * Look up the newest Ruffle source and return it's API.\n *\n * @returns An instance of the Source API.\n */\n newest() {\n const name = this.newestSourceName();\n return name !== null ? this.sources[name] : null;\n }\n /**\n * Look up a specific Ruffle version (or any version satisfying a given set\n * of requirements) and return it's API.\n *\n * @param requirementString A set of semantic version requirement\n * strings that the player version must satisfy.\n * @returns An instance of the Source API, if one or more\n * sources satisfied the requirement.\n */\n satisfying(requirementString) {\n const requirement = VersionRange.fromRequirementString(requirementString);\n let valid = null;\n for (const k in this.sources) {\n if (Object.prototype.hasOwnProperty.call(this.sources, k)) {\n const version = Version.fromSemver(this.sources[k].version);\n if (requirement.satisfiedBy(version)) {\n valid = this.sources[k];\n }\n }\n }\n return valid;\n }\n /**\n * Look up the newest Ruffle version compatible with the `local` source, if\n * it's installed. Otherwise, use the latest version.\n *\n * @returns An instance of the Source API\n */\n localCompatible() {\n if (this.sources[\"local\"] !== undefined) {\n return this.satisfying(\"^\" + this.sources[\"local\"].version);\n }\n else {\n return this.newest();\n }\n }\n /**\n * Look up the newest Ruffle version with the exact same version as the\n * `local` source, if it's installed. Otherwise, use the latest version.\n *\n * @returns An instance of the Source API\n */\n local() {\n if (this.sources[\"local\"] !== undefined) {\n return this.satisfying(\"=\" + this.sources[\"local\"].version);\n }\n else {\n return this.newest();\n }\n }\n /**\n * Indicates that this version of the public API has been superseded by a\n * newer version.\n *\n * This should only be called by a newer version of the Public API.\n * Identical versions of the Public API should not supersede older versions\n * of that same API.\n *\n * Unfortunately, we can't disable polyfills after-the-fact, so this\n * only lets you disable the init event...\n */\n superseded() {\n this.invoked = true;\n }\n /**\n * Join a source into the public API, if it doesn't already exist.\n *\n * @param prevRuffle The previous iteration of the Ruffle API.\n *\n * The `prevRuffle` param lists the previous object in the RufflePlayer\n * slot. We perform some checks to see if this is a Ruffle public API or a\n * conflicting object. If this is conflicting, then a new public API will\n * be constructed (see the constructor information for what happens to\n * `prevRuffle`).\n *\n * Note that Public API upgrades are deliberately not enabled in this\n * version of Ruffle, since there is no Public API to upgrade from.\n * @param sourceName The name of this particular\n * Ruffle source.\n *\n * If both parameters are provided they will be used to define a new Ruffle\n * source to register with the public API.\n * @returns The Ruffle Public API.\n */\n static negotiate(prevRuffle, sourceName) {\n let publicAPI;\n if (prevRuffle instanceof PublicAPI) {\n publicAPI = prevRuffle;\n }\n else {\n publicAPI = new PublicAPI(prevRuffle);\n }\n if (sourceName !== undefined) {\n publicAPI.registerSource(sourceName);\n // Install the faux plugin detection immediately.\n // This is necessary because scripts such as SWFObject check for the\n // Flash Player immediately when they load.\n // TODO: Maybe there's a better place for this.\n const polyfills = \"polyfills\" in publicAPI.config\n ? publicAPI.config.polyfills\n : true;\n if (polyfills !== false) {\n SourceAPI.pluginPolyfill();\n }\n }\n return publicAPI;\n }\n}\n","import { PublicAPI } from \"ruffle-core\";\n\nwindow.RufflePlayer = PublicAPI.negotiate(window.RufflePlayer, \"local\");\n"],"names":["inProgress","dataWebpackPrefix","module","exports","s","a","o","h","u","r","e","l","n","Error","code","i","call","length","t","d","c","p","encode","f","getTypeOf","charCodeAt","push","charAt","join","decode","substr","replace","uint8array","Uint8Array","Array","indexOf","this","compressedSize","uncompressedSize","crc32","compression","compressedContent","prototype","getContentWorker","Promise","resolve","pipe","uncompressWorker","on","streamInfo","data_length","getCompressedWorker","withStreamInfo","createWorkerFrom","compressWorker","STORE","magic","DEFLATE","base64","binary","dir","createFolders","date","compressionOptions","comment","unixPermissions","dosPermissions","lie","Uint16Array","Uint32Array","_pako","_pakoAction","_pakoOptions","meta","inherits","processChunk","_createPako","transformTo","data","flush","cleanUp","raw","level","onData","pako","A","String","fromCharCode","file","O","utf8encode","I","name","m","_","g","b","v","y","w","k","x","S","z","C","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCFullYear","getUTCMonth","getUTCDate","B","E","fileRecord","R","LOCAL_FILE_HEADER","dirRecord","CENTRAL_FILE_HEADER","bytesWritten","zipComment","zipPlatform","encodeFileName","streamFiles","accumulate","contentBuffer","dirRecords","currentSourceOffset","entriesCount","currentFile","_sources","percent","openedSource","closedSource","DATA_DESCRIPTOR","shift","CENTRAL_DIRECTORY_END","prepareNextSource","previous","isPaused","pause","resume","registerPrevious","end","error","generatedError","lock","generateWorker","platform","forEach","options","_compressWorker","arguments","files","Object","create","root","clone","loadAsync","support","defaults","version","external","decompressed","extend","checkCRC32","optimizedBinaryString","decodeFileName","utf8decode","isNode","isStream","reject","prepareContent","then","load","all","fileNameStr","fileCommentStr","unsafeOriginalName","_upstreamEnded","_bindStream","_stream","Readable","_helper","emit","_read","Buffer","newBufferFrom","from","allocBuffer","alloc","fill","isBuffer","Date","toUpperCase","parseInt","slice","substring","lastIndexOf","toString","filter","test","folder","remove","generate","generateInternalStream","type","mimeType","toLowerCase","checkSupport","generateAsync","generateNodeStream","toNodejsStream","stream","byteAt","zero","lastIndexOfSignature","readAndCheckSignature","readData","checkOffset","index","checkIndex","setIndex","skip","readInt","readString","readDate","UTC","subarray","ZIP64_CENTRAL_DIRECTORY_LOCATOR","ZIP64_CENTRAL_DIRECTORY_END","destType","propName","dataIsReady","max","_tickScheduled","_tickAndRepeat","delay","isFinished","_tick","Math","min","extraStreamInfo","isLocked","_listeners","mergeStreamInfo","hasOwnProperty","nodestream","_internalType","_outputType","_mimeType","newBlob","concat","apply","set","_worker","objectMode","array","string","arraybuffer","ArrayBuffer","nodebuffer","blob","Blob","size","self","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","MSBlobBuilder","append","getBlob","leftOver","applyFromCharCode","Utf8DecodeWorker","Utf8EncodeWorker","stringifyByChunk","stringifyByChar","applyCanBeUsed","floor","buffer","byteLength","split","pop","MAX_VALUE_16BITS","MAX_VALUE_32BITS","pretty","setImmediate","FileReader","onload","target","result","onerror","readAsArrayBuffer","setimmediate","loadOptions","checkSignature","reader","isSignature","readBlockEndOfCentral","diskNumber","diskWithCentralDirStart","centralDirRecordsOnThisDisk","centralDirRecords","centralDirSize","centralDirOffset","zipCommentLength","readBlockZip64EndOfCentral","zip64EndOfCentralSize","zip64ExtensibleData","id","value","readBlockZip64EndOfCentralLocator","diskWithZip64CentralDirStart","relativeOffsetEndOfZip64CentralDir","disksCount","readLocalFiles","localHeaderOffset","readLocalPart","handleUTF8","processAttributes","readCentralDir","zip64","readCentralPart","readEndOfCentral","abs","prepareReader","isEncrypted","bitFlag","useUTF8","fileNameLength","fileName","compressionMethod","versionMadeBy","extraFieldsLength","fileCommentLength","diskNumberStart","internalFileAttributes","externalFileAttributes","readExtraFields","parseZIP64ExtraField","fileComment","extraFields","findExtraFieldUnicodePath","findExtraFieldUnicodeComment","_data","_dataBinary","internalStream","_decompressWorker","async","nodeStream","MutationObserver","WebKitMutationObserver","document","createTextNode","observe","characterData","MessageChannel","createElement","onreadystatechange","parentNode","removeChild","documentElement","appendChild","setTimeout","port1","onmessage","port2","postMessage","window","TypeError","state","queue","outcome","promise","onFulfilled","callFulfilled","otherCallFulfilled","onRejected","callRejected","otherCallRejected","status","finally","constructor","catch","race","immediate","assign","method","chunkSize","windowBits","memLevel","strategy","to","gzip","err","msg","ended","chunks","strm","avail_out","deflateInit2","header","deflateSetHeader","dictionary","string2buf","deflateSetDictionary","_dict_set","input","next_in","avail_in","output","Buf8","next_out","deflate","onEnd","buf2binstring","shrinkBuf","deflateEnd","flattenChunks","Deflate","deflateRaw","inflateInit2","Z_OK","inflateGetHeader","Z_FINISH","Z_NO_FLUSH","binstring2buf","inflate","Z_NEED_DICT","inflateSetDictionary","Z_BUF_ERROR","Z_STREAM_END","Z_SYNC_FLUSH","utf8border","buf2string","arraySet","inflateEnd","Inflate","inflateRaw","ungzip","Int32Array","setTyped","Buf16","Buf32","Z_PARTIAL_FLUSH","Z_FULL_FLUSH","Z_BLOCK","Z_TREES","Z_ERRNO","Z_STREAM_ERROR","Z_DATA_ERROR","Z_NO_COMPRESSION","Z_BEST_SPEED","Z_BEST_COMPRESSION","Z_DEFAULT_COMPRESSION","Z_FILTERED","Z_HUFFMAN_ONLY","Z_RLE","Z_FIXED","Z_DEFAULT_STRATEGY","Z_BINARY","Z_TEXT","Z_UNKNOWN","Z_DEFLATED","T","D","F","pending","pending_buf","pending_out","total_out","N","_tr_flush_block","block_start","strstart","U","P","L","max_chain_length","prev_length","nice_match","w_size","w_mask","prev","good_match","lookahead","match_start","j","window_size","hash_size","head","wrap","adler","total_in","insert","ins_h","hash_shift","hash_mask","Z","match_length","_tr_tally","max_lazy_match","last_lit","W","prev_match","match_available","M","good_length","max_lazy","nice_length","max_chain","func","H","pending_buf_size","gzhead","gzindex","last_flush","w_bits","hash_bits","dyn_ltree","dyn_dtree","bl_tree","l_desc","d_desc","bl_desc","bl_count","heap","heap_len","heap_max","depth","l_buf","lit_bufsize","d_buf","opt_len","static_len","matches","bi_buf","bi_valid","G","data_type","_tr_init","K","Y","deflateInit","deflateReset","deflateResetKeep","text","hcrc","extra","time","os","_tr_align","_tr_stored_block","deflateInfo","xflags","extra_len","done","dmax","wsize","whave","wnext","hold","bits","lencode","distcode","lenbits","distbits","mode","sane","last","havedict","flags","check","total","wbits","offset","ncode","nlen","ndist","have","next","lens","work","lendyn","distdyn","back","was","inflateReset","inflateReset2","inflateResetKeep","inflateInit","inflateInfo","static_tree","extra_bits","extra_base","elems","max_length","has_stree","dyn_tree","max_code","stat_desc","X","V","q","J","getPrototypeOf","process","nextTick","importScripts","random","addEventListener","attachEvent","Function","callback","args","clearImmediate","source","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","loaded","__webpack_modules__","getter","__esModule","definition","key","defineProperty","enumerable","get","chunkId","keys","reduce","promises","globalThis","hmd","children","obj","prop","url","script","needAttach","scripts","getElementsByTagName","getAttribute","charset","timeout","nc","setAttribute","src","onScriptComplete","event","clearTimeout","doneFns","fn","bind","Symbol","toStringTag","baseURI","location","href","installedChunks","installedChunkData","errorType","realSrc","message","request","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","runtime","some","chunkLoadingGlobal","Version","major","minor","patch","prIdent","buildIdent","fromSemver","versionString","buildSplit","prSplit","versionSplit","isCompatibleWith","other","hasPrecedenceOver","isNumeric","numericThis","numericOther","intThis","intOther","numricThis","isEqual","isStableOrCompatiblePrerelease","VersionRange","requirements","satisfiedBy","fver","requirement","comparator","fromRequirementString","components","component","match","exec","trim","bulkMemory","WebAssembly","validate","referenceTypes","saturatedFloatToInt","signExtensions","simd","isNativeFunction","val","setPolyfillsOnLoad","Prototype","len","Window","Reflect","has","ownKeys","getOwnPropertyNames","getOwnPropertySymbols","currentScriptURL","isExtension","currentScript","endsWith","URL","protocol","includes","console","warn","publicPath","config","_a","path","lastLoaded","loadRuffle","progressCallback","extensionsSupported","every","Boolean","log","default","init","Ruffle","response","wasmUrl","wasmResponse","fetch","readableStreamDefined","ReadableStream","contentLength","headers","bytesLoaded","bytesTotal","Response","start","controller","body","getReader","read","enqueue","close","fetchRuffle","FluentType","valueOf","FluentNone","super","scope","FluentNumber","opts","memoizeIntlObject","Intl","NumberFormat","format","reportError","FluentDateTime","DateTimeFormat","toISOString","MAX_PLACEABLES","FSI","PDI","selector","PluralRules","select","getDefault","variants","star","resolvePattern","RangeError","getArguments","positional","named","arg","resolveExpression","expr","minimumFractionDigits","precision","params","ReferenceError","getTime","resolveVariableReference","attr","bundle","_messages","attribute","attributes","resolveMessageReference","term","_terms","resolved","resolveTermReference","_functions","resolveFunctionReference","sel","variant","resolveSelectExpression","resolveComplexPattern","ptn","dirty","add","useIsolating","_useIsolating","elem","placeables","delete","_transform","Scope","errors","WeakSet","ctor","cache","_intls","JSON","stringify","locales","values","allowed","unwrapped","opt","entries","NUMBER_ALLOWED","NUMBER","DATETIME_ALLOWED","DATETIME","Map","FluentBundle","functions","transform","isArray","stringLocale","memoizer","getMemoizerForLocale","hasMessage","getMessage","addResource","res","allowOverrides","entry","startsWith","formatPattern","pattern","RE_MESSAGE_START","RE_ATTRIBUTE_START","RE_VARIANT_START","RE_NUMBER_LITERAL","RE_IDENTIFIER","RE_REFERENCE","RE_FUNCTION_NAME","RE_TEXT_RUN","RE_STRING_RUN","RE_STRING_ESCAPE","RE_UNICODE_ESCAPE","RE_LEADING_NEWLINES","RE_TRAILING_SPACES","RE_BLANK_LINES","RE_INDENT","TOKEN_BRACE_OPEN","TOKEN_BRACE_CLOSE","TOKEN_BRACKET_OPEN","TOKEN_BRACKET_CLOSE","TOKEN_PAREN_OPEN","TOKEN_ARROW","TOKEN_COLON","TOKEN_COMMA","TOKEN_BLANK","FluentResource","lastIndex","cursor","parseMessage","SyntaxError","re","consumeChar","char","errorClass","consumeToken","match1","parsePattern","attrs","parseAttributes","first","parsePatternElements","Infinity","indent","parseIndent","elements","commonIndent","parsePlaceable","lastElement","baked","element","Indent","parseInlineExpression","count","parseVariantKey","parseVariants","sigil","parseArgument","parseArguments","parseLiteral","parseNumberLiteral","parseEscapeSequence","parseStringLiteral","fraction","parseFloat","codepoint4","codepoint6","codepoint","fromCodePoint","makeIndent","blank","localeRe","RegExp","Locale","locale","isWellFormed","language","region","thisRange","otherRange","part","clearVariants","clearRegion","addLikelySubtags","newLocale","loc","likelySubtagsMin","regionMatchingLangs","getLikelySubtagsMin","ar","be","da","el","en","fa","ja","ko","pt","sr","sv","ta","uk","zh","negotiateLanguages","requestedLocales","availableLocales","defaultLocale","supportedLocales","Set","availableLocalesMap","outer","reqLocStr","reqLocStrLC","requestedLocale","availableLocale","filterMatches","map","BUNDLED_TEXTS","bundles","filename","tryText","navigator","languages","textAsParagraphs","line","innerText","tag","className","ns","createElementNS","classList","createInputElement","htmlType","step","createLabelElement","htmlFor","appendElement","parentElement","childElement","ruffleShadowTemplate","svgns","staticStyles","dynamicStyles","container","playButton","playIcon","playSvg","xmlns","preserveAspectRatio","viewBox","width","height","playDefs","playLinearGradient","gradientUnits","x1","y1","x2","y2","spreadMethod","playStop0","playStop100","playG","playPath1","playPath2","playUse","baseVal","unmuteOverlay","background","unmuteIcon","unmuteSvg","scale","unmutePath1","stroke","unmutePath2","unmutePath3","unmuteText","virtualKeyboard","autocapitalize","autocomplete","autocorrect","splashScreen","splashScreenSvg","splashScreenG","splashScreenPath1","splashScreenPath2","loadingAnimation","spinner","cx","cy","loadbar","loadbarInner","saveManager","saveModalArea","saveModalClose","textContent","generalSaveOptions","backupSaves","localSaves","volumeControlsModal","volumeModalArea","volumeModalClose","volumeControls","volumeControlsHeading","muteCheckboxLabel","muteCheckbox","sliderContainer","volumeSliderLabel","volumeSlider","volumeSliderText","videoModal","videoModalArea","videoModalClose","videoHolder","hardwareModal","hardwareModalArea","hardwareModalClose","hardwareModalLink","contextMenuOverlay","contextMenu","content","privateRegistry","registerElement","elementName","elementClass","registration","class","tries","customElements","externalName","define","internalName","AutoPlay","Letterbox","UnmuteOverlay","LogLevel","WindowMode","RenderBackend","ContextMenu","OpenURLMode","NetworkingAccessMode","DEFAULT_CONFIG","allowScriptAccess","parameters","autoplay","Auto","backgroundColor","letterbox","Fullscreen","Visible","upgradeToHttps","compatibilityRules","favorFlash","warnOnUnsupportedContent","logLevel","showSwfDownload","On","preloader","maxExecutionDuration","base","menu","salign","forceAlign","quality","forceScale","frameRate","wmode","Opaque","polyfills","playerVersion","preferredRenderer","openUrlMode","Allow","allowNetworking","All","openInNewTab","socketProxy","FLASH_MIMETYPE","FUTURESPLASH_MIMETYPE","FLASH7_AND_8_MIMETYPE","FLASH_MOVIE_MIMETYPE","isSwf","isSwfExtension","pathname","extension","isSwfFilename","allowExtraMimes","isSwfMimeType","buildInfo","versionNumber","versionName","versionChannel","buildDate","commitHash","RUFFLE_ORIGIN","DIMENSION_REGEX","isAudioContextUnmuted","PanicError","ReadyState","sanitizeParameters","URLSearchParams","Point","distanceTo","dx","dy","sqrt","PanicLinkInfo","label","RufflePlayer","HTMLElement","readyState","_readyState","metadata","_metadata","contextMenuForceDisabled","isTouch","contextMenuSupported","panicked","rendererDebugInfo","longPressTimer","pointerDownPosition","pointerMoveMaxDistance","shadow","attachShadow","cloneNode","getElementById","play","virtualKeyboardInput","hardwareAccelerationModal","addModalJavaScript","volumeSettings","VolumeControls","addVolumeControlsJavaScript","querySelector","contextMenuElement","checkIfTouch","showContextMenu","pointerDown","checkLongPressMovement","checkLongPress","clearLongPressTimer","fullScreenChange","instance","onFSCommand","HaveNothing","lastActivePlayingState","setupPauseOnTabHidden","modalElement","modalArea","stopPropagation","closeModal","heading","checked","isMuted","disabled","valueAsNumber","volume","style","color","set_volume","get_volume","hidden","is_playing","widthVal","typeVal","connectedCallback","updateStyles","styleElement","sheet","rules","rule","insertRule","insertRules","applyStaticStyles","observedAttributes","attributeChangedCallback","_oldValue","_newValue","disconnectedCallback","destroy","cssRules","deleteRule","widthAttr","getNamedItem","htmlDimensionToCssDimension","heightAttr","isUnusedFallbackObject","lookupElement","parent","nodeName","ensureFreshInstance","loadedConfig","showSplashScreen","ruffleConstructor","onRuffleDownloadProgress","ruffleIndexError","FileProtocol","WasmNotFound","WasmMimeType","WasmCors","CSPConflict","InvalidWasm","WasmDownload","JavascriptConflict","userAgent","WasmDisabledMicrosoftEdge","panic","renderer_debug_info","openHardwareAccelerationModal","once","actuallyUsedRendererName","renderer_name","is_wasm_simd_used","audioState","visibility","unmuteAudioContext","blur","Off","Hidden","display","unmuteOverlayClicked","audioContext","audio_context","onstatechange","loadBar","outerLoadbar","Number","isNaN","checkOptions","condition","JavascriptConfiguration","reload","_b","isConnected","isFallbackElement","Transparent","swfUrl","stream_from","load_data","swfFileName","isPlaying","fullscreenEnabled","webkitFullscreenEnabled","isFullscreen","fullscreenElement","webkitFullscreenElement","setFullscreen","isFull","enterFullscreen","exitFullscreen","navigationUI","requestFullscreen","webkitRequestFullscreen","webkitRequestFullScreen","webkitExitFullscreen","webkitCancelFullScreen","set_fullscreen","saveFile","blobURL","createObjectURL","link","download","click","revokeObjectURL","pointerType","base64ToBlob","bytesBase64","mimeString","byteString","atob","ab","ia","isB64SOL","solData","confirmReloadSave","solKey","b64SolData","localStorage","confirm","swfPath","swfHost","hostname","savePath","action","setItem","removeItem","populateSaves","replaceSOL","fileInput","b64Regex","readAsDataURL","deleteSave","getItem","saveTable","solName","row","keyCol","title","downloadCol","downloadSpan","replaceCol","replaceInput","accept","replaceLabel","deleteCol","deleteSpan","zip","duplicateNames","duplicate","openSaveManager","openVolumeControls","downloadSwf","ok","pathName","eventType","dispatchEvent","KeyboardEvent","bubbles","openVirtualKeyboard","focus","preventScroll","isVirtualKeyboardFocused","activeElement","contextMenuItems","CHECKMARK","items","addSeparator","prepare_context_menu","item","separatorBefore","caption","onClick","run_context_menu_callback","enabled","isSecureContext","clipboard","writeText","getPanicData","localSaveTable","flavor","open","pageX","pageY","startLongPressTimer","currentPosition","distance","_c","modalOpen","querySelectorAll","modal","contains","preventDefault","hideContextMenu","RightClickOnly","firstChild","menuSeparator","hr","menuItem","left","top","rect","getBoundingClientRect","clientX","clientY","maxX","clientWidth","maxY","clientHeight","clear_custom_menu_items","maxTouchPoints","audio","Audio","arrayBuffer","dataView","DataView","sampleRate","setUint32","setUint16","btoa","copyElement","specified","node","out","onCallbackAvailable","call_exposed_callback","traceObserver","observer","set_trace_observer","debugPlayerInfo","createErrorFooter","footerInfo","errorFooter","linkInfo","footerItem","footerLink","hideSplashScreen","errorIndex","Unknown","errorArray","stackIndex","avmStackIndex","stack","avmStack","errorText","monthsPrior","setMonth","getMonth","isBuildOutdated","actionLink","errorBody","issueLink","encodeURIComponent","issueBody","SwfFetchError","SwfCors","outdated","panicDiv","panicTitle","panicBody","panicFooter","viewDetails","onclick","panicText","readOnly","replaceChildren","displayRootMovieDownloadFailedMessage","origin","searchParams","div","innerDiv","buttonDiv","prepend","displayMessage","messageDiv","messageP","continueButton","displayUnsupportedVideo","video","controls","setMetadata","Loaded","Event","LOADED_METADATA","LOADED_DATA","isScriptAccessAllowed","access","isBuiltInContextMenuVisible","isYoutubeFlashSource","workaroundYoutubeMixedContent","tagName","RuffleEmbed","_d","_e","_f","_g","_h","_j","_k","_l","_m","_o","_p","_q","_r","_s","_t","_u","_v","srcval","createAttribute","setNamedItem","removeNamedItem","oldValue","newValue","isInterdictable","fromNativeEmbedElement","ruffleObj","findCaseInsensitive","defaultValue","paramsOf","param","HTMLParamElement","RuffleObject","movieElem","movieSrc","classid","fromNativeObjectElement","embedElem","objectElem","RuffleMimeTypeArray","mimeTypes","__mimeTypes","__namedMimeTypes","install","namedItem","iterator","RufflePluginArray","plugins","__plugins","__namedPlugins","plugin","refresh","FLASH_PLUGIN","description","suffixes","enabledPlugin","globalConfig","jsScriptUrl","objects","iframes","isFlashEnabledBrowser","polyfillFlashInstances","ruffleObject","replaceWith","ruffleEmbed","polyfillFrames","dataset","elementWindow","contentWindow","errorMessage","injectRuffle","elementDocument","pluginPolyfill","writable","installPlugin","polyfill","mutationsList","mutation","addedNodes","Element","childList","subtree","SourceAPI","createPlayer","PublicAPI","sources","invoked","newestName","superseded","registerSource","newestSourceName","newestVersion","kVersion","newest","satisfying","requirementString","valid","localCompatible","local","negotiate","prevRuffle","sourceName","publicAPI"],"sourceRoot":""}