JezK
Edit File: git-fetcher.js.map
{"version":3,"file":"git-fetcher.js","names":["tarFs","require","url","path","fs","invariant","PACKED_FLAG","GitFetcher","tarballMirrorPath","getTarballMirrorPath","tarballCachePath","getTarballCachePath","fsUtil","exists","mkdirp","dirname","copy","reporter","withCommit","parse","reference","pathname","hash","packageFilename","basename","startsWith","substr","config","getOfflineMirrorPath","join","dest","constants","TARBALL_FILENAME","override","paths","resolve","cwd","filter","tarPaths","getLocalPaths","readFirstAvailableStream","stream","Promise","reject","MessageError","lang","tarballPath","untarStream","_createUntarStream","hashStream","crypto","HashStream","pipe","on","expectHash","actualHash","getHash","SecurityError","packageName","remote","err","message","git","getFile","manifestFile","scripts","JSON","hasPrepareScript","Boolean","prepare","gitUrl","Git","npmUrlToGitUrl","init","fetchFromInstallAndPack","fetchFromGitArchive","prepareDirectory","getTemp","repository","unlink","clone","all","Config","create","binLinks","disablePrepublish","production","Lockfile","fromDirectory","prepareConfig","prepareLockFile","install","_packToTarball","_packToDirectory","_createTarballStream","tarballStream","writeStream","createWriteStream","once","savedPackedHeader","packTarball","mapHeader","header","pax","packed","PREFIX","isPackedTarball","undefined","extract","dmode","fmode","chown","map","name","length","archive","fetchFromLocal","fetchFromExternal","BaseFetcher"],"sourceRoot":"../../src","sources":["fetchers/git-fetcher.js"],"sourcesContent":["/* @flow */\n\nimport {SecurityError, MessageError} from '../errors.js';\nimport type {FetchedOverride} from '../types.js';\nimport BaseFetcher from './base-fetcher.js';\nimport Git from '../util/git.js';\nimport * as fsUtil from '../util/fs.js';\nimport * as constants from '../constants.js';\nimport * as crypto from '../util/crypto.js';\nimport {install} from '../cli/commands/install.js';\nimport Lockfile from '../lockfile';\nimport Config from '../config.js';\nimport {packTarball} from '../cli/commands/pack.js';\n\nconst tarFs = require('tar-fs');\nconst url = require('url');\nconst path = require('path');\nconst fs = require('fs');\n\nconst invariant = require('invariant');\n\nconst PACKED_FLAG = '1';\n\nexport default class GitFetcher extends BaseFetcher {\n async setupMirrorFromCache(): Promise<?string> {\n const tarballMirrorPath = this.getTarballMirrorPath();\n const tarballCachePath = this.getTarballCachePath();\n\n if (tarballMirrorPath == null) {\n return;\n }\n\n if (!await fsUtil.exists(tarballMirrorPath) && (await fsUtil.exists(tarballCachePath))) {\n // The tarball doesn't exists in the offline cache but does in the cache; we import it to the mirror\n await fsUtil.mkdirp(path.dirname(tarballMirrorPath));\n await fsUtil.copy(tarballCachePath, tarballMirrorPath, this.reporter);\n }\n }\n\n getTarballMirrorPath({withCommit = true}: {withCommit: boolean} = {}): ?string {\n const {pathname} = url.parse(this.reference);\n\n if (pathname == null) {\n return null;\n }\n\n const hash = this.hash;\n\n let packageFilename = withCommit && hash ? `${path.basename(pathname)}-${hash}` : `${path.basename(pathname)}`;\n\n if (packageFilename.startsWith(':')) {\n packageFilename = packageFilename.substr(1);\n }\n\n return this.config.getOfflineMirrorPath(packageFilename);\n }\n\n getTarballCachePath(): string {\n return path.join(this.dest, constants.TARBALL_FILENAME);\n }\n\n getLocalPaths(override: ?string): Array<string> {\n const paths: Array<?string> = [\n override ? path.resolve(this.config.cwd, override) : null,\n this.getTarballMirrorPath(),\n this.getTarballMirrorPath({withCommit: false}),\n this.getTarballCachePath(),\n ];\n // $FlowFixMe: https://github.com/facebook/flow/issues/1414\n return paths.filter(path => path != null);\n }\n\n async fetchFromLocal(override: ?string): Promise<FetchedOverride> {\n const tarPaths = this.getLocalPaths(override);\n const stream = await fsUtil.readFirstAvailableStream(tarPaths);\n\n return new Promise((resolve, reject) => {\n if (!stream) {\n reject(new MessageError(this.reporter.lang('tarballNotInNetworkOrCache', this.reference, tarPaths)));\n return;\n }\n invariant(stream, 'cachedStream should be available at this point');\n // $FlowFixMe - This is available https://nodejs.org/api/fs.html#fs_readstream_path\n const tarballPath = stream.path;\n\n const untarStream = this._createUntarStream(this.dest);\n\n const hashStream = new crypto.HashStream();\n stream\n .pipe(hashStream)\n .pipe(untarStream)\n .on('finish', () => {\n const expectHash = this.hash;\n invariant(expectHash, 'Commit hash required');\n\n const actualHash = hashStream.getHash();\n\n // This condition is disabled because \"expectHash\" actually is the commit hash\n // This is a design issue that we'll need to fix (https://github.com/yarnpkg/yarn/pull/3449)\n if (true || !expectHash || expectHash === actualHash) {\n resolve({\n hash: expectHash,\n });\n } else {\n reject(\n new SecurityError(\n this.config.reporter.lang(\n 'fetchBadHashWithPath',\n this.packageName,\n this.remote.reference,\n expectHash,\n actualHash,\n ),\n ),\n );\n }\n })\n .on('error', function(err) {\n reject(new MessageError(this.reporter.lang('fetchErrorCorrupt', err.message, tarballPath)));\n });\n });\n }\n\n async hasPrepareScript(git: Git): Promise<boolean> {\n const manifestFile = await git.getFile('package.json');\n\n if (manifestFile) {\n const scripts = JSON.parse(manifestFile).scripts;\n const hasPrepareScript = Boolean(scripts && scripts.prepare);\n return hasPrepareScript;\n }\n\n return false;\n }\n\n async fetchFromExternal(): Promise<FetchedOverride> {\n const hash = this.hash;\n invariant(hash, 'Commit hash required');\n\n const gitUrl = Git.npmUrlToGitUrl(this.reference);\n const git = new Git(this.config, gitUrl, hash);\n await git.init();\n\n if (await this.hasPrepareScript(git)) {\n await this.fetchFromInstallAndPack(git);\n } else {\n await this.fetchFromGitArchive(git);\n }\n\n return {\n hash,\n };\n }\n\n async fetchFromInstallAndPack(git: Git): Promise<void> {\n const prepareDirectory = this.config.getTemp(`${crypto.hash(git.gitUrl.repository)}.${git.hash}.prepare`);\n await fsUtil.unlink(prepareDirectory);\n\n await git.clone(prepareDirectory);\n\n const [prepareConfig, prepareLockFile] = await Promise.all([\n Config.create(\n {\n binLinks: true,\n cwd: prepareDirectory,\n disablePrepublish: true,\n production: false,\n },\n this.reporter,\n ),\n Lockfile.fromDirectory(prepareDirectory, this.reporter),\n ]);\n await install(prepareConfig, this.reporter, {}, prepareLockFile);\n\n const tarballMirrorPath = this.getTarballMirrorPath();\n const tarballCachePath = this.getTarballCachePath();\n\n if (tarballMirrorPath) {\n await this._packToTarball(prepareConfig, tarballMirrorPath);\n }\n if (tarballCachePath) {\n await this._packToTarball(prepareConfig, tarballCachePath);\n }\n\n await this._packToDirectory(prepareConfig, this.dest);\n\n await fsUtil.unlink(prepareDirectory);\n }\n\n async _packToTarball(config: Config, path: string): Promise<void> {\n const tarballStream = await this._createTarballStream(config);\n await new Promise((resolve, reject) => {\n const writeStream = fs.createWriteStream(path);\n tarballStream.on('error', reject);\n writeStream.on('error', reject);\n writeStream.on('end', resolve);\n writeStream.on('open', () => {\n tarballStream.pipe(writeStream);\n });\n writeStream.once('finish', resolve);\n });\n }\n\n async _packToDirectory(config: Config, dest: string): Promise<void> {\n const tarballStream = await this._createTarballStream(config);\n await new Promise((resolve, reject) => {\n const untarStream = this._createUntarStream(dest);\n tarballStream.on('error', reject);\n untarStream.on('error', reject);\n untarStream.on('end', resolve);\n untarStream.once('finish', resolve);\n tarballStream.pipe(untarStream);\n });\n }\n\n _createTarballStream(config: Config): Promise<stream$Duplex> {\n let savedPackedHeader = false;\n return packTarball(config, {\n mapHeader(header: Object): Object {\n if (!savedPackedHeader) {\n savedPackedHeader = true;\n header.pax = header.pax || {};\n // add a custom data on the first header\n // in order to distinguish a tar from \"git archive\" and a tar from \"pack\" command\n header.pax.packed = PACKED_FLAG;\n }\n return header;\n },\n });\n }\n\n _createUntarStream(dest: string): stream$Writable {\n const PREFIX = 'package/';\n let isPackedTarball = undefined;\n return tarFs.extract(dest, {\n dmode: 0o555, // all dirs should be readable\n fmode: 0o444, // all files should be readable\n chown: false, // don't chown. just leave as it is\n map: header => {\n if (isPackedTarball === undefined) {\n isPackedTarball = header.pax && header.pax.packed === PACKED_FLAG;\n }\n if (isPackedTarball) {\n header.name = header.name.substr(PREFIX.length);\n }\n },\n });\n }\n\n async fetchFromGitArchive(git: Git): Promise<void> {\n await git.clone(this.dest);\n const tarballMirrorPath = this.getTarballMirrorPath();\n const tarballCachePath = this.getTarballCachePath();\n\n if (tarballMirrorPath) {\n await git.archive(tarballMirrorPath);\n }\n\n if (tarballCachePath) {\n await git.archive(tarballCachePath);\n }\n }\n\n _fetch(): Promise<FetchedOverride> {\n return this.fetchFromLocal().catch(err => this.fetchFromExternal());\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAEA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAAoD;AAAA;AAAA;AAAA;AAEpD,IAAMA,KAAK,GAAGC,OAAO,CAAC,QAAQ,CAAC;AAC/B,IAAMC,GAAG,GAAGD,OAAO,CAAC,KAAK,CAAC;AAC1B,IAAME,IAAI,GAAGF,OAAO,CAAC,MAAM,CAAC;AAC5B,IAAMG,EAAE,GAAGH,OAAO,CAAC,IAAI,CAAC;AAExB,IAAMI,SAAS,GAAGJ,OAAO,CAAC,WAAW,CAAC;AAEtC,IAAMK,WAAW,GAAG,GAAG;AAAC,IAEHC,UAAU;EAAA;EAAA;EAAA;IAAA;IAAA;EAAA;EAAA;IAAA;IAAA;MAAA,8GAC7B;QAAA;QAAA;UAAA;YAAA;cACQC,iBAAiB,GAAG,IAAI,CAACC,oBAAoB,EAAE;cAC/CC,gBAAgB,GAAG,IAAI,CAACC,mBAAmB,EAAE;cAAA,MAE/CH,iBAAiB,IAAI,IAAI;gBAAA;gBAAA;cAAA;cAAA;YAAA;cAAA;cAAA,OAIlBI,MAAM,GAACC,MAAM,CAACL,iBAAiB,CAAC;YAAA;cAAA;cAAA;gBAAA;gBAAA;cAAA;cAAA;cAAA,OAAWI,MAAM,GAACC,MAAM,CAACH,gBAAgB,CAAC;YAAA;cAAA;YAAA;cAAA;gBAAA;gBAAA;cAAA;cAAA;cAAA,OAE7EE,MAAM,GAACE,MAAM,CAACX,IAAI,CAACY,OAAO,CAACP,iBAAiB,CAAC,CAAC;YAAA;cAAA;cAAA,OAC9CI,MAAM,GAACI,IAAI,CAACN,gBAAgB,EAAEF,iBAAiB,EAAE,IAAI,CAACS,QAAQ,CAAC;YAAA;YAAA;cAAA;UAAA;QAAA;MAAA,CAExE;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA,OAED,gCAA+E;MAAA,+EAAb,CAAC,CAAC;QAAA,uBAA9CC,UAAU;QAAVA,UAAU,gCAAG,IAAI;MACrC,iBAAmBhB,GAAG,CAACiB,KAAK,CAAC,IAAI,CAACC,SAAS,CAAC;QAArCC,QAAQ,cAARA,QAAQ;MAEf,IAAIA,QAAQ,IAAI,IAAI,EAAE;QACpB,OAAO,IAAI;MACb;MAEA,IAAMC,IAAI,GAAG,IAAI,CAACA,IAAI;MAEtB,IAAIC,eAAe,GAAGL,UAAU,IAAII,IAAI,aAAMnB,IAAI,CAACqB,QAAQ,CAACH,QAAQ,CAAC,cAAIC,IAAI,cAAQnB,IAAI,CAACqB,QAAQ,CAACH,QAAQ,CAAC,CAAE;MAE9G,IAAIE,eAAe,CAACE,UAAU,CAAC,GAAG,CAAC,EAAE;QACnCF,eAAe,GAAGA,eAAe,CAACG,MAAM,CAAC,CAAC,CAAC;MAC7C;MAEA,OAAO,IAAI,CAACC,MAAM,CAACC,oBAAoB,CAACL,eAAe,CAAC;IAC1D;EAAC;IAAA;IAAA,OAED,+BAA8B;MAC5B,OAAOpB,IAAI,CAAC0B,IAAI,CAAC,IAAI,CAACC,IAAI,EAAEC,SAAS,GAACC,gBAAgB,CAAC;IACzD;EAAC;IAAA;IAAA,OAED,uBAAcC,QAAiB,EAAiB;MAC9C,IAAMC,KAAqB,GAAG,CAC5BD,QAAQ,GAAG9B,IAAI,CAACgC,OAAO,CAAC,IAAI,CAACR,MAAM,CAACS,GAAG,EAAEH,QAAQ,CAAC,GAAG,IAAI,EACzD,IAAI,CAACxB,oBAAoB,EAAE,EAC3B,IAAI,CAACA,oBAAoB,CAAC;QAACS,UAAU,EAAE;MAAK,CAAC,CAAC,EAC9C,IAAI,CAACP,mBAAmB,EAAE,CAC3B;MACD;MACA,OAAOuB,KAAK,CAACG,MAAM,CAAC,UAAAlC,IAAI;QAAA,OAAIA,IAAI,IAAI,IAAI;MAAA,EAAC;IAC3C;EAAC;IAAA;IAAA;MAAA,wGAED,kBAAqB8B,QAAiB;QAAA;QAAA;QAAA;UAAA;YAAA;cAC9BK,QAAQ,GAAG,IAAI,CAACC,aAAa,CAACN,QAAQ,CAAC;cAAA;cAAA,OACxBrB,MAAM,GAAC4B,wBAAwB,CAACF,QAAQ,CAAC;YAAA;cAAxDG,MAAM;cAAA,kCAEL,IAAIC,OAAO,CAAC,UAACP,OAAO,EAAEQ,MAAM,EAAK;gBACtC,IAAI,CAACF,MAAM,EAAE;kBACXE,MAAM,CAAC,KAAIC,sBAAY,EAAC,KAAI,CAAC3B,QAAQ,CAAC4B,IAAI,CAAC,4BAA4B,EAAE,KAAI,CAACzB,SAAS,EAAEkB,QAAQ,CAAC,CAAC,CAAC;kBACpG;gBACF;gBACAjC,SAAS,CAACoC,MAAM,EAAE,gDAAgD,CAAC;gBACnE;gBACA,IAAMK,WAAW,GAAGL,MAAM,CAACtC,IAAI;gBAE/B,IAAM4C,WAAW,GAAG,KAAI,CAACC,kBAAkB,CAAC,KAAI,CAAClB,IAAI,CAAC;gBAEtD,IAAMmB,UAAU,GAAG,KAAIC,MAAM,GAACC,UAAU,GAAE;gBAC1CV,MAAM,CACHW,IAAI,CAACH,UAAU,CAAC,CAChBG,IAAI,CAACL,WAAW,CAAC,CACjBM,EAAE,CAAC,QAAQ,EAAE,YAAM;kBAClB,IAAMC,UAAU,GAAG,KAAI,CAAChC,IAAI;kBAC5BjB,SAAS,CAACiD,UAAU,EAAE,sBAAsB,CAAC;kBAE7C,IAAMC,UAAU,GAAGN,UAAU,CAACO,OAAO,EAAE;;kBAEvC;kBACA;kBACA,IAAI,IAAI,IAAI,CAACF,UAAU,IAAIA,UAAU,KAAKC,UAAU,EAAE;oBACpDpB,OAAO,CAAC;sBACNb,IAAI,EAAEgC;oBACR,CAAC,CAAC;kBACJ,CAAC,MAAM;oBACLX,MAAM,CACJ,KAAIc,uBAAa,EACf,KAAI,CAAC9B,MAAM,CAACV,QAAQ,CAAC4B,IAAI,CACvB,sBAAsB,EACtB,KAAI,CAACa,WAAW,EAChB,KAAI,CAACC,MAAM,CAACvC,SAAS,EACrBkC,UAAU,EACVC,UAAU,CACX,CACF,CACF;kBACH;gBACF,CAAC,CAAC,CACDF,EAAE,CAAC,OAAO,EAAE,UAASO,GAAG,EAAE;kBACzBjB,MAAM,CAAC,KAAIC,sBAAY,EAAC,IAAI,CAAC3B,QAAQ,CAAC4B,IAAI,CAAC,mBAAmB,EAAEe,GAAG,CAACC,OAAO,EAAEf,WAAW,CAAC,CAAC,CAAC;gBAC7F,CAAC,CAAC;cACN,CAAC,CAAC;YAAA;YAAA;cAAA;UAAA;QAAA;MAAA,CACH;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,0GAED,kBAAuBgB,GAAQ;QAAA;QAAA;UAAA;YAAA;cAAA;cAAA,OACFA,GAAG,CAACC,OAAO,CAAC,cAAc,CAAC;YAAA;cAAhDC,YAAY;cAAA,KAEdA,YAAY;gBAAA;gBAAA;cAAA;cACRC,OAAO,GAAGC,IAAI,CAAC/C,KAAK,CAAC6C,YAAY,CAAC,CAACC,OAAO;cAC1CE,kBAAgB,GAAGC,OAAO,CAACH,OAAO,IAAIA,OAAO,CAACI,OAAO,CAAC;cAAA,kCACrDF,kBAAgB;YAAA;cAAA,kCAGlB,KAAK;YAAA;YAAA;cAAA;UAAA;QAAA;MAAA,CACb;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,2GAED;QAAA;QAAA;UAAA;YAAA;cACQ7C,IAAI,GAAG,IAAI,CAACA,IAAI;cACtBjB,SAAS,CAACiB,IAAI,EAAE,sBAAsB,CAAC;cAEjCgD,MAAM,GAAGC,iBAAG,CAACC,cAAc,CAAC,IAAI,CAACpD,SAAS,CAAC;cAC3C0C,GAAG,GAAG,KAAIS,iBAAG,EAAC,IAAI,CAAC5C,MAAM,EAAE2C,MAAM,EAAEhD,IAAI,CAAC;cAAA;cAAA,OACxCwC,GAAG,CAACW,IAAI,EAAE;YAAA;cAAA;cAAA,OAEN,IAAI,CAACN,gBAAgB,CAACL,GAAG,CAAC;YAAA;cAAA;gBAAA;gBAAA;cAAA;cAAA;cAAA,OAC5B,IAAI,CAACY,uBAAuB,CAACZ,GAAG,CAAC;YAAA;cAAA;cAAA;YAAA;cAAA;cAAA,OAEjC,IAAI,CAACa,mBAAmB,CAACb,GAAG,CAAC;YAAA;cAAA,kCAG9B;gBACLxC,IAAI,EAAJA;cACF,CAAC;YAAA;YAAA;cAAA;UAAA;QAAA;MAAA,CACF;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,iHAED,kBAA8BwC,GAAQ;QAAA;QAAA;UAAA;YAAA;cAC9Bc,gBAAgB,GAAG,IAAI,CAACjD,MAAM,CAACkD,OAAO,WAAI3B,MAAM,GAAC5B,IAAI,CAACwC,GAAG,CAACQ,MAAM,CAACQ,UAAU,CAAC,cAAIhB,GAAG,CAACxC,IAAI,cAAW;cAAA;cAAA,OACnGV,MAAM,GAACmE,MAAM,CAACH,gBAAgB,CAAC;YAAA;cAAA;cAAA,OAE/Bd,GAAG,CAACkB,KAAK,CAACJ,gBAAgB,CAAC;YAAA;cAAA;cAAA,OAEclC,OAAO,CAACuC,GAAG,CAAC,CACzDC,oBAAM,CAACC,MAAM,CACX;gBACEC,QAAQ,EAAE,IAAI;gBACdhD,GAAG,EAAEwC,gBAAgB;gBACrBS,iBAAiB,EAAE,IAAI;gBACvBC,UAAU,EAAE;cACd,CAAC,EACD,IAAI,CAACrE,QAAQ,CACd,EACDsE,sBAAQ,CAACC,aAAa,CAACZ,gBAAgB,EAAE,IAAI,CAAC3D,QAAQ,CAAC,CACxD,CAAC;YAAA;cAAA;cAAA;cAXKwE,aAAa;cAAEC,eAAe;cAAA;cAAA,OAY/B,IAAAC,kBAAO,EAACF,aAAa,EAAE,IAAI,CAACxE,QAAQ,EAAE,CAAC,CAAC,EAAEyE,eAAe,CAAC;YAAA;cAE1DlF,iBAAiB,GAAG,IAAI,CAACC,oBAAoB,EAAE;cAC/CC,gBAAgB,GAAG,IAAI,CAACC,mBAAmB,EAAE;cAAA,KAE/CH,iBAAiB;gBAAA;gBAAA;cAAA;cAAA;cAAA,OACb,IAAI,CAACoF,cAAc,CAACH,aAAa,EAAEjF,iBAAiB,CAAC;YAAA;cAAA,KAEzDE,gBAAgB;gBAAA;gBAAA;cAAA;cAAA;cAAA,OACZ,IAAI,CAACkF,cAAc,CAACH,aAAa,EAAE/E,gBAAgB,CAAC;YAAA;cAAA;cAAA,OAGtD,IAAI,CAACmF,gBAAgB,CAACJ,aAAa,EAAE,IAAI,CAAC3D,IAAI,CAAC;YAAA;cAAA;cAAA,OAE/ClB,MAAM,GAACmE,MAAM,CAACH,gBAAgB,CAAC;YAAA;YAAA;cAAA;UAAA;QAAA;MAAA,CACtC;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,wGAED,kBAAqBjD,MAAc,EAAExB,IAAY;QAAA;QAAA;UAAA;YAAA;cAAA;cAAA,OACnB,IAAI,CAAC2F,oBAAoB,CAACnE,MAAM,CAAC;YAAA;cAAvDoE,aAAa;cAAA;cAAA,OACb,IAAIrD,OAAO,CAAC,UAACP,OAAO,EAAEQ,MAAM,EAAK;gBACrC,IAAMqD,WAAW,GAAG5F,EAAE,CAAC6F,iBAAiB,CAAC9F,IAAI,CAAC;gBAC9C4F,aAAa,CAAC1C,EAAE,CAAC,OAAO,EAAEV,MAAM,CAAC;gBACjCqD,WAAW,CAAC3C,EAAE,CAAC,OAAO,EAAEV,MAAM,CAAC;gBAC/BqD,WAAW,CAAC3C,EAAE,CAAC,KAAK,EAAElB,OAAO,CAAC;gBAC9B6D,WAAW,CAAC3C,EAAE,CAAC,MAAM,EAAE,YAAM;kBAC3B0C,aAAa,CAAC3C,IAAI,CAAC4C,WAAW,CAAC;gBACjC,CAAC,CAAC;gBACFA,WAAW,CAACE,IAAI,CAAC,QAAQ,EAAE/D,OAAO,CAAC;cACrC,CAAC,CAAC;YAAA;YAAA;cAAA;UAAA;QAAA;MAAA,CACH;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,0GAED,kBAAuBR,MAAc,EAAEG,IAAY;QAAA;QAAA;QAAA;UAAA;YAAA;cAAA;cAAA,OACrB,IAAI,CAACgE,oBAAoB,CAACnE,MAAM,CAAC;YAAA;cAAvDoE,aAAa;cAAA;cAAA,OACb,IAAIrD,OAAO,CAAC,UAACP,OAAO,EAAEQ,MAAM,EAAK;gBACrC,IAAMI,WAAW,GAAG,MAAI,CAACC,kBAAkB,CAAClB,IAAI,CAAC;gBACjDiE,aAAa,CAAC1C,EAAE,CAAC,OAAO,EAAEV,MAAM,CAAC;gBACjCI,WAAW,CAACM,EAAE,CAAC,OAAO,EAAEV,MAAM,CAAC;gBAC/BI,WAAW,CAACM,EAAE,CAAC,KAAK,EAAElB,OAAO,CAAC;gBAC9BY,WAAW,CAACmD,IAAI,CAAC,QAAQ,EAAE/D,OAAO,CAAC;gBACnC4D,aAAa,CAAC3C,IAAI,CAACL,WAAW,CAAC;cACjC,CAAC,CAAC;YAAA;YAAA;cAAA;UAAA;QAAA;MAAA,CACH;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA,OAED,8BAAqBpB,MAAc,EAA0B;MAC3D,IAAIwE,iBAAiB,GAAG,KAAK;MAC7B,OAAO,IAAAC,mBAAW,EAACzE,MAAM,EAAE;QACzB0E,SAAS,qBAACC,MAAc,EAAU;UAChC,IAAI,CAACH,iBAAiB,EAAE;YACtBA,iBAAiB,GAAG,IAAI;YACxBG,MAAM,CAACC,GAAG,GAAGD,MAAM,CAACC,GAAG,IAAI,CAAC,CAAC;YAC7B;YACA;YACAD,MAAM,CAACC,GAAG,CAACC,MAAM,GAAGlG,WAAW;UACjC;UACA,OAAOgG,MAAM;QACf;MACF,CAAC,CAAC;IACJ;EAAC;IAAA;IAAA,OAED,4BAAmBxE,IAAY,EAAmB;MAChD,IAAM2E,MAAM,GAAG,UAAU;MACzB,IAAIC,eAAe,GAAGC,SAAS;MAC/B,OAAO3G,KAAK,CAAC4G,OAAO,CAAC9E,IAAI,EAAE;QACzB+E,KAAK,EAAE,GAAK;QAAE;QACdC,KAAK,EAAE,GAAK;QAAE;QACdC,KAAK,EAAE,KAAK;QAAE;QACdC,GAAG,EAAE,aAAAV,MAAM,EAAI;UACb,IAAII,eAAe,KAAKC,SAAS,EAAE;YACjCD,eAAe,GAAGJ,MAAM,CAACC,GAAG,IAAID,MAAM,CAACC,GAAG,CAACC,MAAM,KAAKlG,WAAW;UACnE;UACA,IAAIoG,eAAe,EAAE;YACnBJ,MAAM,CAACW,IAAI,GAAGX,MAAM,CAACW,IAAI,CAACvF,MAAM,CAAC+E,MAAM,CAACS,MAAM,CAAC;UACjD;QACF;MACF,CAAC,CAAC;IACJ;EAAC;IAAA;IAAA;MAAA,6GAED,kBAA0BpD,GAAQ;QAAA;QAAA;UAAA;YAAA;cAAA;cAAA,OAC1BA,GAAG,CAACkB,KAAK,CAAC,IAAI,CAAClD,IAAI,CAAC;YAAA;cACpBtB,iBAAiB,GAAG,IAAI,CAACC,oBAAoB,EAAE;cAC/CC,gBAAgB,GAAG,IAAI,CAACC,mBAAmB,EAAE;cAAA,KAE/CH,iBAAiB;gBAAA;gBAAA;cAAA;cAAA;cAAA,OACbsD,GAAG,CAACqD,OAAO,CAAC3G,iBAAiB,CAAC;YAAA;cAAA,KAGlCE,gBAAgB;gBAAA;gBAAA;cAAA;cAAA;cAAA,OACZoD,GAAG,CAACqD,OAAO,CAACzG,gBAAgB,CAAC;YAAA;YAAA;cAAA;UAAA;QAAA;MAAA,CAEtC;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA,OAED,kBAAmC;MAAA;MACjC,OAAO,IAAI,CAAC0G,cAAc,EAAE,SAAM,CAAC,UAAAxD,GAAG;QAAA,OAAI,MAAI,CAACyD,iBAAiB,EAAE;MAAA,EAAC;IACrE;EAAC;EAAA;AAAA,EAlPqCC,yBAAW;AAAA"}