diff --git a/package-lock.json b/package-lock.json index 3f548364..01bd21c4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3171,6 +3171,12 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.4.tgz", "integrity": "sha512-k3NqigXWRzQZVBDS5D1U70A5E8Qk4Kh+Ha/x4M8Bt9pF0X05eggfnC9+63Usc9Q928hRUIpIhTQaXsZwZBl4Ew==" }, + "@types/pako": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/pako/-/pako-1.0.1.tgz", + "integrity": "sha512-GdZbRSJ3Cv5fiwT6I0SQ3ckeN2PWNqxd26W9Z2fCK1tGrrasGy4puvNFtnddqH9UJFMQYXxEuuB7B8UK+LLwSg==", + "dev": true + }, "@types/puppeteer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/@types/puppeteer/-/puppeteer-3.0.1.tgz", @@ -6444,6 +6450,17 @@ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, + "fast-png": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/fast-png/-/fast-png-5.0.2.tgz", + "integrity": "sha512-75j60BAZP5R3eTHslW5o8apfuAtxRONfY3gGt3yQlsm46Xz+uRCjguBFFr5SMNGPJ7MjYFBsE1dlwPLnTA4t6w==", + "dev": true, + "requires": { + "@types/pako": "^1.0.1", + "iobuffer": "^5.0.2", + "pako": "^1.0.10" + } + }, "fastdom": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/fastdom/-/fastdom-1.0.9.tgz", @@ -8082,6 +8099,12 @@ "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", "dev": true }, + "iobuffer": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/iobuffer/-/iobuffer-5.0.2.tgz", + "integrity": "sha512-FwwzAUZkapfHq76amLGSaEigB2nRSZR+ADc+zRcIRm2MsofDJAiIEPGbw+is/lI+kW32fM5jezmJ8dVQnd1UbA==", + "dev": true + }, "ip": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", diff --git a/package.json b/package.json index e26a40f4..0189565b 100644 --- a/package.json +++ b/package.json @@ -38,6 +38,7 @@ "compression-webpack-plugin": "^3.1.0", "css-loader": "^3.5.3", "express": "^4.17.1", + "fast-png": "^5.0.2", "fastdom": "^1.0.9", "file-loader": "^4.3.0", "handlebars": "^4.7.6", diff --git a/server.js b/server.js index 173e19a6..08d55d9c 100644 --- a/server.js +++ b/server.js @@ -15,6 +15,6 @@ app.get('/', (req, res) => { https.createServer({ key: fs.readFileSync(__dirname + '/certs/server-key.pem'), cert: fs.readFileSync(__dirname + '/certs/server-cert.pem') -}, app).listen(9001, () => { +}, app).listen(443/* 9001 */, () => { console.log('Listening...'); }); \ No newline at end of file diff --git a/src/components/scrollable_new.ts b/src/components/scrollable_new.ts index 968165a4..7414b5df 100644 --- a/src/components/scrollable_new.ts +++ b/src/components/scrollable_new.ts @@ -1,5 +1,5 @@ import { logger, LogLevels } from "../lib/logger"; -import smoothscroll from '../lib/smoothscroll'; +import smoothscroll from '../vendor/smoothscroll'; import { touchSupport, isSafari } from "../lib/config"; //import { isInDOM } from "../lib/utils"; (window as any).__forceSmoothScrollPolyfill__ = true; diff --git a/src/components/wrappers.ts b/src/components/wrappers.ts index b1df6780..29dac030 100644 --- a/src/components/wrappers.ts +++ b/src/components/wrappers.ts @@ -9,17 +9,16 @@ import ProgressivePreloaderNew from './preloader_new'; import LazyLoadQueue from './lazyLoadQueue'; import VideoPlayer from '../lib/mediaPlayer'; import { RichTextProcessor } from '../lib/richtextprocessor'; -import { CancellablePromise } from '../lib/polyfill'; import { renderImageFromUrl } from './misc'; import appMessagesManager from '../lib/appManagers/appMessagesManager'; import { Layouter, RectPart } from './groupedLayout'; import PollElement from './poll'; -import appWebpManager from '../lib/appManagers/appWebpManager'; -import { mediaSizes } from '../lib/config'; +import { mediaSizes, isSafari } from '../lib/config'; import { MTDocument, MTPhotoSize } from '../types'; import animationIntersector from './animationIntersector'; import AudioElement from './audio'; import { Download } from '../lib/appManagers/appDownloadManager'; +import { webpWorkerController } from '../lib/webp/webpWorkerController'; export function wrapVideo({doc, container, message, boxWidth, boxHeight, withTail, isOut, middleware, lazyLoadQueue}: { doc: MTDocument, @@ -420,12 +419,12 @@ export function wrapSticker({doc, div, middleware, lazyLoadQueue, group, play, o if(thumb.bytes) { let img = new Image(); - if((appWebpManager.isSupported() || doc.stickerThumbConverted)/* && false */) { + if((!isSafari || doc.stickerThumbConverted)/* && false */) { renderImageFromUrl(img, appPhotosManager.getPreviewURLFromThumb(thumb, true)); div.append(img); } else { - appWebpManager.convertToPng(thumb.bytes).then(bytes => { + webpWorkerController.convert(doc.id, thumb.bytes).then(bytes => { if(middleware && !middleware()) return; thumb.bytes = bytes; diff --git a/src/dialogsBug.js b/src/dialogsBug.js deleted file mode 100644 index be8d3b98..00000000 --- a/src/dialogsBug.js +++ /dev/null @@ -1,28 +0,0 @@ -MTProto.apiManager.invokeApi('messages.getPeerDialogs', { - peers: [ - { - _: 'inputDialogPeer', - peer: {_: 'inputPeerUser', user_id: 296814355, access_hash: '7461657386624868366'} -} -] -}).then(dialogs => console.log(dialogs)); - -MTProto.apiManager.invokeApi('messages.getPinnedDialogs', { - folder_id: 0 -}).then(dialogs => console.log(dialogs)); - -// read_outbox_max_id && read_inbox_max_id are 0! -MTProto.apiManager.invokeApi('messages.getDialogs', { - flags: 0 | 1, - exclude_pinned: true, - folder_id: 0, - offset_date: 0, - offset_id: 0, - offset_peer: {_: 'inputPeerEmpty'}, - limit: 6, - hash: Date.now() * 5 -}).then(dialogs => console.log(dialogs)); - -// [109, 188, 177, 157, 19, 7, 177, 17, 49, 155, 9, 0, 44, 155, 9, 0, 237, 154, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 157, 80, 175] - works -// [109, 188, 177, 157, 19, 7, 177, 17, 49, 155, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 157, 80, 175] - pinned - diff --git a/src/global.d.ts b/src/global.d.ts new file mode 100644 index 00000000..f3dfad64 --- /dev/null +++ b/src/global.d.ts @@ -0,0 +1,7 @@ +declare module 'worker-loader!*' { + class WebpackWorker extends Worker { + constructor(); + } + + export default WebpackWorker; +} \ No newline at end of file diff --git a/src/helpers/userAgent.ts b/src/helpers/userAgent.ts new file mode 100644 index 00000000..ec565c44 --- /dev/null +++ b/src/helpers/userAgent.ts @@ -0,0 +1,15 @@ +export const userAgent = navigator ? navigator.userAgent : null; +export const isApple = navigator.userAgent.search(/OS X|iPhone|iPad|iOS/i) != -1; +export const isAndroid = navigator.userAgent.toLowerCase().indexOf('android') != -1; + +/** + * Returns true when run in WebKit derived browsers. + * This is used as a workaround for a memory leak in Safari caused by using Transferable objects to + * transfer data between WebWorkers and the main thread. + * https://github.com/mapbox/mapbox-gl-js/issues/8771 + * + * This should be removed once the underlying Safari issue is fixed. + */ +const ctx = typeof(window) !== 'undefined' ? window : self; + +export const isSafari = !!('safari' in ctx) || !!(userAgent && (/\b(iPad|iPhone|iPod)\b/.test(userAgent) || (!!userAgent.match('Safari') && !userAgent.match('Chrome')))); \ No newline at end of file diff --git a/src/lib/appManagers/appWebpManager.ts b/src/lib/appManagers/appWebpManager.ts deleted file mode 100644 index 35a517d4..00000000 --- a/src/lib/appManagers/appWebpManager.ts +++ /dev/null @@ -1,103 +0,0 @@ -class AppWebpManager { - private webpMachine: any = null; - private loaded: Promise; - private busyPromise: Promise; - private queue: {bytes: Uint8Array, callback: (res: Uint8Array) => void}[] = []; - - private testPromise: Promise = null; - public webpSupport = false; - - constructor() { - this.testWebpSupport(); - } - - private loadWebpHero() { - if(this.loaded) return this.loaded; - - this.loaded = new Promise(async(resolve, reject) => { - let res = await this.testWebpSupport(); - - if(!res) { - (window as any).webpLoaded = () => { - //console.log('webpHero loaded'); - this.webpMachine = new (window as any).WebpMachine(); - resolve(); - }; - - let sc = document.createElement('script'); - sc.src = 'npm.webp-hero.chunk.js'; - sc.async = true; - sc.onload = (window as any).webpLoaded; - - document.body.appendChild(sc); - } else { - resolve(); - } - }); - } - - private convert(bytes: Uint8Array): AppWebpManager['busyPromise'] { - return this.webpMachine.decode(bytes); - } - - private async processQueue() { - if(this.busyPromise) return; - - this.busyPromise = Promise.resolve(); - - let {bytes, callback} = this.queue.pop(); - - if(!this.loaded) { - this.loadWebpHero(); - } - - await this.loaded; - - this.busyPromise = this.convert(bytes); - let res = await this.busyPromise; - - //console.log('converted webp', res); - - callback(res as Uint8Array); - - this.busyPromise = null; - - if(this.queue.length) { - this.processQueue(); - } - } - - public testWebpSupport() { - if(this.testPromise) return this.testPromise; - - return this.testPromise = new Promise((resolve, reject) => { - return resolve(this.webpSupport = true); - let webP = new Image(); - webP.src = 'data:image/webp;base64,UklGRi4AAABXRUJQVlA4TCEAAAAvAUAAEB8wAiMw' + - 'AgSSNtse/cXjxyCCmrYNWPwmHRH9jwMA'; - webP.onload = webP.onerror = () => { - resolve(this.webpSupport = webP.height === 2/* && false */); - }; - }); - } - - public isSupported() { - return this.webpSupport; - } - - public convertToPng(bytes: Uint8Array) { - //console.warn('convertToPng!'); - return new Promise((resolve, reject) => { - // @ts-ignore - this.queue.push({bytes, callback: resolve}); - this.processQueue(); - }); - } -} - -const appWebpManager = new AppWebpManager(); -/* // @ts-ignore -if(process.env.NODE_ENV != 'production') { - (window as any).appWebpManager = appWebpManager; -} */ -export default appWebpManager; diff --git a/src/lib/config.ts b/src/lib/config.ts index 0afea706..6eb56194 100644 --- a/src/lib/config.ts +++ b/src/lib/config.ts @@ -15,6 +15,9 @@ */ +import {isSafari, isAndroid, isApple} from '../helpers/userAgent'; +export {isSafari, isAndroid, isApple}; + export const Emoji: {[emoji: string]: number} = {"#️⃣":6365,"*️⃣":6366,"0️⃣":6367,"1️⃣":6368,"2️⃣":6369,"3️⃣":6370,"4️⃣":6371,"5️⃣":6372,"6️⃣":6373,"7️⃣":6374,"8️⃣":6375,"9️⃣":6376,"©️":6362,"®️":6363,"🀄":573,"🃏":572,"🅰️":6383,"🅱️":6385,"🅾️":6394,"🅿️":6396,"🆎":6384,"🆑":6386,"🆒":6387,"🆓":6388,"🆔":6390,"🆕":6392,"🆖":6393,"🆗":6395,"🆘":6397,"🆙":6398,"🆚":6399,"🇦🇨":78,"🇦🇩":79,"🇦🇪":710,"🇦🇫":711,"🇦🇬":712,"🇦🇮":713,"🇦🇱":714,"🇦🇲":715,"🇦🇴":716,"🇦🇶":717,"🇦🇷":718,"🇦🇸":719,"🇦🇹":720,"🇦🇺":721,"🇦🇼":722,"🇦🇽":723,"🇦🇿":724,"🇧🇦":725,"🇧🇧":726,"🇧🇩":727,"🇧🇪":728,"🇧🇫":729,"🇧🇬":730,"🇧🇭":731,"🇧🇮":732,"🇧🇯":733,"🇧🇱":734,"🇧🇲":735,"🇧🇳":736,"🇧🇴":737,"🇧🇶":738,"🇧🇷":739,"🇧🇸":740,"🇧🇹":741,"🇧🇻":742,"🇧🇼":743,"🇧🇾":744,"🇧🇿":745,"🇨🇦":746,"🇨🇨":747,"🇨🇩":748,"🇨🇫":749,"🇨🇬":750,"🇨🇭":751,"🇨🇮":752,"🇨🇰":753,"🇨🇱":754,"🇨🇲":755,"🇨🇳":756,"🇨🇴":757,"🇨🇵":758,"🇨🇷":759,"🇨🇺":760,"🇨🇻":761,"🇨🇼":762,"🇨🇽":763,"🇨🇾":764,"🇨🇿":765,"🇩🇪":766,"🇩🇬":767,"🇩🇯":768,"🇩🇰":769,"🇩🇲":770,"🇩🇴":771,"🇩🇿":772,"🇪🇦":773,"🇪🇨":774,"🇪🇪":775,"🇪🇬":776,"🇪🇭":777,"🇪🇷":778,"🇪🇸":779,"🇪🇹":780,"🇪🇺":781,"🇫🇮":782,"🇫🇯":783,"🇫🇰":784,"🇫🇲":785,"🇫🇴":786,"🇫🇷":787,"🇬🇦":788,"🇬🇧":789,"🇬🇩":790,"🇬🇪":791,"🇬🇫":792,"🇬🇬":793,"🇬🇭":794,"🇬🇮":795,"🇬🇱":796,"🇬🇲":797,"🇬🇳":798,"🇬🇵":799,"🇬🇶":7100,"🇬🇷":7101,"🇬🇸":7102,"🇬🇹":7103,"🇬🇺":7104,"🇬🇼":7105,"🇬🇾":7106,"🇭🇰":7107,"🇭🇲":7108,"🇭🇳":7109,"🇭🇷":7110,"🇭🇹":7111,"🇭🇺":7112,"🇮🇨":7113,"🇮🇩":7114,"🇮🇪":7115,"🇮🇱":7116,"🇮🇲":7117,"🇮🇳":7118,"🇮🇴":7119,"🇮🇶":7120,"🇮🇷":7121,"🇮🇸":7122,"🇮🇹":7123,"🇯🇪":7124,"🇯🇲":7125,"🇯🇴":7126,"🇯🇵":7127,"🇰🇪":7128,"🇰🇬":7129,"🇰🇭":7130,"🇰🇮":7131,"🇰🇲":7132,"🇰🇳":7133,"🇰🇵":7134,"🇰🇷":7135,"🇰🇼":7136,"🇰🇾":7137,"🇰🇿":7138,"🇱🇦":7139,"🇱🇧":7140,"🇱🇨":7141,"🇱🇮":7142,"🇱🇰":7143,"🇱🇷":7144,"🇱🇸":7145,"🇱🇹":7146,"🇱🇺":7147,"🇱🇻":7148,"🇱🇾":7149,"🇲🇦":7150,"🇲🇨":7151,"🇲🇩":7152,"🇲🇪":7153,"🇲🇫":7154,"🇲🇬":7155,"🇲🇭":7156,"🇲🇰":7157,"🇲🇱":7158,"🇲🇲":7159,"🇲🇳":7160,"🇲🇴":7161,"🇲🇵":7162,"🇲🇶":7163,"🇲🇷":7164,"🇲🇸":7165,"🇲🇹":7166,"🇲🇺":7167,"🇲🇻":7168,"🇲🇼":7169,"🇲🇽":7170,"🇲🇾":7171,"🇲🇿":7172,"🇳🇦":7173,"🇳🇨":7174,"🇳🇪":7175,"🇳🇫":7176,"🇳🇬":7177,"🇳🇮":7178,"🇳🇱":7179,"🇳🇴":7180,"🇳🇵":7181,"🇳🇷":7182,"🇳🇺":7183,"🇳🇿":7184,"🇴🇲":7185,"🇵🇦":7186,"🇵🇪":7187,"🇵🇫":7188,"🇵🇬":7189,"🇵🇭":7190,"🇵🇰":7191,"🇵🇱":7192,"🇵🇲":7193,"🇵🇳":7194,"🇵🇷":7195,"🇵🇸":7196,"🇵🇹":7197,"🇵🇼":7198,"🇵🇾":7199,"🇶🇦":7200,"🇷🇪":7201,"🇷🇴":7202,"🇷🇸":7203,"🇷🇺":7204,"🇷🇼":7205,"🇸🇦":7206,"🇸🇧":7207,"🇸🇨":7208,"🇸🇩":7209,"🇸🇪":7210,"🇸🇬":7211,"🇸🇭":7212,"🇸🇮":7213,"🇸🇯":7214,"🇸🇰":7215,"🇸🇱":7216,"🇸🇲":7217,"🇸🇳":7218,"🇸🇴":7219,"🇸🇷":7220,"🇸🇸":7221,"🇸🇹":7222,"🇸🇻":7223,"🇸🇽":7224,"🇸🇾":7225,"🇸🇿":7226,"🇹🇦":7227,"🇹🇨":7228,"🇹🇩":7229,"🇹🇫":7230,"🇹🇬":7231,"🇹🇭":7232,"🇹🇯":7233,"🇹🇰":7234,"🇹🇱":7235,"🇹🇲":7236,"🇹🇳":7237,"🇹🇴":7238,"🇹🇷":7239,"🇹🇹":7240,"🇹🇻":7241,"🇹🇼":7242,"🇹🇿":7243,"🇺🇦":7244,"🇺🇬":7245,"🇺🇲":7246,"🇺🇳":7247,"🇺🇸":7248,"🇺🇾":7249,"🇺🇿":7250,"🇻🇦":7251,"🇻🇨":7252,"🇻🇪":7253,"🇻🇬":7254,"🇻🇮":7255,"🇻🇳":7256,"🇻🇺":7257,"🇼🇫":7258,"🇼🇸":7259,"🇽🇰":7260,"🇾🇪":7261,"🇾🇹":7262,"🇿🇦":7263,"🇿🇲":7264,"🇿🇼":7265,"🈁":6400,"🈂️":6401,"🈚":6407,"🈯":6404,"🈲":6408,"🈳":6412,"🈴":6411,"🈵":6416,"🈶":6403,"🈷️":6402,"🈸":6410,"🈹":6406,"🈺":6415,"🉐":6405,"🉑":6409,"🌀":4197,"🌁":449,"🌂":4199,"🌃":450,"🌄":452,"🌅":453,"🌆":454,"🌇":455,"🌈":4198,"🌉":456,"🌊":4210,"🌋":410,"🌌":4184,"🌍":41,"🌎":42,"🌏":43,"🌐":44,"🌑":4164,"🌒":4165,"🌓":4166,"🌔":4167,"🌕":4168,"🌖":4169,"🌗":4170,"🌘":4171,"🌙":4172,"🌚":4173,"🌛":4174,"🌜":4175,"🌝":4178,"🌞":4179,"🌟":4182,"🌠":4183,"🌡️":4176,"🌤️":4188,"🌥️":4189,"🌦️":4190,"🌧️":4191,"🌨️":4192,"🌩️":4193,"🌪️":4194,"🌫️":4195,"🌬️":4196,"🌭":347,"🌮":349,"🌯":350,"🌰":331,"🌱":2116,"🌲":2117,"🌳":2118,"🌴":2119,"🌵":2120,"🌶️":323,"🌷":2115,"🌸":2107,"🌹":2110,"🌺":2112,"🌻":2113,"🌼":2114,"🌽":322,"🌾":2121,"🌿":2122,"🍀":2124,"🍁":2125,"🍂":2126,"🍃":2127,"🍄":329,"🍅":316,"🍆":319,"🍇":31,"🍈":32,"🍉":33,"🍊":34,"🍋":35,"🍌":36,"🍍":37,"🍎":39,"🍏":310,"🍐":311,"🍑":312,"🍒":313,"🍓":314,"🍔":344,"🍕":346,"🍖":340,"🍗":341,"🍘":364,"🍙":365,"🍚":366,"🍛":367,"🍜":368,"🍝":369,"🍞":332,"🍟":345,"🍠":370,"🍡":376,"🍢":371,"🍣":372,"🍤":373,"🍥":374,"🍦":385,"🍧":386,"🍨":387,"🍩":388,"🍪":389,"🍫":394,"🍬":395,"🍭":396,"🍮":397,"🍯":398,"🍰":391,"🍱":363,"🍲":356,"🍳":354,"🍴":3118,"🍵":3102,"🍶":3103,"🍷":3105,"🍸":3106,"🍹":3107,"🍺":3108,"🍻":3109,"🍼":399,"🍽️":3117,"🍾":3104,"🍿":359,"🎀":517,"🎁":518,"🎂":390,"🎃":51,"🎄":52,"🎅":1326,"🎆":53,"🎇":54,"🎈":57,"🎉":58,"🎊":59,"🎋":510,"🎌":73,"🎍":511,"🎎":512,"🎏":513,"🎐":514,"🎑":515,"🎒":625,"🎓":637,"🎖️":522,"🎗️":519,"🎙️":656,"🎚️":657,"🎛️":658,"🎞️":689,"🎟️":520,"🎠":458,"🎡":459,"🎢":460,"🎣":549,"🎤":659,"🎥":688,"🎦":6324,"🎧":660,"🎨":577,"🎩":636,"🎪":462,"🎫":521,"🎬":691,"🎭":575,"🎮":561,"🎯":555,"🎰":563,"🎱":558,"🎲":564,"🎳":537,"🎴":574,"🎵":654,"🎶":655,"🎷":662,"🎸":663,"🎹":664,"🎺":665,"🎻":666,"🎼":653,"🎽":551,"🎾":535,"🎿":552,"🏀":531,"🏁":71,"🏂":1397,"🏃‍♀️":1381,"🏃‍♂️":1380,"🏃":1379,"🏄‍♀️":1403,"🏄‍♂️":1402,"🏄":1401,"🏅":524,"🏆":523,"🏇":1395,"🏈":533,"🏉":534,"🏊‍♀️":1409,"🏊‍♂️":1408,"🏊":1407,"🏋️‍♀️":1415,"🏋️‍♂️":1414,"🏋️":1413,"🏌️‍♀️":1400,"🏌️‍♂️":1399,"🏌️":1398,"🏍️":492,"🏎️":491,"🏏":538,"🏐":532,"🏑":539,"🏒":540,"🏓":542,"🏔️":48,"🏕️":412,"🏖️":413,"🏗️":419,"🏘️":421,"🏙️":451,"🏚️":422,"🏛️":418,"🏜️":414,"🏝️":415,"🏞️":416,"🏟️":417,"🏠":423,"🏡":424,"🏢":425,"🏣":426,"🏤":427,"🏥":428,"🏦":429,"🏧":6234,"🏨":430,"🏩":431,"🏪":432,"🏫":433,"🏬":434,"🏭":435,"🏮":6102,"🏯":436,"🏰":437,"🏳️‍🌈":76,"🏳️":75,"🏴‍☠️":77,"🏴󠁧󠁢󠁥󠁮󠁧󠁿":7266,"🏴󠁧󠁢󠁳󠁣󠁴󠁿":7267,"🏴󠁧󠁢󠁷󠁬󠁳󠁿":7268,"🏴":74,"🏵️":2109,"🏷️":6120,"🏸":543,"🏹":6189,"🏺":3121,"🏻":81,"🏼":82,"🏽":83,"🏾":84,"🏿":85,"🐀":244,"🐁":243,"🐂":225,"🐃":226,"🐄":227,"🐅":217,"🐆":218,"🐇":247,"🐈":214,"🐉":282,"🐊":277,"🐋":286,"🐌":294,"🐍":280,"🐎":220,"🐏":232,"🐐":234,"🐑":233,"🐒":22,"🐓":262,"🐔":261,"🐕‍🦺":28,"🐕":26,"🐖":229,"🐗":230,"🐘":239,"🐙":292,"🐚":293,"🐛":296,"🐜":297,"🐝":298,"🐞":299,"🐟":288,"🐠":289,"🐡":290,"🐢":278,"🐣":263,"🐤":264,"🐥":265,"🐦":266,"🐧":267,"🐨":252,"🐩":29,"🐪":235,"🐫":236,"🐬":287,"🐭":242,"🐮":224,"🐯":216,"🐰":246,"🐱":213,"🐲":281,"🐳":285,"🐴":219,"🐵":21,"🐶":25,"🐷":228,"🐸":276,"🐹":245,"🐺":210,"🐻":251,"🐼":253,"🐽":231,"🐾":259,"🐿️":248,"👀":1194,"👁️‍🗨️":1145,"👁️":1195,"👂":1188,"👃":1190,"👄":1197,"👅":1196,"👆":1164,"👇":1166,"👈":1162,"👉":1163,"👊":1171,"👋":1150,"👌":1155,"👍":1168,"👎":1169,"👏":1174,"👐":1176,"👑":634,"👒":635,"👓":61,"👔":66,"👕":67,"👖":68,"👗":613,"👘":614,"👙":619,"👚":620,"👛":621,"👜":622,"👝":623,"👞":626,"👟":627,"👠":630,"👡":631,"👢":633,"👣":1483,"👤":1481,"👥":1482,"👦":1200,"👧":1201,"👨‍🌾":1267,"👨‍🍳":1270,"👨‍🎓":1258,"👨‍🎤":1288,"👨‍🎨":1291,"👨‍🏫":1261,"👨‍🏭":1276,"👨‍👦‍👦":1471,"👨‍👦":1470,"👨‍👧‍👦":1473,"👨‍👧‍👧":1474,"👨‍👧":1472,"👨‍👨‍👦":1460,"👨‍👨‍👦‍👦":1463,"👨‍👨‍👧":1461,"👨‍👨‍👧‍👦":1462,"👨‍👨‍👧‍👧":1464,"👨‍👩‍👦":1455,"👨‍👩‍👦‍👦":1458,"👨‍👩‍👧":1456,"👨‍👩‍👧‍👦":1457,"👨‍👩‍👧‍👧":1459,"👨‍💻":1285,"👨‍💼":1279,"👨‍🔧":1273,"👨‍🔬":1282,"👨‍🚀":1297,"👨‍🚒":1300,"👨‍🦯":1371,"👨‍🦰":1206,"👨‍🦱":1207,"👨‍🦲":1209,"👨‍🦳":1208,"👨‍🦼":1374,"👨‍🦽":1377,"👨‍⚕️":1255,"👨‍⚖️":1264,"👨‍✈️":1294,"👨‍❤️‍👨":1452,"👨‍❤️‍💋‍👨":1448,"👨":1204,"👩‍🌾":1268,"👩‍🍳":1271,"👩‍🎓":1259,"👩‍🎤":1289,"👩‍🎨":1292,"👩‍🏫":1262,"👩‍🏭":1277,"👩‍👦‍👦":1476,"👩‍👦":1475,"👩‍👧‍👦":1478,"👩‍👧‍👧":1479,"👩‍👧":1477,"👩‍👩‍👦":1465,"👩‍👩‍👦‍👦":1468,"👩‍👩‍👧":1466,"👩‍👩‍👧‍👦":1467,"👩‍👩‍👧‍👧":1469,"👩‍💻":1286,"👩‍💼":1280,"👩‍🔧":1274,"👩‍🔬":1283,"👩‍🚀":1298,"👩‍🚒":1301,"👩‍🦯":1372,"👩‍🦰":1211,"👩‍🦱":1213,"👩‍🦲":1217,"👩‍🦳":1215,"👩‍🦼":1375,"👩‍🦽":1378,"👩‍⚕️":1256,"👩‍⚖️":1265,"👩‍✈️":1295,"👩‍❤️‍👨":1451,"👩‍❤️‍👩":1453,"👩‍❤️‍💋‍👨":1447,"👩‍❤️‍💋‍👩":1449,"👩":1210,"👪":1454,"👫":1444,"👬":1445,"👭":1443,"👮‍♀️":1304,"👮‍♂️":1303,"👮":1302,"👯‍♀️":1387,"👯‍♂️":1386,"👯":1385,"👰":1322,"👱‍♀️":1219,"👱‍♂️":1220,"👱":1203,"👲":1319,"👳‍♀️":1318,"👳‍♂️":1317,"👳":1316,"👴":1222,"👵":1223,"👶":1198,"👷‍♀️":1313,"👷‍♂️":1312,"👷":1311,"👸":1315,"👹":197,"👺":198,"👻":199,"👼":1325,"👽":1100,"👾":1101,"👿":192,"💀":193,"💁‍♀️":1238,"💁‍♂️":1237,"💁":1236,"💂‍♀️":1310,"💂‍♂️":1309,"💂":1308,"💃":1382,"💄":641,"💅":1181,"💆‍♀️":1357,"💆‍♂️":1356,"💆":1355,"💇‍♀️":1360,"💇‍♂️":1359,"💇":1358,"💈":461,"💉":6208,"💊":6210,"💋":1115,"💌":1116,"💍":642,"💎":643,"💏":1446,"💐":2106,"💑":1450,"💒":438,"💓":1121,"💔":1126,"💕":1123,"💖":1119,"💗":1120,"💘":1117,"💙":1131,"💚":1130,"💛":1129,"💜":1132,"💝":1118,"💞":1122,"💟":1124,"💠":6447,"💡":6100,"💢":1137,"💣":1143,"💤":1149,"💥":1138,"💦":1140,"💧":4209,"💨":1141,"💩":195,"💪":1183,"💫":1139,"💬":1144,"💭":1148,"💮":2108,"💯":1136,"💰":6121,"💱":6130,"💲":6131,"💳":6127,"💴":6122,"💵":6123,"💶":6124,"💷":6125,"💸":6126,"💹":6129,"💺":4123,"💻":677,"💼":6152,"💽":683,"💾":684,"💿":685,"📀":686,"📁":6153,"📂":6154,"📃":6113,"📄":6115,"📅":6156,"📆":6157,"📇":6160,"📈":6161,"📉":6162,"📊":6163,"📋":6164,"📌":6165,"📍":6166,"📎":6167,"📏":6169,"📐":6170,"📑":6118,"📒":6112,"📓":6111,"📔":6104,"📕":6105,"📖":6106,"📗":6107,"📘":6108,"📙":6109,"📚":6110,"📛":6337,"📜":6114,"📝":6151,"📞":672,"📟":673,"📠":674,"📡":6207,"📢":648,"📣":649,"📤":6136,"📥":6137,"📦":6138,"📧":6133,"📨":6134,"📩":6135,"📪":6140,"📫":6139,"📬":6141,"📭":6142,"📮":6143,"📯":650,"📰":6116,"📱":669,"📲":670,"📳":6328,"📴":6329,"📵":6256,"📶":6327,"📷":693,"📸":694,"📹":695,"📺":692,"📻":661,"📼":696,"📽️":690,"📿":640,"🔀":6306,"🔁":6307,"🔂":6308,"🔃":6274,"🔄":6275,"🔅":6325,"🔆":6326,"🔇":644,"🔈":645,"🔉":646,"🔊":647,"🔋":675,"🔌":676,"🔍":697,"🔎":698,"🔏":6177,"🔐":6178,"🔑":6179,"🔒":6175,"🔓":6176,"🔔":651,"🔕":652,"🔖":6119,"🔗":6197,"🔘":6448,"🔙":6276,"🔚":6277,"🔛":6278,"🔜":6279,"🔝":6280,"🔞":6257,"🔟":6377,"🔠":6378,"🔡":6379,"🔢":6380,"🔣":6381,"🔤":6382,"🔥":4208,"🔦":6101,"🔧":6191,"🔨":6181,"🔩":6192,"🔪":3120,"🔫":6188,"🔬":6205,"🔭":6206,"🔮":559,"🔯":6292,"🔰":6338,"🔱":6336,"🔲":6450,"🔳":6449,"🔴":6417,"🔵":6421,"🔶":6441,"🔷":6442,"🔸":6443,"🔹":6444,"🔺":6445,"🔻":6446,"🔼":6316,"🔽":6318,"🕉️":6283,"🕊️":268,"🕋":446,"🕌":442,"🕍":444,"🕎":6291,"🕐":4142,"🕑":4144,"🕒":4146,"🕓":4148,"🕔":4150,"🕕":4152,"🕖":4154,"🕗":4156,"🕘":4158,"🕙":4160,"🕚":4162,"🕛":4140,"🕜":4143,"🕝":4145,"🕞":4147,"🕟":4149,"🕠":4151,"🕡":4153,"🕢":4155,"🕣":4157,"🕤":4159,"🕥":4161,"🕦":4163,"🕧":4141,"🕯️":699,"🕰️":4139,"🕳️":1142,"🕴️":1384,"🕵️‍♀️":1307,"🕵️‍♂️":1306,"🕵️":1305,"🕶️":62,"🕷️":2101,"🕸️":2102,"🕹️":562,"🕺":1383,"🖇️":6168,"🖊️":6148,"🖋️":6147,"🖌️":6149,"🖍️":6150,"🖐️":1152,"🖕":1165,"🖖":1154,"🖤":1134,"🖥️":678,"🖨️":679,"🖱️":681,"🖲️":682,"🖼️":576,"🗂️":6155,"🗃️":6172,"🗄️":6173,"🗑️":6174,"🗒️":6158,"🗓️":6159,"🗜️":6194,"🗝️":6180,"🗞️":6117,"🗡️":6186,"🗣️":1480,"🗨️":1146,"🗯️":1147,"🗳️":6144,"🗺️":45,"🗻":411,"🗼":439,"🗽":440,"🗾":46,"🗿":6233,"😀":11,"😁":14,"😂":18,"😃":12,"😄":13,"😅":16,"😆":15,"😇":113,"😈":191,"😉":111,"😊":112,"😋":122,"😌":142,"😍":115,"😎":160,"😏":137,"😐":134,"😑":135,"😒":138,"😓":183,"😔":143,"😕":163,"😖":180,"😗":118,"😘":117,"😙":121,"😚":120,"😛":123,"😜":124,"😝":126,"😞":182,"😟":164,"😠":189,"😡":188,"😢":177,"😣":181,"😤":187,"😥":176,"😦":172,"😧":173,"😨":174,"😩":184,"😪":144,"😫":185,"😬":140,"😭":178,"😮":167,"😯":168,"😰":175,"😱":179,"😲":169,"😳":170,"😴":146,"😵":156,"😶":136,"😷":147,"😸":1104,"😹":1105,"😺":1103,"😻":1106,"😼":1107,"😽":1108,"😾":1111,"😿":1110,"🙀":1109,"🙁":165,"🙂":19,"🙃":110,"🙄":139,"🙅‍♀️":1232,"🙅‍♂️":1231,"🙅":1230,"🙆‍♀️":1235,"🙆‍♂️":1234,"🙆":1233,"🙇‍♀️":1247,"🙇‍♂️":1246,"🙇":1245,"🙈":1112,"🙉":1113,"🙊":1114,"🙋‍♀️":1241,"🙋‍♂️":1240,"🙋":1239,"🙌":1175,"🙍‍♀️":1226,"🙍‍♂️":1225,"🙍":1224,"🙎‍♀️":1229,"🙎‍♂️":1228,"🙎":1227,"🙏":1179,"🚀":4129,"🚁":4124,"🚂":463,"🚃":464,"🚄":465,"🚅":466,"🚆":467,"🚇":468,"🚈":469,"🚉":470,"🚊":471,"🚋":474,"🚌":475,"🚍":476,"🚎":477,"🚏":4100,"🚐":478,"🚑":479,"🚒":480,"🚓":481,"🚔":482,"🚕":483,"🚖":484,"🚗":485,"🚘":486,"🚙":487,"🚚":488,"🚛":489,"🚜":490,"🚝":472,"🚞":473,"🚟":4125,"🚠":4126,"🚡":4127,"🚢":4117,"🚣‍♀️":1406,"🚣‍♂️":1405,"🚣":1404,"🚤":4113,"🚥":4106,"🚦":4107,"🚧":4109,"🚨":4105,"🚩":72,"🚪":6213,"🚫":6250,"🚬":6230,"🚭":6252,"🚮":6235,"🚯":6253,"🚰":6236,"🚱":6254,"🚲":497,"🚳":6251,"🚴‍♀️":1418,"🚴‍♂️":1417,"🚴":1416,"🚵‍♀️":1421,"🚵‍♂️":1420,"🚵":1419,"🚶‍♀️":1363,"🚶‍♂️":1362,"🚶":1361,"🚷":6255,"🚸":6248,"🚹":6238,"🚺":6239,"🚻":6240,"🚼":6241,"🚽":6217,"🚾":6242,"🚿":6218,"🛀":1440,"🛁":6219,"🛂":6243,"🛃":6244,"🛄":6245,"🛅":6246,"🛋️":6215,"🛌":1441,"🛍️":624,"🛎️":4131,"🛏️":6214,"🛐":6281,"🛑":4108,"🛒":6229,"🛕":443,"🛠️":6185,"🛡️":6190,"🛢️":4103,"🛣️":4101,"🛤️":4102,"🛥️":4116,"🛩️":4119,"🛫":4120,"🛬":4121,"🛰️":4128,"🛳️":4114,"🛴":498,"🛵":493,"🛶":4112,"🛷":553,"🛸":4130,"🛹":499,"🛺":496,"🟠":6418,"🟡":6419,"🟢":6420,"🟣":6422,"🟤":6423,"🟥":6426,"🟦":6430,"🟧":6427,"🟨":6428,"🟩":6429,"🟪":6431,"🟫":6432,"🤍":1135,"🤎":1133,"🤏":1156,"🤐":132,"🤑":127,"🤒":148,"🤓":161,"🤔":131,"🤕":149,"🤖":1102,"🤗":128,"🤘":1160,"🤙":1161,"🤚":1151,"🤛":1172,"🤜":1173,"🤝":1178,"🤞":1158,"🤟":1159,"🤠":158,"🤡":196,"🤢":150,"🤣":17,"🤤":145,"🤥":141,"🤦‍♀️":1250,"🤦‍♂️":1249,"🤦":1248,"🤧":152,"🤨":133,"🤩":116,"🤪":125,"🤫":130,"🤬":190,"🤭":129,"🤮":151,"🤯":157,"🤰":1323,"🤱":1324,"🤲":1177,"🤳":1182,"🤴":1314,"🤵":1321,"🤶":1327,"🤷‍♀️":1253,"🤷‍♂️":1252,"🤷":1251,"🤸‍♀️":1424,"🤸‍♂️":1423,"🤸":1422,"🤹‍♀️":1436,"🤹‍♂️":1435,"🤹":1434,"🤺":1394,"🤼‍♀️":1427,"🤼‍♂️":1426,"🤼":1425,"🤽‍♀️":1430,"🤽‍♂️":1429,"🤽":1428,"🤾‍♀️":1433,"🤾‍♂️":1432,"🤾":1431,"🤿":550,"🥀":2111,"🥁":668,"🥂":3110,"🥃":3111,"🥄":3119,"🥅":546,"🥇":525,"🥈":526,"🥉":527,"🥊":544,"🥋":545,"🥌":554,"🥍":541,"🥎":530,"🥏":536,"🥐":333,"🥑":318,"🥒":324,"🥓":343,"🥔":320,"🥕":321,"🥖":334,"🥗":358,"🥘":355,"🥙":351,"🥚":353,"🥛":3100,"🥜":330,"🥝":315,"🥞":337,"🥟":377,"🥠":378,"🥡":379,"🥢":3116,"🥣":357,"🥤":3112,"🥥":317,"🥦":326,"🥧":393,"🥨":335,"🥩":342,"🥪":348,"🥫":362,"🥬":325,"🥭":38,"🥮":375,"🥯":336,"🥰":114,"🥱":186,"🥳":159,"🥴":155,"🥵":153,"🥶":154,"🥺":171,"🥻":615,"🥼":64,"🥽":63,"🥾":628,"🥿":629,"🦀":380,"🦁":215,"🦂":2103,"🦃":260,"🦄":221,"🦅":269,"🦆":270,"🦇":250,"🦈":291,"🦉":272,"🦊":211,"🦋":295,"🦌":223,"🦍":23,"🦎":279,"🦏":240,"🦐":382,"🦑":383,"🦒":238,"🦓":222,"🦔":249,"🦕":283,"🦖":284,"🦗":2100,"🦘":257,"🦙":237,"🦚":274,"🦛":241,"🦜":275,"🦝":212,"🦞":381,"🦟":2104,"🦠":2105,"🦡":258,"🦢":271,"🦥":254,"🦦":255,"🦧":24,"🦨":256,"🦩":273,"🦪":384,"🦮":27,"🦯":6196,"🦴":1193,"🦵":1186,"🦶":1187,"🦷":1192,"🦸‍♀️":1330,"🦸‍♂️":1329,"🦸":1328,"🦹‍♀️":1333,"🦹‍♂️":1332,"🦹":1331,"🦺":65,"🦻":1189,"🦼":495,"🦽":494,"🦾":1184,"🦿":1185,"🧀":339,"🧁":392,"🧂":361,"🧃":3113,"🧄":327,"🧅":328,"🧆":352,"🧇":338,"🧈":360,"🧉":3114,"🧊":3115,"🧍‍♀️":1366,"🧍‍♂️":1365,"🧍":1364,"🧎‍♀️":1369,"🧎‍♂️":1368,"🧎":1367,"🧏‍♀️":1244,"🧏‍♂️":1243,"🧏":1242,"🧐":162,"🧑‍🌾":1266,"🧑‍🍳":1269,"🧑‍🎓":1257,"🧑‍🎤":1287,"🧑‍🎨":1290,"🧑‍🏫":1260,"🧑‍🏭":1275,"🧑‍💻":1284,"🧑‍💼":1278,"🧑‍🔧":1272,"🧑‍🔬":1281,"🧑‍🚀":1296,"🧑‍🚒":1299,"🧑‍🤝‍🧑":1442,"🧑‍🦯":1370,"🧑‍🦰":1212,"🧑‍🦱":1214,"🧑‍🦲":1218,"🧑‍🦳":1216,"🧑‍🦼":1373,"🧑‍🦽":1376,"🧑‍⚕️":1254,"🧑‍⚖️":1263,"🧑‍✈️":1293,"🧑":1202,"🧒":1199,"🧓":1221,"🧔":1205,"🧕":1320,"🧖‍♀️":1390,"🧖‍♂️":1389,"🧖":1388,"🧗‍♀️":1393,"🧗‍♂️":1392,"🧗":1391,"🧘‍♀️":1439,"🧘‍♂️":1438,"🧘":1437,"🧙‍♀️":1336,"🧙‍♂️":1335,"🧙":1334,"🧚‍♀️":1339,"🧚‍♂️":1338,"🧚":1337,"🧛‍♀️":1342,"🧛‍♂️":1341,"🧛":1340,"🧜‍♀️":1345,"🧜‍♂️":1344,"🧜":1343,"🧝‍♀️":1348,"🧝‍♂️":1347,"🧝":1346,"🧞‍♀️":1351,"🧞‍♂️":1350,"🧞":1349,"🧟‍♀️":1354,"🧟‍♂️":1353,"🧟":1352,"🧠":1191,"🧡":1128,"🧢":638,"🧣":69,"🧤":610,"🧥":611,"🧦":612,"🧧":516,"🧨":55,"🧩":565,"🧪":6202,"🧫":6203,"🧬":6204,"🧭":47,"🧮":687,"🧯":6228,"🧰":6199,"🧱":420,"🧲":6200,"🧳":4132,"🧴":6221,"🧵":578,"🧶":579,"🧷":6222,"🧸":566,"🧹":6223,"🧺":6224,"🧻":6225,"🧼":6226,"🧽":6227,"🧾":6128,"🧿":560,"🩰":632,"🩱":616,"🩲":617,"🩳":618,"🩸":6209,"🩹":6211,"🩺":6212,"🪀":556,"🪁":557,"🪂":4122,"🪐":4180,"🪑":6216,"🪒":6220,"🪓":6182,"🪔":6103,"🪕":667,"‼️":6355,"⁉️":6356,"™️":6364,"ℹ️":6389,"↔️":6269,"↕️":6268,"↖️":6267,"↗️":6261,"↘️":6263,"↙️":6265,"↩️":6270,"↪️":6271,"⌚":4135,"⌛":4133,"⌨️":680,"⏏️":6323,"⏩":6310,"⏪":6314,"⏫":6317,"⏬":6319,"⏭️":6311,"⏮️":6315,"⏯️":6312,"⏰":4136,"⏱️":4137,"⏲️":4138,"⏳":4134,"⏸️":6320,"⏹️":6321,"⏺️":6322,"Ⓜ️":6391,"▪️":6439,"▫️":6440,"▶️":6309,"◀️":6313,"◻️":6436,"◼️":6435,"◽":6438,"◾":6437,"☀️":4177,"☁️":4185,"☂️":4200,"☃️":4205,"☄️":4207,"☎️":671,"☑️":6341,"☔":4201,"☕":3101,"☘️":2123,"☝️":1167,"☠️":194,"☢️":6258,"☣️":6259,"☦️":6288,"☪️":6289,"☮️":6290,"☯️":6286,"☸️":6285,"☹️":166,"☺️":119,"♈":6293,"♉":6294,"♊":6295,"♋":6296,"♌":6297,"♍":6298,"♎":6299,"♏":6300,"♐":6301,"♑":6302,"♒":6303,"♓":6304,"♟️":571,"♠️":567,"♣️":570,"♥️":568,"♦️":569,"♨️":457,"♻️":6334,"♾️":6333,"♿":6237,"⚒️":6184,"⚓":4110,"⚔️":6187,"⚖️":6195,"⚗️":6201,"⚙️":6193,"⚛️":6282,"⚜️":6335,"⚠️":6247,"⚡":4203,"⚪":6425,"⚫":6424,"⚰️":6231,"⚱️":6232,"⚽":528,"⚾":529,"⛄":4206,"⛅":4186,"⛈️":4187,"⛎":6305,"⛏️":6183,"⛑️":639,"⛓️":6198,"⛔":6249,"⛩️":445,"⛪":441,"⛰️":49,"⛱️":4202,"⛲":447,"⛳":547,"⛴️":4115,"⛵":4111,"⛷️":1396,"⛸️":548,"⛹️‍♀️":1412,"⛹️‍♂️":1411,"⛹️":1410,"⛺":448,"⛽":4104,"✂️":6171,"✅":6340,"✈️":4118,"✉️":6132,"✊":1170,"✋":1153,"✌️":1157,"✍️":1180,"✏️":6145,"✒️":6146,"✔️":6342,"✖️":6343,"✝️":6287,"✡️":6284,"✨":56,"✳️":6352,"✴️":6353,"❄️":4204,"❇️":6354,"❌":6344,"❎":6345,"❓":6357,"❔":6358,"❕":6359,"❗":6360,"❣️":1125,"❤️":1127,"➕":6346,"➖":6347,"➗":6348,"➡️":6262,"➰":6349,"➿":6350,"⤴️":6272,"⤵️":6273,"⬅️":6266,"⬆️":6260,"⬇️":6264,"⬛":6433,"⬜":6434,"⭐":4181,"⭕":6339,"〰️":6361,"〽️":6351,"㊗️":6413,"㊙️":6414,"🎅🏻":0,"🎅🏼":0,"🎅🏽":0,"🎅🏾":0,"🎅🏿":0,"🏂🏻":0,"🏂🏼":0,"🏂🏽":0,"🏂🏾":0,"🏂🏿":0,"🏃🏻‍♀️":0,"🏃🏼‍♀️":0,"🏃🏽‍♀️":0,"🏃🏾‍♀️":0,"🏃🏿‍♀️":0,"🏃🏻‍♂️":0,"🏃🏼‍♂️":0,"🏃🏽‍♂️":0,"🏃🏾‍♂️":0,"🏃🏿‍♂️":0,"🏃🏻":0,"🏃🏼":0,"🏃🏽":0,"🏃🏾":0,"🏃🏿":0,"🏄🏻‍♀️":0,"🏄🏼‍♀️":0,"🏄🏽‍♀️":0,"🏄🏾‍♀️":0,"🏄🏿‍♀️":0,"🏄🏻‍♂️":0,"🏄🏼‍♂️":0,"🏄🏽‍♂️":0,"🏄🏾‍♂️":0,"🏄🏿‍♂️":0,"🏄🏻":0,"🏄🏼":0,"🏄🏽":0,"🏄🏾":0,"🏄🏿":0,"🏇🏻":0,"🏇🏼":0,"🏇🏽":0,"🏇🏾":0,"🏇🏿":0,"🏊🏻‍♀️":0,"🏊🏼‍♀️":0,"🏊🏽‍♀️":0,"🏊🏾‍♀️":0,"🏊🏿‍♀️":0,"🏊🏻‍♂️":0,"🏊🏼‍♂️":0,"🏊🏽‍♂️":0,"🏊🏾‍♂️":0,"🏊🏿‍♂️":0,"🏊🏻":0,"🏊🏼":0,"🏊🏽":0,"🏊🏾":0,"🏊🏿":0,"🏋🏻‍♀️":0,"🏋🏼‍♀️":0,"🏋🏽‍♀️":0,"🏋🏾‍♀️":0,"🏋🏿‍♀️":0,"🏋🏻‍♂️":0,"🏋🏼‍♂️":0,"🏋🏽‍♂️":0,"🏋🏾‍♂️":0,"🏋🏿‍♂️":0,"🏋🏻":0,"🏋🏼":0,"🏋🏽":0,"🏋🏾":0,"🏋🏿":0,"🏌🏻‍♀️":0,"🏌🏼‍♀️":0,"🏌🏽‍♀️":0,"🏌🏾‍♀️":0,"🏌🏿‍♀️":0,"🏌🏻‍♂️":0,"🏌🏼‍♂️":0,"🏌🏽‍♂️":0,"🏌🏾‍♂️":0,"🏌🏿‍♂️":0,"🏌🏻":0,"🏌🏼":0,"🏌🏽":0,"🏌🏾":0,"🏌🏿":0,"👂🏻":0,"👂🏼":0,"👂🏽":0,"👂🏾":0,"👂🏿":0,"👃🏻":0,"👃🏼":0,"👃🏽":0,"👃🏾":0,"👃🏿":0,"👆🏻":0,"👆🏼":0,"👆🏽":0,"👆🏾":0,"👆🏿":0,"👇🏻":0,"👇🏼":0,"👇🏽":0,"👇🏾":0,"👇🏿":0,"👈🏻":0,"👈🏼":0,"👈🏽":0,"👈🏾":0,"👈🏿":0,"👉🏻":0,"👉🏼":0,"👉🏽":0,"👉🏾":0,"👉🏿":0,"👊🏻":0,"👊🏼":0,"👊🏽":0,"👊🏾":0,"👊🏿":0,"👋🏻":0,"👋🏼":0,"👋🏽":0,"👋🏾":0,"👋🏿":0,"👌🏻":0,"👌🏼":0,"👌🏽":0,"👌🏾":0,"👌🏿":0,"👍🏻":0,"👍🏼":0,"👍🏽":0,"👍🏾":0,"👍🏿":0,"👎🏻":0,"👎🏼":0,"👎🏽":0,"👎🏾":0,"👎🏿":0,"👏🏻":0,"👏🏼":0,"👏🏽":0,"👏🏾":0,"👏🏿":0,"👐🏻":0,"👐🏼":0,"👐🏽":0,"👐🏾":0,"👐🏿":0,"👦🏻":0,"👦🏼":0,"👦🏽":0,"👦🏾":0,"👦🏿":0,"👧🏻":0,"👧🏼":0,"👧🏽":0,"👧🏾":0,"👧🏿":0,"👨🏻‍🌾":0,"👨🏼‍🌾":0,"👨🏽‍🌾":0,"👨🏾‍🌾":0,"👨🏿‍🌾":0,"👨🏻‍🍳":0,"👨🏼‍🍳":0,"👨🏽‍🍳":0,"👨🏾‍🍳":0,"👨🏿‍🍳":0,"👨🏻‍🎓":0,"👨🏼‍🎓":0,"👨🏽‍🎓":0,"👨🏾‍🎓":0,"👨🏿‍🎓":0,"👨🏻‍🎤":0,"👨🏼‍🎤":0,"👨🏽‍🎤":0,"👨🏾‍🎤":0,"👨🏿‍🎤":0,"👨🏻‍🎨":0,"👨🏼‍🎨":0,"👨🏽‍🎨":0,"👨🏾‍🎨":0,"👨🏿‍🎨":0,"👨🏻‍🏫":0,"👨🏼‍🏫":0,"👨🏽‍🏫":0,"👨🏾‍🏫":0,"👨🏿‍🏫":0,"👨🏻‍🏭":0,"👨🏼‍🏭":0,"👨🏽‍🏭":0,"👨🏾‍🏭":0,"👨🏿‍🏭":0,"👨🏻‍💻":0,"👨🏼‍💻":0,"👨🏽‍💻":0,"👨🏾‍💻":0,"👨🏿‍💻":0,"👨🏻‍💼":0,"👨🏼‍💼":0,"👨🏽‍💼":0,"👨🏾‍💼":0,"👨🏿‍💼":0,"👨🏻‍🔧":0,"👨🏼‍🔧":0,"👨🏽‍🔧":0,"👨🏾‍🔧":0,"👨🏿‍🔧":0,"👨🏻‍🔬":0,"👨🏼‍🔬":0,"👨🏽‍🔬":0,"👨🏾‍🔬":0,"👨🏿‍🔬":0,"👨🏻‍🚀":0,"👨🏼‍🚀":0,"👨🏽‍🚀":0,"👨🏾‍🚀":0,"👨🏿‍🚀":0,"👨🏻‍🚒":0,"👨🏼‍🚒":0,"👨🏽‍🚒":0,"👨🏾‍🚒":0,"👨🏿‍🚒":0,"👨🏻‍🦯":0,"👨🏼‍🦯":0,"👨🏽‍🦯":0,"👨🏾‍🦯":0,"👨🏿‍🦯":0,"👨🏻‍🦰":0,"👨🏼‍🦰":0,"👨🏽‍🦰":0,"👨🏾‍🦰":0,"👨🏿‍🦰":0,"👨🏻‍🦱":0,"👨🏼‍🦱":0,"👨🏽‍🦱":0,"👨🏾‍🦱":0,"👨🏿‍🦱":0,"👨🏻‍🦲":0,"👨🏼‍🦲":0,"👨🏽‍🦲":0,"👨🏾‍🦲":0,"👨🏿‍🦲":0,"👨🏻‍🦳":0,"👨🏼‍🦳":0,"👨🏽‍🦳":0,"👨🏾‍🦳":0,"👨🏿‍🦳":0,"👨🏻‍🦼":0,"👨🏼‍🦼":0,"👨🏽‍🦼":0,"👨🏾‍🦼":0,"👨🏿‍🦼":0,"👨🏻‍🦽":0,"👨🏼‍🦽":0,"👨🏽‍🦽":0,"👨🏾‍🦽":0,"👨🏿‍🦽":0,"👨🏻‍⚕️":0,"👨🏼‍⚕️":0,"👨🏽‍⚕️":0,"👨🏾‍⚕️":0,"👨🏿‍⚕️":0,"👨🏻‍⚖️":0,"👨🏼‍⚖️":0,"👨🏽‍⚖️":0,"👨🏾‍⚖️":0,"👨🏿‍⚖️":0,"👨🏻‍✈️":0,"👨🏼‍✈️":0,"👨🏽‍✈️":0,"👨🏾‍✈️":0,"👨🏿‍✈️":0,"👨🏻":0,"👨🏼":0,"👨🏽":0,"👨🏾":0,"👨🏿":0,"👩🏻‍🌾":0,"👩🏼‍🌾":0,"👩🏽‍🌾":0,"👩🏾‍🌾":0,"👩🏿‍🌾":0,"👩🏻‍🍳":0,"👩🏼‍🍳":0,"👩🏽‍🍳":0,"👩🏾‍🍳":0,"👩🏿‍🍳":0,"👩🏻‍🎓":0,"👩🏼‍🎓":0,"👩🏽‍🎓":0,"👩🏾‍🎓":0,"👩🏿‍🎓":0,"👩🏻‍🎤":0,"👩🏼‍🎤":0,"👩🏽‍🎤":0,"👩🏾‍🎤":0,"👩🏿‍🎤":0,"👩🏻‍🎨":0,"👩🏼‍🎨":0,"👩🏽‍🎨":0,"👩🏾‍🎨":0,"👩🏿‍🎨":0,"👩🏻‍🏫":0,"👩🏼‍🏫":0,"👩🏽‍🏫":0,"👩🏾‍🏫":0,"👩🏿‍🏫":0,"👩🏻‍🏭":0,"👩🏼‍🏭":0,"👩🏽‍🏭":0,"👩🏾‍🏭":0,"👩🏿‍🏭":0,"👩🏻‍💻":0,"👩🏼‍💻":0,"👩🏽‍💻":0,"👩🏾‍💻":0,"👩🏿‍💻":0,"👩🏻‍💼":0,"👩🏼‍💼":0,"👩🏽‍💼":0,"👩🏾‍💼":0,"👩🏿‍💼":0,"👩🏻‍🔧":0,"👩🏼‍🔧":0,"👩🏽‍🔧":0,"👩🏾‍🔧":0,"👩🏿‍🔧":0,"👩🏻‍🔬":0,"👩🏼‍🔬":0,"👩🏽‍🔬":0,"👩🏾‍🔬":0,"👩🏿‍🔬":0,"👩🏻‍🚀":0,"👩🏼‍🚀":0,"👩🏽‍🚀":0,"👩🏾‍🚀":0,"👩🏿‍🚀":0,"👩🏻‍🚒":0,"👩🏼‍🚒":0,"👩🏽‍🚒":0,"👩🏾‍🚒":0,"👩🏿‍🚒":0,"👩🏻‍🦯":0,"👩🏼‍🦯":0,"👩🏽‍🦯":0,"👩🏾‍🦯":0,"👩🏿‍🦯":0,"👩🏻‍🦰":0,"👩🏼‍🦰":0,"👩🏽‍🦰":0,"👩🏾‍🦰":0,"👩🏿‍🦰":0,"👩🏻‍🦱":0,"👩🏼‍🦱":0,"👩🏽‍🦱":0,"👩🏾‍🦱":0,"👩🏿‍🦱":0,"👩🏻‍🦲":0,"👩🏼‍🦲":0,"👩🏽‍🦲":0,"👩🏾‍🦲":0,"👩🏿‍🦲":0,"👩🏻‍🦳":0,"👩🏼‍🦳":0,"👩🏽‍🦳":0,"👩🏾‍🦳":0,"👩🏿‍🦳":0,"👩🏻‍🦼":0,"👩🏼‍🦼":0,"👩🏽‍🦼":0,"👩🏾‍🦼":0,"👩🏿‍🦼":0,"👩🏻‍🦽":0,"👩🏼‍🦽":0,"👩🏽‍🦽":0,"👩🏾‍🦽":0,"👩🏿‍🦽":0,"👩🏻‍⚕️":0,"👩🏼‍⚕️":0,"👩🏽‍⚕️":0,"👩🏾‍⚕️":0,"👩🏿‍⚕️":0,"👩🏻‍⚖️":0,"👩🏼‍⚖️":0,"👩🏽‍⚖️":0,"👩🏾‍⚖️":0,"👩🏿‍⚖️":0,"👩🏻‍✈️":0,"👩🏼‍✈️":0,"👩🏽‍✈️":0,"👩🏾‍✈️":0,"👩🏿‍✈️":0,"👩🏻":0,"👩🏼":0,"👩🏽":0,"👩🏾":0,"👩🏿":0,"👫🏻":0,"👫🏼":0,"👫🏽":0,"👫🏾":0,"👫🏿":0,"👩🏻‍🤝‍👨🏼":0,"👩🏻‍🤝‍👨🏽":0,"👩🏻‍🤝‍👨🏾":0,"👩🏻‍🤝‍👨🏿":0,"👩🏼‍🤝‍👨🏻":0,"👩🏼‍🤝‍👨🏽":0,"👩🏼‍🤝‍👨🏾":0,"👩🏼‍🤝‍👨🏿":0,"👩🏽‍🤝‍👨🏻":0,"👩🏽‍🤝‍👨🏼":0,"👩🏽‍🤝‍👨🏾":0,"👩🏽‍🤝‍👨🏿":0,"👩🏾‍🤝‍👨🏻":0,"👩🏾‍🤝‍👨🏼":0,"👩🏾‍🤝‍👨🏽":0,"👩🏾‍🤝‍👨🏿":0,"👩🏿‍🤝‍👨🏻":0,"👩🏿‍🤝‍👨🏼":0,"👩🏿‍🤝‍👨🏽":0,"👩🏿‍🤝‍👨🏾":0,"👬🏻":0,"👬🏼":0,"👬🏽":0,"👬🏾":0,"👬🏿":0,"👨🏻‍🤝‍👨🏼":0,"👨🏻‍🤝‍👨🏽":0,"👨🏻‍🤝‍👨🏾":0,"👨🏻‍🤝‍👨🏿":0,"👨🏼‍🤝‍👨🏻":0,"👨🏼‍🤝‍👨🏽":0,"👨🏼‍🤝‍👨🏾":0,"👨🏼‍🤝‍👨🏿":0,"👨🏽‍🤝‍👨🏻":0,"👨🏽‍🤝‍👨🏼":0,"👨🏽‍🤝‍👨🏾":0,"👨🏽‍🤝‍👨🏿":0,"👨🏾‍🤝‍👨🏻":0,"👨🏾‍🤝‍👨🏼":0,"👨🏾‍🤝‍👨🏽":0,"👨🏾‍🤝‍👨🏿":0,"👨🏿‍🤝‍👨🏻":0,"👨🏿‍🤝‍👨🏼":0,"👨🏿‍🤝‍👨🏽":0,"👨🏿‍🤝‍👨🏾":0,"👭🏻":0,"👭🏼":0,"👭🏽":0,"👭🏾":0,"👭🏿":0,"👩🏻‍🤝‍👩🏼":0,"👩🏻‍🤝‍👩🏽":0,"👩🏻‍🤝‍👩🏾":0,"👩🏻‍🤝‍👩🏿":0,"👩🏼‍🤝‍👩🏻":0,"👩🏼‍🤝‍👩🏽":0,"👩🏼‍🤝‍👩🏾":0,"👩🏼‍🤝‍👩🏿":0,"👩🏽‍🤝‍👩🏻":0,"👩🏽‍🤝‍👩🏼":0,"👩🏽‍🤝‍👩🏾":0,"👩🏽‍🤝‍👩🏿":0,"👩🏾‍🤝‍👩🏻":0,"👩🏾‍🤝‍👩🏼":0,"👩🏾‍🤝‍👩🏽":0,"👩🏾‍🤝‍👩🏿":0,"👩🏿‍🤝‍👩🏻":0,"👩🏿‍🤝‍👩🏼":0,"👩🏿‍🤝‍👩🏽":0,"👩🏿‍🤝‍👩🏾":0,"👮🏻‍♀️":0,"👮🏼‍♀️":0,"👮🏽‍♀️":0,"👮🏾‍♀️":0,"👮🏿‍♀️":0,"👮🏻‍♂️":0,"👮🏼‍♂️":0,"👮🏽‍♂️":0,"👮🏾‍♂️":0,"👮🏿‍♂️":0,"👮🏻":0,"👮🏼":0,"👮🏽":0,"👮🏾":0,"👮🏿":0,"👰🏻":0,"👰🏼":0,"👰🏽":0,"👰🏾":0,"👰🏿":0,"👱🏻‍♀️":0,"👱🏼‍♀️":0,"👱🏽‍♀️":0,"👱🏾‍♀️":0,"👱🏿‍♀️":0,"👱🏻‍♂️":0,"👱🏼‍♂️":0,"👱🏽‍♂️":0,"👱🏾‍♂️":0,"👱🏿‍♂️":0,"👱🏻":0,"👱🏼":0,"👱🏽":0,"👱🏾":0,"👱🏿":0,"👲🏻":0,"👲🏼":0,"👲🏽":0,"👲🏾":0,"👲🏿":0,"👳🏻‍♀️":0,"👳🏼‍♀️":0,"👳🏽‍♀️":0,"👳🏾‍♀️":0,"👳🏿‍♀️":0,"👳🏻‍♂️":0,"👳🏼‍♂️":0,"👳🏽‍♂️":0,"👳🏾‍♂️":0,"👳🏿‍♂️":0,"👳🏻":0,"👳🏼":0,"👳🏽":0,"👳🏾":0,"👳🏿":0,"👴🏻":0,"👴🏼":0,"👴🏽":0,"👴🏾":0,"👴🏿":0,"👵🏻":0,"👵🏼":0,"👵🏽":0,"👵🏾":0,"👵🏿":0,"👶🏻":0,"👶🏼":0,"👶🏽":0,"👶🏾":0,"👶🏿":0,"👷🏻‍♀️":0,"👷🏼‍♀️":0,"👷🏽‍♀️":0,"👷🏾‍♀️":0,"👷🏿‍♀️":0,"👷🏻‍♂️":0,"👷🏼‍♂️":0,"👷🏽‍♂️":0,"👷🏾‍♂️":0,"👷🏿‍♂️":0,"👷🏻":0,"👷🏼":0,"👷🏽":0,"👷🏾":0,"👷🏿":0,"👸🏻":0,"👸🏼":0,"👸🏽":0,"👸🏾":0,"👸🏿":0,"👼🏻":0,"👼🏼":0,"👼🏽":0,"👼🏾":0,"👼🏿":0,"💁🏻‍♀️":0,"💁🏼‍♀️":0,"💁🏽‍♀️":0,"💁🏾‍♀️":0,"💁🏿‍♀️":0,"💁🏻‍♂️":0,"💁🏼‍♂️":0,"💁🏽‍♂️":0,"💁🏾‍♂️":0,"💁🏿‍♂️":0,"💁🏻":0,"💁🏼":0,"💁🏽":0,"💁🏾":0,"💁🏿":0,"💂🏻‍♀️":0,"💂🏼‍♀️":0,"💂🏽‍♀️":0,"💂🏾‍♀️":0,"💂🏿‍♀️":0,"💂🏻‍♂️":0,"💂🏼‍♂️":0,"💂🏽‍♂️":0,"💂🏾‍♂️":0,"💂🏿‍♂️":0,"💂🏻":0,"💂🏼":0,"💂🏽":0,"💂🏾":0,"💂🏿":0,"💃🏻":0,"💃🏼":0,"💃🏽":0,"💃🏾":0,"💃🏿":0,"💅🏻":0,"💅🏼":0,"💅🏽":0,"💅🏾":0,"💅🏿":0,"💆🏻‍♀️":0,"💆🏼‍♀️":0,"💆🏽‍♀️":0,"💆🏾‍♀️":0,"💆🏿‍♀️":0,"💆🏻‍♂️":0,"💆🏼‍♂️":0,"💆🏽‍♂️":0,"💆🏾‍♂️":0,"💆🏿‍♂️":0,"💆🏻":0,"💆🏼":0,"💆🏽":0,"💆🏾":0,"💆🏿":0,"💇🏻‍♀️":0,"💇🏼‍♀️":0,"💇🏽‍♀️":0,"💇🏾‍♀️":0,"💇🏿‍♀️":0,"💇🏻‍♂️":0,"💇🏼‍♂️":0,"💇🏽‍♂️":0,"💇🏾‍♂️":0,"💇🏿‍♂️":0,"💇🏻":0,"💇🏼":0,"💇🏽":0,"💇🏾":0,"💇🏿":0,"💪🏻":0,"💪🏼":0,"💪🏽":0,"💪🏾":0,"💪🏿":0,"🕴🏻":0,"🕴🏼":0,"🕴🏽":0,"🕴🏾":0,"🕴🏿":0,"🕵🏻‍♀️":0,"🕵🏼‍♀️":0,"🕵🏽‍♀️":0,"🕵🏾‍♀️":0,"🕵🏿‍♀️":0,"🕵🏻‍♂️":0,"🕵🏼‍♂️":0,"🕵🏽‍♂️":0,"🕵🏾‍♂️":0,"🕵🏿‍♂️":0,"🕵🏻":0,"🕵🏼":0,"🕵🏽":0,"🕵🏾":0,"🕵🏿":0,"🕺🏻":0,"🕺🏼":0,"🕺🏽":0,"🕺🏾":0,"🕺🏿":0,"🖐🏻":0,"🖐🏼":0,"🖐🏽":0,"🖐🏾":0,"🖐🏿":0,"🖕🏻":0,"🖕🏼":0,"🖕🏽":0,"🖕🏾":0,"🖕🏿":0,"🖖🏻":0,"🖖🏼":0,"🖖🏽":0,"🖖🏾":0,"🖖🏿":0,"🙅🏻‍♀️":0,"🙅🏼‍♀️":0,"🙅🏽‍♀️":0,"🙅🏾‍♀️":0,"🙅🏿‍♀️":0,"🙅🏻‍♂️":0,"🙅🏼‍♂️":0,"🙅🏽‍♂️":0,"🙅🏾‍♂️":0,"🙅🏿‍♂️":0,"🙅🏻":0,"🙅🏼":0,"🙅🏽":0,"🙅🏾":0,"🙅🏿":0,"🙆🏻‍♀️":0,"🙆🏼‍♀️":0,"🙆🏽‍♀️":0,"🙆🏾‍♀️":0,"🙆🏿‍♀️":0,"🙆🏻‍♂️":0,"🙆🏼‍♂️":0,"🙆🏽‍♂️":0,"🙆🏾‍♂️":0,"🙆🏿‍♂️":0,"🙆🏻":0,"🙆🏼":0,"🙆🏽":0,"🙆🏾":0,"🙆🏿":0,"🙇🏻‍♀️":0,"🙇🏼‍♀️":0,"🙇🏽‍♀️":0,"🙇🏾‍♀️":0,"🙇🏿‍♀️":0,"🙇🏻‍♂️":0,"🙇🏼‍♂️":0,"🙇🏽‍♂️":0,"🙇🏾‍♂️":0,"🙇🏿‍♂️":0,"🙇🏻":0,"🙇🏼":0,"🙇🏽":0,"🙇🏾":0,"🙇🏿":0,"🙋🏻‍♀️":0,"🙋🏼‍♀️":0,"🙋🏽‍♀️":0,"🙋🏾‍♀️":0,"🙋🏿‍♀️":0,"🙋🏻‍♂️":0,"🙋🏼‍♂️":0,"🙋🏽‍♂️":0,"🙋🏾‍♂️":0,"🙋🏿‍♂️":0,"🙋🏻":0,"🙋🏼":0,"🙋🏽":0,"🙋🏾":0,"🙋🏿":0,"🙌🏻":0,"🙌🏼":0,"🙌🏽":0,"🙌🏾":0,"🙌🏿":0,"🙍🏻‍♀️":0,"🙍🏼‍♀️":0,"🙍🏽‍♀️":0,"🙍🏾‍♀️":0,"🙍🏿‍♀️":0,"🙍🏻‍♂️":0,"🙍🏼‍♂️":0,"🙍🏽‍♂️":0,"🙍🏾‍♂️":0,"🙍🏿‍♂️":0,"🙍🏻":0,"🙍🏼":0,"🙍🏽":0,"🙍🏾":0,"🙍🏿":0,"🙎🏻‍♀️":0,"🙎🏼‍♀️":0,"🙎🏽‍♀️":0,"🙎🏾‍♀️":0,"🙎🏿‍♀️":0,"🙎🏻‍♂️":0,"🙎🏼‍♂️":0,"🙎🏽‍♂️":0,"🙎🏾‍♂️":0,"🙎🏿‍♂️":0,"🙎🏻":0,"🙎🏼":0,"🙎🏽":0,"🙎🏾":0,"🙎🏿":0,"🙏🏻":0,"🙏🏼":0,"🙏🏽":0,"🙏🏾":0,"🙏🏿":0,"🚣🏻‍♀️":0,"🚣🏼‍♀️":0,"🚣🏽‍♀️":0,"🚣🏾‍♀️":0,"🚣🏿‍♀️":0,"🚣🏻‍♂️":0,"🚣🏼‍♂️":0,"🚣🏽‍♂️":0,"🚣🏾‍♂️":0,"🚣🏿‍♂️":0,"🚣🏻":0,"🚣🏼":0,"🚣🏽":0,"🚣🏾":0,"🚣🏿":0,"🚴🏻‍♀️":0,"🚴🏼‍♀️":0,"🚴🏽‍♀️":0,"🚴🏾‍♀️":0,"🚴🏿‍♀️":0,"🚴🏻‍♂️":0,"🚴🏼‍♂️":0,"🚴🏽‍♂️":0,"🚴🏾‍♂️":0,"🚴🏿‍♂️":0,"🚴🏻":0,"🚴🏼":0,"🚴🏽":0,"🚴🏾":0,"🚴🏿":0,"🚵🏻‍♀️":0,"🚵🏼‍♀️":0,"🚵🏽‍♀️":0,"🚵🏾‍♀️":0,"🚵🏿‍♀️":0,"🚵🏻‍♂️":0,"🚵🏼‍♂️":0,"🚵🏽‍♂️":0,"🚵🏾‍♂️":0,"🚵🏿‍♂️":0,"🚵🏻":0,"🚵🏼":0,"🚵🏽":0,"🚵🏾":0,"🚵🏿":0,"🚶🏻‍♀️":0,"🚶🏼‍♀️":0,"🚶🏽‍♀️":0,"🚶🏾‍♀️":0,"🚶🏿‍♀️":0,"🚶🏻‍♂️":0,"🚶🏼‍♂️":0,"🚶🏽‍♂️":0,"🚶🏾‍♂️":0,"🚶🏿‍♂️":0,"🚶🏻":0,"🚶🏼":0,"🚶🏽":0,"🚶🏾":0,"🚶🏿":0,"🛀🏻":0,"🛀🏼":0,"🛀🏽":0,"🛀🏾":0,"🛀🏿":0,"🛌🏻":0,"🛌🏼":0,"🛌🏽":0,"🛌🏾":0,"🛌🏿":0,"🤏🏻":0,"🤏🏼":0,"🤏🏽":0,"🤏🏾":0,"🤏🏿":0,"🤘🏻":0,"🤘🏼":0,"🤘🏽":0,"🤘🏾":0,"🤘🏿":0,"🤙🏻":0,"🤙🏼":0,"🤙🏽":0,"🤙🏾":0,"🤙🏿":0,"🤚🏻":0,"🤚🏼":0,"🤚🏽":0,"🤚🏾":0,"🤚🏿":0,"🤛🏻":0,"🤛🏼":0,"🤛🏽":0,"🤛🏾":0,"🤛🏿":0,"🤜🏻":0,"🤜🏼":0,"🤜🏽":0,"🤜🏾":0,"🤜🏿":0,"🤞🏻":0,"🤞🏼":0,"🤞🏽":0,"🤞🏾":0,"🤞🏿":0,"🤟🏻":0,"🤟🏼":0,"🤟🏽":0,"🤟🏾":0,"🤟🏿":0,"🤦🏻‍♀️":0,"🤦🏼‍♀️":0,"🤦🏽‍♀️":0,"🤦🏾‍♀️":0,"🤦🏿‍♀️":0,"🤦🏻‍♂️":0,"🤦🏼‍♂️":0,"🤦🏽‍♂️":0,"🤦🏾‍♂️":0,"🤦🏿‍♂️":0,"🤦🏻":0,"🤦🏼":0,"🤦🏽":0,"🤦🏾":0,"🤦🏿":0,"🤰🏻":0,"🤰🏼":0,"🤰🏽":0,"🤰🏾":0,"🤰🏿":0,"🤱🏻":0,"🤱🏼":0,"🤱🏽":0,"🤱🏾":0,"🤱🏿":0,"🤲🏻":0,"🤲🏼":0,"🤲🏽":0,"🤲🏾":0,"🤲🏿":0,"🤳🏻":0,"🤳🏼":0,"🤳🏽":0,"🤳🏾":0,"🤳🏿":0,"🤴🏻":0,"🤴🏼":0,"🤴🏽":0,"🤴🏾":0,"🤴🏿":0,"🤵🏻":0,"🤵🏼":0,"🤵🏽":0,"🤵🏾":0,"🤵🏿":0,"🤶🏻":0,"🤶🏼":0,"🤶🏽":0,"🤶🏾":0,"🤶🏿":0,"🤷🏻‍♀️":0,"🤷🏼‍♀️":0,"🤷🏽‍♀️":0,"🤷🏾‍♀️":0,"🤷🏿‍♀️":0,"🤷🏻‍♂️":0,"🤷🏼‍♂️":0,"🤷🏽‍♂️":0,"🤷🏾‍♂️":0,"🤷🏿‍♂️":0,"🤷🏻":0,"🤷🏼":0,"🤷🏽":0,"🤷🏾":0,"🤷🏿":0,"🤸🏻‍♀️":0,"🤸🏼‍♀️":0,"🤸🏽‍♀️":0,"🤸🏾‍♀️":0,"🤸🏿‍♀️":0,"🤸🏻‍♂️":0,"🤸🏼‍♂️":0,"🤸🏽‍♂️":0,"🤸🏾‍♂️":0,"🤸🏿‍♂️":0,"🤸🏻":0,"🤸🏼":0,"🤸🏽":0,"🤸🏾":0,"🤸🏿":0,"🤹🏻‍♀️":0,"🤹🏼‍♀️":0,"🤹🏽‍♀️":0,"🤹🏾‍♀️":0,"🤹🏿‍♀️":0,"🤹🏻‍♂️":0,"🤹🏼‍♂️":0,"🤹🏽‍♂️":0,"🤹🏾‍♂️":0,"🤹🏿‍♂️":0,"🤹🏻":0,"🤹🏼":0,"🤹🏽":0,"🤹🏾":0,"🤹🏿":0,"🤽🏻‍♀️":0,"🤽🏼‍♀️":0,"🤽🏽‍♀️":0,"🤽🏾‍♀️":0,"🤽🏿‍♀️":0,"🤽🏻‍♂️":0,"🤽🏼‍♂️":0,"🤽🏽‍♂️":0,"🤽🏾‍♂️":0,"🤽🏿‍♂️":0,"🤽🏻":0,"🤽🏼":0,"🤽🏽":0,"🤽🏾":0,"🤽🏿":0,"🤾🏻‍♀️":0,"🤾🏼‍♀️":0,"🤾🏽‍♀️":0,"🤾🏾‍♀️":0,"🤾🏿‍♀️":0,"🤾🏻‍♂️":0,"🤾🏼‍♂️":0,"🤾🏽‍♂️":0,"🤾🏾‍♂️":0,"🤾🏿‍♂️":0,"🤾🏻":0,"🤾🏼":0,"🤾🏽":0,"🤾🏾":0,"🤾🏿":0,"🦵🏻":0,"🦵🏼":0,"🦵🏽":0,"🦵🏾":0,"🦵🏿":0,"🦶🏻":0,"🦶🏼":0,"🦶🏽":0,"🦶🏾":0,"🦶🏿":0,"🦸🏻‍♀️":0,"🦸🏼‍♀️":0,"🦸🏽‍♀️":0,"🦸🏾‍♀️":0,"🦸🏿‍♀️":0,"🦸🏻‍♂️":0,"🦸🏼‍♂️":0,"🦸🏽‍♂️":0,"🦸🏾‍♂️":0,"🦸🏿‍♂️":0,"🦸🏻":0,"🦸🏼":0,"🦸🏽":0,"🦸🏾":0,"🦸🏿":0,"🦹🏻‍♀️":0,"🦹🏼‍♀️":0,"🦹🏽‍♀️":0,"🦹🏾‍♀️":0,"🦹🏿‍♀️":0,"🦹🏻‍♂️":0,"🦹🏼‍♂️":0,"🦹🏽‍♂️":0,"🦹🏾‍♂️":0,"🦹🏿‍♂️":0,"🦹🏻":0,"🦹🏼":0,"🦹🏽":0,"🦹🏾":0,"🦹🏿":0,"🦻🏻":0,"🦻🏼":0,"🦻🏽":0,"🦻🏾":0,"🦻🏿":0,"🧍🏻‍♀️":0,"🧍🏼‍♀️":0,"🧍🏽‍♀️":0,"🧍🏾‍♀️":0,"🧍🏿‍♀️":0,"🧍🏻‍♂️":0,"🧍🏼‍♂️":0,"🧍🏽‍♂️":0,"🧍🏾‍♂️":0,"🧍🏿‍♂️":0,"🧍🏻":0,"🧍🏼":0,"🧍🏽":0,"🧍🏾":0,"🧍🏿":0,"🧎🏻‍♀️":0,"🧎🏼‍♀️":0,"🧎🏽‍♀️":0,"🧎🏾‍♀️":0,"🧎🏿‍♀️":0,"🧎🏻‍♂️":0,"🧎🏼‍♂️":0,"🧎🏽‍♂️":0,"🧎🏾‍♂️":0,"🧎🏿‍♂️":0,"🧎🏻":0,"🧎🏼":0,"🧎🏽":0,"🧎🏾":0,"🧎🏿":0,"🧏🏻‍♀️":0,"🧏🏼‍♀️":0,"🧏🏽‍♀️":0,"🧏🏾‍♀️":0,"🧏🏿‍♀️":0,"🧏🏻‍♂️":0,"🧏🏼‍♂️":0,"🧏🏽‍♂️":0,"🧏🏾‍♂️":0,"🧏🏿‍♂️":0,"🧏🏻":0,"🧏🏼":0,"🧏🏽":0,"🧏🏾":0,"🧏🏿":0,"🧑🏻‍🌾":0,"🧑🏼‍🌾":0,"🧑🏽‍🌾":0,"🧑🏾‍🌾":0,"🧑🏿‍🌾":0,"🧑🏻‍🍳":0,"🧑🏼‍🍳":0,"🧑🏽‍🍳":0,"🧑🏾‍🍳":0,"🧑🏿‍🍳":0,"🧑🏻‍🎓":0,"🧑🏼‍🎓":0,"🧑🏽‍🎓":0,"🧑🏾‍🎓":0,"🧑🏿‍🎓":0,"🧑🏻‍🎤":0,"🧑🏼‍🎤":0,"🧑🏽‍🎤":0,"🧑🏾‍🎤":0,"🧑🏿‍🎤":0,"🧑🏻‍🎨":0,"🧑🏼‍🎨":0,"🧑🏽‍🎨":0,"🧑🏾‍🎨":0,"🧑🏿‍🎨":0,"🧑🏻‍🏫":0,"🧑🏼‍🏫":0,"🧑🏽‍🏫":0,"🧑🏾‍🏫":0,"🧑🏿‍🏫":0,"🧑🏻‍🏭":0,"🧑🏼‍🏭":0,"🧑🏽‍🏭":0,"🧑🏾‍🏭":0,"🧑🏿‍🏭":0,"🧑🏻‍💻":0,"🧑🏼‍💻":0,"🧑🏽‍💻":0,"🧑🏾‍💻":0,"🧑🏿‍💻":0,"🧑🏻‍💼":0,"🧑🏼‍💼":0,"🧑🏽‍💼":0,"🧑🏾‍💼":0,"🧑🏿‍💼":0,"🧑🏻‍🔧":0,"🧑🏼‍🔧":0,"🧑🏽‍🔧":0,"🧑🏾‍🔧":0,"🧑🏿‍🔧":0,"🧑🏻‍🔬":0,"🧑🏼‍🔬":0,"🧑🏽‍🔬":0,"🧑🏾‍🔬":0,"🧑🏿‍🔬":0,"🧑🏻‍🚀":0,"🧑🏼‍🚀":0,"🧑🏽‍🚀":0,"🧑🏾‍🚀":0,"🧑🏿‍🚀":0,"🧑🏻‍🚒":0,"🧑🏼‍🚒":0,"🧑🏽‍🚒":0,"🧑🏾‍🚒":0,"🧑🏿‍🚒":0,"🧑🏻‍🤝‍🧑🏻":0,"🧑🏻‍🤝‍🧑🏼":0,"🧑🏻‍🤝‍🧑🏽":0,"🧑🏻‍🤝‍🧑🏾":0,"🧑🏻‍🤝‍🧑🏿":0,"🧑🏼‍🤝‍🧑🏻":0,"🧑🏼‍🤝‍🧑🏼":0,"🧑🏼‍🤝‍🧑🏽":0,"🧑🏼‍🤝‍🧑🏾":0,"🧑🏼‍🤝‍🧑🏿":0,"🧑🏽‍🤝‍🧑🏻":0,"🧑🏽‍🤝‍🧑🏼":0,"🧑🏽‍🤝‍🧑🏽":0,"🧑🏽‍🤝‍🧑🏾":0,"🧑🏽‍🤝‍🧑🏿":0,"🧑🏾‍🤝‍🧑🏻":0,"🧑🏾‍🤝‍🧑🏼":0,"🧑🏾‍🤝‍🧑🏽":0,"🧑🏾‍🤝‍🧑🏾":0,"🧑🏾‍🤝‍🧑🏿":0,"🧑🏿‍🤝‍🧑🏻":0,"🧑🏿‍🤝‍🧑🏼":0,"🧑🏿‍🤝‍🧑🏽":0,"🧑🏿‍🤝‍🧑🏾":0,"🧑🏿‍🤝‍🧑🏿":0,"🧑🏻‍🦯":0,"🧑🏼‍🦯":0,"🧑🏽‍🦯":0,"🧑🏾‍🦯":0,"🧑🏿‍🦯":0,"🧑🏻‍🦰":0,"🧑🏼‍🦰":0,"🧑🏽‍🦰":0,"🧑🏾‍🦰":0,"🧑🏿‍🦰":0,"🧑🏻‍🦱":0,"🧑🏼‍🦱":0,"🧑🏽‍🦱":0,"🧑🏾‍🦱":0,"🧑🏿‍🦱":0,"🧑🏻‍🦲":0,"🧑🏼‍🦲":0,"🧑🏽‍🦲":0,"🧑🏾‍🦲":0,"🧑🏿‍🦲":0,"🧑🏻‍🦳":0,"🧑🏼‍🦳":0,"🧑🏽‍🦳":0,"🧑🏾‍🦳":0,"🧑🏿‍🦳":0,"🧑🏻‍🦼":0,"🧑🏼‍🦼":0,"🧑🏽‍🦼":0,"🧑🏾‍🦼":0,"🧑🏿‍🦼":0,"🧑🏻‍🦽":0,"🧑🏼‍🦽":0,"🧑🏽‍🦽":0,"🧑🏾‍🦽":0,"🧑🏿‍🦽":0,"🧑🏻‍⚕️":0,"🧑🏼‍⚕️":0,"🧑🏽‍⚕️":0,"🧑🏾‍⚕️":0,"🧑🏿‍⚕️":0,"🧑🏻‍⚖️":0,"🧑🏼‍⚖️":0,"🧑🏽‍⚖️":0,"🧑🏾‍⚖️":0,"🧑🏿‍⚖️":0,"🧑🏻‍✈️":0,"🧑🏼‍✈️":0,"🧑🏽‍✈️":0,"🧑🏾‍✈️":0,"🧑🏿‍✈️":0,"🧑🏻":0,"🧑🏼":0,"🧑🏽":0,"🧑🏾":0,"🧑🏿":0,"🧒🏻":0,"🧒🏼":0,"🧒🏽":0,"🧒🏾":0,"🧒🏿":0,"🧓🏻":0,"🧓🏼":0,"🧓🏽":0,"🧓🏾":0,"🧓🏿":0,"🧔🏻":0,"🧔🏼":0,"🧔🏽":0,"🧔🏾":0,"🧔🏿":0,"🧕🏻":0,"🧕🏼":0,"🧕🏽":0,"🧕🏾":0,"🧕🏿":0,"🧖🏻‍♀️":0,"🧖🏼‍♀️":0,"🧖🏽‍♀️":0,"🧖🏾‍♀️":0,"🧖🏿‍♀️":0,"🧖🏻‍♂️":0,"🧖🏼‍♂️":0,"🧖🏽‍♂️":0,"🧖🏾‍♂️":0,"🧖🏿‍♂️":0,"🧖🏻":0,"🧖🏼":0,"🧖🏽":0,"🧖🏾":0,"🧖🏿":0,"🧗🏻‍♀️":0,"🧗🏼‍♀️":0,"🧗🏽‍♀️":0,"🧗🏾‍♀️":0,"🧗🏿‍♀️":0,"🧗🏻‍♂️":0,"🧗🏼‍♂️":0,"🧗🏽‍♂️":0,"🧗🏾‍♂️":0,"🧗🏿‍♂️":0,"🧗🏻":0,"🧗🏼":0,"🧗🏽":0,"🧗🏾":0,"🧗🏿":0,"🧘🏻‍♀️":0,"🧘🏼‍♀️":0,"🧘🏽‍♀️":0,"🧘🏾‍♀️":0,"🧘🏿‍♀️":0,"🧘🏻‍♂️":0,"🧘🏼‍♂️":0,"🧘🏽‍♂️":0,"🧘🏾‍♂️":0,"🧘🏿‍♂️":0,"🧘🏻":0,"🧘🏼":0,"🧘🏽":0,"🧘🏾":0,"🧘🏿":0,"🧙🏻‍♀️":0,"🧙🏼‍♀️":0,"🧙🏽‍♀️":0,"🧙🏾‍♀️":0,"🧙🏿‍♀️":0,"🧙🏻‍♂️":0,"🧙🏼‍♂️":0,"🧙🏽‍♂️":0,"🧙🏾‍♂️":0,"🧙🏿‍♂️":0,"🧙🏻":0,"🧙🏼":0,"🧙🏽":0,"🧙🏾":0,"🧙🏿":0,"🧚🏻‍♀️":0,"🧚🏼‍♀️":0,"🧚🏽‍♀️":0,"🧚🏾‍♀️":0,"🧚🏿‍♀️":0,"🧚🏻‍♂️":0,"🧚🏼‍♂️":0,"🧚🏽‍♂️":0,"🧚🏾‍♂️":0,"🧚🏿‍♂️":0,"🧚🏻":0,"🧚🏼":0,"🧚🏽":0,"🧚🏾":0,"🧚🏿":0,"🧛🏻‍♀️":0,"🧛🏼‍♀️":0,"🧛🏽‍♀️":0,"🧛🏾‍♀️":0,"🧛🏿‍♀️":0,"🧛🏻‍♂️":0,"🧛🏼‍♂️":0,"🧛🏽‍♂️":0,"🧛🏾‍♂️":0,"🧛🏿‍♂️":0,"🧛🏻":0,"🧛🏼":0,"🧛🏽":0,"🧛🏾":0,"🧛🏿":0,"🧜🏻‍♀️":0,"🧜🏼‍♀️":0,"🧜🏽‍♀️":0,"🧜🏾‍♀️":0,"🧜🏿‍♀️":0,"🧜🏻‍♂️":0,"🧜🏼‍♂️":0,"🧜🏽‍♂️":0,"🧜🏾‍♂️":0,"🧜🏿‍♂️":0,"🧜🏻":0,"🧜🏼":0,"🧜🏽":0,"🧜🏾":0,"🧜🏿":0,"🧝🏻‍♀️":0,"🧝🏼‍♀️":0,"🧝🏽‍♀️":0,"🧝🏾‍♀️":0,"🧝🏿‍♀️":0,"🧝🏻‍♂️":0,"🧝🏼‍♂️":0,"🧝🏽‍♂️":0,"🧝🏾‍♂️":0,"🧝🏿‍♂️":0,"🧝🏻":0,"🧝🏼":0,"🧝🏽":0,"🧝🏾":0,"🧝🏿":0,"☝🏻":0,"☝🏼":0,"☝🏽":0,"☝🏾":0,"☝🏿":0,"⛹🏻‍♀️":0,"⛹🏼‍♀️":0,"⛹🏽‍♀️":0,"⛹🏾‍♀️":0,"⛹🏿‍♀️":0,"⛹🏻‍♂️":0,"⛹🏼‍♂️":0,"⛹🏽‍♂️":0,"⛹🏾‍♂️":0,"⛹🏿‍♂️":0,"⛹🏻":0,"⛹🏼":0,"⛹🏽":0,"⛹🏾":0,"⛹🏿":0,"✊🏻":0,"✊🏼":0,"✊🏽":0,"✊🏾":0,"✊🏿":0,"✋🏻":0,"✋🏼":0,"✋🏽":0,"✋🏾":0,"✋🏿":0,"✌🏻":0,"✌🏼":0,"✌🏽":0,"✌🏾":0,"✌🏿":0,"✍🏻":0,"✍🏼":0,"✍🏽":0,"✍🏾":0,"✍🏿":0}; export const Countries = [{"phoneCode":"7 840","code":"AB","name":"Abkhazia","pattern":"","emoji":""},{"phoneCode":"93","code":"AF","name":"Afghanistan","pattern":"93 XXX XXX XXX","emoji":"🇦🇫"},{"phoneCode":"358 18","code":"AX","name":"Aland Islands","pattern":"","emoji":"🇦🇽"},{"phoneCode":"355","code":"AL","name":"Albania","pattern":"355 XX XXX XXXX","emoji":"🇦🇱"},{"phoneCode":"213","code":"DZ","name":"Algeria","pattern":"213 XXX XX XX XX","emoji":"🇩🇿"},{"phoneCode":"1 684","code":"AS","name":"American Samoa","pattern":"1684 XXX XXXX","emoji":"🇦🇸"},{"phoneCode":"376","code":"AD","name":"Andorra","pattern":"376 XX XX XX","emoji":"🇦🇩"},{"phoneCode":"244","code":"AO","name":"Angola","pattern":"244 XXX XXX XXX","emoji":"🇦🇴"},{"phoneCode":"1 264","code":"AI","name":"Anguilla","pattern":"1264 XXX XXXX","emoji":"🇦🇮"},{"phoneCode":"1 268","code":"AG","name":"Antigua & Barbuda","pattern":"1268 XXX XXXX","emoji":"🇦🇬"},{"phoneCode":"54","code":"AR","name":"Argentina","pattern":"","emoji":"🇦🇷"},{"phoneCode":"374","code":"AM","name":"Armenia","pattern":"374 XX XXX XXX","emoji":"🇦🇲"},{"phoneCode":"297","code":"AW","name":"Aruba","pattern":"297 XXX XXXX","emoji":"🇦🇼"},{"phoneCode":"247","code":"SH","name":"Ascension","pattern":"290 XX XXX","emoji":"🇸🇭"},{"phoneCode":"61","code":"AU","name":"Australia","pattern":"61 XXX XXX XXX","emoji":"🇦🇺"},{"phoneCode":"672","code":"AU","name":"Australian External Territories","pattern":"61 XXX XXX XXX","emoji":"🇦🇺"},{"phoneCode":"43","code":"AT","name":"Austria","pattern":"","emoji":"🇦🇹"},{"phoneCode":"994","code":"AZ","name":"Azerbaijan","pattern":"994 XX XXX XX XX","emoji":"🇦🇿"},{"phoneCode":"1 242","code":"BS","name":"Bahamas","pattern":"1242 XXX XXXX","emoji":"🇧🇸"},{"phoneCode":"973","code":"BH","name":"Bahrain","pattern":"973 XXXX XXXX","emoji":"🇧🇭"},{"phoneCode":"880","code":"BD","name":"Bangladesh","pattern":"","emoji":"🇧🇩"},{"phoneCode":"1 246","code":"BB","name":"Barbados","pattern":"1246 XXX XXXX","emoji":"🇧🇧"},{"phoneCode":"1 268","code":"AG","name":"Barbuda","pattern":"1268 XXX XXXX","emoji":"🇦🇬"},{"phoneCode":"375","code":"BY","name":"Belarus","pattern":"375 XX XXX XXXX","emoji":"🇧🇾"},{"phoneCode":"32","code":"BE","name":"Belgium","pattern":"32 XXX XX XX XX","emoji":"🇧🇪"},{"phoneCode":"501","code":"BZ","name":"Belize","pattern":"","emoji":"🇧🇿"},{"phoneCode":"229","code":"BJ","name":"Benin","pattern":"229 XX XXX XXX","emoji":"🇧🇯"},{"phoneCode":"1 441","code":"BM","name":"Bermuda","pattern":"1441 XXX XXXX","emoji":"🇧🇲"},{"phoneCode":"975","code":"BT","name":"Bhutan","pattern":"","emoji":"🇧🇹"},{"phoneCode":"591","code":"BO","name":"Bolivia","pattern":"591 X XXX XXXX","emoji":"🇧🇴"},{"phoneCode":"599 7","code":"BQ","name":"Caribbean Netherlands","pattern":"","emoji":"🇧🇶"},{"phoneCode":"387","code":"BA","name":"Bosnia & Herzegovina","pattern":"","emoji":"🇧🇦"},{"phoneCode":"267","code":"BW","name":"Botswana","pattern":"267 XX XXX XXX","emoji":"🇧🇼"},{"phoneCode":"55","code":"BR","name":"Brazil","pattern":"55 XX XXXXX XXXX","emoji":"🇧🇷"},{"phoneCode":"246","code":"IO","name":"British Indian Ocean Territory","pattern":"246 XXX XXXX","emoji":"🇮🇴"},{"phoneCode":"1 284","code":"VG","name":"British Virgin Islands","pattern":"1284 XXX XXXX","emoji":"🇻🇬"},{"phoneCode":"673","code":"BN","name":"Brunei","pattern":"673 XXX XXXX","emoji":"🇧🇳"},{"phoneCode":"359","code":"BG","name":"Bulgaria","pattern":"","emoji":"🇧🇬"},{"phoneCode":"226","code":"BF","name":"Burkina Faso","pattern":"226 XX XX XX XX","emoji":"🇧🇫"},{"phoneCode":"95","code":"MM","name":"Myanmar (Burma)","pattern":"","emoji":"🇲🇲"},{"phoneCode":"257","code":"BI","name":"Burundi","pattern":"257 XX XX XXXX","emoji":"🇧🇮"},{"phoneCode":"855","code":"KH","name":"Cambodia","pattern":"","emoji":"🇰🇭"},{"phoneCode":"237","code":"CM","name":"Cameroon","pattern":"237 XXXX XXXX","emoji":"🇨🇲"},{"phoneCode":"1","code":"CA","name":"Canada","pattern":"1 XXX XXX XXXX","emoji":"🇨🇦"},{"phoneCode":"238","code":"CV","name":"Cape Verde","pattern":"238 XXX XXXX","emoji":"🇨🇻"},{"phoneCode":"1 345","code":"KY","name":"Cayman Islands","pattern":"1345 XXX XXXX","emoji":"🇰🇾"},{"phoneCode":"236","code":"CF","name":"Central African Republic","pattern":"236 XX XX XX XX","emoji":"🇨🇫"},{"phoneCode":"235","code":"TD","name":"Chad","pattern":"235 XX XX XX XX","emoji":"🇹🇩"},{"phoneCode":"56","code":"CL","name":"Chile","pattern":"56 X XXXX XXXX","emoji":"🇨🇱"},{"phoneCode":"86","code":"CN","name":"China","pattern":"86 XXX XXXX XXXX","emoji":"🇨🇳"},{"phoneCode":"61","code":"CX","name":"Christmas Island","pattern":"","emoji":"🇨🇽"},{"phoneCode":"61","code":"CC","name":"Cocos (Keeling) Islands","pattern":"","emoji":"🇨🇨"},{"phoneCode":"57","code":"CO","name":"Colombia","pattern":"57 XXX XXX XXXX","emoji":"🇨🇴"},{"phoneCode":"269","code":"KM","name":"Comoros","pattern":"269 XXX XXXX","emoji":"🇰🇲"},{"phoneCode":"242","code":"CG","name":"Congo - Brazzaville","pattern":"242 XX XXX XXXX","emoji":"🇨🇬"},{"phoneCode":"243","code":"CD","name":"Congo - Kinshasa","pattern":"243 XX XXX XXXX","emoji":"🇨🇩"},{"phoneCode":"682","code":"CK","name":"Cook Islands","pattern":"","emoji":"🇨🇰"},{"phoneCode":"506","code":"CR","name":"Costa Rica","pattern":"","emoji":"🇨🇷"},{"phoneCode":"225","code":"CI","name":"Cote d’Ivoire","pattern":"225 XX XXX XXX","emoji":"🇨🇮"},{"phoneCode":"385","code":"HR","name":"Croatia","pattern":"","emoji":"🇭🇷"},{"phoneCode":"53","code":"CU","name":"Cuba","pattern":"53 XXXX XXXX","emoji":"🇨🇺"},{"phoneCode":"599 9","code":"CW","name":"Curacao","pattern":"","emoji":"🇨🇼"},{"phoneCode":"357","code":"CY","name":"Cyprus","pattern":"357 XXXX XXXX","emoji":"🇨🇾"},{"phoneCode":"420","code":"CZ","name":"Czech Republic","pattern":"","emoji":"🇨🇿"},{"phoneCode":"45","code":"DK","name":"Denmark","pattern":"45 XXXX XXXX","emoji":"🇩🇰"},{"phoneCode":"246","code":"DG","name":"Diego Garcia","pattern":"","emoji":"🇩🇬"},{"phoneCode":"253","code":"DJ","name":"Djibouti","pattern":"253 XX XX XX XX","emoji":"🇩🇯"},{"phoneCode":"1 767","code":"DM","name":"Dominica","pattern":"1767 XXX XXXX","emoji":"🇩🇲"},{"phoneCode":"1 809 and 1 829","code":"DO","name":"Dominican Republic","pattern":"1 XXX XXX XXXX","emoji":"🇩🇴"},{"phoneCode":"670","code":"TL","name":"Timor-Leste","pattern":"","emoji":"🇹🇱"},{"phoneCode":"593","code":"EC","name":"Ecuador","pattern":"","emoji":"🇪🇨"},{"phoneCode":"20","code":"EG","name":"Egypt","pattern":"20 XX XXX XXXX","emoji":"🇪🇬"},{"phoneCode":"503","code":"SV","name":"El Salvador","pattern":"503 XXXX XXXX","emoji":"🇸🇻"},{"phoneCode":"240","code":"GQ","name":"Equatorial Guinea","pattern":"240 XXX XXX XXX","emoji":"🇬🇶"},{"phoneCode":"291","code":"ER","name":"Eritrea","pattern":"291 X XXX XXX","emoji":"🇪🇷"},{"phoneCode":"372","code":"EE","name":"Estonia","pattern":"","emoji":"🇪🇪"},{"phoneCode":"251","code":"ET","name":"Ethiopia","pattern":"251 XX XXX XXXX","emoji":"🇪🇹"},{"phoneCode":"500","code":"FK","name":"Falkland Islands","pattern":"","emoji":"🇫🇰"},{"phoneCode":"298","code":"FO","name":"Faroe Islands","pattern":"298 XXX XXX","emoji":"🇫🇴"},{"phoneCode":"679","code":"FJ","name":"Fiji","pattern":"","emoji":"🇫🇯"},{"phoneCode":"358","code":"FI","name":"Finland","pattern":"","emoji":"🇫🇮"},{"phoneCode":"33","code":"FR","name":"France","pattern":"33 X XX XX XX XX","emoji":"🇫🇷"},{"phoneCode":"594","code":"GF","name":"French Guiana","pattern":"","emoji":"🇬🇫"},{"phoneCode":"689","code":"PF","name":"French Polynesia","pattern":"","emoji":"🇵🇫"},{"phoneCode":"241","code":"GA","name":"Gabon","pattern":"241 X XX XX XX","emoji":"🇬🇦"},{"phoneCode":"220","code":"GM","name":"Gambia","pattern":"220 XXX XXXX","emoji":"🇬🇲"},{"phoneCode":"995","code":"GE","name":"Georgia","pattern":"","emoji":"🇬🇪"},{"phoneCode":"49","code":"DE","name":"Germany","pattern":"49 XXX XXXXXXXX","emoji":"🇩🇪"},{"phoneCode":"233","code":"GH","name":"Ghana","pattern":"","emoji":"🇬🇭"},{"phoneCode":"350","code":"GI","name":"Gibraltar","pattern":"350 XXXX XXXX","emoji":"🇬🇮"},{"phoneCode":"30","code":"GR","name":"Greece","pattern":"30 XX XXXX XXXX","emoji":"🇬🇷"},{"phoneCode":"299","code":"GL","name":"Greenland","pattern":"299 XXX XXX","emoji":"🇬🇱"},{"phoneCode":"1 473","code":"GD","name":"Grenada","pattern":"1473 XXX XXXX","emoji":"🇬🇩"},{"phoneCode":"590","code":"GP","name":"Guadeloupe","pattern":"","emoji":"🇬🇵"},{"phoneCode":"1 671","code":"GU","name":"Guam","pattern":"1671 XXX XXXX","emoji":"🇬🇺"},{"phoneCode":"502","code":"GT","name":"Guatemala","pattern":"502 X XXX XXXX","emoji":"🇬🇹"},{"phoneCode":"44","code":"GG","name":"Guernsey","pattern":"","emoji":"🇬🇬"},{"phoneCode":"224","code":"GN","name":"Guinea","pattern":"224 XXX XXX XXX","emoji":"🇬🇳"},{"phoneCode":"245","code":"GW","name":"Guinea-Bissau","pattern":"245 XXX XXXX","emoji":"🇬🇼"},{"phoneCode":"592","code":"GY","name":"Guyana","pattern":"","emoji":"🇬🇾"},{"phoneCode":"509","code":"HT","name":"Haiti","pattern":"","emoji":"🇭🇹"},{"phoneCode":"504","code":"HN","name":"Honduras","pattern":"504 XXXX XXXX","emoji":"🇭🇳"},{"phoneCode":"852","code":"HK","name":"Hong Kong SAR China","pattern":"","emoji":"🇭🇰"},{"phoneCode":"36","code":"HU","name":"Hungary","pattern":"36 XX XXX XXXX","emoji":"🇭🇺"},{"phoneCode":"354","code":"IS","name":"Iceland","pattern":"354 XXX XXXX","emoji":"🇮🇸"},{"phoneCode":"91","code":"IN","name":"India","pattern":"91 XXXXX XXXXX","emoji":"🇮🇳"},{"phoneCode":"62","code":"ID","name":"Indonesia","pattern":"","emoji":"🇮🇩"},{"phoneCode":"98","code":"IR","name":"Iran","pattern":"98 XXX XXX XXXX","emoji":"🇮🇷"},{"phoneCode":"964","code":"IQ","name":"Iraq","pattern":"964 XXX XXX XXXX","emoji":"🇮🇶"},{"phoneCode":"353","code":"IE","name":"Ireland","pattern":"353 XX XXX XXXX","emoji":"🇮🇪"},{"phoneCode":"972","code":"IL","name":"Israel","pattern":"972 XX XXX XXXX","emoji":"🇮🇱"},{"phoneCode":"39","code":"IT","name":"Italy","pattern":"39 XXX XXX XXXX","emoji":"🇮🇹"},{"phoneCode":"1 876","code":"JM","name":"Jamaica","pattern":"1876 XXX XXXX","emoji":"🇯🇲"},{"phoneCode":"47 79","code":"SJ","name":"Svalbard & Jan Mayen","pattern":"","emoji":"🇸🇯"},{"phoneCode":"81","code":"JP","name":"Japan","pattern":"81 XX XXXX XXXX","emoji":"🇯🇵"},{"phoneCode":"44","code":"JE","name":"Jersey","pattern":"","emoji":"🇯🇪"},{"phoneCode":"962","code":"JO","name":"Jordan","pattern":"962 X XXXX XXXX","emoji":"🇯🇴"},{"phoneCode":"7 7","code":"KZ","name":"Kazakhstan","pattern":"7 XXX XXX XX XX","emoji":"🇰🇿"},{"phoneCode":"254","code":"KE","name":"Kenya","pattern":"254 XXX XXX XXX","emoji":"🇰🇪"},{"phoneCode":"686","code":"KI","name":"Kiribati","pattern":"","emoji":"🇰🇮"},{"phoneCode":"850","code":"KP","name":"North Korea","pattern":"","emoji":"🇰🇵"},{"phoneCode":"82","code":"KR","name":"South Korea","pattern":"","emoji":"🇰🇷"},{"phoneCode":"965","code":"KW","name":"Kuwait","pattern":"965 XXXX XXXX","emoji":"🇰🇼"},{"phoneCode":"996","code":"KG","name":"Kyrgyzstan","pattern":"","emoji":"🇰🇬"},{"phoneCode":"856","code":"LA","name":"Laos","pattern":"","emoji":"🇱🇦"},{"phoneCode":"371","code":"LV","name":"Latvia","pattern":"371 XXX XXXXX","emoji":"🇱🇻"},{"phoneCode":"961","code":"LB","name":"Lebanon","pattern":"","emoji":"🇱🇧"},{"phoneCode":"266","code":"LS","name":"Lesotho","pattern":"266 XX XXX XXX","emoji":"🇱🇸"},{"phoneCode":"231","code":"LR","name":"Liberia","pattern":"","emoji":"🇱🇷"},{"phoneCode":"218","code":"LY","name":"Libya","pattern":"218 XX XXX XXXX","emoji":"🇱🇾"},{"phoneCode":"423","code":"LI","name":"Liechtenstein","pattern":"","emoji":"🇱🇮"},{"phoneCode":"370","code":"LT","name":"Lithuania","pattern":"370 XXX XXXXX","emoji":"🇱🇹"},{"phoneCode":"352","code":"LU","name":"Luxembourg","pattern":"","emoji":"🇱🇺"},{"phoneCode":"853","code":"MO","name":"Macau SAR China","pattern":"","emoji":"🇲🇴"},{"phoneCode":"389","code":"MK","name":"Macedonia","pattern":"","emoji":"🇲🇰"},{"phoneCode":"261","code":"MG","name":"Madagascar","pattern":"261 XX XX XXX XX","emoji":"🇲🇬"},{"phoneCode":"265","code":"MW","name":"Malawi","pattern":"","emoji":"🇲🇼"},{"phoneCode":"60","code":"MM","name":"Malaysia","pattern":"","emoji":"🇲🇲"},{"phoneCode":"960","code":"MV","name":"Maldives","pattern":"","emoji":"🇲🇻"},{"phoneCode":"223","code":"ML","name":"Mali","pattern":"223 XXXX XXXX","emoji":"🇲🇱"},{"phoneCode":"356","code":"MT","name":"Malta","pattern":"356 XX XX XX XX","emoji":"🇲🇹"},{"phoneCode":"692","code":"MH","name":"Marshall Islands","pattern":"","emoji":"🇲🇭"},{"phoneCode":"596","code":"MQ","name":"Martinique","pattern":"","emoji":"🇲🇶"},{"phoneCode":"222","code":"MR","name":"Mauritania","pattern":"222 XXXX XXXX","emoji":"🇲🇷"},{"phoneCode":"230","code":"MU","name":"Mauritius","pattern":"","emoji":"🇲🇺"},{"phoneCode":"262","code":"YT","name":"Mayotte","pattern":"","emoji":"🇾🇹"},{"phoneCode":"52","code":"MX","name":"Mexico","pattern":"","emoji":"🇲🇽"},{"phoneCode":"691","code":"FM","name":"Micronesia","pattern":"","emoji":"🇫🇲"},{"phoneCode":"373","code":"MD","name":"Moldova","pattern":"373 XX XXX XXX","emoji":"🇲🇩"},{"phoneCode":"377","code":"MC","name":"Monaco","pattern":"377 XXXX XXXX","emoji":"🇲🇨"},{"phoneCode":"976","code":"MN","name":"Mongolia","pattern":"","emoji":"🇲🇳"},{"phoneCode":"382","code":"ME","name":"Montenegro","pattern":"","emoji":"🇲🇪"},{"phoneCode":"1 664","code":"MS","name":"Montserrat","pattern":"1664 XXX XXXX","emoji":"🇲🇸"},{"phoneCode":"212","code":"MA","name":"Morocco","pattern":"212 XX XXX XXXX","emoji":"🇲🇦"},{"phoneCode":"258","code":"MZ","name":"Mozambique","pattern":"258 XX XXX XXXX","emoji":"🇲🇿"},{"phoneCode":"264","code":"NA","name":"Namibia","pattern":"264 XX XXX XXXX","emoji":"🇳🇦"},{"phoneCode":"674","code":"NR","name":"Nauru","pattern":"","emoji":"🇳🇷"},{"phoneCode":"977","code":"NP","name":"Nepal","pattern":"","emoji":"🇳🇵"},{"phoneCode":"31","code":"NL","name":"Netherlands","pattern":"31 X XX XX XX XX","emoji":"🇳🇱"},{"phoneCode":"687","code":"NC","name":"New Caledonia","pattern":"","emoji":"🇳🇨"},{"phoneCode":"64","code":"NZ","name":"New Zealand","pattern":"","emoji":"🇳🇿"},{"phoneCode":"505","code":"NI","name":"Nicaragua","pattern":"505 XXXX XXXX","emoji":"🇳🇮"},{"phoneCode":"227","code":"NE","name":"Niger","pattern":"227 XX XX XX XX","emoji":"🇳🇪"},{"phoneCode":"234","code":"NG","name":"Nigeria","pattern":"","emoji":"🇳🇬"},{"phoneCode":"683","code":"NU","name":"Niue","pattern":"","emoji":"🇳🇺"},{"phoneCode":"672","code":"NF","name":"Norfolk Island","pattern":"","emoji":"🇳🇫"},{"phoneCode":"1 670","code":"MP","name":"Northern Mariana Islands","pattern":"1670 XXX XXXX","emoji":"🇲🇵"},{"phoneCode":"47","code":"NO","name":"Norway","pattern":"47 XXXX XXXX","emoji":"🇳🇴"},{"phoneCode":"968","code":"OM","name":"Oman","pattern":"968 XXXX XXXX","emoji":"🇴🇲"},{"phoneCode":"92","code":"PK","name":"Pakistan","pattern":"92 XXX XXX XXXX","emoji":"🇵🇰"},{"phoneCode":"680","code":"PW","name":"Palau","pattern":"","emoji":"🇵🇼"},{"phoneCode":"970","code":"PS","name":"Palestinian Territories","pattern":"970 XXX XX XXXX","emoji":"🇵🇸"},{"phoneCode":"507","code":"PA","name":"Panama","pattern":"507 XXXX XXXX","emoji":"🇵🇦"},{"phoneCode":"675","code":"PG","name":"Papua New Guinea","pattern":"","emoji":"🇵🇬"},{"phoneCode":"595","code":"PY","name":"Paraguay","pattern":"595 XXX XXX XXX","emoji":"🇵🇾"},{"phoneCode":"51","code":"PE","name":"Peru","pattern":"51 XXX XXX XXX","emoji":"🇵🇪"},{"phoneCode":"63","code":"PH","name":"Philippines","pattern":"63 XXX XXX XXXX","emoji":"🇵🇭"},{"phoneCode":"64","code":"PN","name":"Pitcairn Islands","pattern":"","emoji":"🇵🇳"},{"phoneCode":"48","code":"PL","name":"Poland","pattern":"48 XXX XXX XXX","emoji":"🇵🇱"},{"phoneCode":"351","code":"PT","name":"Portugal","pattern":"351 X XXXX XXXX","emoji":"🇵🇹"},{"phoneCode":"1 787 and 1 939","code":"PR","name":"Puerto Rico","pattern":"1 XXX XXX XXXX","emoji":"🇵🇷"},{"phoneCode":"974","code":"QA","name":"Qatar","pattern":"","emoji":"🇶🇦"},{"phoneCode":"262","code":"RE","name":"Reunion","pattern":"262 XXX XXX XXX","emoji":"🇷🇪"},{"phoneCode":"40","code":"RO","name":"Romania","pattern":"40 XXX XXX XXX","emoji":"🇷🇴"},{"phoneCode":"7","code":"RU","name":"Russia","pattern":"7 XXX XXX XX XX","emoji":"🇷🇺"},{"phoneCode":"250","code":"RW","name":"Rwanda","pattern":"250 XXX XXX XXX","emoji":"🇷🇼"},{"phoneCode":"590","code":"BL","name":"St. Barthelemy","pattern":"","emoji":"🇧🇱"},{"phoneCode":"290","code":"SH","name":"St. Helena","pattern":"290 XX XXX","emoji":"🇸🇭"},{"phoneCode":"1 869","code":"KN","name":"St. Kitts & Nevis","pattern":"1869 XXX XXXX","emoji":"🇰🇳"},{"phoneCode":"1 758","code":"LC","name":"St. Lucia","pattern":"1758 XXX XXXX","emoji":"🇱🇨"},{"phoneCode":"590","code":"MF","name":"St. Martin (France)","pattern":"","emoji":"🇲🇫"},{"phoneCode":"508","code":"PM","name":"St. Pierre and Miquelon","pattern":"","emoji":"🇵🇲"},{"phoneCode":"1 784","code":"VC","name":"St. Vincent and the Grenadines","pattern":"1784 XXX XXXX","emoji":"🇻🇨"},{"phoneCode":"685","code":"WS","name":"Samoa","pattern":"","emoji":"🇼🇸"},{"phoneCode":"378","code":"SM","name":"San Marino","pattern":"378 XXX XXX XXXX","emoji":"🇸🇲"},{"phoneCode":"239","code":"ST","name":"São Tome & Principe","pattern":"239 XX XXXXX","emoji":"🇸🇹"},{"phoneCode":"966","code":"SA","name":"Saudi Arabia","pattern":"","emoji":"🇸🇦"},{"phoneCode":"221","code":"SN","name":"Senegal","pattern":"221 XX XXX XXXX","emoji":"🇸🇳"},{"phoneCode":"381","code":"RS","name":"Serbia","pattern":"381 XX XXX XXXX","emoji":"🇷🇸"},{"phoneCode":"248","code":"SC","name":"Seychelles","pattern":"248 X XX XX XX","emoji":"🇸🇨"},{"phoneCode":"232","code":"SL","name":"Sierra Leone","pattern":"232 XX XXX XXX","emoji":"🇸🇱"},{"phoneCode":"65","code":"SG","name":"Singapore","pattern":"65 XXXX XXXX","emoji":"🇸🇬"},{"phoneCode":"599 3","code":"BQ","name":"Sint Eustatius","pattern":"","emoji":"🇧🇶"},{"phoneCode":"1 721","code":"SX","name":"Sint Maarten","pattern":"1721 XXX XXXX","emoji":"🇸🇽"},{"phoneCode":"421","code":"SK","name":"Slovakia","pattern":"","emoji":"🇸🇰"},{"phoneCode":"386","code":"SI","name":"Slovenia","pattern":"","emoji":"🇸🇮"},{"phoneCode":"677","code":"SB","name":"Solomon Islands","pattern":"","emoji":"🇸🇧"},{"phoneCode":"252","code":"SO","name":"Somalia","pattern":"252 XX XXX XXX","emoji":"🇸🇴"},{"phoneCode":"27","code":"ZA","name":"South Africa","pattern":"27 XX XXX XXXX","emoji":"🇿🇦"},{"phoneCode":"500","code":"GS","name":"South Georgia & South Sandwich Islands","pattern":"","emoji":"🇬🇸"},{"phoneCode":"995 34","code":"","name":"South Ossetia","pattern":"","emoji":""},{"phoneCode":"211","code":"SS","name":"South Sudan","pattern":"211 XX XXX XXXX","emoji":"🇸🇸"},{"phoneCode":"34","code":"ES","name":"Spain","pattern":"34 XXX XXX XXX","emoji":"🇪🇸"},{"phoneCode":"94","code":"LK","name":"Sri Lanka","pattern":"94 XX XXX XXXX","emoji":"🇱🇰"},{"phoneCode":"249","code":"SD","name":"Sudan","pattern":"249 XX XXX XXXX","emoji":"🇸🇩"},{"phoneCode":"597","code":"SR","name":"Suriname","pattern":"597 XXX XXXX","emoji":"🇸🇷"},{"phoneCode":"47 79","code":"SJ","name":"Svalbard","pattern":"","emoji":"🇸🇯"},{"phoneCode":"268","code":"SZ","name":"Swaziland","pattern":"268 XXXX XXXX","emoji":"🇸🇿"},{"phoneCode":"46","code":"SE","name":"Sweden","pattern":"46 XX XXX XXXX","emoji":"🇸🇪"},{"phoneCode":"41","code":"CH","name":"Switzerland","pattern":"41 XX XXX XXXX","emoji":"🇨🇭"},{"phoneCode":"963","code":"SY","name":"Syria","pattern":"","emoji":"🇸🇾"},{"phoneCode":"886","code":"TW","name":"Taiwan","pattern":"","emoji":"🇹🇼"},{"phoneCode":"992","code":"TJ","name":"Tajikistan","pattern":"","emoji":"🇹🇯"},{"phoneCode":"255","code":"TZ","name":"Tanzania","pattern":"255 XX XXX XXXX","emoji":"🇹🇿"},{"phoneCode":"66","code":"TH","name":"Thailand","pattern":"66 X XXXX XXXX","emoji":"🇹🇭"},{"phoneCode":"228","code":"TG","name":"Togo","pattern":"228 XX XXX XXX","emoji":"🇹🇬"},{"phoneCode":"690","code":"TK","name":"Tokelau","pattern":"","emoji":"🇹🇰"},{"phoneCode":"676","code":"TO","name":"Tonga","pattern":"","emoji":"🇹🇴"},{"phoneCode":"1 868","code":"TT","name":"Trinidad & Tobago","pattern":"1868 XXX XXXX","emoji":"🇹🇹"},{"phoneCode":"216","code":"TN","name":"Tunisia","pattern":"216 XX XXX XXX","emoji":"🇹🇳"},{"phoneCode":"90","code":"TR","name":"Turkey","pattern":"90 XXX XXX XXXX","emoji":"🇹🇷"},{"phoneCode":"993","code":"TM","name":"Turkmenistan","pattern":"993 XX XXXXXX","emoji":"🇹🇲"},{"phoneCode":"1 649","code":"TC","name":"Turks & Caicos Islands","pattern":"1649 XXX XXXX","emoji":"🇹🇨"},{"phoneCode":"688","code":"TV","name":"Tuvalu","pattern":"","emoji":"🇹🇻"},{"phoneCode":"256","code":"UG","name":"Uganda","pattern":"256 XX XXX XXXX","emoji":"🇺🇬"},{"phoneCode":"380","code":"UA","name":"Ukraine","pattern":"380 XX XXX XX XX","emoji":"🇺🇦"},{"phoneCode":"971","code":"AE","name":"United Arab Emirates","pattern":"971 XX XXX XXXX","emoji":"🇦🇪"},{"phoneCode":"44","code":"GB","name":"United Kingdom","pattern":"44 XXXX XXXXXX","emoji":"🇬🇧"},{"phoneCode":"1","code":"US","name":"United States","pattern":"1 XXX XXX XXXX","emoji":"🇺🇸"},{"phoneCode":"598","code":"UY","name":"Uruguay","pattern":"598 XXXX XXXX","emoji":"🇺🇾"},{"phoneCode":"1 340","code":"VI","name":"U.S. Virgin Islands","pattern":"1340 XXX XXXX","emoji":"🇻🇮"},{"phoneCode":"998","code":"UZ","name":"Uzbekistan","pattern":"998 XX XXXXXXX","emoji":"🇺🇿"},{"phoneCode":"678","code":"VU","name":"Vanuatu","pattern":"","emoji":"🇻🇺"},{"phoneCode":"58","code":"VE","name":"Venezuela","pattern":"58 XXX XXX XXXX","emoji":"🇻🇪"},{"phoneCode":"39 06 698","code":"VA","name":"Vatican City","pattern":"","emoji":"🇻🇦"},{"phoneCode":"84","code":"VN","name":"Vietnam","pattern":"","emoji":"🇻🇳"},{"phoneCode":"681","code":"WF","name":"Wallis & Futuna","pattern":"","emoji":"🇼🇫"},{"phoneCode":"967","code":"YE","name":"Yemen","pattern":"967 XXX XXX XXX","emoji":"🇾🇪"},{"phoneCode":"260","code":"ZM","name":"Zambia","pattern":"260 XX XXX XXXX","emoji":"🇿🇲"},{"phoneCode":"255","code":"","name":"Zanzibar","pattern":"","emoji":""},{"phoneCode":"263","code":"ZW","name":"Zimbabwe","pattern":"263 XX XXX XXXX","emoji":"🇿🇼"}]; @@ -92,20 +95,6 @@ export const mediaSizes = new MediaSizes(); // @ts-ignore export const touchSupport = ('ontouchstart' in window) || (window.DocumentTouch && document instanceof DocumentTouch); -const userAgent = navigator ? navigator.userAgent : null; -export const isApple = navigator.userAgent.search(/OS X|iPhone|iPad|iOS/i) != -1; -export const isAndroid = navigator.userAgent.toLowerCase().indexOf('android') != -1; - -/** - * Returns true when run in WebKit derived browsers. - * This is used as a workaround for a memory leak in Safari caused by using Transferable objects to - * transfer data between WebWorkers and the main thread. - * https://github.com/mapbox/mapbox-gl-js/issues/8771 - * - * This should be removed once the underlying Safari issue is fixed. - */ -export const isSafari = !!('safari' in window) || !!(userAgent && (/\b(iPad|iPhone|iPod)\b/.test(userAgent) || (!!userAgent.match('Safari') && !userAgent.match('Chrome')))); - const Config = { Emoji, LatinizeMap, diff --git a/src/lib/filemanager.ts b/src/lib/filemanager.ts index c2101480..2aa009ee 100644 --- a/src/lib/filemanager.ts +++ b/src/lib/filemanager.ts @@ -1,6 +1,6 @@ import {blobConstruct} from './bin_utils'; -class FileManager { +export class FileManager { public blobSupported = true; constructor() { @@ -14,22 +14,6 @@ class FileManager { public isAvailable() { return this.blobSupported; } - - public copy(fromFileEntry: any, toFileEntry: any) { - return this.write(toFileEntry, fromFileEntry).then(() => { - console.log('copy success'); - return toFileEntry; - }, (error: any) => { - console.error('copy error 1:', error); - try { - toFileEntry.truncate(0); - } catch(e) { - console.error('copy error', e); - } - - return Promise.reject(error); - }); - } public write(fileWriter: ReturnType, bytes: Uint8Array | Blob | {file: any}): Promise { if('file' in bytes) { diff --git a/src/lib/mtproto/apiFileManager.ts b/src/lib/mtproto/apiFileManager.ts index 73b2e232..98e341a9 100644 --- a/src/lib/mtproto/apiFileManager.ts +++ b/src/lib/mtproto/apiFileManager.ts @@ -4,9 +4,9 @@ import cacheStorage from "../cacheStorage"; import FileManager from "../filemanager"; import apiManager from "./apiManager"; import { deferredPromise, CancellablePromise } from "../polyfill"; -import appWebpManager from "../appManagers/appWebpManager"; import { logger } from "../logger"; import { InputFileLocation, FileLocation, UploadFile } from "../../types"; +import { isSafari } from "../../helpers/userAgent"; type Delayed = { offset: number, @@ -21,7 +21,6 @@ export type DownloadOptions = { fileName?: string, mimeType?: string, limitPart?: number, - stickerType?: number, processPart?: (bytes: Uint8Array, offset?: number, queue?: Delayed[]) => Promise }; @@ -42,6 +41,8 @@ export class ApiFileManager { } = {}; public downloadActives: {[dcID: string]: number} = {}; + public webpConvertPromises: {[fileName: string]: CancellablePromise} = {}; + private log: ReturnType = logger('AFM'); public downloadRequest(dcID: 'upload', cb: () => Promise, activeDelta: number): Promise; @@ -151,14 +152,10 @@ export class ApiFileManager { let size = options.size ?? 0; let {dcID, location} = options; - let processSticker = false; - if(options.stickerType == 1 && !appWebpManager.isSupported()) { - if(size > 524288) { - delete options.stickerType; - } else { - processSticker = true; - options.mimeType = 'image/png'; - } + let processWebp = false; + if(options.mimeType == 'image/webp' && isSafari) { + processWebp = true; + options.mimeType = 'image/png'; } // this.log('Dload file', dcID, location, size) @@ -172,7 +169,7 @@ export class ApiFileManager { if(options.processPart) { return cachedPromise.then((blob) => { return this.convertBlobToBytes(blob).then(bytes => { - options.processPart(bytes) + options.processPart(bytes); return blob; }); }); @@ -204,13 +201,13 @@ export class ApiFileManager { let canceled = false; let resolved = false; - let cacheFileWriter: any; + let cacheFileWriter: ReturnType; let errorHandler = (error: any) => { deferred.reject(error); errorHandler = () => {}; if(cacheFileWriter && (!error || error.type != 'DOWNLOAD_CANCELED')) { - cacheFileWriter.truncate(0); + cacheFileWriter.truncate(); } }; @@ -269,8 +266,22 @@ export class ApiFileManager { await options.processPart(bytes, offset, delayed); } - if(processSticker) { - return appWebpManager.convertToPng(bytes); + if(processWebp) { + const convertPromise = deferredPromise(); + + (self as any as ServiceWorkerGlobalScope) + .clients + .matchAll({includeUncontrolled: false, type: 'window'}) + .then((listeners) => { + if(!listeners.length) { + return; + } + + listeners[0].postMessage({type: 'convertWebp', payload: {fileName, bytes}}); + }); + + return await (this.webpConvertPromises[fileName] = convertPromise); + //return appWebpManager.convertToPng(bytes); } return bytes; diff --git a/src/lib/mtproto/mtproto.service.ts b/src/lib/mtproto/mtproto.service.ts index 95de09c7..ae383c04 100644 --- a/src/lib/mtproto/mtproto.service.ts +++ b/src/lib/mtproto/mtproto.service.ts @@ -9,6 +9,7 @@ import networkerFactory from "./networkerFactory"; import apiFileManager, { DownloadOptions } from './apiFileManager'; import { getFileNameByLocation } from '../bin_utils'; import { logger, LogLevels } from '../logger'; +import { isSafari } from '../../helpers/userAgent'; const log = logger('SW'/* , LogLevels.error */); @@ -16,34 +17,11 @@ const ctx = self as any as ServiceWorkerGlobalScope; //console.error('INCLUDE !!!', new Error().stack); -/** - * Returns true when run in WebKit derived browsers. - * This is used as a workaround for a memory leak in Safari caused by using Transferable objects to - * transfer data between WebWorkers and the main thread. - * https://github.com/mapbox/mapbox-gl-js/issues/8771 - * - * This should be removed once the underlying Safari issue is fixed. - * - * @private - * @param scope {WindowOrWorkerGlobalScope} Since this function is used both on the main thread and WebWorker context, - * let the calling scope pass in the global scope object. - * @returns {boolean} - */ -var _isSafari: boolean = null; -function isSafari(scope: any) { - if(_isSafari == null) { - var userAgent = scope.navigator ? scope.navigator.userAgent : null; - _isSafari = !!scope.safari || - !!(userAgent && (/\b(iPad|iPhone|iPod)\b/.test(userAgent) || (!!userAgent.match('Safari') && !userAgent.match('Chrome')))); - } - return _isSafari; -} - function isObject(object: any) { return typeof(object) === 'object' && object !== null; } -function fillTransfer(transfer: any, obj: any) { +/* function fillTransfer(transfer: any, obj: any) { if(!obj) return; if(obj instanceof ArrayBuffer) { @@ -59,7 +37,7 @@ function fillTransfer(transfer: any, obj: any) { fillTransfer(transfer, value); }); } -} +} */ /** * Respond to request @@ -83,7 +61,7 @@ function respond(client: Client | ServiceWorker | MessagePort, ...args: any[]) { * Broadcast Notification */ function notify(...args: any[]) { - ctx.clients.matchAll({ includeUncontrolled: false, type: 'window' }).then((listeners) => { + ctx.clients.matchAll({includeUncontrolled: false, type: 'window'}).then((listeners) => { if(!listeners.length) { //console.trace('no listeners?', self, listeners); return; @@ -108,6 +86,13 @@ ctx.addEventListener('message', async(e) => { if(e.data.useLs) { AppStorage.finishTask(e.data.taskID, e.data.args); return; + } else if(e.data.type == 'convertWebp') { + const {fileName, bytes} = e.data.payload; + const deferred = apiFileManager.webpConvertPromises[fileName]; + if(deferred) { + deferred.resolve(bytes); + delete apiFileManager.webpConvertPromises[fileName]; + } } switch(e.data.task) { @@ -288,7 +273,7 @@ ctx.addEventListener('fetch', (event: FetchEvent): void => { if(info.mimeType) headers['Content-Type'] = info.mimeType; - if(isSafari(ctx)) { + if(isSafari) { ab = ab.slice(offset - alignedOffset, end - alignedOffset + 1); headers['Content-Range'] = `bytes ${offset}-${offset + ab.byteLength - 1}/${info.size || '*'}`; headers['Content-Length'] = `${ab.byteLength}`; diff --git a/src/lib/mtproto/mtprotoworker.ts b/src/lib/mtproto/mtprotoworker.ts index faac2599..5c1704aa 100644 --- a/src/lib/mtproto/mtprotoworker.ts +++ b/src/lib/mtproto/mtprotoworker.ts @@ -2,8 +2,8 @@ import {isObject, $rootScope} from '../utils'; import AppStorage from '../storage'; import CryptoWorkerMethods from '../crypto/crypto_methods'; import runtime from 'serviceworker-webpack-plugin/lib/runtime'; -import { InputFileLocation, FileLocation } from '../../types'; import { logger } from '../logger'; +import { webpWorkerController } from '../webp/webpWorkerController'; type Task = { taskID: number, @@ -74,6 +74,8 @@ class ApiManagerProxy extends CryptoWorkerMethods { } } else if(e.data.progress) { $rootScope.$broadcast('download_progress', e.data.progress); + } else if(e.data.type == 'convertWebp') { + webpWorkerController.postMessage(e.data); } else { this.finalizeTask(e.data.taskID, e.data.result, e.data.error); } @@ -162,15 +164,6 @@ class ApiManagerProxy extends CryptoWorkerMethods { return this.performTaskWorker('logOut'); } - public downloadFile(dcID: number, location: InputFileLocation | FileLocation, size: number = 0, options: Partial<{ - mimeType: string, - toFileEntry: any, - limitPart: number, - stickerType: number - }> = {}): Promise { - return this.performTaskWorker('downloadFile', dcID, location, size, options); - } - public cancelDownload(fileName: string) { return this.performTaskWorker('cancelDownload', fileName); } diff --git a/src/lib/storage.ts b/src/lib/storage.ts index b7eca533..35effa80 100644 --- a/src/lib/storage.ts +++ b/src/lib/storage.ts @@ -136,15 +136,15 @@ class ConfigStorage { } } -const configStorage = new ConfigStorage(); - class AppStorage { - private isWebWorker: boolean; + private isWorker: boolean; private taskID = 0; private tasks: {[taskID: number]: (result: any) => void} = {}; //private log = (...args: any[]) => console.log('[SW LS]', ...args); private log = (...args: any[]) => {}; + private configStorage: ConfigStorage; + constructor() { if(Modes.test) { this.setPrefix('t_'); @@ -152,15 +152,23 @@ class AppStorage { // @ts-ignore //this.isWebWorker = typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope; - this.isWebWorker = typeof ServiceWorkerGlobalScope !== 'undefined' && self instanceof ServiceWorkerGlobalScope; + this.isWorker = typeof ServiceWorkerGlobalScope !== 'undefined' && self instanceof ServiceWorkerGlobalScope; + + if(!this.isWorker) { + this.configStorage = new ConfigStorage(); + } } public setPrefix(newPrefix: string) { - configStorage.keyPrefix = newPrefix; + if(this.configStorage) { + this.configStorage.keyPrefix = newPrefix; + } } public noPrefix() { - configStorage.noPrefix = true; + if(this.configStorage) { + this.configStorage.noPrefix = true; + } } public finishTask(taskID: number, result: any) { @@ -175,9 +183,9 @@ class AppStorage { delete this.tasks[taskID]; } - private proxy(methodName: string, ..._args: any[]) { + private proxy(methodName: 'set' | 'get' | 'remove' | 'clear', ..._args: any[]) { return new Promise((resolve, reject) => { - if(this.isWebWorker) { + if(this.isWorker) { const taskID = this.taskID++; this.tasks[taskID] = resolve; @@ -203,8 +211,7 @@ class AppStorage { resolve(result); }); - // @ts-ignore - configStorage[methodName].apply(configStorage, args); + this.configStorage[methodName].apply(this.configStorage, args as any); } }); } diff --git a/src/lib/webp.ts b/src/lib/webp.ts deleted file mode 100644 index 2cebb7a0..00000000 --- a/src/lib/webp.ts +++ /dev/null @@ -1,55 +0,0 @@ -import {Webp} from "webp-hero/libwebp/dist/webp.js" - -const relax = () => new Promise(resolve => requestAnimationFrame(resolve)); - -export class WebpMachineError extends Error {} - -/** - * Webp Machine - * - decode and polyfill webp images - * - can only decode images one-at-a-time (otherwise will throw busy error) - */ -export class WebpMachine { - private readonly webp: Webp; - private busy = false; - - constructor() { - this.webp = new Webp(); - this.webp.Module.doNotCaptureKeyboard = true; - } - - /** - * Decode raw webp data into a png data url - */ - decode(webpData: Uint8Array): Promise { - if(this.busy) throw new WebpMachineError("cannot decode when already busy"); - this.busy = true; - - try { - return relax().then(() => { - const canvas = document.createElement("canvas"); - this.webp.setCanvas(canvas); - this.webp.webpToSdl(webpData, webpData.length); - this.busy = false; - - return new Promise((resolve, reject) => { - canvas.toBlob(blob => { - let reader = new FileReader(); - reader.onload = (event) => { - resolve(new Uint8Array(event.target.result as ArrayBuffer)); - }; - reader.onerror = reject; - reader.readAsArrayBuffer(blob); - }, 'image/png', 1); - }); - }); - } catch(error) { - this.busy = false; - error.name = WebpMachineError.name; - error.message = `failed to decode webp image: ${error.message}`; - throw error; - } - } -} - -(window as any).WebpMachine = WebpMachine; diff --git a/src/lib/webp/webp.ts b/src/lib/webp/webp.ts new file mode 100644 index 00000000..e7790885 --- /dev/null +++ b/src/lib/webp/webp.ts @@ -0,0 +1,42 @@ +import { WebPDecoder } from '../../vendor/libwebp-0.2.0'; +import { encode } from 'fast-png'; + +export function webp2png(data: Uint8Array) { + const decoder = new WebPDecoder(); + const config: any = decoder.WebPDecoderConfig; + const buffer = config.j || config.output; + const bitstream = config.input; + + decoder.WebPInitDecoderConfig(config); + decoder.WebPGetFeatures(data, data.length, bitstream); + + /** MODE_RGBA = 1 MODE_ARGB = 4, */ + buffer.J = 1; + + let status; + try { + status = decoder.WebPDecode(data, data.length, config); + } catch(e) { + status = e; + } + + if(status === 0) { + const rgbaData = buffer.Jb; + const pngData = encode({ + data: rgbaData, + width: buffer.width, + height: buffer.height, + channels: 4, + depth: 8, + }); + + return {status, bytes: pngData}; + } + + return {status, bytes: data}; +} + +export function webp2pngAsBlob(data: Uint8Array) { + const {status, bytes} = webp2png(data); + return new Blob([bytes], {type: status === 0 ? 'image/png' : 'image/webp'}); +} diff --git a/src/lib/webp/webp.worker.ts b/src/lib/webp/webp.worker.ts new file mode 100644 index 00000000..4cf4face --- /dev/null +++ b/src/lib/webp/webp.worker.ts @@ -0,0 +1,50 @@ +import { webp2png } from './webp'; +import type { WebpConvertTask } from './webpWorkerController'; + +const ctx = self as any as DedicatedWorkerGlobalScope; +const tasks: WebpConvertTask[] = []; +let isProcessing = false; + +function finishTask() { + isProcessing = false; + processTasks(); +} + +function processTasks() { + if(isProcessing) return; + + const task = tasks.shift(); + if(!task) return; + + isProcessing = true; + + switch(task.type) { + case 'convertWebp': { + const {fileName, bytes} = task.payload; + + ctx.postMessage({ + type: 'convertWebp', + payload: { + fileName, + bytes: webp2png(bytes).bytes + } + }); + + finishTask(); + + break; + } + + default: + finishTask(); + } +} + +function scheduleTask(task: WebpConvertTask) { + tasks.push(task); + processTasks(); +} + +ctx.addEventListener('message', (event) => { + scheduleTask(event.data); +}); diff --git a/src/lib/webp/webpWorkerController.ts b/src/lib/webp/webpWorkerController.ts new file mode 100644 index 00000000..c00a25f7 --- /dev/null +++ b/src/lib/webp/webpWorkerController.ts @@ -0,0 +1,53 @@ +import WebpWorker from 'worker-loader!./webp.worker'; +import { CancellablePromise, deferredPromise } from '../polyfill'; + +export type WebpConvertTask = { + type: 'convertWebp', + payload: { + fileName: string, + bytes: Uint8Array + } +}; + +export class WebpWorkerController { + private worker: Worker; + private convertPromises: {[fileName: string]: CancellablePromise} = {}; + + init() { + this.worker = new WebpWorker(); + this.worker.addEventListener('message', (e) => { + const payload = (e.data as WebpConvertTask).payload; + + if(payload.fileName.indexOf('main-') === 0) { + const promise = this.convertPromises[payload.fileName]; + if(promise) { + promise.resolve(payload.bytes); + delete this.convertPromises[payload.fileName]; + } + } else { + navigator.serviceWorker.controller.postMessage(e.data); + } + }); + } + + postMessage(data: WebpConvertTask) { + if(this.init) { + this.init(); + this.init = null; + } + + this.worker.postMessage(data); + } + + convert(fileName: string, bytes: Uint8Array) { + const convertPromise = deferredPromise(); + + fileName = 'main-' + fileName; + + this.postMessage({type: 'convertWebp', payload: {fileName, bytes}}); + + return this.convertPromises[fileName] = convertPromise; + } +} + +export const webpWorkerController = new WebpWorkerController(); \ No newline at end of file diff --git a/src/countries.dat b/src/scripts/countries.dat similarity index 100% rename from src/countries.dat rename to src/scripts/countries.dat diff --git a/src/countries.json b/src/scripts/countries.json similarity index 100% rename from src/countries.json rename to src/scripts/countries.json diff --git a/src/countries_pretty.json b/src/scripts/countries_pretty.json similarity index 100% rename from src/countries_pretty.json rename to src/scripts/countries_pretty.json diff --git a/src/emoji.json b/src/scripts/emoji.json similarity index 100% rename from src/emoji.json rename to src/scripts/emoji.json diff --git a/src/emoji_pretty.json b/src/scripts/emoji_pretty.json similarity index 100% rename from src/emoji_pretty.json rename to src/scripts/emoji_pretty.json diff --git a/src/format_jsons.js b/src/scripts/format_jsons.js similarity index 100% rename from src/format_jsons.js rename to src/scripts/format_jsons.js diff --git a/src/format_schema.js b/src/scripts/format_schema.js similarity index 100% rename from src/format_schema.js rename to src/scripts/format_schema.js diff --git a/src/schema.json b/src/scripts/schema.json similarity index 100% rename from src/schema.json rename to src/scripts/schema.json diff --git a/src/schema_pretty.json b/src/scripts/schema_pretty.json similarity index 100% rename from src/schema_pretty.json rename to src/scripts/schema_pretty.json diff --git a/src/lib/StackBlur.js b/src/vendor/StackBlur.js similarity index 100% rename from src/lib/StackBlur.js rename to src/vendor/StackBlur.js diff --git a/src/vendor/libwebp-0.2.0.js b/src/vendor/libwebp-0.2.0.js new file mode 100644 index 00000000..f07649fa --- /dev/null +++ b/src/vendor/libwebp-0.2.0.js @@ -0,0 +1,4082 @@ +// Copyright 2011 Google Inc. +// +// This code is licensed under the same terms as WebM: +// Software License Agreement: http://www.webmproject.org/license/software/ +// Additional IP Rights Grant: http://www.webmproject.org/license/additional/ +// ----------------------------------------------------------------------------- +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +// IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY +// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// ----------------------------------------------------------------------------- +// +// Copyright 2011-2013 Dominik Homberger +// Libwebp Javascript / libwebpjs - the libwebp implementation in javascript (v0.2.0) +// +// Author: Dominik Homberger (dominik.homberger@gmail.com) + +let i; +let a; +let self; +const ca = 0; +const p = null; +const s = 0; +const x = 0; +const la = s; +const E = s; +const bb = 0; +const Mb = 0; + +function M(F) { + return JSON.parse(JSON.stringify(F)); +} + +function N(F, G, w, D, S) { + for (i = 0; i < S; ++i) F[G + i] = w[D + i]; +} + +function Nb(F) { + const G = []; + const w = F.length; + let D; + for (D = 0; D < w; ++D) G.push(F[D]); + return G; +} + +function ic(F, G) { + const w = []; + w.push(M(F)); + let D; + for (D = 0; D < G; ++D) w.push(M(F)); + w.push(0); + return w; +} + +function rc(F, G) { + const w = []; + let D; + for (D = 0; D < G; ++D) w.push(F); + w.push(0); + return w; +} + +function memmove(arr1, index1, arr2, index2, length) { + let i; + for (i = 0; i < length; i++) { + arr1[index1 + i] = arr2[index2 + i]; + } +} + +function jd(F, G, w, D) { + let S; + for (S = 0; S < D; ++S) F[G + S] = w; +} + +function kd(F, G, w, D) { + let S = ''; + let ga; + for (ga = 0; ga < D; ++ga) S += String.fromCharCode(F[G + ga]); + return w == S ? 0 : 1; +} + +function U(F, G) { + let w; const + D = []; + for (w = 0; w < F; ++w) D.push(G); + return D; +} + +function ld(F, G) { + let w; const + D = []; + for (w = 0; w < F; ++w) D.push(M(G)); + return D; +} + +function md(F, G) { + let w; + for (w = F.length - 1; w >= 0; --w) G = M(U(F[w], G)); + return G; +} + +function $(F) { + if (!F) throw Error('assert :P'); +} +export const WebPDecoder = function () { + function F(a) { + return a == Ob || a == Pb || a == Bb || a == Qb; + } + + function G(a) { + return S(a, 1); + } + + function w(a, b) { + const c = 1 + ((a.la - 1) * b >> 8); + const d = c << 8; + let e = s; + a.Z >= d ? (e = 1, a.la -= c, a.Z -= d) : (e = 0, a.la = c); + for (; a.la < 128;) a.Z <<= 1, a.la <<= 1, ++a.gc == 8 && (a.gc = 0, a.bc && (a.Z += a.qa[a.Ia++], a.bc--)); + return e; + } + + function D(a, b, c, d) { + d -= c; + d >= 2 ? (a.Z = b[c + 0] << 8 | b[c + 1], a.qa = b, a.Ia = c + 2, a.bc = d - 2) : (a.Z = 0, a.qa = p, a.bc = 0); + a.la = 255; + a.gc = 0; + } + + function S(a, b) { + for (var c = 0, d = s, d = b - 1; d >= 0; d--) c |= w(a, 128) << d; + return c; + } + + function ga(a, b) { + const c = S(a, b); + return G(a) ? -c : c; + } + + function Rb(a, b, c, d) { + let e = Mb; + $(a != p); + $(b != p); + $(d < 4294967288); + a.qa = b; + a.Ia = c; + a.ya = d; + a.T = 0; + a.Q = 0; + a.g = 0; + a.L = 0; + for (e = a.fa = 0; e < 4 && e < a.ya; ++e) a.T |= a.qa[a.Ia + a.Q] << 8 * e, ++a.Q; + } + + function Sb(a) { + for (; a.g >= 8 && a.Q < a.ya;) a.T >>>= 8, a.T += a.qa[a.Ia + a.Q] << 24 >>> 0, ++a.Q, a.g -= 8; + } + + function Da(a) { + a.g >= 8 && Sb(a); + a.Q == a.ya && a.g == 32 && (a.L = 1); + } + + function T(a, b) { + let c = 0; + $(b >= 0); + if (!a.L && b < gf) { + if (a.Q == a.ya && a.g + b >= 32 && (a.L = 1, a.g + b > 32)) return c; + c = a.T >> a.g & hf[b]; + a.g += b; + a.g >= 8 && a.g >= 8 && Sb(a); + } else a.fa = 1; + return c; + } + + function ma(a) { + return a.Pa == a.gb; + } + + function nd(a, b) { + $(a != p); + if (b == 0) return 0; + a.gb = 2 * b - 1; + a.Y = ld(a.gb, jf); + if (a.Y == p) return 0; + a.Y[0].s = -1; + return a.Pa = 1; + } + + function ja(a) { + a != p && (a.Y = p, a.Y = p, a.gb = 0, a.Pa = 0); + } + + function jc(a, b, c, d) { + for (var e = a.Y, g = 0, k = +a.gb; d-- > 0;) { + if (g >= k) return 0; + if (e[g].s < 0) { + if (ma(a)) return 0; + const h = a; + const n = h.Y; + const l = +h.Pa; + e[g].s = l - g; + h.Pa += 2; + n[l + 0].s = -1; + n[l + 1].s = -1; + } else if (e[g].s == 0) return 0; + g += e[g].s + (c >> d & 1); + } + if (e[g].s < 0) e[g].s = 0; + else if (e[g].s != 0) return 0; + e[g].kc = b; + return 1; + } + + function od(a, b, c) { + var d = s; + let e = 0; + let g = 0; + $(a != p); + $(b != p); + for (d = 0; d < c; ++d) b[d] > 0 && (++e, g = d); + if (!nd(a, e)) return 0; + if (e == 1) return g < 0 || g >= c ? (ja(a), 0) : jc(a, g, 0, 0); + e = 0; + g = U(c, s); + if (g == p) return (e = e && ma(a)) || ja(a), e; + var k = s; + var k = s; + var d = U(Tb + 1, 0); + let h = s; + const n = U(Tb + 1, 0); + let l = 0; + $(b != p); + $(c > 0); + $(g != p); + for (k = 0; k < c; ++k) b[k] > l && (l = b[k]); + if (l > Tb) d = 0; + else { + for (k = 0; k < c; ++k) ++d[b[k]]; + h = d[0] = 0; + n[0] = -1; + for (k = 1; k <= l; ++k) h = h + d[k - 1] << 1, n[k] = h; + for (k = 0; k < c; ++k) g[k] = b[k] > 0 ? n[b[k]]++ : pd; + d = 1; + } + if (!d) return (e = e && ma(a)) || ja(a), e; + for (d = 0; d < c; ++d) { + if (b[d] > 0 && !jc(a, d, g[d], b[d])) { + return (e = e && ma(a)) || ja(a), e; + } + } + (e = ma(a)) || ja(a); + return e; + } + + function Ea(a, b, c, d, e, g, k) { + for (var h = s, h = 0; h < k; ++h) e[g + h] = a[b + h] + c[d + h] & 255; + } + + function qd(a, b, c) { + const d = a.P.l; + if (!(c = b < 0 || c < 0 || b + c > a.P.v)) { + if (c = b == 0) { + a: { + let e = a.Ga; + var g = a.G; + var k = a.ub; + c = a.P.l; + let h = a.P.v; + const n = a.Xb; + var l = [p]; + let m = p; + let f = h * c; + var q = p; + var r = p; + var r = 'WEBP_FILTER_TYPE'; + let u = s; + var l = s; + var v = 0; + let C = s; + $(c > 0 && h > 0 && d >= c); + $(e != p && n != p); + if (k <= Ub) c = 0; + else if (C = e[g + 0] >> 0 & 3, r = e[g + 0] >> 2 & 3, u = e[g + 0] >> 4 & 3, l = e[g + 0] >> 6 & 3, C < kc || C > kf || r >= lf || u > rd || l != 0) c = 0; + else { + if (C == kc) v = k >= f, l = e, m = g + Ub; + else { + l = U(f, 0); + m = 0; + if (l + == p) { + c = 0; + break a; + } + var v = g + Ub; + var k = k - Ub; + var g = l; + var q = M(Vb); + let A = 0; + const z = sd(); + z == p ? v = 0 : (z.l = c, z.v = h, z.N = q, td(na), q.put = ud, q.Mb = vd, q.Pb = wd, q.ka = p, q.ka = g, q.fd = 0, q.width = c, q.height = h, z.a = L, Rb(z.o, e, v, k), z.Wa = Cb, Ka(c, h, 1, z, p) && xd(z, c) && (z.Wa = Db, A = lc(z, z.V, z.Ha, z.l, z.v, mf)), z != p && sa(z), v = A); + } + if (v) { + e = nf[r]; + e != p ? (q = U(f, 0), r = 0, q == p && (v = 0, C != kc && (m = l = p)), e(l, m, c, h, 1, c, q, r), f = q, C = r) : (f = l, C = m); + for (e = 0; h-- > 0;) N(n, e, f, C, c), C += c, e += d; + u == rd && (v = l == p || m <= 0 || c <= 0 ? 0 : 1); + } + c = v; + } + } + c = !c; + } + } + return c ? p : b == 0 ? a.Xb : +b * d; + } + + function of(a) { + let b = a.width; + const c = a.height; + let d = a.J; + if (b <= 0 || c <= 0 || !(d >= Qa && d < Cc)) return ta; + if (!a.Fc && a.Jb == p) { + var e = p; + var g = 0; + var k = 0; + var h = 0; + var n = 0; + var e = bb; + var l = b * yd[d]; + var m = l * c; + d < ua || (g = parseInt((b + 1) / 2, 10), h = g * parseInt((c + 1) / 2, 10), d == Ra && (k = b, n = k * c)); + e = m + 2 * h + n; + if (e != e) return ta; + e = U(e, 205); + if (e == p) return cb; + a.Jb = e; + a.jc = p; + d < ua ? (b = a.c.RGBA, b.ma = e, b.Sa = p, b.f = l, b.size = m) : (b = a.c.Va, b.y = e, b.D = p, b.F = l, b.Wc = m, b.c = e, b.B = p + m, b.nb = g, b.Rc = h, b.S = e, b.C = p + m + h, b.rb = g, b.Uc = h, d == Ra && (b.p = e, b.q = p + m + 2 * h), b.Wb = n, b.Fa = k); + } + d = 1; + g = a.J; + k = a.width; + h = a.height; + g >= Qa && g < Cc ? g < ua ? (a = a.c.RGBA, d + &= a.f * h <= a.size, d &= a.f >= k * yd[g], d &= a.ma != p) : (a = a.c.Va, n = a.nb * parseInt((h + 1) / 2, 10), l = a.rb * parseInt((h + 1) / 2, 10), m = a.Fa * h, d &= a.F * h <= a.Wc, d &= n <= a.Rc, d &= l <= a.Uc, d &= m <= a.Wb, d &= a.F >= k, d &= a.nb >= parseInt((k + 1) / 2, 10), d &= a.rb >= parseInt((k + 1) / 2, 10), d &= a.y != p, d &= a.c != p, d &= a.S != p, g == Ra && (d &= a.Fa >= k, d &= m <= a.Wb, d &= a.p != p)) : d = 0; + return d ? L : ta; + } + + function zd(a, b, c, d) { + if (d == p || a <= 0 || b <= 0) return ta; + if (c != p) { + if (c.Ua) { + const e = c.wc; + const g = c.vc; + const k = c.t & -2; + const h = c.k & -2; + if (k < 0 || h < 0 || e <= 0 || g <= 0 || k + e > a || h + g > b) return ta; + a = e; + b = g; + } + if (c.I) { + if (c.Ba <= 0 + || c.Aa <= 0) return ta; + a = c.Ba; + b = c.Aa; + } + } + d.width = a; + d.height = b; + return of(d); + } + + function mb(a) { + return !(a & -256) ? a : a < 0 ? 0 : 255; + } + + function Ad(a, b, c, d) { + const e = U(16, 0); + let g; + g = 0; + let k; + for (k = 0; k < 4; ++k) { + var h = a[b + 0] + a[b + 8]; + var n = a[b + 0] - a[b + 8]; + var l = (a[b + 4] * Wb >> 16) - (a[b + 12] * Xb >> 16); + var m = (a[b + 4] * Xb >> 16) + (a[b + 12] * Wb >> 16); + e[g + 0] = h + m; + e[g + 1] = n + l; + e[g + 2] = n - l; + e[g + 3] = h - m; + g += 4; + b++; + } + for (k = g = 0; k < 4; ++k) { + a = e[g + 0] + 4, h = a + e[g + 8], n = a - e[g + 8], l = (e[g + 4] * Wb >> 16) - (e[g + 12] * Xb >> 16), m = (e[g + 4] * Xb >> 16) + (e[g + 12] * Wb >> 16), c[d + 0 + 0 * f] = mb(c[d + 0 + 0 * f] + (h + m >> 3)), c[d + 1 + 0 * f] = mb(c[d + + 1 + 0 * f] + (n + l >> 3)), c[d + 2 + 0 * f] = mb(c[d + 2 + 0 * f] + (n - l >> 3)), c[d + 3 + 0 * f] = mb(c[d + 3 + 0 * f] + (h - m >> 3)), g++, d += f; + } + } + + function pf(a, b, c, d, e) { + Ad(a, b, c, d); + e && Ad(a, b + 16, c, d + 4); + } + + function qf(a, b, c, d) { + mc(a, b + 0, c, d + 0, 1); + mc(a, b + 32, c, d + 4 * f, 1); + } + + function nc(a, b, c, d) { + a = a[b + 0] + 4; + let e; + for (e = 0; e < 4; ++e) for (b = 0; b < 4; ++b) c[d + b + e * f] = mb(c[d + b + e * f] + (a >> 3)); + } + + function rf(a, b, c, d) { + a[b + 0] && nc(a, b + 0, c, d + 0); + a[b + 16] && nc(a, b + 16, c, d + 4); + a[b + 32] && nc(a, b + 32, c, d + 4 * f); + a[b + 48] && nc(a, b + 48, c, d + 4 * f + 4); + } + + function Dc(a, b, c) { + const d = b - f; + const e = oa; + const g = 255 - a[d - 1]; + let k; + for (k = 0; k + < c; ++k) { + const h = e; + const n = g + a[b - 1]; + var l; + for (l = 0; l < c; ++l) a[b + l] = h[n + a[d + l]]; + b += f; + } + } + + function Yb(a, b, c) { + let d; + for (d = 0; d < 16; ++d) for (i = 0; i < 16; ++i) b[c + d * f + i] = a; + } + + function y(a, b, c) { + return a + 2 * b + c + 2 >> 2; + } + + function Zb(a, b, c) { + let d; let + e; + for (d = 0; d < 8; ++d) for (e = 0; e < 8; ++e) b[c + e + d * f] = a; + } + + function nb(a, b, c) { + const d = a[b - c]; + const e = a[b + 0]; + const g = 3 * (e - d) + sc[1020 + a[b - 2 * c] - a[b + c]]; + const k = oc[112 + (g + 4 >> 3)]; + a[b - c] = oa[255 + d + oc[112 + (g + 3 >> 3)]]; + a[b + 0] = oa[255 + e - k]; + } + + function Bd(a, b, c, d) { + const e = a[b + 0]; + const g = a[b + c]; + return va[255 + a[b - 2 * c] - a[b - c]] > d || va[255 + g - e] > d; + } + + function Cd(a, + b, c, d, e) { + const g = a[b - 3 * c]; + const k = a[b - 2 * c]; + const h = a[b - c]; + const n = a[b + 0]; + const l = a[b + c]; + const m = a[b + 2 * c]; + const f = a[b + 3 * c]; + return 2 * va[255 + h - n] + tc[255 + k - l] > d ? 0 : va[255 + a[b - 4 * c] - g] <= e && va[255 + g - k] <= e && va[255 + k - h] <= e && va[255 + f - m] <= e && va[255 + m - l] <= e && va[255 + l - n] <= e; + } + + function Dd(a, b, c, d) { + let e; + for (e = 0; e < 16; ++e) 2 * va[255 + a[b + e - c] - a[b + e + 0]] + tc[255 + a[b + e - 2 * c] - a[b + e + c]] <= d && nb(a, b + e, c); + } + + function Ed(a, b, c, d) { + let e; + for (e = 0; e < 16; ++e) 2 * va[255 + a[b + e * c - 1] - a[b + e * c + 0]] + tc[255 + a[b + e * c - 2] - a[b + e * c + 1]] <= d && nb(a, b + e * c, 1); + } + + function sf(a, b, c, d) { + let e; + for (e = 3; e > 0; --e) { + b + += 4 * c, Dd(a, b + 0, c, d); + } + } + + function tf(a, b, c, d) { + let e; + for (e = 3; e > 0; --e) b += 4, Ed(a, b + 0, c, d); + } + + function Fa(a, b, c, d, e, g, k, h) { + for (; e-- > 0;) { + if (Cd(a, b + 0, c, g, k)) { + if (Bd(a, b + 0, c, h)) nb(a, b + 0, c); + else { + const n = a; + const l = b + 0; + const m = c; + const f = n[l - 2 * m]; + const q = n[l - m]; + const r = n[l + 0]; + const u = n[l + m]; + const v = n[l + 2 * m]; + var C = sc[1020 + 3 * (r - q) + sc[1020 + f - u]]; + const A = 27 * C + 63 >> 7; + const z = 18 * C + 63 >> 7; + var C = 9 * C + 63 >> 7; + n[l - 3 * m] = oa[255 + n[l - 3 * m] + C]; + n[l - 2 * m] = oa[255 + f + z]; + n[l - m] = oa[255 + q + A]; + n[l + 0] = oa[255 + r - A]; + n[l + m] = oa[255 + u - z]; + n[l + 2 * m] = oa[255 + v - C]; + } + } + b += d; + } + } + + function Ga(a, b, c, d, e, g, k, h) { + for (; e-- > 0;) { + if (Cd(a, b + 0, c, + g, k)) { + if (Bd(a, b + 0, c, h)) nb(a, b + 0, c); + else { + const n = a; + const l = b + 0; + const m = c; + const f = n[l - m]; + const q = n[l + 0]; + const r = n[l + m]; + var u = 3 * (q - f); + const v = oc[112 + (u + 4 >> 3)]; + var u = oc[112 + (u + 3 >> 3)]; + const C = v + 1 >> 1; + n[l - 2 * m] = oa[255 + n[l - 2 * m] + C]; + n[l - m] = oa[255 + f + u]; + n[l + 0] = oa[255 + q - v]; + n[l + m] = oa[255 + r - C]; + } + } + b += d; + } + } + + function uf(a, b, c, d, e, g) { + Fa(a, b + 0, c, 1, 16, d, e, g); + } + + function vf(a, b, c, d, e, g) { + Fa(a, b + 0, 1, c, 16, d, e, g); + } + + function wf(a, b, c, d, e, g) { + let k; + for (k = 3; k > 0; --k) b += 4 * c, Ga(a, b + 0, c, 1, 16, d, e, g); + } + + function xf(a, b, c, d, e, g) { + let k; + for (k = 3; k > 0; --k) b += 4, Ga(a, b + 0, 1, c, 16, d, e, g); + } + + function yf(a, b, c, d, e, + g, k, h) { + Fa(a, b, e, 1, 8, g, k, h); + Fa(c, d, e, 1, 8, g, k, h); + } + + function zf(a, b, c, d, e, g, k, h) { + Fa(a, b, 1, e, 8, g, k, h); + Fa(c, d, 1, e, 8, g, k, h); + } + + function Af(a, b, c, d, e, g, k, h) { + Ga(a, b + 4 * e, e, 1, 8, g, k, h); + Ga(c, d + 4 * e, e, 1, 8, g, k, h); + } + + function Bf(a, b, c, d, e, g, k, h) { + Ga(a, b + 4, 1, e, 8, g, k, h); + Ga(c, d + 4, 1, e, 8, g, k, h); + } + + function Fd(a, b) { + return b == $b ? a.i == 0 ? a.d == 0 ? Cf : Df : a.d == 0 ? Ef : $b : b; + } + + function Ec(a, b, c, d) { + for (i = 0; i < 4; ++i) a[b + i] = c[d + i]; + } + + function wa(a, b) { + return a < 0 ? 0 : a > b ? b : a; + } + + function Gd(a) { + a.a = 'VP8_STATUS_OK'; + a.xc = 'OK'; + } + + function td(a) { + a >>> 8 != na >>> 8 && alert('mismatch error'); + } + + function Y(a, b, c) { + a.a == L && (a.a = b, a.xc = c, a.za = 0); + // alert(b + ": " + c); + return 0; + } + + function Hd(a, b) { + let c = [0]; + let d = x; + var e = [Mb]; + var g = M(Id); + var k = M(Jd); + let h = M(Fc); + var e = 'VP8StatusCode'; + var g = M(Gc); + if (a == p) return alert('(dec == null)'), 0; + Gd(a); + if (b == p) return Y(a, 'VP8_STATUS_INVALID_PARAM', 'null VP8Io passed to VP8GetHeaders()'); + g.data = b.data; + g.b = b.b; + g.e = b.e; + g.b = [g.b]; + g.e = [g.e]; + g = [g]; + e = Kd(g); + if (e != L) return Y(a, e, 'Incorrect/incomplete header.'); + g = g[0]; + g.b = g.b[0]; + g.e = g.e[0]; + if (g.ia) return Y(a, W, 'Unexpected lossless format encountered.'); + a.Ga == p && ($(a.ub == 0), a.Ga = g.$, a.G = g.G, a.ub = g.pa); + d = g.data; + c = g.b + g.offset; + e = g.e - g.offset; + $(g.e >= g.offset); + if (e[0] < 4) return Y(a, Z, 'Truncated header.'); + h = d[c + 0] | d[c + 1] << 8 | d[c + 2] << 16; + g = a.Ac; + g.fb = !(h & 1) + 0; + g.Jc = h >> 1 & 7; + g.Nc = h >> 4 & 1; + g.Ra = h >> 5; + if (g.Jc > 3) return Y(a, 'VP8_STATUS_BITSTREAM_ERROR', 'Incorrect keyframe parameters.'); + if (!g.Nc) return Y(a, 'VP8_STATUS_UNSUPPORTED_FEATURE', 'Frame not displayable.'); + c += 3; + e -= 3; + k = a.P; + if (g.fb) { + if (e < 7) return Y(a, 'VP8_STATUS_NOT_ENOUGH_DATA', 'cannot parse picture header'); + if (!(e + >= 3 && d[c + 0] == 157 && d[c + 1] == 1 && d[c + 2] == 42)) return Y(a, 'VP8_STATUS_BITSTREAM_ERROR', 'Bad code word'); + k.l = (d[c + 4] << 8 | d[c + 3]) & 16383; + k.gd = d[c + 4] >> 6; + k.v = (d[c + 6] << 8 | d[c + 5]) & 16383; + k.hd = d[c + 6] >> 6; + c += 7; + e -= 7; + a.Ma = k.l + 15 >> 4; + a.hb = k.v + 15 >> 4; + b.width = k.l; + b.height = k.v; + b.I = 0; + b.Ua = 0; + b.k = 0; + b.t = 0; + b.Ka = b.width; + b.K = b.height; + b.m = b.width; + b.h = b.height; + h = a.R; + for (i = 0; i < h.Ta.length; ++i) h.Ta[i] = 255; + h.z = M(Ff); + h = a.Ca; + $(h != p); + h.pb = 0; + h.ob = 0; + h.tb = 1; + for (i = 0; i < h.Kb.length; ++i) h.Kb[i] = 0; + for (i = 0; i < h.Cb.length; ++i) h.Cb[i] = 0; + a.Lb = 0; + } + if (g.Ra + > e) return Y(a, 'VP8_STATUS_NOT_ENOUGH_DATA', 'bad partition length'); + h = a.o; + D(h, d, c, c + g.Ra); + c += g.Ra; + e -= g.Ra; + g.fb && (k.uc = G(h), k.$c = G(h)); + var k = h; + var n = a.Ca; + let l = a.R; + $(k != p); + $(n != p); + n.pb = G(k); + if (n.pb) { + n.ob = G(k); + if (G(k)) { + var m; + n.tb = G(k); + for (m = 0; m < xa; ++m) n.Kb[m] = G(k) ? ga(k, 7) : 0; + for (m = 0; m < xa; ++m) n.Cb[m] = G(k) ? ga(k, 6) : 0; + } + if (n.ob) for (m = 0; m < Ld; ++m) l.Ta[m] = G(k) ? S(k, 8) : 255; + } else n.ob = 0; + if (k.Ab) return Y(a, 'VP8_STATUS_BITSTREAM_ERROR', 'cannot parse segment header'); + k = h; + n = a.ga; + n.Oc = G(k); + n.Fb = S(k, 6); + n.kb = S(k, 3); + n.oc = G(k); + if (n.oc + && G(k)) { + for (l = 0; l < Hc; ++l) G(k) && (n.Lc[l] = ga(k, 6)); + for (l = 0; l < Gf; ++l) G(k) && (n.Gc[l] = ga(k, 6)); + } + a.A = n.Fb == 0 ? 0 : n.Oc ? 1 : 2; + if (a.A > 0) { + if (a.Ca.pb) for (l = 0; l < xa; ++l) m = a.Ca.Cb[l], a.Ca.tb || (m += n.Fb), a.Zb[l] = m; + else a.Zb[0] = n.Fb; + } + if (k.Ab) return Y(a, 'VP8_STATUS_BITSTREAM_ERROR', 'cannot parse filter header'); + var k = d; + var f = c; + var n = f; + var e = f + e; + m = 0; + let q = s; + let r = s; + a.Hb = 1 << S(a.o, 2); + q = a.Hb - 1; + l = k; + m = f + 3 * q; + if (e < m) e = 'VP8_STATUS_NOT_ENOUGH_DATA'; + else { + for (r = 0; r < q; ++r) { + var f = l; + var u = m + (k[n + 0] | k[n + 1] << 8 | k[n + 2] << 16); + u > e && (f = k); + D(a.ic[+r], l, m, u); + l = f; + m = u; + n += 3; + } + D(a.ic[+q], l, m, e); + e = m < e ? 'VP8_STATUS_OK' : 'VP8_STATUS_SUSPENDED'; + } + if (e != 'VP8_STATUS_OK') return Y(a, 'VP8_STATUS_BITSTREAM_ERROR', 'cannot parse partitions'); + q = a.o; + e = S(q, 7); + k = G(q) ? ga(q, 4) : 0; + n = G(q) ? ga(q, 4) : 0; + l = G(q) ? ga(q, 4) : 0; + m = G(q) ? ga(q, 4) : 0; + q = G(q) ? ga(q, 4) : 0; + r = a.Ca; + f = s; + for (f = 0; f < xa; ++f) { + u = s; + if (r.pb) u = r.Kb[f], r.tb || (u += e); + else if (f > 0) { + a.yb[f] = a.yb[0]; + continue; + } else u = e; + const v = a.yb[f]; + v.sc[0] = Ic[wa(u + k, 127)]; + v.sc[1] = Jc[wa(u + 0, 127)]; + v.sb[0] = 2 * Ic[wa(u + n, 127)]; + v.sb[1] = 101581 * Jc[wa(u + l, 127)] >> 16; + v.sb[1] < 8 + && (v.sb[1] = 8); + v.qc[0] = Ic[wa(u + m, 117)]; + v.qc[1] = Jc[wa(u + q, 127)]; + } + if (g.fb) a.Zc = 259; + else return Y(a, Hf, 'Not a key frame.'); + G(h); + e = a.R; + for (k = 0; k < Md; ++k) for (n = 0; n < Nd; ++n) for (l = 0; l < Kc; ++l) for (m = 0; m < Lc; ++m) w(h, If[k][n][l][m]) && (e.z[k][n][l][m] = S(h, 8)); + a.pc = G(h); + a.pc && (a.Pc = S(h, 8)); + if (a.P.uc) { + c -= 8; + h = Mb; + if (g.Ra < 8 || d[c + 8 - 1] != 1) return Y(a, W, 'RIFF: Inconsistent extra information.'); + h = d[c + 0] << 0 | d[c + 1] << 8 | d[c + 2] << 16; + a.fc = h; + a.dd = p; + a.cd = d[c + 3]; + } + return a.za = 1; + } + + function Mc(a, b, c, d, e, g) { + let k = b[e][c]; + if (!w(a, k[0])) return 0; + for (;;) { + ++e; + if (w(a, k[1])) { + var h; + if (w(a, k[2])) { + if (w(a, k[3])) { + if (w(a, k[6])) { + h = x; + c = w(a, k[8]); + k = w(a, k[9 + c]); + k = 2 * c + k; + c = 0; + h = Jf[k]; + var n; + for (n = 0; n < h.length - 1; ++n) c += c + w(a, h[n]); + c += 3 + (8 << k); + } else w(a, k[7]) ? (c = 7 + 2 * w(a, 165), c += w(a, 145)) : c = 5 + w(a, 159); + } else c = w(a, k[4]) ? 3 + w(a, k[5]) : 2; + k = b[Nc[e]][2]; + } else k = b[Nc[e]][1], c = 1; + h = Kf[e - 1]; + g[g[g.length - 1] + h] = (w(a, 128) ? -c : c) * d[(h > 0) + 0]; + if (e == 16 || !w(a, k[0])) return e; + } else k = b[Nc[e]][0]; + if (e == 16) return 16; + } + } + + function ob(a, b) { + return ((16777216 * a[0] + 65536 * a[1] + 256 * a[2] + 1 * a[3]) * Lf + & 4278190080) >> b; + } + + function Mf(a, b) { + let c = 0; + if (a == p) return 0; + if (b == p) return Y(a, 'VP8_STATUS_INVALID_PARAM', 'NULL VP8Io parameter in VP8Decode().'); + if (!a.za && !Hd(a, b)) return 0; + $(a.za); + let d; + if (b.Mb && !b.Mb(b)) Y(a, Nf, 'Frame setup failed'), d = a.a; + else { + b.Za && (a.A = 0); + const e = uc[a.A]; + a.A == 2 ? (a.lb = 0, a.mb = 0) : (a.lb = b.t - e >> 4, a.mb = b.k - e >> 4, a.lb < 0 && (a.lb = 0), a.mb < 0 && (a.mb = 0)); + a.Ya = b.K + 15 + e >> 4; + a.wb = b.Ka + 15 + e >> 4; + a.wb > a.Ma && (a.wb = a.Ma); + a.Ya > a.hb && (a.Ya = a.hb); + d = L; + } + if (c = d == L) { + if (c) { + let g; + b: { + a.Ja = 0; + if (a.qb) { + const k = a.rc; + if (!WebPWorkerReset(k)) { + g = Y(a, cb, 'thread initialization failed.'); + break b; + } + k.Qd = a; + k.Rd = a.oa.N; + k.Ud = FinishRow; + a.jb = a.A > 0 ? Od : Od - 1; + } else a.jb = Of; + g = 1; + } + let h; + if (!(h = !g)) { + let n; + b: { + const l = a.jb; + const m = a.Ma; + const t = 4 * m; + const q = 32 * m; + const r = m + 1; + const u = a.A > 0 ? m * (a.qb ? 2 : 1) : 0; + const v = Pf; + const C = q * (16 * l + parseInt(3 * uc[a.A] / 2, 10)); + const A = a.Ga != p ? a.P.l * a.P.v : 0; + const z = t + q + r + u + v + 384 + C + A + Pd; + if (z != z) n = 0; + else { + if (z > a.Gb) { + a.ib = 0; + a.Gb = 0; + if (a.ib == p) { + n = Y(a, 'VP8_STATUS_OUT_OF_MEMORY', 'no memory during frame initialization.'); + break b; + } + a.Gb = z; + } + a.dc = 205; + a.Xc = rc(205, 16 * m); + a.Sc = rc(205, 8 * m); + a.Vc = rc(205, 8 * m); + a.M = u ? ic(Oc, u) : p; + a.Sd = u ? 0 : p; + a.oa.ha = 0; + a.oa.M = a.M; + $((v & Pd) == 0); + a.Ea = rc(205, 1 * v); + a.z = -12851; + a.H = 16 * m; + a.r = 8 * m; + const Ha = uc[a.A]; + const G = Ha * a.H; + const y = Ha / 2 * a.r; + a.ca = U(C, 205); + a.da = +G; + a.aa = a.ca; + a.ba = a.da + 16 * l * a.H + y; + a.ra = a.aa; + a.sa = a.ba + 8 * l * a.r + y; + a.Xb = A ? U(A, x) : p; + a.La = ic(Qd, r); + a.dc = rc($b, t); + n = 1; + } + } + h = !n; + } + if (h) c = 0; + else { + b.width = a.P.l; + b.height = a.P.v; + b.w = 0; + b.y = a.ca; + b.D = a.da; + b.c = a.aa; + b.B = a.ba; + b.S = a.ra; + b.C = a.sa; + b.F = a.H; + b.Da = a.r; + b.p = p; + b.q = p; + if (!Rd) { + let B; + for (B = -255; B <= 255; ++B) va[255 + B] = B < 0 ? -B : B, tc[255 + B] = va[255 + B] >> 1; + for (B = -1020; B + <= 1020; ++B) sc[1020 + B] = B < -128 ? -128 : B > 127 ? 127 : B; + for (B = -112; B <= 112; ++B) oc[112 + B] = B < -16 ? -16 : B > 15 ? 15 : B; + for (B = -255; B <= 510; ++B) oa[255 + B] = B < 0 ? 0 : B > 255 ? 255 : B; + Rd = 1; + } + mc = pf; + Pc = qf; + Qc = nc; + Rc = rf; + Sd = uf; + Td = vf; + Ud = yf; + Vd = zf; + Wd = wf; + Xd = xf; + Yd = Af; + Zd = Bf; + $d = Dd; + ae = Ed; + be = sf; + ce = tf; + c = 1; + } + } + if (c) { + a: { + for (a.d = 0; a.d < a.Ya; ++a.d) { + const Qf = a.ic[a.d & a.Hb - 1]; + const db = a; + const F = db.La[0]; + F.X = 0; + F.ua = 0; + jd(db.cc, 0, $b, db.cc.length); + db.W = (db.A > 0 && db.d >= db.mb && db.d <= db.Ya) + 0; + for (a.i = 0; a.i < a.Ma; a.i++) { + var D; + const H = a; + const T = Qf; + const ya = H.o; + const S = H.La[0]; + const J = H.La[1 + H.i]; + H.Ca.ob && (H.Lb = !w(ya, + H.R.Ta[0]) ? 0 + w(ya, H.R.Ta[1]) : 2 + w(ya, H.R.Ta[2])); + J.Nb = H.pc ? w(ya, H.Pc) : 0; + const O = H.dc; + O[O.length - 1] = 0 + 4 * H.i; + const Sc = H.cc; + H.wa = !w(ya, 145); + if (H.wa) { + for (var ga = H.Eb, ja = 0, Z = ca, Z = 0; Z < 4; ++Z) { + var V = Sc[Z]; + var R; + for (R = 0; R < 4; ++R) { + const ta = Rf[O[O[O.length - 1] + R]][V]; + var za = 0; + do za = Sf[2 * za + w(ya, ta[za])]; while (za > 0); + V = -za; + O[O[O.length - 1] + R] = V; + ga[ja] = V; + ja++; + } + Sc[Z] = V; + } + } else { + var V = w(ya, 156) ? w(ya, 128) ? de : ee : w(ya, 163) ? fe : ge; + H.Eb[0] = V; + for (za = 0; za < 4; ++za) O[za + O[O.length - 1]] = V; + for (za = 0; za < 4; ++za) Sc[za] = V; + } + H.Tc = !w(ya, 142) ? ge : !w(ya, 114) ? fe + : w(ya, 183) ? de : ee; + if (ya.Ab) D = 0; + else { + if (J.Nb) S.X = J.X = 0, H.wa || (S.ua = J.ua = 0), H.ja = 0, H.Oa = 0; + else { + let ia = ca; + let ka = ca; + var sa = ca; + var wa = Tf; + const Aa = H.yb[H.Lb]; + var aa = H.z; + const ma = H.La[0]; + const ua = U(4, 0); + const xa = U(4, 0); + let ea = U(4, 0); + let pb = U(4, 0); + let na = 0; + let Ba = 0; + var pa = ca; + let qa = ca; + let Sa = ca; + var aa = rc(0, 384); + if (H.wa) sa = 0, wa = H.R.z[3]; + else { + const ab = U(16, 0); + var Ca = J.ua + ma.ua; + J.ua = ma.ua = (Mc(T, H.R.z[1], Ca, Aa.sb, 0, ab) > 0) + 0; + for (var sa = 1, wa = H.R.z[0], qb = ab, Ta = aa, La = U(16, s), X = s, X = 0; X < 4; ++X) { + var Da = qb[0 + X] + qb[12 + X]; + var Ea = qb[4 + X] + qb[8 + X]; + var Fa = qb[4 + X] - qb[8 + X]; + var Ga = qb[0 + X] - qb[12 + X]; + La[0 + X] = Da + Ea; + La[8 + + X] = Da - Ea; + La[4 + X] = Ga + Fa; + La[12 + X] = Ga - Fa; + } + for (X = 0; X < 4; ++X) { + const Oa = Ta[Ta.length - 1]; + const lb = La[0 + 4 * X] + 3; + var Da = lb + La[3 + 4 * X]; + var Ea = La[1 + 4 * X] + La[2 + 4 * X]; + var Fa = La[1 + 4 * X] - La[2 + 4 * X]; + var Ga = lb - La[3 + 4 * X]; + Ta[Oa + 0] = Da + Ea >> 3; + Ta[Oa + 16] = Ga + Fa >> 3; + Ta[Oa + 32] = Da - Ea >> 3; + Ta[Oa + 48] = Ga - Fa >> 3; + Ta[Ta.length - 1] += 64; + } + aa[aa.length - 1] = 0; + } + ea = Nb(vc[J.X & 15]); + pb = Nb(vc[ma.X & 15]); + for (qa = 0; qa < 4; ++qa) { + for (var Eb = pb[qa], pa = 0; pa < 4; ++pa) { + var Ca = Eb + ea[pa]; + var Ka = Mc(T, wa, Ca, Aa.sc, sa, aa); + ea[pa] = Eb = (Ka > 0) + 0; + xa[pa] = (aa[aa[aa.length - 1] + 0] != 0) + 0; + ua[pa] = (Ka > 1) + 0; + aa[aa.length + - 1] += 16; + } + pb[qa] = Eb; + Ba |= ob(xa, 24 - 4 * qa); + na |= ob(ua, 24 - 4 * qa); + } + ia = ob(ea, 24); + ka = ob(pb, 24); + ea = Nb(vc[J.X >> 4]); + pb = Nb(vc[ma.X >> 4]); + for (Sa = 0; Sa < 4; Sa += 2) { + for (qa = 0; qa < 2; ++qa) { + Eb = pb[Sa + qa]; + for (pa = 0; pa < 2; ++pa) Ca = Eb + ea[Sa + pa], Ka = Mc(T, H.R.z[2], Ca, Aa.qc, 0, aa), ea[Sa + pa] = Eb = (Ka > 0) + 0, xa[2 * qa + pa] = (aa[aa[aa.length - 1] + 0] != 0) + 0, ua[2 * qa + pa] = (Ka > 1) + 0, aa[aa.length - 1] += 16; + pb[Sa + qa] = Eb; + } + Ba |= ob(xa, 8 - 2 * Sa); + na |= ob(ua, 8 - 2 * Sa); + } + ia |= ob(ea, 20); + ka |= ob(pb, 20); + J.X = ia; + ma.X = ka; + H.z = aa; + H.Oa = na + 0; + H.ja = na | Ba; + J.Nb = !H.ja + 0; + } + D = !T.Ab; + } + if (!D) { + c = Y(a, 'VP8_STATUS_NOT_ENOUGH_DATA', + `Premature end-of-file encountered.${a.i} ${a.d}`); + break a; + } + const P = a; + const da = P.Ea; + const Ma = Tc; + const Ua = P.Ea; + const Va = Uc; + const Wa = P.Ea; + const Xa = he; + if (P.i > 0) { + for (var ba = ca, ba = -1; ba < 16; ++ba) Ec(da, Ma + ba * f - 4, da, Ma + ba * f + 12); + for (ba = -1; ba < 8; ++ba) Ec(Ua, Va + ba * f - 4, Ua, Va + ba * f + 4), Ec(Wa, Xa + ba * f - 4, Wa, Xa + ba * f + 4); + } else { + for (ba = 0; ba < 16; ++ba) da[Ma + ba * f - 1] = 129; + for (ba = 0; ba < 8; ++ba) Ua[Va + ba * f - 1] = 129, Wa[Xa + ba * f - 1] = 129; + P.d > 0 && (da[Ma - 1 - f] = Ua[Va - 1 - f] = Wa[Xa - 1 - f] = 129); + } + const Qa = P.Xc; + const Ra = 16 * +P.i; + const mb = P.Sc; + const vb = 8 * +P.i; + const wb = P.Vc; + const xb = 8 * +P.i; + const Za = P.z; + let fa = ca; + if (P.d > 0) { + N(da, Ma - f, Qa, Ra, + 16), N(Ua, Va - f, mb, vb, 8), N(Wa, Xa - f, wb, xb, 8); + } else if (P.i == 0) { + for (i = 0; i < 21; ++i) da[Ma - f - 1 + i] = 127; + for (i = 0; i < 9; ++i) Ua[Va - f - 1 + i] = 127; + for (i = 0; i < 9; ++i) Wa[Xa - f - 1 + i] = 127; + } + if (P.wa) { + const Ya = Ma - f + 16; + P.d > 0 && (P.i >= P.Ma - 1 ? da[Ya + 0] = da[Ya + 1] = da[Ya + 2] = da[Ya + 3] = Qa[Ra + 15] : N(da, Ya + 0, Qa, Ra + 16, 4)); + for (let Fb = 0; Fb < 4; ++Fb) da[Fb + Ya + 4 * f] = da[Fb + Ya + 4 * f] = da[Fb + Ya + 8 * f] = da[Fb + Ya + 12 * f] = da[Fb + Ya + 0]; + for (fa = 0; fa < 16; fa++) { + var ac = da; + var bc = Ma + ie[fa]; + Uf[P.Eb[fa]](ac, bc); + P.Oa & 1 << fa ? mc(Za, 16 * +fa, ac, bc, 0) : P.ja & 1 << fa && Qc(Za, 16 * +fa, ac, bc); + } + } else { + var $a = Fd(P, P.Eb[0]); + Vf[$a](da, Ma); + if (P.ja) for (fa = 0; fa < 16; fa++) ac = da, bc = Ma + ie[fa], P.Oa & 1 << fa ? mc(Za, 16 * +fa, ac, bc, 0) : P.ja & 1 << fa && Qc(Za, 16 * +fa, ac, bc); + } + $a = Fd(P, P.Tc); + je[$a](Ua, Va); + je[$a](Wa, Xa); + if (P.ja & 983040) { + const zb = P.z; + var Pa = 256; + P.Oa & 983040 ? Pc(zb, Pa, Ua, Va) : Rc(zb, Pa, Ua, Va); + } + if (P.ja & 15728640) { + const Ab = P.z; + var Pa = 320; + P.Oa & 15728640 ? Pc(Ab, Pa, Wa, Xa) : Rc(Ab, Pa, Wa, Xa); + } + P.d < P.hb - 1 && (N(Qa, Ra, da, Ma + 15 * f, 16), N(mb, vb, Ua, Va + 7 * f, 8), N(wb, xb, Wa, Xa + 7 * f, 8)); + const Q = a; + if (Q.A > 0) { + const kb = Q.M[1 + Q.i]; + const Kb = Q.La[1 + Q.i].Nb; + let ha = Q.Zb[Q.Lb]; + Q.ga.oc && (ha + += Q.ga.Lc[0], Q.wa && (ha += Q.ga.Gc[0])); + ha = ha < 0 ? 0 : ha > 63 ? 63 : ha; + kb.zc = ha; + Q.ga.kb > 0 && (ha = Q.ga.kb > 4 ? ha >> 2 : ha >> 1, ha > 9 - Q.ga.kb && (ha = 9 - Q.ga.kb)); + kb.yc = ha < 1 ? 1 : ha; + kb.ab = (!Kb || Q.wa) + 0; + } + for (var Ia = ca, Bb = 8 * Q.Ja * Q.r, Qb = Q.ca, Ub = Q.da + 16 * Q.i + 16 * Q.Ja * Q.H, Wb = Q.aa, Xb = Q.ba + 8 * Q.i + Bb, Yb = Q.ra, Zb = Q.sa + 8 * Q.i + Bb, Ia = 0; Ia < 16; ++Ia) N(Qb, Ub + Ia * Q.H, Q.Ea, +Tc + Ia * f, 16); + for (Ia = 0; Ia < 8; ++Ia) N(Wb, Xb + Ia * Q.r, Q.Ea, +Uc + Ia * f, 8), N(Yb, Zb + Ia * Q.r, Q.Ea, +he + Ia * f, 8); + } + const K = a; + const I = b; + var cc = 1; + const eb = K.oa; + if (K.qb) { + const nb = K.rc; + var cc = cc & WebPWorkerSync(nb); + $(nb.a == OK); + if (cc) { + eb.N = I; + eb.ha = K.Ja; + eb.d = K.d; + eb.W = K.W; + if (eb.W) { + const hc = eb.M; + eb.M = K.M; + K.M = hc; + } + WebPWorkerLaunch(nb); + ++K.Ja == K.jb && (K.Ja = 0); + } + } else { + eb.d = K.d; + eb.W = K.W; + b: { + let Hb = 1; + const rb = K.oa; + const ib = uc[K.A]; + const yb = ib * K.H; + const dc = parseInt(ib / 2) * K.r; + const Ib = 16 * rb.ha * K.H; + const jb = 8 * rb.ha * K.r; + const Jb = K.ca; + const Lb = K.da - yb + Ib; + const Ob = K.aa; + const Pb = K.ba - dc + jb; + const Rb = K.ra; + const Sb = K.sa - dc + jb; + const jc = rb.d == 0; + const Tb = (rb.d >= K.hb - 1) + 0; + var ra = 16 * rb.d; + let fb = 16 * (rb.d + 1); + if (rb.W) { + const pc = K; + let wc = s; + const kc = pc.oa.d; + $(pc.oa.W); + for (wc = pc.lb; wc < pc.wb; ++wc) { + const Na = pc; + const ec = wc; + const Vb = kc; + const xc = Na.oa; + const gb = Na.H; + const fc = xc.M[1 + ec]; + const sb = Na.ca; + const tb = Na.da + 16 * xc.ha + * gb + 16 * ec; + const Gb = fc.zc; + const hb = fc.yc; + const Ja = 2 * Gb + hb; + if (Gb != 0) { + if (Na.A == 1) ec > 0 && ae(sb, tb, gb, Ja + 4), fc.ab && ce(sb, tb, gb, Ja), Vb > 0 && $d(sb, tb, gb, Ja + 4), fc.ab && be(sb, tb, gb, Ja); + else { + const gc = Na.r; + const yc = Na.aa; + const zc = Na.ba + 8 * xc.ha * gc + 8 * ec; + const Ac = Na.ra; + const Bc = Na.sa + 8 * xc.ha * gc + 8 * ec; + const ub = Na.Ac.fb ? Gb >= 40 ? 2 : Gb >= 15 ? 1 : 0 : Gb >= 40 ? 3 : Gb >= 20 ? 2 : Gb >= 15 ? 1 : 0; + ec > 0 && (Td(sb, tb, gb, Ja + 4, hb, ub), Vd(yc, zc, Ac, Bc, gc, Ja + 4, hb, ub)); + fc.ab && (Xd(sb, tb, gb, Ja, hb, ub), Zd(yc, zc, Ac, Bc, gc, Ja, hb, ub)); + Vb > 0 && (Sd(sb, tb, gb, Ja + 4, hb, ub), Ud(yc, zc, Ac, Bc, gc, Ja + 4, hb, ub)); + fc.ab && (Wd(sb, tb, gb, + Ja, hb, ub), Yd(yc, zc, Ac, Bc, gc, Ja, hb, ub)); + } + } + } + } + if (I.put) { + jc ? (I.y = K.ca, I.D = K.da + Ib, I.c = K.aa, I.B = K.ba + jb, I.S = K.ra, I.C = K.sa + jb) : (ra -= ib, I.y = Jb, I.D = Lb, I.c = Ob, I.B = Pb, I.S = Rb, I.C = Sb); + Tb || (fb -= ib); + fb > I.K && (fb = I.K); + if (K.Ga != p && ra < fb && (ra == 0 ? (I.p = qd(K, ra, fb - ra), I.q = 0) : I.q = qd(K, ra, fb - ra), I.p == p)) { + cc = Y(K, W, 'Could not decode alpha data.'); + break b; + } + if (ra < I.k) { + const qc = I.k - ra; + var ra = I.k; + $(!(qc & 1)); + I.D += K.H * qc; + I.B += K.r * (qc >> 1); + I.C += K.r * (qc >> 1); + I.p != p && (I.q += I.width * qc); + } + ra < fb && (I.D += I.t, I.B += I.t >> 1, I.C += I.t >> 1, I.p != p && (I.q += I.t), + I.w = ra - I.k, I.m = I.Ka - I.t, I.h = fb - ra, Hb = I.put(I)); + } + rb.ha + 1 == K.jb && !Tb && (N(K.ca, K.da - yb, Jb, Lb + 16 * K.H, yb), N(K.aa, K.ba - dc, Ob, Pb + 8 * K.r, dc), N(K.ra, K.sa - dc, Rb, Sb + 8 * K.r, dc)); + cc = Hb; + } + } + if (!cc) { + c = Y(a, 'VP8_STATUS_USER_ABORT', 'Output aborted.'); + break a; + } + } + let Cb; + if (!(Cb = a.qb && !WebPWorkerSync(a.rc))) { + let Db; + if (Db = a.fc > 0) $(a), $(a.fc > 0), Db = !1; + Cb = Db; + } + c = Cb ? 0 : 1; + } + } + const lc = c; + b.Pb && b.Pb(b); + c = lc & 1; + } + if (!c) return ke(a), 0; + a.za = 0; + return c; + } + + function ke(a) { + a != p && (a.ib && (a.ib = 0), a.ib = p, a.Gb = 0, a.za = 0); + } + + function Aa(a, b) { + return a + (1 << b) - 1 >> b; + } + + function hc(a, b, c, d, e) { + const g = vb[c] + wb[b] >> ea; + b = xb[b]; + d[e + 0] = ia[a + Za[c] - J]; + d[e + 1] = ia[a + g - J]; + d[e + 2] = ia[a + b - J]; + } + + function le(a, b, c, d, e) { + const g = vb[c] + wb[b] >> ea; + b = xb[b]; + d[e + 0] = ia[a + Za[c] - J] & 248 | ia[a + g - J] >> 5; + d[e + 1] = ia[a + g - J] << 3 & 224 | ia[a + b - J] >> 3; + } + + function me(a, b, c, d, e) { + d[e + 0] = 255; + hc(a, b, c, d, e + 1); + } + + function ne(a, b, c, d, e) { + const g = xb[b]; + d[e + 0] = Hb[a + Za[c] - J] << 4 | Hb[a + (vb[c] + wb[b] >> ea) - J]; + d[e + 1] = 15 | Hb[a + g - J] << 4; + } + + function Vc(a, b, c, d, e) { + const g = Za[c]; + c = vb[c] + wb[b] >> ea; + d[e + 0] = ia[a + xb[b] - J]; + d[e + 1] = ia[a + c - J]; + d[e + 2] = ia[a + g - J]; + } + + function oe(a, b, c, d, e) { + Vc(a, b, c, d, e); + d[e + 3] = 255; + } + + function pe(a, b, c, d, e) { + hc(a, b, c, d, e); + d[e + 3] = 255; + } + + function ib(a, b, c) { + a[b] = ((((a[b] & 4278255360) >>> 0) + ((c & 4278255360) >>> 0) & 4278255360) >>> 0 | (a[b] & 16711935) + (c & 16711935) & 16711935) >>> 0; + } + + function ka(a, b) { + return (((a ^ b) & 4278124286) >>> 1) + ((a & b) >>> 0) >>> 0; + } + + function $a(a) { + return a < 256 && a > 0 ? a : a <= 0 ? 0 : ~a >> 24 & 255; + } + + function yb(a, b) { + return $a(a + parseInt((a - b) / 2, 10)); + } + + function Wc() { + return qe; + } + + function Xc(a, b) { + a &= 255; + b &= 255; + a > 127 && (a -= 256); + b > 127 && (b -= 256); + return a * b >>> 5; + } + + function re(a, + b, c, d, e, g, k) { + var h = s; + const n = 8 >> a.n; + const l = a.U; + const f = a.u; + if (n < 8) { + a = (1 << a.n) - 1; + for (var t = (1 << n) - 1, h = b; h < c; ++h) { + b = 0; + for (var q = s, q = 0; q < l; ++q) (q & a) == 0 && (b = d[e++] >> 8 & 255), g[k++] = f[b & t], b >>= n; + } + } else for (h = b; h < c; ++h) for (q = 0; q < l; ++q) g[k++] = f[d[e++] >> 8 & 255]; + } + + function se(a, b, c, d, e) { + for (c = b + c; b < c;) { + const g = a[b++]; + d[e++] = g >> 16 & 255; + d[e++] = g >> 8 & 255; + d[e++] = g >> 0 & 255; + d[e++] = g >> 24 & 255; + } + } + + function te(a, b, c, d, e) { + for (c = b + c; b < c;) { + const g = a[b++]; + d[e++] = g >> 16 & 240 | g >> 12 & 15; + d[e++] = g >> 0 & 240 | g >> 28 & 15; + } + } + + function Ib(a, b, c, d, e) { + for (c = b + c; b < c;) { + const g = a[b++]; + d[e++] = g >> 24 & 255; + d[e++] = g >> 16 & 255; + d[e++] = g >> 8 & 255; + d[e++] = g >> 0 & 255; + } + } + + function ue(a, b, c, d) { + if (T(a, 8) != ve) return 0; + b[0] = T(a, we) + 1; + c[0] = T(a, we) + 1; + d[0] = T(a, 1); + T(a, Wf); + return 1; + } + + function xe(a, b) { + let c = s; + if (a < 4) return a + 1; + c = a - 2 >> 1; + return (2 + (a & 1) << c) + T(b, c) + 1; + } + + function Oa(a, b) { + if (b.Q + 8 > b.ya) { + var c = a.Y; + var d = 0; + for ($(c != p); c[d].s != 0;) { + var e = c; + var g = b; + const k = g.T >> g.g & 1; + g.L ? g.fa = 1 : (++g.g, g.g >= 8 && Sb(g), g.Q == g.ya && g.g == 32 && (g.L = 1)); + d = d + e[d].s + k; + } + return c[d].kc; + } + c = a.Y; + d = 0; + for ($(c != p); c[d].s != 0;) { + e = c, g = b.T >> b.g & 1, ++b.g, d = d + + e[d].s + g; + } + return c[d].kc; + } + + function zb(a, b) { + if (a != p) for (var c = s, d = s, c = 0; c < b; ++c) for (var e = a[c].va, d = 0; d < Yc; ++d) ja(e[d]); + } + + function ye(a, b, c) { + b = a.eb == 0 ? 0 : a.ac[a.bd + a.Ec * (c >> a.eb) + (b >> a.eb)]; + $(b < a.hc); + return a.Db[+b]; + } + + function ze(a, b, c, d) { + let e = a.Na; + const g = a.O; + const k = g + b; + var h = c; + var f = d; + d = a.Xa; + c = a.vb; + for (N(d, c, h, f, a.l * b); e-- > 0;) { + b = a.nc[e]; + let l = g; + var m = k; + var t = h; + var q = f; + var f = d; + var h = c; + $(l < m); + $(m <= b.Vb); + switch (b.Qc) { + case Ae: + t = 0; + for (b = h + (m - l) * b.U; h < b;) { + var m = f; + var q = h; + var r = m[q] >> 8 & 255; + var u = (m[q] & 16711935) >>> 0; + var u = u + (r << 16 | r); + var u = u & 16711935; + f[h++] = ((m[q] & 4278255360) + >>> 0 | u) >>> 0; + l == 32 && t++; + } + break; + case Be: + var v = b; + var C = l; + var t = m; + var q = f; + var r = h; + var u = v.U; + if (C == 0) { + var A = s; + ib(q, r, qe); + for (A = 1; A < u; ++A) ib(q, r + A, q[r + A - 1]); + r += u; + ++C; + } + for (var z = (1 << v.n) - 1, Ha = Aa(u, v.n), w = v.u, v = +(C >> v.n) * Ha; C < t;) { + var y = w; + var B = v; + let G = p; + ib(q, r, q[r - u + 0]); + G = Ce[y[B++] >> 8 & 15]; + for (A = 1; A < u; ++A) { + let F = E; + (A & z) == 0 && (G = Ce[y[B++] >> 8 & 15]); + F = G(q[r + A - 1], q, r + A - u); + ib(q, r + A, F); + } + r += u; + ++C; + (C & z) == 0 && (v += Ha); + } + m != b.Vb && (b = b.U, N(f, h - b, f, h + (m - l - 1) * b, b)); + break; + case De: + t = b.U; + q = (1 << b.n) - 1; + r = Aa(t, b.n); + u = b.u; + for (b = +(l >> b.n) * r; l < m;) { + A = u; + C = b; + z = M(Xf); + Ha = s; + for (Ha = 0; Ha < t; ++Ha) (Ha & q) == 0 && (w = A[C++], v = z, v.Cc = w >> 0 & 255, v.Bc = w >> 8 & 255, v.Kc = w >> 16 & 255), w = f[h + Ha], v = w >>> 8, y = w >>> 16, B = w, y += Xc(z.Cc, v), y &= 255, B += Xc(z.Bc, v), B += Xc(z.Kc, y), B &= 255, f[h + Ha] = (w & 4278255360 | y << 16 | B) >>> 0; + h += t; + ++l; + (l & q) == 0 && (b += r); + } + break; + case Ee: + t == f && b.n > 0 ? (t = (m - l) * Aa(b.U, b.n), q = h + (m - l) * b.U - t, memmove(f, q, f, h, t), re(b, l, m, f, q, f, h)) : re(b, l, m, t, q, f, h); + } + h = d; + f = c; + } + } + + function Yf(a, b) { + var c = a.V; + var d = a.Ha + a.l * a.O; + var e = b - a.O; + if (!(e <= 0)) { + ze(a, e, c, d); + var g = a.N; + var c = a.Xa; + let k = [a.vb]; + var d = a.O; + var e = b; + var h = k; + var f = g.width; + $(d < e); + $(g.t < g.Ka); + e > g.K && (e = g.K); + if (d < g.k) { + var l = g.k - d; + var d = g.k; + h[0] += f * l; + } + d >= e ? d = 0 : (h[0] += g.t, g.w = d - g.k, g.m = g.Ka - g.t, g.h = e - d, d = 1); + if (d) { + k = k[0]; + d = a.Ib; + e = g.width; + if (d.J < ua) { + var m = d.c.RGBA; + var h = m.ma; + let t = m.Sa + a.xa * m.f; + if (g.I) c = EmitRescaledRows(a, c, k, e, g.h, h, t, m.f); + else { + for (var f = d.J, l = g.m, g = g.h, m = m.f, q = g; q-- > 0;) { + const r = c; + let u = k; + let v = l; + const C = h; + let A = t; + switch (f) { + case Qa: + for (v = u + v; u < v;) { + var z = r[u++]; + C[A++] = z >> 16 & 255; + C[A++] = z >> 8 & 255; + C[A++] = z >> 0 & 255; + } + break; + case jb: + se(r, u, v, C, A); + break; + case Ob: + se(r, u, v, C, A); + WebPApplyAlphaMultiply(C, 0, v, + 1, 0); + break; + case Zc: + for (v = u + v; u < v;) z = r[u++], C[A++] = z >> 0 & 255, C[A++] = z >> 8 & 255, C[A++] = z >> 16 & 255; + break; + case Pa: + Ib(r, u, v, C, A); + break; + case Pb: + Ib(r, u, v, C, A); + WebPApplyAlphaMultiply(C, 0, v, 1, 0); + break; + case Ab: + Ib(r, u, v, C, A); + break; + case Bb: + Ib(r, u, v, C, A); + WebPApplyAlphaMultiply(C, 1, v, 1, 0); + break; + case kb: + te(r, u, v, C, A); + break; + case Qb: + te(r, u, v, C, A); + WebPApplyAlphaMultiply4444(C, v, 1, 0); + break; + case Fe: + for (v = u + v; u < v;) z = r[u++], C[A++] = z >> 16 & 248 | z >> 13 & 7, C[A++] = z >> 5 & 224 | z >> 3 & 31; + break; + default: + $(0); + } + k += e; + t += m; + } + c = g; + } + a.xa += c; + } else { + a.xa = g.I ? EmitRescaledRowsYUVA(a, c, k, e, g.h) : EmitRowsYUVA(a, c, k, e, g.m, g.h); + } + $(a.xa <= d.height); + } + a.O = b; + $(a.O <= a.v); + } + } + + function lc(a, b, c, d, e, g) { + let k = 1; + let h = 0; + let f = 0; + const l = a.o; + const m = a.cb; + let t = m.Db; + let q = c; + let r = c; + c += d * e; + e = Ba + Ge; + const u = e + m.xb; + const v = m.xb > 0 ? m.Yb : p; + const C = m.Dc; + let A = !1; + $(t != p); + for (; !l.L && q < c;) { + let z = s; + A || ((h & C) == 0 && (t = ye(m, h, f)), Da(l), z = Oa(t.va[Zf], l)); + if (z < Ba || A) { + if (!A) { + var w = k = A = s; + var y = s; + Da(l); + A = Oa(t.va[$f], l); + k = z; + Da(l); + w = Oa(t.va[ag], l); + Da(l); + y = Oa(t.va[bg], l); + b[q] = (y << 24 >>> 0) + (A << 16) + (k << 8) + w; + } + A = !1; + ++q; + ++h; + if (h >= d && (h = 0, ++f, g != p && f + % $c == 0 && g(a, f), v != p)) for (; r < q;) k = b[r++], v.ea[ad * k >>> v.bb] = k; + } else if (z < e) { + w = w = s; + k = xe(z - Ba, l); + z = Oa(t.va[cg], l); + Da(l); + w = xe(z, l); + w > He ? w -= He : (z = dg[w - 1], z = (z >> 4) * d + (8 - (z & 15)), w = z >= 1 ? z : 1); + z = s; + for (z = 0; z < k; ++z) b[q + z] = b[q + z - w]; + q += k; + for (h += k; h >= d;) h -= d, ++f, g != p && f % $c == 0 && g(a, f); + if (q < c && (t = ye(m, h, f), v != p)) for (; r < q;) k = b[r++], v.ea[ad * k >>> v.bb] = k; + } else if (z < u) { + A = z - e; + for ($(v != p); r < q;) z = b[r++], v.ea[ad * z >>> v.bb] = z; + z = b; + w = q; + y = v; + $(A <= -1 >>> y.bb); + z[w] = y.ea[A]; + A = !0; + continue; + }(k = !l.fa) || End; + } + g != p && g(a, f); + l.fa || !k || l.L && q < c ? (k = 0, a.a = !l.L ? W : Ie) : q == c && (a.Ob = Db); + return k; + } + + function bd(a) { + $(a); + a.ac = p; + zb(a.Db, a.hc); + const b = a.Yb; + b != p && (b.ea = p, b.ea = p); + $(a); + } + + function sd() { + const a = M(eg); + if (a == p) return p; + a.a = L; + a.Wa = cd; + a.Ob = cd; + return a; + } + + function sa(a) { + let b = s; + if (a != p) { + bd(a.cb); + a.V = p; + a.V = p; + for (b = 0; b < a.Na; ++b) { + const c = a.nc[b]; + c.u = p; + c.u = p; + } + a.Na = 0; + a.Ub = 0; + a.Mc = p; + a.Mc = p; + a.Ib = p; + } + } + + function Ka(a, b, c, d, e) { + var g = 1; + a = [a]; + b = [b]; + for (var k = d.o, h = d.cb, f = p, l = p, l = 0; ;) { + if (c) { + for (; g && T(k, 1);) { + var m = a; + var t = b; + var q = d; + var r = 1; + var u = q.o; + var g = q.nc[q.Na]; + var v = T(u, 2); + if (q.Ub & 1 << v) g = 0; + else { + q.Ub + |= 1 << v; + g.Qc = v; + g.U = m[0]; + g.Vb = t[0]; + g.u = [p]; + g.b = 0; + ++q.Na; + $(q.Na <= Je); + switch (v) { + case Be: + case De: + g.n = T(u, 3) + 2; + r = Ka(Aa(g.U, g.n), Aa(g.Vb, g.n), 0, q, g.u); + break; + case Ee: + t = T(u, 8) + 1; + r = t > 16 ? 0 : t > 4 ? 1 : t > 2 ? 2 : 3; + m[0] = Aa(g.U, r); + g.n = r; + if (m = r = Ka(t, 1, 0, q, g.u)) { + if (m = t, q = g, r = s, t = 1 << (8 >>> q.n) >>> 0, u = Array(t), u == p) m = 0; + else { + var v = q.u[0]; + var C = q.b; + u[0] = q.u[0][q.b + 0]; + for (r = 1; r < m; ++r) u[r] = ((((v[C + r] & 4278255360) >>> 0) + ((u[r - 1] & 4278255360) >>> 0) & 4278255360) >>> 0 | (v[C + r] & 16711935) + (u[r - 1] & 16711935) & 16711935) >>> 0; + for (; r < t; ++r) u[r] = 0; + q.u[0] = p; + q.b = p; + q.u[0] = u; + q.b = 0; + m = 1; + } + } + r = m; + break; + case Ae: + break; + default: + $(0); + } + g.u = g.u[0]; + g = r; + } + } + } + if (g && T(k, 1) && (l = T(k, 4), g = l >= 1 && l <= fg, !g)) { + d.a = W; + break; + } + if (g) { + a: { + var g = d; + var A = a[0]; + var z = b[0]; + var m = l; + var C = v = s; + var C = g.o; + var q = g.cb; + var r = [p]; + var t = p; + var u = 1; + if (c && T(C, 1)) { + var v = T(C, 3) + 2; + var A = Aa(A, v); + var w = Aa(z, v); + var z = A * w; + if (!Ka(A, w, 0, g, r)) { + g.a = W; + zb(t, u); + g = 0; + break a; + } + r = r[0]; + q.eb = v; + for (v = 0; v < z; ++v) A = r[v] >>> 8 & 65535, r[v] = A, A >= u && (u = A + 1); + } + if (C.fa) zb(t, u), g = 0; + else if ($(u <= 65536), t = ld(u, gg), t == p) g.a = cb, zb(t, u), g = 0; + else { + for (v = 0; v < u; ++v) { + z = t[v].va; + for (C = 0; C < Yc; ++C) { + A = hg[C]; + C == 0 && m > 0 && (A += 1 << m); + b: { + const y = A; + var A = g; + const G = z[+C]; + var B = 0; + var w = A.o; + if (T(w, 1)) { + var F = Array(2); + var D = Array(2); + var L = Array(2); + var B = T(w, 1) + 1; + var J = T(w, 1); + F[0] = T(w, J == 0 ? 1 : 8); + D[0] = 0; + L[0] = B - 1; + B == 2 && (F[1] = T(w, 8), D[1] = 1, L[1] = B - 1); + c: { + var J = 0; + var H = s; + $(G != p); + $(L != p); + $(D != p); + $(F != p); + if (nd(G, B)) { + for (H = 0; H < B; ++H) { + if (D[H] != pd) { + if (F[H] < 0 || F[H] >= y) { + (J = J && ma(G)) || ja(G); + B = J; + break c; + } + if (!jc(G, F[H], D[H], L[H])) { + (J = J && ma(G)) || ja(G); + B = J; + break c; + } + } + }(J = (J = 1) && ma(G)) || ja(G); + B = J; + } else B = 0; + } + } else { + B = s; + D = []; + F = T(w, 4) + 4; + if (F > Ke) { + A.a = W; + A = 0; + break b; + } + L = Array(y); + if (L == p) { + A.a = cb; + A = 0; + break b; + } + for (B = 0; B < F; ++B) D[ig[B]] = T(w, 3); + c: { + var B = A; + var O = D; + var D = y; + var F = L; + var J = 0; + var H = B.o; + let S = s; + let V = s; + let Y = jg; + const Z = M(Le); + if (od(Z, O, Ke)) { + if (T(H, 1)) { + if (S = 2 + 2 * T(H, 3), V = 2 + T(H, S), V > D) { + B.a = W; + ja(Z); + B = J; + break c; + } + } else V = D; + for (S = 0; S < D;) { + var R = s; + if (V-- == 0) break; + Da(H); + R = Oa(Z, H); + if (R < Me) F[S++] = R, R != 0 && (Y = R); + else { + var O = R == kg; + var R = R - Me; + const ea = lg[R]; + var R = T(H, mg[R]) + ea; + if (S + R > D) { + B.a = W; + ja(Z); + B = J; + break c; + } + for (O = O ? Y : 0; R-- > 0;) F[S++] = O; + } + } + J = 1; + ja(Z); + B = J; + } else B.a = W, B = 0; + } + B && (B = od(G, L, y)); + }(B = B && !w.fa) ? A = 1 : (A.a = W, A = 0); + } + if (!A) { + zb(t, u); + g = 0; + break a; + } + } + } + q.ac = r; + q.hc = u; + q.Db = t; + g = 1; + } + } + } + if (!g) { + d.a = W; + break; + } + if (l > 0) { + if (h.xb = 1 << l, m = h.Yb, q = 1 << l, $(m != p), $(l > 0), m.ea = U(q, 0), m.ea == p ? l = 0 : (m.bb = 32 - l, l = 1), !l) { + d.a = cb; + g = 0; + break; + } + } else h.xb = 0; + l = d; + m = a[0]; + q = b[0]; + r = l.cb; + t = r.eb; + l.l = m; + l.v = q; + r.Ec = Aa(m, t); + r.Dc = t == 0 ? -1 : (1 << t) - 1; + if (c) { + d.Ob = Cb; + break; + } + f = Array(a * b); + l = 0; + if (f == p) { + d.a = cb; + g = 0; + break; + } + g = (g = lc(d, f, l, a, b, p)) && !k.fa; + break; + } + g ? (e != p ? e[0] = f : ($(f == p), $(c)), c || bd(h)) : (bd(h), d.a == W && d.o.L && (d.a = Ie)); + return g; + } + + function xd(a, b) { + const c = a.l * a.v; + const d = c + b + b * $c; + $(a.l <= b); + a.V = Array(d); + a.Ha = 0; + if (a.V == p) { + return a.Xa = p, a.a = cb, 0; + } + a.Xa = a.V; + a.vb = a.Ha + c + b; + return 1; + } + + function mf(a, b) { + var c = b - a.O; + var d = a.V; + var e = a.Ha + a.l * a.O; + if (!(c <= 0)) { + ze(a, c, d, e); + for (var e = a.N.width, c = e * c, d = a.N.ka, e = a.N.fd + e * a.O, g = a.Xa, k = a.vb, h = s, h = 0; h < c; ++h) d[e + h] = g[k + h] >>> 8 & 255; + a.O = a.xa = b; + } + } + + function ng(a, b) { + const c = [s]; + const d = [s]; + const e = [s]; + if (a == p) return 0; + if (b == p) return a.a = ta, 0; + a.N = b; + a.a = L; + Rb(a.o, b.data, b.b, b.e); + if (!ue(a.o, c, d, e)) return a.a = W, sa(a), $(a.a != L), 0; + a.Ob = cd; + b.width = c[0]; + b.height = d[0]; + a.Wa = Cb; + return !Ka(c[0], d[0], 1, a, p) ? (sa(a), $(a.a != L), 0) : 1; + } + + function og(a) { + let b = p; + let c = p; + if (a == p) return 0; + b = a.N; + $(b != p); + c = b.ka; + $(c != p); + a.Ib = c.j; + a.Hc = c.Hc; + $(a.Ib != p); + if (!Ne(c.Qa, b, Pa)) return a.a = ta, sa(a), $(a.a != L), 0; + if (!xd(a, b.width) || b.I && !AllocateAndInitRescaler(a, b)) return sa(a), $(a.a != L), 0; + a.Wa = Db; + if (!lc(a, a.V, a.Ha, a.l, a.v, Yf)) return sa(a), $(a.a != L), 0; + c.ec = a.xa; + sa(a); + return 1; + } + + function wa(a, b) { + return a < 0 ? 0 : a > b ? b : a; + } + + function ab(a, b, c, d, e, g, k, h, f, l, m, t, q, r, u, v, C, w, z) { + let y; const G = C - 1 >> 1; + let F = e[g + 0] | k[h + 0] << 16; + let B = f[l + 0] | m[t + 0] << 16; + if (a) { + var D = 3 * F + B + 131074 >> 2; + w(a[b + 0], D & 255, D >> 16, q, r); + } + c && (D = 3 * B + F + 131074 >> 2, w(c[d + 0], D & 255, D >> 16, u, v)); + for (y = 1; y <= G; ++y) { + const J = e[g + y] | k[h + y] << 16; + const L = f[l + y] | m[t + y] << 16; + var D = F + J + B + L + 524296; + const O = D + 2 * (J + B) >> 3; + const H = D + 2 * (F + L) >> 3; + a && (D = O + F >> 1, F = H + J >> 1, w(a[b + 2 * y - 1], D & 255, D >> 16, q, r + (2 * y - 1) * z), w(a[b + 2 * y - 0], F & 255, F >> 16, q, r + (2 * y - 0) * z)); + c && (D = H + B >> 1, F = O + L >> 1, w(c[d + 2 * y - 1], D & 255, D >> 16, u, v + (2 * y - 1) * z), w(c[d + 2 * y + 0], F & 255, F >> 16, u, v + (2 * y + 0) * z)); + F = J; + B = L; + } + C & 1 || (a && (D = 3 * F + B + 131074 >> 2, w(a[b + C - 1], D & 255, D >> 16, q, r + (C - 1) * z)), c && (D = 3 * B + F + 131074 >> 2, w(c[d + C - 1], D & 255, D >> 16, u, v + (C - 1) * z))); + } + + function pg(a, + b, c, d, e, g, k, h, f, l, m, t, q, r, u, v, w) { + ab(a, b, c, d, e, g, k, h, f, l, m, t, q, r, u, v, w, hc, 3); + } + + function qg(a, b, c, d, e, g, k, h, f, l, m, t, q, r, u, v, w) { + ab(a, b, c, d, e, g, k, h, f, l, m, t, q, r, u, v, w, Vc, 3); + } + + function Oe(a, b, c, d, e, g, k, h, f, l, m, t, q, r, u, v, w) { + ab(a, b, c, d, e, g, k, h, f, l, m, t, q, r, u, v, w, pe, 4); + } + + function Pe(a, b, c, d, e, g, k, h, f, l, m, t, q, r, u, v, w) { + ab(a, b, c, d, e, g, k, h, f, l, m, t, q, r, u, v, w, oe, 4); + } + + function Qe(a, b, c, d, e, g, k, h, f, l, m, t, q, r, u, v, w) { + ab(a, b, c, d, e, g, k, h, f, l, m, t, q, r, u, v, w, me, 4); + } + + function Re(a, b, c, d, e, g, k, h, f, l, m, t, q, r, u, v, w) { + ab(a, b, c, d, e, g, k, h, + f, l, m, t, q, r, u, v, w, ne, 2); + } + + function rg(a, b, c, d, e, g, k, h, f, l, m, t, q, r, u, v, w) { + ab(a, b, c, d, e, g, k, h, f, l, m, t, q, r, u, v, w, le, 2); + } + + function Ca(a, b, c, d, e, g, k, h, f, l, m, t, q, r, u) { + let v; + for (v = 0; v < q - 1; v += 2) r(a[b + 0], e[g + 0], k[h + 0], f, l), r(a[b + 1], e[g + 0], k[h + 0], f, l + u), r(c[d + 0], e[g + 0], k[h + 0], m, t), r(c[d + 1], e[g + 0], k[h + 0], m, t + u), b += 2, d += 2, g++, h++, l += 2 * u, t += 2 * u; + v == q - 1 && (r(a[b + 0], e[g + 0], k[h + 0], f, l), r(c[d + 0], e[g + 0], k[h + 0], m, t)); + } + + function Se(a, b, c, d, e, g, k, f, n, l, m, t, q) { + Ca(a, b, c, d, e, g, k, f, n, l, m, t, q, pe, 4); + } + + function Te(a, b, c, d, e, g, k, f, n, l, + m, t, q) { + Ca(a, b, c, d, e, g, k, f, n, l, m, t, q, oe, 4); + } + + function Ue(a, b, c, d, e, g, k, f, n, l, m, t, q) { + Ca(a, b, c, d, e, g, k, f, n, l, m, t, q, me, 4); + } + + function Ve(a, b, c, d, e, g, k, f, n, l, m, t, q) { + Ca(a, b, c, d, e, g, k, f, n, l, m, t, q, ne, 2); + } + + function sg(a, b, c, d, e, g) { + for (; e-- > 0;) { + for (var k = a, f = b + (c ? 1 : 0), n = a, l = b + (c ? 0 : 3), m = s, m = 0; m < d; ++m) { + var t = n[l + 4 * m]; + if (t != 255) { + var t = 32897 * t; + let q = k; + let r = f + 4 * m + 0; + k[f + 4 * m + 0] * t >>> 23; + q[r] = ca; + q = k; + r = f + 4 * m + 1; + k[f + 4 * m + 1] * t >>> 23; + q[r] = ca; + q = k; + r = f + 4 * m + 2; + k[f + 4 * m + 2] * t >>> 23; + q[r] = ca; + } + } + b += g; + } + } + + function tg(a, b) { + const c = b.j.c.Va; + const d = c.y; + const e = c.D + a.w * c.F; + const g = c.c; + const k = c.B + (a.w >> 1) * c.nb; + const f = c.S; + const n = c.C + (a.w >> 1) * c.rb; + const l = a.m; + const m = a.h; + const t = parseInt((l + 1) / 2, 10); + const q = parseInt((m + 1) / 2, 10); + let r; + for (r = 0; r < m; ++r) N(d, e + r * c.F, a.y, a.D + r * a.F, l); + for (r = 0; r < q; ++r) N(g, k + r * c.nb, a.c, a.B + r * a.Da, t), N(f, n + r * c.rb, a.S, a.C + r * a.Da, t); + return a.h; + } + + function ug(a, b) { + var c = b.j; + const d = c.c.RGBA; + const e = d.ma; + let g = d.Sa + a.w * d.f; + const k = a.y; + let f = a.D; + const n = a.c; + let l = a.B; + const m = a.S; + let t = a.C; + var c = vg[c.J]; + const q = a.m; + const r = a.h - 1; + let u; + for (u = 0; u < r; u += 2) c(k, f, k, f + a.F, n, l, m, t, e, g, e, g + d.f, q), f += 2 * a.F, l += a.Da, t += a.Da, g += 2 * d.f; + u == r && c(k, f, k, f, n, l, m, t, e, g, e, g, q); + return a.h; + } + + function wg(a, b) { + let c = a.h; + const d = b.j.c.RGBA; + const e = d.ma; + let g = d.Sa + a.w * d.f; + const k = V[b.j.J]; + const f = a.y; + let n = a.D; + const l = a.c; + let m = a.B; + const t = a.S; + let q = a.C; + let r = b.Qb; + let u = b.Rb; + let v = b.lc; + let w = b.mc; + let A = a.w; + const z = a.w + a.h; + const y = a.m; + const D = parseInt((y + 1) / 2, 10); + A == 0 ? k(p, p, f, n, l, m, t, q, l, m, t, q, p, p, e, g, y) : (k(b.Sb, b.Tb, f, n, r, u, v, w, l, m, t, q, e, g - d.f, e, g, y), ++c); + for (; A + 2 < z; A += 2) r = l, u = m, v = t, w = q, m += a.Da, q += a.Da, g += 2 * d.f, n += 2 * a.F, k(f, n - a.F, f, n, r, u, v, w, l, m, t, q, e, g - d.f, e, g, y); + n += a.F; + a.k + z < a.K ? (N(b.Sb, b.Tb, f, n, 1 * y), N(b.Qb, b.Rb, l, m, 1 * D), N(b.lc, b.mc, t, q, 1 * D), c--) : z & 1 || k(f, n, p, p, l, m, t, q, l, m, + t, q, e, g + d.f, p, p, y); + return c; + } + + function xg(a, b) { + var c = a.p; + var d = a.q; + const e = b.j.c.Va; + const g = a.m; + const f = a.h; + const h = e.p; + let n = e.q + a.w * e.Fa; + var c = a.p; + var d = a.q; + let l = s; + if (c != p) for (l = 0; l < f; ++l) N(h, n, c, d, 1 * g), d += a.width, n += e.Fa; + else if (e.p != p) for (l = 0; l < f; ++l) jd(h, n, 255, g), n += e.Fa; + return 0; + } + + function We(a, b, c) { + let d = a.w; + c[0] = a.h; + a.Bb && (d == 0 ? --c[0] : (--d, b[0] -= a.width), a.k + a.w + a.h == a.K && (c[0] = a.K - a.k - d)); + return d; + } + + function yg(a, b) { + const c = a.p; + var d = [a.q]; + if (c != p) { + for (var e = a.m, g = b.j.J, f = g == Ab || g == Bb, h = b.j.c.RGBA, n = [s], l = We(a, d, n), d = d[0], m = h.ma, l = h.Sa + l * h.f, + t = l + (f ? 0 : 3), q = 255, r = s, u = s, u = 0; u < n[0]; ++u) { + for (r = 0; r < e; ++r) { + const v = c[d + r]; + m[t + 4 * r] = v; + q &= v; + } + d += a.width; + t += h.f; + } + q != 255 && F(g) && WebPApplyAlphaMultiply(m, l, f, e, n, h.f); + } + return 0; + } + + function zg(a, b) { + const c = a.p; + var d = [a.q]; + if (c != p) { + const e = a.m; + const g = b.j.J; + const f = b.j.c.RGBA; + const h = [s]; + var n = We(a, d, h); + var d = d[0]; + const l = f.ma; + var n = f.Sa + n * f.f; + let m = n + 1; + let t = 15; + let q = s; + for (j = 0; j < h[0]; ++j) { + for (q = 0; q < e; ++q) { + const r = c[d + q] >> 4; + l[m + 2 * q] = l[m + 2 * q] & 240 | r; + t &= r; + } + d += a.width; + m += f.f; + } + t != 15 && F(g) && WebPApplyAlphaMultiply4444(l, n, e, h, f.f); + } + return 0; + } + + function vd(a) { + let b = a.ka; + const c = b.j.J; + const d = c + < ua; + const e = c == jb || c == Pa || c == Ab || c == kb || c == Ra || F(c); + b.memory = p; + b.$a = p; + b.zb = p; + b.ad = p; + if (!Ne(b.Qa, a, e ? ua : Ra)) return 0; + if (a.I) { + if (!(d ? InitRGBRescaler(a, b) : InitYUVRescaler(a, b))) return alert('memory error #1'), 0; + } else { + if (d) { + if (b.$a = ug, a.Bb) { + const g = a.m + 1 >> 1; + const f = a.m + 2 * g; + let h; const + n = []; + for (h = 0; h < f; ++h) n.push(205); + n.push(0); + b.memory = n; + if (b.memory == p) return alert('memory error #2'), 0; + b.Sb = b.memory; + b.Tb = 0; + b.Qb = b.Sb; + b.Rb = b.Tb + a.m; + b.lc = b.Qb; + b.mc = b.Rb + g; + b.$a = wg; + V[Qa] = pg; + V[jb] = Oe; + V[Zc] = qg; + V[Pa] = Pe; + V[Ab] = Qe; + V[kb] = Re; + V[Fe] = rg; + } + } else { + b.$a = tg; + } + e && (F(c) && (WebPApplyAlphaMultiply = sg, V[Ob] = Oe, V[Pb] = Pe, V[Bb] = Qe, V[Qb] = Re), b.zb = c == kb || c == Qb ? zg : d ? yg : xg); + } + if (d && !Xe) { + for (a = 0; a < 256; ++a) Za[a] = 89858 * (a - 128) + Jb >> ea, wb[a] = -22014 * (a - 128) + Jb, vb[a] = -45773 * (a - 128), xb[a] = 113618 * (a - 128) + Jb >> ea; + for (a = J; a < dd; ++a) b = 76283 * (a - 16) + Jb >> ea, ia[a - J] = wa(b, 255), Hb[a - J] = wa(b + 8 >> 4, 15); + Xe = 1; + } + return 1; + } + + function ud(a) { + const b = a.ka; + let c = a.m; + const d = a.h; + $(!(a.w & 1)); + if (c <= 0 || d <= 0) return 0; + c = b.$a(a, b); + b.ec += c; + b.zb && b.zb(a, b); + return 1; + } + + function wd(a) { + a = a.ka; + a.memory = ''; + a.memory = p; + } + + function ed(a, + b) { + return a[b + 0] | a[b + 1] << 8 | a[b + 2] << 16; + } + + function Kb(a, b) { + return (ed(a, b) | a[b + 3] << 24) >>> 0; + } + + function Ye(a, b, c, d, e, g, f) { + var h = 0; + var n = [0]; + var l = 'VP8StatusCode'; + const m = M(Gc); + if (a == p || c[0] < Lb) return Z; + m.data = a; + m.b = [b[0]]; + m.e = [c[0]]; + m.na = [m.na]; + a: { + h = m.na; + $(a != p); + $(c != p); + $(h != p); + h[0] = 0; + if (c[0] >= Lb && !kd(a, b[0], 'RIFF', O)) { + if (kd(a, b[0] + 8, 'WEBP', O)) { + l = W; + break a; + } + var t = Kb(a, b[0] + O); + if (t < O + R) { + l = W; + break a; + } + h[0] = t; + b[0] += Lb; + c[0] -= Lb; + } else h[0] = 0; + l = L; + } + m.na = m.na[0]; + if (l != L) return l; + h = m.na > 0; + t = [0]; + a: if (l = R + fd, $(a != p), $(c != p), $(n != p), n[0] = 0, c[0] < R) l = Z; + else { + if (!kd(a, b[0], 'VP8X', O)) { + var q = s; + var r = s; + var u = E; + if (Kb(a, b[0] + O) != fd) { + l = W; + break a; + } + if (c[0] < l) { + l = Z; + break a; + } + u = Kb(a, b[0] + 8); + q = 1 + ed(a, b[0] + 12); + r = 1 + ed(a, b[0] + 15); + if (q * r >= Ag) { + l = W; + break a; + } + t != p && (t[0] = u); + d != p && (d[0] = q); + e != p && (e[0] = r); + b[0] += l; + c[0] -= l; + n[0] = 1; + } + l = L; + } + if (l != L) return l; + if (!h && n[0]) return W; + g != p && (g[0] = !!(t[0] & Bg)); + if (n && f == p) return L; + if (c < O) return Z; + if (h && n[0] || !h && !n[0] && !kd(a, b[0], 'ALPH', O)) { + m.$ = [m.$]; + m.G = [m.G]; + m.pa = [m.pa]; + a: { + var n = m.na; + var h = m.$; + var t = m.G; + var l = m.pa; + var q = x; + var r = 0; + var u = Mb; + let v = O + R + fd; + $(a != p); + $(c != p); + q = a; + r = b[0]; + u = c[0]; + $(h != p); + $(l != p); + h[0] = p; + t[0] = p; + for (l[0] = 0; ;) { + let w = E; + let y = E; + b[0] = r; + c[0] = u; + if (u < R) { + l = Z; + break a; + } + w = Kb(q, r + O); + y = R + w + 1 & -2; + v += y; + if (n > 0 && v > n) { + l = W; + break a; + } + if (u < y) { + l = Z; + break a; + } + if (kd(q, r, 'ALPH', O)) { + if (!kd(q, r, 'VP8 ', O) || !kd(q, 'VP8L', O)) { + l = L; + break a; + } + } else h[0] = q, t[0] = r + R, l[0] = w; + r += y; + u -= y; + } + l = ca; + } + m.$ = m.$[0]; + m.G = m.G[0]; + m.pa = m.pa[0]; + if (l != L) return l; + } + m.ta = [m.ta]; + m.ia = [m.ia]; + a: if (n = m.na, h = m.ta, t = m.ia, r = !kd(a, b[0], 'VP8 ', O), l = !kd(a, b[0], 'VP8L', O), q = O + R, $(a != p), $(c != p), $(h != p), $(t != p), c[0] < R) l = Z; + else { + if (r || l) { + r = Kb(a, b[0] + O); + if (n >= q && r > n - q) { + l = W; + break a; + } + h[0] = r; + b[0] += R; + c[0] -= R; + t[0] = l; + } else t[0] = c >= 1 && a[b + 0] == ve, h[0] = c[0]; + l = L; + } + m.ta = m.ta[0]; + m.ia = m.ia[0]; + if (l != L) return l; + if (m.ta > Ze) return W; + if (m.ia) { + if (c[0] < $e) return Z; + n = b[0]; + h = c[0]; + d = d ? d[0] : p; + e = e ? e[0] : p; + t = g ? g[0] : p; + a == p || h < $e ? a = 0 : (l = [s], q = [s], r = [s], u = M(af), Rb(u, a, n, h), ue(u, l, q, r) ? (d != p && (d[0] = l[0]), e != p && (e[0] = q[0]), t != p && (t[0] = r[0]), a = 1) : a = 0); + } else { + if (c < bf) return Z; + n = b[0]; + h = c[0]; + d = d ? d[0] : p; + e = e ? e[0] : p; + !(a == p || h < bf) && h - 3 >= 3 && a[n + 3 + 0] == 157 && a[n + + 3 + 1] == 1 && a[n + 3 + 2] == 42 ? (h = a[n + 0] | a[n + 1] << 8 | a[n + 2] << 16, t = (a[n + 7] << 8 | a[n + 6]) & 16383, a = (a[n + 9] << 8 | a[n + 8]) & 16383, !(!(h & 1) + 0) || (h >> 1 & 7) > 3 || !(h >> 4 & 1) || h >> 5 >= m.ta ? a = 0 : (d && (d[0] = t), e && (e[0] = a), a = 1)) : a = 0; + } + if (!a) return W; + g != p && (g[0] |= m.$ != p); + f != p && (f[0] = m, f[0].offset = b[0] - f[0].b, $(b[0] - f[0].b < Ze), $(f[0].offset == f[0].e - c[0])); + return L; + } + + function Kd(a) { + $(a != p); + return Ye(a[0].data, a[0].b, a[0].e, p, p, p, a); + } + + function cf(a, b, c, d) { + let e = 'VP8StatusCode'; + const g = M(Vb); + let f = M(Gc); + f.data = a; + f.b = b; + f.e = c; + f.b = [f.b]; + f.e = [f.e]; + f = [f]; + e = Kd(f); + if (e + != L) return e; + f = f[0]; + f.b = f.b[0]; + f.e = f.e[0]; + $(d != p); + td(na); + g.data = f.data; + g.b = b + f.offset; + g.e = f.e - f.offset; + g.put = ud; + g.Mb = vd; + g.Pb = wd; + g.ka = d; + if (f.ia) { + a = sd(); + if (a == p) return cb; + ng(a, g) ? (e = zd(g.width, g.height, d.Qa, d.j), e == L && !og(a) && (e = a.a)) : e = a.a; + a != p && sa(a); + } else { + e = M(Cg); + e != p && (Gd(e), e.za = 0, e.Hb = 1); + a = e; + if (a == p) return cb; + a.qb = 0; + a.Ga = f.$; + a.G = f.G; + a.ub = f.pa; + Hd(a, g) ? (e = zd(g.width, g.height, d.Qa, d.j), e == L && !Mf(a, g) && (e = a.a)) : e = a.a; + a != p && ke(a); + } + e != L && (self || this).Yc(d.j); + return e; + } + + function lb(a, b, c, d, e) { + const g = { + value: 0, + }; + c = { + value: c, + }; + const f = M(df); + const h = M(gd); + f.j = h; + h.J = a; + const n = { + value: h.width, + }; + const l = { + value: h.height, + }; + let m; + m = c; + const t = M(ef); + hd(b, g, m, t) != L ? m = 0 : (n != p && (n.value = t.width), l != p && (l.value = t.height), m = 1); + if (!m) return p; + h.width = n.value; + h.height = l.value; + d != p && (d.value = h.width.value); + e != p && (e.value = h.height.value); + return cf(b, g.value, c.value, f) != L ? p : a < ua ? h.c.RGBA.ma : h.c.Va.y; + } + + function hd(a, b, c, d) { + if (d == p || a == p) return ta; + $(d != p); + d.tc = 0; + d.width = [d.width]; + d.height = [d.height]; + d.$b = [d.$b]; + return Ye(a, b, c, d.width, d.height, d.$b, p); + } + + function Ne(a, + b, c) { + const d = b.width; + const e = b.height; + let g = 0; + let f = 0; + let h = d; + let n = e; + b.Ua = a != p && a.Ua > 0; + if (b.Ua && (h = a.wc, n = a.vc, g = a.t, f = a.k, c < ua || (g &= -2, f &= -2), g < 0 || f < 0 || h <= 0 || n <= 0 || g + h > d || f + n > e)) return 0; + b.t = g; + b.k = f; + b.Ka = g + h; + b.K = f + n; + b.m = h; + b.h = n; + b.I = a != p && a.I > 0; + if (b.I) { + if (a.Ba <= 0 || a.Aa <= 0) return 0; + b.Ba = a.Ba; + b.Aa = a.Aa; + } + b.Za = a && a.Za; + b.Bb = a == p || !a.ed; + b.I && (b.Za = b.Ba < 3 * d / 4 && b.Aa < 3 * e / 4, b.Bb = 0); + return 1; + } + var na = 512; + var Qa = 0; + var jb = 1; + var Zc = 2; + var Pa = 3; + var Ab = 4; + var kb = 5; + var Fe = 6; + var Ob = 7; + var Pb = 8; + var Bb = 9; + var Qb = 10; + var ua = 11; + var Ra = 12; + var Cc = 13; + this.WEBP_CSP_MODE = this.Cd = { + nd: 0, + od: 1, + kd: 2, + ld: 3, + jd: 4, + pd: 5, + qd: 6, + rd: 7, + sd: 8, + md: 9, + }; + var gd = { + J: 'WEBP_CSP_MODE', + width: s, + height: s, + Fc: s, + c: { + RGBA: { + ma: x, + Sa: 0, + f: s, + size: Mb, + }, + Va: { + y: x, + c: x, + S: x, + p: x, + D: x, + B: x, + C: x, + q: x, + F: s, + nb: s, + rb: s, + Fa: s, + Wc: Mb, + Rc: Mb, + Uc: Mb, + Wb: Mb, + }, + }, + Ic: U(4, E), + Jb: p, + jc: x, + }; + var L = 0; + var cb = 1; + var ta = 2; + var W = 3; + var Hf = 4; + var Ie = 5; + var Nf = 6; + var Z = 7; + this.VP8StatusCode = this.td = { + xd: 0, + yd: 1, + vd: 2, + ud: 3, + Ad: 4, + zd: 5, + Bd: 6, + wd: 7, + }; + var ef = { + width: { + value: s, + }, + height: { + value: s, + }, + $b: { + value: s, + }, + tc: s, + Yd: s, + rotate: s, + be: s, + Ic: U(3, E), + }; + this.WebPGetFeatures = this.Md = function (a, b, c) { + let d = 'VP8StatusCode'; + na >>> 8 != na >>> 8 || c == p ? a = ta : (b = [b], d = hd(a, [0], b, c), a = d == Z ? W : d); + return a; + }; + const ff = { + Za: s, + ed: s, + Ua: s, + t: s, + k: s, + wc: s, + vc: s, + I: s, + Ba: s, + Aa: s, + ae: s, + Td: s, + Xd: s, + Ic: U(6, E), + }; + this.WebPDecoderConfig = this.Kd = { + input: M(ef), + j: M(gd), + options: M(ff), + }; + this.WebPInitDecoderConfig = this.Nd = function (a) { + na >>> 8 != na >>> 8 || a == p ? a = 0 : (a = a.input, $(a != p), a.tc = 0, a = 1); + return a; + }; + var Vb = { + width: s, + height: s, + w: s, + m: s, + h: s, + y: x, + c: x, + S: x, + D: 0, + B: 0, + C: 0, + F: s, + Da: s, + ka: 0, + put: 0, + Mb: 0, + Pb: 0, + Bb: s, + e: Mb, + data: x, + b: 0, + Za: s, + Ua: s, + t: s, + Ka: s, + k: s, + K: s, + I: s, + Ba: s, + Aa: s, + p: x, + q: 0, + }; + var df = { + j: M(gd), + Sb: x, + Qb: x, + lc: x, + Tb: 0, + Rb: 0, + mc: 0, + ec: s, + Qa: M(ff), + memory: 0, + $a: '(OutputFunc)', + zb: '(OutputFunc)', + ad: '(OutputRowFunc)', + }; + var Gc = { + data: x, + b: x, + e: Mb, + offset: Mb, + $: p, + G: x, + pa: Mb, + ta: Mb, + na: Mb, + ia: s, + }; + var Fc = { + qa: x, + Ia: p, + Pd: x, + Ab: s, + la: E, + Z: E, + gc: s, + }; + var af = { + T: bb, + qa: x, + Ia: x, + ya: Mb, + Q: Mb, + g: s, + L: s, + fa: s, + }; + var gf = 25; + var hf = [0, 1, 3, 7, 15, 31, 63, 127, 255, 511, 1023, 2047, 4095, 8191, 16383, 32767, 65535, 131071, 262143, 524287, 1048575, 2097151, 4194303, 8388607, 16777215]; + var bf = 10; + var ve = 47; + var we = 14; + var Wf = 3; + var $e = 5; + var fg = 11; + var Yc = 5; + var qe = 4278190080; + var jg = 8; + var Tb = 15; + var Ba = 256; + var Ge = 24; + var Je = 4; + var Be = 0; + var De = 1; + var Ae = 2; + var Ee = 3; + var Ub = 1; + var kc = 0; + var kf = 1; + var rd = 1; + var O = 4; + var R = 8; + var Lb = 12; + var fd = 10; + var Bg = 16; + var Ag = 1 * Math.pow(2, 32); + var Ze = -1 - R - 1 >>> 0; + var jf = { + kc: s, + s, + }; + var Le = { + Y: 'HuffmanTreeNode*', + gb: s, + Pa: s, + }; + var pd = -1; + const Dg = { + ea: E, + bb: s, + }; + var ad = 506832829; + var $b = 0; + var ge = $b; + var fe = 2; + var ee = 3; + var de = 1; + var Ef = 4; + var Df = 5; + var Cf = 6; + var Ld = 3; + var xa = 4; + var Hc = 4; + var Gf = 4; + var Md = 4; + var Nd = 8; + var Kc = 3; + var Lc = 11; + var f = 32; + var Pf = 17 * f + 9 * f; + var Tc = 1 * f + 8; + var Uc = Tc + 16 * f + f; + var he = Uc + 16; + var Id = { + fb: x, + Jc: x, + Nc: x, + Ra: E, + }; + var Jd = { + l: 0, + v: 0, + gd: x, + hd: x, + uc: x, + $c: x, + }; + const Eg = { + pb: s, + ob: s, + tb: s, + Kb: U(xa, 0), + Cb: U(xa, 0), + }; + const Fg = { + Ta: U(Ld, x), + z: md([Md, Nd, Kc, Lc], x), + }; + const Gg = { + Oc: s, + Fb: s, + kb: s, + oc: s, + Lc: U(Hc, s), + Gc: U(Hc, s), + }; + var Oc = { + zc: s, + yc: s, + ab: s, + }; + var Qd = { + X: s, + ua: s, + Nb: s, + }; + const id = U(2, s); + const Hg = { + sc: M(id), + sb: M(id), + qc: M(id), + }; + const Ig = { + ha: s, + d: s, + W: s, + M: Oc, + N: Vb, + }; + var Cg = { + a: 'VP8StatusCode', + za: s, + xc: 0, + o: M(Fc), + Ac: M(Id), + P: M(Jd), + ga: M(Gg), + Ca: M(Eg), + rc: 'WebPWorker', + qb: s, + Ja: s, + jb: s, + oa: Ig, + Ma: s, + hb: s, + lb: s, + mb: s, + wb: s, + Ya: s, + Hb: s, + ic: ld(8, Fc), + Zc: E, + yb: ld(xa, Hg), + R: M(Fg), + pc: s, + Pc: x, + dc: x, + cc: U(4, x), + Xc: x, + Sc: x, + Vc: x, + La: M(Qd), + M: M(Oc), + Ea: x, + z: 0, + ca: x, + aa: x, + ra: x, + da: s, + ba: s, + sa: s, + H: s, + r: s, + ib: 0, + Gb: Mb, + i: s, + d: s, + wa: x, + Eb: U(16, x), + Vd: 0, + Tc: x, + Lb: x, + ja: E, + Oa: E, + A: s, + W: s, + Zb: U(xa, x), + Ga: p, + G: 0, + ub: Mb, + Xb: x, + Od: 0, + cd: s, + dd: x, + Wd: 0, + fc: Mb, + }; + var Db = 0; + var Cb = 1; + var cd = 2; + const Jg = { + Qc: 'VP8LImageTransformType', + n: s, + U: s, + Vb: s, + u: E, + b: E, + }; + var gg = { + va: ld(Yc, Le), + }; + const Kg = { + xb: s, + Yb: M(Dg), + Dc: s, + eb: s, + Ec: s, + ac: E, + bd: E, + hc: s, + Db: 'HTreeGroup', + }; + var eg = { + a: 'VP8StatusCode', + Wa: 'VP8LDecodeState', + Ob: 'VP8LDecodeState', + N: 'VP8Io', + Ib: 'WebPDecBuffer', + Hc: 'WebPDecBuffer', + V: E, + Ha: E, + Xa: E, + vb: E, + o: M(af), + l: s, + v: s, + O: s, + xa: s, + cb: M(Kg), + Na: s, + nc: ld(Je, Jg), + Ub: E, + Mc: x, + $d: x, + Zd: '*WebPRescaler', + }; + var lf = 4; + var nf = [p, function (a, b, c, d, e, g, f, h) { + let n = s; + let l = h; + $(a != p); + $(f != p); + $(c > 0); + $(d > 0); + $(e > 0); + $(g >= c * e); + for (n = 0; n < d; ++n) { + n == 0 ? N(f, h, a, b, e) : Ea(a, b, f, l - g, f, h, e), Ea(a, b + e, f, l, f, h + e, e * (c - 1)), + l += g, b += g, h += g; + } + }, function (a, b, c, d, e, f, k, h) { + let n = s; + let l = h; + $(a != p); + $(k != p); + $(c > 0); + $(d > 0); + $(e > 0); + $(f >= c * e); + N(k, h, a, b, e); + Ea(a, b + e, k, l, k, h + e, e * (c - 1)); + for (n = 1; n < d; ++n) b += f, h += f, Ea(a, b, k, l, k, h, e * c), l += f; + }, function (a, b, c, d, e, f, k, h) { + var n = h; + let l = s; + $(a != p); + $(k != p); + $(c > 0); + $(d > 0); + $(e > 0); + $(f >= c * e); + N(k, h, a, b, e); + Ea(a, b + e, k, n, k, h + e, e * (c - 1)); + for (l = 1; l < d; ++l) { + let m = s; + var n = n + f; + b += f; + h += f; + Ea(a, b, k, n - f, k, h, e); + for (m = e; m < c * e; ++m) { + const t = k[n + m - e] + k[n + m - f] - k[n + m - f - e]; + k[h + m] = a[b + m] + (t < 0 ? 0 : t > 255 ? 255 : t) & 255; + } + } + }]; + var yd = [3, 4, 3, 4, 4, 2, 2, 4, 4, 4, + 2, 1, 1, + ]; + this.WebPFreeDecBuffer = this.Yc = function (a) { + a != p && (a.Fc || (a.Jb = ''), a.jc = 0, a.Jb = a.jc = p); + }; + self = this; + var va = U(511, x); + var tc = U(511, x); + var sc = U(2041, 0); + var oc = U(225, 0); + var oa = U(766, x); + var Rd = 0; + var Xb = 85627; + var Wb = 35468; + var Uf = [function (a, b) { + let c = 4; + let d; + for (d = 0; d < 4; ++d) c += a[b + d - f] + a[b - 1 + d * f]; + c >>= 3; + for (d = 0; d < 4; ++d) jd(a, b + d * f, c, 4); + }, function (a, b) { + Dc(a, b, 4); + }, function (a, b) { + let c = b - f; + const d = []; + d.push(y(a[c - 1], a[c + 0], a[c + 1])); + d.push(y(a[c + 0], a[c + 1], a[c + 2])); + d.push(y(a[c + 1], a[c + 2], a[c + 3])); + d.push(y(a[c + 2], a[c + 3], a[c + 4])); + for (c = 0; c < 4; ++c) N(a, b + c * f, d, 0, 4); + }, + function (a, b) { + const c = a[b - 1]; + const d = a[b - 1 + f]; + const e = a[b - 1 + 2 * f]; + const g = a[b - 1 + 3 * f]; + a[b + 0 + 0 * f] = a[b + 1 + 0 * f] = a[b + 2 + 0 * f] = a[b + 3 + 0 * f] = y(a[b - 1 - f], c, d); + a[b + 0 + 1 * f] = a[b + 1 + 1 * f] = a[b + 2 + 1 * f] = a[b + 3 + 1 * f] = y(c, d, e); + a[b + 0 + 2 * f] = a[b + 1 + 2 * f] = a[b + 2 + 2 * f] = a[b + 3 + 2 * f] = y(d, e, g); + a[b + 0 + 3 * f] = a[b + 1 + 3 * f] = a[b + 2 + 3 * f] = a[b + 3 + 3 * f] = y(e, g, g); + }, + function (a, b) { + const c = a[b - 1 + 0 * f]; + const d = a[b - 1 + 1 * f]; + const e = a[b - 1 + 2 * f]; + const g = a[b - 1 - f]; + const k = a[b + 0 - f]; + const h = a[b + 1 - f]; + const n = a[b + 2 - f]; + const l = a[b + 3 - f]; + a[b + 0 + 3 * f] = y(d, e, a[b - 1 + 3 * f]); + a[b + 0 + 2 * f] = a[b + 1 + 3 * f] = y(c, d, e); + a[b + 0 + 1 * f] = a[b + 1 + 2 * f] = a[b + 2 + 3 * f] = y(g, c, d); + a[b + + 0 + 0 * f] = a[b + 1 + 1 * f] = a[b + 2 + 2 * f] = a[b + 3 + 3 * f] = y(k, g, c); + a[b + 1 + 0 * f] = a[b + 2 + 1 * f] = a[b + 3 + 2 * f] = y(h, k, g); + a[b + 2 + 0 * f] = a[b + 3 + 1 * f] = y(n, h, k); + a[b + 3 + 0 * f] = y(l, n, h); + }, + function (a, b) { + const c = a[b - 1 + 0 * f]; + const d = a[b - 1 + 1 * f]; + const e = a[b - 1 + 2 * f]; + const g = a[b - 1 - f]; + const k = a[b + 0 - f]; + const h = a[b + 1 - f]; + const n = a[b + 2 - f]; + const l = a[b + 3 - f]; + a[b + 0 + 0 * f] = a[b + 1 + 2 * f] = g + k + 1 >> 1; + a[b + 1 + 0 * f] = a[b + 2 + 2 * f] = k + h + 1 >> 1; + a[b + 2 + 0 * f] = a[b + 3 + 2 * f] = h + n + 1 >> 1; + a[b + 3 + 0 * f] = n + l + 1 >> 1; + a[b + 0 + 3 * f] = y(e, d, c); + a[b + 0 + 2 * f] = y(d, c, g); + a[b + 0 + 1 * f] = a[b + 1 + 3 * f] = y(c, g, k); + a[b + 1 + 1 * f] = a[b + 2 + 3 * f] = y(g, k, h); + a[b + 2 + 1 * f] = a[b + 3 + 3 * f] = y(k, h, n); + a[b + 3 + 1 * f] = y(h, n, l); + }, + function (a, b) { + const c = a[b + 1 - f]; + const d = a[b + 2 - f]; + const e = a[b + 3 - f]; + const g = a[b + 4 - f]; + const k = a[b + 5 - f]; + const h = a[b + 6 - f]; + const n = a[b + 7 - f]; + a[b + 0 + 0 * f] = y(a[b + 0 - f], c, d); + a[b + 1 + 0 * f] = a[b + 0 + 1 * f] = y(c, d, e); + a[b + 2 + 0 * f] = a[b + 1 + 1 * f] = a[b + 0 + 2 * f] = y(d, e, g); + a[b + 3 + 0 * f] = a[b + 2 + 1 * f] = a[b + 1 + 2 * f] = a[b + 0 + 3 * f] = y(e, g, k); + a[b + 3 + 1 * f] = a[b + 2 + 2 * f] = a[b + 1 + 3 * f] = y(g, k, h); + a[b + 3 + 2 * f] = a[b + 2 + 3 * f] = y(k, h, n); + a[b + 3 + 3 * f] = y(h, n, n); + }, + function (a, b) { + const c = a[b + 0 - f]; + const d = a[b + 1 - f]; + const e = a[b + 2 - f]; + const g = a[b + 3 - f]; + const k = a[b + 4 - f]; + const h = a[b + 5 - f]; + const n = a[b + 6 - f]; + const l = a[b + 7 - f]; + a[b + 0 + 0 * f] = c + d + 1 >> 1; + a[b + 1 + 0 * f] = a[b + + 0 + 2 * f] = d + e + 1 >> 1; + a[b + 2 + 0 * f] = a[b + 1 + 2 * f] = e + g + 1 >> 1; + a[b + 3 + 0 * f] = a[b + 2 + 2 * f] = g + k + 1 >> 1; + a[b + 0 + 1 * f] = y(c, d, e); + a[b + 1 + 1 * f] = a[b + 0 + 3 * f] = y(d, e, g); + a[b + 2 + 1 * f] = a[b + 1 + 3 * f] = y(e, g, k); + a[b + 3 + 1 * f] = a[b + 2 + 3 * f] = y(g, k, h); + a[b + 3 + 2 * f] = y(k, h, n); + a[b + 3 + 3 * f] = y(h, n, l); + }, + function (a, b) { + const c = a[b - 1 + 0 * f]; + const d = a[b - 1 + 1 * f]; + const e = a[b - 1 + 2 * f]; + const g = a[b - 1 + 3 * f]; + const k = a[b - 1 - f]; + const h = a[b + 0 - f]; + const n = a[b + 1 - f]; + const l = a[b + 2 - f]; + a[b + 0 + 0 * f] = a[b + 2 + 1 * f] = c + k + 1 >> 1; + a[b + 0 + 1 * f] = a[b + 2 + 2 * f] = d + c + 1 >> 1; + a[b + 0 + 2 * f] = a[b + 2 + 3 * f] = e + d + 1 >> 1; + a[b + 0 + 3 * f] = g + e + 1 >> 1; + a[b + 3 + 0 * f] = y(h, n, l); + a[b + 2 + 0 * f] = y(k, h, n); + a[b + + 1 + 0 * f] = a[b + 3 + 1 * f] = y(c, k, h); + a[b + 1 + 1 * f] = a[b + 3 + 2 * f] = y(d, c, k); + a[b + 1 + 2 * f] = a[b + 3 + 3 * f] = y(e, d, c); + a[b + 1 + 3 * f] = y(g, e, d); + }, + function (a, b) { + const c = a[b - 1 + 0 * f]; + const d = a[b - 1 + 1 * f]; + const e = a[b - 1 + 2 * f]; + const g = a[b - 1 + 3 * f]; + a[b + 0 + 0 * f] = c + d + 1 >> 1; + a[b + 2 + 0 * f] = a[b + 0 + 1 * f] = d + e + 1 >> 1; + a[b + 2 + 1 * f] = a[b + 0 + 2 * f] = e + g + 1 >> 1; + a[b + 1 + 0 * f] = y(c, d, e); + a[b + 3 + 0 * f] = a[b + 1 + 1 * f] = y(d, e, g); + a[b + 3 + 1 * f] = a[b + 1 + 2 * f] = y(e, g, g); + a[b + 3 + 2 * f] = a[b + 2 + 2 * f] = a[b + 0 + 3 * f] = a[b + 1 + 3 * f] = a[b + 2 + 3 * f] = a[b + 3 + 3 * f] = g; + }, + ]; + var Vf = [function (a, b) { + let c = 16; + let d; + for (d = 0; d < 16; ++d) c += a[b - 1 + d * f] + a[b + d - f]; + Yb(c >> 5, a, b); + }, function (a, + b) { + Dc(a, b, 16); + }, function (a, b) { + let c; + for (c = 0; c < 16; ++c) N(a, b + c * f, a, b - f, 16); + }, function (a, b) { + let c; + for (c = 16; c > 0; --c) jd(a, b + 0, a[b - 1], 16), b += f; + }, function (a, b) { + let c = 8; + let d; + for (d = 0; d < 16; ++d) c += a[b - 1 + d * f]; + Yb(c >> 4, a, b); + }, function (a, b) { + let c = 8; + let d; + for (d = 0; d < 16; ++d) c += a[b + d - f]; + Yb(c >> 4, a, b); + }, function (a, b) { + Yb(128, a, b); + }]; + var je = [function (a, b) { + let c = 8; + let d; + for (d = 0; d < 8; ++d) c += a[b + d - f] + a[b - 1 + d * f]; + Zb(1 * (c >> 4), a, b); + }, function (a, b) { + Dc(a, b, 8); + }, function (a, b) { + let c; + for (c = 0; c < 8; ++c) N(a, b + c * f, a, b - f, 8); + }, function (a, b) { + let c; + for (c = 0; c < 8; ++c) { + jd(a, + b + 0, a[b - 1], 8), b += f; + } + }, function (a, b) { + let c = 4; + let d; + for (d = 0; d < 8; ++d) c += a[b - 1 + d * f]; + Zb(1 * (c >> 3), a, b); + }, function (a, b) { + let c = 4; + let d; + for (d = 0; d < 8; ++d) c += a[b + d - f]; + Zb(1 * (c >> 3), a, b); + }, function (a, b) { + Zb(128, a, b); + }]; + let mc; let Pc; let Qc; let Rc; let Sd; let Td; let Ud; let Vd; let Wd; let Xd; let Yd; let Zd; let $d; let ae; let be; let ce; var Pd = 31; + var uc = [0, 2, 8]; + var Od = 3; + var Of = 1; + var ie = [0 + 0 * f, 4 + 0 * f, 8 + 0 * f, 12 + 0 * f, 0 + 4 * f, 4 + 4 * f, 8 + 4 * f, 12 + 4 * f, 0 + 8 * f, 4 + 8 * f, 8 + 8 * f, 12 + 8 * f, 0 + 12 * f, 4 + 12 * f, 8 + 12 * f, 12 + 12 * f]; + var Ic = [4, 5, 6, 7, 8, 9, 10, 10, 11, 12, 13, 14, 15, 16, 17, 17, 18, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 25, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 91, 93, 95, 96, 98, 100, 101, 102, 104, 106, 108, 110, 112, 114, 116, 118, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 143, 145, 148, 151, 154, 157, + ]; + var Jc = [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, + 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 119, 122, 125, 128, 131, 134, 137, 140, 143, 146, 149, 152, 155, 158, 161, 164, 167, 170, 173, 177, 181, 185, 189, 193, 197, 201, 205, 209, 213, 217, 221, 225, 229, 234, 239, 245, 249, 254, 259, 264, 269, 274, 279, 284, + ]; + var Sf = [-$b, 1, -1, 2, -2, 3, 4, 6, -3, 5, -4, -5, -6, 7, -7, 8, -8, -9]; + var Ff = [ + [ + [ + [128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128], + [128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128], + [128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128], + ], + [ + [253, 136, 254, 255, 228, 219, 128, 128, 128, 128, 128], + [189, 129, 242, 255, 227, 213, 255, 219, 128, 128, + 128, + ], + [106, 126, 227, 252, 214, 209, 255, 255, 128, 128, 128], + ], + [ + [1, 98, 248, 255, 236, 226, 255, 255, 128, 128, 128], + [181, 133, 238, 254, 221, 234, 255, 154, 128, 128, 128], + [78, 134, 202, 247, 198, 180, 255, 219, 128, 128, 128], + ], + [ + [1, 185, 249, 255, 243, 255, 128, 128, 128, 128, 128], + [184, 150, 247, 255, 236, 224, 128, 128, 128, 128, 128], + [77, 110, 216, 255, 236, 230, 128, 128, 128, 128, 128], + ], + [ + [1, 101, 251, 255, 241, 255, 128, 128, 128, 128, 128], + [170, 139, 241, 252, 236, 209, 255, 255, 128, 128, 128], + [37, 116, 196, 243, 228, 255, 255, 255, 128, 128, 128], + ], + [ + [1, 204, 254, 255, 245, 255, 128, 128, 128, 128, + 128, + ], + [207, 160, 250, 255, 238, 128, 128, 128, 128, 128, 128], + [102, 103, 231, 255, 211, 171, 128, 128, 128, 128, 128], + ], + [ + [1, 152, 252, 255, 240, 255, 128, 128, 128, 128, 128], + [177, 135, 243, 255, 234, 225, 128, 128, 128, 128, 128], + [80, 129, 211, 255, 194, 224, 128, 128, 128, 128, 128], + ], + [ + [1, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128], + [246, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128], + [255, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128], + ], + ], + [ + [ + [198, 35, 237, 223, 193, 187, 162, 160, 145, 155, 62], + [131, 45, 198, 221, 172, 176, 220, 157, 252, 221, 1], + [68, 47, 146, 208, 149, 167, 221, 162, 255, 223, 128], + ], + [ + [1, 149, 241, 255, 221, 224, 255, 255, 128, 128, 128], + [184, 141, 234, 253, 222, 220, 255, 199, 128, 128, 128], + [81, 99, 181, 242, 176, 190, 249, 202, 255, 255, 128], + ], + [ + [1, 129, 232, 253, 214, 197, 242, 196, 255, 255, 128], + [99, 121, 210, 250, 201, 198, 255, 202, 128, 128, 128], + [23, 91, 163, 242, 170, 187, 247, 210, 255, 255, 128], + ], + [ + [1, 200, 246, 255, 234, 255, 128, 128, 128, 128, 128], + [109, 178, 241, 255, 231, 245, 255, 255, 128, 128, 128], + [44, 130, 201, 253, 205, 192, 255, 255, 128, 128, 128], + ], + [ + [1, 132, 239, 251, 219, 209, 255, 165, 128, 128, 128], + [94, 136, 225, 251, 218, 190, 255, 255, 128, 128, 128], + [22, + 100, 174, 245, 186, 161, 255, 199, 128, 128, 128, + ], + ], + [ + [1, 182, 249, 255, 232, 235, 128, 128, 128, 128, 128], + [124, 143, 241, 255, 227, 234, 128, 128, 128, 128, 128], + [35, 77, 181, 251, 193, 211, 255, 205, 128, 128, 128], + ], + [ + [1, 157, 247, 255, 236, 231, 255, 255, 128, 128, 128], + [121, 141, 235, 255, 225, 227, 255, 255, 128, 128, 128], + [45, 99, 188, 251, 195, 217, 255, 224, 128, 128, 128], + ], + [ + [1, 1, 251, 255, 213, 255, 128, 128, 128, 128, 128], + [203, 1, 248, 255, 255, 128, 128, 128, 128, 128, 128], + [137, 1, 177, 255, 224, 255, 128, 128, 128, 128, 128], + ], + ], + [ + [ + [253, 9, 248, 251, 207, 208, 255, 192, 128, 128, 128], + [175, 13, + 224, 243, 193, 185, 249, 198, 255, 255, 128, + ], + [73, 17, 171, 221, 161, 179, 236, 167, 255, 234, 128], + ], + [ + [1, 95, 247, 253, 212, 183, 255, 255, 128, 128, 128], + [239, 90, 244, 250, 211, 209, 255, 255, 128, 128, 128], + [155, 77, 195, 248, 188, 195, 255, 255, 128, 128, 128], + ], + [ + [1, 24, 239, 251, 218, 219, 255, 205, 128, 128, 128], + [201, 51, 219, 255, 196, 186, 128, 128, 128, 128, 128], + [69, 46, 190, 239, 201, 218, 255, 228, 128, 128, 128], + ], + [ + [1, 191, 251, 255, 255, 128, 128, 128, 128, 128, 128], + [223, 165, 249, 255, 213, 255, 128, 128, 128, 128, 128], + [141, 124, 248, 255, 255, 128, 128, 128, 128, 128, 128], + ], + [ + [1, 16, 248, 255, + 255, 128, 128, 128, 128, 128, 128, + ], + [190, 36, 230, 255, 236, 255, 128, 128, 128, 128, 128], + [149, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128], + ], + [ + [1, 226, 255, 128, 128, 128, 128, 128, 128, 128, 128], + [247, 192, 255, 128, 128, 128, 128, 128, 128, 128, 128], + [240, 128, 255, 128, 128, 128, 128, 128, 128, 128, 128], + ], + [ + [1, 134, 252, 255, 255, 128, 128, 128, 128, 128, 128], + [213, 62, 250, 255, 255, 128, 128, 128, 128, 128, 128], + [55, 93, 255, 128, 128, 128, 128, 128, 128, 128, 128], + ], + [ + [128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128], + [128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128], + [128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, + ], + ], + ], + [ + [ + [202, 24, 213, 235, 186, 191, 220, 160, 240, 175, 255], + [126, 38, 182, 232, 169, 184, 228, 174, 255, 187, 128], + [61, 46, 138, 219, 151, 178, 240, 170, 255, 216, 128], + ], + [ + [1, 112, 230, 250, 199, 191, 247, 159, 255, 255, 128], + [166, 109, 228, 252, 211, 215, 255, 174, 128, 128, 128], + [39, 77, 162, 232, 172, 180, 245, 178, 255, 255, 128], + ], + [ + [1, 52, 220, 246, 198, 199, 249, 220, 255, 255, 128], + [124, 74, 191, 243, 183, 193, 250, 221, 255, 255, 128], + [24, 71, 130, 219, 154, 170, 243, 182, 255, 255, 128], + ], + [ + [1, 182, 225, 249, 219, 240, 255, 224, 128, 128, 128], + [149, 150, 226, 252, 216, + 205, 255, 171, 128, 128, 128, + ], + [28, 108, 170, 242, 183, 194, 254, 223, 255, 255, 128], + ], + [ + [1, 81, 230, 252, 204, 203, 255, 192, 128, 128, 128], + [123, 102, 209, 247, 188, 196, 255, 233, 128, 128, 128], + [20, 95, 153, 243, 164, 173, 255, 203, 128, 128, 128], + ], + [ + [1, 222, 248, 255, 216, 213, 128, 128, 128, 128, 128], + [168, 175, 246, 252, 235, 205, 255, 255, 128, 128, 128], + [47, 116, 215, 255, 211, 212, 255, 255, 128, 128, 128], + ], + [ + [1, 121, 236, 253, 212, 214, 255, 255, 128, 128, 128], + [141, 84, 213, 252, 201, 202, 255, 219, 128, 128, 128], + [42, 80, 160, 240, 162, 185, 255, 205, 128, 128, 128], + ], + [ + [1, 1, 255, 128, 128, 128, 128, + 128, 128, 128, 128, + ], + [244, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128], + [238, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128], + ], + ], + ]; + var Rf = [ + [ + [231, 120, 48, 89, 115, 113, 120, 152, 112], + [152, 179, 64, 126, 170, 118, 46, 70, 95], + [175, 69, 143, 80, 85, 82, 72, 155, 103], + [56, 58, 10, 171, 218, 189, 17, 13, 152], + [114, 26, 17, 163, 44, 195, 21, 10, 173], + [121, 24, 80, 195, 26, 62, 44, 64, 85], + [144, 71, 10, 38, 171, 213, 144, 34, 26], + [170, 46, 55, 19, 136, 160, 33, 206, 71], + [63, 20, 8, 114, 114, 208, 12, 9, 226], + [81, 40, 11, 96, 182, 84, 29, 16, 36], + ], + [ + [134, 183, 89, 137, 98, 101, 106, 165, 148], + [72, 187, 100, 130, 157, 111, + 32, 75, 80, + ], + [66, 102, 167, 99, 74, 62, 40, 234, 128], + [41, 53, 9, 178, 241, 141, 26, 8, 107], + [74, 43, 26, 146, 73, 166, 49, 23, 157], + [65, 38, 105, 160, 51, 52, 31, 115, 128], + [104, 79, 12, 27, 217, 255, 87, 17, 7], + [87, 68, 71, 44, 114, 51, 15, 186, 23], + [47, 41, 14, 110, 182, 183, 21, 17, 194], + [66, 45, 25, 102, 197, 189, 23, 18, 22], + ], + [ + [88, 88, 147, 150, 42, 46, 45, 196, 205], + [43, 97, 183, 117, 85, 38, 35, 179, 61], + [39, 53, 200, 87, 26, 21, 43, 232, 171], + [56, 34, 51, 104, 114, 102, 29, 93, 77], + [39, 28, 85, 171, 58, 165, 90, 98, 64], + [34, 22, 116, 206, 23, 34, 43, 166, 73], + [107, 54, 32, 26, 51, 1, 81, 43, 31], + [68, 25, 106, 22, + 64, 171, 36, 225, 114, + ], + [34, 19, 21, 102, 132, 188, 16, 76, 124], + [62, 18, 78, 95, 85, 57, 50, 48, 51], + ], + [ + [193, 101, 35, 159, 215, 111, 89, 46, 111], + [60, 148, 31, 172, 219, 228, 21, 18, 111], + [112, 113, 77, 85, 179, 255, 38, 120, 114], + [40, 42, 1, 196, 245, 209, 10, 25, 109], + [88, 43, 29, 140, 166, 213, 37, 43, 154], + [61, 63, 30, 155, 67, 45, 68, 1, 209], + [100, 80, 8, 43, 154, 1, 51, 26, 71], + [142, 78, 78, 16, 255, 128, 34, 197, 171], + [41, 40, 5, 102, 211, 183, 4, 1, 221], + [51, 50, 17, 168, 209, 192, 23, 25, 82], + ], + [ + [138, 31, 36, 171, 27, 166, 38, 44, 229], + [67, 87, 58, 169, 82, 115, 26, 59, 179], + [63, 59, 90, 180, 59, 166, 93, 73, + 154, + ], + [40, 40, 21, 116, 143, 209, 34, 39, 175], + [47, 15, 16, 183, 34, 223, 49, 45, 183], + [46, 17, 33, 183, 6, 98, 15, 32, 183], + [57, 46, 22, 24, 128, 1, 54, 17, 37], + [65, 32, 73, 115, 28, 128, 23, 128, 205], + [40, 3, 9, 115, 51, 192, 18, 6, 223], + [87, 37, 9, 115, 59, 77, 64, 21, 47], + ], + [ + [104, 55, 44, 218, 9, 54, 53, 130, 226], + [64, 90, 70, 205, 40, 41, 23, 26, 57], + [54, 57, 112, 184, 5, 41, 38, 166, 213], + [30, 34, 26, 133, 152, 116, 10, 32, 134], + [39, 19, 53, 221, 26, 114, 32, 73, 255], + [31, 9, 65, 234, 2, 15, 1, 118, 73], + [75, 32, 12, 51, 192, 255, 160, 43, 51], + [88, 31, 35, 67, 102, 85, 55, 186, 85], + [56, 21, 23, 111, 59, 205, 45, 37, 192], + [55, 38, 70, 124, 73, 102, 1, 34, 98], + ], + [ + [125, 98, 42, 88, 104, 85, 117, 175, 82], + [95, 84, 53, 89, 128, 100, 113, 101, 45], + [75, 79, 123, 47, 51, 128, 81, 171, 1], + [57, 17, 5, 71, 102, 57, 53, 41, 49], + [38, 33, 13, 121, 57, 73, 26, 1, 85], + [41, 10, 67, 138, 77, 110, 90, 47, 114], + [115, 21, 2, 10, 102, 255, 166, 23, 6], + [101, 29, 16, 10, 85, 128, 101, 196, 26], + [57, 18, 10, 102, 102, 213, 34, 20, 43], + [117, 20, 15, 36, 163, 128, 68, 1, 26], + ], + [ + [102, 61, 71, 37, 34, 53, 31, 243, 192], + [69, 60, 71, 38, 73, 119, 28, 222, 37], + [68, 45, 128, 34, 1, 47, 11, 245, 171], + [62, 17, 19, 70, 146, 85, 55, 62, 70], + [37, 43, 37, 154, 100, 163, 85, 160, + 1, + ], + [63, 9, 92, 136, 28, 64, 32, 201, 85], + [75, 15, 9, 9, 64, 255, 184, 119, 16], + [86, 6, 28, 5, 64, 255, 25, 248, 1], + [56, 8, 17, 132, 137, 255, 55, 116, 128], + [58, 15, 20, 82, 135, 57, 26, 121, 40], + ], + [ + [164, 50, 31, 137, 154, 133, 25, 35, 218], + [51, 103, 44, 131, 131, 123, 31, 6, 158], + [86, 40, 64, 135, 148, 224, 45, 183, 128], + [22, 26, 17, 131, 240, 154, 14, 1, 209], + [45, 16, 21, 91, 64, 222, 7, 1, 197], + [56, 21, 39, 155, 60, 138, 23, 102, 213], + [83, 12, 13, 54, 192, 255, 68, 47, 28], + [85, 26, 85, 85, 128, 128, 32, 146, 171], + [18, 11, 7, 63, 144, 171, 4, 4, 246], + [35, 27, 10, 146, 174, 171, 12, 26, 128], + ], + [ + [190, 80, 35, 99, 180, 80, + 126, 54, 45, + ], + [85, 126, 47, 87, 176, 51, 41, 20, 32], + [101, 75, 128, 139, 118, 146, 116, 128, 85], + [56, 41, 15, 176, 236, 85, 37, 9, 62], + [71, 30, 17, 119, 118, 255, 17, 18, 138], + [101, 38, 60, 138, 55, 70, 43, 26, 142], + [146, 36, 19, 30, 171, 255, 97, 27, 20], + [138, 45, 61, 62, 219, 1, 81, 188, 64], + [32, 41, 20, 117, 151, 142, 20, 21, 163], + [112, 19, 12, 61, 195, 128, 48, 4, 24], + ], + ]; + var If = [ + [ + [ + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + ], + [ + [176, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [223, 241, + 252, 255, 255, 255, 255, 255, 255, 255, 255, + ], + [249, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255], + ], + [ + [255, 244, 252, 255, 255, 255, 255, 255, 255, 255, 255], + [234, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255], + [253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + ], + [ + [255, 246, 254, 255, 255, 255, 255, 255, 255, 255, 255], + [239, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255], + [254, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255], + ], + [ + [255, 248, 254, 255, 255, 255, 255, 255, 255, 255, 255], + [251, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + ], + [ + [255, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255], + [251, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255], + [254, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255], + ], + [ + [255, 254, 253, 255, 254, 255, 255, 255, 255, 255, 255], + [250, 255, 254, 255, 254, 255, 255, 255, 255, 255, 255], + [254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + ], + [ + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + ], + ], + [ + [ + [217, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [225, 252, 241, 253, 255, 255, 254, 255, + 255, 255, 255, + ], + [234, 250, 241, 250, 253, 255, 253, 254, 255, 255, 255], + ], + [ + [255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [223, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255], + [238, 253, 254, 254, 255, 255, 255, 255, 255, 255, 255], + ], + [ + [255, 248, 254, 255, 255, 255, 255, 255, 255, 255, 255], + [249, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + ], + [ + [255, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [247, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + ], + [ + [255, 253, 254, 255, 255, + 255, 255, 255, 255, 255, 255, + ], + [252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + ], + [ + [255, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255], + [253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + ], + [ + [255, 254, 253, 255, 255, 255, 255, 255, 255, 255, 255], + [250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + ], + [ + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, + ], + ], + ], + [ + [ + [186, 251, 250, 255, 255, 255, 255, 255, 255, 255, 255], + [234, 251, 244, 254, 255, 255, 255, 255, 255, 255, 255], + [251, 251, 243, 253, 254, 255, 254, 255, 255, 255, 255], + ], + [ + [255, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255], + [236, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255], + [251, 253, 253, 254, 254, 255, 255, 255, 255, 255, 255], + ], + [ + [255, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255], + [254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + ], + [ + [255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + ], + [ + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + ], + [ + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + ], + [ + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, + ], + ], + [ + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + ], + ], + [ + [ + [248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [250, 254, 252, 254, 255, 255, 255, 255, 255, 255, 255], + [248, 254, 249, 253, 255, 255, 255, 255, 255, 255, 255], + ], + [ + [255, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255], + [246, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255], + [252, 254, 251, 254, 254, 255, 255, 255, 255, 255, 255], + ], + [ + [255, 254, 252, 255, 255, 255, 255, 255, 255, 255, 255], + [248, 254, 253, 255, 255, 255, + 255, 255, 255, 255, 255, + ], + [253, 255, 254, 254, 255, 255, 255, 255, 255, 255, 255], + ], + [ + [255, 251, 254, 255, 255, 255, 255, 255, 255, 255, 255], + [245, 251, 254, 255, 255, 255, 255, 255, 255, 255, 255], + [253, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255], + ], + [ + [255, 251, 253, 255, 255, 255, 255, 255, 255, 255, 255], + [252, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255], + ], + [ + [255, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [249, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255], + ], + [ + [255, 255, 253, + 255, 255, 255, 255, 255, 255, 255, 255, + ], + [250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + ], + [ + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + ], + ], + ]; + this.WebPGetDecoderVersion = this.Ld = function () { + return 512; + }; + var Nc = [0, 1, 2, 3, 6, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6, 7, 0]; + var Jf = [ + [173, 148, 140, 0], + [176, 155, 140, 135, 0], + [180, 157, 141, 134, 130, 0], + [254, 254, 243, 230, 196, 177, 153, 140, 133, 130, 129, 0], + ]; + var Kf = [0, 1, 4, 8, 5, 2, 3, 6, + 9, 12, 13, 10, 7, 11, 14, 15, + ]; + var Tf = md([Kc, Lc], ''); + U(4, x); + var vc = [ + [0, 0, 0, 0], + [1, 0, 0, 0], + [0, 1, 0, 0], + [1, 1, 0, 0], + [0, 0, 1, 0], + [1, 0, 1, 0], + [0, 1, 1, 0], + [1, 1, 1, 0], + [0, 0, 0, 1], + [1, 0, 0, 1], + [0, 1, 0, 1], + [1, 1, 0, 1], + [0, 0, 1, 1], + [1, 0, 1, 1], + [0, 1, 1, 1], + [1, 1, 1, 1], + ]; + var Lf = 134480385; + var ea = 16; + var J = -227; + var dd = 482; + var Ce = [Wc, function (a) { + return a; + }, function (a, b, c) { + return b[c + 0]; + }, function (a, b, c) { + return b[c + 1]; + }, function (a, b, c) { + return b[c - 1]; + }, function (a, b, c) { + return ka(ka(a, b[c + 1]), b[c + 0]); + }, function (a, b, c) { + return ka(a, b[c - 1]); + }, function (a, b, c) { + return ka(a, b[c + 0]); + }, function (a, + b, c) { + return ka(b[c - 1], b[c + 0]); + }, function (a, b, c) { + return ka(b[c + 0], b[c + 1]); + }, function (a, b, c) { + return ka(ka(a, b[c - 1]), ka(b[c + 0], b[c + 1])); + }, function (a, b, c) { + return Math.abs((a >> 24 & 255) - (b[c - 1] >> 24 & 255)) - Math.abs((b[c + 0] >> 24 & 255) - (b[c - 1] >> 24 & 255)) + (Math.abs((a >> 16 & 255) - (b[c - 1] >> 16 & 255)) - Math.abs((b[c + 0] >> 16 & 255) - (b[c - 1] >> 16 & 255))) + (Math.abs((a >> 8 & 255) - (b[c - 1] >> 8 & 255)) - Math.abs((b[c + 0] >> 8 & 255) - (b[c - 1] >> 8 & 255))) + (Math.abs((a & 255) - (b[c - 1] & 255)) - Math.abs((b[c + 0] & 255) - (b[c - 1] & 255))) <= 0 ? b[c + 0] : a; + }, function (a, b, c) { + return ($a((a + >> 24 & 255) + (b[c + 0] >> 24 & 255) - (b[c - 1] >> 24 & 255)) << 24 | $a((a >> 16 & 255) + (b[c + 0] >> 16 & 255) - (b[c - 1] >> 16 & 255)) << 16 | $a((a >> 8 & 255) + (b[c + 0] >> 8 & 255) - (b[c - 1] >> 8 & 255)) << 8 | $a((a & 255) + (b[c + 0] & 255) - (b[c - 1] & 255))) >>> 0; + }, function (a, b, c) { + const d = b[c - 1]; + a = ka(a, b[c + 0]); + return (yb(a >> 24 & 255, d >> 24 & 255) << 24 | yb(a >> 16 & 255, d >> 16 & 255) << 16 | yb(a >> 8 & 255, d >> 8 & 255) << 8 | yb(a >> 0 & 255, d >> 0 & 255)) >>> 0; + }, Wc, Wc]; + var Xf = { + Cc: x, + Bc: x, + Kc: x, + }; + var $c = 16; + var Me = 16; + var kg = 16; + var mg = [2, 3, 7]; + var lg = [3, 3, 11]; + var Zf = 0; + var $f = 1; + var ag = 2; + var bg = 3; + var cg = 4; + var hg = [Ba + Ge, Ba, Ba, Ba, 40]; + var Ke = 19; + var ig = [17, 18, 0, 1, 2, 3, 4, 5, 16, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + ]; + var He = 120; + var dg = [24, 7, 23, 25, 40, 6, 39, 41, 22, 26, 38, 42, 56, 5, 55, 57, 21, 27, 54, 58, 37, 43, 72, 4, 71, 73, 20, 28, 53, 59, 70, 74, 36, 44, 88, 69, 75, 52, 60, 3, 87, 89, 19, 29, 86, 90, 35, 45, 68, 76, 85, 91, 51, 61, 104, 2, 103, 105, 18, 30, 102, 106, 34, 46, 84, 92, 67, 77, 101, 107, 50, 62, 120, 1, 119, 121, 83, 93, 17, 31, 100, 108, 66, 78, 118, 122, 33, 47, 117, 123, 49, 63, 99, 109, 82, 94, 0, 116, 124, 65, 79, 16, 32, 98, 110, 48, 115, 125, 81, 95, 64, 114, 126, 97, 111, 80, 113, 127, 96, 112]; + var Jb = 1 << ea - 1; + var Za = U(256, 0); + var xb = U(256, 0); + var vb = U(256, la); + var wb = U(256, la); + var ia = U(dd - J, x); + var Hb = U(dd + - J, x); + var Xe = 0; + var V = Array(Cc); + var vg = [function (a, b, c, d, e, f, k, h, n, l, m, t, q) { + Ca(a, b, c, d, e, f, k, h, n, l, m, t, q, hc, 3); + }, Se, function (a, b, c, d, e, f, k, h, n, l, m, t, q) { + Ca(a, b, c, d, e, f, k, h, n, l, m, t, q, Vc, 3); + }, Te, Ue, Ve, function (a, b, c, d, e, f, k, h, n, l, m, t, q) { + Ca(a, b, c, d, e, f, k, h, n, l, m, t, q, le, 2); + }, Se, Te, Ue, Ve]; + this.Hd = function (a, b, c, d) { + return lb(Qa, a, b, c, d); + }; + this.Id = function (a, b, c, d) { + return lb(jb, a, b, c, d); + }; + this.Jd = function (a, b, c, d) { + return lb(kb, a, b, c, d); + }; + this.Ed = function (a, b, c, d) { + return lb(Ab, a, b, c, d); + }; + this.Fd = function (a, b, c, d) { + return lb(Zc, + a, b, c, d); + }; + this.Gd = function (a, b, c, d) { + return lb(Pa, a, b, c, d); + }; + this.WebPDecode = this.Dd = function (a, b, c) { + const d = M(df); + let e = 'VP8StatusCode'; + if (c == p) return ta; + e = hd(a, [0], [b], c.input); + if (e != L) return e == Z ? W : e; + d.j = c.j; + d.Qa = c.Qa; + return e = cf(a, 0, [b], d); + }; +}; diff --git a/src/lib/smoothscroll.js b/src/vendor/smoothscroll.js similarity index 100% rename from src/lib/smoothscroll.js rename to src/vendor/smoothscroll.js diff --git a/tsconfig.json b/tsconfig.json index 95ca0dcb..d5f1ec48 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -65,10 +65,8 @@ "node_modules", "public", "coverage", - "./src/lib/ckin.js", "./src/lib/crypto/crypto.worker.js", - "src/lib/config.ts", - "./src/lib/StackBlur.js", + "src/vendor/StackBlur.js", "./src/lib/*.js", "./src/*.js", "*.js", diff --git a/webpack.common.js b/webpack.common.js index 3e99e671..48dbedcd 100644 --- a/webpack.common.js +++ b/webpack.common.js @@ -51,29 +51,6 @@ module.exports = { } ].filter(l => !!l) }, - /* { - test: /\.s[ac]ss$/i, - use: [ - // Creates `style` nodes from JS strings - 'style-loader', - // Translates CSS into CommonJS - 'css-loader', - // Compiles Sass to CSS - { - loader: 'resolve-url-loader' - }, - { - loader: 'sass-loader', - options: { - sourceMap: true - } - }, - ], - }, - { - test: /\.css$/i, - use: ['style-loader', 'css-loader'], - }, */ { test: /\.ts?$/, use: [ @@ -82,21 +59,6 @@ module.exports = { ], exclude: /node_modules/, }, - /* { - test: /\.(woff2?|ttf|otf|eot|svg|jpg)$/, - exclude: /node_modules/, - loader: 'file-loader', - options: { - outputPath: 'assets/', - publicPath: 'assets/', - name: '[folder]/[name].[ext]' - } - }, */ - { - test: /\.worker\.(js|ts)$/, - use: { loader: 'worker-loader' } - }, - { test: /\.hbs$/, use: [ @@ -105,28 +67,23 @@ module.exports = { } ], }, + resolve: { - extensions: [ '.ts', '.js' ], - }, - //entry: './src/index.ts', - entry: { - index: './src/index.ts', - //mp4: './src/lib/MP4Source.ts', - webp: './src/lib/webp.ts'/* , - lottie: './src/lib/lottie.ts' */ + extensions: ['.ts', '.js'], }, + + entry: './src/index.ts', /* entry: { - index: './src/index.ts', - 'lottie-web': ['lottie-web'] - //lottieLoader: './src/lib/lottieLoader.ts' + index: './src/index.ts' }, */ //devtool: 'inline-source-map', + output: { path: path.resolve(__dirname, 'public'), - //filename: 'bundle.js', filename: "[name].bundle.js", chunkFilename: "[name].chunk.js" }, + devServer: { contentBase: path.join(__dirname, 'public'), watchContentBase: true, @@ -165,19 +122,19 @@ module.exports = { }, sockHost: useLocal ? undefined : 'tweb.enko.club', }, + plugins: [ new ServiceWorkerWebpackPlugin({ entry: path.join(__dirname, 'src/lib/mtproto/mtproto.service.ts'), filename: 'sw.js', excludes: ['**/*'], }), + new HtmlWebpackPlugin({ filename: `index.html`, //template: 'public/index_template.html', template: 'src/index.hbs', - //inject: true, - inject: false, - //inject: 'head', + inject: false, // true, 'head' minify: { removeComments: true, collapseWhitespace: true, @@ -191,7 +148,7 @@ module.exports = { minifyURLs: true }, chunks: "all", - excludeChunks: ['npm.webp-hero'/* , 'mp4' *//* , 'npm.lottie-web' */] + excludeChunks: [] }), new MiniCssExtractPlugin({