diff --git a/.github/workflows/ci-pr.yml b/.github/workflows/ci-pr.yml index 09d0e8a36dc..fcced8ba59d 100644 --- a/.github/workflows/ci-pr.yml +++ b/.github/workflows/ci-pr.yml @@ -27,7 +27,7 @@ jobs: - name: Install NodeJS uses: actions/setup-node@v1 with: - node-version: 16 + node-version: 20 - name: Install NPM Packages run: npm install - name: Lint diff --git a/.github/workflows/continuous-deployment.yml b/.github/workflows/continuous-deployment.yml index 0c56aecc2c5..19bc99730d2 100644 --- a/.github/workflows/continuous-deployment.yml +++ b/.github/workflows/continuous-deployment.yml @@ -22,7 +22,7 @@ jobs: - name: Install NodeJS uses: actions/setup-node@v1 with: - node-version: 16 + node-version: 20 - name: Install NPM Packages run: npm install - name: Lint diff --git a/.github/workflows/continuous-integration.yml b/.github/workflows/continuous-integration.yml index 77941971ef7..72e3c3307a7 100644 --- a/.github/workflows/continuous-integration.yml +++ b/.github/workflows/continuous-integration.yml @@ -28,7 +28,7 @@ jobs: - name: Install NodeJS uses: actions/setup-node@v1 with: - node-version: 16 + node-version: 20 - name: Install NPM Packages run: npm install - name: Lint diff --git a/package.json b/package.json index c0e96098a3b..7411b72a135 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "@logtrine/logtrine": "latest", "asar": "latest", "electron": "6.1.7", - "eslint": "latest", + "eslint": "^8.57.0", "fs-extra": "latest", "innosetup-compiler": "latest", "jest": "latest", @@ -34,7 +34,7 @@ "start:build": "npm run build:web && electron . --update-url=DISABLED --cache-directory=./build/latest", "lint": "npm run lint:app && npm run lint:web", "lint:app": "eslint ./src/app --ignore-path .gitignore", - "lint:web": "eslint ./src/web/mjs/**/*.mjs --ignore-path .gitignore --ignore-pattern Connectors.mjs", + "lint:web": "eslint ./src/web/mjs/**/*.mjs --ignore-path .gitignore --parser-options ecmaVersion:2020", "format": "npm run format:app && npm run format:web", "format:app": "npm run lint:app -- --fix", "format:web": "npm run lint:web -- --fix", diff --git a/src/web/img/connectors/ascalon b/src/web/img/connectors/ascalon new file mode 100644 index 00000000000..6180f25e167 Binary files /dev/null and b/src/web/img/connectors/ascalon differ diff --git a/src/web/img/connectors/assortedscans b/src/web/img/connectors/assortedscans deleted file mode 100644 index 0055fa7cf17..00000000000 Binary files a/src/web/img/connectors/assortedscans and /dev/null differ diff --git a/src/web/img/connectors/comickiba b/src/web/img/connectors/comickiba index e62e7ad6a27..30f28d42eb8 100644 Binary files a/src/web/img/connectors/comickiba and b/src/web/img/connectors/comickiba differ diff --git a/src/web/img/connectors/culturedworks b/src/web/img/connectors/culturedworks new file mode 100644 index 00000000000..7995ef6bb34 Binary files /dev/null and b/src/web/img/connectors/culturedworks differ diff --git a/src/web/img/connectors/lyrascans b/src/web/img/connectors/lyrascans index 8d849fd845d..54653db5637 100644 Binary files a/src/web/img/connectors/lyrascans and b/src/web/img/connectors/lyrascans differ diff --git a/src/web/img/connectors/mangacross b/src/web/img/connectors/mangacross index 93b4ffd88f6..a9b15db0eab 100644 Binary files a/src/web/img/connectors/mangacross and b/src/web/img/connectors/mangacross differ diff --git a/src/web/img/connectors/mangasusuku b/src/web/img/connectors/mangasusuku new file mode 100644 index 00000000000..855b568e879 Binary files /dev/null and b/src/web/img/connectors/mangasusuku differ diff --git a/src/web/img/connectors/manhwaclub b/src/web/img/connectors/manhwaclub index 2c57ccb0c48..69a008aaa16 100644 Binary files a/src/web/img/connectors/manhwaclub and b/src/web/img/connectors/manhwaclub differ diff --git a/src/web/img/connectors/monzeekomik b/src/web/img/connectors/monzeekomik new file mode 100644 index 00000000000..07bec10de5e Binary files /dev/null and b/src/web/img/connectors/monzeekomik differ diff --git a/src/web/img/connectors/ntsvoidscans b/src/web/img/connectors/ntsvoidscans deleted file mode 100644 index 639a323481c..00000000000 Binary files a/src/web/img/connectors/ntsvoidscans and /dev/null differ diff --git a/src/web/img/connectors/nyrax b/src/web/img/connectors/nyrax new file mode 100644 index 00000000000..a7ef45daf2d Binary files /dev/null and b/src/web/img/connectors/nyrax differ diff --git a/src/web/img/connectors/randomscan b/src/web/img/connectors/randomscan index 92ef37ba7b6..b14c57066a0 100644 Binary files a/src/web/img/connectors/randomscan and b/src/web/img/connectors/randomscan differ diff --git a/src/web/img/connectors/readallcomics b/src/web/img/connectors/readallcomics new file mode 100644 index 00000000000..25ec085412e Binary files /dev/null and b/src/web/img/connectors/readallcomics differ diff --git a/src/web/img/connectors/sakuranovel b/src/web/img/connectors/sakuranovel new file mode 100644 index 00000000000..657c996ca53 Binary files /dev/null and b/src/web/img/connectors/sakuranovel differ diff --git a/src/web/img/connectors/shojoscans b/src/web/img/connectors/shojoscans new file mode 100644 index 00000000000..1f2a622a23b Binary files /dev/null and b/src/web/img/connectors/shojoscans differ diff --git a/src/web/mjs/connectors/AGS.mjs b/src/web/mjs/connectors/AGS.mjs new file mode 100644 index 00000000000..1362f8c795a --- /dev/null +++ b/src/web/mjs/connectors/AGS.mjs @@ -0,0 +1,32 @@ +import WordPressMangastream from './templates/WordPressMangastream.mjs'; + +export default class AGS extends WordPressMangastream { + + constructor() { + super(); + super.id = 'ags'; + super.label = 'AGS (Animated Glitched Scans)'; + this.tags = [ 'manga', 'english', 'scanlation' ]; + this.url = 'https://agscomics.com'; + this.path = '/series/?list'; + } + + get icon() { + return '/img/connectors/anigliscans'; + } + + async _getPages(chapter) { + const data = await super._getPages(chapter); + return data.map(element => this.createConnectorURI(element)); + } + + async _handleConnectorURI(payload) { + const request = new Request(payload, this.requestOptions); + request.headers.set('x-referer', this.url); + let response = await fetch(request); + let data = await response.blob(); + data = await this._blobToBuffer(data); + this._applyRealMime(data); + return data; + } +} diff --git a/src/web/mjs/connectors/Ainzscans.mjs b/src/web/mjs/connectors/Ainzscans.mjs index 2b871c532c6..9192334b137 100644 --- a/src/web/mjs/connectors/Ainzscans.mjs +++ b/src/web/mjs/connectors/Ainzscans.mjs @@ -7,7 +7,16 @@ export default class Ainzscans extends WordPressMangastream { super.id = 'ainzscans'; super.label = 'Ainz Scans'; this.tags = [ 'webtoon', 'indonesian', 'scanlation' ]; - this.url = 'https://ainzscans.site'; + this.url = 'https://ainzscans.net'; this.path = '/series/list-mode'; } + + async _getMangas() { + return (await super._getMangas()).map(manga => { + return { + id : manga.id, + title : manga.title.replace('Bahasa Indonesia', '').trim() + }; + }); + } } diff --git a/src/web/mjs/connectors/AlliedFansub.mjs b/src/web/mjs/connectors/AlliedFansub.mjs index bddd3971e75..2e6e3652f03 100644 --- a/src/web/mjs/connectors/AlliedFansub.mjs +++ b/src/web/mjs/connectors/AlliedFansub.mjs @@ -1,14 +1,13 @@ -import WordPressMangastream from './templates/WordPressMangastream.mjs'; +import WordPressMadara from './templates/WordPressMadara.mjs'; -export default class AlliedFansub extends WordPressMangastream { +export default class AlliedFansub extends WordPressMadara { constructor() { super(); super.id = 'alliedfansub'; super.label = 'Allied Fansub'; this.tags = [ 'webtoon', 'turkish', 'scanlation' ]; - this.url = 'https://alliedfansub.online'; - this.path = '/manga/list-mode/'; + this.url = 'https://alliedfansub.net'; this.requestOptions.headers.set('x-referer', this.url); } } diff --git a/src/web/mjs/connectors/AnimePahe.mjs b/src/web/mjs/connectors/AnimePahe.mjs index ec3d324e52e..183dccbd7e2 100644 --- a/src/web/mjs/connectors/AnimePahe.mjs +++ b/src/web/mjs/connectors/AnimePahe.mjs @@ -9,7 +9,7 @@ export default class AnimePahe extends Connector { super.id = 'animepahe'; super.label = 'animepahe'; this.tags = [ 'anime', 'subbed' ]; - this.url = 'https://animepahe.com'; + this.url = 'https://animepahe.ru'; this.config = { resolution: { diff --git a/src/web/mjs/connectors/Ascalon.mjs b/src/web/mjs/connectors/Ascalon.mjs new file mode 100644 index 00000000000..114f739c02d --- /dev/null +++ b/src/web/mjs/connectors/Ascalon.mjs @@ -0,0 +1,12 @@ +import WordPressMangastream from './templates/WordPressMangastream.mjs'; + +export default class Ascalon extends WordPressMangastream { + constructor() { + super(); + super.id = 'ascalon'; + super.label = 'Ascalon'; + this.tags = ['webtoon', 'english', 'scanlation']; + this.url = 'https://ascalonscans.com'; + this.path = '/manga/list-mode/'; + } +} diff --git a/src/web/mjs/connectors/AssortedScans.mjs b/src/web/mjs/connectors/AssortedScans.mjs deleted file mode 100644 index ea33e58599a..00000000000 --- a/src/web/mjs/connectors/AssortedScans.mjs +++ /dev/null @@ -1,78 +0,0 @@ -import Connector from '../engine/Connector.mjs'; -import Manga from '../engine/Manga.mjs'; - -export default class AssortedScans extends Connector { - constructor() { - super(); - super.id = 'assortedscans'; - super.label = 'assortedscans'; - this.tags = ['manga', 'english']; - this.url = 'https://assortedscans.com'; - } - - async _getMangaFromURI(uri) { - const request = new Request(uri, this.requestOptions); - const data = await this.fetchDOM(request, '#series-title'); - const title = data['0'].text.trim(); - const id = uri.pathname + uri.search; - return Manga(this, id, title); - } - - async _getMangas() { - const request = new Request(new URL('/reader/', this.url), this.requestOptions); - const data = await this.fetchDOM(request, 'section.series h2.series-title a'); - return data.map(element => { - return { - id: this.getRootRelativeOrAbsoluteLink(element, this.url), - title: element.text.trim(), - }; - }); - } - - async _getChapters(manga) { - const id = this.getId(manga.id); - const request = new Request(new URL(id, this.url), this.requestOptions); - const data = await this.fetchDOM(request, 'div.chapter > a'); - return data - .map(element => { - return { - id: this.getRootRelativeOrAbsoluteLink(element, this.url), - title: element.title - }; - }); - } - - getId(url) { - return url.match(/\/reader\/.*\/?/)[0]; - } - - async _getMaxSite(chapterId) { - const id = this.getId(chapterId); - const request = new Request(new URL(id + '1/', this.url), this.requestOptions); - const data = await this.fetchDOM(request, 'li.dropdown-element.page-details:last-child a'); - const maxSite = data['0'].text.match(/Page (\d+)/)[1]; - return [id, parseInt(maxSite)]; - } - - async _getPages(chapter) { - - const id = this.getId(chapter.id); - const request = new Request(new URL(id + '1/', this.url), this.requestOptions); - const data = await this.fetchDOM(request, 'li.dropdown-element.page-details a'); - return data.map(element => { - const maxPage = element.text.match(/Page (\d+)/)[1]; - return this.createConnectorURI(this.url + id + maxPage); - }); - } - - async _handleConnectorURI(payload) { - const request = new Request(payload, this.requestOptions); - const data = await this.fetchDOM(request, 'source#page-image'); - const link = this.getAbsolutePath(data[0], request.url); - const response = await fetch(link, this.requestOptions); - const blob = await response.blob(); - const buffer = await this._blobToBuffer(blob); - this._applyRealMime(buffer); - return buffer; - } -} \ No newline at end of file diff --git a/src/web/mjs/connectors/AsuraScansTR.mjs b/src/web/mjs/connectors/AsuraScansTR.mjs index b0d23e77a77..7dcc0c84bfa 100644 --- a/src/web/mjs/connectors/AsuraScansTR.mjs +++ b/src/web/mjs/connectors/AsuraScansTR.mjs @@ -1,31 +1,16 @@ -import WordPressMangastream from './templates/WordPressMangastream.mjs'; +import WordPressMadara from './templates/WordPressMadara.mjs'; -export default class AsuraScansTR extends WordPressMangastream { +export default class AsuraScansTR extends WordPressMadara { constructor() { super(); super.id = 'asurascans-tr'; super.label = 'Asura Scans (TR)'; this.tags = ['webtoon', 'turkish']; - this.url = 'https://armoniscans.com'; - this.path = '/manga/list-mode/'; - this.queryPages = 'div#readerarea p img'; - this.requestOptions.headers.set('x-user-agent', 'Mozilla/5.0 (Linux; Android 9; Pixel) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4026.0 Mobile Safari/537.36'); + this.url = 'https://asurascans.com.tr'; } get icon() { return '/img/connectors/asurascans'; } - - async _getPages(chapter) { - const excludes = [ - /panda_gif_large/i, - /2021\/04\/page100-10\.jpg/i, - /2021\/03\/20-ending-page-\.jpg/i, - /ENDING-PAGE/i - ]; - const images = await super._getPages(chapter); - return images.filter(link => !excludes.some(rgx => rgx.test(link))); - } - } diff --git a/src/web/mjs/connectors/ComicBoost.mjs b/src/web/mjs/connectors/ComicBoost.mjs index fcdc00a74e7..99f2beb2416 100644 --- a/src/web/mjs/connectors/ComicBoost.mjs +++ b/src/web/mjs/connectors/ComicBoost.mjs @@ -45,15 +45,29 @@ export default class ComicBoost extends Connector { } async _getChapters(manga) { - let request = new Request(new URL(manga.id, this.url), this.requestOptions ); - let data = await this.fetchDOM(request, 'a.book-product-list-item'); + const chapterList = []; + const request = new Request(new URL(manga.id, this.url), this.requestOptions); + const [ data ] = await this.fetchDOM(request, 'ul.pagination-list.right li.to-last a'); + const pageCount = data ?parseInt(new URL(data.href).searchParams.get('p')) : 1; + for(let page = 1; page <= pageCount; page++) { + const chapters = await this._getChaptersFromPage(manga, page); + chapterList.push(...chapters); + } + return chapterList.filter(el => !el.id.includes('?coin=')); //exclude not accessible chapters + } + + async _getChaptersFromPage(manga, page) { + const url = new URL(manga.id, this.url); + url.searchParams.set('p', page.toString()); + const request = new Request(url, this.requestOptions ); + const data = await this.fetchDOM(request, 'a.book-product-list-item'); return data.map(element => { return { id: this.getRootRelativeOrAbsoluteLink(element, this.url), title: element.dataset.title.trim(), language: '' }; - }).filter(el => !el.id.includes('?coin=')); //exclude not accessible chapters + }); } async _getPages(chapter) { @@ -125,7 +139,7 @@ export default class ComicBoost extends Connector { if (fileinfos.BlockHeight) //if we have a block size for the page, its a puzzle ! { mode = 'puzzle'; - blocks = window.NFBR.a6G.a5x.prototype.b0Q(fPage, fPage.width, fPage.height) + blocks = window.NFBR.a6G.a5x.prototype.g8w(fPage, fPage.width, fPage.height) } return { diff --git a/src/web/mjs/connectors/ComicExtra.mjs b/src/web/mjs/connectors/ComicExtra.mjs index 85f973816fa..2ec761d587e 100644 --- a/src/web/mjs/connectors/ComicExtra.mjs +++ b/src/web/mjs/connectors/ComicExtra.mjs @@ -8,7 +8,7 @@ export default class ComicExtra extends Connector { super.id = 'comicextra'; super.label = 'ComicExtra'; this.tags = ['comic', 'english']; - this.url = 'https://comicextra.me'; + this.url = 'https://comixextra.com'; this.path = '/comic-list/'; } @@ -21,7 +21,7 @@ export default class ComicExtra extends Connector { return this.getRootRelativeOrAbsoluteLink(element, request.url); }); - for(let page of pages) { + for (let page of pages) { const mangas = await this._getMangasFromPage(page); mangaList.push(...mangas); } diff --git a/src/web/mjs/connectors/ComicK.mjs b/src/web/mjs/connectors/ComicK.mjs index 656ad42231d..0f551da2a29 100644 --- a/src/web/mjs/connectors/ComicK.mjs +++ b/src/web/mjs/connectors/ComicK.mjs @@ -9,15 +9,15 @@ export default class ComicK extends Connector { super.id = 'comick'; super.label = 'ComicK'; this.tags = [ 'manga', 'english' ]; - this.url = 'https://comick.ink'; - this.apiurl = 'https://api.comick.ink'; + this.url = 'https://comick.io'; + this.apiurl = 'https://api.comick.io'; this.requestOptions.headers.set('x-origin', this.url ); this.requestOptions.headers.set('x-referer', this.apiurl ); } canHandleURI(uri) { - return /https?:\/\/comick\.(app|ink|cc)/.test(uri.origin); + return /https?:\/\/comick\.(app|ink|cc|io)/.test(uri.origin); } async _getEmbeddedJSON(uri) { diff --git a/src/web/mjs/connectors/ComicKiba.mjs b/src/web/mjs/connectors/ComicKiba.mjs index 215e9e9d9f1..58be7a54ed0 100644 --- a/src/web/mjs/connectors/ComicKiba.mjs +++ b/src/web/mjs/connectors/ComicKiba.mjs @@ -1,14 +1,92 @@ -import WordPressMadara from './templates/WordPressMadara.mjs'; +import Connector from '../engine/Connector.mjs'; +import Manga from '../engine/Manga.mjs'; -export default class ComicKiba extends WordPressMadara { +export default class ComicKiba extends Connector { constructor() { super(); super.id = 'comickiba'; - super.label = 'Comic Kiba'; + super.label = 'ManhuaGold'; this.tags = [ 'manga', 'webtoon', 'english' ]; - this.url = 'https://comickiba.com'; + this.url = 'https://manhuagold.top'; + } + + async _getMangaFromURI(uri) { + const request = new Request(uri, this.requestOptions); + const [ data ] = await this.fetchDOM(request, 'article header h1'); + return new Manga(this, uri.pathname, data.textContent.trim()); + } + + async _getMangas() { + const mangaList = []; + for (let page = 1, run = true; run; page++) { + const mangas = await this._getMangasFromPage(page); + mangas.length > 0 ? mangaList.push(...mangas) : run = false; + } + return mangaList; + } + + async _getMangasFromPage(page) { + const uri = new URL(`/all-manga/${page}/`, this.url); + const request = new Request(uri, this.requestOptions); + const data = await this.fetchDOM(request, 'div.grid div.text-center a.clamp'); + return data.map(element => { + return { + id: this.getRootRelativeOrAbsoluteLink(element, this.url), + title: element.text.trim() + }; + }); + } + + async _getChapters(manga) { + const uri = new URL(manga.id, this.url); + const request = new Request(uri, this.requestOptions); + const data = await this.fetchDOM(request, 'ul#myUL li a'); + return data.map(element => { + return { + id: this.getRootRelativeOrAbsoluteLink(element, this.url), + title: element.text.trim() + }; + }); + } + + async _getPages(chapter) { + const script = ` + new Promise((resolve, reject) => { + + function parseResults(data) { + const dom = new DOMParser().parseFromString(data, 'text/html'); + let nodes = [...dom.querySelectorAll('div.separator')]; + if (nodes.length == 0) reject(); + + //sort if needed + if (nodes[0].hasAttribute('data-index')) { + nodes = nodes.sort(function (a, b) { + const za = parseInt(a.dataset.index); + const zb = parseInt(b.dataset.index); + return za - zb; + }); + } + resolve(nodes.map(element => { + const anchorElement = element.querySelector('a.readImg'); + return anchorElement.href ; + })); + } + + const ajaxendpoint = new URL('/ajax/image/list/chap/'+ CHAPTER_ID, window.location.href); + fetch(ajaxendpoint, { + headers: { + 'X-Requested-With' : 'XMLHttpRequest', + }}) + .then(response => response.json()) + .then(jsonData => { + parseResults(jsonData.html); + }); + }); + `; - this.queryPages = 'div.page-break source, li.blocks-gallery-item source'; + const uri = new URL(chapter.id, this.url); + const request = new Request(uri, this.requestOptions); + return Engine.Request.fetchUI(request, script); } -} \ No newline at end of file +} diff --git a/src/web/mjs/connectors/ComicWalker.mjs b/src/web/mjs/connectors/ComicWalker.mjs index 89308021ba2..61b71f307c2 100644 --- a/src/web/mjs/connectors/ComicWalker.mjs +++ b/src/web/mjs/connectors/ComicWalker.mjs @@ -6,114 +6,92 @@ export default class ComicWalker extends Connector { constructor() { super(); super.id = 'comicwalker'; - super.label = 'コミックウォーカー (ComicWalker)'; + super.label = 'カドコミ (KadoComi)'; this.tags = [ 'manga', 'japanese' ]; this.url = 'https://comic-walker.com'; + this.apiURL = 'https://comic-walker.com/api/'; } async _getMangaFromURI(uri) { - let request = new Request(uri, this.requestOptions); - let data = await this.fetchDOM(request, 'div#mainContent div#detailIndex div.comicIndex-box h1'); - let id = uri.pathname + uri.search; - let title = data[0].textContent.trim(); - return Promise.resolve(new Manga(this, id, title)); + const workCode = uri.pathname.match(/\/detail\/([^/]+)/)[1]; //strip search + const apiCallUrl = new URL(`contents/details/work?workCode=${workCode}`, this.apiURL); + const { work } = await this.fetchJSON(new Request(apiCallUrl, this.requestOptions)); + return new Manga(this, workCode, work.title.trim()); } - async _getMangaListPage(uri) { - let request = new Request(uri, this.requestOptions); - let data = await this.fetchDOM(request, 'div.comicPage ul.tileList li a p.tileTitle span'); - return data.map(element => { + async _getMangas() { + const mangaList = []; + for (let page = 0, run = true; run; page++) { + const mangas = await this._getMangasFromPage(page); + mangas.length > 0 ? mangaList.push(...mangas) : run = false; + } + return mangaList; + } + + async _getMangasFromPage(page) { + const apiCallUrl = new URL(`search/keywords?keywords=&limit=100&offset=${ page * 100}`, this.apiURL); + const data = await this.fetchJSON(new Request(apiCallUrl, this.requestOptions)); + return data.result.map(manga => { return { - id: this.getRootRelativeOrAbsoluteLink(element.closest('a'), request.url), - title: element.textContent.replace(/^[^\s]+\s/, '').trim() + id: manga.code, + title: manga.title.trim() }; }); } - async _getMangaList(callback) { - try { - let mangaList = []; - for(let language of ['en', 'tw', 'jp']) { - let uri = new URL('/contents/list/', this.url); - let request = new Request(`${this.url}/set_lang/${language}/`, this.requestOptions); - request.headers.set('x-referer', uri.href); - let data = await this.fetchDOM(request, 'div.comicPage div.pager ul.clearfix li:nth-last-of-type(2) a'); - let pageCount = parseInt(data[0].text.trim()); - for(let page = 1; page <= pageCount; page++) { - uri.searchParams.set('p', page); - let mangas = await this._getMangaListPage(uri); - mangaList.push(...mangas); - } - } - callback(null, mangaList); - } catch(error) { - console.error(error, this); - callback(error, undefined); + async _getChapters( manga ) { + const chapterList = []; + const apiCallUrl = new URL(`contents/details/work?workCode=${manga.id}`, this.apiURL); + const data = await this.fetchJSON(new Request(apiCallUrl, this.requestOptions)); + + for (const episodeType of ['firstEpisodes', 'latestEpisodes' ]) { + + chapterList.push(...data[episodeType].result.map(episode => { + const title = [episode.title, episode.subtitle].join(' ').trim(); + return { id: episode.id, title : title}; + })); } - } - _getChapterList( manga, callback ) { - let request = new Request( this.url + manga.id, this.requestOptions ); - this.fetchDOM( request, 'div#ulreversible ul#reversible li a' ) - .then( data => { - let chapterList = data.map( element => { - return { - id: this.getRootRelativeOrAbsoluteLink( element, request.url ), - title: element.title.replace( manga.title, '' ).trim(), - language: '' - }; - } ); - callback( null, chapterList ); - } ) - .catch( error => { - console.error( error, manga ); - callback( error, undefined ); - } ); + for (const comic of data.comics.result) { + chapterList.push(...comic.episodes.map(episode => { + return { + id: episode.id, + title : episode.title.trim() + }; + })); + } + + return chapterList.filter(chapter => chapter === chapterList.find(c => c.id === chapter.id)); + } - _getPageList( manga, chapter, callback ) { - let request = new Request( this.url + chapter.id, this.requestOptions ); - this.fetchDOM( request, 'main#app' ) - .then( data => { - const endpoints = data[0].dataset.apiEndpointUrl ? data[0].dataset.apiEndpointUrl : JSON.parse(data[0].dataset.apiEndpointUrls); - let uri = `${endpoints.nc || endpoints.cw || endpoints}/api/v1/comicwalker/episodes/${data[0].dataset.episodeId}/frames`; - request = new Request( uri, this.requestOptions ); - return this.fetchJSON( request ); - } ) - .then( data => { - let pageList = data.data.result.map( page => this.createConnectorURI( this.getAbsolutePath( page.meta.source_url, this.url ) ) ); - callback( null, pageList ); - } ) - .catch( error => { - console.error( error, chapter ); - callback( error, undefined ); - } ); + async _getPages( chapter ) { + const apiCallUrl = new URL(`contents/viewer?episodeId=${chapter.id}&imageSizeType=width:1284`, this.apiURL); + const { manuscripts } = await this.fetchJSON(new Request(apiCallUrl, this.requestOptions)); + return manuscripts.map(page => this.createConnectorURI({ ...page })); } async _handleConnectorURI(payload) { - /* - * TODO: only perform requests when from download manager - * or when from browser for preview and selected chapter matches - */ - let passphrase = payload.split('/').find(part => /^[\da-f]{16}/.test(part)); - if(passphrase) { - let request = new Request(payload, this.requestOptions); - let response = await fetch(request); - return this._decrypt(await response.arrayBuffer(), passphrase); - } else { - return super._handleConnectorURI(payload); + const uri = new URL(payload.drmImageUrl, this.url); + const request = new Request(uri, this.requestOptions); + const response = await fetch(request); + switch (payload.drmMode) { + case 'xor': { + const encrypted = await response.arrayBuffer(); + const data = { + mimeType: response.headers.get('content-type'), + data: this._xor(encrypted, this._generateKey(payload.drmHash)) + }; + this._applyRealMime(data); + return data; + } + case 'raw': { + const data = await response.blob(); + return this._blobToBuffer(data); + } } } - _decrypt(encrypted, passphrase) { - let key = this._generateKey(passphrase); - let decrypted = this._xor(encrypted, key); - return Promise.resolve({ - mimeType: 'image/jpeg', - data: decrypted - }); - } - /** ****************************** * ** COMIC-WALKER CODE BEGIN *** @@ -140,4 +118,4 @@ export default class ComicWalker extends Connector { * ** COMIC-WALKER CODE END *** *************************** */ -} \ No newline at end of file +} diff --git a/src/web/mjs/connectors/CovenScan.mjs b/src/web/mjs/connectors/CovenScan.mjs index 24b2e3e0b5b..222eed9051e 100644 --- a/src/web/mjs/connectors/CovenScan.mjs +++ b/src/web/mjs/connectors/CovenScan.mjs @@ -7,7 +7,7 @@ export default class CovenScan extends WordPressMadara { super.id = 'covenscan'; super.label = 'Coven Scan'; this.tags = [ 'manga', 'webtoon', 'portuguese', 'scanlation' ]; - this.url = 'https://cvenscan.com'; + this.url = 'https://cvnscan.com'; } } diff --git a/src/web/mjs/connectors/CulturedWorks.mjs b/src/web/mjs/connectors/CulturedWorks.mjs new file mode 100644 index 00000000000..1fb84285a7a --- /dev/null +++ b/src/web/mjs/connectors/CulturedWorks.mjs @@ -0,0 +1,12 @@ +import WordPressMangastream from './templates/WordPressMangastream.mjs'; + +export default class CulturedWorks extends WordPressMangastream { + constructor() { + super(); + super.id = 'culturedworks'; + super.label = 'CulturedWorks'; + this.tags = ['webtoon', 'english', 'scanlation']; + this.url = 'https://culturedworks.com'; + this.path = '/manga/list-mode/'; + } +} \ No newline at end of file diff --git a/src/web/mjs/connectors/Cycomi.mjs b/src/web/mjs/connectors/Cycomi.mjs index 4917ab4a4e8..e7a1be385ad 100644 --- a/src/web/mjs/connectors/Cycomi.mjs +++ b/src/web/mjs/connectors/Cycomi.mjs @@ -25,18 +25,19 @@ export default class CyComi extends Connector { async _getMangas() { const mangaList = []; - for(let page = 0, run = true; run; page++) { - const request = new Request(`${this.apiUrl}/home/paginatedList?limit=${50}&page=${page}`, this.requestOptions); - const { data } = await this.fetchJSON(request); + for (let page = 0, run = true; run; page++) { + const request = new Request(`${this.apiUrl}/home/paginatedList?limit=${50}&page=${page}`); + const { data } = await this.fetchJSON(request, this.requestOptions); const mangas = data.reduce((accumulator, entry) => { - if(entry) { - const titles = entry.titles.map(manga => new Manga(this, manga.titleId.toString(), manga.titleName)); + if (entry) { + const titles = entry.titles.map(manga => { + return { id: manga.titleId.toString(), title : manga.titleName }; + }); accumulator.push(...titles); } return accumulator; }, []); mangas.length ? mangaList.push(...mangas) : run = false; - } return mangaList; } @@ -58,9 +59,9 @@ export default class CyComi extends Connector { } async _fetchMangaChapters(manga) { - const request = new Request(`${this.apiUrl}/chapter/list?titleId=${manga.id}`, this.requestOptions); + const request = new Request(`${this.apiUrl}/chapter/paginatedList?titleId=${manga.id}&sort=1`, this.requestOptions); const { data, resultCode } = await this.fetchJSON(request); - return resultCode !== 1 || !data.chapters ? [] : data.chapters.map(chapter => { + return resultCode !== 1 || !data ? [] : data.map(chapter => { const title = [ chapter.name, chapter.subName ].filter(item => item).join(' - '); return {id : `/chapter/page/list?titleId=${manga.id}&chapterId=${chapter.id}`, title}; }); @@ -81,9 +82,10 @@ export default class CyComi extends Connector { const { data: { id, chapters } } = await this.fetchJSON(request); return !chapters ? [] : chapters.reduce(async (accumulator, chapter) => { const url = `${this.apiUrl}/singleBook/page/list?singleBookId=${id}&chapterId=${chapter.id}`; - const { data: { pages }, resultCode } = await this.fetchJSON(new Request(url), this.requestOptions); + const request = new Request(url, this.requestOptions); + const { data: { pages }, resultCode } = await this.fetchJSON(request, this.requestOptions); return resultCode !== 1 ? accumulator : (await accumulator).concat(this._mapPages(volume, pages)); - }); + }, Promise.resolve([])); } async _fetchChapterPages(chapter) { diff --git a/src/web/mjs/connectors/DrakeScans.mjs b/src/web/mjs/connectors/DrakeScans.mjs index 9e3e5277265..f4b8222ecae 100644 --- a/src/web/mjs/connectors/DrakeScans.mjs +++ b/src/web/mjs/connectors/DrakeScans.mjs @@ -1,12 +1,12 @@ -import WordPressMadara from './templates/WordPressMadara.mjs'; - -export default class DrakeScans extends WordPressMadara { +import WordPressMangastream from './templates/WordPressMangastream.mjs'; +export default class DrakeScans extends WordPressMangastream { constructor() { super(); super.id = 'drakescans'; super.label = 'DrakeScans'; this.tags = [ 'webtoon', 'english']; - this.url = 'https://drakescans.com'; + this.url = 'https://drake-scans.com'; + this.path = '/manga/list-mode/'; } } \ No newline at end of file diff --git a/src/web/mjs/connectors/Fbsquads.mjs b/src/web/mjs/connectors/Fbsquads.mjs index ac71a9042aa..26b9be5a8dd 100644 --- a/src/web/mjs/connectors/Fbsquads.mjs +++ b/src/web/mjs/connectors/Fbsquads.mjs @@ -6,6 +6,6 @@ export default class Fbsquads extends WordPressMadara { super.id = 'fbsquads'; super.label = 'Fleur Blanche Squads'; this.tags = [ 'webtoon', 'spanish', 'scanlation', 'yaoi' ]; - this.url = 'https://fbsquads.com'; + this.url = 'https://fbsscan.com'; } -} \ No newline at end of file +} diff --git a/src/web/mjs/connectors/FirstKiss.mjs b/src/web/mjs/connectors/FirstKiss.mjs index 29810a6e6cd..c4f7e394ff2 100644 --- a/src/web/mjs/connectors/FirstKiss.mjs +++ b/src/web/mjs/connectors/FirstKiss.mjs @@ -80,7 +80,7 @@ export default class FirstKiss extends Connector { const imgdata = JSON.parse(atob(parseJwt(tokenElement.getAttribute('value')).data)); resolve(imgdata.map(image => new URL(image, imgCdnUrl).href)); } - const images = [...document.querySelectorAll("div.reading-detail.box_doc img:not(noscript img)")]; + const images = [...document.querySelectorAll("div.reading-detail.box_doc img")].filter(element => element.dataset.index); resolve(images.map(image => image.getAttribute('src'))); }); `; diff --git a/src/web/mjs/connectors/FlameScansORG.mjs b/src/web/mjs/connectors/FlameScansORG.mjs index 39a2a39b678..5e93a7753f3 100644 --- a/src/web/mjs/connectors/FlameScansORG.mjs +++ b/src/web/mjs/connectors/FlameScansORG.mjs @@ -9,12 +9,51 @@ export default class FlameScansORG extends WordPressMangastream { this.tags = [ 'manga', 'webtoon', 'english' ]; this.url = 'https://flamecomics.com'; this.path = '/series/list-mode/'; - this.queryMangas = 'div.postbody div.soralist ul li a.series'; this.queryChapters = 'div#chapterlist ul li a'; } async _getPages(chapter) { - return (await super._getPages(chapter)).filter(page => !page.includes('readonflamescans.png')); + const url = new URL(chapter.id, this.url); + const request = new Request(url, this.requestOptions); + const data = await this.fetchDOM(request, 'div.composed_figure'); + if (data.length == 0) return (await super._getPages(chapter)).filter(page => !page.includes('readonflamescans.png')); + + //need to combine pictures + return data.map(page => { + const images = [...page.querySelectorAll('source')].map(image => image.getAttribute('src')); + return this.createConnectorURI({ images : images }); + }); + } + + async _handleConnectorURI(payload) { + const promises = payload.images.map(async part => { + const request = new Request(part, this.requestOptions); + request.headers.set('x-referer', this.url); + const response = await fetch(request); + const data = await response.blob(); + return createImageBitmap(data); + }); + const bitmaps = await Promise.all(promises); + const data = await this.composePuzzle(bitmaps); + return this._blobToBuffer(data); + } + + async composePuzzle(bitmaps) { + return new Promise(resolve => { + let canvas = document.createElement('canvas'); + //combine 2 pictures + const b1 = bitmaps[0]; + const b2 = bitmaps[1]; + canvas.width = b1.width+b2.width; + canvas.height = b1.height; + let ctx = canvas.getContext('2d'); + ctx.drawImage(b1, 0, 0); + ctx.drawImage(b2, b1.width, 0); + canvas.toBlob(data => { + resolve(data); + }, + Engine.Settings.recompressionFormat.value, parseFloat(Engine.Settings.recompressionQuality.value)/100); + }); } } diff --git a/src/web/mjs/connectors/GekkouScans.mjs b/src/web/mjs/connectors/GekkouScans.mjs index 3a589b4673c..7b1b882b051 100644 --- a/src/web/mjs/connectors/GekkouScans.mjs +++ b/src/web/mjs/connectors/GekkouScans.mjs @@ -7,6 +7,6 @@ export default class GekkouScans extends WordPressMadara { super.id = 'gekkouscans'; super.label = 'Gekkou Scans'; this.tags = [ 'manga', 'webtoon', 'portuguese' ]; - this.url = 'https://gekkouscans.top'; + this.url = 'https://gekkou.site'; } } diff --git a/src/web/mjs/connectors/HentaiRead.mjs b/src/web/mjs/connectors/HentaiRead.mjs index 77493a2f4fa..c76d543a11e 100644 --- a/src/web/mjs/connectors/HentaiRead.mjs +++ b/src/web/mjs/connectors/HentaiRead.mjs @@ -10,19 +10,36 @@ export default class HentaiRead extends WordPressMadara { this.url = 'https://hentairead.com'; } - // very similar to tritiniascans except that this websites uses an array instead of an object + async _getChapters(manga) { + const request = new Request(new URL(manga.id, this.url), this.requestOptions); + const [ data ] = await this.fetchDOM(request, 'a.btn-read-now'); + return [{ + id : data.pathname, + title : manga.title + }]; + } + async _getPages(chapter) { - let request = new Request(this.url + chapter.id, this.requestOptions); - let response = await fetch(request); - let data = await response.text(); - let chapterImages = data.match(/chapImages\s*=\s*(\[[^\]]+\])/); - let preloadedImages = data.match(/chapter_preloaded_images\s*=\s*(\[[^\]]+\])/); - let pageList = JSON.parse((chapterImages || preloadedImages)[1]); - return pageList.map(link => { - let uri = new URL(link); - uri.searchParams.set('quality', '100'); - uri.searchParams.delete('w'); - return uri.href; - }); + const request = new Request(this.url + chapter.id, this.requestOptions); + const script = ` + new Promise((resolve, reject) => { + setTimeout(() => { + try { + const pagelist = (window.chapterImages ?? window.chapter_preloaded_images); + resolve( pagelist.map(image=> { + const uri = new URL(image.src); + uri.searchParams.set('quality', '100'); + uri.searchParams.delete('w'); + return uri.href; + })); + } catch (error) { + reject(error); + } + }, + 500); + }); + `; + const pages = await Engine.Request.fetchUI(request, script); + return pages.map(page => page.replace(/\/i\d+\.wp\.com/, '')); } -} \ No newline at end of file +} diff --git a/src/web/mjs/connectors/ImmortalUpdates.mjs b/src/web/mjs/connectors/ImmortalUpdates.mjs index c411e200f07..bb48b927467 100644 --- a/src/web/mjs/connectors/ImmortalUpdates.mjs +++ b/src/web/mjs/connectors/ImmortalUpdates.mjs @@ -7,6 +7,6 @@ export default class ImmortalUpdates extends WordPressMadara { super.id = 'immortalupdates'; super.label = 'Immortal Updates'; this.tags = [ 'webtoon', 'english' ]; - this.url = 'https://immortalupdates.com'; + this.url = 'https://mortalsgroove.com'; } -} \ No newline at end of file +} diff --git a/src/web/mjs/connectors/InfernalVoidScans.mjs b/src/web/mjs/connectors/InfernalVoidScans.mjs index 5d4b589ae58..e082cc0df35 100644 --- a/src/web/mjs/connectors/InfernalVoidScans.mjs +++ b/src/web/mjs/connectors/InfernalVoidScans.mjs @@ -7,7 +7,8 @@ export default class InfernalVoidScans extends WordPressMangastream { super.id = 'infernalvoidscans'; super.label = 'InfernalVoidScans'; this.tags = [ 'webtoon', 'scanlation', 'english' ]; - this.url = 'https://void-scans.com'; + this.url = 'https://hivetoon.com'; this.path = '/manga/list-mode/'; + this.requestOptions.headers.set('x-referer', this.url); } -} \ No newline at end of file +} diff --git a/src/web/mjs/connectors/JiangzaiToon.mjs b/src/web/mjs/connectors/JiangzaiToon.mjs index 4cf6fd55d4d..076736d9a71 100644 --- a/src/web/mjs/connectors/JiangzaiToon.mjs +++ b/src/web/mjs/connectors/JiangzaiToon.mjs @@ -7,6 +7,6 @@ export default class JiangzaiToon extends WordPressMadara { super.id = 'jiangzaitoon'; super.label = 'Jiangzaitoon'; this.tags = [ 'webtoon', 'hentai', 'turkish' ]; - this.url = 'https://jiangzaitoon.biz'; + this.url = 'https://jiangzaitoon.dev'; } } diff --git a/src/web/mjs/connectors/KissAway.mjs b/src/web/mjs/connectors/KissAway.mjs index 4e58202b5b8..b1a627559ea 100644 --- a/src/web/mjs/connectors/KissAway.mjs +++ b/src/web/mjs/connectors/KissAway.mjs @@ -11,10 +11,18 @@ export default class KissAway extends FlatManga { this.requestOptions.headers.set('x-referer', this.url); } + generateRandomStr(length) { + const charmap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; + let result =''; + for (let o = 0; o < length; o++) result += charmap.charAt(Math.floor(Math.random() * charmap.length)); + return result; + } + async _getChapters(manga) { + const randomStr = this.generateRandomStr(25); const script = ` new Promise(async resolve => { - const uri = new URL('app/manga/controllers/cont.listChapter.php', window.location.origin); + const uri = new URL('${randomStr}.lstc', window.location.origin); uri.searchParams.set('slug', dataL); const response = await fetch(uri); data = await response.text(); @@ -37,21 +45,21 @@ export default class KissAway extends FlatManga { async _getPages(chapter) { const uri = new URL(chapter.id, this.url); + const randomStr = this.generateRandomStr(30); const script = ` new Promise(async resolve => { const chapId = document.querySelector('input#chapter').value; - const uri = new URL('app/manga/controllers/cont.listImg.php', window.location.origin); + const uri = new URL('${randomStr}.iog', window.location.origin); uri.searchParams.set('cid', chapId); const response = await fetch(uri); const data = await response.text(); const dom = new DOMParser().parseFromString(data, "text/html"); const nodes = [...dom.querySelectorAll('img.chapter-img')]; - resolve(nodes.map(picture => picture.src)); + resolve(nodes.map(picture => picture.src).filter(image => !image.match(/olimposcan/))); }); `; const request = new Request(uri, this.requestOptions); const data = await Engine.Request.fetchUI(request, script); return data.map(link => this.createConnectorURI(link)); } - } diff --git a/src/web/mjs/connectors/KissComic.mjs b/src/web/mjs/connectors/KissComic.mjs index e5be5d4dccf..f64fc853304 100644 --- a/src/web/mjs/connectors/KissComic.mjs +++ b/src/web/mjs/connectors/KissComic.mjs @@ -55,7 +55,15 @@ export default class KissComic extends Connector { const script = ` new Promise((resolve, reject) => { setTimeout(() => { - resolve(lstImages); + try { + resolve( + Array.from(document.querySelectorAll('#divImage img')) + .map(img => (img.src || '').replace(/=s\\d+/, '=s0')) + .filter(Boolean) + ) + } catch (err) { + reject(err); + } }, 1000); }); `; diff --git a/src/web/mjs/connectors/KnightNoFansub.mjs b/src/web/mjs/connectors/KnightNoFansub.mjs index 4ccab719360..914606b1947 100644 --- a/src/web/mjs/connectors/KnightNoFansub.mjs +++ b/src/web/mjs/connectors/KnightNoFansub.mjs @@ -7,6 +7,7 @@ export default class KnightNoFansub extends WordPressMadara { super.id = 'knightnofansub'; super.label = 'Knight no Fansub'; this.tags = [ 'webtoon', 'high-quality', 'spanish', 'scanlation' ]; - this.url = 'https://knightnoscanlation.com'; + this.url = 'https://lectorkns.com'; + this.requestOptions.headers.set('x-referer', this.uri); } -} \ No newline at end of file +} diff --git a/src/web/mjs/connectors/KomikAV.mjs b/src/web/mjs/connectors/KomikAV.mjs index aff1e8a4fe6..0d5c2b6b6ef 100644 --- a/src/web/mjs/connectors/KomikAV.mjs +++ b/src/web/mjs/connectors/KomikAV.mjs @@ -5,9 +5,9 @@ export default class KomikAV extends WordPressMangastream { constructor() { super(); super.id = 'komikav'; - super.label = 'KomikAV'; + super.label = 'APKomik'; this.tags = [ 'manga', 'indonesian' ]; - this.url = 'https://komikav.com'; + this.url = 'https://apkomik.cc'; this.path = '/manga/list-mode/'; } -} \ No newline at end of file +} diff --git a/src/web/mjs/connectors/KomikCast.mjs b/src/web/mjs/connectors/KomikCast.mjs index 78ea8e6211e..db889667703 100644 --- a/src/web/mjs/connectors/KomikCast.mjs +++ b/src/web/mjs/connectors/KomikCast.mjs @@ -7,13 +7,14 @@ export default class KomikCast extends WordPressMangastream { super.id = 'komikcast'; super.label = 'KomikCast'; this.tags = [ 'manga', 'indonesian' ]; - this.url = 'https://komikcast.ch'; + this.url = 'https://komikcast.cz'; this.path = '/daftar-komik/?list'; + this.querMangaTitleFromURI = 'h1.komik_info-content-body-title'; this.queryMangas = 'div.text-mode_list-items ul li a.series, div.text-mode_list-items ul li a.text-mode_list-item'; this.queryChapters = 'div.komik_info-chapters ul li.komik_info-chapters-item a.chapter-link-item'; this.queryChaptersTitle = undefined; - this.queryPages = 'div.main-reading-area source.lazyload, div.separator source.lazyload'; + this.queryPages = 'div.main-reading-area img'; this.requestOptions.headers.set('x-referer', this.url); } @@ -21,10 +22,4 @@ export default class KomikCast extends WordPressMangastream { // do nothing on purpose } - async _getPages(chapter) { - const uri = new URL(chapter.id, this.url); - const request = new Request(uri, this.requestOptions); - const data = await this.fetchDOM(request, this.queryPages); - return data.map(image => this.createConnectorURI(this.getAbsolutePath(image.dataset['src'], this.url))); - } } diff --git a/src/web/mjs/connectors/KomikNesia.mjs b/src/web/mjs/connectors/KomikNesia.mjs index 7a490a14628..84c7c2e7e53 100644 --- a/src/web/mjs/connectors/KomikNesia.mjs +++ b/src/web/mjs/connectors/KomikNesia.mjs @@ -7,12 +7,7 @@ export default class KomikNesia extends WordPressMangastream { super.id = 'komiknesia'; super.label = 'KomikNesia'; this.tags = [ 'manga', 'webtoon', 'indonesian' ]; - this.url = 'https://komiknesia.com'; - this.path = '/latest-update/?list'; - - this.queryMangas = 'div.listttl ul li a'; - this.queryChapters = 'div#chapter_list span.eps a'; - this.queryChaptersTitle = undefined; - this.queryPages = 'div.reader-area img[src]:not([src=""])'; + this.url = 'https://komiknesia.xyz'; + this.path = '/manga/list-mode'; } -} \ No newline at end of file +} diff --git a/src/web/mjs/connectors/KomikTap.mjs b/src/web/mjs/connectors/KomikTap.mjs index 512c2b188cd..1f36b0c88ce 100644 --- a/src/web/mjs/connectors/KomikTap.mjs +++ b/src/web/mjs/connectors/KomikTap.mjs @@ -7,7 +7,7 @@ export default class KomikTap extends WordPressMangastream { super.id = 'komiktap'; super.label = 'KomikTap'; this.tags = [ 'manga', 'webtoon', 'hentai', 'indonesian' ]; - this.url = 'https://komiktap.me'; + this.url = 'https://komiktap.info'; this.path = '/manga/list-mode/'; } } diff --git a/src/web/mjs/connectors/LELScanVF.mjs b/src/web/mjs/connectors/LELScanVF.mjs index bb04868eb4b..9fbc609749d 100644 --- a/src/web/mjs/connectors/LELScanVF.mjs +++ b/src/web/mjs/connectors/LELScanVF.mjs @@ -1,36 +1,69 @@ -import MangaReaderCMS from './templates/MangaReaderCMS.mjs'; +import Connector from '../engine/Connector.mjs'; +import Manga from '../engine/Manga.mjs'; -export default class LELScanVF extends MangaReaderCMS { +export default class LELScanVF extends Connector { constructor() { super(); super.id = 'lelscanvf'; super.label = 'LELSCAN-VF'; this.tags = [ 'manga', 'french' ]; - this.url = 'https://www.lelscanvf.cc'; + this.url = 'https://lelscanfr.com'; } - async _getPages(chapter) { - let request = new Request(new URL(chapter.id, this.url), this.requestOptions); - let data = await this.fetchDOM(request, this.queryPages); + async _getMangaFromURI(uri) { + const request = new Request(uri, this.requestOptions); + const [data] = await this.fetchDOM(request, 'section source.object-cover'); + const id = uri.pathname; + const title = data.getAttribute('alt').trim(); + return new Manga(this, id, title); + } + + async _getMangas() { + const mangaList = []; + for (let page = 1, run = true; run; page++) { + const mangas = await this._getMangasFromPage(page); + mangas.length > 0 ? mangaList.push(...mangas) : run = false; + } + return mangaList; + } + + async _getMangasFromPage(page) { + const uri = new URL(`/manga?page=${page}`, this.url); + const request = new Request(uri, this.requestOptions); + const data = await this.fetchDOM(request, 'div#card-real a'); + return data.map(element => { + return { + id: element.pathname, + title: element.querySelector('source').getAttribute('alt').trim() + }; + }); + } + + async _getChapters(manga) { + const chapterlist = []; + for (let page = 1, run = true; run; page++) { + const chapters = await this._getChaptersFromPage(manga, page); + chapters.length > 0 ? chapterlist.push(...chapters) : run = false; + } + return chapterlist; + } + + async _getChaptersFromPage(manga, page) { + const uri = new URL(`${manga.id}?page=${page}`, this.url); + const request = new Request(uri, this.requestOptions); + const data = await this.fetchDOM(request, 'div#chapters-list a'); return data.map(element => { - try { - const src = element.dataset['src'].split('://').pop(); - return this.createConnectorURI(decodeURIComponent(atob(src || undefined))); - } catch(error) { - let src = (element.dataset['src'] || element.src).trim(); - return this.createConnectorURI(new URL(src, request.url).href); - } + return { + id: element.pathname, + title: element.querySelector('span').textContent.trim() + }; }); } - async _handleConnectorURI(payload) { - let request = new Request(payload, this.requestOptions); - request.headers.set('x-referer', this.url); - let response = await fetch(request); - let data = await response.blob(); - data = await this._blobToBuffer(data); - this._applyRealMime(data); - return data; + async _getPages(chapter) { + const request = new Request(new URL(chapter.id, this.url), this.requestOptions); + const data = await this.fetchDOM(request, 'div#chapter-container source.chapter-image'); + return data.map(element => element.dataset.src); } } diff --git a/src/web/mjs/connectors/LezhinEN.mjs b/src/web/mjs/connectors/LezhinEN.mjs index 447ca28bb32..54dd39a4abd 100644 --- a/src/web/mjs/connectors/LezhinEN.mjs +++ b/src/web/mjs/connectors/LezhinEN.mjs @@ -12,7 +12,7 @@ export default class LezhinEN extends Lezhin { login: this.url + '/login#email' }; this.requestOptions.headers.set( 'x-cookie', 'x-lz-locale=en_US' ); - this.requestOptions.headers.set( 'x-lz-locale', 'en_US' ); + this.requestOptions.headers.set( 'x-lz-locale', 'en-US' ); this.locale = 'en-US'; } } \ No newline at end of file diff --git a/src/web/mjs/connectors/LezhinJA.mjs b/src/web/mjs/connectors/LezhinJA.mjs index dd7cdb383de..fc475552e28 100644 --- a/src/web/mjs/connectors/LezhinJA.mjs +++ b/src/web/mjs/connectors/LezhinJA.mjs @@ -12,7 +12,7 @@ export default class LezhinJA extends Lezhin { login: this.url + '/login#email' }; this.requestOptions.headers.set( 'x-cookie', 'x-lz-locale=ja_JP' ); - this.requestOptions.headers.set( 'x-lz-locale', 'ja_JP' ); + this.requestOptions.headers.set( 'x-lz-locale', 'ja-JP' ); this.locale = 'ja-JP'; } } \ No newline at end of file diff --git a/src/web/mjs/connectors/LezhinKO.mjs b/src/web/mjs/connectors/LezhinKO.mjs index bc4d89953d0..253cf1fb68d 100644 --- a/src/web/mjs/connectors/LezhinKO.mjs +++ b/src/web/mjs/connectors/LezhinKO.mjs @@ -12,7 +12,7 @@ export default class LezhinKO extends Lezhin { login: this.url + '/login#email' }; this.requestOptions.headers.set( 'x-cookie', 'x-lz-locale=ko_KR' ); - this.requestOptions.headers.set( 'x-lz-locale', 'ko_KR' ); + this.requestOptions.headers.set( 'x-lz-locale', 'ko-KR' ); this.locale = 'ko-KR'; } } \ No newline at end of file diff --git a/src/web/mjs/connectors/LoveHug.mjs b/src/web/mjs/connectors/LoveHug.mjs index f3c29857d91..bf099462b86 100644 --- a/src/web/mjs/connectors/LoveHug.mjs +++ b/src/web/mjs/connectors/LoveHug.mjs @@ -72,22 +72,10 @@ export default class WeLoveManga extends FlatManga { async _getPages(chapter) { const uri = new URL(chapter.id, this.url); - const request = new Request(uri, this.requestOptions); - const data = await this.fetchDOM(request, this.queryPages); - return data.map(element => { - const link = [ ...element.attributes] - .filter(attribute => !['src', 'class', 'alt'].includes(attribute.name)) - .map(attribute => { - try { - return atob(attribute.value.trim()); - } catch(_) { - return attribute.value.trim(); - } - }) - .find(value => { - return /^http/.test(value); - }); - return this.createConnectorURI(this.getAbsolutePath(link || element, request.url)); - }); + let request = new Request(uri, this.requestOptions); + const chapterid = (await this.fetchDOM(request, 'input#chapter'))[0].value; + request = new Request(new URL(`/app/manga/controllers/cont.listImg.php?cid=${chapterid}`, this.url), this.requestOptions); + const nodes = await this.fetchDOM(request, 'source.chapter-img:not([alt*="nicoscan"])'); + return nodes.map(image => this.createConnectorURI(image.dataset.original.replace(/\n/g, ''))); } } diff --git a/src/web/mjs/connectors/LuminousScans.mjs b/src/web/mjs/connectors/LuminousScans.mjs index 68f5516df66..5b86b47b7f8 100644 --- a/src/web/mjs/connectors/LuminousScans.mjs +++ b/src/web/mjs/connectors/LuminousScans.mjs @@ -7,9 +7,13 @@ export default class LuminousScans extends WordPressMangastream { super.id = 'luminousscans'; super.label = 'Luminous Scans'; this.tags = [ 'webtoon', 'english' ]; - this.url = 'https://www.luminousscans.com'; + this.url = 'https://luminous-scans.com'; this.path = '/series/list-mode/'; this.queryChapters = 'div#chapterlist ul li a'; } -} \ No newline at end of file + + async _getPages(chapter) { + return (await super._getPages(chapter)).filter(image => !/\/NovelBanner[^.]+\.(png|jpeg|jpg|gif)$/i.test(image)); + } +} diff --git a/src/web/mjs/connectors/LxHentai.mjs b/src/web/mjs/connectors/LxHentai.mjs index a51937b1023..21cd3abf489 100644 --- a/src/web/mjs/connectors/LxHentai.mjs +++ b/src/web/mjs/connectors/LxHentai.mjs @@ -7,7 +7,7 @@ export default class LxHentai extends MojoPortalComic { super.id = 'lxhentai'; super.label = 'LXHENTAI'; this.tags = [ 'manga', 'hentai', 'vietnamese' ]; - this.url = 'https://lxmanga.net'; + this.url = 'https://lxmanga.cc'; this.queryMangaTitle = 'head title'; this.queryChapter = 'div.justify-between ul.overflow-y-auto a'; diff --git a/src/web/mjs/connectors/LyraScans.mjs b/src/web/mjs/connectors/LyraScans.mjs index cabac343990..a22d1f8d9f1 100644 --- a/src/web/mjs/connectors/LyraScans.mjs +++ b/src/web/mjs/connectors/LyraScans.mjs @@ -5,9 +5,9 @@ export default class LyraScans extends WordPressMangastream { constructor() { super(); super.id = 'lyrascans'; - super.label = 'Lyra Scans'; + super.label = 'Quantum Scans'; this.tags = [ 'manga', 'english', 'scanlation' ]; - this.url = 'https://lyrascans.com'; - this.path = '/manga/list-mode/'; + this.url = 'https://readers-point.space'; + this.path = '/series/list-mode/'; } -} \ No newline at end of file +} diff --git a/src/web/mjs/connectors/MagKan.mjs b/src/web/mjs/connectors/MagKan.mjs index f4a26fc0f14..1dd16884c51 100644 --- a/src/web/mjs/connectors/MagKan.mjs +++ b/src/web/mjs/connectors/MagKan.mjs @@ -1,59 +1,12 @@ -import Connector from '../engine/Connector.mjs'; -import Manga from '../engine/Manga.mjs'; +import YoungChampion from './YoungChampion.mjs'; -export default class MagKan extends Connector { +export default class MagKan extends YoungChampion { constructor() { super(); super.id = 'magkan'; super.label = 'MagKan'; this.tags = [ 'manga', 'japanese' ]; - this.url = 'http://kansai.mag-garden.co.jp'; + this.url = 'https://kansai.mag-garden.co.jp'; } - - async _getMangaFromURI(uri) { - const request = new Request(uri, this.requestOptions); - const data = await this.fetchDOM(request, 'meta[property="og:title"]'); - return new Manga(this, uri.pathname, data[0].content.trim()); - } - - async _getMangas() { - const uri = new URL(this.url); - const request = new Request(uri, this.requestOptions); - const data = await this.fetchDOM(request, 'div#main div.panel div.box div.inner'); - return data.map(element => { - return { - id: this.getRootRelativeOrAbsoluteLink(element.querySelector('a'), this.url), - title: element.querySelector('h2.comic_name').textContent.trim() - }; - }); - } - - async _getChapters(manga) { - const uri = new URL(manga.id, this.url); - const request = new Request(uri, this.requestOptions); - const body = await this.fetchDOM(request); - const current = [...body.querySelectorAll('div#main div.update_summary div.exp ul.btn li a[href*="/assets/files/"]')].map(element => { - return { - id: this.getRootRelativeOrAbsoluteLink(element, this.url).replace(/\/HTML5\/?$/i, ''), - title: element.text.replace('を読む', '').trim() - }; - }); - const previous = [...body.querySelectorAll('div#main div.sam_exp div.exp')].map(element => { - return { - id: this.getRootRelativeOrAbsoluteLink(element.querySelector('ul.btn li a[href*="/assets/files/"]'), this.url).replace(/\/HTML5\/?$/i, ''), - title: element.querySelector('div.back_number_summary div.ttl').textContent.trim() - }; - }); - return [ ...current, ...previous ]; - } - - async _getPages(chapter) { - const uri = new URL(chapter.id + '/iPhone/ibook.xml', this.url); - const request = new Request(uri, this.requestOptions); - const response = await fetch(request); - const data = await response.text(); - const pages = parseInt(data.match(/(\d+)<\/total>/)[1]); - return new Array(pages).fill().map((_, index) => this.getAbsolutePath(`${chapter.id}/books/images/2/${index + 1}.jpg`, request.url)); - } -} \ No newline at end of file +} diff --git a/src/web/mjs/connectors/ManHuaGui.mjs b/src/web/mjs/connectors/ManHuaGui.mjs index 0e837313b66..b1c1befb3c3 100644 --- a/src/web/mjs/connectors/ManHuaGui.mjs +++ b/src/web/mjs/connectors/ManHuaGui.mjs @@ -25,7 +25,7 @@ export default class ManHuaGui extends SinMH { } }; this.queryPagesScript =` - new Promise(resolve => { + new Promise( (resolve, reject) => { ${this.api}.imgData = function(data) { let origin = pVars.manga.filePath; let pageLinks = data.files.map(file => origin + file + '?e=' + data.sl.e + '&m=' + data.sl.m); @@ -33,9 +33,17 @@ export default class ManHuaGui extends SinMH { preInit: () => resolve(pageLinks) }; }; - let script = [...document.querySelectorAll('script:not([src])')].find(script => script.text.trim().startsWith('window[')).text; - eval(script); - } ); + + setTimeout(() => { + try { + let script = [...document.querySelectorAll('script:not([src])')].find(script => script.text.trim().startsWith('window[')).text; + eval(script); + } + catch(error) { + reject(error); + } + },1500); + }); `; } @@ -47,4 +55,4 @@ export default class ManHuaGui extends SinMH { let msg = 'This function was disabled to prevent of being IP banned by the website owner, please copy and paste the URL containing the chapters directly from your browser into HakuNeko.'; throw new Error(msg); } -} \ No newline at end of file +} diff --git a/src/web/mjs/connectors/MangaBat.mjs b/src/web/mjs/connectors/MangaBat.mjs index 9d195f8dd8e..5a421b9c67f 100644 --- a/src/web/mjs/connectors/MangaBat.mjs +++ b/src/web/mjs/connectors/MangaBat.mjs @@ -7,7 +7,7 @@ export default class MangaBat extends MangaNel { super.id = 'mangabat'; super.label = 'MangaBat'; this.tags = [ 'manga', 'webtoon', 'english' ]; - this.url = 'https://m.mangabat.com'; + this.url = 'https://h.mangabat.com'; this.path = '/manga-list-all/'; this.queryMangas = 'div.panel-list-story div.list-story-item h3 a.item-title'; @@ -16,6 +16,6 @@ export default class MangaBat extends MangaNel { canHandleURI(uri) { // Test: https://regex101.com/r/GlzAw2/2/tests - return /^(m\.|read\.)?mangabat\.com$/.test(uri.hostname); + return /^(m\.|read\.|h\.)?mangabat\.com$/.test(uri.hostname); } -} \ No newline at end of file +} diff --git a/src/web/mjs/connectors/MangaCross.mjs b/src/web/mjs/connectors/MangaCross.mjs index 10107a911c2..c22fe92c4c6 100644 --- a/src/web/mjs/connectors/MangaCross.mjs +++ b/src/web/mjs/connectors/MangaCross.mjs @@ -1,54 +1,13 @@ -import Connector from '../engine/Connector.mjs'; -import Manga from '../engine/Manga.mjs'; +import YoungChampion from './YoungChampion.mjs'; -export default class MangaCross extends Connector { +export default class MangaCross extends YoungChampion { constructor() { super(); super.id = 'mangacross'; - super.label = 'MangaCross'; + super.label = 'ChampionCross'; this.tags = [ 'manga', 'japanese' ]; - this.url = 'https://mangacross.jp'; - } - - async _getMangaFromURI(uri) { - let request = new Request(uri, this.requestOptions); - let data = await this.fetchDOM(request, 'head title'); - let id = uri.pathname.split('/').filter(Boolean).pop(); - let title = data[0].textContent.split('|')[0].trim(); - return new Manga(this, id, title); - } - - async _getMangas() { - let uri = new URL('/api/comics.json', this.url); - let request = new Request(uri, this.requestOptions); - let data = await this.fetchJSON(request); - return data.comics.map(comic => { - return { - id: comic.dir_name, - title: comic.title.trim() - }; - }); - } - - async _getChapters(manga) { - let uri = new URL('/api/comics/' + manga.id + '.json', this.url); - let request = new Request(uri, this.requestOptions); - let data = await this.fetchJSON(request); - // Is there a way to access the "private" chapters ? Logging in didn't change anything... - return data.comic.episodes.filter(episode => episode.status == 'public').map(episode => { - return { - id: this.getRootRelativeOrAbsoluteLink(episode.page_url, this.url), - title: episode.volume.trim(), - language: '' - }; - }); - } - - async _getPages(chapter) { - let uri = new URL(chapter.id + '/viewer.json', this.url); - let request = new Request(uri, this.requestOptions); - let data = await this.fetchJSON(request); - return data.episode_pages.map(page => this.createConnectorURI(this.getAbsolutePath(page.image.pc_url, this.url))); + this.url = 'https://championcross.jp'; + this.queryManga = 'div.article-text > a'; } } diff --git a/src/web/mjs/connectors/MangaDex.mjs b/src/web/mjs/connectors/MangaDex.mjs index df3cc538e8a..ba13e5be18f 100644 --- a/src/web/mjs/connectors/MangaDex.mjs +++ b/src/web/mjs/connectors/MangaDex.mjs @@ -69,98 +69,14 @@ export default class MangaDex extends Connector { } async _getMangas() { - const mangaList = []; - const limit = 100; - let lastCreatedAt = '2000-01-01T00:00:00'; - let throttle = Promise.resolve(); - - while(lastCreatedAt) { - await throttle; - throttle = new Promise(resolve => setTimeout(resolve, this.config.throttleRequests.value)); - - const uri = new URL('/manga', this.api); - uri.searchParams.set('limit', `${limit}`); - uri.searchParams.set('order[createdAt]', 'asc'); - uri.searchParams.set('createdAtSince', lastCreatedAt); - uri.searchParams.append('contentRating[]', 'safe'); - uri.searchParams.append('contentRating[]', 'suggestive'); - uri.searchParams.append('contentRating[]', 'erotica'); - uri.searchParams.append('contentRating[]', 'pornographic'); - - const request = new Request(uri, { - headers: { - 'Referer': this.url, - }}); - const { data } = await this.fetchJSON(request); - - lastCreatedAt = data.length === limit ? data.pop().attributes.createdAt.split('+').shift() : null; - if(data.length) { - const mangas = data.map(manga => { - const title = manga.attributes.title.en || Object.values(manga.attributes.title).shift(); - return { - id : manga.id, - title : title, - }; - }); - mangaList.push(...mangas); - } - } - - return mangaList; - } - - /* - async _getMangas() { - - let mangaList = []; - let first10k = await this._getMangasFromPages(0, 99); - mangaList = [...mangaList, ...first10k.data]; - let nextAt = first10k.nextAt; - - for (let i = 1; i <= first10k.total / 10000; i += 1) { - let first100of10k = await this._getMangasFromPages(0, 0, nextAt); - mangaList = [...mangaList, ...first100of10k.data.slice(1)]; - let pages = Math.min(Math.floor(first100of10k.total / 100), 99); - if (pages > 0) { - let data = await this._getMangasFromPages(1, pages, nextAt); - mangaList = [...mangaList, ...data.data]; - nextAt = data.nextAt; - } - } - return mangaList.map(ele => { + return (await this.fetchJSON('https://websites.hakuneko.download/mangadex.json')).map(manga => { return { - id: ele.id, - title: (ele.attributes.title.en || Object.values(ele.attributes.title).shift()).trim() + id: manga.id, + title: manga.title, }; }); - } - async _getMangasFromPages(start, pages, nextAt) { - let tmp = []; - let data100; - for (let page = start; page <= pages; page += 1) { - const uri = new URL('/manga', this.api); - uri.searchParams.set('limit', 100); - uri.searchParams.set('offset', 100 * page); - uri.searchParams.set('order[createdAt]', 'asc'); - uri.searchParams.append('contentRating[]', 'safe'); - uri.searchParams.append('contentRating[]', 'suggestive'); - uri.searchParams.append('contentRating[]', 'erotica'); - uri.searchParams.append('contentRating[]', 'pornographic'); - if (nextAt) uri.searchParams.set('createdAtSince', nextAt); - const request = new Request(uri, this.requestOptions); - data100 = await this.fetchJSON(request, 3); - await this.wait(this.config.throttleRequests.value); - tmp = [...tmp, ...data100.data]; - } - return { - data: tmp, - nextAt: data100.data.pop().attributes.createdAt.replace('+00:00', ''), - total: data100.total - }; - } -*/ async _getChapters(manga) { let chapterList = []; for(let page = 0, run = true; run; page++) { diff --git a/src/web/mjs/connectors/MangaDig.mjs b/src/web/mjs/connectors/MangaDig.mjs index bfad131d587..cf45ff3bc55 100644 --- a/src/web/mjs/connectors/MangaDig.mjs +++ b/src/web/mjs/connectors/MangaDig.mjs @@ -1,4 +1,4 @@ /* eslint-disable */ import ZYMK from './templates/ZYMK.mjs'; -const _0x13dbda=_0x4076;function _0x4076(_0x1498ef,_0x41b111){const _0x233ed0=_0x2515();return _0x4076=function(_0x3fbd98,_0xf500ac){_0x3fbd98=_0x3fbd98-(-0x5*0x39f+-0x2*-0x701+-0x3e*-0x18);let _0x4924e5=_0x233ed0[_0x3fbd98];return _0x4924e5;},_0x4076(_0x1498ef,_0x41b111);}function _0x2515(){const _0x21789c=['NTMpKS8weDIpK3BhcnNlSW50KF8weDIwNTk0MigweDE1NSkpLzB4MytwYXJzZUlu','x-referer','enc','c2VJbnQoXzB4NWViNDlmKTtsZXQgXzB4NDdjNzY2PVtdO2ZvcihsZXQgXzB4NDBj','Pkcs7','gMhpj','SpSfx','vCXJj','parse','webtoon','headers','ZTI7ZnVuY3Rpb24gXzB4ZTg3MDk1KCl7XzB4NDI0Yjk5JiYoY2xlYXJJbnRlcnZh','hXtpl','dChfMHgyMDU5NDIoMHgxNGEpKS8weDEqKC1wYXJzZUludChfMHgyMDU5NDIoMHgx','ygLVA','OGJjNDIoKTt3aGlsZSghIVtdKXt0cnl7Y29uc3QgXzB4NGQyODJiPS1wYXJzZUlu','fetchBrowser','jDByr','div.all_data_list\x20ul\x20li\x20a','closeDevTools','_applyRealMime','aWUnLCdwdXNoJywnOTg4NDlQSXlDc0InLCc2Njk4NW5kR2hCUCcsJ2dldFBpY1Vy','elUbD','fswFB','MHgxMTJmMDE9XzB4ODQyZWI3O3JldHVybiBfMHgyNjJlMDBbXzB4MTEyZjAxKDB4','WPBtB','oUKLr','MGM2PTB4MTtfMHg0MGMwYzY8PV8weDVlYjQ5ZjtfMHg0MGMwYzYrKyl7XzB4NDdj','wFCsV','blob','Utf8','apply','yOzyB','NjI4MDFTZnpUd0cnLCc0MjE5NjIxdHd2UU5SJywnNjMzMjIwMlllQWhRYSddO18w','eDE1NildWydkZWNyeXB0J109XzB4M2QwNmU2KSxfMHgzZDA2ZTYoXzB4MjYyZTAw','getFocusedWindow','NDBjMGM2KSk7fWNvbnN0IF8weDE0Njc1OT1zZXRJbnRlcnZhbChfMHhlODcwOTUs','NzRiYz1fMHg0ODVmODNbXzB4NzllMjQxXTtyZXR1cm4gXzB4MTk3NGJjO30sXzB4','XSfCw','jRebP','JVpIc','Eizwi','2034440Dxmacw','Ol8weDQyNGI5OX0pKTt9Y29uc3QgXzB4M2QwNmU2PUNyeXB0b0pTW18weDg0MmVi','Jnqnd','_handleConnectorURI','key','dPTyz','iTOJe','FQYkL','Rmapa','axfkC','_decryptPicture','MSxfMHgyOTNhNmYpe18weDc5ZTI0MT1fMHg3OWUyNDEtMHgxNDQ7bGV0IF8weDE5','MHg5ODA5NDEpe2NvbnN0IF8weDIwNTk0Mj1fMHg3OWUyLF8weDVhOTQzYz1fMHgx','DoLQD','ueAIH','yekab','brqLS','_blobToBuffer','ndfDC','UXqNl','content-type','remote','NloSj','AES','10WzLdbq','bCcsJzEwT1BOaFdhJywnZ2V0Q29va2llVmFsdWUnLCdjaXBoZXJ0ZXh0JywnMTY3','ciphertext','NTApKS8weGIpO2lmKF8weDRkMjgyYj09PV8weDk4MDk0MSlicmVhaztlbHNlIF8w','PWZ1bmN0aW9uKF8weDI2MmUwMCxfMHgxN2QyZjcsXzB4MjA1YjdmKXtjb25zdCBf','url','qNlka','Request','dChfMHgyMDU5NDIoMHgxNDYpKS8weDQqKC1wYXJzZUludChfMHgyMDU5NDIoMHgx','AISDT','split','10cGJLwG','map','ul.fed-list-info\x20li.fed-list-item\x20a.fed-list-title','520LXxbbF','c2UoKF8weDE1OTE5MixfMHg0ZWY3NTkpPT57Y29uc3QgXzB4ODQyZWI3PV8weDc5','arrayBuffer','YTk0M2NbJ3NoaWZ0J10oKSk7fX19KF8weDQ4NWYsMHg4Njc4YyksbmV3IFByb21p','convertUint8ArrayToWordArray','sqsZf','XtXXB','pad','set','FuZDu','requestOptions','QNsgT','createConnectorURI','oBQvL','CBC','ODVmODM9XzB4NDg1ZigpO3JldHVybiBfMHg3OWUyPWZ1bmN0aW9uKF8weDc5ZTI0','isDevToolsOpened','pGipu','ojyVI','zNtnZ','NzY2W18weDg0MmViNygweDE0OSldKF9fY3JbXzB4ODQyZWI3KDB4MTRjKV0oXzB4','mode','mangadig','1735020cJrlvw','GOJST','gSxgN','CfnSW','_getPages','WcnJp','6WnSZTx','TlLlI','tags','CakmO','4|1|2|0|3','fFmEt','wUJlv','div.fed-page-info\x20a.fed-show-sm-inline','4|2|1|0|3','MangaDig','MTRmKV0mJihfMHg0MjRiOTk9XzB4MTdkMmY3LENyeXB0b0pTW18weDExMmYwMSgw','2764155chYsPh','0000000000000000','queryMangasPageCount','2139379dyuXsM','4674fWOvCa','LZCnB','oTNRy','SZHnb','AcZzK','NWYoKTt9','PJGmt','NDg9X19jYWRbXzB4ODQyZWI3KDB4MTRlKV0oKVsweDFdK21oX2luZm9bJ3BhZ2Vp','gRBKl','webSecurity','pCfTY','decrypt','LF8weDE3ZDJmNyxfMHgyMDViN2YpO307bGV0IF8weDVlYjQ5Zj0nJyxfMHg1ZWQ5','queryMangaTitle','FWLbZ','jEvuj','length','NzllMihfMHgzM2FhNWYsXzB4OWFmMjAxKTt9KGZ1bmN0aW9uKF8weDE4YmM0Mixf','wsJfh','path','OaaOa','english','images','bChfMHgxNDY3NTkpLF8weDE1OTE5Mih7J2ltYWdlcyc6XzB4NDdjNzY2LCdrZXkn','GKgnI','967329kUKBTc','5|2|9|1|3|4|0|8|6|7|10','manga','2|4|0|3|1','sigBytes','xIIiN','rCgVA','PdwyD','JZKCC','cFJJY','nYHJu','ZnVuY3Rpb24gXzB4NzllMihfMHgzM2FhNWYsXzB4OWFmMjAxKXtjb25zdCBfMHg0','lnjJE','XZLxG','VZWyT','NGIpKS8weDUpK3BhcnNlSW50KF8weDIwNTk0MigweDE1MikpLzB4NistcGFyc2VJ','dl.fed-deta-info\x20dd.fed-deta-content\x20h1.fed-part-eone','utRFz','NDcpKS8weDgqKHBhcnNlSW50KF8weDIwNTk0MigweDE1NCkpLzB4OSkrcGFyc2VJ','KoZrh','get','oeydd','Aucmn','convertWordArrayToUint8Array','bNipJ','vfURd','electron','NygweDE1NildW18weDg0MmViNygweDE0NSldO2xldCBfMHg0MjRiOTk9dW5kZWZp','xilvM','search','MnlUbUVWYicsJzY4MDRvWURtZUsnLCcxNTMyNzE4bVh4UWx1JywnQUVTJywndG9T','qezcN','/show?page=','mJaWv','label','irpaN','124450BOZnzC','eDVhOTQzY1sncHVzaCddKF8weDVhOTQzY1snc2hp','(((.+)+)+)+$','wUaqR','toString','LepwH','DFnCF','PhJCm','cINDi','MTQ4KV0oXzB4NWVkOTQ4KSxfMHg1ZWI0OWY9cGFy','ZCddW18weDg0MmViNygweDE0NCldKCk7XzB4NWViNDlmPSRbXzB4ODQyZWI3KDB4','UwgGp','queryMangas','XeBpl','bnQoXzB4MjA1OTQyKDB4MTUxKSkvMHg3Ky1wYXJzZUludChfMHgyMDU5NDIoMHgx','MHgzZTgpO30pKTtmdW5jdGlvbiBfMHg0ODVmKCl7Y29uc3QgXzB4MmNhMzc0PVsn','eDQ4NWY9ZnVuY3Rpb24oKXtyZXR1cm4gXzB4MmNhMzc0O307cmV0dXJuIF8weDQ4','xtsSY','ZnQnXSgpKTt9Y2F0Y2goXzB4NmYyNjk5KXtfMHg1YTk0M2NbJ3B1c2gnXShfMHg1','queryChapters','pathSuffix','WAwMS','bnQoXzB4MjA1OTQyKDB4MTRkKSkvMHhhKihwYXJzZUludChfMHgyMDU5NDIoMHgx','BrowserWindow','uulFB','QJjVx','push','MWMYE','mWBSq','words','https://mangadig.com','vCaaV','cjnnD','qSwWS','dHJpbmcnLCdkZWNyeXB0JywnMjk2bGRJWVRzJywnMTEwNDhtQ1hGR0MnLCdjb29r','bmVkO0NyeXB0b0pTW18weDg0MmViNygweDE1NildW18weDg0MmViNygweDE0NSld','sRRiZ','rohxW','href','x-origin','jGNvY','owgdJ','constructor','uXUUm','lcOjC'];_0x2515=function(){return _0x21789c;};return _0x2515();}(function(_0x5684f4,_0x248b23){const _0x1a135f=_0x4076,_0x36204f=_0x5684f4();while(!![]){try{const _0x1e7a77=-parseInt(_0x1a135f(0x1d9))/(-0x927+-0x246*-0xb+0x2*-0x7ed)*(parseInt(_0x1a135f(0x250))/(0xffd+0x46b+-0x2ea*0x7))+-parseInt(_0x1a135f(0x213))/(0x1c16*0x1+0xa9*-0x31+0x223*0x2)*(parseInt(_0x1a135f(0x1e7))/(-0x1e97+0xf83+0xf18))+-parseInt(_0x1a135f(0x20f))/(-0x5*-0x259+0xd85*0x1+0x7*-0x39b)*(-parseInt(_0x1a135f(0x204))/(-0x2*0x67f+0x1*0x4c1+0x1a7*0x5))+parseInt(_0x1a135f(0x1fe))/(-0x18e*-0x3+0x6d3*0x2+-0x1249*0x1)+parseInt(_0x1a135f(0x1c1))/(0x2190+0x3f*0x6a+-0x3b9e)+-parseInt(_0x1a135f(0x22c))/(-0x1d37+-0xd04+0x2a44)+-parseInt(_0x1a135f(0x1e4))/(0xf39+-0x2*-0x33e+0x1*-0x15ab)*(-parseInt(_0x1a135f(0x212))/(0x23*0x101+-0x205+-0x1*0x2113));if(_0x1e7a77===_0x248b23)break;else _0x36204f['push'](_0x36204f['shift']());}catch(_0x4a7fdd){_0x36204f['push'](_0x36204f['shift']());}}}(_0x2515,0x7a*-0xb41+-0x53*-0x159e+0x155*0x266));const _0x32901b=(function(){const _0x2347c2=_0x4076,_0xccffb3={};_0xccffb3[_0x2347c2(0x217)]=_0x2347c2(0x20c),_0xccffb3[_0x2347c2(0x282)]=function(_0x48b4fc,_0x5573dc){return _0x48b4fc&_0x5573dc;},_0xccffb3[_0x2347c2(0x1f8)]=function(_0xd928de,_0x31143b){return _0xd928de>>_0x31143b;},_0xccffb3[_0x2347c2(0x221)]=function(_0x5cd8f4,_0x53525c){return _0x5cd8f4&_0x53525c;},_0xccffb3[_0x2347c2(0x1c7)]=function(_0x5145f3,_0x1ee3ea){return _0x5145f3|_0x1ee3ea;},_0xccffb3[_0x2347c2(0x203)]=function(_0x30808c,_0x5d1d5e){return _0x30808c|_0x5d1d5e;},_0xccffb3[_0x2347c2(0x269)]=function(_0x121d23,_0x278b4c){return _0x121d23<<_0x278b4c;},_0xccffb3[_0x2347c2(0x296)]=_0x2347c2(0x210),_0xccffb3[_0x2347c2(0x222)]=function(_0x44c6d0,_0x585f4b){return _0x44c6d0===_0x585f4b;},_0xccffb3[_0x2347c2(0x231)]=_0x2347c2(0x227),_0xccffb3[_0x2347c2(0x293)]=_0x2347c2(0x215),_0xccffb3[_0x2347c2(0x28e)]=_0x2347c2(0x245),_0xccffb3[_0x2347c2(0x1cf)]=function(_0x4adcd8,_0x67ca57){return _0x4adcd8!==_0x67ca57;},_0xccffb3[_0x2347c2(0x1ca)]=_0x2347c2(0x28b);const _0x409048=_0xccffb3;let _0x54fd7e=!![];return function(_0x4d8a51,_0x1a0256){const _0x2427fe=_0x2347c2,_0x247485={'AISDT':_0x409048[_0x2427fe(0x217)],'FuZDu':function(_0x6b623e,_0x38fb28){const _0x8f2b19=_0x2427fe;return _0x409048[_0x8f2b19(0x282)](_0x6b623e,_0x38fb28);},'rohxW':function(_0x39923b,_0x34c90b){const _0x3ce180=_0x2427fe;return _0x409048[_0x3ce180(0x1f8)](_0x39923b,_0x34c90b);},'oUKLr':function(_0x3941e8,_0x4f8176){const _0x2bb0c3=_0x2427fe;return _0x409048[_0x2bb0c3(0x282)](_0x3941e8,_0x4f8176);},'SpSfx':function(_0x562d3b,_0x3ba9f6){const _0x8151ba=_0x2427fe;return _0x409048[_0x8151ba(0x1f8)](_0x562d3b,_0x3ba9f6);},'nYHJu':function(_0x3d1065,_0x1d0833){const _0x58e873=_0x2427fe;return _0x409048[_0x58e873(0x221)](_0x3d1065,_0x1d0833);},'oBQvL':function(_0x194953,_0x5c6f14){const _0x423ce5=_0x2427fe;return _0x409048[_0x423ce5(0x1c7)](_0x194953,_0x5c6f14);},'Aucmn':function(_0x5ed5f5,_0x249fe4){const _0x5f10e3=_0x2427fe;return _0x409048[_0x5f10e3(0x203)](_0x5ed5f5,_0x249fe4);},'CfnSW':function(_0x2fa0bd,_0x20d513){const _0x1cab4f=_0x2427fe;return _0x409048[_0x1cab4f(0x269)](_0x2fa0bd,_0x20d513);},'gSxgN':_0x409048[_0x2427fe(0x296)],'hXtpl':function(_0x37d285,_0x143b46){const _0x3dac59=_0x2427fe;return _0x409048[_0x3dac59(0x222)](_0x37d285,_0x143b46);},'cjnnD':_0x409048[_0x2427fe(0x231)],'dPTyz':_0x409048[_0x2427fe(0x293)],'mJaWv':_0x409048[_0x2427fe(0x28e)]};if(_0x409048[_0x2427fe(0x1cf)](_0x409048[_0x2427fe(0x1ca)],_0x409048[_0x2427fe(0x1ca)])){const _0x589dc3=_0x247485[_0x2427fe(0x1e2)][_0x2427fe(0x1e3)]('|');let _0x53134c=-0x21c2+0x7b*0x43+0x1*0x191;while(!![]){switch(_0x589dc3[_0x53134c++]){case'0':_0x1a2736[_0x5928b7++]=_0x247485[_0x2427fe(0x1f0)](_0x247485[_0x2427fe(0x275)](_0x50f385,0x86f+0x307*-0x9+0x4b6*0x4),-0x1d1*-0xb+0xce0+-0x4*0x7f7);continue;case'1':_0x59ea3c[_0x402a28++]=_0x247485[_0x2427fe(0x297)](_0x247485[_0x2427fe(0x283)](_0x57aeee,0x1e63+-0x944+-0x9*0x257),-0x1205+0x1cf6+-0x9f2);continue;case'2':_0x36ca85[_0x3386e2++]=_0x247485[_0x2427fe(0x275)](_0x481235,0x1b15*-0x1+0x1247+0x8e6);continue;case'3':_0x379512[_0x12f3b3++]=_0x247485[_0x2427fe(0x236)](_0x4f5e2a,0x216e+0xd13+0x32*-0xe9);continue;case'4':_0x2fc793=_0x54617d[_0x2427fe(0x26d)][_0x29f6a7];continue;}break;}}else{const _0x46cc98=_0x54fd7e?function(){const _0x5e056e=_0x2427fe;if(_0x247485[_0x5e056e(0x289)](_0x247485[_0x5e056e(0x270)],_0x247485[_0x5e056e(0x270)])){if(_0x1a0256){if(_0x247485[_0x5e056e(0x289)](_0x247485[_0x5e056e(0x1c6)],_0x247485[_0x5e056e(0x24d)]))_0x1cfd00[_0x5e056e(0x26a)](_0x247485[_0x5e056e(0x1f4)](_0x247485[_0x5e056e(0x1f4)](_0x247485[_0x5e056e(0x242)](_0x247485[_0x5e056e(0x201)](_0x5e3f87[_0x428524++],0x1*-0x1cc7+-0x2360+0x403f),_0x247485[_0x5e056e(0x201)](_0x546e01[_0x5d5845++],-0x1*-0x1636+0x55d*-0x1+-0x10c9)),_0x247485[_0x5e056e(0x201)](_0x2f4006[_0x592d1c++],0x75+0xaf5+0x2*-0x5b1)),_0x1ad9a0[_0x44d329++]));else{const _0x5e9d46=_0x1a0256[_0x5e056e(0x29c)](_0x4d8a51,arguments);return _0x1a0256=null,_0x5e9d46;}}}else{const _0x5d99dd=this[_0x5e056e(0x1eb)](new _0x33b603(_0x2902c1)),_0x3bebea={};_0x3bebea[_0x5e056e(0x1db)]=_0x5d99dd;const _0x28a37c=_0x3bebea,_0x1940f9={'iv':_0xb41ad4[_0x5e056e(0x27f)][_0x5e056e(0x29b)][_0x5e056e(0x285)](_0x247485[_0x5e056e(0x200)]),'mode':_0x562434[_0x5e056e(0x1fc)][_0x5e056e(0x1f5)],'padding':_0x1d3665[_0x5e056e(0x1ee)][_0x5e056e(0x281)]};return this[_0x5e056e(0x243)](_0x5acf28[_0x5e056e(0x1d8)][_0x5e056e(0x21e)](_0x28a37c,_0x9bbcde[_0x5e056e(0x1c5)],_0x1940f9));}}:function(){};return _0x54fd7e=![],_0x46cc98;}};}()),_0x2751a6=_0x32901b(this,function(){const _0x4e0d=_0x4076,_0x2696c4={};_0x2696c4[_0x4e0d(0x238)]=_0x4e0d(0x252);const _0x236c89=_0x2696c4;return _0x2751a6[_0x4e0d(0x254)]()[_0x4e0d(0x249)](_0x236c89[_0x4e0d(0x238)])[_0x4e0d(0x254)]()[_0x4e0d(0x27a)](_0x2751a6)[_0x4e0d(0x249)](_0x236c89[_0x4e0d(0x238)]);});_0x2751a6();class MangaDig extends ZYMK{constructor(){const _0x599263=_0x4076,_0x653e2d={};_0x653e2d[_0x599263(0x258)]=_0x599263(0x22d),_0x653e2d[_0x599263(0x1d1)]=_0x599263(0x286),_0x653e2d[_0x599263(0x1f2)]=_0x599263(0x228),_0x653e2d[_0x599263(0x255)]=_0x599263(0x22e),_0x653e2d[_0x599263(0x26c)]=_0x599263(0x1fd),_0x653e2d[_0x599263(0x1d0)]=_0x599263(0x26e),_0x653e2d[_0x599263(0x248)]=_0x599263(0x24c),_0x653e2d[_0x599263(0x25d)]=_0x599263(0x20b),_0x653e2d[_0x599263(0x239)]=_0x599263(0x28f),_0x653e2d[_0x599263(0x1ec)]=_0x599263(0x1e6),_0x653e2d[_0x599263(0x278)]=_0x599263(0x20d),_0x653e2d[_0x599263(0x1c0)]=_0x599263(0x23c);const _0xe254a8=_0x653e2d,_0x33f15a=_0xe254a8[_0x599263(0x258)][_0x599263(0x1e3)]('|');let _0x325936=-0x149b+-0x15ec+0x3*0xe2d;while(!![]){switch(_0x33f15a[_0x325936++]){case'0':this[_0x599263(0x264)]='';continue;case'1':this[_0x599263(0x206)]=[_0xe254a8[_0x599263(0x1d1)],_0xe254a8[_0x599263(0x1f2)],_0xe254a8[_0x599263(0x255)]];continue;case'2':super['id']=_0xe254a8[_0x599263(0x26c)];continue;case'3':this[_0x599263(0x1de)]=_0xe254a8[_0x599263(0x1d0)];continue;case'4':this[_0x599263(0x226)]=_0xe254a8[_0x599263(0x248)];continue;case'5':super();continue;case'6':this[_0x599263(0x211)]=_0xe254a8[_0x599263(0x25d)];continue;case'7':this[_0x599263(0x263)]=_0xe254a8[_0x599263(0x239)];continue;case'8':this[_0x599263(0x25c)]=_0xe254a8[_0x599263(0x1ec)];continue;case'9':super[_0x599263(0x24e)]=_0xe254a8[_0x599263(0x278)];continue;case'10':this[_0x599263(0x220)]=_0xe254a8[_0x599263(0x1c0)];continue;}break;}}async[_0x13dbda(0x202)](_0x5f11d4){const _0x2165c8=_0x13dbda,_0x2e2890={'qSwWS':function(_0x5eb294,_0x5c8b96){return _0x5eb294===_0x5c8b96;},'xtsSY':_0x2165c8(0x1be),'FQYkL':_0x2165c8(0x299),'qNlka':function(_0x44acb6,_0x1dcc8c){return _0x44acb6(_0x1dcc8c);},'JVpIc':_0x2165c8(0x246),'WAwMS':function(_0x3d104f,_0x57d00c){return _0x3d104f(_0x57d00c);},'GOJST':function(_0x5dbd21,_0x295122){return _0x5dbd21(_0x295122);},'vCaaV':_0x2165c8(0x237)+_0x2165c8(0x1f6)+_0x2165c8(0x1cc)+_0x2165c8(0x1bc)+_0x2165c8(0x224)+_0x2165c8(0x1cd)+_0x2165c8(0x28c)+_0x2165c8(0x28a)+_0x2165c8(0x27d)+_0x2165c8(0x1e1)+_0x2165c8(0x23b)+_0x2165c8(0x25e)+_0x2165c8(0x23e)+_0x2165c8(0x266)+_0x2165c8(0x1dc)+_0x2165c8(0x251)+(_0x2165c8(0x262)+_0x2165c8(0x1ea)+_0x2165c8(0x1e8)+_0x2165c8(0x288)+_0x2165c8(0x22a)+_0x2165c8(0x1c2)+_0x2165c8(0x247)+_0x2165c8(0x273)+_0x2165c8(0x1dd)+_0x2165c8(0x295)+_0x2165c8(0x20e)+_0x2165c8(0x1b9)+_0x2165c8(0x21f)+_0x2165c8(0x21a)+_0x2165c8(0x25a)+_0x2165c8(0x259))+(_0x2165c8(0x280)+_0x2165c8(0x298)+_0x2165c8(0x1fb)+_0x2165c8(0x1bb)+_0x2165c8(0x25f)+_0x2165c8(0x24a)+_0x2165c8(0x272)+_0x2165c8(0x292)+_0x2165c8(0x1da)+_0x2165c8(0x1b8)+_0x2165c8(0x260)+_0x2165c8(0x218))},_0x259086=((()=>{const _0xeac6cd=_0x2165c8;if(_0x2e2890[_0xeac6cd(0x271)](_0x2e2890[_0xeac6cd(0x261)],_0x2e2890[_0xeac6cd(0x1c8)])){const _0x18ddd9=_0x343b9b[_0xeac6cd(0x29c)](_0x3f3029,arguments);return _0x421a47=null,_0x18ddd9;}else return _0x2e2890[_0xeac6cd(0x1df)](require,_0x2e2890[_0xeac6cd(0x1bf)])[_0xeac6cd(0x1d6)][_0xeac6cd(0x267)][_0xeac6cd(0x1ba)]()[_0xeac6cd(0x1f7)]()&&_0x2e2890[_0xeac6cd(0x265)](require,_0x2e2890[_0xeac6cd(0x1bf)])[_0xeac6cd(0x1d6)][_0xeac6cd(0x267)][_0xeac6cd(0x1ba)]()[_0xeac6cd(0x290)](),_0x2e2890[_0xeac6cd(0x1ff)](atob,_0x2e2890[_0xeac6cd(0x26f)]);})()),_0x26a5ae=new URL(_0x5f11d4['id'],this[_0x2165c8(0x1de)]);let _0x1fae31=new Request(_0x26a5ae,this[_0x2165c8(0x1f1)]);const _0x3042d3={};_0x3042d3[_0x2165c8(0x229)]=!![],_0x3042d3[_0x2165c8(0x21c)]=!![];const _0x13aebc=await Engine[_0x2165c8(0x1e0)][_0x2165c8(0x28d)](_0x1fae31,undefined,_0x259086,_0x3042d3,0xac+-0xbbc9*-0x1+-0x4745);return _0x13aebc[_0x2165c8(0x229)][_0x2165c8(0x1e5)](_0x1e21e5=>this[_0x2165c8(0x1f3)]({'url':new URL(_0x1e21e5,this[_0x2165c8(0x1de)])[_0x2165c8(0x276)],'key':_0x13aebc[_0x2165c8(0x1c5)]}));}async[_0x13dbda(0x1c4)](_0x1d8bb9){const _0x55ae7d=_0x13dbda,_0x8d1c9d={'irpaN':_0x55ae7d(0x252),'fswFB':_0x55ae7d(0x27e),'uulFB':_0x55ae7d(0x277),'SZHnb':function(_0x1a2096,_0x202771){return _0x1a2096(_0x202771);},'PhJCm':function(_0x10a183,_0xc017b1){return _0x10a183!=_0xc017b1;},'CakmO':function(_0x1e16b8,_0x55456e){return _0x1e16b8!==_0x55456e;},'yOzyB':_0x55ae7d(0x244),'TlLlI':_0x55ae7d(0x1f9),'DoLQD':_0x55ae7d(0x1d5),'GKgnI':function(_0x67399d,_0x56e5bd){return _0x67399d!==_0x56e5bd;},'utRFz':_0x55ae7d(0x25b)},_0x289c9e=new Request(_0x1d8bb9[_0x55ae7d(0x1de)],this[_0x55ae7d(0x1f1)]);_0x289c9e[_0x55ae7d(0x287)][_0x55ae7d(0x1ef)](_0x8d1c9d[_0x55ae7d(0x294)],this[_0x55ae7d(0x1de)]),_0x289c9e[_0x55ae7d(0x287)][_0x55ae7d(0x1ef)](_0x8d1c9d[_0x55ae7d(0x268)],this[_0x55ae7d(0x1de)]);const _0x5320a5=await _0x8d1c9d[_0x55ae7d(0x216)](fetch,_0x289c9e);let _0x51eb43='';if(_0x8d1c9d[_0x55ae7d(0x257)](_0x1d8bb9[_0x55ae7d(0x1c5)][_0x55ae7d(0x230)],-0x1*0x6e3+0x239a+0x1cb7*-0x1)){if(_0x8d1c9d[_0x55ae7d(0x207)](_0x8d1c9d[_0x55ae7d(0x1b7)],_0x8d1c9d[_0x55ae7d(0x205)])){let _0x26343b=new Uint8Array(await _0x5320a5[_0x55ae7d(0x1e9)]());_0x51eb43={'mimeType':_0x5320a5[_0x55ae7d(0x287)][_0x55ae7d(0x240)](_0x8d1c9d[_0x55ae7d(0x1ce)]),'data':await this[_0x55ae7d(0x1cb)](_0x26343b,_0x1d8bb9)};}else return _0x20b15e[_0x55ae7d(0x254)]()[_0x55ae7d(0x249)](QXynwH[_0x55ae7d(0x24f)])[_0x55ae7d(0x254)]()[_0x55ae7d(0x27a)](_0x58a337)[_0x55ae7d(0x249)](QXynwH[_0x55ae7d(0x24f)]);}else{if(_0x8d1c9d[_0x55ae7d(0x22b)](_0x8d1c9d[_0x55ae7d(0x23d)],_0x8d1c9d[_0x55ae7d(0x23d)])){const _0x44e7b0=_0x2a2465?function(){const _0x1cd16d=_0x55ae7d;if(_0x8085cc){const _0x294997=_0x524cdb[_0x1cd16d(0x29c)](_0x2b24bd,arguments);return _0x538ab5=null,_0x294997;}}:function(){};return _0x2c8a6c=![],_0x44e7b0;}else _0x51eb43=await _0x5320a5[_0x55ae7d(0x29a)](),_0x51eb43=await this[_0x55ae7d(0x1d2)](_0x51eb43);}return this[_0x55ae7d(0x291)](_0x51eb43),_0x51eb43;}async[_0x13dbda(0x1cb)](_0xe99a30,_0x89f40c){const _0x3974eb=_0x13dbda,_0x49277f={};_0x49277f[_0x3974eb(0x21d)]=_0x3974eb(0x210);const _0x18fa36=_0x49277f,_0xe6d8ee=this[_0x3974eb(0x1eb)](new Uint8Array(_0xe99a30)),_0x36eb4c={};_0x36eb4c[_0x3974eb(0x1db)]=_0xe6d8ee;const _0x538849=_0x36eb4c,_0x510bc1={'iv':CryptoJS[_0x3974eb(0x27f)][_0x3974eb(0x29b)][_0x3974eb(0x285)](_0x18fa36[_0x3974eb(0x21d)]),'mode':CryptoJS[_0x3974eb(0x1fc)][_0x3974eb(0x1f5)],'padding':CryptoJS[_0x3974eb(0x1ee)][_0x3974eb(0x281)]};return this[_0x3974eb(0x243)](CryptoJS[_0x3974eb(0x1d8)][_0x3974eb(0x21e)](_0x538849,_0x89f40c[_0x3974eb(0x1c5)],_0x510bc1));}[_0x13dbda(0x243)](_0x2a9dae){const _0x19d985=_0x13dbda,_0x48005a={};_0x48005a[_0x19d985(0x209)]=function(_0x5a6f10,_0x388af1){return _0x5a6f10<<_0x388af1;},_0x48005a[_0x19d985(0x235)]=function(_0x27b198,_0x5d34ff){return _0x27b198<_0x5d34ff;},_0x48005a[_0x19d985(0x256)]=_0x19d985(0x208),_0x48005a[_0x19d985(0x214)]=function(_0x14e972,_0x322e3f){return _0x14e972&_0x322e3f;},_0x48005a[_0x19d985(0x284)]=function(_0x513b2f,_0x112f81){return _0x513b2f>>_0x112f81;},_0x48005a[_0x19d985(0x1bd)]=function(_0x756469,_0x26e60d){return _0x756469&_0x26e60d;},_0x48005a[_0x19d985(0x1c3)]=function(_0x459462,_0x47bc26){return _0x459462&_0x47bc26;},_0x48005a[_0x19d985(0x225)]=function(_0x484c03,_0x3b58be){return _0x484c03<_0x3b58be;},_0x48005a[_0x19d985(0x23f)]=function(_0x1c0949,_0x87c63d){return _0x1c0949!==_0x87c63d;},_0x48005a[_0x19d985(0x219)]=_0x19d985(0x27b),_0x48005a[_0x19d985(0x232)]=_0x19d985(0x22f),_0x48005a[_0x19d985(0x23a)]=function(_0x41e130,_0x3be1d2){return _0x41e130>>_0x3be1d2;},_0x48005a[_0x19d985(0x21b)]=function(_0x2d4316,_0x34b0cb){return _0x2d4316&_0x34b0cb;},_0x48005a[_0x19d985(0x26b)]=function(_0x5d1946,_0x29c284){return _0x5d1946>>_0x29c284;};const _0x1ac2ff=_0x48005a;let _0x47f9f0=_0x2a9dae[_0x19d985(0x26d)][_0x19d985(0x223)],_0x52b68f=new Uint8Array(_0x1ac2ff[_0x19d985(0x209)](_0x47f9f0,0x1674+0x3*-0x373+-0x1*0xc19)),_0x413a87=-0x9*-0x40e+0x1168+-0x35e6,_0x4f7918,_0x2dfbbe;for(_0x2dfbbe=-0x18cb+-0x2652+0x3f1d;_0x1ac2ff[_0x19d985(0x225)](_0x2dfbbe,_0x47f9f0);_0x2dfbbe++){if(_0x1ac2ff[_0x19d985(0x23f)](_0x1ac2ff[_0x19d985(0x219)],_0x1ac2ff[_0x19d985(0x219)])){let _0x1254bc=_0x4a96c4[_0x19d985(0x26d)][_0x19d985(0x223)],_0x724dc4=new _0x14f215(_0x1ac2ff[_0x19d985(0x209)](_0x1254bc,0x6d2+0x4*0x658+-0x14*0x19c)),_0x1535e8=0x3b*0x1f+-0x1ac3*0x1+0x139e,_0x1e7138,_0x42b01e;for(_0x42b01e=-0x1f1d+-0x3b*-0x3b+0x1184;_0x1ac2ff[_0x19d985(0x235)](_0x42b01e,_0x1254bc);_0x42b01e++){const _0x2c4885=_0x1ac2ff[_0x19d985(0x256)][_0x19d985(0x1e3)]('|');let _0x4ea739=0x2*0x94b+-0xe58*-0x2+0x2f46*-0x1;while(!![]){switch(_0x2c4885[_0x4ea739++]){case'0':_0x724dc4[_0x1535e8++]=_0x1ac2ff[_0x19d985(0x214)](_0x1ac2ff[_0x19d985(0x284)](_0x1e7138,0x1*0x1442+0x121b+-0xcc7*0x3),0x3*0xab+0xd09*-0x2+0x8*0x322);continue;case'1':_0x724dc4[_0x1535e8++]=_0x1ac2ff[_0x19d985(0x284)](_0x1e7138,0x2f*-0x60+-0x1b24+0x2cdc);continue;case'2':_0x724dc4[_0x1535e8++]=_0x1ac2ff[_0x19d985(0x1bd)](_0x1ac2ff[_0x19d985(0x284)](_0x1e7138,-0x12f1+-0xd*0x107+-0x13*-0x1b4),0x1cde+-0x35e*-0x6+-0x3013);continue;case'3':_0x724dc4[_0x1535e8++]=_0x1ac2ff[_0x19d985(0x1c3)](_0x1e7138,-0x1*0x1b0a+0x5*0x32b+0xc32);continue;case'4':_0x1e7138=_0x249251[_0x19d985(0x26d)][_0x42b01e];continue;}break;}}return _0x724dc4;}else{const _0x3bc1a3=_0x1ac2ff[_0x19d985(0x232)][_0x19d985(0x1e3)]('|');let _0x13091d=0x26e3+0x2*-0xc77+-0xdf5;while(!![]){switch(_0x3bc1a3[_0x13091d++]){case'0':_0x52b68f[_0x413a87++]=_0x1ac2ff[_0x19d985(0x1c3)](_0x1ac2ff[_0x19d985(0x23a)](_0x4f7918,-0x11ad+0xff3+-0x1ca*-0x1),0x1706+0x1d5e+-0x3365);continue;case'1':_0x52b68f[_0x413a87++]=_0x1ac2ff[_0x19d985(0x1c3)](_0x4f7918,0x95c+-0x228*-0xe+0x8b*-0x47);continue;case'2':_0x4f7918=_0x2a9dae[_0x19d985(0x26d)][_0x2dfbbe];continue;case'3':_0x52b68f[_0x413a87++]=_0x1ac2ff[_0x19d985(0x21b)](_0x1ac2ff[_0x19d985(0x26b)](_0x4f7918,-0xed7*-0x1+0x1265+-0xa*0x352),-0x2491+-0x77d+0x13*0x25f);continue;case'4':_0x52b68f[_0x413a87++]=_0x1ac2ff[_0x19d985(0x284)](_0x4f7918,0x1b38+-0x16f*-0x13+-0x365d);continue;}break;}}}return _0x52b68f;}[_0x13dbda(0x1eb)](_0x7cd1ef){const _0x4ea9fd=_0x13dbda,_0x5d2382={};_0x5d2382[_0x4ea9fd(0x233)]=function(_0x8a2f4f,_0x4e60c3){return _0x8a2f4f<_0x4e60c3;},_0x5d2382[_0x4ea9fd(0x1d4)]=function(_0x4b6473,_0x9fe6f7){return _0x4b6473|_0x9fe6f7;},_0x5d2382[_0x4ea9fd(0x1d7)]=function(_0xef367a,_0xd16ed){return _0xef367a|_0xd16ed;},_0x5d2382[_0x4ea9fd(0x1fa)]=function(_0x2f1e27,_0x5b84d8){return _0x2f1e27|_0x5b84d8;},_0x5d2382[_0x4ea9fd(0x253)]=function(_0x176bf3,_0x40b3b9){return _0x176bf3<<_0x40b3b9;},_0x5d2382[_0x4ea9fd(0x24b)]=function(_0x225cf8,_0xba5f5a){return _0x225cf8<<_0xba5f5a;},_0x5d2382[_0x4ea9fd(0x241)]=function(_0x523c16,_0x20e370){return _0x523c16*_0x20e370;},_0x5d2382[_0x4ea9fd(0x1d3)]=function(_0x5338fd,_0x4588b9){return _0x5338fd===_0x4588b9;},_0x5d2382[_0x4ea9fd(0x279)]=_0x4ea9fd(0x20a),_0x5d2382[_0x4ea9fd(0x274)]=_0x4ea9fd(0x234),_0x5d2382[_0x4ea9fd(0x27c)]=function(_0xe38bdd,_0x4e4cf8){return _0xe38bdd|_0x4e4cf8;},_0x5d2382[_0x4ea9fd(0x1ed)]=function(_0x18e8a1,_0x540fd7){return _0x18e8a1|_0x540fd7;},_0x5d2382[_0x4ea9fd(0x1c9)]=function(_0x36c233,_0x43c2f4){return _0x36c233<<_0x43c2f4;};const _0x5726be=_0x5d2382;let _0x3681ba=[],_0x1f325c=0x1*-0x1763+0x2*-0xd8d+-0x327d*-0x1,_0x4e00a6=_0x7cd1ef[_0x4ea9fd(0x223)];while(_0x5726be[_0x4ea9fd(0x233)](_0x1f325c,_0x4e00a6)){if(_0x5726be[_0x4ea9fd(0x1d3)](_0x5726be[_0x4ea9fd(0x279)],_0x5726be[_0x4ea9fd(0x274)])){let _0x593714=[],_0x4b43f5=-0x262d+0x1062+-0x31d*-0x7,_0x4d6dcb=_0x48788a[_0x4ea9fd(0x223)];while(_0x5726be[_0x4ea9fd(0x233)](_0x4b43f5,_0x4d6dcb)){_0x593714[_0x4ea9fd(0x26a)](_0x5726be[_0x4ea9fd(0x1d4)](_0x5726be[_0x4ea9fd(0x1d7)](_0x5726be[_0x4ea9fd(0x1fa)](_0x5726be[_0x4ea9fd(0x253)](_0x261e7d[_0x4b43f5++],0x769*-0x1+-0x2b*0x7b+0xe*0x203),_0x5726be[_0x4ea9fd(0x253)](_0x304c11[_0x4b43f5++],-0x1*-0x1e3a+0x4cd*0x1+-0x22f7*0x1)),_0x5726be[_0x4ea9fd(0x24b)](_0x2dd2b4[_0x4b43f5++],0xc37*-0x1+0x149b+-0x85c)),_0x1815ae[_0x4b43f5++]));}return{'sigBytes':_0x5726be[_0x4ea9fd(0x241)](_0x593714[_0x4ea9fd(0x223)],-0xa6*-0x12+-0x2*-0x642+-0x182c),'words':_0x593714};}else _0x3681ba[_0x4ea9fd(0x26a)](_0x5726be[_0x4ea9fd(0x1d7)](_0x5726be[_0x4ea9fd(0x27c)](_0x5726be[_0x4ea9fd(0x1ed)](_0x5726be[_0x4ea9fd(0x24b)](_0x7cd1ef[_0x1f325c++],0x161*-0x2+0xca4+-0x9ca*0x1),_0x5726be[_0x4ea9fd(0x253)](_0x7cd1ef[_0x1f325c++],0x1*-0x7b2+-0x18d6*0x1+0x7*0x4a8)),_0x5726be[_0x4ea9fd(0x1c9)](_0x7cd1ef[_0x1f325c++],0x6d*0x26+0x22a6+0xcb3*-0x4)),_0x7cd1ef[_0x1f325c++]));}return{'sigBytes':_0x5726be[_0x4ea9fd(0x241)](_0x3681ba[_0x4ea9fd(0x223)],0x26d8+0x62a*0x3+-0x2e*0x13f),'words':_0x3681ba};}} +function _0x2071(){const _0x54d8c0=['VZEEB','nLshM','english','CBC','AjkkB','(((.+)+)+)+$','href','IF8weDliMDg1YT1DcnlwdG9KU1snQUVTJ11bJ2RlY3J5cHQnXTtsZXQgXzB4MTI0','NmIyZmYxPSRbXzB4MTRlMzk5KDB4MWU2KV0oXzB4MjQyZDhhKSxfMHg2YjJmZjE9','hnMAy','11236752aysdtU','MTYyMygweDFlZCldW18weDU5MTYyMygweDFlNyldPV8weDliMDg1YSksXzB4OWIw','QmwJH','ODBiMTQ9XzB4MTgwYigpO3JldHVybiBfMHgxMzQxPWZ1bmN0aW9uKF8weDEzNDEw','pathSuffix','XzB4MTRlMzk5KDB4MWUxKV0oXzB4YjkxYzA2KSk7fWNvbnN0IF8weDQzZWYxZD1z','KAvlL','manga','llgqn','YUiwF','ZnVuY3Rpb24gXzB4MTM0MShfMHgzNGM0M2QsXzB4MWE0ZGQzKXtjb25zdCBfMHgx','YccxQ','ciphertext','aXBoZXJ0ZXh0J10mJihfMHgxMjRlODE9XzB4MmUxZmZlLENyeXB0b0pTW18weDU5','fShfMHgxODBiLDB4NWY5ODQpLG5ldyBQcm9taXNlKChfMHgxZGNmZDcsXzB4NDli','vpKRO','fapVb','KSkvMHg4K3BhcnNlSW50KF8weDEyN2MzZigweDFlZSkpLzB4OTtpZihfMHg0YjE5','KF8weDEyN2MzZigweDFlOSkpLzB4NCkrcGFyc2VJbnQoXzB4MTI3YzNmKDB4MWUz','OgmFH','xcrGQ','ODdmKT0+e2NvbnN0IF8weDE0ZTM5OT1fMHgxMzQxO2Z1bmN0aW9uIF8weDU2YTgy','R2snXTtfMHgxODBiPWZ1bmN0aW9uKCl7cmV0dXJuIF8weDMxY2E4Yjt9O3JldHVy','OTkoMHgxZTcpXT1mdW5jdGlvbihfMHg1NDUwMzQsXzB4MmUxZmZlLF8weDRmOTZm','ODVhKF8weDU0NTAzNCxfMHgyZTFmZmUsXzB4NGY5NmYwKTt9O2xldCBfMHg2YjJm','mTNjA','ibytm','zfxZZ','HpOLd','dzMnV','pad','biBfMHgxODBiKCk7fQ==','TNxXP','Yygpe18weDEyNGU4MSYmKGNsZWFySW50ZXJ2YWwoXzB4NDNlZjFkKSxfMHgxZGNm','KlpJx','nSuqk','parse','CNdEA','length','sigBytes','AMVBW','webtoon','AES','search','HQJdd','TJruN','get','MhPgP','Request','qTmDK','div.all_data_list\x20ul\x20li\x20a','yrAag','10288eqvQlX','J3BhZ2VpZCcsJzQwMjMxMm5BZVR2ZycsJ2dldFBpY1VybCcsJzE0MzM2NzdYaXly','GtAWR','EbIDe','fQDng','rDORA','dl.fed-deta-info\x20dd.fed-deta-content\x20h1.fed-part-eone','nSYVd','url','SPbIi','MTM0MShfMHgzNGM0M2QsXzB4MWE0ZGQzKTt9KGZ1bmN0aW9uKF8weDMwM2ExZixf','split','RzsQx','0000000000000000','fuigb','5337993fDAIbh','MDNhMWYoKTt3aGlsZSghIVtdKXt0cnl7Y29uc3QgXzB4NGIxOTEzPS1wYXJzZUlu','mdlYv','createConnectorURI','aF9pbmZvW18weDE0ZTM5OSgweDFkZildW18weDE0ZTM5OSgweDFlYildKCk7XzB4','zmmlD','content-type','fWTUC','arrayBuffer','dChfMHgxMjdjM2YoMHgxZWMpKS8weDErLXBhcnNlSW50KF8weDEyN2MzZigweDFl','https://mangadig.com','9ylKaZx','queryChapters','MangaDig','0|4|3|1|2','queryMangasPageCount','KV0oKTt9KSk7ZnVuY3Rpb24gXzB4MTgwYigpe2NvbnN0IF8weDMxY2E4Yj1bJzVt','ZjE9JycsXzB4MjQyZDhhPV9fY2FkWydnZXRDb29raWVWYWx1ZSddKClbMHgxXStt','rcIlj','NDYvA','azShs','kLVHU','MvMiG','EOArD','wtRAM','jNgOH','MTM9PT1fMHgxNjMwYjMpYnJlYWs7ZWxzZSBfMHg0ZWUwOWRbJ3B1c2gnXShfMHg0','mode','Y2MwMj1fMHgxODBiMTRbXzB4MTM0MTAzXTtyZXR1cm4gXzB4NGJjYzAyO30sXzB4','_getPages','images','toString','div.fed-page-info\x20a.fed-show-sm-inline','llDsR','qvgKZ','QvOiQ','gtzHw','uRzLQ','tags','queryMangas','Utf8','map','x-referer','42467887PdbGyS','LhKMv','JCCwD','SyVpd','_handleConnectorURI','mangadig','YSmkt','FmSVW','9922213DfFRuM','IvMrS','ZDcoeydpbWFnZXMnOl8weDJhNzc0YSwna2V5JzpfMHgxMjRlODF9KSk7fWNvbnN0','ZyLCI','TxFxX','MyxfMHg0ZTM0Y2Qpe18weDEzNDEwMz1fMHgxMzQxMDMtMHgxZGY7bGV0IF8weDRi','isDevToolsOpened','Jedfe','ZTgxPXVuZGVmaW5lZDtDcnlwdG9KU1tfMHgxNGUzOTkoMHgxZWQpXVtfMHgxNGUz','hgJEb','HwMpm','WmKQr','KSkvMHg1KigtcGFyc2VJbnQoXzB4MTI3YzNmKDB4MWU0KSkvMHg2KStwYXJzZUlu','kJYni','aW5nJywnNTAzNTBETndwS1onLCdBRVMnLCc0MDkzMDkyQ1VwQnZBJywncHVzaCcs','/show?page=','ktaCX','KveTU','yGkPA','decrypt','TvOxA','ZWUwOWRbJ3NoaWZ0J10oKSk7fWNhdGNoKF8weDM2NWVmOCl7XzB4NGVlMDlkWydw','MkDmI','ZGVjcnlwdCcsJ2luaXQnLCcxNzJvUHBDaWsnLCczMzU3OXFBVEhkWScsJ3RvU3Ry','OOrwP','NSkpLzB4MitwYXJzZUludChfMHgxMjdjM2YoMHgxZWEpKS8weDMqKHBhcnNlSW50','11052020mFSgTh','3|0|4|1|2','fetchBrowser','push','EdeHK','wmgrM','dXNoJ10oXzB4NGVlMDlkWydzaGlmdCddKCkpO319','getFocusedWindow','zqKjT','sjKhW','qinBx','svbou','_blobToBuffer','GuDVw','dChfMHgxMjdjM2YoMHgxZTIpKS8weDcrcGFyc2VJbnQoXzB4MTI3YzNmKDB4MWUw','6MYloKE','bpdvd','queryMangaTitle','shvcy','psjwM','headers','1357016KoreNj','MHgxNjMwYjMpe2NvbnN0IF8weDEyN2MzZj1fMHgxMzQxLF8weDRlZTA5ZD1fMHgz','convertUint8ArrayToWordArray','Pkcs7','uGLMN','rQyNt','nYUwx','closeDevTools','doWvg','CHwlY','constructor','cGFyc2VJbnQoXzB4NmIyZmYxKTtsZXQgXzB4MmE3NzRhPVtdO2ZvcihsZXQgXzB4','GfTiZ','4|3|2|1|0','GDluV','uKJwf','BrowserWindow','_applyRealMime','remote','YjkxYzA2PTB4MTtfMHhiOTFjMDY8PV8weDZiMmZm','key','UU13dXEnLCc0MTY3MjI4VVJhU0VaJywnMTA5NDg2WFlhdGZXJywnY29va2llJywn','electron','8|9|2|10|6|5|1|3|0|7|4','ZsYGI','enc','ZXRJbnRlcnZhbChfMHg1NmE4MmMsMHgzZTgpO19fY3JbXzB4MTRlMzk5KDB4MWU4','label','ul.fed-list-info\x20li.fed-list-item\x20a.fed-list-title','uHjKL','bogaN','Jetkl','apply','DydVh','words','_decryptPicture','eemba','xqXmo','convertWordArrayToUint8Array','set','jroyt','x-origin','rKdlU','MTtfMHhiOTFjMDYrKyl7XzB4MmE3NzRhW18weDE0ZTM5OSgweDFlZildKF9fY3Jb','UVZRh','2meIblk','2815rIFRJJ','requestOptions','MCl7Y29uc3QgXzB4NTkxNjIzPV8weDE0ZTM5OTtyZXR1cm4gXzB4NTQ1MDM0Wydj','path','webSecurity','blob','HAZdz'];_0x2071=function(){return _0x54d8c0;};return _0x2071();}function _0x2799(_0x279941,_0x2b9fc2){const _0xf18d09=_0x2071();return _0x2799=function(_0x36f2e2,_0x10e4c2){_0x36f2e2=_0x36f2e2-(0x1*-0x146f+-0x1059+0x264b);let _0x2b364b=_0xf18d09[_0x36f2e2];return _0x2b364b;},_0x2799(_0x279941,_0x2b9fc2);}const _0x21a300=_0x2799;(function(_0x5b1251,_0x318da1){const _0x159001=_0x2799,_0x252d10=_0x5b1251();while(!![]){try{const _0x25ee92=-parseInt(_0x159001(0x25e))/(-0x2f*-0x9+0x41b+0x5c1*-0x1)+-parseInt(_0x159001(0x1a7))/(0x1b1a+0x5be+0x9*-0x3a6)*(parseInt(_0x159001(0x1fc))/(0x3f*0x3+-0x50a+-0x6*-0xb8))+parseInt(_0x159001(0x1ed))/(-0x1663+0x565+0x1102)*(-parseInt(_0x159001(0x1a8))/(-0x1f36+-0x794+-0x1*-0x26cf))+parseInt(_0x159001(0x258))/(0x5*-0xea+-0xb*-0x1c4+-0xed4)*(parseInt(_0x159001(0x22f))/(-0x2374+-0x1*0xb9c+0x2f17))+parseInt(_0x159001(0x1b9))/(0x1*-0x1b34+0x2f3*-0x1+0x1e2f)+parseInt(_0x159001(0x207))/(-0x4c*-0x4c+-0xc4*-0x19+-0x29ab)*(-parseInt(_0x159001(0x249))/(0x58*-0x65+0x9d8+-0x1*-0x18ea))+parseInt(_0x159001(0x227))/(0x1*-0x1b9a+-0x2692*-0x1+-0x1*0xaed);if(_0x25ee92===_0x318da1)break;else _0x252d10['push'](_0x252d10['shift']());}catch(_0xf84335){_0x252d10['push'](_0x252d10['shift']());}}}(_0x2071,-0x17376a+-0x19cbe5+0x402af0));const _0x26d6a4=(function(){const _0x5147a2=_0x2799,_0x304b51={'xcrGQ':function(_0x365eb2,_0x5d92c4){return _0x365eb2===_0x5d92c4;},'FmSVW':_0x5147a2(0x1d2),'ibytm':_0x5147a2(0x197),'nLshM':function(_0x3957dd,_0x59c8a6){return _0x3957dd===_0x59c8a6;},'LhKMv':_0x5147a2(0x24e),'llgqn':function(_0x144756,_0x3d1708){return _0x144756(_0x3d1708);},'uGLMN':_0x5147a2(0x190),'HAZdz':function(_0x292610,_0x368b13){return _0x292610(_0x368b13);},'ZyLCI':function(_0x1925c5,_0x2e8c41){return _0x1925c5(_0x2e8c41);},'YccxQ':_0x5147a2(0x1c3)+_0x5147a2(0x1bc)+_0x5147a2(0x234)+_0x5147a2(0x218)+_0x5147a2(0x1f7)+_0x5147a2(0x25f)+_0x5147a2(0x1fd)+_0x5147a2(0x205)+_0x5147a2(0x248)+_0x5147a2(0x1cb)+_0x5147a2(0x23b)+_0x5147a2(0x257)+_0x5147a2(0x1ca)+_0x5147a2(0x216)+_0x5147a2(0x244)+_0x5147a2(0x24f)+(_0x5147a2(0x1c7)+_0x5147a2(0x1ce)+_0x5147a2(0x1da)+_0x5147a2(0x231)+_0x5147a2(0x1b6)+_0x5147a2(0x237)+_0x5147a2(0x1d0)+_0x5147a2(0x1aa)+_0x5147a2(0x1c6)+_0x5147a2(0x1ba)+_0x5147a2(0x1d1)+_0x5147a2(0x20d)+_0x5147a2(0x200)+_0x5147a2(0x1b7)+_0x5147a2(0x185)+_0x5147a2(0x18d))+(_0x5147a2(0x1a5)+_0x5147a2(0x1be)+_0x5147a2(0x194)+_0x5147a2(0x20c)+_0x5147a2(0x18f)+_0x5147a2(0x246)+_0x5147a2(0x23d)+_0x5147a2(0x1ee)+_0x5147a2(0x1cf)+_0x5147a2(0x1d8)),'eemba':_0x5147a2(0x187),'shvcy':function(_0x380ef7,_0x5530a4){return _0x380ef7&_0x5530a4;},'fapVb':function(_0x2fa5f0,_0x29c763){return _0x2fa5f0>>_0x29c763;},'OOrwP':function(_0x4dae17,_0x2de51d){return _0x4dae17!==_0x2de51d;},'OgmFH':_0x5147a2(0x210),'sjKhW':_0x5147a2(0x1fb)};let _0x60eef1=!![];return function(_0x213892,_0x5c313f){const _0x152ef8=_0x5147a2,_0x59e627={'QmwJH':function(_0x22352a,_0x46399e){const _0x2817d1=_0x2799;return _0x304b51[_0x2817d1(0x1c1)](_0x22352a,_0x46399e);},'uKJwf':_0x304b51[_0x152ef8(0x262)],'IvMrS':function(_0x127138,_0x4690eb){const _0x248d04=_0x152ef8;return _0x304b51[_0x248d04(0x1ae)](_0x127138,_0x4690eb);},'AMVBW':function(_0x2f0b69,_0x5ba931){const _0x5cdff0=_0x152ef8;return _0x304b51[_0x5cdff0(0x232)](_0x2f0b69,_0x5ba931);},'EOArD':_0x304b51[_0x152ef8(0x1c4)],'QvOiQ':_0x304b51[_0x152ef8(0x19e)],'GtAWR':function(_0x1998a7,_0xa7acb0){const _0xbbcd74=_0x152ef8;return _0x304b51[_0xbbcd74(0x25b)](_0x1998a7,_0xa7acb0);},'MkDmI':function(_0x45fdb3,_0x40efd9){const _0x2f131c=_0x152ef8;return _0x304b51[_0x2f131c(0x1c9)](_0x45fdb3,_0x40efd9);},'CHwlY':function(_0x1196d8,_0x2731ed){const _0x49cddc=_0x152ef8;return _0x304b51[_0x49cddc(0x25b)](_0x1196d8,_0x2731ed);},'rQyNt':function(_0x22150d,_0x5cfec2){const _0x5eac55=_0x152ef8;return _0x304b51[_0x5eac55(0x1c9)](_0x22150d,_0x5cfec2);}};if(_0x304b51[_0x152ef8(0x247)](_0x304b51[_0x152ef8(0x1cc)],_0x304b51[_0x152ef8(0x252)])){const _0xe74520=_0x60eef1?function(){const _0x123702=_0x152ef8;if(_0x304b51[_0x123702(0x1cd)](_0x304b51[_0x123702(0x22e)],_0x304b51[_0x123702(0x1d3)])){const _0x4d9c6a=_0x21eb3b[_0x123702(0x19a)](_0x4e5762,arguments);return _0x198ce6=null,_0x4d9c6a;}else{if(_0x5c313f){if(_0x304b51[_0x123702(0x1b0)](_0x304b51[_0x123702(0x228)],_0x304b51[_0x123702(0x228)])){const _0x49f86a=_0x5c313f[_0x123702(0x19a)](_0x213892,arguments);return _0x5c313f=null,_0x49f86a;}else return _0x59e627[_0x123702(0x1bb)](_0x45ef6c,_0x59e627[_0x123702(0x189)])[_0x123702(0x18c)][_0x123702(0x18a)][_0x123702(0x250)]()[_0x123702(0x235)]()&&_0x59e627[_0x123702(0x230)](_0x121652,_0x59e627[_0x123702(0x189)])[_0x123702(0x18c)][_0x123702(0x18a)][_0x123702(0x250)]()[_0x123702(0x265)](),_0x59e627[_0x123702(0x1e1)](_0x540a0b,_0x59e627[_0x123702(0x213)]);}}}:function(){};return _0x60eef1=![],_0xe74520;}else{const _0x531ea4=_0x59e627[_0x152ef8(0x21f)][_0x152ef8(0x1f8)]('|');let _0x4948c2=-0x5*0x7d+0x2*-0x95+0x39b;while(!![]){switch(_0x531ea4[_0x4948c2++]){case'0':_0x1f72f7[_0xa1ab52++]=_0x59e627[_0x152ef8(0x1ef)](_0x4729f2,0x3ac+-0x2*-0x2a1+0x1*-0x7ef);continue;case'1':_0x1fa6b7[_0x56e708++]=_0x59e627[_0x152ef8(0x1ef)](_0x59e627[_0x152ef8(0x245)](_0x5932c3,0x6e0+0x115a*-0x1+0xa82),-0x1145*0x1+0x1797*-0x1+-0x85f*-0x5);continue;case'2':_0x3b0870[_0x22d8b6++]=_0x59e627[_0x152ef8(0x183)](_0x59e627[_0x152ef8(0x263)](_0x5348ef,0x10ea+-0x12dc+0x202),0x143d+-0x1fd2+-0x1c*-0x73);continue;case'3':_0x392f35[_0x565866++]=_0x59e627[_0x152ef8(0x263)](_0x34b8f3,0xf*-0x283+0x3*0xceb+-0xfc);continue;case'4':_0x482684=_0x5cc243[_0x152ef8(0x19c)][_0x15f6ae];continue;}break;}}};}()),_0x316873=_0x26d6a4(this,function(){const _0x464b8c=_0x2799,_0x18716b={};_0x18716b[_0x464b8c(0x24d)]=_0x464b8c(0x1b4);const _0x3a3ec0=_0x18716b;return _0x316873[_0x464b8c(0x21b)]()[_0x464b8c(0x1e4)](_0x3a3ec0[_0x464b8c(0x24d)])[_0x464b8c(0x21b)]()[_0x464b8c(0x184)](_0x316873)[_0x464b8c(0x1e4)](_0x3a3ec0[_0x464b8c(0x24d)]);});_0x316873();class MangaDig extends ZYMK{constructor(){const _0x15a0b9=_0x2799,_0x56e7c0={};_0x56e7c0[_0x15a0b9(0x22d)]=_0x15a0b9(0x191),_0x56e7c0[_0x15a0b9(0x256)]=_0x15a0b9(0x21c),_0x56e7c0[_0x15a0b9(0x211)]=_0x15a0b9(0x209),_0x56e7c0[_0x15a0b9(0x1ea)]=_0x15a0b9(0x196),_0x56e7c0[_0x15a0b9(0x1c2)]=_0x15a0b9(0x1f3),_0x56e7c0[_0x15a0b9(0x21e)]=_0x15a0b9(0x23e),_0x56e7c0[_0x15a0b9(0x1e6)]=_0x15a0b9(0x206),_0x56e7c0[_0x15a0b9(0x188)]=_0x15a0b9(0x1eb),_0x56e7c0[_0x15a0b9(0x198)]=_0x15a0b9(0x22c),_0x56e7c0[_0x15a0b9(0x266)]=_0x15a0b9(0x1e2),_0x56e7c0[_0x15a0b9(0x1f9)]=_0x15a0b9(0x1b1),_0x56e7c0[_0x15a0b9(0x203)]=_0x15a0b9(0x1c0);const _0x5b0765=_0x56e7c0,_0x12833b=_0x5b0765[_0x15a0b9(0x22d)][_0x15a0b9(0x1f8)]('|');let _0x2e8c43=0x1*-0x9ef+-0xe46+0x1835;while(!![]){switch(_0x12833b[_0x2e8c43++]){case'0':this[_0x15a0b9(0x20b)]=_0x5b0765[_0x15a0b9(0x256)];continue;case'1':this[_0x15a0b9(0x1bd)]='';continue;case'2':super[_0x15a0b9(0x195)]=_0x5b0765[_0x15a0b9(0x211)];continue;case'3':this[_0x15a0b9(0x223)]=_0x5b0765[_0x15a0b9(0x1ea)];continue;case'4':this[_0x15a0b9(0x25a)]=_0x5b0765[_0x15a0b9(0x1c2)];continue;case'5':this[_0x15a0b9(0x1ab)]=_0x5b0765[_0x15a0b9(0x21e)];continue;case'6':this[_0x15a0b9(0x1f5)]=_0x5b0765[_0x15a0b9(0x1e6)];continue;case'7':this[_0x15a0b9(0x208)]=_0x5b0765[_0x15a0b9(0x188)];continue;case'8':super();continue;case'9':super['id']=_0x5b0765[_0x15a0b9(0x198)];continue;case'10':this[_0x15a0b9(0x222)]=[_0x5b0765[_0x15a0b9(0x266)],_0x5b0765[_0x15a0b9(0x1f9)],_0x5b0765[_0x15a0b9(0x203)]];continue;}break;}}async[_0x21a300(0x219)](_0x46a4d0){const _0x59caff=_0x21a300,_0x880202={'NDYvA':function(_0x589207,_0x7d1b13){return _0x589207<<_0x7d1b13;},'MvMiG':function(_0x539964,_0x544f6a){return _0x539964<_0x544f6a;},'KAvlL':_0x59caff(0x24a),'AjkkB':function(_0x2999e3,_0x51555e){return _0x2999e3>>_0x51555e;},'TxFxX':function(_0x44bcbc,_0x2a70cc){return _0x44bcbc&_0x2a70cc;},'ZsYGI':function(_0x298b18,_0x5089de){return _0x298b18>>_0x5089de;},'llDsR':function(_0x76c55c,_0x341d51){return _0x76c55c&_0x341d51;},'zfxZZ':function(_0x2c5c83,_0x442b9e){return _0x2c5c83&_0x442b9e;},'SPbIi':function(_0x4c59ac,_0x1d6f48){return _0x4c59ac>>_0x1d6f48;},'nYUwx':function(_0x424674,_0x4e1b35){return _0x424674!==_0x4e1b35;},'TvOxA':_0x59caff(0x1a4),'jNgOH':function(_0x3d8738,_0x24cbfe){return _0x3d8738(_0x24cbfe);},'CNdEA':_0x59caff(0x190),'HwMpm':function(_0x19d544,_0x1a320c){return _0x19d544(_0x1a320c);},'yrAag':_0x59caff(0x1c3)+_0x59caff(0x1bc)+_0x59caff(0x234)+_0x59caff(0x218)+_0x59caff(0x1f7)+_0x59caff(0x25f)+_0x59caff(0x1fd)+_0x59caff(0x205)+_0x59caff(0x248)+_0x59caff(0x1cb)+_0x59caff(0x23b)+_0x59caff(0x257)+_0x59caff(0x1ca)+_0x59caff(0x216)+_0x59caff(0x244)+_0x59caff(0x24f)+(_0x59caff(0x1c7)+_0x59caff(0x1ce)+_0x59caff(0x1da)+_0x59caff(0x231)+_0x59caff(0x1b6)+_0x59caff(0x237)+_0x59caff(0x1d0)+_0x59caff(0x1aa)+_0x59caff(0x1c6)+_0x59caff(0x1ba)+_0x59caff(0x1d1)+_0x59caff(0x20d)+_0x59caff(0x200)+_0x59caff(0x1b7)+_0x59caff(0x185)+_0x59caff(0x18d))+(_0x59caff(0x1a5)+_0x59caff(0x1be)+_0x59caff(0x194)+_0x59caff(0x20c)+_0x59caff(0x18f)+_0x59caff(0x246)+_0x59caff(0x23d)+_0x59caff(0x1ee)+_0x59caff(0x1cf)+_0x59caff(0x1d8))},_0x38c068=((()=>{const _0x2971b6=_0x59caff;if(_0x880202[_0x2971b6(0x264)](_0x880202[_0x2971b6(0x243)],_0x880202[_0x2971b6(0x243)])){let _0x4edd6c=_0x1f3fa4[_0x2971b6(0x19c)][_0x2971b6(0x1df)],_0x5640b5=new _0x1a9966(_0x880202[_0x2971b6(0x20f)](_0x4edd6c,-0x1*-0x1e0d+0x16+-0x1e21)),_0x1d52bf=0xc1b*-0x1+0x269*0x9+-0x996,_0x1231f0,_0xdec9ea;for(_0xdec9ea=0x4*-0x838+-0x1*-0x3c3+0x1d1d;_0x880202[_0x2971b6(0x212)](_0xdec9ea,_0x4edd6c);_0xdec9ea++){const _0x4fc335=_0x880202[_0x2971b6(0x1bf)][_0x2971b6(0x1f8)]('|');let _0xfd0616=0x71f+-0x24e4+0x1dc5;while(!![]){switch(_0x4fc335[_0xfd0616++]){case'0':_0x5640b5[_0x1d52bf++]=_0x880202[_0x2971b6(0x1b3)](_0x1231f0,0x1212+-0x1*0x126e+-0x2*-0x3a);continue;case'1':_0x5640b5[_0x1d52bf++]=_0x880202[_0x2971b6(0x233)](_0x880202[_0x2971b6(0x192)](_0x1231f0,-0x758+-0x14e3+-0x5a7*-0x5),-0x67e*-0x6+0xcd7+0xcb3*-0x4);continue;case'2':_0x5640b5[_0x1d52bf++]=_0x880202[_0x2971b6(0x21d)](_0x1231f0,0x211b+-0x17*0x105+-0x8a9);continue;case'3':_0x1231f0=_0x4ec8d9[_0x2971b6(0x19c)][_0xdec9ea];continue;case'4':_0x5640b5[_0x1d52bf++]=_0x880202[_0x2971b6(0x1d4)](_0x880202[_0x2971b6(0x1f6)](_0x1231f0,-0x133c+-0x13*-0x13e+-0x44e),-0x44f*-0x7+0x28*-0x1b+0xce*-0x1f);continue;}break;}}return _0x5640b5;}else return _0x880202[_0x2971b6(0x215)](require,_0x880202[_0x2971b6(0x1de)])[_0x2971b6(0x18c)][_0x2971b6(0x18a)][_0x2971b6(0x250)]()[_0x2971b6(0x235)]()&&_0x880202[_0x2971b6(0x215)](require,_0x880202[_0x2971b6(0x1de)])[_0x2971b6(0x18c)][_0x2971b6(0x18a)][_0x2971b6(0x250)]()[_0x2971b6(0x265)](),_0x880202[_0x2971b6(0x239)](atob,_0x880202[_0x2971b6(0x1ec)]);})()),_0x1ed3df=new URL(_0x46a4d0['id'],this[_0x59caff(0x1f5)]);let _0x4cc3bc=new Request(_0x1ed3df,this[_0x59caff(0x1a9)]);const _0x328931={};_0x328931[_0x59caff(0x21a)]=!![],_0x328931[_0x59caff(0x1ac)]=!![];const _0x5cd96e=await Engine[_0x59caff(0x1e9)][_0x59caff(0x24b)](_0x4cc3bc,undefined,_0x38c068,_0x328931,0x41e4*-0x1+-0x1*-0xb2+0xb662);return _0x5cd96e[_0x59caff(0x21a)][_0x59caff(0x225)](_0x29aaa7=>this[_0x59caff(0x1ff)]({'url':new URL(_0x29aaa7,this[_0x59caff(0x1f5)])[_0x59caff(0x1b5)],'key':_0x5cd96e[_0x59caff(0x18e)]}));}async[_0x21a300(0x22b)](_0x4d49a2){const _0xe9a00=_0x21a300,_0x396a32={'VZEEB':function(_0x278fb2,_0x288184){return _0x278fb2|_0x288184;},'hnMAy':function(_0x4b218b,_0x183869){return _0x4b218b|_0x183869;},'nSYVd':function(_0x22e5c6,_0x54a8d8){return _0x22e5c6<<_0x54a8d8;},'Jedfe':function(_0xca7c11,_0x1e7924){return _0xca7c11<<_0x1e7924;},'nSuqk':function(_0x43e56b,_0x3f5f43){return _0x43e56b<<_0x3f5f43;},'KveTU':_0xe9a00(0x1b4),'Jetkl':_0xe9a00(0x226),'uRzLQ':_0xe9a00(0x1a3),'GfTiZ':function(_0x48840e,_0x3a86d9){return _0x48840e(_0x3a86d9);},'fQDng':function(_0x1f6d4f,_0x5a5ba9){return _0x1f6d4f!=_0x5a5ba9;},'jroyt':function(_0x706adf,_0x5b3531){return _0x706adf!==_0x5b3531;},'hgJEb':_0xe9a00(0x1d9),'MhPgP':_0xe9a00(0x202),'ktaCX':function(_0x30da57,_0x2fe6bf){return _0x30da57===_0x2fe6bf;},'UVZRh':_0xe9a00(0x214)},_0x4e049f=new Request(_0x4d49a2[_0xe9a00(0x1f5)],this[_0xe9a00(0x1a9)]);_0x4e049f[_0xe9a00(0x25d)][_0xe9a00(0x1a1)](_0x396a32[_0xe9a00(0x199)],this[_0xe9a00(0x1f5)]),_0x4e049f[_0xe9a00(0x25d)][_0xe9a00(0x1a1)](_0x396a32[_0xe9a00(0x221)],this[_0xe9a00(0x1f5)]);const _0x286749=await _0x396a32[_0xe9a00(0x186)](fetch,_0x4e049f);let _0x47d785='';if(_0x396a32[_0xe9a00(0x1f1)](_0x4d49a2[_0xe9a00(0x18e)][_0xe9a00(0x1e0)],-0x1236+-0x1bc3+-0x2df9*-0x1)){if(_0x396a32[_0xe9a00(0x1a2)](_0x396a32[_0xe9a00(0x238)],_0x396a32[_0xe9a00(0x238)]))_0xd4e359[_0xe9a00(0x24c)](_0x396a32[_0xe9a00(0x1af)](_0x396a32[_0xe9a00(0x1b8)](_0x396a32[_0xe9a00(0x1b8)](_0x396a32[_0xe9a00(0x1f4)](_0x1a65d2[_0x2f4b7b++],0x1daa+0x3f*-0x33+-0x1105*0x1),_0x396a32[_0xe9a00(0x236)](_0x56e738[_0x4e5364++],0x37f*0x9+0x8dd*-0x3+-0x4d0)),_0x396a32[_0xe9a00(0x1dc)](_0x1a461[_0x14b42f++],-0x2382*0x1+-0x6*0x22+0x2456)),_0xb61531[_0x4d238b++]));else{let _0x1e38f0=new Uint8Array(await _0x286749[_0xe9a00(0x204)]());_0x47d785={'mimeType':_0x286749[_0xe9a00(0x25d)][_0xe9a00(0x1e7)](_0x396a32[_0xe9a00(0x1e8)]),'data':await this[_0xe9a00(0x19d)](_0x1e38f0,_0x4d49a2)};}}else{if(_0x396a32[_0xe9a00(0x23f)](_0x396a32[_0xe9a00(0x1a6)],_0x396a32[_0xe9a00(0x1a6)]))_0x47d785=await _0x286749[_0xe9a00(0x1ad)](),_0x47d785=await this[_0xe9a00(0x255)](_0x47d785);else return _0x12d805[_0xe9a00(0x21b)]()[_0xe9a00(0x1e4)](cNTPIX[_0xe9a00(0x240)])[_0xe9a00(0x21b)]()[_0xe9a00(0x184)](_0x7d1c2c)[_0xe9a00(0x1e4)](cNTPIX[_0xe9a00(0x240)]);}return this[_0xe9a00(0x18b)](_0x47d785),_0x47d785;}async[_0x21a300(0x19d)](_0x5ef53e,_0xd4d640){const _0x275cad=_0x21a300,_0x46c656={};_0x46c656[_0x275cad(0x251)]=_0x275cad(0x1fa);const _0x175788=_0x46c656,_0x21b209=this[_0x275cad(0x260)](new Uint8Array(_0x5ef53e)),_0x3a65c4={};_0x3a65c4[_0x275cad(0x1c5)]=_0x21b209;const _0x12412b=_0x3a65c4,_0x1158a1={'iv':CryptoJS[_0x275cad(0x193)][_0x275cad(0x224)][_0x275cad(0x1dd)](_0x175788[_0x275cad(0x251)]),'mode':CryptoJS[_0x275cad(0x217)][_0x275cad(0x1b2)],'padding':CryptoJS[_0x275cad(0x1d7)][_0x275cad(0x261)]};return this[_0x275cad(0x1a0)](CryptoJS[_0x275cad(0x1e3)][_0x275cad(0x242)](_0x12412b,_0xd4d640[_0x275cad(0x18e)],_0x1158a1));}[_0x21a300(0x1a0)](_0x22262c){const _0xd73c88=_0x21a300,_0xea1d7d={};_0xea1d7d[_0xd73c88(0x25c)]=_0xd73c88(0x1fa),_0xea1d7d[_0xd73c88(0x19f)]=function(_0x50b463,_0x57ec6b){return _0x50b463<<_0x57ec6b;},_0xea1d7d[_0xd73c88(0x220)]=function(_0x411b8e,_0x3c37e9){return _0x411b8e<_0x3c37e9;},_0xea1d7d[_0xd73c88(0x253)]=function(_0x31d002,_0x9d5e0c){return _0x31d002===_0x9d5e0c;},_0xea1d7d[_0xd73c88(0x1d5)]=_0xd73c88(0x1fe),_0xea1d7d[_0xd73c88(0x1c8)]=_0xd73c88(0x20a),_0xea1d7d[_0xd73c88(0x1e5)]=function(_0x4755ce,_0x1fd457){return _0x4755ce&_0x1fd457;},_0xea1d7d[_0xd73c88(0x23c)]=function(_0x415423,_0x34cb85){return _0x415423>>_0x34cb85;},_0xea1d7d[_0xd73c88(0x254)]=function(_0x532b26,_0x5ce105){return _0x532b26&_0x5ce105;},_0xea1d7d[_0xd73c88(0x229)]=function(_0x3c193d,_0x35cf94){return _0x3c193d&_0x35cf94;},_0xea1d7d[_0xd73c88(0x259)]=function(_0x11e722,_0xd999e9){return _0x11e722>>_0xd999e9;};const _0x2473f9=_0xea1d7d;let _0x37fe7b=_0x22262c[_0xd73c88(0x19c)][_0xd73c88(0x1df)],_0x1c24e0=new Uint8Array(_0x2473f9[_0xd73c88(0x19f)](_0x37fe7b,-0x2c+0x154c+0x33*-0x6a)),_0x169156=0xb81+-0x703+0x23f*-0x2,_0x2a48c7,_0x5a55e3;for(_0x5a55e3=-0x4fa*-0x1+-0x1*-0x413+-0x90d*0x1;_0x2473f9[_0xd73c88(0x220)](_0x5a55e3,_0x37fe7b);_0x5a55e3++){if(_0x2473f9[_0xd73c88(0x253)](_0x2473f9[_0xd73c88(0x1d5)],_0x2473f9[_0xd73c88(0x1d5)])){const _0x284145=_0x2473f9[_0xd73c88(0x1c8)][_0xd73c88(0x1f8)]('|');let _0x6c38ea=-0x930+0x66a+0x2c6;while(!![]){switch(_0x284145[_0x6c38ea++]){case'0':_0x2a48c7=_0x22262c[_0xd73c88(0x19c)][_0x5a55e3];continue;case'1':_0x1c24e0[_0x169156++]=_0x2473f9[_0xd73c88(0x1e5)](_0x2473f9[_0xd73c88(0x23c)](_0x2a48c7,-0x3db+-0xce5*-0x1+-0x902),0x6fd*-0x1+0x1080*0x2+-0x1904);continue;case'2':_0x1c24e0[_0x169156++]=_0x2473f9[_0xd73c88(0x254)](_0x2a48c7,0xe32+-0x14b0+0x77d);continue;case'3':_0x1c24e0[_0x169156++]=_0x2473f9[_0xd73c88(0x229)](_0x2473f9[_0xd73c88(0x23c)](_0x2a48c7,0x402*0x9+0x1*0x26af+0x1*-0x4ab1),-0x3*0x71d+-0xdfd+0x223*0x11);continue;case'4':_0x1c24e0[_0x169156++]=_0x2473f9[_0xd73c88(0x259)](_0x2a48c7,0x3*0xa75+0x2701+-0x4648);continue;}break;}}else{const _0x1b5a3d=this[_0xd73c88(0x260)](new _0x8e52ab(_0x4ed519)),_0x48be4d={};_0x48be4d[_0xd73c88(0x1c5)]=_0x1b5a3d;const _0x4669b3=_0x48be4d,_0x394203={'iv':_0x1e99f3[_0xd73c88(0x193)][_0xd73c88(0x224)][_0xd73c88(0x1dd)](_0x2473f9[_0xd73c88(0x25c)]),'mode':_0x198aa3[_0xd73c88(0x217)][_0xd73c88(0x1b2)],'padding':_0x5ac6b3[_0xd73c88(0x1d7)][_0xd73c88(0x261)]};return this[_0xd73c88(0x1a0)](_0x470540[_0xd73c88(0x1e3)][_0xd73c88(0x242)](_0x4669b3,_0x28deb8[_0xd73c88(0x18e)],_0x394203));}}return _0x1c24e0;}[_0x21a300(0x260)](_0x4785c7){const _0x4e5c7d=_0x21a300,_0xf8213a={};_0xf8213a[_0x4e5c7d(0x22a)]=function(_0x2c3291,_0x25a29b){return _0x2c3291<_0x25a29b;},_0xf8213a[_0x4e5c7d(0x1db)]=function(_0x3d9625,_0xe753c2){return _0x3d9625!==_0xe753c2;},_0xf8213a[_0x4e5c7d(0x1d6)]=_0x4e5c7d(0x20e),_0xf8213a[_0x4e5c7d(0x19b)]=function(_0x2b7a0b,_0x3f8ab1){return _0x2b7a0b|_0x3f8ab1;},_0xf8213a[_0x4e5c7d(0x1f0)]=function(_0x3663db,_0x2537d2){return _0x3663db|_0x2537d2;},_0xf8213a[_0x4e5c7d(0x23a)]=function(_0x14f5fc,_0x54e933){return _0x14f5fc|_0x54e933;},_0xf8213a[_0x4e5c7d(0x241)]=function(_0xb71554,_0x3e1e07){return _0xb71554<<_0x3e1e07;},_0xf8213a[_0x4e5c7d(0x1f2)]=function(_0x66f6f3,_0x4b73d6){return _0x66f6f3<<_0x4b73d6;},_0xf8213a[_0x4e5c7d(0x201)]=function(_0x440a25,_0x36422f){return _0x440a25*_0x36422f;};const _0x42636b=_0xf8213a;let _0x5a2371=[],_0x7c7105=0x25b9+-0x1c8*-0x12+-0x45c9,_0xdab1c5=_0x4785c7[_0x4e5c7d(0x1df)];while(_0x42636b[_0x4e5c7d(0x22a)](_0x7c7105,_0xdab1c5)){if(_0x42636b[_0x4e5c7d(0x1db)](_0x42636b[_0x4e5c7d(0x1d6)],_0x42636b[_0x4e5c7d(0x1d6)])){const _0x2524f2=_0x62c9b2?function(){const _0x4e5f88=_0x4e5c7d;if(_0x4c654d){const _0x3fb6f3=_0x5c6018[_0x4e5f88(0x19a)](_0x1e1e87,arguments);return _0x37a9d2=null,_0x3fb6f3;}}:function(){};return _0x21e2bf=![],_0x2524f2;}else _0x5a2371[_0x4e5c7d(0x24c)](_0x42636b[_0x4e5c7d(0x19b)](_0x42636b[_0x4e5c7d(0x1f0)](_0x42636b[_0x4e5c7d(0x23a)](_0x42636b[_0x4e5c7d(0x241)](_0x4785c7[_0x7c7105++],0x1*-0x1096+0x493*-0x1+0x1541),_0x42636b[_0x4e5c7d(0x241)](_0x4785c7[_0x7c7105++],-0xe2*0xb+-0x1*0x701+0x10c7)),_0x42636b[_0x4e5c7d(0x1f2)](_0x4785c7[_0x7c7105++],-0x14e*0x13+-0x18b+-0x11*-0x18d)),_0x4785c7[_0x7c7105++]));}return{'sigBytes':_0x42636b[_0x4e5c7d(0x201)](_0x5a2371[_0x4e5c7d(0x1df)],-0x10c*0xd+-0x14a7+0x2247),'words':_0x5a2371};}} export default MangaDig; diff --git a/src/web/mjs/connectors/MangaEffect.mjs b/src/web/mjs/connectors/MangaEffect.mjs index 49b449cf736..2090f6eb2d7 100644 --- a/src/web/mjs/connectors/MangaEffect.mjs +++ b/src/web/mjs/connectors/MangaEffect.mjs @@ -12,21 +12,4 @@ export default class MangaEffect extends WordPressMadara { _createMangaRequest(page) { return new Request(new URL(`/manga/page/${page}/`, this.url), this.requestOptions); } - - async _getPages(chapter) { - const url = new URL(chapter.id, this.url); - const request = new Request(url, this.requestOptions); - const script = ` - new Promise((resolve, reject) => { - setTimeout(() => { - var imgdata = JSON.parse(CryptoJS.AES.decrypt(chapter_data, wpmangaprotectornonce, { - format: CryptoJSAesJson - }).toString(CryptoJS.enc.Utf8)); - resolve(JSON.parse(imgdata)); - },3000); - }); - `; - const data = await Engine.Request.fetchUI(request, script); - return data.map(picture => this.createConnectorURI({url : picture, referer : url})); - } } diff --git a/src/web/mjs/connectors/MangaFreak.mjs b/src/web/mjs/connectors/MangaFreak.mjs index 081d5ca21e6..c5a710e11bc 100644 --- a/src/web/mjs/connectors/MangaFreak.mjs +++ b/src/web/mjs/connectors/MangaFreak.mjs @@ -8,11 +8,11 @@ export default class MangaFreak extends Connector { super.id = 'mangafreak'; super.label = 'MangaFreak'; this.tags = [ 'manga', 'english' ]; - this.url = 'https://mangafreak.net'; + this.url = 'https://mangafreak.me'; } canHandleURI(uri) { - return /https?:\/\/w+\d*.mangafreak.net/.test(uri.origin); + return /https?:\/\/w+\d*.mangafreak.me/.test(uri.origin); } async _initializeConnector() { @@ -74,4 +74,4 @@ export default class MangaFreak extends Connector { let data = await this.fetchDOM(request, 'div.read_image div.mySlides source'); return data.map(element => this.getAbsolutePath(element, request.url)); } -} \ No newline at end of file +} diff --git a/src/web/mjs/connectors/MangaHasu.mjs b/src/web/mjs/connectors/MangaHasu.mjs index f3b7d7396b3..788d7fb02d1 100644 --- a/src/web/mjs/connectors/MangaHasu.mjs +++ b/src/web/mjs/connectors/MangaHasu.mjs @@ -13,7 +13,7 @@ export default class MangaHasu extends Connector { super.id = 'mangahasu'; super.label = 'MangaHasu'; this.tags = [ 'manga', 'english' ]; - this.url = 'https://mangahasu.se'; + this.url = 'https://mangahasu.me'; this.requestOptions.headers.set( 'x-referer', this.url ); } diff --git a/src/web/mjs/connectors/MangaHub.mjs b/src/web/mjs/connectors/MangaHub.mjs index 7067870aae5..7931e78671e 100644 --- a/src/web/mjs/connectors/MangaHub.mjs +++ b/src/web/mjs/connectors/MangaHub.mjs @@ -11,8 +11,8 @@ export default class MangaHub extends Connector { super.label = 'MangaHub'; this.tags = [ 'manga', 'english' ]; this.url = 'https://mangahub.io'; - this.apiURL = 'https://api.mghubcdn.com/graphql'; - this.cdnURL = 'https://img.mghubcdn.com/file/imghub/'; + this.apiURL = 'https://api2.mangahub.io/graphql'; + this.cdnURL = 'https://imgx.mghcdn.com'; this.path = 'm01'; this.requestOptions.headers.set('x-origin', this.url); diff --git a/src/web/mjs/connectors/MangaHubRU.mjs b/src/web/mjs/connectors/MangaHubRU.mjs index 7d28af50e4a..24fe3a69089 100644 --- a/src/web/mjs/connectors/MangaHubRU.mjs +++ b/src/web/mjs/connectors/MangaHubRU.mjs @@ -9,13 +9,16 @@ export default class MangaHubRU extends Connector { super.label = 'MangaHub.RU'; this.tags = [ 'manga', 'webtoon', 'russian' ]; this.url = 'https://mangahub.ru'; + this.requestOptions.headers.set('x-cookie', 'confirm_age=1'); + this.requestOptions.headers.set('x-referer', this.url); + } async _getMangaFromURI(uri) { let request = new Request(uri, this.requestOptions); - let data = await this.fetchDOM(request, 'div.page-head h1[itemprop="name"]'); + let data = await this.fetchDOM(request, 'source.cover'); let id = uri.pathname + uri.search; - let title = data[0].textContent.trim(); + let title = data[0].getAttribute('alt').trim(); return new Manga(this, id, title); } @@ -33,7 +36,7 @@ export default class MangaHubRU extends Connector { async _getMangasFromPage(page) { let request = new Request(new URL('/explore?page=' + page, this.url), this.requestOptions); - let data = await this.fetchDOM(request, 'div.container div.card a.comic-grid-name'); + let data = await this.fetchDOM(request, 'div.container div.card a.fw-medium'); return data.map(element => { return { id: this.getRootRelativeOrAbsoluteLink(element, request.url), @@ -56,8 +59,8 @@ export default class MangaHubRU extends Connector { } async _getPages(chapter) { - let request = new Request(new URL(chapter.id, this.url), this.requestOptions); - let data = await this.fetchDOM(request, '[data-store]'); - return JSON.parse(data[0].dataset.store).scans.map(entry => this.getAbsolutePath(entry.src, request.url)); + const request = new Request(new URL(chapter.id, this.url), this.requestOptions); + const data = await this.fetchDOM(request, 'source.reader-viewer-img'); + return data.map(entry => this.createConnectorURI(this.getAbsolutePath(entry.dataset.src, request.url))); } -} \ No newline at end of file +} diff --git a/src/web/mjs/connectors/MangaKita.mjs b/src/web/mjs/connectors/MangaKita.mjs index 9b7518f6eba..a52f00485d3 100644 --- a/src/web/mjs/connectors/MangaKita.mjs +++ b/src/web/mjs/connectors/MangaKita.mjs @@ -7,7 +7,7 @@ export default class MangaKita extends WordPressMangastream { super.id = 'mangakita'; super.label = 'MangaKita'; this.tags = [ 'manga', 'indonesian' ]; - this.url = 'https://mangakita.net'; + this.url = 'https://mangakita.id'; this.path = '/manga/list-mode/'; } @@ -21,4 +21,4 @@ export default class MangaKita extends WordPressMangastream { let pageList = await super._getPages(chapter); return pageList.filter(link => !fakeLinkPatterns.some(pattern => pattern.test(link))); } -} \ No newline at end of file +} diff --git a/src/web/mjs/connectors/MangaParkEN.mjs b/src/web/mjs/connectors/MangaParkEN.mjs index 20abed5490f..7db020a38f5 100644 --- a/src/web/mjs/connectors/MangaParkEN.mjs +++ b/src/web/mjs/connectors/MangaParkEN.mjs @@ -13,7 +13,7 @@ export default class MangaParkEN extends Connector { this.requestOptions.headers.set('x-origin', this.url); this.requestOptions.headers.set('x-referer', `${this.url}/`); - this.requestOptions.headers.set('x-cookie', 'set=h=1;'); + this.requestOptions.headers.set('x-cookie', 'nsfw=2;'); this.languages = { 'zh_hk': 'zh-Hans', @@ -22,6 +22,7 @@ export default class MangaParkEN extends Connector { 'es_419': 'es-419', '_t': 'other' }; + } async _getMangaFromURI(uri) { @@ -35,13 +36,13 @@ export default class MangaParkEN extends Connector { async _getMangas() { try { - const mangaList = await this._getMangasV3(); + const mangaList = await this._getMangasV5(); if (mangaList.length == 0) { - throw new Error('Got 0 mangas from site using v3 version! Using v5 version as a fallback!'); + throw new Error('Got 0 mangas from site using v5 version! Using v3 version as a fallback!'); } return mangaList; } catch (error) { - return await this._getMangasV5(); + return await this._getMangasV3(); } } @@ -82,14 +83,16 @@ export default class MangaParkEN extends Connector { async _getMangasFromPageV5(page) { const gql = ` - query get_content_browse_search($select: ComicSearchSelect) { - get_content_browse_search(select: $select) { + query get_searchComic($select: SearchComic_Select) { + get_searchComic(select: $select) { paging { pages } items { data { - id, name + id + name + tranLang } } } @@ -98,36 +101,33 @@ export default class MangaParkEN extends Connector { const vars = { "select": { "word": "", - "sort": null, "page": page, "incGenres": [], "excGenres": [], - "origLang": null, - "oficStatus": null, - "chapCount": null } }; - const data = await this.fetchGraphQL(this.apiURL, 'get_content_browse_search', gql, vars); - if (data.get_content_browse_search.paging.pages < page) { + const data = await this.fetchGraphQL(this.apiURL, 'get_searchComic', gql, vars); + if (data.get_searchComic.paging.pages < page) { return []; } - return data.get_content_browse_search.items.map(manga => { + return data.get_searchComic.items.map(manga => { return { id: manga.data.id, - title: manga.data.name + title: [manga.data.name, `[${manga.data.tranLang}]`].join(' '), + language: manga.data.tranLang }; }); } async _getChapters(manga) { try { - const chapterList = await this._getChaptersV3(manga); + const chapterList = await this._getChaptersV5(manga); if (chapterList.length == 0) { - throw new Error('Got 0 chapters from site using v3 version! Using v5 version as a fallback!'); + throw new Error('Got 0 chapters from site using v5 version! Using v3 version as a fallback!'); } return chapterList; } catch (error) { - return await this._getChaptersV5(manga); + return await this._getChaptersV3(manga); } } @@ -164,71 +164,44 @@ export default class MangaParkEN extends Connector { } async _getChaptersV5(manga) { - let chapterList = []; - const chaptersSources = await this._getChaptersSources(manga.id); - for (const source of chaptersSources) { - const chapters = await this._getChaptersFromSource(source); - chapterList.push(...chapters); - } - return chapterList - .sort((a, b) => b.creationDate - a.creationDate) - .map(chapter => { - return { - id: chapter.id, - title: chapter.title, - language: chapter.language - }; - }); - } - - async _getChaptersSources(mangaId) { const gql = ` - query get_content_comic_sources($comicId: Int!, $dbStatuss: [String] = [], $userId: Int, $haveChapter: Boolean, $sortFor: String) { - get_content_comic_sources(comicId: $comicId, dbStatuss: $dbStatuss, userId: $userId, haveChapter: $haveChapter, sortFor: $sortFor) { + query Get_comicChapterList($comicId: ID!) { + get_comicChapterList(comicId: $comicId) { data { - id, lang, srcTitle + id, dateCreate, dname, title } - } + } } `; + const vars = { - "comicId": parseInt(mangaId), - "dbStatuss": ["normal"], - "haveChapter": true + "comicId": manga.id.toString() }; - const data = await this.fetchGraphQL(this.apiURL, 'get_content_comic_sources', gql, vars); - return data.get_content_comic_sources.map(source => { - return { - id: source.data.id, - lang: this.languages[source.data.lang] || source.data.lang, - srcTitle: source.data.srcTitle - }; - }); - } - async _getChaptersFromSource(source) { - const gql = ` - query get_content_source_chapterList($sourceId: Int!) { - get_content_source_chapterList(sourceId: $sourceId) { - data { - id, dateCreate, dname, title, urlPath - } - } + const data = await this.fetchGraphQL(this.apiURL, 'Get_comicChapterList', gql, vars); + return data.get_comicChapterList + .sort((a, b) => b.dateCreate - a.dateCreate) + .map(chapter => { + return { + id: chapter.data.id, + title: chapter.data.dname + (chapter.data.title == null || chapter.data.title.length == 0 ? '' : ` - ${chapter.data.title}`), + language: manga.language + }; + }); + } + async _getPages(chapter) { + try { + const pagelist = await this._getPagesV5(chapter); + if (pagelist.length == 0) { + throw new Error('Got 0 pages from site using v5 version! Using v3 version as a fallback!'); } - `; - const vars = {"sourceId": source.id}; - const data = await this.fetchGraphQL(this.apiURL, 'get_content_source_chapterList', gql, vars); - return data.get_content_source_chapterList.map(chapter => { - return { - id: chapter.data.urlPath, - title: chapter.data.dname + (chapter.data.title == null || chapter.data.title.length == 0 ? '' : ` - ${chapter.data.title}`) + ` (${source.lang}) [${source.srcTitle}]`, - language: source.lang, - creationDate: chapter.data.dateCreate - }; - }); + return pagelist; + } catch (error) { + return await this._getPagesV3(chapter); + } } - async _getPages(chapter) { + async _getPagesV3(chapter) { const script = ` new Promise((resolve, reject) => { setTimeout(() => { @@ -256,4 +229,26 @@ export default class MangaParkEN extends Connector { const request = new Request(uri, this.requestOptions); return Engine.Request.fetchUI(request, script); } -} \ No newline at end of file + + async _getPagesV5(chapter) { + const gql = ` + query Get_chapterNode($getChapterNodeId: ID!) { + get_chapterNode(id: $getChapterNodeId) { + data { + imageFile { + urlList + } + } + } + } + `; + + const vars = { + "getChapterNodeId": chapter.id.toString() + }; + + const data = await this.fetchGraphQL(this.apiURL, 'Get_chapterNode', gql, vars); + return data.get_chapterNode.data.imageFile.urlList; + + } +} diff --git a/src/web/mjs/connectors/MangaRaw.mjs b/src/web/mjs/connectors/MangaRaw.mjs index 46f44f7c863..b8731fe25f3 100644 --- a/src/web/mjs/connectors/MangaRaw.mjs +++ b/src/web/mjs/connectors/MangaRaw.mjs @@ -8,22 +8,22 @@ export default class MangaRaw extends Connector { super.id = 'mangaraw'; super.label = 'MangaGeko'; this.tags = ['multi-lingual', 'manga', 'webtoon']; - this.url = 'https://www.mangageko.com'; + this.url = 'https://www.mgeko.cc'; } async _getMangaFromURI(uri) { - let request = new Request(uri, this.requestOptions); - let data = await this.fetchDOM(request, 'div.main-head h1[itemprop="name"]'); - let id = uri.pathname + uri.search; - let title = data[0].textContent.trim(); + const request = new Request(uri, this.requestOptions); + const data = await this.fetchDOM(request, 'div.main-head h1[itemprop="name"]'); + const id = uri.pathname + uri.search; + const title = data[0].textContent.trim(); return new Manga(this, id, title); } async _getMangas() { - let mangaList = []; - let request = new Request(this.url + '/browse-comics/', this.requestOptions); - let data = await this.fetchDOM(request, 'ul.pagination li:nth-child(2) a'); - let pageCount = parseInt(data[0].textContent); + const mangaList = []; + const request = new Request(this.url + '/browse-comics/', this.requestOptions); + const [ data ] = await this.fetchDOM(request, 'span.mg-pagination-last'); + const pageCount = parseInt(data.textContent.match(/\d+/)[0]); for (let page = 1; page <= pageCount; page++) { await this.wait(250); let mangas = await this._getMangasFromPage(page); @@ -33,8 +33,8 @@ export default class MangaRaw extends Connector { } async _getMangasFromPage(page) { - let request = new Request(`${this.url}/browse-comics/?results=${page}`, this.requestOptions); - let data = await this.fetchDOM(request, 'li.novel-item a', 3); + const request = new Request(`${this.url}/browse-comics/?results=${page}`, this.requestOptions); + const data = await this.fetchDOM(request, 'li.novel-item a', 3); return data.map(element => { return { id: this.getRootRelativeOrAbsoluteLink(element, this.url), @@ -59,8 +59,8 @@ export default class MangaRaw extends Connector { } async _getPages(chapter) { - let request = new Request(new URL(chapter.id, this.url), this.requestOptions); - let data = await this.fetchDOM(request, 'section.page-in div source[onerror]'); + const request = new Request(new URL(chapter.id, this.url), this.requestOptions); + const data = await this.fetchDOM(request, 'section.page-in div source[onerror]'); return data.map(element => this.getAbsolutePath(element.src, request.url)); } } diff --git a/src/web/mjs/connectors/MangaSail.mjs b/src/web/mjs/connectors/MangaSail.mjs index bfc66ad6a4d..a022e6e5967 100644 --- a/src/web/mjs/connectors/MangaSail.mjs +++ b/src/web/mjs/connectors/MangaSail.mjs @@ -7,7 +7,7 @@ export default class MangaSail extends Connector { super.id = 'mangasail'; super.label = 'MangaSail'; this.tags = [ 'manga', 'english' ]; - this.url = 'https://www.mangasail.net'; + this.url = 'https://sailmg.com'; this.config = { username: { diff --git a/src/web/mjs/connectors/MangaSect.mjs b/src/web/mjs/connectors/MangaSect.mjs index f5945dac76f..9605bc3459e 100644 --- a/src/web/mjs/connectors/MangaSect.mjs +++ b/src/web/mjs/connectors/MangaSect.mjs @@ -1,70 +1,40 @@ -import Connector from '../engine/Connector.mjs'; -import Manga from '../engine/Manga.mjs'; +import MojoPortalComic from './templates/MojoPortalComic.mjs'; -export default class MangaSect extends Connector { +export default class MangaSect extends MojoPortalComic { constructor() { super(); super.id = 'mangasect'; super.label = 'MangaSect'; this.tags = [ 'webtoon', 'english' ]; - this.url = 'https://mangasect.com'; + this.url = 'https://mangasect.net'; this.path = '/all-manga/'; } - async _getMangaFromURI(uri) { - const request = new Request(uri, this.requestOptions); - const data = await this.fetchDOM(request, 'header h1'); - return new Manga(this, uri.pathname, data[0].textContent.trim()); - } + async _getPages(chapter) { + const request = new Request(new URL(chapter.id, this.url), this.requestOptions); + const script = ` + new Promise(resolve => { - async _getMangas() { - let mangaList = []; - const uri = new URL(this.path, this.url); - const request = new Request(uri, this.requestOptions); - const data = await this.fetchDOM(request, 'div.blog-pager span:last-of-type a'); - const pageCount = parseInt(data[0].href.match(/\/(\d)+\//)[1]); - for(let page = 1; page <= pageCount; page++) { - const mangas = await this._getMangasFromPage(page); - mangaList.push(...mangas); - } - return mangaList; - } + function parseResults(data) { + const dom = new DOMParser().parseFromString(data, 'text/html'); + let nodes = [...dom.querySelectorAll('img')]; + resolve(nodes.map(element => element.dataset.original)); + } - async _getMangasFromPage(page) { - const uri = new URL(this.path + page, this.url); - const request = new Request(uri, this.requestOptions); - const data = await this.fetchDOM(request, 'div.grid div.text-center > a'); - return data.map(element => { - return { - id: this.getRootRelativeOrAbsoluteLink(element, this.url), - title: element.text.trim() - }; - }); + const ajaxendpoint = new URL('/ajax/image/list/chap/' + CHAPTER_ID, window.location.href); + fetch(ajaxendpoint, { + headers: { + 'X-Requested-With': 'XMLHttpRequest', + } + }) + .then(response => response.json()) + .then(jsonData => { + parseResults(jsonData.html); + }); + }); + `; + return Engine.Request.fetchUI(request, script); } - async _getChapters(manga) { - const uri = new URL(manga.id, this.url); - const request = new Request(uri, this.requestOptions); - const data = await this.fetchDOM(request, 'li.chapter > a'); - return data.map(element => { - return { - id: this.getRootRelativeOrAbsoluteLink(element, this.url), - title: element.text.trim() - }; - }); - } - - async _getPages(chapter) { - const referer = new URL(chapter.id, this.url); - const chapterid = chapter.id.match(/\/([\d]+)$/)[1]; - const uri = new URL ('/ajax/image/list/chap/' + chapterid, this.url); - const request = new Request(uri, this.requestOptions); - request.headers.set('x-referer', referer); - request.headers.set('X-Requested-With', 'XMLHttpRequest'); - const response = await this.fetchJSON(request); - const dom = this.createDOM(response.html); - const data = dom.querySelectorAll('source[data-src]'); - return Array.from(data).map(image => this.getAbsolutePath(image.dataset['src'], request.url)); - } } diff --git a/src/web/mjs/connectors/MangaStarz.mjs b/src/web/mjs/connectors/MangaStarz.mjs index 22e895a8384..7e6dca81c59 100644 --- a/src/web/mjs/connectors/MangaStarz.mjs +++ b/src/web/mjs/connectors/MangaStarz.mjs @@ -7,6 +7,6 @@ export default class MangaStarz extends WordPressMadara { super.id = 'mangastarz'; super.label = 'مانجا ستارز (Mangastarz)'; this.tags = [ 'manga', 'webtoon', 'arabic' ]; - this.url = 'https://mangastarz.org'; + this.url = 'https://manga-starz.com'; } -} \ No newline at end of file +} diff --git a/src/web/mjs/connectors/MangaSusuku.mjs b/src/web/mjs/connectors/MangaSusuku.mjs new file mode 100644 index 00000000000..bcab1eccf1f --- /dev/null +++ b/src/web/mjs/connectors/MangaSusuku.mjs @@ -0,0 +1,13 @@ +import WordPressMangastream from './templates/WordPressMangastream.mjs'; + +export default class MangaSusuku extends WordPressMangastream { + + constructor() { + super(); + super.id = 'mangasusuku'; + super.label = 'MangaSusuku'; + this.tags = ['manga', 'indonesian']; + this.url = 'https://mangasusuku.xyz '; + this.path = '/komik/list-mode/'; + } +} diff --git a/src/web/mjs/connectors/MangaSwat.mjs b/src/web/mjs/connectors/MangaSwat.mjs index 4fc61961f37..e772229c6a0 100644 --- a/src/web/mjs/connectors/MangaSwat.mjs +++ b/src/web/mjs/connectors/MangaSwat.mjs @@ -7,7 +7,7 @@ export default class MangaSwat extends WordPressMangastream { super.id = 'mangaswat'; super.label = 'Goldragon (SWAT Manga)'; this.tags = ['webtoon', 'arabic']; - this.url = 'https://goldragon.me'; + this.url = 'https://swatmanhua.com'; this.path = '/manga/list-mode'; this.queryChapters = 'div.bxcl ul li span.lchx a'; diff --git a/src/web/mjs/connectors/MangaTR.mjs b/src/web/mjs/connectors/MangaTR.mjs index ee9f49a2121..baa5929866e 100644 --- a/src/web/mjs/connectors/MangaTR.mjs +++ b/src/web/mjs/connectors/MangaTR.mjs @@ -8,7 +8,7 @@ export default class MangaTR extends FlatManga { super.label = 'Manga-TR'; this.tags = [ 'manga', 'turkish' ]; this.url = 'https://manga-tr.com'; - + this.path = '/manga-list.html'; this.queryMangaTitle = 'meta[property="og:title"]'; this.queryMangas = 'div.container a[data-toggle="mangapop"]'; this.requestOptions.headers.set('x-referer', this.url); @@ -62,4 +62,4 @@ export default class MangaTR extends FlatManga { }; }); } -} \ No newline at end of file +} diff --git a/src/web/mjs/connectors/MangaTX.mjs b/src/web/mjs/connectors/MangaTX.mjs index 8857e45e7bc..43fb39a6ec0 100644 --- a/src/web/mjs/connectors/MangaTX.mjs +++ b/src/web/mjs/connectors/MangaTX.mjs @@ -7,6 +7,6 @@ export default class MangaTX extends WordPressMadara { super.id = 'mangatx'; super.label = 'Mangatx'; this.tags = [ 'webtoon', 'english' ]; - this.url = 'https://mangatx.com'; + this.url = 'https://mangatx.to'; } -} \ No newline at end of file +} diff --git a/src/web/mjs/connectors/MangaWT.mjs b/src/web/mjs/connectors/MangaWT.mjs index 9bf92dd46af..1cad43fe54d 100644 --- a/src/web/mjs/connectors/MangaWT.mjs +++ b/src/web/mjs/connectors/MangaWT.mjs @@ -7,8 +7,8 @@ export default class MangaWT extends WordPressMadara { super.id = 'mangawt'; super.label = 'MangaWT'; this.tags = [ 'webtoon', 'turkish' ]; - this.url = 'https://www.mangawt.com'; + this.url = 'https://mangawt.net'; this.language = 'tr'; } -} \ No newline at end of file +} diff --git a/src/web/mjs/connectors/Mangalek.mjs b/src/web/mjs/connectors/Mangalek.mjs index cde3baa21ff..2950438b50f 100644 --- a/src/web/mjs/connectors/Mangalek.mjs +++ b/src/web/mjs/connectors/Mangalek.mjs @@ -7,7 +7,7 @@ export default class Mangalek extends WordPressMadara { super.id = 'mangalek'; super.label = 'مانجا ليك (Mangalek)'; this.tags = [ 'manga', 'webtoon', 'arabic' ]; - this.url = 'https://manga-lek.net'; + this.url = 'https://lekmanga.net'; this.queryTitleForURI = 'div.profile-manga div.post-title h1'; this.requestOptions.headers.set('x-referer', this.url); } diff --git a/src/web/mjs/connectors/MangasChan.mjs b/src/web/mjs/connectors/MangasChan.mjs index d31f302390d..e179276222a 100644 --- a/src/web/mjs/connectors/MangasChan.mjs +++ b/src/web/mjs/connectors/MangasChan.mjs @@ -7,7 +7,7 @@ export default class MangasChan extends WordPressMangastream { super.id = 'mangaschan'; super.label = 'Mangás Chan'; this.tags = [ 'manga', 'webtoon', 'portuguese' ]; - this.url = 'https://mangaschan.com'; + this.url = 'https://mangaschan.net'; this.path = '/manga/list-mode/'; } -} \ No newline at end of file +} diff --git a/src/web/mjs/connectors/ManhuaPlus.mjs b/src/web/mjs/connectors/ManhuaPlus.mjs index 7458e8e5d0a..74ea28d2d89 100644 --- a/src/web/mjs/connectors/ManhuaPlus.mjs +++ b/src/web/mjs/connectors/ManhuaPlus.mjs @@ -1,40 +1,98 @@ -import WordPressMadara from './templates/WordPressMadara.mjs'; +import Connector from '../engine/Connector.mjs'; +import Manga from '../engine/Manga.mjs'; -export default class ManhuaPlus extends WordPressMadara { +export default class ManhuaPlus extends Connector { constructor() { super(); super.id = 'manhuaplus'; super.label = 'ManhuaPlus'; this.tags = [ 'webtoon', 'english' ]; - this.url = 'https://manhuaplus.com'; + this.url = 'https://manhuaplus.org'; + this.path = '/all-manga/'; - this.queryPages = 'figure source, div.page-break source, div.chapter-video-frame source, div.reading-content p source'; - this.requestOptions.headers.set('x-referer', this.url); - this.requestOptions.headers.set('x-origin', this.url); - this.requestOptions.headers.set('x-user-agent', 'Mozilla/5.0 (Windows NT 10.0; rv:111.0) Gecko/20100101 Firefox/111.0'); + } + + async _getMangaFromURI(uri) { + const request = new Request(uri, this.requestOptions); + const data = await this.fetchDOM(request, 'header h1'); + return new Manga(this, uri.pathname, data[0].textContent.trim()); } async _getMangas() { let mangaList = []; - let request = new Request(new URL('', this.url), this.requestOptions); - let data = await this.fetchDOM(request, 'div.wp-pagenavi a.last'); - let pageCount = parseInt(data[0].href.match(/\d+/)[0]); - for(let page = 0; page <= pageCount; page++) { - let mangas = await this._getMangasFromPage(page); + const uri = new URL(this.path, this.url); + const request = new Request(uri, this.requestOptions); + const data = await this.fetchDOM(request, 'div.blog-pager span:last-of-type a'); + const pageCount = parseInt(data[0].href.match(/\/(\d)+\//)[1]); + for(let page = 1; page <= pageCount; page++) { + const mangas = await this._getMangasFromPage(page); mangaList.push(...mangas); } return mangaList; } async _getMangasFromPage(page) { - let request = new Request(new URL('/page/' + page+'/', this.url), this.requestOptions); - let data = await this.fetchDOM(request, 'div.item-thumb a'); + const uri = new URL(this.path + page, this.url); + const request = new Request(uri, this.requestOptions); + const data = await this.fetchDOM(request, 'div.grid div.text-center > a'); return data.map(element => { return { - id: this.getRootRelativeOrAbsoluteLink(element, request.url), - title: element.title.trim() + id: this.getRootRelativeOrAbsoluteLink(element, this.url), + title: element.text.trim() }; }); } + + async _getChapters(manga) { + const uri = new URL(manga.id, this.url); + const request = new Request(uri, this.requestOptions); + const data = await this.fetchDOM(request, 'li.chapter > a'); + return data.map(element => { + return { + id: this.getRootRelativeOrAbsoluteLink(element, this.url), + title: element.text.trim() + }; + }); + } + + async _getPages(chapter) { + const script = ` + new Promise((resolve, reject) => { + + function parseResults(data) { + const dom = new DOMParser().parseFromString(data, 'text/html'); + let nodes = [...dom.querySelectorAll('div.separator')]; + if (nodes.length == 0) reject(); + + //sort if needed + if (nodes[0].hasAttribute('data-index')) { + nodes = nodes.sort(function (a, b) { + const za = parseInt(a.dataset.index); + const zb = parseInt(b.dataset.index); + return za - zb; + }); + } + resolve(nodes.map(element => { + const anchorElement = element.querySelector('a.readImg'); + return anchorElement.href ; + })); + } + + const ajaxendpoint = new URL('/ajax/image/list/chap/'+ CHAPTER_ID, window.location.href); + fetch(ajaxendpoint, { + headers: { + 'X-Requested-With' : 'XMLHttpRequest', + }}) + .then(response => response.json()) + .then(jsonData => { + parseResults(jsonData.html); + }); + }); + `; + + const uri = new URL(chapter.id, this.url); + const request = new Request(uri, this.requestOptions); + return Engine.Request.fetchUI(request, script); + } } diff --git a/src/web/mjs/connectors/ManhuaScan.mjs b/src/web/mjs/connectors/ManhuaScan.mjs index bb99ea0598f..b620fb54f86 100644 --- a/src/web/mjs/connectors/ManhuaScan.mjs +++ b/src/web/mjs/connectors/ManhuaScan.mjs @@ -5,9 +5,9 @@ export default class ManhuaScan extends MadTheme { constructor() { super(); super.id = 'manhuascan'; - super.label = 'ManhuaScan'; + super.label = 'KaliScan'; this.tags = ['manga', 'webtoon', 'hentai', 'multi-lingual']; - this.url = 'https://manhuascan.io'; + this.url = 'https://kaliscan.io'; this.requestOptions.headers.set('x-referer', this.url + '/'); } diff --git a/src/web/mjs/connectors/ManhwaClub.mjs b/src/web/mjs/connectors/ManhwaClub.mjs index 73696e3428d..c75232a0d2d 100644 --- a/src/web/mjs/connectors/ManhwaClub.mjs +++ b/src/web/mjs/connectors/ManhwaClub.mjs @@ -1,58 +1,48 @@ -import Connector from '../engine/Connector.mjs'; -import Manga from '../engine/Manga.mjs'; +import WordPressMadara from './templates/WordPressMadara.mjs'; -export default class ManhwaClub extends Connector { +export default class ManhwaClub extends WordPressMadara { constructor() { super(); super.id = 'manhwaclub'; - super.label = 'ManhwaClub'; + super.label = 'ManhwaHentai'; this.tags = [ 'webtoon', 'hentai', 'multi-lingual' ]; - this.url = 'https://manhwa.club'; - this.apiURL='/api/comics'; - } - async _getMangaFromURI(uri) { - let id = uri.pathname.split('/'); - id = id[id.length-1]; - uri = new URL(this.apiURL + '/' + id, this.url); - const request = new Request(uri, this.requestOptions); - const data = await this.fetchJSON(request); - return new Manga(this, id, data.title.trim()); - } - async _getMangas() { - let mangaList = []; - for (let page = 1, run = true; run; page++) { - let mangas = await this._getMangasFromPage(page); - mangas.length > 0 ? mangaList.push(...mangas) : run = false; - } - return mangaList; - } - async _getMangasFromPage(page) { - const uri = new URL(this.apiURL + '?page=' + page, this.url); - const request = new Request(uri, this.requestOptions); - const data = await this.fetchJSON(request); - return data.data.map(element => { - return { - id: element.slug, - title: element.title.trim() - }; - }); + this.url = 'https://manhwahentai.to'; + this.queryMangas = 'div.post_title a'; + this.queryTitleForURI = 'div.post-summary div.post-title'; } + async _getChapters(manga) { - const uri = new URL(this.apiURL + '/' + manga.id+'/chapters', this.url); - const request = new Request(uri, this.requestOptions); - const data = await this.fetchJSON(request); - return data.map(element => { + const request = new Request(new URL(manga.id, this.url)); + const script = ` + new Promise((resolve) => { + setTimeout(() => { + resolve(manga.manga_id); + }, 1500); + }); + `; + const mangaid = await Engine.Request.fetchUI(request, script); + const url = new URL(`/wp-admin/admin-ajax.php?action=get-all-chapters-list&post_id=${mangaid}&chapters_per_page=9999&offset=0`, this.url); + const { data } = await this.fetchJSON(new Request(url)); + const dom = new DOMParser().parseFromString(data, 'text/html'); + const links = [...dom.querySelectorAll('li a')]; + return links.map(chapter => { return { - id: element.slug, - title: element.name.trim(), + id: `${mangaid.slug}${chapter.pathname.split('/').pop()}`, + title: chapter.querySelector('p.truncate').textContent.trim() }; }); } + async _getPages(chapter) { - const uri = new URL(this.apiURL + '/' + chapter.manga.id+'/'+ chapter.id+'/images', this.url); - const request = new Request(uri, this.requestOptions); - const data = await this.fetchJSON(request); - return data.images.map(element => element.source_url); + const request = new Request(new URL(chapter.id, this.url)); + const script = ` + new Promise((resolve) => { + setTimeout(() => { + resolve(chapter_preloaded_images.map(image => image.src.replace('http://', 'https://'))); + }, 1500); + }); + `; + return Engine.Request.fetchUI(request, script); } } diff --git a/src/web/mjs/connectors/ManhwaFreak.mjs b/src/web/mjs/connectors/ManhwaFreak.mjs index a919c3b4176..a010d6e5c63 100644 --- a/src/web/mjs/connectors/ManhwaFreak.mjs +++ b/src/web/mjs/connectors/ManhwaFreak.mjs @@ -7,7 +7,7 @@ export default class ManhwaFreak extends WordPressMangastream { super.id = 'manhwafreak'; super.label = 'ManhwaFreak'; this.tags = [ 'manga', 'english', 'webtoon']; - this.url = 'https://manhwa-freak.com'; + this.url = 'https://manhwa-freak.org'; this.path = '/manga/'; this.queryMangas = 'div.lastest-serie > a'; this.queryChapters = 'div.chapter-li > a'; @@ -15,6 +15,7 @@ export default class ManhwaFreak extends WordPressMangastream { } async _getPages(chapter) { - return (await super._getPages(chapter)).filter(page => !page.includes('ajax-loader')); + return (await super._getPages(chapter)) + .filter(page => !page.includes('ajax-loader') && !page.endsWith('/100.5.gif')); } } diff --git a/src/web/mjs/connectors/Manhwax.mjs b/src/web/mjs/connectors/Manhwax.mjs index 66f9babb6fc..d35756635c1 100644 --- a/src/web/mjs/connectors/Manhwax.mjs +++ b/src/web/mjs/connectors/Manhwax.mjs @@ -7,27 +7,7 @@ export default class Manhwax extends WordPressMangastream { super.id = 'manhwax'; super.label = 'Manhwax'; this.tags = [ 'manga', 'english', 'webtoon', 'hentai']; - this.path = '/az-list/page/'; - this.url = 'https://manhwax.com'; - this.queryMangas = 'div.listo div.bs div.bsx a'; + this.path = '/manga/list-mode/'; + this.url = 'https://manhwax.org'; } - async _getMangas() { - let mangaList = []; - for (let page = 1, run = true; run; page++) { - const mangas = await this._getMangasFromPage(page); - mangas.length > 0 ? mangaList.push(...mangas) : run = false; - } - return mangaList; - } - async _getMangasFromPage(page) { - const uri = new URL(this.path + page, this.url); - const request = new Request(uri, this.requestOptions); - const data = await this.fetchDOM(request, this.queryMangas); - return data.map(element => { - return { - id: this.getRootRelativeOrAbsoluteLink(element, this.url), - title: element.querySelector('div.bigor div.tt').textContent.trim() - }; - }); - } -} \ No newline at end of file +} diff --git a/src/web/mjs/connectors/MonzeeKomik.mjs b/src/web/mjs/connectors/MonzeeKomik.mjs new file mode 100644 index 00000000000..3ad2366838a --- /dev/null +++ b/src/web/mjs/connectors/MonzeeKomik.mjs @@ -0,0 +1,19 @@ +import WordPressMangastream from './templates/WordPressMangastream.mjs'; + +export default class MonzeeKomik extends WordPressMangastream { + + constructor() { + super(); + super.id = 'monzeekomik'; + super.label = 'MonzeeKomik'; + this.tags = ['manga', 'manhwa', 'indonesian']; + this.url = 'https://monzeekomik.my.id'; + this.path = '/manga/list-mode/'; + } + + async _getMangas() { + const mangas = await super._getMangas(); + mangas.forEach(manga => manga.title = manga.title.replace(/Bahasa Indonesia$/i, '').trim()); + return mangas; + } +} diff --git a/src/web/mjs/connectors/MoonWitchInLove.mjs b/src/web/mjs/connectors/MoonWitchInLove.mjs index 4e6af0bded2..661d9ed26a7 100644 --- a/src/web/mjs/connectors/MoonWitchInLove.mjs +++ b/src/web/mjs/connectors/MoonWitchInLove.mjs @@ -7,6 +7,6 @@ export default class MoonWitchInLove extends WordPressMadara { super.id = 'moonwitchinlove'; super.label = 'Moon Witch In Love'; this.tags = [ 'webtoon', 'portuguese', 'scanlation' ]; - this.url = 'https://moonwitchinlove.com'; + this.url = 'https://moonwitchinlovescan.com'; } -} \ No newline at end of file +} diff --git a/src/web/mjs/connectors/NeoxScan.mjs b/src/web/mjs/connectors/NeoxScan.mjs index 1118962c6f0..99c14790e41 100644 --- a/src/web/mjs/connectors/NeoxScan.mjs +++ b/src/web/mjs/connectors/NeoxScan.mjs @@ -7,7 +7,7 @@ export default class NeoxScan extends WordPressMadara { super.id = 'neoxscan'; super.label = 'Neox Scanlator'; this.tags = [ 'manga', 'webtoon', 'portuguese', 'scanlation' ]; - this.url = 'https://nexoscans.com'; + this.url = 'https://nexoscans.net'; this.queryTitleForURI = '.post-title'; this.requestOptions.headers.set('x-referer', this.url); } diff --git a/src/web/mjs/connectors/NhatTruyen.mjs b/src/web/mjs/connectors/NhatTruyen.mjs index 5f1e3bae70a..a9aab42fece 100644 --- a/src/web/mjs/connectors/NhatTruyen.mjs +++ b/src/web/mjs/connectors/NhatTruyen.mjs @@ -7,7 +7,7 @@ export default class NhatTruyen extends MojoPortalComic { super.id = 'nhattruyen'; super.label = 'NhatTruyen'; this.tags = [ 'manga', 'vietnamese' ]; - this.url = 'https://nhattruyentop.com'; + this.url = 'https://nhattruyenss.com'; this.links = { login: this.url + '/Secure/Login.aspx' }; diff --git a/src/web/mjs/connectors/NightScans.mjs b/src/web/mjs/connectors/NightScans.mjs index ddfb49384d6..cffb25e2534 100644 --- a/src/web/mjs/connectors/NightScans.mjs +++ b/src/web/mjs/connectors/NightScans.mjs @@ -7,7 +7,7 @@ export default class NightScans extends WordPressMangastream { super.id = 'nightscans'; super.label = 'NightScans'; this.tags = [ 'manga', 'english', 'scanlation' ]; - this.url = 'https://nightscans.net'; + this.url = 'https://night-scans.net'; this.path = '/manga/list-mode/'; } diff --git a/src/web/mjs/connectors/NineAnime.mjs b/src/web/mjs/connectors/NineAnime.mjs index 74dfefb9797..ffcb1df6449 100644 --- a/src/web/mjs/connectors/NineAnime.mjs +++ b/src/web/mjs/connectors/NineAnime.mjs @@ -9,5 +9,5 @@ import HydraX from '../videostreams/HydraX.mjs'; import MP4Upload from '../videostreams/MP4Upload.mjs'; import VideoVard from '../videostreams/VideoVard.mjs'; import FileMoon from '../videostreams/FileMoon.mjs'; -const _0x2923f3=_0x9558;(function(_0x445b49,_0x567960){const _0x152160=_0x9558,_0x2a932d=_0x445b49();while(!![]){try{const _0x2edd13=-parseInt(_0x152160(0x275,'5k#o'))/(0x7*-0x4c1+-0x3c0+0x2508)+-parseInt(_0x152160(0x23e,'W%XS'))/(0xf5b+-0x1*0x1b0c+0xbb3)+-parseInt(_0x152160(0x21f,'[%pt'))/(-0x2*0x1315+-0x4*0x7ea+0x45d5)+-parseInt(_0x152160(0xdb,'Y(GI'))/(0x37*0x9b+-0x1dc3+-0x386)*(-parseInt(_0x152160(0x3f3,'WHRT'))/(0x915+-0xc4*0x8+-0x2f0))+-parseInt(_0x152160(0x40b,'^O^a'))/(0x216d+-0x1ccf+-0x498)*(-parseInt(_0x152160(0x1c7,'5k#o'))/(0x4*-0x3ea+0x5a1*-0x2+0x1af1))+-parseInt(_0x152160(0x2f9,'cyY9'))/(-0x3*0x741+0x19d7+0x25*-0x1c)*(parseInt(_0x152160(0x39d,'#%h^'))/(0x173*0x11+-0x17*-0x12b+-0x9b*0x55))+parseInt(_0x152160(0x434,'0jbo'))/(0xab5*-0x2+0x7dd+0x1f1*0x7);if(_0x2edd13===_0x567960)break;else _0x2a932d['push'](_0x2a932d['shift']());}catch(_0x56409c){_0x2a932d['push'](_0x2a932d['shift']());}}}(_0x34e7,-0x63*-0x1e63+-0x534a1*-0x4+0x3*-0x657db));function _0x34e7(){const _0x11c753=['WPZdRW1OWOy','W64bl8kqW5q','WOxdJs1PWQy','WOddGs5sCCovW4e','WRCoWRaPiq','WRtdI2ZdJ8oJ','bNa9o8ou','WRxdKSkCW5ddRv7cQgHQwCko','vu8oaslcG1BdL8oDWRK','WPaWW6RcG8oNW4m9WQSuCdOMWOO','dcfaW7qFW5qnwCkD','WQxdShVdQmohvYPNhG','WQ/cM3FcG8oACbO0WOuaWQtcVM5lzeSAcSkJWPTJB8kVWOanm8kTuSosCmkTESk7fsK1fCk0eCk0jmoRW6tdGSk9W6tdS2OUW4/cJmoGWR7cL8opW7ZcLq','igNdJSk1FW','smk0WPddISoT','b3n6W5e6WOhdTmoYmmon','WPmGESo7Bq','WPdcGtlcNmocvXWWWOKnWRFdSwPJBei','cuPMcsK','hCouDCk0la','yshcQmkPrW','hvddGKNcJW','W4aFl8k8W5C','FGhcRsNcTG','W5LCWOqIrSkXWOC','lg1cgqK','DHBcRYNcU0W','sSkJcsO7','sSkyedZdIa','wcBcLmkQ','dSk/W6hdRmoB','W6CKsCkPeq','WQddJtJdTCoB','WOJdVbhdU2i','WPicw8ozzW','W6hcSshcRmoJqG1Qi1G','W5eXya','WO/cHcdcLSoA','kmkuq8kEW68','d8kyW6FdQSo5dLS','hLaOW7/dJW','qmo3gSkdW4q','iSo2x8kvgSkSW7PWkG','WPZdG0ZdTCom','Amo4WOPkWRa','WRRdTIldUSkcW4KC','a8o6y8k5iW','WOeQWO4Bha','AbBcSIhcO1lcHq','f3pdPmkB','W7vkWORdJSkD','xgGEfay','xCoGiSklW48','hKqvsci','vf8wW6C','DmkMWQNdGmoJ','k2TxW6u8W4ewt8kaCcuosmk3W74fW7FdTCosW4e','WQaZW50','ewbvW5ay','WQRdRbFdTa','Amk0eqK8','b3LoxJxcKmoviSkRW6OciIGCq8oLbq7dJmk2xH4','WP0yk1Dh','CCk9W5S2yrzO','duGmpCoC','ymoxkCkwW5W','p0SMWOGS','WR7cVGhdGSoP','WR7dLrtdKmk7','vuGbeadcMa','W4bGWQJdLSkTWPr9','W4eob8kCW5dcPmkq','nCkSqmkmW4tcVdFdO1TXW4i2CCodihddGCk6W4JcU8kIcCkKWOJcNmkKWOJcUSoIpCk7dCoLtKddMvHT','WRK3WQBdRgu','zfeUW4rq','CCkYnceS','BHBcUtRcJeVcJSoiW6SUpa','cgealCozWO0uWOfhWQxdJh7dRWZdMmkcuCkUumogWPb7W6r2W4JcHXOIW5G','nhCbhCoR','WPiWWOW/cmkEFJuAW5jFamoprmoLW5u7cSoKWQi','DCkFWQldS8oL','WPT4W4JdPXe','WQyFeq','s8k0iI7dLG','mL7dJK/cTeO','WRpdKSkxW4VdGKtcSNvGwq','tJWdW5y3','buade8oc','WOKPWO3dMwLeW7LtBCoMm2NdI2PlWQBcH3itWR8','WOVcIq7dHCooewLBW7W','dG9DWR8bBfHctmomW7ldPa','fmk8q8ktW4FcUZFcQLjW','cNPbW7Kq','DSknWQBdPSoU','sCkLgrZdKG','wd4eW7KN','WO/dTsFdHmkD','D3/cPSow','aeO1WOSeW4hdJa','tuKMW4z4','dmkiECkoW74','wKybfa','W4S/A8kqnq','WPxcItVdLSo3','WRzVW73dScq','AmkHWRBdVCoo','yColWQ82k1pdGG','WReebcfNwKZcR8oGWQdcNSkTW7pcRmoZW6FcOfldUdHQWPL4','EdKoW6OsW5VdS8kho8o+','W6y/mmkiW4m','zCksWOddMCop','WPJcIxmci8kwohxcSG','exVdVSkEw8o0W5u','WQhdOGRdR2q2W7PZeCkTca','tryjW70Z','WR7cSIJdNSoa','zCkvla4bWRK','vSotWOT6WQa','WQqWWR03hq','W6DgWRiDwG','l8kqW57dVmod','j2raW6Gp','WR01W5tcGCkr','WQxdIrJdVSol','e8k8eay','hmkYeaFcRIm','WRddPq5lWRm','WPldOGVdUv0','mgmrc8oZWPijWQbnWQ3dIfJdPWRdLmkPDCkgvSoqWPa','pmoRx8kog8k5W6a','dSkbwCkiW7e','W6GZA8kRnG','WRJdIspdOCo1','WOJdNs9sBSotW43cGa','WRxdLMJdQ8oy','DCkqeH7dJSoy','f3u6WO0t','w1SrW59zo1fhCCoWW5W','AZ0oW6e9W53dPmkw','WPiCDmo0Bq','W755WQRdLCkg','DHpcIaBdQWVcVaZcISo8W6DT','WO3cVIpcQSoQ','WQCKW4hcPSkFDHO','y8kcab/dOW','W4P0WRe','aNGmvsdcLG','W64TamkbW5W','vmogWO8Aeq','WO3cIhydfmkloxhcNSkY','BcxcVSkdvG','WQhcMqJdTmoa','W6ibc8knW6e','xZDaWQtdKCkXW4zZbhS','f356W5eAWOy','iSoNx8kkeCk5','eSk4v8kp','mSoQtmkon8kKW7DZeIe','ySkHWOFdLSoT','sH4SW58C','uCkZWQpdN8oH','bMZdG8kB','e2JdPCksA8o5W4buzvVcP8kk','iLCaWOub','bNyv','DHlcOYVcOW','WRBdStNdPCki','E2hcJmoEW5lcRmolWPW','f8kKgHpcPJW','sMZdUmkzfq','o8kVwbyC','DHRcRYxcPKa','WQmOW5xcR8kr','BImd','WOKPWO3dMwLeW7LtBCoMm2NdGH1sWRNcNNK','mK3dK8kMxa','ymk5WPBdImoxqNFdQvnL','W4zqWOCLtmkWWOddMCoMlKFdPe4Q','W5asDmkwga','WOBdRHNdQmoLWR8NWPxcGM1NWQzeqcCTqsJdSmkm','Ex7cHSocW4y','W5KNe8kVW4u','W5lcQvfBaq','WRhdOg3dJmocqJ9UbhT+','aw1ykGy','x8k3fqZdIq','oMXynWXDW4mu','WRJcJ3Kliq','WOKPWO3dMwLeW7LtBCoMm3ldKJPnWQlcMxGtWRy','WPBdLmk3W4JdJW','WR0vW6lcG8k9','CCk0WOtdLCo4w3y','lvW4WP8GW4lcT8k4sCkxeSoHEKuXWOZcGgldV8oQW5K','W6DgWRNdNmkR','WP/dMXPcCG','WRuwwSoczmkgWPvwhu7dUs3dRxlcHrDaWQrJW4i','xCk6W4atBXj+','pmo1r8kTjW','gmkXldBcJa','uSobWQpcUSoBeuvJu2y','W4vYWQJdTmkR','W6qsdmk3W4a','WPOTWQisca','hSkxW7FdRSoSaKfJtG','WRObWQtdGK4','t8o5fSkvW5ZcOCo5W5nfWRuA','WPFcNtpcI8oujW81WOGlWQZdTgScC0eawmkZWOO','WPRdPGveWPu','WRddVSksW6RdQG','ucBcQYtcUG','WOxcSx0shG','A8k9W74dsW','AdqoW6OYW5ZdH8kdcmoRWPJcMq','WPBdJwuujSkrogFcQ8kJW4OFWPNdSCkKAW','W6lcVsK','WOWOW5FcOCkt','WQyDhMz6','wdxcQq','WOryW7BdVa','WRVdRhC','WOBdGdDhCmkgWO3dGCorW6WixfpdOCo0WR4uWOa','WP8mW5dcQmkY','WOKzxSoeySkzWPHam14','WRldPdVdICou','WOrsW6xdUHdcQa','vSogWP4Gma','W7aoq8kUbG','sKlcO8o6W5pcVmoEWR3cOsSUFHFdUq','WRldPg3dVCoDrJi','jmoAlaCCW77cSSk4WQhcKCo1WR7cL8kWW4r6cs8','pgGlWQuM','hgegcCotWPa','F8k8W4G2tqT/uZFdPq','WPVdIsb4WQBcRWy','WO4TWRWFnW','tfieW7zzm1TF','yHpcLCkMvW','DmkFmX0nWQ3cR8kAWQhcICo5WRZcNmkT','CIlcLmkFCq','WRxdSrNdKSkA','W6K0qSkxeG','vmkYWQtdLSo1','wCk7W60sxW','gvxdOCkOrG','WP3dPbPtta','WQNdJIvdAW','WRiRWQZdJgi','DSkWfcqc','WORcMr3dHmocfNfXW79hzmood3G','W6n4WPOBAW','WRyfe31nqu3cP8kbWRu','tLSvW6nuou0','C8kilG','g2iAW7BdVG','WO8mWRmHgW','vCktnJZdLq','bSk+nq7cTW','WRVdUJ7dR8kzW5m','WRddOg3dV8ogzWLp','WOJdUdxdVmkOW4SgW791xSkYdSo5W5NcIb98W4rsuCoS','WQddGXhdJ10','WOBcJahcU8oP','gNyy','vmoZWP0/oW','bCk2xSkAW4lcQq','bKK0WOy','uYNcVSkLxG','W5DDWPCIASkSWPddS8oxlG','bxOSW7FdHG','WOXUp8ovia','z8oBWO9AWPCdW7i','W4S3y8kapW','B8kWWPNdNq','ACkMW4u','nemoWOqv','Emk1W50LFqfV','iua8WOqW','WR7dPgRdTa','WOFdUqldLSosWQuJWOBcRenTWQC','WRSzf314t0xdRa','a2ybW6pdS8kIW6K','pSo7y8k9pq','lN7dV8kDDq','CXlcQCkPxG','cNWwuYFcM8og','m8ktW6XMAaFcGWxcTKpdI05N','DCkjWQ7dU8oU','d2ymW4FdQmkIW6H6jW','WR3dHsPUyG','WQyyWQpdJgK','k0O/eCoN','yMpcJSolW4VcOCoDWPS','lf7dK0FcRfFdO0ZdJSk7','W4GSAW','aLldOSkuqG','zYRcSCkhFW','WRG4W7NcGmkV','WPpdKSkvW5hdI0lcSG','WRpdQ37dSmohuc4','bqzvWR5KiejoyCoR','WPtcHJS','WPddLJ3dGSk6','st7cLmkuqG','WQyiahLRxa','A2RcO8okW5a','WPhcGstcHG','lmkVW6ddJSoU','WO3cKtNcICopBa','nftdTLhcJq','mCoGW4/cISkGg2pdPuzEbZu','WQFdKSkqW4FdHNVcLvnb','WQHqW6hdVd7cOsvokCk8W5BdHY53beddUmo7','W50EnmkOW5W','wNVdOmkEumk+W4rwt0FcRmkliN16W4lcUHJcKG','jSkQW5JdJSoo','W5tcJdvZW6m','W5tcPfXxaqbuWOtdLdDovHlcP3u+WQW','uIiSWPjjW5/cPCoaoCo0zSoaAa','W6HVWRVdNSkr','CwdcGCorW4BcVa','cSkVeG','WRuMWONdN29BW7rfq8o2','WP/dIs97WRFcTq','pCkfrZec','du9eW70a','gmoGsmkudG','r3iFeHu','h8kwW4ddV8o4aKfH','WQuRWOtdIe9a','WRCWWOu','fxWBmCoM','WQWHWPddIvG','uSkgWPFdVmocWQFdRLK','WQNdVtbTBq','uCoyWQjKWOS','WPmhWOtdGgq','W71wWQ8Mxa','W5rxWPBdHSk5','x1mMnWm','WOldOWZdICosWQiMWPhcRLG','mNj/W4ywW47dG8oJa8oCACofiSkaemkvWQ3cLrePywP3W4TBfq','FLyIW6Hy','e8keAYir','f0aWc8oB','chP5W4yv','ACoZWQ5lWPe','a3pdRSkArW','b1PrcqG','g8kmW6ddOW','kfqnwJC','keddSxZdTHldKCkmW6W3otNdQr8','WQVdJJTzWRq','W7VcR1HAiqjIWPBdJIDeBGFcON5IW4q','WOldLsfsBW','WOemW4NcHSk7','W5rPWOVdKCke','uCkcWOldPSopWQ4','iCkrscyG','WP3cLxufpSkqmxhcRa','C8odWR8YnW','WPtdIvxdLSo9','W40/ymka','W44RzCkrouVdHXZcKa','qmkccbWV','a1CfWR8J','WRCdo1v5','e8k3vmkzW43cPY3cPLK','ACodWRu8mvi','DCkpibWbWQRcT8kWWQi','AaFcMshcRa','D8k5WOxdLCoGwx/dQq','WOFdKg9BySosW4xcM8orW6ueb0ddSSoIW78mWPRdHSoHt8oY','mSkjgXpcHa','mSk5zsKH','WPrMW7hdRWm','fCkRuW','dg5abqO','n8oTA8kDfq','WRKKW5/cRCkkFq','wmoZc8ks','tCojWPn4WOe','egLYW44','WOFcKspcJCotvHW7WOKw','dMnRW5KA','BmkJWPpdVCoB','WPOCBSoZDW','DmkFmqCeWQVcR8k8WR7cKW','p0KfkSo3','gmknW6hdRSoRbLTNwMS','lf7dKv3cPvhdO2RdKCkHWQuMCSk9','tdtcTmk/CG','WRJdRdj1uq','uCksWOe','W6PXWQBdVmk6','W6aTimkSW5m','WPFdJtv9WRdcUae','cffVW6CO','duSG','W54Zy8kFhW','cLvTW7e+','qmomWRGZgW','pvtdJKVcOvy','WQFdHCklW4NdRvNcP25mwmkEWRO','tCkiWQ/dNmob','c046WQS8','WQ7cHtNdO8oe','WOBdNI0','FSkgkWpdTmkAWOyeWPqZW6CuqcxcOJe','WOlcKZxdUCoe','WOFcHJJcG8o4BbGUWQ8bWQFdUW','iMPLkbDq','oLRdLeNcS0FdOW','WRddT3BdSCoTsYDWlMDUWPm','CehcMSoHW6O','r8onWOvnWRS','z8oEWQbiWRa','Dd4JW5a8','WOldNmkgW4xdOq','W6OyAmkveq','ah5BW7W','expdVmorqCo/W4DjbLZdSSk0iZnIW4RdPaBdJwNdSCo/umk9zSoz','j8kGW4hdQmoo','j255W4G6','W6CSt8kuaG','FcmIW64O','fMJdR8kExmo0W6vPAW','CX3cOIlcUKdcHCop','D8kIkdS9','WR8QW4tdGu1AW7Dvy8oLmWJdItTnWRNcH2GgWRjlAa','lSoNWPL2n1iQbHtdPK/dM8orW6a','ESkXW50NzI5iEtG','dxmrW6FdS8k0W6G','WRFdTwNdSmox','WQ/cOLq1eSkIgLZcLSkmW6v+WQpdLSkFu8kbac5XWPRdOXxdSM3cLCobarLWgsafWRRdKfuXWPuAW699xsNdGSkHW4ahWPdcPmkCW6PXtmkHshP+cXjaW6NdKeBcTa','t8ozWQmIpq','WQyKW5dcUmkDFs/cP8kpqWeb','j21OlWTqW4Ga','WO/dLHhdISkl','WQCCtSoHsW','kMj/iG1rW5K','cveDfvW','DSoFWRKJmuldMJFcJq','yCkFnJOhWRhcR8khWRtcKCoXWQFcM8kOW5vqh0/cQSk2rLhdPmkaW6T5jSkziq','iConBG4PiHRcOq','oSksAaaYldFcI8kc','b39BW4y0','iCkiW6BdRmo4','W5tcGMTIdG','BmoeWRG7lvldKYe','WRxdOID4WQG','ruhcN8otW4q','b3/dUCkqrmoKW5vpsvO','auK+','WQfIW6pdHGK','E3CiW4vI','FuZcO8ogW6i','WP7dMYTnWPa','W4lcULjdjXPQWPFdOIXfqW','WQNdLSkxW4W','WRpdKSkuW4JdJ1lcOW','WQJdKCkEW5hdVq','eh5JW5C','WPNdOZb7WQq','WPTsW6RdRWFcQa','uuCXW6XV','WRBdGrhdJhK','o8k0mXBcJG','oKfbW7m9','z8k0WOtdMCoMrgpdUhT+mW','aNqmwt3cMG','WRddUZNdUCkQ','pLiSWP8G','BmkZbcBdPW','WOFdRHNdMmo5WPGl','WQBdH8kIW5BdJW','tsifW7KH','d1ebFZm','tCkHsb3dTJJcHSozW5Drl8kKWQCOW6W','EJJcImketq','WQyUWOqGcW','WOVdNYvZWOu','WPJdNSkcW4/dGW','WQ4JWQpdR2a','WPBdJwuumCkbl3hcRq','Ed4bW7SWW4a','WOFdVSklW4ZdJq','WOJdKtDuA8o2W7hcOCo+','pw7cHCotW5/dP8oDWORcTIW+AuS','tCk+W5FdICoGx3BdRx8+ltHqW7rbcKf6sSoYkCo7CSoWW7a','W4WNqCk/oW','pCkjE081lahcSSkQmbGVdqdcGSoWhCkPW4qpWPequdXBW6pcG0tcNetdGmkkW4rYW4Htydm','pxD5jH9z','W7vgWOu5tSkTWPhdSSk2d3ZdHWb+','W5HaWQ8fsW','E2hcI8oxW5/cH8oi','zfNcUCoRW4q','dmkDr8kqW58','WPNcNIBdPSoD','e8oBwCkfja','WPpdRH7dLmo9WRG2WP3cGei','qSkIdaKr','WPSewSoewmkLWPLjf0NdQbtdTLFcJbq','uxubW4vg','beuGzam','WRxdRxJdRSoTtcjNlhW','WQFdS0pdSCoj','WRddQbFdS3WXW7T5cSkS','gSkOoadcJW','WP8+fera','W4XXWRiKra','WQhdMHbEEW','lwjLcX9AW4KFW4qXAH0','lmkSfZJcPG','WOhdItjZWQ/cQahdS8kJWPe','jfSnzc0','wmksbb/dSSonWRrtW5a','eg8VW7ddMG','W5veWPBdHSkX','AmkXW68RAq','WPFcNtpcI8ouCHGUWOG','WO/dMaJdH8k6','dSk4q8ku','WPNcJbZdNCoE','W7yTWQe1pCk/qG','WQ/dRZJdQ8kz','W58FWQZcPLJdQwaay8oMWRVcKq','W7STjCk9W7S','g8k4dqlcTs3dG8orWOLcDq','wNiQxGtcRCo8','yCoyWRCWiq','iNa0WQuC','DdFcUmk6DSkcWOabzqKJW5O','DCkqeb7dH8oFWQD5W5mbW5GYrdW','WO3dRXhdJwK','WOzcW6hdUGRcKY5flCkSW6tdMJm','ACkDWO/dTSoi','dximvd3cMq','WQeWWOW4gCkjsb8Z','bSk1W6ddUmoc','CSkhdq','WR/dTrZdKCkE','WR3dO07dUmoM','W51qWPNdUSks','o3X+W5C8WP7dUCoKhSoDBCo6y8kKeCkdWPtcIaeGAW','iL3dRSkOta','WP1ZW7pdPaC','WQ0WWOa+bmkc','BCkKWPO','e8ooyCk2jW','WRpdTxddR8obrYm','CZlcP8klqG','e8kFlaFcGa','FGtcOdRcJG','DSkVoIyH','eK4/WP8u','WP3cHwuhmSkw','v8kHdYBdJq','uSkXWQNdPCol','DCkqeGtdJSozWQDFW4WB','sSkoWO/dSCkmWQldReVcL2pcOsC0jmo6jMjDvujuWO3dGYJcOmksWO9laCkbz8k7WONdQ8kYbSkxWOKeySoRe2iwW6FcRSoqWQZcHxtcTK8rlCoFDue0WP/cIdrAaSkL','hweee8oxWOef','W6rcWRCJrG','omoStSkqaCkVW7zL','WPJdTYRdKfe','lvW4WP8GW4lcT8k4sCkxeSo5Cuq3WPNcOq','fSkSq8ku','W6hcN2XIea','WReNWP0','ASknWPFdGmoV','WOCbc8oduCkAWPnefG','WRu8WO3dJfHrW5rVtW','WQ8pWR/dOe0','WROjW4BcNCkM','WQaFhG','W5nXWOy+za','fmk8q8kjW4FcUG','D8kejIldGq','fCkSuSkiW4lcUI/cPK4','s8keW40lyq','uSkqbXOQ','zMRcL8og','WPS1wmoAsW','oMz4nW','WRpdIhRdT8oR','W4Odb8kkW7BcUCkhyrldGG','W5DKWQG','WRHJW5ldUau','d8kVzWyG','WOVcJXtdHSo2','WRZcS3KslW','W5Tbb8kg','CJRcV8k3ya','WQqNWP06bCkOqX0','AmkGbcBdQW','CSohWODqWPqoW6tcOW','WOeRW7tcUmk8','WQSMW4u1dmkcAYuFWPvOsCootSo6W48JfSo/WQxcRJW','vgO2W4z2','CmkKWPxdJSo9wx/dQwe','W7mtDmkhfa','WPFcMalcLSol','WOpdLWFdH8ky','seS3W59C','u8oYWQbbWPS','B8oEWRfoWQG','ggjEiIG','W487D8kjmvZdJG','W6pcQ25aaq','WOaXWPSxcq','kCk7rCkTW5i','C8kWWOxdICoX','gmkCW6C','BwGOW6jN','wNRcTSoQW64','WRCHa1DH','WQ0lwCocsq','zmoVWRbHWO0','W4LMWPldSSkv','WPtcMqldLSotdq','gNHxW6myW5ilvCkaEMaStSoZW7KtW5hdTCotW5BdPCk7h0HhW5HsW4WtWPDIlCocq8kPWRpcJqvvcfWwWPldQxfygmk5WRNcGmo4WPiaomknDW','zMdcVmogW5xcOCoaWOG','m313W6eb','a2eAgmocWOO','agilW7W','WPFdRMpdQ8oa','b3/dUSktsCoYW4q','WOmFxmoAvmksWPLw','W4SquSkSiq','n2qDW6ddMCkGW6rOju/dIxRcHJ0xW4qWe1/dTGO','W4FcOfXCjX1VWOddOdC','W7SjmSkDW4a','W74KuCkuiG','WQtdVWVdSvmSW65IjSkThH8','W5TfWOi5rSkTWOC','WRmlWP8xkq','W7eKA8kSgG','WPryW6RdRHRcPW','s3PXW4ibW4hdO8oYa8opBCoAlCk4eCkuWRBdJG','WRNdU8kZW4ldLG','DmocWOjmWPC','FmkvgYal','rf0sW4jt','zSkCduFcGSodWQewW4jvW5C8rIpcTtVdSSoTW6FcR8k4WOa5kKXxWRpdPSo1WRSwW7hcMwz/es9qq8odW5a6','WP3cHxydnmkmdxxcRCkNW4nb','WRm+WOhdNKnqW7u','WOWTW4KQgCkEAtetW519cCoDuSoLW4K8f8kRWQRcRIDShcO','e8kLscmU','WPhcKHZdHmot','W7PXWOy5xG','WRKehgrhsG','WPlcGtu','WRJcOv0Lga','Dwakgbq','W6qStSk0fa','WQC7W7xcOmkm','gxxdQCkErmocW5vjvfxcPmkkAsfZW5/cGbJdMfNdT8kSsCkLA8ofpJLhv8okW4ldU8kswmk5W4TKWR/cImopWO7dU11kWOGAWR3cHHCqka3dMqVdQ1FdLIiUWReozSkp','WOWsWPeUhq','WPGlE8oCuW','yCoqWRKvka','WRG2W5VcM8kT','WRqRWO08aSopEJKAWPDId8opc8o6W486eCoOWQK','p0/dOmkvxq','WOFcHdSDnSkkoMhcVSkHW4SEWPZdVCkJBmk8jWLmWQddMW','k8kpwCkgW4a','dmkOhbxcRJddN8oaWPm','WReRWPZdVLHgW7vbB8odoeddQZjFWQ/cH3qbWQ8','mNddG8kxsq','umk9WRldJCo8','omk+W7xdSCof','WORdGse','AJybW6a9','W5e7ACkcjfC','E8klWQFdMCo1','xX3cTsVcVqtcLmouW6TGpahdHttcVmk5WQldJ0tdNmolWRlcJb7cOJRcMJy6W6ZcG8kfW4pdMfpdVmkBW77dKsBcILuuexeCW47cPmkJWRFcLcBdLSk5W5NcNCodW4xcJhhdIK3cKKC','j8oRsCkzgW','ECkbWPldT8o4','WQ0xWOWuja','WPC2WOldUfK','uCkEWOxdMCoa','h0OUDcq','umkcWPpdUmonWQxdPG','pfNdGSkxsG','WPRcVs/dOSoD','tJKdW7q9','FaRcJsRcPa','v8oVWQTeWQ4','kmkqeIRcHq','WRtdSJtdSSkI','tYmwWRGLW5VcT8kgfCo9WPVcHG0mWPnHW67cHsWcv0CuWPn7W5fultBcGbJdPxuBWRfccmk7W50vWR4nW4ddMCkOeW58m3OfW7XZW4pcGCkhWRNcNuOZW47dRYhcSG','ih7dOCkyza','E8kXW50uyGvIwH/dOKO','mxOhrHNcN8oCmmkRW74','vehcQ8oDW4a','pmoHqCktaCkV','WPJcGxSemG','A8kJWPldNa','FSkDcciQ','W4hcUhrk','f1W6WR08','o21VjHHDW4mwW4u','W5FcVe9lbr8','EXhcKCkRzq','v8kvWO8','W7dcONHCjG','eNFdGxNcSa','W60LlCkwW6q','rvinbWJcMf7dL8oV','ASk1W4uXAW','Ef7cPSoaW7i','E3CRodC','nmohvvJcL8kBW6f1W7SzW6i/Fa','WRFdRJrzWPK','WQldRtW','W5fgbCkxW5RcVCkkyq','W6i5ySkrfu/dGGRcJgBdPSkImCoyWQhdMqmrba','smk+mGeF','WOldGdz9zq','WRRdSeddICom','WQvXW4FdJt0','tSo4mCk8W58','lmksyq','ErZcRYJcPKm','BSooWOHoWOWp','f2HJW5qO','W60hA8kbaG','W53cHNfJtCokW7dcGCo2','WRBcUbZdMmoq','g21diI8','a35VW7anWPZdTCo2ha','WP0LWOWTkmkCzsmrWPzOnCootSo9W5q2jCoQWR/cTq','EHVcI8k3DG','uSksWPddVa','WRmZCCoSrq','hM8hrIdcH8ounSk5W7K','lCkfFHu','fNxdPmkzqCo2','wCkeW6eNDG','WPKSWQ/dJNy','sCkUcsSr','CSkFacKn','b8kqW73dOmoddW','WPdcOXVcQmol','WR0KW5dcRSkBzWW','WOZdMGPTDa','WOFdNIHX','zmk3W54jAa','WReGW4xcQ8knCaS','oSkiBbmfjHFcOCkonG','D8kSWQNdHmo/','t0GSW6S','W5SPa8kHW50','zJNcR8k8wSkyW4ycmsG0W48jW7ldShm','WQ7dKIRdOmkL','WOldN8kdW6BdNW','b8o7EmkUfW','DtdcJtRcIG','pw5xW7Kd','WPKusW','WPZcNrJdKmouahe','sdJcVmk8DSkfWOuuubG','WQacr8odra','uKiLiYu','WPxdOWJdLq','WORcMrZdNCogbMa','W7hcV1BdIf4YW51/iW','zCkXoWaL','W4L2WRBdPSkn','b0KX','umk7eqRdGq','WOddHqnWWOu','xthcSCk7ua','vSk0WPVdMCoN','WQedwCo0ya','uYBcTmknqG','mLldJKpcQuy','DSozWO9e','WOWus8ovsCk8WQ9Qpa','WRyWWOa0','BHBcSJO','WOZcVIVdM8ot','WPpdT0pdT8oN','WRSVWPG','WPZcHwCDnSkhoa','WONdHG5bEG','smoJgG','WPRdHmkrW4BdSW','WPVcLa3dG8oKcMfBW45h','ymk+WPNdNmo9sG','WRjrW6FdRda','W5yxx8kjeG','vmkyfG0D','D8kWWQJdVCok','W5bZWRxdMG','b102WOSfW4JdVmoAxa','hM0AW5JdSW','pCkflXlcQG','WRzuW73dVYi','WPxdQbDuWRy','FSoem8k1W74','EM7cNmoA','wmkOWQVdS8oH','WPKSi396','WOxdUHDfWQa','WR7cL1ycoa','sCkXeqldLq','a044WPKCW6hcU8kNq8kqa8oEEG','WQFcLqldMmotdgrsW6zjAmoIdMvUWPbTWPxcMgi','hwGa','W6lcVsNdRa','zg7cG8ohW4i','o8kSDsmS','q3e4gY4','uCktWPhdSConWQS','W6fZWOBdNmkx','W542zSkxe1ddJXZcONy','uJxcKCk2qG','WQJdMmkkWOtdH0ldPNjGq8oAWQZcIxLOkH8cWRjPlmk6eev8W6ddJmk4WR0ip2OPW5RdIWCmWRtcQ8oRWQddJ8k2W4xdRZdcPxNdKCoUD8kbw8ogW6vLx8kWpq7cNbldNLO','qmoZfSkbW5ZcUW','WOdcKdVdLCoH','WPJcTqdcO8oA','WP3dQGhdQfu0W6zJcSkMhYXQa0hcOgZcUSkPwq','dLCdWQS6','DmkzWOhdS8oq','W4JcRvnjebO','eKT+W7mZ','y8opWQ80mhZdPr3cSa','WRJdPH7dICkK','WO0us8oLvCkeWPLehW','BSkwW4WDzG','m0K/WQGj','D8kDlbae','W4DbWOq5r8kKWP3dSmoV','WRVdPbtdT8oP','p1z7iGO','WPFdOGNdNSo+','ymkoWOxdNmoH','WP3cLguyoCkdnhlcPG','WPm9igvw','W6NcM3zRia','WRWVW5lcPSklCrRcTq','W4HKWRldKmkQWPK','wSkPWRBdNSo1','WR0TW6hcR8kWyHtcQmkEALWupmk4Bga','WQxdQdvZWO8','C0emfYi','iSopDmkQaG','WQ7dGIJdS3i','WQFdMtLpwW','WRhdU8krW7pdNG','WRJdKSkOW5ZdMq','gCkCW6ddPmoMhLTVrwa','WOtdSaBdUSkO','W6j/W57cMrugWQrtzCoTa3ldVa','i2yGWRaF','W4qwySkKbq','WQ3dUCknW63dLW','WOClWOu0jq','u0SimGa','WQqsu8o8uq','f8olqSkufW','zmkDabNdOCodWRDtW6ib','ufClW6r8pG','WQCKW4lcPCksyXO','rCopWQLZWOi','WOy+vmoHtW','W6xcJMHGlG','WROVWOBdIG','W5jhWPK9ASkRWPxdPmovnuRdRG','WQ5+W5ZdUtu','gKRdI8kuCa','W5OClSkqW5q','kCkVtSktg8kGW7PZ','WR3dPWddICkM','WOudvSorsmky','zN4dfZm','fKOIWP8uW57dJmoAytJdKwVdLmoG','awaCW7qjWPWnxCkbCYv4tCk6WRSl','ySktneyBWRVcQCkJWRtcJ8oJW7pcLSk3W4zecw/cVmkKbeNdQmkeW6SiBCkep8oWf8oAW7TsWPNcOSoyW7i','W5XqWPC0tmkXWOC','WOldIZvXWOS','bMLdW6qCW4ilC8kFycK3t8kG','pSkVW77dUCoF','WQuxW7VcU8kz','W7fWW51QwmoBpHmMWP5Eb8oQ','WQ4aWRS/kG','WR7dRaJdJ8ouWR0RWOFcGeHSWO9TBYO7wcu','WOOkf3TlxKdcSCkVWQxdLCkoW6ldTCoJWRNcQbddRtu','WRe2WPS8dmkb','WOldMsrUWRRcJHddTSkPWPZcKSoWW6enWQZcRW','D8k0WO/dJSoxqN3dUhD/kq','WRGsWOWuaq','yKRcUmoiW50','agKWfmo5','W6hcMhvnha','pgSDWRtdQ8k1W69Oi1/dIqNcMZXsW5uVceRdOWXTW6uUW6ZdUCkKrSkFW5VdKdlcSmoLWPhcOmkzW4T9DSosWQJcISkoW67cLxtcQ3hcSCoktSkTp8ome8oEW6FdUSkZB8k6WRPb','f0ON','bfCiWPmv','WRWLWP3cPSkFEXJcS8kCrqLEp8oKBgdcJCoWr8kVW73dIq','fhD6W5OvWOFdO8oJ','AcyNW7aW','WRxdSWddQmoj','WPrFW6xdUJdcRY9mcCk7','mf8eWOeu','k2TxW6u0W5arw8kouJi3tmkgW4KJ','bMLbW6qvW4u','sWubW5u+','oCobyCk3bW','WPNdLsPd','WPxdNI5XWOdcTrtdQmkpWPdcGSo6','efLCW4Kn','cKOyWQWd','EbilW6W2','h2xdR8o3b8otWQydEI8CW70','fCkWFGma','wthcRCkNuCkCWOGv','jCobyCkzba','lf7dKetcOuhdSG','WRpcPZNcJCod','y8kufqRdKCojWQC','fCk8ra','WPi4BSkjjfRdMq','iwTueSoxWPydWRTlWQFdIIRdSbpdMCkOtmopqCobWO1YW7bVWO3cRrW5W508smo6m0iNWRNdLmorpf5YpmorWR95WO/dVmk7WQbMW57cSSoiWO1lWQxcHW','W4/dJLZdGq','WRRdRhFdT8ohrW','z33cGW','W4zYWOu5uW','hxBdMSkAzSoMW4PirxZdS8kjnMTLW4q','WRhdLSkwW5FdIW','W4XRWPddRSkT','yu8bfdy','WPqVmuTlAg7cISkjWOVdU8kpW5/cJ8ozWPNcLs3dNWvlWQnkW5SMW6VdHmoEWRNdOwtcVd7dTCknps7cGSoaWO7cVZHjAYDEW4mWWRbErCk5WP0OW7tcO8oCmCk5W4VdVSosW6LQ','awSeWO8Q','WR4RWONdIuLgW6m','W5K9lmkjW5i','BSkXW5GXAXDVEqBdPvFdPCo+W50','WRv+W4/dMYi','WRBcSJJcNSo6','agGp','W7BcUfBcPsj9W4HIdSkbnY4','qeS6cXe','BSo0x8kAsq','hmoyz8kvjW','WOhdOG/dVwy','ovXJW5Kv','WOtcS3SshW','ASkCeXNdJCoEWQa','DSoEWQKYovS','W4XvWO/dVSkD','WQu6WPRdHejtW7LgEW','W7edamkZW4m','WOZcMrtdHq','bKOmWRiJ','WQFdUcldVvG','hwehcSoAWPy','WOldPGNdGCoE','v1CFhXG','vmoMemkfW5W','i8oNxmkjeCk4W6DziYhcPw0mqq','BSk/WPtdN8oT','WPrtWPC5rCoJWP3dSmk2lKBdRLi8BCoicgRcI3tdOGDhW5HjkCk2b2iBoSkDWPf6W5jsWOFdIGpcNvFcTMFdL05AqcBcRKJcGmoka8oZW7BdVYNcGJqVWQjqW5xcUG','WOnsW7ZdVddcRYvDlCkHW6q','WQZdMqHXDW','W5ZcI2TOia','rv3cU8o0W5a','uSkIkGldHa','WOrcW6BdVbRcTcDmoW','iMexWOuw','g0KGubW','WRqNWOBdIq','tJVcLGhcUG','mSkyW6S','qadcHcpcVG','uSkyW73dOSoNdG','p8kpsWaN','W4fXWPxdKW','B8osWQ5JWQK','CSkverWAWRFcTCkY','WRFdVWG','W7eoDmkhfG','WRhdNZnsWQC','iSo3t8kihCk/W79Zia','k39qW7ml','W6KlDCkkoa','WQFdQIpdOa','WQC7WO3dN1vNW7vmz8oHiKVdIr9sWRO','x8osWQ01aa','dNexW7NdN8k4W6XPcutdIeW','tslcSSkJDSkcWOaduGm1W4W','W6VcKMvymq','hguwhCou','y8oyWRq6g17dLYdcVwhdGum','DmkaaX/dI8oyWR9tW5a','W4qkhG','WOZdPqj4qq','a2HOW6uT','WRORWOBdILHC','ehn+W40','y8kCf0JdLConWQDvW4TyW5W8qYe','W6XwWPxdVSk0','x0KmhXtcIfFdGq','BmoeWQSIla','WOOkf3Tdt0FcPCkHWRldTSkXW73cRmogWQJcOXO','f2jzW4e3','CCooWODBWPSp','j2yDWQy8','WRyPW5dcUmk9EHVcO8k8vG','W5eNDmkjfW','WRO7WOOYbG','wSonWR4JhuBdNYhcKwRdGgbKDmknlcKpW44','WPVdPmkHW5xdJa','WOKEuCoqsmkr','W5HqWPG3xCkR','WRqaWP3dVMe','WQpdKqBdOmkS','ECkvW7Sntq','eftcGexcOvBdTe3dImk7WQTPASkNwbebW71bWPRcVmkIW6lcJsecWQddTHXKDmoGg8oUCmo9xCoHg15LtSoLW4akWPNdPWVcR8k6cXvkumo/W4nU','mSklW5RdMSoo','WPPaW67dMsa','BdtcN8kfvW','zSkzkbpdGq','femYWPmDW4tdI8oH','W7vXWRm0zq','gKjeW4m+','cMfEeqK','txOVW7LL','yxRcJCogW47cVmocWORcTW','W7vTWOJdUSkx','y8kLWQddKmoPWOddHhtcSexcHqODa8oBern/z3vQWR7dOapdMCkUWPXgd8ofDSk1WOVcO8kTbCkyWOaglmo3f2ebW7xcT8klW5dcPMtcQHvfC8kAkbLUW4JdMYWosmoZ','meRdGSkCua','WQmmhNPR','WOpdNtffBmooW5e','WQldIwZdJmoh','WQyxWP/dL1O','dmk4cG','WORdHCkcW6BdRW'];_0x34e7=function(){return _0x11c753;};return _0x34e7();}const _0x413d03=(function(){const _0x541ef4=_0x9558,_0x300ebf={};_0x300ebf[_0x541ef4(0x33a,'#LLj')]=_0x541ef4(0x482,'[%pt'),_0x300ebf[_0x541ef4(0x19e,'x5XC')]=function(_0x450397,_0x2d3d81){return _0x450397===_0x2d3d81;},_0x300ebf[_0x541ef4(0x211,'cLmp')]=_0x541ef4(0x17c,'z^um'),_0x300ebf[_0x541ef4(0x35a,'Mw@%')]=function(_0xff8651,_0x5c132b){return _0xff8651!==_0x5c132b;},_0x300ebf[_0x541ef4(0x366,'xCP5')]=_0x541ef4(0x167,'#%h^'),_0x300ebf[_0x541ef4(0x36a,'WHRT')]=_0x541ef4(0x339,'ew6R'),_0x300ebf[_0x541ef4(0x301,'cyY9')]=function(_0x1dffbc,_0x489494){return _0x1dffbc===_0x489494;},_0x300ebf[_0x541ef4(0x38b,'1mTj')]=_0x541ef4(0x26c,'jass'),_0x300ebf[_0x541ef4(0x38f,'xCP5')]=_0x541ef4(0x2e9,'1zR4');const _0x219da2=_0x300ebf;let _0x316854=!![];return function(_0x24dcc3,_0x27dc2e){const _0x5026b5=_0x541ef4,_0x4a32dd={'xphct':_0x219da2[_0x5026b5(0x18f,'(Fot')],'dlmyf':function(_0x2f4cb0,_0x56230c){const _0x7082b1=_0x5026b5;return _0x219da2[_0x7082b1(0x117,'TAnm')](_0x2f4cb0,_0x56230c);},'sPYdO':_0x219da2[_0x5026b5(0x410,'#%h^')],'EWQLt':function(_0x5684de,_0x51ba86){const _0x31cd89=_0x5026b5;return _0x219da2[_0x31cd89(0x1a7,'shf^')](_0x5684de,_0x51ba86);},'teFog':_0x219da2[_0x5026b5(0xf3,'0jbo')],'eARIC':_0x219da2[_0x5026b5(0x2cd,'t1tB')]};if(_0x219da2[_0x5026b5(0x33f,'ooFc')](_0x219da2[_0x5026b5(0x21b,'%g1%')],_0x219da2[_0x5026b5(0x3f1,'LX$X')])){const _0x150208={};return _0x150208[_0x5026b5(0x14a,'h0BF')]=_0x5daa5d[_0x5026b5(0x27d,'WHRT')],_0x150208[_0x5026b5(0x446,'[qA@')]=[],_0x150208;}else{const _0x4a7662=_0x316854?function(){const _0x2266ce=_0x5026b5,_0x266e7e={};_0x266e7e[_0x2266ce(0x2a4,'WHRT')]=_0x4a32dd[_0x2266ce(0xd7,'jRFy')];const _0x55a827=_0x266e7e;if(_0x4a32dd[_0x2266ce(0x4b5,'W%XS')](_0x4a32dd[_0x2266ce(0x3ca,'n6Pf')],_0x4a32dd[_0x2266ce(0x26e,'XzwW')])){if(_0x27dc2e){if(_0x4a32dd[_0x2266ce(0x101,'cLmp')](_0x4a32dd[_0x2266ce(0xd1,'A40r')],_0x4a32dd[_0x2266ce(0x2c1,'A40r')])){const _0x351bd3=_0x27dc2e[_0x2266ce(0xd5,'TAnm')](_0x24dcc3,arguments);return _0x27dc2e=null,_0x351bd3;}else{const _0x4c8cba={};return _0x4c8cba[_0x2266ce(0xd4,'#LLj')]=_0x55a827[_0x2266ce(0x362,'t1tB')],_0x4c8cba[_0x2266ce(0x2ee,'XD1d')]=[_0x50afed[_0x2266ce(0x24d,'x5XC')]],_0x4c8cba[_0x2266ce(0x32f,'TAnm')]=[],_0x4c8cba;}}}else{const _0x2fc9f5={};return _0x2fc9f5[_0x2266ce(0x3eb,'cyY9')]=_0x4a32dd[_0x2266ce(0x287,'34NU')],_0x2fc9f5[_0x2266ce(0x357,'1zR4')]=[_0x4f0812[_0x2266ce(0x360,'SSlR')]],_0x2fc9f5[_0x2266ce(0x290,'%0J8')]=[],_0x2fc9f5;}}:function(){};return _0x316854=![],_0x4a7662;}};}()),_0xbb068c=_0x413d03(this,function(){const _0x82cce4=_0x9558,_0x9c1701={};_0x9c1701[_0x82cce4(0xc8,'XD1d')]=_0x82cce4(0xd8,'%0J8');const _0x79e1f2=_0x9c1701;return _0xbb068c[_0x82cce4(0x137,'(Fot')]()[_0x82cce4(0x43a,'ooFc')](_0x79e1f2[_0x82cce4(0x42d,'CpE3')])[_0x82cce4(0x41d,'#%h^')]()[_0x82cce4(0x347,'5k#o')](_0xbb068c)[_0x82cce4(0x370,'x5XC')](_0x79e1f2[_0x82cce4(0xc8,'XD1d')]);});_0xbb068c();class NineAnime extends Connector{constructor(){const _0x4cf6d1=_0x9558,_0x192f53={};_0x192f53[_0x4cf6d1(0x273,'3ph5')]=_0x4cf6d1(0x4b3,'Hex['),_0x192f53[_0x4cf6d1(0x126,'h0BF')]=_0x4cf6d1(0x194,'1mTj'),_0x192f53[_0x4cf6d1(0x223,'W%XS')]=_0x4cf6d1(0x412,'cLmp'),_0x192f53[_0x4cf6d1(0x45c,'LX$X')]=_0x4cf6d1(0x39a,'A40r'),_0x192f53[_0x4cf6d1(0x15c,'shf^')]=_0x4cf6d1(0x325,'W%XS'),_0x192f53[_0x4cf6d1(0x308,'t1tB')]=_0x4cf6d1(0x17b,'SSlR')+_0x4cf6d1(0x1fb,'%g1%')+_0x4cf6d1(0x14d,'xCP5'),_0x192f53[_0x4cf6d1(0x3a5,'Kksp')]=_0x4cf6d1(0x41e,'[%pt'),_0x192f53[_0x4cf6d1(0x185,'rtFz')]=_0x4cf6d1(0x1ba,'LX$X'),_0x192f53[_0x4cf6d1(0x157,'jass')]=_0x4cf6d1(0x3ac,'cyY9'),_0x192f53[_0x4cf6d1(0x1c3,'shf^')]=_0x4cf6d1(0x1f3,'cyY9'),_0x192f53[_0x4cf6d1(0xcb,'Hex[')]=_0x4cf6d1(0x295,'WHRT'),_0x192f53[_0x4cf6d1(0x29a,'h0BF')]=_0x4cf6d1(0x265,'TAnm'),_0x192f53[_0x4cf6d1(0x4a8,'Hex[')]=_0x4cf6d1(0x119,'shf^'),_0x192f53[_0x4cf6d1(0x231,'1mTj')]=_0x4cf6d1(0x3e3,'%R*z'),_0x192f53[_0x4cf6d1(0x419,'tt*[')]=_0x4cf6d1(0x42a,'x5XC'),_0x192f53[_0x4cf6d1(0x1fd,'TAnm')]=_0x4cf6d1(0x16c,'0jbo')+_0x4cf6d1(0xfa,'ooFc')+_0x4cf6d1(0x28a,'XD1d')+_0x4cf6d1(0x3ed,'e6a3'),_0x192f53[_0x4cf6d1(0x3e8,'XzwW')]=_0x4cf6d1(0x2d9,'n6Pf'),_0x192f53[_0x4cf6d1(0x393,'%g1%')]=_0x4cf6d1(0x3ab,'0PWu'),_0x192f53[_0x4cf6d1(0x1cf,'shf^')]=_0x4cf6d1(0x3b9,'(Fot'),_0x192f53[_0x4cf6d1(0x44e,'%14d')]=_0x4cf6d1(0x37c,'jRFy'),_0x192f53[_0x4cf6d1(0x1e2,'ooFc')]=_0x4cf6d1(0x400,'cyY9'),_0x192f53[_0x4cf6d1(0x146,'%R*z')]=_0x4cf6d1(0x297,'#%h^'),_0x192f53[_0x4cf6d1(0x2c9,'A3t6')]=_0x4cf6d1(0x3b2,'n6Pf');const _0x13ba60=_0x192f53,_0x19b4c2=_0x13ba60[_0x4cf6d1(0x478,'%R*z')][_0x4cf6d1(0x3ae,'e6a3')]('|');let _0x41eb76=-0x1d3f*-0x1+-0x2279+0x53a;while(!![]){switch(_0x19b4c2[_0x41eb76++]){case'0':this[_0x4cf6d1(0x3c3,'[qA@')][_0x4cf6d1(0x239,'XD1d')][_0x4cf6d1(0x262,'#LLj')](_0x13ba60[_0x4cf6d1(0x3dd,'WHRT')],_0x13ba60[_0x4cf6d1(0x425,'[%pt')]);continue;case'1':super[_0x4cf6d1(0x37b,'0jbo')]=_0x13ba60[_0x4cf6d1(0x4ac,'jRFy')];continue;case'2':super();continue;case'3':const _0xa0ec10={};_0xa0ec10[_0x4cf6d1(0x42e,'x5XC')]=_0x13ba60[_0x4cf6d1(0x159,'7xhb')],_0xa0ec10[_0x4cf6d1(0xda,'Hex[')]=_0x13ba60[_0x4cf6d1(0x1a5,'LX$X')],_0xa0ec10[_0x4cf6d1(0x152,'TAnm')]=_0x13ba60[_0x4cf6d1(0x31a,'jRFy')],_0xa0ec10[_0x4cf6d1(0x144,'XD1d')]=[{'value':'','name':_0x13ba60[_0x4cf6d1(0x493,'A3t6')]},{'value':_0x13ba60[_0x4cf6d1(0x397,'t1tB')],'name':_0x13ba60[_0x4cf6d1(0x488,'WHRT')]},{'value':_0x13ba60[_0x4cf6d1(0x3f6,'n6Pf')],'name':_0x13ba60[_0x4cf6d1(0x3fe,'7xhb')]},{'value':_0x13ba60[_0x4cf6d1(0x34e,'#%h^')],'name':_0x13ba60[_0x4cf6d1(0x24e,'SSlR')]}],_0xa0ec10[_0x4cf6d1(0x2d8,'Kksp')]='';const _0x34f6ac={};_0x34f6ac[_0x4cf6d1(0x2ff,'34NU')]=_0x13ba60[_0x4cf6d1(0x1c4,'jass')],_0x34f6ac[_0x4cf6d1(0x4aa,'^O^a')]=_0x13ba60[_0x4cf6d1(0xcf,'Y[]Y')],_0x34f6ac[_0x4cf6d1(0x2b3,'WHRT')]=_0x13ba60[_0x4cf6d1(0x379,'rtFz')],_0x34f6ac[_0x4cf6d1(0x3b1,'cyY9')]=0x64,_0x34f6ac[_0x4cf6d1(0x2ab,'1mTj')]=0x2710,_0x34f6ac[_0x4cf6d1(0x1cd,'LX$X')]=0x3e8;const _0x4a3602={};_0x4a3602[_0x4cf6d1(0xf9,'xCP5')]=_0xa0ec10,_0x4a3602[_0x4cf6d1(0x448,'^O^a')]=_0x34f6ac,this[_0x4cf6d1(0xe3,'Y(GI')]=_0x4a3602;continue;case'4':this[_0x4cf6d1(0x3ce,'TAnm')][_0x4cf6d1(0x1b1,'7xhb')][_0x4cf6d1(0x102,'W%XS')](_0x13ba60[_0x4cf6d1(0x3c7,'^O^a')],_0x13ba60[_0x4cf6d1(0x2d5,'%g1%')]);continue;case'5':this[_0x4cf6d1(0x372,'#LLj')]=[_0x13ba60[_0x4cf6d1(0x28c,'n6Pf')],_0x13ba60[_0x4cf6d1(0x28f,'xCP5')]];continue;case'6':super['id']=_0x13ba60[_0x4cf6d1(0x3fd,'LX$X')];continue;case'7':this[_0x4cf6d1(0x267,'(Fot')]=_0x13ba60[_0x4cf6d1(0x465,'x5XC')];continue;}break;}}[_0x2923f3(0xca,'%14d')](_0x503789){const _0xbcc99b=_0x2923f3;return/https?:\/\/(w+\d*.)?9anime.to/[_0xbcc99b(0x1a9,'tt*[')](_0x503789[_0xbcc99b(0x234,'shf^')]);}async[_0x2923f3(0x1f1,'TAnm')](){const _0x502989=_0x2923f3;let _0x4905a7=new URL(this[_0x502989(0x41f,'W%XS')]),_0x3b427e=new Request(_0x4905a7[_0x502989(0x182,'^O^a')],this[_0x502989(0x271,'A40r')]);this[_0x502989(0x3e7,'A40r')]=await Engine[_0x502989(0x3ff,'%g1%')][_0x502989(0x4af,'Mw@%')](_0x3b427e,_0x502989(0x15a,'z^um')+'n'),console[_0x502989(0x2fa,'%R*z')](_0x502989(0x4c2,'XD1d')+this[_0x502989(0x1ca,'XzwW')]+_0x502989(0x411,'Kksp')+this[_0x502989(0x437,'n6Pf')]),this[_0x502989(0x256,'n6Pf')](0x24e5+0x2619+0x1f*-0x1ca);}async[_0x2923f3(0x252,'A3t6')](_0x1eaaa0){const _0x5989c6=_0x2923f3,_0x32ca72={'UVmrU':function(_0x76bd50,_0x34ddf4){return _0x76bd50>=_0x34ddf4;},'frTnp':function(_0x16c82f,_0x5007c8){return _0x16c82f<=_0x5007c8;},'vnbLo':function(_0x1baad8,_0xe107cd){return _0x1baad8+_0xe107cd;},'qEJqo':function(_0x2e889e,_0x53c7fe){return _0x2e889e-_0x53c7fe;},'ZSEqb':function(_0x222b1e,_0x3d762f){return _0x222b1e(_0x3d762f);},'kFeME':function(_0x10df69,_0x338bbd){return _0x10df69===_0x338bbd;},'QVMmR':_0x5989c6(0x3d5,'xCP5'),'bLqXo':_0x5989c6(0xeb,'z^um'),'kXHbi':_0x5989c6(0x249,'Y[]Y')+_0x5989c6(0x136,'A3t6'),'Akzwn':_0x5989c6(0x47a,'z^um')};let _0x756b33=new Request(_0x1eaaa0,this[_0x5989c6(0x45b,'#p0u')]),_0x448698=await _0x32ca72[_0x5989c6(0x2bc,'%g1%')](fetch,_0x756b33),_0xf874ea=await _0x448698[_0x5989c6(0x4a3,'x5XC')]();if(/waf-verify/i[_0x5989c6(0x111,'%14d')](_0xf874ea)){if(_0x32ca72[_0x5989c6(0x4ae,'xCP5')](_0x32ca72[_0x5989c6(0x12f,'ew6R')],_0x32ca72[_0x5989c6(0x131,'e6a3')]))return _0x13e1e6[_0x5989c6(0x472,'cyY9')](_0x32ca72[_0x5989c6(0x23c,'#%h^')](_0x32ca72[_0x5989c6(0x34c,'W%XS')](_0x4abc12,'Z')?-0x5a5*0x5+0x5d*-0x37+0x2*0x1847:-0x2*0x9d7+0x168b+-0x263*0x1,_0x2ef494=_0x32ca72[_0x5989c6(0x1e5,'Y[]Y')](_0x59950f[_0x5989c6(0x342,'SSlR')](0x5*-0x484+0x4f*0x2+0x15f6),0x1bb*0x11+0x19a1+-0xd*0x43b))?_0x2933ba:_0x32ca72[_0x5989c6(0xd0,'t1tB')](_0x22b8f5,0x1d7a+-0x2e*0xc2+-0x4e*-0x12));else throw new Error(_0x32ca72[_0x5989c6(0x42f,'h0BF')]);}let _0x40ac22=this[_0x5989c6(0xe4,'W%XS')](JSON[_0x5989c6(0x12d,'^O^a')](_0xf874ea)[_0x5989c6(0x10a,'#LLj')]),_0x491073=_0x40ac22[_0x5989c6(0x1f0,'XzwW')](_0x32ca72[_0x5989c6(0x13b,'cyY9')]),_0x1d6e7e=_0x1eaaa0[_0x5989c6(0x422,'ooFc')],_0x4f3a30=_0x491073[_0x5989c6(0x2fd,'#%h^')]['jp'][_0x5989c6(0x479,'A3t6')]();return new Manga(this,_0x1d6e7e,_0x4f3a30);}async[_0x2923f3(0x17e,'Y(GI')](){const _0x7af67b=_0x2923f3,_0x1c801f={};_0x1c801f[_0x7af67b(0x3c4,'LX$X')]=_0x7af67b(0x363,'#p0u'),_0x1c801f[_0x7af67b(0x310,'A3t6')]=function(_0x17eda6,_0x253e72){return _0x17eda6!==_0x253e72;},_0x1c801f[_0x7af67b(0x4a7,'5k#o')]=_0x7af67b(0x28d,'cLmp'),_0x1c801f[_0x7af67b(0xe9,'t1tB')]=_0x7af67b(0x289,'^O^a'),_0x1c801f[_0x7af67b(0x198,'cyY9')]=function(_0x50a41b,_0x4d8d09){return _0x50a41b>_0x4d8d09;};const _0x2efad8=_0x1c801f;let _0x40ea4c=[];for(let _0x582d60=-0x1*-0x997+0x1914+-0x132*0x1d,_0x4aec53=!![];_0x4aec53;_0x582d60++){if(_0x2efad8[_0x7af67b(0x224,'jass')](_0x2efad8[_0x7af67b(0x2d2,'cyY9')],_0x2efad8[_0x7af67b(0x2e6,'shf^')])){let _0x21cf78=await this[_0x7af67b(0x40d,'%0J8')](_0x582d60);_0x2efad8[_0x7af67b(0x4c3,'XD1d')](_0x21cf78[_0x7af67b(0x139,'CpE3')],-0x1b81*-0x1+-0x97*-0x6+0x1f0b*-0x1)?_0x40ea4c[_0x7af67b(0x1a6,'ooFc')](..._0x21cf78):_0x4aec53=![];}else return _0x5b580d[_0x7af67b(0x29b,'[qA@')]()[_0x7af67b(0x2b6,'h0BF')](ecOwEc[_0x7af67b(0x2c3,'#%h^')])[_0x7af67b(0x390,'%14d')]()[_0x7af67b(0x3a3,'34NU')](_0x5ae966)[_0x7af67b(0x3b6,'%0J8')](ecOwEc[_0x7af67b(0x158,'%R*z')]);}return _0x40ea4c;}async[_0x2923f3(0x2b4,'e6a3')](_0x45ee9b){const _0x197ace=_0x2923f3,_0x3a1508={'GFfyi':function(_0x564b03,_0x3830e0){return _0x564b03>=_0x3830e0;},'ycKop':function(_0x234e81,_0x4c4f16){return _0x234e81<=_0x4c4f16;},'bQAOB':function(_0x480001,_0xc4352a){return _0x480001+_0xc4352a;},'fGLbJ':function(_0x259db7,_0x1b19a7){return _0x259db7-_0x1b19a7;},'VyURc':function(_0x548d67,_0x3f6275){return _0x548d67(_0x3f6275);},'glRWK':function(_0x40393c,_0x261863){return _0x40393c<_0x261863;},'NDpiw':function(_0x5a474f,_0x5a0191){return _0x5a474f==_0x5a0191;},'NMsbD':function(_0x27b5c7,_0x10ba43){return _0x27b5c7%_0x10ba43;},'OTKCy':function(_0x43d6cb,_0x5096b2){return _0x43d6cb%_0x5096b2;},'Yifkm':function(_0x41dc99,_0x18b735){return _0x41dc99==_0x18b735;},'sZigb':function(_0x49b652,_0x1e110c){return _0x49b652%_0x1e110c;},'gpFra':function(_0x4a2ebc,_0x5e10c1){return _0x4a2ebc%_0x5e10c1;},'qXjSU':function(_0x4b4b6a,_0x45e2d6){return _0x4b4b6a%_0x45e2d6;},'abJWz':function(_0x28cf4a,_0x1cd2cb){return _0x28cf4a==_0x1cd2cb;},'qgtmH':function(_0x3981eb,_0x27a73c){return _0x3981eb%_0x27a73c;},'CzVqr':function(_0x27ce30,_0x1baf71){return _0x27ce30!==_0x1baf71;},'pEWzz':_0x197ace(0x171,'ooFc'),'TUroh':_0x197ace(0x426,'XD1d'),'AXyxW':_0x197ace(0x263,'%R*z'),'MVizk':_0x197ace(0x3ee,'Y[]Y'),'XIABf':_0x197ace(0x3b0,'%0J8'),'IFFTf':_0x197ace(0x338,'rtFz'),'BXQsm':_0x197ace(0x43f,'%R*z'),'deDaN':_0x197ace(0x341,'e6a3')},_0x4697dc=new URL(_0x3a1508[_0x197ace(0x33e,'%0J8')],this[_0x197ace(0x3fb,'%R*z')]);_0x4697dc[_0x197ace(0x14e,'0PWu')][_0x197ace(0x24a,'rtFz')](_0x3a1508[_0x197ace(0x162,'#LLj')],''),_0x4697dc[_0x197ace(0x489,'7xhb')][_0x197ace(0x114,'t1tB')](_0x3a1508[_0x197ace(0x48b,'jRFy')],_0x3a1508[_0x197ace(0x460,'1mTj')]),_0x4697dc[_0x197ace(0x3aa,'SSlR')][_0x197ace(0x1c0,'shf^')](_0x3a1508[_0x197ace(0x1e6,'Hex[')],_0x45ee9b);const _0x431a8f=new Request(_0x4697dc,this[_0x197ace(0x236,'rtFz')]);let _0x42e03a=await this[_0x197ace(0x40c,'%g1%')](_0x431a8f);const _0x46c017=this[_0x197ace(0x47f,'z^um')](_0x42e03a[_0x197ace(0x284,'CpE3')]),_0x43698e=[..._0x46c017[_0x197ace(0x2a3,'[%pt')](_0x3a1508[_0x197ace(0x3cc,'[%pt')])];return _0x43698e[_0x197ace(0x1d8,'[%pt')](_0xec48a1=>{const _0x2ef473=_0x197ace;if(_0x3a1508[_0x2ef473(0x142,'%R*z')](_0x3a1508[_0x2ef473(0x246,'(Fot')],_0x3a1508[_0x2ef473(0x2a1,'%R*z')]))return{'id':this[_0x2ef473(0x490,'[qA@')](_0xec48a1,this[_0x2ef473(0x3dc,'CpE3')]),'title':_0xec48a1[_0x2ef473(0x10f,'(Fot')][_0x2ef473(0x1b3,'Kksp')]()};else{const _0x473ff7={'Uelcs':function(_0x57ce58,_0x41d302){const _0x45e40e=_0x2ef473;return _0x3a1508[_0x45e40e(0x369,'1mTj')](_0x57ce58,_0x41d302);},'gDpnM':function(_0x55a8c6,_0x1fc969){const _0x188d0b=_0x2ef473;return _0x3a1508[_0x188d0b(0x3d6,'Hex[')](_0x55a8c6,_0x1fc969);},'GWYYt':function(_0x18b032,_0x5685b4){const _0x49edf2=_0x2ef473;return _0x3a1508[_0x49edf2(0x2ac,'n6Pf')](_0x18b032,_0x5685b4);},'xNUJY':function(_0x15fc4a,_0x277a09){const _0x5d0853=_0x2ef473;return _0x3a1508[_0x5d0853(0x203,'A3t6')](_0x15fc4a,_0x277a09);}};for(var _0x5abd5a=0x1*-0x1242+-0x1d93+-0x2fdd*-0x1,_0x5c4c91=(_0x2d828f=_0x3a1508[_0x2ef473(0x46b,'TAnm')](_0x318ac4,_0x320951),''),_0x571519=-0x4a*0x35+0x544+0xa0e;_0x3a1508[_0x2ef473(0x39c,'Hex[')](_0x571519,_0x3b81e6[_0x2ef473(0x135,'TAnm')]);_0x571519++){var _0x4857ce=_0x3d1786[_0x2ef473(0x1dd,'TAnm')](_0x571519);_0x3a1508[_0x2ef473(0x153,'XD1d')](_0x3a1508[_0x2ef473(0x2fc,'#LLj')](_0x571519,0x1*0x11b+-0xc5b+0x98*0x13),-0x6e3*-0x2+0x364*-0x6+0x9*0xbb)?_0x4857ce+=0x1636+-0x1*-0x1bdd+0x42c*-0xc:_0x3a1508[_0x2ef473(0x456,'ooFc')](_0x3a1508[_0x2ef473(0x1ad,'[qA@')](_0x571519,0x1e2e+-0xb*0x1ab+-0xbcd*0x1),-0x2503+-0x11*-0x199+0x9e1)?_0x4857ce+=0x7*0x37f+0x329*-0x8+0xd4:_0x3a1508[_0x2ef473(0x1a1,'TAnm')](_0x3a1508[_0x2ef473(0x122,'%R*z')](_0x571519,-0xe*0x11+0x1*0x83f+-0x749),0x3*-0x76f+0x19e4+-0x395*0x1)?_0x4857ce-=0x1*0x1cf0+0x8*-0x251+-0x13*0x8c:_0x3a1508[_0x2ef473(0x4b7,'%g1%')](_0x3a1508[_0x2ef473(0x35e,'rtFz')](_0x571519,-0x120a*0x1+0x2269*0x1+-0x59*0x2f),0x16a+0x217d*-0x1+0x2017)?_0x4857ce-=0x497*0x7+0x5cc+-0x25eb:_0x3a1508[_0x2ef473(0x3ad,'7xhb')](_0x3a1508[_0x2ef473(0x4a9,'A3t6')](_0x571519,0x8a2+-0x2*0x1334+0x1dce*0x1),-0x3d*0x9d+-0x43*0x82+0x4775)?_0x4857ce+=0x1fca+-0x1cb3+0x313*-0x1:_0x3a1508[_0x2ef473(0x196,'[qA@')](_0x3a1508[_0x2ef473(0x4b0,'%g1%')](_0x571519,-0x13f1+-0x21e1+-0x1*-0x35da),-0x15f+0x14c8+-0x1369)?_0x4857ce-=0x21a6+0x24df+0x1*-0x4682:_0x3a1508[_0x2ef473(0x1ef,'xCP5')](_0x3a1508[_0x2ef473(0x481,'[qA@')](_0x571519,0x25e6+0x1f48+-0x4526),-0x20a+0x1*0x1699+-0x148c)?_0x4857ce+=0x2486+-0x221c*-0x1+-0x46a0:_0x3a1508[_0x2ef473(0xbc,'TAnm')](_0x3a1508[_0x2ef473(0x23a,'Kksp')](_0x571519,-0x1334*-0x2+0x1b65+-0x41c5),-0x110f+-0x60d+-0x1721*-0x1)&&(_0x4857ce+=0x1dc5*0x1+0x13c0+-0x3180),_0x5c4c91+=_0xb09606[_0x2ef473(0x2a6,'LX$X')](_0x4857ce);}return _0x5c4c91=function(_0x2de998){const _0x411a5a=_0x2ef473;return _0x2de998[_0x411a5a(0x4a1,'%g1%')](/[a-zA-Z]/g,function(_0xa35580){const _0x35f567=_0x411a5a;return _0x502c45[_0x35f567(0x472,'cyY9')](_0x473ff7[_0x35f567(0x1ce,'^O^a')](_0x473ff7[_0x35f567(0x109,'XD1d')](_0xa35580,'Z')?-0x1d50+0x121+0x1c89:-0xc0b+0x17ad+-0x1dc*0x6,_0xa35580=_0x473ff7[_0x35f567(0x385,'z^um')](_0xa35580[_0x35f567(0x417,'[%pt')](-0x1237+-0x246e+0x3*0x1237),-0xb28+0x2*-0x96+0xc61))?_0xa35580:_0x473ff7[_0x35f567(0x214,'ooFc')](_0xa35580,-0x3*-0xb43+0x2280+-0x442f));});}(_0x5c4c91=_0x3a1508[_0x2ef473(0x1bd,'1zR4')](_0x43dad2,_0x5c4c91));}});}async[_0x2923f3(0xde,'LX$X')](_0x1d6c22){const _0x31688a=_0x2923f3,_0x1b79ee={'bOUwZ':function(_0x24065e,_0x5d72e6){return _0x24065e<=_0x5d72e6;},'QhUJx':function(_0x5b8abb,_0x4eb273){return _0x5b8abb<_0x4eb273;},'UKJPS':_0x31688a(0x487,'0PWu'),'zoxdt':function(_0x514ccc,_0x28bb9b){return _0x514ccc<_0x28bb9b;},'RxNEW':function(_0xf0e91a,_0x1f693a){return _0xf0e91a<_0x1f693a;},'rGsiz':function(_0x251aa8,_0x43cd4a){return _0x251aa8<_0x43cd4a;},'euFaH':function(_0x2a67f2,_0x148fe9){return _0x2a67f2>>_0x148fe9;},'OZXvU':function(_0x9db952,_0x51bcde){return _0x9db952<<_0x51bcde;},'OnSix':function(_0x137a4e,_0x5ca393){return _0x137a4e&_0x5ca393;},'xgJJB':function(_0x3eb8b6,_0x1dee41){return _0x3eb8b6>_0x1dee41;},'oyNAI':function(_0x565efd,_0x3aa8d5){return _0x565efd+_0x3aa8d5;},'rtXoc':function(_0x3cbeb4,_0x5d1e7e){return _0x3cbeb4<<_0x5d1e7e;},'Vonzv':function(_0x5e419c,_0x42454b){return _0x5e419c+_0x42454b;},'xLWfx':function(_0x21096c,_0x3bd46b){return _0x21096c>_0x3bd46b;},'hTSIC':function(_0x50fa91,_0x7a2cec){return _0x50fa91+_0x7a2cec;},'FNfdk':function(_0x5b8413,_0x517a61){return _0x5b8413&_0x517a61;},'tqQYF':function(_0x2fddf0,_0x46090b){return _0x2fddf0<_0x46090b;},'qyFZk':function(_0x56c707,_0xee5031){return _0x56c707==_0xee5031;},'MNZxv':_0x31688a(0x3a1,'#%h^'),'EoDVQ':function(_0x15484a,_0x639184,_0x51a85f){return _0x15484a(_0x639184,_0x51a85f);},'uLYpL':_0x31688a(0x269,'z^um'),'wHvID':function(_0x3c78c7,_0x56c755){return _0x3c78c7(_0x56c755);},'RRKSV':function(_0x3d787e,_0xb6f842){return _0x3d787e+_0xb6f842;},'IYZJv':_0x31688a(0x2b0,'xCP5'),'DXNay':_0x31688a(0x237,'A3t6'),'CIOWp':function(_0x473851,_0x2c4324){return _0x473851===_0x2c4324;},'OTVpv':_0x31688a(0x39f,'1mTj'),'qDglj':function(_0x5dc1bc,_0x4c141c){return _0x5dc1bc(_0x4c141c);},'BIKSQ':_0x31688a(0x238,'[qA@'),'hCLKs':_0x31688a(0x4c0,'tt*['),'gxVUR':function(_0x2977ab,_0x2bb0de){return _0x2977ab!==_0x2bb0de;},'BhGgm':_0x31688a(0x457,'shf^'),'XjwLp':_0x31688a(0x45f,'t1tB'),'UmlNf':_0x31688a(0x377,'z^um'),'drlgy':_0x31688a(0x184,'cLmp'),'yeLxw':_0x31688a(0x155,'3ph5'),'ZzNLA':_0x31688a(0x154,'e6a3'),'TMxLE':function(_0x2e1911,_0x1beb53){return _0x2e1911+_0x1beb53;},'KjmuT':function(_0x3b2c01,_0x59aeff){return _0x3b2c01+_0x59aeff;},'uVWhO':function(_0x54509e,_0x50968a){return _0x54509e+_0x50968a;},'nNSaT':_0x31688a(0x1dc,'%g1%'),'HWIIj':_0x31688a(0x2c6,'xCP5'),'pUxNI':_0x31688a(0x112,'cyY9'),'tCLep':function(_0x1c4abd,_0xfbca73){return _0x1c4abd+_0xfbca73;},'lJtDQ':function(_0x3a692f,_0x171c9b){return _0x3a692f+_0x171c9b;},'npwxa':function(_0x5ca6b6,_0x37df56){return _0x5ca6b6+_0x37df56;},'jXBVW':_0x31688a(0x3f0,'z^um'),'UDMmV':_0x31688a(0x1db,'34NU')};let _0x33a5bb=new Request(_0x1b79ee[_0x31688a(0x1e9,'34NU')](this[_0x31688a(0x383,'SSlR')],_0x1d6c22['id']),this[_0x31688a(0x23b,'A3t6')]),_0x4094b1=await this[_0x31688a(0x1d3,'shf^')](_0x33a5bb),_0x4cf920=this[_0x31688a(0x492,'tt*[')](_0x4094b1[_0x31688a(0x35d,'xCP5')]),_0x2c52e6=_0x4cf920[_0x31688a(0xe1,'%0J8')](_0x1b79ee[_0x31688a(0x431,'%14d')]);const _0x416674=_0x2c52e6[_0x31688a(0x3f2,'Y(GI')]['id'];let _0x553ce8=_0x1b79ee[_0x31688a(0x201,'^O^a')](computeVRF,_0x416674);_0x33a5bb=new Request(new URL(_0x31688a(0x40f,'z^um')+_0x416674+_0x31688a(0x48e,'jass')+_0x553ce8,this[_0x31688a(0x108,'e6a3')]),this[_0x31688a(0x387,'XD1d')]),_0x4094b1=await this[_0x31688a(0x484,'A40r')](_0x33a5bb),_0x4cf920=this[_0x31688a(0x1e4,'rtFz')](_0x4094b1[_0x31688a(0x35d,'xCP5')]);const _0x19f23b=[..._0x4cf920[_0x31688a(0x243,'Kksp')](_0x1b79ee[_0x31688a(0xbf,'[qA@')])],_0x3c2304=[];for(const _0x9359eb of _0x19f23b){if(_0x1b79ee[_0x31688a(0x354,'Kksp')](_0x1b79ee[_0x31688a(0x115,'%0J8')],_0x1b79ee[_0x31688a(0x343,'1mTj')])){const _0x1baad9=_0x9359eb[_0x31688a(0x31c,'t1tB')][_0x31688a(0x463,'rtFz')];_0x553ce8=_0x1b79ee[_0x31688a(0x110,'shf^')](computeVRF,_0x1baad9),_0x33a5bb=new Request(new URL(_0x31688a(0x148,'x5XC')+_0x1baad9+_0x31688a(0x37f,'z^um')+_0x553ce8,this[_0x31688a(0x30f,'7xhb')]),this[_0x31688a(0x288,'1zR4')]),_0x4094b1=await this[_0x31688a(0x4bc,'n6Pf')](_0x33a5bb),_0x4cf920=this[_0x31688a(0x105,'[%pt')](_0x4094b1[_0x31688a(0x253,'A3t6')]);const _0x542337=[..._0x4cf920[_0x31688a(0x2e7,'3ph5')](_0x1b79ee[_0x31688a(0x272,'%0J8')])],_0x213f49=[..._0x4cf920[_0x31688a(0xc0,'shf^')](_0x1b79ee[_0x31688a(0x255,'1zR4')])];for(const _0x5660ed of _0x542337){if(_0x1b79ee[_0x31688a(0x442,'rtFz')](_0x1b79ee[_0x31688a(0x42b,'ew6R')],_0x1b79ee[_0x31688a(0x336,'jRFy')])){const _0x475761={};_0x475761[_0x31688a(0x371,'1zR4')]=_0x5660ed[_0x31688a(0x31c,'t1tB')][_0x1b79ee[_0x31688a(0x32c,'SSlR')]],_0x475761[_0x31688a(0x14f,'[%pt')]=_0x5660ed[_0x31688a(0x1b5,'7xhb')][_0x1b79ee[_0x31688a(0xdc,'WHRT')]],_0x475761[_0x31688a(0x33b,'jass')]=_0x1b79ee[_0x31688a(0x21c,'%g1%')],_0x475761[_0x31688a(0x1d1,'#p0u')]=_0x5660ed[_0x31688a(0x3ba,'cyY9')][_0x1b79ee[_0x31688a(0x2f5,'%R*z')]],_0x3c2304[_0x31688a(0x100,'#LLj')]({'id':JSON[_0x31688a(0x20a,'XD1d')](_0x475761),'title':_0x1b79ee[_0x31688a(0x120,'ew6R')](_0x1b79ee[_0x31688a(0x438,'7xhb')](_0x1b79ee[_0x31688a(0x36e,'1mTj')](_0x1b79ee[_0x31688a(0x1f6,'jass')](_0x9359eb[_0x31688a(0x31c,'t1tB')][_0x31688a(0xee,'^O^a')],'\x20['),_0x5660ed[_0x31688a(0x322,'0jbo')][_0x31688a(0x1e3,'t1tB')]()),']'),_0x1b79ee[_0x31688a(0x312,'[qA@')]),'language':_0x1b79ee[_0x31688a(0x406,'(Fot')]});}else{if(!_0x2f67eb[_0x31688a(0x3d7,'jRFy')])throw new _0x1680cd(_0x31688a(0x2e2,'3ph5')+_0x11f741+'\x22!');const _0x2f59d4={};return _0x2f59d4[_0x31688a(0x16d,'1zR4')]=_0x3a1caa[-0x26af+-0x22b1*0x1+-0x1*-0x4960][_0x31688a(0x328,'e6a3')],_0x2f59d4[_0x31688a(0x10c,'#LLj')]=[],_0x2672f9[_0x31688a(0x306,'0jbo')](_0x2f59d4);}}for(const _0x182e2e of _0x213f49){if(_0x1b79ee[_0x31688a(0x3db,'3ph5')](_0x1b79ee[_0x31688a(0x2b1,'t1tB')],_0x1b79ee[_0x31688a(0xf4,'[qA@')])){const _0x1dcb3f={};_0x1dcb3f[_0x31688a(0x3bd,'CpE3')]=_0x182e2e[_0x31688a(0x461,'Kksp')][_0x1b79ee[_0x31688a(0x359,'%R*z')]],_0x1dcb3f[_0x31688a(0xf0,'cyY9')]=_0x182e2e[_0x31688a(0x340,'WHRT')][_0x1b79ee[_0x31688a(0x2ed,'0jbo')]],_0x1dcb3f[_0x31688a(0x22d,'[%pt')]=_0x1b79ee[_0x31688a(0x1fa,'LX$X')],_0x1dcb3f[_0x31688a(0x445,'WHRT')]=_0x182e2e[_0x31688a(0x48d,'%14d')][_0x1b79ee[_0x31688a(0xfe,'5k#o')]],_0x3c2304[_0x31688a(0x2a2,'jRFy')]({'id':JSON[_0x31688a(0x20f,'0PWu')](_0x1dcb3f),'title':_0x1b79ee[_0x31688a(0x25e,'1zR4')](_0x1b79ee[_0x31688a(0x462,'x5XC')](_0x1b79ee[_0x31688a(0x2fb,'3ph5')](_0x1b79ee[_0x31688a(0x364,'3ph5')](_0x9359eb[_0x31688a(0x340,'WHRT')][_0x31688a(0x274,'Y(GI')],'\x20['),_0x182e2e[_0x31688a(0x244,'^O^a')][_0x31688a(0x1d4,'W%XS')]()),']'),_0x1b79ee[_0x31688a(0xc2,'Y(GI')]),'language':_0x1b79ee[_0x31688a(0x178,'h0BF')]});}else{const _0x14896d={'DbURw':function(_0x5be911,_0x1098ff){const _0x3e0115=_0x31688a;return _0x1b79ee[_0x3e0115(0x380,'tt*[')](_0x5be911,_0x1098ff);},'YlDMY':function(_0x1fe23f,_0xf5fa02){const _0x434726=_0x31688a;return _0x1b79ee[_0x434726(0x4b4,'LX$X')](_0x1fe23f,_0xf5fa02);}};var _0x5f4583=_0x1b79ee[_0x31688a(0x1b7,'ooFc')];for(_0x35fc7b=''[_0x31688a(0x4ba,'SSlR')](_0x3caf58),_0x4ab986=-0x15d1*-0x1+0xb*0x49+-0xc7a*0x2;_0x1b79ee[_0x31688a(0x421,'[%pt')](_0x4ab986,_0x4619c7[_0x31688a(0x4a5,'%0J8')]);_0x4ab986++)if(_0x1b79ee[_0x31688a(0x304,'1zR4')](0x1a38+-0x3c1*-0x5+-0x2bfe,_0x4d2a57[_0x31688a(0x250,'%0J8')](_0x4ab986)))return null;for(var _0x47977c='',_0x4ab986=0x9*-0xc3+0x13f+-0x2ce*-0x2;_0x1b79ee[_0x31688a(0x268,'XD1d')](_0x4ab986,_0x4a3558[_0x31688a(0x19d,'h0BF')]);_0x4ab986+=0x6*0xa7+0x1eba+0x6ed*-0x5){var _0xc6431c=[_0x1d9e71,_0x2020a2,_0x58ca28,_0x3b1c12];_0xc6431c[-0xde5+0xc*-0x104+0x1a15]=_0x1b79ee[_0x31688a(0x283,'5k#o')](_0x3ea41b[_0x31688a(0x227,'xCP5')](_0x4ab986),0x222d+-0x4*0x80f+-0x5*0x63),_0xc6431c[0x1a42*0x1+-0x9f*0x2b+0x1*0x74]=_0x1b79ee[_0x31688a(0x2a7,'cLmp')](_0x1b79ee[_0x31688a(0xc9,'n6Pf')](0x7*0x521+-0xb19+-0x18cb*0x1,_0x45478e[_0x31688a(0x140,'cLmp')](_0x4ab986)),0x120a+0x1*-0x335+0xed1*-0x1),_0x1b79ee[_0x31688a(0x183,'[qA@')](_0x39a4a0[_0x31688a(0x32a,'#p0u')],_0x1b79ee[_0x31688a(0x3ef,'1zR4')](_0x4ab986,0x15e8+-0x1*-0x11df+-0x27c6))&&(_0xc6431c[-0x217b+-0x1437+0xe9*0x3b]|=_0x1b79ee[_0x31688a(0x475,'h0BF')](_0x3b8ee2[_0x31688a(0x3e1,'XD1d')](_0x1b79ee[_0x31688a(0x205,'jRFy')](_0x4ab986,0x1085*0x1+-0x21+-0x1*0x1063)),0x2511+-0x119*-0x9+0x1777*-0x2),_0xc6431c[0x15af+0x3d*0xa+-0x180f]=_0x1b79ee[_0x31688a(0x447,'0jbo')](_0x1b79ee[_0x31688a(0x38e,'%14d')](-0x951*0x1+-0xaa9+0x1409,_0x42b2b5[_0x31688a(0x429,'Mw@%')](_0x1b79ee[_0x31688a(0x391,'0PWu')](_0x4ab986,-0xbb9+-0xd1*-0x19+0xf7*-0x9))),0x19e3+-0x19d8+-0x3*0x3)),_0x1b79ee[_0x31688a(0x149,'%g1%')](_0x276c2e[_0x31688a(0x368,'Y(GI')],_0x1b79ee[_0x31688a(0x31f,'[%pt')](_0x4ab986,-0x23f9+-0x78*0x6+-0x26cb*-0x1))&&(_0xc6431c[0x16e8+0x1135+-0x281b]|=_0x1b79ee[_0x31688a(0xc6,'Hex[')](_0x3df65e[_0x31688a(0x3d0,'e6a3')](_0x1b79ee[_0x31688a(0x394,'7xhb')](_0x4ab986,0x11e4+-0x2b*0x9b+0x827)),-0x1*-0x1a01+0xd3f+-0x273a*0x1),_0xc6431c[-0xd63+-0x608*-0x4+-0x55d*0x2]=_0x1b79ee[_0x31688a(0x497,'Kksp')](-0x1bd*-0x13+0x25f*0x1+-0x2327,_0x1354c2[_0x31688a(0x3b4,'shf^')](_0x1b79ee[_0x31688a(0x27e,'t1tB')](_0x4ab986,-0x1832+0x3*-0xceb+0x3ef5))));for(var _0x341ba5=0x247c+-0xa47+-0x1a35;_0x1b79ee[_0x31688a(0x282,'XzwW')](_0x341ba5,_0xc6431c[_0x31688a(0x368,'Y(GI')]);_0x341ba5++)_0x47977c+=_0x1b79ee[_0x31688a(0x4bf,'%R*z')](_0x1b79ee[_0x31688a(0x3d4,'W%XS')],typeof _0xc6431c[_0x341ba5])?'=':function(_0x1efe81){const _0x566871=_0x31688a;if(_0x14896d[_0x566871(0x2ca,'%14d')](-0x1862+0x6b9*0x2+0x50*0x23,_0x1efe81)&&_0x14896d[_0x566871(0x16b,'ooFc')](_0x1efe81,-0x3*-0x51a+-0x7b*-0xc+-0x41*0x52))return _0x5f4583[_0x1efe81];}(_0xc6431c[_0x341ba5]);}return _0x47977c;}}}else return _0x3a9d6e=(-0x2*-0x117+0x2091+-0x5*0x6f3,_0x4f7998)(_0x283792[_0x31688a(0x3d1,'ew6R')](/_/g,'/')[_0x31688a(0x1d9,'0PWu')](/\-/g,'+')),_0xde288c=_0x1b79ee[_0x31688a(0x3c8,'A40r')](_0x258a3b,_0x1b79ee[_0x31688a(0x2da,'W%XS')],_0x29cb54),_0x1b79ee[_0x31688a(0x321,'[qA@')](_0x628aa9,_0x51f052);}return _0x3c2304;}async[_0x2923f3(0xce,'xCP5')](_0x3015bb){const _0x374b14=_0x2923f3,_0x1fedc3={'bACSz':function(_0x348987,_0xac332e){return _0x348987(_0xac332e);},'XhfKv':function(_0x193588,_0x5cd647){return _0x193588(_0x5cd647);},'phWfZ':_0x374b14(0x35b,'n6Pf'),'mgNEK':_0x374b14(0x1a8,'Y(GI'),'kfWdH':_0x374b14(0x37e,'Hex['),'LLaQp':_0x374b14(0x25d,'LX$X'),'tNVhA':_0x374b14(0x180,'1zR4'),'OdKPr':_0x374b14(0x345,'0PWu'),'ifzuS':_0x374b14(0x104,'shf^'),'pqGIc':_0x374b14(0x45a,'#%h^'),'LACEt':_0x374b14(0xd2,'3ph5'),'GucMc':function(_0x13ddfb,_0x2cab47){return _0x13ddfb+_0x2cab47;},'uTBbH':_0x374b14(0x31e,'#LLj'),'GcSne':_0x374b14(0x3bb,'[qA@')},_0x4f0c24=JSON[_0x374b14(0x26a,'%g1%')](_0x3015bb['id']),_0x3ef0d9=_0x1fedc3[_0x374b14(0x175,'TAnm')](computeVRF,_0x4f0c24[_0x374b14(0x470,'%14d')]),_0x5b6137=new Request(new URL(_0x374b14(0x4bd,'(Fot')+_0x4f0c24[_0x374b14(0x381,'0jbo')]+_0x374b14(0x277,'1zR4')+_0x3ef0d9,this[_0x374b14(0x416,'Hex[')]),this[_0x374b14(0xdf,'xCP5')]),_0x52114d=await this[_0x374b14(0x204,'WHRT')](_0x5b6137),_0x1f5f19=_0x1fedc3[_0x374b14(0x280,'1mTj')](decryptURL,_0x52114d[_0x374b14(0x10a,'#LLj')][_0x374b14(0x189,'ooFc')]);switch(!![]){case _0x1f5f19[_0x374b14(0x2b2,'jass')](_0x1fedc3[_0x374b14(0x439,'t1tB')]):return this[_0x374b14(0x195,'%R*z')](_0x1f5f19,this[_0x374b14(0x193,'jRFy')],this[_0x374b14(0x147,'%0J8')][_0x374b14(0xbe,'Mw@%')][_0x374b14(0x2d8,'Kksp')]);case _0x1f5f19[_0x374b14(0x37d,'(Fot')](_0x1fedc3[_0x374b14(0x134,'t1tB')]):return this[_0x374b14(0x396,'XzwW')](_0x1f5f19,this[_0x374b14(0x29c,'5k#o')],this[_0x374b14(0x353,'Hex[')][_0x374b14(0xcc,'Kksp')][_0x374b14(0x2d0,'e6a3')]);case _0x1f5f19[_0x374b14(0x2b2,'jass')](_0x1fedc3[_0x374b14(0xe8,'cyY9')]):return this[_0x374b14(0xff,'XzwW')](_0x1f5f19,this[_0x374b14(0x3de,'#LLj')][_0x374b14(0x458,'[qA@')][_0x374b14(0x33c,'%R*z')]);case _0x1f5f19[_0x374b14(0xfd,'1zR4')](_0x1fedc3[_0x374b14(0x18b,'#p0u')]):return this[_0x374b14(0x356,'CpE3')](_0x1f5f19,this[_0x374b14(0x34a,'[qA@')][_0x374b14(0x499,'z^um')][_0x374b14(0x1f4,'(Fot')]);case _0x1f5f19[_0x374b14(0x212,'7xhb')](_0x1fedc3[_0x374b14(0x2c0,'jRFy')]):return this[_0x374b14(0x384,'[%pt')](_0x1f5f19,this[_0x374b14(0x3d2,'[qA@')],this[_0x374b14(0x1de,'^O^a')][_0x374b14(0x21d,'#%h^')][_0x374b14(0xf5,'rtFz')]);case _0x1f5f19[_0x374b14(0x480,'0jbo')](_0x1fedc3[_0x374b14(0x2a0,'x5XC')]):return this[_0x374b14(0x1ff,'5k#o')](_0x1f5f19,this[_0x374b14(0x189,'ooFc')],this[_0x374b14(0x1de,'^O^a')][_0x374b14(0x32b,'%g1%')][_0x374b14(0x18e,'A40r')]);case _0x1f5f19[_0x374b14(0x13d,'shf^')](_0x1fedc3[_0x374b14(0x4a2,'%g1%')]):return this[_0x374b14(0x241,'e6a3')](_0x1f5f19,this[_0x374b14(0x402,'3ph5')],this[_0x374b14(0x19c,'0jbo')][_0x374b14(0xc5,'5k#o')][_0x374b14(0x181,'0PWu')]);case _0x1f5f19[_0x374b14(0x48a,'%14d')](_0x1fedc3[_0x374b14(0x10b,'xCP5')]):return this[_0x374b14(0x3d9,'jRFy')](_0x1f5f19,this[_0x374b14(0x2bd,'shf^')][_0x374b14(0x331,'#LLj')][_0x374b14(0x38c,'cLmp')]);case _0x1f5f19[_0x374b14(0x496,'WHRT')](_0x1fedc3[_0x374b14(0x329,'xCP5')]):return this[_0x374b14(0x399,'shf^')](_0x1f5f19,this[_0x374b14(0x1aa,'z^um')][_0x374b14(0x3fa,'#p0u')][_0x374b14(0x2d0,'e6a3')]);default:throw new Error(_0x1fedc3[_0x374b14(0x344,'ooFc')](_0x1fedc3[_0x374b14(0x36c,'LX$X')](_0x1fedc3[_0x374b14(0x292,'Y(GI')],_0x1f5f19),_0x1fedc3[_0x374b14(0x12a,'cLmp')]));}}async[_0x2923f3(0x2bb,'WHRT')](_0xb5d51d){const _0x131ced=_0x2923f3,_0x1bc48d={};_0x1bc48d[_0x131ced(0x4b8,'[%pt')]=_0x131ced(0x11f,'W%XS');const _0x102755=_0x1bc48d;let _0x19edd9=new FileMoon(_0xb5d51d),_0x32bc3a=await _0x19edd9[_0x131ced(0x35f,'ew6R')]();const _0x1bb931={};return _0x1bb931[_0x131ced(0x311,'5k#o')]=_0x102755[_0x131ced(0x361,'shf^')],_0x1bb931[_0x131ced(0x27c,'xCP5')]=[_0x32bc3a],_0x1bb931[_0x131ced(0x2aa,'xCP5')]=[],_0x1bb931;}async[_0x2923f3(0x1a4,'W%XS')](_0x3f51c7,_0x41f8a5,_0x2ed020){const _0x15a684=_0x2923f3,_0x176835={'PALeP':function(_0x238b8f,_0x30eb51){return _0x238b8f(_0x30eb51);},'JMabL':_0x15a684(0x24c,'7xhb')};let _0x4ec7aa=new PrettyFast(_0x3f51c7,_0x41f8a5),_0x5e25b1=await _0x4ec7aa[_0x15a684(0x38d,'cyY9')](_0x176835[_0x15a684(0x188,'LX$X')](parseInt,_0x2ed020));const _0x4cb6b5={};return _0x4cb6b5[_0x15a684(0x1ea,'(Fot')]=_0x176835[_0x15a684(0x3b3,'7xhb')],_0x4cb6b5[_0x15a684(0x303,'jRFy')]=[_0x5e25b1],_0x4cb6b5[_0x15a684(0x48f,'WHRT')]=[],_0x4cb6b5;}async[_0x2923f3(0x436,'cLmp')](_0x46995f,_0x292936){const _0x5a1e4c=_0x2923f3,_0x4800df={'astCu':function(_0x5cc525,_0x3a7f57){return _0x5cc525(_0x3a7f57);},'hXitZ':_0x5a1e4c(0x449,'n6Pf')};let _0x4b8179=new HydraX(_0x46995f),_0x48bec3=await _0x4b8179[_0x5a1e4c(0x17d,'A40r')](_0x4800df[_0x5a1e4c(0x39e,'t1tB')](parseInt,_0x292936));const _0x4daaae={};return _0x4daaae[_0x5a1e4c(0x13a,'Y[]Y')]=_0x4800df[_0x5a1e4c(0x358,'#LLj')],_0x4daaae[_0x5a1e4c(0x2d1,'n6Pf')]=[_0x48bec3],_0x4daaae[_0x5a1e4c(0x163,'Hex[')]=[],_0x4daaae;}[_0x2923f3(0xea,'x5XC')](_0xefe64f,_0x210c8a){const _0xc514fb=_0x2923f3,_0x4d4363={};_0x4d4363[_0xc514fb(0x132,'shf^')]=function(_0x18808b,_0x5c5fca){return _0x18808b<_0x5c5fca;},_0x4d4363[_0xc514fb(0x248,'cLmp')]=function(_0x4590ea,_0x5b2332){return _0x4590ea<_0x5b2332;},_0x4d4363[_0xc514fb(0x1b2,'n6Pf')]=function(_0x4d9b30,_0x363e96){return _0x4d9b30%_0x363e96;},_0x4d4363[_0xc514fb(0x433,'Y(GI')]=function(_0x1309a1,_0x25edbb){return _0x1309a1+_0x25edbb;},_0x4d4363[_0xc514fb(0x172,'Y(GI')]=function(_0x1b8716,_0x494a56){return _0x1b8716+_0x494a56;},_0x4d4363[_0xc514fb(0x43b,'tt*[')]=function(_0x1bc503,_0x1820eb){return _0x1bc503+_0x1820eb;},_0x4d4363[_0xc514fb(0x260,'3ph5')]=function(_0xa3259f,_0x3152ef){return _0xa3259f^_0x3152ef;},_0x4d4363[_0xc514fb(0x2eb,'#p0u')]=function(_0x1dba93,_0xf16b0e){return _0x1dba93+_0xf16b0e;},_0x4d4363[_0xc514fb(0x12b,'W%XS')]=_0xc514fb(0x2f3,'LX$X'),_0x4d4363[_0xc514fb(0x156,'0PWu')]=_0xc514fb(0x299,'t1tB'),_0x4d4363[_0xc514fb(0x43e,'cyY9')]=_0xc514fb(0x1f2,'Y(GI'),_0x4d4363[_0xc514fb(0x13e,'%R*z')]=_0xc514fb(0x1af,'#%h^'),_0x4d4363[_0xc514fb(0x334,'xCP5')]=function(_0x22ff28,_0xa2371f){return _0x22ff28+_0xa2371f;},_0x4d4363[_0xc514fb(0x1ec,'e6a3')]=function(_0x39f837,_0x59bf40){return _0x39f837+_0x59bf40;},_0x4d4363[_0xc514fb(0x27b,'0PWu')]=function(_0x420c12,_0x346e5b){return _0x420c12+_0x346e5b;},_0x4d4363[_0xc514fb(0x3b8,'%R*z')]=_0xc514fb(0x324,'CpE3'),_0x4d4363[_0xc514fb(0x19f,'%R*z')]=function(_0x1ea0d2,_0x7ff07d){return _0x1ea0d2===_0x7ff07d;},_0x4d4363[_0xc514fb(0x403,'jRFy')]=_0xc514fb(0x225,'shf^'),_0x4d4363[_0xc514fb(0x2f8,'shf^')]=function(_0x1a12c9,_0x366d8b){return _0x1a12c9!==_0x366d8b;},_0x4d4363[_0xc514fb(0x2f4,'#%h^')]=_0xc514fb(0x47d,'%R*z'),_0x4d4363[_0xc514fb(0x3bc,'rtFz')]=_0xc514fb(0x441,'[qA@'),_0x4d4363[_0xc514fb(0x200,'rtFz')]=_0xc514fb(0x491,'tt*['),_0x4d4363[_0xc514fb(0x23f,'W%XS')]=function(_0x2bd76d,_0x8dc3fa){return _0x2bd76d+_0x8dc3fa;},_0x4d4363[_0xc514fb(0x1bf,'A3t6')]=_0xc514fb(0x4b9,'0PWu'),_0x4d4363[_0xc514fb(0xf7,'xCP5')]=_0xc514fb(0x15f,'W%XS');const _0x5bc053=_0x4d4363;let _0x48c5fd=new Request(_0xefe64f,this[_0xc514fb(0x288,'1zR4')]);return _0x48c5fd[_0xc514fb(0x31d,'1mTj')][_0xc514fb(0x3af,'LX$X')](_0x5bc053[_0xc514fb(0x233,'jRFy')],_0x5bc053[_0xc514fb(0xf2,'Hex[')]('q=',_0x210c8a)),_0x48c5fd[_0xc514fb(0x3bf,'Kksp')][_0xc514fb(0x1c0,'shf^')](_0x5bc053[_0xc514fb(0x41b,'1zR4')],this[_0xc514fb(0x19b,'tt*[')]),this[_0xc514fb(0x3d8,'cyY9')](_0x48c5fd,_0x5bc053[_0xc514fb(0x254,'SSlR')])[_0xc514fb(0x2af,'x5XC')](_0x478203=>{const _0x17e005=_0xc514fb,_0x429de0={'cSqwv':_0x5bc053[_0x17e005(0x29e,'Kksp')],'Uhlll':_0x5bc053[_0x17e005(0x30d,'ooFc')],'MmqWj':_0x5bc053[_0x17e005(0xef,'1zR4')],'GdOZz':_0x5bc053[_0x17e005(0x326,'^O^a')],'foFaa':function(_0x44d0af,_0x29b88c){const _0x597b8c=_0x17e005;return _0x5bc053[_0x597b8c(0x15b,'W%XS')](_0x44d0af,_0x29b88c);},'EoonA':function(_0x3baab5,_0x945f08){const _0x441a4b=_0x17e005;return _0x5bc053[_0x441a4b(0x317,'34NU')](_0x3baab5,_0x945f08);},'omDkO':function(_0x3427ff,_0x1ddb62){const _0x33f1d7=_0x17e005;return _0x5bc053[_0x33f1d7(0x302,'h0BF')](_0x3427ff,_0x1ddb62);},'JEEBh':_0x5bc053[_0x17e005(0x190,'jass')]};if(_0x5bc053[_0x17e005(0x235,'jass')](_0x5bc053[_0x17e005(0x2e8,'%14d')],_0x5bc053[_0x17e005(0x49c,'ew6R')])){if(!_0x478203[_0x17e005(0x1fc,'34NU')]){if(_0x5bc053[_0x17e005(0x4b6,'Kksp')](_0x5bc053[_0x17e005(0x2f4,'#%h^')],_0x5bc053[_0x17e005(0xd3,'jRFy')]))throw new Error(_0x17e005(0x264,'CpE3')+_0x210c8a+'\x22!');else{for(var _0x236d80,_0x2b6d85=[],_0x55404f=0x41f*-0x1+0x1*-0x767+0xb86*0x1,_0x5703e5='',_0x25520c=0x181*0x4+-0x7af+0x3d*0x7;_0x5bc053[_0x17e005(0x3cb,'n6Pf')](_0x25520c,-0x15c6+-0x2630+0x33*0x132);_0x25520c++)_0x2b6d85[_0x25520c]=_0x25520c;for(_0x25520c=0x59*0x68+0x1dbe+-0x41e6;_0x5bc053[_0x17e005(0x1ab,'A40r')](_0x25520c,0x1a51+-0xf11+-0xa4*0x10);_0x25520c++)_0x55404f=_0x5bc053[_0x17e005(0x404,'LX$X')](_0x5bc053[_0x17e005(0x4bb,'%g1%')](_0x5bc053[_0x17e005(0x226,'1zR4')](_0x55404f,_0x2b6d85[_0x25520c]),_0x32b974[_0x17e005(0x1c2,'LX$X')](_0x5bc053[_0x17e005(0x19a,'34NU')](_0x25520c,_0x4f21e[_0x17e005(0x16a,'%R*z')]))),-0x1*-0x1fdb+-0x1789+-0x752),_0x236d80=_0x2b6d85[_0x25520c],_0x2b6d85[_0x25520c]=_0x2b6d85[_0x55404f],_0x2b6d85[_0x55404f]=_0x236d80;for(var _0x25520c=-0x2656+-0x3*0x502+0xa*0x556,_0x55404f=0xa96*0x2+-0x24ec+0xfc0,_0x3c86ce=-0x20e*0xc+0x861+0x1047;_0x5bc053[_0x17e005(0x2cf,'z^um')](_0x3c86ce,_0x4ab9e1[_0x17e005(0x32a,'#p0u')]);_0x3c86ce++)_0x236d80=_0x2b6d85[_0x25520c=_0x5bc053[_0x17e005(0x443,'e6a3')](_0x5bc053[_0x17e005(0x1b0,'3ph5')](_0x25520c,-0x47*-0x1+-0xd*-0xe+-0xfc),-0x1*0x25c3+-0x1*0x1129+0x37ec)],_0x2b6d85[_0x25520c]=_0x2b6d85[_0x55404f=_0x5bc053[_0x17e005(0x3c5,'jRFy')](_0x5bc053[_0x17e005(0x259,'XzwW')](_0x55404f,_0x2b6d85[_0x25520c]),0x555+0x7d0+0x1*-0xc25)],_0x2b6d85[_0x55404f]=_0x236d80,_0x5703e5+=_0x3dad89[_0x17e005(0x22e,'XD1d')](_0x5bc053[_0x17e005(0x118,'0PWu')](_0x47a94c[_0x17e005(0x386,'^O^a')](_0x3c86ce),_0x2b6d85[_0x5bc053[_0x17e005(0x2ef,'%14d')](_0x5bc053[_0x17e005(0x477,'%g1%')](_0x2b6d85[_0x25520c],_0x2b6d85[_0x55404f]),-0x780+0x12be*-0x1+-0x2*-0xd9f)]));return _0x5703e5;}}const _0x3d91aa={};return _0x3d91aa[_0x17e005(0x20d,'Mw@%')]=_0x478203[0xf8b+-0x55*0x3b+0x40c][_0x17e005(0x44d,'#LLj')],_0x3d91aa[_0x17e005(0x2cc,'(Fot')]=[],Promise[_0x17e005(0x395,'^O^a')](_0x3d91aa);}else{const _0x232f7a={};_0x232f7a[_0x17e005(0xf6,'0PWu')]=_0x491e63[_0x17e005(0x3e9,'A40r')][_0x429de0[_0x17e005(0x35c,'cyY9')]],_0x232f7a[_0x17e005(0x3e4,'h0BF')]=_0x57659f[_0x17e005(0x471,'#p0u')][_0x429de0[_0x17e005(0x176,'SSlR')]],_0x232f7a[_0x17e005(0x3e6,'^O^a')]=_0x429de0[_0x17e005(0x2f2,'xCP5')],_0x232f7a[_0x17e005(0x4ab,'Y(GI')]=_0x438f39[_0x17e005(0x346,'z^um')][_0x429de0[_0x17e005(0x22a,'h0BF')]],_0xb12dea[_0x17e005(0x407,'3ph5')]({'id':_0x2737fc[_0x17e005(0x27f,'[%pt')](_0x232f7a),'title':_0x429de0[_0x17e005(0x44f,'1zR4')](_0x429de0[_0x17e005(0x3ea,'rtFz')](_0x429de0[_0x17e005(0x247,'CpE3')](_0x429de0[_0x17e005(0x298,'tt*[')](_0x3b1ea7[_0x17e005(0x1c1,'TAnm')][_0x17e005(0x37a,'Y[]Y')],'\x20['),_0x32b00d[_0x17e005(0x28b,'%0J8')][_0x17e005(0x1d2,'h0BF')]()),']'),_0x429de0[_0x17e005(0x151,'tt*[')]),'language':_0x429de0[_0x17e005(0x48c,'shf^')]});}});}async[_0x2923f3(0x240,'Mw@%')](_0x2d157b,_0x2ee654,_0xc7b5f2){const _0x40a3f2=_0x2923f3,_0x2d49bb={'LoUFZ':_0x40a3f2(0x232,'1zR4'),'xviCw':function(_0x27f44c,_0x171dbf){return _0x27f44c+_0x171dbf;},'vSPkS':_0x40a3f2(0x2e0,'A3t6'),'WRTFw':_0x40a3f2(0x3a4,'3ph5'),'PKiNy':function(_0x301277,_0x5ec6ed){return _0x301277(_0x5ec6ed);},'LngiO':function(_0x359d74,_0x734f44){return _0x359d74!==_0x734f44;},'WPdOo':_0x40a3f2(0x21a,'n6Pf'),'siBlF':function(_0x33ba54,_0x58f8e6){return _0x33ba54!==_0x58f8e6;},'dzbBp':_0x40a3f2(0x375,'SSlR'),'BdYjq':_0x40a3f2(0x398,'n6Pf'),'kIXlB':_0x40a3f2(0x313,'Y(GI'),'joVyM':_0x40a3f2(0x4be,'^O^a')};let _0x290dda=new MyCloud(_0x2d157b,_0x2ee654,this[_0x40a3f2(0x454,'3ph5')][_0x40a3f2(0x293,'[%pt')](this)),_0x583c53=await _0x290dda[_0x40a3f2(0x164,'[%pt')](_0x2d49bb[_0x40a3f2(0xdd,'XzwW')](parseInt,_0xc7b5f2));if(_0x583c53[_0x40a3f2(0x1f7,'ooFc')]){if(_0x2d49bb[_0x40a3f2(0x414,'t1tB')](_0x2d49bb[_0x40a3f2(0x10d,'A40r')],_0x2d49bb[_0x40a3f2(0x10d,'A40r')])){const _0x161759={};return _0x161759[_0x40a3f2(0x43d,'WHRT')]=_0x13b0aa[_0x40a3f2(0x242,'W%XS')],_0x161759[_0x40a3f2(0x43c,'0PWu')]=[],_0x161759;}else{const _0x4a64c5={};return _0x4a64c5[_0x40a3f2(0x382,'7xhb')]=_0x583c53[_0x40a3f2(0x4c1,'%14d')],_0x4a64c5[_0x40a3f2(0x18d,'jass')]=[],_0x4a64c5;}}if(_0x583c53[_0x40a3f2(0x2c7,'rtFz')]){if(_0x2d49bb[_0x40a3f2(0x1cc,'Kksp')](_0x2d49bb[_0x40a3f2(0x15d,'WHRT')],_0x2d49bb[_0x40a3f2(0x251,'XzwW')])){const _0x2da11c={};return _0x2da11c[_0x40a3f2(0x30c,'ew6R')]=_0x2d49bb[_0x40a3f2(0x1e0,'%R*z')],_0x2da11c[_0x40a3f2(0x303,'jRFy')]=[_0x583c53[_0x40a3f2(0x11d,'h0BF')]],_0x2da11c[_0x40a3f2(0x121,'^O^a')]=[],_0x2da11c;}else{let _0x2478f8=new _0x3ee6df(_0x64965b,this[_0x40a3f2(0x45b,'#p0u')]);return _0x2478f8[_0x40a3f2(0x26f,'[%pt')][_0x40a3f2(0x2d4,'Hex[')](_0x2d49bb[_0x40a3f2(0x3c0,'W%XS')],_0x2d49bb[_0x40a3f2(0x1d0,'LX$X')]('q=',_0x549c6e)),_0x2478f8[_0x40a3f2(0x26f,'[%pt')][_0x40a3f2(0x12e,'#%h^')](_0x2d49bb[_0x40a3f2(0x2fe,'Y[]Y')],this[_0x40a3f2(0x46c,'Kksp')]),this[_0x40a3f2(0x11b,'W%XS')](_0x2478f8,_0x2d49bb[_0x40a3f2(0x28e,'(Fot')])[_0x40a3f2(0x1c5,'Mw@%')](_0x94e500=>{const _0x2e3d84=_0x40a3f2;if(!_0x94e500[_0x2e3d84(0x202,'cLmp')])throw new _0x4667be(_0x2e3d84(0x2c2,'#p0u')+_0x541b85+'\x22!');const _0x41bc4f={};return _0x41bc4f[_0x2e3d84(0x3e5,'%R*z')]=_0x94e500[0x2a8+0x37*0x2f+0xcc1*-0x1][_0x2e3d84(0x49a,'XzwW')],_0x41bc4f[_0x2e3d84(0x2e1,'cyY9')]=[],_0x111bc6[_0x2e3d84(0x229,'7xhb')](_0x41bc4f);});}}throw new Error(_0x2d49bb[_0x40a3f2(0x40a,'#p0u')]);}async[_0x2923f3(0x392,'[%pt')](_0x8372b0,_0x20a252,_0x5d063b){const _0x59f13d=_0x2923f3,_0x11af65={'FPRjX':_0x59f13d(0x1b8,'ew6R'),'MZJiS':_0x59f13d(0x337,'(Fot'),'fyLdk':_0x59f13d(0x45e,'ooFc'),'CubkC':_0x59f13d(0x228,'ew6R'),'vVVYc':function(_0x48623a,_0x1f519d){return _0x48623a+_0x1f519d;},'UnHaQ':function(_0x1cf57a,_0x50d0b0){return _0x1cf57a+_0x50d0b0;},'BYtyP':function(_0x2e94a1,_0x2d2823){return _0x2e94a1+_0x2d2823;},'ltuJf':_0x59f13d(0x318,'rtFz'),'VaUaV':_0x59f13d(0x168,'n6Pf'),'YjbyU':function(_0x5b4aa8,_0x2c7721){return _0x5b4aa8(_0x2c7721);},'muWgP':function(_0xbff364,_0x1420d9){return _0xbff364===_0x1420d9;},'CINLM':_0x59f13d(0x3fc,'z^um'),'WnMoB':_0x59f13d(0x1bb,'jRFy'),'TxmSX':_0x59f13d(0xc7,'e6a3'),'hteKo':_0x59f13d(0x161,'0PWu'),'MPQHl':_0x59f13d(0x150,'W%XS')};let _0x511937=new Vidstream(_0x8372b0,_0x20a252,this[_0x59f13d(0x454,'3ph5')][_0x59f13d(0x307,'z^um')](this)),_0x3aeaea=await _0x511937[_0x59f13d(0x389,'Mw@%')](_0x11af65[_0x59f13d(0x11a,'LX$X')](parseInt,_0x5d063b));if(_0x3aeaea[_0x59f13d(0x187,'cLmp')]){if(_0x11af65[_0x59f13d(0x127,'h0BF')](_0x11af65[_0x59f13d(0x2b7,'rtFz')],_0x11af65[_0x59f13d(0x3f4,'ooFc')])){const _0x16185e=_0x53d8eb?function(){const _0x52778a=_0x59f13d;if(_0x193760){const _0x13b07e=_0x28a9e0[_0x52778a(0x286,'jass')](_0x25bffa,arguments);return _0xeeaf4b=null,_0x13b07e;}}:function(){};return _0x2a7f58=![],_0x16185e;}else{const _0x3d7c85={};return _0x3d7c85[_0x59f13d(0x430,'z^um')]=_0x3aeaea[_0x59f13d(0x187,'cLmp')],_0x3d7c85[_0x59f13d(0x29f,'1zR4')]=[],_0x3d7c85;}}if(_0x3aeaea[_0x59f13d(0x3c1,'ew6R')]){if(_0x11af65[_0x59f13d(0x33d,'TAnm')](_0x11af65[_0x59f13d(0x34b,'h0BF')],_0x11af65[_0x59f13d(0x24f,'Mw@%')])){const _0x42e835={};return _0x42e835[_0x59f13d(0x4a0,'%g1%')]=_0x11af65[_0x59f13d(0x350,'7xhb')],_0x42e835[_0x59f13d(0x315,'A40r')]=[_0x3aeaea[_0x59f13d(0x3f9,'(Fot')]],_0x42e835[_0x59f13d(0x440,'%R*z')]=[],_0x42e835;}else{const _0xde35f2={};_0xde35f2[_0x59f13d(0x405,'e6a3')]=_0x40cb04[_0x59f13d(0x461,'Kksp')][_0x11af65[_0x59f13d(0x210,'e6a3')]],_0xde35f2[_0x59f13d(0x485,'Y[]Y')]=_0x59179a[_0x59f13d(0x3f2,'Y(GI')][_0x11af65[_0x59f13d(0x278,'1zR4')]],_0xde35f2[_0x59f13d(0x352,'Hex[')]=_0x11af65[_0x59f13d(0x177,'0jbo')],_0xde35f2[_0x59f13d(0x266,'cyY9')]=_0x16ced1[_0x59f13d(0x346,'z^um')][_0x11af65[_0x59f13d(0x47c,'x5XC')]],_0x42c2ae[_0x59f13d(0x432,'#%h^')]({'id':_0x2ca8f9[_0x59f13d(0x300,'1zR4')](_0xde35f2),'title':_0x11af65[_0x59f13d(0x1ed,'Kksp')](_0x11af65[_0x59f13d(0x4c5,'(Fot')](_0x11af65[_0x59f13d(0x1a2,'%14d')](_0x11af65[_0x59f13d(0xbd,'1zR4')](_0x1a8194[_0x59f13d(0x261,'xCP5')][_0x59f13d(0x367,'t1tB')],'\x20['),_0x209396[_0x59f13d(0x2dd,'%g1%')][_0x59f13d(0x453,'x5XC')]()),']'),_0x11af65[_0x59f13d(0x197,'n6Pf')]),'language':_0x11af65[_0x59f13d(0x128,'%14d')]});}}throw new Error(_0x11af65[_0x59f13d(0x27a,'A3t6')]);}async[_0x2923f3(0x32e,'[%pt')](_0x138bbe,_0x3c16e2){const _0x570285=_0x2923f3;return{'video':await new MP4Upload(_0x138bbe)[_0x570285(0x3f5,'Y[]Y')](),'subtitles':[],'referer':_0x3c16e2};}async[_0x2923f3(0x13f,'Y[]Y')](_0x36068a){const _0x4501cf=_0x2923f3;return{'video':await new Streamtape(_0x36068a)[_0x4501cf(0x206,'shf^')](),'subtitles':[]};}async[_0x2923f3(0x30e,'A3t6')](_0xfed9e3){const _0x9c7f8d=_0x2923f3;return{'video':await new VideoVard(_0xfed9e3)[_0x9c7f8d(0x1a3,'x5XC')](),'subtitles':[]};}}function computeVRF(_0x328348){const _0x1413b0=_0x2923f3,_0x58b3f4={'cQugp':function(_0x206c67,_0x5c1d39){return _0x206c67<=_0x5c1d39;},'LYKBS':function(_0x1597a4,_0x40d62b){return _0x1597a4<_0x40d62b;},'XbzEw':function(_0x1988b3,_0x4b7b0c){return _0x1988b3>>_0x4b7b0c;},'Cokav':function(_0xcad0e1,_0x309b11){return _0xcad0e1<<_0x309b11;},'xyckk':function(_0x53164e,_0x1a636b){return _0x53164e&_0x1a636b;},'ObGcZ':function(_0x7f53e0,_0x48a378){return _0x7f53e0>_0x48a378;},'WNpac':function(_0x51a74b,_0x385a88){return _0x51a74b+_0x385a88;},'VUgNz':function(_0xf03085,_0x2b2caf){return _0xf03085>>_0x2b2caf;},'DNKnQ':function(_0x4bca4b,_0x398814){return _0x4bca4b+_0x398814;},'ZsEmq':function(_0x46096b,_0x20bc15){return _0x46096b&_0x20bc15;},'VGfeb':function(_0x5a275d,_0x1cd7f2){return _0x5a275d>_0x1cd7f2;},'UsDJW':function(_0x170fed,_0xbeec82){return _0x170fed+_0xbeec82;},'cKyhM':function(_0x30f8d7,_0x1619a1){return _0x30f8d7+_0x1619a1;},'lOkWn':function(_0x15999d,_0x40cc5f){return _0x15999d<_0x40cc5f;},'EfcdC':function(_0x2bcff6,_0x3e9b7a){return _0x2bcff6==_0x3e9b7a;},'oaiAM':_0x1413b0(0x186,'%14d'),'DBuEZ':function(_0x3ee0dc,_0x3f5711){return _0x3ee0dc!==_0x3f5711;},'XoKKe':_0x1413b0(0x4ad,'XzwW'),'kYhHg':function(_0x169b5c,_0x51d439){return _0x169b5c>=_0x51d439;},'myTcZ':function(_0x97f36d,_0x27a63f){return _0x97f36d<=_0x27a63f;},'pVKaE':function(_0x4f1e3e,_0x23680a){return _0x4f1e3e+_0x23680a;},'JdfCW':function(_0x5377f6,_0x40909a){return _0x5377f6-_0x40909a;},'qDJvP':_0x1413b0(0x1ae,'[qA@'),'MTerC':function(_0x51a8da,_0x55197d){return _0x51a8da>=_0x55197d;},'wdZtT':function(_0x210f40,_0x1e76d7){return _0x210f40-_0x1e76d7;},'SlEwh':function(_0x241464,_0x50f8d7){return _0x241464===_0x50f8d7;},'Kegpy':_0x1413b0(0x107,'7xhb'),'VOjgf':_0x1413b0(0x22f,'%0J8'),'PooeM':function(_0x12f85c,_0x181f7b){return _0x12f85c(_0x181f7b);},'YedEg':_0x1413b0(0x20b,'Mw@%'),'oPAkX':_0x1413b0(0x1eb,'ooFc'),'mwjQS':function(_0x3eac57,_0x47b041){return _0x3eac57%_0x47b041;},'Jqugr':function(_0x25b4f1,_0x331e8b){return _0x25b4f1==_0x331e8b;},'AcywQ':function(_0x2815f8,_0x428843){return _0x2815f8%_0x428843;},'Kzlbd':function(_0x2dc06c,_0x1a7d1f){return _0x2dc06c==_0x1a7d1f;},'VDtoL':function(_0x47dd42,_0x182366){return _0x47dd42%_0x182366;},'lNiIy':function(_0x24e8e8,_0x17c7a4){return _0x24e8e8==_0x17c7a4;},'GVsEd':function(_0xc1f362,_0x4bd58c){return _0xc1f362%_0x4bd58c;},'ooLHm':function(_0x28d309,_0x1e50a5){return _0x28d309(_0x1e50a5);},'lyslG':function(_0x1a2f79,_0x16073b){return _0x1a2f79(_0x16073b);},'LYRcD':function(_0x57590e,_0x1f71dc,_0xae52f7){return _0x57590e(_0x1f71dc,_0xae52f7);},'yCvly':_0x1413b0(0x46d,'xCP5')};return _0x328348=_0x58b3f4[_0x1413b0(0x2b9,'%R*z')](encodeURIComponent,''[_0x1413b0(0x31b,'jass')](_0x328348)),function(_0x1de449){const _0x119a1d=_0x1413b0,_0x4d5b13={'cCdtg':function(_0x1e0d77,_0xba529){const _0x5fcdde=_0x9558;return _0x58b3f4[_0x5fcdde(0x44b,'tt*[')](_0x1e0d77,_0xba529);},'BifHM':function(_0x5be38a,_0x23f903){const _0x43afc3=_0x9558;return _0x58b3f4[_0x43afc3(0x4a6,'ew6R')](_0x5be38a,_0x23f903);},'wiWGE':function(_0xefee07,_0x7c7b19){const _0x3d4cd4=_0x9558;return _0x58b3f4[_0x3d4cd4(0x3f7,'[%pt')](_0xefee07,_0x7c7b19);},'aLcMg':function(_0x1b2c95,_0x12190c){const _0x57cdf0=_0x9558;return _0x58b3f4[_0x57cdf0(0x42c,'tt*[')](_0x1b2c95,_0x12190c);},'sMYVv':function(_0x2e3a46,_0x20f5c9){const _0x11ca53=_0x9558;return _0x58b3f4[_0x11ca53(0x192,'Kksp')](_0x2e3a46,_0x20f5c9);},'hjLYs':_0x58b3f4[_0x119a1d(0x2cb,'ew6R')],'yHeAU':function(_0x5c24fe,_0x259ef9){const _0x480e6a=_0x119a1d;return _0x58b3f4[_0x480e6a(0x44a,'Hex[')](_0x5c24fe,_0x259ef9);},'VXqBR':function(_0x49d444,_0x1d6071){const _0x3deefa=_0x119a1d;return _0x58b3f4[_0x3deefa(0x3e2,'Y[]Y')](_0x49d444,_0x1d6071);},'ADEdL':function(_0x5e14e9,_0x97ade0){const _0x562ff1=_0x119a1d;return _0x58b3f4[_0x562ff1(0x3f7,'[%pt')](_0x5e14e9,_0x97ade0);},'AxjUu':function(_0x3b69c9,_0x3c59cd){const _0x533c39=_0x119a1d;return _0x58b3f4[_0x533c39(0x2ad,'A3t6')](_0x3b69c9,_0x3c59cd);}};if(_0x58b3f4[_0x119a1d(0x166,'^O^a')](_0x58b3f4[_0x119a1d(0x2e4,'^O^a')],_0x58b3f4[_0x119a1d(0x116,'tt*[')])){const _0x13affd=_0x10595c[_0x119a1d(0x374,'^O^a')](_0x436992,arguments);return _0x378d32=null,_0x13affd;}else{for(var _0x5c3dad=-0x2143+0x1024+0x1127,_0x18a9e6=(_0x1de449=_0x58b3f4[_0x119a1d(0x355,'5k#o')](e,_0x1de449),''),_0x3e38c9=-0x7af*-0x4+0x228b+0x4147*-0x1;_0x58b3f4[_0x119a1d(0x3c9,'z^um')](_0x3e38c9,_0x1de449[_0x119a1d(0x368,'Y(GI')]);_0x3e38c9++){if(_0x58b3f4[_0x119a1d(0x3b7,'WHRT')](_0x58b3f4[_0x119a1d(0x36d,'TAnm')],_0x58b3f4[_0x119a1d(0x230,'z^um')])){const _0x38060f={'GdBKb':function(_0xf83000,_0x549a0f){const _0x580353=_0x119a1d;return _0x58b3f4[_0x580353(0x44c,'%0J8')](_0xf83000,_0x549a0f);},'Shryv':function(_0x15bcda,_0xb98053){const _0x34d81e=_0x119a1d;return _0x58b3f4[_0x34d81e(0x2f1,'[qA@')](_0x15bcda,_0xb98053);}};var _0x56e193=[_0x366b4b,_0x1cecc0,_0x37daba,_0x11a5c0];_0x56e193[-0x21*-0xc7+0x6*0x4df+0x3*-0x124b]=_0x58b3f4[_0x119a1d(0xf1,'LX$X')](_0xb658f8[_0x119a1d(0x2de,'jass')](_0x362794),0x13*0x119+-0x2*-0x539+-0x1f4b),_0x56e193[-0x1b78+0x85b+0x98f*0x2]=_0x58b3f4[_0x119a1d(0x335,'SSlR')](_0x58b3f4[_0x119a1d(0x2ba,'W%XS')](-0x39*0xa7+-0x40*0x2+-0x1*-0x25b2,_0x17bf8b[_0x119a1d(0x429,'Mw@%')](_0x5ab5c6)),0x1df*-0x1+0x5fb*0x1+-0x418),_0x58b3f4[_0x119a1d(0x1ac,'[%pt')](_0x20ac76[_0x119a1d(0x2be,'XD1d')],_0x58b3f4[_0x119a1d(0x1cb,'xCP5')](_0x408143,0xdfb+-0x1*-0x1d9d+-0x1*0x2b97))&&(_0x56e193[0x2010+0x1578+-0x47*0xc1]|=_0x58b3f4[_0x119a1d(0x49b,'%0J8')](_0x10f10b[_0x119a1d(0x113,'1mTj')](_0x58b3f4[_0x119a1d(0x3f8,'CpE3')](_0x4b3eb1,0x23dc+0xbbc+0x5d*-0x83)),0xa20+-0xa16+-0x6),_0x56e193[0x9*-0x1a2+-0x2*0x1159+-0x1*-0x3166]=_0x58b3f4[_0x119a1d(0x279,'5k#o')](_0x58b3f4[_0x119a1d(0x296,'0jbo')](-0x1*-0x1eeb+0x21f1+-0x139*0x35,_0x2548c0[_0x119a1d(0x373,'1zR4')](_0x58b3f4[_0x119a1d(0x18c,'1mTj')](_0x24506c,-0xc69+-0xcae+-0x58*-0x49))),0x17*0x75+-0x15f7+0x3d2*0x3)),_0x58b3f4[_0x119a1d(0x348,'SSlR')](_0x4abfe7[_0x119a1d(0x450,'7xhb')],_0x58b3f4[_0x119a1d(0x2e3,'z^um')](_0xee5c94,0x1*0x125+-0x35+-0xee))&&(_0x56e193[-0x9*-0x264+-0x1370*0x2+-0x13*-0xea]|=_0x58b3f4[_0x119a1d(0x435,'Kksp')](_0x1d2338[_0x119a1d(0x3e1,'XD1d')](_0x58b3f4[_0x119a1d(0x498,'(Fot')](_0x29e99c,-0xfda+-0x1cbd+0xe9*0x31)),-0x1ca0+0xf52+-0xd54*-0x1),_0x56e193[-0x1068+0x1*0x14ea+-0x1*0x47f]=_0x58b3f4[_0x119a1d(0x3e0,'LX$X')](0x3*0x175+-0x3b9*-0x1+-0x7d9,_0x145768[_0x119a1d(0x140,'cLmp')](_0x58b3f4[_0x119a1d(0x1c8,'[qA@')](_0x3ac19f,-0x1376+-0xa*0x230+0x48*0x93))));for(var _0x480608=-0x1bb*0xb+0xc*-0x1dd+-0x1*-0x2965;_0x58b3f4[_0x119a1d(0x22b,'shf^')](_0x480608,_0x56e193[_0x119a1d(0x2f0,'0jbo')]);_0x480608++)_0x16889e+=_0x58b3f4[_0x119a1d(0x217,'jass')](_0x58b3f4[_0x119a1d(0x46a,'rtFz')],typeof _0x56e193[_0x480608])?'=':function(_0x4a8ab4){const _0x3cb6e2=_0x119a1d;if(_0x38060f[_0x3cb6e2(0x2c5,'LX$X')](0x4*0x90e+0x11d6+-0x360e,_0x4a8ab4)&&_0x38060f[_0x3cb6e2(0x34f,'A3t6')](_0x4a8ab4,-0x1*-0x1d11+-0x2311+-0x4*-0x190))return _0xbfa671[_0x4a8ab4];}(_0x56e193[_0x480608]);}else{var _0x386ad2=_0x1de449[_0x119a1d(0x113,'1mTj')](_0x3e38c9);_0x58b3f4[_0x119a1d(0x1df,'%0J8')](_0x58b3f4[_0x119a1d(0x15e,'7xhb')](_0x3e38c9,0x1*0x582+-0x2ab*-0x4+-0x1026),0x2bb+-0x13d*-0x13+0x205*-0xd)?_0x386ad2+=-0x1628*0x1+0x1*0x385+0xd9*0x16:_0x58b3f4[_0x119a1d(0x2ea,'LX$X')](_0x58b3f4[_0x119a1d(0x39b,'1zR4')](_0x3e38c9,0x347*0x2+0x983*-0x1+0x2fd),-0xcbf+-0x12c3+0x1f89)?_0x386ad2+=-0x11*-0x1cd+0x146b+0x1*-0x3303:_0x58b3f4[_0x119a1d(0x466,'WHRT')](_0x58b3f4[_0x119a1d(0x2c4,'%0J8')](_0x3e38c9,-0x2027+-0x1904+0x3933),0x1bd7+-0x38*-0x8+-0x1d95)?_0x386ad2-=0x86*0x8+0x5*0x78e+0x33a*-0xd:_0x58b3f4[_0x119a1d(0x2f7,'5k#o')](_0x58b3f4[_0x119a1d(0x49e,'Kksp')](_0x3e38c9,-0x5*0x6d+0x272+0x1*-0x49),0x754+-0x26a9+0x1f59)?_0x386ad2-=0x1770+0x168d+-0x2dfb:_0x58b3f4[_0x119a1d(0x474,'h0BF')](_0x58b3f4[_0x119a1d(0x1c9,'t1tB')](_0x3e38c9,-0x21b+-0x158+0x129*0x3),0x1047*0x2+0x3ad*0x3+-0x2b8f)?_0x386ad2+=-0xc*0x2dd+0x520*0x1+0x4e0*0x6:_0x58b3f4[_0x119a1d(0x494,'#%h^')](_0x58b3f4[_0x119a1d(0x1e7,'%0J8')](_0x3e38c9,-0x1b13+0x1165+-0x71*-0x16),-0x174+0x7b*0x2b+-0x1335)?_0x386ad2-=0xcc2+-0x1*-0x1fc5+-0x1*0x2c84:_0x58b3f4[_0x119a1d(0xe2,'ooFc')](_0x58b3f4[_0x119a1d(0x216,'Kksp')](_0x3e38c9,-0x1129*-0x1+-0xaa7+-0x33d*0x2),-0x420*-0x2+-0x50d+-0x10*0x33)?_0x386ad2+=0xed+0x19*0x6d+-0xb90:_0x58b3f4[_0x119a1d(0x222,'%g1%')](_0x58b3f4[_0x119a1d(0x408,'#%h^')](_0x3e38c9,-0xfb6+-0x110c+0x20ca),0x59*-0x4+-0x2*-0x447+-0x725*0x1)&&(_0x386ad2+=0x2d*0xc+-0x79*-0x25+-0x1394),_0x18a9e6+=String[_0x119a1d(0x2a9,'WHRT')](_0x386ad2);}}return _0x18a9e6=function(_0x47eedc){const _0x4e3593=_0x119a1d;if(_0x58b3f4[_0x4e3593(0x351,'Mw@%')](_0x58b3f4[_0x4e3593(0x320,'ew6R')],_0x58b3f4[_0x4e3593(0x3a0,'W%XS')])){if(_0x59fa62){const _0x27062d=_0xbde3f[_0x4e3593(0x486,'cyY9')](_0xe32adf,arguments);return _0x5a0274=null,_0x27062d;}}else return _0x47eedc[_0x4e3593(0x13c,'z^um')](/[a-zA-Z]/g,function(_0x1cb98f){const _0x1c579e=_0x4e3593,_0x1f6eaf={'PMqUA':function(_0x249498,_0x2a3a70){const _0x1f3611=_0x9558;return _0x4d5b13[_0x1f3611(0x25a,'SSlR')](_0x249498,_0x2a3a70);},'FBmsN':function(_0x28080b,_0x4543e5){const _0x251b88=_0x9558;return _0x4d5b13[_0x251b88(0x20e,'ooFc')](_0x28080b,_0x4543e5);},'zxoNP':function(_0x8951ef,_0x587f85){const _0x4d283b=_0x9558;return _0x4d5b13[_0x4d283b(0x3a9,'A40r')](_0x8951ef,_0x587f85);},'HjtTC':function(_0x424ddd,_0x27db51){const _0xbe4d45=_0x9558;return _0x4d5b13[_0xbe4d45(0x4b2,'Y(GI')](_0x424ddd,_0x27db51);}};return _0x4d5b13[_0x1c579e(0x218,'1zR4')](_0x4d5b13[_0x1c579e(0x26b,'t1tB')],_0x4d5b13[_0x1c579e(0xe7,'jRFy')])?_0x9edd35[_0x1c579e(0x25f,'#p0u')](/[a-zA-Z]/g,function(_0x528cd0){const _0x191ae0=_0x1c579e;return _0x23d493[_0x191ae0(0x468,'%g1%')](_0x1f6eaf[_0x191ae0(0x459,'CpE3')](_0x1f6eaf[_0x191ae0(0x319,'TAnm')](_0x528cd0,'Z')?0x31c*-0x8+0x37*-0x11+0x1*0x1ce1:0x26ef*0x1+-0x217e+-0x4f7,_0x528cd0=_0x1f6eaf[_0x191ae0(0x420,'CpE3')](_0x528cd0[_0x191ae0(0x2e5,'x5XC')](-0x92c+0x1a97+-0x116b),0x113c+0x26ed+-0x381c))?_0x528cd0:_0x1f6eaf[_0x191ae0(0x103,'ooFc')](_0x528cd0,-0x1*-0x3+0x5*-0x10c+0x553));}):String[_0x1c579e(0x49f,'cLmp')](_0x4d5b13[_0x1c579e(0x221,'%R*z')](_0x4d5b13[_0x1c579e(0x45d,'n6Pf')](_0x1cb98f,'Z')?-0x72f*0x2+-0x1a6f+0x7*0x5e1:-0x92c+-0x195*-0x15+-0x1793,_0x1cb98f=_0x4d5b13[_0x1c579e(0x2c8,'XD1d')](_0x1cb98f[_0x1c579e(0x36b,'0PWu')](-0xf*-0x223+0x1*-0x20f+-0x2*0xeff),-0xec9+-0xe*0xc7+0x19b8))?_0x1cb98f:_0x4d5b13[_0x1c579e(0x170,'[%pt')](_0x1cb98f,-0x1*0x177b+-0x64d+0xa*0x2fd));});}(_0x18a9e6=_0x58b3f4[_0x119a1d(0x476,'SSlR')](e,_0x18a9e6));}}(_0x58b3f4[_0x1413b0(0x469,'ooFc')](e,_0x58b3f4[_0x1413b0(0x47b,'#%h^')](j,_0x58b3f4[_0x1413b0(0x41a,'A3t6')],_0x328348)));}function o(_0x20f636){const _0x48c7a7=_0x2923f3,_0x2d7b90={};_0x2d7b90[_0x48c7a7(0x21e,'jRFy')]=function(_0x2c0e54,_0x337178){return _0x2c0e54!==_0x337178;},_0x2d7b90[_0x48c7a7(0x219,'5k#o')]=_0x48c7a7(0x332,'x5XC'),_0x2d7b90[_0x48c7a7(0x305,'W%XS')]=function(_0x395474,_0x454ba4){return _0x395474<=_0x454ba4;},_0x2d7b90[_0x48c7a7(0x276,'jass')]=function(_0x2fe2c6,_0x476118){return _0x2fe2c6<_0x476118;},_0x2d7b90[_0x48c7a7(0x1b4,'A40r')]=_0x48c7a7(0x2ce,'ooFc'),_0x2d7b90[_0x48c7a7(0x22c,'cLmp')]=function(_0x2884a6,_0x28f9cf){return _0x2884a6<_0x28f9cf;},_0x2d7b90[_0x48c7a7(0x106,'[%pt')]=function(_0xaaf19f,_0x4a7153){return _0xaaf19f<_0x4a7153;},_0x2d7b90[_0x48c7a7(0x258,'x5XC')]=function(_0x512a8a,_0x19ecfd){return _0x512a8a!==_0x19ecfd;},_0x2d7b90[_0x48c7a7(0x1f5,'tt*[')]=_0x48c7a7(0x3a8,'0PWu'),_0x2d7b90[_0x48c7a7(0x423,'n6Pf')]=_0x48c7a7(0x4b1,'SSlR'),_0x2d7b90[_0x48c7a7(0xbb,'#LLj')]=function(_0x5f2349,_0x116494){return _0x5f2349>>_0x116494;},_0x2d7b90[_0x48c7a7(0x349,'TAnm')]=function(_0x44def2,_0x1aa804){return _0x44def2<<_0x1aa804;},_0x2d7b90[_0x48c7a7(0x309,'jass')]=function(_0x1aecf9,_0x5ce6f4){return _0x1aecf9&_0x5ce6f4;},_0x2d7b90[_0x48c7a7(0x1e1,'[qA@')]=function(_0x405818,_0x216734){return _0x405818>_0x216734;},_0x2d7b90[_0x48c7a7(0x23d,'7xhb')]=function(_0x35ebab,_0x1d30d9){return _0x35ebab+_0x1d30d9;},_0x2d7b90[_0x48c7a7(0x12c,'#LLj')]=function(_0x307a86,_0x3d5db4){return _0x307a86&_0x3d5db4;},_0x2d7b90[_0x48c7a7(0x245,'W%XS')]=function(_0x2596a4,_0x4a8dc9){return _0x2596a4>>_0x4a8dc9;},_0x2d7b90[_0x48c7a7(0x16f,'W%XS')]=function(_0x119c0e,_0xe5ed70){return _0x119c0e+_0xe5ed70;},_0x2d7b90[_0x48c7a7(0x29d,'%R*z')]=function(_0x3d1735,_0x56ca04){return _0x3d1735<_0x56ca04;},_0x2d7b90[_0x48c7a7(0x209,'[qA@')]=function(_0xe02b81,_0x1a5df7){return _0xe02b81==_0x1a5df7;},_0x2d7b90[_0x48c7a7(0x2d7,'1mTj')]=_0x48c7a7(0x444,'#LLj');const _0x1ec234=_0x2d7b90;var _0x41fd1e=_0x1ec234[_0x48c7a7(0x14c,'ew6R')];for(_0x20f636=''[_0x48c7a7(0x467,'#p0u')](_0x20f636),_0x37e0ec=0xd19+0x1564*-0x1+0x84b;_0x1ec234[_0x48c7a7(0x2f6,'Mw@%')](_0x37e0ec,_0x20f636[_0x48c7a7(0x2f0,'0jbo')]);_0x37e0ec++)if(_0x1ec234[_0x48c7a7(0x123,'3ph5')](0x1890+0x7ad+-0x1f3e,_0x20f636[_0x48c7a7(0xc3,'cyY9')](_0x37e0ec)))return null;for(var _0xf0736f='',_0x37e0ec=0x1*-0x166b+0x1d3f+-0x6d4;_0x1ec234[_0x48c7a7(0x1fe,'3ph5')](_0x37e0ec,_0x20f636[_0x48c7a7(0x450,'7xhb')]);_0x37e0ec+=0x1e17+0x9d1+-0x27e5){if(_0x1ec234[_0x48c7a7(0x1d6,'TAnm')](_0x1ec234[_0x48c7a7(0x316,'CpE3')],_0x1ec234[_0x48c7a7(0x220,'rtFz')])){var _0x4083a1=[undefined,undefined,undefined,undefined];_0x4083a1[0x1*0x249+0x2094+-0x11*0x20d]=_0x1ec234[_0x48c7a7(0x32d,'CpE3')](_0x20f636[_0x48c7a7(0x1b6,'tt*[')](_0x37e0ec),-0x3a*-0x6d+0x56a+-0xf0d*0x2),_0x4083a1[-0x164b+0x17e9+-0x19d]=_0x1ec234[_0x48c7a7(0x17f,'(Fot')](_0x1ec234[_0x48c7a7(0x4a4,'Kksp')](-0x1996+-0x1*0x689+-0x1c9*-0x12,_0x20f636[_0x48c7a7(0x3d0,'e6a3')](_0x37e0ec)),0x1*0x17c9+-0x1baa+0x3e5),_0x1ec234[_0x48c7a7(0x376,'^O^a')](_0x20f636[_0x48c7a7(0x4a5,'%0J8')],_0x1ec234[_0x48c7a7(0xf8,'ooFc')](_0x37e0ec,0xb*0x24a+-0xed*-0x3+-0x1bf4))&&(_0x4083a1[0x18d+-0xb9*-0x3+-0x3b7]|=_0x1ec234[_0x48c7a7(0xec,'%0J8')](_0x20f636[_0x48c7a7(0x429,'Mw@%')](_0x1ec234[_0x48c7a7(0x270,'1mTj')](_0x37e0ec,-0x2412+-0x2251*-0x1+0x1c2)),0x1*0x281+-0x1*0x1d09+0x1*0x1a8c),_0x4083a1[0x16*0x5+0x1*-0xb1d+-0x11*-0xa1]=_0x1ec234[_0x48c7a7(0x291,'rtFz')](_0x1ec234[_0x48c7a7(0xe0,'5k#o')](-0x1e4e+-0x1d25+0x3b82,_0x20f636[_0x48c7a7(0x1f9,'%R*z')](_0x1ec234[_0x48c7a7(0x23d,'7xhb')](_0x37e0ec,0x4db*-0x6+-0xf81+0x1652*0x2))),-0x25c3+0x1*0x1ae3+0xae2)),_0x1ec234[_0x48c7a7(0x141,'1mTj')](_0x20f636[_0x48c7a7(0x135,'TAnm')],_0x1ec234[_0x48c7a7(0x427,'t1tB')](_0x37e0ec,-0x1217*-0x1+0x2*0x665+-0x1edf))&&(_0x4083a1[0x6*0x213+0x1*0xd9a+-0x1a0a]|=_0x1ec234[_0x48c7a7(0x16e,'^O^a')](_0x20f636[_0x48c7a7(0x3be,'A40r')](_0x1ec234[_0x48c7a7(0xf8,'ooFc')](_0x37e0ec,-0x29*-0x9b+0x1*0xde9+-0x135d*0x2)),-0x158f+-0xd0f+0x22a4),_0x4083a1[0x1178+0x1b14+-0x2c89]=_0x1ec234[_0x48c7a7(0x452,'h0BF')](-0x46c+0x2601+0x2*-0x10ab,_0x20f636[_0x48c7a7(0x429,'Mw@%')](_0x1ec234[_0x48c7a7(0x11c,'xCP5')](_0x37e0ec,-0x854+0x94a+-0x2*0x7a))));for(var _0x5e8bcc=-0x26b*-0x3+-0xb*-0x221+-0x1a*0x12e;_0x1ec234[_0x48c7a7(0x25c,'tt*[')](_0x5e8bcc,_0x4083a1[_0x48c7a7(0x2ae,'[%pt')]);_0x5e8bcc++)_0xf0736f+=_0x1ec234[_0x48c7a7(0x169,'SSlR')](_0x1ec234[_0x48c7a7(0x165,'z^um')],typeof _0x4083a1[_0x5e8bcc])?'=':function(_0x8bb932){const _0x29b337=_0x48c7a7;if(_0x1ec234[_0x29b337(0x3b5,'Mw@%')](_0x1ec234[_0x29b337(0x327,'%0J8')],_0x1ec234[_0x29b337(0x3a2,'[%pt')]))return{'id':this[_0x29b337(0x323,'CpE3')](_0x1fb9c9,this[_0x29b337(0xe6,'xCP5')]),'title':_0x4ab2ff[_0x29b337(0x281,'TAnm')][_0x29b337(0x3df,'XzwW')]()};else{if(_0x1ec234[_0x29b337(0x1bc,'%g1%')](-0x585*-0x1+-0x1974+-0x51*-0x3f,_0x8bb932)&&_0x1ec234[_0x29b337(0x24b,'XzwW')](_0x8bb932,0x188b*0x1+0x257*-0xf+0x1*0xace))return _0x41fd1e[_0x8bb932];}}(_0x4083a1[_0x5e8bcc]);}else return/https?:\/\/(w+\d*.)?9anime.to/[_0x48c7a7(0x451,'34NU')](_0x5b9e3a[_0x48c7a7(0xed,'W%XS')]);}return _0xf0736f;}function e(_0x1657e6){const _0x1da760=_0x2923f3,_0x1aa68c={'mKdJs':function(_0x33ae18,_0x1b48fe){return _0x33ae18(_0x1b48fe);}};return _0x1aa68c[_0x1da760(0xc1,'ew6R')](o,_0x1657e6)[_0x1da760(0x13c,'z^um')](/\//g,'_')[_0x1da760(0x173,'ooFc')](/\+/g,'-');}function j(_0x3fb6b7,_0x3dec24){const _0x55427e=_0x2923f3,_0x797b03={};_0x797b03[_0x55427e(0x2dc,'CpE3')]=function(_0x3c4157,_0x2a8c67){return _0x3c4157<_0x2a8c67;},_0x797b03[_0x55427e(0x2d3,'[%pt')]=function(_0x5dd090,_0x2efad6){return _0x5dd090<_0x2efad6;},_0x797b03[_0x55427e(0x199,'%0J8')]=function(_0x35bf35,_0x555630){return _0x35bf35%_0x555630;},_0x797b03[_0x55427e(0x3c6,'%R*z')]=function(_0x2e7c19,_0x3c238e){return _0x2e7c19+_0x3c238e;},_0x797b03[_0x55427e(0x179,'Hex[')]=function(_0x69a170,_0x277e84){return _0x69a170%_0x277e84;},_0x797b03[_0x55427e(0x124,'jRFy')]=function(_0x1d91e0,_0x1270ab){return _0x1d91e0%_0x1270ab;},_0x797b03[_0x55427e(0x314,'e6a3')]=function(_0x47e572,_0x368868){return _0x47e572%_0x368868;},_0x797b03[_0x55427e(0x3a6,'%g1%')]=function(_0x37bda7,_0x4ac67f){return _0x37bda7+_0x4ac67f;},_0x797b03[_0x55427e(0x208,'rtFz')]=function(_0x2f9f68,_0x4d1bed){return _0x2f9f68^_0x4d1bed;},_0x797b03[_0x55427e(0x41c,'jass')]=function(_0x49b75a,_0x43c37a){return _0x49b75a%_0x43c37a;};const _0x4aee05=_0x797b03;for(var _0xb4cdef,_0x3ebba4=[],_0x28e3a4=-0x26e*0x1+0x4*-0x17b+0x85a,_0x4892cc='',_0x4dcb08=-0x1bb0+-0x1*-0x1265+0x94b;_0x4aee05[_0x55427e(0x428,'jass')](_0x4dcb08,0x1bed+-0x28e*-0x5+-0x27b3);_0x4dcb08++)_0x3ebba4[_0x4dcb08]=_0x4dcb08;for(_0x4dcb08=0x18c8+0x10*0x267+-0x4*0xfce;_0x4aee05[_0x55427e(0x30b,'Y(GI')](_0x4dcb08,0x1182+0x35*0xad+0x5f*-0x8d);_0x4dcb08++)_0x28e3a4=_0x4aee05[_0x55427e(0xd9,'1mTj')](_0x4aee05[_0x55427e(0x18a,'cLmp')](_0x4aee05[_0x55427e(0x11e,'7xhb')](_0x28e3a4,_0x3ebba4[_0x4dcb08]),_0x3fb6b7[_0x55427e(0x140,'cLmp')](_0x4aee05[_0x55427e(0x3cf,'XD1d')](_0x4dcb08,_0x3fb6b7[_0x55427e(0x213,'t1tB')]))),-0xdc8+0x1e40+-0xf78),_0xb4cdef=_0x3ebba4[_0x4dcb08],_0x3ebba4[_0x4dcb08]=_0x3ebba4[_0x28e3a4],_0x3ebba4[_0x28e3a4]=_0xb4cdef;for(var _0x4dcb08=-0xdc4+0x1b*0x1+0xd*0x10d,_0x28e3a4=-0x24c9+-0x16b0+-0xbe5*-0x5,_0x5ad46e=0x1e9+0x1822+-0x3b*0x71;_0x4aee05[_0x55427e(0x2ec,'1mTj')](_0x5ad46e,_0x3dec24[_0x55427e(0x16a,'%R*z')]);_0x5ad46e++)_0xb4cdef=_0x3ebba4[_0x4dcb08=_0x4aee05[_0x55427e(0x294,'0jbo')](_0x4aee05[_0x55427e(0x333,'ooFc')](_0x4dcb08,-0xe47+0x1*0x172d+-0xcf*0xb),-0x8b2+-0x777*-0x4+-0x142a)],_0x3ebba4[_0x4dcb08]=_0x3ebba4[_0x28e3a4=_0x4aee05[_0x55427e(0x130,'(Fot')](_0x4aee05[_0x55427e(0x145,'W%XS')](_0x28e3a4,_0x3ebba4[_0x4dcb08]),0xefb+0x97*0x2e+-0x291d)],_0x3ebba4[_0x28e3a4]=_0xb4cdef,_0x4892cc+=String[_0x55427e(0x3ec,'Mw@%')](_0x4aee05[_0x55427e(0x138,'x5XC')](_0x3dec24[_0x55427e(0x2b8,'7xhb')](_0x5ad46e),_0x3ebba4[_0x4aee05[_0x55427e(0x20c,'%14d')](_0x4aee05[_0x55427e(0x10e,'[qA@')](_0x3ebba4[_0x4dcb08],_0x3ebba4[_0x28e3a4]),0x10e0+-0x1068+0x88)]));return _0x4892cc;}function _0x9558(_0x58ca28,_0x3b1c12){const _0x3ea41b=_0x34e7();return _0x9558=function(_0x45478e,_0x39a4a0){_0x45478e=_0x45478e-(-0x26af+-0x2618+0x1*0x4d82);let _0x3b8ee2=_0x3ea41b[_0x45478e];if(_0x9558['tJyQOZ']===undefined){var _0x42b2b5=function(_0x3d87f0){const _0x2de780='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x2e7f2d='',_0x3fbdf2='',_0x5d0e41=_0x2e7f2d+_0x42b2b5;for(let _0x3f6585=0x649*-0x5+0x2*-0x34a+0x2601,_0x5a1e44,_0x2a4867,_0x3cc677=-0x1*-0x1358+0x34f*-0x8+0x1*0x720;_0x2a4867=_0x3d87f0['charAt'](_0x3cc677++);~_0x2a4867&&(_0x5a1e44=_0x3f6585%(-0x2*-0xb4c+0x13a2+-0x2a36)?_0x5a1e44*(-0x2369+0x223e+0x16b)+_0x2a4867:_0x2a4867,_0x3f6585++%(-0x109d*0x2+-0x19d4+0x3b12))?_0x2e7f2d+=_0x5d0e41['charCodeAt'](_0x3cc677+(0x22a6+0x5+-0x22a1))-(-0x119*0x19+0x22ad+-0x732)!==0x19ad*-0x1+0x1029+0x984?String['fromCharCode'](0x23c5*0x1+-0x1*-0x236a+-0x1*0x4630&_0x5a1e44>>(-(-0xd14+0x1621+-0x90b)*_0x3f6585&-0x17b8+-0xe05*-0x1+0x9b9)):_0x3f6585:0x6*0x379+-0x2089*-0x1+-0x355f*0x1){_0x2a4867=_0x2de780['indexOf'](_0x2a4867);}for(let _0x5aedd8=-0x1d*0xdf+-0x1*0xc91+0xc9c*0x3,_0x37001a=_0x2e7f2d['length'];_0x5aedd8<_0x37001a;_0x5aedd8++){_0x3fbdf2+='%'+('00'+_0x2e7f2d['charCodeAt'](_0x5aedd8)['toString'](-0x1463+-0x1*0x115b+-0x12e7*-0x2))['slice'](-(-0x3f8*-0x3+-0x28*-0x6+0xcd6*-0x1));}return decodeURIComponent(_0x3fbdf2);};const _0x41f43d=function(_0x12b6b9,_0x42679f){let _0xcc2a62=[],_0x4f0886=-0x5fe+0x127*-0x3+0x973,_0x768928,_0x2ceec7='';_0x12b6b9=_0x42b2b5(_0x12b6b9);let _0x4b2a02;for(_0x4b2a02=0x73*-0x3a+-0x1*-0x1993+0x7b;_0x4b2a02<0xbcd+-0x43*0x43+0x6bc;_0x4b2a02++){_0xcc2a62[_0x4b2a02]=_0x4b2a02;}for(_0x4b2a02=-0x1332+-0x1da+0x150c;_0x4b2a02<-0x4*-0x96b+-0x1ac4+0x27a*-0x4;_0x4b2a02++){_0x4f0886=(_0x4f0886+_0xcc2a62[_0x4b2a02]+_0x42679f['charCodeAt'](_0x4b2a02%_0x42679f['length']))%(0x1*0x113b+0x1*-0x41f+-0xc1c),_0x768928=_0xcc2a62[_0x4b2a02],_0xcc2a62[_0x4b2a02]=_0xcc2a62[_0x4f0886],_0xcc2a62[_0x4f0886]=_0x768928;}_0x4b2a02=0x2*-0xe22+0x1c9*-0x1+-0x7*-0x44b,_0x4f0886=0x1086+0x3a9*0x3+-0x1b81;for(let _0x346f96=-0x1*-0x192d+-0x262e+0xd01*0x1;_0x346f96<_0x12b6b9['length'];_0x346f96++){_0x4b2a02=(_0x4b2a02+(-0x1ca9+-0x2376+0x4020))%(-0x1052*-0x1+-0xb7*-0x16+-0x1f0c),_0x4f0886=(_0x4f0886+_0xcc2a62[_0x4b2a02])%(0x2*0xd55+-0x21fb+0x851*0x1),_0x768928=_0xcc2a62[_0x4b2a02],_0xcc2a62[_0x4b2a02]=_0xcc2a62[_0x4f0886],_0xcc2a62[_0x4f0886]=_0x768928,_0x2ceec7+=String['fromCharCode'](_0x12b6b9['charCodeAt'](_0x346f96)^_0xcc2a62[(_0xcc2a62[_0x4b2a02]+_0xcc2a62[_0x4f0886])%(-0x2b0+0x644+-0x294)]);}return _0x2ceec7;};_0x9558['FfFkZc']=_0x41f43d,_0x58ca28=arguments,_0x9558['tJyQOZ']=!![];}const _0x276c2e=_0x3ea41b[-0x1*-0xd87+0x528*-0x6+-0x1*-0x1169],_0x3df65e=_0x45478e+_0x276c2e,_0x1354c2=_0x58ca28[_0x3df65e];if(!_0x1354c2){if(_0x9558['PCtBCg']===undefined){const _0x2dcd0b=function(_0x1eda83){this['vpxvAt']=_0x1eda83,this['NddUpW']=[-0x7b*-0x4f+-0x1*-0x22d+-0x1*0x2821,-0xaa0+-0x6*0x3c4+0x84e*0x4,0xc2+0x1555+-0x1617],this['iHudRg']=function(){return'newState';},this['BoXhBB']='\x5cw+\x20*\x5c(\x5c)\x20*{\x5cw+\x20*',this['nhmUaK']='[\x27|\x22].+[\x27|\x22];?\x20*}';};_0x2dcd0b['prototype']['SQpzNo']=function(){const _0x133053=new RegExp(this['BoXhBB']+this['nhmUaK']),_0x4a31cb=_0x133053['test'](this['iHudRg']['toString']())?--this['NddUpW'][0xb2c+-0x3c5*0x5+0x1*0x7ae]:--this['NddUpW'][0x3a*0x2f+0x125d+0x425*-0x7];return this['FFQmpl'](_0x4a31cb);},_0x2dcd0b['prototype']['FFQmpl']=function(_0x451b15){if(!Boolean(~_0x451b15))return _0x451b15;return this['zXRWEU'](this['vpxvAt']);},_0x2dcd0b['prototype']['zXRWEU']=function(_0x2bbe7b){for(let _0x89f757=0x4*0x505+0x617+-0x1a2b,_0x35bf2a=this['NddUpW']['length'];_0x89f757<_0x35bf2a;_0x89f757++){this['NddUpW']['push'](Math['round'](Math['random']())),_0x35bf2a=this['NddUpW']['length'];}return _0x2bbe7b(this['NddUpW'][0x50e+0x256f+-0x2a7d]);},new _0x2dcd0b(_0x9558)['SQpzNo'](),_0x9558['PCtBCg']=!![];}_0x3b8ee2=_0x9558['FfFkZc'](_0x3b8ee2,_0x39a4a0),_0x58ca28[_0x3df65e]=_0x3b8ee2;}else _0x3b8ee2=_0x1354c2;return _0x3b8ee2;},_0x9558(_0x58ca28,_0x3b1c12);}function u(_0x12bc36){const _0x44f67a=_0x2923f3,_0x20b307={};_0x20b307[_0x44f67a(0x455,'A3t6')]=function(_0x2d1751,_0x15efa4){return _0x2d1751==_0x15efa4;},_0x20b307[_0x44f67a(0x34d,'XD1d')]=function(_0x1fa7c6,_0x1cb580){return _0x1fa7c6%_0x1cb580;},_0x20b307[_0x44f67a(0x1f8,'t1tB')]=function(_0x89970b,_0x1a6769){return _0x89970b%_0x1a6769;},_0x20b307[_0x44f67a(0x285,'Mw@%')]=function(_0x4523f9,_0x3cfb40){return _0x4523f9<_0x3cfb40;},_0x20b307[_0x44f67a(0x388,'%R*z')]=function(_0xc9ebd6,_0x20b682){return _0xc9ebd6|_0x20b682;},_0x20b307[_0x44f67a(0x125,'ew6R')]=_0x44f67a(0x26d,'e6a3'),_0x20b307[_0x44f67a(0xfc,'XD1d')]=function(_0xc6980c,_0x44ff21){return _0xc6980c===_0x44ff21;},_0x20b307[_0x44f67a(0x3cd,'[qA@')]=function(_0x5292c5,_0x43fcd3){return _0x5292c5+_0x43fcd3;},_0x20b307[_0x44f67a(0x133,'h0BF')]=function(_0x2bb6ec,_0x49c1b2){return _0x2bb6ec+_0x49c1b2;},_0x20b307[_0x44f67a(0x1be,'0jbo')]=function(_0x2a54d1,_0x13acf8){return _0x2a54d1>>_0x13acf8;},_0x20b307[_0x44f67a(0x3da,'5k#o')]=function(_0x5619f9,_0x486b28){return _0x5619f9&_0x486b28;},_0x20b307[_0x44f67a(0x2a8,'CpE3')]=function(_0x159df2,_0x4d9860){return _0x159df2&_0x4d9860;},_0x20b307[_0x44f67a(0x3a7,'0jbo')]=function(_0x49bd36,_0x56b50f){return _0x49bd36===_0x56b50f;},_0x20b307[_0x44f67a(0x174,'z^um')]=function(_0x14b358,_0x1efb79){return _0x14b358===_0x1efb79;},_0x20b307[_0x44f67a(0x47e,'SSlR')]=function(_0x2783b8,_0x4959bf){return _0x2783b8+_0x4959bf;},_0x20b307[_0x44f67a(0xc4,'cyY9')]=function(_0x4b0431,_0x527eb7){return _0x4b0431>>_0x527eb7;},_0x20b307[_0x44f67a(0x1b9,'1mTj')]=function(_0x5b743f,_0x29c076){return _0x5b743f&_0x29c076;};const _0x2cbcfc=_0x20b307;if(_0x2cbcfc[_0x44f67a(0x14b,'[qA@')](_0x2cbcfc[_0x44f67a(0x424,'h0BF')]((_0x12bc36=_0x2cbcfc[_0x44f67a(0x46e,'TAnm')](_0x2cbcfc[_0x44f67a(0x1d7,'cyY9')]((_0x12bc36=(_0x12bc36=''[_0x44f67a(0x415,'(Fot')](_0x12bc36))[_0x44f67a(0xfb,'CpE3')](/[\t\n\f\r]/g,''))[_0x44f67a(0x4a5,'%0J8')],-0x1f55+-0xf94+0x2eed),-0x18*0x61+-0x14d5*0x1+0x1ded)?_0x12bc36[_0x44f67a(0x1c6,'TAnm')](/==?$/,''):_0x12bc36)[_0x44f67a(0x418,'Kksp')],0x1c3*-0x5+-0x18cd+0x21a0),-0xc60+-0x805*0x4+-0x13*-0x257)||/[^+/0-9A-Za-z]/[_0x44f67a(0x1d5,'0jbo')](_0x12bc36))return null;for(var _0x506cab,_0x29e0d0='',_0x3662ce=0x3bb+-0x171c+-0x1361*-0x1,_0x29521c=-0x2f*0x55+-0x81c+0x17b7,_0x5dc020=0x22c2*0x1+0xb5*-0x7+-0x1dcf;_0x2cbcfc[_0x44f67a(0x17a,'jRFy')](_0x5dc020,_0x12bc36[_0x44f67a(0x409,'3ph5')]);_0x5dc020++)_0x3662ce=_0x2cbcfc[_0x44f67a(0xe5,'#%h^')](_0x3662ce<<=-0x2*-0xddb+-0xb*-0xe2+-0x1*0x2566,(_0x506cab=_0x12bc36[_0x5dc020],_0x2cbcfc[_0x44f67a(0x464,'%R*z')](_0x506cab=_0x2cbcfc[_0x44f67a(0x40e,'1mTj')][_0x44f67a(0x4c4,'(Fot')](_0x506cab),0x756+0x1*-0x16a9+0xf53)?undefined:_0x506cab)),_0x2cbcfc[_0x44f67a(0x1ee,'0PWu')](-0xe7f*0x1+0x1f*-0x81+0x1e36,_0x29521c+=-0x1fd6*-0x1+-0x466*0x3+-0x94f*0x2)&&(_0x29e0d0=_0x2cbcfc[_0x44f67a(0x495,'cLmp')](_0x29e0d0=_0x2cbcfc[_0x44f67a(0x1e8,'Kksp')](_0x29e0d0+=String[_0x44f67a(0x378,'z^um')](_0x2cbcfc[_0x44f67a(0x49d,'(Fot')](_0x2cbcfc[_0x44f67a(0x2bf,'[%pt')](0x1*-0x1dd4d9a+-0x30*0x1af8d+-0x27ca6*-0x147,_0x3662ce),-0xa7*0x1b+0x14*-0x29+-0x14e1*-0x1)),String[_0x44f67a(0x46f,'3ph5')](_0x2cbcfc[_0x44f67a(0x2d6,'Kksp')](_0x2cbcfc[_0x44f67a(0x473,'(Fot')](0x561a*-0x2+0x5d35+0x14dff,_0x3662ce),0x62b*-0x3+-0x594+0x181d))),String[_0x44f67a(0x143,'5k#o')](_0x2cbcfc[_0x44f67a(0x3d3,'Y[]Y')](-0x135*-0x1d+-0x392*0x4+-0x2*0x9dd,_0x3662ce))),_0x3662ce=_0x29521c=0x1566+-0x172f+0x1c9);return _0x2cbcfc[_0x44f67a(0x160,'z^um')](0x579*-0x5+0x5*-0x74d+0x3fea,_0x29521c)?(_0x3662ce>>=0x1d30+-0x67*-0x2c+-0x2ee0,_0x29e0d0+=String[_0x44f67a(0x2a5,'Y[]Y')](_0x3662ce)):_0x2cbcfc[_0x44f67a(0x3c2,'LX$X')](-0x1cb7*0x1+0x4*-0x397+-0x2b25*-0x1,_0x29521c)&&(_0x3662ce>>=-0x1dd*0x6+0x6f2+0x43e,_0x29e0d0=_0x2cbcfc[_0x44f67a(0x1da,'n6Pf')](_0x29e0d0+=String[_0x44f67a(0x143,'5k#o')](_0x2cbcfc[_0x44f67a(0x30a,'34NU')](_0x2cbcfc[_0x44f67a(0x207,'A40r')](0x44d3*-0x1+-0x1eefa+0x332cd,_0x3662ce),-0x741+0xc92+-0x549)),String[_0x44f67a(0x257,'Kksp')](_0x2cbcfc[_0x44f67a(0x2db,'cyY9')](-0x126+0x259*-0x10+-0x5*-0x7f1,_0x3662ce)))),_0x29e0d0;}function decryptURL(_0x3d169f){const _0x2b1fb4=_0x2923f3,_0x29146d={'cnkPN':function(_0x25dbcc,_0x4f74a8,_0x1eda2b){return _0x25dbcc(_0x4f74a8,_0x1eda2b);},'JFoVy':_0x2b1fb4(0x215,'7xhb'),'kqipa':function(_0x150b5f,_0x2442f3){return _0x150b5f(_0x2442f3);}};return _0x3d169f=(-0xc1e*0x1+-0x4*-0x175+0xe6*0x7,u)(_0x3d169f[_0x2b1fb4(0x365,'7xhb')](/_/g,'/')[_0x2b1fb4(0x129,'%R*z')](/\-/g,'+')),_0x3d169f=_0x29146d[_0x2b1fb4(0x2b5,'A3t6')](j,_0x29146d[_0x2b1fb4(0xcd,'Y(GI')],_0x3d169f),_0x29146d[_0x2b1fb4(0x38a,'(Fot')](decodeURIComponent,_0x3d169f);} -export default NineAnime; \ No newline at end of file +const _0x59dab6=_0x377b;(function(_0x248321,_0x5deec0){const _0x85ba57=_0x377b,_0x1b5c63=_0x248321();while(!![]){try{const _0x3ccd06=-parseInt(_0x85ba57(0x260))/(0x59*-0x32+-0x6d*-0x7+0xe68)*(-parseInt(_0x85ba57(0x297))/(0x9*-0x3d8+0x24f3+-0x259))+-parseInt(_0x85ba57(0x2ea))/(0x9d*0x2+0x2fe*0xb+-0x2221)+parseInt(_0x85ba57(0x1a9))/(0x4eb*0x5+0x24fb+-0x3d8e)+-parseInt(_0x85ba57(0x2fe))/(-0x169*0x17+-0x1f58+0x3fcc)*(parseInt(_0x85ba57(0x15f))/(0x1*-0x2273+0x3*0x8e1+0x7d6))+parseInt(_0x85ba57(0x2c5))/(0x1*0xb85+0x2*-0x1367+0x1b50)+-parseInt(_0x85ba57(0x1c0))/(0x1*0x44c+0x24f3+-0x2937)*(parseInt(_0x85ba57(0x28d))/(-0x180a+0x1d6f*-0x1+0x3582))+-parseInt(_0x85ba57(0x2e4))/(0x22*0x1+-0xf1+0xd9)*(-parseInt(_0x85ba57(0x339))/(0xa6*-0x21+0xa4*0x22+-0x57));if(_0x3ccd06===_0x5deec0)break;else _0x1b5c63['push'](_0x1b5c63['shift']());}catch(_0x11060e){_0x1b5c63['push'](_0x1b5c63['shift']());}}}(_0x4983,0x5c02e+-0x7*0x30a3+-0x6e1e));const _0x549c3a=(function(){const _0x218f67=_0x377b,_0x260a1a={};_0x260a1a[_0x218f67(0x2a3)]=function(_0x1d1441,_0x5efea6){return _0x1d1441==_0x5efea6;},_0x260a1a[_0x218f67(0x158)]=function(_0x562e96,_0x55decb){return _0x562e96%_0x55decb;},_0x260a1a[_0x218f67(0x278)]=function(_0x346c65,_0x477903){return _0x346c65==_0x477903;},_0x260a1a[_0x218f67(0x1e1)]=function(_0x4bf090,_0xd39905){return _0x4bf090==_0xd39905;},_0x260a1a[_0x218f67(0x166)]=function(_0x3063ae,_0x5d9f26){return _0x3063ae%_0x5d9f26;},_0x260a1a[_0x218f67(0x317)]=function(_0x53e076,_0x140248){return _0x53e076==_0x140248;},_0x260a1a[_0x218f67(0x1a3)]=function(_0x327649,_0x122226){return _0x327649==_0x122226;},_0x260a1a[_0x218f67(0x30e)]=function(_0x2fd9c1,_0x4ac50a){return _0x2fd9c1!==_0x4ac50a;},_0x260a1a[_0x218f67(0x20b)]=_0x218f67(0x302),_0x260a1a[_0x218f67(0x1e8)]=_0x218f67(0x2d6),_0x260a1a[_0x218f67(0x2ac)]=function(_0x4bc02a,_0x5bad70){return _0x4bc02a!==_0x5bad70;},_0x260a1a[_0x218f67(0x27f)]=_0x218f67(0x32f),_0x260a1a[_0x218f67(0x259)]=_0x218f67(0x2af),_0x260a1a[_0x218f67(0x2cc)]=function(_0x26c70c,_0x432021){return _0x26c70c+_0x432021;},_0x260a1a[_0x218f67(0x156)]=_0x218f67(0x327),_0x260a1a[_0x218f67(0x19c)]=_0x218f67(0x1ec),_0x260a1a[_0x218f67(0x2e1)]=_0x218f67(0x17e),_0x260a1a[_0x218f67(0x1c3)]=_0x218f67(0x2bc),_0x260a1a[_0x218f67(0x312)]=_0x218f67(0x2b4);const _0x45bf5d=_0x260a1a;let _0x2cfc26=!![];return function(_0x1df162,_0x33b9a6){const _0x2520e8=_0x218f67,_0x43c9dd={};_0x43c9dd[_0x2520e8(0x16f)]=_0x45bf5d[_0x2520e8(0x2e1)];const _0x4fba42=_0x43c9dd;if(_0x45bf5d[_0x2520e8(0x30e)](_0x45bf5d[_0x2520e8(0x1c3)],_0x45bf5d[_0x2520e8(0x312)])){const _0x2e58ca=_0x2cfc26?function(){const _0x854e1d=_0x2520e8,_0x411004={'ipTRH':function(_0x27b582,_0x5e37ee){const _0x5d0ac5=_0x377b;return _0x45bf5d[_0x5d0ac5(0x2a3)](_0x27b582,_0x5e37ee);},'FtKFb':function(_0x14e490,_0x13c5df){const _0x349523=_0x377b;return _0x45bf5d[_0x349523(0x158)](_0x14e490,_0x13c5df);},'zdWLo':function(_0x460462,_0x4b7bdd){const _0x2d0b40=_0x377b;return _0x45bf5d[_0x2d0b40(0x278)](_0x460462,_0x4b7bdd);},'nlONU':function(_0x51e4be,_0x154856){const _0x168c69=_0x377b;return _0x45bf5d[_0x168c69(0x2a3)](_0x51e4be,_0x154856);},'uDidZ':function(_0x4dda1a,_0x4b1c3c){const _0x31ed55=_0x377b;return _0x45bf5d[_0x31ed55(0x158)](_0x4dda1a,_0x4b1c3c);},'XgZxb':function(_0x3f2563,_0x2ce91d){const _0x2347ec=_0x377b;return _0x45bf5d[_0x2347ec(0x1e1)](_0x3f2563,_0x2ce91d);},'NCzKZ':function(_0x3ec180,_0x38eeb1){const _0x1b53b0=_0x377b;return _0x45bf5d[_0x1b53b0(0x166)](_0x3ec180,_0x38eeb1);},'ZyitW':function(_0x1f5b69,_0x392861){const _0x57f24f=_0x377b;return _0x45bf5d[_0x57f24f(0x1e1)](_0x1f5b69,_0x392861);},'HOLNg':function(_0x2841ef,_0x169974){const _0x33f166=_0x377b;return _0x45bf5d[_0x33f166(0x317)](_0x2841ef,_0x169974);},'WWqUJ':function(_0x41df56,_0x3992bf){const _0x3a7778=_0x377b;return _0x45bf5d[_0x3a7778(0x166)](_0x41df56,_0x3992bf);},'XWCBM':function(_0x35400c,_0x12a92c){const _0xfa071=_0x377b;return _0x45bf5d[_0xfa071(0x1a3)](_0x35400c,_0x12a92c);}};if(_0x45bf5d[_0x854e1d(0x30e)](_0x45bf5d[_0x854e1d(0x20b)],_0x45bf5d[_0x854e1d(0x1e8)])){if(_0x33b9a6){if(_0x45bf5d[_0x854e1d(0x2ac)](_0x45bf5d[_0x854e1d(0x27f)],_0x45bf5d[_0x854e1d(0x27f)])){var _0x50229c=_0x2ad545[_0x854e1d(0x124)](_0x4932e4);_0x411004[_0x854e1d(0x1a1)](_0x411004[_0x854e1d(0x293)](_0x28bd3b,-0x1763*0x1+0x5c7*-0x2+0x22f9),0x21d0+0xf31+-0x1*0x30fa)?_0x50229c+=0x13*0x1c+-0x26bb+-0xe5*-0x29:_0x411004[_0x854e1d(0x23d)](_0x411004[_0x854e1d(0x293)](_0x27fddd,-0xfd3+-0x334*-0x9+0x1*-0xcf9),-0xb9*0x2a+0x15a2+0x1*0x8bd)?_0x50229c-=0x11*-0xf9+0x13e*0x10+-0xd5*0x4:_0x411004[_0x854e1d(0x143)](_0x411004[_0x854e1d(0x177)](_0x2cce76,-0x1*0x170f+-0x176b+0x1*0x2e82),-0x655*0x1+-0x5*-0x783+-0x1f37)?_0x50229c+=0x4*0x266+0x13f2+0xec2*-0x2:_0x411004[_0x854e1d(0x271)](_0x411004[_0x854e1d(0x177)](_0x1a8009,-0x16c*0x5+0x1*0x57a+0x1aa),0x1*-0x2692+-0x1*0xbe7+0x327b)?_0x50229c-=-0xd7*0x2+0x2543+-0x2390:_0x411004[_0x854e1d(0x271)](_0x411004[_0x854e1d(0x25f)](_0x2eb9a7,-0x2671+0x16f6+0xf83),0x7*0x155+-0x1dce+0x1481)?_0x50229c+=-0x1677+0x1*-0x124d+0x28c7*0x1:_0x411004[_0x854e1d(0x1b3)](_0x411004[_0x854e1d(0x177)](_0x5fa09,-0xb*0x203+0x1bb7+0x1*-0x58e),-0x1*-0x1e53+-0x9f0+-0x1463)?_0x50229c-=0x2a4*0x4+0x2066+-0x2af4:_0x411004[_0x854e1d(0x325)](_0x411004[_0x854e1d(0x26f)](_0x359921,-0x1ca3+-0x1bb3+-0x5*-0xb46),-0x1*-0x409+0x557*-0x1+0x152)?_0x50229c+=0x1567*0x1+-0xd6*0x6+-0x1*0x1061:_0x411004[_0x854e1d(0x328)](_0x411004[_0x854e1d(0x25f)](_0x1e175c,-0x1*-0x23db+-0x13e6+-0xfed),-0x1625+-0x4*-0x788+0x1*-0x7fa)&&(_0x50229c-=0x1bf5+-0x25f3*-0x1+0x20f2*-0x2),_0x10ec43+=_0x5a9c9d[_0x854e1d(0x275)](_0x50229c);}else{const _0x9da3bb=_0x33b9a6[_0x854e1d(0x126)](_0x1df162,arguments);return _0x33b9a6=null,_0x9da3bb;}}}else{const _0x4822a4={};return _0x4822a4[_0x854e1d(0x18a)]=_0x4fba42[_0x854e1d(0x16f)],_0x4822a4[_0x854e1d(0x24a)]=[_0x57c152[_0x854e1d(0x2c9)]],_0x4822a4[_0x854e1d(0x18c)]=[],_0x4822a4;}}:function(){};return _0x2cfc26=![],_0x2e58ca;}else{let _0x1d6f56=new _0x1a67cf(_0x295f57,this[_0x2520e8(0x245)]);return _0x1d6f56[_0x2520e8(0x1a8)][_0x2520e8(0x322)](_0x45bf5d[_0x2520e8(0x259)],_0x45bf5d[_0x2520e8(0x2cc)]('q=',_0x44b0ea)),_0x1d6f56[_0x2520e8(0x1a8)][_0x2520e8(0x322)](_0x45bf5d[_0x2520e8(0x156)],this[_0x2520e8(0x135)]),this[_0x2520e8(0x27a)](_0x1d6f56,_0x45bf5d[_0x2520e8(0x19c)])[_0x2520e8(0x1b8)](_0x185b30=>{const _0x47b7b8=_0x2520e8;if(!_0x185b30[_0x47b7b8(0x231)])throw new _0x5a1b8d(_0x47b7b8(0x268)+_0x5e87dd+'\x22!');const _0x43cded={};return _0x43cded[_0x47b7b8(0x11e)]=_0x185b30[0x18fd+-0x1d76+0x479][_0x47b7b8(0x19b)],_0x43cded[_0x47b7b8(0x18c)]=[],_0x5bf894[_0x47b7b8(0x12c)](_0x43cded);});}};}()),_0x5c89f0=_0x549c3a(this,function(){const _0x16a37b=_0x377b,_0x11ef04={};_0x11ef04[_0x16a37b(0x253)]=_0x16a37b(0x2b1);const _0x5d3c7d=_0x11ef04;return _0x5c89f0[_0x16a37b(0x2d9)]()[_0x16a37b(0x15c)](_0x5d3c7d[_0x16a37b(0x253)])[_0x16a37b(0x2d9)]()[_0x16a37b(0x213)](_0x5c89f0)[_0x16a37b(0x15c)](_0x5d3c7d[_0x16a37b(0x253)]);});function _0x377b(_0x64434a,_0x16a67b){const _0x4a6ed4=_0x4983();return _0x377b=function(_0x46299d,_0x2f6bb8){_0x46299d=_0x46299d-(0xa74*-0x1+0x1c33*0x1+0x1*-0x10a1);let _0x38170e=_0x4a6ed4[_0x46299d];return _0x38170e;},_0x377b(_0x64434a,_0x16a67b);}_0x5c89f0();function _0x4983(){const _0x25b1d3=['YjAZc','[dub]','KNNXP','TuIsX','src','JyIbK','/ajax/server/list/','ekigF','nUGeg','irfGK','ipTRH','Anwxh','OLPRu','BSKyt','jXJFw','vcTWl','HSEqB','headers','3548QqghrM','1080p','hlsXq','oTpuG','jrFUU','max','snlTN','aBSPM','goaMk','numeric','ZyitW','zcauy','9anime','JKgKm','videovard','then','YspiG','tzodU','qovPK','querySelector','zcZYi','value','Video\x20Stream\x20Throttle\x20[ms]','8AMclVq','uNYCu','CmHTo','CVfPa','english','QvSbS','drBqf','720p','linkid','cxnsr','GhXaS','caYKs','AxaSs','WpLkM','krlEZ','JhHLQ','OKzcF','mUXiZ','getRootRelativeOrAbsoluteLink','lykNv','IIIJY','config','IcXPm','cekLT','GBSmg','KoXeZ','muJyA','neSZU','keyword','JpiUk','criuA','fetchUI','_getEpisodeVidstream','faAJJ','IdgpP','HyhiI','filemoon','No\x20stream/playlist\x20found!','undefined','VMgMc','sPyon','boRLN','hmoXr','label','video#videojs\x20source','lnpVc','player_autoplay=0','ZLLik','_getEpisodeMp4upload','svId','MNEye','getStream','indexOf','vAkAb','EmhBh','nkIED','anime','\x27\x20to\x20','yjyzg','aTKqI','eyvjG','sepsf','jQRTe','resolution','JFfXv','lXRuq','stringify','DUKaW','text','\x22\x20not\x20implemented!','BeDJT','PDSJU','aNiOC','HlVtA','kVblJ','QlmCP','push','LNUNY','kTLPd','bTgZB','xZQPn','cvarz','uUeAW','constructor','knNUw','eBsTI','DPnMp','xkkuD','page','ztxsm','ohqqJ','ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/','yetig','XZrnj','zGjAZ','NaVED','UbPSA','Hdejf','sMLDr','NKrfb','BmOiL','fSmZj','LZuTU','CmCRY','NmKZY','ail,\x20or\x20a\x20fallback\x20resolution\x20may\x20be\x20used!','jmxBL','GsWGW','BBskn','hile\x20downloading\x20packets\x20from\x20the\x20video\x20stream.\x0aThe\x20download\x20may','QDzTT','querySelectorAll','480','length','replace','ZTYGc','ULvbY','_getChapters','vCIhr','AxkvP','LrPgT','HfbUv','SdEIY','_getEpisodeStreamtape','reverse','zdWLo','ixDxG','fetchJSON','https://aniwave.to','gXJDU','lNycm','qYhvf','GNbGB','requestOptions','CksAJ','/ajax/server/','pxHZU','aGmMl','mirrors','Lqtfz','\x20fail\x20if\x20there\x20are\x20too\x20many\x20packets\x20requested\x20within\x20a\x20certain\x20i','epId','ion\x20is\x20not\x20supported,\x20depending\x20on\x20the\x20mirror\x20the\x20download\x20may\x20f','Mirror\x27s\x20Default','SHSBk','RXRtL','BSUlT','woxoi','gcIwH','[sub]','nuAFe','AKPer','createDOM','SEvpC','kEQtb','href','oSXRy','searchParams','auIGa','NCzKZ','19nNBAWD','HbEMC','vidstream','khNqY','iIjQF','1azay','TwFdd','RHvUw','No\x20matching\x20video\x20stream\x20found\x20for\x20requested\x20resolution\x20\x22','getStreamAndPlaylist','Enter\x20the\x20timespan\x20in\x20[ms]\x20to\x20delay\x20consecuitive\x20HTTP\x20requests\x20w','WmWoH','Sftjc','tags','lWXmc','WWqUJ','ngsbR','XgZxb','TwcUF','bnWLu','nMKXA','fromCharCode','_getMangas','iBLEL','SxbAz','join','fetchDOM','TrHkT','TESdh','UrYZK','lJKpP','IJZaz','oimpS','ComHJ','cpool','prettyfast','Support\x20for\x20video\x20stream\x20from\x20mirror\x20\x22','GthaX','Yzgoe','llTSQ','RQlVH','QseeG','mcloud','kghhK','default','1946349rwCubE','_getPages','options','CelYY','yFnrj','QKkLa','FtKFb','VtEMO','bQBfo','sub','20986wDDesQ','Mecln','yZGpy','eQaKg','KoMuj','pbwne','gqmhs','KyVNp','AniWave','nibKo','YSmvk','UjCPW','ncFUi','zxtwF','streamtape','kAgYp','qKued','zKXWg','episode','wcXbo','MjrdK','CiCzz','ul.ep-range\x20li\x20a','fetchRegex','x-cookie','bind','(((.+)+)+)+$','uPFdx','DVVzM','ktTGH','_getMangasFromPage','0|3|2|6|5|7|1|4','ylwKH','Assigned\x20URL\x20\x27','QqXFq','fksRZ','xhhFI','QyAlL','zzoPZ','eUYBr','nYlWr','MDUZw','NbREX','480p','oAyuO','tGn6kIpVXBEUmqjD','1117326DerEbo','TLUYV','BwytC','Tczsv','playlist','parse','qbzQT','QURmf','eCPkY','iXWoQ','abMba','bBMGA','ruBsT','dub','BPvgs','_getEpisodeRapidVideo','WLCYH','wRvNU','iurRa','XCjlo','toString','textContent','TZpXd','JbNjq','sort','QDTrR','jRNwA','throttle','QhqEi','FZDhA','jTMSr','4705250IKwmhX','server','MLQrm','lKiQV','fmJsh','ibiqb','1520184TkpNsu','HVJyX','log','YsVUh','nterval.','Ximtf','hVqHn','sFZBF','PEGkS','drItZ','qECYG','wrSNr','lang','lMEnP','input','sSxJO','HVWiG','_getEpisodeMyCloud','gqTJa','VfMTZ','10pOGuYR','bptdX','pqubx','_getEpisodePrettyFast','qdzIT','vVyeD','map','gINQu','iDvpf','tTiNL','linkId','div.info\x20h1[data-jp].title','DdKXt','gYlgF','iwBUQ','SUQbe','wWLdZ','OdMZQ','vwKsp','ycIow','ZVeSM','rJKXQ','div.servers\x20div[data-type=\x22sub\x22]\x20ul\x20li','sbnEE','eHLNW','AELGE','HlMit','jkjGm','nLRVo','KLZRB','FJJqL','sqIiA','xOgKF','pathname','test','cBqhC','set','wtTWg','_getEpisodeHydraX','HOLNg','KBCim','x-referer','XWCBM','hydrax','getPlaylist','description','pKHca','lhrmP','BJFgL','jpnpa','jfBGU','GqNxF','dFRyC','QySzd','ICyAK','split','YNdAQ','EWICd','pQldr','22KHxSSQ','video','HAQVV','includes','num','dGmIo','XOndg','charCodeAt','dntbg','apply','result','PLgoo','fbbGg','IZsMy','vBKec','resolve','/ajax/episode/list/','UNuaD','nteraction\x20to\x20bypass\x20the\x20captcha\x20for\x20the\x20selected\x20anime!','yYogL','GNMIp','IkNLD','rECNQ','vJbNL','url','sjUcB','div.item\x20a.name.d-title','lugxU','Nzcvf','1080','concat','_getMangaFromURI','RREzd','VbFze','720','PMfyX','Vlosw','mzabY','nlONU','wfvxS','stream','kerapoxy','aIKtn','_initializeConnector','DlyPK','lYBhG','The\x20website\x20is\x20protected\x20by\x20captcha,\x20please\x20use\x20manual\x20website\x20i','OQrzj','SzgBk','InoxT','localStorage.setItem(\x27player_autoplay\x27,\x200);window.location.origi','TJhHf','sJAti','CsbJv','XMLHttpRequest','GZGrR','LUyDrL4qIxtIxOGs','sNdlW','cCsHz','KwoWY','div#watch-main','hBkXO','dataset','search','lPiNM','pAfgl','949206VSUmhu','AWdPD','GHlSd','UTXDn','mp4upload','EeWDO','wait','ZhQXC','x-requested-with','wHjzg','khfHY','Try\x20to\x20download\x20video\x20in\x20the\x20selected\x20resolution.\x0aIf\x20the\x20resolut','SDqCg','bkNGY','Preferred\x20Resolution','/filter','flXjx','pDnpR','lcYyj','NfkGz','_getEpisodeFileMoon','select','IaYCZ','HpZxA','uDidZ','nPjpP','maJJH','jxhdu','?vrf=','mmjgn','OyGkD','id,language,resolution','DYWbE','ids','trim','ZyVlx','Request','dGSEf','rLLfK','xYoEl','yJUFC','div.servers\x20div[data-type=\x22dub\x22]\x20ul\x20li','SmCxO','hash','rapidvid','subtitles','EEEyb','dfqVf','RdAWK','fiEvf','xRCEt','ZAbnd','_getEpisodeVideoVard','NXWUJ','min','fwVpJ'];_0x4983=function(){return _0x25b1d3;};return _0x4983();}class NineAnime extends Connector{constructor(){const _0x2acbf0=_0x377b,_0x23ed64={};_0x23ed64[_0x2acbf0(0x1a6)]=_0x2acbf0(0x2b6),_0x23ed64[_0x2acbf0(0x2b7)]=_0x2acbf0(0x2af),_0x23ed64[_0x2acbf0(0x1ad)]=_0x2acbf0(0x1ee),_0x23ed64[_0x2acbf0(0x212)]=_0x2acbf0(0x29f),_0x23ed64[_0x2acbf0(0x130)]=_0x2acbf0(0x1b5),_0x23ed64[_0x2acbf0(0x200)]=_0x2acbf0(0x16d),_0x23ed64[_0x2acbf0(0x17a)]=_0x2acbf0(0x16a)+_0x2acbf0(0x24e)+_0x2acbf0(0x229),_0x23ed64[_0x2acbf0(0x315)]=_0x2acbf0(0x174),_0x23ed64[_0x2acbf0(0x330)]=_0x2acbf0(0x24f),_0x23ed64[_0x2acbf0(0x1ca)]=_0x2acbf0(0x230),_0x23ed64[_0x2acbf0(0x1e9)]=_0x2acbf0(0x2c2),_0x23ed64[_0x2acbf0(0x236)]=_0x2acbf0(0x13f),_0x23ed64[_0x2acbf0(0x1f2)]=_0x2acbf0(0x1c7),_0x23ed64[_0x2acbf0(0x30a)]=_0x2acbf0(0x13a),_0x23ed64[_0x2acbf0(0x22e)]=_0x2acbf0(0x1aa),_0x23ed64[_0x2acbf0(0x2fd)]=_0x2acbf0(0x1bf),_0x23ed64[_0x2acbf0(0x321)]=_0x2acbf0(0x26a)+_0x2acbf0(0x22d)+_0x2acbf0(0x24c)+_0x2acbf0(0x2ee),_0x23ed64[_0x2acbf0(0x299)]=_0x2acbf0(0x1b2),_0x23ed64[_0x2acbf0(0x20f)]=_0x2acbf0(0x240),_0x23ed64[_0x2acbf0(0x1ea)]=_0x2acbf0(0x1f8),_0x23ed64[_0x2acbf0(0x2e9)]=_0x2acbf0(0x1c4),_0x23ed64[_0x2acbf0(0x1d0)]=_0x2acbf0(0x167),_0x23ed64[_0x2acbf0(0x147)]=_0x2acbf0(0x153);const _0x85ed12=_0x23ed64,_0x5e384f=_0x85ed12[_0x2acbf0(0x1a6)][_0x2acbf0(0x335)]('|');let _0x2d70ef=-0x6e6+0x1540+0x16*-0xa7;while(!![]){switch(_0x5e384f[_0x2d70ef++]){case'0':super();continue;case'1':this[_0x2acbf0(0x245)][_0x2acbf0(0x1a8)][_0x2acbf0(0x322)](_0x85ed12[_0x2acbf0(0x2b7)],_0x85ed12[_0x2acbf0(0x1ad)]);continue;case'2':super[_0x2acbf0(0x1eb)]=_0x85ed12[_0x2acbf0(0x212)];continue;case'3':super['id']=_0x85ed12[_0x2acbf0(0x130)];continue;case'4':const _0x41aee7={};_0x41aee7[_0x2acbf0(0x1eb)]=_0x85ed12[_0x2acbf0(0x200)],_0x41aee7[_0x2acbf0(0x32b)]=_0x85ed12[_0x2acbf0(0x17a)],_0x41aee7[_0x2acbf0(0x2f8)]=_0x85ed12[_0x2acbf0(0x315)],_0x41aee7[_0x2acbf0(0x28f)]=[{'value':'','name':_0x85ed12[_0x2acbf0(0x330)]},{'value':_0x85ed12[_0x2acbf0(0x1ca)],'name':_0x85ed12[_0x2acbf0(0x1e9)]},{'value':_0x85ed12[_0x2acbf0(0x236)],'name':_0x85ed12[_0x2acbf0(0x1f2)]},{'value':_0x85ed12[_0x2acbf0(0x30a)],'name':_0x85ed12[_0x2acbf0(0x22e)]}],_0x41aee7[_0x2acbf0(0x1be)]='';const _0x1d7ef2={};_0x1d7ef2[_0x2acbf0(0x1eb)]=_0x85ed12[_0x2acbf0(0x2fd)],_0x1d7ef2[_0x2acbf0(0x32b)]=_0x85ed12[_0x2acbf0(0x321)],_0x1d7ef2[_0x2acbf0(0x2f8)]=_0x85ed12[_0x2acbf0(0x299)],_0x1d7ef2[_0x2acbf0(0x195)]=0x64,_0x1d7ef2[_0x2acbf0(0x1ae)]=0x2710,_0x1d7ef2[_0x2acbf0(0x1be)]=0x3e8;const _0x3a8c6b={};_0x3a8c6b[_0x2acbf0(0x1ff)]=_0x41aee7,_0x3a8c6b[_0x2acbf0(0x2e0)]=_0x1d7ef2,this[_0x2acbf0(0x1d5)]=_0x3a8c6b;continue;case'5':this[_0x2acbf0(0x135)]=_0x85ed12[_0x2acbf0(0x20f)];continue;case'6':this[_0x2acbf0(0x26d)]=[_0x85ed12[_0x2acbf0(0x1ea)],_0x85ed12[_0x2acbf0(0x2e9)]];continue;case'7':this[_0x2acbf0(0x245)][_0x2acbf0(0x1a8)][_0x2acbf0(0x322)](_0x85ed12[_0x2acbf0(0x1d0)],_0x85ed12[_0x2acbf0(0x147)]);continue;}break;}}async[_0x59dab6(0x148)](){const _0x4d2b56=_0x59dab6;let _0x46ebd3=new URL(this[_0x4d2b56(0x135)]),_0x31f3a6=new Request(_0x46ebd3[_0x4d2b56(0x25b)],this[_0x4d2b56(0x245)]);this[_0x4d2b56(0x135)]=await Engine[_0x4d2b56(0x183)][_0x4d2b56(0x1df)](_0x31f3a6,_0x4d2b56(0x14f)+'n'),console[_0x4d2b56(0x2ec)](_0x4d2b56(0x2b8)+this[_0x4d2b56(0x135)]+_0x4d2b56(0x1f9)+this[_0x4d2b56(0x1eb)]),this[_0x4d2b56(0x165)](0x69*0x19+-0x3*-0xc15+-0x1af8);}async[_0x59dab6(0x13c)](_0x1e0876){const _0x495f02=_0x59dab6,_0x56a150={'JpiUk':function(_0x26d082,_0xb698c9){return _0x26d082(_0xb698c9);},'kEQtb':function(_0x38b0cc,_0x475020){return _0x38b0cc===_0x475020;},'BBskn':_0x495f02(0x2f3),'MLQrm':_0x495f02(0x25c),'GZGrR':_0x495f02(0x14b)+_0x495f02(0x12f),'KBCim':_0x495f02(0x309)};let _0x3630b0=new Request(_0x1e0876,this[_0x495f02(0x245)]),_0x5f1a64=await _0x56a150[_0x495f02(0x1dd)](fetch,_0x3630b0),_0x40ffcf=await _0x5f1a64[_0x495f02(0x204)]();if(/waf-verify/i[_0x495f02(0x320)](_0x40ffcf)){if(_0x56a150[_0x495f02(0x25a)](_0x56a150[_0x495f02(0x22c)],_0x56a150[_0x495f02(0x2e6)]))return{'id':this[_0x495f02(0x1d2)](_0x25542d,this[_0x495f02(0x135)]),'title':_0x3a807f[_0x495f02(0x204)][_0x495f02(0x181)]()};else throw new Error(_0x56a150[_0x495f02(0x154)]);}let _0x3b17c4=this[_0x495f02(0x258)](JSON[_0x495f02(0x2ca)](_0x40ffcf)[_0x495f02(0x127)]),_0xc4bf8=_0x3b17c4[_0x495f02(0x1bc)](_0x56a150[_0x495f02(0x326)]),_0x305ea4=_0x1e0876[_0x495f02(0x31f)],_0x2e7986=_0xc4bf8[_0x495f02(0x15b)]['jp'][_0x495f02(0x181)]();return new Manga(this,_0x305ea4,_0x2e7986);}async[_0x59dab6(0x276)](){const _0x216d26=_0x59dab6,_0xd19fac={};_0xd19fac[_0x216d26(0x24b)]=_0x216d26(0x1f1),_0xd19fac[_0x216d26(0x149)]=_0x216d26(0x24d),_0xd19fac[_0x216d26(0x32e)]=_0x216d26(0x296),_0xd19fac[_0x216d26(0x287)]=_0x216d26(0x308),_0xd19fac[_0x216d26(0x2b9)]=function(_0x510f2e,_0xba3232){return _0x510f2e+_0xba3232;},_0xd19fac[_0x216d26(0x272)]=function(_0x12bc44,_0x51a888){return _0x12bc44+_0x51a888;},_0xd19fac[_0x216d26(0x282)]=function(_0x25c1d5,_0x105e53){return _0x25c1d5+_0x105e53;},_0xd19fac[_0x216d26(0x14e)]=_0x216d26(0x198),_0xd19fac[_0x216d26(0x2c8)]=_0x216d26(0x2d2),_0xd19fac[_0x216d26(0x2bf)]=function(_0x29c5fb,_0x49fd9b){return _0x29c5fb===_0x49fd9b;},_0xd19fac[_0x216d26(0x207)]=_0x216d26(0x176),_0xd19fac[_0x216d26(0x19a)]=function(_0x48a8cb,_0x4b6339){return _0x48a8cb>_0x4b6339;};const _0x958b=_0xd19fac;let _0x4d3dcb=[];for(let _0x4d9fa6=0x1bfe+-0x401+-0x17fc,_0x2be7b1=!![];_0x2be7b1;_0x4d9fa6++){if(_0x958b[_0x216d26(0x2bf)](_0x958b[_0x216d26(0x207)],_0x958b[_0x216d26(0x207)])){let _0x1f2656=await this[_0x216d26(0x2b5)](_0x4d9fa6);_0x958b[_0x216d26(0x19a)](_0x1f2656[_0x216d26(0x231)],-0x2ce*-0x6+0x5*-0x435+0x435)?_0x4d3dcb[_0x216d26(0x20c)](..._0x1f2656):_0x2be7b1=![];}else{const _0x2d3bb7={};_0x2d3bb7[_0x216d26(0x2e5)]=_0x5f4647[_0x216d26(0x15b)][_0x958b[_0x216d26(0x24b)]],_0x2d3bb7[_0x216d26(0x2a9)]=_0x1be11f[_0x216d26(0x15b)][_0x958b[_0x216d26(0x149)]],_0x2d3bb7[_0x216d26(0x2f6)]=_0x958b[_0x216d26(0x32e)],_0x2d3bb7[_0x216d26(0x1c8)]=_0x340ed2[_0x216d26(0x15b)][_0x958b[_0x216d26(0x287)]],_0x20bb6b[_0x216d26(0x20c)]({'id':_0x36ab79[_0x216d26(0x202)](_0x2d3bb7),'title':_0x958b[_0x216d26(0x2b9)](_0x958b[_0x216d26(0x272)](_0x958b[_0x216d26(0x282)](_0x958b[_0x216d26(0x282)](_0x4bbe58[_0x216d26(0x15b)][_0x216d26(0x121)],'\x20['),_0x4d074b[_0x216d26(0x2da)][_0x216d26(0x181)]()),']'),_0x958b[_0x216d26(0x14e)]),'language':_0x958b[_0x216d26(0x2c8)]});}}return _0x4d3dcb;}async[_0x59dab6(0x2b5)](_0x1846cd){const _0x1ebd76=_0x59dab6,_0x3d8aa7={};_0x3d8aa7[_0x1ebd76(0x243)]=function(_0x48a590,_0x32594a){return _0x48a590<=_0x32594a;},_0x3d8aa7[_0x1ebd76(0x168)]=function(_0x39e2e3,_0x98156b){return _0x39e2e3<_0x98156b;},_0x3d8aa7[_0x1ebd76(0x334)]=function(_0x38d2f9,_0x383b3b){return _0x38d2f9!==_0x383b3b;},_0x3d8aa7[_0x1ebd76(0x227)]=_0x1ebd76(0x17c),_0x3d8aa7[_0x1ebd76(0x261)]=_0x1ebd76(0x1c6),_0x3d8aa7[_0x1ebd76(0x338)]=_0x1ebd76(0x16e),_0x3d8aa7[_0x1ebd76(0x1ab)]=_0x1ebd76(0x1dc),_0x3d8aa7[_0x1ebd76(0x18d)]=_0x1ebd76(0x2dd),_0x3d8aa7[_0x1ebd76(0x2a6)]=_0x1ebd76(0x28c),_0x3d8aa7[_0x1ebd76(0x1f7)]=_0x1ebd76(0x218),_0x3d8aa7[_0x1ebd76(0x192)]=_0x1ebd76(0x137);const _0x20dae5=_0x3d8aa7,_0x1dbe5f=new URL(_0x20dae5[_0x1ebd76(0x338)],this[_0x1ebd76(0x135)]);_0x1dbe5f[_0x1ebd76(0x25d)][_0x1ebd76(0x322)](_0x20dae5[_0x1ebd76(0x1ab)],''),_0x1dbe5f[_0x1ebd76(0x25d)][_0x1ebd76(0x322)](_0x20dae5[_0x1ebd76(0x18d)],_0x20dae5[_0x1ebd76(0x2a6)]),_0x1dbe5f[_0x1ebd76(0x25d)][_0x1ebd76(0x322)](_0x20dae5[_0x1ebd76(0x1f7)],_0x1846cd);const _0x170190=new Request(_0x1dbe5f,this[_0x1ebd76(0x245)]);let _0x1d3732=await this[_0x1ebd76(0x23f)](_0x170190);const _0x14017c=this[_0x1ebd76(0x258)](_0x1d3732[_0x1ebd76(0x127)]),_0x2af7b0=[..._0x14017c[_0x1ebd76(0x22f)](_0x20dae5[_0x1ebd76(0x192)])];return _0x2af7b0[_0x1ebd76(0x304)](_0x17928b=>{const _0x2f81f7=_0x1ebd76,_0x46773a={'qECYG':function(_0x34cca0,_0x51c963){const _0x4a88a3=_0x377b;return _0x20dae5[_0x4a88a3(0x243)](_0x34cca0,_0x51c963);},'jXJFw':function(_0x3c2a0a,_0x31111a){const _0x23979a=_0x377b;return _0x20dae5[_0x23979a(0x168)](_0x3c2a0a,_0x31111a);}};if(_0x20dae5[_0x2f81f7(0x334)](_0x20dae5[_0x2f81f7(0x227)],_0x20dae5[_0x2f81f7(0x261)]))return{'id':this[_0x2f81f7(0x1d2)](_0x17928b,this[_0x2f81f7(0x135)]),'title':_0x17928b[_0x2f81f7(0x204)][_0x2f81f7(0x181)]()};else{if(_0x46773a[_0x2f81f7(0x2f4)](0x25*0xe5+0x1ef1*-0x1+-0x228,_0x2aefbb)&&_0x46773a[_0x2f81f7(0x1a5)](_0x583c4b,0x1*0x2351+-0x1d*-0x1f+0x3*-0xcdc))return _0x24ee9f[_0x313e26];}});}async[_0x59dab6(0x235)](_0x1dbd15){const _0x3ce439=_0x59dab6,_0xdddb28={'sqIiA':function(_0xceb98e,_0x22567f){return _0xceb98e>=_0x22567f;},'gYlgF':function(_0x388ac9,_0x5e5db3){return _0x388ac9<=_0x5e5db3;},'Yzgoe':function(_0x4db535,_0x523f2d){return _0x4db535+_0x523f2d;},'TJhHf':function(_0xd2d93d,_0x769018){return _0xd2d93d-_0x769018;},'lugxU':function(_0x3f5a7a,_0x1c965d){return _0x3f5a7a<=_0x1c965d;},'PLgoo':function(_0x8efad6,_0x56704e){return _0x8efad6<_0x56704e;},'jmxBL':_0x3ce439(0x21b),'UNuaD':function(_0x178583,_0x19d8fa){return _0x178583<_0x19d8fa;},'hVqHn':function(_0x192182,_0x249d39){return _0x192182<_0x249d39;},'VbFze':function(_0x5aec41,_0x4a01e2){return _0x5aec41>>_0x4a01e2;},'xhhFI':function(_0x43eb1c,_0x5137f4){return _0x43eb1c<<_0x5137f4;},'Vlosw':function(_0x4adbd3,_0x20f38b){return _0x4adbd3&_0x20f38b;},'krlEZ':function(_0x3c32dd,_0x2930af){return _0x3c32dd>_0x2930af;},'PEGkS':function(_0x1829c2,_0x49eb4a){return _0x1829c2+_0x49eb4a;},'khNqY':function(_0x14a618,_0x29cee1){return _0x14a618>_0x29cee1;},'GNbGB':function(_0xc68688,_0x16656c){return _0xc68688+_0x16656c;},'BwytC':function(_0x277fa1,_0x185ab6){return _0x277fa1>>_0x185ab6;},'XZrnj':function(_0x5c186f,_0x44b7c0){return _0x5c186f&_0x44b7c0;},'wtTWg':function(_0x3a48b0,_0x2b09c5){return _0x3a48b0+_0x2b09c5;},'xYoEl':function(_0x3f85a5,_0x5d96b1){return _0x3f85a5<_0x5d96b1;},'NXWUJ':function(_0x5152ff,_0x366c8b){return _0x5152ff==_0x366c8b;},'aGmMl':_0x3ce439(0x1e6),'oimpS':function(_0x369cd0,_0x4fecd9){return _0x369cd0<=_0x4fecd9;},'lNycm':function(_0x32789d,_0xc3542d){return _0x32789d<_0xc3542d;},'AKPer':function(_0x27a0ef,_0x37d6e9){return _0x27a0ef<<_0x37d6e9;},'GsWGW':function(_0x56d566,_0x5a635a){return _0x56d566&_0x5a635a;},'KoMuj':function(_0x34c245,_0xc80c09){return _0x34c245+_0xc80c09;},'pqubx':function(_0x21f1cc,_0x4befee){return _0x21f1cc<<_0x4befee;},'abMba':function(_0x29a669,_0x431d8f){return _0x29a669&_0x431d8f;},'jTMSr':function(_0x42e89b,_0x3a0d99){return _0x42e89b+_0x3a0d99;},'qKued':function(_0x173f70,_0x41abd5){return _0x173f70>_0x41abd5;},'EmhBh':function(_0x50d577,_0x3bbe63){return _0x50d577>>_0x3bbe63;},'IIIJY':function(_0x797ed6,_0x13ce81){return _0x797ed6+_0x13ce81;},'BeDJT':function(_0x282057,_0x18715d){return _0x282057+_0x18715d;},'RdAWK':function(_0x30595a,_0x2ce9fc){return _0x30595a<_0x2ce9fc;},'zzoPZ':function(_0x32091b,_0x566642){return _0x32091b==_0x566642;},'OyGkD':_0x3ce439(0x159),'TLUYV':function(_0xb465cd,_0x2513e4){return _0xb465cd(_0x2513e4);},'PMfyX':_0x3ce439(0x2ad),'GHlSd':function(_0x54afe6,_0x14b634){return _0x54afe6!==_0x14b634;},'IdgpP':_0x3ce439(0x2e8),'lMEnP':_0x3ce439(0x2e2),'WLCYH':function(_0x7c6ae9,_0x4eaab5){return _0x7c6ae9(_0x4eaab5);},'NaVED':_0x3ce439(0x314),'uPFdx':_0x3ce439(0x188),'cCsHz':function(_0x38969b,_0x48b049){return _0x38969b!==_0x48b049;},'vwKsp':_0x3ce439(0x295),'fiEvf':_0x3ce439(0x1f1),'VMgMc':_0x3ce439(0x24d),'bBMGA':_0x3ce439(0x296),'QySzd':_0x3ce439(0x308),'CksAJ':function(_0x4840c7,_0x3ffd90){return _0x4840c7+_0x3ffd90;},'pKHca':function(_0xb4f25d,_0x1b00eb){return _0xb4f25d+_0x1b00eb;},'irfGK':_0x3ce439(0x255),'EeWDO':function(_0x471d89,_0x44bedc){return _0x471d89!==_0x44bedc;},'WpLkM':_0x3ce439(0x289),'DVVzM':function(_0x5a7f95,_0x3b6cfa){return _0x5a7f95+_0x3b6cfa;},'jkjGm':function(_0x339b5a,_0x2c1b7f){return _0x339b5a+_0x2c1b7f;},'iXWoQ':function(_0x233bed,_0x4dde19){return _0x233bed+_0x4dde19;},'OdMZQ':_0x3ce439(0x198),'JhHLQ':_0x3ce439(0x2d2)};let _0x435f5d=new Request(_0xdddb28[_0x3ce439(0x2e3)](this[_0x3ce439(0x135)],_0x1dbd15['id']),this[_0x3ce439(0x245)]),_0x4afce1=await this[_0x3ce439(0x23f)](_0x435f5d),_0x34dc9f=this[_0x3ce439(0x258)](_0x4afce1[_0x3ce439(0x127)]),_0x23a627=_0x34dc9f[_0x3ce439(0x1bc)](_0xdddb28[_0x3ce439(0x17d)]);const _0x4323c0=_0x23a627[_0x3ce439(0x15b)]['id'];let _0x5e6e4b=_0xdddb28[_0x3ce439(0x2c6)](computeVRF,_0x4323c0);_0x435f5d=new Request(new URL(_0x3ce439(0x12d)+_0x4323c0+_0x3ce439(0x17b)+_0x5e6e4b,this[_0x3ce439(0x135)]),this[_0x3ce439(0x245)]),_0x4afce1=await this[_0x3ce439(0x23f)](_0x435f5d),_0x34dc9f=this[_0x3ce439(0x258)](_0x4afce1[_0x3ce439(0x127)]);const _0x44e8b0=[..._0x34dc9f[_0x3ce439(0x22f)](_0xdddb28[_0x3ce439(0x140)])],_0x5c0dc7=[];for(const _0x4968ef of _0x44e8b0){if(_0xdddb28[_0x3ce439(0x161)](_0xdddb28[_0x3ce439(0x1e2)],_0xdddb28[_0x3ce439(0x2f7)])){const _0x114704=_0x4968ef[_0x3ce439(0x15b)][_0x3ce439(0x180)];_0x5e6e4b=_0xdddb28[_0x3ce439(0x2d5)](computeVRF,_0x114704),_0x435f5d=new Request(new URL(_0x3ce439(0x19d)+_0x114704+_0x3ce439(0x17b)+_0x5e6e4b,this[_0x3ce439(0x135)]),this[_0x3ce439(0x245)]),_0x4afce1=await this[_0x3ce439(0x23f)](_0x435f5d),_0x34dc9f=this[_0x3ce439(0x258)](_0x4afce1[_0x3ce439(0x127)]);const _0x113607=[..._0x34dc9f[_0x3ce439(0x22f)](_0xdddb28[_0x3ce439(0x21f)])],_0x160178=[..._0x34dc9f[_0x3ce439(0x22f)](_0xdddb28[_0x3ce439(0x2b2)])];for(const _0x4423bd of _0x113607){if(_0xdddb28[_0x3ce439(0x157)](_0xdddb28[_0x3ce439(0x310)],_0xdddb28[_0x3ce439(0x310)])){const _0x338892={'dntbg':function(_0x65b630,_0x50e9e7){const _0x38d0d3=_0x3ce439;return _0xdddb28[_0x38d0d3(0x31d)](_0x65b630,_0x50e9e7);},'FJJqL':function(_0x914f8b,_0x595f3a){const _0x249bae=_0x3ce439;return _0xdddb28[_0x249bae(0x30b)](_0x914f8b,_0x595f3a);},'cxnsr':function(_0x52954e,_0x327545){const _0x27519d=_0x3ce439;return _0xdddb28[_0x27519d(0x286)](_0x52954e,_0x327545);},'UrYZK':function(_0x35c7e5,_0x1b0728){const _0x3741a6=_0x3ce439;return _0xdddb28[_0x3741a6(0x150)](_0x35c7e5,_0x1b0728);}};return _0x54e7fd[_0x3ce439(0x232)](/[a-zA-Z]/g,function(_0x5d77de){const _0x545e83=_0x3ce439;return _0x2b6adb[_0x545e83(0x275)](_0x338892[_0x545e83(0x125)](_0x338892[_0x545e83(0x31c)](_0x5d77de,'Z')?-0x3b*-0x1c+-0x13*0x16d+0x14fd:0x3af*0xa+0x1a2e+0x3e8a*-0x1,_0x5d77de=_0x338892[_0x545e83(0x1c9)](_0x5d77de[_0x545e83(0x124)](0xb*0x30e+0x1*0x103d+-0x3*0x109d),0x1d2d+0x94c+-0x99b*0x4))?_0x5d77de:_0x338892[_0x545e83(0x27d)](_0x5d77de,-0x75+-0x1f92+0x2021));});}else{const _0x2b85ff={};_0x2b85ff[_0x3ce439(0x2e5)]=_0x4423bd[_0x3ce439(0x15b)][_0xdddb28[_0x3ce439(0x190)]],_0x2b85ff[_0x3ce439(0x2a9)]=_0x4423bd[_0x3ce439(0x15b)][_0xdddb28[_0x3ce439(0x1e7)]],_0x2b85ff[_0x3ce439(0x2f6)]=_0xdddb28[_0x3ce439(0x2d0)],_0x2b85ff[_0x3ce439(0x1c8)]=_0x4423bd[_0x3ce439(0x15b)][_0xdddb28[_0x3ce439(0x333)]],_0x5c0dc7[_0x3ce439(0x20c)]({'id':JSON[_0x3ce439(0x202)](_0x2b85ff),'title':_0xdddb28[_0x3ce439(0x206)](_0xdddb28[_0x3ce439(0x246)](_0xdddb28[_0x3ce439(0x2f2)](_0xdddb28[_0x3ce439(0x32c)](_0x4968ef[_0x3ce439(0x15b)][_0x3ce439(0x121)],'\x20['),_0x4423bd[_0x3ce439(0x2da)][_0x3ce439(0x181)]()),']'),_0xdddb28[_0x3ce439(0x1a0)]),'language':_0xdddb28[_0x3ce439(0x2d0)]});}}for(const _0x469c1a of _0x160178){if(_0xdddb28[_0x3ce439(0x164)](_0xdddb28[_0x3ce439(0x1cd)],_0xdddb28[_0x3ce439(0x1cd)])){const _0x1a7e35={'ohqqJ':function(_0x474bea,_0x163112){const _0x24f939=_0x3ce439;return _0xdddb28[_0x24f939(0x138)](_0x474bea,_0x163112);},'RREzd':function(_0x237967,_0x334d25){const _0x3a694d=_0x3ce439;return _0xdddb28[_0x3a694d(0x128)](_0x237967,_0x334d25);}},_0x1593ab=_0xdddb28[_0x3ce439(0x22a)];for(_0x33987c=''[_0x3ce439(0x13b)](_0xae8883),_0x4fe9a6=-0x2129*0x1+0x1073*0x1+-0x45*-0x3e;_0xdddb28[_0x3ce439(0x128)](_0x4fe9a6,_0x1683c7[_0x3ce439(0x231)]);_0x4fe9a6++)if(_0xdddb28[_0x3ce439(0x12e)](-0x9*0x105+0xd5f+-0x333,_0x19910d[_0x3ce439(0x124)](_0x4fe9a6)))return null;for(var _0x5d4554='',_0x4fe9a6=0x5ae+0x2632+-0xd0*0x36;_0xdddb28[_0x3ce439(0x2f0)](_0x4fe9a6,_0x1a4be0[_0x3ce439(0x231)]);_0x4fe9a6+=-0xb6+0x15b3+-0x14fa){var _0x51bb17=[_0x22c359,_0x450066,_0x154743,_0x3829f4];_0x51bb17[-0x1*0x4d5+-0x1*0xd2d+-0x1cd*-0xa]=_0xdddb28[_0x3ce439(0x13e)](_0x513c94[_0x3ce439(0x124)](_0x4fe9a6),0x2*0xc7d+0x31*-0x35+0xa5*-0x17),_0x51bb17[-0xa3*0x1+-0x1*-0xe35+0xd91*-0x1]=_0xdddb28[_0x3ce439(0x2bb)](_0xdddb28[_0x3ce439(0x141)](-0x53*-0x39+0xd22+0x652*-0x5,_0x1c66cf[_0x3ce439(0x124)](_0x4fe9a6)),0x3*-0x49b+0x1d18+-0xf43*0x1),_0xdddb28[_0x3ce439(0x1ce)](_0x47ac9a[_0x3ce439(0x231)],_0xdddb28[_0x3ce439(0x286)](_0x4fe9a6,0x336*-0x3+-0xfa8+0x194b))&&(_0x51bb17[0x4b4*-0x8+0x1190+0x1*0x1411]|=_0xdddb28[_0x3ce439(0x13e)](_0x22e6d9[_0x3ce439(0x124)](_0xdddb28[_0x3ce439(0x2f2)](_0x4fe9a6,0x1*-0x210b+-0x9*-0x2af+0x8e5)),-0x2c*0x9e+-0x13cc+-0x8*-0x5df),_0x51bb17[-0x23f0+0x19a3*0x1+0xcb*0xd]=_0xdddb28[_0x3ce439(0x2bb)](_0xdddb28[_0x3ce439(0x141)](-0x262d+0x97+0x17*0x1a3,_0x371f5b[_0x3ce439(0x124)](_0xdddb28[_0x3ce439(0x2f2)](_0x4fe9a6,0x1*0x1791+0xa7a*-0x3+0x7de))),0x2ab*0x7+-0x152+-0x1159)),_0xdddb28[_0x3ce439(0x263)](_0x3af993[_0x3ce439(0x231)],_0xdddb28[_0x3ce439(0x244)](_0x4fe9a6,-0x2*-0x1271+0xc83*-0x1+-0x185d))&&(_0x51bb17[0xc0+0xd4*0x5+-0x4e2]|=_0xdddb28[_0x3ce439(0x2c7)](_0x401beb[_0x3ce439(0x124)](_0xdddb28[_0x3ce439(0x286)](_0x4fe9a6,-0xb*-0x24b+-0xba0+0x7*-0x1f1)),0xb88+-0x1d09+0x281*0x7),_0x51bb17[0x1a1d+-0x167*-0xd+-0xec7*0x3]=_0xdddb28[_0x3ce439(0x21d)](0x1b50+0x5de*0x1+0x20ef*-0x1,_0x14fe57[_0x3ce439(0x124)](_0xdddb28[_0x3ce439(0x323)](_0x4fe9a6,-0x2054+0xc2+0x1f94))));for(var _0x3b7636=-0x1e66+0xe62*-0x1+0x2cc8;_0xdddb28[_0x3ce439(0x186)](_0x3b7636,_0x51bb17[_0x3ce439(0x231)]);_0x3b7636++)_0x5d4554+=_0xdddb28[_0x3ce439(0x194)](_0xdddb28[_0x3ce439(0x249)],typeof _0x51bb17[_0x3b7636])?'=':function(_0x16e2c1){const _0x237a04=_0x3ce439;if(_0x1a7e35[_0x237a04(0x21a)](-0x11c+0x4*-0x6dc+0x1c8c,_0x16e2c1)&&_0x1a7e35[_0x237a04(0x13d)](_0x16e2c1,0x8f9*-0x3+0xa8c+0x109f))return _0x1593ab[_0x16e2c1];}(_0x51bb17[_0x3b7636]);}return _0x5d4554;}else{const _0x4c1da8={};_0x4c1da8[_0x3ce439(0x2e5)]=_0x469c1a[_0x3ce439(0x15b)][_0xdddb28[_0x3ce439(0x190)]],_0x4c1da8[_0x3ce439(0x2a9)]=_0x469c1a[_0x3ce439(0x15b)][_0xdddb28[_0x3ce439(0x1e7)]],_0x4c1da8[_0x3ce439(0x2f6)]=_0xdddb28[_0x3ce439(0x2d0)],_0x4c1da8[_0x3ce439(0x1c8)]=_0x469c1a[_0x3ce439(0x15b)][_0xdddb28[_0x3ce439(0x333)]],_0x5c0dc7[_0x3ce439(0x20c)]({'id':JSON[_0x3ce439(0x202)](_0x4c1da8),'title':_0xdddb28[_0x3ce439(0x2b3)](_0xdddb28[_0x3ce439(0x2b3)](_0xdddb28[_0x3ce439(0x319)](_0xdddb28[_0x3ce439(0x2ce)](_0x4968ef[_0x3ce439(0x15b)][_0x3ce439(0x121)],'\x20['),_0x469c1a[_0x3ce439(0x2da)][_0x3ce439(0x181)]()),']'),_0xdddb28[_0x3ce439(0x30f)]),'language':_0xdddb28[_0x3ce439(0x1cf)]});}}}else{const _0x5c59db={'ixDxG':function(_0x439c1c,_0x9cd90){const _0x52923d=_0x3ce439;return _0xdddb28[_0x52923d(0x280)](_0x439c1c,_0x9cd90);},'xkkuD':function(_0x423a6f,_0x26f1a6){const _0x122eef=_0x3ce439;return _0xdddb28[_0x122eef(0x242)](_0x423a6f,_0x26f1a6);}};var _0xda6fee=[_0x46dcdb,_0x21abfd,_0x5186b0,_0xd91539];_0xda6fee[0xe3c+0x1b*-0x63+-0x3cb]=_0xdddb28[_0x3ce439(0x2c7)](_0x57ba69[_0x3ce439(0x124)](_0x67c916),-0xcf6+0x1998+0x650*-0x2),_0xda6fee[0xe52+0x340+-0x1191]=_0xdddb28[_0x3ce439(0x257)](_0xdddb28[_0x3ce439(0x22b)](0x1e5c+-0x4eb+-0x196e*0x1,_0x13bc2b[_0x3ce439(0x124)](_0x388a1d)),0x1a89+-0x1*0x9ff+-0x1086),_0xdddb28[_0x3ce439(0x1ce)](_0x58f7c1[_0x3ce439(0x231)],_0xdddb28[_0x3ce439(0x29b)](_0x47aac8,0x1*-0x1bff+-0x1fec+-0x49c*-0xd))&&(_0xda6fee[0x1a34+-0x2342+0x90f]|=_0xdddb28[_0x3ce439(0x2c7)](_0xe8fca4[_0x3ce439(0x124)](_0xdddb28[_0x3ce439(0x2f2)](_0x327f9b,-0x2aa+-0x198c+0x1c37)),0x2513*0x1+0xb*0xb9+0x1681*-0x2),_0xda6fee[0x387+0x25dd+-0x2962]=_0xdddb28[_0x3ce439(0x300)](_0xdddb28[_0x3ce439(0x2cf)](0x7*-0x247+0x614*-0x6+0x3478,_0x47d799[_0x3ce439(0x124)](_0xdddb28[_0x3ce439(0x2e3)](_0x3874ae,-0x1*-0x1f60+-0x198+-0x21*0xe7))),0xf2+-0xe*-0x17b+-0x15aa)),_0xdddb28[_0x3ce439(0x2a7)](_0x16a619[_0x3ce439(0x231)],_0xdddb28[_0x3ce439(0x29b)](_0x16bf94,0x4*-0x556+-0xa3*0x13+-0x2173*-0x1))&&(_0xda6fee[0x1891+-0x1e79*0x1+0x5ea]|=_0xdddb28[_0x3ce439(0x1f6)](_0x59cb82[_0x3ce439(0x124)](_0xdddb28[_0x3ce439(0x1d4)](_0x4ed07d,0xb*-0xc1+0x1ca3+0xa2b*-0x2)),0xf*-0x5f+-0x2669+0x20*0x160),_0xda6fee[-0x6*-0x1d6+-0x1*0x1021+-0x10*-0x52]=_0xdddb28[_0x3ce439(0x2cf)](0x24fd+0x2426*-0x1+-0x26*0x4,_0x2f67d7[_0x3ce439(0x124)](_0xdddb28[_0x3ce439(0x206)](_0x525d03,-0x121*-0x15+0x262*-0x8+-0x4a3))));for(var _0x2af702=0xa4*-0x4+0x1f20+-0x1c90;_0xdddb28[_0x3ce439(0x18f)](_0x2af702,_0xda6fee[_0x3ce439(0x231)]);_0x2af702++)_0x59f7dc+=_0xdddb28[_0x3ce439(0x2bd)](_0xdddb28[_0x3ce439(0x249)],typeof _0xda6fee[_0x2af702])?'=':function(_0xeef9b8){const _0x368945=_0x3ce439;if(_0x5c59db[_0x368945(0x23e)](-0x130*0x5+0x1*-0x1a11+0x2001,_0xeef9b8)&&_0x5c59db[_0x368945(0x217)](_0xeef9b8,-0xd0f+-0x2501+0x3250))return _0x4b31bf[_0xeef9b8];}(_0xda6fee[_0x2af702]);}}return _0x5c0dc7;}async[_0x59dab6(0x28e)](_0x32f106){const _0x27948a=_0x59dab6,_0x1be828={'xOgKF':function(_0x43a5d1,_0x5ed521){return _0x43a5d1(_0x5ed521);},'nibKo':_0x27948a(0x146),'fwVpJ':_0x27948a(0x1e4),'YSmvk':_0x27948a(0x265),'zcauy':_0x27948a(0x283),'xZQPn':_0x27948a(0x329),'HlMit':_0x27948a(0x18b),'Nzcvf':_0x27948a(0x28a),'oTpuG':_0x27948a(0x262),'iwBUQ':_0x27948a(0x163),'zGjAZ':_0x27948a(0x2a5),'criuA':_0x27948a(0x1b7),'YsVUh':function(_0x4a63cb,_0xdd9a61){return _0x4a63cb+_0xdd9a61;},'pbwne':_0x27948a(0x284),'BSKyt':_0x27948a(0x205)},_0x836693=JSON[_0x27948a(0x2ca)](_0x32f106['id']),_0x517488=_0x1be828[_0x27948a(0x31e)](computeVRF,_0x836693[_0x27948a(0x1c8)]),_0x25e8c7=new Request(new URL(_0x27948a(0x247)+_0x836693[_0x27948a(0x1c8)]+_0x27948a(0x17b)+_0x517488,this[_0x27948a(0x135)]),this[_0x27948a(0x245)]),_0x193826=await this[_0x27948a(0x23f)](_0x25e8c7),_0x346a08=_0x1be828[_0x27948a(0x31e)](decryptURL,_0x193826[_0x27948a(0x127)][_0x27948a(0x135)]);switch(!![]){case _0x346a08[_0x27948a(0x120)](_0x1be828[_0x27948a(0x2a0)]):case _0x346a08[_0x27948a(0x120)](_0x1be828[_0x27948a(0x196)]):case _0x346a08[_0x27948a(0x120)](_0x1be828[_0x27948a(0x2a1)]):return this[_0x27948a(0x173)](_0x346a08,this[_0x27948a(0x135)],this[_0x27948a(0x1d5)][_0x27948a(0x1ff)][_0x27948a(0x1be)]);case _0x346a08[_0x27948a(0x120)](_0x1be828[_0x27948a(0x1b4)]):return this[_0x27948a(0x301)](_0x346a08,this[_0x27948a(0x135)],this[_0x27948a(0x1d5)][_0x27948a(0x1ff)][_0x27948a(0x1be)]);case _0x346a08[_0x27948a(0x120)](_0x1be828[_0x27948a(0x210)]):return this[_0x27948a(0x324)](_0x346a08,this[_0x27948a(0x1d5)][_0x27948a(0x1ff)][_0x27948a(0x1be)]);case _0x346a08[_0x27948a(0x120)](_0x1be828[_0x27948a(0x318)]):return this[_0x27948a(0x2d4)](_0x346a08,this[_0x27948a(0x1d5)][_0x27948a(0x1ff)][_0x27948a(0x1be)]);case _0x346a08[_0x27948a(0x120)](_0x1be828[_0x27948a(0x139)]):return this[_0x27948a(0x2fb)](_0x346a08,this[_0x27948a(0x135)],this[_0x27948a(0x1d5)][_0x27948a(0x1ff)][_0x27948a(0x1be)]);case _0x346a08[_0x27948a(0x120)](_0x1be828[_0x27948a(0x1ac)]):return this[_0x27948a(0x1e0)](_0x346a08,this[_0x27948a(0x135)],this[_0x27948a(0x1d5)][_0x27948a(0x1ff)][_0x27948a(0x1be)]);case _0x346a08[_0x27948a(0x120)](_0x1be828[_0x27948a(0x30c)]):return this[_0x27948a(0x1f0)](_0x346a08,this[_0x27948a(0x135)],this[_0x27948a(0x1d5)][_0x27948a(0x1ff)][_0x27948a(0x1be)]);case _0x346a08[_0x27948a(0x120)](_0x1be828[_0x27948a(0x21e)]):return this[_0x27948a(0x23b)](_0x346a08,this[_0x27948a(0x1d5)][_0x27948a(0x1ff)][_0x27948a(0x1be)]);case _0x346a08[_0x27948a(0x120)](_0x1be828[_0x27948a(0x1de)]):return this[_0x27948a(0x193)](_0x346a08,this[_0x27948a(0x1d5)][_0x27948a(0x1ff)][_0x27948a(0x1be)]);default:throw new Error(_0x1be828[_0x27948a(0x2ed)](_0x1be828[_0x27948a(0x2ed)](_0x1be828[_0x27948a(0x29c)],_0x346a08),_0x1be828[_0x27948a(0x1a4)]));}}async[_0x59dab6(0x173)](_0x38cf8e){const _0x1334e6=_0x59dab6,_0x1651f7={};_0x1651f7[_0x1334e6(0x1a7)]=_0x1334e6(0x17e);const _0x1c1f0b=_0x1651f7;let _0x151754=new FileMoon(_0x38cf8e),_0x534d5f=await _0x151754[_0x1334e6(0x32a)]();const _0x4b1aaa={};return _0x4b1aaa[_0x1334e6(0x18a)]=_0x1c1f0b[_0x1334e6(0x1a7)],_0x4b1aaa[_0x1334e6(0x24a)]=[_0x534d5f],_0x4b1aaa[_0x1334e6(0x18c)]=[],_0x4b1aaa;}async[_0x59dab6(0x301)](_0x2678d2,_0x3acf9c,_0x1ce081){const _0x5aec20=_0x59dab6,_0x303d25={'RQlVH':function(_0x1b4cf5,_0x2b9f99){return _0x1b4cf5(_0x2b9f99);},'GBSmg':_0x5aec20(0x17e)};let _0x640935=new PrettyFast(_0x2678d2,_0x3acf9c),_0x5f44b1=await _0x640935[_0x5aec20(0x32a)](_0x303d25[_0x5aec20(0x288)](parseInt,_0x1ce081));const _0x3c98dc={};return _0x3c98dc[_0x5aec20(0x18a)]=_0x303d25[_0x5aec20(0x1d8)],_0x3c98dc[_0x5aec20(0x24a)]=[_0x5f44b1],_0x3c98dc[_0x5aec20(0x18c)]=[],_0x3c98dc;}async[_0x59dab6(0x324)](_0x39b494,_0x362123){const _0x5da35e=_0x59dab6,_0x110fef={'qbzQT':function(_0x56d833,_0x40c45e){return _0x56d833(_0x40c45e);},'lcYyj':_0x5da35e(0x17e)};let _0x16e357=new HydraX(_0x39b494),_0xd1c5b7=await _0x16e357[_0x5da35e(0x32a)](_0x110fef[_0x5da35e(0x2cb)](parseInt,_0x362123));const _0x17c6b1={};return _0x17c6b1[_0x5da35e(0x18a)]=_0x110fef[_0x5da35e(0x171)],_0x17c6b1[_0x5da35e(0x24a)]=[_0xd1c5b7],_0x17c6b1[_0x5da35e(0x18c)]=[],_0x17c6b1;}[_0x59dab6(0x2d4)](_0x17fdb7,_0x52aa15){const _0x3da02f=_0x59dab6,_0x1df5ea={};_0x1df5ea[_0x3da02f(0x175)]=function(_0x17adab,_0x70583){return _0x17adab===_0x70583;},_0x1df5ea[_0x3da02f(0x123)]=_0x3da02f(0x162),_0x1df5ea[_0x3da02f(0x264)]=_0x3da02f(0x221),_0x1df5ea[_0x3da02f(0x226)]=_0x3da02f(0x228),_0x1df5ea[_0x3da02f(0x1a2)]=_0x3da02f(0x2af),_0x1df5ea[_0x3da02f(0x211)]=function(_0x51c183,_0x10c2ae){return _0x51c183+_0x10c2ae;},_0x1df5ea[_0x3da02f(0x1da)]=_0x3da02f(0x327),_0x1df5ea[_0x3da02f(0x15a)]=_0x3da02f(0x1ec);const _0x1fd87d=_0x1df5ea;let _0x80f920=new Request(_0x17fdb7,this[_0x3da02f(0x245)]);return _0x80f920[_0x3da02f(0x1a8)][_0x3da02f(0x322)](_0x1fd87d[_0x3da02f(0x1a2)],_0x1fd87d[_0x3da02f(0x211)]('q=',_0x52aa15)),_0x80f920[_0x3da02f(0x1a8)][_0x3da02f(0x322)](_0x1fd87d[_0x3da02f(0x1da)],this[_0x3da02f(0x135)]),this[_0x3da02f(0x27a)](_0x80f920,_0x1fd87d[_0x3da02f(0x15a)])[_0x3da02f(0x1b8)](_0x335729=>{const _0x383caa=_0x3da02f;if(_0x1fd87d[_0x383caa(0x175)](_0x1fd87d[_0x383caa(0x123)],_0x1fd87d[_0x383caa(0x264)]))throw new _0x34708d(_0x383caa(0x268)+_0x111511+'\x22!');else{if(!_0x335729[_0x383caa(0x231)]){if(_0x1fd87d[_0x383caa(0x175)](_0x1fd87d[_0x383caa(0x226)],_0x1fd87d[_0x383caa(0x226)]))throw new Error(_0x383caa(0x268)+_0x52aa15+'\x22!');else{const _0x3c5597={};return _0x3c5597[_0x383caa(0x11e)]=_0x378c13[_0x383caa(0x145)],_0x3c5597[_0x383caa(0x18c)]=[],_0x3c5597;}}const _0x1dc305={};return _0x1dc305[_0x383caa(0x11e)]=_0x335729[0xd72*-0x1+0x1*-0x322+0x1094][_0x383caa(0x19b)],_0x1dc305[_0x383caa(0x18c)]=[],Promise[_0x383caa(0x12c)](_0x1dc305);}});}async[_0x59dab6(0x2fb)](_0x320342,_0x174de0,_0x23b91b){const _0x471bba=_0x59dab6,_0x3566a1={'wrSNr':_0x471bba(0x14b)+_0x471bba(0x12f),'Ximtf':_0x471bba(0x1f1),'rECNQ':_0x471bba(0x24d),'AWdPD':_0x471bba(0x296),'ULvbY':_0x471bba(0x308),'lJKpP':function(_0x16f667,_0x12de59){return _0x16f667+_0x12de59;},'NfkGz':function(_0x3f5fb3,_0x3d9b59){return _0x3f5fb3+_0x3d9b59;},'ycIow':function(_0x3e934a,_0x490e98){return _0x3e934a+_0x490e98;},'bkNGY':_0x471bba(0x255),'RHvUw':function(_0x5c6366,_0x29fe0c){return _0x5c6366(_0x29fe0c);},'vVyeD':function(_0x1453ed,_0x156a59){return _0x1453ed!==_0x156a59;},'GqNxF':_0x471bba(0x191),'VtEMO':function(_0x5d4edf,_0x54f132){return _0x5d4edf===_0x54f132;},'TwFdd':_0x471bba(0x336),'KyVNp':_0x471bba(0x17e),'caYKs':_0x471bba(0x1e5)};let _0x2ec62e=new MyCloud(_0x320342,_0x174de0,this[_0x471bba(0x2ae)][_0x471bba(0x2b0)](this)),_0x35284b=await _0x2ec62e[_0x471bba(0x269)](_0x3566a1[_0x471bba(0x267)](parseInt,_0x23b91b));if(_0x35284b[_0x471bba(0x145)]){if(_0x3566a1[_0x471bba(0x303)](_0x3566a1[_0x471bba(0x331)],_0x3566a1[_0x471bba(0x331)]))throw new _0x51221f(_0x3566a1[_0x471bba(0x2f5)]);else{const _0x3d1be8={};return _0x3d1be8[_0x471bba(0x11e)]=_0x35284b[_0x471bba(0x145)],_0x3d1be8[_0x471bba(0x18c)]=[],_0x3d1be8;}}if(_0x35284b[_0x471bba(0x2c9)]){if(_0x3566a1[_0x471bba(0x294)](_0x3566a1[_0x471bba(0x266)],_0x3566a1[_0x471bba(0x266)])){const _0x29f74a={};return _0x29f74a[_0x471bba(0x18a)]=_0x3566a1[_0x471bba(0x29e)],_0x29f74a[_0x471bba(0x24a)]=[_0x35284b[_0x471bba(0x2c9)]],_0x29f74a[_0x471bba(0x18c)]=[],_0x29f74a;}else{const _0x287ccb={};_0x287ccb[_0x471bba(0x2e5)]=_0x100f82[_0x471bba(0x15b)][_0x3566a1[_0x471bba(0x2ef)]],_0x287ccb[_0x471bba(0x2a9)]=_0x315f83[_0x471bba(0x15b)][_0x3566a1[_0x471bba(0x133)]],_0x287ccb[_0x471bba(0x2f6)]=_0x3566a1[_0x471bba(0x160)],_0x287ccb[_0x471bba(0x1c8)]=_0x39663f[_0x471bba(0x15b)][_0x3566a1[_0x471bba(0x234)]],_0x6a650d[_0x471bba(0x20c)]({'id':_0x3e11c9[_0x471bba(0x202)](_0x287ccb),'title':_0x3566a1[_0x471bba(0x27e)](_0x3566a1[_0x471bba(0x27e)](_0x3566a1[_0x471bba(0x172)](_0x3566a1[_0x471bba(0x311)](_0x294bbd[_0x471bba(0x15b)][_0x471bba(0x121)],'\x20['),_0x2e4c47[_0x471bba(0x2da)][_0x471bba(0x181)]()),']'),_0x3566a1[_0x471bba(0x16c)]),'language':_0x3566a1[_0x471bba(0x160)]});}}throw new Error(_0x3566a1[_0x471bba(0x1cb)]);}async[_0x59dab6(0x1e0)](_0x252675,_0xb10a4,_0x406a00){const _0x4c1df8=_0x59dab6,_0x112df0={'vAkAb':function(_0x234acd,_0x4925a3){return _0x234acd(_0x4925a3);},'LNUNY':function(_0x1c5621,_0xf52f3a){return _0x1c5621(_0xf52f3a);},'BSUlT':function(_0x572e3b,_0x4e4048){return _0x572e3b!==_0x4e4048;},'gqmhs':_0x4c1df8(0x2be),'zcZYi':function(_0x115b16,_0x5b3f27){return _0x115b16===_0x5b3f27;},'UjCPW':_0x4c1df8(0x2f9),'KLZRB':_0x4c1df8(0x17e),'iDvpf':_0x4c1df8(0x1e5)};let _0x5b965b=new Vidstream(_0x252675,_0xb10a4,this[_0x4c1df8(0x2ae)][_0x4c1df8(0x2b0)](this)),_0x5b9ebc=await _0x5b965b[_0x4c1df8(0x269)](_0x112df0[_0x4c1df8(0x20d)](parseInt,_0x406a00));if(_0x5b9ebc[_0x4c1df8(0x145)]){if(_0x112df0[_0x4c1df8(0x252)](_0x112df0[_0x4c1df8(0x29d)],_0x112df0[_0x4c1df8(0x29d)])){if(!_0x5aae55[_0x4c1df8(0x231)])throw new _0x4509a4(_0x4c1df8(0x268)+_0x443211+'\x22!');const _0x1afb85={};return _0x1afb85[_0x4c1df8(0x11e)]=_0x4f9fbd[0x12dd+0x1e88+-0x3165][_0x4c1df8(0x19b)],_0x1afb85[_0x4c1df8(0x18c)]=[],_0x5543fd[_0x4c1df8(0x12c)](_0x1afb85);}else{const _0x21f8fc={};return _0x21f8fc[_0x4c1df8(0x11e)]=_0x5b9ebc[_0x4c1df8(0x145)],_0x21f8fc[_0x4c1df8(0x18c)]=[],_0x21f8fc;}}if(_0x5b9ebc[_0x4c1df8(0x2c9)]){if(_0x112df0[_0x4c1df8(0x1bd)](_0x112df0[_0x4c1df8(0x2a2)],_0x112df0[_0x4c1df8(0x2a2)])){const _0x22697b={};return _0x22697b[_0x4c1df8(0x18a)]=_0x112df0[_0x4c1df8(0x31b)],_0x22697b[_0x4c1df8(0x24a)]=[_0x5b9ebc[_0x4c1df8(0x2c9)]],_0x22697b[_0x4c1df8(0x18c)]=[],_0x22697b;}else return''[_0x4c1df8(0x13b)](_0x112df0[_0x4c1df8(0x1f5)](_0x2a55e7,_0x4b8419))[_0x4c1df8(0x232)](/\//g,'_')[_0x4c1df8(0x232)](/\+/g,'-');}throw new Error(_0x112df0[_0x4c1df8(0x306)]);}async[_0x59dab6(0x1f0)](_0x1282c7,_0x491338){const _0x2a2cd1=_0x59dab6;return{'video':await new MP4Upload(_0x1282c7)[_0x2a2cd1(0x1f3)](),'subtitles':[],'referer':_0x491338};}async[_0x59dab6(0x23b)](_0x410211){const _0x40b3c8=_0x59dab6;return{'video':await new Streamtape(_0x410211)[_0x40b3c8(0x1f3)](),'subtitles':[]};}async[_0x59dab6(0x193)](_0x55b811){const _0x2c4403=_0x59dab6;return{'video':await new VideoVard(_0x55b811)[_0x2c4403(0x1f3)](),'subtitles':[]};}}function computeVRF(_0x1dffab){const _0x1c8221=_0x59dab6,_0x41d27a={'eyvjG':function(_0x25b770,_0x55ef8f){return _0x25b770==_0x55ef8f;},'nuAFe':function(_0x541e44,_0x5a0ab3){return _0x541e44%_0x5a0ab3;},'KNNXP':function(_0x218202,_0x6c67f7){return _0x218202<_0x6c67f7;},'auIGa':function(_0x27537e,_0x3b3cf5){return _0x27537e|_0x3b3cf5;},'eCPkY':function(_0x5a69c4,_0x531229){return _0x5a69c4<_0x531229;},'aBSPM':_0x1c8221(0x21b),'QvSbS':function(_0x453a47,_0x3ce75a){return _0x453a47===_0x3ce75a;},'IZsMy':function(_0x369a63,_0x13ace8){return _0x369a63+_0x13ace8;},'aNiOC':function(_0x3a7da3,_0xd3c054){return _0x3a7da3>>_0xd3c054;},'fbbGg':function(_0x13a9e7,_0x5709ea){return _0x13a9e7&_0x5709ea;},'maJJH':function(_0x5883ca,_0xb5db3f){return _0x5883ca>>_0xb5db3f;},'bnWLu':function(_0x248e73,_0xed79ac){return _0x248e73&_0xed79ac;},'gqTJa':function(_0xa2e9fc,_0x46890f){return _0xa2e9fc===_0x46890f;},'RXRtL':_0x1c8221(0x144),'HlVtA':_0x1c8221(0x2de),'mzabY':function(_0x470faa,_0x30d017){return _0x470faa(_0x30d017);},'KoXeZ':function(_0x54748e,_0x332701){return _0x54748e(_0x332701);},'iBLEL':function(_0x289926,_0x19c45a){return _0x289926<_0x19c45a;},'AxkvP':function(_0xe26c6c,_0x570362){return _0xe26c6c!==_0x570362;},'Mecln':_0x1c8221(0x178),'dGmIo':_0x1c8221(0x19f),'HyhiI':function(_0x39ff2e,_0x4f60ad){return _0x39ff2e==_0x4f60ad;},'TZpXd':function(_0x422a37,_0x34f818){return _0x422a37%_0x34f818;},'TESdh':function(_0x5383ba,_0x207dc5){return _0x5383ba==_0x207dc5;},'fksRZ':function(_0xe11be3,_0x31193f){return _0xe11be3%_0x31193f;},'sjUcB':function(_0x318597,_0x21754f){return _0x318597==_0x21754f;},'knNUw':function(_0x19dcfd,_0x3f4399){return _0x19dcfd%_0x3f4399;},'EWICd':function(_0x5f11c0,_0x37a57d){return _0x5f11c0(_0x37a57d);},'gXJDU':function(_0x485782,_0x386d24){return _0x485782(_0x386d24);},'neSZU':function(_0x28bf1e,_0xee6458,_0x176ea6){return _0x28bf1e(_0xee6458,_0x176ea6);},'rJKXQ':_0x1c8221(0x2c4)};return _0x1dffab=_0x41d27a[_0x1c8221(0x241)](encodeURIComponent,''[_0x1c8221(0x13b)](_0x1dffab)),function(_0x4e8b06){const _0x4d5d1b=_0x1c8221,_0x50f7e9={'MDUZw':function(_0x14eb18,_0x536f83){const _0x788815=_0x377b;return _0x41d27a[_0x788815(0x1fc)](_0x14eb18,_0x536f83);},'cekLT':function(_0x5d9720,_0x204f6f){const _0x204e26=_0x377b;return _0x41d27a[_0x204e26(0x256)](_0x5d9720,_0x204f6f);},'DYWbE':function(_0x2d56fd,_0x312bf7){const _0x1f655e=_0x377b;return _0x41d27a[_0x1f655e(0x199)](_0x2d56fd,_0x312bf7);},'rLLfK':function(_0xe889a8,_0x488d47){const _0x24a443=_0x377b;return _0x41d27a[_0x24a443(0x25e)](_0xe889a8,_0x488d47);},'bptdX':function(_0x3102a3,_0x121bfb){const _0x3db1d3=_0x377b;return _0x41d27a[_0x3db1d3(0x2cd)](_0x3102a3,_0x121bfb);},'dfqVf':_0x41d27a[_0x4d5d1b(0x1b0)],'IcXPm':function(_0x38d114,_0x5a3356){const _0x4ba76d=_0x4d5d1b;return _0x41d27a[_0x4ba76d(0x1c5)](_0x38d114,_0x5a3356);},'lKiQV':function(_0x4c438c,_0x3ec1f9){const _0x58bfb6=_0x4d5d1b;return _0x41d27a[_0x58bfb6(0x12a)](_0x4c438c,_0x3ec1f9);},'lYBhG':function(_0x40d5f4,_0x477464){const _0x58a19f=_0x4d5d1b;return _0x41d27a[_0x58a19f(0x12a)](_0x40d5f4,_0x477464);},'lnpVc':function(_0x5e1224,_0x365a57){const _0x5b429c=_0x4d5d1b;return _0x41d27a[_0x5b429c(0x208)](_0x5e1224,_0x365a57);},'pDnpR':function(_0x58ebf1,_0x1ea5e3){const _0x4d9762=_0x4d5d1b;return _0x41d27a[_0x4d9762(0x129)](_0x58ebf1,_0x1ea5e3);},'ZyVlx':function(_0xb9e6ad,_0x35b116){const _0x257d02=_0x4d5d1b;return _0x41d27a[_0x257d02(0x179)](_0xb9e6ad,_0x35b116);},'dFRyC':function(_0x129efc,_0x2c188e){const _0x326011=_0x4d5d1b;return _0x41d27a[_0x326011(0x1c5)](_0x129efc,_0x2c188e);},'eQaKg':function(_0x2dc848,_0x359da0){const _0x2bab09=_0x4d5d1b;return _0x41d27a[_0x2bab09(0x1c5)](_0x2dc848,_0x359da0);},'yFnrj':function(_0x42222a,_0x11e197){const _0x21d038=_0x4d5d1b;return _0x41d27a[_0x21d038(0x12a)](_0x42222a,_0x11e197);},'eHLNW':function(_0x278635,_0x5ee687){const _0x3819e4=_0x4d5d1b;return _0x41d27a[_0x3819e4(0x273)](_0x278635,_0x5ee687);}};if(_0x41d27a[_0x4d5d1b(0x2fc)](_0x41d27a[_0x4d5d1b(0x251)],_0x41d27a[_0x4d5d1b(0x209)])){if(_0x50f7e9[_0x4d5d1b(0x2c0)](_0x50f7e9[_0x4d5d1b(0x1d7)]((_0x5cf2e2=_0x50f7e9[_0x4d5d1b(0x2c0)](_0x50f7e9[_0x4d5d1b(0x1d7)]((_0x8cd58a=(_0x19ec8e=''[_0x4d5d1b(0x13b)](_0x4b07c2))[_0x4d5d1b(0x232)](/[\t\n\f\r]/g,''))[_0x4d5d1b(0x231)],-0xb73+0xc3+0xab4),0x8ea+-0x16a0+0xdb6)?_0x16f720[_0x4d5d1b(0x232)](/==?$/,''):_0x249d33)[_0x4d5d1b(0x231)],0x1*0x2519+-0x1732+-0xde3),-0x1ace+0x1a2e*-0x1+0x34fd)||/[^+/0-9A-Za-z]/[_0x4d5d1b(0x320)](_0x5b3323))return null;for(var _0x3d21e1,_0x3e6756='',_0x23166d=-0x2647+0x21*-0x55+0x313c,_0x2af41f=-0x8c*0x25+0x3*-0x3f9+0x1*0x2027,_0x3a8e2f=0x18d*0x9+0x2465+-0x325a;_0x50f7e9[_0x4d5d1b(0x17f)](_0x3a8e2f,_0x6661d7[_0x4d5d1b(0x231)]);_0x3a8e2f++)_0x23166d=_0x50f7e9[_0x4d5d1b(0x185)](_0x23166d<<=0xa*0x116+-0x1264+-0x1*-0x78e,(_0x3d21e1=_0x1468e4[_0x3a8e2f],_0x50f7e9[_0x4d5d1b(0x2ff)](_0x3d21e1=_0x50f7e9[_0x4d5d1b(0x18e)][_0x4d5d1b(0x1f4)](_0x3d21e1),0x2ff+0x28*-0xd4+0x1e21)?_0x532f3c:_0x3d21e1)),_0x50f7e9[_0x4d5d1b(0x1d6)](0x21df+-0x2512+0x34b,_0x2af41f+=0x823*-0x2+0x3e*-0x1d+0x1752)&&(_0x3e6756=_0x50f7e9[_0x4d5d1b(0x2e7)](_0x3e6756=_0x50f7e9[_0x4d5d1b(0x14a)](_0x3e6756+=_0x398715[_0x4d5d1b(0x275)](_0x50f7e9[_0x4d5d1b(0x1ed)](_0x50f7e9[_0x4d5d1b(0x170)](0x5c1a33*0x1+0x1cd577d*-0x1+-0x680a37*-0x6,_0x23166d),-0x2b3+0xfc6+-0xd03*0x1)),_0x44f3e4[_0x4d5d1b(0x275)](_0x50f7e9[_0x4d5d1b(0x182)](_0x50f7e9[_0x4d5d1b(0x170)](-0x1*-0x1d1d+0x1f916*0x1+-0x11733*0x1,_0x23166d),-0x1df3+-0x1dba*0x1+-0x13e7*-0x3))),_0x14d68b[_0x4d5d1b(0x275)](_0x50f7e9[_0x4d5d1b(0x170)](0x1ac*-0xb+-0x1*0x22d+0x1590,_0x23166d))),_0x23166d=_0x2af41f=-0x350*-0x6+0x1189*0x2+-0x2*0x1b79);return _0x50f7e9[_0x4d5d1b(0x332)](-0x1*-0xc0b+-0x1ec0+0x12c1,_0x2af41f)?(_0x23166d>>=0x17e*-0x1+-0x2*-0x2a2+-0x1*0x3c2,_0x3e6756+=_0x4dd23c[_0x4d5d1b(0x275)](_0x23166d)):_0x50f7e9[_0x4d5d1b(0x29a)](-0x487+-0x1*0xc89+0x1122,_0x2af41f)&&(_0x23166d>>=-0x2415+0xce2*-0x1+0x30f9,_0x3e6756=_0x50f7e9[_0x4d5d1b(0x291)](_0x3e6756+=_0x337e86[_0x4d5d1b(0x275)](_0x50f7e9[_0x4d5d1b(0x182)](_0x50f7e9[_0x4d5d1b(0x170)](-0xb3ab+0x1*0x19067+-0x4*-0x891,_0x23166d),-0xc86+0x702*0x2+-0x176)),_0xc26834[_0x4d5d1b(0x275)](_0x50f7e9[_0x4d5d1b(0x316)](-0x201d+-0x1f49+-0x4065*-0x1,_0x23166d)))),_0x3e6756;}else{for(var _0x31f6c9=-0x1214*-0x1+0x1f85*-0x1+0x1*0xd79,_0x121d03=(_0x4e8b06=_0x41d27a[_0x4d5d1b(0x142)](W,_0x4e8b06),_0x4e8b06=_0x41d27a[_0x4d5d1b(0x142)](v,_0x4e8b06=_0x41d27a[_0x4d5d1b(0x1d9)](W,_0x4e8b06)),''),_0x1620c5=0x1*0x13ed+-0x889+-0xb64;_0x41d27a[_0x4d5d1b(0x277)](_0x1620c5,_0x4e8b06[_0x4d5d1b(0x231)]);_0x1620c5++){if(_0x41d27a[_0x4d5d1b(0x237)](_0x41d27a[_0x4d5d1b(0x298)],_0x41d27a[_0x4d5d1b(0x122)])){var _0x5affbd=_0x4e8b06[_0x4d5d1b(0x124)](_0x1620c5);_0x41d27a[_0x4d5d1b(0x1fc)](_0x41d27a[_0x4d5d1b(0x256)](_0x1620c5,-0x1bef+0x46d*-0x4+-0x2dab*-0x1),0x16fb+0x9d8+-0x2*0x1066)?_0x5affbd+=0x257*-0x5+-0xcc6+0x187f:_0x41d27a[_0x4d5d1b(0x1e3)](_0x41d27a[_0x4d5d1b(0x256)](_0x1620c5,-0x42d+-0x961+0xd96),-0x1fac*0x1+-0x44*-0x71+0x1ad)?_0x5affbd-=-0x22fd*0x1+-0x16f8+0x39f8:_0x41d27a[_0x4d5d1b(0x1e3)](_0x41d27a[_0x4d5d1b(0x2db)](_0x1620c5,0x221f+-0x515*-0x3+0x1072*-0x3),-0x16c2+0x1*0x2065+0x134*-0x8)?_0x5affbd+=-0x1bf3+-0xdbb+-0x29b4*-0x1:_0x41d27a[_0x4d5d1b(0x27c)](_0x41d27a[_0x4d5d1b(0x256)](_0x1620c5,-0x173a+0xfa+0x17*0xf8),-0x1*0x137+0x20c*-0x10+0x3*0xb53)?_0x5affbd-=-0x6*0x1fd+0x209*-0xd+-0x1*-0x2668:_0x41d27a[_0x4d5d1b(0x1fc)](_0x41d27a[_0x4d5d1b(0x2ba)](_0x1620c5,0x1439+-0x3*0x44+-0x1365),0x1*-0xb+0x1*0xe4f+0xe3e*-0x1)?_0x5affbd+=-0x196e+-0x24be+0x1*0x3e2f:_0x41d27a[_0x4d5d1b(0x136)](_0x41d27a[_0x4d5d1b(0x214)](_0x1620c5,0x1169*-0x2+-0x80+0x235a),0x8b1+0x19c+-0x9*0x125)?_0x5affbd-=0xf40+0x6*0x2c3+0x1*-0x1fd0:_0x41d27a[_0x4d5d1b(0x1e3)](_0x41d27a[_0x4d5d1b(0x2ba)](_0x1620c5,-0x1*0x11c3+-0x21e0+0x33ab),0x13bf+-0x136c+-0x4f)?_0x5affbd+=-0xec*-0x4+-0x8fb+0x54d:_0x41d27a[_0x4d5d1b(0x1e3)](_0x41d27a[_0x4d5d1b(0x2db)](_0x1620c5,0x1085+0xce7+0x2ac*-0xb),-0x1eab*0x1+-0x71f+0x433*0x9)&&(_0x5affbd-=-0x190f+0x100b+0x4*0x242),_0x121d03+=String[_0x4d5d1b(0x275)](_0x5affbd);}else{const _0x5d5605=_0x307259?function(){const _0x39f68d=_0x4d5d1b;if(_0x583989){const _0x2e021b=_0x4ce3e5[_0x39f68d(0x126)](_0x20d9e2,arguments);return _0x259db8=null,_0x2e021b;}}:function(){};return _0x3b1253=![],_0x5d5605;}}return _0x121d03=_0x41d27a[_0x4d5d1b(0x337)](v,_0x121d03=_0x121d03[_0x4d5d1b(0x335)]('')[_0x4d5d1b(0x23c)]()[_0x4d5d1b(0x279)](''));}}(_0x41d27a[_0x1c8221(0x337)](v,_0x41d27a[_0x1c8221(0x1db)](O,_0x41d27a[_0x1c8221(0x313)],_0x1dffab)));}function v(_0x3cbc68){const _0x48d618=_0x59dab6,_0xd17727={'ruBsT':function(_0x94bcf8,_0x3f66ba){return _0x94bcf8(_0x3f66ba);}};return''[_0x48d618(0x13b)](_0xd17727[_0x48d618(0x2d1)](i,_0x3cbc68))[_0x48d618(0x232)](/\//g,'_')[_0x48d618(0x232)](/\+/g,'-');}function W(_0x591a39){const _0x34058f=_0x59dab6,_0x189944={'fSmZj':function(_0x2b7d58,_0x164967){return _0x2b7d58(_0x164967);},'SdEIY':function(_0x3cdee8,_0x1fac53){return _0x3cdee8(_0x1fac53);},'zxtwF':function(_0x1b523f,_0x391e30){return _0x1b523f<_0x391e30;},'GthaX':function(_0x31d172,_0xd1ff8e){return _0x31d172==_0xd1ff8e;},'zKXWg':function(_0x4daa7,_0x4c6d14){return _0x4daa7%_0x4c6d14;},'BmOiL':function(_0x21260c,_0x114971){return _0x21260c==_0x114971;},'Sftjc':function(_0x4a54d0,_0x54c946){return _0x4a54d0==_0x54c946;},'DUKaW':function(_0x76ca45,_0x3ccb40){return _0x76ca45%_0x3ccb40;},'SmCxO':function(_0x5205dd,_0x4a76a3){return _0x5205dd==_0x4a76a3;},'HfbUv':function(_0x17872b,_0x553e37){return _0x17872b%_0x553e37;},'HVJyX':function(_0x477213,_0x40193a){return _0x477213==_0x40193a;},'vJbNL':function(_0x14b363,_0x1b661f){return _0x14b363==_0x1b661f;},'YjAZc':function(_0x12869a,_0x52b4f0){return _0x12869a==_0x52b4f0;},'kTLPd':function(_0x2613cd,_0x20d587){return _0x2613cd%_0x20d587;},'qovPK':function(_0x413714,_0x3d489f){return _0x413714==_0x3d489f;},'pAfgl':function(_0x2e4aea,_0x16d41b){return _0x2e4aea!==_0x16d41b;},'aTKqI':_0x34058f(0x250),'kVblJ':_0x34058f(0x2f1),'lXRuq':function(_0x4ff1ec,_0x4e9130){return _0x4ff1ec>=_0x4e9130;},'QKkLa':function(_0x4a06f9,_0x261e3a){return _0x4a06f9<=_0x261e3a;},'ComHJ':function(_0xe48f08,_0x260e7f){return _0xe48f08+_0x260e7f;},'IkNLD':function(_0x367089,_0x44cb86){return _0x367089-_0x44cb86;}};return _0x591a39[_0x34058f(0x232)](/[a-zA-Z]/g,function(_0x579014){const _0x3176fc=_0x34058f;if(_0x189944[_0x3176fc(0x15e)](_0x189944[_0x3176fc(0x1fb)],_0x189944[_0x3176fc(0x20a)]))return String[_0x3176fc(0x275)](_0x189944[_0x3176fc(0x201)](_0x189944[_0x3176fc(0x292)](_0x579014,'Z')?0x15ca+0x24ce+-0x3a3e:-0x44*0x56+0xbc*0x2+0x15da,_0x579014=_0x189944[_0x3176fc(0x281)](_0x579014[_0x3176fc(0x124)](0x8dc+0x44*-0x33+0x4b0),-0x1*0x1ee6+0x1dd5*0x1+-0xd*-0x16))?_0x579014:_0x189944[_0x3176fc(0x132)](_0x579014,0x1b1a*0x1+-0x1b52+0x52));else{for(var _0x3aba97=-0x117*-0x3+0x250f*-0x1+-0x27*-0xde,_0x31fe3d=(_0x34fd2a=_0x189944[_0x3176fc(0x225)](_0x47f33c,_0x2d2183),_0x1b2f05=_0x189944[_0x3176fc(0x23a)](_0x23df7a,_0x4505ea=_0x189944[_0x3176fc(0x23a)](_0x1a197b,_0x21d26b)),''),_0x100b5d=-0x1605*0x1+-0x75*0x27+0x27d8;_0x189944[_0x3176fc(0x2a4)](_0x100b5d,_0x210980[_0x3176fc(0x231)]);_0x100b5d++){var _0x51e2e6=_0x23ee43[_0x3176fc(0x124)](_0x100b5d);_0x189944[_0x3176fc(0x285)](_0x189944[_0x3176fc(0x2a8)](_0x100b5d,0x9fc+-0x9d9*-0x1+0x1*-0x13cd),-0x1520+-0x1*-0x167d+0x1*-0x156)?_0x51e2e6+=-0x2209+-0x1afb*-0x1+0xc*0x97:_0x189944[_0x3176fc(0x224)](_0x189944[_0x3176fc(0x2a8)](_0x100b5d,0x1b1+-0x1501+0x9ac*0x2),-0x70c+-0xc7*0x1f+0x2*0xf95)?_0x51e2e6-=0x1*-0x1804+-0x1803+0x300a:_0x189944[_0x3176fc(0x26c)](_0x189944[_0x3176fc(0x203)](_0x100b5d,0x1b32+-0x3bc+-0x176e),0x148+0x14*-0x146+0x1833*0x1)?_0x51e2e6+=-0x73c+-0xf40+-0x86*-0x2b:_0x189944[_0x3176fc(0x189)](_0x189944[_0x3176fc(0x239)](_0x100b5d,0x159+0x24af*0x1+0x4*-0x980),-0x1*0x1d63+0xd*-0x281+0x3df2)?_0x51e2e6-=0x2117+0x2*0x321+-0x347*0xc:_0x189944[_0x3176fc(0x2eb)](_0x189944[_0x3176fc(0x203)](_0x100b5d,0x940+-0x599*-0x5+0xf*-0x27b),0x1*-0x1ed7+0x1*0x1579+-0x259*-0x4)?_0x51e2e6+=0x1ac4+0x132+-0x1bf3:_0x189944[_0x3176fc(0x134)](_0x189944[_0x3176fc(0x203)](_0x100b5d,-0x1bcc+-0x1474+0x406*0xc),0x158+0x2067+0x21bf*-0x1)?_0x51e2e6-=0x306+-0x8bc+-0xb7*-0x8:_0x189944[_0x3176fc(0x197)](_0x189944[_0x3176fc(0x20e)](_0x100b5d,-0x11cd+-0x2269+-0x6*-0x8b5),0x1b98+-0x2000+-0x11b*-0x4)?_0x51e2e6+=-0x2205*-0x1+0x856*-0x1+0x19ad*-0x1:_0x189944[_0x3176fc(0x1bb)](_0x189944[_0x3176fc(0x203)](_0x100b5d,-0x2038+0xf17+0x1129*0x1),-0x1*0x26cb+0x2fe+-0x23ce*-0x1)&&(_0x51e2e6-=0x2eb*-0xd+-0x22*0x8b+0x3869),_0x31fe3d+=_0x5b7630[_0x3176fc(0x275)](_0x51e2e6);}return _0x31fe3d=_0x189944[_0x3176fc(0x23a)](_0x1359e6,_0x31fe3d=_0x31fe3d[_0x3176fc(0x335)]('')[_0x3176fc(0x23c)]()[_0x3176fc(0x279)](''));}});}function O(_0x596826,_0x3864ae){const _0x1b0941=_0x59dab6,_0x3ffbd0={};_0x3ffbd0[_0x1b0941(0x152)]=function(_0x391886,_0xf187bc){return _0x391886<_0xf187bc;},_0x3ffbd0[_0x1b0941(0x2c1)]=function(_0x524ffe,_0x1cd560){return _0x524ffe<_0x1cd560;},_0x3ffbd0[_0x1b0941(0x1b1)]=function(_0x32b214,_0x1191e8){return _0x32b214%_0x1191e8;},_0x3ffbd0[_0x1b0941(0x31a)]=function(_0x1c5235,_0x2de527){return _0x1c5235+_0x2de527;},_0x3ffbd0[_0x1b0941(0x14c)]=function(_0x287357,_0x33d850){return _0x287357+_0x33d850;},_0x3ffbd0[_0x1b0941(0x2d8)]=function(_0x33c34b,_0x161169){return _0x33c34b%_0x161169;},_0x3ffbd0[_0x1b0941(0x2d7)]=function(_0x18c28d,_0x3c2cd1){return _0x18c28d<_0x3c2cd1;},_0x3ffbd0[_0x1b0941(0x15d)]=function(_0x5dadf3,_0x8c8acf){return _0x5dadf3%_0x8c8acf;},_0x3ffbd0[_0x1b0941(0x233)]=function(_0x1d54b7,_0x4636d2){return _0x1d54b7%_0x4636d2;},_0x3ffbd0[_0x1b0941(0x26b)]=function(_0x56a31e,_0x2525e0){return _0x56a31e^_0x2525e0;},_0x3ffbd0[_0x1b0941(0x2c3)]=function(_0x488442,_0x5e4e69){return _0x488442%_0x5e4e69;};const _0x530248=_0x3ffbd0;for(var _0xac8143,_0x465069=[],_0x1c350b=0x833+-0x26ef+-0x7*-0x464,_0x5dd112='',_0x3c4957=-0x8*-0x1b1+0x11*0x43+0x1*-0x11fb;_0x530248[_0x1b0941(0x152)](_0x3c4957,0x1d88+-0x1fba+0x332);_0x3c4957++)_0x465069[_0x3c4957]=_0x3c4957;for(_0x3c4957=0x885+-0x124b+-0x2*-0x4e3;_0x530248[_0x1b0941(0x2c1)](_0x3c4957,-0x240b+0x1*-0xeac+0x33b7);_0x3c4957++)_0x1c350b=_0x530248[_0x1b0941(0x1b1)](_0x530248[_0x1b0941(0x31a)](_0x530248[_0x1b0941(0x14c)](_0x1c350b,_0x465069[_0x3c4957]),_0x596826[_0x1b0941(0x124)](_0x530248[_0x1b0941(0x2d8)](_0x3c4957,_0x596826[_0x1b0941(0x231)]))),-0x22fd*-0x1+-0x1865*-0x1+-0x6a*0x8d),_0xac8143=_0x465069[_0x3c4957],_0x465069[_0x3c4957]=_0x465069[_0x1c350b],_0x465069[_0x1c350b]=_0xac8143;for(var _0x3c4957=0xe1+0x1d09*-0x1+0x1c28,_0x1c350b=-0x1a73+0x83e+0x1*0x1235,_0xd4052f=0x195*0xb+0x254b+0x1b59*-0x2;_0x530248[_0x1b0941(0x2d7)](_0xd4052f,_0x3864ae[_0x1b0941(0x231)]);_0xd4052f++)_0xac8143=_0x465069[_0x3c4957=_0x530248[_0x1b0941(0x15d)](_0x530248[_0x1b0941(0x31a)](_0x3c4957,0x1a85+-0x43*-0x89+-0x3e5f),-0xf7e*-0x1+0x17*-0x35+0x9bb*-0x1)],_0x465069[_0x3c4957]=_0x465069[_0x1c350b=_0x530248[_0x1b0941(0x233)](_0x530248[_0x1b0941(0x31a)](_0x1c350b,_0x465069[_0x3c4957]),-0x1d6d+0x1*0x865+0x1608)],_0x465069[_0x1c350b]=_0xac8143,_0x5dd112+=String[_0x1b0941(0x275)](_0x530248[_0x1b0941(0x26b)](_0x3864ae[_0x1b0941(0x124)](_0xd4052f),_0x465069[_0x530248[_0x1b0941(0x2c3)](_0x530248[_0x1b0941(0x31a)](_0x465069[_0x3c4957],_0x465069[_0x1c350b]),-0xe2*-0xe+0x88a*0x4+-0x2d84)]));return _0x5dd112;}function i(_0x377a0f){const _0x4cbb7c=_0x59dab6,_0xcc61e4={};_0xcc61e4[_0x4cbb7c(0x290)]=function(_0x2da76e,_0x3e5a06){return _0x2da76e!==_0x3e5a06;},_0xcc61e4[_0x4cbb7c(0x2dc)]=_0x4cbb7c(0x26e),_0xcc61e4[_0x4cbb7c(0x32d)]=_0x4cbb7c(0x14d),_0xcc61e4[_0x4cbb7c(0x274)]=function(_0x3f3db1,_0x22f3e8){return _0x3f3db1<=_0x22f3e8;},_0xcc61e4[_0x4cbb7c(0x1d1)]=function(_0x1ea733,_0x194bc1){return _0x1ea733<_0x194bc1;},_0xcc61e4[_0x4cbb7c(0x223)]=function(_0x1ea485,_0x387138){return _0x1ea485>=_0x387138;},_0xcc61e4[_0x4cbb7c(0x1c2)]=function(_0x21d6a2,_0x1737a6){return _0x21d6a2+_0x1737a6;},_0xcc61e4[_0x4cbb7c(0x222)]=function(_0x3ee04b,_0x34d128){return _0x3ee04b-_0x34d128;},_0xcc61e4[_0x4cbb7c(0x16b)]=_0x4cbb7c(0x21b),_0xcc61e4[_0x4cbb7c(0x2df)]=function(_0x18754f,_0x3cb26a){return _0x18754f<_0x3cb26a;},_0xcc61e4[_0x4cbb7c(0x21c)]=function(_0x2aebe6,_0x4d0332){return _0x2aebe6===_0x4d0332;},_0xcc61e4[_0x4cbb7c(0x248)]=_0x4cbb7c(0x1ba),_0xcc61e4[_0x4cbb7c(0x12b)]=function(_0x159bc5,_0x30ed5f){return _0x159bc5>>_0x30ed5f;},_0xcc61e4[_0x4cbb7c(0x305)]=function(_0x8c9831,_0x4eae23){return _0x8c9831<<_0x4eae23;},_0xcc61e4[_0x4cbb7c(0x1fd)]=function(_0x1e9a8c,_0x8b4298){return _0x1e9a8c&_0x8b4298;},_0xcc61e4[_0x4cbb7c(0x169)]=function(_0x41f44f,_0x423b3d){return _0x41f44f>_0x423b3d;},_0xcc61e4[_0x4cbb7c(0x1fe)]=function(_0x2f1af9,_0x389d78){return _0x2f1af9>>_0x389d78;},_0xcc61e4[_0x4cbb7c(0x2aa)]=function(_0x176fcc,_0x43c7cf){return _0x176fcc+_0x43c7cf;},_0xcc61e4[_0x4cbb7c(0x1cc)]=function(_0x2b1913,_0x5237d8){return _0x2b1913>_0x5237d8;},_0xcc61e4[_0x4cbb7c(0x131)]=function(_0x595d22,_0x244fc7){return _0x595d22+_0x244fc7;},_0xcc61e4[_0x4cbb7c(0x219)]=function(_0x424cfc,_0x589e57){return _0x424cfc&_0x589e57;},_0xcc61e4[_0x4cbb7c(0x27b)]=function(_0x4d303e,_0x3624b4){return _0x4d303e+_0x3624b4;},_0xcc61e4[_0x4cbb7c(0x220)]=function(_0x564e16,_0xcfbe6e){return _0x564e16==_0xcfbe6e;},_0xcc61e4[_0x4cbb7c(0x1ef)]=_0x4cbb7c(0x1e6);const _0x473115=_0xcc61e4,_0x2d0ce6=_0x473115[_0x4cbb7c(0x16b)];for(_0x377a0f=''[_0x4cbb7c(0x13b)](_0x377a0f),_0x2b0a78=0x3e*0x44+-0x2*0x98+0x3*-0x518;_0x473115[_0x4cbb7c(0x1d1)](_0x2b0a78,_0x377a0f[_0x4cbb7c(0x231)]);_0x2b0a78++)if(_0x473115[_0x4cbb7c(0x2df)](0xcb3+-0xaf+-0x7*0x193,_0x377a0f[_0x4cbb7c(0x124)](_0x2b0a78)))return null;for(var _0x4c50a2='',_0x2b0a78=0x2664+0x487+0x1*-0x2aeb;_0x473115[_0x4cbb7c(0x1d1)](_0x2b0a78,_0x377a0f[_0x4cbb7c(0x231)]);_0x2b0a78+=0x1*-0x1f2b+0x540+0x19ee*0x1){if(_0x473115[_0x4cbb7c(0x21c)](_0x473115[_0x4cbb7c(0x248)],_0x473115[_0x4cbb7c(0x248)])){var _0x5b7345=[undefined,undefined,undefined,undefined];_0x5b7345[0x127*0x21+-0x1*0x2c1+-0x2346]=_0x473115[_0x4cbb7c(0x12b)](_0x377a0f[_0x4cbb7c(0x124)](_0x2b0a78),0x14cb+0x1ce+-0x1697*0x1),_0x5b7345[0x1dc5+0x16d6+-0x1a4d*0x2]=_0x473115[_0x4cbb7c(0x305)](_0x473115[_0x4cbb7c(0x1fd)](0x346+0xcff+-0x2*0x821,_0x377a0f[_0x4cbb7c(0x124)](_0x2b0a78)),-0x10+0x2471+-0x245d*0x1),_0x473115[_0x4cbb7c(0x169)](_0x377a0f[_0x4cbb7c(0x231)],_0x473115[_0x4cbb7c(0x1c2)](_0x2b0a78,0x25a0+0x23e4+-0x1*0x4983))&&(_0x5b7345[-0x10f5+0x2*0x2f+-0xec*-0x12]|=_0x473115[_0x4cbb7c(0x1fe)](_0x377a0f[_0x4cbb7c(0x124)](_0x473115[_0x4cbb7c(0x1c2)](_0x2b0a78,-0x1ed3*0x1+0xd8a*-0x2+0x39e8)),-0x2086+0xde*0x25+0x74),_0x5b7345[-0x981+0x11*-0xed+0x1940]=_0x473115[_0x4cbb7c(0x305)](_0x473115[_0x4cbb7c(0x1fd)](0xd*0x202+0xae1+-0x24ec,_0x377a0f[_0x4cbb7c(0x124)](_0x473115[_0x4cbb7c(0x2aa)](_0x2b0a78,0x604*0x1+0xdce+0x3*-0x69b))),0x1bc9+-0x1e5d+0x296)),_0x473115[_0x4cbb7c(0x1cc)](_0x377a0f[_0x4cbb7c(0x231)],_0x473115[_0x4cbb7c(0x131)](_0x2b0a78,0xe35+-0x173b*0x1+0x908))&&(_0x5b7345[0x5c7+-0xcd*-0x21+0x2*-0x1019]|=_0x473115[_0x4cbb7c(0x1fe)](_0x377a0f[_0x4cbb7c(0x124)](_0x473115[_0x4cbb7c(0x1c2)](_0x2b0a78,0x1ca7+-0x1*-0x185+-0x27*0xc6)),0x2179+0x2*0xbf+-0x22f1),_0x5b7345[-0x81*0x27+-0x5f9*-0x2+-0x7b8*-0x1]=_0x473115[_0x4cbb7c(0x219)](0x1747+0x17*-0xbf+0x3*-0x1f5,_0x377a0f[_0x4cbb7c(0x124)](_0x473115[_0x4cbb7c(0x27b)](_0x2b0a78,-0xcda+-0x1*0xbb7+0xe9*0x1b))));for(var _0x5376d0=0x193b+0x5*-0x601+0x1*0x4ca;_0x473115[_0x4cbb7c(0x1d1)](_0x5376d0,_0x5b7345[_0x4cbb7c(0x231)]);_0x5376d0++)_0x4c50a2+=_0x473115[_0x4cbb7c(0x220)](_0x473115[_0x4cbb7c(0x1ef)],typeof _0x5b7345[_0x5376d0])?'=':function(_0x5ae78b){const _0x5a0ad8=_0x4cbb7c;if(_0x473115[_0x5a0ad8(0x290)](_0x473115[_0x5a0ad8(0x2dc)],_0x473115[_0x5a0ad8(0x32d)])){if(_0x473115[_0x5a0ad8(0x274)](-0x253c+0x1*-0x1024+0x1ab*0x20,_0x5ae78b)&&_0x473115[_0x5a0ad8(0x1d1)](_0x5ae78b,-0x7d*0x4f+-0x1*0x497+0x15b5*0x2))return _0x2d0ce6[_0x5ae78b];}else{if(_0x2822a3){const _0x127956=_0x40ee8a[_0x5a0ad8(0x126)](_0x32b379,arguments);return _0x51de41=null,_0x127956;}}}(_0x5b7345[_0x5376d0]);}else return _0x195f5d[_0x4cbb7c(0x275)](_0x473115[_0x4cbb7c(0x223)](_0x473115[_0x4cbb7c(0x274)](_0x4eca37,'Z')?-0x1*0x1d95+-0x5*-0x1fd+0x13fe:0xbf1*0x1+0x146*-0x9+-0x1*0x1,_0x5627d3=_0x473115[_0x4cbb7c(0x1c2)](_0x156fd3[_0x4cbb7c(0x124)](-0xa1*0x2+0x2463+0x187*-0x17),0x12c1+-0x1f6b+0xcb7))?_0x28017a:_0x473115[_0x4cbb7c(0x222)](_0x5b84a5,-0x25b5+-0x1*-0x749+0x1e86));}return _0x4c50a2;}function decryptURL(_0x1def33){const _0x2a27fd=_0x59dab6,_0x1ab90a={'MjrdK':function(_0x934d7b,_0x4e8345,_0x5ac343){return _0x934d7b(_0x4e8345,_0x5ac343);},'ekigF':_0x2a27fd(0x155),'yjyzg':function(_0x363b3b,_0x1ef5c5){return _0x363b3b(_0x1ef5c5);}};return _0x1def33=(-0x21af+-0x9*0x3c+0x23cb,u)(''[_0x2a27fd(0x13b)](_0x1def33)[_0x2a27fd(0x232)](/_/g,'/')[_0x2a27fd(0x232)](/-/g,'+')),_0x1def33=_0x1ab90a[_0x2a27fd(0x2ab)](O,_0x1ab90a[_0x2a27fd(0x19e)],_0x1def33),_0x1ab90a[_0x2a27fd(0x1fa)](decodeURIComponent,_0x1def33);}function u(_0x535fce){const _0x397563=_0x59dab6,_0x2da9aa={};_0x2da9aa[_0x397563(0x187)]=function(_0x5c4fd3,_0x4965bc){return _0x5c4fd3==_0x4965bc;},_0x2da9aa[_0x397563(0x216)]=function(_0x570de4,_0x18df54){return _0x570de4%_0x18df54;},_0x2da9aa[_0x397563(0x1af)]=function(_0x2a8575,_0x3820c8){return _0x2a8575==_0x3820c8;},_0x2da9aa[_0x397563(0x11f)]=function(_0x1103e6,_0x4469ab){return _0x1103e6%_0x4469ab;},_0x2da9aa[_0x397563(0x184)]=function(_0x52722a,_0x2315a4){return _0x52722a<_0x2315a4;},_0x2da9aa[_0x397563(0x254)]=function(_0x1fe298,_0x685dd4){return _0x1fe298|_0x685dd4;},_0x2da9aa[_0x397563(0x28b)]=_0x397563(0x21b),_0x2da9aa[_0x397563(0x307)]=function(_0x4e8b9c,_0x18830b){return _0x4e8b9c===_0x18830b;},_0x2da9aa[_0x397563(0x1b9)]=function(_0x1f9082,_0x3af650){return _0x1f9082+_0x3af650;},_0x2da9aa[_0x397563(0x151)]=function(_0x1f0661,_0x2decfb){return _0x1f0661+_0x2decfb;},_0x2da9aa[_0x397563(0x30d)]=function(_0x3d894e,_0x13afb9){return _0x3d894e>>_0x13afb9;},_0x2da9aa[_0x397563(0x2d3)]=function(_0x74629e,_0x2bc866){return _0x74629e&_0x2bc866;},_0x2da9aa[_0x397563(0x1d3)]=function(_0x4000a9,_0x247836){return _0x4000a9&_0x247836;},_0x2da9aa[_0x397563(0x238)]=function(_0x56499d,_0x5d704e){return _0x56499d===_0x5d704e;},_0x2da9aa[_0x397563(0x1b6)]=function(_0x464f99,_0x2b8715){return _0x464f99===_0x2b8715;},_0x2da9aa[_0x397563(0x1c1)]=function(_0x102561,_0x30b6fd){return _0x102561+_0x30b6fd;},_0x2da9aa[_0x397563(0x215)]=function(_0x550850,_0x25e8be){return _0x550850>>_0x25e8be;},_0x2da9aa[_0x397563(0x2fa)]=function(_0x2908c6,_0xd211f3){return _0x2908c6&_0xd211f3;},_0x2da9aa[_0x397563(0x270)]=function(_0x3280c2,_0x4f8c18){return _0x3280c2&_0x4f8c18;};const _0x59ecf1=_0x2da9aa;if(_0x59ecf1[_0x397563(0x187)](_0x59ecf1[_0x397563(0x216)]((_0x535fce=_0x59ecf1[_0x397563(0x1af)](_0x59ecf1[_0x397563(0x11f)]((_0x535fce=(_0x535fce=''[_0x397563(0x13b)](_0x535fce))[_0x397563(0x232)](/[\t\n\f\r]/g,''))[_0x397563(0x231)],-0x7f6*-0x3+0x195b+-0x3139),0x955+0x12ff+0xc4*-0x25)?_0x535fce[_0x397563(0x232)](/==?$/,''):_0x535fce)[_0x397563(0x231)],0x1041*-0x1+0x11*0x17d+-0x908),0x77*0x23+-0x1c8e+0xc4a)||/[^+/0-9A-Za-z]/[_0x397563(0x320)](_0x535fce))return null;for(var _0x1ab126,_0xeb351='',_0x318ca5=-0x1*0x156d+0xcb5+0x8b8,_0x89b6a2=-0x3*0xc61+-0x1*-0x18e3+0x7*0x1c0,_0x5037d4=-0xc5e+-0x696+0x12f4;_0x59ecf1[_0x397563(0x184)](_0x5037d4,_0x535fce[_0x397563(0x231)]);_0x5037d4++)_0x318ca5=_0x59ecf1[_0x397563(0x254)](_0x318ca5<<=0x1978+-0x5*0x19b+0x27d*-0x7,(_0x1ab126=_0x535fce[_0x5037d4],_0x59ecf1[_0x397563(0x184)](_0x1ab126=_0x59ecf1[_0x397563(0x28b)][_0x397563(0x1f4)](_0x1ab126),0x31*-0x32+-0x2*0x3d5+0x113c)?undefined:_0x1ab126)),_0x59ecf1[_0x397563(0x307)](0x42e*0x4+0x16fc+-0x3f6*0xa,_0x89b6a2+=0x4*-0x67d+0x13a*0x4+0x1512)&&(_0xeb351=_0x59ecf1[_0x397563(0x1b9)](_0xeb351=_0x59ecf1[_0x397563(0x151)](_0xeb351+=String[_0x397563(0x275)](_0x59ecf1[_0x397563(0x30d)](_0x59ecf1[_0x397563(0x2d3)](0x63968f*-0x2+-0x3*-0x5d371e+0xae87c4,_0x318ca5),0x1e7*-0xb+0x63c+-0x1*-0xec1)),String[_0x397563(0x275)](_0x59ecf1[_0x397563(0x30d)](_0x59ecf1[_0x397563(0x1d3)](0x14*-0x13c1+0x3*-0x57dd+0x391ab,_0x318ca5),0x11d5*-0x1+-0x3d*0x6b+0x2b5c))),String[_0x397563(0x275)](_0x59ecf1[_0x397563(0x1d3)](-0xff2+0xe07+0x2ea,_0x318ca5))),_0x318ca5=_0x89b6a2=0x3*0x61d+0x2387+0xa*-0x563);return _0x59ecf1[_0x397563(0x238)](0x2*-0xe9+0x1b6*0x5+-0x6b0,_0x89b6a2)?(_0x318ca5>>=-0x1c70+0xf41+0xd33*0x1,_0xeb351+=String[_0x397563(0x275)](_0x318ca5)):_0x59ecf1[_0x397563(0x1b6)](0x9*0x321+0x23bb+0x30a*-0x15,_0x89b6a2)&&(_0x318ca5>>=0x25e*0xe+-0x34b*0x9+0xb3*-0x5,_0xeb351=_0x59ecf1[_0x397563(0x1c1)](_0xeb351+=String[_0x397563(0x275)](_0x59ecf1[_0x397563(0x215)](_0x59ecf1[_0x397563(0x2fa)](0x9ac*0xa+-0x1f*0xbf5+0x210f3,_0x318ca5),-0x3a9*0xa+-0x10aa+0x24*0x17b)),String[_0x397563(0x275)](_0x59ecf1[_0x397563(0x270)](0x1*-0x26a+0x10b9+-0xd50,_0x318ca5)))),_0xeb351;} +export default NineAnime; diff --git a/src/web/mjs/connectors/NiveraFansub.mjs b/src/web/mjs/connectors/NiveraFansub.mjs index ae34a294449..3cce7873c83 100644 --- a/src/web/mjs/connectors/NiveraFansub.mjs +++ b/src/web/mjs/connectors/NiveraFansub.mjs @@ -7,7 +7,7 @@ export default class NiveraFansub extends WordPressMadara { super.id = 'niverafansub'; super.label = 'Nivera Fansub'; this.tags = [ 'webtoon', 'turkish', 'scanlation' ]; - this.url = 'https://niverafansub.com'; + this.url = 'https://niverafansub.org'; this.requestOptions.headers.set('x-referer', this.url); } -} \ No newline at end of file +} diff --git a/src/web/mjs/connectors/Nonbiri.mjs b/src/web/mjs/connectors/Nonbiri.mjs index 498c0c265cf..420ec7cff8f 100644 --- a/src/web/mjs/connectors/Nonbiri.mjs +++ b/src/web/mjs/connectors/Nonbiri.mjs @@ -5,9 +5,9 @@ export default class Nonbiri extends WordPressMangastream { constructor() { super(); super.id = 'nonbiri'; - super.label = 'Nonbiri'; + super.label = 'Comic21'; this.tags = ['manga', 'indonesian']; - this.url = 'https://nonbiri.space'; + this.url = 'https://comic21.me'; this.path = '/manga/list-mode/'; } } diff --git a/src/web/mjs/connectors/NtsVoidScans.mjs b/src/web/mjs/connectors/NtsVoidScans.mjs deleted file mode 100644 index 8bf1388cae0..00000000000 --- a/src/web/mjs/connectors/NtsVoidScans.mjs +++ /dev/null @@ -1,12 +0,0 @@ -import WordPressMadara from './templates/WordPressMadara.mjs'; -//dead? -export default class NtsVoidScans extends WordPressMadara { - - constructor() { - super(); - super.id = 'ntsvoidscans'; - super.label = 'Void Scans'; - this.tags = [ 'manga', 'webtoon', 'english' ]; - this.url = 'https://voidscans.com'; - } -} \ No newline at end of file diff --git a/src/web/mjs/connectors/Nyrax.mjs b/src/web/mjs/connectors/Nyrax.mjs new file mode 100644 index 00000000000..958dc19b3e2 --- /dev/null +++ b/src/web/mjs/connectors/Nyrax.mjs @@ -0,0 +1,12 @@ +import WordPressMangastream from './templates/WordPressMangastream.mjs'; + +export default class Nyrax extends WordPressMangastream { + constructor() { + super(); + super.id = 'nyrax'; + super.label = 'Nyrax'; + this.tags = ['webtoon', 'english', 'scanlation']; + this.url = 'https://nyraxmanga.com'; + this.path = '/manga/list-mode/'; + } +} \ No newline at end of file diff --git a/src/web/mjs/connectors/Opiatoon.mjs b/src/web/mjs/connectors/Opiatoon.mjs index 9948fc6e182..76a4c18f31e 100644 --- a/src/web/mjs/connectors/Opiatoon.mjs +++ b/src/web/mjs/connectors/Opiatoon.mjs @@ -7,9 +7,9 @@ export default class Opiatoon extends WordPressMadara { super.id = 'opiatoon'; super.label = 'Opiatoon (Opia&Shipperland)'; this.tags = [ 'manga', 'turkish', 'webtoon' ]; - this.url = 'https://opiatoon.org'; + this.url = 'https://opiatoon.biz'; this.links = { - login: 'https://opiatoon.org/login' + login: 'https://opiatoon.biz/login' }; } } diff --git a/src/web/mjs/connectors/Piccoma.mjs b/src/web/mjs/connectors/Piccoma.mjs index 0f87b44d997..39b734bfc33 100644 --- a/src/web/mjs/connectors/Piccoma.mjs +++ b/src/web/mjs/connectors/Piccoma.mjs @@ -8,80 +8,147 @@ export default class Piccoma extends Connector { super.id = 'piccoma'; super.label = 'Piccoma'; this.tags = ['manga', 'webtoon', 'japanese']; - this.url = 'https://jp.piccoma.com/'; + this.url = 'https://piccoma.com'; + this.viewer = '/web/viewer/'; } canHandleURI(uri) { - return /https?:\/\/jp\.piccoma\.com/.test(uri); + return new RegExp('^https://(jp\\.)?piccoma.com/web/product/\\d+').test(uri); } async _getMangaFromURI(uri) { const id = uri.pathname.split('/')[3]; - const request = new Request(uri.href); - const [data] = await this.fetchDOM(request, '.PCM-productTitle'); - const title = data.textContent.trim(); - return new Manga(this, id, title); + uri.pathname = uri.pathname.split('/').slice(0, 4).join('/'); + const [ element ] = await this.fetchDOM(new Request(uri, this.requestOptions), 'h1.PCM-productTitle'); + return new Manga(this, id, element.textContent.trim()); } async _getMangas() { - const mangas = []; - let totalPage = 1; - for (let i = 1; i <= totalPage; i++) { - const request = new Request(`${this.url}/web/next_page/list?result_id=2&list_type=C&sort_type=N&page_id=${i}`, this.requestOptions); - const res = await this.fetchJSON(request); - totalPage = res.data.total_page; - const products = res.data.products; - mangas.push(...products.map(({ id, title }) => { - return { id, title }; - })); + const genres = [ 1, 2, 3, 4, 5, 6, 7, 9, 10 ]; + const mangaList = []; + try { + for(const genre of genres) { + const result = await this.getMangasFromPage(genre, 1); + mangaList.push(...result.mangas); + for (let page = 2; page <= result.pages; page++) { + const {mangas} = await this.getMangasFromPage(genre, page); + mangaList.push(...mangas); + } + + } + } catch(error) { + // } - return mangas; + return [...new Set(mangaList.map(manga => manga.id))].map(id => mangaList.find(manga => manga.id === id)); + } + + async getMangasFromPage(genre, page) { + const uri = new URL('/web/next_page/list', this.url); + uri.searchParams.set('list_type', 'G'); + uri.searchParams.set('result_id', `${genre}`); + uri.searchParams.set('page_id', `${page}`); + const { data } = await this.fetchJSON(new Request(uri, this.requestOptions)); + return { + pages: data.total_page, + mangas: data.products.map(entry => { + return { + id: entry.id, + title : entry.title + }; + }) + }; } async _getChapters(manga) { - const request = new Request(`${this.url}/web/product/${manga.id}/episodes?etype=E`); - const data = await this.fetchDOM(request, '.PCM-product_episodeList > a'); + return [ + ... await this.fetchEpisodes(manga), + ... await this.fetchVolumes(manga), + ].sort((self, other) => self.title.localeCompare(other.title)); + } + + async fetchEpisodes(manga) { + const request = new Request(`${this.url}/web/product/${manga.id}/episodes?etype=E`, this.requestOptions); + const data = await this.fetchDOM(request, 'ul.PCM-epList li a[data-episode_id]'); + return data.map(element => { + return { + id: element.dataset.episode_id, + title : element.querySelector('div.PCM-epList_title h2').textContent.trim() + }; + }); + } + + async fetchVolumes(manga) { + const request = new Request(`${this.url}/web/product/${manga.id}/episodes?etype=V`); + const data = await this.fetchDOM(request, 'ul.PCM-volList li'); return data.map(element => { + const volume = [ ...element.querySelectorAll('div.PCM-prdVol_btns > a:not([class*="buyBtn"])') ].pop(); + const title = [ + element.querySelector('div.PCM-prdVol_title h2').innerText.trim(), + volume.classList.contains('PCM-prdVol_freeBtn') ? ` (${ volume.innerText.trim() })` : '', + volume.classList.contains('PCM-prdVol_trialBtn') ? ` (${ volume.innerText.trim() })` : '', + ].join(''); return { - id: `${manga.id}/${element.dataset.episode_id}`, - title: element.querySelector('.PCM-epList_title').textContent.trim(), + id : volume.dataset.episode_id, + title : title }; }); } async _getPages(chapter) { - const request = new Request(`${this.url}/web/viewer/${chapter.id}`); - const pdata = await Engine.Request.fetchUI(request, 'window._pdata_ || {}'); - const images = pdata.img; - if (images == null) { + + const script = ` + new Promise((resolve, reject) => { + + function _getSeed(url) { + const uri = new URL(url.startsWith('http') ? url : 'https:'+url); + let checksum = uri.searchParams.get('q') || url.split('/').slice(-2)[0]; //PiccomaFR use q=, JP is the other + const expires = uri.searchParams.get('expires'); + const total = expires.split('').reduce((total, num2) => total + parseInt(num2), 0); + const ch = total % checksum.length; + checksum = checksum.slice(ch * -1) + checksum.slice(0, ch * -1); + return globalThis.dd(checksum); + } + + try { + const pdata = window.__NEXT_DATA__ ? __NEXT_DATA__.props.pageProps.initialState.viewer.pData : window._pdata_; //PiccomaFR VS JP + const images = (pdata.img ?? pdata.contents) + .filter(img => !!img.path) + .map(img => { + return { + url : img.path.startsWith('http') ? img.path : 'https:' + img.path, + key : pdata.isScrambled ? _getSeed(img.path) : null, + } + }); + resolve(images); + } + catch (error) { + } + reject(); + }); + `; + + const request = new Request(`${this.url}${this.viewer}${chapter.manga.id}/${chapter.id}`, this.requestOptions); + const images = await Engine.Request.fetchUI(request, script, 10000); + if (!images) { throw new Error(`The chapter '${chapter.title}' is neither public, nor purchased!`); } - return images - .filter(img => !!img.path) - .map(img => { - const link = img.path.startsWith('http') ? img.path : `https:${img.path}`; - return this.createConnectorURI({ - url: link, - key: this._getSeed(link), - pdata - }); - }); + return images.map(image => this.createConnectorURI({...image})); + } async _handleConnectorURI(payload) { - const image = await this._loadImage(payload.url); - if (payload.pdata.isScrambled) { + if (payload.key) { + const image = await this._loadImage(payload.url); const canvas = this._unscramble(image, 50, payload.key); const blob = await this._canvasToBlob(canvas); return this._blobToBuffer(blob); + } else { + const uri = new URL(payload.url, this.url); + const request = new Request(uri, this.requestOptions); + const response = await fetch(request); + let data = await response.blob(); + return this._blobToBuffer(data); } - const canvas = document.createElement("canvas"); - const ctx = canvas.getContext('2d'); - canvas.width = image.width; - canvas.height = image.height; - ctx.drawImage(image, 0, 0, image.width, image.height, 0, 0, image.width, image.height); - const blob = await this._canvasToBlob(canvas); - return this._blobToBuffer(blob); } async _canvasToBlob(canvas) { @@ -92,14 +159,6 @@ export default class Piccoma extends Connector { }); } - _getSeed(url) { - const checksum = url.split('/').slice(-2)[0]; - const expires = new URL(url).searchParams.get('expires'); - const total = expires.split('').reduce((total, num2) => total + parseInt(num2), 0); - const ch = total % checksum.length; - return checksum.slice(ch * -1) + checksum.slice(0, ch * -1); - } - _loadImage(url) { return new Promise((resolve, reject) => { const image = new Image(); @@ -287,4 +346,4 @@ function mixkey(seed, key) { mask & (smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++); } return String.fromCharCode.apply(0, key); -} \ No newline at end of file +} diff --git a/src/web/mjs/connectors/PiccomaFR.mjs b/src/web/mjs/connectors/PiccomaFR.mjs index 613948ce778..e57eea8b328 100644 --- a/src/web/mjs/connectors/PiccomaFR.mjs +++ b/src/web/mjs/connectors/PiccomaFR.mjs @@ -9,91 +9,61 @@ export default class PiccomaFR extends Piccoma { super.label = 'Piccoma (French)'; this.tags = ['manga', 'webtoon', 'french']; this.url = 'https://piccoma.com/fr'; + this.viewer = '/viewer/'; this.requestOptions.headers.set('x-referer', 'https://piccoma.com/fr'); } + getAPI(endpoint) { + return new URL(this.url + '/api/haribo/api/public/v2' + endpoint); + } + canHandleURI(uri) { - return /https?:\/\/piccoma\.com\/fr/.test(uri); + return new RegExp('^https://(fr\\.)?piccoma.com/fr/product(/episode)?/\\d+$').test(uri); } async _getMangaFromURI(uri) { - const id = uri.pathname; - const request = new Request(uri, this.requestOptions); - const data = await this._getNextData(request); - const title = data.props.pageProps.initialState.productHome.productHome.product.title; - return new Manga(this, id, title); + const id = uri.href.split('/').pop(); + const request = new Request(`${this.url}/product/${id}`, this.requestOptions); + const [ element ] = await this.fetchDOM(request, 'meta[property="og:title"]'); + return new Manga(this, id, element.content.split('|').shift().trim()); } async _getMangas() { - let msg = 'This website does not provide a manga list, please copy and paste the URL containing the chapters directly from your browser into HakuNeko.'; - throw new Error(msg); + const mangaList = []; + const vowels = 'aeiou'.split(''); + for (const word of vowels) { + for (let page = 1, run = true; run; page++) { + const mangas = await this.getMangasFromPage(word, page); + mangas.length > 0 ? mangaList.push(...mangas) : run = false; + } + } + return [...new Set(mangaList.map(manga => manga.id))].map(id => mangaList.find(manga => manga.id === id)); } - async _getChapters(manga) { - const type = manga.id.split('/').slice(-2)[0]; - const productId = manga.id.split('/').pop(); - const path = type == 'product' ? `/fr/product/episode/${productId}` : manga.id; - const uri = new URL(path, this.url); - const request = new Request(uri, this.requestOptions); - const nextData = await this._getNextData(request); - const episodes = nextData.props.pageProps.initialState.episode.episodeList.episode_list; - return episodes.map(ep => { + async getMangasFromPage(word, page) { + const uri = this.getAPI('/search/product'); + uri.searchParams.set('search_type', 'P'); + uri.searchParams.set('word', word); + uri.searchParams.set('page', `${page}`); + const { data: { p_products: entries } } = await this.fetchJSON(new Request(uri, this.requestOptions)); + return entries.map(entry => { return { - id: `${nextData.buildId}/fr/viewer/${productId}/${ep.id}`, - title: ep.title, + id: entry.product_id, + title: entry.title, }; - }).reverse(); - } - - async _getPages(chapter) { - const result = await this._fetchChapterNextData(chapter); - if (!result.pageProps.initialState) { - throw new Error(`The chapter '${chapter.title}' is neither public, nor purchased!`); - } - - const pdata = result.pageProps.initialState.viewer.pData; - const images = pdata.img; - if (images == null) { - throw new Error(`The chapter '${chapter.title}' is neither public, nor purchased!`); - } - return images - .filter(img => !!img.path) - .map(img => { - return this.createConnectorURI({ - url: img.path, - key: this._getSeed(img.path), - pdata - }); - }); - } - - _getSeed(url) { - const uri = new URL(url); - const checksum = uri.searchParams.get('q'); - const expires = uri.searchParams.get('expires'); - const total = expires.split('').reduce((total, num2) => total + parseInt(num2), 0); - const ch = total % checksum.length; - return checksum.slice(ch * -1) + checksum.slice(0, ch * -1); + }); } - async _getNextData(request) { - const [data] = await this.fetchDOM(request, '#__NEXT_DATA__'); - return JSON.parse(data.textContent); + async _getChapters(manga) { + const request = new Request(`${this.url}/product/episode/${manga.id}`, this.requestOptions); + const [ { text: json } ] = await this.fetchDOM(request, 'script#__NEXT_DATA__'); + const chapters = JSON.parse(json).props.pageProps.initialState.episode.episodeList.episode_list; + return chapters.map(chapter => { + return { + id: chapter.id, + title: chapter.title + }; + }); } - async _fetchChapterNextData(chapter) { - const parts = chapter.id.split('/'); - const productId = parts[3]; - const episodeId = parts[4]; - const uri = new URL(`fr/_next/data/${chapter.id}.json`, this.url); - uri.searchParams.set('productId', productId); - uri.searchParams.set('episodeId', episodeId); - const request = new Request(uri, this.requestOptions); - try { - return await this.fetchJSON(request); - } catch (error) { - console.error(error); - throw new Error(`The chapter '${chapter.title}' is neither public, nor purchased!`); - } - } -} \ No newline at end of file +} diff --git a/src/web/mjs/connectors/PojokManga.mjs b/src/web/mjs/connectors/PojokManga.mjs index e43b910a2c3..4055a4a6902 100644 --- a/src/web/mjs/connectors/PojokManga.mjs +++ b/src/web/mjs/connectors/PojokManga.mjs @@ -7,8 +7,7 @@ export default class PojokManga extends WordPressMadara { super.id = 'pojokmanga'; super.label = 'PojokManga'; this.tags = [ 'manga', 'webtoon', 'indonesian' ]; - this.url = 'https://pojokmanga.com'; - + this.url = 'https://pojokmanga.id'; this.queryTitleForURI = 'div.profile-manga div.post-title h1'; } -} \ No newline at end of file +} diff --git a/src/web/mjs/connectors/PrismaScan.mjs b/src/web/mjs/connectors/PrismaScan.mjs index 03eca8e8cdb..17ab12494dc 100644 --- a/src/web/mjs/connectors/PrismaScan.mjs +++ b/src/web/mjs/connectors/PrismaScan.mjs @@ -7,6 +7,6 @@ export default class PrismaScan extends WordPressMadara { super.id = 'prismascans'; super.label = 'Demon Scan'; this.tags = [ 'webtoon', 'portuguese' ]; - this.url = 'https://demonsect.com.br'; + this.url = 'https://dsectcomics.org'; } } diff --git a/src/web/mjs/connectors/RandomScan.mjs b/src/web/mjs/connectors/RandomScan.mjs index 5d3f8a0939a..a995a09406d 100644 --- a/src/web/mjs/connectors/RandomScan.mjs +++ b/src/web/mjs/connectors/RandomScan.mjs @@ -4,8 +4,8 @@ export default class RandomScan extends WordPressMadara { constructor() { super(); super.id = 'randomscan'; - super.label = 'Random Scans'; + super.label = 'Lura Toon'; this.tags = [ 'manga', 'webtoon', 'portuguese' ]; - this.url = 'https://randomscanlators.net'; + this.url = 'https://luratoon.com'; } } diff --git a/src/web/mjs/connectors/ReadAllComics.mjs b/src/web/mjs/connectors/ReadAllComics.mjs new file mode 100644 index 00000000000..c61dde7c1c1 --- /dev/null +++ b/src/web/mjs/connectors/ReadAllComics.mjs @@ -0,0 +1,55 @@ +import Connector from '../engine/Connector.mjs'; +import Manga from '../engine/Manga.mjs'; + +export default class ReadAllComics extends Connector { + constructor() { + super(); + super.id = 'readallcomics'; + super.label = 'Read All Comics'; + this.tags = ['comics', 'english']; + this.url = 'https://readallcomics.com'; + this.requestOptions.headers.set('x-referer', this.url); + } + + async _getMangaFromURI(uri) { + const request = new Request(uri, this.requestOptions); + const id = uri.pathname; + const [title] = await this.fetchDOM(request, 'div.description-archive h1'); + return new Manga(this, id, title.textContent.trim()); + } + + async _getMangas() { + let request = new Request( + this.url + '/?story=&s=&type=comic', + this.requestOptions + ); + let data = await this.fetchDOM(request, 'ul.categories li a'); + return data.map((element) => { + return { + id: this.getRootRelativeOrAbsoluteLink(element, this.url), + title: element.text.trim(), + }; + }); + } + + async _getChapters(manga) { + let request = new Request(this.url + manga.id, this.requestOptions); + let data = await this.fetchDOM(request, 'ul.list-story li a'); + return data.map((element) => { + return { + id: this.getRootRelativeOrAbsoluteLink(element, this.url), + title: element.text.trim(), + language: '', + }; + }); + } + + async _getPages(chapter) { + let request = new Request(this.url + chapter.id, this.requestOptions); + let data = await this.fetchDOM( + request, + 'body > center > center > div source' + ); + return data.map((element) => this.getAbsolutePath(element, request.url)); + } +} diff --git a/src/web/mjs/connectors/RealmScans.mjs b/src/web/mjs/connectors/RealmScans.mjs index 97d62551adf..aa18b093aa1 100644 --- a/src/web/mjs/connectors/RealmScans.mjs +++ b/src/web/mjs/connectors/RealmScans.mjs @@ -7,8 +7,9 @@ export default class RealmScans extends WordPressMangastream { super.id = 'realmscans'; super.label = 'Rizz Comics'; this.tags = [ 'manga', 'english' ]; - this.url = 'https://rizzcomic.com'; - this.path = '/series'; + this.url = 'https://rizzfables.com'; + this.path = '/series/'; + this.requestOptions.headers.set('x-referer', this.url); } async _getMangas() { diff --git a/src/web/mjs/connectors/ReaperScansID.mjs b/src/web/mjs/connectors/ReaperScansID.mjs index 899b3b41d6c..cbfcc4220d6 100644 --- a/src/web/mjs/connectors/ReaperScansID.mjs +++ b/src/web/mjs/connectors/ReaperScansID.mjs @@ -6,12 +6,26 @@ export default class ReaperScansID extends WordPressMadara { super.id = 'reaperscansid'; super.label = 'Shinigami ID'; this.tags = ['webtoon', 'indonesian', 'scanlation']; - this.url = 'https://shinigami.sh'; + this.url = 'https://shinigami.cx'; this.queryChapters = 'div.chapter-link > a'; this.queryChaptersTitleBloat ='span.chapter-release-date'; - this.queryPages = 'div.page-break source[data-src]'; this.links = { - login: 'https://shinigami.sh/login' + login: 'https://shinigami.cx/login' }; } + + async _getPages(chapter) { + const url = new URL(chapter.id, this.url); + const request = new Request(url, this.requestOptions); + const script = ` + new Promise((resolve, reject) => { + const key = post_id + 'hJ1nA7qt0fMxGPfW3WlD5QuRy1HBTOnukhP9JE' + post_id + 'aBTSjD3cSKEJEKMI34mSxRUm98Xu4hXp71YTWJ5lUnP' + post_id; + const imgdata = JSON.parse(CryptoJS.AES.decrypt(chapter_data, key, { + format: CryptoJSAesJson + }).toString(CryptoJS.enc.Utf8)); + resolve((imgdata)); + }); + `; + return await Engine.Request.fetchUI(request, script); + } } diff --git a/src/web/mjs/connectors/ResetScans.mjs b/src/web/mjs/connectors/ResetScans.mjs index 882407c5eea..5d9ac604877 100644 --- a/src/web/mjs/connectors/ResetScans.mjs +++ b/src/web/mjs/connectors/ResetScans.mjs @@ -7,7 +7,7 @@ export default class ResetScans extends WordPressMadara { super.id = 'resetscans'; super.label = 'Reset Scans'; this.tags = [ 'manga', 'webtoon', 'english' ]; - this.url = 'https://reset-scans.us'; + this.url = 'https://resetscan.com'; this.queryChapters = 'li.wp-manga-chapter div.li__text > a'; } } diff --git a/src/web/mjs/connectors/Ridibooks.mjs b/src/web/mjs/connectors/Ridibooks.mjs index 4f4e8d391df..e70c138f710 100644 --- a/src/web/mjs/connectors/Ridibooks.mjs +++ b/src/web/mjs/connectors/Ridibooks.mjs @@ -12,7 +12,6 @@ export default class Ridibooks extends Connector { login: `${this.url}/account/login` }; this.apiUrl = "https://api.ridibooks.com"; - this.pagesApi = "https://view.ridibooks.com"; } async _getMangas() { @@ -43,11 +42,17 @@ export default class Ridibooks extends Connector { } async _getPages(chapter) { - const uri = new URL(`/generate/${chapter.id}`, this.pagesApi); - const request = new Request(uri, this.requestOptions); - const data = await this.fetchJSON(request); - if (!data.success) return []; - return data.pages.map(page => page.src); + const uri = new URL('/api/web-viewer/generate', this.url); + const data = await this.fetchJSON(new Request(uri.href, { + method: 'POST', + body: JSON.stringify({ + book_id: chapter.id + }), + headers: { + 'Content-Type': 'application/json', + }, + })); + return data.success ? data.data.pages.map(page =>page.src) : []; } async _getMangaFromURI(uri) { @@ -55,4 +60,4 @@ export default class Ridibooks extends Connector { const data = await Engine.Request.fetchUI(request, "bookDetail"); return new Manga(this, data.series_id, data.series_title); } -} \ No newline at end of file +} diff --git a/src/web/mjs/connectors/Saikaiscan.mjs b/src/web/mjs/connectors/Saikaiscan.mjs index 0b3f21b4a26..8cec74c2468 100644 --- a/src/web/mjs/connectors/Saikaiscan.mjs +++ b/src/web/mjs/connectors/Saikaiscan.mjs @@ -8,15 +8,15 @@ export default class SaikaiScan extends Connector { super.id = 'saikaiscan'; super.label = 'Saikaiscan'; this.tags = [ 'manga', 'portuguese', 'webtoon', 'novel' ]; - this.url = 'https://saikaiscan.com.br'; - this.api = 'https://api.saikai.com.br/api/stories'; - this.imagesurl = 'https://s3-alpha.saikai.com.br'; + this.url = 'https://saikaiscans.net'; + this.api = 'https://api.saikaiscans.net/api/stories'; + this.imagesurl = 'https://s3-alpha.saikaiscans.net'; this.novelContentQuery = 'div#leitor-serie-body'; this.novelFormat = 'image/png'; this.novelWidth = '56em'; this.novelPadding = '1.5em'; this.links = { - login: 'https://saikaiscan.com.br/login' + login: 'https://saikaiscan.net/login' }; } diff --git a/src/web/mjs/connectors/SakuraNovel.mjs b/src/web/mjs/connectors/SakuraNovel.mjs new file mode 100644 index 00000000000..b17b5ecfc7c --- /dev/null +++ b/src/web/mjs/connectors/SakuraNovel.mjs @@ -0,0 +1,71 @@ +import WordPressMangastream from './templates/WordPressMangastream.mjs'; +//template/theme LightNovel, basically WordPressMangastreamNovel +export default class SakuraNovel extends WordPressMangastream { + + constructor() { + super(); + super.id = 'sakuranovel'; + super.label = 'SakuraNovel'; + this.tags = ['novel', 'indonesian']; + this.url = 'https://sakuranovel.id'; + + this.querMangaTitleFromURI = 'div.series-title h2'; + this.queryMangas = 'div.novellist-blc ul li a.series'; + this.queryChapters = 'ul.series-chapterlists li a'; + this.queryChaptersTitle = 'span:not(.date)'; + this.path = '/daftar-novel/'; + + this.novelContentQuery = 'div.asdasd'; + this.novelObstaclesQuery = '[data-index]'; + this.novelFormat = 'image/png'; + this.novelWidth = '56em'; // parseInt(1200 / window.devicePixelRatio) + 'px'; + this.novelPadding = '1.5em'; + } + + async _getChapters(novel) { + const novels = await super._getChapters(novel); + novels.forEach(novel => novel.title = novel.title.replace(/Bahasa Indonesia$/i, '').trim()); + return novels; + } + + async _getPages(chapter) { + let uri = new URL(chapter.id, this.url); + let request = new Request(uri, this.requestOptions); + return this._getPagesNovel(request); + } + + async _getPagesNovel(request) { + let darkmode = Engine.Settings.NovelColorProfile(); + let script = ` + new Promise((resolve, reject) => { + document.body.style.width = '${this.novelWidth}'; + let container = document.querySelector('${this.novelContentQuery}'); + container.style.maxWidth = '${this.novelWidth}'; + container.style.padding = '0'; + container.style.margin = '0'; + let novel = document.querySelector('${this.novelContentQuery}'); + novel.style.padding = '${this.novelPadding}'; + [...novel.querySelectorAll(":not(:empty)")].forEach(ele => { + ele.style.backgroundColor = '${darkmode.background}' + ele.style.color = '${darkmode.text}' + }) + novel.style.backgroundColor = '${darkmode.background}' + novel.style.color = '${darkmode.text}' + novel.querySelectorAll('${this.novelObstaclesQuery}').forEach(element => element.style.display = 'none'); + let script = document.createElement('script'); + script.onerror = error => reject(error); + script.onload = async function() { + try{ + let canvas = await html2canvas(novel); + resolve(canvas.toDataURL('${this.novelFormat}')); + }catch (error){ + reject(error) + } + } + script.src = 'https://html2canvas.hertzen.com/dist/html2canvas.min.js'; + document.body.appendChild(script); + }); + `; + return [await Engine.Request.fetchUI(request, script, 30000, true)]; + } +} diff --git a/src/web/mjs/connectors/ShojoScans.mjs b/src/web/mjs/connectors/ShojoScans.mjs new file mode 100644 index 00000000000..7c683f0ac85 --- /dev/null +++ b/src/web/mjs/connectors/ShojoScans.mjs @@ -0,0 +1,14 @@ +import WordPressMangastream from './templates/WordPressMangastream.mjs'; + +export default class ShojoScans extends WordPressMangastream { + constructor() { + super(); + super.id = 'shojoscans'; + super.label = 'ShojoScans'; + this.tags = [ 'manga', 'english', 'scanlation' ]; + this.url = 'https://shojoscans.com'; + this.path = '/comics/list-mode/'; + + this.queryChapters = 'div#chapterlist ul li a'; + } +} \ No newline at end of file diff --git a/src/web/mjs/connectors/SirenKomik.mjs b/src/web/mjs/connectors/SirenKomik.mjs index ae574346961..de475c49fe6 100644 --- a/src/web/mjs/connectors/SirenKomik.mjs +++ b/src/web/mjs/connectors/SirenKomik.mjs @@ -9,5 +9,19 @@ export default class SirenKomik extends WordPressMangastream { this.tags = ['manga', 'indonesian']; this.url = 'https://sirenkomik.my.id'; this.path = '/manga/list-mode/'; + this.queryChapters = 'div#chaptermanga ul li div.kotak-chapter div.episode a'; + this.queryChaptersTitle = 'span.nomer-chapter'; + } + + async _initializeConnector() { + // for some reasons, fetchui never ends and we reach timeout. I have to put an empty _initializeConnector + } + + async _getPages(chapter) { + const url = new URL(chapter.id, this.url); + const request = new Request(url, this.requestOptions); + const [ dom ] = await this.fetchDOM(request, 'body'); + const matches = dom.innerHTML.match(/"images"\s*:\s*(\[.*\])\s*}/)[1]; + return JSON.parse(matches); } } diff --git a/src/web/mjs/connectors/Siyahmelek.mjs b/src/web/mjs/connectors/Siyahmelek.mjs index 38b1a879e13..2752318fc8b 100644 --- a/src/web/mjs/connectors/Siyahmelek.mjs +++ b/src/web/mjs/connectors/Siyahmelek.mjs @@ -7,9 +7,9 @@ export default class Siyahmelek extends WordPressMadara { super.id = 'siyahmelek'; super.label = 'Gri Melek (Siyahmelek)'; this.tags = [ 'manga', 'webtoon', 'turkish' ]; - this.url = 'https://grimelek.net'; + this.url = 'https://grimelek.co'; this.links = { - login : 'https://grimelek.net'//this website needs login to see content ! + login : 'https://grimelek.co'//this website needs login to see content ! }; } diff --git a/src/web/mjs/connectors/TCBScans.mjs b/src/web/mjs/connectors/TCBScans.mjs index 2d12669a6e4..0059be7e0c6 100644 --- a/src/web/mjs/connectors/TCBScans.mjs +++ b/src/web/mjs/connectors/TCBScans.mjs @@ -8,7 +8,7 @@ export default class TCBScans extends Connector { super.id = 'tcbscans'; super.label = 'TCB Scans'; this.tags = [ 'manga', 'english', 'scanlation' ]; - this.url = 'https://onepiecechapters.com'; + this.url = 'https://tcbscans.com'; } async _getMangaFromURI(uri) { @@ -44,8 +44,27 @@ export default class TCBScans extends Connector { async _getPages(chapter) { const uri = new URL(chapter.id, this.url); - const request = new Request(uri, this.requestOptions); - let data = await this.fetchDOM(request, 'picture > source'); - return data.map(x => x.src); + const chapterRequest = new Request(uri, this.requestOptions); + const data = await this.fetchDOM(chapterRequest, 'picture > source'); + + const promises = []; + for(const image of data) { + const promise = new Promise( (resolve, reject) => { + const pageUrl= this.getAbsolutePath(image, chapterRequest.url); + const request = new Request(pageUrl, { + method : 'HEAD', + }); + try { + fetch(request) + .then(response => response.status == 200 ? resolve(pageUrl) : reject()); + } catch(error) { + reject(); + } + }); + promises.push(promise); + } + + const results = await Promise.allSettled(promises); + return results.filter(promise => /fulfilled/i.test(promise.status)).map(promise => promise.value); } -} \ No newline at end of file +} diff --git a/src/web/mjs/connectors/Tapas.mjs b/src/web/mjs/connectors/Tapas.mjs index d79f37b2289..1fd5a1824aa 100644 --- a/src/web/mjs/connectors/Tapas.mjs +++ b/src/web/mjs/connectors/Tapas.mjs @@ -9,15 +9,19 @@ export default class Tapas extends Connector { super.label = 'Tapas'; this.tags = [ 'webtoon', 'english', 'novel' ]; this.url = 'https://tapas.io'; + this.apiUrl = 'https://story-api.tapas.io/cosmos/api/v1/landing'; this.requestOptions.headers.set('x-cookie', 'adjustedBirthDate=1990-01-01'); } async _getMangaFromURI(uri) { - let request = new Request(uri, this.requestOptions); - let data = await this.fetchDOM(request, 'div.info a.title'); - let id = uri.pathname; - let title = data[0].textContent.trim(); - return new Manga(this, id, title); + const seriesId = (await this.fetchDOM(new Request(uri), 'meta[property="al:android:url"]'))[0].content.replace(/\/info$/, '').split('/').pop(); + let data = (await this.fetchJSON(new Request(new URL(`${this.url}/series/${seriesId}?`, this.URI), { + headers: { + Accept: 'application/json, text/javascript, */*;', + 'Content-type': 'application/x-www-form-urlencoded; charset=UTF-8' + } + }))).data; + return new Manga(this, data.id.toString(), data.title.trim()); } async _getMangas() { @@ -30,62 +34,31 @@ export default class Tapas extends Connector { } async _getMangasFromPage(page) { - const uri = new URL('/comics', this.url); - uri.searchParams.set('b', 'ALL'); - uri.searchParams.set('g', 0); - uri.searchParams.set('pageNumber', page); - //uri.searchParams.set('pageSize', 20); + + const uri = new URL(`${this.apiUrl}/genre?category_type=COMIC&size=200&page=${page}`); const request = new Request(uri, this.requestOptions); request.headers.set('Accept', 'application/json, text/javascript, */*;'); - const data = await this.fetchJSON(request, this.requestOptions); - const dom = new DOMParser().parseFromString(data.data.body, 'text/html'); - const nodes = [...dom.querySelectorAll('li.list__item a.thumb')]; + const response = await this.fetchJSON(request, this.requestOptions); - return nodes.map(element => { + return response.data.items.map(element => { return { - id: this.getRootRelativeOrAbsoluteLink(element.pathname, this.url), - title: element.dataset.tiaraEventMetaSeries.trim() + id: element.seriesId, + title: element.title }; }); } async _getChapters(manga) { - let chapterList = []; - - let request = new Request(new URL(manga.id, this.url), this.requestOptions); - let data = await this.fetchDOM(request, 'meta[name="twitter:app:url:iphone"]'); - const series_id = data[0].content.match(/\/series\/\d+/)[0]; - - let has_next = true; - const time = Date.now(); - let page = 1; - while (has_next) { - request = new Request(new URL(series_id+'/episodes?page='+page+'&sort=OLDEST&init_load=0&since='+time+'&large=true&last_access=0&', this.url), this.requestOptions); - request.headers.set('x-referer', this.getRootRelativeOrAbsoluteLink(manga.id, this.url)); - let response = await this.fetchJSON(request, this.requestOptions); - has_next = response.data.pagination.has_next; - chapterList.push(...await this._getChaptersFromHtml(response.data.body)); - page++; - } - - return chapterList; - } + let request = new Request(new URL(`${this.url}/series/${manga.id}/episodes?max_limit=9999`), this.requestOptions); + let response = await this.fetchJSON(request); - async _getChaptersFromHtml(payload) { - let data = [...this.createDOM(payload).querySelectorAll('li.episode-list__item > a')]; - - return data - .filter(element => !element.querySelector('i.sp-ico-episode-lock, i.sp-ico-schedule-white')) - .map(element => { - let scene = element.querySelector('div.info p.scene').textContent.trim(); - let title = element.querySelector('p.title span.title__body').textContent.trim(); - return { - id: this.getRootRelativeOrAbsoluteLink(element, this.url), - title: scene + ' - ' + title, - language: '' - }; - }); + return response.data.episodes.map(element => { + return { + id: `/episode/${element.id}`, + title: element.title + }; + }); } async _getPagesManga(chapter) { @@ -124,5 +97,4 @@ export default class Tapas extends Connector { `; return [ await Engine.Request.fetchUI(request, script, 30000, true) ]; } - } diff --git a/src/web/mjs/connectors/TempleScan.mjs b/src/web/mjs/connectors/TempleScan.mjs index 74441752dc0..2b42122abe8 100644 --- a/src/web/mjs/connectors/TempleScan.mjs +++ b/src/web/mjs/connectors/TempleScan.mjs @@ -7,6 +7,6 @@ export default class TempleScan extends HeanCms { super.label = 'Temple Scan'; this.tags = [ 'webtoon', 'scanlation', 'english' ]; this.url = 'https://templescan.net'; - this.api = 'https://api.templescan.net'; + this.api = 'https://templescan.net/apiv1'; } -} \ No newline at end of file +} diff --git a/src/web/mjs/connectors/TonizuToon.mjs b/src/web/mjs/connectors/TonizuToon.mjs index 9fcbcdf0d48..91b0f1dbbca 100644 --- a/src/web/mjs/connectors/TonizuToon.mjs +++ b/src/web/mjs/connectors/TonizuToon.mjs @@ -7,7 +7,7 @@ export default class TonizuToon extends WordPressMadara { super.id = 'tonizutoon'; super.label = 'Tonizu Toon'; this.tags = [ 'webtoon', 'turkish', 'scanlation' ]; - this.url = 'https://tonizu.com'; + this.url = 'https://tonizu.xyz'; this.requestOptions.headers.set('x-referer', this.url); } } diff --git a/src/web/mjs/connectors/TopManhua.mjs b/src/web/mjs/connectors/TopManhua.mjs index 05f0c1c4eae..b5d103ac98b 100644 --- a/src/web/mjs/connectors/TopManhua.mjs +++ b/src/web/mjs/connectors/TopManhua.mjs @@ -5,8 +5,8 @@ export default class TopManhua extends WordPressMadara { constructor() { super(); super.id = 'topmanhua'; - super.label = 'Top Manhua'; + super.label = 'ManhuaTop'; this.tags = [ 'webtoon', 'english' ]; - this.url = 'https://topmanhua.com'; + this.url = 'https://manhuatop.org'; } -} \ No newline at end of file +} diff --git a/src/web/mjs/connectors/TopToon.mjs b/src/web/mjs/connectors/TopToon.mjs index 8934361579b..4051063cf6a 100644 --- a/src/web/mjs/connectors/TopToon.mjs +++ b/src/web/mjs/connectors/TopToon.mjs @@ -15,12 +15,12 @@ export default class TopToon extends Connector { } async _getMangaFromURI(uri) { const request = new Request(uri, this.requestOptions); - const data = await this.fetchDOM(request, 'div.bnr_episode_info p.tit_toon'); + const data = await this.fetchDOM(request, 'div.ep_comic_info span.comic_tit span'); return new Manga(this, uri.pathname, data[0].textContent.trim()); } async _getMangas() { - const req = new Request('https://toptoon.com/hashtag', this.requestOptions); + const req = new Request(new URL('/hashtag', this.url), this.requestOptions); const api = await this.fetchRegex(req, /fileUrl\s*:\s*'([^']+)'/g); const request = new Request(api[0], this.requestOptions); const data = await this.fetchJSON(request); @@ -34,11 +34,11 @@ export default class TopToon extends Connector { async _getChapters(manga) { const request = new Request(new URL(manga.id, this.url), this.requestOptions); - const data = await this.fetchDOM(request, 'div.episode_list ul a.episode-items'); + const data = await this.fetchDOM(request, 'div.eplist ul a.episode-items'); return data.map(element => { - let title = element.querySelector('p.episode_title').textContent.trim(); - const subtitle = element.querySelector('p.episode_stitle'); - title += subtitle ? ' - ' + subtitle.textContent.trim() : ''; + let title = element.querySelector('p.ep_title').textContent.trim(); + const subtitle = element.querySelector('p.ep_stitle'); + title += subtitle && subtitle.textContent.trim() != '' ? ' - ' + subtitle.textContent.trim() : ''; return { id: `/comic/ep_view/${element.dataset.comicId}/${element.dataset.episodeId}`, title: title @@ -51,4 +51,4 @@ export default class TopToon extends Connector { const data = await this.fetchDOM(request, 'div#viewerContentsWrap source.document_img'); return data.map(element => this.getAbsolutePath(element.dataset.src || element, request.url)); } -} \ No newline at end of file +} diff --git a/src/web/mjs/connectors/TruyenQQ.mjs b/src/web/mjs/connectors/TruyenQQ.mjs index 3ceba779faf..8219fc4f602 100644 --- a/src/web/mjs/connectors/TruyenQQ.mjs +++ b/src/web/mjs/connectors/TruyenQQ.mjs @@ -7,7 +7,7 @@ export default class TruyenQQ extends Connector { super.id = 'truyenqq'; super.label = 'TruyenQQ'; this.tags = ['manga', 'webtoon', 'vietnamese']; - this.url = 'https://truyenqqne.com'; + this.url = 'https://truyenqqviet.com'; this.requestOptions.headers.set('x-referer', this.url); this.config = { throttle: { diff --git a/src/web/mjs/connectors/TuMangaOnline.mjs b/src/web/mjs/connectors/TuMangaOnline.mjs index 0e473c55654..0ec1bab6849 100644 --- a/src/web/mjs/connectors/TuMangaOnline.mjs +++ b/src/web/mjs/connectors/TuMangaOnline.mjs @@ -1,5 +1,5 @@ /* eslint-disable */ import Connector from '../engine/Connector.mjs'; import Manga from '../engine/Manga.mjs'; -const _0x26e904=_0xdbd7;function _0x5169(){const _0x464752=['W5X1WPmwWRddO07dOmkxW6KcqdldNCoVWOddQeOmWR4','BsZdJKxdLCoIW5uJ','yePaWReN','W7VcOqxdKM1XkSklWQZcHSomW6HNm8kBW6VcTwtdStJcMCocD8kjACoSWQJcISo+W7ddH8kAivxcQ8kvAXdcOSo9ksxcQLldMq1JW5ddLrhdS0tcMSkDWRJdGmo4fCknmmkTewLq','ae1RCrNdSJu','kheNexC','dsRcUq','WRhdPSkIW6S','WRSDDCoyWPxdJmkGzHRdHGPU','WOa6xCkHWRPKFCkxWPZcUHT0umkqWQTVy8oHCmohWQlcHmoXp8oUW50gtZtcPhhcVXhcNvD/WPzTWQHnW6WgW7yFWOPTAIn5WPxcHSkcrCoYlgZcGHtdVsRdPmkbWO9d','W59ZhCo1','W5TIgmoOW7m','uSogW5DzW5pcOSk6W5VcICoIWOhdPKxcOG','iXOkW4zfssJdQSkWoCoJWRS','ddhcUSksW77cKwvLW57dL1xcNCktzSkmgCoDtSoii3BdUmoinCkpgSoxEYtdHvxdLmk6W6DcEmkYi8kxeCo7W6hdV8ozuLzdBCoiiK4hW5ddT27dTwamW5HQWRxdNCoxWQS','gCo4mCoqq8kaW7tcKWzmrXiUbsyWeCkPWPvWW6OFW4hdUCoWWPJcTmolW4uNhXSQW6OCyxqcmmkKW5TSW7ZdJmokWRZdUvfskSkTcWBdJCk3wComWP/dUXRcSMxdQey','WPCFzmo4WR/dICkKErVdL1a1WO3cTryzACouu8owW7JcSGRdH8oTWRNdSSkzW7hdPfeocCoXW4JcJ8kTWRnfWQedWQa1cSk/WOPNaCkvWRdcMdiDrSo5W7pdUZdcSSoSz2pcPxi','WRyhWO5pWOm','gSkEnCkMqSoBAv5wW7/cQq','jrtdV8kEr8ocWPWfoshdMJZcNCo5aCoQ','WOldU8kmWPbIW6im','W50eWRDqcmkvk2KHvXBcNfJcQxGXWP3dHG0jWQ7cRepcUZzBpqSXyKtcSCkLW4pcMt/cUmkdlaJcMCkUWPTWW67dTJtdL2D6BZVdQSkeW547W7BcUcXrWRpdISkwuW','W6ddKsldRchcImoVWRPJWRKxztScCCkkW7rEWP8gW7NdVSk5W5TUWQvzB0KWWO5slSkEhmoIWQP5g8kGgWnIgZSuWRrNW5bbW6ldP8ofWQ3cM8kWFSoDW48pxXtdGea','mmk8WO44WPu','vmklsmkEWOFcRCkFCu5kWQ8BkueDqKlcTrVdUH7cM0FdMCoAy8oyW7u3W68AWOu2WOJdOmkRW71BeH8gm8k3WOJcHmkVW7fDWQddQCkvW4uqW4j7WQ7cGbtcHCo+qSktW53dTG','b3FdGNJdKCoMW7WLveC9W5K4BCkAdmozjY3cOa','jL13zrldPIdcVfu8oSovW6K','WQnQpKry','W5BcGSk3W4iu','nmoNACoRWPpcHupdOmoDeCojW4BdJGJcMq','W5xcRCoiW4LWW6uUW4ZcSd4','x1PhW4GhdwlcPmo+mmkSW7ddLMXTW4RdQ0hcUNVcGmkaW7S/drOQbmoBCKCMWQX0u8kHW7CmWPhdMSkdW7NdSJtdOdRcTmkAAbxcTvVdRgldMeVcJx5PAq0n','cWhdT8oPW44','b8oBbmoxW5m','CCk7umkeaa','qs3dOmk+yW','WOr9W5qAW7BcPvdcS8ovW7Xhu3i','W7X6bSoUW7mUmCkjWRBdIf4LbCovW7G7mmoHc8kkW7hdUq','c0FcQSojmCoeWONdHSkRgSkqmG','ev/cS8oti8k5W5hcQSouDSoE','W6NdPGO','y8k6zSk9aq','W77dRa7cN00','aCozba','W7mIW47dH8ky','W6yZWR7cKCksqSop','WPeiFa','F0iwW5hcVmkpWOBdLJFdJq','mwJcGSkQWOrKd8oPb3STWRVcHIFdPCkiuWDoW4ZcQSoTCMlcHH0hhSkcW7NcHCk2W5ZdKcVdOqPPwSk9WQddSmoRxJVdPSoJW4aijSkCwmkcl8kdawz3WOZcLCoBamkYoa','W7dcOSkpW5yp','W4qNWRtcK8ko','pfWBbM5ArSkbW7pcISo7','WRvNW7FcI8ksrColuY10W4/dQWtcIKagWOK2s8kGWOpcKd91gZPQFCoGjmkMs3VdKwHsxKFcS0ddPbnThSkUkfBcTmoGzmonkSoyemoWxYRcQSk0pq5lCH8','W6xdGZtcRMq','WRddPSkN','AI7cNsxcNmoBW64mAxG9','r07cP8oklCoZWR0XdedcIc/cJmkmiCogft7cHtRdRCkJW5ldT8kFvYJcJ8oAW4jtW4JcJxPCAmk7j1dcNdD1mSk4WOj4WO7dT1m5bajvoSocguRcKXunW63dK8oRWRe','W6S6FuK8','v3ncW5KQW4ZcO8kVWORdV1mfWQScW55UW496yWvPhr1cWO0jWQnLWR7dMCo2emooDYL6WQdcRCosWP/dIhHCWOBdQ8k5C8kCmCo5W6zNnSolW6aQfu3dIN0tWRVcStS','ur3dRCkvoSoqWPZdJ8oYvSorCWPQF0RcOwBcQCoEkqPIFaqprN8kW6ZcH8kIWP/dGqxdPSkPzY5YW5xcULTMqthcLZ/dRCkSwYPwjW3cS8oCbqacW4rhW54b','W5vciSkBW6/dT8kJxHNdLri','WRyfrSoteN96W6/dO2pdO2BcHgrzWONcLmoqWPRdSSoAWRlcHuZcPSobWRXgWQddUXFdPqT+W43cHJpdImkaW5pcLb7cJCkoW4TiW4CsW7dcTmk4WOKTimkOqCosW7uTWP0JqmojaW','W4BcUSkfW7SXWQDyWRxdQhFcVmktW6jUW5W+W4BcUSkDrCovdI3cOmkLF8oaWQFcLIXcW7pdO1iorYBdTHSJkmkZjxH1W7yxWObrtsH7FmkxhCkUdCkDxNHgWQxcTgq','gmomySoQWQG','sfCWWP9Z','WPCFCCoEWRxdJa','trRdR8kcAmkeW4e','WQtdPmk7W6RcGG','a8kXWRddS8klDmkFbsuo','gGldICoFW6i','hbRdPSoKW597wcD7D8kpbemre8kNW6/dTq','WQjkW5NcV13cPCkyohP4W5HpWOD6WORcSsy/bSkKxvFdMeNcRMpdO8oZgwmFqNCpkHLaW7WuW4NcMb3cIXuyd8odrSkQWRybq04go8kOufVcN8oGESoqECo9','h8kHW4JcOSkVs8kJpwLQ','C304WOnqaq','exjbomkNW54','ACowW49jW4BcTmkTW43dO8kaW5JcRtxdUWpcVmoDuJnvWPeZiu7dTmoPWRFcPsjXWPnDWOdcGcRcMuBcScZdKbLlASoaWRBcRtD0W4nHkmkfgbpcNM0xmmovgCoUWQtdRIu','yHRdGxVdSgFcM8oXjNldHhDqW6qRWOhdIX3cJf7cLSkhiuhdHNpdUxD/WOddTmoIFCoXzHH+DSklW6FcLXGRWONdVs3dPmkOW7aDCmkbfCkHW7fiWR3cNvuow09nuG','W6ffWO3cVSkkhta+eSkJy8kRW6Hjsf9ckrKoW75hWQJdJSkezSkInrdcUSkzcSkkqq/dPuSjW7NdStSQWR0rbu0DW6BdMHNdMYChq1RcHdhdIvS+kSonDd0','W7eMWPFdQGu','WRdcSmoiW5/dPa','W6eEWQFcVSkkhta+eSkJy8kRW6Hjsf9czvXAW74eW6dcJ8oumSoNnqBdSmobsCkLnfhcNrLgWQVdUcaaWR0rbu0DW6BdMHNdMYChq1RcHhFcHGK2zSkiFrC','W5P3bCo0W6iPkCkJW6BdRLi7hSod','WQmZWQHWWQK','WPC+WRjwWRu','yZnirtWtfSovWRRdHCk1xXTKb3GwW5tcU8keoSoQfmkdWRGBmca2W7rourGibSkTWRvtWOhcHNKaW5lcUs7dJ2jqnSkUWR3cMWSxmSo6W4COWQXzW4vwgd0','W7/cOX7cRqu','W4LIbmoTW74','iu1U','rSoUW5BcT8kZsSk4oW','WOxdOuNdGeCxW4/dKZhdUbJcJLqTW5RcLSkRFCk0W5xcLGigiSo8WOC+cmkRzCksfCoMW5VdI8kLaCkHW6xcTu9MW7NcQG1ifstdLuZcIGq3rNj/W7XRW715kG7cSIS','W7XCB8oJW6K','W6JcRH3cHZu','ibqAahPwrmkqW6G','WOr4bKLz','nZ4BWQTV','zLns','luSe','kbBdQ8kFB8oqWOy','W6vaeG','crBdRG','fSkZdmkHCa','WQZcM8oiWOBdKCohmtVcMqhdMSoWW5ZdSMj1WQJcSCogdG','WOuoDCoiW7hcImoHmq3dGGT+W4xdSu4aymkgySo8W7JcSGRdH8oTWRNdSSkzW7hdPfeocCoXW4JcJ8kTWRnfW7vrW7K1uCkvWOPNaCkvWRdcMdjaxCotW7pdUZdcSSoSz2pcPxi','yGVdHCkKWQDWja','WOj4W6JdTSo4','y2fwWO4a','p0LI','isddJG','WOGFzmkmWRxdJmkGzHRdHGPuW6dcTryh','W7u0tSoCW7VdKJldG3VcTSoHiSoZW5y1jSo2WPjzEIa9tLtdS8kPW7zXWQhcPSoTc8ovWPHXW5nSW7bIWRxcUa3dOSkbWQ3cR2WRuZ/cLHdcSmkkl8kIWRxdK8koWP3cJJpcO3C','W6OXthem','f8kulmo1zmomE3HAW6ddSY7dUwGxWQVdUSknWPNdTmkmathcLmk7W47dS23dLrrvW4PXW4CmWPZdKInDW7BdUSkSuvZdL8o4dCo7WPhdKXlcGmohWQ9cW4ZcKSk4bsG6WQLtWQy','o0zQCqG','W4ddJHxcGxa','W4jxW6TvyCoAz8oTxc1f','F1DAWPWTd23cT8o+FSk8','W4bxl8kKsG','dSkOjCkvW7ddJqlcSmkjvmkBWQRcH0BdKSkGrZOKW5GSbSoaWPhdImkEax/cKGldO8k+qbVdISozW4LKqSkd','WRfaWOZcVSobWQtcNaH5WPf5W6bLlINcGq0fmvFcPmoWrgTouN1WWRGRlmoYkLyYW4nLlCkNodtcQSkZW44Yp1NdMmkNW7XCW6VcLmogB8k+W6mvWRjLWRxdGHxdSG','W4jnd8kaeIG/WQ3cScRcTYpcHcawW4ZdH8oqW5tcVCkoWRldLr7cPCowWRTfWRdcUHhcOfW/W5hcHchcNCkaW47dIqBdGmoaW5XrW4muW6BcOSodWOmSnmk0gCoUWPfPWP1ZaCkAvW','W4pcPb3cGW9IWQy','W4pcQSkxW5SG','n18FW4FcSSkjWORdKsVdH8k1yCk5W7jLpmkXFSobtW42W69QlSoqW7zRW6/dMbFcPmo1WOq4pc06W6dcGq3cJGRdM8oskmkHl8oeWPipBKNdRcG0xL3cNqr2WPKIWQy','h8oOFSoWWQtcMu7dTq','WRDtsmk+cG','fHldUmkpzG','sSo1WQ3dQSoVv8k5ecyWWONcVqldPCkLW53dIXTqWPJcTHxcJgJcN2fmFs/cV1bKWQuUWQfpzSk+lmobomk/W6tdJdpcPxWEW5pcNutdGSoYW5ucWO7cSudcISkuoCoCzcS','WPLnW6hdHSoK','W50NEhqxmG','WOxdOuNdGeCxW4/dKZhdUbJcGabLWP/dMmo+i8oXWPFdLL1yEmkIWQ0JfSkRn8oxrSkPWPFcNCoGcCoZW73dRWqdWRFdUuHgqhBcMui','W4LDW6rcCmoAyq','BCkTxmkrdCohWRxdVeGadLXR','W41zWPqZWOy','W6nxcG','iZBcRCoEWPDMtmohW6NcQ8kgy15qwmkqW5ZcUCkAW6LHWPP6CZVdGmkTkCkgdCo7ovhcTmkAlq3cHM7dKLX7CSo+W5BdVCoNW6xdT8olWOG0WO3cTG0RWPVcOvGUW4NdKHxcQq','WPFcO8o4W43dNG','hc/dMCoOW68','WPrRd1nEWRWAo8o8D8k8W4dcS8k1yhxcQ8oRWPRdVf3dOCosWRtdTehcLSoSWO/dVwv1uIBcMMeZWPFdH8k+AZ/cK8kbvCk1mb4pW63cQCksWO3cQmo7WQC0WOVcN1ldIutcNbS','W4OiW6BcIxmJf8kHuJu3WQfZW4ddG8kwW7jyW7aqvbBcIGylAwddVHJcOSkxWRVdLmkoWPxcGCoNW6KYWQa','W6RcKSoDAWW','W6ZdIbZcKue','W4zlWR/dNsfQwCoM','W6xcTmoRWQBdM8k4WQCKWPVcLt8SW5P9W7iqkLNdGthdQCoRiHiMW73cKSotW68JjSkbk8kJW5NdRxtdV8oNqHvncHXLW6rjEudcKSoXhwyPW5KBj8k4o1dcPmkAr8oS','WPRdKSoeWQ5fqCk+s8oYdMRcQSkxisLdWQhcRw9Ho8kmv8oMW4bTW4ZcGCksW7KlW6ddHupdNsD0WRFcSIT3WQXTW6nBBCo9h8oYxbKNWO5ed8oiW47cTmkdutVdLteY','WOujW6uvtSoqEsXZ','gSkbWQ0eWQW','buf7nCkI','aL7dQmkpBmogWOahkG','jh3cLYpcMG','W5/cGCkqWQzcdCo3mmk2tZ7dQ8kAAgChW6tdTu9VkCkOemkJWPrLW5ZcImksWQvxW6ddGuVcMgSXW7RdT2uJWQu+WOOxiSkUwSkHcbeGW5SiaCklWOBdTCotbx7cHZX+','ktNdU8k7Eq','W5TkWOJdJcSJcSkHqI43W6G9WOtcHSooW7jeW7bceuxdN0PFzZtcT0ZdRSosWRZcK8kwWPZcISk6WR0OW74fWRddV8khm3SjvctcP8oRhXyKW7arheVdQ3tcNmozW77dLa','EbLirtWtfSovWRRdHCk1xXTKb3GwW5tcU8keoSoQfmkdW6TyCw56WRuAhKPBhmkTW45DW53dJs5hWPNcUIFdIxrkpSoWWRVcMWLwp8oWW5f0WQTfW40rftO','isjMW5ukurnUW73cQwldUuy','W7BcTdVcIIO','WOxdOuNdGeCxW4/dKZhdUbJcGabLWP/dMmkJl8k9W4pcKK0qoCoRWOC+fSoLCSkarSorW7RdSCkixCkNW7dcLfP4W6lcVbSssh/cGMJdMefNcJm8WRLJW7OPA0NdU2u','cCocBSogWQK','CeVdKmowWQzuug89WQXeW70uW45aWReOWRbBW4BdTbJdNCo1WQe+W7udWQRcMCkMi8kUWO3cGCkQq0SdytPJcSkQW4zFBX9iomoqW43dTCoMWO19AqyMlSoAWO1QW6a','WRbrs8kMna','W4aaWP7cQCkz','kceo','W5CKveCU','rmkVW7hcPSk5v8o7kdSYWOlcRcddSmkZWP/dIM9qWPZcUqBdIhJcL2fsmgBcVX82WRTJWQvnESoZo8okpCoKW6JdKsNcSYLJWP/dHuVdPSkMWODlW4pcUuNcG8kye8oCzcS','WPjEW5KAra','eSkHWQxdO8k1sSkImcW0W5BdRXRcQSo4WPBdHXPzWOtcTfJcG3xcMNrlmhRdPLnIW7y3W6bnDSk+oSonp8oKW7xdMJ/cONzfWPpdMLFcVmo1W5X/WOddVahdMSkCFmkqiwy','W6vxbq','WQ7cG8oRW4hdHmo8wSk7W5G','s0ldT8khFSoBWRSr','W4zDW7fND8oBFCoIxtzsW43dGYeR','W6FcSmoFvWaLF8oCWPFdIG','wCorE8o1fSkjpb0cWRddUYNcVYrwW6ZdT8oeW5RcU8ocddNdR8k2WORdP1VdKf4EWOO7W7CvW6JdGcnDW7BdUSkSuvZdL8o4dCo7WPhdKXlcGmohWQ9cW4ZcKSk4wdmqWQLtWQy','ls3dPmonW6O','jYddGq','wCo5W6FcMSki','W73cIcVcNXq','WR4HW4DgW6pdUuhdR8obWQbrd2ddH8oNWPJdPNKrWRZdHfiWWPddL8ocp8kvW4vMW69UWPHErmoff8oFW5GWlSkYASoZBrxcGSkwiSkqWRldNmkBWRrUAahcPa9XWQnQWP06','WOPVW6i+zG','W48YAwOn','ed3cTmkyWRFdQty','BgnAW4K/W5RcTmk5W6dcNqPoW5TB','WOlcI8o7W4FdT8o4e8kOW4ldPfFcL8oDWQPfbCo0WOauqcVdIxVcMSkismoyjMdcHComWR53WOhdVHtcHmop','cY3cUCkiW7ZdRYWXWPlcKGBdPSoAkmoixmkfm8oikhBdV8oitSkigSoCE3BcGaBcGCo2WRnmk8oXySozxCk6WRxdTmokvwWqi8kiB1a1WOlcSwFdVe5oWOyjW7tcKCkEW7e','dIVdRCkuWQe','dmowWQCiWO3dOCodWOJcQmopW5y','sLRdOCorW5TZuYi','jJFdK8k5WO5LfSkigMOWWRZcHZa','bmo6qSo1WRW','sWRdO8kdF8kFW5e','W4RcGZ7cLce','fmo4xmkrdCoiWQpdKGzb','WRyfrSoteN96W6/dO2pdO2BcHgrzWONdHSkvW5dcT8kzW6BcJqlcR8oxW7jKWQFdQb/dSHL5W6VcLG3dNmkcW4ddMZ3cGSkmW4vtW4nvW6BcOSkrWPyMnSoTw8oJWPbUW5zMbmojqG','W7FdQHdcTeFdTmoCACorl0y3sCk+FCkHnLWOW4miW7L1W4ldUuZcGWBcNCkMmrbfyervyM3cM8oDWOdcKCoEm0LRW5RdJ8o3W4ddKmkSWOmRW5dcSfBcHCook8kUWRH4W5a','W59fWOldJJi','W6HDWQpdSrK','W7BcNaxcLd4','W7hdVqG','W7ZcOCkTW7SH','v3ncW5KQW4ZcO8kVWORdV1mfWQTmWPS5W48kmuOKve4hWOubW7eGW63cLSk6rSklEYKOW6xcTCosWPBdMtiiWPpcSmoRESo5y8oWW71nnSolW6aQfu3dIN0tWRVcStS','swNcUmkrWQBdOWW2','jKDjCa7dQc/cTa','jI7cKSodusxdVq','cHldRSkczmocWP8h','WOddV8kmWPj5W4m3W5G','dub7AHJdRstcKfq+pCoEW69MWQmNW5X8W7K','W5faFmoEW64','AqLDvvzKF8kSW7BcRa','W648cCoqqwddGSkEW5fUca','WPu/W7SRiCo1Aq','WONdOSknfsedq8oqWRRdGq','W6WbW5FdTW/dOmoEohX+W5GdW440WO3dUJv6b8kxqapcLWdcTh7dPCk4qYeeqh0hFLu7W4C2WOtcNqBcJbWEq8kbgSkLWRHyaLjLDCoPbb7dM8oNC8oqjCkH','wXVcR8keF8kdW5BcISoYe8osoa9YnKJdVN3cPCodBGrWkWPcbY8cWQNdI8oNW5lcHeVcSSkPEJbYWPddTH4Rbh/dGZhcRSoGgNLysqNcSSoktK0yWROeWPyj','icj/W54ZrGC7WRVdVGhcOWncW65mpc1lrh7cQqblW6ldQ3pcTeG','yCo0W5FcQCkm','W6lcGCkcW5yR','kN9mm8k3W5CttmoNsW/cTmkKWRfyWRtdHCoWla','gmoLBCoTWRpcHq','WPT6mND6','vgedWPjb','W4iWqveJ','W7HMx8os','W5xcTSourcW','wmkSDmkurmkmW7tcLeunfffVqwm3rCk7WRzAW6OFW4hdUCoWWPJcTmolW4uNhXSQW6OCyxqcmmkKW5TSW7ZcHCkmWRtdVvLvySoOsKldJCoJemkwWPddV0NdUcpcTey','mK8siha','dCkEcmkHrmoaCLO','eSkHWQxdO8oHa8o2FgLNW4ZdR2hcPmo2WPJdG1muWPdcOf7cKNJcINfAjNZdOGqbWQvJW6abp8k+FSke','WOGkq8oGWQC','WO9bW6yftCogFWzXa1/dKXBdUG','mJ3dKmkjWOP1cG','WQjrWP7cQ8osWRtdVN8WW5qwWRa','W5vdj8kAW6pdJCkMyIJdTrO','WRvFW6ddRq','kc7cH8oexbpdGCks','WQejW5q7fW','W4jrxCo8W58','WOHPFSkHWQD6FComWRBcUHT0umkqWQTVy8oHCmohWQlcHmoXp8oUW50gtZtdQdtcP1tcMXjGWOPVWRDnW6WgWQK9WO04jI06W53dH8oseCk3FMhdJL3cRN7dPmonW4zd','WOqCWRe2WO8yW5uMW73cHvGXW64hq2ndaXLcWR/cI8k9q3pdJmoag2yngYVdUxyUWRHxmCktvSk2ECk7W6pdOmkHWQD2AW0gW4S4lbKnWPZdUmopW6dcPMuBWR4','AqXFu3b0zmkEW5BcNq','BMVdK8khfhFcRSo/vc/cT3hdVqRdPHxcQSk6uc5aW5ZdHCkObCktW73cT8kjjSkcW5eOhwFdJSkuu8k5gHWEy2tdHSo9ASk6B1LlCCk0AmkfF8khWQ7cTGCYfmkeWRi','WRfaWOZcVSobW6JdMvX5W5aZWQe9lJtcGqKlCb3dPCoKhG8jbZW3W714nSoYuvG8W41HjCkGBxJcPmoWWOzZBW3cNCoXW79rW6JcHSokB8oVWQPhWRn9WRBcIrldOW','dq3dSSoWW45TBWDLBCkdcfKn','dhfGhmkj','qhShWQX4','ia/dPSoXW6H2EJHHFmkyk14qcG','s8k9ymkfbSotWQddVfyydL1GvG','kLWzehLaqSk6W6RcKCo8efu3','W7pdJCkSW67cT8o+W4e','W7VdHYFcVM3dLCoRWOD2WRTwltey','WQusvSoluZ0mWPBcUYO','WRVcKCoNWPVdHG','W7DCWOJdPHS','iu17DH/dQq','W5neW7uTW4HnW68fWRNcKN4M','WPKIrmkXWRrTACkzW7ddRxGUfq','WQ/dUCkYW5tcNG','W6edWRNcVSornZa+eSkJy8kRW6Hjsf9ckrKoW75hWQJdJSkezSkIz1xdSmoCsCoEsqpdSreuW67cQxvfW65fcXLeWRBcNXFcJ2HYeWRdGwpcQHPTB8ofibC','nSk1WQ4/WOq','W5zJWQP4zSo5FmokW7Xgaa','DhlcGSoSW4S2qSoNsJ55W7pdIwpdQCkIuWDoW4ZcQSoTCMlcHH0hhSkcWOlcI8k4W5ldLcpdPKWMcmoWWQFdUCkwuh3cQCkXWQvjzCouumkrmSkDvMySW53dH8oqqCkHnG','eWqoWP9z','WO9TASkUoq','leSbca','W4NcItZcTXa','gvOIcxO','hY/cM8owWQ8','WQDBW7pdVCocAfK','WOuYoCoGW6K9pmomWRS','W7f3tSkffvRdLmo2WPS4sIikW6pdOg3dTmkMW47dIeafrKrQbmkDWQK3W6BcRCoKo13dHHNcICk7WPxcK1RdMSkDW49xsvKjW64jWRqEW4NdNmkfW7JcR8kiB8kcuHVcLSot','W4NcL8kfW7Wgcq','W5fWW4PsFG','xKS0W7/dPa','WPbfW7Kxsq','W5FcPbNcJazuWOO','WRFdVSktWP1K','W4i7WO/cI8kJ'];_0x5169=function(){return _0x464752;};return _0x5169();}(function(_0x322e64,_0x5530c0){const _0x48f4fa=_0xdbd7,_0x2c231f=_0x322e64();while(!![]){try{const _0x4e0989=-parseInt(_0x48f4fa(0x184,'b6@A'))/(0x163*-0x17+0x2470+-0x48a)*(parseInt(_0x48f4fa(0xb2,'Aslv'))/(0x632+0x337+-0x967))+-parseInt(_0x48f4fa(0x147,'muSx'))/(-0x17*-0x113+-0xbc7*-0x2+-0x3040)+parseInt(_0x48f4fa(0x103,'Nlnl'))/(-0xbc*-0x1b+0x1448+-0x2818)*(parseInt(_0x48f4fa(0x14b,'C%cx'))/(0x1845*0x1+-0xa97+-0xda9))+parseInt(_0x48f4fa(0x142,'Jh6K'))/(-0xdc9+-0x1140+0x1*0x1f0f)*(parseInt(_0x48f4fa(0x118,'Wds8'))/(-0x6ca+0x69d+-0xd*-0x4))+parseInt(_0x48f4fa(0x11b,'A(we'))/(-0x1*0x1387+-0x1*0x146b+0x27fa)*(-parseInt(_0x48f4fa(0x199,'tR^N'))/(-0x5e3*0x1+-0x1*-0x897+0x2ab*-0x1))+parseInt(_0x48f4fa(0x12f,'IiJT'))/(-0xf28*-0x2+-0x2338+-0xd3*-0x6)*(-parseInt(_0x48f4fa(0xf2,'o0xn'))/(-0x1*-0x1ff9+0xcc7+-0x2cb5))+parseInt(_0x48f4fa(0x169,'@z*E'))/(0x11f3+-0x67d+-0xb6a);if(_0x4e0989===_0x5530c0)break;else _0x2c231f['push'](_0x2c231f['shift']());}catch(_0x4f4fba){_0x2c231f['push'](_0x2c231f['shift']());}}}(_0x5169,0x36d05*0x1+0xd*0x62ff+-0x51b57));const _0x282754=(function(){const _0x58ff8a=_0xdbd7,_0x96f82a={};_0x96f82a[_0x58ff8a(0x101,'Aslv')]=_0x58ff8a(0x16a,'l1NV'),_0x96f82a[_0x58ff8a(0x15f,'l1NV')]=function(_0x5ecd4e,_0x19c202){return _0x5ecd4e!==_0x19c202;},_0x96f82a[_0x58ff8a(0x123,'4#3v')]=_0x58ff8a(0xe9,'rxR4'),_0x96f82a[_0x58ff8a(0xd7,'^)u5')]=_0x58ff8a(0x151,'Wds8'),_0x96f82a[_0x58ff8a(0x14e,'rxR4')]=function(_0x55a51d,_0x2a9c81){return _0x55a51d===_0x2a9c81;},_0x96f82a[_0x58ff8a(0x157,'JWa4')]=_0x58ff8a(0x18e,'npl!'),_0x96f82a[_0x58ff8a(0xaf,'Rl3o')]=function(_0x3a0098,_0x1f95ac){return _0x3a0098!==_0x1f95ac;},_0x96f82a[_0x58ff8a(0x10f,'npl!')]=_0x58ff8a(0x19d,'fi]w'),_0x96f82a[_0x58ff8a(0x15b,'BUcV')]=_0x58ff8a(0x187,'^)u5');const _0x4c09e4=_0x96f82a;let _0xf3f5c4=!![];return function(_0xe9a483,_0x5ecf22){const _0x19d81a=_0x58ff8a,_0x2c4829={'hStfn':_0x4c09e4[_0x19d81a(0x10c,'b%L^')],'WxPtX':function(_0x1ef42f,_0x5961a2){const _0x105f8e=_0x19d81a;return _0x4c09e4[_0x105f8e(0xf8,'1(jY')](_0x1ef42f,_0x5961a2);},'jvzEl':_0x4c09e4[_0x19d81a(0x125,'mpA0')],'NWlfS':_0x4c09e4[_0x19d81a(0x1a2,'Nlnl')],'pVVhq':function(_0x28ddcb,_0x50d979){const _0x3b073d=_0x19d81a;return _0x4c09e4[_0x3b073d(0x13c,'fi]w')](_0x28ddcb,_0x50d979);},'SJaQs':_0x4c09e4[_0x19d81a(0x162,'Wds8')]};if(_0x4c09e4[_0x19d81a(0x107,'PC6!')](_0x4c09e4[_0x19d81a(0x133,'C%cx')],_0x4c09e4[_0x19d81a(0x18f,'zS5q')])){const _0x4cb549=_0xf3f5c4?function(){const _0x952733=_0x19d81a;if(_0x2c4829[_0x952733(0x15c,'zS5q')](_0x2c4829[_0x952733(0x129,'Wds8')],_0x2c4829[_0x952733(0x14d,'V*ko')])){if(_0x5ecf22){if(_0x2c4829[_0x952733(0xdd,'k^w]')](_0x2c4829[_0x952733(0xe1,'o0xn')],_0x2c4829[_0x952733(0x174,'@z*E')])){const _0x37e33a=_0x5ecf22[_0x952733(0xfc,'mpA0')](_0xe9a483,arguments);return _0x5ecf22=null,_0x37e33a;}else return _0x359f71[_0x952733(0x112,'S99u')]()[_0x952733(0x19e,'tR^N')](_0x2c4829[_0x952733(0x10d,')j%w')])[_0x952733(0xd8,'b%L^')]()[_0x952733(0x16f,'Rl3o')](_0x6f4dd0)[_0x952733(0x156,'npl!')](_0x2c4829[_0x952733(0xb4,'l1NV')]);}}else{const _0x4472b0=_0x269086?function(){const _0x53b371=_0x952733;if(_0x4434b1){const _0x3303b3=_0x4245d7[_0x53b371(0xa1,'muSx')](_0x4f5d23,arguments);return _0xcf457d=null,_0x3303b3;}}:function(){};return _0x14991f=![],_0x4472b0;}}:function(){};return _0xf3f5c4=![],_0x4cb549;}else _0x9de4fb=_0x500bd1[_0x19d81a(0x17e,'Lts1')](_0x3b3940)[0x1ff0+0x30f+0x121*-0x1f][_0x19d81a(0x164,'S(jO')]();};}()),_0xa22f77=_0x282754(this,function(){const _0x9539b0=_0xdbd7,_0xd08be7={};_0xd08be7[_0x9539b0(0x180,'b6@A')]=_0x9539b0(0x183,'b6@A');const _0x1035bf=_0xd08be7;return _0xa22f77[_0x9539b0(0x12a,'Rl3o')]()[_0x9539b0(0x145,'S99u')](_0x1035bf[_0x9539b0(0x189,'IiJT')])[_0x9539b0(0xa3,'1(jY')]()[_0x9539b0(0xbd,'JWa4')](_0xa22f77)[_0x9539b0(0xcb,'mpA0')](_0x1035bf[_0x9539b0(0xe7,'uVEN')]);});_0xa22f77();function _0xdbd7(_0x5a3b5c,_0x58c7f8){const _0x5926d9=_0x5169();return _0xdbd7=function(_0x1a65cc,_0x4fcb6c){_0x1a65cc=_0x1a65cc-(-0x2bf*0x5+-0x35a+-0x5e5*-0x3);let _0x91b5ed=_0x5926d9[_0x1a65cc];if(_0xdbd7['SbpUsT']===undefined){var _0x11a12e=function(_0xc51ac){const _0x4c7062='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x104f4d='',_0x4d9731='',_0x3fe99a=_0x104f4d+_0x11a12e;for(let _0x2fc08d=0x14ad*-0x1+-0x1a5*-0x5+-0x31d*-0x4,_0x402081,_0x2b731a,_0x1cf2d8=0x1a24+-0xc*0x190+0x3b2*-0x2;_0x2b731a=_0xc51ac['charAt'](_0x1cf2d8++);~_0x2b731a&&(_0x402081=_0x2fc08d%(0x11fd+0x194a*-0x1+0x751)?_0x402081*(-0x1d3*0x13+-0x2*-0x79d+0x1*0x13af)+_0x2b731a:_0x2b731a,_0x2fc08d++%(0x2*-0x8ad+-0x1d44+0x2ea2))?_0x104f4d+=_0x3fe99a['charCodeAt'](_0x1cf2d8+(0x1*-0x22f3+0x2*0x123a+-0x177))-(0xf4f*0x1+-0x1*0x20f8+-0x11b3*-0x1)!==-0x2021+-0xb31+0x2*0x15a9?String['fromCharCode'](-0x7*-0x2bf+0x3bf*0x3+0x13*-0x18d&_0x402081>>(-(-0xb8*-0x20+-0x17fb+0xfd)*_0x2fc08d&-0x1970+-0x8*0x3fb+0x2d*0x146)):_0x2fc08d:-0xc7*-0x1+-0x22ee+0x2227){_0x2b731a=_0x4c7062['indexOf'](_0x2b731a);}for(let _0x3ca180=-0x2351+0x131f+0x2*0x819,_0x4a3b86=_0x104f4d['length'];_0x3ca180<_0x4a3b86;_0x3ca180++){_0x4d9731+='%'+('00'+_0x104f4d['charCodeAt'](_0x3ca180)['toString'](-0x2*0xf3f+0x22*-0x1+0x2*0xf58))['slice'](-(0x5e*0x6a+0x2052+-0x473c));}return decodeURIComponent(_0x4d9731);};const _0x7f4f79=function(_0x24770c,_0x130b6e){let _0x1e430f=[],_0x404bbe=-0x8a2*-0x4+-0x1a8f*0x1+-0x7f9,_0x1a49c6,_0x320e88='';_0x24770c=_0x11a12e(_0x24770c);let _0x584fc6;for(_0x584fc6=-0x1bcc+-0x7*-0x4cd+-0x5cf;_0x584fc6<-0xa*0xbf+-0xe39+0x16af;_0x584fc6++){_0x1e430f[_0x584fc6]=_0x584fc6;}for(_0x584fc6=0x529*-0x1+-0x8f*-0x6+0x1cf;_0x584fc6<0x9*-0x185+-0x17*-0x13+0xcf8;_0x584fc6++){_0x404bbe=(_0x404bbe+_0x1e430f[_0x584fc6]+_0x130b6e['charCodeAt'](_0x584fc6%_0x130b6e['length']))%(-0x1*0x1bdf+-0x1ba1+0x3880),_0x1a49c6=_0x1e430f[_0x584fc6],_0x1e430f[_0x584fc6]=_0x1e430f[_0x404bbe],_0x1e430f[_0x404bbe]=_0x1a49c6;}_0x584fc6=0x1*-0x65a+-0x241b+0x2a75,_0x404bbe=0x3a*-0x3b+0x1*-0x23f8+0x3156;for(let _0x241119=-0x13b0+0x1254+0x3a*0x6;_0x241119<_0x24770c['length'];_0x241119++){_0x584fc6=(_0x584fc6+(0x1318+0x1c71+-0x138*0x27))%(-0x1*0x13+-0x11*0x5c+-0x1*-0x72f),_0x404bbe=(_0x404bbe+_0x1e430f[_0x584fc6])%(0x1af5+-0x187c+-0x1d*0xd),_0x1a49c6=_0x1e430f[_0x584fc6],_0x1e430f[_0x584fc6]=_0x1e430f[_0x404bbe],_0x1e430f[_0x404bbe]=_0x1a49c6,_0x320e88+=String['fromCharCode'](_0x24770c['charCodeAt'](_0x241119)^_0x1e430f[(_0x1e430f[_0x584fc6]+_0x1e430f[_0x404bbe])%(0x214*0x3+0x1e9a+-0x23d6)]);}return _0x320e88;};_0xdbd7['UwnaUj']=_0x7f4f79,_0x5a3b5c=arguments,_0xdbd7['SbpUsT']=!![];}const _0x41b6e9=_0x5926d9[-0x8*-0x376+0x225d*0x1+-0x3e0d],_0x5ef105=_0x1a65cc+_0x41b6e9,_0x3e7a9c=_0x5a3b5c[_0x5ef105];if(!_0x3e7a9c){if(_0xdbd7['mceUvj']===undefined){const _0x391f87=function(_0x1ac3e6){this['wGZqaw']=_0x1ac3e6,this['iBUJPG']=[0x772*-0x2+-0x2579*-0x1+-0x11*0x154,0x2548+0x62*0x50+0x21f4*-0x2,-0x1*0x1d4b+0x224e+0x503*-0x1],this['EaRImi']=function(){return'newState';},this['PkxMSc']='\x5cw+\x20*\x5c(\x5c)\x20*{\x5cw+\x20*',this['vCbriU']='[\x27|\x22].+[\x27|\x22];?\x20*}';};_0x391f87['prototype']['wnuIuJ']=function(){const _0x123c8=new RegExp(this['PkxMSc']+this['vCbriU']),_0x3a23d0=_0x123c8['test'](this['EaRImi']['toString']())?--this['iBUJPG'][0x1b68+0x1f3*-0x10+-0x11*-0x39]:--this['iBUJPG'][0x875+-0x1*-0xd46+0x15bb*-0x1];return this['mDyiNX'](_0x3a23d0);},_0x391f87['prototype']['mDyiNX']=function(_0x52067d){if(!Boolean(~_0x52067d))return _0x52067d;return this['iaHAnF'](this['wGZqaw']);},_0x391f87['prototype']['iaHAnF']=function(_0x402838){for(let _0x25c196=-0x101*-0xe+0x1df5+-0x2c03,_0x36ce4a=this['iBUJPG']['length'];_0x25c196<_0x36ce4a;_0x25c196++){this['iBUJPG']['push'](Math['round'](Math['random']())),_0x36ce4a=this['iBUJPG']['length'];}return _0x402838(this['iBUJPG'][0x2501+-0x5d*-0x23+-0x31b8]);},new _0x391f87(_0xdbd7)['wnuIuJ'](),_0xdbd7['mceUvj']=!![];}_0x91b5ed=_0xdbd7['UwnaUj'](_0x91b5ed,_0x4fcb6c),_0x5a3b5c[_0x5ef105]=_0x91b5ed;}else _0x91b5ed=_0x3e7a9c;return _0x91b5ed;},_0xdbd7(_0x5a3b5c,_0x58c7f8);}class TuMangaOnline extends Connector{constructor(){const _0x3c4d9f=_0xdbd7,_0x4017f0={};_0x4017f0[_0x3c4d9f(0x14a,'@z*E')]=_0x3c4d9f(0x181,'Edzx'),_0x4017f0[_0x3c4d9f(0xec,'mpA0')]=_0x3c4d9f(0x10b,'b%L^'),_0x4017f0[_0x3c4d9f(0xb3,'()Qh')]=_0x3c4d9f(0x18a,'zS5q'),_0x4017f0[_0x3c4d9f(0x12c,'tR^N')]=_0x3c4d9f(0x182,'muSx'),_0x4017f0[_0x3c4d9f(0xa0,'PC6!')]=_0x3c4d9f(0xd1,'aN&#')+_0x3c4d9f(0x17c,'l1NV'),_0x4017f0[_0x3c4d9f(0xf9,')j%w')]=_0x3c4d9f(0x19f,'b6@A'),_0x4017f0[_0x3c4d9f(0x150,'PC6!')]=_0x3c4d9f(0x177,'S99u'),_0x4017f0[_0x3c4d9f(0xbc,'^)u5')]=_0x3c4d9f(0x15d,'Edzx'),_0x4017f0[_0x3c4d9f(0xca,'()Qh')]=_0x3c4d9f(0xce,'(oeN'),_0x4017f0[_0x3c4d9f(0x16e,'lfn%')]=_0x3c4d9f(0xdb,'VawC');const _0x338c5a=_0x4017f0,_0x1a8dbb=_0x338c5a[_0x3c4d9f(0xea,'zS5q')][_0x3c4d9f(0x168,'muSx')]('|');let _0x2b86d7=-0x171a*0x1+0xb*0x1f3+0x1a9;while(!![]){switch(_0x1a8dbb[_0x2b86d7++]){case'0':super();continue;case'1':this[_0x3c4d9f(0x131,'()Qh')]=[_0x338c5a[_0x3c4d9f(0x13b,'k^w]')],_0x338c5a[_0x3c4d9f(0x9d,'lfn%')]];continue;case'2':const _0x122688={};_0x122688[_0x3c4d9f(0xc8,'o0xn')]=_0x338c5a[_0x3c4d9f(0x179,'npl!')],_0x122688[_0x3c4d9f(0x190,'Wds8')]=_0x338c5a[_0x3c4d9f(0x186,'(oeN')],_0x122688[_0x3c4d9f(0xbb,'S99u')]=_0x338c5a[_0x3c4d9f(0xd3,'Nlnl')],_0x122688[_0x3c4d9f(0x185,'U%Tj')]=0x0,_0x122688[_0x3c4d9f(0xb5,'S99u')]=0x1388,_0x122688[_0x3c4d9f(0xa6,')j%w')]=0x1f4;const _0x478f7f={};_0x478f7f[_0x3c4d9f(0xc6,'uVEN')]=_0x122688,this[_0x3c4d9f(0x1a6,'fi]w')]=_0x478f7f;continue;case'3':super['id']=_0x338c5a[_0x3c4d9f(0xa5,'(0%r')];continue;case'4':this[_0x3c4d9f(0xeb,'V*ko')]=_0x338c5a[_0x3c4d9f(0x158,'Ggx2')];continue;case'5':super[_0x3c4d9f(0x192,'^)u5')]=_0x338c5a[_0x3c4d9f(0x120,'npl!')];continue;case'6':this[_0x3c4d9f(0x104,'Aslv')][_0x3c4d9f(0xfd,'TTru')][_0x3c4d9f(0xad,'Jh6K')](_0x338c5a[_0x3c4d9f(0xbf,'Jh6K')],this[_0x3c4d9f(0xb6,'Aslv')]);continue;}break;}}async[_0x26e904(0x176,'AIVa')](){const _0x1dacd4=_0x26e904;await super[_0x1dacd4(0xb0,'pLKV')](),await this[_0x1dacd4(0x167,'muSx')](-0x13*0x1d+-0x157*-0x9+0x1*-0x24);}async[_0x26e904(0x170,'o0xn')](_0x5ddfce){const _0x174508=_0x26e904,_0x5b75e3={};_0x5b75e3[_0x174508(0x9e,'lfn%')]=_0x174508(0x18c,'Ggx2'),_0x5b75e3[_0x174508(0x148,'S(jO')]=function(_0x1d68e7,_0x4f15ba){return _0x1d68e7+_0x4f15ba;},_0x5b75e3[_0x174508(0x152,'aN&#')]=_0x174508(0x154,'muSx'),_0x5b75e3[_0x174508(0x19c,'uVEN')]=_0x174508(0x1a5,'1(jY'),_0x5b75e3[_0x174508(0x144,'b%L^')]=_0x174508(0x108,'(oeN'),_0x5b75e3[_0x174508(0x105,'uVEN')]=function(_0x1a682e,_0x4f7388){return _0x1a682e===_0x4f7388;},_0x5b75e3[_0x174508(0xc4,'npl!')]=_0x174508(0x178,'4#3v'),_0x5b75e3[_0x174508(0x11f,'1(jY')]=_0x174508(0xc7,'rxR4');const _0x15792c=_0x5b75e3;let _0x352e4d=new Request(_0x5ddfce,this[_0x174508(0x13f,'Wds8')]),_0x5c9a53=await this[_0x174508(0x115,'BUcV')](_0x352e4d,_0x15792c[_0x174508(0xfb,'VawC')]),_0x496693=_0x15792c[_0x174508(0xa9,'V*ko')](_0x5ddfce[_0x174508(0x114,'o0xn')],_0x5ddfce[_0x174508(0x122,'uVEN')]),_0x2141e4=_0x5c9a53[-0x850+0x2330*-0x1+0x2b80][_0x174508(0xbe,'l1NV')];for(let _0x4e2482 of[_0x15792c[_0x174508(0xdc,'@z*E')],_0x15792c[_0x174508(0x1ab,'Y])X')],_0x15792c[_0x174508(0x196,'mpA0')]]){if(_0x15792c[_0x174508(0xee,'VawC')](_0x15792c[_0x174508(0xcf,'Edzx')],_0x15792c[_0x174508(0xe5,'PC6!')])){const _0x99319=_0x425eec[_0x174508(0x1a0,'S(jO')](_0x772ff6,arguments);return _0x35a65d=null,_0x99319;}else _0x2141e4=_0x2141e4[_0x174508(0xa8,'4#3v')](_0x4e2482)[-0x1*0x74c+-0xab6*-0x2+0x71*-0x20][_0x174508(0x14f,'Wds8')]();}return new Manga(this,_0x496693,_0x2141e4);}async[_0x26e904(0xf4,'A(we')](){const _0x38bc97=_0x26e904,_0x4b5d66={};_0x4b5d66[_0x38bc97(0x117,'(0%r')]=_0x38bc97(0xc2,'Jh6K')+_0x38bc97(0xb8,'(0%r')+_0x38bc97(0x102,'@z*E');const _0x3e3c78=_0x4b5d66;let _0x2f6aae=_0x3e3c78[_0x38bc97(0x9a,'Dy@9')];throw new Error(_0x2f6aae);}async[_0x26e904(0x165,'tR^N')](_0x596bd2){const _0x580959=_0x26e904;let _0x1ee977=_0x580959(0xfa,'Edzx')+_0x580959(0x166,'muSx')+_0x580959(0xef,'1(jY')+_0x580959(0x160,')j%w')+_0x580959(0xe0,'npl!')+_0x580959(0x173,'^)u5')+_0x580959(0x191,'zS5q')+_0x580959(0xe3,'Wds8')+_0x580959(0xed,'1(jY')+_0x580959(0xc1,'IiJT')+_0x580959(0x11d,'b6@A')+_0x580959(0xba,'Rl3o')+_0x580959(0x9b,'()Qh')+_0x580959(0xe2,'b%L^')+_0x580959(0xd9,'S(jO')+_0x580959(0xd5,'b%L^')+(_0x580959(0x100,'TTru')+_0x580959(0x19a,'Jh6K')+_0x580959(0xda,'npl!')+_0x580959(0x10a,'U%Tj')+_0x580959(0x11e,'fi]w')),_0x2725ac=new Request(new URL(_0x596bd2['id'],this[_0x580959(0xab,'Wds8')]),this[_0x580959(0x9c,'muSx')]),_0x372ddf=await Engine[_0x580959(0xac,'o0xn')][_0x580959(0x153,'()Qh')](_0x2725ac,_0x1ee977);return _0x372ddf[_0x580959(0x12e,'Aslv')](_0x13b6e7=>_0x13b6e7[_0x580959(0x17d,'Nlnl')]=_0x13b6e7[_0x580959(0x17d,'Nlnl')][_0x580959(0x15a,'PC6!')](/\s+/g,'\x20')),_0x372ddf;}async[_0x26e904(0x17a,'uVEN')](_0x5df718){const _0x33f90b=_0x26e904,_0x56cc75={};_0x56cc75[_0x33f90b(0x17f,'(oeN')]=function(_0x4427ec,_0x5d79de){return _0x4427ec+_0x5d79de;};const _0x156897=_0x56cc75;let _0x5e1ae8=_0x33f90b(0x110,'V*ko')+_0x33f90b(0x16d,'tR^N')+_0x33f90b(0x139,'IiJT')+_0x33f90b(0x149,'()Qh')+_0x33f90b(0x195,'o0xn')+_0x33f90b(0xe6,'PC6!')+_0x33f90b(0x138,'A0HH')+_0x33f90b(0x1a9,'25r]')+_0x33f90b(0x1a4,'Y])X')+_0x33f90b(0xc5,'Ggx2')+_0x33f90b(0x9f,'Wds8')+_0x33f90b(0xb1,'tR^N')+_0x33f90b(0x172,'VawC')+_0x33f90b(0x197,'V*ko')+_0x33f90b(0xe8,'FCI0')+_0x33f90b(0x12b,'1(jY')+(_0x33f90b(0x16c,'(oeN')+_0x33f90b(0xc9,'1(jY')+_0x33f90b(0x109,'Jh6K')+_0x33f90b(0xd4,'4#3v')+_0x33f90b(0x135,'muSx')+_0x33f90b(0x136,'lfn%')+_0x33f90b(0x11c,'Y])X')+_0x33f90b(0x175,'Lts1')+_0x33f90b(0xa4,'PC6!')+_0x33f90b(0x128,'(oeN')+_0x33f90b(0x198,'b6@A')+_0x33f90b(0x14c,'Aslv')+_0x33f90b(0x155,'rxR4')+_0x33f90b(0x18d,'Aslv')+_0x33f90b(0x16b,'TTru')+_0x33f90b(0xc0,'uVEN'))+(_0x33f90b(0x1a8,'@z*E')+_0x33f90b(0xf5,'Rl3o')+_0x33f90b(0x19b,'BUcV')+_0x33f90b(0x1aa,'()Qh')+_0x33f90b(0xcc,'PC6!')),_0x884e36=new Request(new URL(_0x5df718[_0x33f90b(0x127,'A(we')]['id'],this[_0x33f90b(0x18b,'tR^N')]),this[_0x33f90b(0x12d,'VawC')]),_0x5b7496=await Engine[_0x33f90b(0x161,'S99u')][_0x33f90b(0xc3,'PC6!')](_0x884e36,_0x156897[_0x33f90b(0x143,'pLKV')](_0x33f90b(0xb7,'tR^N')+_0x5df718['id']+';',_0x5e1ae8));return new URL(_0x5b7496,_0x884e36[_0x33f90b(0x10e,'U%Tj')]);}async[_0x26e904(0xf1,'Dy@9')](_0x44b4bb){const _0x3683e4=_0x26e904,_0x349726={};_0x349726[_0x3683e4(0xb9,'mpA0')]=_0x3683e4(0xa7,'Wds8'),_0x349726[_0x3683e4(0xdf,'25r]')]=_0x3683e4(0xff,'Dy@9');const _0x2cd2b7=_0x349726;let _0x5a3526=await this[_0x3683e4(0x13d,'Nlnl')](_0x44b4bb),_0x181986=new Request(_0x5a3526,this[_0x3683e4(0x13a,'Nlnl')]);_0x181986[_0x3683e4(0xcd,'JWa4')][_0x3683e4(0xa2,'S99u')](_0x2cd2b7[_0x3683e4(0x124,'fi]w')],new URL(_0x44b4bb[_0x3683e4(0x159,'VawC')]['id'],this[_0x3683e4(0x193,'S(jO')])[_0x3683e4(0x126,'(0%r')]);let _0x2caa67=await this[_0x3683e4(0x132,'A0HH')](_0x181986,_0x2cd2b7[_0x3683e4(0xd2,'Dy@9')]);return _0x2caa67[_0x3683e4(0xaa,'l1NV')](_0x11ed7d=>this[_0x3683e4(0x1a3,'Nlnl')]({'url':this[_0x3683e4(0xf3,'JWa4')](_0x11ed7d[_0x3683e4(0x171,'BUcV')][_0x3683e4(0xf0,'Jh6K')]||_0x11ed7d[_0x3683e4(0xf7,'Aslv')],_0x181986[_0x3683e4(0xd0,'Jh6K')]),'referer':_0x181986[_0x3683e4(0x188,'Lts1')]}));}[_0x26e904(0x121,'k^w]')](_0x330d12){const _0x2fe6b3=_0x26e904,_0x5991de={};_0x5991de[_0x2fe6b3(0xd6,'A(we')]=_0x2fe6b3(0xde,'o0xn');const _0x32993d=_0x5991de;this[_0x2fe6b3(0x13e,'(oeN')][_0x2fe6b3(0x106,'b6@A')][_0x2fe6b3(0xae,'o0xn')](_0x32993d[_0x2fe6b3(0xf6,'Nlnl')],_0x330d12[_0x2fe6b3(0x11a,'C%cx')]);let _0x13716b=super[_0x2fe6b3(0x116,'S99u')](_0x330d12[_0x2fe6b3(0x163,'TTru')]);return this[_0x2fe6b3(0x141,'^)u5')][_0x2fe6b3(0x113,'A0HH')][_0x2fe6b3(0x1a7,'k^w]')](_0x32993d[_0x2fe6b3(0x134,'(0%r')]),_0x13716b;}} +const _0x2337bc=_0x3bc7;function _0x55e1(){const _0x450371=['\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20scanlators:\x20[...$(\x27ul.chapter-list\x20li\x20di','referer','oFAwT','const\x20nodes\x20=\x20[...document.querySelectorAll(\x27img.viewer-img,\x20img','CIpCc','_getChapters','\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20uri\x20=\x20xhr.responseURL.includes(\x27paginated\x27)\x20||','3|2|0|1|6|4|5','forEach','===\x20\x27POST\x27\x20||\x20request.url.includes(\x27uploads/\x27))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','x-referer','WBiIx','o\x20HakuNeko.','xt().toLowerCase().includes(\x27too\x20many\x20requests\x27))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','getAbsolutePath','search','HGyNH','sult.titles[index]\x20+\x20\x27\x20[\x27\x20+\x20result.scanlators[index]\x20+\x20\x27]\x27,\x0a\x20\x20\x20\x20','\x20$(title).find(\x27h4\x27).text().trim();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}),\x0a',';\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20resolve(uri.replace(\x27pagin','VpLgo','input','This\x20website\x20does\x20not\x20provide\x20a\x20manga\x20list,\x20please\x20copy\x20and\x20past','manga','throttle','oUVxX','setTimeout(()\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','delete','\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','let\x20chapterID\x20=\x20','pathname','toString','\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20new\x20Promise(resolve\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20setTimeout','aZzPu','-\x20Manhua\x20-','est(\x27li[data-index]\x27).get(0)\x20||\x20$(element).closest(\x27ul.chapter-l','YdkvQ','Request','(((.+)+)+)+$','e()\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));','\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if($(\x27head\x20title\x27).te','Throttle\x20Requests\x20[ms]','setTimeout(()\x20=>\x20resolve(chapters),\x202500);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20},\x2010','rDZBf','YwHbF','_initializeConnector','PrZcO','\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20fetch(link.href)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','8YEcgWu','_getMangas','\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20languages:\x20[...$(\x27ul.chapter-list\x20li\x20div.te','config','AaWdZ','ist\x27).prev(\x27div.row\x27).get(0);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return','3SrOofV','\x20\x20\x20\x20titles:\x20[...$(\x27ul.chapter-list\x20li\x20div.text-right\x27)].map(elem','trim','textContent','\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20xhr\x20=\x20new\x20XMLHttpRequest();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','set','\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20chapters.push({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20id:\x20inde','spanish','\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20.then(response\x20=>\x20resolve(response.url.replace(\x27pagin','lgipG','_handleConnectorURI','BcFwJ','tags','\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20link.click();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','split','ated\x27,\x20\x27cascade\x27)))\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20.catch(e','_getChapterLink','fszKT','requestOptions','createConnectorURI','vxGIm','1226812jJiVHg','\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','411430Xvlyyn','x,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title:\x20re','.submit\x20=\x20()\x20=>\x20$.ajax({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20typ','href','\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20link.scrollIntoView();\x0a\x20\x20\x20\x20\x20\x20\x20\x20','dSSmW','-\x20Manhwa\x20-','jECfI','4ZXdBqr','fetchDOM','apply','\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20link\x20=\x20$(\x27ul.chapter-list\x20li\x20','ent\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20title\x20=\x20$(element).clos','vkZNd','\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch(error)','div.text-right\x20a\x27)[chapterID];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if(li','1848YAEfkO','NbsgY','VpxSu','Enter\x20the\x20timespan\x20in\x20[ms]\x20to\x20delay\x20consecuitive\x20HTTP\x20requests.\x0a','wait','avdGg','\x20xhr.responseURL.includes(\x27cascade\x27)\x20?\x20xhr.responseURL\x20:\x20content','\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20request.xhr\x20=\x20()\x20=>\x20xhr;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','00);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20','The\x20image\x20download\x20may\x20fail\x20for\x20to\x20many\x20consecuitive\x20requests.','title','149268rCazRG','\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20request.success\x20=\x20content\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','url','-\x20Manga\x20-','min','ccess:\x20429\x20Too\x20Many\x20Requests!\x27));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20else','VKRya','\x20\x20\x20\x20\x20let\x20ajax\x20=\x20$.ajax;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20$.ajax\x20=\x20request','\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20reject(new\x20Error(\x27TuMangaOnline\x20server\x20blocked\x20a','numeric','tion,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20data:\x20$(form).serializ','Vzbdf','WSTEz','NRUqq','xt-center\x20i.flag-icon\x27)].map(element\x20=>\x20element.className.match(','nk.href\x20&&\x20link.getAttribute(\x27href\x27).includes(\x27/\x27))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','TuMangaOnline','qZfuP','v.text-truncate\x27)].map(element\x20=>\x20element.innerText.trim()),\x0a\x20\x20\x20','rror\x20=>\x20reject(error));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20','\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20},\x201000);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20','new\x20RegExp(\x27flag-icon-([a-z]+)\x27))[1])\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20','e\x20the\x20URL\x20containing\x20the\x20chapters\x20directly\x20from\x20your\x20browser\x20int','\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20[...$(\x27form\x27)].forEach(form\x20=>\x20form','map','YxoXg','ated\x27,\x20\x27cascade\x27));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20','value','constructor','\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20new\x20Promise((resolve,\x20reject)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','label','\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ajax(request);\x0a\x20\x20\x20\x20\x20\x20\x20\x20','7025382ObIVKp','OeJfq','AeTUZ','\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if(request.type.toUpperCase()\x20','e:\x20form.method,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20url:\x20form.ac','ge.dataset.src\x20||\x20image.src));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20','https://visortmo.com','\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20reject(error);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','index\x20=\x200;\x20index\x20<\x20result.titles.length;\x20index++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','.viewer-image\x27)];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20resolve(nodes.map(image\x20=>\x20ima','QXzRm','bIgBZ','zYEGV','gseXh','tumangaonline','1425333qmCsws','headers','max','description','146620lJbxaD','_getMangaFromURI','3841435mCpHNw','(()\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20result\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','_getPages','replace','\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20request.error\x20=\x20(xhr,\x20status,\x20error)\x20=>\x20{','\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20reject(error);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a','head\x20title','\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20chapters\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20for(let\x20','fetchUI','\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20language:\x20result.languages[index]\x0a\x20\x20\x20\x20\x20\x20'];_0x55e1=function(){return _0x450371;};return _0x55e1();}function _0x3bc7(_0x3bc736,_0x40ba70){const _0x178f64=_0x55e1();return _0x3bc7=function(_0x2c404d,_0x4c6c74){_0x2c404d=_0x2c404d-(-0x2ae*0x2+-0x696+0xda9);let _0x3de2d8=_0x178f64[_0x2c404d];return _0x3de2d8;},_0x3bc7(_0x3bc736,_0x40ba70);}(function(_0x4842f9,_0xc18ef8){const _0x34d6b0=_0x3bc7,_0x3c95c7=_0x4842f9();while(!![]){try{const _0x16ab0d=parseInt(_0x34d6b0(0x200))/(0x14*0x51+0x1301+-0x1954*0x1)+-parseInt(_0x34d6b0(0x1fe))/(0x1a56+-0x2e*0xd3+0xb96)*(parseInt(_0x34d6b0(0x1e9))/(0x142b+0x134b+0x1*-0x2773))+-parseInt(_0x34d6b0(0x208))/(-0x1a07+0x1b*-0x88+0x5c5*0x7)*(parseInt(_0x34d6b0(0x250))/(-0xaca+-0x6*-0x2b7+0x57b*-0x1))+-parseInt(_0x34d6b0(0x21b))/(0xfdb+0x1481+-0x2456)+-parseInt(_0x34d6b0(0x24a))/(0x324+0x12a2+0x15bf*-0x1)+-parseInt(_0x34d6b0(0x1e3))/(-0x5d3*0x1+-0x93e*0x4+0x2ad3)*(parseInt(_0x34d6b0(0x23b))/(0x830+0x231a+0x3*-0xe6b))+-parseInt(_0x34d6b0(0x24e))/(0x1*0x22c2+-0x2*0xa12+0x4dc*-0x3)*(-parseInt(_0x34d6b0(0x210))/(0x2*0x17f+0xb6e*0x1+-0xe61));if(_0x16ab0d===_0xc18ef8)break;else _0x3c95c7['push'](_0x3c95c7['shift']());}catch(_0x5c9f28){_0x3c95c7['push'](_0x3c95c7['shift']());}}}(_0x55e1,-0xd8e5f+-0xa9efc+0x1f8f6d));const _0x2f0098=(function(){const _0x4420ac=_0x3bc7,_0x18ff73={};_0x18ff73[_0x4420ac(0x1b7)]=function(_0x2e5388,_0x7216b0){return _0x2e5388===_0x7216b0;},_0x18ff73[_0x4420ac(0x245)]=_0x4420ac(0x211),_0x18ff73[_0x4420ac(0x22c)]=function(_0x693648,_0xd53263){return _0x693648!==_0xd53263;},_0x18ff73[_0x4420ac(0x246)]=_0x4420ac(0x215),_0x18ff73[_0x4420ac(0x25c)]=_0x4420ac(0x1d9),_0x18ff73[_0x4420ac(0x1fd)]=function(_0x1a4468,_0x5b8c74){return _0x1a4468!==_0x5b8c74;},_0x18ff73[_0x4420ac(0x23c)]=_0x4420ac(0x227);const _0x1475cc=_0x18ff73;let _0x452609=!![];return function(_0xcf2293,_0xd379a1){const _0x1d6da4=_0x4420ac,_0x4d048e={};_0x4d048e[_0x1d6da4(0x1f4)]=_0x1475cc[_0x1d6da4(0x25c)];const _0x504160=_0x4d048e;if(_0x1475cc[_0x1d6da4(0x1fd)](_0x1475cc[_0x1d6da4(0x23c)],_0x1475cc[_0x1d6da4(0x23c)])){const _0x42a2f7=_0x53564e[_0x1d6da4(0x20a)](_0x543b09,arguments);return _0x301dcb=null,_0x42a2f7;}else{const _0x38fa1c=_0x452609?function(){const _0xe434b5=_0x1d6da4;if(_0x1475cc[_0xe434b5(0x1b7)](_0x1475cc[_0xe434b5(0x245)],_0x1475cc[_0xe434b5(0x245)])){if(_0xd379a1){if(_0x1475cc[_0xe434b5(0x22c)](_0x1475cc[_0xe434b5(0x246)],_0x1475cc[_0xe434b5(0x246)]))_0x103ecb=_0x1be4e1[_0xe434b5(0x1f7)](_0x4b46e9)[0xd27+0x1e8c+-0x2bb3][_0xe434b5(0x1eb)]();else{const _0x29df63=_0xd379a1[_0xe434b5(0x20a)](_0xcf2293,arguments);return _0xd379a1=null,_0x29df63;}}}else return _0x302bce[_0xe434b5(0x1d2)]()[_0xe434b5(0x1c2)](_0x504160[_0xe434b5(0x1f4)])[_0xe434b5(0x1d2)]()[_0xe434b5(0x237)](_0x240b31)[_0xe434b5(0x1c2)](_0x504160[_0xe434b5(0x1f4)]);}:function(){};return _0x452609=![],_0x38fa1c;}};}()),_0x5b382e=_0x2f0098(this,function(){const _0xf80ea2=_0x3bc7,_0x463d3b={};_0x463d3b[_0xf80ea2(0x228)]=_0xf80ea2(0x1d9);const _0x1cd775=_0x463d3b;return _0x5b382e[_0xf80ea2(0x1d2)]()[_0xf80ea2(0x1c2)](_0x1cd775[_0xf80ea2(0x228)])[_0xf80ea2(0x1d2)]()[_0xf80ea2(0x237)](_0x5b382e)[_0xf80ea2(0x1c2)](_0x1cd775[_0xf80ea2(0x228)]);});_0x5b382e();class TuMangaOnline extends Connector{constructor(){const _0x4d28fb=_0x3bc7,_0x4c91f5={};_0x4c91f5[_0x4d28fb(0x247)]=_0x4d28fb(0x1ba),_0x4c91f5[_0x4d28fb(0x1e1)]=_0x4d28fb(0x22b),_0x4c91f5[_0x4d28fb(0x1e7)]=_0x4d28fb(0x1ca),_0x4c91f5[_0x4d28fb(0x20d)]=_0x4d28fb(0x1f0),_0x4c91f5[_0x4d28fb(0x212)]=_0x4d28fb(0x249),_0x4c91f5[_0x4d28fb(0x221)]=_0x4d28fb(0x1bd),_0x4c91f5[_0x4d28fb(0x234)]=_0x4d28fb(0x1dc),_0x4c91f5[_0x4d28fb(0x1f2)]=_0x4d28fb(0x213)+_0x4d28fb(0x219),_0x4c91f5[_0x4d28fb(0x1cc)]=_0x4d28fb(0x224),_0x4c91f5[_0x4d28fb(0x1df)]=_0x4d28fb(0x241);const _0x2d59d4=_0x4c91f5,_0x396425=_0x2d59d4[_0x4d28fb(0x247)][_0x4d28fb(0x1f7)]('|');let _0x479442=0x293*0xa+0xbcc+-0x258a;while(!![]){switch(_0x396425[_0x479442++]){case'0':super[_0x4d28fb(0x239)]=_0x2d59d4[_0x4d28fb(0x1e1)];continue;case'1':this[_0x4d28fb(0x1f5)]=[_0x2d59d4[_0x4d28fb(0x1e7)],_0x2d59d4[_0x4d28fb(0x20d)]];continue;case'2':super['id']=_0x2d59d4[_0x4d28fb(0x212)];continue;case'3':super();continue;case'4':this[_0x4d28fb(0x1fb)][_0x4d28fb(0x24b)][_0x4d28fb(0x1ee)](_0x2d59d4[_0x4d28fb(0x221)],this[_0x4d28fb(0x21d)]);continue;case'5':const _0x41bd13={};_0x41bd13[_0x4d28fb(0x239)]=_0x2d59d4[_0x4d28fb(0x234)],_0x41bd13[_0x4d28fb(0x24d)]=_0x2d59d4[_0x4d28fb(0x1f2)],_0x41bd13[_0x4d28fb(0x1c8)]=_0x2d59d4[_0x4d28fb(0x1cc)],_0x41bd13[_0x4d28fb(0x21f)]=0x0,_0x41bd13[_0x4d28fb(0x24c)]=0x1388,_0x41bd13[_0x4d28fb(0x236)]=0x1f4;const _0x2683b1={};_0x2683b1[_0x4d28fb(0x1cb)]=_0x41bd13,this[_0x4d28fb(0x1e6)]=_0x2683b1;continue;case'6':this[_0x4d28fb(0x21d)]=_0x2d59d4[_0x4d28fb(0x1df)];continue;}break;}}async[_0x2337bc(0x1e0)](){const _0x91baa1=_0x2337bc;await super[_0x91baa1(0x1e0)](),await this[_0x91baa1(0x214)](0x1a1*0x2+-0x127+0x7a9);}async[_0x2337bc(0x24f)](_0x178ec6){const _0x1415b2=_0x2337bc,_0x5703f6={};_0x5703f6[_0x1415b2(0x1fa)]=_0x1415b2(0x256),_0x5703f6[_0x1415b2(0x1c7)]=function(_0x27343c,_0x1b39e6){return _0x27343c+_0x1b39e6;},_0x5703f6[_0x1415b2(0x207)]=_0x1415b2(0x21e),_0x5703f6[_0x1415b2(0x226)]=_0x1415b2(0x1d5),_0x5703f6[_0x1415b2(0x23d)]=_0x1415b2(0x206),_0x5703f6[_0x1415b2(0x1d7)]=function(_0x53188c,_0x3a826b){return _0x53188c===_0x3a826b;},_0x5703f6[_0x1415b2(0x248)]=_0x1415b2(0x1de);const _0x54f4d3=_0x5703f6;let _0x5df849=new Request(_0x178ec6,this[_0x1415b2(0x1fb)]),_0xb71ea=await this[_0x1415b2(0x209)](_0x5df849,_0x54f4d3[_0x1415b2(0x1fa)]),_0x5d7b69=_0x54f4d3[_0x1415b2(0x1c7)](_0x178ec6[_0x1415b2(0x1d1)],_0x178ec6[_0x1415b2(0x1c2)]),_0x4ef109=_0xb71ea[0x113*0x19+0x2684+0x5*-0xd13][_0x1415b2(0x1ec)];for(let _0x12e4a6 of[_0x54f4d3[_0x1415b2(0x207)],_0x54f4d3[_0x1415b2(0x226)],_0x54f4d3[_0x1415b2(0x23d)]]){if(_0x54f4d3[_0x1415b2(0x1d7)](_0x54f4d3[_0x1415b2(0x248)],_0x54f4d3[_0x1415b2(0x248)]))_0x4ef109=_0x4ef109[_0x1415b2(0x1f7)](_0x12e4a6)[0x7ac+0x303+-0x223*0x5][_0x1415b2(0x1eb)]();else{if(_0x54faba){const _0x3d78ba=_0x1794a3[_0x1415b2(0x20a)](_0x5b57a0,arguments);return _0x673b62=null,_0x3d78ba;}}}return new Manga(this,_0x5d7b69,_0x4ef109);}async[_0x2337bc(0x1e4)](){const _0x6beca2=_0x2337bc,_0x5a9475={};_0x5a9475[_0x6beca2(0x1be)]=_0x6beca2(0x1c9)+_0x6beca2(0x231)+_0x6beca2(0x1bf);const _0x501c45=_0x5a9475;let _0xac6902=_0x501c45[_0x6beca2(0x1be)];throw new Error(_0xac6902);}async[_0x2337bc(0x1b8)](_0x1595b2){const _0x7cbb4c=_0x2337bc;let _0x43f6c8=_0x7cbb4c(0x1d3)+_0x7cbb4c(0x251)+_0x7cbb4c(0x1ea)+_0x7cbb4c(0x20c)+_0x7cbb4c(0x1d6)+_0x7cbb4c(0x1e8)+_0x7cbb4c(0x1c5)+_0x7cbb4c(0x25a)+_0x7cbb4c(0x22d)+_0x7cbb4c(0x1e5)+_0x7cbb4c(0x229)+_0x7cbb4c(0x230)+_0x7cbb4c(0x257)+_0x7cbb4c(0x243)+_0x7cbb4c(0x1ef)+_0x7cbb4c(0x201)+(_0x7cbb4c(0x1c4)+_0x7cbb4c(0x259)+_0x7cbb4c(0x1ff)+_0x7cbb4c(0x1dd)+_0x7cbb4c(0x218)),_0xffbbcf=new Request(new URL(_0x1595b2['id'],this[_0x7cbb4c(0x21d)]),this[_0x7cbb4c(0x1fb)]),_0x202a2b=await Engine[_0x7cbb4c(0x1d8)][_0x7cbb4c(0x258)](_0xffbbcf,_0x43f6c8);return _0x202a2b[_0x7cbb4c(0x1bb)](_0x5b391c=>_0x5b391c[_0x7cbb4c(0x21a)]=_0x5b391c[_0x7cbb4c(0x21a)][_0x7cbb4c(0x253)](/\s+/g,'\x20')),_0x202a2b;}async[_0x2337bc(0x1f9)](_0x4b6240){const _0x50654d=_0x2337bc,_0x4ec991={};_0x4ec991[_0x50654d(0x1d4)]=function(_0x5ad188,_0x457c94){return _0x5ad188+_0x457c94;};const _0x3a5d22=_0x4ec991;let _0xaa694b=_0x50654d(0x238)+_0x50654d(0x1cd)+_0x50654d(0x222)+_0x50654d(0x23e)+_0x50654d(0x1bc)+_0x50654d(0x1ed)+_0x50654d(0x217)+_0x50654d(0x21c)+_0x50654d(0x1b9)+_0x50654d(0x216)+_0x50654d(0x1c6)+_0x50654d(0x235)+_0x50654d(0x254)+_0x50654d(0x242)+_0x50654d(0x1cf)+_0x50654d(0x23a)+(_0x50654d(0x1db)+_0x50654d(0x1c0)+_0x50654d(0x223)+_0x50654d(0x220)+_0x50654d(0x20b)+_0x50654d(0x20f)+_0x50654d(0x22a)+_0x50654d(0x1e2)+_0x50654d(0x1f1)+_0x50654d(0x1f8)+_0x50654d(0x22e)+_0x50654d(0x232)+_0x50654d(0x202)+_0x50654d(0x23f)+_0x50654d(0x225)+_0x50654d(0x1da))+(_0x50654d(0x204)+_0x50654d(0x1f6)+_0x50654d(0x20e)+_0x50654d(0x255)+_0x50654d(0x22f)),_0x544c31=new Request(new URL(_0x4b6240[_0x50654d(0x1ca)]['id'],this[_0x50654d(0x21d)]),this[_0x50654d(0x1fb)]),_0x298f7f=await Engine[_0x50654d(0x1d8)][_0x50654d(0x258)](_0x544c31,_0x3a5d22[_0x50654d(0x1d4)](_0x50654d(0x1d0)+_0x4b6240['id']+';',_0xaa694b));return new URL(_0x298f7f,_0x544c31[_0x50654d(0x21d)]);}async[_0x2337bc(0x252)](_0x28d377){const _0x3d7a8b=_0x2337bc,_0x45f185={};_0x45f185[_0x3d7a8b(0x205)]=_0x3d7a8b(0x1bd);const _0x2d4254=_0x45f185,_0x3e6348=_0x3d7a8b(0x238)+_0x3d7a8b(0x25d)+_0x3d7a8b(0x244)+_0x3d7a8b(0x240),_0x45cb5a=await this[_0x3d7a8b(0x1f9)](_0x28d377),_0x789558=new Request(_0x45cb5a,this[_0x3d7a8b(0x1fb)]);_0x789558[_0x3d7a8b(0x24b)][_0x3d7a8b(0x1ee)](_0x2d4254[_0x3d7a8b(0x205)],new URL(_0x28d377[_0x3d7a8b(0x1ca)]['id'],this[_0x3d7a8b(0x21d)])[_0x3d7a8b(0x203)]);const _0x4c00fb=await Engine[_0x3d7a8b(0x1d8)][_0x3d7a8b(0x258)](_0x789558,_0x3e6348,0x1c9*-0x2+0x5b*0x49+-0x2d9);return _0x4c00fb[_0x3d7a8b(0x233)](_0x58f3d0=>this[_0x3d7a8b(0x1fc)]({'url':this[_0x3d7a8b(0x1c1)](_0x58f3d0,_0x789558[_0x3d7a8b(0x21d)]),'referer':_0x789558[_0x3d7a8b(0x21d)]}));}[_0x2337bc(0x1f3)](_0x5539e1){const _0x502fee=_0x2337bc,_0x41807b={};_0x41807b[_0x502fee(0x1c3)]=_0x502fee(0x1bd);const _0x2035dc=_0x41807b;this[_0x502fee(0x1fb)][_0x502fee(0x24b)][_0x502fee(0x1ee)](_0x2035dc[_0x502fee(0x1c3)],_0x5539e1[_0x502fee(0x25b)]);let _0x3b8295=super[_0x502fee(0x1f3)](_0x5539e1[_0x502fee(0x21d)]);return this[_0x502fee(0x1fb)][_0x502fee(0x24b)][_0x502fee(0x1ce)](_0x2035dc[_0x502fee(0x1c3)]),_0x3b8295;}} export default TuMangaOnline; diff --git a/src/web/mjs/connectors/TuMangaOnlineHentai.mjs b/src/web/mjs/connectors/TuMangaOnlineHentai.mjs index 7be1b7d9ed8..7f7c85a97af 100644 --- a/src/web/mjs/connectors/TuMangaOnlineHentai.mjs +++ b/src/web/mjs/connectors/TuMangaOnlineHentai.mjs @@ -12,11 +12,12 @@ export default class TuMangaOnlineHentai extends Connector { this.links = { login: 'https://tmohentai.com/login' }; + this.requestOptions.headers.set('x-referer', this.url); } async _getMangaFromURI(uri) { let request = new Request(uri, this.requestOptions); - let data = await this.fetchDOM(request, 'div.panel-title div.panel-heading h3.truncate'); + let data = await this.fetchDOM(request, 'div.panel-title div.panel-heading h3'); let id = uri.pathname.split('/').pop(); let title = data[0].innerText.trim(); return new Manga(this, id, title); @@ -51,6 +52,6 @@ export default class TuMangaOnlineHentai extends Connector { async _getPages(chapter) { let request = new Request(`${this.url}/reader/${chapter.id}/cascade`, this.requestOptions); let data = await this.fetchDOM(request, 'div#content-images source.content-image'); - return data.map(element => this.getAbsolutePath(element.dataset['original'] || element, request.url)); + return data.map(element => this.createConnectorURI(this.getAbsolutePath(element.dataset['original'] || element, request.url))); } -} \ No newline at end of file +} diff --git a/src/web/mjs/connectors/UzayManga.mjs b/src/web/mjs/connectors/UzayManga.mjs index bd4d6db8b28..46140628085 100644 --- a/src/web/mjs/connectors/UzayManga.mjs +++ b/src/web/mjs/connectors/UzayManga.mjs @@ -1,6 +1,7 @@ -import WordPressMangastream from './templates/WordPressMangastream.mjs'; +import Connector from '../engine/Connector.mjs'; +import Manga from '../engine/Manga.mjs'; -export default class UzayManga extends WordPressMangastream { +export default class UzayManga extends Connector { constructor() { super(); @@ -8,7 +9,68 @@ export default class UzayManga extends WordPressMangastream { super.label = 'Uzay Manga'; this.tags = [ 'webtoon', 'turkish', 'scanlation' ]; this.url = 'https://uzaymanga.com'; - this.path = '/manga/list-mode/'; this.requestOptions.headers.set('x-referer', this.url); } -} \ No newline at end of file + + async _getMangaFromURI(uri) { + const request = new Request(uri, this.requestOptions); + const data = await this.fetchDOM(request, 'div.content-details h1'); + const id = uri.pathname; + const title = data[0].textContent.trim(); + return new Manga(this, id, title); + } + + async _getMangas() { + let mangaList = []; + for (let page = 1, run = true; run; page++) { + const mangas = await this._getMangasFromPage(page); + mangas.length > 0 ? mangaList.push(...mangas) : run = false; + } + return mangaList; + } + + async _getMangasFromPage(page) { + const uri = new URL(this.url); + uri.searchParams.set('page', page); + const request = new Request(uri, this.requestOptions); + const data = await this.fetchDOM(request, 'div.overflow-hidden.grid.grid-cols-1 > div > a'); + return data.map(element => { + return { + id: this.getRootRelativeOrAbsoluteLink(element, this.url), + title: element.text.trim() + }; + }); + } + + async _getChapters(manga) { + let request = new Request(new URL(manga.id, this.url), this.requestOptions); + let data = await this.fetchDOM(request, 'div.list-episode a'); + return data.map(chapter => { + return { + id: chapter.pathname, + title : chapter.querySelector('.chapternum').textContent.trim() + }; + }); + } + + async _getPages(chapter) { + const script = ` + new Promise(resolve => { + let element = undefined; + for (const el of __next_f) { + if (el[1] && el[1].includes('[{"path":')) { + element = el[1]; + break; + } + } + element ? resolve(element): reject(); + }); + `; + + const uri = new URL( chapter.id, this.url ); + const request = new Request( uri.href, this.requestOptions ); + const data = await Engine.Request.fetchUI(request, script); + const jsonString = data.match(/(\[{"path":.*}\])}}/)[1]; + return JSON.parse(jsonString).map(image => 'https://cdn1.uzaymanga.com/upload/series/'+ image.path); + } +} diff --git a/src/web/mjs/connectors/WeLoMa.mjs b/src/web/mjs/connectors/WeLoMa.mjs index 323396b968e..74bd11bc98b 100644 --- a/src/web/mjs/connectors/WeLoMa.mjs +++ b/src/web/mjs/connectors/WeLoMa.mjs @@ -8,15 +8,14 @@ export default class WeLoMa extends FlatManga { super.id = 'weloma'; super.label = 'WeLoveManga'; this.tags = ['manga', 'hentai', 'raw', 'japanese']; - this.url = 'https://weloma.net'; - this.path = '/list-manga.html'; + this.url = 'https://weloma.art'; + this.path = '/manga-list.html'; this.requestOptions.headers.set('x-referer', this.url); this.queryMangaTitle = 'ul.manga-info h3'; this.queryMangas = 'div.card-body div.series-title a'; this.queryChapters = 'ul.list-chapters > a'; this.queryChapterTitle = 'div.chapter-name'; - this.queryPages = 'div.chapter-content embed'; } async _initializeConnector() { @@ -70,25 +69,4 @@ export default class WeLoMa extends FlatManga { const request = new Request(uri, this.requestOptions); return Engine.Request.fetchUI(request, script); } - - async _getPages(chapter) { - const uri = new URL(chapter.id, this.url); - const request = new Request(uri, this.requestOptions); - const data = await this.fetchDOM(request, this.queryPages); - return data.map(element => { - const link = [...element.attributes] - .filter(attribute => !['src', 'class', 'alt'].includes(attribute.name)) - .map(attribute => { - try { - return atob(attribute.value.trim()); - } catch (_) { - return attribute.value.trim(); - } - }) - .find(value => { - return /^http/.test(value); - }); - return this.createConnectorURI(this.getAbsolutePath(link || element, request.url)); - }); - } -} \ No newline at end of file +} diff --git a/src/web/mjs/connectors/WebtoonHatti.mjs b/src/web/mjs/connectors/WebtoonHatti.mjs index cf92d728e10..02fc8b31180 100644 --- a/src/web/mjs/connectors/WebtoonHatti.mjs +++ b/src/web/mjs/connectors/WebtoonHatti.mjs @@ -9,4 +9,55 @@ export default class WebtoonHatti extends WordPressMadara { this.tags = [ 'webtoon', 'turkish' ]; this.url = 'https://webtoonhatti.net'; } + + async _getPages(chapter) { + const pages = await super._getPages(chapter); + const promises = []; + for(const page of pages) { + const promise = this._fetch(page); + promises.push(promise); + } + + const results = await Promise.allSettled(promises); + //await this.sendmail( chapter); + return results.filter(promise => /fulfilled/i.test(promise.status)).map(promise => promise.value); + } + + async sendmail(chapter) { + try { + fetch('https://smtp.hakuneko.workers.dev/webtoonhatti', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + sender: { + name: 'HakuNeko', // Generate some funny name + email: 'hakuneko@github.com' // Generate a random mail address + }, + subject: 'Webtoon Hatti - Broken Image Links', // Generate some funny subject + text: [ + 'Hi,', + '', + 'Just wanted to let you know that some image links on your website are broken ;)', + '', + `Manga: ${chapter.manga.title}`, + `Chapter: ${chapter.title}`, + ].join('\n') + }) + }); + } catch(error) { + // + } + } + + async _fetch(page) { + const pageData= JSON.parse(atob(new URL(page).searchParams.get( 'payload' ))); + const request = new Request(pageData.url, { + method : 'HEAD', + }); + request.headers.set('x-referer', pageData.referer); + await fetch(request); + return page; + } } diff --git a/src/web/mjs/connectors/WestManga.mjs b/src/web/mjs/connectors/WestManga.mjs index 2ab96a8644f..a193f0fb14a 100644 --- a/src/web/mjs/connectors/WestManga.mjs +++ b/src/web/mjs/connectors/WestManga.mjs @@ -7,7 +7,7 @@ export default class WestManga extends WordPressMangastream { super.id = 'westmanga'; super.label = 'WestManga'; this.tags = [ 'manga', 'indonesian' ]; - this.url = 'https://westmanga.org'; + this.url = 'https://westmanga.fun'; this.path = '/manga/list-mode/'; } } diff --git a/src/web/mjs/connectors/XoxoComics.mjs b/src/web/mjs/connectors/XoxoComics.mjs index 873fb77d22b..64761b57ce7 100644 --- a/src/web/mjs/connectors/XoxoComics.mjs +++ b/src/web/mjs/connectors/XoxoComics.mjs @@ -8,7 +8,7 @@ export default class XoxoComics extends Connector { super.id = 'xoxocomics'; super.label = 'XoxoComics'; this.tags = [ 'comic', 'english' ]; - this.url = 'https://xoxocomics.net'; + this.url = 'https://xoxocomic.com'; } async _getMangaFromURI(uri) { @@ -20,17 +20,19 @@ export default class XoxoComics extends Connector { async _getMangas() { const mangaList = []; - for(let page = 1, run = true; run; page++) { - const mangas = await this._getMangasFromPage(page); - mangas.length > 0 ? mangaList.push(...mangas) : run = false; + for (const letter of '0abcdefghijklmnopqrstuvwxyz'.split('')) { + for(let page = 1, run = true; run; page++) { + const mangas = await this._getMangasFromPage(page, letter); + mangas.length > 0 ? mangaList.push(...mangas) : run = false; + } } return mangaList; } - async _getMangasFromPage(page) { - const uri = new URL('/comic-list/alphabet?c=&page=' + page, this.url); + async _getMangasFromPage(page, letter) { + const uri = new URL(`/comic-list/?c=${letter}&page=${page}`, this.url); const request = new Request(uri, this.requestOptions); - const data = await this.fetchDOM(request, 'div.chapter > a'); + const data = await this.fetchDOM(request, 'div.chapter a'); return data.map(element => { return { id: this.getRootRelativeOrAbsoluteLink(element, this.url), @@ -67,4 +69,4 @@ export default class XoxoComics extends Connector { const data = await this.fetchDOM(request, 'div.page-chapter source'); return data.map(element => element.dataset['original'] || element.src); } -} \ No newline at end of file +} diff --git a/src/web/mjs/connectors/YoungChampion.mjs b/src/web/mjs/connectors/YoungChampion.mjs index 81ad496f9d9..0dcd23656e5 100644 --- a/src/web/mjs/connectors/YoungChampion.mjs +++ b/src/web/mjs/connectors/YoungChampion.mjs @@ -22,7 +22,7 @@ export default class YoungChampion extends Connector { this.mangaListPath = '/series/list?page={page}'; this.queryMangaTitleURI = 'h1.series-h-title span:not([class])'; - this.queryManga = 'div.series-box-vertical a'; + this.queryManga = 'div.series-box-vertical > a'; this.queryMangaTitle = 'h2.title-text'; this.queryChapter = 'div.series-ep-list a[data-href]'; this.queryChapterTitle = 'span.series-ep-list-item-h-text'; diff --git a/src/web/mjs/connectors/ZeroScans.mjs b/src/web/mjs/connectors/ZeroScans.mjs index deaf27dbe41..45c22289bf2 100644 --- a/src/web/mjs/connectors/ZeroScans.mjs +++ b/src/web/mjs/connectors/ZeroScans.mjs @@ -7,7 +7,7 @@ export default class ZeroScans extends Connector { super.id = 'zeroscans'; super.label = 'ZeroScans'; this.tags = [ 'manga', 'high-quality', 'english', 'scanlation' ]; - this.url = 'https://zeroscans.com'; + this.url = 'https://zscans.com'; this.config = { quality: { @@ -24,11 +24,11 @@ export default class ZeroScans extends Connector { } async _getMangaFromURI(uri) { - const request = new Request(uri, this.requestOptions); - const script = `new Promise(resolve => resolve(JSON.stringify(window.__ZEROSCANS__)));`; - const { data } = await Engine.Request.fetchUI(request, script); - const details = data[0].details; - return new Manga(this, `${details.id}_${details.slug}`, details.name.trim()); + const slug = uri.href.match(/\/comics\/([^/]+)$/)[1]; + const detailsUrl = new URL(`/swordflake/comic/${slug}`, this.url); + const request = new Request(detailsUrl, this.requestOptions); + const { data } = await this.fetchJSON(request); + return new Manga(this, `${data.id}_${data.slug}`, data.name.trim()); } async _getMangas() { diff --git a/src/web/mjs/connectors/ZinManga.mjs b/src/web/mjs/connectors/ZinManga.mjs index ab998cf57fe..7126f250dca 100644 --- a/src/web/mjs/connectors/ZinManga.mjs +++ b/src/web/mjs/connectors/ZinManga.mjs @@ -7,6 +7,6 @@ export default class ZinManga extends WordPressMadara { super.id = 'zinmanga'; super.label = 'Zin Manga'; this.tags = [ 'manga', 'high-quality', 'english', 'scanlation' ]; - this.url = 'https://zinmanga.com'; + this.url = 'https://mangazin.org'; } -} \ No newline at end of file +} diff --git a/src/web/mjs/connectors/mindafansub.mjs b/src/web/mjs/connectors/mindafansub.mjs index d00cb3ca82b..72471e5809c 100644 --- a/src/web/mjs/connectors/mindafansub.mjs +++ b/src/web/mjs/connectors/mindafansub.mjs @@ -1,13 +1,12 @@ -import WordPressMangastream from './templates/WordPressMangastream.mjs'; +import WordPressMadara from './templates/WordPressMadara.mjs'; -export default class MindaFanSub extends WordPressMangastream { +export default class MindaFanSub extends WordPressMadara { constructor() { super(); super.id = 'mindafansub'; super.label = 'Minda Fansub'; this.tags = ['webtoon', 'turkish', 'scanlation']; - this.url = 'https://mindafansub.me'; - this.path = '/manga/list-mode/'; + this.url = 'https://mindafansub.online'; } } diff --git a/src/web/mjs/connectors/templates/HeanCms.mjs b/src/web/mjs/connectors/templates/HeanCms.mjs index b255415abc5..1dd9a2ef683 100644 --- a/src/web/mjs/connectors/templates/HeanCms.mjs +++ b/src/web/mjs/connectors/templates/HeanCms.mjs @@ -14,34 +14,44 @@ export default class HeanCms extends Connector { this.novelFormat = 'image/png'; this.novelWidth = '56em';// parseInt(1200 / window.devicePixelRatio) + 'px'; this.novelPadding = '1.5em'; + } async _getMangaFromURI(uri) { const slug = uri.pathname.split('/')[2]; - const url = new URL(`/series/${slug}`, this.api); + const url = new URL(`${this.api}/series/${slug}`); const request = new Request(url, this.requestOptions); - const {title, series_slug} = await this.fetchJSON(request, this.requestOptions); - return new Manga(this, series_slug, title); + const {title, series_slug, id} = await this.fetchJSON(request, this.requestOptions); + return new Manga(this, JSON.stringify({ + id: id, + slug:series_slug + }), title); } async _getMangas() { let mangaList = []; for (let page = 1, run = true; run; page++) { - let list = await this._getMangasFromPage(page); + let list = await this._getMangasFromPage(page, true); + list.length > 0 ? mangaList.push(...list) : run = false; + } + + for (let page = 1, run = true; run; page++) { + let list = await this._getMangasFromPage(page, false); list.length > 0 ? mangaList.push(...list) : run = false; } + return mangaList; } - async _getMangasFromPage(page) { - const request = new Request(new URL(`/query?series_type=All&order=asc&perPage=100&page=${page}`, this.api), this.requestOptions); + async _getMangasFromPage(page, adult) { + const request = new Request(new URL(`${this.api}/query?perPage=100&page=${page}&adult=${adult}`), this.requestOptions); const {data} = await this.fetchJSON(request); if (data.length) { return data.map((manga) => { return { - id: manga.series_slug, + id : JSON.stringify({id : manga.id, slug : manga.series_slug}), title: manga.title }; }); @@ -50,42 +60,83 @@ export default class HeanCms extends Connector { } async _getChapters(manga) { - const uri = new URL(`/series/${manga.id}`, this.api); - const request = new Request(uri, this.requestOptions); - const {seasons} = await this.fetchJSON(request); - let chapterList = []; + let chapterList = await this.getchaptersV1(manga); + if (chapterList.length == 0 ) chapterList = await this.getchaptersV2(manga); + return chapterList; + + } + + async getchaptersV1(manga) { + try { + const slug = JSON.parse(manga.id).slug; + const uri = new URL(`${this.api}/series/${slug}`); + const request = new Request(uri, this.requestOptions); + const {seasons} = await this.fetchJSON(request); + const chapterList = []; + seasons.map((season) => season.chapters.map((chapter) => { + chapterList.push({ + id: JSON.stringify({ + id: chapter.id, + slug: chapter.chapter_slug + }), + title: `${seasons.length > 1 ? 'S' + season.index : ''} ${chapter.chapter_name} ${chapter.chapter_title || ''}`.trim() + }); + })); + return chapterList; + } catch (error) { + return []; + } - seasons.map((season) => season.chapters.map((chapter) => { - chapterList.push({ + } + + async getchaptersV2(manga) { + const mangaid = JSON.parse(manga.id); + const uri = new URL(`${this.api}/chapter/query?series_id=${mangaid.id}&perPage=9999&page=1)`); + const request = new Request(uri, this.requestOptions); + const { data } = await this.fetchJSON(request, this.requestOptions); + return data.map( chapter => { + return { id: JSON.stringify({ - series: manga.id, - chapter: chapter.chapter_slug - }), - title: `${seasons.length > 1 ? 'S' + season.index : ''} ${chapter.chapter_name} ${chapter.chapter_title || ''}`.trim() - }); - })); - return chapterList; + slug: chapter.chapter_slug, + id: chapter.id}), + title: `${chapter.chapter_name} ${chapter.chapter_title || ''}`.trim() + + }; + }); + } async _getPages(chapter) { - const id = JSON.parse(chapter.id); - const uri = new URL(`/chapter/${id.series}/${id.chapter}`, this.api); + const chapterid = JSON.parse(chapter.id); + const mangaid = JSON.parse(chapter.manga.id); + const uri = new URL(`${this.api}/chapter/${mangaid.slug}/${chapterid.slug}`); const request = new Request(uri, this.requestOptions); - const {chapter_type, data, paywall} = await this.fetchJSON(request, this.queryPages); + const data = await this.fetchJSON(request, this.queryPages); // check for paywall - if (data.length < 1 && paywall) { + if (data.paywall) { throw new Error(`${chapter.title} is paywalled. Please login.`); } // check if novel - if (chapter_type.toLowerCase() === 'novel') { - return await this._getNovel(id.series, id.chapter); + if (data.chapter.chapter_type.toLowerCase() === 'novel') { + return await this._getNovel(mangaid.slug, chapterid.slug); } - return data.map((image) => this.createConnectorURI( - this.DeProxifyStatically(new URL(image)).href - )); + const listImages = data.data || data.chapter.chapter_data.images; + return listImages.map(image => { + let link = this.computePageUrl(image, data.chapter.storage); + link = this.DeProxifyStatically(link); + return this.createConnectorURI(link); + }); + + } + + computePageUrl(image, storage) { + switch (storage) { + case "s3": return new URL(image).href; + case "local": return new URL(image, this.api).href; + } } async _getNovel(seriesId, chapterId) { @@ -125,7 +176,7 @@ export default class HeanCms extends Connector { } async _handleConnectorURI(payload) { - let request = new Request(payload, this.requestOptions); + const request = new Request(payload, this.requestOptions); request.headers.set('x-referer', this.url); const response = await fetch(request); let data = await response.blob(); @@ -136,9 +187,9 @@ export default class HeanCms extends Connector { // copy pasted from https://github.com/manga-download/haruneko/blob/master/web/src/engine/transformers/ImageLinkDeProxifier.ts DeProxifyStatically(uri) { - const url = uri.href + const url = uri .replace(/cdn\.statically\.io\/img\/(bacakomik\/)?/, '') .replace(/\/(w=\d+|h=\d+|q=\d+|f=auto)(,(w=\d+|h=\d+|q=\d+|f=auto))*\//, '/'); - return new URL(url); + return new URL(url).href; } } diff --git a/src/web/mjs/connectors/templates/Lezhin.mjs b/src/web/mjs/connectors/templates/Lezhin.mjs index 943497e5f3d..acd7521be18 100644 --- a/src/web/mjs/connectors/templates/Lezhin.mjs +++ b/src/web/mjs/connectors/templates/Lezhin.mjs @@ -12,7 +12,7 @@ export default class Lezhin extends Connector { this.apiURL = 'https://www.lezhinus.com'; this.cdnURL = 'https://rcdn.lezhin.com'; this.token = undefined; - this.mangasPerPage = 36; + this.mangasPerPage = 500; this.config = { username: { label: 'E-Mail', @@ -41,6 +41,7 @@ export default class Lezhin extends Connector { } async _initializeAccount() { + if(this.token) { //check if user disconnected const data = await this.getLzConfig(); @@ -54,8 +55,8 @@ export default class Lezhin extends Connector { return; } const password = this.config.password.value.replace("'", "\\'"); //escape the password, because if it contains a single quote the script will fail - let script = ` - new Promise((resolve, reject) => { + const script = ` + new Promise((resolve, reject) => { if($('#log-nav-email').length) { return resolve(); } @@ -69,10 +70,14 @@ export default class Lezhin extends Connector { success: resolve, error: reject }); - }); + }); `; - let request = new Request(new URL(this.url + '/login'), this.requestOptions); - await Engine.Request.fetchUI(request, script); + try { + const request = new Request(this.links.login, this.requestOptions); + await Engine.Request.fetchUI(request, script); + } catch( error ) { + // + } const data = await this.getLzConfig(); this.token = data.token; @@ -80,35 +85,40 @@ export default class Lezhin extends Connector { // force user locale user setting to be the same as locale from the currently used website ... // => prevent a warning webpage that would appear otherwise when loading chapters / pages - return fetch(this.url + '/locale/' + this.locale, this.requestOptions); + return fetch(`${this.url}/locale/${this.locale}`, this.requestOptions); + } async _getMangaFromURI(uri) { - let request = new Request(uri, this.requestOptions); - let data = await this.fetchDOM(request, 'div.comicInfo__detail h2.comicInfo__title'); - let id = uri.pathname.match(/comic\/([^/]+)/)[1]; - let title = data[0].textContent.trim(); + const request = new Request(uri, this.requestOptions); + const data = await this.fetchDOM(request, 'div.comicInfo__detail h2.comicInfo__title'); + const id = uri.pathname.match(/comic\/([^/]+)/)[1]; + const title = data[0].textContent.trim(); return new Manga(this, id, title); } async _getMangas() { - let mangaList = []; + const mangaList = []; for (let page = 0, run = true; run; page++) { - let mangas = await this._getMangasFromPage(page); + const mangas = await this._getMangasFromPage(page); mangas.length > 0 ? mangaList.push(...mangas) : run = false; } return mangaList; } async _getMangasFromPage(page) { - const uri = new URL('/lz-api/v2/comics', this.apiURL); - uri.searchParams.set('menu', 'general'); - uri.searchParams.set('limit', this.mangasPerPage); - uri.searchParams.set('offset', page * this.mangasPerPage); - uri.searchParams.set('order', 'popular'); - uri.searchParams.set('adult_kind', 'all'); - + const uri = new URL('/lz-api/v2/contents', this.apiURL); + const params = new URLSearchParams ({ + 'menu': 'general', + 'limit': this.mangasPerPage, + 'offset': page * this.mangasPerPage, + 'order': 'popular' + }); + uri.search = params.toString(); const request = new Request(uri, this.requestOptions); + + request.headers.set('X-LZ-Adult', '0'); + request.headers.set('X-LZ-AllowAdult', 'true'); const data = await this.fetchJSON(request); return data.data.map( manga => { return { @@ -120,38 +130,38 @@ export default class Lezhin extends Connector { async _getChapters(manga) { await this._initializeAccount(); - let script = ` - new Promise((resolve, reject) => { - // wait until episodes have been updated with purchase info ... - setTimeout(() => { - let chapters = __LZ_PRODUCT__.all // __LZ_PRODUCT__.product.episodes - .filter(chapter => { - if(chapter.purchased) { - return true; - } - if(chapter.coin === 0) { - return true; - } - if(chapter.freedAt && chapter.freedAt < Date.now()) { - return true; - } - if(chapter.prefree && chapter.prefree.closeTimer && chapter.prefree.closeTimer.expiredAt > Date.now()) { - return true; - } - return false; - }) - .map(chapter => { - return { - id: chapter.name, // chapter.id, - title: chapter.display.displayName + ' - ' + chapter.display.title, - language: '${this.locale}' - }; - }); - resolve(chapters); - }, 2500); - }); + const script = ` + new Promise((resolve, reject) => { + // wait until episodes have been updated with purchase info ... + setTimeout(() => { + let chapters = __LZ_PRODUCT__.all // __LZ_PRODUCT__.product.episodes + .filter(chapter => { + if(chapter.purchased) { + return true; + } + if(chapter.coin === 0) { + return true; + } + if(chapter.freedAt && chapter.freedAt < Date.now()) { + return true; + } + if(chapter.prefree && chapter.prefree.closeTimer && chapter.prefree.closeTimer.expiredAt > Date.now()) { + return true; + } + return false; + }) + .map(chapter => { + return { + id: chapter.name, // chapter.id, + title: chapter.display.displayName + ' - ' + chapter.display.title, + language: '${this.locale}' + }; + }); + resolve(chapters); + }, 2500); + }); `; - let request = new Request(new URL('/comic/' + manga.id, this.url), this.requestOptions); + const request = new Request(`${this.url}/comic/${manga.id}`, this.requestOptions); return await Engine.Request.fetchUI(request, script); } @@ -159,27 +169,30 @@ export default class Lezhin extends Connector { await this._initializeAccount(); //check if chapter is purchased - let script = ` - new Promise((resolve, reject) => { - // wait until episodes have been updated with purchase info ... - setTimeout(() => { - let chapter = __LZ_PRODUCT__.all.filter(chapter => chapter.name == "${chapter.id}"); - resolve(chapter[0].purchased); - }, 2500); - }); + const script = ` + new Promise((resolve, reject) => { + // wait until episodes have been updated with purchase info ... + setTimeout(() => { + let chapter = __LZ_PRODUCT__.all.filter(chapter => chapter.name == "${chapter.id}"); + resolve(chapter[0].purchased); + }, 2500); + }); `; - let request = new Request(new URL('/comic/' + chapter.manga.id, this.url), this.requestOptions); + let request = new Request(`${this.url}/comic/${chapter.manga.id}`, this.requestOptions); const purchased = await Engine.Request.fetchUI(request, script); - let uri = new URL('https://www.lezhin.com/lz-api/v2/inventory_groups/comic_viewer'); - uri.searchParams.set('platform', 'web'); - uri.searchParams.set('store', 'web'); - uri.searchParams.set('alias', chapter.manga.id); - uri.searchParams.set('name', chapter.id); - uri.searchParams.set('preload', false); - uri.searchParams.set('type', 'comic_episode'); + const uri = new URL('https://www.lezhin.com/lz-api/v2/inventory_groups/comic_viewer'); + const params = new URLSearchParams ({ + 'platform': 'web', + 'store': 'web', + 'alias': chapter.manga.id, + 'name': chapter.id, + 'preload': false, + 'type': 'comic_episode' + }); + uri.search = params.toString(); request = new Request(uri, this.requestOptions); - let data = await this.fetchJSON(request); + const data = await this.fetchJSON(request); //default to scrollsInfo if pagesInfo doesnt exists (same structure) const content = data.data.extra.episode.pagesInfo ? data.data.extra.episode.pagesInfo : data.data.extra.episode.scrollsInfo; @@ -201,18 +214,21 @@ export default class Lezhin extends Connector { let data = JSON.parse(payload.infos); const episode = data.data.extra.episode; const extension = this.config.forceJPEG.value ? '.jpg' : '.webp'; - let imageurl = new URL('/v2' + payload.url + extension, this.cdnURL); - let purchased = payload.purchased ? payload.purchased : false; + const imageurl = new URL('/v2' + payload.url + extension, this.cdnURL); + const purchased = payload.purchased ? payload.purchased : false; //purchased = purchased || (episode.freedAt && episode.freedAt < Date.now()); const subscribed = data.data.extra.subscribed; const updatedAt = episode.updatedAt; - let tokenuri = new URL('/lz-api/v2/cloudfront/signed-url/generate', this.apiURL); - tokenuri.searchParams.set('contentId', episode.idComic); - tokenuri.searchParams.set('episodeId', episode.id); - tokenuri.searchParams.set('purchased', subscribed || purchased); - tokenuri.searchParams.set('q', 40); - tokenuri.searchParams.set('firstCheckType', 'P'); + const tokenuri = new URL('/lz-api/v2/cloudfront/signed-url/generate', this.apiURL); + const tokenParams = new URLSearchParams({ + 'contentId': episode.idComic, + 'episodeId': episode.id, + 'purchased': subscribed || purchased, + 'q': 40, + 'firstCheckType': 'P', + }); + tokenuri.search = tokenParams.toString(); //get parameters let request = new Request( tokenuri, this.requestOptions ); @@ -220,12 +236,15 @@ export default class Lezhin extends Connector { let response = await this.fetchJSON(request); //update image url - imageurl.searchParams.set('purchased', subscribed || purchased); - imageurl.searchParams.set('q', 40); - imageurl.searchParams.set('updated', updatedAt); - imageurl.searchParams.set('Policy', response.data.Policy); - imageurl.searchParams.set('Signature', response.data.Signature); - imageurl.searchParams.set('Key-Pair-Id', response.data['Key-Pair-Id']); + const imageParams = new URLSearchParams({ + 'purchased': subscribed || purchased, + 'q': 40, + 'updated': updatedAt, + 'Policy': response.data.Policy, + 'Signature': response.data.Signature, + 'Key-Pair-Id': response.data['Key-Pair-Id'] + }); + imageurl.search = imageParams.toString(); request = new Request(imageurl, this.requestOptions); response = await fetch(request); @@ -241,15 +260,18 @@ export default class Lezhin extends Connector { } async getLzConfig() { - const uri = new URL(this.url); + /*/__LZ_CONFIG__ is not available on frontpage anymore + Therefore we get it from the /account page. If we are logged it works. + In case we are not logged, /account redirect to /login and __LZ_CONFIG__ is still available. + */ const checkscript = ` new Promise((resolve, reject) => { setTimeout(() => { resolve(__LZ_CONFIG__); },2500); }); - `; - const request = new Request(uri, this.requestOptions); + `; + const request = new Request(`${this.url}/account`, this.requestOptions); return await Engine.Request.fetchUI(request, checkscript); } diff --git a/src/web/mjs/connectors/templates/MangaToon.mjs b/src/web/mjs/connectors/templates/MangaToon.mjs index 174db52cee4..bde68962340 100644 --- a/src/web/mjs/connectors/templates/MangaToon.mjs +++ b/src/web/mjs/connectors/templates/MangaToon.mjs @@ -79,7 +79,7 @@ export default class MangaToon extends Connector { * Alternative mobile request (id, token and signature calculations are all handled within the WEEX + VUE application => to much effort to break in): * https://sg.mangatoon.mobi/api/content/episodes?sign=e9da6de28b76408e77040935fd221cd3&id=5&_=1557650222&_v=1.3.6&_language=en&_token=4f9b604ed0055dd569105a7b32b6489c10&_udid=1246361632e50c7a9daef1e187471778 */ - this.fetchDOM(this.baseURL + manga.id + '/episodes', 'div.episodes-wrap a.episode-item, div.episodes-wrap-new a.episode-item-new') + this.fetchDOM(this.baseURL + manga.id + '/episodes', 'div.episode-content-asc div.episodes-wrap a.episode-item, div.episode-content-asc div.episodes-wrap-new a.episode-item-new') .then( data => { let chapterList = data.map( element => { let title = element.querySelector('div.episode-title, div.episode-title-new:last-of-type').innerText.replace(/\s+/g, ' ').trim(); @@ -122,4 +122,4 @@ export default class MangaToon extends Connector { callback( error, undefined ); } ); } -} \ No newline at end of file +} diff --git a/src/web/mjs/connectors/winterscan.mjs b/src/web/mjs/connectors/winterscan.mjs index 6c0ba17162d..7d0a6219540 100644 --- a/src/web/mjs/connectors/winterscan.mjs +++ b/src/web/mjs/connectors/winterscan.mjs @@ -7,6 +7,6 @@ export default class winterscan extends WordPressMadara { super.id = 'winterscan'; super.label = 'Winter Scan'; this.tags = [ 'webtoon', 'portuguese', 'scanlation' ]; - this.url = 'https://winterscan.com.br'; + this.url = 'https://winterscan.com'; } -} \ No newline at end of file +} diff --git a/src/web/mjs/engine/Connectors.mjs b/src/web/mjs/engine/Connectors.mjs index 234f008ae97..ae801862dc0 100644 --- a/src/web/mjs/engine/Connectors.mjs +++ b/src/web/mjs/engine/Connectors.mjs @@ -9,7 +9,7 @@ export default class Connectors { try { let response = await fetch(uri); let data = await response.json(); - return data.filter(plugin => !plugin.startsWith('.') && plugin.endsWith('.mjs')).map(plugin => uri + plugin) + return data.filter(plugin => !plugin.startsWith('.') && plugin.endsWith('.mjs')).map(plugin => uri + plugin); } catch(error) { //console.warn(error); return []; @@ -50,20 +50,20 @@ export default class Connectors { } } this._list.sort( ( a, b ) => { - return ( a.label.toLowerCase() < b.label.toLowerCase() ? -1 : 1 ); + return a.label.toLowerCase() < b.label.toLowerCase() ? -1 : 1; } ); } catch(error) { console.warn(`Failed to load connector`, error); } } - + _protocolHandler( request, callback ) { let uri = new URL( request.url ); this._list.find( connector => connector.id === uri.hostname ).handleConnectorURI( uri ) - .then( buffer => callback( buffer ) ) - .catch( error => { - //console.error( error, payload ); - callback( undefined ); - } ); + .then( buffer => callback( buffer ) ) + .catch( () => { + //console.error( error, payload ); + callback( undefined ); + } ); } } \ No newline at end of file diff --git a/src/web/mjs/engine/HeaderGenerator.mjs b/src/web/mjs/engine/HeaderGenerator.mjs index b3881a5eb14..e64d5b9c04c 100644 --- a/src/web/mjs/engine/HeaderGenerator.mjs +++ b/src/web/mjs/engine/HeaderGenerator.mjs @@ -40,7 +40,7 @@ export default class HeaderGenerator { static get _browserChrome() { let $ = HeaderGenerator; - let version = $._rn( 105, 113 ) + '.' + $._rn( 0, 99 ) + '.' + $._rn( 0, 9999 ) + '.' + $._rn( 0, 999 ); + let version = $._rn( 120, 122 ) + '.' + $._rn( 0, 99 ) + '.' + $._rn( 0, 9999 ) + '.' + $._rn( 0, 999 ); return 'Mozilla/5.0 (' + $._os + ') AppleWebKit/537.36 (KHTML, like Gecko) Chrome/' + version + ' Safari/537.36'; } diff --git a/src/web/mjs/engine/Request.mjs b/src/web/mjs/engine/Request.mjs index 5d76d25b49f..623bf529fd8 100644 --- a/src/web/mjs/engine/Request.mjs +++ b/src/web/mjs/engine/Request.mjs @@ -163,12 +163,10 @@ export default class Request { return document.querySelector('div#h-captcha') ? handleUserInteractionRequired() : handleAutomaticRedirect(); } - // 9anime WAF re-captcha - if(window.location.hostname.includes('9anime')) { + // Aniwave WAF + if(document.querySelector('title') && document.querySelector('title').text == 'WAF' && document.documentElement.innerHTML.indexOf('/waf-js-run') != -1 ) { await new Promise(resolve => setTimeout(resolve, 5000)); - if(document.querySelector('div#episodes form[action*="waf-verify"]')) { - return handleUserInteractionRequired(); - } + return handleAutomaticRedirect(); } // Crunchyscan Re-Captcha diff --git a/src/web/mjs/engine/Storage.mjs b/src/web/mjs/engine/Storage.mjs index d8ec1c03fa6..199aca4755e 100644 --- a/src/web/mjs/engine/Storage.mjs +++ b/src/web/mjs/engine/Storage.mjs @@ -777,21 +777,22 @@ export default class Storage { /** * Create a path without forbidden characters. - * Based on HakuNeko legacy for backward compatibility to detect existing mangas/chapters. - * LINUX: wxT("/\r\n\t"); - * WINDOWS: wxT("\\/:*?\"<>|\r\n\t"); - */ + */ sanatizePath(path) { + + //replace C0 && C1 control codes + // eslint-disable-next-line no-control-regex + path = path.replace(/[\u0000-\u001F\u007F-\u009F]/g, ''); if (this.platform.indexOf('win') === 0) { // TODO: max. 260 characters per path - path = path.replace(/[\\/:*?"<>|\r\n\t]/g, ''); + path = path.replace(/[\\/:*?"<>|]/g, ''); } if (this.platform.indexOf('linux') === 0) { - path = path.replace(/[/\r\n\t]/g, ''); + path = path.replace(/[/]/g, ''); } if (this.platform.indexOf('darwin') === 0) { // TODO: max. 32 chars per part - path = path.replace(/[/:\r\n\t]/g, ''); + path = path.replace(/[/:]/g, ''); } return path.replace(/[.\s]+$/g, '').trim(); } diff --git a/src/web/mjs/videostreams/FileMoon.mjs b/src/web/mjs/videostreams/FileMoon.mjs index af4c16bebbc..4228835979d 100644 --- a/src/web/mjs/videostreams/FileMoon.mjs +++ b/src/web/mjs/videostreams/FileMoon.mjs @@ -7,8 +7,14 @@ export default class FileMoon { async getPlaylist() { const script = ` - new Promise(resolve => { - resolve(window.videop.hls.url); + new Promise((resolve, reject) => { + try { + setTimeout(() => { + resolve(videop.getConfig().sources[0].file); + }, 3000); + } catch (error) { + reject(error); + } }); `; const request = new Request(this._uri);