commit ec06da0ebcedaa06b638d89a26e33af748a18d48 Author: Kurdistan Tech Ministry Date: Mon Jan 5 14:00:34 2026 +0300 Initial rebrand: @polkadot -> @pezkuwi (14 packages) - Package namespace: @polkadot/* -> @pezkuwi/* - Repository: polkadot-js/common -> pezkuwichain/pezkuwi-common - Author: Pezkuwi Team Core packages: - @pezkuwi/util (utilities) - @pezkuwi/util-crypto (crypto primitives) - @pezkuwi/keyring (account management) - @pezkuwi/networks (chain metadata) - @pezkuwi/hw-ledger (Ledger hardware wallet) - @pezkuwi/x-* (10 polyfill packages) Total: 14 packages Upstream: polkadot-js/common v14.0.1 diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..3c229b5 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,10 @@ +root = true +[*] +indent_style=space +indent_size=2 +tab_width=2 +end_of_line=lf +charset=utf-8 +trim_trailing_whitespace=true +max_line_length=120 +insert_final_newline=true diff --git a/.github/issue_template.md b/.github/issue_template.md new file mode 100644 index 0000000..10f6952 --- /dev/null +++ b/.github/issue_template.md @@ -0,0 +1,86 @@ + + + +* **I'm submitting a ...** + + + + - [ ] Bug report + - [ ] Feature request + - [ ] Support request + - [ ] Other + + +* **What is the current behavior and expected behavior?** + + + + +* **What is the motivation for changing the behavior?** + + + + +* **Please tell us about your environment:** + + + + - Version: + - Environment: + + - [ ] Node.js + - [ ] Browser + - [ ] Other (limited support for other environments) + + - Language: + + - [ ] JavaScript + - [ ] TypeScript (include tsc --version) + - [ ] Other diff --git a/.github/workflows/auto-approve.yml b/.github/workflows/auto-approve.yml new file mode 100644 index 0000000..566790f --- /dev/null +++ b/.github/workflows/auto-approve.yml @@ -0,0 +1,16 @@ +name: bot + +on: + pull_request: + types: [labeled] + +jobs: + approve: + if: "! startsWith(github.event.head_commit.message, '[CI Skip]') && (!github.event.pull_request || github.event.pull_request.head.repo.full_name == github.repository)" + runs-on: ubuntu-latest + steps: + - uses: jacogr/action-approve@795afd1dd096a2071d7ec98740661af4e853b7da + with: + authors: jacogr, TarikGul + labels: -auto + token: ${{ secrets.GH_PAT_BOT }} diff --git a/.github/workflows/auto-merge.yml b/.github/workflows/auto-merge.yml new file mode 100644 index 0000000..caf5da1 --- /dev/null +++ b/.github/workflows/auto-merge.yml @@ -0,0 +1,16 @@ +name: bot + +on: + pull_request: + types: [labeled] + +jobs: + merge: + runs-on: ubuntu-latest + steps: + - uses: jacogr/action-merge@d2d64b4545acd93b0a9575177d3d215ae3f92029 + with: + checks: pr (build),pr (lint),pr (test) + labels: -auto + strategy: squash + token: ${{ secrets.GH_PAT_BOT }} diff --git a/.github/workflows/lock.yml b/.github/workflows/lock.yml new file mode 100644 index 0000000..14d88c3 --- /dev/null +++ b/.github/workflows/lock.yml @@ -0,0 +1,25 @@ +name: 'Lock Threads' + +on: + schedule: + - cron: '15 1/3 * * *' + +jobs: + lock: + runs-on: ubuntu-latest + env: + YARN_ENABLE_SCRIPTS: false + steps: + - uses: dessant/lock-threads@c1b35aecc5cdb1a34539d14196df55838bb2f836 + with: + github-token: ${{ secrets.GH_PAT_BOT }} + issue-inactive-days: '7' + issue-comment: > + This thread has been automatically locked since there has not been + any recent activity after it was closed. Please open a new issue + if you think you have a related problem or query. + pr-inactive-days: '2' + pr-comment: > + This pull request has been automatically locked since there + has not been any recent activity after it was closed. + Please open a new issue for related bugs. diff --git a/.github/workflows/pr-any.yml b/.github/workflows/pr-any.yml new file mode 100644 index 0000000..356e496 --- /dev/null +++ b/.github/workflows/pr-any.yml @@ -0,0 +1,28 @@ +name: PR +on: [pull_request] + +jobs: + pr: + continue-on-error: true + strategy: + matrix: + step: ['lint', 'test', 'build', 'deno'] + runs-on: ubuntu-latest + env: + YARN_ENABLE_SCRIPTS: false + CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }} + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: 'lts/*' + - uses: denoland/setup-deno@v1 + with: + # Deno v2 throws errors with specific types therefore we set it to the last version before v2 + deno-version: v1.46.3 + - name: ${{ matrix.step }} + if: always() + run: | + deno --version + yarn install --immutable + yarn ${{ matrix.step }} diff --git a/.github/workflows/push-master.yml b/.github/workflows/push-master.yml new file mode 100644 index 0000000..4082c93 --- /dev/null +++ b/.github/workflows/push-master.yml @@ -0,0 +1,31 @@ +name: Master +on: + push: + branches: + - master + +jobs: + master: + if: "! startsWith(github.event.head_commit.message, '[CI Skip]')" + strategy: + matrix: + step: ['build:release'] + runs-on: ubuntu-latest + env: + YARN_ENABLE_SCRIPTS: false + CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }} + GH_PAT: ${{ secrets.GH_PAT_BOT }} + GH_RELEASE_GITHUB_API_TOKEN: ${{ secrets.GH_PAT_BOT }} + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + token: ${{ secrets.GH_PAT_BOT }} + - uses: actions/setup-node@v4 + with: + node-version: 'lts/*' + - name: ${{ matrix.step }} + run: | + yarn install --immutable + yarn ${{ matrix.step }} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8667f66 --- /dev/null +++ b/.gitignore @@ -0,0 +1,28 @@ +--test-* +_book/ +build/ +build-*/ +coverage/ +node_modules/ +tmp/ +/import_map.json +/mod.ts +.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local +.idea +.npmrc +.vscode +.yarn/* +!.yarn/releases +!.yarn/plugins +.pnp.* +cc-test-reporter +lerna-debug.log* +npm-debug.log* +package-lock.json +yarn-debug.log* +yarn-error.log* +tsconfig.*buildinfo diff --git a/.mailmap b/.mailmap new file mode 100644 index 0000000..414c6ab --- /dev/null +++ b/.mailmap @@ -0,0 +1,3 @@ +Jaco +github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> +github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Github Actions diff --git a/.npmignore b/.npmignore new file mode 100644 index 0000000..e69de29 diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..c832fc9 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,3 @@ +build +coverage +packages diff --git a/.prettierrc.cjs b/.prettierrc.cjs new file mode 100644 index 0000000..9db0e68 --- /dev/null +++ b/.prettierrc.cjs @@ -0,0 +1,4 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +module.exports = require('@polkadot/dev/config/prettier.cjs'); diff --git a/.yarn/plugins/.keep b/.yarn/plugins/.keep new file mode 100644 index 0000000..e69de29 diff --git a/.yarn/releases/yarn-4.9.1.cjs b/.yarn/releases/yarn-4.9.1.cjs new file mode 100755 index 0000000..657026d --- /dev/null +++ b/.yarn/releases/yarn-4.9.1.cjs @@ -0,0 +1,948 @@ +#!/usr/bin/env node +/* eslint-disable */ +//prettier-ignore +(()=>{var u7e=Object.create;var D_=Object.defineProperty;var f7e=Object.getOwnPropertyDescriptor;var A7e=Object.getOwnPropertyNames;var p7e=Object.getPrototypeOf,h7e=Object.prototype.hasOwnProperty;var ye=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof require<"u"?require:e)[r]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});var It=(t,e)=>()=>(t&&(e=t(t=0)),e);var L=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),Vt=(t,e)=>{for(var r in e)D_(t,r,{get:e[r],enumerable:!0})},g7e=(t,e,r,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of A7e(e))!h7e.call(t,a)&&a!==r&&D_(t,a,{get:()=>e[a],enumerable:!(s=f7e(e,a))||s.enumerable});return t};var et=(t,e,r)=>(r=t!=null?u7e(p7e(t)):{},g7e(e||!t||!t.__esModule?D_(r,"default",{value:t,enumerable:!0}):r,t));var ui={};Vt(ui,{SAFE_TIME:()=>P$,S_IFDIR:()=>lx,S_IFLNK:()=>cx,S_IFMT:()=>_f,S_IFREG:()=>M2});var _f,lx,M2,cx,P$,x$=It(()=>{_f=61440,lx=16384,M2=32768,cx=40960,P$=456789e3});var or={};Vt(or,{EBADF:()=>Uo,EBUSY:()=>d7e,EEXIST:()=>w7e,EINVAL:()=>y7e,EISDIR:()=>C7e,ENOENT:()=>E7e,ENOSYS:()=>m7e,ENOTDIR:()=>I7e,ENOTEMPTY:()=>v7e,EOPNOTSUPP:()=>S7e,EROFS:()=>B7e,ERR_DIR_CLOSED:()=>b_});function wc(t,e){return Object.assign(new Error(`${t}: ${e}`),{code:t})}function d7e(t){return wc("EBUSY",t)}function m7e(t,e){return wc("ENOSYS",`${t}, ${e}`)}function y7e(t){return wc("EINVAL",`invalid argument, ${t}`)}function Uo(t){return wc("EBADF",`bad file descriptor, ${t}`)}function E7e(t){return wc("ENOENT",`no such file or directory, ${t}`)}function I7e(t){return wc("ENOTDIR",`not a directory, ${t}`)}function C7e(t){return wc("EISDIR",`illegal operation on a directory, ${t}`)}function w7e(t){return wc("EEXIST",`file already exists, ${t}`)}function B7e(t){return wc("EROFS",`read-only filesystem, ${t}`)}function v7e(t){return wc("ENOTEMPTY",`directory not empty, ${t}`)}function S7e(t){return wc("EOPNOTSUPP",`operation not supported, ${t}`)}function b_(){return wc("ERR_DIR_CLOSED","Directory handle was closed")}var ux=It(()=>{});var el={};Vt(el,{BigIntStatsEntry:()=>iE,DEFAULT_MODE:()=>k_,DirEntry:()=>P_,StatEntry:()=>nE,areStatsEqual:()=>Q_,clearStats:()=>fx,convertToBigIntStats:()=>b7e,makeDefaultStats:()=>k$,makeEmptyStats:()=>D7e});function k$(){return new nE}function D7e(){return fx(k$())}function fx(t){for(let e in t)if(Object.hasOwn(t,e)){let r=t[e];typeof r=="number"?t[e]=0:typeof r=="bigint"?t[e]=BigInt(0):x_.types.isDate(r)&&(t[e]=new Date(0))}return t}function b7e(t){let e=new iE;for(let r in t)if(Object.hasOwn(t,r)){let s=t[r];typeof s=="number"?e[r]=BigInt(s):x_.types.isDate(s)&&(e[r]=new Date(s))}return e.atimeNs=e.atimeMs*BigInt(1e6),e.mtimeNs=e.mtimeMs*BigInt(1e6),e.ctimeNs=e.ctimeMs*BigInt(1e6),e.birthtimeNs=e.birthtimeMs*BigInt(1e6),e}function Q_(t,e){if(t.atimeMs!==e.atimeMs||t.birthtimeMs!==e.birthtimeMs||t.blksize!==e.blksize||t.blocks!==e.blocks||t.ctimeMs!==e.ctimeMs||t.dev!==e.dev||t.gid!==e.gid||t.ino!==e.ino||t.isBlockDevice()!==e.isBlockDevice()||t.isCharacterDevice()!==e.isCharacterDevice()||t.isDirectory()!==e.isDirectory()||t.isFIFO()!==e.isFIFO()||t.isFile()!==e.isFile()||t.isSocket()!==e.isSocket()||t.isSymbolicLink()!==e.isSymbolicLink()||t.mode!==e.mode||t.mtimeMs!==e.mtimeMs||t.nlink!==e.nlink||t.rdev!==e.rdev||t.size!==e.size||t.uid!==e.uid)return!1;let r=t,s=e;return!(r.atimeNs!==s.atimeNs||r.mtimeNs!==s.mtimeNs||r.ctimeNs!==s.ctimeNs||r.birthtimeNs!==s.birthtimeNs)}var x_,k_,P_,nE,iE,T_=It(()=>{x_=et(ye("util")),k_=33188,P_=class{constructor(){this.name="";this.path="";this.mode=0}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&61440)===16384}isFIFO(){return!1}isFile(){return(this.mode&61440)===32768}isSocket(){return!1}isSymbolicLink(){return(this.mode&61440)===40960}},nE=class{constructor(){this.uid=0;this.gid=0;this.size=0;this.blksize=0;this.atimeMs=0;this.mtimeMs=0;this.ctimeMs=0;this.birthtimeMs=0;this.atime=new Date(0);this.mtime=new Date(0);this.ctime=new Date(0);this.birthtime=new Date(0);this.dev=0;this.ino=0;this.mode=k_;this.nlink=1;this.rdev=0;this.blocks=1}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&61440)===16384}isFIFO(){return!1}isFile(){return(this.mode&61440)===32768}isSocket(){return!1}isSymbolicLink(){return(this.mode&61440)===40960}},iE=class{constructor(){this.uid=BigInt(0);this.gid=BigInt(0);this.size=BigInt(0);this.blksize=BigInt(0);this.atimeMs=BigInt(0);this.mtimeMs=BigInt(0);this.ctimeMs=BigInt(0);this.birthtimeMs=BigInt(0);this.atimeNs=BigInt(0);this.mtimeNs=BigInt(0);this.ctimeNs=BigInt(0);this.birthtimeNs=BigInt(0);this.atime=new Date(0);this.mtime=new Date(0);this.ctime=new Date(0);this.birthtime=new Date(0);this.dev=BigInt(0);this.ino=BigInt(0);this.mode=BigInt(k_);this.nlink=BigInt(1);this.rdev=BigInt(0);this.blocks=BigInt(1)}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&BigInt(61440))===BigInt(16384)}isFIFO(){return!1}isFile(){return(this.mode&BigInt(61440))===BigInt(32768)}isSocket(){return!1}isSymbolicLink(){return(this.mode&BigInt(61440))===BigInt(40960)}}});function T7e(t){let e,r;if(e=t.match(k7e))t=e[1];else if(r=t.match(Q7e))t=`\\\\${r[1]?".\\":""}${r[2]}`;else return t;return t.replace(/\//g,"\\")}function R7e(t){t=t.replace(/\\/g,"/");let e,r;return(e=t.match(P7e))?t=`/${e[1]}`:(r=t.match(x7e))&&(t=`/unc/${r[1]?".dot/":""}${r[2]}`),t}function Ax(t,e){return t===ue?T$(e):R_(e)}var _2,vt,Er,ue,K,Q$,P7e,x7e,k7e,Q7e,R_,T$,tl=It(()=>{_2=et(ye("path")),vt={root:"/",dot:".",parent:".."},Er={home:"~",nodeModules:"node_modules",manifest:"package.json",lockfile:"yarn.lock",virtual:"__virtual__",pnpJs:".pnp.js",pnpCjs:".pnp.cjs",pnpData:".pnp.data.json",pnpEsmLoader:".pnp.loader.mjs",rc:".yarnrc.yml",env:".env"},ue=Object.create(_2.default),K=Object.create(_2.default.posix);ue.cwd=()=>process.cwd();K.cwd=process.platform==="win32"?()=>R_(process.cwd()):process.cwd;process.platform==="win32"&&(K.resolve=(...t)=>t.length>0&&K.isAbsolute(t[0])?_2.default.posix.resolve(...t):_2.default.posix.resolve(K.cwd(),...t));Q$=function(t,e,r){return e=t.normalize(e),r=t.normalize(r),e===r?".":(e.endsWith(t.sep)||(e=e+t.sep),r.startsWith(e)?r.slice(e.length):null)};ue.contains=(t,e)=>Q$(ue,t,e);K.contains=(t,e)=>Q$(K,t,e);P7e=/^([a-zA-Z]:.*)$/,x7e=/^\/\/(\.\/)?(.*)$/,k7e=/^\/([a-zA-Z]:.*)$/,Q7e=/^\/unc\/(\.dot\/)?(.*)$/;R_=process.platform==="win32"?R7e:t=>t,T$=process.platform==="win32"?T7e:t=>t;ue.fromPortablePath=T$;ue.toPortablePath=R_});async function px(t,e){let r="0123456789abcdef";await t.mkdirPromise(e.indexPath,{recursive:!0});let s=[];for(let a of r)for(let n of r)s.push(t.mkdirPromise(t.pathUtils.join(e.indexPath,`${a}${n}`),{recursive:!0}));return await Promise.all(s),e.indexPath}async function R$(t,e,r,s,a){let n=t.pathUtils.normalize(e),c=r.pathUtils.normalize(s),f=[],p=[],{atime:h,mtime:E}=a.stableTime?{atime:md,mtime:md}:await r.lstatPromise(c);await t.mkdirpPromise(t.pathUtils.dirname(e),{utimes:[h,E]}),await F_(f,p,t,n,r,c,{...a,didParentExist:!0});for(let C of f)await C();await Promise.all(p.map(C=>C()))}async function F_(t,e,r,s,a,n,c){let f=c.didParentExist?await F$(r,s):null,p=await a.lstatPromise(n),{atime:h,mtime:E}=c.stableTime?{atime:md,mtime:md}:p,C;switch(!0){case p.isDirectory():C=await N7e(t,e,r,s,f,a,n,p,c);break;case p.isFile():C=await M7e(t,e,r,s,f,a,n,p,c);break;case p.isSymbolicLink():C=await _7e(t,e,r,s,f,a,n,p,c);break;default:throw new Error(`Unsupported file type (${p.mode})`)}return(c.linkStrategy?.type!=="HardlinkFromIndex"||!p.isFile())&&((C||f?.mtime?.getTime()!==E.getTime()||f?.atime?.getTime()!==h.getTime())&&(e.push(()=>r.lutimesPromise(s,h,E)),C=!0),(f===null||(f.mode&511)!==(p.mode&511))&&(e.push(()=>r.chmodPromise(s,p.mode&511)),C=!0)),C}async function F$(t,e){try{return await t.lstatPromise(e)}catch{return null}}async function N7e(t,e,r,s,a,n,c,f,p){if(a!==null&&!a.isDirectory())if(p.overwrite)t.push(async()=>r.removePromise(s)),a=null;else return!1;let h=!1;a===null&&(t.push(async()=>{try{await r.mkdirPromise(s,{mode:f.mode})}catch(S){if(S.code!=="EEXIST")throw S}}),h=!0);let E=await n.readdirPromise(c),C=p.didParentExist&&!a?{...p,didParentExist:!1}:p;if(p.stableSort)for(let S of E.sort())await F_(t,e,r,r.pathUtils.join(s,S),n,n.pathUtils.join(c,S),C)&&(h=!0);else(await Promise.all(E.map(async P=>{await F_(t,e,r,r.pathUtils.join(s,P),n,n.pathUtils.join(c,P),C)}))).some(P=>P)&&(h=!0);return h}async function O7e(t,e,r,s,a,n,c,f,p,h){let E=await n.checksumFilePromise(c,{algorithm:"sha1"}),C=420,S=f.mode&511,P=`${E}${S!==C?S.toString(8):""}`,I=r.pathUtils.join(h.indexPath,E.slice(0,2),`${P}.dat`),R;(ce=>(ce[ce.Lock=0]="Lock",ce[ce.Rename=1]="Rename"))(R||={});let N=1,U=await F$(r,I);if(a){let ie=U&&a.dev===U.dev&&a.ino===U.ino,Ae=U?.mtimeMs!==F7e;if(ie&&Ae&&h.autoRepair&&(N=0,U=null),!ie)if(p.overwrite)t.push(async()=>r.removePromise(s)),a=null;else return!1}let W=!U&&N===1?`${I}.${Math.floor(Math.random()*4294967296).toString(16).padStart(8,"0")}`:null,te=!1;return t.push(async()=>{if(!U&&(N===0&&await r.lockPromise(I,async()=>{let ie=await n.readFilePromise(c);await r.writeFilePromise(I,ie)}),N===1&&W)){let ie=await n.readFilePromise(c);await r.writeFilePromise(W,ie);try{await r.linkPromise(W,I)}catch(Ae){if(Ae.code==="EEXIST")te=!0,await r.unlinkPromise(W);else throw Ae}}a||await r.linkPromise(I,s)}),e.push(async()=>{U||(await r.lutimesPromise(I,md,md),S!==C&&await r.chmodPromise(I,S)),W&&!te&&await r.unlinkPromise(W)}),!1}async function L7e(t,e,r,s,a,n,c,f,p){if(a!==null)if(p.overwrite)t.push(async()=>r.removePromise(s)),a=null;else return!1;return t.push(async()=>{let h=await n.readFilePromise(c);await r.writeFilePromise(s,h)}),!0}async function M7e(t,e,r,s,a,n,c,f,p){return p.linkStrategy?.type==="HardlinkFromIndex"?O7e(t,e,r,s,a,n,c,f,p,p.linkStrategy):L7e(t,e,r,s,a,n,c,f,p)}async function _7e(t,e,r,s,a,n,c,f,p){if(a!==null)if(p.overwrite)t.push(async()=>r.removePromise(s)),a=null;else return!1;return t.push(async()=>{await r.symlinkPromise(Ax(r.pathUtils,await n.readlinkPromise(c)),s)}),!0}var md,F7e,N_=It(()=>{tl();md=new Date(456789e3*1e3),F7e=md.getTime()});function hx(t,e,r,s){let a=()=>{let n=r.shift();if(typeof n>"u")return null;let c=t.pathUtils.join(e,n);return Object.assign(t.statSync(c),{name:n,path:void 0})};return new U2(e,a,s)}var U2,N$=It(()=>{ux();U2=class{constructor(e,r,s={}){this.path=e;this.nextDirent=r;this.opts=s;this.closed=!1}throwIfClosed(){if(this.closed)throw b_()}async*[Symbol.asyncIterator](){try{let e;for(;(e=await this.read())!==null;)yield e}finally{await this.close()}}read(e){let r=this.readSync();return typeof e<"u"?e(null,r):Promise.resolve(r)}readSync(){return this.throwIfClosed(),this.nextDirent()}close(e){return this.closeSync(),typeof e<"u"?e(null):Promise.resolve()}closeSync(){this.throwIfClosed(),this.opts.onClose?.(),this.closed=!0}}});function O$(t,e){if(t!==e)throw new Error(`Invalid StatWatcher status: expected '${e}', got '${t}'`)}var L$,gx,M$=It(()=>{L$=ye("events");T_();gx=class t extends L$.EventEmitter{constructor(r,s,{bigint:a=!1}={}){super();this.status="ready";this.changeListeners=new Map;this.startTimeout=null;this.fakeFs=r,this.path=s,this.bigint=a,this.lastStats=this.stat()}static create(r,s,a){let n=new t(r,s,a);return n.start(),n}start(){O$(this.status,"ready"),this.status="running",this.startTimeout=setTimeout(()=>{this.startTimeout=null,this.fakeFs.existsSync(this.path)||this.emit("change",this.lastStats,this.lastStats)},3)}stop(){O$(this.status,"running"),this.status="stopped",this.startTimeout!==null&&(clearTimeout(this.startTimeout),this.startTimeout=null),this.emit("stop")}stat(){try{return this.fakeFs.statSync(this.path,{bigint:this.bigint})}catch{let r=this.bigint?new iE:new nE;return fx(r)}}makeInterval(r){let s=setInterval(()=>{let a=this.stat(),n=this.lastStats;Q_(a,n)||(this.lastStats=a,this.emit("change",a,n))},r.interval);return r.persistent?s:s.unref()}registerChangeListener(r,s){this.addListener("change",r),this.changeListeners.set(r,this.makeInterval(s))}unregisterChangeListener(r){this.removeListener("change",r);let s=this.changeListeners.get(r);typeof s<"u"&&clearInterval(s),this.changeListeners.delete(r)}unregisterAllChangeListeners(){for(let r of this.changeListeners.keys())this.unregisterChangeListener(r)}hasChangeListeners(){return this.changeListeners.size>0}ref(){for(let r of this.changeListeners.values())r.ref();return this}unref(){for(let r of this.changeListeners.values())r.unref();return this}}});function sE(t,e,r,s){let a,n,c,f;switch(typeof r){case"function":a=!1,n=!0,c=5007,f=r;break;default:({bigint:a=!1,persistent:n=!0,interval:c=5007}=r),f=s;break}let p=dx.get(t);typeof p>"u"&&dx.set(t,p=new Map);let h=p.get(e);return typeof h>"u"&&(h=gx.create(t,e,{bigint:a}),p.set(e,h)),h.registerChangeListener(f,{persistent:n,interval:c}),h}function yd(t,e,r){let s=dx.get(t);if(typeof s>"u")return;let a=s.get(e);typeof a>"u"||(typeof r>"u"?a.unregisterAllChangeListeners():a.unregisterChangeListener(r),a.hasChangeListeners()||(a.stop(),s.delete(e)))}function Ed(t){let e=dx.get(t);if(!(typeof e>"u"))for(let r of e.keys())yd(t,r)}var dx,O_=It(()=>{M$();dx=new WeakMap});function U7e(t){let e=t.match(/\r?\n/g);if(e===null)return U$.EOL;let r=e.filter(a=>a===`\r +`).length,s=e.length-r;return r>s?`\r +`:` +`}function Id(t,e){return e.replace(/\r?\n/g,U7e(t))}var _$,U$,Ep,Uf,Cd=It(()=>{_$=ye("crypto"),U$=ye("os");N_();tl();Ep=class{constructor(e){this.pathUtils=e}async*genTraversePromise(e,{stableSort:r=!1}={}){let s=[e];for(;s.length>0;){let a=s.shift();if((await this.lstatPromise(a)).isDirectory()){let c=await this.readdirPromise(a);if(r)for(let f of c.sort())s.push(this.pathUtils.join(a,f));else throw new Error("Not supported")}else yield a}}async checksumFilePromise(e,{algorithm:r="sha512"}={}){let s=await this.openPromise(e,"r");try{let n=Buffer.allocUnsafeSlow(65536),c=(0,_$.createHash)(r),f=0;for(;(f=await this.readPromise(s,n,0,65536))!==0;)c.update(f===65536?n:n.slice(0,f));return c.digest("hex")}finally{await this.closePromise(s)}}async removePromise(e,{recursive:r=!0,maxRetries:s=5}={}){let a;try{a=await this.lstatPromise(e)}catch(n){if(n.code==="ENOENT")return;throw n}if(a.isDirectory()){if(r){let n=await this.readdirPromise(e);await Promise.all(n.map(c=>this.removePromise(this.pathUtils.resolve(e,c))))}for(let n=0;n<=s;n++)try{await this.rmdirPromise(e);break}catch(c){if(c.code!=="EBUSY"&&c.code!=="ENOTEMPTY")throw c;nsetTimeout(f,n*100))}}else await this.unlinkPromise(e)}removeSync(e,{recursive:r=!0}={}){let s;try{s=this.lstatSync(e)}catch(a){if(a.code==="ENOENT")return;throw a}if(s.isDirectory()){if(r)for(let a of this.readdirSync(e))this.removeSync(this.pathUtils.resolve(e,a));this.rmdirSync(e)}else this.unlinkSync(e)}async mkdirpPromise(e,{chmod:r,utimes:s}={}){if(e=this.resolve(e),e===this.pathUtils.dirname(e))return;let a=e.split(this.pathUtils.sep),n;for(let c=2;c<=a.length;++c){let f=a.slice(0,c).join(this.pathUtils.sep);if(!this.existsSync(f)){try{await this.mkdirPromise(f)}catch(p){if(p.code==="EEXIST")continue;throw p}if(n??=f,r!=null&&await this.chmodPromise(f,r),s!=null)await this.utimesPromise(f,s[0],s[1]);else{let p=await this.statPromise(this.pathUtils.dirname(f));await this.utimesPromise(f,p.atime,p.mtime)}}}return n}mkdirpSync(e,{chmod:r,utimes:s}={}){if(e=this.resolve(e),e===this.pathUtils.dirname(e))return;let a=e.split(this.pathUtils.sep),n;for(let c=2;c<=a.length;++c){let f=a.slice(0,c).join(this.pathUtils.sep);if(!this.existsSync(f)){try{this.mkdirSync(f)}catch(p){if(p.code==="EEXIST")continue;throw p}if(n??=f,r!=null&&this.chmodSync(f,r),s!=null)this.utimesSync(f,s[0],s[1]);else{let p=this.statSync(this.pathUtils.dirname(f));this.utimesSync(f,p.atime,p.mtime)}}}return n}async copyPromise(e,r,{baseFs:s=this,overwrite:a=!0,stableSort:n=!1,stableTime:c=!1,linkStrategy:f=null}={}){return await R$(this,e,s,r,{overwrite:a,stableSort:n,stableTime:c,linkStrategy:f})}copySync(e,r,{baseFs:s=this,overwrite:a=!0}={}){let n=s.lstatSync(r),c=this.existsSync(e);if(n.isDirectory()){this.mkdirpSync(e);let p=s.readdirSync(r);for(let h of p)this.copySync(this.pathUtils.join(e,h),s.pathUtils.join(r,h),{baseFs:s,overwrite:a})}else if(n.isFile()){if(!c||a){c&&this.removeSync(e);let p=s.readFileSync(r);this.writeFileSync(e,p)}}else if(n.isSymbolicLink()){if(!c||a){c&&this.removeSync(e);let p=s.readlinkSync(r);this.symlinkSync(Ax(this.pathUtils,p),e)}}else throw new Error(`Unsupported file type (file: ${r}, mode: 0o${n.mode.toString(8).padStart(6,"0")})`);let f=n.mode&511;this.chmodSync(e,f)}async changeFilePromise(e,r,s={}){return Buffer.isBuffer(r)?this.changeFileBufferPromise(e,r,s):this.changeFileTextPromise(e,r,s)}async changeFileBufferPromise(e,r,{mode:s}={}){let a=Buffer.alloc(0);try{a=await this.readFilePromise(e)}catch{}Buffer.compare(a,r)!==0&&await this.writeFilePromise(e,r,{mode:s})}async changeFileTextPromise(e,r,{automaticNewlines:s,mode:a}={}){let n="";try{n=await this.readFilePromise(e,"utf8")}catch{}let c=s?Id(n,r):r;n!==c&&await this.writeFilePromise(e,c,{mode:a})}changeFileSync(e,r,s={}){return Buffer.isBuffer(r)?this.changeFileBufferSync(e,r,s):this.changeFileTextSync(e,r,s)}changeFileBufferSync(e,r,{mode:s}={}){let a=Buffer.alloc(0);try{a=this.readFileSync(e)}catch{}Buffer.compare(a,r)!==0&&this.writeFileSync(e,r,{mode:s})}changeFileTextSync(e,r,{automaticNewlines:s=!1,mode:a}={}){let n="";try{n=this.readFileSync(e,"utf8")}catch{}let c=s?Id(n,r):r;n!==c&&this.writeFileSync(e,c,{mode:a})}async movePromise(e,r){try{await this.renamePromise(e,r)}catch(s){if(s.code==="EXDEV")await this.copyPromise(r,e),await this.removePromise(e);else throw s}}moveSync(e,r){try{this.renameSync(e,r)}catch(s){if(s.code==="EXDEV")this.copySync(r,e),this.removeSync(e);else throw s}}async lockPromise(e,r){let s=`${e}.flock`,a=1e3/60,n=Date.now(),c=null,f=async()=>{let p;try{[p]=await this.readJsonPromise(s)}catch{return Date.now()-n<500}try{return process.kill(p,0),!0}catch{return!1}};for(;c===null;)try{c=await this.openPromise(s,"wx")}catch(p){if(p.code==="EEXIST"){if(!await f())try{await this.unlinkPromise(s);continue}catch{}if(Date.now()-n<60*1e3)await new Promise(h=>setTimeout(h,a));else throw new Error(`Couldn't acquire a lock in a reasonable time (via ${s})`)}else throw p}await this.writePromise(c,JSON.stringify([process.pid]));try{return await r()}finally{try{await this.closePromise(c),await this.unlinkPromise(s)}catch{}}}async readJsonPromise(e){let r=await this.readFilePromise(e,"utf8");try{return JSON.parse(r)}catch(s){throw s.message+=` (in ${e})`,s}}readJsonSync(e){let r=this.readFileSync(e,"utf8");try{return JSON.parse(r)}catch(s){throw s.message+=` (in ${e})`,s}}async writeJsonPromise(e,r,{compact:s=!1}={}){let a=s?0:2;return await this.writeFilePromise(e,`${JSON.stringify(r,null,a)} +`)}writeJsonSync(e,r,{compact:s=!1}={}){let a=s?0:2;return this.writeFileSync(e,`${JSON.stringify(r,null,a)} +`)}async preserveTimePromise(e,r){let s=await this.lstatPromise(e),a=await r();typeof a<"u"&&(e=a),await this.lutimesPromise(e,s.atime,s.mtime)}async preserveTimeSync(e,r){let s=this.lstatSync(e),a=r();typeof a<"u"&&(e=a),this.lutimesSync(e,s.atime,s.mtime)}},Uf=class extends Ep{constructor(){super(K)}}});var Hs,Ip=It(()=>{Cd();Hs=class extends Ep{getExtractHint(e){return this.baseFs.getExtractHint(e)}resolve(e){return this.mapFromBase(this.baseFs.resolve(this.mapToBase(e)))}getRealPath(){return this.mapFromBase(this.baseFs.getRealPath())}async openPromise(e,r,s){return this.baseFs.openPromise(this.mapToBase(e),r,s)}openSync(e,r,s){return this.baseFs.openSync(this.mapToBase(e),r,s)}async opendirPromise(e,r){return Object.assign(await this.baseFs.opendirPromise(this.mapToBase(e),r),{path:e})}opendirSync(e,r){return Object.assign(this.baseFs.opendirSync(this.mapToBase(e),r),{path:e})}async readPromise(e,r,s,a,n){return await this.baseFs.readPromise(e,r,s,a,n)}readSync(e,r,s,a,n){return this.baseFs.readSync(e,r,s,a,n)}async writePromise(e,r,s,a,n){return typeof r=="string"?await this.baseFs.writePromise(e,r,s):await this.baseFs.writePromise(e,r,s,a,n)}writeSync(e,r,s,a,n){return typeof r=="string"?this.baseFs.writeSync(e,r,s):this.baseFs.writeSync(e,r,s,a,n)}async closePromise(e){return this.baseFs.closePromise(e)}closeSync(e){this.baseFs.closeSync(e)}createReadStream(e,r){return this.baseFs.createReadStream(e!==null?this.mapToBase(e):e,r)}createWriteStream(e,r){return this.baseFs.createWriteStream(e!==null?this.mapToBase(e):e,r)}async realpathPromise(e){return this.mapFromBase(await this.baseFs.realpathPromise(this.mapToBase(e)))}realpathSync(e){return this.mapFromBase(this.baseFs.realpathSync(this.mapToBase(e)))}async existsPromise(e){return this.baseFs.existsPromise(this.mapToBase(e))}existsSync(e){return this.baseFs.existsSync(this.mapToBase(e))}accessSync(e,r){return this.baseFs.accessSync(this.mapToBase(e),r)}async accessPromise(e,r){return this.baseFs.accessPromise(this.mapToBase(e),r)}async statPromise(e,r){return this.baseFs.statPromise(this.mapToBase(e),r)}statSync(e,r){return this.baseFs.statSync(this.mapToBase(e),r)}async fstatPromise(e,r){return this.baseFs.fstatPromise(e,r)}fstatSync(e,r){return this.baseFs.fstatSync(e,r)}lstatPromise(e,r){return this.baseFs.lstatPromise(this.mapToBase(e),r)}lstatSync(e,r){return this.baseFs.lstatSync(this.mapToBase(e),r)}async fchmodPromise(e,r){return this.baseFs.fchmodPromise(e,r)}fchmodSync(e,r){return this.baseFs.fchmodSync(e,r)}async chmodPromise(e,r){return this.baseFs.chmodPromise(this.mapToBase(e),r)}chmodSync(e,r){return this.baseFs.chmodSync(this.mapToBase(e),r)}async fchownPromise(e,r,s){return this.baseFs.fchownPromise(e,r,s)}fchownSync(e,r,s){return this.baseFs.fchownSync(e,r,s)}async chownPromise(e,r,s){return this.baseFs.chownPromise(this.mapToBase(e),r,s)}chownSync(e,r,s){return this.baseFs.chownSync(this.mapToBase(e),r,s)}async renamePromise(e,r){return this.baseFs.renamePromise(this.mapToBase(e),this.mapToBase(r))}renameSync(e,r){return this.baseFs.renameSync(this.mapToBase(e),this.mapToBase(r))}async copyFilePromise(e,r,s=0){return this.baseFs.copyFilePromise(this.mapToBase(e),this.mapToBase(r),s)}copyFileSync(e,r,s=0){return this.baseFs.copyFileSync(this.mapToBase(e),this.mapToBase(r),s)}async appendFilePromise(e,r,s){return this.baseFs.appendFilePromise(this.fsMapToBase(e),r,s)}appendFileSync(e,r,s){return this.baseFs.appendFileSync(this.fsMapToBase(e),r,s)}async writeFilePromise(e,r,s){return this.baseFs.writeFilePromise(this.fsMapToBase(e),r,s)}writeFileSync(e,r,s){return this.baseFs.writeFileSync(this.fsMapToBase(e),r,s)}async unlinkPromise(e){return this.baseFs.unlinkPromise(this.mapToBase(e))}unlinkSync(e){return this.baseFs.unlinkSync(this.mapToBase(e))}async utimesPromise(e,r,s){return this.baseFs.utimesPromise(this.mapToBase(e),r,s)}utimesSync(e,r,s){return this.baseFs.utimesSync(this.mapToBase(e),r,s)}async lutimesPromise(e,r,s){return this.baseFs.lutimesPromise(this.mapToBase(e),r,s)}lutimesSync(e,r,s){return this.baseFs.lutimesSync(this.mapToBase(e),r,s)}async mkdirPromise(e,r){return this.baseFs.mkdirPromise(this.mapToBase(e),r)}mkdirSync(e,r){return this.baseFs.mkdirSync(this.mapToBase(e),r)}async rmdirPromise(e,r){return this.baseFs.rmdirPromise(this.mapToBase(e),r)}rmdirSync(e,r){return this.baseFs.rmdirSync(this.mapToBase(e),r)}async rmPromise(e,r){return this.baseFs.rmPromise(this.mapToBase(e),r)}rmSync(e,r){return this.baseFs.rmSync(this.mapToBase(e),r)}async linkPromise(e,r){return this.baseFs.linkPromise(this.mapToBase(e),this.mapToBase(r))}linkSync(e,r){return this.baseFs.linkSync(this.mapToBase(e),this.mapToBase(r))}async symlinkPromise(e,r,s){let a=this.mapToBase(r);if(this.pathUtils.isAbsolute(e))return this.baseFs.symlinkPromise(this.mapToBase(e),a,s);let n=this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(r),e)),c=this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(a),n);return this.baseFs.symlinkPromise(c,a,s)}symlinkSync(e,r,s){let a=this.mapToBase(r);if(this.pathUtils.isAbsolute(e))return this.baseFs.symlinkSync(this.mapToBase(e),a,s);let n=this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(r),e)),c=this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(a),n);return this.baseFs.symlinkSync(c,a,s)}async readFilePromise(e,r){return this.baseFs.readFilePromise(this.fsMapToBase(e),r)}readFileSync(e,r){return this.baseFs.readFileSync(this.fsMapToBase(e),r)}readdirPromise(e,r){return this.baseFs.readdirPromise(this.mapToBase(e),r)}readdirSync(e,r){return this.baseFs.readdirSync(this.mapToBase(e),r)}async readlinkPromise(e){return this.mapFromBase(await this.baseFs.readlinkPromise(this.mapToBase(e)))}readlinkSync(e){return this.mapFromBase(this.baseFs.readlinkSync(this.mapToBase(e)))}async truncatePromise(e,r){return this.baseFs.truncatePromise(this.mapToBase(e),r)}truncateSync(e,r){return this.baseFs.truncateSync(this.mapToBase(e),r)}async ftruncatePromise(e,r){return this.baseFs.ftruncatePromise(e,r)}ftruncateSync(e,r){return this.baseFs.ftruncateSync(e,r)}watch(e,r,s){return this.baseFs.watch(this.mapToBase(e),r,s)}watchFile(e,r,s){return this.baseFs.watchFile(this.mapToBase(e),r,s)}unwatchFile(e,r){return this.baseFs.unwatchFile(this.mapToBase(e),r)}fsMapToBase(e){return typeof e=="number"?e:this.mapToBase(e)}}});var Hf,H$=It(()=>{Ip();Hf=class extends Hs{constructor(e,{baseFs:r,pathUtils:s}){super(s),this.target=e,this.baseFs=r}getRealPath(){return this.target}getBaseFs(){return this.baseFs}mapFromBase(e){return e}mapToBase(e){return e}}});function j$(t){let e=t;return typeof t.path=="string"&&(e.path=ue.toPortablePath(t.path)),e}var q$,Yn,wd=It(()=>{q$=et(ye("fs"));Cd();tl();Yn=class extends Uf{constructor(e=q$.default){super(),this.realFs=e}getExtractHint(){return!1}getRealPath(){return vt.root}resolve(e){return K.resolve(e)}async openPromise(e,r,s){return await new Promise((a,n)=>{this.realFs.open(ue.fromPortablePath(e),r,s,this.makeCallback(a,n))})}openSync(e,r,s){return this.realFs.openSync(ue.fromPortablePath(e),r,s)}async opendirPromise(e,r){return await new Promise((s,a)=>{typeof r<"u"?this.realFs.opendir(ue.fromPortablePath(e),r,this.makeCallback(s,a)):this.realFs.opendir(ue.fromPortablePath(e),this.makeCallback(s,a))}).then(s=>{let a=s;return Object.defineProperty(a,"path",{value:e,configurable:!0,writable:!0}),a})}opendirSync(e,r){let a=typeof r<"u"?this.realFs.opendirSync(ue.fromPortablePath(e),r):this.realFs.opendirSync(ue.fromPortablePath(e));return Object.defineProperty(a,"path",{value:e,configurable:!0,writable:!0}),a}async readPromise(e,r,s=0,a=0,n=-1){return await new Promise((c,f)=>{this.realFs.read(e,r,s,a,n,(p,h)=>{p?f(p):c(h)})})}readSync(e,r,s,a,n){return this.realFs.readSync(e,r,s,a,n)}async writePromise(e,r,s,a,n){return await new Promise((c,f)=>typeof r=="string"?this.realFs.write(e,r,s,this.makeCallback(c,f)):this.realFs.write(e,r,s,a,n,this.makeCallback(c,f)))}writeSync(e,r,s,a,n){return typeof r=="string"?this.realFs.writeSync(e,r,s):this.realFs.writeSync(e,r,s,a,n)}async closePromise(e){await new Promise((r,s)=>{this.realFs.close(e,this.makeCallback(r,s))})}closeSync(e){this.realFs.closeSync(e)}createReadStream(e,r){let s=e!==null?ue.fromPortablePath(e):e;return this.realFs.createReadStream(s,r)}createWriteStream(e,r){let s=e!==null?ue.fromPortablePath(e):e;return this.realFs.createWriteStream(s,r)}async realpathPromise(e){return await new Promise((r,s)=>{this.realFs.realpath(ue.fromPortablePath(e),{},this.makeCallback(r,s))}).then(r=>ue.toPortablePath(r))}realpathSync(e){return ue.toPortablePath(this.realFs.realpathSync(ue.fromPortablePath(e),{}))}async existsPromise(e){return await new Promise(r=>{this.realFs.exists(ue.fromPortablePath(e),r)})}accessSync(e,r){return this.realFs.accessSync(ue.fromPortablePath(e),r)}async accessPromise(e,r){return await new Promise((s,a)=>{this.realFs.access(ue.fromPortablePath(e),r,this.makeCallback(s,a))})}existsSync(e){return this.realFs.existsSync(ue.fromPortablePath(e))}async statPromise(e,r){return await new Promise((s,a)=>{r?this.realFs.stat(ue.fromPortablePath(e),r,this.makeCallback(s,a)):this.realFs.stat(ue.fromPortablePath(e),this.makeCallback(s,a))})}statSync(e,r){return r?this.realFs.statSync(ue.fromPortablePath(e),r):this.realFs.statSync(ue.fromPortablePath(e))}async fstatPromise(e,r){return await new Promise((s,a)=>{r?this.realFs.fstat(e,r,this.makeCallback(s,a)):this.realFs.fstat(e,this.makeCallback(s,a))})}fstatSync(e,r){return r?this.realFs.fstatSync(e,r):this.realFs.fstatSync(e)}async lstatPromise(e,r){return await new Promise((s,a)=>{r?this.realFs.lstat(ue.fromPortablePath(e),r,this.makeCallback(s,a)):this.realFs.lstat(ue.fromPortablePath(e),this.makeCallback(s,a))})}lstatSync(e,r){return r?this.realFs.lstatSync(ue.fromPortablePath(e),r):this.realFs.lstatSync(ue.fromPortablePath(e))}async fchmodPromise(e,r){return await new Promise((s,a)=>{this.realFs.fchmod(e,r,this.makeCallback(s,a))})}fchmodSync(e,r){return this.realFs.fchmodSync(e,r)}async chmodPromise(e,r){return await new Promise((s,a)=>{this.realFs.chmod(ue.fromPortablePath(e),r,this.makeCallback(s,a))})}chmodSync(e,r){return this.realFs.chmodSync(ue.fromPortablePath(e),r)}async fchownPromise(e,r,s){return await new Promise((a,n)=>{this.realFs.fchown(e,r,s,this.makeCallback(a,n))})}fchownSync(e,r,s){return this.realFs.fchownSync(e,r,s)}async chownPromise(e,r,s){return await new Promise((a,n)=>{this.realFs.chown(ue.fromPortablePath(e),r,s,this.makeCallback(a,n))})}chownSync(e,r,s){return this.realFs.chownSync(ue.fromPortablePath(e),r,s)}async renamePromise(e,r){return await new Promise((s,a)=>{this.realFs.rename(ue.fromPortablePath(e),ue.fromPortablePath(r),this.makeCallback(s,a))})}renameSync(e,r){return this.realFs.renameSync(ue.fromPortablePath(e),ue.fromPortablePath(r))}async copyFilePromise(e,r,s=0){return await new Promise((a,n)=>{this.realFs.copyFile(ue.fromPortablePath(e),ue.fromPortablePath(r),s,this.makeCallback(a,n))})}copyFileSync(e,r,s=0){return this.realFs.copyFileSync(ue.fromPortablePath(e),ue.fromPortablePath(r),s)}async appendFilePromise(e,r,s){return await new Promise((a,n)=>{let c=typeof e=="string"?ue.fromPortablePath(e):e;s?this.realFs.appendFile(c,r,s,this.makeCallback(a,n)):this.realFs.appendFile(c,r,this.makeCallback(a,n))})}appendFileSync(e,r,s){let a=typeof e=="string"?ue.fromPortablePath(e):e;s?this.realFs.appendFileSync(a,r,s):this.realFs.appendFileSync(a,r)}async writeFilePromise(e,r,s){return await new Promise((a,n)=>{let c=typeof e=="string"?ue.fromPortablePath(e):e;s?this.realFs.writeFile(c,r,s,this.makeCallback(a,n)):this.realFs.writeFile(c,r,this.makeCallback(a,n))})}writeFileSync(e,r,s){let a=typeof e=="string"?ue.fromPortablePath(e):e;s?this.realFs.writeFileSync(a,r,s):this.realFs.writeFileSync(a,r)}async unlinkPromise(e){return await new Promise((r,s)=>{this.realFs.unlink(ue.fromPortablePath(e),this.makeCallback(r,s))})}unlinkSync(e){return this.realFs.unlinkSync(ue.fromPortablePath(e))}async utimesPromise(e,r,s){return await new Promise((a,n)=>{this.realFs.utimes(ue.fromPortablePath(e),r,s,this.makeCallback(a,n))})}utimesSync(e,r,s){this.realFs.utimesSync(ue.fromPortablePath(e),r,s)}async lutimesPromise(e,r,s){return await new Promise((a,n)=>{this.realFs.lutimes(ue.fromPortablePath(e),r,s,this.makeCallback(a,n))})}lutimesSync(e,r,s){this.realFs.lutimesSync(ue.fromPortablePath(e),r,s)}async mkdirPromise(e,r){return await new Promise((s,a)=>{this.realFs.mkdir(ue.fromPortablePath(e),r,this.makeCallback(s,a))})}mkdirSync(e,r){return this.realFs.mkdirSync(ue.fromPortablePath(e),r)}async rmdirPromise(e,r){return await new Promise((s,a)=>{r?this.realFs.rmdir(ue.fromPortablePath(e),r,this.makeCallback(s,a)):this.realFs.rmdir(ue.fromPortablePath(e),this.makeCallback(s,a))})}rmdirSync(e,r){return this.realFs.rmdirSync(ue.fromPortablePath(e),r)}async rmPromise(e,r){return await new Promise((s,a)=>{r?this.realFs.rm(ue.fromPortablePath(e),r,this.makeCallback(s,a)):this.realFs.rm(ue.fromPortablePath(e),this.makeCallback(s,a))})}rmSync(e,r){return this.realFs.rmSync(ue.fromPortablePath(e),r)}async linkPromise(e,r){return await new Promise((s,a)=>{this.realFs.link(ue.fromPortablePath(e),ue.fromPortablePath(r),this.makeCallback(s,a))})}linkSync(e,r){return this.realFs.linkSync(ue.fromPortablePath(e),ue.fromPortablePath(r))}async symlinkPromise(e,r,s){return await new Promise((a,n)=>{this.realFs.symlink(ue.fromPortablePath(e.replace(/\/+$/,"")),ue.fromPortablePath(r),s,this.makeCallback(a,n))})}symlinkSync(e,r,s){return this.realFs.symlinkSync(ue.fromPortablePath(e.replace(/\/+$/,"")),ue.fromPortablePath(r),s)}async readFilePromise(e,r){return await new Promise((s,a)=>{let n=typeof e=="string"?ue.fromPortablePath(e):e;this.realFs.readFile(n,r,this.makeCallback(s,a))})}readFileSync(e,r){let s=typeof e=="string"?ue.fromPortablePath(e):e;return this.realFs.readFileSync(s,r)}async readdirPromise(e,r){return await new Promise((s,a)=>{r?r.recursive&&process.platform==="win32"?r.withFileTypes?this.realFs.readdir(ue.fromPortablePath(e),r,this.makeCallback(n=>s(n.map(j$)),a)):this.realFs.readdir(ue.fromPortablePath(e),r,this.makeCallback(n=>s(n.map(ue.toPortablePath)),a)):this.realFs.readdir(ue.fromPortablePath(e),r,this.makeCallback(s,a)):this.realFs.readdir(ue.fromPortablePath(e),this.makeCallback(s,a))})}readdirSync(e,r){return r?r.recursive&&process.platform==="win32"?r.withFileTypes?this.realFs.readdirSync(ue.fromPortablePath(e),r).map(j$):this.realFs.readdirSync(ue.fromPortablePath(e),r).map(ue.toPortablePath):this.realFs.readdirSync(ue.fromPortablePath(e),r):this.realFs.readdirSync(ue.fromPortablePath(e))}async readlinkPromise(e){return await new Promise((r,s)=>{this.realFs.readlink(ue.fromPortablePath(e),this.makeCallback(r,s))}).then(r=>ue.toPortablePath(r))}readlinkSync(e){return ue.toPortablePath(this.realFs.readlinkSync(ue.fromPortablePath(e)))}async truncatePromise(e,r){return await new Promise((s,a)=>{this.realFs.truncate(ue.fromPortablePath(e),r,this.makeCallback(s,a))})}truncateSync(e,r){return this.realFs.truncateSync(ue.fromPortablePath(e),r)}async ftruncatePromise(e,r){return await new Promise((s,a)=>{this.realFs.ftruncate(e,r,this.makeCallback(s,a))})}ftruncateSync(e,r){return this.realFs.ftruncateSync(e,r)}watch(e,r,s){return this.realFs.watch(ue.fromPortablePath(e),r,s)}watchFile(e,r,s){return this.realFs.watchFile(ue.fromPortablePath(e),r,s)}unwatchFile(e,r){return this.realFs.unwatchFile(ue.fromPortablePath(e),r)}makeCallback(e,r){return(s,a)=>{s?r(s):e(a)}}}});var Sn,G$=It(()=>{wd();Ip();tl();Sn=class extends Hs{constructor(e,{baseFs:r=new Yn}={}){super(K),this.target=this.pathUtils.normalize(e),this.baseFs=r}getRealPath(){return this.pathUtils.resolve(this.baseFs.getRealPath(),this.target)}resolve(e){return this.pathUtils.isAbsolute(e)?K.normalize(e):this.baseFs.resolve(K.join(this.target,e))}mapFromBase(e){return e}mapToBase(e){return this.pathUtils.isAbsolute(e)?e:this.pathUtils.join(this.target,e)}}});var W$,jf,Y$=It(()=>{wd();Ip();tl();W$=vt.root,jf=class extends Hs{constructor(e,{baseFs:r=new Yn}={}){super(K),this.target=this.pathUtils.resolve(vt.root,e),this.baseFs=r}getRealPath(){return this.pathUtils.resolve(this.baseFs.getRealPath(),this.pathUtils.relative(vt.root,this.target))}getTarget(){return this.target}getBaseFs(){return this.baseFs}mapToBase(e){let r=this.pathUtils.normalize(e);if(this.pathUtils.isAbsolute(e))return this.pathUtils.resolve(this.target,this.pathUtils.relative(W$,e));if(r.match(/^\.\.\/?/))throw new Error(`Resolving this path (${e}) would escape the jail`);return this.pathUtils.resolve(this.target,e)}mapFromBase(e){return this.pathUtils.resolve(W$,this.pathUtils.relative(this.target,e))}}});var oE,V$=It(()=>{Ip();oE=class extends Hs{constructor(r,s){super(s);this.instance=null;this.factory=r}get baseFs(){return this.instance||(this.instance=this.factory()),this.instance}set baseFs(r){this.instance=r}mapFromBase(r){return r}mapToBase(r){return r}}});var Bd,rl,n0,K$=It(()=>{Bd=ye("fs");Cd();wd();O_();ux();tl();rl=4278190080,n0=class extends Uf{constructor({baseFs:r=new Yn,filter:s=null,magicByte:a=42,maxOpenFiles:n=1/0,useCache:c=!0,maxAge:f=5e3,typeCheck:p=Bd.constants.S_IFREG,getMountPoint:h,factoryPromise:E,factorySync:C}){if(Math.floor(a)!==a||!(a>1&&a<=127))throw new Error("The magic byte must be set to a round value between 1 and 127 included");super();this.fdMap=new Map;this.nextFd=3;this.isMount=new Set;this.notMount=new Set;this.realPaths=new Map;this.limitOpenFilesTimeout=null;this.baseFs=r,this.mountInstances=c?new Map:null,this.factoryPromise=E,this.factorySync=C,this.filter=s,this.getMountPoint=h,this.magic=a<<24,this.maxAge=f,this.maxOpenFiles=n,this.typeCheck=p}getExtractHint(r){return this.baseFs.getExtractHint(r)}getRealPath(){return this.baseFs.getRealPath()}saveAndClose(){if(Ed(this),this.mountInstances)for(let[r,{childFs:s}]of this.mountInstances.entries())s.saveAndClose?.(),this.mountInstances.delete(r)}discardAndClose(){if(Ed(this),this.mountInstances)for(let[r,{childFs:s}]of this.mountInstances.entries())s.discardAndClose?.(),this.mountInstances.delete(r)}resolve(r){return this.baseFs.resolve(r)}remapFd(r,s){let a=this.nextFd++|this.magic;return this.fdMap.set(a,[r,s]),a}async openPromise(r,s,a){return await this.makeCallPromise(r,async()=>await this.baseFs.openPromise(r,s,a),async(n,{subPath:c})=>this.remapFd(n,await n.openPromise(c,s,a)))}openSync(r,s,a){return this.makeCallSync(r,()=>this.baseFs.openSync(r,s,a),(n,{subPath:c})=>this.remapFd(n,n.openSync(c,s,a)))}async opendirPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.opendirPromise(r,s),async(a,{subPath:n})=>await a.opendirPromise(n,s),{requireSubpath:!1})}opendirSync(r,s){return this.makeCallSync(r,()=>this.baseFs.opendirSync(r,s),(a,{subPath:n})=>a.opendirSync(n,s),{requireSubpath:!1})}async readPromise(r,s,a,n,c){if((r&rl)!==this.magic)return await this.baseFs.readPromise(r,s,a,n,c);let f=this.fdMap.get(r);if(typeof f>"u")throw Uo("read");let[p,h]=f;return await p.readPromise(h,s,a,n,c)}readSync(r,s,a,n,c){if((r&rl)!==this.magic)return this.baseFs.readSync(r,s,a,n,c);let f=this.fdMap.get(r);if(typeof f>"u")throw Uo("readSync");let[p,h]=f;return p.readSync(h,s,a,n,c)}async writePromise(r,s,a,n,c){if((r&rl)!==this.magic)return typeof s=="string"?await this.baseFs.writePromise(r,s,a):await this.baseFs.writePromise(r,s,a,n,c);let f=this.fdMap.get(r);if(typeof f>"u")throw Uo("write");let[p,h]=f;return typeof s=="string"?await p.writePromise(h,s,a):await p.writePromise(h,s,a,n,c)}writeSync(r,s,a,n,c){if((r&rl)!==this.magic)return typeof s=="string"?this.baseFs.writeSync(r,s,a):this.baseFs.writeSync(r,s,a,n,c);let f=this.fdMap.get(r);if(typeof f>"u")throw Uo("writeSync");let[p,h]=f;return typeof s=="string"?p.writeSync(h,s,a):p.writeSync(h,s,a,n,c)}async closePromise(r){if((r&rl)!==this.magic)return await this.baseFs.closePromise(r);let s=this.fdMap.get(r);if(typeof s>"u")throw Uo("close");this.fdMap.delete(r);let[a,n]=s;return await a.closePromise(n)}closeSync(r){if((r&rl)!==this.magic)return this.baseFs.closeSync(r);let s=this.fdMap.get(r);if(typeof s>"u")throw Uo("closeSync");this.fdMap.delete(r);let[a,n]=s;return a.closeSync(n)}createReadStream(r,s){return r===null?this.baseFs.createReadStream(r,s):this.makeCallSync(r,()=>this.baseFs.createReadStream(r,s),(a,{archivePath:n,subPath:c})=>{let f=a.createReadStream(c,s);return f.path=ue.fromPortablePath(this.pathUtils.join(n,c)),f})}createWriteStream(r,s){return r===null?this.baseFs.createWriteStream(r,s):this.makeCallSync(r,()=>this.baseFs.createWriteStream(r,s),(a,{subPath:n})=>a.createWriteStream(n,s))}async realpathPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.realpathPromise(r),async(s,{archivePath:a,subPath:n})=>{let c=this.realPaths.get(a);return typeof c>"u"&&(c=await this.baseFs.realpathPromise(a),this.realPaths.set(a,c)),this.pathUtils.join(c,this.pathUtils.relative(vt.root,await s.realpathPromise(n)))})}realpathSync(r){return this.makeCallSync(r,()=>this.baseFs.realpathSync(r),(s,{archivePath:a,subPath:n})=>{let c=this.realPaths.get(a);return typeof c>"u"&&(c=this.baseFs.realpathSync(a),this.realPaths.set(a,c)),this.pathUtils.join(c,this.pathUtils.relative(vt.root,s.realpathSync(n)))})}async existsPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.existsPromise(r),async(s,{subPath:a})=>await s.existsPromise(a))}existsSync(r){return this.makeCallSync(r,()=>this.baseFs.existsSync(r),(s,{subPath:a})=>s.existsSync(a))}async accessPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.accessPromise(r,s),async(a,{subPath:n})=>await a.accessPromise(n,s))}accessSync(r,s){return this.makeCallSync(r,()=>this.baseFs.accessSync(r,s),(a,{subPath:n})=>a.accessSync(n,s))}async statPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.statPromise(r,s),async(a,{subPath:n})=>await a.statPromise(n,s))}statSync(r,s){return this.makeCallSync(r,()=>this.baseFs.statSync(r,s),(a,{subPath:n})=>a.statSync(n,s))}async fstatPromise(r,s){if((r&rl)!==this.magic)return this.baseFs.fstatPromise(r,s);let a=this.fdMap.get(r);if(typeof a>"u")throw Uo("fstat");let[n,c]=a;return n.fstatPromise(c,s)}fstatSync(r,s){if((r&rl)!==this.magic)return this.baseFs.fstatSync(r,s);let a=this.fdMap.get(r);if(typeof a>"u")throw Uo("fstatSync");let[n,c]=a;return n.fstatSync(c,s)}async lstatPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.lstatPromise(r,s),async(a,{subPath:n})=>await a.lstatPromise(n,s))}lstatSync(r,s){return this.makeCallSync(r,()=>this.baseFs.lstatSync(r,s),(a,{subPath:n})=>a.lstatSync(n,s))}async fchmodPromise(r,s){if((r&rl)!==this.magic)return this.baseFs.fchmodPromise(r,s);let a=this.fdMap.get(r);if(typeof a>"u")throw Uo("fchmod");let[n,c]=a;return n.fchmodPromise(c,s)}fchmodSync(r,s){if((r&rl)!==this.magic)return this.baseFs.fchmodSync(r,s);let a=this.fdMap.get(r);if(typeof a>"u")throw Uo("fchmodSync");let[n,c]=a;return n.fchmodSync(c,s)}async chmodPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.chmodPromise(r,s),async(a,{subPath:n})=>await a.chmodPromise(n,s))}chmodSync(r,s){return this.makeCallSync(r,()=>this.baseFs.chmodSync(r,s),(a,{subPath:n})=>a.chmodSync(n,s))}async fchownPromise(r,s,a){if((r&rl)!==this.magic)return this.baseFs.fchownPromise(r,s,a);let n=this.fdMap.get(r);if(typeof n>"u")throw Uo("fchown");let[c,f]=n;return c.fchownPromise(f,s,a)}fchownSync(r,s,a){if((r&rl)!==this.magic)return this.baseFs.fchownSync(r,s,a);let n=this.fdMap.get(r);if(typeof n>"u")throw Uo("fchownSync");let[c,f]=n;return c.fchownSync(f,s,a)}async chownPromise(r,s,a){return await this.makeCallPromise(r,async()=>await this.baseFs.chownPromise(r,s,a),async(n,{subPath:c})=>await n.chownPromise(c,s,a))}chownSync(r,s,a){return this.makeCallSync(r,()=>this.baseFs.chownSync(r,s,a),(n,{subPath:c})=>n.chownSync(c,s,a))}async renamePromise(r,s){return await this.makeCallPromise(r,async()=>await this.makeCallPromise(s,async()=>await this.baseFs.renamePromise(r,s),async()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})}),async(a,{subPath:n})=>await this.makeCallPromise(s,async()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})},async(c,{subPath:f})=>{if(a!==c)throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"});return await a.renamePromise(n,f)}))}renameSync(r,s){return this.makeCallSync(r,()=>this.makeCallSync(s,()=>this.baseFs.renameSync(r,s),()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})}),(a,{subPath:n})=>this.makeCallSync(s,()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})},(c,{subPath:f})=>{if(a!==c)throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"});return a.renameSync(n,f)}))}async copyFilePromise(r,s,a=0){let n=async(c,f,p,h)=>{if(a&Bd.constants.COPYFILE_FICLONE_FORCE)throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${f}' -> ${h}'`),{code:"EXDEV"});if(a&Bd.constants.COPYFILE_EXCL&&await this.existsPromise(f))throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${f}' -> '${h}'`),{code:"EEXIST"});let E;try{E=await c.readFilePromise(f)}catch{throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${f}' -> '${h}'`),{code:"EINVAL"})}await p.writeFilePromise(h,E)};return await this.makeCallPromise(r,async()=>await this.makeCallPromise(s,async()=>await this.baseFs.copyFilePromise(r,s,a),async(c,{subPath:f})=>await n(this.baseFs,r,c,f)),async(c,{subPath:f})=>await this.makeCallPromise(s,async()=>await n(c,f,this.baseFs,s),async(p,{subPath:h})=>c!==p?await n(c,f,p,h):await c.copyFilePromise(f,h,a)))}copyFileSync(r,s,a=0){let n=(c,f,p,h)=>{if(a&Bd.constants.COPYFILE_FICLONE_FORCE)throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${f}' -> ${h}'`),{code:"EXDEV"});if(a&Bd.constants.COPYFILE_EXCL&&this.existsSync(f))throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${f}' -> '${h}'`),{code:"EEXIST"});let E;try{E=c.readFileSync(f)}catch{throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${f}' -> '${h}'`),{code:"EINVAL"})}p.writeFileSync(h,E)};return this.makeCallSync(r,()=>this.makeCallSync(s,()=>this.baseFs.copyFileSync(r,s,a),(c,{subPath:f})=>n(this.baseFs,r,c,f)),(c,{subPath:f})=>this.makeCallSync(s,()=>n(c,f,this.baseFs,s),(p,{subPath:h})=>c!==p?n(c,f,p,h):c.copyFileSync(f,h,a)))}async appendFilePromise(r,s,a){return await this.makeCallPromise(r,async()=>await this.baseFs.appendFilePromise(r,s,a),async(n,{subPath:c})=>await n.appendFilePromise(c,s,a))}appendFileSync(r,s,a){return this.makeCallSync(r,()=>this.baseFs.appendFileSync(r,s,a),(n,{subPath:c})=>n.appendFileSync(c,s,a))}async writeFilePromise(r,s,a){return await this.makeCallPromise(r,async()=>await this.baseFs.writeFilePromise(r,s,a),async(n,{subPath:c})=>await n.writeFilePromise(c,s,a))}writeFileSync(r,s,a){return this.makeCallSync(r,()=>this.baseFs.writeFileSync(r,s,a),(n,{subPath:c})=>n.writeFileSync(c,s,a))}async unlinkPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.unlinkPromise(r),async(s,{subPath:a})=>await s.unlinkPromise(a))}unlinkSync(r){return this.makeCallSync(r,()=>this.baseFs.unlinkSync(r),(s,{subPath:a})=>s.unlinkSync(a))}async utimesPromise(r,s,a){return await this.makeCallPromise(r,async()=>await this.baseFs.utimesPromise(r,s,a),async(n,{subPath:c})=>await n.utimesPromise(c,s,a))}utimesSync(r,s,a){return this.makeCallSync(r,()=>this.baseFs.utimesSync(r,s,a),(n,{subPath:c})=>n.utimesSync(c,s,a))}async lutimesPromise(r,s,a){return await this.makeCallPromise(r,async()=>await this.baseFs.lutimesPromise(r,s,a),async(n,{subPath:c})=>await n.lutimesPromise(c,s,a))}lutimesSync(r,s,a){return this.makeCallSync(r,()=>this.baseFs.lutimesSync(r,s,a),(n,{subPath:c})=>n.lutimesSync(c,s,a))}async mkdirPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.mkdirPromise(r,s),async(a,{subPath:n})=>await a.mkdirPromise(n,s))}mkdirSync(r,s){return this.makeCallSync(r,()=>this.baseFs.mkdirSync(r,s),(a,{subPath:n})=>a.mkdirSync(n,s))}async rmdirPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.rmdirPromise(r,s),async(a,{subPath:n})=>await a.rmdirPromise(n,s))}rmdirSync(r,s){return this.makeCallSync(r,()=>this.baseFs.rmdirSync(r,s),(a,{subPath:n})=>a.rmdirSync(n,s))}async rmPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.rmPromise(r,s),async(a,{subPath:n})=>await a.rmPromise(n,s))}rmSync(r,s){return this.makeCallSync(r,()=>this.baseFs.rmSync(r,s),(a,{subPath:n})=>a.rmSync(n,s))}async linkPromise(r,s){return await this.makeCallPromise(s,async()=>await this.baseFs.linkPromise(r,s),async(a,{subPath:n})=>await a.linkPromise(r,n))}linkSync(r,s){return this.makeCallSync(s,()=>this.baseFs.linkSync(r,s),(a,{subPath:n})=>a.linkSync(r,n))}async symlinkPromise(r,s,a){return await this.makeCallPromise(s,async()=>await this.baseFs.symlinkPromise(r,s,a),async(n,{subPath:c})=>await n.symlinkPromise(r,c))}symlinkSync(r,s,a){return this.makeCallSync(s,()=>this.baseFs.symlinkSync(r,s,a),(n,{subPath:c})=>n.symlinkSync(r,c))}async readFilePromise(r,s){return this.makeCallPromise(r,async()=>await this.baseFs.readFilePromise(r,s),async(a,{subPath:n})=>await a.readFilePromise(n,s))}readFileSync(r,s){return this.makeCallSync(r,()=>this.baseFs.readFileSync(r,s),(a,{subPath:n})=>a.readFileSync(n,s))}async readdirPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.readdirPromise(r,s),async(a,{subPath:n})=>await a.readdirPromise(n,s),{requireSubpath:!1})}readdirSync(r,s){return this.makeCallSync(r,()=>this.baseFs.readdirSync(r,s),(a,{subPath:n})=>a.readdirSync(n,s),{requireSubpath:!1})}async readlinkPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.readlinkPromise(r),async(s,{subPath:a})=>await s.readlinkPromise(a))}readlinkSync(r){return this.makeCallSync(r,()=>this.baseFs.readlinkSync(r),(s,{subPath:a})=>s.readlinkSync(a))}async truncatePromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.truncatePromise(r,s),async(a,{subPath:n})=>await a.truncatePromise(n,s))}truncateSync(r,s){return this.makeCallSync(r,()=>this.baseFs.truncateSync(r,s),(a,{subPath:n})=>a.truncateSync(n,s))}async ftruncatePromise(r,s){if((r&rl)!==this.magic)return this.baseFs.ftruncatePromise(r,s);let a=this.fdMap.get(r);if(typeof a>"u")throw Uo("ftruncate");let[n,c]=a;return n.ftruncatePromise(c,s)}ftruncateSync(r,s){if((r&rl)!==this.magic)return this.baseFs.ftruncateSync(r,s);let a=this.fdMap.get(r);if(typeof a>"u")throw Uo("ftruncateSync");let[n,c]=a;return n.ftruncateSync(c,s)}watch(r,s,a){return this.makeCallSync(r,()=>this.baseFs.watch(r,s,a),(n,{subPath:c})=>n.watch(c,s,a))}watchFile(r,s,a){return this.makeCallSync(r,()=>this.baseFs.watchFile(r,s,a),()=>sE(this,r,s,a))}unwatchFile(r,s){return this.makeCallSync(r,()=>this.baseFs.unwatchFile(r,s),()=>yd(this,r,s))}async makeCallPromise(r,s,a,{requireSubpath:n=!0}={}){if(typeof r!="string")return await s();let c=this.resolve(r),f=this.findMount(c);return f?n&&f.subPath==="/"?await s():await this.getMountPromise(f.archivePath,async p=>await a(p,f)):await s()}makeCallSync(r,s,a,{requireSubpath:n=!0}={}){if(typeof r!="string")return s();let c=this.resolve(r),f=this.findMount(c);return!f||n&&f.subPath==="/"?s():this.getMountSync(f.archivePath,p=>a(p,f))}findMount(r){if(this.filter&&!this.filter.test(r))return null;let s="";for(;;){let a=r.substring(s.length),n=this.getMountPoint(a,s);if(!n)return null;if(s=this.pathUtils.join(s,n),!this.isMount.has(s)){if(this.notMount.has(s))continue;try{if(this.typeCheck!==null&&(this.baseFs.statSync(s).mode&Bd.constants.S_IFMT)!==this.typeCheck){this.notMount.add(s);continue}}catch{return null}this.isMount.add(s)}return{archivePath:s,subPath:this.pathUtils.join(vt.root,r.substring(s.length))}}}limitOpenFiles(r){if(this.mountInstances===null)return;let s=Date.now(),a=s+this.maxAge,n=r===null?0:this.mountInstances.size-r;for(let[c,{childFs:f,expiresAt:p,refCount:h}]of this.mountInstances.entries())if(!(h!==0||f.hasOpenFileHandles?.())){if(s>=p){f.saveAndClose?.(),this.mountInstances.delete(c),n-=1;continue}else if(r===null||n<=0){a=p;break}f.saveAndClose?.(),this.mountInstances.delete(c),n-=1}this.limitOpenFilesTimeout===null&&(r===null&&this.mountInstances.size>0||r!==null)&&isFinite(a)&&(this.limitOpenFilesTimeout=setTimeout(()=>{this.limitOpenFilesTimeout=null,this.limitOpenFiles(null)},a-s).unref())}async getMountPromise(r,s){if(this.mountInstances){let a=this.mountInstances.get(r);if(!a){let n=await this.factoryPromise(this.baseFs,r);a=this.mountInstances.get(r),a||(a={childFs:n(),expiresAt:0,refCount:0})}this.mountInstances.delete(r),this.limitOpenFiles(this.maxOpenFiles-1),this.mountInstances.set(r,a),a.expiresAt=Date.now()+this.maxAge,a.refCount+=1;try{return await s(a.childFs)}finally{a.refCount-=1}}else{let a=(await this.factoryPromise(this.baseFs,r))();try{return await s(a)}finally{a.saveAndClose?.()}}}getMountSync(r,s){if(this.mountInstances){let a=this.mountInstances.get(r);return a||(a={childFs:this.factorySync(this.baseFs,r),expiresAt:0,refCount:0}),this.mountInstances.delete(r),this.limitOpenFiles(this.maxOpenFiles-1),this.mountInstances.set(r,a),a.expiresAt=Date.now()+this.maxAge,s(a.childFs)}else{let a=this.factorySync(this.baseFs,r);try{return s(a)}finally{a.saveAndClose?.()}}}}});var er,mx,J$=It(()=>{Cd();tl();er=()=>Object.assign(new Error("ENOSYS: unsupported filesystem access"),{code:"ENOSYS"}),mx=class t extends Ep{static{this.instance=new t}constructor(){super(K)}getExtractHint(){throw er()}getRealPath(){throw er()}resolve(){throw er()}async openPromise(){throw er()}openSync(){throw er()}async opendirPromise(){throw er()}opendirSync(){throw er()}async readPromise(){throw er()}readSync(){throw er()}async writePromise(){throw er()}writeSync(){throw er()}async closePromise(){throw er()}closeSync(){throw er()}createWriteStream(){throw er()}createReadStream(){throw er()}async realpathPromise(){throw er()}realpathSync(){throw er()}async readdirPromise(){throw er()}readdirSync(){throw er()}async existsPromise(e){throw er()}existsSync(e){throw er()}async accessPromise(){throw er()}accessSync(){throw er()}async statPromise(){throw er()}statSync(){throw er()}async fstatPromise(e){throw er()}fstatSync(e){throw er()}async lstatPromise(e){throw er()}lstatSync(e){throw er()}async fchmodPromise(){throw er()}fchmodSync(){throw er()}async chmodPromise(){throw er()}chmodSync(){throw er()}async fchownPromise(){throw er()}fchownSync(){throw er()}async chownPromise(){throw er()}chownSync(){throw er()}async mkdirPromise(){throw er()}mkdirSync(){throw er()}async rmdirPromise(){throw er()}rmdirSync(){throw er()}async rmPromise(){throw er()}rmSync(){throw er()}async linkPromise(){throw er()}linkSync(){throw er()}async symlinkPromise(){throw er()}symlinkSync(){throw er()}async renamePromise(){throw er()}renameSync(){throw er()}async copyFilePromise(){throw er()}copyFileSync(){throw er()}async appendFilePromise(){throw er()}appendFileSync(){throw er()}async writeFilePromise(){throw er()}writeFileSync(){throw er()}async unlinkPromise(){throw er()}unlinkSync(){throw er()}async utimesPromise(){throw er()}utimesSync(){throw er()}async lutimesPromise(){throw er()}lutimesSync(){throw er()}async readFilePromise(){throw er()}readFileSync(){throw er()}async readlinkPromise(){throw er()}readlinkSync(){throw er()}async truncatePromise(){throw er()}truncateSync(){throw er()}async ftruncatePromise(e,r){throw er()}ftruncateSync(e,r){throw er()}watch(){throw er()}watchFile(){throw er()}unwatchFile(){throw er()}}});var i0,z$=It(()=>{Ip();tl();i0=class extends Hs{constructor(e){super(ue),this.baseFs=e}mapFromBase(e){return ue.fromPortablePath(e)}mapToBase(e){return ue.toPortablePath(e)}}});var H7e,L_,j7e,fo,Z$=It(()=>{wd();Ip();tl();H7e=/^[0-9]+$/,L_=/^(\/(?:[^/]+\/)*?(?:\$\$virtual|__virtual__))((?:\/((?:[^/]+-)?[a-f0-9]+)(?:\/([^/]+))?)?((?:\/.*)?))$/,j7e=/^([^/]+-)?[a-f0-9]+$/,fo=class t extends Hs{static makeVirtualPath(e,r,s){if(K.basename(e)!=="__virtual__")throw new Error('Assertion failed: Virtual folders must be named "__virtual__"');if(!K.basename(r).match(j7e))throw new Error("Assertion failed: Virtual components must be ended by an hexadecimal hash");let n=K.relative(K.dirname(e),s).split("/"),c=0;for(;c{M_=et(ye("buffer")),X$=ye("url"),$$=ye("util");Ip();tl();yx=class extends Hs{constructor(e){super(ue),this.baseFs=e}mapFromBase(e){return e}mapToBase(e){if(typeof e=="string")return e;if(e instanceof URL)return(0,X$.fileURLToPath)(e);if(Buffer.isBuffer(e)){let r=e.toString();if(!q7e(e,r))throw new Error("Non-utf8 buffers are not supported at the moment. Please upvote the following issue if you encounter this error: https://github.com/yarnpkg/berry/issues/4942");return r}throw new Error(`Unsupported path type: ${(0,$$.inspect)(e)}`)}}});var see,Ho,Cp,s0,Ex,Ix,aE,Nu,Ou,tee,ree,nee,iee,H2,oee=It(()=>{see=ye("readline"),Ho=Symbol("kBaseFs"),Cp=Symbol("kFd"),s0=Symbol("kClosePromise"),Ex=Symbol("kCloseResolve"),Ix=Symbol("kCloseReject"),aE=Symbol("kRefs"),Nu=Symbol("kRef"),Ou=Symbol("kUnref"),H2=class{constructor(e,r){this[iee]=1;this[nee]=void 0;this[ree]=void 0;this[tee]=void 0;this[Ho]=r,this[Cp]=e}get fd(){return this[Cp]}async appendFile(e,r){try{this[Nu](this.appendFile);let s=(typeof r=="string"?r:r?.encoding)??void 0;return await this[Ho].appendFilePromise(this.fd,e,s?{encoding:s}:void 0)}finally{this[Ou]()}}async chown(e,r){try{return this[Nu](this.chown),await this[Ho].fchownPromise(this.fd,e,r)}finally{this[Ou]()}}async chmod(e){try{return this[Nu](this.chmod),await this[Ho].fchmodPromise(this.fd,e)}finally{this[Ou]()}}createReadStream(e){return this[Ho].createReadStream(null,{...e,fd:this.fd})}createWriteStream(e){return this[Ho].createWriteStream(null,{...e,fd:this.fd})}datasync(){throw new Error("Method not implemented.")}sync(){throw new Error("Method not implemented.")}async read(e,r,s,a){try{this[Nu](this.read);let n;return Buffer.isBuffer(e)?n=e:(e??={},n=e.buffer??Buffer.alloc(16384),r=e.offset||0,s=e.length??n.byteLength,a=e.position??null),r??=0,s??=0,s===0?{bytesRead:s,buffer:n}:{bytesRead:await this[Ho].readPromise(this.fd,n,r,s,a),buffer:n}}finally{this[Ou]()}}async readFile(e){try{this[Nu](this.readFile);let r=(typeof e=="string"?e:e?.encoding)??void 0;return await this[Ho].readFilePromise(this.fd,r)}finally{this[Ou]()}}readLines(e){return(0,see.createInterface)({input:this.createReadStream(e),crlfDelay:1/0})}async stat(e){try{return this[Nu](this.stat),await this[Ho].fstatPromise(this.fd,e)}finally{this[Ou]()}}async truncate(e){try{return this[Nu](this.truncate),await this[Ho].ftruncatePromise(this.fd,e)}finally{this[Ou]()}}utimes(e,r){throw new Error("Method not implemented.")}async writeFile(e,r){try{this[Nu](this.writeFile);let s=(typeof r=="string"?r:r?.encoding)??void 0;await this[Ho].writeFilePromise(this.fd,e,s)}finally{this[Ou]()}}async write(...e){try{if(this[Nu](this.write),ArrayBuffer.isView(e[0])){let[r,s,a,n]=e;return{bytesWritten:await this[Ho].writePromise(this.fd,r,s??void 0,a??void 0,n??void 0),buffer:r}}else{let[r,s,a]=e;return{bytesWritten:await this[Ho].writePromise(this.fd,r,s,a),buffer:r}}}finally{this[Ou]()}}async writev(e,r){try{this[Nu](this.writev);let s=0;if(typeof r<"u")for(let a of e){let n=await this.write(a,void 0,void 0,r);s+=n.bytesWritten,r+=n.bytesWritten}else for(let a of e){let n=await this.write(a);s+=n.bytesWritten}return{buffers:e,bytesWritten:s}}finally{this[Ou]()}}readv(e,r){throw new Error("Method not implemented.")}close(){if(this[Cp]===-1)return Promise.resolve();if(this[s0])return this[s0];if(this[aE]--,this[aE]===0){let e=this[Cp];this[Cp]=-1,this[s0]=this[Ho].closePromise(e).finally(()=>{this[s0]=void 0})}else this[s0]=new Promise((e,r)=>{this[Ex]=e,this[Ix]=r}).finally(()=>{this[s0]=void 0,this[Ix]=void 0,this[Ex]=void 0});return this[s0]}[(Ho,Cp,iee=aE,nee=s0,ree=Ex,tee=Ix,Nu)](e){if(this[Cp]===-1){let r=new Error("file closed");throw r.code="EBADF",r.syscall=e.name,r}this[aE]++}[Ou](){if(this[aE]--,this[aE]===0){let e=this[Cp];this[Cp]=-1,this[Ho].closePromise(e).then(this[Ex],this[Ix])}}}});function j2(t,e){e=new yx(e);let r=(s,a,n)=>{let c=s[a];s[a]=n,typeof c?.[lE.promisify.custom]<"u"&&(n[lE.promisify.custom]=c[lE.promisify.custom])};{r(t,"exists",(s,...a)=>{let c=typeof a[a.length-1]=="function"?a.pop():()=>{};process.nextTick(()=>{e.existsPromise(s).then(f=>{c(f)},()=>{c(!1)})})}),r(t,"read",(...s)=>{let[a,n,c,f,p,h]=s;if(s.length<=3){let E={};s.length<3?h=s[1]:(E=s[1],h=s[2]),{buffer:n=Buffer.alloc(16384),offset:c=0,length:f=n.byteLength,position:p}=E}if(c==null&&(c=0),f|=0,f===0){process.nextTick(()=>{h(null,0,n)});return}p==null&&(p=-1),process.nextTick(()=>{e.readPromise(a,n,c,f,p).then(E=>{h(null,E,n)},E=>{h(E,0,n)})})});for(let s of aee){let a=s.replace(/Promise$/,"");if(typeof t[a]>"u")continue;let n=e[s];if(typeof n>"u")continue;r(t,a,(...f)=>{let h=typeof f[f.length-1]=="function"?f.pop():()=>{};process.nextTick(()=>{n.apply(e,f).then(E=>{h(null,E)},E=>{h(E)})})})}t.realpath.native=t.realpath}{r(t,"existsSync",s=>{try{return e.existsSync(s)}catch{return!1}}),r(t,"readSync",(...s)=>{let[a,n,c,f,p]=s;return s.length<=3&&({offset:c=0,length:f=n.byteLength,position:p}=s[2]||{}),c==null&&(c=0),f|=0,f===0?0:(p==null&&(p=-1),e.readSync(a,n,c,f,p))});for(let s of G7e){let a=s;if(typeof t[a]>"u")continue;let n=e[s];typeof n>"u"||r(t,a,n.bind(e))}t.realpathSync.native=t.realpathSync}{let s=t.promises;for(let a of aee){let n=a.replace(/Promise$/,"");if(typeof s[n]>"u")continue;let c=e[a];typeof c>"u"||a!=="open"&&r(s,n,(f,...p)=>f instanceof H2?f[n].apply(f,p):c.call(e,f,...p))}r(s,"open",async(...a)=>{let n=await e.openPromise(...a);return new H2(n,e)})}t.read[lE.promisify.custom]=async(s,a,...n)=>({bytesRead:await e.readPromise(s,a,...n),buffer:a}),t.write[lE.promisify.custom]=async(s,a,...n)=>({bytesWritten:await e.writePromise(s,a,...n),buffer:a})}function Cx(t,e){let r=Object.create(t);return j2(r,e),r}var lE,G7e,aee,lee=It(()=>{lE=ye("util");eee();oee();G7e=new Set(["accessSync","appendFileSync","createReadStream","createWriteStream","chmodSync","fchmodSync","chownSync","fchownSync","closeSync","copyFileSync","linkSync","lstatSync","fstatSync","lutimesSync","mkdirSync","openSync","opendirSync","readlinkSync","readFileSync","readdirSync","readlinkSync","realpathSync","renameSync","rmdirSync","rmSync","statSync","symlinkSync","truncateSync","ftruncateSync","unlinkSync","unwatchFile","utimesSync","watch","watchFile","writeFileSync","writeSync"]),aee=new Set(["accessPromise","appendFilePromise","fchmodPromise","chmodPromise","fchownPromise","chownPromise","closePromise","copyFilePromise","linkPromise","fstatPromise","lstatPromise","lutimesPromise","mkdirPromise","openPromise","opendirPromise","readdirPromise","realpathPromise","readFilePromise","readdirPromise","readlinkPromise","renamePromise","rmdirPromise","rmPromise","statPromise","symlinkPromise","truncatePromise","ftruncatePromise","unlinkPromise","utimesPromise","writeFilePromise","writeSync"])});function cee(t){let e=Math.ceil(Math.random()*4294967296).toString(16).padStart(8,"0");return`${t}${e}`}function uee(){if(__)return __;let t=ue.toPortablePath(fee.default.tmpdir()),e=le.realpathSync(t);return process.once("exit",()=>{le.rmtempSync()}),__={tmpdir:t,realTmpdir:e}}var fee,Lu,__,le,Aee=It(()=>{fee=et(ye("os"));wd();tl();Lu=new Set,__=null;le=Object.assign(new Yn,{detachTemp(t){Lu.delete(t)},mktempSync(t){let{tmpdir:e,realTmpdir:r}=uee();for(;;){let s=cee("xfs-");try{this.mkdirSync(K.join(e,s))}catch(n){if(n.code==="EEXIST")continue;throw n}let a=K.join(r,s);if(Lu.add(a),typeof t>"u")return a;try{return t(a)}finally{if(Lu.has(a)){Lu.delete(a);try{this.removeSync(a)}catch{}}}}},async mktempPromise(t){let{tmpdir:e,realTmpdir:r}=uee();for(;;){let s=cee("xfs-");try{await this.mkdirPromise(K.join(e,s))}catch(n){if(n.code==="EEXIST")continue;throw n}let a=K.join(r,s);if(Lu.add(a),typeof t>"u")return a;try{return await t(a)}finally{if(Lu.has(a)){Lu.delete(a);try{await this.removePromise(a)}catch{}}}}},async rmtempPromise(){await Promise.all(Array.from(Lu.values()).map(async t=>{try{await le.removePromise(t,{maxRetries:0}),Lu.delete(t)}catch{}}))},rmtempSync(){for(let t of Lu)try{le.removeSync(t),Lu.delete(t)}catch{}}})});var q2={};Vt(q2,{AliasFS:()=>Hf,BasePortableFakeFS:()=>Uf,CustomDir:()=>U2,CwdFS:()=>Sn,FakeFS:()=>Ep,Filename:()=>Er,JailFS:()=>jf,LazyFS:()=>oE,MountFS:()=>n0,NoFS:()=>mx,NodeFS:()=>Yn,PortablePath:()=>vt,PosixFS:()=>i0,ProxiedFS:()=>Hs,VirtualFS:()=>fo,constants:()=>ui,errors:()=>or,extendFs:()=>Cx,normalizeLineEndings:()=>Id,npath:()=>ue,opendir:()=>hx,patchFs:()=>j2,ppath:()=>K,setupCopyIndex:()=>px,statUtils:()=>el,unwatchAllFiles:()=>Ed,unwatchFile:()=>yd,watchFile:()=>sE,xfs:()=>le});var bt=It(()=>{x$();ux();T_();N_();N$();O_();Cd();tl();tl();H$();Cd();G$();Y$();V$();K$();J$();wd();z$();Ip();Z$();lee();Aee()});var mee=L((A5t,dee)=>{dee.exports=gee;gee.sync=Y7e;var pee=ye("fs");function W7e(t,e){var r=e.pathExt!==void 0?e.pathExt:process.env.PATHEXT;if(!r||(r=r.split(";"),r.indexOf("")!==-1))return!0;for(var s=0;s{Cee.exports=Eee;Eee.sync=V7e;var yee=ye("fs");function Eee(t,e,r){yee.stat(t,function(s,a){r(s,s?!1:Iee(a,e))})}function V7e(t,e){return Iee(yee.statSync(t),e)}function Iee(t,e){return t.isFile()&&K7e(t,e)}function K7e(t,e){var r=t.mode,s=t.uid,a=t.gid,n=e.uid!==void 0?e.uid:process.getuid&&process.getuid(),c=e.gid!==void 0?e.gid:process.getgid&&process.getgid(),f=parseInt("100",8),p=parseInt("010",8),h=parseInt("001",8),E=f|p,C=r&h||r&p&&a===c||r&f&&s===n||r&E&&n===0;return C}});var vee=L((g5t,Bee)=>{var h5t=ye("fs"),wx;process.platform==="win32"||global.TESTING_WINDOWS?wx=mee():wx=wee();Bee.exports=U_;U_.sync=J7e;function U_(t,e,r){if(typeof e=="function"&&(r=e,e={}),!r){if(typeof Promise!="function")throw new TypeError("callback not provided");return new Promise(function(s,a){U_(t,e||{},function(n,c){n?a(n):s(c)})})}wx(t,e||{},function(s,a){s&&(s.code==="EACCES"||e&&e.ignoreErrors)&&(s=null,a=!1),r(s,a)})}function J7e(t,e){try{return wx.sync(t,e||{})}catch(r){if(e&&e.ignoreErrors||r.code==="EACCES")return!1;throw r}}});var Qee=L((d5t,kee)=>{var cE=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",See=ye("path"),z7e=cE?";":":",Dee=vee(),bee=t=>Object.assign(new Error(`not found: ${t}`),{code:"ENOENT"}),Pee=(t,e)=>{let r=e.colon||z7e,s=t.match(/\//)||cE&&t.match(/\\/)?[""]:[...cE?[process.cwd()]:[],...(e.path||process.env.PATH||"").split(r)],a=cE?e.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",n=cE?a.split(r):[""];return cE&&t.indexOf(".")!==-1&&n[0]!==""&&n.unshift(""),{pathEnv:s,pathExt:n,pathExtExe:a}},xee=(t,e,r)=>{typeof e=="function"&&(r=e,e={}),e||(e={});let{pathEnv:s,pathExt:a,pathExtExe:n}=Pee(t,e),c=[],f=h=>new Promise((E,C)=>{if(h===s.length)return e.all&&c.length?E(c):C(bee(t));let S=s[h],P=/^".*"$/.test(S)?S.slice(1,-1):S,I=See.join(P,t),R=!P&&/^\.[\\\/]/.test(t)?t.slice(0,2)+I:I;E(p(R,h,0))}),p=(h,E,C)=>new Promise((S,P)=>{if(C===a.length)return S(f(E+1));let I=a[C];Dee(h+I,{pathExt:n},(R,N)=>{if(!R&&N)if(e.all)c.push(h+I);else return S(h+I);return S(p(h,E,C+1))})});return r?f(0).then(h=>r(null,h),r):f(0)},Z7e=(t,e)=>{e=e||{};let{pathEnv:r,pathExt:s,pathExtExe:a}=Pee(t,e),n=[];for(let c=0;c{"use strict";var Tee=(t={})=>{let e=t.env||process.env;return(t.platform||process.platform)!=="win32"?"PATH":Object.keys(e).reverse().find(s=>s.toUpperCase()==="PATH")||"Path"};H_.exports=Tee;H_.exports.default=Tee});var Lee=L((y5t,Oee)=>{"use strict";var Fee=ye("path"),X7e=Qee(),$7e=Ree();function Nee(t,e){let r=t.options.env||process.env,s=process.cwd(),a=t.options.cwd!=null,n=a&&process.chdir!==void 0&&!process.chdir.disabled;if(n)try{process.chdir(t.options.cwd)}catch{}let c;try{c=X7e.sync(t.command,{path:r[$7e({env:r})],pathExt:e?Fee.delimiter:void 0})}catch{}finally{n&&process.chdir(s)}return c&&(c=Fee.resolve(a?t.options.cwd:"",c)),c}function eKe(t){return Nee(t)||Nee(t,!0)}Oee.exports=eKe});var Mee=L((E5t,q_)=>{"use strict";var j_=/([()\][%!^"`<>&|;, *?])/g;function tKe(t){return t=t.replace(j_,"^$1"),t}function rKe(t,e){return t=`${t}`,t=t.replace(/(?=(\\+?)?)\1"/g,'$1$1\\"'),t=t.replace(/(?=(\\+?)?)\1$/,"$1$1"),t=`"${t}"`,t=t.replace(j_,"^$1"),e&&(t=t.replace(j_,"^$1")),t}q_.exports.command=tKe;q_.exports.argument=rKe});var Uee=L((I5t,_ee)=>{"use strict";_ee.exports=/^#!(.*)/});var jee=L((C5t,Hee)=>{"use strict";var nKe=Uee();Hee.exports=(t="")=>{let e=t.match(nKe);if(!e)return null;let[r,s]=e[0].replace(/#! ?/,"").split(" "),a=r.split("/").pop();return a==="env"?s:s?`${a} ${s}`:a}});var Gee=L((w5t,qee)=>{"use strict";var G_=ye("fs"),iKe=jee();function sKe(t){let r=Buffer.alloc(150),s;try{s=G_.openSync(t,"r"),G_.readSync(s,r,0,150,0),G_.closeSync(s)}catch{}return iKe(r.toString())}qee.exports=sKe});var Kee=L((B5t,Vee)=>{"use strict";var oKe=ye("path"),Wee=Lee(),Yee=Mee(),aKe=Gee(),lKe=process.platform==="win32",cKe=/\.(?:com|exe)$/i,uKe=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function fKe(t){t.file=Wee(t);let e=t.file&&aKe(t.file);return e?(t.args.unshift(t.file),t.command=e,Wee(t)):t.file}function AKe(t){if(!lKe)return t;let e=fKe(t),r=!cKe.test(e);if(t.options.forceShell||r){let s=uKe.test(e);t.command=oKe.normalize(t.command),t.command=Yee.command(t.command),t.args=t.args.map(n=>Yee.argument(n,s));let a=[t.command].concat(t.args).join(" ");t.args=["/d","/s","/c",`"${a}"`],t.command=process.env.comspec||"cmd.exe",t.options.windowsVerbatimArguments=!0}return t}function pKe(t,e,r){e&&!Array.isArray(e)&&(r=e,e=null),e=e?e.slice(0):[],r=Object.assign({},r);let s={command:t,args:e,options:r,file:void 0,original:{command:t,args:e}};return r.shell?s:AKe(s)}Vee.exports=pKe});var Zee=L((v5t,zee)=>{"use strict";var W_=process.platform==="win32";function Y_(t,e){return Object.assign(new Error(`${e} ${t.command} ENOENT`),{code:"ENOENT",errno:"ENOENT",syscall:`${e} ${t.command}`,path:t.command,spawnargs:t.args})}function hKe(t,e){if(!W_)return;let r=t.emit;t.emit=function(s,a){if(s==="exit"){let n=Jee(a,e);if(n)return r.call(t,"error",n)}return r.apply(t,arguments)}}function Jee(t,e){return W_&&t===1&&!e.file?Y_(e.original,"spawn"):null}function gKe(t,e){return W_&&t===1&&!e.file?Y_(e.original,"spawnSync"):null}zee.exports={hookChildProcess:hKe,verifyENOENT:Jee,verifyENOENTSync:gKe,notFoundError:Y_}});var J_=L((S5t,uE)=>{"use strict";var Xee=ye("child_process"),V_=Kee(),K_=Zee();function $ee(t,e,r){let s=V_(t,e,r),a=Xee.spawn(s.command,s.args,s.options);return K_.hookChildProcess(a,s),a}function dKe(t,e,r){let s=V_(t,e,r),a=Xee.spawnSync(s.command,s.args,s.options);return a.error=a.error||K_.verifyENOENTSync(a.status,s),a}uE.exports=$ee;uE.exports.spawn=$ee;uE.exports.sync=dKe;uE.exports._parse=V_;uE.exports._enoent=K_});var tte=L((D5t,ete)=>{"use strict";function mKe(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function vd(t,e,r,s){this.message=t,this.expected=e,this.found=r,this.location=s,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,vd)}mKe(vd,Error);vd.buildMessage=function(t,e){var r={literal:function(h){return'"'+a(h.text)+'"'},class:function(h){var E="",C;for(C=0;C0){for(C=1,S=1;C>",b=ur(">>",!1),y=">&",F=ur(">&",!1),z=">",Z=ur(">",!1),$="<<<",oe=ur("<<<",!1),xe="<&",Te=ur("<&",!1),lt="<",Et=ur("<",!1),qt=function(O){return{type:"argument",segments:[].concat(...O)}},ir=function(O){return O},Pt="$'",gn=ur("$'",!1),Pr="'",Ir=ur("'",!1),Nr=function(O){return[{type:"text",text:O}]},nn='""',oi=ur('""',!1),wo=function(){return{type:"text",text:""}},rs='"',eo=ur('"',!1),Bo=function(O){return O},Hi=function(O){return{type:"arithmetic",arithmetic:O,quoted:!0}},to=function(O){return{type:"shell",shell:O,quoted:!0}},vo=function(O){return{type:"variable",...O,quoted:!0}},RA=function(O){return{type:"text",text:O}},pf=function(O){return{type:"arithmetic",arithmetic:O,quoted:!1}},Eh=function(O){return{type:"shell",shell:O,quoted:!1}},Ih=function(O){return{type:"variable",...O,quoted:!1}},ro=function(O){return{type:"glob",pattern:O}},jn=/^[^']/,Rs=zi(["'"],!0,!1),no=function(O){return O.join("")},lu=/^[^$"]/,cu=zi(["$",'"'],!0,!1),uu=`\\ +`,FA=ur(`\\ +`,!1),NA=function(){return""},aa="\\",la=ur("\\",!1),OA=/^[\\$"`]/,gr=zi(["\\","$",'"',"`"],!1,!1),So=function(O){return O},Me="\\a",fu=ur("\\a",!1),Cr=function(){return"a"},hf="\\b",LA=ur("\\b",!1),MA=function(){return"\b"},Au=/^[Ee]/,pu=zi(["E","e"],!1,!1),ac=function(){return"\x1B"},ve="\\f",Nt=ur("\\f",!1),lc=function(){return"\f"},Ni="\\n",io=ur("\\n",!1),Rt=function(){return` +`},xn="\\r",ca=ur("\\r",!1),ji=function(){return"\r"},Oi="\\t",Oa=ur("\\t",!1),dn=function(){return" "},Jn="\\v",hu=ur("\\v",!1),Ch=function(){return"\v"},La=/^[\\'"?]/,Ma=zi(["\\","'",'"',"?"],!1,!1),Ua=function(O){return String.fromCharCode(parseInt(O,16))},Xe="\\x",Ha=ur("\\x",!1),gf="\\u",cc=ur("\\u",!1),wn="\\U",ua=ur("\\U",!1),_A=function(O){return String.fromCodePoint(parseInt(O,16))},UA=/^[0-7]/,fa=zi([["0","7"]],!1,!1),vl=/^[0-9a-fA-f]/,Mt=zi([["0","9"],["a","f"],["A","f"]],!1,!1),kn=Ef(),Aa="{}",ja=ur("{}",!1),ns=function(){return"{}"},uc="-",gu=ur("-",!1),fc="+",qa=ur("+",!1),Li=".",Cs=ur(".",!1),Sl=function(O,J,re){return{type:"number",value:(O==="-"?-1:1)*parseFloat(J.join("")+"."+re.join(""))}},df=function(O,J){return{type:"number",value:(O==="-"?-1:1)*parseInt(J.join(""))}},Ac=function(O){return{type:"variable",...O}},wi=function(O){return{type:"variable",name:O}},Qn=function(O){return O},pc="*",Je=ur("*",!1),st="/",St=ur("/",!1),lr=function(O,J,re){return{type:J==="*"?"multiplication":"division",right:re}},ee=function(O,J){return J.reduce((re,de)=>({left:re,...de}),O)},Ie=function(O,J,re){return{type:J==="+"?"addition":"subtraction",right:re}},Oe="$((",ht=ur("$((",!1),mt="))",Dt=ur("))",!1),tr=function(O){return O},fn="$(",ai=ur("$(",!1),qi=function(O){return O},Tn="${",Ga=ur("${",!1),my=":-",t2=ur(":-",!1),Do=function(O,J){return{name:O,defaultValue:J}},yy=":-}",wh=ur(":-}",!1),r2=function(O){return{name:O,defaultValue:[]}},bo=":+",Bh=ur(":+",!1),vh=function(O,J){return{name:O,alternativeValue:J}},du=":+}",Sh=ur(":+}",!1),Ng=function(O){return{name:O,alternativeValue:[]}},Og=function(O){return{name:O}},Lg="$",Ey=ur("$",!1),mf=function(O){return e.isGlobPattern(O)},Po=function(O){return O},Dl=/^[a-zA-Z0-9_]/,Dh=zi([["a","z"],["A","Z"],["0","9"],"_"],!1,!1),Mg=function(){return By()},bl=/^[$@*?#a-zA-Z0-9_\-]/,Pl=zi(["$","@","*","?","#",["a","z"],["A","Z"],["0","9"],"_","-"],!1,!1),Iy=/^[()}<>$|&; \t"']/,HA=zi(["(",")","}","<",">","$","|","&",";"," "," ",'"',"'"],!1,!1),Cy=/^[<>&; \t"']/,wy=zi(["<",">","&",";"," "," ",'"',"'"],!1,!1),jA=/^[ \t]/,qA=zi([" "," "],!1,!1),Y=0,xt=0,GA=[{line:1,column:1}],xo=0,yf=[],dt=0,mu;if("startRule"in e){if(!(e.startRule in s))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');a=s[e.startRule]}function By(){return t.substring(xt,Y)}function _g(){return If(xt,Y)}function n2(O,J){throw J=J!==void 0?J:If(xt,Y),WA([Ug(O)],t.substring(xt,Y),J)}function bh(O,J){throw J=J!==void 0?J:If(xt,Y),gi(O,J)}function ur(O,J){return{type:"literal",text:O,ignoreCase:J}}function zi(O,J,re){return{type:"class",parts:O,inverted:J,ignoreCase:re}}function Ef(){return{type:"any"}}function Wa(){return{type:"end"}}function Ug(O){return{type:"other",description:O}}function yu(O){var J=GA[O],re;if(J)return J;for(re=O-1;!GA[re];)re--;for(J=GA[re],J={line:J.line,column:J.column};rexo&&(xo=Y,yf=[]),yf.push(O))}function gi(O,J){return new vd(O,null,null,J)}function WA(O,J,re){return new vd(vd.buildMessage(O,J),O,J,re)}function Ya(){var O,J,re;for(O=Y,J=[],re=kt();re!==r;)J.push(re),re=kt();return J!==r?(re=pa(),re===r&&(re=null),re!==r?(xt=O,J=n(re),O=J):(Y=O,O=r)):(Y=O,O=r),O}function pa(){var O,J,re,de,Ke;if(O=Y,J=Ph(),J!==r){for(re=[],de=kt();de!==r;)re.push(de),de=kt();re!==r?(de=Hg(),de!==r?(Ke=Va(),Ke===r&&(Ke=null),Ke!==r?(xt=O,J=c(J,de,Ke),O=J):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r)}else Y=O,O=r;if(O===r)if(O=Y,J=Ph(),J!==r){for(re=[],de=kt();de!==r;)re.push(de),de=kt();re!==r?(de=Hg(),de===r&&(de=null),de!==r?(xt=O,J=f(J,de),O=J):(Y=O,O=r)):(Y=O,O=r)}else Y=O,O=r;return O}function Va(){var O,J,re,de,Ke;for(O=Y,J=[],re=kt();re!==r;)J.push(re),re=kt();if(J!==r)if(re=pa(),re!==r){for(de=[],Ke=kt();Ke!==r;)de.push(Ke),Ke=kt();de!==r?(xt=O,J=p(re),O=J):(Y=O,O=r)}else Y=O,O=r;else Y=O,O=r;return O}function Hg(){var O;return t.charCodeAt(Y)===59?(O=h,Y++):(O=r,dt===0&&wt(E)),O===r&&(t.charCodeAt(Y)===38?(O=C,Y++):(O=r,dt===0&&wt(S))),O}function Ph(){var O,J,re;return O=Y,J=YA(),J!==r?(re=jg(),re===r&&(re=null),re!==r?(xt=O,J=P(J,re),O=J):(Y=O,O=r)):(Y=O,O=r),O}function jg(){var O,J,re,de,Ke,ft,dr;for(O=Y,J=[],re=kt();re!==r;)J.push(re),re=kt();if(J!==r)if(re=vy(),re!==r){for(de=[],Ke=kt();Ke!==r;)de.push(Ke),Ke=kt();if(de!==r)if(Ke=Ph(),Ke!==r){for(ft=[],dr=kt();dr!==r;)ft.push(dr),dr=kt();ft!==r?(xt=O,J=I(re,Ke),O=J):(Y=O,O=r)}else Y=O,O=r;else Y=O,O=r}else Y=O,O=r;else Y=O,O=r;return O}function vy(){var O;return t.substr(Y,2)===R?(O=R,Y+=2):(O=r,dt===0&&wt(N)),O===r&&(t.substr(Y,2)===U?(O=U,Y+=2):(O=r,dt===0&&wt(W))),O}function YA(){var O,J,re;return O=Y,J=Cf(),J!==r?(re=qg(),re===r&&(re=null),re!==r?(xt=O,J=te(J,re),O=J):(Y=O,O=r)):(Y=O,O=r),O}function qg(){var O,J,re,de,Ke,ft,dr;for(O=Y,J=[],re=kt();re!==r;)J.push(re),re=kt();if(J!==r)if(re=Eu(),re!==r){for(de=[],Ke=kt();Ke!==r;)de.push(Ke),Ke=kt();if(de!==r)if(Ke=YA(),Ke!==r){for(ft=[],dr=kt();dr!==r;)ft.push(dr),dr=kt();ft!==r?(xt=O,J=ie(re,Ke),O=J):(Y=O,O=r)}else Y=O,O=r;else Y=O,O=r}else Y=O,O=r;else Y=O,O=r;return O}function Eu(){var O;return t.substr(Y,2)===Ae?(O=Ae,Y+=2):(O=r,dt===0&&wt(ce)),O===r&&(t.charCodeAt(Y)===124?(O=me,Y++):(O=r,dt===0&&wt(pe))),O}function Iu(){var O,J,re,de,Ke,ft;if(O=Y,J=Qh(),J!==r)if(t.charCodeAt(Y)===61?(re=Be,Y++):(re=r,dt===0&&wt(Ce)),re!==r)if(de=VA(),de!==r){for(Ke=[],ft=kt();ft!==r;)Ke.push(ft),ft=kt();Ke!==r?(xt=O,J=g(J,de),O=J):(Y=O,O=r)}else Y=O,O=r;else Y=O,O=r;else Y=O,O=r;if(O===r)if(O=Y,J=Qh(),J!==r)if(t.charCodeAt(Y)===61?(re=Be,Y++):(re=r,dt===0&&wt(Ce)),re!==r){for(de=[],Ke=kt();Ke!==r;)de.push(Ke),Ke=kt();de!==r?(xt=O,J=we(J),O=J):(Y=O,O=r)}else Y=O,O=r;else Y=O,O=r;return O}function Cf(){var O,J,re,de,Ke,ft,dr,Br,_n,di,ws;for(O=Y,J=[],re=kt();re!==r;)J.push(re),re=kt();if(J!==r)if(t.charCodeAt(Y)===40?(re=Ee,Y++):(re=r,dt===0&&wt(fe)),re!==r){for(de=[],Ke=kt();Ke!==r;)de.push(Ke),Ke=kt();if(de!==r)if(Ke=pa(),Ke!==r){for(ft=[],dr=kt();dr!==r;)ft.push(dr),dr=kt();if(ft!==r)if(t.charCodeAt(Y)===41?(dr=se,Y++):(dr=r,dt===0&&wt(X)),dr!==r){for(Br=[],_n=kt();_n!==r;)Br.push(_n),_n=kt();if(Br!==r){for(_n=[],di=qn();di!==r;)_n.push(di),di=qn();if(_n!==r){for(di=[],ws=kt();ws!==r;)di.push(ws),ws=kt();di!==r?(xt=O,J=De(Ke,_n),O=J):(Y=O,O=r)}else Y=O,O=r}else Y=O,O=r}else Y=O,O=r;else Y=O,O=r}else Y=O,O=r;else Y=O,O=r}else Y=O,O=r;else Y=O,O=r;if(O===r){for(O=Y,J=[],re=kt();re!==r;)J.push(re),re=kt();if(J!==r)if(t.charCodeAt(Y)===123?(re=Re,Y++):(re=r,dt===0&&wt(gt)),re!==r){for(de=[],Ke=kt();Ke!==r;)de.push(Ke),Ke=kt();if(de!==r)if(Ke=pa(),Ke!==r){for(ft=[],dr=kt();dr!==r;)ft.push(dr),dr=kt();if(ft!==r)if(t.charCodeAt(Y)===125?(dr=j,Y++):(dr=r,dt===0&&wt(rt)),dr!==r){for(Br=[],_n=kt();_n!==r;)Br.push(_n),_n=kt();if(Br!==r){for(_n=[],di=qn();di!==r;)_n.push(di),di=qn();if(_n!==r){for(di=[],ws=kt();ws!==r;)di.push(ws),ws=kt();di!==r?(xt=O,J=Fe(Ke,_n),O=J):(Y=O,O=r)}else Y=O,O=r}else Y=O,O=r}else Y=O,O=r;else Y=O,O=r}else Y=O,O=r;else Y=O,O=r}else Y=O,O=r;else Y=O,O=r;if(O===r){for(O=Y,J=[],re=kt();re!==r;)J.push(re),re=kt();if(J!==r){for(re=[],de=Iu();de!==r;)re.push(de),de=Iu();if(re!==r){for(de=[],Ke=kt();Ke!==r;)de.push(Ke),Ke=kt();if(de!==r){if(Ke=[],ft=Cu(),ft!==r)for(;ft!==r;)Ke.push(ft),ft=Cu();else Ke=r;if(Ke!==r){for(ft=[],dr=kt();dr!==r;)ft.push(dr),dr=kt();ft!==r?(xt=O,J=Ne(re,Ke),O=J):(Y=O,O=r)}else Y=O,O=r}else Y=O,O=r}else Y=O,O=r}else Y=O,O=r;if(O===r){for(O=Y,J=[],re=kt();re!==r;)J.push(re),re=kt();if(J!==r){if(re=[],de=Iu(),de!==r)for(;de!==r;)re.push(de),de=Iu();else re=r;if(re!==r){for(de=[],Ke=kt();Ke!==r;)de.push(Ke),Ke=kt();de!==r?(xt=O,J=Pe(re),O=J):(Y=O,O=r)}else Y=O,O=r}else Y=O,O=r}}}return O}function Fs(){var O,J,re,de,Ke;for(O=Y,J=[],re=kt();re!==r;)J.push(re),re=kt();if(J!==r){if(re=[],de=xi(),de!==r)for(;de!==r;)re.push(de),de=xi();else re=r;if(re!==r){for(de=[],Ke=kt();Ke!==r;)de.push(Ke),Ke=kt();de!==r?(xt=O,J=Ye(re),O=J):(Y=O,O=r)}else Y=O,O=r}else Y=O,O=r;return O}function Cu(){var O,J,re;for(O=Y,J=[],re=kt();re!==r;)J.push(re),re=kt();if(J!==r?(re=qn(),re!==r?(xt=O,J=ke(re),O=J):(Y=O,O=r)):(Y=O,O=r),O===r){for(O=Y,J=[],re=kt();re!==r;)J.push(re),re=kt();J!==r?(re=xi(),re!==r?(xt=O,J=ke(re),O=J):(Y=O,O=r)):(Y=O,O=r)}return O}function qn(){var O,J,re,de,Ke;for(O=Y,J=[],re=kt();re!==r;)J.push(re),re=kt();return J!==r?(it.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,dt===0&&wt(_e)),re===r&&(re=null),re!==r?(de=is(),de!==r?(Ke=xi(),Ke!==r?(xt=O,J=x(re,de,Ke),O=J):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r),O}function is(){var O;return t.substr(Y,2)===w?(O=w,Y+=2):(O=r,dt===0&&wt(b)),O===r&&(t.substr(Y,2)===y?(O=y,Y+=2):(O=r,dt===0&&wt(F)),O===r&&(t.charCodeAt(Y)===62?(O=z,Y++):(O=r,dt===0&&wt(Z)),O===r&&(t.substr(Y,3)===$?(O=$,Y+=3):(O=r,dt===0&&wt(oe)),O===r&&(t.substr(Y,2)===xe?(O=xe,Y+=2):(O=r,dt===0&&wt(Te)),O===r&&(t.charCodeAt(Y)===60?(O=lt,Y++):(O=r,dt===0&&wt(Et))))))),O}function xi(){var O,J,re;for(O=Y,J=[],re=kt();re!==r;)J.push(re),re=kt();return J!==r?(re=VA(),re!==r?(xt=O,J=ke(re),O=J):(Y=O,O=r)):(Y=O,O=r),O}function VA(){var O,J,re;if(O=Y,J=[],re=wf(),re!==r)for(;re!==r;)J.push(re),re=wf();else J=r;return J!==r&&(xt=O,J=qt(J)),O=J,O}function wf(){var O,J;return O=Y,J=mn(),J!==r&&(xt=O,J=ir(J)),O=J,O===r&&(O=Y,J=Gg(),J!==r&&(xt=O,J=ir(J)),O=J,O===r&&(O=Y,J=Wg(),J!==r&&(xt=O,J=ir(J)),O=J,O===r&&(O=Y,J=ss(),J!==r&&(xt=O,J=ir(J)),O=J))),O}function mn(){var O,J,re,de;return O=Y,t.substr(Y,2)===Pt?(J=Pt,Y+=2):(J=r,dt===0&&wt(gn)),J!==r?(re=yn(),re!==r?(t.charCodeAt(Y)===39?(de=Pr,Y++):(de=r,dt===0&&wt(Ir)),de!==r?(xt=O,J=Nr(re),O=J):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r),O}function Gg(){var O,J,re,de;return O=Y,t.charCodeAt(Y)===39?(J=Pr,Y++):(J=r,dt===0&&wt(Ir)),J!==r?(re=Bf(),re!==r?(t.charCodeAt(Y)===39?(de=Pr,Y++):(de=r,dt===0&&wt(Ir)),de!==r?(xt=O,J=Nr(re),O=J):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r),O}function Wg(){var O,J,re,de;if(O=Y,t.substr(Y,2)===nn?(J=nn,Y+=2):(J=r,dt===0&&wt(oi)),J!==r&&(xt=O,J=wo()),O=J,O===r)if(O=Y,t.charCodeAt(Y)===34?(J=rs,Y++):(J=r,dt===0&&wt(eo)),J!==r){for(re=[],de=xl();de!==r;)re.push(de),de=xl();re!==r?(t.charCodeAt(Y)===34?(de=rs,Y++):(de=r,dt===0&&wt(eo)),de!==r?(xt=O,J=Bo(re),O=J):(Y=O,O=r)):(Y=O,O=r)}else Y=O,O=r;return O}function ss(){var O,J,re;if(O=Y,J=[],re=ko(),re!==r)for(;re!==r;)J.push(re),re=ko();else J=r;return J!==r&&(xt=O,J=Bo(J)),O=J,O}function xl(){var O,J;return O=Y,J=Xr(),J!==r&&(xt=O,J=Hi(J)),O=J,O===r&&(O=Y,J=kh(),J!==r&&(xt=O,J=to(J)),O=J,O===r&&(O=Y,J=JA(),J!==r&&(xt=O,J=vo(J)),O=J,O===r&&(O=Y,J=vf(),J!==r&&(xt=O,J=RA(J)),O=J))),O}function ko(){var O,J;return O=Y,J=Xr(),J!==r&&(xt=O,J=pf(J)),O=J,O===r&&(O=Y,J=kh(),J!==r&&(xt=O,J=Eh(J)),O=J,O===r&&(O=Y,J=JA(),J!==r&&(xt=O,J=Ih(J)),O=J,O===r&&(O=Y,J=Sy(),J!==r&&(xt=O,J=ro(J)),O=J,O===r&&(O=Y,J=xh(),J!==r&&(xt=O,J=RA(J)),O=J)))),O}function Bf(){var O,J,re;for(O=Y,J=[],jn.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,dt===0&&wt(Rs));re!==r;)J.push(re),jn.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,dt===0&&wt(Rs));return J!==r&&(xt=O,J=no(J)),O=J,O}function vf(){var O,J,re;if(O=Y,J=[],re=kl(),re===r&&(lu.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,dt===0&&wt(cu))),re!==r)for(;re!==r;)J.push(re),re=kl(),re===r&&(lu.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,dt===0&&wt(cu)));else J=r;return J!==r&&(xt=O,J=no(J)),O=J,O}function kl(){var O,J,re;return O=Y,t.substr(Y,2)===uu?(J=uu,Y+=2):(J=r,dt===0&&wt(FA)),J!==r&&(xt=O,J=NA()),O=J,O===r&&(O=Y,t.charCodeAt(Y)===92?(J=aa,Y++):(J=r,dt===0&&wt(la)),J!==r?(OA.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,dt===0&&wt(gr)),re!==r?(xt=O,J=So(re),O=J):(Y=O,O=r)):(Y=O,O=r)),O}function yn(){var O,J,re;for(O=Y,J=[],re=Qo(),re===r&&(jn.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,dt===0&&wt(Rs)));re!==r;)J.push(re),re=Qo(),re===r&&(jn.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,dt===0&&wt(Rs)));return J!==r&&(xt=O,J=no(J)),O=J,O}function Qo(){var O,J,re;return O=Y,t.substr(Y,2)===Me?(J=Me,Y+=2):(J=r,dt===0&&wt(fu)),J!==r&&(xt=O,J=Cr()),O=J,O===r&&(O=Y,t.substr(Y,2)===hf?(J=hf,Y+=2):(J=r,dt===0&&wt(LA)),J!==r&&(xt=O,J=MA()),O=J,O===r&&(O=Y,t.charCodeAt(Y)===92?(J=aa,Y++):(J=r,dt===0&&wt(la)),J!==r?(Au.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,dt===0&&wt(pu)),re!==r?(xt=O,J=ac(),O=J):(Y=O,O=r)):(Y=O,O=r),O===r&&(O=Y,t.substr(Y,2)===ve?(J=ve,Y+=2):(J=r,dt===0&&wt(Nt)),J!==r&&(xt=O,J=lc()),O=J,O===r&&(O=Y,t.substr(Y,2)===Ni?(J=Ni,Y+=2):(J=r,dt===0&&wt(io)),J!==r&&(xt=O,J=Rt()),O=J,O===r&&(O=Y,t.substr(Y,2)===xn?(J=xn,Y+=2):(J=r,dt===0&&wt(ca)),J!==r&&(xt=O,J=ji()),O=J,O===r&&(O=Y,t.substr(Y,2)===Oi?(J=Oi,Y+=2):(J=r,dt===0&&wt(Oa)),J!==r&&(xt=O,J=dn()),O=J,O===r&&(O=Y,t.substr(Y,2)===Jn?(J=Jn,Y+=2):(J=r,dt===0&&wt(hu)),J!==r&&(xt=O,J=Ch()),O=J,O===r&&(O=Y,t.charCodeAt(Y)===92?(J=aa,Y++):(J=r,dt===0&&wt(la)),J!==r?(La.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,dt===0&&wt(Ma)),re!==r?(xt=O,J=So(re),O=J):(Y=O,O=r)):(Y=O,O=r),O===r&&(O=wu()))))))))),O}function wu(){var O,J,re,de,Ke,ft,dr,Br,_n,di,ws,zA;return O=Y,t.charCodeAt(Y)===92?(J=aa,Y++):(J=r,dt===0&&wt(la)),J!==r?(re=ha(),re!==r?(xt=O,J=Ua(re),O=J):(Y=O,O=r)):(Y=O,O=r),O===r&&(O=Y,t.substr(Y,2)===Xe?(J=Xe,Y+=2):(J=r,dt===0&&wt(Ha)),J!==r?(re=Y,de=Y,Ke=ha(),Ke!==r?(ft=Ns(),ft!==r?(Ke=[Ke,ft],de=Ke):(Y=de,de=r)):(Y=de,de=r),de===r&&(de=ha()),de!==r?re=t.substring(re,Y):re=de,re!==r?(xt=O,J=Ua(re),O=J):(Y=O,O=r)):(Y=O,O=r),O===r&&(O=Y,t.substr(Y,2)===gf?(J=gf,Y+=2):(J=r,dt===0&&wt(cc)),J!==r?(re=Y,de=Y,Ke=Ns(),Ke!==r?(ft=Ns(),ft!==r?(dr=Ns(),dr!==r?(Br=Ns(),Br!==r?(Ke=[Ke,ft,dr,Br],de=Ke):(Y=de,de=r)):(Y=de,de=r)):(Y=de,de=r)):(Y=de,de=r),de!==r?re=t.substring(re,Y):re=de,re!==r?(xt=O,J=Ua(re),O=J):(Y=O,O=r)):(Y=O,O=r),O===r&&(O=Y,t.substr(Y,2)===wn?(J=wn,Y+=2):(J=r,dt===0&&wt(ua)),J!==r?(re=Y,de=Y,Ke=Ns(),Ke!==r?(ft=Ns(),ft!==r?(dr=Ns(),dr!==r?(Br=Ns(),Br!==r?(_n=Ns(),_n!==r?(di=Ns(),di!==r?(ws=Ns(),ws!==r?(zA=Ns(),zA!==r?(Ke=[Ke,ft,dr,Br,_n,di,ws,zA],de=Ke):(Y=de,de=r)):(Y=de,de=r)):(Y=de,de=r)):(Y=de,de=r)):(Y=de,de=r)):(Y=de,de=r)):(Y=de,de=r)):(Y=de,de=r),de!==r?re=t.substring(re,Y):re=de,re!==r?(xt=O,J=_A(re),O=J):(Y=O,O=r)):(Y=O,O=r)))),O}function ha(){var O;return UA.test(t.charAt(Y))?(O=t.charAt(Y),Y++):(O=r,dt===0&&wt(fa)),O}function Ns(){var O;return vl.test(t.charAt(Y))?(O=t.charAt(Y),Y++):(O=r,dt===0&&wt(Mt)),O}function xh(){var O,J,re,de,Ke;if(O=Y,J=[],re=Y,t.charCodeAt(Y)===92?(de=aa,Y++):(de=r,dt===0&&wt(la)),de!==r?(t.length>Y?(Ke=t.charAt(Y),Y++):(Ke=r,dt===0&&wt(kn)),Ke!==r?(xt=re,de=So(Ke),re=de):(Y=re,re=r)):(Y=re,re=r),re===r&&(re=Y,t.substr(Y,2)===Aa?(de=Aa,Y+=2):(de=r,dt===0&&wt(ja)),de!==r&&(xt=re,de=ns()),re=de,re===r&&(re=Y,de=Y,dt++,Ke=Dy(),dt--,Ke===r?de=void 0:(Y=de,de=r),de!==r?(t.length>Y?(Ke=t.charAt(Y),Y++):(Ke=r,dt===0&&wt(kn)),Ke!==r?(xt=re,de=So(Ke),re=de):(Y=re,re=r)):(Y=re,re=r))),re!==r)for(;re!==r;)J.push(re),re=Y,t.charCodeAt(Y)===92?(de=aa,Y++):(de=r,dt===0&&wt(la)),de!==r?(t.length>Y?(Ke=t.charAt(Y),Y++):(Ke=r,dt===0&&wt(kn)),Ke!==r?(xt=re,de=So(Ke),re=de):(Y=re,re=r)):(Y=re,re=r),re===r&&(re=Y,t.substr(Y,2)===Aa?(de=Aa,Y+=2):(de=r,dt===0&&wt(ja)),de!==r&&(xt=re,de=ns()),re=de,re===r&&(re=Y,de=Y,dt++,Ke=Dy(),dt--,Ke===r?de=void 0:(Y=de,de=r),de!==r?(t.length>Y?(Ke=t.charAt(Y),Y++):(Ke=r,dt===0&&wt(kn)),Ke!==r?(xt=re,de=So(Ke),re=de):(Y=re,re=r)):(Y=re,re=r)));else J=r;return J!==r&&(xt=O,J=no(J)),O=J,O}function KA(){var O,J,re,de,Ke,ft;if(O=Y,t.charCodeAt(Y)===45?(J=uc,Y++):(J=r,dt===0&&wt(gu)),J===r&&(t.charCodeAt(Y)===43?(J=fc,Y++):(J=r,dt===0&&wt(qa))),J===r&&(J=null),J!==r){if(re=[],it.test(t.charAt(Y))?(de=t.charAt(Y),Y++):(de=r,dt===0&&wt(_e)),de!==r)for(;de!==r;)re.push(de),it.test(t.charAt(Y))?(de=t.charAt(Y),Y++):(de=r,dt===0&&wt(_e));else re=r;if(re!==r)if(t.charCodeAt(Y)===46?(de=Li,Y++):(de=r,dt===0&&wt(Cs)),de!==r){if(Ke=[],it.test(t.charAt(Y))?(ft=t.charAt(Y),Y++):(ft=r,dt===0&&wt(_e)),ft!==r)for(;ft!==r;)Ke.push(ft),it.test(t.charAt(Y))?(ft=t.charAt(Y),Y++):(ft=r,dt===0&&wt(_e));else Ke=r;Ke!==r?(xt=O,J=Sl(J,re,Ke),O=J):(Y=O,O=r)}else Y=O,O=r;else Y=O,O=r}else Y=O,O=r;if(O===r){if(O=Y,t.charCodeAt(Y)===45?(J=uc,Y++):(J=r,dt===0&&wt(gu)),J===r&&(t.charCodeAt(Y)===43?(J=fc,Y++):(J=r,dt===0&&wt(qa))),J===r&&(J=null),J!==r){if(re=[],it.test(t.charAt(Y))?(de=t.charAt(Y),Y++):(de=r,dt===0&&wt(_e)),de!==r)for(;de!==r;)re.push(de),it.test(t.charAt(Y))?(de=t.charAt(Y),Y++):(de=r,dt===0&&wt(_e));else re=r;re!==r?(xt=O,J=df(J,re),O=J):(Y=O,O=r)}else Y=O,O=r;if(O===r&&(O=Y,J=JA(),J!==r&&(xt=O,J=Ac(J)),O=J,O===r&&(O=Y,J=hc(),J!==r&&(xt=O,J=wi(J)),O=J,O===r)))if(O=Y,t.charCodeAt(Y)===40?(J=Ee,Y++):(J=r,dt===0&&wt(fe)),J!==r){for(re=[],de=kt();de!==r;)re.push(de),de=kt();if(re!==r)if(de=so(),de!==r){for(Ke=[],ft=kt();ft!==r;)Ke.push(ft),ft=kt();Ke!==r?(t.charCodeAt(Y)===41?(ft=se,Y++):(ft=r,dt===0&&wt(X)),ft!==r?(xt=O,J=Qn(de),O=J):(Y=O,O=r)):(Y=O,O=r)}else Y=O,O=r;else Y=O,O=r}else Y=O,O=r}return O}function Sf(){var O,J,re,de,Ke,ft,dr,Br;if(O=Y,J=KA(),J!==r){for(re=[],de=Y,Ke=[],ft=kt();ft!==r;)Ke.push(ft),ft=kt();if(Ke!==r)if(t.charCodeAt(Y)===42?(ft=pc,Y++):(ft=r,dt===0&&wt(Je)),ft===r&&(t.charCodeAt(Y)===47?(ft=st,Y++):(ft=r,dt===0&&wt(St))),ft!==r){for(dr=[],Br=kt();Br!==r;)dr.push(Br),Br=kt();dr!==r?(Br=KA(),Br!==r?(xt=de,Ke=lr(J,ft,Br),de=Ke):(Y=de,de=r)):(Y=de,de=r)}else Y=de,de=r;else Y=de,de=r;for(;de!==r;){for(re.push(de),de=Y,Ke=[],ft=kt();ft!==r;)Ke.push(ft),ft=kt();if(Ke!==r)if(t.charCodeAt(Y)===42?(ft=pc,Y++):(ft=r,dt===0&&wt(Je)),ft===r&&(t.charCodeAt(Y)===47?(ft=st,Y++):(ft=r,dt===0&&wt(St))),ft!==r){for(dr=[],Br=kt();Br!==r;)dr.push(Br),Br=kt();dr!==r?(Br=KA(),Br!==r?(xt=de,Ke=lr(J,ft,Br),de=Ke):(Y=de,de=r)):(Y=de,de=r)}else Y=de,de=r;else Y=de,de=r}re!==r?(xt=O,J=ee(J,re),O=J):(Y=O,O=r)}else Y=O,O=r;return O}function so(){var O,J,re,de,Ke,ft,dr,Br;if(O=Y,J=Sf(),J!==r){for(re=[],de=Y,Ke=[],ft=kt();ft!==r;)Ke.push(ft),ft=kt();if(Ke!==r)if(t.charCodeAt(Y)===43?(ft=fc,Y++):(ft=r,dt===0&&wt(qa)),ft===r&&(t.charCodeAt(Y)===45?(ft=uc,Y++):(ft=r,dt===0&&wt(gu))),ft!==r){for(dr=[],Br=kt();Br!==r;)dr.push(Br),Br=kt();dr!==r?(Br=Sf(),Br!==r?(xt=de,Ke=Ie(J,ft,Br),de=Ke):(Y=de,de=r)):(Y=de,de=r)}else Y=de,de=r;else Y=de,de=r;for(;de!==r;){for(re.push(de),de=Y,Ke=[],ft=kt();ft!==r;)Ke.push(ft),ft=kt();if(Ke!==r)if(t.charCodeAt(Y)===43?(ft=fc,Y++):(ft=r,dt===0&&wt(qa)),ft===r&&(t.charCodeAt(Y)===45?(ft=uc,Y++):(ft=r,dt===0&&wt(gu))),ft!==r){for(dr=[],Br=kt();Br!==r;)dr.push(Br),Br=kt();dr!==r?(Br=Sf(),Br!==r?(xt=de,Ke=Ie(J,ft,Br),de=Ke):(Y=de,de=r)):(Y=de,de=r)}else Y=de,de=r;else Y=de,de=r}re!==r?(xt=O,J=ee(J,re),O=J):(Y=O,O=r)}else Y=O,O=r;return O}function Xr(){var O,J,re,de,Ke,ft;if(O=Y,t.substr(Y,3)===Oe?(J=Oe,Y+=3):(J=r,dt===0&&wt(ht)),J!==r){for(re=[],de=kt();de!==r;)re.push(de),de=kt();if(re!==r)if(de=so(),de!==r){for(Ke=[],ft=kt();ft!==r;)Ke.push(ft),ft=kt();Ke!==r?(t.substr(Y,2)===mt?(ft=mt,Y+=2):(ft=r,dt===0&&wt(Dt)),ft!==r?(xt=O,J=tr(de),O=J):(Y=O,O=r)):(Y=O,O=r)}else Y=O,O=r;else Y=O,O=r}else Y=O,O=r;return O}function kh(){var O,J,re,de;return O=Y,t.substr(Y,2)===fn?(J=fn,Y+=2):(J=r,dt===0&&wt(ai)),J!==r?(re=pa(),re!==r?(t.charCodeAt(Y)===41?(de=se,Y++):(de=r,dt===0&&wt(X)),de!==r?(xt=O,J=qi(re),O=J):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r),O}function JA(){var O,J,re,de,Ke,ft;return O=Y,t.substr(Y,2)===Tn?(J=Tn,Y+=2):(J=r,dt===0&&wt(Ga)),J!==r?(re=hc(),re!==r?(t.substr(Y,2)===my?(de=my,Y+=2):(de=r,dt===0&&wt(t2)),de!==r?(Ke=Fs(),Ke!==r?(t.charCodeAt(Y)===125?(ft=j,Y++):(ft=r,dt===0&&wt(rt)),ft!==r?(xt=O,J=Do(re,Ke),O=J):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r),O===r&&(O=Y,t.substr(Y,2)===Tn?(J=Tn,Y+=2):(J=r,dt===0&&wt(Ga)),J!==r?(re=hc(),re!==r?(t.substr(Y,3)===yy?(de=yy,Y+=3):(de=r,dt===0&&wt(wh)),de!==r?(xt=O,J=r2(re),O=J):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r),O===r&&(O=Y,t.substr(Y,2)===Tn?(J=Tn,Y+=2):(J=r,dt===0&&wt(Ga)),J!==r?(re=hc(),re!==r?(t.substr(Y,2)===bo?(de=bo,Y+=2):(de=r,dt===0&&wt(Bh)),de!==r?(Ke=Fs(),Ke!==r?(t.charCodeAt(Y)===125?(ft=j,Y++):(ft=r,dt===0&&wt(rt)),ft!==r?(xt=O,J=vh(re,Ke),O=J):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r),O===r&&(O=Y,t.substr(Y,2)===Tn?(J=Tn,Y+=2):(J=r,dt===0&&wt(Ga)),J!==r?(re=hc(),re!==r?(t.substr(Y,3)===du?(de=du,Y+=3):(de=r,dt===0&&wt(Sh)),de!==r?(xt=O,J=Ng(re),O=J):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r),O===r&&(O=Y,t.substr(Y,2)===Tn?(J=Tn,Y+=2):(J=r,dt===0&&wt(Ga)),J!==r?(re=hc(),re!==r?(t.charCodeAt(Y)===125?(de=j,Y++):(de=r,dt===0&&wt(rt)),de!==r?(xt=O,J=Og(re),O=J):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r),O===r&&(O=Y,t.charCodeAt(Y)===36?(J=Lg,Y++):(J=r,dt===0&&wt(Ey)),J!==r?(re=hc(),re!==r?(xt=O,J=Og(re),O=J):(Y=O,O=r)):(Y=O,O=r)))))),O}function Sy(){var O,J,re;return O=Y,J=Yg(),J!==r?(xt=Y,re=mf(J),re?re=void 0:re=r,re!==r?(xt=O,J=Po(J),O=J):(Y=O,O=r)):(Y=O,O=r),O}function Yg(){var O,J,re,de,Ke;if(O=Y,J=[],re=Y,de=Y,dt++,Ke=Th(),dt--,Ke===r?de=void 0:(Y=de,de=r),de!==r?(t.length>Y?(Ke=t.charAt(Y),Y++):(Ke=r,dt===0&&wt(kn)),Ke!==r?(xt=re,de=So(Ke),re=de):(Y=re,re=r)):(Y=re,re=r),re!==r)for(;re!==r;)J.push(re),re=Y,de=Y,dt++,Ke=Th(),dt--,Ke===r?de=void 0:(Y=de,de=r),de!==r?(t.length>Y?(Ke=t.charAt(Y),Y++):(Ke=r,dt===0&&wt(kn)),Ke!==r?(xt=re,de=So(Ke),re=de):(Y=re,re=r)):(Y=re,re=r);else J=r;return J!==r&&(xt=O,J=no(J)),O=J,O}function Qh(){var O,J,re;if(O=Y,J=[],Dl.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,dt===0&&wt(Dh)),re!==r)for(;re!==r;)J.push(re),Dl.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,dt===0&&wt(Dh));else J=r;return J!==r&&(xt=O,J=Mg()),O=J,O}function hc(){var O,J,re;if(O=Y,J=[],bl.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,dt===0&&wt(Pl)),re!==r)for(;re!==r;)J.push(re),bl.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,dt===0&&wt(Pl));else J=r;return J!==r&&(xt=O,J=Mg()),O=J,O}function Dy(){var O;return Iy.test(t.charAt(Y))?(O=t.charAt(Y),Y++):(O=r,dt===0&&wt(HA)),O}function Th(){var O;return Cy.test(t.charAt(Y))?(O=t.charAt(Y),Y++):(O=r,dt===0&&wt(wy)),O}function kt(){var O,J;if(O=[],jA.test(t.charAt(Y))?(J=t.charAt(Y),Y++):(J=r,dt===0&&wt(qA)),J!==r)for(;J!==r;)O.push(J),jA.test(t.charAt(Y))?(J=t.charAt(Y),Y++):(J=r,dt===0&&wt(qA));else O=r;return O}if(mu=a(),mu!==r&&Y===t.length)return mu;throw mu!==r&&Y!1}){try{return(0,rte.parse)(t,e)}catch(r){throw r.location&&(r.message=r.message.replace(/(\.)?$/,` (line ${r.location.start.line}, column ${r.location.start.column})$1`)),r}}function fE(t,{endSemicolon:e=!1}={}){return t.map(({command:r,type:s},a)=>`${Sx(r)}${s===";"?a!==t.length-1||e?";":"":" &"}`).join(" ")}function Sx(t){return`${AE(t.chain)}${t.then?` ${z_(t.then)}`:""}`}function z_(t){return`${t.type} ${Sx(t.line)}`}function AE(t){return`${X_(t)}${t.then?` ${Z_(t.then)}`:""}`}function Z_(t){return`${t.type} ${AE(t.chain)}`}function X_(t){switch(t.type){case"command":return`${t.envs.length>0?`${t.envs.map(e=>Bx(e)).join(" ")} `:""}${t.args.map(e=>$_(e)).join(" ")}`;case"subshell":return`(${fE(t.subshell)})${t.args.length>0?` ${t.args.map(e=>G2(e)).join(" ")}`:""}`;case"group":return`{ ${fE(t.group,{endSemicolon:!0})} }${t.args.length>0?` ${t.args.map(e=>G2(e)).join(" ")}`:""}`;case"envs":return t.envs.map(e=>Bx(e)).join(" ");default:throw new Error(`Unsupported command type: "${t.type}"`)}}function Bx(t){return`${t.name}=${t.args[0]?Sd(t.args[0]):""}`}function $_(t){switch(t.type){case"redirection":return G2(t);case"argument":return Sd(t);default:throw new Error(`Unsupported argument type: "${t.type}"`)}}function G2(t){return`${t.subtype} ${t.args.map(e=>Sd(e)).join(" ")}`}function Sd(t){return t.segments.map(e=>eU(e)).join("")}function eU(t){let e=(s,a)=>a?`"${s}"`:s,r=s=>s===""?"''":s.match(/[()}<>$|&;"'\n\t ]/)?s.match(/['\t\p{C}]/u)?s.match(/'/)?`"${s.replace(/["$\t\p{C}]/u,IKe)}"`:`$'${s.replace(/[\t\p{C}]/u,ite)}'`:`'${s}'`:s;switch(t.type){case"text":return r(t.text);case"glob":return t.pattern;case"shell":return e(`$(${fE(t.shell)})`,t.quoted);case"variable":return e(typeof t.defaultValue>"u"?typeof t.alternativeValue>"u"?`\${${t.name}}`:t.alternativeValue.length===0?`\${${t.name}:+}`:`\${${t.name}:+${t.alternativeValue.map(s=>Sd(s)).join(" ")}}`:t.defaultValue.length===0?`\${${t.name}:-}`:`\${${t.name}:-${t.defaultValue.map(s=>Sd(s)).join(" ")}}`,t.quoted);case"arithmetic":return`$(( ${Dx(t.arithmetic)} ))`;default:throw new Error(`Unsupported argument segment type: "${t.type}"`)}}function Dx(t){let e=a=>{switch(a){case"addition":return"+";case"subtraction":return"-";case"multiplication":return"*";case"division":return"/";default:throw new Error(`Can't extract operator from arithmetic expression of type "${a}"`)}},r=(a,n)=>n?`( ${a} )`:a,s=a=>r(Dx(a),!["number","variable"].includes(a.type));switch(t.type){case"number":return String(t.value);case"variable":return t.name;default:return`${s(t.left)} ${e(t.type)} ${s(t.right)}`}}var rte,nte,EKe,ite,IKe,ste=It(()=>{rte=et(tte());nte=new Map([["\f","\\f"],[` +`,"\\n"],["\r","\\r"],[" ","\\t"],["\v","\\v"],["\0","\\0"]]),EKe=new Map([["\\","\\\\"],["$","\\$"],['"','\\"'],...Array.from(nte,([t,e])=>[t,`"$'${e}'"`])]),ite=t=>nte.get(t)??`\\x${t.charCodeAt(0).toString(16).padStart(2,"0")}`,IKe=t=>EKe.get(t)??`"$'${ite(t)}'"`});var ate=L((U5t,ote)=>{"use strict";function CKe(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function Dd(t,e,r,s){this.message=t,this.expected=e,this.found=r,this.location=s,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,Dd)}CKe(Dd,Error);Dd.buildMessage=function(t,e){var r={literal:function(h){return'"'+a(h.text)+'"'},class:function(h){var E="",C;for(C=0;C0){for(C=1,S=1;CAe&&(Ae=W,ce=[]),ce.push(_e))}function rt(_e,x){return new Dd(_e,null,null,x)}function Fe(_e,x,w){return new Dd(Dd.buildMessage(_e,x),_e,x,w)}function Ne(){var _e,x,w,b;return _e=W,x=Pe(),x!==r?(t.charCodeAt(W)===47?(w=n,W++):(w=r,me===0&&j(c)),w!==r?(b=Pe(),b!==r?(te=_e,x=f(x,b),_e=x):(W=_e,_e=r)):(W=_e,_e=r)):(W=_e,_e=r),_e===r&&(_e=W,x=Pe(),x!==r&&(te=_e,x=p(x)),_e=x),_e}function Pe(){var _e,x,w,b;return _e=W,x=Ye(),x!==r?(t.charCodeAt(W)===64?(w=h,W++):(w=r,me===0&&j(E)),w!==r?(b=it(),b!==r?(te=_e,x=C(x,b),_e=x):(W=_e,_e=r)):(W=_e,_e=r)):(W=_e,_e=r),_e===r&&(_e=W,x=Ye(),x!==r&&(te=_e,x=S(x)),_e=x),_e}function Ye(){var _e,x,w,b,y;return _e=W,t.charCodeAt(W)===64?(x=h,W++):(x=r,me===0&&j(E)),x!==r?(w=ke(),w!==r?(t.charCodeAt(W)===47?(b=n,W++):(b=r,me===0&&j(c)),b!==r?(y=ke(),y!==r?(te=_e,x=P(),_e=x):(W=_e,_e=r)):(W=_e,_e=r)):(W=_e,_e=r)):(W=_e,_e=r),_e===r&&(_e=W,x=ke(),x!==r&&(te=_e,x=P()),_e=x),_e}function ke(){var _e,x,w;if(_e=W,x=[],I.test(t.charAt(W))?(w=t.charAt(W),W++):(w=r,me===0&&j(R)),w!==r)for(;w!==r;)x.push(w),I.test(t.charAt(W))?(w=t.charAt(W),W++):(w=r,me===0&&j(R));else x=r;return x!==r&&(te=_e,x=P()),_e=x,_e}function it(){var _e,x,w;if(_e=W,x=[],N.test(t.charAt(W))?(w=t.charAt(W),W++):(w=r,me===0&&j(U)),w!==r)for(;w!==r;)x.push(w),N.test(t.charAt(W))?(w=t.charAt(W),W++):(w=r,me===0&&j(U));else x=r;return x!==r&&(te=_e,x=P()),_e=x,_e}if(pe=a(),pe!==r&&W===t.length)return pe;throw pe!==r&&W{lte=et(ate())});var Pd=L((j5t,bd)=>{"use strict";function ute(t){return typeof t>"u"||t===null}function BKe(t){return typeof t=="object"&&t!==null}function vKe(t){return Array.isArray(t)?t:ute(t)?[]:[t]}function SKe(t,e){var r,s,a,n;if(e)for(n=Object.keys(e),r=0,s=n.length;r{"use strict";function W2(t,e){Error.call(this),this.name="YAMLException",this.reason=t,this.mark=e,this.message=(this.reason||"(unknown reason)")+(this.mark?" "+this.mark.toString():""),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack||""}W2.prototype=Object.create(Error.prototype);W2.prototype.constructor=W2;W2.prototype.toString=function(e){var r=this.name+": ";return r+=this.reason||"(unknown reason)",!e&&this.mark&&(r+=" "+this.mark.toString()),r};fte.exports=W2});var hte=L((G5t,pte)=>{"use strict";var Ate=Pd();function tU(t,e,r,s,a){this.name=t,this.buffer=e,this.position=r,this.line=s,this.column=a}tU.prototype.getSnippet=function(e,r){var s,a,n,c,f;if(!this.buffer)return null;for(e=e||4,r=r||75,s="",a=this.position;a>0&&`\0\r +\x85\u2028\u2029`.indexOf(this.buffer.charAt(a-1))===-1;)if(a-=1,this.position-a>r/2-1){s=" ... ",a+=5;break}for(n="",c=this.position;cr/2-1){n=" ... ",c-=5;break}return f=this.buffer.slice(a,c),Ate.repeat(" ",e)+s+f+n+` +`+Ate.repeat(" ",e+this.position-a+s.length)+"^"};tU.prototype.toString=function(e){var r,s="";return this.name&&(s+='in "'+this.name+'" '),s+="at line "+(this.line+1)+", column "+(this.column+1),e||(r=this.getSnippet(),r&&(s+=`: +`+r)),s};pte.exports=tU});var Ds=L((W5t,dte)=>{"use strict";var gte=pE(),PKe=["kind","resolve","construct","instanceOf","predicate","represent","defaultStyle","styleAliases"],xKe=["scalar","sequence","mapping"];function kKe(t){var e={};return t!==null&&Object.keys(t).forEach(function(r){t[r].forEach(function(s){e[String(s)]=r})}),e}function QKe(t,e){if(e=e||{},Object.keys(e).forEach(function(r){if(PKe.indexOf(r)===-1)throw new gte('Unknown option "'+r+'" is met in definition of "'+t+'" YAML type.')}),this.tag=t,this.kind=e.kind||null,this.resolve=e.resolve||function(){return!0},this.construct=e.construct||function(r){return r},this.instanceOf=e.instanceOf||null,this.predicate=e.predicate||null,this.represent=e.represent||null,this.defaultStyle=e.defaultStyle||null,this.styleAliases=kKe(e.styleAliases||null),xKe.indexOf(this.kind)===-1)throw new gte('Unknown kind "'+this.kind+'" is specified for "'+t+'" YAML type.')}dte.exports=QKe});var xd=L((Y5t,yte)=>{"use strict";var mte=Pd(),xx=pE(),TKe=Ds();function rU(t,e,r){var s=[];return t.include.forEach(function(a){r=rU(a,e,r)}),t[e].forEach(function(a){r.forEach(function(n,c){n.tag===a.tag&&n.kind===a.kind&&s.push(c)}),r.push(a)}),r.filter(function(a,n){return s.indexOf(n)===-1})}function RKe(){var t={scalar:{},sequence:{},mapping:{},fallback:{}},e,r;function s(a){t[a.kind][a.tag]=t.fallback[a.tag]=a}for(e=0,r=arguments.length;e{"use strict";var FKe=Ds();Ete.exports=new FKe("tag:yaml.org,2002:str",{kind:"scalar",construct:function(t){return t!==null?t:""}})});var wte=L((K5t,Cte)=>{"use strict";var NKe=Ds();Cte.exports=new NKe("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(t){return t!==null?t:[]}})});var vte=L((J5t,Bte)=>{"use strict";var OKe=Ds();Bte.exports=new OKe("tag:yaml.org,2002:map",{kind:"mapping",construct:function(t){return t!==null?t:{}}})});var kx=L((z5t,Ste)=>{"use strict";var LKe=xd();Ste.exports=new LKe({explicit:[Ite(),wte(),vte()]})});var bte=L((Z5t,Dte)=>{"use strict";var MKe=Ds();function _Ke(t){if(t===null)return!0;var e=t.length;return e===1&&t==="~"||e===4&&(t==="null"||t==="Null"||t==="NULL")}function UKe(){return null}function HKe(t){return t===null}Dte.exports=new MKe("tag:yaml.org,2002:null",{kind:"scalar",resolve:_Ke,construct:UKe,predicate:HKe,represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"}},defaultStyle:"lowercase"})});var xte=L((X5t,Pte)=>{"use strict";var jKe=Ds();function qKe(t){if(t===null)return!1;var e=t.length;return e===4&&(t==="true"||t==="True"||t==="TRUE")||e===5&&(t==="false"||t==="False"||t==="FALSE")}function GKe(t){return t==="true"||t==="True"||t==="TRUE"}function WKe(t){return Object.prototype.toString.call(t)==="[object Boolean]"}Pte.exports=new jKe("tag:yaml.org,2002:bool",{kind:"scalar",resolve:qKe,construct:GKe,predicate:WKe,represent:{lowercase:function(t){return t?"true":"false"},uppercase:function(t){return t?"TRUE":"FALSE"},camelcase:function(t){return t?"True":"False"}},defaultStyle:"lowercase"})});var Qte=L(($5t,kte)=>{"use strict";var YKe=Pd(),VKe=Ds();function KKe(t){return 48<=t&&t<=57||65<=t&&t<=70||97<=t&&t<=102}function JKe(t){return 48<=t&&t<=55}function zKe(t){return 48<=t&&t<=57}function ZKe(t){if(t===null)return!1;var e=t.length,r=0,s=!1,a;if(!e)return!1;if(a=t[r],(a==="-"||a==="+")&&(a=t[++r]),a==="0"){if(r+1===e)return!0;if(a=t[++r],a==="b"){for(r++;r=0?"0b"+t.toString(2):"-0b"+t.toString(2).slice(1)},octal:function(t){return t>=0?"0"+t.toString(8):"-0"+t.toString(8).slice(1)},decimal:function(t){return t.toString(10)},hexadecimal:function(t){return t>=0?"0x"+t.toString(16).toUpperCase():"-0x"+t.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}})});var Fte=L((e9t,Rte)=>{"use strict";var Tte=Pd(),eJe=Ds(),tJe=new RegExp("^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");function rJe(t){return!(t===null||!tJe.test(t)||t[t.length-1]==="_")}function nJe(t){var e,r,s,a;return e=t.replace(/_/g,"").toLowerCase(),r=e[0]==="-"?-1:1,a=[],"+-".indexOf(e[0])>=0&&(e=e.slice(1)),e===".inf"?r===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:e===".nan"?NaN:e.indexOf(":")>=0?(e.split(":").forEach(function(n){a.unshift(parseFloat(n,10))}),e=0,s=1,a.forEach(function(n){e+=n*s,s*=60}),r*e):r*parseFloat(e,10)}var iJe=/^[-+]?[0-9]+e/;function sJe(t,e){var r;if(isNaN(t))switch(e){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===t)switch(e){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===t)switch(e){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(Tte.isNegativeZero(t))return"-0.0";return r=t.toString(10),iJe.test(r)?r.replace("e",".e"):r}function oJe(t){return Object.prototype.toString.call(t)==="[object Number]"&&(t%1!==0||Tte.isNegativeZero(t))}Rte.exports=new eJe("tag:yaml.org,2002:float",{kind:"scalar",resolve:rJe,construct:nJe,predicate:oJe,represent:sJe,defaultStyle:"lowercase"})});var nU=L((t9t,Nte)=>{"use strict";var aJe=xd();Nte.exports=new aJe({include:[kx()],implicit:[bte(),xte(),Qte(),Fte()]})});var iU=L((r9t,Ote)=>{"use strict";var lJe=xd();Ote.exports=new lJe({include:[nU()]})});var Ute=L((n9t,_te)=>{"use strict";var cJe=Ds(),Lte=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),Mte=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");function uJe(t){return t===null?!1:Lte.exec(t)!==null||Mte.exec(t)!==null}function fJe(t){var e,r,s,a,n,c,f,p=0,h=null,E,C,S;if(e=Lte.exec(t),e===null&&(e=Mte.exec(t)),e===null)throw new Error("Date resolve error");if(r=+e[1],s=+e[2]-1,a=+e[3],!e[4])return new Date(Date.UTC(r,s,a));if(n=+e[4],c=+e[5],f=+e[6],e[7]){for(p=e[7].slice(0,3);p.length<3;)p+="0";p=+p}return e[9]&&(E=+e[10],C=+(e[11]||0),h=(E*60+C)*6e4,e[9]==="-"&&(h=-h)),S=new Date(Date.UTC(r,s,a,n,c,f,p)),h&&S.setTime(S.getTime()-h),S}function AJe(t){return t.toISOString()}_te.exports=new cJe("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:uJe,construct:fJe,instanceOf:Date,represent:AJe})});var jte=L((i9t,Hte)=>{"use strict";var pJe=Ds();function hJe(t){return t==="<<"||t===null}Hte.exports=new pJe("tag:yaml.org,2002:merge",{kind:"scalar",resolve:hJe})});var Wte=L((s9t,Gte)=>{"use strict";var kd;try{qte=ye,kd=qte("buffer").Buffer}catch{}var qte,gJe=Ds(),sU=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= +\r`;function dJe(t){if(t===null)return!1;var e,r,s=0,a=t.length,n=sU;for(r=0;r64)){if(e<0)return!1;s+=6}return s%8===0}function mJe(t){var e,r,s=t.replace(/[\r\n=]/g,""),a=s.length,n=sU,c=0,f=[];for(e=0;e>16&255),f.push(c>>8&255),f.push(c&255)),c=c<<6|n.indexOf(s.charAt(e));return r=a%4*6,r===0?(f.push(c>>16&255),f.push(c>>8&255),f.push(c&255)):r===18?(f.push(c>>10&255),f.push(c>>2&255)):r===12&&f.push(c>>4&255),kd?kd.from?kd.from(f):new kd(f):f}function yJe(t){var e="",r=0,s,a,n=t.length,c=sU;for(s=0;s>18&63],e+=c[r>>12&63],e+=c[r>>6&63],e+=c[r&63]),r=(r<<8)+t[s];return a=n%3,a===0?(e+=c[r>>18&63],e+=c[r>>12&63],e+=c[r>>6&63],e+=c[r&63]):a===2?(e+=c[r>>10&63],e+=c[r>>4&63],e+=c[r<<2&63],e+=c[64]):a===1&&(e+=c[r>>2&63],e+=c[r<<4&63],e+=c[64],e+=c[64]),e}function EJe(t){return kd&&kd.isBuffer(t)}Gte.exports=new gJe("tag:yaml.org,2002:binary",{kind:"scalar",resolve:dJe,construct:mJe,predicate:EJe,represent:yJe})});var Vte=L((a9t,Yte)=>{"use strict";var IJe=Ds(),CJe=Object.prototype.hasOwnProperty,wJe=Object.prototype.toString;function BJe(t){if(t===null)return!0;var e=[],r,s,a,n,c,f=t;for(r=0,s=f.length;r{"use strict";var SJe=Ds(),DJe=Object.prototype.toString;function bJe(t){if(t===null)return!0;var e,r,s,a,n,c=t;for(n=new Array(c.length),e=0,r=c.length;e{"use strict";var xJe=Ds(),kJe=Object.prototype.hasOwnProperty;function QJe(t){if(t===null)return!0;var e,r=t;for(e in r)if(kJe.call(r,e)&&r[e]!==null)return!1;return!0}function TJe(t){return t!==null?t:{}}zte.exports=new xJe("tag:yaml.org,2002:set",{kind:"mapping",resolve:QJe,construct:TJe})});var gE=L((u9t,Xte)=>{"use strict";var RJe=xd();Xte.exports=new RJe({include:[iU()],implicit:[Ute(),jte()],explicit:[Wte(),Vte(),Jte(),Zte()]})});var ere=L((f9t,$te)=>{"use strict";var FJe=Ds();function NJe(){return!0}function OJe(){}function LJe(){return""}function MJe(t){return typeof t>"u"}$te.exports=new FJe("tag:yaml.org,2002:js/undefined",{kind:"scalar",resolve:NJe,construct:OJe,predicate:MJe,represent:LJe})});var rre=L((A9t,tre)=>{"use strict";var _Je=Ds();function UJe(t){if(t===null||t.length===0)return!1;var e=t,r=/\/([gim]*)$/.exec(t),s="";return!(e[0]==="/"&&(r&&(s=r[1]),s.length>3||e[e.length-s.length-1]!=="/"))}function HJe(t){var e=t,r=/\/([gim]*)$/.exec(t),s="";return e[0]==="/"&&(r&&(s=r[1]),e=e.slice(1,e.length-s.length-1)),new RegExp(e,s)}function jJe(t){var e="/"+t.source+"/";return t.global&&(e+="g"),t.multiline&&(e+="m"),t.ignoreCase&&(e+="i"),e}function qJe(t){return Object.prototype.toString.call(t)==="[object RegExp]"}tre.exports=new _Je("tag:yaml.org,2002:js/regexp",{kind:"scalar",resolve:UJe,construct:HJe,predicate:qJe,represent:jJe})});var sre=L((p9t,ire)=>{"use strict";var Qx;try{nre=ye,Qx=nre("esprima")}catch{typeof window<"u"&&(Qx=window.esprima)}var nre,GJe=Ds();function WJe(t){if(t===null)return!1;try{var e="("+t+")",r=Qx.parse(e,{range:!0});return!(r.type!=="Program"||r.body.length!==1||r.body[0].type!=="ExpressionStatement"||r.body[0].expression.type!=="ArrowFunctionExpression"&&r.body[0].expression.type!=="FunctionExpression")}catch{return!1}}function YJe(t){var e="("+t+")",r=Qx.parse(e,{range:!0}),s=[],a;if(r.type!=="Program"||r.body.length!==1||r.body[0].type!=="ExpressionStatement"||r.body[0].expression.type!=="ArrowFunctionExpression"&&r.body[0].expression.type!=="FunctionExpression")throw new Error("Failed to resolve function");return r.body[0].expression.params.forEach(function(n){s.push(n.name)}),a=r.body[0].expression.body.range,r.body[0].expression.body.type==="BlockStatement"?new Function(s,e.slice(a[0]+1,a[1]-1)):new Function(s,"return "+e.slice(a[0],a[1]))}function VJe(t){return t.toString()}function KJe(t){return Object.prototype.toString.call(t)==="[object Function]"}ire.exports=new GJe("tag:yaml.org,2002:js/function",{kind:"scalar",resolve:WJe,construct:YJe,predicate:KJe,represent:VJe})});var Y2=L((g9t,are)=>{"use strict";var ore=xd();are.exports=ore.DEFAULT=new ore({include:[gE()],explicit:[ere(),rre(),sre()]})});var Dre=L((d9t,V2)=>{"use strict";var wp=Pd(),hre=pE(),JJe=hte(),gre=gE(),zJe=Y2(),a0=Object.prototype.hasOwnProperty,Tx=1,dre=2,mre=3,Rx=4,oU=1,ZJe=2,lre=3,XJe=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,$Je=/[\x85\u2028\u2029]/,eze=/[,\[\]\{\}]/,yre=/^(?:!|!!|![a-z\-]+!)$/i,Ere=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;function cre(t){return Object.prototype.toString.call(t)}function qf(t){return t===10||t===13}function Td(t){return t===9||t===32}function nl(t){return t===9||t===32||t===10||t===13}function dE(t){return t===44||t===91||t===93||t===123||t===125}function tze(t){var e;return 48<=t&&t<=57?t-48:(e=t|32,97<=e&&e<=102?e-97+10:-1)}function rze(t){return t===120?2:t===117?4:t===85?8:0}function nze(t){return 48<=t&&t<=57?t-48:-1}function ure(t){return t===48?"\0":t===97?"\x07":t===98?"\b":t===116||t===9?" ":t===110?` +`:t===118?"\v":t===102?"\f":t===114?"\r":t===101?"\x1B":t===32?" ":t===34?'"':t===47?"/":t===92?"\\":t===78?"\x85":t===95?"\xA0":t===76?"\u2028":t===80?"\u2029":""}function ize(t){return t<=65535?String.fromCharCode(t):String.fromCharCode((t-65536>>10)+55296,(t-65536&1023)+56320)}var Ire=new Array(256),Cre=new Array(256);for(Qd=0;Qd<256;Qd++)Ire[Qd]=ure(Qd)?1:0,Cre[Qd]=ure(Qd);var Qd;function sze(t,e){this.input=t,this.filename=e.filename||null,this.schema=e.schema||zJe,this.onWarning=e.onWarning||null,this.legacy=e.legacy||!1,this.json=e.json||!1,this.listener=e.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=t.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.documents=[]}function wre(t,e){return new hre(e,new JJe(t.filename,t.input,t.position,t.line,t.position-t.lineStart))}function Rr(t,e){throw wre(t,e)}function Fx(t,e){t.onWarning&&t.onWarning.call(null,wre(t,e))}var fre={YAML:function(e,r,s){var a,n,c;e.version!==null&&Rr(e,"duplication of %YAML directive"),s.length!==1&&Rr(e,"YAML directive accepts exactly one argument"),a=/^([0-9]+)\.([0-9]+)$/.exec(s[0]),a===null&&Rr(e,"ill-formed argument of the YAML directive"),n=parseInt(a[1],10),c=parseInt(a[2],10),n!==1&&Rr(e,"unacceptable YAML version of the document"),e.version=s[0],e.checkLineBreaks=c<2,c!==1&&c!==2&&Fx(e,"unsupported YAML version of the document")},TAG:function(e,r,s){var a,n;s.length!==2&&Rr(e,"TAG directive accepts exactly two arguments"),a=s[0],n=s[1],yre.test(a)||Rr(e,"ill-formed tag handle (first argument) of the TAG directive"),a0.call(e.tagMap,a)&&Rr(e,'there is a previously declared suffix for "'+a+'" tag handle'),Ere.test(n)||Rr(e,"ill-formed tag prefix (second argument) of the TAG directive"),e.tagMap[a]=n}};function o0(t,e,r,s){var a,n,c,f;if(e1&&(t.result+=wp.repeat(` +`,e-1))}function oze(t,e,r){var s,a,n,c,f,p,h,E,C=t.kind,S=t.result,P;if(P=t.input.charCodeAt(t.position),nl(P)||dE(P)||P===35||P===38||P===42||P===33||P===124||P===62||P===39||P===34||P===37||P===64||P===96||(P===63||P===45)&&(a=t.input.charCodeAt(t.position+1),nl(a)||r&&dE(a)))return!1;for(t.kind="scalar",t.result="",n=c=t.position,f=!1;P!==0;){if(P===58){if(a=t.input.charCodeAt(t.position+1),nl(a)||r&&dE(a))break}else if(P===35){if(s=t.input.charCodeAt(t.position-1),nl(s))break}else{if(t.position===t.lineStart&&Nx(t)||r&&dE(P))break;if(qf(P))if(p=t.line,h=t.lineStart,E=t.lineIndent,as(t,!1,-1),t.lineIndent>=e){f=!0,P=t.input.charCodeAt(t.position);continue}else{t.position=c,t.line=p,t.lineStart=h,t.lineIndent=E;break}}f&&(o0(t,n,c,!1),lU(t,t.line-p),n=c=t.position,f=!1),Td(P)||(c=t.position+1),P=t.input.charCodeAt(++t.position)}return o0(t,n,c,!1),t.result?!0:(t.kind=C,t.result=S,!1)}function aze(t,e){var r,s,a;if(r=t.input.charCodeAt(t.position),r!==39)return!1;for(t.kind="scalar",t.result="",t.position++,s=a=t.position;(r=t.input.charCodeAt(t.position))!==0;)if(r===39)if(o0(t,s,t.position,!0),r=t.input.charCodeAt(++t.position),r===39)s=t.position,t.position++,a=t.position;else return!0;else qf(r)?(o0(t,s,a,!0),lU(t,as(t,!1,e)),s=a=t.position):t.position===t.lineStart&&Nx(t)?Rr(t,"unexpected end of the document within a single quoted scalar"):(t.position++,a=t.position);Rr(t,"unexpected end of the stream within a single quoted scalar")}function lze(t,e){var r,s,a,n,c,f;if(f=t.input.charCodeAt(t.position),f!==34)return!1;for(t.kind="scalar",t.result="",t.position++,r=s=t.position;(f=t.input.charCodeAt(t.position))!==0;){if(f===34)return o0(t,r,t.position,!0),t.position++,!0;if(f===92){if(o0(t,r,t.position,!0),f=t.input.charCodeAt(++t.position),qf(f))as(t,!1,e);else if(f<256&&Ire[f])t.result+=Cre[f],t.position++;else if((c=rze(f))>0){for(a=c,n=0;a>0;a--)f=t.input.charCodeAt(++t.position),(c=tze(f))>=0?n=(n<<4)+c:Rr(t,"expected hexadecimal character");t.result+=ize(n),t.position++}else Rr(t,"unknown escape sequence");r=s=t.position}else qf(f)?(o0(t,r,s,!0),lU(t,as(t,!1,e)),r=s=t.position):t.position===t.lineStart&&Nx(t)?Rr(t,"unexpected end of the document within a double quoted scalar"):(t.position++,s=t.position)}Rr(t,"unexpected end of the stream within a double quoted scalar")}function cze(t,e){var r=!0,s,a=t.tag,n,c=t.anchor,f,p,h,E,C,S={},P,I,R,N;if(N=t.input.charCodeAt(t.position),N===91)p=93,C=!1,n=[];else if(N===123)p=125,C=!0,n={};else return!1;for(t.anchor!==null&&(t.anchorMap[t.anchor]=n),N=t.input.charCodeAt(++t.position);N!==0;){if(as(t,!0,e),N=t.input.charCodeAt(t.position),N===p)return t.position++,t.tag=a,t.anchor=c,t.kind=C?"mapping":"sequence",t.result=n,!0;r||Rr(t,"missed comma between flow collection entries"),I=P=R=null,h=E=!1,N===63&&(f=t.input.charCodeAt(t.position+1),nl(f)&&(h=E=!0,t.position++,as(t,!0,e))),s=t.line,yE(t,e,Tx,!1,!0),I=t.tag,P=t.result,as(t,!0,e),N=t.input.charCodeAt(t.position),(E||t.line===s)&&N===58&&(h=!0,N=t.input.charCodeAt(++t.position),as(t,!0,e),yE(t,e,Tx,!1,!0),R=t.result),C?mE(t,n,S,I,P,R):h?n.push(mE(t,null,S,I,P,R)):n.push(P),as(t,!0,e),N=t.input.charCodeAt(t.position),N===44?(r=!0,N=t.input.charCodeAt(++t.position)):r=!1}Rr(t,"unexpected end of the stream within a flow collection")}function uze(t,e){var r,s,a=oU,n=!1,c=!1,f=e,p=0,h=!1,E,C;if(C=t.input.charCodeAt(t.position),C===124)s=!1;else if(C===62)s=!0;else return!1;for(t.kind="scalar",t.result="";C!==0;)if(C=t.input.charCodeAt(++t.position),C===43||C===45)oU===a?a=C===43?lre:ZJe:Rr(t,"repeat of a chomping mode identifier");else if((E=nze(C))>=0)E===0?Rr(t,"bad explicit indentation width of a block scalar; it cannot be less than one"):c?Rr(t,"repeat of an indentation width identifier"):(f=e+E-1,c=!0);else break;if(Td(C)){do C=t.input.charCodeAt(++t.position);while(Td(C));if(C===35)do C=t.input.charCodeAt(++t.position);while(!qf(C)&&C!==0)}for(;C!==0;){for(aU(t),t.lineIndent=0,C=t.input.charCodeAt(t.position);(!c||t.lineIndentf&&(f=t.lineIndent),qf(C)){p++;continue}if(t.lineIndente)&&p!==0)Rr(t,"bad indentation of a sequence entry");else if(t.lineIndente)&&(yE(t,e,Rx,!0,a)&&(I?S=t.result:P=t.result),I||(mE(t,h,E,C,S,P,n,c),C=S=P=null),as(t,!0,-1),N=t.input.charCodeAt(t.position)),t.lineIndent>e&&N!==0)Rr(t,"bad indentation of a mapping entry");else if(t.lineIndente?p=1:t.lineIndent===e?p=0:t.lineIndente?p=1:t.lineIndent===e?p=0:t.lineIndent tag; it should be "scalar", not "'+t.kind+'"'),C=0,S=t.implicitTypes.length;C tag; it should be "'+P.kind+'", not "'+t.kind+'"'),P.resolve(t.result)?(t.result=P.construct(t.result),t.anchor!==null&&(t.anchorMap[t.anchor]=t.result)):Rr(t,"cannot resolve a node with !<"+t.tag+"> explicit tag")):Rr(t,"unknown tag !<"+t.tag+">");return t.listener!==null&&t.listener("close",t),t.tag!==null||t.anchor!==null||E}function gze(t){var e=t.position,r,s,a,n=!1,c;for(t.version=null,t.checkLineBreaks=t.legacy,t.tagMap={},t.anchorMap={};(c=t.input.charCodeAt(t.position))!==0&&(as(t,!0,-1),c=t.input.charCodeAt(t.position),!(t.lineIndent>0||c!==37));){for(n=!0,c=t.input.charCodeAt(++t.position),r=t.position;c!==0&&!nl(c);)c=t.input.charCodeAt(++t.position);for(s=t.input.slice(r,t.position),a=[],s.length<1&&Rr(t,"directive name must not be less than one character in length");c!==0;){for(;Td(c);)c=t.input.charCodeAt(++t.position);if(c===35){do c=t.input.charCodeAt(++t.position);while(c!==0&&!qf(c));break}if(qf(c))break;for(r=t.position;c!==0&&!nl(c);)c=t.input.charCodeAt(++t.position);a.push(t.input.slice(r,t.position))}c!==0&&aU(t),a0.call(fre,s)?fre[s](t,s,a):Fx(t,'unknown document directive "'+s+'"')}if(as(t,!0,-1),t.lineIndent===0&&t.input.charCodeAt(t.position)===45&&t.input.charCodeAt(t.position+1)===45&&t.input.charCodeAt(t.position+2)===45?(t.position+=3,as(t,!0,-1)):n&&Rr(t,"directives end mark is expected"),yE(t,t.lineIndent-1,Rx,!1,!0),as(t,!0,-1),t.checkLineBreaks&&$Je.test(t.input.slice(e,t.position))&&Fx(t,"non-ASCII line breaks are interpreted as content"),t.documents.push(t.result),t.position===t.lineStart&&Nx(t)){t.input.charCodeAt(t.position)===46&&(t.position+=3,as(t,!0,-1));return}if(t.position"u"&&(r=e,e=null);var s=Bre(t,r);if(typeof e!="function")return s;for(var a=0,n=s.length;a"u"&&(r=e,e=null),vre(t,e,wp.extend({schema:gre},r))}function mze(t,e){return Sre(t,wp.extend({schema:gre},e))}V2.exports.loadAll=vre;V2.exports.load=Sre;V2.exports.safeLoadAll=dze;V2.exports.safeLoad=mze});var Jre=L((m9t,AU)=>{"use strict";var J2=Pd(),z2=pE(),yze=Y2(),Eze=gE(),Fre=Object.prototype.toString,Nre=Object.prototype.hasOwnProperty,Ize=9,K2=10,Cze=13,wze=32,Bze=33,vze=34,Ore=35,Sze=37,Dze=38,bze=39,Pze=42,Lre=44,xze=45,Mre=58,kze=61,Qze=62,Tze=63,Rze=64,_re=91,Ure=93,Fze=96,Hre=123,Nze=124,jre=125,jo={};jo[0]="\\0";jo[7]="\\a";jo[8]="\\b";jo[9]="\\t";jo[10]="\\n";jo[11]="\\v";jo[12]="\\f";jo[13]="\\r";jo[27]="\\e";jo[34]='\\"';jo[92]="\\\\";jo[133]="\\N";jo[160]="\\_";jo[8232]="\\L";jo[8233]="\\P";var Oze=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"];function Lze(t,e){var r,s,a,n,c,f,p;if(e===null)return{};for(r={},s=Object.keys(e),a=0,n=s.length;a0?t.charCodeAt(n-1):null,S=S&&xre(c,f)}else{for(n=0;ns&&t[C+1]!==" ",C=n);else if(!EE(c))return Ox;f=n>0?t.charCodeAt(n-1):null,S=S&&xre(c,f)}h=h||E&&n-C-1>s&&t[C+1]!==" "}return!p&&!h?S&&!a(t)?Gre:Wre:r>9&&qre(t)?Ox:h?Vre:Yre}function qze(t,e,r,s){t.dump=function(){if(e.length===0)return"''";if(!t.noCompatMode&&Oze.indexOf(e)!==-1)return"'"+e+"'";var a=t.indent*Math.max(1,r),n=t.lineWidth===-1?-1:Math.max(Math.min(t.lineWidth,40),t.lineWidth-a),c=s||t.flowLevel>-1&&r>=t.flowLevel;function f(p){return _ze(t,p)}switch(jze(e,c,t.indent,n,f)){case Gre:return e;case Wre:return"'"+e.replace(/'/g,"''")+"'";case Yre:return"|"+kre(e,t.indent)+Qre(Pre(e,a));case Vre:return">"+kre(e,t.indent)+Qre(Pre(Gze(e,n),a));case Ox:return'"'+Wze(e,n)+'"';default:throw new z2("impossible error: invalid scalar style")}}()}function kre(t,e){var r=qre(t)?String(e):"",s=t[t.length-1]===` +`,a=s&&(t[t.length-2]===` +`||t===` +`),n=a?"+":s?"":"-";return r+n+` +`}function Qre(t){return t[t.length-1]===` +`?t.slice(0,-1):t}function Gze(t,e){for(var r=/(\n+)([^\n]*)/g,s=function(){var h=t.indexOf(` +`);return h=h!==-1?h:t.length,r.lastIndex=h,Tre(t.slice(0,h),e)}(),a=t[0]===` +`||t[0]===" ",n,c;c=r.exec(t);){var f=c[1],p=c[2];n=p[0]===" ",s+=f+(!a&&!n&&p!==""?` +`:"")+Tre(p,e),a=n}return s}function Tre(t,e){if(t===""||t[0]===" ")return t;for(var r=/ [^ ]/g,s,a=0,n,c=0,f=0,p="";s=r.exec(t);)f=s.index,f-a>e&&(n=c>a?c:f,p+=` +`+t.slice(a,n),a=n+1),c=f;return p+=` +`,t.length-a>e&&c>a?p+=t.slice(a,c)+` +`+t.slice(c+1):p+=t.slice(a),p.slice(1)}function Wze(t){for(var e="",r,s,a,n=0;n=55296&&r<=56319&&(s=t.charCodeAt(n+1),s>=56320&&s<=57343)){e+=bre((r-55296)*1024+s-56320+65536),n++;continue}a=jo[r],e+=!a&&EE(r)?t[n]:a||bre(r)}return e}function Yze(t,e,r){var s="",a=t.tag,n,c;for(n=0,c=r.length;n1024&&(E+="? "),E+=t.dump+(t.condenseFlow?'"':"")+":"+(t.condenseFlow?"":" "),Rd(t,e,h,!1,!1)&&(E+=t.dump,s+=E));t.tag=a,t.dump="{"+s+"}"}function Jze(t,e,r,s){var a="",n=t.tag,c=Object.keys(r),f,p,h,E,C,S;if(t.sortKeys===!0)c.sort();else if(typeof t.sortKeys=="function")c.sort(t.sortKeys);else if(t.sortKeys)throw new z2("sortKeys must be a boolean or a function");for(f=0,p=c.length;f1024,C&&(t.dump&&K2===t.dump.charCodeAt(0)?S+="?":S+="? "),S+=t.dump,C&&(S+=cU(t,e)),Rd(t,e+1,E,!0,C)&&(t.dump&&K2===t.dump.charCodeAt(0)?S+=":":S+=": ",S+=t.dump,a+=S));t.tag=n,t.dump=a||"{}"}function Rre(t,e,r){var s,a,n,c,f,p;for(a=r?t.explicitTypes:t.implicitTypes,n=0,c=a.length;n tag resolver accepts not "'+p+'" style');t.dump=s}return!0}return!1}function Rd(t,e,r,s,a,n){t.tag=null,t.dump=r,Rre(t,r,!1)||Rre(t,r,!0);var c=Fre.call(t.dump);s&&(s=t.flowLevel<0||t.flowLevel>e);var f=c==="[object Object]"||c==="[object Array]",p,h;if(f&&(p=t.duplicates.indexOf(r),h=p!==-1),(t.tag!==null&&t.tag!=="?"||h||t.indent!==2&&e>0)&&(a=!1),h&&t.usedDuplicates[p])t.dump="*ref_"+p;else{if(f&&h&&!t.usedDuplicates[p]&&(t.usedDuplicates[p]=!0),c==="[object Object]")s&&Object.keys(t.dump).length!==0?(Jze(t,e,t.dump,a),h&&(t.dump="&ref_"+p+t.dump)):(Kze(t,e,t.dump),h&&(t.dump="&ref_"+p+" "+t.dump));else if(c==="[object Array]"){var E=t.noArrayIndent&&e>0?e-1:e;s&&t.dump.length!==0?(Vze(t,E,t.dump,a),h&&(t.dump="&ref_"+p+t.dump)):(Yze(t,E,t.dump),h&&(t.dump="&ref_"+p+" "+t.dump))}else if(c==="[object String]")t.tag!=="?"&&qze(t,t.dump,e,n);else{if(t.skipInvalid)return!1;throw new z2("unacceptable kind of an object to dump "+c)}t.tag!==null&&t.tag!=="?"&&(t.dump="!<"+t.tag+"> "+t.dump)}return!0}function zze(t,e){var r=[],s=[],a,n;for(uU(t,r,s),a=0,n=s.length;a{"use strict";var Lx=Dre(),zre=Jre();function Mx(t){return function(){throw new Error("Function "+t+" is deprecated and cannot be used.")}}Gi.exports.Type=Ds();Gi.exports.Schema=xd();Gi.exports.FAILSAFE_SCHEMA=kx();Gi.exports.JSON_SCHEMA=nU();Gi.exports.CORE_SCHEMA=iU();Gi.exports.DEFAULT_SAFE_SCHEMA=gE();Gi.exports.DEFAULT_FULL_SCHEMA=Y2();Gi.exports.load=Lx.load;Gi.exports.loadAll=Lx.loadAll;Gi.exports.safeLoad=Lx.safeLoad;Gi.exports.safeLoadAll=Lx.safeLoadAll;Gi.exports.dump=zre.dump;Gi.exports.safeDump=zre.safeDump;Gi.exports.YAMLException=pE();Gi.exports.MINIMAL_SCHEMA=kx();Gi.exports.SAFE_SCHEMA=gE();Gi.exports.DEFAULT_SCHEMA=Y2();Gi.exports.scan=Mx("scan");Gi.exports.parse=Mx("parse");Gi.exports.compose=Mx("compose");Gi.exports.addConstructor=Mx("addConstructor")});var $re=L((E9t,Xre)=>{"use strict";var Xze=Zre();Xre.exports=Xze});var tne=L((I9t,ene)=>{"use strict";function $ze(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function Fd(t,e,r,s){this.message=t,this.expected=e,this.found=r,this.location=s,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,Fd)}$ze(Fd,Error);Fd.buildMessage=function(t,e){var r={literal:function(h){return'"'+a(h.text)+'"'},class:function(h){var E="",C;for(C=0;C0){for(C=1,S=1;C({[ht]:Oe})))},Ae=function(ee){return ee},ce=function(ee){return ee},me=La("correct indentation"),pe=" ",Be=dn(" ",!1),Ce=function(ee){return ee.length===lr*St},g=function(ee){return ee.length===(lr+1)*St},we=function(){return lr++,!0},Ee=function(){return lr--,!0},fe=function(){return ca()},se=La("pseudostring"),X=/^[^\r\n\t ?:,\][{}#&*!|>'"%@`\-]/,De=Jn(["\r",` +`," "," ","?",":",",","]","[","{","}","#","&","*","!","|",">","'",'"',"%","@","`","-"],!0,!1),Re=/^[^\r\n\t ,\][{}:#"']/,gt=Jn(["\r",` +`," "," ",",","]","[","{","}",":","#",'"',"'"],!0,!1),j=function(){return ca().replace(/^ *| *$/g,"")},rt="--",Fe=dn("--",!1),Ne=/^[a-zA-Z\/0-9]/,Pe=Jn([["a","z"],["A","Z"],"/",["0","9"]],!1,!1),Ye=/^[^\r\n\t :,]/,ke=Jn(["\r",` +`," "," ",":",","],!0,!1),it="null",_e=dn("null",!1),x=function(){return null},w="true",b=dn("true",!1),y=function(){return!0},F="false",z=dn("false",!1),Z=function(){return!1},$=La("string"),oe='"',xe=dn('"',!1),Te=function(){return""},lt=function(ee){return ee},Et=function(ee){return ee.join("")},qt=/^[^"\\\0-\x1F\x7F]/,ir=Jn(['"',"\\",["\0",""],"\x7F"],!0,!1),Pt='\\"',gn=dn('\\"',!1),Pr=function(){return'"'},Ir="\\\\",Nr=dn("\\\\",!1),nn=function(){return"\\"},oi="\\/",wo=dn("\\/",!1),rs=function(){return"/"},eo="\\b",Bo=dn("\\b",!1),Hi=function(){return"\b"},to="\\f",vo=dn("\\f",!1),RA=function(){return"\f"},pf="\\n",Eh=dn("\\n",!1),Ih=function(){return` +`},ro="\\r",jn=dn("\\r",!1),Rs=function(){return"\r"},no="\\t",lu=dn("\\t",!1),cu=function(){return" "},uu="\\u",FA=dn("\\u",!1),NA=function(ee,Ie,Oe,ht){return String.fromCharCode(parseInt(`0x${ee}${Ie}${Oe}${ht}`))},aa=/^[0-9a-fA-F]/,la=Jn([["0","9"],["a","f"],["A","F"]],!1,!1),OA=La("blank space"),gr=/^[ \t]/,So=Jn([" "," "],!1,!1),Me=La("white space"),fu=/^[ \t\n\r]/,Cr=Jn([" "," ",` +`,"\r"],!1,!1),hf=`\r +`,LA=dn(`\r +`,!1),MA=` +`,Au=dn(` +`,!1),pu="\r",ac=dn("\r",!1),ve=0,Nt=0,lc=[{line:1,column:1}],Ni=0,io=[],Rt=0,xn;if("startRule"in e){if(!(e.startRule in s))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');a=s[e.startRule]}function ca(){return t.substring(Nt,ve)}function ji(){return Ua(Nt,ve)}function Oi(ee,Ie){throw Ie=Ie!==void 0?Ie:Ua(Nt,ve),gf([La(ee)],t.substring(Nt,ve),Ie)}function Oa(ee,Ie){throw Ie=Ie!==void 0?Ie:Ua(Nt,ve),Ha(ee,Ie)}function dn(ee,Ie){return{type:"literal",text:ee,ignoreCase:Ie}}function Jn(ee,Ie,Oe){return{type:"class",parts:ee,inverted:Ie,ignoreCase:Oe}}function hu(){return{type:"any"}}function Ch(){return{type:"end"}}function La(ee){return{type:"other",description:ee}}function Ma(ee){var Ie=lc[ee],Oe;if(Ie)return Ie;for(Oe=ee-1;!lc[Oe];)Oe--;for(Ie=lc[Oe],Ie={line:Ie.line,column:Ie.column};OeNi&&(Ni=ve,io=[]),io.push(ee))}function Ha(ee,Ie){return new Fd(ee,null,null,Ie)}function gf(ee,Ie,Oe){return new Fd(Fd.buildMessage(ee,Ie),ee,Ie,Oe)}function cc(){var ee;return ee=_A(),ee}function wn(){var ee,Ie,Oe;for(ee=ve,Ie=[],Oe=ua();Oe!==r;)Ie.push(Oe),Oe=ua();return Ie!==r&&(Nt=ee,Ie=n(Ie)),ee=Ie,ee}function ua(){var ee,Ie,Oe,ht,mt;return ee=ve,Ie=vl(),Ie!==r?(t.charCodeAt(ve)===45?(Oe=c,ve++):(Oe=r,Rt===0&&Xe(f)),Oe!==r?(ht=Qn(),ht!==r?(mt=fa(),mt!==r?(Nt=ee,Ie=p(mt),ee=Ie):(ve=ee,ee=r)):(ve=ee,ee=r)):(ve=ee,ee=r)):(ve=ee,ee=r),ee}function _A(){var ee,Ie,Oe;for(ee=ve,Ie=[],Oe=UA();Oe!==r;)Ie.push(Oe),Oe=UA();return Ie!==r&&(Nt=ee,Ie=h(Ie)),ee=Ie,ee}function UA(){var ee,Ie,Oe,ht,mt,Dt,tr,fn,ai;if(ee=ve,Ie=Qn(),Ie===r&&(Ie=null),Ie!==r){if(Oe=ve,t.charCodeAt(ve)===35?(ht=E,ve++):(ht=r,Rt===0&&Xe(C)),ht!==r){if(mt=[],Dt=ve,tr=ve,Rt++,fn=st(),Rt--,fn===r?tr=void 0:(ve=tr,tr=r),tr!==r?(t.length>ve?(fn=t.charAt(ve),ve++):(fn=r,Rt===0&&Xe(S)),fn!==r?(tr=[tr,fn],Dt=tr):(ve=Dt,Dt=r)):(ve=Dt,Dt=r),Dt!==r)for(;Dt!==r;)mt.push(Dt),Dt=ve,tr=ve,Rt++,fn=st(),Rt--,fn===r?tr=void 0:(ve=tr,tr=r),tr!==r?(t.length>ve?(fn=t.charAt(ve),ve++):(fn=r,Rt===0&&Xe(S)),fn!==r?(tr=[tr,fn],Dt=tr):(ve=Dt,Dt=r)):(ve=Dt,Dt=r);else mt=r;mt!==r?(ht=[ht,mt],Oe=ht):(ve=Oe,Oe=r)}else ve=Oe,Oe=r;if(Oe===r&&(Oe=null),Oe!==r){if(ht=[],mt=Je(),mt!==r)for(;mt!==r;)ht.push(mt),mt=Je();else ht=r;ht!==r?(Nt=ee,Ie=P(),ee=Ie):(ve=ee,ee=r)}else ve=ee,ee=r}else ve=ee,ee=r;if(ee===r&&(ee=ve,Ie=vl(),Ie!==r?(Oe=ja(),Oe!==r?(ht=Qn(),ht===r&&(ht=null),ht!==r?(t.charCodeAt(ve)===58?(mt=I,ve++):(mt=r,Rt===0&&Xe(R)),mt!==r?(Dt=Qn(),Dt===r&&(Dt=null),Dt!==r?(tr=fa(),tr!==r?(Nt=ee,Ie=N(Oe,tr),ee=Ie):(ve=ee,ee=r)):(ve=ee,ee=r)):(ve=ee,ee=r)):(ve=ee,ee=r)):(ve=ee,ee=r)):(ve=ee,ee=r),ee===r&&(ee=ve,Ie=vl(),Ie!==r?(Oe=ns(),Oe!==r?(ht=Qn(),ht===r&&(ht=null),ht!==r?(t.charCodeAt(ve)===58?(mt=I,ve++):(mt=r,Rt===0&&Xe(R)),mt!==r?(Dt=Qn(),Dt===r&&(Dt=null),Dt!==r?(tr=fa(),tr!==r?(Nt=ee,Ie=N(Oe,tr),ee=Ie):(ve=ee,ee=r)):(ve=ee,ee=r)):(ve=ee,ee=r)):(ve=ee,ee=r)):(ve=ee,ee=r)):(ve=ee,ee=r),ee===r))){if(ee=ve,Ie=vl(),Ie!==r)if(Oe=ns(),Oe!==r)if(ht=Qn(),ht!==r)if(mt=gu(),mt!==r){if(Dt=[],tr=Je(),tr!==r)for(;tr!==r;)Dt.push(tr),tr=Je();else Dt=r;Dt!==r?(Nt=ee,Ie=N(Oe,mt),ee=Ie):(ve=ee,ee=r)}else ve=ee,ee=r;else ve=ee,ee=r;else ve=ee,ee=r;else ve=ee,ee=r;if(ee===r)if(ee=ve,Ie=vl(),Ie!==r)if(Oe=ns(),Oe!==r){if(ht=[],mt=ve,Dt=Qn(),Dt===r&&(Dt=null),Dt!==r?(t.charCodeAt(ve)===44?(tr=U,ve++):(tr=r,Rt===0&&Xe(W)),tr!==r?(fn=Qn(),fn===r&&(fn=null),fn!==r?(ai=ns(),ai!==r?(Nt=mt,Dt=te(Oe,ai),mt=Dt):(ve=mt,mt=r)):(ve=mt,mt=r)):(ve=mt,mt=r)):(ve=mt,mt=r),mt!==r)for(;mt!==r;)ht.push(mt),mt=ve,Dt=Qn(),Dt===r&&(Dt=null),Dt!==r?(t.charCodeAt(ve)===44?(tr=U,ve++):(tr=r,Rt===0&&Xe(W)),tr!==r?(fn=Qn(),fn===r&&(fn=null),fn!==r?(ai=ns(),ai!==r?(Nt=mt,Dt=te(Oe,ai),mt=Dt):(ve=mt,mt=r)):(ve=mt,mt=r)):(ve=mt,mt=r)):(ve=mt,mt=r);else ht=r;ht!==r?(mt=Qn(),mt===r&&(mt=null),mt!==r?(t.charCodeAt(ve)===58?(Dt=I,ve++):(Dt=r,Rt===0&&Xe(R)),Dt!==r?(tr=Qn(),tr===r&&(tr=null),tr!==r?(fn=fa(),fn!==r?(Nt=ee,Ie=ie(Oe,ht,fn),ee=Ie):(ve=ee,ee=r)):(ve=ee,ee=r)):(ve=ee,ee=r)):(ve=ee,ee=r)):(ve=ee,ee=r)}else ve=ee,ee=r;else ve=ee,ee=r}return ee}function fa(){var ee,Ie,Oe,ht,mt,Dt,tr;if(ee=ve,Ie=ve,Rt++,Oe=ve,ht=st(),ht!==r?(mt=Mt(),mt!==r?(t.charCodeAt(ve)===45?(Dt=c,ve++):(Dt=r,Rt===0&&Xe(f)),Dt!==r?(tr=Qn(),tr!==r?(ht=[ht,mt,Dt,tr],Oe=ht):(ve=Oe,Oe=r)):(ve=Oe,Oe=r)):(ve=Oe,Oe=r)):(ve=Oe,Oe=r),Rt--,Oe!==r?(ve=Ie,Ie=void 0):Ie=r,Ie!==r?(Oe=Je(),Oe!==r?(ht=kn(),ht!==r?(mt=wn(),mt!==r?(Dt=Aa(),Dt!==r?(Nt=ee,Ie=Ae(mt),ee=Ie):(ve=ee,ee=r)):(ve=ee,ee=r)):(ve=ee,ee=r)):(ve=ee,ee=r)):(ve=ee,ee=r),ee===r&&(ee=ve,Ie=st(),Ie!==r?(Oe=kn(),Oe!==r?(ht=_A(),ht!==r?(mt=Aa(),mt!==r?(Nt=ee,Ie=Ae(ht),ee=Ie):(ve=ee,ee=r)):(ve=ee,ee=r)):(ve=ee,ee=r)):(ve=ee,ee=r),ee===r))if(ee=ve,Ie=uc(),Ie!==r){if(Oe=[],ht=Je(),ht!==r)for(;ht!==r;)Oe.push(ht),ht=Je();else Oe=r;Oe!==r?(Nt=ee,Ie=ce(Ie),ee=Ie):(ve=ee,ee=r)}else ve=ee,ee=r;return ee}function vl(){var ee,Ie,Oe;for(Rt++,ee=ve,Ie=[],t.charCodeAt(ve)===32?(Oe=pe,ve++):(Oe=r,Rt===0&&Xe(Be));Oe!==r;)Ie.push(Oe),t.charCodeAt(ve)===32?(Oe=pe,ve++):(Oe=r,Rt===0&&Xe(Be));return Ie!==r?(Nt=ve,Oe=Ce(Ie),Oe?Oe=void 0:Oe=r,Oe!==r?(Ie=[Ie,Oe],ee=Ie):(ve=ee,ee=r)):(ve=ee,ee=r),Rt--,ee===r&&(Ie=r,Rt===0&&Xe(me)),ee}function Mt(){var ee,Ie,Oe;for(ee=ve,Ie=[],t.charCodeAt(ve)===32?(Oe=pe,ve++):(Oe=r,Rt===0&&Xe(Be));Oe!==r;)Ie.push(Oe),t.charCodeAt(ve)===32?(Oe=pe,ve++):(Oe=r,Rt===0&&Xe(Be));return Ie!==r?(Nt=ve,Oe=g(Ie),Oe?Oe=void 0:Oe=r,Oe!==r?(Ie=[Ie,Oe],ee=Ie):(ve=ee,ee=r)):(ve=ee,ee=r),ee}function kn(){var ee;return Nt=ve,ee=we(),ee?ee=void 0:ee=r,ee}function Aa(){var ee;return Nt=ve,ee=Ee(),ee?ee=void 0:ee=r,ee}function ja(){var ee;return ee=Sl(),ee===r&&(ee=fc()),ee}function ns(){var ee,Ie,Oe;if(ee=Sl(),ee===r){if(ee=ve,Ie=[],Oe=qa(),Oe!==r)for(;Oe!==r;)Ie.push(Oe),Oe=qa();else Ie=r;Ie!==r&&(Nt=ee,Ie=fe()),ee=Ie}return ee}function uc(){var ee;return ee=Li(),ee===r&&(ee=Cs(),ee===r&&(ee=Sl(),ee===r&&(ee=fc()))),ee}function gu(){var ee;return ee=Li(),ee===r&&(ee=Sl(),ee===r&&(ee=qa())),ee}function fc(){var ee,Ie,Oe,ht,mt,Dt;if(Rt++,ee=ve,X.test(t.charAt(ve))?(Ie=t.charAt(ve),ve++):(Ie=r,Rt===0&&Xe(De)),Ie!==r){for(Oe=[],ht=ve,mt=Qn(),mt===r&&(mt=null),mt!==r?(Re.test(t.charAt(ve))?(Dt=t.charAt(ve),ve++):(Dt=r,Rt===0&&Xe(gt)),Dt!==r?(mt=[mt,Dt],ht=mt):(ve=ht,ht=r)):(ve=ht,ht=r);ht!==r;)Oe.push(ht),ht=ve,mt=Qn(),mt===r&&(mt=null),mt!==r?(Re.test(t.charAt(ve))?(Dt=t.charAt(ve),ve++):(Dt=r,Rt===0&&Xe(gt)),Dt!==r?(mt=[mt,Dt],ht=mt):(ve=ht,ht=r)):(ve=ht,ht=r);Oe!==r?(Nt=ee,Ie=j(),ee=Ie):(ve=ee,ee=r)}else ve=ee,ee=r;return Rt--,ee===r&&(Ie=r,Rt===0&&Xe(se)),ee}function qa(){var ee,Ie,Oe,ht,mt;if(ee=ve,t.substr(ve,2)===rt?(Ie=rt,ve+=2):(Ie=r,Rt===0&&Xe(Fe)),Ie===r&&(Ie=null),Ie!==r)if(Ne.test(t.charAt(ve))?(Oe=t.charAt(ve),ve++):(Oe=r,Rt===0&&Xe(Pe)),Oe!==r){for(ht=[],Ye.test(t.charAt(ve))?(mt=t.charAt(ve),ve++):(mt=r,Rt===0&&Xe(ke));mt!==r;)ht.push(mt),Ye.test(t.charAt(ve))?(mt=t.charAt(ve),ve++):(mt=r,Rt===0&&Xe(ke));ht!==r?(Nt=ee,Ie=j(),ee=Ie):(ve=ee,ee=r)}else ve=ee,ee=r;else ve=ee,ee=r;return ee}function Li(){var ee,Ie;return ee=ve,t.substr(ve,4)===it?(Ie=it,ve+=4):(Ie=r,Rt===0&&Xe(_e)),Ie!==r&&(Nt=ee,Ie=x()),ee=Ie,ee}function Cs(){var ee,Ie;return ee=ve,t.substr(ve,4)===w?(Ie=w,ve+=4):(Ie=r,Rt===0&&Xe(b)),Ie!==r&&(Nt=ee,Ie=y()),ee=Ie,ee===r&&(ee=ve,t.substr(ve,5)===F?(Ie=F,ve+=5):(Ie=r,Rt===0&&Xe(z)),Ie!==r&&(Nt=ee,Ie=Z()),ee=Ie),ee}function Sl(){var ee,Ie,Oe,ht;return Rt++,ee=ve,t.charCodeAt(ve)===34?(Ie=oe,ve++):(Ie=r,Rt===0&&Xe(xe)),Ie!==r?(t.charCodeAt(ve)===34?(Oe=oe,ve++):(Oe=r,Rt===0&&Xe(xe)),Oe!==r?(Nt=ee,Ie=Te(),ee=Ie):(ve=ee,ee=r)):(ve=ee,ee=r),ee===r&&(ee=ve,t.charCodeAt(ve)===34?(Ie=oe,ve++):(Ie=r,Rt===0&&Xe(xe)),Ie!==r?(Oe=df(),Oe!==r?(t.charCodeAt(ve)===34?(ht=oe,ve++):(ht=r,Rt===0&&Xe(xe)),ht!==r?(Nt=ee,Ie=lt(Oe),ee=Ie):(ve=ee,ee=r)):(ve=ee,ee=r)):(ve=ee,ee=r)),Rt--,ee===r&&(Ie=r,Rt===0&&Xe($)),ee}function df(){var ee,Ie,Oe;if(ee=ve,Ie=[],Oe=Ac(),Oe!==r)for(;Oe!==r;)Ie.push(Oe),Oe=Ac();else Ie=r;return Ie!==r&&(Nt=ee,Ie=Et(Ie)),ee=Ie,ee}function Ac(){var ee,Ie,Oe,ht,mt,Dt;return qt.test(t.charAt(ve))?(ee=t.charAt(ve),ve++):(ee=r,Rt===0&&Xe(ir)),ee===r&&(ee=ve,t.substr(ve,2)===Pt?(Ie=Pt,ve+=2):(Ie=r,Rt===0&&Xe(gn)),Ie!==r&&(Nt=ee,Ie=Pr()),ee=Ie,ee===r&&(ee=ve,t.substr(ve,2)===Ir?(Ie=Ir,ve+=2):(Ie=r,Rt===0&&Xe(Nr)),Ie!==r&&(Nt=ee,Ie=nn()),ee=Ie,ee===r&&(ee=ve,t.substr(ve,2)===oi?(Ie=oi,ve+=2):(Ie=r,Rt===0&&Xe(wo)),Ie!==r&&(Nt=ee,Ie=rs()),ee=Ie,ee===r&&(ee=ve,t.substr(ve,2)===eo?(Ie=eo,ve+=2):(Ie=r,Rt===0&&Xe(Bo)),Ie!==r&&(Nt=ee,Ie=Hi()),ee=Ie,ee===r&&(ee=ve,t.substr(ve,2)===to?(Ie=to,ve+=2):(Ie=r,Rt===0&&Xe(vo)),Ie!==r&&(Nt=ee,Ie=RA()),ee=Ie,ee===r&&(ee=ve,t.substr(ve,2)===pf?(Ie=pf,ve+=2):(Ie=r,Rt===0&&Xe(Eh)),Ie!==r&&(Nt=ee,Ie=Ih()),ee=Ie,ee===r&&(ee=ve,t.substr(ve,2)===ro?(Ie=ro,ve+=2):(Ie=r,Rt===0&&Xe(jn)),Ie!==r&&(Nt=ee,Ie=Rs()),ee=Ie,ee===r&&(ee=ve,t.substr(ve,2)===no?(Ie=no,ve+=2):(Ie=r,Rt===0&&Xe(lu)),Ie!==r&&(Nt=ee,Ie=cu()),ee=Ie,ee===r&&(ee=ve,t.substr(ve,2)===uu?(Ie=uu,ve+=2):(Ie=r,Rt===0&&Xe(FA)),Ie!==r?(Oe=wi(),Oe!==r?(ht=wi(),ht!==r?(mt=wi(),mt!==r?(Dt=wi(),Dt!==r?(Nt=ee,Ie=NA(Oe,ht,mt,Dt),ee=Ie):(ve=ee,ee=r)):(ve=ee,ee=r)):(ve=ee,ee=r)):(ve=ee,ee=r)):(ve=ee,ee=r)))))))))),ee}function wi(){var ee;return aa.test(t.charAt(ve))?(ee=t.charAt(ve),ve++):(ee=r,Rt===0&&Xe(la)),ee}function Qn(){var ee,Ie;if(Rt++,ee=[],gr.test(t.charAt(ve))?(Ie=t.charAt(ve),ve++):(Ie=r,Rt===0&&Xe(So)),Ie!==r)for(;Ie!==r;)ee.push(Ie),gr.test(t.charAt(ve))?(Ie=t.charAt(ve),ve++):(Ie=r,Rt===0&&Xe(So));else ee=r;return Rt--,ee===r&&(Ie=r,Rt===0&&Xe(OA)),ee}function pc(){var ee,Ie;if(Rt++,ee=[],fu.test(t.charAt(ve))?(Ie=t.charAt(ve),ve++):(Ie=r,Rt===0&&Xe(Cr)),Ie!==r)for(;Ie!==r;)ee.push(Ie),fu.test(t.charAt(ve))?(Ie=t.charAt(ve),ve++):(Ie=r,Rt===0&&Xe(Cr));else ee=r;return Rt--,ee===r&&(Ie=r,Rt===0&&Xe(Me)),ee}function Je(){var ee,Ie,Oe,ht,mt,Dt;if(ee=ve,Ie=st(),Ie!==r){for(Oe=[],ht=ve,mt=Qn(),mt===r&&(mt=null),mt!==r?(Dt=st(),Dt!==r?(mt=[mt,Dt],ht=mt):(ve=ht,ht=r)):(ve=ht,ht=r);ht!==r;)Oe.push(ht),ht=ve,mt=Qn(),mt===r&&(mt=null),mt!==r?(Dt=st(),Dt!==r?(mt=[mt,Dt],ht=mt):(ve=ht,ht=r)):(ve=ht,ht=r);Oe!==r?(Ie=[Ie,Oe],ee=Ie):(ve=ee,ee=r)}else ve=ee,ee=r;return ee}function st(){var ee;return t.substr(ve,2)===hf?(ee=hf,ve+=2):(ee=r,Rt===0&&Xe(LA)),ee===r&&(t.charCodeAt(ve)===10?(ee=MA,ve++):(ee=r,Rt===0&&Xe(Au)),ee===r&&(t.charCodeAt(ve)===13?(ee=pu,ve++):(ee=r,Rt===0&&Xe(ac)))),ee}let St=2,lr=0;if(xn=a(),xn!==r&&ve===t.length)return xn;throw xn!==r&&ve"u"?!0:typeof t=="object"&&t!==null&&!Array.isArray(t)?Object.keys(t).every(e=>sne(t[e])):!1}function pU(t,e,r){if(t===null)return`null +`;if(typeof t=="number"||typeof t=="boolean")return`${t.toString()} +`;if(typeof t=="string")return`${nne(t)} +`;if(Array.isArray(t)){if(t.length===0)return`[] +`;let s=" ".repeat(e);return` +${t.map(n=>`${s}- ${pU(n,e+1,!1)}`).join("")}`}if(typeof t=="object"&&t){let[s,a]=t instanceof _x?[t.data,!1]:[t,!0],n=" ".repeat(e),c=Object.keys(s);a&&c.sort((p,h)=>{let E=rne.indexOf(p),C=rne.indexOf(h);return E===-1&&C===-1?ph?1:0:E!==-1&&C===-1?-1:E===-1&&C!==-1?1:E-C});let f=c.filter(p=>!sne(s[p])).map((p,h)=>{let E=s[p],C=nne(p),S=pU(E,e+1,!0),P=h>0||r?n:"",I=C.length>1024?`? ${C} +${P}:`:`${C}:`,R=S.startsWith(` +`)?S:` ${S}`;return`${P}${I}${R}`}).join(e===0?` +`:"")||` +`;return r?` +${f}`:`${f}`}throw new Error(`Unsupported value type (${t})`)}function il(t){try{let e=pU(t,0,!1);return e!==` +`?e:""}catch(e){throw e.location&&(e.message=e.message.replace(/(\.)?$/,` (line ${e.location.start.line}, column ${e.location.start.column})$1`)),e}}function rZe(t){return t.endsWith(` +`)||(t+=` +`),(0,ine.parse)(t)}function iZe(t){if(nZe.test(t))return rZe(t);let e=(0,Ux.safeLoad)(t,{schema:Ux.FAILSAFE_SCHEMA,json:!0});if(e==null)return{};if(typeof e!="object")throw new Error(`Expected an indexed object, got a ${typeof e} instead. Does your file follow Yaml's rules?`);if(Array.isArray(e))throw new Error("Expected an indexed object, got an array instead. Does your file follow Yaml's rules?");return e}function ls(t){return iZe(t)}var Ux,ine,tZe,rne,_x,nZe,one=It(()=>{Ux=et($re()),ine=et(tne()),tZe=/^(?![-?:,\][{}#&*!|>'"%@` \t\r\n]).([ \t]*(?![,\][{}:# \t\r\n]).)*$/,rne=["__metadata","version","resolution","dependencies","peerDependencies","dependenciesMeta","peerDependenciesMeta","binaries"],_x=class{constructor(e){this.data=e}};il.PreserveOrdering=_x;nZe=/^(#.*(\r?\n))*?#\s+yarn\s+lockfile\s+v1\r?\n/i});var Z2={};Vt(Z2,{parseResolution:()=>bx,parseShell:()=>vx,parseSyml:()=>ls,stringifyArgument:()=>$_,stringifyArgumentSegment:()=>eU,stringifyArithmeticExpression:()=>Dx,stringifyCommand:()=>X_,stringifyCommandChain:()=>AE,stringifyCommandChainThen:()=>Z_,stringifyCommandLine:()=>Sx,stringifyCommandLineThen:()=>z_,stringifyEnvSegment:()=>Bx,stringifyRedirectArgument:()=>G2,stringifyResolution:()=>Px,stringifyShell:()=>fE,stringifyShellLine:()=>fE,stringifySyml:()=>il,stringifyValueArgument:()=>Sd});var Bc=It(()=>{ste();cte();one()});var lne=L((S9t,hU)=>{"use strict";var sZe=t=>{let e=!1,r=!1,s=!1;for(let a=0;a{if(!(typeof t=="string"||Array.isArray(t)))throw new TypeError("Expected the input to be `string | string[]`");e=Object.assign({pascalCase:!1},e);let r=a=>e.pascalCase?a.charAt(0).toUpperCase()+a.slice(1):a;return Array.isArray(t)?t=t.map(a=>a.trim()).filter(a=>a.length).join("-"):t=t.trim(),t.length===0?"":t.length===1?e.pascalCase?t.toUpperCase():t.toLowerCase():(t!==t.toLowerCase()&&(t=sZe(t)),t=t.replace(/^[_.\- ]+/,"").toLowerCase().replace(/[_.\- ]+(\w|$)/g,(a,n)=>n.toUpperCase()).replace(/\d+(\w|$)/g,a=>a.toUpperCase()),r(t))};hU.exports=ane;hU.exports.default=ane});var cne=L((D9t,oZe)=>{oZe.exports=[{name:"Agola CI",constant:"AGOLA",env:"AGOLA_GIT_REF",pr:"AGOLA_PULL_REQUEST_ID"},{name:"Appcircle",constant:"APPCIRCLE",env:"AC_APPCIRCLE"},{name:"AppVeyor",constant:"APPVEYOR",env:"APPVEYOR",pr:"APPVEYOR_PULL_REQUEST_NUMBER"},{name:"AWS CodeBuild",constant:"CODEBUILD",env:"CODEBUILD_BUILD_ARN"},{name:"Azure Pipelines",constant:"AZURE_PIPELINES",env:"TF_BUILD",pr:{BUILD_REASON:"PullRequest"}},{name:"Bamboo",constant:"BAMBOO",env:"bamboo_planKey"},{name:"Bitbucket Pipelines",constant:"BITBUCKET",env:"BITBUCKET_COMMIT",pr:"BITBUCKET_PR_ID"},{name:"Bitrise",constant:"BITRISE",env:"BITRISE_IO",pr:"BITRISE_PULL_REQUEST"},{name:"Buddy",constant:"BUDDY",env:"BUDDY_WORKSPACE_ID",pr:"BUDDY_EXECUTION_PULL_REQUEST_ID"},{name:"Buildkite",constant:"BUILDKITE",env:"BUILDKITE",pr:{env:"BUILDKITE_PULL_REQUEST",ne:"false"}},{name:"CircleCI",constant:"CIRCLE",env:"CIRCLECI",pr:"CIRCLE_PULL_REQUEST"},{name:"Cirrus CI",constant:"CIRRUS",env:"CIRRUS_CI",pr:"CIRRUS_PR"},{name:"Codefresh",constant:"CODEFRESH",env:"CF_BUILD_ID",pr:{any:["CF_PULL_REQUEST_NUMBER","CF_PULL_REQUEST_ID"]}},{name:"Codemagic",constant:"CODEMAGIC",env:"CM_BUILD_ID",pr:"CM_PULL_REQUEST"},{name:"Codeship",constant:"CODESHIP",env:{CI_NAME:"codeship"}},{name:"Drone",constant:"DRONE",env:"DRONE",pr:{DRONE_BUILD_EVENT:"pull_request"}},{name:"dsari",constant:"DSARI",env:"DSARI"},{name:"Earthly",constant:"EARTHLY",env:"EARTHLY_CI"},{name:"Expo Application Services",constant:"EAS",env:"EAS_BUILD"},{name:"Gerrit",constant:"GERRIT",env:"GERRIT_PROJECT"},{name:"Gitea Actions",constant:"GITEA_ACTIONS",env:"GITEA_ACTIONS"},{name:"GitHub Actions",constant:"GITHUB_ACTIONS",env:"GITHUB_ACTIONS",pr:{GITHUB_EVENT_NAME:"pull_request"}},{name:"GitLab CI",constant:"GITLAB",env:"GITLAB_CI",pr:"CI_MERGE_REQUEST_ID"},{name:"GoCD",constant:"GOCD",env:"GO_PIPELINE_LABEL"},{name:"Google Cloud Build",constant:"GOOGLE_CLOUD_BUILD",env:"BUILDER_OUTPUT"},{name:"Harness CI",constant:"HARNESS",env:"HARNESS_BUILD_ID"},{name:"Heroku",constant:"HEROKU",env:{env:"NODE",includes:"/app/.heroku/node/bin/node"}},{name:"Hudson",constant:"HUDSON",env:"HUDSON_URL"},{name:"Jenkins",constant:"JENKINS",env:["JENKINS_URL","BUILD_ID"],pr:{any:["ghprbPullId","CHANGE_ID"]}},{name:"LayerCI",constant:"LAYERCI",env:"LAYERCI",pr:"LAYERCI_PULL_REQUEST"},{name:"Magnum CI",constant:"MAGNUM",env:"MAGNUM"},{name:"Netlify CI",constant:"NETLIFY",env:"NETLIFY",pr:{env:"PULL_REQUEST",ne:"false"}},{name:"Nevercode",constant:"NEVERCODE",env:"NEVERCODE",pr:{env:"NEVERCODE_PULL_REQUEST",ne:"false"}},{name:"Prow",constant:"PROW",env:"PROW_JOB_ID"},{name:"ReleaseHub",constant:"RELEASEHUB",env:"RELEASE_BUILD_ID"},{name:"Render",constant:"RENDER",env:"RENDER",pr:{IS_PULL_REQUEST:"true"}},{name:"Sail CI",constant:"SAIL",env:"SAILCI",pr:"SAIL_PULL_REQUEST_NUMBER"},{name:"Screwdriver",constant:"SCREWDRIVER",env:"SCREWDRIVER",pr:{env:"SD_PULL_REQUEST",ne:"false"}},{name:"Semaphore",constant:"SEMAPHORE",env:"SEMAPHORE",pr:"PULL_REQUEST_NUMBER"},{name:"Sourcehut",constant:"SOURCEHUT",env:{CI_NAME:"sourcehut"}},{name:"Strider CD",constant:"STRIDER",env:"STRIDER"},{name:"TaskCluster",constant:"TASKCLUSTER",env:["TASK_ID","RUN_ID"]},{name:"TeamCity",constant:"TEAMCITY",env:"TEAMCITY_VERSION"},{name:"Travis CI",constant:"TRAVIS",env:"TRAVIS",pr:{env:"TRAVIS_PULL_REQUEST",ne:"false"}},{name:"Vela",constant:"VELA",env:"VELA",pr:{VELA_PULL_REQUEST:"1"}},{name:"Vercel",constant:"VERCEL",env:{any:["NOW_BUILDER","VERCEL"]},pr:"VERCEL_GIT_PULL_REQUEST_ID"},{name:"Visual Studio App Center",constant:"APPCENTER",env:"APPCENTER_BUILD_ID"},{name:"Woodpecker",constant:"WOODPECKER",env:{CI:"woodpecker"},pr:{CI_BUILD_EVENT:"pull_request"}},{name:"Xcode Cloud",constant:"XCODE_CLOUD",env:"CI_XCODE_PROJECT",pr:"CI_PULL_REQUEST_NUMBER"},{name:"Xcode Server",constant:"XCODE_SERVER",env:"XCS"}]});var Nd=L(_l=>{"use strict";var fne=cne(),bs=process.env;Object.defineProperty(_l,"_vendors",{value:fne.map(function(t){return t.constant})});_l.name=null;_l.isPR=null;fne.forEach(function(t){let r=(Array.isArray(t.env)?t.env:[t.env]).every(function(s){return une(s)});if(_l[t.constant]=r,!!r)switch(_l.name=t.name,typeof t.pr){case"string":_l.isPR=!!bs[t.pr];break;case"object":"env"in t.pr?_l.isPR=t.pr.env in bs&&bs[t.pr.env]!==t.pr.ne:"any"in t.pr?_l.isPR=t.pr.any.some(function(s){return!!bs[s]}):_l.isPR=une(t.pr);break;default:_l.isPR=null}});_l.isCI=!!(bs.CI!=="false"&&(bs.BUILD_ID||bs.BUILD_NUMBER||bs.CI||bs.CI_APP_ID||bs.CI_BUILD_ID||bs.CI_BUILD_NUMBER||bs.CI_NAME||bs.CONTINUOUS_INTEGRATION||bs.RUN_ID||_l.name));function une(t){return typeof t=="string"?!!bs[t]:"env"in t?bs[t.env]&&bs[t.env].includes(t.includes):"any"in t?t.any.some(function(e){return!!bs[e]}):Object.keys(t).every(function(e){return bs[e]===t[e]})}});var ei,En,Od,gU,Hx,Ane,dU,mU,jx=It(()=>{(function(t){t.StartOfInput="\0",t.EndOfInput="",t.EndOfPartialInput=""})(ei||(ei={}));(function(t){t[t.InitialNode=0]="InitialNode",t[t.SuccessNode=1]="SuccessNode",t[t.ErrorNode=2]="ErrorNode",t[t.CustomNode=3]="CustomNode"})(En||(En={}));Od=-1,gU=/^(-h|--help)(?:=([0-9]+))?$/,Hx=/^(--[a-z]+(?:-[a-z]+)*|-[a-zA-Z]+)$/,Ane=/^-[a-zA-Z]{2,}$/,dU=/^([^=]+)=([\s\S]*)$/,mU=process.env.DEBUG_CLI==="1"});var nt,IE,qx,yU,Gx=It(()=>{jx();nt=class extends Error{constructor(e){super(e),this.clipanion={type:"usage"},this.name="UsageError"}},IE=class extends Error{constructor(e,r){if(super(),this.input=e,this.candidates=r,this.clipanion={type:"none"},this.name="UnknownSyntaxError",this.candidates.length===0)this.message="Command not found, but we're not sure what's the alternative.";else if(this.candidates.every(s=>s.reason!==null&&s.reason===r[0].reason)){let[{reason:s}]=this.candidates;this.message=`${s} + +${this.candidates.map(({usage:a})=>`$ ${a}`).join(` +`)}`}else if(this.candidates.length===1){let[{usage:s}]=this.candidates;this.message=`Command not found; did you mean: + +$ ${s} +${yU(e)}`}else this.message=`Command not found; did you mean one of: + +${this.candidates.map(({usage:s},a)=>`${`${a}.`.padStart(4)} ${s}`).join(` +`)} + +${yU(e)}`}},qx=class extends Error{constructor(e,r){super(),this.input=e,this.usages=r,this.clipanion={type:"none"},this.name="AmbiguousSyntaxError",this.message=`Cannot find which to pick amongst the following alternatives: + +${this.usages.map((s,a)=>`${`${a}.`.padStart(4)} ${s}`).join(` +`)} + +${yU(e)}`}},yU=t=>`While running ${t.filter(e=>e!==ei.EndOfInput&&e!==ei.EndOfPartialInput).map(e=>{let r=JSON.stringify(e);return e.match(/\s/)||e.length===0||r!==`"${e}"`?r:e}).join(" ")}`});function aZe(t){let e=t.split(` +`),r=e.filter(a=>a.match(/\S/)),s=r.length>0?r.reduce((a,n)=>Math.min(a,n.length-n.trimStart().length),Number.MAX_VALUE):0;return e.map(a=>a.slice(s).trimRight()).join(` +`)}function qo(t,{format:e,paragraphs:r}){return t=t.replace(/\r\n?/g,` +`),t=aZe(t),t=t.replace(/^\n+|\n+$/g,""),t=t.replace(/^(\s*)-([^\n]*?)\n+/gm,`$1-$2 + +`),t=t.replace(/\n(\n)?\n*/g,(s,a)=>a||" "),r&&(t=t.split(/\n/).map(s=>{let a=s.match(/^\s*[*-][\t ]+(.*)/);if(!a)return s.match(/(.{1,80})(?: |$)/g).join(` +`);let n=s.length-s.trimStart().length;return a[1].match(new RegExp(`(.{1,${78-n}})(?: |$)`,"g")).map((c,f)=>" ".repeat(n)+(f===0?"- ":" ")+c).join(` +`)}).join(` + +`)),t=t.replace(/(`+)((?:.|[\n])*?)\1/g,(s,a,n)=>e.code(a+n+a)),t=t.replace(/(\*\*)((?:.|[\n])*?)\1/g,(s,a,n)=>e.bold(a+n+a)),t?`${t} +`:""}var EU,pne,hne,IU=It(()=>{EU=Array(80).fill("\u2501");for(let t=0;t<=24;++t)EU[EU.length-t]=`\x1B[38;5;${232+t}m\u2501`;pne={header:t=>`\x1B[1m\u2501\u2501\u2501 ${t}${t.length<75?` ${EU.slice(t.length+5).join("")}`:":"}\x1B[0m`,bold:t=>`\x1B[1m${t}\x1B[22m`,error:t=>`\x1B[31m\x1B[1m${t}\x1B[22m\x1B[39m`,code:t=>`\x1B[36m${t}\x1B[39m`},hne={header:t=>t,bold:t=>t,error:t=>t,code:t=>t}});function Ea(t){return{...t,[X2]:!0}}function Gf(t,e){return typeof t>"u"?[t,e]:typeof t=="object"&&t!==null&&!Array.isArray(t)?[void 0,t]:[t,e]}function Wx(t,{mergeName:e=!1}={}){let r=t.match(/^([^:]+): (.*)$/m);if(!r)return"validation failed";let[,s,a]=r;return e&&(a=a[0].toLowerCase()+a.slice(1)),a=s!=="."||!e?`${s.replace(/^\.(\[|$)/,"$1")}: ${a}`:`: ${a}`,a}function $2(t,e){return e.length===1?new nt(`${t}${Wx(e[0],{mergeName:!0})}`):new nt(`${t}: +${e.map(r=>` +- ${Wx(r)}`).join("")}`)}function Ld(t,e,r){if(typeof r>"u")return e;let s=[],a=[],n=f=>{let p=e;return e=f,n.bind(null,p)};if(!r(e,{errors:s,coercions:a,coercion:n}))throw $2(`Invalid value for ${t}`,s);for(let[,f]of a)f();return e}var X2,Bp=It(()=>{Gx();X2=Symbol("clipanion/isOption")});var Ia={};Vt(Ia,{KeyRelationship:()=>Wf,TypeAssertionError:()=>c0,applyCascade:()=>rB,as:()=>DZe,assert:()=>BZe,assertWithErrors:()=>vZe,cascade:()=>Jx,fn:()=>bZe,hasAtLeastOneKey:()=>bU,hasExactLength:()=>Ene,hasForbiddenKeys:()=>YZe,hasKeyRelationship:()=>iB,hasMaxLength:()=>xZe,hasMinLength:()=>PZe,hasMutuallyExclusiveKeys:()=>VZe,hasRequiredKeys:()=>WZe,hasUniqueItems:()=>kZe,isArray:()=>Yx,isAtLeast:()=>SU,isAtMost:()=>RZe,isBase64:()=>HZe,isBoolean:()=>gZe,isDate:()=>mZe,isDict:()=>IZe,isEnum:()=>Ao,isHexColor:()=>UZe,isISO8601:()=>_Ze,isInExclusiveRange:()=>NZe,isInInclusiveRange:()=>FZe,isInstanceOf:()=>wZe,isInteger:()=>DU,isJSON:()=>jZe,isLiteral:()=>dne,isLowerCase:()=>OZe,isMap:()=>EZe,isNegative:()=>QZe,isNullable:()=>GZe,isNumber:()=>BU,isObject:()=>mne,isOneOf:()=>vU,isOptional:()=>qZe,isPartial:()=>CZe,isPayload:()=>dZe,isPositive:()=>TZe,isRecord:()=>Kx,isSet:()=>yZe,isString:()=>wE,isTuple:()=>Vx,isUUID4:()=>MZe,isUnknown:()=>wU,isUpperCase:()=>LZe,makeTrait:()=>yne,makeValidator:()=>Wr,matchesRegExp:()=>tB,softAssert:()=>SZe});function ti(t){return t===null?"null":t===void 0?"undefined":t===""?"an empty string":typeof t=="symbol"?`<${t.toString()}>`:Array.isArray(t)?"an array":JSON.stringify(t)}function CE(t,e){if(t.length===0)return"nothing";if(t.length===1)return ti(t[0]);let r=t.slice(0,-1),s=t[t.length-1],a=t.length>2?`, ${e} `:` ${e} `;return`${r.map(n=>ti(n)).join(", ")}${a}${ti(s)}`}function l0(t,e){var r,s,a;return typeof e=="number"?`${(r=t?.p)!==null&&r!==void 0?r:"."}[${e}]`:lZe.test(e)?`${(s=t?.p)!==null&&s!==void 0?s:""}.${e}`:`${(a=t?.p)!==null&&a!==void 0?a:"."}[${JSON.stringify(e)}]`}function CU(t,e,r){return t===1?e:r}function mr({errors:t,p:e}={},r){return t?.push(`${e??"."}: ${r}`),!1}function pZe(t,e){return r=>{t[e]=r}}function Yf(t,e){return r=>{let s=t[e];return t[e]=r,Yf(t,e).bind(null,s)}}function eB(t,e,r){let s=()=>(t(r()),a),a=()=>(t(e),s);return s}function wU(){return Wr({test:(t,e)=>!0})}function dne(t){return Wr({test:(e,r)=>e!==t?mr(r,`Expected ${ti(t)} (got ${ti(e)})`):!0})}function wE(){return Wr({test:(t,e)=>typeof t!="string"?mr(e,`Expected a string (got ${ti(t)})`):!0})}function Ao(t){let e=Array.isArray(t)?t:Object.values(t),r=e.every(a=>typeof a=="string"||typeof a=="number"),s=new Set(e);return s.size===1?dne([...s][0]):Wr({test:(a,n)=>s.has(a)?!0:r?mr(n,`Expected one of ${CE(e,"or")} (got ${ti(a)})`):mr(n,`Expected a valid enumeration value (got ${ti(a)})`)})}function gZe(){return Wr({test:(t,e)=>{var r;if(typeof t!="boolean"){if(typeof e?.coercions<"u"){if(typeof e?.coercion>"u")return mr(e,"Unbound coercion result");let s=hZe.get(t);if(typeof s<"u")return e.coercions.push([(r=e.p)!==null&&r!==void 0?r:".",e.coercion.bind(null,s)]),!0}return mr(e,`Expected a boolean (got ${ti(t)})`)}return!0}})}function BU(){return Wr({test:(t,e)=>{var r;if(typeof t!="number"){if(typeof e?.coercions<"u"){if(typeof e?.coercion>"u")return mr(e,"Unbound coercion result");let s;if(typeof t=="string"){let a;try{a=JSON.parse(t)}catch{}if(typeof a=="number")if(JSON.stringify(a)===t)s=a;else return mr(e,`Received a number that can't be safely represented by the runtime (${t})`)}if(typeof s<"u")return e.coercions.push([(r=e.p)!==null&&r!==void 0?r:".",e.coercion.bind(null,s)]),!0}return mr(e,`Expected a number (got ${ti(t)})`)}return!0}})}function dZe(t){return Wr({test:(e,r)=>{var s;if(typeof r?.coercions>"u")return mr(r,"The isPayload predicate can only be used with coercion enabled");if(typeof r.coercion>"u")return mr(r,"Unbound coercion result");if(typeof e!="string")return mr(r,`Expected a string (got ${ti(e)})`);let a;try{a=JSON.parse(e)}catch{return mr(r,`Expected a JSON string (got ${ti(e)})`)}let n={value:a};return t(a,Object.assign(Object.assign({},r),{coercion:Yf(n,"value")}))?(r.coercions.push([(s=r.p)!==null&&s!==void 0?s:".",r.coercion.bind(null,n.value)]),!0):!1}})}function mZe(){return Wr({test:(t,e)=>{var r;if(!(t instanceof Date)){if(typeof e?.coercions<"u"){if(typeof e?.coercion>"u")return mr(e,"Unbound coercion result");let s;if(typeof t=="string"&&gne.test(t))s=new Date(t);else{let a;if(typeof t=="string"){let n;try{n=JSON.parse(t)}catch{}typeof n=="number"&&(a=n)}else typeof t=="number"&&(a=t);if(typeof a<"u")if(Number.isSafeInteger(a)||!Number.isSafeInteger(a*1e3))s=new Date(a*1e3);else return mr(e,`Received a timestamp that can't be safely represented by the runtime (${t})`)}if(typeof s<"u")return e.coercions.push([(r=e.p)!==null&&r!==void 0?r:".",e.coercion.bind(null,s)]),!0}return mr(e,`Expected a date (got ${ti(t)})`)}return!0}})}function Yx(t,{delimiter:e}={}){return Wr({test:(r,s)=>{var a;let n=r;if(typeof r=="string"&&typeof e<"u"&&typeof s?.coercions<"u"){if(typeof s?.coercion>"u")return mr(s,"Unbound coercion result");r=r.split(e)}if(!Array.isArray(r))return mr(s,`Expected an array (got ${ti(r)})`);let c=!0;for(let f=0,p=r.length;f{var n,c;if(Object.getPrototypeOf(s).toString()==="[object Set]")if(typeof a?.coercions<"u"){if(typeof a?.coercion>"u")return mr(a,"Unbound coercion result");let f=[...s],p=[...s];if(!r(p,Object.assign(Object.assign({},a),{coercion:void 0})))return!1;let h=()=>p.some((E,C)=>E!==f[C])?new Set(p):s;return a.coercions.push([(n=a.p)!==null&&n!==void 0?n:".",eB(a.coercion,s,h)]),!0}else{let f=!0;for(let p of s)if(f=t(p,Object.assign({},a))&&f,!f&&a?.errors==null)break;return f}if(typeof a?.coercions<"u"){if(typeof a?.coercion>"u")return mr(a,"Unbound coercion result");let f={value:s};return r(s,Object.assign(Object.assign({},a),{coercion:Yf(f,"value")}))?(a.coercions.push([(c=a.p)!==null&&c!==void 0?c:".",eB(a.coercion,s,()=>new Set(f.value))]),!0):!1}return mr(a,`Expected a set (got ${ti(s)})`)}})}function EZe(t,e){let r=Yx(Vx([t,e])),s=Kx(e,{keys:t});return Wr({test:(a,n)=>{var c,f,p;if(Object.getPrototypeOf(a).toString()==="[object Map]")if(typeof n?.coercions<"u"){if(typeof n?.coercion>"u")return mr(n,"Unbound coercion result");let h=[...a],E=[...a];if(!r(E,Object.assign(Object.assign({},n),{coercion:void 0})))return!1;let C=()=>E.some((S,P)=>S[0]!==h[P][0]||S[1]!==h[P][1])?new Map(E):a;return n.coercions.push([(c=n.p)!==null&&c!==void 0?c:".",eB(n.coercion,a,C)]),!0}else{let h=!0;for(let[E,C]of a)if(h=t(E,Object.assign({},n))&&h,!h&&n?.errors==null||(h=e(C,Object.assign(Object.assign({},n),{p:l0(n,E)}))&&h,!h&&n?.errors==null))break;return h}if(typeof n?.coercions<"u"){if(typeof n?.coercion>"u")return mr(n,"Unbound coercion result");let h={value:a};return Array.isArray(a)?r(a,Object.assign(Object.assign({},n),{coercion:void 0}))?(n.coercions.push([(f=n.p)!==null&&f!==void 0?f:".",eB(n.coercion,a,()=>new Map(h.value))]),!0):!1:s(a,Object.assign(Object.assign({},n),{coercion:Yf(h,"value")}))?(n.coercions.push([(p=n.p)!==null&&p!==void 0?p:".",eB(n.coercion,a,()=>new Map(Object.entries(h.value)))]),!0):!1}return mr(n,`Expected a map (got ${ti(a)})`)}})}function Vx(t,{delimiter:e}={}){let r=Ene(t.length);return Wr({test:(s,a)=>{var n;if(typeof s=="string"&&typeof e<"u"&&typeof a?.coercions<"u"){if(typeof a?.coercion>"u")return mr(a,"Unbound coercion result");s=s.split(e),a.coercions.push([(n=a.p)!==null&&n!==void 0?n:".",a.coercion.bind(null,s)])}if(!Array.isArray(s))return mr(a,`Expected a tuple (got ${ti(s)})`);let c=r(s,Object.assign({},a));for(let f=0,p=s.length;f{var n;if(Array.isArray(s)&&typeof a?.coercions<"u")return typeof a?.coercion>"u"?mr(a,"Unbound coercion result"):r(s,Object.assign(Object.assign({},a),{coercion:void 0}))?(s=Object.fromEntries(s),a.coercions.push([(n=a.p)!==null&&n!==void 0?n:".",a.coercion.bind(null,s)]),!0):!1;if(typeof s!="object"||s===null)return mr(a,`Expected an object (got ${ti(s)})`);let c=Object.keys(s),f=!0;for(let p=0,h=c.length;p{if(typeof a!="object"||a===null)return mr(n,`Expected an object (got ${ti(a)})`);let c=new Set([...r,...Object.keys(a)]),f={},p=!0;for(let h of c){if(h==="constructor"||h==="__proto__")p=mr(Object.assign(Object.assign({},n),{p:l0(n,h)}),"Unsafe property name");else{let E=Object.prototype.hasOwnProperty.call(t,h)?t[h]:void 0,C=Object.prototype.hasOwnProperty.call(a,h)?a[h]:void 0;typeof E<"u"?p=E(C,Object.assign(Object.assign({},n),{p:l0(n,h),coercion:Yf(a,h)}))&&p:e===null?p=mr(Object.assign(Object.assign({},n),{p:l0(n,h)}),`Extraneous property (got ${ti(C)})`):Object.defineProperty(f,h,{enumerable:!0,get:()=>C,set:pZe(a,h)})}if(!p&&n?.errors==null)break}return e!==null&&(p||n?.errors!=null)&&(p=e(f,n)&&p),p}});return Object.assign(s,{properties:t})}function CZe(t){return mne(t,{extra:Kx(wU())})}function yne(t){return()=>t}function Wr({test:t}){return yne(t)()}function BZe(t,e){if(!e(t))throw new c0}function vZe(t,e){let r=[];if(!e(t,{errors:r}))throw new c0({errors:r})}function SZe(t,e){}function DZe(t,e,{coerce:r=!1,errors:s,throw:a}={}){let n=s?[]:void 0;if(!r){if(e(t,{errors:n}))return a?t:{value:t,errors:void 0};if(a)throw new c0({errors:n});return{value:void 0,errors:n??!0}}let c={value:t},f=Yf(c,"value"),p=[];if(!e(t,{errors:n,coercion:f,coercions:p})){if(a)throw new c0({errors:n});return{value:void 0,errors:n??!0}}for(let[,h]of p)h();return a?c.value:{value:c.value,errors:void 0}}function bZe(t,e){let r=Vx(t);return(...s)=>{if(!r(s))throw new c0;return e(...s)}}function PZe(t){return Wr({test:(e,r)=>e.length>=t?!0:mr(r,`Expected to have a length of at least ${t} elements (got ${e.length})`)})}function xZe(t){return Wr({test:(e,r)=>e.length<=t?!0:mr(r,`Expected to have a length of at most ${t} elements (got ${e.length})`)})}function Ene(t){return Wr({test:(e,r)=>e.length!==t?mr(r,`Expected to have a length of exactly ${t} elements (got ${e.length})`):!0})}function kZe({map:t}={}){return Wr({test:(e,r)=>{let s=new Set,a=new Set;for(let n=0,c=e.length;nt<=0?!0:mr(e,`Expected to be negative (got ${t})`)})}function TZe(){return Wr({test:(t,e)=>t>=0?!0:mr(e,`Expected to be positive (got ${t})`)})}function SU(t){return Wr({test:(e,r)=>e>=t?!0:mr(r,`Expected to be at least ${t} (got ${e})`)})}function RZe(t){return Wr({test:(e,r)=>e<=t?!0:mr(r,`Expected to be at most ${t} (got ${e})`)})}function FZe(t,e){return Wr({test:(r,s)=>r>=t&&r<=e?!0:mr(s,`Expected to be in the [${t}; ${e}] range (got ${r})`)})}function NZe(t,e){return Wr({test:(r,s)=>r>=t&&re!==Math.round(e)?mr(r,`Expected to be an integer (got ${e})`):!t&&!Number.isSafeInteger(e)?mr(r,`Expected to be a safe integer (got ${e})`):!0})}function tB(t){return Wr({test:(e,r)=>t.test(e)?!0:mr(r,`Expected to match the pattern ${t.toString()} (got ${ti(e)})`)})}function OZe(){return Wr({test:(t,e)=>t!==t.toLowerCase()?mr(e,`Expected to be all-lowercase (got ${t})`):!0})}function LZe(){return Wr({test:(t,e)=>t!==t.toUpperCase()?mr(e,`Expected to be all-uppercase (got ${t})`):!0})}function MZe(){return Wr({test:(t,e)=>AZe.test(t)?!0:mr(e,`Expected to be a valid UUID v4 (got ${ti(t)})`)})}function _Ze(){return Wr({test:(t,e)=>gne.test(t)?!0:mr(e,`Expected to be a valid ISO 8601 date string (got ${ti(t)})`)})}function UZe({alpha:t=!1}){return Wr({test:(e,r)=>(t?cZe.test(e):uZe.test(e))?!0:mr(r,`Expected to be a valid hexadecimal color string (got ${ti(e)})`)})}function HZe(){return Wr({test:(t,e)=>fZe.test(t)?!0:mr(e,`Expected to be a valid base 64 string (got ${ti(t)})`)})}function jZe(t=wU()){return Wr({test:(e,r)=>{let s;try{s=JSON.parse(e)}catch{return mr(r,`Expected to be a valid JSON string (got ${ti(e)})`)}return t(s,r)}})}function Jx(t,...e){let r=Array.isArray(e[0])?e[0]:e;return Wr({test:(s,a)=>{var n,c;let f={value:s},p=typeof a?.coercions<"u"?Yf(f,"value"):void 0,h=typeof a?.coercions<"u"?[]:void 0;if(!t(s,Object.assign(Object.assign({},a),{coercion:p,coercions:h})))return!1;let E=[];if(typeof h<"u")for(let[,C]of h)E.push(C());try{if(typeof a?.coercions<"u"){if(f.value!==s){if(typeof a?.coercion>"u")return mr(a,"Unbound coercion result");a.coercions.push([(n=a.p)!==null&&n!==void 0?n:".",a.coercion.bind(null,f.value)])}(c=a?.coercions)===null||c===void 0||c.push(...h)}return r.every(C=>C(f.value,a))}finally{for(let C of E)C()}}})}function rB(t,...e){let r=Array.isArray(e[0])?e[0]:e;return Jx(t,r)}function qZe(t){return Wr({test:(e,r)=>typeof e>"u"?!0:t(e,r)})}function GZe(t){return Wr({test:(e,r)=>e===null?!0:t(e,r)})}function WZe(t,e){var r;let s=new Set(t),a=nB[(r=e?.missingIf)!==null&&r!==void 0?r:"missing"];return Wr({test:(n,c)=>{let f=new Set(Object.keys(n)),p=[];for(let h of s)a(f,h,n)||p.push(h);return p.length>0?mr(c,`Missing required ${CU(p.length,"property","properties")} ${CE(p,"and")}`):!0}})}function bU(t,e){var r;let s=new Set(t),a=nB[(r=e?.missingIf)!==null&&r!==void 0?r:"missing"];return Wr({test:(n,c)=>Object.keys(n).some(h=>a(s,h,n))?!0:mr(c,`Missing at least one property from ${CE(Array.from(s),"or")}`)})}function YZe(t,e){var r;let s=new Set(t),a=nB[(r=e?.missingIf)!==null&&r!==void 0?r:"missing"];return Wr({test:(n,c)=>{let f=new Set(Object.keys(n)),p=[];for(let h of s)a(f,h,n)&&p.push(h);return p.length>0?mr(c,`Forbidden ${CU(p.length,"property","properties")} ${CE(p,"and")}`):!0}})}function VZe(t,e){var r;let s=new Set(t),a=nB[(r=e?.missingIf)!==null&&r!==void 0?r:"missing"];return Wr({test:(n,c)=>{let f=new Set(Object.keys(n)),p=[];for(let h of s)a(f,h,n)&&p.push(h);return p.length>1?mr(c,`Mutually exclusive properties ${CE(p,"and")}`):!0}})}function iB(t,e,r,s){var a,n;let c=new Set((a=s?.ignore)!==null&&a!==void 0?a:[]),f=nB[(n=s?.missingIf)!==null&&n!==void 0?n:"missing"],p=new Set(r),h=KZe[e],E=e===Wf.Forbids?"or":"and";return Wr({test:(C,S)=>{let P=new Set(Object.keys(C));if(!f(P,t,C)||c.has(C[t]))return!0;let I=[];for(let R of p)(f(P,R,C)&&!c.has(C[R]))!==h.expect&&I.push(R);return I.length>=1?mr(S,`Property "${t}" ${h.message} ${CU(I.length,"property","properties")} ${CE(I,E)}`):!0}})}var lZe,cZe,uZe,fZe,AZe,gne,hZe,wZe,vU,c0,nB,Wf,KZe,Ul=It(()=>{lZe=/^[a-zA-Z_][a-zA-Z0-9_]*$/;cZe=/^#[0-9a-f]{6}$/i,uZe=/^#[0-9a-f]{6}([0-9a-f]{2})?$/i,fZe=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,AZe=/^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}$/i,gne=/^(?:[1-9]\d{3}(-?)(?:(?:0[1-9]|1[0-2])\1(?:0[1-9]|1\d|2[0-8])|(?:0[13-9]|1[0-2])\1(?:29|30)|(?:0[13578]|1[02])(?:\1)31|00[1-9]|0[1-9]\d|[12]\d{2}|3(?:[0-5]\d|6[0-5]))|(?:[1-9]\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)(?:(-?)02(?:\2)29|-?366))T(?:[01]\d|2[0-3])(:?)[0-5]\d(?:\3[0-5]\d)?(?:Z|[+-][01]\d(?:\3[0-5]\d)?)$/;hZe=new Map([["true",!0],["True",!0],["1",!0],[1,!0],["false",!1],["False",!1],["0",!1],[0,!1]]);wZe=t=>Wr({test:(e,r)=>e instanceof t?!0:mr(r,`Expected an instance of ${t.name} (got ${ti(e)})`)}),vU=(t,{exclusive:e=!1}={})=>Wr({test:(r,s)=>{var a,n,c;let f=[],p=typeof s?.errors<"u"?[]:void 0;for(let h=0,E=t.length;h1?mr(s,`Expected to match exactly a single predicate (matched ${f.join(", ")})`):(c=s?.errors)===null||c===void 0||c.push(...p),!1}});c0=class extends Error{constructor({errors:e}={}){let r="Type mismatch";if(e&&e.length>0){r+=` +`;for(let s of e)r+=` +- ${s}`}super(r)}};nB={missing:(t,e)=>t.has(e),undefined:(t,e,r)=>t.has(e)&&typeof r[e]<"u",nil:(t,e,r)=>t.has(e)&&r[e]!=null,falsy:(t,e,r)=>t.has(e)&&!!r[e]};(function(t){t.Forbids="Forbids",t.Requires="Requires"})(Wf||(Wf={}));KZe={[Wf.Forbids]:{expect:!1,message:"forbids using"},[Wf.Requires]:{expect:!0,message:"requires using"}}});var ot,u0=It(()=>{Bp();ot=class{constructor(){this.help=!1}static Usage(e){return e}async catch(e){throw e}async validateAndExecute(){let r=this.constructor.schema;if(Array.isArray(r)){let{isDict:a,isUnknown:n,applyCascade:c}=await Promise.resolve().then(()=>(Ul(),Ia)),f=c(a(n()),r),p=[],h=[];if(!f(this,{errors:p,coercions:h}))throw $2("Invalid option schema",p);for(let[,C]of h)C()}else if(r!=null)throw new Error("Invalid command schema");let s=await this.execute();return typeof s<"u"?s:0}};ot.isOption=X2;ot.Default=[]});function sl(t){mU&&console.log(t)}function Cne(){let t={nodes:[]};for(let e=0;e{if(e.has(s))return;e.add(s);let a=t.nodes[s];for(let c of Object.values(a.statics))for(let{to:f}of c)r(f);for(let[,{to:c}]of a.dynamics)r(c);for(let{to:c}of a.shortcuts)r(c);let n=new Set(a.shortcuts.map(({to:c})=>c));for(;a.shortcuts.length>0;){let{to:c}=a.shortcuts.shift(),f=t.nodes[c];for(let[p,h]of Object.entries(f.statics)){let E=Object.prototype.hasOwnProperty.call(a.statics,p)?a.statics[p]:a.statics[p]=[];for(let C of h)E.some(({to:S})=>C.to===S)||E.push(C)}for(let[p,h]of f.dynamics)a.dynamics.some(([E,{to:C}])=>p===E&&h.to===C)||a.dynamics.push([p,h]);for(let p of f.shortcuts)n.has(p.to)||(a.shortcuts.push(p),n.add(p.to))}};r(En.InitialNode)}function ZZe(t,{prefix:e=""}={}){if(mU){sl(`${e}Nodes are:`);for(let r=0;rE!==En.ErrorNode).map(({state:E})=>({usage:E.candidateUsage,reason:null})));if(h.every(({node:E})=>E===En.ErrorNode))throw new IE(e,h.map(({state:E})=>({usage:E.candidateUsage,reason:E.errorMessage})));s=eXe(h)}if(s.length>0){sl(" Results:");for(let n of s)sl(` - ${n.node} -> ${JSON.stringify(n.state)}`)}else sl(" No results");return s}function $Ze(t,e,{endToken:r=ei.EndOfInput}={}){let s=XZe(t,[...e,r]);return tXe(e,s.map(({state:a})=>a))}function eXe(t){let e=0;for(let{state:r}of t)r.path.length>e&&(e=r.path.length);return t.filter(({state:r})=>r.path.length===e)}function tXe(t,e){let r=e.filter(S=>S.selectedIndex!==null),s=r.filter(S=>!S.partial);if(s.length>0&&(r=s),r.length===0)throw new Error;let a=r.filter(S=>S.selectedIndex===Od||S.requiredOptions.every(P=>P.some(I=>S.options.find(R=>R.name===I))));if(a.length===0)throw new IE(t,r.map(S=>({usage:S.candidateUsage,reason:null})));let n=0;for(let S of a)S.path.length>n&&(n=S.path.length);let c=a.filter(S=>S.path.length===n),f=S=>S.positionals.filter(({extra:P})=>!P).length+S.options.length,p=c.map(S=>({state:S,positionalCount:f(S)})),h=0;for(let{positionalCount:S}of p)S>h&&(h=S);let E=p.filter(({positionalCount:S})=>S===h).map(({state:S})=>S),C=rXe(E);if(C.length>1)throw new qx(t,C.map(S=>S.candidateUsage));return C[0]}function rXe(t){let e=[],r=[];for(let s of t)s.selectedIndex===Od?r.push(s):e.push(s);return r.length>0&&e.push({...Ine,path:wne(...r.map(s=>s.path)),options:r.reduce((s,a)=>s.concat(a.options),[])}),e}function wne(t,e,...r){return e===void 0?Array.from(t):wne(t.filter((s,a)=>s===e[a]),...r)}function Hl(){return{dynamics:[],shortcuts:[],statics:{}}}function Bne(t){return t===En.SuccessNode||t===En.ErrorNode}function PU(t,e=0){return{to:Bne(t.to)?t.to:t.to>=En.CustomNode?t.to+e-En.CustomNode+1:t.to+e,reducer:t.reducer}}function nXe(t,e=0){let r=Hl();for(let[s,a]of t.dynamics)r.dynamics.push([s,PU(a,e)]);for(let s of t.shortcuts)r.shortcuts.push(PU(s,e));for(let[s,a]of Object.entries(t.statics))r.statics[s]=a.map(n=>PU(n,e));return r}function js(t,e,r,s,a){t.nodes[e].dynamics.push([r,{to:s,reducer:a}])}function BE(t,e,r,s){t.nodes[e].shortcuts.push({to:r,reducer:s})}function Ca(t,e,r,s,a){(Object.prototype.hasOwnProperty.call(t.nodes[e].statics,r)?t.nodes[e].statics[r]:t.nodes[e].statics[r]=[]).push({to:s,reducer:a})}function zx(t,e,r,s,a){if(Array.isArray(e)){let[n,...c]=e;return t[n](r,s,a,...c)}else return t[e](r,s,a)}var Ine,iXe,xU,jl,kU,Zx,Xx=It(()=>{jx();Gx();Ine={candidateUsage:null,requiredOptions:[],errorMessage:null,ignoreOptions:!1,path:[],positionals:[],options:[],remainder:null,selectedIndex:Od,partial:!1,tokens:[]};iXe={always:()=>!0,isOptionLike:(t,e)=>!t.ignoreOptions&&e!=="-"&&e.startsWith("-"),isNotOptionLike:(t,e)=>t.ignoreOptions||e==="-"||!e.startsWith("-"),isOption:(t,e,r,s)=>!t.ignoreOptions&&e===s,isBatchOption:(t,e,r,s)=>!t.ignoreOptions&&Ane.test(e)&&[...e.slice(1)].every(a=>s.has(`-${a}`)),isBoundOption:(t,e,r,s,a)=>{let n=e.match(dU);return!t.ignoreOptions&&!!n&&Hx.test(n[1])&&s.has(n[1])&&a.filter(c=>c.nameSet.includes(n[1])).every(c=>c.allowBinding)},isNegatedOption:(t,e,r,s)=>!t.ignoreOptions&&e===`--no-${s.slice(2)}`,isHelp:(t,e)=>!t.ignoreOptions&&gU.test(e),isUnsupportedOption:(t,e,r,s)=>!t.ignoreOptions&&e.startsWith("-")&&Hx.test(e)&&!s.has(e),isInvalidOption:(t,e)=>!t.ignoreOptions&&e.startsWith("-")&&!Hx.test(e)},xU={setCandidateState:(t,e,r,s)=>({...t,...s}),setSelectedIndex:(t,e,r,s)=>({...t,selectedIndex:s}),setPartialIndex:(t,e,r,s)=>({...t,selectedIndex:s,partial:!0}),pushBatch:(t,e,r,s)=>{let a=t.options.slice(),n=t.tokens.slice();for(let c=1;c{let[,s,a]=e.match(dU),n=t.options.concat({name:s,value:a}),c=t.tokens.concat([{segmentIndex:r,type:"option",slice:[0,s.length],option:s},{segmentIndex:r,type:"assign",slice:[s.length,s.length+1]},{segmentIndex:r,type:"value",slice:[s.length+1,s.length+a.length+1]}]);return{...t,options:n,tokens:c}},pushPath:(t,e,r)=>{let s=t.path.concat(e),a=t.tokens.concat({segmentIndex:r,type:"path"});return{...t,path:s,tokens:a}},pushPositional:(t,e,r)=>{let s=t.positionals.concat({value:e,extra:!1}),a=t.tokens.concat({segmentIndex:r,type:"positional"});return{...t,positionals:s,tokens:a}},pushExtra:(t,e,r)=>{let s=t.positionals.concat({value:e,extra:!0}),a=t.tokens.concat({segmentIndex:r,type:"positional"});return{...t,positionals:s,tokens:a}},pushExtraNoLimits:(t,e,r)=>{let s=t.positionals.concat({value:e,extra:jl}),a=t.tokens.concat({segmentIndex:r,type:"positional"});return{...t,positionals:s,tokens:a}},pushTrue:(t,e,r,s)=>{let a=t.options.concat({name:s,value:!0}),n=t.tokens.concat({segmentIndex:r,type:"option",option:s});return{...t,options:a,tokens:n}},pushFalse:(t,e,r,s)=>{let a=t.options.concat({name:s,value:!1}),n=t.tokens.concat({segmentIndex:r,type:"option",option:s});return{...t,options:a,tokens:n}},pushUndefined:(t,e,r,s)=>{let a=t.options.concat({name:e,value:void 0}),n=t.tokens.concat({segmentIndex:r,type:"option",option:e});return{...t,options:a,tokens:n}},pushStringValue:(t,e,r)=>{var s;let a=t.options[t.options.length-1],n=t.options.slice(),c=t.tokens.concat({segmentIndex:r,type:"value"});return a.value=((s=a.value)!==null&&s!==void 0?s:[]).concat([e]),{...t,options:n,tokens:c}},setStringValue:(t,e,r)=>{let s=t.options[t.options.length-1],a=t.options.slice(),n=t.tokens.concat({segmentIndex:r,type:"value"});return s.value=e,{...t,options:a,tokens:n}},inhibateOptions:t=>({...t,ignoreOptions:!0}),useHelp:(t,e,r,s)=>{let[,,a]=e.match(gU);return typeof a<"u"?{...t,options:[{name:"-c",value:String(s)},{name:"-i",value:a}]}:{...t,options:[{name:"-c",value:String(s)}]}},setError:(t,e,r,s)=>e===ei.EndOfInput||e===ei.EndOfPartialInput?{...t,errorMessage:`${s}.`}:{...t,errorMessage:`${s} ("${e}").`},setOptionArityError:(t,e)=>{let r=t.options[t.options.length-1];return{...t,errorMessage:`Not enough arguments to option ${r.name}.`}}},jl=Symbol(),kU=class{constructor(e,r){this.allOptionNames=new Map,this.arity={leading:[],trailing:[],extra:[],proxy:!1},this.options=[],this.paths=[],this.cliIndex=e,this.cliOpts=r}addPath(e){this.paths.push(e)}setArity({leading:e=this.arity.leading,trailing:r=this.arity.trailing,extra:s=this.arity.extra,proxy:a=this.arity.proxy}){Object.assign(this.arity,{leading:e,trailing:r,extra:s,proxy:a})}addPositional({name:e="arg",required:r=!0}={}){if(!r&&this.arity.extra===jl)throw new Error("Optional parameters cannot be declared when using .rest() or .proxy()");if(!r&&this.arity.trailing.length>0)throw new Error("Optional parameters cannot be declared after the required trailing positional arguments");!r&&this.arity.extra!==jl?this.arity.extra.push(e):this.arity.extra!==jl&&this.arity.extra.length===0?this.arity.leading.push(e):this.arity.trailing.push(e)}addRest({name:e="arg",required:r=0}={}){if(this.arity.extra===jl)throw new Error("Infinite lists cannot be declared multiple times in the same command");if(this.arity.trailing.length>0)throw new Error("Infinite lists cannot be declared after the required trailing positional arguments");for(let s=0;s1)throw new Error("The arity cannot be higher than 1 when the option only supports the --arg=value syntax");if(!Number.isInteger(s))throw new Error(`The arity must be an integer, got ${s}`);if(s<0)throw new Error(`The arity must be positive, got ${s}`);let f=e.reduce((p,h)=>h.length>p.length?h:p,"");for(let p of e)this.allOptionNames.set(p,f);this.options.push({preferredName:f,nameSet:e,description:r,arity:s,hidden:a,required:n,allowBinding:c})}setContext(e){this.context=e}usage({detailed:e=!0,inlineOptions:r=!0}={}){let s=[this.cliOpts.binaryName],a=[];if(this.paths.length>0&&s.push(...this.paths[0]),e){for(let{preferredName:c,nameSet:f,arity:p,hidden:h,description:E,required:C}of this.options){if(h)continue;let S=[];for(let I=0;I`:`[${P}]`)}s.push(...this.arity.leading.map(c=>`<${c}>`)),this.arity.extra===jl?s.push("..."):s.push(...this.arity.extra.map(c=>`[${c}]`)),s.push(...this.arity.trailing.map(c=>`<${c}>`))}return{usage:s.join(" "),options:a}}compile(){if(typeof this.context>"u")throw new Error("Assertion failed: No context attached");let e=Cne(),r=En.InitialNode,s=this.usage().usage,a=this.options.filter(f=>f.required).map(f=>f.nameSet);r=Mu(e,Hl()),Ca(e,En.InitialNode,ei.StartOfInput,r,["setCandidateState",{candidateUsage:s,requiredOptions:a}]);let n=this.arity.proxy?"always":"isNotOptionLike",c=this.paths.length>0?this.paths:[[]];for(let f of c){let p=r;if(f.length>0){let S=Mu(e,Hl());BE(e,p,S),this.registerOptions(e,S),p=S}for(let S=0;S0||!this.arity.proxy){let S=Mu(e,Hl());js(e,p,"isHelp",S,["useHelp",this.cliIndex]),js(e,S,"always",S,"pushExtra"),Ca(e,S,ei.EndOfInput,En.SuccessNode,["setSelectedIndex",Od]),this.registerOptions(e,p)}this.arity.leading.length>0&&(Ca(e,p,ei.EndOfInput,En.ErrorNode,["setError","Not enough positional arguments"]),Ca(e,p,ei.EndOfPartialInput,En.SuccessNode,["setPartialIndex",this.cliIndex]));let h=p;for(let S=0;S0||S+1!==this.arity.leading.length)&&(Ca(e,P,ei.EndOfInput,En.ErrorNode,["setError","Not enough positional arguments"]),Ca(e,P,ei.EndOfPartialInput,En.SuccessNode,["setPartialIndex",this.cliIndex])),js(e,h,"isNotOptionLike",P,"pushPositional"),h=P}let E=h;if(this.arity.extra===jl||this.arity.extra.length>0){let S=Mu(e,Hl());if(BE(e,h,S),this.arity.extra===jl){let P=Mu(e,Hl());this.arity.proxy||this.registerOptions(e,P),js(e,h,n,P,"pushExtraNoLimits"),js(e,P,n,P,"pushExtraNoLimits"),BE(e,P,S)}else for(let P=0;P0)&&this.registerOptions(e,I),js(e,E,n,I,"pushExtra"),BE(e,I,S),E=I}E=S}this.arity.trailing.length>0&&(Ca(e,E,ei.EndOfInput,En.ErrorNode,["setError","Not enough positional arguments"]),Ca(e,E,ei.EndOfPartialInput,En.SuccessNode,["setPartialIndex",this.cliIndex]));let C=E;for(let S=0;S=0&&e{let c=n?ei.EndOfPartialInput:ei.EndOfInput;return $Ze(s,a,{endToken:c})}}}}});function Sne(){return $x.default&&"getColorDepth"in $x.default.WriteStream.prototype?$x.default.WriteStream.prototype.getColorDepth():process.env.FORCE_COLOR==="0"?1:process.env.FORCE_COLOR==="1"||typeof process.stdout<"u"&&process.stdout.isTTY?8:1}function Dne(t){let e=vne;if(typeof e>"u"){if(t.stdout===process.stdout&&t.stderr===process.stderr)return null;let{AsyncLocalStorage:r}=ye("async_hooks");e=vne=new r;let s=process.stdout._write;process.stdout._write=function(n,c,f){let p=e.getStore();return typeof p>"u"?s.call(this,n,c,f):p.stdout.write(n,c,f)};let a=process.stderr._write;process.stderr._write=function(n,c,f){let p=e.getStore();return typeof p>"u"?a.call(this,n,c,f):p.stderr.write(n,c,f)}}return r=>e.run(t,r)}var $x,vne,bne=It(()=>{$x=et(ye("tty"),1)});var ek,Pne=It(()=>{u0();ek=class t extends ot{constructor(e){super(),this.contexts=e,this.commands=[]}static from(e,r){let s=new t(r);s.path=e.path;for(let a of e.options)switch(a.name){case"-c":s.commands.push(Number(a.value));break;case"-i":s.index=Number(a.value);break}return s}async execute(){let e=this.commands;if(typeof this.index<"u"&&this.index>=0&&this.index1){this.context.stdout.write(`Multiple commands match your selection: +`),this.context.stdout.write(` +`);let r=0;for(let s of this.commands)this.context.stdout.write(this.cli.usage(this.contexts[s].commandClass,{prefix:`${r++}. `.padStart(5)}));this.context.stdout.write(` +`),this.context.stdout.write(`Run again with -h= to see the longer details of any of those commands. +`)}}}});async function Qne(...t){let{resolvedOptions:e,resolvedCommandClasses:r,resolvedArgv:s,resolvedContext:a}=Rne(t);return wa.from(r,e).runExit(s,a)}async function Tne(...t){let{resolvedOptions:e,resolvedCommandClasses:r,resolvedArgv:s,resolvedContext:a}=Rne(t);return wa.from(r,e).run(s,a)}function Rne(t){let e,r,s,a;switch(typeof process<"u"&&typeof process.argv<"u"&&(s=process.argv.slice(2)),t.length){case 1:r=t[0];break;case 2:t[0]&&t[0].prototype instanceof ot||Array.isArray(t[0])?(r=t[0],Array.isArray(t[1])?s=t[1]:a=t[1]):(e=t[0],r=t[1]);break;case 3:Array.isArray(t[2])?(e=t[0],r=t[1],s=t[2]):t[0]&&t[0].prototype instanceof ot||Array.isArray(t[0])?(r=t[0],s=t[1],a=t[2]):(e=t[0],r=t[1],a=t[2]);break;default:e=t[0],r=t[1],s=t[2],a=t[3];break}if(typeof s>"u")throw new Error("The argv parameter must be provided when running Clipanion outside of a Node context");return{resolvedOptions:e,resolvedCommandClasses:r,resolvedArgv:s,resolvedContext:a}}function kne(t){return t()}var xne,wa,Fne=It(()=>{jx();Xx();IU();bne();u0();Pne();xne=Symbol("clipanion/errorCommand");wa=class t{constructor({binaryLabel:e,binaryName:r="...",binaryVersion:s,enableCapture:a=!1,enableColors:n}={}){this.registrations=new Map,this.builder=new Zx({binaryName:r}),this.binaryLabel=e,this.binaryName=r,this.binaryVersion=s,this.enableCapture=a,this.enableColors=n}static from(e,r={}){let s=new t(r),a=Array.isArray(e)?e:[e];for(let n of a)s.register(n);return s}register(e){var r;let s=new Map,a=new e;for(let p in a){let h=a[p];typeof h=="object"&&h!==null&&h[ot.isOption]&&s.set(p,h)}let n=this.builder.command(),c=n.cliIndex,f=(r=e.paths)!==null&&r!==void 0?r:a.paths;if(typeof f<"u")for(let p of f)n.addPath(p);this.registrations.set(e,{specs:s,builder:n,index:c});for(let[p,{definition:h}]of s.entries())h(n,p);n.setContext({commandClass:e})}process(e,r){let{input:s,context:a,partial:n}=typeof e=="object"&&Array.isArray(e)?{input:e,context:r}:e,{contexts:c,process:f}=this.builder.compile(),p=f(s,{partial:n}),h={...t.defaultContext,...a};switch(p.selectedIndex){case Od:{let E=ek.from(p,c);return E.context=h,E.tokens=p.tokens,E}default:{let{commandClass:E}=c[p.selectedIndex],C=this.registrations.get(E);if(typeof C>"u")throw new Error("Assertion failed: Expected the command class to have been registered.");let S=new E;S.context=h,S.tokens=p.tokens,S.path=p.path;try{for(let[P,{transformer:I}]of C.specs.entries())S[P]=I(C.builder,P,p,h);return S}catch(P){throw P[xne]=S,P}}break}}async run(e,r){var s,a;let n,c={...t.defaultContext,...r},f=(s=this.enableColors)!==null&&s!==void 0?s:c.colorDepth>1;if(!Array.isArray(e))n=e;else try{n=this.process(e,c)}catch(E){return c.stdout.write(this.error(E,{colored:f})),1}if(n.help)return c.stdout.write(this.usage(n,{colored:f,detailed:!0})),0;n.context=c,n.cli={binaryLabel:this.binaryLabel,binaryName:this.binaryName,binaryVersion:this.binaryVersion,enableCapture:this.enableCapture,enableColors:this.enableColors,definitions:()=>this.definitions(),definition:E=>this.definition(E),error:(E,C)=>this.error(E,C),format:E=>this.format(E),process:(E,C)=>this.process(E,{...c,...C}),run:(E,C)=>this.run(E,{...c,...C}),usage:(E,C)=>this.usage(E,C)};let p=this.enableCapture&&(a=Dne(c))!==null&&a!==void 0?a:kne,h;try{h=await p(()=>n.validateAndExecute().catch(E=>n.catch(E).then(()=>0)))}catch(E){return c.stdout.write(this.error(E,{colored:f,command:n})),1}return h}async runExit(e,r){process.exitCode=await this.run(e,r)}definition(e,{colored:r=!1}={}){if(!e.usage)return null;let{usage:s}=this.getUsageByRegistration(e,{detailed:!1}),{usage:a,options:n}=this.getUsageByRegistration(e,{detailed:!0,inlineOptions:!1}),c=typeof e.usage.category<"u"?qo(e.usage.category,{format:this.format(r),paragraphs:!1}):void 0,f=typeof e.usage.description<"u"?qo(e.usage.description,{format:this.format(r),paragraphs:!1}):void 0,p=typeof e.usage.details<"u"?qo(e.usage.details,{format:this.format(r),paragraphs:!0}):void 0,h=typeof e.usage.examples<"u"?e.usage.examples.map(([E,C])=>[qo(E,{format:this.format(r),paragraphs:!1}),C.replace(/\$0/g,this.binaryName)]):void 0;return{path:s,usage:a,category:c,description:f,details:p,examples:h,options:n}}definitions({colored:e=!1}={}){let r=[];for(let s of this.registrations.keys()){let a=this.definition(s,{colored:e});a&&r.push(a)}return r}usage(e=null,{colored:r,detailed:s=!1,prefix:a="$ "}={}){var n;if(e===null){for(let p of this.registrations.keys()){let h=p.paths,E=typeof p.usage<"u";if(!h||h.length===0||h.length===1&&h[0].length===0||((n=h?.some(P=>P.length===0))!==null&&n!==void 0?n:!1))if(e){e=null;break}else e=p;else if(E){e=null;continue}}e&&(s=!0)}let c=e!==null&&e instanceof ot?e.constructor:e,f="";if(c)if(s){let{description:p="",details:h="",examples:E=[]}=c.usage||{};p!==""&&(f+=qo(p,{format:this.format(r),paragraphs:!1}).replace(/^./,P=>P.toUpperCase()),f+=` +`),(h!==""||E.length>0)&&(f+=`${this.format(r).header("Usage")} +`,f+=` +`);let{usage:C,options:S}=this.getUsageByRegistration(c,{inlineOptions:!1});if(f+=`${this.format(r).bold(a)}${C} +`,S.length>0){f+=` +`,f+=`${this.format(r).header("Options")} +`;let P=S.reduce((I,R)=>Math.max(I,R.definition.length),0);f+=` +`;for(let{definition:I,description:R}of S)f+=` ${this.format(r).bold(I.padEnd(P))} ${qo(R,{format:this.format(r),paragraphs:!1})}`}if(h!==""&&(f+=` +`,f+=`${this.format(r).header("Details")} +`,f+=` +`,f+=qo(h,{format:this.format(r),paragraphs:!0})),E.length>0){f+=` +`,f+=`${this.format(r).header("Examples")} +`;for(let[P,I]of E)f+=` +`,f+=qo(P,{format:this.format(r),paragraphs:!1}),f+=`${I.replace(/^/m,` ${this.format(r).bold(a)}`).replace(/\$0/g,this.binaryName)} +`}}else{let{usage:p}=this.getUsageByRegistration(c);f+=`${this.format(r).bold(a)}${p} +`}else{let p=new Map;for(let[S,{index:P}]of this.registrations.entries()){if(typeof S.usage>"u")continue;let I=typeof S.usage.category<"u"?qo(S.usage.category,{format:this.format(r),paragraphs:!1}):null,R=p.get(I);typeof R>"u"&&p.set(I,R=[]);let{usage:N}=this.getUsageByIndex(P);R.push({commandClass:S,usage:N})}let h=Array.from(p.keys()).sort((S,P)=>S===null?-1:P===null?1:S.localeCompare(P,"en",{usage:"sort",caseFirst:"upper"})),E=typeof this.binaryLabel<"u",C=typeof this.binaryVersion<"u";E||C?(E&&C?f+=`${this.format(r).header(`${this.binaryLabel} - ${this.binaryVersion}`)} + +`:E?f+=`${this.format(r).header(`${this.binaryLabel}`)} +`:f+=`${this.format(r).header(`${this.binaryVersion}`)} +`,f+=` ${this.format(r).bold(a)}${this.binaryName} +`):f+=`${this.format(r).bold(a)}${this.binaryName} +`;for(let S of h){let P=p.get(S).slice().sort((R,N)=>R.usage.localeCompare(N.usage,"en",{usage:"sort",caseFirst:"upper"})),I=S!==null?S.trim():"General commands";f+=` +`,f+=`${this.format(r).header(`${I}`)} +`;for(let{commandClass:R,usage:N}of P){let U=R.usage.description||"undocumented";f+=` +`,f+=` ${this.format(r).bold(N)} +`,f+=` ${qo(U,{format:this.format(r),paragraphs:!1})}`}}f+=` +`,f+=qo("You can also print more details about any of these commands by calling them with the `-h,--help` flag right after the command name.",{format:this.format(r),paragraphs:!0})}return f}error(e,r){var s,{colored:a,command:n=(s=e[xne])!==null&&s!==void 0?s:null}=r===void 0?{}:r;(!e||typeof e!="object"||!("stack"in e))&&(e=new Error(`Execution failed with a non-error rejection (rejected value: ${JSON.stringify(e)})`));let c="",f=e.name.replace(/([a-z])([A-Z])/g,"$1 $2");f==="Error"&&(f="Internal Error"),c+=`${this.format(a).error(f)}: ${e.message} +`;let p=e.clipanion;return typeof p<"u"?p.type==="usage"&&(c+=` +`,c+=this.usage(n)):e.stack&&(c+=`${e.stack.replace(/^.*\n/,"")} +`),c}format(e){var r;return((r=e??this.enableColors)!==null&&r!==void 0?r:t.defaultContext.colorDepth>1)?pne:hne}getUsageByRegistration(e,r){let s=this.registrations.get(e);if(typeof s>"u")throw new Error("Assertion failed: Unregistered command");return this.getUsageByIndex(s.index,r)}getUsageByIndex(e,r){return this.builder.getBuilderByIndex(e).usage(r)}};wa.defaultContext={env:process.env,stdin:process.stdin,stdout:process.stdout,stderr:process.stderr,colorDepth:Sne()}});var sB,Nne=It(()=>{u0();sB=class extends ot{async execute(){this.context.stdout.write(`${JSON.stringify(this.cli.definitions(),null,2)} +`)}};sB.paths=[["--clipanion=definitions"]]});var oB,One=It(()=>{u0();oB=class extends ot{async execute(){this.context.stdout.write(this.cli.usage())}};oB.paths=[["-h"],["--help"]]});function tk(t={}){return Ea({definition(e,r){var s;e.addProxy({name:(s=t.name)!==null&&s!==void 0?s:r,required:t.required})},transformer(e,r,s){return s.positionals.map(({value:a})=>a)}})}var QU=It(()=>{Bp()});var aB,Lne=It(()=>{u0();QU();aB=class extends ot{constructor(){super(...arguments),this.args=tk()}async execute(){this.context.stdout.write(`${JSON.stringify(this.cli.process(this.args).tokens,null,2)} +`)}};aB.paths=[["--clipanion=tokens"]]});var lB,Mne=It(()=>{u0();lB=class extends ot{async execute(){var e;this.context.stdout.write(`${(e=this.cli.binaryVersion)!==null&&e!==void 0?e:""} +`)}};lB.paths=[["-v"],["--version"]]});var TU={};Vt(TU,{DefinitionsCommand:()=>sB,HelpCommand:()=>oB,TokensCommand:()=>aB,VersionCommand:()=>lB});var _ne=It(()=>{Nne();One();Lne();Mne()});function Une(t,e,r){let[s,a]=Gf(e,r??{}),{arity:n=1}=a,c=t.split(","),f=new Set(c);return Ea({definition(p){p.addOption({names:c,arity:n,hidden:a?.hidden,description:a?.description,required:a.required})},transformer(p,h,E){let C,S=typeof s<"u"?[...s]:void 0;for(let{name:P,value:I}of E.options)f.has(P)&&(C=P,S=S??[],S.push(I));return typeof S<"u"?Ld(C??h,S,a.validator):S}})}var Hne=It(()=>{Bp()});function jne(t,e,r){let[s,a]=Gf(e,r??{}),n=t.split(","),c=new Set(n);return Ea({definition(f){f.addOption({names:n,allowBinding:!1,arity:0,hidden:a.hidden,description:a.description,required:a.required})},transformer(f,p,h){let E=s;for(let{name:C,value:S}of h.options)c.has(C)&&(E=S);return E}})}var qne=It(()=>{Bp()});function Gne(t,e,r){let[s,a]=Gf(e,r??{}),n=t.split(","),c=new Set(n);return Ea({definition(f){f.addOption({names:n,allowBinding:!1,arity:0,hidden:a.hidden,description:a.description,required:a.required})},transformer(f,p,h){let E=s;for(let{name:C,value:S}of h.options)c.has(C)&&(E??(E=0),S?E+=1:E=0);return E}})}var Wne=It(()=>{Bp()});function Yne(t={}){return Ea({definition(e,r){var s;e.addRest({name:(s=t.name)!==null&&s!==void 0?s:r,required:t.required})},transformer(e,r,s){let a=c=>{let f=s.positionals[c];return f.extra===jl||f.extra===!1&&cc)}})}var Vne=It(()=>{Xx();Bp()});function sXe(t,e,r){let[s,a]=Gf(e,r??{}),{arity:n=1}=a,c=t.split(","),f=new Set(c);return Ea({definition(p){p.addOption({names:c,arity:a.tolerateBoolean?0:n,hidden:a.hidden,description:a.description,required:a.required})},transformer(p,h,E,C){let S,P=s;typeof a.env<"u"&&C.env[a.env]&&(S=a.env,P=C.env[a.env]);for(let{name:I,value:R}of E.options)f.has(I)&&(S=I,P=R);return typeof P=="string"?Ld(S??h,P,a.validator):P}})}function oXe(t={}){let{required:e=!0}=t;return Ea({definition(r,s){var a;r.addPositional({name:(a=t.name)!==null&&a!==void 0?a:s,required:t.required})},transformer(r,s,a){var n;for(let c=0;c{Xx();Bp()});var ge={};Vt(ge,{Array:()=>Une,Boolean:()=>jne,Counter:()=>Gne,Proxy:()=>tk,Rest:()=>Yne,String:()=>Kne,applyValidator:()=>Ld,cleanValidationError:()=>Wx,formatError:()=>$2,isOptionSymbol:()=>X2,makeCommandOption:()=>Ea,rerouteArguments:()=>Gf});var zne=It(()=>{Bp();QU();Hne();qne();Wne();Vne();Jne()});var cB={};Vt(cB,{Builtins:()=>TU,Cli:()=>wa,Command:()=>ot,Option:()=>ge,UsageError:()=>nt,formatMarkdownish:()=>qo,run:()=>Tne,runExit:()=>Qne});var Wt=It(()=>{Gx();IU();u0();Fne();_ne();zne()});var Zne=L((RWt,aXe)=>{aXe.exports={name:"dotenv",version:"16.3.1",description:"Loads environment variables from .env file",main:"lib/main.js",types:"lib/main.d.ts",exports:{".":{types:"./lib/main.d.ts",require:"./lib/main.js",default:"./lib/main.js"},"./config":"./config.js","./config.js":"./config.js","./lib/env-options":"./lib/env-options.js","./lib/env-options.js":"./lib/env-options.js","./lib/cli-options":"./lib/cli-options.js","./lib/cli-options.js":"./lib/cli-options.js","./package.json":"./package.json"},scripts:{"dts-check":"tsc --project tests/types/tsconfig.json",lint:"standard","lint-readme":"standard-markdown",pretest:"npm run lint && npm run dts-check",test:"tap tests/*.js --100 -Rspec",prerelease:"npm test",release:"standard-version"},repository:{type:"git",url:"git://github.com/motdotla/dotenv.git"},funding:"https://github.com/motdotla/dotenv?sponsor=1",keywords:["dotenv","env",".env","environment","variables","config","settings"],readmeFilename:"README.md",license:"BSD-2-Clause",devDependencies:{"@definitelytyped/dtslint":"^0.0.133","@types/node":"^18.11.3",decache:"^4.6.1",sinon:"^14.0.1",standard:"^17.0.0","standard-markdown":"^7.1.0","standard-version":"^9.5.0",tap:"^16.3.0",tar:"^6.1.11",typescript:"^4.8.4"},engines:{node:">=12"},browser:{fs:!1}}});var tie=L((FWt,vp)=>{var Xne=ye("fs"),FU=ye("path"),lXe=ye("os"),cXe=ye("crypto"),uXe=Zne(),NU=uXe.version,fXe=/(?:^|^)\s*(?:export\s+)?([\w.-]+)(?:\s*=\s*?|:\s+?)(\s*'(?:\\'|[^'])*'|\s*"(?:\\"|[^"])*"|\s*`(?:\\`|[^`])*`|[^#\r\n]+)?\s*(?:#.*)?(?:$|$)/mg;function AXe(t){let e={},r=t.toString();r=r.replace(/\r\n?/mg,` +`);let s;for(;(s=fXe.exec(r))!=null;){let a=s[1],n=s[2]||"";n=n.trim();let c=n[0];n=n.replace(/^(['"`])([\s\S]*)\1$/mg,"$2"),c==='"'&&(n=n.replace(/\\n/g,` +`),n=n.replace(/\\r/g,"\r")),e[a]=n}return e}function pXe(t){let e=eie(t),r=qs.configDotenv({path:e});if(!r.parsed)throw new Error(`MISSING_DATA: Cannot parse ${e} for an unknown reason`);let s=$ne(t).split(","),a=s.length,n;for(let c=0;c=a)throw f}return qs.parse(n)}function hXe(t){console.log(`[dotenv@${NU}][INFO] ${t}`)}function gXe(t){console.log(`[dotenv@${NU}][WARN] ${t}`)}function RU(t){console.log(`[dotenv@${NU}][DEBUG] ${t}`)}function $ne(t){return t&&t.DOTENV_KEY&&t.DOTENV_KEY.length>0?t.DOTENV_KEY:process.env.DOTENV_KEY&&process.env.DOTENV_KEY.length>0?process.env.DOTENV_KEY:""}function dXe(t,e){let r;try{r=new URL(e)}catch(f){throw f.code==="ERR_INVALID_URL"?new Error("INVALID_DOTENV_KEY: Wrong format. Must be in valid uri format like dotenv://:key_1234@dotenv.org/vault/.env.vault?environment=development"):f}let s=r.password;if(!s)throw new Error("INVALID_DOTENV_KEY: Missing key part");let a=r.searchParams.get("environment");if(!a)throw new Error("INVALID_DOTENV_KEY: Missing environment part");let n=`DOTENV_VAULT_${a.toUpperCase()}`,c=t.parsed[n];if(!c)throw new Error(`NOT_FOUND_DOTENV_ENVIRONMENT: Cannot locate environment ${n} in your .env.vault file.`);return{ciphertext:c,key:s}}function eie(t){let e=FU.resolve(process.cwd(),".env");return t&&t.path&&t.path.length>0&&(e=t.path),e.endsWith(".vault")?e:`${e}.vault`}function mXe(t){return t[0]==="~"?FU.join(lXe.homedir(),t.slice(1)):t}function yXe(t){hXe("Loading env from encrypted .env.vault");let e=qs._parseVault(t),r=process.env;return t&&t.processEnv!=null&&(r=t.processEnv),qs.populate(r,e,t),{parsed:e}}function EXe(t){let e=FU.resolve(process.cwd(),".env"),r="utf8",s=!!(t&&t.debug);t&&(t.path!=null&&(e=mXe(t.path)),t.encoding!=null&&(r=t.encoding));try{let a=qs.parse(Xne.readFileSync(e,{encoding:r})),n=process.env;return t&&t.processEnv!=null&&(n=t.processEnv),qs.populate(n,a,t),{parsed:a}}catch(a){return s&&RU(`Failed to load ${e} ${a.message}`),{error:a}}}function IXe(t){let e=eie(t);return $ne(t).length===0?qs.configDotenv(t):Xne.existsSync(e)?qs._configVault(t):(gXe(`You set DOTENV_KEY but you are missing a .env.vault file at ${e}. Did you forget to build it?`),qs.configDotenv(t))}function CXe(t,e){let r=Buffer.from(e.slice(-64),"hex"),s=Buffer.from(t,"base64"),a=s.slice(0,12),n=s.slice(-16);s=s.slice(12,-16);try{let c=cXe.createDecipheriv("aes-256-gcm",r,a);return c.setAuthTag(n),`${c.update(s)}${c.final()}`}catch(c){let f=c instanceof RangeError,p=c.message==="Invalid key length",h=c.message==="Unsupported state or unable to authenticate data";if(f||p){let E="INVALID_DOTENV_KEY: It must be 64 characters long (or more)";throw new Error(E)}else if(h){let E="DECRYPTION_FAILED: Please check your DOTENV_KEY";throw new Error(E)}else throw console.error("Error: ",c.code),console.error("Error: ",c.message),c}}function wXe(t,e,r={}){let s=!!(r&&r.debug),a=!!(r&&r.override);if(typeof e!="object")throw new Error("OBJECT_REQUIRED: Please check the processEnv argument being passed to populate");for(let n of Object.keys(e))Object.prototype.hasOwnProperty.call(t,n)?(a===!0&&(t[n]=e[n]),s&&RU(a===!0?`"${n}" is already defined and WAS overwritten`:`"${n}" is already defined and was NOT overwritten`)):t[n]=e[n]}var qs={configDotenv:EXe,_configVault:yXe,_parseVault:pXe,config:IXe,decrypt:CXe,parse:AXe,populate:wXe};vp.exports.configDotenv=qs.configDotenv;vp.exports._configVault=qs._configVault;vp.exports._parseVault=qs._parseVault;vp.exports.config=qs.config;vp.exports.decrypt=qs.decrypt;vp.exports.parse=qs.parse;vp.exports.populate=qs.populate;vp.exports=qs});var nie=L((NWt,rie)=>{"use strict";rie.exports=(t,...e)=>new Promise(r=>{r(t(...e))})});var Md=L((OWt,OU)=>{"use strict";var BXe=nie(),iie=t=>{if(t<1)throw new TypeError("Expected `concurrency` to be a number from 1 and up");let e=[],r=0,s=()=>{r--,e.length>0&&e.shift()()},a=(f,p,...h)=>{r++;let E=BXe(f,...h);p(E),E.then(s,s)},n=(f,p,...h)=>{rnew Promise(h=>n(f,h,...p));return Object.defineProperties(c,{activeCount:{get:()=>r},pendingCount:{get:()=>e.length}}),c};OU.exports=iie;OU.exports.default=iie});function Vf(t){return`YN${t.toString(10).padStart(4,"0")}`}function rk(t){let e=Number(t.slice(2));if(typeof Dr[e]>"u")throw new Error(`Unknown message name: "${t}"`);return e}var Dr,nk=It(()=>{Dr=(Me=>(Me[Me.UNNAMED=0]="UNNAMED",Me[Me.EXCEPTION=1]="EXCEPTION",Me[Me.MISSING_PEER_DEPENDENCY=2]="MISSING_PEER_DEPENDENCY",Me[Me.CYCLIC_DEPENDENCIES=3]="CYCLIC_DEPENDENCIES",Me[Me.DISABLED_BUILD_SCRIPTS=4]="DISABLED_BUILD_SCRIPTS",Me[Me.BUILD_DISABLED=5]="BUILD_DISABLED",Me[Me.SOFT_LINK_BUILD=6]="SOFT_LINK_BUILD",Me[Me.MUST_BUILD=7]="MUST_BUILD",Me[Me.MUST_REBUILD=8]="MUST_REBUILD",Me[Me.BUILD_FAILED=9]="BUILD_FAILED",Me[Me.RESOLVER_NOT_FOUND=10]="RESOLVER_NOT_FOUND",Me[Me.FETCHER_NOT_FOUND=11]="FETCHER_NOT_FOUND",Me[Me.LINKER_NOT_FOUND=12]="LINKER_NOT_FOUND",Me[Me.FETCH_NOT_CACHED=13]="FETCH_NOT_CACHED",Me[Me.YARN_IMPORT_FAILED=14]="YARN_IMPORT_FAILED",Me[Me.REMOTE_INVALID=15]="REMOTE_INVALID",Me[Me.REMOTE_NOT_FOUND=16]="REMOTE_NOT_FOUND",Me[Me.RESOLUTION_PACK=17]="RESOLUTION_PACK",Me[Me.CACHE_CHECKSUM_MISMATCH=18]="CACHE_CHECKSUM_MISMATCH",Me[Me.UNUSED_CACHE_ENTRY=19]="UNUSED_CACHE_ENTRY",Me[Me.MISSING_LOCKFILE_ENTRY=20]="MISSING_LOCKFILE_ENTRY",Me[Me.WORKSPACE_NOT_FOUND=21]="WORKSPACE_NOT_FOUND",Me[Me.TOO_MANY_MATCHING_WORKSPACES=22]="TOO_MANY_MATCHING_WORKSPACES",Me[Me.CONSTRAINTS_MISSING_DEPENDENCY=23]="CONSTRAINTS_MISSING_DEPENDENCY",Me[Me.CONSTRAINTS_INCOMPATIBLE_DEPENDENCY=24]="CONSTRAINTS_INCOMPATIBLE_DEPENDENCY",Me[Me.CONSTRAINTS_EXTRANEOUS_DEPENDENCY=25]="CONSTRAINTS_EXTRANEOUS_DEPENDENCY",Me[Me.CONSTRAINTS_INVALID_DEPENDENCY=26]="CONSTRAINTS_INVALID_DEPENDENCY",Me[Me.CANT_SUGGEST_RESOLUTIONS=27]="CANT_SUGGEST_RESOLUTIONS",Me[Me.FROZEN_LOCKFILE_EXCEPTION=28]="FROZEN_LOCKFILE_EXCEPTION",Me[Me.CROSS_DRIVE_VIRTUAL_LOCAL=29]="CROSS_DRIVE_VIRTUAL_LOCAL",Me[Me.FETCH_FAILED=30]="FETCH_FAILED",Me[Me.DANGEROUS_NODE_MODULES=31]="DANGEROUS_NODE_MODULES",Me[Me.NODE_GYP_INJECTED=32]="NODE_GYP_INJECTED",Me[Me.AUTHENTICATION_NOT_FOUND=33]="AUTHENTICATION_NOT_FOUND",Me[Me.INVALID_CONFIGURATION_KEY=34]="INVALID_CONFIGURATION_KEY",Me[Me.NETWORK_ERROR=35]="NETWORK_ERROR",Me[Me.LIFECYCLE_SCRIPT=36]="LIFECYCLE_SCRIPT",Me[Me.CONSTRAINTS_MISSING_FIELD=37]="CONSTRAINTS_MISSING_FIELD",Me[Me.CONSTRAINTS_INCOMPATIBLE_FIELD=38]="CONSTRAINTS_INCOMPATIBLE_FIELD",Me[Me.CONSTRAINTS_EXTRANEOUS_FIELD=39]="CONSTRAINTS_EXTRANEOUS_FIELD",Me[Me.CONSTRAINTS_INVALID_FIELD=40]="CONSTRAINTS_INVALID_FIELD",Me[Me.AUTHENTICATION_INVALID=41]="AUTHENTICATION_INVALID",Me[Me.PROLOG_UNKNOWN_ERROR=42]="PROLOG_UNKNOWN_ERROR",Me[Me.PROLOG_SYNTAX_ERROR=43]="PROLOG_SYNTAX_ERROR",Me[Me.PROLOG_EXISTENCE_ERROR=44]="PROLOG_EXISTENCE_ERROR",Me[Me.STACK_OVERFLOW_RESOLUTION=45]="STACK_OVERFLOW_RESOLUTION",Me[Me.AUTOMERGE_FAILED_TO_PARSE=46]="AUTOMERGE_FAILED_TO_PARSE",Me[Me.AUTOMERGE_IMMUTABLE=47]="AUTOMERGE_IMMUTABLE",Me[Me.AUTOMERGE_SUCCESS=48]="AUTOMERGE_SUCCESS",Me[Me.AUTOMERGE_REQUIRED=49]="AUTOMERGE_REQUIRED",Me[Me.DEPRECATED_CLI_SETTINGS=50]="DEPRECATED_CLI_SETTINGS",Me[Me.PLUGIN_NAME_NOT_FOUND=51]="PLUGIN_NAME_NOT_FOUND",Me[Me.INVALID_PLUGIN_REFERENCE=52]="INVALID_PLUGIN_REFERENCE",Me[Me.CONSTRAINTS_AMBIGUITY=53]="CONSTRAINTS_AMBIGUITY",Me[Me.CACHE_OUTSIDE_PROJECT=54]="CACHE_OUTSIDE_PROJECT",Me[Me.IMMUTABLE_INSTALL=55]="IMMUTABLE_INSTALL",Me[Me.IMMUTABLE_CACHE=56]="IMMUTABLE_CACHE",Me[Me.INVALID_MANIFEST=57]="INVALID_MANIFEST",Me[Me.PACKAGE_PREPARATION_FAILED=58]="PACKAGE_PREPARATION_FAILED",Me[Me.INVALID_RANGE_PEER_DEPENDENCY=59]="INVALID_RANGE_PEER_DEPENDENCY",Me[Me.INCOMPATIBLE_PEER_DEPENDENCY=60]="INCOMPATIBLE_PEER_DEPENDENCY",Me[Me.DEPRECATED_PACKAGE=61]="DEPRECATED_PACKAGE",Me[Me.INCOMPATIBLE_OS=62]="INCOMPATIBLE_OS",Me[Me.INCOMPATIBLE_CPU=63]="INCOMPATIBLE_CPU",Me[Me.FROZEN_ARTIFACT_EXCEPTION=64]="FROZEN_ARTIFACT_EXCEPTION",Me[Me.TELEMETRY_NOTICE=65]="TELEMETRY_NOTICE",Me[Me.PATCH_HUNK_FAILED=66]="PATCH_HUNK_FAILED",Me[Me.INVALID_CONFIGURATION_VALUE=67]="INVALID_CONFIGURATION_VALUE",Me[Me.UNUSED_PACKAGE_EXTENSION=68]="UNUSED_PACKAGE_EXTENSION",Me[Me.REDUNDANT_PACKAGE_EXTENSION=69]="REDUNDANT_PACKAGE_EXTENSION",Me[Me.AUTO_NM_SUCCESS=70]="AUTO_NM_SUCCESS",Me[Me.NM_CANT_INSTALL_EXTERNAL_SOFT_LINK=71]="NM_CANT_INSTALL_EXTERNAL_SOFT_LINK",Me[Me.NM_PRESERVE_SYMLINKS_REQUIRED=72]="NM_PRESERVE_SYMLINKS_REQUIRED",Me[Me.UPDATE_LOCKFILE_ONLY_SKIP_LINK=73]="UPDATE_LOCKFILE_ONLY_SKIP_LINK",Me[Me.NM_HARDLINKS_MODE_DOWNGRADED=74]="NM_HARDLINKS_MODE_DOWNGRADED",Me[Me.PROLOG_INSTANTIATION_ERROR=75]="PROLOG_INSTANTIATION_ERROR",Me[Me.INCOMPATIBLE_ARCHITECTURE=76]="INCOMPATIBLE_ARCHITECTURE",Me[Me.GHOST_ARCHITECTURE=77]="GHOST_ARCHITECTURE",Me[Me.RESOLUTION_MISMATCH=78]="RESOLUTION_MISMATCH",Me[Me.PROLOG_LIMIT_EXCEEDED=79]="PROLOG_LIMIT_EXCEEDED",Me[Me.NETWORK_DISABLED=80]="NETWORK_DISABLED",Me[Me.NETWORK_UNSAFE_HTTP=81]="NETWORK_UNSAFE_HTTP",Me[Me.RESOLUTION_FAILED=82]="RESOLUTION_FAILED",Me[Me.AUTOMERGE_GIT_ERROR=83]="AUTOMERGE_GIT_ERROR",Me[Me.CONSTRAINTS_CHECK_FAILED=84]="CONSTRAINTS_CHECK_FAILED",Me[Me.UPDATED_RESOLUTION_RECORD=85]="UPDATED_RESOLUTION_RECORD",Me[Me.EXPLAIN_PEER_DEPENDENCIES_CTA=86]="EXPLAIN_PEER_DEPENDENCIES_CTA",Me[Me.MIGRATION_SUCCESS=87]="MIGRATION_SUCCESS",Me[Me.VERSION_NOTICE=88]="VERSION_NOTICE",Me[Me.TIPS_NOTICE=89]="TIPS_NOTICE",Me[Me.OFFLINE_MODE_ENABLED=90]="OFFLINE_MODE_ENABLED",Me[Me.INVALID_PROVENANCE_ENVIRONMENT=91]="INVALID_PROVENANCE_ENVIRONMENT",Me))(Dr||{})});var uB=L((MWt,sie)=>{var vXe="2.0.0",SXe=Number.MAX_SAFE_INTEGER||9007199254740991,DXe=16,bXe=250,PXe=["major","premajor","minor","preminor","patch","prepatch","prerelease"];sie.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:DXe,MAX_SAFE_BUILD_LENGTH:bXe,MAX_SAFE_INTEGER:SXe,RELEASE_TYPES:PXe,SEMVER_SPEC_VERSION:vXe,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}});var fB=L((_Wt,oie)=>{var xXe=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...t)=>console.error("SEMVER",...t):()=>{};oie.exports=xXe});var vE=L((Sp,aie)=>{var{MAX_SAFE_COMPONENT_LENGTH:LU,MAX_SAFE_BUILD_LENGTH:kXe,MAX_LENGTH:QXe}=uB(),TXe=fB();Sp=aie.exports={};var RXe=Sp.re=[],FXe=Sp.safeRe=[],rr=Sp.src=[],nr=Sp.t={},NXe=0,MU="[a-zA-Z0-9-]",OXe=[["\\s",1],["\\d",QXe],[MU,kXe]],LXe=t=>{for(let[e,r]of OXe)t=t.split(`${e}*`).join(`${e}{0,${r}}`).split(`${e}+`).join(`${e}{1,${r}}`);return t},Kr=(t,e,r)=>{let s=LXe(e),a=NXe++;TXe(t,a,e),nr[t]=a,rr[a]=e,RXe[a]=new RegExp(e,r?"g":void 0),FXe[a]=new RegExp(s,r?"g":void 0)};Kr("NUMERICIDENTIFIER","0|[1-9]\\d*");Kr("NUMERICIDENTIFIERLOOSE","\\d+");Kr("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${MU}*`);Kr("MAINVERSION",`(${rr[nr.NUMERICIDENTIFIER]})\\.(${rr[nr.NUMERICIDENTIFIER]})\\.(${rr[nr.NUMERICIDENTIFIER]})`);Kr("MAINVERSIONLOOSE",`(${rr[nr.NUMERICIDENTIFIERLOOSE]})\\.(${rr[nr.NUMERICIDENTIFIERLOOSE]})\\.(${rr[nr.NUMERICIDENTIFIERLOOSE]})`);Kr("PRERELEASEIDENTIFIER",`(?:${rr[nr.NUMERICIDENTIFIER]}|${rr[nr.NONNUMERICIDENTIFIER]})`);Kr("PRERELEASEIDENTIFIERLOOSE",`(?:${rr[nr.NUMERICIDENTIFIERLOOSE]}|${rr[nr.NONNUMERICIDENTIFIER]})`);Kr("PRERELEASE",`(?:-(${rr[nr.PRERELEASEIDENTIFIER]}(?:\\.${rr[nr.PRERELEASEIDENTIFIER]})*))`);Kr("PRERELEASELOOSE",`(?:-?(${rr[nr.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${rr[nr.PRERELEASEIDENTIFIERLOOSE]})*))`);Kr("BUILDIDENTIFIER",`${MU}+`);Kr("BUILD",`(?:\\+(${rr[nr.BUILDIDENTIFIER]}(?:\\.${rr[nr.BUILDIDENTIFIER]})*))`);Kr("FULLPLAIN",`v?${rr[nr.MAINVERSION]}${rr[nr.PRERELEASE]}?${rr[nr.BUILD]}?`);Kr("FULL",`^${rr[nr.FULLPLAIN]}$`);Kr("LOOSEPLAIN",`[v=\\s]*${rr[nr.MAINVERSIONLOOSE]}${rr[nr.PRERELEASELOOSE]}?${rr[nr.BUILD]}?`);Kr("LOOSE",`^${rr[nr.LOOSEPLAIN]}$`);Kr("GTLT","((?:<|>)?=?)");Kr("XRANGEIDENTIFIERLOOSE",`${rr[nr.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);Kr("XRANGEIDENTIFIER",`${rr[nr.NUMERICIDENTIFIER]}|x|X|\\*`);Kr("XRANGEPLAIN",`[v=\\s]*(${rr[nr.XRANGEIDENTIFIER]})(?:\\.(${rr[nr.XRANGEIDENTIFIER]})(?:\\.(${rr[nr.XRANGEIDENTIFIER]})(?:${rr[nr.PRERELEASE]})?${rr[nr.BUILD]}?)?)?`);Kr("XRANGEPLAINLOOSE",`[v=\\s]*(${rr[nr.XRANGEIDENTIFIERLOOSE]})(?:\\.(${rr[nr.XRANGEIDENTIFIERLOOSE]})(?:\\.(${rr[nr.XRANGEIDENTIFIERLOOSE]})(?:${rr[nr.PRERELEASELOOSE]})?${rr[nr.BUILD]}?)?)?`);Kr("XRANGE",`^${rr[nr.GTLT]}\\s*${rr[nr.XRANGEPLAIN]}$`);Kr("XRANGELOOSE",`^${rr[nr.GTLT]}\\s*${rr[nr.XRANGEPLAINLOOSE]}$`);Kr("COERCEPLAIN",`(^|[^\\d])(\\d{1,${LU}})(?:\\.(\\d{1,${LU}}))?(?:\\.(\\d{1,${LU}}))?`);Kr("COERCE",`${rr[nr.COERCEPLAIN]}(?:$|[^\\d])`);Kr("COERCEFULL",rr[nr.COERCEPLAIN]+`(?:${rr[nr.PRERELEASE]})?(?:${rr[nr.BUILD]})?(?:$|[^\\d])`);Kr("COERCERTL",rr[nr.COERCE],!0);Kr("COERCERTLFULL",rr[nr.COERCEFULL],!0);Kr("LONETILDE","(?:~>?)");Kr("TILDETRIM",`(\\s*)${rr[nr.LONETILDE]}\\s+`,!0);Sp.tildeTrimReplace="$1~";Kr("TILDE",`^${rr[nr.LONETILDE]}${rr[nr.XRANGEPLAIN]}$`);Kr("TILDELOOSE",`^${rr[nr.LONETILDE]}${rr[nr.XRANGEPLAINLOOSE]}$`);Kr("LONECARET","(?:\\^)");Kr("CARETTRIM",`(\\s*)${rr[nr.LONECARET]}\\s+`,!0);Sp.caretTrimReplace="$1^";Kr("CARET",`^${rr[nr.LONECARET]}${rr[nr.XRANGEPLAIN]}$`);Kr("CARETLOOSE",`^${rr[nr.LONECARET]}${rr[nr.XRANGEPLAINLOOSE]}$`);Kr("COMPARATORLOOSE",`^${rr[nr.GTLT]}\\s*(${rr[nr.LOOSEPLAIN]})$|^$`);Kr("COMPARATOR",`^${rr[nr.GTLT]}\\s*(${rr[nr.FULLPLAIN]})$|^$`);Kr("COMPARATORTRIM",`(\\s*)${rr[nr.GTLT]}\\s*(${rr[nr.LOOSEPLAIN]}|${rr[nr.XRANGEPLAIN]})`,!0);Sp.comparatorTrimReplace="$1$2$3";Kr("HYPHENRANGE",`^\\s*(${rr[nr.XRANGEPLAIN]})\\s+-\\s+(${rr[nr.XRANGEPLAIN]})\\s*$`);Kr("HYPHENRANGELOOSE",`^\\s*(${rr[nr.XRANGEPLAINLOOSE]})\\s+-\\s+(${rr[nr.XRANGEPLAINLOOSE]})\\s*$`);Kr("STAR","(<|>)?=?\\s*\\*");Kr("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$");Kr("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")});var ik=L((UWt,lie)=>{var MXe=Object.freeze({loose:!0}),_Xe=Object.freeze({}),UXe=t=>t?typeof t!="object"?MXe:t:_Xe;lie.exports=UXe});var _U=L((HWt,fie)=>{var cie=/^[0-9]+$/,uie=(t,e)=>{let r=cie.test(t),s=cie.test(e);return r&&s&&(t=+t,e=+e),t===e?0:r&&!s?-1:s&&!r?1:tuie(e,t);fie.exports={compareIdentifiers:uie,rcompareIdentifiers:HXe}});var Go=L((jWt,gie)=>{var sk=fB(),{MAX_LENGTH:Aie,MAX_SAFE_INTEGER:ok}=uB(),{safeRe:pie,t:hie}=vE(),jXe=ik(),{compareIdentifiers:SE}=_U(),UU=class t{constructor(e,r){if(r=jXe(r),e instanceof t){if(e.loose===!!r.loose&&e.includePrerelease===!!r.includePrerelease)return e;e=e.version}else if(typeof e!="string")throw new TypeError(`Invalid version. Must be a string. Got type "${typeof e}".`);if(e.length>Aie)throw new TypeError(`version is longer than ${Aie} characters`);sk("SemVer",e,r),this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease;let s=e.trim().match(r.loose?pie[hie.LOOSE]:pie[hie.FULL]);if(!s)throw new TypeError(`Invalid Version: ${e}`);if(this.raw=e,this.major=+s[1],this.minor=+s[2],this.patch=+s[3],this.major>ok||this.major<0)throw new TypeError("Invalid major version");if(this.minor>ok||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>ok||this.patch<0)throw new TypeError("Invalid patch version");s[4]?this.prerelease=s[4].split(".").map(a=>{if(/^[0-9]+$/.test(a)){let n=+a;if(n>=0&&n=0;)typeof this.prerelease[n]=="number"&&(this.prerelease[n]++,n=-2);if(n===-1){if(r===this.prerelease.join(".")&&s===!1)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(a)}}if(r){let n=[r,a];s===!1&&(n=[r]),SE(this.prerelease[0],r)===0?isNaN(this.prerelease[1])&&(this.prerelease=n):this.prerelease=n}break}default:throw new Error(`invalid increment argument: ${e}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}};gie.exports=UU});var _d=L((qWt,mie)=>{var die=Go(),qXe=(t,e,r=!1)=>{if(t instanceof die)return t;try{return new die(t,e)}catch(s){if(!r)return null;throw s}};mie.exports=qXe});var Eie=L((GWt,yie)=>{var GXe=_d(),WXe=(t,e)=>{let r=GXe(t,e);return r?r.version:null};yie.exports=WXe});var Cie=L((WWt,Iie)=>{var YXe=_d(),VXe=(t,e)=>{let r=YXe(t.trim().replace(/^[=v]+/,""),e);return r?r.version:null};Iie.exports=VXe});var vie=L((YWt,Bie)=>{var wie=Go(),KXe=(t,e,r,s,a)=>{typeof r=="string"&&(a=s,s=r,r=void 0);try{return new wie(t instanceof wie?t.version:t,r).inc(e,s,a).version}catch{return null}};Bie.exports=KXe});var bie=L((VWt,Die)=>{var Sie=_d(),JXe=(t,e)=>{let r=Sie(t,null,!0),s=Sie(e,null,!0),a=r.compare(s);if(a===0)return null;let n=a>0,c=n?r:s,f=n?s:r,p=!!c.prerelease.length;if(!!f.prerelease.length&&!p)return!f.patch&&!f.minor?"major":c.patch?"patch":c.minor?"minor":"major";let E=p?"pre":"";return r.major!==s.major?E+"major":r.minor!==s.minor?E+"minor":r.patch!==s.patch?E+"patch":"prerelease"};Die.exports=JXe});var xie=L((KWt,Pie)=>{var zXe=Go(),ZXe=(t,e)=>new zXe(t,e).major;Pie.exports=ZXe});var Qie=L((JWt,kie)=>{var XXe=Go(),$Xe=(t,e)=>new XXe(t,e).minor;kie.exports=$Xe});var Rie=L((zWt,Tie)=>{var e$e=Go(),t$e=(t,e)=>new e$e(t,e).patch;Tie.exports=t$e});var Nie=L((ZWt,Fie)=>{var r$e=_d(),n$e=(t,e)=>{let r=r$e(t,e);return r&&r.prerelease.length?r.prerelease:null};Fie.exports=n$e});var vc=L((XWt,Lie)=>{var Oie=Go(),i$e=(t,e,r)=>new Oie(t,r).compare(new Oie(e,r));Lie.exports=i$e});var _ie=L(($Wt,Mie)=>{var s$e=vc(),o$e=(t,e,r)=>s$e(e,t,r);Mie.exports=o$e});var Hie=L((eYt,Uie)=>{var a$e=vc(),l$e=(t,e)=>a$e(t,e,!0);Uie.exports=l$e});var ak=L((tYt,qie)=>{var jie=Go(),c$e=(t,e,r)=>{let s=new jie(t,r),a=new jie(e,r);return s.compare(a)||s.compareBuild(a)};qie.exports=c$e});var Wie=L((rYt,Gie)=>{var u$e=ak(),f$e=(t,e)=>t.sort((r,s)=>u$e(r,s,e));Gie.exports=f$e});var Vie=L((nYt,Yie)=>{var A$e=ak(),p$e=(t,e)=>t.sort((r,s)=>A$e(s,r,e));Yie.exports=p$e});var AB=L((iYt,Kie)=>{var h$e=vc(),g$e=(t,e,r)=>h$e(t,e,r)>0;Kie.exports=g$e});var lk=L((sYt,Jie)=>{var d$e=vc(),m$e=(t,e,r)=>d$e(t,e,r)<0;Jie.exports=m$e});var HU=L((oYt,zie)=>{var y$e=vc(),E$e=(t,e,r)=>y$e(t,e,r)===0;zie.exports=E$e});var jU=L((aYt,Zie)=>{var I$e=vc(),C$e=(t,e,r)=>I$e(t,e,r)!==0;Zie.exports=C$e});var ck=L((lYt,Xie)=>{var w$e=vc(),B$e=(t,e,r)=>w$e(t,e,r)>=0;Xie.exports=B$e});var uk=L((cYt,$ie)=>{var v$e=vc(),S$e=(t,e,r)=>v$e(t,e,r)<=0;$ie.exports=S$e});var qU=L((uYt,ese)=>{var D$e=HU(),b$e=jU(),P$e=AB(),x$e=ck(),k$e=lk(),Q$e=uk(),T$e=(t,e,r,s)=>{switch(e){case"===":return typeof t=="object"&&(t=t.version),typeof r=="object"&&(r=r.version),t===r;case"!==":return typeof t=="object"&&(t=t.version),typeof r=="object"&&(r=r.version),t!==r;case"":case"=":case"==":return D$e(t,r,s);case"!=":return b$e(t,r,s);case">":return P$e(t,r,s);case">=":return x$e(t,r,s);case"<":return k$e(t,r,s);case"<=":return Q$e(t,r,s);default:throw new TypeError(`Invalid operator: ${e}`)}};ese.exports=T$e});var rse=L((fYt,tse)=>{var R$e=Go(),F$e=_d(),{safeRe:fk,t:Ak}=vE(),N$e=(t,e)=>{if(t instanceof R$e)return t;if(typeof t=="number"&&(t=String(t)),typeof t!="string")return null;e=e||{};let r=null;if(!e.rtl)r=t.match(e.includePrerelease?fk[Ak.COERCEFULL]:fk[Ak.COERCE]);else{let p=e.includePrerelease?fk[Ak.COERCERTLFULL]:fk[Ak.COERCERTL],h;for(;(h=p.exec(t))&&(!r||r.index+r[0].length!==t.length);)(!r||h.index+h[0].length!==r.index+r[0].length)&&(r=h),p.lastIndex=h.index+h[1].length+h[2].length;p.lastIndex=-1}if(r===null)return null;let s=r[2],a=r[3]||"0",n=r[4]||"0",c=e.includePrerelease&&r[5]?`-${r[5]}`:"",f=e.includePrerelease&&r[6]?`+${r[6]}`:"";return F$e(`${s}.${a}.${n}${c}${f}`,e)};tse.exports=N$e});var ise=L((AYt,nse)=>{"use strict";nse.exports=function(t){t.prototype[Symbol.iterator]=function*(){for(let e=this.head;e;e=e.next)yield e.value}}});var pk=L((pYt,sse)=>{"use strict";sse.exports=Fn;Fn.Node=Ud;Fn.create=Fn;function Fn(t){var e=this;if(e instanceof Fn||(e=new Fn),e.tail=null,e.head=null,e.length=0,t&&typeof t.forEach=="function")t.forEach(function(a){e.push(a)});else if(arguments.length>0)for(var r=0,s=arguments.length;r1)r=e;else if(this.head)s=this.head.next,r=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var a=0;s!==null;a++)r=t(r,s.value,a),s=s.next;return r};Fn.prototype.reduceReverse=function(t,e){var r,s=this.tail;if(arguments.length>1)r=e;else if(this.tail)s=this.tail.prev,r=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(var a=this.length-1;s!==null;a--)r=t(r,s.value,a),s=s.prev;return r};Fn.prototype.toArray=function(){for(var t=new Array(this.length),e=0,r=this.head;r!==null;e++)t[e]=r.value,r=r.next;return t};Fn.prototype.toArrayReverse=function(){for(var t=new Array(this.length),e=0,r=this.tail;r!==null;e++)t[e]=r.value,r=r.prev;return t};Fn.prototype.slice=function(t,e){e=e||this.length,e<0&&(e+=this.length),t=t||0,t<0&&(t+=this.length);var r=new Fn;if(ethis.length&&(e=this.length);for(var s=0,a=this.head;a!==null&&sthis.length&&(e=this.length);for(var s=this.length,a=this.tail;a!==null&&s>e;s--)a=a.prev;for(;a!==null&&s>t;s--,a=a.prev)r.push(a.value);return r};Fn.prototype.splice=function(t,e,...r){t>this.length&&(t=this.length-1),t<0&&(t=this.length+t);for(var s=0,a=this.head;a!==null&&s{"use strict";var _$e=pk(),Hd=Symbol("max"),bp=Symbol("length"),DE=Symbol("lengthCalculator"),hB=Symbol("allowStale"),jd=Symbol("maxAge"),Dp=Symbol("dispose"),ose=Symbol("noDisposeOnSet"),Gs=Symbol("lruList"),_u=Symbol("cache"),lse=Symbol("updateAgeOnGet"),GU=()=>1,YU=class{constructor(e){if(typeof e=="number"&&(e={max:e}),e||(e={}),e.max&&(typeof e.max!="number"||e.max<0))throw new TypeError("max must be a non-negative number");let r=this[Hd]=e.max||1/0,s=e.length||GU;if(this[DE]=typeof s!="function"?GU:s,this[hB]=e.stale||!1,e.maxAge&&typeof e.maxAge!="number")throw new TypeError("maxAge must be a number");this[jd]=e.maxAge||0,this[Dp]=e.dispose,this[ose]=e.noDisposeOnSet||!1,this[lse]=e.updateAgeOnGet||!1,this.reset()}set max(e){if(typeof e!="number"||e<0)throw new TypeError("max must be a non-negative number");this[Hd]=e||1/0,pB(this)}get max(){return this[Hd]}set allowStale(e){this[hB]=!!e}get allowStale(){return this[hB]}set maxAge(e){if(typeof e!="number")throw new TypeError("maxAge must be a non-negative number");this[jd]=e,pB(this)}get maxAge(){return this[jd]}set lengthCalculator(e){typeof e!="function"&&(e=GU),e!==this[DE]&&(this[DE]=e,this[bp]=0,this[Gs].forEach(r=>{r.length=this[DE](r.value,r.key),this[bp]+=r.length})),pB(this)}get lengthCalculator(){return this[DE]}get length(){return this[bp]}get itemCount(){return this[Gs].length}rforEach(e,r){r=r||this;for(let s=this[Gs].tail;s!==null;){let a=s.prev;ase(this,e,s,r),s=a}}forEach(e,r){r=r||this;for(let s=this[Gs].head;s!==null;){let a=s.next;ase(this,e,s,r),s=a}}keys(){return this[Gs].toArray().map(e=>e.key)}values(){return this[Gs].toArray().map(e=>e.value)}reset(){this[Dp]&&this[Gs]&&this[Gs].length&&this[Gs].forEach(e=>this[Dp](e.key,e.value)),this[_u]=new Map,this[Gs]=new _$e,this[bp]=0}dump(){return this[Gs].map(e=>hk(this,e)?!1:{k:e.key,v:e.value,e:e.now+(e.maxAge||0)}).toArray().filter(e=>e)}dumpLru(){return this[Gs]}set(e,r,s){if(s=s||this[jd],s&&typeof s!="number")throw new TypeError("maxAge must be a number");let a=s?Date.now():0,n=this[DE](r,e);if(this[_u].has(e)){if(n>this[Hd])return bE(this,this[_u].get(e)),!1;let p=this[_u].get(e).value;return this[Dp]&&(this[ose]||this[Dp](e,p.value)),p.now=a,p.maxAge=s,p.value=r,this[bp]+=n-p.length,p.length=n,this.get(e),pB(this),!0}let c=new VU(e,r,n,a,s);return c.length>this[Hd]?(this[Dp]&&this[Dp](e,r),!1):(this[bp]+=c.length,this[Gs].unshift(c),this[_u].set(e,this[Gs].head),pB(this),!0)}has(e){if(!this[_u].has(e))return!1;let r=this[_u].get(e).value;return!hk(this,r)}get(e){return WU(this,e,!0)}peek(e){return WU(this,e,!1)}pop(){let e=this[Gs].tail;return e?(bE(this,e),e.value):null}del(e){bE(this,this[_u].get(e))}load(e){this.reset();let r=Date.now();for(let s=e.length-1;s>=0;s--){let a=e[s],n=a.e||0;if(n===0)this.set(a.k,a.v);else{let c=n-r;c>0&&this.set(a.k,a.v,c)}}}prune(){this[_u].forEach((e,r)=>WU(this,r,!1))}},WU=(t,e,r)=>{let s=t[_u].get(e);if(s){let a=s.value;if(hk(t,a)){if(bE(t,s),!t[hB])return}else r&&(t[lse]&&(s.value.now=Date.now()),t[Gs].unshiftNode(s));return a.value}},hk=(t,e)=>{if(!e||!e.maxAge&&!t[jd])return!1;let r=Date.now()-e.now;return e.maxAge?r>e.maxAge:t[jd]&&r>t[jd]},pB=t=>{if(t[bp]>t[Hd])for(let e=t[Gs].tail;t[bp]>t[Hd]&&e!==null;){let r=e.prev;bE(t,e),e=r}},bE=(t,e)=>{if(e){let r=e.value;t[Dp]&&t[Dp](r.key,r.value),t[bp]-=r.length,t[_u].delete(r.key),t[Gs].removeNode(e)}},VU=class{constructor(e,r,s,a,n){this.key=e,this.value=r,this.length=s,this.now=a,this.maxAge=n||0}},ase=(t,e,r,s)=>{let a=r.value;hk(t,a)&&(bE(t,r),t[hB]||(a=void 0)),a&&e.call(s,a.value,a.key,t)};cse.exports=YU});var Sc=L((gYt,hse)=>{var KU=class t{constructor(e,r){if(r=H$e(r),e instanceof t)return e.loose===!!r.loose&&e.includePrerelease===!!r.includePrerelease?e:new t(e.raw,r);if(e instanceof JU)return this.raw=e.value,this.set=[[e]],this.format(),this;if(this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease,this.raw=e.trim().split(/\s+/).join(" "),this.set=this.raw.split("||").map(s=>this.parseRange(s.trim())).filter(s=>s.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){let s=this.set[0];if(this.set=this.set.filter(a=>!Ase(a[0])),this.set.length===0)this.set=[s];else if(this.set.length>1){for(let a of this.set)if(a.length===1&&K$e(a[0])){this.set=[a];break}}}this.format()}format(){return this.range=this.set.map(e=>e.join(" ").trim()).join("||").trim(),this.range}toString(){return this.range}parseRange(e){let s=((this.options.includePrerelease&&Y$e)|(this.options.loose&&V$e))+":"+e,a=fse.get(s);if(a)return a;let n=this.options.loose,c=n?ol[Ba.HYPHENRANGELOOSE]:ol[Ba.HYPHENRANGE];e=e.replace(c,iet(this.options.includePrerelease)),vi("hyphen replace",e),e=e.replace(ol[Ba.COMPARATORTRIM],q$e),vi("comparator trim",e),e=e.replace(ol[Ba.TILDETRIM],G$e),vi("tilde trim",e),e=e.replace(ol[Ba.CARETTRIM],W$e),vi("caret trim",e);let f=e.split(" ").map(C=>J$e(C,this.options)).join(" ").split(/\s+/).map(C=>net(C,this.options));n&&(f=f.filter(C=>(vi("loose invalid filter",C,this.options),!!C.match(ol[Ba.COMPARATORLOOSE])))),vi("range list",f);let p=new Map,h=f.map(C=>new JU(C,this.options));for(let C of h){if(Ase(C))return[C];p.set(C.value,C)}p.size>1&&p.has("")&&p.delete("");let E=[...p.values()];return fse.set(s,E),E}intersects(e,r){if(!(e instanceof t))throw new TypeError("a Range is required");return this.set.some(s=>pse(s,r)&&e.set.some(a=>pse(a,r)&&s.every(n=>a.every(c=>n.intersects(c,r)))))}test(e){if(!e)return!1;if(typeof e=="string")try{e=new j$e(e,this.options)}catch{return!1}for(let r=0;rt.value==="<0.0.0-0",K$e=t=>t.value==="",pse=(t,e)=>{let r=!0,s=t.slice(),a=s.pop();for(;r&&s.length;)r=s.every(n=>a.intersects(n,e)),a=s.pop();return r},J$e=(t,e)=>(vi("comp",t,e),t=X$e(t,e),vi("caret",t),t=z$e(t,e),vi("tildes",t),t=eet(t,e),vi("xrange",t),t=ret(t,e),vi("stars",t),t),va=t=>!t||t.toLowerCase()==="x"||t==="*",z$e=(t,e)=>t.trim().split(/\s+/).map(r=>Z$e(r,e)).join(" "),Z$e=(t,e)=>{let r=e.loose?ol[Ba.TILDELOOSE]:ol[Ba.TILDE];return t.replace(r,(s,a,n,c,f)=>{vi("tilde",t,s,a,n,c,f);let p;return va(a)?p="":va(n)?p=`>=${a}.0.0 <${+a+1}.0.0-0`:va(c)?p=`>=${a}.${n}.0 <${a}.${+n+1}.0-0`:f?(vi("replaceTilde pr",f),p=`>=${a}.${n}.${c}-${f} <${a}.${+n+1}.0-0`):p=`>=${a}.${n}.${c} <${a}.${+n+1}.0-0`,vi("tilde return",p),p})},X$e=(t,e)=>t.trim().split(/\s+/).map(r=>$$e(r,e)).join(" "),$$e=(t,e)=>{vi("caret",t,e);let r=e.loose?ol[Ba.CARETLOOSE]:ol[Ba.CARET],s=e.includePrerelease?"-0":"";return t.replace(r,(a,n,c,f,p)=>{vi("caret",t,a,n,c,f,p);let h;return va(n)?h="":va(c)?h=`>=${n}.0.0${s} <${+n+1}.0.0-0`:va(f)?n==="0"?h=`>=${n}.${c}.0${s} <${n}.${+c+1}.0-0`:h=`>=${n}.${c}.0${s} <${+n+1}.0.0-0`:p?(vi("replaceCaret pr",p),n==="0"?c==="0"?h=`>=${n}.${c}.${f}-${p} <${n}.${c}.${+f+1}-0`:h=`>=${n}.${c}.${f}-${p} <${n}.${+c+1}.0-0`:h=`>=${n}.${c}.${f}-${p} <${+n+1}.0.0-0`):(vi("no pr"),n==="0"?c==="0"?h=`>=${n}.${c}.${f}${s} <${n}.${c}.${+f+1}-0`:h=`>=${n}.${c}.${f}${s} <${n}.${+c+1}.0-0`:h=`>=${n}.${c}.${f} <${+n+1}.0.0-0`),vi("caret return",h),h})},eet=(t,e)=>(vi("replaceXRanges",t,e),t.split(/\s+/).map(r=>tet(r,e)).join(" ")),tet=(t,e)=>{t=t.trim();let r=e.loose?ol[Ba.XRANGELOOSE]:ol[Ba.XRANGE];return t.replace(r,(s,a,n,c,f,p)=>{vi("xRange",t,s,a,n,c,f,p);let h=va(n),E=h||va(c),C=E||va(f),S=C;return a==="="&&S&&(a=""),p=e.includePrerelease?"-0":"",h?a===">"||a==="<"?s="<0.0.0-0":s="*":a&&S?(E&&(c=0),f=0,a===">"?(a=">=",E?(n=+n+1,c=0,f=0):(c=+c+1,f=0)):a==="<="&&(a="<",E?n=+n+1:c=+c+1),a==="<"&&(p="-0"),s=`${a+n}.${c}.${f}${p}`):E?s=`>=${n}.0.0${p} <${+n+1}.0.0-0`:C&&(s=`>=${n}.${c}.0${p} <${n}.${+c+1}.0-0`),vi("xRange return",s),s})},ret=(t,e)=>(vi("replaceStars",t,e),t.trim().replace(ol[Ba.STAR],"")),net=(t,e)=>(vi("replaceGTE0",t,e),t.trim().replace(ol[e.includePrerelease?Ba.GTE0PRE:Ba.GTE0],"")),iet=t=>(e,r,s,a,n,c,f,p,h,E,C,S,P)=>(va(s)?r="":va(a)?r=`>=${s}.0.0${t?"-0":""}`:va(n)?r=`>=${s}.${a}.0${t?"-0":""}`:c?r=`>=${r}`:r=`>=${r}${t?"-0":""}`,va(h)?p="":va(E)?p=`<${+h+1}.0.0-0`:va(C)?p=`<${h}.${+E+1}.0-0`:S?p=`<=${h}.${E}.${C}-${S}`:t?p=`<${h}.${E}.${+C+1}-0`:p=`<=${p}`,`${r} ${p}`.trim()),set=(t,e,r)=>{for(let s=0;s0){let a=t[s].semver;if(a.major===e.major&&a.minor===e.minor&&a.patch===e.patch)return!0}return!1}return!0}});var gB=L((dYt,Ise)=>{var dB=Symbol("SemVer ANY"),XU=class t{static get ANY(){return dB}constructor(e,r){if(r=gse(r),e instanceof t){if(e.loose===!!r.loose)return e;e=e.value}e=e.trim().split(/\s+/).join(" "),ZU("comparator",e,r),this.options=r,this.loose=!!r.loose,this.parse(e),this.semver===dB?this.value="":this.value=this.operator+this.semver.version,ZU("comp",this)}parse(e){let r=this.options.loose?dse[mse.COMPARATORLOOSE]:dse[mse.COMPARATOR],s=e.match(r);if(!s)throw new TypeError(`Invalid comparator: ${e}`);this.operator=s[1]!==void 0?s[1]:"",this.operator==="="&&(this.operator=""),s[2]?this.semver=new yse(s[2],this.options.loose):this.semver=dB}toString(){return this.value}test(e){if(ZU("Comparator.test",e,this.options.loose),this.semver===dB||e===dB)return!0;if(typeof e=="string")try{e=new yse(e,this.options)}catch{return!1}return zU(e,this.operator,this.semver,this.options)}intersects(e,r){if(!(e instanceof t))throw new TypeError("a Comparator is required");return this.operator===""?this.value===""?!0:new Ese(e.value,r).test(this.value):e.operator===""?e.value===""?!0:new Ese(this.value,r).test(e.semver):(r=gse(r),r.includePrerelease&&(this.value==="<0.0.0-0"||e.value==="<0.0.0-0")||!r.includePrerelease&&(this.value.startsWith("<0.0.0")||e.value.startsWith("<0.0.0"))?!1:!!(this.operator.startsWith(">")&&e.operator.startsWith(">")||this.operator.startsWith("<")&&e.operator.startsWith("<")||this.semver.version===e.semver.version&&this.operator.includes("=")&&e.operator.includes("=")||zU(this.semver,"<",e.semver,r)&&this.operator.startsWith(">")&&e.operator.startsWith("<")||zU(this.semver,">",e.semver,r)&&this.operator.startsWith("<")&&e.operator.startsWith(">")))}};Ise.exports=XU;var gse=ik(),{safeRe:dse,t:mse}=vE(),zU=qU(),ZU=fB(),yse=Go(),Ese=Sc()});var mB=L((mYt,Cse)=>{var oet=Sc(),aet=(t,e,r)=>{try{e=new oet(e,r)}catch{return!1}return e.test(t)};Cse.exports=aet});var Bse=L((yYt,wse)=>{var cet=Sc(),uet=(t,e)=>new cet(t,e).set.map(r=>r.map(s=>s.value).join(" ").trim().split(" "));wse.exports=uet});var Sse=L((EYt,vse)=>{var fet=Go(),Aet=Sc(),pet=(t,e,r)=>{let s=null,a=null,n=null;try{n=new Aet(e,r)}catch{return null}return t.forEach(c=>{n.test(c)&&(!s||a.compare(c)===-1)&&(s=c,a=new fet(s,r))}),s};vse.exports=pet});var bse=L((IYt,Dse)=>{var het=Go(),get=Sc(),det=(t,e,r)=>{let s=null,a=null,n=null;try{n=new get(e,r)}catch{return null}return t.forEach(c=>{n.test(c)&&(!s||a.compare(c)===1)&&(s=c,a=new het(s,r))}),s};Dse.exports=det});var kse=L((CYt,xse)=>{var $U=Go(),met=Sc(),Pse=AB(),yet=(t,e)=>{t=new met(t,e);let r=new $U("0.0.0");if(t.test(r)||(r=new $U("0.0.0-0"),t.test(r)))return r;r=null;for(let s=0;s{let f=new $U(c.semver.version);switch(c.operator){case">":f.prerelease.length===0?f.patch++:f.prerelease.push(0),f.raw=f.format();case"":case">=":(!n||Pse(f,n))&&(n=f);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${c.operator}`)}}),n&&(!r||Pse(r,n))&&(r=n)}return r&&t.test(r)?r:null};xse.exports=yet});var Tse=L((wYt,Qse)=>{var Eet=Sc(),Iet=(t,e)=>{try{return new Eet(t,e).range||"*"}catch{return null}};Qse.exports=Iet});var gk=L((BYt,Ose)=>{var Cet=Go(),Nse=gB(),{ANY:wet}=Nse,Bet=Sc(),vet=mB(),Rse=AB(),Fse=lk(),Det=uk(),bet=ck(),Pet=(t,e,r,s)=>{t=new Cet(t,s),e=new Bet(e,s);let a,n,c,f,p;switch(r){case">":a=Rse,n=Det,c=Fse,f=">",p=">=";break;case"<":a=Fse,n=bet,c=Rse,f="<",p="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(vet(t,e,s))return!1;for(let h=0;h{P.semver===wet&&(P=new Nse(">=0.0.0")),C=C||P,S=S||P,a(P.semver,C.semver,s)?C=P:c(P.semver,S.semver,s)&&(S=P)}),C.operator===f||C.operator===p||(!S.operator||S.operator===f)&&n(t,S.semver))return!1;if(S.operator===p&&c(t,S.semver))return!1}return!0};Ose.exports=Pet});var Mse=L((vYt,Lse)=>{var xet=gk(),ket=(t,e,r)=>xet(t,e,">",r);Lse.exports=ket});var Use=L((SYt,_se)=>{var Qet=gk(),Tet=(t,e,r)=>Qet(t,e,"<",r);_se.exports=Tet});var qse=L((DYt,jse)=>{var Hse=Sc(),Ret=(t,e,r)=>(t=new Hse(t,r),e=new Hse(e,r),t.intersects(e,r));jse.exports=Ret});var Wse=L((bYt,Gse)=>{var Fet=mB(),Net=vc();Gse.exports=(t,e,r)=>{let s=[],a=null,n=null,c=t.sort((E,C)=>Net(E,C,r));for(let E of c)Fet(E,e,r)?(n=E,a||(a=E)):(n&&s.push([a,n]),n=null,a=null);a&&s.push([a,null]);let f=[];for(let[E,C]of s)E===C?f.push(E):!C&&E===c[0]?f.push("*"):C?E===c[0]?f.push(`<=${C}`):f.push(`${E} - ${C}`):f.push(`>=${E}`);let p=f.join(" || "),h=typeof e.raw=="string"?e.raw:String(e);return p.length{var Yse=Sc(),t4=gB(),{ANY:e4}=t4,yB=mB(),r4=vc(),Oet=(t,e,r={})=>{if(t===e)return!0;t=new Yse(t,r),e=new Yse(e,r);let s=!1;e:for(let a of t.set){for(let n of e.set){let c=Met(a,n,r);if(s=s||c!==null,c)continue e}if(s)return!1}return!0},Let=[new t4(">=0.0.0-0")],Vse=[new t4(">=0.0.0")],Met=(t,e,r)=>{if(t===e)return!0;if(t.length===1&&t[0].semver===e4){if(e.length===1&&e[0].semver===e4)return!0;r.includePrerelease?t=Let:t=Vse}if(e.length===1&&e[0].semver===e4){if(r.includePrerelease)return!0;e=Vse}let s=new Set,a,n;for(let P of t)P.operator===">"||P.operator===">="?a=Kse(a,P,r):P.operator==="<"||P.operator==="<="?n=Jse(n,P,r):s.add(P.semver);if(s.size>1)return null;let c;if(a&&n){if(c=r4(a.semver,n.semver,r),c>0)return null;if(c===0&&(a.operator!==">="||n.operator!=="<="))return null}for(let P of s){if(a&&!yB(P,String(a),r)||n&&!yB(P,String(n),r))return null;for(let I of e)if(!yB(P,String(I),r))return!1;return!0}let f,p,h,E,C=n&&!r.includePrerelease&&n.semver.prerelease.length?n.semver:!1,S=a&&!r.includePrerelease&&a.semver.prerelease.length?a.semver:!1;C&&C.prerelease.length===1&&n.operator==="<"&&C.prerelease[0]===0&&(C=!1);for(let P of e){if(E=E||P.operator===">"||P.operator===">=",h=h||P.operator==="<"||P.operator==="<=",a){if(S&&P.semver.prerelease&&P.semver.prerelease.length&&P.semver.major===S.major&&P.semver.minor===S.minor&&P.semver.patch===S.patch&&(S=!1),P.operator===">"||P.operator===">="){if(f=Kse(a,P,r),f===P&&f!==a)return!1}else if(a.operator===">="&&!yB(a.semver,String(P),r))return!1}if(n){if(C&&P.semver.prerelease&&P.semver.prerelease.length&&P.semver.major===C.major&&P.semver.minor===C.minor&&P.semver.patch===C.patch&&(C=!1),P.operator==="<"||P.operator==="<="){if(p=Jse(n,P,r),p===P&&p!==n)return!1}else if(n.operator==="<="&&!yB(n.semver,String(P),r))return!1}if(!P.operator&&(n||a)&&c!==0)return!1}return!(a&&h&&!n&&c!==0||n&&E&&!a&&c!==0||S||C)},Kse=(t,e,r)=>{if(!t)return e;let s=r4(t.semver,e.semver,r);return s>0?t:s<0||e.operator===">"&&t.operator===">="?e:t},Jse=(t,e,r)=>{if(!t)return e;let s=r4(t.semver,e.semver,r);return s<0?t:s>0||e.operator==="<"&&t.operator==="<="?e:t};zse.exports=Oet});var fi=L((xYt,eoe)=>{var n4=vE(),Xse=uB(),_et=Go(),$se=_U(),Uet=_d(),Het=Eie(),jet=Cie(),qet=vie(),Get=bie(),Wet=xie(),Yet=Qie(),Vet=Rie(),Ket=Nie(),Jet=vc(),zet=_ie(),Zet=Hie(),Xet=ak(),$et=Wie(),ett=Vie(),ttt=AB(),rtt=lk(),ntt=HU(),itt=jU(),stt=ck(),ott=uk(),att=qU(),ltt=rse(),ctt=gB(),utt=Sc(),ftt=mB(),Att=Bse(),ptt=Sse(),htt=bse(),gtt=kse(),dtt=Tse(),mtt=gk(),ytt=Mse(),Ett=Use(),Itt=qse(),Ctt=Wse(),wtt=Zse();eoe.exports={parse:Uet,valid:Het,clean:jet,inc:qet,diff:Get,major:Wet,minor:Yet,patch:Vet,prerelease:Ket,compare:Jet,rcompare:zet,compareLoose:Zet,compareBuild:Xet,sort:$et,rsort:ett,gt:ttt,lt:rtt,eq:ntt,neq:itt,gte:stt,lte:ott,cmp:att,coerce:ltt,Comparator:ctt,Range:utt,satisfies:ftt,toComparators:Att,maxSatisfying:ptt,minSatisfying:htt,minVersion:gtt,validRange:dtt,outside:mtt,gtr:ytt,ltr:Ett,intersects:Itt,simplifyRange:Ctt,subset:wtt,SemVer:_et,re:n4.re,src:n4.src,tokens:n4.t,SEMVER_SPEC_VERSION:Xse.SEMVER_SPEC_VERSION,RELEASE_TYPES:Xse.RELEASE_TYPES,compareIdentifiers:$se.compareIdentifiers,rcompareIdentifiers:$se.rcompareIdentifiers}});var roe=L((kYt,toe)=>{"use strict";function Btt(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function qd(t,e,r,s){this.message=t,this.expected=e,this.found=r,this.location=s,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,qd)}Btt(qd,Error);qd.buildMessage=function(t,e){var r={literal:function(h){return'"'+a(h.text)+'"'},class:function(h){var E="",C;for(C=0;C0){for(C=1,S=1;C{switch(Te[1]){case"|":return xe|Te[3];case"&":return xe&Te[3];case"^":return xe^Te[3]}},$)},S="!",P=Fe("!",!1),I=function($){return!$},R="(",N=Fe("(",!1),U=")",W=Fe(")",!1),te=function($){return $},ie=/^[^ \t\n\r()!|&\^]/,Ae=Ne([" "," ",` +`,"\r","(",")","!","|","&","^"],!0,!1),ce=function($){return e.queryPattern.test($)},me=function($){return e.checkFn($)},pe=ke("whitespace"),Be=/^[ \t\n\r]/,Ce=Ne([" "," ",` +`,"\r"],!1,!1),g=0,we=0,Ee=[{line:1,column:1}],fe=0,se=[],X=0,De;if("startRule"in e){if(!(e.startRule in s))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');a=s[e.startRule]}function Re(){return t.substring(we,g)}function gt(){return _e(we,g)}function j($,oe){throw oe=oe!==void 0?oe:_e(we,g),b([ke($)],t.substring(we,g),oe)}function rt($,oe){throw oe=oe!==void 0?oe:_e(we,g),w($,oe)}function Fe($,oe){return{type:"literal",text:$,ignoreCase:oe}}function Ne($,oe,xe){return{type:"class",parts:$,inverted:oe,ignoreCase:xe}}function Pe(){return{type:"any"}}function Ye(){return{type:"end"}}function ke($){return{type:"other",description:$}}function it($){var oe=Ee[$],xe;if(oe)return oe;for(xe=$-1;!Ee[xe];)xe--;for(oe=Ee[xe],oe={line:oe.line,column:oe.column};xe<$;)t.charCodeAt(xe)===10?(oe.line++,oe.column=1):oe.column++,xe++;return Ee[$]=oe,oe}function _e($,oe){var xe=it($),Te=it(oe);return{start:{offset:$,line:xe.line,column:xe.column},end:{offset:oe,line:Te.line,column:Te.column}}}function x($){gfe&&(fe=g,se=[]),se.push($))}function w($,oe){return new qd($,null,null,oe)}function b($,oe,xe){return new qd(qd.buildMessage($,oe),$,oe,xe)}function y(){var $,oe,xe,Te,lt,Et,qt,ir;if($=g,oe=F(),oe!==r){for(xe=[],Te=g,lt=Z(),lt!==r?(t.charCodeAt(g)===124?(Et=n,g++):(Et=r,X===0&&x(c)),Et===r&&(t.charCodeAt(g)===38?(Et=f,g++):(Et=r,X===0&&x(p)),Et===r&&(t.charCodeAt(g)===94?(Et=h,g++):(Et=r,X===0&&x(E)))),Et!==r?(qt=Z(),qt!==r?(ir=F(),ir!==r?(lt=[lt,Et,qt,ir],Te=lt):(g=Te,Te=r)):(g=Te,Te=r)):(g=Te,Te=r)):(g=Te,Te=r);Te!==r;)xe.push(Te),Te=g,lt=Z(),lt!==r?(t.charCodeAt(g)===124?(Et=n,g++):(Et=r,X===0&&x(c)),Et===r&&(t.charCodeAt(g)===38?(Et=f,g++):(Et=r,X===0&&x(p)),Et===r&&(t.charCodeAt(g)===94?(Et=h,g++):(Et=r,X===0&&x(E)))),Et!==r?(qt=Z(),qt!==r?(ir=F(),ir!==r?(lt=[lt,Et,qt,ir],Te=lt):(g=Te,Te=r)):(g=Te,Te=r)):(g=Te,Te=r)):(g=Te,Te=r);xe!==r?(we=$,oe=C(oe,xe),$=oe):(g=$,$=r)}else g=$,$=r;return $}function F(){var $,oe,xe,Te,lt,Et;return $=g,t.charCodeAt(g)===33?(oe=S,g++):(oe=r,X===0&&x(P)),oe!==r?(xe=F(),xe!==r?(we=$,oe=I(xe),$=oe):(g=$,$=r)):(g=$,$=r),$===r&&($=g,t.charCodeAt(g)===40?(oe=R,g++):(oe=r,X===0&&x(N)),oe!==r?(xe=Z(),xe!==r?(Te=y(),Te!==r?(lt=Z(),lt!==r?(t.charCodeAt(g)===41?(Et=U,g++):(Et=r,X===0&&x(W)),Et!==r?(we=$,oe=te(Te),$=oe):(g=$,$=r)):(g=$,$=r)):(g=$,$=r)):(g=$,$=r)):(g=$,$=r),$===r&&($=z())),$}function z(){var $,oe,xe,Te,lt;if($=g,oe=Z(),oe!==r){if(xe=g,Te=[],ie.test(t.charAt(g))?(lt=t.charAt(g),g++):(lt=r,X===0&&x(Ae)),lt!==r)for(;lt!==r;)Te.push(lt),ie.test(t.charAt(g))?(lt=t.charAt(g),g++):(lt=r,X===0&&x(Ae));else Te=r;Te!==r?xe=t.substring(xe,g):xe=Te,xe!==r?(we=g,Te=ce(xe),Te?Te=void 0:Te=r,Te!==r?(we=$,oe=me(xe),$=oe):(g=$,$=r)):(g=$,$=r)}else g=$,$=r;return $}function Z(){var $,oe;for(X++,$=[],Be.test(t.charAt(g))?(oe=t.charAt(g),g++):(oe=r,X===0&&x(Ce));oe!==r;)$.push(oe),Be.test(t.charAt(g))?(oe=t.charAt(g),g++):(oe=r,X===0&&x(Ce));return X--,$===r&&(oe=r,X===0&&x(pe)),$}if(De=a(),De!==r&&g===t.length)return De;throw De!==r&&g{var{parse:Stt}=roe();dk.makeParser=(t=/[a-z]+/)=>(e,r)=>Stt(e,{queryPattern:t,checkFn:r});dk.parse=dk.makeParser()});var soe=L((TYt,ioe)=>{"use strict";ioe.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}});var i4=L((RYt,aoe)=>{var EB=soe(),ooe={};for(let t of Object.keys(EB))ooe[EB[t]]=t;var hr={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};aoe.exports=hr;for(let t of Object.keys(hr)){if(!("channels"in hr[t]))throw new Error("missing channels property: "+t);if(!("labels"in hr[t]))throw new Error("missing channel labels property: "+t);if(hr[t].labels.length!==hr[t].channels)throw new Error("channel and label counts mismatch: "+t);let{channels:e,labels:r}=hr[t];delete hr[t].channels,delete hr[t].labels,Object.defineProperty(hr[t],"channels",{value:e}),Object.defineProperty(hr[t],"labels",{value:r})}hr.rgb.hsl=function(t){let e=t[0]/255,r=t[1]/255,s=t[2]/255,a=Math.min(e,r,s),n=Math.max(e,r,s),c=n-a,f,p;n===a?f=0:e===n?f=(r-s)/c:r===n?f=2+(s-e)/c:s===n&&(f=4+(e-r)/c),f=Math.min(f*60,360),f<0&&(f+=360);let h=(a+n)/2;return n===a?p=0:h<=.5?p=c/(n+a):p=c/(2-n-a),[f,p*100,h*100]};hr.rgb.hsv=function(t){let e,r,s,a,n,c=t[0]/255,f=t[1]/255,p=t[2]/255,h=Math.max(c,f,p),E=h-Math.min(c,f,p),C=function(S){return(h-S)/6/E+1/2};return E===0?(a=0,n=0):(n=E/h,e=C(c),r=C(f),s=C(p),c===h?a=s-r:f===h?a=1/3+e-s:p===h&&(a=2/3+r-e),a<0?a+=1:a>1&&(a-=1)),[a*360,n*100,h*100]};hr.rgb.hwb=function(t){let e=t[0],r=t[1],s=t[2],a=hr.rgb.hsl(t)[0],n=1/255*Math.min(e,Math.min(r,s));return s=1-1/255*Math.max(e,Math.max(r,s)),[a,n*100,s*100]};hr.rgb.cmyk=function(t){let e=t[0]/255,r=t[1]/255,s=t[2]/255,a=Math.min(1-e,1-r,1-s),n=(1-e-a)/(1-a)||0,c=(1-r-a)/(1-a)||0,f=(1-s-a)/(1-a)||0;return[n*100,c*100,f*100,a*100]};function Dtt(t,e){return(t[0]-e[0])**2+(t[1]-e[1])**2+(t[2]-e[2])**2}hr.rgb.keyword=function(t){let e=ooe[t];if(e)return e;let r=1/0,s;for(let a of Object.keys(EB)){let n=EB[a],c=Dtt(t,n);c.04045?((e+.055)/1.055)**2.4:e/12.92,r=r>.04045?((r+.055)/1.055)**2.4:r/12.92,s=s>.04045?((s+.055)/1.055)**2.4:s/12.92;let a=e*.4124+r*.3576+s*.1805,n=e*.2126+r*.7152+s*.0722,c=e*.0193+r*.1192+s*.9505;return[a*100,n*100,c*100]};hr.rgb.lab=function(t){let e=hr.rgb.xyz(t),r=e[0],s=e[1],a=e[2];r/=95.047,s/=100,a/=108.883,r=r>.008856?r**(1/3):7.787*r+16/116,s=s>.008856?s**(1/3):7.787*s+16/116,a=a>.008856?a**(1/3):7.787*a+16/116;let n=116*s-16,c=500*(r-s),f=200*(s-a);return[n,c,f]};hr.hsl.rgb=function(t){let e=t[0]/360,r=t[1]/100,s=t[2]/100,a,n,c;if(r===0)return c=s*255,[c,c,c];s<.5?a=s*(1+r):a=s+r-s*r;let f=2*s-a,p=[0,0,0];for(let h=0;h<3;h++)n=e+1/3*-(h-1),n<0&&n++,n>1&&n--,6*n<1?c=f+(a-f)*6*n:2*n<1?c=a:3*n<2?c=f+(a-f)*(2/3-n)*6:c=f,p[h]=c*255;return p};hr.hsl.hsv=function(t){let e=t[0],r=t[1]/100,s=t[2]/100,a=r,n=Math.max(s,.01);s*=2,r*=s<=1?s:2-s,a*=n<=1?n:2-n;let c=(s+r)/2,f=s===0?2*a/(n+a):2*r/(s+r);return[e,f*100,c*100]};hr.hsv.rgb=function(t){let e=t[0]/60,r=t[1]/100,s=t[2]/100,a=Math.floor(e)%6,n=e-Math.floor(e),c=255*s*(1-r),f=255*s*(1-r*n),p=255*s*(1-r*(1-n));switch(s*=255,a){case 0:return[s,p,c];case 1:return[f,s,c];case 2:return[c,s,p];case 3:return[c,f,s];case 4:return[p,c,s];case 5:return[s,c,f]}};hr.hsv.hsl=function(t){let e=t[0],r=t[1]/100,s=t[2]/100,a=Math.max(s,.01),n,c;c=(2-r)*s;let f=(2-r)*a;return n=r*a,n/=f<=1?f:2-f,n=n||0,c/=2,[e,n*100,c*100]};hr.hwb.rgb=function(t){let e=t[0]/360,r=t[1]/100,s=t[2]/100,a=r+s,n;a>1&&(r/=a,s/=a);let c=Math.floor(6*e),f=1-s;n=6*e-c,c&1&&(n=1-n);let p=r+n*(f-r),h,E,C;switch(c){default:case 6:case 0:h=f,E=p,C=r;break;case 1:h=p,E=f,C=r;break;case 2:h=r,E=f,C=p;break;case 3:h=r,E=p,C=f;break;case 4:h=p,E=r,C=f;break;case 5:h=f,E=r,C=p;break}return[h*255,E*255,C*255]};hr.cmyk.rgb=function(t){let e=t[0]/100,r=t[1]/100,s=t[2]/100,a=t[3]/100,n=1-Math.min(1,e*(1-a)+a),c=1-Math.min(1,r*(1-a)+a),f=1-Math.min(1,s*(1-a)+a);return[n*255,c*255,f*255]};hr.xyz.rgb=function(t){let e=t[0]/100,r=t[1]/100,s=t[2]/100,a,n,c;return a=e*3.2406+r*-1.5372+s*-.4986,n=e*-.9689+r*1.8758+s*.0415,c=e*.0557+r*-.204+s*1.057,a=a>.0031308?1.055*a**(1/2.4)-.055:a*12.92,n=n>.0031308?1.055*n**(1/2.4)-.055:n*12.92,c=c>.0031308?1.055*c**(1/2.4)-.055:c*12.92,a=Math.min(Math.max(0,a),1),n=Math.min(Math.max(0,n),1),c=Math.min(Math.max(0,c),1),[a*255,n*255,c*255]};hr.xyz.lab=function(t){let e=t[0],r=t[1],s=t[2];e/=95.047,r/=100,s/=108.883,e=e>.008856?e**(1/3):7.787*e+16/116,r=r>.008856?r**(1/3):7.787*r+16/116,s=s>.008856?s**(1/3):7.787*s+16/116;let a=116*r-16,n=500*(e-r),c=200*(r-s);return[a,n,c]};hr.lab.xyz=function(t){let e=t[0],r=t[1],s=t[2],a,n,c;n=(e+16)/116,a=r/500+n,c=n-s/200;let f=n**3,p=a**3,h=c**3;return n=f>.008856?f:(n-16/116)/7.787,a=p>.008856?p:(a-16/116)/7.787,c=h>.008856?h:(c-16/116)/7.787,a*=95.047,n*=100,c*=108.883,[a,n,c]};hr.lab.lch=function(t){let e=t[0],r=t[1],s=t[2],a;a=Math.atan2(s,r)*360/2/Math.PI,a<0&&(a+=360);let c=Math.sqrt(r*r+s*s);return[e,c,a]};hr.lch.lab=function(t){let e=t[0],r=t[1],a=t[2]/360*2*Math.PI,n=r*Math.cos(a),c=r*Math.sin(a);return[e,n,c]};hr.rgb.ansi16=function(t,e=null){let[r,s,a]=t,n=e===null?hr.rgb.hsv(t)[2]:e;if(n=Math.round(n/50),n===0)return 30;let c=30+(Math.round(a/255)<<2|Math.round(s/255)<<1|Math.round(r/255));return n===2&&(c+=60),c};hr.hsv.ansi16=function(t){return hr.rgb.ansi16(hr.hsv.rgb(t),t[2])};hr.rgb.ansi256=function(t){let e=t[0],r=t[1],s=t[2];return e===r&&r===s?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(r/255*5)+Math.round(s/255*5)};hr.ansi16.rgb=function(t){let e=t%10;if(e===0||e===7)return t>50&&(e+=3.5),e=e/10.5*255,[e,e,e];let r=(~~(t>50)+1)*.5,s=(e&1)*r*255,a=(e>>1&1)*r*255,n=(e>>2&1)*r*255;return[s,a,n]};hr.ansi256.rgb=function(t){if(t>=232){let n=(t-232)*10+8;return[n,n,n]}t-=16;let e,r=Math.floor(t/36)/5*255,s=Math.floor((e=t%36)/6)/5*255,a=e%6/5*255;return[r,s,a]};hr.rgb.hex=function(t){let r=(((Math.round(t[0])&255)<<16)+((Math.round(t[1])&255)<<8)+(Math.round(t[2])&255)).toString(16).toUpperCase();return"000000".substring(r.length)+r};hr.hex.rgb=function(t){let e=t.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!e)return[0,0,0];let r=e[0];e[0].length===3&&(r=r.split("").map(f=>f+f).join(""));let s=parseInt(r,16),a=s>>16&255,n=s>>8&255,c=s&255;return[a,n,c]};hr.rgb.hcg=function(t){let e=t[0]/255,r=t[1]/255,s=t[2]/255,a=Math.max(Math.max(e,r),s),n=Math.min(Math.min(e,r),s),c=a-n,f,p;return c<1?f=n/(1-c):f=0,c<=0?p=0:a===e?p=(r-s)/c%6:a===r?p=2+(s-e)/c:p=4+(e-r)/c,p/=6,p%=1,[p*360,c*100,f*100]};hr.hsl.hcg=function(t){let e=t[1]/100,r=t[2]/100,s=r<.5?2*e*r:2*e*(1-r),a=0;return s<1&&(a=(r-.5*s)/(1-s)),[t[0],s*100,a*100]};hr.hsv.hcg=function(t){let e=t[1]/100,r=t[2]/100,s=e*r,a=0;return s<1&&(a=(r-s)/(1-s)),[t[0],s*100,a*100]};hr.hcg.rgb=function(t){let e=t[0]/360,r=t[1]/100,s=t[2]/100;if(r===0)return[s*255,s*255,s*255];let a=[0,0,0],n=e%1*6,c=n%1,f=1-c,p=0;switch(Math.floor(n)){case 0:a[0]=1,a[1]=c,a[2]=0;break;case 1:a[0]=f,a[1]=1,a[2]=0;break;case 2:a[0]=0,a[1]=1,a[2]=c;break;case 3:a[0]=0,a[1]=f,a[2]=1;break;case 4:a[0]=c,a[1]=0,a[2]=1;break;default:a[0]=1,a[1]=0,a[2]=f}return p=(1-r)*s,[(r*a[0]+p)*255,(r*a[1]+p)*255,(r*a[2]+p)*255]};hr.hcg.hsv=function(t){let e=t[1]/100,r=t[2]/100,s=e+r*(1-e),a=0;return s>0&&(a=e/s),[t[0],a*100,s*100]};hr.hcg.hsl=function(t){let e=t[1]/100,s=t[2]/100*(1-e)+.5*e,a=0;return s>0&&s<.5?a=e/(2*s):s>=.5&&s<1&&(a=e/(2*(1-s))),[t[0],a*100,s*100]};hr.hcg.hwb=function(t){let e=t[1]/100,r=t[2]/100,s=e+r*(1-e);return[t[0],(s-e)*100,(1-s)*100]};hr.hwb.hcg=function(t){let e=t[1]/100,s=1-t[2]/100,a=s-e,n=0;return a<1&&(n=(s-a)/(1-a)),[t[0],a*100,n*100]};hr.apple.rgb=function(t){return[t[0]/65535*255,t[1]/65535*255,t[2]/65535*255]};hr.rgb.apple=function(t){return[t[0]/255*65535,t[1]/255*65535,t[2]/255*65535]};hr.gray.rgb=function(t){return[t[0]/100*255,t[0]/100*255,t[0]/100*255]};hr.gray.hsl=function(t){return[0,0,t[0]]};hr.gray.hsv=hr.gray.hsl;hr.gray.hwb=function(t){return[0,100,t[0]]};hr.gray.cmyk=function(t){return[0,0,0,t[0]]};hr.gray.lab=function(t){return[t[0],0,0]};hr.gray.hex=function(t){let e=Math.round(t[0]/100*255)&255,s=((e<<16)+(e<<8)+e).toString(16).toUpperCase();return"000000".substring(s.length)+s};hr.rgb.gray=function(t){return[(t[0]+t[1]+t[2])/3/255*100]}});var coe=L((FYt,loe)=>{var mk=i4();function btt(){let t={},e=Object.keys(mk);for(let r=e.length,s=0;s{var s4=i4(),Qtt=coe(),PE={},Ttt=Object.keys(s4);function Rtt(t){let e=function(...r){let s=r[0];return s==null?s:(s.length>1&&(r=s),t(r))};return"conversion"in t&&(e.conversion=t.conversion),e}function Ftt(t){let e=function(...r){let s=r[0];if(s==null)return s;s.length>1&&(r=s);let a=t(r);if(typeof a=="object")for(let n=a.length,c=0;c{PE[t]={},Object.defineProperty(PE[t],"channels",{value:s4[t].channels}),Object.defineProperty(PE[t],"labels",{value:s4[t].labels});let e=Qtt(t);Object.keys(e).forEach(s=>{let a=e[s];PE[t][s]=Ftt(a),PE[t][s].raw=Rtt(a)})});uoe.exports=PE});var IB=L((OYt,doe)=>{"use strict";var Aoe=(t,e)=>(...r)=>`\x1B[${t(...r)+e}m`,poe=(t,e)=>(...r)=>{let s=t(...r);return`\x1B[${38+e};5;${s}m`},hoe=(t,e)=>(...r)=>{let s=t(...r);return`\x1B[${38+e};2;${s[0]};${s[1]};${s[2]}m`},yk=t=>t,goe=(t,e,r)=>[t,e,r],xE=(t,e,r)=>{Object.defineProperty(t,e,{get:()=>{let s=r();return Object.defineProperty(t,e,{value:s,enumerable:!0,configurable:!0}),s},enumerable:!0,configurable:!0})},o4,kE=(t,e,r,s)=>{o4===void 0&&(o4=foe());let a=s?10:0,n={};for(let[c,f]of Object.entries(o4)){let p=c==="ansi16"?"ansi":c;c===e?n[p]=t(r,a):typeof f=="object"&&(n[p]=t(f[e],a))}return n};function Ntt(){let t=new Map,e={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};e.color.gray=e.color.blackBright,e.bgColor.bgGray=e.bgColor.bgBlackBright,e.color.grey=e.color.blackBright,e.bgColor.bgGrey=e.bgColor.bgBlackBright;for(let[r,s]of Object.entries(e)){for(let[a,n]of Object.entries(s))e[a]={open:`\x1B[${n[0]}m`,close:`\x1B[${n[1]}m`},s[a]=e[a],t.set(n[0],n[1]);Object.defineProperty(e,r,{value:s,enumerable:!1})}return Object.defineProperty(e,"codes",{value:t,enumerable:!1}),e.color.close="\x1B[39m",e.bgColor.close="\x1B[49m",xE(e.color,"ansi",()=>kE(Aoe,"ansi16",yk,!1)),xE(e.color,"ansi256",()=>kE(poe,"ansi256",yk,!1)),xE(e.color,"ansi16m",()=>kE(hoe,"rgb",goe,!1)),xE(e.bgColor,"ansi",()=>kE(Aoe,"ansi16",yk,!0)),xE(e.bgColor,"ansi256",()=>kE(poe,"ansi256",yk,!0)),xE(e.bgColor,"ansi16m",()=>kE(hoe,"rgb",goe,!0)),e}Object.defineProperty(doe,"exports",{enumerable:!0,get:Ntt})});var yoe=L((LYt,moe)=>{"use strict";moe.exports=(t,e=process.argv)=>{let r=t.startsWith("-")?"":t.length===1?"-":"--",s=e.indexOf(r+t),a=e.indexOf("--");return s!==-1&&(a===-1||s{"use strict";var Ott=ye("os"),Eoe=ye("tty"),Dc=yoe(),{env:Ps}=process,f0;Dc("no-color")||Dc("no-colors")||Dc("color=false")||Dc("color=never")?f0=0:(Dc("color")||Dc("colors")||Dc("color=true")||Dc("color=always"))&&(f0=1);"FORCE_COLOR"in Ps&&(Ps.FORCE_COLOR==="true"?f0=1:Ps.FORCE_COLOR==="false"?f0=0:f0=Ps.FORCE_COLOR.length===0?1:Math.min(parseInt(Ps.FORCE_COLOR,10),3));function a4(t){return t===0?!1:{level:t,hasBasic:!0,has256:t>=2,has16m:t>=3}}function l4(t,e){if(f0===0)return 0;if(Dc("color=16m")||Dc("color=full")||Dc("color=truecolor"))return 3;if(Dc("color=256"))return 2;if(t&&!e&&f0===void 0)return 0;let r=f0||0;if(Ps.TERM==="dumb")return r;if(process.platform==="win32"){let s=Ott.release().split(".");return Number(s[0])>=10&&Number(s[2])>=10586?Number(s[2])>=14931?3:2:1}if("CI"in Ps)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI"].some(s=>s in Ps)||Ps.CI_NAME==="codeship"?1:r;if("TEAMCITY_VERSION"in Ps)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(Ps.TEAMCITY_VERSION)?1:0;if("GITHUB_ACTIONS"in Ps)return 1;if(Ps.COLORTERM==="truecolor")return 3;if("TERM_PROGRAM"in Ps){let s=parseInt((Ps.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(Ps.TERM_PROGRAM){case"iTerm.app":return s>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(Ps.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(Ps.TERM)||"COLORTERM"in Ps?1:r}function Ltt(t){let e=l4(t,t&&t.isTTY);return a4(e)}Ioe.exports={supportsColor:Ltt,stdout:a4(l4(!0,Eoe.isatty(1))),stderr:a4(l4(!0,Eoe.isatty(2)))}});var woe=L((_Yt,Coe)=>{"use strict";var Mtt=(t,e,r)=>{let s=t.indexOf(e);if(s===-1)return t;let a=e.length,n=0,c="";do c+=t.substr(n,s-n)+e+r,n=s+a,s=t.indexOf(e,n);while(s!==-1);return c+=t.substr(n),c},_tt=(t,e,r,s)=>{let a=0,n="";do{let c=t[s-1]==="\r";n+=t.substr(a,(c?s-1:s)-a)+e+(c?`\r +`:` +`)+r,a=s+1,s=t.indexOf(` +`,a)}while(s!==-1);return n+=t.substr(a),n};Coe.exports={stringReplaceAll:Mtt,stringEncaseCRLFWithFirstIndex:_tt}});var boe=L((UYt,Doe)=>{"use strict";var Utt=/(?:\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi,Boe=/(?:^|\.)(\w+)(?:\(([^)]*)\))?/g,Htt=/^(['"])((?:\\.|(?!\1)[^\\])*)\1$/,jtt=/\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.)|([^\\])/gi,qtt=new Map([["n",` +`],["r","\r"],["t"," "],["b","\b"],["f","\f"],["v","\v"],["0","\0"],["\\","\\"],["e","\x1B"],["a","\x07"]]);function Soe(t){let e=t[0]==="u",r=t[1]==="{";return e&&!r&&t.length===5||t[0]==="x"&&t.length===3?String.fromCharCode(parseInt(t.slice(1),16)):e&&r?String.fromCodePoint(parseInt(t.slice(2,-1),16)):qtt.get(t)||t}function Gtt(t,e){let r=[],s=e.trim().split(/\s*,\s*/g),a;for(let n of s){let c=Number(n);if(!Number.isNaN(c))r.push(c);else if(a=n.match(Htt))r.push(a[2].replace(jtt,(f,p,h)=>p?Soe(p):h));else throw new Error(`Invalid Chalk template style argument: ${n} (in style '${t}')`)}return r}function Wtt(t){Boe.lastIndex=0;let e=[],r;for(;(r=Boe.exec(t))!==null;){let s=r[1];if(r[2]){let a=Gtt(s,r[2]);e.push([s].concat(a))}else e.push([s])}return e}function voe(t,e){let r={};for(let a of e)for(let n of a.styles)r[n[0]]=a.inverse?null:n.slice(1);let s=t;for(let[a,n]of Object.entries(r))if(Array.isArray(n)){if(!(a in s))throw new Error(`Unknown Chalk style: ${a}`);s=n.length>0?s[a](...n):s[a]}return s}Doe.exports=(t,e)=>{let r=[],s=[],a=[];if(e.replace(Utt,(n,c,f,p,h,E)=>{if(c)a.push(Soe(c));else if(p){let C=a.join("");a=[],s.push(r.length===0?C:voe(t,r)(C)),r.push({inverse:f,styles:Wtt(p)})}else if(h){if(r.length===0)throw new Error("Found extraneous } in Chalk template literal");s.push(voe(t,r)(a.join(""))),a=[],r.pop()}else a.push(E)}),s.push(a.join("")),r.length>0){let n=`Chalk template literal is missing ${r.length} closing bracket${r.length===1?"":"s"} (\`}\`)`;throw new Error(n)}return s.join("")}});var g4=L((HYt,Qoe)=>{"use strict";var CB=IB(),{stdout:f4,stderr:A4}=c4(),{stringReplaceAll:Ytt,stringEncaseCRLFWithFirstIndex:Vtt}=woe(),Poe=["ansi","ansi","ansi256","ansi16m"],QE=Object.create(null),Ktt=(t,e={})=>{if(e.level>3||e.level<0)throw new Error("The `level` option should be an integer from 0 to 3");let r=f4?f4.level:0;t.level=e.level===void 0?r:e.level},p4=class{constructor(e){return xoe(e)}},xoe=t=>{let e={};return Ktt(e,t),e.template=(...r)=>Ztt(e.template,...r),Object.setPrototypeOf(e,Ek.prototype),Object.setPrototypeOf(e.template,e),e.template.constructor=()=>{throw new Error("`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.")},e.template.Instance=p4,e.template};function Ek(t){return xoe(t)}for(let[t,e]of Object.entries(CB))QE[t]={get(){let r=Ik(this,h4(e.open,e.close,this._styler),this._isEmpty);return Object.defineProperty(this,t,{value:r}),r}};QE.visible={get(){let t=Ik(this,this._styler,!0);return Object.defineProperty(this,"visible",{value:t}),t}};var koe=["rgb","hex","keyword","hsl","hsv","hwb","ansi","ansi256"];for(let t of koe)QE[t]={get(){let{level:e}=this;return function(...r){let s=h4(CB.color[Poe[e]][t](...r),CB.color.close,this._styler);return Ik(this,s,this._isEmpty)}}};for(let t of koe){let e="bg"+t[0].toUpperCase()+t.slice(1);QE[e]={get(){let{level:r}=this;return function(...s){let a=h4(CB.bgColor[Poe[r]][t](...s),CB.bgColor.close,this._styler);return Ik(this,a,this._isEmpty)}}}}var Jtt=Object.defineProperties(()=>{},{...QE,level:{enumerable:!0,get(){return this._generator.level},set(t){this._generator.level=t}}}),h4=(t,e,r)=>{let s,a;return r===void 0?(s=t,a=e):(s=r.openAll+t,a=e+r.closeAll),{open:t,close:e,openAll:s,closeAll:a,parent:r}},Ik=(t,e,r)=>{let s=(...a)=>ztt(s,a.length===1?""+a[0]:a.join(" "));return s.__proto__=Jtt,s._generator=t,s._styler=e,s._isEmpty=r,s},ztt=(t,e)=>{if(t.level<=0||!e)return t._isEmpty?"":e;let r=t._styler;if(r===void 0)return e;let{openAll:s,closeAll:a}=r;if(e.indexOf("\x1B")!==-1)for(;r!==void 0;)e=Ytt(e,r.close,r.open),r=r.parent;let n=e.indexOf(` +`);return n!==-1&&(e=Vtt(e,a,s,n)),s+e+a},u4,Ztt=(t,...e)=>{let[r]=e;if(!Array.isArray(r))return e.join(" ");let s=e.slice(1),a=[r.raw[0]];for(let n=1;n{"use strict";bc.isInteger=t=>typeof t=="number"?Number.isInteger(t):typeof t=="string"&&t.trim()!==""?Number.isInteger(Number(t)):!1;bc.find=(t,e)=>t.nodes.find(r=>r.type===e);bc.exceedsLimit=(t,e,r=1,s)=>s===!1||!bc.isInteger(t)||!bc.isInteger(e)?!1:(Number(e)-Number(t))/Number(r)>=s;bc.escapeNode=(t,e=0,r)=>{let s=t.nodes[e];s&&(r&&s.type===r||s.type==="open"||s.type==="close")&&s.escaped!==!0&&(s.value="\\"+s.value,s.escaped=!0)};bc.encloseBrace=t=>t.type!=="brace"||t.commas>>0+t.ranges>>0?!1:(t.invalid=!0,!0);bc.isInvalidBrace=t=>t.type!=="brace"?!1:t.invalid===!0||t.dollar?!0:!(t.commas>>0+t.ranges>>0)||t.open!==!0||t.close!==!0?(t.invalid=!0,!0):!1;bc.isOpenOrClose=t=>t.type==="open"||t.type==="close"?!0:t.open===!0||t.close===!0;bc.reduce=t=>t.reduce((e,r)=>(r.type==="text"&&e.push(r.value),r.type==="range"&&(r.type="text"),e),[]);bc.flatten=(...t)=>{let e=[],r=s=>{for(let a=0;a{"use strict";var Toe=Ck();Roe.exports=(t,e={})=>{let r=(s,a={})=>{let n=e.escapeInvalid&&Toe.isInvalidBrace(a),c=s.invalid===!0&&e.escapeInvalid===!0,f="";if(s.value)return(n||c)&&Toe.isOpenOrClose(s)?"\\"+s.value:s.value;if(s.value)return s.value;if(s.nodes)for(let p of s.nodes)f+=r(p);return f};return r(t)}});var Noe=L((GYt,Foe)=>{"use strict";Foe.exports=function(t){return typeof t=="number"?t-t===0:typeof t=="string"&&t.trim()!==""?Number.isFinite?Number.isFinite(+t):isFinite(+t):!1}});var Goe=L((WYt,qoe)=>{"use strict";var Ooe=Noe(),Gd=(t,e,r)=>{if(Ooe(t)===!1)throw new TypeError("toRegexRange: expected the first argument to be a number");if(e===void 0||t===e)return String(t);if(Ooe(e)===!1)throw new TypeError("toRegexRange: expected the second argument to be a number.");let s={relaxZeros:!0,...r};typeof s.strictZeros=="boolean"&&(s.relaxZeros=s.strictZeros===!1);let a=String(s.relaxZeros),n=String(s.shorthand),c=String(s.capture),f=String(s.wrap),p=t+":"+e+"="+a+n+c+f;if(Gd.cache.hasOwnProperty(p))return Gd.cache[p].result;let h=Math.min(t,e),E=Math.max(t,e);if(Math.abs(h-E)===1){let R=t+"|"+e;return s.capture?`(${R})`:s.wrap===!1?R:`(?:${R})`}let C=joe(t)||joe(e),S={min:t,max:e,a:h,b:E},P=[],I=[];if(C&&(S.isPadded=C,S.maxLen=String(S.max).length),h<0){let R=E<0?Math.abs(E):1;I=Loe(R,Math.abs(h),S,s),h=S.a=0}return E>=0&&(P=Loe(h,E,S,s)),S.negatives=I,S.positives=P,S.result=Xtt(I,P,s),s.capture===!0?S.result=`(${S.result})`:s.wrap!==!1&&P.length+I.length>1&&(S.result=`(?:${S.result})`),Gd.cache[p]=S,S.result};function Xtt(t,e,r){let s=d4(t,e,"-",!1,r)||[],a=d4(e,t,"",!1,r)||[],n=d4(t,e,"-?",!0,r)||[];return s.concat(n).concat(a).join("|")}function $tt(t,e){let r=1,s=1,a=_oe(t,r),n=new Set([e]);for(;t<=a&&a<=e;)n.add(a),r+=1,a=_oe(t,r);for(a=Uoe(e+1,s)-1;t1&&f.count.pop(),f.count.push(E.count[0]),f.string=f.pattern+Hoe(f.count),c=h+1;continue}r.isPadded&&(C=irt(h,r,s)),E.string=C+E.pattern+Hoe(E.count),n.push(E),c=h+1,f=E}return n}function d4(t,e,r,s,a){let n=[];for(let c of t){let{string:f}=c;!s&&!Moe(e,"string",f)&&n.push(r+f),s&&Moe(e,"string",f)&&n.push(r+f)}return n}function trt(t,e){let r=[];for(let s=0;se?1:e>t?-1:0}function Moe(t,e,r){return t.some(s=>s[e]===r)}function _oe(t,e){return Number(String(t).slice(0,-e)+"9".repeat(e))}function Uoe(t,e){return t-t%Math.pow(10,e)}function Hoe(t){let[e=0,r=""]=t;return r||e>1?`{${e+(r?","+r:"")}}`:""}function nrt(t,e,r){return`[${t}${e-t===1?"":"-"}${e}]`}function joe(t){return/^-?(0+)\d/.test(t)}function irt(t,e,r){if(!e.isPadded)return t;let s=Math.abs(e.maxLen-String(t).length),a=r.relaxZeros!==!1;switch(s){case 0:return"";case 1:return a?"0?":"0";case 2:return a?"0{0,2}":"00";default:return a?`0{0,${s}}`:`0{${s}}`}}Gd.cache={};Gd.clearCache=()=>Gd.cache={};qoe.exports=Gd});var E4=L((YYt,Xoe)=>{"use strict";var srt=ye("util"),Voe=Goe(),Woe=t=>t!==null&&typeof t=="object"&&!Array.isArray(t),ort=t=>e=>t===!0?Number(e):String(e),m4=t=>typeof t=="number"||typeof t=="string"&&t!=="",BB=t=>Number.isInteger(+t),y4=t=>{let e=`${t}`,r=-1;if(e[0]==="-"&&(e=e.slice(1)),e==="0")return!1;for(;e[++r]==="0";);return r>0},art=(t,e,r)=>typeof t=="string"||typeof e=="string"?!0:r.stringify===!0,lrt=(t,e,r)=>{if(e>0){let s=t[0]==="-"?"-":"";s&&(t=t.slice(1)),t=s+t.padStart(s?e-1:e,"0")}return r===!1?String(t):t},Yoe=(t,e)=>{let r=t[0]==="-"?"-":"";for(r&&(t=t.slice(1),e--);t.length{t.negatives.sort((c,f)=>cf?1:0),t.positives.sort((c,f)=>cf?1:0);let r=e.capture?"":"?:",s="",a="",n;return t.positives.length&&(s=t.positives.join("|")),t.negatives.length&&(a=`-(${r}${t.negatives.join("|")})`),s&&a?n=`${s}|${a}`:n=s||a,e.wrap?`(${r}${n})`:n},Koe=(t,e,r,s)=>{if(r)return Voe(t,e,{wrap:!1,...s});let a=String.fromCharCode(t);if(t===e)return a;let n=String.fromCharCode(e);return`[${a}-${n}]`},Joe=(t,e,r)=>{if(Array.isArray(t)){let s=r.wrap===!0,a=r.capture?"":"?:";return s?`(${a}${t.join("|")})`:t.join("|")}return Voe(t,e,r)},zoe=(...t)=>new RangeError("Invalid range arguments: "+srt.inspect(...t)),Zoe=(t,e,r)=>{if(r.strictRanges===!0)throw zoe([t,e]);return[]},urt=(t,e)=>{if(e.strictRanges===!0)throw new TypeError(`Expected step "${t}" to be a number`);return[]},frt=(t,e,r=1,s={})=>{let a=Number(t),n=Number(e);if(!Number.isInteger(a)||!Number.isInteger(n)){if(s.strictRanges===!0)throw zoe([t,e]);return[]}a===0&&(a=0),n===0&&(n=0);let c=a>n,f=String(t),p=String(e),h=String(r);r=Math.max(Math.abs(r),1);let E=y4(f)||y4(p)||y4(h),C=E?Math.max(f.length,p.length,h.length):0,S=E===!1&&art(t,e,s)===!1,P=s.transform||ort(S);if(s.toRegex&&r===1)return Koe(Yoe(t,C),Yoe(e,C),!0,s);let I={negatives:[],positives:[]},R=W=>I[W<0?"negatives":"positives"].push(Math.abs(W)),N=[],U=0;for(;c?a>=n:a<=n;)s.toRegex===!0&&r>1?R(a):N.push(lrt(P(a,U),C,S)),a=c?a-r:a+r,U++;return s.toRegex===!0?r>1?crt(I,s):Joe(N,null,{wrap:!1,...s}):N},Art=(t,e,r=1,s={})=>{if(!BB(t)&&t.length>1||!BB(e)&&e.length>1)return Zoe(t,e,s);let a=s.transform||(S=>String.fromCharCode(S)),n=`${t}`.charCodeAt(0),c=`${e}`.charCodeAt(0),f=n>c,p=Math.min(n,c),h=Math.max(n,c);if(s.toRegex&&r===1)return Koe(p,h,!1,s);let E=[],C=0;for(;f?n>=c:n<=c;)E.push(a(n,C)),n=f?n-r:n+r,C++;return s.toRegex===!0?Joe(E,null,{wrap:!1,options:s}):E},Bk=(t,e,r,s={})=>{if(e==null&&m4(t))return[t];if(!m4(t)||!m4(e))return Zoe(t,e,s);if(typeof r=="function")return Bk(t,e,1,{transform:r});if(Woe(r))return Bk(t,e,0,r);let a={...s};return a.capture===!0&&(a.wrap=!0),r=r||a.step||1,BB(r)?BB(t)&&BB(e)?frt(t,e,r,a):Art(t,e,Math.max(Math.abs(r),1),a):r!=null&&!Woe(r)?urt(r,a):Bk(t,e,1,r)};Xoe.exports=Bk});var tae=L((VYt,eae)=>{"use strict";var prt=E4(),$oe=Ck(),hrt=(t,e={})=>{let r=(s,a={})=>{let n=$oe.isInvalidBrace(a),c=s.invalid===!0&&e.escapeInvalid===!0,f=n===!0||c===!0,p=e.escapeInvalid===!0?"\\":"",h="";if(s.isOpen===!0||s.isClose===!0)return p+s.value;if(s.type==="open")return f?p+s.value:"(";if(s.type==="close")return f?p+s.value:")";if(s.type==="comma")return s.prev.type==="comma"?"":f?s.value:"|";if(s.value)return s.value;if(s.nodes&&s.ranges>0){let E=$oe.reduce(s.nodes),C=prt(...E,{...e,wrap:!1,toRegex:!0});if(C.length!==0)return E.length>1&&C.length>1?`(${C})`:C}if(s.nodes)for(let E of s.nodes)h+=r(E,s);return h};return r(t)};eae.exports=hrt});var iae=L((KYt,nae)=>{"use strict";var grt=E4(),rae=wk(),TE=Ck(),Wd=(t="",e="",r=!1)=>{let s=[];if(t=[].concat(t),e=[].concat(e),!e.length)return t;if(!t.length)return r?TE.flatten(e).map(a=>`{${a}}`):e;for(let a of t)if(Array.isArray(a))for(let n of a)s.push(Wd(n,e,r));else for(let n of e)r===!0&&typeof n=="string"&&(n=`{${n}}`),s.push(Array.isArray(n)?Wd(a,n,r):a+n);return TE.flatten(s)},drt=(t,e={})=>{let r=e.rangeLimit===void 0?1e3:e.rangeLimit,s=(a,n={})=>{a.queue=[];let c=n,f=n.queue;for(;c.type!=="brace"&&c.type!=="root"&&c.parent;)c=c.parent,f=c.queue;if(a.invalid||a.dollar){f.push(Wd(f.pop(),rae(a,e)));return}if(a.type==="brace"&&a.invalid!==!0&&a.nodes.length===2){f.push(Wd(f.pop(),["{}"]));return}if(a.nodes&&a.ranges>0){let C=TE.reduce(a.nodes);if(TE.exceedsLimit(...C,e.step,r))throw new RangeError("expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.");let S=grt(...C,e);S.length===0&&(S=rae(a,e)),f.push(Wd(f.pop(),S)),a.nodes=[];return}let p=TE.encloseBrace(a),h=a.queue,E=a;for(;E.type!=="brace"&&E.type!=="root"&&E.parent;)E=E.parent,h=E.queue;for(let C=0;C{"use strict";sae.exports={MAX_LENGTH:1024*64,CHAR_0:"0",CHAR_9:"9",CHAR_UPPERCASE_A:"A",CHAR_LOWERCASE_A:"a",CHAR_UPPERCASE_Z:"Z",CHAR_LOWERCASE_Z:"z",CHAR_LEFT_PARENTHESES:"(",CHAR_RIGHT_PARENTHESES:")",CHAR_ASTERISK:"*",CHAR_AMPERSAND:"&",CHAR_AT:"@",CHAR_BACKSLASH:"\\",CHAR_BACKTICK:"`",CHAR_CARRIAGE_RETURN:"\r",CHAR_CIRCUMFLEX_ACCENT:"^",CHAR_COLON:":",CHAR_COMMA:",",CHAR_DOLLAR:"$",CHAR_DOT:".",CHAR_DOUBLE_QUOTE:'"',CHAR_EQUAL:"=",CHAR_EXCLAMATION_MARK:"!",CHAR_FORM_FEED:"\f",CHAR_FORWARD_SLASH:"/",CHAR_HASH:"#",CHAR_HYPHEN_MINUS:"-",CHAR_LEFT_ANGLE_BRACKET:"<",CHAR_LEFT_CURLY_BRACE:"{",CHAR_LEFT_SQUARE_BRACKET:"[",CHAR_LINE_FEED:` +`,CHAR_NO_BREAK_SPACE:"\xA0",CHAR_PERCENT:"%",CHAR_PLUS:"+",CHAR_QUESTION_MARK:"?",CHAR_RIGHT_ANGLE_BRACKET:">",CHAR_RIGHT_CURLY_BRACE:"}",CHAR_RIGHT_SQUARE_BRACKET:"]",CHAR_SEMICOLON:";",CHAR_SINGLE_QUOTE:"'",CHAR_SPACE:" ",CHAR_TAB:" ",CHAR_UNDERSCORE:"_",CHAR_VERTICAL_LINE:"|",CHAR_ZERO_WIDTH_NOBREAK_SPACE:"\uFEFF"}});var fae=L((zYt,uae)=>{"use strict";var mrt=wk(),{MAX_LENGTH:aae,CHAR_BACKSLASH:I4,CHAR_BACKTICK:yrt,CHAR_COMMA:Ert,CHAR_DOT:Irt,CHAR_LEFT_PARENTHESES:Crt,CHAR_RIGHT_PARENTHESES:wrt,CHAR_LEFT_CURLY_BRACE:Brt,CHAR_RIGHT_CURLY_BRACE:vrt,CHAR_LEFT_SQUARE_BRACKET:lae,CHAR_RIGHT_SQUARE_BRACKET:cae,CHAR_DOUBLE_QUOTE:Srt,CHAR_SINGLE_QUOTE:Drt,CHAR_NO_BREAK_SPACE:brt,CHAR_ZERO_WIDTH_NOBREAK_SPACE:Prt}=oae(),xrt=(t,e={})=>{if(typeof t!="string")throw new TypeError("Expected a string");let r=e||{},s=typeof r.maxLength=="number"?Math.min(aae,r.maxLength):aae;if(t.length>s)throw new SyntaxError(`Input length (${t.length}), exceeds max characters (${s})`);let a={type:"root",input:t,nodes:[]},n=[a],c=a,f=a,p=0,h=t.length,E=0,C=0,S,P={},I=()=>t[E++],R=N=>{if(N.type==="text"&&f.type==="dot"&&(f.type="text"),f&&f.type==="text"&&N.type==="text"){f.value+=N.value;return}return c.nodes.push(N),N.parent=c,N.prev=f,f=N,N};for(R({type:"bos"});E0){if(c.ranges>0){c.ranges=0;let N=c.nodes.shift();c.nodes=[N,{type:"text",value:mrt(c)}]}R({type:"comma",value:S}),c.commas++;continue}if(S===Irt&&C>0&&c.commas===0){let N=c.nodes;if(C===0||N.length===0){R({type:"text",value:S});continue}if(f.type==="dot"){if(c.range=[],f.value+=S,f.type="range",c.nodes.length!==3&&c.nodes.length!==5){c.invalid=!0,c.ranges=0,f.type="text";continue}c.ranges++,c.args=[];continue}if(f.type==="range"){N.pop();let U=N[N.length-1];U.value+=f.value+S,f=U,c.ranges--;continue}R({type:"dot",value:S});continue}R({type:"text",value:S})}do if(c=n.pop(),c.type!=="root"){c.nodes.forEach(W=>{W.nodes||(W.type==="open"&&(W.isOpen=!0),W.type==="close"&&(W.isClose=!0),W.nodes||(W.type="text"),W.invalid=!0)});let N=n[n.length-1],U=N.nodes.indexOf(c);N.nodes.splice(U,1,...c.nodes)}while(n.length>0);return R({type:"eos"}),a};uae.exports=xrt});var hae=L((ZYt,pae)=>{"use strict";var Aae=wk(),krt=tae(),Qrt=iae(),Trt=fae(),ql=(t,e={})=>{let r=[];if(Array.isArray(t))for(let s of t){let a=ql.create(s,e);Array.isArray(a)?r.push(...a):r.push(a)}else r=[].concat(ql.create(t,e));return e&&e.expand===!0&&e.nodupes===!0&&(r=[...new Set(r)]),r};ql.parse=(t,e={})=>Trt(t,e);ql.stringify=(t,e={})=>Aae(typeof t=="string"?ql.parse(t,e):t,e);ql.compile=(t,e={})=>(typeof t=="string"&&(t=ql.parse(t,e)),krt(t,e));ql.expand=(t,e={})=>{typeof t=="string"&&(t=ql.parse(t,e));let r=Qrt(t,e);return e.noempty===!0&&(r=r.filter(Boolean)),e.nodupes===!0&&(r=[...new Set(r)]),r};ql.create=(t,e={})=>t===""||t.length<3?[t]:e.expand!==!0?ql.compile(t,e):ql.expand(t,e);pae.exports=ql});var vB=L((XYt,Eae)=>{"use strict";var Rrt=ye("path"),Kf="\\\\/",gae=`[^${Kf}]`,Pp="\\.",Frt="\\+",Nrt="\\?",vk="\\/",Ort="(?=.)",dae="[^/]",C4=`(?:${vk}|$)`,mae=`(?:^|${vk})`,w4=`${Pp}{1,2}${C4}`,Lrt=`(?!${Pp})`,Mrt=`(?!${mae}${w4})`,_rt=`(?!${Pp}{0,1}${C4})`,Urt=`(?!${w4})`,Hrt=`[^.${vk}]`,jrt=`${dae}*?`,yae={DOT_LITERAL:Pp,PLUS_LITERAL:Frt,QMARK_LITERAL:Nrt,SLASH_LITERAL:vk,ONE_CHAR:Ort,QMARK:dae,END_ANCHOR:C4,DOTS_SLASH:w4,NO_DOT:Lrt,NO_DOTS:Mrt,NO_DOT_SLASH:_rt,NO_DOTS_SLASH:Urt,QMARK_NO_DOT:Hrt,STAR:jrt,START_ANCHOR:mae},qrt={...yae,SLASH_LITERAL:`[${Kf}]`,QMARK:gae,STAR:`${gae}*?`,DOTS_SLASH:`${Pp}{1,2}(?:[${Kf}]|$)`,NO_DOT:`(?!${Pp})`,NO_DOTS:`(?!(?:^|[${Kf}])${Pp}{1,2}(?:[${Kf}]|$))`,NO_DOT_SLASH:`(?!${Pp}{0,1}(?:[${Kf}]|$))`,NO_DOTS_SLASH:`(?!${Pp}{1,2}(?:[${Kf}]|$))`,QMARK_NO_DOT:`[^.${Kf}]`,START_ANCHOR:`(?:^|[${Kf}])`,END_ANCHOR:`(?:[${Kf}]|$)`},Grt={alnum:"a-zA-Z0-9",alpha:"a-zA-Z",ascii:"\\x00-\\x7F",blank:" \\t",cntrl:"\\x00-\\x1F\\x7F",digit:"0-9",graph:"\\x21-\\x7E",lower:"a-z",print:"\\x20-\\x7E ",punct:"\\-!\"#$%&'()\\*+,./:;<=>?@[\\]^_`{|}~",space:" \\t\\r\\n\\v\\f",upper:"A-Z",word:"A-Za-z0-9_",xdigit:"A-Fa-f0-9"};Eae.exports={MAX_LENGTH:1024*64,POSIX_REGEX_SOURCE:Grt,REGEX_BACKSLASH:/\\(?![*+?^${}(|)[\]])/g,REGEX_NON_SPECIAL_CHARS:/^[^@![\].,$*+?^{}()|\\/]+/,REGEX_SPECIAL_CHARS:/[-*+?.^${}(|)[\]]/,REGEX_SPECIAL_CHARS_BACKREF:/(\\?)((\W)(\3*))/g,REGEX_SPECIAL_CHARS_GLOBAL:/([-*+?.^${}(|)[\]])/g,REGEX_REMOVE_BACKSLASH:/(?:\[.*?[^\\]\]|\\(?=.))/g,REPLACEMENTS:{"***":"*","**/**":"**","**/**/**":"**"},CHAR_0:48,CHAR_9:57,CHAR_UPPERCASE_A:65,CHAR_LOWERCASE_A:97,CHAR_UPPERCASE_Z:90,CHAR_LOWERCASE_Z:122,CHAR_LEFT_PARENTHESES:40,CHAR_RIGHT_PARENTHESES:41,CHAR_ASTERISK:42,CHAR_AMPERSAND:38,CHAR_AT:64,CHAR_BACKWARD_SLASH:92,CHAR_CARRIAGE_RETURN:13,CHAR_CIRCUMFLEX_ACCENT:94,CHAR_COLON:58,CHAR_COMMA:44,CHAR_DOT:46,CHAR_DOUBLE_QUOTE:34,CHAR_EQUAL:61,CHAR_EXCLAMATION_MARK:33,CHAR_FORM_FEED:12,CHAR_FORWARD_SLASH:47,CHAR_GRAVE_ACCENT:96,CHAR_HASH:35,CHAR_HYPHEN_MINUS:45,CHAR_LEFT_ANGLE_BRACKET:60,CHAR_LEFT_CURLY_BRACE:123,CHAR_LEFT_SQUARE_BRACKET:91,CHAR_LINE_FEED:10,CHAR_NO_BREAK_SPACE:160,CHAR_PERCENT:37,CHAR_PLUS:43,CHAR_QUESTION_MARK:63,CHAR_RIGHT_ANGLE_BRACKET:62,CHAR_RIGHT_CURLY_BRACE:125,CHAR_RIGHT_SQUARE_BRACKET:93,CHAR_SEMICOLON:59,CHAR_SINGLE_QUOTE:39,CHAR_SPACE:32,CHAR_TAB:9,CHAR_UNDERSCORE:95,CHAR_VERTICAL_LINE:124,CHAR_ZERO_WIDTH_NOBREAK_SPACE:65279,SEP:Rrt.sep,extglobChars(t){return{"!":{type:"negate",open:"(?:(?!(?:",close:`))${t.STAR})`},"?":{type:"qmark",open:"(?:",close:")?"},"+":{type:"plus",open:"(?:",close:")+"},"*":{type:"star",open:"(?:",close:")*"},"@":{type:"at",open:"(?:",close:")"}}},globChars(t){return t===!0?qrt:yae}}});var SB=L(al=>{"use strict";var Wrt=ye("path"),Yrt=process.platform==="win32",{REGEX_BACKSLASH:Vrt,REGEX_REMOVE_BACKSLASH:Krt,REGEX_SPECIAL_CHARS:Jrt,REGEX_SPECIAL_CHARS_GLOBAL:zrt}=vB();al.isObject=t=>t!==null&&typeof t=="object"&&!Array.isArray(t);al.hasRegexChars=t=>Jrt.test(t);al.isRegexChar=t=>t.length===1&&al.hasRegexChars(t);al.escapeRegex=t=>t.replace(zrt,"\\$1");al.toPosixSlashes=t=>t.replace(Vrt,"/");al.removeBackslashes=t=>t.replace(Krt,e=>e==="\\"?"":e);al.supportsLookbehinds=()=>{let t=process.version.slice(1).split(".").map(Number);return t.length===3&&t[0]>=9||t[0]===8&&t[1]>=10};al.isWindows=t=>t&&typeof t.windows=="boolean"?t.windows:Yrt===!0||Wrt.sep==="\\";al.escapeLast=(t,e,r)=>{let s=t.lastIndexOf(e,r);return s===-1?t:t[s-1]==="\\"?al.escapeLast(t,e,s-1):`${t.slice(0,s)}\\${t.slice(s)}`};al.removePrefix=(t,e={})=>{let r=t;return r.startsWith("./")&&(r=r.slice(2),e.prefix="./"),r};al.wrapOutput=(t,e={},r={})=>{let s=r.contains?"":"^",a=r.contains?"":"$",n=`${s}(?:${t})${a}`;return e.negated===!0&&(n=`(?:^(?!${n}).*$)`),n}});var bae=L((eVt,Dae)=>{"use strict";var Iae=SB(),{CHAR_ASTERISK:B4,CHAR_AT:Zrt,CHAR_BACKWARD_SLASH:DB,CHAR_COMMA:Xrt,CHAR_DOT:v4,CHAR_EXCLAMATION_MARK:S4,CHAR_FORWARD_SLASH:Sae,CHAR_LEFT_CURLY_BRACE:D4,CHAR_LEFT_PARENTHESES:b4,CHAR_LEFT_SQUARE_BRACKET:$rt,CHAR_PLUS:ent,CHAR_QUESTION_MARK:Cae,CHAR_RIGHT_CURLY_BRACE:tnt,CHAR_RIGHT_PARENTHESES:wae,CHAR_RIGHT_SQUARE_BRACKET:rnt}=vB(),Bae=t=>t===Sae||t===DB,vae=t=>{t.isPrefix!==!0&&(t.depth=t.isGlobstar?1/0:1)},nnt=(t,e)=>{let r=e||{},s=t.length-1,a=r.parts===!0||r.scanToEnd===!0,n=[],c=[],f=[],p=t,h=-1,E=0,C=0,S=!1,P=!1,I=!1,R=!1,N=!1,U=!1,W=!1,te=!1,ie=!1,Ae=!1,ce=0,me,pe,Be={value:"",depth:0,isGlob:!1},Ce=()=>h>=s,g=()=>p.charCodeAt(h+1),we=()=>(me=pe,p.charCodeAt(++h));for(;h0&&(fe=p.slice(0,E),p=p.slice(E),C-=E),Ee&&I===!0&&C>0?(Ee=p.slice(0,C),se=p.slice(C)):I===!0?(Ee="",se=p):Ee=p,Ee&&Ee!==""&&Ee!=="/"&&Ee!==p&&Bae(Ee.charCodeAt(Ee.length-1))&&(Ee=Ee.slice(0,-1)),r.unescape===!0&&(se&&(se=Iae.removeBackslashes(se)),Ee&&W===!0&&(Ee=Iae.removeBackslashes(Ee)));let X={prefix:fe,input:t,start:E,base:Ee,glob:se,isBrace:S,isBracket:P,isGlob:I,isExtglob:R,isGlobstar:N,negated:te,negatedExtglob:ie};if(r.tokens===!0&&(X.maxDepth=0,Bae(pe)||c.push(Be),X.tokens=c),r.parts===!0||r.tokens===!0){let De;for(let Re=0;Re{"use strict";var Sk=vB(),Gl=SB(),{MAX_LENGTH:Dk,POSIX_REGEX_SOURCE:int,REGEX_NON_SPECIAL_CHARS:snt,REGEX_SPECIAL_CHARS_BACKREF:ont,REPLACEMENTS:Pae}=Sk,ant=(t,e)=>{if(typeof e.expandRange=="function")return e.expandRange(...t,e);t.sort();let r=`[${t.join("-")}]`;try{new RegExp(r)}catch{return t.map(a=>Gl.escapeRegex(a)).join("..")}return r},RE=(t,e)=>`Missing ${t}: "${e}" - use "\\\\${e}" to match literal characters`,P4=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");t=Pae[t]||t;let r={...e},s=typeof r.maxLength=="number"?Math.min(Dk,r.maxLength):Dk,a=t.length;if(a>s)throw new SyntaxError(`Input length: ${a}, exceeds maximum allowed length: ${s}`);let n={type:"bos",value:"",output:r.prepend||""},c=[n],f=r.capture?"":"?:",p=Gl.isWindows(e),h=Sk.globChars(p),E=Sk.extglobChars(h),{DOT_LITERAL:C,PLUS_LITERAL:S,SLASH_LITERAL:P,ONE_CHAR:I,DOTS_SLASH:R,NO_DOT:N,NO_DOT_SLASH:U,NO_DOTS_SLASH:W,QMARK:te,QMARK_NO_DOT:ie,STAR:Ae,START_ANCHOR:ce}=h,me=x=>`(${f}(?:(?!${ce}${x.dot?R:C}).)*?)`,pe=r.dot?"":N,Be=r.dot?te:ie,Ce=r.bash===!0?me(r):Ae;r.capture&&(Ce=`(${Ce})`),typeof r.noext=="boolean"&&(r.noextglob=r.noext);let g={input:t,index:-1,start:0,dot:r.dot===!0,consumed:"",output:"",prefix:"",backtrack:!1,negated:!1,brackets:0,braces:0,parens:0,quotes:0,globstar:!1,tokens:c};t=Gl.removePrefix(t,g),a=t.length;let we=[],Ee=[],fe=[],se=n,X,De=()=>g.index===a-1,Re=g.peek=(x=1)=>t[g.index+x],gt=g.advance=()=>t[++g.index]||"",j=()=>t.slice(g.index+1),rt=(x="",w=0)=>{g.consumed+=x,g.index+=w},Fe=x=>{g.output+=x.output!=null?x.output:x.value,rt(x.value)},Ne=()=>{let x=1;for(;Re()==="!"&&(Re(2)!=="("||Re(3)==="?");)gt(),g.start++,x++;return x%2===0?!1:(g.negated=!0,g.start++,!0)},Pe=x=>{g[x]++,fe.push(x)},Ye=x=>{g[x]--,fe.pop()},ke=x=>{if(se.type==="globstar"){let w=g.braces>0&&(x.type==="comma"||x.type==="brace"),b=x.extglob===!0||we.length&&(x.type==="pipe"||x.type==="paren");x.type!=="slash"&&x.type!=="paren"&&!w&&!b&&(g.output=g.output.slice(0,-se.output.length),se.type="star",se.value="*",se.output=Ce,g.output+=se.output)}if(we.length&&x.type!=="paren"&&(we[we.length-1].inner+=x.value),(x.value||x.output)&&Fe(x),se&&se.type==="text"&&x.type==="text"){se.value+=x.value,se.output=(se.output||"")+x.value;return}x.prev=se,c.push(x),se=x},it=(x,w)=>{let b={...E[w],conditions:1,inner:""};b.prev=se,b.parens=g.parens,b.output=g.output;let y=(r.capture?"(":"")+b.open;Pe("parens"),ke({type:x,value:w,output:g.output?"":I}),ke({type:"paren",extglob:!0,value:gt(),output:y}),we.push(b)},_e=x=>{let w=x.close+(r.capture?")":""),b;if(x.type==="negate"){let y=Ce;if(x.inner&&x.inner.length>1&&x.inner.includes("/")&&(y=me(r)),(y!==Ce||De()||/^\)+$/.test(j()))&&(w=x.close=`)$))${y}`),x.inner.includes("*")&&(b=j())&&/^\.[^\\/.]+$/.test(b)){let F=P4(b,{...e,fastpaths:!1}).output;w=x.close=`)${F})${y})`}x.prev.type==="bos"&&(g.negatedExtglob=!0)}ke({type:"paren",extglob:!0,value:X,output:w}),Ye("parens")};if(r.fastpaths!==!1&&!/(^[*!]|[/()[\]{}"])/.test(t)){let x=!1,w=t.replace(ont,(b,y,F,z,Z,$)=>z==="\\"?(x=!0,b):z==="?"?y?y+z+(Z?te.repeat(Z.length):""):$===0?Be+(Z?te.repeat(Z.length):""):te.repeat(F.length):z==="."?C.repeat(F.length):z==="*"?y?y+z+(Z?Ce:""):Ce:y?b:`\\${b}`);return x===!0&&(r.unescape===!0?w=w.replace(/\\/g,""):w=w.replace(/\\+/g,b=>b.length%2===0?"\\\\":b?"\\":"")),w===t&&r.contains===!0?(g.output=t,g):(g.output=Gl.wrapOutput(w,g,e),g)}for(;!De();){if(X=gt(),X==="\0")continue;if(X==="\\"){let b=Re();if(b==="/"&&r.bash!==!0||b==="."||b===";")continue;if(!b){X+="\\",ke({type:"text",value:X});continue}let y=/^\\+/.exec(j()),F=0;if(y&&y[0].length>2&&(F=y[0].length,g.index+=F,F%2!==0&&(X+="\\")),r.unescape===!0?X=gt():X+=gt(),g.brackets===0){ke({type:"text",value:X});continue}}if(g.brackets>0&&(X!=="]"||se.value==="["||se.value==="[^")){if(r.posix!==!1&&X===":"){let b=se.value.slice(1);if(b.includes("[")&&(se.posix=!0,b.includes(":"))){let y=se.value.lastIndexOf("["),F=se.value.slice(0,y),z=se.value.slice(y+2),Z=int[z];if(Z){se.value=F+Z,g.backtrack=!0,gt(),!n.output&&c.indexOf(se)===1&&(n.output=I);continue}}}(X==="["&&Re()!==":"||X==="-"&&Re()==="]")&&(X=`\\${X}`),X==="]"&&(se.value==="["||se.value==="[^")&&(X=`\\${X}`),r.posix===!0&&X==="!"&&se.value==="["&&(X="^"),se.value+=X,Fe({value:X});continue}if(g.quotes===1&&X!=='"'){X=Gl.escapeRegex(X),se.value+=X,Fe({value:X});continue}if(X==='"'){g.quotes=g.quotes===1?0:1,r.keepQuotes===!0&&ke({type:"text",value:X});continue}if(X==="("){Pe("parens"),ke({type:"paren",value:X});continue}if(X===")"){if(g.parens===0&&r.strictBrackets===!0)throw new SyntaxError(RE("opening","("));let b=we[we.length-1];if(b&&g.parens===b.parens+1){_e(we.pop());continue}ke({type:"paren",value:X,output:g.parens?")":"\\)"}),Ye("parens");continue}if(X==="["){if(r.nobracket===!0||!j().includes("]")){if(r.nobracket!==!0&&r.strictBrackets===!0)throw new SyntaxError(RE("closing","]"));X=`\\${X}`}else Pe("brackets");ke({type:"bracket",value:X});continue}if(X==="]"){if(r.nobracket===!0||se&&se.type==="bracket"&&se.value.length===1){ke({type:"text",value:X,output:`\\${X}`});continue}if(g.brackets===0){if(r.strictBrackets===!0)throw new SyntaxError(RE("opening","["));ke({type:"text",value:X,output:`\\${X}`});continue}Ye("brackets");let b=se.value.slice(1);if(se.posix!==!0&&b[0]==="^"&&!b.includes("/")&&(X=`/${X}`),se.value+=X,Fe({value:X}),r.literalBrackets===!1||Gl.hasRegexChars(b))continue;let y=Gl.escapeRegex(se.value);if(g.output=g.output.slice(0,-se.value.length),r.literalBrackets===!0){g.output+=y,se.value=y;continue}se.value=`(${f}${y}|${se.value})`,g.output+=se.value;continue}if(X==="{"&&r.nobrace!==!0){Pe("braces");let b={type:"brace",value:X,output:"(",outputIndex:g.output.length,tokensIndex:g.tokens.length};Ee.push(b),ke(b);continue}if(X==="}"){let b=Ee[Ee.length-1];if(r.nobrace===!0||!b){ke({type:"text",value:X,output:X});continue}let y=")";if(b.dots===!0){let F=c.slice(),z=[];for(let Z=F.length-1;Z>=0&&(c.pop(),F[Z].type!=="brace");Z--)F[Z].type!=="dots"&&z.unshift(F[Z].value);y=ant(z,r),g.backtrack=!0}if(b.comma!==!0&&b.dots!==!0){let F=g.output.slice(0,b.outputIndex),z=g.tokens.slice(b.tokensIndex);b.value=b.output="\\{",X=y="\\}",g.output=F;for(let Z of z)g.output+=Z.output||Z.value}ke({type:"brace",value:X,output:y}),Ye("braces"),Ee.pop();continue}if(X==="|"){we.length>0&&we[we.length-1].conditions++,ke({type:"text",value:X});continue}if(X===","){let b=X,y=Ee[Ee.length-1];y&&fe[fe.length-1]==="braces"&&(y.comma=!0,b="|"),ke({type:"comma",value:X,output:b});continue}if(X==="/"){if(se.type==="dot"&&g.index===g.start+1){g.start=g.index+1,g.consumed="",g.output="",c.pop(),se=n;continue}ke({type:"slash",value:X,output:P});continue}if(X==="."){if(g.braces>0&&se.type==="dot"){se.value==="."&&(se.output=C);let b=Ee[Ee.length-1];se.type="dots",se.output+=X,se.value+=X,b.dots=!0;continue}if(g.braces+g.parens===0&&se.type!=="bos"&&se.type!=="slash"){ke({type:"text",value:X,output:C});continue}ke({type:"dot",value:X,output:C});continue}if(X==="?"){if(!(se&&se.value==="(")&&r.noextglob!==!0&&Re()==="("&&Re(2)!=="?"){it("qmark",X);continue}if(se&&se.type==="paren"){let y=Re(),F=X;if(y==="<"&&!Gl.supportsLookbehinds())throw new Error("Node.js v10 or higher is required for regex lookbehinds");(se.value==="("&&!/[!=<:]/.test(y)||y==="<"&&!/<([!=]|\w+>)/.test(j()))&&(F=`\\${X}`),ke({type:"text",value:X,output:F});continue}if(r.dot!==!0&&(se.type==="slash"||se.type==="bos")){ke({type:"qmark",value:X,output:ie});continue}ke({type:"qmark",value:X,output:te});continue}if(X==="!"){if(r.noextglob!==!0&&Re()==="("&&(Re(2)!=="?"||!/[!=<:]/.test(Re(3)))){it("negate",X);continue}if(r.nonegate!==!0&&g.index===0){Ne();continue}}if(X==="+"){if(r.noextglob!==!0&&Re()==="("&&Re(2)!=="?"){it("plus",X);continue}if(se&&se.value==="("||r.regex===!1){ke({type:"plus",value:X,output:S});continue}if(se&&(se.type==="bracket"||se.type==="paren"||se.type==="brace")||g.parens>0){ke({type:"plus",value:X});continue}ke({type:"plus",value:S});continue}if(X==="@"){if(r.noextglob!==!0&&Re()==="("&&Re(2)!=="?"){ke({type:"at",extglob:!0,value:X,output:""});continue}ke({type:"text",value:X});continue}if(X!=="*"){(X==="$"||X==="^")&&(X=`\\${X}`);let b=snt.exec(j());b&&(X+=b[0],g.index+=b[0].length),ke({type:"text",value:X});continue}if(se&&(se.type==="globstar"||se.star===!0)){se.type="star",se.star=!0,se.value+=X,se.output=Ce,g.backtrack=!0,g.globstar=!0,rt(X);continue}let x=j();if(r.noextglob!==!0&&/^\([^?]/.test(x)){it("star",X);continue}if(se.type==="star"){if(r.noglobstar===!0){rt(X);continue}let b=se.prev,y=b.prev,F=b.type==="slash"||b.type==="bos",z=y&&(y.type==="star"||y.type==="globstar");if(r.bash===!0&&(!F||x[0]&&x[0]!=="/")){ke({type:"star",value:X,output:""});continue}let Z=g.braces>0&&(b.type==="comma"||b.type==="brace"),$=we.length&&(b.type==="pipe"||b.type==="paren");if(!F&&b.type!=="paren"&&!Z&&!$){ke({type:"star",value:X,output:""});continue}for(;x.slice(0,3)==="/**";){let oe=t[g.index+4];if(oe&&oe!=="/")break;x=x.slice(3),rt("/**",3)}if(b.type==="bos"&&De()){se.type="globstar",se.value+=X,se.output=me(r),g.output=se.output,g.globstar=!0,rt(X);continue}if(b.type==="slash"&&b.prev.type!=="bos"&&!z&&De()){g.output=g.output.slice(0,-(b.output+se.output).length),b.output=`(?:${b.output}`,se.type="globstar",se.output=me(r)+(r.strictSlashes?")":"|$)"),se.value+=X,g.globstar=!0,g.output+=b.output+se.output,rt(X);continue}if(b.type==="slash"&&b.prev.type!=="bos"&&x[0]==="/"){let oe=x[1]!==void 0?"|$":"";g.output=g.output.slice(0,-(b.output+se.output).length),b.output=`(?:${b.output}`,se.type="globstar",se.output=`${me(r)}${P}|${P}${oe})`,se.value+=X,g.output+=b.output+se.output,g.globstar=!0,rt(X+gt()),ke({type:"slash",value:"/",output:""});continue}if(b.type==="bos"&&x[0]==="/"){se.type="globstar",se.value+=X,se.output=`(?:^|${P}|${me(r)}${P})`,g.output=se.output,g.globstar=!0,rt(X+gt()),ke({type:"slash",value:"/",output:""});continue}g.output=g.output.slice(0,-se.output.length),se.type="globstar",se.output=me(r),se.value+=X,g.output+=se.output,g.globstar=!0,rt(X);continue}let w={type:"star",value:X,output:Ce};if(r.bash===!0){w.output=".*?",(se.type==="bos"||se.type==="slash")&&(w.output=pe+w.output),ke(w);continue}if(se&&(se.type==="bracket"||se.type==="paren")&&r.regex===!0){w.output=X,ke(w);continue}(g.index===g.start||se.type==="slash"||se.type==="dot")&&(se.type==="dot"?(g.output+=U,se.output+=U):r.dot===!0?(g.output+=W,se.output+=W):(g.output+=pe,se.output+=pe),Re()!=="*"&&(g.output+=I,se.output+=I)),ke(w)}for(;g.brackets>0;){if(r.strictBrackets===!0)throw new SyntaxError(RE("closing","]"));g.output=Gl.escapeLast(g.output,"["),Ye("brackets")}for(;g.parens>0;){if(r.strictBrackets===!0)throw new SyntaxError(RE("closing",")"));g.output=Gl.escapeLast(g.output,"("),Ye("parens")}for(;g.braces>0;){if(r.strictBrackets===!0)throw new SyntaxError(RE("closing","}"));g.output=Gl.escapeLast(g.output,"{"),Ye("braces")}if(r.strictSlashes!==!0&&(se.type==="star"||se.type==="bracket")&&ke({type:"maybe_slash",value:"",output:`${P}?`}),g.backtrack===!0){g.output="";for(let x of g.tokens)g.output+=x.output!=null?x.output:x.value,x.suffix&&(g.output+=x.suffix)}return g};P4.fastpaths=(t,e)=>{let r={...e},s=typeof r.maxLength=="number"?Math.min(Dk,r.maxLength):Dk,a=t.length;if(a>s)throw new SyntaxError(`Input length: ${a}, exceeds maximum allowed length: ${s}`);t=Pae[t]||t;let n=Gl.isWindows(e),{DOT_LITERAL:c,SLASH_LITERAL:f,ONE_CHAR:p,DOTS_SLASH:h,NO_DOT:E,NO_DOTS:C,NO_DOTS_SLASH:S,STAR:P,START_ANCHOR:I}=Sk.globChars(n),R=r.dot?C:E,N=r.dot?S:E,U=r.capture?"":"?:",W={negated:!1,prefix:""},te=r.bash===!0?".*?":P;r.capture&&(te=`(${te})`);let ie=pe=>pe.noglobstar===!0?te:`(${U}(?:(?!${I}${pe.dot?h:c}).)*?)`,Ae=pe=>{switch(pe){case"*":return`${R}${p}${te}`;case".*":return`${c}${p}${te}`;case"*.*":return`${R}${te}${c}${p}${te}`;case"*/*":return`${R}${te}${f}${p}${N}${te}`;case"**":return R+ie(r);case"**/*":return`(?:${R}${ie(r)}${f})?${N}${p}${te}`;case"**/*.*":return`(?:${R}${ie(r)}${f})?${N}${te}${c}${p}${te}`;case"**/.*":return`(?:${R}${ie(r)}${f})?${c}${p}${te}`;default:{let Be=/^(.*?)\.(\w+)$/.exec(pe);if(!Be)return;let Ce=Ae(Be[1]);return Ce?Ce+c+Be[2]:void 0}}},ce=Gl.removePrefix(t,W),me=Ae(ce);return me&&r.strictSlashes!==!0&&(me+=`${f}?`),me};xae.exports=P4});var Tae=L((rVt,Qae)=>{"use strict";var lnt=ye("path"),cnt=bae(),x4=kae(),k4=SB(),unt=vB(),fnt=t=>t&&typeof t=="object"&&!Array.isArray(t),Xi=(t,e,r=!1)=>{if(Array.isArray(t)){let E=t.map(S=>Xi(S,e,r));return S=>{for(let P of E){let I=P(S);if(I)return I}return!1}}let s=fnt(t)&&t.tokens&&t.input;if(t===""||typeof t!="string"&&!s)throw new TypeError("Expected pattern to be a non-empty string");let a=e||{},n=k4.isWindows(e),c=s?Xi.compileRe(t,e):Xi.makeRe(t,e,!1,!0),f=c.state;delete c.state;let p=()=>!1;if(a.ignore){let E={...e,ignore:null,onMatch:null,onResult:null};p=Xi(a.ignore,E,r)}let h=(E,C=!1)=>{let{isMatch:S,match:P,output:I}=Xi.test(E,c,e,{glob:t,posix:n}),R={glob:t,state:f,regex:c,posix:n,input:E,output:I,match:P,isMatch:S};return typeof a.onResult=="function"&&a.onResult(R),S===!1?(R.isMatch=!1,C?R:!1):p(E)?(typeof a.onIgnore=="function"&&a.onIgnore(R),R.isMatch=!1,C?R:!1):(typeof a.onMatch=="function"&&a.onMatch(R),C?R:!0)};return r&&(h.state=f),h};Xi.test=(t,e,r,{glob:s,posix:a}={})=>{if(typeof t!="string")throw new TypeError("Expected input to be a string");if(t==="")return{isMatch:!1,output:""};let n=r||{},c=n.format||(a?k4.toPosixSlashes:null),f=t===s,p=f&&c?c(t):t;return f===!1&&(p=c?c(t):t,f=p===s),(f===!1||n.capture===!0)&&(n.matchBase===!0||n.basename===!0?f=Xi.matchBase(t,e,r,a):f=e.exec(p)),{isMatch:!!f,match:f,output:p}};Xi.matchBase=(t,e,r,s=k4.isWindows(r))=>(e instanceof RegExp?e:Xi.makeRe(e,r)).test(lnt.basename(t));Xi.isMatch=(t,e,r)=>Xi(e,r)(t);Xi.parse=(t,e)=>Array.isArray(t)?t.map(r=>Xi.parse(r,e)):x4(t,{...e,fastpaths:!1});Xi.scan=(t,e)=>cnt(t,e);Xi.compileRe=(t,e,r=!1,s=!1)=>{if(r===!0)return t.output;let a=e||{},n=a.contains?"":"^",c=a.contains?"":"$",f=`${n}(?:${t.output})${c}`;t&&t.negated===!0&&(f=`^(?!${f}).*$`);let p=Xi.toRegex(f,e);return s===!0&&(p.state=t),p};Xi.makeRe=(t,e={},r=!1,s=!1)=>{if(!t||typeof t!="string")throw new TypeError("Expected a non-empty string");let a={negated:!1,fastpaths:!0};return e.fastpaths!==!1&&(t[0]==="."||t[0]==="*")&&(a.output=x4.fastpaths(t,e)),a.output||(a=x4(t,e)),Xi.compileRe(a,e,r,s)};Xi.toRegex=(t,e)=>{try{let r=e||{};return new RegExp(t,r.flags||(r.nocase?"i":""))}catch(r){if(e&&e.debug===!0)throw r;return/$^/}};Xi.constants=unt;Qae.exports=Xi});var Fae=L((nVt,Rae)=>{"use strict";Rae.exports=Tae()});var Sa=L((iVt,Mae)=>{"use strict";var Oae=ye("util"),Lae=hae(),Jf=Fae(),Q4=SB(),Nae=t=>t===""||t==="./",ki=(t,e,r)=>{e=[].concat(e),t=[].concat(t);let s=new Set,a=new Set,n=new Set,c=0,f=E=>{n.add(E.output),r&&r.onResult&&r.onResult(E)};for(let E=0;E!s.has(E));if(r&&h.length===0){if(r.failglob===!0)throw new Error(`No matches found for "${e.join(", ")}"`);if(r.nonull===!0||r.nullglob===!0)return r.unescape?e.map(E=>E.replace(/\\/g,"")):e}return h};ki.match=ki;ki.matcher=(t,e)=>Jf(t,e);ki.isMatch=(t,e,r)=>Jf(e,r)(t);ki.any=ki.isMatch;ki.not=(t,e,r={})=>{e=[].concat(e).map(String);let s=new Set,a=[],n=f=>{r.onResult&&r.onResult(f),a.push(f.output)},c=new Set(ki(t,e,{...r,onResult:n}));for(let f of a)c.has(f)||s.add(f);return[...s]};ki.contains=(t,e,r)=>{if(typeof t!="string")throw new TypeError(`Expected a string: "${Oae.inspect(t)}"`);if(Array.isArray(e))return e.some(s=>ki.contains(t,s,r));if(typeof e=="string"){if(Nae(t)||Nae(e))return!1;if(t.includes(e)||t.startsWith("./")&&t.slice(2).includes(e))return!0}return ki.isMatch(t,e,{...r,contains:!0})};ki.matchKeys=(t,e,r)=>{if(!Q4.isObject(t))throw new TypeError("Expected the first argument to be an object");let s=ki(Object.keys(t),e,r),a={};for(let n of s)a[n]=t[n];return a};ki.some=(t,e,r)=>{let s=[].concat(t);for(let a of[].concat(e)){let n=Jf(String(a),r);if(s.some(c=>n(c)))return!0}return!1};ki.every=(t,e,r)=>{let s=[].concat(t);for(let a of[].concat(e)){let n=Jf(String(a),r);if(!s.every(c=>n(c)))return!1}return!0};ki.all=(t,e,r)=>{if(typeof t!="string")throw new TypeError(`Expected a string: "${Oae.inspect(t)}"`);return[].concat(e).every(s=>Jf(s,r)(t))};ki.capture=(t,e,r)=>{let s=Q4.isWindows(r),n=Jf.makeRe(String(t),{...r,capture:!0}).exec(s?Q4.toPosixSlashes(e):e);if(n)return n.slice(1).map(c=>c===void 0?"":c)};ki.makeRe=(...t)=>Jf.makeRe(...t);ki.scan=(...t)=>Jf.scan(...t);ki.parse=(t,e)=>{let r=[];for(let s of[].concat(t||[]))for(let a of Lae(String(s),e))r.push(Jf.parse(a,e));return r};ki.braces=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");return e&&e.nobrace===!0||!/\{.*\}/.test(t)?[t]:Lae(t,e)};ki.braceExpand=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");return ki.braces(t,{...e,expand:!0})};Mae.exports=ki});var Uae=L((sVt,_ae)=>{"use strict";_ae.exports=({onlyFirst:t=!1}={})=>{let e=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(e,t?void 0:"g")}});var bk=L((oVt,Hae)=>{"use strict";var Ant=Uae();Hae.exports=t=>typeof t=="string"?t.replace(Ant(),""):t});var qae=L((aVt,jae)=>{function pnt(){this.__data__=[],this.size=0}jae.exports=pnt});var FE=L((lVt,Gae)=>{function hnt(t,e){return t===e||t!==t&&e!==e}Gae.exports=hnt});var bB=L((cVt,Wae)=>{var gnt=FE();function dnt(t,e){for(var r=t.length;r--;)if(gnt(t[r][0],e))return r;return-1}Wae.exports=dnt});var Vae=L((uVt,Yae)=>{var mnt=bB(),ynt=Array.prototype,Ent=ynt.splice;function Int(t){var e=this.__data__,r=mnt(e,t);if(r<0)return!1;var s=e.length-1;return r==s?e.pop():Ent.call(e,r,1),--this.size,!0}Yae.exports=Int});var Jae=L((fVt,Kae)=>{var Cnt=bB();function wnt(t){var e=this.__data__,r=Cnt(e,t);return r<0?void 0:e[r][1]}Kae.exports=wnt});var Zae=L((AVt,zae)=>{var Bnt=bB();function vnt(t){return Bnt(this.__data__,t)>-1}zae.exports=vnt});var $ae=L((pVt,Xae)=>{var Snt=bB();function Dnt(t,e){var r=this.__data__,s=Snt(r,t);return s<0?(++this.size,r.push([t,e])):r[s][1]=e,this}Xae.exports=Dnt});var PB=L((hVt,ele)=>{var bnt=qae(),Pnt=Vae(),xnt=Jae(),knt=Zae(),Qnt=$ae();function NE(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e{var Tnt=PB();function Rnt(){this.__data__=new Tnt,this.size=0}tle.exports=Rnt});var ile=L((dVt,nle)=>{function Fnt(t){var e=this.__data__,r=e.delete(t);return this.size=e.size,r}nle.exports=Fnt});var ole=L((mVt,sle)=>{function Nnt(t){return this.__data__.get(t)}sle.exports=Nnt});var lle=L((yVt,ale)=>{function Ont(t){return this.__data__.has(t)}ale.exports=Ont});var T4=L((EVt,cle)=>{var Lnt=typeof global=="object"&&global&&global.Object===Object&&global;cle.exports=Lnt});var Pc=L((IVt,ule)=>{var Mnt=T4(),_nt=typeof self=="object"&&self&&self.Object===Object&&self,Unt=Mnt||_nt||Function("return this")();ule.exports=Unt});var Yd=L((CVt,fle)=>{var Hnt=Pc(),jnt=Hnt.Symbol;fle.exports=jnt});var gle=L((wVt,hle)=>{var Ale=Yd(),ple=Object.prototype,qnt=ple.hasOwnProperty,Gnt=ple.toString,xB=Ale?Ale.toStringTag:void 0;function Wnt(t){var e=qnt.call(t,xB),r=t[xB];try{t[xB]=void 0;var s=!0}catch{}var a=Gnt.call(t);return s&&(e?t[xB]=r:delete t[xB]),a}hle.exports=Wnt});var mle=L((BVt,dle)=>{var Ynt=Object.prototype,Vnt=Ynt.toString;function Knt(t){return Vnt.call(t)}dle.exports=Knt});var Vd=L((vVt,Ile)=>{var yle=Yd(),Jnt=gle(),znt=mle(),Znt="[object Null]",Xnt="[object Undefined]",Ele=yle?yle.toStringTag:void 0;function $nt(t){return t==null?t===void 0?Xnt:Znt:Ele&&Ele in Object(t)?Jnt(t):znt(t)}Ile.exports=$nt});var Wl=L((SVt,Cle)=>{function eit(t){var e=typeof t;return t!=null&&(e=="object"||e=="function")}Cle.exports=eit});var Pk=L((DVt,wle)=>{var tit=Vd(),rit=Wl(),nit="[object AsyncFunction]",iit="[object Function]",sit="[object GeneratorFunction]",oit="[object Proxy]";function ait(t){if(!rit(t))return!1;var e=tit(t);return e==iit||e==sit||e==nit||e==oit}wle.exports=ait});var vle=L((bVt,Ble)=>{var lit=Pc(),cit=lit["__core-js_shared__"];Ble.exports=cit});var ble=L((PVt,Dle)=>{var R4=vle(),Sle=function(){var t=/[^.]+$/.exec(R4&&R4.keys&&R4.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}();function uit(t){return!!Sle&&Sle in t}Dle.exports=uit});var F4=L((xVt,Ple)=>{var fit=Function.prototype,Ait=fit.toString;function pit(t){if(t!=null){try{return Ait.call(t)}catch{}try{return t+""}catch{}}return""}Ple.exports=pit});var kle=L((kVt,xle)=>{var hit=Pk(),git=ble(),dit=Wl(),mit=F4(),yit=/[\\^$.*+?()[\]{}|]/g,Eit=/^\[object .+?Constructor\]$/,Iit=Function.prototype,Cit=Object.prototype,wit=Iit.toString,Bit=Cit.hasOwnProperty,vit=RegExp("^"+wit.call(Bit).replace(yit,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Sit(t){if(!dit(t)||git(t))return!1;var e=hit(t)?vit:Eit;return e.test(mit(t))}xle.exports=Sit});var Tle=L((QVt,Qle)=>{function Dit(t,e){return t?.[e]}Qle.exports=Dit});var A0=L((TVt,Rle)=>{var bit=kle(),Pit=Tle();function xit(t,e){var r=Pit(t,e);return bit(r)?r:void 0}Rle.exports=xit});var xk=L((RVt,Fle)=>{var kit=A0(),Qit=Pc(),Tit=kit(Qit,"Map");Fle.exports=Tit});var kB=L((FVt,Nle)=>{var Rit=A0(),Fit=Rit(Object,"create");Nle.exports=Fit});var Mle=L((NVt,Lle)=>{var Ole=kB();function Nit(){this.__data__=Ole?Ole(null):{},this.size=0}Lle.exports=Nit});var Ule=L((OVt,_le)=>{function Oit(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}_le.exports=Oit});var jle=L((LVt,Hle)=>{var Lit=kB(),Mit="__lodash_hash_undefined__",_it=Object.prototype,Uit=_it.hasOwnProperty;function Hit(t){var e=this.__data__;if(Lit){var r=e[t];return r===Mit?void 0:r}return Uit.call(e,t)?e[t]:void 0}Hle.exports=Hit});var Gle=L((MVt,qle)=>{var jit=kB(),qit=Object.prototype,Git=qit.hasOwnProperty;function Wit(t){var e=this.__data__;return jit?e[t]!==void 0:Git.call(e,t)}qle.exports=Wit});var Yle=L((_Vt,Wle)=>{var Yit=kB(),Vit="__lodash_hash_undefined__";function Kit(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=Yit&&e===void 0?Vit:e,this}Wle.exports=Kit});var Kle=L((UVt,Vle)=>{var Jit=Mle(),zit=Ule(),Zit=jle(),Xit=Gle(),$it=Yle();function OE(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e{var Jle=Kle(),est=PB(),tst=xk();function rst(){this.size=0,this.__data__={hash:new Jle,map:new(tst||est),string:new Jle}}zle.exports=rst});var $le=L((jVt,Xle)=>{function nst(t){var e=typeof t;return e=="string"||e=="number"||e=="symbol"||e=="boolean"?t!=="__proto__":t===null}Xle.exports=nst});var QB=L((qVt,ece)=>{var ist=$le();function sst(t,e){var r=t.__data__;return ist(e)?r[typeof e=="string"?"string":"hash"]:r.map}ece.exports=sst});var rce=L((GVt,tce)=>{var ost=QB();function ast(t){var e=ost(this,t).delete(t);return this.size-=e?1:0,e}tce.exports=ast});var ice=L((WVt,nce)=>{var lst=QB();function cst(t){return lst(this,t).get(t)}nce.exports=cst});var oce=L((YVt,sce)=>{var ust=QB();function fst(t){return ust(this,t).has(t)}sce.exports=fst});var lce=L((VVt,ace)=>{var Ast=QB();function pst(t,e){var r=Ast(this,t),s=r.size;return r.set(t,e),this.size+=r.size==s?0:1,this}ace.exports=pst});var kk=L((KVt,cce)=>{var hst=Zle(),gst=rce(),dst=ice(),mst=oce(),yst=lce();function LE(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e{var Est=PB(),Ist=xk(),Cst=kk(),wst=200;function Bst(t,e){var r=this.__data__;if(r instanceof Est){var s=r.__data__;if(!Ist||s.length{var vst=PB(),Sst=rle(),Dst=ile(),bst=ole(),Pst=lle(),xst=fce();function ME(t){var e=this.__data__=new vst(t);this.size=e.size}ME.prototype.clear=Sst;ME.prototype.delete=Dst;ME.prototype.get=bst;ME.prototype.has=Pst;ME.prototype.set=xst;Ace.exports=ME});var hce=L((ZVt,pce)=>{var kst="__lodash_hash_undefined__";function Qst(t){return this.__data__.set(t,kst),this}pce.exports=Qst});var dce=L((XVt,gce)=>{function Tst(t){return this.__data__.has(t)}gce.exports=Tst});var yce=L(($Vt,mce)=>{var Rst=kk(),Fst=hce(),Nst=dce();function Tk(t){var e=-1,r=t==null?0:t.length;for(this.__data__=new Rst;++e{function Ost(t,e){for(var r=-1,s=t==null?0:t.length;++r{function Lst(t,e){return t.has(e)}Cce.exports=Lst});var N4=L((r7t,Bce)=>{var Mst=yce(),_st=Ice(),Ust=wce(),Hst=1,jst=2;function qst(t,e,r,s,a,n){var c=r&Hst,f=t.length,p=e.length;if(f!=p&&!(c&&p>f))return!1;var h=n.get(t),E=n.get(e);if(h&&E)return h==e&&E==t;var C=-1,S=!0,P=r&jst?new Mst:void 0;for(n.set(t,e),n.set(e,t);++C{var Gst=Pc(),Wst=Gst.Uint8Array;vce.exports=Wst});var Dce=L((i7t,Sce)=>{function Yst(t){var e=-1,r=Array(t.size);return t.forEach(function(s,a){r[++e]=[a,s]}),r}Sce.exports=Yst});var Pce=L((s7t,bce)=>{function Vst(t){var e=-1,r=Array(t.size);return t.forEach(function(s){r[++e]=s}),r}bce.exports=Vst});var Rce=L((o7t,Tce)=>{var xce=Yd(),kce=O4(),Kst=FE(),Jst=N4(),zst=Dce(),Zst=Pce(),Xst=1,$st=2,eot="[object Boolean]",tot="[object Date]",rot="[object Error]",not="[object Map]",iot="[object Number]",sot="[object RegExp]",oot="[object Set]",aot="[object String]",lot="[object Symbol]",cot="[object ArrayBuffer]",uot="[object DataView]",Qce=xce?xce.prototype:void 0,L4=Qce?Qce.valueOf:void 0;function fot(t,e,r,s,a,n,c){switch(r){case uot:if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case cot:return!(t.byteLength!=e.byteLength||!n(new kce(t),new kce(e)));case eot:case tot:case iot:return Kst(+t,+e);case rot:return t.name==e.name&&t.message==e.message;case sot:case aot:return t==e+"";case not:var f=zst;case oot:var p=s&Xst;if(f||(f=Zst),t.size!=e.size&&!p)return!1;var h=c.get(t);if(h)return h==e;s|=$st,c.set(t,e);var E=Jst(f(t),f(e),s,a,n,c);return c.delete(t),E;case lot:if(L4)return L4.call(t)==L4.call(e)}return!1}Tce.exports=fot});var Rk=L((a7t,Fce)=>{function Aot(t,e){for(var r=-1,s=e.length,a=t.length;++r{var pot=Array.isArray;Nce.exports=pot});var M4=L((c7t,Oce)=>{var hot=Rk(),got=xc();function dot(t,e,r){var s=e(t);return got(t)?s:hot(s,r(t))}Oce.exports=dot});var Mce=L((u7t,Lce)=>{function mot(t,e){for(var r=-1,s=t==null?0:t.length,a=0,n=[];++r{function yot(){return[]}_ce.exports=yot});var Fk=L((A7t,Hce)=>{var Eot=Mce(),Iot=_4(),Cot=Object.prototype,wot=Cot.propertyIsEnumerable,Uce=Object.getOwnPropertySymbols,Bot=Uce?function(t){return t==null?[]:(t=Object(t),Eot(Uce(t),function(e){return wot.call(t,e)}))}:Iot;Hce.exports=Bot});var qce=L((p7t,jce)=>{function vot(t,e){for(var r=-1,s=Array(t);++r{function Sot(t){return t!=null&&typeof t=="object"}Gce.exports=Sot});var Yce=L((g7t,Wce)=>{var Dot=Vd(),bot=zf(),Pot="[object Arguments]";function xot(t){return bot(t)&&Dot(t)==Pot}Wce.exports=xot});var TB=L((d7t,Jce)=>{var Vce=Yce(),kot=zf(),Kce=Object.prototype,Qot=Kce.hasOwnProperty,Tot=Kce.propertyIsEnumerable,Rot=Vce(function(){return arguments}())?Vce:function(t){return kot(t)&&Qot.call(t,"callee")&&!Tot.call(t,"callee")};Jce.exports=Rot});var Zce=L((m7t,zce)=>{function Fot(){return!1}zce.exports=Fot});var FB=L((RB,_E)=>{var Not=Pc(),Oot=Zce(),eue=typeof RB=="object"&&RB&&!RB.nodeType&&RB,Xce=eue&&typeof _E=="object"&&_E&&!_E.nodeType&&_E,Lot=Xce&&Xce.exports===eue,$ce=Lot?Not.Buffer:void 0,Mot=$ce?$ce.isBuffer:void 0,_ot=Mot||Oot;_E.exports=_ot});var NB=L((y7t,tue)=>{var Uot=9007199254740991,Hot=/^(?:0|[1-9]\d*)$/;function jot(t,e){var r=typeof t;return e=e??Uot,!!e&&(r=="number"||r!="symbol"&&Hot.test(t))&&t>-1&&t%1==0&&t{var qot=9007199254740991;function Got(t){return typeof t=="number"&&t>-1&&t%1==0&&t<=qot}rue.exports=Got});var iue=L((I7t,nue)=>{var Wot=Vd(),Yot=Nk(),Vot=zf(),Kot="[object Arguments]",Jot="[object Array]",zot="[object Boolean]",Zot="[object Date]",Xot="[object Error]",$ot="[object Function]",eat="[object Map]",tat="[object Number]",rat="[object Object]",nat="[object RegExp]",iat="[object Set]",sat="[object String]",oat="[object WeakMap]",aat="[object ArrayBuffer]",lat="[object DataView]",cat="[object Float32Array]",uat="[object Float64Array]",fat="[object Int8Array]",Aat="[object Int16Array]",pat="[object Int32Array]",hat="[object Uint8Array]",gat="[object Uint8ClampedArray]",dat="[object Uint16Array]",mat="[object Uint32Array]",Si={};Si[cat]=Si[uat]=Si[fat]=Si[Aat]=Si[pat]=Si[hat]=Si[gat]=Si[dat]=Si[mat]=!0;Si[Kot]=Si[Jot]=Si[aat]=Si[zot]=Si[lat]=Si[Zot]=Si[Xot]=Si[$ot]=Si[eat]=Si[tat]=Si[rat]=Si[nat]=Si[iat]=Si[sat]=Si[oat]=!1;function yat(t){return Vot(t)&&Yot(t.length)&&!!Si[Wot(t)]}nue.exports=yat});var Ok=L((C7t,sue)=>{function Eat(t){return function(e){return t(e)}}sue.exports=Eat});var Lk=L((OB,UE)=>{var Iat=T4(),oue=typeof OB=="object"&&OB&&!OB.nodeType&&OB,LB=oue&&typeof UE=="object"&&UE&&!UE.nodeType&&UE,Cat=LB&&LB.exports===oue,U4=Cat&&Iat.process,wat=function(){try{var t=LB&&LB.require&&LB.require("util").types;return t||U4&&U4.binding&&U4.binding("util")}catch{}}();UE.exports=wat});var Mk=L((w7t,cue)=>{var Bat=iue(),vat=Ok(),aue=Lk(),lue=aue&&aue.isTypedArray,Sat=lue?vat(lue):Bat;cue.exports=Sat});var H4=L((B7t,uue)=>{var Dat=qce(),bat=TB(),Pat=xc(),xat=FB(),kat=NB(),Qat=Mk(),Tat=Object.prototype,Rat=Tat.hasOwnProperty;function Fat(t,e){var r=Pat(t),s=!r&&bat(t),a=!r&&!s&&xat(t),n=!r&&!s&&!a&&Qat(t),c=r||s||a||n,f=c?Dat(t.length,String):[],p=f.length;for(var h in t)(e||Rat.call(t,h))&&!(c&&(h=="length"||a&&(h=="offset"||h=="parent")||n&&(h=="buffer"||h=="byteLength"||h=="byteOffset")||kat(h,p)))&&f.push(h);return f}uue.exports=Fat});var _k=L((v7t,fue)=>{var Nat=Object.prototype;function Oat(t){var e=t&&t.constructor,r=typeof e=="function"&&e.prototype||Nat;return t===r}fue.exports=Oat});var j4=L((S7t,Aue)=>{function Lat(t,e){return function(r){return t(e(r))}}Aue.exports=Lat});var hue=L((D7t,pue)=>{var Mat=j4(),_at=Mat(Object.keys,Object);pue.exports=_at});var due=L((b7t,gue)=>{var Uat=_k(),Hat=hue(),jat=Object.prototype,qat=jat.hasOwnProperty;function Gat(t){if(!Uat(t))return Hat(t);var e=[];for(var r in Object(t))qat.call(t,r)&&r!="constructor"&&e.push(r);return e}gue.exports=Gat});var MB=L((P7t,mue)=>{var Wat=Pk(),Yat=Nk();function Vat(t){return t!=null&&Yat(t.length)&&!Wat(t)}mue.exports=Vat});var Uk=L((x7t,yue)=>{var Kat=H4(),Jat=due(),zat=MB();function Zat(t){return zat(t)?Kat(t):Jat(t)}yue.exports=Zat});var q4=L((k7t,Eue)=>{var Xat=M4(),$at=Fk(),elt=Uk();function tlt(t){return Xat(t,elt,$at)}Eue.exports=tlt});var wue=L((Q7t,Cue)=>{var Iue=q4(),rlt=1,nlt=Object.prototype,ilt=nlt.hasOwnProperty;function slt(t,e,r,s,a,n){var c=r&rlt,f=Iue(t),p=f.length,h=Iue(e),E=h.length;if(p!=E&&!c)return!1;for(var C=p;C--;){var S=f[C];if(!(c?S in e:ilt.call(e,S)))return!1}var P=n.get(t),I=n.get(e);if(P&&I)return P==e&&I==t;var R=!0;n.set(t,e),n.set(e,t);for(var N=c;++C{var olt=A0(),alt=Pc(),llt=olt(alt,"DataView");Bue.exports=llt});var Due=L((R7t,Sue)=>{var clt=A0(),ult=Pc(),flt=clt(ult,"Promise");Sue.exports=flt});var Pue=L((F7t,bue)=>{var Alt=A0(),plt=Pc(),hlt=Alt(plt,"Set");bue.exports=hlt});var kue=L((N7t,xue)=>{var glt=A0(),dlt=Pc(),mlt=glt(dlt,"WeakMap");xue.exports=mlt});var _B=L((O7t,Lue)=>{var G4=vue(),W4=xk(),Y4=Due(),V4=Pue(),K4=kue(),Oue=Vd(),HE=F4(),Que="[object Map]",ylt="[object Object]",Tue="[object Promise]",Rue="[object Set]",Fue="[object WeakMap]",Nue="[object DataView]",Elt=HE(G4),Ilt=HE(W4),Clt=HE(Y4),wlt=HE(V4),Blt=HE(K4),Kd=Oue;(G4&&Kd(new G4(new ArrayBuffer(1)))!=Nue||W4&&Kd(new W4)!=Que||Y4&&Kd(Y4.resolve())!=Tue||V4&&Kd(new V4)!=Rue||K4&&Kd(new K4)!=Fue)&&(Kd=function(t){var e=Oue(t),r=e==ylt?t.constructor:void 0,s=r?HE(r):"";if(s)switch(s){case Elt:return Nue;case Ilt:return Que;case Clt:return Tue;case wlt:return Rue;case Blt:return Fue}return e});Lue.exports=Kd});var Wue=L((L7t,Gue)=>{var J4=Qk(),vlt=N4(),Slt=Rce(),Dlt=wue(),Mue=_B(),_ue=xc(),Uue=FB(),blt=Mk(),Plt=1,Hue="[object Arguments]",jue="[object Array]",Hk="[object Object]",xlt=Object.prototype,que=xlt.hasOwnProperty;function klt(t,e,r,s,a,n){var c=_ue(t),f=_ue(e),p=c?jue:Mue(t),h=f?jue:Mue(e);p=p==Hue?Hk:p,h=h==Hue?Hk:h;var E=p==Hk,C=h==Hk,S=p==h;if(S&&Uue(t)){if(!Uue(e))return!1;c=!0,E=!1}if(S&&!E)return n||(n=new J4),c||blt(t)?vlt(t,e,r,s,a,n):Slt(t,e,p,r,s,a,n);if(!(r&Plt)){var P=E&&que.call(t,"__wrapped__"),I=C&&que.call(e,"__wrapped__");if(P||I){var R=P?t.value():t,N=I?e.value():e;return n||(n=new J4),a(R,N,r,s,n)}}return S?(n||(n=new J4),Dlt(t,e,r,s,a,n)):!1}Gue.exports=klt});var Jue=L((M7t,Kue)=>{var Qlt=Wue(),Yue=zf();function Vue(t,e,r,s,a){return t===e?!0:t==null||e==null||!Yue(t)&&!Yue(e)?t!==t&&e!==e:Qlt(t,e,r,s,Vue,a)}Kue.exports=Vue});var Zue=L((_7t,zue)=>{var Tlt=Jue();function Rlt(t,e){return Tlt(t,e)}zue.exports=Rlt});var z4=L((U7t,Xue)=>{var Flt=A0(),Nlt=function(){try{var t=Flt(Object,"defineProperty");return t({},"",{}),t}catch{}}();Xue.exports=Nlt});var jk=L((H7t,efe)=>{var $ue=z4();function Olt(t,e,r){e=="__proto__"&&$ue?$ue(t,e,{configurable:!0,enumerable:!0,value:r,writable:!0}):t[e]=r}efe.exports=Olt});var Z4=L((j7t,tfe)=>{var Llt=jk(),Mlt=FE();function _lt(t,e,r){(r!==void 0&&!Mlt(t[e],r)||r===void 0&&!(e in t))&&Llt(t,e,r)}tfe.exports=_lt});var nfe=L((q7t,rfe)=>{function Ult(t){return function(e,r,s){for(var a=-1,n=Object(e),c=s(e),f=c.length;f--;){var p=c[t?f:++a];if(r(n[p],p,n)===!1)break}return e}}rfe.exports=Ult});var sfe=L((G7t,ife)=>{var Hlt=nfe(),jlt=Hlt();ife.exports=jlt});var X4=L((UB,jE)=>{var qlt=Pc(),cfe=typeof UB=="object"&&UB&&!UB.nodeType&&UB,ofe=cfe&&typeof jE=="object"&&jE&&!jE.nodeType&&jE,Glt=ofe&&ofe.exports===cfe,afe=Glt?qlt.Buffer:void 0,lfe=afe?afe.allocUnsafe:void 0;function Wlt(t,e){if(e)return t.slice();var r=t.length,s=lfe?lfe(r):new t.constructor(r);return t.copy(s),s}jE.exports=Wlt});var qk=L((W7t,ffe)=>{var ufe=O4();function Ylt(t){var e=new t.constructor(t.byteLength);return new ufe(e).set(new ufe(t)),e}ffe.exports=Ylt});var $4=L((Y7t,Afe)=>{var Vlt=qk();function Klt(t,e){var r=e?Vlt(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.length)}Afe.exports=Klt});var Gk=L((V7t,pfe)=>{function Jlt(t,e){var r=-1,s=t.length;for(e||(e=Array(s));++r{var zlt=Wl(),hfe=Object.create,Zlt=function(){function t(){}return function(e){if(!zlt(e))return{};if(hfe)return hfe(e);t.prototype=e;var r=new t;return t.prototype=void 0,r}}();gfe.exports=Zlt});var Wk=L((J7t,mfe)=>{var Xlt=j4(),$lt=Xlt(Object.getPrototypeOf,Object);mfe.exports=$lt});var e3=L((z7t,yfe)=>{var ect=dfe(),tct=Wk(),rct=_k();function nct(t){return typeof t.constructor=="function"&&!rct(t)?ect(tct(t)):{}}yfe.exports=nct});var Ife=L((Z7t,Efe)=>{var ict=MB(),sct=zf();function oct(t){return sct(t)&&ict(t)}Efe.exports=oct});var t3=L((X7t,wfe)=>{var act=Vd(),lct=Wk(),cct=zf(),uct="[object Object]",fct=Function.prototype,Act=Object.prototype,Cfe=fct.toString,pct=Act.hasOwnProperty,hct=Cfe.call(Object);function gct(t){if(!cct(t)||act(t)!=uct)return!1;var e=lct(t);if(e===null)return!0;var r=pct.call(e,"constructor")&&e.constructor;return typeof r=="function"&&r instanceof r&&Cfe.call(r)==hct}wfe.exports=gct});var r3=L(($7t,Bfe)=>{function dct(t,e){if(!(e==="constructor"&&typeof t[e]=="function")&&e!="__proto__")return t[e]}Bfe.exports=dct});var Yk=L((eKt,vfe)=>{var mct=jk(),yct=FE(),Ect=Object.prototype,Ict=Ect.hasOwnProperty;function Cct(t,e,r){var s=t[e];(!(Ict.call(t,e)&&yct(s,r))||r===void 0&&!(e in t))&&mct(t,e,r)}vfe.exports=Cct});var Jd=L((tKt,Sfe)=>{var wct=Yk(),Bct=jk();function vct(t,e,r,s){var a=!r;r||(r={});for(var n=-1,c=e.length;++n{function Sct(t){var e=[];if(t!=null)for(var r in Object(t))e.push(r);return e}Dfe.exports=Sct});var xfe=L((nKt,Pfe)=>{var Dct=Wl(),bct=_k(),Pct=bfe(),xct=Object.prototype,kct=xct.hasOwnProperty;function Qct(t){if(!Dct(t))return Pct(t);var e=bct(t),r=[];for(var s in t)s=="constructor"&&(e||!kct.call(t,s))||r.push(s);return r}Pfe.exports=Qct});var qE=L((iKt,kfe)=>{var Tct=H4(),Rct=xfe(),Fct=MB();function Nct(t){return Fct(t)?Tct(t,!0):Rct(t)}kfe.exports=Nct});var Tfe=L((sKt,Qfe)=>{var Oct=Jd(),Lct=qE();function Mct(t){return Oct(t,Lct(t))}Qfe.exports=Mct});var Mfe=L((oKt,Lfe)=>{var Rfe=Z4(),_ct=X4(),Uct=$4(),Hct=Gk(),jct=e3(),Ffe=TB(),Nfe=xc(),qct=Ife(),Gct=FB(),Wct=Pk(),Yct=Wl(),Vct=t3(),Kct=Mk(),Ofe=r3(),Jct=Tfe();function zct(t,e,r,s,a,n,c){var f=Ofe(t,r),p=Ofe(e,r),h=c.get(p);if(h){Rfe(t,r,h);return}var E=n?n(f,p,r+"",t,e,c):void 0,C=E===void 0;if(C){var S=Nfe(p),P=!S&&Gct(p),I=!S&&!P&&Kct(p);E=p,S||P||I?Nfe(f)?E=f:qct(f)?E=Hct(f):P?(C=!1,E=_ct(p,!0)):I?(C=!1,E=Uct(p,!0)):E=[]:Vct(p)||Ffe(p)?(E=f,Ffe(f)?E=Jct(f):(!Yct(f)||Wct(f))&&(E=jct(p))):C=!1}C&&(c.set(p,E),a(E,p,s,n,c),c.delete(p)),Rfe(t,r,E)}Lfe.exports=zct});var Hfe=L((aKt,Ufe)=>{var Zct=Qk(),Xct=Z4(),$ct=sfe(),eut=Mfe(),tut=Wl(),rut=qE(),nut=r3();function _fe(t,e,r,s,a){t!==e&&$ct(e,function(n,c){if(a||(a=new Zct),tut(n))eut(t,e,c,r,_fe,s,a);else{var f=s?s(nut(t,c),n,c+"",t,e,a):void 0;f===void 0&&(f=n),Xct(t,c,f)}},rut)}Ufe.exports=_fe});var n3=L((lKt,jfe)=>{function iut(t){return t}jfe.exports=iut});var Gfe=L((cKt,qfe)=>{function sut(t,e,r){switch(r.length){case 0:return t.call(e);case 1:return t.call(e,r[0]);case 2:return t.call(e,r[0],r[1]);case 3:return t.call(e,r[0],r[1],r[2])}return t.apply(e,r)}qfe.exports=sut});var i3=L((uKt,Yfe)=>{var out=Gfe(),Wfe=Math.max;function aut(t,e,r){return e=Wfe(e===void 0?t.length-1:e,0),function(){for(var s=arguments,a=-1,n=Wfe(s.length-e,0),c=Array(n);++a{function lut(t){return function(){return t}}Vfe.exports=lut});var Zfe=L((AKt,zfe)=>{var cut=Kfe(),Jfe=z4(),uut=n3(),fut=Jfe?function(t,e){return Jfe(t,"toString",{configurable:!0,enumerable:!1,value:cut(e),writable:!0})}:uut;zfe.exports=fut});var $fe=L((pKt,Xfe)=>{var Aut=800,put=16,hut=Date.now;function gut(t){var e=0,r=0;return function(){var s=hut(),a=put-(s-r);if(r=s,a>0){if(++e>=Aut)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}Xfe.exports=gut});var s3=L((hKt,eAe)=>{var dut=Zfe(),mut=$fe(),yut=mut(dut);eAe.exports=yut});var rAe=L((gKt,tAe)=>{var Eut=n3(),Iut=i3(),Cut=s3();function wut(t,e){return Cut(Iut(t,e,Eut),t+"")}tAe.exports=wut});var iAe=L((dKt,nAe)=>{var But=FE(),vut=MB(),Sut=NB(),Dut=Wl();function but(t,e,r){if(!Dut(r))return!1;var s=typeof e;return(s=="number"?vut(r)&&Sut(e,r.length):s=="string"&&e in r)?But(r[e],t):!1}nAe.exports=but});var oAe=L((mKt,sAe)=>{var Put=rAe(),xut=iAe();function kut(t){return Put(function(e,r){var s=-1,a=r.length,n=a>1?r[a-1]:void 0,c=a>2?r[2]:void 0;for(n=t.length>3&&typeof n=="function"?(a--,n):void 0,c&&xut(r[0],r[1],c)&&(n=a<3?void 0:n,a=1),e=Object(e);++s{var Qut=Hfe(),Tut=oAe(),Rut=Tut(function(t,e,r,s){Qut(t,e,r,s)});aAe.exports=Rut});var je={};Vt(je,{AsyncActions:()=>l3,BufferStream:()=>a3,CachingStrategy:()=>IAe,DefaultStream:()=>c3,allSettledSafe:()=>Uu,assertNever:()=>f3,bufferStream:()=>WE,buildIgnorePattern:()=>Uut,convertMapsToIndexableObjects:()=>Kk,dynamicRequire:()=>kp,escapeRegExp:()=>Nut,getArrayWithDefault:()=>jB,getFactoryWithDefault:()=>Vl,getMapWithDefault:()=>A3,getSetWithDefault:()=>xp,groupBy:()=>qut,isIndexableObject:()=>o3,isPathLike:()=>Hut,isTaggedYarnVersion:()=>Fut,makeDeferred:()=>mAe,mapAndFilter:()=>Yl,mapAndFind:()=>p0,mergeIntoTarget:()=>wAe,overrideType:()=>Out,parseBoolean:()=>qB,parseInt:()=>YE,parseOptionalBoolean:()=>CAe,plural:()=>Vk,prettifyAsyncErrors:()=>GE,prettifySyncErrors:()=>p3,releaseAfterUseAsync:()=>Mut,replaceEnvVariables:()=>Jk,sortMap:()=>Ws,toMerged:()=>jut,tryParseOptionalBoolean:()=>h3,validateEnum:()=>Lut});function Fut(t){return!!(hAe.default.valid(t)&&t.match(/^[^-]+(-rc\.[0-9]+)?$/))}function Vk(t,{one:e,more:r,zero:s=r}){return t===0?s:t===1?e:r}function Nut(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Out(t){}function f3(t){throw new Error(`Assertion failed: Unexpected object '${t}'`)}function Lut(t,e){let r=Object.values(t);if(!r.includes(e))throw new nt(`Invalid value for enumeration: ${JSON.stringify(e)} (expected one of ${r.map(s=>JSON.stringify(s)).join(", ")})`);return e}function Yl(t,e){let r=[];for(let s of t){let a=e(s);a!==gAe&&r.push(a)}return r}function p0(t,e){for(let r of t){let s=e(r);if(s!==dAe)return s}}function o3(t){return typeof t=="object"&&t!==null}async function Uu(t){let e=await Promise.allSettled(t),r=[];for(let s of e){if(s.status==="rejected")throw s.reason;r.push(s.value)}return r}function Kk(t){if(t instanceof Map&&(t=Object.fromEntries(t)),o3(t))for(let e of Object.keys(t)){let r=t[e];o3(r)&&(t[e]=Kk(r))}return t}function Vl(t,e,r){let s=t.get(e);return typeof s>"u"&&t.set(e,s=r()),s}function jB(t,e){let r=t.get(e);return typeof r>"u"&&t.set(e,r=[]),r}function xp(t,e){let r=t.get(e);return typeof r>"u"&&t.set(e,r=new Set),r}function A3(t,e){let r=t.get(e);return typeof r>"u"&&t.set(e,r=new Map),r}async function Mut(t,e){if(e==null)return await t();try{return await t()}finally{await e()}}async function GE(t,e){try{return await t()}catch(r){throw r.message=e(r.message),r}}function p3(t,e){try{return t()}catch(r){throw r.message=e(r.message),r}}async function WE(t){return await new Promise((e,r)=>{let s=[];t.on("error",a=>{r(a)}),t.on("data",a=>{s.push(a)}),t.on("end",()=>{e(Buffer.concat(s))})})}function mAe(){let t,e;return{promise:new Promise((s,a)=>{t=s,e=a}),resolve:t,reject:e}}function yAe(t){return HB(ue.fromPortablePath(t))}function EAe(path){let physicalPath=ue.fromPortablePath(path),currentCacheEntry=HB.cache[physicalPath];delete HB.cache[physicalPath];let result;try{result=yAe(physicalPath);let freshCacheEntry=HB.cache[physicalPath],dynamicModule=eval("module"),freshCacheIndex=dynamicModule.children.indexOf(freshCacheEntry);freshCacheIndex!==-1&&dynamicModule.children.splice(freshCacheIndex,1)}finally{HB.cache[physicalPath]=currentCacheEntry}return result}function _ut(t){let e=cAe.get(t),r=le.statSync(t);if(e?.mtime===r.mtimeMs)return e.instance;let s=EAe(t);return cAe.set(t,{mtime:r.mtimeMs,instance:s}),s}function kp(t,{cachingStrategy:e=2}={}){switch(e){case 0:return EAe(t);case 1:return _ut(t);case 2:return yAe(t);default:throw new Error("Unsupported caching strategy")}}function Ws(t,e){let r=Array.from(t);Array.isArray(e)||(e=[e]);let s=[];for(let n of e)s.push(r.map(c=>n(c)));let a=r.map((n,c)=>c);return a.sort((n,c)=>{for(let f of s){let p=f[n]f[c]?1:0;if(p!==0)return p}return 0}),a.map(n=>r[n])}function Uut(t){return t.length===0?null:t.map(e=>`(${AAe.default.makeRe(e,{windows:!1,dot:!0}).source})`).join("|")}function Jk(t,{env:e}){let r=/\${(?[\d\w_]+)(?:)?(?:-(?[^}]*))?}/g;return t.replace(r,(...s)=>{let{variableName:a,colon:n,fallback:c}=s[s.length-1],f=Object.hasOwn(e,a),p=e[a];if(p||f&&!n)return p;if(c!=null)return c;throw new nt(`Environment variable not found (${a})`)})}function qB(t){switch(t){case"true":case"1":case 1:case!0:return!0;case"false":case"0":case 0:case!1:return!1;default:throw new Error(`Couldn't parse "${t}" as a boolean`)}}function CAe(t){return typeof t>"u"?t:qB(t)}function h3(t){try{return CAe(t)}catch{return null}}function Hut(t){return!!(ue.isAbsolute(t)||t.match(/^(\.{1,2}|~)\//))}function wAe(t,...e){let r=c=>({value:c}),s=r(t),a=e.map(c=>r(c)),{value:n}=(0,fAe.default)(s,...a,(c,f)=>{if(Array.isArray(c)&&Array.isArray(f)){for(let p of f)c.find(h=>(0,uAe.default)(h,p))||c.push(p);return c}});return n}function jut(...t){return wAe({},...t)}function qut(t,e){let r=Object.create(null);for(let s of t){let a=s[e];r[a]??=[],r[a].push(s)}return r}function YE(t){return typeof t=="string"?Number.parseInt(t,10):t}var uAe,fAe,AAe,pAe,hAe,u3,gAe,dAe,a3,l3,c3,HB,cAe,IAe,kc=It(()=>{bt();Wt();uAe=et(Zue()),fAe=et(lAe()),AAe=et(Sa()),pAe=et(Md()),hAe=et(fi()),u3=ye("stream");gAe=Symbol();Yl.skip=gAe;dAe=Symbol();p0.skip=dAe;a3=class extends u3.Transform{constructor(){super(...arguments);this.chunks=[]}_transform(r,s,a){if(s!=="buffer"||!Buffer.isBuffer(r))throw new Error("Assertion failed: BufferStream only accept buffers");this.chunks.push(r),a(null,null)}_flush(r){r(null,Buffer.concat(this.chunks))}};l3=class{constructor(e){this.deferred=new Map;this.promises=new Map;this.limit=(0,pAe.default)(e)}set(e,r){let s=this.deferred.get(e);typeof s>"u"&&this.deferred.set(e,s=mAe());let a=this.limit(()=>r());return this.promises.set(e,a),a.then(()=>{this.promises.get(e)===a&&s.resolve()},n=>{this.promises.get(e)===a&&s.reject(n)}),s.promise}reduce(e,r){let s=this.promises.get(e)??Promise.resolve();this.set(e,()=>r(s))}async wait(){await Promise.all(this.promises.values())}},c3=class extends u3.Transform{constructor(r=Buffer.alloc(0)){super();this.active=!0;this.ifEmpty=r}_transform(r,s,a){if(s!=="buffer"||!Buffer.isBuffer(r))throw new Error("Assertion failed: DefaultStream only accept buffers");this.active=!1,a(null,r)}_flush(r){this.active&&this.ifEmpty.length>0?r(null,this.ifEmpty):r(null)}},HB=eval("require");cAe=new Map;IAe=(s=>(s[s.NoCache=0]="NoCache",s[s.FsTime=1]="FsTime",s[s.Node=2]="Node",s))(IAe||{})});var VE,g3,d3,BAe=It(()=>{VE=(r=>(r.HARD="HARD",r.SOFT="SOFT",r))(VE||{}),g3=(s=>(s.Dependency="Dependency",s.PeerDependency="PeerDependency",s.PeerDependencyMeta="PeerDependencyMeta",s))(g3||{}),d3=(s=>(s.Inactive="inactive",s.Redundant="redundant",s.Active="active",s))(d3||{})});var he={};Vt(he,{LogLevel:()=>eQ,Style:()=>Zk,Type:()=>Ct,addLogFilterSupport:()=>YB,applyColor:()=>po,applyHyperlink:()=>JE,applyStyle:()=>zd,json:()=>Zd,jsonOrPretty:()=>Yut,mark:()=>C3,pretty:()=>Ut,prettyField:()=>Zf,prettyList:()=>I3,prettyTruncatedLocatorList:()=>$k,stripAnsi:()=>KE.default,supportsColor:()=>Xk,supportsHyperlinks:()=>E3,tuple:()=>Hu});function vAe(t){let e=["KiB","MiB","GiB","TiB"],r=e.length;for(;r>1&&t<1024**r;)r-=1;let s=1024**r;return`${Math.floor(t*100/s)/100} ${e[r-1]}`}function Hu(t,e){return[e,t]}function zd(t,e,r){return t.get("enableColors")&&r&2&&(e=WB.default.bold(e)),e}function po(t,e,r){if(!t.get("enableColors"))return e;let s=Gut.get(r);if(s===null)return e;let a=typeof s>"u"?r:y3.level>=3?s[0]:s[1],n=typeof a=="number"?m3.ansi256(a):a.startsWith("#")?m3.hex(a):m3[a];if(typeof n!="function")throw new Error(`Invalid format type ${a}`);return n(e)}function JE(t,e,r){return t.get("enableHyperlinks")?Wut?`\x1B]8;;${r}\x1B\\${e}\x1B]8;;\x1B\\`:`\x1B]8;;${r}\x07${e}\x1B]8;;\x07`:e}function Ut(t,e,r){if(e===null)return po(t,"null",Ct.NULL);if(Object.hasOwn(zk,r))return zk[r].pretty(t,e);if(typeof e!="string")throw new Error(`Assertion failed: Expected the value to be a string, got ${typeof e}`);return po(t,e,r)}function I3(t,e,r,{separator:s=", "}={}){return[...e].map(a=>Ut(t,a,r)).join(s)}function Zd(t,e){if(t===null)return null;if(Object.hasOwn(zk,e))return zk[e].json(t);if(typeof t!="string")throw new Error(`Assertion failed: Expected the value to be a string, got ${typeof t}`);return t}function Yut(t,e,[r,s]){return t?Zd(r,s):Ut(e,r,s)}function C3(t){return{Check:po(t,"\u2713","green"),Cross:po(t,"\u2718","red"),Question:po(t,"?","cyan")}}function Zf(t,{label:e,value:[r,s]}){return`${Ut(t,e,Ct.CODE)}: ${Ut(t,r,s)}`}function $k(t,e,r){let s=[],a=[...e],n=r;for(;a.length>0;){let h=a[0],E=`${Yr(t,h)}, `,C=w3(h).length+2;if(s.length>0&&nh).join("").slice(0,-2);let c="X".repeat(a.length.toString().length),f=`and ${c} more.`,p=a.length;for(;s.length>1&&nh).join(""),f.replace(c,Ut(t,p,Ct.NUMBER))].join("")}function YB(t,{configuration:e}){let r=e.get("logFilters"),s=new Map,a=new Map,n=[];for(let C of r){let S=C.get("level");if(typeof S>"u")continue;let P=C.get("code");typeof P<"u"&&s.set(P,S);let I=C.get("text");typeof I<"u"&&a.set(I,S);let R=C.get("pattern");typeof R<"u"&&n.push([SAe.default.matcher(R,{contains:!0}),S])}n.reverse();let c=(C,S,P)=>{if(C===null||C===0)return P;let I=a.size>0||n.length>0?(0,KE.default)(S):S;if(a.size>0){let R=a.get(I);if(typeof R<"u")return R??P}if(n.length>0){for(let[R,N]of n)if(R(I))return N??P}if(s.size>0){let R=s.get(Vf(C));if(typeof R<"u")return R??P}return P},f=t.reportInfo,p=t.reportWarning,h=t.reportError,E=function(C,S,P,I){switch(c(S,P,I)){case"info":f.call(C,S,P);break;case"warning":p.call(C,S??0,P);break;case"error":h.call(C,S??0,P);break}};t.reportInfo=function(...C){return E(this,...C,"info")},t.reportWarning=function(...C){return E(this,...C,"warning")},t.reportError=function(...C){return E(this,...C,"error")}}var WB,GB,SAe,KE,DAe,Ct,Zk,y3,Xk,E3,m3,Gut,Wo,zk,Wut,eQ,Qc=It(()=>{bt();WB=et(g4()),GB=et(Nd());Wt();SAe=et(Sa()),KE=et(bk()),DAe=ye("util");nk();Yo();Ct={NO_HINT:"NO_HINT",ID:"ID",NULL:"NULL",SCOPE:"SCOPE",NAME:"NAME",RANGE:"RANGE",REFERENCE:"REFERENCE",NUMBER:"NUMBER",PATH:"PATH",URL:"URL",ADDED:"ADDED",REMOVED:"REMOVED",CODE:"CODE",INSPECT:"INSPECT",DURATION:"DURATION",SIZE:"SIZE",SIZE_DIFF:"SIZE_DIFF",IDENT:"IDENT",DESCRIPTOR:"DESCRIPTOR",LOCATOR:"LOCATOR",RESOLUTION:"RESOLUTION",DEPENDENT:"DEPENDENT",PACKAGE_EXTENSION:"PACKAGE_EXTENSION",SETTING:"SETTING",MARKDOWN:"MARKDOWN",MARKDOWN_INLINE:"MARKDOWN_INLINE"},Zk=(e=>(e[e.BOLD=2]="BOLD",e))(Zk||{}),y3=GB.default.GITHUB_ACTIONS?{level:2}:WB.default.supportsColor?{level:WB.default.supportsColor.level}:{level:0},Xk=y3.level!==0,E3=Xk&&!GB.default.GITHUB_ACTIONS&&!GB.default.CIRCLE&&!GB.default.GITLAB,m3=new WB.default.Instance(y3),Gut=new Map([[Ct.NO_HINT,null],[Ct.NULL,["#a853b5",129]],[Ct.SCOPE,["#d75f00",166]],[Ct.NAME,["#d7875f",173]],[Ct.RANGE,["#00afaf",37]],[Ct.REFERENCE,["#87afff",111]],[Ct.NUMBER,["#ffd700",220]],[Ct.PATH,["#d75fd7",170]],[Ct.URL,["#d75fd7",170]],[Ct.ADDED,["#5faf00",70]],[Ct.REMOVED,["#ff3131",160]],[Ct.CODE,["#87afff",111]],[Ct.SIZE,["#ffd700",220]]]),Wo=t=>t;zk={[Ct.ID]:Wo({pretty:(t,e)=>typeof e=="number"?po(t,`${e}`,Ct.NUMBER):po(t,e,Ct.CODE),json:t=>t}),[Ct.INSPECT]:Wo({pretty:(t,e)=>(0,DAe.inspect)(e,{depth:1/0,colors:t.get("enableColors"),compact:!0,breakLength:1/0}),json:t=>t}),[Ct.NUMBER]:Wo({pretty:(t,e)=>po(t,`${e}`,Ct.NUMBER),json:t=>t}),[Ct.IDENT]:Wo({pretty:(t,e)=>$i(t,e),json:t=>cn(t)}),[Ct.LOCATOR]:Wo({pretty:(t,e)=>Yr(t,e),json:t=>cl(t)}),[Ct.DESCRIPTOR]:Wo({pretty:(t,e)=>ri(t,e),json:t=>ll(t)}),[Ct.RESOLUTION]:Wo({pretty:(t,{descriptor:e,locator:r})=>VB(t,e,r),json:({descriptor:t,locator:e})=>({descriptor:ll(t),locator:e!==null?cl(e):null})}),[Ct.DEPENDENT]:Wo({pretty:(t,{locator:e,descriptor:r})=>B3(t,e,r),json:({locator:t,descriptor:e})=>({locator:cl(t),descriptor:ll(e)})}),[Ct.PACKAGE_EXTENSION]:Wo({pretty:(t,e)=>{switch(e.type){case"Dependency":return`${$i(t,e.parentDescriptor)} \u27A4 ${po(t,"dependencies",Ct.CODE)} \u27A4 ${$i(t,e.descriptor)}`;case"PeerDependency":return`${$i(t,e.parentDescriptor)} \u27A4 ${po(t,"peerDependencies",Ct.CODE)} \u27A4 ${$i(t,e.descriptor)}`;case"PeerDependencyMeta":return`${$i(t,e.parentDescriptor)} \u27A4 ${po(t,"peerDependenciesMeta",Ct.CODE)} \u27A4 ${$i(t,Da(e.selector))} \u27A4 ${po(t,e.key,Ct.CODE)}`;default:throw new Error(`Assertion failed: Unsupported package extension type: ${e.type}`)}},json:t=>{switch(t.type){case"Dependency":return`${cn(t.parentDescriptor)} > ${cn(t.descriptor)}`;case"PeerDependency":return`${cn(t.parentDescriptor)} >> ${cn(t.descriptor)}`;case"PeerDependencyMeta":return`${cn(t.parentDescriptor)} >> ${t.selector} / ${t.key}`;default:throw new Error(`Assertion failed: Unsupported package extension type: ${t.type}`)}}}),[Ct.SETTING]:Wo({pretty:(t,e)=>(t.get(e),JE(t,po(t,e,Ct.CODE),`https://yarnpkg.com/configuration/yarnrc#${e}`)),json:t=>t}),[Ct.DURATION]:Wo({pretty:(t,e)=>{if(e>1e3*60){let r=Math.floor(e/1e3/60),s=Math.ceil((e-r*60*1e3)/1e3);return s===0?`${r}m`:`${r}m ${s}s`}else{let r=Math.floor(e/1e3),s=e-r*1e3;return s===0?`${r}s`:`${r}s ${s}ms`}},json:t=>t}),[Ct.SIZE]:Wo({pretty:(t,e)=>po(t,vAe(e),Ct.NUMBER),json:t=>t}),[Ct.SIZE_DIFF]:Wo({pretty:(t,e)=>{let r=e>=0?"+":"-",s=r==="+"?Ct.REMOVED:Ct.ADDED;return po(t,`${r} ${vAe(Math.max(Math.abs(e),1))}`,s)},json:t=>t}),[Ct.PATH]:Wo({pretty:(t,e)=>po(t,ue.fromPortablePath(e),Ct.PATH),json:t=>ue.fromPortablePath(t)}),[Ct.MARKDOWN]:Wo({pretty:(t,{text:e,format:r,paragraphs:s})=>qo(e,{format:r,paragraphs:s}),json:({text:t})=>t}),[Ct.MARKDOWN_INLINE]:Wo({pretty:(t,e)=>(e=e.replace(/(`+)((?:.|[\n])*?)\1/g,(r,s,a)=>Ut(t,s+a+s,Ct.CODE)),e=e.replace(/(\*\*)((?:.|[\n])*?)\1/g,(r,s,a)=>zd(t,a,2)),e),json:t=>t})};Wut=!!process.env.KONSOLE_VERSION;eQ=(a=>(a.Error="error",a.Warning="warning",a.Info="info",a.Discard="discard",a))(eQ||{})});var bAe=L(zE=>{"use strict";Object.defineProperty(zE,"__esModule",{value:!0});zE.splitWhen=zE.flatten=void 0;function Vut(t){return t.reduce((e,r)=>[].concat(e,r),[])}zE.flatten=Vut;function Kut(t,e){let r=[[]],s=0;for(let a of t)e(a)?(s++,r[s]=[]):r[s].push(a);return r}zE.splitWhen=Kut});var PAe=L(tQ=>{"use strict";Object.defineProperty(tQ,"__esModule",{value:!0});tQ.isEnoentCodeError=void 0;function Jut(t){return t.code==="ENOENT"}tQ.isEnoentCodeError=Jut});var xAe=L(rQ=>{"use strict";Object.defineProperty(rQ,"__esModule",{value:!0});rQ.createDirentFromStats=void 0;var v3=class{constructor(e,r){this.name=e,this.isBlockDevice=r.isBlockDevice.bind(r),this.isCharacterDevice=r.isCharacterDevice.bind(r),this.isDirectory=r.isDirectory.bind(r),this.isFIFO=r.isFIFO.bind(r),this.isFile=r.isFile.bind(r),this.isSocket=r.isSocket.bind(r),this.isSymbolicLink=r.isSymbolicLink.bind(r)}};function zut(t,e){return new v3(t,e)}rQ.createDirentFromStats=zut});var RAe=L(cs=>{"use strict";Object.defineProperty(cs,"__esModule",{value:!0});cs.convertPosixPathToPattern=cs.convertWindowsPathToPattern=cs.convertPathToPattern=cs.escapePosixPath=cs.escapeWindowsPath=cs.escape=cs.removeLeadingDotSegment=cs.makeAbsolute=cs.unixify=void 0;var Zut=ye("os"),Xut=ye("path"),kAe=Zut.platform()==="win32",$ut=2,eft=/(\\?)([()*?[\]{|}]|^!|[!+@](?=\()|\\(?![!()*+?@[\]{|}]))/g,tft=/(\\?)([()[\]{}]|^!|[!+@](?=\())/g,rft=/^\\\\([.?])/,nft=/\\(?![!()+@[\]{}])/g;function ift(t){return t.replace(/\\/g,"/")}cs.unixify=ift;function sft(t,e){return Xut.resolve(t,e)}cs.makeAbsolute=sft;function oft(t){if(t.charAt(0)==="."){let e=t.charAt(1);if(e==="/"||e==="\\")return t.slice($ut)}return t}cs.removeLeadingDotSegment=oft;cs.escape=kAe?S3:D3;function S3(t){return t.replace(tft,"\\$2")}cs.escapeWindowsPath=S3;function D3(t){return t.replace(eft,"\\$2")}cs.escapePosixPath=D3;cs.convertPathToPattern=kAe?QAe:TAe;function QAe(t){return S3(t).replace(rft,"//$1").replace(nft,"/")}cs.convertWindowsPathToPattern=QAe;function TAe(t){return D3(t)}cs.convertPosixPathToPattern=TAe});var NAe=L((RKt,FAe)=>{FAe.exports=function(e){if(typeof e!="string"||e==="")return!1;for(var r;r=/(\\).|([@?!+*]\(.*\))/g.exec(e);){if(r[2])return!0;e=e.slice(r.index+r[0].length)}return!1}});var MAe=L((FKt,LAe)=>{var aft=NAe(),OAe={"{":"}","(":")","[":"]"},lft=function(t){if(t[0]==="!")return!0;for(var e=0,r=-2,s=-2,a=-2,n=-2,c=-2;ee&&(c===-1||c>s||(c=t.indexOf("\\",e),c===-1||c>s)))||a!==-1&&t[e]==="{"&&t[e+1]!=="}"&&(a=t.indexOf("}",e),a>e&&(c=t.indexOf("\\",e),c===-1||c>a))||n!==-1&&t[e]==="("&&t[e+1]==="?"&&/[:!=]/.test(t[e+2])&&t[e+3]!==")"&&(n=t.indexOf(")",e),n>e&&(c=t.indexOf("\\",e),c===-1||c>n))||r!==-1&&t[e]==="("&&t[e+1]!=="|"&&(rr&&(c=t.indexOf("\\",r),c===-1||c>n))))return!0;if(t[e]==="\\"){var f=t[e+1];e+=2;var p=OAe[f];if(p){var h=t.indexOf(p,e);h!==-1&&(e=h+1)}if(t[e]==="!")return!0}else e++}return!1},cft=function(t){if(t[0]==="!")return!0;for(var e=0;e{"use strict";var uft=MAe(),fft=ye("path").posix.dirname,Aft=ye("os").platform()==="win32",b3="/",pft=/\\/g,hft=/[\{\[].*[\}\]]$/,gft=/(^|[^\\])([\{\[]|\([^\)]+$)/,dft=/\\([\!\*\?\|\[\]\(\)\{\}])/g;_Ae.exports=function(e,r){var s=Object.assign({flipBackslashes:!0},r);s.flipBackslashes&&Aft&&e.indexOf(b3)<0&&(e=e.replace(pft,b3)),hft.test(e)&&(e+=b3),e+="a";do e=fft(e);while(uft(e)||gft.test(e));return e.replace(dft,"$1")}});var KAe=L(jr=>{"use strict";Object.defineProperty(jr,"__esModule",{value:!0});jr.removeDuplicateSlashes=jr.matchAny=jr.convertPatternsToRe=jr.makeRe=jr.getPatternParts=jr.expandBraceExpansion=jr.expandPatternsWithBraceExpansion=jr.isAffectDepthOfReadingPattern=jr.endsWithSlashGlobStar=jr.hasGlobStar=jr.getBaseDirectory=jr.isPatternRelatedToParentDirectory=jr.getPatternsOutsideCurrentDirectory=jr.getPatternsInsideCurrentDirectory=jr.getPositivePatterns=jr.getNegativePatterns=jr.isPositivePattern=jr.isNegativePattern=jr.convertToNegativePattern=jr.convertToPositivePattern=jr.isDynamicPattern=jr.isStaticPattern=void 0;var mft=ye("path"),yft=UAe(),P3=Sa(),HAe="**",Eft="\\",Ift=/[*?]|^!/,Cft=/\[[^[]*]/,wft=/(?:^|[^!*+?@])\([^(]*\|[^|]*\)/,Bft=/[!*+?@]\([^(]*\)/,vft=/,|\.\./,Sft=/(?!^)\/{2,}/g;function jAe(t,e={}){return!qAe(t,e)}jr.isStaticPattern=jAe;function qAe(t,e={}){return t===""?!1:!!(e.caseSensitiveMatch===!1||t.includes(Eft)||Ift.test(t)||Cft.test(t)||wft.test(t)||e.extglob!==!1&&Bft.test(t)||e.braceExpansion!==!1&&Dft(t))}jr.isDynamicPattern=qAe;function Dft(t){let e=t.indexOf("{");if(e===-1)return!1;let r=t.indexOf("}",e+1);if(r===-1)return!1;let s=t.slice(e,r);return vft.test(s)}function bft(t){return nQ(t)?t.slice(1):t}jr.convertToPositivePattern=bft;function Pft(t){return"!"+t}jr.convertToNegativePattern=Pft;function nQ(t){return t.startsWith("!")&&t[1]!=="("}jr.isNegativePattern=nQ;function GAe(t){return!nQ(t)}jr.isPositivePattern=GAe;function xft(t){return t.filter(nQ)}jr.getNegativePatterns=xft;function kft(t){return t.filter(GAe)}jr.getPositivePatterns=kft;function Qft(t){return t.filter(e=>!x3(e))}jr.getPatternsInsideCurrentDirectory=Qft;function Tft(t){return t.filter(x3)}jr.getPatternsOutsideCurrentDirectory=Tft;function x3(t){return t.startsWith("..")||t.startsWith("./..")}jr.isPatternRelatedToParentDirectory=x3;function Rft(t){return yft(t,{flipBackslashes:!1})}jr.getBaseDirectory=Rft;function Fft(t){return t.includes(HAe)}jr.hasGlobStar=Fft;function WAe(t){return t.endsWith("/"+HAe)}jr.endsWithSlashGlobStar=WAe;function Nft(t){let e=mft.basename(t);return WAe(t)||jAe(e)}jr.isAffectDepthOfReadingPattern=Nft;function Oft(t){return t.reduce((e,r)=>e.concat(YAe(r)),[])}jr.expandPatternsWithBraceExpansion=Oft;function YAe(t){let e=P3.braces(t,{expand:!0,nodupes:!0,keepEscaping:!0});return e.sort((r,s)=>r.length-s.length),e.filter(r=>r!=="")}jr.expandBraceExpansion=YAe;function Lft(t,e){let{parts:r}=P3.scan(t,Object.assign(Object.assign({},e),{parts:!0}));return r.length===0&&(r=[t]),r[0].startsWith("/")&&(r[0]=r[0].slice(1),r.unshift("")),r}jr.getPatternParts=Lft;function VAe(t,e){return P3.makeRe(t,e)}jr.makeRe=VAe;function Mft(t,e){return t.map(r=>VAe(r,e))}jr.convertPatternsToRe=Mft;function _ft(t,e){return e.some(r=>r.test(t))}jr.matchAny=_ft;function Uft(t){return t.replace(Sft,"/")}jr.removeDuplicateSlashes=Uft});var XAe=L((LKt,ZAe)=>{"use strict";var Hft=ye("stream"),JAe=Hft.PassThrough,jft=Array.prototype.slice;ZAe.exports=qft;function qft(){let t=[],e=jft.call(arguments),r=!1,s=e[e.length-1];s&&!Array.isArray(s)&&s.pipe==null?e.pop():s={};let a=s.end!==!1,n=s.pipeError===!0;s.objectMode==null&&(s.objectMode=!0),s.highWaterMark==null&&(s.highWaterMark=64*1024);let c=JAe(s);function f(){for(let E=0,C=arguments.length;E0||(r=!1,p())}function P(I){function R(){I.removeListener("merge2UnpipeEnd",R),I.removeListener("end",R),n&&I.removeListener("error",N),S()}function N(U){c.emit("error",U)}if(I._readableState.endEmitted)return S();I.on("merge2UnpipeEnd",R),I.on("end",R),n&&I.on("error",N),I.pipe(c,{end:!1}),I.resume()}for(let I=0;I{"use strict";Object.defineProperty(iQ,"__esModule",{value:!0});iQ.merge=void 0;var Gft=XAe();function Wft(t){let e=Gft(t);return t.forEach(r=>{r.once("error",s=>e.emit("error",s))}),e.once("close",()=>$Ae(t)),e.once("end",()=>$Ae(t)),e}iQ.merge=Wft;function $Ae(t){t.forEach(e=>e.emit("close"))}});var tpe=L(ZE=>{"use strict";Object.defineProperty(ZE,"__esModule",{value:!0});ZE.isEmpty=ZE.isString=void 0;function Yft(t){return typeof t=="string"}ZE.isString=Yft;function Vft(t){return t===""}ZE.isEmpty=Vft});var Qp=L(Vo=>{"use strict";Object.defineProperty(Vo,"__esModule",{value:!0});Vo.string=Vo.stream=Vo.pattern=Vo.path=Vo.fs=Vo.errno=Vo.array=void 0;var Kft=bAe();Vo.array=Kft;var Jft=PAe();Vo.errno=Jft;var zft=xAe();Vo.fs=zft;var Zft=RAe();Vo.path=Zft;var Xft=KAe();Vo.pattern=Xft;var $ft=epe();Vo.stream=$ft;var eAt=tpe();Vo.string=eAt});var spe=L(Ko=>{"use strict";Object.defineProperty(Ko,"__esModule",{value:!0});Ko.convertPatternGroupToTask=Ko.convertPatternGroupsToTasks=Ko.groupPatternsByBaseDirectory=Ko.getNegativePatternsAsPositive=Ko.getPositivePatterns=Ko.convertPatternsToTasks=Ko.generate=void 0;var ju=Qp();function tAt(t,e){let r=rpe(t,e),s=rpe(e.ignore,e),a=npe(r),n=ipe(r,s),c=a.filter(E=>ju.pattern.isStaticPattern(E,e)),f=a.filter(E=>ju.pattern.isDynamicPattern(E,e)),p=k3(c,n,!1),h=k3(f,n,!0);return p.concat(h)}Ko.generate=tAt;function rpe(t,e){let r=t;return e.braceExpansion&&(r=ju.pattern.expandPatternsWithBraceExpansion(r)),e.baseNameMatch&&(r=r.map(s=>s.includes("/")?s:`**/${s}`)),r.map(s=>ju.pattern.removeDuplicateSlashes(s))}function k3(t,e,r){let s=[],a=ju.pattern.getPatternsOutsideCurrentDirectory(t),n=ju.pattern.getPatternsInsideCurrentDirectory(t),c=Q3(a),f=Q3(n);return s.push(...T3(c,e,r)),"."in f?s.push(R3(".",n,e,r)):s.push(...T3(f,e,r)),s}Ko.convertPatternsToTasks=k3;function npe(t){return ju.pattern.getPositivePatterns(t)}Ko.getPositivePatterns=npe;function ipe(t,e){return ju.pattern.getNegativePatterns(t).concat(e).map(ju.pattern.convertToPositivePattern)}Ko.getNegativePatternsAsPositive=ipe;function Q3(t){let e={};return t.reduce((r,s)=>{let a=ju.pattern.getBaseDirectory(s);return a in r?r[a].push(s):r[a]=[s],r},e)}Ko.groupPatternsByBaseDirectory=Q3;function T3(t,e,r){return Object.keys(t).map(s=>R3(s,t[s],e,r))}Ko.convertPatternGroupsToTasks=T3;function R3(t,e,r,s){return{dynamic:s,positive:e,negative:r,base:t,patterns:[].concat(e,r.map(ju.pattern.convertToNegativePattern))}}Ko.convertPatternGroupToTask=R3});var ape=L(sQ=>{"use strict";Object.defineProperty(sQ,"__esModule",{value:!0});sQ.read=void 0;function rAt(t,e,r){e.fs.lstat(t,(s,a)=>{if(s!==null){ope(r,s);return}if(!a.isSymbolicLink()||!e.followSymbolicLink){F3(r,a);return}e.fs.stat(t,(n,c)=>{if(n!==null){if(e.throwErrorOnBrokenSymbolicLink){ope(r,n);return}F3(r,a);return}e.markSymbolicLink&&(c.isSymbolicLink=()=>!0),F3(r,c)})})}sQ.read=rAt;function ope(t,e){t(e)}function F3(t,e){t(null,e)}});var lpe=L(oQ=>{"use strict";Object.defineProperty(oQ,"__esModule",{value:!0});oQ.read=void 0;function nAt(t,e){let r=e.fs.lstatSync(t);if(!r.isSymbolicLink()||!e.followSymbolicLink)return r;try{let s=e.fs.statSync(t);return e.markSymbolicLink&&(s.isSymbolicLink=()=>!0),s}catch(s){if(!e.throwErrorOnBrokenSymbolicLink)return r;throw s}}oQ.read=nAt});var cpe=L(h0=>{"use strict";Object.defineProperty(h0,"__esModule",{value:!0});h0.createFileSystemAdapter=h0.FILE_SYSTEM_ADAPTER=void 0;var aQ=ye("fs");h0.FILE_SYSTEM_ADAPTER={lstat:aQ.lstat,stat:aQ.stat,lstatSync:aQ.lstatSync,statSync:aQ.statSync};function iAt(t){return t===void 0?h0.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},h0.FILE_SYSTEM_ADAPTER),t)}h0.createFileSystemAdapter=iAt});var upe=L(O3=>{"use strict";Object.defineProperty(O3,"__esModule",{value:!0});var sAt=cpe(),N3=class{constructor(e={}){this._options=e,this.followSymbolicLink=this._getValue(this._options.followSymbolicLink,!0),this.fs=sAt.createFileSystemAdapter(this._options.fs),this.markSymbolicLink=this._getValue(this._options.markSymbolicLink,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0)}_getValue(e,r){return e??r}};O3.default=N3});var Xd=L(g0=>{"use strict";Object.defineProperty(g0,"__esModule",{value:!0});g0.statSync=g0.stat=g0.Settings=void 0;var fpe=ape(),oAt=lpe(),L3=upe();g0.Settings=L3.default;function aAt(t,e,r){if(typeof e=="function"){fpe.read(t,M3(),e);return}fpe.read(t,M3(e),r)}g0.stat=aAt;function lAt(t,e){let r=M3(e);return oAt.read(t,r)}g0.statSync=lAt;function M3(t={}){return t instanceof L3.default?t:new L3.default(t)}});var hpe=L((VKt,ppe)=>{var Ape;ppe.exports=typeof queueMicrotask=="function"?queueMicrotask.bind(typeof window<"u"?window:global):t=>(Ape||(Ape=Promise.resolve())).then(t).catch(e=>setTimeout(()=>{throw e},0))});var dpe=L((KKt,gpe)=>{gpe.exports=uAt;var cAt=hpe();function uAt(t,e){let r,s,a,n=!0;Array.isArray(t)?(r=[],s=t.length):(a=Object.keys(t),r={},s=a.length);function c(p){function h(){e&&e(p,r),e=null}n?cAt(h):h()}function f(p,h,E){r[p]=E,(--s===0||h)&&c(h)}s?a?a.forEach(function(p){t[p](function(h,E){f(p,h,E)})}):t.forEach(function(p,h){p(function(E,C){f(h,E,C)})}):c(null),n=!1}});var _3=L(cQ=>{"use strict";Object.defineProperty(cQ,"__esModule",{value:!0});cQ.IS_SUPPORT_READDIR_WITH_FILE_TYPES=void 0;var lQ=process.versions.node.split(".");if(lQ[0]===void 0||lQ[1]===void 0)throw new Error(`Unexpected behavior. The 'process.versions.node' variable has invalid value: ${process.versions.node}`);var mpe=Number.parseInt(lQ[0],10),fAt=Number.parseInt(lQ[1],10),ype=10,AAt=10,pAt=mpe>ype,hAt=mpe===ype&&fAt>=AAt;cQ.IS_SUPPORT_READDIR_WITH_FILE_TYPES=pAt||hAt});var Epe=L(uQ=>{"use strict";Object.defineProperty(uQ,"__esModule",{value:!0});uQ.createDirentFromStats=void 0;var U3=class{constructor(e,r){this.name=e,this.isBlockDevice=r.isBlockDevice.bind(r),this.isCharacterDevice=r.isCharacterDevice.bind(r),this.isDirectory=r.isDirectory.bind(r),this.isFIFO=r.isFIFO.bind(r),this.isFile=r.isFile.bind(r),this.isSocket=r.isSocket.bind(r),this.isSymbolicLink=r.isSymbolicLink.bind(r)}};function gAt(t,e){return new U3(t,e)}uQ.createDirentFromStats=gAt});var H3=L(fQ=>{"use strict";Object.defineProperty(fQ,"__esModule",{value:!0});fQ.fs=void 0;var dAt=Epe();fQ.fs=dAt});var j3=L(AQ=>{"use strict";Object.defineProperty(AQ,"__esModule",{value:!0});AQ.joinPathSegments=void 0;function mAt(t,e,r){return t.endsWith(r)?t+e:t+r+e}AQ.joinPathSegments=mAt});var Spe=L(d0=>{"use strict";Object.defineProperty(d0,"__esModule",{value:!0});d0.readdir=d0.readdirWithFileTypes=d0.read=void 0;var yAt=Xd(),Ipe=dpe(),EAt=_3(),Cpe=H3(),wpe=j3();function IAt(t,e,r){if(!e.stats&&EAt.IS_SUPPORT_READDIR_WITH_FILE_TYPES){Bpe(t,e,r);return}vpe(t,e,r)}d0.read=IAt;function Bpe(t,e,r){e.fs.readdir(t,{withFileTypes:!0},(s,a)=>{if(s!==null){pQ(r,s);return}let n=a.map(f=>({dirent:f,name:f.name,path:wpe.joinPathSegments(t,f.name,e.pathSegmentSeparator)}));if(!e.followSymbolicLinks){q3(r,n);return}let c=n.map(f=>CAt(f,e));Ipe(c,(f,p)=>{if(f!==null){pQ(r,f);return}q3(r,p)})})}d0.readdirWithFileTypes=Bpe;function CAt(t,e){return r=>{if(!t.dirent.isSymbolicLink()){r(null,t);return}e.fs.stat(t.path,(s,a)=>{if(s!==null){if(e.throwErrorOnBrokenSymbolicLink){r(s);return}r(null,t);return}t.dirent=Cpe.fs.createDirentFromStats(t.name,a),r(null,t)})}}function vpe(t,e,r){e.fs.readdir(t,(s,a)=>{if(s!==null){pQ(r,s);return}let n=a.map(c=>{let f=wpe.joinPathSegments(t,c,e.pathSegmentSeparator);return p=>{yAt.stat(f,e.fsStatSettings,(h,E)=>{if(h!==null){p(h);return}let C={name:c,path:f,dirent:Cpe.fs.createDirentFromStats(c,E)};e.stats&&(C.stats=E),p(null,C)})}});Ipe(n,(c,f)=>{if(c!==null){pQ(r,c);return}q3(r,f)})})}d0.readdir=vpe;function pQ(t,e){t(e)}function q3(t,e){t(null,e)}});var kpe=L(m0=>{"use strict";Object.defineProperty(m0,"__esModule",{value:!0});m0.readdir=m0.readdirWithFileTypes=m0.read=void 0;var wAt=Xd(),BAt=_3(),Dpe=H3(),bpe=j3();function vAt(t,e){return!e.stats&&BAt.IS_SUPPORT_READDIR_WITH_FILE_TYPES?Ppe(t,e):xpe(t,e)}m0.read=vAt;function Ppe(t,e){return e.fs.readdirSync(t,{withFileTypes:!0}).map(s=>{let a={dirent:s,name:s.name,path:bpe.joinPathSegments(t,s.name,e.pathSegmentSeparator)};if(a.dirent.isSymbolicLink()&&e.followSymbolicLinks)try{let n=e.fs.statSync(a.path);a.dirent=Dpe.fs.createDirentFromStats(a.name,n)}catch(n){if(e.throwErrorOnBrokenSymbolicLink)throw n}return a})}m0.readdirWithFileTypes=Ppe;function xpe(t,e){return e.fs.readdirSync(t).map(s=>{let a=bpe.joinPathSegments(t,s,e.pathSegmentSeparator),n=wAt.statSync(a,e.fsStatSettings),c={name:s,path:a,dirent:Dpe.fs.createDirentFromStats(s,n)};return e.stats&&(c.stats=n),c})}m0.readdir=xpe});var Qpe=L(y0=>{"use strict";Object.defineProperty(y0,"__esModule",{value:!0});y0.createFileSystemAdapter=y0.FILE_SYSTEM_ADAPTER=void 0;var XE=ye("fs");y0.FILE_SYSTEM_ADAPTER={lstat:XE.lstat,stat:XE.stat,lstatSync:XE.lstatSync,statSync:XE.statSync,readdir:XE.readdir,readdirSync:XE.readdirSync};function SAt(t){return t===void 0?y0.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},y0.FILE_SYSTEM_ADAPTER),t)}y0.createFileSystemAdapter=SAt});var Tpe=L(W3=>{"use strict";Object.defineProperty(W3,"__esModule",{value:!0});var DAt=ye("path"),bAt=Xd(),PAt=Qpe(),G3=class{constructor(e={}){this._options=e,this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!1),this.fs=PAt.createFileSystemAdapter(this._options.fs),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,DAt.sep),this.stats=this._getValue(this._options.stats,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0),this.fsStatSettings=new bAt.Settings({followSymbolicLink:this.followSymbolicLinks,fs:this.fs,throwErrorOnBrokenSymbolicLink:this.throwErrorOnBrokenSymbolicLink})}_getValue(e,r){return e??r}};W3.default=G3});var hQ=L(E0=>{"use strict";Object.defineProperty(E0,"__esModule",{value:!0});E0.Settings=E0.scandirSync=E0.scandir=void 0;var Rpe=Spe(),xAt=kpe(),Y3=Tpe();E0.Settings=Y3.default;function kAt(t,e,r){if(typeof e=="function"){Rpe.read(t,V3(),e);return}Rpe.read(t,V3(e),r)}E0.scandir=kAt;function QAt(t,e){let r=V3(e);return xAt.read(t,r)}E0.scandirSync=QAt;function V3(t={}){return t instanceof Y3.default?t:new Y3.default(t)}});var Npe=L((iJt,Fpe)=>{"use strict";function TAt(t){var e=new t,r=e;function s(){var n=e;return n.next?e=n.next:(e=new t,r=e),n.next=null,n}function a(n){r.next=n,r=n}return{get:s,release:a}}Fpe.exports=TAt});var Lpe=L((sJt,K3)=>{"use strict";var RAt=Npe();function Ope(t,e,r){if(typeof t=="function"&&(r=e,e=t,t=null),!(r>=1))throw new Error("fastqueue concurrency must be equal to or greater than 1");var s=RAt(FAt),a=null,n=null,c=0,f=null,p={push:R,drain:Tc,saturated:Tc,pause:E,paused:!1,get concurrency(){return r},set concurrency(Ae){if(!(Ae>=1))throw new Error("fastqueue concurrency must be equal to or greater than 1");if(r=Ae,!p.paused)for(;a&&c=r||p.paused?n?(n.next=me,n=me):(a=me,n=me,p.saturated()):(c++,e.call(t,me.value,me.worked))}function N(Ae,ce){var me=s.get();me.context=t,me.release=U,me.value=Ae,me.callback=ce||Tc,me.errorHandler=f,c>=r||p.paused?a?(me.next=a,a=me):(a=me,n=me,p.saturated()):(c++,e.call(t,me.value,me.worked))}function U(Ae){Ae&&s.release(Ae);var ce=a;ce&&c<=r?p.paused?c--:(n===a&&(n=null),a=ce.next,ce.next=null,e.call(t,ce.value,ce.worked),n===null&&p.empty()):--c===0&&p.drain()}function W(){a=null,n=null,p.drain=Tc}function te(){a=null,n=null,p.drain(),p.drain=Tc}function ie(Ae){f=Ae}}function Tc(){}function FAt(){this.value=null,this.callback=Tc,this.next=null,this.release=Tc,this.context=null,this.errorHandler=null;var t=this;this.worked=function(r,s){var a=t.callback,n=t.errorHandler,c=t.value;t.value=null,t.callback=Tc,t.errorHandler&&n(r,c),a.call(t.context,r,s),t.release(t)}}function NAt(t,e,r){typeof t=="function"&&(r=e,e=t,t=null);function s(E,C){e.call(this,E).then(function(S){C(null,S)},C)}var a=Ope(t,s,r),n=a.push,c=a.unshift;return a.push=f,a.unshift=p,a.drained=h,a;function f(E){var C=new Promise(function(S,P){n(E,function(I,R){if(I){P(I);return}S(R)})});return C.catch(Tc),C}function p(E){var C=new Promise(function(S,P){c(E,function(I,R){if(I){P(I);return}S(R)})});return C.catch(Tc),C}function h(){if(a.idle())return new Promise(function(S){S()});var E=a.drain,C=new Promise(function(S){a.drain=function(){E(),S()}});return C}}K3.exports=Ope;K3.exports.promise=NAt});var gQ=L(Xf=>{"use strict";Object.defineProperty(Xf,"__esModule",{value:!0});Xf.joinPathSegments=Xf.replacePathSegmentSeparator=Xf.isAppliedFilter=Xf.isFatalError=void 0;function OAt(t,e){return t.errorFilter===null?!0:!t.errorFilter(e)}Xf.isFatalError=OAt;function LAt(t,e){return t===null||t(e)}Xf.isAppliedFilter=LAt;function MAt(t,e){return t.split(/[/\\]/).join(e)}Xf.replacePathSegmentSeparator=MAt;function _At(t,e,r){return t===""?e:t.endsWith(r)?t+e:t+r+e}Xf.joinPathSegments=_At});var Z3=L(z3=>{"use strict";Object.defineProperty(z3,"__esModule",{value:!0});var UAt=gQ(),J3=class{constructor(e,r){this._root=e,this._settings=r,this._root=UAt.replacePathSegmentSeparator(e,r.pathSegmentSeparator)}};z3.default=J3});var e8=L($3=>{"use strict";Object.defineProperty($3,"__esModule",{value:!0});var HAt=ye("events"),jAt=hQ(),qAt=Lpe(),dQ=gQ(),GAt=Z3(),X3=class extends GAt.default{constructor(e,r){super(e,r),this._settings=r,this._scandir=jAt.scandir,this._emitter=new HAt.EventEmitter,this._queue=qAt(this._worker.bind(this),this._settings.concurrency),this._isFatalError=!1,this._isDestroyed=!1,this._queue.drain=()=>{this._isFatalError||this._emitter.emit("end")}}read(){return this._isFatalError=!1,this._isDestroyed=!1,setImmediate(()=>{this._pushToQueue(this._root,this._settings.basePath)}),this._emitter}get isDestroyed(){return this._isDestroyed}destroy(){if(this._isDestroyed)throw new Error("The reader is already destroyed");this._isDestroyed=!0,this._queue.killAndDrain()}onEntry(e){this._emitter.on("entry",e)}onError(e){this._emitter.once("error",e)}onEnd(e){this._emitter.once("end",e)}_pushToQueue(e,r){let s={directory:e,base:r};this._queue.push(s,a=>{a!==null&&this._handleError(a)})}_worker(e,r){this._scandir(e.directory,this._settings.fsScandirSettings,(s,a)=>{if(s!==null){r(s,void 0);return}for(let n of a)this._handleEntry(n,e.base);r(null,void 0)})}_handleError(e){this._isDestroyed||!dQ.isFatalError(this._settings,e)||(this._isFatalError=!0,this._isDestroyed=!0,this._emitter.emit("error",e))}_handleEntry(e,r){if(this._isDestroyed||this._isFatalError)return;let s=e.path;r!==void 0&&(e.path=dQ.joinPathSegments(r,e.name,this._settings.pathSegmentSeparator)),dQ.isAppliedFilter(this._settings.entryFilter,e)&&this._emitEntry(e),e.dirent.isDirectory()&&dQ.isAppliedFilter(this._settings.deepFilter,e)&&this._pushToQueue(s,r===void 0?void 0:e.path)}_emitEntry(e){this._emitter.emit("entry",e)}};$3.default=X3});var Mpe=L(r8=>{"use strict";Object.defineProperty(r8,"__esModule",{value:!0});var WAt=e8(),t8=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new WAt.default(this._root,this._settings),this._storage=[]}read(e){this._reader.onError(r=>{YAt(e,r)}),this._reader.onEntry(r=>{this._storage.push(r)}),this._reader.onEnd(()=>{VAt(e,this._storage)}),this._reader.read()}};r8.default=t8;function YAt(t,e){t(e)}function VAt(t,e){t(null,e)}});var _pe=L(i8=>{"use strict";Object.defineProperty(i8,"__esModule",{value:!0});var KAt=ye("stream"),JAt=e8(),n8=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new JAt.default(this._root,this._settings),this._stream=new KAt.Readable({objectMode:!0,read:()=>{},destroy:()=>{this._reader.isDestroyed||this._reader.destroy()}})}read(){return this._reader.onError(e=>{this._stream.emit("error",e)}),this._reader.onEntry(e=>{this._stream.push(e)}),this._reader.onEnd(()=>{this._stream.push(null)}),this._reader.read(),this._stream}};i8.default=n8});var Upe=L(o8=>{"use strict";Object.defineProperty(o8,"__esModule",{value:!0});var zAt=hQ(),mQ=gQ(),ZAt=Z3(),s8=class extends ZAt.default{constructor(){super(...arguments),this._scandir=zAt.scandirSync,this._storage=[],this._queue=new Set}read(){return this._pushToQueue(this._root,this._settings.basePath),this._handleQueue(),this._storage}_pushToQueue(e,r){this._queue.add({directory:e,base:r})}_handleQueue(){for(let e of this._queue.values())this._handleDirectory(e.directory,e.base)}_handleDirectory(e,r){try{let s=this._scandir(e,this._settings.fsScandirSettings);for(let a of s)this._handleEntry(a,r)}catch(s){this._handleError(s)}}_handleError(e){if(mQ.isFatalError(this._settings,e))throw e}_handleEntry(e,r){let s=e.path;r!==void 0&&(e.path=mQ.joinPathSegments(r,e.name,this._settings.pathSegmentSeparator)),mQ.isAppliedFilter(this._settings.entryFilter,e)&&this._pushToStorage(e),e.dirent.isDirectory()&&mQ.isAppliedFilter(this._settings.deepFilter,e)&&this._pushToQueue(s,r===void 0?void 0:e.path)}_pushToStorage(e){this._storage.push(e)}};o8.default=s8});var Hpe=L(l8=>{"use strict";Object.defineProperty(l8,"__esModule",{value:!0});var XAt=Upe(),a8=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new XAt.default(this._root,this._settings)}read(){return this._reader.read()}};l8.default=a8});var jpe=L(u8=>{"use strict";Object.defineProperty(u8,"__esModule",{value:!0});var $At=ye("path"),ept=hQ(),c8=class{constructor(e={}){this._options=e,this.basePath=this._getValue(this._options.basePath,void 0),this.concurrency=this._getValue(this._options.concurrency,Number.POSITIVE_INFINITY),this.deepFilter=this._getValue(this._options.deepFilter,null),this.entryFilter=this._getValue(this._options.entryFilter,null),this.errorFilter=this._getValue(this._options.errorFilter,null),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,$At.sep),this.fsScandirSettings=new ept.Settings({followSymbolicLinks:this._options.followSymbolicLinks,fs:this._options.fs,pathSegmentSeparator:this._options.pathSegmentSeparator,stats:this._options.stats,throwErrorOnBrokenSymbolicLink:this._options.throwErrorOnBrokenSymbolicLink})}_getValue(e,r){return e??r}};u8.default=c8});var EQ=L($f=>{"use strict";Object.defineProperty($f,"__esModule",{value:!0});$f.Settings=$f.walkStream=$f.walkSync=$f.walk=void 0;var qpe=Mpe(),tpt=_pe(),rpt=Hpe(),f8=jpe();$f.Settings=f8.default;function npt(t,e,r){if(typeof e=="function"){new qpe.default(t,yQ()).read(e);return}new qpe.default(t,yQ(e)).read(r)}$f.walk=npt;function ipt(t,e){let r=yQ(e);return new rpt.default(t,r).read()}$f.walkSync=ipt;function spt(t,e){let r=yQ(e);return new tpt.default(t,r).read()}$f.walkStream=spt;function yQ(t={}){return t instanceof f8.default?t:new f8.default(t)}});var IQ=L(p8=>{"use strict";Object.defineProperty(p8,"__esModule",{value:!0});var opt=ye("path"),apt=Xd(),Gpe=Qp(),A8=class{constructor(e){this._settings=e,this._fsStatSettings=new apt.Settings({followSymbolicLink:this._settings.followSymbolicLinks,fs:this._settings.fs,throwErrorOnBrokenSymbolicLink:this._settings.followSymbolicLinks})}_getFullEntryPath(e){return opt.resolve(this._settings.cwd,e)}_makeEntry(e,r){let s={name:r,path:r,dirent:Gpe.fs.createDirentFromStats(r,e)};return this._settings.stats&&(s.stats=e),s}_isFatalError(e){return!Gpe.errno.isEnoentCodeError(e)&&!this._settings.suppressErrors}};p8.default=A8});var d8=L(g8=>{"use strict";Object.defineProperty(g8,"__esModule",{value:!0});var lpt=ye("stream"),cpt=Xd(),upt=EQ(),fpt=IQ(),h8=class extends fpt.default{constructor(){super(...arguments),this._walkStream=upt.walkStream,this._stat=cpt.stat}dynamic(e,r){return this._walkStream(e,r)}static(e,r){let s=e.map(this._getFullEntryPath,this),a=new lpt.PassThrough({objectMode:!0});a._write=(n,c,f)=>this._getEntry(s[n],e[n],r).then(p=>{p!==null&&r.entryFilter(p)&&a.push(p),n===s.length-1&&a.end(),f()}).catch(f);for(let n=0;nthis._makeEntry(a,r)).catch(a=>{if(s.errorFilter(a))return null;throw a})}_getStat(e){return new Promise((r,s)=>{this._stat(e,this._fsStatSettings,(a,n)=>a===null?r(n):s(a))})}};g8.default=h8});var Wpe=L(y8=>{"use strict";Object.defineProperty(y8,"__esModule",{value:!0});var Apt=EQ(),ppt=IQ(),hpt=d8(),m8=class extends ppt.default{constructor(){super(...arguments),this._walkAsync=Apt.walk,this._readerStream=new hpt.default(this._settings)}dynamic(e,r){return new Promise((s,a)=>{this._walkAsync(e,r,(n,c)=>{n===null?s(c):a(n)})})}async static(e,r){let s=[],a=this._readerStream.static(e,r);return new Promise((n,c)=>{a.once("error",c),a.on("data",f=>s.push(f)),a.once("end",()=>n(s))})}};y8.default=m8});var Ype=L(I8=>{"use strict";Object.defineProperty(I8,"__esModule",{value:!0});var KB=Qp(),E8=class{constructor(e,r,s){this._patterns=e,this._settings=r,this._micromatchOptions=s,this._storage=[],this._fillStorage()}_fillStorage(){for(let e of this._patterns){let r=this._getPatternSegments(e),s=this._splitSegmentsIntoSections(r);this._storage.push({complete:s.length<=1,pattern:e,segments:r,sections:s})}}_getPatternSegments(e){return KB.pattern.getPatternParts(e,this._micromatchOptions).map(s=>KB.pattern.isDynamicPattern(s,this._settings)?{dynamic:!0,pattern:s,patternRe:KB.pattern.makeRe(s,this._micromatchOptions)}:{dynamic:!1,pattern:s})}_splitSegmentsIntoSections(e){return KB.array.splitWhen(e,r=>r.dynamic&&KB.pattern.hasGlobStar(r.pattern))}};I8.default=E8});var Vpe=L(w8=>{"use strict";Object.defineProperty(w8,"__esModule",{value:!0});var gpt=Ype(),C8=class extends gpt.default{match(e){let r=e.split("/"),s=r.length,a=this._storage.filter(n=>!n.complete||n.segments.length>s);for(let n of a){let c=n.sections[0];if(!n.complete&&s>c.length||r.every((p,h)=>{let E=n.segments[h];return!!(E.dynamic&&E.patternRe.test(p)||!E.dynamic&&E.pattern===p)}))return!0}return!1}};w8.default=C8});var Kpe=L(v8=>{"use strict";Object.defineProperty(v8,"__esModule",{value:!0});var CQ=Qp(),dpt=Vpe(),B8=class{constructor(e,r){this._settings=e,this._micromatchOptions=r}getFilter(e,r,s){let a=this._getMatcher(r),n=this._getNegativePatternsRe(s);return c=>this._filter(e,c,a,n)}_getMatcher(e){return new dpt.default(e,this._settings,this._micromatchOptions)}_getNegativePatternsRe(e){let r=e.filter(CQ.pattern.isAffectDepthOfReadingPattern);return CQ.pattern.convertPatternsToRe(r,this._micromatchOptions)}_filter(e,r,s,a){if(this._isSkippedByDeep(e,r.path)||this._isSkippedSymbolicLink(r))return!1;let n=CQ.path.removeLeadingDotSegment(r.path);return this._isSkippedByPositivePatterns(n,s)?!1:this._isSkippedByNegativePatterns(n,a)}_isSkippedByDeep(e,r){return this._settings.deep===1/0?!1:this._getEntryLevel(e,r)>=this._settings.deep}_getEntryLevel(e,r){let s=r.split("/").length;if(e==="")return s;let a=e.split("/").length;return s-a}_isSkippedSymbolicLink(e){return!this._settings.followSymbolicLinks&&e.dirent.isSymbolicLink()}_isSkippedByPositivePatterns(e,r){return!this._settings.baseNameMatch&&!r.match(e)}_isSkippedByNegativePatterns(e,r){return!CQ.pattern.matchAny(e,r)}};v8.default=B8});var Jpe=L(D8=>{"use strict";Object.defineProperty(D8,"__esModule",{value:!0});var $d=Qp(),S8=class{constructor(e,r){this._settings=e,this._micromatchOptions=r,this.index=new Map}getFilter(e,r){let s=$d.pattern.convertPatternsToRe(e,this._micromatchOptions),a=$d.pattern.convertPatternsToRe(r,Object.assign(Object.assign({},this._micromatchOptions),{dot:!0}));return n=>this._filter(n,s,a)}_filter(e,r,s){let a=$d.path.removeLeadingDotSegment(e.path);if(this._settings.unique&&this._isDuplicateEntry(a)||this._onlyFileFilter(e)||this._onlyDirectoryFilter(e)||this._isSkippedByAbsoluteNegativePatterns(a,s))return!1;let n=e.dirent.isDirectory(),c=this._isMatchToPatterns(a,r,n)&&!this._isMatchToPatterns(a,s,n);return this._settings.unique&&c&&this._createIndexRecord(a),c}_isDuplicateEntry(e){return this.index.has(e)}_createIndexRecord(e){this.index.set(e,void 0)}_onlyFileFilter(e){return this._settings.onlyFiles&&!e.dirent.isFile()}_onlyDirectoryFilter(e){return this._settings.onlyDirectories&&!e.dirent.isDirectory()}_isSkippedByAbsoluteNegativePatterns(e,r){if(!this._settings.absolute)return!1;let s=$d.path.makeAbsolute(this._settings.cwd,e);return $d.pattern.matchAny(s,r)}_isMatchToPatterns(e,r,s){let a=$d.pattern.matchAny(e,r);return!a&&s?$d.pattern.matchAny(e+"/",r):a}};D8.default=S8});var zpe=L(P8=>{"use strict";Object.defineProperty(P8,"__esModule",{value:!0});var mpt=Qp(),b8=class{constructor(e){this._settings=e}getFilter(){return e=>this._isNonFatalError(e)}_isNonFatalError(e){return mpt.errno.isEnoentCodeError(e)||this._settings.suppressErrors}};P8.default=b8});var Xpe=L(k8=>{"use strict";Object.defineProperty(k8,"__esModule",{value:!0});var Zpe=Qp(),x8=class{constructor(e){this._settings=e}getTransformer(){return e=>this._transform(e)}_transform(e){let r=e.path;return this._settings.absolute&&(r=Zpe.path.makeAbsolute(this._settings.cwd,r),r=Zpe.path.unixify(r)),this._settings.markDirectories&&e.dirent.isDirectory()&&(r+="/"),this._settings.objectMode?Object.assign(Object.assign({},e),{path:r}):r}};k8.default=x8});var wQ=L(T8=>{"use strict";Object.defineProperty(T8,"__esModule",{value:!0});var ypt=ye("path"),Ept=Kpe(),Ipt=Jpe(),Cpt=zpe(),wpt=Xpe(),Q8=class{constructor(e){this._settings=e,this.errorFilter=new Cpt.default(this._settings),this.entryFilter=new Ipt.default(this._settings,this._getMicromatchOptions()),this.deepFilter=new Ept.default(this._settings,this._getMicromatchOptions()),this.entryTransformer=new wpt.default(this._settings)}_getRootDirectory(e){return ypt.resolve(this._settings.cwd,e.base)}_getReaderOptions(e){let r=e.base==="."?"":e.base;return{basePath:r,pathSegmentSeparator:"/",concurrency:this._settings.concurrency,deepFilter:this.deepFilter.getFilter(r,e.positive,e.negative),entryFilter:this.entryFilter.getFilter(e.positive,e.negative),errorFilter:this.errorFilter.getFilter(),followSymbolicLinks:this._settings.followSymbolicLinks,fs:this._settings.fs,stats:this._settings.stats,throwErrorOnBrokenSymbolicLink:this._settings.throwErrorOnBrokenSymbolicLink,transform:this.entryTransformer.getTransformer()}}_getMicromatchOptions(){return{dot:this._settings.dot,matchBase:this._settings.baseNameMatch,nobrace:!this._settings.braceExpansion,nocase:!this._settings.caseSensitiveMatch,noext:!this._settings.extglob,noglobstar:!this._settings.globstar,posix:!0,strictSlashes:!1}}};T8.default=Q8});var $pe=L(F8=>{"use strict";Object.defineProperty(F8,"__esModule",{value:!0});var Bpt=Wpe(),vpt=wQ(),R8=class extends vpt.default{constructor(){super(...arguments),this._reader=new Bpt.default(this._settings)}async read(e){let r=this._getRootDirectory(e),s=this._getReaderOptions(e);return(await this.api(r,e,s)).map(n=>s.transform(n))}api(e,r,s){return r.dynamic?this._reader.dynamic(e,s):this._reader.static(r.patterns,s)}};F8.default=R8});var ehe=L(O8=>{"use strict";Object.defineProperty(O8,"__esModule",{value:!0});var Spt=ye("stream"),Dpt=d8(),bpt=wQ(),N8=class extends bpt.default{constructor(){super(...arguments),this._reader=new Dpt.default(this._settings)}read(e){let r=this._getRootDirectory(e),s=this._getReaderOptions(e),a=this.api(r,e,s),n=new Spt.Readable({objectMode:!0,read:()=>{}});return a.once("error",c=>n.emit("error",c)).on("data",c=>n.emit("data",s.transform(c))).once("end",()=>n.emit("end")),n.once("close",()=>a.destroy()),n}api(e,r,s){return r.dynamic?this._reader.dynamic(e,s):this._reader.static(r.patterns,s)}};O8.default=N8});var the=L(M8=>{"use strict";Object.defineProperty(M8,"__esModule",{value:!0});var Ppt=Xd(),xpt=EQ(),kpt=IQ(),L8=class extends kpt.default{constructor(){super(...arguments),this._walkSync=xpt.walkSync,this._statSync=Ppt.statSync}dynamic(e,r){return this._walkSync(e,r)}static(e,r){let s=[];for(let a of e){let n=this._getFullEntryPath(a),c=this._getEntry(n,a,r);c===null||!r.entryFilter(c)||s.push(c)}return s}_getEntry(e,r,s){try{let a=this._getStat(e);return this._makeEntry(a,r)}catch(a){if(s.errorFilter(a))return null;throw a}}_getStat(e){return this._statSync(e,this._fsStatSettings)}};M8.default=L8});var rhe=L(U8=>{"use strict";Object.defineProperty(U8,"__esModule",{value:!0});var Qpt=the(),Tpt=wQ(),_8=class extends Tpt.default{constructor(){super(...arguments),this._reader=new Qpt.default(this._settings)}read(e){let r=this._getRootDirectory(e),s=this._getReaderOptions(e);return this.api(r,e,s).map(s.transform)}api(e,r,s){return r.dynamic?this._reader.dynamic(e,s):this._reader.static(r.patterns,s)}};U8.default=_8});var nhe=L(eI=>{"use strict";Object.defineProperty(eI,"__esModule",{value:!0});eI.DEFAULT_FILE_SYSTEM_ADAPTER=void 0;var $E=ye("fs"),Rpt=ye("os"),Fpt=Math.max(Rpt.cpus().length,1);eI.DEFAULT_FILE_SYSTEM_ADAPTER={lstat:$E.lstat,lstatSync:$E.lstatSync,stat:$E.stat,statSync:$E.statSync,readdir:$E.readdir,readdirSync:$E.readdirSync};var H8=class{constructor(e={}){this._options=e,this.absolute=this._getValue(this._options.absolute,!1),this.baseNameMatch=this._getValue(this._options.baseNameMatch,!1),this.braceExpansion=this._getValue(this._options.braceExpansion,!0),this.caseSensitiveMatch=this._getValue(this._options.caseSensitiveMatch,!0),this.concurrency=this._getValue(this._options.concurrency,Fpt),this.cwd=this._getValue(this._options.cwd,process.cwd()),this.deep=this._getValue(this._options.deep,1/0),this.dot=this._getValue(this._options.dot,!1),this.extglob=this._getValue(this._options.extglob,!0),this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!0),this.fs=this._getFileSystemMethods(this._options.fs),this.globstar=this._getValue(this._options.globstar,!0),this.ignore=this._getValue(this._options.ignore,[]),this.markDirectories=this._getValue(this._options.markDirectories,!1),this.objectMode=this._getValue(this._options.objectMode,!1),this.onlyDirectories=this._getValue(this._options.onlyDirectories,!1),this.onlyFiles=this._getValue(this._options.onlyFiles,!0),this.stats=this._getValue(this._options.stats,!1),this.suppressErrors=this._getValue(this._options.suppressErrors,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!1),this.unique=this._getValue(this._options.unique,!0),this.onlyDirectories&&(this.onlyFiles=!1),this.stats&&(this.objectMode=!0),this.ignore=[].concat(this.ignore)}_getValue(e,r){return e===void 0?r:e}_getFileSystemMethods(e={}){return Object.assign(Object.assign({},eI.DEFAULT_FILE_SYSTEM_ADAPTER),e)}};eI.default=H8});var BQ=L((kJt,she)=>{"use strict";var ihe=spe(),Npt=$pe(),Opt=ehe(),Lpt=rhe(),j8=nhe(),Rc=Qp();async function q8(t,e){qu(t);let r=G8(t,Npt.default,e),s=await Promise.all(r);return Rc.array.flatten(s)}(function(t){t.glob=t,t.globSync=e,t.globStream=r,t.async=t;function e(h,E){qu(h);let C=G8(h,Lpt.default,E);return Rc.array.flatten(C)}t.sync=e;function r(h,E){qu(h);let C=G8(h,Opt.default,E);return Rc.stream.merge(C)}t.stream=r;function s(h,E){qu(h);let C=[].concat(h),S=new j8.default(E);return ihe.generate(C,S)}t.generateTasks=s;function a(h,E){qu(h);let C=new j8.default(E);return Rc.pattern.isDynamicPattern(h,C)}t.isDynamicPattern=a;function n(h){return qu(h),Rc.path.escape(h)}t.escapePath=n;function c(h){return qu(h),Rc.path.convertPathToPattern(h)}t.convertPathToPattern=c;let f;(function(h){function E(S){return qu(S),Rc.path.escapePosixPath(S)}h.escapePath=E;function C(S){return qu(S),Rc.path.convertPosixPathToPattern(S)}h.convertPathToPattern=C})(f=t.posix||(t.posix={}));let p;(function(h){function E(S){return qu(S),Rc.path.escapeWindowsPath(S)}h.escapePath=E;function C(S){return qu(S),Rc.path.convertWindowsPathToPattern(S)}h.convertPathToPattern=C})(p=t.win32||(t.win32={}))})(q8||(q8={}));function G8(t,e,r){let s=[].concat(t),a=new j8.default(r),n=ihe.generate(s,a),c=new e(a);return n.map(c.read,c)}function qu(t){if(![].concat(t).every(s=>Rc.string.isString(s)&&!Rc.string.isEmpty(s)))throw new TypeError("Patterns must be a string (non empty) or an array of strings")}she.exports=q8});var Nn={};Vt(Nn,{checksumFile:()=>SQ,checksumPattern:()=>DQ,makeHash:()=>us});function us(...t){let e=(0,vQ.createHash)("sha512"),r="";for(let s of t)typeof s=="string"?r+=s:s&&(r&&(e.update(r),r=""),e.update(s));return r&&e.update(r),e.digest("hex")}async function SQ(t,{baseFs:e,algorithm:r}={baseFs:le,algorithm:"sha512"}){let s=await e.openPromise(t,"r");try{let n=Buffer.allocUnsafeSlow(65536),c=(0,vQ.createHash)(r),f=0;for(;(f=await e.readPromise(s,n,0,65536))!==0;)c.update(f===65536?n:n.slice(0,f));return c.digest("hex")}finally{await e.closePromise(s)}}async function DQ(t,{cwd:e}){let s=(await(0,W8.default)(t,{cwd:ue.fromPortablePath(e),onlyDirectories:!0})).map(f=>`${f}/**/*`),a=await(0,W8.default)([t,...s],{cwd:ue.fromPortablePath(e),onlyFiles:!1});a.sort();let n=await Promise.all(a.map(async f=>{let p=[Buffer.from(f)],h=K.join(e,ue.toPortablePath(f)),E=await le.lstatPromise(h);return E.isSymbolicLink()?p.push(Buffer.from(await le.readlinkPromise(h))):E.isFile()&&p.push(await le.readFilePromise(h)),p.join("\0")})),c=(0,vQ.createHash)("sha512");for(let f of n)c.update(f);return c.digest("hex")}var vQ,W8,I0=It(()=>{bt();vQ=ye("crypto"),W8=et(BQ())});var q={};Vt(q,{allPeerRequests:()=>nv,areDescriptorsEqual:()=>uhe,areIdentsEqual:()=>XB,areLocatorsEqual:()=>$B,areVirtualPackagesEquivalent:()=>Ypt,bindDescriptor:()=>Gpt,bindLocator:()=>Wpt,convertDescriptorToLocator:()=>bQ,convertLocatorToDescriptor:()=>V8,convertPackageToLocator:()=>Hpt,convertToIdent:()=>Upt,convertToManifestRange:()=>rht,copyPackage:()=>zB,devirtualizeDescriptor:()=>ZB,devirtualizeLocator:()=>rI,ensureDevirtualizedDescriptor:()=>jpt,ensureDevirtualizedLocator:()=>qpt,getIdentVendorPath:()=>Z8,isPackageCompatible:()=>TQ,isVirtualDescriptor:()=>Tp,isVirtualLocator:()=>Gu,makeDescriptor:()=>On,makeIdent:()=>ba,makeLocator:()=>Ys,makeRange:()=>kQ,parseDescriptor:()=>C0,parseFileStyleRange:()=>eht,parseIdent:()=>Da,parseLocator:()=>Rp,parseRange:()=>em,prettyDependent:()=>B3,prettyDescriptor:()=>ri,prettyIdent:()=>$i,prettyLocator:()=>Yr,prettyLocatorNoColors:()=>w3,prettyRange:()=>iI,prettyReference:()=>tv,prettyResolution:()=>VB,prettyWorkspace:()=>rv,renamePackage:()=>K8,slugifyIdent:()=>Y8,slugifyLocator:()=>nI,sortDescriptors:()=>sI,stringifyDescriptor:()=>ll,stringifyIdent:()=>cn,stringifyLocator:()=>cl,tryParseDescriptor:()=>ev,tryParseIdent:()=>fhe,tryParseLocator:()=>xQ,tryParseRange:()=>$pt,unwrapIdentFromScope:()=>iht,virtualizeDescriptor:()=>J8,virtualizePackage:()=>z8,wrapIdentIntoScope:()=>nht});function ba(t,e){if(t?.startsWith("@"))throw new Error("Invalid scope: don't prefix it with '@'");return{identHash:us(t,e),scope:t,name:e}}function On(t,e){return{identHash:t.identHash,scope:t.scope,name:t.name,descriptorHash:us(t.identHash,e),range:e}}function Ys(t,e){return{identHash:t.identHash,scope:t.scope,name:t.name,locatorHash:us(t.identHash,e),reference:e}}function Upt(t){return{identHash:t.identHash,scope:t.scope,name:t.name}}function bQ(t){return{identHash:t.identHash,scope:t.scope,name:t.name,locatorHash:t.descriptorHash,reference:t.range}}function V8(t){return{identHash:t.identHash,scope:t.scope,name:t.name,descriptorHash:t.locatorHash,range:t.reference}}function Hpt(t){return{identHash:t.identHash,scope:t.scope,name:t.name,locatorHash:t.locatorHash,reference:t.reference}}function K8(t,e){return{identHash:e.identHash,scope:e.scope,name:e.name,locatorHash:e.locatorHash,reference:e.reference,version:t.version,languageName:t.languageName,linkType:t.linkType,conditions:t.conditions,dependencies:new Map(t.dependencies),peerDependencies:new Map(t.peerDependencies),dependenciesMeta:new Map(t.dependenciesMeta),peerDependenciesMeta:new Map(t.peerDependenciesMeta),bin:new Map(t.bin)}}function zB(t){return K8(t,t)}function J8(t,e){if(e.includes("#"))throw new Error("Invalid entropy");return On(t,`virtual:${e}#${t.range}`)}function z8(t,e){if(e.includes("#"))throw new Error("Invalid entropy");return K8(t,Ys(t,`virtual:${e}#${t.reference}`))}function Tp(t){return t.range.startsWith(JB)}function Gu(t){return t.reference.startsWith(JB)}function ZB(t){if(!Tp(t))throw new Error("Not a virtual descriptor");return On(t,t.range.replace(PQ,""))}function rI(t){if(!Gu(t))throw new Error("Not a virtual descriptor");return Ys(t,t.reference.replace(PQ,""))}function jpt(t){return Tp(t)?On(t,t.range.replace(PQ,"")):t}function qpt(t){return Gu(t)?Ys(t,t.reference.replace(PQ,"")):t}function Gpt(t,e){return t.range.includes("::")?t:On(t,`${t.range}::${tI.default.stringify(e)}`)}function Wpt(t,e){return t.reference.includes("::")?t:Ys(t,`${t.reference}::${tI.default.stringify(e)}`)}function XB(t,e){return t.identHash===e.identHash}function uhe(t,e){return t.descriptorHash===e.descriptorHash}function $B(t,e){return t.locatorHash===e.locatorHash}function Ypt(t,e){if(!Gu(t))throw new Error("Invalid package type");if(!Gu(e))throw new Error("Invalid package type");if(!XB(t,e)||t.dependencies.size!==e.dependencies.size)return!1;for(let r of t.dependencies.values()){let s=e.dependencies.get(r.identHash);if(!s||!uhe(r,s))return!1}return!0}function Da(t){let e=fhe(t);if(!e)throw new Error(`Invalid ident (${t})`);return e}function fhe(t){let e=t.match(Vpt);if(!e)return null;let[,r,s]=e;return ba(typeof r<"u"?r:null,s)}function C0(t,e=!1){let r=ev(t,e);if(!r)throw new Error(`Invalid descriptor (${t})`);return r}function ev(t,e=!1){let r=e?t.match(Kpt):t.match(Jpt);if(!r)return null;let[,s,a,n]=r;if(n==="unknown")throw new Error(`Invalid range (${t})`);let c=typeof s<"u"?s:null,f=typeof n<"u"?n:"unknown";return On(ba(c,a),f)}function Rp(t,e=!1){let r=xQ(t,e);if(!r)throw new Error(`Invalid locator (${t})`);return r}function xQ(t,e=!1){let r=e?t.match(zpt):t.match(Zpt);if(!r)return null;let[,s,a,n]=r;if(n==="unknown")throw new Error(`Invalid reference (${t})`);let c=typeof s<"u"?s:null,f=typeof n<"u"?n:"unknown";return Ys(ba(c,a),f)}function em(t,e){let r=t.match(Xpt);if(r===null)throw new Error(`Invalid range (${t})`);let s=typeof r[1]<"u"?r[1]:null;if(typeof e?.requireProtocol=="string"&&s!==e.requireProtocol)throw new Error(`Invalid protocol (${s})`);if(e?.requireProtocol&&s===null)throw new Error(`Missing protocol (${s})`);let a=typeof r[3]<"u"?decodeURIComponent(r[2]):null;if(e?.requireSource&&a===null)throw new Error(`Missing source (${t})`);let n=typeof r[3]<"u"?decodeURIComponent(r[3]):decodeURIComponent(r[2]),c=e?.parseSelector?tI.default.parse(n):n,f=typeof r[4]<"u"?tI.default.parse(r[4]):null;return{protocol:s,source:a,selector:c,params:f}}function $pt(t,e){try{return em(t,e)}catch{return null}}function eht(t,{protocol:e}){let{selector:r,params:s}=em(t,{requireProtocol:e,requireBindings:!0});if(typeof s.locator!="string")throw new Error(`Assertion failed: Invalid bindings for ${t}`);return{parentLocator:Rp(s.locator,!0),path:r}}function ohe(t){return t=t.replaceAll("%","%25"),t=t.replaceAll(":","%3A"),t=t.replaceAll("#","%23"),t}function tht(t){return t===null?!1:Object.entries(t).length>0}function kQ({protocol:t,source:e,selector:r,params:s}){let a="";return t!==null&&(a+=`${t}`),e!==null&&(a+=`${ohe(e)}#`),a+=ohe(r),tht(s)&&(a+=`::${tI.default.stringify(s)}`),a}function rht(t){let{params:e,protocol:r,source:s,selector:a}=em(t);for(let n in e)n.startsWith("__")&&delete e[n];return kQ({protocol:r,source:s,params:e,selector:a})}function cn(t){return t.scope?`@${t.scope}/${t.name}`:`${t.name}`}function nht(t,e){return t.scope?ba(e,`${t.scope}__${t.name}`):ba(e,t.name)}function iht(t,e){if(t.scope!==e)return t;let r=t.name.indexOf("__");if(r===-1)return ba(null,t.name);let s=t.name.slice(0,r),a=t.name.slice(r+2);return ba(s,a)}function ll(t){return t.scope?`@${t.scope}/${t.name}@${t.range}`:`${t.name}@${t.range}`}function cl(t){return t.scope?`@${t.scope}/${t.name}@${t.reference}`:`${t.name}@${t.reference}`}function Y8(t){return t.scope!==null?`@${t.scope}-${t.name}`:t.name}function nI(t){let{protocol:e,selector:r}=em(t.reference),s=e!==null?e.replace(sht,""):"exotic",a=ahe.default.valid(r),n=a!==null?`${s}-${a}`:`${s}`,c=10;return t.scope?`${Y8(t)}-${n}-${t.locatorHash.slice(0,c)}`:`${Y8(t)}-${n}-${t.locatorHash.slice(0,c)}`}function $i(t,e){return e.scope?`${Ut(t,`@${e.scope}/`,Ct.SCOPE)}${Ut(t,e.name,Ct.NAME)}`:`${Ut(t,e.name,Ct.NAME)}`}function QQ(t){if(t.startsWith(JB)){let e=QQ(t.substring(t.indexOf("#")+1)),r=t.substring(JB.length,JB.length+Mpt);return`${e} [${r}]`}else return t.replace(oht,"?[...]")}function iI(t,e){return`${Ut(t,QQ(e),Ct.RANGE)}`}function ri(t,e){return`${$i(t,e)}${Ut(t,"@",Ct.RANGE)}${iI(t,e.range)}`}function tv(t,e){return`${Ut(t,QQ(e),Ct.REFERENCE)}`}function Yr(t,e){return`${$i(t,e)}${Ut(t,"@",Ct.REFERENCE)}${tv(t,e.reference)}`}function w3(t){return`${cn(t)}@${QQ(t.reference)}`}function sI(t){return Ws(t,[e=>cn(e),e=>e.range])}function rv(t,e){return $i(t,e.anchoredLocator)}function VB(t,e,r){let s=Tp(e)?ZB(e):e;return r===null?`${ri(t,s)} \u2192 ${C3(t).Cross}`:s.identHash===r.identHash?`${ri(t,s)} \u2192 ${tv(t,r.reference)}`:`${ri(t,s)} \u2192 ${Yr(t,r)}`}function B3(t,e,r){return r===null?`${Yr(t,e)}`:`${Yr(t,e)} (via ${iI(t,r.range)})`}function Z8(t){return`node_modules/${cn(t)}`}function TQ(t,e){return t.conditions?_pt(t.conditions,r=>{let[,s,a]=r.match(che),n=e[s];return n?n.includes(a):!0}):!0}function nv(t){let e=new Set;if("children"in t)e.add(t);else for(let r of t.requests.values())e.add(r);for(let r of e)for(let s of r.children.values())e.add(s);return e}var tI,ahe,lhe,JB,Mpt,che,_pt,PQ,Vpt,Kpt,Jpt,zpt,Zpt,Xpt,sht,oht,Yo=It(()=>{tI=et(ye("querystring")),ahe=et(fi()),lhe=et(noe());Qc();I0();kc();Yo();JB="virtual:",Mpt=5,che=/(os|cpu|libc)=([a-z0-9_-]+)/,_pt=(0,lhe.makeParser)(che);PQ=/^[^#]*#/;Vpt=/^(?:@([^/]+?)\/)?([^@/]+)$/;Kpt=/^(?:@([^/]+?)\/)?([^@/]+?)(?:@(.+))$/,Jpt=/^(?:@([^/]+?)\/)?([^@/]+?)(?:@(.+))?$/;zpt=/^(?:@([^/]+?)\/)?([^@/]+?)(?:@(.+))$/,Zpt=/^(?:@([^/]+?)\/)?([^@/]+?)(?:@(.+))?$/;Xpt=/^([^#:]*:)?((?:(?!::)[^#])*)(?:#((?:(?!::).)*))?(?:::(.*))?$/;sht=/:$/;oht=/\?.*/});var Ahe,phe=It(()=>{Yo();Ahe={hooks:{reduceDependency:(t,e,r,s,{resolver:a,resolveOptions:n})=>{for(let{pattern:c,reference:f}of e.topLevelWorkspace.manifest.resolutions){if(c.from&&(c.from.fullName!==cn(r)||e.configuration.normalizeLocator(Ys(Da(c.from.fullName),c.from.description??r.reference)).locatorHash!==r.locatorHash)||c.descriptor.fullName!==cn(t)||e.configuration.normalizeDependency(On(Rp(c.descriptor.fullName),c.descriptor.description??t.range)).descriptorHash!==t.descriptorHash)continue;return a.bindDescriptor(e.configuration.normalizeDependency(On(t,f)),e.topLevelWorkspace.anchoredLocator,n)}return t},validateProject:async(t,e)=>{for(let r of t.workspaces){let s=rv(t.configuration,r);await t.configuration.triggerHook(a=>a.validateWorkspace,r,{reportWarning:(a,n)=>e.reportWarning(a,`${s}: ${n}`),reportError:(a,n)=>e.reportError(a,`${s}: ${n}`)})}},validateWorkspace:async(t,e)=>{let{manifest:r}=t;r.resolutions.length&&t.cwd!==t.project.cwd&&r.errors.push(new Error("Resolutions field will be ignored"));for(let s of r.errors)e.reportWarning(57,s.message)}}}});var yi,tm=It(()=>{yi=class t{static{this.protocol="workspace:"}supportsDescriptor(e,r){return!!(e.range.startsWith(t.protocol)||r.project.tryWorkspaceByDescriptor(e)!==null)}supportsLocator(e,r){return!!e.reference.startsWith(t.protocol)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,s){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,s){return[s.project.getWorkspaceByDescriptor(e).anchoredLocator]}async getSatisfying(e,r,s,a){let[n]=await this.getCandidates(e,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){let s=r.project.getWorkspaceByCwd(e.reference.slice(t.protocol.length));return{...e,version:s.manifest.version||"0.0.0",languageName:"unknown",linkType:"SOFT",conditions:null,dependencies:r.project.configuration.normalizeDependencyMap(new Map([...s.manifest.dependencies,...s.manifest.devDependencies])),peerDependencies:new Map([...s.manifest.peerDependencies]),dependenciesMeta:s.manifest.dependenciesMeta,peerDependenciesMeta:s.manifest.peerDependenciesMeta,bin:s.manifest.bin}}}});var Or={};Vt(Or,{SemVer:()=>yhe.SemVer,clean:()=>lht,getComparator:()=>dhe,mergeComparators:()=>X8,satisfiesWithPrereleases:()=>eA,simplifyRanges:()=>$8,stringifyComparator:()=>mhe,validRange:()=>ul});function eA(t,e,r=!1){if(!t)return!1;let s=`${e}${r}`,a=hhe.get(s);if(typeof a>"u")try{a=new Fp.default.Range(e,{includePrerelease:!0,loose:r})}catch{return!1}finally{hhe.set(s,a||null)}else if(a===null)return!1;let n;try{n=new Fp.default.SemVer(t,a)}catch{return!1}return a.test(n)?!0:(n.prerelease&&(n.prerelease=[]),a.set.some(c=>{for(let f of c)f.semver.prerelease&&(f.semver.prerelease=[]);return c.every(f=>f.test(n))}))}function ul(t){if(t.indexOf(":")!==-1)return null;let e=ghe.get(t);if(typeof e<"u")return e;try{e=new Fp.default.Range(t)}catch{e=null}return ghe.set(t,e),e}function lht(t){let e=aht.exec(t);return e?e[1]:null}function dhe(t){if(t.semver===Fp.default.Comparator.ANY)return{gt:null,lt:null};switch(t.operator){case"":return{gt:[">=",t.semver],lt:["<=",t.semver]};case">":case">=":return{gt:[t.operator,t.semver],lt:null};case"<":case"<=":return{gt:null,lt:[t.operator,t.semver]};default:throw new Error(`Assertion failed: Unexpected comparator operator (${t.operator})`)}}function X8(t){if(t.length===0)return null;let e=null,r=null;for(let s of t){if(s.gt){let a=e!==null?Fp.default.compare(s.gt[1],e[1]):null;(a===null||a>0||a===0&&s.gt[0]===">")&&(e=s.gt)}if(s.lt){let a=r!==null?Fp.default.compare(s.lt[1],r[1]):null;(a===null||a<0||a===0&&s.lt[0]==="<")&&(r=s.lt)}}if(e&&r){let s=Fp.default.compare(e[1],r[1]);if(s===0&&(e[0]===">"||r[0]==="<")||s>0)return null}return{gt:e,lt:r}}function mhe(t){if(t.gt&&t.lt){if(t.gt[0]===">="&&t.lt[0]==="<="&&t.gt[1].version===t.lt[1].version)return t.gt[1].version;if(t.gt[0]===">="&&t.lt[0]==="<"){if(t.lt[1].version===`${t.gt[1].major+1}.0.0-0`)return`^${t.gt[1].version}`;if(t.lt[1].version===`${t.gt[1].major}.${t.gt[1].minor+1}.0-0`)return`~${t.gt[1].version}`}}let e=[];return t.gt&&e.push(t.gt[0]+t.gt[1].version),t.lt&&e.push(t.lt[0]+t.lt[1].version),e.length?e.join(" "):"*"}function $8(t){let e=t.map(cht).map(s=>ul(s).set.map(a=>a.map(n=>dhe(n)))),r=e.shift().map(s=>X8(s)).filter(s=>s!==null);for(let s of e){let a=[];for(let n of r)for(let c of s){let f=X8([n,...c]);f!==null&&a.push(f)}r=a}return r.length===0?null:r.map(s=>mhe(s)).join(" || ")}function cht(t){let e=t.split("||");if(e.length>1){let r=new Set;for(let s of e)e.some(a=>a!==s&&Fp.default.subset(s,a))||r.add(s);if(r.size{Fp=et(fi()),yhe=et(fi()),hhe=new Map;ghe=new Map;aht=/^(?:[\sv=]*?)((0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?)(?:\s*)$/});function Ehe(t){let e=t.match(/^[ \t]+/m);return e?e[0]:" "}function Ihe(t){return t.charCodeAt(0)===65279?t.slice(1):t}function Pa(t){return t.replace(/\\/g,"/")}function RQ(t,{yamlCompatibilityMode:e}){return e?h3(t):typeof t>"u"||typeof t=="boolean"?t:null}function Che(t,e){let r=e.search(/[^!]/);if(r===-1)return"invalid";let s=r%2===0?"":"!",a=e.slice(r);return`${s}${t}=${a}`}function eH(t,e){return e.length===1?Che(t,e[0]):`(${e.map(r=>Che(t,r)).join(" | ")})`}var whe,Ht,oI=It(()=>{bt();Bc();whe=et(fi());tm();kc();Np();Yo();Ht=class t{constructor(){this.indent=" ";this.name=null;this.version=null;this.os=null;this.cpu=null;this.libc=null;this.type=null;this.packageManager=null;this.private=!1;this.license=null;this.main=null;this.module=null;this.browser=null;this.languageName=null;this.bin=new Map;this.scripts=new Map;this.dependencies=new Map;this.devDependencies=new Map;this.peerDependencies=new Map;this.workspaceDefinitions=[];this.dependenciesMeta=new Map;this.peerDependenciesMeta=new Map;this.resolutions=[];this.files=null;this.publishConfig=null;this.installConfig=null;this.preferUnplugged=null;this.raw={};this.errors=[]}static{this.fileName="package.json"}static{this.allDependencies=["dependencies","devDependencies","peerDependencies"]}static{this.hardDependencies=["dependencies","devDependencies"]}static async tryFind(e,{baseFs:r=new Yn}={}){let s=K.join(e,"package.json");try{return await t.fromFile(s,{baseFs:r})}catch(a){if(a.code==="ENOENT")return null;throw a}}static async find(e,{baseFs:r}={}){let s=await t.tryFind(e,{baseFs:r});if(s===null)throw new Error("Manifest not found");return s}static async fromFile(e,{baseFs:r=new Yn}={}){let s=new t;return await s.loadFile(e,{baseFs:r}),s}static fromText(e){let r=new t;return r.loadFromText(e),r}loadFromText(e){let r;try{r=JSON.parse(Ihe(e)||"{}")}catch(s){throw s.message+=` (when parsing ${e})`,s}this.load(r),this.indent=Ehe(e)}async loadFile(e,{baseFs:r=new Yn}){let s=await r.readFilePromise(e,"utf8"),a;try{a=JSON.parse(Ihe(s)||"{}")}catch(n){throw n.message+=` (when parsing ${e})`,n}this.load(a),this.indent=Ehe(s)}load(e,{yamlCompatibilityMode:r=!1}={}){if(typeof e!="object"||e===null)throw new Error(`Utterly invalid manifest data (${e})`);this.raw=e;let s=[];if(this.name=null,typeof e.name=="string")try{this.name=Da(e.name)}catch{s.push(new Error("Parsing failed for the 'name' field"))}if(typeof e.version=="string"?this.version=e.version:this.version=null,Array.isArray(e.os)){let n=[];this.os=n;for(let c of e.os)typeof c!="string"?s.push(new Error("Parsing failed for the 'os' field")):n.push(c)}else this.os=null;if(Array.isArray(e.cpu)){let n=[];this.cpu=n;for(let c of e.cpu)typeof c!="string"?s.push(new Error("Parsing failed for the 'cpu' field")):n.push(c)}else this.cpu=null;if(Array.isArray(e.libc)){let n=[];this.libc=n;for(let c of e.libc)typeof c!="string"?s.push(new Error("Parsing failed for the 'libc' field")):n.push(c)}else this.libc=null;if(typeof e.type=="string"?this.type=e.type:this.type=null,typeof e.packageManager=="string"?this.packageManager=e.packageManager:this.packageManager=null,typeof e.private=="boolean"?this.private=e.private:this.private=!1,typeof e.license=="string"?this.license=e.license:this.license=null,typeof e.languageName=="string"?this.languageName=e.languageName:this.languageName=null,typeof e.main=="string"?this.main=Pa(e.main):this.main=null,typeof e.module=="string"?this.module=Pa(e.module):this.module=null,e.browser!=null)if(typeof e.browser=="string")this.browser=Pa(e.browser);else{this.browser=new Map;for(let[n,c]of Object.entries(e.browser))this.browser.set(Pa(n),typeof c=="string"?Pa(c):c)}else this.browser=null;if(this.bin=new Map,typeof e.bin=="string")e.bin.trim()===""?s.push(new Error("Invalid bin field")):this.name!==null?this.bin.set(this.name.name,Pa(e.bin)):s.push(new Error("String bin field, but no attached package name"));else if(typeof e.bin=="object"&&e.bin!==null)for(let[n,c]of Object.entries(e.bin)){if(typeof c!="string"||c.trim()===""){s.push(new Error(`Invalid bin definition for '${n}'`));continue}let f=Da(n);this.bin.set(f.name,Pa(c))}if(this.scripts=new Map,typeof e.scripts=="object"&&e.scripts!==null)for(let[n,c]of Object.entries(e.scripts)){if(typeof c!="string"){s.push(new Error(`Invalid script definition for '${n}'`));continue}this.scripts.set(n,c)}if(this.dependencies=new Map,typeof e.dependencies=="object"&&e.dependencies!==null)for(let[n,c]of Object.entries(e.dependencies)){if(typeof c!="string"){s.push(new Error(`Invalid dependency range for '${n}'`));continue}let f;try{f=Da(n)}catch{s.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}let p=On(f,c);this.dependencies.set(p.identHash,p)}if(this.devDependencies=new Map,typeof e.devDependencies=="object"&&e.devDependencies!==null)for(let[n,c]of Object.entries(e.devDependencies)){if(typeof c!="string"){s.push(new Error(`Invalid dependency range for '${n}'`));continue}let f;try{f=Da(n)}catch{s.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}let p=On(f,c);this.devDependencies.set(p.identHash,p)}if(this.peerDependencies=new Map,typeof e.peerDependencies=="object"&&e.peerDependencies!==null)for(let[n,c]of Object.entries(e.peerDependencies)){let f;try{f=Da(n)}catch{s.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}(typeof c!="string"||!c.startsWith(yi.protocol)&&!ul(c))&&(s.push(new Error(`Invalid dependency range for '${n}'`)),c="*");let p=On(f,c);this.peerDependencies.set(p.identHash,p)}typeof e.workspaces=="object"&&e.workspaces!==null&&e.workspaces.nohoist&&s.push(new Error("'nohoist' is deprecated, please use 'installConfig.hoistingLimits' instead"));let a=Array.isArray(e.workspaces)?e.workspaces:typeof e.workspaces=="object"&&e.workspaces!==null&&Array.isArray(e.workspaces.packages)?e.workspaces.packages:[];this.workspaceDefinitions=[];for(let n of a){if(typeof n!="string"){s.push(new Error(`Invalid workspace definition for '${n}'`));continue}this.workspaceDefinitions.push({pattern:n})}if(this.dependenciesMeta=new Map,typeof e.dependenciesMeta=="object"&&e.dependenciesMeta!==null)for(let[n,c]of Object.entries(e.dependenciesMeta)){if(typeof c!="object"||c===null){s.push(new Error(`Invalid meta field for '${n}`));continue}let f=C0(n),p=this.ensureDependencyMeta(f),h=RQ(c.built,{yamlCompatibilityMode:r});if(h===null){s.push(new Error(`Invalid built meta field for '${n}'`));continue}let E=RQ(c.optional,{yamlCompatibilityMode:r});if(E===null){s.push(new Error(`Invalid optional meta field for '${n}'`));continue}let C=RQ(c.unplugged,{yamlCompatibilityMode:r});if(C===null){s.push(new Error(`Invalid unplugged meta field for '${n}'`));continue}Object.assign(p,{built:h,optional:E,unplugged:C})}if(this.peerDependenciesMeta=new Map,typeof e.peerDependenciesMeta=="object"&&e.peerDependenciesMeta!==null)for(let[n,c]of Object.entries(e.peerDependenciesMeta)){if(typeof c!="object"||c===null){s.push(new Error(`Invalid meta field for '${n}'`));continue}let f=C0(n),p=this.ensurePeerDependencyMeta(f),h=RQ(c.optional,{yamlCompatibilityMode:r});if(h===null){s.push(new Error(`Invalid optional meta field for '${n}'`));continue}Object.assign(p,{optional:h})}if(this.resolutions=[],typeof e.resolutions=="object"&&e.resolutions!==null)for(let[n,c]of Object.entries(e.resolutions)){if(typeof c!="string"){s.push(new Error(`Invalid resolution entry for '${n}'`));continue}try{this.resolutions.push({pattern:bx(n),reference:c})}catch(f){s.push(f);continue}}if(Array.isArray(e.files)){this.files=new Set;for(let n of e.files){if(typeof n!="string"){s.push(new Error(`Invalid files entry for '${n}'`));continue}this.files.add(n)}}else this.files=null;if(typeof e.publishConfig=="object"&&e.publishConfig!==null){if(this.publishConfig={},typeof e.publishConfig.access=="string"&&(this.publishConfig.access=e.publishConfig.access),typeof e.publishConfig.main=="string"&&(this.publishConfig.main=Pa(e.publishConfig.main)),typeof e.publishConfig.module=="string"&&(this.publishConfig.module=Pa(e.publishConfig.module)),e.publishConfig.browser!=null)if(typeof e.publishConfig.browser=="string")this.publishConfig.browser=Pa(e.publishConfig.browser);else{this.publishConfig.browser=new Map;for(let[n,c]of Object.entries(e.publishConfig.browser))this.publishConfig.browser.set(Pa(n),typeof c=="string"?Pa(c):c)}if(typeof e.publishConfig.registry=="string"&&(this.publishConfig.registry=e.publishConfig.registry),typeof e.publishConfig.bin=="string")this.name!==null?this.publishConfig.bin=new Map([[this.name.name,Pa(e.publishConfig.bin)]]):s.push(new Error("String bin field, but no attached package name"));else if(typeof e.publishConfig.bin=="object"&&e.publishConfig.bin!==null){this.publishConfig.bin=new Map;for(let[n,c]of Object.entries(e.publishConfig.bin)){if(typeof c!="string"){s.push(new Error(`Invalid bin definition for '${n}'`));continue}this.publishConfig.bin.set(n,Pa(c))}}if(Array.isArray(e.publishConfig.executableFiles)){this.publishConfig.executableFiles=new Set;for(let n of e.publishConfig.executableFiles){if(typeof n!="string"){s.push(new Error("Invalid executable file definition"));continue}this.publishConfig.executableFiles.add(Pa(n))}}}else this.publishConfig=null;if(typeof e.installConfig=="object"&&e.installConfig!==null){this.installConfig={};for(let n of Object.keys(e.installConfig))n==="hoistingLimits"?typeof e.installConfig.hoistingLimits=="string"?this.installConfig.hoistingLimits=e.installConfig.hoistingLimits:s.push(new Error("Invalid hoisting limits definition")):n=="selfReferences"?typeof e.installConfig.selfReferences=="boolean"?this.installConfig.selfReferences=e.installConfig.selfReferences:s.push(new Error("Invalid selfReferences definition, must be a boolean value")):s.push(new Error(`Unrecognized installConfig key: ${n}`))}else this.installConfig=null;if(typeof e.optionalDependencies=="object"&&e.optionalDependencies!==null)for(let[n,c]of Object.entries(e.optionalDependencies)){if(typeof c!="string"){s.push(new Error(`Invalid dependency range for '${n}'`));continue}let f;try{f=Da(n)}catch{s.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}let p=On(f,c);this.dependencies.set(p.identHash,p);let h=On(f,"unknown"),E=this.ensureDependencyMeta(h);Object.assign(E,{optional:!0})}typeof e.preferUnplugged=="boolean"?this.preferUnplugged=e.preferUnplugged:this.preferUnplugged=null,this.errors=s}getForScope(e){switch(e){case"dependencies":return this.dependencies;case"devDependencies":return this.devDependencies;case"peerDependencies":return this.peerDependencies;default:throw new Error(`Unsupported value ("${e}")`)}}hasConsumerDependency(e){return!!(this.dependencies.has(e.identHash)||this.peerDependencies.has(e.identHash))}hasHardDependency(e){return!!(this.dependencies.has(e.identHash)||this.devDependencies.has(e.identHash))}hasSoftDependency(e){return!!this.peerDependencies.has(e.identHash)}hasDependency(e){return!!(this.hasHardDependency(e)||this.hasSoftDependency(e))}getConditions(){let e=[];return this.os&&this.os.length>0&&e.push(eH("os",this.os)),this.cpu&&this.cpu.length>0&&e.push(eH("cpu",this.cpu)),this.libc&&this.libc.length>0&&e.push(eH("libc",this.libc)),e.length>0?e.join(" & "):null}ensureDependencyMeta(e){if(e.range!=="unknown"&&!whe.default.valid(e.range))throw new Error(`Invalid meta field range for '${ll(e)}'`);let r=cn(e),s=e.range!=="unknown"?e.range:null,a=this.dependenciesMeta.get(r);a||this.dependenciesMeta.set(r,a=new Map);let n=a.get(s);return n||a.set(s,n={}),n}ensurePeerDependencyMeta(e){if(e.range!=="unknown")throw new Error(`Invalid meta field range for '${ll(e)}'`);let r=cn(e),s=this.peerDependenciesMeta.get(r);return s||this.peerDependenciesMeta.set(r,s={}),s}setRawField(e,r,{after:s=[]}={}){let a=new Set(s.filter(n=>Object.hasOwn(this.raw,n)));if(a.size===0||Object.hasOwn(this.raw,e))this.raw[e]=r;else{let n=this.raw,c=this.raw={},f=!1;for(let p of Object.keys(n))c[p]=n[p],f||(a.delete(p),a.size===0&&(c[e]=r,f=!0))}}exportTo(e,{compatibilityMode:r=!0}={}){if(Object.assign(e,this.raw),this.name!==null?e.name=cn(this.name):delete e.name,this.version!==null?e.version=this.version:delete e.version,this.os!==null?e.os=this.os:delete e.os,this.cpu!==null?e.cpu=this.cpu:delete e.cpu,this.type!==null?e.type=this.type:delete e.type,this.packageManager!==null?e.packageManager=this.packageManager:delete e.packageManager,this.private?e.private=!0:delete e.private,this.license!==null?e.license=this.license:delete e.license,this.languageName!==null?e.languageName=this.languageName:delete e.languageName,this.main!==null?e.main=this.main:delete e.main,this.module!==null?e.module=this.module:delete e.module,this.browser!==null){let n=this.browser;typeof n=="string"?e.browser=n:n instanceof Map&&(e.browser=Object.assign({},...Array.from(n.keys()).sort().map(c=>({[c]:n.get(c)}))))}else delete e.browser;this.bin.size===1&&this.name!==null&&this.bin.has(this.name.name)?e.bin=this.bin.get(this.name.name):this.bin.size>0?e.bin=Object.assign({},...Array.from(this.bin.keys()).sort().map(n=>({[n]:this.bin.get(n)}))):delete e.bin,this.workspaceDefinitions.length>0?this.raw.workspaces&&!Array.isArray(this.raw.workspaces)?e.workspaces={...this.raw.workspaces,packages:this.workspaceDefinitions.map(({pattern:n})=>n)}:e.workspaces=this.workspaceDefinitions.map(({pattern:n})=>n):this.raw.workspaces&&!Array.isArray(this.raw.workspaces)&&Object.keys(this.raw.workspaces).length>0?e.workspaces=this.raw.workspaces:delete e.workspaces;let s=[],a=[];for(let n of this.dependencies.values()){let c=this.dependenciesMeta.get(cn(n)),f=!1;if(r&&c){let p=c.get(null);p&&p.optional&&(f=!0)}f?a.push(n):s.push(n)}s.length>0?e.dependencies=Object.assign({},...sI(s).map(n=>({[cn(n)]:n.range}))):delete e.dependencies,a.length>0?e.optionalDependencies=Object.assign({},...sI(a).map(n=>({[cn(n)]:n.range}))):delete e.optionalDependencies,this.devDependencies.size>0?e.devDependencies=Object.assign({},...sI(this.devDependencies.values()).map(n=>({[cn(n)]:n.range}))):delete e.devDependencies,this.peerDependencies.size>0?e.peerDependencies=Object.assign({},...sI(this.peerDependencies.values()).map(n=>({[cn(n)]:n.range}))):delete e.peerDependencies,e.dependenciesMeta={};for(let[n,c]of Ws(this.dependenciesMeta.entries(),([f,p])=>f))for(let[f,p]of Ws(c.entries(),([h,E])=>h!==null?`0${h}`:"1")){let h=f!==null?ll(On(Da(n),f)):n,E={...p};r&&f===null&&delete E.optional,Object.keys(E).length!==0&&(e.dependenciesMeta[h]=E)}if(Object.keys(e.dependenciesMeta).length===0&&delete e.dependenciesMeta,this.peerDependenciesMeta.size>0?e.peerDependenciesMeta=Object.assign({},...Ws(this.peerDependenciesMeta.entries(),([n,c])=>n).map(([n,c])=>({[n]:c}))):delete e.peerDependenciesMeta,this.resolutions.length>0?e.resolutions=Object.assign({},...this.resolutions.map(({pattern:n,reference:c})=>({[Px(n)]:c}))):delete e.resolutions,this.files!==null?e.files=Array.from(this.files):delete e.files,this.preferUnplugged!==null?e.preferUnplugged=this.preferUnplugged:delete e.preferUnplugged,this.scripts!==null&&this.scripts.size>0){e.scripts??={};for(let n of Object.keys(e.scripts))this.scripts.has(n)||delete e.scripts[n];for(let[n,c]of this.scripts.entries())e.scripts[n]=c}else delete e.scripts;return e}}});var vhe=L((WJt,Bhe)=>{var uht=Pc(),fht=function(){return uht.Date.now()};Bhe.exports=fht});var Dhe=L((YJt,She)=>{var Aht=/\s/;function pht(t){for(var e=t.length;e--&&Aht.test(t.charAt(e)););return e}She.exports=pht});var Phe=L((VJt,bhe)=>{var hht=Dhe(),ght=/^\s+/;function dht(t){return t&&t.slice(0,hht(t)+1).replace(ght,"")}bhe.exports=dht});var aI=L((KJt,xhe)=>{var mht=Vd(),yht=zf(),Eht="[object Symbol]";function Iht(t){return typeof t=="symbol"||yht(t)&&mht(t)==Eht}xhe.exports=Iht});var Rhe=L((JJt,The)=>{var Cht=Phe(),khe=Wl(),wht=aI(),Qhe=NaN,Bht=/^[-+]0x[0-9a-f]+$/i,vht=/^0b[01]+$/i,Sht=/^0o[0-7]+$/i,Dht=parseInt;function bht(t){if(typeof t=="number")return t;if(wht(t))return Qhe;if(khe(t)){var e=typeof t.valueOf=="function"?t.valueOf():t;t=khe(e)?e+"":e}if(typeof t!="string")return t===0?t:+t;t=Cht(t);var r=vht.test(t);return r||Sht.test(t)?Dht(t.slice(2),r?2:8):Bht.test(t)?Qhe:+t}The.exports=bht});var Ohe=L((zJt,Nhe)=>{var Pht=Wl(),tH=vhe(),Fhe=Rhe(),xht="Expected a function",kht=Math.max,Qht=Math.min;function Tht(t,e,r){var s,a,n,c,f,p,h=0,E=!1,C=!1,S=!0;if(typeof t!="function")throw new TypeError(xht);e=Fhe(e)||0,Pht(r)&&(E=!!r.leading,C="maxWait"in r,n=C?kht(Fhe(r.maxWait)||0,e):n,S="trailing"in r?!!r.trailing:S);function P(ce){var me=s,pe=a;return s=a=void 0,h=ce,c=t.apply(pe,me),c}function I(ce){return h=ce,f=setTimeout(U,e),E?P(ce):c}function R(ce){var me=ce-p,pe=ce-h,Be=e-me;return C?Qht(Be,n-pe):Be}function N(ce){var me=ce-p,pe=ce-h;return p===void 0||me>=e||me<0||C&&pe>=n}function U(){var ce=tH();if(N(ce))return W(ce);f=setTimeout(U,R(ce))}function W(ce){return f=void 0,S&&s?P(ce):(s=a=void 0,c)}function te(){f!==void 0&&clearTimeout(f),h=0,s=p=a=f=void 0}function ie(){return f===void 0?c:W(tH())}function Ae(){var ce=tH(),me=N(ce);if(s=arguments,a=this,p=ce,me){if(f===void 0)return I(p);if(C)return clearTimeout(f),f=setTimeout(U,e),P(p)}return f===void 0&&(f=setTimeout(U,e)),c}return Ae.cancel=te,Ae.flush=ie,Ae}Nhe.exports=Tht});var rH=L((ZJt,Lhe)=>{var Rht=Ohe(),Fht=Wl(),Nht="Expected a function";function Oht(t,e,r){var s=!0,a=!0;if(typeof t!="function")throw new TypeError(Nht);return Fht(r)&&(s="leading"in r?!!r.leading:s,a="trailing"in r?!!r.trailing:a),Rht(t,e,{leading:s,maxWait:e,trailing:a})}Lhe.exports=Oht});function Mht(t){return typeof t.reportCode<"u"}var Mhe,_he,Uhe,Lht,Yt,ho,Fc=It(()=>{Mhe=et(rH()),_he=ye("stream"),Uhe=ye("string_decoder"),Lht=15,Yt=class extends Error{constructor(r,s,a){super(s);this.reportExtra=a;this.reportCode=r}};ho=class{constructor(){this.cacheHits=new Set;this.cacheMisses=new Set;this.reportedInfos=new Set;this.reportedWarnings=new Set;this.reportedErrors=new Set}getRecommendedLength(){return 180}reportCacheHit(e){this.cacheHits.add(e.locatorHash)}reportCacheMiss(e,r){this.cacheMisses.add(e.locatorHash)}static progressViaCounter(e){let r=0,s,a=new Promise(p=>{s=p}),n=p=>{let h=s;a=new Promise(E=>{s=E}),r=p,h()},c=(p=0)=>{n(r+1)},f=async function*(){for(;r{r=c}),a=(0,Mhe.default)(c=>{let f=r;s=new Promise(p=>{r=p}),e=c,f()},1e3/Lht),n=async function*(){for(;;)await s,yield{title:e}}();return{[Symbol.asyncIterator](){return n},hasProgress:!1,hasTitle:!0,setTitle:a}}async startProgressPromise(e,r){let s=this.reportProgress(e);try{return await r(e)}finally{s.stop()}}startProgressSync(e,r){let s=this.reportProgress(e);try{return r(e)}finally{s.stop()}}reportInfoOnce(e,r,s){let a=s&&s.key?s.key:r;this.reportedInfos.has(a)||(this.reportedInfos.add(a),this.reportInfo(e,r),s?.reportExtra?.(this))}reportWarningOnce(e,r,s){let a=s&&s.key?s.key:r;this.reportedWarnings.has(a)||(this.reportedWarnings.add(a),this.reportWarning(e,r),s?.reportExtra?.(this))}reportErrorOnce(e,r,s){let a=s&&s.key?s.key:r;this.reportedErrors.has(a)||(this.reportedErrors.add(a),this.reportError(e,r),s?.reportExtra?.(this))}reportExceptionOnce(e){Mht(e)?this.reportErrorOnce(e.reportCode,e.message,{key:e,reportExtra:e.reportExtra}):this.reportErrorOnce(1,e.stack||e.message,{key:e})}createStreamReporter(e=null){let r=new _he.PassThrough,s=new Uhe.StringDecoder,a="";return r.on("data",n=>{let c=s.write(n),f;do if(f=c.indexOf(` +`),f!==-1){let p=a+c.substring(0,f);c=c.substring(f+1),a="",e!==null?this.reportInfo(null,`${e} ${p}`):this.reportInfo(null,p)}while(f!==-1);a+=c}),r.on("end",()=>{let n=s.end();n!==""&&(e!==null?this.reportInfo(null,`${e} ${n}`):this.reportInfo(null,n))}),r}}});var lI,nH=It(()=>{Fc();Yo();lI=class{constructor(e){this.fetchers=e}supports(e,r){return!!this.tryFetcher(e,r)}getLocalPath(e,r){return this.getFetcher(e,r).getLocalPath(e,r)}async fetch(e,r){return await this.getFetcher(e,r).fetch(e,r)}tryFetcher(e,r){let s=this.fetchers.find(a=>a.supports(e,r));return s||null}getFetcher(e,r){let s=this.fetchers.find(a=>a.supports(e,r));if(!s)throw new Yt(11,`${Yr(r.project.configuration,e)} isn't supported by any available fetcher`);return s}}});var rm,iH=It(()=>{Yo();rm=class{constructor(e){this.resolvers=e.filter(r=>r)}supportsDescriptor(e,r){return!!this.tryResolverByDescriptor(e,r)}supportsLocator(e,r){return!!this.tryResolverByLocator(e,r)}shouldPersistResolution(e,r){return this.getResolverByLocator(e,r).shouldPersistResolution(e,r)}bindDescriptor(e,r,s){return this.getResolverByDescriptor(e,s).bindDescriptor(e,r,s)}getResolutionDependencies(e,r){return this.getResolverByDescriptor(e,r).getResolutionDependencies(e,r)}async getCandidates(e,r,s){return await this.getResolverByDescriptor(e,s).getCandidates(e,r,s)}async getSatisfying(e,r,s,a){return this.getResolverByDescriptor(e,a).getSatisfying(e,r,s,a)}async resolve(e,r){return await this.getResolverByLocator(e,r).resolve(e,r)}tryResolverByDescriptor(e,r){let s=this.resolvers.find(a=>a.supportsDescriptor(e,r));return s||null}getResolverByDescriptor(e,r){let s=this.resolvers.find(a=>a.supportsDescriptor(e,r));if(!s)throw new Error(`${ri(r.project.configuration,e)} isn't supported by any available resolver`);return s}tryResolverByLocator(e,r){let s=this.resolvers.find(a=>a.supportsLocator(e,r));return s||null}getResolverByLocator(e,r){let s=this.resolvers.find(a=>a.supportsLocator(e,r));if(!s)throw new Error(`${Yr(r.project.configuration,e)} isn't supported by any available resolver`);return s}}});var cI,sH=It(()=>{bt();Yo();cI=class{supports(e){return!!e.reference.startsWith("virtual:")}getLocalPath(e,r){let s=e.reference.indexOf("#");if(s===-1)throw new Error("Invalid virtual package reference");let a=e.reference.slice(s+1),n=Ys(e,a);return r.fetcher.getLocalPath(n,r)}async fetch(e,r){let s=e.reference.indexOf("#");if(s===-1)throw new Error("Invalid virtual package reference");let a=e.reference.slice(s+1),n=Ys(e,a),c=await r.fetcher.fetch(n,r);return await this.ensureVirtualLink(e,c,r)}getLocatorFilename(e){return nI(e)}async ensureVirtualLink(e,r,s){let a=r.packageFs.getRealPath(),n=s.project.configuration.get("virtualFolder"),c=this.getLocatorFilename(e),f=fo.makeVirtualPath(n,c,a),p=new Hf(f,{baseFs:r.packageFs,pathUtils:K});return{...r,packageFs:p}}}});var FQ,Hhe=It(()=>{FQ=class t{static{this.protocol="virtual:"}static isVirtualDescriptor(e){return!!e.range.startsWith(t.protocol)}static isVirtualLocator(e){return!!e.reference.startsWith(t.protocol)}supportsDescriptor(e,r){return t.isVirtualDescriptor(e)}supportsLocator(e,r){return t.isVirtualLocator(e)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,s){throw new Error('Assertion failed: calling "bindDescriptor" on a virtual descriptor is unsupported')}getResolutionDependencies(e,r){throw new Error('Assertion failed: calling "getResolutionDependencies" on a virtual descriptor is unsupported')}async getCandidates(e,r,s){throw new Error('Assertion failed: calling "getCandidates" on a virtual descriptor is unsupported')}async getSatisfying(e,r,s,a){throw new Error('Assertion failed: calling "getSatisfying" on a virtual descriptor is unsupported')}async resolve(e,r){throw new Error('Assertion failed: calling "resolve" on a virtual locator is unsupported')}}});var uI,oH=It(()=>{bt();tm();uI=class{supports(e){return!!e.reference.startsWith(yi.protocol)}getLocalPath(e,r){return this.getWorkspace(e,r).cwd}async fetch(e,r){let s=this.getWorkspace(e,r).cwd;return{packageFs:new Sn(s),prefixPath:vt.dot,localPath:s}}getWorkspace(e,r){return r.project.getWorkspaceByCwd(e.reference.slice(yi.protocol.length))}}});function iv(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function jhe(t){return typeof t>"u"?3:iv(t)?0:Array.isArray(t)?1:2}function cH(t,e){return Object.hasOwn(t,e)}function Uht(t){return iv(t)&&cH(t,"onConflict")&&typeof t.onConflict=="string"}function Hht(t){if(typeof t>"u")return{onConflict:"default",value:t};if(!Uht(t))return{onConflict:"default",value:t};if(cH(t,"value"))return t;let{onConflict:e,...r}=t;return{onConflict:e,value:r}}function qhe(t,e){let r=iv(t)&&cH(t,e)?t[e]:void 0;return Hht(r)}function fI(t,e){return[t,e,Ghe]}function uH(t){return Array.isArray(t)?t[2]===Ghe:!1}function aH(t,e){if(iv(t)){let r={};for(let s of Object.keys(t))r[s]=aH(t[s],e);return fI(e,r)}return Array.isArray(t)?fI(e,t.map(r=>aH(r,e))):fI(e,t)}function lH(t,e,r,s,a){let n,c=[],f=a,p=0;for(let E=a-1;E>=s;--E){let[C,S]=t[E],{onConflict:P,value:I}=qhe(S,r),R=jhe(I);if(R!==3){if(n??=R,R!==n||P==="hardReset"){p=f;break}if(R===2)return fI(C,I);if(c.unshift([C,I]),P==="reset"){p=E;break}P==="extend"&&E===s&&(s=0),f=E}}if(typeof n>"u")return null;let h=c.map(([E])=>E).join(", ");switch(n){case 1:return fI(h,new Array().concat(...c.map(([E,C])=>C.map(S=>aH(S,E)))));case 0:{let E=Object.assign({},...c.map(([,R])=>R)),C=Object.keys(E),S={},P=t.map(([R,N])=>[R,qhe(N,r).value]),I=_ht(P,([R,N])=>{let U=jhe(N);return U!==0&&U!==3});if(I!==-1){let R=P.slice(I+1);for(let N of C)S[N]=lH(R,e,N,0,R.length)}else for(let R of C)S[R]=lH(P,e,R,p,P.length);return fI(h,S)}default:throw new Error("Assertion failed: Non-extendable value type")}}function Whe(t){return lH(t.map(([e,r])=>[e,{".":r}]),[],".",0,t.length)}function sv(t){return uH(t)?t[1]:t}function NQ(t){let e=uH(t)?t[1]:t;if(Array.isArray(e))return e.map(r=>NQ(r));if(iv(e)){let r={};for(let[s,a]of Object.entries(e))r[s]=NQ(a);return r}return e}function fH(t){return uH(t)?t[0]:null}var _ht,Ghe,Yhe=It(()=>{_ht=(t,e,r)=>{let s=[...t];return s.reverse(),s.findIndex(e,r)};Ghe=Symbol()});var OQ={};Vt(OQ,{getDefaultGlobalFolder:()=>pH,getHomeFolder:()=>AI,isFolderInside:()=>hH});function pH(){if(process.platform==="win32"){let t=ue.toPortablePath(process.env.LOCALAPPDATA||ue.join((0,AH.homedir)(),"AppData","Local"));return K.resolve(t,"Yarn/Berry")}if(process.env.XDG_DATA_HOME){let t=ue.toPortablePath(process.env.XDG_DATA_HOME);return K.resolve(t,"yarn/berry")}return K.resolve(AI(),".yarn/berry")}function AI(){return ue.toPortablePath((0,AH.homedir)()||"/usr/local/share")}function hH(t,e){let r=K.relative(e,t);return r&&!r.startsWith("..")&&!K.isAbsolute(r)}var AH,LQ=It(()=>{bt();AH=ye("os")});var zhe=L(pI=>{"use strict";var uzt=ye("net"),qht=ye("tls"),gH=ye("http"),Vhe=ye("https"),Ght=ye("events"),fzt=ye("assert"),Wht=ye("util");pI.httpOverHttp=Yht;pI.httpsOverHttp=Vht;pI.httpOverHttps=Kht;pI.httpsOverHttps=Jht;function Yht(t){var e=new Op(t);return e.request=gH.request,e}function Vht(t){var e=new Op(t);return e.request=gH.request,e.createSocket=Khe,e.defaultPort=443,e}function Kht(t){var e=new Op(t);return e.request=Vhe.request,e}function Jht(t){var e=new Op(t);return e.request=Vhe.request,e.createSocket=Khe,e.defaultPort=443,e}function Op(t){var e=this;e.options=t||{},e.proxyOptions=e.options.proxy||{},e.maxSockets=e.options.maxSockets||gH.Agent.defaultMaxSockets,e.requests=[],e.sockets=[],e.on("free",function(s,a,n,c){for(var f=Jhe(a,n,c),p=0,h=e.requests.length;p=this.maxSockets){n.requests.push(c);return}n.createSocket(c,function(f){f.on("free",p),f.on("close",h),f.on("agentRemove",h),e.onSocket(f);function p(){n.emit("free",f,c)}function h(E){n.removeSocket(f),f.removeListener("free",p),f.removeListener("close",h),f.removeListener("agentRemove",h)}})};Op.prototype.createSocket=function(e,r){var s=this,a={};s.sockets.push(a);var n=dH({},s.proxyOptions,{method:"CONNECT",path:e.host+":"+e.port,agent:!1,headers:{host:e.host+":"+e.port}});e.localAddress&&(n.localAddress=e.localAddress),n.proxyAuth&&(n.headers=n.headers||{},n.headers["Proxy-Authorization"]="Basic "+new Buffer(n.proxyAuth).toString("base64")),w0("making CONNECT request");var c=s.request(n);c.useChunkedEncodingByDefault=!1,c.once("response",f),c.once("upgrade",p),c.once("connect",h),c.once("error",E),c.end();function f(C){C.upgrade=!0}function p(C,S,P){process.nextTick(function(){h(C,S,P)})}function h(C,S,P){if(c.removeAllListeners(),S.removeAllListeners(),C.statusCode!==200){w0("tunneling socket could not be established, statusCode=%d",C.statusCode),S.destroy();var I=new Error("tunneling socket could not be established, statusCode="+C.statusCode);I.code="ECONNRESET",e.request.emit("error",I),s.removeSocket(a);return}if(P.length>0){w0("got illegal response body from proxy"),S.destroy();var I=new Error("got illegal response body from proxy");I.code="ECONNRESET",e.request.emit("error",I),s.removeSocket(a);return}return w0("tunneling connection has established"),s.sockets[s.sockets.indexOf(a)]=S,r(S)}function E(C){c.removeAllListeners(),w0(`tunneling socket could not be established, cause=%s +`,C.message,C.stack);var S=new Error("tunneling socket could not be established, cause="+C.message);S.code="ECONNRESET",e.request.emit("error",S),s.removeSocket(a)}};Op.prototype.removeSocket=function(e){var r=this.sockets.indexOf(e);if(r!==-1){this.sockets.splice(r,1);var s=this.requests.shift();s&&this.createSocket(s,function(a){s.request.onSocket(a)})}};function Khe(t,e){var r=this;Op.prototype.createSocket.call(r,t,function(s){var a=t.request.getHeader("host"),n=dH({},r.options,{socket:s,servername:a?a.replace(/:.*$/,""):t.host}),c=qht.connect(0,n);r.sockets[r.sockets.indexOf(s)]=c,e(c)})}function Jhe(t,e,r){return typeof t=="string"?{host:t,port:e,localAddress:r}:t}function dH(t){for(var e=1,r=arguments.length;e{Zhe.exports=zhe()});var Mp=L((Lp,MQ)=>{"use strict";Object.defineProperty(Lp,"__esModule",{value:!0});var $he=["Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigInt64Array","BigUint64Array"];function zht(t){return $he.includes(t)}var Zht=["Function","Generator","AsyncGenerator","GeneratorFunction","AsyncGeneratorFunction","AsyncFunction","Observable","Array","Buffer","Blob","Object","RegExp","Date","Error","Map","Set","WeakMap","WeakSet","ArrayBuffer","SharedArrayBuffer","DataView","Promise","URL","FormData","URLSearchParams","HTMLElement",...$he];function Xht(t){return Zht.includes(t)}var $ht=["null","undefined","string","number","bigint","boolean","symbol"];function e0t(t){return $ht.includes(t)}function hI(t){return e=>typeof e===t}var{toString:e0e}=Object.prototype,ov=t=>{let e=e0e.call(t).slice(8,-1);if(/HTML\w+Element/.test(e)&&be.domElement(t))return"HTMLElement";if(Xht(e))return e},Ai=t=>e=>ov(e)===t;function be(t){if(t===null)return"null";switch(typeof t){case"undefined":return"undefined";case"string":return"string";case"number":return"number";case"boolean":return"boolean";case"function":return"Function";case"bigint":return"bigint";case"symbol":return"symbol";default:}if(be.observable(t))return"Observable";if(be.array(t))return"Array";if(be.buffer(t))return"Buffer";let e=ov(t);if(e)return e;if(t instanceof String||t instanceof Boolean||t instanceof Number)throw new TypeError("Please don't use object wrappers for primitive types");return"Object"}be.undefined=hI("undefined");be.string=hI("string");var t0t=hI("number");be.number=t=>t0t(t)&&!be.nan(t);be.bigint=hI("bigint");be.function_=hI("function");be.null_=t=>t===null;be.class_=t=>be.function_(t)&&t.toString().startsWith("class ");be.boolean=t=>t===!0||t===!1;be.symbol=hI("symbol");be.numericString=t=>be.string(t)&&!be.emptyStringOrWhitespace(t)&&!Number.isNaN(Number(t));be.array=(t,e)=>Array.isArray(t)?be.function_(e)?t.every(e):!0:!1;be.buffer=t=>{var e,r,s,a;return(a=(s=(r=(e=t)===null||e===void 0?void 0:e.constructor)===null||r===void 0?void 0:r.isBuffer)===null||s===void 0?void 0:s.call(r,t))!==null&&a!==void 0?a:!1};be.blob=t=>Ai("Blob")(t);be.nullOrUndefined=t=>be.null_(t)||be.undefined(t);be.object=t=>!be.null_(t)&&(typeof t=="object"||be.function_(t));be.iterable=t=>{var e;return be.function_((e=t)===null||e===void 0?void 0:e[Symbol.iterator])};be.asyncIterable=t=>{var e;return be.function_((e=t)===null||e===void 0?void 0:e[Symbol.asyncIterator])};be.generator=t=>{var e,r;return be.iterable(t)&&be.function_((e=t)===null||e===void 0?void 0:e.next)&&be.function_((r=t)===null||r===void 0?void 0:r.throw)};be.asyncGenerator=t=>be.asyncIterable(t)&&be.function_(t.next)&&be.function_(t.throw);be.nativePromise=t=>Ai("Promise")(t);var r0t=t=>{var e,r;return be.function_((e=t)===null||e===void 0?void 0:e.then)&&be.function_((r=t)===null||r===void 0?void 0:r.catch)};be.promise=t=>be.nativePromise(t)||r0t(t);be.generatorFunction=Ai("GeneratorFunction");be.asyncGeneratorFunction=t=>ov(t)==="AsyncGeneratorFunction";be.asyncFunction=t=>ov(t)==="AsyncFunction";be.boundFunction=t=>be.function_(t)&&!t.hasOwnProperty("prototype");be.regExp=Ai("RegExp");be.date=Ai("Date");be.error=Ai("Error");be.map=t=>Ai("Map")(t);be.set=t=>Ai("Set")(t);be.weakMap=t=>Ai("WeakMap")(t);be.weakSet=t=>Ai("WeakSet")(t);be.int8Array=Ai("Int8Array");be.uint8Array=Ai("Uint8Array");be.uint8ClampedArray=Ai("Uint8ClampedArray");be.int16Array=Ai("Int16Array");be.uint16Array=Ai("Uint16Array");be.int32Array=Ai("Int32Array");be.uint32Array=Ai("Uint32Array");be.float32Array=Ai("Float32Array");be.float64Array=Ai("Float64Array");be.bigInt64Array=Ai("BigInt64Array");be.bigUint64Array=Ai("BigUint64Array");be.arrayBuffer=Ai("ArrayBuffer");be.sharedArrayBuffer=Ai("SharedArrayBuffer");be.dataView=Ai("DataView");be.enumCase=(t,e)=>Object.values(e).includes(t);be.directInstanceOf=(t,e)=>Object.getPrototypeOf(t)===e.prototype;be.urlInstance=t=>Ai("URL")(t);be.urlString=t=>{if(!be.string(t))return!1;try{return new URL(t),!0}catch{return!1}};be.truthy=t=>!!t;be.falsy=t=>!t;be.nan=t=>Number.isNaN(t);be.primitive=t=>be.null_(t)||e0t(typeof t);be.integer=t=>Number.isInteger(t);be.safeInteger=t=>Number.isSafeInteger(t);be.plainObject=t=>{if(e0e.call(t)!=="[object Object]")return!1;let e=Object.getPrototypeOf(t);return e===null||e===Object.getPrototypeOf({})};be.typedArray=t=>zht(ov(t));var n0t=t=>be.safeInteger(t)&&t>=0;be.arrayLike=t=>!be.nullOrUndefined(t)&&!be.function_(t)&&n0t(t.length);be.inRange=(t,e)=>{if(be.number(e))return t>=Math.min(0,e)&&t<=Math.max(e,0);if(be.array(e)&&e.length===2)return t>=Math.min(...e)&&t<=Math.max(...e);throw new TypeError(`Invalid range: ${JSON.stringify(e)}`)};var i0t=1,s0t=["innerHTML","ownerDocument","style","attributes","nodeValue"];be.domElement=t=>be.object(t)&&t.nodeType===i0t&&be.string(t.nodeName)&&!be.plainObject(t)&&s0t.every(e=>e in t);be.observable=t=>{var e,r,s,a;return t?t===((r=(e=t)[Symbol.observable])===null||r===void 0?void 0:r.call(e))||t===((a=(s=t)["@@observable"])===null||a===void 0?void 0:a.call(s)):!1};be.nodeStream=t=>be.object(t)&&be.function_(t.pipe)&&!be.observable(t);be.infinite=t=>t===1/0||t===-1/0;var t0e=t=>e=>be.integer(e)&&Math.abs(e%2)===t;be.evenInteger=t0e(0);be.oddInteger=t0e(1);be.emptyArray=t=>be.array(t)&&t.length===0;be.nonEmptyArray=t=>be.array(t)&&t.length>0;be.emptyString=t=>be.string(t)&&t.length===0;var o0t=t=>be.string(t)&&!/\S/.test(t);be.emptyStringOrWhitespace=t=>be.emptyString(t)||o0t(t);be.nonEmptyString=t=>be.string(t)&&t.length>0;be.nonEmptyStringAndNotWhitespace=t=>be.string(t)&&!be.emptyStringOrWhitespace(t);be.emptyObject=t=>be.object(t)&&!be.map(t)&&!be.set(t)&&Object.keys(t).length===0;be.nonEmptyObject=t=>be.object(t)&&!be.map(t)&&!be.set(t)&&Object.keys(t).length>0;be.emptySet=t=>be.set(t)&&t.size===0;be.nonEmptySet=t=>be.set(t)&&t.size>0;be.emptyMap=t=>be.map(t)&&t.size===0;be.nonEmptyMap=t=>be.map(t)&&t.size>0;be.propertyKey=t=>be.any([be.string,be.number,be.symbol],t);be.formData=t=>Ai("FormData")(t);be.urlSearchParams=t=>Ai("URLSearchParams")(t);var r0e=(t,e,r)=>{if(!be.function_(e))throw new TypeError(`Invalid predicate: ${JSON.stringify(e)}`);if(r.length===0)throw new TypeError("Invalid number of values");return t.call(r,e)};be.any=(t,...e)=>(be.array(t)?t:[t]).some(s=>r0e(Array.prototype.some,s,e));be.all=(t,...e)=>r0e(Array.prototype.every,t,e);var _t=(t,e,r,s={})=>{if(!t){let{multipleValues:a}=s,n=a?`received values of types ${[...new Set(r.map(c=>`\`${be(c)}\``))].join(", ")}`:`received value of type \`${be(r)}\``;throw new TypeError(`Expected value which is \`${e}\`, ${n}.`)}};Lp.assert={undefined:t=>_t(be.undefined(t),"undefined",t),string:t=>_t(be.string(t),"string",t),number:t=>_t(be.number(t),"number",t),bigint:t=>_t(be.bigint(t),"bigint",t),function_:t=>_t(be.function_(t),"Function",t),null_:t=>_t(be.null_(t),"null",t),class_:t=>_t(be.class_(t),"Class",t),boolean:t=>_t(be.boolean(t),"boolean",t),symbol:t=>_t(be.symbol(t),"symbol",t),numericString:t=>_t(be.numericString(t),"string with a number",t),array:(t,e)=>{_t(be.array(t),"Array",t),e&&t.forEach(e)},buffer:t=>_t(be.buffer(t),"Buffer",t),blob:t=>_t(be.blob(t),"Blob",t),nullOrUndefined:t=>_t(be.nullOrUndefined(t),"null or undefined",t),object:t=>_t(be.object(t),"Object",t),iterable:t=>_t(be.iterable(t),"Iterable",t),asyncIterable:t=>_t(be.asyncIterable(t),"AsyncIterable",t),generator:t=>_t(be.generator(t),"Generator",t),asyncGenerator:t=>_t(be.asyncGenerator(t),"AsyncGenerator",t),nativePromise:t=>_t(be.nativePromise(t),"native Promise",t),promise:t=>_t(be.promise(t),"Promise",t),generatorFunction:t=>_t(be.generatorFunction(t),"GeneratorFunction",t),asyncGeneratorFunction:t=>_t(be.asyncGeneratorFunction(t),"AsyncGeneratorFunction",t),asyncFunction:t=>_t(be.asyncFunction(t),"AsyncFunction",t),boundFunction:t=>_t(be.boundFunction(t),"Function",t),regExp:t=>_t(be.regExp(t),"RegExp",t),date:t=>_t(be.date(t),"Date",t),error:t=>_t(be.error(t),"Error",t),map:t=>_t(be.map(t),"Map",t),set:t=>_t(be.set(t),"Set",t),weakMap:t=>_t(be.weakMap(t),"WeakMap",t),weakSet:t=>_t(be.weakSet(t),"WeakSet",t),int8Array:t=>_t(be.int8Array(t),"Int8Array",t),uint8Array:t=>_t(be.uint8Array(t),"Uint8Array",t),uint8ClampedArray:t=>_t(be.uint8ClampedArray(t),"Uint8ClampedArray",t),int16Array:t=>_t(be.int16Array(t),"Int16Array",t),uint16Array:t=>_t(be.uint16Array(t),"Uint16Array",t),int32Array:t=>_t(be.int32Array(t),"Int32Array",t),uint32Array:t=>_t(be.uint32Array(t),"Uint32Array",t),float32Array:t=>_t(be.float32Array(t),"Float32Array",t),float64Array:t=>_t(be.float64Array(t),"Float64Array",t),bigInt64Array:t=>_t(be.bigInt64Array(t),"BigInt64Array",t),bigUint64Array:t=>_t(be.bigUint64Array(t),"BigUint64Array",t),arrayBuffer:t=>_t(be.arrayBuffer(t),"ArrayBuffer",t),sharedArrayBuffer:t=>_t(be.sharedArrayBuffer(t),"SharedArrayBuffer",t),dataView:t=>_t(be.dataView(t),"DataView",t),enumCase:(t,e)=>_t(be.enumCase(t,e),"EnumCase",t),urlInstance:t=>_t(be.urlInstance(t),"URL",t),urlString:t=>_t(be.urlString(t),"string with a URL",t),truthy:t=>_t(be.truthy(t),"truthy",t),falsy:t=>_t(be.falsy(t),"falsy",t),nan:t=>_t(be.nan(t),"NaN",t),primitive:t=>_t(be.primitive(t),"primitive",t),integer:t=>_t(be.integer(t),"integer",t),safeInteger:t=>_t(be.safeInteger(t),"integer",t),plainObject:t=>_t(be.plainObject(t),"plain object",t),typedArray:t=>_t(be.typedArray(t),"TypedArray",t),arrayLike:t=>_t(be.arrayLike(t),"array-like",t),domElement:t=>_t(be.domElement(t),"HTMLElement",t),observable:t=>_t(be.observable(t),"Observable",t),nodeStream:t=>_t(be.nodeStream(t),"Node.js Stream",t),infinite:t=>_t(be.infinite(t),"infinite number",t),emptyArray:t=>_t(be.emptyArray(t),"empty array",t),nonEmptyArray:t=>_t(be.nonEmptyArray(t),"non-empty array",t),emptyString:t=>_t(be.emptyString(t),"empty string",t),emptyStringOrWhitespace:t=>_t(be.emptyStringOrWhitespace(t),"empty string or whitespace",t),nonEmptyString:t=>_t(be.nonEmptyString(t),"non-empty string",t),nonEmptyStringAndNotWhitespace:t=>_t(be.nonEmptyStringAndNotWhitespace(t),"non-empty string and not whitespace",t),emptyObject:t=>_t(be.emptyObject(t),"empty object",t),nonEmptyObject:t=>_t(be.nonEmptyObject(t),"non-empty object",t),emptySet:t=>_t(be.emptySet(t),"empty set",t),nonEmptySet:t=>_t(be.nonEmptySet(t),"non-empty set",t),emptyMap:t=>_t(be.emptyMap(t),"empty map",t),nonEmptyMap:t=>_t(be.nonEmptyMap(t),"non-empty map",t),propertyKey:t=>_t(be.propertyKey(t),"PropertyKey",t),formData:t=>_t(be.formData(t),"FormData",t),urlSearchParams:t=>_t(be.urlSearchParams(t),"URLSearchParams",t),evenInteger:t=>_t(be.evenInteger(t),"even integer",t),oddInteger:t=>_t(be.oddInteger(t),"odd integer",t),directInstanceOf:(t,e)=>_t(be.directInstanceOf(t,e),"T",t),inRange:(t,e)=>_t(be.inRange(t,e),"in range",t),any:(t,...e)=>_t(be.any(t,...e),"predicate returns truthy for any value",e,{multipleValues:!0}),all:(t,...e)=>_t(be.all(t,...e),"predicate returns truthy for all values",e,{multipleValues:!0})};Object.defineProperties(be,{class:{value:be.class_},function:{value:be.function_},null:{value:be.null_}});Object.defineProperties(Lp.assert,{class:{value:Lp.assert.class_},function:{value:Lp.assert.function_},null:{value:Lp.assert.null_}});Lp.default=be;MQ.exports=be;MQ.exports.default=be;MQ.exports.assert=Lp.assert});var n0e=L((hzt,mH)=>{"use strict";var _Q=class extends Error{constructor(e){super(e||"Promise was canceled"),this.name="CancelError"}get isCanceled(){return!0}},UQ=class t{static fn(e){return(...r)=>new t((s,a,n)=>{r.push(n),e(...r).then(s,a)})}constructor(e){this._cancelHandlers=[],this._isPending=!0,this._isCanceled=!1,this._rejectOnCancel=!0,this._promise=new Promise((r,s)=>{this._reject=s;let a=f=>{this._isPending=!1,r(f)},n=f=>{this._isPending=!1,s(f)},c=f=>{if(!this._isPending)throw new Error("The `onCancel` handler was attached after the promise settled.");this._cancelHandlers.push(f)};return Object.defineProperties(c,{shouldReject:{get:()=>this._rejectOnCancel,set:f=>{this._rejectOnCancel=f}}}),e(a,n,c)})}then(e,r){return this._promise.then(e,r)}catch(e){return this._promise.catch(e)}finally(e){return this._promise.finally(e)}cancel(e){if(!(!this._isPending||this._isCanceled)){if(this._cancelHandlers.length>0)try{for(let r of this._cancelHandlers)r()}catch(r){this._reject(r)}this._isCanceled=!0,this._rejectOnCancel&&this._reject(new _Q(e))}}get isCanceled(){return this._isCanceled}};Object.setPrototypeOf(UQ.prototype,Promise.prototype);mH.exports=UQ;mH.exports.CancelError=_Q});var i0e=L((EH,IH)=>{"use strict";Object.defineProperty(EH,"__esModule",{value:!0});function a0t(t){return t.encrypted}var yH=(t,e)=>{let r;typeof e=="function"?r={connect:e}:r=e;let s=typeof r.connect=="function",a=typeof r.secureConnect=="function",n=typeof r.close=="function",c=()=>{s&&r.connect(),a0t(t)&&a&&(t.authorized?r.secureConnect():t.authorizationError||t.once("secureConnect",r.secureConnect)),n&&t.once("close",r.close)};t.writable&&!t.connecting?c():t.connecting?t.once("connect",c):t.destroyed&&n&&r.close(t._hadError)};EH.default=yH;IH.exports=yH;IH.exports.default=yH});var s0e=L((wH,BH)=>{"use strict";Object.defineProperty(wH,"__esModule",{value:!0});var l0t=i0e(),c0t=Number(process.versions.node.split(".")[0]),CH=t=>{let e={start:Date.now(),socket:void 0,lookup:void 0,connect:void 0,secureConnect:void 0,upload:void 0,response:void 0,end:void 0,error:void 0,abort:void 0,phases:{wait:void 0,dns:void 0,tcp:void 0,tls:void 0,request:void 0,firstByte:void 0,download:void 0,total:void 0}};t.timings=e;let r=c=>{let f=c.emit.bind(c);c.emit=(p,...h)=>(p==="error"&&(e.error=Date.now(),e.phases.total=e.error-e.start,c.emit=f),f(p,...h))};r(t),t.prependOnceListener("abort",()=>{e.abort=Date.now(),(!e.response||c0t>=13)&&(e.phases.total=Date.now()-e.start)});let s=c=>{e.socket=Date.now(),e.phases.wait=e.socket-e.start;let f=()=>{e.lookup=Date.now(),e.phases.dns=e.lookup-e.socket};c.prependOnceListener("lookup",f),l0t.default(c,{connect:()=>{e.connect=Date.now(),e.lookup===void 0&&(c.removeListener("lookup",f),e.lookup=e.connect,e.phases.dns=e.lookup-e.socket),e.phases.tcp=e.connect-e.lookup},secureConnect:()=>{e.secureConnect=Date.now(),e.phases.tls=e.secureConnect-e.connect}})};t.socket?s(t.socket):t.prependOnceListener("socket",s);let a=()=>{var c;e.upload=Date.now(),e.phases.request=e.upload-(c=e.secureConnect,c??e.connect)};return(typeof t.writableFinished=="boolean"?t.writableFinished:t.finished&&t.outputSize===0&&(!t.socket||t.socket.writableLength===0))?a():t.prependOnceListener("finish",a),t.prependOnceListener("response",c=>{e.response=Date.now(),e.phases.firstByte=e.response-e.upload,c.timings=e,r(c),c.prependOnceListener("end",()=>{e.end=Date.now(),e.phases.download=e.end-e.response,e.phases.total=e.end-e.start})}),e};wH.default=CH;BH.exports=CH;BH.exports.default=CH});var A0e=L((gzt,DH)=>{"use strict";var{V4MAPPED:u0t,ADDRCONFIG:f0t,ALL:f0e,promises:{Resolver:o0e},lookup:A0t}=ye("dns"),{promisify:vH}=ye("util"),p0t=ye("os"),gI=Symbol("cacheableLookupCreateConnection"),SH=Symbol("cacheableLookupInstance"),a0e=Symbol("expires"),h0t=typeof f0e=="number",l0e=t=>{if(!(t&&typeof t.createConnection=="function"))throw new Error("Expected an Agent instance as the first argument")},g0t=t=>{for(let e of t)e.family!==6&&(e.address=`::ffff:${e.address}`,e.family=6)},c0e=()=>{let t=!1,e=!1;for(let r of Object.values(p0t.networkInterfaces()))for(let s of r)if(!s.internal&&(s.family==="IPv6"?e=!0:t=!0,t&&e))return{has4:t,has6:e};return{has4:t,has6:e}},d0t=t=>Symbol.iterator in t,u0e={ttl:!0},m0t={all:!0},HQ=class{constructor({cache:e=new Map,maxTtl:r=1/0,fallbackDuration:s=3600,errorTtl:a=.15,resolver:n=new o0e,lookup:c=A0t}={}){if(this.maxTtl=r,this.errorTtl=a,this._cache=e,this._resolver=n,this._dnsLookup=vH(c),this._resolver instanceof o0e?(this._resolve4=this._resolver.resolve4.bind(this._resolver),this._resolve6=this._resolver.resolve6.bind(this._resolver)):(this._resolve4=vH(this._resolver.resolve4.bind(this._resolver)),this._resolve6=vH(this._resolver.resolve6.bind(this._resolver))),this._iface=c0e(),this._pending={},this._nextRemovalTime=!1,this._hostnamesToFallback=new Set,s<1)this._fallback=!1;else{this._fallback=!0;let f=setInterval(()=>{this._hostnamesToFallback.clear()},s*1e3);f.unref&&f.unref()}this.lookup=this.lookup.bind(this),this.lookupAsync=this.lookupAsync.bind(this)}set servers(e){this.clear(),this._resolver.setServers(e)}get servers(){return this._resolver.getServers()}lookup(e,r,s){if(typeof r=="function"?(s=r,r={}):typeof r=="number"&&(r={family:r}),!s)throw new Error("Callback must be a function.");this.lookupAsync(e,r).then(a=>{r.all?s(null,a):s(null,a.address,a.family,a.expires,a.ttl)},s)}async lookupAsync(e,r={}){typeof r=="number"&&(r={family:r});let s=await this.query(e);if(r.family===6){let a=s.filter(n=>n.family===6);r.hints&u0t&&(h0t&&r.hints&f0e||a.length===0)?g0t(s):s=a}else r.family===4&&(s=s.filter(a=>a.family===4));if(r.hints&f0t){let{_iface:a}=this;s=s.filter(n=>n.family===6?a.has6:a.has4)}if(s.length===0){let a=new Error(`cacheableLookup ENOTFOUND ${e}`);throw a.code="ENOTFOUND",a.hostname=e,a}return r.all?s:s[0]}async query(e){let r=await this._cache.get(e);if(!r){let s=this._pending[e];if(s)r=await s;else{let a=this.queryAndCache(e);this._pending[e]=a,r=await a}}return r=r.map(s=>({...s})),r}async _resolve(e){let r=async h=>{try{return await h}catch(E){if(E.code==="ENODATA"||E.code==="ENOTFOUND")return[];throw E}},[s,a]=await Promise.all([this._resolve4(e,u0e),this._resolve6(e,u0e)].map(h=>r(h))),n=0,c=0,f=0,p=Date.now();for(let h of s)h.family=4,h.expires=p+h.ttl*1e3,n=Math.max(n,h.ttl);for(let h of a)h.family=6,h.expires=p+h.ttl*1e3,c=Math.max(c,h.ttl);return s.length>0?a.length>0?f=Math.min(n,c):f=n:f=c,{entries:[...s,...a],cacheTtl:f}}async _lookup(e){try{return{entries:await this._dnsLookup(e,{all:!0}),cacheTtl:0}}catch{return{entries:[],cacheTtl:0}}}async _set(e,r,s){if(this.maxTtl>0&&s>0){s=Math.min(s,this.maxTtl)*1e3,r[a0e]=Date.now()+s;try{await this._cache.set(e,r,s)}catch(a){this.lookupAsync=async()=>{let n=new Error("Cache Error. Please recreate the CacheableLookup instance.");throw n.cause=a,n}}d0t(this._cache)&&this._tick(s)}}async queryAndCache(e){if(this._hostnamesToFallback.has(e))return this._dnsLookup(e,m0t);try{let r=await this._resolve(e);r.entries.length===0&&this._fallback&&(r=await this._lookup(e),r.entries.length!==0&&this._hostnamesToFallback.add(e));let s=r.entries.length===0?this.errorTtl:r.cacheTtl;return await this._set(e,r.entries,s),delete this._pending[e],r.entries}catch(r){throw delete this._pending[e],r}}_tick(e){let r=this._nextRemovalTime;(!r||e{this._nextRemovalTime=!1;let s=1/0,a=Date.now();for(let[n,c]of this._cache){let f=c[a0e];a>=f?this._cache.delete(n):f("lookup"in r||(r.lookup=this.lookup),e[gI](r,s))}uninstall(e){if(l0e(e),e[gI]){if(e[SH]!==this)throw new Error("The agent is not owned by this CacheableLookup instance");e.createConnection=e[gI],delete e[gI],delete e[SH]}}updateInterfaceInfo(){let{_iface:e}=this;this._iface=c0e(),(e.has4&&!this._iface.has4||e.has6&&!this._iface.has6)&&this._cache.clear()}clear(e){if(e){this._cache.delete(e);return}this._cache.clear()}};DH.exports=HQ;DH.exports.default=HQ});var g0e=L((dzt,bH)=>{"use strict";var y0t=typeof URL>"u"?ye("url").URL:URL,E0t="text/plain",I0t="us-ascii",p0e=(t,e)=>e.some(r=>r instanceof RegExp?r.test(t):r===t),C0t=(t,{stripHash:e})=>{let r=t.match(/^data:([^,]*?),([^#]*?)(?:#(.*))?$/);if(!r)throw new Error(`Invalid URL: ${t}`);let s=r[1].split(";"),a=r[2],n=e?"":r[3],c=!1;s[s.length-1]==="base64"&&(s.pop(),c=!0);let f=(s.shift()||"").toLowerCase(),h=[...s.map(E=>{let[C,S=""]=E.split("=").map(P=>P.trim());return C==="charset"&&(S=S.toLowerCase(),S===I0t)?"":`${C}${S?`=${S}`:""}`}).filter(Boolean)];return c&&h.push("base64"),(h.length!==0||f&&f!==E0t)&&h.unshift(f),`data:${h.join(";")},${c?a.trim():a}${n?`#${n}`:""}`},h0e=(t,e)=>{if(e={defaultProtocol:"http:",normalizeProtocol:!0,forceHttp:!1,forceHttps:!1,stripAuthentication:!0,stripHash:!1,stripWWW:!0,removeQueryParameters:[/^utm_\w+/i],removeTrailingSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0,...e},Reflect.has(e,"normalizeHttps"))throw new Error("options.normalizeHttps is renamed to options.forceHttp");if(Reflect.has(e,"normalizeHttp"))throw new Error("options.normalizeHttp is renamed to options.forceHttps");if(Reflect.has(e,"stripFragment"))throw new Error("options.stripFragment is renamed to options.stripHash");if(t=t.trim(),/^data:/i.test(t))return C0t(t,e);let r=t.startsWith("//");!r&&/^\.*\//.test(t)||(t=t.replace(/^(?!(?:\w+:)?\/\/)|^\/\//,e.defaultProtocol));let a=new y0t(t);if(e.forceHttp&&e.forceHttps)throw new Error("The `forceHttp` and `forceHttps` options cannot be used together");if(e.forceHttp&&a.protocol==="https:"&&(a.protocol="http:"),e.forceHttps&&a.protocol==="http:"&&(a.protocol="https:"),e.stripAuthentication&&(a.username="",a.password=""),e.stripHash&&(a.hash=""),a.pathname&&(a.pathname=a.pathname.replace(/((?!:).|^)\/{2,}/g,(n,c)=>/^(?!\/)/g.test(c)?`${c}/`:"/")),a.pathname&&(a.pathname=decodeURI(a.pathname)),e.removeDirectoryIndex===!0&&(e.removeDirectoryIndex=[/^index\.[a-z]+$/]),Array.isArray(e.removeDirectoryIndex)&&e.removeDirectoryIndex.length>0){let n=a.pathname.split("/"),c=n[n.length-1];p0e(c,e.removeDirectoryIndex)&&(n=n.slice(0,n.length-1),a.pathname=n.slice(1).join("/")+"/")}if(a.hostname&&(a.hostname=a.hostname.replace(/\.$/,""),e.stripWWW&&/^www\.([a-z\-\d]{2,63})\.([a-z.]{2,5})$/.test(a.hostname)&&(a.hostname=a.hostname.replace(/^www\./,""))),Array.isArray(e.removeQueryParameters))for(let n of[...a.searchParams.keys()])p0e(n,e.removeQueryParameters)&&a.searchParams.delete(n);return e.sortQueryParameters&&a.searchParams.sort(),e.removeTrailingSlash&&(a.pathname=a.pathname.replace(/\/$/,"")),t=a.toString(),(e.removeTrailingSlash||a.pathname==="/")&&a.hash===""&&(t=t.replace(/\/$/,"")),r&&!e.normalizeProtocol&&(t=t.replace(/^http:\/\//,"//")),e.stripProtocol&&(t=t.replace(/^(?:https?:)?\/\//,"")),t};bH.exports=h0e;bH.exports.default=h0e});var y0e=L((mzt,m0e)=>{m0e.exports=d0e;function d0e(t,e){if(t&&e)return d0e(t)(e);if(typeof t!="function")throw new TypeError("need wrapper function");return Object.keys(t).forEach(function(s){r[s]=t[s]}),r;function r(){for(var s=new Array(arguments.length),a=0;a{var E0e=y0e();PH.exports=E0e(jQ);PH.exports.strict=E0e(I0e);jQ.proto=jQ(function(){Object.defineProperty(Function.prototype,"once",{value:function(){return jQ(this)},configurable:!0}),Object.defineProperty(Function.prototype,"onceStrict",{value:function(){return I0e(this)},configurable:!0})});function jQ(t){var e=function(){return e.called?e.value:(e.called=!0,e.value=t.apply(this,arguments))};return e.called=!1,e}function I0e(t){var e=function(){if(e.called)throw new Error(e.onceError);return e.called=!0,e.value=t.apply(this,arguments)},r=t.name||"Function wrapped with `once`";return e.onceError=r+" shouldn't be called more than once",e.called=!1,e}});var kH=L((Ezt,w0e)=>{var w0t=xH(),B0t=function(){},v0t=function(t){return t.setHeader&&typeof t.abort=="function"},S0t=function(t){return t.stdio&&Array.isArray(t.stdio)&&t.stdio.length===3},C0e=function(t,e,r){if(typeof e=="function")return C0e(t,null,e);e||(e={}),r=w0t(r||B0t);var s=t._writableState,a=t._readableState,n=e.readable||e.readable!==!1&&t.readable,c=e.writable||e.writable!==!1&&t.writable,f=function(){t.writable||p()},p=function(){c=!1,n||r.call(t)},h=function(){n=!1,c||r.call(t)},E=function(I){r.call(t,I?new Error("exited with error code: "+I):null)},C=function(I){r.call(t,I)},S=function(){if(n&&!(a&&a.ended))return r.call(t,new Error("premature close"));if(c&&!(s&&s.ended))return r.call(t,new Error("premature close"))},P=function(){t.req.on("finish",p)};return v0t(t)?(t.on("complete",p),t.on("abort",S),t.req?P():t.on("request",P)):c&&!s&&(t.on("end",f),t.on("close",f)),S0t(t)&&t.on("exit",E),t.on("end",h),t.on("finish",p),e.error!==!1&&t.on("error",C),t.on("close",S),function(){t.removeListener("complete",p),t.removeListener("abort",S),t.removeListener("request",P),t.req&&t.req.removeListener("finish",p),t.removeListener("end",f),t.removeListener("close",f),t.removeListener("finish",p),t.removeListener("exit",E),t.removeListener("end",h),t.removeListener("error",C),t.removeListener("close",S)}};w0e.exports=C0e});var S0e=L((Izt,v0e)=>{var D0t=xH(),b0t=kH(),QH=ye("fs"),av=function(){},P0t=/^v?\.0/.test(process.version),qQ=function(t){return typeof t=="function"},x0t=function(t){return!P0t||!QH?!1:(t instanceof(QH.ReadStream||av)||t instanceof(QH.WriteStream||av))&&qQ(t.close)},k0t=function(t){return t.setHeader&&qQ(t.abort)},Q0t=function(t,e,r,s){s=D0t(s);var a=!1;t.on("close",function(){a=!0}),b0t(t,{readable:e,writable:r},function(c){if(c)return s(c);a=!0,s()});var n=!1;return function(c){if(!a&&!n){if(n=!0,x0t(t))return t.close(av);if(k0t(t))return t.abort();if(qQ(t.destroy))return t.destroy();s(c||new Error("stream was destroyed"))}}},B0e=function(t){t()},T0t=function(t,e){return t.pipe(e)},R0t=function(){var t=Array.prototype.slice.call(arguments),e=qQ(t[t.length-1]||av)&&t.pop()||av;if(Array.isArray(t[0])&&(t=t[0]),t.length<2)throw new Error("pump requires two streams per minimum");var r,s=t.map(function(a,n){var c=n0;return Q0t(a,c,f,function(p){r||(r=p),p&&s.forEach(B0e),!c&&(s.forEach(B0e),e(r))})});return t.reduce(T0t)};v0e.exports=R0t});var b0e=L((Czt,D0e)=>{"use strict";var{PassThrough:F0t}=ye("stream");D0e.exports=t=>{t={...t};let{array:e}=t,{encoding:r}=t,s=r==="buffer",a=!1;e?a=!(r||s):r=r||"utf8",s&&(r=null);let n=new F0t({objectMode:a});r&&n.setEncoding(r);let c=0,f=[];return n.on("data",p=>{f.push(p),a?c=f.length:c+=p.length}),n.getBufferedValue=()=>e?f:s?Buffer.concat(f,c):f.join(""),n.getBufferedLength=()=>c,n}});var P0e=L((wzt,dI)=>{"use strict";var N0t=S0e(),O0t=b0e(),GQ=class extends Error{constructor(){super("maxBuffer exceeded"),this.name="MaxBufferError"}};async function WQ(t,e){if(!t)return Promise.reject(new Error("Expected a stream"));e={maxBuffer:1/0,...e};let{maxBuffer:r}=e,s;return await new Promise((a,n)=>{let c=f=>{f&&(f.bufferedData=s.getBufferedValue()),n(f)};s=N0t(t,O0t(e),f=>{if(f){c(f);return}a()}),s.on("data",()=>{s.getBufferedLength()>r&&c(new GQ)})}),s.getBufferedValue()}dI.exports=WQ;dI.exports.default=WQ;dI.exports.buffer=(t,e)=>WQ(t,{...e,encoding:"buffer"});dI.exports.array=(t,e)=>WQ(t,{...e,array:!0});dI.exports.MaxBufferError=GQ});var k0e=L((vzt,x0e)=>{"use strict";var L0t=new Set([200,203,204,206,300,301,308,404,405,410,414,501]),M0t=new Set([200,203,204,300,301,302,303,307,308,404,405,410,414,501]),_0t=new Set([500,502,503,504]),U0t={date:!0,connection:!0,"keep-alive":!0,"proxy-authenticate":!0,"proxy-authorization":!0,te:!0,trailer:!0,"transfer-encoding":!0,upgrade:!0},H0t={"content-length":!0,"content-encoding":!0,"transfer-encoding":!0,"content-range":!0};function nm(t){let e=parseInt(t,10);return isFinite(e)?e:0}function j0t(t){return t?_0t.has(t.status):!0}function TH(t){let e={};if(!t)return e;let r=t.trim().split(/,/);for(let s of r){let[a,n]=s.split(/=/,2);e[a.trim()]=n===void 0?!0:n.trim().replace(/^"|"$/g,"")}return e}function q0t(t){let e=[];for(let r in t){let s=t[r];e.push(s===!0?r:r+"="+s)}if(e.length)return e.join(", ")}x0e.exports=class{constructor(e,r,{shared:s,cacheHeuristic:a,immutableMinTimeToLive:n,ignoreCargoCult:c,_fromObject:f}={}){if(f){this._fromObject(f);return}if(!r||!r.headers)throw Error("Response headers missing");this._assertRequestHasHeaders(e),this._responseTime=this.now(),this._isShared=s!==!1,this._cacheHeuristic=a!==void 0?a:.1,this._immutableMinTtl=n!==void 0?n:24*3600*1e3,this._status="status"in r?r.status:200,this._resHeaders=r.headers,this._rescc=TH(r.headers["cache-control"]),this._method="method"in e?e.method:"GET",this._url=e.url,this._host=e.headers.host,this._noAuthorization=!e.headers.authorization,this._reqHeaders=r.headers.vary?e.headers:null,this._reqcc=TH(e.headers["cache-control"]),c&&"pre-check"in this._rescc&&"post-check"in this._rescc&&(delete this._rescc["pre-check"],delete this._rescc["post-check"],delete this._rescc["no-cache"],delete this._rescc["no-store"],delete this._rescc["must-revalidate"],this._resHeaders=Object.assign({},this._resHeaders,{"cache-control":q0t(this._rescc)}),delete this._resHeaders.expires,delete this._resHeaders.pragma),r.headers["cache-control"]==null&&/no-cache/.test(r.headers.pragma)&&(this._rescc["no-cache"]=!0)}now(){return Date.now()}storable(){return!!(!this._reqcc["no-store"]&&(this._method==="GET"||this._method==="HEAD"||this._method==="POST"&&this._hasExplicitExpiration())&&M0t.has(this._status)&&!this._rescc["no-store"]&&(!this._isShared||!this._rescc.private)&&(!this._isShared||this._noAuthorization||this._allowsStoringAuthenticated())&&(this._resHeaders.expires||this._rescc["max-age"]||this._isShared&&this._rescc["s-maxage"]||this._rescc.public||L0t.has(this._status)))}_hasExplicitExpiration(){return this._isShared&&this._rescc["s-maxage"]||this._rescc["max-age"]||this._resHeaders.expires}_assertRequestHasHeaders(e){if(!e||!e.headers)throw Error("Request headers missing")}satisfiesWithoutRevalidation(e){this._assertRequestHasHeaders(e);let r=TH(e.headers["cache-control"]);return r["no-cache"]||/no-cache/.test(e.headers.pragma)||r["max-age"]&&this.age()>r["max-age"]||r["min-fresh"]&&this.timeToLive()<1e3*r["min-fresh"]||this.stale()&&!(r["max-stale"]&&!this._rescc["must-revalidate"]&&(r["max-stale"]===!0||r["max-stale"]>this.age()-this.maxAge()))?!1:this._requestMatches(e,!1)}_requestMatches(e,r){return(!this._url||this._url===e.url)&&this._host===e.headers.host&&(!e.method||this._method===e.method||r&&e.method==="HEAD")&&this._varyMatches(e)}_allowsStoringAuthenticated(){return this._rescc["must-revalidate"]||this._rescc.public||this._rescc["s-maxage"]}_varyMatches(e){if(!this._resHeaders.vary)return!0;if(this._resHeaders.vary==="*")return!1;let r=this._resHeaders.vary.trim().toLowerCase().split(/\s*,\s*/);for(let s of r)if(e.headers[s]!==this._reqHeaders[s])return!1;return!0}_copyWithoutHopByHopHeaders(e){let r={};for(let s in e)U0t[s]||(r[s]=e[s]);if(e.connection){let s=e.connection.trim().split(/\s*,\s*/);for(let a of s)delete r[a]}if(r.warning){let s=r.warning.split(/,/).filter(a=>!/^\s*1[0-9][0-9]/.test(a));s.length?r.warning=s.join(",").trim():delete r.warning}return r}responseHeaders(){let e=this._copyWithoutHopByHopHeaders(this._resHeaders),r=this.age();return r>3600*24&&!this._hasExplicitExpiration()&&this.maxAge()>3600*24&&(e.warning=(e.warning?`${e.warning}, `:"")+'113 - "rfc7234 5.5.4"'),e.age=`${Math.round(r)}`,e.date=new Date(this.now()).toUTCString(),e}date(){let e=Date.parse(this._resHeaders.date);return isFinite(e)?e:this._responseTime}age(){let e=this._ageValue(),r=(this.now()-this._responseTime)/1e3;return e+r}_ageValue(){return nm(this._resHeaders.age)}maxAge(){if(!this.storable()||this._rescc["no-cache"]||this._isShared&&this._resHeaders["set-cookie"]&&!this._rescc.public&&!this._rescc.immutable||this._resHeaders.vary==="*")return 0;if(this._isShared){if(this._rescc["proxy-revalidate"])return 0;if(this._rescc["s-maxage"])return nm(this._rescc["s-maxage"])}if(this._rescc["max-age"])return nm(this._rescc["max-age"]);let e=this._rescc.immutable?this._immutableMinTtl:0,r=this.date();if(this._resHeaders.expires){let s=Date.parse(this._resHeaders.expires);return Number.isNaN(s)||ss)return Math.max(e,(r-s)/1e3*this._cacheHeuristic)}return e}timeToLive(){let e=this.maxAge()-this.age(),r=e+nm(this._rescc["stale-if-error"]),s=e+nm(this._rescc["stale-while-revalidate"]);return Math.max(0,e,r,s)*1e3}stale(){return this.maxAge()<=this.age()}_useStaleIfError(){return this.maxAge()+nm(this._rescc["stale-if-error"])>this.age()}useStaleWhileRevalidate(){return this.maxAge()+nm(this._rescc["stale-while-revalidate"])>this.age()}static fromObject(e){return new this(void 0,void 0,{_fromObject:e})}_fromObject(e){if(this._responseTime)throw Error("Reinitialized");if(!e||e.v!==1)throw Error("Invalid serialization");this._responseTime=e.t,this._isShared=e.sh,this._cacheHeuristic=e.ch,this._immutableMinTtl=e.imm!==void 0?e.imm:24*3600*1e3,this._status=e.st,this._resHeaders=e.resh,this._rescc=e.rescc,this._method=e.m,this._url=e.u,this._host=e.h,this._noAuthorization=e.a,this._reqHeaders=e.reqh,this._reqcc=e.reqcc}toObject(){return{v:1,t:this._responseTime,sh:this._isShared,ch:this._cacheHeuristic,imm:this._immutableMinTtl,st:this._status,resh:this._resHeaders,rescc:this._rescc,m:this._method,u:this._url,h:this._host,a:this._noAuthorization,reqh:this._reqHeaders,reqcc:this._reqcc}}revalidationHeaders(e){this._assertRequestHasHeaders(e);let r=this._copyWithoutHopByHopHeaders(e.headers);if(delete r["if-range"],!this._requestMatches(e,!0)||!this.storable())return delete r["if-none-match"],delete r["if-modified-since"],r;if(this._resHeaders.etag&&(r["if-none-match"]=r["if-none-match"]?`${r["if-none-match"]}, ${this._resHeaders.etag}`:this._resHeaders.etag),r["accept-ranges"]||r["if-match"]||r["if-unmodified-since"]||this._method&&this._method!="GET"){if(delete r["if-modified-since"],r["if-none-match"]){let a=r["if-none-match"].split(/,/).filter(n=>!/^\s*W\//.test(n));a.length?r["if-none-match"]=a.join(",").trim():delete r["if-none-match"]}}else this._resHeaders["last-modified"]&&!r["if-modified-since"]&&(r["if-modified-since"]=this._resHeaders["last-modified"]);return r}revalidatedPolicy(e,r){if(this._assertRequestHasHeaders(e),this._useStaleIfError()&&j0t(r))return{modified:!1,matches:!1,policy:this};if(!r||!r.headers)throw Error("Response headers missing");let s=!1;if(r.status!==void 0&&r.status!=304?s=!1:r.headers.etag&&!/^\s*W\//.test(r.headers.etag)?s=this._resHeaders.etag&&this._resHeaders.etag.replace(/^\s*W\//,"")===r.headers.etag:this._resHeaders.etag&&r.headers.etag?s=this._resHeaders.etag.replace(/^\s*W\//,"")===r.headers.etag.replace(/^\s*W\//,""):this._resHeaders["last-modified"]?s=this._resHeaders["last-modified"]===r.headers["last-modified"]:!this._resHeaders.etag&&!this._resHeaders["last-modified"]&&!r.headers.etag&&!r.headers["last-modified"]&&(s=!0),!s)return{policy:new this.constructor(e,r),modified:r.status!=304,matches:!1};let a={};for(let c in this._resHeaders)a[c]=c in r.headers&&!H0t[c]?r.headers[c]:this._resHeaders[c];let n=Object.assign({},r,{status:this._status,method:this._method,headers:a});return{policy:new this.constructor(e,n,{shared:this._isShared,cacheHeuristic:this._cacheHeuristic,immutableMinTimeToLive:this._immutableMinTtl}),modified:!1,matches:!0}}}});var YQ=L((Szt,Q0e)=>{"use strict";Q0e.exports=t=>{let e={};for(let[r,s]of Object.entries(t))e[r.toLowerCase()]=s;return e}});var R0e=L((Dzt,T0e)=>{"use strict";var G0t=ye("stream").Readable,W0t=YQ(),RH=class extends G0t{constructor(e,r,s,a){if(typeof e!="number")throw new TypeError("Argument `statusCode` should be a number");if(typeof r!="object")throw new TypeError("Argument `headers` should be an object");if(!(s instanceof Buffer))throw new TypeError("Argument `body` should be a buffer");if(typeof a!="string")throw new TypeError("Argument `url` should be a string");super(),this.statusCode=e,this.headers=W0t(r),this.body=s,this.url=a}_read(){this.push(this.body),this.push(null)}};T0e.exports=RH});var N0e=L((bzt,F0e)=>{"use strict";var Y0t=["destroy","setTimeout","socket","headers","trailers","rawHeaders","statusCode","httpVersion","httpVersionMinor","httpVersionMajor","rawTrailers","statusMessage"];F0e.exports=(t,e)=>{let r=new Set(Object.keys(t).concat(Y0t));for(let s of r)s in e||(e[s]=typeof t[s]=="function"?t[s].bind(t):t[s])}});var L0e=L((Pzt,O0e)=>{"use strict";var V0t=ye("stream").PassThrough,K0t=N0e(),J0t=t=>{if(!(t&&t.pipe))throw new TypeError("Parameter `response` must be a response stream.");let e=new V0t;return K0t(t,e),t.pipe(e)};O0e.exports=J0t});var M0e=L(FH=>{FH.stringify=function t(e){if(typeof e>"u")return e;if(e&&Buffer.isBuffer(e))return JSON.stringify(":base64:"+e.toString("base64"));if(e&&e.toJSON&&(e=e.toJSON()),e&&typeof e=="object"){var r="",s=Array.isArray(e);r=s?"[":"{";var a=!0;for(var n in e){var c=typeof e[n]=="function"||!s&&typeof e[n]>"u";Object.hasOwnProperty.call(e,n)&&!c&&(a||(r+=","),a=!1,s?e[n]==null?r+="null":r+=t(e[n]):e[n]!==void 0&&(r+=t(n)+":"+t(e[n])))}return r+=s?"]":"}",r}else return typeof e=="string"?JSON.stringify(/^:/.test(e)?":"+e:e):typeof e>"u"?"null":JSON.stringify(e)};FH.parse=function(t){return JSON.parse(t,function(e,r){return typeof r=="string"?/^:base64:/.test(r)?Buffer.from(r.substring(8),"base64"):/^:/.test(r)?r.substring(1):r:r})}});var j0e=L((kzt,H0e)=>{"use strict";var z0t=ye("events"),_0e=M0e(),Z0t=t=>{let e={redis:"@keyv/redis",rediss:"@keyv/redis",mongodb:"@keyv/mongo",mongo:"@keyv/mongo",sqlite:"@keyv/sqlite",postgresql:"@keyv/postgres",postgres:"@keyv/postgres",mysql:"@keyv/mysql",etcd:"@keyv/etcd",offline:"@keyv/offline",tiered:"@keyv/tiered"};if(t.adapter||t.uri){let r=t.adapter||/^[^:+]*/.exec(t.uri)[0];return new(ye(e[r]))(t)}return new Map},U0e=["sqlite","postgres","mysql","mongo","redis","tiered"],NH=class extends z0t{constructor(e,{emitErrors:r=!0,...s}={}){if(super(),this.opts={namespace:"keyv",serialize:_0e.stringify,deserialize:_0e.parse,...typeof e=="string"?{uri:e}:e,...s},!this.opts.store){let n={...this.opts};this.opts.store=Z0t(n)}if(this.opts.compression){let n=this.opts.compression;this.opts.serialize=n.serialize.bind(n),this.opts.deserialize=n.deserialize.bind(n)}typeof this.opts.store.on=="function"&&r&&this.opts.store.on("error",n=>this.emit("error",n)),this.opts.store.namespace=this.opts.namespace;let a=n=>async function*(){for await(let[c,f]of typeof n=="function"?n(this.opts.store.namespace):n){let p=await this.opts.deserialize(f);if(!(this.opts.store.namespace&&!c.includes(this.opts.store.namespace))){if(typeof p.expires=="number"&&Date.now()>p.expires){this.delete(c);continue}yield[this._getKeyUnprefix(c),p.value]}}};typeof this.opts.store[Symbol.iterator]=="function"&&this.opts.store instanceof Map?this.iterator=a(this.opts.store):typeof this.opts.store.iterator=="function"&&this.opts.store.opts&&this._checkIterableAdaptar()&&(this.iterator=a(this.opts.store.iterator.bind(this.opts.store)))}_checkIterableAdaptar(){return U0e.includes(this.opts.store.opts.dialect)||U0e.findIndex(e=>this.opts.store.opts.url.includes(e))>=0}_getKeyPrefix(e){return`${this.opts.namespace}:${e}`}_getKeyPrefixArray(e){return e.map(r=>`${this.opts.namespace}:${r}`)}_getKeyUnprefix(e){return e.split(":").splice(1).join(":")}get(e,r){let{store:s}=this.opts,a=Array.isArray(e),n=a?this._getKeyPrefixArray(e):this._getKeyPrefix(e);if(a&&s.getMany===void 0){let c=[];for(let f of n)c.push(Promise.resolve().then(()=>s.get(f)).then(p=>typeof p=="string"?this.opts.deserialize(p):this.opts.compression?this.opts.deserialize(p):p).then(p=>{if(p!=null)return typeof p.expires=="number"&&Date.now()>p.expires?this.delete(f).then(()=>{}):r&&r.raw?p:p.value}));return Promise.allSettled(c).then(f=>{let p=[];for(let h of f)p.push(h.value);return p})}return Promise.resolve().then(()=>a?s.getMany(n):s.get(n)).then(c=>typeof c=="string"?this.opts.deserialize(c):this.opts.compression?this.opts.deserialize(c):c).then(c=>{if(c!=null)return a?c.map((f,p)=>{if(typeof f=="string"&&(f=this.opts.deserialize(f)),f!=null){if(typeof f.expires=="number"&&Date.now()>f.expires){this.delete(e[p]).then(()=>{});return}return r&&r.raw?f:f.value}}):typeof c.expires=="number"&&Date.now()>c.expires?this.delete(e).then(()=>{}):r&&r.raw?c:c.value})}set(e,r,s){let a=this._getKeyPrefix(e);typeof s>"u"&&(s=this.opts.ttl),s===0&&(s=void 0);let{store:n}=this.opts;return Promise.resolve().then(()=>{let c=typeof s=="number"?Date.now()+s:null;return typeof r=="symbol"&&this.emit("error","symbol cannot be serialized"),r={value:r,expires:c},this.opts.serialize(r)}).then(c=>n.set(a,c,s)).then(()=>!0)}delete(e){let{store:r}=this.opts;if(Array.isArray(e)){let a=this._getKeyPrefixArray(e);if(r.deleteMany===void 0){let n=[];for(let c of a)n.push(r.delete(c));return Promise.allSettled(n).then(c=>c.every(f=>f.value===!0))}return Promise.resolve().then(()=>r.deleteMany(a))}let s=this._getKeyPrefix(e);return Promise.resolve().then(()=>r.delete(s))}clear(){let{store:e}=this.opts;return Promise.resolve().then(()=>e.clear())}has(e){let r=this._getKeyPrefix(e),{store:s}=this.opts;return Promise.resolve().then(async()=>typeof s.has=="function"?s.has(r):await s.get(r)!==void 0)}disconnect(){let{store:e}=this.opts;if(typeof e.disconnect=="function")return e.disconnect()}};H0e.exports=NH});var W0e=L((Tzt,G0e)=>{"use strict";var X0t=ye("events"),VQ=ye("url"),$0t=g0e(),egt=P0e(),OH=k0e(),q0e=R0e(),tgt=YQ(),rgt=L0e(),ngt=j0e(),lv=class t{constructor(e,r){if(typeof e!="function")throw new TypeError("Parameter `request` must be a function");return this.cache=new ngt({uri:typeof r=="string"&&r,store:typeof r!="string"&&r,namespace:"cacheable-request"}),this.createCacheableRequest(e)}createCacheableRequest(e){return(r,s)=>{let a;if(typeof r=="string")a=LH(VQ.parse(r)),r={};else if(r instanceof VQ.URL)a=LH(VQ.parse(r.toString())),r={};else{let[C,...S]=(r.path||"").split("?"),P=S.length>0?`?${S.join("?")}`:"";a=LH({...r,pathname:C,search:P})}r={headers:{},method:"GET",cache:!0,strictTtl:!1,automaticFailover:!1,...r,...igt(a)},r.headers=tgt(r.headers);let n=new X0t,c=$0t(VQ.format(a),{stripWWW:!1,removeTrailingSlash:!1,stripAuthentication:!1}),f=`${r.method}:${c}`,p=!1,h=!1,E=C=>{h=!0;let S=!1,P,I=new Promise(N=>{P=()=>{S||(S=!0,N())}}),R=N=>{if(p&&!C.forceRefresh){N.status=N.statusCode;let W=OH.fromObject(p.cachePolicy).revalidatedPolicy(C,N);if(!W.modified){let te=W.policy.responseHeaders();N=new q0e(p.statusCode,te,p.body,p.url),N.cachePolicy=W.policy,N.fromCache=!0}}N.fromCache||(N.cachePolicy=new OH(C,N,C),N.fromCache=!1);let U;C.cache&&N.cachePolicy.storable()?(U=rgt(N),(async()=>{try{let W=egt.buffer(N);if(await Promise.race([I,new Promise(ce=>N.once("end",ce))]),S)return;let te=await W,ie={cachePolicy:N.cachePolicy.toObject(),url:N.url,statusCode:N.fromCache?p.statusCode:N.statusCode,body:te},Ae=C.strictTtl?N.cachePolicy.timeToLive():void 0;C.maxTtl&&(Ae=Ae?Math.min(Ae,C.maxTtl):C.maxTtl),await this.cache.set(f,ie,Ae)}catch(W){n.emit("error",new t.CacheError(W))}})()):C.cache&&p&&(async()=>{try{await this.cache.delete(f)}catch(W){n.emit("error",new t.CacheError(W))}})(),n.emit("response",U||N),typeof s=="function"&&s(U||N)};try{let N=e(C,R);N.once("error",P),N.once("abort",P),n.emit("request",N)}catch(N){n.emit("error",new t.RequestError(N))}};return(async()=>{let C=async P=>{await Promise.resolve();let I=P.cache?await this.cache.get(f):void 0;if(typeof I>"u")return E(P);let R=OH.fromObject(I.cachePolicy);if(R.satisfiesWithoutRevalidation(P)&&!P.forceRefresh){let N=R.responseHeaders(),U=new q0e(I.statusCode,N,I.body,I.url);U.cachePolicy=R,U.fromCache=!0,n.emit("response",U),typeof s=="function"&&s(U)}else p=I,P.headers=R.revalidationHeaders(P),E(P)},S=P=>n.emit("error",new t.CacheError(P));this.cache.once("error",S),n.on("response",()=>this.cache.removeListener("error",S));try{await C(r)}catch(P){r.automaticFailover&&!h&&E(r),n.emit("error",new t.CacheError(P))}})(),n}}};function igt(t){let e={...t};return e.path=`${t.pathname||"/"}${t.search||""}`,delete e.pathname,delete e.search,e}function LH(t){return{protocol:t.protocol,auth:t.auth,hostname:t.hostname||t.host||"localhost",port:t.port,pathname:t.pathname,search:t.search}}lv.RequestError=class extends Error{constructor(t){super(t.message),this.name="RequestError",Object.assign(this,t)}};lv.CacheError=class extends Error{constructor(t){super(t.message),this.name="CacheError",Object.assign(this,t)}};G0e.exports=lv});var V0e=L((Nzt,Y0e)=>{"use strict";var sgt=["aborted","complete","headers","httpVersion","httpVersionMinor","httpVersionMajor","method","rawHeaders","rawTrailers","setTimeout","socket","statusCode","statusMessage","trailers","url"];Y0e.exports=(t,e)=>{if(e._readableState.autoDestroy)throw new Error("The second stream must have the `autoDestroy` option set to `false`");let r=new Set(Object.keys(t).concat(sgt)),s={};for(let a of r)a in e||(s[a]={get(){let n=t[a];return typeof n=="function"?n.bind(t):n},set(n){t[a]=n},enumerable:!0,configurable:!1});return Object.defineProperties(e,s),t.once("aborted",()=>{e.destroy(),e.emit("aborted")}),t.once("close",()=>{t.complete&&e.readable?e.once("end",()=>{e.emit("close")}):e.emit("close")}),e}});var J0e=L((Ozt,K0e)=>{"use strict";var{Transform:ogt,PassThrough:agt}=ye("stream"),MH=ye("zlib"),lgt=V0e();K0e.exports=t=>{let e=(t.headers["content-encoding"]||"").toLowerCase();if(!["gzip","deflate","br"].includes(e))return t;let r=e==="br";if(r&&typeof MH.createBrotliDecompress!="function")return t.destroy(new Error("Brotli is not supported on Node.js < 12")),t;let s=!0,a=new ogt({transform(f,p,h){s=!1,h(null,f)},flush(f){f()}}),n=new agt({autoDestroy:!1,destroy(f,p){t.destroy(),p(f)}}),c=r?MH.createBrotliDecompress():MH.createUnzip();return c.once("error",f=>{if(s&&!t.readable){n.end();return}n.destroy(f)}),lgt(t,n),t.pipe(a).pipe(c).pipe(n),n}});var UH=L((Lzt,z0e)=>{"use strict";var _H=class{constructor(e={}){if(!(e.maxSize&&e.maxSize>0))throw new TypeError("`maxSize` must be a number greater than 0");this.maxSize=e.maxSize,this.onEviction=e.onEviction,this.cache=new Map,this.oldCache=new Map,this._size=0}_set(e,r){if(this.cache.set(e,r),this._size++,this._size>=this.maxSize){if(this._size=0,typeof this.onEviction=="function")for(let[s,a]of this.oldCache.entries())this.onEviction(s,a);this.oldCache=this.cache,this.cache=new Map}}get(e){if(this.cache.has(e))return this.cache.get(e);if(this.oldCache.has(e)){let r=this.oldCache.get(e);return this.oldCache.delete(e),this._set(e,r),r}}set(e,r){return this.cache.has(e)?this.cache.set(e,r):this._set(e,r),this}has(e){return this.cache.has(e)||this.oldCache.has(e)}peek(e){if(this.cache.has(e))return this.cache.get(e);if(this.oldCache.has(e))return this.oldCache.get(e)}delete(e){let r=this.cache.delete(e);return r&&this._size--,this.oldCache.delete(e)||r}clear(){this.cache.clear(),this.oldCache.clear(),this._size=0}*keys(){for(let[e]of this)yield e}*values(){for(let[,e]of this)yield e}*[Symbol.iterator](){for(let e of this.cache)yield e;for(let e of this.oldCache){let[r]=e;this.cache.has(r)||(yield e)}}get size(){let e=0;for(let r of this.oldCache.keys())this.cache.has(r)||e++;return Math.min(this._size+e,this.maxSize)}};z0e.exports=_H});var jH=L((Mzt,ege)=>{"use strict";var cgt=ye("events"),ugt=ye("tls"),fgt=ye("http2"),Agt=UH(),xa=Symbol("currentStreamsCount"),Z0e=Symbol("request"),Nc=Symbol("cachedOriginSet"),mI=Symbol("gracefullyClosing"),pgt=["maxDeflateDynamicTableSize","maxSessionMemory","maxHeaderListPairs","maxOutstandingPings","maxReservedRemoteStreams","maxSendHeaderBlockLength","paddingStrategy","localAddress","path","rejectUnauthorized","minDHSize","ca","cert","clientCertEngine","ciphers","key","pfx","servername","minVersion","maxVersion","secureProtocol","crl","honorCipherOrder","ecdhCurve","dhparam","secureOptions","sessionIdContext"],hgt=(t,e,r)=>{let s=0,a=t.length;for(;s>>1;r(t[n],e)?s=n+1:a=n}return s},ggt=(t,e)=>t.remoteSettings.maxConcurrentStreams>e.remoteSettings.maxConcurrentStreams,HH=(t,e)=>{for(let r of t)r[Nc].lengthe[Nc].includes(s))&&r[xa]+e[xa]<=e.remoteSettings.maxConcurrentStreams&&$0e(r)},dgt=(t,e)=>{for(let r of t)e[Nc].lengthr[Nc].includes(s))&&e[xa]+r[xa]<=r.remoteSettings.maxConcurrentStreams&&$0e(e)},X0e=({agent:t,isFree:e})=>{let r={};for(let s in t.sessions){let n=t.sessions[s].filter(c=>{let f=c[im.kCurrentStreamsCount]{t[mI]=!0,t[xa]===0&&t.close()},im=class t extends cgt{constructor({timeout:e=6e4,maxSessions:r=1/0,maxFreeSessions:s=10,maxCachedTlsSessions:a=100}={}){super(),this.sessions={},this.queue={},this.timeout=e,this.maxSessions=r,this.maxFreeSessions=s,this._freeSessionsCount=0,this._sessionsCount=0,this.settings={enablePush:!1},this.tlsSessionCache=new Agt({maxSize:a})}static normalizeOrigin(e,r){return typeof e=="string"&&(e=new URL(e)),r&&e.hostname!==r&&(e.hostname=r),e.origin}normalizeOptions(e){let r="";if(e)for(let s of pgt)e[s]&&(r+=`:${e[s]}`);return r}_tryToCreateNewSession(e,r){if(!(e in this.queue)||!(r in this.queue[e]))return;let s=this.queue[e][r];this._sessionsCount{Array.isArray(s)?(s=[...s],a()):s=[{resolve:a,reject:n}];let c=this.normalizeOptions(r),f=t.normalizeOrigin(e,r&&r.servername);if(f===void 0){for(let{reject:E}of s)E(new TypeError("The `origin` argument needs to be a string or an URL object"));return}if(c in this.sessions){let E=this.sessions[c],C=-1,S=-1,P;for(let I of E){let R=I.remoteSettings.maxConcurrentStreams;if(R=R||I[mI]||I.destroyed)continue;P||(C=R),N>S&&(P=I,S=N)}}if(P){if(s.length!==1){for(let{reject:I}of s){let R=new Error(`Expected the length of listeners to be 1, got ${s.length}. +Please report this to https://github.com/szmarczak/http2-wrapper/`);I(R)}return}s[0].resolve(P);return}}if(c in this.queue){if(f in this.queue[c]){this.queue[c][f].listeners.push(...s),this._tryToCreateNewSession(c,f);return}}else this.queue[c]={};let p=()=>{c in this.queue&&this.queue[c][f]===h&&(delete this.queue[c][f],Object.keys(this.queue[c]).length===0&&delete this.queue[c])},h=()=>{let E=`${f}:${c}`,C=!1;try{let S=fgt.connect(e,{createConnection:this.createConnection,settings:this.settings,session:this.tlsSessionCache.get(E),...r});S[xa]=0,S[mI]=!1;let P=()=>S[xa]{this.tlsSessionCache.set(E,N)}),S.once("error",N=>{for(let{reject:U}of s)U(N);this.tlsSessionCache.delete(E)}),S.setTimeout(this.timeout,()=>{S.destroy()}),S.once("close",()=>{if(C){I&&this._freeSessionsCount--,this._sessionsCount--;let N=this.sessions[c];N.splice(N.indexOf(S),1),N.length===0&&delete this.sessions[c]}else{let N=new Error("Session closed without receiving a SETTINGS frame");N.code="HTTP2WRAPPER_NOSETTINGS";for(let{reject:U}of s)U(N);p()}this._tryToCreateNewSession(c,f)});let R=()=>{if(!(!(c in this.queue)||!P())){for(let N of S[Nc])if(N in this.queue[c]){let{listeners:U}=this.queue[c][N];for(;U.length!==0&&P();)U.shift().resolve(S);let W=this.queue[c];if(W[N].listeners.length===0&&(delete W[N],Object.keys(W).length===0)){delete this.queue[c];break}if(!P())break}}};S.on("origin",()=>{S[Nc]=S.originSet,P()&&(R(),HH(this.sessions[c],S))}),S.once("remoteSettings",()=>{if(S.ref(),S.unref(),this._sessionsCount++,h.destroyed){let N=new Error("Agent has been destroyed");for(let U of s)U.reject(N);S.destroy();return}S[Nc]=S.originSet;{let N=this.sessions;if(c in N){let U=N[c];U.splice(hgt(U,S,ggt),0,S)}else N[c]=[S]}this._freeSessionsCount+=1,C=!0,this.emit("session",S),R(),p(),S[xa]===0&&this._freeSessionsCount>this.maxFreeSessions&&S.close(),s.length!==0&&(this.getSession(f,r,s),s.length=0),S.on("remoteSettings",()=>{R(),HH(this.sessions[c],S)})}),S[Z0e]=S.request,S.request=(N,U)=>{if(S[mI])throw new Error("The session is gracefully closing. No new streams are allowed.");let W=S[Z0e](N,U);return S.ref(),++S[xa],S[xa]===S.remoteSettings.maxConcurrentStreams&&this._freeSessionsCount--,W.once("close",()=>{if(I=P(),--S[xa],!S.destroyed&&!S.closed&&(dgt(this.sessions[c],S),P()&&!S.closed)){I||(this._freeSessionsCount++,I=!0);let te=S[xa]===0;te&&S.unref(),te&&(this._freeSessionsCount>this.maxFreeSessions||S[mI])?S.close():(HH(this.sessions[c],S),R())}}),W}}catch(S){for(let P of s)P.reject(S);p()}};h.listeners=s,h.completed=!1,h.destroyed=!1,this.queue[c][f]=h,this._tryToCreateNewSession(c,f)})}request(e,r,s,a){return new Promise((n,c)=>{this.getSession(e,r,[{reject:c,resolve:f=>{try{n(f.request(s,a))}catch(p){c(p)}}}])})}createConnection(e,r){return t.connect(e,r)}static connect(e,r){r.ALPNProtocols=["h2"];let s=e.port||443,a=e.hostname||e.host;return typeof r.servername>"u"&&(r.servername=a),ugt.connect(s,a,r)}closeFreeSessions(){for(let e of Object.values(this.sessions))for(let r of e)r[xa]===0&&r.close()}destroy(e){for(let r of Object.values(this.sessions))for(let s of r)s.destroy(e);for(let r of Object.values(this.queue))for(let s of Object.values(r))s.destroyed=!0;this.queue={}}get freeSessions(){return X0e({agent:this,isFree:!0})}get busySessions(){return X0e({agent:this,isFree:!1})}};im.kCurrentStreamsCount=xa;im.kGracefullyClosing=mI;ege.exports={Agent:im,globalAgent:new im}});var GH=L((_zt,tge)=>{"use strict";var{Readable:mgt}=ye("stream"),qH=class extends mgt{constructor(e,r){super({highWaterMark:r,autoDestroy:!1}),this.statusCode=null,this.statusMessage="",this.httpVersion="2.0",this.httpVersionMajor=2,this.httpVersionMinor=0,this.headers={},this.trailers={},this.req=null,this.aborted=!1,this.complete=!1,this.upgrade=null,this.rawHeaders=[],this.rawTrailers=[],this.socket=e,this.connection=e,this._dumped=!1}_destroy(e){this.req._request.destroy(e)}setTimeout(e,r){return this.req.setTimeout(e,r),this}_dump(){this._dumped||(this._dumped=!0,this.removeAllListeners("data"),this.resume())}_read(){this.req&&this.req._request.resume()}};tge.exports=qH});var WH=L((Uzt,rge)=>{"use strict";rge.exports=t=>{let e={protocol:t.protocol,hostname:typeof t.hostname=="string"&&t.hostname.startsWith("[")?t.hostname.slice(1,-1):t.hostname,host:t.host,hash:t.hash,search:t.search,pathname:t.pathname,href:t.href,path:`${t.pathname||""}${t.search||""}`};return typeof t.port=="string"&&t.port.length!==0&&(e.port=Number(t.port)),(t.username||t.password)&&(e.auth=`${t.username||""}:${t.password||""}`),e}});var ige=L((Hzt,nge)=>{"use strict";nge.exports=(t,e,r)=>{for(let s of r)t.on(s,(...a)=>e.emit(s,...a))}});var oge=L((jzt,sge)=>{"use strict";sge.exports=t=>{switch(t){case":method":case":scheme":case":authority":case":path":return!0;default:return!1}}});var lge=L((Gzt,age)=>{"use strict";var yI=(t,e,r)=>{age.exports[e]=class extends t{constructor(...a){super(typeof r=="string"?r:r(a)),this.name=`${super.name} [${e}]`,this.code=e}}};yI(TypeError,"ERR_INVALID_ARG_TYPE",t=>{let e=t[0].includes(".")?"property":"argument",r=t[1],s=Array.isArray(r);return s&&(r=`${r.slice(0,-1).join(", ")} or ${r.slice(-1)}`),`The "${t[0]}" ${e} must be ${s?"one of":"of"} type ${r}. Received ${typeof t[2]}`});yI(TypeError,"ERR_INVALID_PROTOCOL",t=>`Protocol "${t[0]}" not supported. Expected "${t[1]}"`);yI(Error,"ERR_HTTP_HEADERS_SENT",t=>`Cannot ${t[0]} headers after they are sent to the client`);yI(TypeError,"ERR_INVALID_HTTP_TOKEN",t=>`${t[0]} must be a valid HTTP token [${t[1]}]`);yI(TypeError,"ERR_HTTP_INVALID_HEADER_VALUE",t=>`Invalid value "${t[0]} for header "${t[1]}"`);yI(TypeError,"ERR_INVALID_CHAR",t=>`Invalid character in ${t[0]} [${t[1]}]`)});var zH=L((Wzt,gge)=>{"use strict";var ygt=ye("http2"),{Writable:Egt}=ye("stream"),{Agent:cge,globalAgent:Igt}=jH(),Cgt=GH(),wgt=WH(),Bgt=ige(),vgt=oge(),{ERR_INVALID_ARG_TYPE:YH,ERR_INVALID_PROTOCOL:Sgt,ERR_HTTP_HEADERS_SENT:uge,ERR_INVALID_HTTP_TOKEN:Dgt,ERR_HTTP_INVALID_HEADER_VALUE:bgt,ERR_INVALID_CHAR:Pgt}=lge(),{HTTP2_HEADER_STATUS:fge,HTTP2_HEADER_METHOD:Age,HTTP2_HEADER_PATH:pge,HTTP2_METHOD_CONNECT:xgt}=ygt.constants,Jo=Symbol("headers"),VH=Symbol("origin"),KH=Symbol("session"),hge=Symbol("options"),KQ=Symbol("flushedHeaders"),cv=Symbol("jobs"),kgt=/^[\^`\-\w!#$%&*+.|~]+$/,Qgt=/[^\t\u0020-\u007E\u0080-\u00FF]/,JH=class extends Egt{constructor(e,r,s){super({autoDestroy:!1});let a=typeof e=="string"||e instanceof URL;if(a&&(e=wgt(e instanceof URL?e:new URL(e))),typeof r=="function"||r===void 0?(s=r,r=a?e:{...e}):r={...e,...r},r.h2session)this[KH]=r.h2session;else if(r.agent===!1)this.agent=new cge({maxFreeSessions:0});else if(typeof r.agent>"u"||r.agent===null)typeof r.createConnection=="function"?(this.agent=new cge({maxFreeSessions:0}),this.agent.createConnection=r.createConnection):this.agent=Igt;else if(typeof r.agent.request=="function")this.agent=r.agent;else throw new YH("options.agent",["Agent-like Object","undefined","false"],r.agent);if(r.protocol&&r.protocol!=="https:")throw new Sgt(r.protocol,"https:");let n=r.port||r.defaultPort||this.agent&&this.agent.defaultPort||443,c=r.hostname||r.host||"localhost";delete r.hostname,delete r.host,delete r.port;let{timeout:f}=r;if(r.timeout=void 0,this[Jo]=Object.create(null),this[cv]=[],this.socket=null,this.connection=null,this.method=r.method||"GET",this.path=r.path,this.res=null,this.aborted=!1,this.reusedSocket=!1,r.headers)for(let[p,h]of Object.entries(r.headers))this.setHeader(p,h);r.auth&&!("authorization"in this[Jo])&&(this[Jo].authorization="Basic "+Buffer.from(r.auth).toString("base64")),r.session=r.tlsSession,r.path=r.socketPath,this[hge]=r,n===443?(this[VH]=`https://${c}`,":authority"in this[Jo]||(this[Jo][":authority"]=c)):(this[VH]=`https://${c}:${n}`,":authority"in this[Jo]||(this[Jo][":authority"]=`${c}:${n}`)),f&&this.setTimeout(f),s&&this.once("response",s),this[KQ]=!1}get method(){return this[Jo][Age]}set method(e){e&&(this[Jo][Age]=e.toUpperCase())}get path(){return this[Jo][pge]}set path(e){e&&(this[Jo][pge]=e)}get _mustNotHaveABody(){return this.method==="GET"||this.method==="HEAD"||this.method==="DELETE"}_write(e,r,s){if(this._mustNotHaveABody){s(new Error("The GET, HEAD and DELETE methods must NOT have a body"));return}this.flushHeaders();let a=()=>this._request.write(e,r,s);this._request?a():this[cv].push(a)}_final(e){if(this.destroyed)return;this.flushHeaders();let r=()=>{if(this._mustNotHaveABody){e();return}this._request.end(e)};this._request?r():this[cv].push(r)}abort(){this.res&&this.res.complete||(this.aborted||process.nextTick(()=>this.emit("abort")),this.aborted=!0,this.destroy())}_destroy(e,r){this.res&&this.res._dump(),this._request&&this._request.destroy(),r(e)}async flushHeaders(){if(this[KQ]||this.destroyed)return;this[KQ]=!0;let e=this.method===xgt,r=s=>{if(this._request=s,this.destroyed){s.destroy();return}e||Bgt(s,this,["timeout","continue","close","error"]);let a=c=>(...f)=>{!this.writable&&!this.destroyed?c(...f):this.once("finish",()=>{c(...f)})};s.once("response",a((c,f,p)=>{let h=new Cgt(this.socket,s.readableHighWaterMark);this.res=h,h.req=this,h.statusCode=c[fge],h.headers=c,h.rawHeaders=p,h.once("end",()=>{this.aborted?(h.aborted=!0,h.emit("aborted")):(h.complete=!0,h.socket=null,h.connection=null)}),e?(h.upgrade=!0,this.emit("connect",h,s,Buffer.alloc(0))?this.emit("close"):s.destroy()):(s.on("data",E=>{!h._dumped&&!h.push(E)&&s.pause()}),s.once("end",()=>{h.push(null)}),this.emit("response",h)||h._dump())})),s.once("headers",a(c=>this.emit("information",{statusCode:c[fge]}))),s.once("trailers",a((c,f,p)=>{let{res:h}=this;h.trailers=c,h.rawTrailers=p}));let{socket:n}=s.session;this.socket=n,this.connection=n;for(let c of this[cv])c();this.emit("socket",this.socket)};if(this[KH])try{r(this[KH].request(this[Jo]))}catch(s){this.emit("error",s)}else{this.reusedSocket=!0;try{r(await this.agent.request(this[VH],this[hge],this[Jo]))}catch(s){this.emit("error",s)}}}getHeader(e){if(typeof e!="string")throw new YH("name","string",e);return this[Jo][e.toLowerCase()]}get headersSent(){return this[KQ]}removeHeader(e){if(typeof e!="string")throw new YH("name","string",e);if(this.headersSent)throw new uge("remove");delete this[Jo][e.toLowerCase()]}setHeader(e,r){if(this.headersSent)throw new uge("set");if(typeof e!="string"||!kgt.test(e)&&!vgt(e))throw new Dgt("Header name",e);if(typeof r>"u")throw new bgt(r,e);if(Qgt.test(r))throw new Pgt("header content",e);this[Jo][e.toLowerCase()]=r}setNoDelay(){}setSocketKeepAlive(){}setTimeout(e,r){let s=()=>this._request.setTimeout(e,r);return this._request?s():this[cv].push(s),this}get maxHeadersCount(){if(!this.destroyed&&this._request)return this._request.session.localSettings.maxHeaderListSize}set maxHeadersCount(e){}};gge.exports=JH});var mge=L((Yzt,dge)=>{"use strict";var Tgt=ye("tls");dge.exports=(t={},e=Tgt.connect)=>new Promise((r,s)=>{let a=!1,n,c=async()=>{await p,n.off("timeout",f),n.off("error",s),t.resolveSocket?(r({alpnProtocol:n.alpnProtocol,socket:n,timeout:a}),a&&(await Promise.resolve(),n.emit("timeout"))):(n.destroy(),r({alpnProtocol:n.alpnProtocol,timeout:a}))},f=async()=>{a=!0,c()},p=(async()=>{try{n=await e(t,c),n.on("error",s),n.once("timeout",f)}catch(h){s(h)}})()})});var Ege=L((Vzt,yge)=>{"use strict";var Rgt=ye("net");yge.exports=t=>{let e=t.host,r=t.headers&&t.headers.host;return r&&(r.startsWith("[")?r.indexOf("]")===-1?e=r:e=r.slice(1,-1):e=r.split(":",1)[0]),Rgt.isIP(e)?"":e}});var wge=L((Kzt,XH)=>{"use strict";var Ige=ye("http"),ZH=ye("https"),Fgt=mge(),Ngt=UH(),Ogt=zH(),Lgt=Ege(),Mgt=WH(),JQ=new Ngt({maxSize:100}),uv=new Map,Cge=(t,e,r)=>{e._httpMessage={shouldKeepAlive:!0};let s=()=>{t.emit("free",e,r)};e.on("free",s);let a=()=>{t.removeSocket(e,r)};e.on("close",a);let n=()=>{t.removeSocket(e,r),e.off("close",a),e.off("free",s),e.off("agentRemove",n)};e.on("agentRemove",n),t.emit("free",e,r)},_gt=async t=>{let e=`${t.host}:${t.port}:${t.ALPNProtocols.sort()}`;if(!JQ.has(e)){if(uv.has(e))return(await uv.get(e)).alpnProtocol;let{path:r,agent:s}=t;t.path=t.socketPath;let a=Fgt(t);uv.set(e,a);try{let{socket:n,alpnProtocol:c}=await a;if(JQ.set(e,c),t.path=r,c==="h2")n.destroy();else{let{globalAgent:f}=ZH,p=ZH.Agent.prototype.createConnection;s?s.createConnection===p?Cge(s,n,t):n.destroy():f.createConnection===p?Cge(f,n,t):n.destroy()}return uv.delete(e),c}catch(n){throw uv.delete(e),n}}return JQ.get(e)};XH.exports=async(t,e,r)=>{if((typeof t=="string"||t instanceof URL)&&(t=Mgt(new URL(t))),typeof e=="function"&&(r=e,e=void 0),e={ALPNProtocols:["h2","http/1.1"],...t,...e,resolveSocket:!0},!Array.isArray(e.ALPNProtocols)||e.ALPNProtocols.length===0)throw new Error("The `ALPNProtocols` option must be an Array with at least one entry");e.protocol=e.protocol||"https:";let s=e.protocol==="https:";e.host=e.hostname||e.host||"localhost",e.session=e.tlsSession,e.servername=e.servername||Lgt(e),e.port=e.port||(s?443:80),e._defaultAgent=s?ZH.globalAgent:Ige.globalAgent;let a=e.agent;if(a){if(a.addRequest)throw new Error("The `options.agent` object can contain only `http`, `https` or `http2` properties");e.agent=a[s?"https":"http"]}return s&&await _gt(e)==="h2"?(a&&(e.agent=a.http2),new Ogt(e,r)):Ige.request(e,r)};XH.exports.protocolCache=JQ});var vge=L((Jzt,Bge)=>{"use strict";var Ugt=ye("http2"),Hgt=jH(),$H=zH(),jgt=GH(),qgt=wge(),Ggt=(t,e,r)=>new $H(t,e,r),Wgt=(t,e,r)=>{let s=new $H(t,e,r);return s.end(),s};Bge.exports={...Ugt,ClientRequest:$H,IncomingMessage:jgt,...Hgt,request:Ggt,get:Wgt,auto:qgt}});var tj=L(ej=>{"use strict";Object.defineProperty(ej,"__esModule",{value:!0});var Sge=Mp();ej.default=t=>Sge.default.nodeStream(t)&&Sge.default.function_(t.getBoundary)});var xge=L(rj=>{"use strict";Object.defineProperty(rj,"__esModule",{value:!0});var bge=ye("fs"),Pge=ye("util"),Dge=Mp(),Ygt=tj(),Vgt=Pge.promisify(bge.stat);rj.default=async(t,e)=>{if(e&&"content-length"in e)return Number(e["content-length"]);if(!t)return 0;if(Dge.default.string(t))return Buffer.byteLength(t);if(Dge.default.buffer(t))return t.length;if(Ygt.default(t))return Pge.promisify(t.getLength.bind(t))();if(t instanceof bge.ReadStream){let{size:r}=await Vgt(t.path);return r===0?void 0:r}}});var ij=L(nj=>{"use strict";Object.defineProperty(nj,"__esModule",{value:!0});function Kgt(t,e,r){let s={};for(let a of r)s[a]=(...n)=>{e.emit(a,...n)},t.on(a,s[a]);return()=>{for(let a of r)t.off(a,s[a])}}nj.default=Kgt});var kge=L(sj=>{"use strict";Object.defineProperty(sj,"__esModule",{value:!0});sj.default=()=>{let t=[];return{once(e,r,s){e.once(r,s),t.push({origin:e,event:r,fn:s})},unhandleAll(){for(let e of t){let{origin:r,event:s,fn:a}=e;r.removeListener(s,a)}t.length=0}}}});var Tge=L(fv=>{"use strict";Object.defineProperty(fv,"__esModule",{value:!0});fv.TimeoutError=void 0;var Jgt=ye("net"),zgt=kge(),Qge=Symbol("reentry"),Zgt=()=>{},zQ=class extends Error{constructor(e,r){super(`Timeout awaiting '${r}' for ${e}ms`),this.event=r,this.name="TimeoutError",this.code="ETIMEDOUT"}};fv.TimeoutError=zQ;fv.default=(t,e,r)=>{if(Qge in t)return Zgt;t[Qge]=!0;let s=[],{once:a,unhandleAll:n}=zgt.default(),c=(C,S,P)=>{var I;let R=setTimeout(S,C,C,P);(I=R.unref)===null||I===void 0||I.call(R);let N=()=>{clearTimeout(R)};return s.push(N),N},{host:f,hostname:p}=r,h=(C,S)=>{t.destroy(new zQ(C,S))},E=()=>{for(let C of s)C();n()};if(t.once("error",C=>{if(E(),t.listenerCount("error")===0)throw C}),t.once("close",E),a(t,"response",C=>{a(C,"end",E)}),typeof e.request<"u"&&c(e.request,h,"request"),typeof e.socket<"u"){let C=()=>{h(e.socket,"socket")};t.setTimeout(e.socket,C),s.push(()=>{t.removeListener("timeout",C)})}return a(t,"socket",C=>{var S;let{socketPath:P}=t;if(C.connecting){let I=!!(P??Jgt.isIP((S=p??f)!==null&&S!==void 0?S:"")!==0);if(typeof e.lookup<"u"&&!I&&typeof C.address().address>"u"){let R=c(e.lookup,h,"lookup");a(C,"lookup",R)}if(typeof e.connect<"u"){let R=()=>c(e.connect,h,"connect");I?a(C,"connect",R()):a(C,"lookup",N=>{N===null&&a(C,"connect",R())})}typeof e.secureConnect<"u"&&r.protocol==="https:"&&a(C,"connect",()=>{let R=c(e.secureConnect,h,"secureConnect");a(C,"secureConnect",R)})}if(typeof e.send<"u"){let I=()=>c(e.send,h,"send");C.connecting?a(C,"connect",()=>{a(t,"upload-complete",I())}):a(t,"upload-complete",I())}}),typeof e.response<"u"&&a(t,"upload-complete",()=>{let C=c(e.response,h,"response");a(t,"response",C)}),E}});var Fge=L(oj=>{"use strict";Object.defineProperty(oj,"__esModule",{value:!0});var Rge=Mp();oj.default=t=>{t=t;let e={protocol:t.protocol,hostname:Rge.default.string(t.hostname)&&t.hostname.startsWith("[")?t.hostname.slice(1,-1):t.hostname,host:t.host,hash:t.hash,search:t.search,pathname:t.pathname,href:t.href,path:`${t.pathname||""}${t.search||""}`};return Rge.default.string(t.port)&&t.port.length>0&&(e.port=Number(t.port)),(t.username||t.password)&&(e.auth=`${t.username||""}:${t.password||""}`),e}});var Nge=L(aj=>{"use strict";Object.defineProperty(aj,"__esModule",{value:!0});var Xgt=ye("url"),$gt=["protocol","host","hostname","port","pathname","search"];aj.default=(t,e)=>{var r,s;if(e.path){if(e.pathname)throw new TypeError("Parameters `path` and `pathname` are mutually exclusive.");if(e.search)throw new TypeError("Parameters `path` and `search` are mutually exclusive.");if(e.searchParams)throw new TypeError("Parameters `path` and `searchParams` are mutually exclusive.")}if(e.search&&e.searchParams)throw new TypeError("Parameters `search` and `searchParams` are mutually exclusive.");if(!t){if(!e.protocol)throw new TypeError("No URL protocol specified");t=`${e.protocol}//${(s=(r=e.hostname)!==null&&r!==void 0?r:e.host)!==null&&s!==void 0?s:""}`}let a=new Xgt.URL(t);if(e.path){let n=e.path.indexOf("?");n===-1?e.pathname=e.path:(e.pathname=e.path.slice(0,n),e.search=e.path.slice(n+1)),delete e.path}for(let n of $gt)e[n]&&(a[n]=e[n].toString());return a}});var Oge=L(cj=>{"use strict";Object.defineProperty(cj,"__esModule",{value:!0});var lj=class{constructor(){this.weakMap=new WeakMap,this.map=new Map}set(e,r){typeof e=="object"?this.weakMap.set(e,r):this.map.set(e,r)}get(e){return typeof e=="object"?this.weakMap.get(e):this.map.get(e)}has(e){return typeof e=="object"?this.weakMap.has(e):this.map.has(e)}};cj.default=lj});var fj=L(uj=>{"use strict";Object.defineProperty(uj,"__esModule",{value:!0});var edt=async t=>{let e=[],r=0;for await(let s of t)e.push(s),r+=Buffer.byteLength(s);return Buffer.isBuffer(e[0])?Buffer.concat(e,r):Buffer.from(e.join(""))};uj.default=edt});var Mge=L(sm=>{"use strict";Object.defineProperty(sm,"__esModule",{value:!0});sm.dnsLookupIpVersionToFamily=sm.isDnsLookupIpVersion=void 0;var Lge={auto:0,ipv4:4,ipv6:6};sm.isDnsLookupIpVersion=t=>t in Lge;sm.dnsLookupIpVersionToFamily=t=>{if(sm.isDnsLookupIpVersion(t))return Lge[t];throw new Error("Invalid DNS lookup IP version")}});var Aj=L(ZQ=>{"use strict";Object.defineProperty(ZQ,"__esModule",{value:!0});ZQ.isResponseOk=void 0;ZQ.isResponseOk=t=>{let{statusCode:e}=t,r=t.request.options.followRedirect?299:399;return e>=200&&e<=r||e===304}});var Uge=L(pj=>{"use strict";Object.defineProperty(pj,"__esModule",{value:!0});var _ge=new Set;pj.default=t=>{_ge.has(t)||(_ge.add(t),process.emitWarning(`Got: ${t}`,{type:"DeprecationWarning"}))}});var Hge=L(hj=>{"use strict";Object.defineProperty(hj,"__esModule",{value:!0});var Di=Mp(),tdt=(t,e)=>{if(Di.default.null_(t.encoding))throw new TypeError("To get a Buffer, set `options.responseType` to `buffer` instead");Di.assert.any([Di.default.string,Di.default.undefined],t.encoding),Di.assert.any([Di.default.boolean,Di.default.undefined],t.resolveBodyOnly),Di.assert.any([Di.default.boolean,Di.default.undefined],t.methodRewriting),Di.assert.any([Di.default.boolean,Di.default.undefined],t.isStream),Di.assert.any([Di.default.string,Di.default.undefined],t.responseType),t.responseType===void 0&&(t.responseType="text");let{retry:r}=t;if(e?t.retry={...e.retry}:t.retry={calculateDelay:s=>s.computedValue,limit:0,methods:[],statusCodes:[],errorCodes:[],maxRetryAfter:void 0},Di.default.object(r)?(t.retry={...t.retry,...r},t.retry.methods=[...new Set(t.retry.methods.map(s=>s.toUpperCase()))],t.retry.statusCodes=[...new Set(t.retry.statusCodes)],t.retry.errorCodes=[...new Set(t.retry.errorCodes)]):Di.default.number(r)&&(t.retry.limit=r),Di.default.undefined(t.retry.maxRetryAfter)&&(t.retry.maxRetryAfter=Math.min(...[t.timeout.request,t.timeout.connect].filter(Di.default.number))),Di.default.object(t.pagination)){e&&(t.pagination={...e.pagination,...t.pagination});let{pagination:s}=t;if(!Di.default.function_(s.transform))throw new Error("`options.pagination.transform` must be implemented");if(!Di.default.function_(s.shouldContinue))throw new Error("`options.pagination.shouldContinue` must be implemented");if(!Di.default.function_(s.filter))throw new TypeError("`options.pagination.filter` must be implemented");if(!Di.default.function_(s.paginate))throw new Error("`options.pagination.paginate` must be implemented")}return t.responseType==="json"&&t.headers.accept===void 0&&(t.headers.accept="application/json"),t};hj.default=tdt});var jge=L(Av=>{"use strict";Object.defineProperty(Av,"__esModule",{value:!0});Av.retryAfterStatusCodes=void 0;Av.retryAfterStatusCodes=new Set([413,429,503]);var rdt=({attemptCount:t,retryOptions:e,error:r,retryAfter:s})=>{if(t>e.limit)return 0;let a=e.methods.includes(r.options.method),n=e.errorCodes.includes(r.code),c=r.response&&e.statusCodes.includes(r.response.statusCode);if(!a||!n&&!c)return 0;if(r.response){if(s)return e.maxRetryAfter===void 0||s>e.maxRetryAfter?0:s;if(r.response.statusCode===413)return 0}let f=Math.random()*100;return 2**(t-1)*1e3+f};Av.default=rdt});var gv=L(Ln=>{"use strict";Object.defineProperty(Ln,"__esModule",{value:!0});Ln.UnsupportedProtocolError=Ln.ReadError=Ln.TimeoutError=Ln.UploadError=Ln.CacheError=Ln.HTTPError=Ln.MaxRedirectsError=Ln.RequestError=Ln.setNonEnumerableProperties=Ln.knownHookEvents=Ln.withoutBody=Ln.kIsNormalizedAlready=void 0;var qge=ye("util"),Gge=ye("stream"),ndt=ye("fs"),B0=ye("url"),Wge=ye("http"),gj=ye("http"),idt=ye("https"),sdt=s0e(),odt=A0e(),Yge=W0e(),adt=J0e(),ldt=vge(),cdt=YQ(),at=Mp(),udt=xge(),Vge=tj(),fdt=ij(),Kge=Tge(),Adt=Fge(),Jge=Nge(),pdt=Oge(),hdt=fj(),zge=Mge(),gdt=Aj(),v0=Uge(),ddt=Hge(),mdt=jge(),dj,go=Symbol("request"),eT=Symbol("response"),EI=Symbol("responseSize"),II=Symbol("downloadedSize"),CI=Symbol("bodySize"),wI=Symbol("uploadedSize"),XQ=Symbol("serverResponsesPiped"),Zge=Symbol("unproxyEvents"),Xge=Symbol("isFromCache"),mj=Symbol("cancelTimeouts"),$ge=Symbol("startedReading"),BI=Symbol("stopReading"),$Q=Symbol("triggerRead"),S0=Symbol("body"),pv=Symbol("jobs"),ede=Symbol("originalResponse"),tde=Symbol("retryTimeout");Ln.kIsNormalizedAlready=Symbol("isNormalizedAlready");var ydt=at.default.string(process.versions.brotli);Ln.withoutBody=new Set(["GET","HEAD"]);Ln.knownHookEvents=["init","beforeRequest","beforeRedirect","beforeError","beforeRetry","afterResponse"];function Edt(t){for(let e in t){let r=t[e];if(!at.default.string(r)&&!at.default.number(r)&&!at.default.boolean(r)&&!at.default.null_(r)&&!at.default.undefined(r))throw new TypeError(`The \`searchParams\` value '${String(r)}' must be a string, number, boolean or null`)}}function Idt(t){return at.default.object(t)&&!("statusCode"in t)}var yj=new pdt.default,Cdt=async t=>new Promise((e,r)=>{let s=a=>{r(a)};t.pending||e(),t.once("error",s),t.once("ready",()=>{t.off("error",s),e()})}),wdt=new Set([300,301,302,303,304,307,308]),Bdt=["context","body","json","form"];Ln.setNonEnumerableProperties=(t,e)=>{let r={};for(let s of t)if(s)for(let a of Bdt)a in s&&(r[a]={writable:!0,configurable:!0,enumerable:!1,value:s[a]});Object.defineProperties(e,r)};var fs=class extends Error{constructor(e,r,s){var a;if(super(e),Error.captureStackTrace(this,this.constructor),this.name="RequestError",this.code=r.code,s instanceof aT?(Object.defineProperty(this,"request",{enumerable:!1,value:s}),Object.defineProperty(this,"response",{enumerable:!1,value:s[eT]}),Object.defineProperty(this,"options",{enumerable:!1,value:s.options})):Object.defineProperty(this,"options",{enumerable:!1,value:s}),this.timings=(a=this.request)===null||a===void 0?void 0:a.timings,at.default.string(r.stack)&&at.default.string(this.stack)){let n=this.stack.indexOf(this.message)+this.message.length,c=this.stack.slice(n).split(` +`).reverse(),f=r.stack.slice(r.stack.indexOf(r.message)+r.message.length).split(` +`).reverse();for(;f.length!==0&&f[0]===c[0];)c.shift();this.stack=`${this.stack.slice(0,n)}${c.reverse().join(` +`)}${f.reverse().join(` +`)}`}}};Ln.RequestError=fs;var tT=class extends fs{constructor(e){super(`Redirected ${e.options.maxRedirects} times. Aborting.`,{},e),this.name="MaxRedirectsError"}};Ln.MaxRedirectsError=tT;var rT=class extends fs{constructor(e){super(`Response code ${e.statusCode} (${e.statusMessage})`,{},e.request),this.name="HTTPError"}};Ln.HTTPError=rT;var nT=class extends fs{constructor(e,r){super(e.message,e,r),this.name="CacheError"}};Ln.CacheError=nT;var iT=class extends fs{constructor(e,r){super(e.message,e,r),this.name="UploadError"}};Ln.UploadError=iT;var sT=class extends fs{constructor(e,r,s){super(e.message,e,s),this.name="TimeoutError",this.event=e.event,this.timings=r}};Ln.TimeoutError=sT;var hv=class extends fs{constructor(e,r){super(e.message,e,r),this.name="ReadError"}};Ln.ReadError=hv;var oT=class extends fs{constructor(e){super(`Unsupported protocol "${e.url.protocol}"`,{},e),this.name="UnsupportedProtocolError"}};Ln.UnsupportedProtocolError=oT;var vdt=["socket","connect","continue","information","upgrade","timeout"],aT=class extends Gge.Duplex{constructor(e,r={},s){super({autoDestroy:!1,highWaterMark:0}),this[II]=0,this[wI]=0,this.requestInitialized=!1,this[XQ]=new Set,this.redirects=[],this[BI]=!1,this[$Q]=!1,this[pv]=[],this.retryCount=0,this._progressCallbacks=[];let a=()=>this._unlockWrite(),n=()=>this._lockWrite();this.on("pipe",h=>{h.prependListener("data",a),h.on("data",n),h.prependListener("end",a),h.on("end",n)}),this.on("unpipe",h=>{h.off("data",a),h.off("data",n),h.off("end",a),h.off("end",n)}),this.on("pipe",h=>{h instanceof gj.IncomingMessage&&(this.options.headers={...h.headers,...this.options.headers})});let{json:c,body:f,form:p}=r;if((c||f||p)&&this._lockWrite(),Ln.kIsNormalizedAlready in r)this.options=r;else try{this.options=this.constructor.normalizeArguments(e,r,s)}catch(h){at.default.nodeStream(r.body)&&r.body.destroy(),this.destroy(h);return}(async()=>{var h;try{this.options.body instanceof ndt.ReadStream&&await Cdt(this.options.body);let{url:E}=this.options;if(!E)throw new TypeError("Missing `url` property");if(this.requestUrl=E.toString(),decodeURI(this.requestUrl),await this._finalizeBody(),await this._makeRequest(),this.destroyed){(h=this[go])===null||h===void 0||h.destroy();return}for(let C of this[pv])C();this[pv].length=0,this.requestInitialized=!0}catch(E){if(E instanceof fs){this._beforeError(E);return}this.destroyed||this.destroy(E)}})()}static normalizeArguments(e,r,s){var a,n,c,f,p;let h=r;if(at.default.object(e)&&!at.default.urlInstance(e))r={...s,...e,...r};else{if(e&&r&&r.url!==void 0)throw new TypeError("The `url` option is mutually exclusive with the `input` argument");r={...s,...r},e!==void 0&&(r.url=e),at.default.urlInstance(r.url)&&(r.url=new B0.URL(r.url.toString()))}if(r.cache===!1&&(r.cache=void 0),r.dnsCache===!1&&(r.dnsCache=void 0),at.assert.any([at.default.string,at.default.undefined],r.method),at.assert.any([at.default.object,at.default.undefined],r.headers),at.assert.any([at.default.string,at.default.urlInstance,at.default.undefined],r.prefixUrl),at.assert.any([at.default.object,at.default.undefined],r.cookieJar),at.assert.any([at.default.object,at.default.string,at.default.undefined],r.searchParams),at.assert.any([at.default.object,at.default.string,at.default.undefined],r.cache),at.assert.any([at.default.object,at.default.number,at.default.undefined],r.timeout),at.assert.any([at.default.object,at.default.undefined],r.context),at.assert.any([at.default.object,at.default.undefined],r.hooks),at.assert.any([at.default.boolean,at.default.undefined],r.decompress),at.assert.any([at.default.boolean,at.default.undefined],r.ignoreInvalidCookies),at.assert.any([at.default.boolean,at.default.undefined],r.followRedirect),at.assert.any([at.default.number,at.default.undefined],r.maxRedirects),at.assert.any([at.default.boolean,at.default.undefined],r.throwHttpErrors),at.assert.any([at.default.boolean,at.default.undefined],r.http2),at.assert.any([at.default.boolean,at.default.undefined],r.allowGetBody),at.assert.any([at.default.string,at.default.undefined],r.localAddress),at.assert.any([zge.isDnsLookupIpVersion,at.default.undefined],r.dnsLookupIpVersion),at.assert.any([at.default.object,at.default.undefined],r.https),at.assert.any([at.default.boolean,at.default.undefined],r.rejectUnauthorized),r.https&&(at.assert.any([at.default.boolean,at.default.undefined],r.https.rejectUnauthorized),at.assert.any([at.default.function_,at.default.undefined],r.https.checkServerIdentity),at.assert.any([at.default.string,at.default.object,at.default.array,at.default.undefined],r.https.certificateAuthority),at.assert.any([at.default.string,at.default.object,at.default.array,at.default.undefined],r.https.key),at.assert.any([at.default.string,at.default.object,at.default.array,at.default.undefined],r.https.certificate),at.assert.any([at.default.string,at.default.undefined],r.https.passphrase),at.assert.any([at.default.string,at.default.buffer,at.default.array,at.default.undefined],r.https.pfx)),at.assert.any([at.default.object,at.default.undefined],r.cacheOptions),at.default.string(r.method)?r.method=r.method.toUpperCase():r.method="GET",r.headers===s?.headers?r.headers={...r.headers}:r.headers=cdt({...s?.headers,...r.headers}),"slashes"in r)throw new TypeError("The legacy `url.Url` has been deprecated. Use `URL` instead.");if("auth"in r)throw new TypeError("Parameter `auth` is deprecated. Use `username` / `password` instead.");if("searchParams"in r&&r.searchParams&&r.searchParams!==s?.searchParams){let P;if(at.default.string(r.searchParams)||r.searchParams instanceof B0.URLSearchParams)P=new B0.URLSearchParams(r.searchParams);else{Edt(r.searchParams),P=new B0.URLSearchParams;for(let I in r.searchParams){let R=r.searchParams[I];R===null?P.append(I,""):R!==void 0&&P.append(I,R)}}(a=s?.searchParams)===null||a===void 0||a.forEach((I,R)=>{P.has(R)||P.append(R,I)}),r.searchParams=P}if(r.username=(n=r.username)!==null&&n!==void 0?n:"",r.password=(c=r.password)!==null&&c!==void 0?c:"",at.default.undefined(r.prefixUrl)?r.prefixUrl=(f=s?.prefixUrl)!==null&&f!==void 0?f:"":(r.prefixUrl=r.prefixUrl.toString(),r.prefixUrl!==""&&!r.prefixUrl.endsWith("/")&&(r.prefixUrl+="/")),at.default.string(r.url)){if(r.url.startsWith("/"))throw new Error("`input` must not start with a slash when using `prefixUrl`");r.url=Jge.default(r.prefixUrl+r.url,r)}else(at.default.undefined(r.url)&&r.prefixUrl!==""||r.protocol)&&(r.url=Jge.default(r.prefixUrl,r));if(r.url){"port"in r&&delete r.port;let{prefixUrl:P}=r;Object.defineProperty(r,"prefixUrl",{set:R=>{let N=r.url;if(!N.href.startsWith(R))throw new Error(`Cannot change \`prefixUrl\` from ${P} to ${R}: ${N.href}`);r.url=new B0.URL(R+N.href.slice(P.length)),P=R},get:()=>P});let{protocol:I}=r.url;if(I==="unix:"&&(I="http:",r.url=new B0.URL(`http://unix${r.url.pathname}${r.url.search}`)),r.searchParams&&(r.url.search=r.searchParams.toString()),I!=="http:"&&I!=="https:")throw new oT(r);r.username===""?r.username=r.url.username:r.url.username=r.username,r.password===""?r.password=r.url.password:r.url.password=r.password}let{cookieJar:E}=r;if(E){let{setCookie:P,getCookieString:I}=E;at.assert.function_(P),at.assert.function_(I),P.length===4&&I.length===0&&(P=qge.promisify(P.bind(r.cookieJar)),I=qge.promisify(I.bind(r.cookieJar)),r.cookieJar={setCookie:P,getCookieString:I})}let{cache:C}=r;if(C&&(yj.has(C)||yj.set(C,new Yge((P,I)=>{let R=P[go](P,I);return at.default.promise(R)&&(R.once=(N,U)=>{if(N==="error")R.catch(U);else if(N==="abort")(async()=>{try{(await R).once("abort",U)}catch{}})();else throw new Error(`Unknown HTTP2 promise event: ${N}`);return R}),R},C))),r.cacheOptions={...r.cacheOptions},r.dnsCache===!0)dj||(dj=new odt.default),r.dnsCache=dj;else if(!at.default.undefined(r.dnsCache)&&!r.dnsCache.lookup)throw new TypeError(`Parameter \`dnsCache\` must be a CacheableLookup instance or a boolean, got ${at.default(r.dnsCache)}`);at.default.number(r.timeout)?r.timeout={request:r.timeout}:s&&r.timeout!==s.timeout?r.timeout={...s.timeout,...r.timeout}:r.timeout={...r.timeout},r.context||(r.context={});let S=r.hooks===s?.hooks;r.hooks={...r.hooks};for(let P of Ln.knownHookEvents)if(P in r.hooks)if(at.default.array(r.hooks[P]))r.hooks[P]=[...r.hooks[P]];else throw new TypeError(`Parameter \`${P}\` must be an Array, got ${at.default(r.hooks[P])}`);else r.hooks[P]=[];if(s&&!S)for(let P of Ln.knownHookEvents)s.hooks[P].length>0&&(r.hooks[P]=[...s.hooks[P],...r.hooks[P]]);if("family"in r&&v0.default('"options.family" was never documented, please use "options.dnsLookupIpVersion"'),s?.https&&(r.https={...s.https,...r.https}),"rejectUnauthorized"in r&&v0.default('"options.rejectUnauthorized" is now deprecated, please use "options.https.rejectUnauthorized"'),"checkServerIdentity"in r&&v0.default('"options.checkServerIdentity" was never documented, please use "options.https.checkServerIdentity"'),"ca"in r&&v0.default('"options.ca" was never documented, please use "options.https.certificateAuthority"'),"key"in r&&v0.default('"options.key" was never documented, please use "options.https.key"'),"cert"in r&&v0.default('"options.cert" was never documented, please use "options.https.certificate"'),"passphrase"in r&&v0.default('"options.passphrase" was never documented, please use "options.https.passphrase"'),"pfx"in r&&v0.default('"options.pfx" was never documented, please use "options.https.pfx"'),"followRedirects"in r)throw new TypeError("The `followRedirects` option does not exist. Use `followRedirect` instead.");if(r.agent){for(let P in r.agent)if(P!=="http"&&P!=="https"&&P!=="http2")throw new TypeError(`Expected the \`options.agent\` properties to be \`http\`, \`https\` or \`http2\`, got \`${P}\``)}return r.maxRedirects=(p=r.maxRedirects)!==null&&p!==void 0?p:0,Ln.setNonEnumerableProperties([s,h],r),ddt.default(r,s)}_lockWrite(){let e=()=>{throw new TypeError("The payload has been already provided")};this.write=e,this.end=e}_unlockWrite(){this.write=super.write,this.end=super.end}async _finalizeBody(){let{options:e}=this,{headers:r}=e,s=!at.default.undefined(e.form),a=!at.default.undefined(e.json),n=!at.default.undefined(e.body),c=s||a||n,f=Ln.withoutBody.has(e.method)&&!(e.method==="GET"&&e.allowGetBody);if(this._cannotHaveBody=f,c){if(f)throw new TypeError(`The \`${e.method}\` method cannot be used with a body`);if([n,s,a].filter(p=>p).length>1)throw new TypeError("The `body`, `json` and `form` options are mutually exclusive");if(n&&!(e.body instanceof Gge.Readable)&&!at.default.string(e.body)&&!at.default.buffer(e.body)&&!Vge.default(e.body))throw new TypeError("The `body` option must be a stream.Readable, string or Buffer");if(s&&!at.default.object(e.form))throw new TypeError("The `form` option must be an Object");{let p=!at.default.string(r["content-type"]);n?(Vge.default(e.body)&&p&&(r["content-type"]=`multipart/form-data; boundary=${e.body.getBoundary()}`),this[S0]=e.body):s?(p&&(r["content-type"]="application/x-www-form-urlencoded"),this[S0]=new B0.URLSearchParams(e.form).toString()):(p&&(r["content-type"]="application/json"),this[S0]=e.stringifyJson(e.json));let h=await udt.default(this[S0],e.headers);at.default.undefined(r["content-length"])&&at.default.undefined(r["transfer-encoding"])&&!f&&!at.default.undefined(h)&&(r["content-length"]=String(h))}}else f?this._lockWrite():this._unlockWrite();this[CI]=Number(r["content-length"])||void 0}async _onResponseBase(e){let{options:r}=this,{url:s}=r;this[ede]=e,r.decompress&&(e=adt(e));let a=e.statusCode,n=e;n.statusMessage=n.statusMessage?n.statusMessage:Wge.STATUS_CODES[a],n.url=r.url.toString(),n.requestUrl=this.requestUrl,n.redirectUrls=this.redirects,n.request=this,n.isFromCache=e.fromCache||!1,n.ip=this.ip,n.retryCount=this.retryCount,this[Xge]=n.isFromCache,this[EI]=Number(e.headers["content-length"])||void 0,this[eT]=e,e.once("end",()=>{this[EI]=this[II],this.emit("downloadProgress",this.downloadProgress)}),e.once("error",f=>{e.destroy(),this._beforeError(new hv(f,this))}),e.once("aborted",()=>{this._beforeError(new hv({name:"Error",message:"The server aborted pending request",code:"ECONNRESET"},this))}),this.emit("downloadProgress",this.downloadProgress);let c=e.headers["set-cookie"];if(at.default.object(r.cookieJar)&&c){let f=c.map(async p=>r.cookieJar.setCookie(p,s.toString()));r.ignoreInvalidCookies&&(f=f.map(async p=>p.catch(()=>{})));try{await Promise.all(f)}catch(p){this._beforeError(p);return}}if(r.followRedirect&&e.headers.location&&wdt.has(a)){if(e.resume(),this[go]&&(this[mj](),delete this[go],this[Zge]()),(a===303&&r.method!=="GET"&&r.method!=="HEAD"||!r.methodRewriting)&&(r.method="GET","body"in r&&delete r.body,"json"in r&&delete r.json,"form"in r&&delete r.form,this[S0]=void 0,delete r.headers["content-length"]),this.redirects.length>=r.maxRedirects){this._beforeError(new tT(this));return}try{let p=Buffer.from(e.headers.location,"binary").toString(),h=new B0.URL(p,s),E=h.toString();decodeURI(E),h.hostname!==s.hostname||h.port!==s.port?("host"in r.headers&&delete r.headers.host,"cookie"in r.headers&&delete r.headers.cookie,"authorization"in r.headers&&delete r.headers.authorization,(r.username||r.password)&&(r.username="",r.password="")):(h.username=r.username,h.password=r.password),this.redirects.push(E),r.url=h;for(let C of r.hooks.beforeRedirect)await C(r,n);this.emit("redirect",n,r),await this._makeRequest()}catch(p){this._beforeError(p);return}return}if(r.isStream&&r.throwHttpErrors&&!gdt.isResponseOk(n)){this._beforeError(new rT(n));return}e.on("readable",()=>{this[$Q]&&this._read()}),this.on("resume",()=>{e.resume()}),this.on("pause",()=>{e.pause()}),e.once("end",()=>{this.push(null)}),this.emit("response",e);for(let f of this[XQ])if(!f.headersSent){for(let p in e.headers){let h=r.decompress?p!=="content-encoding":!0,E=e.headers[p];h&&f.setHeader(p,E)}f.statusCode=a}}async _onResponse(e){try{await this._onResponseBase(e)}catch(r){this._beforeError(r)}}_onRequest(e){let{options:r}=this,{timeout:s,url:a}=r;sdt.default(e),this[mj]=Kge.default(e,s,a);let n=r.cache?"cacheableResponse":"response";e.once(n,p=>{this._onResponse(p)}),e.once("error",p=>{var h;e.destroy(),(h=e.res)===null||h===void 0||h.removeAllListeners("end"),p=p instanceof Kge.TimeoutError?new sT(p,this.timings,this):new fs(p.message,p,this),this._beforeError(p)}),this[Zge]=fdt.default(e,this,vdt),this[go]=e,this.emit("uploadProgress",this.uploadProgress);let c=this[S0],f=this.redirects.length===0?this:e;at.default.nodeStream(c)?(c.pipe(f),c.once("error",p=>{this._beforeError(new iT(p,this))})):(this._unlockWrite(),at.default.undefined(c)?(this._cannotHaveBody||this._noPipe)&&(f.end(),this._lockWrite()):(this._writeRequest(c,void 0,()=>{}),f.end(),this._lockWrite())),this.emit("request",e)}async _createCacheableRequest(e,r){return new Promise((s,a)=>{Object.assign(r,Adt.default(e)),delete r.url;let n,c=yj.get(r.cache)(r,async f=>{f._readableState.autoDestroy=!1,n&&(await n).emit("cacheableResponse",f),s(f)});r.url=e,c.once("error",a),c.once("request",async f=>{n=f,s(n)})})}async _makeRequest(){var e,r,s,a,n;let{options:c}=this,{headers:f}=c;for(let U in f)if(at.default.undefined(f[U]))delete f[U];else if(at.default.null_(f[U]))throw new TypeError(`Use \`undefined\` instead of \`null\` to delete the \`${U}\` header`);if(c.decompress&&at.default.undefined(f["accept-encoding"])&&(f["accept-encoding"]=ydt?"gzip, deflate, br":"gzip, deflate"),c.cookieJar){let U=await c.cookieJar.getCookieString(c.url.toString());at.default.nonEmptyString(U)&&(c.headers.cookie=U)}for(let U of c.hooks.beforeRequest){let W=await U(c);if(!at.default.undefined(W)){c.request=()=>W;break}}c.body&&this[S0]!==c.body&&(this[S0]=c.body);let{agent:p,request:h,timeout:E,url:C}=c;if(c.dnsCache&&!("lookup"in c)&&(c.lookup=c.dnsCache.lookup),C.hostname==="unix"){let U=/(?.+?):(?.+)/.exec(`${C.pathname}${C.search}`);if(U?.groups){let{socketPath:W,path:te}=U.groups;Object.assign(c,{socketPath:W,path:te,host:""})}}let S=C.protocol==="https:",P;c.http2?P=ldt.auto:P=S?idt.request:Wge.request;let I=(e=c.request)!==null&&e!==void 0?e:P,R=c.cache?this._createCacheableRequest:I;p&&!c.http2&&(c.agent=p[S?"https":"http"]),c[go]=I,delete c.request,delete c.timeout;let N=c;if(N.shared=(r=c.cacheOptions)===null||r===void 0?void 0:r.shared,N.cacheHeuristic=(s=c.cacheOptions)===null||s===void 0?void 0:s.cacheHeuristic,N.immutableMinTimeToLive=(a=c.cacheOptions)===null||a===void 0?void 0:a.immutableMinTimeToLive,N.ignoreCargoCult=(n=c.cacheOptions)===null||n===void 0?void 0:n.ignoreCargoCult,c.dnsLookupIpVersion!==void 0)try{N.family=zge.dnsLookupIpVersionToFamily(c.dnsLookupIpVersion)}catch{throw new Error("Invalid `dnsLookupIpVersion` option value")}c.https&&("rejectUnauthorized"in c.https&&(N.rejectUnauthorized=c.https.rejectUnauthorized),c.https.checkServerIdentity&&(N.checkServerIdentity=c.https.checkServerIdentity),c.https.certificateAuthority&&(N.ca=c.https.certificateAuthority),c.https.certificate&&(N.cert=c.https.certificate),c.https.key&&(N.key=c.https.key),c.https.passphrase&&(N.passphrase=c.https.passphrase),c.https.pfx&&(N.pfx=c.https.pfx));try{let U=await R(C,N);at.default.undefined(U)&&(U=P(C,N)),c.request=h,c.timeout=E,c.agent=p,c.https&&("rejectUnauthorized"in c.https&&delete N.rejectUnauthorized,c.https.checkServerIdentity&&delete N.checkServerIdentity,c.https.certificateAuthority&&delete N.ca,c.https.certificate&&delete N.cert,c.https.key&&delete N.key,c.https.passphrase&&delete N.passphrase,c.https.pfx&&delete N.pfx),Idt(U)?this._onRequest(U):this.writable?(this.once("finish",()=>{this._onResponse(U)}),this._unlockWrite(),this.end(),this._lockWrite()):this._onResponse(U)}catch(U){throw U instanceof Yge.CacheError?new nT(U,this):new fs(U.message,U,this)}}async _error(e){try{for(let r of this.options.hooks.beforeError)e=await r(e)}catch(r){e=new fs(r.message,r,this)}this.destroy(e)}_beforeError(e){if(this[BI])return;let{options:r}=this,s=this.retryCount+1;this[BI]=!0,e instanceof fs||(e=new fs(e.message,e,this));let a=e,{response:n}=a;(async()=>{if(n&&!n.body){n.setEncoding(this._readableState.encoding);try{n.rawBody=await hdt.default(n),n.body=n.rawBody.toString()}catch{}}if(this.listenerCount("retry")!==0){let c;try{let f;n&&"retry-after"in n.headers&&(f=Number(n.headers["retry-after"]),Number.isNaN(f)?(f=Date.parse(n.headers["retry-after"])-Date.now(),f<=0&&(f=1)):f*=1e3),c=await r.retry.calculateDelay({attemptCount:s,retryOptions:r.retry,error:a,retryAfter:f,computedValue:mdt.default({attemptCount:s,retryOptions:r.retry,error:a,retryAfter:f,computedValue:0})})}catch(f){this._error(new fs(f.message,f,this));return}if(c){let f=async()=>{try{for(let p of this.options.hooks.beforeRetry)await p(this.options,a,s)}catch(p){this._error(new fs(p.message,e,this));return}this.destroyed||(this.destroy(),this.emit("retry",s,e))};this[tde]=setTimeout(f,c);return}}this._error(a)})()}_read(){this[$Q]=!0;let e=this[eT];if(e&&!this[BI]){e.readableLength&&(this[$Q]=!1);let r;for(;(r=e.read())!==null;){this[II]+=r.length,this[$ge]=!0;let s=this.downloadProgress;s.percent<1&&this.emit("downloadProgress",s),this.push(r)}}}_write(e,r,s){let a=()=>{this._writeRequest(e,r,s)};this.requestInitialized?a():this[pv].push(a)}_writeRequest(e,r,s){this[go].destroyed||(this._progressCallbacks.push(()=>{this[wI]+=Buffer.byteLength(e,r);let a=this.uploadProgress;a.percent<1&&this.emit("uploadProgress",a)}),this[go].write(e,r,a=>{!a&&this._progressCallbacks.length>0&&this._progressCallbacks.shift()(),s(a)}))}_final(e){let r=()=>{for(;this._progressCallbacks.length!==0;)this._progressCallbacks.shift()();if(!(go in this)){e();return}if(this[go].destroyed){e();return}this[go].end(s=>{s||(this[CI]=this[wI],this.emit("uploadProgress",this.uploadProgress),this[go].emit("upload-complete")),e(s)})};this.requestInitialized?r():this[pv].push(r)}_destroy(e,r){var s;this[BI]=!0,clearTimeout(this[tde]),go in this&&(this[mj](),!((s=this[eT])===null||s===void 0)&&s.complete||this[go].destroy()),e!==null&&!at.default.undefined(e)&&!(e instanceof fs)&&(e=new fs(e.message,e,this)),r(e)}get _isAboutToError(){return this[BI]}get ip(){var e;return(e=this.socket)===null||e===void 0?void 0:e.remoteAddress}get aborted(){var e,r,s;return((r=(e=this[go])===null||e===void 0?void 0:e.destroyed)!==null&&r!==void 0?r:this.destroyed)&&!(!((s=this[ede])===null||s===void 0)&&s.complete)}get socket(){var e,r;return(r=(e=this[go])===null||e===void 0?void 0:e.socket)!==null&&r!==void 0?r:void 0}get downloadProgress(){let e;return this[EI]?e=this[II]/this[EI]:this[EI]===this[II]?e=1:e=0,{percent:e,transferred:this[II],total:this[EI]}}get uploadProgress(){let e;return this[CI]?e=this[wI]/this[CI]:this[CI]===this[wI]?e=1:e=0,{percent:e,transferred:this[wI],total:this[CI]}}get timings(){var e;return(e=this[go])===null||e===void 0?void 0:e.timings}get isFromCache(){return this[Xge]}pipe(e,r){if(this[$ge])throw new Error("Failed to pipe. The response has been emitted already.");return e instanceof gj.ServerResponse&&this[XQ].add(e),super.pipe(e,r)}unpipe(e){return e instanceof gj.ServerResponse&&this[XQ].delete(e),super.unpipe(e),this}};Ln.default=aT});var dv=L(Wu=>{"use strict";var Sdt=Wu&&Wu.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r),Object.defineProperty(t,s,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),Ddt=Wu&&Wu.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&Sdt(e,t,r)};Object.defineProperty(Wu,"__esModule",{value:!0});Wu.CancelError=Wu.ParseError=void 0;var rde=gv(),Ej=class extends rde.RequestError{constructor(e,r){let{options:s}=r.request;super(`${e.message} in "${s.url.toString()}"`,e,r.request),this.name="ParseError"}};Wu.ParseError=Ej;var Ij=class extends rde.RequestError{constructor(e){super("Promise was canceled",{},e),this.name="CancelError"}get isCanceled(){return!0}};Wu.CancelError=Ij;Ddt(gv(),Wu)});var ide=L(Cj=>{"use strict";Object.defineProperty(Cj,"__esModule",{value:!0});var nde=dv(),bdt=(t,e,r,s)=>{let{rawBody:a}=t;try{if(e==="text")return a.toString(s);if(e==="json")return a.length===0?"":r(a.toString());if(e==="buffer")return a;throw new nde.ParseError({message:`Unknown body type '${e}'`,name:"Error"},t)}catch(n){throw new nde.ParseError(n,t)}};Cj.default=bdt});var wj=L(D0=>{"use strict";var Pdt=D0&&D0.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r),Object.defineProperty(t,s,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),xdt=D0&&D0.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&Pdt(e,t,r)};Object.defineProperty(D0,"__esModule",{value:!0});var kdt=ye("events"),Qdt=Mp(),Tdt=n0e(),lT=dv(),sde=ide(),ode=gv(),Rdt=ij(),Fdt=fj(),ade=Aj(),Ndt=["request","response","redirect","uploadProgress","downloadProgress"];function lde(t){let e,r,s=new kdt.EventEmitter,a=new Tdt((c,f,p)=>{let h=E=>{let C=new ode.default(void 0,t);C.retryCount=E,C._noPipe=!0,p(()=>C.destroy()),p.shouldReject=!1,p(()=>f(new lT.CancelError(C))),e=C,C.once("response",async I=>{var R;if(I.retryCount=E,I.request.aborted)return;let N;try{N=await Fdt.default(C),I.rawBody=N}catch{return}if(C._isAboutToError)return;let U=((R=I.headers["content-encoding"])!==null&&R!==void 0?R:"").toLowerCase(),W=["gzip","deflate","br"].includes(U),{options:te}=C;if(W&&!te.decompress)I.body=N;else try{I.body=sde.default(I,te.responseType,te.parseJson,te.encoding)}catch(ie){if(I.body=N.toString(),ade.isResponseOk(I)){C._beforeError(ie);return}}try{for(let[ie,Ae]of te.hooks.afterResponse.entries())I=await Ae(I,async ce=>{let me=ode.default.normalizeArguments(void 0,{...ce,retry:{calculateDelay:()=>0},throwHttpErrors:!1,resolveBodyOnly:!1},te);me.hooks.afterResponse=me.hooks.afterResponse.slice(0,ie);for(let Be of me.hooks.beforeRetry)await Be(me);let pe=lde(me);return p(()=>{pe.catch(()=>{}),pe.cancel()}),pe})}catch(ie){C._beforeError(new lT.RequestError(ie.message,ie,C));return}if(!ade.isResponseOk(I)){C._beforeError(new lT.HTTPError(I));return}r=I,c(C.options.resolveBodyOnly?I.body:I)});let S=I=>{if(a.isCanceled)return;let{options:R}=C;if(I instanceof lT.HTTPError&&!R.throwHttpErrors){let{response:N}=I;c(C.options.resolveBodyOnly?N.body:N);return}f(I)};C.once("error",S);let P=C.options.body;C.once("retry",(I,R)=>{var N,U;if(P===((N=R.request)===null||N===void 0?void 0:N.options.body)&&Qdt.default.nodeStream((U=R.request)===null||U===void 0?void 0:U.options.body)){S(R);return}h(I)}),Rdt.default(C,s,Ndt)};h(0)});a.on=(c,f)=>(s.on(c,f),a);let n=c=>{let f=(async()=>{await a;let{options:p}=r.request;return sde.default(r,c,p.parseJson,p.encoding)})();return Object.defineProperties(f,Object.getOwnPropertyDescriptors(a)),f};return a.json=()=>{let{headers:c}=e.options;return!e.writableFinished&&c.accept===void 0&&(c.accept="application/json"),n("json")},a.buffer=()=>n("buffer"),a.text=()=>n("text"),a}D0.default=lde;xdt(dv(),D0)});var cde=L(Bj=>{"use strict";Object.defineProperty(Bj,"__esModule",{value:!0});var Odt=dv();function Ldt(t,...e){let r=(async()=>{if(t instanceof Odt.RequestError)try{for(let a of e)if(a)for(let n of a)t=await n(t)}catch(a){t=a}throw t})(),s=()=>r;return r.json=s,r.text=s,r.buffer=s,r.on=s,r}Bj.default=Ldt});var Ade=L(vj=>{"use strict";Object.defineProperty(vj,"__esModule",{value:!0});var ude=Mp();function fde(t){for(let e of Object.values(t))(ude.default.plainObject(e)||ude.default.array(e))&&fde(e);return Object.freeze(t)}vj.default=fde});var hde=L(pde=>{"use strict";Object.defineProperty(pde,"__esModule",{value:!0})});var Sj=L(Lc=>{"use strict";var Mdt=Lc&&Lc.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r),Object.defineProperty(t,s,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),_dt=Lc&&Lc.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&Mdt(e,t,r)};Object.defineProperty(Lc,"__esModule",{value:!0});Lc.defaultHandler=void 0;var gde=Mp(),Oc=wj(),Udt=cde(),uT=gv(),Hdt=Ade(),jdt={RequestError:Oc.RequestError,CacheError:Oc.CacheError,ReadError:Oc.ReadError,HTTPError:Oc.HTTPError,MaxRedirectsError:Oc.MaxRedirectsError,TimeoutError:Oc.TimeoutError,ParseError:Oc.ParseError,CancelError:Oc.CancelError,UnsupportedProtocolError:Oc.UnsupportedProtocolError,UploadError:Oc.UploadError},qdt=async t=>new Promise(e=>{setTimeout(e,t)}),{normalizeArguments:cT}=uT.default,dde=(...t)=>{let e;for(let r of t)e=cT(void 0,r,e);return e},Gdt=t=>t.isStream?new uT.default(void 0,t):Oc.default(t),Wdt=t=>"defaults"in t&&"options"in t.defaults,Ydt=["get","post","put","patch","head","delete"];Lc.defaultHandler=(t,e)=>e(t);var mde=(t,e)=>{if(t)for(let r of t)r(e)},yde=t=>{t._rawHandlers=t.handlers,t.handlers=t.handlers.map(s=>(a,n)=>{let c,f=s(a,p=>(c=n(p),c));if(f!==c&&!a.isStream&&c){let p=f,{then:h,catch:E,finally:C}=p;Object.setPrototypeOf(p,Object.getPrototypeOf(c)),Object.defineProperties(p,Object.getOwnPropertyDescriptors(c)),p.then=h,p.catch=E,p.finally=C}return f});let e=(s,a={},n)=>{var c,f;let p=0,h=E=>t.handlers[p++](E,p===t.handlers.length?Gdt:h);if(gde.default.plainObject(s)){let E={...s,...a};uT.setNonEnumerableProperties([s,a],E),a=E,s=void 0}try{let E;try{mde(t.options.hooks.init,a),mde((c=a.hooks)===null||c===void 0?void 0:c.init,a)}catch(S){E=S}let C=cT(s,a,n??t.options);if(C[uT.kIsNormalizedAlready]=!0,E)throw new Oc.RequestError(E.message,E,C);return h(C)}catch(E){if(a.isStream)throw E;return Udt.default(E,t.options.hooks.beforeError,(f=a.hooks)===null||f===void 0?void 0:f.beforeError)}};e.extend=(...s)=>{let a=[t.options],n=[...t._rawHandlers],c;for(let f of s)Wdt(f)?(a.push(f.defaults.options),n.push(...f.defaults._rawHandlers),c=f.defaults.mutableDefaults):(a.push(f),"handlers"in f&&n.push(...f.handlers),c=f.mutableDefaults);return n=n.filter(f=>f!==Lc.defaultHandler),n.length===0&&n.push(Lc.defaultHandler),yde({options:dde(...a),handlers:n,mutableDefaults:!!c})};let r=async function*(s,a){let n=cT(s,a,t.options);n.resolveBodyOnly=!1;let c=n.pagination;if(!gde.default.object(c))throw new TypeError("`options.pagination` must be implemented");let f=[],{countLimit:p}=c,h=0;for(;h{let n=[];for await(let c of r(s,a))n.push(c);return n},e.paginate.each=r,e.stream=(s,a)=>e(s,{...a,isStream:!0});for(let s of Ydt)e[s]=(a,n)=>e(a,{...n,method:s}),e.stream[s]=(a,n)=>e(a,{...n,method:s,isStream:!0});return Object.assign(e,jdt),Object.defineProperty(e,"defaults",{value:t.mutableDefaults?t:Hdt.default(t),writable:t.mutableDefaults,configurable:t.mutableDefaults,enumerable:!0}),e.mergeOptions=dde,e};Lc.default=yde;_dt(hde(),Lc)});var Cde=L((_p,fT)=>{"use strict";var Vdt=_p&&_p.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r),Object.defineProperty(t,s,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),Ede=_p&&_p.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&Vdt(e,t,r)};Object.defineProperty(_p,"__esModule",{value:!0});var Kdt=ye("url"),Ide=Sj(),Jdt={options:{method:"GET",retry:{limit:2,methods:["GET","PUT","HEAD","DELETE","OPTIONS","TRACE"],statusCodes:[408,413,429,500,502,503,504,521,522,524],errorCodes:["ETIMEDOUT","ECONNRESET","EADDRINUSE","ECONNREFUSED","EPIPE","ENOTFOUND","ENETUNREACH","EAI_AGAIN"],maxRetryAfter:void 0,calculateDelay:({computedValue:t})=>t},timeout:{},headers:{"user-agent":"got (https://github.com/sindresorhus/got)"},hooks:{init:[],beforeRequest:[],beforeRedirect:[],beforeRetry:[],beforeError:[],afterResponse:[]},cache:void 0,dnsCache:void 0,decompress:!0,throwHttpErrors:!0,followRedirect:!0,isStream:!1,responseType:"text",resolveBodyOnly:!1,maxRedirects:10,prefixUrl:"",methodRewriting:!0,ignoreInvalidCookies:!1,context:{},http2:!1,allowGetBody:!1,https:void 0,pagination:{transform:t=>t.request.options.responseType==="json"?t.body:JSON.parse(t.body),paginate:t=>{if(!Reflect.has(t.headers,"link"))return!1;let e=t.headers.link.split(","),r;for(let s of e){let a=s.split(";");if(a[1].includes("next")){r=a[0].trimStart().trim(),r=r.slice(1,-1);break}}return r?{url:new Kdt.URL(r)}:!1},filter:()=>!0,shouldContinue:()=>!0,countLimit:1/0,backoff:0,requestLimit:1e4,stackAllItems:!0},parseJson:t=>JSON.parse(t),stringifyJson:t=>JSON.stringify(t),cacheOptions:{}},handlers:[Ide.defaultHandler],mutableDefaults:!1},Dj=Ide.default(Jdt);_p.default=Dj;fT.exports=Dj;fT.exports.default=Dj;fT.exports.__esModule=!0;Ede(Sj(),_p);Ede(wj(),_p)});var An={};Vt(An,{Method:()=>Pde,del:()=>emt,get:()=>kj,getNetworkSettings:()=>bde,post:()=>Qj,put:()=>$dt,request:()=>mv});function vde(t){let e=new URL(t),r={host:e.hostname,headers:{}};return e.port&&(r.port=Number(e.port)),e.username&&e.password&&(r.proxyAuth=`${e.username}:${e.password}`),{proxy:r}}async function bj(t){return Vl(Bde,t,()=>le.readFilePromise(t).then(e=>(Bde.set(t,e),e)))}function Xdt({statusCode:t,statusMessage:e},r){let s=Ut(r,t,Ct.NUMBER),a=`https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/${t}`;return JE(r,`${s}${e?` (${e})`:""}`,a)}async function AT(t,{configuration:e,customErrorMessage:r}){try{return await t}catch(s){if(s.name!=="HTTPError")throw s;let a=r?.(s,e)??s.response.body?.error;a==null&&(s.message.startsWith("Response code")?a="The remote server failed to provide the requested resource":a=s.message),s.code==="ETIMEDOUT"&&s.event==="socket"&&(a+=`(can be increased via ${Ut(e,"httpTimeout",Ct.SETTING)})`);let n=new Yt(35,a,c=>{s.response&&c.reportError(35,` ${Zf(e,{label:"Response Code",value:Hu(Ct.NO_HINT,Xdt(s.response,e))})}`),s.request&&(c.reportError(35,` ${Zf(e,{label:"Request Method",value:Hu(Ct.NO_HINT,s.request.options.method)})}`),c.reportError(35,` ${Zf(e,{label:"Request URL",value:Hu(Ct.URL,s.request.requestUrl)})}`)),s.request.redirects.length>0&&c.reportError(35,` ${Zf(e,{label:"Request Redirects",value:Hu(Ct.NO_HINT,I3(e,s.request.redirects,Ct.URL))})}`),s.request.retryCount===s.request.options.retry.limit&&c.reportError(35,` ${Zf(e,{label:"Request Retry Count",value:Hu(Ct.NO_HINT,`${Ut(e,s.request.retryCount,Ct.NUMBER)} (can be increased via ${Ut(e,"httpRetry",Ct.SETTING)})`)})}`)});throw n.originalError=s,n}}function bde(t,e){let r=[...e.configuration.get("networkSettings")].sort(([c],[f])=>f.length-c.length),s={enableNetwork:void 0,httpsCaFilePath:void 0,httpProxy:void 0,httpsProxy:void 0,httpsKeyFilePath:void 0,httpsCertFilePath:void 0},a=Object.keys(s),n=typeof t=="string"?new URL(t):t;for(let[c,f]of r)if(xj.default.isMatch(n.hostname,c))for(let p of a){let h=f.get(p);h!==null&&typeof s[p]>"u"&&(s[p]=h)}for(let c of a)typeof s[c]>"u"&&(s[c]=e.configuration.get(c));return s}async function mv(t,e,{configuration:r,headers:s,jsonRequest:a,jsonResponse:n,method:c="GET",wrapNetworkRequest:f}){let p={target:t,body:e,configuration:r,headers:s,jsonRequest:a,jsonResponse:n,method:c},h=async()=>await tmt(t,e,p),E=typeof f<"u"?await f(h,p):h;return await(await r.reduceHook(S=>S.wrapNetworkRequest,E,p))()}async function kj(t,{configuration:e,jsonResponse:r,customErrorMessage:s,wrapNetworkRequest:a,...n}){let c=()=>AT(mv(t,null,{configuration:e,wrapNetworkRequest:a,...n}),{configuration:e,customErrorMessage:s}).then(p=>p.body),f=await(typeof a<"u"?c():Vl(wde,t,()=>c().then(p=>(wde.set(t,p),p))));return r?JSON.parse(f.toString()):f}async function $dt(t,e,{customErrorMessage:r,...s}){return(await AT(mv(t,e,{...s,method:"PUT"}),{customErrorMessage:r,configuration:s.configuration})).body}async function Qj(t,e,{customErrorMessage:r,...s}){return(await AT(mv(t,e,{...s,method:"POST"}),{customErrorMessage:r,configuration:s.configuration})).body}async function emt(t,{customErrorMessage:e,...r}){return(await AT(mv(t,null,{...r,method:"DELETE"}),{customErrorMessage:e,configuration:r.configuration})).body}async function tmt(t,e,{configuration:r,headers:s,jsonRequest:a,jsonResponse:n,method:c="GET"}){let f=typeof t=="string"?new URL(t):t,p=bde(f,{configuration:r});if(p.enableNetwork===!1)throw new Yt(80,`Request to '${f.href}' has been blocked because of your configuration settings`);if(f.protocol==="http:"&&!xj.default.isMatch(f.hostname,r.get("unsafeHttpWhitelist")))throw new Yt(81,`Unsafe http requests must be explicitly whitelisted in your configuration (${f.hostname})`);let E={agent:{http:p.httpProxy?Pj.default.httpOverHttp(vde(p.httpProxy)):zdt,https:p.httpsProxy?Pj.default.httpsOverHttp(vde(p.httpsProxy)):Zdt},headers:s,method:c};E.responseType=n?"json":"buffer",e!==null&&(Buffer.isBuffer(e)||!a&&typeof e=="string"?E.body=e:E.json=e);let C=r.get("httpTimeout"),S=r.get("httpRetry"),P=r.get("enableStrictSsl"),I=p.httpsCaFilePath,R=p.httpsCertFilePath,N=p.httpsKeyFilePath,{default:U}=await Promise.resolve().then(()=>et(Cde())),W=I?await bj(I):void 0,te=R?await bj(R):void 0,ie=N?await bj(N):void 0,Ae=U.extend({timeout:{socket:C},retry:S,https:{rejectUnauthorized:P,certificateAuthority:W,certificate:te,key:ie},...E});return r.getLimit("networkConcurrency")(()=>Ae(f))}var Sde,Dde,xj,Pj,wde,Bde,zdt,Zdt,Pde,pT=It(()=>{bt();Sde=ye("https"),Dde=ye("http"),xj=et(Sa()),Pj=et(Xhe());Fc();Qc();kc();wde=new Map,Bde=new Map,zdt=new Dde.Agent({keepAlive:!0}),Zdt=new Sde.Agent({keepAlive:!0});Pde=(a=>(a.GET="GET",a.PUT="PUT",a.POST="POST",a.DELETE="DELETE",a))(Pde||{})});var As={};Vt(As,{availableParallelism:()=>Rj,getArchitecture:()=>yv,getArchitectureName:()=>omt,getArchitectureSet:()=>Tj,getCaller:()=>umt,major:()=>rmt,openUrl:()=>nmt});function smt(){if(process.platform==="darwin"||process.platform==="win32")return null;let t;try{t=le.readFileSync(imt)}catch{}if(typeof t<"u"){if(t&&(t.includes("GLIBC")||t.includes("libc")))return"glibc";if(t&&t.includes("musl"))return"musl"}let r=(process.report?.getReport()??{}).sharedObjects??[],s=/\/(?:(ld-linux-|[^/]+-linux-gnu\/)|(libc.musl-|ld-musl-))/;return p0(r,a=>{let n=a.match(s);if(!n)return p0.skip;if(n[1])return"glibc";if(n[2])return"musl";throw new Error("Assertion failed: Expected the libc variant to have been detected")})??null}function yv(){return kde=kde??{os:process.platform,cpu:process.arch,libc:smt()}}function omt(t=yv()){return t.libc?`${t.os}-${t.cpu}-${t.libc}`:`${t.os}-${t.cpu}`}function Tj(){let t=yv();return Qde=Qde??{os:[t.os],cpu:[t.cpu],libc:t.libc?[t.libc]:[]}}function cmt(t){let e=amt.exec(t);if(!e)return null;let r=e[2]&&e[2].indexOf("native")===0,s=e[2]&&e[2].indexOf("eval")===0,a=lmt.exec(e[2]);return s&&a!=null&&(e[2]=a[1],e[3]=a[2],e[4]=a[3]),{file:r?null:e[2],methodName:e[1]||"",arguments:r?[e[2]]:[],line:e[3]?+e[3]:null,column:e[4]?+e[4]:null}}function umt(){let e=new Error().stack.split(` +`)[3];return cmt(e)}function Rj(){return typeof hT.default.availableParallelism<"u"?hT.default.availableParallelism():Math.max(1,hT.default.cpus().length)}var hT,rmt,xde,nmt,imt,kde,Qde,amt,lmt,gT=It(()=>{bt();hT=et(ye("os"));dT();kc();rmt=Number(process.versions.node.split(".")[0]),xde=new Map([["darwin","open"],["linux","xdg-open"],["win32","explorer.exe"]]).get(process.platform),nmt=typeof xde<"u"?async t=>{try{return await Fj(xde,[t],{cwd:K.cwd()}),!0}catch{return!1}}:void 0,imt="/usr/bin/ldd";amt=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||\/|[a-z]:\\|\\\\).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,lmt=/\((\S*)(?::(\d+))(?::(\d+))\)/});function _j(t,e,r,s,a){let n=sv(r);if(s.isArray||s.type==="ANY"&&Array.isArray(n))return Array.isArray(n)?n.map((c,f)=>Nj(t,`${e}[${f}]`,c,s,a)):String(n).split(/,/).map(c=>Nj(t,e,c,s,a));if(Array.isArray(n))throw new Error(`Non-array configuration settings "${e}" cannot be an array`);return Nj(t,e,r,s,a)}function Nj(t,e,r,s,a){let n=sv(r);switch(s.type){case"ANY":return NQ(n);case"SHAPE":return hmt(t,e,r,s,a);case"MAP":return gmt(t,e,r,s,a)}if(n===null&&!s.isNullable&&s.default!==null)throw new Error(`Non-nullable configuration settings "${e}" cannot be set to null`);if(s.values?.includes(n))return n;let f=(()=>{if(s.type==="BOOLEAN"&&typeof n!="string")return qB(n);if(typeof n!="string")throw new Error(`Expected configuration setting "${e}" to be a string, got ${typeof n}`);let p=Jk(n,{env:t.env});switch(s.type){case"ABSOLUTE_PATH":{let h=a,E=fH(r);return E&&E[0]!=="<"&&(h=K.dirname(E)),K.resolve(h,ue.toPortablePath(p))}case"LOCATOR_LOOSE":return Rp(p,!1);case"NUMBER":return parseInt(p);case"LOCATOR":return Rp(p);case"BOOLEAN":return qB(p);default:return p}})();if(s.values&&!s.values.includes(f))throw new Error(`Invalid value, expected one of ${s.values.join(", ")}`);return f}function hmt(t,e,r,s,a){let n=sv(r);if(typeof n!="object"||Array.isArray(n))throw new nt(`Object configuration settings "${e}" must be an object`);let c=Uj(t,s,{ignoreArrays:!0});if(n===null)return c;for(let[f,p]of Object.entries(n)){let h=`${e}.${f}`;if(!s.properties[f])throw new nt(`Unrecognized configuration settings found: ${e}.${f} - run "yarn config -v" to see the list of settings supported in Yarn`);c.set(f,_j(t,h,p,s.properties[f],a))}return c}function gmt(t,e,r,s,a){let n=sv(r),c=new Map;if(typeof n!="object"||Array.isArray(n))throw new nt(`Map configuration settings "${e}" must be an object`);if(n===null)return c;for(let[f,p]of Object.entries(n)){let h=s.normalizeKeys?s.normalizeKeys(f):f,E=`${e}['${h}']`,C=s.valueDefinition;c.set(h,_j(t,E,p,C,a))}return c}function Uj(t,e,{ignoreArrays:r=!1}={}){switch(e.type){case"SHAPE":{if(e.isArray&&!r)return[];let s=new Map;for(let[a,n]of Object.entries(e.properties))s.set(a,Uj(t,n));return s}case"MAP":return e.isArray&&!r?[]:new Map;case"ABSOLUTE_PATH":return e.default===null?null:t.projectCwd===null?Array.isArray(e.default)?e.default.map(s=>K.normalize(s)):K.isAbsolute(e.default)?K.normalize(e.default):e.isNullable?null:void 0:Array.isArray(e.default)?e.default.map(s=>K.resolve(t.projectCwd,s)):K.resolve(t.projectCwd,e.default);default:return e.default}}function yT(t,e,r){if(e.type==="SECRET"&&typeof t=="string"&&r.hideSecrets)return pmt;if(e.type==="ABSOLUTE_PATH"&&typeof t=="string"&&r.getNativePaths)return ue.fromPortablePath(t);if(e.isArray&&Array.isArray(t)){let s=[];for(let a of t)s.push(yT(a,e,r));return s}if(e.type==="MAP"&&t instanceof Map){if(t.size===0)return;let s=new Map;for(let[a,n]of t.entries()){let c=yT(n,e.valueDefinition,r);typeof c<"u"&&s.set(a,c)}return s}if(e.type==="SHAPE"&&t instanceof Map){if(t.size===0)return;let s=new Map;for(let[a,n]of t.entries()){let c=e.properties[a],f=yT(n,c,r);typeof f<"u"&&s.set(a,f)}return s}return t}function dmt(){let t={};for(let[e,r]of Object.entries(process.env))e=e.toLowerCase(),e.startsWith(ET)&&(e=(0,Rde.default)(e.slice(ET.length)),t[e]=r);return t}function Lj(){let t=`${ET}rc_filename`;for(let[e,r]of Object.entries(process.env))if(e.toLowerCase()===t&&typeof r=="string")return r;return Mj}async function Tde(t){try{return await le.readFilePromise(t)}catch{return Buffer.of()}}async function mmt(t,e){return Buffer.compare(...await Promise.all([Tde(t),Tde(e)]))===0}async function ymt(t,e){let[r,s]=await Promise.all([le.statPromise(t),le.statPromise(e)]);return r.dev===s.dev&&r.ino===s.ino}async function Imt({configuration:t,selfPath:e}){let r=t.get("yarnPath");return t.get("ignorePath")||r===null||r===e||await Emt(r,e)?null:r}var Rde,Up,Fde,Nde,Ode,Oj,fmt,Ev,Amt,Hp,ET,Mj,pmt,Iv,Lde,IT,mT,Emt,ze,Cv=It(()=>{bt();Bc();Rde=et(lne()),Up=et(Nd());Wt();Fde=et(tie()),Nde=ye("module"),Ode=et(Md()),Oj=ye("stream");phe();oI();nH();iH();sH();Hhe();oH();tm();Yhe();LQ();Qc();I0();pT();kc();gT();Np();Yo();fmt=function(){if(!Up.GITHUB_ACTIONS||!process.env.GITHUB_EVENT_PATH)return!1;let t=ue.toPortablePath(process.env.GITHUB_EVENT_PATH),e;try{e=le.readJsonSync(t)}catch{return!1}return!(!("repository"in e)||!e.repository||(e.repository.private??!0))}(),Ev=new Set(["@yarnpkg/plugin-constraints","@yarnpkg/plugin-exec","@yarnpkg/plugin-interactive-tools","@yarnpkg/plugin-stage","@yarnpkg/plugin-typescript","@yarnpkg/plugin-version","@yarnpkg/plugin-workspace-tools"]),Amt=new Set(["isTestEnv","injectNpmUser","injectNpmPassword","injectNpm2FaToken","zipDataEpilogue","cacheCheckpointOverride","cacheVersionOverride","lockfileVersionOverride","binFolder","version","flags","profile","gpg","ignoreNode","wrapOutput","home","confDir","registry","ignoreCwd"]),Hp=/^(?!v)[a-z0-9._-]+$/i,ET="yarn_",Mj=".yarnrc.yml",pmt="********",Iv=(E=>(E.ANY="ANY",E.BOOLEAN="BOOLEAN",E.ABSOLUTE_PATH="ABSOLUTE_PATH",E.LOCATOR="LOCATOR",E.LOCATOR_LOOSE="LOCATOR_LOOSE",E.NUMBER="NUMBER",E.STRING="STRING",E.SECRET="SECRET",E.SHAPE="SHAPE",E.MAP="MAP",E))(Iv||{}),Lde=Ct,IT=(r=>(r.JUNCTIONS="junctions",r.SYMLINKS="symlinks",r))(IT||{}),mT={lastUpdateCheck:{description:"Last timestamp we checked whether new Yarn versions were available",type:"STRING",default:null},yarnPath:{description:"Path to the local executable that must be used over the global one",type:"ABSOLUTE_PATH",default:null},ignorePath:{description:"If true, the local executable will be ignored when using the global one",type:"BOOLEAN",default:!1},globalFolder:{description:"Folder where all system-global files are stored",type:"ABSOLUTE_PATH",default:pH()},cacheFolder:{description:"Folder where the cache files must be written",type:"ABSOLUTE_PATH",default:"./.yarn/cache"},compressionLevel:{description:"Zip files compression level, from 0 to 9 or mixed (a variant of 9, which stores some files uncompressed, when compression doesn't yield good results)",type:"NUMBER",values:["mixed",0,1,2,3,4,5,6,7,8,9],default:0},virtualFolder:{description:"Folder where the virtual packages (cf doc) will be mapped on the disk (must be named __virtual__)",type:"ABSOLUTE_PATH",default:"./.yarn/__virtual__"},installStatePath:{description:"Path of the file where the install state will be persisted",type:"ABSOLUTE_PATH",default:"./.yarn/install-state.gz"},immutablePatterns:{description:"Array of glob patterns; files matching them won't be allowed to change during immutable installs",type:"STRING",default:[],isArray:!0},rcFilename:{description:"Name of the files where the configuration can be found",type:"STRING",default:Lj()},enableGlobalCache:{description:"If true, the system-wide cache folder will be used regardless of `cache-folder`",type:"BOOLEAN",default:!0},cacheMigrationMode:{description:"Defines the conditions under which Yarn upgrades should cause the cache archives to be regenerated.",type:"STRING",values:["always","match-spec","required-only"],default:"always"},enableColors:{description:"If true, the CLI is allowed to use colors in its output",type:"BOOLEAN",default:Xk,defaultText:""},enableHyperlinks:{description:"If true, the CLI is allowed to use hyperlinks in its output",type:"BOOLEAN",default:E3,defaultText:""},enableInlineBuilds:{description:"If true, the CLI will print the build output on the command line",type:"BOOLEAN",default:Up.isCI,defaultText:""},enableMessageNames:{description:"If true, the CLI will prefix most messages with codes suitable for search engines",type:"BOOLEAN",default:!0},enableProgressBars:{description:"If true, the CLI is allowed to show a progress bar for long-running events",type:"BOOLEAN",default:!Up.isCI,defaultText:""},enableTimers:{description:"If true, the CLI is allowed to print the time spent executing commands",type:"BOOLEAN",default:!0},enableTips:{description:"If true, installs will print a helpful message every day of the week",type:"BOOLEAN",default:!Up.isCI,defaultText:""},preferInteractive:{description:"If true, the CLI will automatically use the interactive mode when called from a TTY",type:"BOOLEAN",default:!1},preferTruncatedLines:{description:"If true, the CLI will truncate lines that would go beyond the size of the terminal",type:"BOOLEAN",default:!1},progressBarStyle:{description:"Which style of progress bar should be used (only when progress bars are enabled)",type:"STRING",default:void 0,defaultText:""},defaultLanguageName:{description:"Default language mode that should be used when a package doesn't offer any insight",type:"STRING",default:"node"},defaultProtocol:{description:"Default resolution protocol used when resolving pure semver and tag ranges",type:"STRING",default:"npm:"},enableTransparentWorkspaces:{description:"If false, Yarn won't automatically resolve workspace dependencies unless they use the `workspace:` protocol",type:"BOOLEAN",default:!0},supportedArchitectures:{description:"Architectures that Yarn will fetch and inject into the resolver",type:"SHAPE",properties:{os:{description:"Array of supported process.platform strings, or null to target them all",type:"STRING",isArray:!0,isNullable:!0,default:["current"]},cpu:{description:"Array of supported process.arch strings, or null to target them all",type:"STRING",isArray:!0,isNullable:!0,default:["current"]},libc:{description:"Array of supported libc libraries, or null to target them all",type:"STRING",isArray:!0,isNullable:!0,default:["current"]}}},enableMirror:{description:"If true, the downloaded packages will be retrieved and stored in both the local and global folders",type:"BOOLEAN",default:!0},enableNetwork:{description:"If false, Yarn will refuse to use the network if required to",type:"BOOLEAN",default:!0},enableOfflineMode:{description:"If true, Yarn will attempt to retrieve files and metadata from the global cache rather than the network",type:"BOOLEAN",default:!1},httpProxy:{description:"URL of the http proxy that must be used for outgoing http requests",type:"STRING",default:null},httpsProxy:{description:"URL of the http proxy that must be used for outgoing https requests",type:"STRING",default:null},unsafeHttpWhitelist:{description:"List of the hostnames for which http queries are allowed (glob patterns are supported)",type:"STRING",default:[],isArray:!0},httpTimeout:{description:"Timeout of each http request in milliseconds",type:"NUMBER",default:6e4},httpRetry:{description:"Retry times on http failure",type:"NUMBER",default:3},networkConcurrency:{description:"Maximal number of concurrent requests",type:"NUMBER",default:50},taskPoolConcurrency:{description:"Maximal amount of concurrent heavy task processing",type:"NUMBER",default:Rj()},taskPoolMode:{description:"Execution strategy for heavy tasks",type:"STRING",values:["async","workers"],default:"workers"},networkSettings:{description:"Network settings per hostname (glob patterns are supported)",type:"MAP",valueDefinition:{description:"",type:"SHAPE",properties:{httpsCaFilePath:{description:"Path to file containing one or multiple Certificate Authority signing certificates",type:"ABSOLUTE_PATH",default:null},enableNetwork:{description:"If false, the package manager will refuse to use the network if required to",type:"BOOLEAN",default:null},httpProxy:{description:"URL of the http proxy that must be used for outgoing http requests",type:"STRING",default:null},httpsProxy:{description:"URL of the http proxy that must be used for outgoing https requests",type:"STRING",default:null},httpsKeyFilePath:{description:"Path to file containing private key in PEM format",type:"ABSOLUTE_PATH",default:null},httpsCertFilePath:{description:"Path to file containing certificate chain in PEM format",type:"ABSOLUTE_PATH",default:null}}}},httpsCaFilePath:{description:"A path to a file containing one or multiple Certificate Authority signing certificates",type:"ABSOLUTE_PATH",default:null},httpsKeyFilePath:{description:"Path to file containing private key in PEM format",type:"ABSOLUTE_PATH",default:null},httpsCertFilePath:{description:"Path to file containing certificate chain in PEM format",type:"ABSOLUTE_PATH",default:null},enableStrictSsl:{description:"If false, SSL certificate errors will be ignored",type:"BOOLEAN",default:!0},logFilters:{description:"Overrides for log levels",type:"SHAPE",isArray:!0,concatenateValues:!0,properties:{code:{description:"Code of the messages covered by this override",type:"STRING",default:void 0},text:{description:"Code of the texts covered by this override",type:"STRING",default:void 0},pattern:{description:"Code of the patterns covered by this override",type:"STRING",default:void 0},level:{description:"Log level override, set to null to remove override",type:"STRING",values:Object.values(eQ),isNullable:!0,default:void 0}}},enableTelemetry:{description:"If true, telemetry will be periodically sent, following the rules in https://yarnpkg.com/advanced/telemetry",type:"BOOLEAN",default:!0},telemetryInterval:{description:"Minimal amount of time between two telemetry uploads, in days",type:"NUMBER",default:7},telemetryUserId:{description:"If you desire to tell us which project you are, you can set this field. Completely optional and opt-in.",type:"STRING",default:null},enableHardenedMode:{description:"If true, automatically enable --check-resolutions --refresh-lockfile on installs",type:"BOOLEAN",default:Up.isPR&&fmt,defaultText:""},enableScripts:{description:"If true, packages are allowed to have install scripts by default",type:"BOOLEAN",default:!0},enableStrictSettings:{description:"If true, unknown settings will cause Yarn to abort",type:"BOOLEAN",default:!0},enableImmutableCache:{description:"If true, the cache is reputed immutable and actions that would modify it will throw",type:"BOOLEAN",default:!1},enableCacheClean:{description:"If false, disallows the `cache clean` command",type:"BOOLEAN",default:!0},checksumBehavior:{description:"Enumeration defining what to do when a checksum doesn't match expectations",type:"STRING",default:"throw"},injectEnvironmentFiles:{description:"List of all the environment files that Yarn should inject inside the process when it starts",type:"ABSOLUTE_PATH",default:[".env.yarn?"],isArray:!0},packageExtensions:{description:"Map of package corrections to apply on the dependency tree",type:"MAP",valueDefinition:{description:"The extension that will be applied to any package whose version matches the specified range",type:"SHAPE",properties:{dependencies:{description:"The set of dependencies that must be made available to the current package in order for it to work properly",type:"MAP",valueDefinition:{description:"A range",type:"STRING"}},peerDependencies:{description:"Inherited dependencies - the consumer of the package will be tasked to provide them",type:"MAP",valueDefinition:{description:"A semver range",type:"STRING"}},peerDependenciesMeta:{description:"Extra information related to the dependencies listed in the peerDependencies field",type:"MAP",valueDefinition:{description:"The peerDependency meta",type:"SHAPE",properties:{optional:{description:"If true, the selected peer dependency will be marked as optional by the package manager and the consumer omitting it won't be reported as an error",type:"BOOLEAN",default:!1}}}}}}}};Emt=process.platform==="win32"?mmt:ymt;ze=class t{constructor(e){this.isCI=Up.isCI;this.projectCwd=null;this.plugins=new Map;this.settings=new Map;this.values=new Map;this.sources=new Map;this.invalid=new Map;this.env={};this.limits=new Map;this.packageExtensions=null;this.startingCwd=e}static{this.deleteProperty=Symbol()}static{this.telemetry=null}static create(e,r,s){let a=new t(e);typeof r<"u"&&!(r instanceof Map)&&(a.projectCwd=r),a.importSettings(mT);let n=typeof s<"u"?s:r instanceof Map?r:new Map;for(let[c,f]of n)a.activatePlugin(c,f);return a}static async find(e,r,{strict:s=!0,usePathCheck:a=null,useRc:n=!0}={}){let c=dmt();delete c.rcFilename;let f=new t(e),p=await t.findRcFiles(e),h=await t.findFolderRcFile(AI());h&&(p.find(me=>me.path===h.path)||p.unshift(h));let E=Whe(p.map(ce=>[ce.path,ce.data])),C=vt.dot,S=new Set(Object.keys(mT)),P=({yarnPath:ce,ignorePath:me,injectEnvironmentFiles:pe})=>({yarnPath:ce,ignorePath:me,injectEnvironmentFiles:pe}),I=({yarnPath:ce,ignorePath:me,injectEnvironmentFiles:pe,...Be})=>{let Ce={};for(let[g,we]of Object.entries(Be))S.has(g)&&(Ce[g]=we);return Ce},R=({yarnPath:ce,ignorePath:me,...pe})=>{let Be={};for(let[Ce,g]of Object.entries(pe))S.has(Ce)||(Be[Ce]=g);return Be};if(f.importSettings(P(mT)),f.useWithSource("",P(c),e,{strict:!1}),E){let[ce,me]=E;f.useWithSource(ce,P(me),C,{strict:!1})}if(a){if(await Imt({configuration:f,selfPath:a})!==null)return f;f.useWithSource("",{ignorePath:!0},e,{strict:!1,overwrite:!0})}let N=await t.findProjectCwd(e);f.startingCwd=e,f.projectCwd=N;let U=Object.assign(Object.create(null),process.env);f.env=U;let W=await Promise.all(f.get("injectEnvironmentFiles").map(async ce=>{let me=ce.endsWith("?")?await le.readFilePromise(ce.slice(0,-1),"utf8").catch(()=>""):await le.readFilePromise(ce,"utf8");return(0,Fde.parse)(me)}));for(let ce of W)for(let[me,pe]of Object.entries(ce))f.env[me]=Jk(pe,{env:U});if(f.importSettings(I(mT)),f.useWithSource("",I(c),e,{strict:s}),E){let[ce,me]=E;f.useWithSource(ce,I(me),C,{strict:s})}let te=ce=>"default"in ce?ce.default:ce,ie=new Map([["@@core",Ahe]]);if(r!==null)for(let ce of r.plugins.keys())ie.set(ce,te(r.modules.get(ce)));for(let[ce,me]of ie)f.activatePlugin(ce,me);let Ae=new Map([]);if(r!==null){let ce=new Map;for(let[Be,Ce]of r.modules)ce.set(Be,()=>Ce);let me=new Set,pe=async(Be,Ce)=>{let{factory:g,name:we}=kp(Be);if(!g||me.has(we))return;let Ee=new Map(ce),fe=X=>{if((0,Nde.isBuiltin)(X))return kp(X);if(Ee.has(X))return Ee.get(X)();throw new nt(`This plugin cannot access the package referenced via ${X} which is neither a builtin, nor an exposed entry`)},se=await GE(async()=>te(await g(fe)),X=>`${X} (when initializing ${we}, defined in ${Ce})`);ce.set(we,()=>se),me.add(we),Ae.set(we,se)};if(c.plugins)for(let Be of c.plugins.split(";")){let Ce=K.resolve(e,ue.toPortablePath(Be));await pe(Ce,"")}for(let{path:Be,cwd:Ce,data:g}of p)if(n&&Array.isArray(g.plugins))for(let we of g.plugins){let Ee=typeof we!="string"?we.path:we,fe=we?.spec??"",se=we?.checksum??"";if(Ev.has(fe))continue;let X=K.resolve(Ce,ue.toPortablePath(Ee));if(!await le.existsPromise(X)){if(!fe){let gt=Ut(f,K.basename(X,".cjs"),Ct.NAME),j=Ut(f,".gitignore",Ct.NAME),rt=Ut(f,f.values.get("rcFilename"),Ct.NAME),Fe=Ut(f,"https://yarnpkg.com/getting-started/qa#which-files-should-be-gitignored",Ct.URL);throw new nt(`Missing source for the ${gt} plugin - please try to remove the plugin from ${rt} then reinstall it manually. This error usually occurs because ${j} is incorrect, check ${Fe} to make sure your plugin folder isn't gitignored.`)}if(!fe.match(/^https?:/)){let gt=Ut(f,K.basename(X,".cjs"),Ct.NAME),j=Ut(f,f.values.get("rcFilename"),Ct.NAME);throw new nt(`Failed to recognize the source for the ${gt} plugin - please try to delete the plugin from ${j} then reinstall it manually.`)}let De=await kj(fe,{configuration:f}),Re=us(De);if(se&&se!==Re){let gt=Ut(f,K.basename(X,".cjs"),Ct.NAME),j=Ut(f,f.values.get("rcFilename"),Ct.NAME),rt=Ut(f,`yarn plugin import ${fe}`,Ct.CODE);throw new nt(`Failed to fetch the ${gt} plugin from its remote location: its checksum seems to have changed. If this is expected, please remove the plugin from ${j} then run ${rt} to reimport it.`)}await le.mkdirPromise(K.dirname(X),{recursive:!0}),await le.writeFilePromise(X,De)}await pe(X,Be)}}for(let[ce,me]of Ae)f.activatePlugin(ce,me);if(f.useWithSource("",R(c),e,{strict:s}),E){let[ce,me]=E;f.useWithSource(ce,R(me),C,{strict:s})}return f.get("enableGlobalCache")&&(f.values.set("cacheFolder",`${f.get("globalFolder")}/cache`),f.sources.set("cacheFolder","")),f}static async findRcFiles(e){let r=Lj(),s=[],a=e,n=null;for(;a!==n;){n=a;let c=K.join(n,r);if(le.existsSync(c)){let f,p;try{p=await le.readFilePromise(c,"utf8"),f=ls(p)}catch{let h="";throw p?.match(/^\s+(?!-)[^:]+\s+\S+/m)&&(h=" (in particular, make sure you list the colons after each key name)"),new nt(`Parse error when loading ${c}; please check it's proper Yaml${h}`)}s.unshift({path:c,cwd:n,data:f})}a=K.dirname(n)}return s}static async findFolderRcFile(e){let r=K.join(e,Er.rc),s;try{s=await le.readFilePromise(r,"utf8")}catch(n){if(n.code==="ENOENT")return null;throw n}let a=ls(s);return{path:r,cwd:e,data:a}}static async findProjectCwd(e){let r=null,s=e,a=null;for(;s!==a;){if(a=s,le.existsSync(K.join(a,Er.lockfile)))return a;le.existsSync(K.join(a,Er.manifest))&&(r=a),s=K.dirname(a)}return r}static async updateConfiguration(e,r,s={}){let a=Lj(),n=K.join(e,a),c=le.existsSync(n)?ls(await le.readFilePromise(n,"utf8")):{},f=!1,p;if(typeof r=="function"){try{p=r(c)}catch{p=r({})}if(p===c)return!1}else{p=c;for(let h of Object.keys(r)){let E=c[h],C=r[h],S;if(typeof C=="function")try{S=C(E)}catch{S=C(void 0)}else S=C;E!==S&&(S===t.deleteProperty?delete p[h]:p[h]=S,f=!0)}if(!f)return!1}return await le.changeFilePromise(n,il(p),{automaticNewlines:!0}),!0}static async addPlugin(e,r){r.length!==0&&await t.updateConfiguration(e,s=>{let a=s.plugins??[];if(a.length===0)return{...s,plugins:r};let n=[],c=[...r];for(let f of a){let p=typeof f!="string"?f.path:f,h=c.find(E=>E.path===p);h?(n.push(h),c=c.filter(E=>E!==h)):n.push(f)}return n.push(...c),{...s,plugins:n}})}static async updateHomeConfiguration(e){let r=AI();return await t.updateConfiguration(r,e)}activatePlugin(e,r){this.plugins.set(e,r),typeof r.configuration<"u"&&this.importSettings(r.configuration)}importSettings(e){for(let[r,s]of Object.entries(e))if(s!=null){if(this.settings.has(r))throw new Error(`Cannot redefine settings "${r}"`);this.settings.set(r,s),this.values.set(r,Uj(this,s))}}useWithSource(e,r,s,a){try{this.use(e,r,s,a)}catch(n){throw n.message+=` (in ${Ut(this,e,Ct.PATH)})`,n}}use(e,r,s,{strict:a=!0,overwrite:n=!1}={}){a=a&&this.get("enableStrictSettings");for(let c of["enableStrictSettings",...Object.keys(r)]){let f=r[c],p=fH(f);if(p&&(e=p),typeof f>"u"||c==="plugins"||e===""&&Amt.has(c))continue;if(c==="rcFilename")throw new nt(`The rcFilename settings can only be set via ${`${ET}RC_FILENAME`.toUpperCase()}, not via a rc file`);let h=this.settings.get(c);if(!h){let C=AI(),S=e[0]!=="<"?K.dirname(e):null;if(a&&!(S!==null?C===S:!1))throw new nt(`Unrecognized or legacy configuration settings found: ${c} - run "yarn config -v" to see the list of settings supported in Yarn`);this.invalid.set(c,e);continue}if(this.sources.has(c)&&!(n||h.type==="MAP"||h.isArray&&h.concatenateValues))continue;let E;try{E=_j(this,c,f,h,s)}catch(C){throw C.message+=` in ${Ut(this,e,Ct.PATH)}`,C}if(c==="enableStrictSettings"&&e!==""){a=E;continue}if(h.type==="MAP"){let C=this.values.get(c);this.values.set(c,new Map(n?[...C,...E]:[...E,...C])),this.sources.set(c,`${this.sources.get(c)}, ${e}`)}else if(h.isArray&&h.concatenateValues){let C=this.values.get(c);this.values.set(c,n?[...C,...E]:[...E,...C]),this.sources.set(c,`${this.sources.get(c)}, ${e}`)}else this.values.set(c,E),this.sources.set(c,e)}}get(e){if(!this.values.has(e))throw new Error(`Invalid configuration key "${e}"`);return this.values.get(e)}getSpecial(e,{hideSecrets:r=!1,getNativePaths:s=!1}){let a=this.get(e),n=this.settings.get(e);if(typeof n>"u")throw new nt(`Couldn't find a configuration settings named "${e}"`);return yT(a,n,{hideSecrets:r,getNativePaths:s})}getSubprocessStreams(e,{header:r,prefix:s,report:a}){let n,c,f=le.createWriteStream(e);if(this.get("enableInlineBuilds")){let p=a.createStreamReporter(`${s} ${Ut(this,"STDOUT","green")}`),h=a.createStreamReporter(`${s} ${Ut(this,"STDERR","red")}`);n=new Oj.PassThrough,n.pipe(p),n.pipe(f),c=new Oj.PassThrough,c.pipe(h),c.pipe(f)}else n=f,c=f,typeof r<"u"&&n.write(`${r} +`);return{stdout:n,stderr:c}}makeResolver(){let e=[];for(let r of this.plugins.values())for(let s of r.resolvers||[])e.push(new s);return new rm([new FQ,new yi,...e])}makeFetcher(){let e=[];for(let r of this.plugins.values())for(let s of r.fetchers||[])e.push(new s);return new lI([new cI,new uI,...e])}getLinkers(){let e=[];for(let r of this.plugins.values())for(let s of r.linkers||[])e.push(new s);return e}getSupportedArchitectures(){let e=yv(),r=this.get("supportedArchitectures"),s=r.get("os");s!==null&&(s=s.map(c=>c==="current"?e.os:c));let a=r.get("cpu");a!==null&&(a=a.map(c=>c==="current"?e.cpu:c));let n=r.get("libc");return n!==null&&(n=Yl(n,c=>c==="current"?e.libc??Yl.skip:c)),{os:s,cpu:a,libc:n}}isInteractive({interactive:e,stdout:r}){return r.isTTY?e??this.get("preferInteractive"):!1}async getPackageExtensions(){if(this.packageExtensions!==null)return this.packageExtensions;this.packageExtensions=new Map;let e=this.packageExtensions,r=(s,a,{userProvided:n=!1}={})=>{if(!ul(s.range))throw new Error("Only semver ranges are allowed as keys for the packageExtensions setting");let c=new Ht;c.load(a,{yamlCompatibilityMode:!0});let f=jB(e,s.identHash),p=[];f.push([s.range,p]);let h={status:"inactive",userProvided:n,parentDescriptor:s};for(let E of c.dependencies.values())p.push({...h,type:"Dependency",descriptor:E});for(let E of c.peerDependencies.values())p.push({...h,type:"PeerDependency",descriptor:E});for(let[E,C]of c.peerDependenciesMeta)for(let[S,P]of Object.entries(C))p.push({...h,type:"PeerDependencyMeta",selector:E,key:S,value:P})};await this.triggerHook(s=>s.registerPackageExtensions,this,r);for(let[s,a]of this.get("packageExtensions"))r(C0(s,!0),Kk(a),{userProvided:!0});return e}normalizeLocator(e){return ul(e.reference)?Ys(e,`${this.get("defaultProtocol")}${e.reference}`):Hp.test(e.reference)?Ys(e,`${this.get("defaultProtocol")}${e.reference}`):e}normalizeDependency(e){return ul(e.range)?On(e,`${this.get("defaultProtocol")}${e.range}`):Hp.test(e.range)?On(e,`${this.get("defaultProtocol")}${e.range}`):e}normalizeDependencyMap(e){return new Map([...e].map(([r,s])=>[r,this.normalizeDependency(s)]))}normalizePackage(e,{packageExtensions:r}){let s=zB(e),a=r.get(e.identHash);if(typeof a<"u"){let c=e.version;if(c!==null){for(let[f,p]of a)if(eA(c,f))for(let h of p)switch(h.status==="inactive"&&(h.status="redundant"),h.type){case"Dependency":typeof s.dependencies.get(h.descriptor.identHash)>"u"&&(h.status="active",s.dependencies.set(h.descriptor.identHash,this.normalizeDependency(h.descriptor)));break;case"PeerDependency":typeof s.peerDependencies.get(h.descriptor.identHash)>"u"&&(h.status="active",s.peerDependencies.set(h.descriptor.identHash,h.descriptor));break;case"PeerDependencyMeta":{let E=s.peerDependenciesMeta.get(h.selector);(typeof E>"u"||!Object.hasOwn(E,h.key)||E[h.key]!==h.value)&&(h.status="active",Vl(s.peerDependenciesMeta,h.selector,()=>({}))[h.key]=h.value)}break;default:f3(h)}}}let n=c=>c.scope?`${c.scope}__${c.name}`:`${c.name}`;for(let c of s.peerDependenciesMeta.keys()){let f=Da(c);s.peerDependencies.has(f.identHash)||s.peerDependencies.set(f.identHash,On(f,"*"))}for(let c of s.peerDependencies.values()){if(c.scope==="types")continue;let f=n(c),p=ba("types",f),h=cn(p);s.peerDependencies.has(p.identHash)||s.peerDependenciesMeta.has(h)||(s.peerDependencies.set(p.identHash,On(p,"*")),s.peerDependenciesMeta.set(h,{optional:!0}))}return s.dependencies=new Map(Ws(s.dependencies,([,c])=>ll(c))),s.peerDependencies=new Map(Ws(s.peerDependencies,([,c])=>ll(c))),s}getLimit(e){return Vl(this.limits,e,()=>(0,Ode.default)(this.get(e)))}async triggerHook(e,...r){for(let s of this.plugins.values()){let a=s.hooks;if(!a)continue;let n=e(a);n&&await n(...r)}}async triggerMultipleHooks(e,r){for(let s of r)await this.triggerHook(e,...s)}async reduceHook(e,r,...s){let a=r;for(let n of this.plugins.values()){let c=n.hooks;if(!c)continue;let f=e(c);f&&(a=await f(a,...s))}return a}async firstHook(e,...r){for(let s of this.plugins.values()){let a=s.hooks;if(!a)continue;let n=e(a);if(!n)continue;let c=await n(...r);if(typeof c<"u")return c}return null}}});var Gr={};Vt(Gr,{EndStrategy:()=>Gj,ExecError:()=>CT,PipeError:()=>wv,execvp:()=>Fj,pipevp:()=>Yu});function om(t){return t!==null&&typeof t.fd=="number"}function Hj(){}function jj(){for(let t of am)t.kill()}async function Yu(t,e,{cwd:r,env:s=process.env,strict:a=!1,stdin:n=null,stdout:c,stderr:f,end:p=2}){let h=["pipe","pipe","pipe"];n===null?h[0]="ignore":om(n)&&(h[0]=n),om(c)&&(h[1]=c),om(f)&&(h[2]=f);let E=(0,qj.default)(t,e,{cwd:ue.fromPortablePath(r),env:{...s,PWD:ue.fromPortablePath(r)},stdio:h});am.add(E),am.size===1&&(process.on("SIGINT",Hj),process.on("SIGTERM",jj)),!om(n)&&n!==null&&n.pipe(E.stdin),om(c)||E.stdout.pipe(c,{end:!1}),om(f)||E.stderr.pipe(f,{end:!1});let C=()=>{for(let S of new Set([c,f]))om(S)||S.end()};return new Promise((S,P)=>{E.on("error",I=>{am.delete(E),am.size===0&&(process.off("SIGINT",Hj),process.off("SIGTERM",jj)),(p===2||p===1)&&C(),P(I)}),E.on("close",(I,R)=>{am.delete(E),am.size===0&&(process.off("SIGINT",Hj),process.off("SIGTERM",jj)),(p===2||p===1&&I!==0)&&C(),I===0||!a?S({code:Wj(I,R)}):P(new wv({fileName:t,code:I,signal:R}))})})}async function Fj(t,e,{cwd:r,env:s=process.env,encoding:a="utf8",strict:n=!1}){let c=["ignore","pipe","pipe"],f=[],p=[],h=ue.fromPortablePath(r);typeof s.PWD<"u"&&(s={...s,PWD:h});let E=(0,qj.default)(t,e,{cwd:h,env:s,stdio:c});return E.stdout.on("data",C=>{f.push(C)}),E.stderr.on("data",C=>{p.push(C)}),await new Promise((C,S)=>{E.on("error",P=>{let I=ze.create(r),R=Ut(I,t,Ct.PATH);S(new Yt(1,`Process ${R} failed to spawn`,N=>{N.reportError(1,` ${Zf(I,{label:"Thrown Error",value:Hu(Ct.NO_HINT,P.message)})}`)}))}),E.on("close",(P,I)=>{let R=a==="buffer"?Buffer.concat(f):Buffer.concat(f).toString(a),N=a==="buffer"?Buffer.concat(p):Buffer.concat(p).toString(a);P===0||!n?C({code:Wj(P,I),stdout:R,stderr:N}):S(new CT({fileName:t,code:P,signal:I,stdout:R,stderr:N}))})})}function Wj(t,e){let r=Cmt.get(e);return typeof r<"u"?128+r:t??1}function wmt(t,e,{configuration:r,report:s}){s.reportError(1,` ${Zf(r,t!==null?{label:"Exit Code",value:Hu(Ct.NUMBER,t)}:{label:"Exit Signal",value:Hu(Ct.CODE,e)})}`)}var qj,Gj,wv,CT,am,Cmt,dT=It(()=>{bt();qj=et(J_());Cv();Fc();Qc();Gj=(s=>(s[s.Never=0]="Never",s[s.ErrorCode=1]="ErrorCode",s[s.Always=2]="Always",s))(Gj||{}),wv=class extends Yt{constructor({fileName:e,code:r,signal:s}){let a=ze.create(K.cwd()),n=Ut(a,e,Ct.PATH);super(1,`Child ${n} reported an error`,c=>{wmt(r,s,{configuration:a,report:c})}),this.code=Wj(r,s)}},CT=class extends wv{constructor({fileName:e,code:r,signal:s,stdout:a,stderr:n}){super({fileName:e,code:r,signal:s}),this.stdout=a,this.stderr=n}};am=new Set;Cmt=new Map([["SIGINT",2],["SIGQUIT",3],["SIGKILL",9],["SIGTERM",15]])});function _de(t){Mde=t}function Bv(){return typeof Yj>"u"&&(Yj=Mde()),Yj}var Yj,Mde,Vj=It(()=>{Mde=()=>{throw new Error("Assertion failed: No libzip instance is available, and no factory was configured")}});var Ude=L((wT,Jj)=>{var Bmt=Object.assign({},ye("fs")),Kj=function(){var t=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<"u"&&(t=t||__filename),function(e){e=e||{};var r=typeof e<"u"?e:{},s,a;r.ready=new Promise(function(Je,st){s=Je,a=st});var n={},c;for(c in r)r.hasOwnProperty(c)&&(n[c]=r[c]);var f=[],p="./this.program",h=function(Je,st){throw st},E=!1,C=!0,S="";function P(Je){return r.locateFile?r.locateFile(Je,S):S+Je}var I,R,N,U;C&&(E?S=ye("path").dirname(S)+"/":S=__dirname+"/",I=function(st,St){var lr=Me(st);return lr?St?lr:lr.toString():(N||(N=Bmt),U||(U=ye("path")),st=U.normalize(st),N.readFileSync(st,St?null:"utf8"))},R=function(st){var St=I(st,!0);return St.buffer||(St=new Uint8Array(St)),we(St.buffer),St},process.argv.length>1&&(p=process.argv[1].replace(/\\/g,"/")),f=process.argv.slice(2),h=function(Je){process.exit(Je)},r.inspect=function(){return"[Emscripten Module object]"});var W=r.print||console.log.bind(console),te=r.printErr||console.warn.bind(console);for(c in n)n.hasOwnProperty(c)&&(r[c]=n[c]);n=null,r.arguments&&(f=r.arguments),r.thisProgram&&(p=r.thisProgram),r.quit&&(h=r.quit);var ie=0,Ae=function(Je){ie=Je},ce;r.wasmBinary&&(ce=r.wasmBinary);var me=r.noExitRuntime||!0;typeof WebAssembly!="object"&&rs("no native wasm support detected");function pe(Je,st,St){switch(st=st||"i8",st.charAt(st.length-1)==="*"&&(st="i32"),st){case"i1":return Ye[Je>>0];case"i8":return Ye[Je>>0];case"i16":return Ih((Je>>1)*2);case"i32":return ro((Je>>2)*4);case"i64":return ro((Je>>2)*4);case"float":return pf((Je>>2)*4);case"double":return Eh((Je>>3)*8);default:rs("invalid type for getValue: "+st)}return null}var Be,Ce=!1,g;function we(Je,st){Je||rs("Assertion failed: "+st)}function Ee(Je){var st=r["_"+Je];return we(st,"Cannot call unknown function "+Je+", make sure it is exported"),st}function fe(Je,st,St,lr,ee){var Ie={string:function(qi){var Tn=0;if(qi!=null&&qi!==0){var Ga=(qi.length<<2)+1;Tn=wi(Ga),gt(qi,Tn,Ga)}return Tn},array:function(qi){var Tn=wi(qi.length);return Fe(qi,Tn),Tn}};function Oe(qi){return st==="string"?De(qi):st==="boolean"?!!qi:qi}var ht=Ee(Je),mt=[],Dt=0;if(lr)for(var tr=0;tr=St)&&ke[lr];)++lr;return X.decode(ke.subarray(Je,lr))}function Re(Je,st,St,lr){if(!(lr>0))return 0;for(var ee=St,Ie=St+lr-1,Oe=0;Oe=55296&&ht<=57343){var mt=Je.charCodeAt(++Oe);ht=65536+((ht&1023)<<10)|mt&1023}if(ht<=127){if(St>=Ie)break;st[St++]=ht}else if(ht<=2047){if(St+1>=Ie)break;st[St++]=192|ht>>6,st[St++]=128|ht&63}else if(ht<=65535){if(St+2>=Ie)break;st[St++]=224|ht>>12,st[St++]=128|ht>>6&63,st[St++]=128|ht&63}else{if(St+3>=Ie)break;st[St++]=240|ht>>18,st[St++]=128|ht>>12&63,st[St++]=128|ht>>6&63,st[St++]=128|ht&63}}return st[St]=0,St-ee}function gt(Je,st,St){return Re(Je,ke,st,St)}function j(Je){for(var st=0,St=0;St=55296&&lr<=57343&&(lr=65536+((lr&1023)<<10)|Je.charCodeAt(++St)&1023),lr<=127?++st:lr<=2047?st+=2:lr<=65535?st+=3:st+=4}return st}function rt(Je){var st=j(Je)+1,St=Ma(st);return St&&Re(Je,Ye,St,st),St}function Fe(Je,st){Ye.set(Je,st)}function Ne(Je,st){return Je%st>0&&(Je+=st-Je%st),Je}var Pe,Ye,ke,it,_e,x,w,b,y,F;function z(Je){Pe=Je,r.HEAP_DATA_VIEW=F=new DataView(Je),r.HEAP8=Ye=new Int8Array(Je),r.HEAP16=it=new Int16Array(Je),r.HEAP32=x=new Int32Array(Je),r.HEAPU8=ke=new Uint8Array(Je),r.HEAPU16=_e=new Uint16Array(Je),r.HEAPU32=w=new Uint32Array(Je),r.HEAPF32=b=new Float32Array(Je),r.HEAPF64=y=new Float64Array(Je)}var Z=r.INITIAL_MEMORY||16777216,$,oe=[],xe=[],Te=[],lt=!1;function Et(){if(r.preRun)for(typeof r.preRun=="function"&&(r.preRun=[r.preRun]);r.preRun.length;)Pt(r.preRun.shift());Rs(oe)}function qt(){lt=!0,Rs(xe)}function ir(){if(r.postRun)for(typeof r.postRun=="function"&&(r.postRun=[r.postRun]);r.postRun.length;)Pr(r.postRun.shift());Rs(Te)}function Pt(Je){oe.unshift(Je)}function gn(Je){xe.unshift(Je)}function Pr(Je){Te.unshift(Je)}var Ir=0,Nr=null,nn=null;function oi(Je){Ir++,r.monitorRunDependencies&&r.monitorRunDependencies(Ir)}function wo(Je){if(Ir--,r.monitorRunDependencies&&r.monitorRunDependencies(Ir),Ir==0&&(Nr!==null&&(clearInterval(Nr),Nr=null),nn)){var st=nn;nn=null,st()}}r.preloadedImages={},r.preloadedAudios={};function rs(Je){r.onAbort&&r.onAbort(Je),Je+="",te(Je),Ce=!0,g=1,Je="abort("+Je+"). Build with -s ASSERTIONS=1 for more info.";var st=new WebAssembly.RuntimeError(Je);throw a(st),st}var eo="data:application/octet-stream;base64,";function Bo(Je){return Je.startsWith(eo)}var Hi="data:application/octet-stream;base64,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QCAAKAJIIgEgASADaiADEAcaAkAgAyAAKAJsIgFNBEAgACABIANrNgJsDAELIABCADcCbAsgACAAKAJoIANrIgE2AmggACAAKAJYIANrNgJYIAEgACgChC5JBEAgACABNgKELgsgAEH8gAEoAgARAwAgAiADaiECCwJAIAAoAgAiASgCBCIERQ0AIAAoAjwhBSAAIAIgBCACIARJGyICBH8gACgCSCAAKAJoaiAFaiEFIAEgBCACazYCBAJAAkACQAJAIAEoAhwiBCgCFEEBaw4CAQACCyAEQaABaiAFIAEoAgAgAkHcgAEoAgARCAAMAgsgASABKAIwIAUgASgCACACQcSAASgCABEEADYCMAwBCyAFIAEoAgAgAhAHGgsgASABKAIAIAJqNgIAIAEgASgCCCACajYCCCAAKAI8BSAFCyACaiICNgI8AkAgACgChC4iASACakEDSQ0AIAAoAmggAWshAQJAIAAoAnRBgQhPBEAgACAAIAAoAkggAWoiAi0AACACLQABIAAoAnwRAAA2AlQMAQsgAUUNACAAIAFBAWsgACgChAERAgAaCyAAKAKELiAAKAI8IgJBAUZrIgRFDQAgACABIAQgACgCgAERBQAgACAAKAKELiAEazYChC4gACgCPCECCyACQYUCSw0AIAAoAgAoAgRFDQAgACgCMCEBDAELCwJAIAAoAkQiAiAAKAJAIgNNDQAgAAJ/IAAoAjwgACgCaGoiASADSwRAIAAoAkggAWpBACACIAFrIgNBggIgA0GCAkkbIgMQGSABIANqDAELIAFBggJqIgEgA00NASAAKAJIIANqQQAgAiADayICIAEgA2siAyACIANJGyIDEBkgACgCQCADags2AkALC50CAQF/AkAgAAJ/IAAoAqAuIgFBwABGBEAgACgCBCAAKAIQaiAAKQOYLjcAACAAQgA3A5guIAAgACgCEEEIajYCEEEADAELIAFBIE4EQCAAKAIEIAAoAhBqIAApA5guPgAAIAAgAEGcLmo1AgA3A5guIAAgACgCEEEEajYCECAAIAAoAqAuQSBrIgE2AqAuCyABQRBOBEAgACgCBCAAKAIQaiAAKQOYLj0AACAAIAAoAhBBAmo2AhAgACAAKQOYLkIQiDcDmC4gACAAKAKgLkEQayIBNgKgLgsgAUEISA0BIAAgACgCECIBQQFqNgIQIAEgACgCBGogACkDmC48AAAgACAAKQOYLkIIiDcDmC4gACgCoC5BCGsLNgKgLgsLEAAgACgCCBAGIABBADYCCAvwAQECf0F/IQECQCAALQAoDQAgACgCJEEDRgRAIABBDGoEQCAAQQA2AhAgAEEXNgIMC0F/DwsCQCAAKAIgBEAgACkDGELAAINCAFINASAAQQxqBEAgAEEANgIQIABBHTYCDAtBfw8LAkAgACgCACICRQ0AIAIQMkF/Sg0AIAAoAgAhASAAQQxqIgAEQCAAIAEoAgw2AgAgACABKAIQNgIEC0F/DwsgAEEAQgBBABAOQn9VDQAgACgCACIARQ0BIAAQGhpBfw8LQQAhASAAQQA7ATQgAEEMagRAIABCADcCDAsgACAAKAIgQQFqNgIgCyABCzsAIAAtACgEfkJ/BSAAKAIgRQRAIABBDGoiAARAIABBADYCBCAAQRI2AgALQn8PCyAAQQBCAEEHEA4LC5oIAQt/IABFBEAgARAJDwsgAUFATwRAQYSEAUEwNgIAQQAPCwJ/QRAgAUELakF4cSABQQtJGyEGIABBCGsiBSgCBCIJQXhxIQQCQCAJQQNxRQRAQQAgBkGAAkkNAhogBkEEaiAETQRAIAUhAiAEIAZrQZSIASgCAEEBdE0NAgtBAAwCCyAEIAVqIQcCQCAEIAZPBEAgBCAGayIDQRBJDQEgBSAJQQFxIAZyQQJyNgIEIAUgBmoiAiADQQNyNgIEIAcgBygCBEEBcjYCBCACIAMQOwwBCyAHQcyEASgCAEYEQEHAhAEoAgAgBGoiBCAGTQ0CIAUgCUEBcSAGckECcjYCBCAFIAZqIgMgBCAGayICQQFyNgIEQcCEASACNgIAQcyEASADNgIADAELIAdByIQBKAIARgRAQbyEASgCACAEaiIDIAZJDQICQCADIAZrIgJBEE8EQCAFIAlBAXEgBnJBAnI2AgQgBSAGaiIEIAJBAXI2AgQgAyAFaiIDIAI2AgAgAyADKAIEQX5xNgIEDAELIAUgCUEBcSADckECcjYCBCADIAVqIgIgAigCBEEBcjYCBEEAIQJBACEEC0HIhAEgBDYCAEG8hAEgAjYCAAwBCyAHKAIEIgNBAnENASADQXhxIARqIgogBkkNASAKIAZrIQwCQCADQf8BTQRAIAcoAggiBCADQQN2IgJBA3RB3IQBakYaIAQgBygCDCIDRgRAQbSEAUG0hAEoAgBBfiACd3E2AgAMAgsgBCADNgIMIAMgBDYCCAwBCyAHKAIYIQsCQCAHIAcoAgwiCEcEQCAHKAIIIgJBxIQBKAIASRogAiAINgIMIAggAjYCCAwBCwJAIAdBFGoiBCgCACICDQAgB0EQaiIEKAIAIgINAEEAIQgMAQsDQCAEIQMgAiIIQRRqIgQoAgAiAg0AIAhBEGohBCAIKAIQIgINAAsgA0EANgIACyALRQ0AAkAgByAHKAIcIgNBAnRB5IYBaiICKAIARgRAIAIgCDYCACAIDQFBuIQBQbiEASgCAEF+IAN3cTYCAAwCCyALQRBBFCALKAIQIAdGG2ogCDYCACAIRQ0BCyAIIAs2AhggBygCECICBEAgCCACNgIQIAIgCDYCGAsgBygCFCICRQ0AIAggAjYCFCACIAg2AhgLIAxBD00EQCAFIAlBAXEgCnJBAnI2AgQgBSAKaiICIAIoAgRBAXI2AgQMAQsgBSAJQQFxIAZyQQJyNgIEIAUgBmoiAyAMQQNyNgIEIAUgCmoiAiACKAIEQQFyNgIEIAMgDBA7CyAFIQILIAILIgIEQCACQQhqDwsgARAJIgVFBEBBAA8LIAUgAEF8QXggAEEEaygCACICQQNxGyACQXhxaiICIAEgASACSxsQBxogABAGIAUL6QEBA38CQCABRQ0AIAJBgDBxIgIEfwJ/IAJBgCBHBEBBAiACQYAQRg0BGiADBEAgA0EANgIEIANBEjYCAAtBAA8LQQQLIQJBAAVBAQshBkEUEAkiBEUEQCADBEAgA0EANgIEIANBDjYCAAtBAA8LIAQgAUEBahAJIgU2AgAgBUUEQCAEEAZBAA8LIAUgACABEAcgAWpBADoAACAEQQA2AhAgBEIANwMIIAQgATsBBCAGDQAgBCACECNBBUcNACAEKAIAEAYgBCgCDBAGIAQQBkEAIQQgAwRAIANBADYCBCADQRI2AgALCyAEC7UBAQJ/AkACQAJAAkACQAJAAkAgAC0ABQRAIAAtAABBAnFFDQELIAAoAjAQECAAQQA2AjAgAC0ABUUNAQsgAC0AAEEIcUUNAQsgACgCNBAcIABBADYCNCAALQAFRQ0BCyAALQAAQQRxRQ0BCyAAKAI4EBAgAEEANgI4IAAtAAVFDQELIAAtAABBgAFxRQ0BCyAAKAJUIgEEfyABQQAgARAiEBkgACgCVAVBAAsQBiAAQQA2AlQLC9wMAgl/AX4jAEFAaiIGJAACQAJAAkACQAJAIAEoAjBBABAjIgVBAkZBACABKAI4QQAQIyIEQQFGGw0AIAVBAUZBACAEQQJGGw0AIAVBAkciAw0BIARBAkcNAQsgASABLwEMQYAQcjsBDEEAIQMMAQsgASABLwEMQf/vA3E7AQxBACEFIANFBEBB9eABIAEoAjAgAEEIahBpIgVFDQILIAJBgAJxBEAgBSEDDAELIARBAkcEQCAFIQMMAQtB9cYBIAEoAjggAEEIahBpIgNFBEAgBRAcDAILIAMgBTYCAAsgASABLwEMQf7/A3EgAS8BUiIFQQBHcjsBDAJAAkACQAJAAn8CQAJAIAEpAyhC/v///w9WDQAgASkDIEL+////D1YNACACQYAEcUUNASABKQNIQv////8PVA0BCyAFQYECa0H//wNxQQNJIQdBAQwBCyAFQYECa0H//wNxIQQgAkGACnFBgApHDQEgBEEDSSEHQQALIQkgBkIcEBciBEUEQCAAQQhqIgAEQCAAQQA2AgQgAEEONgIACyADEBwMBQsgAkGACHEhBQJAAkAgAkGAAnEEQAJAIAUNACABKQMgQv////8PVg0AIAEpAyhCgICAgBBUDQMLIAQgASkDKBAYIAEpAyAhDAwBCwJAAkACQCAFDQAgASkDIEL/////D1YNACABKQMoIgxC/////w9WDQEgASkDSEKAgICAEFQNBAsgASkDKCIMQv////8PVA0BCyAEIAwQGAsgASkDICIMQv////8PWgRAIAQgDBAYCyABKQNIIgxC/////w9UDQELIAQgDBAYCyAELQAARQRAIABBCGoiAARAIABBADYCBCAAQRQ2AgALIAQQCCADEBwMBQtBASEKQQEgBC0AAAR+IAQpAxAFQgALp0H//wNxIAYQRyEFIAQQCCAFIAM2AgAgBw0BDAILIAMhBSAEQQJLDQELIAZCBxAXIgRFBEAgAEEIaiIABEAgAEEANgIEIABBDjYCAAsgBRAcDAMLIARBAhANIARBhxJBAhAsIAQgAS0AUhBwIAQgAS8BEBANIAQtAABFBEAgAEEIaiIABEAgAEEANgIEIABBFDYCAAsgBBAIDAILQYGyAkEHIAYQRyEDIAQQCCADIAU2AgBBASEL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NgIEIABB7A42AhggGiEdDAMLIARB/wFxIgJBwABxRQRAIAggDSADLwECQQJ0aiAdp0F/IAJ0QX9zcUECdGoiAy0AASICayEIIB0gAq2IIR0gAy0AACIERQ0HDAELCyAEQSBxBEAgB0G//gA2AgQgASECDAgLIAdB0f4ANgIEIABB0A42AhggASECDAcLIB1BfyAGdEF/c62DIBt8IhunIQUgCCAEQQ9xIgNrIQggGiAErUIPg4ghHSABIBdrIgYgAjMBAiAaQX8gA3RBf3Otg3ynIgRPDQIgBCAGayIGIBlNDQEgBygCjEdFDQEgB0HR/gA2AgQgAEG5DDYCGAsgASECIAshBQwFCwJAIA5FBEAgDCARIAZraiEDDAELIAYgDk0EQCAMIA4gBmtqIQMMAQsgDCARIAYgDmsiBmtqIQMgBSAGTQ0AIAUgBmshBQJAAkAgASADTSABIA8gAWusIhogBq0iGyAaIBtUGyIapyIGaiICIANLcQ0AIAMgBmogAUsgASADT3ENACABIAMgBhAHGiACIQEMAQsgASADIAMgAWsiASABQR91IgFqIAFzIgIQByACaiEBIBogAq0iHn0iHFANACACIANqIQIDQAJAIBwgHiAcIB5UGyIbQiBUBEAgGyEaDAELIBsiGkIgfSIgQgWIQgF8QgODIh9QRQRAA0AgASACKQAANwAAIAEgAikAGDcAGCABIAIpABA3ABAgASACKQAINwAIIBpCIH0hGiACQSBqIQIgAUEgaiEBIB9CAX0iH0IAUg0ACwsgIELgAFQNAANAIAEgAikAADcAACABIAIpABg3ABggASACKQAQNwAQIAEgAikACDcACCABIAIpADg3ADggASACKQAwNwAwIAEgAikAKDcAKCABIAIpACA3ACAgASACKQBYNwBYIAEgAikAUDcAUCABIAIpAEg3AEggASACKQBANwBAIAEgAikAYDcAYCABIAIpAGg3AGggASACKQBwNwBwIAEgAikAeDcAeCACQYABaiECIAFBgAFqIQEgGkKAAX0iGkIfVg0ACwsgGkIQWgRAIAEgAikAADcAACABIAIpAAg3AAggGkIQfSEaIAJBEGohAiABQRBqIQELIBpCCFoEQCABIAIpAAA3AAAgGkIIfSEaIAJBCGohAiABQQhqIQELIBpCBFoEQCABIAIoAAA2AAAgGkIEfSEaIAJBBGohAiABQQRqIQELIBpCAloEQCABIAIvAAA7AAAgGkICfSEaIAJBAmohAiABQQJqIQELIBwgG30hHCAaUEUEQCABIAItAAA6AAAgAkEBaiECIAFBAWohAQsgHEIAUg0ACwsgDiEGIAwhAwsgBSAGSwRAAkACQCABIANNIAEgDyABa6wiGiAGrSIbIBogG1QbIhqnIglqIgIgA0txDQAgAyAJaiABSyABIANPcQ0AIAEgAyAJEAcaDAELIAEgAyADIAFrIgEgAUEfdSIBaiABcyIBEAcgAWohAiAaIAGtIh59IhxQDQAgASADaiEBA0ACQCAcIB4gHCAeVBsiG0IgVARAIBshGgwBCyAbIhpCIH0iIEIFiEIBfEIDgyIfUEUEQANAIAIgASkAADcAACACIAEpABg3ABggAiABKQAQNwAQIAIgASkACDcACCAaQiB9IRogAUEgaiEBIAJBIGohAiAfQgF9Ih9CAFINAAsLICBC4ABUDQADQCACIAEpAAA3AAAgAiABKQAYNwAYIAIgASkAEDcAECACIAEpAAg3AAggAiABKQA4NwA4IAIgASkAMDcAMCACIAEpACg3ACggAiABKQAgNwAgIAIgASkAWDcAWCACIAEpAFA3AFAgAiABKQBINwBIIAIgASkAQDcAQCACIAEpAGA3AGAgAiABKQBoNwBoIAIgASkAcDcAcCACIAEpAHg3AHggAUGAAWohASACQYABaiECIBpCgAF9IhpCH1YNAAsLIBpCEFoEQCACIAEpAAA3AAAgAiABKQAINwAIIBpCEH0hGiACQRBqIQIgAUEQaiEBCyAaQghaBEAgAiABKQAANwAAIBpCCH0hGiACQQhqIQIgAUEIaiEBCyAaQgRaBEAgAiABKAAANgAAIBpCBH0hGiACQQRqIQIgAUEEaiEBCyAaQgJaBEAgAiABLwAAOwAAIBpCAn0hGiACQQJqIQIgAUECaiEBCyAcIBt9IRwgGlBFBEAgAiABLQAAOgAAIAJBAWohAiABQQFqIQELIBxCAFINAAsLIAUgBmshAUEAIARrIQUCQCAEQQdLBEAgBCEDDAELIAEgBE0EQCAEIQMMAQsgAiAEayEFA0ACQCACIAUpAAA3AAAgBEEBdCEDIAEgBGshASACIARqIQIgBEEDSw0AIAMhBCABIANLDQELC0EAIANrIQULIAIgBWohBAJAIAUgDyACa6wiGiABrSIbIBogG1QbIhqnIgFIIAVBf0pxDQAgBUEBSCABIARqIAJLcQ0AIAIgBCABEAcgAWohAgwDCyACIAQgAyADQR91IgFqIAFzIgEQByABaiECIBogAa0iHn0iHFANAiABIARqIQEDQAJAIBwgHiAcIB5UGyIbQiBUBEAgGyEaDAELIBsiGkIgfSIgQgWIQgF8QgODIh9QRQRAA0AgAiABKQAANwAAIAIgASkAGDcAGCACIAEpABA3ABAgAiABKQAINwAIIBpCIH0hGiABQSBqIQEgAkEgaiECIB9CAX0iH0IAUg0ACwsgIELgAFQNAANAIAIgASkAADcAACACIAEpABg3ABggAiABKQAQNwAQIAIgASkACDcACCACIAEpADg3ADggAiABKQAwNwAwIAIgASkAKDcAKCACIAEpACA3ACAgAiABKQBYNwBYIAIgASkAUDcAUCACIAEpAEg3AEggAiABKQBANwBAIAIgASkAYDcAYCACIAEpAGg3AGggAiABKQBwNwBwIAIgASkAeDcAeCABQYABaiEBIAJBgAFqIQIgGkKAAX0iGkIfVg0ACwsgGkIQWgRAIAIgASkAADcAACACIAEpAAg3AAggGkIQfSEaIAJBEGohAiABQRBqIQELIBpCCFoEQCACIAEpAAA3AAAgGkIIfSEaIAJBCGohAiABQQhqIQELIBpCBFoEQCACIAEoAAA2AAAgGkIEfSEaIAJBBGohAiABQQRqIQELIBpCAloEQCACIAEvAAA7AAAgGkICfSEaIAJBAmohAiABQQJqIQELIBwgG30hHCAaUEUEQCACIAEtAAA6AAAgAkEBaiECIAFBAWohAQsgHFBFDQALDAILAkAgASADTSABIA8gAWusIhogBa0iGyAaIBtUGyIapyIEaiICIANLcQ0AIAMgBGogAUsgASADT3ENACABIAMgBBAHGgwCCyABIAMgAyABayIBIAFBH3UiAWogAXMiARAHIAFqIQIgGiABrSIefSIcUA0BIAEgA2ohAQNAAkAgHCAeIBwgHlQbIhtCIFQEQCAbIRoMAQsgGyIaQiB9IiBCBYhCAXxCA4MiH1BFBEADQCACIAEpAAA3AAAgAiABKQAYNwAYIAIgASkAEDcAECACIAEpAAg3AAggGkIgfSEaIAFBIGohASACQSBqIQIgH0IBfSIfQgBSDQALCyAgQuAAVA0AA0AgAiABKQAANwAAIAIgASkAGDcAGCACIAEpABA3ABAgAiABKQAINwAIIAIgASkAODcAOCACIAEpADA3ADAgAiABKQAoNwAoIAIgASkAIDcAICACIAEpAFg3AFggAiABKQBQNwBQIAIgASkASDcASCACIAEpAEA3AEAgAiABKQBgNwBgIAIgASkAaDcAaCACIAEpAHA3AHAgAiABKQB4NwB4IAFBgAFqIQEgAkGAAWohAiAaQoABfSIaQh9WDQALCyAaQhBaBEAgAiABKQAANwAAIAIgASkACDcACCAaQhB9IRogAkEQaiECIAFBEGohAQsgGkIIWgRAIAIgASkAADcAACAaQgh9IRogAkEIaiECIAFBCGohAQsgGkIEWgRAIAIgASgAADYAACAaQgR9IRogAkEEaiECIAFBBGohAQsgGkICWgRAIAIgAS8AADsAACAaQgJ9IRogAkECaiECIAFBAmohAQsgHCAbfSEcIBpQRQRAIAIgAS0AADoAACACQQFqIQIgAUEBaiEBCyAcUEUNAAsMAQsCQAJAIBYEQAJAIAQgBUkEQCAHKAKYRyAESw0BCyABIARrIQMCQEEAIARrIgVBf0ogDyABa6wiGiAbIBogG1QbIhqnIgIgBUpxDQAgBUEBSCACIANqIAFLcQ0AIAEgAyACEAcgAmohAgwFCyABIAMgBCAEQR91IgFqIAFzIgEQByABaiECIBogAa0iHn0iHFANBCABIANqIQEDQAJAIBwgHiAcIB5UGyIbQiBUBEAgGyEaDAELIBsiGkIgfSIgQgWIQgF8QgODIh9QRQRAA0AgAiABKQAANwAAIAIgASkAGDcAGCACIAEpABA3ABAgAiABKQAINwAIIBpCIH0hGiABQSBqIQEgAkEgaiECIB9CAX0iH0IAUg0ACwsgIELgAFQNAANAIAIgASkAADcAACACIAEpABg3ABggAiABKQAQNwAQIAIgASkACDcACCACIAEpADg3ADggAiABKQAwNwAwIAIgASkAKDcAKCACIAEpACA3ACAgAiABKQBYNwBYIAIgASkAUDcAUCACIAEpAEg3AEggAiABKQBANwBAIAIgASkAYDcAYCACIAEpAGg3AGggAiABKQBwNwBwIAIgASkAeDcAeCABQYABaiEBIAJBgAFqIQIgGkKAAX0iGkIfVg0ACwsgGkIQWgRAIAIgASkAADcAACACIAEpAAg3AAggGkIQfSEaIAJBEGohAiABQRBqIQELIBpCCFoEQCACIAEpAAA3AAAgGkIIfSEaIAJBCGohAiABQQhqIQELIBpCBFoEQCACIAEoAAA2AAAgGkIEfSEaIAJBBGohAiABQQRqIQELIBpCAloEQCACIAEvAAA7AAAgGkICfSEaIAJBAmohAiABQQJqIQELIBwgG30hHCAaUEUEQCACIAEtAAA6AAAgAkEBaiECIAFBAWohAQsgHFBFDQALDAQLIBAgAWsiCUEBaiIGIAUgBSAGSxshAyABIARrIQIgAUEHcUUNAiADRQ0CIAEgAi0AADoAACACQQFqIQIgAUEBaiIGQQdxQQAgA0EBayIFGw0BIAYhASAFIQMgCSEGDAILAkAgBCAFSQRAIAcoAphHIARLDQELIAEgASAEayIGKQAANwAAIAEgBUEBa0EHcUEBaiIDaiECIAUgA2siBEUNAyADIAZqIQEDQCACIAEpAAA3AAAgAUEIaiEBIAJBCGohAiAEQQhrIgQNAAsMAwsgASAEIAUQPyECDAILIAEgAi0AADoAASAJQQFrIQYgA0ECayEFIAJBAWohAgJAIAFBAmoiCkEHcUUNACAFRQ0AIAEgAi0AADoAAiAJQQJrIQYgA0EDayEFIAJBAWohAgJAIAFBA2oiCkEHcUUNACAFRQ0AIAEgAi0AADoAAyAJQQNrIQYgA0EEayEFIAJBAWohAgJAIAFBBGoiCkEHcUUNACAFRQ0AIAEgAi0AADoABCAJQQRrIQYgA0EFayEFIAJBAWohAgJAIAFBBWoiCkEHcUUNACAFRQ0AIAEgAi0AADoABSAJQQVrIQYgA0EGayEFIAJBAWohAgJAIAFBBmoiCkEHcUUNACAFRQ0AIAEgAi0AADoABiAJQQZrIQYgA0EHayEFIAJBAWohAgJAIAFBB2oiCkEHcUUNACAFRQ0AIAEgAi0AADoAByAJQQdrIQYgA0EIayEDIAFBCGohASACQQFqIQIMBgsgCiEBIAUhAwwFCyAKIQEgBSEDDAQLIAohASAFIQMMAwsgCiEBIAUhAwwCCyAKIQEgBSEDDAELIAohASAFIQMLAkACQCAGQRdNBEAgA0UNASADQQFrIQUgA0EHcSIEBEADQCABIAItAAA6AAAgA0EBayEDIAFBAWohASACQQFqIQIgBEEBayIEDQALCyAFQQdJDQEDQCABIAItAAA6AAAgASACLQABOgABIAEgAi0AAjoAAiABIAItAAM6AAMgASACLQAEOgAEIAEgAi0ABToABSABIAItAAY6AAYgASACLQAHOgAHIAFBCGohASACQQhqIQIgA0EIayIDDQALDAELIAMNAQsgASECDAELIAEgBCADED8hAgsgCyEFDAELIAEgAy0AAjoAACABQQFqIQILIAUgFE8NACACIBNJDQELCyAAIAI2AgwgACAFIAhBA3ZrIgE2AgAgACATIAJrQYMCajYCECAAIBQgAWtBDmo2AgQgByAIQQdxIgA2AogBIAcgHUJ/IACthkJ/hYM+AoQBC+cFAQR/IAMgAiACIANLGyEEIAAgAWshAgJAIABBB3FFDQAgBEUNACAAIAItAAA6AAAgA0EBayEGIAJBAWohAiAAQQFqIgdBB3FBACAEQQFrIgUbRQRAIAchACAFIQQgBiEDDAELIAAgAi0AADoAASADQQJrIQYgBEECayEFIAJBAWohAgJAIABBAmoiB0EHcUUNACAFRQ0AIAAgAi0AADoAAiADQQNrIQYgBEEDayEFIAJBAWohAgJAIABBA2oiB0EHcUUNACAFRQ0AIAAgAi0AADoAAyADQQRrIQYgBEEEayEFIAJBAWohAgJAIABBBGoiB0EHcUUNACAFRQ0AIAAgAi0AADoABCADQQVrIQYgBEEFayEFIAJBAWohAgJAIABBBWoiB0EHcUUNACAFRQ0AIAAgAi0AADoABSADQQZrIQYgBEEGayEFIAJBAWohAgJAIABBBmoiB0EHcUUNACAFRQ0AIAAgAi0AADoABiADQQdrIQYgBEEHayEFIAJBAWohAgJAIABBB2oiB0EHcUUNACAFRQ0AIAAgAi0AADoAByADQQhrIQMgBEEIayEEIABBCGohACACQQFqIQIMBgsgByEAIAUhBCAGIQMMBQsgByEAIAUhBCAGIQMMBAsgByEAIAUhBCAGIQMMAwsgByEAIAUhBCAGIQMMAgsgByEAIAUhBCAGIQMMAQsgByEAIAUhBCAGIQMLAkAgA0EXTQRAIARFDQEgBEEBayEBIARBB3EiAwRAA0AgACACLQAAOgAAIARBAWshBCAAQQFqIQAgAkEBaiECIANBAWsi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CyAAIAMtAAAEfiADKQMQBUIAC6dB//8DcSADKAIEEEcLIQUgAxAICyAEQRBqJAAgBQvgAQICfwF+QTAQCSICRQRAIAEEQCABQQA2AgQgAUEONgIAC0EADwsgAkIANwMIIAJBADYCACACQgA3AxAgAkIANwMYIAJCADcDICACQgA3ACUgAFAEQCACDwsCQCAAQv////8AVg0AIACnQQR0EAkiA0UNACACIAM2AgBBACEBQgEhBANAIAMgAUEEdGoiAUIANwIAIAFCADcABSAAIARSBEAgBKchASAEQgF8IQQMAQsLIAIgADcDCCACIAA3AxAgAg8LIAEEQCABQQA2AgQgAUEONgIAC0EAEBAgAhAGQQAL7gECA38BfiMAQRBrIgQkAAJAIARBDGpCBBAXIgNFBEBBfyECDAELAkAgAQRAIAJBgAZxIQUDQAJAIAUgASgCBHFFDQACQCADKQMIQgBUBEAgA0EAOgAADAELIANCADcDECADQQE6AAALIAMgAS8BCBANIAMgAS8BChANIAMtAABFBEAgAEEIaiIABEAgAEEANgIEIABBFDYCAAtBfyECDAQLQX8hAiAAIARBDGpCBBAbQQBIDQMgATMBCiIGUA0AIAAgASgCDCAGEBtBAEgNAwsgASgCACIBDQALC0EAIQILIAMQCAsgBEEQaiQAIAILPAEBfyAABEAgAUGABnEhAQNAIAEgACgCBHEEQCACIAAvAQpqQQRqIQILIAAoAgAiAA0ACwsgAkH//wNxC5wBAQN/IABFBEBBAA8LIAAhAwNAAn8CQAJAIAAvAQgiAUH04AFNBEAgAUEBRg0BIAFB9cYBRg0BDAILIAFBgbICRg0AIAFB9eABRw0BCyAAKAIAIQEgAEEANgIAIAAoAgwQBiAAEAYgASADIAAgA0YbIQMCQCACRQRAQQAhAgwBCyACIAE2AgALIAEMAQsgACICKAIACyIADQALIAMLsgQCBX8BfgJAAkACQCAAIAGtEBciAQRAIAEtAAANAUEAIQAMAgsgBARAIARBADYCBCAEQQ42AgALQQAPC0EAIQADQCABLQAABH4gASkDCCABKQMQfQVCAAtCBFQNASABEAwhByABIAEQDCIGrRATIghFBEBBACECIAQEQCAEQQA2AgQgBEEVNgIACyABEAggAEUNAwNAIAAoAgAhASAAKAIMEAYg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DCAAQRg2AggLDAMLIAAgBiAFLwFqQQAgBCABEQYAIQEgBhALIAFFDQILAkAgDUUEQCABIQMMAQsgACABIAUvAWgQgQEhAyABEAsgA0UNAQsCQCAJRSAMckUEQCADIQEMAQsgACADQQEQgAEhASADEAsgAUUNAQsgASEDDAELQQAhAwsgBUHwAGokACADC4UBAQF/IAFFBEAgAEEIaiIABEAgAEEANgIEIABBEjYCAAtBAA8LQTgQCSIDRQRAIABBCGoiAARAIABBADYCBCAAQQ42AgALQQAPCyADQQA2AhAgA0IANwIIIANCADcDKCADQQA2AgQgAyACNgIAIANCADcDGCADQQA2AjAgACABQTsgAxBCCw8AIAAgASACQQBBABCCAQusAgECfyABRQRAIABBCGoiAARAIABBADYCBCAAQRI2AgALQQAPCwJAIAJBfUsNACACQf//A3FBCEYNACAAQQhqIgAEQCAAQQA2AgQgAEEQNgIAC0EADwsCQEGwwAAQCSIFBEAgBUEANgIIIAVCADcCACAFQYiBAUGogQEgAxs2AqhAIAUgAjYCFCAFIAM6ABAgBUEAOgAPIAVBADsBDCAFIAMgAkF9SyIGcToADiAFQQggAiAGG0H//wNxIAQgBUGIgQFBqIEBIAMbKAIAEQAAIgI2AqxAIAINASAFEDEgBRAGCyAAQQhqIgAEQCAAQQA2AgQgAEEONgIAC0EADwsgACABQTogBRBCIgAEfyAABSAFKAKsQCAFKAKoQCgCBBEDACAFEDEgBRAGQQALC6ABAQF/IAIgACgCBCIDIAIgA0kbIgIEQCAAIAMgAms2AgQCQAJAAkACQCAAKAIcIgMoAhRBAWsOAgEAAgsgA0GgAWogASAAKAIAIAJB3IABKAIAEQgADAILIAAgACgCMCABIAAoAgAgAkHEgAEoAgARBAA2AjAMAQsgASAAKAIAIAIQBxoLIAAgACgCACACajYCACAAIAAoAgggAmo2AggLC7cCAQR/QX4hAgJAIABFDQAgACgCIEUNACAAKAIkIgRFDQAgACgCHCIBRQ0AIAEoAgAgAEcNAAJAAkAgASgCICIDQTlrDjkBAgICAgICAgICAgIBAgICAQICAgICAgICAgICAgICAgICAQICAgICAgICAgICAQICAgICAgICAgEACyADQZoFRg0AIANBKkcN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DCABajYCDCAGIAYoAgggAWo2AgggBSAFKAIUIAFqNgIUIAUgBSgCECABazYCECAGIAYoAhAgAWsiATYCECABDQAgBiAGKAIENgIIC0EAIQRBACEJIAMoAhBFDQAMCgsgAygCHCgCJCEGIAMgAygCGCIBQQFqNgIYIAEgBmotAAAhASADIARBAWo2AhAgAygCBCAEaiABOgAAIAEEQCADKAIQIQQMAQsLIAMoAhwoAixFDQAgAygCECIGIAlNDQAgBQJ/IAUoAjAhBEEAIAMoAgQgCWoiAUUNABogBCABIAYgCWtB1IABKAIAEQAACzYCMAsgA0HnADYCIAsCQCADKAIcKAIsBEAgAygCDCADKAIQIgFBAmpJBH8gBRAKIAMoAhANAkEABSABCyADKAIEaiAFKAIwOwAAIAMgAygCEEECajYCECADQaABakHkgAEoAgARAQAaCyADQfEANgIgIAUQCiADKAIQRQ0BDAcLDAYLIAUoAgQNAQsgAygCPA0AIApFDQEgAygCIEGaBUYNAQsCfyADKAKIASIBRQRAIAMgChCFAQwBCwJAAkACQCADKAKMAUECaw4CAAECCwJ/AkADQAJAAkAgAygCPA0AIAMQLyADKAI8DQAgCg0BQQAMBAsgAygCSCADKAJoai0AACEEIAMgAygC8C0iAUEBajYC8C0gASADKALsLWpBADoAACADIAMoAvAtIgFBAWo2AvAtIAEgAygC7C1qQQA6AAAgAyADKALwLSIBQQFqNgLwLSABIAMoAuwtaiAEOgAAIAMgBEECdGoiASABLwHkAUEBajsB5AEgAyADKAI8QQFrNgI8IAMgAygCaEEBaiIBNgJoIAMoAvAtIAMoAvQtRw0BQQAhBCADIAMoAlgiBkEATgR/IAMoAkggBmoFQQALIAEgBmtBABAPIAMgAygCaDYCWCADKAIAEAogAygCACgCEA0BDAILCyADQQA2AoQuIApBBEYEQCADIAMoAlgiAUEATgR/IAMoAkggAWoFQQALIAMoAmggAWtBARAPIAMgAygCaDYCWCADKAIAEApBA0ECIAMoAgAoAhAbDAILIAMoAvAtBEBBACEEIAMgAygCWCIBQQBOBH8gAygCSCABagVBAAsgAygCaCABa0EAEA8gAyADKAJoNgJYIAMoAgAQCiADKAIAKAIQRQ0BC0EBIQQLIAQL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bGl0ZXJhbC9sZW5ndGhzIHNldABpbnZhbGlkIGNvZGUgbGVuZ3RocyBzZXQAdW5rbm93biBoZWFkZXIgZmxhZ3Mgc2V0AGludmFsaWQgZGlzdGFuY2VzIHNldABpbnZhbGlkIGJpdCBsZW5ndGggcmVwZWF0AEZpbGUgYWxyZWFkeSBleGlzdHMAdG9vIG1hbnkgbGVuZ3RoIG9yIGRpc3RhbmNlIHN5bWJvbHMAaW52YWxpZCBzdG9yZWQgYmxvY2sgbGVuZ3RocwAlcyVzJXMAYnVmZmVyIGVycm9yAE5vIGVycm9yAHN0cmVhbSBlcnJvcgBUZWxsIGVycm9yAEludGVybmFsIGVycm9yAFNlZWsgZXJyb3IAV3JpdGUgZXJyb3IAZmlsZSBlcnJvcgBSZWFkIGVycm9yAFpsaWIgZXJyb3IAZGF0YSBlcnJvcgBDUkMgZXJyb3IAaW5jb21wYXRpYmxlIHZlcnNpb24AaW52YWxpZCBjb2RlIC0tIG1pc3NpbmcgZW5kLW9mLWJsb2NrAGluY29ycmVjdCBoZWFkZXIgY2hlY2sAaW5jb3JyZWN0IGxlbmd0aCBjaGVjawBpbmNvcnJlY3QgZGF0YSBjaGVjawBpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjawBoZWFkZXIgY3JjIG1pc21hdGNoADEuMi4xMy56bGliLW5nAGludmFsaWQgd2luZG93IHNpemUAUmVhZC1vbmx5IGFyY2hpdmUATm90IGEgemlwIGFyY2hpdmUAUmVzb3VyY2Ugc3RpbGwgaW4gdXNlAE1hbGxvYyBmYWlsdXJlAGludmFsaWQgYmxvY2sgdHlwZQBGYWlsdXJlIHRvIGNyZWF0ZSB0ZW1wb3JhcnkgZmlsZQBDYW4ndCBvcGVuIGZpbGUATm8gc3VjaCBmaWxlAFByZW1hdHVyZSBlbmQgb2YgZmlsZQBDYW4ndCByZW1vdmUgZmlsZQBpbnZhbGlkIGxpdGVyYWwvbGVuZ3RoIGNvZGUAaW52YWxpZCBkaXN0YW5jZSBjb2RlAHVua25vd24gY29tcHJlc3Npb24gbWV0aG9kAHN0cmVhbSBlbmQAQ29tcHJlc3NlZCBkYXRhIGludmFsaWQATXVsdGktZGlzayB6aXAgYXJjaGl2ZXMgbm90IHN1cHBvcnRl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UgAIANIACAAyAAgAsgAIAHIACADyAAgACgAIAIoACABKAAgAygAIACoACACqAAgAagAIAOoACAAaAAgAmgAIAFoACADaAAgAOgAIALoACAB6AAgA+gAIAAYACACGAAgARgAIAMYACAAmAAgApgAIAGYACADmAAgAFgAIAJYACABWAAgA1gAIADYACAC2AAgAdgAIAPYACAAOAAgAjgAIAE4ACADOAAgALgAIAK4ACABuAAgA7gAIAB4ACACeAAgAXgAIAN4ACAA+AAgAvgAIAH4ACAD+AAgAAQAIAIEACABBAAgAwQAIACEACAChAAgAYQAIAOEACAARAAgAkQAIAFEACADRAAgAMQAIALEACABxAAgA8QAIAAkACACJAAgASQAIAMkACAApAAgAqQAIAGkACADpAAgAGQAIAJkACABZAAgA2QAIADkACAC5AAgAeQAIAPkACAAFAAgAhQAIAEUACADFAAgAJQAIAKUACABlAAgA5QAIABUACACVAAgAVQAIANUACAA1AAgAtQAIAHUACAD1AAgADQAIAI0ACABNAAgAzQAIAC0ACACtAAgAbQAIAO0ACAAdAAgAnQAIAF0ACADdAAgAPQAIAL0ACAB9AAgA/QAIABMACQATAQkAkwAJAJMBCQBTAAkAUwEJANMACQDTAQkAMwAJADMBCQCzAAkAswEJAHMACQBzAQkA8wAJAPMBCQALAAkACwEJAIsACQCLAQkASwAJAEsBCQDLAAkAywEJACsACQArAQkAqwAJAKsBCQBrAAkAawEJAOsACQDrAQkAGwAJABsBCQCbAAkAmwEJAFsACQBbAQkA2wAJANsBCQA7AAkAOwEJALsACQC7AQkAewAJAHsBCQD7AAkA+wEJAAcACQAHAQkAhwAJAIcBCQBHAAkARwEJAMcACQDHAQkAJwAJACcBCQCnAAkApwEJAGcACQBnAQkA5wAJAOcBCQAXAAkAFwEJAJcACQCXAQkAVwAJAFcBCQDXAAkA1wEJADcACQA3AQkAtwAJALcBCQB3AAkAdwEJAPcACQD3AQkADwAJAA8BCQCPAAkAjwEJAE8ACQBPAQkAzwAJAM8BCQAvAAkALwEJAK8ACQCvAQkAbwAJAG8BCQDvAAkA7wEJAB8ACQAfAQkAnwAJAJ8BCQBfAAkAXwEJAN8ACQDfAQkAPwAJAD8BCQC/AAkA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SXMgYSBkaXJlY3RvcnkAVGV4dCBmaWxlIGJ1c3kARXhlYyBmb3JtYXQgZXJyb3IASW52YWxpZCBhcmd1bWVudABBcmd1bWVudCBsaXN0IHRvbyBsb25nAFN5bWJvbGljIGxpbmsgbG9vcABGaWxlbmFtZSB0b28gbG9uZwBUb28gbWFueSBvcGVuIGZpbGVzIGluIHN5c3RlbQBObyBmaWxlIGRlc2NyaXB0b3JzIGF2YWlsYWJsZQBCYWQgZmlsZSBkZXNjcmlwdG9yAE5vIGNoaWxkIHByb2Nlc3MAQmFkIGFkZHJlc3MARmlsZSB0b28gbGFyZ2UAVG9vIG1hbnkgbGlua3MATm8gbG9ja3MgYXZhaWxhYmxlAFJlc291cmNlIGRlYWRsb2NrIHdvdWxkIG9jY3VyAFN0YXRlIG5vdCByZWNvdmVyYWJsZQBQcmV2aW91cyBvd25lciBkaWVkAE9wZXJhdGlvbiBjYW5jZWxlZABGdW5jdGlvbiBub3QgaW1wbGVtZW50ZWQATm8gbWVzc2FnZSBvZiBkZXNpcmVkIHR5cGUASWRlbnRpZmllciByZW1vdmVkAERldmljZSBub3QgYSBzdHJlYW0ATm8gZGF0YSBhdmFpbGFibGUARGV2aWNlIHRpbWVvdXQAT3V0IG9mIHN0cmVhbXMgcmVzb3VyY2VzAExpbmsgaGFzIGJlZW4gc2V2ZXJlZABQcm90b2NvbCBlcnJvcgBCYWQgbWVzc2FnZQBGaWxlIGRlc2NyaXB0b3IgaW4gYmFkIHN0YXRlAE5vdCBhIHNvY2tldABEZXN0aW5hdGlvbiBhZGRyZXNzIHJlcXVpcmVkAE1lc3NhZ2UgdG9vIGxhcmdlAFByb3RvY29sIHdyb25nIHR5cGUgZm9yIHNvY2tldABQcm90b2NvbCBub3QgYXZhaWxhYmxlAFByb3RvY29sIG5vdCBzdXBwb3J0ZWQAU29ja2V0IHR5cGUgbm90IHN1cHBvcnRlZABOb3Qgc3VwcG9ydGVkAFByb3RvY29sIGZhbWlseSBub3Qgc3VwcG9ydGVkAEFkZHJlc3MgZmFtaWx5IG5vdCBzdXBwb3J0ZWQgYnkgcHJvdG9jb2wAQWRkcmVzcyBub3QgYXZhaWxhYmxlAE5ldHdvcmsgaXMgZG93bgBOZXR3b3JrIHVucmVhY2hhYmxlAENvbm5lY3Rpb24gcmVzZXQgYnkgbmV0d29yawBDb25uZWN0aW9uIGFib3J0ZWQATm8gYnVmZmVyIHNwYWNlIGF2YWlsYWJsZQBTb2NrZXQgaXMgY29ubmVjdGVkAFNvY2tldCBub3QgY29ubmVjdGVkAENhbm5vdCBzZW5kIGFmdGVyIHNvY2tldCBzaHV0ZG93bgBPcGVyYXRpb24gYWxyZWFkeSBpbiBwcm9ncmVzcwBPcGVyYXRpb24gaW4gcHJvZ3Jlc3MAU3RhbGUgZmlsZSBoYW5kbGUAUmVtb3RlIEkvTyBlcnJvcgBRdW90YSBleGNlZWRlZABObyBtZWRpdW0gZm91bmQAV3JvbmcgbWVkaXVtIHR5cGUATm8gZXJyb3IgaW5mb3JtYXRpb24AQcCAAQuFARMAAAAUAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAAAjAAAAgERQADEAAAAyAAAAMwAAADQAAAA1AAAANgAAADcAAAA4AAAAOQAAADIAAAAzAAAANAAAADUAAAA2AAAANwAAADgAQfSCAQsCXEQAQbCDAQsQ/////////////////////w==";Bo(Hi)||(Hi=P(Hi));function to(Je){try{if(Je==Hi&&ce)return new Uint8Array(ce);var st=Me(Je);if(st)return st;if(R)return R(Je);throw"sync fetching of the wasm failed: you can preload it to Module['wasmBinary'] manually, or emcc.py will do that for you when generating HTML (but not JS)"}catch(St){rs(St)}}function vo(Je,st){var St,lr,ee;try{ee=to(Je),lr=new WebAssembly.Module(ee),St=new WebAssembly.Instance(lr,st)}catch(Oe){var Ie=Oe.toString();throw te("failed to compile wasm module: "+Ie),(Ie.includes("imported Memory")||Ie.includes("memory import"))&&te("Memory size incompatibility issues may be due to changing INITIAL_MEMORY at runtime to something too large. Use ALLOW_MEMORY_GROWTH to allow any size memory (and also make sure not to set INITIAL_MEMORY at runtime to something smaller than it was at compile time)."),Oe}return[St,lr]}function RA(){var Je={a:fu};function st(ee,Ie){var Oe=ee.exports;r.asm=Oe,Be=r.asm.g,z(Be.buffer),$=r.asm.W,gn(r.asm.h),wo("wasm-instantiate")}if(oi("wasm-instantiate"),r.instantiateWasm)try{var St=r.instantiateWasm(Je,st);return St}catch(ee){return te("Module.instantiateWasm callback failed with error: "+ee),!1}var lr=vo(Hi,Je);return st(lr[0]),r.asm}function pf(Je){return F.getFloat32(Je,!0)}function Eh(Je){return F.getFloat64(Je,!0)}function Ih(Je){return F.getInt16(Je,!0)}function ro(Je){return F.getInt32(Je,!0)}function jn(Je,st){F.setInt32(Je,st,!0)}function Rs(Je){for(;Je.length>0;){var st=Je.shift();if(typeof st=="function"){st(r);continue}var St=st.func;typeof St=="number"?st.arg===void 0?$.get(St)():$.get(St)(st.arg):St(st.arg===void 0?null:st.arg)}}function no(Je,st){var St=new Date(ro((Je>>2)*4)*1e3);jn((st>>2)*4,St.getUTCSeconds()),jn((st+4>>2)*4,St.getUTCMinutes()),jn((st+8>>2)*4,St.getUTCHours()),jn((st+12>>2)*4,St.getUTCDate()),jn((st+16>>2)*4,St.getUTCMonth()),jn((st+20>>2)*4,St.getUTCFullYear()-1900),jn((st+24>>2)*4,St.getUTCDay()),jn((st+36>>2)*4,0),jn((st+32>>2)*4,0);var lr=Date.UTC(St.getUTCFullYear(),0,1,0,0,0,0),ee=(St.getTime()-lr)/(1e3*60*60*24)|0;return jn((st+28>>2)*4,ee),no.GMTString||(no.GMTString=rt("GMT")),jn((st+40>>2)*4,no.GMTString),st}function lu(Je,st){return no(Je,st)}function cu(Je,st,St){ke.copyWithin(Je,st,st+St)}function uu(Je){try{return Be.grow(Je-Pe.byteLength+65535>>>16),z(Be.buffer),1}catch{}}function FA(Je){var st=ke.length;Je=Je>>>0;var St=2147483648;if(Je>St)return!1;for(var lr=1;lr<=4;lr*=2){var ee=st*(1+.2/lr);ee=Math.min(ee,Je+100663296);var Ie=Math.min(St,Ne(Math.max(Je,ee),65536)),Oe=uu(Ie);if(Oe)return!0}return!1}function NA(Je){Ae(Je)}function aa(Je){var st=Date.now()/1e3|0;return Je&&jn((Je>>2)*4,st),st}function la(){if(la.called)return;la.called=!0;var Je=new Date().getFullYear(),st=new Date(Je,0,1),St=new Date(Je,6,1),lr=st.getTimezoneOffset(),ee=St.getTimezoneOffset(),Ie=Math.max(lr,ee);jn((Sl()>>2)*4,Ie*60),jn((Cs()>>2)*4,+(lr!=ee));function Oe(fn){var ai=fn.toTimeString().match(/\(([A-Za-z ]+)\)$/);return ai?ai[1]:"GMT"}var ht=Oe(st),mt=Oe(St),Dt=rt(ht),tr=rt(mt);ee>2)*4,Dt),jn((Li()+4>>2)*4,tr)):(jn((Li()>>2)*4,tr),jn((Li()+4>>2)*4,Dt))}function OA(Je){la();var st=Date.UTC(ro((Je+20>>2)*4)+1900,ro((Je+16>>2)*4),ro((Je+12>>2)*4),ro((Je+8>>2)*4),ro((Je+4>>2)*4),ro((Je>>2)*4),0),St=new Date(st);jn((Je+24>>2)*4,St.getUTCDay());var lr=Date.UTC(St.getUTCFullYear(),0,1,0,0,0,0),ee=(St.getTime()-lr)/(1e3*60*60*24)|0;return jn((Je+28>>2)*4,ee),St.getTime()/1e3|0}var gr=typeof atob=="function"?atob:function(Je){var st="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",St="",lr,ee,Ie,Oe,ht,mt,Dt,tr=0;Je=Je.replace(/[^A-Za-z0-9\+\/\=]/g,"");do Oe=st.indexOf(Je.charAt(tr++)),ht=st.indexOf(Je.charAt(tr++)),mt=st.indexOf(Je.charAt(tr++)),Dt=st.indexOf(Je.charAt(tr++)),lr=Oe<<2|ht>>4,ee=(ht&15)<<4|mt>>2,Ie=(mt&3)<<6|Dt,St=St+String.fromCharCode(lr),mt!==64&&(St=St+String.fromCharCode(ee)),Dt!==64&&(St=St+String.fromCharCode(Ie));while(tr0||(Et(),Ir>0))return;function st(){Qn||(Qn=!0,r.calledRun=!0,!Ce&&(qt(),s(r),r.onRuntimeInitialized&&r.onRuntimeInitialized(),ir()))}r.setStatus?(r.setStatus("Running..."),setTimeout(function(){setTimeout(function(){r.setStatus("")},1),st()},1)):st()}if(r.run=pc,r.preInit)for(typeof r.preInit=="function"&&(r.preInit=[r.preInit]);r.preInit.length>0;)r.preInit.pop()();return pc(),e}}();typeof wT=="object"&&typeof Jj=="object"?Jj.exports=Kj:typeof define=="function"&&define.amd?define([],function(){return Kj}):typeof wT=="object"&&(wT.createModule=Kj)});var jp,Hde,jde,qde=It(()=>{jp=["number","number"],Hde=(X=>(X[X.ZIP_ER_OK=0]="ZIP_ER_OK",X[X.ZIP_ER_MULTIDISK=1]="ZIP_ER_MULTIDISK",X[X.ZIP_ER_RENAME=2]="ZIP_ER_RENAME",X[X.ZIP_ER_CLOSE=3]="ZIP_ER_CLOSE",X[X.ZIP_ER_SEEK=4]="ZIP_ER_SEEK",X[X.ZIP_ER_READ=5]="ZIP_ER_READ",X[X.ZIP_ER_WRITE=6]="ZIP_ER_WRITE",X[X.ZIP_ER_CRC=7]="ZIP_ER_CRC",X[X.ZIP_ER_ZIPCLOSED=8]="ZIP_ER_ZIPCLOSED",X[X.ZIP_ER_NOENT=9]="ZIP_ER_NOENT",X[X.ZIP_ER_EXISTS=10]="ZIP_ER_EXISTS",X[X.ZIP_ER_OPEN=11]="ZIP_ER_OPEN",X[X.ZIP_ER_TMPOPEN=12]="ZIP_ER_TMPOPEN",X[X.ZIP_ER_ZLIB=13]="ZIP_ER_ZLIB",X[X.ZIP_ER_MEMORY=14]="ZIP_ER_MEMORY",X[X.ZIP_ER_CHANGED=15]="ZIP_ER_CHANGED",X[X.ZIP_ER_COMPNOTSUPP=16]="ZIP_ER_COMPNOTSUPP",X[X.ZIP_ER_EOF=17]="ZIP_ER_EOF",X[X.ZIP_ER_INVAL=18]="ZIP_ER_INVAL",X[X.ZIP_ER_NOZIP=19]="ZIP_ER_NOZIP",X[X.ZIP_ER_INTERNAL=20]="ZIP_ER_INTERNAL",X[X.ZIP_ER_INCONS=21]="ZIP_ER_INCONS",X[X.ZIP_ER_REMOVE=22]="ZIP_ER_REMOVE",X[X.ZIP_ER_DELETED=23]="ZIP_ER_DELETED",X[X.ZIP_ER_ENCRNOTSUPP=24]="ZIP_ER_ENCRNOTSUPP",X[X.ZIP_ER_RDONLY=25]="ZIP_ER_RDONLY",X[X.ZIP_ER_NOPASSWD=26]="ZIP_ER_NOPASSWD",X[X.ZIP_ER_WRONGPASSWD=27]="ZIP_ER_WRONGPASSWD",X[X.ZIP_ER_OPNOTSUPP=28]="ZIP_ER_OPNOTSUPP",X[X.ZIP_ER_INUSE=29]="ZIP_ER_INUSE",X[X.ZIP_ER_TELL=30]="ZIP_ER_TELL",X[X.ZIP_ER_COMPRESSED_DATA=31]="ZIP_ER_COMPRESSED_DATA",X))(Hde||{}),jde=t=>({get HEAPU8(){return t.HEAPU8},errors:Hde,SEEK_SET:0,SEEK_CUR:1,SEEK_END:2,ZIP_CHECKCONS:4,ZIP_EXCL:2,ZIP_RDONLY:16,ZIP_FL_OVERWRITE:8192,ZIP_FL_COMPRESSED:4,ZIP_OPSYS_DOS:0,ZIP_OPSYS_AMIGA:1,ZIP_OPSYS_OPENVMS:2,ZIP_OPSYS_UNIX:3,ZIP_OPSYS_VM_CMS:4,ZIP_OPSYS_ATARI_ST:5,ZIP_OPSYS_OS_2:6,ZIP_OPSYS_MACINTOSH:7,ZIP_OPSYS_Z_SYSTEM:8,ZIP_OPSYS_CPM:9,ZIP_OPSYS_WINDOWS_NTFS:10,ZIP_OPSYS_MVS:11,ZIP_OPSYS_VSE:12,ZIP_OPSYS_ACORN_RISC:13,ZIP_OPSYS_VFAT:14,ZIP_OPSYS_ALTERNATE_MVS:15,ZIP_OPSYS_BEOS:16,ZIP_OPSYS_TANDEM:17,ZIP_OPSYS_OS_400:18,ZIP_OPSYS_OS_X:19,ZIP_CM_DEFAULT:-1,ZIP_CM_STORE:0,ZIP_CM_DEFLATE:8,uint08S:t._malloc(1),uint32S:t._malloc(4),malloc:t._malloc,free:t._free,getValue:t.getValue,openFromSource:t.cwrap("zip_open_from_source","number",["number","number","number"]),close:t.cwrap("zip_close","number",["number"]),discard:t.cwrap("zip_discard",null,["number"]),getError:t.cwrap("zip_get_error","number",["number"]),getName:t.cwrap("zip_get_name","string",["number","number","number"]),getNumEntries:t.cwrap("zip_get_num_entries","number",["number","number"]),delete:t.cwrap("zip_delete","number",["number","number"]),statIndex:t.cwrap("zip_stat_index","number",["number",...jp,"number","number"]),fopenIndex:t.cwrap("zip_fopen_index","number",["number",...jp,"number"]),fread:t.cwrap("zip_fread","number",["number","number","number","number"]),fclose:t.cwrap("zip_fclose","number",["number"]),dir:{add:t.cwrap("zip_dir_add","number",["number","string"])},file:{add:t.cwrap("zip_file_add","number",["number","string","number","number"]),getError:t.cwrap("zip_file_get_error","number",["number"]),getExternalAttributes:t.cwrap("zip_file_get_external_attributes","number",["number",...jp,"number","number","number"]),setExternalAttributes:t.cwrap("zip_file_set_external_attributes","number",["number",...jp,"number","number","number"]),setMtime:t.cwrap("zip_file_set_mtime","number",["number",...jp,"number","number"]),setCompression:t.cwrap("zip_set_file_compression","number",["number",...jp,"number","number"])},ext:{countSymlinks:t.cwrap("zip_ext_count_symlinks","number",["number"])},error:{initWithCode:t.cwrap("zip_error_init_with_code",null,["number","number"]),strerror:t.cwrap("zip_error_strerror","string",["number"])},name:{locate:t.cwrap("zip_name_locate","number",["number","string","number"])},source:{fromUnattachedBuffer:t.cwrap("zip_source_buffer_create","number",["number",...jp,"number","number"]),fromBuffer:t.cwrap("zip_source_buffer","number",["number","number",...jp,"number"]),free:t.cwrap("zip_source_free",null,["number"]),keep:t.cwrap("zip_source_keep",null,["number"]),open:t.cwrap("zip_source_open","number",["number"]),close:t.cwrap("zip_source_close","number",["number"]),seek:t.cwrap("zip_source_seek","number",["number",...jp,"number"]),tell:t.cwrap("zip_source_tell","number",["number"]),read:t.cwrap("zip_source_read","number",["number","number","number"]),error:t.cwrap("zip_source_error","number",["number"])},struct:{statS:t.cwrap("zipstruct_statS","number",[]),statSize:t.cwrap("zipstruct_stat_size","number",["number"]),statCompSize:t.cwrap("zipstruct_stat_comp_size","number",["number"]),statCompMethod:t.cwrap("zipstruct_stat_comp_method","number",["number"]),statMtime:t.cwrap("zipstruct_stat_mtime","number",["number"]),statCrc:t.cwrap("zipstruct_stat_crc","number",["number"]),errorS:t.cwrap("zipstruct_errorS","number",[]),errorCodeZip:t.cwrap("zipstruct_error_code_zip","number",["number"])}})});function zj(t,e){let r=t.indexOf(e);if(r<=0)return null;let s=r;for(;r>=0&&(s=r+e.length,t[s]!==K.sep);){if(t[r-1]===K.sep)return null;r=t.indexOf(e,s)}return t.length>s&&t[s]!==K.sep?null:t.slice(0,s)}var tA,Gde=It(()=>{bt();bt();rA();tA=class t extends n0{static async openPromise(e,r){let s=new t(r);try{return await e(s)}finally{s.saveAndClose()}}constructor(e={}){let r=e.fileExtensions,s=e.readOnlyArchives,a=typeof r>"u"?f=>zj(f,".zip"):f=>{for(let p of r){let h=zj(f,p);if(h)return h}return null},n=(f,p)=>new ps(p,{baseFs:f,readOnly:s,stats:f.statSync(p),customZipImplementation:e.customZipImplementation}),c=async(f,p)=>{let h={baseFs:f,readOnly:s,stats:await f.statPromise(p),customZipImplementation:e.customZipImplementation};return()=>new ps(p,h)};super({...e,factorySync:n,factoryPromise:c,getMountPoint:a})}}});var Zj,vI,Xj=It(()=>{Vj();Zj=class extends Error{constructor(e,r){super(e),this.name="Libzip Error",this.code=r}},vI=class{constructor(e){this.filesShouldBeCached=!0;let r="buffer"in e?e.buffer:e.baseFs.readFileSync(e.path);this.libzip=Bv();let s=this.libzip.malloc(4);try{let c=0;e.readOnly&&(c|=this.libzip.ZIP_RDONLY);let f=this.allocateUnattachedSource(r);try{this.zip=this.libzip.openFromSource(f,c,s),this.lzSource=f}catch(p){throw this.libzip.source.free(f),p}if(this.zip===0){let p=this.libzip.struct.errorS();throw this.libzip.error.initWithCode(p,this.libzip.getValue(s,"i32")),this.makeLibzipError(p)}}finally{this.libzip.free(s)}let a=this.libzip.getNumEntries(this.zip,0),n=new Array(a);for(let c=0;c>>0,n=this.libzip.struct.statMtime(r)>>>0,c=this.libzip.struct.statCrc(r)>>>0;return{size:a,mtime:n,crc:c}}makeLibzipError(e){let r=this.libzip.struct.errorCodeZip(e),s=this.libzip.error.strerror(e),a=new Zj(s,this.libzip.errors[r]);if(r===this.libzip.errors.ZIP_ER_CHANGED)throw new Error(`Assertion failed: Unexpected libzip error: ${a.message}`);return a}setFileSource(e,r,s){let a=this.allocateSource(s);try{let n=this.libzip.file.add(this.zip,e,a,this.libzip.ZIP_FL_OVERWRITE);if(n===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));if(r!==null&&this.libzip.file.setCompression(this.zip,n,0,r[0],r[1])===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return n}catch(n){throw this.libzip.source.free(a),n}}setMtime(e,r){if(this.libzip.file.setMtime(this.zip,e,0,r,0)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}getExternalAttributes(e){if(this.libzip.file.getExternalAttributes(this.zip,e,0,0,this.libzip.uint08S,this.libzip.uint32S)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));let s=this.libzip.getValue(this.libzip.uint08S,"i8")>>>0,a=this.libzip.getValue(this.libzip.uint32S,"i32")>>>0;return[s,a]}setExternalAttributes(e,r,s){if(this.libzip.file.setExternalAttributes(this.zip,e,0,0,r,s)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}locate(e){return this.libzip.name.locate(this.zip,e,0)}getFileSource(e){let r=this.libzip.struct.statS();if(this.libzip.statIndex(this.zip,e,0,0,r)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));let a=this.libzip.struct.statCompSize(r),n=this.libzip.struct.statCompMethod(r),c=this.libzip.malloc(a);try{let f=this.libzip.fopenIndex(this.zip,e,0,this.libzip.ZIP_FL_COMPRESSED);if(f===0)throw this.makeLibzipError(this.libzip.getError(this.zip));try{let p=this.libzip.fread(f,c,a,0);if(p===-1)throw this.makeLibzipError(this.libzip.file.getError(f));if(pa)throw new Error("Overread");let h=this.libzip.HEAPU8.subarray(c,c+a);return{data:Buffer.from(h),compressionMethod:n}}finally{this.libzip.fclose(f)}}finally{this.libzip.free(c)}}deleteEntry(e){if(this.libzip.delete(this.zip,e)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}addDirectory(e){let r=this.libzip.dir.add(this.zip,e);if(r===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return r}getBufferAndClose(){try{if(this.libzip.source.keep(this.lzSource),this.libzip.close(this.zip)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));if(this.libzip.source.open(this.lzSource)===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));if(this.libzip.source.seek(this.lzSource,0,0,this.libzip.SEEK_END)===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));let e=this.libzip.source.tell(this.lzSource);if(e===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));if(this.libzip.source.seek(this.lzSource,0,0,this.libzip.SEEK_SET)===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));let r=this.libzip.malloc(e);if(!r)throw new Error("Couldn't allocate enough memory");try{let s=this.libzip.source.read(this.lzSource,r,e);if(s===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));if(se)throw new Error("Overread");let a=Buffer.from(this.libzip.HEAPU8.subarray(r,r+e));return process.env.YARN_IS_TEST_ENV&&process.env.YARN_ZIP_DATA_EPILOGUE&&(a=Buffer.concat([a,Buffer.from(process.env.YARN_ZIP_DATA_EPILOGUE)])),a}finally{this.libzip.free(r)}}finally{this.libzip.source.close(this.lzSource),this.libzip.source.free(this.lzSource)}}allocateBuffer(e){Buffer.isBuffer(e)||(e=Buffer.from(e));let r=this.libzip.malloc(e.byteLength);if(!r)throw new Error("Couldn't allocate enough memory");return new Uint8Array(this.libzip.HEAPU8.buffer,r,e.byteLength).set(e),{buffer:r,byteLength:e.byteLength}}allocateUnattachedSource(e){let r=this.libzip.struct.errorS(),{buffer:s,byteLength:a}=this.allocateBuffer(e),n=this.libzip.source.fromUnattachedBuffer(s,a,0,1,r);if(n===0)throw this.libzip.free(r),this.makeLibzipError(r);return n}allocateSource(e){let{buffer:r,byteLength:s}=this.allocateBuffer(e),a=this.libzip.source.fromBuffer(this.zip,r,s,0,1);if(a===0)throw this.libzip.free(r),this.makeLibzipError(this.libzip.getError(this.zip));return a}discard(){this.libzip.discard(this.zip)}}});function vmt(t){if(typeof t=="string"&&String(+t)===t)return+t;if(typeof t=="number"&&Number.isFinite(t))return t<0?Date.now()/1e3:t;if(Wde.types.isDate(t))return t.getTime()/1e3;throw new Error("Invalid time")}function BT(){return Buffer.from([80,75,5,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0])}var ka,$j,Wde,e6,lm,t6,r6,Yde,ps,vT=It(()=>{bt();bt();bt();bt();bt();bt();ka=ye("fs"),$j=ye("stream"),Wde=ye("util"),e6=et(ye("zlib"));Xj();lm=3,t6=0,r6=8,Yde="mixed";ps=class extends Uf{constructor(r,s={}){super();this.listings=new Map;this.entries=new Map;this.fileSources=new Map;this.fds=new Map;this.nextFd=0;this.ready=!1;this.readOnly=!1;s.readOnly&&(this.readOnly=!0);let a=s;this.level=typeof a.level<"u"?a.level:Yde;let n=s.customZipImplementation??vI;if(typeof r=="string"){let{baseFs:f=new Yn}=a;this.baseFs=f,this.path=r}else this.path=null,this.baseFs=null;if(s.stats)this.stats=s.stats;else if(typeof r=="string")try{this.stats=this.baseFs.statSync(r)}catch(f){if(f.code==="ENOENT"&&a.create)this.stats=el.makeDefaultStats();else throw f}else this.stats=el.makeDefaultStats();typeof r=="string"?s.create?this.zipImpl=new n({buffer:BT(),readOnly:this.readOnly}):this.zipImpl=new n({path:r,baseFs:this.baseFs,readOnly:this.readOnly,size:this.stats.size}):this.zipImpl=new n({buffer:r??BT(),readOnly:this.readOnly}),this.listings.set(vt.root,new Set);let c=this.zipImpl.getListings();for(let f=0;f{this.closeSync(f)}})}async readPromise(r,s,a,n,c){return this.readSync(r,s,a,n,c)}readSync(r,s,a=0,n=s.byteLength,c=-1){let f=this.fds.get(r);if(typeof f>"u")throw or.EBADF("read");let p=c===-1||c===null?f.cursor:c,h=this.readFileSync(f.p);h.copy(s,a,p,p+n);let E=Math.max(0,Math.min(h.length-p,n));return(c===-1||c===null)&&(f.cursor+=E),E}async writePromise(r,s,a,n,c){return typeof s=="string"?this.writeSync(r,s,c):this.writeSync(r,s,a,n,c)}writeSync(r,s,a,n,c){throw typeof this.fds.get(r)>"u"?or.EBADF("read"):new Error("Unimplemented")}async closePromise(r){return this.closeSync(r)}closeSync(r){if(typeof this.fds.get(r)>"u")throw or.EBADF("read");this.fds.delete(r)}createReadStream(r,{encoding:s}={}){if(r===null)throw new Error("Unimplemented");let a=this.openSync(r,"r"),n=Object.assign(new $j.PassThrough({emitClose:!0,autoDestroy:!0,destroy:(f,p)=>{clearImmediate(c),this.closeSync(a),p(f)}}),{close(){n.destroy()},bytesRead:0,path:r,pending:!1}),c=setImmediate(async()=>{try{let f=await this.readFilePromise(r,s);n.bytesRead=f.length,n.end(f)}catch(f){n.destroy(f)}});return n}createWriteStream(r,{encoding:s}={}){if(this.readOnly)throw or.EROFS(`open '${r}'`);if(r===null)throw new Error("Unimplemented");let a=[],n=this.openSync(r,"w"),c=Object.assign(new $j.PassThrough({autoDestroy:!0,emitClose:!0,destroy:(f,p)=>{try{f?p(f):(this.writeFileSync(r,Buffer.concat(a),s),p(null))}catch(h){p(h)}finally{this.closeSync(n)}}}),{close(){c.destroy()},bytesWritten:0,path:r,pending:!1});return c.on("data",f=>{let p=Buffer.from(f);c.bytesWritten+=p.length,a.push(p)}),c}async realpathPromise(r){return this.realpathSync(r)}realpathSync(r){let s=this.resolveFilename(`lstat '${r}'`,r);if(!this.entries.has(s)&&!this.listings.has(s))throw or.ENOENT(`lstat '${r}'`);return s}async existsPromise(r){return this.existsSync(r)}existsSync(r){if(!this.ready)throw or.EBUSY(`archive closed, existsSync '${r}'`);if(this.symlinkCount===0){let a=K.resolve(vt.root,r);return this.entries.has(a)||this.listings.has(a)}let s;try{s=this.resolveFilename(`stat '${r}'`,r,void 0,!1)}catch{return!1}return s===void 0?!1:this.entries.has(s)||this.listings.has(s)}async accessPromise(r,s){return this.accessSync(r,s)}accessSync(r,s=ka.constants.F_OK){let a=this.resolveFilename(`access '${r}'`,r);if(!this.entries.has(a)&&!this.listings.has(a))throw or.ENOENT(`access '${r}'`);if(this.readOnly&&s&ka.constants.W_OK)throw or.EROFS(`access '${r}'`)}async statPromise(r,s={bigint:!1}){return s.bigint?this.statSync(r,{bigint:!0}):this.statSync(r)}statSync(r,s={bigint:!1,throwIfNoEntry:!0}){let a=this.resolveFilename(`stat '${r}'`,r,void 0,s.throwIfNoEntry);if(a!==void 0){if(!this.entries.has(a)&&!this.listings.has(a)){if(s.throwIfNoEntry===!1)return;throw or.ENOENT(`stat '${r}'`)}if(r[r.length-1]==="/"&&!this.listings.has(a))throw or.ENOTDIR(`stat '${r}'`);return this.statImpl(`stat '${r}'`,a,s)}}async fstatPromise(r,s){return this.fstatSync(r,s)}fstatSync(r,s){let a=this.fds.get(r);if(typeof a>"u")throw or.EBADF("fstatSync");let{p:n}=a,c=this.resolveFilename(`stat '${n}'`,n);if(!this.entries.has(c)&&!this.listings.has(c))throw or.ENOENT(`stat '${n}'`);if(n[n.length-1]==="/"&&!this.listings.has(c))throw or.ENOTDIR(`stat '${n}'`);return this.statImpl(`fstat '${n}'`,c,s)}async lstatPromise(r,s={bigint:!1}){return s.bigint?this.lstatSync(r,{bigint:!0}):this.lstatSync(r)}lstatSync(r,s={bigint:!1,throwIfNoEntry:!0}){let a=this.resolveFilename(`lstat '${r}'`,r,!1,s.throwIfNoEntry);if(a!==void 0){if(!this.entries.has(a)&&!this.listings.has(a)){if(s.throwIfNoEntry===!1)return;throw or.ENOENT(`lstat '${r}'`)}if(r[r.length-1]==="/"&&!this.listings.has(a))throw or.ENOTDIR(`lstat '${r}'`);return this.statImpl(`lstat '${r}'`,a,s)}}statImpl(r,s,a={}){let n=this.entries.get(s);if(typeof n<"u"){let c=this.zipImpl.stat(n),f=c.crc,p=c.size,h=c.mtime*1e3,E=this.stats.uid,C=this.stats.gid,S=512,P=Math.ceil(c.size/S),I=h,R=h,N=h,U=new Date(I),W=new Date(R),te=new Date(N),ie=new Date(h),Ae=this.listings.has(s)?ka.constants.S_IFDIR:this.isSymbolicLink(n)?ka.constants.S_IFLNK:ka.constants.S_IFREG,ce=Ae===ka.constants.S_IFDIR?493:420,me=Ae|this.getUnixMode(n,ce)&511,pe=Object.assign(new el.StatEntry,{uid:E,gid:C,size:p,blksize:S,blocks:P,atime:U,birthtime:W,ctime:te,mtime:ie,atimeMs:I,birthtimeMs:R,ctimeMs:N,mtimeMs:h,mode:me,crc:f});return a.bigint===!0?el.convertToBigIntStats(pe):pe}if(this.listings.has(s)){let c=this.stats.uid,f=this.stats.gid,p=0,h=512,E=0,C=this.stats.mtimeMs,S=this.stats.mtimeMs,P=this.stats.mtimeMs,I=this.stats.mtimeMs,R=new Date(C),N=new Date(S),U=new Date(P),W=new Date(I),te=ka.constants.S_IFDIR|493,Ae=Object.assign(new el.StatEntry,{uid:c,gid:f,size:p,blksize:h,blocks:E,atime:R,birthtime:N,ctime:U,mtime:W,atimeMs:C,birthtimeMs:S,ctimeMs:P,mtimeMs:I,mode:te,crc:0});return a.bigint===!0?el.convertToBigIntStats(Ae):Ae}throw new Error("Unreachable")}getUnixMode(r,s){let[a,n]=this.zipImpl.getExternalAttributes(r);return a!==lm?s:n>>>16}registerListing(r){let s=this.listings.get(r);if(s)return s;this.registerListing(K.dirname(r)).add(K.basename(r));let n=new Set;return this.listings.set(r,n),n}registerEntry(r,s){this.registerListing(K.dirname(r)).add(K.basename(r)),this.entries.set(r,s)}unregisterListing(r){this.listings.delete(r),this.listings.get(K.dirname(r))?.delete(K.basename(r))}unregisterEntry(r){this.unregisterListing(r);let s=this.entries.get(r);this.entries.delete(r),!(typeof s>"u")&&(this.fileSources.delete(s),this.isSymbolicLink(s)&&this.symlinkCount--)}deleteEntry(r,s){this.unregisterEntry(r),this.zipImpl.deleteEntry(s)}resolveFilename(r,s,a=!0,n=!0){if(!this.ready)throw or.EBUSY(`archive closed, ${r}`);let c=K.resolve(vt.root,s);if(c==="/")return vt.root;let f=this.entries.get(c);if(a&&f!==void 0)if(this.symlinkCount!==0&&this.isSymbolicLink(f)){let p=this.getFileSource(f).toString();return this.resolveFilename(r,K.resolve(K.dirname(c),p),!0,n)}else return c;for(;;){let p=this.resolveFilename(r,K.dirname(c),!0,n);if(p===void 0)return p;let h=this.listings.has(p),E=this.entries.has(p);if(!h&&!E){if(n===!1)return;throw or.ENOENT(r)}if(!h)throw or.ENOTDIR(r);if(c=K.resolve(p,K.basename(c)),!a||this.symlinkCount===0)break;let C=this.zipImpl.locate(c.slice(1));if(C===-1)break;if(this.isSymbolicLink(C)){let S=this.getFileSource(C).toString();c=K.resolve(K.dirname(c),S)}else break}return c}setFileSource(r,s){let a=Buffer.isBuffer(s)?s:Buffer.from(s),n=K.relative(vt.root,r),c=null;this.level!=="mixed"&&(c=[this.level===0?t6:r6,this.level]);let f=this.zipImpl.setFileSource(n,c,a);return this.fileSources.set(f,a),f}isSymbolicLink(r){if(this.symlinkCount===0)return!1;let[s,a]=this.zipImpl.getExternalAttributes(r);return s!==lm?!1:(a>>>16&ka.constants.S_IFMT)===ka.constants.S_IFLNK}getFileSource(r,s={asyncDecompress:!1}){let a=this.fileSources.get(r);if(typeof a<"u")return a;let{data:n,compressionMethod:c}=this.zipImpl.getFileSource(r);if(c===t6)return this.zipImpl.filesShouldBeCached&&this.fileSources.set(r,n),n;if(c===r6){if(s.asyncDecompress)return new Promise((f,p)=>{e6.default.inflateRaw(n,(h,E)=>{h?p(h):(this.zipImpl.filesShouldBeCached&&this.fileSources.set(r,E),f(E))})});{let f=e6.default.inflateRawSync(n);return this.zipImpl.filesShouldBeCached&&this.fileSources.set(r,f),f}}else throw new Error(`Unsupported compression method: ${c}`)}async fchmodPromise(r,s){return this.chmodPromise(this.fdToPath(r,"fchmod"),s)}fchmodSync(r,s){return this.chmodSync(this.fdToPath(r,"fchmodSync"),s)}async chmodPromise(r,s){return this.chmodSync(r,s)}chmodSync(r,s){if(this.readOnly)throw or.EROFS(`chmod '${r}'`);s&=493;let a=this.resolveFilename(`chmod '${r}'`,r,!1),n=this.entries.get(a);if(typeof n>"u")throw new Error(`Assertion failed: The entry should have been registered (${a})`);let f=this.getUnixMode(n,ka.constants.S_IFREG|0)&-512|s;this.zipImpl.setExternalAttributes(n,lm,f<<16)}async fchownPromise(r,s,a){return this.chownPromise(this.fdToPath(r,"fchown"),s,a)}fchownSync(r,s,a){return this.chownSync(this.fdToPath(r,"fchownSync"),s,a)}async chownPromise(r,s,a){return this.chownSync(r,s,a)}chownSync(r,s,a){throw new Error("Unimplemented")}async renamePromise(r,s){return this.renameSync(r,s)}renameSync(r,s){throw new Error("Unimplemented")}async copyFilePromise(r,s,a){let{indexSource:n,indexDest:c,resolvedDestP:f}=this.prepareCopyFile(r,s,a),p=await this.getFileSource(n,{asyncDecompress:!0}),h=this.setFileSource(f,p);h!==c&&this.registerEntry(f,h)}copyFileSync(r,s,a=0){let{indexSource:n,indexDest:c,resolvedDestP:f}=this.prepareCopyFile(r,s,a),p=this.getFileSource(n),h=this.setFileSource(f,p);h!==c&&this.registerEntry(f,h)}prepareCopyFile(r,s,a=0){if(this.readOnly)throw or.EROFS(`copyfile '${r} -> '${s}'`);if(a&ka.constants.COPYFILE_FICLONE_FORCE)throw or.ENOSYS("unsupported clone operation",`copyfile '${r}' -> ${s}'`);let n=this.resolveFilename(`copyfile '${r} -> ${s}'`,r),c=this.entries.get(n);if(typeof c>"u")throw or.EINVAL(`copyfile '${r}' -> '${s}'`);let f=this.resolveFilename(`copyfile '${r}' -> ${s}'`,s),p=this.entries.get(f);if(a&(ka.constants.COPYFILE_EXCL|ka.constants.COPYFILE_FICLONE_FORCE)&&typeof p<"u")throw or.EEXIST(`copyfile '${r}' -> '${s}'`);return{indexSource:c,resolvedDestP:f,indexDest:p}}async appendFilePromise(r,s,a){if(this.readOnly)throw or.EROFS(`open '${r}'`);return typeof a>"u"?a={flag:"a"}:typeof a=="string"?a={flag:"a",encoding:a}:typeof a.flag>"u"&&(a={flag:"a",...a}),this.writeFilePromise(r,s,a)}appendFileSync(r,s,a={}){if(this.readOnly)throw or.EROFS(`open '${r}'`);return typeof a>"u"?a={flag:"a"}:typeof a=="string"?a={flag:"a",encoding:a}:typeof a.flag>"u"&&(a={flag:"a",...a}),this.writeFileSync(r,s,a)}fdToPath(r,s){let a=this.fds.get(r)?.p;if(typeof a>"u")throw or.EBADF(s);return a}async writeFilePromise(r,s,a){let{encoding:n,mode:c,index:f,resolvedP:p}=this.prepareWriteFile(r,a);f!==void 0&&typeof a=="object"&&a.flag&&a.flag.includes("a")&&(s=Buffer.concat([await this.getFileSource(f,{asyncDecompress:!0}),Buffer.from(s)])),n!==null&&(s=s.toString(n));let h=this.setFileSource(p,s);h!==f&&this.registerEntry(p,h),c!==null&&await this.chmodPromise(p,c)}writeFileSync(r,s,a){let{encoding:n,mode:c,index:f,resolvedP:p}=this.prepareWriteFile(r,a);f!==void 0&&typeof a=="object"&&a.flag&&a.flag.includes("a")&&(s=Buffer.concat([this.getFileSource(f),Buffer.from(s)])),n!==null&&(s=s.toString(n));let h=this.setFileSource(p,s);h!==f&&this.registerEntry(p,h),c!==null&&this.chmodSync(p,c)}prepareWriteFile(r,s){if(typeof r=="number"&&(r=this.fdToPath(r,"read")),this.readOnly)throw or.EROFS(`open '${r}'`);let a=this.resolveFilename(`open '${r}'`,r);if(this.listings.has(a))throw or.EISDIR(`open '${r}'`);let n=null,c=null;typeof s=="string"?n=s:typeof s=="object"&&({encoding:n=null,mode:c=null}=s);let f=this.entries.get(a);return{encoding:n,mode:c,resolvedP:a,index:f}}async unlinkPromise(r){return this.unlinkSync(r)}unlinkSync(r){if(this.readOnly)throw or.EROFS(`unlink '${r}'`);let s=this.resolveFilename(`unlink '${r}'`,r);if(this.listings.has(s))throw or.EISDIR(`unlink '${r}'`);let a=this.entries.get(s);if(typeof a>"u")throw or.EINVAL(`unlink '${r}'`);this.deleteEntry(s,a)}async utimesPromise(r,s,a){return this.utimesSync(r,s,a)}utimesSync(r,s,a){if(this.readOnly)throw or.EROFS(`utimes '${r}'`);let n=this.resolveFilename(`utimes '${r}'`,r);this.utimesImpl(n,a)}async lutimesPromise(r,s,a){return this.lutimesSync(r,s,a)}lutimesSync(r,s,a){if(this.readOnly)throw or.EROFS(`lutimes '${r}'`);let n=this.resolveFilename(`utimes '${r}'`,r,!1);this.utimesImpl(n,a)}utimesImpl(r,s){this.listings.has(r)&&(this.entries.has(r)||this.hydrateDirectory(r));let a=this.entries.get(r);if(a===void 0)throw new Error("Unreachable");this.zipImpl.setMtime(a,vmt(s))}async mkdirPromise(r,s){return this.mkdirSync(r,s)}mkdirSync(r,{mode:s=493,recursive:a=!1}={}){if(a)return this.mkdirpSync(r,{chmod:s});if(this.readOnly)throw or.EROFS(`mkdir '${r}'`);let n=this.resolveFilename(`mkdir '${r}'`,r);if(this.entries.has(n)||this.listings.has(n))throw or.EEXIST(`mkdir '${r}'`);this.hydrateDirectory(n),this.chmodSync(n,s)}async rmdirPromise(r,s){return this.rmdirSync(r,s)}rmdirSync(r,{recursive:s=!1}={}){if(this.readOnly)throw or.EROFS(`rmdir '${r}'`);if(s){this.removeSync(r);return}let a=this.resolveFilename(`rmdir '${r}'`,r),n=this.listings.get(a);if(!n)throw or.ENOTDIR(`rmdir '${r}'`);if(n.size>0)throw or.ENOTEMPTY(`rmdir '${r}'`);let c=this.entries.get(a);if(typeof c>"u")throw or.EINVAL(`rmdir '${r}'`);this.deleteEntry(r,c)}async rmPromise(r,s){return this.rmSync(r,s)}rmSync(r,{recursive:s=!1}={}){if(this.readOnly)throw or.EROFS(`rm '${r}'`);if(s){this.removeSync(r);return}let a=this.resolveFilename(`rm '${r}'`,r),n=this.listings.get(a);if(!n)throw or.ENOTDIR(`rm '${r}'`);if(n.size>0)throw or.ENOTEMPTY(`rm '${r}'`);let c=this.entries.get(a);if(typeof c>"u")throw or.EINVAL(`rm '${r}'`);this.deleteEntry(r,c)}hydrateDirectory(r){let s=this.zipImpl.addDirectory(K.relative(vt.root,r));return this.registerListing(r),this.registerEntry(r,s),s}async linkPromise(r,s){return this.linkSync(r,s)}linkSync(r,s){throw or.EOPNOTSUPP(`link '${r}' -> '${s}'`)}async symlinkPromise(r,s){return this.symlinkSync(r,s)}symlinkSync(r,s){if(this.readOnly)throw or.EROFS(`symlink '${r}' -> '${s}'`);let a=this.resolveFilename(`symlink '${r}' -> '${s}'`,s);if(this.listings.has(a))throw or.EISDIR(`symlink '${r}' -> '${s}'`);if(this.entries.has(a))throw or.EEXIST(`symlink '${r}' -> '${s}'`);let n=this.setFileSource(a,r);this.registerEntry(a,n),this.zipImpl.setExternalAttributes(n,lm,(ka.constants.S_IFLNK|511)<<16),this.symlinkCount+=1}async readFilePromise(r,s){typeof s=="object"&&(s=s?s.encoding:void 0);let a=await this.readFileBuffer(r,{asyncDecompress:!0});return s?a.toString(s):a}readFileSync(r,s){typeof s=="object"&&(s=s?s.encoding:void 0);let a=this.readFileBuffer(r);return s?a.toString(s):a}readFileBuffer(r,s={asyncDecompress:!1}){typeof r=="number"&&(r=this.fdToPath(r,"read"));let a=this.resolveFilename(`open '${r}'`,r);if(!this.entries.has(a)&&!this.listings.has(a))throw or.ENOENT(`open '${r}'`);if(r[r.length-1]==="/"&&!this.listings.has(a))throw or.ENOTDIR(`open '${r}'`);if(this.listings.has(a))throw or.EISDIR("read");let n=this.entries.get(a);if(n===void 0)throw new Error("Unreachable");return this.getFileSource(n,s)}async readdirPromise(r,s){return this.readdirSync(r,s)}readdirSync(r,s){let a=this.resolveFilename(`scandir '${r}'`,r);if(!this.entries.has(a)&&!this.listings.has(a))throw or.ENOENT(`scandir '${r}'`);let n=this.listings.get(a);if(!n)throw or.ENOTDIR(`scandir '${r}'`);if(s?.recursive)if(s?.withFileTypes){let c=Array.from(n,f=>Object.assign(this.statImpl("lstat",K.join(r,f)),{name:f,path:vt.dot}));for(let f of c){if(!f.isDirectory())continue;let p=K.join(f.path,f.name),h=this.listings.get(K.join(a,p));for(let E of h)c.push(Object.assign(this.statImpl("lstat",K.join(r,p,E)),{name:E,path:p}))}return c}else{let c=[...n];for(let f of c){let p=this.listings.get(K.join(a,f));if(!(typeof p>"u"))for(let h of p)c.push(K.join(f,h))}return c}else return s?.withFileTypes?Array.from(n,c=>Object.assign(this.statImpl("lstat",K.join(r,c)),{name:c,path:void 0})):[...n]}async readlinkPromise(r){let s=this.prepareReadlink(r);return(await this.getFileSource(s,{asyncDecompress:!0})).toString()}readlinkSync(r){let s=this.prepareReadlink(r);return this.getFileSource(s).toString()}prepareReadlink(r){let s=this.resolveFilename(`readlink '${r}'`,r,!1);if(!this.entries.has(s)&&!this.listings.has(s))throw or.ENOENT(`readlink '${r}'`);if(r[r.length-1]==="/"&&!this.listings.has(s))throw or.ENOTDIR(`open '${r}'`);if(this.listings.has(s))throw or.EINVAL(`readlink '${r}'`);let a=this.entries.get(s);if(a===void 0)throw new Error("Unreachable");if(!this.isSymbolicLink(a))throw or.EINVAL(`readlink '${r}'`);return a}async truncatePromise(r,s=0){let a=this.resolveFilename(`open '${r}'`,r),n=this.entries.get(a);if(typeof n>"u")throw or.EINVAL(`open '${r}'`);let c=await this.getFileSource(n,{asyncDecompress:!0}),f=Buffer.alloc(s,0);return c.copy(f),await this.writeFilePromise(r,f)}truncateSync(r,s=0){let a=this.resolveFilename(`open '${r}'`,r),n=this.entries.get(a);if(typeof n>"u")throw or.EINVAL(`open '${r}'`);let c=this.getFileSource(n),f=Buffer.alloc(s,0);return c.copy(f),this.writeFileSync(r,f)}async ftruncatePromise(r,s){return this.truncatePromise(this.fdToPath(r,"ftruncate"),s)}ftruncateSync(r,s){return this.truncateSync(this.fdToPath(r,"ftruncateSync"),s)}watch(r,s,a){let n;switch(typeof s){case"function":case"string":case"undefined":n=!0;break;default:({persistent:n=!0}=s);break}if(!n)return{on:()=>{},close:()=>{}};let c=setInterval(()=>{},24*60*60*1e3);return{on:()=>{},close:()=>{clearInterval(c)}}}watchFile(r,s,a){let n=K.resolve(vt.root,r);return sE(this,n,s,a)}unwatchFile(r,s){let a=K.resolve(vt.root,r);return yd(this,a,s)}}});function Kde(t,e,r=Buffer.alloc(0),s){let a=new ps(r),n=C=>C===e||C.startsWith(`${e}/`)?C.slice(0,e.length):null,c=async(C,S)=>()=>a,f=(C,S)=>a,p={...t},h=new Yn(p),E=new n0({baseFs:h,getMountPoint:n,factoryPromise:c,factorySync:f,magicByte:21,maxAge:1/0,typeCheck:s?.typeCheck});return j2(Vde.default,new i0(E)),a}var Vde,Jde=It(()=>{bt();Vde=et(ye("fs"));vT()});var zde=It(()=>{Gde();vT();Jde()});var n6,vv,ST,Zde=It(()=>{bt();vT();n6={CENTRAL_DIRECTORY:33639248,END_OF_CENTRAL_DIRECTORY:101010256},vv=22,ST=class t{constructor(e){this.filesShouldBeCached=!1;if("buffer"in e)throw new Error("Buffer based zip archives are not supported");if(!e.readOnly)throw new Error("Writable zip archives are not supported");this.baseFs=e.baseFs,this.fd=this.baseFs.openSync(e.path,"r");try{this.entries=t.readZipSync(this.fd,this.baseFs,e.size)}catch(r){throw this.baseFs.closeSync(this.fd),this.fd="closed",r}}static readZipSync(e,r,s){if(s=0;N--)if(n.readUInt32LE(N)===n6.END_OF_CENTRAL_DIRECTORY){a=N;break}if(a===-1)throw new Error("Not a zip archive")}let c=n.readUInt16LE(a+10),f=n.readUInt32LE(a+12),p=n.readUInt32LE(a+16),h=n.readUInt16LE(a+20);if(a+h+vv>n.length)throw new Error("Zip archive inconsistent");if(c==65535||f==4294967295||p==4294967295)throw new Error("Zip 64 is not supported");if(f>s)throw new Error("Zip archive inconsistent");if(c>f/46)throw new Error("Zip archive inconsistent");let E=Buffer.alloc(f);if(r.readSync(e,E,0,E.length,p)!==E.length)throw new Error("Zip archive inconsistent");let C=[],S=0,P=0,I=0;for(;PE.length)throw new Error("Zip archive inconsistent");if(E.readUInt32LE(S)!==n6.CENTRAL_DIRECTORY)throw new Error("Zip archive inconsistent");let N=E.readUInt16LE(S+4)>>>8;if(E.readUInt16LE(S+8)&1)throw new Error("Encrypted zip files are not supported");let W=E.readUInt16LE(S+10),te=E.readUInt32LE(S+16),ie=E.readUInt16LE(S+28),Ae=E.readUInt16LE(S+30),ce=E.readUInt16LE(S+32),me=E.readUInt32LE(S+42),pe=E.toString("utf8",S+46,S+46+ie).replaceAll("\0"," ");if(pe.includes("\0"))throw new Error("Invalid ZIP file");let Be=E.readUInt32LE(S+20),Ce=E.readUInt32LE(S+38);C.push({name:pe,os:N,mtime:ui.SAFE_TIME,crc:te,compressionMethod:W,isSymbolicLink:N===lm&&(Ce>>>16&ui.S_IFMT)===ui.S_IFLNK,size:E.readUInt32LE(S+24),compressedSize:Be,externalAttributes:Ce,localHeaderOffset:me}),I+=Be,P+=1,S+=46+ie+Ae+ce}if(I>s)throw new Error("Zip archive inconsistent");if(S!==E.length)throw new Error("Zip archive inconsistent");return C}getExternalAttributes(e){let r=this.entries[e];return[r.os,r.externalAttributes]}getListings(){return this.entries.map(e=>e.name)}getSymlinkCount(){let e=0;for(let r of this.entries)r.isSymbolicLink&&(e+=1);return e}stat(e){let r=this.entries[e];return{crc:r.crc,mtime:r.mtime,size:r.size}}locate(e){for(let r=0;rYde,DEFLATE:()=>r6,JsZipImpl:()=>ST,LibZipImpl:()=>vI,STORE:()=>t6,ZIP_UNIX:()=>lm,ZipFS:()=>ps,ZipOpenFS:()=>tA,getArchivePart:()=>zj,getLibzipPromise:()=>Dmt,getLibzipSync:()=>Smt,makeEmptyArchive:()=>BT,mountMemoryDrive:()=>Kde});function Smt(){return Bv()}async function Dmt(){return Bv()}var Xde,rA=It(()=>{Vj();Xde=et(Ude());qde();zde();Zde();Xj();_de(()=>{let t=(0,Xde.default)();return jde(t)})});var Dv,$de=It(()=>{bt();Wt();bv();Dv=class extends ot{constructor(){super(...arguments);this.cwd=ge.String("--cwd",process.cwd(),{description:"The directory to run the command in"});this.commandName=ge.String();this.args=ge.Proxy()}static{this.usage={description:"run a command using yarn's portable shell",details:` + This command will run a command using Yarn's portable shell. + + Make sure to escape glob patterns, redirections, and other features that might be expanded by your own shell. + + Note: To escape something from Yarn's shell, you might have to escape it twice, the first time from your own shell. + + Note: Don't use this command in Yarn scripts, as Yarn's shell is automatically used. + + For a list of features, visit: https://github.com/yarnpkg/berry/blob/master/packages/yarnpkg-shell/README.md. + `,examples:[["Run a simple command","$0 echo Hello"],["Run a command with a glob pattern","$0 echo '*.js'"],["Run a command with a redirection","$0 echo Hello World '>' hello.txt"],["Run a command with an escaped glob pattern (The double escape is needed in Unix shells)",`$0 echo '"*.js"'`],["Run a command with a variable (Double quotes are needed in Unix shells, to prevent them from expanding the variable)",'$0 "GREETING=Hello echo $GREETING World"']]}}async execute(){let r=this.args.length>0?`${this.commandName} ${this.args.join(" ")}`:this.commandName;return await SI(r,[],{cwd:ue.toPortablePath(this.cwd),stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})}}});var Kl,eme=It(()=>{Kl=class extends Error{constructor(e){super(e),this.name="ShellError"}}});var PT={};Vt(PT,{fastGlobOptions:()=>nme,isBraceExpansion:()=>i6,isGlobPattern:()=>bmt,match:()=>Pmt,micromatchOptions:()=>bT});function bmt(t){if(!DT.default.scan(t,bT).isGlob)return!1;try{DT.default.parse(t,bT)}catch{return!1}return!0}function Pmt(t,{cwd:e,baseFs:r}){return(0,tme.default)(t,{...nme,cwd:ue.fromPortablePath(e),fs:Cx(rme.default,new i0(r))})}function i6(t){return DT.default.scan(t,bT).isBrace}var tme,rme,DT,bT,nme,ime=It(()=>{bt();tme=et(BQ()),rme=et(ye("fs")),DT=et(Sa()),bT={strictBrackets:!0},nme={onlyDirectories:!1,onlyFiles:!1}});function s6(){}function o6(){for(let t of cm)t.kill()}function lme(t,e,r,s){return a=>{let n=a[0]instanceof nA.Transform?"pipe":a[0],c=a[1]instanceof nA.Transform?"pipe":a[1],f=a[2]instanceof nA.Transform?"pipe":a[2],p=(0,ome.default)(t,e,{...s,stdio:[n,c,f]});return cm.add(p),cm.size===1&&(process.on("SIGINT",s6),process.on("SIGTERM",o6)),a[0]instanceof nA.Transform&&a[0].pipe(p.stdin),a[1]instanceof nA.Transform&&p.stdout.pipe(a[1],{end:!1}),a[2]instanceof nA.Transform&&p.stderr.pipe(a[2],{end:!1}),{stdin:p.stdin,promise:new Promise(h=>{p.on("error",E=>{switch(cm.delete(p),cm.size===0&&(process.off("SIGINT",s6),process.off("SIGTERM",o6)),E.code){case"ENOENT":a[2].write(`command not found: ${t} +`),h(127);break;case"EACCES":a[2].write(`permission denied: ${t} +`),h(128);break;default:a[2].write(`uncaught error: ${E.message} +`),h(1);break}}),p.on("close",E=>{cm.delete(p),cm.size===0&&(process.off("SIGINT",s6),process.off("SIGTERM",o6)),h(E!==null?E:129)})})}}}function cme(t){return e=>{let r=e[0]==="pipe"?new nA.PassThrough:e[0];return{stdin:r,promise:Promise.resolve().then(()=>t({stdin:r,stdout:e[1],stderr:e[2]}))}}}function xT(t,e){return l6.start(t,e)}function sme(t,e=null){let r=new nA.PassThrough,s=new ame.StringDecoder,a="";return r.on("data",n=>{let c=s.write(n),f;do if(f=c.indexOf(` +`),f!==-1){let p=a+c.substring(0,f);c=c.substring(f+1),a="",t(e!==null?`${e} ${p}`:p)}while(f!==-1);a+=c}),r.on("end",()=>{let n=s.end();n!==""&&t(e!==null?`${e} ${n}`:n)}),r}function ume(t,{prefix:e}){return{stdout:sme(r=>t.stdout.write(`${r} +`),t.stdout.isTTY?e:null),stderr:sme(r=>t.stderr.write(`${r} +`),t.stderr.isTTY?e:null)}}var ome,nA,ame,cm,Mc,a6,l6,c6=It(()=>{ome=et(J_()),nA=ye("stream"),ame=ye("string_decoder"),cm=new Set;Mc=class{constructor(e){this.stream=e}close(){}get(){return this.stream}},a6=class{constructor(){this.stream=null}close(){if(this.stream===null)throw new Error("Assertion failed: No stream attached");this.stream.end()}attach(e){this.stream=e}get(){if(this.stream===null)throw new Error("Assertion failed: No stream attached");return this.stream}},l6=class t{constructor(e,r){this.stdin=null;this.stdout=null;this.stderr=null;this.pipe=null;this.ancestor=e,this.implementation=r}static start(e,{stdin:r,stdout:s,stderr:a}){let n=new t(null,e);return n.stdin=r,n.stdout=s,n.stderr=a,n}pipeTo(e,r=1){let s=new t(this,e),a=new a6;return s.pipe=a,s.stdout=this.stdout,s.stderr=this.stderr,(r&1)===1?this.stdout=a:this.ancestor!==null&&(this.stderr=this.ancestor.stdout),(r&2)===2?this.stderr=a:this.ancestor!==null&&(this.stderr=this.ancestor.stderr),s}async exec(){let e=["ignore","ignore","ignore"];if(this.pipe)e[0]="pipe";else{if(this.stdin===null)throw new Error("Assertion failed: No input stream registered");e[0]=this.stdin.get()}let r;if(this.stdout===null)throw new Error("Assertion failed: No output stream registered");r=this.stdout,e[1]=r.get();let s;if(this.stderr===null)throw new Error("Assertion failed: No error stream registered");s=this.stderr,e[2]=s.get();let a=this.implementation(e);return this.pipe&&this.pipe.attach(a.stdin),await a.promise.then(n=>(r.close(),s.close(),n))}async run(){let e=[];for(let s=this;s;s=s.ancestor)e.push(s.exec());return(await Promise.all(e))[0]}}});var Qv={};Vt(Qv,{EntryCommand:()=>Dv,ShellError:()=>Kl,execute:()=>SI,globUtils:()=>PT});function fme(t,e,r){let s=new Jl.PassThrough({autoDestroy:!0});switch(t){case 0:(e&1)===1&&r.stdin.pipe(s,{end:!1}),(e&2)===2&&r.stdin instanceof Jl.Writable&&s.pipe(r.stdin,{end:!1});break;case 1:(e&1)===1&&r.stdout.pipe(s,{end:!1}),(e&2)===2&&s.pipe(r.stdout,{end:!1});break;case 2:(e&1)===1&&r.stderr.pipe(s,{end:!1}),(e&2)===2&&s.pipe(r.stderr,{end:!1});break;default:throw new Kl(`Bad file descriptor: "${t}"`)}return s}function QT(t,e={}){let r={...t,...e};return r.environment={...t.environment,...e.environment},r.variables={...t.variables,...e.variables},r}async function kmt(t,e,r){let s=[],a=new Jl.PassThrough;return a.on("data",n=>s.push(n)),await TT(t,e,QT(r,{stdout:a})),Buffer.concat(s).toString().replace(/[\r\n]+$/,"")}async function Ame(t,e,r){let s=t.map(async n=>{let c=await um(n.args,e,r);return{name:n.name,value:c.join(" ")}});return(await Promise.all(s)).reduce((n,c)=>(n[c.name]=c.value,n),{})}function kT(t){return t.match(/[^ \r\n\t]+/g)||[]}async function yme(t,e,r,s,a=s){switch(t.name){case"$":s(String(process.pid));break;case"#":s(String(e.args.length));break;case"@":if(t.quoted)for(let n of e.args)a(n);else for(let n of e.args){let c=kT(n);for(let f=0;f=0&&n"u"&&(t.defaultValue?c=(await um(t.defaultValue,e,r)).join(" "):t.alternativeValue&&(c="")),typeof c>"u")throw f?new Kl(`Unbound argument #${n}`):new Kl(`Unbound variable "${t.name}"`);if(t.quoted)s(c);else{let p=kT(c);for(let E=0;Es.push(n));let a=Number(s.join(" "));return Number.isNaN(a)?Pv({type:"variable",name:s.join(" ")},e,r):Pv({type:"number",value:a},e,r)}else return Qmt[t.type](await Pv(t.left,e,r),await Pv(t.right,e,r))}async function um(t,e,r){let s=new Map,a=[],n=[],c=E=>{n.push(E)},f=()=>{n.length>0&&a.push(n.join("")),n=[]},p=E=>{c(E),f()},h=(E,C,S)=>{let P=JSON.stringify({type:E,fd:C}),I=s.get(P);typeof I>"u"&&s.set(P,I=[]),I.push(S)};for(let E of t){let C=!1;switch(E.type){case"redirection":{let S=await um(E.args,e,r);for(let P of S)h(E.subtype,E.fd,P)}break;case"argument":for(let S of E.segments)switch(S.type){case"text":c(S.text);break;case"glob":c(S.pattern),C=!0;break;case"shell":{let P=await kmt(S.shell,e,r);if(S.quoted)c(P);else{let I=kT(P);for(let R=0;R"u")throw new Error("Assertion failed: Expected a glob pattern to have been set");let P=await e.glob.match(S,{cwd:r.cwd,baseFs:e.baseFs});if(P.length===0){let I=i6(S)?". Note: Brace expansion of arbitrary strings isn't currently supported. For more details, please read this issue: https://github.com/yarnpkg/berry/issues/22":"";throw new Kl(`No matches found: "${S}"${I}`)}for(let I of P.sort())p(I)}}if(s.size>0){let E=[];for(let[C,S]of s.entries())E.splice(E.length,0,C,String(S.length),...S);a.splice(0,0,"__ysh_set_redirects",...E,"--")}return a}function xv(t,e,r){e.builtins.has(t[0])||(t=["command",...t]);let s=ue.fromPortablePath(r.cwd),a=r.environment;typeof a.PWD<"u"&&(a={...a,PWD:s});let[n,...c]=t;if(n==="command")return lme(c[0],c.slice(1),e,{cwd:s,env:a});let f=e.builtins.get(n);if(typeof f>"u")throw new Error(`Assertion failed: A builtin should exist for "${n}"`);return cme(async({stdin:p,stdout:h,stderr:E})=>{let{stdin:C,stdout:S,stderr:P}=r;r.stdin=p,r.stdout=h,r.stderr=E;try{return await f(c,e,r)}finally{r.stdin=C,r.stdout=S,r.stderr=P}})}function Tmt(t,e,r){return s=>{let a=new Jl.PassThrough,n=TT(t,e,QT(r,{stdin:a}));return{stdin:a,promise:n}}}function Rmt(t,e,r){return s=>{let a=new Jl.PassThrough,n=TT(t,e,r);return{stdin:a,promise:n}}}function pme(t,e,r,s){if(e.length===0)return t;{let a;do a=String(Math.random());while(Object.hasOwn(s.procedures,a));return s.procedures={...s.procedures},s.procedures[a]=t,xv([...e,"__ysh_run_procedure",a],r,s)}}async function hme(t,e,r){let s=t,a=null,n=null;for(;s;){let c=s.then?{...r}:r,f;switch(s.type){case"command":{let p=await um(s.args,e,r),h=await Ame(s.envs,e,r);f=s.envs.length?xv(p,e,QT(c,{environment:h})):xv(p,e,c)}break;case"subshell":{let p=await um(s.args,e,r),h=Tmt(s.subshell,e,c);f=pme(h,p,e,c)}break;case"group":{let p=await um(s.args,e,r),h=Rmt(s.group,e,c);f=pme(h,p,e,c)}break;case"envs":{let p=await Ame(s.envs,e,r);c.environment={...c.environment,...p},f=xv(["true"],e,c)}break}if(typeof f>"u")throw new Error("Assertion failed: An action should have been generated");if(a===null)n=xT(f,{stdin:new Mc(c.stdin),stdout:new Mc(c.stdout),stderr:new Mc(c.stderr)});else{if(n===null)throw new Error("Assertion failed: The execution pipeline should have been setup");switch(a){case"|":n=n.pipeTo(f,1);break;case"|&":n=n.pipeTo(f,3);break}}s.then?(a=s.then.type,s=s.then.chain):s=null}if(n===null)throw new Error("Assertion failed: The execution pipeline should have been setup");return await n.run()}async function Fmt(t,e,r,{background:s=!1}={}){function a(n){let c=["#2E86AB","#A23B72","#F18F01","#C73E1D","#CCE2A3"],f=c[n%c.length];return gme.default.hex(f)}if(s){let n=r.nextBackgroundJobIndex++,c=a(n),f=`[${n}]`,p=c(f),{stdout:h,stderr:E}=ume(r,{prefix:p});return r.backgroundJobs.push(hme(t,e,QT(r,{stdout:h,stderr:E})).catch(C=>E.write(`${C.message} +`)).finally(()=>{r.stdout.isTTY&&r.stdout.write(`Job ${p}, '${c(AE(t))}' has ended +`)})),0}return await hme(t,e,r)}async function Nmt(t,e,r,{background:s=!1}={}){let a,n=f=>{a=f,r.variables["?"]=String(f)},c=async f=>{try{return await Fmt(f.chain,e,r,{background:s&&typeof f.then>"u"})}catch(p){if(!(p instanceof Kl))throw p;return r.stderr.write(`${p.message} +`),1}};for(n(await c(t));t.then;){if(r.exitCode!==null)return r.exitCode;switch(t.then.type){case"&&":a===0&&n(await c(t.then.line));break;case"||":a!==0&&n(await c(t.then.line));break;default:throw new Error(`Assertion failed: Unsupported command type: "${t.then.type}"`)}t=t.then.line}return a}async function TT(t,e,r){let s=r.backgroundJobs;r.backgroundJobs=[];let a=0;for(let{command:n,type:c}of t){if(a=await Nmt(n,e,r,{background:c==="&"}),r.exitCode!==null)return r.exitCode;r.variables["?"]=String(a)}return await Promise.all(r.backgroundJobs),r.backgroundJobs=s,a}function Eme(t){switch(t.type){case"variable":return t.name==="@"||t.name==="#"||t.name==="*"||Number.isFinite(parseInt(t.name,10))||"defaultValue"in t&&!!t.defaultValue&&t.defaultValue.some(e=>kv(e))||"alternativeValue"in t&&!!t.alternativeValue&&t.alternativeValue.some(e=>kv(e));case"arithmetic":return u6(t.arithmetic);case"shell":return f6(t.shell);default:return!1}}function kv(t){switch(t.type){case"redirection":return t.args.some(e=>kv(e));case"argument":return t.segments.some(e=>Eme(e));default:throw new Error(`Assertion failed: Unsupported argument type: "${t.type}"`)}}function u6(t){switch(t.type){case"variable":return Eme(t);case"number":return!1;default:return u6(t.left)||u6(t.right)}}function f6(t){return t.some(({command:e})=>{for(;e;){let r=e.chain;for(;r;){let s;switch(r.type){case"subshell":s=f6(r.subshell);break;case"command":s=r.envs.some(a=>a.args.some(n=>kv(n)))||r.args.some(a=>kv(a));break}if(s)return!0;if(!r.then)break;r=r.then.chain}if(!e.then)break;e=e.then.line}return!1})}async function SI(t,e=[],{baseFs:r=new Yn,builtins:s={},cwd:a=ue.toPortablePath(process.cwd()),env:n=process.env,stdin:c=process.stdin,stdout:f=process.stdout,stderr:p=process.stderr,variables:h={},glob:E=PT}={}){let C={};for(let[I,R]of Object.entries(n))typeof R<"u"&&(C[I]=R);let S=new Map(xmt);for(let[I,R]of Object.entries(s))S.set(I,R);c===null&&(c=new Jl.PassThrough,c.end());let P=vx(t,E);if(!f6(P)&&P.length>0&&e.length>0){let{command:I}=P[P.length-1];for(;I.then;)I=I.then.line;let R=I.chain;for(;R.then;)R=R.then.chain;R.type==="command"&&(R.args=R.args.concat(e.map(N=>({type:"argument",segments:[{type:"text",text:N}]}))))}return await TT(P,{args:e,baseFs:r,builtins:S,initialStdin:c,initialStdout:f,initialStderr:p,glob:E},{cwd:a,environment:C,exitCode:null,procedures:{},stdin:c,stdout:f,stderr:p,variables:Object.assign({},h,{"?":0}),nextBackgroundJobIndex:1,backgroundJobs:[]})}var gme,dme,Jl,mme,xmt,Qmt,bv=It(()=>{bt();Bc();gme=et(g4()),dme=ye("os"),Jl=ye("stream"),mme=ye("timers/promises");$de();eme();ime();c6();c6();xmt=new Map([["cd",async([t=(0,dme.homedir)(),...e],r,s)=>{let a=K.resolve(s.cwd,ue.toPortablePath(t));if(!(await r.baseFs.statPromise(a).catch(c=>{throw c.code==="ENOENT"?new Kl(`cd: no such file or directory: ${t}`):c})).isDirectory())throw new Kl(`cd: not a directory: ${t}`);return s.cwd=a,0}],["pwd",async(t,e,r)=>(r.stdout.write(`${ue.fromPortablePath(r.cwd)} +`),0)],[":",async(t,e,r)=>0],["true",async(t,e,r)=>0],["false",async(t,e,r)=>1],["exit",async([t,...e],r,s)=>s.exitCode=parseInt(t??s.variables["?"],10)],["echo",async(t,e,r)=>(r.stdout.write(`${t.join(" ")} +`),0)],["sleep",async([t],e,r)=>{if(typeof t>"u")throw new Kl("sleep: missing operand");let s=Number(t);if(Number.isNaN(s))throw new Kl(`sleep: invalid time interval '${t}'`);return await(0,mme.setTimeout)(1e3*s,0)}],["unset",async(t,e,r)=>{for(let s of t)delete r.environment[s],delete r.variables[s];return 0}],["__ysh_run_procedure",async(t,e,r)=>{let s=r.procedures[t[0]];return await xT(s,{stdin:new Mc(r.stdin),stdout:new Mc(r.stdout),stderr:new Mc(r.stderr)}).run()}],["__ysh_set_redirects",async(t,e,r)=>{let s=r.stdin,a=r.stdout,n=r.stderr,c=[],f=[],p=[],h=0;for(;t[h]!=="--";){let C=t[h++],{type:S,fd:P}=JSON.parse(C),I=W=>{switch(P){case null:case 0:c.push(W);break;default:throw new Error(`Unsupported file descriptor: "${P}"`)}},R=W=>{switch(P){case null:case 1:f.push(W);break;case 2:p.push(W);break;default:throw new Error(`Unsupported file descriptor: "${P}"`)}},N=Number(t[h++]),U=h+N;for(let W=h;We.baseFs.createReadStream(K.resolve(r.cwd,ue.toPortablePath(t[W]))));break;case"<<<":I(()=>{let te=new Jl.PassThrough;return process.nextTick(()=>{te.write(`${t[W]} +`),te.end()}),te});break;case"<&":I(()=>fme(Number(t[W]),1,r));break;case">":case">>":{let te=K.resolve(r.cwd,ue.toPortablePath(t[W]));R(te==="/dev/null"?new Jl.Writable({autoDestroy:!0,emitClose:!0,write(ie,Ae,ce){setImmediate(ce)}}):e.baseFs.createWriteStream(te,S===">>"?{flags:"a"}:void 0))}break;case">&":R(fme(Number(t[W]),2,r));break;default:throw new Error(`Assertion failed: Unsupported redirection type: "${S}"`)}}if(c.length>0){let C=new Jl.PassThrough;s=C;let S=P=>{if(P===c.length)C.end();else{let I=c[P]();I.pipe(C,{end:!1}),I.on("end",()=>{S(P+1)})}};S(0)}if(f.length>0){let C=new Jl.PassThrough;a=C;for(let S of f)C.pipe(S)}if(p.length>0){let C=new Jl.PassThrough;n=C;for(let S of p)C.pipe(S)}let E=await xT(xv(t.slice(h+1),e,r),{stdin:new Mc(s),stdout:new Mc(a),stderr:new Mc(n)}).run();return await Promise.all(f.map(C=>new Promise((S,P)=>{C.on("error",I=>{P(I)}),C.on("close",()=>{S()}),C.end()}))),await Promise.all(p.map(C=>new Promise((S,P)=>{C.on("error",I=>{P(I)}),C.on("close",()=>{S()}),C.end()}))),E}]]);Qmt={addition:(t,e)=>t+e,subtraction:(t,e)=>t-e,multiplication:(t,e)=>t*e,division:(t,e)=>Math.trunc(t/e)}});var RT=L((y$t,Ime)=>{function Omt(t,e){for(var r=-1,s=t==null?0:t.length,a=Array(s);++r{var Cme=Yd(),Lmt=RT(),Mmt=xc(),_mt=aI(),Umt=1/0,wme=Cme?Cme.prototype:void 0,Bme=wme?wme.toString:void 0;function vme(t){if(typeof t=="string")return t;if(Mmt(t))return Lmt(t,vme)+"";if(_mt(t))return Bme?Bme.call(t):"";var e=t+"";return e=="0"&&1/t==-Umt?"-0":e}Sme.exports=vme});var Tv=L((I$t,bme)=>{var Hmt=Dme();function jmt(t){return t==null?"":Hmt(t)}bme.exports=jmt});var A6=L((C$t,Pme)=>{function qmt(t,e,r){var s=-1,a=t.length;e<0&&(e=-e>a?0:a+e),r=r>a?a:r,r<0&&(r+=a),a=e>r?0:r-e>>>0,e>>>=0;for(var n=Array(a);++s{var Gmt=A6();function Wmt(t,e,r){var s=t.length;return r=r===void 0?s:r,!e&&r>=s?t:Gmt(t,e,r)}xme.exports=Wmt});var p6=L((B$t,Qme)=>{var Ymt="\\ud800-\\udfff",Vmt="\\u0300-\\u036f",Kmt="\\ufe20-\\ufe2f",Jmt="\\u20d0-\\u20ff",zmt=Vmt+Kmt+Jmt,Zmt="\\ufe0e\\ufe0f",Xmt="\\u200d",$mt=RegExp("["+Xmt+Ymt+zmt+Zmt+"]");function eyt(t){return $mt.test(t)}Qme.exports=eyt});var Rme=L((v$t,Tme)=>{function tyt(t){return t.split("")}Tme.exports=tyt});var Hme=L((S$t,Ume)=>{var Fme="\\ud800-\\udfff",ryt="\\u0300-\\u036f",nyt="\\ufe20-\\ufe2f",iyt="\\u20d0-\\u20ff",syt=ryt+nyt+iyt,oyt="\\ufe0e\\ufe0f",ayt="["+Fme+"]",h6="["+syt+"]",g6="\\ud83c[\\udffb-\\udfff]",lyt="(?:"+h6+"|"+g6+")",Nme="[^"+Fme+"]",Ome="(?:\\ud83c[\\udde6-\\uddff]){2}",Lme="[\\ud800-\\udbff][\\udc00-\\udfff]",cyt="\\u200d",Mme=lyt+"?",_me="["+oyt+"]?",uyt="(?:"+cyt+"(?:"+[Nme,Ome,Lme].join("|")+")"+_me+Mme+")*",fyt=_me+Mme+uyt,Ayt="(?:"+[Nme+h6+"?",h6,Ome,Lme,ayt].join("|")+")",pyt=RegExp(g6+"(?="+g6+")|"+Ayt+fyt,"g");function hyt(t){return t.match(pyt)||[]}Ume.exports=hyt});var qme=L((D$t,jme)=>{var gyt=Rme(),dyt=p6(),myt=Hme();function yyt(t){return dyt(t)?myt(t):gyt(t)}jme.exports=yyt});var Wme=L((b$t,Gme)=>{var Eyt=kme(),Iyt=p6(),Cyt=qme(),wyt=Tv();function Byt(t){return function(e){e=wyt(e);var r=Iyt(e)?Cyt(e):void 0,s=r?r[0]:e.charAt(0),a=r?Eyt(r,1).join(""):e.slice(1);return s[t]()+a}}Gme.exports=Byt});var Vme=L((P$t,Yme)=>{var vyt=Wme(),Syt=vyt("toUpperCase");Yme.exports=Syt});var d6=L((x$t,Kme)=>{var Dyt=Tv(),byt=Vme();function Pyt(t){return byt(Dyt(t).toLowerCase())}Kme.exports=Pyt});var Jme=L((k$t,FT)=>{function xyt(){var t=0,e=1,r=2,s=3,a=4,n=5,c=6,f=7,p=8,h=9,E=10,C=11,S=12,P=13,I=14,R=15,N=16,U=17,W=0,te=1,ie=2,Ae=3,ce=4;function me(g,we){return 55296<=g.charCodeAt(we)&&g.charCodeAt(we)<=56319&&56320<=g.charCodeAt(we+1)&&g.charCodeAt(we+1)<=57343}function pe(g,we){we===void 0&&(we=0);var Ee=g.charCodeAt(we);if(55296<=Ee&&Ee<=56319&&we=1){var fe=g.charCodeAt(we-1),se=Ee;return 55296<=fe&&fe<=56319?(fe-55296)*1024+(se-56320)+65536:se}return Ee}function Be(g,we,Ee){var fe=[g].concat(we).concat([Ee]),se=fe[fe.length-2],X=Ee,De=fe.lastIndexOf(I);if(De>1&&fe.slice(1,De).every(function(j){return j==s})&&[s,P,U].indexOf(g)==-1)return ie;var Re=fe.lastIndexOf(a);if(Re>0&&fe.slice(1,Re).every(function(j){return j==a})&&[S,a].indexOf(se)==-1)return fe.filter(function(j){return j==a}).length%2==1?Ae:ce;if(se==t&&X==e)return W;if(se==r||se==t||se==e)return X==I&&we.every(function(j){return j==s})?ie:te;if(X==r||X==t||X==e)return te;if(se==c&&(X==c||X==f||X==h||X==E))return W;if((se==h||se==f)&&(X==f||X==p))return W;if((se==E||se==p)&&X==p)return W;if(X==s||X==R)return W;if(X==n)return W;if(se==S)return W;var gt=fe.indexOf(s)!=-1?fe.lastIndexOf(s)-1:fe.length-2;return[P,U].indexOf(fe[gt])!=-1&&fe.slice(gt+1,-1).every(function(j){return j==s})&&X==I||se==R&&[N,U].indexOf(X)!=-1?W:we.indexOf(a)!=-1?ie:se==a&&X==a?W:te}this.nextBreak=function(g,we){if(we===void 0&&(we=0),we<0)return 0;if(we>=g.length-1)return g.length;for(var Ee=Ce(pe(g,we)),fe=[],se=we+1;se{var kyt=/^(.*?)(\x1b\[[^m]+m|\x1b\]8;;.*?(\x1b\\|\u0007))/,NT;function Qyt(){if(NT)return NT;if(typeof Intl.Segmenter<"u"){let t=new Intl.Segmenter("en",{granularity:"grapheme"});return NT=e=>Array.from(t.segment(e),({segment:r})=>r)}else{let t=Jme(),e=new t;return NT=r=>e.splitGraphemes(r)}}zme.exports=(t,e=0,r=t.length)=>{if(e<0||r<0)throw new RangeError("Negative indices aren't supported by this implementation");let s=r-e,a="",n=0,c=0;for(;t.length>0;){let f=t.match(kyt)||[t,t,void 0],p=Qyt()(f[1]),h=Math.min(e-n,p.length);p=p.slice(h);let E=Math.min(s-c,p.length);a+=p.slice(0,E).join(""),n+=h,c+=E,typeof f[2]<"u"&&(a+=f[2]),t=t.slice(f[0].length)}return a}});var un,Rv=It(()=>{un=process.env.YARN_IS_TEST_ENV?"0.0.0":"4.9.1"});function nye(t,{configuration:e,json:r}){if(!e.get("enableMessageNames"))return"";let a=Vf(t===null?0:t);return!r&&t===null?Ut(e,a,"grey"):a}function m6(t,{configuration:e,json:r}){let s=nye(t,{configuration:e,json:r});if(!s||t===null||t===0)return s;let a=Dr[t],n=`https://yarnpkg.com/advanced/error-codes#${s}---${a}`.toLowerCase();return JE(e,s,n)}async function DI({configuration:t,stdout:e,forceError:r},s){let a=await Ot.start({configuration:t,stdout:e,includeFooter:!1},async n=>{let c=!1,f=!1;for(let p of s)typeof p.option<"u"&&(p.error||r?(f=!0,n.reportError(50,p.message)):(c=!0,n.reportWarning(50,p.message)),p.callback?.());c&&!f&&n.reportSeparator()});return a.hasErrors()?a.exitCode():null}var tye,OT,Tyt,Xme,$me,b0,rye,eye,Ryt,Fyt,LT,Nyt,Ot,Fv=It(()=>{tye=et(Zme()),OT=et(Nd());nk();Fc();Rv();Qc();Tyt="\xB7",Xme=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],$me=80,b0=OT.default.GITHUB_ACTIONS?{start:t=>`::group::${t} +`,end:t=>`::endgroup:: +`}:OT.default.TRAVIS?{start:t=>`travis_fold:start:${t} +`,end:t=>`travis_fold:end:${t} +`}:OT.default.GITLAB?{start:t=>`section_start:${Math.floor(Date.now()/1e3)}:${t.toLowerCase().replace(/\W+/g,"_")}[collapsed=true]\r\x1B[0K${t} +`,end:t=>`section_end:${Math.floor(Date.now()/1e3)}:${t.toLowerCase().replace(/\W+/g,"_")}\r\x1B[0K`}:null,rye=b0!==null,eye=new Date,Ryt=["iTerm.app","Apple_Terminal","WarpTerminal","vscode"].includes(process.env.TERM_PROGRAM)||!!process.env.WT_SESSION,Fyt=t=>t,LT=Fyt({patrick:{date:[17,3],chars:["\u{1F340}","\u{1F331}"],size:40},simba:{date:[19,7],chars:["\u{1F981}","\u{1F334}"],size:40},jack:{date:[31,10],chars:["\u{1F383}","\u{1F987}"],size:40},hogsfather:{date:[31,12],chars:["\u{1F389}","\u{1F384}"],size:40},default:{chars:["=","-"],size:80}}),Nyt=Ryt&&Object.keys(LT).find(t=>{let e=LT[t];return!(e.date&&(e.date[0]!==eye.getDate()||e.date[1]!==eye.getMonth()+1))})||"default";Ot=class extends ho{constructor({configuration:r,stdout:s,json:a=!1,forceSectionAlignment:n=!1,includeNames:c=!0,includePrefix:f=!0,includeFooter:p=!0,includeLogs:h=!a,includeInfos:E=h,includeWarnings:C=h}){super();this.uncommitted=new Set;this.warningCount=0;this.errorCount=0;this.timerFooter=[];this.startTime=Date.now();this.indent=0;this.level=0;this.progress=new Map;this.progressTime=0;this.progressFrame=0;this.progressTimeout=null;this.progressStyle=null;this.progressMaxScaledSize=null;if(YB(this,{configuration:r}),this.configuration=r,this.forceSectionAlignment=n,this.includeNames=c,this.includePrefix=f,this.includeFooter=p,this.includeInfos=E,this.includeWarnings=C,this.json=a,this.stdout=s,r.get("enableProgressBars")&&!a&&s.isTTY&&s.columns>22){let S=r.get("progressBarStyle")||Nyt;if(!Object.hasOwn(LT,S))throw new Error("Assertion failed: Invalid progress bar style");this.progressStyle=LT[S];let P=Math.min(this.getRecommendedLength(),80);this.progressMaxScaledSize=Math.floor(this.progressStyle.size*P/80)}}static async start(r,s){let a=new this(r),n=process.emitWarning;process.emitWarning=(c,f)=>{if(typeof c!="string"){let h=c;c=h.message,f=f??h.name}let p=typeof f<"u"?`${f}: ${c}`:c;a.reportWarning(0,p)},r.includeVersion&&a.reportInfo(0,zd(r.configuration,`Yarn ${un}`,2));try{await s(a)}catch(c){a.reportExceptionOnce(c)}finally{await a.finalize(),process.emitWarning=n}return a}hasErrors(){return this.errorCount>0}exitCode(){return this.hasErrors()?1:0}getRecommendedLength(){let s=this.progressStyle!==null?this.stdout.columns-1:super.getRecommendedLength();return Math.max(40,s-12-this.indent*2)}startSectionSync({reportHeader:r,reportFooter:s,skipIfEmpty:a},n){let c={committed:!1,action:()=>{r?.()}};a?this.uncommitted.add(c):(c.action(),c.committed=!0);let f=Date.now();try{return n()}catch(p){throw this.reportExceptionOnce(p),p}finally{let p=Date.now();this.uncommitted.delete(c),c.committed&&s?.(p-f)}}async startSectionPromise({reportHeader:r,reportFooter:s,skipIfEmpty:a},n){let c={committed:!1,action:()=>{r?.()}};a?this.uncommitted.add(c):(c.action(),c.committed=!0);let f=Date.now();try{return await n()}catch(p){throw this.reportExceptionOnce(p),p}finally{let p=Date.now();this.uncommitted.delete(c),c.committed&&s?.(p-f)}}startTimerImpl(r,s,a){return{cb:typeof s=="function"?s:a,reportHeader:()=>{this.level+=1,this.reportInfo(null,`\u250C ${r}`),this.indent+=1,b0!==null&&!this.json&&this.includeInfos&&this.stdout.write(b0.start(r))},reportFooter:f=>{if(this.indent-=1,b0!==null&&!this.json&&this.includeInfos){this.stdout.write(b0.end(r));for(let p of this.timerFooter)p()}this.configuration.get("enableTimers")&&f>200?this.reportInfo(null,`\u2514 Completed in ${Ut(this.configuration,f,Ct.DURATION)}`):this.reportInfo(null,"\u2514 Completed"),this.level-=1},skipIfEmpty:(typeof s=="function"?{}:s).skipIfEmpty}}startTimerSync(r,s,a){let{cb:n,...c}=this.startTimerImpl(r,s,a);return this.startSectionSync(c,n)}async startTimerPromise(r,s,a){let{cb:n,...c}=this.startTimerImpl(r,s,a);return this.startSectionPromise(c,n)}reportSeparator(){this.indent===0?this.writeLine(""):this.reportInfo(null,"")}reportInfo(r,s){if(!this.includeInfos)return;this.commit();let a=this.formatNameWithHyperlink(r),n=a?`${a}: `:"",c=`${this.formatPrefix(n,"blueBright")}${s}`;this.json?this.reportJson({type:"info",name:r,displayName:this.formatName(r),indent:this.formatIndent(),data:s}):this.writeLine(c)}reportWarning(r,s){if(this.warningCount+=1,!this.includeWarnings)return;this.commit();let a=this.formatNameWithHyperlink(r),n=a?`${a}: `:"";this.json?this.reportJson({type:"warning",name:r,displayName:this.formatName(r),indent:this.formatIndent(),data:s}):this.writeLine(`${this.formatPrefix(n,"yellowBright")}${s}`)}reportError(r,s){this.errorCount+=1,this.timerFooter.push(()=>this.reportErrorImpl(r,s)),this.reportErrorImpl(r,s)}reportErrorImpl(r,s){this.commit();let a=this.formatNameWithHyperlink(r),n=a?`${a}: `:"";this.json?this.reportJson({type:"error",name:r,displayName:this.formatName(r),indent:this.formatIndent(),data:s}):this.writeLine(`${this.formatPrefix(n,"redBright")}${s}`,{truncate:!1})}reportFold(r,s){if(!b0)return;let a=`${b0.start(r)}${s}${b0.end(r)}`;this.timerFooter.push(()=>this.stdout.write(a))}reportProgress(r){if(this.progressStyle===null)return{...Promise.resolve(),stop:()=>{}};if(r.hasProgress&&r.hasTitle)throw new Error("Unimplemented: Progress bars can't have both progress and titles.");let s=!1,a=Promise.resolve().then(async()=>{let c={progress:r.hasProgress?0:void 0,title:r.hasTitle?"":void 0};this.progress.set(r,{definition:c,lastScaledSize:r.hasProgress?-1:void 0,lastTitle:void 0}),this.refreshProgress({delta:-1});for await(let{progress:f,title:p}of r)s||c.progress===f&&c.title===p||(c.progress=f,c.title=p,this.refreshProgress());n()}),n=()=>{s||(s=!0,this.progress.delete(r),this.refreshProgress({delta:1}))};return{...a,stop:n}}reportJson(r){this.json&&this.writeLine(`${JSON.stringify(r)}`)}async finalize(){if(!this.includeFooter)return;let r="";this.errorCount>0?r="Failed with errors":this.warningCount>0?r="Done with warnings":r="Done";let s=Ut(this.configuration,Date.now()-this.startTime,Ct.DURATION),a=this.configuration.get("enableTimers")?`${r} in ${s}`:r;this.errorCount>0?this.reportError(0,a):this.warningCount>0?this.reportWarning(0,a):this.reportInfo(0,a)}writeLine(r,{truncate:s}={}){this.clearProgress({clear:!0}),this.stdout.write(`${this.truncate(r,{truncate:s})} +`),this.writeProgress()}writeLines(r,{truncate:s}={}){this.clearProgress({delta:r.length});for(let a of r)this.stdout.write(`${this.truncate(a,{truncate:s})} +`);this.writeProgress()}commit(){let r=this.uncommitted;this.uncommitted=new Set;for(let s of r)s.committed=!0,s.action()}clearProgress({delta:r=0,clear:s=!1}){this.progressStyle!==null&&this.progress.size+r>0&&(this.stdout.write(`\x1B[${this.progress.size+r}A`),(r>0||s)&&this.stdout.write("\x1B[0J"))}writeProgress(){if(this.progressStyle===null||(this.progressTimeout!==null&&clearTimeout(this.progressTimeout),this.progressTimeout=null,this.progress.size===0))return;let r=Date.now();r-this.progressTime>$me&&(this.progressFrame=(this.progressFrame+1)%Xme.length,this.progressTime=r);let s=Xme[this.progressFrame];for(let a of this.progress.values()){let n="";if(typeof a.lastScaledSize<"u"){let h=this.progressStyle.chars[0].repeat(a.lastScaledSize),E=this.progressStyle.chars[1].repeat(this.progressMaxScaledSize-a.lastScaledSize);n=` ${h}${E}`}let c=this.formatName(null),f=c?`${c}: `:"",p=a.definition.title?` ${a.definition.title}`:"";this.stdout.write(`${Ut(this.configuration,"\u27A4","blueBright")} ${f}${s}${n}${p} +`)}this.progressTimeout=setTimeout(()=>{this.refreshProgress({force:!0})},$me)}refreshProgress({delta:r=0,force:s=!1}={}){let a=!1,n=!1;if(s||this.progress.size===0)a=!0;else for(let c of this.progress.values()){let f=typeof c.definition.progress<"u"?Math.trunc(this.progressMaxScaledSize*c.definition.progress):void 0,p=c.lastScaledSize;c.lastScaledSize=f;let h=c.lastTitle;if(c.lastTitle=c.definition.title,f!==p||(n=h!==c.definition.title)){a=!0;break}}a&&(this.clearProgress({delta:r,clear:n}),this.writeProgress())}truncate(r,{truncate:s}={}){return this.progressStyle===null&&(s=!1),typeof s>"u"&&(s=this.configuration.get("preferTruncatedLines")),s&&(r=(0,tye.default)(r,0,this.stdout.columns-1)),r}formatName(r){return this.includeNames?nye(r,{configuration:this.configuration,json:this.json}):""}formatPrefix(r,s){return this.includePrefix?`${Ut(this.configuration,"\u27A4",s)} ${r}${this.formatIndent()}`:""}formatNameWithHyperlink(r){return this.includeNames?m6(r,{configuration:this.configuration,json:this.json}):""}formatIndent(){return this.level>0||!this.forceSectionAlignment?"\u2502 ".repeat(this.indent):`${Tyt} `}}});var In={};Vt(In,{PackageManager:()=>oye,detectPackageManager:()=>aye,executePackageAccessibleBinary:()=>Aye,executePackageScript:()=>MT,executePackageShellcode:()=>y6,executeWorkspaceAccessibleBinary:()=>jyt,executeWorkspaceLifecycleScript:()=>uye,executeWorkspaceScript:()=>cye,getPackageAccessibleBinaries:()=>_T,getWorkspaceAccessibleBinaries:()=>fye,hasPackageScript:()=>_yt,hasWorkspaceScript:()=>E6,isNodeScript:()=>I6,makeScriptEnv:()=>Nv,maybeExecuteWorkspaceLifecycleScript:()=>Hyt,prepareExternalProject:()=>Myt});async function P0(t,e,r,s=[]){if(process.platform==="win32"){let a=`@goto #_undefined_# 2>NUL || @title %COMSPEC% & @setlocal & @"${r}" ${s.map(n=>`"${n.replace('"','""')}"`).join(" ")} %*`;await le.writeFilePromise(K.format({dir:t,name:e,ext:".cmd"}),a)}await le.writeFilePromise(K.join(t,e),`#!/bin/sh +exec "${r}" ${s.map(a=>`'${a.replace(/'/g,`'"'"'`)}'`).join(" ")} "$@" +`,{mode:493})}async function aye(t){let e=await Ht.tryFind(t);if(e?.packageManager){let s=xQ(e.packageManager);if(s?.name){let a=`found ${JSON.stringify({packageManager:e.packageManager})} in manifest`,[n]=s.reference.split(".");switch(s.name){case"yarn":return{packageManagerField:!0,packageManager:Number(n)===1?"Yarn Classic":"Yarn",reason:a};case"npm":return{packageManagerField:!0,packageManager:"npm",reason:a};case"pnpm":return{packageManagerField:!0,packageManager:"pnpm",reason:a}}}}let r;try{r=await le.readFilePromise(K.join(t,Er.lockfile),"utf8")}catch{}return r!==void 0?r.match(/^__metadata:$/m)?{packageManager:"Yarn",reason:'"__metadata" key found in yarn.lock'}:{packageManager:"Yarn Classic",reason:'"__metadata" key not found in yarn.lock, must be a Yarn classic lockfile'}:le.existsSync(K.join(t,"package-lock.json"))?{packageManager:"npm",reason:`found npm's "package-lock.json" lockfile`}:le.existsSync(K.join(t,"pnpm-lock.yaml"))?{packageManager:"pnpm",reason:`found pnpm's "pnpm-lock.yaml" lockfile`}:null}async function Nv({project:t,locator:e,binFolder:r,ignoreCorepack:s,lifecycleScript:a,baseEnv:n=t?.configuration.env??process.env}){let c={};for(let[E,C]of Object.entries(n))typeof C<"u"&&(c[E.toLowerCase()!=="path"?E:"PATH"]=C);let f=ue.fromPortablePath(r);c.BERRY_BIN_FOLDER=ue.fromPortablePath(f);let p=process.env.COREPACK_ROOT&&!s?ue.join(process.env.COREPACK_ROOT,"dist/yarn.js"):process.argv[1];if(await Promise.all([P0(r,"node",process.execPath),...un!==null?[P0(r,"run",process.execPath,[p,"run"]),P0(r,"yarn",process.execPath,[p]),P0(r,"yarnpkg",process.execPath,[p]),P0(r,"node-gyp",process.execPath,[p,"run","--top-level","node-gyp"])]:[]]),t&&(c.INIT_CWD=ue.fromPortablePath(t.configuration.startingCwd),c.PROJECT_CWD=ue.fromPortablePath(t.cwd)),c.PATH=c.PATH?`${f}${ue.delimiter}${c.PATH}`:`${f}`,c.npm_execpath=`${f}${ue.sep}yarn`,c.npm_node_execpath=`${f}${ue.sep}node`,e){if(!t)throw new Error("Assertion failed: Missing project");let E=t.tryWorkspaceByLocator(e),C=E?E.manifest.version??"":t.storedPackages.get(e.locatorHash).version??"";c.npm_package_name=cn(e),c.npm_package_version=C;let S;if(E)S=E.cwd;else{let P=t.storedPackages.get(e.locatorHash);if(!P)throw new Error(`Package for ${Yr(t.configuration,e)} not found in the project`);let I=t.configuration.getLinkers(),R={project:t,report:new Ot({stdout:new x0.PassThrough,configuration:t.configuration})},N=I.find(U=>U.supportsPackage(P,R));if(!N)throw new Error(`The package ${Yr(t.configuration,P)} isn't supported by any of the available linkers`);S=await N.findPackageLocation(P,R)}c.npm_package_json=ue.fromPortablePath(K.join(S,Er.manifest))}let h=un!==null?`yarn/${un}`:`yarn/${kp("@yarnpkg/core").version}-core`;return c.npm_config_user_agent=`${h} npm/? node/${process.version} ${process.platform} ${process.arch}`,a&&(c.npm_lifecycle_event=a),t&&await t.configuration.triggerHook(E=>E.setupScriptEnvironment,t,c,async(E,C,S)=>await P0(r,E,C,S)),c}async function Myt(t,e,{configuration:r,report:s,workspace:a=null,locator:n=null}){await Lyt(async()=>{await le.mktempPromise(async c=>{let f=K.join(c,"pack.log"),p=null,{stdout:h,stderr:E}=r.getSubprocessStreams(f,{prefix:ue.fromPortablePath(t),report:s}),C=n&&Gu(n)?rI(n):n,S=C?cl(C):"an external project";h.write(`Packing ${S} from sources +`);let P=await aye(t),I;P!==null?(h.write(`Using ${P.packageManager} for bootstrap. Reason: ${P.reason} + +`),I=P.packageManager):(h.write(`No package manager configuration detected; defaulting to Yarn + +`),I="Yarn");let R=I==="Yarn"&&!P?.packageManagerField;await le.mktempPromise(async N=>{let U=await Nv({binFolder:N,ignoreCorepack:R,baseEnv:{...process.env,COREPACK_ENABLE_AUTO_PIN:"0"}}),te=new Map([["Yarn Classic",async()=>{let Ae=a!==null?["workspace",a]:[],ce=K.join(t,Er.manifest),me=await le.readFilePromise(ce),pe=await Yu(process.execPath,[process.argv[1],"set","version","classic","--only-if-needed","--yarn-path"],{cwd:t,env:U,stdin:p,stdout:h,stderr:E,end:1});if(pe.code!==0)return pe.code;await le.writeFilePromise(ce,me),await le.appendFilePromise(K.join(t,".npmignore"),`/.yarn +`),h.write(` +`),delete U.NODE_ENV;let Be=await Yu("yarn",["install"],{cwd:t,env:U,stdin:p,stdout:h,stderr:E,end:1});if(Be.code!==0)return Be.code;h.write(` +`);let Ce=await Yu("yarn",[...Ae,"pack","--filename",ue.fromPortablePath(e)],{cwd:t,env:U,stdin:p,stdout:h,stderr:E});return Ce.code!==0?Ce.code:0}],["Yarn",async()=>{let Ae=a!==null?["workspace",a]:[];U.YARN_ENABLE_INLINE_BUILDS="1";let ce=K.join(t,Er.lockfile);await le.existsPromise(ce)||await le.writeFilePromise(ce,"");let me=await Yu("yarn",[...Ae,"pack","--install-if-needed","--filename",ue.fromPortablePath(e)],{cwd:t,env:U,stdin:p,stdout:h,stderr:E});return me.code!==0?me.code:0}],["npm",async()=>{if(a!==null){let we=new x0.PassThrough,Ee=WE(we);we.pipe(h,{end:!1});let fe=await Yu("npm",["--version"],{cwd:t,env:U,stdin:p,stdout:we,stderr:E,end:0});if(we.end(),fe.code!==0)return h.end(),E.end(),fe.code;let se=(await Ee).toString().trim();if(!eA(se,">=7.x")){let X=ba(null,"npm"),De=On(X,se),Re=On(X,">=7.x");throw new Error(`Workspaces aren't supported by ${ri(r,De)}; please upgrade to ${ri(r,Re)} (npm has been detected as the primary package manager for ${Ut(r,t,Ct.PATH)})`)}}let Ae=a!==null?["--workspace",a]:[];delete U.npm_config_user_agent,delete U.npm_config_production,delete U.NPM_CONFIG_PRODUCTION,delete U.NODE_ENV;let ce=await Yu("npm",["install","--legacy-peer-deps"],{cwd:t,env:U,stdin:p,stdout:h,stderr:E,end:1});if(ce.code!==0)return ce.code;let me=new x0.PassThrough,pe=WE(me);me.pipe(h);let Be=await Yu("npm",["pack","--silent",...Ae],{cwd:t,env:U,stdin:p,stdout:me,stderr:E});if(Be.code!==0)return Be.code;let Ce=(await pe).toString().trim().replace(/^.*\n/s,""),g=K.resolve(t,ue.toPortablePath(Ce));return await le.renamePromise(g,e),0}]]).get(I);if(typeof te>"u")throw new Error("Assertion failed: Unsupported workflow");let ie=await te();if(!(ie===0||typeof ie>"u"))throw le.detachTemp(c),new Yt(58,`Packing the package failed (exit code ${ie}, logs can be found here: ${Ut(r,f,Ct.PATH)})`)})})})}async function _yt(t,e,{project:r}){let s=r.tryWorkspaceByLocator(t);if(s!==null)return E6(s,e);let a=r.storedPackages.get(t.locatorHash);if(!a)throw new Error(`Package for ${Yr(r.configuration,t)} not found in the project`);return await tA.openPromise(async n=>{let c=r.configuration,f=r.configuration.getLinkers(),p={project:r,report:new Ot({stdout:new x0.PassThrough,configuration:c})},h=f.find(P=>P.supportsPackage(a,p));if(!h)throw new Error(`The package ${Yr(r.configuration,a)} isn't supported by any of the available linkers`);let E=await h.findPackageLocation(a,p),C=new Sn(E,{baseFs:n});return(await Ht.find(vt.dot,{baseFs:C})).scripts.has(e)})}async function MT(t,e,r,{cwd:s,project:a,stdin:n,stdout:c,stderr:f}){return await le.mktempPromise(async p=>{let{manifest:h,env:E,cwd:C}=await lye(t,{project:a,binFolder:p,cwd:s,lifecycleScript:e}),S=h.scripts.get(e);if(typeof S>"u")return 1;let P=async()=>await SI(S,r,{cwd:C,env:E,stdin:n,stdout:c,stderr:f});return await(await a.configuration.reduceHook(R=>R.wrapScriptExecution,P,a,t,e,{script:S,args:r,cwd:C,env:E,stdin:n,stdout:c,stderr:f}))()})}async function y6(t,e,r,{cwd:s,project:a,stdin:n,stdout:c,stderr:f}){return await le.mktempPromise(async p=>{let{env:h,cwd:E}=await lye(t,{project:a,binFolder:p,cwd:s});return await SI(e,r,{cwd:E,env:h,stdin:n,stdout:c,stderr:f})})}async function Uyt(t,{binFolder:e,cwd:r,lifecycleScript:s}){let a=await Nv({project:t.project,locator:t.anchoredLocator,binFolder:e,lifecycleScript:s});return await C6(e,await fye(t)),typeof r>"u"&&(r=K.dirname(await le.realpathPromise(K.join(t.cwd,"package.json")))),{manifest:t.manifest,binFolder:e,env:a,cwd:r}}async function lye(t,{project:e,binFolder:r,cwd:s,lifecycleScript:a}){let n=e.tryWorkspaceByLocator(t);if(n!==null)return Uyt(n,{binFolder:r,cwd:s,lifecycleScript:a});let c=e.storedPackages.get(t.locatorHash);if(!c)throw new Error(`Package for ${Yr(e.configuration,t)} not found in the project`);return await tA.openPromise(async f=>{let p=e.configuration,h=e.configuration.getLinkers(),E={project:e,report:new Ot({stdout:new x0.PassThrough,configuration:p})},C=h.find(N=>N.supportsPackage(c,E));if(!C)throw new Error(`The package ${Yr(e.configuration,c)} isn't supported by any of the available linkers`);let S=await Nv({project:e,locator:t,binFolder:r,lifecycleScript:a});await C6(r,await _T(t,{project:e}));let P=await C.findPackageLocation(c,E),I=new Sn(P,{baseFs:f}),R=await Ht.find(vt.dot,{baseFs:I});return typeof s>"u"&&(s=P),{manifest:R,binFolder:r,env:S,cwd:s}})}async function cye(t,e,r,{cwd:s,stdin:a,stdout:n,stderr:c}){return await MT(t.anchoredLocator,e,r,{cwd:s,project:t.project,stdin:a,stdout:n,stderr:c})}function E6(t,e){return t.manifest.scripts.has(e)}async function uye(t,e,{cwd:r,report:s}){let{configuration:a}=t.project,n=null;await le.mktempPromise(async c=>{let f=K.join(c,`${e}.log`),p=`# This file contains the result of Yarn calling the "${e}" lifecycle script inside a workspace ("${ue.fromPortablePath(t.cwd)}") +`,{stdout:h,stderr:E}=a.getSubprocessStreams(f,{report:s,prefix:Yr(a,t.anchoredLocator),header:p});s.reportInfo(36,`Calling the "${e}" lifecycle script`);let C=await cye(t,e,[],{cwd:r,stdin:n,stdout:h,stderr:E});if(h.end(),E.end(),C!==0)throw le.detachTemp(c),new Yt(36,`${(0,iye.default)(e)} script failed (exit code ${Ut(a,C,Ct.NUMBER)}, logs can be found here: ${Ut(a,f,Ct.PATH)}); run ${Ut(a,`yarn ${e}`,Ct.CODE)} to investigate`)})}async function Hyt(t,e,r){E6(t,e)&&await uye(t,e,r)}function I6(t){let e=K.extname(t);if(e.match(/\.[cm]?[jt]sx?$/))return!0;if(e===".exe"||e===".bin")return!1;let r=Buffer.alloc(4),s;try{s=le.openSync(t,"r")}catch{return!0}try{le.readSync(s,r,0,r.length,0)}finally{le.closeSync(s)}let a=r.readUint32BE();return!(a===3405691582||a===3489328638||a===2135247942||(a&4294901760)===1297743872)}async function _T(t,{project:e}){let r=e.configuration,s=new Map,a=e.storedPackages.get(t.locatorHash);if(!a)throw new Error(`Package for ${Yr(r,t)} not found in the project`);let n=new x0.Writable,c=r.getLinkers(),f={project:e,report:new Ot({configuration:r,stdout:n})},p=new Set([t.locatorHash]);for(let E of a.dependencies.values()){let C=e.storedResolutions.get(E.descriptorHash);if(!C)throw new Error(`Assertion failed: The resolution (${ri(r,E)}) should have been registered`);p.add(C)}let h=await Promise.all(Array.from(p,async E=>{let C=e.storedPackages.get(E);if(!C)throw new Error(`Assertion failed: The package (${E}) should have been registered`);if(C.bin.size===0)return Yl.skip;let S=c.find(I=>I.supportsPackage(C,f));if(!S)return Yl.skip;let P=null;try{P=await S.findPackageLocation(C,f)}catch(I){if(I.code==="LOCATOR_NOT_INSTALLED")return Yl.skip;throw I}return{dependency:C,packageLocation:P}}));for(let E of h){if(E===Yl.skip)continue;let{dependency:C,packageLocation:S}=E;for(let[P,I]of C.bin){let R=K.resolve(S,I);s.set(P,[C,ue.fromPortablePath(R),I6(R)])}}return s}async function fye(t){return await _T(t.anchoredLocator,{project:t.project})}async function C6(t,e){await Promise.all(Array.from(e,([r,[,s,a]])=>a?P0(t,r,process.execPath,[s]):P0(t,r,s,[])))}async function Aye(t,e,r,{cwd:s,project:a,stdin:n,stdout:c,stderr:f,nodeArgs:p=[],packageAccessibleBinaries:h}){h??=await _T(t,{project:a});let E=h.get(e);if(!E)throw new Error(`Binary not found (${e}) for ${Yr(a.configuration,t)}`);return await le.mktempPromise(async C=>{let[,S]=E,P=await Nv({project:a,locator:t,binFolder:C});await C6(P.BERRY_BIN_FOLDER,h);let I=I6(ue.toPortablePath(S))?Yu(process.execPath,[...p,S,...r],{cwd:s,env:P,stdin:n,stdout:c,stderr:f}):Yu(S,r,{cwd:s,env:P,stdin:n,stdout:c,stderr:f}),R;try{R=await I}finally{await le.removePromise(P.BERRY_BIN_FOLDER)}return R.code})}async function jyt(t,e,r,{cwd:s,stdin:a,stdout:n,stderr:c,packageAccessibleBinaries:f}){return await Aye(t.anchoredLocator,e,r,{project:t.project,cwd:s,stdin:a,stdout:n,stderr:c,packageAccessibleBinaries:f})}var iye,sye,x0,oye,Oyt,Lyt,w6=It(()=>{bt();bt();rA();bv();iye=et(d6()),sye=et(Md()),x0=ye("stream");oI();Fc();Fv();Rv();dT();Qc();kc();Np();Yo();oye=(a=>(a.Yarn1="Yarn Classic",a.Yarn2="Yarn",a.Npm="npm",a.Pnpm="pnpm",a))(oye||{});Oyt=2,Lyt=(0,sye.default)(Oyt)});var bI=L((X$t,hye)=>{"use strict";var pye=new Map([["C","cwd"],["f","file"],["z","gzip"],["P","preservePaths"],["U","unlink"],["strip-components","strip"],["stripComponents","strip"],["keep-newer","newer"],["keepNewer","newer"],["keep-newer-files","newer"],["keepNewerFiles","newer"],["k","keep"],["keep-existing","keep"],["keepExisting","keep"],["m","noMtime"],["no-mtime","noMtime"],["p","preserveOwner"],["L","follow"],["h","follow"]]);hye.exports=t=>t?Object.keys(t).map(e=>[pye.has(e)?pye.get(e):e,t[e]]).reduce((e,r)=>(e[r[0]]=r[1],e),Object.create(null)):{}});var xI=L(($$t,Bye)=>{"use strict";var gye=typeof process=="object"&&process?process:{stdout:null,stderr:null},qyt=ye("events"),dye=ye("stream"),mye=ye("string_decoder").StringDecoder,qp=Symbol("EOF"),Gp=Symbol("maybeEmitEnd"),k0=Symbol("emittedEnd"),UT=Symbol("emittingEnd"),Ov=Symbol("emittedError"),HT=Symbol("closed"),yye=Symbol("read"),jT=Symbol("flush"),Eye=Symbol("flushChunk"),fl=Symbol("encoding"),Wp=Symbol("decoder"),qT=Symbol("flowing"),Lv=Symbol("paused"),PI=Symbol("resume"),Vs=Symbol("bufferLength"),B6=Symbol("bufferPush"),v6=Symbol("bufferShift"),zo=Symbol("objectMode"),Zo=Symbol("destroyed"),S6=Symbol("emitData"),Iye=Symbol("emitEnd"),D6=Symbol("emitEnd2"),Yp=Symbol("async"),Mv=t=>Promise.resolve().then(t),Cye=global._MP_NO_ITERATOR_SYMBOLS_!=="1",Gyt=Cye&&Symbol.asyncIterator||Symbol("asyncIterator not implemented"),Wyt=Cye&&Symbol.iterator||Symbol("iterator not implemented"),Yyt=t=>t==="end"||t==="finish"||t==="prefinish",Vyt=t=>t instanceof ArrayBuffer||typeof t=="object"&&t.constructor&&t.constructor.name==="ArrayBuffer"&&t.byteLength>=0,Kyt=t=>!Buffer.isBuffer(t)&&ArrayBuffer.isView(t),GT=class{constructor(e,r,s){this.src=e,this.dest=r,this.opts=s,this.ondrain=()=>e[PI](),r.on("drain",this.ondrain)}unpipe(){this.dest.removeListener("drain",this.ondrain)}proxyErrors(){}end(){this.unpipe(),this.opts.end&&this.dest.end()}},b6=class extends GT{unpipe(){this.src.removeListener("error",this.proxyErrors),super.unpipe()}constructor(e,r,s){super(e,r,s),this.proxyErrors=a=>r.emit("error",a),e.on("error",this.proxyErrors)}};Bye.exports=class wye extends dye{constructor(e){super(),this[qT]=!1,this[Lv]=!1,this.pipes=[],this.buffer=[],this[zo]=e&&e.objectMode||!1,this[zo]?this[fl]=null:this[fl]=e&&e.encoding||null,this[fl]==="buffer"&&(this[fl]=null),this[Yp]=e&&!!e.async||!1,this[Wp]=this[fl]?new mye(this[fl]):null,this[qp]=!1,this[k0]=!1,this[UT]=!1,this[HT]=!1,this[Ov]=null,this.writable=!0,this.readable=!0,this[Vs]=0,this[Zo]=!1}get bufferLength(){return this[Vs]}get encoding(){return this[fl]}set encoding(e){if(this[zo])throw new Error("cannot set encoding in objectMode");if(this[fl]&&e!==this[fl]&&(this[Wp]&&this[Wp].lastNeed||this[Vs]))throw new Error("cannot change encoding");this[fl]!==e&&(this[Wp]=e?new mye(e):null,this.buffer.length&&(this.buffer=this.buffer.map(r=>this[Wp].write(r)))),this[fl]=e}setEncoding(e){this.encoding=e}get objectMode(){return this[zo]}set objectMode(e){this[zo]=this[zo]||!!e}get async(){return this[Yp]}set async(e){this[Yp]=this[Yp]||!!e}write(e,r,s){if(this[qp])throw new Error("write after end");if(this[Zo])return this.emit("error",Object.assign(new Error("Cannot call write after a stream was destroyed"),{code:"ERR_STREAM_DESTROYED"})),!0;typeof r=="function"&&(s=r,r="utf8"),r||(r="utf8");let a=this[Yp]?Mv:n=>n();return!this[zo]&&!Buffer.isBuffer(e)&&(Kyt(e)?e=Buffer.from(e.buffer,e.byteOffset,e.byteLength):Vyt(e)?e=Buffer.from(e):typeof e!="string"&&(this.objectMode=!0)),this[zo]?(this.flowing&&this[Vs]!==0&&this[jT](!0),this.flowing?this.emit("data",e):this[B6](e),this[Vs]!==0&&this.emit("readable"),s&&a(s),this.flowing):e.length?(typeof e=="string"&&!(r===this[fl]&&!this[Wp].lastNeed)&&(e=Buffer.from(e,r)),Buffer.isBuffer(e)&&this[fl]&&(e=this[Wp].write(e)),this.flowing&&this[Vs]!==0&&this[jT](!0),this.flowing?this.emit("data",e):this[B6](e),this[Vs]!==0&&this.emit("readable"),s&&a(s),this.flowing):(this[Vs]!==0&&this.emit("readable"),s&&a(s),this.flowing)}read(e){if(this[Zo])return null;if(this[Vs]===0||e===0||e>this[Vs])return this[Gp](),null;this[zo]&&(e=null),this.buffer.length>1&&!this[zo]&&(this.encoding?this.buffer=[this.buffer.join("")]:this.buffer=[Buffer.concat(this.buffer,this[Vs])]);let r=this[yye](e||null,this.buffer[0]);return this[Gp](),r}[yye](e,r){return e===r.length||e===null?this[v6]():(this.buffer[0]=r.slice(e),r=r.slice(0,e),this[Vs]-=e),this.emit("data",r),!this.buffer.length&&!this[qp]&&this.emit("drain"),r}end(e,r,s){return typeof e=="function"&&(s=e,e=null),typeof r=="function"&&(s=r,r="utf8"),e&&this.write(e,r),s&&this.once("end",s),this[qp]=!0,this.writable=!1,(this.flowing||!this[Lv])&&this[Gp](),this}[PI](){this[Zo]||(this[Lv]=!1,this[qT]=!0,this.emit("resume"),this.buffer.length?this[jT]():this[qp]?this[Gp]():this.emit("drain"))}resume(){return this[PI]()}pause(){this[qT]=!1,this[Lv]=!0}get destroyed(){return this[Zo]}get flowing(){return this[qT]}get paused(){return this[Lv]}[B6](e){this[zo]?this[Vs]+=1:this[Vs]+=e.length,this.buffer.push(e)}[v6](){return this.buffer.length&&(this[zo]?this[Vs]-=1:this[Vs]-=this.buffer[0].length),this.buffer.shift()}[jT](e){do;while(this[Eye](this[v6]()));!e&&!this.buffer.length&&!this[qp]&&this.emit("drain")}[Eye](e){return e?(this.emit("data",e),this.flowing):!1}pipe(e,r){if(this[Zo])return;let s=this[k0];return r=r||{},e===gye.stdout||e===gye.stderr?r.end=!1:r.end=r.end!==!1,r.proxyErrors=!!r.proxyErrors,s?r.end&&e.end():(this.pipes.push(r.proxyErrors?new b6(this,e,r):new GT(this,e,r)),this[Yp]?Mv(()=>this[PI]()):this[PI]()),e}unpipe(e){let r=this.pipes.find(s=>s.dest===e);r&&(this.pipes.splice(this.pipes.indexOf(r),1),r.unpipe())}addListener(e,r){return this.on(e,r)}on(e,r){let s=super.on(e,r);return e==="data"&&!this.pipes.length&&!this.flowing?this[PI]():e==="readable"&&this[Vs]!==0?super.emit("readable"):Yyt(e)&&this[k0]?(super.emit(e),this.removeAllListeners(e)):e==="error"&&this[Ov]&&(this[Yp]?Mv(()=>r.call(this,this[Ov])):r.call(this,this[Ov])),s}get emittedEnd(){return this[k0]}[Gp](){!this[UT]&&!this[k0]&&!this[Zo]&&this.buffer.length===0&&this[qp]&&(this[UT]=!0,this.emit("end"),this.emit("prefinish"),this.emit("finish"),this[HT]&&this.emit("close"),this[UT]=!1)}emit(e,r,...s){if(e!=="error"&&e!=="close"&&e!==Zo&&this[Zo])return;if(e==="data")return r?this[Yp]?Mv(()=>this[S6](r)):this[S6](r):!1;if(e==="end")return this[Iye]();if(e==="close"){if(this[HT]=!0,!this[k0]&&!this[Zo])return;let n=super.emit("close");return this.removeAllListeners("close"),n}else if(e==="error"){this[Ov]=r;let n=super.emit("error",r);return this[Gp](),n}else if(e==="resume"){let n=super.emit("resume");return this[Gp](),n}else if(e==="finish"||e==="prefinish"){let n=super.emit(e);return this.removeAllListeners(e),n}let a=super.emit(e,r,...s);return this[Gp](),a}[S6](e){for(let s of this.pipes)s.dest.write(e)===!1&&this.pause();let r=super.emit("data",e);return this[Gp](),r}[Iye](){this[k0]||(this[k0]=!0,this.readable=!1,this[Yp]?Mv(()=>this[D6]()):this[D6]())}[D6](){if(this[Wp]){let r=this[Wp].end();if(r){for(let s of this.pipes)s.dest.write(r);super.emit("data",r)}}for(let r of this.pipes)r.end();let e=super.emit("end");return this.removeAllListeners("end"),e}collect(){let e=[];this[zo]||(e.dataLength=0);let r=this.promise();return this.on("data",s=>{e.push(s),this[zo]||(e.dataLength+=s.length)}),r.then(()=>e)}concat(){return this[zo]?Promise.reject(new Error("cannot concat in objectMode")):this.collect().then(e=>this[zo]?Promise.reject(new Error("cannot concat in objectMode")):this[fl]?e.join(""):Buffer.concat(e,e.dataLength))}promise(){return new Promise((e,r)=>{this.on(Zo,()=>r(new Error("stream destroyed"))),this.on("error",s=>r(s)),this.on("end",()=>e())})}[Gyt](){return{next:()=>{let r=this.read();if(r!==null)return Promise.resolve({done:!1,value:r});if(this[qp])return Promise.resolve({done:!0});let s=null,a=null,n=h=>{this.removeListener("data",c),this.removeListener("end",f),a(h)},c=h=>{this.removeListener("error",n),this.removeListener("end",f),this.pause(),s({value:h,done:!!this[qp]})},f=()=>{this.removeListener("error",n),this.removeListener("data",c),s({done:!0})},p=()=>n(new Error("stream destroyed"));return new Promise((h,E)=>{a=E,s=h,this.once(Zo,p),this.once("error",n),this.once("end",f),this.once("data",c)})}}}[Wyt](){return{next:()=>{let r=this.read();return{value:r,done:r===null}}}}destroy(e){return this[Zo]?(e?this.emit("error",e):this.emit(Zo),this):(this[Zo]=!0,this.buffer.length=0,this[Vs]=0,typeof this.close=="function"&&!this[HT]&&this.close(),e?this.emit("error",e):this.emit(Zo),this)}static isStream(e){return!!e&&(e instanceof wye||e instanceof dye||e instanceof qyt&&(typeof e.pipe=="function"||typeof e.write=="function"&&typeof e.end=="function"))}}});var Sye=L((eer,vye)=>{var Jyt=ye("zlib").constants||{ZLIB_VERNUM:4736};vye.exports=Object.freeze(Object.assign(Object.create(null),{Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_VERSION_ERROR:-6,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,DEFLATE:1,INFLATE:2,GZIP:3,GUNZIP:4,DEFLATERAW:5,INFLATERAW:6,UNZIP:7,BROTLI_DECODE:8,BROTLI_ENCODE:9,Z_MIN_WINDOWBITS:8,Z_MAX_WINDOWBITS:15,Z_DEFAULT_WINDOWBITS:15,Z_MIN_CHUNK:64,Z_MAX_CHUNK:1/0,Z_DEFAULT_CHUNK:16384,Z_MIN_MEMLEVEL:1,Z_MAX_MEMLEVEL:9,Z_DEFAULT_MEMLEVEL:8,Z_MIN_LEVEL:-1,Z_MAX_LEVEL:9,Z_DEFAULT_LEVEL:-1,BROTLI_OPERATION_PROCESS:0,BROTLI_OPERATION_FLUSH:1,BROTLI_OPERATION_FINISH:2,BROTLI_OPERATION_EMIT_METADATA:3,BROTLI_MODE_GENERIC:0,BROTLI_MODE_TEXT:1,BROTLI_MODE_FONT:2,BROTLI_DEFAULT_MODE:0,BROTLI_MIN_QUALITY:0,BROTLI_MAX_QUALITY:11,BROTLI_DEFAULT_QUALITY:11,BROTLI_MIN_WINDOW_BITS:10,BROTLI_MAX_WINDOW_BITS:24,BROTLI_LARGE_MAX_WINDOW_BITS:30,BROTLI_DEFAULT_WINDOW:22,BROTLI_MIN_INPUT_BLOCK_BITS:16,BROTLI_MAX_INPUT_BLOCK_BITS:24,BROTLI_PARAM_MODE:0,BROTLI_PARAM_QUALITY:1,BROTLI_PARAM_LGWIN:2,BROTLI_PARAM_LGBLOCK:3,BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING:4,BROTLI_PARAM_SIZE_HINT:5,BROTLI_PARAM_LARGE_WINDOW:6,BROTLI_PARAM_NPOSTFIX:7,BROTLI_PARAM_NDIRECT:8,BROTLI_DECODER_RESULT_ERROR:0,BROTLI_DECODER_RESULT_SUCCESS:1,BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT:2,BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION:0,BROTLI_DECODER_PARAM_LARGE_WINDOW:1,BROTLI_DECODER_NO_ERROR:0,BROTLI_DECODER_SUCCESS:1,BROTLI_DECODER_NEEDS_MORE_INPUT:2,BROTLI_DECODER_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE:-1,BROTLI_DECODER_ERROR_FORMAT_RESERVED:-2,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE:-3,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET:-4,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME:-5,BROTLI_DECODER_ERROR_FORMAT_CL_SPACE:-6,BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE:-7,BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT:-8,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1:-9,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2:-10,BROTLI_DECODER_ERROR_FORMAT_TRANSFORM:-11,BROTLI_DECODER_ERROR_FORMAT_DICTIONARY:-12,BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS:-13,BROTLI_DECODER_ERROR_FORMAT_PADDING_1:-14,BROTLI_DECODER_ERROR_FORMAT_PADDING_2:-15,BROTLI_DECODER_ERROR_FORMAT_DISTANCE:-16,BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET:-19,BROTLI_DECODER_ERROR_INVALID_ARGUMENTS:-20,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES:-21,BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS:-22,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP:-25,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1:-26,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2:-27,BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES:-30,BROTLI_DECODER_ERROR_UNREACHABLE:-31},Jyt))});var q6=L(zl=>{"use strict";var T6=ye("assert"),Q0=ye("buffer").Buffer,Pye=ye("zlib"),fm=zl.constants=Sye(),zyt=xI(),Dye=Q0.concat,Am=Symbol("_superWrite"),QI=class extends Error{constructor(e){super("zlib: "+e.message),this.code=e.code,this.errno=e.errno,this.code||(this.code="ZLIB_ERROR"),this.message="zlib: "+e.message,Error.captureStackTrace(this,this.constructor)}get name(){return"ZlibError"}},Zyt=Symbol("opts"),_v=Symbol("flushFlag"),bye=Symbol("finishFlushFlag"),j6=Symbol("fullFlushFlag"),Ei=Symbol("handle"),WT=Symbol("onError"),kI=Symbol("sawError"),P6=Symbol("level"),x6=Symbol("strategy"),k6=Symbol("ended"),ter=Symbol("_defaultFullFlush"),YT=class extends zyt{constructor(e,r){if(!e||typeof e!="object")throw new TypeError("invalid options for ZlibBase constructor");super(e),this[kI]=!1,this[k6]=!1,this[Zyt]=e,this[_v]=e.flush,this[bye]=e.finishFlush;try{this[Ei]=new Pye[r](e)}catch(s){throw new QI(s)}this[WT]=s=>{this[kI]||(this[kI]=!0,this.close(),this.emit("error",s))},this[Ei].on("error",s=>this[WT](new QI(s))),this.once("end",()=>this.close)}close(){this[Ei]&&(this[Ei].close(),this[Ei]=null,this.emit("close"))}reset(){if(!this[kI])return T6(this[Ei],"zlib binding closed"),this[Ei].reset()}flush(e){this.ended||(typeof e!="number"&&(e=this[j6]),this.write(Object.assign(Q0.alloc(0),{[_v]:e})))}end(e,r,s){return e&&this.write(e,r),this.flush(this[bye]),this[k6]=!0,super.end(null,null,s)}get ended(){return this[k6]}write(e,r,s){if(typeof r=="function"&&(s=r,r="utf8"),typeof e=="string"&&(e=Q0.from(e,r)),this[kI])return;T6(this[Ei],"zlib binding closed");let a=this[Ei]._handle,n=a.close;a.close=()=>{};let c=this[Ei].close;this[Ei].close=()=>{},Q0.concat=h=>h;let f;try{let h=typeof e[_v]=="number"?e[_v]:this[_v];f=this[Ei]._processChunk(e,h),Q0.concat=Dye}catch(h){Q0.concat=Dye,this[WT](new QI(h))}finally{this[Ei]&&(this[Ei]._handle=a,a.close=n,this[Ei].close=c,this[Ei].removeAllListeners("error"))}this[Ei]&&this[Ei].on("error",h=>this[WT](new QI(h)));let p;if(f)if(Array.isArray(f)&&f.length>0){p=this[Am](Q0.from(f[0]));for(let h=1;h{this.flush(a),n()};try{this[Ei].params(e,r)}finally{this[Ei].flush=s}this[Ei]&&(this[P6]=e,this[x6]=r)}}}},R6=class extends Vp{constructor(e){super(e,"Deflate")}},F6=class extends Vp{constructor(e){super(e,"Inflate")}},Q6=Symbol("_portable"),N6=class extends Vp{constructor(e){super(e,"Gzip"),this[Q6]=e&&!!e.portable}[Am](e){return this[Q6]?(this[Q6]=!1,e[9]=255,super[Am](e)):super[Am](e)}},O6=class extends Vp{constructor(e){super(e,"Gunzip")}},L6=class extends Vp{constructor(e){super(e,"DeflateRaw")}},M6=class extends Vp{constructor(e){super(e,"InflateRaw")}},_6=class extends Vp{constructor(e){super(e,"Unzip")}},VT=class extends YT{constructor(e,r){e=e||{},e.flush=e.flush||fm.BROTLI_OPERATION_PROCESS,e.finishFlush=e.finishFlush||fm.BROTLI_OPERATION_FINISH,super(e,r),this[j6]=fm.BROTLI_OPERATION_FLUSH}},U6=class extends VT{constructor(e){super(e,"BrotliCompress")}},H6=class extends VT{constructor(e){super(e,"BrotliDecompress")}};zl.Deflate=R6;zl.Inflate=F6;zl.Gzip=N6;zl.Gunzip=O6;zl.DeflateRaw=L6;zl.InflateRaw=M6;zl.Unzip=_6;typeof Pye.BrotliCompress=="function"?(zl.BrotliCompress=U6,zl.BrotliDecompress=H6):zl.BrotliCompress=zl.BrotliDecompress=class{constructor(){throw new Error("Brotli is not supported in this version of Node.js")}}});var TI=L((ier,xye)=>{var Xyt=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform;xye.exports=Xyt!=="win32"?t=>t:t=>t&&t.replace(/\\/g,"/")});var KT=L((oer,kye)=>{"use strict";var $yt=xI(),G6=TI(),W6=Symbol("slurp");kye.exports=class extends $yt{constructor(e,r,s){switch(super(),this.pause(),this.extended=r,this.globalExtended=s,this.header=e,this.startBlockSize=512*Math.ceil(e.size/512),this.blockRemain=this.startBlockSize,this.remain=e.size,this.type=e.type,this.meta=!1,this.ignore=!1,this.type){case"File":case"OldFile":case"Link":case"SymbolicLink":case"CharacterDevice":case"BlockDevice":case"Directory":case"FIFO":case"ContiguousFile":case"GNUDumpDir":break;case"NextFileHasLongLinkpath":case"NextFileHasLongPath":case"OldGnuLongPath":case"GlobalExtendedHeader":case"ExtendedHeader":case"OldExtendedHeader":this.meta=!0;break;default:this.ignore=!0}this.path=G6(e.path),this.mode=e.mode,this.mode&&(this.mode=this.mode&4095),this.uid=e.uid,this.gid=e.gid,this.uname=e.uname,this.gname=e.gname,this.size=e.size,this.mtime=e.mtime,this.atime=e.atime,this.ctime=e.ctime,this.linkpath=G6(e.linkpath),this.uname=e.uname,this.gname=e.gname,r&&this[W6](r),s&&this[W6](s,!0)}write(e){let r=e.length;if(r>this.blockRemain)throw new Error("writing more to entry than is appropriate");let s=this.remain,a=this.blockRemain;return this.remain=Math.max(0,s-r),this.blockRemain=Math.max(0,a-r),this.ignore?!0:s>=r?super.write(e):super.write(e.slice(0,s))}[W6](e,r){for(let s in e)e[s]!==null&&e[s]!==void 0&&!(r&&s==="path")&&(this[s]=s==="path"||s==="linkpath"?G6(e[s]):e[s])}}});var Y6=L(JT=>{"use strict";JT.name=new Map([["0","File"],["","OldFile"],["1","Link"],["2","SymbolicLink"],["3","CharacterDevice"],["4","BlockDevice"],["5","Directory"],["6","FIFO"],["7","ContiguousFile"],["g","GlobalExtendedHeader"],["x","ExtendedHeader"],["A","SolarisACL"],["D","GNUDumpDir"],["I","Inode"],["K","NextFileHasLongLinkpath"],["L","NextFileHasLongPath"],["M","ContinuationFile"],["N","OldGnuLongPath"],["S","SparseFile"],["V","TapeVolumeHeader"],["X","OldExtendedHeader"]]);JT.code=new Map(Array.from(JT.name).map(t=>[t[1],t[0]]))});var Fye=L((ler,Rye)=>{"use strict";var eEt=(t,e)=>{if(Number.isSafeInteger(t))t<0?rEt(t,e):tEt(t,e);else throw Error("cannot encode number outside of javascript safe integer range");return e},tEt=(t,e)=>{e[0]=128;for(var r=e.length;r>1;r--)e[r-1]=t&255,t=Math.floor(t/256)},rEt=(t,e)=>{e[0]=255;var r=!1;t=t*-1;for(var s=e.length;s>1;s--){var a=t&255;t=Math.floor(t/256),r?e[s-1]=Qye(a):a===0?e[s-1]=0:(r=!0,e[s-1]=Tye(a))}},nEt=t=>{let e=t[0],r=e===128?sEt(t.slice(1,t.length)):e===255?iEt(t):null;if(r===null)throw Error("invalid base256 encoding");if(!Number.isSafeInteger(r))throw Error("parsed number outside of javascript safe integer range");return r},iEt=t=>{for(var e=t.length,r=0,s=!1,a=e-1;a>-1;a--){var n=t[a],c;s?c=Qye(n):n===0?c=n:(s=!0,c=Tye(n)),c!==0&&(r-=c*Math.pow(256,e-a-1))}return r},sEt=t=>{for(var e=t.length,r=0,s=e-1;s>-1;s--){var a=t[s];a!==0&&(r+=a*Math.pow(256,e-s-1))}return r},Qye=t=>(255^t)&255,Tye=t=>(255^t)+1&255;Rye.exports={encode:eEt,parse:nEt}});var FI=L((cer,Oye)=>{"use strict";var V6=Y6(),RI=ye("path").posix,Nye=Fye(),K6=Symbol("slurp"),Zl=Symbol("type"),Z6=class{constructor(e,r,s,a){this.cksumValid=!1,this.needPax=!1,this.nullBlock=!1,this.block=null,this.path=null,this.mode=null,this.uid=null,this.gid=null,this.size=null,this.mtime=null,this.cksum=null,this[Zl]="0",this.linkpath=null,this.uname=null,this.gname=null,this.devmaj=0,this.devmin=0,this.atime=null,this.ctime=null,Buffer.isBuffer(e)?this.decode(e,r||0,s,a):e&&this.set(e)}decode(e,r,s,a){if(r||(r=0),!e||!(e.length>=r+512))throw new Error("need 512 bytes for header");if(this.path=pm(e,r,100),this.mode=T0(e,r+100,8),this.uid=T0(e,r+108,8),this.gid=T0(e,r+116,8),this.size=T0(e,r+124,12),this.mtime=J6(e,r+136,12),this.cksum=T0(e,r+148,12),this[K6](s),this[K6](a,!0),this[Zl]=pm(e,r+156,1),this[Zl]===""&&(this[Zl]="0"),this[Zl]==="0"&&this.path.substr(-1)==="/"&&(this[Zl]="5"),this[Zl]==="5"&&(this.size=0),this.linkpath=pm(e,r+157,100),e.slice(r+257,r+265).toString()==="ustar\x0000")if(this.uname=pm(e,r+265,32),this.gname=pm(e,r+297,32),this.devmaj=T0(e,r+329,8),this.devmin=T0(e,r+337,8),e[r+475]!==0){let c=pm(e,r+345,155);this.path=c+"/"+this.path}else{let c=pm(e,r+345,130);c&&(this.path=c+"/"+this.path),this.atime=J6(e,r+476,12),this.ctime=J6(e,r+488,12)}let n=8*32;for(let c=r;c=r+512))throw new Error("need 512 bytes for header");let s=this.ctime||this.atime?130:155,a=oEt(this.path||"",s),n=a[0],c=a[1];this.needPax=a[2],this.needPax=hm(e,r,100,n)||this.needPax,this.needPax=R0(e,r+100,8,this.mode)||this.needPax,this.needPax=R0(e,r+108,8,this.uid)||this.needPax,this.needPax=R0(e,r+116,8,this.gid)||this.needPax,this.needPax=R0(e,r+124,12,this.size)||this.needPax,this.needPax=z6(e,r+136,12,this.mtime)||this.needPax,e[r+156]=this[Zl].charCodeAt(0),this.needPax=hm(e,r+157,100,this.linkpath)||this.needPax,e.write("ustar\x0000",r+257,8),this.needPax=hm(e,r+265,32,this.uname)||this.needPax,this.needPax=hm(e,r+297,32,this.gname)||this.needPax,this.needPax=R0(e,r+329,8,this.devmaj)||this.needPax,this.needPax=R0(e,r+337,8,this.devmin)||this.needPax,this.needPax=hm(e,r+345,s,c)||this.needPax,e[r+475]!==0?this.needPax=hm(e,r+345,155,c)||this.needPax:(this.needPax=hm(e,r+345,130,c)||this.needPax,this.needPax=z6(e,r+476,12,this.atime)||this.needPax,this.needPax=z6(e,r+488,12,this.ctime)||this.needPax);let f=8*32;for(let p=r;p{let s=t,a="",n,c=RI.parse(t).root||".";if(Buffer.byteLength(s)<100)n=[s,a,!1];else{a=RI.dirname(s),s=RI.basename(s);do Buffer.byteLength(s)<=100&&Buffer.byteLength(a)<=e?n=[s,a,!1]:Buffer.byteLength(s)>100&&Buffer.byteLength(a)<=e?n=[s.substr(0,99),a,!0]:(s=RI.join(RI.basename(a),s),a=RI.dirname(a));while(a!==c&&!n);n||(n=[t.substr(0,99),"",!0])}return n},pm=(t,e,r)=>t.slice(e,e+r).toString("utf8").replace(/\0.*/,""),J6=(t,e,r)=>aEt(T0(t,e,r)),aEt=t=>t===null?null:new Date(t*1e3),T0=(t,e,r)=>t[e]&128?Nye.parse(t.slice(e,e+r)):cEt(t,e,r),lEt=t=>isNaN(t)?null:t,cEt=(t,e,r)=>lEt(parseInt(t.slice(e,e+r).toString("utf8").replace(/\0.*$/,"").trim(),8)),uEt={12:8589934591,8:2097151},R0=(t,e,r,s)=>s===null?!1:s>uEt[r]||s<0?(Nye.encode(s,t.slice(e,e+r)),!0):(fEt(t,e,r,s),!1),fEt=(t,e,r,s)=>t.write(AEt(s,r),e,r,"ascii"),AEt=(t,e)=>pEt(Math.floor(t).toString(8),e),pEt=(t,e)=>(t.length===e-1?t:new Array(e-t.length-1).join("0")+t+" ")+"\0",z6=(t,e,r,s)=>s===null?!1:R0(t,e,r,s.getTime()/1e3),hEt=new Array(156).join("\0"),hm=(t,e,r,s)=>s===null?!1:(t.write(s+hEt,e,r,"utf8"),s.length!==Buffer.byteLength(s)||s.length>r);Oye.exports=Z6});var zT=L((uer,Lye)=>{"use strict";var gEt=FI(),dEt=ye("path"),Uv=class{constructor(e,r){this.atime=e.atime||null,this.charset=e.charset||null,this.comment=e.comment||null,this.ctime=e.ctime||null,this.gid=e.gid||null,this.gname=e.gname||null,this.linkpath=e.linkpath||null,this.mtime=e.mtime||null,this.path=e.path||null,this.size=e.size||null,this.uid=e.uid||null,this.uname=e.uname||null,this.dev=e.dev||null,this.ino=e.ino||null,this.nlink=e.nlink||null,this.global=r||!1}encode(){let e=this.encodeBody();if(e==="")return null;let r=Buffer.byteLength(e),s=512*Math.ceil(1+r/512),a=Buffer.allocUnsafe(s);for(let n=0;n<512;n++)a[n]=0;new gEt({path:("PaxHeader/"+dEt.basename(this.path)).slice(0,99),mode:this.mode||420,uid:this.uid||null,gid:this.gid||null,size:r,mtime:this.mtime||null,type:this.global?"GlobalExtendedHeader":"ExtendedHeader",linkpath:"",uname:this.uname||"",gname:this.gname||"",devmaj:0,devmin:0,atime:this.atime||null,ctime:this.ctime||null}).encode(a),a.write(e,512,r,"utf8");for(let n=r+512;n=Math.pow(10,n)&&(n+=1),n+a+s}};Uv.parse=(t,e,r)=>new Uv(mEt(yEt(t),e),r);var mEt=(t,e)=>e?Object.keys(t).reduce((r,s)=>(r[s]=t[s],r),e):t,yEt=t=>t.replace(/\n$/,"").split(` +`).reduce(EEt,Object.create(null)),EEt=(t,e)=>{let r=parseInt(e,10);if(r!==Buffer.byteLength(e)+1)return t;e=e.substr((r+" ").length);let s=e.split("="),a=s.shift().replace(/^SCHILY\.(dev|ino|nlink)/,"$1");if(!a)return t;let n=s.join("=");return t[a]=/^([A-Z]+\.)?([mac]|birth|creation)time$/.test(a)?new Date(n*1e3):/^[0-9]+$/.test(n)?+n:n,t};Lye.exports=Uv});var NI=L((fer,Mye)=>{Mye.exports=t=>{let e=t.length-1,r=-1;for(;e>-1&&t.charAt(e)==="/";)r=e,e--;return r===-1?t:t.slice(0,r)}});var ZT=L((Aer,_ye)=>{"use strict";_ye.exports=t=>class extends t{warn(e,r,s={}){this.file&&(s.file=this.file),this.cwd&&(s.cwd=this.cwd),s.code=r instanceof Error&&r.code||e,s.tarCode=e,!this.strict&&s.recoverable!==!1?(r instanceof Error&&(s=Object.assign(r,s),r=r.message),this.emit("warn",s.tarCode,r,s)):r instanceof Error?this.emit("error",Object.assign(r,s)):this.emit("error",Object.assign(new Error(`${e}: ${r}`),s))}}});var $6=L((her,Uye)=>{"use strict";var XT=["|","<",">","?",":"],X6=XT.map(t=>String.fromCharCode(61440+t.charCodeAt(0))),IEt=new Map(XT.map((t,e)=>[t,X6[e]])),CEt=new Map(X6.map((t,e)=>[t,XT[e]]));Uye.exports={encode:t=>XT.reduce((e,r)=>e.split(r).join(IEt.get(r)),t),decode:t=>X6.reduce((e,r)=>e.split(r).join(CEt.get(r)),t)}});var eq=L((ger,jye)=>{var{isAbsolute:wEt,parse:Hye}=ye("path").win32;jye.exports=t=>{let e="",r=Hye(t);for(;wEt(t)||r.root;){let s=t.charAt(0)==="/"&&t.slice(0,4)!=="//?/"?"/":r.root;t=t.substr(s.length),e+=s,r=Hye(t)}return[e,t]}});var Gye=L((der,qye)=>{"use strict";qye.exports=(t,e,r)=>(t&=4095,r&&(t=(t|384)&-19),e&&(t&256&&(t|=64),t&32&&(t|=8),t&4&&(t|=1)),t)});var uq=L((Eer,iEe)=>{"use strict";var Zye=xI(),Xye=zT(),$ye=FI(),sA=ye("fs"),Wye=ye("path"),iA=TI(),BEt=NI(),eEe=(t,e)=>e?(t=iA(t).replace(/^\.(\/|$)/,""),BEt(e)+"/"+t):iA(t),vEt=16*1024*1024,Yye=Symbol("process"),Vye=Symbol("file"),Kye=Symbol("directory"),rq=Symbol("symlink"),Jye=Symbol("hardlink"),Hv=Symbol("header"),$T=Symbol("read"),nq=Symbol("lstat"),eR=Symbol("onlstat"),iq=Symbol("onread"),sq=Symbol("onreadlink"),oq=Symbol("openfile"),aq=Symbol("onopenfile"),F0=Symbol("close"),tR=Symbol("mode"),lq=Symbol("awaitDrain"),tq=Symbol("ondrain"),oA=Symbol("prefix"),zye=Symbol("hadError"),tEe=ZT(),SEt=$6(),rEe=eq(),nEe=Gye(),rR=tEe(class extends Zye{constructor(e,r){if(r=r||{},super(r),typeof e!="string")throw new TypeError("path is required");this.path=iA(e),this.portable=!!r.portable,this.myuid=process.getuid&&process.getuid()||0,this.myuser=process.env.USER||"",this.maxReadSize=r.maxReadSize||vEt,this.linkCache=r.linkCache||new Map,this.statCache=r.statCache||new Map,this.preservePaths=!!r.preservePaths,this.cwd=iA(r.cwd||process.cwd()),this.strict=!!r.strict,this.noPax=!!r.noPax,this.noMtime=!!r.noMtime,this.mtime=r.mtime||null,this.prefix=r.prefix?iA(r.prefix):null,this.fd=null,this.blockLen=null,this.blockRemain=null,this.buf=null,this.offset=null,this.length=null,this.pos=null,this.remain=null,typeof r.onwarn=="function"&&this.on("warn",r.onwarn);let s=!1;if(!this.preservePaths){let[a,n]=rEe(this.path);a&&(this.path=n,s=a)}this.win32=!!r.win32||process.platform==="win32",this.win32&&(this.path=SEt.decode(this.path.replace(/\\/g,"/")),e=e.replace(/\\/g,"/")),this.absolute=iA(r.absolute||Wye.resolve(this.cwd,e)),this.path===""&&(this.path="./"),s&&this.warn("TAR_ENTRY_INFO",`stripping ${s} from absolute path`,{entry:this,path:s+this.path}),this.statCache.has(this.absolute)?this[eR](this.statCache.get(this.absolute)):this[nq]()}emit(e,...r){return e==="error"&&(this[zye]=!0),super.emit(e,...r)}[nq](){sA.lstat(this.absolute,(e,r)=>{if(e)return this.emit("error",e);this[eR](r)})}[eR](e){this.statCache.set(this.absolute,e),this.stat=e,e.isFile()||(e.size=0),this.type=bEt(e),this.emit("stat",e),this[Yye]()}[Yye](){switch(this.type){case"File":return this[Vye]();case"Directory":return this[Kye]();case"SymbolicLink":return this[rq]();default:return this.end()}}[tR](e){return nEe(e,this.type==="Directory",this.portable)}[oA](e){return eEe(e,this.prefix)}[Hv](){this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.header=new $ye({path:this[oA](this.path),linkpath:this.type==="Link"?this[oA](this.linkpath):this.linkpath,mode:this[tR](this.stat.mode),uid:this.portable?null:this.stat.uid,gid:this.portable?null:this.stat.gid,size:this.stat.size,mtime:this.noMtime?null:this.mtime||this.stat.mtime,type:this.type,uname:this.portable?null:this.stat.uid===this.myuid?this.myuser:"",atime:this.portable?null:this.stat.atime,ctime:this.portable?null:this.stat.ctime}),this.header.encode()&&!this.noPax&&super.write(new Xye({atime:this.portable?null:this.header.atime,ctime:this.portable?null:this.header.ctime,gid:this.portable?null:this.header.gid,mtime:this.noMtime?null:this.mtime||this.header.mtime,path:this[oA](this.path),linkpath:this.type==="Link"?this[oA](this.linkpath):this.linkpath,size:this.header.size,uid:this.portable?null:this.header.uid,uname:this.portable?null:this.header.uname,dev:this.portable?null:this.stat.dev,ino:this.portable?null:this.stat.ino,nlink:this.portable?null:this.stat.nlink}).encode()),super.write(this.header.block)}[Kye](){this.path.substr(-1)!=="/"&&(this.path+="/"),this.stat.size=0,this[Hv](),this.end()}[rq](){sA.readlink(this.absolute,(e,r)=>{if(e)return this.emit("error",e);this[sq](r)})}[sq](e){this.linkpath=iA(e),this[Hv](),this.end()}[Jye](e){this.type="Link",this.linkpath=iA(Wye.relative(this.cwd,e)),this.stat.size=0,this[Hv](),this.end()}[Vye](){if(this.stat.nlink>1){let e=this.stat.dev+":"+this.stat.ino;if(this.linkCache.has(e)){let r=this.linkCache.get(e);if(r.indexOf(this.cwd)===0)return this[Jye](r)}this.linkCache.set(e,this.absolute)}if(this[Hv](),this.stat.size===0)return this.end();this[oq]()}[oq](){sA.open(this.absolute,"r",(e,r)=>{if(e)return this.emit("error",e);this[aq](r)})}[aq](e){if(this.fd=e,this[zye])return this[F0]();this.blockLen=512*Math.ceil(this.stat.size/512),this.blockRemain=this.blockLen;let r=Math.min(this.blockLen,this.maxReadSize);this.buf=Buffer.allocUnsafe(r),this.offset=0,this.pos=0,this.remain=this.stat.size,this.length=this.buf.length,this[$T]()}[$T](){let{fd:e,buf:r,offset:s,length:a,pos:n}=this;sA.read(e,r,s,a,n,(c,f)=>{if(c)return this[F0](()=>this.emit("error",c));this[iq](f)})}[F0](e){sA.close(this.fd,e)}[iq](e){if(e<=0&&this.remain>0){let a=new Error("encountered unexpected EOF");return a.path=this.absolute,a.syscall="read",a.code="EOF",this[F0](()=>this.emit("error",a))}if(e>this.remain){let a=new Error("did not encounter expected EOF");return a.path=this.absolute,a.syscall="read",a.code="EOF",this[F0](()=>this.emit("error",a))}if(e===this.remain)for(let a=e;athis[tq]())}[lq](e){this.once("drain",e)}write(e){if(this.blockRemaine?this.emit("error",e):this.end());this.offset>=this.length&&(this.buf=Buffer.allocUnsafe(Math.min(this.blockRemain,this.buf.length)),this.offset=0),this.length=this.buf.length-this.offset,this[$T]()}}),cq=class extends rR{[nq](){this[eR](sA.lstatSync(this.absolute))}[rq](){this[sq](sA.readlinkSync(this.absolute))}[oq](){this[aq](sA.openSync(this.absolute,"r"))}[$T](){let e=!0;try{let{fd:r,buf:s,offset:a,length:n,pos:c}=this,f=sA.readSync(r,s,a,n,c);this[iq](f),e=!1}finally{if(e)try{this[F0](()=>{})}catch{}}}[lq](e){e()}[F0](e){sA.closeSync(this.fd),e()}},DEt=tEe(class extends Zye{constructor(e,r){r=r||{},super(r),this.preservePaths=!!r.preservePaths,this.portable=!!r.portable,this.strict=!!r.strict,this.noPax=!!r.noPax,this.noMtime=!!r.noMtime,this.readEntry=e,this.type=e.type,this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.prefix=r.prefix||null,this.path=iA(e.path),this.mode=this[tR](e.mode),this.uid=this.portable?null:e.uid,this.gid=this.portable?null:e.gid,this.uname=this.portable?null:e.uname,this.gname=this.portable?null:e.gname,this.size=e.size,this.mtime=this.noMtime?null:r.mtime||e.mtime,this.atime=this.portable?null:e.atime,this.ctime=this.portable?null:e.ctime,this.linkpath=iA(e.linkpath),typeof r.onwarn=="function"&&this.on("warn",r.onwarn);let s=!1;if(!this.preservePaths){let[a,n]=rEe(this.path);a&&(this.path=n,s=a)}this.remain=e.size,this.blockRemain=e.startBlockSize,this.header=new $ye({path:this[oA](this.path),linkpath:this.type==="Link"?this[oA](this.linkpath):this.linkpath,mode:this.mode,uid:this.portable?null:this.uid,gid:this.portable?null:this.gid,size:this.size,mtime:this.noMtime?null:this.mtime,type:this.type,uname:this.portable?null:this.uname,atime:this.portable?null:this.atime,ctime:this.portable?null:this.ctime}),s&&this.warn("TAR_ENTRY_INFO",`stripping ${s} from absolute path`,{entry:this,path:s+this.path}),this.header.encode()&&!this.noPax&&super.write(new Xye({atime:this.portable?null:this.atime,ctime:this.portable?null:this.ctime,gid:this.portable?null:this.gid,mtime:this.noMtime?null:this.mtime,path:this[oA](this.path),linkpath:this.type==="Link"?this[oA](this.linkpath):this.linkpath,size:this.size,uid:this.portable?null:this.uid,uname:this.portable?null:this.uname,dev:this.portable?null:this.readEntry.dev,ino:this.portable?null:this.readEntry.ino,nlink:this.portable?null:this.readEntry.nlink}).encode()),super.write(this.header.block),e.pipe(this)}[oA](e){return eEe(e,this.prefix)}[tR](e){return nEe(e,this.type==="Directory",this.portable)}write(e){let r=e.length;if(r>this.blockRemain)throw new Error("writing more to entry than is appropriate");return this.blockRemain-=r,super.write(e)}end(){return this.blockRemain&&super.write(Buffer.alloc(this.blockRemain)),super.end()}});rR.Sync=cq;rR.Tar=DEt;var bEt=t=>t.isFile()?"File":t.isDirectory()?"Directory":t.isSymbolicLink()?"SymbolicLink":"Unsupported";iEe.exports=rR});var fR=L((Cer,fEe)=>{"use strict";var cR=class{constructor(e,r){this.path=e||"./",this.absolute=r,this.entry=null,this.stat=null,this.readdir=null,this.pending=!1,this.ignore=!1,this.piped=!1}},PEt=xI(),xEt=q6(),kEt=KT(),Eq=uq(),QEt=Eq.Sync,TEt=Eq.Tar,REt=pk(),sEe=Buffer.alloc(1024),sR=Symbol("onStat"),nR=Symbol("ended"),aA=Symbol("queue"),OI=Symbol("current"),gm=Symbol("process"),iR=Symbol("processing"),oEe=Symbol("processJob"),lA=Symbol("jobs"),fq=Symbol("jobDone"),oR=Symbol("addFSEntry"),aEe=Symbol("addTarEntry"),gq=Symbol("stat"),dq=Symbol("readdir"),aR=Symbol("onreaddir"),lR=Symbol("pipe"),lEe=Symbol("entry"),Aq=Symbol("entryOpt"),mq=Symbol("writeEntryClass"),uEe=Symbol("write"),pq=Symbol("ondrain"),uR=ye("fs"),cEe=ye("path"),FEt=ZT(),hq=TI(),Iq=FEt(class extends PEt{constructor(e){super(e),e=e||Object.create(null),this.opt=e,this.file=e.file||"",this.cwd=e.cwd||process.cwd(),this.maxReadSize=e.maxReadSize,this.preservePaths=!!e.preservePaths,this.strict=!!e.strict,this.noPax=!!e.noPax,this.prefix=hq(e.prefix||""),this.linkCache=e.linkCache||new Map,this.statCache=e.statCache||new Map,this.readdirCache=e.readdirCache||new Map,this[mq]=Eq,typeof e.onwarn=="function"&&this.on("warn",e.onwarn),this.portable=!!e.portable,this.zip=null,e.gzip?(typeof e.gzip!="object"&&(e.gzip={}),this.portable&&(e.gzip.portable=!0),this.zip=new xEt.Gzip(e.gzip),this.zip.on("data",r=>super.write(r)),this.zip.on("end",r=>super.end()),this.zip.on("drain",r=>this[pq]()),this.on("resume",r=>this.zip.resume())):this.on("drain",this[pq]),this.noDirRecurse=!!e.noDirRecurse,this.follow=!!e.follow,this.noMtime=!!e.noMtime,this.mtime=e.mtime||null,this.filter=typeof e.filter=="function"?e.filter:r=>!0,this[aA]=new REt,this[lA]=0,this.jobs=+e.jobs||4,this[iR]=!1,this[nR]=!1}[uEe](e){return super.write(e)}add(e){return this.write(e),this}end(e){return e&&this.write(e),this[nR]=!0,this[gm](),this}write(e){if(this[nR])throw new Error("write after end");return e instanceof kEt?this[aEe](e):this[oR](e),this.flowing}[aEe](e){let r=hq(cEe.resolve(this.cwd,e.path));if(!this.filter(e.path,e))e.resume();else{let s=new cR(e.path,r,!1);s.entry=new TEt(e,this[Aq](s)),s.entry.on("end",a=>this[fq](s)),this[lA]+=1,this[aA].push(s)}this[gm]()}[oR](e){let r=hq(cEe.resolve(this.cwd,e));this[aA].push(new cR(e,r)),this[gm]()}[gq](e){e.pending=!0,this[lA]+=1;let r=this.follow?"stat":"lstat";uR[r](e.absolute,(s,a)=>{e.pending=!1,this[lA]-=1,s?this.emit("error",s):this[sR](e,a)})}[sR](e,r){this.statCache.set(e.absolute,r),e.stat=r,this.filter(e.path,r)||(e.ignore=!0),this[gm]()}[dq](e){e.pending=!0,this[lA]+=1,uR.readdir(e.absolute,(r,s)=>{if(e.pending=!1,this[lA]-=1,r)return this.emit("error",r);this[aR](e,s)})}[aR](e,r){this.readdirCache.set(e.absolute,r),e.readdir=r,this[gm]()}[gm](){if(!this[iR]){this[iR]=!0;for(let e=this[aA].head;e!==null&&this[lA]this.warn(r,s,a),noPax:this.noPax,cwd:this.cwd,absolute:e.absolute,preservePaths:this.preservePaths,maxReadSize:this.maxReadSize,strict:this.strict,portable:this.portable,linkCache:this.linkCache,statCache:this.statCache,noMtime:this.noMtime,mtime:this.mtime,prefix:this.prefix}}[lEe](e){this[lA]+=1;try{return new this[mq](e.path,this[Aq](e)).on("end",()=>this[fq](e)).on("error",r=>this.emit("error",r))}catch(r){this.emit("error",r)}}[pq](){this[OI]&&this[OI].entry&&this[OI].entry.resume()}[lR](e){e.piped=!0,e.readdir&&e.readdir.forEach(a=>{let n=e.path,c=n==="./"?"":n.replace(/\/*$/,"/");this[oR](c+a)});let r=e.entry,s=this.zip;s?r.on("data",a=>{s.write(a)||r.pause()}):r.on("data",a=>{super.write(a)||r.pause()})}pause(){return this.zip&&this.zip.pause(),super.pause()}}),yq=class extends Iq{constructor(e){super(e),this[mq]=QEt}pause(){}resume(){}[gq](e){let r=this.follow?"statSync":"lstatSync";this[sR](e,uR[r](e.absolute))}[dq](e,r){this[aR](e,uR.readdirSync(e.absolute))}[lR](e){let r=e.entry,s=this.zip;e.readdir&&e.readdir.forEach(a=>{let n=e.path,c=n==="./"?"":n.replace(/\/*$/,"/");this[oR](c+a)}),s?r.on("data",a=>{s.write(a)}):r.on("data",a=>{super[uEe](a)})}};Iq.Sync=yq;fEe.exports=Iq});var GI=L(qv=>{"use strict";var NEt=xI(),OEt=ye("events").EventEmitter,Al=ye("fs"),Bq=Al.writev;if(!Bq){let t=process.binding("fs"),e=t.FSReqWrap||t.FSReqCallback;Bq=(r,s,a,n)=>{let c=(p,h)=>n(p,h,s),f=new e;f.oncomplete=c,t.writeBuffers(r,s,a,f)}}var jI=Symbol("_autoClose"),Vu=Symbol("_close"),jv=Symbol("_ended"),ni=Symbol("_fd"),AEe=Symbol("_finished"),O0=Symbol("_flags"),Cq=Symbol("_flush"),vq=Symbol("_handleChunk"),Sq=Symbol("_makeBuf"),dR=Symbol("_mode"),AR=Symbol("_needDrain"),UI=Symbol("_onerror"),qI=Symbol("_onopen"),wq=Symbol("_onread"),MI=Symbol("_onwrite"),L0=Symbol("_open"),Kp=Symbol("_path"),dm=Symbol("_pos"),cA=Symbol("_queue"),_I=Symbol("_read"),pEe=Symbol("_readSize"),N0=Symbol("_reading"),pR=Symbol("_remain"),hEe=Symbol("_size"),hR=Symbol("_write"),LI=Symbol("_writing"),gR=Symbol("_defaultFlag"),HI=Symbol("_errored"),mR=class extends NEt{constructor(e,r){if(r=r||{},super(r),this.readable=!0,this.writable=!1,typeof e!="string")throw new TypeError("path must be a string");this[HI]=!1,this[ni]=typeof r.fd=="number"?r.fd:null,this[Kp]=e,this[pEe]=r.readSize||16*1024*1024,this[N0]=!1,this[hEe]=typeof r.size=="number"?r.size:1/0,this[pR]=this[hEe],this[jI]=typeof r.autoClose=="boolean"?r.autoClose:!0,typeof this[ni]=="number"?this[_I]():this[L0]()}get fd(){return this[ni]}get path(){return this[Kp]}write(){throw new TypeError("this is a readable stream")}end(){throw new TypeError("this is a readable stream")}[L0](){Al.open(this[Kp],"r",(e,r)=>this[qI](e,r))}[qI](e,r){e?this[UI](e):(this[ni]=r,this.emit("open",r),this[_I]())}[Sq](){return Buffer.allocUnsafe(Math.min(this[pEe],this[pR]))}[_I](){if(!this[N0]){this[N0]=!0;let e=this[Sq]();if(e.length===0)return process.nextTick(()=>this[wq](null,0,e));Al.read(this[ni],e,0,e.length,null,(r,s,a)=>this[wq](r,s,a))}}[wq](e,r,s){this[N0]=!1,e?this[UI](e):this[vq](r,s)&&this[_I]()}[Vu](){if(this[jI]&&typeof this[ni]=="number"){let e=this[ni];this[ni]=null,Al.close(e,r=>r?this.emit("error",r):this.emit("close"))}}[UI](e){this[N0]=!0,this[Vu](),this.emit("error",e)}[vq](e,r){let s=!1;return this[pR]-=e,e>0&&(s=super.write(ethis[qI](e,r))}[qI](e,r){this[gR]&&this[O0]==="r+"&&e&&e.code==="ENOENT"?(this[O0]="w",this[L0]()):e?this[UI](e):(this[ni]=r,this.emit("open",r),this[Cq]())}end(e,r){return e&&this.write(e,r),this[jv]=!0,!this[LI]&&!this[cA].length&&typeof this[ni]=="number"&&this[MI](null,0),this}write(e,r){return typeof e=="string"&&(e=Buffer.from(e,r)),this[jv]?(this.emit("error",new Error("write() after end()")),!1):this[ni]===null||this[LI]||this[cA].length?(this[cA].push(e),this[AR]=!0,!1):(this[LI]=!0,this[hR](e),!0)}[hR](e){Al.write(this[ni],e,0,e.length,this[dm],(r,s)=>this[MI](r,s))}[MI](e,r){e?this[UI](e):(this[dm]!==null&&(this[dm]+=r),this[cA].length?this[Cq]():(this[LI]=!1,this[jv]&&!this[AEe]?(this[AEe]=!0,this[Vu](),this.emit("finish")):this[AR]&&(this[AR]=!1,this.emit("drain"))))}[Cq](){if(this[cA].length===0)this[jv]&&this[MI](null,0);else if(this[cA].length===1)this[hR](this[cA].pop());else{let e=this[cA];this[cA]=[],Bq(this[ni],e,this[dm],(r,s)=>this[MI](r,s))}}[Vu](){if(this[jI]&&typeof this[ni]=="number"){let e=this[ni];this[ni]=null,Al.close(e,r=>r?this.emit("error",r):this.emit("close"))}}},bq=class extends yR{[L0](){let e;if(this[gR]&&this[O0]==="r+")try{e=Al.openSync(this[Kp],this[O0],this[dR])}catch(r){if(r.code==="ENOENT")return this[O0]="w",this[L0]();throw r}else e=Al.openSync(this[Kp],this[O0],this[dR]);this[qI](null,e)}[Vu](){if(this[jI]&&typeof this[ni]=="number"){let e=this[ni];this[ni]=null,Al.closeSync(e),this.emit("close")}}[hR](e){let r=!0;try{this[MI](null,Al.writeSync(this[ni],e,0,e.length,this[dm])),r=!1}finally{if(r)try{this[Vu]()}catch{}}}};qv.ReadStream=mR;qv.ReadStreamSync=Dq;qv.WriteStream=yR;qv.WriteStreamSync=bq});var SR=L((ver,CEe)=>{"use strict";var LEt=ZT(),MEt=FI(),_Et=ye("events"),UEt=pk(),HEt=1024*1024,jEt=KT(),gEe=zT(),qEt=q6(),Pq=Buffer.from([31,139]),_c=Symbol("state"),mm=Symbol("writeEntry"),Jp=Symbol("readEntry"),xq=Symbol("nextEntry"),dEe=Symbol("processEntry"),Uc=Symbol("extendedHeader"),Gv=Symbol("globalExtendedHeader"),M0=Symbol("meta"),mEe=Symbol("emitMeta"),bi=Symbol("buffer"),zp=Symbol("queue"),ym=Symbol("ended"),yEe=Symbol("emittedEnd"),Em=Symbol("emit"),pl=Symbol("unzip"),ER=Symbol("consumeChunk"),IR=Symbol("consumeChunkSub"),kq=Symbol("consumeBody"),EEe=Symbol("consumeMeta"),IEe=Symbol("consumeHeader"),CR=Symbol("consuming"),Qq=Symbol("bufferConcat"),Tq=Symbol("maybeEnd"),Wv=Symbol("writing"),_0=Symbol("aborted"),wR=Symbol("onDone"),Im=Symbol("sawValidEntry"),BR=Symbol("sawNullBlock"),vR=Symbol("sawEOF"),GEt=t=>!0;CEe.exports=LEt(class extends _Et{constructor(e){e=e||{},super(e),this.file=e.file||"",this[Im]=null,this.on(wR,r=>{(this[_c]==="begin"||this[Im]===!1)&&this.warn("TAR_BAD_ARCHIVE","Unrecognized archive format")}),e.ondone?this.on(wR,e.ondone):this.on(wR,r=>{this.emit("prefinish"),this.emit("finish"),this.emit("end"),this.emit("close")}),this.strict=!!e.strict,this.maxMetaEntrySize=e.maxMetaEntrySize||HEt,this.filter=typeof e.filter=="function"?e.filter:GEt,this.writable=!0,this.readable=!1,this[zp]=new UEt,this[bi]=null,this[Jp]=null,this[mm]=null,this[_c]="begin",this[M0]="",this[Uc]=null,this[Gv]=null,this[ym]=!1,this[pl]=null,this[_0]=!1,this[BR]=!1,this[vR]=!1,typeof e.onwarn=="function"&&this.on("warn",e.onwarn),typeof e.onentry=="function"&&this.on("entry",e.onentry)}[IEe](e,r){this[Im]===null&&(this[Im]=!1);let s;try{s=new MEt(e,r,this[Uc],this[Gv])}catch(a){return this.warn("TAR_ENTRY_INVALID",a)}if(s.nullBlock)this[BR]?(this[vR]=!0,this[_c]==="begin"&&(this[_c]="header"),this[Em]("eof")):(this[BR]=!0,this[Em]("nullBlock"));else if(this[BR]=!1,!s.cksumValid)this.warn("TAR_ENTRY_INVALID","checksum failure",{header:s});else if(!s.path)this.warn("TAR_ENTRY_INVALID","path is required",{header:s});else{let a=s.type;if(/^(Symbolic)?Link$/.test(a)&&!s.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath required",{header:s});else if(!/^(Symbolic)?Link$/.test(a)&&s.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath forbidden",{header:s});else{let n=this[mm]=new jEt(s,this[Uc],this[Gv]);if(!this[Im])if(n.remain){let c=()=>{n.invalid||(this[Im]=!0)};n.on("end",c)}else this[Im]=!0;n.meta?n.size>this.maxMetaEntrySize?(n.ignore=!0,this[Em]("ignoredEntry",n),this[_c]="ignore",n.resume()):n.size>0&&(this[M0]="",n.on("data",c=>this[M0]+=c),this[_c]="meta"):(this[Uc]=null,n.ignore=n.ignore||!this.filter(n.path,n),n.ignore?(this[Em]("ignoredEntry",n),this[_c]=n.remain?"ignore":"header",n.resume()):(n.remain?this[_c]="body":(this[_c]="header",n.end()),this[Jp]?this[zp].push(n):(this[zp].push(n),this[xq]())))}}}[dEe](e){let r=!0;return e?Array.isArray(e)?this.emit.apply(this,e):(this[Jp]=e,this.emit("entry",e),e.emittedEnd||(e.on("end",s=>this[xq]()),r=!1)):(this[Jp]=null,r=!1),r}[xq](){do;while(this[dEe](this[zp].shift()));if(!this[zp].length){let e=this[Jp];!e||e.flowing||e.size===e.remain?this[Wv]||this.emit("drain"):e.once("drain",s=>this.emit("drain"))}}[kq](e,r){let s=this[mm],a=s.blockRemain,n=a>=e.length&&r===0?e:e.slice(r,r+a);return s.write(n),s.blockRemain||(this[_c]="header",this[mm]=null,s.end()),n.length}[EEe](e,r){let s=this[mm],a=this[kq](e,r);return this[mm]||this[mEe](s),a}[Em](e,r,s){!this[zp].length&&!this[Jp]?this.emit(e,r,s):this[zp].push([e,r,s])}[mEe](e){switch(this[Em]("meta",this[M0]),e.type){case"ExtendedHeader":case"OldExtendedHeader":this[Uc]=gEe.parse(this[M0],this[Uc],!1);break;case"GlobalExtendedHeader":this[Gv]=gEe.parse(this[M0],this[Gv],!0);break;case"NextFileHasLongPath":case"OldGnuLongPath":this[Uc]=this[Uc]||Object.create(null),this[Uc].path=this[M0].replace(/\0.*/,"");break;case"NextFileHasLongLinkpath":this[Uc]=this[Uc]||Object.create(null),this[Uc].linkpath=this[M0].replace(/\0.*/,"");break;default:throw new Error("unknown meta: "+e.type)}}abort(e){this[_0]=!0,this.emit("abort",e),this.warn("TAR_ABORT",e,{recoverable:!1})}write(e){if(this[_0])return;if(this[pl]===null&&e){if(this[bi]&&(e=Buffer.concat([this[bi],e]),this[bi]=null),e.lengththis[ER](n)),this[pl].on("error",n=>this.abort(n)),this[pl].on("end",n=>{this[ym]=!0,this[ER]()}),this[Wv]=!0;let a=this[pl][s?"end":"write"](e);return this[Wv]=!1,a}}this[Wv]=!0,this[pl]?this[pl].write(e):this[ER](e),this[Wv]=!1;let r=this[zp].length?!1:this[Jp]?this[Jp].flowing:!0;return!r&&!this[zp].length&&this[Jp].once("drain",s=>this.emit("drain")),r}[Qq](e){e&&!this[_0]&&(this[bi]=this[bi]?Buffer.concat([this[bi],e]):e)}[Tq](){if(this[ym]&&!this[yEe]&&!this[_0]&&!this[CR]){this[yEe]=!0;let e=this[mm];if(e&&e.blockRemain){let r=this[bi]?this[bi].length:0;this.warn("TAR_BAD_ARCHIVE",`Truncated input (needed ${e.blockRemain} more bytes, only ${r} available)`,{entry:e}),this[bi]&&e.write(this[bi]),e.end()}this[Em](wR)}}[ER](e){if(this[CR])this[Qq](e);else if(!e&&!this[bi])this[Tq]();else{if(this[CR]=!0,this[bi]){this[Qq](e);let r=this[bi];this[bi]=null,this[IR](r)}else this[IR](e);for(;this[bi]&&this[bi].length>=512&&!this[_0]&&!this[vR];){let r=this[bi];this[bi]=null,this[IR](r)}this[CR]=!1}(!this[bi]||this[ym])&&this[Tq]()}[IR](e){let r=0,s=e.length;for(;r+512<=s&&!this[_0]&&!this[vR];)switch(this[_c]){case"begin":case"header":this[IEe](e,r),r+=512;break;case"ignore":case"body":r+=this[kq](e,r);break;case"meta":r+=this[EEe](e,r);break;default:throw new Error("invalid state: "+this[_c])}r{"use strict";var WEt=bI(),BEe=SR(),WI=ye("fs"),YEt=GI(),wEe=ye("path"),Rq=NI();SEe.exports=(t,e,r)=>{typeof t=="function"?(r=t,e=null,t={}):Array.isArray(t)&&(e=t,t={}),typeof e=="function"&&(r=e,e=null),e?e=Array.from(e):e=[];let s=WEt(t);if(s.sync&&typeof r=="function")throw new TypeError("callback not supported for sync tar functions");if(!s.file&&typeof r=="function")throw new TypeError("callback only supported with file option");return e.length&&KEt(s,e),s.noResume||VEt(s),s.file&&s.sync?JEt(s):s.file?zEt(s,r):vEe(s)};var VEt=t=>{let e=t.onentry;t.onentry=e?r=>{e(r),r.resume()}:r=>r.resume()},KEt=(t,e)=>{let r=new Map(e.map(n=>[Rq(n),!0])),s=t.filter,a=(n,c)=>{let f=c||wEe.parse(n).root||".",p=n===f?!1:r.has(n)?r.get(n):a(wEe.dirname(n),f);return r.set(n,p),p};t.filter=s?(n,c)=>s(n,c)&&a(Rq(n)):n=>a(Rq(n))},JEt=t=>{let e=vEe(t),r=t.file,s=!0,a;try{let n=WI.statSync(r),c=t.maxReadSize||16*1024*1024;if(n.size{let r=new BEe(t),s=t.maxReadSize||16*1024*1024,a=t.file,n=new Promise((c,f)=>{r.on("error",f),r.on("end",c),WI.stat(a,(p,h)=>{if(p)f(p);else{let E=new YEt.ReadStream(a,{readSize:s,size:h.size});E.on("error",f),E.pipe(r)}})});return e?n.then(e,e):n},vEe=t=>new BEe(t)});var QEe=L((Der,kEe)=>{"use strict";var ZEt=bI(),bR=fR(),DEe=GI(),bEe=DR(),PEe=ye("path");kEe.exports=(t,e,r)=>{if(typeof e=="function"&&(r=e),Array.isArray(t)&&(e=t,t={}),!e||!Array.isArray(e)||!e.length)throw new TypeError("no files or directories specified");e=Array.from(e);let s=ZEt(t);if(s.sync&&typeof r=="function")throw new TypeError("callback not supported for sync tar functions");if(!s.file&&typeof r=="function")throw new TypeError("callback only supported with file option");return s.file&&s.sync?XEt(s,e):s.file?$Et(s,e,r):s.sync?eIt(s,e):tIt(s,e)};var XEt=(t,e)=>{let r=new bR.Sync(t),s=new DEe.WriteStreamSync(t.file,{mode:t.mode||438});r.pipe(s),xEe(r,e)},$Et=(t,e,r)=>{let s=new bR(t),a=new DEe.WriteStream(t.file,{mode:t.mode||438});s.pipe(a);let n=new Promise((c,f)=>{a.on("error",f),a.on("close",c),s.on("error",f)});return Fq(s,e),r?n.then(r,r):n},xEe=(t,e)=>{e.forEach(r=>{r.charAt(0)==="@"?bEe({file:PEe.resolve(t.cwd,r.substr(1)),sync:!0,noResume:!0,onentry:s=>t.add(s)}):t.add(r)}),t.end()},Fq=(t,e)=>{for(;e.length;){let r=e.shift();if(r.charAt(0)==="@")return bEe({file:PEe.resolve(t.cwd,r.substr(1)),noResume:!0,onentry:s=>t.add(s)}).then(s=>Fq(t,e));t.add(r)}t.end()},eIt=(t,e)=>{let r=new bR.Sync(t);return xEe(r,e),r},tIt=(t,e)=>{let r=new bR(t);return Fq(r,e),r}});var Nq=L((ber,MEe)=>{"use strict";var rIt=bI(),TEe=fR(),Xl=ye("fs"),REe=GI(),FEe=DR(),NEe=ye("path"),OEe=FI();MEe.exports=(t,e,r)=>{let s=rIt(t);if(!s.file)throw new TypeError("file is required");if(s.gzip)throw new TypeError("cannot append to compressed archives");if(!e||!Array.isArray(e)||!e.length)throw new TypeError("no files or directories specified");return e=Array.from(e),s.sync?nIt(s,e):sIt(s,e,r)};var nIt=(t,e)=>{let r=new TEe.Sync(t),s=!0,a,n;try{try{a=Xl.openSync(t.file,"r+")}catch(p){if(p.code==="ENOENT")a=Xl.openSync(t.file,"w+");else throw p}let c=Xl.fstatSync(a),f=Buffer.alloc(512);e:for(n=0;nc.size)break;n+=h,t.mtimeCache&&t.mtimeCache.set(p.path,p.mtime)}s=!1,iIt(t,r,n,a,e)}finally{if(s)try{Xl.closeSync(a)}catch{}}},iIt=(t,e,r,s,a)=>{let n=new REe.WriteStreamSync(t.file,{fd:s,start:r});e.pipe(n),oIt(e,a)},sIt=(t,e,r)=>{e=Array.from(e);let s=new TEe(t),a=(c,f,p)=>{let h=(I,R)=>{I?Xl.close(c,N=>p(I)):p(null,R)},E=0;if(f===0)return h(null,0);let C=0,S=Buffer.alloc(512),P=(I,R)=>{if(I)return h(I);if(C+=R,C<512&&R)return Xl.read(c,S,C,S.length-C,E+C,P);if(E===0&&S[0]===31&&S[1]===139)return h(new Error("cannot append to compressed archives"));if(C<512)return h(null,E);let N=new OEe(S);if(!N.cksumValid)return h(null,E);let U=512*Math.ceil(N.size/512);if(E+U+512>f||(E+=U+512,E>=f))return h(null,E);t.mtimeCache&&t.mtimeCache.set(N.path,N.mtime),C=0,Xl.read(c,S,0,512,E,P)};Xl.read(c,S,0,512,E,P)},n=new Promise((c,f)=>{s.on("error",f);let p="r+",h=(E,C)=>{if(E&&E.code==="ENOENT"&&p==="r+")return p="w+",Xl.open(t.file,p,h);if(E)return f(E);Xl.fstat(C,(S,P)=>{if(S)return Xl.close(C,()=>f(S));a(C,P.size,(I,R)=>{if(I)return f(I);let N=new REe.WriteStream(t.file,{fd:C,start:R});s.pipe(N),N.on("error",f),N.on("close",c),LEe(s,e)})})};Xl.open(t.file,p,h)});return r?n.then(r,r):n},oIt=(t,e)=>{e.forEach(r=>{r.charAt(0)==="@"?FEe({file:NEe.resolve(t.cwd,r.substr(1)),sync:!0,noResume:!0,onentry:s=>t.add(s)}):t.add(r)}),t.end()},LEe=(t,e)=>{for(;e.length;){let r=e.shift();if(r.charAt(0)==="@")return FEe({file:NEe.resolve(t.cwd,r.substr(1)),noResume:!0,onentry:s=>t.add(s)}).then(s=>LEe(t,e));t.add(r)}t.end()}});var UEe=L((Per,_Ee)=>{"use strict";var aIt=bI(),lIt=Nq();_Ee.exports=(t,e,r)=>{let s=aIt(t);if(!s.file)throw new TypeError("file is required");if(s.gzip)throw new TypeError("cannot append to compressed archives");if(!e||!Array.isArray(e)||!e.length)throw new TypeError("no files or directories specified");return e=Array.from(e),cIt(s),lIt(s,e,r)};var cIt=t=>{let e=t.filter;t.mtimeCache||(t.mtimeCache=new Map),t.filter=e?(r,s)=>e(r,s)&&!(t.mtimeCache.get(r)>s.mtime):(r,s)=>!(t.mtimeCache.get(r)>s.mtime)}});var qEe=L((xer,jEe)=>{var{promisify:HEe}=ye("util"),U0=ye("fs"),uIt=t=>{if(!t)t={mode:511,fs:U0};else if(typeof t=="object")t={mode:511,fs:U0,...t};else if(typeof t=="number")t={mode:t,fs:U0};else if(typeof t=="string")t={mode:parseInt(t,8),fs:U0};else throw new TypeError("invalid options argument");return t.mkdir=t.mkdir||t.fs.mkdir||U0.mkdir,t.mkdirAsync=HEe(t.mkdir),t.stat=t.stat||t.fs.stat||U0.stat,t.statAsync=HEe(t.stat),t.statSync=t.statSync||t.fs.statSync||U0.statSync,t.mkdirSync=t.mkdirSync||t.fs.mkdirSync||U0.mkdirSync,t};jEe.exports=uIt});var WEe=L((ker,GEe)=>{var fIt=process.platform,{resolve:AIt,parse:pIt}=ye("path"),hIt=t=>{if(/\0/.test(t))throw Object.assign(new TypeError("path must be a string without null bytes"),{path:t,code:"ERR_INVALID_ARG_VALUE"});if(t=AIt(t),fIt==="win32"){let e=/[*|"<>?:]/,{root:r}=pIt(t);if(e.test(t.substr(r.length)))throw Object.assign(new Error("Illegal characters in path."),{path:t,code:"EINVAL"})}return t};GEe.exports=hIt});var zEe=L((Qer,JEe)=>{var{dirname:YEe}=ye("path"),VEe=(t,e,r=void 0)=>r===e?Promise.resolve():t.statAsync(e).then(s=>s.isDirectory()?r:void 0,s=>s.code==="ENOENT"?VEe(t,YEe(e),e):void 0),KEe=(t,e,r=void 0)=>{if(r!==e)try{return t.statSync(e).isDirectory()?r:void 0}catch(s){return s.code==="ENOENT"?KEe(t,YEe(e),e):void 0}};JEe.exports={findMade:VEe,findMadeSync:KEe}});var Mq=L((Ter,XEe)=>{var{dirname:ZEe}=ye("path"),Oq=(t,e,r)=>{e.recursive=!1;let s=ZEe(t);return s===t?e.mkdirAsync(t,e).catch(a=>{if(a.code!=="EISDIR")throw a}):e.mkdirAsync(t,e).then(()=>r||t,a=>{if(a.code==="ENOENT")return Oq(s,e).then(n=>Oq(t,e,n));if(a.code!=="EEXIST"&&a.code!=="EROFS")throw a;return e.statAsync(t).then(n=>{if(n.isDirectory())return r;throw a},()=>{throw a})})},Lq=(t,e,r)=>{let s=ZEe(t);if(e.recursive=!1,s===t)try{return e.mkdirSync(t,e)}catch(a){if(a.code!=="EISDIR")throw a;return}try{return e.mkdirSync(t,e),r||t}catch(a){if(a.code==="ENOENT")return Lq(t,e,Lq(s,e,r));if(a.code!=="EEXIST"&&a.code!=="EROFS")throw a;try{if(!e.statSync(t).isDirectory())throw a}catch{throw a}}};XEe.exports={mkdirpManual:Oq,mkdirpManualSync:Lq}});var tIe=L((Rer,eIe)=>{var{dirname:$Ee}=ye("path"),{findMade:gIt,findMadeSync:dIt}=zEe(),{mkdirpManual:mIt,mkdirpManualSync:yIt}=Mq(),EIt=(t,e)=>(e.recursive=!0,$Ee(t)===t?e.mkdirAsync(t,e):gIt(e,t).then(s=>e.mkdirAsync(t,e).then(()=>s).catch(a=>{if(a.code==="ENOENT")return mIt(t,e);throw a}))),IIt=(t,e)=>{if(e.recursive=!0,$Ee(t)===t)return e.mkdirSync(t,e);let s=dIt(e,t);try{return e.mkdirSync(t,e),s}catch(a){if(a.code==="ENOENT")return yIt(t,e);throw a}};eIe.exports={mkdirpNative:EIt,mkdirpNativeSync:IIt}});var sIe=L((Fer,iIe)=>{var rIe=ye("fs"),CIt=process.version,_q=CIt.replace(/^v/,"").split("."),nIe=+_q[0]>10||+_q[0]==10&&+_q[1]>=12,wIt=nIe?t=>t.mkdir===rIe.mkdir:()=>!1,BIt=nIe?t=>t.mkdirSync===rIe.mkdirSync:()=>!1;iIe.exports={useNative:wIt,useNativeSync:BIt}});var fIe=L((Ner,uIe)=>{var YI=qEe(),VI=WEe(),{mkdirpNative:oIe,mkdirpNativeSync:aIe}=tIe(),{mkdirpManual:lIe,mkdirpManualSync:cIe}=Mq(),{useNative:vIt,useNativeSync:SIt}=sIe(),KI=(t,e)=>(t=VI(t),e=YI(e),vIt(e)?oIe(t,e):lIe(t,e)),DIt=(t,e)=>(t=VI(t),e=YI(e),SIt(e)?aIe(t,e):cIe(t,e));KI.sync=DIt;KI.native=(t,e)=>oIe(VI(t),YI(e));KI.manual=(t,e)=>lIe(VI(t),YI(e));KI.nativeSync=(t,e)=>aIe(VI(t),YI(e));KI.manualSync=(t,e)=>cIe(VI(t),YI(e));uIe.exports=KI});var yIe=L((Oer,mIe)=>{"use strict";var Hc=ye("fs"),Cm=ye("path"),bIt=Hc.lchown?"lchown":"chown",PIt=Hc.lchownSync?"lchownSync":"chownSync",pIe=Hc.lchown&&!process.version.match(/v1[1-9]+\./)&&!process.version.match(/v10\.[6-9]/),AIe=(t,e,r)=>{try{return Hc[PIt](t,e,r)}catch(s){if(s.code!=="ENOENT")throw s}},xIt=(t,e,r)=>{try{return Hc.chownSync(t,e,r)}catch(s){if(s.code!=="ENOENT")throw s}},kIt=pIe?(t,e,r,s)=>a=>{!a||a.code!=="EISDIR"?s(a):Hc.chown(t,e,r,s)}:(t,e,r,s)=>s,Uq=pIe?(t,e,r)=>{try{return AIe(t,e,r)}catch(s){if(s.code!=="EISDIR")throw s;xIt(t,e,r)}}:(t,e,r)=>AIe(t,e,r),QIt=process.version,hIe=(t,e,r)=>Hc.readdir(t,e,r),TIt=(t,e)=>Hc.readdirSync(t,e);/^v4\./.test(QIt)&&(hIe=(t,e,r)=>Hc.readdir(t,r));var PR=(t,e,r,s)=>{Hc[bIt](t,e,r,kIt(t,e,r,a=>{s(a&&a.code!=="ENOENT"?a:null)}))},gIe=(t,e,r,s,a)=>{if(typeof e=="string")return Hc.lstat(Cm.resolve(t,e),(n,c)=>{if(n)return a(n.code!=="ENOENT"?n:null);c.name=e,gIe(t,c,r,s,a)});if(e.isDirectory())Hq(Cm.resolve(t,e.name),r,s,n=>{if(n)return a(n);let c=Cm.resolve(t,e.name);PR(c,r,s,a)});else{let n=Cm.resolve(t,e.name);PR(n,r,s,a)}},Hq=(t,e,r,s)=>{hIe(t,{withFileTypes:!0},(a,n)=>{if(a){if(a.code==="ENOENT")return s();if(a.code!=="ENOTDIR"&&a.code!=="ENOTSUP")return s(a)}if(a||!n.length)return PR(t,e,r,s);let c=n.length,f=null,p=h=>{if(!f){if(h)return s(f=h);if(--c===0)return PR(t,e,r,s)}};n.forEach(h=>gIe(t,h,e,r,p))})},RIt=(t,e,r,s)=>{if(typeof e=="string")try{let a=Hc.lstatSync(Cm.resolve(t,e));a.name=e,e=a}catch(a){if(a.code==="ENOENT")return;throw a}e.isDirectory()&&dIe(Cm.resolve(t,e.name),r,s),Uq(Cm.resolve(t,e.name),r,s)},dIe=(t,e,r)=>{let s;try{s=TIt(t,{withFileTypes:!0})}catch(a){if(a.code==="ENOENT")return;if(a.code==="ENOTDIR"||a.code==="ENOTSUP")return Uq(t,e,r);throw a}return s&&s.length&&s.forEach(a=>RIt(t,a,e,r)),Uq(t,e,r)};mIe.exports=Hq;Hq.sync=dIe});var wIe=L((Ler,jq)=>{"use strict";var EIe=fIe(),jc=ye("fs"),xR=ye("path"),IIe=yIe(),Ku=TI(),kR=class extends Error{constructor(e,r){super("Cannot extract through symbolic link"),this.path=r,this.symlink=e}get name(){return"SylinkError"}},QR=class extends Error{constructor(e,r){super(r+": Cannot cd into '"+e+"'"),this.path=e,this.code=r}get name(){return"CwdError"}},TR=(t,e)=>t.get(Ku(e)),Yv=(t,e,r)=>t.set(Ku(e),r),FIt=(t,e)=>{jc.stat(t,(r,s)=>{(r||!s.isDirectory())&&(r=new QR(t,r&&r.code||"ENOTDIR")),e(r)})};jq.exports=(t,e,r)=>{t=Ku(t);let s=e.umask,a=e.mode|448,n=(a&s)!==0,c=e.uid,f=e.gid,p=typeof c=="number"&&typeof f=="number"&&(c!==e.processUid||f!==e.processGid),h=e.preserve,E=e.unlink,C=e.cache,S=Ku(e.cwd),P=(N,U)=>{N?r(N):(Yv(C,t,!0),U&&p?IIe(U,c,f,W=>P(W)):n?jc.chmod(t,a,r):r())};if(C&&TR(C,t)===!0)return P();if(t===S)return FIt(t,P);if(h)return EIe(t,{mode:a}).then(N=>P(null,N),P);let R=Ku(xR.relative(S,t)).split("/");RR(S,R,a,C,E,S,null,P)};var RR=(t,e,r,s,a,n,c,f)=>{if(!e.length)return f(null,c);let p=e.shift(),h=Ku(xR.resolve(t+"/"+p));if(TR(s,h))return RR(h,e,r,s,a,n,c,f);jc.mkdir(h,r,CIe(h,e,r,s,a,n,c,f))},CIe=(t,e,r,s,a,n,c,f)=>p=>{p?jc.lstat(t,(h,E)=>{if(h)h.path=h.path&&Ku(h.path),f(h);else if(E.isDirectory())RR(t,e,r,s,a,n,c,f);else if(a)jc.unlink(t,C=>{if(C)return f(C);jc.mkdir(t,r,CIe(t,e,r,s,a,n,c,f))});else{if(E.isSymbolicLink())return f(new kR(t,t+"/"+e.join("/")));f(p)}}):(c=c||t,RR(t,e,r,s,a,n,c,f))},NIt=t=>{let e=!1,r="ENOTDIR";try{e=jc.statSync(t).isDirectory()}catch(s){r=s.code}finally{if(!e)throw new QR(t,r)}};jq.exports.sync=(t,e)=>{t=Ku(t);let r=e.umask,s=e.mode|448,a=(s&r)!==0,n=e.uid,c=e.gid,f=typeof n=="number"&&typeof c=="number"&&(n!==e.processUid||c!==e.processGid),p=e.preserve,h=e.unlink,E=e.cache,C=Ku(e.cwd),S=N=>{Yv(E,t,!0),N&&f&&IIe.sync(N,n,c),a&&jc.chmodSync(t,s)};if(E&&TR(E,t)===!0)return S();if(t===C)return NIt(C),S();if(p)return S(EIe.sync(t,s));let I=Ku(xR.relative(C,t)).split("/"),R=null;for(let N=I.shift(),U=C;N&&(U+="/"+N);N=I.shift())if(U=Ku(xR.resolve(U)),!TR(E,U))try{jc.mkdirSync(U,s),R=R||U,Yv(E,U,!0)}catch{let te=jc.lstatSync(U);if(te.isDirectory()){Yv(E,U,!0);continue}else if(h){jc.unlinkSync(U),jc.mkdirSync(U,s),R=R||U,Yv(E,U,!0);continue}else if(te.isSymbolicLink())return new kR(U,U+"/"+I.join("/"))}return S(R)}});var Gq=L((Mer,BIe)=>{var qq=Object.create(null),{hasOwnProperty:OIt}=Object.prototype;BIe.exports=t=>(OIt.call(qq,t)||(qq[t]=t.normalize("NFKD")),qq[t])});var bIe=L((_er,DIe)=>{var vIe=ye("assert"),LIt=Gq(),MIt=NI(),{join:SIe}=ye("path"),_It=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,UIt=_It==="win32";DIe.exports=()=>{let t=new Map,e=new Map,r=h=>h.split("/").slice(0,-1).reduce((C,S)=>(C.length&&(S=SIe(C[C.length-1],S)),C.push(S||"/"),C),[]),s=new Set,a=h=>{let E=e.get(h);if(!E)throw new Error("function does not have any path reservations");return{paths:E.paths.map(C=>t.get(C)),dirs:[...E.dirs].map(C=>t.get(C))}},n=h=>{let{paths:E,dirs:C}=a(h);return E.every(S=>S[0]===h)&&C.every(S=>S[0]instanceof Set&&S[0].has(h))},c=h=>s.has(h)||!n(h)?!1:(s.add(h),h(()=>f(h)),!0),f=h=>{if(!s.has(h))return!1;let{paths:E,dirs:C}=e.get(h),S=new Set;return E.forEach(P=>{let I=t.get(P);vIe.equal(I[0],h),I.length===1?t.delete(P):(I.shift(),typeof I[0]=="function"?S.add(I[0]):I[0].forEach(R=>S.add(R)))}),C.forEach(P=>{let I=t.get(P);vIe(I[0]instanceof Set),I[0].size===1&&I.length===1?t.delete(P):I[0].size===1?(I.shift(),S.add(I[0])):I[0].delete(h)}),s.delete(h),S.forEach(P=>c(P)),!0};return{check:n,reserve:(h,E)=>{h=UIt?["win32 parallelization disabled"]:h.map(S=>LIt(MIt(SIe(S))).toLowerCase());let C=new Set(h.map(S=>r(S)).reduce((S,P)=>S.concat(P)));return e.set(E,{dirs:C,paths:h}),h.forEach(S=>{let P=t.get(S);P?P.push(E):t.set(S,[E])}),C.forEach(S=>{let P=t.get(S);P?P[P.length-1]instanceof Set?P[P.length-1].add(E):P.push(new Set([E])):t.set(S,[new Set([E])])}),c(E)}}}});var kIe=L((Uer,xIe)=>{var HIt=process.platform,jIt=HIt==="win32",qIt=global.__FAKE_TESTING_FS__||ye("fs"),{O_CREAT:GIt,O_TRUNC:WIt,O_WRONLY:YIt,UV_FS_O_FILEMAP:PIe=0}=qIt.constants,VIt=jIt&&!!PIe,KIt=512*1024,JIt=PIe|WIt|GIt|YIt;xIe.exports=VIt?t=>t"w"});var $q=L((Her,GIe)=>{"use strict";var zIt=ye("assert"),ZIt=SR(),Mn=ye("fs"),XIt=GI(),Zp=ye("path"),HIe=wIe(),QIe=$6(),$It=bIe(),eCt=eq(),$l=TI(),tCt=NI(),rCt=Gq(),TIe=Symbol("onEntry"),Vq=Symbol("checkFs"),RIe=Symbol("checkFs2"),OR=Symbol("pruneCache"),Kq=Symbol("isReusable"),qc=Symbol("makeFs"),Jq=Symbol("file"),zq=Symbol("directory"),LR=Symbol("link"),FIe=Symbol("symlink"),NIe=Symbol("hardlink"),OIe=Symbol("unsupported"),LIe=Symbol("checkPath"),H0=Symbol("mkdir"),Xo=Symbol("onError"),FR=Symbol("pending"),MIe=Symbol("pend"),JI=Symbol("unpend"),Wq=Symbol("ended"),Yq=Symbol("maybeClose"),Zq=Symbol("skip"),Vv=Symbol("doChown"),Kv=Symbol("uid"),Jv=Symbol("gid"),zv=Symbol("checkedCwd"),jIe=ye("crypto"),qIe=kIe(),nCt=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,Zv=nCt==="win32",iCt=(t,e)=>{if(!Zv)return Mn.unlink(t,e);let r=t+".DELETE."+jIe.randomBytes(16).toString("hex");Mn.rename(t,r,s=>{if(s)return e(s);Mn.unlink(r,e)})},sCt=t=>{if(!Zv)return Mn.unlinkSync(t);let e=t+".DELETE."+jIe.randomBytes(16).toString("hex");Mn.renameSync(t,e),Mn.unlinkSync(e)},_Ie=(t,e,r)=>t===t>>>0?t:e===e>>>0?e:r,UIe=t=>rCt(tCt($l(t))).toLowerCase(),oCt=(t,e)=>{e=UIe(e);for(let r of t.keys()){let s=UIe(r);(s===e||s.indexOf(e+"/")===0)&&t.delete(r)}},aCt=t=>{for(let e of t.keys())t.delete(e)},Xv=class extends ZIt{constructor(e){if(e||(e={}),e.ondone=r=>{this[Wq]=!0,this[Yq]()},super(e),this[zv]=!1,this.reservations=$It(),this.transform=typeof e.transform=="function"?e.transform:null,this.writable=!0,this.readable=!1,this[FR]=0,this[Wq]=!1,this.dirCache=e.dirCache||new Map,typeof e.uid=="number"||typeof e.gid=="number"){if(typeof e.uid!="number"||typeof e.gid!="number")throw new TypeError("cannot set owner without number uid and gid");if(e.preserveOwner)throw new TypeError("cannot preserve owner in archive and also set owner explicitly");this.uid=e.uid,this.gid=e.gid,this.setOwner=!0}else this.uid=null,this.gid=null,this.setOwner=!1;e.preserveOwner===void 0&&typeof e.uid!="number"?this.preserveOwner=process.getuid&&process.getuid()===0:this.preserveOwner=!!e.preserveOwner,this.processUid=(this.preserveOwner||this.setOwner)&&process.getuid?process.getuid():null,this.processGid=(this.preserveOwner||this.setOwner)&&process.getgid?process.getgid():null,this.forceChown=e.forceChown===!0,this.win32=!!e.win32||Zv,this.newer=!!e.newer,this.keep=!!e.keep,this.noMtime=!!e.noMtime,this.preservePaths=!!e.preservePaths,this.unlink=!!e.unlink,this.cwd=$l(Zp.resolve(e.cwd||process.cwd())),this.strip=+e.strip||0,this.processUmask=e.noChmod?0:process.umask(),this.umask=typeof e.umask=="number"?e.umask:this.processUmask,this.dmode=e.dmode||511&~this.umask,this.fmode=e.fmode||438&~this.umask,this.on("entry",r=>this[TIe](r))}warn(e,r,s={}){return(e==="TAR_BAD_ARCHIVE"||e==="TAR_ABORT")&&(s.recoverable=!1),super.warn(e,r,s)}[Yq](){this[Wq]&&this[FR]===0&&(this.emit("prefinish"),this.emit("finish"),this.emit("end"),this.emit("close"))}[LIe](e){if(this.strip){let r=$l(e.path).split("/");if(r.length=this.strip)e.linkpath=s.slice(this.strip).join("/");else return!1}}if(!this.preservePaths){let r=$l(e.path),s=r.split("/");if(s.includes("..")||Zv&&/^[a-z]:\.\.$/i.test(s[0]))return this.warn("TAR_ENTRY_ERROR","path contains '..'",{entry:e,path:r}),!1;let[a,n]=eCt(r);a&&(e.path=n,this.warn("TAR_ENTRY_INFO",`stripping ${a} from absolute path`,{entry:e,path:r}))}if(Zp.isAbsolute(e.path)?e.absolute=$l(Zp.resolve(e.path)):e.absolute=$l(Zp.resolve(this.cwd,e.path)),!this.preservePaths&&e.absolute.indexOf(this.cwd+"/")!==0&&e.absolute!==this.cwd)return this.warn("TAR_ENTRY_ERROR","path escaped extraction target",{entry:e,path:$l(e.path),resolvedPath:e.absolute,cwd:this.cwd}),!1;if(e.absolute===this.cwd&&e.type!=="Directory"&&e.type!=="GNUDumpDir")return!1;if(this.win32){let{root:r}=Zp.win32.parse(e.absolute);e.absolute=r+QIe.encode(e.absolute.substr(r.length));let{root:s}=Zp.win32.parse(e.path);e.path=s+QIe.encode(e.path.substr(s.length))}return!0}[TIe](e){if(!this[LIe](e))return e.resume();switch(zIt.equal(typeof e.absolute,"string"),e.type){case"Directory":case"GNUDumpDir":e.mode&&(e.mode=e.mode|448);case"File":case"OldFile":case"ContiguousFile":case"Link":case"SymbolicLink":return this[Vq](e);case"CharacterDevice":case"BlockDevice":case"FIFO":default:return this[OIe](e)}}[Xo](e,r){e.name==="CwdError"?this.emit("error",e):(this.warn("TAR_ENTRY_ERROR",e,{entry:r}),this[JI](),r.resume())}[H0](e,r,s){HIe($l(e),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cache:this.dirCache,cwd:this.cwd,mode:r,noChmod:this.noChmod},s)}[Vv](e){return this.forceChown||this.preserveOwner&&(typeof e.uid=="number"&&e.uid!==this.processUid||typeof e.gid=="number"&&e.gid!==this.processGid)||typeof this.uid=="number"&&this.uid!==this.processUid||typeof this.gid=="number"&&this.gid!==this.processGid}[Kv](e){return _Ie(this.uid,e.uid,this.processUid)}[Jv](e){return _Ie(this.gid,e.gid,this.processGid)}[Jq](e,r){let s=e.mode&4095||this.fmode,a=new XIt.WriteStream(e.absolute,{flags:qIe(e.size),mode:s,autoClose:!1});a.on("error",p=>{a.fd&&Mn.close(a.fd,()=>{}),a.write=()=>!0,this[Xo](p,e),r()});let n=1,c=p=>{if(p){a.fd&&Mn.close(a.fd,()=>{}),this[Xo](p,e),r();return}--n===0&&Mn.close(a.fd,h=>{h?this[Xo](h,e):this[JI](),r()})};a.on("finish",p=>{let h=e.absolute,E=a.fd;if(e.mtime&&!this.noMtime){n++;let C=e.atime||new Date,S=e.mtime;Mn.futimes(E,C,S,P=>P?Mn.utimes(h,C,S,I=>c(I&&P)):c())}if(this[Vv](e)){n++;let C=this[Kv](e),S=this[Jv](e);Mn.fchown(E,C,S,P=>P?Mn.chown(h,C,S,I=>c(I&&P)):c())}c()});let f=this.transform&&this.transform(e)||e;f!==e&&(f.on("error",p=>{this[Xo](p,e),r()}),e.pipe(f)),f.pipe(a)}[zq](e,r){let s=e.mode&4095||this.dmode;this[H0](e.absolute,s,a=>{if(a){this[Xo](a,e),r();return}let n=1,c=f=>{--n===0&&(r(),this[JI](),e.resume())};e.mtime&&!this.noMtime&&(n++,Mn.utimes(e.absolute,e.atime||new Date,e.mtime,c)),this[Vv](e)&&(n++,Mn.chown(e.absolute,this[Kv](e),this[Jv](e),c)),c()})}[OIe](e){e.unsupported=!0,this.warn("TAR_ENTRY_UNSUPPORTED",`unsupported entry type: ${e.type}`,{entry:e}),e.resume()}[FIe](e,r){this[LR](e,e.linkpath,"symlink",r)}[NIe](e,r){let s=$l(Zp.resolve(this.cwd,e.linkpath));this[LR](e,s,"link",r)}[MIe](){this[FR]++}[JI](){this[FR]--,this[Yq]()}[Zq](e){this[JI](),e.resume()}[Kq](e,r){return e.type==="File"&&!this.unlink&&r.isFile()&&r.nlink<=1&&!Zv}[Vq](e){this[MIe]();let r=[e.path];e.linkpath&&r.push(e.linkpath),this.reservations.reserve(r,s=>this[RIe](e,s))}[OR](e){e.type==="SymbolicLink"?aCt(this.dirCache):e.type!=="Directory"&&oCt(this.dirCache,e.absolute)}[RIe](e,r){this[OR](e);let s=f=>{this[OR](e),r(f)},a=()=>{this[H0](this.cwd,this.dmode,f=>{if(f){this[Xo](f,e),s();return}this[zv]=!0,n()})},n=()=>{if(e.absolute!==this.cwd){let f=$l(Zp.dirname(e.absolute));if(f!==this.cwd)return this[H0](f,this.dmode,p=>{if(p){this[Xo](p,e),s();return}c()})}c()},c=()=>{Mn.lstat(e.absolute,(f,p)=>{if(p&&(this.keep||this.newer&&p.mtime>e.mtime)){this[Zq](e),s();return}if(f||this[Kq](e,p))return this[qc](null,e,s);if(p.isDirectory()){if(e.type==="Directory"){let h=!this.noChmod&&e.mode&&(p.mode&4095)!==e.mode,E=C=>this[qc](C,e,s);return h?Mn.chmod(e.absolute,e.mode,E):E()}if(e.absolute!==this.cwd)return Mn.rmdir(e.absolute,h=>this[qc](h,e,s))}if(e.absolute===this.cwd)return this[qc](null,e,s);iCt(e.absolute,h=>this[qc](h,e,s))})};this[zv]?n():a()}[qc](e,r,s){if(e){this[Xo](e,r),s();return}switch(r.type){case"File":case"OldFile":case"ContiguousFile":return this[Jq](r,s);case"Link":return this[NIe](r,s);case"SymbolicLink":return this[FIe](r,s);case"Directory":case"GNUDumpDir":return this[zq](r,s)}}[LR](e,r,s,a){Mn[s](r,e.absolute,n=>{n?this[Xo](n,e):(this[JI](),e.resume()),a()})}},NR=t=>{try{return[null,t()]}catch(e){return[e,null]}},Xq=class extends Xv{[qc](e,r){return super[qc](e,r,()=>{})}[Vq](e){if(this[OR](e),!this[zv]){let n=this[H0](this.cwd,this.dmode);if(n)return this[Xo](n,e);this[zv]=!0}if(e.absolute!==this.cwd){let n=$l(Zp.dirname(e.absolute));if(n!==this.cwd){let c=this[H0](n,this.dmode);if(c)return this[Xo](c,e)}}let[r,s]=NR(()=>Mn.lstatSync(e.absolute));if(s&&(this.keep||this.newer&&s.mtime>e.mtime))return this[Zq](e);if(r||this[Kq](e,s))return this[qc](null,e);if(s.isDirectory()){if(e.type==="Directory"){let c=!this.noChmod&&e.mode&&(s.mode&4095)!==e.mode,[f]=c?NR(()=>{Mn.chmodSync(e.absolute,e.mode)}):[];return this[qc](f,e)}let[n]=NR(()=>Mn.rmdirSync(e.absolute));this[qc](n,e)}let[a]=e.absolute===this.cwd?[]:NR(()=>sCt(e.absolute));this[qc](a,e)}[Jq](e,r){let s=e.mode&4095||this.fmode,a=f=>{let p;try{Mn.closeSync(n)}catch(h){p=h}(f||p)&&this[Xo](f||p,e),r()},n;try{n=Mn.openSync(e.absolute,qIe(e.size),s)}catch(f){return a(f)}let c=this.transform&&this.transform(e)||e;c!==e&&(c.on("error",f=>this[Xo](f,e)),e.pipe(c)),c.on("data",f=>{try{Mn.writeSync(n,f,0,f.length)}catch(p){a(p)}}),c.on("end",f=>{let p=null;if(e.mtime&&!this.noMtime){let h=e.atime||new Date,E=e.mtime;try{Mn.futimesSync(n,h,E)}catch(C){try{Mn.utimesSync(e.absolute,h,E)}catch{p=C}}}if(this[Vv](e)){let h=this[Kv](e),E=this[Jv](e);try{Mn.fchownSync(n,h,E)}catch(C){try{Mn.chownSync(e.absolute,h,E)}catch{p=p||C}}}a(p)})}[zq](e,r){let s=e.mode&4095||this.dmode,a=this[H0](e.absolute,s);if(a){this[Xo](a,e),r();return}if(e.mtime&&!this.noMtime)try{Mn.utimesSync(e.absolute,e.atime||new Date,e.mtime)}catch{}if(this[Vv](e))try{Mn.chownSync(e.absolute,this[Kv](e),this[Jv](e))}catch{}r(),e.resume()}[H0](e,r){try{return HIe.sync($l(e),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cache:this.dirCache,cwd:this.cwd,mode:r})}catch(s){return s}}[LR](e,r,s,a){try{Mn[s+"Sync"](r,e.absolute),a(),e.resume()}catch(n){return this[Xo](n,e)}}};Xv.Sync=Xq;GIe.exports=Xv});var JIe=L((jer,KIe)=>{"use strict";var lCt=bI(),MR=$q(),YIe=ye("fs"),VIe=GI(),WIe=ye("path"),eG=NI();KIe.exports=(t,e,r)=>{typeof t=="function"?(r=t,e=null,t={}):Array.isArray(t)&&(e=t,t={}),typeof e=="function"&&(r=e,e=null),e?e=Array.from(e):e=[];let s=lCt(t);if(s.sync&&typeof r=="function")throw new TypeError("callback not supported for sync tar functions");if(!s.file&&typeof r=="function")throw new TypeError("callback only supported with file option");return e.length&&cCt(s,e),s.file&&s.sync?uCt(s):s.file?fCt(s,r):s.sync?ACt(s):pCt(s)};var cCt=(t,e)=>{let r=new Map(e.map(n=>[eG(n),!0])),s=t.filter,a=(n,c)=>{let f=c||WIe.parse(n).root||".",p=n===f?!1:r.has(n)?r.get(n):a(WIe.dirname(n),f);return r.set(n,p),p};t.filter=s?(n,c)=>s(n,c)&&a(eG(n)):n=>a(eG(n))},uCt=t=>{let e=new MR.Sync(t),r=t.file,s=YIe.statSync(r),a=t.maxReadSize||16*1024*1024;new VIe.ReadStreamSync(r,{readSize:a,size:s.size}).pipe(e)},fCt=(t,e)=>{let r=new MR(t),s=t.maxReadSize||16*1024*1024,a=t.file,n=new Promise((c,f)=>{r.on("error",f),r.on("close",c),YIe.stat(a,(p,h)=>{if(p)f(p);else{let E=new VIe.ReadStream(a,{readSize:s,size:h.size});E.on("error",f),E.pipe(r)}})});return e?n.then(e,e):n},ACt=t=>new MR.Sync(t),pCt=t=>new MR(t)});var zIe=L(xs=>{"use strict";xs.c=xs.create=QEe();xs.r=xs.replace=Nq();xs.t=xs.list=DR();xs.u=xs.update=UEe();xs.x=xs.extract=JIe();xs.Pack=fR();xs.Unpack=$q();xs.Parse=SR();xs.ReadEntry=KT();xs.WriteEntry=uq();xs.Header=FI();xs.Pax=zT();xs.types=Y6()});var tG,ZIe,j0,$v,eS,XIe=It(()=>{tG=et(Md()),ZIe=ye("worker_threads"),j0=Symbol("kTaskInfo"),$v=class{constructor(e,r){this.fn=e;this.limit=(0,tG.default)(r.poolSize)}run(e){return this.limit(()=>this.fn(e))}},eS=class{constructor(e,r){this.source=e;this.workers=[];this.limit=(0,tG.default)(r.poolSize),this.cleanupInterval=setInterval(()=>{if(this.limit.pendingCount===0&&this.limit.activeCount===0){let s=this.workers.pop();s?s.terminate():clearInterval(this.cleanupInterval)}},5e3).unref()}createWorker(){this.cleanupInterval.refresh();let e=new ZIe.Worker(this.source,{eval:!0,execArgv:[...process.execArgv,"--unhandled-rejections=strict"]});return e.on("message",r=>{if(!e[j0])throw new Error("Assertion failed: Worker sent a result without having a task assigned");e[j0].resolve(r),e[j0]=null,e.unref(),this.workers.push(e)}),e.on("error",r=>{e[j0]?.reject(r),e[j0]=null}),e.on("exit",r=>{r!==0&&e[j0]?.reject(new Error(`Worker exited with code ${r}`)),e[j0]=null}),e}run(e){return this.limit(()=>{let r=this.workers.pop()??this.createWorker();return r.ref(),new Promise((s,a)=>{r[j0]={resolve:s,reject:a},r.postMessage(e)})})}}});var eCe=L((Yer,$Ie)=>{var rG;$Ie.exports.getContent=()=>(typeof rG>"u"&&(rG=ye("zlib").brotliDecompressSync(Buffer.from("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","base64")).toString()),rG)});var hs={};Vt(hs,{convertToZip:()=>mCt,convertToZipWorker:()=>sG,extractArchiveTo:()=>sCe,getDefaultTaskPool:()=>nCe,getTaskPoolForConfiguration:()=>iCe,makeArchiveFromDirectory:()=>dCt});function hCt(t,e){switch(t){case"async":return new $v(sG,{poolSize:e});case"workers":return new eS((0,iG.getContent)(),{poolSize:e});default:throw new Error(`Assertion failed: Unknown value ${t} for taskPoolMode`)}}function nCe(){return typeof nG>"u"&&(nG=hCt("workers",As.availableParallelism())),nG}function iCe(t){return typeof t>"u"?nCe():Vl(gCt,t,()=>{let e=t.get("taskPoolMode"),r=t.get("taskPoolConcurrency");switch(e){case"async":return new $v(sG,{poolSize:r});case"workers":return new eS((0,iG.getContent)(),{poolSize:r});default:throw new Error(`Assertion failed: Unknown value ${e} for taskPoolMode`)}})}async function sG(t){let{tmpFile:e,tgz:r,compressionLevel:s,extractBufferOpts:a}=t,n=new ps(e,{create:!0,level:s,stats:el.makeDefaultStats()}),c=Buffer.from(r.buffer,r.byteOffset,r.byteLength);return await sCe(c,n,a),n.saveAndClose(),e}async function dCt(t,{baseFs:e=new Yn,prefixPath:r=vt.root,compressionLevel:s,inMemory:a=!1}={}){let n;if(a)n=new ps(null,{level:s});else{let f=await le.mktempPromise(),p=K.join(f,"archive.zip");n=new ps(p,{create:!0,level:s})}let c=K.resolve(vt.root,r);return await n.copyPromise(c,t,{baseFs:e,stableTime:!0,stableSort:!0}),n}async function mCt(t,e={}){let r=await le.mktempPromise(),s=K.join(r,"archive.zip"),a=e.compressionLevel??e.configuration?.get("compressionLevel")??"mixed",n={prefixPath:e.prefixPath,stripComponents:e.stripComponents};return await(e.taskPool??iCe(e.configuration)).run({tmpFile:s,tgz:t,compressionLevel:a,extractBufferOpts:n}),new ps(s,{level:e.compressionLevel})}async function*yCt(t){let e=new rCe.default.Parse,r=new tCe.PassThrough({objectMode:!0,autoDestroy:!0,emitClose:!0});e.on("entry",s=>{r.write(s)}),e.on("error",s=>{r.destroy(s)}),e.on("close",()=>{r.destroyed||r.end()}),e.end(t);for await(let s of r){let a=s;yield a,a.resume()}}async function sCe(t,e,{stripComponents:r=0,prefixPath:s=vt.dot}={}){function a(n){if(n.path[0]==="/")return!0;let c=n.path.split(/\//g);return!!(c.some(f=>f==="..")||c.length<=r)}for await(let n of yCt(t)){if(a(n))continue;let c=K.normalize(ue.toPortablePath(n.path)).replace(/\/$/,"").split(/\//g);if(c.length<=r)continue;let f=c.slice(r).join("/"),p=K.join(s,f),h=420;switch((n.type==="Directory"||(n.mode??0)&73)&&(h|=73),n.type){case"Directory":e.mkdirpSync(K.dirname(p),{chmod:493,utimes:[ui.SAFE_TIME,ui.SAFE_TIME]}),e.mkdirSync(p,{mode:h}),e.utimesSync(p,ui.SAFE_TIME,ui.SAFE_TIME);break;case"OldFile":case"File":e.mkdirpSync(K.dirname(p),{chmod:493,utimes:[ui.SAFE_TIME,ui.SAFE_TIME]}),e.writeFileSync(p,await WE(n),{mode:h}),e.utimesSync(p,ui.SAFE_TIME,ui.SAFE_TIME);break;case"SymbolicLink":e.mkdirpSync(K.dirname(p),{chmod:493,utimes:[ui.SAFE_TIME,ui.SAFE_TIME]}),e.symlinkSync(n.linkpath,p),e.lutimesSync(p,ui.SAFE_TIME,ui.SAFE_TIME);break}}return e}var tCe,rCe,iG,nG,gCt,oCe=It(()=>{Ve();bt();rA();tCe=ye("stream"),rCe=et(zIe());XIe();kc();iG=et(eCe());gCt=new WeakMap});var lCe=L((oG,aCe)=>{(function(t,e){typeof oG=="object"?aCe.exports=e():typeof define=="function"&&define.amd?define(e):t.treeify=e()})(oG,function(){function t(a,n){var c=n?"\u2514":"\u251C";return a?c+="\u2500 ":c+="\u2500\u2500\u2510",c}function e(a,n){var c=[];for(var f in a)a.hasOwnProperty(f)&&(n&&typeof a[f]=="function"||c.push(f));return c}function r(a,n,c,f,p,h,E){var C="",S=0,P,I,R=f.slice(0);if(R.push([n,c])&&f.length>0&&(f.forEach(function(U,W){W>0&&(C+=(U[1]?" ":"\u2502")+" "),!I&&U[0]===n&&(I=!0)}),C+=t(a,c)+a,p&&(typeof n!="object"||n instanceof Date)&&(C+=": "+n),I&&(C+=" (circular ref.)"),E(C)),!I&&typeof n=="object"){var N=e(n,h);N.forEach(function(U){P=++S===N.length,r(U,n[U],P,R,p,h,E)})}}var s={};return s.asLines=function(a,n,c,f){var p=typeof c!="function"?c:!1;r(".",a,!1,[],n,p,f||c)},s.asTree=function(a,n,c){var f="";return r(".",a,!1,[],n,c,function(p){f+=p+` +`}),f},s})});var ks={};Vt(ks,{emitList:()=>ECt,emitTree:()=>ACe,treeNodeToJson:()=>fCe,treeNodeToTreeify:()=>uCe});function uCe(t,{configuration:e}){let r={},s=0,a=(n,c)=>{let f=Array.isArray(n)?n.entries():Object.entries(n);for(let[p,h]of f){if(!h)continue;let{label:E,value:C,children:S}=h,P=[];typeof E<"u"&&P.push(zd(e,E,2)),typeof C<"u"&&P.push(Ut(e,C[0],C[1])),P.length===0&&P.push(zd(e,`${p}`,2));let I=P.join(": ").trim(),R=`\0${s++}\0`,N=c[`${R}${I}`]={};typeof S<"u"&&a(S,N)}};if(typeof t.children>"u")throw new Error("The root node must only contain children");return a(t.children,r),r}function fCe(t){let e=r=>{if(typeof r.children>"u"){if(typeof r.value>"u")throw new Error("Assertion failed: Expected a value to be set if the children are missing");return Zd(r.value[0],r.value[1])}let s=Array.isArray(r.children)?r.children.entries():Object.entries(r.children??{}),a=Array.isArray(r.children)?[]:{};for(let[n,c]of s)c&&(a[ICt(n)]=e(c));return typeof r.value>"u"?a:{value:Zd(r.value[0],r.value[1]),children:a}};return e(t)}function ECt(t,{configuration:e,stdout:r,json:s}){let a=t.map(n=>({value:n}));ACe({children:a},{configuration:e,stdout:r,json:s})}function ACe(t,{configuration:e,stdout:r,json:s,separators:a=0}){if(s){let c=Array.isArray(t.children)?t.children.values():Object.values(t.children??{});for(let f of c)f&&r.write(`${JSON.stringify(fCe(f))} +`);return}let n=(0,cCe.asTree)(uCe(t,{configuration:e}),!1,!1);if(n=n.replace(/\0[0-9]+\0/g,""),a>=1&&(n=n.replace(/^([├└]─)/gm,`\u2502 +$1`).replace(/^│\n/,"")),a>=2)for(let c=0;c<2;++c)n=n.replace(/^([│ ].{2}[├│ ].{2}[^\n]+\n)(([│ ]).{2}[├└].{2}[^\n]*\n[│ ].{2}[│ ].{2}[├└]─)/gm,`$1$3 \u2502 +$2`).replace(/^│\n/,"");if(a>=3)throw new Error("Only the first two levels are accepted by treeUtils.emitTree");r.write(n)}function ICt(t){return typeof t=="string"?t.replace(/^\0[0-9]+\0/,""):t}var cCe,pCe=It(()=>{cCe=et(lCe());Qc()});var _R,hCe=It(()=>{_R=class{constructor(e){this.releaseFunction=e;this.map=new Map}addOrCreate(e,r){let s=this.map.get(e);if(typeof s<"u"){if(s.refCount<=0)throw new Error(`Race condition in RefCountedMap. While adding a new key the refCount is: ${s.refCount} for ${JSON.stringify(e)}`);return s.refCount++,{value:s.value,release:()=>this.release(e)}}else{let a=r();return this.map.set(e,{refCount:1,value:a}),{value:a,release:()=>this.release(e)}}}release(e){let r=this.map.get(e);if(!r)throw new Error(`Unbalanced calls to release. No known instances of: ${JSON.stringify(e)}`);let s=r.refCount;if(s<=0)throw new Error(`Unbalanced calls to release. Too many release vs alloc refcount would become: ${s-1} of ${JSON.stringify(e)}`);s==1?(this.map.delete(e),this.releaseFunction(r.value)):r.refCount--}}});function tS(t){let e=t.match(CCt);if(!e?.groups)throw new Error("Assertion failed: Expected the checksum to match the requested pattern");let r=e.groups.cacheVersion?parseInt(e.groups.cacheVersion):null;return{cacheKey:e.groups.cacheKey??null,cacheVersion:r,cacheSpec:e.groups.cacheSpec??null,hash:e.groups.hash}}var gCe,aG,lG,UR,Jr,CCt,cG=It(()=>{Ve();bt();bt();rA();gCe=ye("crypto"),aG=et(ye("fs"));hCe();Fc();I0();kc();Yo();lG=YE(process.env.YARN_CACHE_CHECKPOINT_OVERRIDE??process.env.YARN_CACHE_VERSION_OVERRIDE??9),UR=YE(process.env.YARN_CACHE_VERSION_OVERRIDE??10),Jr=class t{constructor(e,{configuration:r,immutable:s=r.get("enableImmutableCache"),check:a=!1}){this.markedFiles=new Set;this.mutexes=new Map;this.refCountedZipFsCache=new _R(e=>{e.discardAndClose()});this.cacheId=`-${(0,gCe.randomBytes)(8).toString("hex")}.tmp`;this.configuration=r,this.cwd=e,this.immutable=s,this.check=a;let{cacheSpec:n,cacheKey:c}=t.getCacheKey(r);this.cacheSpec=n,this.cacheKey=c}static async find(e,{immutable:r,check:s}={}){let a=new t(e.get("cacheFolder"),{configuration:e,immutable:r,check:s});return await a.setup(),a}static getCacheKey(e){let r=e.get("compressionLevel"),s=r!=="mixed"?`c${r}`:"";return{cacheKey:[UR,s].join(""),cacheSpec:s}}get mirrorCwd(){if(!this.configuration.get("enableMirror"))return null;let e=`${this.configuration.get("globalFolder")}/cache`;return e!==this.cwd?e:null}getVersionFilename(e){return`${nI(e)}-${this.cacheKey}.zip`}getChecksumFilename(e,r){let a=tS(r).hash.slice(0,10);return`${nI(e)}-${a}.zip`}isChecksumCompatible(e){if(e===null)return!1;let{cacheVersion:r,cacheSpec:s}=tS(e);if(r===null||r{let pe=new ps,Be=K.join(vt.root,Z8(e));return pe.mkdirSync(Be,{recursive:!0}),pe.writeJsonSync(K.join(Be,Er.manifest),{name:cn(e),mocked:!0}),pe},E=async(pe,{isColdHit:Be,controlPath:Ce=null})=>{if(Ce===null&&c.unstablePackages?.has(e.locatorHash))return{isValid:!0,hash:null};let g=r&&!Be?tS(r).cacheKey:this.cacheKey,we=!c.skipIntegrityCheck||!r?`${g}/${await SQ(pe)}`:r;if(Ce!==null){let fe=!c.skipIntegrityCheck||!r?`${this.cacheKey}/${await SQ(Ce)}`:r;if(we!==fe)throw new Yt(18,"The remote archive doesn't match the local checksum - has the local cache been corrupted?")}let Ee=null;switch(r!==null&&we!==r&&(this.check?Ee="throw":tS(r).cacheKey!==tS(we).cacheKey?Ee="update":Ee=this.configuration.get("checksumBehavior")),Ee){case null:case"update":return{isValid:!0,hash:we};case"ignore":return{isValid:!0,hash:r};case"reset":return{isValid:!1,hash:r};default:case"throw":throw new Yt(18,"The remote archive doesn't match the expected checksum")}},C=async pe=>{if(!n)throw new Error(`Cache check required but no loader configured for ${Yr(this.configuration,e)}`);let Be=await n(),Ce=Be.getRealPath();Be.saveAndClose(),await le.chmodPromise(Ce,420);let g=await E(pe,{controlPath:Ce,isColdHit:!1});if(!g.isValid)throw new Error("Assertion failed: Expected a valid checksum");return g.hash},S=async()=>{if(f===null||!await le.existsPromise(f)){let pe=await n(),Be=pe.getRealPath();return pe.saveAndClose(),{source:"loader",path:Be}}return{source:"mirror",path:f}},P=async()=>{if(!n)throw new Error(`Cache entry required but missing for ${Yr(this.configuration,e)}`);if(this.immutable)throw new Yt(56,`Cache entry required but missing for ${Yr(this.configuration,e)}`);let{path:pe,source:Be}=await S(),{hash:Ce}=await E(pe,{isColdHit:!0}),g=this.getLocatorPath(e,Ce),we=[];Be!=="mirror"&&f!==null&&we.push(async()=>{let fe=`${f}${this.cacheId}`;await le.copyFilePromise(pe,fe,aG.default.constants.COPYFILE_FICLONE),await le.chmodPromise(fe,420),await le.renamePromise(fe,f)}),(!c.mirrorWriteOnly||f===null)&&we.push(async()=>{let fe=`${g}${this.cacheId}`;await le.copyFilePromise(pe,fe,aG.default.constants.COPYFILE_FICLONE),await le.chmodPromise(fe,420),await le.renamePromise(fe,g)});let Ee=c.mirrorWriteOnly?f??g:g;return await Promise.all(we.map(fe=>fe())),[!1,Ee,Ce]},I=async()=>{let Be=(async()=>{let Ce=c.unstablePackages?.has(e.locatorHash),g=Ce||!r||this.isChecksumCompatible(r)?this.getLocatorPath(e,r):null,we=g!==null?this.markedFiles.has(g)||await p.existsPromise(g):!1,Ee=!!c.mockedPackages?.has(e.locatorHash)&&(!this.check||!we),fe=Ee||we,se=fe?s:a;if(se&&se(),fe){let X=null,De=g;if(!Ee)if(this.check)X=await C(De);else{let Re=await E(De,{isColdHit:!1});if(Re.isValid)X=Re.hash;else return P()}return[Ee,De,X]}else{if(this.immutable&&Ce)throw new Yt(56,`Cache entry required but missing for ${Yr(this.configuration,e)}; consider defining ${he.pretty(this.configuration,"supportedArchitectures",he.Type.CODE)} to cache packages for multiple systems`);return P()}})();this.mutexes.set(e.locatorHash,Be);try{return await Be}finally{this.mutexes.delete(e.locatorHash)}};for(let pe;pe=this.mutexes.get(e.locatorHash);)await pe;let[R,N,U]=await I();R||this.markedFiles.add(N);let W=()=>this.refCountedZipFsCache.addOrCreate(N,()=>R?h():new ps(N,{baseFs:p,readOnly:!0})),te,ie=new oE(()=>p3(()=>(te=W(),te.value),pe=>`Failed to open the cache entry for ${Yr(this.configuration,e)}: ${pe}`),K),Ae=new Hf(N,{baseFs:ie,pathUtils:K}),ce=()=>{te?.release()},me=c.unstablePackages?.has(e.locatorHash)?null:U;return[Ae,ce,me]}},CCt=/^(?:(?(?[0-9]+)(?.*))\/)?(?.*)$/});var HR,dCe=It(()=>{HR=(r=>(r[r.SCRIPT=0]="SCRIPT",r[r.SHELLCODE=1]="SHELLCODE",r))(HR||{})});var wCt,zI,uG=It(()=>{bt();Bc();Np();Yo();wCt=[[/^(git(?:\+(?:https|ssh))?:\/\/.*(?:\.git)?)#(.*)$/,(t,e,r,s)=>`${r}#commit=${s}`],[/^https:\/\/((?:[^/]+?)@)?codeload\.github\.com\/([^/]+\/[^/]+)\/tar\.gz\/([0-9a-f]+)$/,(t,e,r="",s,a)=>`https://${r}github.com/${s}.git#commit=${a}`],[/^https:\/\/((?:[^/]+?)@)?github\.com\/([^/]+\/[^/]+?)(?:\.git)?#([0-9a-f]+)$/,(t,e,r="",s,a)=>`https://${r}github.com/${s}.git#commit=${a}`],[/^https?:\/\/[^/]+\/(?:[^/]+\/)*(?:@.+(?:\/|(?:%2f)))?([^/]+)\/(?:-|download)\/\1-[^/]+\.tgz(?:#|$)/,t=>`npm:${t}`],[/^https:\/\/npm\.pkg\.github\.com\/download\/(?:@[^/]+)\/(?:[^/]+)\/(?:[^/]+)\/(?:[0-9a-f]+)(?:#|$)/,t=>`npm:${t}`],[/^https:\/\/npm\.fontawesome\.com\/(?:@[^/]+)\/([^/]+)\/-\/([^/]+)\/\1-\2.tgz(?:#|$)/,t=>`npm:${t}`],[/^https?:\/\/[^/]+\/.*\/(@[^/]+)\/([^/]+)\/-\/\1\/\2-(?:[.\d\w-]+)\.tgz(?:#|$)/,(t,e)=>kQ({protocol:"npm:",source:null,selector:t,params:{__archiveUrl:e}})],[/^[^/]+\.tgz#[0-9a-f]+$/,t=>`npm:${t}`]],zI=class{constructor(e){this.resolver=e;this.resolutions=null}async setup(e,{report:r}){let s=K.join(e.cwd,Er.lockfile);if(!le.existsSync(s))return;let a=await le.readFilePromise(s,"utf8"),n=ls(a);if(Object.hasOwn(n,"__metadata"))return;let c=this.resolutions=new Map;for(let f of Object.keys(n)){let p=ev(f);if(!p){r.reportWarning(14,`Failed to parse the string "${f}" into a proper descriptor`);continue}let h=ul(p.range)?On(p,`npm:${p.range}`):p,{version:E,resolved:C}=n[f];if(!C)continue;let S;for(let[I,R]of wCt){let N=C.match(I);if(N){S=R(E,...N);break}}if(!S){r.reportWarning(14,`${ri(e.configuration,h)}: Only some patterns can be imported from legacy lockfiles (not "${C}")`);continue}let P=h;try{let I=em(h.range),R=ev(I.selector,!0);R&&(P=R)}catch{}c.set(h.descriptorHash,Ys(P,S))}}supportsDescriptor(e,r){return this.resolutions?this.resolutions.has(e.descriptorHash):!1}supportsLocator(e,r){return!1}shouldPersistResolution(e,r){throw new Error("Assertion failed: This resolver doesn't support resolving locators to packages")}bindDescriptor(e,r,s){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,s){if(!this.resolutions)throw new Error("Assertion failed: The resolution store should have been setup");let a=this.resolutions.get(e.descriptorHash);if(!a)throw new Error("Assertion failed: The resolution should have been registered");let n=V8(a),c=s.project.configuration.normalizeDependency(n);return await this.resolver.getCandidates(c,r,s)}async getSatisfying(e,r,s,a){let[n]=await this.getCandidates(e,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){throw new Error("Assertion failed: This resolver doesn't support resolving locators to packages")}}});var uA,mCe=It(()=>{Fc();Fv();Qc();uA=class extends ho{constructor({configuration:r,stdout:s,suggestInstall:a=!0}){super();this.errorCount=0;YB(this,{configuration:r}),this.configuration=r,this.stdout=s,this.suggestInstall=a}static async start(r,s){let a=new this(r);try{await s(a)}catch(n){a.reportExceptionOnce(n)}finally{await a.finalize()}return a}hasErrors(){return this.errorCount>0}exitCode(){return this.hasErrors()?1:0}reportCacheHit(r){}reportCacheMiss(r){}startSectionSync(r,s){return s()}async startSectionPromise(r,s){return await s()}startTimerSync(r,s,a){return(typeof s=="function"?s:a)()}async startTimerPromise(r,s,a){return await(typeof s=="function"?s:a)()}reportSeparator(){}reportInfo(r,s){}reportWarning(r,s){}reportError(r,s){this.errorCount+=1,this.stdout.write(`${Ut(this.configuration,"\u27A4","redBright")} ${this.formatNameWithHyperlink(r)}: ${s} +`)}reportProgress(r){return{...Promise.resolve().then(async()=>{for await(let{}of r);}),stop:()=>{}}}reportJson(r){}reportFold(r,s){}async finalize(){this.errorCount>0&&(this.stdout.write(` +`),this.stdout.write(`${Ut(this.configuration,"\u27A4","redBright")} Errors happened when preparing the environment required to run this command. +`),this.suggestInstall&&this.stdout.write(`${Ut(this.configuration,"\u27A4","redBright")} This might be caused by packages being missing from the lockfile, in which case running "yarn install" might help. +`))}formatNameWithHyperlink(r){return m6(r,{configuration:this.configuration,json:!1})}}});var ZI,fG=It(()=>{Yo();ZI=class{constructor(e){this.resolver=e}supportsDescriptor(e,r){return!!(r.project.storedResolutions.get(e.descriptorHash)||r.project.originalPackages.has(bQ(e).locatorHash))}supportsLocator(e,r){return!!(r.project.originalPackages.has(e.locatorHash)&&!r.project.lockfileNeedsRefresh)}shouldPersistResolution(e,r){throw new Error("The shouldPersistResolution method shouldn't be called on the lockfile resolver, which would always answer yes")}bindDescriptor(e,r,s){return e}getResolutionDependencies(e,r){return this.resolver.getResolutionDependencies(e,r)}async getCandidates(e,r,s){let a=s.project.storedResolutions.get(e.descriptorHash);if(a){let c=s.project.originalPackages.get(a);if(c)return[c]}let n=s.project.originalPackages.get(bQ(e).locatorHash);if(n)return[n];throw new Error("Resolution expected from the lockfile data")}async getSatisfying(e,r,s,a){let[n]=await this.getCandidates(e,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){let s=r.project.originalPackages.get(e.locatorHash);if(!s)throw new Error("The lockfile resolver isn't meant to resolve packages - they should already have been stored into a cache");return s}}});function Xp(){}function BCt(t,e,r,s,a){for(var n=0,c=e.length,f=0,p=0;nP.length?R:P}),h.value=t.join(E)}else h.value=t.join(r.slice(f,f+h.count));f+=h.count,h.added||(p+=h.count)}}var S=e[c-1];return c>1&&typeof S.value=="string"&&(S.added||S.removed)&&t.equals("",S.value)&&(e[c-2].value+=S.value,e.pop()),e}function vCt(t){return{newPos:t.newPos,components:t.components.slice(0)}}function SCt(t,e){if(typeof t=="function")e.callback=t;else if(t)for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r]);return e}function ICe(t,e,r){return r=SCt(r,{ignoreWhitespace:!0}),dG.diff(t,e,r)}function DCt(t,e,r){return mG.diff(t,e,r)}function jR(t){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?jR=function(e){return typeof e}:jR=function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},jR(t)}function AG(t){return xCt(t)||kCt(t)||QCt(t)||TCt()}function xCt(t){if(Array.isArray(t))return pG(t)}function kCt(t){if(typeof Symbol<"u"&&Symbol.iterator in Object(t))return Array.from(t)}function QCt(t,e){if(t){if(typeof t=="string")return pG(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);if(r==="Object"&&t.constructor&&(r=t.constructor.name),r==="Map"||r==="Set")return Array.from(t);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return pG(t,e)}}function pG(t,e){(e==null||e>t.length)&&(e=t.length);for(var r=0,s=new Array(e);r"u"&&(c.context=4);var f=DCt(r,s,c);if(!f)return;f.push({value:"",lines:[]});function p(U){return U.map(function(W){return" "+W})}for(var h=[],E=0,C=0,S=[],P=1,I=1,R=function(W){var te=f[W],ie=te.lines||te.value.replace(/\n$/,"").split(` +`);if(te.lines=ie,te.added||te.removed){var Ae;if(!E){var ce=f[W-1];E=P,C=I,ce&&(S=c.context>0?p(ce.lines.slice(-c.context)):[],E-=S.length,C-=S.length)}(Ae=S).push.apply(Ae,AG(ie.map(function(fe){return(te.added?"+":"-")+fe}))),te.added?I+=ie.length:P+=ie.length}else{if(E)if(ie.length<=c.context*2&&W=f.length-2&&ie.length<=c.context){var g=/\n$/.test(r),we=/\n$/.test(s),Ee=ie.length==0&&S.length>Ce.oldLines;!g&&Ee&&r.length>0&&S.splice(Ce.oldLines,0,"\\ No newline at end of file"),(!g&&!Ee||!we)&&S.push("\\ No newline at end of file")}h.push(Ce),E=0,C=0,S=[]}P+=ie.length,I+=ie.length}},N=0;N{Xp.prototype={diff:function(e,r){var s=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},a=s.callback;typeof s=="function"&&(a=s,s={}),this.options=s;var n=this;function c(R){return a?(setTimeout(function(){a(void 0,R)},0),!0):R}e=this.castInput(e),r=this.castInput(r),e=this.removeEmpty(this.tokenize(e)),r=this.removeEmpty(this.tokenize(r));var f=r.length,p=e.length,h=1,E=f+p;s.maxEditLength&&(E=Math.min(E,s.maxEditLength));var C=[{newPos:-1,components:[]}],S=this.extractCommon(C[0],r,e,0);if(C[0].newPos+1>=f&&S+1>=p)return c([{value:this.join(r),count:r.length}]);function P(){for(var R=-1*h;R<=h;R+=2){var N=void 0,U=C[R-1],W=C[R+1],te=(W?W.newPos:0)-R;U&&(C[R-1]=void 0);var ie=U&&U.newPos+1=f&&te+1>=p)return c(BCt(n,N.components,r,e,n.useLongestToken));C[R]=N}h++}if(a)(function R(){setTimeout(function(){if(h>E)return a();P()||R()},0)})();else for(;h<=E;){var I=P();if(I)return I}},pushComponent:function(e,r,s){var a=e[e.length-1];a&&a.added===r&&a.removed===s?e[e.length-1]={count:a.count+1,added:r,removed:s}:e.push({count:1,added:r,removed:s})},extractCommon:function(e,r,s,a){for(var n=r.length,c=s.length,f=e.newPos,p=f-a,h=0;f+1"u"?r:c}:s;return typeof t=="string"?t:JSON.stringify(hG(t,null,null,a),a," ")};rS.equals=function(t,e){return Xp.prototype.equals.call(rS,t.replace(/,([\r\n])/g,"$1"),e.replace(/,([\r\n])/g,"$1"))};gG=new Xp;gG.tokenize=function(t){return t.slice()};gG.join=gG.removeEmpty=function(t){return t}});var BCe=L((Str,wCe)=>{var FCt=xc(),NCt=aI(),OCt=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,LCt=/^\w*$/;function MCt(t,e){if(FCt(t))return!1;var r=typeof t;return r=="number"||r=="symbol"||r=="boolean"||t==null||NCt(t)?!0:LCt.test(t)||!OCt.test(t)||e!=null&&t in Object(e)}wCe.exports=MCt});var DCe=L((Dtr,SCe)=>{var vCe=kk(),_Ct="Expected a function";function EG(t,e){if(typeof t!="function"||e!=null&&typeof e!="function")throw new TypeError(_Ct);var r=function(){var s=arguments,a=e?e.apply(this,s):s[0],n=r.cache;if(n.has(a))return n.get(a);var c=t.apply(this,s);return r.cache=n.set(a,c)||n,c};return r.cache=new(EG.Cache||vCe),r}EG.Cache=vCe;SCe.exports=EG});var PCe=L((btr,bCe)=>{var UCt=DCe(),HCt=500;function jCt(t){var e=UCt(t,function(s){return r.size===HCt&&r.clear(),s}),r=e.cache;return e}bCe.exports=jCt});var IG=L((Ptr,xCe)=>{var qCt=PCe(),GCt=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,WCt=/\\(\\)?/g,YCt=qCt(function(t){var e=[];return t.charCodeAt(0)===46&&e.push(""),t.replace(GCt,function(r,s,a,n){e.push(a?n.replace(WCt,"$1"):s||r)}),e});xCe.exports=YCt});var wm=L((xtr,kCe)=>{var VCt=xc(),KCt=BCe(),JCt=IG(),zCt=Tv();function ZCt(t,e){return VCt(t)?t:KCt(t,e)?[t]:JCt(zCt(t))}kCe.exports=ZCt});var XI=L((ktr,QCe)=>{var XCt=aI(),$Ct=1/0;function ewt(t){if(typeof t=="string"||XCt(t))return t;var e=t+"";return e=="0"&&1/t==-$Ct?"-0":e}QCe.exports=ewt});var qR=L((Qtr,TCe)=>{var twt=wm(),rwt=XI();function nwt(t,e){e=twt(e,t);for(var r=0,s=e.length;t!=null&&r{var iwt=Yk(),swt=wm(),owt=NB(),RCe=Wl(),awt=XI();function lwt(t,e,r,s){if(!RCe(t))return t;e=swt(e,t);for(var a=-1,n=e.length,c=n-1,f=t;f!=null&&++a{var cwt=qR(),uwt=CG(),fwt=wm();function Awt(t,e,r){for(var s=-1,a=e.length,n={};++s{function pwt(t,e){return t!=null&&e in Object(t)}LCe.exports=pwt});var wG=L((Ntr,_Ce)=>{var hwt=wm(),gwt=TB(),dwt=xc(),mwt=NB(),ywt=Nk(),Ewt=XI();function Iwt(t,e,r){e=hwt(e,t);for(var s=-1,a=e.length,n=!1;++s{var Cwt=MCe(),wwt=wG();function Bwt(t,e){return t!=null&&wwt(t,e,Cwt)}UCe.exports=Bwt});var qCe=L((Ltr,jCe)=>{var vwt=OCe(),Swt=HCe();function Dwt(t,e){return vwt(t,e,function(r,s){return Swt(t,s)})}jCe.exports=Dwt});var VCe=L((Mtr,YCe)=>{var GCe=Yd(),bwt=TB(),Pwt=xc(),WCe=GCe?GCe.isConcatSpreadable:void 0;function xwt(t){return Pwt(t)||bwt(t)||!!(WCe&&t&&t[WCe])}YCe.exports=xwt});var zCe=L((_tr,JCe)=>{var kwt=Rk(),Qwt=VCe();function KCe(t,e,r,s,a){var n=-1,c=t.length;for(r||(r=Qwt),a||(a=[]);++n0&&r(f)?e>1?KCe(f,e-1,r,s,a):kwt(a,f):s||(a[a.length]=f)}return a}JCe.exports=KCe});var XCe=L((Utr,ZCe)=>{var Twt=zCe();function Rwt(t){var e=t==null?0:t.length;return e?Twt(t,1):[]}ZCe.exports=Rwt});var BG=L((Htr,$Ce)=>{var Fwt=XCe(),Nwt=i3(),Owt=s3();function Lwt(t){return Owt(Nwt(t,void 0,Fwt),t+"")}$Ce.exports=Lwt});var vG=L((jtr,ewe)=>{var Mwt=qCe(),_wt=BG(),Uwt=_wt(function(t,e){return t==null?{}:Mwt(t,e)});ewe.exports=Uwt});var GR,twe=It(()=>{Fc();GR=class{constructor(e){this.resolver=e}supportsDescriptor(e,r){return this.resolver.supportsDescriptor(e,r)}supportsLocator(e,r){return this.resolver.supportsLocator(e,r)}shouldPersistResolution(e,r){return this.resolver.shouldPersistResolution(e,r)}bindDescriptor(e,r,s){return this.resolver.bindDescriptor(e,r,s)}getResolutionDependencies(e,r){return this.resolver.getResolutionDependencies(e,r)}async getCandidates(e,r,s){throw new Yt(20,`This package doesn't seem to be present in your lockfile; run "yarn install" to update the lockfile`)}async getSatisfying(e,r,s,a){throw new Yt(20,`This package doesn't seem to be present in your lockfile; run "yarn install" to update the lockfile`)}async resolve(e,r){throw new Yt(20,`This package doesn't seem to be present in your lockfile; run "yarn install" to update the lockfile`)}}});var Wi,SG=It(()=>{Fc();Wi=class extends ho{reportCacheHit(e){}reportCacheMiss(e){}startSectionSync(e,r){return r()}async startSectionPromise(e,r){return await r()}startTimerSync(e,r,s){return(typeof r=="function"?r:s)()}async startTimerPromise(e,r,s){return await(typeof r=="function"?r:s)()}reportSeparator(){}reportInfo(e,r){}reportWarning(e,r){}reportError(e,r){}reportProgress(e){return{...Promise.resolve().then(async()=>{for await(let{}of e);}),stop:()=>{}}}reportJson(e){}reportFold(e,r){}async finalize(){}}});var rwe,$I,DG=It(()=>{bt();rwe=et(BQ());oI();tm();Qc();I0();Np();Yo();$I=class{constructor(e,{project:r}){this.workspacesCwds=new Set;this.project=r,this.cwd=e}async setup(){this.manifest=await Ht.tryFind(this.cwd)??new Ht,this.relativeCwd=K.relative(this.project.cwd,this.cwd)||vt.dot;let e=this.manifest.name?this.manifest.name:ba(null,`${this.computeCandidateName()}-${us(this.relativeCwd).substring(0,6)}`);this.anchoredDescriptor=On(e,`${yi.protocol}${this.relativeCwd}`),this.anchoredLocator=Ys(e,`${yi.protocol}${this.relativeCwd}`);let r=this.manifest.workspaceDefinitions.map(({pattern:a})=>a);if(r.length===0)return;let s=await(0,rwe.default)(r,{cwd:ue.fromPortablePath(this.cwd),onlyDirectories:!0,ignore:["**/node_modules","**/.git","**/.yarn"]});s.sort(),await s.reduce(async(a,n)=>{let c=K.resolve(this.cwd,ue.toPortablePath(n)),f=await le.existsPromise(K.join(c,"package.json"));await a,f&&this.workspacesCwds.add(c)},Promise.resolve())}get anchoredPackage(){let e=this.project.storedPackages.get(this.anchoredLocator.locatorHash);if(!e)throw new Error(`Assertion failed: Expected workspace ${rv(this.project.configuration,this)} (${Ut(this.project.configuration,K.join(this.cwd,Er.manifest),Ct.PATH)}) to have been resolved. Run "yarn install" to update the lockfile`);return e}accepts(e){let r=e.indexOf(":"),s=r!==-1?e.slice(0,r+1):null,a=r!==-1?e.slice(r+1):e;if(s===yi.protocol&&K.normalize(a)===this.relativeCwd||s===yi.protocol&&(a==="*"||a==="^"||a==="~"))return!0;let n=ul(a);return n?s===yi.protocol?n.test(this.manifest.version??"0.0.0"):this.project.configuration.get("enableTransparentWorkspaces")&&this.manifest.version!==null?n.test(this.manifest.version):!1:!1}computeCandidateName(){return this.cwd===this.project.cwd?"root-workspace":`${K.basename(this.cwd)}`||"unnamed-workspace"}getRecursiveWorkspaceDependencies({dependencies:e=Ht.hardDependencies}={}){let r=new Set,s=a=>{for(let n of e)for(let c of a.manifest[n].values()){let f=this.project.tryWorkspaceByDescriptor(c);f===null||r.has(f)||(r.add(f),s(f))}};return s(this),r}getRecursiveWorkspaceDependents({dependencies:e=Ht.hardDependencies}={}){let r=new Set,s=a=>{for(let n of this.project.workspaces)e.some(f=>[...n.manifest[f].values()].some(p=>{let h=this.project.tryWorkspaceByDescriptor(p);return h!==null&&$B(h.anchoredLocator,a.anchoredLocator)}))&&!r.has(n)&&(r.add(n),s(n))};return s(this),r}getRecursiveWorkspaceChildren(){let e=new Set([this]);for(let r of e)for(let s of r.workspacesCwds){let a=this.project.workspacesByCwd.get(s);a&&e.add(a)}return e.delete(this),Array.from(e)}async persistManifest(){let e={};this.manifest.exportTo(e);let r=K.join(this.cwd,Ht.fileName),s=`${JSON.stringify(e,null,this.manifest.indent)} +`;await le.changeFilePromise(r,s,{automaticNewlines:!0}),this.manifest.raw=e}}});function Ywt({project:t,allDescriptors:e,allResolutions:r,allPackages:s,accessibleLocators:a=new Set,optionalBuilds:n=new Set,peerRequirements:c=new Map,peerWarnings:f=[],peerRequirementNodes:p=new Map,volatileDescriptors:h=new Set}){let E=new Map,C=[],S=new Map,P=new Map,I=new Map,R=new Map,N=new Map,U=new Map(t.workspaces.map(ce=>{let me=ce.anchoredLocator.locatorHash,pe=s.get(me);if(typeof pe>"u")throw new Error("Assertion failed: The workspace should have an associated package");return[me,zB(pe)]})),W=()=>{let ce=le.mktempSync(),me=K.join(ce,"stacktrace.log"),pe=String(C.length+1).length,Be=C.map((Ce,g)=>`${`${g+1}.`.padStart(pe," ")} ${cl(Ce)} +`).join("");throw le.writeFileSync(me,Be),le.detachTemp(ce),new Yt(45,`Encountered a stack overflow when resolving peer dependencies; cf ${ue.fromPortablePath(me)}`)},te=ce=>{let me=r.get(ce.descriptorHash);if(typeof me>"u")throw new Error("Assertion failed: The resolution should have been registered");let pe=s.get(me);if(!pe)throw new Error("Assertion failed: The package could not be found");return pe},ie=(ce,me,pe,{top:Be,optional:Ce})=>{C.length>1e3&&W(),C.push(me);let g=Ae(ce,me,pe,{top:Be,optional:Ce});return C.pop(),g},Ae=(ce,me,pe,{top:Be,optional:Ce})=>{if(Ce||n.delete(me.locatorHash),a.has(me.locatorHash))return;a.add(me.locatorHash);let g=s.get(me.locatorHash);if(!g)throw new Error(`Assertion failed: The package (${Yr(t.configuration,me)}) should have been registered`);let we=new Set,Ee=new Map,fe=[],se=[],X=[],De=[];for(let Re of Array.from(g.dependencies.values())){if(g.peerDependencies.has(Re.identHash)&&g.locatorHash!==Be)continue;if(Tp(Re))throw new Error("Assertion failed: Virtual packages shouldn't be encountered when virtualizing a branch");h.delete(Re.descriptorHash);let gt=Ce;if(!gt){let ke=g.dependenciesMeta.get(cn(Re));if(typeof ke<"u"){let it=ke.get(null);typeof it<"u"&&it.optional&&(gt=!0)}}let j=r.get(Re.descriptorHash);if(!j)throw new Error(`Assertion failed: The resolution (${ri(t.configuration,Re)}) should have been registered`);let rt=U.get(j)||s.get(j);if(!rt)throw new Error(`Assertion failed: The package (${j}, resolved from ${ri(t.configuration,Re)}) should have been registered`);if(rt.peerDependencies.size===0){ie(Re,rt,new Map,{top:Be,optional:gt});continue}let Fe,Ne,Pe=new Set,Ye=new Map;fe.push(()=>{Fe=J8(Re,me.locatorHash),Ne=z8(rt,me.locatorHash),g.dependencies.set(Re.identHash,Fe),r.set(Fe.descriptorHash,Ne.locatorHash),e.set(Fe.descriptorHash,Fe),s.set(Ne.locatorHash,Ne),xp(R,Ne.locatorHash).add(Fe.descriptorHash),we.add(Ne.locatorHash)}),se.push(()=>{N.set(Ne.locatorHash,Ye);for(let ke of Ne.peerDependencies.values()){let _e=Vl(Ee,ke.identHash,()=>{let x=pe.get(ke.identHash)??null,w=g.dependencies.get(ke.identHash);return!w&&XB(me,ke)&&(ce.identHash===me.identHash?w=ce:(w=On(me,ce.range),e.set(w.descriptorHash,w),r.set(w.descriptorHash,me.locatorHash),h.delete(w.descriptorHash),x=null)),w||(w=On(ke,"missing:")),{subject:me,ident:ke,provided:w,root:!x,requests:new Map,hash:`p${us(me.locatorHash,ke.identHash).slice(0,5)}`}}).provided;if(_e.range==="missing:"&&Ne.dependencies.has(ke.identHash)){Ne.peerDependencies.delete(ke.identHash);continue}if(Ye.set(ke.identHash,{requester:Ne,descriptor:ke,meta:Ne.peerDependenciesMeta.get(cn(ke)),children:new Map}),Ne.dependencies.set(ke.identHash,_e),Tp(_e)){let x=r.get(_e.descriptorHash);xp(I,x).add(Ne.locatorHash)}S.set(_e.identHash,_e),_e.range==="missing:"&&Pe.add(_e.identHash)}Ne.dependencies=new Map(Ws(Ne.dependencies,([ke,it])=>cn(it)))}),X.push(()=>{if(!s.has(Ne.locatorHash))return;let ke=E.get(rt.locatorHash);typeof ke=="number"&&ke>=2&&W();let it=E.get(rt.locatorHash),_e=typeof it<"u"?it+1:1;E.set(rt.locatorHash,_e),ie(Fe,Ne,Ye,{top:Be,optional:gt}),E.set(rt.locatorHash,_e-1)}),De.push(()=>{let ke=r.get(Fe.descriptorHash);if(typeof ke>"u")throw new Error("Assertion failed: Expected the descriptor to be registered");let it=N.get(ke);if(typeof it>"u")throw new Error("Assertion failed: Expected the peer requests to be registered");for(let _e of Ee.values()){let x=it.get(_e.ident.identHash);x&&(_e.requests.set(Fe.descriptorHash,x),p.set(_e.hash,_e),_e.root||pe.get(_e.ident.identHash)?.children.set(Fe.descriptorHash,x))}if(s.has(Ne.locatorHash))for(let _e of Pe)Ne.dependencies.delete(_e)})}for(let Re of[...fe,...se])Re();for(let Re of we){we.delete(Re);let gt=s.get(Re),j=us(rI(gt).locatorHash,...Array.from(gt.dependencies.values(),Pe=>{let Ye=Pe.range!=="missing:"?r.get(Pe.descriptorHash):"missing:";if(typeof Ye>"u")throw new Error(`Assertion failed: Expected the resolution for ${ri(t.configuration,Pe)} to have been registered`);return Ye===Be?`${Ye} (top)`:Ye})),rt=P.get(j);if(typeof rt>"u"){P.set(j,gt);continue}let Fe=xp(R,rt.locatorHash);for(let Pe of R.get(gt.locatorHash)??[])r.set(Pe,rt.locatorHash),Fe.add(Pe);s.delete(gt.locatorHash),a.delete(gt.locatorHash),we.delete(gt.locatorHash);let Ne=I.get(gt.locatorHash);if(Ne!==void 0){let Pe=xp(I,rt.locatorHash);for(let Ye of Ne)Pe.add(Ye),we.add(Ye)}}for(let Re of[...X,...De])Re()};for(let ce of t.workspaces){let me=ce.anchoredLocator;h.delete(ce.anchoredDescriptor.descriptorHash),ie(ce.anchoredDescriptor,me,new Map,{top:me.locatorHash,optional:!1})}for(let ce of p.values()){if(!ce.root)continue;let me=s.get(ce.subject.locatorHash);if(typeof me>"u")continue;for(let Be of ce.requests.values()){let Ce=`p${us(ce.subject.locatorHash,cn(ce.ident),Be.requester.locatorHash).slice(0,5)}`;c.set(Ce,{subject:ce.subject.locatorHash,requested:ce.ident,rootRequester:Be.requester.locatorHash,allRequesters:Array.from(nv(Be),g=>g.requester.locatorHash)})}let pe=[...nv(ce)];if(ce.provided.range!=="missing:"){let Be=te(ce.provided),Ce=Be.version??"0.0.0",g=Ee=>{if(Ee.startsWith(yi.protocol)){if(!t.tryWorkspaceByLocator(Be))return null;Ee=Ee.slice(yi.protocol.length),(Ee==="^"||Ee==="~")&&(Ee="*")}return Ee},we=!0;for(let Ee of pe){let fe=g(Ee.descriptor.range);if(fe===null){we=!1;continue}if(!eA(Ce,fe)){we=!1;let se=`p${us(ce.subject.locatorHash,cn(ce.ident),Ee.requester.locatorHash).slice(0,5)}`;f.push({type:1,subject:me,requested:ce.ident,requester:Ee.requester,version:Ce,hash:se,requirementCount:pe.length})}}if(!we){let Ee=pe.map(fe=>g(fe.descriptor.range));f.push({type:3,node:ce,range:Ee.includes(null)?null:$8(Ee),hash:ce.hash})}}else{let Be=!0;for(let Ce of pe)if(!Ce.meta?.optional){Be=!1;let g=`p${us(ce.subject.locatorHash,cn(ce.ident),Ce.requester.locatorHash).slice(0,5)}`;f.push({type:0,subject:me,requested:ce.ident,requester:Ce.requester,hash:g})}Be||f.push({type:2,node:ce,hash:ce.hash})}}}function*Vwt(t){let e=new Map;if("children"in t)e.set(t,t);else for(let r of t.requests.values())e.set(r,r);for(let[r,s]of e){yield{request:r,root:s};for(let a of r.children.values())e.has(a)||e.set(a,s)}}function Kwt(t,e){let r=[],s=[],a=!1;for(let n of t.peerWarnings)if(!(n.type===1||n.type===0)){if(!t.tryWorkspaceByLocator(n.node.subject)){a=!0;continue}if(n.type===3){let c=t.storedResolutions.get(n.node.provided.descriptorHash);if(typeof c>"u")throw new Error("Assertion failed: Expected the descriptor to be registered");let f=t.storedPackages.get(c);if(typeof f>"u")throw new Error("Assertion failed: Expected the package to be registered");let p=p0(Vwt(n.node),({request:C,root:S})=>eA(f.version??"0.0.0",C.descriptor.range)?p0.skip:C===S?$i(t.configuration,C.requester):`${$i(t.configuration,C.requester)} (via ${$i(t.configuration,S.requester)})`),h=[...nv(n.node)].length>1?"and other dependencies request":"requests",E=n.range?iI(t.configuration,n.range):Ut(t.configuration,"but they have non-overlapping ranges!","redBright");r.push(`${$i(t.configuration,n.node.ident)} is listed by your project with version ${tv(t.configuration,f.version??"0.0.0")} (${Ut(t.configuration,n.hash,Ct.CODE)}), which doesn't satisfy what ${p} ${h} (${E}).`)}if(n.type===2){let c=n.node.requests.size>1?" and other dependencies":"";s.push(`${Yr(t.configuration,n.node.subject)} doesn't provide ${$i(t.configuration,n.node.ident)} (${Ut(t.configuration,n.hash,Ct.CODE)}), requested by ${$i(t.configuration,n.node.requests.values().next().value.requester)}${c}.`)}}e.startSectionSync({reportFooter:()=>{e.reportWarning(86,`Some peer dependencies are incorrectly met by your project; run ${Ut(t.configuration,"yarn explain peer-requirements ",Ct.CODE)} for details, where ${Ut(t.configuration,"",Ct.CODE)} is the six-letter p-prefixed code.`)},skipIfEmpty:!0},()=>{for(let n of Ws(r,c=>KE.default(c)))e.reportWarning(60,n);for(let n of Ws(s,c=>KE.default(c)))e.reportWarning(2,n)}),a&&e.reportWarning(86,`Some peer dependencies are incorrectly met by dependencies; run ${Ut(t.configuration,"yarn explain peer-requirements",Ct.CODE)} for details.`)}var WR,YR,VR,swe,xG,PG,kG,KR,Hwt,jwt,nwe,qwt,Gwt,Wwt,ec,bG,JR,iwe,Tt,owe=It(()=>{bt();bt();Bc();Wt();WR=ye("crypto");yG();YR=et(vG()),VR=et(Md()),swe=et(fi()),xG=ye("util"),PG=et(ye("v8")),kG=et(ye("zlib"));cG();Cv();uG();fG();oI();iH();Fc();twe();Fv();SG();tm();DG();LQ();Qc();I0();kc();gT();w6();Np();Yo();KR=YE(process.env.YARN_LOCKFILE_VERSION_OVERRIDE??8),Hwt=3,jwt=/ *, */g,nwe=/\/$/,qwt=32,Gwt=(0,xG.promisify)(kG.default.gzip),Wwt=(0,xG.promisify)(kG.default.gunzip),ec=(r=>(r.UpdateLockfile="update-lockfile",r.SkipBuild="skip-build",r))(ec||{}),bG={restoreLinkersCustomData:["linkersCustomData"],restoreResolutions:["accessibleLocators","conditionalLocators","disabledLocators","optionalBuilds","storedDescriptors","storedResolutions","storedPackages","lockFileChecksum"],restoreBuildState:["skippedBuilds","storedBuildState"]},JR=(a=>(a[a.NotProvided=0]="NotProvided",a[a.NotCompatible=1]="NotCompatible",a[a.NodeNotProvided=2]="NodeNotProvided",a[a.NodeNotCompatible=3]="NodeNotCompatible",a))(JR||{}),iwe=t=>us(`${Hwt}`,t),Tt=class t{constructor(e,{configuration:r}){this.resolutionAliases=new Map;this.workspaces=[];this.workspacesByCwd=new Map;this.workspacesByIdent=new Map;this.storedResolutions=new Map;this.storedDescriptors=new Map;this.storedPackages=new Map;this.storedChecksums=new Map;this.storedBuildState=new Map;this.accessibleLocators=new Set;this.conditionalLocators=new Set;this.disabledLocators=new Set;this.originalPackages=new Map;this.optionalBuilds=new Set;this.skippedBuilds=new Set;this.lockfileLastVersion=null;this.lockfileNeedsRefresh=!1;this.peerRequirements=new Map;this.peerWarnings=[];this.peerRequirementNodes=new Map;this.linkersCustomData=new Map;this.lockFileChecksum=null;this.installStateChecksum=null;this.configuration=r,this.cwd=e}static async find(e,r){if(!e.projectCwd)throw new nt(`No project found in ${r}`);let s=e.projectCwd,a=r,n=null;for(;n!==e.projectCwd;){if(n=a,le.existsSync(K.join(n,Er.manifest))){s=n;break}a=K.dirname(n)}let c=new t(e.projectCwd,{configuration:e});ze.telemetry?.reportProject(c.cwd),await c.setupResolutions(),await c.setupWorkspaces(),ze.telemetry?.reportWorkspaceCount(c.workspaces.length),ze.telemetry?.reportDependencyCount(c.workspaces.reduce((I,R)=>I+R.manifest.dependencies.size+R.manifest.devDependencies.size,0));let f=c.tryWorkspaceByCwd(s);if(f)return{project:c,workspace:f,locator:f.anchoredLocator};let p=await c.findLocatorForLocation(`${s}/`,{strict:!0});if(p)return{project:c,locator:p,workspace:null};let h=Ut(e,c.cwd,Ct.PATH),E=Ut(e,K.relative(c.cwd,s),Ct.PATH),C=`- If ${h} isn't intended to be a project, remove any yarn.lock and/or package.json file there.`,S=`- If ${h} is intended to be a project, it might be that you forgot to list ${E} in its workspace configuration.`,P=`- Finally, if ${h} is fine and you intend ${E} to be treated as a completely separate project (not even a workspace), create an empty yarn.lock file in it.`;throw new nt(`The nearest package directory (${Ut(e,s,Ct.PATH)}) doesn't seem to be part of the project declared in ${Ut(e,c.cwd,Ct.PATH)}. + +${[C,S,P].join(` +`)}`)}async setupResolutions(){this.storedResolutions=new Map,this.storedDescriptors=new Map,this.storedPackages=new Map,this.lockFileChecksum=null;let e=K.join(this.cwd,Er.lockfile),r=this.configuration.get("defaultLanguageName");if(le.existsSync(e)){let s=await le.readFilePromise(e,"utf8");this.lockFileChecksum=iwe(s);let a=ls(s);if(a.__metadata){let n=a.__metadata.version,c=a.__metadata.cacheKey;this.lockfileLastVersion=n,this.lockfileNeedsRefresh=n"u")throw new Error(`Assertion failed: Expected the lockfile entry to have a resolution field (${f})`);let h=Rp(p.resolution,!0),E=new Ht;E.load(p,{yamlCompatibilityMode:!0});let C=E.version,S=E.languageName||r,P=p.linkType.toUpperCase(),I=p.conditions??null,R=E.dependencies,N=E.peerDependencies,U=E.dependenciesMeta,W=E.peerDependenciesMeta,te=E.bin;if(p.checksum!=null){let Ae=typeof c<"u"&&!p.checksum.includes("/")?`${c}/${p.checksum}`:p.checksum;this.storedChecksums.set(h.locatorHash,Ae)}let ie={...h,version:C,languageName:S,linkType:P,conditions:I,dependencies:R,peerDependencies:N,dependenciesMeta:U,peerDependenciesMeta:W,bin:te};this.originalPackages.set(ie.locatorHash,ie);for(let Ae of f.split(jwt)){let ce=C0(Ae);n<=6&&(ce=this.configuration.normalizeDependency(ce),ce=On(ce,ce.range.replace(/^patch:[^@]+@(?!npm(:|%3A))/,"$1npm%3A"))),this.storedDescriptors.set(ce.descriptorHash,ce),this.storedResolutions.set(ce.descriptorHash,h.locatorHash)}}}else s.includes("yarn lockfile v1")&&(this.lockfileLastVersion=-1)}}async setupWorkspaces(){this.workspaces=[],this.workspacesByCwd=new Map,this.workspacesByIdent=new Map;let e=new Set,r=(0,VR.default)(4),s=async(a,n)=>{if(e.has(n))return a;e.add(n);let c=new $I(n,{project:this});await r(()=>c.setup());let f=a.then(()=>{this.addWorkspace(c)});return Array.from(c.workspacesCwds).reduce(s,f)};await s(Promise.resolve(),this.cwd)}addWorkspace(e){let r=this.workspacesByIdent.get(e.anchoredLocator.identHash);if(typeof r<"u")throw new Error(`Duplicate workspace name ${$i(this.configuration,e.anchoredLocator)}: ${ue.fromPortablePath(e.cwd)} conflicts with ${ue.fromPortablePath(r.cwd)}`);this.workspaces.push(e),this.workspacesByCwd.set(e.cwd,e),this.workspacesByIdent.set(e.anchoredLocator.identHash,e)}get topLevelWorkspace(){return this.getWorkspaceByCwd(this.cwd)}tryWorkspaceByCwd(e){K.isAbsolute(e)||(e=K.resolve(this.cwd,e)),e=K.normalize(e).replace(/\/+$/,"");let r=this.workspacesByCwd.get(e);return r||null}getWorkspaceByCwd(e){let r=this.tryWorkspaceByCwd(e);if(!r)throw new Error(`Workspace not found (${e})`);return r}tryWorkspaceByFilePath(e){let r=null;for(let s of this.workspaces)K.relative(s.cwd,e).startsWith("../")||r&&r.cwd.length>=s.cwd.length||(r=s);return r||null}getWorkspaceByFilePath(e){let r=this.tryWorkspaceByFilePath(e);if(!r)throw new Error(`Workspace not found (${e})`);return r}tryWorkspaceByIdent(e){let r=this.workspacesByIdent.get(e.identHash);return typeof r>"u"?null:r}getWorkspaceByIdent(e){let r=this.tryWorkspaceByIdent(e);if(!r)throw new Error(`Workspace not found (${$i(this.configuration,e)})`);return r}tryWorkspaceByDescriptor(e){if(e.range.startsWith(yi.protocol)){let s=e.range.slice(yi.protocol.length);if(s!=="^"&&s!=="~"&&s!=="*"&&!ul(s))return this.tryWorkspaceByCwd(s)}let r=this.tryWorkspaceByIdent(e);return r===null||(Tp(e)&&(e=ZB(e)),!r.accepts(e.range))?null:r}getWorkspaceByDescriptor(e){let r=this.tryWorkspaceByDescriptor(e);if(r===null)throw new Error(`Workspace not found (${ri(this.configuration,e)})`);return r}tryWorkspaceByLocator(e){let r=this.tryWorkspaceByIdent(e);return r===null||(Gu(e)&&(e=rI(e)),r.anchoredLocator.locatorHash!==e.locatorHash)?null:r}getWorkspaceByLocator(e){let r=this.tryWorkspaceByLocator(e);if(!r)throw new Error(`Workspace not found (${Yr(this.configuration,e)})`);return r}deleteDescriptor(e){this.storedResolutions.delete(e),this.storedDescriptors.delete(e)}deleteLocator(e){this.originalPackages.delete(e),this.storedPackages.delete(e),this.accessibleLocators.delete(e)}forgetResolution(e){if("descriptorHash"in e){let r=this.storedResolutions.get(e.descriptorHash);this.deleteDescriptor(e.descriptorHash);let s=new Set(this.storedResolutions.values());typeof r<"u"&&!s.has(r)&&this.deleteLocator(r)}if("locatorHash"in e){this.deleteLocator(e.locatorHash);for(let[r,s]of this.storedResolutions)s===e.locatorHash&&this.deleteDescriptor(r)}}forgetTransientResolutions(){let e=this.configuration.makeResolver(),r=new Map;for(let[s,a]of this.storedResolutions.entries()){let n=r.get(a);n||r.set(a,n=new Set),n.add(s)}for(let s of this.originalPackages.values()){let a;try{a=e.shouldPersistResolution(s,{project:this,resolver:e})}catch{a=!1}if(!a){this.deleteLocator(s.locatorHash);let n=r.get(s.locatorHash);if(n){r.delete(s.locatorHash);for(let c of n)this.deleteDescriptor(c)}}}}forgetVirtualResolutions(){for(let e of this.storedPackages.values())for(let[r,s]of e.dependencies)Tp(s)&&e.dependencies.set(r,ZB(s))}getDependencyMeta(e,r){let s={},n=this.topLevelWorkspace.manifest.dependenciesMeta.get(cn(e));if(!n)return s;let c=n.get(null);if(c&&Object.assign(s,c),r===null||!swe.default.valid(r))return s;for(let[f,p]of n)f!==null&&f===r&&Object.assign(s,p);return s}async findLocatorForLocation(e,{strict:r=!1}={}){let s=new Wi,a=this.configuration.getLinkers(),n={project:this,report:s};for(let c of a){let f=await c.findPackageLocator(e,n);if(f){if(r&&(await c.findPackageLocation(f,n)).replace(nwe,"")!==e.replace(nwe,""))continue;return f}}return null}async loadUserConfig(){let e=K.join(this.cwd,".pnp.cjs");await le.existsPromise(e)&&kp(e).setup();let r=K.join(this.cwd,"yarn.config.cjs");return await le.existsPromise(r)?kp(r):null}async preparePackage(e,{resolver:r,resolveOptions:s}){let a=await this.configuration.getPackageExtensions(),n=this.configuration.normalizePackage(e,{packageExtensions:a});for(let[c,f]of n.dependencies){let p=await this.configuration.reduceHook(E=>E.reduceDependency,f,this,n,f,{resolver:r,resolveOptions:s});if(!XB(f,p))throw new Error("Assertion failed: The descriptor ident cannot be changed through aliases");let h=r.bindDescriptor(p,n,s);n.dependencies.set(c,h)}return n}async resolveEverything(e){if(!this.workspacesByCwd||!this.workspacesByIdent)throw new Error("Workspaces must have been setup before calling this function");this.forgetVirtualResolutions();let r=new Map(this.originalPackages),s=[];e.lockfileOnly||this.forgetTransientResolutions();let a=e.resolver||this.configuration.makeResolver(),n=new zI(a);await n.setup(this,{report:e.report});let c=e.lockfileOnly?[new GR(a)]:[n,a],f=new rm([new ZI(a),...c]),p=new rm([...c]),h=this.configuration.makeFetcher(),E=e.lockfileOnly?{project:this,report:e.report,resolver:f}:{project:this,report:e.report,resolver:f,fetchOptions:{project:this,cache:e.cache,checksums:this.storedChecksums,report:e.report,fetcher:h,cacheOptions:{mirrorWriteOnly:!0}}},C=new Map,S=new Map,P=new Map,I=new Map,R=new Map,N=new Map,U=this.topLevelWorkspace.anchoredLocator,W=new Set,te=[],ie=Tj(),Ae=this.configuration.getSupportedArchitectures();await e.report.startProgressPromise(ho.progressViaTitle(),async se=>{let X=async rt=>{let Fe=await GE(async()=>await f.resolve(rt,E),ke=>`${Yr(this.configuration,rt)}: ${ke}`);if(!$B(rt,Fe))throw new Error(`Assertion failed: The locator cannot be changed by the resolver (went from ${Yr(this.configuration,rt)} to ${Yr(this.configuration,Fe)})`);I.set(Fe.locatorHash,Fe),!r.delete(Fe.locatorHash)&&!this.tryWorkspaceByLocator(Fe)&&s.push(Fe);let Pe=await this.preparePackage(Fe,{resolver:f,resolveOptions:E}),Ye=Uu([...Pe.dependencies.values()].map(ke=>j(ke)));return te.push(Ye),Ye.catch(()=>{}),S.set(Pe.locatorHash,Pe),Pe},De=async rt=>{let Fe=R.get(rt.locatorHash);if(typeof Fe<"u")return Fe;let Ne=Promise.resolve().then(()=>X(rt));return R.set(rt.locatorHash,Ne),Ne},Re=async(rt,Fe)=>{let Ne=await j(Fe);return C.set(rt.descriptorHash,rt),P.set(rt.descriptorHash,Ne.locatorHash),Ne},gt=async rt=>{se.setTitle(ri(this.configuration,rt));let Fe=this.resolutionAliases.get(rt.descriptorHash);if(typeof Fe<"u")return Re(rt,this.storedDescriptors.get(Fe));let Ne=f.getResolutionDependencies(rt,E),Pe=Object.fromEntries(await Uu(Object.entries(Ne).map(async([it,_e])=>{let x=f.bindDescriptor(_e,U,E),w=await j(x);return W.add(w.locatorHash),[it,w]}))),ke=(await GE(async()=>await f.getCandidates(rt,Pe,E),it=>`${ri(this.configuration,rt)}: ${it}`))[0];if(typeof ke>"u")throw new Yt(82,`${ri(this.configuration,rt)}: No candidates found`);if(e.checkResolutions){let{locators:it}=await p.getSatisfying(rt,Pe,[ke],{...E,resolver:p});if(!it.find(_e=>_e.locatorHash===ke.locatorHash))throw new Yt(78,`Invalid resolution ${VB(this.configuration,rt,ke)}`)}return C.set(rt.descriptorHash,rt),P.set(rt.descriptorHash,ke.locatorHash),De(ke)},j=rt=>{let Fe=N.get(rt.descriptorHash);if(typeof Fe<"u")return Fe;C.set(rt.descriptorHash,rt);let Ne=Promise.resolve().then(()=>gt(rt));return N.set(rt.descriptorHash,Ne),Ne};for(let rt of this.workspaces){let Fe=rt.anchoredDescriptor;te.push(j(Fe))}for(;te.length>0;){let rt=[...te];te.length=0,await Uu(rt)}});let ce=Yl(r.values(),se=>this.tryWorkspaceByLocator(se)?Yl.skip:se);if(s.length>0||ce.length>0){let se=new Set(this.workspaces.flatMap(rt=>{let Fe=S.get(rt.anchoredLocator.locatorHash);if(!Fe)throw new Error("Assertion failed: The workspace should have been resolved");return Array.from(Fe.dependencies.values(),Ne=>{let Pe=P.get(Ne.descriptorHash);if(!Pe)throw new Error("Assertion failed: The resolution should have been registered");return Pe})})),X=rt=>se.has(rt.locatorHash)?"0":"1",De=rt=>cl(rt),Re=Ws(s,[X,De]),gt=Ws(ce,[X,De]),j=e.report.getRecommendedLength();Re.length>0&&e.report.reportInfo(85,`${Ut(this.configuration,"+",Ct.ADDED)} ${$k(this.configuration,Re,j)}`),gt.length>0&&e.report.reportInfo(85,`${Ut(this.configuration,"-",Ct.REMOVED)} ${$k(this.configuration,gt,j)}`)}let me=new Set(this.resolutionAliases.values()),pe=new Set(S.keys()),Be=new Set,Ce=new Map,g=[],we=new Map;Ywt({project:this,accessibleLocators:Be,volatileDescriptors:me,optionalBuilds:pe,peerRequirements:Ce,peerWarnings:g,peerRequirementNodes:we,allDescriptors:C,allResolutions:P,allPackages:S});for(let se of W)pe.delete(se);for(let se of me)C.delete(se),P.delete(se);let Ee=new Set,fe=new Set;for(let se of S.values())se.conditions!=null&&pe.has(se.locatorHash)&&(TQ(se,Ae)||(TQ(se,ie)&&e.report.reportWarningOnce(77,`${Yr(this.configuration,se)}: Your current architecture (${process.platform}-${process.arch}) is supported by this package, but is missing from the ${Ut(this.configuration,"supportedArchitectures",Ct.SETTING)} setting`),fe.add(se.locatorHash)),Ee.add(se.locatorHash));this.storedResolutions=P,this.storedDescriptors=C,this.storedPackages=S,this.accessibleLocators=Be,this.conditionalLocators=Ee,this.disabledLocators=fe,this.originalPackages=I,this.optionalBuilds=pe,this.peerRequirements=Ce,this.peerWarnings=g,this.peerRequirementNodes=we}async fetchEverything({cache:e,report:r,fetcher:s,mode:a,persistProject:n=!0}){let c={mockedPackages:this.disabledLocators,unstablePackages:this.conditionalLocators},f=s||this.configuration.makeFetcher(),p={checksums:this.storedChecksums,project:this,cache:e,fetcher:f,report:r,cacheOptions:c},h=Array.from(new Set(Ws(this.storedResolutions.values(),[I=>{let R=this.storedPackages.get(I);if(!R)throw new Error("Assertion failed: The locator should have been registered");return cl(R)}])));a==="update-lockfile"&&(h=h.filter(I=>!this.storedChecksums.has(I)));let E=!1,C=ho.progressViaCounter(h.length);await r.reportProgress(C);let S=(0,VR.default)(qwt);if(await Uu(h.map(I=>S(async()=>{let R=this.storedPackages.get(I);if(!R)throw new Error("Assertion failed: The locator should have been registered");if(Gu(R))return;let N;try{N=await f.fetch(R,p)}catch(U){U.message=`${Yr(this.configuration,R)}: ${U.message}`,r.reportExceptionOnce(U),E=U;return}N.checksum!=null?this.storedChecksums.set(R.locatorHash,N.checksum):this.storedChecksums.delete(R.locatorHash),N.releaseFs&&N.releaseFs()}).finally(()=>{C.tick()}))),E)throw E;let P=n&&a!=="update-lockfile"?await this.cacheCleanup({cache:e,report:r}):null;if(r.cacheMisses.size>0||P){let R=(await Promise.all([...r.cacheMisses].map(async ce=>{let me=this.storedPackages.get(ce),pe=this.storedChecksums.get(ce)??null,Be=e.getLocatorPath(me,pe);return(await le.statPromise(Be)).size}))).reduce((ce,me)=>ce+me,0)-(P?.size??0),N=r.cacheMisses.size,U=P?.count??0,W=`${Vk(N,{zero:"No new packages",one:"A package was",more:`${Ut(this.configuration,N,Ct.NUMBER)} packages were`})} added to the project`,te=`${Vk(U,{zero:"none were",one:"one was",more:`${Ut(this.configuration,U,Ct.NUMBER)} were`})} removed`,ie=R!==0?` (${Ut(this.configuration,R,Ct.SIZE_DIFF)})`:"",Ae=U>0?N>0?`${W}, and ${te}${ie}.`:`${W}, but ${te}${ie}.`:`${W}${ie}.`;r.reportInfo(13,Ae)}}async linkEverything({cache:e,report:r,fetcher:s,mode:a}){let n={mockedPackages:this.disabledLocators,unstablePackages:this.conditionalLocators,skipIntegrityCheck:!0},c=s||this.configuration.makeFetcher(),f={checksums:this.storedChecksums,project:this,cache:e,fetcher:c,report:r,cacheOptions:n},p=this.configuration.getLinkers(),h={project:this,report:r},E=new Map(p.map(Ee=>{let fe=Ee.makeInstaller(h),se=Ee.getCustomDataKey(),X=this.linkersCustomData.get(se);return typeof X<"u"&&fe.attachCustomData(X),[Ee,fe]})),C=new Map,S=new Map,P=new Map,I=new Map(await Uu([...this.accessibleLocators].map(async Ee=>{let fe=this.storedPackages.get(Ee);if(!fe)throw new Error("Assertion failed: The locator should have been registered");return[Ee,await c.fetch(fe,f)]}))),R=[],N=new Set,U=[];for(let Ee of this.accessibleLocators){let fe=this.storedPackages.get(Ee);if(typeof fe>"u")throw new Error("Assertion failed: The locator should have been registered");let se=I.get(fe.locatorHash);if(typeof se>"u")throw new Error("Assertion failed: The fetch result should have been registered");let X=[],De=gt=>{X.push(gt)},Re=this.tryWorkspaceByLocator(fe);if(Re!==null){let gt=[],{scripts:j}=Re.manifest;for(let Fe of["preinstall","install","postinstall"])j.has(Fe)&>.push({type:0,script:Fe});try{for(let[Fe,Ne]of E)if(Fe.supportsPackage(fe,h)&&(await Ne.installPackage(fe,se,{holdFetchResult:De})).buildRequest!==null)throw new Error("Assertion failed: Linkers can't return build directives for workspaces; this responsibility befalls to the Yarn core")}finally{X.length===0?se.releaseFs?.():R.push(Uu(X).catch(()=>{}).then(()=>{se.releaseFs?.()}))}let rt=K.join(se.packageFs.getRealPath(),se.prefixPath);S.set(fe.locatorHash,rt),!Gu(fe)&>.length>0&&P.set(fe.locatorHash,{buildDirectives:gt,buildLocations:[rt]})}else{let gt=p.find(Fe=>Fe.supportsPackage(fe,h));if(!gt)throw new Yt(12,`${Yr(this.configuration,fe)} isn't supported by any available linker`);let j=E.get(gt);if(!j)throw new Error("Assertion failed: The installer should have been registered");let rt;try{rt=await j.installPackage(fe,se,{holdFetchResult:De})}finally{X.length===0?se.releaseFs?.():R.push(Uu(X).then(()=>{}).then(()=>{se.releaseFs?.()}))}C.set(fe.locatorHash,gt),S.set(fe.locatorHash,rt.packageLocation),rt.buildRequest&&rt.packageLocation&&(rt.buildRequest.skipped?(N.add(fe.locatorHash),this.skippedBuilds.has(fe.locatorHash)||U.push([fe,rt.buildRequest.explain])):P.set(fe.locatorHash,{buildDirectives:rt.buildRequest.directives,buildLocations:[rt.packageLocation]}))}}let W=new Map;for(let Ee of this.accessibleLocators){let fe=this.storedPackages.get(Ee);if(!fe)throw new Error("Assertion failed: The locator should have been registered");let se=this.tryWorkspaceByLocator(fe)!==null,X=async(De,Re)=>{let gt=S.get(fe.locatorHash);if(typeof gt>"u")throw new Error(`Assertion failed: The package (${Yr(this.configuration,fe)}) should have been registered`);let j=[];for(let rt of fe.dependencies.values()){let Fe=this.storedResolutions.get(rt.descriptorHash);if(typeof Fe>"u")throw new Error(`Assertion failed: The resolution (${ri(this.configuration,rt)}, from ${Yr(this.configuration,fe)})should have been registered`);let Ne=this.storedPackages.get(Fe);if(typeof Ne>"u")throw new Error(`Assertion failed: The package (${Fe}, resolved from ${ri(this.configuration,rt)}) should have been registered`);let Pe=this.tryWorkspaceByLocator(Ne)===null?C.get(Fe):null;if(typeof Pe>"u")throw new Error(`Assertion failed: The package (${Fe}, resolved from ${ri(this.configuration,rt)}) should have been registered`);Pe===De||Pe===null?S.get(Ne.locatorHash)!==null&&j.push([rt,Ne]):!se&>!==null&&jB(W,Fe).push(gt)}gt!==null&&await Re.attachInternalDependencies(fe,j)};if(se)for(let[De,Re]of E)De.supportsPackage(fe,h)&&await X(De,Re);else{let De=C.get(fe.locatorHash);if(!De)throw new Error("Assertion failed: The linker should have been found");let Re=E.get(De);if(!Re)throw new Error("Assertion failed: The installer should have been registered");await X(De,Re)}}for(let[Ee,fe]of W){let se=this.storedPackages.get(Ee);if(!se)throw new Error("Assertion failed: The package should have been registered");let X=C.get(se.locatorHash);if(!X)throw new Error("Assertion failed: The linker should have been found");let De=E.get(X);if(!De)throw new Error("Assertion failed: The installer should have been registered");await De.attachExternalDependents(se,fe)}let te=new Map;for(let[Ee,fe]of E){let se=await fe.finalizeInstall();for(let X of se?.records??[])X.buildRequest.skipped?(N.add(X.locator.locatorHash),this.skippedBuilds.has(X.locator.locatorHash)||U.push([X.locator,X.buildRequest.explain])):P.set(X.locator.locatorHash,{buildDirectives:X.buildRequest.directives,buildLocations:X.buildLocations});typeof se?.customData<"u"&&te.set(Ee.getCustomDataKey(),se.customData)}if(this.linkersCustomData=te,await Uu(R),a==="skip-build")return;for(let[,Ee]of Ws(U,([fe])=>cl(fe)))Ee(r);let ie=new Set(P.keys()),Ae=(0,WR.createHash)("sha512");Ae.update(process.versions.node),await this.configuration.triggerHook(Ee=>Ee.globalHashGeneration,this,Ee=>{Ae.update("\0"),Ae.update(Ee)});let ce=Ae.digest("hex"),me=new Map,pe=Ee=>{let fe=me.get(Ee.locatorHash);if(typeof fe<"u")return fe;let se=this.storedPackages.get(Ee.locatorHash);if(typeof se>"u")throw new Error("Assertion failed: The package should have been registered");let X=(0,WR.createHash)("sha512");X.update(Ee.locatorHash),me.set(Ee.locatorHash,"");for(let De of se.dependencies.values()){let Re=this.storedResolutions.get(De.descriptorHash);if(typeof Re>"u")throw new Error(`Assertion failed: The resolution (${ri(this.configuration,De)}) should have been registered`);let gt=this.storedPackages.get(Re);if(typeof gt>"u")throw new Error("Assertion failed: The package should have been registered");X.update(pe(gt))}return fe=X.digest("hex"),me.set(Ee.locatorHash,fe),fe},Be=(Ee,fe)=>{let se=(0,WR.createHash)("sha512");se.update(ce),se.update(pe(Ee));for(let X of fe)se.update(X);return se.digest("hex")},Ce=new Map,g=!1,we=Ee=>{let fe=new Set([Ee.locatorHash]);for(let se of fe){let X=this.storedPackages.get(se);if(!X)throw new Error("Assertion failed: The package should have been registered");for(let De of X.dependencies.values()){let Re=this.storedResolutions.get(De.descriptorHash);if(!Re)throw new Error(`Assertion failed: The resolution (${ri(this.configuration,De)}) should have been registered`);if(Re!==Ee.locatorHash&&ie.has(Re))return!1;let gt=this.storedPackages.get(Re);if(!gt)throw new Error("Assertion failed: The package should have been registered");let j=this.tryWorkspaceByLocator(gt);if(j){if(j.anchoredLocator.locatorHash!==Ee.locatorHash&&ie.has(j.anchoredLocator.locatorHash))return!1;fe.add(j.anchoredLocator.locatorHash)}fe.add(Re)}}return!0};for(;ie.size>0;){let Ee=ie.size,fe=[];for(let se of ie){let X=this.storedPackages.get(se);if(!X)throw new Error("Assertion failed: The package should have been registered");if(!we(X))continue;let De=P.get(X.locatorHash);if(!De)throw new Error("Assertion failed: The build directive should have been registered");let Re=Be(X,De.buildLocations);if(this.storedBuildState.get(X.locatorHash)===Re){Ce.set(X.locatorHash,Re),ie.delete(se);continue}g||(await this.persistInstallStateFile(),g=!0),this.storedBuildState.has(X.locatorHash)?r.reportInfo(8,`${Yr(this.configuration,X)} must be rebuilt because its dependency tree changed`):r.reportInfo(7,`${Yr(this.configuration,X)} must be built because it never has been before or the last one failed`);let gt=De.buildLocations.map(async j=>{if(!K.isAbsolute(j))throw new Error(`Assertion failed: Expected the build location to be absolute (not ${j})`);for(let rt of De.buildDirectives){let Fe=`# This file contains the result of Yarn building a package (${cl(X)}) +`;switch(rt.type){case 0:Fe+=`# Script name: ${rt.script} +`;break;case 1:Fe+=`# Script code: ${rt.script} +`;break}let Ne=null;if(!await le.mktempPromise(async Ye=>{let ke=K.join(Ye,"build.log"),{stdout:it,stderr:_e}=this.configuration.getSubprocessStreams(ke,{header:Fe,prefix:Yr(this.configuration,X),report:r}),x;try{switch(rt.type){case 0:x=await MT(X,rt.script,[],{cwd:j,project:this,stdin:Ne,stdout:it,stderr:_e});break;case 1:x=await y6(X,rt.script,[],{cwd:j,project:this,stdin:Ne,stdout:it,stderr:_e});break}}catch(y){_e.write(y.stack),x=1}if(it.end(),_e.end(),x===0)return!0;le.detachTemp(Ye);let w=`${Yr(this.configuration,X)} couldn't be built successfully (exit code ${Ut(this.configuration,x,Ct.NUMBER)}, logs can be found here: ${Ut(this.configuration,ke,Ct.PATH)})`,b=this.optionalBuilds.has(X.locatorHash);return b?r.reportInfo(9,w):r.reportError(9,w),rye&&r.reportFold(ue.fromPortablePath(ke),le.readFileSync(ke,"utf8")),b}))return!1}return!0});fe.push(...gt,Promise.allSettled(gt).then(j=>{ie.delete(se),j.every(rt=>rt.status==="fulfilled"&&rt.value===!0)&&Ce.set(X.locatorHash,Re)}))}if(await Uu(fe),Ee===ie.size){let se=Array.from(ie).map(X=>{let De=this.storedPackages.get(X);if(!De)throw new Error("Assertion failed: The package should have been registered");return Yr(this.configuration,De)}).join(", ");r.reportError(3,`Some packages have circular dependencies that make their build order unsatisfiable - as a result they won't be built (affected packages are: ${se})`);break}}this.storedBuildState=Ce,this.skippedBuilds=N}async installWithNewReport(e,r){return(await Ot.start({configuration:this.configuration,json:e.json,stdout:e.stdout,forceSectionAlignment:!0,includeLogs:!e.json&&!e.quiet,includeVersion:!0},async a=>{await this.install({...r,report:a})})).exitCode()}async install(e){let r=this.configuration.get("nodeLinker");ze.telemetry?.reportInstall(r);let s=!1;if(await e.report.startTimerPromise("Project validation",{skipIfEmpty:!0},async()=>{this.configuration.get("enableOfflineMode")&&e.report.reportWarning(90,"Offline work is enabled; Yarn won't fetch packages from the remote registry if it can avoid it"),await this.configuration.triggerHook(E=>E.validateProject,this,{reportWarning:(E,C)=>{e.report.reportWarning(E,C)},reportError:(E,C)=>{e.report.reportError(E,C),s=!0}})}),s)return;let a=await this.configuration.getPackageExtensions();for(let E of a.values())for(let[,C]of E)for(let S of C)S.status="inactive";let n=K.join(this.cwd,Er.lockfile),c=null;if(e.immutable)try{c=await le.readFilePromise(n,"utf8")}catch(E){throw E.code==="ENOENT"?new Yt(28,"The lockfile would have been created by this install, which is explicitly forbidden."):E}await e.report.startTimerPromise("Resolution step",async()=>{await this.resolveEverything(e)}),await e.report.startTimerPromise("Post-resolution validation",{skipIfEmpty:!0},async()=>{Kwt(this,e.report);for(let[,E]of a)for(let[,C]of E)for(let S of C)if(S.userProvided){let P=Ut(this.configuration,S,Ct.PACKAGE_EXTENSION);switch(S.status){case"inactive":e.report.reportWarning(68,`${P}: No matching package in the dependency tree; you may not need this rule anymore.`);break;case"redundant":e.report.reportWarning(69,`${P}: This rule seems redundant when applied on the original package; the extension may have been applied upstream.`);break}}if(c!==null){let E=Id(c,this.generateLockfile());if(E!==c){let C=CCe(n,n,c,E,void 0,void 0,{maxEditLength:100});if(C){e.report.reportSeparator();for(let S of C.hunks){e.report.reportInfo(null,`@@ -${S.oldStart},${S.oldLines} +${S.newStart},${S.newLines} @@`);for(let P of S.lines)P.startsWith("+")?e.report.reportError(28,Ut(this.configuration,P,Ct.ADDED)):P.startsWith("-")?e.report.reportError(28,Ut(this.configuration,P,Ct.REMOVED)):e.report.reportInfo(null,Ut(this.configuration,P,"grey"))}e.report.reportSeparator()}throw new Yt(28,"The lockfile would have been modified by this install, which is explicitly forbidden.")}}});for(let E of a.values())for(let[,C]of E)for(let S of C)S.userProvided&&S.status==="active"&&ze.telemetry?.reportPackageExtension(Zd(S,Ct.PACKAGE_EXTENSION));await e.report.startTimerPromise("Fetch step",async()=>{await this.fetchEverything(e)});let f=e.immutable?[...new Set(this.configuration.get("immutablePatterns"))].sort():[],p=await Promise.all(f.map(async E=>DQ(E,{cwd:this.cwd})));(typeof e.persistProject>"u"||e.persistProject)&&await this.persist(),await e.report.startTimerPromise("Link step",async()=>{if(e.mode==="update-lockfile"){e.report.reportWarning(73,`Skipped due to ${Ut(this.configuration,"mode=update-lockfile",Ct.CODE)}`);return}await this.linkEverything(e);let E=await Promise.all(f.map(async C=>DQ(C,{cwd:this.cwd})));for(let C=0;C{await this.configuration.triggerHook(E=>E.validateProjectAfterInstall,this,{reportWarning:(E,C)=>{e.report.reportWarning(E,C)},reportError:(E,C)=>{e.report.reportError(E,C),h=!0}})}),!h&&await this.configuration.triggerHook(E=>E.afterAllInstalled,this,e)}generateLockfile(){let e=new Map;for(let[n,c]of this.storedResolutions.entries()){let f=e.get(c);f||e.set(c,f=new Set),f.add(n)}let r={},{cacheKey:s}=Jr.getCacheKey(this.configuration);r.__metadata={version:KR,cacheKey:s};for(let[n,c]of e.entries()){let f=this.originalPackages.get(n);if(!f)continue;let p=[];for(let C of c){let S=this.storedDescriptors.get(C);if(!S)throw new Error("Assertion failed: The descriptor should have been registered");p.push(S)}let h=p.map(C=>ll(C)).sort().join(", "),E=new Ht;E.version=f.linkType==="HARD"?f.version:"0.0.0-use.local",E.languageName=f.languageName,E.dependencies=new Map(f.dependencies),E.peerDependencies=new Map(f.peerDependencies),E.dependenciesMeta=new Map(f.dependenciesMeta),E.peerDependenciesMeta=new Map(f.peerDependenciesMeta),E.bin=new Map(f.bin),r[h]={...E.exportTo({},{compatibilityMode:!1}),linkType:f.linkType.toLowerCase(),resolution:cl(f),checksum:this.storedChecksums.get(f.locatorHash),conditions:f.conditions||void 0}}return`${[`# This file is generated by running "yarn install" inside your project. +`,`# Manual changes might be lost - proceed with caution! +`].join("")} +`+il(r)}async persistLockfile(){let e=K.join(this.cwd,Er.lockfile),r="";try{r=await le.readFilePromise(e,"utf8")}catch{}let s=this.generateLockfile(),a=Id(r,s);a!==r&&(await le.writeFilePromise(e,a),this.lockFileChecksum=iwe(a),this.lockfileNeedsRefresh=!1)}async persistInstallStateFile(){let e=[];for(let c of Object.values(bG))e.push(...c);let r=(0,YR.default)(this,e),s=PG.default.serialize(r),a=us(s);if(this.installStateChecksum===a)return;let n=this.configuration.get("installStatePath");await le.mkdirPromise(K.dirname(n),{recursive:!0}),await le.writeFilePromise(n,await Gwt(s)),this.installStateChecksum=a}async restoreInstallState({restoreLinkersCustomData:e=!0,restoreResolutions:r=!0,restoreBuildState:s=!0}={}){let a=this.configuration.get("installStatePath"),n;try{let c=await Wwt(await le.readFilePromise(a));n=PG.default.deserialize(c),this.installStateChecksum=us(c)}catch{r&&await this.applyLightResolution();return}e&&typeof n.linkersCustomData<"u"&&(this.linkersCustomData=n.linkersCustomData),s&&Object.assign(this,(0,YR.default)(n,bG.restoreBuildState)),r&&(n.lockFileChecksum===this.lockFileChecksum?Object.assign(this,(0,YR.default)(n,bG.restoreResolutions)):await this.applyLightResolution())}async applyLightResolution(){await this.resolveEverything({lockfileOnly:!0,report:new Wi}),await this.persistInstallStateFile()}async persist(){let e=(0,VR.default)(4);await Promise.all([this.persistLockfile(),...this.workspaces.map(r=>e(()=>r.persistManifest()))])}async cacheCleanup({cache:e,report:r}){if(this.configuration.get("enableGlobalCache"))return null;let s=new Set([".gitignore"]);if(!hH(e.cwd,this.cwd)||!await le.existsPromise(e.cwd))return null;let a=[];for(let c of await le.readdirPromise(e.cwd)){if(s.has(c))continue;let f=K.resolve(e.cwd,c);e.markedFiles.has(f)||(e.immutable?r.reportError(56,`${Ut(this.configuration,K.basename(f),"magenta")} appears to be unused and would be marked for deletion, but the cache is immutable`):a.push(le.lstatPromise(f).then(async p=>(await le.removePromise(f),p.size))))}if(a.length===0)return null;let n=await Promise.all(a);return{count:a.length,size:n.reduce((c,f)=>c+f,0)}}}});function Jwt(t){let s=Math.floor(t.timeNow/864e5),a=t.updateInterval*864e5,n=t.state.lastUpdate??t.timeNow+a+Math.floor(a*t.randomInitialInterval),c=n+a,f=t.state.lastTips??s*864e5,p=f+864e5+8*36e5-t.timeZone,h=c<=t.timeNow,E=p<=t.timeNow,C=null;return(h||E||!t.state.lastUpdate||!t.state.lastTips)&&(C={},C.lastUpdate=h?t.timeNow:n,C.lastTips=f,C.blocks=h?{}:t.state.blocks,C.displayedTips=t.state.displayedTips),{nextState:C,triggerUpdate:h,triggerTips:E,nextTips:E?s*864e5:f}}var eC,awe=It(()=>{bt();Rv();I0();pT();kc();Np();eC=class{constructor(e,r){this.values=new Map;this.hits=new Map;this.enumerators=new Map;this.nextTips=0;this.displayedTips=[];this.shouldCommitTips=!1;this.configuration=e;let s=this.getRegistryPath();this.isNew=!le.existsSync(s),this.shouldShowTips=!1,this.sendReport(r),this.startBuffer()}commitTips(){this.shouldShowTips&&(this.shouldCommitTips=!0)}selectTip(e){let r=new Set(this.displayedTips),s=f=>f&&un?eA(un,f):!1,a=e.map((f,p)=>p).filter(f=>e[f]&&s(e[f]?.selector));if(a.length===0)return null;let n=a.filter(f=>!r.has(f));if(n.length===0){let f=Math.floor(a.length*.2);this.displayedTips=f>0?this.displayedTips.slice(-f):[],n=a.filter(p=>!r.has(p))}let c=n[Math.floor(Math.random()*n.length)];return this.displayedTips.push(c),this.commitTips(),e[c]}reportVersion(e){this.reportValue("version",e.replace(/-git\..*/,"-git"))}reportCommandName(e){this.reportValue("commandName",e||"")}reportPluginName(e){this.reportValue("pluginName",e)}reportProject(e){this.reportEnumerator("projectCount",e)}reportInstall(e){this.reportHit("installCount",e)}reportPackageExtension(e){this.reportValue("packageExtension",e)}reportWorkspaceCount(e){this.reportValue("workspaceCount",String(e))}reportDependencyCount(e){this.reportValue("dependencyCount",String(e))}reportValue(e,r){xp(this.values,e).add(r)}reportEnumerator(e,r){xp(this.enumerators,e).add(us(r))}reportHit(e,r="*"){let s=A3(this.hits,e),a=Vl(s,r,()=>0);s.set(r,a+1)}getRegistryPath(){let e=this.configuration.get("globalFolder");return K.join(e,"telemetry.json")}sendReport(e){let r=this.getRegistryPath(),s;try{s=le.readJsonSync(r)}catch{s={}}let{nextState:a,triggerUpdate:n,triggerTips:c,nextTips:f}=Jwt({state:s,timeNow:Date.now(),timeZone:new Date().getTimezoneOffset()*60*1e3,randomInitialInterval:Math.random(),updateInterval:this.configuration.get("telemetryInterval")});if(this.nextTips=f,this.displayedTips=s.displayedTips??[],a!==null)try{le.mkdirSync(K.dirname(r),{recursive:!0}),le.writeJsonSync(r,a)}catch{return!1}if(c&&this.configuration.get("enableTips")&&(this.shouldShowTips=!0),n){let p=s.blocks??{};if(Object.keys(p).length===0){let h=`https://browser-http-intake.logs.datadoghq.eu/v1/input/${e}?ddsource=yarn`,E=C=>Qj(h,C,{configuration:this.configuration}).catch(()=>{});for(let[C,S]of Object.entries(s.blocks??{})){if(Object.keys(S).length===0)continue;let P=S;P.userId=C,P.reportType="primary";for(let N of Object.keys(P.enumerators??{}))P.enumerators[N]=P.enumerators[N].length;E(P);let I=new Map,R=20;for(let[N,U]of Object.entries(P.values))U.length>0&&I.set(N,U.slice(0,R));for(;I.size>0;){let N={};N.userId=C,N.reportType="secondary",N.metrics={};for(let[U,W]of I)N.metrics[U]=W.shift(),W.length===0&&I.delete(U);E(N)}}}}return!0}applyChanges(){let e=this.getRegistryPath(),r;try{r=le.readJsonSync(e)}catch{r={}}let s=this.configuration.get("telemetryUserId")??"*",a=r.blocks=r.blocks??{},n=a[s]=a[s]??{};for(let c of this.hits.keys()){let f=n.hits=n.hits??{},p=f[c]=f[c]??{};for(let[h,E]of this.hits.get(c))p[h]=(p[h]??0)+E}for(let c of["values","enumerators"])for(let f of this[c].keys()){let p=n[c]=n[c]??{};p[f]=[...new Set([...p[f]??[],...this[c].get(f)??[]])]}this.shouldCommitTips&&(r.lastTips=this.nextTips,r.displayedTips=this.displayedTips),le.mkdirSync(K.dirname(e),{recursive:!0}),le.writeJsonSync(e,r)}startBuffer(){process.on("exit",()=>{try{this.applyChanges()}catch{}})}}});var nS={};Vt(nS,{BuildDirectiveType:()=>HR,CACHE_CHECKPOINT:()=>lG,CACHE_VERSION:()=>UR,Cache:()=>Jr,Configuration:()=>ze,DEFAULT_RC_FILENAME:()=>Mj,FormatType:()=>Lde,InstallMode:()=>ec,LEGACY_PLUGINS:()=>Ev,LOCKFILE_VERSION:()=>KR,LegacyMigrationResolver:()=>zI,LightReport:()=>uA,LinkType:()=>VE,LockfileResolver:()=>ZI,Manifest:()=>Ht,MessageName:()=>Dr,MultiFetcher:()=>lI,PackageExtensionStatus:()=>d3,PackageExtensionType:()=>g3,PeerWarningType:()=>JR,Project:()=>Tt,Report:()=>ho,ReportError:()=>Yt,SettingsType:()=>Iv,StreamReport:()=>Ot,TAG_REGEXP:()=>Hp,TelemetryManager:()=>eC,ThrowReport:()=>Wi,VirtualFetcher:()=>cI,WindowsLinkType:()=>IT,Workspace:()=>$I,WorkspaceFetcher:()=>uI,WorkspaceResolver:()=>yi,YarnVersion:()=>un,execUtils:()=>Gr,folderUtils:()=>OQ,formatUtils:()=>he,hashUtils:()=>Nn,httpUtils:()=>An,miscUtils:()=>je,nodeUtils:()=>As,parseMessageName:()=>rk,reportOptionDeprecations:()=>DI,scriptUtils:()=>In,semverUtils:()=>Or,stringifyMessageName:()=>Vf,structUtils:()=>q,tgzUtils:()=>hs,treeUtils:()=>ks});var Ve=It(()=>{dT();LQ();Qc();I0();pT();kc();gT();w6();Np();Yo();oCe();pCe();cG();Cv();Cv();dCe();uG();mCe();fG();oI();nk();nH();owe();Fc();Fv();awe();SG();sH();oH();tm();DG();Rv();BAe()});var pwe=L((hnr,sS)=>{"use strict";var Zwt=process.env.TERM_PROGRAM==="Hyper",Xwt=process.platform==="win32",uwe=process.platform==="linux",QG={ballotDisabled:"\u2612",ballotOff:"\u2610",ballotOn:"\u2611",bullet:"\u2022",bulletWhite:"\u25E6",fullBlock:"\u2588",heart:"\u2764",identicalTo:"\u2261",line:"\u2500",mark:"\u203B",middot:"\xB7",minus:"\uFF0D",multiplication:"\xD7",obelus:"\xF7",pencilDownRight:"\u270E",pencilRight:"\u270F",pencilUpRight:"\u2710",percent:"%",pilcrow2:"\u2761",pilcrow:"\xB6",plusMinus:"\xB1",section:"\xA7",starsOff:"\u2606",starsOn:"\u2605",upDownArrow:"\u2195"},fwe=Object.assign({},QG,{check:"\u221A",cross:"\xD7",ellipsisLarge:"...",ellipsis:"...",info:"i",question:"?",questionSmall:"?",pointer:">",pointerSmall:"\xBB",radioOff:"( )",radioOn:"(*)",warning:"\u203C"}),Awe=Object.assign({},QG,{ballotCross:"\u2718",check:"\u2714",cross:"\u2716",ellipsisLarge:"\u22EF",ellipsis:"\u2026",info:"\u2139",question:"?",questionFull:"\uFF1F",questionSmall:"\uFE56",pointer:uwe?"\u25B8":"\u276F",pointerSmall:uwe?"\u2023":"\u203A",radioOff:"\u25EF",radioOn:"\u25C9",warning:"\u26A0"});sS.exports=Xwt&&!Zwt?fwe:Awe;Reflect.defineProperty(sS.exports,"common",{enumerable:!1,value:QG});Reflect.defineProperty(sS.exports,"windows",{enumerable:!1,value:fwe});Reflect.defineProperty(sS.exports,"other",{enumerable:!1,value:Awe})});var Ju=L((gnr,TG)=>{"use strict";var $wt=t=>t!==null&&typeof t=="object"&&!Array.isArray(t),e1t=/[\u001b\u009b][[\]#;?()]*(?:(?:(?:[^\W_]*;?[^\W_]*)\u0007)|(?:(?:[0-9]{1,4}(;[0-9]{0,4})*)?[~0-9=<>cf-nqrtyA-PRZ]))/g,hwe=()=>{let t={enabled:!0,visible:!0,styles:{},keys:{}};"FORCE_COLOR"in process.env&&(t.enabled=process.env.FORCE_COLOR!=="0");let e=n=>{let c=n.open=`\x1B[${n.codes[0]}m`,f=n.close=`\x1B[${n.codes[1]}m`,p=n.regex=new RegExp(`\\u001b\\[${n.codes[1]}m`,"g");return n.wrap=(h,E)=>{h.includes(f)&&(h=h.replace(p,f+c));let C=c+h+f;return E?C.replace(/\r*\n/g,`${f}$&${c}`):C},n},r=(n,c,f)=>typeof n=="function"?n(c):n.wrap(c,f),s=(n,c)=>{if(n===""||n==null)return"";if(t.enabled===!1)return n;if(t.visible===!1)return"";let f=""+n,p=f.includes(` +`),h=c.length;for(h>0&&c.includes("unstyle")&&(c=[...new Set(["unstyle",...c])].reverse());h-- >0;)f=r(t.styles[c[h]],f,p);return f},a=(n,c,f)=>{t.styles[n]=e({name:n,codes:c}),(t.keys[f]||(t.keys[f]=[])).push(n),Reflect.defineProperty(t,n,{configurable:!0,enumerable:!0,set(h){t.alias(n,h)},get(){let h=E=>s(E,h.stack);return Reflect.setPrototypeOf(h,t),h.stack=this.stack?this.stack.concat(n):[n],h}})};return a("reset",[0,0],"modifier"),a("bold",[1,22],"modifier"),a("dim",[2,22],"modifier"),a("italic",[3,23],"modifier"),a("underline",[4,24],"modifier"),a("inverse",[7,27],"modifier"),a("hidden",[8,28],"modifier"),a("strikethrough",[9,29],"modifier"),a("black",[30,39],"color"),a("red",[31,39],"color"),a("green",[32,39],"color"),a("yellow",[33,39],"color"),a("blue",[34,39],"color"),a("magenta",[35,39],"color"),a("cyan",[36,39],"color"),a("white",[37,39],"color"),a("gray",[90,39],"color"),a("grey",[90,39],"color"),a("bgBlack",[40,49],"bg"),a("bgRed",[41,49],"bg"),a("bgGreen",[42,49],"bg"),a("bgYellow",[43,49],"bg"),a("bgBlue",[44,49],"bg"),a("bgMagenta",[45,49],"bg"),a("bgCyan",[46,49],"bg"),a("bgWhite",[47,49],"bg"),a("blackBright",[90,39],"bright"),a("redBright",[91,39],"bright"),a("greenBright",[92,39],"bright"),a("yellowBright",[93,39],"bright"),a("blueBright",[94,39],"bright"),a("magentaBright",[95,39],"bright"),a("cyanBright",[96,39],"bright"),a("whiteBright",[97,39],"bright"),a("bgBlackBright",[100,49],"bgBright"),a("bgRedBright",[101,49],"bgBright"),a("bgGreenBright",[102,49],"bgBright"),a("bgYellowBright",[103,49],"bgBright"),a("bgBlueBright",[104,49],"bgBright"),a("bgMagentaBright",[105,49],"bgBright"),a("bgCyanBright",[106,49],"bgBright"),a("bgWhiteBright",[107,49],"bgBright"),t.ansiRegex=e1t,t.hasColor=t.hasAnsi=n=>(t.ansiRegex.lastIndex=0,typeof n=="string"&&n!==""&&t.ansiRegex.test(n)),t.alias=(n,c)=>{let f=typeof c=="string"?t[c]:c;if(typeof f!="function")throw new TypeError("Expected alias to be the name of an existing color (string) or a function");f.stack||(Reflect.defineProperty(f,"name",{value:n}),t.styles[n]=f,f.stack=[n]),Reflect.defineProperty(t,n,{configurable:!0,enumerable:!0,set(p){t.alias(n,p)},get(){let p=h=>s(h,p.stack);return Reflect.setPrototypeOf(p,t),p.stack=this.stack?this.stack.concat(f.stack):f.stack,p}})},t.theme=n=>{if(!$wt(n))throw new TypeError("Expected theme to be an object");for(let c of Object.keys(n))t.alias(c,n[c]);return t},t.alias("unstyle",n=>typeof n=="string"&&n!==""?(t.ansiRegex.lastIndex=0,n.replace(t.ansiRegex,"")):""),t.alias("noop",n=>n),t.none=t.clear=t.noop,t.stripColor=t.unstyle,t.symbols=pwe(),t.define=a,t};TG.exports=hwe();TG.exports.create=hwe});var $o=L(pn=>{"use strict";var t1t=Object.prototype.toString,Gc=Ju(),gwe=!1,RG=[],dwe={yellow:"blue",cyan:"red",green:"magenta",black:"white",blue:"yellow",red:"cyan",magenta:"green",white:"black"};pn.longest=(t,e)=>t.reduce((r,s)=>Math.max(r,e?s[e].length:s.length),0);pn.hasColor=t=>!!t&&Gc.hasColor(t);var ZR=pn.isObject=t=>t!==null&&typeof t=="object"&&!Array.isArray(t);pn.nativeType=t=>t1t.call(t).slice(8,-1).toLowerCase().replace(/\s/g,"");pn.isAsyncFn=t=>pn.nativeType(t)==="asyncfunction";pn.isPrimitive=t=>t!=null&&typeof t!="object"&&typeof t!="function";pn.resolve=(t,e,...r)=>typeof e=="function"?e.call(t,...r):e;pn.scrollDown=(t=[])=>[...t.slice(1),t[0]];pn.scrollUp=(t=[])=>[t.pop(),...t];pn.reorder=(t=[])=>{let e=t.slice();return e.sort((r,s)=>r.index>s.index?1:r.index{let s=t.length,a=r===s?0:r<0?s-1:r,n=t[e];t[e]=t[a],t[a]=n};pn.width=(t,e=80)=>{let r=t&&t.columns?t.columns:e;return t&&typeof t.getWindowSize=="function"&&(r=t.getWindowSize()[0]),process.platform==="win32"?r-1:r};pn.height=(t,e=20)=>{let r=t&&t.rows?t.rows:e;return t&&typeof t.getWindowSize=="function"&&(r=t.getWindowSize()[1]),r};pn.wordWrap=(t,e={})=>{if(!t)return t;typeof e=="number"&&(e={width:e});let{indent:r="",newline:s=` +`+r,width:a=80}=e,n=(s+r).match(/[^\S\n]/g)||[];a-=n.length;let c=`.{1,${a}}([\\s\\u200B]+|$)|[^\\s\\u200B]+?([\\s\\u200B]+|$)`,f=t.trim(),p=new RegExp(c,"g"),h=f.match(p)||[];return h=h.map(E=>E.replace(/\n$/,"")),e.padEnd&&(h=h.map(E=>E.padEnd(a," "))),e.padStart&&(h=h.map(E=>E.padStart(a," "))),r+h.join(s)};pn.unmute=t=>{let e=t.stack.find(s=>Gc.keys.color.includes(s));return e?Gc[e]:t.stack.find(s=>s.slice(2)==="bg")?Gc[e.slice(2)]:s=>s};pn.pascal=t=>t?t[0].toUpperCase()+t.slice(1):"";pn.inverse=t=>{if(!t||!t.stack)return t;let e=t.stack.find(s=>Gc.keys.color.includes(s));if(e){let s=Gc["bg"+pn.pascal(e)];return s?s.black:t}let r=t.stack.find(s=>s.slice(0,2)==="bg");return r?Gc[r.slice(2).toLowerCase()]||t:Gc.none};pn.complement=t=>{if(!t||!t.stack)return t;let e=t.stack.find(s=>Gc.keys.color.includes(s)),r=t.stack.find(s=>s.slice(0,2)==="bg");if(e&&!r)return Gc[dwe[e]||e];if(r){let s=r.slice(2).toLowerCase(),a=dwe[s];return a&&Gc["bg"+pn.pascal(a)]||t}return Gc.none};pn.meridiem=t=>{let e=t.getHours(),r=t.getMinutes(),s=e>=12?"pm":"am";e=e%12;let a=e===0?12:e,n=r<10?"0"+r:r;return a+":"+n+" "+s};pn.set=(t={},e="",r)=>e.split(".").reduce((s,a,n,c)=>{let f=c.length-1>n?s[a]||{}:r;return!pn.isObject(f)&&n{let s=t[e]==null?e.split(".").reduce((a,n)=>a&&a[n],t):t[e];return s??r};pn.mixin=(t,e)=>{if(!ZR(t))return e;if(!ZR(e))return t;for(let r of Object.keys(e)){let s=Object.getOwnPropertyDescriptor(e,r);if(s.hasOwnProperty("value"))if(t.hasOwnProperty(r)&&ZR(s.value)){let a=Object.getOwnPropertyDescriptor(t,r);ZR(a.value)?t[r]=pn.merge({},t[r],e[r]):Reflect.defineProperty(t,r,s)}else Reflect.defineProperty(t,r,s);else Reflect.defineProperty(t,r,s)}return t};pn.merge=(...t)=>{let e={};for(let r of t)pn.mixin(e,r);return e};pn.mixinEmitter=(t,e)=>{let r=e.constructor.prototype;for(let s of Object.keys(r)){let a=r[s];typeof a=="function"?pn.define(t,s,a.bind(e)):pn.define(t,s,a)}};pn.onExit=t=>{let e=(r,s)=>{gwe||(gwe=!0,RG.forEach(a=>a()),r===!0&&process.exit(128+s))};RG.length===0&&(process.once("SIGTERM",e.bind(null,!0,15)),process.once("SIGINT",e.bind(null,!0,2)),process.once("exit",e)),RG.push(t)};pn.define=(t,e,r)=>{Reflect.defineProperty(t,e,{value:r})};pn.defineExport=(t,e,r)=>{let s;Reflect.defineProperty(t,e,{enumerable:!0,configurable:!0,set(a){s=a},get(){return s?s():r()}})}});var mwe=L(iC=>{"use strict";iC.ctrl={a:"first",b:"backward",c:"cancel",d:"deleteForward",e:"last",f:"forward",g:"reset",i:"tab",k:"cutForward",l:"reset",n:"newItem",m:"cancel",j:"submit",p:"search",r:"remove",s:"save",u:"undo",w:"cutLeft",x:"toggleCursor",v:"paste"};iC.shift={up:"shiftUp",down:"shiftDown",left:"shiftLeft",right:"shiftRight",tab:"prev"};iC.fn={up:"pageUp",down:"pageDown",left:"pageLeft",right:"pageRight",delete:"deleteForward"};iC.option={b:"backward",f:"forward",d:"cutRight",left:"cutLeft",up:"altUp",down:"altDown"};iC.keys={pageup:"pageUp",pagedown:"pageDown",home:"home",end:"end",cancel:"cancel",delete:"deleteForward",backspace:"delete",down:"down",enter:"submit",escape:"cancel",left:"left",space:"space",number:"number",return:"submit",right:"right",tab:"next",up:"up"}});var Iwe=L((ynr,Ewe)=>{"use strict";var ywe=ye("readline"),r1t=mwe(),n1t=/^(?:\x1b)([a-zA-Z0-9])$/,i1t=/^(?:\x1b+)(O|N|\[|\[\[)(?:(\d+)(?:;(\d+))?([~^$])|(?:1;)?(\d+)?([a-zA-Z]))/,s1t={OP:"f1",OQ:"f2",OR:"f3",OS:"f4","[11~":"f1","[12~":"f2","[13~":"f3","[14~":"f4","[[A":"f1","[[B":"f2","[[C":"f3","[[D":"f4","[[E":"f5","[15~":"f5","[17~":"f6","[18~":"f7","[19~":"f8","[20~":"f9","[21~":"f10","[23~":"f11","[24~":"f12","[A":"up","[B":"down","[C":"right","[D":"left","[E":"clear","[F":"end","[H":"home",OA:"up",OB:"down",OC:"right",OD:"left",OE:"clear",OF:"end",OH:"home","[1~":"home","[2~":"insert","[3~":"delete","[4~":"end","[5~":"pageup","[6~":"pagedown","[[5~":"pageup","[[6~":"pagedown","[7~":"home","[8~":"end","[a":"up","[b":"down","[c":"right","[d":"left","[e":"clear","[2$":"insert","[3$":"delete","[5$":"pageup","[6$":"pagedown","[7$":"home","[8$":"end",Oa:"up",Ob:"down",Oc:"right",Od:"left",Oe:"clear","[2^":"insert","[3^":"delete","[5^":"pageup","[6^":"pagedown","[7^":"home","[8^":"end","[Z":"tab"};function o1t(t){return["[a","[b","[c","[d","[e","[2$","[3$","[5$","[6$","[7$","[8$","[Z"].includes(t)}function a1t(t){return["Oa","Ob","Oc","Od","Oe","[2^","[3^","[5^","[6^","[7^","[8^"].includes(t)}var XR=(t="",e={})=>{let r,s={name:e.name,ctrl:!1,meta:!1,shift:!1,option:!1,sequence:t,raw:t,...e};if(Buffer.isBuffer(t)?t[0]>127&&t[1]===void 0?(t[0]-=128,t="\x1B"+String(t)):t=String(t):t!==void 0&&typeof t!="string"?t=String(t):t||(t=s.sequence||""),s.sequence=s.sequence||t||s.name,t==="\r")s.raw=void 0,s.name="return";else if(t===` +`)s.name="enter";else if(t===" ")s.name="tab";else if(t==="\b"||t==="\x7F"||t==="\x1B\x7F"||t==="\x1B\b")s.name="backspace",s.meta=t.charAt(0)==="\x1B";else if(t==="\x1B"||t==="\x1B\x1B")s.name="escape",s.meta=t.length===2;else if(t===" "||t==="\x1B ")s.name="space",s.meta=t.length===2;else if(t<="")s.name=String.fromCharCode(t.charCodeAt(0)+97-1),s.ctrl=!0;else if(t.length===1&&t>="0"&&t<="9")s.name="number";else if(t.length===1&&t>="a"&&t<="z")s.name=t;else if(t.length===1&&t>="A"&&t<="Z")s.name=t.toLowerCase(),s.shift=!0;else if(r=n1t.exec(t))s.meta=!0,s.shift=/^[A-Z]$/.test(r[1]);else if(r=i1t.exec(t)){let a=[...t];a[0]==="\x1B"&&a[1]==="\x1B"&&(s.option=!0);let n=[r[1],r[2],r[4],r[6]].filter(Boolean).join(""),c=(r[3]||r[5]||1)-1;s.ctrl=!!(c&4),s.meta=!!(c&10),s.shift=!!(c&1),s.code=n,s.name=s1t[n],s.shift=o1t(n)||s.shift,s.ctrl=a1t(n)||s.ctrl}return s};XR.listen=(t={},e)=>{let{stdin:r}=t;if(!r||r!==process.stdin&&!r.isTTY)throw new Error("Invalid stream passed");let s=ywe.createInterface({terminal:!0,input:r});ywe.emitKeypressEvents(r,s);let a=(f,p)=>e(f,XR(f,p),s),n=r.isRaw;return r.isTTY&&r.setRawMode(!0),r.on("keypress",a),s.resume(),()=>{r.isTTY&&r.setRawMode(n),r.removeListener("keypress",a),s.pause(),s.close()}};XR.action=(t,e,r)=>{let s={...r1t,...r};return e.ctrl?(e.action=s.ctrl[e.name],e):e.option&&s.option?(e.action=s.option[e.name],e):e.shift?(e.action=s.shift[e.name],e):(e.action=s.keys[e.name],e)};Ewe.exports=XR});var wwe=L((Enr,Cwe)=>{"use strict";Cwe.exports=t=>{t.timers=t.timers||{};let e=t.options.timers;if(e)for(let r of Object.keys(e)){let s=e[r];typeof s=="number"&&(s={interval:s}),l1t(t,r,s)}};function l1t(t,e,r={}){let s=t.timers[e]={name:e,start:Date.now(),ms:0,tick:0},a=r.interval||120;s.frames=r.frames||[],s.loading=!0;let n=setInterval(()=>{s.ms=Date.now()-s.start,s.tick++,t.render()},a);return s.stop=()=>{s.loading=!1,clearInterval(n)},Reflect.defineProperty(s,"interval",{value:n}),t.once("close",()=>s.stop()),s.stop}});var vwe=L((Inr,Bwe)=>{"use strict";var{define:c1t,width:u1t}=$o(),FG=class{constructor(e){let r=e.options;c1t(this,"_prompt",e),this.type=e.type,this.name=e.name,this.message="",this.header="",this.footer="",this.error="",this.hint="",this.input="",this.cursor=0,this.index=0,this.lines=0,this.tick=0,this.prompt="",this.buffer="",this.width=u1t(r.stdout||process.stdout),Object.assign(this,r),this.name=this.name||this.message,this.message=this.message||this.name,this.symbols=e.symbols,this.styles=e.styles,this.required=new Set,this.cancelled=!1,this.submitted=!1}clone(){let e={...this};return e.status=this.status,e.buffer=Buffer.from(e.buffer),delete e.clone,e}set color(e){this._color=e}get color(){let e=this.prompt.styles;if(this.cancelled)return e.cancelled;if(this.submitted)return e.submitted;let r=this._color||e[this.status];return typeof r=="function"?r:e.pending}set loading(e){this._loading=e}get loading(){return typeof this._loading=="boolean"?this._loading:this.loadingChoices?"choices":!1}get status(){return this.cancelled?"cancelled":this.submitted?"submitted":"pending"}};Bwe.exports=FG});var Dwe=L((Cnr,Swe)=>{"use strict";var NG=$o(),mo=Ju(),OG={default:mo.noop,noop:mo.noop,set inverse(t){this._inverse=t},get inverse(){return this._inverse||NG.inverse(this.primary)},set complement(t){this._complement=t},get complement(){return this._complement||NG.complement(this.primary)},primary:mo.cyan,success:mo.green,danger:mo.magenta,strong:mo.bold,warning:mo.yellow,muted:mo.dim,disabled:mo.gray,dark:mo.dim.gray,underline:mo.underline,set info(t){this._info=t},get info(){return this._info||this.primary},set em(t){this._em=t},get em(){return this._em||this.primary.underline},set heading(t){this._heading=t},get heading(){return this._heading||this.muted.underline},set pending(t){this._pending=t},get pending(){return this._pending||this.primary},set submitted(t){this._submitted=t},get submitted(){return this._submitted||this.success},set cancelled(t){this._cancelled=t},get cancelled(){return this._cancelled||this.danger},set typing(t){this._typing=t},get typing(){return this._typing||this.dim},set placeholder(t){this._placeholder=t},get placeholder(){return this._placeholder||this.primary.dim},set highlight(t){this._highlight=t},get highlight(){return this._highlight||this.inverse}};OG.merge=(t={})=>{t.styles&&typeof t.styles.enabled=="boolean"&&(mo.enabled=t.styles.enabled),t.styles&&typeof t.styles.visible=="boolean"&&(mo.visible=t.styles.visible);let e=NG.merge({},OG,t.styles);delete e.merge;for(let r of Object.keys(mo))e.hasOwnProperty(r)||Reflect.defineProperty(e,r,{get:()=>mo[r]});for(let r of Object.keys(mo.styles))e.hasOwnProperty(r)||Reflect.defineProperty(e,r,{get:()=>mo[r]});return e};Swe.exports=OG});var Pwe=L((wnr,bwe)=>{"use strict";var LG=process.platform==="win32",$p=Ju(),f1t=$o(),MG={...$p.symbols,upDownDoubleArrow:"\u21D5",upDownDoubleArrow2:"\u2B0D",upDownArrow:"\u2195",asterisk:"*",asterism:"\u2042",bulletWhite:"\u25E6",electricArrow:"\u2301",ellipsisLarge:"\u22EF",ellipsisSmall:"\u2026",fullBlock:"\u2588",identicalTo:"\u2261",indicator:$p.symbols.check,leftAngle:"\u2039",mark:"\u203B",minus:"\u2212",multiplication:"\xD7",obelus:"\xF7",percent:"%",pilcrow:"\xB6",pilcrow2:"\u2761",pencilUpRight:"\u2710",pencilDownRight:"\u270E",pencilRight:"\u270F",plus:"+",plusMinus:"\xB1",pointRight:"\u261E",rightAngle:"\u203A",section:"\xA7",hexagon:{off:"\u2B21",on:"\u2B22",disabled:"\u2B22"},ballot:{on:"\u2611",off:"\u2610",disabled:"\u2612"},stars:{on:"\u2605",off:"\u2606",disabled:"\u2606"},folder:{on:"\u25BC",off:"\u25B6",disabled:"\u25B6"},prefix:{pending:$p.symbols.question,submitted:$p.symbols.check,cancelled:$p.symbols.cross},separator:{pending:$p.symbols.pointerSmall,submitted:$p.symbols.middot,cancelled:$p.symbols.middot},radio:{off:LG?"( )":"\u25EF",on:LG?"(*)":"\u25C9",disabled:LG?"(|)":"\u24BE"},numbers:["\u24EA","\u2460","\u2461","\u2462","\u2463","\u2464","\u2465","\u2466","\u2467","\u2468","\u2469","\u246A","\u246B","\u246C","\u246D","\u246E","\u246F","\u2470","\u2471","\u2472","\u2473","\u3251","\u3252","\u3253","\u3254","\u3255","\u3256","\u3257","\u3258","\u3259","\u325A","\u325B","\u325C","\u325D","\u325E","\u325F","\u32B1","\u32B2","\u32B3","\u32B4","\u32B5","\u32B6","\u32B7","\u32B8","\u32B9","\u32BA","\u32BB","\u32BC","\u32BD","\u32BE","\u32BF"]};MG.merge=t=>{let e=f1t.merge({},$p.symbols,MG,t.symbols);return delete e.merge,e};bwe.exports=MG});var kwe=L((Bnr,xwe)=>{"use strict";var A1t=Dwe(),p1t=Pwe(),h1t=$o();xwe.exports=t=>{t.options=h1t.merge({},t.options.theme,t.options),t.symbols=p1t.merge(t.options),t.styles=A1t.merge(t.options)}});var Nwe=L((Rwe,Fwe)=>{"use strict";var Qwe=process.env.TERM_PROGRAM==="Apple_Terminal",g1t=Ju(),_G=$o(),zu=Fwe.exports=Rwe,Mi="\x1B[",Twe="\x07",UG=!1,q0=zu.code={bell:Twe,beep:Twe,beginning:`${Mi}G`,down:`${Mi}J`,esc:Mi,getPosition:`${Mi}6n`,hide:`${Mi}?25l`,line:`${Mi}2K`,lineEnd:`${Mi}K`,lineStart:`${Mi}1K`,restorePosition:Mi+(Qwe?"8":"u"),savePosition:Mi+(Qwe?"7":"s"),screen:`${Mi}2J`,show:`${Mi}?25h`,up:`${Mi}1J`},Bm=zu.cursor={get hidden(){return UG},hide(){return UG=!0,q0.hide},show(){return UG=!1,q0.show},forward:(t=1)=>`${Mi}${t}C`,backward:(t=1)=>`${Mi}${t}D`,nextLine:(t=1)=>`${Mi}E`.repeat(t),prevLine:(t=1)=>`${Mi}F`.repeat(t),up:(t=1)=>t?`${Mi}${t}A`:"",down:(t=1)=>t?`${Mi}${t}B`:"",right:(t=1)=>t?`${Mi}${t}C`:"",left:(t=1)=>t?`${Mi}${t}D`:"",to(t,e){return e?`${Mi}${e+1};${t+1}H`:`${Mi}${t+1}G`},move(t=0,e=0){let r="";return r+=t<0?Bm.left(-t):t>0?Bm.right(t):"",r+=e<0?Bm.up(-e):e>0?Bm.down(e):"",r},restore(t={}){let{after:e,cursor:r,initial:s,input:a,prompt:n,size:c,value:f}=t;if(s=_G.isPrimitive(s)?String(s):"",a=_G.isPrimitive(a)?String(a):"",f=_G.isPrimitive(f)?String(f):"",c){let p=zu.cursor.up(c)+zu.cursor.to(n.length),h=a.length-r;return h>0&&(p+=zu.cursor.left(h)),p}if(f||e){let p=!a&&s?-s.length:-a.length+r;return e&&(p-=e.length),a===""&&s&&!n.includes(s)&&(p+=s.length),zu.cursor.move(p)}}},HG=zu.erase={screen:q0.screen,up:q0.up,down:q0.down,line:q0.line,lineEnd:q0.lineEnd,lineStart:q0.lineStart,lines(t){let e="";for(let r=0;r{if(!e)return HG.line+Bm.to(0);let r=n=>[...g1t.unstyle(n)].length,s=t.split(/\r?\n/),a=0;for(let n of s)a+=1+Math.floor(Math.max(r(n)-1,0)/e);return(HG.line+Bm.prevLine()).repeat(a-1)+HG.line+Bm.to(0)}});var sC=L((vnr,Lwe)=>{"use strict";var d1t=ye("events"),Owe=Ju(),jG=Iwe(),m1t=wwe(),y1t=vwe(),E1t=kwe(),hl=$o(),vm=Nwe(),qG=class t extends d1t{constructor(e={}){super(),this.name=e.name,this.type=e.type,this.options=e,E1t(this),m1t(this),this.state=new y1t(this),this.initial=[e.initial,e.default].find(r=>r!=null),this.stdout=e.stdout||process.stdout,this.stdin=e.stdin||process.stdin,this.scale=e.scale||1,this.term=this.options.term||process.env.TERM_PROGRAM,this.margin=C1t(this.options.margin),this.setMaxListeners(0),I1t(this)}async keypress(e,r={}){this.keypressed=!0;let s=jG.action(e,jG(e,r),this.options.actions);this.state.keypress=s,this.emit("keypress",e,s),this.emit("state",this.state.clone());let a=this.options[s.action]||this[s.action]||this.dispatch;if(typeof a=="function")return await a.call(this,e,s);this.alert()}alert(){delete this.state.alert,this.options.show===!1?this.emit("alert"):this.stdout.write(vm.code.beep)}cursorHide(){this.stdout.write(vm.cursor.hide()),hl.onExit(()=>this.cursorShow())}cursorShow(){this.stdout.write(vm.cursor.show())}write(e){e&&(this.stdout&&this.state.show!==!1&&this.stdout.write(e),this.state.buffer+=e)}clear(e=0){let r=this.state.buffer;this.state.buffer="",!(!r&&!e||this.options.show===!1)&&this.stdout.write(vm.cursor.down(e)+vm.clear(r,this.width))}restore(){if(this.state.closed||this.options.show===!1)return;let{prompt:e,after:r,rest:s}=this.sections(),{cursor:a,initial:n="",input:c="",value:f=""}=this,p=this.state.size=s.length,h={after:r,cursor:a,initial:n,input:c,prompt:e,size:p,value:f},E=vm.cursor.restore(h);E&&this.stdout.write(E)}sections(){let{buffer:e,input:r,prompt:s}=this.state;s=Owe.unstyle(s);let a=Owe.unstyle(e),n=a.indexOf(s),c=a.slice(0,n),p=a.slice(n).split(` +`),h=p[0],E=p[p.length-1],S=(s+(r?" "+r:"")).length,P=Se.call(this,this.value),this.result=()=>s.call(this,this.value),typeof r.initial=="function"&&(this.initial=await r.initial.call(this,this)),typeof r.onRun=="function"&&await r.onRun.call(this,this),typeof r.onSubmit=="function"){let a=r.onSubmit.bind(this),n=this.submit.bind(this);delete this.options.onSubmit,this.submit=async()=>(await a(this.name,this.value,this),n())}await this.start(),await this.render()}render(){throw new Error("expected prompt to have a custom render method")}run(){return new Promise(async(e,r)=>{if(this.once("submit",e),this.once("cancel",r),await this.skip())return this.render=()=>{},this.submit();await this.initialize(),this.emit("run")})}async element(e,r,s){let{options:a,state:n,symbols:c,timers:f}=this,p=f&&f[e];n.timer=p;let h=a[e]||n[e]||c[e],E=r&&r[e]!=null?r[e]:await h;if(E==="")return E;let C=await this.resolve(E,n,r,s);return!C&&r&&r[e]?this.resolve(h,n,r,s):C}async prefix(){let e=await this.element("prefix")||this.symbols,r=this.timers&&this.timers.prefix,s=this.state;return s.timer=r,hl.isObject(e)&&(e=e[s.status]||e.pending),hl.hasColor(e)?e:(this.styles[s.status]||this.styles.pending)(e)}async message(){let e=await this.element("message");return hl.hasColor(e)?e:this.styles.strong(e)}async separator(){let e=await this.element("separator")||this.symbols,r=this.timers&&this.timers.separator,s=this.state;s.timer=r;let a=e[s.status]||e.pending||s.separator,n=await this.resolve(a,s);return hl.isObject(n)&&(n=n[s.status]||n.pending),hl.hasColor(n)?n:this.styles.muted(n)}async pointer(e,r){let s=await this.element("pointer",e,r);if(typeof s=="string"&&hl.hasColor(s))return s;if(s){let a=this.styles,n=this.index===r,c=n?a.primary:h=>h,f=await this.resolve(s[n?"on":"off"]||s,this.state),p=hl.hasColor(f)?f:c(f);return n?p:" ".repeat(f.length)}}async indicator(e,r){let s=await this.element("indicator",e,r);if(typeof s=="string"&&hl.hasColor(s))return s;if(s){let a=this.styles,n=e.enabled===!0,c=n?a.success:a.dark,f=s[n?"on":"off"]||s;return hl.hasColor(f)?f:c(f)}return""}body(){return null}footer(){if(this.state.status==="pending")return this.element("footer")}header(){if(this.state.status==="pending")return this.element("header")}async hint(){if(this.state.status==="pending"&&!this.isValue(this.state.input)){let e=await this.element("hint");return hl.hasColor(e)?e:this.styles.muted(e)}}error(e){return this.state.submitted?"":e||this.state.error}format(e){return e}result(e){return e}validate(e){return this.options.required===!0?this.isValue(e):!0}isValue(e){return e!=null&&e!==""}resolve(e,...r){return hl.resolve(this,e,...r)}get base(){return t.prototype}get style(){return this.styles[this.state.status]}get height(){return this.options.rows||hl.height(this.stdout,25)}get width(){return this.options.columns||hl.width(this.stdout,80)}get size(){return{width:this.width,height:this.height}}set cursor(e){this.state.cursor=e}get cursor(){return this.state.cursor}set input(e){this.state.input=e}get input(){return this.state.input}set value(e){this.state.value=e}get value(){let{input:e,value:r}=this.state,s=[r,e].find(this.isValue.bind(this));return this.isValue(s)?s:this.initial}static get prompt(){return e=>new this(e).run()}};function I1t(t){let e=a=>t[a]===void 0||typeof t[a]=="function",r=["actions","choices","initial","margin","roles","styles","symbols","theme","timers","value"],s=["body","footer","error","header","hint","indicator","message","prefix","separator","skip"];for(let a of Object.keys(t.options)){if(r.includes(a)||/^on[A-Z]/.test(a))continue;let n=t.options[a];typeof n=="function"&&e(a)?s.includes(a)||(t[a]=n.bind(t)):typeof t[a]!="function"&&(t[a]=n)}}function C1t(t){typeof t=="number"&&(t=[t,t,t,t]);let e=[].concat(t||[]),r=a=>a%2===0?` +`:" ",s=[];for(let a=0;a<4;a++){let n=r(a);e[a]?s.push(n.repeat(e[a])):s.push("")}return s}Lwe.exports=qG});var Uwe=L((Snr,_we)=>{"use strict";var w1t=$o(),Mwe={default(t,e){return e},checkbox(t,e){throw new Error("checkbox role is not implemented yet")},editable(t,e){throw new Error("editable role is not implemented yet")},expandable(t,e){throw new Error("expandable role is not implemented yet")},heading(t,e){return e.disabled="",e.indicator=[e.indicator," "].find(r=>r!=null),e.message=e.message||"",e},input(t,e){throw new Error("input role is not implemented yet")},option(t,e){return Mwe.default(t,e)},radio(t,e){throw new Error("radio role is not implemented yet")},separator(t,e){return e.disabled="",e.indicator=[e.indicator," "].find(r=>r!=null),e.message=e.message||t.symbols.line.repeat(5),e},spacer(t,e){return e}};_we.exports=(t,e={})=>{let r=w1t.merge({},Mwe,e.roles);return r[t]||r.default}});var oS=L((Dnr,qwe)=>{"use strict";var B1t=Ju(),v1t=sC(),S1t=Uwe(),$R=$o(),{reorder:GG,scrollUp:D1t,scrollDown:b1t,isObject:Hwe,swap:P1t}=$R,WG=class extends v1t{constructor(e){super(e),this.cursorHide(),this.maxSelected=e.maxSelected||1/0,this.multiple=e.multiple||!1,this.initial=e.initial||0,this.delay=e.delay||0,this.longest=0,this.num=""}async initialize(){typeof this.options.initial=="function"&&(this.initial=await this.options.initial.call(this)),await this.reset(!0),await super.initialize()}async reset(){let{choices:e,initial:r,autofocus:s,suggest:a}=this.options;if(this.state._choices=[],this.state.choices=[],this.choices=await Promise.all(await this.toChoices(e)),this.choices.forEach(n=>n.enabled=!1),typeof a!="function"&&this.selectable.length===0)throw new Error("At least one choice must be selectable");Hwe(r)&&(r=Object.keys(r)),Array.isArray(r)?(s!=null&&(this.index=this.findIndex(s)),r.forEach(n=>this.enable(this.find(n))),await this.render()):(s!=null&&(r=s),typeof r=="string"&&(r=this.findIndex(r)),typeof r=="number"&&r>-1&&(this.index=Math.max(0,Math.min(r,this.choices.length)),this.enable(this.find(this.index)))),this.isDisabled(this.focused)&&await this.down()}async toChoices(e,r){this.state.loadingChoices=!0;let s=[],a=0,n=async(c,f)=>{typeof c=="function"&&(c=await c.call(this)),c instanceof Promise&&(c=await c);for(let p=0;p(this.state.loadingChoices=!1,c))}async toChoice(e,r,s){if(typeof e=="function"&&(e=await e.call(this,this)),e instanceof Promise&&(e=await e),typeof e=="string"&&(e={name:e}),e.normalized)return e;e.normalized=!0;let a=e.value;if(e=S1t(e.role,this.options)(this,e),typeof e.disabled=="string"&&!e.hint&&(e.hint=e.disabled,e.disabled=!0),e.disabled===!0&&e.hint==null&&(e.hint="(disabled)"),e.index!=null)return e;e.name=e.name||e.key||e.title||e.value||e.message,e.message=e.message||e.name||"",e.value=[e.value,e.name].find(this.isValue.bind(this)),e.input="",e.index=r,e.cursor=0,$R.define(e,"parent",s),e.level=s?s.level+1:1,e.indent==null&&(e.indent=s?s.indent+" ":e.indent||""),e.path=s?s.path+"."+e.name:e.name,e.enabled=!!(this.multiple&&!this.isDisabled(e)&&(e.enabled||this.isSelected(e))),this.isDisabled(e)||(this.longest=Math.max(this.longest,B1t.unstyle(e.message).length));let c={...e};return e.reset=(f=c.input,p=c.value)=>{for(let h of Object.keys(c))e[h]=c[h];e.input=f,e.value=p},a==null&&typeof e.initial=="function"&&(e.input=await e.initial.call(this,this.state,e,r)),e}async onChoice(e,r){this.emit("choice",e,r,this),typeof e.onChoice=="function"&&await e.onChoice.call(this,this.state,e,r)}async addChoice(e,r,s){let a=await this.toChoice(e,r,s);return this.choices.push(a),this.index=this.choices.length-1,this.limit=this.choices.length,a}async newItem(e,r,s){let a={name:"New choice name?",editable:!0,newChoice:!0,...e},n=await this.addChoice(a,r,s);return n.updateChoice=()=>{delete n.newChoice,n.name=n.message=n.input,n.input="",n.cursor=0},this.render()}indent(e){return e.indent==null?e.level>1?" ".repeat(e.level-1):"":e.indent}dispatch(e,r){if(this.multiple&&this[r.name])return this[r.name]();this.alert()}focus(e,r){return typeof r!="boolean"&&(r=e.enabled),r&&!e.enabled&&this.selected.length>=this.maxSelected?this.alert():(this.index=e.index,e.enabled=r&&!this.isDisabled(e),e)}space(){return this.multiple?(this.toggle(this.focused),this.render()):this.alert()}a(){if(this.maxSelectedr.enabled);return this.choices.forEach(r=>r.enabled=!e),this.render()}i(){return this.choices.length-this.selected.length>this.maxSelected?this.alert():(this.choices.forEach(e=>e.enabled=!e.enabled),this.render())}g(e=this.focused){return this.choices.some(r=>!!r.parent)?(this.toggle(e.parent&&!e.choices?e.parent:e),this.render()):this.a()}toggle(e,r){if(!e.enabled&&this.selected.length>=this.maxSelected)return this.alert();typeof r!="boolean"&&(r=!e.enabled),e.enabled=r,e.choices&&e.choices.forEach(a=>this.toggle(a,r));let s=e.parent;for(;s;){let a=s.choices.filter(n=>this.isDisabled(n));s.enabled=a.every(n=>n.enabled===!0),s=s.parent}return jwe(this,this.choices),this.emit("toggle",e,this),e}enable(e){return this.selected.length>=this.maxSelected?this.alert():(e.enabled=!this.isDisabled(e),e.choices&&e.choices.forEach(this.enable.bind(this)),e)}disable(e){return e.enabled=!1,e.choices&&e.choices.forEach(this.disable.bind(this)),e}number(e){this.num+=e;let r=s=>{let a=Number(s);if(a>this.choices.length-1)return this.alert();let n=this.focused,c=this.choices.find(f=>a===f.index);if(!c.enabled&&this.selected.length>=this.maxSelected)return this.alert();if(this.visible.indexOf(c)===-1){let f=GG(this.choices),p=f.indexOf(c);if(n.index>p){let h=f.slice(p,p+this.limit),E=f.filter(C=>!h.includes(C));this.choices=h.concat(E)}else{let h=p-this.limit+1;this.choices=f.slice(h).concat(f.slice(0,h))}}return this.index=this.choices.indexOf(c),this.toggle(this.focused),this.render()};return clearTimeout(this.numberTimeout),new Promise(s=>{let a=this.choices.length,n=this.num,c=(f=!1,p)=>{clearTimeout(this.numberTimeout),f&&(p=r(n)),this.num="",s(p)};if(n==="0"||n.length===1&&+(n+"0")>a)return c(!0);if(Number(n)>a)return c(!1,this.alert());this.numberTimeout=setTimeout(()=>c(!0),this.delay)})}home(){return this.choices=GG(this.choices),this.index=0,this.render()}end(){let e=this.choices.length-this.limit,r=GG(this.choices);return this.choices=r.slice(e).concat(r.slice(0,e)),this.index=this.limit-1,this.render()}first(){return this.index=0,this.render()}last(){return this.index=this.visible.length-1,this.render()}prev(){return this.visible.length<=1?this.alert():this.up()}next(){return this.visible.length<=1?this.alert():this.down()}right(){return this.cursor>=this.input.length?this.alert():(this.cursor++,this.render())}left(){return this.cursor<=0?this.alert():(this.cursor--,this.render())}up(){let e=this.choices.length,r=this.visible.length,s=this.index;return this.options.scroll===!1&&s===0?this.alert():e>r&&s===0?this.scrollUp():(this.index=(s-1%e+e)%e,this.isDisabled()?this.up():this.render())}down(){let e=this.choices.length,r=this.visible.length,s=this.index;return this.options.scroll===!1&&s===r-1?this.alert():e>r&&s===r-1?this.scrollDown():(this.index=(s+1)%e,this.isDisabled()?this.down():this.render())}scrollUp(e=0){return this.choices=D1t(this.choices),this.index=e,this.isDisabled()?this.up():this.render()}scrollDown(e=this.visible.length-1){return this.choices=b1t(this.choices),this.index=e,this.isDisabled()?this.down():this.render()}async shiftUp(){if(this.options.sort===!0){this.sorting=!0,this.swap(this.index-1),await this.up(),this.sorting=!1;return}return this.scrollUp(this.index)}async shiftDown(){if(this.options.sort===!0){this.sorting=!0,this.swap(this.index+1),await this.down(),this.sorting=!1;return}return this.scrollDown(this.index)}pageUp(){return this.visible.length<=1?this.alert():(this.limit=Math.max(this.limit-1,0),this.index=Math.min(this.limit-1,this.index),this._limit=this.limit,this.isDisabled()?this.up():this.render())}pageDown(){return this.visible.length>=this.choices.length?this.alert():(this.index=Math.max(0,this.index),this.limit=Math.min(this.limit+1,this.choices.length),this._limit=this.limit,this.isDisabled()?this.down():this.render())}swap(e){P1t(this.choices,this.index,e)}isDisabled(e=this.focused){return e&&["disabled","collapsed","hidden","completing","readonly"].some(s=>e[s]===!0)?!0:e&&e.role==="heading"}isEnabled(e=this.focused){if(Array.isArray(e))return e.every(r=>this.isEnabled(r));if(e.choices){let r=e.choices.filter(s=>!this.isDisabled(s));return e.enabled&&r.every(s=>this.isEnabled(s))}return e.enabled&&!this.isDisabled(e)}isChoice(e,r){return e.name===r||e.index===Number(r)}isSelected(e){return Array.isArray(this.initial)?this.initial.some(r=>this.isChoice(e,r)):this.isChoice(e,this.initial)}map(e=[],r="value"){return[].concat(e||[]).reduce((s,a)=>(s[a]=this.find(a,r),s),{})}filter(e,r){let a=typeof e=="function"?e:(f,p)=>[f.name,p].includes(e),c=(this.options.multiple?this.state._choices:this.choices).filter(a);return r?c.map(f=>f[r]):c}find(e,r){if(Hwe(e))return r?e[r]:e;let a=typeof e=="function"?e:(c,f)=>[c.name,f].includes(e),n=this.choices.find(a);if(n)return r?n[r]:n}findIndex(e){return this.choices.indexOf(this.find(e))}async submit(){let e=this.focused;if(!e)return this.alert();if(e.newChoice)return e.input?(e.updateChoice(),this.render()):this.alert();if(this.choices.some(c=>c.newChoice))return this.alert();let{reorder:r,sort:s}=this.options,a=this.multiple===!0,n=this.selected;return n===void 0?this.alert():(Array.isArray(n)&&r!==!1&&s!==!0&&(n=$R.reorder(n)),this.value=a?n.map(c=>c.name):n.name,super.submit())}set choices(e=[]){this.state._choices=this.state._choices||[],this.state.choices=e;for(let r of e)this.state._choices.some(s=>s.name===r.name)||this.state._choices.push(r);if(!this._initial&&this.options.initial){this._initial=!0;let r=this.initial;if(typeof r=="string"||typeof r=="number"){let s=this.find(r);s&&(this.initial=s.index,this.focus(s,!0))}}}get choices(){return jwe(this,this.state.choices||[])}set visible(e){this.state.visible=e}get visible(){return(this.state.visible||this.choices).slice(0,this.limit)}set limit(e){this.state.limit=e}get limit(){let{state:e,options:r,choices:s}=this,a=e.limit||this._limit||r.limit||s.length;return Math.min(a,this.height)}set value(e){super.value=e}get value(){return typeof super.value!="string"&&super.value===this.initial?this.input:super.value}set index(e){this.state.index=e}get index(){return Math.max(0,this.state?this.state.index:0)}get enabled(){return this.filter(this.isEnabled.bind(this))}get focused(){let e=this.choices[this.index];return e&&this.state.submitted&&this.multiple!==!0&&(e.enabled=!0),e}get selectable(){return this.choices.filter(e=>!this.isDisabled(e))}get selected(){return this.multiple?this.enabled:this.focused}};function jwe(t,e){if(e instanceof Promise)return e;if(typeof e=="function"){if($R.isAsyncFn(e))return e;e=e.call(t,t)}for(let r of e){if(Array.isArray(r.choices)){let s=r.choices.filter(a=>!t.isDisabled(a));r.enabled=s.every(a=>a.enabled===!0)}t.isDisabled(r)===!0&&delete r.enabled}return e}qwe.exports=WG});var G0=L((bnr,Gwe)=>{"use strict";var x1t=oS(),YG=$o(),VG=class extends x1t{constructor(e){super(e),this.emptyError=this.options.emptyError||"No items were selected"}async dispatch(e,r){if(this.multiple)return this[r.name]?await this[r.name](e,r):await super.dispatch(e,r);this.alert()}separator(){if(this.options.separator)return super.separator();let e=this.styles.muted(this.symbols.ellipsis);return this.state.submitted?super.separator():e}pointer(e,r){return!this.multiple||this.options.pointer?super.pointer(e,r):""}indicator(e,r){return this.multiple?super.indicator(e,r):""}choiceMessage(e,r){let s=this.resolve(e.message,this.state,e,r);return e.role==="heading"&&!YG.hasColor(s)&&(s=this.styles.strong(s)),this.resolve(s,this.state,e,r)}choiceSeparator(){return":"}async renderChoice(e,r){await this.onChoice(e,r);let s=this.index===r,a=await this.pointer(e,r),n=await this.indicator(e,r)+(e.pad||""),c=await this.resolve(e.hint,this.state,e,r);c&&!YG.hasColor(c)&&(c=this.styles.muted(c));let f=this.indent(e),p=await this.choiceMessage(e,r),h=()=>[this.margin[3],f+a+n,p,this.margin[1],c].filter(Boolean).join(" ");return e.role==="heading"?h():e.disabled?(YG.hasColor(p)||(p=this.styles.disabled(p)),h()):(s&&(p=this.styles.em(p)),h())}async renderChoices(){if(this.state.loading==="choices")return this.styles.warning("Loading choices");if(this.state.submitted)return"";let e=this.visible.map(async(n,c)=>await this.renderChoice(n,c)),r=await Promise.all(e);r.length||r.push(this.styles.danger("No matching choices"));let s=this.margin[0]+r.join(` +`),a;return this.options.choicesHeader&&(a=await this.resolve(this.options.choicesHeader,this.state)),[a,s].filter(Boolean).join(` +`)}format(){return!this.state.submitted||this.state.cancelled?"":Array.isArray(this.selected)?this.selected.map(e=>this.styles.primary(e.name)).join(", "):this.styles.primary(this.selected.name)}async render(){let{submitted:e,size:r}=this.state,s="",a=await this.header(),n=await this.prefix(),c=await this.separator(),f=await this.message();this.options.promptLine!==!1&&(s=[n,f,c,""].join(" "),this.state.prompt=s);let p=await this.format(),h=await this.error()||await this.hint(),E=await this.renderChoices(),C=await this.footer();p&&(s+=p),h&&!s.includes(h)&&(s+=" "+h),e&&!p&&!E.trim()&&this.multiple&&this.emptyError!=null&&(s+=this.styles.danger(this.emptyError)),this.clear(r),this.write([a,s,E,C].filter(Boolean).join(` +`)),this.write(this.margin[2]),this.restore()}};Gwe.exports=VG});var Ywe=L((Pnr,Wwe)=>{"use strict";var k1t=G0(),Q1t=(t,e)=>{let r=t.toLowerCase();return s=>{let n=s.toLowerCase().indexOf(r),c=e(s.slice(n,n+r.length));return n>=0?s.slice(0,n)+c+s.slice(n+r.length):s}},KG=class extends k1t{constructor(e){super(e),this.cursorShow()}moveCursor(e){this.state.cursor+=e}dispatch(e){return this.append(e)}space(e){return this.options.multiple?super.space(e):this.append(e)}append(e){let{cursor:r,input:s}=this.state;return this.input=s.slice(0,r)+e+s.slice(r),this.moveCursor(1),this.complete()}delete(){let{cursor:e,input:r}=this.state;return r?(this.input=r.slice(0,e-1)+r.slice(e),this.moveCursor(-1),this.complete()):this.alert()}deleteForward(){let{cursor:e,input:r}=this.state;return r[e]===void 0?this.alert():(this.input=`${r}`.slice(0,e)+`${r}`.slice(e+1),this.complete())}number(e){return this.append(e)}async complete(){this.completing=!0,this.choices=await this.suggest(this.input,this.state._choices),this.state.limit=void 0,this.index=Math.min(Math.max(this.visible.length-1,0),this.index),await this.render(),this.completing=!1}suggest(e=this.input,r=this.state._choices){if(typeof this.options.suggest=="function")return this.options.suggest.call(this,e,r);let s=e.toLowerCase();return r.filter(a=>a.message.toLowerCase().includes(s))}pointer(){return""}format(){if(!this.focused)return this.input;if(this.options.multiple&&this.state.submitted)return this.selected.map(e=>this.styles.primary(e.message)).join(", ");if(this.state.submitted){let e=this.value=this.input=this.focused.value;return this.styles.primary(e)}return this.input}async render(){if(this.state.status!=="pending")return super.render();let e=this.options.highlight?this.options.highlight.bind(this):this.styles.placeholder,r=Q1t(this.input,e),s=this.choices;this.choices=s.map(a=>({...a,message:r(a.message)})),await super.render(),this.choices=s}submit(){return this.options.multiple&&(this.value=this.selected.map(e=>e.name)),super.submit()}};Wwe.exports=KG});var zG=L((xnr,Vwe)=>{"use strict";var JG=$o();Vwe.exports=(t,e={})=>{t.cursorHide();let{input:r="",initial:s="",pos:a,showCursor:n=!0,color:c}=e,f=c||t.styles.placeholder,p=JG.inverse(t.styles.primary),h=R=>p(t.styles.black(R)),E=r,C=" ",S=h(C);if(t.blink&&t.blink.off===!0&&(h=R=>R,S=""),n&&a===0&&s===""&&r==="")return h(C);if(n&&a===0&&(r===s||r===""))return h(s[0])+f(s.slice(1));s=JG.isPrimitive(s)?`${s}`:"",r=JG.isPrimitive(r)?`${r}`:"";let P=s&&s.startsWith(r)&&s!==r,I=P?h(s[r.length]):S;if(a!==r.length&&n===!0&&(E=r.slice(0,a)+h(r[a])+r.slice(a+1),I=""),n===!1&&(I=""),P){let R=t.styles.unstyle(E+I);return E+I+f(s.slice(R.length))}return E+I}});var eF=L((knr,Kwe)=>{"use strict";var T1t=Ju(),R1t=G0(),F1t=zG(),ZG=class extends R1t{constructor(e){super({...e,multiple:!0}),this.type="form",this.initial=this.options.initial,this.align=[this.options.align,"right"].find(r=>r!=null),this.emptyError="",this.values={}}async reset(e){return await super.reset(),e===!0&&(this._index=this.index),this.index=this._index,this.values={},this.choices.forEach(r=>r.reset&&r.reset()),this.render()}dispatch(e){return!!e&&this.append(e)}append(e){let r=this.focused;if(!r)return this.alert();let{cursor:s,input:a}=r;return r.value=r.input=a.slice(0,s)+e+a.slice(s),r.cursor++,this.render()}delete(){let e=this.focused;if(!e||e.cursor<=0)return this.alert();let{cursor:r,input:s}=e;return e.value=e.input=s.slice(0,r-1)+s.slice(r),e.cursor--,this.render()}deleteForward(){let e=this.focused;if(!e)return this.alert();let{cursor:r,input:s}=e;if(s[r]===void 0)return this.alert();let a=`${s}`.slice(0,r)+`${s}`.slice(r+1);return e.value=e.input=a,this.render()}right(){let e=this.focused;return e?e.cursor>=e.input.length?this.alert():(e.cursor++,this.render()):this.alert()}left(){let e=this.focused;return e?e.cursor<=0?this.alert():(e.cursor--,this.render()):this.alert()}space(e,r){return this.dispatch(e,r)}number(e,r){return this.dispatch(e,r)}next(){let e=this.focused;if(!e)return this.alert();let{initial:r,input:s}=e;return r&&r.startsWith(s)&&s!==r?(e.value=e.input=r,e.cursor=e.value.length,this.render()):super.next()}prev(){let e=this.focused;return e?e.cursor===0?super.prev():(e.value=e.input="",e.cursor=0,this.render()):this.alert()}separator(){return""}format(e){return this.state.submitted?"":super.format(e)}pointer(){return""}indicator(e){return e.input?"\u29BF":"\u2299"}async choiceSeparator(e,r){let s=await this.resolve(e.separator,this.state,e,r)||":";return s?" "+this.styles.disabled(s):""}async renderChoice(e,r){await this.onChoice(e,r);let{state:s,styles:a}=this,{cursor:n,initial:c="",name:f,hint:p,input:h=""}=e,{muted:E,submitted:C,primary:S,danger:P}=a,I=p,R=this.index===r,N=e.validate||(()=>!0),U=await this.choiceSeparator(e,r),W=e.message;this.align==="right"&&(W=W.padStart(this.longest+1," ")),this.align==="left"&&(W=W.padEnd(this.longest+1," "));let te=this.values[f]=h||c,ie=h?"success":"dark";await N.call(e,te,this.state)!==!0&&(ie="danger");let Ae=a[ie],ce=Ae(await this.indicator(e,r))+(e.pad||""),me=this.indent(e),pe=()=>[me,ce,W+U,h,I].filter(Boolean).join(" ");if(s.submitted)return W=T1t.unstyle(W),h=C(h),I="",pe();if(e.format)h=await e.format.call(this,h,e,r);else{let Be=this.styles.muted;h=F1t(this,{input:h,initial:c,pos:n,showCursor:R,color:Be})}return this.isValue(h)||(h=this.styles.muted(this.symbols.ellipsis)),e.result&&(this.values[f]=await e.result.call(this,te,e,r)),R&&(W=S(W)),e.error?h+=(h?" ":"")+P(e.error.trim()):e.hint&&(h+=(h?" ":"")+E(e.hint.trim())),pe()}async submit(){return this.value=this.values,super.base.submit.call(this)}};Kwe.exports=ZG});var XG=L((Qnr,zwe)=>{"use strict";var N1t=eF(),O1t=()=>{throw new Error("expected prompt to have a custom authenticate method")},Jwe=(t=O1t)=>{class e extends N1t{constructor(s){super(s)}async submit(){this.value=await t.call(this,this.values,this.state),super.base.submit.call(this)}static create(s){return Jwe(s)}}return e};zwe.exports=Jwe()});var $we=L((Tnr,Xwe)=>{"use strict";var L1t=XG();function M1t(t,e){return t.username===this.options.username&&t.password===this.options.password}var Zwe=(t=M1t)=>{let e=[{name:"username",message:"username"},{name:"password",message:"password",format(s){return this.options.showPassword?s:(this.state.submitted?this.styles.primary:this.styles.muted)(this.symbols.asterisk.repeat(s.length))}}];class r extends L1t.create(t){constructor(a){super({...a,choices:e})}static create(a){return Zwe(a)}}return r};Xwe.exports=Zwe()});var tF=L((Rnr,e1e)=>{"use strict";var _1t=sC(),{isPrimitive:U1t,hasColor:H1t}=$o(),$G=class extends _1t{constructor(e){super(e),this.cursorHide()}async initialize(){let e=await this.resolve(this.initial,this.state);this.input=await this.cast(e),await super.initialize()}dispatch(e){return this.isValue(e)?(this.input=e,this.submit()):this.alert()}format(e){let{styles:r,state:s}=this;return s.submitted?r.success(e):r.primary(e)}cast(e){return this.isTrue(e)}isTrue(e){return/^[ty1]/i.test(e)}isFalse(e){return/^[fn0]/i.test(e)}isValue(e){return U1t(e)&&(this.isTrue(e)||this.isFalse(e))}async hint(){if(this.state.status==="pending"){let e=await this.element("hint");return H1t(e)?e:this.styles.muted(e)}}async render(){let{input:e,size:r}=this.state,s=await this.prefix(),a=await this.separator(),n=await this.message(),c=this.styles.muted(this.default),f=[s,n,c,a].filter(Boolean).join(" ");this.state.prompt=f;let p=await this.header(),h=this.value=this.cast(e),E=await this.format(h),C=await this.error()||await this.hint(),S=await this.footer();C&&!f.includes(C)&&(E+=" "+C),f+=" "+E,this.clear(r),this.write([p,f,S].filter(Boolean).join(` +`)),this.restore()}set value(e){super.value=e}get value(){return this.cast(super.value)}};e1e.exports=$G});var r1e=L((Fnr,t1e)=>{"use strict";var j1t=tF(),e5=class extends j1t{constructor(e){super(e),this.default=this.options.default||(this.initial?"(Y/n)":"(y/N)")}};t1e.exports=e5});var i1e=L((Nnr,n1e)=>{"use strict";var q1t=G0(),G1t=eF(),oC=G1t.prototype,t5=class extends q1t{constructor(e){super({...e,multiple:!0}),this.align=[this.options.align,"left"].find(r=>r!=null),this.emptyError="",this.values={}}dispatch(e,r){let s=this.focused,a=s.parent||{};return!s.editable&&!a.editable&&(e==="a"||e==="i")?super[e]():oC.dispatch.call(this,e,r)}append(e,r){return oC.append.call(this,e,r)}delete(e,r){return oC.delete.call(this,e,r)}space(e){return this.focused.editable?this.append(e):super.space()}number(e){return this.focused.editable?this.append(e):super.number(e)}next(){return this.focused.editable?oC.next.call(this):super.next()}prev(){return this.focused.editable?oC.prev.call(this):super.prev()}async indicator(e,r){let s=e.indicator||"",a=e.editable?s:super.indicator(e,r);return await this.resolve(a,this.state,e,r)||""}indent(e){return e.role==="heading"?"":e.editable?" ":" "}async renderChoice(e,r){return e.indent="",e.editable?oC.renderChoice.call(this,e,r):super.renderChoice(e,r)}error(){return""}footer(){return this.state.error}async validate(){let e=!0;for(let r of this.choices){if(typeof r.validate!="function"||r.role==="heading")continue;let s=r.parent?this.value[r.parent.name]:this.value;if(r.editable?s=r.value===r.name?r.initial||"":r.value:this.isDisabled(r)||(s=r.enabled===!0),e=await r.validate(s,this.state),e!==!0)break}return e!==!0&&(this.state.error=typeof e=="string"?e:"Invalid Input"),e}submit(){if(this.focused.newChoice===!0)return super.submit();if(this.choices.some(e=>e.newChoice))return this.alert();this.value={};for(let e of this.choices){let r=e.parent?this.value[e.parent.name]:this.value;if(e.role==="heading"){this.value[e.name]={};continue}e.editable?r[e.name]=e.value===e.name?e.initial||"":e.value:this.isDisabled(e)||(r[e.name]=e.enabled===!0)}return this.base.submit.call(this)}};n1e.exports=t5});var Sm=L((Onr,s1e)=>{"use strict";var W1t=sC(),Y1t=zG(),{isPrimitive:V1t}=$o(),r5=class extends W1t{constructor(e){super(e),this.initial=V1t(this.initial)?String(this.initial):"",this.initial&&this.cursorHide(),this.state.prevCursor=0,this.state.clipboard=[]}async keypress(e,r={}){let s=this.state.prevKeypress;return this.state.prevKeypress=r,this.options.multiline===!0&&r.name==="return"&&(!s||s.name!=="return")?this.append(` +`,r):super.keypress(e,r)}moveCursor(e){this.cursor+=e}reset(){return this.input=this.value="",this.cursor=0,this.render()}dispatch(e,r){if(!e||r.ctrl||r.code)return this.alert();this.append(e)}append(e){let{cursor:r,input:s}=this.state;this.input=`${s}`.slice(0,r)+e+`${s}`.slice(r),this.moveCursor(String(e).length),this.render()}insert(e){this.append(e)}delete(){let{cursor:e,input:r}=this.state;if(e<=0)return this.alert();this.input=`${r}`.slice(0,e-1)+`${r}`.slice(e),this.moveCursor(-1),this.render()}deleteForward(){let{cursor:e,input:r}=this.state;if(r[e]===void 0)return this.alert();this.input=`${r}`.slice(0,e)+`${r}`.slice(e+1),this.render()}cutForward(){let e=this.cursor;if(this.input.length<=e)return this.alert();this.state.clipboard.push(this.input.slice(e)),this.input=this.input.slice(0,e),this.render()}cutLeft(){let e=this.cursor;if(e===0)return this.alert();let r=this.input.slice(0,e),s=this.input.slice(e),a=r.split(" ");this.state.clipboard.push(a.pop()),this.input=a.join(" "),this.cursor=this.input.length,this.input+=s,this.render()}paste(){if(!this.state.clipboard.length)return this.alert();this.insert(this.state.clipboard.pop()),this.render()}toggleCursor(){this.state.prevCursor?(this.cursor=this.state.prevCursor,this.state.prevCursor=0):(this.state.prevCursor=this.cursor,this.cursor=0),this.render()}first(){this.cursor=0,this.render()}last(){this.cursor=this.input.length-1,this.render()}next(){let e=this.initial!=null?String(this.initial):"";if(!e||!e.startsWith(this.input))return this.alert();this.input=this.initial,this.cursor=this.initial.length,this.render()}prev(){if(!this.input)return this.alert();this.reset()}backward(){return this.left()}forward(){return this.right()}right(){return this.cursor>=this.input.length?this.alert():(this.moveCursor(1),this.render())}left(){return this.cursor<=0?this.alert():(this.moveCursor(-1),this.render())}isValue(e){return!!e}async format(e=this.value){let r=await this.resolve(this.initial,this.state);return this.state.submitted?this.styles.submitted(e||r):Y1t(this,{input:e,initial:r,pos:this.cursor})}async render(){let e=this.state.size,r=await this.prefix(),s=await this.separator(),a=await this.message(),n=[r,a,s].filter(Boolean).join(" ");this.state.prompt=n;let c=await this.header(),f=await this.format(),p=await this.error()||await this.hint(),h=await this.footer();p&&!f.includes(p)&&(f+=" "+p),n+=" "+f,this.clear(e),this.write([c,n,h].filter(Boolean).join(` +`)),this.restore()}};s1e.exports=r5});var a1e=L((Lnr,o1e)=>{"use strict";var K1t=t=>t.filter((e,r)=>t.lastIndexOf(e)===r),rF=t=>K1t(t).filter(Boolean);o1e.exports=(t,e={},r="")=>{let{past:s=[],present:a=""}=e,n,c;switch(t){case"prev":case"undo":return n=s.slice(0,s.length-1),c=s[s.length-1]||"",{past:rF([r,...n]),present:c};case"next":case"redo":return n=s.slice(1),c=s[0]||"",{past:rF([...n,r]),present:c};case"save":return{past:rF([...s,r]),present:""};case"remove":return c=rF(s.filter(f=>f!==r)),a="",c.length&&(a=c.pop()),{past:c,present:a};default:throw new Error(`Invalid action: "${t}"`)}}});var i5=L((Mnr,c1e)=>{"use strict";var J1t=Sm(),l1e=a1e(),n5=class extends J1t{constructor(e){super(e);let r=this.options.history;if(r&&r.store){let s=r.values||this.initial;this.autosave=!!r.autosave,this.store=r.store,this.data=this.store.get("values")||{past:[],present:s},this.initial=this.data.present||this.data.past[this.data.past.length-1]}}completion(e){return this.store?(this.data=l1e(e,this.data,this.input),this.data.present?(this.input=this.data.present,this.cursor=this.input.length,this.render()):this.alert()):this.alert()}altUp(){return this.completion("prev")}altDown(){return this.completion("next")}prev(){return this.save(),super.prev()}save(){this.store&&(this.data=l1e("save",this.data,this.input),this.store.set("values",this.data))}submit(){return this.store&&this.autosave===!0&&this.save(),super.submit()}};c1e.exports=n5});var f1e=L((_nr,u1e)=>{"use strict";var z1t=Sm(),s5=class extends z1t{format(){return""}};u1e.exports=s5});var p1e=L((Unr,A1e)=>{"use strict";var Z1t=Sm(),o5=class extends Z1t{constructor(e={}){super(e),this.sep=this.options.separator||/, */,this.initial=e.initial||""}split(e=this.value){return e?String(e).split(this.sep):[]}format(){let e=this.state.submitted?this.styles.primary:r=>r;return this.list.map(e).join(", ")}async submit(e){let r=this.state.error||await this.validate(this.list,this.state);return r!==!0?(this.state.error=r,super.submit()):(this.value=this.list,super.submit())}get list(){return this.split()}};A1e.exports=o5});var g1e=L((Hnr,h1e)=>{"use strict";var X1t=G0(),a5=class extends X1t{constructor(e){super({...e,multiple:!0})}};h1e.exports=a5});var c5=L((jnr,d1e)=>{"use strict";var $1t=Sm(),l5=class extends $1t{constructor(e={}){super({style:"number",...e}),this.min=this.isValue(e.min)?this.toNumber(e.min):-1/0,this.max=this.isValue(e.max)?this.toNumber(e.max):1/0,this.delay=e.delay!=null?e.delay:1e3,this.float=e.float!==!1,this.round=e.round===!0||e.float===!1,this.major=e.major||10,this.minor=e.minor||1,this.initial=e.initial!=null?e.initial:"",this.input=String(this.initial),this.cursor=this.input.length,this.cursorShow()}append(e){return!/[-+.]/.test(e)||e==="."&&this.input.includes(".")?this.alert("invalid number"):super.append(e)}number(e){return super.append(e)}next(){return this.input&&this.input!==this.initial?this.alert():this.isValue(this.initial)?(this.input=this.initial,this.cursor=String(this.initial).length,this.render()):this.alert()}up(e){let r=e||this.minor,s=this.toNumber(this.input);return s>this.max+r?this.alert():(this.input=`${s+r}`,this.render())}down(e){let r=e||this.minor,s=this.toNumber(this.input);return sthis.isValue(r));return this.value=this.toNumber(e||0),super.submit()}};d1e.exports=l5});var y1e=L((qnr,m1e)=>{m1e.exports=c5()});var I1e=L((Gnr,E1e)=>{"use strict";var e2t=Sm(),u5=class extends e2t{constructor(e){super(e),this.cursorShow()}format(e=this.input){return this.keypressed?(this.state.submitted?this.styles.primary:this.styles.muted)(this.symbols.asterisk.repeat(e.length)):""}};E1e.exports=u5});var B1e=L((Wnr,w1e)=>{"use strict";var t2t=Ju(),r2t=oS(),C1e=$o(),f5=class extends r2t{constructor(e={}){super(e),this.widths=[].concat(e.messageWidth||50),this.align=[].concat(e.align||"left"),this.linebreak=e.linebreak||!1,this.edgeLength=e.edgeLength||3,this.newline=e.newline||` + `;let r=e.startNumber||1;typeof this.scale=="number"&&(this.scaleKey=!1,this.scale=Array(this.scale).fill(0).map((s,a)=>({name:a+r})))}async reset(){return this.tableized=!1,await super.reset(),this.render()}tableize(){if(this.tableized===!0)return;this.tableized=!0;let e=0;for(let r of this.choices){e=Math.max(e,r.message.length),r.scaleIndex=r.initial||2,r.scale=[];for(let s=0;s=this.scale.length-1?this.alert():(e.scaleIndex++,this.render())}left(){let e=this.focused;return e.scaleIndex<=0?this.alert():(e.scaleIndex--,this.render())}indent(){return""}format(){return this.state.submitted?this.choices.map(r=>this.styles.info(r.index)).join(", "):""}pointer(){return""}renderScaleKey(){return this.scaleKey===!1||this.state.submitted?"":["",...this.scale.map(s=>` ${s.name} - ${s.message}`)].map(s=>this.styles.muted(s)).join(` +`)}renderScaleHeading(e){let r=this.scale.map(p=>p.name);typeof this.options.renderScaleHeading=="function"&&(r=this.options.renderScaleHeading.call(this,e));let s=this.scaleLength-r.join("").length,a=Math.round(s/(r.length-1)),c=r.map(p=>this.styles.strong(p)).join(" ".repeat(a)),f=" ".repeat(this.widths[0]);return this.margin[3]+f+this.margin[1]+c}scaleIndicator(e,r,s){if(typeof this.options.scaleIndicator=="function")return this.options.scaleIndicator.call(this,e,r,s);let a=e.scaleIndex===r.index;return r.disabled?this.styles.hint(this.symbols.radio.disabled):a?this.styles.success(this.symbols.radio.on):this.symbols.radio.off}renderScale(e,r){let s=e.scale.map(n=>this.scaleIndicator(e,n,r)),a=this.term==="Hyper"?"":" ";return s.join(a+this.symbols.line.repeat(this.edgeLength))}async renderChoice(e,r){await this.onChoice(e,r);let s=this.index===r,a=await this.pointer(e,r),n=await e.hint;n&&!C1e.hasColor(n)&&(n=this.styles.muted(n));let c=I=>this.margin[3]+I.replace(/\s+$/,"").padEnd(this.widths[0]," "),f=this.newline,p=this.indent(e),h=await this.resolve(e.message,this.state,e,r),E=await this.renderScale(e,r),C=this.margin[1]+this.margin[3];this.scaleLength=t2t.unstyle(E).length,this.widths[0]=Math.min(this.widths[0],this.width-this.scaleLength-C.length);let P=C1e.wordWrap(h,{width:this.widths[0],newline:f}).split(` +`).map(I=>c(I)+this.margin[1]);return s&&(E=this.styles.info(E),P=P.map(I=>this.styles.info(I))),P[0]+=E,this.linebreak&&P.push(""),[p+a,P.join(` +`)].filter(Boolean)}async renderChoices(){if(this.state.submitted)return"";this.tableize();let e=this.visible.map(async(a,n)=>await this.renderChoice(a,n)),r=await Promise.all(e),s=await this.renderScaleHeading();return this.margin[0]+[s,...r.map(a=>a.join(" "))].join(` +`)}async render(){let{submitted:e,size:r}=this.state,s=await this.prefix(),a=await this.separator(),n=await this.message(),c="";this.options.promptLine!==!1&&(c=[s,n,a,""].join(" "),this.state.prompt=c);let f=await this.header(),p=await this.format(),h=await this.renderScaleKey(),E=await this.error()||await this.hint(),C=await this.renderChoices(),S=await this.footer(),P=this.emptyError;p&&(c+=p),E&&!c.includes(E)&&(c+=" "+E),e&&!p&&!C.trim()&&this.multiple&&P!=null&&(c+=this.styles.danger(P)),this.clear(r),this.write([f,c,h,C,S].filter(Boolean).join(` +`)),this.state.submitted||this.write(this.margin[2]),this.restore()}submit(){this.value={};for(let e of this.choices)this.value[e.name]=e.scaleIndex;return this.base.submit.call(this)}};w1e.exports=f5});var D1e=L((Ynr,S1e)=>{"use strict";var v1e=Ju(),n2t=(t="")=>typeof t=="string"?t.replace(/^['"]|['"]$/g,""):"",p5=class{constructor(e){this.name=e.key,this.field=e.field||{},this.value=n2t(e.initial||this.field.initial||""),this.message=e.message||this.name,this.cursor=0,this.input="",this.lines=[]}},i2t=async(t={},e={},r=s=>s)=>{let s=new Set,a=t.fields||[],n=t.template,c=[],f=[],p=[],h=1;typeof n=="function"&&(n=await n());let E=-1,C=()=>n[++E],S=()=>n[E+1],P=I=>{I.line=h,c.push(I)};for(P({type:"bos",value:""});Eie.name===U.key);U.field=a.find(ie=>ie.name===U.key),te||(te=new p5(U),f.push(te)),te.lines.push(U.line-1);continue}let R=c[c.length-1];R.type==="text"&&R.line===h?R.value+=I:P({type:"text",value:I})}return P({type:"eos",value:""}),{input:n,tabstops:c,unique:s,keys:p,items:f}};S1e.exports=async t=>{let e=t.options,r=new Set(e.required===!0?[]:e.required||[]),s={...e.values,...e.initial},{tabstops:a,items:n,keys:c}=await i2t(e,s),f=A5("result",t,e),p=A5("format",t,e),h=A5("validate",t,e,!0),E=t.isValue.bind(t);return async(C={},S=!1)=>{let P=0;C.required=r,C.items=n,C.keys=c,C.output="";let I=async(W,te,ie,Ae)=>{let ce=await h(W,te,ie,Ae);return ce===!1?"Invalid field "+ie.name:ce};for(let W of a){let te=W.value,ie=W.key;if(W.type!=="template"){te&&(C.output+=te);continue}if(W.type==="template"){let Ae=n.find(Ce=>Ce.name===ie);e.required===!0&&C.required.add(Ae.name);let ce=[Ae.input,C.values[Ae.value],Ae.value,te].find(E),pe=(Ae.field||{}).message||W.inner;if(S){let Ce=await I(C.values[ie],C,Ae,P);if(Ce&&typeof Ce=="string"||Ce===!1){C.invalid.set(ie,Ce);continue}C.invalid.delete(ie);let g=await f(C.values[ie],C,Ae,P);C.output+=v1e.unstyle(g);continue}Ae.placeholder=!1;let Be=te;te=await p(te,C,Ae,P),ce!==te?(C.values[ie]=ce,te=t.styles.typing(ce),C.missing.delete(pe)):(C.values[ie]=void 0,ce=`<${pe}>`,te=t.styles.primary(ce),Ae.placeholder=!0,C.required.has(ie)&&C.missing.add(pe)),C.missing.has(pe)&&C.validating&&(te=t.styles.warning(ce)),C.invalid.has(ie)&&C.validating&&(te=t.styles.danger(ce)),P===C.index&&(Be!==te?te=t.styles.underline(te):te=t.styles.heading(v1e.unstyle(te))),P++}te&&(C.output+=te)}let R=C.output.split(` +`).map(W=>" "+W),N=n.length,U=0;for(let W of n)C.invalid.has(W.name)&&W.lines.forEach(te=>{R[te][0]===" "&&(R[te]=C.styles.danger(C.symbols.bullet)+R[te].slice(1))}),t.isValue(C.values[W.name])&&U++;return C.completed=(U/N*100).toFixed(0),C.output=R.join(` +`),C.output}};function A5(t,e,r,s){return(a,n,c,f)=>typeof c.field[t]=="function"?c.field[t].call(e,a,n,c,f):[s,a].find(p=>e.isValue(p))}});var P1e=L((Vnr,b1e)=>{"use strict";var s2t=Ju(),o2t=D1e(),a2t=sC(),h5=class extends a2t{constructor(e){super(e),this.cursorHide(),this.reset(!0)}async initialize(){this.interpolate=await o2t(this),await super.initialize()}async reset(e){this.state.keys=[],this.state.invalid=new Map,this.state.missing=new Set,this.state.completed=0,this.state.values={},e!==!0&&(await this.initialize(),await this.render())}moveCursor(e){let r=this.getItem();this.cursor+=e,r.cursor+=e}dispatch(e,r){if(!r.code&&!r.ctrl&&e!=null&&this.getItem()){this.append(e,r);return}this.alert()}append(e,r){let s=this.getItem(),a=s.input.slice(0,this.cursor),n=s.input.slice(this.cursor);this.input=s.input=`${a}${e}${n}`,this.moveCursor(1),this.render()}delete(){let e=this.getItem();if(this.cursor<=0||!e.input)return this.alert();let r=e.input.slice(this.cursor),s=e.input.slice(0,this.cursor-1);this.input=e.input=`${s}${r}`,this.moveCursor(-1),this.render()}increment(e){return e>=this.state.keys.length-1?0:e+1}decrement(e){return e<=0?this.state.keys.length-1:e-1}first(){this.state.index=0,this.render()}last(){this.state.index=this.state.keys.length-1,this.render()}right(){if(this.cursor>=this.input.length)return this.alert();this.moveCursor(1),this.render()}left(){if(this.cursor<=0)return this.alert();this.moveCursor(-1),this.render()}prev(){this.state.index=this.decrement(this.state.index),this.getItem(),this.render()}next(){this.state.index=this.increment(this.state.index),this.getItem(),this.render()}up(){this.prev()}down(){this.next()}format(e){let r=this.state.completed<100?this.styles.warning:this.styles.success;return this.state.submitted===!0&&this.state.completed!==100&&(r=this.styles.danger),r(`${this.state.completed}% completed`)}async render(){let{index:e,keys:r=[],submitted:s,size:a}=this.state,n=[this.options.newline,` +`].find(W=>W!=null),c=await this.prefix(),f=await this.separator(),p=await this.message(),h=[c,p,f].filter(Boolean).join(" ");this.state.prompt=h;let E=await this.header(),C=await this.error()||"",S=await this.hint()||"",P=s?"":await this.interpolate(this.state),I=this.state.key=r[e]||"",R=await this.format(I),N=await this.footer();R&&(h+=" "+R),S&&!R&&this.state.completed===0&&(h+=" "+S),this.clear(a);let U=[E,h,P,N,C.trim()];this.write(U.filter(Boolean).join(n)),this.restore()}getItem(e){let{items:r,keys:s,index:a}=this.state,n=r.find(c=>c.name===s[a]);return n&&n.input!=null&&(this.input=n.input,this.cursor=n.cursor),n}async submit(){typeof this.interpolate!="function"&&await this.initialize(),await this.interpolate(this.state,!0);let{invalid:e,missing:r,output:s,values:a}=this.state;if(e.size){let f="";for(let[p,h]of e)f+=`Invalid ${p}: ${h} +`;return this.state.error=f,super.submit()}if(r.size)return this.state.error="Required: "+[...r.keys()].join(", "),super.submit();let c=s2t.unstyle(s).split(` +`).map(f=>f.slice(1)).join(` +`);return this.value={values:a,result:c},super.submit()}};b1e.exports=h5});var k1e=L((Knr,x1e)=>{"use strict";var l2t="(Use + to sort)",c2t=G0(),g5=class extends c2t{constructor(e){super({...e,reorder:!1,sort:!0,multiple:!0}),this.state.hint=[this.options.hint,l2t].find(this.isValue.bind(this))}indicator(){return""}async renderChoice(e,r){let s=await super.renderChoice(e,r),a=this.symbols.identicalTo+" ",n=this.index===r&&this.sorting?this.styles.muted(a):" ";return this.options.drag===!1&&(n=""),this.options.numbered===!0?n+`${r+1} - `+s:n+s}get selected(){return this.choices}submit(){return this.value=this.choices.map(e=>e.value),super.submit()}};x1e.exports=g5});var T1e=L((Jnr,Q1e)=>{"use strict";var u2t=oS(),d5=class extends u2t{constructor(e={}){if(super(e),this.emptyError=e.emptyError||"No items were selected",this.term=process.env.TERM_PROGRAM,!this.options.header){let r=["","4 - Strongly Agree","3 - Agree","2 - Neutral","1 - Disagree","0 - Strongly Disagree",""];r=r.map(s=>this.styles.muted(s)),this.state.header=r.join(` + `)}}async toChoices(...e){if(this.createdScales)return!1;this.createdScales=!0;let r=await super.toChoices(...e);for(let s of r)s.scale=f2t(5,this.options),s.scaleIdx=2;return r}dispatch(){this.alert()}space(){let e=this.focused,r=e.scale[e.scaleIdx],s=r.selected;return e.scale.forEach(a=>a.selected=!1),r.selected=!s,this.render()}indicator(){return""}pointer(){return""}separator(){return this.styles.muted(this.symbols.ellipsis)}right(){let e=this.focused;return e.scaleIdx>=e.scale.length-1?this.alert():(e.scaleIdx++,this.render())}left(){let e=this.focused;return e.scaleIdx<=0?this.alert():(e.scaleIdx--,this.render())}indent(){return" "}async renderChoice(e,r){await this.onChoice(e,r);let s=this.index===r,a=this.term==="Hyper",n=a?9:8,c=a?"":" ",f=this.symbols.line.repeat(n),p=" ".repeat(n+(a?0:1)),h=te=>(te?this.styles.success("\u25C9"):"\u25EF")+c,E=r+1+".",C=s?this.styles.heading:this.styles.noop,S=await this.resolve(e.message,this.state,e,r),P=this.indent(e),I=P+e.scale.map((te,ie)=>h(ie===e.scaleIdx)).join(f),R=te=>te===e.scaleIdx?C(te):te,N=P+e.scale.map((te,ie)=>R(ie)).join(p),U=()=>[E,S].filter(Boolean).join(" "),W=()=>[U(),I,N," "].filter(Boolean).join(` +`);return s&&(I=this.styles.cyan(I),N=this.styles.cyan(N)),W()}async renderChoices(){if(this.state.submitted)return"";let e=this.visible.map(async(s,a)=>await this.renderChoice(s,a)),r=await Promise.all(e);return r.length||r.push(this.styles.danger("No matching choices")),r.join(` +`)}format(){return this.state.submitted?this.choices.map(r=>this.styles.info(r.scaleIdx)).join(", "):""}async render(){let{submitted:e,size:r}=this.state,s=await this.prefix(),a=await this.separator(),n=await this.message(),c=[s,n,a].filter(Boolean).join(" ");this.state.prompt=c;let f=await this.header(),p=await this.format(),h=await this.error()||await this.hint(),E=await this.renderChoices(),C=await this.footer();(p||!h)&&(c+=" "+p),h&&!c.includes(h)&&(c+=" "+h),e&&!p&&!E&&this.multiple&&this.type!=="form"&&(c+=this.styles.danger(this.emptyError)),this.clear(r),this.write([c,f,E,C].filter(Boolean).join(` +`)),this.restore()}submit(){this.value={};for(let e of this.choices)this.value[e.name]=e.scaleIdx;return this.base.submit.call(this)}};function f2t(t,e={}){if(Array.isArray(e.scale))return e.scale.map(s=>({...s}));let r=[];for(let s=1;s{R1e.exports=i5()});var O1e=L((Znr,N1e)=>{"use strict";var A2t=tF(),m5=class extends A2t{async initialize(){await super.initialize(),this.value=this.initial=!!this.options.initial,this.disabled=this.options.disabled||"no",this.enabled=this.options.enabled||"yes",await this.render()}reset(){this.value=this.initial,this.render()}delete(){this.alert()}toggle(){this.value=!this.value,this.render()}enable(){if(this.value===!0)return this.alert();this.value=!0,this.render()}disable(){if(this.value===!1)return this.alert();this.value=!1,this.render()}up(){this.toggle()}down(){this.toggle()}right(){this.toggle()}left(){this.toggle()}next(){this.toggle()}prev(){this.toggle()}dispatch(e="",r){switch(e.toLowerCase()){case" ":return this.toggle();case"1":case"y":case"t":return this.enable();case"0":case"n":case"f":return this.disable();default:return this.alert()}}format(){let e=s=>this.styles.primary.underline(s);return[this.value?this.disabled:e(this.disabled),this.value?e(this.enabled):this.enabled].join(this.styles.muted(" / "))}async render(){let{size:e}=this.state,r=await this.header(),s=await this.prefix(),a=await this.separator(),n=await this.message(),c=await this.format(),f=await this.error()||await this.hint(),p=await this.footer(),h=[s,n,a,c].join(" ");this.state.prompt=h,f&&!h.includes(f)&&(h+=" "+f),this.clear(e),this.write([r,h,p].filter(Boolean).join(` +`)),this.write(this.margin[2]),this.restore()}};N1e.exports=m5});var M1e=L((Xnr,L1e)=>{"use strict";var p2t=G0(),y5=class extends p2t{constructor(e){if(super(e),typeof this.options.correctChoice!="number"||this.options.correctChoice<0)throw new Error("Please specify the index of the correct answer from the list of choices")}async toChoices(e,r){let s=await super.toChoices(e,r);if(s.length<2)throw new Error("Please give at least two choices to the user");if(this.options.correctChoice>s.length)throw new Error("Please specify the index of the correct answer from the list of choices");return s}check(e){return e.index===this.options.correctChoice}async result(e){return{selectedAnswer:e,correctAnswer:this.options.choices[this.options.correctChoice].value,correct:await this.check(this.state)}}};L1e.exports=y5});var U1e=L(E5=>{"use strict";var _1e=$o(),Qs=(t,e)=>{_1e.defineExport(E5,t,e),_1e.defineExport(E5,t.toLowerCase(),e)};Qs("AutoComplete",()=>Ywe());Qs("BasicAuth",()=>$we());Qs("Confirm",()=>r1e());Qs("Editable",()=>i1e());Qs("Form",()=>eF());Qs("Input",()=>i5());Qs("Invisible",()=>f1e());Qs("List",()=>p1e());Qs("MultiSelect",()=>g1e());Qs("Numeral",()=>y1e());Qs("Password",()=>I1e());Qs("Scale",()=>B1e());Qs("Select",()=>G0());Qs("Snippet",()=>P1e());Qs("Sort",()=>k1e());Qs("Survey",()=>T1e());Qs("Text",()=>F1e());Qs("Toggle",()=>O1e());Qs("Quiz",()=>M1e())});var j1e=L((eir,H1e)=>{H1e.exports={ArrayPrompt:oS(),AuthPrompt:XG(),BooleanPrompt:tF(),NumberPrompt:c5(),StringPrompt:Sm()}});var lS=L((tir,G1e)=>{"use strict";var q1e=ye("assert"),C5=ye("events"),W0=$o(),Zu=class extends C5{constructor(e,r){super(),this.options=W0.merge({},e),this.answers={...r}}register(e,r){if(W0.isObject(e)){for(let a of Object.keys(e))this.register(a,e[a]);return this}q1e.equal(typeof r,"function","expected a function");let s=e.toLowerCase();return r.prototype instanceof this.Prompt?this.prompts[s]=r:this.prompts[s]=r(this.Prompt,this),this}async prompt(e=[]){for(let r of[].concat(e))try{typeof r=="function"&&(r=await r.call(this)),await this.ask(W0.merge({},this.options,r))}catch(s){return Promise.reject(s)}return this.answers}async ask(e){typeof e=="function"&&(e=await e.call(this));let r=W0.merge({},this.options,e),{type:s,name:a}=e,{set:n,get:c}=W0;if(typeof s=="function"&&(s=await s.call(this,e,this.answers)),!s)return this.answers[a];q1e(this.prompts[s],`Prompt "${s}" is not registered`);let f=new this.prompts[s](r),p=c(this.answers,a);f.state.answers=this.answers,f.enquirer=this,a&&f.on("submit",E=>{this.emit("answer",a,E,f),n(this.answers,a,E)});let h=f.emit.bind(f);return f.emit=(...E)=>(this.emit.call(this,...E),h(...E)),this.emit("prompt",f,this),r.autofill&&p!=null?(f.value=f.input=p,r.autofill==="show"&&await f.submit()):p=f.value=await f.run(),p}use(e){return e.call(this,this),this}set Prompt(e){this._Prompt=e}get Prompt(){return this._Prompt||this.constructor.Prompt}get prompts(){return this.constructor.prompts}static set Prompt(e){this._Prompt=e}static get Prompt(){return this._Prompt||sC()}static get prompts(){return U1e()}static get types(){return j1e()}static get prompt(){let e=(r,...s)=>{let a=new this(...s),n=a.emit.bind(a);return a.emit=(...c)=>(e.emit(...c),n(...c)),a.prompt(r)};return W0.mixinEmitter(e,new C5),e}};W0.mixinEmitter(Zu,new C5);var I5=Zu.prompts;for(let t of Object.keys(I5)){let e=t.toLowerCase(),r=s=>new I5[t](s).run();Zu.prompt[e]=r,Zu[e]=r,Zu[t]||Reflect.defineProperty(Zu,t,{get:()=>I5[t]})}var aS=t=>{W0.defineExport(Zu,t,()=>Zu.types[t])};aS("ArrayPrompt");aS("AuthPrompt");aS("BooleanPrompt");aS("NumberPrompt");aS("StringPrompt");G1e.exports=Zu});var AS=L((Lir,Z1e)=>{var I2t=qR();function C2t(t,e,r){var s=t==null?void 0:I2t(t,e);return s===void 0?r:s}Z1e.exports=C2t});var e2e=L((qir,$1e)=>{function w2t(t,e){for(var r=-1,s=t==null?0:t.length;++r{var B2t=Jd(),v2t=Uk();function S2t(t,e){return t&&B2t(e,v2t(e),t)}t2e.exports=S2t});var i2e=L((Wir,n2e)=>{var D2t=Jd(),b2t=qE();function P2t(t,e){return t&&D2t(e,b2t(e),t)}n2e.exports=P2t});var o2e=L((Yir,s2e)=>{var x2t=Jd(),k2t=Fk();function Q2t(t,e){return x2t(t,k2t(t),e)}s2e.exports=Q2t});var b5=L((Vir,a2e)=>{var T2t=Rk(),R2t=Wk(),F2t=Fk(),N2t=_4(),O2t=Object.getOwnPropertySymbols,L2t=O2t?function(t){for(var e=[];t;)T2t(e,F2t(t)),t=R2t(t);return e}:N2t;a2e.exports=L2t});var c2e=L((Kir,l2e)=>{var M2t=Jd(),_2t=b5();function U2t(t,e){return M2t(t,_2t(t),e)}l2e.exports=U2t});var P5=L((Jir,u2e)=>{var H2t=M4(),j2t=b5(),q2t=qE();function G2t(t){return H2t(t,q2t,j2t)}u2e.exports=G2t});var A2e=L((zir,f2e)=>{var W2t=Object.prototype,Y2t=W2t.hasOwnProperty;function V2t(t){var e=t.length,r=new t.constructor(e);return e&&typeof t[0]=="string"&&Y2t.call(t,"index")&&(r.index=t.index,r.input=t.input),r}f2e.exports=V2t});var h2e=L((Zir,p2e)=>{var K2t=qk();function J2t(t,e){var r=e?K2t(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.byteLength)}p2e.exports=J2t});var d2e=L((Xir,g2e)=>{var z2t=/\w*$/;function Z2t(t){var e=new t.constructor(t.source,z2t.exec(t));return e.lastIndex=t.lastIndex,e}g2e.exports=Z2t});var C2e=L(($ir,I2e)=>{var m2e=Yd(),y2e=m2e?m2e.prototype:void 0,E2e=y2e?y2e.valueOf:void 0;function X2t(t){return E2e?Object(E2e.call(t)):{}}I2e.exports=X2t});var B2e=L((esr,w2e)=>{var $2t=qk(),eBt=h2e(),tBt=d2e(),rBt=C2e(),nBt=$4(),iBt="[object Boolean]",sBt="[object Date]",oBt="[object Map]",aBt="[object Number]",lBt="[object RegExp]",cBt="[object Set]",uBt="[object String]",fBt="[object Symbol]",ABt="[object ArrayBuffer]",pBt="[object DataView]",hBt="[object Float32Array]",gBt="[object Float64Array]",dBt="[object Int8Array]",mBt="[object Int16Array]",yBt="[object Int32Array]",EBt="[object Uint8Array]",IBt="[object Uint8ClampedArray]",CBt="[object Uint16Array]",wBt="[object Uint32Array]";function BBt(t,e,r){var s=t.constructor;switch(e){case ABt:return $2t(t);case iBt:case sBt:return new s(+t);case pBt:return eBt(t,r);case hBt:case gBt:case dBt:case mBt:case yBt:case EBt:case IBt:case CBt:case wBt:return nBt(t,r);case oBt:return new s;case aBt:case uBt:return new s(t);case lBt:return tBt(t);case cBt:return new s;case fBt:return rBt(t)}}w2e.exports=BBt});var S2e=L((tsr,v2e)=>{var vBt=_B(),SBt=zf(),DBt="[object Map]";function bBt(t){return SBt(t)&&vBt(t)==DBt}v2e.exports=bBt});var x2e=L((rsr,P2e)=>{var PBt=S2e(),xBt=Ok(),D2e=Lk(),b2e=D2e&&D2e.isMap,kBt=b2e?xBt(b2e):PBt;P2e.exports=kBt});var Q2e=L((nsr,k2e)=>{var QBt=_B(),TBt=zf(),RBt="[object Set]";function FBt(t){return TBt(t)&&QBt(t)==RBt}k2e.exports=FBt});var N2e=L((isr,F2e)=>{var NBt=Q2e(),OBt=Ok(),T2e=Lk(),R2e=T2e&&T2e.isSet,LBt=R2e?OBt(R2e):NBt;F2e.exports=LBt});var x5=L((ssr,_2e)=>{var MBt=Qk(),_Bt=e2e(),UBt=Yk(),HBt=r2e(),jBt=i2e(),qBt=X4(),GBt=Gk(),WBt=o2e(),YBt=c2e(),VBt=q4(),KBt=P5(),JBt=_B(),zBt=A2e(),ZBt=B2e(),XBt=e3(),$Bt=xc(),evt=FB(),tvt=x2e(),rvt=Wl(),nvt=N2e(),ivt=Uk(),svt=qE(),ovt=1,avt=2,lvt=4,O2e="[object Arguments]",cvt="[object Array]",uvt="[object Boolean]",fvt="[object Date]",Avt="[object Error]",L2e="[object Function]",pvt="[object GeneratorFunction]",hvt="[object Map]",gvt="[object Number]",M2e="[object Object]",dvt="[object RegExp]",mvt="[object Set]",yvt="[object String]",Evt="[object Symbol]",Ivt="[object WeakMap]",Cvt="[object ArrayBuffer]",wvt="[object DataView]",Bvt="[object Float32Array]",vvt="[object Float64Array]",Svt="[object Int8Array]",Dvt="[object Int16Array]",bvt="[object Int32Array]",Pvt="[object Uint8Array]",xvt="[object Uint8ClampedArray]",kvt="[object Uint16Array]",Qvt="[object Uint32Array]",Ii={};Ii[O2e]=Ii[cvt]=Ii[Cvt]=Ii[wvt]=Ii[uvt]=Ii[fvt]=Ii[Bvt]=Ii[vvt]=Ii[Svt]=Ii[Dvt]=Ii[bvt]=Ii[hvt]=Ii[gvt]=Ii[M2e]=Ii[dvt]=Ii[mvt]=Ii[yvt]=Ii[Evt]=Ii[Pvt]=Ii[xvt]=Ii[kvt]=Ii[Qvt]=!0;Ii[Avt]=Ii[L2e]=Ii[Ivt]=!1;function iF(t,e,r,s,a,n){var c,f=e&ovt,p=e&avt,h=e&lvt;if(r&&(c=a?r(t,s,a,n):r(t)),c!==void 0)return c;if(!rvt(t))return t;var E=$Bt(t);if(E){if(c=zBt(t),!f)return GBt(t,c)}else{var C=JBt(t),S=C==L2e||C==pvt;if(evt(t))return qBt(t,f);if(C==M2e||C==O2e||S&&!a){if(c=p||S?{}:XBt(t),!f)return p?YBt(t,jBt(c,t)):WBt(t,HBt(c,t))}else{if(!Ii[C])return a?t:{};c=ZBt(t,C,f)}}n||(n=new MBt);var P=n.get(t);if(P)return P;n.set(t,c),nvt(t)?t.forEach(function(N){c.add(iF(N,e,r,N,t,n))}):tvt(t)&&t.forEach(function(N,U){c.set(U,iF(N,e,r,U,t,n))});var I=h?p?KBt:VBt:p?svt:ivt,R=E?void 0:I(t);return _Bt(R||t,function(N,U){R&&(U=N,N=t[U]),UBt(c,U,iF(N,e,r,U,t,n))}),c}_2e.exports=iF});var k5=L((osr,U2e)=>{var Tvt=x5(),Rvt=1,Fvt=4;function Nvt(t){return Tvt(t,Rvt|Fvt)}U2e.exports=Nvt});var Q5=L((asr,H2e)=>{var Ovt=CG();function Lvt(t,e,r){return t==null?t:Ovt(t,e,r)}H2e.exports=Lvt});var Y2e=L((psr,W2e)=>{var Mvt=Object.prototype,_vt=Mvt.hasOwnProperty;function Uvt(t,e){return t!=null&&_vt.call(t,e)}W2e.exports=Uvt});var K2e=L((hsr,V2e)=>{var Hvt=Y2e(),jvt=wG();function qvt(t,e){return t!=null&&jvt(t,e,Hvt)}V2e.exports=qvt});var z2e=L((gsr,J2e)=>{function Gvt(t){var e=t==null?0:t.length;return e?t[e-1]:void 0}J2e.exports=Gvt});var X2e=L((dsr,Z2e)=>{var Wvt=qR(),Yvt=A6();function Vvt(t,e){return e.length<2?t:Wvt(t,Yvt(e,0,-1))}Z2e.exports=Vvt});var R5=L((msr,$2e)=>{var Kvt=wm(),Jvt=z2e(),zvt=X2e(),Zvt=XI();function Xvt(t,e){return e=Kvt(e,t),t=zvt(t,e),t==null||delete t[Zvt(Jvt(e))]}$2e.exports=Xvt});var F5=L((ysr,eBe)=>{var $vt=R5();function eSt(t,e){return t==null?!0:$vt(t,e)}eBe.exports=eSt});var sBe=L((Vsr,nSt)=>{nSt.exports={name:"@yarnpkg/cli",version:"4.9.1",license:"BSD-2-Clause",main:"./sources/index.ts",exports:{".":"./sources/index.ts","./polyfills":"./sources/polyfills.ts","./package.json":"./package.json"},dependencies:{"@yarnpkg/core":"workspace:^","@yarnpkg/fslib":"workspace:^","@yarnpkg/libzip":"workspace:^","@yarnpkg/parsers":"workspace:^","@yarnpkg/plugin-compat":"workspace:^","@yarnpkg/plugin-constraints":"workspace:^","@yarnpkg/plugin-dlx":"workspace:^","@yarnpkg/plugin-essentials":"workspace:^","@yarnpkg/plugin-exec":"workspace:^","@yarnpkg/plugin-file":"workspace:^","@yarnpkg/plugin-git":"workspace:^","@yarnpkg/plugin-github":"workspace:^","@yarnpkg/plugin-http":"workspace:^","@yarnpkg/plugin-init":"workspace:^","@yarnpkg/plugin-interactive-tools":"workspace:^","@yarnpkg/plugin-jsr":"workspace:^","@yarnpkg/plugin-link":"workspace:^","@yarnpkg/plugin-nm":"workspace:^","@yarnpkg/plugin-npm":"workspace:^","@yarnpkg/plugin-npm-cli":"workspace:^","@yarnpkg/plugin-pack":"workspace:^","@yarnpkg/plugin-patch":"workspace:^","@yarnpkg/plugin-pnp":"workspace:^","@yarnpkg/plugin-pnpm":"workspace:^","@yarnpkg/plugin-stage":"workspace:^","@yarnpkg/plugin-typescript":"workspace:^","@yarnpkg/plugin-version":"workspace:^","@yarnpkg/plugin-workspace-tools":"workspace:^","@yarnpkg/shell":"workspace:^","ci-info":"^4.0.0",clipanion:"^4.0.0-rc.2",semver:"^7.1.2",tslib:"^2.4.0",typanion:"^3.14.0"},devDependencies:{"@types/semver":"^7.1.0","@yarnpkg/builder":"workspace:^","@yarnpkg/monorepo":"workspace:^","@yarnpkg/pnpify":"workspace:^"},peerDependencies:{"@yarnpkg/core":"workspace:^"},scripts:{postpack:"rm -rf lib",prepack:'run build:compile "$(pwd)"',"build:cli+hook":"run build:pnp:hook && builder build bundle","build:cli":"builder build bundle","run:cli":"builder run","update-local":"run build:cli --no-git-hash && rsync -a --delete bundles/ bin/"},publishConfig:{main:"./lib/index.js",bin:null,exports:{".":"./lib/index.js","./package.json":"./package.json"}},files:["/lib/**/*","!/lib/pluginConfiguration.*","!/lib/cli.*"],"@yarnpkg/builder":{bundles:{standard:["@yarnpkg/plugin-essentials","@yarnpkg/plugin-compat","@yarnpkg/plugin-constraints","@yarnpkg/plugin-dlx","@yarnpkg/plugin-exec","@yarnpkg/plugin-file","@yarnpkg/plugin-git","@yarnpkg/plugin-github","@yarnpkg/plugin-http","@yarnpkg/plugin-init","@yarnpkg/plugin-interactive-tools","@yarnpkg/plugin-jsr","@yarnpkg/plugin-link","@yarnpkg/plugin-nm","@yarnpkg/plugin-npm","@yarnpkg/plugin-npm-cli","@yarnpkg/plugin-pack","@yarnpkg/plugin-patch","@yarnpkg/plugin-pnp","@yarnpkg/plugin-pnpm","@yarnpkg/plugin-stage","@yarnpkg/plugin-typescript","@yarnpkg/plugin-version","@yarnpkg/plugin-workspace-tools"]}},repository:{type:"git",url:"git+https://github.com/yarnpkg/berry.git",directory:"packages/yarnpkg-cli"},engines:{node:">=18.12.0"}}});var q5=L((Dcr,mBe)=>{"use strict";mBe.exports=function(e,r){r===!0&&(r=0);var s="";if(typeof e=="string")try{s=new URL(e).protocol}catch{}else e&&e.constructor===URL&&(s=e.protocol);var a=s.split(/\:|\+/).filter(Boolean);return typeof r=="number"?a[r]:a}});var EBe=L((bcr,yBe)=>{"use strict";var BSt=q5();function vSt(t){var e={protocols:[],protocol:null,port:null,resource:"",host:"",user:"",password:"",pathname:"",hash:"",search:"",href:t,query:{},parse_failed:!1};try{var r=new URL(t);e.protocols=BSt(r),e.protocol=e.protocols[0],e.port=r.port,e.resource=r.hostname,e.host=r.host,e.user=r.username||"",e.password=r.password||"",e.pathname=r.pathname,e.hash=r.hash.slice(1),e.search=r.search.slice(1),e.href=r.href,e.query=Object.fromEntries(r.searchParams)}catch{e.protocols=["file"],e.protocol=e.protocols[0],e.port="",e.resource="",e.user="",e.pathname="",e.hash="",e.search="",e.href=t,e.query={},e.parse_failed=!0}return e}yBe.exports=vSt});var wBe=L((Pcr,CBe)=>{"use strict";var SSt=EBe();function DSt(t){return t&&typeof t=="object"&&"default"in t?t:{default:t}}var bSt=DSt(SSt),PSt="text/plain",xSt="us-ascii",IBe=(t,e)=>e.some(r=>r instanceof RegExp?r.test(t):r===t),kSt=(t,{stripHash:e})=>{let r=/^data:(?[^,]*?),(?[^#]*?)(?:#(?.*))?$/.exec(t);if(!r)throw new Error(`Invalid URL: ${t}`);let{type:s,data:a,hash:n}=r.groups,c=s.split(";");n=e?"":n;let f=!1;c[c.length-1]==="base64"&&(c.pop(),f=!0);let p=(c.shift()||"").toLowerCase(),E=[...c.map(C=>{let[S,P=""]=C.split("=").map(I=>I.trim());return S==="charset"&&(P=P.toLowerCase(),P===xSt)?"":`${S}${P?`=${P}`:""}`}).filter(Boolean)];return f&&E.push("base64"),(E.length>0||p&&p!==PSt)&&E.unshift(p),`data:${E.join(";")},${f?a.trim():a}${n?`#${n}`:""}`};function QSt(t,e){if(e={defaultProtocol:"http:",normalizeProtocol:!0,forceHttp:!1,forceHttps:!1,stripAuthentication:!0,stripHash:!1,stripTextFragment:!0,stripWWW:!0,removeQueryParameters:[/^utm_\w+/i],removeTrailingSlash:!0,removeSingleSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0,...e},t=t.trim(),/^data:/i.test(t))return kSt(t,e);if(/^view-source:/i.test(t))throw new Error("`view-source:` is not supported as it is a non-standard protocol");let r=t.startsWith("//");!r&&/^\.*\//.test(t)||(t=t.replace(/^(?!(?:\w+:)?\/\/)|^\/\//,e.defaultProtocol));let a=new URL(t);if(e.forceHttp&&e.forceHttps)throw new Error("The `forceHttp` and `forceHttps` options cannot be used together");if(e.forceHttp&&a.protocol==="https:"&&(a.protocol="http:"),e.forceHttps&&a.protocol==="http:"&&(a.protocol="https:"),e.stripAuthentication&&(a.username="",a.password=""),e.stripHash?a.hash="":e.stripTextFragment&&(a.hash=a.hash.replace(/#?:~:text.*?$/i,"")),a.pathname){let c=/\b[a-z][a-z\d+\-.]{1,50}:\/\//g,f=0,p="";for(;;){let E=c.exec(a.pathname);if(!E)break;let C=E[0],S=E.index,P=a.pathname.slice(f,S);p+=P.replace(/\/{2,}/g,"/"),p+=C,f=S+C.length}let h=a.pathname.slice(f,a.pathname.length);p+=h.replace(/\/{2,}/g,"/"),a.pathname=p}if(a.pathname)try{a.pathname=decodeURI(a.pathname)}catch{}if(e.removeDirectoryIndex===!0&&(e.removeDirectoryIndex=[/^index\.[a-z]+$/]),Array.isArray(e.removeDirectoryIndex)&&e.removeDirectoryIndex.length>0){let c=a.pathname.split("/"),f=c[c.length-1];IBe(f,e.removeDirectoryIndex)&&(c=c.slice(0,-1),a.pathname=c.slice(1).join("/")+"/")}if(a.hostname&&(a.hostname=a.hostname.replace(/\.$/,""),e.stripWWW&&/^www\.(?!www\.)[a-z\-\d]{1,63}\.[a-z.\-\d]{2,63}$/.test(a.hostname)&&(a.hostname=a.hostname.replace(/^www\./,""))),Array.isArray(e.removeQueryParameters))for(let c of[...a.searchParams.keys()])IBe(c,e.removeQueryParameters)&&a.searchParams.delete(c);if(e.removeQueryParameters===!0&&(a.search=""),e.sortQueryParameters){a.searchParams.sort();try{a.search=decodeURIComponent(a.search)}catch{}}e.removeTrailingSlash&&(a.pathname=a.pathname.replace(/\/$/,""));let n=t;return t=a.toString(),!e.removeSingleSlash&&a.pathname==="/"&&!n.endsWith("/")&&a.hash===""&&(t=t.replace(/\/$/,"")),(e.removeTrailingSlash||a.pathname==="/")&&a.hash===""&&e.removeSingleSlash&&(t=t.replace(/\/$/,"")),r&&!e.normalizeProtocol&&(t=t.replace(/^http:\/\//,"//")),e.stripProtocol&&(t=t.replace(/^(?:https?:)?\/\//,"")),t}var G5=(t,e=!1)=>{let r=/^(?:([a-z_][a-z0-9_-]{0,31})@|https?:\/\/)([\w\.\-@]+)[\/:]([\~,\.\w,\-,\_,\/]+?(?:\.git|\/)?)$/,s=n=>{let c=new Error(n);throw c.subject_url=t,c};(typeof t!="string"||!t.trim())&&s("Invalid url."),t.length>G5.MAX_INPUT_LENGTH&&s("Input exceeds maximum length. If needed, change the value of parseUrl.MAX_INPUT_LENGTH."),e&&(typeof e!="object"&&(e={stripHash:!1}),t=QSt(t,e));let a=bSt.default(t);if(a.parse_failed){let n=a.href.match(r);n?(a.protocols=["ssh"],a.protocol="ssh",a.resource=n[2],a.host=n[2],a.user=n[1],a.pathname=`/${n[3]}`,a.parse_failed=!1):s("URL parsing failed.")}return a};G5.MAX_INPUT_LENGTH=2048;CBe.exports=G5});var SBe=L((xcr,vBe)=>{"use strict";var TSt=q5();function BBe(t){if(Array.isArray(t))return t.indexOf("ssh")!==-1||t.indexOf("rsync")!==-1;if(typeof t!="string")return!1;var e=TSt(t);if(t=t.substring(t.indexOf("://")+3),BBe(e))return!0;var r=new RegExp(".([a-zA-Z\\d]+):(\\d+)/");return!t.match(r)&&t.indexOf("@"){"use strict";var RSt=wBe(),DBe=SBe();function FSt(t){var e=RSt(t);return e.token="",e.password==="x-oauth-basic"?e.token=e.user:e.user==="x-token-auth"&&(e.token=e.password),DBe(e.protocols)||e.protocols.length===0&&DBe(t)?e.protocol="ssh":e.protocols.length?e.protocol=e.protocols[0]:(e.protocol="file",e.protocols=["file"]),e.href=e.href.replace(/\/$/,""),e}bBe.exports=FSt});var kBe=L((Qcr,xBe)=>{"use strict";var NSt=PBe();function W5(t){if(typeof t!="string")throw new Error("The url must be a string.");var e=/^([a-z\d-]{1,39})\/([-\.\w]{1,100})$/i;e.test(t)&&(t="https://github.com/"+t);var r=NSt(t),s=r.resource.split("."),a=null;switch(r.toString=function(N){return W5.stringify(this,N)},r.source=s.length>2?s.slice(1-s.length).join("."):r.source=r.resource,r.git_suffix=/\.git$/.test(r.pathname),r.name=decodeURIComponent((r.pathname||r.href).replace(/(^\/)|(\/$)/g,"").replace(/\.git$/,"")),r.owner=decodeURIComponent(r.user),r.source){case"git.cloudforge.com":r.owner=r.user,r.organization=s[0],r.source="cloudforge.com";break;case"visualstudio.com":if(r.resource==="vs-ssh.visualstudio.com"){a=r.name.split("/"),a.length===4&&(r.organization=a[1],r.owner=a[2],r.name=a[3],r.full_name=a[2]+"/"+a[3]);break}else{a=r.name.split("/"),a.length===2?(r.owner=a[1],r.name=a[1],r.full_name="_git/"+r.name):a.length===3?(r.name=a[2],a[0]==="DefaultCollection"?(r.owner=a[2],r.organization=a[0],r.full_name=r.organization+"/_git/"+r.name):(r.owner=a[0],r.full_name=r.owner+"/_git/"+r.name)):a.length===4&&(r.organization=a[0],r.owner=a[1],r.name=a[3],r.full_name=r.organization+"/"+r.owner+"/_git/"+r.name);break}case"dev.azure.com":case"azure.com":if(r.resource==="ssh.dev.azure.com"){a=r.name.split("/"),a.length===4&&(r.organization=a[1],r.owner=a[2],r.name=a[3]);break}else{a=r.name.split("/"),a.length===5?(r.organization=a[0],r.owner=a[1],r.name=a[4],r.full_name="_git/"+r.name):a.length===3?(r.name=a[2],a[0]==="DefaultCollection"?(r.owner=a[2],r.organization=a[0],r.full_name=r.organization+"/_git/"+r.name):(r.owner=a[0],r.full_name=r.owner+"/_git/"+r.name)):a.length===4&&(r.organization=a[0],r.owner=a[1],r.name=a[3],r.full_name=r.organization+"/"+r.owner+"/_git/"+r.name),r.query&&r.query.path&&(r.filepath=r.query.path.replace(/^\/+/g,"")),r.query&&r.query.version&&(r.ref=r.query.version.replace(/^GB/,""));break}default:a=r.name.split("/");var n=a.length-1;if(a.length>=2){var c=a.indexOf("-",2),f=a.indexOf("blob",2),p=a.indexOf("tree",2),h=a.indexOf("commit",2),E=a.indexOf("src",2),C=a.indexOf("raw",2),S=a.indexOf("edit",2);n=c>0?c-1:f>0?f-1:p>0?p-1:h>0?h-1:E>0?E-1:C>0?C-1:S>0?S-1:n,r.owner=a.slice(0,n).join("/"),r.name=a[n],h&&(r.commit=a[n+2])}r.ref="",r.filepathtype="",r.filepath="";var P=a.length>n&&a[n+1]==="-"?n+1:n;a.length>P+2&&["raw","src","blob","tree","edit"].indexOf(a[P+1])>=0&&(r.filepathtype=a[P+1],r.ref=a[P+2],a.length>P+3&&(r.filepath=a.slice(P+3).join("/"))),r.organization=r.owner;break}r.full_name||(r.full_name=r.owner,r.name&&(r.full_name&&(r.full_name+="/"),r.full_name+=r.name)),r.owner.startsWith("scm/")&&(r.source="bitbucket-server",r.owner=r.owner.replace("scm/",""),r.organization=r.owner,r.full_name=r.owner+"/"+r.name);var I=/(projects|users)\/(.*?)\/repos\/(.*?)((\/.*$)|$)/,R=I.exec(r.pathname);return R!=null&&(r.source="bitbucket-server",R[1]==="users"?r.owner="~"+R[2]:r.owner=R[2],r.organization=r.owner,r.name=R[3],a=R[4].split("/"),a.length>1&&(["raw","browse"].indexOf(a[1])>=0?(r.filepathtype=a[1],a.length>2&&(r.filepath=a.slice(2).join("/"))):a[1]==="commits"&&a.length>2&&(r.commit=a[2])),r.full_name=r.owner+"/"+r.name,r.query.at?r.ref=r.query.at:r.ref=""),r}W5.stringify=function(t,e){e=e||(t.protocols&&t.protocols.length?t.protocols.join("+"):t.protocol);var r=t.port?":"+t.port:"",s=t.user||"git",a=t.git_suffix?".git":"";switch(e){case"ssh":return r?"ssh://"+s+"@"+t.resource+r+"/"+t.full_name+a:s+"@"+t.resource+":"+t.full_name+a;case"git+ssh":case"ssh+git":case"ftp":case"ftps":return e+"://"+s+"@"+t.resource+r+"/"+t.full_name+a;case"http":case"https":var n=t.token?OSt(t):t.user&&(t.protocols.includes("http")||t.protocols.includes("https"))?t.user+"@":"";return e+"://"+n+t.resource+r+"/"+LSt(t)+a;default:return t.href}};function OSt(t){switch(t.source){case"bitbucket.org":return"x-token-auth:"+t.token+"@";default:return t.token+"@"}}function LSt(t){switch(t.source){case"bitbucket-server":return"scm/"+t.full_name;default:return""+t.full_name}}xBe.exports=W5});var YBe=L((ufr,WBe)=>{var KSt=RT(),JSt=Gk(),zSt=xc(),ZSt=aI(),XSt=IG(),$St=XI(),eDt=Tv();function tDt(t){return zSt(t)?KSt(t,$St):ZSt(t)?[t]:JSt(XSt(eDt(t)))}WBe.exports=tDt});function sDt(t,e){return e===1&&iDt.has(t[0])}function ES(t){let e=Array.isArray(t)?t:(0,JBe.default)(t);return e.map((s,a)=>rDt.test(s)?`[${s}]`:nDt.test(s)&&!sDt(e,a)?`.${s}`:`[${JSON.stringify(s)}]`).join("").replace(/^\./,"")}function oDt(t,e){let r=[];if(e.methodName!==null&&r.push(he.pretty(t,e.methodName,he.Type.CODE)),e.file!==null){let s=[];s.push(he.pretty(t,e.file,he.Type.PATH)),e.line!==null&&(s.push(he.pretty(t,e.line,he.Type.NUMBER)),e.column!==null&&s.push(he.pretty(t,e.column,he.Type.NUMBER))),r.push(`(${s.join(he.pretty(t,":","grey"))})`)}return r.join(" ")}function lF(t,{manifestUpdates:e,reportedErrors:r},{fix:s}={}){let a=new Map,n=new Map,c=[...r.keys()].map(f=>[f,new Map]);for(let[f,p]of[...c,...e]){let h=r.get(f)?.map(P=>({text:P,fixable:!1}))??[],E=!1,C=t.getWorkspaceByCwd(f),S=C.manifest.exportTo({});for(let[P,I]of p){if(I.size>1){let R=[...I].map(([N,U])=>{let W=he.pretty(t.configuration,N,he.Type.INSPECT),te=U.size>0?oDt(t.configuration,U.values().next().value):null;return te!==null?` +${W} at ${te}`:` +${W}`}).join("");h.push({text:`Conflict detected in constraint targeting ${he.pretty(t.configuration,P,he.Type.CODE)}; conflicting values are:${R}`,fixable:!1})}else{let[[R]]=I,N=(0,VBe.default)(S,P);if(JSON.stringify(N)===JSON.stringify(R))continue;if(!s){let U=typeof N>"u"?`Missing field ${he.pretty(t.configuration,P,he.Type.CODE)}; expected ${he.pretty(t.configuration,R,he.Type.INSPECT)}`:typeof R>"u"?`Extraneous field ${he.pretty(t.configuration,P,he.Type.CODE)} currently set to ${he.pretty(t.configuration,N,he.Type.INSPECT)}`:`Invalid field ${he.pretty(t.configuration,P,he.Type.CODE)}; expected ${he.pretty(t.configuration,R,he.Type.INSPECT)}, found ${he.pretty(t.configuration,N,he.Type.INSPECT)}`;h.push({text:U,fixable:!0});continue}typeof R>"u"?(0,zBe.default)(S,P):(0,KBe.default)(S,P,R),E=!0}E&&a.set(C,S)}h.length>0&&n.set(C,h)}return{changedWorkspaces:a,remainingErrors:n}}function ZBe(t,{configuration:e}){let r={children:[]};for(let[s,a]of t){let n=[];for(let f of a){let p=f.text.split(/\n/);f.fixable&&(p[0]=`${he.pretty(e,"\u2699","gray")} ${p[0]}`),n.push({value:he.tuple(he.Type.NO_HINT,p[0]),children:p.slice(1).map(h=>({value:he.tuple(he.Type.NO_HINT,h)}))})}let c={value:he.tuple(he.Type.LOCATOR,s.anchoredLocator),children:je.sortMap(n,f=>f.value[1])};r.children.push(c)}return r.children=je.sortMap(r.children,s=>s.value[1]),r}var VBe,KBe,JBe,zBe,VC,rDt,nDt,iDt,IS=It(()=>{Ve();VBe=et(AS()),KBe=et(Q5()),JBe=et(YBe()),zBe=et(F5()),VC=class{constructor(e){this.indexedFields=e;this.items=[];this.indexes={};this.clear()}clear(){this.items=[];for(let e of this.indexedFields)this.indexes[e]=new Map}insert(e){this.items.push(e);for(let r of this.indexedFields){let s=Object.hasOwn(e,r)?e[r]:void 0;if(typeof s>"u")continue;je.getArrayWithDefault(this.indexes[r],s).push(e)}return e}find(e){if(typeof e>"u")return this.items;let r=Object.entries(e);if(r.length===0)return this.items;let s=[],a;for(let[c,f]of r){let p=c,h=Object.hasOwn(this.indexes,p)?this.indexes[p]:void 0;if(typeof h>"u"){s.push([p,f]);continue}let E=new Set(h.get(f)??[]);if(E.size===0)return[];if(typeof a>"u")a=E;else for(let C of a)E.has(C)||a.delete(C);if(a.size===0)break}let n=[...a??[]];return s.length>0&&(n=n.filter(c=>{for(let[f,p]of s)if(!(typeof p<"u"?Object.hasOwn(c,f)&&c[f]===p:Object.hasOwn(c,f)===!1))return!1;return!0})),n}},rDt=/^[0-9]+$/,nDt=/^[a-zA-Z0-9_]+$/,iDt=new Set(["scripts",...Ht.allDependencies])});var XBe=L((wfr,s9)=>{var aDt;(function(t){var e=function(){return{"append/2":[new t.type.Rule(new t.type.Term("append",[new t.type.Var("X"),new t.type.Var("L")]),new t.type.Term("foldl",[new t.type.Term("append",[]),new t.type.Var("X"),new t.type.Term("[]",[]),new t.type.Var("L")]))],"append/3":[new t.type.Rule(new t.type.Term("append",[new t.type.Term("[]",[]),new t.type.Var("X"),new t.type.Var("X")]),null),new t.type.Rule(new t.type.Term("append",[new t.type.Term(".",[new t.type.Var("H"),new t.type.Var("T")]),new t.type.Var("X"),new t.type.Term(".",[new t.type.Var("H"),new t.type.Var("S")])]),new t.type.Term("append",[new t.type.Var("T"),new t.type.Var("X"),new t.type.Var("S")]))],"member/2":[new t.type.Rule(new t.type.Term("member",[new t.type.Var("X"),new t.type.Term(".",[new t.type.Var("X"),new t.type.Var("_")])]),null),new t.type.Rule(new t.type.Term("member",[new t.type.Var("X"),new t.type.Term(".",[new t.type.Var("_"),new t.type.Var("Xs")])]),new t.type.Term("member",[new t.type.Var("X"),new t.type.Var("Xs")]))],"permutation/2":[new t.type.Rule(new t.type.Term("permutation",[new t.type.Term("[]",[]),new t.type.Term("[]",[])]),null),new t.type.Rule(new t.type.Term("permutation",[new t.type.Term(".",[new t.type.Var("H"),new t.type.Var("T")]),new t.type.Var("S")]),new t.type.Term(",",[new t.type.Term("permutation",[new t.type.Var("T"),new t.type.Var("P")]),new t.type.Term(",",[new t.type.Term("append",[new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("P")]),new t.type.Term("append",[new t.type.Var("X"),new t.type.Term(".",[new t.type.Var("H"),new t.type.Var("Y")]),new t.type.Var("S")])])]))],"maplist/2":[new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("_"),new t.type.Term("[]",[])]),null),new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Term(".",[new t.type.Var("X"),new t.type.Var("Xs")])]),new t.type.Term(",",[new t.type.Term("call",[new t.type.Var("P"),new t.type.Var("X")]),new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Var("Xs")])]))],"maplist/3":[new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("_"),new t.type.Term("[]",[]),new t.type.Term("[]",[])]),null),new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Term(".",[new t.type.Var("A"),new t.type.Var("As")]),new t.type.Term(".",[new t.type.Var("B"),new t.type.Var("Bs")])]),new t.type.Term(",",[new t.type.Term("call",[new t.type.Var("P"),new t.type.Var("A"),new t.type.Var("B")]),new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Var("As"),new t.type.Var("Bs")])]))],"maplist/4":[new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("_"),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[])]),null),new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Term(".",[new t.type.Var("A"),new t.type.Var("As")]),new t.type.Term(".",[new t.type.Var("B"),new t.type.Var("Bs")]),new t.type.Term(".",[new t.type.Var("C"),new t.type.Var("Cs")])]),new t.type.Term(",",[new t.type.Term("call",[new t.type.Var("P"),new t.type.Var("A"),new t.type.Var("B"),new t.type.Var("C")]),new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Var("As"),new t.type.Var("Bs"),new t.type.Var("Cs")])]))],"maplist/5":[new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("_"),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[])]),null),new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Term(".",[new t.type.Var("A"),new t.type.Var("As")]),new t.type.Term(".",[new t.type.Var("B"),new t.type.Var("Bs")]),new t.type.Term(".",[new t.type.Var("C"),new t.type.Var("Cs")]),new t.type.Term(".",[new t.type.Var("D"),new t.type.Var("Ds")])]),new t.type.Term(",",[new t.type.Term("call",[new t.type.Var("P"),new t.type.Var("A"),new t.type.Var("B"),new t.type.Var("C"),new t.type.Var("D")]),new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Var("As"),new t.type.Var("Bs"),new t.type.Var("Cs"),new t.type.Var("Ds")])]))],"maplist/6":[new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("_"),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[])]),null),new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Term(".",[new t.type.Var("A"),new t.type.Var("As")]),new t.type.Term(".",[new t.type.Var("B"),new t.type.Var("Bs")]),new t.type.Term(".",[new t.type.Var("C"),new t.type.Var("Cs")]),new t.type.Term(".",[new t.type.Var("D"),new t.type.Var("Ds")]),new t.type.Term(".",[new t.type.Var("E"),new t.type.Var("Es")])]),new t.type.Term(",",[new t.type.Term("call",[new t.type.Var("P"),new t.type.Var("A"),new t.type.Var("B"),new t.type.Var("C"),new t.type.Var("D"),new t.type.Var("E")]),new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Var("As"),new t.type.Var("Bs"),new t.type.Var("Cs"),new t.type.Var("Ds"),new t.type.Var("Es")])]))],"maplist/7":[new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("_"),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[])]),null),new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Term(".",[new t.type.Var("A"),new t.type.Var("As")]),new t.type.Term(".",[new t.type.Var("B"),new t.type.Var("Bs")]),new t.type.Term(".",[new t.type.Var("C"),new t.type.Var("Cs")]),new t.type.Term(".",[new t.type.Var("D"),new t.type.Var("Ds")]),new t.type.Term(".",[new t.type.Var("E"),new t.type.Var("Es")]),new t.type.Term(".",[new t.type.Var("F"),new t.type.Var("Fs")])]),new t.type.Term(",",[new t.type.Term("call",[new t.type.Var("P"),new t.type.Var("A"),new t.type.Var("B"),new t.type.Var("C"),new t.type.Var("D"),new t.type.Var("E"),new t.type.Var("F")]),new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Var("As"),new t.type.Var("Bs"),new t.type.Var("Cs"),new t.type.Var("Ds"),new t.type.Var("Es"),new t.type.Var("Fs")])]))],"maplist/8":[new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("_"),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[])]),null),new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Term(".",[new t.type.Var("A"),new t.type.Var("As")]),new t.type.Term(".",[new t.type.Var("B"),new t.type.Var("Bs")]),new t.type.Term(".",[new t.type.Var("C"),new t.type.Var("Cs")]),new t.type.Term(".",[new t.type.Var("D"),new t.type.Var("Ds")]),new t.type.Term(".",[new t.type.Var("E"),new t.type.Var("Es")]),new t.type.Term(".",[new t.type.Var("F"),new t.type.Var("Fs")]),new t.type.Term(".",[new t.type.Var("G"),new t.type.Var("Gs")])]),new t.type.Term(",",[new t.type.Term("call",[new t.type.Var("P"),new t.type.Var("A"),new t.type.Var("B"),new t.type.Var("C"),new t.type.Var("D"),new t.type.Var("E"),new t.type.Var("F"),new t.type.Var("G")]),new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Var("As"),new t.type.Var("Bs"),new t.type.Var("Cs"),new t.type.Var("Ds"),new t.type.Var("Es"),new t.type.Var("Fs"),new t.type.Var("Gs")])]))],"include/3":[new t.type.Rule(new t.type.Term("include",[new t.type.Var("_"),new t.type.Term("[]",[]),new t.type.Term("[]",[])]),null),new t.type.Rule(new t.type.Term("include",[new t.type.Var("P"),new t.type.Term(".",[new t.type.Var("H"),new t.type.Var("T")]),new t.type.Var("L")]),new t.type.Term(",",[new t.type.Term("=..",[new t.type.Var("P"),new t.type.Var("A")]),new t.type.Term(",",[new t.type.Term("append",[new t.type.Var("A"),new t.type.Term(".",[new t.type.Var("H"),new t.type.Term("[]",[])]),new t.type.Var("B")]),new t.type.Term(",",[new t.type.Term("=..",[new t.type.Var("F"),new t.type.Var("B")]),new t.type.Term(",",[new t.type.Term(";",[new t.type.Term(",",[new t.type.Term("call",[new t.type.Var("F")]),new t.type.Term(",",[new t.type.Term("=",[new t.type.Var("L"),new t.type.Term(".",[new t.type.Var("H"),new t.type.Var("S")])]),new t.type.Term("!",[])])]),new t.type.Term("=",[new t.type.Var("L"),new t.type.Var("S")])]),new t.type.Term("include",[new t.type.Var("P"),new t.type.Var("T"),new t.type.Var("S")])])])])]))],"exclude/3":[new t.type.Rule(new t.type.Term("exclude",[new t.type.Var("_"),new t.type.Term("[]",[]),new t.type.Term("[]",[])]),null),new t.type.Rule(new t.type.Term("exclude",[new t.type.Var("P"),new t.type.Term(".",[new t.type.Var("H"),new t.type.Var("T")]),new t.type.Var("S")]),new t.type.Term(",",[new t.type.Term("exclude",[new t.type.Var("P"),new t.type.Var("T"),new t.type.Var("E")]),new t.type.Term(",",[new t.type.Term("=..",[new t.type.Var("P"),new t.type.Var("L")]),new t.type.Term(",",[new t.type.Term("append",[new t.type.Var("L"),new t.type.Term(".",[new t.type.Var("H"),new t.type.Term("[]",[])]),new t.type.Var("Q")]),new t.type.Term(",",[new t.type.Term("=..",[new t.type.Var("R"),new t.type.Var("Q")]),new t.type.Term(";",[new t.type.Term(",",[new t.type.Term("call",[new t.type.Var("R")]),new t.type.Term(",",[new t.type.Term("!",[]),new t.type.Term("=",[new t.type.Var("S"),new t.type.Var("E")])])]),new t.type.Term("=",[new t.type.Var("S"),new t.type.Term(".",[new t.type.Var("H"),new t.type.Var("E")])])])])])])]))],"foldl/4":[new t.type.Rule(new t.type.Term("foldl",[new t.type.Var("_"),new t.type.Term("[]",[]),new t.type.Var("I"),new t.type.Var("I")]),null),new t.type.Rule(new t.type.Term("foldl",[new t.type.Var("P"),new t.type.Term(".",[new t.type.Var("H"),new t.type.Var("T")]),new t.type.Var("I"),new t.type.Var("R")]),new t.type.Term(",",[new t.type.Term("=..",[new t.type.Var("P"),new t.type.Var("L")]),new t.type.Term(",",[new t.type.Term("append",[new t.type.Var("L"),new t.type.Term(".",[new t.type.Var("I"),new t.type.Term(".",[new t.type.Var("H"),new t.type.Term(".",[new t.type.Var("X"),new t.type.Term("[]",[])])])]),new t.type.Var("L2")]),new t.type.Term(",",[new t.type.Term("=..",[new t.type.Var("P2"),new t.type.Var("L2")]),new t.type.Term(",",[new t.type.Term("call",[new t.type.Var("P2")]),new t.type.Term("foldl",[new t.type.Var("P"),new t.type.Var("T"),new t.type.Var("X"),new t.type.Var("R")])])])])]))],"select/3":[new t.type.Rule(new t.type.Term("select",[new t.type.Var("E"),new t.type.Term(".",[new t.type.Var("E"),new t.type.Var("Xs")]),new t.type.Var("Xs")]),null),new t.type.Rule(new t.type.Term("select",[new t.type.Var("E"),new t.type.Term(".",[new t.type.Var("X"),new t.type.Var("Xs")]),new t.type.Term(".",[new t.type.Var("X"),new t.type.Var("Ys")])]),new t.type.Term("select",[new t.type.Var("E"),new t.type.Var("Xs"),new t.type.Var("Ys")]))],"sum_list/2":[new t.type.Rule(new t.type.Term("sum_list",[new t.type.Term("[]",[]),new t.type.Num(0,!1)]),null),new t.type.Rule(new t.type.Term("sum_list",[new t.type.Term(".",[new t.type.Var("X"),new t.type.Var("Xs")]),new t.type.Var("S")]),new t.type.Term(",",[new t.type.Term("sum_list",[new t.type.Var("Xs"),new t.type.Var("Y")]),new t.type.Term("is",[new t.type.Var("S"),new t.type.Term("+",[new t.type.Var("X"),new t.type.Var("Y")])])]))],"max_list/2":[new t.type.Rule(new t.type.Term("max_list",[new t.type.Term(".",[new t.type.Var("X"),new t.type.Term("[]",[])]),new t.type.Var("X")]),null),new t.type.Rule(new t.type.Term("max_list",[new t.type.Term(".",[new t.type.Var("X"),new t.type.Var("Xs")]),new t.type.Var("S")]),new t.type.Term(",",[new t.type.Term("max_list",[new t.type.Var("Xs"),new t.type.Var("Y")]),new t.type.Term(";",[new t.type.Term(",",[new t.type.Term(">=",[new t.type.Var("X"),new t.type.Var("Y")]),new t.type.Term(",",[new t.type.Term("=",[new t.type.Var("S"),new t.type.Var("X")]),new t.type.Term("!",[])])]),new t.type.Term("=",[new t.type.Var("S"),new t.type.Var("Y")])])]))],"min_list/2":[new t.type.Rule(new t.type.Term("min_list",[new t.type.Term(".",[new t.type.Var("X"),new t.type.Term("[]",[])]),new t.type.Var("X")]),null),new t.type.Rule(new t.type.Term("min_list",[new t.type.Term(".",[new t.type.Var("X"),new t.type.Var("Xs")]),new t.type.Var("S")]),new t.type.Term(",",[new t.type.Term("min_list",[new t.type.Var("Xs"),new t.type.Var("Y")]),new t.type.Term(";",[new t.type.Term(",",[new t.type.Term("=<",[new t.type.Var("X"),new t.type.Var("Y")]),new t.type.Term(",",[new t.type.Term("=",[new t.type.Var("S"),new t.type.Var("X")]),new t.type.Term("!",[])])]),new t.type.Term("=",[new t.type.Var("S"),new t.type.Var("Y")])])]))],"prod_list/2":[new t.type.Rule(new t.type.Term("prod_list",[new t.type.Term("[]",[]),new t.type.Num(1,!1)]),null),new t.type.Rule(new t.type.Term("prod_list",[new t.type.Term(".",[new t.type.Var("X"),new t.type.Var("Xs")]),new t.type.Var("S")]),new t.type.Term(",",[new t.type.Term("prod_list",[new t.type.Var("Xs"),new t.type.Var("Y")]),new t.type.Term("is",[new t.type.Var("S"),new t.type.Term("*",[new t.type.Var("X"),new t.type.Var("Y")])])]))],"last/2":[new t.type.Rule(new t.type.Term("last",[new t.type.Term(".",[new t.type.Var("X"),new t.type.Term("[]",[])]),new t.type.Var("X")]),null),new t.type.Rule(new t.type.Term("last",[new t.type.Term(".",[new t.type.Var("_"),new t.type.Var("Xs")]),new t.type.Var("X")]),new t.type.Term("last",[new t.type.Var("Xs"),new t.type.Var("X")]))],"prefix/2":[new t.type.Rule(new t.type.Term("prefix",[new t.type.Var("Part"),new t.type.Var("Whole")]),new t.type.Term("append",[new t.type.Var("Part"),new t.type.Var("_"),new t.type.Var("Whole")]))],"nth0/3":[new t.type.Rule(new t.type.Term("nth0",[new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z")]),new t.type.Term(";",[new t.type.Term("->",[new t.type.Term("var",[new t.type.Var("X")]),new t.type.Term("nth",[new t.type.Num(0,!1),new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z"),new t.type.Var("_")])]),new t.type.Term(",",[new t.type.Term(">=",[new t.type.Var("X"),new t.type.Num(0,!1)]),new t.type.Term(",",[new t.type.Term("nth",[new t.type.Num(0,!1),new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z"),new t.type.Var("_")]),new t.type.Term("!",[])])])]))],"nth1/3":[new t.type.Rule(new t.type.Term("nth1",[new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z")]),new t.type.Term(";",[new t.type.Term("->",[new t.type.Term("var",[new t.type.Var("X")]),new t.type.Term("nth",[new t.type.Num(1,!1),new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z"),new t.type.Var("_")])]),new t.type.Term(",",[new t.type.Term(">",[new t.type.Var("X"),new t.type.Num(0,!1)]),new t.type.Term(",",[new t.type.Term("nth",[new t.type.Num(1,!1),new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z"),new t.type.Var("_")]),new t.type.Term("!",[])])])]))],"nth0/4":[new t.type.Rule(new t.type.Term("nth0",[new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z"),new t.type.Var("W")]),new t.type.Term(";",[new t.type.Term("->",[new t.type.Term("var",[new t.type.Var("X")]),new t.type.Term("nth",[new t.type.Num(0,!1),new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z"),new t.type.Var("W")])]),new t.type.Term(",",[new t.type.Term(">=",[new t.type.Var("X"),new t.type.Num(0,!1)]),new t.type.Term(",",[new t.type.Term("nth",[new t.type.Num(0,!1),new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z"),new t.type.Var("W")]),new t.type.Term("!",[])])])]))],"nth1/4":[new t.type.Rule(new t.type.Term("nth1",[new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z"),new t.type.Var("W")]),new t.type.Term(";",[new t.type.Term("->",[new t.type.Term("var",[new t.type.Var("X")]),new t.type.Term("nth",[new t.type.Num(1,!1),new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z"),new t.type.Var("W")])]),new t.type.Term(",",[new t.type.Term(">",[new t.type.Var("X"),new t.type.Num(0,!1)]),new t.type.Term(",",[new t.type.Term("nth",[new t.type.Num(1,!1),new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z"),new t.type.Var("W")]),new t.type.Term("!",[])])])]))],"nth/5":[new t.type.Rule(new t.type.Term("nth",[new t.type.Var("N"),new t.type.Var("N"),new t.type.Term(".",[new t.type.Var("X"),new t.type.Var("Xs")]),new t.type.Var("X"),new t.type.Var("Xs")]),null),new t.type.Rule(new t.type.Term("nth",[new t.type.Var("N"),new t.type.Var("O"),new t.type.Term(".",[new t.type.Var("X"),new t.type.Var("Xs")]),new t.type.Var("Y"),new t.type.Term(".",[new t.type.Var("X"),new t.type.Var("Ys")])]),new t.type.Term(",",[new t.type.Term("is",[new t.type.Var("M"),new t.type.Term("+",[new t.type.Var("N"),new t.type.Num(1,!1)])]),new t.type.Term("nth",[new t.type.Var("M"),new t.type.Var("O"),new t.type.Var("Xs"),new t.type.Var("Y"),new t.type.Var("Ys")])]))],"length/2":function(s,a,n){var c=n.args[0],f=n.args[1];if(!t.type.is_variable(f)&&!t.type.is_integer(f))s.throw_error(t.error.type("integer",f,n.indicator));else if(t.type.is_integer(f)&&f.value<0)s.throw_error(t.error.domain("not_less_than_zero",f,n.indicator));else{var p=new t.type.Term("length",[c,new t.type.Num(0,!1),f]);t.type.is_integer(f)&&(p=new t.type.Term(",",[p,new t.type.Term("!",[])])),s.prepend([new t.type.State(a.goal.replace(p),a.substitution,a)])}},"length/3":[new t.type.Rule(new t.type.Term("length",[new t.type.Term("[]",[]),new t.type.Var("N"),new t.type.Var("N")]),null),new t.type.Rule(new t.type.Term("length",[new t.type.Term(".",[new t.type.Var("_"),new t.type.Var("X")]),new t.type.Var("A"),new t.type.Var("N")]),new t.type.Term(",",[new t.type.Term("succ",[new t.type.Var("A"),new t.type.Var("B")]),new t.type.Term("length",[new t.type.Var("X"),new t.type.Var("B"),new t.type.Var("N")])]))],"replicate/3":function(s,a,n){var c=n.args[0],f=n.args[1],p=n.args[2];if(t.type.is_variable(f))s.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_integer(f))s.throw_error(t.error.type("integer",f,n.indicator));else if(f.value<0)s.throw_error(t.error.domain("not_less_than_zero",f,n.indicator));else if(!t.type.is_variable(p)&&!t.type.is_list(p))s.throw_error(t.error.type("list",p,n.indicator));else{for(var h=new t.type.Term("[]"),E=0;E0;C--)E[C].equals(E[C-1])&&E.splice(C,1);for(var S=new t.type.Term("[]"),C=E.length-1;C>=0;C--)S=new t.type.Term(".",[E[C],S]);s.prepend([new t.type.State(a.goal.replace(new t.type.Term("=",[S,f])),a.substitution,a)])}}},"msort/2":function(s,a,n){var c=n.args[0],f=n.args[1];if(t.type.is_variable(c))s.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_variable(f)&&!t.type.is_fully_list(f))s.throw_error(t.error.type("list",f,n.indicator));else{for(var p=[],h=c;h.indicator==="./2";)p.push(h.args[0]),h=h.args[1];if(t.type.is_variable(h))s.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_empty_list(h))s.throw_error(t.error.type("list",c,n.indicator));else{for(var E=p.sort(t.compare),C=new t.type.Term("[]"),S=E.length-1;S>=0;S--)C=new t.type.Term(".",[E[S],C]);s.prepend([new t.type.State(a.goal.replace(new t.type.Term("=",[C,f])),a.substitution,a)])}}},"keysort/2":function(s,a,n){var c=n.args[0],f=n.args[1];if(t.type.is_variable(c))s.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_variable(f)&&!t.type.is_fully_list(f))s.throw_error(t.error.type("list",f,n.indicator));else{for(var p=[],h,E=c;E.indicator==="./2";){if(h=E.args[0],t.type.is_variable(h)){s.throw_error(t.error.instantiation(n.indicator));return}else if(!t.type.is_term(h)||h.indicator!=="-/2"){s.throw_error(t.error.type("pair",h,n.indicator));return}h.args[0].pair=h.args[1],p.push(h.args[0]),E=E.args[1]}if(t.type.is_variable(E))s.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_empty_list(E))s.throw_error(t.error.type("list",c,n.indicator));else{for(var C=p.sort(t.compare),S=new t.type.Term("[]"),P=C.length-1;P>=0;P--)S=new t.type.Term(".",[new t.type.Term("-",[C[P],C[P].pair]),S]),delete C[P].pair;s.prepend([new t.type.State(a.goal.replace(new t.type.Term("=",[S,f])),a.substitution,a)])}}},"take/3":function(s,a,n){var c=n.args[0],f=n.args[1],p=n.args[2];if(t.type.is_variable(f)||t.type.is_variable(c))s.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_list(f))s.throw_error(t.error.type("list",f,n.indicator));else if(!t.type.is_integer(c))s.throw_error(t.error.type("integer",c,n.indicator));else if(!t.type.is_variable(p)&&!t.type.is_list(p))s.throw_error(t.error.type("list",p,n.indicator));else{for(var h=c.value,E=[],C=f;h>0&&C.indicator==="./2";)E.push(C.args[0]),C=C.args[1],h--;if(h===0){for(var S=new t.type.Term("[]"),h=E.length-1;h>=0;h--)S=new t.type.Term(".",[E[h],S]);s.prepend([new t.type.State(a.goal.replace(new t.type.Term("=",[S,p])),a.substitution,a)])}}},"drop/3":function(s,a,n){var c=n.args[0],f=n.args[1],p=n.args[2];if(t.type.is_variable(f)||t.type.is_variable(c))s.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_list(f))s.throw_error(t.error.type("list",f,n.indicator));else if(!t.type.is_integer(c))s.throw_error(t.error.type("integer",c,n.indicator));else if(!t.type.is_variable(p)&&!t.type.is_list(p))s.throw_error(t.error.type("list",p,n.indicator));else{for(var h=c.value,E=[],C=f;h>0&&C.indicator==="./2";)E.push(C.args[0]),C=C.args[1],h--;h===0&&s.prepend([new t.type.State(a.goal.replace(new t.type.Term("=",[C,p])),a.substitution,a)])}},"reverse/2":function(s,a,n){var c=n.args[0],f=n.args[1],p=t.type.is_instantiated_list(c),h=t.type.is_instantiated_list(f);if(t.type.is_variable(c)&&t.type.is_variable(f))s.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_variable(c)&&!t.type.is_fully_list(c))s.throw_error(t.error.type("list",c,n.indicator));else if(!t.type.is_variable(f)&&!t.type.is_fully_list(f))s.throw_error(t.error.type("list",f,n.indicator));else if(!p&&!h)s.throw_error(t.error.instantiation(n.indicator));else{for(var E=p?c:f,C=new t.type.Term("[]",[]);E.indicator==="./2";)C=new t.type.Term(".",[E.args[0],C]),E=E.args[1];s.prepend([new t.type.State(a.goal.replace(new t.type.Term("=",[C,p?f:c])),a.substitution,a)])}},"list_to_set/2":function(s,a,n){var c=n.args[0],f=n.args[1];if(t.type.is_variable(c))s.throw_error(t.error.instantiation(n.indicator));else{for(var p=c,h=[];p.indicator==="./2";)h.push(p.args[0]),p=p.args[1];if(t.type.is_variable(p))s.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_term(p)||p.indicator!=="[]/0")s.throw_error(t.error.type("list",c,n.indicator));else{for(var E=[],C=new t.type.Term("[]",[]),S,P=0;P=0;P--)C=new t.type.Term(".",[E[P],C]);s.prepend([new t.type.State(a.goal.replace(new t.type.Term("=",[f,C])),a.substitution,a)])}}}}},r=["append/2","append/3","member/2","permutation/2","maplist/2","maplist/3","maplist/4","maplist/5","maplist/6","maplist/7","maplist/8","include/3","exclude/3","foldl/4","sum_list/2","max_list/2","min_list/2","prod_list/2","last/2","prefix/2","nth0/3","nth1/3","nth0/4","nth1/4","length/2","replicate/3","select/3","sort/2","msort/2","keysort/2","take/3","drop/3","reverse/2","list_to_set/2"];typeof s9<"u"?s9.exports=function(s){t=s,new t.type.Module("lists",e(),r)}:new t.type.Module("lists",e(),r)})(aDt)});var pve=L($r=>{"use strict";var Pm=process.platform==="win32",o9="aes-256-cbc",lDt="sha256",tve="The current environment doesn't support interactive reading from TTY.",ii=ye("fs"),$Be=process.binding("tty_wrap").TTY,l9=ye("child_process"),K0=ye("path"),c9={prompt:"> ",hideEchoBack:!1,mask:"*",limit:[],limitMessage:"Input another, please.$<( [)limit(])>",defaultInput:"",trueValue:[],falseValue:[],caseSensitive:!1,keepWhitespace:!1,encoding:"utf8",bufferSize:1024,print:void 0,history:!0,cd:!1,phContent:void 0,preCheck:void 0},eh="none",$u,JC,eve=!1,V0,uF,a9,cDt=0,h9="",bm=[],fF,rve=!1,u9=!1,CS=!1;function nve(t){function e(r){return r.replace(/[^\w\u0080-\uFFFF]/g,function(s){return"#"+s.charCodeAt(0)+";"})}return uF.concat(function(r){var s=[];return Object.keys(r).forEach(function(a){r[a]==="boolean"?t[a]&&s.push("--"+a):r[a]==="string"&&t[a]&&s.push("--"+a,e(t[a]))}),s}({display:"string",displayOnly:"boolean",keyIn:"boolean",hideEchoBack:"boolean",mask:"string",limit:"string",caseSensitive:"boolean"}))}function uDt(t,e){function r(U){var W,te="",ie;for(a9=a9||ye("os").tmpdir();;){W=K0.join(a9,U+te);try{ie=ii.openSync(W,"wx")}catch(Ae){if(Ae.code==="EEXIST"){te++;continue}else throw Ae}ii.closeSync(ie);break}return W}var s,a,n,c={},f,p,h=r("readline-sync.stdout"),E=r("readline-sync.stderr"),C=r("readline-sync.exit"),S=r("readline-sync.done"),P=ye("crypto"),I,R,N;I=P.createHash(lDt),I.update(""+process.pid+cDt+++Math.random()),N=I.digest("hex"),R=P.createDecipher(o9,N),s=nve(t),Pm?(a=process.env.ComSpec||"cmd.exe",process.env.Q='"',n=["/V:ON","/S","/C","(%Q%"+a+"%Q% /V:ON /S /C %Q%%Q%"+V0+"%Q%"+s.map(function(U){return" %Q%"+U+"%Q%"}).join("")+" & (echo !ERRORLEVEL!)>%Q%"+C+"%Q%%Q%) 2>%Q%"+E+"%Q% |%Q%"+process.execPath+"%Q% %Q%"+__dirname+"\\encrypt.js%Q% %Q%"+o9+"%Q% %Q%"+N+"%Q% >%Q%"+h+"%Q% & (echo 1)>%Q%"+S+"%Q%"]):(a="/bin/sh",n=["-c",'("'+V0+'"'+s.map(function(U){return" '"+U.replace(/'/g,"'\\''")+"'"}).join("")+'; echo $?>"'+C+'") 2>"'+E+'" |"'+process.execPath+'" "'+__dirname+'/encrypt.js" "'+o9+'" "'+N+'" >"'+h+'"; echo 1 >"'+S+'"']),CS&&CS("_execFileSync",s);try{l9.spawn(a,n,e)}catch(U){c.error=new Error(U.message),c.error.method="_execFileSync - spawn",c.error.program=a,c.error.args=n}for(;ii.readFileSync(S,{encoding:t.encoding}).trim()!=="1";);return(f=ii.readFileSync(C,{encoding:t.encoding}).trim())==="0"?c.input=R.update(ii.readFileSync(h,{encoding:"binary"}),"hex",t.encoding)+R.final(t.encoding):(p=ii.readFileSync(E,{encoding:t.encoding}).trim(),c.error=new Error(tve+(p?` +`+p:"")),c.error.method="_execFileSync",c.error.program=a,c.error.args=n,c.error.extMessage=p,c.error.exitCode=+f),ii.unlinkSync(h),ii.unlinkSync(E),ii.unlinkSync(C),ii.unlinkSync(S),c}function fDt(t){var e,r={},s,a={env:process.env,encoding:t.encoding};if(V0||(Pm?process.env.PSModulePath?(V0="powershell.exe",uF=["-ExecutionPolicy","Bypass","-File",__dirname+"\\read.ps1"]):(V0="cscript.exe",uF=["//nologo",__dirname+"\\read.cs.js"]):(V0="/bin/sh",uF=[__dirname+"/read.sh"])),Pm&&!process.env.PSModulePath&&(a.stdio=[process.stdin]),l9.execFileSync){e=nve(t),CS&&CS("execFileSync",e);try{r.input=l9.execFileSync(V0,e,a)}catch(n){s=n.stderr?(n.stderr+"").trim():"",r.error=new Error(tve+(s?` +`+s:"")),r.error.method="execFileSync",r.error.program=V0,r.error.args=e,r.error.extMessage=s,r.error.exitCode=n.status,r.error.code=n.code,r.error.signal=n.signal}}else r=uDt(t,a);return r.error||(r.input=r.input.replace(/^\s*'|'\s*$/g,""),t.display=""),r}function f9(t){var e="",r=t.display,s=!t.display&&t.keyIn&&t.hideEchoBack&&!t.mask;function a(){var n=fDt(t);if(n.error)throw n.error;return n.input}return u9&&u9(t),function(){var n,c,f;function p(){return n||(n=process.binding("fs"),c=process.binding("constants")),n}if(typeof eh=="string")if(eh=null,Pm){if(f=function(h){var E=h.replace(/^\D+/,"").split("."),C=0;return(E[0]=+E[0])&&(C+=E[0]*1e4),(E[1]=+E[1])&&(C+=E[1]*100),(E[2]=+E[2])&&(C+=E[2]),C}(process.version),!(f>=20302&&f<40204||f>=5e4&&f<50100||f>=50600&&f<60200)&&process.stdin.isTTY)process.stdin.pause(),eh=process.stdin.fd,JC=process.stdin._handle;else try{eh=p().open("CONIN$",c.O_RDWR,parseInt("0666",8)),JC=new $Be(eh,!0)}catch{}if(process.stdout.isTTY)$u=process.stdout.fd;else{try{$u=ii.openSync("\\\\.\\CON","w")}catch{}if(typeof $u!="number")try{$u=p().open("CONOUT$",c.O_RDWR,parseInt("0666",8))}catch{}}}else{if(process.stdin.isTTY){process.stdin.pause();try{eh=ii.openSync("/dev/tty","r"),JC=process.stdin._handle}catch{}}else try{eh=ii.openSync("/dev/tty","r"),JC=new $Be(eh,!1)}catch{}if(process.stdout.isTTY)$u=process.stdout.fd;else try{$u=ii.openSync("/dev/tty","w")}catch{}}}(),function(){var n,c,f=!t.hideEchoBack&&!t.keyIn,p,h,E,C,S;fF="";function P(I){return I===eve?!0:JC.setRawMode(I)!==0?!1:(eve=I,!0)}if(rve||!JC||typeof $u!="number"&&(t.display||!f)){e=a();return}if(t.display&&(ii.writeSync($u,t.display),t.display=""),!t.displayOnly){if(!P(!f)){e=a();return}for(h=t.keyIn?1:t.bufferSize,p=Buffer.allocUnsafe&&Buffer.alloc?Buffer.alloc(h):new Buffer(h),t.keyIn&&t.limit&&(c=new RegExp("[^"+t.limit+"]","g"+(t.caseSensitive?"":"i")));;){E=0;try{E=ii.readSync(eh,p,0,h)}catch(I){if(I.code!=="EOF"){P(!1),e+=a();return}}if(E>0?(C=p.toString(t.encoding,0,E),fF+=C):(C=` +`,fF+="\0"),C&&typeof(S=(C.match(/^(.*?)[\r\n]/)||[])[1])=="string"&&(C=S,n=!0),C&&(C=C.replace(/[\x00-\x08\x0b\x0c\x0e-\x1f\x7f]/g,"")),C&&c&&(C=C.replace(c,"")),C&&(f||(t.hideEchoBack?t.mask&&ii.writeSync($u,new Array(C.length+1).join(t.mask)):ii.writeSync($u,C)),e+=C),!t.keyIn&&n||t.keyIn&&e.length>=h)break}!f&&!s&&ii.writeSync($u,` +`),P(!1)}}(),t.print&&!s&&t.print(r+(t.displayOnly?"":(t.hideEchoBack?new Array(e.length+1).join(t.mask):e)+` +`),t.encoding),t.displayOnly?"":h9=t.keepWhitespace||t.keyIn?e:e.trim()}function ADt(t,e){var r=[];function s(a){a!=null&&(Array.isArray(a)?a.forEach(s):(!e||e(a))&&r.push(a))}return s(t),r}function g9(t){return t.replace(/[\x00-\x7f]/g,function(e){return"\\x"+("00"+e.charCodeAt().toString(16)).substr(-2)})}function Ks(){var t=Array.prototype.slice.call(arguments),e,r;return t.length&&typeof t[0]=="boolean"&&(r=t.shift(),r&&(e=Object.keys(c9),t.unshift(c9))),t.reduce(function(s,a){return a==null||(a.hasOwnProperty("noEchoBack")&&!a.hasOwnProperty("hideEchoBack")&&(a.hideEchoBack=a.noEchoBack,delete a.noEchoBack),a.hasOwnProperty("noTrim")&&!a.hasOwnProperty("keepWhitespace")&&(a.keepWhitespace=a.noTrim,delete a.noTrim),r||(e=Object.keys(a)),e.forEach(function(n){var c;if(a.hasOwnProperty(n))switch(c=a[n],n){case"mask":case"limitMessage":case"defaultInput":case"encoding":c=c!=null?c+"":"",c&&n!=="limitMessage"&&(c=c.replace(/[\r\n]/g,"")),s[n]=c;break;case"bufferSize":!isNaN(c=parseInt(c,10))&&typeof c=="number"&&(s[n]=c);break;case"displayOnly":case"keyIn":case"hideEchoBack":case"caseSensitive":case"keepWhitespace":case"history":case"cd":s[n]=!!c;break;case"limit":case"trueValue":case"falseValue":s[n]=ADt(c,function(f){var p=typeof f;return p==="string"||p==="number"||p==="function"||f instanceof RegExp}).map(function(f){return typeof f=="string"?f.replace(/[\r\n]/g,""):f});break;case"print":case"phContent":case"preCheck":s[n]=typeof c=="function"?c:void 0;break;case"prompt":case"display":s[n]=c??"";break}})),s},{})}function A9(t,e,r){return e.some(function(s){var a=typeof s;return a==="string"?r?t===s:t.toLowerCase()===s.toLowerCase():a==="number"?parseFloat(t)===s:a==="function"?s(t):s instanceof RegExp?s.test(t):!1})}function d9(t,e){var r=K0.normalize(Pm?(process.env.HOMEDRIVE||"")+(process.env.HOMEPATH||""):process.env.HOME||"").replace(/[\/\\]+$/,"");return t=K0.normalize(t),e?t.replace(/^~(?=\/|\\|$)/,r):t.replace(new RegExp("^"+g9(r)+"(?=\\/|\\\\|$)",Pm?"i":""),"~")}function zC(t,e){var r="(?:\\(([\\s\\S]*?)\\))?(\\w+|.-.)(?:\\(([\\s\\S]*?)\\))?",s=new RegExp("(\\$)?(\\$<"+r+">)","g"),a=new RegExp("(\\$)?(\\$\\{"+r+"\\})","g");function n(c,f,p,h,E,C){var S;return f||typeof(S=e(E))!="string"?p:S?(h||"")+S+(C||""):""}return t.replace(s,n).replace(a,n)}function ive(t,e,r){var s,a=[],n=-1,c=0,f="",p;function h(E,C){return C.length>3?(E.push(C[0]+"..."+C[C.length-1]),p=!0):C.length&&(E=E.concat(C)),E}return s=t.reduce(function(E,C){return E.concat((C+"").split(""))},[]).reduce(function(E,C){var S,P;return e||(C=C.toLowerCase()),S=/^\d$/.test(C)?1:/^[A-Z]$/.test(C)?2:/^[a-z]$/.test(C)?3:0,r&&S===0?f+=C:(P=C.charCodeAt(0),S&&S===n&&P===c+1?a.push(C):(E=h(E,a),a=[C],n=S),c=P),E},[]),s=h(s,a),f&&(s.push(f),p=!0),{values:s,suppressed:p}}function sve(t,e){return t.join(t.length>2?", ":e?" / ":"/")}function ove(t,e){var r,s,a={},n;if(e.phContent&&(r=e.phContent(t,e)),typeof r!="string")switch(t){case"hideEchoBack":case"mask":case"defaultInput":case"caseSensitive":case"keepWhitespace":case"encoding":case"bufferSize":case"history":case"cd":r=e.hasOwnProperty(t)?typeof e[t]=="boolean"?e[t]?"on":"off":e[t]+"":"";break;case"limit":case"trueValue":case"falseValue":s=e[e.hasOwnProperty(t+"Src")?t+"Src":t],e.keyIn?(a=ive(s,e.caseSensitive),s=a.values):s=s.filter(function(c){var f=typeof c;return f==="string"||f==="number"}),r=sve(s,a.suppressed);break;case"limitCount":case"limitCountNotZero":r=e[e.hasOwnProperty("limitSrc")?"limitSrc":"limit"].length,r=r||t!=="limitCountNotZero"?r+"":"";break;case"lastInput":r=h9;break;case"cwd":case"CWD":case"cwdHome":r=process.cwd(),t==="CWD"?r=K0.basename(r):t==="cwdHome"&&(r=d9(r));break;case"date":case"time":case"localeDate":case"localeTime":r=new Date()["to"+t.replace(/^./,function(c){return c.toUpperCase()})+"String"]();break;default:typeof(n=(t.match(/^history_m(\d+)$/)||[])[1])=="string"&&(r=bm[bm.length-n]||"")}return r}function ave(t){var e=/^(.)-(.)$/.exec(t),r="",s,a,n,c;if(!e)return null;for(s=e[1].charCodeAt(0),a=e[2].charCodeAt(0),c=s +And the length must be: $`,trueValue:null,falseValue:null,caseSensitive:!0},e,{history:!1,cd:!1,phContent:function(P){return P==="charlist"?r.text:P==="length"?s+"..."+a:null}}),c,f,p,h,E,C,S;for(e=e||{},c=zC(e.charlist?e.charlist+"":"$",ave),(isNaN(s=parseInt(e.min,10))||typeof s!="number")&&(s=12),(isNaN(a=parseInt(e.max,10))||typeof a!="number")&&(a=24),h=new RegExp("^["+g9(c)+"]{"+s+","+a+"}$"),r=ive([c],n.caseSensitive,!0),r.text=sve(r.values,r.suppressed),f=e.confirmMessage!=null?e.confirmMessage:"Reinput a same one to confirm it: ",p=e.unmatchMessage!=null?e.unmatchMessage:"It differs from first one. Hit only the Enter key if you want to retry from first one.",t==null&&(t="Input new password: "),E=n.limitMessage;!S;)n.limit=h,n.limitMessage=E,C=$r.question(t,n),n.limit=[C,""],n.limitMessage=p,S=$r.question(f,n);return C};function uve(t,e,r){var s;function a(n){return s=r(n),!isNaN(s)&&typeof s=="number"}return $r.question(t,Ks({limitMessage:"Input valid number, please."},e,{limit:a,cd:!1})),s}$r.questionInt=function(t,e){return uve(t,e,function(r){return parseInt(r,10)})};$r.questionFloat=function(t,e){return uve(t,e,parseFloat)};$r.questionPath=function(t,e){var r,s="",a=Ks({hideEchoBack:!1,limitMessage:`$Input valid path, please.$<( Min:)min>$<( Max:)max>`,history:!0,cd:!0},e,{keepWhitespace:!1,limit:function(n){var c,f,p;n=d9(n,!0),s="";function h(E){E.split(/\/|\\/).reduce(function(C,S){var P=K0.resolve(C+=S+K0.sep);if(!ii.existsSync(P))ii.mkdirSync(P);else if(!ii.statSync(P).isDirectory())throw new Error("Non directory already exists: "+P);return C},"")}try{if(c=ii.existsSync(n),r=c?ii.realpathSync(n):K0.resolve(n),!e.hasOwnProperty("exists")&&!c||typeof e.exists=="boolean"&&e.exists!==c)return s=(c?"Already exists":"No such file or directory")+": "+r,!1;if(!c&&e.create&&(e.isDirectory?h(r):(h(K0.dirname(r)),ii.closeSync(ii.openSync(r,"w"))),r=ii.realpathSync(r)),c&&(e.min||e.max||e.isFile||e.isDirectory)){if(f=ii.statSync(r),e.isFile&&!f.isFile())return s="Not file: "+r,!1;if(e.isDirectory&&!f.isDirectory())return s="Not directory: "+r,!1;if(e.min&&f.size<+e.min||e.max&&f.size>+e.max)return s="Size "+f.size+" is out of range: "+r,!1}if(typeof e.validate=="function"&&(p=e.validate(r))!==!0)return typeof p=="string"&&(s=p),!1}catch(E){return s=E+"",!1}return!0},phContent:function(n){return n==="error"?s:n!=="min"&&n!=="max"?null:e.hasOwnProperty(n)?e[n]+"":""}});return e=e||{},t==null&&(t='Input path (you can "cd" and "pwd"): '),$r.question(t,a),r};function fve(t,e){var r={},s={};return typeof t=="object"?(Object.keys(t).forEach(function(a){typeof t[a]=="function"&&(s[e.caseSensitive?a:a.toLowerCase()]=t[a])}),r.preCheck=function(a){var n;return r.args=p9(a),n=r.args[0]||"",e.caseSensitive||(n=n.toLowerCase()),r.hRes=n!=="_"&&s.hasOwnProperty(n)?s[n].apply(a,r.args.slice(1)):s.hasOwnProperty("_")?s._.apply(a,r.args):null,{res:a,forceNext:!1}},s.hasOwnProperty("_")||(r.limit=function(){var a=r.args[0]||"";return e.caseSensitive||(a=a.toLowerCase()),s.hasOwnProperty(a)})):r.preCheck=function(a){return r.args=p9(a),r.hRes=typeof t=="function"?t.apply(a,r.args):!0,{res:a,forceNext:!1}},r}$r.promptCL=function(t,e){var r=Ks({hideEchoBack:!1,limitMessage:"Requested command is not available.",caseSensitive:!1,history:!0},e),s=fve(t,r);return r.limit=s.limit,r.preCheck=s.preCheck,$r.prompt(r),s.args};$r.promptLoop=function(t,e){for(var r=Ks({hideEchoBack:!1,trueValue:null,falseValue:null,caseSensitive:!1,history:!0},e);!t($r.prompt(r)););};$r.promptCLLoop=function(t,e){var r=Ks({hideEchoBack:!1,limitMessage:"Requested command is not available.",caseSensitive:!1,history:!0},e),s=fve(t,r);for(r.limit=s.limit,r.preCheck=s.preCheck;$r.prompt(r),!s.hRes;);};$r.promptSimShell=function(t){return $r.prompt(Ks({hideEchoBack:!1,history:!0},t,{prompt:function(){return Pm?"$>":(process.env.USER||"")+(process.env.HOSTNAME?"@"+process.env.HOSTNAME.replace(/\..*$/,""):"")+":$$ "}()}))};function Ave(t,e,r){var s;return t==null&&(t="Are you sure? "),(!e||e.guide!==!1)&&(t+="")&&(t=t.replace(/\s*:?\s*$/,"")+" [y/n]: "),s=$r.keyIn(t,Ks(e,{hideEchoBack:!1,limit:r,trueValue:"y",falseValue:"n",caseSensitive:!1})),typeof s=="boolean"?s:""}$r.keyInYN=function(t,e){return Ave(t,e)};$r.keyInYNStrict=function(t,e){return Ave(t,e,"yn")};$r.keyInPause=function(t,e){t==null&&(t="Continue..."),(!e||e.guide!==!1)&&(t+="")&&(t=t.replace(/\s+$/,"")+" (Hit any key)"),$r.keyIn(t,Ks({limit:null},e,{hideEchoBack:!0,mask:""}))};$r.keyInSelect=function(t,e,r){var s=Ks({hideEchoBack:!1},r,{trueValue:null,falseValue:null,caseSensitive:!1,phContent:function(p){return p==="itemsCount"?t.length+"":p==="firstItem"?(t[0]+"").trim():p==="lastItem"?(t[t.length-1]+"").trim():null}}),a="",n={},c=49,f=` +`;if(!Array.isArray(t)||!t.length||t.length>35)throw"`items` must be Array (max length: 35).";return t.forEach(function(p,h){var E=String.fromCharCode(c);a+=E,n[E]=h,f+="["+E+"] "+(p+"").trim()+` +`,c=c===57?97:c+1}),(!r||r.cancel!==!1)&&(a+="0",n[0]=-1,f+="[0] "+(r&&r.cancel!=null&&typeof r.cancel!="boolean"?(r.cancel+"").trim():"CANCEL")+` +`),s.limit=a,f+=` +`,e==null&&(e="Choose one from list: "),(e+="")&&((!r||r.guide!==!1)&&(e=e.replace(/\s*:?\s*$/,"")+" [$]: "),f+=e),n[$r.keyIn(f,s).toLowerCase()]};$r.getRawInput=function(){return fF};function wS(t,e){var r;return e.length&&(r={},r[t]=e[0]),$r.setDefaultOptions(r)[t]}$r.setPrint=function(){return wS("print",arguments)};$r.setPrompt=function(){return wS("prompt",arguments)};$r.setEncoding=function(){return wS("encoding",arguments)};$r.setMask=function(){return wS("mask",arguments)};$r.setBufferSize=function(){return wS("bufferSize",arguments)}});var m9=L((vfr,tc)=>{(function(){var t={major:0,minor:2,patch:66,status:"beta"};tau_file_system={files:{},open:function(w,b,y){var F=tau_file_system.files[w];if(!F){if(y==="read")return null;F={path:w,text:"",type:b,get:function(z,Z){return Z===this.text.length||Z>this.text.length?"end_of_file":this.text.substring(Z,Z+z)},put:function(z,Z){return Z==="end_of_file"?(this.text+=z,!0):Z==="past_end_of_file"?null:(this.text=this.text.substring(0,Z)+z+this.text.substring(Z+z.length),!0)},get_byte:function(z){if(z==="end_of_stream")return-1;var Z=Math.floor(z/2);if(this.text.length<=Z)return-1;var $=n(this.text[Math.floor(z/2)],0);return z%2===0?$&255:$/256>>>0},put_byte:function(z,Z){var $=Z==="end_of_stream"?this.text.length:Math.floor(Z/2);if(this.text.length<$)return null;var oe=this.text.length===$?-1:n(this.text[Math.floor(Z/2)],0);return Z%2===0?(oe=oe/256>>>0,oe=(oe&255)<<8|z&255):(oe=oe&255,oe=(z&255)<<8|oe&255),this.text.length===$?this.text+=c(oe):this.text=this.text.substring(0,$)+c(oe)+this.text.substring($+1),!0},flush:function(){return!0},close:function(){var z=tau_file_system.files[this.path];return z?!0:null}},tau_file_system.files[w]=F}return y==="write"&&(F.text=""),F}},tau_user_input={buffer:"",get:function(w,b){for(var y;tau_user_input.buffer.length\?\@\^\~\\]+|'(?:[^']*?(?:\\(?:x?\d+)?\\)*(?:'')*(?:\\')*)*')/,number:/^(?:0o[0-7]+|0x[0-9a-fA-F]+|0b[01]+|0'(?:''|\\[abfnrtv\\'"`]|\\x?\d+\\|[^\\])|\d+(?:\.\d+(?:[eE][+-]?\d+)?)?)/,string:/^(?:"([^"]|""|\\")*"|`([^`]|``|\\`)*`)/,l_brace:/^(?:\[)/,r_brace:/^(?:\])/,l_bracket:/^(?:\{)/,r_bracket:/^(?:\})/,bar:/^(?:\|)/,l_paren:/^(?:\()/,r_paren:/^(?:\))/};function N(w,b){return w.get_flag("char_conversion").id==="on"?b.replace(/./g,function(y){return w.get_char_conversion(y)}):b}function U(w){this.thread=w,this.text="",this.tokens=[]}U.prototype.set_last_tokens=function(w){return this.tokens=w},U.prototype.new_text=function(w){this.text=w,this.tokens=[]},U.prototype.get_tokens=function(w){var b,y=0,F=0,z=0,Z=[],$=!1;if(w){var oe=this.tokens[w-1];y=oe.len,b=N(this.thread,this.text.substr(oe.len)),F=oe.line,z=oe.start}else b=this.text;if(/^\s*$/.test(b))return null;for(;b!=="";){var xe=[],Te=!1;if(/^\n/.exec(b)!==null){F++,z=0,y++,b=b.replace(/\n/,""),$=!0;continue}for(var lt in R)if(R.hasOwnProperty(lt)){var Et=R[lt].exec(b);Et&&xe.push({value:Et[0],name:lt,matches:Et})}if(!xe.length)return this.set_last_tokens([{value:b,matches:[],name:"lexical",line:F,start:z}]);var oe=r(xe,function(Pr,Ir){return Pr.value.length>=Ir.value.length?Pr:Ir});switch(oe.start=z,oe.line=F,b=b.replace(oe.value,""),z+=oe.value.length,y+=oe.value.length,oe.name){case"atom":oe.raw=oe.value,oe.value.charAt(0)==="'"&&(oe.value=S(oe.value.substr(1,oe.value.length-2),"'"),oe.value===null&&(oe.name="lexical",oe.value="unknown escape sequence"));break;case"number":oe.float=oe.value.substring(0,2)!=="0x"&&oe.value.match(/[.eE]/)!==null&&oe.value!=="0'.",oe.value=I(oe.value),oe.blank=Te;break;case"string":var qt=oe.value.charAt(0);oe.value=S(oe.value.substr(1,oe.value.length-2),qt),oe.value===null&&(oe.name="lexical",oe.value="unknown escape sequence");break;case"whitespace":var ir=Z[Z.length-1];ir&&(ir.space=!0),Te=!0;continue;case"r_bracket":Z.length>0&&Z[Z.length-1].name==="l_bracket"&&(oe=Z.pop(),oe.name="atom",oe.value="{}",oe.raw="{}",oe.space=!1);break;case"r_brace":Z.length>0&&Z[Z.length-1].name==="l_brace"&&(oe=Z.pop(),oe.name="atom",oe.value="[]",oe.raw="[]",oe.space=!1);break}oe.len=y,Z.push(oe),Te=!1}var Pt=this.set_last_tokens(Z);return Pt.length===0?null:Pt};function W(w,b,y,F,z){if(!b[y])return{type:f,value:x.error.syntax(b[y-1],"expression expected",!0)};var Z;if(F==="0"){var $=b[y];switch($.name){case"number":return{type:p,len:y+1,value:new x.type.Num($.value,$.float)};case"variable":return{type:p,len:y+1,value:new x.type.Var($.value)};case"string":var oe;switch(w.get_flag("double_quotes").id){case"atom":oe=new j($.value,[]);break;case"codes":oe=new j("[]",[]);for(var xe=$.value.length-1;xe>=0;xe--)oe=new j(".",[new x.type.Num(n($.value,xe),!1),oe]);break;case"chars":oe=new j("[]",[]);for(var xe=$.value.length-1;xe>=0;xe--)oe=new j(".",[new x.type.Term($.value.charAt(xe),[]),oe]);break}return{type:p,len:y+1,value:oe};case"l_paren":var Pt=W(w,b,y+1,w.__get_max_priority(),!0);return Pt.type!==p?Pt:b[Pt.len]&&b[Pt.len].name==="r_paren"?(Pt.len++,Pt):{type:f,derived:!0,value:x.error.syntax(b[Pt.len]?b[Pt.len]:b[Pt.len-1],") or operator expected",!b[Pt.len])};case"l_bracket":var Pt=W(w,b,y+1,w.__get_max_priority(),!0);return Pt.type!==p?Pt:b[Pt.len]&&b[Pt.len].name==="r_bracket"?(Pt.len++,Pt.value=new j("{}",[Pt.value]),Pt):{type:f,derived:!0,value:x.error.syntax(b[Pt.len]?b[Pt.len]:b[Pt.len-1],"} or operator expected",!b[Pt.len])}}var Te=te(w,b,y,z);return Te.type===p||Te.derived||(Te=ie(w,b,y),Te.type===p||Te.derived)?Te:{type:f,derived:!1,value:x.error.syntax(b[y],"unexpected token")}}var lt=w.__get_max_priority(),Et=w.__get_next_priority(F),qt=y;if(b[y].name==="atom"&&b[y+1]&&(b[y].space||b[y+1].name!=="l_paren")){var $=b[y++],ir=w.__lookup_operator_classes(F,$.value);if(ir&&ir.indexOf("fy")>-1){var Pt=W(w,b,y,F,z);if(Pt.type!==f)return $.value==="-"&&!$.space&&x.type.is_number(Pt.value)?{value:new x.type.Num(-Pt.value.value,Pt.value.is_float),len:Pt.len,type:p}:{value:new x.type.Term($.value,[Pt.value]),len:Pt.len,type:p};Z=Pt}else if(ir&&ir.indexOf("fx")>-1){var Pt=W(w,b,y,Et,z);if(Pt.type!==f)return{value:new x.type.Term($.value,[Pt.value]),len:Pt.len,type:p};Z=Pt}}y=qt;var Pt=W(w,b,y,Et,z);if(Pt.type===p){y=Pt.len;var $=b[y];if(b[y]&&(b[y].name==="atom"&&w.__lookup_operator_classes(F,$.value)||b[y].name==="bar"&&w.__lookup_operator_classes(F,"|"))){var gn=Et,Pr=F,ir=w.__lookup_operator_classes(F,$.value);if(ir.indexOf("xf")>-1)return{value:new x.type.Term($.value,[Pt.value]),len:++Pt.len,type:p};if(ir.indexOf("xfx")>-1){var Ir=W(w,b,y+1,gn,z);return Ir.type===p?{value:new x.type.Term($.value,[Pt.value,Ir.value]),len:Ir.len,type:p}:(Ir.derived=!0,Ir)}else if(ir.indexOf("xfy")>-1){var Ir=W(w,b,y+1,Pr,z);return Ir.type===p?{value:new x.type.Term($.value,[Pt.value,Ir.value]),len:Ir.len,type:p}:(Ir.derived=!0,Ir)}else if(Pt.type!==f)for(;;){y=Pt.len;var $=b[y];if($&&$.name==="atom"&&w.__lookup_operator_classes(F,$.value)){var ir=w.__lookup_operator_classes(F,$.value);if(ir.indexOf("yf")>-1)Pt={value:new x.type.Term($.value,[Pt.value]),len:++y,type:p};else if(ir.indexOf("yfx")>-1){var Ir=W(w,b,++y,gn,z);if(Ir.type===f)return Ir.derived=!0,Ir;y=Ir.len,Pt={value:new x.type.Term($.value,[Pt.value,Ir.value]),len:y,type:p}}else break}else break}}else Z={type:f,value:x.error.syntax(b[Pt.len-1],"operator expected")};return Pt}return Pt}function te(w,b,y,F){if(!b[y]||b[y].name==="atom"&&b[y].raw==="."&&!F&&(b[y].space||!b[y+1]||b[y+1].name!=="l_paren"))return{type:f,derived:!1,value:x.error.syntax(b[y-1],"unfounded token")};var z=b[y],Z=[];if(b[y].name==="atom"&&b[y].raw!==","){if(y++,b[y-1].space)return{type:p,len:y,value:new x.type.Term(z.value,Z)};if(b[y]&&b[y].name==="l_paren"){if(b[y+1]&&b[y+1].name==="r_paren")return{type:f,derived:!0,value:x.error.syntax(b[y+1],"argument expected")};var $=W(w,b,++y,"999",!0);if($.type===f)return $.derived?$:{type:f,derived:!0,value:x.error.syntax(b[y]?b[y]:b[y-1],"argument expected",!b[y])};for(Z.push($.value),y=$.len;b[y]&&b[y].name==="atom"&&b[y].value===",";){if($=W(w,b,y+1,"999",!0),$.type===f)return $.derived?$:{type:f,derived:!0,value:x.error.syntax(b[y+1]?b[y+1]:b[y],"argument expected",!b[y+1])};Z.push($.value),y=$.len}if(b[y]&&b[y].name==="r_paren")y++;else return{type:f,derived:!0,value:x.error.syntax(b[y]?b[y]:b[y-1],", or ) expected",!b[y])}}return{type:p,len:y,value:new x.type.Term(z.value,Z)}}return{type:f,derived:!1,value:x.error.syntax(b[y],"term expected")}}function ie(w,b,y){if(!b[y])return{type:f,derived:!1,value:x.error.syntax(b[y-1],"[ expected")};if(b[y]&&b[y].name==="l_brace"){var F=W(w,b,++y,"999",!0),z=[F.value],Z=void 0;if(F.type===f)return b[y]&&b[y].name==="r_brace"?{type:p,len:y+1,value:new x.type.Term("[]",[])}:{type:f,derived:!0,value:x.error.syntax(b[y],"] expected")};for(y=F.len;b[y]&&b[y].name==="atom"&&b[y].value===",";){if(F=W(w,b,y+1,"999",!0),F.type===f)return F.derived?F:{type:f,derived:!0,value:x.error.syntax(b[y+1]?b[y+1]:b[y],"argument expected",!b[y+1])};z.push(F.value),y=F.len}var $=!1;if(b[y]&&b[y].name==="bar"){if($=!0,F=W(w,b,y+1,"999",!0),F.type===f)return F.derived?F:{type:f,derived:!0,value:x.error.syntax(b[y+1]?b[y+1]:b[y],"argument expected",!b[y+1])};Z=F.value,y=F.len}return b[y]&&b[y].name==="r_brace"?{type:p,len:y+1,value:g(z,Z)}:{type:f,derived:!0,value:x.error.syntax(b[y]?b[y]:b[y-1],$?"] expected":", or | or ] expected",!b[y])}}return{type:f,derived:!1,value:x.error.syntax(b[y],"list expected")}}function Ae(w,b,y){var F=b[y].line,z=W(w,b,y,w.__get_max_priority(),!1),Z=null,$;if(z.type!==f)if(y=z.len,b[y]&&b[y].name==="atom"&&b[y].raw===".")if(y++,x.type.is_term(z.value)){if(z.value.indicator===":-/2"?(Z=new x.type.Rule(z.value.args[0],Ce(z.value.args[1])),$={value:Z,len:y,type:p}):z.value.indicator==="-->/2"?(Z=pe(new x.type.Rule(z.value.args[0],z.value.args[1]),w),Z.body=Ce(Z.body),$={value:Z,len:y,type:x.type.is_rule(Z)?p:f}):(Z=new x.type.Rule(z.value,null),$={value:Z,len:y,type:p}),Z){var oe=Z.singleton_variables();oe.length>0&&w.throw_warning(x.warning.singleton(oe,Z.head.indicator,F))}return $}else return{type:f,value:x.error.syntax(b[y],"callable expected")};else return{type:f,value:x.error.syntax(b[y]?b[y]:b[y-1],". or operator expected")};return z}function ce(w,b,y){y=y||{},y.from=y.from?y.from:"$tau-js",y.reconsult=y.reconsult!==void 0?y.reconsult:!0;var F=new U(w),z={},Z;F.new_text(b);var $=0,oe=F.get_tokens($);do{if(oe===null||!oe[$])break;var xe=Ae(w,oe,$);if(xe.type===f)return new j("throw",[xe.value]);if(xe.value.body===null&&xe.value.head.indicator==="?-/1"){var Te=new it(w.session);Te.add_goal(xe.value.head.args[0]),Te.answer(function(Et){x.type.is_error(Et)?w.throw_warning(Et.args[0]):(Et===!1||Et===null)&&w.throw_warning(x.warning.failed_goal(xe.value.head.args[0],xe.len))}),$=xe.len;var lt=!0}else if(xe.value.body===null&&xe.value.head.indicator===":-/1"){var lt=w.run_directive(xe.value.head.args[0]);$=xe.len,xe.value.head.args[0].indicator==="char_conversion/2"&&(oe=F.get_tokens($),$=0)}else{Z=xe.value.head.indicator,y.reconsult!==!1&&z[Z]!==!0&&!w.is_multifile_predicate(Z)&&(w.session.rules[Z]=a(w.session.rules[Z]||[],function(qt){return qt.dynamic}),z[Z]=!0);var lt=w.add_rule(xe.value,y);$=xe.len}if(!lt)return lt}while(!0);return!0}function me(w,b){var y=new U(w);y.new_text(b);var F=0;do{var z=y.get_tokens(F);if(z===null)break;var Z=W(w,z,0,w.__get_max_priority(),!1);if(Z.type!==f){var $=Z.len,oe=$;if(z[$]&&z[$].name==="atom"&&z[$].raw===".")w.add_goal(Ce(Z.value));else{var xe=z[$];return new j("throw",[x.error.syntax(xe||z[$-1],". or operator expected",!xe)])}F=Z.len+1}else return new j("throw",[Z.value])}while(!0);return!0}function pe(w,b){w=w.rename(b);var y=b.next_free_variable(),F=Be(w.body,y,b);return F.error?F.value:(w.body=F.value,w.head.args=w.head.args.concat([y,F.variable]),w.head=new j(w.head.id,w.head.args),w)}function Be(w,b,y){var F;if(x.type.is_term(w)&&w.indicator==="!/0")return{value:w,variable:b,error:!1};if(x.type.is_term(w)&&w.indicator===",/2"){var z=Be(w.args[0],b,y);if(z.error)return z;var Z=Be(w.args[1],z.variable,y);return Z.error?Z:{value:new j(",",[z.value,Z.value]),variable:Z.variable,error:!1}}else{if(x.type.is_term(w)&&w.indicator==="{}/1")return{value:w.args[0],variable:b,error:!1};if(x.type.is_empty_list(w))return{value:new j("true",[]),variable:b,error:!1};if(x.type.is_list(w)){F=y.next_free_variable();for(var $=w,oe;$.indicator==="./2";)oe=$,$=$.args[1];return x.type.is_variable($)?{value:x.error.instantiation("DCG"),variable:b,error:!0}:x.type.is_empty_list($)?(oe.args[1]=F,{value:new j("=",[b,w]),variable:F,error:!1}):{value:x.error.type("list",w,"DCG"),variable:b,error:!0}}else return x.type.is_callable(w)?(F=y.next_free_variable(),w.args=w.args.concat([b,F]),w=new j(w.id,w.args),{value:w,variable:F,error:!1}):{value:x.error.type("callable",w,"DCG"),variable:b,error:!0}}}function Ce(w){return x.type.is_variable(w)?new j("call",[w]):x.type.is_term(w)&&[",/2",";/2","->/2"].indexOf(w.indicator)!==-1?new j(w.id,[Ce(w.args[0]),Ce(w.args[1])]):w}function g(w,b){for(var y=b||new x.type.Term("[]",[]),F=w.length-1;F>=0;F--)y=new x.type.Term(".",[w[F],y]);return y}function we(w,b){for(var y=w.length-1;y>=0;y--)w[y]===b&&w.splice(y,1)}function Ee(w){for(var b={},y=[],F=0;F=0;b--)if(w.charAt(b)==="/")return new j("/",[new j(w.substring(0,b)),new Re(parseInt(w.substring(b+1)),!1)])}function De(w){this.id=w}function Re(w,b){this.is_float=b!==void 0?b:parseInt(w)!==w,this.value=this.is_float?w:parseInt(w)}var gt=0;function j(w,b,y){this.ref=y||++gt,this.id=w,this.args=b||[],this.indicator=w+"/"+this.args.length}var rt=0;function Fe(w,b,y,F,z,Z){this.id=rt++,this.stream=w,this.mode=b,this.alias=y,this.type=F!==void 0?F:"text",this.reposition=z!==void 0?z:!0,this.eof_action=Z!==void 0?Z:"eof_code",this.position=this.mode==="append"?"end_of_stream":0,this.output=this.mode==="write"||this.mode==="append",this.input=this.mode==="read"}function Ne(w){w=w||{},this.links=w}function Pe(w,b,y){b=b||new Ne,y=y||null,this.goal=w,this.substitution=b,this.parent=y}function Ye(w,b,y){this.head=w,this.body=b,this.dynamic=y||!1}function ke(w){w=w===void 0||w<=0?1e3:w,this.rules={},this.src_predicates={},this.rename=0,this.modules=[],this.thread=new it(this),this.total_threads=1,this.renamed_variables={},this.public_predicates={},this.multifile_predicates={},this.limit=w,this.streams={user_input:new Fe(typeof tc<"u"&&tc.exports?nodejs_user_input:tau_user_input,"read","user_input","text",!1,"reset"),user_output:new Fe(typeof tc<"u"&&tc.exports?nodejs_user_output:tau_user_output,"write","user_output","text",!1,"eof_code")},this.file_system=typeof tc<"u"&&tc.exports?nodejs_file_system:tau_file_system,this.standard_input=this.streams.user_input,this.standard_output=this.streams.user_output,this.current_input=this.streams.user_input,this.current_output=this.streams.user_output,this.format_success=function(b){return b.substitution},this.format_error=function(b){return b.goal},this.flag={bounded:x.flag.bounded.value,max_integer:x.flag.max_integer.value,min_integer:x.flag.min_integer.value,integer_rounding_function:x.flag.integer_rounding_function.value,char_conversion:x.flag.char_conversion.value,debug:x.flag.debug.value,max_arity:x.flag.max_arity.value,unknown:x.flag.unknown.value,double_quotes:x.flag.double_quotes.value,occurs_check:x.flag.occurs_check.value,dialect:x.flag.dialect.value,version_data:x.flag.version_data.value,nodejs:x.flag.nodejs.value},this.__loaded_modules=[],this.__char_conversion={},this.__operators={1200:{":-":["fx","xfx"],"-->":["xfx"],"?-":["fx"]},1100:{";":["xfy"]},1050:{"->":["xfy"]},1e3:{",":["xfy"]},900:{"\\+":["fy"]},700:{"=":["xfx"],"\\=":["xfx"],"==":["xfx"],"\\==":["xfx"],"@<":["xfx"],"@=<":["xfx"],"@>":["xfx"],"@>=":["xfx"],"=..":["xfx"],is:["xfx"],"=:=":["xfx"],"=\\=":["xfx"],"<":["xfx"],"=<":["xfx"],">":["xfx"],">=":["xfx"]},600:{":":["xfy"]},500:{"+":["yfx"],"-":["yfx"],"/\\":["yfx"],"\\/":["yfx"]},400:{"*":["yfx"],"/":["yfx"],"//":["yfx"],rem:["yfx"],mod:["yfx"],"<<":["yfx"],">>":["yfx"]},200:{"**":["xfx"],"^":["xfy"],"-":["fy"],"+":["fy"],"\\":["fy"]}}}function it(w){this.epoch=Date.now(),this.session=w,this.session.total_threads++,this.total_steps=0,this.cpu_time=0,this.cpu_time_last=0,this.points=[],this.debugger=!1,this.debugger_states=[],this.level="top_level/0",this.__calls=[],this.current_limit=this.session.limit,this.warnings=[]}function _e(w,b,y){this.id=w,this.rules=b,this.exports=y,x.module[w]=this}_e.prototype.exports_predicate=function(w){return this.exports.indexOf(w)!==-1},De.prototype.unify=function(w,b){if(b&&e(w.variables(),this.id)!==-1&&!x.type.is_variable(w))return null;var y={};return y[this.id]=w,new Ne(y)},Re.prototype.unify=function(w,b){return x.type.is_number(w)&&this.value===w.value&&this.is_float===w.is_float?new Ne:null},j.prototype.unify=function(w,b){if(x.type.is_term(w)&&this.indicator===w.indicator){for(var y=new Ne,F=0;F=0){var F=this.args[0].value,z=Math.floor(F/26),Z=F%26;return"ABCDEFGHIJKLMNOPQRSTUVWXYZ"[Z]+(z!==0?z:"")}switch(this.indicator){case"[]/0":case"{}/0":case"!/0":return this.id;case"{}/1":return"{"+this.args[0].toString(w)+"}";case"./2":for(var $="["+this.args[0].toString(w),oe=this.args[1];oe.indicator==="./2";)$+=", "+oe.args[0].toString(w),oe=oe.args[1];return oe.indicator!=="[]/0"&&($+="|"+oe.toString(w)),$+="]",$;case",/2":return"("+this.args[0].toString(w)+", "+this.args[1].toString(w)+")";default:var xe=this.id,Te=w.session?w.session.lookup_operator(this.id,this.args.length):null;if(w.session===void 0||w.ignore_ops||Te===null)return w.quoted&&!/^(!|,|;|[a-z][0-9a-zA-Z_]*)$/.test(xe)&&xe!=="{}"&&xe!=="[]"&&(xe="'"+P(xe)+"'"),xe+(this.args.length?"("+s(this.args,function(ir){return ir.toString(w)}).join(", ")+")":"");var lt=Te.priority>b.priority||Te.priority===b.priority&&(Te.class==="xfy"&&this.indicator!==b.indicator||Te.class==="yfx"&&this.indicator!==b.indicator||this.indicator===b.indicator&&Te.class==="yfx"&&y==="right"||this.indicator===b.indicator&&Te.class==="xfy"&&y==="left");Te.indicator=this.indicator;var Et=lt?"(":"",qt=lt?")":"";return this.args.length===0?"("+this.id+")":["fy","fx"].indexOf(Te.class)!==-1?Et+xe+" "+this.args[0].toString(w,Te)+qt:["yf","xf"].indexOf(Te.class)!==-1?Et+this.args[0].toString(w,Te)+" "+xe+qt:Et+this.args[0].toString(w,Te,"left")+" "+this.id+" "+this.args[1].toString(w,Te,"right")+qt}},Fe.prototype.toString=function(w){return"("+this.id+")"},Ne.prototype.toString=function(w){var b="{";for(var y in this.links)this.links.hasOwnProperty(y)&&(b!=="{"&&(b+=", "),b+=y+"/"+this.links[y].toString(w));return b+="}",b},Pe.prototype.toString=function(w){return this.goal===null?"<"+this.substitution.toString(w)+">":"<"+this.goal.toString(w)+", "+this.substitution.toString(w)+">"},Ye.prototype.toString=function(w){return this.body?this.head.toString(w)+" :- "+this.body.toString(w)+".":this.head.toString(w)+"."},ke.prototype.toString=function(w){for(var b="",y=0;y=0;z--)F=new j(".",[b[z],F]);return F}return new j(this.id,s(this.args,function(Z){return Z.apply(w)}),this.ref)},Fe.prototype.apply=function(w){return this},Ye.prototype.apply=function(w){return new Ye(this.head.apply(w),this.body!==null?this.body.apply(w):null)},Ne.prototype.apply=function(w){var b,y={};for(b in this.links)this.links.hasOwnProperty(b)&&(y[b]=this.links[b].apply(w));return new Ne(y)},j.prototype.select=function(){for(var w=this;w.indicator===",/2";)w=w.args[0];return w},j.prototype.replace=function(w){return this.indicator===",/2"?this.args[0].indicator===",/2"?new j(",",[this.args[0].replace(w),this.args[1]]):w===null?this.args[1]:new j(",",[w,this.args[1]]):w},j.prototype.search=function(w){if(x.type.is_term(w)&&w.ref!==void 0&&this.ref===w.ref)return!0;for(var b=0;bb&&F0&&(b=this.head_point().substitution.domain());e(b,x.format_variable(this.session.rename))!==-1;)this.session.rename++;if(w.id==="_")return new De(x.format_variable(this.session.rename));this.session.renamed_variables[w.id]=x.format_variable(this.session.rename)}return new De(this.session.renamed_variables[w.id])},ke.prototype.next_free_variable=function(){return this.thread.next_free_variable()},it.prototype.next_free_variable=function(){this.session.rename++;var w=[];for(this.points.length>0&&(w=this.head_point().substitution.domain());e(w,x.format_variable(this.session.rename))!==-1;)this.session.rename++;return new De(x.format_variable(this.session.rename))},ke.prototype.is_public_predicate=function(w){return!this.public_predicates.hasOwnProperty(w)||this.public_predicates[w]===!0},it.prototype.is_public_predicate=function(w){return this.session.is_public_predicate(w)},ke.prototype.is_multifile_predicate=function(w){return this.multifile_predicates.hasOwnProperty(w)&&this.multifile_predicates[w]===!0},it.prototype.is_multifile_predicate=function(w){return this.session.is_multifile_predicate(w)},ke.prototype.prepend=function(w){return this.thread.prepend(w)},it.prototype.prepend=function(w){for(var b=w.length-1;b>=0;b--)this.points.push(w[b])},ke.prototype.success=function(w,b){return this.thread.success(w,b)},it.prototype.success=function(w,y){var y=typeof y>"u"?w:y;this.prepend([new Pe(w.goal.replace(null),w.substitution,y)])},ke.prototype.throw_error=function(w){return this.thread.throw_error(w)},it.prototype.throw_error=function(w){this.prepend([new Pe(new j("throw",[w]),new Ne,null,null)])},ke.prototype.step_rule=function(w,b){return this.thread.step_rule(w,b)},it.prototype.step_rule=function(w,b){var y=b.indicator;if(w==="user"&&(w=null),w===null&&this.session.rules.hasOwnProperty(y))return this.session.rules[y];for(var F=w===null?this.session.modules:e(this.session.modules,w)===-1?[]:[w],z=0;z1)&&this.again()},ke.prototype.answers=function(w,b,y){return this.thread.answers(w,b,y)},it.prototype.answers=function(w,b,y){var F=b||1e3,z=this;if(b<=0){y&&y();return}this.answer(function(Z){w(Z),Z!==!1?setTimeout(function(){z.answers(w,b-1,y)},1):y&&y()})},ke.prototype.again=function(w){return this.thread.again(w)},it.prototype.again=function(w){for(var b,y=Date.now();this.__calls.length>0;){for(this.warnings=[],w!==!1&&(this.current_limit=this.session.limit);this.current_limit>0&&this.points.length>0&&this.head_point().goal!==null&&!x.type.is_error(this.head_point().goal);)if(this.current_limit--,this.step()===!0)return;var F=Date.now();this.cpu_time_last=F-y,this.cpu_time+=this.cpu_time_last;var z=this.__calls.shift();this.current_limit<=0?z(null):this.points.length===0?z(!1):x.type.is_error(this.head_point().goal)?(b=this.session.format_error(this.points.pop()),this.points=[],z(b)):(this.debugger&&this.debugger_states.push(this.head_point()),b=this.session.format_success(this.points.pop()),z(b))}},ke.prototype.unfold=function(w){if(w.body===null)return!1;var b=w.head,y=w.body,F=y.select(),z=new it(this),Z=[];z.add_goal(F),z.step();for(var $=z.points.length-1;$>=0;$--){var oe=z.points[$],xe=b.apply(oe.substitution),Te=y.replace(oe.goal);Te!==null&&(Te=Te.apply(oe.substitution)),Z.push(new Ye(xe,Te))}var lt=this.rules[b.indicator],Et=e(lt,w);return Z.length>0&&Et!==-1?(lt.splice.apply(lt,[Et,1].concat(Z)),!0):!1},it.prototype.unfold=function(w){return this.session.unfold(w)},De.prototype.interpret=function(w){return x.error.instantiation(w.level)},Re.prototype.interpret=function(w){return this},j.prototype.interpret=function(w){return x.type.is_unitary_list(this)?this.args[0].interpret(w):x.operate(w,this)},De.prototype.compare=function(w){return this.idw.id?1:0},Re.prototype.compare=function(w){if(this.value===w.value&&this.is_float===w.is_float)return 0;if(this.valuew.value)return 1},j.prototype.compare=function(w){if(this.args.lengthw.args.length||this.args.length===w.args.length&&this.id>w.id)return 1;for(var b=0;bF)return 1;if(w.constructor===Re){if(w.is_float&&b.is_float)return 0;if(w.is_float)return-1;if(b.is_float)return 1}return 0},is_substitution:function(w){return w instanceof Ne},is_state:function(w){return w instanceof Pe},is_rule:function(w){return w instanceof Ye},is_variable:function(w){return w instanceof De},is_stream:function(w){return w instanceof Fe},is_anonymous_var:function(w){return w instanceof De&&w.id==="_"},is_callable:function(w){return w instanceof j},is_number:function(w){return w instanceof Re},is_integer:function(w){return w instanceof Re&&!w.is_float},is_float:function(w){return w instanceof Re&&w.is_float},is_term:function(w){return w instanceof j},is_atom:function(w){return w instanceof j&&w.args.length===0},is_ground:function(w){if(w instanceof De)return!1;if(w instanceof j){for(var b=0;b0},is_list:function(w){return w instanceof j&&(w.indicator==="[]/0"||w.indicator==="./2")},is_empty_list:function(w){return w instanceof j&&w.indicator==="[]/0"},is_non_empty_list:function(w){return w instanceof j&&w.indicator==="./2"},is_fully_list:function(w){for(;w instanceof j&&w.indicator==="./2";)w=w.args[1];return w instanceof De||w instanceof j&&w.indicator==="[]/0"},is_instantiated_list:function(w){for(;w instanceof j&&w.indicator==="./2";)w=w.args[1];return w instanceof j&&w.indicator==="[]/0"},is_unitary_list:function(w){return w instanceof j&&w.indicator==="./2"&&w.args[1]instanceof j&&w.args[1].indicator==="[]/0"},is_character:function(w){return w instanceof j&&(w.id.length===1||w.id.length>0&&w.id.length<=2&&n(w.id,0)>=65536)},is_character_code:function(w){return w instanceof Re&&!w.is_float&&w.value>=0&&w.value<=1114111},is_byte:function(w){return w instanceof Re&&!w.is_float&&w.value>=0&&w.value<=255},is_operator:function(w){return w instanceof j&&x.arithmetic.evaluation[w.indicator]},is_directive:function(w){return w instanceof j&&x.directive[w.indicator]!==void 0},is_builtin:function(w){return w instanceof j&&x.predicate[w.indicator]!==void 0},is_error:function(w){return w instanceof j&&w.indicator==="throw/1"},is_predicate_indicator:function(w){return w instanceof j&&w.indicator==="//2"&&w.args[0]instanceof j&&w.args[0].args.length===0&&w.args[1]instanceof Re&&w.args[1].is_float===!1},is_flag:function(w){return w instanceof j&&w.args.length===0&&x.flag[w.id]!==void 0},is_value_flag:function(w,b){if(!x.type.is_flag(w))return!1;for(var y in x.flag[w.id].allowed)if(x.flag[w.id].allowed.hasOwnProperty(y)&&x.flag[w.id].allowed[y].equals(b))return!0;return!1},is_io_mode:function(w){return x.type.is_atom(w)&&["read","write","append"].indexOf(w.id)!==-1},is_stream_option:function(w){return x.type.is_term(w)&&(w.indicator==="alias/1"&&x.type.is_atom(w.args[0])||w.indicator==="reposition/1"&&x.type.is_atom(w.args[0])&&(w.args[0].id==="true"||w.args[0].id==="false")||w.indicator==="type/1"&&x.type.is_atom(w.args[0])&&(w.args[0].id==="text"||w.args[0].id==="binary")||w.indicator==="eof_action/1"&&x.type.is_atom(w.args[0])&&(w.args[0].id==="error"||w.args[0].id==="eof_code"||w.args[0].id==="reset"))},is_stream_position:function(w){return x.type.is_integer(w)&&w.value>=0||x.type.is_atom(w)&&(w.id==="end_of_stream"||w.id==="past_end_of_stream")},is_stream_property:function(w){return x.type.is_term(w)&&(w.indicator==="input/0"||w.indicator==="output/0"||w.indicator==="alias/1"&&(x.type.is_variable(w.args[0])||x.type.is_atom(w.args[0]))||w.indicator==="file_name/1"&&(x.type.is_variable(w.args[0])||x.type.is_atom(w.args[0]))||w.indicator==="position/1"&&(x.type.is_variable(w.args[0])||x.type.is_stream_position(w.args[0]))||w.indicator==="reposition/1"&&(x.type.is_variable(w.args[0])||x.type.is_atom(w.args[0])&&(w.args[0].id==="true"||w.args[0].id==="false"))||w.indicator==="type/1"&&(x.type.is_variable(w.args[0])||x.type.is_atom(w.args[0])&&(w.args[0].id==="text"||w.args[0].id==="binary"))||w.indicator==="mode/1"&&(x.type.is_variable(w.args[0])||x.type.is_atom(w.args[0])&&(w.args[0].id==="read"||w.args[0].id==="write"||w.args[0].id==="append"))||w.indicator==="eof_action/1"&&(x.type.is_variable(w.args[0])||x.type.is_atom(w.args[0])&&(w.args[0].id==="error"||w.args[0].id==="eof_code"||w.args[0].id==="reset"))||w.indicator==="end_of_stream/1"&&(x.type.is_variable(w.args[0])||x.type.is_atom(w.args[0])&&(w.args[0].id==="at"||w.args[0].id==="past"||w.args[0].id==="not")))},is_streamable:function(w){return w.__proto__.stream!==void 0},is_read_option:function(w){return x.type.is_term(w)&&["variables/1","variable_names/1","singletons/1"].indexOf(w.indicator)!==-1},is_write_option:function(w){return x.type.is_term(w)&&(w.indicator==="quoted/1"&&x.type.is_atom(w.args[0])&&(w.args[0].id==="true"||w.args[0].id==="false")||w.indicator==="ignore_ops/1"&&x.type.is_atom(w.args[0])&&(w.args[0].id==="true"||w.args[0].id==="false")||w.indicator==="numbervars/1"&&x.type.is_atom(w.args[0])&&(w.args[0].id==="true"||w.args[0].id==="false"))},is_close_option:function(w){return x.type.is_term(w)&&w.indicator==="force/1"&&x.type.is_atom(w.args[0])&&(w.args[0].id==="true"||w.args[0].id==="false")},is_modifiable_flag:function(w){return x.type.is_flag(w)&&x.flag[w.id].changeable},is_module:function(w){return w instanceof j&&w.indicator==="library/1"&&w.args[0]instanceof j&&w.args[0].args.length===0&&x.module[w.args[0].id]!==void 0}},arithmetic:{evaluation:{"e/0":{type_args:null,type_result:!0,fn:function(w){return Math.E}},"pi/0":{type_args:null,type_result:!0,fn:function(w){return Math.PI}},"tau/0":{type_args:null,type_result:!0,fn:function(w){return 2*Math.PI}},"epsilon/0":{type_args:null,type_result:!0,fn:function(w){return Number.EPSILON}},"+/1":{type_args:null,type_result:null,fn:function(w,b){return w}},"-/1":{type_args:null,type_result:null,fn:function(w,b){return-w}},"\\/1":{type_args:!1,type_result:!1,fn:function(w,b){return~w}},"abs/1":{type_args:null,type_result:null,fn:function(w,b){return Math.abs(w)}},"sign/1":{type_args:null,type_result:null,fn:function(w,b){return Math.sign(w)}},"float_integer_part/1":{type_args:!0,type_result:!1,fn:function(w,b){return parseInt(w)}},"float_fractional_part/1":{type_args:!0,type_result:!0,fn:function(w,b){return w-parseInt(w)}},"float/1":{type_args:null,type_result:!0,fn:function(w,b){return parseFloat(w)}},"floor/1":{type_args:!0,type_result:!1,fn:function(w,b){return Math.floor(w)}},"truncate/1":{type_args:!0,type_result:!1,fn:function(w,b){return parseInt(w)}},"round/1":{type_args:!0,type_result:!1,fn:function(w,b){return Math.round(w)}},"ceiling/1":{type_args:!0,type_result:!1,fn:function(w,b){return Math.ceil(w)}},"sin/1":{type_args:null,type_result:!0,fn:function(w,b){return Math.sin(w)}},"cos/1":{type_args:null,type_result:!0,fn:function(w,b){return Math.cos(w)}},"tan/1":{type_args:null,type_result:!0,fn:function(w,b){return Math.tan(w)}},"asin/1":{type_args:null,type_result:!0,fn:function(w,b){return Math.asin(w)}},"acos/1":{type_args:null,type_result:!0,fn:function(w,b){return Math.acos(w)}},"atan/1":{type_args:null,type_result:!0,fn:function(w,b){return Math.atan(w)}},"atan2/2":{type_args:null,type_result:!0,fn:function(w,b,y){return Math.atan2(w,b)}},"exp/1":{type_args:null,type_result:!0,fn:function(w,b){return Math.exp(w)}},"sqrt/1":{type_args:null,type_result:!0,fn:function(w,b){return Math.sqrt(w)}},"log/1":{type_args:null,type_result:!0,fn:function(w,b){return w>0?Math.log(w):x.error.evaluation("undefined",b.__call_indicator)}},"+/2":{type_args:null,type_result:null,fn:function(w,b,y){return w+b}},"-/2":{type_args:null,type_result:null,fn:function(w,b,y){return w-b}},"*/2":{type_args:null,type_result:null,fn:function(w,b,y){return w*b}},"//2":{type_args:null,type_result:!0,fn:function(w,b,y){return b?w/b:x.error.evaluation("zero_division",y.__call_indicator)}},"///2":{type_args:!1,type_result:!1,fn:function(w,b,y){return b?parseInt(w/b):x.error.evaluation("zero_division",y.__call_indicator)}},"**/2":{type_args:null,type_result:!0,fn:function(w,b,y){return Math.pow(w,b)}},"^/2":{type_args:null,type_result:null,fn:function(w,b,y){return Math.pow(w,b)}},"<>/2":{type_args:!1,type_result:!1,fn:function(w,b,y){return w>>b}},"/\\/2":{type_args:!1,type_result:!1,fn:function(w,b,y){return w&b}},"\\//2":{type_args:!1,type_result:!1,fn:function(w,b,y){return w|b}},"xor/2":{type_args:!1,type_result:!1,fn:function(w,b,y){return w^b}},"rem/2":{type_args:!1,type_result:!1,fn:function(w,b,y){return b?w%b:x.error.evaluation("zero_division",y.__call_indicator)}},"mod/2":{type_args:!1,type_result:!1,fn:function(w,b,y){return b?w-parseInt(w/b)*b:x.error.evaluation("zero_division",y.__call_indicator)}},"max/2":{type_args:null,type_result:null,fn:function(w,b,y){return Math.max(w,b)}},"min/2":{type_args:null,type_result:null,fn:function(w,b,y){return Math.min(w,b)}}}},directive:{"dynamic/1":function(w,b){var y=b.args[0];if(x.type.is_variable(y))w.throw_error(x.error.instantiation(b.indicator));else if(!x.type.is_compound(y)||y.indicator!=="//2")w.throw_error(x.error.type("predicate_indicator",y,b.indicator));else if(x.type.is_variable(y.args[0])||x.type.is_variable(y.args[1]))w.throw_error(x.error.instantiation(b.indicator));else if(!x.type.is_atom(y.args[0]))w.throw_error(x.error.type("atom",y.args[0],b.indicator));else if(!x.type.is_integer(y.args[1]))w.throw_error(x.error.type("integer",y.args[1],b.indicator));else{var F=b.args[0].args[0].id+"/"+b.args[0].args[1].value;w.session.public_predicates[F]=!0,w.session.rules[F]||(w.session.rules[F]=[])}},"multifile/1":function(w,b){var y=b.args[0];x.type.is_variable(y)?w.throw_error(x.error.instantiation(b.indicator)):!x.type.is_compound(y)||y.indicator!=="//2"?w.throw_error(x.error.type("predicate_indicator",y,b.indicator)):x.type.is_variable(y.args[0])||x.type.is_variable(y.args[1])?w.throw_error(x.error.instantiation(b.indicator)):x.type.is_atom(y.args[0])?x.type.is_integer(y.args[1])?w.session.multifile_predicates[b.args[0].args[0].id+"/"+b.args[0].args[1].value]=!0:w.throw_error(x.error.type("integer",y.args[1],b.indicator)):w.throw_error(x.error.type("atom",y.args[0],b.indicator))},"set_prolog_flag/2":function(w,b){var y=b.args[0],F=b.args[1];x.type.is_variable(y)||x.type.is_variable(F)?w.throw_error(x.error.instantiation(b.indicator)):x.type.is_atom(y)?x.type.is_flag(y)?x.type.is_value_flag(y,F)?x.type.is_modifiable_flag(y)?w.session.flag[y.id]=F:w.throw_error(x.error.permission("modify","flag",y)):w.throw_error(x.error.domain("flag_value",new j("+",[y,F]),b.indicator)):w.throw_error(x.error.domain("prolog_flag",y,b.indicator)):w.throw_error(x.error.type("atom",y,b.indicator))},"use_module/1":function(w,b){var y=b.args[0];if(x.type.is_variable(y))w.throw_error(x.error.instantiation(b.indicator));else if(!x.type.is_term(y))w.throw_error(x.error.type("term",y,b.indicator));else if(x.type.is_module(y)){var F=y.args[0].id;e(w.session.modules,F)===-1&&w.session.modules.push(F)}},"char_conversion/2":function(w,b){var y=b.args[0],F=b.args[1];x.type.is_variable(y)||x.type.is_variable(F)?w.throw_error(x.error.instantiation(b.indicator)):x.type.is_character(y)?x.type.is_character(F)?y.id===F.id?delete w.session.__char_conversion[y.id]:w.session.__char_conversion[y.id]=F.id:w.throw_error(x.error.type("character",F,b.indicator)):w.throw_error(x.error.type("character",y,b.indicator))},"op/3":function(w,b){var y=b.args[0],F=b.args[1],z=b.args[2];if(x.type.is_variable(y)||x.type.is_variable(F)||x.type.is_variable(z))w.throw_error(x.error.instantiation(b.indicator));else if(!x.type.is_integer(y))w.throw_error(x.error.type("integer",y,b.indicator));else if(!x.type.is_atom(F))w.throw_error(x.error.type("atom",F,b.indicator));else if(!x.type.is_atom(z))w.throw_error(x.error.type("atom",z,b.indicator));else if(y.value<0||y.value>1200)w.throw_error(x.error.domain("operator_priority",y,b.indicator));else if(z.id===",")w.throw_error(x.error.permission("modify","operator",z,b.indicator));else if(z.id==="|"&&(y.value<1001||F.id.length!==3))w.throw_error(x.error.permission("modify","operator",z,b.indicator));else if(["fy","fx","yf","xf","xfx","yfx","xfy"].indexOf(F.id)===-1)w.throw_error(x.error.domain("operator_specifier",F,b.indicator));else{var Z={prefix:null,infix:null,postfix:null};for(var $ in w.session.__operators)if(w.session.__operators.hasOwnProperty($)){var oe=w.session.__operators[$][z.id];oe&&(e(oe,"fx")!==-1&&(Z.prefix={priority:$,type:"fx"}),e(oe,"fy")!==-1&&(Z.prefix={priority:$,type:"fy"}),e(oe,"xf")!==-1&&(Z.postfix={priority:$,type:"xf"}),e(oe,"yf")!==-1&&(Z.postfix={priority:$,type:"yf"}),e(oe,"xfx")!==-1&&(Z.infix={priority:$,type:"xfx"}),e(oe,"xfy")!==-1&&(Z.infix={priority:$,type:"xfy"}),e(oe,"yfx")!==-1&&(Z.infix={priority:$,type:"yfx"}))}var xe;switch(F.id){case"fy":case"fx":xe="prefix";break;case"yf":case"xf":xe="postfix";break;default:xe="infix";break}if(((Z.prefix&&xe==="prefix"||Z.postfix&&xe==="postfix"||Z.infix&&xe==="infix")&&Z[xe].type!==F.id||Z.infix&&xe==="postfix"||Z.postfix&&xe==="infix")&&y.value!==0)w.throw_error(x.error.permission("create","operator",z,b.indicator));else return Z[xe]&&(we(w.session.__operators[Z[xe].priority][z.id],F.id),w.session.__operators[Z[xe].priority][z.id].length===0&&delete w.session.__operators[Z[xe].priority][z.id]),y.value>0&&(w.session.__operators[y.value]||(w.session.__operators[y.value.toString()]={}),w.session.__operators[y.value][z.id]||(w.session.__operators[y.value][z.id]=[]),w.session.__operators[y.value][z.id].push(F.id)),!0}}},predicate:{"op/3":function(w,b,y){x.directive["op/3"](w,y)&&w.success(b)},"current_op/3":function(w,b,y){var F=y.args[0],z=y.args[1],Z=y.args[2],$=[];for(var oe in w.session.__operators)for(var xe in w.session.__operators[oe])for(var Te=0;Te/2"){var F=w.points,z=w.session.format_success,Z=w.session.format_error;w.session.format_success=function(Te){return Te.substitution},w.session.format_error=function(Te){return Te.goal},w.points=[new Pe(y.args[0].args[0],b.substitution,b)];var $=function(Te){w.points=F,w.session.format_success=z,w.session.format_error=Z,Te===!1?w.prepend([new Pe(b.goal.replace(y.args[1]),b.substitution,b)]):x.type.is_error(Te)?w.throw_error(Te.args[0]):Te===null?(w.prepend([b]),w.__calls.shift()(null)):w.prepend([new Pe(b.goal.replace(y.args[0].args[1]).apply(Te),b.substitution.apply(Te),b)])};w.__calls.unshift($)}else{var oe=new Pe(b.goal.replace(y.args[0]),b.substitution,b),xe=new Pe(b.goal.replace(y.args[1]),b.substitution,b);w.prepend([oe,xe])}},"!/0":function(w,b,y){var F,z,Z=[];for(F=b,z=null;F.parent!==null&&F.parent.goal.search(y);)if(z=F,F=F.parent,F.goal!==null){var $=F.goal.select();if($&&$.id==="call"&&$.search(y)){F=z;break}}for(var oe=w.points.length-1;oe>=0;oe--){for(var xe=w.points[oe],Te=xe.parent;Te!==null&&Te!==F.parent;)Te=Te.parent;Te===null&&Te!==F.parent&&Z.push(xe)}w.points=Z.reverse(),w.success(b)},"\\+/1":function(w,b,y){var F=y.args[0];x.type.is_variable(F)?w.throw_error(x.error.instantiation(w.level)):x.type.is_callable(F)?w.prepend([new Pe(b.goal.replace(new j(",",[new j(",",[new j("call",[F]),new j("!",[])]),new j("fail",[])])),b.substitution,b),new Pe(b.goal.replace(null),b.substitution,b)]):w.throw_error(x.error.type("callable",F,w.level))},"->/2":function(w,b,y){var F=b.goal.replace(new j(",",[y.args[0],new j(",",[new j("!"),y.args[1]])]));w.prepend([new Pe(F,b.substitution,b)])},"fail/0":function(w,b,y){},"false/0":function(w,b,y){},"true/0":function(w,b,y){w.success(b)},"call/1":se(1),"call/2":se(2),"call/3":se(3),"call/4":se(4),"call/5":se(5),"call/6":se(6),"call/7":se(7),"call/8":se(8),"once/1":function(w,b,y){var F=y.args[0];w.prepend([new Pe(b.goal.replace(new j(",",[new j("call",[F]),new j("!",[])])),b.substitution,b)])},"forall/2":function(w,b,y){var F=y.args[0],z=y.args[1];w.prepend([new Pe(b.goal.replace(new j("\\+",[new j(",",[new j("call",[F]),new j("\\+",[new j("call",[z])])])])),b.substitution,b)])},"repeat/0":function(w,b,y){w.prepend([new Pe(b.goal.replace(null),b.substitution,b),b])},"throw/1":function(w,b,y){x.type.is_variable(y.args[0])?w.throw_error(x.error.instantiation(w.level)):w.throw_error(y.args[0])},"catch/3":function(w,b,y){var F=w.points;w.points=[],w.prepend([new Pe(y.args[0],b.substitution,b)]);var z=w.session.format_success,Z=w.session.format_error;w.session.format_success=function(oe){return oe.substitution},w.session.format_error=function(oe){return oe.goal};var $=function(oe){var xe=w.points;if(w.points=F,w.session.format_success=z,w.session.format_error=Z,x.type.is_error(oe)){for(var Te=[],lt=w.points.length-1;lt>=0;lt--){for(var ir=w.points[lt],Et=ir.parent;Et!==null&&Et!==b.parent;)Et=Et.parent;Et===null&&Et!==b.parent&&Te.push(ir)}w.points=Te;var qt=w.get_flag("occurs_check").indicator==="true/0",ir=new Pe,Pt=x.unify(oe.args[0],y.args[1],qt);Pt!==null?(ir.substitution=b.substitution.apply(Pt),ir.goal=b.goal.replace(y.args[2]).apply(Pt),ir.parent=b,w.prepend([ir])):w.throw_error(oe.args[0])}else if(oe!==!1){for(var gn=oe===null?[]:[new Pe(b.goal.apply(oe).replace(null),b.substitution.apply(oe),b)],Pr=[],lt=xe.length-1;lt>=0;lt--){Pr.push(xe[lt]);var Ir=xe[lt].goal!==null?xe[lt].goal.select():null;if(x.type.is_term(Ir)&&Ir.indicator==="!/0")break}var Nr=s(Pr,function(nn){return nn.goal===null&&(nn.goal=new j("true",[])),nn=new Pe(b.goal.replace(new j("catch",[nn.goal,y.args[1],y.args[2]])),b.substitution.apply(nn.substitution),nn.parent),nn.exclude=y.args[0].variables(),nn}).reverse();w.prepend(Nr),w.prepend(gn),oe===null&&(this.current_limit=0,w.__calls.shift()(null))}};w.__calls.unshift($)},"=/2":function(w,b,y){var F=w.get_flag("occurs_check").indicator==="true/0",z=new Pe,Z=x.unify(y.args[0],y.args[1],F);Z!==null&&(z.goal=b.goal.apply(Z).replace(null),z.substitution=b.substitution.apply(Z),z.parent=b,w.prepend([z]))},"unify_with_occurs_check/2":function(w,b,y){var F=new Pe,z=x.unify(y.args[0],y.args[1],!0);z!==null&&(F.goal=b.goal.apply(z).replace(null),F.substitution=b.substitution.apply(z),F.parent=b,w.prepend([F]))},"\\=/2":function(w,b,y){var F=w.get_flag("occurs_check").indicator==="true/0",z=x.unify(y.args[0],y.args[1],F);z===null&&w.success(b)},"subsumes_term/2":function(w,b,y){var F=w.get_flag("occurs_check").indicator==="true/0",z=x.unify(y.args[1],y.args[0],F);z!==null&&y.args[1].apply(z).equals(y.args[1])&&w.success(b)},"findall/3":function(w,b,y){var F=y.args[0],z=y.args[1],Z=y.args[2];if(x.type.is_variable(z))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_callable(z))w.throw_error(x.error.type("callable",z,y.indicator));else if(!x.type.is_variable(Z)&&!x.type.is_list(Z))w.throw_error(x.error.type("list",Z,y.indicator));else{var $=w.next_free_variable(),oe=new j(",",[z,new j("=",[$,F])]),xe=w.points,Te=w.session.limit,lt=w.session.format_success;w.session.format_success=function(ir){return ir.substitution},w.add_goal(oe,!0,b);var Et=[],qt=function(ir){if(ir!==!1&&ir!==null&&!x.type.is_error(ir))w.__calls.unshift(qt),Et.push(ir.links[$.id]),w.session.limit=w.current_limit;else if(w.points=xe,w.session.limit=Te,w.session.format_success=lt,x.type.is_error(ir))w.throw_error(ir.args[0]);else if(w.current_limit>0){for(var Pt=new j("[]"),gn=Et.length-1;gn>=0;gn--)Pt=new j(".",[Et[gn],Pt]);w.prepend([new Pe(b.goal.replace(new j("=",[Z,Pt])),b.substitution,b)])}};w.__calls.unshift(qt)}},"bagof/3":function(w,b,y){var F,z=y.args[0],Z=y.args[1],$=y.args[2];if(x.type.is_variable(Z))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_callable(Z))w.throw_error(x.error.type("callable",Z,y.indicator));else if(!x.type.is_variable($)&&!x.type.is_list($))w.throw_error(x.error.type("list",$,y.indicator));else{var oe=w.next_free_variable(),xe;Z.indicator==="^/2"?(xe=Z.args[0].variables(),Z=Z.args[1]):xe=[],xe=xe.concat(z.variables());for(var Te=Z.variables().filter(function(Nr){return e(xe,Nr)===-1}),lt=new j("[]"),Et=Te.length-1;Et>=0;Et--)lt=new j(".",[new De(Te[Et]),lt]);var qt=new j(",",[Z,new j("=",[oe,new j(",",[lt,z])])]),ir=w.points,Pt=w.session.limit,gn=w.session.format_success;w.session.format_success=function(Nr){return Nr.substitution},w.add_goal(qt,!0,b);var Pr=[],Ir=function(Nr){if(Nr!==!1&&Nr!==null&&!x.type.is_error(Nr)){w.__calls.unshift(Ir);var nn=!1,oi=Nr.links[oe.id].args[0],wo=Nr.links[oe.id].args[1];for(var rs in Pr)if(Pr.hasOwnProperty(rs)){var eo=Pr[rs];if(eo.variables.equals(oi)){eo.answers.push(wo),nn=!0;break}}nn||Pr.push({variables:oi,answers:[wo]}),w.session.limit=w.current_limit}else if(w.points=ir,w.session.limit=Pt,w.session.format_success=gn,x.type.is_error(Nr))w.throw_error(Nr.args[0]);else if(w.current_limit>0){for(var Bo=[],Hi=0;Hi=0;vo--)to=new j(".",[Nr[vo],to]);Bo.push(new Pe(b.goal.replace(new j(",",[new j("=",[lt,Pr[Hi].variables]),new j("=",[$,to])])),b.substitution,b))}w.prepend(Bo)}};w.__calls.unshift(Ir)}},"setof/3":function(w,b,y){var F,z=y.args[0],Z=y.args[1],$=y.args[2];if(x.type.is_variable(Z))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_callable(Z))w.throw_error(x.error.type("callable",Z,y.indicator));else if(!x.type.is_variable($)&&!x.type.is_list($))w.throw_error(x.error.type("list",$,y.indicator));else{var oe=w.next_free_variable(),xe;Z.indicator==="^/2"?(xe=Z.args[0].variables(),Z=Z.args[1]):xe=[],xe=xe.concat(z.variables());for(var Te=Z.variables().filter(function(Nr){return e(xe,Nr)===-1}),lt=new j("[]"),Et=Te.length-1;Et>=0;Et--)lt=new j(".",[new De(Te[Et]),lt]);var qt=new j(",",[Z,new j("=",[oe,new j(",",[lt,z])])]),ir=w.points,Pt=w.session.limit,gn=w.session.format_success;w.session.format_success=function(Nr){return Nr.substitution},w.add_goal(qt,!0,b);var Pr=[],Ir=function(Nr){if(Nr!==!1&&Nr!==null&&!x.type.is_error(Nr)){w.__calls.unshift(Ir);var nn=!1,oi=Nr.links[oe.id].args[0],wo=Nr.links[oe.id].args[1];for(var rs in Pr)if(Pr.hasOwnProperty(rs)){var eo=Pr[rs];if(eo.variables.equals(oi)){eo.answers.push(wo),nn=!0;break}}nn||Pr.push({variables:oi,answers:[wo]}),w.session.limit=w.current_limit}else if(w.points=ir,w.session.limit=Pt,w.session.format_success=gn,x.type.is_error(Nr))w.throw_error(Nr.args[0]);else if(w.current_limit>0){for(var Bo=[],Hi=0;Hi=0;vo--)to=new j(".",[Nr[vo],to]);Bo.push(new Pe(b.goal.replace(new j(",",[new j("=",[lt,Pr[Hi].variables]),new j("=",[$,to])])),b.substitution,b))}w.prepend(Bo)}};w.__calls.unshift(Ir)}},"functor/3":function(w,b,y){var F,z=y.args[0],Z=y.args[1],$=y.args[2];if(x.type.is_variable(z)&&(x.type.is_variable(Z)||x.type.is_variable($)))w.throw_error(x.error.instantiation("functor/3"));else if(!x.type.is_variable($)&&!x.type.is_integer($))w.throw_error(x.error.type("integer",y.args[2],"functor/3"));else if(!x.type.is_variable(Z)&&!x.type.is_atomic(Z))w.throw_error(x.error.type("atomic",y.args[1],"functor/3"));else if(x.type.is_integer(Z)&&x.type.is_integer($)&&$.value!==0)w.throw_error(x.error.type("atom",y.args[1],"functor/3"));else if(x.type.is_variable(z)){if(y.args[2].value>=0){for(var oe=[],xe=0;xe<$.value;xe++)oe.push(w.next_free_variable());var Te=x.type.is_integer(Z)?Z:new j(Z.id,oe);w.prepend([new Pe(b.goal.replace(new j("=",[z,Te])),b.substitution,b)])}}else{var lt=x.type.is_integer(z)?z:new j(z.id,[]),Et=x.type.is_integer(z)?new Re(0,!1):new Re(z.args.length,!1),qt=new j(",",[new j("=",[lt,Z]),new j("=",[Et,$])]);w.prepend([new Pe(b.goal.replace(qt),b.substitution,b)])}},"arg/3":function(w,b,y){if(x.type.is_variable(y.args[0])||x.type.is_variable(y.args[1]))w.throw_error(x.error.instantiation(y.indicator));else if(y.args[0].value<0)w.throw_error(x.error.domain("not_less_than_zero",y.args[0],y.indicator));else if(!x.type.is_compound(y.args[1]))w.throw_error(x.error.type("compound",y.args[1],y.indicator));else{var F=y.args[0].value;if(F>0&&F<=y.args[1].args.length){var z=new j("=",[y.args[1].args[F-1],y.args[2]]);w.prepend([new Pe(b.goal.replace(z),b.substitution,b)])}}},"=../2":function(w,b,y){var F;if(x.type.is_variable(y.args[0])&&(x.type.is_variable(y.args[1])||x.type.is_non_empty_list(y.args[1])&&x.type.is_variable(y.args[1].args[0])))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_fully_list(y.args[1]))w.throw_error(x.error.type("list",y.args[1],y.indicator));else if(x.type.is_variable(y.args[0])){if(!x.type.is_variable(y.args[1])){var Z=[];for(F=y.args[1].args[1];F.indicator==="./2";)Z.push(F.args[0]),F=F.args[1];x.type.is_variable(y.args[0])&&x.type.is_variable(F)?w.throw_error(x.error.instantiation(y.indicator)):Z.length===0&&x.type.is_compound(y.args[1].args[0])?w.throw_error(x.error.type("atomic",y.args[1].args[0],y.indicator)):Z.length>0&&(x.type.is_compound(y.args[1].args[0])||x.type.is_number(y.args[1].args[0]))?w.throw_error(x.error.type("atom",y.args[1].args[0],y.indicator)):Z.length===0?w.prepend([new Pe(b.goal.replace(new j("=",[y.args[1].args[0],y.args[0]],b)),b.substitution,b)]):w.prepend([new Pe(b.goal.replace(new j("=",[new j(y.args[1].args[0].id,Z),y.args[0]])),b.substitution,b)])}}else{if(x.type.is_atomic(y.args[0]))F=new j(".",[y.args[0],new j("[]")]);else{F=new j("[]");for(var z=y.args[0].args.length-1;z>=0;z--)F=new j(".",[y.args[0].args[z],F]);F=new j(".",[new j(y.args[0].id),F])}w.prepend([new Pe(b.goal.replace(new j("=",[F,y.args[1]])),b.substitution,b)])}},"copy_term/2":function(w,b,y){var F=y.args[0].rename(w);w.prepend([new Pe(b.goal.replace(new j("=",[F,y.args[1]])),b.substitution,b.parent)])},"term_variables/2":function(w,b,y){var F=y.args[0],z=y.args[1];if(!x.type.is_fully_list(z))w.throw_error(x.error.type("list",z,y.indicator));else{var Z=g(s(Ee(F.variables()),function($){return new De($)}));w.prepend([new Pe(b.goal.replace(new j("=",[z,Z])),b.substitution,b)])}},"clause/2":function(w,b,y){if(x.type.is_variable(y.args[0]))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_callable(y.args[0]))w.throw_error(x.error.type("callable",y.args[0],y.indicator));else if(!x.type.is_variable(y.args[1])&&!x.type.is_callable(y.args[1]))w.throw_error(x.error.type("callable",y.args[1],y.indicator));else if(w.session.rules[y.args[0].indicator]!==void 0)if(w.is_public_predicate(y.args[0].indicator)){var F=[];for(var z in w.session.rules[y.args[0].indicator])if(w.session.rules[y.args[0].indicator].hasOwnProperty(z)){var Z=w.session.rules[y.args[0].indicator][z];w.session.renamed_variables={},Z=Z.rename(w),Z.body===null&&(Z.body=new j("true"));var $=new j(",",[new j("=",[Z.head,y.args[0]]),new j("=",[Z.body,y.args[1]])]);F.push(new Pe(b.goal.replace($),b.substitution,b))}w.prepend(F)}else w.throw_error(x.error.permission("access","private_procedure",y.args[0].indicator,y.indicator))},"current_predicate/1":function(w,b,y){var F=y.args[0];if(!x.type.is_variable(F)&&(!x.type.is_compound(F)||F.indicator!=="//2"))w.throw_error(x.error.type("predicate_indicator",F,y.indicator));else if(!x.type.is_variable(F)&&!x.type.is_variable(F.args[0])&&!x.type.is_atom(F.args[0]))w.throw_error(x.error.type("atom",F.args[0],y.indicator));else if(!x.type.is_variable(F)&&!x.type.is_variable(F.args[1])&&!x.type.is_integer(F.args[1]))w.throw_error(x.error.type("integer",F.args[1],y.indicator));else{var z=[];for(var Z in w.session.rules)if(w.session.rules.hasOwnProperty(Z)){var $=Z.lastIndexOf("/"),oe=Z.substr(0,$),xe=parseInt(Z.substr($+1,Z.length-($+1))),Te=new j("/",[new j(oe),new Re(xe,!1)]),lt=new j("=",[Te,F]);z.push(new Pe(b.goal.replace(lt),b.substitution,b))}w.prepend(z)}},"asserta/1":function(w,b,y){if(x.type.is_variable(y.args[0]))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_callable(y.args[0]))w.throw_error(x.error.type("callable",y.args[0],y.indicator));else{var F,z;y.args[0].indicator===":-/2"?(F=y.args[0].args[0],z=Ce(y.args[0].args[1])):(F=y.args[0],z=null),x.type.is_callable(F)?z!==null&&!x.type.is_callable(z)?w.throw_error(x.error.type("callable",z,y.indicator)):w.is_public_predicate(F.indicator)?(w.session.rules[F.indicator]===void 0&&(w.session.rules[F.indicator]=[]),w.session.public_predicates[F.indicator]=!0,w.session.rules[F.indicator]=[new Ye(F,z,!0)].concat(w.session.rules[F.indicator]),w.success(b)):w.throw_error(x.error.permission("modify","static_procedure",F.indicator,y.indicator)):w.throw_error(x.error.type("callable",F,y.indicator))}},"assertz/1":function(w,b,y){if(x.type.is_variable(y.args[0]))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_callable(y.args[0]))w.throw_error(x.error.type("callable",y.args[0],y.indicator));else{var F,z;y.args[0].indicator===":-/2"?(F=y.args[0].args[0],z=Ce(y.args[0].args[1])):(F=y.args[0],z=null),x.type.is_callable(F)?z!==null&&!x.type.is_callable(z)?w.throw_error(x.error.type("callable",z,y.indicator)):w.is_public_predicate(F.indicator)?(w.session.rules[F.indicator]===void 0&&(w.session.rules[F.indicator]=[]),w.session.public_predicates[F.indicator]=!0,w.session.rules[F.indicator].push(new Ye(F,z,!0)),w.success(b)):w.throw_error(x.error.permission("modify","static_procedure",F.indicator,y.indicator)):w.throw_error(x.error.type("callable",F,y.indicator))}},"retract/1":function(w,b,y){if(x.type.is_variable(y.args[0]))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_callable(y.args[0]))w.throw_error(x.error.type("callable",y.args[0],y.indicator));else{var F,z;if(y.args[0].indicator===":-/2"?(F=y.args[0].args[0],z=y.args[0].args[1]):(F=y.args[0],z=new j("true")),typeof b.retract>"u")if(w.is_public_predicate(F.indicator)){if(w.session.rules[F.indicator]!==void 0){for(var Z=[],$=0;$w.get_flag("max_arity").value)w.throw_error(x.error.representation("max_arity",y.indicator));else{var F=y.args[0].args[0].id+"/"+y.args[0].args[1].value;w.is_public_predicate(F)?(delete w.session.rules[F],w.success(b)):w.throw_error(x.error.permission("modify","static_procedure",F,y.indicator))}},"atom_length/2":function(w,b,y){if(x.type.is_variable(y.args[0]))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_atom(y.args[0]))w.throw_error(x.error.type("atom",y.args[0],y.indicator));else if(!x.type.is_variable(y.args[1])&&!x.type.is_integer(y.args[1]))w.throw_error(x.error.type("integer",y.args[1],y.indicator));else if(x.type.is_integer(y.args[1])&&y.args[1].value<0)w.throw_error(x.error.domain("not_less_than_zero",y.args[1],y.indicator));else{var F=new Re(y.args[0].id.length,!1);w.prepend([new Pe(b.goal.replace(new j("=",[F,y.args[1]])),b.substitution,b)])}},"atom_concat/3":function(w,b,y){var F,z,Z=y.args[0],$=y.args[1],oe=y.args[2];if(x.type.is_variable(oe)&&(x.type.is_variable(Z)||x.type.is_variable($)))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(Z)&&!x.type.is_atom(Z))w.throw_error(x.error.type("atom",Z,y.indicator));else if(!x.type.is_variable($)&&!x.type.is_atom($))w.throw_error(x.error.type("atom",$,y.indicator));else if(!x.type.is_variable(oe)&&!x.type.is_atom(oe))w.throw_error(x.error.type("atom",oe,y.indicator));else{var xe=x.type.is_variable(Z),Te=x.type.is_variable($);if(!xe&&!Te)z=new j("=",[oe,new j(Z.id+$.id)]),w.prepend([new Pe(b.goal.replace(z),b.substitution,b)]);else if(xe&&!Te)F=oe.id.substr(0,oe.id.length-$.id.length),F+$.id===oe.id&&(z=new j("=",[Z,new j(F)]),w.prepend([new Pe(b.goal.replace(z),b.substitution,b)]));else if(Te&&!xe)F=oe.id.substr(Z.id.length),Z.id+F===oe.id&&(z=new j("=",[$,new j(F)]),w.prepend([new Pe(b.goal.replace(z),b.substitution,b)]));else{for(var lt=[],Et=0;Et<=oe.id.length;Et++){var qt=new j(oe.id.substr(0,Et)),ir=new j(oe.id.substr(Et));z=new j(",",[new j("=",[qt,Z]),new j("=",[ir,$])]),lt.push(new Pe(b.goal.replace(z),b.substitution,b))}w.prepend(lt)}}},"sub_atom/5":function(w,b,y){var F,z=y.args[0],Z=y.args[1],$=y.args[2],oe=y.args[3],xe=y.args[4];if(x.type.is_variable(z))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(Z)&&!x.type.is_integer(Z))w.throw_error(x.error.type("integer",Z,y.indicator));else if(!x.type.is_variable($)&&!x.type.is_integer($))w.throw_error(x.error.type("integer",$,y.indicator));else if(!x.type.is_variable(oe)&&!x.type.is_integer(oe))w.throw_error(x.error.type("integer",oe,y.indicator));else if(x.type.is_integer(Z)&&Z.value<0)w.throw_error(x.error.domain("not_less_than_zero",Z,y.indicator));else if(x.type.is_integer($)&&$.value<0)w.throw_error(x.error.domain("not_less_than_zero",$,y.indicator));else if(x.type.is_integer(oe)&&oe.value<0)w.throw_error(x.error.domain("not_less_than_zero",oe,y.indicator));else{var Te=[],lt=[],Et=[];if(x.type.is_variable(Z))for(F=0;F<=z.id.length;F++)Te.push(F);else Te.push(Z.value);if(x.type.is_variable($))for(F=0;F<=z.id.length;F++)lt.push(F);else lt.push($.value);if(x.type.is_variable(oe))for(F=0;F<=z.id.length;F++)Et.push(F);else Et.push(oe.value);var qt=[];for(var ir in Te)if(Te.hasOwnProperty(ir)){F=Te[ir];for(var Pt in lt)if(lt.hasOwnProperty(Pt)){var gn=lt[Pt],Pr=z.id.length-F-gn;if(e(Et,Pr)!==-1&&F+gn+Pr===z.id.length){var Ir=z.id.substr(F,gn);if(z.id===z.id.substr(0,F)+Ir+z.id.substr(F+gn,Pr)){var Nr=new j("=",[new j(Ir),xe]),nn=new j("=",[Z,new Re(F)]),oi=new j("=",[$,new Re(gn)]),wo=new j("=",[oe,new Re(Pr)]),rs=new j(",",[new j(",",[new j(",",[nn,oi]),wo]),Nr]);qt.push(new Pe(b.goal.replace(rs),b.substitution,b))}}}}w.prepend(qt)}},"atom_chars/2":function(w,b,y){var F=y.args[0],z=y.args[1];if(x.type.is_variable(F)&&x.type.is_variable(z))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(F)&&!x.type.is_atom(F))w.throw_error(x.error.type("atom",F,y.indicator));else if(x.type.is_variable(F)){for(var oe=z,xe=x.type.is_variable(F),Te="";oe.indicator==="./2";){if(x.type.is_character(oe.args[0]))Te+=oe.args[0].id;else if(x.type.is_variable(oe.args[0])&&xe){w.throw_error(x.error.instantiation(y.indicator));return}else if(!x.type.is_variable(oe.args[0])){w.throw_error(x.error.type("character",oe.args[0],y.indicator));return}oe=oe.args[1]}x.type.is_variable(oe)&&xe?w.throw_error(x.error.instantiation(y.indicator)):!x.type.is_empty_list(oe)&&!x.type.is_variable(oe)?w.throw_error(x.error.type("list",z,y.indicator)):w.prepend([new Pe(b.goal.replace(new j("=",[new j(Te),F])),b.substitution,b)])}else{for(var Z=new j("[]"),$=F.id.length-1;$>=0;$--)Z=new j(".",[new j(F.id.charAt($)),Z]);w.prepend([new Pe(b.goal.replace(new j("=",[z,Z])),b.substitution,b)])}},"atom_codes/2":function(w,b,y){var F=y.args[0],z=y.args[1];if(x.type.is_variable(F)&&x.type.is_variable(z))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(F)&&!x.type.is_atom(F))w.throw_error(x.error.type("atom",F,y.indicator));else if(x.type.is_variable(F)){for(var oe=z,xe=x.type.is_variable(F),Te="";oe.indicator==="./2";){if(x.type.is_character_code(oe.args[0]))Te+=c(oe.args[0].value);else if(x.type.is_variable(oe.args[0])&&xe){w.throw_error(x.error.instantiation(y.indicator));return}else if(!x.type.is_variable(oe.args[0])){w.throw_error(x.error.representation("character_code",y.indicator));return}oe=oe.args[1]}x.type.is_variable(oe)&&xe?w.throw_error(x.error.instantiation(y.indicator)):!x.type.is_empty_list(oe)&&!x.type.is_variable(oe)?w.throw_error(x.error.type("list",z,y.indicator)):w.prepend([new Pe(b.goal.replace(new j("=",[new j(Te),F])),b.substitution,b)])}else{for(var Z=new j("[]"),$=F.id.length-1;$>=0;$--)Z=new j(".",[new Re(n(F.id,$),!1),Z]);w.prepend([new Pe(b.goal.replace(new j("=",[z,Z])),b.substitution,b)])}},"char_code/2":function(w,b,y){var F=y.args[0],z=y.args[1];if(x.type.is_variable(F)&&x.type.is_variable(z))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(F)&&!x.type.is_character(F))w.throw_error(x.error.type("character",F,y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_integer(z))w.throw_error(x.error.type("integer",z,y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_character_code(z))w.throw_error(x.error.representation("character_code",y.indicator));else if(x.type.is_variable(z)){var Z=new Re(n(F.id,0),!1);w.prepend([new Pe(b.goal.replace(new j("=",[Z,z])),b.substitution,b)])}else{var $=new j(c(z.value));w.prepend([new Pe(b.goal.replace(new j("=",[$,F])),b.substitution,b)])}},"number_chars/2":function(w,b,y){var F,z=y.args[0],Z=y.args[1];if(x.type.is_variable(z)&&x.type.is_variable(Z))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_number(z))w.throw_error(x.error.type("number",z,y.indicator));else if(!x.type.is_variable(Z)&&!x.type.is_list(Z))w.throw_error(x.error.type("list",Z,y.indicator));else{var $=x.type.is_variable(z);if(!x.type.is_variable(Z)){var oe=Z,xe=!0;for(F="";oe.indicator==="./2";){if(x.type.is_character(oe.args[0]))F+=oe.args[0].id;else if(x.type.is_variable(oe.args[0]))xe=!1;else if(!x.type.is_variable(oe.args[0])){w.throw_error(x.error.type("character",oe.args[0],y.indicator));return}oe=oe.args[1]}if(xe=xe&&x.type.is_empty_list(oe),!x.type.is_empty_list(oe)&&!x.type.is_variable(oe)){w.throw_error(x.error.type("list",Z,y.indicator));return}if(!xe&&$){w.throw_error(x.error.instantiation(y.indicator));return}else if(xe)if(x.type.is_variable(oe)&&$){w.throw_error(x.error.instantiation(y.indicator));return}else{var Te=w.parse(F),lt=Te.value;!x.type.is_number(lt)||Te.tokens[Te.tokens.length-1].space?w.throw_error(x.error.syntax_by_predicate("parseable_number",y.indicator)):w.prepend([new Pe(b.goal.replace(new j("=",[z,lt])),b.substitution,b)]);return}}if(!$){F=z.toString();for(var Et=new j("[]"),qt=F.length-1;qt>=0;qt--)Et=new j(".",[new j(F.charAt(qt)),Et]);w.prepend([new Pe(b.goal.replace(new j("=",[Z,Et])),b.substitution,b)])}}},"number_codes/2":function(w,b,y){var F,z=y.args[0],Z=y.args[1];if(x.type.is_variable(z)&&x.type.is_variable(Z))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_number(z))w.throw_error(x.error.type("number",z,y.indicator));else if(!x.type.is_variable(Z)&&!x.type.is_list(Z))w.throw_error(x.error.type("list",Z,y.indicator));else{var $=x.type.is_variable(z);if(!x.type.is_variable(Z)){var oe=Z,xe=!0;for(F="";oe.indicator==="./2";){if(x.type.is_character_code(oe.args[0]))F+=c(oe.args[0].value);else if(x.type.is_variable(oe.args[0]))xe=!1;else if(!x.type.is_variable(oe.args[0])){w.throw_error(x.error.type("character_code",oe.args[0],y.indicator));return}oe=oe.args[1]}if(xe=xe&&x.type.is_empty_list(oe),!x.type.is_empty_list(oe)&&!x.type.is_variable(oe)){w.throw_error(x.error.type("list",Z,y.indicator));return}if(!xe&&$){w.throw_error(x.error.instantiation(y.indicator));return}else if(xe)if(x.type.is_variable(oe)&&$){w.throw_error(x.error.instantiation(y.indicator));return}else{var Te=w.parse(F),lt=Te.value;!x.type.is_number(lt)||Te.tokens[Te.tokens.length-1].space?w.throw_error(x.error.syntax_by_predicate("parseable_number",y.indicator)):w.prepend([new Pe(b.goal.replace(new j("=",[z,lt])),b.substitution,b)]);return}}if(!$){F=z.toString();for(var Et=new j("[]"),qt=F.length-1;qt>=0;qt--)Et=new j(".",[new Re(n(F,qt),!1),Et]);w.prepend([new Pe(b.goal.replace(new j("=",[Z,Et])),b.substitution,b)])}}},"upcase_atom/2":function(w,b,y){var F=y.args[0],z=y.args[1];x.type.is_variable(F)?w.throw_error(x.error.instantiation(y.indicator)):x.type.is_atom(F)?!x.type.is_variable(z)&&!x.type.is_atom(z)?w.throw_error(x.error.type("atom",z,y.indicator)):w.prepend([new Pe(b.goal.replace(new j("=",[z,new j(F.id.toUpperCase(),[])])),b.substitution,b)]):w.throw_error(x.error.type("atom",F,y.indicator))},"downcase_atom/2":function(w,b,y){var F=y.args[0],z=y.args[1];x.type.is_variable(F)?w.throw_error(x.error.instantiation(y.indicator)):x.type.is_atom(F)?!x.type.is_variable(z)&&!x.type.is_atom(z)?w.throw_error(x.error.type("atom",z,y.indicator)):w.prepend([new Pe(b.goal.replace(new j("=",[z,new j(F.id.toLowerCase(),[])])),b.substitution,b)]):w.throw_error(x.error.type("atom",F,y.indicator))},"atomic_list_concat/2":function(w,b,y){var F=y.args[0],z=y.args[1];w.prepend([new Pe(b.goal.replace(new j("atomic_list_concat",[F,new j("",[]),z])),b.substitution,b)])},"atomic_list_concat/3":function(w,b,y){var F=y.args[0],z=y.args[1],Z=y.args[2];if(x.type.is_variable(z)||x.type.is_variable(F)&&x.type.is_variable(Z))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(F)&&!x.type.is_list(F))w.throw_error(x.error.type("list",F,y.indicator));else if(!x.type.is_variable(Z)&&!x.type.is_atom(Z))w.throw_error(x.error.type("atom",Z,y.indicator));else if(x.type.is_variable(Z)){for(var oe="",xe=F;x.type.is_term(xe)&&xe.indicator==="./2";){if(!x.type.is_atom(xe.args[0])&&!x.type.is_number(xe.args[0])){w.throw_error(x.error.type("atomic",xe.args[0],y.indicator));return}oe!==""&&(oe+=z.id),x.type.is_atom(xe.args[0])?oe+=xe.args[0].id:oe+=""+xe.args[0].value,xe=xe.args[1]}oe=new j(oe,[]),x.type.is_variable(xe)?w.throw_error(x.error.instantiation(y.indicator)):!x.type.is_term(xe)||xe.indicator!=="[]/0"?w.throw_error(x.error.type("list",F,y.indicator)):w.prepend([new Pe(b.goal.replace(new j("=",[oe,Z])),b.substitution,b)])}else{var $=g(s(Z.id.split(z.id),function(Te){return new j(Te,[])}));w.prepend([new Pe(b.goal.replace(new j("=",[$,F])),b.substitution,b)])}},"@=/2":function(w,b,y){x.compare(y.args[0],y.args[1])>0&&w.success(b)},"@>=/2":function(w,b,y){x.compare(y.args[0],y.args[1])>=0&&w.success(b)},"compare/3":function(w,b,y){var F=y.args[0],z=y.args[1],Z=y.args[2];if(!x.type.is_variable(F)&&!x.type.is_atom(F))w.throw_error(x.error.type("atom",F,y.indicator));else if(x.type.is_atom(F)&&["<",">","="].indexOf(F.id)===-1)w.throw_error(x.type.domain("order",F,y.indicator));else{var $=x.compare(z,Z);$=$===0?"=":$===-1?"<":">",w.prepend([new Pe(b.goal.replace(new j("=",[F,new j($,[])])),b.substitution,b)])}},"is/2":function(w,b,y){var F=y.args[1].interpret(w);x.type.is_number(F)?w.prepend([new Pe(b.goal.replace(new j("=",[y.args[0],F],w.level)),b.substitution,b)]):w.throw_error(F)},"between/3":function(w,b,y){var F=y.args[0],z=y.args[1],Z=y.args[2];if(x.type.is_variable(F)||x.type.is_variable(z))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_integer(F))w.throw_error(x.error.type("integer",F,y.indicator));else if(!x.type.is_integer(z))w.throw_error(x.error.type("integer",z,y.indicator));else if(!x.type.is_variable(Z)&&!x.type.is_integer(Z))w.throw_error(x.error.type("integer",Z,y.indicator));else if(x.type.is_variable(Z)){var $=[new Pe(b.goal.replace(new j("=",[Z,F])),b.substitution,b)];F.value=Z.value&&w.success(b)},"succ/2":function(w,b,y){var F=y.args[0],z=y.args[1];x.type.is_variable(F)&&x.type.is_variable(z)?w.throw_error(x.error.instantiation(y.indicator)):!x.type.is_variable(F)&&!x.type.is_integer(F)?w.throw_error(x.error.type("integer",F,y.indicator)):!x.type.is_variable(z)&&!x.type.is_integer(z)?w.throw_error(x.error.type("integer",z,y.indicator)):!x.type.is_variable(F)&&F.value<0?w.throw_error(x.error.domain("not_less_than_zero",F,y.indicator)):!x.type.is_variable(z)&&z.value<0?w.throw_error(x.error.domain("not_less_than_zero",z,y.indicator)):(x.type.is_variable(z)||z.value>0)&&(x.type.is_variable(F)?w.prepend([new Pe(b.goal.replace(new j("=",[F,new Re(z.value-1,!1)])),b.substitution,b)]):w.prepend([new Pe(b.goal.replace(new j("=",[z,new Re(F.value+1,!1)])),b.substitution,b)]))},"=:=/2":function(w,b,y){var F=x.arithmetic_compare(w,y.args[0],y.args[1]);x.type.is_term(F)?w.throw_error(F):F===0&&w.success(b)},"=\\=/2":function(w,b,y){var F=x.arithmetic_compare(w,y.args[0],y.args[1]);x.type.is_term(F)?w.throw_error(F):F!==0&&w.success(b)},"/2":function(w,b,y){var F=x.arithmetic_compare(w,y.args[0],y.args[1]);x.type.is_term(F)?w.throw_error(F):F>0&&w.success(b)},">=/2":function(w,b,y){var F=x.arithmetic_compare(w,y.args[0],y.args[1]);x.type.is_term(F)?w.throw_error(F):F>=0&&w.success(b)},"var/1":function(w,b,y){x.type.is_variable(y.args[0])&&w.success(b)},"atom/1":function(w,b,y){x.type.is_atom(y.args[0])&&w.success(b)},"atomic/1":function(w,b,y){x.type.is_atomic(y.args[0])&&w.success(b)},"compound/1":function(w,b,y){x.type.is_compound(y.args[0])&&w.success(b)},"integer/1":function(w,b,y){x.type.is_integer(y.args[0])&&w.success(b)},"float/1":function(w,b,y){x.type.is_float(y.args[0])&&w.success(b)},"number/1":function(w,b,y){x.type.is_number(y.args[0])&&w.success(b)},"nonvar/1":function(w,b,y){x.type.is_variable(y.args[0])||w.success(b)},"ground/1":function(w,b,y){y.variables().length===0&&w.success(b)},"acyclic_term/1":function(w,b,y){for(var F=b.substitution.apply(b.substitution),z=y.args[0].variables(),Z=0;Z0?Pt[Pt.length-1]:null,Pt!==null&&(qt=W(w,Pt,0,w.__get_max_priority(),!1))}if(qt.type===p&&qt.len===Pt.length-1&&gn.value==="."){qt=qt.value.rename(w);var Pr=new j("=",[z,qt]);if(oe.variables){var Ir=g(s(Ee(qt.variables()),function(Nr){return new De(Nr)}));Pr=new j(",",[Pr,new j("=",[oe.variables,Ir])])}if(oe.variable_names){var Ir=g(s(Ee(qt.variables()),function(nn){var oi;for(oi in w.session.renamed_variables)if(w.session.renamed_variables.hasOwnProperty(oi)&&w.session.renamed_variables[oi]===nn)break;return new j("=",[new j(oi,[]),new De(nn)])}));Pr=new j(",",[Pr,new j("=",[oe.variable_names,Ir])])}if(oe.singletons){var Ir=g(s(new Ye(qt,null).singleton_variables(),function(nn){var oi;for(oi in w.session.renamed_variables)if(w.session.renamed_variables.hasOwnProperty(oi)&&w.session.renamed_variables[oi]===nn)break;return new j("=",[new j(oi,[]),new De(nn)])}));Pr=new j(",",[Pr,new j("=",[oe.singletons,Ir])])}w.prepend([new Pe(b.goal.replace(Pr),b.substitution,b)])}else qt.type===p?w.throw_error(x.error.syntax(Pt[qt.len],"unexpected token",!1)):w.throw_error(qt.value)}}},"write/1":function(w,b,y){var F=y.args[0];w.prepend([new Pe(b.goal.replace(new j(",",[new j("current_output",[new De("S")]),new j("write",[new De("S"),F])])),b.substitution,b)])},"write/2":function(w,b,y){var F=y.args[0],z=y.args[1];w.prepend([new Pe(b.goal.replace(new j("write_term",[F,z,new j(".",[new j("quoted",[new j("false",[])]),new j(".",[new j("ignore_ops",[new j("false")]),new j(".",[new j("numbervars",[new j("true")]),new j("[]",[])])])])])),b.substitution,b)])},"writeq/1":function(w,b,y){var F=y.args[0];w.prepend([new Pe(b.goal.replace(new j(",",[new j("current_output",[new De("S")]),new j("writeq",[new De("S"),F])])),b.substitution,b)])},"writeq/2":function(w,b,y){var F=y.args[0],z=y.args[1];w.prepend([new Pe(b.goal.replace(new j("write_term",[F,z,new j(".",[new j("quoted",[new j("true",[])]),new j(".",[new j("ignore_ops",[new j("false")]),new j(".",[new j("numbervars",[new j("true")]),new j("[]",[])])])])])),b.substitution,b)])},"write_canonical/1":function(w,b,y){var F=y.args[0];w.prepend([new Pe(b.goal.replace(new j(",",[new j("current_output",[new De("S")]),new j("write_canonical",[new De("S"),F])])),b.substitution,b)])},"write_canonical/2":function(w,b,y){var F=y.args[0],z=y.args[1];w.prepend([new Pe(b.goal.replace(new j("write_term",[F,z,new j(".",[new j("quoted",[new j("true",[])]),new j(".",[new j("ignore_ops",[new j("true")]),new j(".",[new j("numbervars",[new j("false")]),new j("[]",[])])])])])),b.substitution,b)])},"write_term/2":function(w,b,y){var F=y.args[0],z=y.args[1];w.prepend([new Pe(b.goal.replace(new j(",",[new j("current_output",[new De("S")]),new j("write_term",[new De("S"),F,z])])),b.substitution,b)])},"write_term/3":function(w,b,y){var F=y.args[0],z=y.args[1],Z=y.args[2],$=x.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(x.type.is_variable(F)||x.type.is_variable(Z))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_list(Z))w.throw_error(x.error.type("list",Z,y.indicator));else if(!x.type.is_stream(F)&&!x.type.is_atom(F))w.throw_error(x.error.domain("stream_or_alias",F,y.indicator));else if(!x.type.is_stream($)||$.stream===null)w.throw_error(x.error.existence("stream",F,y.indicator));else if($.input)w.throw_error(x.error.permission("output","stream",F,y.indicator));else if($.type==="binary")w.throw_error(x.error.permission("output","binary_stream",F,y.indicator));else if($.position==="past_end_of_stream"&&$.eof_action==="error")w.throw_error(x.error.permission("output","past_end_of_stream",F,y.indicator));else{for(var oe={},xe=Z,Te;x.type.is_term(xe)&&xe.indicator==="./2";){if(Te=xe.args[0],x.type.is_variable(Te)){w.throw_error(x.error.instantiation(y.indicator));return}else if(!x.type.is_write_option(Te)){w.throw_error(x.error.domain("write_option",Te,y.indicator));return}oe[Te.id]=Te.args[0].id==="true",xe=xe.args[1]}if(xe.indicator!=="[]/0"){x.type.is_variable(xe)?w.throw_error(x.error.instantiation(y.indicator)):w.throw_error(x.error.type("list",Z,y.indicator));return}else{oe.session=w.session;var lt=z.toString(oe);$.stream.put(lt,$.position),typeof $.position=="number"&&($.position+=lt.length),w.success(b)}}},"halt/0":function(w,b,y){w.points=[]},"halt/1":function(w,b,y){var F=y.args[0];x.type.is_variable(F)?w.throw_error(x.error.instantiation(y.indicator)):x.type.is_integer(F)?w.points=[]:w.throw_error(x.error.type("integer",F,y.indicator))},"current_prolog_flag/2":function(w,b,y){var F=y.args[0],z=y.args[1];if(!x.type.is_variable(F)&&!x.type.is_atom(F))w.throw_error(x.error.type("atom",F,y.indicator));else if(!x.type.is_variable(F)&&!x.type.is_flag(F))w.throw_error(x.error.domain("prolog_flag",F,y.indicator));else{var Z=[];for(var $ in x.flag)if(x.flag.hasOwnProperty($)){var oe=new j(",",[new j("=",[new j($),F]),new j("=",[w.get_flag($),z])]);Z.push(new Pe(b.goal.replace(oe),b.substitution,b))}w.prepend(Z)}},"set_prolog_flag/2":function(w,b,y){var F=y.args[0],z=y.args[1];x.type.is_variable(F)||x.type.is_variable(z)?w.throw_error(x.error.instantiation(y.indicator)):x.type.is_atom(F)?x.type.is_flag(F)?x.type.is_value_flag(F,z)?x.type.is_modifiable_flag(F)?(w.session.flag[F.id]=z,w.success(b)):w.throw_error(x.error.permission("modify","flag",F)):w.throw_error(x.error.domain("flag_value",new j("+",[F,z]),y.indicator)):w.throw_error(x.error.domain("prolog_flag",F,y.indicator)):w.throw_error(x.error.type("atom",F,y.indicator))}},flag:{bounded:{allowed:[new j("true"),new j("false")],value:new j("true"),changeable:!1},max_integer:{allowed:[new Re(Number.MAX_SAFE_INTEGER)],value:new Re(Number.MAX_SAFE_INTEGER),changeable:!1},min_integer:{allowed:[new Re(Number.MIN_SAFE_INTEGER)],value:new Re(Number.MIN_SAFE_INTEGER),changeable:!1},integer_rounding_function:{allowed:[new j("down"),new j("toward_zero")],value:new j("toward_zero"),changeable:!1},char_conversion:{allowed:[new j("on"),new j("off")],value:new j("on"),changeable:!0},debug:{allowed:[new j("on"),new j("off")],value:new j("off"),changeable:!0},max_arity:{allowed:[new j("unbounded")],value:new j("unbounded"),changeable:!1},unknown:{allowed:[new j("error"),new j("fail"),new j("warning")],value:new j("error"),changeable:!0},double_quotes:{allowed:[new j("chars"),new j("codes"),new j("atom")],value:new j("codes"),changeable:!0},occurs_check:{allowed:[new j("false"),new j("true")],value:new j("false"),changeable:!0},dialect:{allowed:[new j("tau")],value:new j("tau"),changeable:!1},version_data:{allowed:[new j("tau",[new Re(t.major,!1),new Re(t.minor,!1),new Re(t.patch,!1),new j(t.status)])],value:new j("tau",[new Re(t.major,!1),new Re(t.minor,!1),new Re(t.patch,!1),new j(t.status)]),changeable:!1},nodejs:{allowed:[new j("yes"),new j("no")],value:new j(typeof tc<"u"&&tc.exports?"yes":"no"),changeable:!1}},unify:function(w,b,y){y=y===void 0?!1:y;for(var F=[{left:w,right:b}],z={};F.length!==0;){var Z=F.pop();if(w=Z.left,b=Z.right,x.type.is_term(w)&&x.type.is_term(b)){if(w.indicator!==b.indicator)return null;for(var $=0;$z.value?1:0:z}else return F},operate:function(w,b){if(x.type.is_operator(b)){for(var y=x.type.is_operator(b),F=[],z,Z=!1,$=0;$w.get_flag("max_integer").value||z0?w.start+w.matches[0].length:w.start,z=y?new j("token_not_found"):new j("found",[new j(w.value.toString())]),Z=new j(".",[new j("line",[new Re(w.line+1)]),new j(".",[new j("column",[new Re(F+1)]),new j(".",[z,new j("[]",[])])])]);return new j("error",[new j("syntax_error",[new j(b)]),Z])},syntax_by_predicate:function(w,b){return new j("error",[new j("syntax_error",[new j(w)]),X(b)])}},warning:{singleton:function(w,b,y){for(var F=new j("[]"),z=w.length-1;z>=0;z--)F=new j(".",[new De(w[z]),F]);return new j("warning",[new j("singleton_variables",[F,X(b)]),new j(".",[new j("line",[new Re(y,!1)]),new j("[]")])])},failed_goal:function(w,b){return new j("warning",[new j("failed_goal",[w]),new j(".",[new j("line",[new Re(b,!1)]),new j("[]")])])}},format_variable:function(w){return"_"+w},format_answer:function(w,b,F){b instanceof ke&&(b=b.thread);var F=F||{};if(F.session=b?b.session:void 0,x.type.is_error(w))return"uncaught exception: "+w.args[0].toString();if(w===!1)return"false.";if(w===null)return"limit exceeded ;";var z=0,Z="";if(x.type.is_substitution(w)){var $=w.domain(!0);w=w.filter(function(Te,lt){return!x.type.is_variable(lt)||$.indexOf(lt.id)!==-1&&Te!==lt.id})}for(var oe in w.links)w.links.hasOwnProperty(oe)&&(z++,Z!==""&&(Z+=", "),Z+=oe.toString(F)+" = "+w.links[oe].toString(F));var xe=typeof b>"u"||b.points.length>0?" ;":".";return z===0?"true"+xe:Z+xe},flatten_error:function(w){if(!x.type.is_error(w))return null;w=w.args[0];var b={};return b.type=w.args[0].id,b.thrown=b.type==="syntax_error"?null:w.args[1].id,b.expected=null,b.found=null,b.representation=null,b.existence=null,b.existence_type=null,b.line=null,b.column=null,b.permission_operation=null,b.permission_type=null,b.evaluation_type=null,b.type==="type_error"||b.type==="domain_error"?(b.expected=w.args[0].args[0].id,b.found=w.args[0].args[1].toString()):b.type==="syntax_error"?w.args[1].indicator==="./2"?(b.expected=w.args[0].args[0].id,b.found=w.args[1].args[1].args[1].args[0],b.found=b.found.id==="token_not_found"?b.found.id:b.found.args[0].id,b.line=w.args[1].args[0].args[0].value,b.column=w.args[1].args[1].args[0].args[0].value):b.thrown=w.args[1].id:b.type==="permission_error"?(b.found=w.args[0].args[2].toString(),b.permission_operation=w.args[0].args[0].id,b.permission_type=w.args[0].args[1].id):b.type==="evaluation_error"?b.evaluation_type=w.args[0].args[0].id:b.type==="representation_error"?b.representation=w.args[0].args[0].id:b.type==="existence_error"&&(b.existence=w.args[0].args[1].toString(),b.existence_type=w.args[0].args[0].id),b},create:function(w){return new x.type.Session(w)}};typeof tc<"u"?tc.exports=x:window.pl=x})()});function hve(t,e,r){t.prepend(r.map(s=>new gl.default.type.State(e.goal.replace(s),e.substitution,e)))}function y9(t){let e=dve.get(t.session);if(e==null)throw new Error("Assertion failed: A project should have been registered for the active session");return e}function mve(t,e){dve.set(t,e),t.consult(`:- use_module(library(${gDt.id})).`)}var E9,gl,gve,J0,pDt,hDt,dve,gDt,yve=It(()=>{Ve();E9=et(AS()),gl=et(m9()),gve=et(ye("vm")),{is_atom:J0,is_variable:pDt,is_instantiated_list:hDt}=gl.default.type;dve=new WeakMap;gDt=new gl.default.type.Module("constraints",{"project_workspaces_by_descriptor/3":(t,e,r)=>{let[s,a,n]=r.args;if(!J0(s)||!J0(a)){t.throw_error(gl.default.error.instantiation(r.indicator));return}let c=q.parseIdent(s.id),f=q.makeDescriptor(c,a.id),h=y9(t).tryWorkspaceByDescriptor(f);pDt(n)&&h!==null&&hve(t,e,[new gl.default.type.Term("=",[n,new gl.default.type.Term(String(h.relativeCwd))])]),J0(n)&&h!==null&&h.relativeCwd===n.id&&t.success(e)},"workspace_field/3":(t,e,r)=>{let[s,a,n]=r.args;if(!J0(s)||!J0(a)){t.throw_error(gl.default.error.instantiation(r.indicator));return}let f=y9(t).tryWorkspaceByCwd(s.id);if(f==null)return;let p=(0,E9.default)(f.manifest.raw,a.id);typeof p>"u"||hve(t,e,[new gl.default.type.Term("=",[n,new gl.default.type.Term(typeof p=="object"?JSON.stringify(p):p)])])},"workspace_field_test/3":(t,e,r)=>{let[s,a,n]=r.args;t.prepend([new gl.default.type.State(e.goal.replace(new gl.default.type.Term("workspace_field_test",[s,a,n,new gl.default.type.Term("[]",[])])),e.substitution,e)])},"workspace_field_test/4":(t,e,r)=>{let[s,a,n,c]=r.args;if(!J0(s)||!J0(a)||!J0(n)||!hDt(c)){t.throw_error(gl.default.error.instantiation(r.indicator));return}let p=y9(t).tryWorkspaceByCwd(s.id);if(p==null)return;let h=(0,E9.default)(p.manifest.raw,a.id);if(typeof h>"u")return;let E={$$:h};for(let[S,P]of c.toJavaScript().entries())E[`$${S}`]=P;gve.default.runInNewContext(n.id,E)&&t.success(e)}},["project_workspaces_by_descriptor/3","workspace_field/3","workspace_field_test/3","workspace_field_test/4"])});var BS={};Vt(BS,{Constraints:()=>C9,DependencyType:()=>wve});function yo(t){if(t instanceof ZC.default.type.Num)return t.value;if(t instanceof ZC.default.type.Term)switch(t.indicator){case"throw/1":return yo(t.args[0]);case"error/1":return yo(t.args[0]);case"error/2":if(t.args[0]instanceof ZC.default.type.Term&&t.args[0].indicator==="syntax_error/1")return Object.assign(yo(t.args[0]),...yo(t.args[1]));{let e=yo(t.args[0]);return e.message+=` (in ${yo(t.args[1])})`,e}case"syntax_error/1":return new Yt(43,`Syntax error: ${yo(t.args[0])}`);case"existence_error/2":return new Yt(44,`Existence error: ${yo(t.args[0])} ${yo(t.args[1])} not found`);case"instantiation_error/0":return new Yt(75,"Instantiation error: an argument is variable when an instantiated argument was expected");case"line/1":return{line:yo(t.args[0])};case"column/1":return{column:yo(t.args[0])};case"found/1":return{found:yo(t.args[0])};case"./2":return[yo(t.args[0])].concat(yo(t.args[1]));case"//2":return`${yo(t.args[0])}/${yo(t.args[1])}`;default:return t.id}throw`couldn't pretty print because of unsupported node ${t}`}function Ive(t){let e;try{e=yo(t)}catch(r){throw typeof r=="string"?new Yt(42,`Unknown error: ${t} (note: ${r})`):r}return typeof e.line<"u"&&typeof e.column<"u"&&(e.message+=` at line ${e.line}, column ${e.column}`),e}function xm(t){return t.id==="null"?null:`${t.toJavaScript()}`}function dDt(t){if(t.id==="null")return null;{let e=t.toJavaScript();if(typeof e!="string")return JSON.stringify(e);try{return JSON.stringify(JSON.parse(e))}catch{return JSON.stringify(e)}}}function z0(t){return typeof t=="string"?`'${t}'`:"[]"}var Cve,ZC,wve,Eve,I9,C9,vS=It(()=>{Ve();Ve();bt();Cve=et(XBe()),ZC=et(m9());IS();yve();(0,Cve.default)(ZC.default);wve=(s=>(s.Dependencies="dependencies",s.DevDependencies="devDependencies",s.PeerDependencies="peerDependencies",s))(wve||{}),Eve=["dependencies","devDependencies","peerDependencies"];I9=class{constructor(e,r){let s=1e3*e.workspaces.length;this.session=ZC.default.create(s),mve(this.session,e),this.session.consult(":- use_module(library(lists))."),this.session.consult(r)}fetchNextAnswer(){return new Promise(e=>{this.session.answer(r=>{e(r)})})}async*makeQuery(e){let r=this.session.query(e);if(r!==!0)throw Ive(r);for(;;){let s=await this.fetchNextAnswer();if(s===null)throw new Yt(79,"Resolution limit exceeded");if(!s)break;if(s.id==="throw")throw Ive(s);yield s}}};C9=class t{constructor(e){this.source="";this.project=e;let r=e.configuration.get("constraintsPath");le.existsSync(r)&&(this.source=le.readFileSync(r,"utf8"))}static async find(e){return new t(e)}getProjectDatabase(){let e="";for(let r of Eve)e+=`dependency_type(${r}). +`;for(let r of this.project.workspacesByCwd.values()){let s=r.relativeCwd;e+=`workspace(${z0(s)}). +`,e+=`workspace_ident(${z0(s)}, ${z0(q.stringifyIdent(r.anchoredLocator))}). +`,e+=`workspace_version(${z0(s)}, ${z0(r.manifest.version)}). +`;for(let a of Eve)for(let n of r.manifest[a].values())e+=`workspace_has_dependency(${z0(s)}, ${z0(q.stringifyIdent(n))}, ${z0(n.range)}, ${a}). +`}return e+=`workspace(_) :- false. +`,e+=`workspace_ident(_, _) :- false. +`,e+=`workspace_version(_, _) :- false. +`,e+=`workspace_has_dependency(_, _, _, _) :- false. +`,e}getDeclarations(){let e="";return e+=`gen_enforced_dependency(_, _, _, _) :- false. +`,e+=`gen_enforced_field(_, _, _) :- false. +`,e}get fullSource(){return`${this.getProjectDatabase()} +${this.source} +${this.getDeclarations()}`}createSession(){return new I9(this.project,this.fullSource)}async processClassic(){let e=this.createSession();return{enforcedDependencies:await this.genEnforcedDependencies(e),enforcedFields:await this.genEnforcedFields(e)}}async process(){let{enforcedDependencies:e,enforcedFields:r}=await this.processClassic(),s=new Map;for(let{workspace:a,dependencyIdent:n,dependencyRange:c,dependencyType:f}of e){let p=ES([f,q.stringifyIdent(n)]),h=je.getMapWithDefault(s,a.cwd);je.getMapWithDefault(h,p).set(c??void 0,new Set)}for(let{workspace:a,fieldPath:n,fieldValue:c}of r){let f=ES(n),p=je.getMapWithDefault(s,a.cwd);je.getMapWithDefault(p,f).set(JSON.parse(c)??void 0,new Set)}return{manifestUpdates:s,reportedErrors:new Map}}async genEnforcedDependencies(e){let r=[];for await(let s of e.makeQuery("workspace(WorkspaceCwd), dependency_type(DependencyType), gen_enforced_dependency(WorkspaceCwd, DependencyIdent, DependencyRange, DependencyType).")){let a=K.resolve(this.project.cwd,xm(s.links.WorkspaceCwd)),n=xm(s.links.DependencyIdent),c=xm(s.links.DependencyRange),f=xm(s.links.DependencyType);if(a===null||n===null)throw new Error("Invalid rule");let p=this.project.getWorkspaceByCwd(a),h=q.parseIdent(n);r.push({workspace:p,dependencyIdent:h,dependencyRange:c,dependencyType:f})}return je.sortMap(r,[({dependencyRange:s})=>s!==null?"0":"1",({workspace:s})=>q.stringifyIdent(s.anchoredLocator),({dependencyIdent:s})=>q.stringifyIdent(s)])}async genEnforcedFields(e){let r=[];for await(let s of e.makeQuery("workspace(WorkspaceCwd), gen_enforced_field(WorkspaceCwd, FieldPath, FieldValue).")){let a=K.resolve(this.project.cwd,xm(s.links.WorkspaceCwd)),n=xm(s.links.FieldPath),c=dDt(s.links.FieldValue);if(a===null||n===null)throw new Error("Invalid rule");let f=this.project.getWorkspaceByCwd(a);r.push({workspace:f,fieldPath:n,fieldValue:c})}return je.sortMap(r,[({workspace:s})=>q.stringifyIdent(s.anchoredLocator),({fieldPath:s})=>s])}async*query(e){let r=this.createSession();for await(let s of r.makeQuery(e)){let a={};for(let[n,c]of Object.entries(s.links))n!=="_"&&(a[n]=xm(c));yield a}}}});var Qve=L(gF=>{"use strict";Object.defineProperty(gF,"__esModule",{value:!0});function US(t){let e=[...t.caches],r=e.shift();return r===void 0?kve():{get(s,a,n={miss:()=>Promise.resolve()}){return r.get(s,a,n).catch(()=>US({caches:e}).get(s,a,n))},set(s,a){return r.set(s,a).catch(()=>US({caches:e}).set(s,a))},delete(s){return r.delete(s).catch(()=>US({caches:e}).delete(s))},clear(){return r.clear().catch(()=>US({caches:e}).clear())}}}function kve(){return{get(t,e,r={miss:()=>Promise.resolve()}){return e().then(a=>Promise.all([a,r.miss(a)])).then(([a])=>a)},set(t,e){return Promise.resolve(e)},delete(t){return Promise.resolve()},clear(){return Promise.resolve()}}}gF.createFallbackableCache=US;gF.createNullCache=kve});var Rve=L((ihr,Tve)=>{Tve.exports=Qve()});var Fve=L(N9=>{"use strict";Object.defineProperty(N9,"__esModule",{value:!0});function NDt(t={serializable:!0}){let e={};return{get(r,s,a={miss:()=>Promise.resolve()}){let n=JSON.stringify(r);if(n in e)return Promise.resolve(t.serializable?JSON.parse(e[n]):e[n]);let c=s(),f=a&&a.miss||(()=>Promise.resolve());return c.then(p=>f(p)).then(()=>c)},set(r,s){return e[JSON.stringify(r)]=t.serializable?JSON.stringify(s):s,Promise.resolve(s)},delete(r){return delete e[JSON.stringify(r)],Promise.resolve()},clear(){return e={},Promise.resolve()}}}N9.createInMemoryCache=NDt});var Ove=L((ohr,Nve)=>{Nve.exports=Fve()});var Mve=L(ef=>{"use strict";Object.defineProperty(ef,"__esModule",{value:!0});function ODt(t,e,r){let s={"x-algolia-api-key":r,"x-algolia-application-id":e};return{headers(){return t===O9.WithinHeaders?s:{}},queryParameters(){return t===O9.WithinQueryParameters?s:{}}}}function LDt(t){let e=0,r=()=>(e++,new Promise(s=>{setTimeout(()=>{s(t(r))},Math.min(100*e,1e3))}));return t(r)}function Lve(t,e=(r,s)=>Promise.resolve()){return Object.assign(t,{wait(r){return Lve(t.then(s=>Promise.all([e(s,r),s])).then(s=>s[1]))}})}function MDt(t){let e=t.length-1;for(e;e>0;e--){let r=Math.floor(Math.random()*(e+1)),s=t[e];t[e]=t[r],t[r]=s}return t}function _Dt(t,e){return e&&Object.keys(e).forEach(r=>{t[r]=e[r](t)}),t}function UDt(t,...e){let r=0;return t.replace(/%s/g,()=>encodeURIComponent(e[r++]))}var HDt="4.22.1",jDt=t=>()=>t.transporter.requester.destroy(),O9={WithinQueryParameters:0,WithinHeaders:1};ef.AuthMode=O9;ef.addMethods=_Dt;ef.createAuth=ODt;ef.createRetryablePromise=LDt;ef.createWaitablePromise=Lve;ef.destroy=jDt;ef.encode=UDt;ef.shuffle=MDt;ef.version=HDt});var HS=L((lhr,_ve)=>{_ve.exports=Mve()});var Uve=L(L9=>{"use strict";Object.defineProperty(L9,"__esModule",{value:!0});var qDt={Delete:"DELETE",Get:"GET",Post:"POST",Put:"PUT"};L9.MethodEnum=qDt});var jS=L((uhr,Hve)=>{Hve.exports=Uve()});var rSe=L(Yi=>{"use strict";Object.defineProperty(Yi,"__esModule",{value:!0});var qve=jS();function M9(t,e){let r=t||{},s=r.data||{};return Object.keys(r).forEach(a=>{["timeout","headers","queryParameters","data","cacheable"].indexOf(a)===-1&&(s[a]=r[a])}),{data:Object.entries(s).length>0?s:void 0,timeout:r.timeout||e,headers:r.headers||{},queryParameters:r.queryParameters||{},cacheable:r.cacheable}}var qS={Read:1,Write:2,Any:3},aw={Up:1,Down:2,Timeouted:3},Gve=2*60*1e3;function U9(t,e=aw.Up){return{...t,status:e,lastUpdate:Date.now()}}function Wve(t){return t.status===aw.Up||Date.now()-t.lastUpdate>Gve}function Yve(t){return t.status===aw.Timeouted&&Date.now()-t.lastUpdate<=Gve}function H9(t){return typeof t=="string"?{protocol:"https",url:t,accept:qS.Any}:{protocol:t.protocol||"https",url:t.url,accept:t.accept||qS.Any}}function GDt(t,e){return Promise.all(e.map(r=>t.get(r,()=>Promise.resolve(U9(r))))).then(r=>{let s=r.filter(f=>Wve(f)),a=r.filter(f=>Yve(f)),n=[...s,...a],c=n.length>0?n.map(f=>H9(f)):e;return{getTimeout(f,p){return(a.length===0&&f===0?1:a.length+3+f)*p},statelessHosts:c}})}var WDt=({isTimedOut:t,status:e})=>!t&&~~e===0,YDt=t=>{let e=t.status;return t.isTimedOut||WDt(t)||~~(e/100)!==2&&~~(e/100)!==4},VDt=({status:t})=>~~(t/100)===2,KDt=(t,e)=>YDt(t)?e.onRetry(t):VDt(t)?e.onSuccess(t):e.onFail(t);function jve(t,e,r,s){let a=[],n=Zve(r,s),c=Xve(t,s),f=r.method,p=r.method!==qve.MethodEnum.Get?{}:{...r.data,...s.data},h={"x-algolia-agent":t.userAgent.value,...t.queryParameters,...p,...s.queryParameters},E=0,C=(S,P)=>{let I=S.pop();if(I===void 0)throw tSe(_9(a));let R={data:n,headers:c,method:f,url:Jve(I,r.path,h),connectTimeout:P(E,t.timeouts.connect),responseTimeout:P(E,s.timeout)},N=W=>{let te={request:R,response:W,host:I,triesLeft:S.length};return a.push(te),te},U={onSuccess:W=>Vve(W),onRetry(W){let te=N(W);return W.isTimedOut&&E++,Promise.all([t.logger.info("Retryable failure",j9(te)),t.hostsCache.set(I,U9(I,W.isTimedOut?aw.Timeouted:aw.Down))]).then(()=>C(S,P))},onFail(W){throw N(W),Kve(W,_9(a))}};return t.requester.send(R).then(W=>KDt(W,U))};return GDt(t.hostsCache,e).then(S=>C([...S.statelessHosts].reverse(),S.getTimeout))}function JDt(t){let{hostsCache:e,logger:r,requester:s,requestsCache:a,responsesCache:n,timeouts:c,userAgent:f,hosts:p,queryParameters:h,headers:E}=t,C={hostsCache:e,logger:r,requester:s,requestsCache:a,responsesCache:n,timeouts:c,userAgent:f,headers:E,queryParameters:h,hosts:p.map(S=>H9(S)),read(S,P){let I=M9(P,C.timeouts.read),R=()=>jve(C,C.hosts.filter(W=>(W.accept&qS.Read)!==0),S,I);if((I.cacheable!==void 0?I.cacheable:S.cacheable)!==!0)return R();let U={request:S,mappedRequestOptions:I,transporter:{queryParameters:C.queryParameters,headers:C.headers}};return C.responsesCache.get(U,()=>C.requestsCache.get(U,()=>C.requestsCache.set(U,R()).then(W=>Promise.all([C.requestsCache.delete(U),W]),W=>Promise.all([C.requestsCache.delete(U),Promise.reject(W)])).then(([W,te])=>te)),{miss:W=>C.responsesCache.set(U,W)})},write(S,P){return jve(C,C.hosts.filter(I=>(I.accept&qS.Write)!==0),S,M9(P,C.timeouts.write))}};return C}function zDt(t){let e={value:`Algolia for JavaScript (${t})`,add(r){let s=`; ${r.segment}${r.version!==void 0?` (${r.version})`:""}`;return e.value.indexOf(s)===-1&&(e.value=`${e.value}${s}`),e}};return e}function Vve(t){try{return JSON.parse(t.content)}catch(e){throw eSe(e.message,t)}}function Kve({content:t,status:e},r){let s=t;try{s=JSON.parse(t).message}catch{}return $ve(s,e,r)}function ZDt(t,...e){let r=0;return t.replace(/%s/g,()=>encodeURIComponent(e[r++]))}function Jve(t,e,r){let s=zve(r),a=`${t.protocol}://${t.url}/${e.charAt(0)==="/"?e.substr(1):e}`;return s.length&&(a+=`?${s}`),a}function zve(t){let e=r=>Object.prototype.toString.call(r)==="[object Object]"||Object.prototype.toString.call(r)==="[object Array]";return Object.keys(t).map(r=>ZDt("%s=%s",r,e(t[r])?JSON.stringify(t[r]):t[r])).join("&")}function Zve(t,e){if(t.method===qve.MethodEnum.Get||t.data===void 0&&e.data===void 0)return;let r=Array.isArray(t.data)?t.data:{...t.data,...e.data};return JSON.stringify(r)}function Xve(t,e){let r={...t.headers,...e.headers},s={};return Object.keys(r).forEach(a=>{let n=r[a];s[a.toLowerCase()]=n}),s}function _9(t){return t.map(e=>j9(e))}function j9(t){let e=t.request.headers["x-algolia-api-key"]?{"x-algolia-api-key":"*****"}:{};return{...t,request:{...t.request,headers:{...t.request.headers,...e}}}}function $ve(t,e,r){return{name:"ApiError",message:t,status:e,transporterStackTrace:r}}function eSe(t,e){return{name:"DeserializationError",message:t,response:e}}function tSe(t){return{name:"RetryError",message:"Unreachable hosts - your application id may be incorrect. If the error persists, contact support@algolia.com.",transporterStackTrace:t}}Yi.CallEnum=qS;Yi.HostStatusEnum=aw;Yi.createApiError=$ve;Yi.createDeserializationError=eSe;Yi.createMappedRequestOptions=M9;Yi.createRetryError=tSe;Yi.createStatefulHost=U9;Yi.createStatelessHost=H9;Yi.createTransporter=JDt;Yi.createUserAgent=zDt;Yi.deserializeFailure=Kve;Yi.deserializeSuccess=Vve;Yi.isStatefulHostTimeouted=Yve;Yi.isStatefulHostUp=Wve;Yi.serializeData=Zve;Yi.serializeHeaders=Xve;Yi.serializeQueryParameters=zve;Yi.serializeUrl=Jve;Yi.stackFrameWithoutCredentials=j9;Yi.stackTraceWithoutCredentials=_9});var GS=L((Ahr,nSe)=>{nSe.exports=rSe()});var iSe=L(X0=>{"use strict";Object.defineProperty(X0,"__esModule",{value:!0});var lw=HS(),XDt=GS(),WS=jS(),$Dt=t=>{let e=t.region||"us",r=lw.createAuth(lw.AuthMode.WithinHeaders,t.appId,t.apiKey),s=XDt.createTransporter({hosts:[{url:`analytics.${e}.algolia.com`}],...t,headers:{...r.headers(),"content-type":"application/json",...t.headers},queryParameters:{...r.queryParameters(),...t.queryParameters}}),a=t.appId;return lw.addMethods({appId:a,transporter:s},t.methods)},ebt=t=>(e,r)=>t.transporter.write({method:WS.MethodEnum.Post,path:"2/abtests",data:e},r),tbt=t=>(e,r)=>t.transporter.write({method:WS.MethodEnum.Delete,path:lw.encode("2/abtests/%s",e)},r),rbt=t=>(e,r)=>t.transporter.read({method:WS.MethodEnum.Get,path:lw.encode("2/abtests/%s",e)},r),nbt=t=>e=>t.transporter.read({method:WS.MethodEnum.Get,path:"2/abtests"},e),ibt=t=>(e,r)=>t.transporter.write({method:WS.MethodEnum.Post,path:lw.encode("2/abtests/%s/stop",e)},r);X0.addABTest=ebt;X0.createAnalyticsClient=$Dt;X0.deleteABTest=tbt;X0.getABTest=rbt;X0.getABTests=nbt;X0.stopABTest=ibt});var oSe=L((hhr,sSe)=>{sSe.exports=iSe()});var lSe=L(YS=>{"use strict";Object.defineProperty(YS,"__esModule",{value:!0});var q9=HS(),sbt=GS(),aSe=jS(),obt=t=>{let e=t.region||"us",r=q9.createAuth(q9.AuthMode.WithinHeaders,t.appId,t.apiKey),s=sbt.createTransporter({hosts:[{url:`personalization.${e}.algolia.com`}],...t,headers:{...r.headers(),"content-type":"application/json",...t.headers},queryParameters:{...r.queryParameters(),...t.queryParameters}});return q9.addMethods({appId:t.appId,transporter:s},t.methods)},abt=t=>e=>t.transporter.read({method:aSe.MethodEnum.Get,path:"1/strategies/personalization"},e),lbt=t=>(e,r)=>t.transporter.write({method:aSe.MethodEnum.Post,path:"1/strategies/personalization",data:e},r);YS.createPersonalizationClient=obt;YS.getPersonalizationStrategy=abt;YS.setPersonalizationStrategy=lbt});var uSe=L((dhr,cSe)=>{cSe.exports=lSe()});var vSe=L(Ft=>{"use strict";Object.defineProperty(Ft,"__esModule",{value:!0});var Kt=HS(),dl=GS(),br=jS(),cbt=ye("crypto");function dF(t){let e=r=>t.request(r).then(s=>{if(t.batch!==void 0&&t.batch(s.hits),!t.shouldStop(s))return s.cursor?e({cursor:s.cursor}):e({page:(r.page||0)+1})});return e({})}var ubt=t=>{let e=t.appId,r=Kt.createAuth(t.authMode!==void 0?t.authMode:Kt.AuthMode.WithinHeaders,e,t.apiKey),s=dl.createTransporter({hosts:[{url:`${e}-dsn.algolia.net`,accept:dl.CallEnum.Read},{url:`${e}.algolia.net`,accept:dl.CallEnum.Write}].concat(Kt.shuffle([{url:`${e}-1.algolianet.com`},{url:`${e}-2.algolianet.com`},{url:`${e}-3.algolianet.com`}])),...t,headers:{...r.headers(),"content-type":"application/x-www-form-urlencoded",...t.headers},queryParameters:{...r.queryParameters(),...t.queryParameters}}),a={transporter:s,appId:e,addAlgoliaAgent(n,c){s.userAgent.add({segment:n,version:c})},clearCache(){return Promise.all([s.requestsCache.clear(),s.responsesCache.clear()]).then(()=>{})}};return Kt.addMethods(a,t.methods)};function fSe(){return{name:"MissingObjectIDError",message:"All objects must have an unique objectID (like a primary key) to be valid. Algolia is also able to generate objectIDs automatically but *it's not recommended*. To do it, use the `{'autoGenerateObjectIDIfNotExist': true}` option."}}function ASe(){return{name:"ObjectNotFoundError",message:"Object not found."}}function pSe(){return{name:"ValidUntilNotFoundError",message:"ValidUntil not found in given secured api key."}}var fbt=t=>(e,r)=>{let{queryParameters:s,...a}=r||{},n={acl:e,...s!==void 0?{queryParameters:s}:{}},c=(f,p)=>Kt.createRetryablePromise(h=>VS(t)(f.key,p).catch(E=>{if(E.status!==404)throw E;return h()}));return Kt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Post,path:"1/keys",data:n},a),c)},Abt=t=>(e,r,s)=>{let a=dl.createMappedRequestOptions(s);return a.queryParameters["X-Algolia-User-ID"]=e,t.transporter.write({method:br.MethodEnum.Post,path:"1/clusters/mapping",data:{cluster:r}},a)},pbt=t=>(e,r,s)=>t.transporter.write({method:br.MethodEnum.Post,path:"1/clusters/mapping/batch",data:{users:e,cluster:r}},s),hbt=t=>(e,r)=>Kt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Post,path:Kt.encode("/1/dictionaries/%s/batch",e),data:{clearExistingDictionaryEntries:!0,requests:{action:"addEntry",body:[]}}},r),(s,a)=>cw(t)(s.taskID,a)),mF=t=>(e,r,s)=>{let a=(n,c)=>KS(t)(e,{methods:{waitTask:gs}}).waitTask(n.taskID,c);return Kt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Post,path:Kt.encode("1/indexes/%s/operation",e),data:{operation:"copy",destination:r}},s),a)},gbt=t=>(e,r,s)=>mF(t)(e,r,{...s,scope:[EF.Rules]}),dbt=t=>(e,r,s)=>mF(t)(e,r,{...s,scope:[EF.Settings]}),mbt=t=>(e,r,s)=>mF(t)(e,r,{...s,scope:[EF.Synonyms]}),ybt=t=>(e,r)=>e.method===br.MethodEnum.Get?t.transporter.read(e,r):t.transporter.write(e,r),Ebt=t=>(e,r)=>{let s=(a,n)=>Kt.createRetryablePromise(c=>VS(t)(e,n).then(c).catch(f=>{if(f.status!==404)throw f}));return Kt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Delete,path:Kt.encode("1/keys/%s",e)},r),s)},Ibt=t=>(e,r,s)=>{let a=r.map(n=>({action:"deleteEntry",body:{objectID:n}}));return Kt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Post,path:Kt.encode("/1/dictionaries/%s/batch",e),data:{clearExistingDictionaryEntries:!1,requests:a}},s),(n,c)=>cw(t)(n.taskID,c))},Cbt=()=>(t,e)=>{let r=dl.serializeQueryParameters(e),s=cbt.createHmac("sha256",t).update(r).digest("hex");return Buffer.from(s+r).toString("base64")},VS=t=>(e,r)=>t.transporter.read({method:br.MethodEnum.Get,path:Kt.encode("1/keys/%s",e)},r),hSe=t=>(e,r)=>t.transporter.read({method:br.MethodEnum.Get,path:Kt.encode("1/task/%s",e.toString())},r),wbt=t=>e=>t.transporter.read({method:br.MethodEnum.Get,path:"/1/dictionaries/*/settings"},e),Bbt=t=>e=>t.transporter.read({method:br.MethodEnum.Get,path:"1/logs"},e),vbt=()=>t=>{let e=Buffer.from(t,"base64").toString("ascii"),r=/validUntil=(\d+)/,s=e.match(r);if(s===null)throw pSe();return parseInt(s[1],10)-Math.round(new Date().getTime()/1e3)},Sbt=t=>e=>t.transporter.read({method:br.MethodEnum.Get,path:"1/clusters/mapping/top"},e),Dbt=t=>(e,r)=>t.transporter.read({method:br.MethodEnum.Get,path:Kt.encode("1/clusters/mapping/%s",e)},r),bbt=t=>e=>{let{retrieveMappings:r,...s}=e||{};return r===!0&&(s.getClusters=!0),t.transporter.read({method:br.MethodEnum.Get,path:"1/clusters/mapping/pending"},s)},KS=t=>(e,r={})=>{let s={transporter:t.transporter,appId:t.appId,indexName:e};return Kt.addMethods(s,r.methods)},Pbt=t=>e=>t.transporter.read({method:br.MethodEnum.Get,path:"1/keys"},e),xbt=t=>e=>t.transporter.read({method:br.MethodEnum.Get,path:"1/clusters"},e),kbt=t=>e=>t.transporter.read({method:br.MethodEnum.Get,path:"1/indexes"},e),Qbt=t=>e=>t.transporter.read({method:br.MethodEnum.Get,path:"1/clusters/mapping"},e),Tbt=t=>(e,r,s)=>{let a=(n,c)=>KS(t)(e,{methods:{waitTask:gs}}).waitTask(n.taskID,c);return Kt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Post,path:Kt.encode("1/indexes/%s/operation",e),data:{operation:"move",destination:r}},s),a)},Rbt=t=>(e,r)=>{let s=(a,n)=>Promise.all(Object.keys(a.taskID).map(c=>KS(t)(c,{methods:{waitTask:gs}}).waitTask(a.taskID[c],n)));return Kt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Post,path:"1/indexes/*/batch",data:{requests:e}},r),s)},Fbt=t=>(e,r)=>t.transporter.read({method:br.MethodEnum.Post,path:"1/indexes/*/objects",data:{requests:e}},r),Nbt=t=>(e,r)=>{let s=e.map(a=>({...a,params:dl.serializeQueryParameters(a.params||{})}));return t.transporter.read({method:br.MethodEnum.Post,path:"1/indexes/*/queries",data:{requests:s},cacheable:!0},r)},Obt=t=>(e,r)=>Promise.all(e.map(s=>{let{facetName:a,facetQuery:n,...c}=s.params;return KS(t)(s.indexName,{methods:{searchForFacetValues:CSe}}).searchForFacetValues(a,n,{...r,...c})})),Lbt=t=>(e,r)=>{let s=dl.createMappedRequestOptions(r);return s.queryParameters["X-Algolia-User-ID"]=e,t.transporter.write({method:br.MethodEnum.Delete,path:"1/clusters/mapping"},s)},Mbt=t=>(e,r,s)=>{let a=r.map(n=>({action:"addEntry",body:n}));return Kt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Post,path:Kt.encode("/1/dictionaries/%s/batch",e),data:{clearExistingDictionaryEntries:!0,requests:a}},s),(n,c)=>cw(t)(n.taskID,c))},_bt=t=>(e,r)=>{let s=(a,n)=>Kt.createRetryablePromise(c=>VS(t)(e,n).catch(f=>{if(f.status!==404)throw f;return c()}));return Kt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Post,path:Kt.encode("1/keys/%s/restore",e)},r),s)},Ubt=t=>(e,r,s)=>{let a=r.map(n=>({action:"addEntry",body:n}));return Kt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Post,path:Kt.encode("/1/dictionaries/%s/batch",e),data:{clearExistingDictionaryEntries:!1,requests:a}},s),(n,c)=>cw(t)(n.taskID,c))},Hbt=t=>(e,r,s)=>t.transporter.read({method:br.MethodEnum.Post,path:Kt.encode("/1/dictionaries/%s/search",e),data:{query:r},cacheable:!0},s),jbt=t=>(e,r)=>t.transporter.read({method:br.MethodEnum.Post,path:"1/clusters/mapping/search",data:{query:e}},r),qbt=t=>(e,r)=>Kt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Put,path:"/1/dictionaries/*/settings",data:e},r),(s,a)=>cw(t)(s.taskID,a)),Gbt=t=>(e,r)=>{let s=Object.assign({},r),{queryParameters:a,...n}=r||{},c=a?{queryParameters:a}:{},f=["acl","indexes","referers","restrictSources","queryParameters","description","maxQueriesPerIPPerHour","maxHitsPerQuery"],p=E=>Object.keys(s).filter(C=>f.indexOf(C)!==-1).every(C=>{if(Array.isArray(E[C])&&Array.isArray(s[C])){let S=E[C];return S.length===s[C].length&&S.every((P,I)=>P===s[C][I])}else return E[C]===s[C]}),h=(E,C)=>Kt.createRetryablePromise(S=>VS(t)(e,C).then(P=>p(P)?Promise.resolve():S()));return Kt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Put,path:Kt.encode("1/keys/%s",e),data:c},n),h)},cw=t=>(e,r)=>Kt.createRetryablePromise(s=>hSe(t)(e,r).then(a=>a.status!=="published"?s():void 0)),gSe=t=>(e,r)=>{let s=(a,n)=>gs(t)(a.taskID,n);return Kt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Post,path:Kt.encode("1/indexes/%s/batch",t.indexName),data:{requests:e}},r),s)},Wbt=t=>e=>dF({shouldStop:r=>r.cursor===void 0,...e,request:r=>t.transporter.read({method:br.MethodEnum.Post,path:Kt.encode("1/indexes/%s/browse",t.indexName),data:r},e)}),Ybt=t=>e=>{let r={hitsPerPage:1e3,...e};return dF({shouldStop:s=>s.hits.length({...a,hits:a.hits.map(n=>(delete n._highlightResult,n))}))}})},Vbt=t=>e=>{let r={hitsPerPage:1e3,...e};return dF({shouldStop:s=>s.hits.length({...a,hits:a.hits.map(n=>(delete n._highlightResult,n))}))}})},yF=t=>(e,r,s)=>{let{batchSize:a,...n}=s||{},c={taskIDs:[],objectIDs:[]},f=(p=0)=>{let h=[],E;for(E=p;E({action:r,body:C})),n).then(C=>(c.objectIDs=c.objectIDs.concat(C.objectIDs),c.taskIDs.push(C.taskID),E++,f(E)))};return Kt.createWaitablePromise(f(),(p,h)=>Promise.all(p.taskIDs.map(E=>gs(t)(E,h))))},Kbt=t=>e=>Kt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Post,path:Kt.encode("1/indexes/%s/clear",t.indexName)},e),(r,s)=>gs(t)(r.taskID,s)),Jbt=t=>e=>{let{forwardToReplicas:r,...s}=e||{},a=dl.createMappedRequestOptions(s);return r&&(a.queryParameters.forwardToReplicas=1),Kt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Post,path:Kt.encode("1/indexes/%s/rules/clear",t.indexName)},a),(n,c)=>gs(t)(n.taskID,c))},zbt=t=>e=>{let{forwardToReplicas:r,...s}=e||{},a=dl.createMappedRequestOptions(s);return r&&(a.queryParameters.forwardToReplicas=1),Kt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Post,path:Kt.encode("1/indexes/%s/synonyms/clear",t.indexName)},a),(n,c)=>gs(t)(n.taskID,c))},Zbt=t=>(e,r)=>Kt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Post,path:Kt.encode("1/indexes/%s/deleteByQuery",t.indexName),data:e},r),(s,a)=>gs(t)(s.taskID,a)),Xbt=t=>e=>Kt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Delete,path:Kt.encode("1/indexes/%s",t.indexName)},e),(r,s)=>gs(t)(r.taskID,s)),$bt=t=>(e,r)=>Kt.createWaitablePromise(dSe(t)([e],r).then(s=>({taskID:s.taskIDs[0]})),(s,a)=>gs(t)(s.taskID,a)),dSe=t=>(e,r)=>{let s=e.map(a=>({objectID:a}));return yF(t)(s,Qm.DeleteObject,r)},ePt=t=>(e,r)=>{let{forwardToReplicas:s,...a}=r||{},n=dl.createMappedRequestOptions(a);return s&&(n.queryParameters.forwardToReplicas=1),Kt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Delete,path:Kt.encode("1/indexes/%s/rules/%s",t.indexName,e)},n),(c,f)=>gs(t)(c.taskID,f))},tPt=t=>(e,r)=>{let{forwardToReplicas:s,...a}=r||{},n=dl.createMappedRequestOptions(a);return s&&(n.queryParameters.forwardToReplicas=1),Kt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Delete,path:Kt.encode("1/indexes/%s/synonyms/%s",t.indexName,e)},n),(c,f)=>gs(t)(c.taskID,f))},rPt=t=>e=>mSe(t)(e).then(()=>!0).catch(r=>{if(r.status!==404)throw r;return!1}),nPt=t=>(e,r,s)=>t.transporter.read({method:br.MethodEnum.Post,path:Kt.encode("1/answers/%s/prediction",t.indexName),data:{query:e,queryLanguages:r},cacheable:!0},s),iPt=t=>(e,r)=>{let{query:s,paginate:a,...n}=r||{},c=0,f=()=>ISe(t)(s||"",{...n,page:c}).then(p=>{for(let[h,E]of Object.entries(p.hits))if(e(E))return{object:E,position:parseInt(h,10),page:c};if(c++,a===!1||c>=p.nbPages)throw ASe();return f()});return f()},sPt=t=>(e,r)=>t.transporter.read({method:br.MethodEnum.Get,path:Kt.encode("1/indexes/%s/%s",t.indexName,e)},r),oPt=()=>(t,e)=>{for(let[r,s]of Object.entries(t.hits))if(s.objectID===e)return parseInt(r,10);return-1},aPt=t=>(e,r)=>{let{attributesToRetrieve:s,...a}=r||{},n=e.map(c=>({indexName:t.indexName,objectID:c,...s?{attributesToRetrieve:s}:{}}));return t.transporter.read({method:br.MethodEnum.Post,path:"1/indexes/*/objects",data:{requests:n}},a)},lPt=t=>(e,r)=>t.transporter.read({method:br.MethodEnum.Get,path:Kt.encode("1/indexes/%s/rules/%s",t.indexName,e)},r),mSe=t=>e=>t.transporter.read({method:br.MethodEnum.Get,path:Kt.encode("1/indexes/%s/settings",t.indexName),data:{getVersion:2}},e),cPt=t=>(e,r)=>t.transporter.read({method:br.MethodEnum.Get,path:Kt.encode("1/indexes/%s/synonyms/%s",t.indexName,e)},r),ySe=t=>(e,r)=>t.transporter.read({method:br.MethodEnum.Get,path:Kt.encode("1/indexes/%s/task/%s",t.indexName,e.toString())},r),uPt=t=>(e,r)=>Kt.createWaitablePromise(ESe(t)([e],r).then(s=>({objectID:s.objectIDs[0],taskID:s.taskIDs[0]})),(s,a)=>gs(t)(s.taskID,a)),ESe=t=>(e,r)=>{let{createIfNotExists:s,...a}=r||{},n=s?Qm.PartialUpdateObject:Qm.PartialUpdateObjectNoCreate;return yF(t)(e,n,a)},fPt=t=>(e,r)=>{let{safe:s,autoGenerateObjectIDIfNotExist:a,batchSize:n,...c}=r||{},f=(I,R,N,U)=>Kt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Post,path:Kt.encode("1/indexes/%s/operation",I),data:{operation:N,destination:R}},U),(W,te)=>gs(t)(W.taskID,te)),p=Math.random().toString(36).substring(7),h=`${t.indexName}_tmp_${p}`,E=G9({appId:t.appId,transporter:t.transporter,indexName:h}),C=[],S=f(t.indexName,h,"copy",{...c,scope:["settings","synonyms","rules"]});C.push(S);let P=(s?S.wait(c):S).then(()=>{let I=E(e,{...c,autoGenerateObjectIDIfNotExist:a,batchSize:n});return C.push(I),s?I.wait(c):I}).then(()=>{let I=f(h,t.indexName,"move",c);return C.push(I),s?I.wait(c):I}).then(()=>Promise.all(C)).then(([I,R,N])=>({objectIDs:R.objectIDs,taskIDs:[I.taskID,...R.taskIDs,N.taskID]}));return Kt.createWaitablePromise(P,(I,R)=>Promise.all(C.map(N=>N.wait(R))))},APt=t=>(e,r)=>W9(t)(e,{...r,clearExistingRules:!0}),pPt=t=>(e,r)=>Y9(t)(e,{...r,clearExistingSynonyms:!0}),hPt=t=>(e,r)=>Kt.createWaitablePromise(G9(t)([e],r).then(s=>({objectID:s.objectIDs[0],taskID:s.taskIDs[0]})),(s,a)=>gs(t)(s.taskID,a)),G9=t=>(e,r)=>{let{autoGenerateObjectIDIfNotExist:s,...a}=r||{},n=s?Qm.AddObject:Qm.UpdateObject;if(n===Qm.UpdateObject){for(let c of e)if(c.objectID===void 0)return Kt.createWaitablePromise(Promise.reject(fSe()))}return yF(t)(e,n,a)},gPt=t=>(e,r)=>W9(t)([e],r),W9=t=>(e,r)=>{let{forwardToReplicas:s,clearExistingRules:a,...n}=r||{},c=dl.createMappedRequestOptions(n);return s&&(c.queryParameters.forwardToReplicas=1),a&&(c.queryParameters.clearExistingRules=1),Kt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Post,path:Kt.encode("1/indexes/%s/rules/batch",t.indexName),data:e},c),(f,p)=>gs(t)(f.taskID,p))},dPt=t=>(e,r)=>Y9(t)([e],r),Y9=t=>(e,r)=>{let{forwardToReplicas:s,clearExistingSynonyms:a,replaceExistingSynonyms:n,...c}=r||{},f=dl.createMappedRequestOptions(c);return s&&(f.queryParameters.forwardToReplicas=1),(n||a)&&(f.queryParameters.replaceExistingSynonyms=1),Kt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Post,path:Kt.encode("1/indexes/%s/synonyms/batch",t.indexName),data:e},f),(p,h)=>gs(t)(p.taskID,h))},ISe=t=>(e,r)=>t.transporter.read({method:br.MethodEnum.Post,path:Kt.encode("1/indexes/%s/query",t.indexName),data:{query:e},cacheable:!0},r),CSe=t=>(e,r,s)=>t.transporter.read({method:br.MethodEnum.Post,path:Kt.encode("1/indexes/%s/facets/%s/query",t.indexName,e),data:{facetQuery:r},cacheable:!0},s),wSe=t=>(e,r)=>t.transporter.read({method:br.MethodEnum.Post,path:Kt.encode("1/indexes/%s/rules/search",t.indexName),data:{query:e}},r),BSe=t=>(e,r)=>t.transporter.read({method:br.MethodEnum.Post,path:Kt.encode("1/indexes/%s/synonyms/search",t.indexName),data:{query:e}},r),mPt=t=>(e,r)=>{let{forwardToReplicas:s,...a}=r||{},n=dl.createMappedRequestOptions(a);return s&&(n.queryParameters.forwardToReplicas=1),Kt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Put,path:Kt.encode("1/indexes/%s/settings",t.indexName),data:e},n),(c,f)=>gs(t)(c.taskID,f))},gs=t=>(e,r)=>Kt.createRetryablePromise(s=>ySe(t)(e,r).then(a=>a.status!=="published"?s():void 0)),yPt={AddObject:"addObject",Analytics:"analytics",Browser:"browse",DeleteIndex:"deleteIndex",DeleteObject:"deleteObject",EditSettings:"editSettings",Inference:"inference",ListIndexes:"listIndexes",Logs:"logs",Personalization:"personalization",Recommendation:"recommendation",Search:"search",SeeUnretrievableAttributes:"seeUnretrievableAttributes",Settings:"settings",Usage:"usage"},Qm={AddObject:"addObject",UpdateObject:"updateObject",PartialUpdateObject:"partialUpdateObject",PartialUpdateObjectNoCreate:"partialUpdateObjectNoCreate",DeleteObject:"deleteObject",DeleteIndex:"delete",ClearIndex:"clear"},EF={Settings:"settings",Synonyms:"synonyms",Rules:"rules"},EPt={None:"none",StopIfEnoughMatches:"stopIfEnoughMatches"},IPt={Synonym:"synonym",OneWaySynonym:"oneWaySynonym",AltCorrection1:"altCorrection1",AltCorrection2:"altCorrection2",Placeholder:"placeholder"};Ft.ApiKeyACLEnum=yPt;Ft.BatchActionEnum=Qm;Ft.ScopeEnum=EF;Ft.StrategyEnum=EPt;Ft.SynonymEnum=IPt;Ft.addApiKey=fbt;Ft.assignUserID=Abt;Ft.assignUserIDs=pbt;Ft.batch=gSe;Ft.browseObjects=Wbt;Ft.browseRules=Ybt;Ft.browseSynonyms=Vbt;Ft.chunkedBatch=yF;Ft.clearDictionaryEntries=hbt;Ft.clearObjects=Kbt;Ft.clearRules=Jbt;Ft.clearSynonyms=zbt;Ft.copyIndex=mF;Ft.copyRules=gbt;Ft.copySettings=dbt;Ft.copySynonyms=mbt;Ft.createBrowsablePromise=dF;Ft.createMissingObjectIDError=fSe;Ft.createObjectNotFoundError=ASe;Ft.createSearchClient=ubt;Ft.createValidUntilNotFoundError=pSe;Ft.customRequest=ybt;Ft.deleteApiKey=Ebt;Ft.deleteBy=Zbt;Ft.deleteDictionaryEntries=Ibt;Ft.deleteIndex=Xbt;Ft.deleteObject=$bt;Ft.deleteObjects=dSe;Ft.deleteRule=ePt;Ft.deleteSynonym=tPt;Ft.exists=rPt;Ft.findAnswers=nPt;Ft.findObject=iPt;Ft.generateSecuredApiKey=Cbt;Ft.getApiKey=VS;Ft.getAppTask=hSe;Ft.getDictionarySettings=wbt;Ft.getLogs=Bbt;Ft.getObject=sPt;Ft.getObjectPosition=oPt;Ft.getObjects=aPt;Ft.getRule=lPt;Ft.getSecuredApiKeyRemainingValidity=vbt;Ft.getSettings=mSe;Ft.getSynonym=cPt;Ft.getTask=ySe;Ft.getTopUserIDs=Sbt;Ft.getUserID=Dbt;Ft.hasPendingMappings=bbt;Ft.initIndex=KS;Ft.listApiKeys=Pbt;Ft.listClusters=xbt;Ft.listIndices=kbt;Ft.listUserIDs=Qbt;Ft.moveIndex=Tbt;Ft.multipleBatch=Rbt;Ft.multipleGetObjects=Fbt;Ft.multipleQueries=Nbt;Ft.multipleSearchForFacetValues=Obt;Ft.partialUpdateObject=uPt;Ft.partialUpdateObjects=ESe;Ft.removeUserID=Lbt;Ft.replaceAllObjects=fPt;Ft.replaceAllRules=APt;Ft.replaceAllSynonyms=pPt;Ft.replaceDictionaryEntries=Mbt;Ft.restoreApiKey=_bt;Ft.saveDictionaryEntries=Ubt;Ft.saveObject=hPt;Ft.saveObjects=G9;Ft.saveRule=gPt;Ft.saveRules=W9;Ft.saveSynonym=dPt;Ft.saveSynonyms=Y9;Ft.search=ISe;Ft.searchDictionaryEntries=Hbt;Ft.searchForFacetValues=CSe;Ft.searchRules=wSe;Ft.searchSynonyms=BSe;Ft.searchUserIDs=jbt;Ft.setDictionarySettings=qbt;Ft.setSettings=mPt;Ft.updateApiKey=Gbt;Ft.waitAppTask=cw;Ft.waitTask=gs});var DSe=L((yhr,SSe)=>{SSe.exports=vSe()});var bSe=L(IF=>{"use strict";Object.defineProperty(IF,"__esModule",{value:!0});function CPt(){return{debug(t,e){return Promise.resolve()},info(t,e){return Promise.resolve()},error(t,e){return Promise.resolve()}}}var wPt={Debug:1,Info:2,Error:3};IF.LogLevelEnum=wPt;IF.createNullLogger=CPt});var xSe=L((Ihr,PSe)=>{PSe.exports=bSe()});var RSe=L(V9=>{"use strict";Object.defineProperty(V9,"__esModule",{value:!0});var kSe=ye("http"),QSe=ye("https"),BPt=ye("url"),TSe={keepAlive:!0},vPt=new kSe.Agent(TSe),SPt=new QSe.Agent(TSe);function DPt({agent:t,httpAgent:e,httpsAgent:r,requesterOptions:s={}}={}){let a=e||t||vPt,n=r||t||SPt;return{send(c){return new Promise(f=>{let p=BPt.parse(c.url),h=p.query===null?p.pathname:`${p.pathname}?${p.query}`,E={...s,agent:p.protocol==="https:"?n:a,hostname:p.hostname,path:h,method:c.method,headers:{...s&&s.headers?s.headers:{},...c.headers},...p.port!==void 0?{port:p.port||""}:{}},C=(p.protocol==="https:"?QSe:kSe).request(E,R=>{let N=[];R.on("data",U=>{N=N.concat(U)}),R.on("end",()=>{clearTimeout(P),clearTimeout(I),f({status:R.statusCode||0,content:Buffer.concat(N).toString(),isTimedOut:!1})})}),S=(R,N)=>setTimeout(()=>{C.abort(),f({status:0,content:N,isTimedOut:!0})},R*1e3),P=S(c.connectTimeout,"Connection timeout"),I;C.on("error",R=>{clearTimeout(P),clearTimeout(I),f({status:0,content:R.message,isTimedOut:!1})}),C.once("response",()=>{clearTimeout(P),I=S(c.responseTimeout,"Socket timeout")}),c.data!==void 0&&C.write(c.data),C.end()})},destroy(){return a.destroy(),n.destroy(),Promise.resolve()}}}V9.createNodeHttpRequester=DPt});var NSe=L((whr,FSe)=>{FSe.exports=RSe()});var _Se=L((Bhr,MSe)=>{"use strict";var OSe=Rve(),bPt=Ove(),uw=oSe(),J9=HS(),K9=uSe(),jt=DSe(),PPt=xSe(),xPt=NSe(),kPt=GS();function LSe(t,e,r){let s={appId:t,apiKey:e,timeouts:{connect:2,read:5,write:30},requester:xPt.createNodeHttpRequester(),logger:PPt.createNullLogger(),responsesCache:OSe.createNullCache(),requestsCache:OSe.createNullCache(),hostsCache:bPt.createInMemoryCache(),userAgent:kPt.createUserAgent(J9.version).add({segment:"Node.js",version:process.versions.node})},a={...s,...r},n=()=>c=>K9.createPersonalizationClient({...s,...c,methods:{getPersonalizationStrategy:K9.getPersonalizationStrategy,setPersonalizationStrategy:K9.setPersonalizationStrategy}});return jt.createSearchClient({...a,methods:{search:jt.multipleQueries,searchForFacetValues:jt.multipleSearchForFacetValues,multipleBatch:jt.multipleBatch,multipleGetObjects:jt.multipleGetObjects,multipleQueries:jt.multipleQueries,copyIndex:jt.copyIndex,copySettings:jt.copySettings,copyRules:jt.copyRules,copySynonyms:jt.copySynonyms,moveIndex:jt.moveIndex,listIndices:jt.listIndices,getLogs:jt.getLogs,listClusters:jt.listClusters,multipleSearchForFacetValues:jt.multipleSearchForFacetValues,getApiKey:jt.getApiKey,addApiKey:jt.addApiKey,listApiKeys:jt.listApiKeys,updateApiKey:jt.updateApiKey,deleteApiKey:jt.deleteApiKey,restoreApiKey:jt.restoreApiKey,assignUserID:jt.assignUserID,assignUserIDs:jt.assignUserIDs,getUserID:jt.getUserID,searchUserIDs:jt.searchUserIDs,listUserIDs:jt.listUserIDs,getTopUserIDs:jt.getTopUserIDs,removeUserID:jt.removeUserID,hasPendingMappings:jt.hasPendingMappings,generateSecuredApiKey:jt.generateSecuredApiKey,getSecuredApiKeyRemainingValidity:jt.getSecuredApiKeyRemainingValidity,destroy:J9.destroy,clearDictionaryEntries:jt.clearDictionaryEntries,deleteDictionaryEntries:jt.deleteDictionaryEntries,getDictionarySettings:jt.getDictionarySettings,getAppTask:jt.getAppTask,replaceDictionaryEntries:jt.replaceDictionaryEntries,saveDictionaryEntries:jt.saveDictionaryEntries,searchDictionaryEntries:jt.searchDictionaryEntries,setDictionarySettings:jt.setDictionarySettings,waitAppTask:jt.waitAppTask,customRequest:jt.customRequest,initIndex:c=>f=>jt.initIndex(c)(f,{methods:{batch:jt.batch,delete:jt.deleteIndex,findAnswers:jt.findAnswers,getObject:jt.getObject,getObjects:jt.getObjects,saveObject:jt.saveObject,saveObjects:jt.saveObjects,search:jt.search,searchForFacetValues:jt.searchForFacetValues,waitTask:jt.waitTask,setSettings:jt.setSettings,getSettings:jt.getSettings,partialUpdateObject:jt.partialUpdateObject,partialUpdateObjects:jt.partialUpdateObjects,deleteObject:jt.deleteObject,deleteObjects:jt.deleteObjects,deleteBy:jt.deleteBy,clearObjects:jt.clearObjects,browseObjects:jt.browseObjects,getObjectPosition:jt.getObjectPosition,findObject:jt.findObject,exists:jt.exists,saveSynonym:jt.saveSynonym,saveSynonyms:jt.saveSynonyms,getSynonym:jt.getSynonym,searchSynonyms:jt.searchSynonyms,browseSynonyms:jt.browseSynonyms,deleteSynonym:jt.deleteSynonym,clearSynonyms:jt.clearSynonyms,replaceAllObjects:jt.replaceAllObjects,replaceAllSynonyms:jt.replaceAllSynonyms,searchRules:jt.searchRules,getRule:jt.getRule,deleteRule:jt.deleteRule,saveRule:jt.saveRule,saveRules:jt.saveRules,replaceAllRules:jt.replaceAllRules,browseRules:jt.browseRules,clearRules:jt.clearRules}}),initAnalytics:()=>c=>uw.createAnalyticsClient({...s,...c,methods:{addABTest:uw.addABTest,getABTest:uw.getABTest,getABTests:uw.getABTests,stopABTest:uw.stopABTest,deleteABTest:uw.deleteABTest}}),initPersonalization:n,initRecommendation:()=>c=>(a.logger.info("The `initRecommendation` method is deprecated. Use `initPersonalization` instead."),n()(c))}})}LSe.version=J9.version;MSe.exports=LSe});var Z9=L((vhr,z9)=>{var USe=_Se();z9.exports=USe;z9.exports.default=USe});var eW=L((Dhr,qSe)=>{"use strict";var jSe=Object.getOwnPropertySymbols,TPt=Object.prototype.hasOwnProperty,RPt=Object.prototype.propertyIsEnumerable;function FPt(t){if(t==null)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(t)}function NPt(){try{if(!Object.assign)return!1;var t=new String("abc");if(t[5]="de",Object.getOwnPropertyNames(t)[0]==="5")return!1;for(var e={},r=0;r<10;r++)e["_"+String.fromCharCode(r)]=r;var s=Object.getOwnPropertyNames(e).map(function(n){return e[n]});if(s.join("")!=="0123456789")return!1;var a={};return"abcdefghijklmnopqrst".split("").forEach(function(n){a[n]=n}),Object.keys(Object.assign({},a)).join("")==="abcdefghijklmnopqrst"}catch{return!1}}qSe.exports=NPt()?Object.assign:function(t,e){for(var r,s=FPt(t),a,n=1;n{"use strict";var rW=eW(),fw=60103,YSe=60106;Dn.Fragment=60107;Dn.StrictMode=60108;Dn.Profiler=60114;var VSe=60109,KSe=60110,JSe=60112;Dn.Suspense=60113;var zSe=60115,ZSe=60116;typeof Symbol=="function"&&Symbol.for&&(Wc=Symbol.for,fw=Wc("react.element"),YSe=Wc("react.portal"),Dn.Fragment=Wc("react.fragment"),Dn.StrictMode=Wc("react.strict_mode"),Dn.Profiler=Wc("react.profiler"),VSe=Wc("react.provider"),KSe=Wc("react.context"),JSe=Wc("react.forward_ref"),Dn.Suspense=Wc("react.suspense"),zSe=Wc("react.memo"),ZSe=Wc("react.lazy"));var Wc,GSe=typeof Symbol=="function"&&Symbol.iterator;function OPt(t){return t===null||typeof t!="object"?null:(t=GSe&&t[GSe]||t["@@iterator"],typeof t=="function"?t:null)}function JS(t){for(var e="https://reactjs.org/docs/error-decoder.html?invariant="+t,r=1;r{"use strict";oDe.exports=sDe()});var lW=L((xhr,aW)=>{"use strict";var Cn=aW.exports;aW.exports.default=Cn;var Zn="\x1B[",zS="\x1B]",pw="\x07",BF=";",aDe=process.env.TERM_PROGRAM==="Apple_Terminal";Cn.cursorTo=(t,e)=>{if(typeof t!="number")throw new TypeError("The `x` argument is required");return typeof e!="number"?Zn+(t+1)+"G":Zn+(e+1)+";"+(t+1)+"H"};Cn.cursorMove=(t,e)=>{if(typeof t!="number")throw new TypeError("The `x` argument is required");let r="";return t<0?r+=Zn+-t+"D":t>0&&(r+=Zn+t+"C"),e<0?r+=Zn+-e+"A":e>0&&(r+=Zn+e+"B"),r};Cn.cursorUp=(t=1)=>Zn+t+"A";Cn.cursorDown=(t=1)=>Zn+t+"B";Cn.cursorForward=(t=1)=>Zn+t+"C";Cn.cursorBackward=(t=1)=>Zn+t+"D";Cn.cursorLeft=Zn+"G";Cn.cursorSavePosition=aDe?"\x1B7":Zn+"s";Cn.cursorRestorePosition=aDe?"\x1B8":Zn+"u";Cn.cursorGetPosition=Zn+"6n";Cn.cursorNextLine=Zn+"E";Cn.cursorPrevLine=Zn+"F";Cn.cursorHide=Zn+"?25l";Cn.cursorShow=Zn+"?25h";Cn.eraseLines=t=>{let e="";for(let r=0;r[zS,"8",BF,BF,e,pw,t,zS,"8",BF,BF,pw].join("");Cn.image=(t,e={})=>{let r=`${zS}1337;File=inline=1`;return e.width&&(r+=`;width=${e.width}`),e.height&&(r+=`;height=${e.height}`),e.preserveAspectRatio===!1&&(r+=";preserveAspectRatio=0"),r+":"+t.toString("base64")+pw};Cn.iTerm={setCwd:(t=process.cwd())=>`${zS}50;CurrentDir=${t}${pw}`,annotation:(t,e={})=>{let r=`${zS}1337;`,s=typeof e.x<"u",a=typeof e.y<"u";if((s||a)&&!(s&&a&&typeof e.length<"u"))throw new Error("`x`, `y` and `length` must be defined when `x` or `y` is defined");return t=t.replace(/\|/g,""),r+=e.isHidden?"AddHiddenAnnotation=":"AddAnnotation=",e.length>0?r+=(s?[t,e.length,e.x,e.y]:[e.length,t]).join("|"):r+=t,r+pw}}});var cDe=L((khr,cW)=>{"use strict";var lDe=(t,e)=>{for(let r of Reflect.ownKeys(e))Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(e,r));return t};cW.exports=lDe;cW.exports.default=lDe});var fDe=L((Qhr,SF)=>{"use strict";var HPt=cDe(),vF=new WeakMap,uDe=(t,e={})=>{if(typeof t!="function")throw new TypeError("Expected a function");let r,s=0,a=t.displayName||t.name||"",n=function(...c){if(vF.set(n,++s),s===1)r=t.apply(this,c),t=null;else if(e.throw===!0)throw new Error(`Function \`${a}\` can only be called once`);return r};return HPt(n,t),vF.set(n,s),n};SF.exports=uDe;SF.exports.default=uDe;SF.exports.callCount=t=>{if(!vF.has(t))throw new Error(`The given function \`${t.name}\` is not wrapped by the \`onetime\` package`);return vF.get(t)}});var ADe=L((Thr,DF)=>{DF.exports=["SIGABRT","SIGALRM","SIGHUP","SIGINT","SIGTERM"];process.platform!=="win32"&&DF.exports.push("SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT");process.platform==="linux"&&DF.exports.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT","SIGUNUSED")});var AW=L((Rhr,dw)=>{var Qi=global.process,Tm=function(t){return t&&typeof t=="object"&&typeof t.removeListener=="function"&&typeof t.emit=="function"&&typeof t.reallyExit=="function"&&typeof t.listeners=="function"&&typeof t.kill=="function"&&typeof t.pid=="number"&&typeof t.on=="function"};Tm(Qi)?(pDe=ye("assert"),hw=ADe(),hDe=/^win/i.test(Qi.platform),ZS=ye("events"),typeof ZS!="function"&&(ZS=ZS.EventEmitter),Qi.__signal_exit_emitter__?Js=Qi.__signal_exit_emitter__:(Js=Qi.__signal_exit_emitter__=new ZS,Js.count=0,Js.emitted={}),Js.infinite||(Js.setMaxListeners(1/0),Js.infinite=!0),dw.exports=function(t,e){if(!Tm(global.process))return function(){};pDe.equal(typeof t,"function","a callback must be provided for exit handler"),gw===!1&&uW();var r="exit";e&&e.alwaysLast&&(r="afterexit");var s=function(){Js.removeListener(r,t),Js.listeners("exit").length===0&&Js.listeners("afterexit").length===0&&bF()};return Js.on(r,t),s},bF=function(){!gw||!Tm(global.process)||(gw=!1,hw.forEach(function(e){try{Qi.removeListener(e,PF[e])}catch{}}),Qi.emit=xF,Qi.reallyExit=fW,Js.count-=1)},dw.exports.unload=bF,Rm=function(e,r,s){Js.emitted[e]||(Js.emitted[e]=!0,Js.emit(e,r,s))},PF={},hw.forEach(function(t){PF[t]=function(){if(Tm(global.process)){var r=Qi.listeners(t);r.length===Js.count&&(bF(),Rm("exit",null,t),Rm("afterexit",null,t),hDe&&t==="SIGHUP"&&(t="SIGINT"),Qi.kill(Qi.pid,t))}}}),dw.exports.signals=function(){return hw},gw=!1,uW=function(){gw||!Tm(global.process)||(gw=!0,Js.count+=1,hw=hw.filter(function(e){try{return Qi.on(e,PF[e]),!0}catch{return!1}}),Qi.emit=dDe,Qi.reallyExit=gDe)},dw.exports.load=uW,fW=Qi.reallyExit,gDe=function(e){Tm(global.process)&&(Qi.exitCode=e||0,Rm("exit",Qi.exitCode,null),Rm("afterexit",Qi.exitCode,null),fW.call(Qi,Qi.exitCode))},xF=Qi.emit,dDe=function(e,r){if(e==="exit"&&Tm(global.process)){r!==void 0&&(Qi.exitCode=r);var s=xF.apply(this,arguments);return Rm("exit",Qi.exitCode,null),Rm("afterexit",Qi.exitCode,null),s}else return xF.apply(this,arguments)}):dw.exports=function(){return function(){}};var pDe,hw,hDe,ZS,Js,bF,Rm,PF,gw,uW,fW,gDe,xF,dDe});var yDe=L((Fhr,mDe)=>{"use strict";var jPt=fDe(),qPt=AW();mDe.exports=jPt(()=>{qPt(()=>{process.stderr.write("\x1B[?25h")},{alwaysLast:!0})})});var pW=L(mw=>{"use strict";var GPt=yDe(),kF=!1;mw.show=(t=process.stderr)=>{t.isTTY&&(kF=!1,t.write("\x1B[?25h"))};mw.hide=(t=process.stderr)=>{t.isTTY&&(GPt(),kF=!0,t.write("\x1B[?25l"))};mw.toggle=(t,e)=>{t!==void 0&&(kF=t),kF?mw.show(e):mw.hide(e)}});var wDe=L(XS=>{"use strict";var CDe=XS&&XS.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(XS,"__esModule",{value:!0});var EDe=CDe(lW()),IDe=CDe(pW()),WPt=(t,{showCursor:e=!1}={})=>{let r=0,s="",a=!1,n=c=>{!e&&!a&&(IDe.default.hide(),a=!0);let f=c+` +`;f!==s&&(s=f,t.write(EDe.default.eraseLines(r)+f),r=f.split(` +`).length)};return n.clear=()=>{t.write(EDe.default.eraseLines(r)),s="",r=0},n.done=()=>{s="",r=0,e||(IDe.default.show(),a=!1)},n};XS.default={create:WPt}});var BDe=L((Lhr,YPt)=>{YPt.exports=[{name:"AppVeyor",constant:"APPVEYOR",env:"APPVEYOR",pr:"APPVEYOR_PULL_REQUEST_NUMBER"},{name:"Azure Pipelines",constant:"AZURE_PIPELINES",env:"SYSTEM_TEAMFOUNDATIONCOLLECTIONURI",pr:"SYSTEM_PULLREQUEST_PULLREQUESTID"},{name:"Bamboo",constant:"BAMBOO",env:"bamboo_planKey"},{name:"Bitbucket Pipelines",constant:"BITBUCKET",env:"BITBUCKET_COMMIT",pr:"BITBUCKET_PR_ID"},{name:"Bitrise",constant:"BITRISE",env:"BITRISE_IO",pr:"BITRISE_PULL_REQUEST"},{name:"Buddy",constant:"BUDDY",env:"BUDDY_WORKSPACE_ID",pr:"BUDDY_EXECUTION_PULL_REQUEST_ID"},{name:"Buildkite",constant:"BUILDKITE",env:"BUILDKITE",pr:{env:"BUILDKITE_PULL_REQUEST",ne:"false"}},{name:"CircleCI",constant:"CIRCLE",env:"CIRCLECI",pr:"CIRCLE_PULL_REQUEST"},{name:"Cirrus CI",constant:"CIRRUS",env:"CIRRUS_CI",pr:"CIRRUS_PR"},{name:"AWS CodeBuild",constant:"CODEBUILD",env:"CODEBUILD_BUILD_ARN"},{name:"Codeship",constant:"CODESHIP",env:{CI_NAME:"codeship"}},{name:"Drone",constant:"DRONE",env:"DRONE",pr:{DRONE_BUILD_EVENT:"pull_request"}},{name:"dsari",constant:"DSARI",env:"DSARI"},{name:"GitLab CI",constant:"GITLAB",env:"GITLAB_CI"},{name:"GoCD",constant:"GOCD",env:"GO_PIPELINE_LABEL"},{name:"Hudson",constant:"HUDSON",env:"HUDSON_URL"},{name:"Jenkins",constant:"JENKINS",env:["JENKINS_URL","BUILD_ID"],pr:{any:["ghprbPullId","CHANGE_ID"]}},{name:"Magnum CI",constant:"MAGNUM",env:"MAGNUM"},{name:"Netlify CI",constant:"NETLIFY",env:"NETLIFY_BUILD_BASE",pr:{env:"PULL_REQUEST",ne:"false"}},{name:"Sail CI",constant:"SAIL",env:"SAILCI",pr:"SAIL_PULL_REQUEST_NUMBER"},{name:"Semaphore",constant:"SEMAPHORE",env:"SEMAPHORE",pr:"PULL_REQUEST_NUMBER"},{name:"Shippable",constant:"SHIPPABLE",env:"SHIPPABLE",pr:{IS_PULL_REQUEST:"true"}},{name:"Solano CI",constant:"SOLANO",env:"TDDIUM",pr:"TDDIUM_PR_ID"},{name:"Strider CD",constant:"STRIDER",env:"STRIDER"},{name:"TaskCluster",constant:"TASKCLUSTER",env:["TASK_ID","RUN_ID"]},{name:"TeamCity",constant:"TEAMCITY",env:"TEAMCITY_VERSION"},{name:"Travis CI",constant:"TRAVIS",env:"TRAVIS",pr:{env:"TRAVIS_PULL_REQUEST",ne:"false"}}]});var DDe=L(rc=>{"use strict";var SDe=BDe(),AA=process.env;Object.defineProperty(rc,"_vendors",{value:SDe.map(function(t){return t.constant})});rc.name=null;rc.isPR=null;SDe.forEach(function(t){var e=Array.isArray(t.env)?t.env:[t.env],r=e.every(function(s){return vDe(s)});if(rc[t.constant]=r,r)switch(rc.name=t.name,typeof t.pr){case"string":rc.isPR=!!AA[t.pr];break;case"object":"env"in t.pr?rc.isPR=t.pr.env in AA&&AA[t.pr.env]!==t.pr.ne:"any"in t.pr?rc.isPR=t.pr.any.some(function(s){return!!AA[s]}):rc.isPR=vDe(t.pr);break;default:rc.isPR=null}});rc.isCI=!!(AA.CI||AA.CONTINUOUS_INTEGRATION||AA.BUILD_NUMBER||AA.RUN_ID||rc.name);function vDe(t){return typeof t=="string"?!!AA[t]:Object.keys(t).every(function(e){return AA[e]===t[e]})}});var PDe=L((_hr,bDe)=>{"use strict";bDe.exports=DDe().isCI});var kDe=L((Uhr,xDe)=>{"use strict";var VPt=t=>{let e=new Set;do for(let r of Reflect.ownKeys(t))e.add([t,r]);while((t=Reflect.getPrototypeOf(t))&&t!==Object.prototype);return e};xDe.exports=(t,{include:e,exclude:r}={})=>{let s=a=>{let n=c=>typeof c=="string"?a===c:c.test(a);return e?e.some(n):r?!r.some(n):!0};for(let[a,n]of VPt(t.constructor.prototype)){if(n==="constructor"||!s(n))continue;let c=Reflect.getOwnPropertyDescriptor(a,n);c&&typeof c.value=="function"&&(t[n]=t[n].bind(t))}return t}});var ODe=L(Vn=>{"use strict";var Ew,tD,FF,IW;typeof performance=="object"&&typeof performance.now=="function"?(QDe=performance,Vn.unstable_now=function(){return QDe.now()}):(hW=Date,TDe=hW.now(),Vn.unstable_now=function(){return hW.now()-TDe});var QDe,hW,TDe;typeof window>"u"||typeof MessageChannel!="function"?(yw=null,gW=null,dW=function(){if(yw!==null)try{var t=Vn.unstable_now();yw(!0,t),yw=null}catch(e){throw setTimeout(dW,0),e}},Ew=function(t){yw!==null?setTimeout(Ew,0,t):(yw=t,setTimeout(dW,0))},tD=function(t,e){gW=setTimeout(t,e)},FF=function(){clearTimeout(gW)},Vn.unstable_shouldYield=function(){return!1},IW=Vn.unstable_forceFrameRate=function(){}):(RDe=window.setTimeout,FDe=window.clearTimeout,typeof console<"u"&&(NDe=window.cancelAnimationFrame,typeof window.requestAnimationFrame!="function"&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills"),typeof NDe!="function"&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills")),$S=!1,eD=null,QF=-1,mW=5,yW=0,Vn.unstable_shouldYield=function(){return Vn.unstable_now()>=yW},IW=function(){},Vn.unstable_forceFrameRate=function(t){0>t||125>>1,a=t[s];if(a!==void 0&&0RF(c,r))p!==void 0&&0>RF(p,c)?(t[s]=p,t[f]=r,s=f):(t[s]=c,t[n]=r,s=n);else if(p!==void 0&&0>RF(p,r))t[s]=p,t[f]=r,s=f;else break e}}return e}return null}function RF(t,e){var r=t.sortIndex-e.sortIndex;return r!==0?r:t.id-e.id}var pA=[],$0=[],KPt=1,Yc=null,ea=3,OF=!1,Fm=!1,rD=!1;function wW(t){for(var e=tf($0);e!==null;){if(e.callback===null)NF($0);else if(e.startTime<=t)NF($0),e.sortIndex=e.expirationTime,CW(pA,e);else break;e=tf($0)}}function BW(t){if(rD=!1,wW(t),!Fm)if(tf(pA)!==null)Fm=!0,Ew(vW);else{var e=tf($0);e!==null&&tD(BW,e.startTime-t)}}function vW(t,e){Fm=!1,rD&&(rD=!1,FF()),OF=!0;var r=ea;try{for(wW(e),Yc=tf(pA);Yc!==null&&(!(Yc.expirationTime>e)||t&&!Vn.unstable_shouldYield());){var s=Yc.callback;if(typeof s=="function"){Yc.callback=null,ea=Yc.priorityLevel;var a=s(Yc.expirationTime<=e);e=Vn.unstable_now(),typeof a=="function"?Yc.callback=a:Yc===tf(pA)&&NF(pA),wW(e)}else NF(pA);Yc=tf(pA)}if(Yc!==null)var n=!0;else{var c=tf($0);c!==null&&tD(BW,c.startTime-e),n=!1}return n}finally{Yc=null,ea=r,OF=!1}}var JPt=IW;Vn.unstable_IdlePriority=5;Vn.unstable_ImmediatePriority=1;Vn.unstable_LowPriority=4;Vn.unstable_NormalPriority=3;Vn.unstable_Profiling=null;Vn.unstable_UserBlockingPriority=2;Vn.unstable_cancelCallback=function(t){t.callback=null};Vn.unstable_continueExecution=function(){Fm||OF||(Fm=!0,Ew(vW))};Vn.unstable_getCurrentPriorityLevel=function(){return ea};Vn.unstable_getFirstCallbackNode=function(){return tf(pA)};Vn.unstable_next=function(t){switch(ea){case 1:case 2:case 3:var e=3;break;default:e=ea}var r=ea;ea=e;try{return t()}finally{ea=r}};Vn.unstable_pauseExecution=function(){};Vn.unstable_requestPaint=JPt;Vn.unstable_runWithPriority=function(t,e){switch(t){case 1:case 2:case 3:case 4:case 5:break;default:t=3}var r=ea;ea=t;try{return e()}finally{ea=r}};Vn.unstable_scheduleCallback=function(t,e,r){var s=Vn.unstable_now();switch(typeof r=="object"&&r!==null?(r=r.delay,r=typeof r=="number"&&0s?(t.sortIndex=r,CW($0,t),tf(pA)===null&&t===tf($0)&&(rD?FF():rD=!0,tD(BW,r-s))):(t.sortIndex=a,CW(pA,t),Fm||OF||(Fm=!0,Ew(vW))),t};Vn.unstable_wrapCallback=function(t){var e=ea;return function(){var r=ea;ea=e;try{return t.apply(this,arguments)}finally{ea=r}}}});var SW=L((jhr,LDe)=>{"use strict";LDe.exports=ODe()});var MDe=L((qhr,nD)=>{nD.exports=function(e){var r={},s=eW(),a=hn(),n=SW();function c(v){for(var D="https://reactjs.org/docs/error-decoder.html?invariant="+v,Q=1;QUe||V[Se]!==ne[Ue])return` +`+V[Se].replace(" at new "," at ");while(1<=Se&&0<=Ue);break}}}finally{ve=!1,Error.prepareStackTrace=Q}return(v=v?v.displayName||v.name:"")?ac(v):""}var lc=[],Ni=-1;function io(v){return{current:v}}function Rt(v){0>Ni||(v.current=lc[Ni],lc[Ni]=null,Ni--)}function xn(v,D){Ni++,lc[Ni]=v.current,v.current=D}var ca={},ji=io(ca),Oi=io(!1),Oa=ca;function dn(v,D){var Q=v.type.contextTypes;if(!Q)return ca;var H=v.stateNode;if(H&&H.__reactInternalMemoizedUnmaskedChildContext===D)return H.__reactInternalMemoizedMaskedChildContext;var V={},ne;for(ne in Q)V[ne]=D[ne];return H&&(v=v.stateNode,v.__reactInternalMemoizedUnmaskedChildContext=D,v.__reactInternalMemoizedMaskedChildContext=V),V}function Jn(v){return v=v.childContextTypes,v!=null}function hu(){Rt(Oi),Rt(ji)}function Ch(v,D,Q){if(ji.current!==ca)throw Error(c(168));xn(ji,D),xn(Oi,Q)}function La(v,D,Q){var H=v.stateNode;if(v=D.childContextTypes,typeof H.getChildContext!="function")return Q;H=H.getChildContext();for(var V in H)if(!(V in v))throw Error(c(108,g(D)||"Unknown",V));return s({},Q,H)}function Ma(v){return v=(v=v.stateNode)&&v.__reactInternalMemoizedMergedChildContext||ca,Oa=ji.current,xn(ji,v),xn(Oi,Oi.current),!0}function Ua(v,D,Q){var H=v.stateNode;if(!H)throw Error(c(169));Q?(v=La(v,D,Oa),H.__reactInternalMemoizedMergedChildContext=v,Rt(Oi),Rt(ji),xn(ji,v)):Rt(Oi),xn(Oi,Q)}var Xe=null,Ha=null,gf=n.unstable_now;gf();var cc=0,wn=8;function ua(v){if(1&v)return wn=15,1;if(2&v)return wn=14,2;if(4&v)return wn=13,4;var D=24&v;return D!==0?(wn=12,D):v&32?(wn=11,32):(D=192&v,D!==0?(wn=10,D):v&256?(wn=9,256):(D=3584&v,D!==0?(wn=8,D):v&4096?(wn=7,4096):(D=4186112&v,D!==0?(wn=6,D):(D=62914560&v,D!==0?(wn=5,D):v&67108864?(wn=4,67108864):v&134217728?(wn=3,134217728):(D=805306368&v,D!==0?(wn=2,D):1073741824&v?(wn=1,1073741824):(wn=8,v))))))}function _A(v){switch(v){case 99:return 15;case 98:return 10;case 97:case 96:return 8;case 95:return 2;default:return 0}}function UA(v){switch(v){case 15:case 14:return 99;case 13:case 12:case 11:case 10:return 98;case 9:case 8:case 7:case 6:case 4:case 5:return 97;case 3:case 2:case 1:return 95;case 0:return 90;default:throw Error(c(358,v))}}function fa(v,D){var Q=v.pendingLanes;if(Q===0)return wn=0;var H=0,V=0,ne=v.expiredLanes,Se=v.suspendedLanes,Ue=v.pingedLanes;if(ne!==0)H=ne,V=wn=15;else if(ne=Q&134217727,ne!==0){var At=ne&~Se;At!==0?(H=ua(At),V=wn):(Ue&=ne,Ue!==0&&(H=ua(Ue),V=wn))}else ne=Q&~Se,ne!==0?(H=ua(ne),V=wn):Ue!==0&&(H=ua(Ue),V=wn);if(H===0)return 0;if(H=31-ns(H),H=Q&((0>H?0:1<Q;Q++)D.push(v);return D}function ja(v,D,Q){v.pendingLanes|=D;var H=D-1;v.suspendedLanes&=H,v.pingedLanes&=H,v=v.eventTimes,D=31-ns(D),v[D]=Q}var ns=Math.clz32?Math.clz32:fc,uc=Math.log,gu=Math.LN2;function fc(v){return v===0?32:31-(uc(v)/gu|0)|0}var qa=n.unstable_runWithPriority,Li=n.unstable_scheduleCallback,Cs=n.unstable_cancelCallback,Sl=n.unstable_shouldYield,df=n.unstable_requestPaint,Ac=n.unstable_now,wi=n.unstable_getCurrentPriorityLevel,Qn=n.unstable_ImmediatePriority,pc=n.unstable_UserBlockingPriority,Je=n.unstable_NormalPriority,st=n.unstable_LowPriority,St=n.unstable_IdlePriority,lr={},ee=df!==void 0?df:function(){},Ie=null,Oe=null,ht=!1,mt=Ac(),Dt=1e4>mt?Ac:function(){return Ac()-mt};function tr(){switch(wi()){case Qn:return 99;case pc:return 98;case Je:return 97;case st:return 96;case St:return 95;default:throw Error(c(332))}}function fn(v){switch(v){case 99:return Qn;case 98:return pc;case 97:return Je;case 96:return st;case 95:return St;default:throw Error(c(332))}}function ai(v,D){return v=fn(v),qa(v,D)}function qi(v,D,Q){return v=fn(v),Li(v,D,Q)}function Tn(){if(Oe!==null){var v=Oe;Oe=null,Cs(v)}Ga()}function Ga(){if(!ht&&Ie!==null){ht=!0;var v=0;try{var D=Ie;ai(99,function(){for(;vRn?(Un=kr,kr=null):Un=kr.sibling;var zr=Xt($e,kr,pt[Rn],Zt);if(zr===null){kr===null&&(kr=Un);break}v&&kr&&zr.alternate===null&&D($e,kr),qe=ne(zr,qe,Rn),Xn===null?Sr=zr:Xn.sibling=zr,Xn=zr,kr=Un}if(Rn===pt.length)return Q($e,kr),Sr;if(kr===null){for(;RnRn?(Un=kr,kr=null):Un=kr.sibling;var li=Xt($e,kr,zr.value,Zt);if(li===null){kr===null&&(kr=Un);break}v&&kr&&li.alternate===null&&D($e,kr),qe=ne(li,qe,Rn),Xn===null?Sr=li:Xn.sibling=li,Xn=li,kr=Un}if(zr.done)return Q($e,kr),Sr;if(kr===null){for(;!zr.done;Rn++,zr=pt.next())zr=Lr($e,zr.value,Zt),zr!==null&&(qe=ne(zr,qe,Rn),Xn===null?Sr=zr:Xn.sibling=zr,Xn=zr);return Sr}for(kr=H($e,kr);!zr.done;Rn++,zr=pt.next())zr=zn(kr,$e,Rn,zr.value,Zt),zr!==null&&(v&&zr.alternate!==null&&kr.delete(zr.key===null?Rn:zr.key),qe=ne(zr,qe,Rn),Xn===null?Sr=zr:Xn.sibling=zr,Xn=zr);return v&&kr.forEach(function(Pu){return D($e,Pu)}),Sr}return function($e,qe,pt,Zt){var Sr=typeof pt=="object"&&pt!==null&&pt.type===E&&pt.key===null;Sr&&(pt=pt.props.children);var Xn=typeof pt=="object"&&pt!==null;if(Xn)switch(pt.$$typeof){case p:e:{for(Xn=pt.key,Sr=qe;Sr!==null;){if(Sr.key===Xn){switch(Sr.tag){case 7:if(pt.type===E){Q($e,Sr.sibling),qe=V(Sr,pt.props.children),qe.return=$e,$e=qe;break e}break;default:if(Sr.elementType===pt.type){Q($e,Sr.sibling),qe=V(Sr,pt.props),qe.ref=dt($e,Sr,pt),qe.return=$e,$e=qe;break e}}Q($e,Sr);break}else D($e,Sr);Sr=Sr.sibling}pt.type===E?(qe=Qf(pt.props.children,$e.mode,Zt,pt.key),qe.return=$e,$e=qe):(Zt=od(pt.type,pt.key,pt.props,null,$e.mode,Zt),Zt.ref=dt($e,qe,pt),Zt.return=$e,$e=Zt)}return Se($e);case h:e:{for(Sr=pt.key;qe!==null;){if(qe.key===Sr)if(qe.tag===4&&qe.stateNode.containerInfo===pt.containerInfo&&qe.stateNode.implementation===pt.implementation){Q($e,qe.sibling),qe=V(qe,pt.children||[]),qe.return=$e,$e=qe;break e}else{Q($e,qe);break}else D($e,qe);qe=qe.sibling}qe=Ro(pt,$e.mode,Zt),qe.return=$e,$e=qe}return Se($e)}if(typeof pt=="string"||typeof pt=="number")return pt=""+pt,qe!==null&&qe.tag===6?(Q($e,qe.sibling),qe=V(qe,pt),qe.return=$e,$e=qe):(Q($e,qe),qe=k2(pt,$e.mode,Zt),qe.return=$e,$e=qe),Se($e);if(yf(pt))return mi($e,qe,pt,Zt);if(Ce(pt))return Za($e,qe,pt,Zt);if(Xn&&mu($e,pt),typeof pt>"u"&&!Sr)switch($e.tag){case 1:case 22:case 0:case 11:case 15:throw Error(c(152,g($e.type)||"Component"))}return Q($e,qe)}}var _g=By(!0),n2=By(!1),bh={},ur=io(bh),zi=io(bh),Ef=io(bh);function Wa(v){if(v===bh)throw Error(c(174));return v}function Ug(v,D){xn(Ef,D),xn(zi,v),xn(ur,bh),v=gt(D),Rt(ur),xn(ur,v)}function yu(){Rt(ur),Rt(zi),Rt(Ef)}function If(v){var D=Wa(Ef.current),Q=Wa(ur.current);D=j(Q,v.type,D),Q!==D&&(xn(zi,v),xn(ur,D))}function wt(v){zi.current===v&&(Rt(ur),Rt(zi))}var gi=io(0);function WA(v){for(var D=v;D!==null;){if(D.tag===13){var Q=D.memoizedState;if(Q!==null&&(Q=Q.dehydrated,Q===null||gr(Q)||So(Q)))return D}else if(D.tag===19&&D.memoizedProps.revealOrder!==void 0){if(D.flags&64)return D}else if(D.child!==null){D.child.return=D,D=D.child;continue}if(D===v)break;for(;D.sibling===null;){if(D.return===null||D.return===v)return null;D=D.return}D.sibling.return=D.return,D=D.sibling}return null}var Ya=null,pa=null,Va=!1;function Hg(v,D){var Q=za(5,null,null,0);Q.elementType="DELETED",Q.type="DELETED",Q.stateNode=D,Q.return=v,Q.flags=8,v.lastEffect!==null?(v.lastEffect.nextEffect=Q,v.lastEffect=Q):v.firstEffect=v.lastEffect=Q}function Ph(v,D){switch(v.tag){case 5:return D=la(D,v.type,v.pendingProps),D!==null?(v.stateNode=D,!0):!1;case 6:return D=OA(D,v.pendingProps),D!==null?(v.stateNode=D,!0):!1;case 13:return!1;default:return!1}}function jg(v){if(Va){var D=pa;if(D){var Q=D;if(!Ph(v,D)){if(D=Me(Q),!D||!Ph(v,D)){v.flags=v.flags&-1025|2,Va=!1,Ya=v;return}Hg(Ya,Q)}Ya=v,pa=fu(D)}else v.flags=v.flags&-1025|2,Va=!1,Ya=v}}function vy(v){for(v=v.return;v!==null&&v.tag!==5&&v.tag!==3&&v.tag!==13;)v=v.return;Ya=v}function YA(v){if(!Z||v!==Ya)return!1;if(!Va)return vy(v),Va=!0,!1;var D=v.type;if(v.tag!==5||D!=="head"&&D!=="body"&&!it(D,v.memoizedProps))for(D=pa;D;)Hg(v,D),D=Me(D);if(vy(v),v.tag===13){if(!Z)throw Error(c(316));if(v=v.memoizedState,v=v!==null?v.dehydrated:null,!v)throw Error(c(317));pa=LA(v)}else pa=Ya?Me(v.stateNode):null;return!0}function qg(){Z&&(pa=Ya=null,Va=!1)}var Eu=[];function Iu(){for(var v=0;vne))throw Error(c(301));ne+=1,xi=is=null,D.updateQueue=null,Cf.current=re,v=Q(H,V)}while(wf)}if(Cf.current=kt,D=is!==null&&is.next!==null,Cu=0,xi=is=qn=null,VA=!1,D)throw Error(c(300));return v}function ss(){var v={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return xi===null?qn.memoizedState=xi=v:xi=xi.next=v,xi}function xl(){if(is===null){var v=qn.alternate;v=v!==null?v.memoizedState:null}else v=is.next;var D=xi===null?qn.memoizedState:xi.next;if(D!==null)xi=D,is=v;else{if(v===null)throw Error(c(310));is=v,v={memoizedState:is.memoizedState,baseState:is.baseState,baseQueue:is.baseQueue,queue:is.queue,next:null},xi===null?qn.memoizedState=xi=v:xi=xi.next=v}return xi}function ko(v,D){return typeof D=="function"?D(v):D}function Bf(v){var D=xl(),Q=D.queue;if(Q===null)throw Error(c(311));Q.lastRenderedReducer=v;var H=is,V=H.baseQueue,ne=Q.pending;if(ne!==null){if(V!==null){var Se=V.next;V.next=ne.next,ne.next=Se}H.baseQueue=V=ne,Q.pending=null}if(V!==null){V=V.next,H=H.baseState;var Ue=Se=ne=null,At=V;do{var Gt=At.lane;if((Cu&Gt)===Gt)Ue!==null&&(Ue=Ue.next={lane:0,action:At.action,eagerReducer:At.eagerReducer,eagerState:At.eagerState,next:null}),H=At.eagerReducer===v?At.eagerState:v(H,At.action);else{var vr={lane:Gt,action:At.action,eagerReducer:At.eagerReducer,eagerState:At.eagerState,next:null};Ue===null?(Se=Ue=vr,ne=H):Ue=Ue.next=vr,qn.lanes|=Gt,$g|=Gt}At=At.next}while(At!==null&&At!==V);Ue===null?ne=H:Ue.next=Se,Do(H,D.memoizedState)||(Ke=!0),D.memoizedState=H,D.baseState=ne,D.baseQueue=Ue,Q.lastRenderedState=H}return[D.memoizedState,Q.dispatch]}function vf(v){var D=xl(),Q=D.queue;if(Q===null)throw Error(c(311));Q.lastRenderedReducer=v;var H=Q.dispatch,V=Q.pending,ne=D.memoizedState;if(V!==null){Q.pending=null;var Se=V=V.next;do ne=v(ne,Se.action),Se=Se.next;while(Se!==V);Do(ne,D.memoizedState)||(Ke=!0),D.memoizedState=ne,D.baseQueue===null&&(D.baseState=ne),Q.lastRenderedState=ne}return[ne,H]}function kl(v,D,Q){var H=D._getVersion;H=H(D._source);var V=y?D._workInProgressVersionPrimary:D._workInProgressVersionSecondary;if(V!==null?v=V===H:(v=v.mutableReadLanes,(v=(Cu&v)===v)&&(y?D._workInProgressVersionPrimary=H:D._workInProgressVersionSecondary=H,Eu.push(D))),v)return Q(D._source);throw Eu.push(D),Error(c(350))}function yn(v,D,Q,H){var V=oo;if(V===null)throw Error(c(349));var ne=D._getVersion,Se=ne(D._source),Ue=Cf.current,At=Ue.useState(function(){return kl(V,D,Q)}),Gt=At[1],vr=At[0];At=xi;var Lr=v.memoizedState,Xt=Lr.refs,zn=Xt.getSnapshot,mi=Lr.source;Lr=Lr.subscribe;var Za=qn;return v.memoizedState={refs:Xt,source:D,subscribe:H},Ue.useEffect(function(){Xt.getSnapshot=Q,Xt.setSnapshot=Gt;var $e=ne(D._source);if(!Do(Se,$e)){$e=Q(D._source),Do(vr,$e)||(Gt($e),$e=vs(Za),V.mutableReadLanes|=$e&V.pendingLanes),$e=V.mutableReadLanes,V.entangledLanes|=$e;for(var qe=V.entanglements,pt=$e;0Q?98:Q,function(){v(!0)}),ai(97I2&&(D.flags|=64,V=!0,$A(H,!1),D.lanes=33554432)}else{if(!V)if(v=WA(ne),v!==null){if(D.flags|=64,V=!0,v=v.updateQueue,v!==null&&(D.updateQueue=v,D.flags|=4),$A(H,!0),H.tail===null&&H.tailMode==="hidden"&&!ne.alternate&&!Va)return D=D.lastEffect=H.lastEffect,D!==null&&(D.nextEffect=null),null}else 2*Dt()-H.renderingStartTime>I2&&Q!==1073741824&&(D.flags|=64,V=!0,$A(H,!1),D.lanes=33554432);H.isBackwards?(ne.sibling=D.child,D.child=ne):(v=H.last,v!==null?v.sibling=ne:D.child=ne,H.last=ne)}return H.tail!==null?(v=H.tail,H.rendering=v,H.tail=v.sibling,H.lastEffect=D.lastEffect,H.renderingStartTime=Dt(),v.sibling=null,D=gi.current,xn(gi,V?D&1|2:D&1),v):null;case 23:case 24:return D2(),v!==null&&v.memoizedState!==null!=(D.memoizedState!==null)&&H.mode!=="unstable-defer-without-hiding"&&(D.flags|=4),null}throw Error(c(156,D.tag))}function $L(v){switch(v.tag){case 1:Jn(v.type)&&hu();var D=v.flags;return D&4096?(v.flags=D&-4097|64,v):null;case 3:if(yu(),Rt(Oi),Rt(ji),Iu(),D=v.flags,D&64)throw Error(c(285));return v.flags=D&-4097|64,v;case 5:return wt(v),null;case 13:return Rt(gi),D=v.flags,D&4096?(v.flags=D&-4097|64,v):null;case 19:return Rt(gi),null;case 4:return yu(),null;case 10:return Lg(v),null;case 23:case 24:return D2(),null;default:return null}}function Vg(v,D){try{var Q="",H=D;do Q+=r2(H),H=H.return;while(H);var V=Q}catch(ne){V=` +Error generating stack: `+ne.message+` +`+ne.stack}return{value:v,source:D,stack:V}}function Kg(v,D){try{console.error(D.value)}catch(Q){setTimeout(function(){throw Q})}}var eM=typeof WeakMap=="function"?WeakMap:Map;function a2(v,D,Q){Q=bl(-1,Q),Q.tag=3,Q.payload={element:null};var H=D.value;return Q.callback=function(){Uy||(Uy=!0,C2=H),Kg(v,D)},Q}function Jg(v,D,Q){Q=bl(-1,Q),Q.tag=3;var H=v.type.getDerivedStateFromError;if(typeof H=="function"){var V=D.value;Q.payload=function(){return Kg(v,D),H(V)}}var ne=v.stateNode;return ne!==null&&typeof ne.componentDidCatch=="function"&&(Q.callback=function(){typeof H!="function"&&(gc===null?gc=new Set([this]):gc.add(this),Kg(v,D));var Se=D.stack;this.componentDidCatch(D.value,{componentStack:Se!==null?Se:""})}),Q}var tM=typeof WeakSet=="function"?WeakSet:Set;function l2(v){var D=v.ref;if(D!==null)if(typeof D=="function")try{D(null)}catch(Q){kf(v,Q)}else D.current=null}function xy(v,D){switch(D.tag){case 0:case 11:case 15:case 22:return;case 1:if(D.flags&256&&v!==null){var Q=v.memoizedProps,H=v.memoizedState;v=D.stateNode,D=v.getSnapshotBeforeUpdate(D.elementType===D.type?Q:bo(D.type,Q),H),v.__reactInternalSnapshotBeforeUpdate=D}return;case 3:F&&D.flags&256&&Rs(D.stateNode.containerInfo);return;case 5:case 6:case 4:case 17:return}throw Error(c(163))}function Nh(v,D){if(D=D.updateQueue,D=D!==null?D.lastEffect:null,D!==null){var Q=D=D.next;do{if((Q.tag&v)===v){var H=Q.destroy;Q.destroy=void 0,H!==void 0&&H()}Q=Q.next}while(Q!==D)}}function vP(v,D,Q){switch(Q.tag){case 0:case 11:case 15:case 22:if(D=Q.updateQueue,D=D!==null?D.lastEffect:null,D!==null){v=D=D.next;do{if((v.tag&3)===3){var H=v.create;v.destroy=H()}v=v.next}while(v!==D)}if(D=Q.updateQueue,D=D!==null?D.lastEffect:null,D!==null){v=D=D.next;do{var V=v;H=V.next,V=V.tag,V&4&&V&1&&(MP(Q,v),uM(Q,v)),v=H}while(v!==D)}return;case 1:v=Q.stateNode,Q.flags&4&&(D===null?v.componentDidMount():(H=Q.elementType===Q.type?D.memoizedProps:bo(Q.type,D.memoizedProps),v.componentDidUpdate(H,D.memoizedState,v.__reactInternalSnapshotBeforeUpdate))),D=Q.updateQueue,D!==null&&Cy(Q,D,v);return;case 3:if(D=Q.updateQueue,D!==null){if(v=null,Q.child!==null)switch(Q.child.tag){case 5:v=Re(Q.child.stateNode);break;case 1:v=Q.child.stateNode}Cy(Q,D,v)}return;case 5:v=Q.stateNode,D===null&&Q.flags&4&&eo(v,Q.type,Q.memoizedProps,Q);return;case 6:return;case 4:return;case 12:return;case 13:Z&&Q.memoizedState===null&&(Q=Q.alternate,Q!==null&&(Q=Q.memoizedState,Q!==null&&(Q=Q.dehydrated,Q!==null&&Au(Q))));return;case 19:case 17:case 20:case 21:case 23:case 24:return}throw Error(c(163))}function SP(v,D){if(F)for(var Q=v;;){if(Q.tag===5){var H=Q.stateNode;D?Eh(H):ro(Q.stateNode,Q.memoizedProps)}else if(Q.tag===6)H=Q.stateNode,D?Ih(H):jn(H,Q.memoizedProps);else if((Q.tag!==23&&Q.tag!==24||Q.memoizedState===null||Q===v)&&Q.child!==null){Q.child.return=Q,Q=Q.child;continue}if(Q===v)break;for(;Q.sibling===null;){if(Q.return===null||Q.return===v)return;Q=Q.return}Q.sibling.return=Q.return,Q=Q.sibling}}function ky(v,D){if(Ha&&typeof Ha.onCommitFiberUnmount=="function")try{Ha.onCommitFiberUnmount(Xe,D)}catch{}switch(D.tag){case 0:case 11:case 14:case 15:case 22:if(v=D.updateQueue,v!==null&&(v=v.lastEffect,v!==null)){var Q=v=v.next;do{var H=Q,V=H.destroy;if(H=H.tag,V!==void 0)if(H&4)MP(D,Q);else{H=D;try{V()}catch(ne){kf(H,ne)}}Q=Q.next}while(Q!==v)}break;case 1:if(l2(D),v=D.stateNode,typeof v.componentWillUnmount=="function")try{v.props=D.memoizedProps,v.state=D.memoizedState,v.componentWillUnmount()}catch(ne){kf(D,ne)}break;case 5:l2(D);break;case 4:F?xP(v,D):z&&z&&(D=D.stateNode.containerInfo,v=lu(D),FA(D,v))}}function DP(v,D){for(var Q=D;;)if(ky(v,Q),Q.child===null||F&&Q.tag===4){if(Q===D)break;for(;Q.sibling===null;){if(Q.return===null||Q.return===D)return;Q=Q.return}Q.sibling.return=Q.return,Q=Q.sibling}else Q.child.return=Q,Q=Q.child}function Qy(v){v.alternate=null,v.child=null,v.dependencies=null,v.firstEffect=null,v.lastEffect=null,v.memoizedProps=null,v.memoizedState=null,v.pendingProps=null,v.return=null,v.updateQueue=null}function bP(v){return v.tag===5||v.tag===3||v.tag===4}function PP(v){if(F){e:{for(var D=v.return;D!==null;){if(bP(D))break e;D=D.return}throw Error(c(160))}var Q=D;switch(D=Q.stateNode,Q.tag){case 5:var H=!1;break;case 3:D=D.containerInfo,H=!0;break;case 4:D=D.containerInfo,H=!0;break;default:throw Error(c(161))}Q.flags&16&&(pf(D),Q.flags&=-17);e:t:for(Q=v;;){for(;Q.sibling===null;){if(Q.return===null||bP(Q.return)){Q=null;break e}Q=Q.return}for(Q.sibling.return=Q.return,Q=Q.sibling;Q.tag!==5&&Q.tag!==6&&Q.tag!==18;){if(Q.flags&2||Q.child===null||Q.tag===4)continue t;Q.child.return=Q,Q=Q.child}if(!(Q.flags&2)){Q=Q.stateNode;break e}}H?c2(v,Q,D):u2(v,Q,D)}}function c2(v,D,Q){var H=v.tag,V=H===5||H===6;if(V)v=V?v.stateNode:v.stateNode.instance,D?to(Q,v,D):wo(Q,v);else if(H!==4&&(v=v.child,v!==null))for(c2(v,D,Q),v=v.sibling;v!==null;)c2(v,D,Q),v=v.sibling}function u2(v,D,Q){var H=v.tag,V=H===5||H===6;if(V)v=V?v.stateNode:v.stateNode.instance,D?Hi(Q,v,D):oi(Q,v);else if(H!==4&&(v=v.child,v!==null))for(u2(v,D,Q),v=v.sibling;v!==null;)u2(v,D,Q),v=v.sibling}function xP(v,D){for(var Q=D,H=!1,V,ne;;){if(!H){H=Q.return;e:for(;;){if(H===null)throw Error(c(160));switch(V=H.stateNode,H.tag){case 5:ne=!1;break e;case 3:V=V.containerInfo,ne=!0;break e;case 4:V=V.containerInfo,ne=!0;break e}H=H.return}H=!0}if(Q.tag===5||Q.tag===6)DP(v,Q),ne?RA(V,Q.stateNode):vo(V,Q.stateNode);else if(Q.tag===4){if(Q.child!==null){V=Q.stateNode.containerInfo,ne=!0,Q.child.return=Q,Q=Q.child;continue}}else if(ky(v,Q),Q.child!==null){Q.child.return=Q,Q=Q.child;continue}if(Q===D)break;for(;Q.sibling===null;){if(Q.return===null||Q.return===D)return;Q=Q.return,Q.tag===4&&(H=!1)}Q.sibling.return=Q.return,Q=Q.sibling}}function f2(v,D){if(F){switch(D.tag){case 0:case 11:case 14:case 15:case 22:Nh(3,D);return;case 1:return;case 5:var Q=D.stateNode;if(Q!=null){var H=D.memoizedProps;v=v!==null?v.memoizedProps:H;var V=D.type,ne=D.updateQueue;D.updateQueue=null,ne!==null&&Bo(Q,ne,V,v,H,D)}return;case 6:if(D.stateNode===null)throw Error(c(162));Q=D.memoizedProps,rs(D.stateNode,v!==null?v.memoizedProps:Q,Q);return;case 3:Z&&(D=D.stateNode,D.hydrate&&(D.hydrate=!1,MA(D.containerInfo)));return;case 12:return;case 13:kP(D),zg(D);return;case 19:zg(D);return;case 17:return;case 23:case 24:SP(D,D.memoizedState!==null);return}throw Error(c(163))}switch(D.tag){case 0:case 11:case 14:case 15:case 22:Nh(3,D);return;case 12:return;case 13:kP(D),zg(D);return;case 19:zg(D);return;case 3:Z&&(Q=D.stateNode,Q.hydrate&&(Q.hydrate=!1,MA(Q.containerInfo)));break;case 23:case 24:return}e:if(z){switch(D.tag){case 1:case 5:case 6:case 20:break e;case 3:case 4:D=D.stateNode,FA(D.containerInfo,D.pendingChildren);break e}throw Error(c(163))}}function kP(v){v.memoizedState!==null&&(E2=Dt(),F&&SP(v.child,!0))}function zg(v){var D=v.updateQueue;if(D!==null){v.updateQueue=null;var Q=v.stateNode;Q===null&&(Q=v.stateNode=new tM),D.forEach(function(H){var V=AM.bind(null,v,H);Q.has(H)||(Q.add(H),H.then(V,V))})}}function rM(v,D){return v!==null&&(v=v.memoizedState,v===null||v.dehydrated!==null)?(D=D.memoizedState,D!==null&&D.dehydrated===null):!1}var Ty=0,Ry=1,Fy=2,Zg=3,Ny=4;if(typeof Symbol=="function"&&Symbol.for){var Xg=Symbol.for;Ty=Xg("selector.component"),Ry=Xg("selector.has_pseudo_class"),Fy=Xg("selector.role"),Zg=Xg("selector.test_id"),Ny=Xg("selector.text")}function Oy(v){var D=$(v);if(D!=null){if(typeof D.memoizedProps["data-testname"]!="string")throw Error(c(364));return D}if(v=ir(v),v===null)throw Error(c(362));return v.stateNode.current}function Df(v,D){switch(D.$$typeof){case Ty:if(v.type===D.value)return!0;break;case Ry:e:{D=D.value,v=[v,0];for(var Q=0;Q";case Ry:return":has("+(bf(v)||"")+")";case Fy:return'[role="'+v.value+'"]';case Ny:return'"'+v.value+'"';case Zg:return'[data-testname="'+v.value+'"]';default:throw Error(c(365,v))}}function A2(v,D){var Q=[];v=[v,0];for(var H=0;HV&&(V=Se),Q&=~ne}if(Q=V,Q=Dt()-Q,Q=(120>Q?120:480>Q?480:1080>Q?1080:1920>Q?1920:3e3>Q?3e3:4320>Q?4320:1960*iM(Q/1960))-Q,10 component higher in the tree to provide a loading indicator or placeholder to display.`)}Bs!==5&&(Bs=2),At=Vg(At,Ue),Xt=Se;do{switch(Xt.tag){case 3:ne=At,Xt.flags|=4096,D&=-D,Xt.lanes|=D;var Xn=a2(Xt,ne,D);Iy(Xt,Xn);break e;case 1:ne=At;var kr=Xt.type,Rn=Xt.stateNode;if(!(Xt.flags&64)&&(typeof kr.getDerivedStateFromError=="function"||Rn!==null&&typeof Rn.componentDidCatch=="function"&&(gc===null||!gc.has(Rn)))){Xt.flags|=4096,D&=-D,Xt.lanes|=D;var Un=Jg(Xt,ne,D);Iy(Xt,Un);break e}}Xt=Xt.return}while(Xt!==null)}LP(Q)}catch(zr){D=zr,Zi===Q&&Q!==null&&(Zi=Q=Q.return);continue}break}while(!0)}function NP(){var v=My.current;return My.current=kt,v===null?kt:v}function sd(v,D){var Q=xr;xr|=16;var H=NP();oo===v&&Os===D||_h(v,D);do try{oM();break}catch(V){FP(v,V)}while(!0);if(Ng(),xr=Q,My.current=H,Zi!==null)throw Error(c(261));return oo=null,Os=0,Bs}function oM(){for(;Zi!==null;)OP(Zi)}function aM(){for(;Zi!==null&&!Sl();)OP(Zi)}function OP(v){var D=HP(v.alternate,v,ep);v.memoizedProps=v.pendingProps,D===null?LP(v):Zi=D,h2.current=null}function LP(v){var D=v;do{var Q=D.alternate;if(v=D.return,D.flags&2048){if(Q=$L(D),Q!==null){Q.flags&=2047,Zi=Q;return}v!==null&&(v.firstEffect=v.lastEffect=null,v.flags|=2048)}else{if(Q=XL(Q,D,ep),Q!==null){Zi=Q;return}if(Q=D,Q.tag!==24&&Q.tag!==23||Q.memoizedState===null||ep&1073741824||!(Q.mode&4)){for(var H=0,V=Q.child;V!==null;)H|=V.lanes|V.childLanes,V=V.sibling;Q.childLanes=H}v!==null&&!(v.flags&2048)&&(v.firstEffect===null&&(v.firstEffect=D.firstEffect),D.lastEffect!==null&&(v.lastEffect!==null&&(v.lastEffect.nextEffect=D.firstEffect),v.lastEffect=D.lastEffect),1Dt()-E2?_h(v,0):m2|=Q),da(v,D)}function AM(v,D){var Q=v.stateNode;Q!==null&&Q.delete(D),D=0,D===0&&(D=v.mode,D&2?D&4?(Su===0&&(Su=Oh),D=kn(62914560&~Su),D===0&&(D=4194304)):D=tr()===99?1:2:D=1),Q=To(),v=qy(v,D),v!==null&&(ja(v,D,Q),da(v,Q))}var HP;HP=function(v,D,Q){var H=D.lanes;if(v!==null)if(v.memoizedProps!==D.pendingProps||Oi.current)Ke=!0;else if(Q&H)Ke=!!(v.flags&16384);else{switch(Ke=!1,D.tag){case 3:by(D),qg();break;case 5:If(D);break;case 1:Jn(D.type)&&Ma(D);break;case 4:Ug(D,D.stateNode.containerInfo);break;case 10:Og(D,D.memoizedProps.value);break;case 13:if(D.memoizedState!==null)return Q&D.child.childLanes?s2(v,D,Q):(xn(gi,gi.current&1),D=Gn(v,D,Q),D!==null?D.sibling:null);xn(gi,gi.current&1);break;case 19:if(H=(Q&D.childLanes)!==0,v.flags&64){if(H)return BP(v,D,Q);D.flags|=64}var V=D.memoizedState;if(V!==null&&(V.rendering=null,V.tail=null,V.lastEffect=null),xn(gi,gi.current),H)break;return null;case 23:case 24:return D.lanes=0,di(v,D,Q)}return Gn(v,D,Q)}else Ke=!1;switch(D.lanes=0,D.tag){case 2:if(H=D.type,v!==null&&(v.alternate=null,D.alternate=null,D.flags|=2),v=D.pendingProps,V=dn(D,ji.current),mf(D,Q),V=Wg(null,D,H,v,V,Q),D.flags|=1,typeof V=="object"&&V!==null&&typeof V.render=="function"&&V.$$typeof===void 0){if(D.tag=1,D.memoizedState=null,D.updateQueue=null,Jn(H)){var ne=!0;Ma(D)}else ne=!1;D.memoizedState=V.state!==null&&V.state!==void 0?V.state:null,Dh(D);var Se=H.getDerivedStateFromProps;typeof Se=="function"&&jA(D,H,Se,v),V.updater=qA,D.stateNode=V,V._reactInternals=D,xo(D,H,v,Q),D=i2(null,D,H,!0,ne,Q)}else D.tag=0,ft(null,D,V,Q),D=D.child;return D;case 16:V=D.elementType;e:{switch(v!==null&&(v.alternate=null,D.alternate=null,D.flags|=2),v=D.pendingProps,ne=V._init,V=ne(V._payload),D.type=V,ne=D.tag=hM(V),v=bo(V,v),ne){case 0:D=zA(null,D,V,v,Q);break e;case 1:D=wP(null,D,V,v,Q);break e;case 11:D=dr(null,D,V,v,Q);break e;case 14:D=Br(null,D,V,bo(V.type,v),H,Q);break e}throw Error(c(306,V,""))}return D;case 0:return H=D.type,V=D.pendingProps,V=D.elementType===H?V:bo(H,V),zA(v,D,H,V,Q);case 1:return H=D.type,V=D.pendingProps,V=D.elementType===H?V:bo(H,V),wP(v,D,H,V,Q);case 3:if(by(D),H=D.updateQueue,v===null||H===null)throw Error(c(282));if(H=D.pendingProps,V=D.memoizedState,V=V!==null?V.element:null,Mg(v,D),HA(D,H,null,Q),H=D.memoizedState.element,H===V)qg(),D=Gn(v,D,Q);else{if(V=D.stateNode,(ne=V.hydrate)&&(Z?(pa=fu(D.stateNode.containerInfo),Ya=D,ne=Va=!0):ne=!1),ne){if(Z&&(v=V.mutableSourceEagerHydrationData,v!=null))for(V=0;V=Gt&&ne>=Lr&&V<=vr&&Se<=Xt){v.splice(D,1);break}else if(H!==Gt||Q.width!==At.width||XtSe){if(!(ne!==Lr||Q.height!==At.height||vrV)){Gt>H&&(At.width+=Gt-H,At.x=H),vrne&&(At.height+=Lr-ne,At.y=ne),XtQ&&(Q=Se)),Se ")+` + +No matching component was found for: + `)+v.join(" > ")}return null},r.getPublicRootInstance=function(v){if(v=v.current,!v.child)return null;switch(v.child.tag){case 5:return Re(v.child.stateNode);default:return v.child.stateNode}},r.injectIntoDevTools=function(v){if(v={bundleType:v.bundleType,version:v.version,rendererPackageName:v.rendererPackageName,rendererConfig:v.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:f.ReactCurrentDispatcher,findHostInstanceByFiber:dM,findFiberByHostInstance:v.findFiberByHostInstance||mM,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null},typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u")v=!1;else{var D=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!D.isDisabled&&D.supportsFiber)try{Xe=D.inject(v),Ha=D}catch{}v=!0}return v},r.observeVisibleRects=function(v,D,Q,H){if(!qt)throw Error(c(363));v=p2(v,D);var V=nn(v,Q,H).disconnect;return{disconnect:function(){V()}}},r.registerMutableSourceForHydration=function(v,D){var Q=D._getVersion;Q=Q(D._source),v.mutableSourceEagerHydrationData==null?v.mutableSourceEagerHydrationData=[D,Q]:v.mutableSourceEagerHydrationData.push(D,Q)},r.runWithPriority=function(v,D){var Q=cc;try{return cc=v,D()}finally{cc=Q}},r.shouldSuspend=function(){return!1},r.unbatchedUpdates=function(v,D){var Q=xr;xr&=-2,xr|=8;try{return v(D)}finally{xr=Q,xr===0&&(Pf(),Tn())}},r.updateContainer=function(v,D,Q,H){var V=D.current,ne=To(),Se=vs(V);e:if(Q){Q=Q._reactInternals;t:{if(we(Q)!==Q||Q.tag!==1)throw Error(c(170));var Ue=Q;do{switch(Ue.tag){case 3:Ue=Ue.stateNode.context;break t;case 1:if(Jn(Ue.type)){Ue=Ue.stateNode.__reactInternalMemoizedMergedChildContext;break t}}Ue=Ue.return}while(Ue!==null);throw Error(c(171))}if(Q.tag===1){var At=Q.type;if(Jn(At)){Q=La(Q,At,Ue);break e}}Q=Ue}else Q=ca;return D.context===null?D.context=Q:D.pendingContext=Q,D=bl(ne,Se),D.payload={element:v},H=H===void 0?null:H,H!==null&&(D.callback=H),Pl(V,D),Rl(V,Se,ne),Se},r}});var UDe=L((Ghr,_De)=>{"use strict";_De.exports=MDe()});var jDe=L((Whr,HDe)=>{"use strict";var zPt={ALIGN_COUNT:8,ALIGN_AUTO:0,ALIGN_FLEX_START:1,ALIGN_CENTER:2,ALIGN_FLEX_END:3,ALIGN_STRETCH:4,ALIGN_BASELINE:5,ALIGN_SPACE_BETWEEN:6,ALIGN_SPACE_AROUND:7,DIMENSION_COUNT:2,DIMENSION_WIDTH:0,DIMENSION_HEIGHT:1,DIRECTION_COUNT:3,DIRECTION_INHERIT:0,DIRECTION_LTR:1,DIRECTION_RTL:2,DISPLAY_COUNT:2,DISPLAY_FLEX:0,DISPLAY_NONE:1,EDGE_COUNT:9,EDGE_LEFT:0,EDGE_TOP:1,EDGE_RIGHT:2,EDGE_BOTTOM:3,EDGE_START:4,EDGE_END:5,EDGE_HORIZONTAL:6,EDGE_VERTICAL:7,EDGE_ALL:8,EXPERIMENTAL_FEATURE_COUNT:1,EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS:0,FLEX_DIRECTION_COUNT:4,FLEX_DIRECTION_COLUMN:0,FLEX_DIRECTION_COLUMN_REVERSE:1,FLEX_DIRECTION_ROW:2,FLEX_DIRECTION_ROW_REVERSE:3,JUSTIFY_COUNT:6,JUSTIFY_FLEX_START:0,JUSTIFY_CENTER:1,JUSTIFY_FLEX_END:2,JUSTIFY_SPACE_BETWEEN:3,JUSTIFY_SPACE_AROUND:4,JUSTIFY_SPACE_EVENLY:5,LOG_LEVEL_COUNT:6,LOG_LEVEL_ERROR:0,LOG_LEVEL_WARN:1,LOG_LEVEL_INFO:2,LOG_LEVEL_DEBUG:3,LOG_LEVEL_VERBOSE:4,LOG_LEVEL_FATAL:5,MEASURE_MODE_COUNT:3,MEASURE_MODE_UNDEFINED:0,MEASURE_MODE_EXACTLY:1,MEASURE_MODE_AT_MOST:2,NODE_TYPE_COUNT:2,NODE_TYPE_DEFAULT:0,NODE_TYPE_TEXT:1,OVERFLOW_COUNT:3,OVERFLOW_VISIBLE:0,OVERFLOW_HIDDEN:1,OVERFLOW_SCROLL:2,POSITION_TYPE_COUNT:2,POSITION_TYPE_RELATIVE:0,POSITION_TYPE_ABSOLUTE:1,PRINT_OPTIONS_COUNT:3,PRINT_OPTIONS_LAYOUT:1,PRINT_OPTIONS_STYLE:2,PRINT_OPTIONS_CHILDREN:4,UNIT_COUNT:4,UNIT_UNDEFINED:0,UNIT_POINT:1,UNIT_PERCENT:2,UNIT_AUTO:3,WRAP_COUNT:3,WRAP_NO_WRAP:0,WRAP_WRAP:1,WRAP_WRAP_REVERSE:2};HDe.exports=zPt});var YDe=L((Yhr,WDe)=>{"use strict";var ZPt=Object.assign||function(t){for(var e=1;e"}}]),t}(),qDe=function(){LF(t,null,[{key:"fromJS",value:function(r){var s=r.width,a=r.height;return new t(s,a)}}]);function t(e,r){bW(this,t),this.width=e,this.height=r}return LF(t,[{key:"fromJS",value:function(r){r(this.width,this.height)}},{key:"toString",value:function(){return""}}]),t}(),GDe=function(){function t(e,r){bW(this,t),this.unit=e,this.value=r}return LF(t,[{key:"fromJS",value:function(r){r(this.unit,this.value)}},{key:"toString",value:function(){switch(this.unit){case rf.UNIT_POINT:return String(this.value);case rf.UNIT_PERCENT:return this.value+"%";case rf.UNIT_AUTO:return"auto";default:return this.value+"?"}}},{key:"valueOf",value:function(){return this.value}}]),t}();WDe.exports=function(t,e){function r(c,f,p){var h=c[f];c[f]=function(){for(var E=arguments.length,C=Array(E),S=0;S1?C-1:0),P=1;P1&&arguments[1]!==void 0?arguments[1]:NaN,p=arguments.length>2&&arguments[2]!==void 0?arguments[2]:NaN,h=arguments.length>3&&arguments[3]!==void 0?arguments[3]:rf.DIRECTION_LTR;return c.call(this,f,p,h)}),ZPt({Config:e.Config,Node:e.Node,Layout:t("Layout",XPt),Size:t("Size",qDe),Value:t("Value",GDe),getInstanceCount:function(){return e.getInstanceCount.apply(e,arguments)}},rf)}});var VDe=L((exports,module)=>{(function(t,e){typeof define=="function"&&define.amd?define([],function(){return e}):typeof module=="object"&&module.exports?module.exports=e:(t.nbind=t.nbind||{}).init=e})(exports,function(Module,cb){typeof Module=="function"&&(cb=Module,Module={}),Module.onRuntimeInitialized=function(t,e){return function(){t&&t.apply(this,arguments);try{Module.ccall("nbind_init")}catch(r){e(r);return}e(null,{bind:Module._nbind_value,reflect:Module.NBind.reflect,queryType:Module.NBind.queryType,toggleLightGC:Module.toggleLightGC,lib:Module})}}(Module.onRuntimeInitialized,cb);var Module;Module||(Module=(typeof Module<"u"?Module:null)||{});var moduleOverrides={};for(var key in Module)Module.hasOwnProperty(key)&&(moduleOverrides[key]=Module[key]);var ENVIRONMENT_IS_WEB=!1,ENVIRONMENT_IS_WORKER=!1,ENVIRONMENT_IS_NODE=!1,ENVIRONMENT_IS_SHELL=!1;if(Module.ENVIRONMENT)if(Module.ENVIRONMENT==="WEB")ENVIRONMENT_IS_WEB=!0;else if(Module.ENVIRONMENT==="WORKER")ENVIRONMENT_IS_WORKER=!0;else if(Module.ENVIRONMENT==="NODE")ENVIRONMENT_IS_NODE=!0;else if(Module.ENVIRONMENT==="SHELL")ENVIRONMENT_IS_SHELL=!0;else throw new Error("The provided Module['ENVIRONMENT'] value is not valid. It must be one of: WEB|WORKER|NODE|SHELL.");else ENVIRONMENT_IS_WEB=typeof window=="object",ENVIRONMENT_IS_WORKER=typeof importScripts=="function",ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof ye=="function"&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER,ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;if(ENVIRONMENT_IS_NODE){Module.print||(Module.print=console.log),Module.printErr||(Module.printErr=console.warn);var nodeFS,nodePath;Module.read=function(e,r){nodeFS||(nodeFS={}("")),nodePath||(nodePath={}("")),e=nodePath.normalize(e);var s=nodeFS.readFileSync(e);return r?s:s.toString()},Module.readBinary=function(e){var r=Module.read(e,!0);return r.buffer||(r=new Uint8Array(r)),assert(r.buffer),r},Module.load=function(e){globalEval(read(e))},Module.thisProgram||(process.argv.length>1?Module.thisProgram=process.argv[1].replace(/\\/g,"/"):Module.thisProgram="unknown-program"),Module.arguments=process.argv.slice(2),typeof module<"u"&&(module.exports=Module),Module.inspect=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_SHELL)Module.print||(Module.print=print),typeof printErr<"u"&&(Module.printErr=printErr),typeof read<"u"?Module.read=read:Module.read=function(){throw"no read() available"},Module.readBinary=function(e){if(typeof readbuffer=="function")return new Uint8Array(readbuffer(e));var r=read(e,"binary");return assert(typeof r=="object"),r},typeof scriptArgs<"u"?Module.arguments=scriptArgs:typeof arguments<"u"&&(Module.arguments=arguments),typeof quit=="function"&&(Module.quit=function(t,e){quit(t)});else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(Module.read=function(e){var r=new XMLHttpRequest;return r.open("GET",e,!1),r.send(null),r.responseText},ENVIRONMENT_IS_WORKER&&(Module.readBinary=function(e){var r=new XMLHttpRequest;return r.open("GET",e,!1),r.responseType="arraybuffer",r.send(null),new Uint8Array(r.response)}),Module.readAsync=function(e,r,s){var a=new XMLHttpRequest;a.open("GET",e,!0),a.responseType="arraybuffer",a.onload=function(){a.status==200||a.status==0&&a.response?r(a.response):s()},a.onerror=s,a.send(null)},typeof arguments<"u"&&(Module.arguments=arguments),typeof console<"u")Module.print||(Module.print=function(e){console.log(e)}),Module.printErr||(Module.printErr=function(e){console.warn(e)});else{var TRY_USE_DUMP=!1;Module.print||(Module.print=TRY_USE_DUMP&&typeof dump<"u"?function(t){dump(t)}:function(t){})}ENVIRONMENT_IS_WORKER&&(Module.load=importScripts),typeof Module.setWindowTitle>"u"&&(Module.setWindowTitle=function(t){document.title=t})}else throw"Unknown runtime environment. Where are we?";function globalEval(t){eval.call(null,t)}!Module.load&&Module.read&&(Module.load=function(e){globalEval(Module.read(e))}),Module.print||(Module.print=function(){}),Module.printErr||(Module.printErr=Module.print),Module.arguments||(Module.arguments=[]),Module.thisProgram||(Module.thisProgram="./this.program"),Module.quit||(Module.quit=function(t,e){throw e}),Module.print=Module.print,Module.printErr=Module.printErr,Module.preRun=[],Module.postRun=[];for(var key in moduleOverrides)moduleOverrides.hasOwnProperty(key)&&(Module[key]=moduleOverrides[key]);moduleOverrides=void 0;var Runtime={setTempRet0:function(t){return tempRet0=t,t},getTempRet0:function(){return tempRet0},stackSave:function(){return STACKTOP},stackRestore:function(t){STACKTOP=t},getNativeTypeSize:function(t){switch(t){case"i1":case"i8":return 1;case"i16":return 2;case"i32":return 4;case"i64":return 8;case"float":return 4;case"double":return 8;default:{if(t[t.length-1]==="*")return Runtime.QUANTUM_SIZE;if(t[0]==="i"){var e=parseInt(t.substr(1));return assert(e%8===0),e/8}else return 0}}},getNativeFieldSize:function(t){return Math.max(Runtime.getNativeTypeSize(t),Runtime.QUANTUM_SIZE)},STACK_ALIGN:16,prepVararg:function(t,e){return e==="double"||e==="i64"?t&7&&(assert((t&7)===4),t+=4):assert((t&3)===0),t},getAlignSize:function(t,e,r){return!r&&(t=="i64"||t=="double")?8:t?Math.min(e||(t?Runtime.getNativeFieldSize(t):0),Runtime.QUANTUM_SIZE):Math.min(e,8)},dynCall:function(t,e,r){return r&&r.length?Module["dynCall_"+t].apply(null,[e].concat(r)):Module["dynCall_"+t].call(null,e)},functionPointers:[],addFunction:function(t){for(var e=0;e>2],r=(e+t+15|0)&-16;if(HEAP32[DYNAMICTOP_PTR>>2]=r,r>=TOTAL_MEMORY){var s=enlargeMemory();if(!s)return HEAP32[DYNAMICTOP_PTR>>2]=e,0}return e},alignMemory:function(t,e){var r=t=Math.ceil(t/(e||16))*(e||16);return r},makeBigInt:function(t,e,r){var s=r?+(t>>>0)+ +(e>>>0)*4294967296:+(t>>>0)+ +(e|0)*4294967296;return s},GLOBAL_BASE:8,QUANTUM_SIZE:4,__dummy__:0};Module.Runtime=Runtime;var ABORT=0,EXITSTATUS=0;function assert(t,e){t||abort("Assertion failed: "+e)}function getCFunc(ident){var func=Module["_"+ident];if(!func)try{func=eval("_"+ident)}catch(t){}return assert(func,"Cannot call unknown function "+ident+" (perhaps LLVM optimizations or closure removed it?)"),func}var cwrap,ccall;(function(){var JSfuncs={stackSave:function(){Runtime.stackSave()},stackRestore:function(){Runtime.stackRestore()},arrayToC:function(t){var e=Runtime.stackAlloc(t.length);return writeArrayToMemory(t,e),e},stringToC:function(t){var e=0;if(t!=null&&t!==0){var r=(t.length<<2)+1;e=Runtime.stackAlloc(r),stringToUTF8(t,e,r)}return e}},toC={string:JSfuncs.stringToC,array:JSfuncs.arrayToC};ccall=function(e,r,s,a,n){var c=getCFunc(e),f=[],p=0;if(a)for(var h=0;h>0]=e;break;case"i8":HEAP8[t>>0]=e;break;case"i16":HEAP16[t>>1]=e;break;case"i32":HEAP32[t>>2]=e;break;case"i64":tempI64=[e>>>0,(tempDouble=e,+Math_abs(tempDouble)>=1?tempDouble>0?(Math_min(+Math_floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[t>>2]=tempI64[0],HEAP32[t+4>>2]=tempI64[1];break;case"float":HEAPF32[t>>2]=e;break;case"double":HEAPF64[t>>3]=e;break;default:abort("invalid type for setValue: "+r)}}Module.setValue=setValue;function getValue(t,e,r){switch(e=e||"i8",e.charAt(e.length-1)==="*"&&(e="i32"),e){case"i1":return HEAP8[t>>0];case"i8":return HEAP8[t>>0];case"i16":return HEAP16[t>>1];case"i32":return HEAP32[t>>2];case"i64":return HEAP32[t>>2];case"float":return HEAPF32[t>>2];case"double":return HEAPF64[t>>3];default:abort("invalid type for setValue: "+e)}return null}Module.getValue=getValue;var ALLOC_NORMAL=0,ALLOC_STACK=1,ALLOC_STATIC=2,ALLOC_DYNAMIC=3,ALLOC_NONE=4;Module.ALLOC_NORMAL=ALLOC_NORMAL,Module.ALLOC_STACK=ALLOC_STACK,Module.ALLOC_STATIC=ALLOC_STATIC,Module.ALLOC_DYNAMIC=ALLOC_DYNAMIC,Module.ALLOC_NONE=ALLOC_NONE;function allocate(t,e,r,s){var a,n;typeof t=="number"?(a=!0,n=t):(a=!1,n=t.length);var c=typeof e=="string"?e:null,f;if(r==ALLOC_NONE?f=s:f=[typeof _malloc=="function"?_malloc:Runtime.staticAlloc,Runtime.stackAlloc,Runtime.staticAlloc,Runtime.dynamicAlloc][r===void 0?ALLOC_STATIC:r](Math.max(n,c?1:e.length)),a){var s=f,p;for(assert((f&3)==0),p=f+(n&-4);s>2]=0;for(p=f+n;s>0]=0;return f}if(c==="i8")return t.subarray||t.slice?HEAPU8.set(t,f):HEAPU8.set(new Uint8Array(t),f),f;for(var h=0,E,C,S;h>0],r|=s,!(s==0&&!e||(a++,e&&a==e)););e||(e=a);var n="";if(r<128){for(var c=1024,f;e>0;)f=String.fromCharCode.apply(String,HEAPU8.subarray(t,t+Math.min(e,c))),n=n?n+f:f,t+=c,e-=c;return n}return Module.UTF8ToString(t)}Module.Pointer_stringify=Pointer_stringify;function AsciiToString(t){for(var e="";;){var r=HEAP8[t++>>0];if(!r)return e;e+=String.fromCharCode(r)}}Module.AsciiToString=AsciiToString;function stringToAscii(t,e){return writeAsciiToMemory(t,e,!1)}Module.stringToAscii=stringToAscii;var UTF8Decoder=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0;function UTF8ArrayToString(t,e){for(var r=e;t[r];)++r;if(r-e>16&&t.subarray&&UTF8Decoder)return UTF8Decoder.decode(t.subarray(e,r));for(var s,a,n,c,f,p,h="";;){if(s=t[e++],!s)return h;if(!(s&128)){h+=String.fromCharCode(s);continue}if(a=t[e++]&63,(s&224)==192){h+=String.fromCharCode((s&31)<<6|a);continue}if(n=t[e++]&63,(s&240)==224?s=(s&15)<<12|a<<6|n:(c=t[e++]&63,(s&248)==240?s=(s&7)<<18|a<<12|n<<6|c:(f=t[e++]&63,(s&252)==248?s=(s&3)<<24|a<<18|n<<12|c<<6|f:(p=t[e++]&63,s=(s&1)<<30|a<<24|n<<18|c<<12|f<<6|p))),s<65536)h+=String.fromCharCode(s);else{var E=s-65536;h+=String.fromCharCode(55296|E>>10,56320|E&1023)}}}Module.UTF8ArrayToString=UTF8ArrayToString;function UTF8ToString(t){return UTF8ArrayToString(HEAPU8,t)}Module.UTF8ToString=UTF8ToString;function stringToUTF8Array(t,e,r,s){if(!(s>0))return 0;for(var a=r,n=r+s-1,c=0;c=55296&&f<=57343&&(f=65536+((f&1023)<<10)|t.charCodeAt(++c)&1023),f<=127){if(r>=n)break;e[r++]=f}else if(f<=2047){if(r+1>=n)break;e[r++]=192|f>>6,e[r++]=128|f&63}else if(f<=65535){if(r+2>=n)break;e[r++]=224|f>>12,e[r++]=128|f>>6&63,e[r++]=128|f&63}else if(f<=2097151){if(r+3>=n)break;e[r++]=240|f>>18,e[r++]=128|f>>12&63,e[r++]=128|f>>6&63,e[r++]=128|f&63}else if(f<=67108863){if(r+4>=n)break;e[r++]=248|f>>24,e[r++]=128|f>>18&63,e[r++]=128|f>>12&63,e[r++]=128|f>>6&63,e[r++]=128|f&63}else{if(r+5>=n)break;e[r++]=252|f>>30,e[r++]=128|f>>24&63,e[r++]=128|f>>18&63,e[r++]=128|f>>12&63,e[r++]=128|f>>6&63,e[r++]=128|f&63}}return e[r]=0,r-a}Module.stringToUTF8Array=stringToUTF8Array;function stringToUTF8(t,e,r){return stringToUTF8Array(t,HEAPU8,e,r)}Module.stringToUTF8=stringToUTF8;function lengthBytesUTF8(t){for(var e=0,r=0;r=55296&&s<=57343&&(s=65536+((s&1023)<<10)|t.charCodeAt(++r)&1023),s<=127?++e:s<=2047?e+=2:s<=65535?e+=3:s<=2097151?e+=4:s<=67108863?e+=5:e+=6}return e}Module.lengthBytesUTF8=lengthBytesUTF8;var UTF16Decoder=typeof TextDecoder<"u"?new TextDecoder("utf-16le"):void 0;function demangle(t){var e=Module.___cxa_demangle||Module.__cxa_demangle;if(e){try{var r=t.substr(1),s=lengthBytesUTF8(r)+1,a=_malloc(s);stringToUTF8(r,a,s);var n=_malloc(4),c=e(a,0,0,n);if(getValue(n,"i32")===0&&c)return Pointer_stringify(c)}catch{}finally{a&&_free(a),n&&_free(n),c&&_free(c)}return t}return Runtime.warnOnce("warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling"),t}function demangleAll(t){var e=/__Z[\w\d_]+/g;return t.replace(e,function(r){var s=demangle(r);return r===s?r:r+" ["+s+"]"})}function jsStackTrace(){var t=new Error;if(!t.stack){try{throw new Error(0)}catch(e){t=e}if(!t.stack)return"(no stack trace available)"}return t.stack.toString()}function stackTrace(){var t=jsStackTrace();return Module.extraStackTrace&&(t+=` +`+Module.extraStackTrace()),demangleAll(t)}Module.stackTrace=stackTrace;var HEAP,buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferViews(){Module.HEAP8=HEAP8=new Int8Array(buffer),Module.HEAP16=HEAP16=new Int16Array(buffer),Module.HEAP32=HEAP32=new Int32Array(buffer),Module.HEAPU8=HEAPU8=new Uint8Array(buffer),Module.HEAPU16=HEAPU16=new Uint16Array(buffer),Module.HEAPU32=HEAPU32=new Uint32Array(buffer),Module.HEAPF32=HEAPF32=new Float32Array(buffer),Module.HEAPF64=HEAPF64=new Float64Array(buffer)}var STATIC_BASE,STATICTOP,staticSealed,STACK_BASE,STACKTOP,STACK_MAX,DYNAMIC_BASE,DYNAMICTOP_PTR;STATIC_BASE=STATICTOP=STACK_BASE=STACKTOP=STACK_MAX=DYNAMIC_BASE=DYNAMICTOP_PTR=0,staticSealed=!1;function abortOnCannotGrowMemory(){abort("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+TOTAL_MEMORY+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or (4) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ")}function enlargeMemory(){abortOnCannotGrowMemory()}var TOTAL_STACK=Module.TOTAL_STACK||5242880,TOTAL_MEMORY=Module.TOTAL_MEMORY||134217728;TOTAL_MEMORY0;){var e=t.shift();if(typeof e=="function"){e();continue}var r=e.func;typeof r=="number"?e.arg===void 0?Module.dynCall_v(r):Module.dynCall_vi(r,e.arg):r(e.arg===void 0?null:e.arg)}}var __ATPRERUN__=[],__ATINIT__=[],__ATMAIN__=[],__ATEXIT__=[],__ATPOSTRUN__=[],runtimeInitialized=!1,runtimeExited=!1;function preRun(){if(Module.preRun)for(typeof Module.preRun=="function"&&(Module.preRun=[Module.preRun]);Module.preRun.length;)addOnPreRun(Module.preRun.shift());callRuntimeCallbacks(__ATPRERUN__)}function ensureInitRuntime(){runtimeInitialized||(runtimeInitialized=!0,callRuntimeCallbacks(__ATINIT__))}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__),runtimeExited=!0}function postRun(){if(Module.postRun)for(typeof Module.postRun=="function"&&(Module.postRun=[Module.postRun]);Module.postRun.length;)addOnPostRun(Module.postRun.shift());callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(t){__ATPRERUN__.unshift(t)}Module.addOnPreRun=addOnPreRun;function addOnInit(t){__ATINIT__.unshift(t)}Module.addOnInit=addOnInit;function addOnPreMain(t){__ATMAIN__.unshift(t)}Module.addOnPreMain=addOnPreMain;function addOnExit(t){__ATEXIT__.unshift(t)}Module.addOnExit=addOnExit;function addOnPostRun(t){__ATPOSTRUN__.unshift(t)}Module.addOnPostRun=addOnPostRun;function intArrayFromString(t,e,r){var s=r>0?r:lengthBytesUTF8(t)+1,a=new Array(s),n=stringToUTF8Array(t,a,0,a.length);return e&&(a.length=n),a}Module.intArrayFromString=intArrayFromString;function intArrayToString(t){for(var e=[],r=0;r255&&(s&=255),e.push(String.fromCharCode(s))}return e.join("")}Module.intArrayToString=intArrayToString;function writeStringToMemory(t,e,r){Runtime.warnOnce("writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!");var s,a;r&&(a=e+lengthBytesUTF8(t),s=HEAP8[a]),stringToUTF8(t,e,1/0),r&&(HEAP8[a]=s)}Module.writeStringToMemory=writeStringToMemory;function writeArrayToMemory(t,e){HEAP8.set(t,e)}Module.writeArrayToMemory=writeArrayToMemory;function writeAsciiToMemory(t,e,r){for(var s=0;s>0]=t.charCodeAt(s);r||(HEAP8[e>>0]=0)}if(Module.writeAsciiToMemory=writeAsciiToMemory,(!Math.imul||Math.imul(4294967295,5)!==-5)&&(Math.imul=function t(e,r){var s=e>>>16,a=e&65535,n=r>>>16,c=r&65535;return a*c+(s*c+a*n<<16)|0}),Math.imul=Math.imul,!Math.fround){var froundBuffer=new Float32Array(1);Math.fround=function(t){return froundBuffer[0]=t,froundBuffer[0]}}Math.fround=Math.fround,Math.clz32||(Math.clz32=function(t){t=t>>>0;for(var e=0;e<32;e++)if(t&1<<31-e)return e;return 32}),Math.clz32=Math.clz32,Math.trunc||(Math.trunc=function(t){return t<0?Math.ceil(t):Math.floor(t)}),Math.trunc=Math.trunc;var Math_abs=Math.abs,Math_cos=Math.cos,Math_sin=Math.sin,Math_tan=Math.tan,Math_acos=Math.acos,Math_asin=Math.asin,Math_atan=Math.atan,Math_atan2=Math.atan2,Math_exp=Math.exp,Math_log=Math.log,Math_sqrt=Math.sqrt,Math_ceil=Math.ceil,Math_floor=Math.floor,Math_pow=Math.pow,Math_imul=Math.imul,Math_fround=Math.fround,Math_round=Math.round,Math_min=Math.min,Math_clz32=Math.clz32,Math_trunc=Math.trunc,runDependencies=0,runDependencyWatcher=null,dependenciesFulfilled=null;function getUniqueRunDependency(t){return t}function addRunDependency(t){runDependencies++,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies)}Module.addRunDependency=addRunDependency;function removeRunDependency(t){if(runDependencies--,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies),runDependencies==0&&(runDependencyWatcher!==null&&(clearInterval(runDependencyWatcher),runDependencyWatcher=null),dependenciesFulfilled)){var e=dependenciesFulfilled;dependenciesFulfilled=null,e()}}Module.removeRunDependency=removeRunDependency,Module.preloadedImages={},Module.preloadedAudios={};var ASM_CONSTS=[function(t,e,r,s,a,n,c,f){return _nbind.callbackSignatureList[t].apply(this,arguments)}];function _emscripten_asm_const_iiiiiiii(t,e,r,s,a,n,c,f){return ASM_CONSTS[t](e,r,s,a,n,c,f)}function _emscripten_asm_const_iiiii(t,e,r,s,a){return ASM_CONSTS[t](e,r,s,a)}function _emscripten_asm_const_iiidddddd(t,e,r,s,a,n,c,f,p){return ASM_CONSTS[t](e,r,s,a,n,c,f,p)}function _emscripten_asm_const_iiididi(t,e,r,s,a,n,c){return ASM_CONSTS[t](e,r,s,a,n,c)}function _emscripten_asm_const_iiii(t,e,r,s){return ASM_CONSTS[t](e,r,s)}function _emscripten_asm_const_iiiid(t,e,r,s,a){return ASM_CONSTS[t](e,r,s,a)}function _emscripten_asm_const_iiiiii(t,e,r,s,a,n){return ASM_CONSTS[t](e,r,s,a,n)}STATIC_BASE=Runtime.GLOBAL_BASE,STATICTOP=STATIC_BASE+12800,__ATINIT__.push({func:function(){__GLOBAL__sub_I_Yoga_cpp()}},{func:function(){__GLOBAL__sub_I_nbind_cc()}},{func:function(){__GLOBAL__sub_I_common_cc()}},{func:function(){__GLOBAL__sub_I_Binding_cc()}}),allocate([0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,192,127,0,0,192,127,0,0,192,127,3,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,3,0,0,0,0,0,192,127,3,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,192,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,192,127,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,0,0,128,191,0,0,128,191,0,0,192,127,0,0,0,0,0,0,0,0,0,0,128,63,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,190,12,0,0,200,12,0,0,208,12,0,0,216,12,0,0,230,12,0,0,242,12,0,0,1,0,0,0,3,0,0,0,0,0,0,0,2,0,0,0,0,0,192,127,3,0,0,0,180,45,0,0,181,45,0,0,182,45,0,0,181,45,0,0,182,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,1,0,0,0,4,0,0,0,183,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,184,45,0,0,185,45,0,0,181,45,0,0,181,45,0,0,182,45,0,0,186,45,0,0,185,45,0,0,148,4,0,0,3,0,0,0,187,45,0,0,164,4,0,0,188,45,0,0,2,0,0,0,189,45,0,0,164,4,0,0,188,45,0,0,185,45,0,0,164,4,0,0,185,45,0,0,164,4,0,0,188,45,0,0,181,45,0,0,182,45,0,0,181,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,5,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,183,45,0,0,182,45,0,0,181,45,0,0,190,45,0,0,190,45,0,0,182,45,0,0,182,45,0,0,185,45,0,0,181,45,0,0,185,45,0,0,182,45,0,0,181,45,0,0,185,45,0,0,182,45,0,0,185,45,0,0,48,5,0,0,3,0,0,0,56,5,0,0,1,0,0,0,189,45,0,0,185,45,0,0,164,4,0,0,76,5,0,0,2,0,0,0,191,45,0,0,186,45,0,0,182,45,0,0,185,45,0,0,192,45,0,0,185,45,0,0,182,45,0,0,186,45,0,0,185,45,0,0,76,5,0,0,76,5,0,0,136,5,0,0,182,45,0,0,181,45,0,0,2,0,0,0,190,45,0,0,136,5,0,0,56,19,0,0,156,5,0,0,2,0,0,0,184,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,8,0,0,0,9,0,0,0,1,0,0,0,10,0,0,0,204,5,0,0,181,45,0,0,181,45,0,0,2,0,0,0,180,45,0,0,204,5,0,0,2,0,0,0,195,45,0,0,236,5,0,0,97,19,0,0,198,45,0,0,211,45,0,0,212,45,0,0,213,45,0,0,214,45,0,0,215,45,0,0,188,45,0,0,182,45,0,0,216,45,0,0,217,45,0,0,218,45,0,0,219,45,0,0,192,45,0,0,181,45,0,0,0,0,0,0,185,45,0,0,110,19,0,0,186,45,0,0,115,19,0,0,221,45,0,0,120,19,0,0,148,4,0,0,132,19,0,0,96,6,0,0,145,19,0,0,222,45,0,0,164,19,0,0,223,45,0,0,173,19,0,0,0,0,0,0,3,0,0,0,104,6,0,0,1,0,0,0,187,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,11,0,0,0,12,0,0,0,1,0,0,0,13,0,0,0,185,45,0,0,224,45,0,0,164,6,0,0,188,45,0,0,172,6,0,0,180,6,0,0,2,0,0,0,188,6,0,0,7,0,0,0,224,45,0,0,7,0,0,0,164,6,0,0,1,0,0,0,213,45,0,0,185,45,0,0,224,45,0,0,172,6,0,0,185,45,0,0,224,45,0,0,164,6,0,0,185,45,0,0,224,45,0,0,211,45,0,0,211,45,0,0,222,45,0,0,211,45,0,0,224,45,0,0,222,45,0,0,211,45,0,0,224,45,0,0,172,6,0,0,222,45,0,0,211,45,0,0,224,45,0,0,188,45,0,0,222,45,0,0,211,45,0,0,40,7,0,0,188,45,0,0,2,0,0,0,224,45,0,0,185,45,0,0,188,45,0,0,188,45,0,0,188,45,0,0,188,45,0,0,222,45,0,0,224,45,0,0,148,4,0,0,185,45,0,0,148,4,0,0,148,4,0,0,148,4,0,0,148,4,0,0,148,4,0,0,185,45,0,0,164,6,0,0,148,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,14,0,0,0,15,0,0,0,1,0,0,0,16,0,0,0,148,7,0,0,2,0,0,0,225,45,0,0,183,45,0,0,188,45,0,0,168,7,0,0,5,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,234,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,9,0,0,5,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,2,0,0,0,242,45,0,0,0,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,111,117,108,100,32,110,111,116,32,97,108,108,111,99,97,116,101,32,109,101,109,111,114,121,32,102,111,114,32,110,111,100,101,0,67,97,110,110,111,116,32,114,101,115,101,116,32,97,32,110,111,100,101,32,119,104,105,99,104,32,115,116,105,108,108,32,104,97,115,32,99,104,105,108,100,114,101,110,32,97,116,116,97,99,104,101,100,0,67,97,110,110,111,116,32,114,101,115,101,116,32,97,32,110,111,100,101,32,115,116,105,108,108,32,97,116,116,97,99,104,101,100,32,116,111,32,97,32,112,97,114,101,110,116,0,67,111,117,108,100,32,110,111,116,32,97,108,108,111,99,97,116,101,32,109,101,109,111,114,121,32,102,111,114,32,99,111,110,102,105,103,0,67,97,110,110,111,116,32,115,101,116,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,58,32,78,111,100,101,115,32,119,105,116,104,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,115,32,99,97,110,110,111,116,32,104,97,118,101,32,99,104,105,108,100,114,101,110,46,0,67,104,105,108,100,32,97,108,114,101,97,100,121,32,104,97,115,32,97,32,112,97,114,101,110,116,44,32,105,116,32,109,117,115,116,32,98,101,32,114,101,109,111,118,101,100,32,102,105,114,115,116,46,0,67,97,110,110,111,116,32,97,100,100,32,99,104,105,108,100,58,32,78,111,100,101,115,32,119,105,116,104,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,115,32,99,97,110,110,111,116,32,104,97,118,101,32,99,104,105,108,100,114,101,110,46,0,79,110,108,121,32,108,101,97,102,32,110,111,100,101,115,32,119,105,116,104,32,99,117,115,116,111,109,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,115,115,104,111,117,108,100,32,109,97,110,117,97,108,108,121,32,109,97,114,107,32,116,104,101,109,115,101,108,118,101,115,32,97,115,32,100,105,114,116,121,0,67,97,110,110,111,116,32,103,101,116,32,108,97,121,111,117,116,32,112,114,111,112,101,114,116,105,101,115,32,111,102,32,109,117,108,116,105,45,101,100,103,101,32,115,104,111,114,116,104,97,110,100,115,0,37,115,37,100,46,123,91,115,107,105,112,112,101,100,93,32,0,119,109,58,32,37,115,44,32,104,109,58,32,37,115,44,32,97,119,58,32,37,102,32,97,104,58,32,37,102,32,61,62,32,100,58,32,40,37,102,44,32,37,102,41,32,37,115,10,0,37,115,37,100,46,123,37,115,0,42,0,119,109,58,32,37,115,44,32,104,109,58,32,37,115,44,32,97,119,58,32,37,102,32,97,104,58,32,37,102,32,37,115,10,0,37,115,37,100,46,125,37,115,0,119,109,58,32,37,115,44,32,104,109,58,32,37,115,44,32,100,58,32,40,37,102,44,32,37,102,41,32,37,115,10,0,79,117,116,32,111,102,32,99,97,99,104,101,32,101,110,116,114,105,101,115,33,10,0,83,99,97,108,101,32,102,97,99,116,111,114,32,115,104,111,117,108,100,32,110,111,116,32,98,101,32,108,101,115,115,32,116,104,97,110,32,122,101,114,111,0,105,110,105,116,105,97,108,0,37,115,10,0,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,0,85,78,68,69,70,73,78,69,68,0,69,88,65,67,84,76,89,0,65,84,95,77,79,83,84,0,76,65,89,95,85,78,68,69,70,73,78,69,68,0,76,65,89,95,69,88,65,67,84,76,89,0,76,65,89,95,65,84,95,77,79,83,84,0,97,118,97,105,108,97,98,108,101,87,105,100,116,104,32,105,115,32,105,110,100,101,102,105,110,105,116,101,32,115,111,32,119,105,100,116,104,77,101,97,115,117,114,101,77,111,100,101,32,109,117,115,116,32,98,101,32,89,71,77,101,97,115,117,114,101,77,111,100,101,85,110,100,101,102,105,110,101,100,0,97,118,97,105,108,97,98,108,101,72,101,105,103,104,116,32,105,115,32,105,110,100,101,102,105,110,105,116,101,32,115,111,32,104,101,105,103,104,116,77,101,97,115,117,114,101,77,111,100,101,32,109,117,115,116,32,98,101,32,89,71,77,101,97,115,117,114,101,77,111,100,101,85,110,100,101,102,105,110,101,100,0,102,108,101,120,0,115,116,114,101,116,99,104,0,109,117,108,116,105,108,105,110,101,45,115,116,114,101,116,99,104,0,69,120,112,101,99,116,101,100,32,110,111,100,101,32,116,111,32,104,97,118,101,32,99,117,115,116,111,109,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,0,109,101,97,115,117,114,101,0,69,120,112,101,99,116,32,99,117,115,116,111,109,32,98,97,115,101,108,105,110,101,32,102,117,110,99,116,105,111,110,32,116,111,32,110,111,116,32,114,101,116,117,114,110,32,78,97,78,0,97,98,115,45,109,101,97,115,117,114,101,0,97,98,115,45,108,97,121,111,117,116,0,78,111,100,101,0,99,114,101,97,116,101,68,101,102,97,117,108,116,0,99,114,101,97,116,101,87,105,116,104,67,111,110,102,105,103,0,100,101,115,116,114,111,121,0,114,101,115,101,116,0,99,111,112,121,83,116,121,108,101,0,115,101,116,80,111,115,105,116,105,111,110,84,121,112,101,0,115,101,116,80,111,115,105,116,105,111,110,0,115,101,116,80,111,115,105,116,105,111,110,80,101,114,99,101,110,116,0,115,101,116,65,108,105,103,110,67,111,110,116,101,110,116,0,115,101,116,65,108,105,103,110,73,116,101,109,115,0,115,101,116,65,108,105,103,110,83,101,108,102,0,115,101,116,70,108,101,120,68,105,114,101,99,116,105,111,110,0,115,101,116,70,108,101,120,87,114,97,112,0,115,101,116,74,117,115,116,105,102,121,67,111,110,116,101,110,116,0,115,101,116,77,97,114,103,105,110,0,115,101,116,77,97,114,103,105,110,80,101,114,99,101,110,116,0,115,101,116,77,97,114,103,105,110,65,117,116,111,0,115,101,116,79,118,101,114,102,108,111,119,0,115,101,116,68,105,115,112,108,97,121,0,115,101,116,70,108,101,120,0,115,101,116,70,108,101,120,66,97,115,105,115,0,115,101,116,70,108,101,120,66,97,115,105,115,80,101,114,99,101,110,116,0,115,101,116,70,108,101,120,71,114,111,119,0,115,101,116,70,108,101,120,83,104,114,105,110,107,0,115,101,116,87,105,100,116,104,0,115,101,116,87,105,100,116,104,80,101,114,99,101,110,116,0,115,101,116,87,105,100,116,104,65,117,116,111,0,115,101,116,72,101,105,103,104,116,0,115,101,116,72,101,105,103,104,116,80,101,114,99,101,110,116,0,115,101,116,72,101,105,103,104,116,65,117,116,111,0,115,101,116,77,105,110,87,105,100,116,104,0,115,101,116,77,105,110,87,105,100,116,104,80,101,114,99,101,110,116,0,115,101,116,77,105,110,72,101,105,103,104,116,0,115,101,116,77,105,110,72,101,105,103,104,116,80,101,114,99,101,110,116,0,115,101,116,77,97,120,87,105,100,116,104,0,115,101,116,77,97,120,87,105,100,116,104,80,101,114,99,101,110,116,0,115,101,116,77,97,120,72,101,105,103,104,116,0,115,101,116,77,97,120,72,101,105,103,104,116,80,101,114,99,101,110,116,0,115,101,116,65,115,112,101,99,116,82,97,116,105,111,0,115,101,116,66,111,114,100,101,114,0,115,101,116,80,97,100,100,105,110,103,0,115,101,116,80,97,100,100,105,110,103,80,101,114,99,101,110,116,0,103,101,116,80,111,115,105,116,105,111,110,84,121,112,101,0,103,101,116,80,111,115,105,116,105,111,110,0,103,101,116,65,108,105,103,110,67,111,110,116,101,110,116,0,103,101,116,65,108,105,103,110,73,116,101,109,115,0,103,101,116,65,108,105,103,110,83,101,108,102,0,103,101,116,70,108,101,120,68,105,114,101,99,116,105,111,110,0,103,101,116,70,108,101,120,87,114,97,112,0,103,101,116,74,117,115,116,105,102,121,67,111,110,116,101,110,116,0,103,101,116,77,97,114,103,105,110,0,103,101,116,70,108,101,120,66,97,115,105,115,0,103,101,116,70,108,101,120,71,114,111,119,0,103,101,116,70,108,101,120,83,104,114,105,110,107,0,103,101,116,87,105,100,116,104,0,103,101,116,72,101,105,103,104,116,0,103,101,116,77,105,110,87,105,100,116,104,0,103,101,116,77,105,110,72,101,105,103,104,116,0,103,101,116,77,97,120,87,105,100,116,104,0,103,101,116,77,97,120,72,101,105,103,104,116,0,103,101,116,65,115,112,101,99,116,82,97,116,105,111,0,103,101,116,66,111,114,100,101,114,0,103,101,116,79,118,101,114,102,108,111,119,0,103,101,116,68,105,115,112,108,97,121,0,103,101,116,80,97,100,100,105,110,103,0,105,110,115,101,114,116,67,104,105,108,100,0,114,101,109,111,118,101,67,104,105,108,100,0,103,101,116,67,104,105,108,100,67,111,117,110,116,0,103,101,116,80,97,114,101,110,116,0,103,101,116,67,104,105,108,100,0,115,101,116,77,101,97,115,117,114,101,70,117,110,99,0,117,110,115,101,116,77,101,97,115,117,114,101,70,117,110,99,0,109,97,114,107,68,105,114,116,121,0,105,115,68,105,114,116,121,0,99,97,108,99,117,108,97,116,101,76,97,121,111,117,116,0,103,101,116,67,111,109,112,117,116,101,100,76,101,102,116,0,103,101,116,67,111,109,112,117,116,101,100,82,105,103,104,116,0,103,101,116,67,111,109,112,117,116,101,100,84,111,112,0,103,101,116,67,111,109,112,117,116,101,100,66,111,116,116,111,109,0,103,101,116,67,111,109,112,117,116,101,100,87,105,100,116,104,0,103,101,116,67,111,109,112,117,116,101,100,72,101,105,103,104,116,0,103,101,116,67,111,109,112,117,116,101,100,76,97,121,111,117,116,0,103,101,116,67,111,109,112,117,116,101,100,77,97,114,103,105,110,0,103,101,116,67,111,109,112,117,116,101,100,66,111,114,100,101,114,0,103,101,116,67,111,109,112,117,116,101,100,80,97,100,100,105,110,103,0,67,111,110,102,105,103,0,99,114,101,97,116,101,0,115,101,116,69,120,112,101,114,105,109,101,110,116,97,108,70,101,97,116,117,114,101,69,110,97,98,108,101,100,0,115,101,116,80,111,105,110,116,83,99,97,108,101,70,97,99,116,111,114,0,105,115,69,120,112,101,114,105,109,101,110,116,97,108,70,101,97,116,117,114,101,69,110,97,98,108,101,100,0,86,97,108,117,101,0,76,97,121,111,117,116,0,83,105,122,101,0,103,101,116,73,110,115,116,97,110,99,101,67,111,117,110,116,0,73,110,116,54,52,0,1,1,1,2,2,4,4,4,4,8,8,4,8,118,111,105,100,0,98,111,111,108,0,115,116,100,58,58,115,116,114,105,110,103,0,99,98,70,117,110,99,116,105,111,110,32,38,0,99,111,110,115,116,32,99,98,70,117,110,99,116,105,111,110,32,38,0,69,120,116,101,114,110,97,108,0,66,117,102,102,101,114,0,78,66,105,110,100,73,68,0,78,66,105,110,100,0,98,105,110,100,95,118,97,108,117,101,0,114,101,102,108,101,99,116,0,113,117,101,114,121,84,121,112,101,0,108,97,108,108,111,99,0,108,114,101,115,101,116,0,123,114,101,116,117,114,110,40,95,110,98,105,110,100,46,99,97,108,108,98,97,99,107,83,105,103,110,97,116,117,114,101,76,105,115,116,91,36,48,93,46,97,112,112,108,121,40,116,104,105,115,44,97,114,103,117,109,101,110,116,115,41,41,59,125,0,95,110,98,105,110,100,95,110,101,119,0,17,0,10,0,17,17,17,0,0,0,0,5,0,0,0,0,0,0,9,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,15,10,17,17,17,3,10,7,0,1,19,9,11,11,0,0,9,6,11,0,0,11,0,6,17,0,0,0,17,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,10,10,17,17,17,0,10,0,0,2,0,9,11,0,0,0,9,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,4,13,0,0,0,0,9,14,0,0,0,0,0,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,15,0,0,0,0,9,16,0,0,0,0,0,16,0,0,16,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,10,0,0,0,0,9,11,0,0,0,0,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,45,43,32,32,32,48,88,48,120,0,40,110,117,108,108,41,0,45,48,88,43,48,88,32,48,88,45,48,120,43,48,120,32,48,120,0,105,110,102,0,73,78,70,0,110,97,110,0,78,65,78,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,46,0,84,33,34,25,13,1,2,3,17,75,28,12,16,4,11,29,18,30,39,104,110,111,112,113,98,32,5,6,15,19,20,21,26,8,22,7,40,36,23,24,9,10,14,27,31,37,35,131,130,125,38,42,43,60,61,62,63,67,71,74,77,88,89,90,91,92,93,94,95,96,97,99,100,101,102,103,105,106,107,108,114,115,116,121,122,123,124,0,73,108,108,101,103,97,108,32,98,121,116,101,32,115,101,113,117,101,110,99,101,0,68,111,109,97,105,110,32,101,114,114,111,114,0,82,101,115,117,108,116,32,110,111,116,32,114,101,112,114,101,115,101,110,116,97,98,108,101,0,78,111,116,32,97,32,116,116,121,0,80,101,114,109,105,115,115,105,111,110,32,100,101,110,105,101,100,0,79,112,101,114,97,116,105,111,110,32,110,111,116,32,112,101,114,109,105,116,116,101,100,0,78,111,32,115,117,99,104,32,102,105,108,101,32,111,114,32,100,105,114,101,99,116,111,114,121,0,78,111,32,115,117,99,104,32,112,114,111,99,101,115,115,0,70,105,108,101,32,101,120,105,115,116,115,0,86,97,108,117,101,32,116,111,111,32,108,97,114,103,101,32,102,111,114,32,100,97,116,97,32,116,121,112,101,0,78,111,32,115,112,97,99,101,32,108,101,102,116,32,111,110,32,100,101,118,105,99,101,0,79,117,116,32,111,102,32,109,101,109,111,114,121,0,82,101,115,111,117,114,99,101,32,98,117,115,121,0,73,110,116,101,114,114,117,112,116,101,100,32,115,121,115,116,101,109,32,99,97,108,108,0,82,101,115,111,117,114,99,101,32,116,101,109,112,111,114,97,114,105,108,121,32,117,110,97,118,97,105,108,97,98,108,101,0,73,110,118,97,108,105,100,32,115,101,101,107,0,67,114,111,115,115,45,100,101,118,105,99,101,32,108,105,110,107,0,82,101,97,100,45,111,110,108,121,32,102,105,108,101,32,115,121,115,116,101,109,0,68,105,114,101,99,116,111,114,121,32,110,111,116,32,101,109,112,116,121,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,112,101,101,114,0,79,112,101,114,97,116,105,111,110,32,116,105,109,101,100,32,111,117,116,0,67,111,110,110,101,99,116,105,111,110,32,114,101,102,117,115,101,100,0,72,111,115,116,32,105,115,32,100,111,119,110,0,72,111,115,116,32,105,115,32,117,110,114,101,97,99,104,97,98,108,101,0,65,100,100,114,101,115,115,32,105,110,32,117,115,101,0,66,114,111,107,101,110,32,112,105,112,101,0,73,47,79,32,101,114,114,111,114,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,32,111,114,32,97,100,100,114,101,115,115,0,66,108,111,99,107,32,100,101,118,105,99,101,32,114,101,113,117,105,114,101,100,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,0,78,111,116,32,97,32,100,105,114,101,99,116,111,114,121,0,73,115,32,97,32,100,105,114,101,99,116,111,114,121,0,84,101,120,116,32,102,105,108,101,32,98,117,115,121,0,69,120,101,99,32,102,111,114,109,97,116,32,101,114,114,111,114,0,73,110,118,97,108,105,100,32,97,114,103,117,109,101,110,116,0,65,114,103,117,109,101,110,116,32,108,105,115,116,32,116,111,111,32,108,111,110,103,0,83,121,109,98,111,108,105,99,32,108,105,110,107,32,108,111,111,112,0,70,105,108,101,110,97,109,101,32,116,111,111,32,108,111,110,103,0,84,111,111,32,109,97,110,121,32,111,112,101,110,32,102,105,108,101,115,32,105,110,32,115,121,115,116,101,109,0,78,111,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,115,32,97,118,97,105,108,97,98,108,101,0,66,97,100,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,0,78,111,32,99,104,105,108,100,32,112,114,111,99,101,115,115,0,66,97,100,32,97,100,100,114,101,115,115,0,70,105,108,101,32,116,111,111,32,108,97,114,103,101,0,84,111,111,32,109,97,110,121,32,108,105,110,107,115,0,78,111,32,108,111,99,107,115,32,97,118,97,105,108,97,98,108,101,0,82,101,115,111,117,114,99,101,32,100,101,97,100,108,111,99,107,32,119,111,117,108,100,32,111,99,99,117,114,0,83,116,97,116,101,32,110,111,116,32,114,101,99,111,118,101,114,97,98,108,101,0,80,114,101,118,105,111,117,115,32,111,119,110,101,114,32,100,105,101,100,0,79,112,101,114,97,116,105,111,110,32,99,97,110,99,101,108,101,100,0,70,117,110,99,116,105,111,110,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,78,111,32,109,101,115,115,97,103,101,32,111,102,32,100,101,115,105,114,101,100,32,116,121,112,101,0,73,100,101,110,116,105,102,105,101,114,32,114,101,109,111,118,101,100,0,68,101,118,105,99,101,32,110,111,116,32,97,32,115,116,114,101,97,109,0,78,111,32,100,97,116,97,32,97,118,97,105,108,97,98,108,101,0,68,101,118,105,99,101,32,116,105,109,101,111,117,116,0,79,117,116,32,111,102,32,115,116,114,101,97,109,115,32,114,101,115,111,117,114,99,101,115,0,76,105,110,107,32,104,97,115,32,98,101,101,110,32,115,101,118,101,114,101,100,0,80,114,111,116,111,99,111,108,32,101,114,114,111,114,0,66,97,100,32,109,101,115,115,97,103,101,0,70,105,108,101,32,100,101,115,99,114,105,112,116,111,114,32,105,110,32,98,97,100,32,115,116,97,116,101,0,78,111,116,32,97,32,115,111,99,107,101,116,0,68,101,115,116,105,110,97,116,105,111,110,32,97,100,100,114,101,115,115,32,114,101,113,117,105,114,101,100,0,77,101,115,115,97,103,101,32,116,111,111,32,108,97,114,103,101,0,80,114,111,116,111,99,111,108,32,119,114,111,110,103,32,116,121,112,101,32,102,111,114,32,115,111,99,107,101,116,0,80,114,111,116,111,99,111,108,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,80,114,111,116,111,99,111,108,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,83,111,99,107,101,116,32,116,121,112,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,78,111,116,32,115,117,112,112,111,114,116,101,100,0,80,114,111,116,111,99,111,108,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,65,100,100,114,101,115,115,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,98,121,32,112,114,111,116,111,99,111,108,0,65,100,100,114,101,115,115,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,78,101,116,119,111,114,107,32,105,115,32,100,111,119,110,0,78,101,116,119,111,114,107,32,117,110,114,101,97,99,104,97,98,108,101,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,110,101,116,119,111,114,107,0,67,111,110,110,101,99,116,105,111,110,32,97,98,111,114,116,101,100,0,78,111,32,98,117,102,102,101,114,32,115,112,97,99,101,32,97,118,97,105,108,97,98,108,101,0,83,111,99,107,101,116,32,105,115,32,99,111,110,110,101,99,116,101,100,0,83,111,99,107,101,116,32,110,111,116,32,99,111,110,110,101,99,116,101,100,0,67,97,110,110,111,116,32,115,101,110,100,32,97,102,116,101,114,32,115,111,99,107,101,116,32,115,104,117,116,100,111,119,110,0,79,112,101,114,97,116,105,111,110,32,97,108,114,101,97,100,121,32,105,110,32,112,114,111,103,114,101,115,115,0,79,112,101,114,97,116,105,111,110,32,105,110,32,112,114,111,103,114,101,115,115,0,83,116,97,108,101,32,102,105,108,101,32,104,97,110,100,108,101,0,82,101,109,111,116,101,32,73,47,79,32,101,114,114,111,114,0,81,117,111,116,97,32,101,120,99,101,101,100,101,100,0,78,111,32,109,101,100,105,117,109,32,102,111,117,110,100,0,87,114,111,110,103,32,109,101,100,105,117,109,32,116,121,112,101,0,78,111,32,101,114,114,111,114,32,105,110,102,111,114,109,97,116,105,111,110,0,0],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE);var tempDoublePtr=STATICTOP;STATICTOP+=16;function _atexit(t,e){__ATEXIT__.unshift({func:t,arg:e})}function ___cxa_atexit(){return _atexit.apply(null,arguments)}function _abort(){Module.abort()}function __ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj(){Module.printErr("missing function: _ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj"),abort(-1)}function __decorate(t,e,r,s){var a=arguments.length,n=a<3?e:s===null?s=Object.getOwnPropertyDescriptor(e,r):s,c;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")n=Reflect.decorate(t,e,r,s);else for(var f=t.length-1;f>=0;f--)(c=t[f])&&(n=(a<3?c(n):a>3?c(e,r,n):c(e,r))||n);return a>3&&n&&Object.defineProperty(e,r,n),n}function _defineHidden(t){return function(e,r){Object.defineProperty(e,r,{configurable:!1,enumerable:!1,value:t,writable:!0})}}var _nbind={};function __nbind_free_external(t){_nbind.externalList[t].dereference(t)}function __nbind_reference_external(t){_nbind.externalList[t].reference()}function _llvm_stackrestore(t){var e=_llvm_stacksave,r=e.LLVM_SAVEDSTACKS[t];e.LLVM_SAVEDSTACKS.splice(t,1),Runtime.stackRestore(r)}function __nbind_register_pool(t,e,r,s){_nbind.Pool.pageSize=t,_nbind.Pool.usedPtr=e/4,_nbind.Pool.rootPtr=r,_nbind.Pool.pagePtr=s/4,HEAP32[e/4]=16909060,HEAP8[e]==1&&(_nbind.bigEndian=!0),HEAP32[e/4]=0,_nbind.makeTypeKindTbl=(n={},n[1024]=_nbind.PrimitiveType,n[64]=_nbind.Int64Type,n[2048]=_nbind.BindClass,n[3072]=_nbind.BindClassPtr,n[4096]=_nbind.SharedClassPtr,n[5120]=_nbind.ArrayType,n[6144]=_nbind.ArrayType,n[7168]=_nbind.CStringType,n[9216]=_nbind.CallbackType,n[10240]=_nbind.BindType,n),_nbind.makeTypeNameTbl={Buffer:_nbind.BufferType,External:_nbind.ExternalType,Int64:_nbind.Int64Type,_nbind_new:_nbind.CreateValueType,bool:_nbind.BooleanType,"cbFunction &":_nbind.CallbackType,"const cbFunction &":_nbind.CallbackType,"const std::string &":_nbind.StringType,"std::string":_nbind.StringType},Module.toggleLightGC=_nbind.toggleLightGC,_nbind.callUpcast=Module.dynCall_ii;var a=_nbind.makeType(_nbind.constructType,{flags:2048,id:0,name:""});a.proto=Module,_nbind.BindClass.list.push(a);var n}function _emscripten_set_main_loop_timing(t,e){if(Browser.mainLoop.timingMode=t,Browser.mainLoop.timingValue=e,!Browser.mainLoop.func)return 1;if(t==0)Browser.mainLoop.scheduler=function(){var c=Math.max(0,Browser.mainLoop.tickStartTime+e-_emscripten_get_now())|0;setTimeout(Browser.mainLoop.runner,c)},Browser.mainLoop.method="timeout";else if(t==1)Browser.mainLoop.scheduler=function(){Browser.requestAnimationFrame(Browser.mainLoop.runner)},Browser.mainLoop.method="rAF";else if(t==2){if(!window.setImmediate){let n=function(c){c.source===window&&c.data===s&&(c.stopPropagation(),r.shift()())};var a=n,r=[],s="setimmediate";window.addEventListener("message",n,!0),window.setImmediate=function(f){r.push(f),ENVIRONMENT_IS_WORKER?(Module.setImmediates===void 0&&(Module.setImmediates=[]),Module.setImmediates.push(f),window.postMessage({target:s})):window.postMessage(s,"*")}}Browser.mainLoop.scheduler=function(){window.setImmediate(Browser.mainLoop.runner)},Browser.mainLoop.method="immediate"}return 0}function _emscripten_get_now(){abort()}function _emscripten_set_main_loop(t,e,r,s,a){Module.noExitRuntime=!0,assert(!Browser.mainLoop.func,"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters."),Browser.mainLoop.func=t,Browser.mainLoop.arg=s;var n;typeof s<"u"?n=function(){Module.dynCall_vi(t,s)}:n=function(){Module.dynCall_v(t)};var c=Browser.mainLoop.currentlyRunningMainloop;if(Browser.mainLoop.runner=function(){if(!ABORT){if(Browser.mainLoop.queue.length>0){var p=Date.now(),h=Browser.mainLoop.queue.shift();if(h.func(h.arg),Browser.mainLoop.remainingBlockers){var E=Browser.mainLoop.remainingBlockers,C=E%1==0?E-1:Math.floor(E);h.counted?Browser.mainLoop.remainingBlockers=C:(C=C+.5,Browser.mainLoop.remainingBlockers=(8*E+C)/9)}if(console.log('main loop blocker "'+h.name+'" took '+(Date.now()-p)+" ms"),Browser.mainLoop.updateStatus(),c1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}else Browser.mainLoop.timingMode==0&&(Browser.mainLoop.tickStartTime=_emscripten_get_now());Browser.mainLoop.method==="timeout"&&Module.ctx&&(Module.printErr("Looks like you are rendering without using requestAnimationFrame for the main loop. You should use 0 for the frame rate in emscripten_set_main_loop in order to use requestAnimationFrame, as that can greatly improve your frame rates!"),Browser.mainLoop.method=""),Browser.mainLoop.runIter(n),!(c0?_emscripten_set_main_loop_timing(0,1e3/e):_emscripten_set_main_loop_timing(1,1),Browser.mainLoop.scheduler()),r)throw"SimulateInfiniteLoop"}var Browser={mainLoop:{scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:function(){Browser.mainLoop.scheduler=null,Browser.mainLoop.currentlyRunningMainloop++},resume:function(){Browser.mainLoop.currentlyRunningMainloop++;var t=Browser.mainLoop.timingMode,e=Browser.mainLoop.timingValue,r=Browser.mainLoop.func;Browser.mainLoop.func=null,_emscripten_set_main_loop(r,0,!1,Browser.mainLoop.arg,!0),_emscripten_set_main_loop_timing(t,e),Browser.mainLoop.scheduler()},updateStatus:function(){if(Module.setStatus){var t=Module.statusMessage||"Please wait...",e=Browser.mainLoop.remainingBlockers,r=Browser.mainLoop.expectedBlockers;e?e"u"&&(console.log("warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available."),Module.noImageDecoding=!0);var t={};t.canHandle=function(n){return!Module.noImageDecoding&&/\.(jpg|jpeg|png|bmp)$/i.test(n)},t.handle=function(n,c,f,p){var h=null;if(Browser.hasBlobConstructor)try{h=new Blob([n],{type:Browser.getMimetype(c)}),h.size!==n.length&&(h=new Blob([new Uint8Array(n).buffer],{type:Browser.getMimetype(c)}))}catch(P){Runtime.warnOnce("Blob constructor present but fails: "+P+"; falling back to blob builder")}if(!h){var E=new Browser.BlobBuilder;E.append(new Uint8Array(n).buffer),h=E.getBlob()}var C=Browser.URLObject.createObjectURL(h),S=new Image;S.onload=function(){assert(S.complete,"Image "+c+" could not be decoded");var I=document.createElement("canvas");I.width=S.width,I.height=S.height;var R=I.getContext("2d");R.drawImage(S,0,0),Module.preloadedImages[c]=I,Browser.URLObject.revokeObjectURL(C),f&&f(n)},S.onerror=function(I){console.log("Image "+C+" could not be decoded"),p&&p()},S.src=C},Module.preloadPlugins.push(t);var e={};e.canHandle=function(n){return!Module.noAudioDecoding&&n.substr(-4)in{".ogg":1,".wav":1,".mp3":1}},e.handle=function(n,c,f,p){var h=!1;function E(R){h||(h=!0,Module.preloadedAudios[c]=R,f&&f(n))}function C(){h||(h=!0,Module.preloadedAudios[c]=new Audio,p&&p())}if(Browser.hasBlobConstructor){try{var S=new Blob([n],{type:Browser.getMimetype(c)})}catch{return C()}var P=Browser.URLObject.createObjectURL(S),I=new Audio;I.addEventListener("canplaythrough",function(){E(I)},!1),I.onerror=function(N){if(h)return;console.log("warning: browser could not fully decode audio "+c+", trying slower base64 approach");function U(W){for(var te="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",ie="=",Ae="",ce=0,me=0,pe=0;pe=6;){var Be=ce>>me-6&63;me-=6,Ae+=te[Be]}return me==2?(Ae+=te[(ce&3)<<4],Ae+=ie+ie):me==4&&(Ae+=te[(ce&15)<<2],Ae+=ie),Ae}I.src="data:audio/x-"+c.substr(-3)+";base64,"+U(n),E(I)},I.src=P,Browser.safeSetTimeout(function(){E(I)},1e4)}else return C()},Module.preloadPlugins.push(e);function r(){Browser.pointerLock=document.pointerLockElement===Module.canvas||document.mozPointerLockElement===Module.canvas||document.webkitPointerLockElement===Module.canvas||document.msPointerLockElement===Module.canvas}var s=Module.canvas;s&&(s.requestPointerLock=s.requestPointerLock||s.mozRequestPointerLock||s.webkitRequestPointerLock||s.msRequestPointerLock||function(){},s.exitPointerLock=document.exitPointerLock||document.mozExitPointerLock||document.webkitExitPointerLock||document.msExitPointerLock||function(){},s.exitPointerLock=s.exitPointerLock.bind(document),document.addEventListener("pointerlockchange",r,!1),document.addEventListener("mozpointerlockchange",r,!1),document.addEventListener("webkitpointerlockchange",r,!1),document.addEventListener("mspointerlockchange",r,!1),Module.elementPointerLock&&s.addEventListener("click",function(a){!Browser.pointerLock&&Module.canvas.requestPointerLock&&(Module.canvas.requestPointerLock(),a.preventDefault())},!1))},createContext:function(t,e,r,s){if(e&&Module.ctx&&t==Module.canvas)return Module.ctx;var a,n;if(e){var c={antialias:!1,alpha:!1};if(s)for(var f in s)c[f]=s[f];n=GL.createContext(t,c),n&&(a=GL.getContext(n).GLctx)}else a=t.getContext("2d");return a?(r&&(e||assert(typeof GLctx>"u","cannot set in module if GLctx is used, but we are a non-GL context that would replace it"),Module.ctx=a,e&&GL.makeContextCurrent(n),Module.useWebGL=e,Browser.moduleContextCreatedCallbacks.forEach(function(p){p()}),Browser.init()),a):null},destroyContext:function(t,e,r){},fullscreenHandlersInstalled:!1,lockPointer:void 0,resizeCanvas:void 0,requestFullscreen:function(t,e,r){Browser.lockPointer=t,Browser.resizeCanvas=e,Browser.vrDevice=r,typeof Browser.lockPointer>"u"&&(Browser.lockPointer=!0),typeof Browser.resizeCanvas>"u"&&(Browser.resizeCanvas=!1),typeof Browser.vrDevice>"u"&&(Browser.vrDevice=null);var s=Module.canvas;function a(){Browser.isFullscreen=!1;var c=s.parentNode;(document.fullscreenElement||document.mozFullScreenElement||document.msFullscreenElement||document.webkitFullscreenElement||document.webkitCurrentFullScreenElement)===c?(s.exitFullscreen=document.exitFullscreen||document.cancelFullScreen||document.mozCancelFullScreen||document.msExitFullscreen||document.webkitCancelFullScreen||function(){},s.exitFullscreen=s.exitFullscreen.bind(document),Browser.lockPointer&&s.requestPointerLock(),Browser.isFullscreen=!0,Browser.resizeCanvas&&Browser.setFullscreenCanvasSize()):(c.parentNode.insertBefore(s,c),c.parentNode.removeChild(c),Browser.resizeCanvas&&Browser.setWindowedCanvasSize()),Module.onFullScreen&&Module.onFullScreen(Browser.isFullscreen),Module.onFullscreen&&Module.onFullscreen(Browser.isFullscreen),Browser.updateCanvasDimensions(s)}Browser.fullscreenHandlersInstalled||(Browser.fullscreenHandlersInstalled=!0,document.addEventListener("fullscreenchange",a,!1),document.addEventListener("mozfullscreenchange",a,!1),document.addEventListener("webkitfullscreenchange",a,!1),document.addEventListener("MSFullscreenChange",a,!1));var n=document.createElement("div");s.parentNode.insertBefore(n,s),n.appendChild(s),n.requestFullscreen=n.requestFullscreen||n.mozRequestFullScreen||n.msRequestFullscreen||(n.webkitRequestFullscreen?function(){n.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT)}:null)||(n.webkitRequestFullScreen?function(){n.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT)}:null),r?n.requestFullscreen({vrDisplay:r}):n.requestFullscreen()},requestFullScreen:function(t,e,r){return Module.printErr("Browser.requestFullScreen() is deprecated. Please call Browser.requestFullscreen instead."),Browser.requestFullScreen=function(s,a,n){return Browser.requestFullscreen(s,a,n)},Browser.requestFullscreen(t,e,r)},nextRAF:0,fakeRequestAnimationFrame:function(t){var e=Date.now();if(Browser.nextRAF===0)Browser.nextRAF=e+1e3/60;else for(;e+2>=Browser.nextRAF;)Browser.nextRAF+=1e3/60;var r=Math.max(Browser.nextRAF-e,0);setTimeout(t,r)},requestAnimationFrame:function t(e){typeof window>"u"?Browser.fakeRequestAnimationFrame(e):(window.requestAnimationFrame||(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame||Browser.fakeRequestAnimationFrame),window.requestAnimationFrame(e))},safeCallback:function(t){return function(){if(!ABORT)return t.apply(null,arguments)}},allowAsyncCallbacks:!0,queuedAsyncCallbacks:[],pauseAsyncCallbacks:function(){Browser.allowAsyncCallbacks=!1},resumeAsyncCallbacks:function(){if(Browser.allowAsyncCallbacks=!0,Browser.queuedAsyncCallbacks.length>0){var t=Browser.queuedAsyncCallbacks;Browser.queuedAsyncCallbacks=[],t.forEach(function(e){e()})}},safeRequestAnimationFrame:function(t){return Browser.requestAnimationFrame(function(){ABORT||(Browser.allowAsyncCallbacks?t():Browser.queuedAsyncCallbacks.push(t))})},safeSetTimeout:function(t,e){return Module.noExitRuntime=!0,setTimeout(function(){ABORT||(Browser.allowAsyncCallbacks?t():Browser.queuedAsyncCallbacks.push(t))},e)},safeSetInterval:function(t,e){return Module.noExitRuntime=!0,setInterval(function(){ABORT||Browser.allowAsyncCallbacks&&t()},e)},getMimetype:function(t){return{jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png",bmp:"image/bmp",ogg:"audio/ogg",wav:"audio/wav",mp3:"audio/mpeg"}[t.substr(t.lastIndexOf(".")+1)]},getUserMedia:function(t){window.getUserMedia||(window.getUserMedia=navigator.getUserMedia||navigator.mozGetUserMedia),window.getUserMedia(t)},getMovementX:function(t){return t.movementX||t.mozMovementX||t.webkitMovementX||0},getMovementY:function(t){return t.movementY||t.mozMovementY||t.webkitMovementY||0},getMouseWheelDelta:function(t){var e=0;switch(t.type){case"DOMMouseScroll":e=t.detail;break;case"mousewheel":e=t.wheelDelta;break;case"wheel":e=t.deltaY;break;default:throw"unrecognized mouse wheel event: "+t.type}return e},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:function(t){if(Browser.pointerLock)t.type!="mousemove"&&"mozMovementX"in t?Browser.mouseMovementX=Browser.mouseMovementY=0:(Browser.mouseMovementX=Browser.getMovementX(t),Browser.mouseMovementY=Browser.getMovementY(t)),typeof SDL<"u"?(Browser.mouseX=SDL.mouseX+Browser.mouseMovementX,Browser.mouseY=SDL.mouseY+Browser.mouseMovementY):(Browser.mouseX+=Browser.mouseMovementX,Browser.mouseY+=Browser.mouseMovementY);else{var e=Module.canvas.getBoundingClientRect(),r=Module.canvas.width,s=Module.canvas.height,a=typeof window.scrollX<"u"?window.scrollX:window.pageXOffset,n=typeof window.scrollY<"u"?window.scrollY:window.pageYOffset;if(t.type==="touchstart"||t.type==="touchend"||t.type==="touchmove"){var c=t.touch;if(c===void 0)return;var f=c.pageX-(a+e.left),p=c.pageY-(n+e.top);f=f*(r/e.width),p=p*(s/e.height);var h={x:f,y:p};if(t.type==="touchstart")Browser.lastTouches[c.identifier]=h,Browser.touches[c.identifier]=h;else if(t.type==="touchend"||t.type==="touchmove"){var E=Browser.touches[c.identifier];E||(E=h),Browser.lastTouches[c.identifier]=E,Browser.touches[c.identifier]=h}return}var C=t.pageX-(a+e.left),S=t.pageY-(n+e.top);C=C*(r/e.width),S=S*(s/e.height),Browser.mouseMovementX=C-Browser.mouseX,Browser.mouseMovementY=S-Browser.mouseY,Browser.mouseX=C,Browser.mouseY=S}},asyncLoad:function(t,e,r,s){var a=s?"":"al "+t;Module.readAsync(t,function(n){assert(n,'Loading data file "'+t+'" failed (no arrayBuffer).'),e(new Uint8Array(n)),a&&removeRunDependency(a)},function(n){if(r)r();else throw'Loading data file "'+t+'" failed.'}),a&&addRunDependency(a)},resizeListeners:[],updateResizeListeners:function(){var t=Module.canvas;Browser.resizeListeners.forEach(function(e){e(t.width,t.height)})},setCanvasSize:function(t,e,r){var s=Module.canvas;Browser.updateCanvasDimensions(s,t,e),r||Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize:function(){if(typeof SDL<"u"){var t=HEAPU32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2];t=t|8388608,HEAP32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2]=t}Browser.updateResizeListeners()},setWindowedCanvasSize:function(){if(typeof SDL<"u"){var t=HEAPU32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2];t=t&-8388609,HEAP32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2]=t}Browser.updateResizeListeners()},updateCanvasDimensions:function(t,e,r){e&&r?(t.widthNative=e,t.heightNative=r):(e=t.widthNative,r=t.heightNative);var s=e,a=r;if(Module.forcedAspectRatio&&Module.forcedAspectRatio>0&&(s/a>2];return e},getStr:function(){var t=Pointer_stringify(SYSCALLS.get());return t},get64:function(){var t=SYSCALLS.get(),e=SYSCALLS.get();return t>=0?assert(e===0):assert(e===-1),t},getZero:function(){assert(SYSCALLS.get()===0)}};function ___syscall6(t,e){SYSCALLS.varargs=e;try{var r=SYSCALLS.getStreamFromFD();return FS.close(r),0}catch(s){return(typeof FS>"u"||!(s instanceof FS.ErrnoError))&&abort(s),-s.errno}}function ___syscall54(t,e){SYSCALLS.varargs=e;try{return 0}catch(r){return(typeof FS>"u"||!(r instanceof FS.ErrnoError))&&abort(r),-r.errno}}function _typeModule(t){var e=[[0,1,"X"],[1,1,"const X"],[128,1,"X *"],[256,1,"X &"],[384,1,"X &&"],[512,1,"std::shared_ptr"],[640,1,"std::unique_ptr"],[5120,1,"std::vector"],[6144,2,"std::array"],[9216,-1,"std::function"]];function r(p,h,E,C,S,P){if(h==1){var I=C&896;(I==128||I==256||I==384)&&(p="X const")}var R;return P?R=E.replace("X",p).replace("Y",S):R=p.replace("X",E).replace("Y",S),R.replace(/([*&]) (?=[*&])/g,"$1")}function s(p,h,E,C,S){throw new Error(p+" type "+E.replace("X",h+"?")+(C?" with flag "+C:"")+" in "+S)}function a(p,h,E,C,S,P,I,R){P===void 0&&(P="X"),R===void 0&&(R=1);var N=E(p);if(N)return N;var U=C(p),W=U.placeholderFlag,te=e[W];I&&te&&(P=r(I[2],I[0],P,te[0],"?",!0));var ie;W==0&&(ie="Unbound"),W>=10&&(ie="Corrupt"),R>20&&(ie="Deeply nested"),ie&&s(ie,p,P,W,S||"?");var Ae=U.paramList[0],ce=a(Ae,h,E,C,S,P,te,R+1),me,pe={flags:te[0],id:p,name:"",paramList:[ce]},Be=[],Ce="?";switch(U.placeholderFlag){case 1:me=ce.spec;break;case 2:if((ce.flags&15360)==1024&&ce.spec.ptrSize==1){pe.flags=7168;break}case 3:case 6:case 5:me=ce.spec,ce.flags&15360;break;case 8:Ce=""+U.paramList[1],pe.paramList.push(U.paramList[1]);break;case 9:for(var g=0,we=U.paramList[1];g>2]=t),t}function _llvm_stacksave(){var t=_llvm_stacksave;return t.LLVM_SAVEDSTACKS||(t.LLVM_SAVEDSTACKS=[]),t.LLVM_SAVEDSTACKS.push(Runtime.stackSave()),t.LLVM_SAVEDSTACKS.length-1}function ___syscall140(t,e){SYSCALLS.varargs=e;try{var r=SYSCALLS.getStreamFromFD(),s=SYSCALLS.get(),a=SYSCALLS.get(),n=SYSCALLS.get(),c=SYSCALLS.get(),f=a;return FS.llseek(r,f,c),HEAP32[n>>2]=r.position,r.getdents&&f===0&&c===0&&(r.getdents=null),0}catch(p){return(typeof FS>"u"||!(p instanceof FS.ErrnoError))&&abort(p),-p.errno}}function ___syscall146(t,e){SYSCALLS.varargs=e;try{var r=SYSCALLS.get(),s=SYSCALLS.get(),a=SYSCALLS.get(),n=0;___syscall146.buffer||(___syscall146.buffers=[null,[],[]],___syscall146.printChar=function(E,C){var S=___syscall146.buffers[E];assert(S),C===0||C===10?((E===1?Module.print:Module.printErr)(UTF8ArrayToString(S,0)),S.length=0):S.push(C)});for(var c=0;c>2],p=HEAP32[s+(c*8+4)>>2],h=0;h"u"||!(E instanceof FS.ErrnoError))&&abort(E),-E.errno}}function __nbind_finish(){for(var t=0,e=_nbind.BindClass.list;tt.pageSize/2||e>t.pageSize-r){var s=_nbind.typeNameTbl.NBind.proto;return s.lalloc(e)}else return HEAPU32[t.usedPtr]=r+e,t.rootPtr+r},t.lreset=function(e,r){var s=HEAPU32[t.pagePtr];if(s){var a=_nbind.typeNameTbl.NBind.proto;a.lreset(e,r)}else HEAPU32[t.usedPtr]=e},t}();_nbind.Pool=Pool;function constructType(t,e){var r=t==10240?_nbind.makeTypeNameTbl[e.name]||_nbind.BindType:_nbind.makeTypeKindTbl[t],s=new r(e);return typeIdTbl[e.id]=s,_nbind.typeNameTbl[e.name]=s,s}_nbind.constructType=constructType;function getType(t){return typeIdTbl[t]}_nbind.getType=getType;function queryType(t){var e=HEAPU8[t],r=_nbind.structureList[e][1];t/=4,r<0&&(++t,r=HEAPU32[t]+1);var s=Array.prototype.slice.call(HEAPU32.subarray(t+1,t+1+r));return e==9&&(s=[s[0],s.slice(1)]),{paramList:s,placeholderFlag:e}}_nbind.queryType=queryType;function getTypes(t,e){return t.map(function(r){return typeof r=="number"?_nbind.getComplexType(r,constructType,getType,queryType,e):_nbind.typeNameTbl[r]})}_nbind.getTypes=getTypes;function readTypeIdList(t,e){return Array.prototype.slice.call(HEAPU32,t/4,t/4+e)}_nbind.readTypeIdList=readTypeIdList;function readAsciiString(t){for(var e=t;HEAPU8[e++];);return String.fromCharCode.apply("",HEAPU8.subarray(t,e-1))}_nbind.readAsciiString=readAsciiString;function readPolicyList(t){var e={};if(t)for(;;){var r=HEAPU32[t/4];if(!r)break;e[readAsciiString(r)]=!0,t+=4}return e}_nbind.readPolicyList=readPolicyList;function getDynCall(t,e){var r={float32_t:"d",float64_t:"d",int64_t:"d",uint64_t:"d",void:"v"},s=t.map(function(n){return r[n.name]||"i"}).join(""),a=Module["dynCall_"+s];if(!a)throw new Error("dynCall_"+s+" not found for "+e+"("+t.map(function(n){return n.name}).join(", ")+")");return a}_nbind.getDynCall=getDynCall;function addMethod(t,e,r,s){var a=t[e];t.hasOwnProperty(e)&&a?((a.arity||a.arity===0)&&(a=_nbind.makeOverloader(a,a.arity),t[e]=a),a.addMethod(r,s)):(r.arity=s,t[e]=r)}_nbind.addMethod=addMethod;function throwError(t){throw new Error(t)}_nbind.throwError=throwError,_nbind.bigEndian=!1,_a=_typeModule(_typeModule),_nbind.Type=_a.Type,_nbind.makeType=_a.makeType,_nbind.getComplexType=_a.getComplexType,_nbind.structureList=_a.structureList;var BindType=function(t){__extends(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.heap=HEAPU32,r.ptrSize=4,r}return e.prototype.needsWireRead=function(r){return!!this.wireRead||!!this.makeWireRead},e.prototype.needsWireWrite=function(r){return!!this.wireWrite||!!this.makeWireWrite},e}(_nbind.Type);_nbind.BindType=BindType;var PrimitiveType=function(t){__extends(e,t);function e(r){var s=t.call(this,r)||this,a=r.flags&32?{32:HEAPF32,64:HEAPF64}:r.flags&8?{8:HEAPU8,16:HEAPU16,32:HEAPU32}:{8:HEAP8,16:HEAP16,32:HEAP32};return s.heap=a[r.ptrSize*8],s.ptrSize=r.ptrSize,s}return e.prototype.needsWireWrite=function(r){return!!r&&!!r.Strict},e.prototype.makeWireWrite=function(r,s){return s&&s.Strict&&function(a){if(typeof a=="number")return a;throw new Error("Type mismatch")}},e}(BindType);_nbind.PrimitiveType=PrimitiveType;function pushCString(t,e){if(t==null){if(e&&e.Nullable)return 0;throw new Error("Type mismatch")}if(e&&e.Strict){if(typeof t!="string")throw new Error("Type mismatch")}else t=t.toString();var r=Module.lengthBytesUTF8(t)+1,s=_nbind.Pool.lalloc(r);return Module.stringToUTF8Array(t,HEAPU8,s,r),s}_nbind.pushCString=pushCString;function popCString(t){return t===0?null:Module.Pointer_stringify(t)}_nbind.popCString=popCString;var CStringType=function(t){__extends(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.wireRead=popCString,r.wireWrite=pushCString,r.readResources=[_nbind.resources.pool],r.writeResources=[_nbind.resources.pool],r}return e.prototype.makeWireWrite=function(r,s){return function(a){return pushCString(a,s)}},e}(BindType);_nbind.CStringType=CStringType;var BooleanType=function(t){__extends(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.wireRead=function(s){return!!s},r}return e.prototype.needsWireWrite=function(r){return!!r&&!!r.Strict},e.prototype.makeWireRead=function(r){return"!!("+r+")"},e.prototype.makeWireWrite=function(r,s){return s&&s.Strict&&function(a){if(typeof a=="boolean")return a;throw new Error("Type mismatch")}||r},e}(BindType);_nbind.BooleanType=BooleanType;var Wrapper=function(){function t(){}return t.prototype.persist=function(){this.__nbindState|=1},t}();_nbind.Wrapper=Wrapper;function makeBound(t,e){var r=function(s){__extends(a,s);function a(n,c,f,p){var h=s.call(this)||this;if(!(h instanceof a))return new(Function.prototype.bind.apply(a,Array.prototype.concat.apply([null],arguments)));var E=c,C=f,S=p;if(n!==_nbind.ptrMarker){var P=h.__nbindConstructor.apply(h,arguments);E=4608,S=HEAPU32[P/4],C=HEAPU32[P/4+1]}var I={configurable:!0,enumerable:!1,value:null,writable:!1},R={__nbindFlags:E,__nbindPtr:C};S&&(R.__nbindShared=S,_nbind.mark(h));for(var N=0,U=Object.keys(R);N>=1;var r=_nbind.valueList[t];return _nbind.valueList[t]=firstFreeValue,firstFreeValue=t,r}else{if(e)return _nbind.popShared(t,e);throw new Error("Invalid value slot "+t)}}_nbind.popValue=popValue;var valueBase=18446744073709552e3;function push64(t){return typeof t=="number"?t:pushValue(t)*4096+valueBase}function pop64(t){return t=3?c=Buffer.from(n):c=new Buffer(n),c.copy(s)}else getBuffer(s).set(n)}}_nbind.commitBuffer=commitBuffer;var dirtyList=[],gcTimer=0;function sweep(){for(var t=0,e=dirtyList;t>2]=DYNAMIC_BASE,staticSealed=!0;function invoke_viiiii(t,e,r,s,a,n){try{Module.dynCall_viiiii(t,e,r,s,a,n)}catch(c){if(typeof c!="number"&&c!=="longjmp")throw c;Module.setThrew(1,0)}}function invoke_vif(t,e,r){try{Module.dynCall_vif(t,e,r)}catch(s){if(typeof s!="number"&&s!=="longjmp")throw s;Module.setThrew(1,0)}}function invoke_vid(t,e,r){try{Module.dynCall_vid(t,e,r)}catch(s){if(typeof s!="number"&&s!=="longjmp")throw s;Module.setThrew(1,0)}}function invoke_fiff(t,e,r,s){try{return Module.dynCall_fiff(t,e,r,s)}catch(a){if(typeof a!="number"&&a!=="longjmp")throw a;Module.setThrew(1,0)}}function invoke_vi(t,e){try{Module.dynCall_vi(t,e)}catch(r){if(typeof r!="number"&&r!=="longjmp")throw r;Module.setThrew(1,0)}}function invoke_vii(t,e,r){try{Module.dynCall_vii(t,e,r)}catch(s){if(typeof s!="number"&&s!=="longjmp")throw s;Module.setThrew(1,0)}}function invoke_ii(t,e){try{return Module.dynCall_ii(t,e)}catch(r){if(typeof r!="number"&&r!=="longjmp")throw r;Module.setThrew(1,0)}}function invoke_viddi(t,e,r,s,a){try{Module.dynCall_viddi(t,e,r,s,a)}catch(n){if(typeof n!="number"&&n!=="longjmp")throw n;Module.setThrew(1,0)}}function invoke_vidd(t,e,r,s){try{Module.dynCall_vidd(t,e,r,s)}catch(a){if(typeof a!="number"&&a!=="longjmp")throw a;Module.setThrew(1,0)}}function invoke_iiii(t,e,r,s){try{return Module.dynCall_iiii(t,e,r,s)}catch(a){if(typeof a!="number"&&a!=="longjmp")throw a;Module.setThrew(1,0)}}function invoke_diii(t,e,r,s){try{return Module.dynCall_diii(t,e,r,s)}catch(a){if(typeof a!="number"&&a!=="longjmp")throw a;Module.setThrew(1,0)}}function invoke_di(t,e){try{return Module.dynCall_di(t,e)}catch(r){if(typeof r!="number"&&r!=="longjmp")throw r;Module.setThrew(1,0)}}function invoke_iid(t,e,r){try{return Module.dynCall_iid(t,e,r)}catch(s){if(typeof s!="number"&&s!=="longjmp")throw s;Module.setThrew(1,0)}}function invoke_iii(t,e,r){try{return Module.dynCall_iii(t,e,r)}catch(s){if(typeof s!="number"&&s!=="longjmp")throw s;Module.setThrew(1,0)}}function invoke_viiddi(t,e,r,s,a,n){try{Module.dynCall_viiddi(t,e,r,s,a,n)}catch(c){if(typeof c!="number"&&c!=="longjmp")throw c;Module.setThrew(1,0)}}function invoke_viiiiii(t,e,r,s,a,n,c){try{Module.dynCall_viiiiii(t,e,r,s,a,n,c)}catch(f){if(typeof f!="number"&&f!=="longjmp")throw f;Module.setThrew(1,0)}}function invoke_dii(t,e,r){try{return Module.dynCall_dii(t,e,r)}catch(s){if(typeof s!="number"&&s!=="longjmp")throw s;Module.setThrew(1,0)}}function invoke_i(t){try{return Module.dynCall_i(t)}catch(e){if(typeof e!="number"&&e!=="longjmp")throw e;Module.setThrew(1,0)}}function invoke_iiiiii(t,e,r,s,a,n){try{return Module.dynCall_iiiiii(t,e,r,s,a,n)}catch(c){if(typeof c!="number"&&c!=="longjmp")throw c;Module.setThrew(1,0)}}function invoke_viiid(t,e,r,s,a){try{Module.dynCall_viiid(t,e,r,s,a)}catch(n){if(typeof n!="number"&&n!=="longjmp")throw n;Module.setThrew(1,0)}}function invoke_viififi(t,e,r,s,a,n,c){try{Module.dynCall_viififi(t,e,r,s,a,n,c)}catch(f){if(typeof f!="number"&&f!=="longjmp")throw f;Module.setThrew(1,0)}}function invoke_viii(t,e,r,s){try{Module.dynCall_viii(t,e,r,s)}catch(a){if(typeof a!="number"&&a!=="longjmp")throw a;Module.setThrew(1,0)}}function invoke_v(t){try{Module.dynCall_v(t)}catch(e){if(typeof e!="number"&&e!=="longjmp")throw e;Module.setThrew(1,0)}}function invoke_viid(t,e,r,s){try{Module.dynCall_viid(t,e,r,s)}catch(a){if(typeof a!="number"&&a!=="longjmp")throw a;Module.setThrew(1,0)}}function invoke_idd(t,e,r){try{return Module.dynCall_idd(t,e,r)}catch(s){if(typeof s!="number"&&s!=="longjmp")throw s;Module.setThrew(1,0)}}function invoke_viiii(t,e,r,s,a){try{Module.dynCall_viiii(t,e,r,s,a)}catch(n){if(typeof n!="number"&&n!=="longjmp")throw n;Module.setThrew(1,0)}}Module.asmGlobalArg={Math,Int8Array,Int16Array,Int32Array,Uint8Array,Uint16Array,Uint32Array,Float32Array,Float64Array,NaN:NaN,Infinity:1/0},Module.asmLibraryArg={abort,assert,enlargeMemory,getTotalMemory,abortOnCannotGrowMemory,invoke_viiiii,invoke_vif,invoke_vid,invoke_fiff,invoke_vi,invoke_vii,invoke_ii,invoke_viddi,invoke_vidd,invoke_iiii,invoke_diii,invoke_di,invoke_iid,invoke_iii,invoke_viiddi,invoke_viiiiii,invoke_dii,invoke_i,invoke_iiiiii,invoke_viiid,invoke_viififi,invoke_viii,invoke_v,invoke_viid,invoke_idd,invoke_viiii,_emscripten_asm_const_iiiii,_emscripten_asm_const_iiidddddd,_emscripten_asm_const_iiiid,__nbind_reference_external,_emscripten_asm_const_iiiiiiii,_removeAccessorPrefix,_typeModule,__nbind_register_pool,__decorate,_llvm_stackrestore,___cxa_atexit,__extends,__nbind_get_value_object,__ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj,_emscripten_set_main_loop_timing,__nbind_register_primitive,__nbind_register_type,_emscripten_memcpy_big,__nbind_register_function,___setErrNo,__nbind_register_class,__nbind_finish,_abort,_nbind_value,_llvm_stacksave,___syscall54,_defineHidden,_emscripten_set_main_loop,_emscripten_get_now,__nbind_register_callback_signature,_emscripten_asm_const_iiiiii,__nbind_free_external,_emscripten_asm_const_iiii,_emscripten_asm_const_iiididi,___syscall6,_atexit,___syscall140,___syscall146,DYNAMICTOP_PTR,tempDoublePtr,ABORT,STACKTOP,STACK_MAX,cttz_i8,___dso_handle};var asm=function(t,e,r){var s=new t.Int8Array(r),a=new t.Int16Array(r),n=new t.Int32Array(r),c=new t.Uint8Array(r),f=new t.Uint16Array(r),p=new t.Uint32Array(r),h=new t.Float32Array(r),E=new t.Float64Array(r),C=e.DYNAMICTOP_PTR|0,S=e.tempDoublePtr|0,P=e.ABORT|0,I=e.STACKTOP|0,R=e.STACK_MAX|0,N=e.cttz_i8|0,U=e.___dso_handle|0,W=0,te=0,ie=0,Ae=0,ce=t.NaN,me=t.Infinity,pe=0,Be=0,Ce=0,g=0,we=0,Ee=0,fe=t.Math.floor,se=t.Math.abs,X=t.Math.sqrt,De=t.Math.pow,Re=t.Math.cos,gt=t.Math.sin,j=t.Math.tan,rt=t.Math.acos,Fe=t.Math.asin,Ne=t.Math.atan,Pe=t.Math.atan2,Ye=t.Math.exp,ke=t.Math.log,it=t.Math.ceil,_e=t.Math.imul,x=t.Math.min,w=t.Math.max,b=t.Math.clz32,y=t.Math.fround,F=e.abort,z=e.assert,Z=e.enlargeMemory,$=e.getTotalMemory,oe=e.abortOnCannotGrowMemory,xe=e.invoke_viiiii,Te=e.invoke_vif,lt=e.invoke_vid,Et=e.invoke_fiff,qt=e.invoke_vi,ir=e.invoke_vii,Pt=e.invoke_ii,gn=e.invoke_viddi,Pr=e.invoke_vidd,Ir=e.invoke_iiii,Nr=e.invoke_diii,nn=e.invoke_di,oi=e.invoke_iid,wo=e.invoke_iii,rs=e.invoke_viiddi,eo=e.invoke_viiiiii,Bo=e.invoke_dii,Hi=e.invoke_i,to=e.invoke_iiiiii,vo=e.invoke_viiid,RA=e.invoke_viififi,pf=e.invoke_viii,Eh=e.invoke_v,Ih=e.invoke_viid,ro=e.invoke_idd,jn=e.invoke_viiii,Rs=e._emscripten_asm_const_iiiii,no=e._emscripten_asm_const_iiidddddd,lu=e._emscripten_asm_const_iiiid,cu=e.__nbind_reference_external,uu=e._emscripten_asm_const_iiiiiiii,FA=e._removeAccessorPrefix,NA=e._typeModule,aa=e.__nbind_register_pool,la=e.__decorate,OA=e._llvm_stackrestore,gr=e.___cxa_atexit,So=e.__extends,Me=e.__nbind_get_value_object,fu=e.__ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj,Cr=e._emscripten_set_main_loop_timing,hf=e.__nbind_register_primitive,LA=e.__nbind_register_type,MA=e._emscripten_memcpy_big,Au=e.__nbind_register_function,pu=e.___setErrNo,ac=e.__nbind_register_class,ve=e.__nbind_finish,Nt=e._abort,lc=e._nbind_value,Ni=e._llvm_stacksave,io=e.___syscall54,Rt=e._defineHidden,xn=e._emscripten_set_main_loop,ca=e._emscripten_get_now,ji=e.__nbind_register_callback_signature,Oi=e._emscripten_asm_const_iiiiii,Oa=e.__nbind_free_external,dn=e._emscripten_asm_const_iiii,Jn=e._emscripten_asm_const_iiididi,hu=e.___syscall6,Ch=e._atexit,La=e.___syscall140,Ma=e.___syscall146,Ua=y(0);let Xe=y(0);function Ha(o){o=o|0;var l=0;return l=I,I=I+o|0,I=I+15&-16,l|0}function gf(){return I|0}function cc(o){o=o|0,I=o}function wn(o,l){o=o|0,l=l|0,I=o,R=l}function ua(o,l){o=o|0,l=l|0,W||(W=o,te=l)}function _A(o){o=o|0,Ee=o}function UA(){return Ee|0}function fa(){var o=0,l=0;Qr(8104,8,400)|0,Qr(8504,408,540)|0,o=9044,l=o+44|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));s[9088]=0,s[9089]=1,n[2273]=0,n[2274]=948,n[2275]=948,gr(17,8104,U|0)|0}function vl(o){o=o|0,ht(o+948|0)}function Mt(o){return o=y(o),((SP(o)|0)&2147483647)>>>0>2139095040|0}function kn(o,l,u){o=o|0,l=l|0,u=u|0;e:do if(n[o+(l<<3)+4>>2]|0)o=o+(l<<3)|0;else{if((l|2|0)==3&&n[o+60>>2]|0){o=o+56|0;break}switch(l|0){case 0:case 2:case 4:case 5:{if(n[o+52>>2]|0){o=o+48|0;break e}break}default:}if(n[o+68>>2]|0){o=o+64|0;break}else{o=(l|1|0)==5?948:u;break}}while(!1);return o|0}function Aa(o){o=o|0;var l=0;return l=ex(1e3)|0,ja(o,(l|0)!=0,2456),n[2276]=(n[2276]|0)+1,Qr(l|0,8104,1e3)|0,s[o+2>>0]|0&&(n[l+4>>2]=2,n[l+12>>2]=4),n[l+976>>2]=o,l|0}function ja(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0;d=I,I=I+16|0,A=d,l||(n[A>>2]=u,Yg(o,5,3197,A)),I=d}function ns(){return Aa(956)|0}function uc(o){o=o|0;var l=0;return l=Jt(1e3)|0,gu(l,o),ja(n[o+976>>2]|0,1,2456),n[2276]=(n[2276]|0)+1,n[l+944>>2]=0,l|0}function gu(o,l){o=o|0,l=l|0;var u=0;Qr(o|0,l|0,948)|0,Dy(o+948|0,l+948|0),u=o+960|0,o=l+960|0,l=u+40|0;do n[u>>2]=n[o>>2],u=u+4|0,o=o+4|0;while((u|0)<(l|0))}function fc(o){o=o|0;var l=0,u=0,A=0,d=0;if(l=o+944|0,u=n[l>>2]|0,u|0&&(qa(u+948|0,o)|0,n[l>>2]=0),u=Li(o)|0,u|0){l=0;do n[(Cs(o,l)|0)+944>>2]=0,l=l+1|0;while((l|0)!=(u|0))}u=o+948|0,A=n[u>>2]|0,d=o+952|0,l=n[d>>2]|0,(l|0)!=(A|0)&&(n[d>>2]=l+(~((l+-4-A|0)>>>2)<<2)),Sl(u),tx(o),n[2276]=(n[2276]|0)+-1}function qa(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0;A=n[o>>2]|0,k=o+4|0,u=n[k>>2]|0,m=u;e:do if((A|0)==(u|0))d=A,B=4;else for(o=A;;){if((n[o>>2]|0)==(l|0)){d=o,B=4;break e}if(o=o+4|0,(o|0)==(u|0)){o=0;break}}while(!1);return(B|0)==4&&((d|0)!=(u|0)?(A=d+4|0,o=m-A|0,l=o>>2,l&&(F2(d|0,A|0,o|0)|0,u=n[k>>2]|0),o=d+(l<<2)|0,(u|0)==(o|0)||(n[k>>2]=u+(~((u+-4-o|0)>>>2)<<2)),o=1):o=0),o|0}function Li(o){return o=o|0,(n[o+952>>2]|0)-(n[o+948>>2]|0)>>2|0}function Cs(o,l){o=o|0,l=l|0;var u=0;return u=n[o+948>>2]|0,(n[o+952>>2]|0)-u>>2>>>0>l>>>0?o=n[u+(l<<2)>>2]|0:o=0,o|0}function Sl(o){o=o|0;var l=0,u=0,A=0,d=0;A=I,I=I+32|0,l=A,d=n[o>>2]|0,u=(n[o+4>>2]|0)-d|0,((n[o+8>>2]|0)-d|0)>>>0>u>>>0&&(d=u>>2,ky(l,d,d,o+8|0),DP(o,l),Qy(l)),I=A}function df(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,_=0;_=Li(o)|0;do if(_|0){if((n[(Cs(o,0)|0)+944>>2]|0)==(o|0)){if(!(qa(o+948|0,l)|0))break;Qr(l+400|0,8504,540)|0,n[l+944>>2]=0,Oe(o);break}B=n[(n[o+976>>2]|0)+12>>2]|0,k=o+948|0,T=(B|0)==0,u=0,m=0;do A=n[(n[k>>2]|0)+(m<<2)>>2]|0,(A|0)==(l|0)?Oe(o):(d=uc(A)|0,n[(n[k>>2]|0)+(u<<2)>>2]=d,n[d+944>>2]=o,T||S_[B&15](A,d,o,u),u=u+1|0),m=m+1|0;while((m|0)!=(_|0));if(u>>>0<_>>>0){T=o+948|0,k=o+952|0,B=u,u=n[k>>2]|0;do m=(n[T>>2]|0)+(B<<2)|0,A=m+4|0,d=u-A|0,l=d>>2,l&&(F2(m|0,A|0,d|0)|0,u=n[k>>2]|0),d=u,A=m+(l<<2)|0,(d|0)!=(A|0)&&(u=d+(~((d+-4-A|0)>>>2)<<2)|0,n[k>>2]=u),B=B+1|0;while((B|0)!=(_|0))}}while(!1)}function Ac(o){o=o|0;var l=0,u=0,A=0,d=0;wi(o,(Li(o)|0)==0,2491),wi(o,(n[o+944>>2]|0)==0,2545),l=o+948|0,u=n[l>>2]|0,A=o+952|0,d=n[A>>2]|0,(d|0)!=(u|0)&&(n[A>>2]=d+(~((d+-4-u|0)>>>2)<<2)),Sl(l),l=o+976|0,u=n[l>>2]|0,Qr(o|0,8104,1e3)|0,s[u+2>>0]|0&&(n[o+4>>2]=2,n[o+12>>2]=4),n[l>>2]=u}function wi(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0;d=I,I=I+16|0,A=d,l||(n[A>>2]=u,Qo(o,5,3197,A)),I=d}function Qn(){return n[2276]|0}function pc(){var o=0;return o=ex(20)|0,Je((o|0)!=0,2592),n[2277]=(n[2277]|0)+1,n[o>>2]=n[239],n[o+4>>2]=n[240],n[o+8>>2]=n[241],n[o+12>>2]=n[242],n[o+16>>2]=n[243],o|0}function Je(o,l){o=o|0,l=l|0;var u=0,A=0;A=I,I=I+16|0,u=A,o||(n[u>>2]=l,Qo(0,5,3197,u)),I=A}function st(o){o=o|0,tx(o),n[2277]=(n[2277]|0)+-1}function St(o,l){o=o|0,l=l|0;var u=0;l?(wi(o,(Li(o)|0)==0,2629),u=1):(u=0,l=0),n[o+964>>2]=l,n[o+988>>2]=u}function lr(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;A=I,I=I+16|0,m=A+8|0,d=A+4|0,B=A,n[d>>2]=l,wi(o,(n[l+944>>2]|0)==0,2709),wi(o,(n[o+964>>2]|0)==0,2763),ee(o),l=o+948|0,n[B>>2]=(n[l>>2]|0)+(u<<2),n[m>>2]=n[B>>2],Ie(l,m,d)|0,n[(n[d>>2]|0)+944>>2]=o,Oe(o),I=A}function ee(o){o=o|0;var l=0,u=0,A=0,d=0,m=0,B=0,k=0;if(u=Li(o)|0,u|0&&(n[(Cs(o,0)|0)+944>>2]|0)!=(o|0)){A=n[(n[o+976>>2]|0)+12>>2]|0,d=o+948|0,m=(A|0)==0,l=0;do B=n[(n[d>>2]|0)+(l<<2)>>2]|0,k=uc(B)|0,n[(n[d>>2]|0)+(l<<2)>>2]=k,n[k+944>>2]=o,m||S_[A&15](B,k,o,l),l=l+1|0;while((l|0)!=(u|0))}}function Ie(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0,ae=0,We=0,Le=0,Qe=0,tt=0,Ze=0;tt=I,I=I+64|0,G=tt+52|0,k=tt+48|0,ae=tt+28|0,We=tt+24|0,Le=tt+20|0,Qe=tt,A=n[o>>2]|0,m=A,l=A+((n[l>>2]|0)-m>>2<<2)|0,A=o+4|0,d=n[A>>2]|0,B=o+8|0;do if(d>>>0<(n[B>>2]|0)>>>0){if((l|0)==(d|0)){n[l>>2]=n[u>>2],n[A>>2]=(n[A>>2]|0)+4;break}bP(o,l,d,l+4|0),l>>>0<=u>>>0&&(u=(n[A>>2]|0)>>>0>u>>>0?u+4|0:u),n[l>>2]=n[u>>2]}else{A=(d-m>>2)+1|0,d=O(o)|0,d>>>0>>0&&sn(o),M=n[o>>2]|0,_=(n[B>>2]|0)-M|0,m=_>>1,ky(Qe,_>>2>>>0>>1>>>0?m>>>0>>0?A:m:d,l-M>>2,o+8|0),M=Qe+8|0,A=n[M>>2]|0,m=Qe+12|0,_=n[m>>2]|0,B=_,T=A;do if((A|0)==(_|0)){if(_=Qe+4|0,A=n[_>>2]|0,Ze=n[Qe>>2]|0,d=Ze,A>>>0<=Ze>>>0){A=B-d>>1,A=A|0?A:1,ky(ae,A,A>>>2,n[Qe+16>>2]|0),n[We>>2]=n[_>>2],n[Le>>2]=n[M>>2],n[k>>2]=n[We>>2],n[G>>2]=n[Le>>2],c2(ae,k,G),A=n[Qe>>2]|0,n[Qe>>2]=n[ae>>2],n[ae>>2]=A,A=ae+4|0,Ze=n[_>>2]|0,n[_>>2]=n[A>>2],n[A>>2]=Ze,A=ae+8|0,Ze=n[M>>2]|0,n[M>>2]=n[A>>2],n[A>>2]=Ze,A=ae+12|0,Ze=n[m>>2]|0,n[m>>2]=n[A>>2],n[A>>2]=Ze,Qy(ae),A=n[M>>2]|0;break}m=A,B=((m-d>>2)+1|0)/-2|0,k=A+(B<<2)|0,d=T-m|0,m=d>>2,m&&(F2(k|0,A|0,d|0)|0,A=n[_>>2]|0),Ze=k+(m<<2)|0,n[M>>2]=Ze,n[_>>2]=A+(B<<2),A=Ze}while(!1);n[A>>2]=n[u>>2],n[M>>2]=(n[M>>2]|0)+4,l=PP(o,Qe,l)|0,Qy(Qe)}while(!1);return I=tt,l|0}function Oe(o){o=o|0;var l=0;do{if(l=o+984|0,s[l>>0]|0)break;s[l>>0]=1,h[o+504>>2]=y(ce),o=n[o+944>>2]|0}while(o|0)}function ht(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-4-A|0)>>>2)<<2)),yt(u))}function mt(o){return o=o|0,n[o+944>>2]|0}function Dt(o){o=o|0,wi(o,(n[o+964>>2]|0)!=0,2832),Oe(o)}function tr(o){return o=o|0,(s[o+984>>0]|0)!=0|0}function fn(o,l){o=o|0,l=l|0,qYe(o,l,400)|0&&(Qr(o|0,l|0,400)|0,Oe(o))}function ai(o){o=o|0;var l=Xe;return l=y(h[o+44>>2]),o=Mt(l)|0,y(o?y(0):l)}function qi(o){o=o|0;var l=Xe;return l=y(h[o+48>>2]),Mt(l)|0&&(l=s[(n[o+976>>2]|0)+2>>0]|0?y(1):y(0)),y(l)}function Tn(o,l){o=o|0,l=l|0,n[o+980>>2]=l}function Ga(o){return o=o|0,n[o+980>>2]|0}function my(o,l){o=o|0,l=l|0;var u=0;u=o+4|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function t2(o){return o=o|0,n[o+4>>2]|0}function Do(o,l){o=o|0,l=l|0;var u=0;u=o+8|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function yy(o){return o=o|0,n[o+8>>2]|0}function wh(o,l){o=o|0,l=l|0;var u=0;u=o+12|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function r2(o){return o=o|0,n[o+12>>2]|0}function bo(o,l){o=o|0,l=l|0;var u=0;u=o+16|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function Bh(o){return o=o|0,n[o+16>>2]|0}function vh(o,l){o=o|0,l=l|0;var u=0;u=o+20|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function du(o){return o=o|0,n[o+20>>2]|0}function Sh(o,l){o=o|0,l=l|0;var u=0;u=o+24|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function Ng(o){return o=o|0,n[o+24>>2]|0}function Og(o,l){o=o|0,l=l|0;var u=0;u=o+28|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function Lg(o){return o=o|0,n[o+28>>2]|0}function Ey(o,l){o=o|0,l=l|0;var u=0;u=o+32|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function mf(o){return o=o|0,n[o+32>>2]|0}function Po(o,l){o=o|0,l=l|0;var u=0;u=o+36|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function Dl(o){return o=o|0,n[o+36>>2]|0}function Dh(o,l){o=o|0,l=y(l);var u=0;u=o+40|0,y(h[u>>2])!=l&&(h[u>>2]=l,Oe(o))}function Mg(o,l){o=o|0,l=y(l);var u=0;u=o+44|0,y(h[u>>2])!=l&&(h[u>>2]=l,Oe(o))}function bl(o,l){o=o|0,l=y(l);var u=0;u=o+48|0,y(h[u>>2])!=l&&(h[u>>2]=l,Oe(o))}function Pl(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=(m^1)&1,A=o+52|0,d=o+56|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function Iy(o,l){o=o|0,l=y(l);var u=0,A=0;A=o+52|0,u=o+56|0,y(h[A>>2])==l&&(n[u>>2]|0)==2||(h[A>>2]=l,A=Mt(l)|0,n[u>>2]=A?3:2,Oe(o))}function HA(o,l){o=o|0,l=l|0;var u=0,A=0;A=l+52|0,u=n[A+4>>2]|0,l=o,n[l>>2]=n[A>>2],n[l+4>>2]=u}function Cy(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,d=0,m=0;m=Mt(u)|0,A=(m^1)&1,d=o+132+(l<<3)|0,l=o+132+(l<<3)+4|0,m|y(h[d>>2])==u&&(n[l>>2]|0)==(A|0)||(h[d>>2]=u,n[l>>2]=A,Oe(o))}function wy(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,d=0,m=0;m=Mt(u)|0,A=m?0:2,d=o+132+(l<<3)|0,l=o+132+(l<<3)+4|0,m|y(h[d>>2])==u&&(n[l>>2]|0)==(A|0)||(h[d>>2]=u,n[l>>2]=A,Oe(o))}function jA(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=l+132+(u<<3)|0,l=n[A+4>>2]|0,u=o,n[u>>2]=n[A>>2],n[u+4>>2]=l}function qA(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,d=0,m=0;m=Mt(u)|0,A=(m^1)&1,d=o+60+(l<<3)|0,l=o+60+(l<<3)+4|0,m|y(h[d>>2])==u&&(n[l>>2]|0)==(A|0)||(h[d>>2]=u,n[l>>2]=A,Oe(o))}function Y(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,d=0,m=0;m=Mt(u)|0,A=m?0:2,d=o+60+(l<<3)|0,l=o+60+(l<<3)+4|0,m|y(h[d>>2])==u&&(n[l>>2]|0)==(A|0)||(h[d>>2]=u,n[l>>2]=A,Oe(o))}function xt(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=l+60+(u<<3)|0,l=n[A+4>>2]|0,u=o,n[u>>2]=n[A>>2],n[u+4>>2]=l}function GA(o,l){o=o|0,l=l|0;var u=0;u=o+60+(l<<3)+4|0,(n[u>>2]|0)!=3&&(h[o+60+(l<<3)>>2]=y(ce),n[u>>2]=3,Oe(o))}function xo(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,d=0,m=0;m=Mt(u)|0,A=(m^1)&1,d=o+204+(l<<3)|0,l=o+204+(l<<3)+4|0,m|y(h[d>>2])==u&&(n[l>>2]|0)==(A|0)||(h[d>>2]=u,n[l>>2]=A,Oe(o))}function yf(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,d=0,m=0;m=Mt(u)|0,A=m?0:2,d=o+204+(l<<3)|0,l=o+204+(l<<3)+4|0,m|y(h[d>>2])==u&&(n[l>>2]|0)==(A|0)||(h[d>>2]=u,n[l>>2]=A,Oe(o))}function dt(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=l+204+(u<<3)|0,l=n[A+4>>2]|0,u=o,n[u>>2]=n[A>>2],n[u+4>>2]=l}function mu(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,d=0,m=0;m=Mt(u)|0,A=(m^1)&1,d=o+276+(l<<3)|0,l=o+276+(l<<3)+4|0,m|y(h[d>>2])==u&&(n[l>>2]|0)==(A|0)||(h[d>>2]=u,n[l>>2]=A,Oe(o))}function By(o,l){return o=o|0,l=l|0,y(h[o+276+(l<<3)>>2])}function _g(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=(m^1)&1,A=o+348|0,d=o+352|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function n2(o,l){o=o|0,l=y(l);var u=0,A=0;A=o+348|0,u=o+352|0,y(h[A>>2])==l&&(n[u>>2]|0)==2||(h[A>>2]=l,A=Mt(l)|0,n[u>>2]=A?3:2,Oe(o))}function bh(o){o=o|0;var l=0;l=o+352|0,(n[l>>2]|0)!=3&&(h[o+348>>2]=y(ce),n[l>>2]=3,Oe(o))}function ur(o,l){o=o|0,l=l|0;var u=0,A=0;A=l+348|0,u=n[A+4>>2]|0,l=o,n[l>>2]=n[A>>2],n[l+4>>2]=u}function zi(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=(m^1)&1,A=o+356|0,d=o+360|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function Ef(o,l){o=o|0,l=y(l);var u=0,A=0;A=o+356|0,u=o+360|0,y(h[A>>2])==l&&(n[u>>2]|0)==2||(h[A>>2]=l,A=Mt(l)|0,n[u>>2]=A?3:2,Oe(o))}function Wa(o){o=o|0;var l=0;l=o+360|0,(n[l>>2]|0)!=3&&(h[o+356>>2]=y(ce),n[l>>2]=3,Oe(o))}function Ug(o,l){o=o|0,l=l|0;var u=0,A=0;A=l+356|0,u=n[A+4>>2]|0,l=o,n[l>>2]=n[A>>2],n[l+4>>2]=u}function yu(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=(m^1)&1,A=o+364|0,d=o+368|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function If(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=m?0:2,A=o+364|0,d=o+368|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function wt(o,l){o=o|0,l=l|0;var u=0,A=0;A=l+364|0,u=n[A+4>>2]|0,l=o,n[l>>2]=n[A>>2],n[l+4>>2]=u}function gi(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=(m^1)&1,A=o+372|0,d=o+376|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function WA(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=m?0:2,A=o+372|0,d=o+376|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function Ya(o,l){o=o|0,l=l|0;var u=0,A=0;A=l+372|0,u=n[A+4>>2]|0,l=o,n[l>>2]=n[A>>2],n[l+4>>2]=u}function pa(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=(m^1)&1,A=o+380|0,d=o+384|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function Va(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=m?0:2,A=o+380|0,d=o+384|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function Hg(o,l){o=o|0,l=l|0;var u=0,A=0;A=l+380|0,u=n[A+4>>2]|0,l=o,n[l>>2]=n[A>>2],n[l+4>>2]=u}function Ph(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=(m^1)&1,A=o+388|0,d=o+392|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function jg(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=m?0:2,A=o+388|0,d=o+392|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function vy(o,l){o=o|0,l=l|0;var u=0,A=0;A=l+388|0,u=n[A+4>>2]|0,l=o,n[l>>2]=n[A>>2],n[l+4>>2]=u}function YA(o,l){o=o|0,l=y(l);var u=0;u=o+396|0,y(h[u>>2])!=l&&(h[u>>2]=l,Oe(o))}function qg(o){return o=o|0,y(h[o+396>>2])}function Eu(o){return o=o|0,y(h[o+400>>2])}function Iu(o){return o=o|0,y(h[o+404>>2])}function Cf(o){return o=o|0,y(h[o+408>>2])}function Fs(o){return o=o|0,y(h[o+412>>2])}function Cu(o){return o=o|0,y(h[o+416>>2])}function qn(o){return o=o|0,y(h[o+420>>2])}function is(o,l){switch(o=o|0,l=l|0,wi(o,(l|0)<6,2918),l|0){case 0:{l=(n[o+496>>2]|0)==2?5:4;break}case 2:{l=(n[o+496>>2]|0)==2?4:5;break}default:}return y(h[o+424+(l<<2)>>2])}function xi(o,l){switch(o=o|0,l=l|0,wi(o,(l|0)<6,2918),l|0){case 0:{l=(n[o+496>>2]|0)==2?5:4;break}case 2:{l=(n[o+496>>2]|0)==2?4:5;break}default:}return y(h[o+448+(l<<2)>>2])}function VA(o,l){switch(o=o|0,l=l|0,wi(o,(l|0)<6,2918),l|0){case 0:{l=(n[o+496>>2]|0)==2?5:4;break}case 2:{l=(n[o+496>>2]|0)==2?4:5;break}default:}return y(h[o+472+(l<<2)>>2])}function wf(o,l){o=o|0,l=l|0;var u=0,A=Xe;return u=n[o+4>>2]|0,(u|0)==(n[l+4>>2]|0)?u?(A=y(h[o>>2]),o=y(se(y(A-y(h[l>>2]))))>2]=0,n[A+4>>2]=0,n[A+8>>2]=0,fu(A|0,o|0,l|0,0),Qo(o,3,(s[A+11>>0]|0)<0?n[A>>2]|0:A,u),AVe(A),I=u}function ss(o,l,u,A){o=y(o),l=y(l),u=u|0,A=A|0;var d=Xe;o=y(o*l),d=y(E_(o,y(1)));do if(mn(d,y(0))|0)o=y(o-d);else{if(o=y(o-d),mn(d,y(1))|0){o=y(o+y(1));break}if(u){o=y(o+y(1));break}A||(d>y(.5)?d=y(1):(A=mn(d,y(.5))|0,d=y(A?1:0)),o=y(o+d))}while(!1);return y(o/l)}function xl(o,l,u,A,d,m,B,k,T,_,M,G,ae){o=o|0,l=y(l),u=u|0,A=y(A),d=d|0,m=y(m),B=B|0,k=y(k),T=y(T),_=y(_),M=y(M),G=y(G),ae=ae|0;var We=0,Le=Xe,Qe=Xe,tt=Xe,Ze=Xe,ct=Xe,He=Xe;return T>2]),Le!=y(0))?(tt=y(ss(l,Le,0,0)),Ze=y(ss(A,Le,0,0)),Qe=y(ss(m,Le,0,0)),Le=y(ss(k,Le,0,0))):(Qe=m,tt=l,Le=k,Ze=A),(d|0)==(o|0)?We=mn(Qe,tt)|0:We=0,(B|0)==(u|0)?ae=mn(Le,Ze)|0:ae=0,!We&&(ct=y(l-M),!(ko(o,ct,T)|0))&&!(Bf(o,ct,d,T)|0)?We=vf(o,ct,d,m,T)|0:We=1,!ae&&(He=y(A-G),!(ko(u,He,_)|0))&&!(Bf(u,He,B,_)|0)?ae=vf(u,He,B,k,_)|0:ae=1,ae=We&ae),ae|0}function ko(o,l,u){return o=o|0,l=y(l),u=y(u),(o|0)==1?o=mn(l,u)|0:o=0,o|0}function Bf(o,l,u,A){return o=o|0,l=y(l),u=u|0,A=y(A),(o|0)==2&(u|0)==0?l>=A?o=1:o=mn(l,A)|0:o=0,o|0}function vf(o,l,u,A,d){return o=o|0,l=y(l),u=u|0,A=y(A),d=y(d),(o|0)==2&(u|0)==2&A>l?d<=l?o=1:o=mn(l,d)|0:o=0,o|0}function kl(o,l,u,A,d,m,B,k,T,_,M){o=o|0,l=y(l),u=y(u),A=A|0,d=d|0,m=m|0,B=y(B),k=y(k),T=T|0,_=_|0,M=M|0;var G=0,ae=0,We=0,Le=0,Qe=Xe,tt=Xe,Ze=0,ct=0,He=0,Ge=0,Lt=0,qr=0,fr=0,$t=0,Tr=0,Hr=0,cr=0,Hn=Xe,Fo=Xe,No=Xe,Oo=0,$a=0;cr=I,I=I+160|0,$t=cr+152|0,fr=cr+120|0,qr=cr+104|0,He=cr+72|0,Le=cr+56|0,Lt=cr+8|0,ct=cr,Ge=(n[2279]|0)+1|0,n[2279]=Ge,Tr=o+984|0,s[Tr>>0]|0&&(n[o+512>>2]|0)!=(n[2278]|0)?Ze=4:(n[o+516>>2]|0)==(A|0)?Hr=0:Ze=4,(Ze|0)==4&&(n[o+520>>2]=0,n[o+924>>2]=-1,n[o+928>>2]=-1,h[o+932>>2]=y(-1),h[o+936>>2]=y(-1),Hr=1);e:do if(n[o+964>>2]|0)if(Qe=y(yn(o,2,B)),tt=y(yn(o,0,B)),G=o+916|0,No=y(h[G>>2]),Fo=y(h[o+920>>2]),Hn=y(h[o+932>>2]),xl(d,l,m,u,n[o+924>>2]|0,No,n[o+928>>2]|0,Fo,Hn,y(h[o+936>>2]),Qe,tt,M)|0)Ze=22;else if(We=n[o+520>>2]|0,!We)Ze=21;else for(ae=0;;){if(G=o+524+(ae*24|0)|0,Hn=y(h[G>>2]),Fo=y(h[o+524+(ae*24|0)+4>>2]),No=y(h[o+524+(ae*24|0)+16>>2]),xl(d,l,m,u,n[o+524+(ae*24|0)+8>>2]|0,Hn,n[o+524+(ae*24|0)+12>>2]|0,Fo,No,y(h[o+524+(ae*24|0)+20>>2]),Qe,tt,M)|0){Ze=22;break e}if(ae=ae+1|0,ae>>>0>=We>>>0){Ze=21;break}}else{if(T){if(G=o+916|0,!(mn(y(h[G>>2]),l)|0)){Ze=21;break}if(!(mn(y(h[o+920>>2]),u)|0)){Ze=21;break}if((n[o+924>>2]|0)!=(d|0)){Ze=21;break}G=(n[o+928>>2]|0)==(m|0)?G:0,Ze=22;break}if(We=n[o+520>>2]|0,!We)Ze=21;else for(ae=0;;){if(G=o+524+(ae*24|0)|0,mn(y(h[G>>2]),l)|0&&mn(y(h[o+524+(ae*24|0)+4>>2]),u)|0&&(n[o+524+(ae*24|0)+8>>2]|0)==(d|0)&&(n[o+524+(ae*24|0)+12>>2]|0)==(m|0)){Ze=22;break e}if(ae=ae+1|0,ae>>>0>=We>>>0){Ze=21;break}}}while(!1);do if((Ze|0)==21)s[11697]|0?(G=0,Ze=28):(G=0,Ze=31);else if((Ze|0)==22){if(ae=(s[11697]|0)!=0,!((G|0)!=0&(Hr^1)))if(ae){Ze=28;break}else{Ze=31;break}Le=G+16|0,n[o+908>>2]=n[Le>>2],We=G+20|0,n[o+912>>2]=n[We>>2],(s[11698]|0)==0|ae^1||(n[ct>>2]=wu(Ge)|0,n[ct+4>>2]=Ge,Qo(o,4,2972,ct),ae=n[o+972>>2]|0,ae|0&&op[ae&127](o),d=ha(d,T)|0,m=ha(m,T)|0,$a=+y(h[Le>>2]),Oo=+y(h[We>>2]),n[Lt>>2]=d,n[Lt+4>>2]=m,E[Lt+8>>3]=+l,E[Lt+16>>3]=+u,E[Lt+24>>3]=$a,E[Lt+32>>3]=Oo,n[Lt+40>>2]=_,Qo(o,4,2989,Lt))}while(!1);return(Ze|0)==28&&(ae=wu(Ge)|0,n[Le>>2]=ae,n[Le+4>>2]=Ge,n[Le+8>>2]=Hr?3047:11699,Qo(o,4,3038,Le),ae=n[o+972>>2]|0,ae|0&&op[ae&127](o),Lt=ha(d,T)|0,Ze=ha(m,T)|0,n[He>>2]=Lt,n[He+4>>2]=Ze,E[He+8>>3]=+l,E[He+16>>3]=+u,n[He+24>>2]=_,Qo(o,4,3049,He),Ze=31),(Ze|0)==31&&(Ns(o,l,u,A,d,m,B,k,T,M),s[11697]|0&&(ae=n[2279]|0,Lt=wu(ae)|0,n[qr>>2]=Lt,n[qr+4>>2]=ae,n[qr+8>>2]=Hr?3047:11699,Qo(o,4,3083,qr),ae=n[o+972>>2]|0,ae|0&&op[ae&127](o),Lt=ha(d,T)|0,qr=ha(m,T)|0,Oo=+y(h[o+908>>2]),$a=+y(h[o+912>>2]),n[fr>>2]=Lt,n[fr+4>>2]=qr,E[fr+8>>3]=Oo,E[fr+16>>3]=$a,n[fr+24>>2]=_,Qo(o,4,3092,fr)),n[o+516>>2]=A,G||(ae=o+520|0,G=n[ae>>2]|0,(G|0)==16&&(s[11697]|0&&Qo(o,4,3124,$t),n[ae>>2]=0,G=0),T?G=o+916|0:(n[ae>>2]=G+1,G=o+524+(G*24|0)|0),h[G>>2]=l,h[G+4>>2]=u,n[G+8>>2]=d,n[G+12>>2]=m,n[G+16>>2]=n[o+908>>2],n[G+20>>2]=n[o+912>>2],G=0)),T&&(n[o+416>>2]=n[o+908>>2],n[o+420>>2]=n[o+912>>2],s[o+985>>0]=1,s[Tr>>0]=0),n[2279]=(n[2279]|0)+-1,n[o+512>>2]=n[2278],I=cr,Hr|(G|0)==0|0}function yn(o,l,u){o=o|0,l=l|0,u=y(u);var A=Xe;return A=y(J(o,l,u)),y(A+y(re(o,l,u)))}function Qo(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=I,I=I+16|0,d=m,n[d>>2]=A,o?A=n[o+976>>2]|0:A=0,Qh(A,o,l,u,d),I=m}function wu(o){return o=o|0,(o>>>0>60?3201:3201+(60-o)|0)|0}function ha(o,l){o=o|0,l=l|0;var u=0,A=0,d=0;return d=I,I=I+32|0,u=d+12|0,A=d,n[u>>2]=n[254],n[u+4>>2]=n[255],n[u+8>>2]=n[256],n[A>>2]=n[257],n[A+4>>2]=n[258],n[A+8>>2]=n[259],(o|0)>2?o=11699:o=n[(l?A:u)+(o<<2)>>2]|0,I=d,o|0}function Ns(o,l,u,A,d,m,B,k,T,_){o=o|0,l=y(l),u=y(u),A=A|0,d=d|0,m=m|0,B=y(B),k=y(k),T=T|0,_=_|0;var M=0,G=0,ae=0,We=0,Le=Xe,Qe=Xe,tt=Xe,Ze=Xe,ct=Xe,He=Xe,Ge=Xe,Lt=0,qr=0,fr=0,$t=Xe,Tr=Xe,Hr=0,cr=Xe,Hn=0,Fo=0,No=0,Oo=0,$a=0,Kh=0,Jh=0,dc=0,zh=0,Ff=0,Nf=0,Zh=0,Xh=0,$h=0,on=0,mc=0,e0=0,ku=0,t0=Xe,r0=Xe,Of=Xe,Lf=Xe,Qu=Xe,ao=0,Ml=0,ya=0,yc=0,lp=0,cp=Xe,Mf=Xe,up=Xe,fp=Xe,lo=Xe,_s=Xe,Ec=0,Wn=Xe,Ap=Xe,Lo=Xe,Tu=Xe,Mo=Xe,Ru=Xe,pp=0,hp=0,Fu=Xe,co=Xe,Ic=0,gp=0,dp=0,mp=0,Fr=Xe,ci=0,Us=0,_o=0,uo=0,Mr=0,Ar=0,Cc=0,zt=Xe,yp=0,Bi=0;Cc=I,I=I+16|0,ao=Cc+12|0,Ml=Cc+8|0,ya=Cc+4|0,yc=Cc,wi(o,(d|0)==0|(Mt(l)|0)^1,3326),wi(o,(m|0)==0|(Mt(u)|0)^1,3406),Us=ft(o,A)|0,n[o+496>>2]=Us,Mr=dr(2,Us)|0,Ar=dr(0,Us)|0,h[o+440>>2]=y(J(o,Mr,B)),h[o+444>>2]=y(re(o,Mr,B)),h[o+428>>2]=y(J(o,Ar,B)),h[o+436>>2]=y(re(o,Ar,B)),h[o+464>>2]=y(Br(o,Mr)),h[o+468>>2]=y(_n(o,Mr)),h[o+452>>2]=y(Br(o,Ar)),h[o+460>>2]=y(_n(o,Ar)),h[o+488>>2]=y(di(o,Mr,B)),h[o+492>>2]=y(ws(o,Mr,B)),h[o+476>>2]=y(di(o,Ar,B)),h[o+484>>2]=y(ws(o,Ar,B));do if(n[o+964>>2]|0)zA(o,l,u,d,m,B,k);else{if(_o=o+948|0,uo=(n[o+952>>2]|0)-(n[_o>>2]|0)>>2,!uo){wP(o,l,u,d,m,B,k);break}if(!T&&i2(o,l,u,d,m,B,k)|0)break;ee(o),mc=o+508|0,s[mc>>0]=0,Mr=dr(n[o+4>>2]|0,Us)|0,Ar=by(Mr,Us)|0,ci=de(Mr)|0,e0=n[o+8>>2]|0,gp=o+28|0,ku=(n[gp>>2]|0)!=0,Mo=ci?B:k,Fu=ci?k:B,t0=y(Rh(o,Mr,B)),r0=y(s2(o,Mr,B)),Le=y(Rh(o,Ar,B)),Ru=y(Ka(o,Mr,B)),co=y(Ka(o,Ar,B)),fr=ci?d:m,Ic=ci?m:d,Fr=ci?Ru:co,ct=ci?co:Ru,Tu=y(yn(o,2,B)),Ze=y(yn(o,0,B)),Qe=y(y(Xr(o+364|0,B))-Fr),tt=y(y(Xr(o+380|0,B))-Fr),He=y(y(Xr(o+372|0,k))-ct),Ge=y(y(Xr(o+388|0,k))-ct),Of=ci?Qe:He,Lf=ci?tt:Ge,Tu=y(l-Tu),l=y(Tu-Fr),Mt(l)|0?Fr=l:Fr=y($n(y(hd(l,tt)),Qe)),Ap=y(u-Ze),l=y(Ap-ct),Mt(l)|0?Lo=l:Lo=y($n(y(hd(l,Ge)),He)),Qe=ci?Fr:Lo,Wn=ci?Lo:Fr;e:do if((fr|0)==1)for(A=0,G=0;;){if(M=Cs(o,G)|0,!A)y(ZA(M))>y(0)&&y(Fh(M))>y(0)?A=M:A=0;else if(o2(M)|0){We=0;break e}if(G=G+1|0,G>>>0>=uo>>>0){We=A;break}}else We=0;while(!1);Lt=We+500|0,qr=We+504|0,A=0,M=0,l=y(0),ae=0;do{if(G=n[(n[_o>>2]|0)+(ae<<2)>>2]|0,(n[G+36>>2]|0)==1)Py(G),s[G+985>>0]=1,s[G+984>>0]=0;else{Sf(G),T&&kh(G,ft(G,Us)|0,Qe,Wn,Fr);do if((n[G+24>>2]|0)!=1)if((G|0)==(We|0)){n[Lt>>2]=n[2278],h[qr>>2]=y(0);break}else{BP(o,G,Fr,d,Lo,Fr,Lo,m,Us,_);break}else M|0&&(n[M+960>>2]=G),n[G+960>>2]=0,M=G,A=A|0?A:G;while(!1);_s=y(h[G+504>>2]),l=y(l+y(_s+y(yn(G,Mr,Fr))))}ae=ae+1|0}while((ae|0)!=(uo|0));for(No=l>Qe,Ec=ku&((fr|0)==2&No)?1:fr,Hn=(Ic|0)==1,$a=Hn&(T^1),Kh=(Ec|0)==1,Jh=(Ec|0)==2,dc=976+(Mr<<2)|0,zh=(Ic|2|0)==2,$h=Hn&(ku^1),Ff=1040+(Ar<<2)|0,Nf=1040+(Mr<<2)|0,Zh=976+(Ar<<2)|0,Xh=(Ic|0)!=1,No=ku&((fr|0)!=0&No),Fo=o+976|0,Hn=Hn^1,l=Qe,Hr=0,Oo=0,_s=y(0),Qu=y(0);;){e:do if(Hr>>>0>>0)for(qr=n[_o>>2]|0,ae=0,Ge=y(0),He=y(0),tt=y(0),Qe=y(0),G=0,M=0,We=Hr;;){if(Lt=n[qr+(We<<2)>>2]|0,(n[Lt+36>>2]|0)!=1&&(n[Lt+940>>2]=Oo,(n[Lt+24>>2]|0)!=1)){if(Ze=y(yn(Lt,Mr,Fr)),on=n[dc>>2]|0,u=y(Xr(Lt+380+(on<<3)|0,Mo)),ct=y(h[Lt+504>>2]),u=y(hd(u,ct)),u=y($n(y(Xr(Lt+364+(on<<3)|0,Mo)),u)),ku&(ae|0)!=0&y(Ze+y(He+u))>l){m=ae,Ze=Ge,fr=We;break e}Ze=y(Ze+u),u=y(He+Ze),Ze=y(Ge+Ze),o2(Lt)|0&&(tt=y(tt+y(ZA(Lt))),Qe=y(Qe-y(ct*y(Fh(Lt))))),M|0&&(n[M+960>>2]=Lt),n[Lt+960>>2]=0,ae=ae+1|0,M=Lt,G=G|0?G:Lt}else Ze=Ge,u=He;if(We=We+1|0,We>>>0>>0)Ge=Ze,He=u;else{m=ae,fr=We;break}}else m=0,Ze=y(0),tt=y(0),Qe=y(0),G=0,fr=Hr;while(!1);on=tt>y(0)&tty(0)&QeLf&((Mt(Lf)|0)^1))l=Lf,on=51;else if(s[(n[Fo>>2]|0)+3>>0]|0)on=51;else{if($t!=y(0)&&y(ZA(o))!=y(0)){on=53;break}l=Ze,on=53}while(!1);if((on|0)==51&&(on=0,Mt(l)|0?on=53:(Tr=y(l-Ze),cr=l)),(on|0)==53&&(on=0,Ze>2]|0,We=Try(0),He=y(Tr/$t),tt=y(0),Ze=y(0),l=y(0),M=G;do u=y(Xr(M+380+(ae<<3)|0,Mo)),Qe=y(Xr(M+364+(ae<<3)|0,Mo)),Qe=y(hd(u,y($n(Qe,y(h[M+504>>2]))))),We?(u=y(Qe*y(Fh(M))),u!=y(-0)&&(zt=y(Qe-y(ct*u)),cp=y(Gn(M,Mr,zt,cr,Fr)),zt!=cp)&&(tt=y(tt-y(cp-Qe)),l=y(l+u))):Lt&&(Mf=y(ZA(M)),Mf!=y(0))&&(zt=y(Qe+y(He*Mf)),up=y(Gn(M,Mr,zt,cr,Fr)),zt!=up)&&(tt=y(tt-y(up-Qe)),Ze=y(Ze-Mf)),M=n[M+960>>2]|0;while(M|0);if(l=y(Ge+l),Qe=y(Tr+tt),lp)l=y(0);else{ct=y($t+Ze),We=n[dc>>2]|0,Lt=Qey(0),ct=y(Qe/ct),l=y(0);do{zt=y(Xr(G+380+(We<<3)|0,Mo)),tt=y(Xr(G+364+(We<<3)|0,Mo)),tt=y(hd(zt,y($n(tt,y(h[G+504>>2]))))),Lt?(zt=y(tt*y(Fh(G))),Qe=y(-zt),zt!=y(-0)?(zt=y(He*Qe),Qe=y(Gn(G,Mr,y(tt+(qr?Qe:zt)),cr,Fr))):Qe=tt):ae&&(fp=y(ZA(G)),fp!=y(0))?Qe=y(Gn(G,Mr,y(tt+y(ct*fp)),cr,Fr)):Qe=tt,l=y(l-y(Qe-tt)),Ze=y(yn(G,Mr,Fr)),u=y(yn(G,Ar,Fr)),Qe=y(Qe+Ze),h[Ml>>2]=Qe,n[yc>>2]=1,tt=y(h[G+396>>2]);e:do if(Mt(tt)|0){M=Mt(Wn)|0;do if(!M){if(No|(so(G,Ar,Wn)|0|Hn)||(os(o,G)|0)!=4||(n[(Ql(G,Ar)|0)+4>>2]|0)==3||(n[(Tl(G,Ar)|0)+4>>2]|0)==3)break;h[ao>>2]=Wn,n[ya>>2]=1;break e}while(!1);if(so(G,Ar,Wn)|0){M=n[G+992+(n[Zh>>2]<<2)>>2]|0,zt=y(u+y(Xr(M,Wn))),h[ao>>2]=zt,M=Xh&(n[M+4>>2]|0)==2,n[ya>>2]=((Mt(zt)|0|M)^1)&1;break}else{h[ao>>2]=Wn,n[ya>>2]=M?0:2;break}}else zt=y(Qe-Ze),$t=y(zt/tt),zt=y(tt*zt),n[ya>>2]=1,h[ao>>2]=y(u+(ci?$t:zt));while(!1);Bu(G,Mr,cr,Fr,yc,Ml),Bu(G,Ar,Wn,Fr,ya,ao);do if(!(so(G,Ar,Wn)|0)&&(os(o,G)|0)==4){if((n[(Ql(G,Ar)|0)+4>>2]|0)==3){M=0;break}M=(n[(Tl(G,Ar)|0)+4>>2]|0)!=3}else M=0;while(!1);zt=y(h[Ml>>2]),$t=y(h[ao>>2]),yp=n[yc>>2]|0,Bi=n[ya>>2]|0,kl(G,ci?zt:$t,ci?$t:zt,Us,ci?yp:Bi,ci?Bi:yp,Fr,Lo,T&(M^1),3488,_)|0,s[mc>>0]=s[mc>>0]|s[G+508>>0],G=n[G+960>>2]|0}while(G|0)}}else l=y(0);if(l=y(Tr+l),Bi=l>0]=Bi|c[mc>>0],Jh&l>y(0)?(M=n[dc>>2]|0,n[o+364+(M<<3)+4>>2]|0&&(lo=y(Xr(o+364+(M<<3)|0,Mo)),lo>=y(0))?Qe=y($n(y(0),y(lo-y(cr-l)))):Qe=y(0)):Qe=l,Lt=Hr>>>0>>0,Lt){We=n[_o>>2]|0,ae=Hr,M=0;do G=n[We+(ae<<2)>>2]|0,n[G+24>>2]|0||(M=((n[(Ql(G,Mr)|0)+4>>2]|0)==3&1)+M|0,M=M+((n[(Tl(G,Mr)|0)+4>>2]|0)==3&1)|0),ae=ae+1|0;while((ae|0)!=(fr|0));M?(Ze=y(0),u=y(0)):on=101}else on=101;e:do if((on|0)==101)switch(on=0,e0|0){case 1:{M=0,Ze=y(Qe*y(.5)),u=y(0);break e}case 2:{M=0,Ze=Qe,u=y(0);break e}case 3:{if(m>>>0<=1){M=0,Ze=y(0),u=y(0);break e}u=y((m+-1|0)>>>0),M=0,Ze=y(0),u=y(y($n(Qe,y(0)))/u);break e}case 5:{u=y(Qe/y((m+1|0)>>>0)),M=0,Ze=u;break e}case 4:{u=y(Qe/y(m>>>0)),M=0,Ze=y(u*y(.5));break e}default:{M=0,Ze=y(0),u=y(0);break e}}while(!1);if(l=y(t0+Ze),Lt){tt=y(Qe/y(M|0)),ae=n[_o>>2]|0,G=Hr,Qe=y(0);do{M=n[ae+(G<<2)>>2]|0;e:do if((n[M+36>>2]|0)!=1){switch(n[M+24>>2]|0){case 1:{if(ga(M,Mr)|0){if(!T)break e;zt=y(XA(M,Mr,cr)),zt=y(zt+y(Br(o,Mr))),zt=y(zt+y(J(M,Mr,Fr))),h[M+400+(n[Nf>>2]<<2)>>2]=zt;break e}break}case 0:if(Bi=(n[(Ql(M,Mr)|0)+4>>2]|0)==3,zt=y(tt+l),l=Bi?zt:l,T&&(Bi=M+400+(n[Nf>>2]<<2)|0,h[Bi>>2]=y(l+y(h[Bi>>2]))),Bi=(n[(Tl(M,Mr)|0)+4>>2]|0)==3,zt=y(tt+l),l=Bi?zt:l,$a){zt=y(u+y(yn(M,Mr,Fr))),Qe=Wn,l=y(l+y(zt+y(h[M+504>>2])));break e}else{l=y(l+y(u+y($A(M,Mr,Fr)))),Qe=y($n(Qe,y($A(M,Ar,Fr))));break e}default:}T&&(zt=y(Ze+y(Br(o,Mr))),Bi=M+400+(n[Nf>>2]<<2)|0,h[Bi>>2]=y(zt+y(h[Bi>>2])))}while(!1);G=G+1|0}while((G|0)!=(fr|0))}else Qe=y(0);if(u=y(r0+l),zh?Ze=y(y(Gn(o,Ar,y(co+Qe),Fu,B))-co):Ze=Wn,tt=y(y(Gn(o,Ar,y(co+($h?Wn:Qe)),Fu,B))-co),Lt&T){G=Hr;do{ae=n[(n[_o>>2]|0)+(G<<2)>>2]|0;do if((n[ae+36>>2]|0)!=1){if((n[ae+24>>2]|0)==1){if(ga(ae,Ar)|0){if(zt=y(XA(ae,Ar,Wn)),zt=y(zt+y(Br(o,Ar))),zt=y(zt+y(J(ae,Ar,Fr))),M=n[Ff>>2]|0,h[ae+400+(M<<2)>>2]=zt,!(Mt(zt)|0))break}else M=n[Ff>>2]|0;zt=y(Br(o,Ar)),h[ae+400+(M<<2)>>2]=y(zt+y(J(ae,Ar,Fr)));break}M=os(o,ae)|0;do if((M|0)==4){if((n[(Ql(ae,Ar)|0)+4>>2]|0)==3){on=139;break}if((n[(Tl(ae,Ar)|0)+4>>2]|0)==3){on=139;break}if(so(ae,Ar,Wn)|0){l=Le;break}yp=n[ae+908+(n[dc>>2]<<2)>>2]|0,n[ao>>2]=yp,l=y(h[ae+396>>2]),Bi=Mt(l)|0,Qe=(n[S>>2]=yp,y(h[S>>2])),Bi?l=tt:(Tr=y(yn(ae,Ar,Fr)),zt=y(Qe/l),l=y(l*Qe),l=y(Tr+(ci?zt:l))),h[Ml>>2]=l,h[ao>>2]=y(y(yn(ae,Mr,Fr))+Qe),n[ya>>2]=1,n[yc>>2]=1,Bu(ae,Mr,cr,Fr,ya,ao),Bu(ae,Ar,Wn,Fr,yc,Ml),l=y(h[ao>>2]),Tr=y(h[Ml>>2]),zt=ci?l:Tr,l=ci?Tr:l,Bi=((Mt(zt)|0)^1)&1,kl(ae,zt,l,Us,Bi,((Mt(l)|0)^1)&1,Fr,Lo,1,3493,_)|0,l=Le}else on=139;while(!1);e:do if((on|0)==139){on=0,l=y(Ze-y($A(ae,Ar,Fr)));do if((n[(Ql(ae,Ar)|0)+4>>2]|0)==3){if((n[(Tl(ae,Ar)|0)+4>>2]|0)!=3)break;l=y(Le+y($n(y(0),y(l*y(.5)))));break e}while(!1);if((n[(Tl(ae,Ar)|0)+4>>2]|0)==3){l=Le;break}if((n[(Ql(ae,Ar)|0)+4>>2]|0)==3){l=y(Le+y($n(y(0),l)));break}switch(M|0){case 1:{l=Le;break e}case 2:{l=y(Le+y(l*y(.5)));break e}default:{l=y(Le+l);break e}}}while(!1);zt=y(_s+l),Bi=ae+400+(n[Ff>>2]<<2)|0,h[Bi>>2]=y(zt+y(h[Bi>>2]))}while(!1);G=G+1|0}while((G|0)!=(fr|0))}if(_s=y(_s+tt),Qu=y($n(Qu,u)),m=Oo+1|0,fr>>>0>=uo>>>0)break;l=cr,Hr=fr,Oo=m}do if(T){if(M=m>>>0>1,!M&&!(XL(o)|0))break;if(!(Mt(Wn)|0)){l=y(Wn-_s);e:do switch(n[o+12>>2]|0){case 3:{Le=y(Le+l),He=y(0);break}case 2:{Le=y(Le+y(l*y(.5))),He=y(0);break}case 4:{Wn>_s?He=y(l/y(m>>>0)):He=y(0);break}case 7:if(Wn>_s){Le=y(Le+y(l/y(m<<1>>>0))),He=y(l/y(m>>>0)),He=M?He:y(0);break e}else{Le=y(Le+y(l*y(.5))),He=y(0);break e}case 6:{He=y(l/y(Oo>>>0)),He=Wn>_s&M?He:y(0);break}default:He=y(0)}while(!1);if(m|0)for(Lt=1040+(Ar<<2)|0,qr=976+(Ar<<2)|0,We=0,G=0;;){e:do if(G>>>0>>0)for(Qe=y(0),tt=y(0),l=y(0),ae=G;;){M=n[(n[_o>>2]|0)+(ae<<2)>>2]|0;do if((n[M+36>>2]|0)!=1&&!(n[M+24>>2]|0)){if((n[M+940>>2]|0)!=(We|0))break e;if($L(M,Ar)|0&&(zt=y(h[M+908+(n[qr>>2]<<2)>>2]),l=y($n(l,y(zt+y(yn(M,Ar,Fr)))))),(os(o,M)|0)!=5)break;lo=y(Vg(M)),lo=y(lo+y(J(M,0,Fr))),zt=y(h[M+912>>2]),zt=y(y(zt+y(yn(M,0,Fr)))-lo),lo=y($n(tt,lo)),zt=y($n(Qe,zt)),Qe=zt,tt=lo,l=y($n(l,y(lo+zt)))}while(!1);if(M=ae+1|0,M>>>0>>0)ae=M;else{ae=M;break}}else tt=y(0),l=y(0),ae=G;while(!1);if(ct=y(He+l),u=Le,Le=y(Le+ct),G>>>0>>0){Ze=y(u+tt),M=G;do{G=n[(n[_o>>2]|0)+(M<<2)>>2]|0;e:do if((n[G+36>>2]|0)!=1&&!(n[G+24>>2]|0))switch(os(o,G)|0){case 1:{zt=y(u+y(J(G,Ar,Fr))),h[G+400+(n[Lt>>2]<<2)>>2]=zt;break e}case 3:{zt=y(y(Le-y(re(G,Ar,Fr)))-y(h[G+908+(n[qr>>2]<<2)>>2])),h[G+400+(n[Lt>>2]<<2)>>2]=zt;break e}case 2:{zt=y(u+y(y(ct-y(h[G+908+(n[qr>>2]<<2)>>2]))*y(.5))),h[G+400+(n[Lt>>2]<<2)>>2]=zt;break e}case 4:{if(zt=y(u+y(J(G,Ar,Fr))),h[G+400+(n[Lt>>2]<<2)>>2]=zt,so(G,Ar,Wn)|0||(ci?(Qe=y(h[G+908>>2]),l=y(Qe+y(yn(G,Mr,Fr))),tt=ct):(tt=y(h[G+912>>2]),tt=y(tt+y(yn(G,Ar,Fr))),l=ct,Qe=y(h[G+908>>2])),mn(l,Qe)|0&&mn(tt,y(h[G+912>>2]))|0))break e;kl(G,l,tt,Us,1,1,Fr,Lo,1,3501,_)|0;break e}case 5:{h[G+404>>2]=y(y(Ze-y(Vg(G)))+y(XA(G,0,Wn)));break e}default:break e}while(!1);M=M+1|0}while((M|0)!=(ae|0))}if(We=We+1|0,(We|0)==(m|0))break;G=ae}}}while(!1);if(h[o+908>>2]=y(Gn(o,2,Tu,B,B)),h[o+912>>2]=y(Gn(o,0,Ap,k,B)),Ec|0&&(pp=n[o+32>>2]|0,hp=(Ec|0)==2,!(hp&(pp|0)!=2))?hp&(pp|0)==2&&(l=y(Ru+cr),l=y($n(y(hd(l,y(Kg(o,Mr,Qu,Mo)))),Ru)),on=198):(l=y(Gn(o,Mr,Qu,Mo,B)),on=198),(on|0)==198&&(h[o+908+(n[976+(Mr<<2)>>2]<<2)>>2]=l),Ic|0&&(dp=n[o+32>>2]|0,mp=(Ic|0)==2,!(mp&(dp|0)!=2))?mp&(dp|0)==2&&(l=y(co+Wn),l=y($n(y(hd(l,y(Kg(o,Ar,y(co+_s),Fu)))),co)),on=204):(l=y(Gn(o,Ar,y(co+_s),Fu,B)),on=204),(on|0)==204&&(h[o+908+(n[976+(Ar<<2)>>2]<<2)>>2]=l),T){if((n[gp>>2]|0)==2){G=976+(Ar<<2)|0,ae=1040+(Ar<<2)|0,M=0;do We=Cs(o,M)|0,n[We+24>>2]|0||(yp=n[G>>2]|0,zt=y(h[o+908+(yp<<2)>>2]),Bi=We+400+(n[ae>>2]<<2)|0,zt=y(zt-y(h[Bi>>2])),h[Bi>>2]=y(zt-y(h[We+908+(yp<<2)>>2]))),M=M+1|0;while((M|0)!=(uo|0))}if(A|0){M=ci?Ec:d;do eM(o,A,Fr,M,Lo,Us,_),A=n[A+960>>2]|0;while(A|0)}if(M=(Mr|2|0)==3,G=(Ar|2|0)==3,M|G){A=0;do ae=n[(n[_o>>2]|0)+(A<<2)>>2]|0,(n[ae+36>>2]|0)!=1&&(M&&a2(o,ae,Mr),G&&a2(o,ae,Ar)),A=A+1|0;while((A|0)!=(uo|0))}}}while(!1);I=Cc}function xh(o,l){o=o|0,l=y(l);var u=0;ja(o,l>=y(0),3147),u=l==y(0),h[o+4>>2]=u?y(0):l}function KA(o,l,u,A){o=o|0,l=y(l),u=y(u),A=A|0;var d=Xe,m=Xe,B=0,k=0,T=0;n[2278]=(n[2278]|0)+1,Sf(o),so(o,2,l)|0?(d=y(Xr(n[o+992>>2]|0,l)),T=1,d=y(d+y(yn(o,2,l)))):(d=y(Xr(o+380|0,l)),d>=y(0)?T=2:(T=((Mt(l)|0)^1)&1,d=l)),so(o,0,u)|0?(m=y(Xr(n[o+996>>2]|0,u)),k=1,m=y(m+y(yn(o,0,l)))):(m=y(Xr(o+388|0,u)),m>=y(0)?k=2:(k=((Mt(u)|0)^1)&1,m=u)),B=o+976|0,kl(o,d,m,A,T,k,l,u,1,3189,n[B>>2]|0)|0&&(kh(o,n[o+496>>2]|0,l,u,l),JA(o,y(h[(n[B>>2]|0)+4>>2]),y(0),y(0)),s[11696]|0)&&Gg(o,7)}function Sf(o){o=o|0;var l=0,u=0,A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0;k=I,I=I+32|0,B=k+24|0,m=k+16|0,A=k+8|0,d=k,u=0;do l=o+380+(u<<3)|0,n[o+380+(u<<3)+4>>2]|0&&(T=l,_=n[T+4>>2]|0,M=A,n[M>>2]=n[T>>2],n[M+4>>2]=_,M=o+364+(u<<3)|0,_=n[M+4>>2]|0,T=d,n[T>>2]=n[M>>2],n[T+4>>2]=_,n[m>>2]=n[A>>2],n[m+4>>2]=n[A+4>>2],n[B>>2]=n[d>>2],n[B+4>>2]=n[d+4>>2],wf(m,B)|0)||(l=o+348+(u<<3)|0),n[o+992+(u<<2)>>2]=l,u=u+1|0;while((u|0)!=2);I=k}function so(o,l,u){o=o|0,l=l|0,u=y(u);var A=0;switch(o=n[o+992+(n[976+(l<<2)>>2]<<2)>>2]|0,n[o+4>>2]|0){case 0:case 3:{o=0;break}case 1:{y(h[o>>2])>2])>2]|0){case 2:{l=y(y(y(h[o>>2])*l)/y(100));break}case 1:{l=y(h[o>>2]);break}default:l=y(ce)}return y(l)}function kh(o,l,u,A,d){o=o|0,l=l|0,u=y(u),A=y(A),d=y(d);var m=0,B=Xe;l=n[o+944>>2]|0?l:1,m=dr(n[o+4>>2]|0,l)|0,l=by(m,l)|0,u=y(vP(o,m,u)),A=y(vP(o,l,A)),B=y(u+y(J(o,m,d))),h[o+400+(n[1040+(m<<2)>>2]<<2)>>2]=B,u=y(u+y(re(o,m,d))),h[o+400+(n[1e3+(m<<2)>>2]<<2)>>2]=u,u=y(A+y(J(o,l,d))),h[o+400+(n[1040+(l<<2)>>2]<<2)>>2]=u,d=y(A+y(re(o,l,d))),h[o+400+(n[1e3+(l<<2)>>2]<<2)>>2]=d}function JA(o,l,u,A){o=o|0,l=y(l),u=y(u),A=y(A);var d=0,m=0,B=Xe,k=Xe,T=0,_=0,M=Xe,G=0,ae=Xe,We=Xe,Le=Xe,Qe=Xe;if(l!=y(0)&&(d=o+400|0,Qe=y(h[d>>2]),m=o+404|0,Le=y(h[m>>2]),G=o+416|0,We=y(h[G>>2]),_=o+420|0,B=y(h[_>>2]),ae=y(Qe+u),M=y(Le+A),A=y(ae+We),k=y(M+B),T=(n[o+988>>2]|0)==1,h[d>>2]=y(ss(Qe,l,0,T)),h[m>>2]=y(ss(Le,l,0,T)),u=y(E_(y(We*l),y(1))),mn(u,y(0))|0?m=0:m=(mn(u,y(1))|0)^1,u=y(E_(y(B*l),y(1))),mn(u,y(0))|0?d=0:d=(mn(u,y(1))|0)^1,Qe=y(ss(A,l,T&m,T&(m^1))),h[G>>2]=y(Qe-y(ss(ae,l,0,T))),Qe=y(ss(k,l,T&d,T&(d^1))),h[_>>2]=y(Qe-y(ss(M,l,0,T))),m=(n[o+952>>2]|0)-(n[o+948>>2]|0)>>2,m|0)){d=0;do JA(Cs(o,d)|0,l,ae,M),d=d+1|0;while((d|0)!=(m|0))}}function Sy(o,l,u,A,d){switch(o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,u|0){case 5:case 0:{o=n$(n[489]|0,A,d)|0;break}default:o=lVe(A,d)|0}return o|0}function Yg(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;d=I,I=I+16|0,m=d,n[m>>2]=A,Qh(o,0,l,u,m),I=d}function Qh(o,l,u,A,d){if(o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,o=o|0?o:956,v$[n[o+8>>2]&1](o,l,u,A,d)|0,(u|0)==5)Nt();else return}function hc(o,l,u){o=o|0,l=l|0,u=u|0,s[o+l>>0]=u&1}function Dy(o,l){o=o|0,l=l|0;var u=0,A=0;n[o>>2]=0,n[o+4>>2]=0,n[o+8>>2]=0,u=l+4|0,A=(n[u>>2]|0)-(n[l>>2]|0)>>2,A|0&&(Th(o,A),kt(o,n[l>>2]|0,n[u>>2]|0,A))}function Th(o,l){o=o|0,l=l|0;var u=0;if((O(o)|0)>>>0>>0&&sn(o),l>>>0>1073741823)Nt();else{u=Jt(l<<2)|0,n[o+4>>2]=u,n[o>>2]=u,n[o+8>>2]=u+(l<<2);return}}function kt(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,A=o+4|0,o=u-l|0,(o|0)>0&&(Qr(n[A>>2]|0,l|0,o|0)|0,n[A>>2]=(n[A>>2]|0)+(o>>>2<<2))}function O(o){return o=o|0,1073741823}function J(o,l,u){return o=o|0,l=l|0,u=y(u),de(l)|0&&n[o+96>>2]|0?o=o+92|0:o=kn(o+60|0,n[1040+(l<<2)>>2]|0,992)|0,y(Ke(o,u))}function re(o,l,u){return o=o|0,l=l|0,u=y(u),de(l)|0&&n[o+104>>2]|0?o=o+100|0:o=kn(o+60|0,n[1e3+(l<<2)>>2]|0,992)|0,y(Ke(o,u))}function de(o){return o=o|0,(o|1|0)==3|0}function Ke(o,l){return o=o|0,l=y(l),(n[o+4>>2]|0)==3?l=y(0):l=y(Xr(o,l)),y(l)}function ft(o,l){return o=o|0,l=l|0,o=n[o>>2]|0,(o|0?o:(l|0)>1?l:1)|0}function dr(o,l){o=o|0,l=l|0;var u=0;e:do if((l|0)==2){switch(o|0){case 2:{o=3;break e}case 3:break;default:{u=4;break e}}o=2}else u=4;while(!1);return o|0}function Br(o,l){o=o|0,l=l|0;var u=Xe;return de(l)|0&&n[o+312>>2]|0&&(u=y(h[o+308>>2]),u>=y(0))||(u=y($n(y(h[(kn(o+276|0,n[1040+(l<<2)>>2]|0,992)|0)>>2]),y(0)))),y(u)}function _n(o,l){o=o|0,l=l|0;var u=Xe;return de(l)|0&&n[o+320>>2]|0&&(u=y(h[o+316>>2]),u>=y(0))||(u=y($n(y(h[(kn(o+276|0,n[1e3+(l<<2)>>2]|0,992)|0)>>2]),y(0)))),y(u)}function di(o,l,u){o=o|0,l=l|0,u=y(u);var A=Xe;return de(l)|0&&n[o+240>>2]|0&&(A=y(Xr(o+236|0,u)),A>=y(0))||(A=y($n(y(Xr(kn(o+204|0,n[1040+(l<<2)>>2]|0,992)|0,u)),y(0)))),y(A)}function ws(o,l,u){o=o|0,l=l|0,u=y(u);var A=Xe;return de(l)|0&&n[o+248>>2]|0&&(A=y(Xr(o+244|0,u)),A>=y(0))||(A=y($n(y(Xr(kn(o+204|0,n[1e3+(l<<2)>>2]|0,992)|0,u)),y(0)))),y(A)}function zA(o,l,u,A,d,m,B){o=o|0,l=y(l),u=y(u),A=A|0,d=d|0,m=y(m),B=y(B);var k=Xe,T=Xe,_=Xe,M=Xe,G=Xe,ae=Xe,We=0,Le=0,Qe=0;Qe=I,I=I+16|0,We=Qe,Le=o+964|0,wi(o,(n[Le>>2]|0)!=0,3519),k=y(Ka(o,2,l)),T=y(Ka(o,0,l)),_=y(yn(o,2,l)),M=y(yn(o,0,l)),Mt(l)|0?G=l:G=y($n(y(0),y(y(l-_)-k))),Mt(u)|0?ae=u:ae=y($n(y(0),y(y(u-M)-T))),(A|0)==1&(d|0)==1?(h[o+908>>2]=y(Gn(o,2,y(l-_),m,m)),l=y(Gn(o,0,y(u-M),B,m))):(S$[n[Le>>2]&1](We,o,G,A,ae,d),G=y(k+y(h[We>>2])),ae=y(l-_),h[o+908>>2]=y(Gn(o,2,(A|2|0)==2?G:ae,m,m)),ae=y(T+y(h[We+4>>2])),l=y(u-M),l=y(Gn(o,0,(d|2|0)==2?ae:l,B,m))),h[o+912>>2]=l,I=Qe}function wP(o,l,u,A,d,m,B){o=o|0,l=y(l),u=y(u),A=A|0,d=d|0,m=y(m),B=y(B);var k=Xe,T=Xe,_=Xe,M=Xe;_=y(Ka(o,2,m)),k=y(Ka(o,0,m)),M=y(yn(o,2,m)),T=y(yn(o,0,m)),l=y(l-M),h[o+908>>2]=y(Gn(o,2,(A|2|0)==2?_:l,m,m)),u=y(u-T),h[o+912>>2]=y(Gn(o,0,(d|2|0)==2?k:u,B,m))}function i2(o,l,u,A,d,m,B){o=o|0,l=y(l),u=y(u),A=A|0,d=d|0,m=y(m),B=y(B);var k=0,T=Xe,_=Xe;return k=(A|0)==2,!(l<=y(0)&k)&&!(u<=y(0)&(d|0)==2)&&!((A|0)==1&(d|0)==1)?o=0:(T=y(yn(o,0,m)),_=y(yn(o,2,m)),k=l>2]=y(Gn(o,2,k?y(0):l,m,m)),l=y(u-T),k=u>2]=y(Gn(o,0,k?y(0):l,B,m)),o=1),o|0}function by(o,l){return o=o|0,l=l|0,Jg(o)|0?o=dr(2,l)|0:o=0,o|0}function Rh(o,l,u){return o=o|0,l=l|0,u=y(u),u=y(di(o,l,u)),y(u+y(Br(o,l)))}function s2(o,l,u){return o=o|0,l=l|0,u=y(u),u=y(ws(o,l,u)),y(u+y(_n(o,l)))}function Ka(o,l,u){o=o|0,l=l|0,u=y(u);var A=Xe;return A=y(Rh(o,l,u)),y(A+y(s2(o,l,u)))}function o2(o){return o=o|0,n[o+24>>2]|0?o=0:y(ZA(o))!=y(0)?o=1:o=y(Fh(o))!=y(0),o|0}function ZA(o){o=o|0;var l=Xe;if(n[o+944>>2]|0){if(l=y(h[o+44>>2]),Mt(l)|0)return l=y(h[o+40>>2]),o=l>y(0)&((Mt(l)|0)^1),y(o?l:y(0))}else l=y(0);return y(l)}function Fh(o){o=o|0;var l=Xe,u=0,A=Xe;do if(n[o+944>>2]|0){if(l=y(h[o+48>>2]),Mt(l)|0){if(u=s[(n[o+976>>2]|0)+2>>0]|0,!(u<<24>>24)&&(A=y(h[o+40>>2]),A>24?y(1):y(0)}}else l=y(0);while(!1);return y(l)}function Py(o){o=o|0;var l=0,u=0;if(eE(o+400|0,0,540)|0,s[o+985>>0]=1,ee(o),u=Li(o)|0,u|0){l=o+948|0,o=0;do Py(n[(n[l>>2]|0)+(o<<2)>>2]|0),o=o+1|0;while((o|0)!=(u|0))}}function BP(o,l,u,A,d,m,B,k,T,_){o=o|0,l=l|0,u=y(u),A=A|0,d=y(d),m=y(m),B=y(B),k=k|0,T=T|0,_=_|0;var M=0,G=Xe,ae=0,We=0,Le=Xe,Qe=Xe,tt=0,Ze=Xe,ct=0,He=Xe,Ge=0,Lt=0,qr=0,fr=0,$t=0,Tr=0,Hr=0,cr=0,Hn=0,Fo=0;Hn=I,I=I+16|0,qr=Hn+12|0,fr=Hn+8|0,$t=Hn+4|0,Tr=Hn,cr=dr(n[o+4>>2]|0,T)|0,Ge=de(cr)|0,G=y(Xr(tM(l)|0,Ge?m:B)),Lt=so(l,2,m)|0,Hr=so(l,0,B)|0;do if(!(Mt(G)|0)&&!(Mt(Ge?u:d)|0)){if(M=l+504|0,!(Mt(y(h[M>>2]))|0)&&(!(l2(n[l+976>>2]|0,0)|0)||(n[l+500>>2]|0)==(n[2278]|0)))break;h[M>>2]=y($n(G,y(Ka(l,cr,m))))}else ae=7;while(!1);do if((ae|0)==7){if(ct=Ge^1,!(ct|Lt^1)){B=y(Xr(n[l+992>>2]|0,m)),h[l+504>>2]=y($n(B,y(Ka(l,2,m))));break}if(!(Ge|Hr^1)){B=y(Xr(n[l+996>>2]|0,B)),h[l+504>>2]=y($n(B,y(Ka(l,0,m))));break}h[qr>>2]=y(ce),h[fr>>2]=y(ce),n[$t>>2]=0,n[Tr>>2]=0,Ze=y(yn(l,2,m)),He=y(yn(l,0,m)),Lt?(Le=y(Ze+y(Xr(n[l+992>>2]|0,m))),h[qr>>2]=Le,n[$t>>2]=1,We=1):(We=0,Le=y(ce)),Hr?(G=y(He+y(Xr(n[l+996>>2]|0,B))),h[fr>>2]=G,n[Tr>>2]=1,M=1):(M=0,G=y(ce)),ae=n[o+32>>2]|0,Ge&(ae|0)==2?ae=2:Mt(Le)|0&&!(Mt(u)|0)&&(h[qr>>2]=u,n[$t>>2]=2,We=2,Le=u),!((ae|0)==2&ct)&&Mt(G)|0&&!(Mt(d)|0)&&(h[fr>>2]=d,n[Tr>>2]=2,M=2,G=d),Qe=y(h[l+396>>2]),tt=Mt(Qe)|0;do if(tt)ae=We;else{if((We|0)==1&ct){h[fr>>2]=y(y(Le-Ze)/Qe),n[Tr>>2]=1,M=1,ae=1;break}Ge&(M|0)==1?(h[qr>>2]=y(Qe*y(G-He)),n[$t>>2]=1,M=1,ae=1):ae=We}while(!1);Fo=Mt(u)|0,We=(os(o,l)|0)!=4,!(Ge|Lt|((A|0)!=1|Fo)|(We|(ae|0)==1))&&(h[qr>>2]=u,n[$t>>2]=1,!tt)&&(h[fr>>2]=y(y(u-Ze)/Qe),n[Tr>>2]=1,M=1),!(Hr|ct|((k|0)!=1|(Mt(d)|0))|(We|(M|0)==1))&&(h[fr>>2]=d,n[Tr>>2]=1,!tt)&&(h[qr>>2]=y(Qe*y(d-He)),n[$t>>2]=1),Bu(l,2,m,m,$t,qr),Bu(l,0,B,m,Tr,fr),u=y(h[qr>>2]),d=y(h[fr>>2]),kl(l,u,d,T,n[$t>>2]|0,n[Tr>>2]|0,m,B,0,3565,_)|0,B=y(h[l+908+(n[976+(cr<<2)>>2]<<2)>>2]),h[l+504>>2]=y($n(B,y(Ka(l,cr,m))))}while(!1);n[l+500>>2]=n[2278],I=Hn}function Gn(o,l,u,A,d){return o=o|0,l=l|0,u=y(u),A=y(A),d=y(d),A=y(Kg(o,l,u,A)),y($n(A,y(Ka(o,l,d))))}function os(o,l){return o=o|0,l=l|0,l=l+20|0,l=n[(n[l>>2]|0?l:o+16|0)>>2]|0,(l|0)==5&&Jg(n[o+4>>2]|0)|0&&(l=1),l|0}function Ql(o,l){return o=o|0,l=l|0,de(l)|0&&n[o+96>>2]|0?l=4:l=n[1040+(l<<2)>>2]|0,o+60+(l<<3)|0}function Tl(o,l){return o=o|0,l=l|0,de(l)|0&&n[o+104>>2]|0?l=5:l=n[1e3+(l<<2)>>2]|0,o+60+(l<<3)|0}function Bu(o,l,u,A,d,m){switch(o=o|0,l=l|0,u=y(u),A=y(A),d=d|0,m=m|0,u=y(Xr(o+380+(n[976+(l<<2)>>2]<<3)|0,u)),u=y(u+y(yn(o,l,A))),n[d>>2]|0){case 2:case 1:{d=Mt(u)|0,A=y(h[m>>2]),h[m>>2]=d|A>2]=2,h[m>>2]=u);break}default:}}function ga(o,l){return o=o|0,l=l|0,o=o+132|0,de(l)|0&&n[(kn(o,4,948)|0)+4>>2]|0?o=1:o=(n[(kn(o,n[1040+(l<<2)>>2]|0,948)|0)+4>>2]|0)!=0,o|0}function XA(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,d=0;return o=o+132|0,de(l)|0&&(A=kn(o,4,948)|0,(n[A+4>>2]|0)!=0)?d=4:(A=kn(o,n[1040+(l<<2)>>2]|0,948)|0,n[A+4>>2]|0?d=4:u=y(0)),(d|0)==4&&(u=y(Xr(A,u))),y(u)}function $A(o,l,u){o=o|0,l=l|0,u=y(u);var A=Xe;return A=y(h[o+908+(n[976+(l<<2)>>2]<<2)>>2]),A=y(A+y(J(o,l,u))),y(A+y(re(o,l,u)))}function XL(o){o=o|0;var l=0,u=0,A=0;e:do if(Jg(n[o+4>>2]|0)|0)l=0;else if((n[o+16>>2]|0)!=5)if(u=Li(o)|0,!u)l=0;else for(l=0;;){if(A=Cs(o,l)|0,!(n[A+24>>2]|0)&&(n[A+20>>2]|0)==5){l=1;break e}if(l=l+1|0,l>>>0>=u>>>0){l=0;break}}else l=1;while(!1);return l|0}function $L(o,l){o=o|0,l=l|0;var u=Xe;return u=y(h[o+908+(n[976+(l<<2)>>2]<<2)>>2]),u>=y(0)&((Mt(u)|0)^1)|0}function Vg(o){o=o|0;var l=Xe,u=0,A=0,d=0,m=0,B=0,k=0,T=Xe;if(u=n[o+968>>2]|0,u)T=y(h[o+908>>2]),l=y(h[o+912>>2]),l=y(I$[u&0](o,T,l)),wi(o,(Mt(l)|0)^1,3573);else{m=Li(o)|0;do if(m|0){for(u=0,d=0;;){if(A=Cs(o,d)|0,n[A+940>>2]|0){B=8;break}if((n[A+24>>2]|0)!=1)if(k=(os(o,A)|0)==5,k){u=A;break}else u=u|0?u:A;if(d=d+1|0,d>>>0>=m>>>0){B=8;break}}if((B|0)==8&&!u)break;return l=y(Vg(u)),y(l+y(h[u+404>>2]))}while(!1);l=y(h[o+912>>2])}return y(l)}function Kg(o,l,u,A){o=o|0,l=l|0,u=y(u),A=y(A);var d=Xe,m=0;return Jg(l)|0?(l=1,m=3):de(l)|0?(l=0,m=3):(A=y(ce),d=y(ce)),(m|0)==3&&(d=y(Xr(o+364+(l<<3)|0,A)),A=y(Xr(o+380+(l<<3)|0,A))),m=A=y(0)&((Mt(A)|0)^1)),u=m?A:u,m=d>=y(0)&((Mt(d)|0)^1)&u>2]|0,m)|0,Le=by(tt,m)|0,Qe=de(tt)|0,G=y(yn(l,2,u)),ae=y(yn(l,0,u)),so(l,2,u)|0?k=y(G+y(Xr(n[l+992>>2]|0,u))):ga(l,2)|0&&xy(l,2)|0?(k=y(h[o+908>>2]),T=y(Br(o,2)),T=y(k-y(T+y(_n(o,2)))),k=y(XA(l,2,u)),k=y(Gn(l,2,y(T-y(k+y(Nh(l,2,u)))),u,u))):k=y(ce),so(l,0,d)|0?T=y(ae+y(Xr(n[l+996>>2]|0,d))):ga(l,0)|0&&xy(l,0)|0?(T=y(h[o+912>>2]),ct=y(Br(o,0)),ct=y(T-y(ct+y(_n(o,0)))),T=y(XA(l,0,d)),T=y(Gn(l,0,y(ct-y(T+y(Nh(l,0,d)))),d,u))):T=y(ce),_=Mt(k)|0,M=Mt(T)|0;do if(_^M&&(We=y(h[l+396>>2]),!(Mt(We)|0)))if(_){k=y(G+y(y(T-ae)*We));break}else{ct=y(ae+y(y(k-G)/We)),T=M?ct:T;break}while(!1);M=Mt(k)|0,_=Mt(T)|0,M|_&&(He=(M^1)&1,A=u>y(0)&((A|0)!=0&M),k=Qe?k:A?u:k,kl(l,k,T,m,Qe?He:A?2:He,M&(_^1)&1,k,T,0,3623,B)|0,k=y(h[l+908>>2]),k=y(k+y(yn(l,2,u))),T=y(h[l+912>>2]),T=y(T+y(yn(l,0,u)))),kl(l,k,T,m,1,1,k,T,1,3635,B)|0,xy(l,tt)|0&&!(ga(l,tt)|0)?(He=n[976+(tt<<2)>>2]|0,ct=y(h[o+908+(He<<2)>>2]),ct=y(ct-y(h[l+908+(He<<2)>>2])),ct=y(ct-y(_n(o,tt))),ct=y(ct-y(re(l,tt,u))),ct=y(ct-y(Nh(l,tt,Qe?u:d))),h[l+400+(n[1040+(tt<<2)>>2]<<2)>>2]=ct):Ze=21;do if((Ze|0)==21){if(!(ga(l,tt)|0)&&(n[o+8>>2]|0)==1){He=n[976+(tt<<2)>>2]|0,ct=y(h[o+908+(He<<2)>>2]),ct=y(y(ct-y(h[l+908+(He<<2)>>2]))*y(.5)),h[l+400+(n[1040+(tt<<2)>>2]<<2)>>2]=ct;break}!(ga(l,tt)|0)&&(n[o+8>>2]|0)==2&&(He=n[976+(tt<<2)>>2]|0,ct=y(h[o+908+(He<<2)>>2]),ct=y(ct-y(h[l+908+(He<<2)>>2])),h[l+400+(n[1040+(tt<<2)>>2]<<2)>>2]=ct)}while(!1);xy(l,Le)|0&&!(ga(l,Le)|0)?(He=n[976+(Le<<2)>>2]|0,ct=y(h[o+908+(He<<2)>>2]),ct=y(ct-y(h[l+908+(He<<2)>>2])),ct=y(ct-y(_n(o,Le))),ct=y(ct-y(re(l,Le,u))),ct=y(ct-y(Nh(l,Le,Qe?d:u))),h[l+400+(n[1040+(Le<<2)>>2]<<2)>>2]=ct):Ze=30;do if((Ze|0)==30&&!(ga(l,Le)|0)){if((os(o,l)|0)==2){He=n[976+(Le<<2)>>2]|0,ct=y(h[o+908+(He<<2)>>2]),ct=y(y(ct-y(h[l+908+(He<<2)>>2]))*y(.5)),h[l+400+(n[1040+(Le<<2)>>2]<<2)>>2]=ct;break}He=(os(o,l)|0)==3,He^(n[o+28>>2]|0)==2&&(He=n[976+(Le<<2)>>2]|0,ct=y(h[o+908+(He<<2)>>2]),ct=y(ct-y(h[l+908+(He<<2)>>2])),h[l+400+(n[1040+(Le<<2)>>2]<<2)>>2]=ct)}while(!1)}function a2(o,l,u){o=o|0,l=l|0,u=u|0;var A=Xe,d=0;d=n[976+(u<<2)>>2]|0,A=y(h[l+908+(d<<2)>>2]),A=y(y(h[o+908+(d<<2)>>2])-A),A=y(A-y(h[l+400+(n[1040+(u<<2)>>2]<<2)>>2])),h[l+400+(n[1e3+(u<<2)>>2]<<2)>>2]=A}function Jg(o){return o=o|0,(o|1|0)==1|0}function tM(o){o=o|0;var l=Xe;switch(n[o+56>>2]|0){case 0:case 3:{l=y(h[o+40>>2]),l>y(0)&((Mt(l)|0)^1)?o=s[(n[o+976>>2]|0)+2>>0]|0?1056:992:o=1056;break}default:o=o+52|0}return o|0}function l2(o,l){return o=o|0,l=l|0,(s[o+l>>0]|0)!=0|0}function xy(o,l){return o=o|0,l=l|0,o=o+132|0,de(l)|0&&n[(kn(o,5,948)|0)+4>>2]|0?o=1:o=(n[(kn(o,n[1e3+(l<<2)>>2]|0,948)|0)+4>>2]|0)!=0,o|0}function Nh(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,d=0;return o=o+132|0,de(l)|0&&(A=kn(o,5,948)|0,(n[A+4>>2]|0)!=0)?d=4:(A=kn(o,n[1e3+(l<<2)>>2]|0,948)|0,n[A+4>>2]|0?d=4:u=y(0)),(d|0)==4&&(u=y(Xr(A,u))),y(u)}function vP(o,l,u){return o=o|0,l=l|0,u=y(u),ga(o,l)|0?u=y(XA(o,l,u)):u=y(-y(Nh(o,l,u))),y(u)}function SP(o){return o=y(o),h[S>>2]=o,n[S>>2]|0|0}function ky(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>1073741823)Nt();else{d=Jt(l<<2)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<2)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<2)}function DP(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>2)<<2)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function Qy(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-4-l|0)>>>2)<<2)),o=n[o>>2]|0,o|0&&yt(o)}function bP(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0;if(B=o+4|0,k=n[B>>2]|0,d=k-A|0,m=d>>2,o=l+(m<<2)|0,o>>>0>>0){A=k;do n[A>>2]=n[o>>2],o=o+4|0,A=(n[B>>2]|0)+4|0,n[B>>2]=A;while(o>>>0>>0)}m|0&&F2(k+(0-m<<2)|0,l|0,d|0)|0}function PP(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0;return k=l+4|0,T=n[k>>2]|0,d=n[o>>2]|0,B=u,m=B-d|0,A=T+(0-(m>>2)<<2)|0,n[k>>2]=A,(m|0)>0&&Qr(A|0,d|0,m|0)|0,d=o+4|0,m=l+8|0,A=(n[d>>2]|0)-B|0,(A|0)>0&&(Qr(n[m>>2]|0,u|0,A|0)|0,n[m>>2]=(n[m>>2]|0)+(A>>>2<<2)),B=n[o>>2]|0,n[o>>2]=n[k>>2],n[k>>2]=B,B=n[d>>2]|0,n[d>>2]=n[m>>2],n[m>>2]=B,B=o+8|0,u=l+12|0,o=n[B>>2]|0,n[B>>2]=n[u>>2],n[u>>2]=o,n[l>>2]=n[k>>2],T|0}function c2(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;if(B=n[l>>2]|0,m=n[u>>2]|0,(B|0)!=(m|0)){d=o+8|0,u=((m+-4-B|0)>>>2)+1|0,o=B,A=n[d>>2]|0;do n[A>>2]=n[o>>2],A=(n[d>>2]|0)+4|0,n[d>>2]=A,o=o+4|0;while((o|0)!=(m|0));n[l>>2]=B+(u<<2)}}function u2(){fa()}function xP(){var o=0;return o=Jt(4)|0,f2(o),o|0}function f2(o){o=o|0,n[o>>2]=pc()|0}function kP(o){o=o|0,o|0&&(zg(o),yt(o))}function zg(o){o=o|0,st(n[o>>2]|0)}function rM(o,l,u){o=o|0,l=l|0,u=u|0,hc(n[o>>2]|0,l,u)}function Ty(o,l){o=o|0,l=y(l),xh(n[o>>2]|0,l)}function Ry(o,l){return o=o|0,l=l|0,l2(n[o>>2]|0,l)|0}function Fy(){var o=0;return o=Jt(8)|0,Zg(o,0),o|0}function Zg(o,l){o=o|0,l=l|0,l?l=Aa(n[l>>2]|0)|0:l=ns()|0,n[o>>2]=l,n[o+4>>2]=0,Tn(l,o)}function Ny(o){o=o|0;var l=0;return l=Jt(8)|0,Zg(l,o),l|0}function Xg(o){o=o|0,o|0&&(Oy(o),yt(o))}function Oy(o){o=o|0;var l=0;fc(n[o>>2]|0),l=o+4|0,o=n[l>>2]|0,n[l>>2]=0,o|0&&(Df(o),yt(o))}function Df(o){o=o|0,bf(o)}function bf(o){o=o|0,o=n[o>>2]|0,o|0&&Oa(o|0)}function A2(o){return o=o|0,Ga(o)|0}function p2(o){o=o|0;var l=0,u=0;u=o+4|0,l=n[u>>2]|0,n[u>>2]=0,l|0&&(Df(l),yt(l)),Ac(n[o>>2]|0)}function Ly(o,l){o=o|0,l=l|0,fn(n[o>>2]|0,n[l>>2]|0)}function nM(o,l){o=o|0,l=l|0,Sh(n[o>>2]|0,l)}function iM(o,l,u){o=o|0,l=l|0,u=+u,Cy(n[o>>2]|0,l,y(u))}function My(o,l,u){o=o|0,l=l|0,u=+u,wy(n[o>>2]|0,l,y(u))}function h2(o,l){o=o|0,l=l|0,wh(n[o>>2]|0,l)}function g2(o,l){o=o|0,l=l|0,bo(n[o>>2]|0,l)}function xr(o,l){o=o|0,l=l|0,vh(n[o>>2]|0,l)}function oo(o,l){o=o|0,l=l|0,my(n[o>>2]|0,l)}function Zi(o,l){o=o|0,l=l|0,Og(n[o>>2]|0,l)}function Os(o,l){o=o|0,l=l|0,Do(n[o>>2]|0,l)}function ep(o,l,u){o=o|0,l=l|0,u=+u,qA(n[o>>2]|0,l,y(u))}function d2(o,l,u){o=o|0,l=l|0,u=+u,Y(n[o>>2]|0,l,y(u))}function Bs(o,l){o=o|0,l=l|0,GA(n[o>>2]|0,l)}function _y(o,l){o=o|0,l=l|0,Ey(n[o>>2]|0,l)}function Oh(o,l){o=o|0,l=l|0,Po(n[o>>2]|0,l)}function $g(o,l){o=o|0,l=+l,Dh(n[o>>2]|0,y(l))}function Lh(o,l){o=o|0,l=+l,Pl(n[o>>2]|0,y(l))}function m2(o,l){o=o|0,l=+l,Iy(n[o>>2]|0,y(l))}function y2(o,l){o=o|0,l=+l,Mg(n[o>>2]|0,y(l))}function E2(o,l){o=o|0,l=+l,bl(n[o>>2]|0,y(l))}function I2(o,l){o=o|0,l=+l,_g(n[o>>2]|0,y(l))}function Pf(o,l){o=o|0,l=+l,n2(n[o>>2]|0,y(l))}function sr(o){o=o|0,bh(n[o>>2]|0)}function Uy(o,l){o=o|0,l=+l,zi(n[o>>2]|0,y(l))}function C2(o,l){o=o|0,l=+l,Ef(n[o>>2]|0,y(l))}function gc(o){o=o|0,Wa(n[o>>2]|0)}function xf(o,l){o=o|0,l=+l,yu(n[o>>2]|0,y(l))}function ed(o,l){o=o|0,l=+l,If(n[o>>2]|0,y(l))}function td(o,l){o=o|0,l=+l,gi(n[o>>2]|0,y(l))}function w2(o,l){o=o|0,l=+l,WA(n[o>>2]|0,y(l))}function B2(o,l){o=o|0,l=+l,pa(n[o>>2]|0,y(l))}function vu(o,l){o=o|0,l=+l,Va(n[o>>2]|0,y(l))}function rd(o,l){o=o|0,l=+l,Ph(n[o>>2]|0,y(l))}function v2(o,l){o=o|0,l=+l,jg(n[o>>2]|0,y(l))}function Hy(o,l){o=o|0,l=+l,YA(n[o>>2]|0,y(l))}function Su(o,l,u){o=o|0,l=l|0,u=+u,mu(n[o>>2]|0,l,y(u))}function jy(o,l,u){o=o|0,l=l|0,u=+u,xo(n[o>>2]|0,l,y(u))}function nd(o,l,u){o=o|0,l=l|0,u=+u,yf(n[o>>2]|0,l,y(u))}function id(o){return o=o|0,Ng(n[o>>2]|0)|0}function To(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0;A=I,I=I+16|0,d=A,jA(d,n[l>>2]|0,u),vs(o,d),I=A}function vs(o,l){o=o|0,l=l|0,Rl(o,n[l+4>>2]|0,+y(h[l>>2]))}function Rl(o,l,u){o=o|0,l=l|0,u=+u,n[o>>2]=l,E[o+8>>3]=u}function qy(o){return o=o|0,r2(n[o>>2]|0)|0}function da(o){return o=o|0,Bh(n[o>>2]|0)|0}function QP(o){return o=o|0,du(n[o>>2]|0)|0}function Mh(o){return o=o|0,t2(n[o>>2]|0)|0}function S2(o){return o=o|0,Lg(n[o>>2]|0)|0}function sM(o){return o=o|0,yy(n[o>>2]|0)|0}function TP(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0;A=I,I=I+16|0,d=A,xt(d,n[l>>2]|0,u),vs(o,d),I=A}function RP(o){return o=o|0,mf(n[o>>2]|0)|0}function Gy(o){return o=o|0,Dl(n[o>>2]|0)|0}function D2(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,HA(A,n[l>>2]|0),vs(o,A),I=u}function _h(o){return o=o|0,+ +y(ai(n[o>>2]|0))}function FP(o){return o=o|0,+ +y(qi(n[o>>2]|0))}function NP(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,ur(A,n[l>>2]|0),vs(o,A),I=u}function sd(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,Ug(A,n[l>>2]|0),vs(o,A),I=u}function oM(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,wt(A,n[l>>2]|0),vs(o,A),I=u}function aM(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,Ya(A,n[l>>2]|0),vs(o,A),I=u}function OP(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,Hg(A,n[l>>2]|0),vs(o,A),I=u}function LP(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,vy(A,n[l>>2]|0),vs(o,A),I=u}function tp(o){return o=o|0,+ +y(qg(n[o>>2]|0))}function lM(o,l){return o=o|0,l=l|0,+ +y(By(n[o>>2]|0,l))}function cM(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0;A=I,I=I+16|0,d=A,dt(d,n[l>>2]|0,u),vs(o,d),I=A}function Du(o,l,u){o=o|0,l=l|0,u=u|0,lr(n[o>>2]|0,n[l>>2]|0,u)}function uM(o,l){o=o|0,l=l|0,df(n[o>>2]|0,n[l>>2]|0)}function MP(o){return o=o|0,Li(n[o>>2]|0)|0}function fM(o){return o=o|0,o=mt(n[o>>2]|0)|0,o?o=A2(o)|0:o=0,o|0}function _P(o,l){return o=o|0,l=l|0,o=Cs(n[o>>2]|0,l)|0,o?o=A2(o)|0:o=0,o|0}function kf(o,l){o=o|0,l=l|0;var u=0,A=0;A=Jt(4)|0,UP(A,l),u=o+4|0,l=n[u>>2]|0,n[u>>2]=A,l|0&&(Df(l),yt(l)),St(n[o>>2]|0,1)}function UP(o,l){o=o|0,l=l|0,gM(o,l)}function AM(o,l,u,A,d,m){o=o|0,l=l|0,u=y(u),A=A|0,d=y(d),m=m|0;var B=0,k=0;B=I,I=I+16|0,k=B,HP(k,Ga(l)|0,+u,A,+d,m),h[o>>2]=y(+E[k>>3]),h[o+4>>2]=y(+E[k+8>>3]),I=B}function HP(o,l,u,A,d,m){o=o|0,l=l|0,u=+u,A=A|0,d=+d,m=m|0;var B=0,k=0,T=0,_=0,M=0;B=I,I=I+32|0,M=B+8|0,_=B+20|0,T=B,k=B+16|0,E[M>>3]=u,n[_>>2]=A,E[T>>3]=d,n[k>>2]=m,Wy(o,n[l+4>>2]|0,M,_,T,k),I=B}function Wy(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0;var B=0,k=0;B=I,I=I+16|0,k=B,Nl(k),l=Ls(l)|0,jP(o,l,+E[u>>3],n[A>>2]|0,+E[d>>3],n[m>>2]|0),Ol(k),I=B}function Ls(o){return o=o|0,n[o>>2]|0}function jP(o,l,u,A,d,m){o=o|0,l=l|0,u=+u,A=A|0,d=+d,m=m|0;var B=0;B=ma(b2()|0)|0,u=+Ja(u),A=Yy(A)|0,d=+Ja(d),pM(o,Jn(0,B|0,l|0,+u,A|0,+d,Yy(m)|0)|0)}function b2(){var o=0;return s[7608]|0||(x2(9120),o=7608,n[o>>2]=1,n[o+4>>2]=0),9120}function ma(o){return o=o|0,n[o+8>>2]|0}function Ja(o){return o=+o,+ +Qf(o)}function Yy(o){return o=o|0,od(o)|0}function pM(o,l){o=o|0,l=l|0;var u=0,A=0,d=0;d=I,I=I+32|0,u=d,A=l,A&1?(za(u,0),Me(A|0,u|0)|0,P2(o,u),hM(u)):(n[o>>2]=n[l>>2],n[o+4>>2]=n[l+4>>2],n[o+8>>2]=n[l+8>>2],n[o+12>>2]=n[l+12>>2]),I=d}function za(o,l){o=o|0,l=l|0,bu(o,l),n[o+8>>2]=0,s[o+24>>0]=0}function P2(o,l){o=o|0,l=l|0,l=l+8|0,n[o>>2]=n[l>>2],n[o+4>>2]=n[l+4>>2],n[o+8>>2]=n[l+8>>2],n[o+12>>2]=n[l+12>>2]}function hM(o){o=o|0,s[o+24>>0]=0}function bu(o,l){o=o|0,l=l|0,n[o>>2]=l}function od(o){return o=o|0,o|0}function Qf(o){return o=+o,+o}function x2(o){o=o|0,Ro(o,k2()|0,4)}function k2(){return 1064}function Ro(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u,n[o+8>>2]=ji(l|0,u+1|0)|0}function gM(o,l){o=o|0,l=l|0,l=n[l>>2]|0,n[o>>2]=l,cu(l|0)}function qP(o){o=o|0;var l=0,u=0;u=o+4|0,l=n[u>>2]|0,n[u>>2]=0,l|0&&(Df(l),yt(l)),St(n[o>>2]|0,0)}function GP(o){o=o|0,Dt(n[o>>2]|0)}function Vy(o){return o=o|0,tr(n[o>>2]|0)|0}function dM(o,l,u,A){o=o|0,l=+l,u=+u,A=A|0,KA(n[o>>2]|0,y(l),y(u),A)}function mM(o){return o=o|0,+ +y(Eu(n[o>>2]|0))}function v(o){return o=o|0,+ +y(Cf(n[o>>2]|0))}function D(o){return o=o|0,+ +y(Iu(n[o>>2]|0))}function Q(o){return o=o|0,+ +y(Fs(n[o>>2]|0))}function H(o){return o=o|0,+ +y(Cu(n[o>>2]|0))}function V(o){return o=o|0,+ +y(qn(n[o>>2]|0))}function ne(o,l){o=o|0,l=l|0,E[o>>3]=+y(Eu(n[l>>2]|0)),E[o+8>>3]=+y(Cf(n[l>>2]|0)),E[o+16>>3]=+y(Iu(n[l>>2]|0)),E[o+24>>3]=+y(Fs(n[l>>2]|0)),E[o+32>>3]=+y(Cu(n[l>>2]|0)),E[o+40>>3]=+y(qn(n[l>>2]|0))}function Se(o,l){return o=o|0,l=l|0,+ +y(is(n[o>>2]|0,l))}function Ue(o,l){return o=o|0,l=l|0,+ +y(xi(n[o>>2]|0,l))}function At(o,l){return o=o|0,l=l|0,+ +y(VA(n[o>>2]|0,l))}function Gt(){return Qn()|0}function vr(){Lr(),Xt(),zn(),mi(),Za(),$e()}function Lr(){Kqe(11713,4938,1)}function Xt(){pqe(10448)}function zn(){K6e(10408)}function mi(){m6e(10324)}function Za(){SHe(10096)}function $e(){qe(9132)}function qe(o){o=o|0;var l=0,u=0,A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0,ae=0,We=0,Le=0,Qe=0,tt=0,Ze=0,ct=0,He=0,Ge=0,Lt=0,qr=0,fr=0,$t=0,Tr=0,Hr=0,cr=0,Hn=0,Fo=0,No=0,Oo=0,$a=0,Kh=0,Jh=0,dc=0,zh=0,Ff=0,Nf=0,Zh=0,Xh=0,$h=0,on=0,mc=0,e0=0,ku=0,t0=0,r0=0,Of=0,Lf=0,Qu=0,ao=0,Ml=0,ya=0,yc=0,lp=0,cp=0,Mf=0,up=0,fp=0,lo=0,_s=0,Ec=0,Wn=0,Ap=0,Lo=0,Tu=0,Mo=0,Ru=0,pp=0,hp=0,Fu=0,co=0,Ic=0,gp=0,dp=0,mp=0,Fr=0,ci=0,Us=0,_o=0,uo=0,Mr=0,Ar=0,Cc=0;l=I,I=I+672|0,u=l+656|0,Cc=l+648|0,Ar=l+640|0,Mr=l+632|0,uo=l+624|0,_o=l+616|0,Us=l+608|0,ci=l+600|0,Fr=l+592|0,mp=l+584|0,dp=l+576|0,gp=l+568|0,Ic=l+560|0,co=l+552|0,Fu=l+544|0,hp=l+536|0,pp=l+528|0,Ru=l+520|0,Mo=l+512|0,Tu=l+504|0,Lo=l+496|0,Ap=l+488|0,Wn=l+480|0,Ec=l+472|0,_s=l+464|0,lo=l+456|0,fp=l+448|0,up=l+440|0,Mf=l+432|0,cp=l+424|0,lp=l+416|0,yc=l+408|0,ya=l+400|0,Ml=l+392|0,ao=l+384|0,Qu=l+376|0,Lf=l+368|0,Of=l+360|0,r0=l+352|0,t0=l+344|0,ku=l+336|0,e0=l+328|0,mc=l+320|0,on=l+312|0,$h=l+304|0,Xh=l+296|0,Zh=l+288|0,Nf=l+280|0,Ff=l+272|0,zh=l+264|0,dc=l+256|0,Jh=l+248|0,Kh=l+240|0,$a=l+232|0,Oo=l+224|0,No=l+216|0,Fo=l+208|0,Hn=l+200|0,cr=l+192|0,Hr=l+184|0,Tr=l+176|0,$t=l+168|0,fr=l+160|0,qr=l+152|0,Lt=l+144|0,Ge=l+136|0,He=l+128|0,ct=l+120|0,Ze=l+112|0,tt=l+104|0,Qe=l+96|0,Le=l+88|0,We=l+80|0,ae=l+72|0,G=l+64|0,M=l+56|0,_=l+48|0,T=l+40|0,k=l+32|0,B=l+24|0,m=l+16|0,d=l+8|0,A=l,pt(o,3646),Zt(o,3651,2)|0,Sr(o,3665,2)|0,Xn(o,3682,18)|0,n[Cc>>2]=19,n[Cc+4>>2]=0,n[u>>2]=n[Cc>>2],n[u+4>>2]=n[Cc+4>>2],kr(o,3690,u)|0,n[Ar>>2]=1,n[Ar+4>>2]=0,n[u>>2]=n[Ar>>2],n[u+4>>2]=n[Ar+4>>2],Rn(o,3696,u)|0,n[Mr>>2]=2,n[Mr+4>>2]=0,n[u>>2]=n[Mr>>2],n[u+4>>2]=n[Mr+4>>2],Un(o,3706,u)|0,n[uo>>2]=1,n[uo+4>>2]=0,n[u>>2]=n[uo>>2],n[u+4>>2]=n[uo+4>>2],zr(o,3722,u)|0,n[_o>>2]=2,n[_o+4>>2]=0,n[u>>2]=n[_o>>2],n[u+4>>2]=n[_o+4>>2],zr(o,3734,u)|0,n[Us>>2]=3,n[Us+4>>2]=0,n[u>>2]=n[Us>>2],n[u+4>>2]=n[Us+4>>2],Un(o,3753,u)|0,n[ci>>2]=4,n[ci+4>>2]=0,n[u>>2]=n[ci>>2],n[u+4>>2]=n[ci+4>>2],Un(o,3769,u)|0,n[Fr>>2]=5,n[Fr+4>>2]=0,n[u>>2]=n[Fr>>2],n[u+4>>2]=n[Fr+4>>2],Un(o,3783,u)|0,n[mp>>2]=6,n[mp+4>>2]=0,n[u>>2]=n[mp>>2],n[u+4>>2]=n[mp+4>>2],Un(o,3796,u)|0,n[dp>>2]=7,n[dp+4>>2]=0,n[u>>2]=n[dp>>2],n[u+4>>2]=n[dp+4>>2],Un(o,3813,u)|0,n[gp>>2]=8,n[gp+4>>2]=0,n[u>>2]=n[gp>>2],n[u+4>>2]=n[gp+4>>2],Un(o,3825,u)|0,n[Ic>>2]=3,n[Ic+4>>2]=0,n[u>>2]=n[Ic>>2],n[u+4>>2]=n[Ic+4>>2],zr(o,3843,u)|0,n[co>>2]=4,n[co+4>>2]=0,n[u>>2]=n[co>>2],n[u+4>>2]=n[co+4>>2],zr(o,3853,u)|0,n[Fu>>2]=9,n[Fu+4>>2]=0,n[u>>2]=n[Fu>>2],n[u+4>>2]=n[Fu+4>>2],Un(o,3870,u)|0,n[hp>>2]=10,n[hp+4>>2]=0,n[u>>2]=n[hp>>2],n[u+4>>2]=n[hp+4>>2],Un(o,3884,u)|0,n[pp>>2]=11,n[pp+4>>2]=0,n[u>>2]=n[pp>>2],n[u+4>>2]=n[pp+4>>2],Un(o,3896,u)|0,n[Ru>>2]=1,n[Ru+4>>2]=0,n[u>>2]=n[Ru>>2],n[u+4>>2]=n[Ru+4>>2],li(o,3907,u)|0,n[Mo>>2]=2,n[Mo+4>>2]=0,n[u>>2]=n[Mo>>2],n[u+4>>2]=n[Mo+4>>2],li(o,3915,u)|0,n[Tu>>2]=3,n[Tu+4>>2]=0,n[u>>2]=n[Tu>>2],n[u+4>>2]=n[Tu+4>>2],li(o,3928,u)|0,n[Lo>>2]=4,n[Lo+4>>2]=0,n[u>>2]=n[Lo>>2],n[u+4>>2]=n[Lo+4>>2],li(o,3948,u)|0,n[Ap>>2]=5,n[Ap+4>>2]=0,n[u>>2]=n[Ap>>2],n[u+4>>2]=n[Ap+4>>2],li(o,3960,u)|0,n[Wn>>2]=6,n[Wn+4>>2]=0,n[u>>2]=n[Wn>>2],n[u+4>>2]=n[Wn+4>>2],li(o,3974,u)|0,n[Ec>>2]=7,n[Ec+4>>2]=0,n[u>>2]=n[Ec>>2],n[u+4>>2]=n[Ec+4>>2],li(o,3983,u)|0,n[_s>>2]=20,n[_s+4>>2]=0,n[u>>2]=n[_s>>2],n[u+4>>2]=n[_s+4>>2],kr(o,3999,u)|0,n[lo>>2]=8,n[lo+4>>2]=0,n[u>>2]=n[lo>>2],n[u+4>>2]=n[lo+4>>2],li(o,4012,u)|0,n[fp>>2]=9,n[fp+4>>2]=0,n[u>>2]=n[fp>>2],n[u+4>>2]=n[fp+4>>2],li(o,4022,u)|0,n[up>>2]=21,n[up+4>>2]=0,n[u>>2]=n[up>>2],n[u+4>>2]=n[up+4>>2],kr(o,4039,u)|0,n[Mf>>2]=10,n[Mf+4>>2]=0,n[u>>2]=n[Mf>>2],n[u+4>>2]=n[Mf+4>>2],li(o,4053,u)|0,n[cp>>2]=11,n[cp+4>>2]=0,n[u>>2]=n[cp>>2],n[u+4>>2]=n[cp+4>>2],li(o,4065,u)|0,n[lp>>2]=12,n[lp+4>>2]=0,n[u>>2]=n[lp>>2],n[u+4>>2]=n[lp+4>>2],li(o,4084,u)|0,n[yc>>2]=13,n[yc+4>>2]=0,n[u>>2]=n[yc>>2],n[u+4>>2]=n[yc+4>>2],li(o,4097,u)|0,n[ya>>2]=14,n[ya+4>>2]=0,n[u>>2]=n[ya>>2],n[u+4>>2]=n[ya+4>>2],li(o,4117,u)|0,n[Ml>>2]=15,n[Ml+4>>2]=0,n[u>>2]=n[Ml>>2],n[u+4>>2]=n[Ml+4>>2],li(o,4129,u)|0,n[ao>>2]=16,n[ao+4>>2]=0,n[u>>2]=n[ao>>2],n[u+4>>2]=n[ao+4>>2],li(o,4148,u)|0,n[Qu>>2]=17,n[Qu+4>>2]=0,n[u>>2]=n[Qu>>2],n[u+4>>2]=n[Qu+4>>2],li(o,4161,u)|0,n[Lf>>2]=18,n[Lf+4>>2]=0,n[u>>2]=n[Lf>>2],n[u+4>>2]=n[Lf+4>>2],li(o,4181,u)|0,n[Of>>2]=5,n[Of+4>>2]=0,n[u>>2]=n[Of>>2],n[u+4>>2]=n[Of+4>>2],zr(o,4196,u)|0,n[r0>>2]=6,n[r0+4>>2]=0,n[u>>2]=n[r0>>2],n[u+4>>2]=n[r0+4>>2],zr(o,4206,u)|0,n[t0>>2]=7,n[t0+4>>2]=0,n[u>>2]=n[t0>>2],n[u+4>>2]=n[t0+4>>2],zr(o,4217,u)|0,n[ku>>2]=3,n[ku+4>>2]=0,n[u>>2]=n[ku>>2],n[u+4>>2]=n[ku+4>>2],Pu(o,4235,u)|0,n[e0>>2]=1,n[e0+4>>2]=0,n[u>>2]=n[e0>>2],n[u+4>>2]=n[e0+4>>2],yM(o,4251,u)|0,n[mc>>2]=4,n[mc+4>>2]=0,n[u>>2]=n[mc>>2],n[u+4>>2]=n[mc+4>>2],Pu(o,4263,u)|0,n[on>>2]=5,n[on+4>>2]=0,n[u>>2]=n[on>>2],n[u+4>>2]=n[on+4>>2],Pu(o,4279,u)|0,n[$h>>2]=6,n[$h+4>>2]=0,n[u>>2]=n[$h>>2],n[u+4>>2]=n[$h+4>>2],Pu(o,4293,u)|0,n[Xh>>2]=7,n[Xh+4>>2]=0,n[u>>2]=n[Xh>>2],n[u+4>>2]=n[Xh+4>>2],Pu(o,4306,u)|0,n[Zh>>2]=8,n[Zh+4>>2]=0,n[u>>2]=n[Zh>>2],n[u+4>>2]=n[Zh+4>>2],Pu(o,4323,u)|0,n[Nf>>2]=9,n[Nf+4>>2]=0,n[u>>2]=n[Nf>>2],n[u+4>>2]=n[Nf+4>>2],Pu(o,4335,u)|0,n[Ff>>2]=2,n[Ff+4>>2]=0,n[u>>2]=n[Ff>>2],n[u+4>>2]=n[Ff+4>>2],yM(o,4353,u)|0,n[zh>>2]=12,n[zh+4>>2]=0,n[u>>2]=n[zh>>2],n[u+4>>2]=n[zh+4>>2],ad(o,4363,u)|0,n[dc>>2]=1,n[dc+4>>2]=0,n[u>>2]=n[dc>>2],n[u+4>>2]=n[dc+4>>2],rp(o,4376,u)|0,n[Jh>>2]=2,n[Jh+4>>2]=0,n[u>>2]=n[Jh>>2],n[u+4>>2]=n[Jh+4>>2],rp(o,4388,u)|0,n[Kh>>2]=13,n[Kh+4>>2]=0,n[u>>2]=n[Kh>>2],n[u+4>>2]=n[Kh+4>>2],ad(o,4402,u)|0,n[$a>>2]=14,n[$a+4>>2]=0,n[u>>2]=n[$a>>2],n[u+4>>2]=n[$a+4>>2],ad(o,4411,u)|0,n[Oo>>2]=15,n[Oo+4>>2]=0,n[u>>2]=n[Oo>>2],n[u+4>>2]=n[Oo+4>>2],ad(o,4421,u)|0,n[No>>2]=16,n[No+4>>2]=0,n[u>>2]=n[No>>2],n[u+4>>2]=n[No+4>>2],ad(o,4433,u)|0,n[Fo>>2]=17,n[Fo+4>>2]=0,n[u>>2]=n[Fo>>2],n[u+4>>2]=n[Fo+4>>2],ad(o,4446,u)|0,n[Hn>>2]=18,n[Hn+4>>2]=0,n[u>>2]=n[Hn>>2],n[u+4>>2]=n[Hn+4>>2],ad(o,4458,u)|0,n[cr>>2]=3,n[cr+4>>2]=0,n[u>>2]=n[cr>>2],n[u+4>>2]=n[cr+4>>2],rp(o,4471,u)|0,n[Hr>>2]=1,n[Hr+4>>2]=0,n[u>>2]=n[Hr>>2],n[u+4>>2]=n[Hr+4>>2],WP(o,4486,u)|0,n[Tr>>2]=10,n[Tr+4>>2]=0,n[u>>2]=n[Tr>>2],n[u+4>>2]=n[Tr+4>>2],Pu(o,4496,u)|0,n[$t>>2]=11,n[$t+4>>2]=0,n[u>>2]=n[$t>>2],n[u+4>>2]=n[$t+4>>2],Pu(o,4508,u)|0,n[fr>>2]=3,n[fr+4>>2]=0,n[u>>2]=n[fr>>2],n[u+4>>2]=n[fr+4>>2],yM(o,4519,u)|0,n[qr>>2]=4,n[qr+4>>2]=0,n[u>>2]=n[qr>>2],n[u+4>>2]=n[qr+4>>2],rLe(o,4530,u)|0,n[Lt>>2]=19,n[Lt+4>>2]=0,n[u>>2]=n[Lt>>2],n[u+4>>2]=n[Lt+4>>2],nLe(o,4542,u)|0,n[Ge>>2]=12,n[Ge+4>>2]=0,n[u>>2]=n[Ge>>2],n[u+4>>2]=n[Ge+4>>2],iLe(o,4554,u)|0,n[He>>2]=13,n[He+4>>2]=0,n[u>>2]=n[He>>2],n[u+4>>2]=n[He+4>>2],sLe(o,4568,u)|0,n[ct>>2]=2,n[ct+4>>2]=0,n[u>>2]=n[ct>>2],n[u+4>>2]=n[ct+4>>2],oLe(o,4578,u)|0,n[Ze>>2]=20,n[Ze+4>>2]=0,n[u>>2]=n[Ze>>2],n[u+4>>2]=n[Ze+4>>2],aLe(o,4587,u)|0,n[tt>>2]=22,n[tt+4>>2]=0,n[u>>2]=n[tt>>2],n[u+4>>2]=n[tt+4>>2],kr(o,4602,u)|0,n[Qe>>2]=23,n[Qe+4>>2]=0,n[u>>2]=n[Qe>>2],n[u+4>>2]=n[Qe+4>>2],kr(o,4619,u)|0,n[Le>>2]=14,n[Le+4>>2]=0,n[u>>2]=n[Le>>2],n[u+4>>2]=n[Le+4>>2],lLe(o,4629,u)|0,n[We>>2]=1,n[We+4>>2]=0,n[u>>2]=n[We>>2],n[u+4>>2]=n[We+4>>2],cLe(o,4637,u)|0,n[ae>>2]=4,n[ae+4>>2]=0,n[u>>2]=n[ae>>2],n[u+4>>2]=n[ae+4>>2],rp(o,4653,u)|0,n[G>>2]=5,n[G+4>>2]=0,n[u>>2]=n[G>>2],n[u+4>>2]=n[G+4>>2],rp(o,4669,u)|0,n[M>>2]=6,n[M+4>>2]=0,n[u>>2]=n[M>>2],n[u+4>>2]=n[M+4>>2],rp(o,4686,u)|0,n[_>>2]=7,n[_+4>>2]=0,n[u>>2]=n[_>>2],n[u+4>>2]=n[_+4>>2],rp(o,4701,u)|0,n[T>>2]=8,n[T+4>>2]=0,n[u>>2]=n[T>>2],n[u+4>>2]=n[T+4>>2],rp(o,4719,u)|0,n[k>>2]=9,n[k+4>>2]=0,n[u>>2]=n[k>>2],n[u+4>>2]=n[k+4>>2],rp(o,4736,u)|0,n[B>>2]=21,n[B+4>>2]=0,n[u>>2]=n[B>>2],n[u+4>>2]=n[B+4>>2],uLe(o,4754,u)|0,n[m>>2]=2,n[m+4>>2]=0,n[u>>2]=n[m>>2],n[u+4>>2]=n[m+4>>2],WP(o,4772,u)|0,n[d>>2]=3,n[d+4>>2]=0,n[u>>2]=n[d>>2],n[u+4>>2]=n[d+4>>2],WP(o,4790,u)|0,n[A>>2]=4,n[A+4>>2]=0,n[u>>2]=n[A>>2],n[u+4>>2]=n[A+4>>2],WP(o,4808,u)|0,I=l}function pt(o,l){o=o|0,l=l|0;var u=0;u=dHe()|0,n[o>>2]=u,mHe(u,l),Wh(n[o>>2]|0)}function Zt(o,l,u){return o=o|0,l=l|0,u=u|0,rHe(o,Bn(l)|0,u,0),o|0}function Sr(o,l,u){return o=o|0,l=l|0,u=u|0,U8e(o,Bn(l)|0,u,0),o|0}function Xn(o,l,u){return o=o|0,l=l|0,u=u|0,D8e(o,Bn(l)|0,u,0),o|0}function kr(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],u8e(o,l,d),I=A,o|0}function Rn(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],W3e(o,l,d),I=A,o|0}function Un(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],x3e(o,l,d),I=A,o|0}function zr(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],p3e(o,l,d),I=A,o|0}function li(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Z4e(o,l,d),I=A,o|0}function Pu(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],N4e(o,l,d),I=A,o|0}function yM(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],E4e(o,l,d),I=A,o|0}function ad(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],WUe(o,l,d),I=A,o|0}function rp(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],xUe(o,l,d),I=A,o|0}function WP(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],pUe(o,l,d),I=A,o|0}function rLe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Z_e(o,l,d),I=A,o|0}function nLe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],N_e(o,l,d),I=A,o|0}function iLe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],I_e(o,l,d),I=A,o|0}function sLe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],s_e(o,l,d),I=A,o|0}function oLe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],jMe(o,l,d),I=A,o|0}function aLe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],SMe(o,l,d),I=A,o|0}function lLe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],cMe(o,l,d),I=A,o|0}function cLe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],WLe(o,l,d),I=A,o|0}function uLe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],fLe(o,l,d),I=A,o|0}function fLe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],ALe(o,u,d,1),I=A}function Bn(o){return o=o|0,o|0}function ALe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,_=0,M=0;d=I,I=I+32|0,m=d+16|0,M=d+8|0,k=d,_=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=EM()|0,n[M>>2]=_,n[M+4>>2]=T,n[m>>2]=n[M>>2],n[m+4>>2]=n[M+4>>2],u=pLe(m)|0,n[k>>2]=_,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,hLe(m,A)|0,A),I=d}function EM(){var o=0,l=0;if(s[7616]|0||(eZ(9136),gr(24,9136,U|0)|0,l=7616,n[l>>2]=1,n[l+4>>2]=0),!(Ur(9136)|0)){o=9136,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));eZ(9136)}return 9136}function pLe(o){return o=o|0,0}function hLe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0;return M=I,I=I+32|0,d=M+24|0,B=M+16|0,k=M,T=M+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,G=EM()|0,_=G+24|0,o=yr(l,4)|0,n[T>>2]=o,l=G+28|0,u=n[l>>2]|0,u>>>0<(n[G+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],$z(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(mLe(_,k,T),o=n[l>>2]|0),I=M,((o-(n[_>>2]|0)|0)/12|0)+-1|0}function vn(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0;var B=0,k=0,T=0,_=0,M=0,G=0,ae=0,We=0;B=I,I=I+32|0,ae=B+24|0,G=B+20|0,T=B+16|0,M=B+12|0,_=B+8|0,k=B+4|0,We=B,n[G>>2]=l,n[T>>2]=u,n[M>>2]=A,n[_>>2]=d,n[k>>2]=m,m=o+28|0,n[We>>2]=n[m>>2],n[ae>>2]=n[We>>2],gLe(o+24|0,ae,G,M,_,T,k)|0,n[m>>2]=n[n[m>>2]>>2],I=B}function gLe(o,l,u,A,d,m,B){return o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,B=B|0,o=dLe(l)|0,l=Jt(24)|0,Xz(l+4|0,n[u>>2]|0,n[A>>2]|0,n[d>>2]|0,n[m>>2]|0,n[B>>2]|0),n[l>>2]=n[o>>2],n[o>>2]=l,l|0}function dLe(o){return o=o|0,n[o>>2]|0}function Xz(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,n[o>>2]=l,n[o+4>>2]=u,n[o+8>>2]=A,n[o+12>>2]=d,n[o+16>>2]=m}function yr(o,l){return o=o|0,l=l|0,l|o|0}function $z(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function mLe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0,ae=0;if(_=I,I=I+48|0,A=_+32|0,B=_+24|0,k=_,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=yLe(o)|0,m>>>0>>0)sn(o);else{M=n[o>>2]|0,ae=((n[o+8>>2]|0)-M|0)/12|0,G=ae<<1,ELe(k,ae>>>0>>1>>>0?G>>>0>>0?d:G:m,((n[T>>2]|0)-M|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],$z(m,A,u),n[T>>2]=(n[T>>2]|0)+12,ILe(o,k),CLe(k),I=_;return}}function yLe(o){return o=o|0,357913941}function ELe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function ILe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function CLe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&yt(o)}function eZ(o){o=o|0,vLe(o)}function wLe(o){o=o|0,BLe(o+24|0)}function Ur(o){return o=o|0,n[o>>2]|0}function BLe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),yt(u))}function vLe(o){o=o|0;var l=0;l=en()|0,tn(o,2,3,l,SLe()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function en(){return 9228}function SLe(){return 1140}function DLe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0;return u=I,I=I+16|0,A=u+8|0,d=u,m=bLe(o)|0,o=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=o,n[A>>2]=n[d>>2],n[A+4>>2]=n[d+4>>2],l=PLe(l,A)|0,I=u,l|0}function tn(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,n[o>>2]=l,n[o+4>>2]=u,n[o+8>>2]=A,n[o+12>>2]=d,n[o+16>>2]=m}function bLe(o){return o=o|0,(n[(EM()|0)+24>>2]|0)+(o*12|0)|0}function PLe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0;return d=I,I=I+48|0,A=d,u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),ap[u&31](A,o),A=xLe(A)|0,I=d,A|0}function xLe(o){o=o|0;var l=0,u=0,A=0,d=0;return d=I,I=I+32|0,l=d+12|0,u=d,A=IM(tZ()|0)|0,A?(CM(l,A),wM(u,l),kLe(o,u),o=BM(l)|0):o=QLe(o)|0,I=d,o|0}function tZ(){var o=0;return s[7632]|0||(HLe(9184),gr(25,9184,U|0)|0,o=7632,n[o>>2]=1,n[o+4>>2]=0),9184}function IM(o){return o=o|0,n[o+36>>2]|0}function CM(o,l){o=o|0,l=l|0,n[o>>2]=l,n[o+4>>2]=o,n[o+8>>2]=0}function wM(o,l){o=o|0,l=l|0,n[o>>2]=n[l>>2],n[o+4>>2]=n[l+4>>2],n[o+8>>2]=0}function kLe(o,l){o=o|0,l=l|0,NLe(l,o,o+8|0,o+16|0,o+24|0,o+32|0,o+40|0)|0}function BM(o){return o=o|0,n[(n[o+4>>2]|0)+8>>2]|0}function QLe(o){o=o|0;var l=0,u=0,A=0,d=0,m=0,B=0,k=0,T=0;T=I,I=I+16|0,u=T+4|0,A=T,d=Fl(8)|0,m=d,B=Jt(48)|0,k=B,l=k+48|0;do n[k>>2]=n[o>>2],k=k+4|0,o=o+4|0;while((k|0)<(l|0));return l=m+4|0,n[l>>2]=B,k=Jt(8)|0,B=n[l>>2]|0,n[A>>2]=0,n[u>>2]=n[A>>2],rZ(k,B,u),n[d>>2]=k,I=T,m|0}function rZ(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,u=Jt(16)|0,n[u+4>>2]=0,n[u+8>>2]=0,n[u>>2]=1092,n[u+12>>2]=l,n[o+4>>2]=u}function TLe(o){o=o|0,$y(o),yt(o)}function RLe(o){o=o|0,o=n[o+12>>2]|0,o|0&&yt(o)}function FLe(o){o=o|0,yt(o)}function NLe(o,l,u,A,d,m,B){return o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,B=B|0,m=OLe(n[o>>2]|0,l,u,A,d,m,B)|0,B=o+4|0,n[(n[B>>2]|0)+8>>2]=m,n[(n[B>>2]|0)+8>>2]|0}function OLe(o,l,u,A,d,m,B){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,B=B|0;var k=0,T=0;return k=I,I=I+16|0,T=k,Nl(T),o=Ls(o)|0,B=LLe(o,+E[l>>3],+E[u>>3],+E[A>>3],+E[d>>3],+E[m>>3],+E[B>>3])|0,Ol(T),I=k,B|0}function LLe(o,l,u,A,d,m,B){o=o|0,l=+l,u=+u,A=+A,d=+d,m=+m,B=+B;var k=0;return k=ma(MLe()|0)|0,l=+Ja(l),u=+Ja(u),A=+Ja(A),d=+Ja(d),m=+Ja(m),no(0,k|0,o|0,+l,+u,+A,+d,+m,+ +Ja(B))|0}function MLe(){var o=0;return s[7624]|0||(_Le(9172),o=7624,n[o>>2]=1,n[o+4>>2]=0),9172}function _Le(o){o=o|0,Ro(o,ULe()|0,6)}function ULe(){return 1112}function HLe(o){o=o|0,Uh(o)}function jLe(o){o=o|0,nZ(o+24|0),iZ(o+16|0)}function nZ(o){o=o|0,GLe(o)}function iZ(o){o=o|0,qLe(o)}function qLe(o){o=o|0;var l=0,u=0;if(l=n[o>>2]|0,l|0)do u=l,l=n[l>>2]|0,yt(u);while(l|0);n[o>>2]=0}function GLe(o){o=o|0;var l=0,u=0;if(l=n[o>>2]|0,l|0)do u=l,l=n[l>>2]|0,yt(u);while(l|0);n[o>>2]=0}function Uh(o){o=o|0;var l=0;n[o+16>>2]=0,n[o+20>>2]=0,l=o+24|0,n[l>>2]=0,n[o+28>>2]=l,n[o+36>>2]=0,s[o+40>>0]=0,s[o+41>>0]=0}function WLe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],YLe(o,u,d,0),I=A}function YLe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,_=0,M=0;d=I,I=I+32|0,m=d+16|0,M=d+8|0,k=d,_=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=vM()|0,n[M>>2]=_,n[M+4>>2]=T,n[m>>2]=n[M>>2],n[m+4>>2]=n[M+4>>2],u=VLe(m)|0,n[k>>2]=_,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,KLe(m,A)|0,A),I=d}function vM(){var o=0,l=0;if(s[7640]|0||(oZ(9232),gr(26,9232,U|0)|0,l=7640,n[l>>2]=1,n[l+4>>2]=0),!(Ur(9232)|0)){o=9232,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));oZ(9232)}return 9232}function VLe(o){return o=o|0,0}function KLe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0;return M=I,I=I+32|0,d=M+24|0,B=M+16|0,k=M,T=M+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,G=vM()|0,_=G+24|0,o=yr(l,4)|0,n[T>>2]=o,l=G+28|0,u=n[l>>2]|0,u>>>0<(n[G+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],sZ(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(JLe(_,k,T),o=n[l>>2]|0),I=M,((o-(n[_>>2]|0)|0)/12|0)+-1|0}function sZ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function JLe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0,ae=0;if(_=I,I=I+48|0,A=_+32|0,B=_+24|0,k=_,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=zLe(o)|0,m>>>0>>0)sn(o);else{M=n[o>>2]|0,ae=((n[o+8>>2]|0)-M|0)/12|0,G=ae<<1,ZLe(k,ae>>>0>>1>>>0?G>>>0>>0?d:G:m,((n[T>>2]|0)-M|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],sZ(m,A,u),n[T>>2]=(n[T>>2]|0)+12,XLe(o,k),$Le(k),I=_;return}}function zLe(o){return o=o|0,357913941}function ZLe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function XLe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function $Le(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&yt(o)}function oZ(o){o=o|0,rMe(o)}function eMe(o){o=o|0,tMe(o+24|0)}function tMe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),yt(u))}function rMe(o){o=o|0;var l=0;l=en()|0,tn(o,2,1,l,nMe()|0,3),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function nMe(){return 1144}function iMe(o,l,u,A,d){o=o|0,l=l|0,u=+u,A=+A,d=d|0;var m=0,B=0,k=0,T=0;m=I,I=I+16|0,B=m+8|0,k=m,T=sMe(o)|0,o=n[T+4>>2]|0,n[k>>2]=n[T>>2],n[k+4>>2]=o,n[B>>2]=n[k>>2],n[B+4>>2]=n[k+4>>2],oMe(l,B,u,A,d),I=m}function sMe(o){return o=o|0,(n[(vM()|0)+24>>2]|0)+(o*12|0)|0}function oMe(o,l,u,A,d){o=o|0,l=l|0,u=+u,A=+A,d=d|0;var m=0,B=0,k=0,T=0,_=0;_=I,I=I+16|0,B=_+2|0,k=_+1|0,T=_,m=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(m=n[(n[o>>2]|0)+m>>2]|0),Tf(B,u),u=+Rf(B,u),Tf(k,A),A=+Rf(k,A),np(T,d),T=ip(T,d)|0,C$[m&1](o,u,A,T),I=_}function Tf(o,l){o=o|0,l=+l}function Rf(o,l){return o=o|0,l=+l,+ +lMe(l)}function np(o,l){o=o|0,l=l|0}function ip(o,l){return o=o|0,l=l|0,aMe(l)|0}function aMe(o){return o=o|0,o|0}function lMe(o){return o=+o,+o}function cMe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],uMe(o,u,d,1),I=A}function uMe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,_=0,M=0;d=I,I=I+32|0,m=d+16|0,M=d+8|0,k=d,_=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=SM()|0,n[M>>2]=_,n[M+4>>2]=T,n[m>>2]=n[M>>2],n[m+4>>2]=n[M+4>>2],u=fMe(m)|0,n[k>>2]=_,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,AMe(m,A)|0,A),I=d}function SM(){var o=0,l=0;if(s[7648]|0||(lZ(9268),gr(27,9268,U|0)|0,l=7648,n[l>>2]=1,n[l+4>>2]=0),!(Ur(9268)|0)){o=9268,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));lZ(9268)}return 9268}function fMe(o){return o=o|0,0}function AMe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0;return M=I,I=I+32|0,d=M+24|0,B=M+16|0,k=M,T=M+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,G=SM()|0,_=G+24|0,o=yr(l,4)|0,n[T>>2]=o,l=G+28|0,u=n[l>>2]|0,u>>>0<(n[G+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],aZ(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(pMe(_,k,T),o=n[l>>2]|0),I=M,((o-(n[_>>2]|0)|0)/12|0)+-1|0}function aZ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function pMe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0,ae=0;if(_=I,I=I+48|0,A=_+32|0,B=_+24|0,k=_,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=hMe(o)|0,m>>>0>>0)sn(o);else{M=n[o>>2]|0,ae=((n[o+8>>2]|0)-M|0)/12|0,G=ae<<1,gMe(k,ae>>>0>>1>>>0?G>>>0>>0?d:G:m,((n[T>>2]|0)-M|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],aZ(m,A,u),n[T>>2]=(n[T>>2]|0)+12,dMe(o,k),mMe(k),I=_;return}}function hMe(o){return o=o|0,357913941}function gMe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function dMe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function mMe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&yt(o)}function lZ(o){o=o|0,IMe(o)}function yMe(o){o=o|0,EMe(o+24|0)}function EMe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),yt(u))}function IMe(o){o=o|0;var l=0;l=en()|0,tn(o,2,4,l,CMe()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function CMe(){return 1160}function wMe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0;return u=I,I=I+16|0,A=u+8|0,d=u,m=BMe(o)|0,o=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=o,n[A>>2]=n[d>>2],n[A+4>>2]=n[d+4>>2],l=vMe(l,A)|0,I=u,l|0}function BMe(o){return o=o|0,(n[(SM()|0)+24>>2]|0)+(o*12|0)|0}function vMe(o,l){o=o|0,l=l|0;var u=0;return u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),cZ(dd[u&31](o)|0)|0}function cZ(o){return o=o|0,o&1|0}function SMe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],DMe(o,u,d,0),I=A}function DMe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,_=0,M=0;d=I,I=I+32|0,m=d+16|0,M=d+8|0,k=d,_=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=DM()|0,n[M>>2]=_,n[M+4>>2]=T,n[m>>2]=n[M>>2],n[m+4>>2]=n[M+4>>2],u=bMe(m)|0,n[k>>2]=_,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,PMe(m,A)|0,A),I=d}function DM(){var o=0,l=0;if(s[7656]|0||(fZ(9304),gr(28,9304,U|0)|0,l=7656,n[l>>2]=1,n[l+4>>2]=0),!(Ur(9304)|0)){o=9304,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));fZ(9304)}return 9304}function bMe(o){return o=o|0,0}function PMe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0;return M=I,I=I+32|0,d=M+24|0,B=M+16|0,k=M,T=M+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,G=DM()|0,_=G+24|0,o=yr(l,4)|0,n[T>>2]=o,l=G+28|0,u=n[l>>2]|0,u>>>0<(n[G+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],uZ(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(xMe(_,k,T),o=n[l>>2]|0),I=M,((o-(n[_>>2]|0)|0)/12|0)+-1|0}function uZ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function xMe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0,ae=0;if(_=I,I=I+48|0,A=_+32|0,B=_+24|0,k=_,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=kMe(o)|0,m>>>0>>0)sn(o);else{M=n[o>>2]|0,ae=((n[o+8>>2]|0)-M|0)/12|0,G=ae<<1,QMe(k,ae>>>0>>1>>>0?G>>>0>>0?d:G:m,((n[T>>2]|0)-M|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],uZ(m,A,u),n[T>>2]=(n[T>>2]|0)+12,TMe(o,k),RMe(k),I=_;return}}function kMe(o){return o=o|0,357913941}function QMe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function TMe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function RMe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&yt(o)}function fZ(o){o=o|0,OMe(o)}function FMe(o){o=o|0,NMe(o+24|0)}function NMe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),yt(u))}function OMe(o){o=o|0;var l=0;l=en()|0,tn(o,2,5,l,LMe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function LMe(){return 1164}function MMe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;A=I,I=I+16|0,d=A+8|0,m=A,B=_Me(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],UMe(l,d,u),I=A}function _Me(o){return o=o|0,(n[(DM()|0)+24>>2]|0)+(o*12|0)|0}function UMe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;m=I,I=I+16|0,d=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),Hh(d,u),u=jh(d,u)|0,ap[A&31](o,u),qh(d),I=m}function Hh(o,l){o=o|0,l=l|0,HMe(o,l)}function jh(o,l){return o=o|0,l=l|0,o|0}function qh(o){o=o|0,Df(o)}function HMe(o,l){o=o|0,l=l|0,bM(o,l)}function bM(o,l){o=o|0,l=l|0,n[o>>2]=l}function jMe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],qMe(o,u,d,0),I=A}function qMe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,_=0,M=0;d=I,I=I+32|0,m=d+16|0,M=d+8|0,k=d,_=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=PM()|0,n[M>>2]=_,n[M+4>>2]=T,n[m>>2]=n[M>>2],n[m+4>>2]=n[M+4>>2],u=GMe(m)|0,n[k>>2]=_,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,WMe(m,A)|0,A),I=d}function PM(){var o=0,l=0;if(s[7664]|0||(pZ(9340),gr(29,9340,U|0)|0,l=7664,n[l>>2]=1,n[l+4>>2]=0),!(Ur(9340)|0)){o=9340,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));pZ(9340)}return 9340}function GMe(o){return o=o|0,0}function WMe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0;return M=I,I=I+32|0,d=M+24|0,B=M+16|0,k=M,T=M+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,G=PM()|0,_=G+24|0,o=yr(l,4)|0,n[T>>2]=o,l=G+28|0,u=n[l>>2]|0,u>>>0<(n[G+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],AZ(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(YMe(_,k,T),o=n[l>>2]|0),I=M,((o-(n[_>>2]|0)|0)/12|0)+-1|0}function AZ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function YMe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0,ae=0;if(_=I,I=I+48|0,A=_+32|0,B=_+24|0,k=_,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=VMe(o)|0,m>>>0>>0)sn(o);else{M=n[o>>2]|0,ae=((n[o+8>>2]|0)-M|0)/12|0,G=ae<<1,KMe(k,ae>>>0>>1>>>0?G>>>0>>0?d:G:m,((n[T>>2]|0)-M|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],AZ(m,A,u),n[T>>2]=(n[T>>2]|0)+12,JMe(o,k),zMe(k),I=_;return}}function VMe(o){return o=o|0,357913941}function KMe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function JMe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function zMe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&yt(o)}function pZ(o){o=o|0,$Me(o)}function ZMe(o){o=o|0,XMe(o+24|0)}function XMe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),yt(u))}function $Me(o){o=o|0;var l=0;l=en()|0,tn(o,2,4,l,e_e()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function e_e(){return 1180}function t_e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=r_e(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],u=n_e(l,d,u)|0,I=A,u|0}function r_e(o){return o=o|0,(n[(PM()|0)+24>>2]|0)+(o*12|0)|0}function n_e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;return m=I,I=I+16|0,d=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),ld(d,u),d=cd(d,u)|0,d=YP(v_[A&15](o,d)|0)|0,I=m,d|0}function ld(o,l){o=o|0,l=l|0}function cd(o,l){return o=o|0,l=l|0,i_e(l)|0}function YP(o){return o=o|0,o|0}function i_e(o){return o=o|0,o|0}function s_e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],o_e(o,u,d,0),I=A}function o_e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,_=0,M=0;d=I,I=I+32|0,m=d+16|0,M=d+8|0,k=d,_=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=xM()|0,n[M>>2]=_,n[M+4>>2]=T,n[m>>2]=n[M>>2],n[m+4>>2]=n[M+4>>2],u=a_e(m)|0,n[k>>2]=_,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,l_e(m,A)|0,A),I=d}function xM(){var o=0,l=0;if(s[7672]|0||(gZ(9376),gr(30,9376,U|0)|0,l=7672,n[l>>2]=1,n[l+4>>2]=0),!(Ur(9376)|0)){o=9376,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));gZ(9376)}return 9376}function a_e(o){return o=o|0,0}function l_e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0;return M=I,I=I+32|0,d=M+24|0,B=M+16|0,k=M,T=M+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,G=xM()|0,_=G+24|0,o=yr(l,4)|0,n[T>>2]=o,l=G+28|0,u=n[l>>2]|0,u>>>0<(n[G+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],hZ(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(c_e(_,k,T),o=n[l>>2]|0),I=M,((o-(n[_>>2]|0)|0)/12|0)+-1|0}function hZ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function c_e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0,ae=0;if(_=I,I=I+48|0,A=_+32|0,B=_+24|0,k=_,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=u_e(o)|0,m>>>0>>0)sn(o);else{M=n[o>>2]|0,ae=((n[o+8>>2]|0)-M|0)/12|0,G=ae<<1,f_e(k,ae>>>0>>1>>>0?G>>>0>>0?d:G:m,((n[T>>2]|0)-M|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],hZ(m,A,u),n[T>>2]=(n[T>>2]|0)+12,A_e(o,k),p_e(k),I=_;return}}function u_e(o){return o=o|0,357913941}function f_e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function A_e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function p_e(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&yt(o)}function gZ(o){o=o|0,d_e(o)}function h_e(o){o=o|0,g_e(o+24|0)}function g_e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),yt(u))}function d_e(o){o=o|0;var l=0;l=en()|0,tn(o,2,5,l,dZ()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function dZ(){return 1196}function m_e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0;return u=I,I=I+16|0,A=u+8|0,d=u,m=y_e(o)|0,o=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=o,n[A>>2]=n[d>>2],n[A+4>>2]=n[d+4>>2],l=E_e(l,A)|0,I=u,l|0}function y_e(o){return o=o|0,(n[(xM()|0)+24>>2]|0)+(o*12|0)|0}function E_e(o,l){o=o|0,l=l|0;var u=0;return u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),YP(dd[u&31](o)|0)|0}function I_e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],C_e(o,u,d,1),I=A}function C_e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,_=0,M=0;d=I,I=I+32|0,m=d+16|0,M=d+8|0,k=d,_=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=kM()|0,n[M>>2]=_,n[M+4>>2]=T,n[m>>2]=n[M>>2],n[m+4>>2]=n[M+4>>2],u=w_e(m)|0,n[k>>2]=_,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,B_e(m,A)|0,A),I=d}function kM(){var o=0,l=0;if(s[7680]|0||(yZ(9412),gr(31,9412,U|0)|0,l=7680,n[l>>2]=1,n[l+4>>2]=0),!(Ur(9412)|0)){o=9412,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));yZ(9412)}return 9412}function w_e(o){return o=o|0,0}function B_e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0;return M=I,I=I+32|0,d=M+24|0,B=M+16|0,k=M,T=M+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,G=kM()|0,_=G+24|0,o=yr(l,4)|0,n[T>>2]=o,l=G+28|0,u=n[l>>2]|0,u>>>0<(n[G+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],mZ(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(v_e(_,k,T),o=n[l>>2]|0),I=M,((o-(n[_>>2]|0)|0)/12|0)+-1|0}function mZ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function v_e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0,ae=0;if(_=I,I=I+48|0,A=_+32|0,B=_+24|0,k=_,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=S_e(o)|0,m>>>0>>0)sn(o);else{M=n[o>>2]|0,ae=((n[o+8>>2]|0)-M|0)/12|0,G=ae<<1,D_e(k,ae>>>0>>1>>>0?G>>>0>>0?d:G:m,((n[T>>2]|0)-M|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],mZ(m,A,u),n[T>>2]=(n[T>>2]|0)+12,b_e(o,k),P_e(k),I=_;return}}function S_e(o){return o=o|0,357913941}function D_e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function b_e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function P_e(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&yt(o)}function yZ(o){o=o|0,Q_e(o)}function x_e(o){o=o|0,k_e(o+24|0)}function k_e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),yt(u))}function Q_e(o){o=o|0;var l=0;l=en()|0,tn(o,2,6,l,EZ()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function EZ(){return 1200}function T_e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0;return u=I,I=I+16|0,A=u+8|0,d=u,m=R_e(o)|0,o=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=o,n[A>>2]=n[d>>2],n[A+4>>2]=n[d+4>>2],l=F_e(l,A)|0,I=u,l|0}function R_e(o){return o=o|0,(n[(kM()|0)+24>>2]|0)+(o*12|0)|0}function F_e(o,l){o=o|0,l=l|0;var u=0;return u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),VP(dd[u&31](o)|0)|0}function VP(o){return o=o|0,o|0}function N_e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],O_e(o,u,d,0),I=A}function O_e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,_=0,M=0;d=I,I=I+32|0,m=d+16|0,M=d+8|0,k=d,_=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=QM()|0,n[M>>2]=_,n[M+4>>2]=T,n[m>>2]=n[M>>2],n[m+4>>2]=n[M+4>>2],u=L_e(m)|0,n[k>>2]=_,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,M_e(m,A)|0,A),I=d}function QM(){var o=0,l=0;if(s[7688]|0||(CZ(9448),gr(32,9448,U|0)|0,l=7688,n[l>>2]=1,n[l+4>>2]=0),!(Ur(9448)|0)){o=9448,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));CZ(9448)}return 9448}function L_e(o){return o=o|0,0}function M_e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0;return M=I,I=I+32|0,d=M+24|0,B=M+16|0,k=M,T=M+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,G=QM()|0,_=G+24|0,o=yr(l,4)|0,n[T>>2]=o,l=G+28|0,u=n[l>>2]|0,u>>>0<(n[G+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],IZ(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(__e(_,k,T),o=n[l>>2]|0),I=M,((o-(n[_>>2]|0)|0)/12|0)+-1|0}function IZ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function __e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0,ae=0;if(_=I,I=I+48|0,A=_+32|0,B=_+24|0,k=_,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=U_e(o)|0,m>>>0>>0)sn(o);else{M=n[o>>2]|0,ae=((n[o+8>>2]|0)-M|0)/12|0,G=ae<<1,H_e(k,ae>>>0>>1>>>0?G>>>0>>0?d:G:m,((n[T>>2]|0)-M|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],IZ(m,A,u),n[T>>2]=(n[T>>2]|0)+12,j_e(o,k),q_e(k),I=_;return}}function U_e(o){return o=o|0,357913941}function H_e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function j_e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function q_e(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&yt(o)}function CZ(o){o=o|0,Y_e(o)}function G_e(o){o=o|0,W_e(o+24|0)}function W_e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),yt(u))}function Y_e(o){o=o|0;var l=0;l=en()|0,tn(o,2,6,l,wZ()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function wZ(){return 1204}function V_e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;A=I,I=I+16|0,d=A+8|0,m=A,B=K_e(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],J_e(l,d,u),I=A}function K_e(o){return o=o|0,(n[(QM()|0)+24>>2]|0)+(o*12|0)|0}function J_e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;m=I,I=I+16|0,d=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),TM(d,u),d=RM(d,u)|0,ap[A&31](o,d),I=m}function TM(o,l){o=o|0,l=l|0}function RM(o,l){return o=o|0,l=l|0,z_e(l)|0}function z_e(o){return o=o|0,o|0}function Z_e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],X_e(o,u,d,0),I=A}function X_e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,_=0,M=0;d=I,I=I+32|0,m=d+16|0,M=d+8|0,k=d,_=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=FM()|0,n[M>>2]=_,n[M+4>>2]=T,n[m>>2]=n[M>>2],n[m+4>>2]=n[M+4>>2],u=$_e(m)|0,n[k>>2]=_,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,eUe(m,A)|0,A),I=d}function FM(){var o=0,l=0;if(s[7696]|0||(vZ(9484),gr(33,9484,U|0)|0,l=7696,n[l>>2]=1,n[l+4>>2]=0),!(Ur(9484)|0)){o=9484,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));vZ(9484)}return 9484}function $_e(o){return o=o|0,0}function eUe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0;return M=I,I=I+32|0,d=M+24|0,B=M+16|0,k=M,T=M+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,G=FM()|0,_=G+24|0,o=yr(l,4)|0,n[T>>2]=o,l=G+28|0,u=n[l>>2]|0,u>>>0<(n[G+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],BZ(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(tUe(_,k,T),o=n[l>>2]|0),I=M,((o-(n[_>>2]|0)|0)/12|0)+-1|0}function BZ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function tUe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0,ae=0;if(_=I,I=I+48|0,A=_+32|0,B=_+24|0,k=_,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=rUe(o)|0,m>>>0>>0)sn(o);else{M=n[o>>2]|0,ae=((n[o+8>>2]|0)-M|0)/12|0,G=ae<<1,nUe(k,ae>>>0>>1>>>0?G>>>0>>0?d:G:m,((n[T>>2]|0)-M|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],BZ(m,A,u),n[T>>2]=(n[T>>2]|0)+12,iUe(o,k),sUe(k),I=_;return}}function rUe(o){return o=o|0,357913941}function nUe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function iUe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function sUe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&yt(o)}function vZ(o){o=o|0,lUe(o)}function oUe(o){o=o|0,aUe(o+24|0)}function aUe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),yt(u))}function lUe(o){o=o|0;var l=0;l=en()|0,tn(o,2,1,l,cUe()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function cUe(){return 1212}function uUe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0;d=I,I=I+16|0,m=d+8|0,B=d,k=fUe(o)|0,o=n[k+4>>2]|0,n[B>>2]=n[k>>2],n[B+4>>2]=o,n[m>>2]=n[B>>2],n[m+4>>2]=n[B+4>>2],AUe(l,m,u,A),I=d}function fUe(o){return o=o|0,(n[(FM()|0)+24>>2]|0)+(o*12|0)|0}function AUe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0;k=I,I=I+16|0,m=k+1|0,B=k,d=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(d=n[(n[o>>2]|0)+d>>2]|0),TM(m,u),m=RM(m,u)|0,ld(B,A),B=cd(B,A)|0,L2[d&15](o,m,B),I=k}function pUe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],hUe(o,u,d,1),I=A}function hUe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,_=0,M=0;d=I,I=I+32|0,m=d+16|0,M=d+8|0,k=d,_=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=NM()|0,n[M>>2]=_,n[M+4>>2]=T,n[m>>2]=n[M>>2],n[m+4>>2]=n[M+4>>2],u=gUe(m)|0,n[k>>2]=_,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,dUe(m,A)|0,A),I=d}function NM(){var o=0,l=0;if(s[7704]|0||(DZ(9520),gr(34,9520,U|0)|0,l=7704,n[l>>2]=1,n[l+4>>2]=0),!(Ur(9520)|0)){o=9520,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));DZ(9520)}return 9520}function gUe(o){return o=o|0,0}function dUe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0;return M=I,I=I+32|0,d=M+24|0,B=M+16|0,k=M,T=M+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,G=NM()|0,_=G+24|0,o=yr(l,4)|0,n[T>>2]=o,l=G+28|0,u=n[l>>2]|0,u>>>0<(n[G+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],SZ(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(mUe(_,k,T),o=n[l>>2]|0),I=M,((o-(n[_>>2]|0)|0)/12|0)+-1|0}function SZ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function mUe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0,ae=0;if(_=I,I=I+48|0,A=_+32|0,B=_+24|0,k=_,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=yUe(o)|0,m>>>0>>0)sn(o);else{M=n[o>>2]|0,ae=((n[o+8>>2]|0)-M|0)/12|0,G=ae<<1,EUe(k,ae>>>0>>1>>>0?G>>>0>>0?d:G:m,((n[T>>2]|0)-M|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],SZ(m,A,u),n[T>>2]=(n[T>>2]|0)+12,IUe(o,k),CUe(k),I=_;return}}function yUe(o){return o=o|0,357913941}function EUe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function IUe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function CUe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&yt(o)}function DZ(o){o=o|0,vUe(o)}function wUe(o){o=o|0,BUe(o+24|0)}function BUe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),yt(u))}function vUe(o){o=o|0;var l=0;l=en()|0,tn(o,2,1,l,SUe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function SUe(){return 1224}function DUe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;return d=I,I=I+16|0,m=d+8|0,B=d,k=bUe(o)|0,o=n[k+4>>2]|0,n[B>>2]=n[k>>2],n[B+4>>2]=o,n[m>>2]=n[B>>2],n[m+4>>2]=n[B+4>>2],A=+PUe(l,m,u),I=d,+A}function bUe(o){return o=o|0,(n[(NM()|0)+24>>2]|0)+(o*12|0)|0}function PUe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return m=I,I=I+16|0,d=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),np(d,u),d=ip(d,u)|0,B=+Qf(+B$[A&7](o,d)),I=m,+B}function xUe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],kUe(o,u,d,1),I=A}function kUe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,_=0,M=0;d=I,I=I+32|0,m=d+16|0,M=d+8|0,k=d,_=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=OM()|0,n[M>>2]=_,n[M+4>>2]=T,n[m>>2]=n[M>>2],n[m+4>>2]=n[M+4>>2],u=QUe(m)|0,n[k>>2]=_,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,TUe(m,A)|0,A),I=d}function OM(){var o=0,l=0;if(s[7712]|0||(PZ(9556),gr(35,9556,U|0)|0,l=7712,n[l>>2]=1,n[l+4>>2]=0),!(Ur(9556)|0)){o=9556,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));PZ(9556)}return 9556}function QUe(o){return o=o|0,0}function TUe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0;return M=I,I=I+32|0,d=M+24|0,B=M+16|0,k=M,T=M+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,G=OM()|0,_=G+24|0,o=yr(l,4)|0,n[T>>2]=o,l=G+28|0,u=n[l>>2]|0,u>>>0<(n[G+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],bZ(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(RUe(_,k,T),o=n[l>>2]|0),I=M,((o-(n[_>>2]|0)|0)/12|0)+-1|0}function bZ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function RUe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0,ae=0;if(_=I,I=I+48|0,A=_+32|0,B=_+24|0,k=_,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=FUe(o)|0,m>>>0>>0)sn(o);else{M=n[o>>2]|0,ae=((n[o+8>>2]|0)-M|0)/12|0,G=ae<<1,NUe(k,ae>>>0>>1>>>0?G>>>0>>0?d:G:m,((n[T>>2]|0)-M|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],bZ(m,A,u),n[T>>2]=(n[T>>2]|0)+12,OUe(o,k),LUe(k),I=_;return}}function FUe(o){return o=o|0,357913941}function NUe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function OUe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function LUe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&yt(o)}function PZ(o){o=o|0,UUe(o)}function MUe(o){o=o|0,_Ue(o+24|0)}function _Ue(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),yt(u))}function UUe(o){o=o|0;var l=0;l=en()|0,tn(o,2,5,l,HUe()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function HUe(){return 1232}function jUe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=qUe(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],u=+GUe(l,d),I=A,+u}function qUe(o){return o=o|0,(n[(OM()|0)+24>>2]|0)+(o*12|0)|0}function GUe(o,l){o=o|0,l=l|0;var u=0;return u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),+ +Qf(+w$[u&15](o))}function WUe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],YUe(o,u,d,1),I=A}function YUe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,_=0,M=0;d=I,I=I+32|0,m=d+16|0,M=d+8|0,k=d,_=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=LM()|0,n[M>>2]=_,n[M+4>>2]=T,n[m>>2]=n[M>>2],n[m+4>>2]=n[M+4>>2],u=VUe(m)|0,n[k>>2]=_,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,KUe(m,A)|0,A),I=d}function LM(){var o=0,l=0;if(s[7720]|0||(kZ(9592),gr(36,9592,U|0)|0,l=7720,n[l>>2]=1,n[l+4>>2]=0),!(Ur(9592)|0)){o=9592,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));kZ(9592)}return 9592}function VUe(o){return o=o|0,0}function KUe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0;return M=I,I=I+32|0,d=M+24|0,B=M+16|0,k=M,T=M+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,G=LM()|0,_=G+24|0,o=yr(l,4)|0,n[T>>2]=o,l=G+28|0,u=n[l>>2]|0,u>>>0<(n[G+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],xZ(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(JUe(_,k,T),o=n[l>>2]|0),I=M,((o-(n[_>>2]|0)|0)/12|0)+-1|0}function xZ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function JUe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0,ae=0;if(_=I,I=I+48|0,A=_+32|0,B=_+24|0,k=_,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=zUe(o)|0,m>>>0>>0)sn(o);else{M=n[o>>2]|0,ae=((n[o+8>>2]|0)-M|0)/12|0,G=ae<<1,ZUe(k,ae>>>0>>1>>>0?G>>>0>>0?d:G:m,((n[T>>2]|0)-M|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],xZ(m,A,u),n[T>>2]=(n[T>>2]|0)+12,XUe(o,k),$Ue(k),I=_;return}}function zUe(o){return o=o|0,357913941}function ZUe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function XUe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function $Ue(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&yt(o)}function kZ(o){o=o|0,r4e(o)}function e4e(o){o=o|0,t4e(o+24|0)}function t4e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),yt(u))}function r4e(o){o=o|0;var l=0;l=en()|0,tn(o,2,7,l,n4e()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function n4e(){return 1276}function i4e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0;return u=I,I=I+16|0,A=u+8|0,d=u,m=s4e(o)|0,o=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=o,n[A>>2]=n[d>>2],n[A+4>>2]=n[d+4>>2],l=o4e(l,A)|0,I=u,l|0}function s4e(o){return o=o|0,(n[(LM()|0)+24>>2]|0)+(o*12|0)|0}function o4e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0;return d=I,I=I+16|0,A=d,u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),ap[u&31](A,o),A=QZ(A)|0,I=d,A|0}function QZ(o){o=o|0;var l=0,u=0,A=0,d=0;return d=I,I=I+32|0,l=d+12|0,u=d,A=IM(TZ()|0)|0,A?(CM(l,A),wM(u,l),a4e(o,u),o=BM(l)|0):o=l4e(o)|0,I=d,o|0}function TZ(){var o=0;return s[7736]|0||(y4e(9640),gr(25,9640,U|0)|0,o=7736,n[o>>2]=1,n[o+4>>2]=0),9640}function a4e(o,l){o=o|0,l=l|0,A4e(l,o,o+8|0)|0}function l4e(o){o=o|0;var l=0,u=0,A=0,d=0,m=0,B=0,k=0;return u=I,I=I+16|0,d=u+4|0,B=u,A=Fl(8)|0,l=A,k=Jt(16)|0,n[k>>2]=n[o>>2],n[k+4>>2]=n[o+4>>2],n[k+8>>2]=n[o+8>>2],n[k+12>>2]=n[o+12>>2],m=l+4|0,n[m>>2]=k,o=Jt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],MM(o,m,d),n[A>>2]=o,I=u,l|0}function MM(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,u=Jt(16)|0,n[u+4>>2]=0,n[u+8>>2]=0,n[u>>2]=1244,n[u+12>>2]=l,n[o+4>>2]=u}function c4e(o){o=o|0,$y(o),yt(o)}function u4e(o){o=o|0,o=n[o+12>>2]|0,o|0&&yt(o)}function f4e(o){o=o|0,yt(o)}function A4e(o,l,u){return o=o|0,l=l|0,u=u|0,l=p4e(n[o>>2]|0,l,u)|0,u=o+4|0,n[(n[u>>2]|0)+8>>2]=l,n[(n[u>>2]|0)+8>>2]|0}function p4e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0;return A=I,I=I+16|0,d=A,Nl(d),o=Ls(o)|0,u=h4e(o,n[l>>2]|0,+E[u>>3])|0,Ol(d),I=A,u|0}function h4e(o,l,u){o=o|0,l=l|0,u=+u;var A=0;return A=ma(g4e()|0)|0,l=Yy(l)|0,lu(0,A|0,o|0,l|0,+ +Ja(u))|0}function g4e(){var o=0;return s[7728]|0||(d4e(9628),o=7728,n[o>>2]=1,n[o+4>>2]=0),9628}function d4e(o){o=o|0,Ro(o,m4e()|0,2)}function m4e(){return 1264}function y4e(o){o=o|0,Uh(o)}function E4e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],I4e(o,u,d,1),I=A}function I4e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,_=0,M=0;d=I,I=I+32|0,m=d+16|0,M=d+8|0,k=d,_=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=_M()|0,n[M>>2]=_,n[M+4>>2]=T,n[m>>2]=n[M>>2],n[m+4>>2]=n[M+4>>2],u=C4e(m)|0,n[k>>2]=_,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,w4e(m,A)|0,A),I=d}function _M(){var o=0,l=0;if(s[7744]|0||(FZ(9684),gr(37,9684,U|0)|0,l=7744,n[l>>2]=1,n[l+4>>2]=0),!(Ur(9684)|0)){o=9684,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));FZ(9684)}return 9684}function C4e(o){return o=o|0,0}function w4e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0;return M=I,I=I+32|0,d=M+24|0,B=M+16|0,k=M,T=M+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,G=_M()|0,_=G+24|0,o=yr(l,4)|0,n[T>>2]=o,l=G+28|0,u=n[l>>2]|0,u>>>0<(n[G+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],RZ(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(B4e(_,k,T),o=n[l>>2]|0),I=M,((o-(n[_>>2]|0)|0)/12|0)+-1|0}function RZ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function B4e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0,ae=0;if(_=I,I=I+48|0,A=_+32|0,B=_+24|0,k=_,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=v4e(o)|0,m>>>0>>0)sn(o);else{M=n[o>>2]|0,ae=((n[o+8>>2]|0)-M|0)/12|0,G=ae<<1,S4e(k,ae>>>0>>1>>>0?G>>>0>>0?d:G:m,((n[T>>2]|0)-M|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],RZ(m,A,u),n[T>>2]=(n[T>>2]|0)+12,D4e(o,k),b4e(k),I=_;return}}function v4e(o){return o=o|0,357913941}function S4e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function D4e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function b4e(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&yt(o)}function FZ(o){o=o|0,k4e(o)}function P4e(o){o=o|0,x4e(o+24|0)}function x4e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),yt(u))}function k4e(o){o=o|0;var l=0;l=en()|0,tn(o,2,5,l,Q4e()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function Q4e(){return 1280}function T4e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=R4e(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],u=F4e(l,d,u)|0,I=A,u|0}function R4e(o){return o=o|0,(n[(_M()|0)+24>>2]|0)+(o*12|0)|0}function F4e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return B=I,I=I+32|0,d=B,m=B+16|0,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),np(m,u),m=ip(m,u)|0,L2[A&15](d,o,m),m=QZ(d)|0,I=B,m|0}function N4e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],O4e(o,u,d,1),I=A}function O4e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,_=0,M=0;d=I,I=I+32|0,m=d+16|0,M=d+8|0,k=d,_=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=UM()|0,n[M>>2]=_,n[M+4>>2]=T,n[m>>2]=n[M>>2],n[m+4>>2]=n[M+4>>2],u=L4e(m)|0,n[k>>2]=_,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,M4e(m,A)|0,A),I=d}function UM(){var o=0,l=0;if(s[7752]|0||(OZ(9720),gr(38,9720,U|0)|0,l=7752,n[l>>2]=1,n[l+4>>2]=0),!(Ur(9720)|0)){o=9720,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));OZ(9720)}return 9720}function L4e(o){return o=o|0,0}function M4e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0;return M=I,I=I+32|0,d=M+24|0,B=M+16|0,k=M,T=M+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,G=UM()|0,_=G+24|0,o=yr(l,4)|0,n[T>>2]=o,l=G+28|0,u=n[l>>2]|0,u>>>0<(n[G+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],NZ(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(_4e(_,k,T),o=n[l>>2]|0),I=M,((o-(n[_>>2]|0)|0)/12|0)+-1|0}function NZ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function _4e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0,ae=0;if(_=I,I=I+48|0,A=_+32|0,B=_+24|0,k=_,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=U4e(o)|0,m>>>0>>0)sn(o);else{M=n[o>>2]|0,ae=((n[o+8>>2]|0)-M|0)/12|0,G=ae<<1,H4e(k,ae>>>0>>1>>>0?G>>>0>>0?d:G:m,((n[T>>2]|0)-M|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],NZ(m,A,u),n[T>>2]=(n[T>>2]|0)+12,j4e(o,k),q4e(k),I=_;return}}function U4e(o){return o=o|0,357913941}function H4e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function j4e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function q4e(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&yt(o)}function OZ(o){o=o|0,Y4e(o)}function G4e(o){o=o|0,W4e(o+24|0)}function W4e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),yt(u))}function Y4e(o){o=o|0;var l=0;l=en()|0,tn(o,2,8,l,V4e()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function V4e(){return 1288}function K4e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0;return u=I,I=I+16|0,A=u+8|0,d=u,m=J4e(o)|0,o=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=o,n[A>>2]=n[d>>2],n[A+4>>2]=n[d+4>>2],l=z4e(l,A)|0,I=u,l|0}function J4e(o){return o=o|0,(n[(UM()|0)+24>>2]|0)+(o*12|0)|0}function z4e(o,l){o=o|0,l=l|0;var u=0;return u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),od(dd[u&31](o)|0)|0}function Z4e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],X4e(o,u,d,0),I=A}function X4e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,_=0,M=0;d=I,I=I+32|0,m=d+16|0,M=d+8|0,k=d,_=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=HM()|0,n[M>>2]=_,n[M+4>>2]=T,n[m>>2]=n[M>>2],n[m+4>>2]=n[M+4>>2],u=$4e(m)|0,n[k>>2]=_,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,e3e(m,A)|0,A),I=d}function HM(){var o=0,l=0;if(s[7760]|0||(MZ(9756),gr(39,9756,U|0)|0,l=7760,n[l>>2]=1,n[l+4>>2]=0),!(Ur(9756)|0)){o=9756,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));MZ(9756)}return 9756}function $4e(o){return o=o|0,0}function e3e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0;return M=I,I=I+32|0,d=M+24|0,B=M+16|0,k=M,T=M+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,G=HM()|0,_=G+24|0,o=yr(l,4)|0,n[T>>2]=o,l=G+28|0,u=n[l>>2]|0,u>>>0<(n[G+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],LZ(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(t3e(_,k,T),o=n[l>>2]|0),I=M,((o-(n[_>>2]|0)|0)/12|0)+-1|0}function LZ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function t3e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0,ae=0;if(_=I,I=I+48|0,A=_+32|0,B=_+24|0,k=_,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=r3e(o)|0,m>>>0>>0)sn(o);else{M=n[o>>2]|0,ae=((n[o+8>>2]|0)-M|0)/12|0,G=ae<<1,n3e(k,ae>>>0>>1>>>0?G>>>0>>0?d:G:m,((n[T>>2]|0)-M|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],LZ(m,A,u),n[T>>2]=(n[T>>2]|0)+12,i3e(o,k),s3e(k),I=_;return}}function r3e(o){return o=o|0,357913941}function n3e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function i3e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function s3e(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&yt(o)}function MZ(o){o=o|0,l3e(o)}function o3e(o){o=o|0,a3e(o+24|0)}function a3e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),yt(u))}function l3e(o){o=o|0;var l=0;l=en()|0,tn(o,2,8,l,c3e()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function c3e(){return 1292}function u3e(o,l,u){o=o|0,l=l|0,u=+u;var A=0,d=0,m=0,B=0;A=I,I=I+16|0,d=A+8|0,m=A,B=f3e(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],A3e(l,d,u),I=A}function f3e(o){return o=o|0,(n[(HM()|0)+24>>2]|0)+(o*12|0)|0}function A3e(o,l,u){o=o|0,l=l|0,u=+u;var A=0,d=0,m=0;m=I,I=I+16|0,d=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),Tf(d,u),u=+Rf(d,u),E$[A&31](o,u),I=m}function p3e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],h3e(o,u,d,0),I=A}function h3e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,_=0,M=0;d=I,I=I+32|0,m=d+16|0,M=d+8|0,k=d,_=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=jM()|0,n[M>>2]=_,n[M+4>>2]=T,n[m>>2]=n[M>>2],n[m+4>>2]=n[M+4>>2],u=g3e(m)|0,n[k>>2]=_,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,d3e(m,A)|0,A),I=d}function jM(){var o=0,l=0;if(s[7768]|0||(UZ(9792),gr(40,9792,U|0)|0,l=7768,n[l>>2]=1,n[l+4>>2]=0),!(Ur(9792)|0)){o=9792,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));UZ(9792)}return 9792}function g3e(o){return o=o|0,0}function d3e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0;return M=I,I=I+32|0,d=M+24|0,B=M+16|0,k=M,T=M+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,G=jM()|0,_=G+24|0,o=yr(l,4)|0,n[T>>2]=o,l=G+28|0,u=n[l>>2]|0,u>>>0<(n[G+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],_Z(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(m3e(_,k,T),o=n[l>>2]|0),I=M,((o-(n[_>>2]|0)|0)/12|0)+-1|0}function _Z(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function m3e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0,ae=0;if(_=I,I=I+48|0,A=_+32|0,B=_+24|0,k=_,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=y3e(o)|0,m>>>0>>0)sn(o);else{M=n[o>>2]|0,ae=((n[o+8>>2]|0)-M|0)/12|0,G=ae<<1,E3e(k,ae>>>0>>1>>>0?G>>>0>>0?d:G:m,((n[T>>2]|0)-M|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],_Z(m,A,u),n[T>>2]=(n[T>>2]|0)+12,I3e(o,k),C3e(k),I=_;return}}function y3e(o){return o=o|0,357913941}function E3e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function I3e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function C3e(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&yt(o)}function UZ(o){o=o|0,v3e(o)}function w3e(o){o=o|0,B3e(o+24|0)}function B3e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),yt(u))}function v3e(o){o=o|0;var l=0;l=en()|0,tn(o,2,1,l,S3e()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function S3e(){return 1300}function D3e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=+A;var d=0,m=0,B=0,k=0;d=I,I=I+16|0,m=d+8|0,B=d,k=b3e(o)|0,o=n[k+4>>2]|0,n[B>>2]=n[k>>2],n[B+4>>2]=o,n[m>>2]=n[B>>2],n[m+4>>2]=n[B+4>>2],P3e(l,m,u,A),I=d}function b3e(o){return o=o|0,(n[(jM()|0)+24>>2]|0)+(o*12|0)|0}function P3e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=+A;var d=0,m=0,B=0,k=0;k=I,I=I+16|0,m=k+1|0,B=k,d=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(d=n[(n[o>>2]|0)+d>>2]|0),np(m,u),m=ip(m,u)|0,Tf(B,A),A=+Rf(B,A),b$[d&15](o,m,A),I=k}function x3e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],k3e(o,u,d,0),I=A}function k3e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,_=0,M=0;d=I,I=I+32|0,m=d+16|0,M=d+8|0,k=d,_=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=qM()|0,n[M>>2]=_,n[M+4>>2]=T,n[m>>2]=n[M>>2],n[m+4>>2]=n[M+4>>2],u=Q3e(m)|0,n[k>>2]=_,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,T3e(m,A)|0,A),I=d}function qM(){var o=0,l=0;if(s[7776]|0||(jZ(9828),gr(41,9828,U|0)|0,l=7776,n[l>>2]=1,n[l+4>>2]=0),!(Ur(9828)|0)){o=9828,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));jZ(9828)}return 9828}function Q3e(o){return o=o|0,0}function T3e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0;return M=I,I=I+32|0,d=M+24|0,B=M+16|0,k=M,T=M+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,G=qM()|0,_=G+24|0,o=yr(l,4)|0,n[T>>2]=o,l=G+28|0,u=n[l>>2]|0,u>>>0<(n[G+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],HZ(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(R3e(_,k,T),o=n[l>>2]|0),I=M,((o-(n[_>>2]|0)|0)/12|0)+-1|0}function HZ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function R3e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0,ae=0;if(_=I,I=I+48|0,A=_+32|0,B=_+24|0,k=_,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=F3e(o)|0,m>>>0>>0)sn(o);else{M=n[o>>2]|0,ae=((n[o+8>>2]|0)-M|0)/12|0,G=ae<<1,N3e(k,ae>>>0>>1>>>0?G>>>0>>0?d:G:m,((n[T>>2]|0)-M|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],HZ(m,A,u),n[T>>2]=(n[T>>2]|0)+12,O3e(o,k),L3e(k),I=_;return}}function F3e(o){return o=o|0,357913941}function N3e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function O3e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function L3e(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&yt(o)}function jZ(o){o=o|0,U3e(o)}function M3e(o){o=o|0,_3e(o+24|0)}function _3e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),yt(u))}function U3e(o){o=o|0;var l=0;l=en()|0,tn(o,2,7,l,H3e()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function H3e(){return 1312}function j3e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;A=I,I=I+16|0,d=A+8|0,m=A,B=q3e(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],G3e(l,d,u),I=A}function q3e(o){return o=o|0,(n[(qM()|0)+24>>2]|0)+(o*12|0)|0}function G3e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;m=I,I=I+16|0,d=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),np(d,u),d=ip(d,u)|0,ap[A&31](o,d),I=m}function W3e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Y3e(o,u,d,0),I=A}function Y3e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,_=0,M=0;d=I,I=I+32|0,m=d+16|0,M=d+8|0,k=d,_=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=GM()|0,n[M>>2]=_,n[M+4>>2]=T,n[m>>2]=n[M>>2],n[m+4>>2]=n[M+4>>2],u=V3e(m)|0,n[k>>2]=_,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,K3e(m,A)|0,A),I=d}function GM(){var o=0,l=0;if(s[7784]|0||(GZ(9864),gr(42,9864,U|0)|0,l=7784,n[l>>2]=1,n[l+4>>2]=0),!(Ur(9864)|0)){o=9864,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));GZ(9864)}return 9864}function V3e(o){return o=o|0,0}function K3e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0;return M=I,I=I+32|0,d=M+24|0,B=M+16|0,k=M,T=M+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,G=GM()|0,_=G+24|0,o=yr(l,4)|0,n[T>>2]=o,l=G+28|0,u=n[l>>2]|0,u>>>0<(n[G+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],qZ(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(J3e(_,k,T),o=n[l>>2]|0),I=M,((o-(n[_>>2]|0)|0)/12|0)+-1|0}function qZ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function J3e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0,ae=0;if(_=I,I=I+48|0,A=_+32|0,B=_+24|0,k=_,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=z3e(o)|0,m>>>0>>0)sn(o);else{M=n[o>>2]|0,ae=((n[o+8>>2]|0)-M|0)/12|0,G=ae<<1,Z3e(k,ae>>>0>>1>>>0?G>>>0>>0?d:G:m,((n[T>>2]|0)-M|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],qZ(m,A,u),n[T>>2]=(n[T>>2]|0)+12,X3e(o,k),$3e(k),I=_;return}}function z3e(o){return o=o|0,357913941}function Z3e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function X3e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function $3e(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&yt(o)}function GZ(o){o=o|0,r8e(o)}function e8e(o){o=o|0,t8e(o+24|0)}function t8e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),yt(u))}function r8e(o){o=o|0;var l=0;l=en()|0,tn(o,2,8,l,n8e()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function n8e(){return 1320}function i8e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;A=I,I=I+16|0,d=A+8|0,m=A,B=s8e(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],o8e(l,d,u),I=A}function s8e(o){return o=o|0,(n[(GM()|0)+24>>2]|0)+(o*12|0)|0}function o8e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;m=I,I=I+16|0,d=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),a8e(d,u),d=l8e(d,u)|0,ap[A&31](o,d),I=m}function a8e(o,l){o=o|0,l=l|0}function l8e(o,l){return o=o|0,l=l|0,c8e(l)|0}function c8e(o){return o=o|0,o|0}function u8e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],f8e(o,u,d,0),I=A}function f8e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,_=0,M=0;d=I,I=I+32|0,m=d+16|0,M=d+8|0,k=d,_=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=WM()|0,n[M>>2]=_,n[M+4>>2]=T,n[m>>2]=n[M>>2],n[m+4>>2]=n[M+4>>2],u=A8e(m)|0,n[k>>2]=_,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,p8e(m,A)|0,A),I=d}function WM(){var o=0,l=0;if(s[7792]|0||(YZ(9900),gr(43,9900,U|0)|0,l=7792,n[l>>2]=1,n[l+4>>2]=0),!(Ur(9900)|0)){o=9900,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));YZ(9900)}return 9900}function A8e(o){return o=o|0,0}function p8e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0;return M=I,I=I+32|0,d=M+24|0,B=M+16|0,k=M,T=M+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,G=WM()|0,_=G+24|0,o=yr(l,4)|0,n[T>>2]=o,l=G+28|0,u=n[l>>2]|0,u>>>0<(n[G+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],WZ(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(h8e(_,k,T),o=n[l>>2]|0),I=M,((o-(n[_>>2]|0)|0)/12|0)+-1|0}function WZ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function h8e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0,ae=0;if(_=I,I=I+48|0,A=_+32|0,B=_+24|0,k=_,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=g8e(o)|0,m>>>0>>0)sn(o);else{M=n[o>>2]|0,ae=((n[o+8>>2]|0)-M|0)/12|0,G=ae<<1,d8e(k,ae>>>0>>1>>>0?G>>>0>>0?d:G:m,((n[T>>2]|0)-M|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],WZ(m,A,u),n[T>>2]=(n[T>>2]|0)+12,m8e(o,k),y8e(k),I=_;return}}function g8e(o){return o=o|0,357913941}function d8e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function m8e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function y8e(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&yt(o)}function YZ(o){o=o|0,C8e(o)}function E8e(o){o=o|0,I8e(o+24|0)}function I8e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),yt(u))}function C8e(o){o=o|0;var l=0;l=en()|0,tn(o,2,22,l,w8e()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function w8e(){return 1344}function B8e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0;u=I,I=I+16|0,A=u+8|0,d=u,m=v8e(o)|0,o=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=o,n[A>>2]=n[d>>2],n[A+4>>2]=n[d+4>>2],S8e(l,A),I=u}function v8e(o){return o=o|0,(n[(WM()|0)+24>>2]|0)+(o*12|0)|0}function S8e(o,l){o=o|0,l=l|0;var u=0;u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),op[u&127](o)}function D8e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=YM()|0,o=b8e(u)|0,vn(m,l,d,o,P8e(u,A)|0,A)}function YM(){var o=0,l=0;if(s[7800]|0||(KZ(9936),gr(44,9936,U|0)|0,l=7800,n[l>>2]=1,n[l+4>>2]=0),!(Ur(9936)|0)){o=9936,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));KZ(9936)}return 9936}function b8e(o){return o=o|0,o|0}function P8e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,T=YM()|0,B=T+24|0,l=yr(l,4)|0,n[m>>2]=l,u=T+28|0,A=n[u>>2]|0,A>>>0<(n[T+32>>2]|0)>>>0?(VZ(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(x8e(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function VZ(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function x8e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=k8e(o)|0,A>>>0>>0)sn(o);else{T=n[o>>2]|0,M=(n[o+8>>2]|0)-T|0,_=M>>2,Q8e(d,M>>3>>>0>>1>>>0?_>>>0>>0?B:_:A,(n[m>>2]|0)-T>>3,o+8|0),B=d+8|0,VZ(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,T8e(o,d),R8e(d),I=k;return}}function k8e(o){return o=o|0,536870911}function Q8e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Jt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function T8e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function R8e(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&yt(o)}function KZ(o){o=o|0,O8e(o)}function F8e(o){o=o|0,N8e(o+24|0)}function N8e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),yt(u))}function O8e(o){o=o|0;var l=0;l=en()|0,tn(o,1,23,l,wZ()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function L8e(o,l){o=o|0,l=l|0,_8e(n[(M8e(o)|0)>>2]|0,l)}function M8e(o){return o=o|0,(n[(YM()|0)+24>>2]|0)+(o<<3)|0}function _8e(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,TM(A,l),l=RM(A,l)|0,op[o&127](l),I=u}function U8e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=VM()|0,o=H8e(u)|0,vn(m,l,d,o,j8e(u,A)|0,A)}function VM(){var o=0,l=0;if(s[7808]|0||(zZ(9972),gr(45,9972,U|0)|0,l=7808,n[l>>2]=1,n[l+4>>2]=0),!(Ur(9972)|0)){o=9972,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));zZ(9972)}return 9972}function H8e(o){return o=o|0,o|0}function j8e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,T=VM()|0,B=T+24|0,l=yr(l,4)|0,n[m>>2]=l,u=T+28|0,A=n[u>>2]|0,A>>>0<(n[T+32>>2]|0)>>>0?(JZ(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(q8e(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function JZ(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function q8e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=G8e(o)|0,A>>>0>>0)sn(o);else{T=n[o>>2]|0,M=(n[o+8>>2]|0)-T|0,_=M>>2,W8e(d,M>>3>>>0>>1>>>0?_>>>0>>0?B:_:A,(n[m>>2]|0)-T>>3,o+8|0),B=d+8|0,JZ(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,Y8e(o,d),V8e(d),I=k;return}}function G8e(o){return o=o|0,536870911}function W8e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Jt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function Y8e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function V8e(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&yt(o)}function zZ(o){o=o|0,z8e(o)}function K8e(o){o=o|0,J8e(o+24|0)}function J8e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),yt(u))}function z8e(o){o=o|0;var l=0;l=en()|0,tn(o,1,9,l,Z8e()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function Z8e(){return 1348}function X8e(o,l){return o=o|0,l=l|0,eHe(n[($8e(o)|0)>>2]|0,l)|0}function $8e(o){return o=o|0,(n[(VM()|0)+24>>2]|0)+(o<<3)|0}function eHe(o,l){o=o|0,l=l|0;var u=0,A=0;return u=I,I=I+16|0,A=u,ZZ(A,l),l=XZ(A,l)|0,l=YP(dd[o&31](l)|0)|0,I=u,l|0}function ZZ(o,l){o=o|0,l=l|0}function XZ(o,l){return o=o|0,l=l|0,tHe(l)|0}function tHe(o){return o=o|0,o|0}function rHe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=KM()|0,o=nHe(u)|0,vn(m,l,d,o,iHe(u,A)|0,A)}function KM(){var o=0,l=0;if(s[7816]|0||(eX(10008),gr(46,10008,U|0)|0,l=7816,n[l>>2]=1,n[l+4>>2]=0),!(Ur(10008)|0)){o=10008,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));eX(10008)}return 10008}function nHe(o){return o=o|0,o|0}function iHe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,T=KM()|0,B=T+24|0,l=yr(l,4)|0,n[m>>2]=l,u=T+28|0,A=n[u>>2]|0,A>>>0<(n[T+32>>2]|0)>>>0?($Z(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(sHe(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function $Z(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function sHe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=oHe(o)|0,A>>>0>>0)sn(o);else{T=n[o>>2]|0,M=(n[o+8>>2]|0)-T|0,_=M>>2,aHe(d,M>>3>>>0>>1>>>0?_>>>0>>0?B:_:A,(n[m>>2]|0)-T>>3,o+8|0),B=d+8|0,$Z(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,lHe(o,d),cHe(d),I=k;return}}function oHe(o){return o=o|0,536870911}function aHe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Jt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function lHe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function cHe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&yt(o)}function eX(o){o=o|0,AHe(o)}function uHe(o){o=o|0,fHe(o+24|0)}function fHe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),yt(u))}function AHe(o){o=o|0;var l=0;l=en()|0,tn(o,1,15,l,dZ()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function pHe(o){return o=o|0,gHe(n[(hHe(o)|0)>>2]|0)|0}function hHe(o){return o=o|0,(n[(KM()|0)+24>>2]|0)+(o<<3)|0}function gHe(o){return o=o|0,YP(ax[o&7]()|0)|0}function dHe(){var o=0;return s[7832]|0||(vHe(10052),gr(25,10052,U|0)|0,o=7832,n[o>>2]=1,n[o+4>>2]=0),10052}function mHe(o,l){o=o|0,l=l|0,n[o>>2]=yHe()|0,n[o+4>>2]=EHe()|0,n[o+12>>2]=l,n[o+8>>2]=IHe()|0,n[o+32>>2]=2}function yHe(){return 11709}function EHe(){return 1188}function IHe(){return KP()|0}function CHe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(Gh(A,896)|0)==512?u|0&&(wHe(u),yt(u)):l|0&&(Oy(l),yt(l))}function Gh(o,l){return o=o|0,l=l|0,l&o|0}function wHe(o){o=o|0,o=n[o+4>>2]|0,o|0&&Yh(o)}function KP(){var o=0;return s[7824]|0||(n[2511]=BHe()|0,n[2512]=0,o=7824,n[o>>2]=1,n[o+4>>2]=0),10044}function BHe(){return 0}function vHe(o){o=o|0,Uh(o)}function SHe(o){o=o|0;var l=0,u=0,A=0,d=0,m=0;l=I,I=I+32|0,u=l+24|0,m=l+16|0,d=l+8|0,A=l,DHe(o,4827),bHe(o,4834,3)|0,PHe(o,3682,47)|0,n[m>>2]=9,n[m+4>>2]=0,n[u>>2]=n[m>>2],n[u+4>>2]=n[m+4>>2],xHe(o,4841,u)|0,n[d>>2]=1,n[d+4>>2]=0,n[u>>2]=n[d>>2],n[u+4>>2]=n[d+4>>2],kHe(o,4871,u)|0,n[A>>2]=10,n[A+4>>2]=0,n[u>>2]=n[A>>2],n[u+4>>2]=n[A+4>>2],QHe(o,4891,u)|0,I=l}function DHe(o,l){o=o|0,l=l|0;var u=0;u=c6e()|0,n[o>>2]=u,u6e(u,l),Wh(n[o>>2]|0)}function bHe(o,l,u){return o=o|0,l=l|0,u=u|0,Vje(o,Bn(l)|0,u,0),o|0}function PHe(o,l,u){return o=o|0,l=l|0,u=u|0,Tje(o,Bn(l)|0,u,0),o|0}function xHe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],pje(o,l,d),I=A,o|0}function kHe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],KHe(o,l,d),I=A,o|0}function QHe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],THe(o,l,d),I=A,o|0}function THe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],RHe(o,u,d,1),I=A}function RHe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,_=0,M=0;d=I,I=I+32|0,m=d+16|0,M=d+8|0,k=d,_=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=JM()|0,n[M>>2]=_,n[M+4>>2]=T,n[m>>2]=n[M>>2],n[m+4>>2]=n[M+4>>2],u=FHe(m)|0,n[k>>2]=_,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,NHe(m,A)|0,A),I=d}function JM(){var o=0,l=0;if(s[7840]|0||(rX(10100),gr(48,10100,U|0)|0,l=7840,n[l>>2]=1,n[l+4>>2]=0),!(Ur(10100)|0)){o=10100,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));rX(10100)}return 10100}function FHe(o){return o=o|0,0}function NHe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0;return M=I,I=I+32|0,d=M+24|0,B=M+16|0,k=M,T=M+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,G=JM()|0,_=G+24|0,o=yr(l,4)|0,n[T>>2]=o,l=G+28|0,u=n[l>>2]|0,u>>>0<(n[G+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],tX(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(OHe(_,k,T),o=n[l>>2]|0),I=M,((o-(n[_>>2]|0)|0)/12|0)+-1|0}function tX(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function OHe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0,ae=0;if(_=I,I=I+48|0,A=_+32|0,B=_+24|0,k=_,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=LHe(o)|0,m>>>0>>0)sn(o);else{M=n[o>>2]|0,ae=((n[o+8>>2]|0)-M|0)/12|0,G=ae<<1,MHe(k,ae>>>0>>1>>>0?G>>>0>>0?d:G:m,((n[T>>2]|0)-M|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],tX(m,A,u),n[T>>2]=(n[T>>2]|0)+12,_He(o,k),UHe(k),I=_;return}}function LHe(o){return o=o|0,357913941}function MHe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function _He(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function UHe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&yt(o)}function rX(o){o=o|0,qHe(o)}function HHe(o){o=o|0,jHe(o+24|0)}function jHe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),yt(u))}function qHe(o){o=o|0;var l=0;l=en()|0,tn(o,2,6,l,GHe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function GHe(){return 1364}function WHe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=YHe(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],u=VHe(l,d,u)|0,I=A,u|0}function YHe(o){return o=o|0,(n[(JM()|0)+24>>2]|0)+(o*12|0)|0}function VHe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;return m=I,I=I+16|0,d=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),np(d,u),d=ip(d,u)|0,d=cZ(v_[A&15](o,d)|0)|0,I=m,d|0}function KHe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],JHe(o,u,d,0),I=A}function JHe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,_=0,M=0;d=I,I=I+32|0,m=d+16|0,M=d+8|0,k=d,_=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=zM()|0,n[M>>2]=_,n[M+4>>2]=T,n[m>>2]=n[M>>2],n[m+4>>2]=n[M+4>>2],u=zHe(m)|0,n[k>>2]=_,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,ZHe(m,A)|0,A),I=d}function zM(){var o=0,l=0;if(s[7848]|0||(iX(10136),gr(49,10136,U|0)|0,l=7848,n[l>>2]=1,n[l+4>>2]=0),!(Ur(10136)|0)){o=10136,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));iX(10136)}return 10136}function zHe(o){return o=o|0,0}function ZHe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0;return M=I,I=I+32|0,d=M+24|0,B=M+16|0,k=M,T=M+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,G=zM()|0,_=G+24|0,o=yr(l,4)|0,n[T>>2]=o,l=G+28|0,u=n[l>>2]|0,u>>>0<(n[G+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],nX(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(XHe(_,k,T),o=n[l>>2]|0),I=M,((o-(n[_>>2]|0)|0)/12|0)+-1|0}function nX(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function XHe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0,ae=0;if(_=I,I=I+48|0,A=_+32|0,B=_+24|0,k=_,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=$He(o)|0,m>>>0>>0)sn(o);else{M=n[o>>2]|0,ae=((n[o+8>>2]|0)-M|0)/12|0,G=ae<<1,eje(k,ae>>>0>>1>>>0?G>>>0>>0?d:G:m,((n[T>>2]|0)-M|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],nX(m,A,u),n[T>>2]=(n[T>>2]|0)+12,tje(o,k),rje(k),I=_;return}}function $He(o){return o=o|0,357913941}function eje(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function tje(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function rje(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&yt(o)}function iX(o){o=o|0,sje(o)}function nje(o){o=o|0,ije(o+24|0)}function ije(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),yt(u))}function sje(o){o=o|0;var l=0;l=en()|0,tn(o,2,9,l,oje()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function oje(){return 1372}function aje(o,l,u){o=o|0,l=l|0,u=+u;var A=0,d=0,m=0,B=0;A=I,I=I+16|0,d=A+8|0,m=A,B=lje(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],cje(l,d,u),I=A}function lje(o){return o=o|0,(n[(zM()|0)+24>>2]|0)+(o*12|0)|0}function cje(o,l,u){o=o|0,l=l|0,u=+u;var A=0,d=0,m=0,B=Xe;m=I,I=I+16|0,d=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),uje(d,u),B=y(fje(d,u)),y$[A&1](o,B),I=m}function uje(o,l){o=o|0,l=+l}function fje(o,l){return o=o|0,l=+l,y(Aje(l))}function Aje(o){return o=+o,y(o)}function pje(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],hje(o,u,d,0),I=A}function hje(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,_=0,M=0;d=I,I=I+32|0,m=d+16|0,M=d+8|0,k=d,_=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=ZM()|0,n[M>>2]=_,n[M+4>>2]=T,n[m>>2]=n[M>>2],n[m+4>>2]=n[M+4>>2],u=gje(m)|0,n[k>>2]=_,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,dje(m,A)|0,A),I=d}function ZM(){var o=0,l=0;if(s[7856]|0||(oX(10172),gr(50,10172,U|0)|0,l=7856,n[l>>2]=1,n[l+4>>2]=0),!(Ur(10172)|0)){o=10172,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));oX(10172)}return 10172}function gje(o){return o=o|0,0}function dje(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0;return M=I,I=I+32|0,d=M+24|0,B=M+16|0,k=M,T=M+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,G=ZM()|0,_=G+24|0,o=yr(l,4)|0,n[T>>2]=o,l=G+28|0,u=n[l>>2]|0,u>>>0<(n[G+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],sX(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(mje(_,k,T),o=n[l>>2]|0),I=M,((o-(n[_>>2]|0)|0)/12|0)+-1|0}function sX(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function mje(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0,ae=0;if(_=I,I=I+48|0,A=_+32|0,B=_+24|0,k=_,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=yje(o)|0,m>>>0>>0)sn(o);else{M=n[o>>2]|0,ae=((n[o+8>>2]|0)-M|0)/12|0,G=ae<<1,Eje(k,ae>>>0>>1>>>0?G>>>0>>0?d:G:m,((n[T>>2]|0)-M|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],sX(m,A,u),n[T>>2]=(n[T>>2]|0)+12,Ije(o,k),Cje(k),I=_;return}}function yje(o){return o=o|0,357913941}function Eje(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function Ije(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function Cje(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&yt(o)}function oX(o){o=o|0,vje(o)}function wje(o){o=o|0,Bje(o+24|0)}function Bje(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),yt(u))}function vje(o){o=o|0;var l=0;l=en()|0,tn(o,2,3,l,Sje()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function Sje(){return 1380}function Dje(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0;d=I,I=I+16|0,m=d+8|0,B=d,k=bje(o)|0,o=n[k+4>>2]|0,n[B>>2]=n[k>>2],n[B+4>>2]=o,n[m>>2]=n[B>>2],n[m+4>>2]=n[B+4>>2],Pje(l,m,u,A),I=d}function bje(o){return o=o|0,(n[(ZM()|0)+24>>2]|0)+(o*12|0)|0}function Pje(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0;k=I,I=I+16|0,m=k+1|0,B=k,d=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(d=n[(n[o>>2]|0)+d>>2]|0),np(m,u),m=ip(m,u)|0,xje(B,A),B=kje(B,A)|0,L2[d&15](o,m,B),I=k}function xje(o,l){o=o|0,l=l|0}function kje(o,l){return o=o|0,l=l|0,Qje(l)|0}function Qje(o){return o=o|0,(o|0)!=0|0}function Tje(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=XM()|0,o=Rje(u)|0,vn(m,l,d,o,Fje(u,A)|0,A)}function XM(){var o=0,l=0;if(s[7864]|0||(lX(10208),gr(51,10208,U|0)|0,l=7864,n[l>>2]=1,n[l+4>>2]=0),!(Ur(10208)|0)){o=10208,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));lX(10208)}return 10208}function Rje(o){return o=o|0,o|0}function Fje(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,T=XM()|0,B=T+24|0,l=yr(l,4)|0,n[m>>2]=l,u=T+28|0,A=n[u>>2]|0,A>>>0<(n[T+32>>2]|0)>>>0?(aX(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(Nje(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function aX(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function Nje(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=Oje(o)|0,A>>>0>>0)sn(o);else{T=n[o>>2]|0,M=(n[o+8>>2]|0)-T|0,_=M>>2,Lje(d,M>>3>>>0>>1>>>0?_>>>0>>0?B:_:A,(n[m>>2]|0)-T>>3,o+8|0),B=d+8|0,aX(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,Mje(o,d),_je(d),I=k;return}}function Oje(o){return o=o|0,536870911}function Lje(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Jt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function Mje(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function _je(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&yt(o)}function lX(o){o=o|0,jje(o)}function Uje(o){o=o|0,Hje(o+24|0)}function Hje(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),yt(u))}function jje(o){o=o|0;var l=0;l=en()|0,tn(o,1,24,l,qje()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function qje(){return 1392}function Gje(o,l){o=o|0,l=l|0,Yje(n[(Wje(o)|0)>>2]|0,l)}function Wje(o){return o=o|0,(n[(XM()|0)+24>>2]|0)+(o<<3)|0}function Yje(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,ZZ(A,l),l=XZ(A,l)|0,op[o&127](l),I=u}function Vje(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=$M()|0,o=Kje(u)|0,vn(m,l,d,o,Jje(u,A)|0,A)}function $M(){var o=0,l=0;if(s[7872]|0||(uX(10244),gr(52,10244,U|0)|0,l=7872,n[l>>2]=1,n[l+4>>2]=0),!(Ur(10244)|0)){o=10244,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));uX(10244)}return 10244}function Kje(o){return o=o|0,o|0}function Jje(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,T=$M()|0,B=T+24|0,l=yr(l,4)|0,n[m>>2]=l,u=T+28|0,A=n[u>>2]|0,A>>>0<(n[T+32>>2]|0)>>>0?(cX(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(zje(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function cX(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function zje(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=Zje(o)|0,A>>>0>>0)sn(o);else{T=n[o>>2]|0,M=(n[o+8>>2]|0)-T|0,_=M>>2,Xje(d,M>>3>>>0>>1>>>0?_>>>0>>0?B:_:A,(n[m>>2]|0)-T>>3,o+8|0),B=d+8|0,cX(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,$je(o,d),e6e(d),I=k;return}}function Zje(o){return o=o|0,536870911}function Xje(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Jt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function $je(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function e6e(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&yt(o)}function uX(o){o=o|0,n6e(o)}function t6e(o){o=o|0,r6e(o+24|0)}function r6e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),yt(u))}function n6e(o){o=o|0;var l=0;l=en()|0,tn(o,1,16,l,i6e()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function i6e(){return 1400}function s6e(o){return o=o|0,a6e(n[(o6e(o)|0)>>2]|0)|0}function o6e(o){return o=o|0,(n[($M()|0)+24>>2]|0)+(o<<3)|0}function a6e(o){return o=o|0,l6e(ax[o&7]()|0)|0}function l6e(o){return o=o|0,o|0}function c6e(){var o=0;return s[7880]|0||(d6e(10280),gr(25,10280,U|0)|0,o=7880,n[o>>2]=1,n[o+4>>2]=0),10280}function u6e(o,l){o=o|0,l=l|0,n[o>>2]=f6e()|0,n[o+4>>2]=A6e()|0,n[o+12>>2]=l,n[o+8>>2]=p6e()|0,n[o+32>>2]=4}function f6e(){return 11711}function A6e(){return 1356}function p6e(){return KP()|0}function h6e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(Gh(A,896)|0)==512?u|0&&(g6e(u),yt(u)):l|0&&(zg(l),yt(l))}function g6e(o){o=o|0,o=n[o+4>>2]|0,o|0&&Yh(o)}function d6e(o){o=o|0,Uh(o)}function m6e(o){o=o|0,y6e(o,4920),E6e(o)|0,I6e(o)|0}function y6e(o,l){o=o|0,l=l|0;var u=0;u=TZ()|0,n[o>>2]=u,H6e(u,l),Wh(n[o>>2]|0)}function E6e(o){o=o|0;var l=0;return l=n[o>>2]|0,ud(l,Q6e()|0),o|0}function I6e(o){o=o|0;var l=0;return l=n[o>>2]|0,ud(l,C6e()|0),o|0}function C6e(){var o=0;return s[7888]|0||(fX(10328),gr(53,10328,U|0)|0,o=7888,n[o>>2]=1,n[o+4>>2]=0),Ur(10328)|0||fX(10328),10328}function ud(o,l){o=o|0,l=l|0,vn(o,0,l,0,0,0)}function fX(o){o=o|0,v6e(o),fd(o,10)}function w6e(o){o=o|0,B6e(o+24|0)}function B6e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),yt(u))}function v6e(o){o=o|0;var l=0;l=en()|0,tn(o,5,1,l,P6e()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function S6e(o,l,u){o=o|0,l=l|0,u=+u,D6e(o,l,u)}function fd(o,l){o=o|0,l=l|0,n[o+20>>2]=l}function D6e(o,l,u){o=o|0,l=l|0,u=+u;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,m=A+8|0,k=A+13|0,d=A,B=A+12|0,np(k,l),n[m>>2]=ip(k,l)|0,Tf(B,u),E[d>>3]=+Rf(B,u),b6e(o,m,d),I=A}function b6e(o,l,u){o=o|0,l=l|0,u=u|0,Rl(o+8|0,n[l>>2]|0,+E[u>>3]),s[o+24>>0]=1}function P6e(){return 1404}function x6e(o,l){return o=o|0,l=+l,k6e(o,l)|0}function k6e(o,l){o=o|0,l=+l;var u=0,A=0,d=0,m=0,B=0,k=0,T=0;return A=I,I=I+16|0,m=A+4|0,B=A+8|0,k=A,d=Fl(8)|0,u=d,T=Jt(16)|0,np(m,o),o=ip(m,o)|0,Tf(B,l),Rl(T,o,+Rf(B,l)),B=u+4|0,n[B>>2]=T,o=Jt(8)|0,B=n[B>>2]|0,n[k>>2]=0,n[m>>2]=n[k>>2],MM(o,B,m),n[d>>2]=o,I=A,u|0}function Q6e(){var o=0;return s[7896]|0||(AX(10364),gr(54,10364,U|0)|0,o=7896,n[o>>2]=1,n[o+4>>2]=0),Ur(10364)|0||AX(10364),10364}function AX(o){o=o|0,F6e(o),fd(o,55)}function T6e(o){o=o|0,R6e(o+24|0)}function R6e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),yt(u))}function F6e(o){o=o|0;var l=0;l=en()|0,tn(o,5,4,l,M6e()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function N6e(o){o=o|0,O6e(o)}function O6e(o){o=o|0,L6e(o)}function L6e(o){o=o|0,pX(o+8|0),s[o+24>>0]=1}function pX(o){o=o|0,n[o>>2]=0,E[o+8>>3]=0}function M6e(){return 1424}function _6e(){return U6e()|0}function U6e(){var o=0,l=0,u=0,A=0,d=0,m=0,B=0;return l=I,I=I+16|0,d=l+4|0,B=l,u=Fl(8)|0,o=u,A=Jt(16)|0,pX(A),m=o+4|0,n[m>>2]=A,A=Jt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],MM(A,m,d),n[u>>2]=A,I=l,o|0}function H6e(o,l){o=o|0,l=l|0,n[o>>2]=j6e()|0,n[o+4>>2]=q6e()|0,n[o+12>>2]=l,n[o+8>>2]=G6e()|0,n[o+32>>2]=5}function j6e(){return 11710}function q6e(){return 1416}function G6e(){return JP()|0}function W6e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(Gh(A,896)|0)==512?u|0&&(Y6e(u),yt(u)):l|0&&yt(l)}function Y6e(o){o=o|0,o=n[o+4>>2]|0,o|0&&Yh(o)}function JP(){var o=0;return s[7904]|0||(n[2600]=V6e()|0,n[2601]=0,o=7904,n[o>>2]=1,n[o+4>>2]=0),10400}function V6e(){return n[357]|0}function K6e(o){o=o|0,J6e(o,4926),z6e(o)|0}function J6e(o,l){o=o|0,l=l|0;var u=0;u=tZ()|0,n[o>>2]=u,aqe(u,l),Wh(n[o>>2]|0)}function z6e(o){o=o|0;var l=0;return l=n[o>>2]|0,ud(l,Z6e()|0),o|0}function Z6e(){var o=0;return s[7912]|0||(hX(10412),gr(56,10412,U|0)|0,o=7912,n[o>>2]=1,n[o+4>>2]=0),Ur(10412)|0||hX(10412),10412}function hX(o){o=o|0,eqe(o),fd(o,57)}function X6e(o){o=o|0,$6e(o+24|0)}function $6e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),yt(u))}function eqe(o){o=o|0;var l=0;l=en()|0,tn(o,5,5,l,iqe()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function tqe(o){o=o|0,rqe(o)}function rqe(o){o=o|0,nqe(o)}function nqe(o){o=o|0;var l=0,u=0;l=o+8|0,u=l+48|0;do n[l>>2]=0,l=l+4|0;while((l|0)<(u|0));s[o+56>>0]=1}function iqe(){return 1432}function sqe(){return oqe()|0}function oqe(){var o=0,l=0,u=0,A=0,d=0,m=0,B=0,k=0;B=I,I=I+16|0,o=B+4|0,l=B,u=Fl(8)|0,A=u,d=Jt(48)|0,m=d,k=m+48|0;do n[m>>2]=0,m=m+4|0;while((m|0)<(k|0));return m=A+4|0,n[m>>2]=d,k=Jt(8)|0,m=n[m>>2]|0,n[l>>2]=0,n[o>>2]=n[l>>2],rZ(k,m,o),n[u>>2]=k,I=B,A|0}function aqe(o,l){o=o|0,l=l|0,n[o>>2]=lqe()|0,n[o+4>>2]=cqe()|0,n[o+12>>2]=l,n[o+8>>2]=uqe()|0,n[o+32>>2]=6}function lqe(){return 11704}function cqe(){return 1436}function uqe(){return JP()|0}function fqe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(Gh(A,896)|0)==512?u|0&&(Aqe(u),yt(u)):l|0&&yt(l)}function Aqe(o){o=o|0,o=n[o+4>>2]|0,o|0&&Yh(o)}function pqe(o){o=o|0,hqe(o,4933),gqe(o)|0,dqe(o)|0}function hqe(o,l){o=o|0,l=l|0;var u=0;u=Uqe()|0,n[o>>2]=u,Hqe(u,l),Wh(n[o>>2]|0)}function gqe(o){o=o|0;var l=0;return l=n[o>>2]|0,ud(l,kqe()|0),o|0}function dqe(o){o=o|0;var l=0;return l=n[o>>2]|0,ud(l,mqe()|0),o|0}function mqe(){var o=0;return s[7920]|0||(gX(10452),gr(58,10452,U|0)|0,o=7920,n[o>>2]=1,n[o+4>>2]=0),Ur(10452)|0||gX(10452),10452}function gX(o){o=o|0,Iqe(o),fd(o,1)}function yqe(o){o=o|0,Eqe(o+24|0)}function Eqe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),yt(u))}function Iqe(o){o=o|0;var l=0;l=en()|0,tn(o,5,1,l,vqe()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function Cqe(o,l,u){o=o|0,l=+l,u=+u,wqe(o,l,u)}function wqe(o,l,u){o=o|0,l=+l,u=+u;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+32|0,m=A+8|0,k=A+17|0,d=A,B=A+16|0,Tf(k,l),E[m>>3]=+Rf(k,l),Tf(B,u),E[d>>3]=+Rf(B,u),Bqe(o,m,d),I=A}function Bqe(o,l,u){o=o|0,l=l|0,u=u|0,dX(o+8|0,+E[l>>3],+E[u>>3]),s[o+24>>0]=1}function dX(o,l,u){o=o|0,l=+l,u=+u,E[o>>3]=l,E[o+8>>3]=u}function vqe(){return 1472}function Sqe(o,l){return o=+o,l=+l,Dqe(o,l)|0}function Dqe(o,l){o=+o,l=+l;var u=0,A=0,d=0,m=0,B=0,k=0,T=0;return A=I,I=I+16|0,B=A+4|0,k=A+8|0,T=A,d=Fl(8)|0,u=d,m=Jt(16)|0,Tf(B,o),o=+Rf(B,o),Tf(k,l),dX(m,o,+Rf(k,l)),k=u+4|0,n[k>>2]=m,m=Jt(8)|0,k=n[k>>2]|0,n[T>>2]=0,n[B>>2]=n[T>>2],mX(m,k,B),n[d>>2]=m,I=A,u|0}function mX(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,u=Jt(16)|0,n[u+4>>2]=0,n[u+8>>2]=0,n[u>>2]=1452,n[u+12>>2]=l,n[o+4>>2]=u}function bqe(o){o=o|0,$y(o),yt(o)}function Pqe(o){o=o|0,o=n[o+12>>2]|0,o|0&&yt(o)}function xqe(o){o=o|0,yt(o)}function kqe(){var o=0;return s[7928]|0||(yX(10488),gr(59,10488,U|0)|0,o=7928,n[o>>2]=1,n[o+4>>2]=0),Ur(10488)|0||yX(10488),10488}function yX(o){o=o|0,Rqe(o),fd(o,60)}function Qqe(o){o=o|0,Tqe(o+24|0)}function Tqe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),yt(u))}function Rqe(o){o=o|0;var l=0;l=en()|0,tn(o,5,6,l,Lqe()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function Fqe(o){o=o|0,Nqe(o)}function Nqe(o){o=o|0,Oqe(o)}function Oqe(o){o=o|0,EX(o+8|0),s[o+24>>0]=1}function EX(o){o=o|0,n[o>>2]=0,n[o+4>>2]=0,n[o+8>>2]=0,n[o+12>>2]=0}function Lqe(){return 1492}function Mqe(){return _qe()|0}function _qe(){var o=0,l=0,u=0,A=0,d=0,m=0,B=0;return l=I,I=I+16|0,d=l+4|0,B=l,u=Fl(8)|0,o=u,A=Jt(16)|0,EX(A),m=o+4|0,n[m>>2]=A,A=Jt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],mX(A,m,d),n[u>>2]=A,I=l,o|0}function Uqe(){var o=0;return s[7936]|0||(Vqe(10524),gr(25,10524,U|0)|0,o=7936,n[o>>2]=1,n[o+4>>2]=0),10524}function Hqe(o,l){o=o|0,l=l|0,n[o>>2]=jqe()|0,n[o+4>>2]=qqe()|0,n[o+12>>2]=l,n[o+8>>2]=Gqe()|0,n[o+32>>2]=7}function jqe(){return 11700}function qqe(){return 1484}function Gqe(){return JP()|0}function Wqe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(Gh(A,896)|0)==512?u|0&&(Yqe(u),yt(u)):l|0&&yt(l)}function Yqe(o){o=o|0,o=n[o+4>>2]|0,o|0&&Yh(o)}function Vqe(o){o=o|0,Uh(o)}function Kqe(o,l,u){o=o|0,l=l|0,u=u|0,o=Bn(l)|0,l=Jqe(u)|0,u=zqe(u,0)|0,DGe(o,l,u,e_()|0,0)}function Jqe(o){return o=o|0,o|0}function zqe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,T=e_()|0,B=T+24|0,l=yr(l,4)|0,n[m>>2]=l,u=T+28|0,A=n[u>>2]|0,A>>>0<(n[T+32>>2]|0)>>>0?(CX(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(nGe(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function e_(){var o=0,l=0;if(s[7944]|0||(IX(10568),gr(61,10568,U|0)|0,l=7944,n[l>>2]=1,n[l+4>>2]=0),!(Ur(10568)|0)){o=10568,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));IX(10568)}return 10568}function IX(o){o=o|0,$qe(o)}function Zqe(o){o=o|0,Xqe(o+24|0)}function Xqe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),yt(u))}function $qe(o){o=o|0;var l=0;l=en()|0,tn(o,1,17,l,EZ()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function eGe(o){return o=o|0,rGe(n[(tGe(o)|0)>>2]|0)|0}function tGe(o){return o=o|0,(n[(e_()|0)+24>>2]|0)+(o<<3)|0}function rGe(o){return o=o|0,VP(ax[o&7]()|0)|0}function CX(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function nGe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=iGe(o)|0,A>>>0>>0)sn(o);else{T=n[o>>2]|0,M=(n[o+8>>2]|0)-T|0,_=M>>2,sGe(d,M>>3>>>0>>1>>>0?_>>>0>>0?B:_:A,(n[m>>2]|0)-T>>3,o+8|0),B=d+8|0,CX(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,oGe(o,d),aGe(d),I=k;return}}function iGe(o){return o=o|0,536870911}function sGe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Jt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function oGe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function aGe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&yt(o)}function lGe(){cGe()}function cGe(){uGe(10604)}function uGe(o){o=o|0,fGe(o,4955)}function fGe(o,l){o=o|0,l=l|0;var u=0;u=AGe()|0,n[o>>2]=u,pGe(u,l),Wh(n[o>>2]|0)}function AGe(){var o=0;return s[7952]|0||(wGe(10612),gr(25,10612,U|0)|0,o=7952,n[o>>2]=1,n[o+4>>2]=0),10612}function pGe(o,l){o=o|0,l=l|0,n[o>>2]=mGe()|0,n[o+4>>2]=yGe()|0,n[o+12>>2]=l,n[o+8>>2]=EGe()|0,n[o+32>>2]=8}function Wh(o){o=o|0;var l=0,u=0;l=I,I=I+16|0,u=l,Ky()|0,n[u>>2]=o,hGe(10608,u),I=l}function Ky(){return s[11714]|0||(n[2652]=0,gr(62,10608,U|0)|0,s[11714]=1),10608}function hGe(o,l){o=o|0,l=l|0;var u=0;u=Jt(8)|0,n[u+4>>2]=n[l>>2],n[u>>2]=n[o>>2],n[o>>2]=u}function gGe(o){o=o|0,dGe(o)}function dGe(o){o=o|0;var l=0,u=0;if(l=n[o>>2]|0,l|0)do u=l,l=n[l>>2]|0,yt(u);while(l|0);n[o>>2]=0}function mGe(){return 11715}function yGe(){return 1496}function EGe(){return KP()|0}function IGe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(Gh(A,896)|0)==512?u|0&&(CGe(u),yt(u)):l|0&&yt(l)}function CGe(o){o=o|0,o=n[o+4>>2]|0,o|0&&Yh(o)}function wGe(o){o=o|0,Uh(o)}function BGe(o,l){o=o|0,l=l|0;var u=0,A=0;Ky()|0,u=n[2652]|0;e:do if(u|0){for(;A=n[u+4>>2]|0,!(A|0&&!(r$(t_(A)|0,o)|0));)if(u=n[u>>2]|0,!u)break e;vGe(A,l)}while(!1)}function t_(o){return o=o|0,n[o+12>>2]|0}function vGe(o,l){o=o|0,l=l|0;var u=0;o=o+36|0,u=n[o>>2]|0,u|0&&(Df(u),yt(u)),u=Jt(4)|0,UP(u,l),n[o>>2]=u}function r_(){return s[11716]|0||(n[2664]=0,gr(63,10656,U|0)|0,s[11716]=1),10656}function wX(){var o=0;return s[11717]|0?o=n[2665]|0:(SGe(),n[2665]=1504,s[11717]=1,o=1504),o|0}function SGe(){s[11740]|0||(s[11718]=yr(yr(8,0)|0,0)|0,s[11719]=yr(yr(0,0)|0,0)|0,s[11720]=yr(yr(0,16)|0,0)|0,s[11721]=yr(yr(8,0)|0,0)|0,s[11722]=yr(yr(0,0)|0,0)|0,s[11723]=yr(yr(8,0)|0,0)|0,s[11724]=yr(yr(0,0)|0,0)|0,s[11725]=yr(yr(8,0)|0,0)|0,s[11726]=yr(yr(0,0)|0,0)|0,s[11727]=yr(yr(8,0)|0,0)|0,s[11728]=yr(yr(0,0)|0,0)|0,s[11729]=yr(yr(0,0)|0,32)|0,s[11730]=yr(yr(0,0)|0,32)|0,s[11740]=1)}function BX(){return 1572}function DGe(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0;var m=0,B=0,k=0,T=0,_=0,M=0;m=I,I=I+32|0,M=m+16|0,_=m+12|0,T=m+8|0,k=m+4|0,B=m,n[M>>2]=o,n[_>>2]=l,n[T>>2]=u,n[k>>2]=A,n[B>>2]=d,r_()|0,bGe(10656,M,_,T,k,B),I=m}function bGe(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0;var B=0;B=Jt(24)|0,Xz(B+4|0,n[l>>2]|0,n[u>>2]|0,n[A>>2]|0,n[d>>2]|0,n[m>>2]|0),n[B>>2]=n[o>>2],n[o>>2]=B}function vX(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0,ae=0,We=0,Le=0,Qe=0,tt=0,Ze=0,ct=0;if(ct=I,I=I+32|0,Le=ct+20|0,Qe=ct+8|0,tt=ct+4|0,Ze=ct,l=n[l>>2]|0,l|0){We=Le+4|0,T=Le+8|0,_=Qe+4|0,M=Qe+8|0,G=Qe+8|0,ae=Le+8|0;do{if(B=l+4|0,k=n_(B)|0,k|0){if(d=Q2(k)|0,n[Le>>2]=0,n[We>>2]=0,n[T>>2]=0,A=(T2(k)|0)+1|0,PGe(Le,A),A|0)for(;A=A+-1|0,xu(Qe,n[d>>2]|0),m=n[We>>2]|0,m>>>0<(n[ae>>2]|0)>>>0?(n[m>>2]=n[Qe>>2],n[We>>2]=(n[We>>2]|0)+4):i_(Le,Qe),A;)d=d+4|0;A=R2(k)|0,n[Qe>>2]=0,n[_>>2]=0,n[M>>2]=0;e:do if(n[A>>2]|0)for(d=0,m=0;;){if((d|0)==(m|0)?xGe(Qe,A):(n[d>>2]=n[A>>2],n[_>>2]=(n[_>>2]|0)+4),A=A+4|0,!(n[A>>2]|0))break e;d=n[_>>2]|0,m=n[G>>2]|0}while(!1);n[tt>>2]=zP(B)|0,n[Ze>>2]=Ur(k)|0,kGe(u,o,tt,Ze,Le,Qe),s_(Qe),sp(Le)}l=n[l>>2]|0}while(l|0)}I=ct}function n_(o){return o=o|0,n[o+12>>2]|0}function Q2(o){return o=o|0,n[o+12>>2]|0}function T2(o){return o=o|0,n[o+16>>2]|0}function PGe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0;d=I,I=I+32|0,u=d,A=n[o>>2]|0,(n[o+8>>2]|0)-A>>2>>>0>>0&&(TX(u,l,(n[o+4>>2]|0)-A>>2,o+8|0),RX(o,u),FX(u)),I=d}function i_(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,_=0;if(B=I,I=I+32|0,u=B,A=o+4|0,d=((n[A>>2]|0)-(n[o>>2]|0)>>2)+1|0,m=QX(o)|0,m>>>0>>0)sn(o);else{k=n[o>>2]|0,_=(n[o+8>>2]|0)-k|0,T=_>>1,TX(u,_>>2>>>0>>1>>>0?T>>>0>>0?d:T:m,(n[A>>2]|0)-k>>2,o+8|0),m=u+8|0,n[n[m>>2]>>2]=n[l>>2],n[m>>2]=(n[m>>2]|0)+4,RX(o,u),FX(u),I=B;return}}function R2(o){return o=o|0,n[o+8>>2]|0}function xGe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,_=0;if(B=I,I=I+32|0,u=B,A=o+4|0,d=((n[A>>2]|0)-(n[o>>2]|0)>>2)+1|0,m=kX(o)|0,m>>>0>>0)sn(o);else{k=n[o>>2]|0,_=(n[o+8>>2]|0)-k|0,T=_>>1,JGe(u,_>>2>>>0>>1>>>0?T>>>0>>0?d:T:m,(n[A>>2]|0)-k>>2,o+8|0),m=u+8|0,n[n[m>>2]>>2]=n[l>>2],n[m>>2]=(n[m>>2]|0)+4,zGe(o,u),ZGe(u),I=B;return}}function zP(o){return o=o|0,n[o>>2]|0}function kGe(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,QGe(o,l,u,A,d,m)}function s_(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-4-A|0)>>>2)<<2)),yt(u))}function sp(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-4-A|0)>>>2)<<2)),yt(u))}function QGe(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0;var B=0,k=0,T=0,_=0,M=0,G=0;B=I,I=I+48|0,M=B+40|0,k=B+32|0,G=B+24|0,T=B+12|0,_=B,Nl(k),o=Ls(o)|0,n[G>>2]=n[l>>2],u=n[u>>2]|0,A=n[A>>2]|0,o_(T,d),TGe(_,m),n[M>>2]=n[G>>2],RGe(o,M,u,A,T,_),s_(_),sp(T),Ol(k),I=B}function o_(o,l){o=o|0,l=l|0;var u=0,A=0;n[o>>2]=0,n[o+4>>2]=0,n[o+8>>2]=0,u=l+4|0,A=(n[u>>2]|0)-(n[l>>2]|0)>>2,A|0&&(VGe(o,A),KGe(o,n[l>>2]|0,n[u>>2]|0,A))}function TGe(o,l){o=o|0,l=l|0;var u=0,A=0;n[o>>2]=0,n[o+4>>2]=0,n[o+8>>2]=0,u=l+4|0,A=(n[u>>2]|0)-(n[l>>2]|0)>>2,A|0&&(WGe(o,A),YGe(o,n[l>>2]|0,n[u>>2]|0,A))}function RGe(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0;var B=0,k=0,T=0,_=0,M=0,G=0;B=I,I=I+32|0,M=B+28|0,G=B+24|0,k=B+12|0,T=B,_=ma(FGe()|0)|0,n[G>>2]=n[l>>2],n[M>>2]=n[G>>2],l=Ad(M)|0,u=SX(u)|0,A=a_(A)|0,n[k>>2]=n[d>>2],M=d+4|0,n[k+4>>2]=n[M>>2],G=d+8|0,n[k+8>>2]=n[G>>2],n[G>>2]=0,n[M>>2]=0,n[d>>2]=0,d=l_(k)|0,n[T>>2]=n[m>>2],M=m+4|0,n[T+4>>2]=n[M>>2],G=m+8|0,n[T+8>>2]=n[G>>2],n[G>>2]=0,n[M>>2]=0,n[m>>2]=0,uu(0,_|0,o|0,l|0,u|0,A|0,d|0,NGe(T)|0)|0,s_(T),sp(k),I=B}function FGe(){var o=0;return s[7968]|0||(qGe(10708),o=7968,n[o>>2]=1,n[o+4>>2]=0),10708}function Ad(o){return o=o|0,bX(o)|0}function SX(o){return o=o|0,DX(o)|0}function a_(o){return o=o|0,VP(o)|0}function l_(o){return o=o|0,LGe(o)|0}function NGe(o){return o=o|0,OGe(o)|0}function OGe(o){o=o|0;var l=0,u=0,A=0;if(A=(n[o+4>>2]|0)-(n[o>>2]|0)|0,u=A>>2,A=Fl(A+4|0)|0,n[A>>2]=u,u|0){l=0;do n[A+4+(l<<2)>>2]=DX(n[(n[o>>2]|0)+(l<<2)>>2]|0)|0,l=l+1|0;while((l|0)!=(u|0))}return A|0}function DX(o){return o=o|0,o|0}function LGe(o){o=o|0;var l=0,u=0,A=0;if(A=(n[o+4>>2]|0)-(n[o>>2]|0)|0,u=A>>2,A=Fl(A+4|0)|0,n[A>>2]=u,u|0){l=0;do n[A+4+(l<<2)>>2]=bX((n[o>>2]|0)+(l<<2)|0)|0,l=l+1|0;while((l|0)!=(u|0))}return A|0}function bX(o){o=o|0;var l=0,u=0,A=0,d=0;return d=I,I=I+32|0,l=d+12|0,u=d,A=IM(PX()|0)|0,A?(CM(l,A),wM(u,l),EYe(o,u),o=BM(l)|0):o=MGe(o)|0,I=d,o|0}function PX(){var o=0;return s[7960]|0||(jGe(10664),gr(25,10664,U|0)|0,o=7960,n[o>>2]=1,n[o+4>>2]=0),10664}function MGe(o){o=o|0;var l=0,u=0,A=0,d=0,m=0,B=0,k=0;return u=I,I=I+16|0,d=u+4|0,B=u,A=Fl(8)|0,l=A,k=Jt(4)|0,n[k>>2]=n[o>>2],m=l+4|0,n[m>>2]=k,o=Jt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],xX(o,m,d),n[A>>2]=o,I=u,l|0}function xX(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,u=Jt(16)|0,n[u+4>>2]=0,n[u+8>>2]=0,n[u>>2]=1656,n[u+12>>2]=l,n[o+4>>2]=u}function _Ge(o){o=o|0,$y(o),yt(o)}function UGe(o){o=o|0,o=n[o+12>>2]|0,o|0&&yt(o)}function HGe(o){o=o|0,yt(o)}function jGe(o){o=o|0,Uh(o)}function qGe(o){o=o|0,Ro(o,GGe()|0,5)}function GGe(){return 1676}function WGe(o,l){o=o|0,l=l|0;var u=0;if((kX(o)|0)>>>0>>0&&sn(o),l>>>0>1073741823)Nt();else{u=Jt(l<<2)|0,n[o+4>>2]=u,n[o>>2]=u,n[o+8>>2]=u+(l<<2);return}}function YGe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,A=o+4|0,o=u-l|0,(o|0)>0&&(Qr(n[A>>2]|0,l|0,o|0)|0,n[A>>2]=(n[A>>2]|0)+(o>>>2<<2))}function kX(o){return o=o|0,1073741823}function VGe(o,l){o=o|0,l=l|0;var u=0;if((QX(o)|0)>>>0>>0&&sn(o),l>>>0>1073741823)Nt();else{u=Jt(l<<2)|0,n[o+4>>2]=u,n[o>>2]=u,n[o+8>>2]=u+(l<<2);return}}function KGe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,A=o+4|0,o=u-l|0,(o|0)>0&&(Qr(n[A>>2]|0,l|0,o|0)|0,n[A>>2]=(n[A>>2]|0)+(o>>>2<<2))}function QX(o){return o=o|0,1073741823}function JGe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>1073741823)Nt();else{d=Jt(l<<2)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<2)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<2)}function zGe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>2)<<2)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function ZGe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-4-l|0)>>>2)<<2)),o=n[o>>2]|0,o|0&&yt(o)}function TX(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>1073741823)Nt();else{d=Jt(l<<2)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<2)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<2)}function RX(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>2)<<2)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function FX(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-4-l|0)>>>2)<<2)),o=n[o>>2]|0,o|0&&yt(o)}function XGe(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0;var m=0,B=0,k=0,T=0,_=0,M=0,G=0,ae=0,We=0,Le=0,Qe=0;if(Qe=I,I=I+32|0,M=Qe+20|0,G=Qe+12|0,_=Qe+16|0,ae=Qe+4|0,We=Qe,Le=Qe+8|0,k=wX()|0,m=n[k>>2]|0,B=n[m>>2]|0,B|0)for(T=n[k+8>>2]|0,k=n[k+4>>2]|0;xu(M,B),$Ge(o,M,k,T),m=m+4|0,B=n[m>>2]|0,B;)T=T+1|0,k=k+1|0;if(m=BX()|0,B=n[m>>2]|0,B|0)do xu(M,B),n[G>>2]=n[m+4>>2],e5e(l,M,G),m=m+8|0,B=n[m>>2]|0;while(B|0);if(m=n[(Ky()|0)>>2]|0,m|0)do l=n[m+4>>2]|0,xu(M,n[(Jy(l)|0)>>2]|0),n[G>>2]=t_(l)|0,t5e(u,M,G),m=n[m>>2]|0;while(m|0);if(xu(_,0),m=r_()|0,n[M>>2]=n[_>>2],vX(M,m,d),m=n[(Ky()|0)>>2]|0,m|0){o=M+4|0,l=M+8|0,u=M+8|0;do{if(T=n[m+4>>2]|0,xu(G,n[(Jy(T)|0)>>2]|0),r5e(ae,NX(T)|0),B=n[ae>>2]|0,B|0){n[M>>2]=0,n[o>>2]=0,n[l>>2]=0;do xu(We,n[(Jy(n[B+4>>2]|0)|0)>>2]|0),k=n[o>>2]|0,k>>>0<(n[u>>2]|0)>>>0?(n[k>>2]=n[We>>2],n[o>>2]=(n[o>>2]|0)+4):i_(M,We),B=n[B>>2]|0;while(B|0);n5e(A,G,M),sp(M)}n[Le>>2]=n[G>>2],_=OX(T)|0,n[M>>2]=n[Le>>2],vX(M,_,d),iZ(ae),m=n[m>>2]|0}while(m|0)}I=Qe}function $Ge(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,g5e(o,l,u,A)}function e5e(o,l,u){o=o|0,l=l|0,u=u|0,h5e(o,l,u)}function Jy(o){return o=o|0,o|0}function t5e(o,l,u){o=o|0,l=l|0,u=u|0,u5e(o,l,u)}function NX(o){return o=o|0,o+16|0}function r5e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0;if(m=I,I=I+16|0,d=m+8|0,u=m,n[o>>2]=0,A=n[l>>2]|0,n[d>>2]=A,n[u>>2]=o,u=c5e(u)|0,A|0){if(A=Jt(12)|0,B=(LX(d)|0)+4|0,o=n[B+4>>2]|0,l=A+4|0,n[l>>2]=n[B>>2],n[l+4>>2]=o,l=n[n[d>>2]>>2]|0,n[d>>2]=l,!l)o=A;else for(l=A;o=Jt(12)|0,T=(LX(d)|0)+4|0,k=n[T+4>>2]|0,B=o+4|0,n[B>>2]=n[T>>2],n[B+4>>2]=k,n[l>>2]=o,B=n[n[d>>2]>>2]|0,n[d>>2]=B,B;)l=o;n[o>>2]=n[u>>2],n[u>>2]=A}I=m}function n5e(o,l,u){o=o|0,l=l|0,u=u|0,i5e(o,l,u)}function OX(o){return o=o|0,o+24|0}function i5e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+32|0,B=A+24|0,d=A+16|0,k=A+12|0,m=A,Nl(d),o=Ls(o)|0,n[k>>2]=n[l>>2],o_(m,u),n[B>>2]=n[k>>2],s5e(o,B,m),sp(m),Ol(d),I=A}function s5e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+32|0,B=A+16|0,k=A+12|0,d=A,m=ma(o5e()|0)|0,n[k>>2]=n[l>>2],n[B>>2]=n[k>>2],l=Ad(B)|0,n[d>>2]=n[u>>2],B=u+4|0,n[d+4>>2]=n[B>>2],k=u+8|0,n[d+8>>2]=n[k>>2],n[k>>2]=0,n[B>>2]=0,n[u>>2]=0,Rs(0,m|0,o|0,l|0,l_(d)|0)|0,sp(d),I=A}function o5e(){var o=0;return s[7976]|0||(a5e(10720),o=7976,n[o>>2]=1,n[o+4>>2]=0),10720}function a5e(o){o=o|0,Ro(o,l5e()|0,2)}function l5e(){return 1732}function c5e(o){return o=o|0,n[o>>2]|0}function LX(o){return o=o|0,n[o>>2]|0}function u5e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;A=I,I=I+32|0,m=A+16|0,d=A+8|0,B=A,Nl(d),o=Ls(o)|0,n[B>>2]=n[l>>2],u=n[u>>2]|0,n[m>>2]=n[B>>2],MX(o,m,u),Ol(d),I=A}function MX(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;A=I,I=I+16|0,m=A+4|0,B=A,d=ma(f5e()|0)|0,n[B>>2]=n[l>>2],n[m>>2]=n[B>>2],l=Ad(m)|0,Rs(0,d|0,o|0,l|0,SX(u)|0)|0,I=A}function f5e(){var o=0;return s[7984]|0||(A5e(10732),o=7984,n[o>>2]=1,n[o+4>>2]=0),10732}function A5e(o){o=o|0,Ro(o,p5e()|0,2)}function p5e(){return 1744}function h5e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;A=I,I=I+32|0,m=A+16|0,d=A+8|0,B=A,Nl(d),o=Ls(o)|0,n[B>>2]=n[l>>2],u=n[u>>2]|0,n[m>>2]=n[B>>2],MX(o,m,u),Ol(d),I=A}function g5e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0;d=I,I=I+32|0,B=d+16|0,m=d+8|0,k=d,Nl(m),o=Ls(o)|0,n[k>>2]=n[l>>2],u=s[u>>0]|0,A=s[A>>0]|0,n[B>>2]=n[k>>2],d5e(o,B,u,A),Ol(m),I=d}function d5e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0;d=I,I=I+16|0,B=d+4|0,k=d,m=ma(m5e()|0)|0,n[k>>2]=n[l>>2],n[B>>2]=n[k>>2],l=Ad(B)|0,u=zy(u)|0,Oi(0,m|0,o|0,l|0,u|0,zy(A)|0)|0,I=d}function m5e(){var o=0;return s[7992]|0||(E5e(10744),o=7992,n[o>>2]=1,n[o+4>>2]=0),10744}function zy(o){return o=o|0,y5e(o)|0}function y5e(o){return o=o|0,o&255|0}function E5e(o){o=o|0,Ro(o,I5e()|0,3)}function I5e(){return 1756}function C5e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0,ae=0;switch(ae=I,I=I+32|0,k=ae+8|0,T=ae+4|0,_=ae+20|0,M=ae,bM(o,0),A=yYe(l)|0,n[k>>2]=0,G=k+4|0,n[G>>2]=0,n[k+8>>2]=0,A<<24>>24){case 0:{s[_>>0]=0,w5e(T,u,_),ZP(o,T)|0,bf(T);break}case 8:{G=h_(l)|0,s[_>>0]=8,xu(M,n[G+4>>2]|0),B5e(T,u,_,M,G+8|0),ZP(o,T)|0,bf(T);break}case 9:{if(m=h_(l)|0,l=n[m+4>>2]|0,l|0)for(B=k+8|0,d=m+12|0;l=l+-1|0,xu(T,n[d>>2]|0),A=n[G>>2]|0,A>>>0<(n[B>>2]|0)>>>0?(n[A>>2]=n[T>>2],n[G>>2]=(n[G>>2]|0)+4):i_(k,T),l;)d=d+4|0;s[_>>0]=9,xu(M,n[m+8>>2]|0),v5e(T,u,_,M,k),ZP(o,T)|0,bf(T);break}default:G=h_(l)|0,s[_>>0]=A,xu(M,n[G+4>>2]|0),S5e(T,u,_,M),ZP(o,T)|0,bf(T)}sp(k),I=ae}function w5e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0;A=I,I=I+16|0,d=A,Nl(d),l=Ls(l)|0,M5e(o,l,s[u>>0]|0),Ol(d),I=A}function ZP(o,l){o=o|0,l=l|0;var u=0;return u=n[o>>2]|0,u|0&&Oa(u|0),n[o>>2]=n[l>>2],n[l>>2]=0,o|0}function B5e(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0;var m=0,B=0,k=0,T=0;m=I,I=I+32|0,k=m+16|0,B=m+8|0,T=m,Nl(B),l=Ls(l)|0,u=s[u>>0]|0,n[T>>2]=n[A>>2],d=n[d>>2]|0,n[k>>2]=n[T>>2],F5e(o,l,u,k,d),Ol(B),I=m}function v5e(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0;var m=0,B=0,k=0,T=0,_=0;m=I,I=I+32|0,T=m+24|0,B=m+16|0,_=m+12|0,k=m,Nl(B),l=Ls(l)|0,u=s[u>>0]|0,n[_>>2]=n[A>>2],o_(k,d),n[T>>2]=n[_>>2],k5e(o,l,u,T,k),sp(k),Ol(B),I=m}function S5e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0;d=I,I=I+32|0,B=d+16|0,m=d+8|0,k=d,Nl(m),l=Ls(l)|0,u=s[u>>0]|0,n[k>>2]=n[A>>2],n[B>>2]=n[k>>2],D5e(o,l,u,B),Ol(m),I=d}function D5e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0;d=I,I=I+16|0,m=d+4|0,k=d,B=ma(b5e()|0)|0,u=zy(u)|0,n[k>>2]=n[A>>2],n[m>>2]=n[k>>2],XP(o,Rs(0,B|0,l|0,u|0,Ad(m)|0)|0),I=d}function b5e(){var o=0;return s[8e3]|0||(P5e(10756),o=8e3,n[o>>2]=1,n[o+4>>2]=0),10756}function XP(o,l){o=o|0,l=l|0,bM(o,l)}function P5e(o){o=o|0,Ro(o,x5e()|0,2)}function x5e(){return 1772}function k5e(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0;var m=0,B=0,k=0,T=0,_=0;m=I,I=I+32|0,T=m+16|0,_=m+12|0,B=m,k=ma(Q5e()|0)|0,u=zy(u)|0,n[_>>2]=n[A>>2],n[T>>2]=n[_>>2],A=Ad(T)|0,n[B>>2]=n[d>>2],T=d+4|0,n[B+4>>2]=n[T>>2],_=d+8|0,n[B+8>>2]=n[_>>2],n[_>>2]=0,n[T>>2]=0,n[d>>2]=0,XP(o,Oi(0,k|0,l|0,u|0,A|0,l_(B)|0)|0),sp(B),I=m}function Q5e(){var o=0;return s[8008]|0||(T5e(10768),o=8008,n[o>>2]=1,n[o+4>>2]=0),10768}function T5e(o){o=o|0,Ro(o,R5e()|0,3)}function R5e(){return 1784}function F5e(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0;var m=0,B=0,k=0,T=0;m=I,I=I+16|0,k=m+4|0,T=m,B=ma(N5e()|0)|0,u=zy(u)|0,n[T>>2]=n[A>>2],n[k>>2]=n[T>>2],A=Ad(k)|0,XP(o,Oi(0,B|0,l|0,u|0,A|0,a_(d)|0)|0),I=m}function N5e(){var o=0;return s[8016]|0||(O5e(10780),o=8016,n[o>>2]=1,n[o+4>>2]=0),10780}function O5e(o){o=o|0,Ro(o,L5e()|0,3)}function L5e(){return 1800}function M5e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=ma(_5e()|0)|0,XP(o,dn(0,A|0,l|0,zy(u)|0)|0)}function _5e(){var o=0;return s[8024]|0||(U5e(10792),o=8024,n[o>>2]=1,n[o+4>>2]=0),10792}function U5e(o){o=o|0,Ro(o,H5e()|0,1)}function H5e(){return 1816}function j5e(){q5e(),G5e(),W5e()}function q5e(){n[2702]=A$(65536)|0}function G5e(){f9e(10856)}function W5e(){Y5e(10816)}function Y5e(o){o=o|0,V5e(o,5044),K5e(o)|0}function V5e(o,l){o=o|0,l=l|0;var u=0;u=PX()|0,n[o>>2]=u,s9e(u,l),Wh(n[o>>2]|0)}function K5e(o){o=o|0;var l=0;return l=n[o>>2]|0,ud(l,J5e()|0),o|0}function J5e(){var o=0;return s[8032]|0||(_X(10820),gr(64,10820,U|0)|0,o=8032,n[o>>2]=1,n[o+4>>2]=0),Ur(10820)|0||_X(10820),10820}function _X(o){o=o|0,X5e(o),fd(o,25)}function z5e(o){o=o|0,Z5e(o+24|0)}function Z5e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),yt(u))}function X5e(o){o=o|0;var l=0;l=en()|0,tn(o,5,18,l,r9e()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function $5e(o,l){o=o|0,l=l|0,e9e(o,l)}function e9e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0;u=I,I=I+16|0,A=u,d=u+4|0,ld(d,l),n[A>>2]=cd(d,l)|0,t9e(o,A),I=u}function t9e(o,l){o=o|0,l=l|0,UX(o+4|0,n[l>>2]|0),s[o+8>>0]=1}function UX(o,l){o=o|0,l=l|0,n[o>>2]=l}function r9e(){return 1824}function n9e(o){return o=o|0,i9e(o)|0}function i9e(o){o=o|0;var l=0,u=0,A=0,d=0,m=0,B=0,k=0;return u=I,I=I+16|0,d=u+4|0,B=u,A=Fl(8)|0,l=A,k=Jt(4)|0,ld(d,o),UX(k,cd(d,o)|0),m=l+4|0,n[m>>2]=k,o=Jt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],xX(o,m,d),n[A>>2]=o,I=u,l|0}function Fl(o){o=o|0;var l=0,u=0;return o=o+7&-8,o>>>0<=32768&&(l=n[2701]|0,o>>>0<=(65536-l|0)>>>0)?(u=(n[2702]|0)+l|0,n[2701]=l+o,o=u):(o=A$(o+8|0)|0,n[o>>2]=n[2703],n[2703]=o,o=o+8|0),o|0}function s9e(o,l){o=o|0,l=l|0,n[o>>2]=o9e()|0,n[o+4>>2]=a9e()|0,n[o+12>>2]=l,n[o+8>>2]=l9e()|0,n[o+32>>2]=9}function o9e(){return 11744}function a9e(){return 1832}function l9e(){return JP()|0}function c9e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(Gh(A,896)|0)==512?u|0&&(u9e(u),yt(u)):l|0&&yt(l)}function u9e(o){o=o|0,o=n[o+4>>2]|0,o|0&&Yh(o)}function f9e(o){o=o|0,A9e(o,5052),p9e(o)|0,h9e(o,5058,26)|0,g9e(o,5069,1)|0,d9e(o,5077,10)|0,m9e(o,5087,19)|0,y9e(o,5094,27)|0}function A9e(o,l){o=o|0,l=l|0;var u=0;u=uYe()|0,n[o>>2]=u,fYe(u,l),Wh(n[o>>2]|0)}function p9e(o){o=o|0;var l=0;return l=n[o>>2]|0,ud(l,zWe()|0),o|0}function h9e(o,l,u){return o=o|0,l=l|0,u=u|0,TWe(o,Bn(l)|0,u,0),o|0}function g9e(o,l,u){return o=o|0,l=l|0,u=u|0,mWe(o,Bn(l)|0,u,0),o|0}function d9e(o,l,u){return o=o|0,l=l|0,u=u|0,J9e(o,Bn(l)|0,u,0),o|0}function m9e(o,l,u){return o=o|0,l=l|0,u=u|0,F9e(o,Bn(l)|0,u,0),o|0}function HX(o,l){o=o|0,l=l|0;var u=0,A=0;e:for(;;){for(u=n[2703]|0;;){if((u|0)==(l|0))break e;if(A=n[u>>2]|0,n[2703]=A,!u)u=A;else break}yt(u)}n[2701]=o}function y9e(o,l,u){return o=o|0,l=l|0,u=u|0,E9e(o,Bn(l)|0,u,0),o|0}function E9e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=c_()|0,o=I9e(u)|0,vn(m,l,d,o,C9e(u,A)|0,A)}function c_(){var o=0,l=0;if(s[8040]|0||(qX(10860),gr(65,10860,U|0)|0,l=8040,n[l>>2]=1,n[l+4>>2]=0),!(Ur(10860)|0)){o=10860,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));qX(10860)}return 10860}function I9e(o){return o=o|0,o|0}function C9e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,T=c_()|0,B=T+24|0,l=yr(l,4)|0,n[m>>2]=l,u=T+28|0,A=n[u>>2]|0,A>>>0<(n[T+32>>2]|0)>>>0?(jX(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(w9e(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function jX(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function w9e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=B9e(o)|0,A>>>0>>0)sn(o);else{T=n[o>>2]|0,M=(n[o+8>>2]|0)-T|0,_=M>>2,v9e(d,M>>3>>>0>>1>>>0?_>>>0>>0?B:_:A,(n[m>>2]|0)-T>>3,o+8|0),B=d+8|0,jX(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,S9e(o,d),D9e(d),I=k;return}}function B9e(o){return o=o|0,536870911}function v9e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Jt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function S9e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function D9e(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&yt(o)}function qX(o){o=o|0,x9e(o)}function b9e(o){o=o|0,P9e(o+24|0)}function P9e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),yt(u))}function x9e(o){o=o|0;var l=0;l=en()|0,tn(o,1,11,l,k9e()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function k9e(){return 1840}function Q9e(o,l,u){o=o|0,l=l|0,u=u|0,R9e(n[(T9e(o)|0)>>2]|0,l,u)}function T9e(o){return o=o|0,(n[(c_()|0)+24>>2]|0)+(o<<3)|0}function R9e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;A=I,I=I+16|0,m=A+1|0,d=A,ld(m,l),l=cd(m,l)|0,ld(d,u),u=cd(d,u)|0,ap[o&31](l,u),I=A}function F9e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=u_()|0,o=N9e(u)|0,vn(m,l,d,o,O9e(u,A)|0,A)}function u_(){var o=0,l=0;if(s[8048]|0||(WX(10896),gr(66,10896,U|0)|0,l=8048,n[l>>2]=1,n[l+4>>2]=0),!(Ur(10896)|0)){o=10896,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));WX(10896)}return 10896}function N9e(o){return o=o|0,o|0}function O9e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,T=u_()|0,B=T+24|0,l=yr(l,4)|0,n[m>>2]=l,u=T+28|0,A=n[u>>2]|0,A>>>0<(n[T+32>>2]|0)>>>0?(GX(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(L9e(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function GX(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function L9e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=M9e(o)|0,A>>>0>>0)sn(o);else{T=n[o>>2]|0,M=(n[o+8>>2]|0)-T|0,_=M>>2,_9e(d,M>>3>>>0>>1>>>0?_>>>0>>0?B:_:A,(n[m>>2]|0)-T>>3,o+8|0),B=d+8|0,GX(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,U9e(o,d),H9e(d),I=k;return}}function M9e(o){return o=o|0,536870911}function _9e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Jt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function U9e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function H9e(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&yt(o)}function WX(o){o=o|0,G9e(o)}function j9e(o){o=o|0,q9e(o+24|0)}function q9e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),yt(u))}function G9e(o){o=o|0;var l=0;l=en()|0,tn(o,1,11,l,W9e()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function W9e(){return 1852}function Y9e(o,l){return o=o|0,l=l|0,K9e(n[(V9e(o)|0)>>2]|0,l)|0}function V9e(o){return o=o|0,(n[(u_()|0)+24>>2]|0)+(o<<3)|0}function K9e(o,l){o=o|0,l=l|0;var u=0,A=0;return u=I,I=I+16|0,A=u,ld(A,l),l=cd(A,l)|0,l=VP(dd[o&31](l)|0)|0,I=u,l|0}function J9e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=f_()|0,o=z9e(u)|0,vn(m,l,d,o,Z9e(u,A)|0,A)}function f_(){var o=0,l=0;if(s[8056]|0||(VX(10932),gr(67,10932,U|0)|0,l=8056,n[l>>2]=1,n[l+4>>2]=0),!(Ur(10932)|0)){o=10932,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));VX(10932)}return 10932}function z9e(o){return o=o|0,o|0}function Z9e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,T=f_()|0,B=T+24|0,l=yr(l,4)|0,n[m>>2]=l,u=T+28|0,A=n[u>>2]|0,A>>>0<(n[T+32>>2]|0)>>>0?(YX(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(X9e(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function YX(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function X9e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=$9e(o)|0,A>>>0>>0)sn(o);else{T=n[o>>2]|0,M=(n[o+8>>2]|0)-T|0,_=M>>2,eWe(d,M>>3>>>0>>1>>>0?_>>>0>>0?B:_:A,(n[m>>2]|0)-T>>3,o+8|0),B=d+8|0,YX(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,tWe(o,d),rWe(d),I=k;return}}function $9e(o){return o=o|0,536870911}function eWe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Jt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function tWe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function rWe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&yt(o)}function VX(o){o=o|0,sWe(o)}function nWe(o){o=o|0,iWe(o+24|0)}function iWe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),yt(u))}function sWe(o){o=o|0;var l=0;l=en()|0,tn(o,1,7,l,oWe()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function oWe(){return 1860}function aWe(o,l,u){return o=o|0,l=l|0,u=u|0,cWe(n[(lWe(o)|0)>>2]|0,l,u)|0}function lWe(o){return o=o|0,(n[(f_()|0)+24>>2]|0)+(o<<3)|0}function cWe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0;return A=I,I=I+32|0,B=A+12|0,m=A+8|0,k=A,T=A+16|0,d=A+4|0,uWe(T,l),fWe(k,T,l),Hh(d,u),u=jh(d,u)|0,n[B>>2]=n[k>>2],L2[o&15](m,B,u),u=AWe(m)|0,bf(m),qh(d),I=A,u|0}function uWe(o,l){o=o|0,l=l|0}function fWe(o,l,u){o=o|0,l=l|0,u=u|0,pWe(o,u)}function AWe(o){return o=o|0,Ls(o)|0}function pWe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0;d=I,I=I+16|0,u=d,A=l,A&1?(hWe(u,0),Me(A|0,u|0)|0,gWe(o,u),dWe(u)):n[o>>2]=n[l>>2],I=d}function hWe(o,l){o=o|0,l=l|0,bu(o,l),n[o+4>>2]=0,s[o+8>>0]=0}function gWe(o,l){o=o|0,l=l|0,n[o>>2]=n[l+4>>2]}function dWe(o){o=o|0,s[o+8>>0]=0}function mWe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=A_()|0,o=yWe(u)|0,vn(m,l,d,o,EWe(u,A)|0,A)}function A_(){var o=0,l=0;if(s[8064]|0||(JX(10968),gr(68,10968,U|0)|0,l=8064,n[l>>2]=1,n[l+4>>2]=0),!(Ur(10968)|0)){o=10968,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));JX(10968)}return 10968}function yWe(o){return o=o|0,o|0}function EWe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,T=A_()|0,B=T+24|0,l=yr(l,4)|0,n[m>>2]=l,u=T+28|0,A=n[u>>2]|0,A>>>0<(n[T+32>>2]|0)>>>0?(KX(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(IWe(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function KX(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function IWe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=CWe(o)|0,A>>>0>>0)sn(o);else{T=n[o>>2]|0,M=(n[o+8>>2]|0)-T|0,_=M>>2,wWe(d,M>>3>>>0>>1>>>0?_>>>0>>0?B:_:A,(n[m>>2]|0)-T>>3,o+8|0),B=d+8|0,KX(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,BWe(o,d),vWe(d),I=k;return}}function CWe(o){return o=o|0,536870911}function wWe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Jt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function BWe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function vWe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&yt(o)}function JX(o){o=o|0,bWe(o)}function SWe(o){o=o|0,DWe(o+24|0)}function DWe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),yt(u))}function bWe(o){o=o|0;var l=0;l=en()|0,tn(o,1,1,l,PWe()|0,5),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function PWe(){return 1872}function xWe(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,QWe(n[(kWe(o)|0)>>2]|0,l,u,A,d,m)}function kWe(o){return o=o|0,(n[(A_()|0)+24>>2]|0)+(o<<3)|0}function QWe(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0;var B=0,k=0,T=0,_=0,M=0,G=0;B=I,I=I+32|0,k=B+16|0,T=B+12|0,_=B+8|0,M=B+4|0,G=B,Hh(k,l),l=jh(k,l)|0,Hh(T,u),u=jh(T,u)|0,Hh(_,A),A=jh(_,A)|0,Hh(M,d),d=jh(M,d)|0,Hh(G,m),m=jh(G,m)|0,m$[o&1](l,u,A,d,m),qh(G),qh(M),qh(_),qh(T),qh(k),I=B}function TWe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=p_()|0,o=RWe(u)|0,vn(m,l,d,o,FWe(u,A)|0,A)}function p_(){var o=0,l=0;if(s[8072]|0||(ZX(11004),gr(69,11004,U|0)|0,l=8072,n[l>>2]=1,n[l+4>>2]=0),!(Ur(11004)|0)){o=11004,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));ZX(11004)}return 11004}function RWe(o){return o=o|0,o|0}function FWe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,T=p_()|0,B=T+24|0,l=yr(l,4)|0,n[m>>2]=l,u=T+28|0,A=n[u>>2]|0,A>>>0<(n[T+32>>2]|0)>>>0?(zX(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(NWe(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function zX(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function NWe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=OWe(o)|0,A>>>0>>0)sn(o);else{T=n[o>>2]|0,M=(n[o+8>>2]|0)-T|0,_=M>>2,LWe(d,M>>3>>>0>>1>>>0?_>>>0>>0?B:_:A,(n[m>>2]|0)-T>>3,o+8|0),B=d+8|0,zX(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,MWe(o,d),_We(d),I=k;return}}function OWe(o){return o=o|0,536870911}function LWe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Jt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function MWe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function _We(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&yt(o)}function ZX(o){o=o|0,jWe(o)}function UWe(o){o=o|0,HWe(o+24|0)}function HWe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),yt(u))}function jWe(o){o=o|0;var l=0;l=en()|0,tn(o,1,12,l,qWe()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function qWe(){return 1896}function GWe(o,l,u){o=o|0,l=l|0,u=u|0,YWe(n[(WWe(o)|0)>>2]|0,l,u)}function WWe(o){return o=o|0,(n[(p_()|0)+24>>2]|0)+(o<<3)|0}function YWe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;A=I,I=I+16|0,m=A+4|0,d=A,VWe(m,l),l=KWe(m,l)|0,Hh(d,u),u=jh(d,u)|0,ap[o&31](l,u),qh(d),I=A}function VWe(o,l){o=o|0,l=l|0}function KWe(o,l){return o=o|0,l=l|0,JWe(l)|0}function JWe(o){return o=o|0,o|0}function zWe(){var o=0;return s[8080]|0||(XX(11040),gr(70,11040,U|0)|0,o=8080,n[o>>2]=1,n[o+4>>2]=0),Ur(11040)|0||XX(11040),11040}function XX(o){o=o|0,$We(o),fd(o,71)}function ZWe(o){o=o|0,XWe(o+24|0)}function XWe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),yt(u))}function $We(o){o=o|0;var l=0;l=en()|0,tn(o,5,7,l,nYe()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function eYe(o){o=o|0,tYe(o)}function tYe(o){o=o|0,rYe(o)}function rYe(o){o=o|0,s[o+8>>0]=1}function nYe(){return 1936}function iYe(){return sYe()|0}function sYe(){var o=0,l=0,u=0,A=0,d=0,m=0,B=0;return l=I,I=I+16|0,d=l+4|0,B=l,u=Fl(8)|0,o=u,m=o+4|0,n[m>>2]=Jt(1)|0,A=Jt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],oYe(A,m,d),n[u>>2]=A,I=l,o|0}function oYe(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,u=Jt(16)|0,n[u+4>>2]=0,n[u+8>>2]=0,n[u>>2]=1916,n[u+12>>2]=l,n[o+4>>2]=u}function aYe(o){o=o|0,$y(o),yt(o)}function lYe(o){o=o|0,o=n[o+12>>2]|0,o|0&&yt(o)}function cYe(o){o=o|0,yt(o)}function uYe(){var o=0;return s[8088]|0||(mYe(11076),gr(25,11076,U|0)|0,o=8088,n[o>>2]=1,n[o+4>>2]=0),11076}function fYe(o,l){o=o|0,l=l|0,n[o>>2]=AYe()|0,n[o+4>>2]=pYe()|0,n[o+12>>2]=l,n[o+8>>2]=hYe()|0,n[o+32>>2]=10}function AYe(){return 11745}function pYe(){return 1940}function hYe(){return KP()|0}function gYe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(Gh(A,896)|0)==512?u|0&&(dYe(u),yt(u)):l|0&&yt(l)}function dYe(o){o=o|0,o=n[o+4>>2]|0,o|0&&Yh(o)}function mYe(o){o=o|0,Uh(o)}function xu(o,l){o=o|0,l=l|0,n[o>>2]=l}function h_(o){return o=o|0,n[o>>2]|0}function yYe(o){return o=o|0,s[n[o>>2]>>0]|0}function EYe(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,n[A>>2]=n[o>>2],IYe(l,A)|0,I=u}function IYe(o,l){o=o|0,l=l|0;var u=0;return u=CYe(n[o>>2]|0,l)|0,l=o+4|0,n[(n[l>>2]|0)+8>>2]=u,n[(n[l>>2]|0)+8>>2]|0}function CYe(o,l){o=o|0,l=l|0;var u=0,A=0;return u=I,I=I+16|0,A=u,Nl(A),o=Ls(o)|0,l=wYe(o,n[l>>2]|0)|0,Ol(A),I=u,l|0}function Nl(o){o=o|0,n[o>>2]=n[2701],n[o+4>>2]=n[2703]}function wYe(o,l){o=o|0,l=l|0;var u=0;return u=ma(BYe()|0)|0,dn(0,u|0,o|0,a_(l)|0)|0}function Ol(o){o=o|0,HX(n[o>>2]|0,n[o+4>>2]|0)}function BYe(){var o=0;return s[8096]|0||(vYe(11120),o=8096,n[o>>2]=1,n[o+4>>2]=0),11120}function vYe(o){o=o|0,Ro(o,SYe()|0,1)}function SYe(){return 1948}function DYe(){bYe()}function bYe(){var o=0,l=0,u=0,A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0,ae=0,We=0,Le=0,Qe=0;if(Le=I,I=I+16|0,M=Le+4|0,G=Le,aa(65536,10804,n[2702]|0,10812),u=wX()|0,l=n[u>>2]|0,o=n[l>>2]|0,o|0)for(A=n[u+8>>2]|0,u=n[u+4>>2]|0;hf(o|0,c[u>>0]|0|0,s[A>>0]|0),l=l+4|0,o=n[l>>2]|0,o;)A=A+1|0,u=u+1|0;if(o=BX()|0,l=n[o>>2]|0,l|0)do LA(l|0,n[o+4>>2]|0),o=o+8|0,l=n[o>>2]|0;while(l|0);LA(PYe()|0,5167),_=Ky()|0,o=n[_>>2]|0;e:do if(o|0){do xYe(n[o+4>>2]|0),o=n[o>>2]|0;while(o|0);if(o=n[_>>2]|0,o|0){T=_;do{for(;d=o,o=n[o>>2]|0,d=n[d+4>>2]|0,!!(kYe(d)|0);)if(n[G>>2]=T,n[M>>2]=n[G>>2],QYe(_,M)|0,!o)break e;if(TYe(d),T=n[T>>2]|0,l=$X(d)|0,m=Ni()|0,B=I,I=I+((1*(l<<2)|0)+15&-16)|0,k=I,I=I+((1*(l<<2)|0)+15&-16)|0,l=n[(NX(d)|0)>>2]|0,l|0)for(u=B,A=k;n[u>>2]=n[(Jy(n[l+4>>2]|0)|0)>>2],n[A>>2]=n[l+8>>2],l=n[l>>2]|0,l;)u=u+4|0,A=A+4|0;Qe=Jy(d)|0,l=RYe(d)|0,u=$X(d)|0,A=FYe(d)|0,ac(Qe|0,l|0,B|0,k|0,u|0,A|0,t_(d)|0),OA(m|0)}while(o|0)}}while(!1);if(o=n[(r_()|0)>>2]|0,o|0)do Qe=o+4|0,_=n_(Qe)|0,d=R2(_)|0,m=Q2(_)|0,B=(T2(_)|0)+1|0,k=$P(_)|0,T=e$(Qe)|0,_=Ur(_)|0,M=zP(Qe)|0,G=g_(Qe)|0,Au(0,d|0,m|0,B|0,k|0,T|0,_|0,M|0,G|0,d_(Qe)|0),o=n[o>>2]|0;while(o|0);o=n[(Ky()|0)>>2]|0;e:do if(o|0){t:for(;;){if(l=n[o+4>>2]|0,l|0&&(ae=n[(Jy(l)|0)>>2]|0,We=n[(OX(l)|0)>>2]|0,We|0)){u=We;do{l=u+4|0,A=n_(l)|0;r:do if(A|0)switch(Ur(A)|0){case 0:break t;case 4:case 3:case 2:{k=R2(A)|0,T=Q2(A)|0,_=(T2(A)|0)+1|0,M=$P(A)|0,G=Ur(A)|0,Qe=zP(l)|0,Au(ae|0,k|0,T|0,_|0,M|0,0,G|0,Qe|0,g_(l)|0,d_(l)|0);break r}case 1:{B=R2(A)|0,k=Q2(A)|0,T=(T2(A)|0)+1|0,_=$P(A)|0,M=e$(l)|0,G=Ur(A)|0,Qe=zP(l)|0,Au(ae|0,B|0,k|0,T|0,_|0,M|0,G|0,Qe|0,g_(l)|0,d_(l)|0);break r}case 5:{_=R2(A)|0,M=Q2(A)|0,G=(T2(A)|0)+1|0,Qe=$P(A)|0,Au(ae|0,_|0,M|0,G|0,Qe|0,NYe(A)|0,Ur(A)|0,0,0,0);break r}default:break r}while(!1);u=n[u>>2]|0}while(u|0)}if(o=n[o>>2]|0,!o)break e}Nt()}while(!1);ve(),I=Le}function PYe(){return 11703}function xYe(o){o=o|0,s[o+40>>0]=0}function kYe(o){return o=o|0,(s[o+40>>0]|0)!=0|0}function QYe(o,l){return o=o|0,l=l|0,l=OYe(l)|0,o=n[l>>2]|0,n[l>>2]=n[o>>2],yt(o),n[l>>2]|0}function TYe(o){o=o|0,s[o+40>>0]=1}function $X(o){return o=o|0,n[o+20>>2]|0}function RYe(o){return o=o|0,n[o+8>>2]|0}function FYe(o){return o=o|0,n[o+32>>2]|0}function $P(o){return o=o|0,n[o+4>>2]|0}function e$(o){return o=o|0,n[o+4>>2]|0}function g_(o){return o=o|0,n[o+8>>2]|0}function d_(o){return o=o|0,n[o+16>>2]|0}function NYe(o){return o=o|0,n[o+20>>2]|0}function OYe(o){return o=o|0,n[o>>2]|0}function ex(o){o=o|0;var l=0,u=0,A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0,ae=0,We=0,Le=0,Qe=0,tt=0,Ze=0,ct=0,He=0,Ge=0,Lt=0;Lt=I,I=I+16|0,ae=Lt;do if(o>>>0<245){if(_=o>>>0<11?16:o+11&-8,o=_>>>3,G=n[2783]|0,u=G>>>o,u&3|0)return l=(u&1^1)+o|0,o=11172+(l<<1<<2)|0,u=o+8|0,A=n[u>>2]|0,d=A+8|0,m=n[d>>2]|0,(o|0)==(m|0)?n[2783]=G&~(1<>2]=o,n[u>>2]=m),Ge=l<<3,n[A+4>>2]=Ge|3,Ge=A+Ge+4|0,n[Ge>>2]=n[Ge>>2]|1,Ge=d,I=Lt,Ge|0;if(M=n[2785]|0,_>>>0>M>>>0){if(u|0)return l=2<>>12&16,l=l>>>B,u=l>>>5&8,l=l>>>u,d=l>>>2&4,l=l>>>d,o=l>>>1&2,l=l>>>o,A=l>>>1&1,A=(u|B|d|o|A)+(l>>>A)|0,l=11172+(A<<1<<2)|0,o=l+8|0,d=n[o>>2]|0,B=d+8|0,u=n[B>>2]|0,(l|0)==(u|0)?(o=G&~(1<>2]=l,n[o>>2]=u,o=G),m=(A<<3)-_|0,n[d+4>>2]=_|3,A=d+_|0,n[A+4>>2]=m|1,n[A+m>>2]=m,M|0&&(d=n[2788]|0,l=M>>>3,u=11172+(l<<1<<2)|0,l=1<>2]|0):(n[2783]=o|l,l=u,o=u+8|0),n[o>>2]=d,n[l+12>>2]=d,n[d+8>>2]=l,n[d+12>>2]=u),n[2785]=m,n[2788]=A,Ge=B,I=Lt,Ge|0;if(k=n[2784]|0,k){if(u=(k&0-k)+-1|0,B=u>>>12&16,u=u>>>B,m=u>>>5&8,u=u>>>m,T=u>>>2&4,u=u>>>T,A=u>>>1&2,u=u>>>A,o=u>>>1&1,o=n[11436+((m|B|T|A|o)+(u>>>o)<<2)>>2]|0,u=(n[o+4>>2]&-8)-_|0,A=n[o+16+(((n[o+16>>2]|0)==0&1)<<2)>>2]|0,!A)T=o,m=u;else{do B=(n[A+4>>2]&-8)-_|0,T=B>>>0>>0,u=T?B:u,o=T?A:o,A=n[A+16+(((n[A+16>>2]|0)==0&1)<<2)>>2]|0;while(A|0);T=o,m=u}if(B=T+_|0,T>>>0>>0){d=n[T+24>>2]|0,l=n[T+12>>2]|0;do if((l|0)==(T|0)){if(o=T+20|0,l=n[o>>2]|0,!l&&(o=T+16|0,l=n[o>>2]|0,!l)){u=0;break}for(;;){if(u=l+20|0,A=n[u>>2]|0,A|0){l=A,o=u;continue}if(u=l+16|0,A=n[u>>2]|0,A)l=A,o=u;else break}n[o>>2]=0,u=l}else u=n[T+8>>2]|0,n[u+12>>2]=l,n[l+8>>2]=u,u=l;while(!1);do if(d|0){if(l=n[T+28>>2]|0,o=11436+(l<<2)|0,(T|0)==(n[o>>2]|0)){if(n[o>>2]=u,!u){n[2784]=k&~(1<>2]|0)!=(T|0)&1)<<2)>>2]=u,!u)break;n[u+24>>2]=d,l=n[T+16>>2]|0,l|0&&(n[u+16>>2]=l,n[l+24>>2]=u),l=n[T+20>>2]|0,l|0&&(n[u+20>>2]=l,n[l+24>>2]=u)}while(!1);return m>>>0<16?(Ge=m+_|0,n[T+4>>2]=Ge|3,Ge=T+Ge+4|0,n[Ge>>2]=n[Ge>>2]|1):(n[T+4>>2]=_|3,n[B+4>>2]=m|1,n[B+m>>2]=m,M|0&&(A=n[2788]|0,l=M>>>3,u=11172+(l<<1<<2)|0,l=1<>2]|0):(n[2783]=G|l,l=u,o=u+8|0),n[o>>2]=A,n[l+12>>2]=A,n[A+8>>2]=l,n[A+12>>2]=u),n[2785]=m,n[2788]=B),Ge=T+8|0,I=Lt,Ge|0}else G=_}else G=_}else G=_}else if(o>>>0<=4294967231)if(o=o+11|0,_=o&-8,T=n[2784]|0,T){A=0-_|0,o=o>>>8,o?_>>>0>16777215?k=31:(G=(o+1048320|0)>>>16&8,He=o<>>16&4,He=He<>>16&2,k=14-(M|G|k)+(He<>>15)|0,k=_>>>(k+7|0)&1|k<<1):k=0,u=n[11436+(k<<2)>>2]|0;e:do if(!u)u=0,o=0,He=57;else for(o=0,B=_<<((k|0)==31?0:25-(k>>>1)|0),m=0;;){if(d=(n[u+4>>2]&-8)-_|0,d>>>0>>0)if(d)o=u,A=d;else{o=u,A=0,d=u,He=61;break e}if(d=n[u+20>>2]|0,u=n[u+16+(B>>>31<<2)>>2]|0,m=(d|0)==0|(d|0)==(u|0)?m:d,d=(u|0)==0,d){u=m,He=57;break}else B=B<<((d^1)&1)}while(!1);if((He|0)==57){if((u|0)==0&(o|0)==0){if(o=2<>>12&16,G=G>>>B,m=G>>>5&8,G=G>>>m,k=G>>>2&4,G=G>>>k,M=G>>>1&2,G=G>>>M,u=G>>>1&1,o=0,u=n[11436+((m|B|k|M|u)+(G>>>u)<<2)>>2]|0}u?(d=u,He=61):(k=o,B=A)}if((He|0)==61)for(;;)if(He=0,u=(n[d+4>>2]&-8)-_|0,G=u>>>0>>0,u=G?u:A,o=G?d:o,d=n[d+16+(((n[d+16>>2]|0)==0&1)<<2)>>2]|0,d)A=u,He=61;else{k=o,B=u;break}if(k|0&&B>>>0<((n[2785]|0)-_|0)>>>0){if(m=k+_|0,k>>>0>=m>>>0)return Ge=0,I=Lt,Ge|0;d=n[k+24>>2]|0,l=n[k+12>>2]|0;do if((l|0)==(k|0)){if(o=k+20|0,l=n[o>>2]|0,!l&&(o=k+16|0,l=n[o>>2]|0,!l)){l=0;break}for(;;){if(u=l+20|0,A=n[u>>2]|0,A|0){l=A,o=u;continue}if(u=l+16|0,A=n[u>>2]|0,A)l=A,o=u;else break}n[o>>2]=0}else Ge=n[k+8>>2]|0,n[Ge+12>>2]=l,n[l+8>>2]=Ge;while(!1);do if(d){if(o=n[k+28>>2]|0,u=11436+(o<<2)|0,(k|0)==(n[u>>2]|0)){if(n[u>>2]=l,!l){A=T&~(1<>2]|0)!=(k|0)&1)<<2)>>2]=l,!l){A=T;break}n[l+24>>2]=d,o=n[k+16>>2]|0,o|0&&(n[l+16>>2]=o,n[o+24>>2]=l),o=n[k+20>>2]|0,o&&(n[l+20>>2]=o,n[o+24>>2]=l),A=T}else A=T;while(!1);do if(B>>>0>=16){if(n[k+4>>2]=_|3,n[m+4>>2]=B|1,n[m+B>>2]=B,l=B>>>3,B>>>0<256){u=11172+(l<<1<<2)|0,o=n[2783]|0,l=1<>2]|0):(n[2783]=o|l,l=u,o=u+8|0),n[o>>2]=m,n[l+12>>2]=m,n[m+8>>2]=l,n[m+12>>2]=u;break}if(l=B>>>8,l?B>>>0>16777215?l=31:(He=(l+1048320|0)>>>16&8,Ge=l<>>16&4,Ge=Ge<>>16&2,l=14-(ct|He|l)+(Ge<>>15)|0,l=B>>>(l+7|0)&1|l<<1):l=0,u=11436+(l<<2)|0,n[m+28>>2]=l,o=m+16|0,n[o+4>>2]=0,n[o>>2]=0,o=1<>2]=m,n[m+24>>2]=u,n[m+12>>2]=m,n[m+8>>2]=m;break}for(o=B<<((l|0)==31?0:25-(l>>>1)|0),u=n[u>>2]|0;;){if((n[u+4>>2]&-8|0)==(B|0)){He=97;break}if(A=u+16+(o>>>31<<2)|0,l=n[A>>2]|0,l)o=o<<1,u=l;else{He=96;break}}if((He|0)==96){n[A>>2]=m,n[m+24>>2]=u,n[m+12>>2]=m,n[m+8>>2]=m;break}else if((He|0)==97){He=u+8|0,Ge=n[He>>2]|0,n[Ge+12>>2]=m,n[He>>2]=m,n[m+8>>2]=Ge,n[m+12>>2]=u,n[m+24>>2]=0;break}}else Ge=B+_|0,n[k+4>>2]=Ge|3,Ge=k+Ge+4|0,n[Ge>>2]=n[Ge>>2]|1;while(!1);return Ge=k+8|0,I=Lt,Ge|0}else G=_}else G=_;else G=-1;while(!1);if(u=n[2785]|0,u>>>0>=G>>>0)return l=u-G|0,o=n[2788]|0,l>>>0>15?(Ge=o+G|0,n[2788]=Ge,n[2785]=l,n[Ge+4>>2]=l|1,n[Ge+l>>2]=l,n[o+4>>2]=G|3):(n[2785]=0,n[2788]=0,n[o+4>>2]=u|3,Ge=o+u+4|0,n[Ge>>2]=n[Ge>>2]|1),Ge=o+8|0,I=Lt,Ge|0;if(B=n[2786]|0,B>>>0>G>>>0)return ct=B-G|0,n[2786]=ct,Ge=n[2789]|0,He=Ge+G|0,n[2789]=He,n[He+4>>2]=ct|1,n[Ge+4>>2]=G|3,Ge=Ge+8|0,I=Lt,Ge|0;if(n[2901]|0?o=n[2903]|0:(n[2903]=4096,n[2902]=4096,n[2904]=-1,n[2905]=-1,n[2906]=0,n[2894]=0,o=ae&-16^1431655768,n[ae>>2]=o,n[2901]=o,o=4096),k=G+48|0,T=G+47|0,m=o+T|0,d=0-o|0,_=m&d,_>>>0<=G>>>0||(o=n[2893]|0,o|0&&(M=n[2891]|0,ae=M+_|0,ae>>>0<=M>>>0|ae>>>0>o>>>0)))return Ge=0,I=Lt,Ge|0;e:do if(n[2894]&4)l=0,He=133;else{u=n[2789]|0;t:do if(u){for(A=11580;o=n[A>>2]|0,!(o>>>0<=u>>>0&&(Qe=A+4|0,(o+(n[Qe>>2]|0)|0)>>>0>u>>>0));)if(o=n[A+8>>2]|0,o)A=o;else{He=118;break t}if(l=m-B&d,l>>>0<2147483647)if(o=Vh(l|0)|0,(o|0)==((n[A>>2]|0)+(n[Qe>>2]|0)|0)){if((o|0)!=-1){B=l,m=o,He=135;break e}}else A=o,He=126;else l=0}else He=118;while(!1);do if((He|0)==118)if(u=Vh(0)|0,(u|0)!=-1&&(l=u,We=n[2902]|0,Le=We+-1|0,l=(Le&l|0?(Le+l&0-We)-l|0:0)+_|0,We=n[2891]|0,Le=l+We|0,l>>>0>G>>>0&l>>>0<2147483647)){if(Qe=n[2893]|0,Qe|0&&Le>>>0<=We>>>0|Le>>>0>Qe>>>0){l=0;break}if(o=Vh(l|0)|0,(o|0)==(u|0)){B=l,m=u,He=135;break e}else A=o,He=126}else l=0;while(!1);do if((He|0)==126){if(u=0-l|0,!(k>>>0>l>>>0&(l>>>0<2147483647&(A|0)!=-1)))if((A|0)==-1){l=0;break}else{B=l,m=A,He=135;break e}if(o=n[2903]|0,o=T-l+o&0-o,o>>>0>=2147483647){B=l,m=A,He=135;break e}if((Vh(o|0)|0)==-1){Vh(u|0)|0,l=0;break}else{B=o+l|0,m=A,He=135;break e}}while(!1);n[2894]=n[2894]|4,He=133}while(!1);if((He|0)==133&&_>>>0<2147483647&&(ct=Vh(_|0)|0,Qe=Vh(0)|0,tt=Qe-ct|0,Ze=tt>>>0>(G+40|0)>>>0,!((ct|0)==-1|Ze^1|ct>>>0>>0&((ct|0)!=-1&(Qe|0)!=-1)^1))&&(B=Ze?tt:l,m=ct,He=135),(He|0)==135){l=(n[2891]|0)+B|0,n[2891]=l,l>>>0>(n[2892]|0)>>>0&&(n[2892]=l),T=n[2789]|0;do if(T){for(l=11580;;){if(o=n[l>>2]|0,u=l+4|0,A=n[u>>2]|0,(m|0)==(o+A|0)){He=145;break}if(d=n[l+8>>2]|0,d)l=d;else break}if((He|0)==145&&!(n[l+12>>2]&8|0)&&T>>>0>>0&T>>>0>=o>>>0){n[u>>2]=A+B,Ge=T+8|0,Ge=Ge&7|0?0-Ge&7:0,He=T+Ge|0,Ge=(n[2786]|0)+(B-Ge)|0,n[2789]=He,n[2786]=Ge,n[He+4>>2]=Ge|1,n[He+Ge+4>>2]=40,n[2790]=n[2905];break}for(m>>>0<(n[2787]|0)>>>0&&(n[2787]=m),u=m+B|0,l=11580;;){if((n[l>>2]|0)==(u|0)){He=153;break}if(o=n[l+8>>2]|0,o)l=o;else break}if((He|0)==153&&!(n[l+12>>2]&8|0)){n[l>>2]=m,M=l+4|0,n[M>>2]=(n[M>>2]|0)+B,M=m+8|0,M=m+(M&7|0?0-M&7:0)|0,l=u+8|0,l=u+(l&7|0?0-l&7:0)|0,_=M+G|0,k=l-M-G|0,n[M+4>>2]=G|3;do if((l|0)!=(T|0)){if((l|0)==(n[2788]|0)){Ge=(n[2785]|0)+k|0,n[2785]=Ge,n[2788]=_,n[_+4>>2]=Ge|1,n[_+Ge>>2]=Ge;break}if(o=n[l+4>>2]|0,(o&3|0)==1){B=o&-8,A=o>>>3;e:do if(o>>>0<256)if(o=n[l+8>>2]|0,u=n[l+12>>2]|0,(u|0)==(o|0)){n[2783]=n[2783]&~(1<>2]=u,n[u+8>>2]=o;break}else{m=n[l+24>>2]|0,o=n[l+12>>2]|0;do if((o|0)==(l|0)){if(A=l+16|0,u=A+4|0,o=n[u>>2]|0,!o)if(o=n[A>>2]|0,o)u=A;else{o=0;break}for(;;){if(A=o+20|0,d=n[A>>2]|0,d|0){o=d,u=A;continue}if(A=o+16|0,d=n[A>>2]|0,d)o=d,u=A;else break}n[u>>2]=0}else Ge=n[l+8>>2]|0,n[Ge+12>>2]=o,n[o+8>>2]=Ge;while(!1);if(!m)break;u=n[l+28>>2]|0,A=11436+(u<<2)|0;do if((l|0)!=(n[A>>2]|0)){if(n[m+16+(((n[m+16>>2]|0)!=(l|0)&1)<<2)>>2]=o,!o)break e}else{if(n[A>>2]=o,o|0)break;n[2784]=n[2784]&~(1<>2]=m,u=l+16|0,A=n[u>>2]|0,A|0&&(n[o+16>>2]=A,n[A+24>>2]=o),u=n[u+4>>2]|0,!u)break;n[o+20>>2]=u,n[u+24>>2]=o}while(!1);l=l+B|0,d=B+k|0}else d=k;if(l=l+4|0,n[l>>2]=n[l>>2]&-2,n[_+4>>2]=d|1,n[_+d>>2]=d,l=d>>>3,d>>>0<256){u=11172+(l<<1<<2)|0,o=n[2783]|0,l=1<>2]|0):(n[2783]=o|l,l=u,o=u+8|0),n[o>>2]=_,n[l+12>>2]=_,n[_+8>>2]=l,n[_+12>>2]=u;break}l=d>>>8;do if(!l)l=0;else{if(d>>>0>16777215){l=31;break}He=(l+1048320|0)>>>16&8,Ge=l<>>16&4,Ge=Ge<>>16&2,l=14-(ct|He|l)+(Ge<>>15)|0,l=d>>>(l+7|0)&1|l<<1}while(!1);if(A=11436+(l<<2)|0,n[_+28>>2]=l,o=_+16|0,n[o+4>>2]=0,n[o>>2]=0,o=n[2784]|0,u=1<>2]=_,n[_+24>>2]=A,n[_+12>>2]=_,n[_+8>>2]=_;break}for(o=d<<((l|0)==31?0:25-(l>>>1)|0),u=n[A>>2]|0;;){if((n[u+4>>2]&-8|0)==(d|0)){He=194;break}if(A=u+16+(o>>>31<<2)|0,l=n[A>>2]|0,l)o=o<<1,u=l;else{He=193;break}}if((He|0)==193){n[A>>2]=_,n[_+24>>2]=u,n[_+12>>2]=_,n[_+8>>2]=_;break}else if((He|0)==194){He=u+8|0,Ge=n[He>>2]|0,n[Ge+12>>2]=_,n[He>>2]=_,n[_+8>>2]=Ge,n[_+12>>2]=u,n[_+24>>2]=0;break}}else Ge=(n[2786]|0)+k|0,n[2786]=Ge,n[2789]=_,n[_+4>>2]=Ge|1;while(!1);return Ge=M+8|0,I=Lt,Ge|0}for(l=11580;o=n[l>>2]|0,!(o>>>0<=T>>>0&&(Ge=o+(n[l+4>>2]|0)|0,Ge>>>0>T>>>0));)l=n[l+8>>2]|0;d=Ge+-47|0,o=d+8|0,o=d+(o&7|0?0-o&7:0)|0,d=T+16|0,o=o>>>0>>0?T:o,l=o+8|0,u=m+8|0,u=u&7|0?0-u&7:0,He=m+u|0,u=B+-40-u|0,n[2789]=He,n[2786]=u,n[He+4>>2]=u|1,n[He+u+4>>2]=40,n[2790]=n[2905],u=o+4|0,n[u>>2]=27,n[l>>2]=n[2895],n[l+4>>2]=n[2896],n[l+8>>2]=n[2897],n[l+12>>2]=n[2898],n[2895]=m,n[2896]=B,n[2898]=0,n[2897]=l,l=o+24|0;do He=l,l=l+4|0,n[l>>2]=7;while((He+8|0)>>>0>>0);if((o|0)!=(T|0)){if(m=o-T|0,n[u>>2]=n[u>>2]&-2,n[T+4>>2]=m|1,n[o>>2]=m,l=m>>>3,m>>>0<256){u=11172+(l<<1<<2)|0,o=n[2783]|0,l=1<>2]|0):(n[2783]=o|l,l=u,o=u+8|0),n[o>>2]=T,n[l+12>>2]=T,n[T+8>>2]=l,n[T+12>>2]=u;break}if(l=m>>>8,l?m>>>0>16777215?u=31:(He=(l+1048320|0)>>>16&8,Ge=l<>>16&4,Ge=Ge<>>16&2,u=14-(ct|He|u)+(Ge<>>15)|0,u=m>>>(u+7|0)&1|u<<1):u=0,A=11436+(u<<2)|0,n[T+28>>2]=u,n[T+20>>2]=0,n[d>>2]=0,l=n[2784]|0,o=1<>2]=T,n[T+24>>2]=A,n[T+12>>2]=T,n[T+8>>2]=T;break}for(o=m<<((u|0)==31?0:25-(u>>>1)|0),u=n[A>>2]|0;;){if((n[u+4>>2]&-8|0)==(m|0)){He=216;break}if(A=u+16+(o>>>31<<2)|0,l=n[A>>2]|0,l)o=o<<1,u=l;else{He=215;break}}if((He|0)==215){n[A>>2]=T,n[T+24>>2]=u,n[T+12>>2]=T,n[T+8>>2]=T;break}else if((He|0)==216){He=u+8|0,Ge=n[He>>2]|0,n[Ge+12>>2]=T,n[He>>2]=T,n[T+8>>2]=Ge,n[T+12>>2]=u,n[T+24>>2]=0;break}}}else{Ge=n[2787]|0,(Ge|0)==0|m>>>0>>0&&(n[2787]=m),n[2895]=m,n[2896]=B,n[2898]=0,n[2792]=n[2901],n[2791]=-1,l=0;do Ge=11172+(l<<1<<2)|0,n[Ge+12>>2]=Ge,n[Ge+8>>2]=Ge,l=l+1|0;while((l|0)!=32);Ge=m+8|0,Ge=Ge&7|0?0-Ge&7:0,He=m+Ge|0,Ge=B+-40-Ge|0,n[2789]=He,n[2786]=Ge,n[He+4>>2]=Ge|1,n[He+Ge+4>>2]=40,n[2790]=n[2905]}while(!1);if(l=n[2786]|0,l>>>0>G>>>0)return ct=l-G|0,n[2786]=ct,Ge=n[2789]|0,He=Ge+G|0,n[2789]=He,n[He+4>>2]=ct|1,n[Ge+4>>2]=G|3,Ge=Ge+8|0,I=Lt,Ge|0}return n[(Zy()|0)>>2]=12,Ge=0,I=Lt,Ge|0}function tx(o){o=o|0;var l=0,u=0,A=0,d=0,m=0,B=0,k=0,T=0;if(o){u=o+-8|0,d=n[2787]|0,o=n[o+-4>>2]|0,l=o&-8,T=u+l|0;do if(o&1)k=u,B=u;else{if(A=n[u>>2]|0,!(o&3)||(B=u+(0-A)|0,m=A+l|0,B>>>0>>0))return;if((B|0)==(n[2788]|0)){if(o=T+4|0,l=n[o>>2]|0,(l&3|0)!=3){k=B,l=m;break}n[2785]=m,n[o>>2]=l&-2,n[B+4>>2]=m|1,n[B+m>>2]=m;return}if(u=A>>>3,A>>>0<256)if(o=n[B+8>>2]|0,l=n[B+12>>2]|0,(l|0)==(o|0)){n[2783]=n[2783]&~(1<>2]=l,n[l+8>>2]=o,k=B,l=m;break}d=n[B+24>>2]|0,o=n[B+12>>2]|0;do if((o|0)==(B|0)){if(u=B+16|0,l=u+4|0,o=n[l>>2]|0,!o)if(o=n[u>>2]|0,o)l=u;else{o=0;break}for(;;){if(u=o+20|0,A=n[u>>2]|0,A|0){o=A,l=u;continue}if(u=o+16|0,A=n[u>>2]|0,A)o=A,l=u;else break}n[l>>2]=0}else k=n[B+8>>2]|0,n[k+12>>2]=o,n[o+8>>2]=k;while(!1);if(d){if(l=n[B+28>>2]|0,u=11436+(l<<2)|0,(B|0)==(n[u>>2]|0)){if(n[u>>2]=o,!o){n[2784]=n[2784]&~(1<>2]|0)!=(B|0)&1)<<2)>>2]=o,!o){k=B,l=m;break}n[o+24>>2]=d,l=B+16|0,u=n[l>>2]|0,u|0&&(n[o+16>>2]=u,n[u+24>>2]=o),l=n[l+4>>2]|0,l?(n[o+20>>2]=l,n[l+24>>2]=o,k=B,l=m):(k=B,l=m)}else k=B,l=m}while(!1);if(!(B>>>0>=T>>>0)&&(o=T+4|0,A=n[o>>2]|0,!!(A&1))){if(A&2)n[o>>2]=A&-2,n[k+4>>2]=l|1,n[B+l>>2]=l,d=l;else{if(o=n[2788]|0,(T|0)==(n[2789]|0)){if(T=(n[2786]|0)+l|0,n[2786]=T,n[2789]=k,n[k+4>>2]=T|1,(k|0)!=(o|0))return;n[2788]=0,n[2785]=0;return}if((T|0)==(o|0)){T=(n[2785]|0)+l|0,n[2785]=T,n[2788]=B,n[k+4>>2]=T|1,n[B+T>>2]=T;return}d=(A&-8)+l|0,u=A>>>3;do if(A>>>0<256)if(l=n[T+8>>2]|0,o=n[T+12>>2]|0,(o|0)==(l|0)){n[2783]=n[2783]&~(1<>2]=o,n[o+8>>2]=l;break}else{m=n[T+24>>2]|0,o=n[T+12>>2]|0;do if((o|0)==(T|0)){if(u=T+16|0,l=u+4|0,o=n[l>>2]|0,!o)if(o=n[u>>2]|0,o)l=u;else{u=0;break}for(;;){if(u=o+20|0,A=n[u>>2]|0,A|0){o=A,l=u;continue}if(u=o+16|0,A=n[u>>2]|0,A)o=A,l=u;else break}n[l>>2]=0,u=o}else u=n[T+8>>2]|0,n[u+12>>2]=o,n[o+8>>2]=u,u=o;while(!1);if(m|0){if(o=n[T+28>>2]|0,l=11436+(o<<2)|0,(T|0)==(n[l>>2]|0)){if(n[l>>2]=u,!u){n[2784]=n[2784]&~(1<>2]|0)!=(T|0)&1)<<2)>>2]=u,!u)break;n[u+24>>2]=m,o=T+16|0,l=n[o>>2]|0,l|0&&(n[u+16>>2]=l,n[l+24>>2]=u),o=n[o+4>>2]|0,o|0&&(n[u+20>>2]=o,n[o+24>>2]=u)}}while(!1);if(n[k+4>>2]=d|1,n[B+d>>2]=d,(k|0)==(n[2788]|0)){n[2785]=d;return}}if(o=d>>>3,d>>>0<256){u=11172+(o<<1<<2)|0,l=n[2783]|0,o=1<>2]|0):(n[2783]=l|o,o=u,l=u+8|0),n[l>>2]=k,n[o+12>>2]=k,n[k+8>>2]=o,n[k+12>>2]=u;return}o=d>>>8,o?d>>>0>16777215?o=31:(B=(o+1048320|0)>>>16&8,T=o<>>16&4,T=T<>>16&2,o=14-(m|B|o)+(T<>>15)|0,o=d>>>(o+7|0)&1|o<<1):o=0,A=11436+(o<<2)|0,n[k+28>>2]=o,n[k+20>>2]=0,n[k+16>>2]=0,l=n[2784]|0,u=1<>>1)|0),u=n[A>>2]|0;;){if((n[u+4>>2]&-8|0)==(d|0)){o=73;break}if(A=u+16+(l>>>31<<2)|0,o=n[A>>2]|0,o)l=l<<1,u=o;else{o=72;break}}if((o|0)==72){n[A>>2]=k,n[k+24>>2]=u,n[k+12>>2]=k,n[k+8>>2]=k;break}else if((o|0)==73){B=u+8|0,T=n[B>>2]|0,n[T+12>>2]=k,n[B>>2]=k,n[k+8>>2]=T,n[k+12>>2]=u,n[k+24>>2]=0;break}}else n[2784]=l|u,n[A>>2]=k,n[k+24>>2]=A,n[k+12>>2]=k,n[k+8>>2]=k;while(!1);if(T=(n[2791]|0)+-1|0,n[2791]=T,!T)o=11588;else return;for(;o=n[o>>2]|0,o;)o=o+8|0;n[2791]=-1}}}function LYe(){return 11628}function MYe(o){o=o|0;var l=0,u=0;return l=I,I=I+16|0,u=l,n[u>>2]=HYe(n[o+60>>2]|0)|0,o=rx(hu(6,u|0)|0)|0,I=l,o|0}function t$(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0,ae=0,We=0;G=I,I=I+48|0,_=G+16|0,m=G,d=G+32|0,k=o+28|0,A=n[k>>2]|0,n[d>>2]=A,T=o+20|0,A=(n[T>>2]|0)-A|0,n[d+4>>2]=A,n[d+8>>2]=l,n[d+12>>2]=u,A=A+u|0,B=o+60|0,n[m>>2]=n[B>>2],n[m+4>>2]=d,n[m+8>>2]=2,m=rx(Ma(146,m|0)|0)|0;e:do if((A|0)!=(m|0)){for(l=2;!((m|0)<0);)if(A=A-m|0,We=n[d+4>>2]|0,ae=m>>>0>We>>>0,d=ae?d+8|0:d,l=(ae<<31>>31)+l|0,We=m-(ae?We:0)|0,n[d>>2]=(n[d>>2]|0)+We,ae=d+4|0,n[ae>>2]=(n[ae>>2]|0)-We,n[_>>2]=n[B>>2],n[_+4>>2]=d,n[_+8>>2]=l,m=rx(Ma(146,_|0)|0)|0,(A|0)==(m|0)){M=3;break e}n[o+16>>2]=0,n[k>>2]=0,n[T>>2]=0,n[o>>2]=n[o>>2]|32,(l|0)==2?u=0:u=u-(n[d+4>>2]|0)|0}else M=3;while(!1);return(M|0)==3&&(We=n[o+44>>2]|0,n[o+16>>2]=We+(n[o+48>>2]|0),n[k>>2]=We,n[T>>2]=We),I=G,u|0}function _Ye(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;return d=I,I=I+32|0,m=d,A=d+20|0,n[m>>2]=n[o+60>>2],n[m+4>>2]=0,n[m+8>>2]=l,n[m+12>>2]=A,n[m+16>>2]=u,(rx(La(140,m|0)|0)|0)<0?(n[A>>2]=-1,o=-1):o=n[A>>2]|0,I=d,o|0}function rx(o){return o=o|0,o>>>0>4294963200&&(n[(Zy()|0)>>2]=0-o,o=-1),o|0}function Zy(){return(UYe()|0)+64|0}function UYe(){return m_()|0}function m_(){return 2084}function HYe(o){return o=o|0,o|0}function jYe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0;return d=I,I=I+32|0,A=d,n[o+36>>2]=1,!(n[o>>2]&64|0)&&(n[A>>2]=n[o+60>>2],n[A+4>>2]=21523,n[A+8>>2]=d+16,io(54,A|0)|0)&&(s[o+75>>0]=-1),A=t$(o,l,u)|0,I=d,A|0}function r$(o,l){o=o|0,l=l|0;var u=0,A=0;if(u=s[o>>0]|0,A=s[l>>0]|0,!(u<<24>>24)||u<<24>>24!=A<<24>>24)o=A;else{do o=o+1|0,l=l+1|0,u=s[o>>0]|0,A=s[l>>0]|0;while(!(!(u<<24>>24)||u<<24>>24!=A<<24>>24));o=A}return(u&255)-(o&255)|0}function qYe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0;e:do if(!u)o=0;else{for(;A=s[o>>0]|0,d=s[l>>0]|0,A<<24>>24==d<<24>>24;)if(u=u+-1|0,u)o=o+1|0,l=l+1|0;else{o=0;break e}o=(A&255)-(d&255)|0}while(!1);return o|0}function n$(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0,ae=0,We=0,Le=0,Qe=0;Qe=I,I=I+224|0,M=Qe+120|0,G=Qe+80|0,We=Qe,Le=Qe+136|0,A=G,d=A+40|0;do n[A>>2]=0,A=A+4|0;while((A|0)<(d|0));return n[M>>2]=n[u>>2],(y_(0,l,M,We,G)|0)<0?u=-1:((n[o+76>>2]|0)>-1?ae=GYe(o)|0:ae=0,u=n[o>>2]|0,_=u&32,(s[o+74>>0]|0)<1&&(n[o>>2]=u&-33),A=o+48|0,n[A>>2]|0?u=y_(o,l,M,We,G)|0:(d=o+44|0,m=n[d>>2]|0,n[d>>2]=Le,B=o+28|0,n[B>>2]=Le,k=o+20|0,n[k>>2]=Le,n[A>>2]=80,T=o+16|0,n[T>>2]=Le+80,u=y_(o,l,M,We,G)|0,m&&(ox[n[o+36>>2]&7](o,0,0)|0,u=n[k>>2]|0?u:-1,n[d>>2]=m,n[A>>2]=0,n[T>>2]=0,n[B>>2]=0,n[k>>2]=0)),A=n[o>>2]|0,n[o>>2]=A|_,ae|0&&WYe(o),u=A&32|0?-1:u),I=Qe,u|0}function y_(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0;var m=0,B=0,k=0,T=0,_=0,M=0,G=0,ae=0,We=0,Le=0,Qe=0,tt=0,Ze=0,ct=0,He=0,Ge=0,Lt=0,qr=0,fr=0,$t=0,Tr=0,Hr=0,cr=0;cr=I,I=I+64|0,fr=cr+16|0,$t=cr,Lt=cr+24|0,Tr=cr+8|0,Hr=cr+20|0,n[fr>>2]=l,ct=(o|0)!=0,He=Lt+40|0,Ge=He,Lt=Lt+39|0,qr=Tr+4|0,B=0,m=0,M=0;e:for(;;){do if((m|0)>-1)if((B|0)>(2147483647-m|0)){n[(Zy()|0)>>2]=75,m=-1;break}else{m=B+m|0;break}while(!1);if(B=s[l>>0]|0,B<<24>>24)k=l;else{Ze=87;break}t:for(;;){switch(B<<24>>24){case 37:{B=k,Ze=9;break t}case 0:{B=k;break t}default:}tt=k+1|0,n[fr>>2]=tt,B=s[tt>>0]|0,k=tt}t:do if((Ze|0)==9)for(;;){if(Ze=0,(s[k+1>>0]|0)!=37)break t;if(B=B+1|0,k=k+2|0,n[fr>>2]=k,(s[k>>0]|0)==37)Ze=9;else break}while(!1);if(B=B-l|0,ct&&Ss(o,l,B),B|0){l=k;continue}T=k+1|0,B=(s[T>>0]|0)+-48|0,B>>>0<10?(tt=(s[k+2>>0]|0)==36,Qe=tt?B:-1,M=tt?1:M,T=tt?k+3|0:T):Qe=-1,n[fr>>2]=T,B=s[T>>0]|0,k=(B<<24>>24)+-32|0;t:do if(k>>>0<32)for(_=0,G=B;;){if(B=1<>2]=T,B=s[T>>0]|0,k=(B<<24>>24)+-32|0,k>>>0>=32)break;G=B}else _=0;while(!1);if(B<<24>>24==42){if(k=T+1|0,B=(s[k>>0]|0)+-48|0,B>>>0<10&&(s[T+2>>0]|0)==36)n[d+(B<<2)>>2]=10,B=n[A+((s[k>>0]|0)+-48<<3)>>2]|0,M=1,T=T+3|0;else{if(M|0){m=-1;break}ct?(M=(n[u>>2]|0)+3&-4,B=n[M>>2]|0,n[u>>2]=M+4,M=0,T=k):(B=0,M=0,T=k)}n[fr>>2]=T,tt=(B|0)<0,B=tt?0-B|0:B,_=tt?_|8192:_}else{if(B=i$(fr)|0,(B|0)<0){m=-1;break}T=n[fr>>2]|0}do if((s[T>>0]|0)==46){if((s[T+1>>0]|0)!=42){n[fr>>2]=T+1,k=i$(fr)|0,T=n[fr>>2]|0;break}if(G=T+2|0,k=(s[G>>0]|0)+-48|0,k>>>0<10&&(s[T+3>>0]|0)==36){n[d+(k<<2)>>2]=10,k=n[A+((s[G>>0]|0)+-48<<3)>>2]|0,T=T+4|0,n[fr>>2]=T;break}if(M|0){m=-1;break e}ct?(tt=(n[u>>2]|0)+3&-4,k=n[tt>>2]|0,n[u>>2]=tt+4):k=0,n[fr>>2]=G,T=G}else k=-1;while(!1);for(Le=0;;){if(((s[T>>0]|0)+-65|0)>>>0>57){m=-1;break e}if(tt=T+1|0,n[fr>>2]=tt,G=s[(s[T>>0]|0)+-65+(5178+(Le*58|0))>>0]|0,ae=G&255,(ae+-1|0)>>>0<8)Le=ae,T=tt;else break}if(!(G<<24>>24)){m=-1;break}We=(Qe|0)>-1;do if(G<<24>>24==19)if(We){m=-1;break e}else Ze=49;else{if(We){n[d+(Qe<<2)>>2]=ae,We=A+(Qe<<3)|0,Qe=n[We+4>>2]|0,Ze=$t,n[Ze>>2]=n[We>>2],n[Ze+4>>2]=Qe,Ze=49;break}if(!ct){m=0;break e}s$($t,ae,u)}while(!1);if((Ze|0)==49&&(Ze=0,!ct)){B=0,l=tt;continue}T=s[T>>0]|0,T=(Le|0)!=0&(T&15|0)==3?T&-33:T,We=_&-65537,Qe=_&8192|0?We:_;t:do switch(T|0){case 110:switch((Le&255)<<24>>24){case 0:{n[n[$t>>2]>>2]=m,B=0,l=tt;continue e}case 1:{n[n[$t>>2]>>2]=m,B=0,l=tt;continue e}case 2:{B=n[$t>>2]|0,n[B>>2]=m,n[B+4>>2]=((m|0)<0)<<31>>31,B=0,l=tt;continue e}case 3:{a[n[$t>>2]>>1]=m,B=0,l=tt;continue e}case 4:{s[n[$t>>2]>>0]=m,B=0,l=tt;continue e}case 6:{n[n[$t>>2]>>2]=m,B=0,l=tt;continue e}case 7:{B=n[$t>>2]|0,n[B>>2]=m,n[B+4>>2]=((m|0)<0)<<31>>31,B=0,l=tt;continue e}default:{B=0,l=tt;continue e}}case 112:{T=120,k=k>>>0>8?k:8,l=Qe|8,Ze=61;break}case 88:case 120:{l=Qe,Ze=61;break}case 111:{T=$t,l=n[T>>2]|0,T=n[T+4>>2]|0,ae=VYe(l,T,He)|0,We=Ge-ae|0,_=0,G=5642,k=(Qe&8|0)==0|(k|0)>(We|0)?k:We+1|0,We=Qe,Ze=67;break}case 105:case 100:if(T=$t,l=n[T>>2]|0,T=n[T+4>>2]|0,(T|0)<0){l=nx(0,0,l|0,T|0)|0,T=Ee,_=$t,n[_>>2]=l,n[_+4>>2]=T,_=1,G=5642,Ze=66;break t}else{_=(Qe&2049|0)!=0&1,G=Qe&2048|0?5643:Qe&1|0?5644:5642,Ze=66;break t}case 117:{T=$t,_=0,G=5642,l=n[T>>2]|0,T=n[T+4>>2]|0,Ze=66;break}case 99:{s[Lt>>0]=n[$t>>2],l=Lt,_=0,G=5642,ae=He,T=1,k=We;break}case 109:{T=KYe(n[(Zy()|0)>>2]|0)|0,Ze=71;break}case 115:{T=n[$t>>2]|0,T=T|0?T:5652,Ze=71;break}case 67:{n[Tr>>2]=n[$t>>2],n[qr>>2]=0,n[$t>>2]=Tr,ae=-1,T=Tr,Ze=75;break}case 83:{l=n[$t>>2]|0,k?(ae=k,T=l,Ze=75):(Ms(o,32,B,0,Qe),l=0,Ze=84);break}case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:{B=zYe(o,+E[$t>>3],B,k,Qe,T)|0,l=tt;continue e}default:_=0,G=5642,ae=He,T=k,k=Qe}while(!1);t:do if((Ze|0)==61)Qe=$t,Le=n[Qe>>2]|0,Qe=n[Qe+4>>2]|0,ae=YYe(Le,Qe,He,T&32)|0,G=(l&8|0)==0|(Le|0)==0&(Qe|0)==0,_=G?0:2,G=G?5642:5642+(T>>4)|0,We=l,l=Le,T=Qe,Ze=67;else if((Ze|0)==66)ae=Xy(l,T,He)|0,We=Qe,Ze=67;else if((Ze|0)==71)Ze=0,Qe=JYe(T,0,k)|0,Le=(Qe|0)==0,l=T,_=0,G=5642,ae=Le?T+k|0:Qe,T=Le?k:Qe-T|0,k=We;else if((Ze|0)==75){for(Ze=0,G=T,l=0,k=0;_=n[G>>2]|0,!(!_||(k=o$(Hr,_)|0,(k|0)<0|k>>>0>(ae-l|0)>>>0));)if(l=k+l|0,ae>>>0>l>>>0)G=G+4|0;else break;if((k|0)<0){m=-1;break e}if(Ms(o,32,B,l,Qe),!l)l=0,Ze=84;else for(_=0;;){if(k=n[T>>2]|0,!k){Ze=84;break t}if(k=o$(Hr,k)|0,_=k+_|0,(_|0)>(l|0)){Ze=84;break t}if(Ss(o,Hr,k),_>>>0>=l>>>0){Ze=84;break}else T=T+4|0}}while(!1);if((Ze|0)==67)Ze=0,T=(l|0)!=0|(T|0)!=0,Qe=(k|0)!=0|T,T=((T^1)&1)+(Ge-ae)|0,l=Qe?ae:He,ae=He,T=Qe?(k|0)>(T|0)?k:T:k,k=(k|0)>-1?We&-65537:We;else if((Ze|0)==84){Ze=0,Ms(o,32,B,l,Qe^8192),B=(B|0)>(l|0)?B:l,l=tt;continue}Le=ae-l|0,We=(T|0)<(Le|0)?Le:T,Qe=We+_|0,B=(B|0)<(Qe|0)?Qe:B,Ms(o,32,B,Qe,k),Ss(o,G,_),Ms(o,48,B,Qe,k^65536),Ms(o,48,We,Le,0),Ss(o,l,Le),Ms(o,32,B,Qe,k^8192),l=tt}e:do if((Ze|0)==87&&!o)if(!M)m=0;else{for(m=1;l=n[d+(m<<2)>>2]|0,!!l;)if(s$(A+(m<<3)|0,l,u),m=m+1|0,(m|0)>=10){m=1;break e}for(;;){if(n[d+(m<<2)>>2]|0){m=-1;break e}if(m=m+1|0,(m|0)>=10){m=1;break}}}while(!1);return I=cr,m|0}function GYe(o){return o=o|0,0}function WYe(o){o=o|0}function Ss(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]&32||sVe(l,u,o)|0}function i$(o){o=o|0;var l=0,u=0,A=0;if(u=n[o>>2]|0,A=(s[u>>0]|0)+-48|0,A>>>0<10){l=0;do l=A+(l*10|0)|0,u=u+1|0,n[o>>2]=u,A=(s[u>>0]|0)+-48|0;while(A>>>0<10)}else l=0;return l|0}function s$(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;e:do if(l>>>0<=20)do switch(l|0){case 9:{A=(n[u>>2]|0)+3&-4,l=n[A>>2]|0,n[u>>2]=A+4,n[o>>2]=l;break e}case 10:{A=(n[u>>2]|0)+3&-4,l=n[A>>2]|0,n[u>>2]=A+4,A=o,n[A>>2]=l,n[A+4>>2]=((l|0)<0)<<31>>31;break e}case 11:{A=(n[u>>2]|0)+3&-4,l=n[A>>2]|0,n[u>>2]=A+4,A=o,n[A>>2]=l,n[A+4>>2]=0;break e}case 12:{A=(n[u>>2]|0)+7&-8,l=A,d=n[l>>2]|0,l=n[l+4>>2]|0,n[u>>2]=A+8,A=o,n[A>>2]=d,n[A+4>>2]=l;break e}case 13:{d=(n[u>>2]|0)+3&-4,A=n[d>>2]|0,n[u>>2]=d+4,A=(A&65535)<<16>>16,d=o,n[d>>2]=A,n[d+4>>2]=((A|0)<0)<<31>>31;break e}case 14:{d=(n[u>>2]|0)+3&-4,A=n[d>>2]|0,n[u>>2]=d+4,d=o,n[d>>2]=A&65535,n[d+4>>2]=0;break e}case 15:{d=(n[u>>2]|0)+3&-4,A=n[d>>2]|0,n[u>>2]=d+4,A=(A&255)<<24>>24,d=o,n[d>>2]=A,n[d+4>>2]=((A|0)<0)<<31>>31;break e}case 16:{d=(n[u>>2]|0)+3&-4,A=n[d>>2]|0,n[u>>2]=d+4,d=o,n[d>>2]=A&255,n[d+4>>2]=0;break e}case 17:{d=(n[u>>2]|0)+7&-8,m=+E[d>>3],n[u>>2]=d+8,E[o>>3]=m;break e}case 18:{d=(n[u>>2]|0)+7&-8,m=+E[d>>3],n[u>>2]=d+8,E[o>>3]=m;break e}default:break e}while(!1);while(!1)}function YYe(o,l,u,A){if(o=o|0,l=l|0,u=u|0,A=A|0,!((o|0)==0&(l|0)==0))do u=u+-1|0,s[u>>0]=c[5694+(o&15)>>0]|0|A,o=ix(o|0,l|0,4)|0,l=Ee;while(!((o|0)==0&(l|0)==0));return u|0}function VYe(o,l,u){if(o=o|0,l=l|0,u=u|0,!((o|0)==0&(l|0)==0))do u=u+-1|0,s[u>>0]=o&7|48,o=ix(o|0,l|0,3)|0,l=Ee;while(!((o|0)==0&(l|0)==0));return u|0}function Xy(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;if(l>>>0>0|(l|0)==0&o>>>0>4294967295){for(;A=w_(o|0,l|0,10,0)|0,u=u+-1|0,s[u>>0]=A&255|48,A=o,o=C_(o|0,l|0,10,0)|0,l>>>0>9|(l|0)==9&A>>>0>4294967295;)l=Ee;l=o}else l=o;if(l)for(;u=u+-1|0,s[u>>0]=(l>>>0)%10|0|48,!(l>>>0<10);)l=(l>>>0)/10|0;return u|0}function KYe(o){return o=o|0,tVe(o,n[(eVe()|0)+188>>2]|0)|0}function JYe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;m=l&255,A=(u|0)!=0;e:do if(A&(o&3|0)!=0)for(d=l&255;;){if((s[o>>0]|0)==d<<24>>24){B=6;break e}if(o=o+1|0,u=u+-1|0,A=(u|0)!=0,!(A&(o&3|0)!=0)){B=5;break}}else B=5;while(!1);(B|0)==5&&(A?B=6:u=0);e:do if((B|0)==6&&(d=l&255,(s[o>>0]|0)!=d<<24>>24)){A=_e(m,16843009)|0;t:do if(u>>>0>3){for(;m=n[o>>2]^A,!((m&-2139062144^-2139062144)&m+-16843009|0);)if(o=o+4|0,u=u+-4|0,u>>>0<=3){B=11;break t}}else B=11;while(!1);if((B|0)==11&&!u){u=0;break}for(;;){if((s[o>>0]|0)==d<<24>>24)break e;if(o=o+1|0,u=u+-1|0,!u){u=0;break}}}while(!1);return(u|0?o:0)|0}function Ms(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0;var m=0,B=0;if(B=I,I=I+256|0,m=B,(u|0)>(A|0)&(d&73728|0)==0){if(d=u-A|0,eE(m|0,l|0,(d>>>0<256?d:256)|0)|0,d>>>0>255){l=u-A|0;do Ss(o,m,256),d=d+-256|0;while(d>>>0>255);d=l&255}Ss(o,m,d)}I=B}function o$(o,l){return o=o|0,l=l|0,o?o=XYe(o,l,0)|0:o=0,o|0}function zYe(o,l,u,A,d,m){o=o|0,l=+l,u=u|0,A=A|0,d=d|0,m=m|0;var B=0,k=0,T=0,_=0,M=0,G=0,ae=0,We=0,Le=0,Qe=0,tt=0,Ze=0,ct=0,He=0,Ge=0,Lt=0,qr=0,fr=0,$t=0,Tr=0,Hr=0,cr=0,Hn=0;Hn=I,I=I+560|0,T=Hn+8|0,tt=Hn,cr=Hn+524|0,Hr=cr,_=Hn+512|0,n[tt>>2]=0,Tr=_+12|0,a$(l)|0,(Ee|0)<0?(l=-l,fr=1,qr=5659):(fr=(d&2049|0)!=0&1,qr=d&2048|0?5662:d&1|0?5665:5660),a$(l)|0,$t=Ee&2146435072;do if($t>>>0<2146435072|($t|0)==2146435072&!1){if(We=+ZYe(l,tt)*2,B=We!=0,B&&(n[tt>>2]=(n[tt>>2]|0)+-1),ct=m|32,(ct|0)==97){Le=m&32,ae=Le|0?qr+9|0:qr,G=fr|2,B=12-A|0;do if(A>>>0>11|(B|0)==0)l=We;else{l=8;do B=B+-1|0,l=l*16;while(B|0);if((s[ae>>0]|0)==45){l=-(l+(-We-l));break}else{l=We+l-l;break}}while(!1);k=n[tt>>2]|0,B=(k|0)<0?0-k|0:k,B=Xy(B,((B|0)<0)<<31>>31,Tr)|0,(B|0)==(Tr|0)&&(B=_+11|0,s[B>>0]=48),s[B+-1>>0]=(k>>31&2)+43,M=B+-2|0,s[M>>0]=m+15,_=(A|0)<1,T=(d&8|0)==0,B=cr;do $t=~~l,k=B+1|0,s[B>>0]=c[5694+$t>>0]|Le,l=(l-+($t|0))*16,(k-Hr|0)==1&&!(T&(_&l==0))?(s[k>>0]=46,B=B+2|0):B=k;while(l!=0);$t=B-Hr|0,Hr=Tr-M|0,Tr=(A|0)!=0&($t+-2|0)<(A|0)?A+2|0:$t,B=Hr+G+Tr|0,Ms(o,32,u,B,d),Ss(o,ae,G),Ms(o,48,u,B,d^65536),Ss(o,cr,$t),Ms(o,48,Tr-$t|0,0,0),Ss(o,M,Hr),Ms(o,32,u,B,d^8192);break}k=(A|0)<0?6:A,B?(B=(n[tt>>2]|0)+-28|0,n[tt>>2]=B,l=We*268435456):(l=We,B=n[tt>>2]|0),$t=(B|0)<0?T:T+288|0,T=$t;do Ge=~~l>>>0,n[T>>2]=Ge,T=T+4|0,l=(l-+(Ge>>>0))*1e9;while(l!=0);if((B|0)>0)for(_=$t,G=T;;){if(M=(B|0)<29?B:29,B=G+-4|0,B>>>0>=_>>>0){T=0;do He=p$(n[B>>2]|0,0,M|0)|0,He=I_(He|0,Ee|0,T|0,0)|0,Ge=Ee,Ze=w_(He|0,Ge|0,1e9,0)|0,n[B>>2]=Ze,T=C_(He|0,Ge|0,1e9,0)|0,B=B+-4|0;while(B>>>0>=_>>>0);T&&(_=_+-4|0,n[_>>2]=T)}for(T=G;!(T>>>0<=_>>>0);)if(B=T+-4|0,!(n[B>>2]|0))T=B;else break;if(B=(n[tt>>2]|0)-M|0,n[tt>>2]=B,(B|0)>0)G=T;else break}else _=$t;if((B|0)<0){A=((k+25|0)/9|0)+1|0,Qe=(ct|0)==102;do{if(Le=0-B|0,Le=(Le|0)<9?Le:9,_>>>0>>0){M=(1<>>Le,ae=0,B=_;do Ge=n[B>>2]|0,n[B>>2]=(Ge>>>Le)+ae,ae=_e(Ge&M,G)|0,B=B+4|0;while(B>>>0>>0);B=n[_>>2]|0?_:_+4|0,ae?(n[T>>2]=ae,_=B,B=T+4|0):(_=B,B=T)}else _=n[_>>2]|0?_:_+4|0,B=T;T=Qe?$t:_,T=(B-T>>2|0)>(A|0)?T+(A<<2)|0:B,B=(n[tt>>2]|0)+Le|0,n[tt>>2]=B}while((B|0)<0);B=_,A=T}else B=_,A=T;if(Ge=$t,B>>>0>>0){if(T=(Ge-B>>2)*9|0,M=n[B>>2]|0,M>>>0>=10){_=10;do _=_*10|0,T=T+1|0;while(M>>>0>=_>>>0)}}else T=0;if(Qe=(ct|0)==103,Ze=(k|0)!=0,_=k-((ct|0)!=102?T:0)+((Ze&Qe)<<31>>31)|0,(_|0)<(((A-Ge>>2)*9|0)+-9|0)){if(_=_+9216|0,Le=$t+4+(((_|0)/9|0)+-1024<<2)|0,_=((_|0)%9|0)+1|0,(_|0)<9){M=10;do M=M*10|0,_=_+1|0;while((_|0)!=9)}else M=10;if(G=n[Le>>2]|0,ae=(G>>>0)%(M>>>0)|0,_=(Le+4|0)==(A|0),_&(ae|0)==0)_=Le;else if(We=((G>>>0)/(M>>>0)|0)&1|0?9007199254740994:9007199254740992,He=(M|0)/2|0,l=ae>>>0>>0?.5:_&(ae|0)==(He|0)?1:1.5,fr&&(He=(s[qr>>0]|0)==45,l=He?-l:l,We=He?-We:We),_=G-ae|0,n[Le>>2]=_,We+l!=We){if(He=_+M|0,n[Le>>2]=He,He>>>0>999999999)for(T=Le;_=T+-4|0,n[T>>2]=0,_>>>0>>0&&(B=B+-4|0,n[B>>2]=0),He=(n[_>>2]|0)+1|0,n[_>>2]=He,He>>>0>999999999;)T=_;else _=Le;if(T=(Ge-B>>2)*9|0,G=n[B>>2]|0,G>>>0>=10){M=10;do M=M*10|0,T=T+1|0;while(G>>>0>=M>>>0)}}else _=Le;_=_+4|0,_=A>>>0>_>>>0?_:A,He=B}else _=A,He=B;for(ct=_;;){if(ct>>>0<=He>>>0){tt=0;break}if(B=ct+-4|0,!(n[B>>2]|0))ct=B;else{tt=1;break}}A=0-T|0;do if(Qe)if(B=((Ze^1)&1)+k|0,(B|0)>(T|0)&(T|0)>-5?(M=m+-1|0,k=B+-1-T|0):(M=m+-2|0,k=B+-1|0),B=d&8,B)Le=B;else{if(tt&&(Lt=n[ct+-4>>2]|0,(Lt|0)!=0))if((Lt>>>0)%10|0)_=0;else{_=0,B=10;do B=B*10|0,_=_+1|0;while(!((Lt>>>0)%(B>>>0)|0|0))}else _=9;if(B=((ct-Ge>>2)*9|0)+-9|0,(M|32|0)==102){Le=B-_|0,Le=(Le|0)>0?Le:0,k=(k|0)<(Le|0)?k:Le,Le=0;break}else{Le=B+T-_|0,Le=(Le|0)>0?Le:0,k=(k|0)<(Le|0)?k:Le,Le=0;break}}else M=m,Le=d&8;while(!1);if(Qe=k|Le,G=(Qe|0)!=0&1,ae=(M|32|0)==102,ae)Ze=0,B=(T|0)>0?T:0;else{if(B=(T|0)<0?A:T,B=Xy(B,((B|0)<0)<<31>>31,Tr)|0,_=Tr,(_-B|0)<2)do B=B+-1|0,s[B>>0]=48;while((_-B|0)<2);s[B+-1>>0]=(T>>31&2)+43,B=B+-2|0,s[B>>0]=M,Ze=B,B=_-B|0}if(B=fr+1+k+G+B|0,Ms(o,32,u,B,d),Ss(o,qr,fr),Ms(o,48,u,B,d^65536),ae){M=He>>>0>$t>>>0?$t:He,Le=cr+9|0,G=Le,ae=cr+8|0,_=M;do{if(T=Xy(n[_>>2]|0,0,Le)|0,(_|0)==(M|0))(T|0)==(Le|0)&&(s[ae>>0]=48,T=ae);else if(T>>>0>cr>>>0){eE(cr|0,48,T-Hr|0)|0;do T=T+-1|0;while(T>>>0>cr>>>0)}Ss(o,T,G-T|0),_=_+4|0}while(_>>>0<=$t>>>0);if(Qe|0&&Ss(o,5710,1),_>>>0>>0&(k|0)>0)for(;;){if(T=Xy(n[_>>2]|0,0,Le)|0,T>>>0>cr>>>0){eE(cr|0,48,T-Hr|0)|0;do T=T+-1|0;while(T>>>0>cr>>>0)}if(Ss(o,T,(k|0)<9?k:9),_=_+4|0,T=k+-9|0,_>>>0>>0&(k|0)>9)k=T;else{k=T;break}}Ms(o,48,k+9|0,9,0)}else{if(Qe=tt?ct:He+4|0,(k|0)>-1){tt=cr+9|0,Le=(Le|0)==0,A=tt,G=0-Hr|0,ae=cr+8|0,M=He;do{T=Xy(n[M>>2]|0,0,tt)|0,(T|0)==(tt|0)&&(s[ae>>0]=48,T=ae);do if((M|0)==(He|0)){if(_=T+1|0,Ss(o,T,1),Le&(k|0)<1){T=_;break}Ss(o,5710,1),T=_}else{if(T>>>0<=cr>>>0)break;eE(cr|0,48,T+G|0)|0;do T=T+-1|0;while(T>>>0>cr>>>0)}while(!1);Hr=A-T|0,Ss(o,T,(k|0)>(Hr|0)?Hr:k),k=k-Hr|0,M=M+4|0}while(M>>>0>>0&(k|0)>-1)}Ms(o,48,k+18|0,18,0),Ss(o,Ze,Tr-Ze|0)}Ms(o,32,u,B,d^8192)}else cr=(m&32|0)!=0,B=fr+3|0,Ms(o,32,u,B,d&-65537),Ss(o,qr,fr),Ss(o,l!=l|!1?cr?5686:5690:cr?5678:5682,3),Ms(o,32,u,B,d^8192);while(!1);return I=Hn,((B|0)<(u|0)?u:B)|0}function a$(o){o=+o;var l=0;return E[S>>3]=o,l=n[S>>2]|0,Ee=n[S+4>>2]|0,l|0}function ZYe(o,l){return o=+o,l=l|0,+ +l$(o,l)}function l$(o,l){o=+o,l=l|0;var u=0,A=0,d=0;switch(E[S>>3]=o,u=n[S>>2]|0,A=n[S+4>>2]|0,d=ix(u|0,A|0,52)|0,d&2047){case 0:{o!=0?(o=+l$(o*18446744073709552e3,l),u=(n[l>>2]|0)+-64|0):u=0,n[l>>2]=u;break}case 2047:break;default:n[l>>2]=(d&2047)+-1022,n[S>>2]=u,n[S+4>>2]=A&-2146435073|1071644672,o=+E[S>>3]}return+o}function XYe(o,l,u){o=o|0,l=l|0,u=u|0;do if(o){if(l>>>0<128){s[o>>0]=l,o=1;break}if(!(n[n[($Ye()|0)+188>>2]>>2]|0))if((l&-128|0)==57216){s[o>>0]=l,o=1;break}else{n[(Zy()|0)>>2]=84,o=-1;break}if(l>>>0<2048){s[o>>0]=l>>>6|192,s[o+1>>0]=l&63|128,o=2;break}if(l>>>0<55296|(l&-8192|0)==57344){s[o>>0]=l>>>12|224,s[o+1>>0]=l>>>6&63|128,s[o+2>>0]=l&63|128,o=3;break}if((l+-65536|0)>>>0<1048576){s[o>>0]=l>>>18|240,s[o+1>>0]=l>>>12&63|128,s[o+2>>0]=l>>>6&63|128,s[o+3>>0]=l&63|128,o=4;break}else{n[(Zy()|0)>>2]=84,o=-1;break}}else o=1;while(!1);return o|0}function $Ye(){return m_()|0}function eVe(){return m_()|0}function tVe(o,l){o=o|0,l=l|0;var u=0,A=0;for(A=0;;){if((c[5712+A>>0]|0)==(o|0)){o=2;break}if(u=A+1|0,(u|0)==87){u=5800,A=87,o=5;break}else A=u}if((o|0)==2&&(A?(u=5800,o=5):u=5800),(o|0)==5)for(;;){do o=u,u=u+1|0;while(s[o>>0]|0);if(A=A+-1|0,A)o=5;else break}return rVe(u,n[l+20>>2]|0)|0}function rVe(o,l){return o=o|0,l=l|0,nVe(o,l)|0}function nVe(o,l){return o=o|0,l=l|0,l?l=iVe(n[l>>2]|0,n[l+4>>2]|0,o)|0:l=0,(l|0?l:o)|0}function iVe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0,ae=0;ae=(n[o>>2]|0)+1794895138|0,m=pd(n[o+8>>2]|0,ae)|0,A=pd(n[o+12>>2]|0,ae)|0,d=pd(n[o+16>>2]|0,ae)|0;e:do if(m>>>0>>2>>>0&&(G=l-(m<<2)|0,A>>>0>>0&d>>>0>>0)&&!((d|A)&3|0)){for(G=A>>>2,M=d>>>2,_=0;;){if(k=m>>>1,T=_+k|0,B=T<<1,d=B+G|0,A=pd(n[o+(d<<2)>>2]|0,ae)|0,d=pd(n[o+(d+1<<2)>>2]|0,ae)|0,!(d>>>0>>0&A>>>0<(l-d|0)>>>0)){A=0;break e}if(s[o+(d+A)>>0]|0){A=0;break e}if(A=r$(u,o+d|0)|0,!A)break;if(A=(A|0)<0,(m|0)==1){A=0;break e}else _=A?_:T,m=A?k:m-k|0}A=B+M|0,d=pd(n[o+(A<<2)>>2]|0,ae)|0,A=pd(n[o+(A+1<<2)>>2]|0,ae)|0,A>>>0>>0&d>>>0<(l-A|0)>>>0?A=s[o+(A+d)>>0]|0?0:o+A|0:A=0}else A=0;while(!1);return A|0}function pd(o,l){o=o|0,l=l|0;var u=0;return u=d$(o|0)|0,(l|0?u:o)|0}function sVe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=u+16|0,d=n[A>>2]|0,d?m=5:oVe(u)|0?A=0:(d=n[A>>2]|0,m=5);e:do if((m|0)==5){if(k=u+20|0,B=n[k>>2]|0,A=B,(d-B|0)>>>0>>0){A=ox[n[u+36>>2]&7](u,o,l)|0;break}t:do if((s[u+75>>0]|0)>-1){for(B=l;;){if(!B){m=0,d=o;break t}if(d=B+-1|0,(s[o+d>>0]|0)==10)break;B=d}if(A=ox[n[u+36>>2]&7](u,o,B)|0,A>>>0>>0)break e;m=B,d=o+B|0,l=l-B|0,A=n[k>>2]|0}else m=0,d=o;while(!1);Qr(A|0,d|0,l|0)|0,n[k>>2]=(n[k>>2]|0)+l,A=m+l|0}while(!1);return A|0}function oVe(o){o=o|0;var l=0,u=0;return l=o+74|0,u=s[l>>0]|0,s[l>>0]=u+255|u,l=n[o>>2]|0,l&8?(n[o>>2]=l|32,o=-1):(n[o+8>>2]=0,n[o+4>>2]=0,u=n[o+44>>2]|0,n[o+28>>2]=u,n[o+20>>2]=u,n[o+16>>2]=u+(n[o+48>>2]|0),o=0),o|0}function $n(o,l){o=y(o),l=y(l);var u=0,A=0;u=c$(o)|0;do if((u&2147483647)>>>0<=2139095040){if(A=c$(l)|0,(A&2147483647)>>>0<=2139095040)if((A^u|0)<0){o=(u|0)<0?l:o;break}else{o=o>2]=o,n[S>>2]|0|0}function hd(o,l){o=y(o),l=y(l);var u=0,A=0;u=u$(o)|0;do if((u&2147483647)>>>0<=2139095040){if(A=u$(l)|0,(A&2147483647)>>>0<=2139095040)if((A^u|0)<0){o=(u|0)<0?o:l;break}else{o=o>2]=o,n[S>>2]|0|0}function E_(o,l){o=y(o),l=y(l);var u=0,A=0,d=0,m=0,B=0,k=0,T=0,_=0;m=(h[S>>2]=o,n[S>>2]|0),k=(h[S>>2]=l,n[S>>2]|0),u=m>>>23&255,B=k>>>23&255,T=m&-2147483648,d=k<<1;e:do if(d|0&&!((u|0)==255|((aVe(l)|0)&2147483647)>>>0>2139095040)){if(A=m<<1,A>>>0<=d>>>0)return l=y(o*y(0)),y((A|0)==(d|0)?l:o);if(u)A=m&8388607|8388608;else{if(u=m<<9,(u|0)>-1){A=u,u=0;do u=u+-1|0,A=A<<1;while((A|0)>-1)}else u=0;A=m<<1-u}if(B)k=k&8388607|8388608;else{if(m=k<<9,(m|0)>-1){d=0;do d=d+-1|0,m=m<<1;while((m|0)>-1)}else d=0;B=d,k=k<<1-d}d=A-k|0,m=(d|0)>-1;t:do if((u|0)>(B|0)){for(;;){if(m)if(d)A=d;else break;if(A=A<<1,u=u+-1|0,d=A-k|0,m=(d|0)>-1,(u|0)<=(B|0))break t}l=y(o*y(0));break e}while(!1);if(m)if(d)A=d;else{l=y(o*y(0));break}if(A>>>0<8388608)do A=A<<1,u=u+-1|0;while(A>>>0<8388608);(u|0)>0?u=A+-8388608|u<<23:u=A>>>(1-u|0),l=(n[S>>2]=u|T,y(h[S>>2]))}else _=3;while(!1);return(_|0)==3&&(l=y(o*l),l=y(l/l)),y(l)}function aVe(o){return o=y(o),h[S>>2]=o,n[S>>2]|0|0}function lVe(o,l){return o=o|0,l=l|0,n$(n[582]|0,o,l)|0}function sn(o){o=o|0,Nt()}function $y(o){o=o|0}function cVe(o,l){return o=o|0,l=l|0,0}function uVe(o){return o=o|0,(f$(o+4|0)|0)==-1?(op[n[(n[o>>2]|0)+8>>2]&127](o),o=1):o=0,o|0}function f$(o){o=o|0;var l=0;return l=n[o>>2]|0,n[o>>2]=l+-1,l+-1|0}function Yh(o){o=o|0,uVe(o)|0&&fVe(o)}function fVe(o){o=o|0;var l=0;l=o+8|0,n[l>>2]|0&&(f$(l)|0)!=-1||op[n[(n[o>>2]|0)+16>>2]&127](o)}function Jt(o){o=o|0;var l=0;for(l=o|0?o:1;o=ex(l)|0,!(o|0);){if(o=pVe()|0,!o){o=0;break}D$[o&0]()}return o|0}function A$(o){return o=o|0,Jt(o)|0}function yt(o){o=o|0,tx(o)}function AVe(o){o=o|0,(s[o+11>>0]|0)<0&&yt(n[o>>2]|0)}function pVe(){var o=0;return o=n[2923]|0,n[2923]=o+0,o|0}function hVe(){}function nx(o,l,u,A){return o=o|0,l=l|0,u=u|0,A=A|0,A=l-A-(u>>>0>o>>>0|0)>>>0,Ee=A,o-u>>>0|0|0}function I_(o,l,u,A){return o=o|0,l=l|0,u=u|0,A=A|0,u=o+u>>>0,Ee=l+A+(u>>>0>>0|0)>>>0,u|0|0}function eE(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;if(m=o+u|0,l=l&255,(u|0)>=67){for(;o&3;)s[o>>0]=l,o=o+1|0;for(A=m&-4|0,d=A-64|0,B=l|l<<8|l<<16|l<<24;(o|0)<=(d|0);)n[o>>2]=B,n[o+4>>2]=B,n[o+8>>2]=B,n[o+12>>2]=B,n[o+16>>2]=B,n[o+20>>2]=B,n[o+24>>2]=B,n[o+28>>2]=B,n[o+32>>2]=B,n[o+36>>2]=B,n[o+40>>2]=B,n[o+44>>2]=B,n[o+48>>2]=B,n[o+52>>2]=B,n[o+56>>2]=B,n[o+60>>2]=B,o=o+64|0;for(;(o|0)<(A|0);)n[o>>2]=B,o=o+4|0}for(;(o|0)<(m|0);)s[o>>0]=l,o=o+1|0;return m-u|0}function p$(o,l,u){return o=o|0,l=l|0,u=u|0,(u|0)<32?(Ee=l<>>32-u,o<>>u,o>>>u|(l&(1<>>u-32|0)}function Qr(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;if((u|0)>=8192)return MA(o|0,l|0,u|0)|0;if(m=o|0,d=o+u|0,(o&3)==(l&3)){for(;o&3;){if(!u)return m|0;s[o>>0]=s[l>>0]|0,o=o+1|0,l=l+1|0,u=u-1|0}for(u=d&-4|0,A=u-64|0;(o|0)<=(A|0);)n[o>>2]=n[l>>2],n[o+4>>2]=n[l+4>>2],n[o+8>>2]=n[l+8>>2],n[o+12>>2]=n[l+12>>2],n[o+16>>2]=n[l+16>>2],n[o+20>>2]=n[l+20>>2],n[o+24>>2]=n[l+24>>2],n[o+28>>2]=n[l+28>>2],n[o+32>>2]=n[l+32>>2],n[o+36>>2]=n[l+36>>2],n[o+40>>2]=n[l+40>>2],n[o+44>>2]=n[l+44>>2],n[o+48>>2]=n[l+48>>2],n[o+52>>2]=n[l+52>>2],n[o+56>>2]=n[l+56>>2],n[o+60>>2]=n[l+60>>2],o=o+64|0,l=l+64|0;for(;(o|0)<(u|0);)n[o>>2]=n[l>>2],o=o+4|0,l=l+4|0}else for(u=d-4|0;(o|0)<(u|0);)s[o>>0]=s[l>>0]|0,s[o+1>>0]=s[l+1>>0]|0,s[o+2>>0]=s[l+2>>0]|0,s[o+3>>0]=s[l+3>>0]|0,o=o+4|0,l=l+4|0;for(;(o|0)<(d|0);)s[o>>0]=s[l>>0]|0,o=o+1|0,l=l+1|0;return m|0}function h$(o){o=o|0;var l=0;return l=s[N+(o&255)>>0]|0,(l|0)<8?l|0:(l=s[N+(o>>8&255)>>0]|0,(l|0)<8?l+8|0:(l=s[N+(o>>16&255)>>0]|0,(l|0)<8?l+16|0:(s[N+(o>>>24)>>0]|0)+24|0))}function g$(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0;var m=0,B=0,k=0,T=0,_=0,M=0,G=0,ae=0,We=0,Le=0;if(M=o,T=l,_=T,B=u,ae=A,k=ae,!_)return m=(d|0)!=0,k?m?(n[d>>2]=o|0,n[d+4>>2]=l&0,ae=0,d=0,Ee=ae,d|0):(ae=0,d=0,Ee=ae,d|0):(m&&(n[d>>2]=(M>>>0)%(B>>>0),n[d+4>>2]=0),ae=0,d=(M>>>0)/(B>>>0)>>>0,Ee=ae,d|0);m=(k|0)==0;do if(B){if(!m){if(m=(b(k|0)|0)-(b(_|0)|0)|0,m>>>0<=31){G=m+1|0,k=31-m|0,l=m-31>>31,B=G,o=M>>>(G>>>0)&l|_<>>(G>>>0)&l,m=0,k=M<>2]=o|0,n[d+4>>2]=T|l&0,ae=0,d=0,Ee=ae,d|0):(ae=0,d=0,Ee=ae,d|0)}if(m=B-1|0,m&B|0){k=(b(B|0)|0)+33-(b(_|0)|0)|0,Le=64-k|0,G=32-k|0,T=G>>31,We=k-32|0,l=We>>31,B=k,o=G-1>>31&_>>>(We>>>0)|(_<>>(k>>>0))&l,l=l&_>>>(k>>>0),m=M<>>(We>>>0))&T|M<>31;break}return d|0&&(n[d>>2]=m&M,n[d+4>>2]=0),(B|0)==1?(We=T|l&0,Le=o|0|0,Ee=We,Le|0):(Le=h$(B|0)|0,We=_>>>(Le>>>0)|0,Le=_<<32-Le|M>>>(Le>>>0)|0,Ee=We,Le|0)}else{if(m)return d|0&&(n[d>>2]=(_>>>0)%(B>>>0),n[d+4>>2]=0),We=0,Le=(_>>>0)/(B>>>0)>>>0,Ee=We,Le|0;if(!M)return d|0&&(n[d>>2]=0,n[d+4>>2]=(_>>>0)%(k>>>0)),We=0,Le=(_>>>0)/(k>>>0)>>>0,Ee=We,Le|0;if(m=k-1|0,!(m&k))return d|0&&(n[d>>2]=o|0,n[d+4>>2]=m&_|l&0),We=0,Le=_>>>((h$(k|0)|0)>>>0),Ee=We,Le|0;if(m=(b(k|0)|0)-(b(_|0)|0)|0,m>>>0<=30){l=m+1|0,k=31-m|0,B=l,o=_<>>(l>>>0),l=_>>>(l>>>0),m=0,k=M<>2]=o|0,n[d+4>>2]=T|l&0,We=0,Le=0,Ee=We,Le|0):(We=0,Le=0,Ee=We,Le|0)}while(!1);if(!B)_=k,T=0,k=0;else{G=u|0|0,M=ae|A&0,_=I_(G|0,M|0,-1,-1)|0,u=Ee,T=k,k=0;do A=T,T=m>>>31|T<<1,m=k|m<<1,A=o<<1|A>>>31|0,ae=o>>>31|l<<1|0,nx(_|0,u|0,A|0,ae|0)|0,Le=Ee,We=Le>>31|((Le|0)<0?-1:0)<<1,k=We&1,o=nx(A|0,ae|0,We&G|0,(((Le|0)<0?-1:0)>>31|((Le|0)<0?-1:0)<<1)&M|0)|0,l=Ee,B=B-1|0;while(B|0);_=T,T=0}return B=0,d|0&&(n[d>>2]=o,n[d+4>>2]=l),We=(m|0)>>>31|(_|B)<<1|(B<<1|m>>>31)&0|T,Le=(m<<1|0)&-2|k,Ee=We,Le|0}function C_(o,l,u,A){return o=o|0,l=l|0,u=u|0,A=A|0,g$(o,l,u,A,0)|0}function Vh(o){o=o|0;var l=0,u=0;return u=o+15&-16|0,l=n[C>>2]|0,o=l+u|0,(u|0)>0&(o|0)<(l|0)|(o|0)<0?(oe()|0,pu(12),-1):(n[C>>2]=o,(o|0)>($()|0)&&!(Z()|0)?(n[C>>2]=l,pu(12),-1):l|0)}function F2(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;if((l|0)<(o|0)&(o|0)<(l+u|0)){for(A=o,l=l+u|0,o=o+u|0;(u|0)>0;)o=o-1|0,l=l-1|0,u=u-1|0,s[o>>0]=s[l>>0]|0;o=A}else Qr(o,l,u)|0;return o|0}function w_(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;return m=I,I=I+16|0,d=m|0,g$(o,l,u,A,d)|0,I=m,Ee=n[d+4>>2]|0,n[d>>2]|0|0}function d$(o){return o=o|0,(o&255)<<24|(o>>8&255)<<16|(o>>16&255)<<8|o>>>24|0}function gVe(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,m$[o&1](l|0,u|0,A|0,d|0,m|0)}function dVe(o,l,u){o=o|0,l=l|0,u=y(u),y$[o&1](l|0,y(u))}function mVe(o,l,u){o=o|0,l=l|0,u=+u,E$[o&31](l|0,+u)}function yVe(o,l,u,A){return o=o|0,l=l|0,u=y(u),A=y(A),y(I$[o&0](l|0,y(u),y(A)))}function EVe(o,l){o=o|0,l=l|0,op[o&127](l|0)}function IVe(o,l,u){o=o|0,l=l|0,u=u|0,ap[o&31](l|0,u|0)}function CVe(o,l){return o=o|0,l=l|0,dd[o&31](l|0)|0}function wVe(o,l,u,A,d){o=o|0,l=l|0,u=+u,A=+A,d=d|0,C$[o&1](l|0,+u,+A,d|0)}function BVe(o,l,u,A){o=o|0,l=l|0,u=+u,A=+A,n7e[o&1](l|0,+u,+A)}function vVe(o,l,u,A){return o=o|0,l=l|0,u=u|0,A=A|0,ox[o&7](l|0,u|0,A|0)|0}function SVe(o,l,u,A){return o=o|0,l=l|0,u=u|0,A=A|0,+i7e[o&1](l|0,u|0,A|0)}function DVe(o,l){return o=o|0,l=l|0,+w$[o&15](l|0)}function bVe(o,l,u){return o=o|0,l=l|0,u=+u,s7e[o&1](l|0,+u)|0}function PVe(o,l,u){return o=o|0,l=l|0,u=u|0,v_[o&15](l|0,u|0)|0}function xVe(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=+A,d=+d,m=m|0,o7e[o&1](l|0,u|0,+A,+d,m|0)}function kVe(o,l,u,A,d,m,B){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,B=B|0,a7e[o&1](l|0,u|0,A|0,d|0,m|0,B|0)}function QVe(o,l,u){return o=o|0,l=l|0,u=u|0,+B$[o&7](l|0,u|0)}function TVe(o){return o=o|0,ax[o&7]()|0}function RVe(o,l,u,A,d,m){return o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,v$[o&1](l|0,u|0,A|0,d|0,m|0)|0}function FVe(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=+d,l7e[o&1](l|0,u|0,A|0,+d)}function NVe(o,l,u,A,d,m,B){o=o|0,l=l|0,u=u|0,A=y(A),d=d|0,m=y(m),B=B|0,S$[o&1](l|0,u|0,y(A),d|0,y(m),B|0)}function OVe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,L2[o&15](l|0,u|0,A|0)}function LVe(o){o=o|0,D$[o&0]()}function MVe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=+A,b$[o&15](l|0,u|0,+A)}function _Ve(o,l,u){return o=o|0,l=+l,u=+u,c7e[o&1](+l,+u)|0}function UVe(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,S_[o&15](l|0,u|0,A|0,d|0)}function HVe(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,F(0)}function jVe(o,l){o=o|0,l=y(l),F(1)}function Xa(o,l){o=o|0,l=+l,F(2)}function qVe(o,l,u){return o=o|0,l=y(l),u=y(u),F(3),Xe}function wr(o){o=o|0,F(4)}function N2(o,l){o=o|0,l=l|0,F(5)}function Ll(o){return o=o|0,F(6),0}function GVe(o,l,u,A){o=o|0,l=+l,u=+u,A=A|0,F(7)}function WVe(o,l,u){o=o|0,l=+l,u=+u,F(8)}function YVe(o,l,u){return o=o|0,l=l|0,u=u|0,F(9),0}function VVe(o,l,u){return o=o|0,l=l|0,u=u|0,F(10),0}function gd(o){return o=o|0,F(11),0}function KVe(o,l){return o=o|0,l=+l,F(12),0}function O2(o,l){return o=o|0,l=l|0,F(13),0}function JVe(o,l,u,A,d){o=o|0,l=l|0,u=+u,A=+A,d=d|0,F(14)}function zVe(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,F(15)}function B_(o,l){return o=o|0,l=l|0,F(16),0}function ZVe(){return F(17),0}function XVe(o,l,u,A,d){return o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,F(18),0}function $Ve(o,l,u,A){o=o|0,l=l|0,u=u|0,A=+A,F(19)}function e7e(o,l,u,A,d,m){o=o|0,l=l|0,u=y(u),A=A|0,d=y(d),m=m|0,F(20)}function sx(o,l,u){o=o|0,l=l|0,u=u|0,F(21)}function t7e(){F(22)}function tE(o,l,u){o=o|0,l=l|0,u=+u,F(23)}function r7e(o,l){return o=+o,l=+l,F(24),0}function rE(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,F(25)}var m$=[HVe,XGe],y$=[jVe,Ty],E$=[Xa,$g,Lh,m2,y2,E2,I2,Pf,Uy,C2,xf,ed,td,w2,B2,vu,rd,v2,Hy,Xa,Xa,Xa,Xa,Xa,Xa,Xa,Xa,Xa,Xa,Xa,Xa,Xa],I$=[qVe],op=[wr,$y,TLe,RLe,FLe,c4e,u4e,f4e,bqe,Pqe,xqe,_Ge,UGe,HGe,aYe,lYe,cYe,vl,Xg,p2,sr,gc,qP,GP,wLe,jLe,eMe,yMe,FMe,ZMe,h_e,x_e,G_e,oUe,wUe,MUe,e4e,P4e,G4e,o3e,w3e,M3e,e8e,E8e,F8e,K8e,uHe,kP,HHe,nje,wje,Uje,t6e,w6e,T6e,N6e,X6e,tqe,yqe,Qqe,Fqe,Zqe,gGe,nZ,z5e,b9e,j9e,nWe,SWe,UWe,ZWe,eYe,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr],ap=[N2,Ly,nM,h2,g2,xr,oo,Zi,Os,Bs,_y,Oh,D2,NP,sd,oM,aM,OP,LP,uM,kf,ne,B8e,L8e,Gje,$5e,BGe,HX,N2,N2,N2,N2],dd=[Ll,MYe,Ny,id,qy,da,QP,Mh,S2,sM,RP,Gy,MP,fM,Vy,pHe,s6e,eGe,n9e,Fl,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll],C$=[GVe,dM],n7e=[WVe,Cqe],ox=[YVe,t$,_Ye,jYe,t_e,T4e,WHe,aWe],i7e=[VVe,DUe],w$=[gd,_h,FP,tp,mM,v,D,Q,H,V,gd,gd,gd,gd,gd,gd],s7e=[KVe,x6e],v_=[O2,cVe,_P,DLe,wMe,m_e,T_e,i4e,K4e,X8e,Ry,Y9e,O2,O2,O2,O2],o7e=[JVe,iMe],a7e=[zVe,xWe],B$=[B_,lM,Se,Ue,At,jUe,B_,B_],ax=[ZVe,Gt,Fy,xP,_6e,sqe,Mqe,iYe],v$=[XVe,Sy],l7e=[$Ve,D3e],S$=[e7e,AM],L2=[sx,To,TP,cM,Du,MMe,V_e,j3e,i8e,rM,C5e,Q9e,GWe,sx,sx,sx],D$=[t7e],b$=[tE,iM,My,ep,d2,Su,jy,nd,u3e,aje,S6e,tE,tE,tE,tE,tE],c7e=[r7e,Sqe],S_=[rE,uUe,CHe,Dje,h6e,W6e,fqe,Wqe,IGe,c9e,gYe,rE,rE,rE,rE,rE];return{_llvm_bswap_i32:d$,dynCall_idd:_Ve,dynCall_i:TVe,_i64Subtract:nx,___udivdi3:C_,dynCall_vif:dVe,setThrew:ua,dynCall_viii:OVe,_bitshift64Lshr:ix,_bitshift64Shl:p$,dynCall_vi:EVe,dynCall_viiddi:xVe,dynCall_diii:SVe,dynCall_iii:PVe,_memset:eE,_sbrk:Vh,_memcpy:Qr,__GLOBAL__sub_I_Yoga_cpp:u2,dynCall_vii:IVe,___uremdi3:w_,dynCall_vid:mVe,stackAlloc:Ha,_nbind_init:DYe,getTempRet0:UA,dynCall_di:DVe,dynCall_iid:bVe,setTempRet0:_A,_i64Add:I_,dynCall_fiff:yVe,dynCall_iiii:vVe,_emscripten_get_global_libc:LYe,dynCall_viid:MVe,dynCall_viiid:FVe,dynCall_viififi:NVe,dynCall_ii:CVe,__GLOBAL__sub_I_Binding_cc:j5e,dynCall_viiii:UVe,dynCall_iiiiii:RVe,stackSave:gf,dynCall_viiiii:gVe,__GLOBAL__sub_I_nbind_cc:vr,dynCall_vidd:BVe,_free:tx,runPostSets:hVe,dynCall_viiiiii:kVe,establishStackSpace:wn,_memmove:F2,stackRestore:cc,_malloc:ex,__GLOBAL__sub_I_common_cc:lGe,dynCall_viddi:wVe,dynCall_dii:QVe,dynCall_v:LVe}}(Module.asmGlobalArg,Module.asmLibraryArg,buffer),_llvm_bswap_i32=Module._llvm_bswap_i32=asm._llvm_bswap_i32,getTempRet0=Module.getTempRet0=asm.getTempRet0,___udivdi3=Module.___udivdi3=asm.___udivdi3,setThrew=Module.setThrew=asm.setThrew,_bitshift64Lshr=Module._bitshift64Lshr=asm._bitshift64Lshr,_bitshift64Shl=Module._bitshift64Shl=asm._bitshift64Shl,_memset=Module._memset=asm._memset,_sbrk=Module._sbrk=asm._sbrk,_memcpy=Module._memcpy=asm._memcpy,stackAlloc=Module.stackAlloc=asm.stackAlloc,___uremdi3=Module.___uremdi3=asm.___uremdi3,_nbind_init=Module._nbind_init=asm._nbind_init,_i64Subtract=Module._i64Subtract=asm._i64Subtract,setTempRet0=Module.setTempRet0=asm.setTempRet0,_i64Add=Module._i64Add=asm._i64Add,_emscripten_get_global_libc=Module._emscripten_get_global_libc=asm._emscripten_get_global_libc,__GLOBAL__sub_I_Yoga_cpp=Module.__GLOBAL__sub_I_Yoga_cpp=asm.__GLOBAL__sub_I_Yoga_cpp,__GLOBAL__sub_I_Binding_cc=Module.__GLOBAL__sub_I_Binding_cc=asm.__GLOBAL__sub_I_Binding_cc,stackSave=Module.stackSave=asm.stackSave,__GLOBAL__sub_I_nbind_cc=Module.__GLOBAL__sub_I_nbind_cc=asm.__GLOBAL__sub_I_nbind_cc,_free=Module._free=asm._free,runPostSets=Module.runPostSets=asm.runPostSets,establishStackSpace=Module.establishStackSpace=asm.establishStackSpace,_memmove=Module._memmove=asm._memmove,stackRestore=Module.stackRestore=asm.stackRestore,_malloc=Module._malloc=asm._malloc,__GLOBAL__sub_I_common_cc=Module.__GLOBAL__sub_I_common_cc=asm.__GLOBAL__sub_I_common_cc,dynCall_viiiii=Module.dynCall_viiiii=asm.dynCall_viiiii,dynCall_vif=Module.dynCall_vif=asm.dynCall_vif,dynCall_vid=Module.dynCall_vid=asm.dynCall_vid,dynCall_fiff=Module.dynCall_fiff=asm.dynCall_fiff,dynCall_vi=Module.dynCall_vi=asm.dynCall_vi,dynCall_vii=Module.dynCall_vii=asm.dynCall_vii,dynCall_ii=Module.dynCall_ii=asm.dynCall_ii,dynCall_viddi=Module.dynCall_viddi=asm.dynCall_viddi,dynCall_vidd=Module.dynCall_vidd=asm.dynCall_vidd,dynCall_iiii=Module.dynCall_iiii=asm.dynCall_iiii,dynCall_diii=Module.dynCall_diii=asm.dynCall_diii,dynCall_di=Module.dynCall_di=asm.dynCall_di,dynCall_iid=Module.dynCall_iid=asm.dynCall_iid,dynCall_iii=Module.dynCall_iii=asm.dynCall_iii,dynCall_viiddi=Module.dynCall_viiddi=asm.dynCall_viiddi,dynCall_viiiiii=Module.dynCall_viiiiii=asm.dynCall_viiiiii,dynCall_dii=Module.dynCall_dii=asm.dynCall_dii,dynCall_i=Module.dynCall_i=asm.dynCall_i,dynCall_iiiiii=Module.dynCall_iiiiii=asm.dynCall_iiiiii,dynCall_viiid=Module.dynCall_viiid=asm.dynCall_viiid,dynCall_viififi=Module.dynCall_viififi=asm.dynCall_viififi,dynCall_viii=Module.dynCall_viii=asm.dynCall_viii,dynCall_v=Module.dynCall_v=asm.dynCall_v,dynCall_viid=Module.dynCall_viid=asm.dynCall_viid,dynCall_idd=Module.dynCall_idd=asm.dynCall_idd,dynCall_viiii=Module.dynCall_viiii=asm.dynCall_viiii;Runtime.stackAlloc=Module.stackAlloc,Runtime.stackSave=Module.stackSave,Runtime.stackRestore=Module.stackRestore,Runtime.establishStackSpace=Module.establishStackSpace,Runtime.setTempRet0=Module.setTempRet0,Runtime.getTempRet0=Module.getTempRet0,Module.asm=asm;function ExitStatus(t){this.name="ExitStatus",this.message="Program terminated with exit("+t+")",this.status=t}ExitStatus.prototype=new Error,ExitStatus.prototype.constructor=ExitStatus;var initialStackTop,preloadStartTime=null,calledMain=!1;dependenciesFulfilled=function t(){Module.calledRun||run(),Module.calledRun||(dependenciesFulfilled=t)},Module.callMain=Module.callMain=function t(e){e=e||[],ensureInitRuntime();var r=e.length+1;function s(){for(var p=0;p<3;p++)a.push(0)}var a=[allocate(intArrayFromString(Module.thisProgram),"i8",ALLOC_NORMAL)];s();for(var n=0;n0||(preRun(),runDependencies>0)||Module.calledRun)return;function e(){Module.calledRun||(Module.calledRun=!0,!ABORT&&(ensureInitRuntime(),preMain(),Module.onRuntimeInitialized&&Module.onRuntimeInitialized(),Module._main&&shouldRunNow&&Module.callMain(t),postRun()))}Module.setStatus?(Module.setStatus("Running..."),setTimeout(function(){setTimeout(function(){Module.setStatus("")},1),e()},1)):e()}Module.run=Module.run=run;function exit(t,e){e&&Module.noExitRuntime||(Module.noExitRuntime||(ABORT=!0,EXITSTATUS=t,STACKTOP=initialStackTop,exitRuntime(),Module.onExit&&Module.onExit(t)),ENVIRONMENT_IS_NODE&&process.exit(t),Module.quit(t,new ExitStatus(t)))}Module.exit=Module.exit=exit;var abortDecorators=[];function abort(t){Module.onAbort&&Module.onAbort(t),t!==void 0?(Module.print(t),Module.printErr(t),t=JSON.stringify(t)):t="",ABORT=!0,EXITSTATUS=1;var e=` +If this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.`,r="abort("+t+") at "+stackTrace()+e;throw abortDecorators&&abortDecorators.forEach(function(s){r=s(r,t)}),r}if(Module.abort=Module.abort=abort,Module.preInit)for(typeof Module.preInit=="function"&&(Module.preInit=[Module.preInit]);Module.preInit.length>0;)Module.preInit.pop()();var shouldRunNow=!0;Module.noInitialRun&&(shouldRunNow=!1),run()})});var Nm=L((Khr,KDe)=>{"use strict";var $Pt=YDe(),ext=VDe(),PW=!1,xW=null;ext({},function(t,e){if(!PW){if(PW=!0,t)throw t;xW=e}});if(!PW)throw new Error("Failed to load the yoga module - it needed to be loaded synchronously, but didn't");KDe.exports=$Pt(xW.bind,xW.lib)});var QW=L((Jhr,kW)=>{"use strict";var JDe=t=>Number.isNaN(t)?!1:t>=4352&&(t<=4447||t===9001||t===9002||11904<=t&&t<=12871&&t!==12351||12880<=t&&t<=19903||19968<=t&&t<=42182||43360<=t&&t<=43388||44032<=t&&t<=55203||63744<=t&&t<=64255||65040<=t&&t<=65049||65072<=t&&t<=65131||65281<=t&&t<=65376||65504<=t&&t<=65510||110592<=t&&t<=110593||127488<=t&&t<=127569||131072<=t&&t<=262141);kW.exports=JDe;kW.exports.default=JDe});var ZDe=L((zhr,zDe)=>{"use strict";zDe.exports=function(){return/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F|\uD83D\uDC68(?:\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|[\u2695\u2696\u2708]\uFE0F|\uD83D[\uDC66\uDC67]|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708])\uFE0F|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C[\uDFFB-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)\uD83C\uDFFB|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB\uDFFC])|\uD83D\uDC69(?:\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB-\uDFFD])|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)\uFE0F|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\uD83C\uDFF4\u200D\u2620)\uFE0F|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF6\uD83C\uDDE6|[#\*0-9]\uFE0F\u20E3|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270A-\u270D]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC70\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDCAA\uDD74\uDD7A\uDD90\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD36\uDDB5\uDDB6\uDDBB\uDDD2-\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5\uDEEB\uDEEC\uDEF4-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g}});var iD=L((Zhr,TW)=>{"use strict";var txt=bk(),rxt=QW(),nxt=ZDe(),XDe=t=>{if(typeof t!="string"||t.length===0||(t=txt(t),t.length===0))return 0;t=t.replace(nxt()," ");let e=0;for(let r=0;r=127&&s<=159||s>=768&&s<=879||(s>65535&&r++,e+=rxt(s)?2:1)}return e};TW.exports=XDe;TW.exports.default=XDe});var FW=L((Xhr,RW)=>{"use strict";var ixt=iD(),$De=t=>{let e=0;for(let r of t.split(` +`))e=Math.max(e,ixt(r));return e};RW.exports=$De;RW.exports.default=$De});var ebe=L(sD=>{"use strict";var sxt=sD&&sD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(sD,"__esModule",{value:!0});var oxt=sxt(FW()),NW={};sD.default=t=>{if(t.length===0)return{width:0,height:0};if(NW[t])return NW[t];let e=oxt.default(t),r=t.split(` +`).length;return NW[t]={width:e,height:r},{width:e,height:r}}});var tbe=L(oD=>{"use strict";var axt=oD&&oD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(oD,"__esModule",{value:!0});var bn=axt(Nm()),lxt=(t,e)=>{"position"in e&&t.setPositionType(e.position==="absolute"?bn.default.POSITION_TYPE_ABSOLUTE:bn.default.POSITION_TYPE_RELATIVE)},cxt=(t,e)=>{"marginLeft"in e&&t.setMargin(bn.default.EDGE_START,e.marginLeft||0),"marginRight"in e&&t.setMargin(bn.default.EDGE_END,e.marginRight||0),"marginTop"in e&&t.setMargin(bn.default.EDGE_TOP,e.marginTop||0),"marginBottom"in e&&t.setMargin(bn.default.EDGE_BOTTOM,e.marginBottom||0)},uxt=(t,e)=>{"paddingLeft"in e&&t.setPadding(bn.default.EDGE_LEFT,e.paddingLeft||0),"paddingRight"in e&&t.setPadding(bn.default.EDGE_RIGHT,e.paddingRight||0),"paddingTop"in e&&t.setPadding(bn.default.EDGE_TOP,e.paddingTop||0),"paddingBottom"in e&&t.setPadding(bn.default.EDGE_BOTTOM,e.paddingBottom||0)},fxt=(t,e)=>{var r;"flexGrow"in e&&t.setFlexGrow((r=e.flexGrow)!==null&&r!==void 0?r:0),"flexShrink"in e&&t.setFlexShrink(typeof e.flexShrink=="number"?e.flexShrink:1),"flexDirection"in e&&(e.flexDirection==="row"&&t.setFlexDirection(bn.default.FLEX_DIRECTION_ROW),e.flexDirection==="row-reverse"&&t.setFlexDirection(bn.default.FLEX_DIRECTION_ROW_REVERSE),e.flexDirection==="column"&&t.setFlexDirection(bn.default.FLEX_DIRECTION_COLUMN),e.flexDirection==="column-reverse"&&t.setFlexDirection(bn.default.FLEX_DIRECTION_COLUMN_REVERSE)),"flexBasis"in e&&(typeof e.flexBasis=="number"?t.setFlexBasis(e.flexBasis):typeof e.flexBasis=="string"?t.setFlexBasisPercent(Number.parseInt(e.flexBasis,10)):t.setFlexBasis(NaN)),"alignItems"in e&&((e.alignItems==="stretch"||!e.alignItems)&&t.setAlignItems(bn.default.ALIGN_STRETCH),e.alignItems==="flex-start"&&t.setAlignItems(bn.default.ALIGN_FLEX_START),e.alignItems==="center"&&t.setAlignItems(bn.default.ALIGN_CENTER),e.alignItems==="flex-end"&&t.setAlignItems(bn.default.ALIGN_FLEX_END)),"alignSelf"in e&&((e.alignSelf==="auto"||!e.alignSelf)&&t.setAlignSelf(bn.default.ALIGN_AUTO),e.alignSelf==="flex-start"&&t.setAlignSelf(bn.default.ALIGN_FLEX_START),e.alignSelf==="center"&&t.setAlignSelf(bn.default.ALIGN_CENTER),e.alignSelf==="flex-end"&&t.setAlignSelf(bn.default.ALIGN_FLEX_END)),"justifyContent"in e&&((e.justifyContent==="flex-start"||!e.justifyContent)&&t.setJustifyContent(bn.default.JUSTIFY_FLEX_START),e.justifyContent==="center"&&t.setJustifyContent(bn.default.JUSTIFY_CENTER),e.justifyContent==="flex-end"&&t.setJustifyContent(bn.default.JUSTIFY_FLEX_END),e.justifyContent==="space-between"&&t.setJustifyContent(bn.default.JUSTIFY_SPACE_BETWEEN),e.justifyContent==="space-around"&&t.setJustifyContent(bn.default.JUSTIFY_SPACE_AROUND))},Axt=(t,e)=>{var r,s;"width"in e&&(typeof e.width=="number"?t.setWidth(e.width):typeof e.width=="string"?t.setWidthPercent(Number.parseInt(e.width,10)):t.setWidthAuto()),"height"in e&&(typeof e.height=="number"?t.setHeight(e.height):typeof e.height=="string"?t.setHeightPercent(Number.parseInt(e.height,10)):t.setHeightAuto()),"minWidth"in e&&(typeof e.minWidth=="string"?t.setMinWidthPercent(Number.parseInt(e.minWidth,10)):t.setMinWidth((r=e.minWidth)!==null&&r!==void 0?r:0)),"minHeight"in e&&(typeof e.minHeight=="string"?t.setMinHeightPercent(Number.parseInt(e.minHeight,10)):t.setMinHeight((s=e.minHeight)!==null&&s!==void 0?s:0))},pxt=(t,e)=>{"display"in e&&t.setDisplay(e.display==="flex"?bn.default.DISPLAY_FLEX:bn.default.DISPLAY_NONE)},hxt=(t,e)=>{if("borderStyle"in e){let r=typeof e.borderStyle=="string"?1:0;t.setBorder(bn.default.EDGE_TOP,r),t.setBorder(bn.default.EDGE_BOTTOM,r),t.setBorder(bn.default.EDGE_LEFT,r),t.setBorder(bn.default.EDGE_RIGHT,r)}};oD.default=(t,e={})=>{lxt(t,e),cxt(t,e),uxt(t,e),fxt(t,e),Axt(t,e),pxt(t,e),hxt(t,e)}});var ibe=L((t0r,nbe)=>{"use strict";var aD=iD(),gxt=bk(),dxt=IB(),LW=new Set(["\x1B","\x9B"]),mxt=39,rbe=t=>`${LW.values().next().value}[${t}m`,yxt=t=>t.split(" ").map(e=>aD(e)),OW=(t,e,r)=>{let s=[...e],a=!1,n=aD(gxt(t[t.length-1]));for(let[c,f]of s.entries()){let p=aD(f);if(n+p<=r?t[t.length-1]+=f:(t.push(f),n=0),LW.has(f))a=!0;else if(a&&f==="m"){a=!1;continue}a||(n+=p,n===r&&c0&&t.length>1&&(t[t.length-2]+=t.pop())},Ext=t=>{let e=t.split(" "),r=e.length;for(;r>0&&!(aD(e[r-1])>0);)r--;return r===e.length?t:e.slice(0,r).join(" ")+e.slice(r).join("")},Ixt=(t,e,r={})=>{if(r.trim!==!1&&t.trim()==="")return"";let s="",a="",n,c=yxt(t),f=[""];for(let[p,h]of t.split(" ").entries()){r.trim!==!1&&(f[f.length-1]=f[f.length-1].trimLeft());let E=aD(f[f.length-1]);if(p!==0&&(E>=e&&(r.wordWrap===!1||r.trim===!1)&&(f.push(""),E=0),(E>0||r.trim===!1)&&(f[f.length-1]+=" ",E++)),r.hard&&c[p]>e){let C=e-E,S=1+Math.floor((c[p]-C-1)/e);Math.floor((c[p]-1)/e)e&&E>0&&c[p]>0){if(r.wordWrap===!1&&Ee&&r.wordWrap===!1){OW(f,h,e);continue}f[f.length-1]+=h}r.trim!==!1&&(f=f.map(Ext)),s=f.join(` +`);for(let[p,h]of[...s].entries()){if(a+=h,LW.has(h)){let C=parseFloat(/\d[^m]*/.exec(s.slice(p,p+4)));n=C===mxt?null:C}let E=dxt.codes.get(Number(n));n&&E&&(s[p+1]===` +`?a+=rbe(E):h===` +`&&(a+=rbe(n)))}return a};nbe.exports=(t,e,r)=>String(t).normalize().replace(/\r\n/g,` +`).split(` +`).map(s=>Ixt(s,e,r)).join(` +`)});var abe=L((r0r,obe)=>{"use strict";var sbe="[\uD800-\uDBFF][\uDC00-\uDFFF]",Cxt=t=>t&&t.exact?new RegExp(`^${sbe}$`):new RegExp(sbe,"g");obe.exports=Cxt});var MW=L((n0r,fbe)=>{"use strict";var wxt=QW(),Bxt=abe(),lbe=IB(),ube=["\x1B","\x9B"],MF=t=>`${ube[0]}[${t}m`,cbe=(t,e,r)=>{let s=[];t=[...t];for(let a of t){let n=a;a.match(";")&&(a=a.split(";")[0][0]+"0");let c=lbe.codes.get(parseInt(a,10));if(c){let f=t.indexOf(c.toString());f>=0?t.splice(f,1):s.push(MF(e?c:n))}else if(e){s.push(MF(0));break}else s.push(MF(n))}if(e&&(s=s.filter((a,n)=>s.indexOf(a)===n),r!==void 0)){let a=MF(lbe.codes.get(parseInt(r,10)));s=s.reduce((n,c)=>c===a?[c,...n]:[...n,c],[])}return s.join("")};fbe.exports=(t,e,r)=>{let s=[...t.normalize()],a=[];r=typeof r=="number"?r:s.length;let n=!1,c,f=0,p="";for(let[h,E]of s.entries()){let C=!1;if(ube.includes(E)){let S=/\d[^m]*/.exec(t.slice(h,h+18));c=S&&S.length>0?S[0]:void 0,fe&&f<=r)p+=E;else if(f===e&&!n&&c!==void 0)p=cbe(a);else if(f>=r){p+=cbe(a,!0,c);break}}return p}});var pbe=L((i0r,Abe)=>{"use strict";var eg=MW(),vxt=iD();function _F(t,e,r){if(t.charAt(e)===" ")return e;for(let s=1;s<=3;s++)if(r){if(t.charAt(e+s)===" ")return e+s}else if(t.charAt(e-s)===" ")return e-s;return e}Abe.exports=(t,e,r)=>{r={position:"end",preferTruncationOnSpace:!1,...r};let{position:s,space:a,preferTruncationOnSpace:n}=r,c="\u2026",f=1;if(typeof t!="string")throw new TypeError(`Expected \`input\` to be a string, got ${typeof t}`);if(typeof e!="number")throw new TypeError(`Expected \`columns\` to be a number, got ${typeof e}`);if(e<1)return"";if(e===1)return c;let p=vxt(t);if(p<=e)return t;if(s==="start"){if(n){let h=_F(t,p-e+1,!0);return c+eg(t,h,p).trim()}return a===!0&&(c+=" ",f=2),c+eg(t,p-e+f,p)}if(s==="middle"){a===!0&&(c=" "+c+" ",f=3);let h=Math.floor(e/2);if(n){let E=_F(t,h),C=_F(t,p-(e-h)+1,!0);return eg(t,0,E)+c+eg(t,C,p).trim()}return eg(t,0,h)+c+eg(t,p-(e-h)+f,p)}if(s==="end"){if(n){let h=_F(t,e-1);return eg(t,0,h)+c}return a===!0&&(c=" "+c,f=2),eg(t,0,e-f)+c}throw new Error(`Expected \`options.position\` to be either \`start\`, \`middle\` or \`end\`, got ${s}`)}});var UW=L(lD=>{"use strict";var hbe=lD&&lD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(lD,"__esModule",{value:!0});var Sxt=hbe(ibe()),Dxt=hbe(pbe()),_W={};lD.default=(t,e,r)=>{let s=t+String(e)+String(r);if(_W[s])return _W[s];let a=t;if(r==="wrap"&&(a=Sxt.default(t,e,{trim:!1,hard:!0})),r.startsWith("truncate")){let n="end";r==="truncate-middle"&&(n="middle"),r==="truncate-start"&&(n="start"),a=Dxt.default(t,e,{position:n})}return _W[s]=a,a}});var jW=L(HW=>{"use strict";Object.defineProperty(HW,"__esModule",{value:!0});var gbe=t=>{let e="";if(t.childNodes.length>0)for(let r of t.childNodes){let s="";r.nodeName==="#text"?s=r.nodeValue:((r.nodeName==="ink-text"||r.nodeName==="ink-virtual-text")&&(s=gbe(r)),s.length>0&&typeof r.internal_transform=="function"&&(s=r.internal_transform(s))),e+=s}return e};HW.default=gbe});var qW=L(Pi=>{"use strict";var cD=Pi&&Pi.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Pi,"__esModule",{value:!0});Pi.setTextNodeValue=Pi.createTextNode=Pi.setStyle=Pi.setAttribute=Pi.removeChildNode=Pi.insertBeforeNode=Pi.appendChildNode=Pi.createNode=Pi.TEXT_NAME=void 0;var bxt=cD(Nm()),dbe=cD(ebe()),Pxt=cD(tbe()),xxt=cD(UW()),kxt=cD(jW());Pi.TEXT_NAME="#text";Pi.createNode=t=>{var e;let r={nodeName:t,style:{},attributes:{},childNodes:[],parentNode:null,yogaNode:t==="ink-virtual-text"?void 0:bxt.default.Node.create()};return t==="ink-text"&&((e=r.yogaNode)===null||e===void 0||e.setMeasureFunc(Qxt.bind(null,r))),r};Pi.appendChildNode=(t,e)=>{var r;e.parentNode&&Pi.removeChildNode(e.parentNode,e),e.parentNode=t,t.childNodes.push(e),e.yogaNode&&((r=t.yogaNode)===null||r===void 0||r.insertChild(e.yogaNode,t.yogaNode.getChildCount())),(t.nodeName==="ink-text"||t.nodeName==="ink-virtual-text")&&UF(t)};Pi.insertBeforeNode=(t,e,r)=>{var s,a;e.parentNode&&Pi.removeChildNode(e.parentNode,e),e.parentNode=t;let n=t.childNodes.indexOf(r);if(n>=0){t.childNodes.splice(n,0,e),e.yogaNode&&((s=t.yogaNode)===null||s===void 0||s.insertChild(e.yogaNode,n));return}t.childNodes.push(e),e.yogaNode&&((a=t.yogaNode)===null||a===void 0||a.insertChild(e.yogaNode,t.yogaNode.getChildCount())),(t.nodeName==="ink-text"||t.nodeName==="ink-virtual-text")&&UF(t)};Pi.removeChildNode=(t,e)=>{var r,s;e.yogaNode&&((s=(r=e.parentNode)===null||r===void 0?void 0:r.yogaNode)===null||s===void 0||s.removeChild(e.yogaNode)),e.parentNode=null;let a=t.childNodes.indexOf(e);a>=0&&t.childNodes.splice(a,1),(t.nodeName==="ink-text"||t.nodeName==="ink-virtual-text")&&UF(t)};Pi.setAttribute=(t,e,r)=>{t.attributes[e]=r};Pi.setStyle=(t,e)=>{t.style=e,t.yogaNode&&Pxt.default(t.yogaNode,e)};Pi.createTextNode=t=>{let e={nodeName:"#text",nodeValue:t,yogaNode:void 0,parentNode:null,style:{}};return Pi.setTextNodeValue(e,t),e};var Qxt=function(t,e){var r,s;let a=t.nodeName==="#text"?t.nodeValue:kxt.default(t),n=dbe.default(a);if(n.width<=e||n.width>=1&&e>0&&e<1)return n;let c=(s=(r=t.style)===null||r===void 0?void 0:r.textWrap)!==null&&s!==void 0?s:"wrap",f=xxt.default(a,e,c);return dbe.default(f)},mbe=t=>{var e;if(!(!t||!t.parentNode))return(e=t.yogaNode)!==null&&e!==void 0?e:mbe(t.parentNode)},UF=t=>{let e=mbe(t);e?.markDirty()};Pi.setTextNodeValue=(t,e)=>{typeof e!="string"&&(e=String(e)),t.nodeValue=e,UF(t)}});var wbe=L(uD=>{"use strict";var Cbe=uD&&uD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(uD,"__esModule",{value:!0});var ybe=SW(),Txt=Cbe(UDe()),Ebe=Cbe(Nm()),ta=qW(),Ibe=t=>{t?.unsetMeasureFunc(),t?.freeRecursive()};uD.default=Txt.default({schedulePassiveEffects:ybe.unstable_scheduleCallback,cancelPassiveEffects:ybe.unstable_cancelCallback,now:Date.now,getRootHostContext:()=>({isInsideText:!1}),prepareForCommit:()=>null,preparePortalMount:()=>null,clearContainer:()=>!1,shouldDeprioritizeSubtree:()=>!1,resetAfterCommit:t=>{if(t.isStaticDirty){t.isStaticDirty=!1,typeof t.onImmediateRender=="function"&&t.onImmediateRender();return}typeof t.onRender=="function"&&t.onRender()},getChildHostContext:(t,e)=>{let r=t.isInsideText,s=e==="ink-text"||e==="ink-virtual-text";return r===s?t:{isInsideText:s}},shouldSetTextContent:()=>!1,createInstance:(t,e,r,s)=>{if(s.isInsideText&&t==="ink-box")throw new Error(" can\u2019t be nested inside component");let a=t==="ink-text"&&s.isInsideText?"ink-virtual-text":t,n=ta.createNode(a);for(let[c,f]of Object.entries(e))c!=="children"&&(c==="style"?ta.setStyle(n,f):c==="internal_transform"?n.internal_transform=f:c==="internal_static"?n.internal_static=!0:ta.setAttribute(n,c,f));return n},createTextInstance:(t,e,r)=>{if(!r.isInsideText)throw new Error(`Text string "${t}" must be rendered inside component`);return ta.createTextNode(t)},resetTextContent:()=>{},hideTextInstance:t=>{ta.setTextNodeValue(t,"")},unhideTextInstance:(t,e)=>{ta.setTextNodeValue(t,e)},getPublicInstance:t=>t,hideInstance:t=>{var e;(e=t.yogaNode)===null||e===void 0||e.setDisplay(Ebe.default.DISPLAY_NONE)},unhideInstance:t=>{var e;(e=t.yogaNode)===null||e===void 0||e.setDisplay(Ebe.default.DISPLAY_FLEX)},appendInitialChild:ta.appendChildNode,appendChild:ta.appendChildNode,insertBefore:ta.insertBeforeNode,finalizeInitialChildren:(t,e,r,s)=>(t.internal_static&&(s.isStaticDirty=!0,s.staticNode=t),!1),supportsMutation:!0,appendChildToContainer:ta.appendChildNode,insertInContainerBefore:ta.insertBeforeNode,removeChildFromContainer:(t,e)=>{ta.removeChildNode(t,e),Ibe(e.yogaNode)},prepareUpdate:(t,e,r,s,a)=>{t.internal_static&&(a.isStaticDirty=!0);let n={},c=Object.keys(s);for(let f of c)if(s[f]!==r[f]){if(f==="style"&&typeof s.style=="object"&&typeof r.style=="object"){let h=s.style,E=r.style,C=Object.keys(h);for(let S of C){if(S==="borderStyle"||S==="borderColor"){if(typeof n.style!="object"){let P={};n.style=P}n.style.borderStyle=h.borderStyle,n.style.borderColor=h.borderColor}if(h[S]!==E[S]){if(typeof n.style!="object"){let P={};n.style=P}n.style[S]=h[S]}}continue}n[f]=s[f]}return n},commitUpdate:(t,e)=>{for(let[r,s]of Object.entries(e))r!=="children"&&(r==="style"?ta.setStyle(t,s):r==="internal_transform"?t.internal_transform=s:r==="internal_static"?t.internal_static=!0:ta.setAttribute(t,r,s))},commitTextUpdate:(t,e,r)=>{ta.setTextNodeValue(t,r)},removeChild:(t,e)=>{ta.removeChildNode(t,e),Ibe(e.yogaNode)}})});var vbe=L((c0r,Bbe)=>{"use strict";Bbe.exports=(t,e=1,r)=>{if(r={indent:" ",includeEmptyLines:!1,...r},typeof t!="string")throw new TypeError(`Expected \`input\` to be a \`string\`, got \`${typeof t}\``);if(typeof e!="number")throw new TypeError(`Expected \`count\` to be a \`number\`, got \`${typeof e}\``);if(typeof r.indent!="string")throw new TypeError(`Expected \`options.indent\` to be a \`string\`, got \`${typeof r.indent}\``);if(e===0)return t;let s=r.includeEmptyLines?/^/gm:/^(?!\s*$)/gm;return t.replace(s,r.indent.repeat(e))}});var Sbe=L(fD=>{"use strict";var Rxt=fD&&fD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(fD,"__esModule",{value:!0});var HF=Rxt(Nm());fD.default=t=>t.getComputedWidth()-t.getComputedPadding(HF.default.EDGE_LEFT)-t.getComputedPadding(HF.default.EDGE_RIGHT)-t.getComputedBorder(HF.default.EDGE_LEFT)-t.getComputedBorder(HF.default.EDGE_RIGHT)});var Dbe=L((f0r,Fxt)=>{Fxt.exports={single:{topLeft:"\u250C",topRight:"\u2510",bottomRight:"\u2518",bottomLeft:"\u2514",vertical:"\u2502",horizontal:"\u2500"},double:{topLeft:"\u2554",topRight:"\u2557",bottomRight:"\u255D",bottomLeft:"\u255A",vertical:"\u2551",horizontal:"\u2550"},round:{topLeft:"\u256D",topRight:"\u256E",bottomRight:"\u256F",bottomLeft:"\u2570",vertical:"\u2502",horizontal:"\u2500"},bold:{topLeft:"\u250F",topRight:"\u2513",bottomRight:"\u251B",bottomLeft:"\u2517",vertical:"\u2503",horizontal:"\u2501"},singleDouble:{topLeft:"\u2553",topRight:"\u2556",bottomRight:"\u255C",bottomLeft:"\u2559",vertical:"\u2551",horizontal:"\u2500"},doubleSingle:{topLeft:"\u2552",topRight:"\u2555",bottomRight:"\u255B",bottomLeft:"\u2558",vertical:"\u2502",horizontal:"\u2550"},classic:{topLeft:"+",topRight:"+",bottomRight:"+",bottomLeft:"+",vertical:"|",horizontal:"-"}}});var Pbe=L((A0r,GW)=>{"use strict";var bbe=Dbe();GW.exports=bbe;GW.exports.default=bbe});var kbe=L((p0r,xbe)=>{"use strict";var Nxt=(t,e,r)=>{let s=t.indexOf(e);if(s===-1)return t;let a=e.length,n=0,c="";do c+=t.substr(n,s-n)+e+r,n=s+a,s=t.indexOf(e,n);while(s!==-1);return c+=t.substr(n),c},Oxt=(t,e,r,s)=>{let a=0,n="";do{let c=t[s-1]==="\r";n+=t.substr(a,(c?s-1:s)-a)+e+(c?`\r +`:` +`)+r,a=s+1,s=t.indexOf(` +`,a)}while(s!==-1);return n+=t.substr(a),n};xbe.exports={stringReplaceAll:Nxt,stringEncaseCRLFWithFirstIndex:Oxt}});var Nbe=L((h0r,Fbe)=>{"use strict";var Lxt=/(?:\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi,Qbe=/(?:^|\.)(\w+)(?:\(([^)]*)\))?/g,Mxt=/^(['"])((?:\\.|(?!\1)[^\\])*)\1$/,_xt=/\\(u(?:[a-f\d]{4}|{[a-f\d]{1,6}})|x[a-f\d]{2}|.)|([^\\])/gi,Uxt=new Map([["n",` +`],["r","\r"],["t"," "],["b","\b"],["f","\f"],["v","\v"],["0","\0"],["\\","\\"],["e","\x1B"],["a","\x07"]]);function Rbe(t){let e=t[0]==="u",r=t[1]==="{";return e&&!r&&t.length===5||t[0]==="x"&&t.length===3?String.fromCharCode(parseInt(t.slice(1),16)):e&&r?String.fromCodePoint(parseInt(t.slice(2,-1),16)):Uxt.get(t)||t}function Hxt(t,e){let r=[],s=e.trim().split(/\s*,\s*/g),a;for(let n of s){let c=Number(n);if(!Number.isNaN(c))r.push(c);else if(a=n.match(Mxt))r.push(a[2].replace(_xt,(f,p,h)=>p?Rbe(p):h));else throw new Error(`Invalid Chalk template style argument: ${n} (in style '${t}')`)}return r}function jxt(t){Qbe.lastIndex=0;let e=[],r;for(;(r=Qbe.exec(t))!==null;){let s=r[1];if(r[2]){let a=Hxt(s,r[2]);e.push([s].concat(a))}else e.push([s])}return e}function Tbe(t,e){let r={};for(let a of e)for(let n of a.styles)r[n[0]]=a.inverse?null:n.slice(1);let s=t;for(let[a,n]of Object.entries(r))if(Array.isArray(n)){if(!(a in s))throw new Error(`Unknown Chalk style: ${a}`);s=n.length>0?s[a](...n):s[a]}return s}Fbe.exports=(t,e)=>{let r=[],s=[],a=[];if(e.replace(Lxt,(n,c,f,p,h,E)=>{if(c)a.push(Rbe(c));else if(p){let C=a.join("");a=[],s.push(r.length===0?C:Tbe(t,r)(C)),r.push({inverse:f,styles:jxt(p)})}else if(h){if(r.length===0)throw new Error("Found extraneous } in Chalk template literal");s.push(Tbe(t,r)(a.join(""))),a=[],r.pop()}else a.push(E)}),s.push(a.join("")),r.length>0){let n=`Chalk template literal is missing ${r.length} closing bracket${r.length===1?"":"s"} (\`}\`)`;throw new Error(n)}return s.join("")}});var YF=L((g0r,Hbe)=>{"use strict";var AD=IB(),{stdout:YW,stderr:VW}=c4(),{stringReplaceAll:qxt,stringEncaseCRLFWithFirstIndex:Gxt}=kbe(),{isArray:jF}=Array,Lbe=["ansi","ansi","ansi256","ansi16m"],Iw=Object.create(null),Wxt=(t,e={})=>{if(e.level&&!(Number.isInteger(e.level)&&e.level>=0&&e.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");let r=YW?YW.level:0;t.level=e.level===void 0?r:e.level},KW=class{constructor(e){return Mbe(e)}},Mbe=t=>{let e={};return Wxt(e,t),e.template=(...r)=>Ube(e.template,...r),Object.setPrototypeOf(e,qF.prototype),Object.setPrototypeOf(e.template,e),e.template.constructor=()=>{throw new Error("`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.")},e.template.Instance=KW,e.template};function qF(t){return Mbe(t)}for(let[t,e]of Object.entries(AD))Iw[t]={get(){let r=GF(this,JW(e.open,e.close,this._styler),this._isEmpty);return Object.defineProperty(this,t,{value:r}),r}};Iw.visible={get(){let t=GF(this,this._styler,!0);return Object.defineProperty(this,"visible",{value:t}),t}};var _be=["rgb","hex","keyword","hsl","hsv","hwb","ansi","ansi256"];for(let t of _be)Iw[t]={get(){let{level:e}=this;return function(...r){let s=JW(AD.color[Lbe[e]][t](...r),AD.color.close,this._styler);return GF(this,s,this._isEmpty)}}};for(let t of _be){let e="bg"+t[0].toUpperCase()+t.slice(1);Iw[e]={get(){let{level:r}=this;return function(...s){let a=JW(AD.bgColor[Lbe[r]][t](...s),AD.bgColor.close,this._styler);return GF(this,a,this._isEmpty)}}}}var Yxt=Object.defineProperties(()=>{},{...Iw,level:{enumerable:!0,get(){return this._generator.level},set(t){this._generator.level=t}}}),JW=(t,e,r)=>{let s,a;return r===void 0?(s=t,a=e):(s=r.openAll+t,a=e+r.closeAll),{open:t,close:e,openAll:s,closeAll:a,parent:r}},GF=(t,e,r)=>{let s=(...a)=>jF(a[0])&&jF(a[0].raw)?Obe(s,Ube(s,...a)):Obe(s,a.length===1?""+a[0]:a.join(" "));return Object.setPrototypeOf(s,Yxt),s._generator=t,s._styler=e,s._isEmpty=r,s},Obe=(t,e)=>{if(t.level<=0||!e)return t._isEmpty?"":e;let r=t._styler;if(r===void 0)return e;let{openAll:s,closeAll:a}=r;if(e.indexOf("\x1B")!==-1)for(;r!==void 0;)e=qxt(e,r.close,r.open),r=r.parent;let n=e.indexOf(` +`);return n!==-1&&(e=Gxt(e,a,s,n)),s+e+a},WW,Ube=(t,...e)=>{let[r]=e;if(!jF(r)||!jF(r.raw))return e.join(" ");let s=e.slice(1),a=[r.raw[0]];for(let n=1;n{"use strict";var Vxt=hD&&hD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(hD,"__esModule",{value:!0});var pD=Vxt(YF()),Kxt=/^(rgb|hsl|hsv|hwb)\(\s?(\d+),\s?(\d+),\s?(\d+)\s?\)$/,Jxt=/^(ansi|ansi256)\(\s?(\d+)\s?\)$/,VF=(t,e)=>e==="foreground"?t:"bg"+t[0].toUpperCase()+t.slice(1);hD.default=(t,e,r)=>{if(!e)return t;if(e in pD.default){let a=VF(e,r);return pD.default[a](t)}if(e.startsWith("#")){let a=VF("hex",r);return pD.default[a](e)(t)}if(e.startsWith("ansi")){let a=Jxt.exec(e);if(!a)return t;let n=VF(a[1],r),c=Number(a[2]);return pD.default[n](c)(t)}if(e.startsWith("rgb")||e.startsWith("hsl")||e.startsWith("hsv")||e.startsWith("hwb")){let a=Kxt.exec(e);if(!a)return t;let n=VF(a[1],r),c=Number(a[2]),f=Number(a[3]),p=Number(a[4]);return pD.default[n](c,f,p)(t)}return t}});var qbe=L(gD=>{"use strict";var jbe=gD&&gD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(gD,"__esModule",{value:!0});var zxt=jbe(Pbe()),ZW=jbe(zW());gD.default=(t,e,r,s)=>{if(typeof r.style.borderStyle=="string"){let a=r.yogaNode.getComputedWidth(),n=r.yogaNode.getComputedHeight(),c=r.style.borderColor,f=zxt.default[r.style.borderStyle],p=ZW.default(f.topLeft+f.horizontal.repeat(a-2)+f.topRight,c,"foreground"),h=(ZW.default(f.vertical,c,"foreground")+` +`).repeat(n-2),E=ZW.default(f.bottomLeft+f.horizontal.repeat(a-2)+f.bottomRight,c,"foreground");s.write(t,e,p,{transformers:[]}),s.write(t,e+1,h,{transformers:[]}),s.write(t+a-1,e+1,h,{transformers:[]}),s.write(t,e+n-1,E,{transformers:[]})}}});var Wbe=L(dD=>{"use strict";var Om=dD&&dD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(dD,"__esModule",{value:!0});var Zxt=Om(Nm()),Xxt=Om(FW()),$xt=Om(vbe()),ekt=Om(UW()),tkt=Om(Sbe()),rkt=Om(jW()),nkt=Om(qbe()),ikt=(t,e)=>{var r;let s=(r=t.childNodes[0])===null||r===void 0?void 0:r.yogaNode;if(s){let a=s.getComputedLeft(),n=s.getComputedTop();e=` +`.repeat(n)+$xt.default(e,a)}return e},Gbe=(t,e,r)=>{var s;let{offsetX:a=0,offsetY:n=0,transformers:c=[],skipStaticElements:f}=r;if(f&&t.internal_static)return;let{yogaNode:p}=t;if(p){if(p.getDisplay()===Zxt.default.DISPLAY_NONE)return;let h=a+p.getComputedLeft(),E=n+p.getComputedTop(),C=c;if(typeof t.internal_transform=="function"&&(C=[t.internal_transform,...c]),t.nodeName==="ink-text"){let S=rkt.default(t);if(S.length>0){let P=Xxt.default(S),I=tkt.default(p);if(P>I){let R=(s=t.style.textWrap)!==null&&s!==void 0?s:"wrap";S=ekt.default(S,I,R)}S=ikt(t,S),e.write(h,E,S,{transformers:C})}return}if(t.nodeName==="ink-box"&&nkt.default(h,E,t,e),t.nodeName==="ink-root"||t.nodeName==="ink-box")for(let S of t.childNodes)Gbe(S,e,{offsetX:h,offsetY:E,transformers:C,skipStaticElements:f})}};dD.default=Gbe});var Kbe=L(mD=>{"use strict";var Vbe=mD&&mD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(mD,"__esModule",{value:!0});var Ybe=Vbe(MW()),skt=Vbe(iD()),XW=class{constructor(e){this.writes=[];let{width:r,height:s}=e;this.width=r,this.height=s}write(e,r,s,a){let{transformers:n}=a;s&&this.writes.push({x:e,y:r,text:s,transformers:n})}get(){let e=[];for(let s=0;ss.trimRight()).join(` +`),height:e.length}}};mD.default=XW});var Zbe=L(yD=>{"use strict";var $W=yD&&yD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(yD,"__esModule",{value:!0});var okt=$W(Nm()),Jbe=$W(Wbe()),zbe=$W(Kbe());yD.default=(t,e)=>{var r;if(t.yogaNode.setWidth(e),t.yogaNode){t.yogaNode.calculateLayout(void 0,void 0,okt.default.DIRECTION_LTR);let s=new zbe.default({width:t.yogaNode.getComputedWidth(),height:t.yogaNode.getComputedHeight()});Jbe.default(t,s,{skipStaticElements:!0});let a;!((r=t.staticNode)===null||r===void 0)&&r.yogaNode&&(a=new zbe.default({width:t.staticNode.yogaNode.getComputedWidth(),height:t.staticNode.yogaNode.getComputedHeight()}),Jbe.default(t.staticNode,a,{skipStaticElements:!1}));let{output:n,height:c}=s.get();return{output:n,outputHeight:c,staticOutput:a?`${a.get().output} +`:""}}return{output:"",outputHeight:0,staticOutput:""}}});var tPe=L((C0r,ePe)=>{"use strict";var Xbe=ye("stream"),$be=["assert","count","countReset","debug","dir","dirxml","error","group","groupCollapsed","groupEnd","info","log","table","time","timeEnd","timeLog","trace","warn"],eY={},akt=t=>{let e=new Xbe.PassThrough,r=new Xbe.PassThrough;e.write=a=>t("stdout",a),r.write=a=>t("stderr",a);let s=new console.Console(e,r);for(let a of $be)eY[a]=console[a],console[a]=s[a];return()=>{for(let a of $be)console[a]=eY[a];eY={}}};ePe.exports=akt});var rY=L(tY=>{"use strict";Object.defineProperty(tY,"__esModule",{value:!0});tY.default=new WeakMap});var iY=L(nY=>{"use strict";Object.defineProperty(nY,"__esModule",{value:!0});var lkt=hn(),rPe=lkt.createContext({exit:()=>{}});rPe.displayName="InternalAppContext";nY.default=rPe});var oY=L(sY=>{"use strict";Object.defineProperty(sY,"__esModule",{value:!0});var ckt=hn(),nPe=ckt.createContext({stdin:void 0,setRawMode:()=>{},isRawModeSupported:!1,internal_exitOnCtrlC:!0});nPe.displayName="InternalStdinContext";sY.default=nPe});var lY=L(aY=>{"use strict";Object.defineProperty(aY,"__esModule",{value:!0});var ukt=hn(),iPe=ukt.createContext({stdout:void 0,write:()=>{}});iPe.displayName="InternalStdoutContext";aY.default=iPe});var uY=L(cY=>{"use strict";Object.defineProperty(cY,"__esModule",{value:!0});var fkt=hn(),sPe=fkt.createContext({stderr:void 0,write:()=>{}});sPe.displayName="InternalStderrContext";cY.default=sPe});var KF=L(fY=>{"use strict";Object.defineProperty(fY,"__esModule",{value:!0});var Akt=hn(),oPe=Akt.createContext({activeId:void 0,add:()=>{},remove:()=>{},activate:()=>{},deactivate:()=>{},enableFocus:()=>{},disableFocus:()=>{},focusNext:()=>{},focusPrevious:()=>{},focus:()=>{}});oPe.displayName="InternalFocusContext";fY.default=oPe});var lPe=L((P0r,aPe)=>{"use strict";var pkt=/[|\\{}()[\]^$+*?.-]/g;aPe.exports=t=>{if(typeof t!="string")throw new TypeError("Expected a string");return t.replace(pkt,"\\$&")}});var APe=L((x0r,fPe)=>{"use strict";var hkt=lPe(),gkt=typeof process=="object"&&process&&typeof process.cwd=="function"?process.cwd():".",uPe=[].concat(ye("module").builtinModules,"bootstrap_node","node").map(t=>new RegExp(`(?:\\((?:node:)?${t}(?:\\.js)?:\\d+:\\d+\\)$|^\\s*at (?:node:)?${t}(?:\\.js)?:\\d+:\\d+$)`));uPe.push(/\((?:node:)?internal\/[^:]+:\d+:\d+\)$/,/\s*at (?:node:)?internal\/[^:]+:\d+:\d+$/,/\/\.node-spawn-wrap-\w+-\w+\/node:\d+:\d+\)?$/);var AY=class t{constructor(e){e={ignoredPackages:[],...e},"internals"in e||(e.internals=t.nodeInternals()),"cwd"in e||(e.cwd=gkt),this._cwd=e.cwd.replace(/\\/g,"/"),this._internals=[].concat(e.internals,dkt(e.ignoredPackages)),this._wrapCallSite=e.wrapCallSite||!1}static nodeInternals(){return[...uPe]}clean(e,r=0){r=" ".repeat(r),Array.isArray(e)||(e=e.split(` +`)),!/^\s*at /.test(e[0])&&/^\s*at /.test(e[1])&&(e=e.slice(1));let s=!1,a=null,n=[];return e.forEach(c=>{if(c=c.replace(/\\/g,"/"),this._internals.some(p=>p.test(c)))return;let f=/^\s*at /.test(c);s?c=c.trimEnd().replace(/^(\s+)at /,"$1"):(c=c.trim(),f&&(c=c.slice(3))),c=c.replace(`${this._cwd}/`,""),c&&(f?(a&&(n.push(a),a=null),n.push(c)):(s=!0,a=c))}),n.map(c=>`${r}${c} +`).join("")}captureString(e,r=this.captureString){typeof e=="function"&&(r=e,e=1/0);let{stackTraceLimit:s}=Error;e&&(Error.stackTraceLimit=e);let a={};Error.captureStackTrace(a,r);let{stack:n}=a;return Error.stackTraceLimit=s,this.clean(n)}capture(e,r=this.capture){typeof e=="function"&&(r=e,e=1/0);let{prepareStackTrace:s,stackTraceLimit:a}=Error;Error.prepareStackTrace=(f,p)=>this._wrapCallSite?p.map(this._wrapCallSite):p,e&&(Error.stackTraceLimit=e);let n={};Error.captureStackTrace(n,r);let{stack:c}=n;return Object.assign(Error,{prepareStackTrace:s,stackTraceLimit:a}),c}at(e=this.at){let[r]=this.capture(1,e);if(!r)return{};let s={line:r.getLineNumber(),column:r.getColumnNumber()};cPe(s,r.getFileName(),this._cwd),r.isConstructor()&&(s.constructor=!0),r.isEval()&&(s.evalOrigin=r.getEvalOrigin()),r.isNative()&&(s.native=!0);let a;try{a=r.getTypeName()}catch{}a&&a!=="Object"&&a!=="[object Object]"&&(s.type=a);let n=r.getFunctionName();n&&(s.function=n);let c=r.getMethodName();return c&&n!==c&&(s.method=c),s}parseLine(e){let r=e&&e.match(mkt);if(!r)return null;let s=r[1]==="new",a=r[2],n=r[3],c=r[4],f=Number(r[5]),p=Number(r[6]),h=r[7],E=r[8],C=r[9],S=r[10]==="native",P=r[11]===")",I,R={};if(E&&(R.line=Number(E)),C&&(R.column=Number(C)),P&&h){let N=0;for(let U=h.length-1;U>0;U--)if(h.charAt(U)===")")N++;else if(h.charAt(U)==="("&&h.charAt(U-1)===" "&&(N--,N===-1&&h.charAt(U-1)===" ")){let W=h.slice(0,U-1);h=h.slice(U+1),a+=` (${W}`;break}}if(a){let N=a.match(ykt);N&&(a=N[1],I=N[2])}return cPe(R,h,this._cwd),s&&(R.constructor=!0),n&&(R.evalOrigin=n,R.evalLine=f,R.evalColumn=p,R.evalFile=c&&c.replace(/\\/g,"/")),S&&(R.native=!0),a&&(R.function=a),I&&a!==I&&(R.method=I),R}};function cPe(t,e,r){e&&(e=e.replace(/\\/g,"/"),e.startsWith(`${r}/`)&&(e=e.slice(r.length+1)),t.file=e)}function dkt(t){if(t.length===0)return[];let e=t.map(r=>hkt(r));return new RegExp(`[/\\\\]node_modules[/\\\\](?:${e.join("|")})[/\\\\][^:]+:\\d+:\\d+`)}var mkt=new RegExp("^(?:\\s*at )?(?:(new) )?(?:(.*?) \\()?(?:eval at ([^ ]+) \\((.+?):(\\d+):(\\d+)\\), )?(?:(.+?):(\\d+):(\\d+)|(native))(\\)?)$"),ykt=/^(.*?) \[as (.*?)\]$/;fPe.exports=AY});var hPe=L((k0r,pPe)=>{"use strict";pPe.exports=(t,e)=>t.replace(/^\t+/gm,r=>" ".repeat(r.length*(e||2)))});var dPe=L((Q0r,gPe)=>{"use strict";var Ekt=hPe(),Ikt=(t,e)=>{let r=[],s=t-e,a=t+e;for(let n=s;n<=a;n++)r.push(n);return r};gPe.exports=(t,e,r)=>{if(typeof t!="string")throw new TypeError("Source code is missing.");if(!e||e<1)throw new TypeError("Line number must start from `1`.");if(t=Ekt(t).split(/\r?\n/),!(e>t.length))return r={around:3,...r},Ikt(e,r.around).filter(s=>t[s-1]!==void 0).map(s=>({line:s,value:t[s-1]}))}});var JF=L(nf=>{"use strict";var Ckt=nf&&nf.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r),Object.defineProperty(t,s,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),wkt=nf&&nf.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),Bkt=nf&&nf.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.hasOwnProperty.call(t,r)&&Ckt(e,t,r);return wkt(e,t),e},vkt=nf&&nf.__rest||function(t,e){var r={};for(var s in t)Object.prototype.hasOwnProperty.call(t,s)&&e.indexOf(s)<0&&(r[s]=t[s]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var a=0,s=Object.getOwnPropertySymbols(t);a{var{children:r}=t,s=vkt(t,["children"]);let a=Object.assign(Object.assign({},s),{marginLeft:s.marginLeft||s.marginX||s.margin||0,marginRight:s.marginRight||s.marginX||s.margin||0,marginTop:s.marginTop||s.marginY||s.margin||0,marginBottom:s.marginBottom||s.marginY||s.margin||0,paddingLeft:s.paddingLeft||s.paddingX||s.padding||0,paddingRight:s.paddingRight||s.paddingX||s.padding||0,paddingTop:s.paddingTop||s.paddingY||s.padding||0,paddingBottom:s.paddingBottom||s.paddingY||s.padding||0});return mPe.default.createElement("ink-box",{ref:e,style:a},r)});pY.displayName="Box";pY.defaultProps={flexDirection:"row",flexGrow:0,flexShrink:1};nf.default=pY});var dY=L(ED=>{"use strict";var hY=ED&&ED.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(ED,"__esModule",{value:!0});var Skt=hY(hn()),Cw=hY(YF()),yPe=hY(zW()),gY=({color:t,backgroundColor:e,dimColor:r,bold:s,italic:a,underline:n,strikethrough:c,inverse:f,wrap:p,children:h})=>{if(h==null)return null;let E=C=>(r&&(C=Cw.default.dim(C)),t&&(C=yPe.default(C,t,"foreground")),e&&(C=yPe.default(C,e,"background")),s&&(C=Cw.default.bold(C)),a&&(C=Cw.default.italic(C)),n&&(C=Cw.default.underline(C)),c&&(C=Cw.default.strikethrough(C)),f&&(C=Cw.default.inverse(C)),C);return Skt.default.createElement("ink-text",{style:{flexGrow:0,flexShrink:1,flexDirection:"row",textWrap:p},internal_transform:E},h)};gY.displayName="Text";gY.defaultProps={dimColor:!1,bold:!1,italic:!1,underline:!1,strikethrough:!1,wrap:"wrap"};ED.default=gY});var wPe=L(sf=>{"use strict";var Dkt=sf&&sf.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r),Object.defineProperty(t,s,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),bkt=sf&&sf.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),Pkt=sf&&sf.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.hasOwnProperty.call(t,r)&&Dkt(e,t,r);return bkt(e,t),e},ID=sf&&sf.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(sf,"__esModule",{value:!0});var EPe=Pkt(ye("fs")),Ts=ID(hn()),IPe=ID(APe()),xkt=ID(dPe()),rh=ID(JF()),hA=ID(dY()),CPe=new IPe.default({cwd:process.cwd(),internals:IPe.default.nodeInternals()}),kkt=({error:t})=>{let e=t.stack?t.stack.split(` +`).slice(1):void 0,r=e?CPe.parseLine(e[0]):void 0,s,a=0;if(r?.file&&r?.line&&EPe.existsSync(r.file)){let n=EPe.readFileSync(r.file,"utf8");if(s=xkt.default(n,r.line),s)for(let{line:c}of s)a=Math.max(a,String(c).length)}return Ts.default.createElement(rh.default,{flexDirection:"column",padding:1},Ts.default.createElement(rh.default,null,Ts.default.createElement(hA.default,{backgroundColor:"red",color:"white"}," ","ERROR"," "),Ts.default.createElement(hA.default,null," ",t.message)),r&&Ts.default.createElement(rh.default,{marginTop:1},Ts.default.createElement(hA.default,{dimColor:!0},r.file,":",r.line,":",r.column)),r&&s&&Ts.default.createElement(rh.default,{marginTop:1,flexDirection:"column"},s.map(({line:n,value:c})=>Ts.default.createElement(rh.default,{key:n},Ts.default.createElement(rh.default,{width:a+1},Ts.default.createElement(hA.default,{dimColor:n!==r.line,backgroundColor:n===r.line?"red":void 0,color:n===r.line?"white":void 0},String(n).padStart(a," "),":")),Ts.default.createElement(hA.default,{key:n,backgroundColor:n===r.line?"red":void 0,color:n===r.line?"white":void 0}," "+c)))),t.stack&&Ts.default.createElement(rh.default,{marginTop:1,flexDirection:"column"},t.stack.split(` +`).slice(1).map(n=>{let c=CPe.parseLine(n);return c?Ts.default.createElement(rh.default,{key:n},Ts.default.createElement(hA.default,{dimColor:!0},"- "),Ts.default.createElement(hA.default,{dimColor:!0,bold:!0},c.function),Ts.default.createElement(hA.default,{dimColor:!0,color:"gray"}," ","(",c.file,":",c.line,":",c.column,")")):Ts.default.createElement(rh.default,{key:n},Ts.default.createElement(hA.default,{dimColor:!0},"- "),Ts.default.createElement(hA.default,{dimColor:!0,bold:!0},n))})))};sf.default=kkt});var vPe=L(of=>{"use strict";var Qkt=of&&of.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r),Object.defineProperty(t,s,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),Tkt=of&&of.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),Rkt=of&&of.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.hasOwnProperty.call(t,r)&&Qkt(e,t,r);return Tkt(e,t),e},Mm=of&&of.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(of,"__esModule",{value:!0});var Lm=Rkt(hn()),BPe=Mm(pW()),Fkt=Mm(iY()),Nkt=Mm(oY()),Okt=Mm(lY()),Lkt=Mm(uY()),Mkt=Mm(KF()),_kt=Mm(wPe()),Ukt=" ",Hkt="\x1B[Z",jkt="\x1B",zF=class extends Lm.PureComponent{constructor(){super(...arguments),this.state={isFocusEnabled:!0,activeFocusId:void 0,focusables:[],error:void 0},this.rawModeEnabledCount=0,this.handleSetRawMode=e=>{let{stdin:r}=this.props;if(!this.isRawModeSupported())throw r===process.stdin?new Error(`Raw mode is not supported on the current process.stdin, which Ink uses as input stream by default. +Read about how to prevent this error on https://github.com/vadimdemedes/ink/#israwmodesupported`):new Error(`Raw mode is not supported on the stdin provided to Ink. +Read about how to prevent this error on https://github.com/vadimdemedes/ink/#israwmodesupported`);if(r.setEncoding("utf8"),e){this.rawModeEnabledCount===0&&(r.addListener("data",this.handleInput),r.resume(),r.setRawMode(!0)),this.rawModeEnabledCount++;return}--this.rawModeEnabledCount===0&&(r.setRawMode(!1),r.removeListener("data",this.handleInput),r.pause())},this.handleInput=e=>{e===""&&this.props.exitOnCtrlC&&this.handleExit(),e===jkt&&this.state.activeFocusId&&this.setState({activeFocusId:void 0}),this.state.isFocusEnabled&&this.state.focusables.length>0&&(e===Ukt&&this.focusNext(),e===Hkt&&this.focusPrevious())},this.handleExit=e=>{this.isRawModeSupported()&&this.handleSetRawMode(!1),this.props.onExit(e)},this.enableFocus=()=>{this.setState({isFocusEnabled:!0})},this.disableFocus=()=>{this.setState({isFocusEnabled:!1})},this.focus=e=>{this.setState(r=>r.focusables.some(a=>a?.id===e)?{activeFocusId:e}:r)},this.focusNext=()=>{this.setState(e=>{var r;let s=(r=e.focusables[0])===null||r===void 0?void 0:r.id;return{activeFocusId:this.findNextFocusable(e)||s}})},this.focusPrevious=()=>{this.setState(e=>{var r;let s=(r=e.focusables[e.focusables.length-1])===null||r===void 0?void 0:r.id;return{activeFocusId:this.findPreviousFocusable(e)||s}})},this.addFocusable=(e,{autoFocus:r})=>{this.setState(s=>{let a=s.activeFocusId;return!a&&r&&(a=e),{activeFocusId:a,focusables:[...s.focusables,{id:e,isActive:!0}]}})},this.removeFocusable=e=>{this.setState(r=>({activeFocusId:r.activeFocusId===e?void 0:r.activeFocusId,focusables:r.focusables.filter(s=>s.id!==e)}))},this.activateFocusable=e=>{this.setState(r=>({focusables:r.focusables.map(s=>s.id!==e?s:{id:e,isActive:!0})}))},this.deactivateFocusable=e=>{this.setState(r=>({activeFocusId:r.activeFocusId===e?void 0:r.activeFocusId,focusables:r.focusables.map(s=>s.id!==e?s:{id:e,isActive:!1})}))},this.findNextFocusable=e=>{var r;let s=e.focusables.findIndex(a=>a.id===e.activeFocusId);for(let a=s+1;a{var r;let s=e.focusables.findIndex(a=>a.id===e.activeFocusId);for(let a=s-1;a>=0;a--)if(!((r=e.focusables[a])===null||r===void 0)&&r.isActive)return e.focusables[a].id}}static getDerivedStateFromError(e){return{error:e}}isRawModeSupported(){return this.props.stdin.isTTY}render(){return Lm.default.createElement(Fkt.default.Provider,{value:{exit:this.handleExit}},Lm.default.createElement(Nkt.default.Provider,{value:{stdin:this.props.stdin,setRawMode:this.handleSetRawMode,isRawModeSupported:this.isRawModeSupported(),internal_exitOnCtrlC:this.props.exitOnCtrlC}},Lm.default.createElement(Okt.default.Provider,{value:{stdout:this.props.stdout,write:this.props.writeToStdout}},Lm.default.createElement(Lkt.default.Provider,{value:{stderr:this.props.stderr,write:this.props.writeToStderr}},Lm.default.createElement(Mkt.default.Provider,{value:{activeId:this.state.activeFocusId,add:this.addFocusable,remove:this.removeFocusable,activate:this.activateFocusable,deactivate:this.deactivateFocusable,enableFocus:this.enableFocus,disableFocus:this.disableFocus,focusNext:this.focusNext,focusPrevious:this.focusPrevious,focus:this.focus}},this.state.error?Lm.default.createElement(_kt.default,{error:this.state.error}):this.props.children)))))}componentDidMount(){BPe.default.hide(this.props.stdout)}componentWillUnmount(){BPe.default.show(this.props.stdout),this.isRawModeSupported()&&this.handleSetRawMode(!1)}componentDidCatch(e){this.handleExit(e)}};of.default=zF;zF.displayName="InternalApp"});var bPe=L(af=>{"use strict";var qkt=af&&af.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r),Object.defineProperty(t,s,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),Gkt=af&&af.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),Wkt=af&&af.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.hasOwnProperty.call(t,r)&&qkt(e,t,r);return Gkt(e,t),e},lf=af&&af.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(af,"__esModule",{value:!0});var Ykt=lf(hn()),SPe=rH(),Vkt=lf(wDe()),Kkt=lf(lW()),Jkt=lf(PDe()),zkt=lf(kDe()),mY=lf(wbe()),Zkt=lf(Zbe()),Xkt=lf(AW()),$kt=lf(tPe()),eQt=Wkt(qW()),tQt=lf(rY()),rQt=lf(vPe()),ww=process.env.CI==="false"?!1:Jkt.default,DPe=()=>{},yY=class{constructor(e){this.resolveExitPromise=()=>{},this.rejectExitPromise=()=>{},this.unsubscribeExit=()=>{},this.onRender=()=>{if(this.isUnmounted)return;let{output:r,outputHeight:s,staticOutput:a}=Zkt.default(this.rootNode,this.options.stdout.columns||80),n=a&&a!==` +`;if(this.options.debug){n&&(this.fullStaticOutput+=a),this.options.stdout.write(this.fullStaticOutput+r);return}if(ww){n&&this.options.stdout.write(a),this.lastOutput=r;return}if(n&&(this.fullStaticOutput+=a),s>=this.options.stdout.rows){this.options.stdout.write(Kkt.default.clearTerminal+this.fullStaticOutput+r),this.lastOutput=r;return}n&&(this.log.clear(),this.options.stdout.write(a),this.log(r)),!n&&r!==this.lastOutput&&this.throttledLog(r),this.lastOutput=r},zkt.default(this),this.options=e,this.rootNode=eQt.createNode("ink-root"),this.rootNode.onRender=e.debug?this.onRender:SPe(this.onRender,32,{leading:!0,trailing:!0}),this.rootNode.onImmediateRender=this.onRender,this.log=Vkt.default.create(e.stdout),this.throttledLog=e.debug?this.log:SPe(this.log,void 0,{leading:!0,trailing:!0}),this.isUnmounted=!1,this.lastOutput="",this.fullStaticOutput="",this.container=mY.default.createContainer(this.rootNode,0,!1,null),this.unsubscribeExit=Xkt.default(this.unmount,{alwaysLast:!1}),e.patchConsole&&this.patchConsole(),ww||(e.stdout.on("resize",this.onRender),this.unsubscribeResize=()=>{e.stdout.off("resize",this.onRender)})}render(e){let r=Ykt.default.createElement(rQt.default,{stdin:this.options.stdin,stdout:this.options.stdout,stderr:this.options.stderr,writeToStdout:this.writeToStdout,writeToStderr:this.writeToStderr,exitOnCtrlC:this.options.exitOnCtrlC,onExit:this.unmount},e);mY.default.updateContainer(r,this.container,null,DPe)}writeToStdout(e){if(!this.isUnmounted){if(this.options.debug){this.options.stdout.write(e+this.fullStaticOutput+this.lastOutput);return}if(ww){this.options.stdout.write(e);return}this.log.clear(),this.options.stdout.write(e),this.log(this.lastOutput)}}writeToStderr(e){if(!this.isUnmounted){if(this.options.debug){this.options.stderr.write(e),this.options.stdout.write(this.fullStaticOutput+this.lastOutput);return}if(ww){this.options.stderr.write(e);return}this.log.clear(),this.options.stderr.write(e),this.log(this.lastOutput)}}unmount(e){this.isUnmounted||(this.onRender(),this.unsubscribeExit(),typeof this.restoreConsole=="function"&&this.restoreConsole(),typeof this.unsubscribeResize=="function"&&this.unsubscribeResize(),ww?this.options.stdout.write(this.lastOutput+` +`):this.options.debug||this.log.done(),this.isUnmounted=!0,mY.default.updateContainer(null,this.container,null,DPe),tQt.default.delete(this.options.stdout),e instanceof Error?this.rejectExitPromise(e):this.resolveExitPromise())}waitUntilExit(){return this.exitPromise||(this.exitPromise=new Promise((e,r)=>{this.resolveExitPromise=e,this.rejectExitPromise=r})),this.exitPromise}clear(){!ww&&!this.options.debug&&this.log.clear()}patchConsole(){this.options.debug||(this.restoreConsole=$kt.default((e,r)=>{e==="stdout"&&this.writeToStdout(r),e==="stderr"&&(r.startsWith("The above error occurred")||this.writeToStderr(r))}))}};af.default=yY});var xPe=L(CD=>{"use strict";var PPe=CD&&CD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(CD,"__esModule",{value:!0});var nQt=PPe(bPe()),ZF=PPe(rY()),iQt=ye("stream"),sQt=(t,e)=>{let r=Object.assign({stdout:process.stdout,stdin:process.stdin,stderr:process.stderr,debug:!1,exitOnCtrlC:!0,patchConsole:!0},oQt(e)),s=aQt(r.stdout,()=>new nQt.default(r));return s.render(t),{rerender:s.render,unmount:()=>s.unmount(),waitUntilExit:s.waitUntilExit,cleanup:()=>ZF.default.delete(r.stdout),clear:s.clear}};CD.default=sQt;var oQt=(t={})=>t instanceof iQt.Stream?{stdout:t,stdin:process.stdin}:t,aQt=(t,e)=>{let r;return ZF.default.has(t)?r=ZF.default.get(t):(r=e(),ZF.default.set(t,r)),r}});var QPe=L(nh=>{"use strict";var lQt=nh&&nh.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r),Object.defineProperty(t,s,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),cQt=nh&&nh.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),uQt=nh&&nh.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.hasOwnProperty.call(t,r)&&lQt(e,t,r);return cQt(e,t),e};Object.defineProperty(nh,"__esModule",{value:!0});var wD=uQt(hn()),kPe=t=>{let{items:e,children:r,style:s}=t,[a,n]=wD.useState(0),c=wD.useMemo(()=>e.slice(a),[e,a]);wD.useLayoutEffect(()=>{n(e.length)},[e.length]);let f=c.map((h,E)=>r(h,a+E)),p=wD.useMemo(()=>Object.assign({position:"absolute",flexDirection:"column"},s),[s]);return wD.default.createElement("ink-box",{internal_static:!0,style:p},f)};kPe.displayName="Static";nh.default=kPe});var RPe=L(BD=>{"use strict";var fQt=BD&&BD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(BD,"__esModule",{value:!0});var AQt=fQt(hn()),TPe=({children:t,transform:e})=>t==null?null:AQt.default.createElement("ink-text",{style:{flexGrow:0,flexShrink:1,flexDirection:"row"},internal_transform:e},t);TPe.displayName="Transform";BD.default=TPe});var NPe=L(vD=>{"use strict";var pQt=vD&&vD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(vD,"__esModule",{value:!0});var hQt=pQt(hn()),FPe=({count:t=1})=>hQt.default.createElement("ink-text",null,` +`.repeat(t));FPe.displayName="Newline";vD.default=FPe});var MPe=L(SD=>{"use strict";var OPe=SD&&SD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(SD,"__esModule",{value:!0});var gQt=OPe(hn()),dQt=OPe(JF()),LPe=()=>gQt.default.createElement(dQt.default,{flexGrow:1});LPe.displayName="Spacer";SD.default=LPe});var XF=L(DD=>{"use strict";var mQt=DD&&DD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(DD,"__esModule",{value:!0});var yQt=hn(),EQt=mQt(oY()),IQt=()=>yQt.useContext(EQt.default);DD.default=IQt});var UPe=L(bD=>{"use strict";var CQt=bD&&bD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(bD,"__esModule",{value:!0});var _Pe=hn(),wQt=CQt(XF()),BQt=(t,e={})=>{let{stdin:r,setRawMode:s,internal_exitOnCtrlC:a}=wQt.default();_Pe.useEffect(()=>{if(e.isActive!==!1)return s(!0),()=>{s(!1)}},[e.isActive,s]),_Pe.useEffect(()=>{if(e.isActive===!1)return;let n=c=>{let f=String(c),p={upArrow:f==="\x1B[A",downArrow:f==="\x1B[B",leftArrow:f==="\x1B[D",rightArrow:f==="\x1B[C",pageDown:f==="\x1B[6~",pageUp:f==="\x1B[5~",return:f==="\r",escape:f==="\x1B",ctrl:!1,shift:!1,tab:f===" "||f==="\x1B[Z",backspace:f==="\b",delete:f==="\x7F"||f==="\x1B[3~",meta:!1};f<=""&&!p.return&&(f=String.fromCharCode(f.charCodeAt(0)+97-1),p.ctrl=!0),f.startsWith("\x1B")&&(f=f.slice(1),p.meta=!0);let h=f>="A"&&f<="Z",E=f>="\u0410"&&f<="\u042F";f.length===1&&(h||E)&&(p.shift=!0),p.tab&&f==="[Z"&&(p.shift=!0),(p.tab||p.backspace||p.delete)&&(f=""),(!(f==="c"&&p.ctrl)||!a)&&t(f,p)};return r?.on("data",n),()=>{r?.off("data",n)}},[e.isActive,r,a,t])};bD.default=BQt});var HPe=L(PD=>{"use strict";var vQt=PD&&PD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(PD,"__esModule",{value:!0});var SQt=hn(),DQt=vQt(iY()),bQt=()=>SQt.useContext(DQt.default);PD.default=bQt});var jPe=L(xD=>{"use strict";var PQt=xD&&xD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(xD,"__esModule",{value:!0});var xQt=hn(),kQt=PQt(lY()),QQt=()=>xQt.useContext(kQt.default);xD.default=QQt});var qPe=L(kD=>{"use strict";var TQt=kD&&kD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(kD,"__esModule",{value:!0});var RQt=hn(),FQt=TQt(uY()),NQt=()=>RQt.useContext(FQt.default);kD.default=NQt});var WPe=L(TD=>{"use strict";var GPe=TD&&TD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(TD,"__esModule",{value:!0});var QD=hn(),OQt=GPe(KF()),LQt=GPe(XF()),MQt=({isActive:t=!0,autoFocus:e=!1,id:r}={})=>{let{isRawModeSupported:s,setRawMode:a}=LQt.default(),{activeId:n,add:c,remove:f,activate:p,deactivate:h,focus:E}=QD.useContext(OQt.default),C=QD.useMemo(()=>r??Math.random().toString().slice(2,7),[r]);return QD.useEffect(()=>(c(C,{autoFocus:e}),()=>{f(C)}),[C,e]),QD.useEffect(()=>{t?p(C):h(C)},[t,C]),QD.useEffect(()=>{if(!(!s||!t))return a(!0),()=>{a(!1)}},[t]),{isFocused:!!C&&n===C,focus:E}};TD.default=MQt});var YPe=L(RD=>{"use strict";var _Qt=RD&&RD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(RD,"__esModule",{value:!0});var UQt=hn(),HQt=_Qt(KF()),jQt=()=>{let t=UQt.useContext(HQt.default);return{enableFocus:t.enableFocus,disableFocus:t.disableFocus,focusNext:t.focusNext,focusPrevious:t.focusPrevious,focus:t.focus}};RD.default=jQt});var VPe=L(EY=>{"use strict";Object.defineProperty(EY,"__esModule",{value:!0});EY.default=t=>{var e,r,s,a;return{width:(r=(e=t.yogaNode)===null||e===void 0?void 0:e.getComputedWidth())!==null&&r!==void 0?r:0,height:(a=(s=t.yogaNode)===null||s===void 0?void 0:s.getComputedHeight())!==null&&a!==void 0?a:0}}});var Vc=L(Eo=>{"use strict";Object.defineProperty(Eo,"__esModule",{value:!0});var qQt=xPe();Object.defineProperty(Eo,"render",{enumerable:!0,get:function(){return qQt.default}});var GQt=JF();Object.defineProperty(Eo,"Box",{enumerable:!0,get:function(){return GQt.default}});var WQt=dY();Object.defineProperty(Eo,"Text",{enumerable:!0,get:function(){return WQt.default}});var YQt=QPe();Object.defineProperty(Eo,"Static",{enumerable:!0,get:function(){return YQt.default}});var VQt=RPe();Object.defineProperty(Eo,"Transform",{enumerable:!0,get:function(){return VQt.default}});var KQt=NPe();Object.defineProperty(Eo,"Newline",{enumerable:!0,get:function(){return KQt.default}});var JQt=MPe();Object.defineProperty(Eo,"Spacer",{enumerable:!0,get:function(){return JQt.default}});var zQt=UPe();Object.defineProperty(Eo,"useInput",{enumerable:!0,get:function(){return zQt.default}});var ZQt=HPe();Object.defineProperty(Eo,"useApp",{enumerable:!0,get:function(){return ZQt.default}});var XQt=XF();Object.defineProperty(Eo,"useStdin",{enumerable:!0,get:function(){return XQt.default}});var $Qt=jPe();Object.defineProperty(Eo,"useStdout",{enumerable:!0,get:function(){return $Qt.default}});var eTt=qPe();Object.defineProperty(Eo,"useStderr",{enumerable:!0,get:function(){return eTt.default}});var tTt=WPe();Object.defineProperty(Eo,"useFocus",{enumerable:!0,get:function(){return tTt.default}});var rTt=YPe();Object.defineProperty(Eo,"useFocusManager",{enumerable:!0,get:function(){return rTt.default}});var nTt=VPe();Object.defineProperty(Eo,"measureElement",{enumerable:!0,get:function(){return nTt.default}})});var CY={};Vt(CY,{Gem:()=>IY});var KPe,_m,IY,$F=It(()=>{KPe=et(Vc()),_m=et(hn()),IY=(0,_m.memo)(({active:t})=>{let e=(0,_m.useMemo)(()=>t?"\u25C9":"\u25EF",[t]),r=(0,_m.useMemo)(()=>t?"green":"yellow",[t]);return _m.default.createElement(KPe.Text,{color:r},e)})});var zPe={};Vt(zPe,{useKeypress:()=>Um});function Um({active:t},e,r){let{stdin:s}=(0,JPe.useStdin)(),a=(0,eN.useCallback)((n,c)=>e(n,c),r);(0,eN.useEffect)(()=>{if(!(!t||!s))return s.on("keypress",a),()=>{s.off("keypress",a)}},[t,a,s])}var JPe,eN,FD=It(()=>{JPe=et(Vc()),eN=et(hn())});var XPe={};Vt(XPe,{FocusRequest:()=>ZPe,useFocusRequest:()=>wY});var ZPe,wY,BY=It(()=>{FD();ZPe=(r=>(r.BEFORE="before",r.AFTER="after",r))(ZPe||{}),wY=function({active:t},e,r){Um({active:t},(s,a)=>{a.name==="tab"&&(a.shift?e("before"):e("after"))},r)}});var $Pe={};Vt($Pe,{useListInput:()=>ND});var ND,tN=It(()=>{FD();ND=function(t,e,{active:r,minus:s,plus:a,set:n,loop:c=!0}){Um({active:r},(f,p)=>{let h=e.indexOf(t);switch(p.name){case s:{let E=h-1;if(c){n(e[(e.length+E)%e.length]);return}if(E<0)return;n(e[E])}break;case a:{let E=h+1;if(c){n(e[E%e.length]);return}if(E>=e.length)return;n(e[E])}break}},[e,t,a,n,c])}});var rN={};Vt(rN,{ScrollableItems:()=>iTt});var tg,ml,iTt,nN=It(()=>{tg=et(Vc()),ml=et(hn());BY();tN();iTt=({active:t=!0,children:e=[],radius:r=10,size:s=1,loop:a=!0,onFocusRequest:n,willReachEnd:c})=>{let f=N=>{if(N.key===null)throw new Error("Expected all children to have a key");return N.key},p=ml.default.Children.map(e,N=>f(N)),h=p[0],[E,C]=(0,ml.useState)(h),S=p.indexOf(E);(0,ml.useEffect)(()=>{p.includes(E)||C(h)},[e]),(0,ml.useEffect)(()=>{c&&S>=p.length-2&&c()},[S]),wY({active:t&&!!n},N=>{n?.(N)},[n]),ND(E,p,{active:t,minus:"up",plus:"down",set:C,loop:a});let P=S-r,I=S+r;I>p.length&&(P-=I-p.length,I=p.length),P<0&&(I+=-P,P=0),I>=p.length&&(I=p.length-1);let R=[];for(let N=P;N<=I;++N){let U=p[N],W=t&&U===E;R.push(ml.default.createElement(tg.Box,{key:U,height:s},ml.default.createElement(tg.Box,{marginLeft:1,marginRight:1},ml.default.createElement(tg.Text,null,W?ml.default.createElement(tg.Text,{color:"cyan",bold:!0},">"):" ")),ml.default.createElement(tg.Box,null,ml.default.cloneElement(e[N],{active:W}))))}return ml.default.createElement(tg.Box,{flexDirection:"column",width:"100%"},R)}});var exe,ih,txe,vY,rxe,SY=It(()=>{exe=et(Vc()),ih=et(hn()),txe=ye("readline"),vY=ih.default.createContext(null),rxe=({children:t})=>{let{stdin:e,setRawMode:r}=(0,exe.useStdin)();(0,ih.useEffect)(()=>{r&&r(!0),e&&(0,txe.emitKeypressEvents)(e)},[e,r]);let[s,a]=(0,ih.useState)(new Map),n=(0,ih.useMemo)(()=>({getAll:()=>s,get:c=>s.get(c),set:(c,f)=>a(new Map([...s,[c,f]]))}),[s,a]);return ih.default.createElement(vY.Provider,{value:n,children:t})}});var DY={};Vt(DY,{useMinistore:()=>sTt});function sTt(t,e){let r=(0,iN.useContext)(vY);if(r===null)throw new Error("Expected this hook to run with a ministore context attached");if(typeof t>"u")return r.getAll();let s=(0,iN.useCallback)(n=>{r.set(t,n)},[t,r.set]),a=r.get(t);return typeof a>"u"&&(a=e),[a,s]}var iN,bY=It(()=>{iN=et(hn());SY()});var oN={};Vt(oN,{renderForm:()=>oTt});async function oTt(t,e,{stdin:r,stdout:s,stderr:a}){let n,c=p=>{let{exit:h}=(0,sN.useApp)();Um({active:!0},(E,C)=>{C.name==="return"&&(n=p,h())},[h,p])},{waitUntilExit:f}=(0,sN.render)(PY.default.createElement(rxe,null,PY.default.createElement(t,{...e,useSubmit:c})),{stdin:r,stdout:s,stderr:a});return await f(),n}var sN,PY,aN=It(()=>{sN=et(Vc()),PY=et(hn());SY();FD()});var oxe=L(OD=>{"use strict";Object.defineProperty(OD,"__esModule",{value:!0});OD.UncontrolledTextInput=void 0;var ixe=hn(),xY=hn(),nxe=Vc(),Hm=YF(),sxe=({value:t,placeholder:e="",focus:r=!0,mask:s,highlightPastedText:a=!1,showCursor:n=!0,onChange:c,onSubmit:f})=>{let[{cursorOffset:p,cursorWidth:h},E]=xY.useState({cursorOffset:(t||"").length,cursorWidth:0});xY.useEffect(()=>{E(R=>{if(!r||!n)return R;let N=t||"";return R.cursorOffset>N.length-1?{cursorOffset:N.length,cursorWidth:0}:R})},[t,r,n]);let C=a?h:0,S=s?s.repeat(t.length):t,P=S,I=e?Hm.grey(e):void 0;if(n&&r){I=e.length>0?Hm.inverse(e[0])+Hm.grey(e.slice(1)):Hm.inverse(" "),P=S.length>0?"":Hm.inverse(" ");let R=0;for(let N of S)R>=p-C&&R<=p?P+=Hm.inverse(N):P+=N,R++;S.length>0&&p===S.length&&(P+=Hm.inverse(" "))}return nxe.useInput((R,N)=>{if(N.upArrow||N.downArrow||N.ctrl&&R==="c"||N.tab||N.shift&&N.tab)return;if(N.return){f&&f(t);return}let U=p,W=t,te=0;N.leftArrow?n&&U--:N.rightArrow?n&&U++:N.backspace||N.delete?p>0&&(W=t.slice(0,p-1)+t.slice(p,t.length),U--):(W=t.slice(0,p)+R+t.slice(p,t.length),U+=R.length,R.length>1&&(te=R.length)),p<0&&(U=0),p>t.length&&(U=t.length),E({cursorOffset:U,cursorWidth:te}),W!==t&&c(W)},{isActive:r}),ixe.createElement(nxe.Text,null,e?S.length>0?P:I:P)};OD.default=sxe;OD.UncontrolledTextInput=({initialValue:t="",...e})=>{let[r,s]=xY.useState(t);return ixe.createElement(sxe,Object.assign({},e,{value:r,onChange:s}))}});var cxe={};Vt(cxe,{Pad:()=>kY});var axe,lxe,kY,QY=It(()=>{axe=et(Vc()),lxe=et(hn()),kY=({length:t,active:e})=>{if(t===0)return null;let r=t>1?` ${"-".repeat(t-1)}`:" ";return lxe.default.createElement(axe.Text,{dimColor:!e},r)}});var uxe={};Vt(uxe,{ItemOptions:()=>aTt});var MD,rg,aTt,fxe=It(()=>{MD=et(Vc()),rg=et(hn());tN();$F();QY();aTt=function({active:t,skewer:e,options:r,value:s,onChange:a,sizes:n=[]}){let c=r.filter(({label:p})=>!!p).map(({value:p})=>p),f=r.findIndex(p=>p.value===s&&p.label!="");return ND(s,c,{active:t,minus:"left",plus:"right",set:a}),rg.default.createElement(rg.default.Fragment,null,r.map(({label:p},h)=>{let E=h===f,C=n[h]-1||0,S=p.replace(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g,""),P=Math.max(0,C-S.length-2);return p?rg.default.createElement(MD.Box,{key:p,width:C,marginLeft:1},rg.default.createElement(MD.Text,{wrap:"truncate"},rg.default.createElement(IY,{active:E})," ",p),e?rg.default.createElement(kY,{active:t,length:P}):null):rg.default.createElement(MD.Box,{key:`spacer-${h}`,width:C,marginLeft:1})}))}});var Dxe=L((Ndr,Sxe)=>{var jY;Sxe.exports=()=>(typeof jY>"u"&&(jY=ye("zlib").brotliDecompressSync(Buffer.from("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","base64")).toString()),jY)});var Vxe=L((omr,Yxe)=>{var ZY=Symbol("arg flag"),Kc=class t extends Error{constructor(e,r){super(e),this.name="ArgError",this.code=r,Object.setPrototypeOf(this,t.prototype)}};function tb(t,{argv:e=process.argv.slice(2),permissive:r=!1,stopAtPositional:s=!1}={}){if(!t)throw new Kc("argument specification object is required","ARG_CONFIG_NO_SPEC");let a={_:[]},n={},c={};for(let f of Object.keys(t)){if(!f)throw new Kc("argument key cannot be an empty string","ARG_CONFIG_EMPTY_KEY");if(f[0]!=="-")throw new Kc(`argument key must start with '-' but found: '${f}'`,"ARG_CONFIG_NONOPT_KEY");if(f.length===1)throw new Kc(`argument key must have a name; singular '-' keys are not allowed: ${f}`,"ARG_CONFIG_NONAME_KEY");if(typeof t[f]=="string"){n[f]=t[f];continue}let p=t[f],h=!1;if(Array.isArray(p)&&p.length===1&&typeof p[0]=="function"){let[E]=p;p=(C,S,P=[])=>(P.push(E(C,S,P[P.length-1])),P),h=E===Boolean||E[ZY]===!0}else if(typeof p=="function")h=p===Boolean||p[ZY]===!0;else throw new Kc(`type missing or not a function or valid array type: ${f}`,"ARG_CONFIG_VAD_TYPE");if(f[1]!=="-"&&f.length>2)throw new Kc(`short argument keys (with a single hyphen) must have only one character: ${f}`,"ARG_CONFIG_SHORTOPT_TOOLONG");c[f]=[p,h]}for(let f=0,p=e.length;f0){a._=a._.concat(e.slice(f));break}if(h==="--"){a._=a._.concat(e.slice(f+1));break}if(h.length>1&&h[0]==="-"){let E=h[1]==="-"||h.length===2?[h]:h.slice(1).split("").map(C=>`-${C}`);for(let C=0;C1&&e[f+1][0]==="-"&&!(e[f+1].match(/^-?\d*(\.(?=\d))?\d*$/)&&(N===Number||typeof BigInt<"u"&&N===BigInt))){let W=P===R?"":` (alias for ${R})`;throw new Kc(`option requires argument: ${P}${W}`,"ARG_MISSING_REQUIRED_LONGARG")}a[R]=N(e[f+1],R,a[R]),++f}else a[R]=N(I,R,a[R])}}else a._.push(h)}return a}tb.flag=t=>(t[ZY]=!0,t);tb.COUNT=tb.flag((t,e,r)=>(r||0)+1);tb.ArgError=Kc;Yxe.exports=tb});var tke=L((Omr,eke)=>{var tV;eke.exports=()=>(typeof tV>"u"&&(tV=ye("zlib").brotliDecompressSync(Buffer.from("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","base64")).toString()),tV)});var oke=L((aV,lV)=>{(function(t){aV&&typeof aV=="object"&&typeof lV<"u"?lV.exports=t():typeof define=="function"&&define.amd?define([],t):typeof window<"u"?window.isWindows=t():typeof global<"u"?global.isWindows=t():typeof self<"u"?self.isWindows=t():this.isWindows=t()})(function(){"use strict";return function(){return process&&(process.platform==="win32"||/^(msys|cygwin)$/.test(process.env.OSTYPE))}})});var uke=L((Fyr,cke)=>{"use strict";cV.ifExists=lRt;var xw=ye("util"),Jc=ye("path"),ake=oke(),sRt=/^#!\s*(?:\/usr\/bin\/env)?\s*([^ \t]+)(.*)$/,oRt={createPwshFile:!0,createCmdFile:ake(),fs:ye("fs")},aRt=new Map([[".js","node"],[".cjs","node"],[".mjs","node"],[".cmd","cmd"],[".bat","cmd"],[".ps1","pwsh"],[".sh","sh"]]);function lke(t){let e={...oRt,...t},r=e.fs;return e.fs_={chmod:r.chmod?xw.promisify(r.chmod):async()=>{},mkdir:xw.promisify(r.mkdir),readFile:xw.promisify(r.readFile),stat:xw.promisify(r.stat),unlink:xw.promisify(r.unlink),writeFile:xw.promisify(r.writeFile)},e}async function cV(t,e,r){let s=lke(r);await s.fs_.stat(t),await uRt(t,e,s)}function lRt(t,e,r){return cV(t,e,r).catch(()=>{})}function cRt(t,e){return e.fs_.unlink(t).catch(()=>{})}async function uRt(t,e,r){let s=await gRt(t,r);return await fRt(e,r),ARt(t,e,s,r)}function fRt(t,e){return e.fs_.mkdir(Jc.dirname(t),{recursive:!0})}function ARt(t,e,r,s){let a=lke(s),n=[{generator:yRt,extension:""}];return a.createCmdFile&&n.push({generator:mRt,extension:".cmd"}),a.createPwshFile&&n.push({generator:ERt,extension:".ps1"}),Promise.all(n.map(c=>dRt(t,e+c.extension,r,c.generator,a)))}function pRt(t,e){return cRt(t,e)}function hRt(t,e){return IRt(t,e)}async function gRt(t,e){let a=(await e.fs_.readFile(t,"utf8")).trim().split(/\r*\n/)[0].match(sRt);if(!a){let n=Jc.extname(t).toLowerCase();return{program:aRt.get(n)||null,additionalArgs:""}}return{program:a[1],additionalArgs:a[2]}}async function dRt(t,e,r,s,a){let n=a.preserveSymlinks?"--preserve-symlinks":"",c=[r.additionalArgs,n].filter(f=>f).join(" ");return a=Object.assign({},a,{prog:r.program,args:c}),await pRt(e,a),await a.fs_.writeFile(e,s(t,e,a),"utf8"),hRt(e,a)}function mRt(t,e,r){let a=Jc.relative(Jc.dirname(e),t).split("/").join("\\"),n=Jc.isAbsolute(a)?`"${a}"`:`"%~dp0\\${a}"`,c,f=r.prog,p=r.args||"",h=uV(r.nodePath).win32;f?(c=`"%~dp0\\${f}.exe"`,a=n):(f=n,p="",a="");let E=r.progArgs?`${r.progArgs.join(" ")} `:"",C=h?`@SET NODE_PATH=${h}\r +`:"";return c?C+=`@IF EXIST ${c} (\r + ${c} ${p} ${a} ${E}%*\r +) ELSE (\r + @SETLOCAL\r + @SET PATHEXT=%PATHEXT:;.JS;=;%\r + ${f} ${p} ${a} ${E}%*\r +)\r +`:C+=`@${f} ${p} ${a} ${E}%*\r +`,C}function yRt(t,e,r){let s=Jc.relative(Jc.dirname(e),t),a=r.prog&&r.prog.split("\\").join("/"),n;s=s.split("\\").join("/");let c=Jc.isAbsolute(s)?`"${s}"`:`"$basedir/${s}"`,f=r.args||"",p=uV(r.nodePath).posix;a?(n=`"$basedir/${r.prog}"`,s=c):(a=c,f="",s="");let h=r.progArgs?`${r.progArgs.join(" ")} `:"",E=`#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\\\,/,g')") + +case \`uname\` in + *CYGWIN*) basedir=\`cygpath -w "$basedir"\`;; +esac + +`,C=r.nodePath?`export NODE_PATH="${p}" +`:"";return n?E+=`${C}if [ -x ${n} ]; then + exec ${n} ${f} ${s} ${h}"$@" +else + exec ${a} ${f} ${s} ${h}"$@" +fi +`:E+=`${C}${a} ${f} ${s} ${h}"$@" +exit $? +`,E}function ERt(t,e,r){let s=Jc.relative(Jc.dirname(e),t),a=r.prog&&r.prog.split("\\").join("/"),n=a&&`"${a}$exe"`,c;s=s.split("\\").join("/");let f=Jc.isAbsolute(s)?`"${s}"`:`"$basedir/${s}"`,p=r.args||"",h=uV(r.nodePath),E=h.win32,C=h.posix;n?(c=`"$basedir/${r.prog}$exe"`,s=f):(n=f,p="",s="");let S=r.progArgs?`${r.progArgs.join(" ")} `:"",P=`#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +${r.nodePath?`$env_node_path=$env:NODE_PATH +$env:NODE_PATH="${E}" +`:""}if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +}`;return r.nodePath&&(P+=` else { + $env:NODE_PATH="${C}" +}`),c?P+=` +$ret=0 +if (Test-Path ${c}) { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & ${c} ${p} ${s} ${S}$args + } else { + & ${c} ${p} ${s} ${S}$args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & ${n} ${p} ${s} ${S}$args + } else { + & ${n} ${p} ${s} ${S}$args + } + $ret=$LASTEXITCODE +} +${r.nodePath?`$env:NODE_PATH=$env_node_path +`:""}exit $ret +`:P+=` +# Support pipeline input +if ($MyInvocation.ExpectingInput) { + $input | & ${n} ${p} ${s} ${S}$args +} else { + & ${n} ${p} ${s} ${S}$args +} +${r.nodePath?`$env:NODE_PATH=$env_node_path +`:""}exit $LASTEXITCODE +`,P}function IRt(t,e){return e.fs_.chmod(t,493)}function uV(t){if(!t)return{win32:"",posix:""};let e=typeof t=="string"?t.split(Jc.delimiter):Array.from(t),r={};for(let s=0;s`/mnt/${f.toLowerCase()}`):e[s];r.win32=r.win32?`${r.win32};${a}`:a,r.posix=r.posix?`${r.posix}:${n}`:n,r[s]={win32:a,posix:n}}return r}cke.exports=cV});var vV=L((tIr,kke)=>{kke.exports=ye("stream")});var Fke=L((rIr,Rke)=>{"use strict";function Qke(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);e&&(s=s.filter(function(a){return Object.getOwnPropertyDescriptor(t,a).enumerable})),r.push.apply(r,s)}return r}function JRt(t){for(var e=1;e0?this.tail.next=s:this.head=s,this.tail=s,++this.length}},{key:"unshift",value:function(r){var s={data:r,next:this.head};this.length===0&&(this.tail=s),this.head=s,++this.length}},{key:"shift",value:function(){if(this.length!==0){var r=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,r}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(r){if(this.length===0)return"";for(var s=this.head,a=""+s.data;s=s.next;)a+=r+s.data;return a}},{key:"concat",value:function(r){if(this.length===0)return CN.alloc(0);for(var s=CN.allocUnsafe(r>>>0),a=this.head,n=0;a;)rFt(a.data,s,n),n+=a.data.length,a=a.next;return s}},{key:"consume",value:function(r,s){var a;return rc.length?c.length:r;if(f===c.length?n+=c:n+=c.slice(0,r),r-=f,r===0){f===c.length?(++a,s.next?this.head=s.next:this.head=this.tail=null):(this.head=s,s.data=c.slice(f));break}++a}return this.length-=a,n}},{key:"_getBuffer",value:function(r){var s=CN.allocUnsafe(r),a=this.head,n=1;for(a.data.copy(s),r-=a.data.length;a=a.next;){var c=a.data,f=r>c.length?c.length:r;if(c.copy(s,s.length-r,0,f),r-=f,r===0){f===c.length?(++n,a.next?this.head=a.next:this.head=this.tail=null):(this.head=a,a.data=c.slice(f));break}++n}return this.length-=n,s}},{key:tFt,value:function(r,s){return SV(this,JRt({},s,{depth:0,customInspect:!1}))}}]),t}()});var bV=L((nIr,Oke)=>{"use strict";function nFt(t,e){var r=this,s=this._readableState&&this._readableState.destroyed,a=this._writableState&&this._writableState.destroyed;return s||a?(e?e(t):t&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,process.nextTick(DV,this,t)):process.nextTick(DV,this,t)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(t||null,function(n){!e&&n?r._writableState?r._writableState.errorEmitted?process.nextTick(wN,r):(r._writableState.errorEmitted=!0,process.nextTick(Nke,r,n)):process.nextTick(Nke,r,n):e?(process.nextTick(wN,r),e(n)):process.nextTick(wN,r)}),this)}function Nke(t,e){DV(t,e),wN(t)}function wN(t){t._writableState&&!t._writableState.emitClose||t._readableState&&!t._readableState.emitClose||t.emit("close")}function iFt(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function DV(t,e){t.emit("error",e)}function sFt(t,e){var r=t._readableState,s=t._writableState;r&&r.autoDestroy||s&&s.autoDestroy?t.destroy(e):t.emit("error",e)}Oke.exports={destroy:nFt,undestroy:iFt,errorOrDestroy:sFt}});var cg=L((iIr,_ke)=>{"use strict";var Mke={};function Zc(t,e,r){r||(r=Error);function s(n,c,f){return typeof e=="string"?e:e(n,c,f)}class a extends r{constructor(c,f,p){super(s(c,f,p))}}a.prototype.name=r.name,a.prototype.code=t,Mke[t]=a}function Lke(t,e){if(Array.isArray(t)){let r=t.length;return t=t.map(s=>String(s)),r>2?`one of ${e} ${t.slice(0,r-1).join(", ")}, or `+t[r-1]:r===2?`one of ${e} ${t[0]} or ${t[1]}`:`of ${e} ${t[0]}`}else return`of ${e} ${String(t)}`}function oFt(t,e,r){return t.substr(!r||r<0?0:+r,e.length)===e}function aFt(t,e,r){return(r===void 0||r>t.length)&&(r=t.length),t.substring(r-e.length,r)===e}function lFt(t,e,r){return typeof r!="number"&&(r=0),r+e.length>t.length?!1:t.indexOf(e,r)!==-1}Zc("ERR_INVALID_OPT_VALUE",function(t,e){return'The value "'+e+'" is invalid for option "'+t+'"'},TypeError);Zc("ERR_INVALID_ARG_TYPE",function(t,e,r){let s;typeof e=="string"&&oFt(e,"not ")?(s="must not be",e=e.replace(/^not /,"")):s="must be";let a;if(aFt(t," argument"))a=`The ${t} ${s} ${Lke(e,"type")}`;else{let n=lFt(t,".")?"property":"argument";a=`The "${t}" ${n} ${s} ${Lke(e,"type")}`}return a+=`. Received type ${typeof r}`,a},TypeError);Zc("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF");Zc("ERR_METHOD_NOT_IMPLEMENTED",function(t){return"The "+t+" method is not implemented"});Zc("ERR_STREAM_PREMATURE_CLOSE","Premature close");Zc("ERR_STREAM_DESTROYED",function(t){return"Cannot call "+t+" after a stream was destroyed"});Zc("ERR_MULTIPLE_CALLBACK","Callback called multiple times");Zc("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable");Zc("ERR_STREAM_WRITE_AFTER_END","write after end");Zc("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError);Zc("ERR_UNKNOWN_ENCODING",function(t){return"Unknown encoding: "+t},TypeError);Zc("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event");_ke.exports.codes=Mke});var PV=L((sIr,Uke)=>{"use strict";var cFt=cg().codes.ERR_INVALID_OPT_VALUE;function uFt(t,e,r){return t.highWaterMark!=null?t.highWaterMark:e?t[r]:null}function fFt(t,e,r,s){var a=uFt(e,s,r);if(a!=null){if(!(isFinite(a)&&Math.floor(a)===a)||a<0){var n=s?r:"highWaterMark";throw new cFt(n,a)}return Math.floor(a)}return t.objectMode?16:16*1024}Uke.exports={getHighWaterMark:fFt}});var Hke=L((oIr,xV)=>{typeof Object.create=="function"?xV.exports=function(e,r){r&&(e.super_=r,e.prototype=Object.create(r.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:xV.exports=function(e,r){if(r){e.super_=r;var s=function(){};s.prototype=r.prototype,e.prototype=new s,e.prototype.constructor=e}}});var ug=L((aIr,QV)=>{try{if(kV=ye("util"),typeof kV.inherits!="function")throw"";QV.exports=kV.inherits}catch{QV.exports=Hke()}var kV});var qke=L((lIr,jke)=>{jke.exports=ye("util").deprecate});var FV=L((cIr,Jke)=>{"use strict";Jke.exports=Vi;function Wke(t){var e=this;this.next=null,this.entry=null,this.finish=function(){MFt(e,t)}}var Fw;Vi.WritableState=hb;var AFt={deprecate:qke()},Yke=vV(),vN=ye("buffer").Buffer,pFt=global.Uint8Array||function(){};function hFt(t){return vN.from(t)}function gFt(t){return vN.isBuffer(t)||t instanceof pFt}var RV=bV(),dFt=PV(),mFt=dFt.getHighWaterMark,fg=cg().codes,yFt=fg.ERR_INVALID_ARG_TYPE,EFt=fg.ERR_METHOD_NOT_IMPLEMENTED,IFt=fg.ERR_MULTIPLE_CALLBACK,CFt=fg.ERR_STREAM_CANNOT_PIPE,wFt=fg.ERR_STREAM_DESTROYED,BFt=fg.ERR_STREAM_NULL_VALUES,vFt=fg.ERR_STREAM_WRITE_AFTER_END,SFt=fg.ERR_UNKNOWN_ENCODING,Nw=RV.errorOrDestroy;ug()(Vi,Yke);function DFt(){}function hb(t,e,r){Fw=Fw||Vm(),t=t||{},typeof r!="boolean"&&(r=e instanceof Fw),this.objectMode=!!t.objectMode,r&&(this.objectMode=this.objectMode||!!t.writableObjectMode),this.highWaterMark=mFt(this,t,"writableHighWaterMark",r),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var s=t.decodeStrings===!1;this.decodeStrings=!s,this.defaultEncoding=t.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(a){RFt(e,a)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=t.emitClose!==!1,this.autoDestroy=!!t.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new Wke(this)}hb.prototype.getBuffer=function(){for(var e=this.bufferedRequest,r=[];e;)r.push(e),e=e.next;return r};(function(){try{Object.defineProperty(hb.prototype,"buffer",{get:AFt.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch{}})();var BN;typeof Symbol=="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]=="function"?(BN=Function.prototype[Symbol.hasInstance],Object.defineProperty(Vi,Symbol.hasInstance,{value:function(e){return BN.call(this,e)?!0:this!==Vi?!1:e&&e._writableState instanceof hb}})):BN=function(e){return e instanceof this};function Vi(t){Fw=Fw||Vm();var e=this instanceof Fw;if(!e&&!BN.call(Vi,this))return new Vi(t);this._writableState=new hb(t,this,e),this.writable=!0,t&&(typeof t.write=="function"&&(this._write=t.write),typeof t.writev=="function"&&(this._writev=t.writev),typeof t.destroy=="function"&&(this._destroy=t.destroy),typeof t.final=="function"&&(this._final=t.final)),Yke.call(this)}Vi.prototype.pipe=function(){Nw(this,new CFt)};function bFt(t,e){var r=new vFt;Nw(t,r),process.nextTick(e,r)}function PFt(t,e,r,s){var a;return r===null?a=new BFt:typeof r!="string"&&!e.objectMode&&(a=new yFt("chunk",["string","Buffer"],r)),a?(Nw(t,a),process.nextTick(s,a),!1):!0}Vi.prototype.write=function(t,e,r){var s=this._writableState,a=!1,n=!s.objectMode&&gFt(t);return n&&!vN.isBuffer(t)&&(t=hFt(t)),typeof e=="function"&&(r=e,e=null),n?e="buffer":e||(e=s.defaultEncoding),typeof r!="function"&&(r=DFt),s.ending?bFt(this,r):(n||PFt(this,s,t,r))&&(s.pendingcb++,a=kFt(this,s,n,t,e,r)),a};Vi.prototype.cork=function(){this._writableState.corked++};Vi.prototype.uncork=function(){var t=this._writableState;t.corked&&(t.corked--,!t.writing&&!t.corked&&!t.bufferProcessing&&t.bufferedRequest&&Vke(this,t))};Vi.prototype.setDefaultEncoding=function(e){if(typeof e=="string"&&(e=e.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((e+"").toLowerCase())>-1))throw new SFt(e);return this._writableState.defaultEncoding=e,this};Object.defineProperty(Vi.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});function xFt(t,e,r){return!t.objectMode&&t.decodeStrings!==!1&&typeof e=="string"&&(e=vN.from(e,r)),e}Object.defineProperty(Vi.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function kFt(t,e,r,s,a,n){if(!r){var c=xFt(e,s,a);s!==c&&(r=!0,a="buffer",s=c)}var f=e.objectMode?1:s.length;e.length+=f;var p=e.length{"use strict";var _Ft=Object.keys||function(t){var e=[];for(var r in t)e.push(r);return e};Zke.exports=yA;var zke=LV(),OV=FV();ug()(yA,zke);for(NV=_Ft(OV.prototype),SN=0;SN{var bN=ye("buffer"),uh=bN.Buffer;function Xke(t,e){for(var r in t)e[r]=t[r]}uh.from&&uh.alloc&&uh.allocUnsafe&&uh.allocUnsafeSlow?$ke.exports=bN:(Xke(bN,MV),MV.Buffer=Ow);function Ow(t,e,r){return uh(t,e,r)}Xke(uh,Ow);Ow.from=function(t,e,r){if(typeof t=="number")throw new TypeError("Argument must not be a number");return uh(t,e,r)};Ow.alloc=function(t,e,r){if(typeof t!="number")throw new TypeError("Argument must be a number");var s=uh(t);return e!==void 0?typeof r=="string"?s.fill(e,r):s.fill(e):s.fill(0),s};Ow.allocUnsafe=function(t){if(typeof t!="number")throw new TypeError("Argument must be a number");return uh(t)};Ow.allocUnsafeSlow=function(t){if(typeof t!="number")throw new TypeError("Argument must be a number");return bN.SlowBuffer(t)}});var HV=L(rQe=>{"use strict";var UV=eQe().Buffer,tQe=UV.isEncoding||function(t){switch(t=""+t,t&&t.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function jFt(t){if(!t)return"utf8";for(var e;;)switch(t){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return t;default:if(e)return;t=(""+t).toLowerCase(),e=!0}}function qFt(t){var e=jFt(t);if(typeof e!="string"&&(UV.isEncoding===tQe||!tQe(t)))throw new Error("Unknown encoding: "+t);return e||t}rQe.StringDecoder=gb;function gb(t){this.encoding=qFt(t);var e;switch(this.encoding){case"utf16le":this.text=JFt,this.end=zFt,e=4;break;case"utf8":this.fillLast=YFt,e=4;break;case"base64":this.text=ZFt,this.end=XFt,e=3;break;default:this.write=$Ft,this.end=eNt;return}this.lastNeed=0,this.lastTotal=0,this.lastChar=UV.allocUnsafe(e)}gb.prototype.write=function(t){if(t.length===0)return"";var e,r;if(this.lastNeed){if(e=this.fillLast(t),e===void 0)return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r>5===6?2:t>>4===14?3:t>>3===30?4:t>>6===2?-1:-2}function GFt(t,e,r){var s=e.length-1;if(s=0?(a>0&&(t.lastNeed=a-1),a):--s=0?(a>0&&(t.lastNeed=a-2),a):--s=0?(a>0&&(a===2?a=0:t.lastNeed=a-3),a):0))}function WFt(t,e,r){if((e[0]&192)!==128)return t.lastNeed=0,"\uFFFD";if(t.lastNeed>1&&e.length>1){if((e[1]&192)!==128)return t.lastNeed=1,"\uFFFD";if(t.lastNeed>2&&e.length>2&&(e[2]&192)!==128)return t.lastNeed=2,"\uFFFD"}}function YFt(t){var e=this.lastTotal-this.lastNeed,r=WFt(this,t,e);if(r!==void 0)return r;if(this.lastNeed<=t.length)return t.copy(this.lastChar,e,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,e,0,t.length),this.lastNeed-=t.length}function VFt(t,e){var r=GFt(this,t,e);if(!this.lastNeed)return t.toString("utf8",e);this.lastTotal=r;var s=t.length-(r-this.lastNeed);return t.copy(this.lastChar,0,s),t.toString("utf8",e,s)}function KFt(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+"\uFFFD":e}function JFt(t,e){if((t.length-e)%2===0){var r=t.toString("utf16le",e);if(r){var s=r.charCodeAt(r.length-1);if(s>=55296&&s<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=t[t.length-1],t.toString("utf16le",e,t.length-1)}function zFt(t){var e=t&&t.length?this.write(t):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return e+this.lastChar.toString("utf16le",0,r)}return e}function ZFt(t,e){var r=(t.length-e)%3;return r===0?t.toString("base64",e):(this.lastNeed=3-r,this.lastTotal=3,r===1?this.lastChar[0]=t[t.length-1]:(this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1]),t.toString("base64",e,t.length-r))}function XFt(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+this.lastChar.toString("base64",0,3-this.lastNeed):e}function $Ft(t){return t.toString(this.encoding)}function eNt(t){return t&&t.length?this.write(t):""}});var PN=L((AIr,sQe)=>{"use strict";var nQe=cg().codes.ERR_STREAM_PREMATURE_CLOSE;function tNt(t){var e=!1;return function(){if(!e){e=!0;for(var r=arguments.length,s=new Array(r),a=0;a{"use strict";var xN;function Ag(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var iNt=PN(),pg=Symbol("lastResolve"),Km=Symbol("lastReject"),db=Symbol("error"),kN=Symbol("ended"),Jm=Symbol("lastPromise"),jV=Symbol("handlePromise"),zm=Symbol("stream");function hg(t,e){return{value:t,done:e}}function sNt(t){var e=t[pg];if(e!==null){var r=t[zm].read();r!==null&&(t[Jm]=null,t[pg]=null,t[Km]=null,e(hg(r,!1)))}}function oNt(t){process.nextTick(sNt,t)}function aNt(t,e){return function(r,s){t.then(function(){if(e[kN]){r(hg(void 0,!0));return}e[jV](r,s)},s)}}var lNt=Object.getPrototypeOf(function(){}),cNt=Object.setPrototypeOf((xN={get stream(){return this[zm]},next:function(){var e=this,r=this[db];if(r!==null)return Promise.reject(r);if(this[kN])return Promise.resolve(hg(void 0,!0));if(this[zm].destroyed)return new Promise(function(c,f){process.nextTick(function(){e[db]?f(e[db]):c(hg(void 0,!0))})});var s=this[Jm],a;if(s)a=new Promise(aNt(s,this));else{var n=this[zm].read();if(n!==null)return Promise.resolve(hg(n,!1));a=new Promise(this[jV])}return this[Jm]=a,a}},Ag(xN,Symbol.asyncIterator,function(){return this}),Ag(xN,"return",function(){var e=this;return new Promise(function(r,s){e[zm].destroy(null,function(a){if(a){s(a);return}r(hg(void 0,!0))})})}),xN),lNt),uNt=function(e){var r,s=Object.create(cNt,(r={},Ag(r,zm,{value:e,writable:!0}),Ag(r,pg,{value:null,writable:!0}),Ag(r,Km,{value:null,writable:!0}),Ag(r,db,{value:null,writable:!0}),Ag(r,kN,{value:e._readableState.endEmitted,writable:!0}),Ag(r,jV,{value:function(n,c){var f=s[zm].read();f?(s[Jm]=null,s[pg]=null,s[Km]=null,n(hg(f,!1))):(s[pg]=n,s[Km]=c)},writable:!0}),r));return s[Jm]=null,iNt(e,function(a){if(a&&a.code!=="ERR_STREAM_PREMATURE_CLOSE"){var n=s[Km];n!==null&&(s[Jm]=null,s[pg]=null,s[Km]=null,n(a)),s[db]=a;return}var c=s[pg];c!==null&&(s[Jm]=null,s[pg]=null,s[Km]=null,c(hg(void 0,!0))),s[kN]=!0}),e.on("readable",oNt.bind(null,s)),s};oQe.exports=uNt});var fQe=L((hIr,uQe)=>{"use strict";function lQe(t,e,r,s,a,n,c){try{var f=t[n](c),p=f.value}catch(h){r(h);return}f.done?e(p):Promise.resolve(p).then(s,a)}function fNt(t){return function(){var e=this,r=arguments;return new Promise(function(s,a){var n=t.apply(e,r);function c(p){lQe(n,s,a,c,f,"next",p)}function f(p){lQe(n,s,a,c,f,"throw",p)}c(void 0)})}}function cQe(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);e&&(s=s.filter(function(a){return Object.getOwnPropertyDescriptor(t,a).enumerable})),r.push.apply(r,s)}return r}function ANt(t){for(var e=1;e{"use strict";CQe.exports=Pn;var Lw;Pn.ReadableState=gQe;var gIr=ye("events").EventEmitter,hQe=function(e,r){return e.listeners(r).length},yb=vV(),QN=ye("buffer").Buffer,dNt=global.Uint8Array||function(){};function mNt(t){return QN.from(t)}function yNt(t){return QN.isBuffer(t)||t instanceof dNt}var qV=ye("util"),ln;qV&&qV.debuglog?ln=qV.debuglog("stream"):ln=function(){};var ENt=Fke(),zV=bV(),INt=PV(),CNt=INt.getHighWaterMark,TN=cg().codes,wNt=TN.ERR_INVALID_ARG_TYPE,BNt=TN.ERR_STREAM_PUSH_AFTER_EOF,vNt=TN.ERR_METHOD_NOT_IMPLEMENTED,SNt=TN.ERR_STREAM_UNSHIFT_AFTER_END_EVENT,Mw,GV,WV;ug()(Pn,yb);var mb=zV.errorOrDestroy,YV=["error","close","destroy","pause","resume"];function DNt(t,e,r){if(typeof t.prependListener=="function")return t.prependListener(e,r);!t._events||!t._events[e]?t.on(e,r):Array.isArray(t._events[e])?t._events[e].unshift(r):t._events[e]=[r,t._events[e]]}function gQe(t,e,r){Lw=Lw||Vm(),t=t||{},typeof r!="boolean"&&(r=e instanceof Lw),this.objectMode=!!t.objectMode,r&&(this.objectMode=this.objectMode||!!t.readableObjectMode),this.highWaterMark=CNt(this,t,"readableHighWaterMark",r),this.buffer=new ENt,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=t.emitClose!==!1,this.autoDestroy=!!t.autoDestroy,this.destroyed=!1,this.defaultEncoding=t.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,t.encoding&&(Mw||(Mw=HV().StringDecoder),this.decoder=new Mw(t.encoding),this.encoding=t.encoding)}function Pn(t){if(Lw=Lw||Vm(),!(this instanceof Pn))return new Pn(t);var e=this instanceof Lw;this._readableState=new gQe(t,this,e),this.readable=!0,t&&(typeof t.read=="function"&&(this._read=t.read),typeof t.destroy=="function"&&(this._destroy=t.destroy)),yb.call(this)}Object.defineProperty(Pn.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState===void 0?!1:this._readableState.destroyed},set:function(e){this._readableState&&(this._readableState.destroyed=e)}});Pn.prototype.destroy=zV.destroy;Pn.prototype._undestroy=zV.undestroy;Pn.prototype._destroy=function(t,e){e(t)};Pn.prototype.push=function(t,e){var r=this._readableState,s;return r.objectMode?s=!0:typeof t=="string"&&(e=e||r.defaultEncoding,e!==r.encoding&&(t=QN.from(t,e),e=""),s=!0),dQe(this,t,e,!1,s)};Pn.prototype.unshift=function(t){return dQe(this,t,null,!0,!1)};function dQe(t,e,r,s,a){ln("readableAddChunk",e);var n=t._readableState;if(e===null)n.reading=!1,xNt(t,n);else{var c;if(a||(c=bNt(n,e)),c)mb(t,c);else if(n.objectMode||e&&e.length>0)if(typeof e!="string"&&!n.objectMode&&Object.getPrototypeOf(e)!==QN.prototype&&(e=mNt(e)),s)n.endEmitted?mb(t,new SNt):VV(t,n,e,!0);else if(n.ended)mb(t,new BNt);else{if(n.destroyed)return!1;n.reading=!1,n.decoder&&!r?(e=n.decoder.write(e),n.objectMode||e.length!==0?VV(t,n,e,!1):JV(t,n)):VV(t,n,e,!1)}else s||(n.reading=!1,JV(t,n))}return!n.ended&&(n.length=AQe?t=AQe:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}function pQe(t,e){return t<=0||e.length===0&&e.ended?0:e.objectMode?1:t!==t?e.flowing&&e.length?e.buffer.head.data.length:e.length:(t>e.highWaterMark&&(e.highWaterMark=PNt(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}Pn.prototype.read=function(t){ln("read",t),t=parseInt(t,10);var e=this._readableState,r=t;if(t!==0&&(e.emittedReadable=!1),t===0&&e.needReadable&&((e.highWaterMark!==0?e.length>=e.highWaterMark:e.length>0)||e.ended))return ln("read: emitReadable",e.length,e.ended),e.length===0&&e.ended?KV(this):RN(this),null;if(t=pQe(t,e),t===0&&e.ended)return e.length===0&&KV(this),null;var s=e.needReadable;ln("need readable",s),(e.length===0||e.length-t0?a=EQe(t,e):a=null,a===null?(e.needReadable=e.length<=e.highWaterMark,t=0):(e.length-=t,e.awaitDrain=0),e.length===0&&(e.ended||(e.needReadable=!0),r!==t&&e.ended&&KV(this)),a!==null&&this.emit("data",a),a};function xNt(t,e){if(ln("onEofChunk"),!e.ended){if(e.decoder){var r=e.decoder.end();r&&r.length&&(e.buffer.push(r),e.length+=e.objectMode?1:r.length)}e.ended=!0,e.sync?RN(t):(e.needReadable=!1,e.emittedReadable||(e.emittedReadable=!0,mQe(t)))}}function RN(t){var e=t._readableState;ln("emitReadable",e.needReadable,e.emittedReadable),e.needReadable=!1,e.emittedReadable||(ln("emitReadable",e.flowing),e.emittedReadable=!0,process.nextTick(mQe,t))}function mQe(t){var e=t._readableState;ln("emitReadable_",e.destroyed,e.length,e.ended),!e.destroyed&&(e.length||e.ended)&&(t.emit("readable"),e.emittedReadable=!1),e.needReadable=!e.flowing&&!e.ended&&e.length<=e.highWaterMark,ZV(t)}function JV(t,e){e.readingMore||(e.readingMore=!0,process.nextTick(kNt,t,e))}function kNt(t,e){for(;!e.reading&&!e.ended&&(e.length1&&IQe(s.pipes,t)!==-1)&&!h&&(ln("false write response, pause",s.awaitDrain),s.awaitDrain++),r.pause())}function S(N){ln("onerror",N),R(),t.removeListener("error",S),hQe(t,"error")===0&&mb(t,N)}DNt(t,"error",S);function P(){t.removeListener("finish",I),R()}t.once("close",P);function I(){ln("onfinish"),t.removeListener("close",P),R()}t.once("finish",I);function R(){ln("unpipe"),r.unpipe(t)}return t.emit("pipe",r),s.flowing||(ln("pipe resume"),r.resume()),t};function QNt(t){return function(){var r=t._readableState;ln("pipeOnDrain",r.awaitDrain),r.awaitDrain&&r.awaitDrain--,r.awaitDrain===0&&hQe(t,"data")&&(r.flowing=!0,ZV(t))}}Pn.prototype.unpipe=function(t){var e=this._readableState,r={hasUnpiped:!1};if(e.pipesCount===0)return this;if(e.pipesCount===1)return t&&t!==e.pipes?this:(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit("unpipe",this,r),this);if(!t){var s=e.pipes,a=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var n=0;n0,s.flowing!==!1&&this.resume()):t==="readable"&&!s.endEmitted&&!s.readableListening&&(s.readableListening=s.needReadable=!0,s.flowing=!1,s.emittedReadable=!1,ln("on readable",s.length,s.reading),s.length?RN(this):s.reading||process.nextTick(TNt,this)),r};Pn.prototype.addListener=Pn.prototype.on;Pn.prototype.removeListener=function(t,e){var r=yb.prototype.removeListener.call(this,t,e);return t==="readable"&&process.nextTick(yQe,this),r};Pn.prototype.removeAllListeners=function(t){var e=yb.prototype.removeAllListeners.apply(this,arguments);return(t==="readable"||t===void 0)&&process.nextTick(yQe,this),e};function yQe(t){var e=t._readableState;e.readableListening=t.listenerCount("readable")>0,e.resumeScheduled&&!e.paused?e.flowing=!0:t.listenerCount("data")>0&&t.resume()}function TNt(t){ln("readable nexttick read 0"),t.read(0)}Pn.prototype.resume=function(){var t=this._readableState;return t.flowing||(ln("resume"),t.flowing=!t.readableListening,RNt(this,t)),t.paused=!1,this};function RNt(t,e){e.resumeScheduled||(e.resumeScheduled=!0,process.nextTick(FNt,t,e))}function FNt(t,e){ln("resume",e.reading),e.reading||t.read(0),e.resumeScheduled=!1,t.emit("resume"),ZV(t),e.flowing&&!e.reading&&t.read(0)}Pn.prototype.pause=function(){return ln("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(ln("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this};function ZV(t){var e=t._readableState;for(ln("flow",e.flowing);e.flowing&&t.read()!==null;);}Pn.prototype.wrap=function(t){var e=this,r=this._readableState,s=!1;t.on("end",function(){if(ln("wrapped end"),r.decoder&&!r.ended){var c=r.decoder.end();c&&c.length&&e.push(c)}e.push(null)}),t.on("data",function(c){if(ln("wrapped data"),r.decoder&&(c=r.decoder.write(c)),!(r.objectMode&&c==null)&&!(!r.objectMode&&(!c||!c.length))){var f=e.push(c);f||(s=!0,t.pause())}});for(var a in t)this[a]===void 0&&typeof t[a]=="function"&&(this[a]=function(f){return function(){return t[f].apply(t,arguments)}}(a));for(var n=0;n=e.length?(e.decoder?r=e.buffer.join(""):e.buffer.length===1?r=e.buffer.first():r=e.buffer.concat(e.length),e.buffer.clear()):r=e.buffer.consume(t,e.decoder),r}function KV(t){var e=t._readableState;ln("endReadable",e.endEmitted),e.endEmitted||(e.ended=!0,process.nextTick(NNt,e,t))}function NNt(t,e){if(ln("endReadableNT",t.endEmitted,t.length),!t.endEmitted&&t.length===0&&(t.endEmitted=!0,e.readable=!1,e.emit("end"),t.autoDestroy)){var r=e._writableState;(!r||r.autoDestroy&&r.finished)&&e.destroy()}}typeof Symbol=="function"&&(Pn.from=function(t,e){return WV===void 0&&(WV=fQe()),WV(Pn,t,e)});function IQe(t,e){for(var r=0,s=t.length;r{"use strict";BQe.exports=fh;var FN=cg().codes,ONt=FN.ERR_METHOD_NOT_IMPLEMENTED,LNt=FN.ERR_MULTIPLE_CALLBACK,MNt=FN.ERR_TRANSFORM_ALREADY_TRANSFORMING,_Nt=FN.ERR_TRANSFORM_WITH_LENGTH_0,NN=Vm();ug()(fh,NN);function UNt(t,e){var r=this._transformState;r.transforming=!1;var s=r.writecb;if(s===null)return this.emit("error",new LNt);r.writechunk=null,r.writecb=null,e!=null&&this.push(e),s(t);var a=this._readableState;a.reading=!1,(a.needReadable||a.length{"use strict";SQe.exports=Eb;var vQe=XV();ug()(Eb,vQe);function Eb(t){if(!(this instanceof Eb))return new Eb(t);vQe.call(this,t)}Eb.prototype._transform=function(t,e,r){r(null,t)}});var QQe=L((EIr,kQe)=>{"use strict";var $V;function jNt(t){var e=!1;return function(){e||(e=!0,t.apply(void 0,arguments))}}var xQe=cg().codes,qNt=xQe.ERR_MISSING_ARGS,GNt=xQe.ERR_STREAM_DESTROYED;function bQe(t){if(t)throw t}function WNt(t){return t.setHeader&&typeof t.abort=="function"}function YNt(t,e,r,s){s=jNt(s);var a=!1;t.on("close",function(){a=!0}),$V===void 0&&($V=PN()),$V(t,{readable:e,writable:r},function(c){if(c)return s(c);a=!0,s()});var n=!1;return function(c){if(!a&&!n){if(n=!0,WNt(t))return t.abort();if(typeof t.destroy=="function")return t.destroy();s(c||new GNt("pipe"))}}}function PQe(t){t()}function VNt(t,e){return t.pipe(e)}function KNt(t){return!t.length||typeof t[t.length-1]!="function"?bQe:t.pop()}function JNt(){for(var t=arguments.length,e=new Array(t),r=0;r0;return YNt(c,p,h,function(E){a||(a=E),E&&n.forEach(PQe),!p&&(n.forEach(PQe),s(a))})});return e.reduce(VNt)}kQe.exports=JNt});var _w=L((Xc,Cb)=>{var Ib=ye("stream");process.env.READABLE_STREAM==="disable"&&Ib?(Cb.exports=Ib.Readable,Object.assign(Cb.exports,Ib),Cb.exports.Stream=Ib):(Xc=Cb.exports=LV(),Xc.Stream=Ib||Xc,Xc.Readable=Xc,Xc.Writable=FV(),Xc.Duplex=Vm(),Xc.Transform=XV(),Xc.PassThrough=DQe(),Xc.finished=PN(),Xc.pipeline=QQe())});var FQe=L((IIr,RQe)=>{"use strict";var{Buffer:uf}=ye("buffer"),TQe=Symbol.for("BufferList");function Ci(t){if(!(this instanceof Ci))return new Ci(t);Ci._init.call(this,t)}Ci._init=function(e){Object.defineProperty(this,TQe,{value:!0}),this._bufs=[],this.length=0,e&&this.append(e)};Ci.prototype._new=function(e){return new Ci(e)};Ci.prototype._offset=function(e){if(e===0)return[0,0];let r=0;for(let s=0;sthis.length||e<0)return;let r=this._offset(e);return this._bufs[r[0]][r[1]]};Ci.prototype.slice=function(e,r){return typeof e=="number"&&e<0&&(e+=this.length),typeof r=="number"&&r<0&&(r+=this.length),this.copy(null,0,e,r)};Ci.prototype.copy=function(e,r,s,a){if((typeof s!="number"||s<0)&&(s=0),(typeof a!="number"||a>this.length)&&(a=this.length),s>=this.length||a<=0)return e||uf.alloc(0);let n=!!e,c=this._offset(s),f=a-s,p=f,h=n&&r||0,E=c[1];if(s===0&&a===this.length){if(!n)return this._bufs.length===1?this._bufs[0]:uf.concat(this._bufs,this.length);for(let C=0;CS)this._bufs[C].copy(e,h,E),h+=S;else{this._bufs[C].copy(e,h,E,E+p),h+=S;break}p-=S,E&&(E=0)}return e.length>h?e.slice(0,h):e};Ci.prototype.shallowSlice=function(e,r){if(e=e||0,r=typeof r!="number"?this.length:r,e<0&&(e+=this.length),r<0&&(r+=this.length),e===r)return this._new();let s=this._offset(e),a=this._offset(r),n=this._bufs.slice(s[0],a[0]+1);return a[1]===0?n.pop():n[n.length-1]=n[n.length-1].slice(0,a[1]),s[1]!==0&&(n[0]=n[0].slice(s[1])),this._new(n)};Ci.prototype.toString=function(e,r,s){return this.slice(r,s).toString(e)};Ci.prototype.consume=function(e){if(e=Math.trunc(e),Number.isNaN(e)||e<=0)return this;for(;this._bufs.length;)if(e>=this._bufs[0].length)e-=this._bufs[0].length,this.length-=this._bufs[0].length,this._bufs.shift();else{this._bufs[0]=this._bufs[0].slice(e),this.length-=e;break}return this};Ci.prototype.duplicate=function(){let e=this._new();for(let r=0;rthis.length?this.length:e;let s=this._offset(e),a=s[0],n=s[1];for(;a=t.length){let p=c.indexOf(t,n);if(p!==-1)return this._reverseOffset([a,p]);n=c.length-t.length+1}else{let p=this._reverseOffset([a,n]);if(this._match(p,t))return p;n++}n=0}return-1};Ci.prototype._match=function(t,e){if(this.length-t{"use strict";var e7=_w().Duplex,zNt=ug(),wb=FQe();function na(t){if(!(this instanceof na))return new na(t);if(typeof t=="function"){this._callback=t;let e=function(s){this._callback&&(this._callback(s),this._callback=null)}.bind(this);this.on("pipe",function(s){s.on("error",e)}),this.on("unpipe",function(s){s.removeListener("error",e)}),t=null}wb._init.call(this,t),e7.call(this)}zNt(na,e7);Object.assign(na.prototype,wb.prototype);na.prototype._new=function(e){return new na(e)};na.prototype._write=function(e,r,s){this._appendBuffer(e),typeof s=="function"&&s()};na.prototype._read=function(e){if(!this.length)return this.push(null);e=Math.min(e,this.length),this.push(this.slice(0,e)),this.consume(e)};na.prototype.end=function(e){e7.prototype.end.call(this,e),this._callback&&(this._callback(null,this.slice()),this._callback=null)};na.prototype._destroy=function(e,r){this._bufs.length=0,this.length=0,r(e)};na.prototype._isBufferList=function(e){return e instanceof na||e instanceof wb||na.isBufferList(e)};na.isBufferList=wb.isBufferList;ON.exports=na;ON.exports.BufferListStream=na;ON.exports.BufferList=wb});var n7=L(Hw=>{var ZNt=Buffer.alloc,XNt="0000000000000000000",$Nt="7777777777777777777",OQe=48,LQe=Buffer.from("ustar\0","binary"),eOt=Buffer.from("00","binary"),tOt=Buffer.from("ustar ","binary"),rOt=Buffer.from(" \0","binary"),nOt=parseInt("7777",8),Bb=257,r7=263,iOt=function(t,e,r){return typeof t!="number"?r:(t=~~t,t>=e?e:t>=0||(t+=e,t>=0)?t:0)},sOt=function(t){switch(t){case 0:return"file";case 1:return"link";case 2:return"symlink";case 3:return"character-device";case 4:return"block-device";case 5:return"directory";case 6:return"fifo";case 7:return"contiguous-file";case 72:return"pax-header";case 55:return"pax-global-header";case 27:return"gnu-long-link-path";case 28:case 30:return"gnu-long-path"}return null},oOt=function(t){switch(t){case"file":return 0;case"link":return 1;case"symlink":return 2;case"character-device":return 3;case"block-device":return 4;case"directory":return 5;case"fifo":return 6;case"contiguous-file":return 7;case"pax-header":return 72}return 0},MQe=function(t,e,r,s){for(;re?$Nt.slice(0,e)+" ":XNt.slice(0,e-t.length)+t+" "};function aOt(t){var e;if(t[0]===128)e=!0;else if(t[0]===255)e=!1;else return null;for(var r=[],s=t.length-1;s>0;s--){var a=t[s];e?r.push(a):r.push(255-a)}var n=0,c=r.length;for(s=0;s=Math.pow(10,r)&&r++,e+r+t};Hw.decodeLongPath=function(t,e){return Uw(t,0,t.length,e)};Hw.encodePax=function(t){var e="";t.name&&(e+=t7(" path="+t.name+` +`)),t.linkname&&(e+=t7(" linkpath="+t.linkname+` +`));var r=t.pax;if(r)for(var s in r)e+=t7(" "+s+"="+r[s]+` +`);return Buffer.from(e)};Hw.decodePax=function(t){for(var e={};t.length;){for(var r=0;r100;){var a=r.indexOf("/");if(a===-1)return null;s+=s?"/"+r.slice(0,a):r.slice(0,a),r=r.slice(a+1)}return Buffer.byteLength(r)>100||Buffer.byteLength(s)>155||t.linkname&&Buffer.byteLength(t.linkname)>100?null:(e.write(r),e.write(gg(t.mode&nOt,6),100),e.write(gg(t.uid,6),108),e.write(gg(t.gid,6),116),e.write(gg(t.size,11),124),e.write(gg(t.mtime.getTime()/1e3|0,11),136),e[156]=OQe+oOt(t.type),t.linkname&&e.write(t.linkname,157),LQe.copy(e,Bb),eOt.copy(e,r7),t.uname&&e.write(t.uname,265),t.gname&&e.write(t.gname,297),e.write(gg(t.devmajor||0,6),329),e.write(gg(t.devminor||0,6),337),s&&e.write(s,345),e.write(gg(_Qe(e),6),148),e)};Hw.decode=function(t,e,r){var s=t[156]===0?0:t[156]-OQe,a=Uw(t,0,100,e),n=dg(t,100,8),c=dg(t,108,8),f=dg(t,116,8),p=dg(t,124,12),h=dg(t,136,12),E=sOt(s),C=t[157]===0?null:Uw(t,157,100,e),S=Uw(t,265,32),P=Uw(t,297,32),I=dg(t,329,8),R=dg(t,337,8),N=_Qe(t);if(N===8*32)return null;if(N!==dg(t,148,8))throw new Error("Invalid tar header. Maybe the tar is corrupted or it needs to be gunzipped?");if(LQe.compare(t,Bb,Bb+6)===0)t[345]&&(a=Uw(t,345,155,e)+"/"+a);else if(!(tOt.compare(t,Bb,Bb+6)===0&&rOt.compare(t,r7,r7+2)===0)){if(!r)throw new Error("Invalid tar header: unknown format.")}return s===0&&a&&a[a.length-1]==="/"&&(s=5),{name:a,mode:n,uid:c,gid:f,size:p,mtime:new Date(1e3*h),type:E,linkname:C,uname:S,gname:P,devmajor:I,devminor:R}}});var YQe=L((BIr,WQe)=>{var HQe=ye("util"),lOt=NQe(),vb=n7(),jQe=_w().Writable,qQe=_w().PassThrough,GQe=function(){},UQe=function(t){return t&=511,t&&512-t},cOt=function(t,e){var r=new LN(t,e);return r.end(),r},uOt=function(t,e){return e.path&&(t.name=e.path),e.linkpath&&(t.linkname=e.linkpath),e.size&&(t.size=parseInt(e.size,10)),t.pax=e,t},LN=function(t,e){this._parent=t,this.offset=e,qQe.call(this,{autoDestroy:!1})};HQe.inherits(LN,qQe);LN.prototype.destroy=function(t){this._parent.destroy(t)};var Ah=function(t){if(!(this instanceof Ah))return new Ah(t);jQe.call(this,t),t=t||{},this._offset=0,this._buffer=lOt(),this._missing=0,this._partial=!1,this._onparse=GQe,this._header=null,this._stream=null,this._overflow=null,this._cb=null,this._locked=!1,this._destroyed=!1,this._pax=null,this._paxGlobal=null,this._gnuLongPath=null,this._gnuLongLinkPath=null;var e=this,r=e._buffer,s=function(){e._continue()},a=function(S){if(e._locked=!1,S)return e.destroy(S);e._stream||s()},n=function(){e._stream=null;var S=UQe(e._header.size);S?e._parse(S,c):e._parse(512,C),e._locked||s()},c=function(){e._buffer.consume(UQe(e._header.size)),e._parse(512,C),s()},f=function(){var S=e._header.size;e._paxGlobal=vb.decodePax(r.slice(0,S)),r.consume(S),n()},p=function(){var S=e._header.size;e._pax=vb.decodePax(r.slice(0,S)),e._paxGlobal&&(e._pax=Object.assign({},e._paxGlobal,e._pax)),r.consume(S),n()},h=function(){var S=e._header.size;this._gnuLongPath=vb.decodeLongPath(r.slice(0,S),t.filenameEncoding),r.consume(S),n()},E=function(){var S=e._header.size;this._gnuLongLinkPath=vb.decodeLongPath(r.slice(0,S),t.filenameEncoding),r.consume(S),n()},C=function(){var S=e._offset,P;try{P=e._header=vb.decode(r.slice(0,512),t.filenameEncoding,t.allowUnknownFormat)}catch(I){e.emit("error",I)}if(r.consume(512),!P){e._parse(512,C),s();return}if(P.type==="gnu-long-path"){e._parse(P.size,h),s();return}if(P.type==="gnu-long-link-path"){e._parse(P.size,E),s();return}if(P.type==="pax-global-header"){e._parse(P.size,f),s();return}if(P.type==="pax-header"){e._parse(P.size,p),s();return}if(e._gnuLongPath&&(P.name=e._gnuLongPath,e._gnuLongPath=null),e._gnuLongLinkPath&&(P.linkname=e._gnuLongLinkPath,e._gnuLongLinkPath=null),e._pax&&(e._header=P=uOt(P,e._pax),e._pax=null),e._locked=!0,!P.size||P.type==="directory"){e._parse(512,C),e.emit("entry",P,cOt(e,S),a);return}e._stream=new LN(e,S),e.emit("entry",P,e._stream,a),e._parse(P.size,n),s()};this._onheader=C,this._parse(512,C)};HQe.inherits(Ah,jQe);Ah.prototype.destroy=function(t){this._destroyed||(this._destroyed=!0,t&&this.emit("error",t),this.emit("close"),this._stream&&this._stream.emit("close"))};Ah.prototype._parse=function(t,e){this._destroyed||(this._offset+=t,this._missing=t,e===this._onheader&&(this._partial=!1),this._onparse=e)};Ah.prototype._continue=function(){if(!this._destroyed){var t=this._cb;this._cb=GQe,this._overflow?this._write(this._overflow,void 0,t):t()}};Ah.prototype._write=function(t,e,r){if(!this._destroyed){var s=this._stream,a=this._buffer,n=this._missing;if(t.length&&(this._partial=!0),t.lengthn&&(c=t.slice(n),t=t.slice(0,n)),s?s.end(t):a.append(t),this._overflow=c,this._onparse()}};Ah.prototype._final=function(t){if(this._partial)return this.destroy(new Error("Unexpected end of data"));t()};WQe.exports=Ah});var KQe=L((vIr,VQe)=>{VQe.exports=ye("fs").constants||ye("constants")});var $Qe=L((SIr,XQe)=>{var jw=KQe(),JQe=kH(),_N=ug(),fOt=Buffer.alloc,zQe=_w().Readable,qw=_w().Writable,AOt=ye("string_decoder").StringDecoder,MN=n7(),pOt=parseInt("755",8),hOt=parseInt("644",8),ZQe=fOt(1024),s7=function(){},i7=function(t,e){e&=511,e&&t.push(ZQe.slice(0,512-e))};function gOt(t){switch(t&jw.S_IFMT){case jw.S_IFBLK:return"block-device";case jw.S_IFCHR:return"character-device";case jw.S_IFDIR:return"directory";case jw.S_IFIFO:return"fifo";case jw.S_IFLNK:return"symlink"}return"file"}var UN=function(t){qw.call(this),this.written=0,this._to=t,this._destroyed=!1};_N(UN,qw);UN.prototype._write=function(t,e,r){if(this.written+=t.length,this._to.push(t))return r();this._to._drain=r};UN.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var HN=function(){qw.call(this),this.linkname="",this._decoder=new AOt("utf-8"),this._destroyed=!1};_N(HN,qw);HN.prototype._write=function(t,e,r){this.linkname+=this._decoder.write(t),r()};HN.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var Sb=function(){qw.call(this),this._destroyed=!1};_N(Sb,qw);Sb.prototype._write=function(t,e,r){r(new Error("No body allowed for this entry"))};Sb.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var EA=function(t){if(!(this instanceof EA))return new EA(t);zQe.call(this,t),this._drain=s7,this._finalized=!1,this._finalizing=!1,this._destroyed=!1,this._stream=null};_N(EA,zQe);EA.prototype.entry=function(t,e,r){if(this._stream)throw new Error("already piping an entry");if(!(this._finalized||this._destroyed)){typeof e=="function"&&(r=e,e=null),r||(r=s7);var s=this;if((!t.size||t.type==="symlink")&&(t.size=0),t.type||(t.type=gOt(t.mode)),t.mode||(t.mode=t.type==="directory"?pOt:hOt),t.uid||(t.uid=0),t.gid||(t.gid=0),t.mtime||(t.mtime=new Date),typeof e=="string"&&(e=Buffer.from(e)),Buffer.isBuffer(e)){t.size=e.length,this._encode(t);var a=this.push(e);return i7(s,t.size),a?process.nextTick(r):this._drain=r,new Sb}if(t.type==="symlink"&&!t.linkname){var n=new HN;return JQe(n,function(f){if(f)return s.destroy(),r(f);t.linkname=n.linkname,s._encode(t),r()}),n}if(this._encode(t),t.type!=="file"&&t.type!=="contiguous-file")return process.nextTick(r),new Sb;var c=new UN(this);return this._stream=c,JQe(c,function(f){if(s._stream=null,f)return s.destroy(),r(f);if(c.written!==t.size)return s.destroy(),r(new Error("size mismatch"));i7(s,t.size),s._finalizing&&s.finalize(),r()}),c}};EA.prototype.finalize=function(){if(this._stream){this._finalizing=!0;return}this._finalized||(this._finalized=!0,this.push(ZQe),this.push(null))};EA.prototype.destroy=function(t){this._destroyed||(this._destroyed=!0,t&&this.emit("error",t),this.emit("close"),this._stream&&this._stream.destroy&&this._stream.destroy())};EA.prototype._encode=function(t){if(!t.pax){var e=MN.encode(t);if(e){this.push(e);return}}this._encodePax(t)};EA.prototype._encodePax=function(t){var e=MN.encodePax({name:t.name,linkname:t.linkname,pax:t.pax}),r={name:"PaxHeader",mode:t.mode,uid:t.uid,gid:t.gid,size:e.length,mtime:t.mtime,type:"pax-header",linkname:t.linkname&&"PaxHeader",uname:t.uname,gname:t.gname,devmajor:t.devmajor,devminor:t.devminor};this.push(MN.encode(r)),this.push(e),i7(this,e.length),r.size=t.size,r.type=t.type,this.push(MN.encode(r))};EA.prototype._read=function(t){var e=this._drain;this._drain=s7,e()};XQe.exports=EA});var eTe=L(o7=>{o7.extract=YQe();o7.pack=$Qe()});var pTe=L(Ra=>{"use strict";var POt=Ra&&Ra.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Ra,"__esModule",{value:!0});Ra.Minipass=Ra.isWritable=Ra.isReadable=Ra.isStream=void 0;var lTe=typeof process=="object"&&process?process:{stdout:null,stderr:null},y7=ye("node:events"),ATe=POt(ye("node:stream")),xOt=ye("node:string_decoder"),kOt=t=>!!t&&typeof t=="object"&&(t instanceof zN||t instanceof ATe.default||(0,Ra.isReadable)(t)||(0,Ra.isWritable)(t));Ra.isStream=kOt;var QOt=t=>!!t&&typeof t=="object"&&t instanceof y7.EventEmitter&&typeof t.pipe=="function"&&t.pipe!==ATe.default.Writable.prototype.pipe;Ra.isReadable=QOt;var TOt=t=>!!t&&typeof t=="object"&&t instanceof y7.EventEmitter&&typeof t.write=="function"&&typeof t.end=="function";Ra.isWritable=TOt;var ph=Symbol("EOF"),hh=Symbol("maybeEmitEnd"),mg=Symbol("emittedEnd"),GN=Symbol("emittingEnd"),Db=Symbol("emittedError"),WN=Symbol("closed"),cTe=Symbol("read"),YN=Symbol("flush"),uTe=Symbol("flushChunk"),ff=Symbol("encoding"),Ww=Symbol("decoder"),zs=Symbol("flowing"),bb=Symbol("paused"),Yw=Symbol("resume"),Zs=Symbol("buffer"),Ta=Symbol("pipes"),Xs=Symbol("bufferLength"),A7=Symbol("bufferPush"),VN=Symbol("bufferShift"),ia=Symbol("objectMode"),ts=Symbol("destroyed"),p7=Symbol("error"),h7=Symbol("emitData"),fTe=Symbol("emitEnd"),g7=Symbol("emitEnd2"),CA=Symbol("async"),d7=Symbol("abort"),KN=Symbol("aborted"),Pb=Symbol("signal"),Zm=Symbol("dataListeners"),nc=Symbol("discarded"),xb=t=>Promise.resolve().then(t),ROt=t=>t(),FOt=t=>t==="end"||t==="finish"||t==="prefinish",NOt=t=>t instanceof ArrayBuffer||!!t&&typeof t=="object"&&t.constructor&&t.constructor.name==="ArrayBuffer"&&t.byteLength>=0,OOt=t=>!Buffer.isBuffer(t)&&ArrayBuffer.isView(t),JN=class{src;dest;opts;ondrain;constructor(e,r,s){this.src=e,this.dest=r,this.opts=s,this.ondrain=()=>e[Yw](),this.dest.on("drain",this.ondrain)}unpipe(){this.dest.removeListener("drain",this.ondrain)}proxyErrors(e){}end(){this.unpipe(),this.opts.end&&this.dest.end()}},m7=class extends JN{unpipe(){this.src.removeListener("error",this.proxyErrors),super.unpipe()}constructor(e,r,s){super(e,r,s),this.proxyErrors=a=>r.emit("error",a),e.on("error",this.proxyErrors)}},LOt=t=>!!t.objectMode,MOt=t=>!t.objectMode&&!!t.encoding&&t.encoding!=="buffer",zN=class extends y7.EventEmitter{[zs]=!1;[bb]=!1;[Ta]=[];[Zs]=[];[ia];[ff];[CA];[Ww];[ph]=!1;[mg]=!1;[GN]=!1;[WN]=!1;[Db]=null;[Xs]=0;[ts]=!1;[Pb];[KN]=!1;[Zm]=0;[nc]=!1;writable=!0;readable=!0;constructor(...e){let r=e[0]||{};if(super(),r.objectMode&&typeof r.encoding=="string")throw new TypeError("Encoding and objectMode may not be used together");LOt(r)?(this[ia]=!0,this[ff]=null):MOt(r)?(this[ff]=r.encoding,this[ia]=!1):(this[ia]=!1,this[ff]=null),this[CA]=!!r.async,this[Ww]=this[ff]?new xOt.StringDecoder(this[ff]):null,r&&r.debugExposeBuffer===!0&&Object.defineProperty(this,"buffer",{get:()=>this[Zs]}),r&&r.debugExposePipes===!0&&Object.defineProperty(this,"pipes",{get:()=>this[Ta]});let{signal:s}=r;s&&(this[Pb]=s,s.aborted?this[d7]():s.addEventListener("abort",()=>this[d7]()))}get bufferLength(){return this[Xs]}get encoding(){return this[ff]}set encoding(e){throw new Error("Encoding must be set at instantiation time")}setEncoding(e){throw new Error("Encoding must be set at instantiation time")}get objectMode(){return this[ia]}set objectMode(e){throw new Error("objectMode must be set at instantiation time")}get async(){return this[CA]}set async(e){this[CA]=this[CA]||!!e}[d7](){this[KN]=!0,this.emit("abort",this[Pb]?.reason),this.destroy(this[Pb]?.reason)}get aborted(){return this[KN]}set aborted(e){}write(e,r,s){if(this[KN])return!1;if(this[ph])throw new Error("write after end");if(this[ts])return this.emit("error",Object.assign(new Error("Cannot call write after a stream was destroyed"),{code:"ERR_STREAM_DESTROYED"})),!0;typeof r=="function"&&(s=r,r="utf8"),r||(r="utf8");let a=this[CA]?xb:ROt;if(!this[ia]&&!Buffer.isBuffer(e)){if(OOt(e))e=Buffer.from(e.buffer,e.byteOffset,e.byteLength);else if(NOt(e))e=Buffer.from(e);else if(typeof e!="string")throw new Error("Non-contiguous data written to non-objectMode stream")}return this[ia]?(this[zs]&&this[Xs]!==0&&this[YN](!0),this[zs]?this.emit("data",e):this[A7](e),this[Xs]!==0&&this.emit("readable"),s&&a(s),this[zs]):e.length?(typeof e=="string"&&!(r===this[ff]&&!this[Ww]?.lastNeed)&&(e=Buffer.from(e,r)),Buffer.isBuffer(e)&&this[ff]&&(e=this[Ww].write(e)),this[zs]&&this[Xs]!==0&&this[YN](!0),this[zs]?this.emit("data",e):this[A7](e),this[Xs]!==0&&this.emit("readable"),s&&a(s),this[zs]):(this[Xs]!==0&&this.emit("readable"),s&&a(s),this[zs])}read(e){if(this[ts])return null;if(this[nc]=!1,this[Xs]===0||e===0||e&&e>this[Xs])return this[hh](),null;this[ia]&&(e=null),this[Zs].length>1&&!this[ia]&&(this[Zs]=[this[ff]?this[Zs].join(""):Buffer.concat(this[Zs],this[Xs])]);let r=this[cTe](e||null,this[Zs][0]);return this[hh](),r}[cTe](e,r){if(this[ia])this[VN]();else{let s=r;e===s.length||e===null?this[VN]():typeof s=="string"?(this[Zs][0]=s.slice(e),r=s.slice(0,e),this[Xs]-=e):(this[Zs][0]=s.subarray(e),r=s.subarray(0,e),this[Xs]-=e)}return this.emit("data",r),!this[Zs].length&&!this[ph]&&this.emit("drain"),r}end(e,r,s){return typeof e=="function"&&(s=e,e=void 0),typeof r=="function"&&(s=r,r="utf8"),e!==void 0&&this.write(e,r),s&&this.once("end",s),this[ph]=!0,this.writable=!1,(this[zs]||!this[bb])&&this[hh](),this}[Yw](){this[ts]||(!this[Zm]&&!this[Ta].length&&(this[nc]=!0),this[bb]=!1,this[zs]=!0,this.emit("resume"),this[Zs].length?this[YN]():this[ph]?this[hh]():this.emit("drain"))}resume(){return this[Yw]()}pause(){this[zs]=!1,this[bb]=!0,this[nc]=!1}get destroyed(){return this[ts]}get flowing(){return this[zs]}get paused(){return this[bb]}[A7](e){this[ia]?this[Xs]+=1:this[Xs]+=e.length,this[Zs].push(e)}[VN](){return this[ia]?this[Xs]-=1:this[Xs]-=this[Zs][0].length,this[Zs].shift()}[YN](e=!1){do;while(this[uTe](this[VN]())&&this[Zs].length);!e&&!this[Zs].length&&!this[ph]&&this.emit("drain")}[uTe](e){return this.emit("data",e),this[zs]}pipe(e,r){if(this[ts])return e;this[nc]=!1;let s=this[mg];return r=r||{},e===lTe.stdout||e===lTe.stderr?r.end=!1:r.end=r.end!==!1,r.proxyErrors=!!r.proxyErrors,s?r.end&&e.end():(this[Ta].push(r.proxyErrors?new m7(this,e,r):new JN(this,e,r)),this[CA]?xb(()=>this[Yw]()):this[Yw]()),e}unpipe(e){let r=this[Ta].find(s=>s.dest===e);r&&(this[Ta].length===1?(this[zs]&&this[Zm]===0&&(this[zs]=!1),this[Ta]=[]):this[Ta].splice(this[Ta].indexOf(r),1),r.unpipe())}addListener(e,r){return this.on(e,r)}on(e,r){let s=super.on(e,r);if(e==="data")this[nc]=!1,this[Zm]++,!this[Ta].length&&!this[zs]&&this[Yw]();else if(e==="readable"&&this[Xs]!==0)super.emit("readable");else if(FOt(e)&&this[mg])super.emit(e),this.removeAllListeners(e);else if(e==="error"&&this[Db]){let a=r;this[CA]?xb(()=>a.call(this,this[Db])):a.call(this,this[Db])}return s}removeListener(e,r){return this.off(e,r)}off(e,r){let s=super.off(e,r);return e==="data"&&(this[Zm]=this.listeners("data").length,this[Zm]===0&&!this[nc]&&!this[Ta].length&&(this[zs]=!1)),s}removeAllListeners(e){let r=super.removeAllListeners(e);return(e==="data"||e===void 0)&&(this[Zm]=0,!this[nc]&&!this[Ta].length&&(this[zs]=!1)),r}get emittedEnd(){return this[mg]}[hh](){!this[GN]&&!this[mg]&&!this[ts]&&this[Zs].length===0&&this[ph]&&(this[GN]=!0,this.emit("end"),this.emit("prefinish"),this.emit("finish"),this[WN]&&this.emit("close"),this[GN]=!1)}emit(e,...r){let s=r[0];if(e!=="error"&&e!=="close"&&e!==ts&&this[ts])return!1;if(e==="data")return!this[ia]&&!s?!1:this[CA]?(xb(()=>this[h7](s)),!0):this[h7](s);if(e==="end")return this[fTe]();if(e==="close"){if(this[WN]=!0,!this[mg]&&!this[ts])return!1;let n=super.emit("close");return this.removeAllListeners("close"),n}else if(e==="error"){this[Db]=s,super.emit(p7,s);let n=!this[Pb]||this.listeners("error").length?super.emit("error",s):!1;return this[hh](),n}else if(e==="resume"){let n=super.emit("resume");return this[hh](),n}else if(e==="finish"||e==="prefinish"){let n=super.emit(e);return this.removeAllListeners(e),n}let a=super.emit(e,...r);return this[hh](),a}[h7](e){for(let s of this[Ta])s.dest.write(e)===!1&&this.pause();let r=this[nc]?!1:super.emit("data",e);return this[hh](),r}[fTe](){return this[mg]?!1:(this[mg]=!0,this.readable=!1,this[CA]?(xb(()=>this[g7]()),!0):this[g7]())}[g7](){if(this[Ww]){let r=this[Ww].end();if(r){for(let s of this[Ta])s.dest.write(r);this[nc]||super.emit("data",r)}}for(let r of this[Ta])r.end();let e=super.emit("end");return this.removeAllListeners("end"),e}async collect(){let e=Object.assign([],{dataLength:0});this[ia]||(e.dataLength=0);let r=this.promise();return this.on("data",s=>{e.push(s),this[ia]||(e.dataLength+=s.length)}),await r,e}async concat(){if(this[ia])throw new Error("cannot concat in objectMode");let e=await this.collect();return this[ff]?e.join(""):Buffer.concat(e,e.dataLength)}async promise(){return new Promise((e,r)=>{this.on(ts,()=>r(new Error("stream destroyed"))),this.on("error",s=>r(s)),this.on("end",()=>e())})}[Symbol.asyncIterator](){this[nc]=!1;let e=!1,r=async()=>(this.pause(),e=!0,{value:void 0,done:!0});return{next:()=>{if(e)return r();let a=this.read();if(a!==null)return Promise.resolve({done:!1,value:a});if(this[ph])return r();let n,c,f=C=>{this.off("data",p),this.off("end",h),this.off(ts,E),r(),c(C)},p=C=>{this.off("error",f),this.off("end",h),this.off(ts,E),this.pause(),n({value:C,done:!!this[ph]})},h=()=>{this.off("error",f),this.off("data",p),this.off(ts,E),r(),n({done:!0,value:void 0})},E=()=>f(new Error("stream destroyed"));return new Promise((C,S)=>{c=S,n=C,this.once(ts,E),this.once("error",f),this.once("end",h),this.once("data",p)})},throw:r,return:r,[Symbol.asyncIterator](){return this}}}[Symbol.iterator](){this[nc]=!1;let e=!1,r=()=>(this.pause(),this.off(p7,r),this.off(ts,r),this.off("end",r),e=!0,{done:!0,value:void 0}),s=()=>{if(e)return r();let a=this.read();return a===null?r():{done:!1,value:a}};return this.once("end",r),this.once(p7,r),this.once(ts,r),{next:s,throw:r,return:r,[Symbol.iterator](){return this}}}destroy(e){if(this[ts])return e?this.emit("error",e):this.emit(ts),this;this[ts]=!0,this[nc]=!0,this[Zs].length=0,this[Xs]=0;let r=this;return typeof r.close=="function"&&!this[WN]&&r.close(),e?this.emit("error",e):this.emit(ts),this}static get isStream(){return Ra.isStream}};Ra.Minipass=zN});var dTe=L((YIr,wA)=>{"use strict";var Qb=ye("crypto"),{Minipass:_Ot}=pTe(),I7=["sha512","sha384","sha256"],w7=["sha512"],UOt=/^[a-z0-9+/]+(?:=?=?)$/i,HOt=/^([a-z0-9]+)-([^?]+)([?\S*]*)$/,jOt=/^([a-z0-9]+)-([A-Za-z0-9+/=]{44,88})(\?[\x21-\x7E]*)?$/,qOt=/^[\x21-\x7E]+$/,Tb=t=>t?.length?`?${t.join("?")}`:"",C7=class extends _Ot{#t;#r;#i;constructor(e){super(),this.size=0,this.opts=e,this.#e(),e?.algorithms?this.algorithms=[...e.algorithms]:this.algorithms=[...w7],this.algorithm!==null&&!this.algorithms.includes(this.algorithm)&&this.algorithms.push(this.algorithm),this.hashes=this.algorithms.map(Qb.createHash)}#e(){this.sri=this.opts?.integrity?ic(this.opts?.integrity,this.opts):null,this.expectedSize=this.opts?.size,this.sri?this.sri.isHash?(this.goodSri=!0,this.algorithm=this.sri.algorithm):(this.goodSri=!this.sri.isEmpty(),this.algorithm=this.sri.pickAlgorithm(this.opts)):this.algorithm=null,this.digests=this.goodSri?this.sri[this.algorithm]:null,this.optString=Tb(this.opts?.options)}on(e,r){return e==="size"&&this.#r?r(this.#r):e==="integrity"&&this.#t?r(this.#t):e==="verified"&&this.#i?r(this.#i):super.on(e,r)}emit(e,r){return e==="end"&&this.#n(),super.emit(e,r)}write(e){return this.size+=e.length,this.hashes.forEach(r=>r.update(e)),super.write(e)}#n(){this.goodSri||this.#e();let e=ic(this.hashes.map((s,a)=>`${this.algorithms[a]}-${s.digest("base64")}${this.optString}`).join(" "),this.opts),r=this.goodSri&&e.match(this.sri,this.opts);if(typeof this.expectedSize=="number"&&this.size!==this.expectedSize){let s=new Error(`stream size mismatch when checking ${this.sri}. + Wanted: ${this.expectedSize} + Found: ${this.size}`);s.code="EBADSIZE",s.found=this.size,s.expected=this.expectedSize,s.sri=this.sri,this.emit("error",s)}else if(this.sri&&!r){let s=new Error(`${this.sri} integrity checksum failed when using ${this.algorithm}: wanted ${this.digests} but got ${e}. (${this.size} bytes)`);s.code="EINTEGRITY",s.found=e,s.expected=this.digests,s.algorithm=this.algorithm,s.sri=this.sri,this.emit("error",s)}else this.#r=this.size,this.emit("size",this.size),this.#t=e,this.emit("integrity",e),r&&(this.#i=r,this.emit("verified",r))}},gh=class{get isHash(){return!0}constructor(e,r){let s=r?.strict;this.source=e.trim(),this.digest="",this.algorithm="",this.options=[];let a=this.source.match(s?jOt:HOt);if(!a||s&&!I7.includes(a[1]))return;this.algorithm=a[1],this.digest=a[2];let n=a[3];n&&(this.options=n.slice(1).split("?"))}hexDigest(){return this.digest&&Buffer.from(this.digest,"base64").toString("hex")}toJSON(){return this.toString()}match(e,r){let s=ic(e,r);if(!s)return!1;if(s.isIntegrity){let a=s.pickAlgorithm(r,[this.algorithm]);if(!a)return!1;let n=s[a].find(c=>c.digest===this.digest);return n||!1}return s.digest===this.digest?s:!1}toString(e){return e?.strict&&!(I7.includes(this.algorithm)&&this.digest.match(UOt)&&this.options.every(r=>r.match(qOt)))?"":`${this.algorithm}-${this.digest}${Tb(this.options)}`}};function hTe(t,e,r,s){let a=t!=="",n=!1,c="",f=s.length-1;for(let h=0;hs[a].find(c=>n.digest===c.digest)))throw new Error("hashes do not match, cannot update integrity")}else this[a]=s[a]}match(e,r){let s=ic(e,r);if(!s)return!1;let a=s.pickAlgorithm(r,Object.keys(this));return!!a&&this[a]&&s[a]&&this[a].find(n=>s[a].find(c=>n.digest===c.digest))||!1}pickAlgorithm(e,r){let s=e?.pickAlgorithm||ZOt,a=Object.keys(this).filter(n=>r?.length?r.includes(n):!0);return a.length?a.reduce((n,c)=>s(n,c)||n):null}};wA.exports.parse=ic;function ic(t,e){if(!t)return null;if(typeof t=="string")return E7(t,e);if(t.algorithm&&t.digest){let r=new Xm;return r[t.algorithm]=[t],E7(kb(r,e),e)}else return E7(kb(t,e),e)}function E7(t,e){if(e?.single)return new gh(t,e);let r=t.trim().split(/\s+/).reduce((s,a)=>{let n=new gh(a,e);if(n.algorithm&&n.digest){let c=n.algorithm;s[c]||(s[c]=[]),s[c].push(n)}return s},new Xm);return r.isEmpty()?null:r}wA.exports.stringify=kb;function kb(t,e){return t.algorithm&&t.digest?gh.prototype.toString.call(t,e):typeof t=="string"?kb(ic(t,e),e):Xm.prototype.toString.call(t,e)}wA.exports.fromHex=GOt;function GOt(t,e,r){let s=Tb(r?.options);return ic(`${e}-${Buffer.from(t,"hex").toString("base64")}${s}`,r)}wA.exports.fromData=WOt;function WOt(t,e){let r=e?.algorithms||[...w7],s=Tb(e?.options);return r.reduce((a,n)=>{let c=Qb.createHash(n).update(t).digest("base64"),f=new gh(`${n}-${c}${s}`,e);if(f.algorithm&&f.digest){let p=f.algorithm;a[p]||(a[p]=[]),a[p].push(f)}return a},new Xm)}wA.exports.fromStream=YOt;function YOt(t,e){let r=B7(e);return new Promise((s,a)=>{t.pipe(r),t.on("error",a),r.on("error",a);let n;r.on("integrity",c=>{n=c}),r.on("end",()=>s(n)),r.resume()})}wA.exports.checkData=VOt;function VOt(t,e,r){if(e=ic(e,r),!e||!Object.keys(e).length){if(r?.error)throw Object.assign(new Error("No valid integrity hashes to check against"),{code:"EINTEGRITY"});return!1}let s=e.pickAlgorithm(r),a=Qb.createHash(s).update(t).digest("base64"),n=ic({algorithm:s,digest:a}),c=n.match(e,r);if(r=r||{},c||!r.error)return c;if(typeof r.size=="number"&&t.length!==r.size){let f=new Error(`data size mismatch when checking ${e}. + Wanted: ${r.size} + Found: ${t.length}`);throw f.code="EBADSIZE",f.found=t.length,f.expected=r.size,f.sri=e,f}else{let f=new Error(`Integrity checksum failed when using ${s}: Wanted ${e}, but got ${n}. (${t.length} bytes)`);throw f.code="EINTEGRITY",f.found=n,f.expected=e,f.algorithm=s,f.sri=e,f}}wA.exports.checkStream=KOt;function KOt(t,e,r){if(r=r||Object.create(null),r.integrity=e,e=ic(e,r),!e||!Object.keys(e).length)return Promise.reject(Object.assign(new Error("No valid integrity hashes to check against"),{code:"EINTEGRITY"}));let s=B7(r);return new Promise((a,n)=>{t.pipe(s),t.on("error",n),s.on("error",n);let c;s.on("verified",f=>{c=f}),s.on("end",()=>a(c)),s.resume()})}wA.exports.integrityStream=B7;function B7(t=Object.create(null)){return new C7(t)}wA.exports.create=JOt;function JOt(t){let e=t?.algorithms||[...w7],r=Tb(t?.options),s=e.map(Qb.createHash);return{update:function(a,n){return s.forEach(c=>c.update(a,n)),this},digest:function(){return e.reduce((n,c)=>{let f=s.shift().digest("base64"),p=new gh(`${c}-${f}${r}`,t);if(p.algorithm&&p.digest){let h=p.algorithm;n[h]||(n[h]=[]),n[h].push(p)}return n},new Xm)}}}var zOt=Qb.getHashes(),gTe=["md5","whirlpool","sha1","sha224","sha256","sha384","sha512","sha3","sha3-256","sha3-384","sha3-512","sha3_256","sha3_384","sha3_512"].filter(t=>zOt.includes(t));function ZOt(t,e){return gTe.indexOf(t.toLowerCase())>=gTe.indexOf(e.toLowerCase())?t:e}});var v7=L(yg=>{"use strict";Object.defineProperty(yg,"__esModule",{value:!0});yg.Signature=yg.Envelope=void 0;yg.Envelope={fromJSON(t){return{payload:ZN(t.payload)?Buffer.from(mTe(t.payload)):Buffer.alloc(0),payloadType:ZN(t.payloadType)?globalThis.String(t.payloadType):"",signatures:globalThis.Array.isArray(t?.signatures)?t.signatures.map(e=>yg.Signature.fromJSON(e)):[]}},toJSON(t){let e={};return t.payload.length!==0&&(e.payload=yTe(t.payload)),t.payloadType!==""&&(e.payloadType=t.payloadType),t.signatures?.length&&(e.signatures=t.signatures.map(r=>yg.Signature.toJSON(r))),e}};yg.Signature={fromJSON(t){return{sig:ZN(t.sig)?Buffer.from(mTe(t.sig)):Buffer.alloc(0),keyid:ZN(t.keyid)?globalThis.String(t.keyid):""}},toJSON(t){let e={};return t.sig.length!==0&&(e.sig=yTe(t.sig)),t.keyid!==""&&(e.keyid=t.keyid),e}};function mTe(t){return Uint8Array.from(globalThis.Buffer.from(t,"base64"))}function yTe(t){return globalThis.Buffer.from(t).toString("base64")}function ZN(t){return t!=null}});var ITe=L(XN=>{"use strict";Object.defineProperty(XN,"__esModule",{value:!0});XN.Timestamp=void 0;XN.Timestamp={fromJSON(t){return{seconds:ETe(t.seconds)?globalThis.String(t.seconds):"0",nanos:ETe(t.nanos)?globalThis.Number(t.nanos):0}},toJSON(t){let e={};return t.seconds!=="0"&&(e.seconds=t.seconds),t.nanos!==0&&(e.nanos=Math.round(t.nanos)),e}};function ETe(t){return t!=null}});var Vw=L(_r=>{"use strict";Object.defineProperty(_r,"__esModule",{value:!0});_r.TimeRange=_r.X509CertificateChain=_r.SubjectAlternativeName=_r.X509Certificate=_r.DistinguishedName=_r.ObjectIdentifierValuePair=_r.ObjectIdentifier=_r.PublicKeyIdentifier=_r.PublicKey=_r.RFC3161SignedTimestamp=_r.LogId=_r.MessageSignature=_r.HashOutput=_r.SubjectAlternativeNameType=_r.PublicKeyDetails=_r.HashAlgorithm=void 0;_r.hashAlgorithmFromJSON=wTe;_r.hashAlgorithmToJSON=BTe;_r.publicKeyDetailsFromJSON=vTe;_r.publicKeyDetailsToJSON=STe;_r.subjectAlternativeNameTypeFromJSON=DTe;_r.subjectAlternativeNameTypeToJSON=bTe;var XOt=ITe(),El;(function(t){t[t.HASH_ALGORITHM_UNSPECIFIED=0]="HASH_ALGORITHM_UNSPECIFIED",t[t.SHA2_256=1]="SHA2_256",t[t.SHA2_384=2]="SHA2_384",t[t.SHA2_512=3]="SHA2_512",t[t.SHA3_256=4]="SHA3_256",t[t.SHA3_384=5]="SHA3_384"})(El||(_r.HashAlgorithm=El={}));function wTe(t){switch(t){case 0:case"HASH_ALGORITHM_UNSPECIFIED":return El.HASH_ALGORITHM_UNSPECIFIED;case 1:case"SHA2_256":return El.SHA2_256;case 2:case"SHA2_384":return El.SHA2_384;case 3:case"SHA2_512":return El.SHA2_512;case 4:case"SHA3_256":return El.SHA3_256;case 5:case"SHA3_384":return El.SHA3_384;default:throw new globalThis.Error("Unrecognized enum value "+t+" for enum HashAlgorithm")}}function BTe(t){switch(t){case El.HASH_ALGORITHM_UNSPECIFIED:return"HASH_ALGORITHM_UNSPECIFIED";case El.SHA2_256:return"SHA2_256";case El.SHA2_384:return"SHA2_384";case El.SHA2_512:return"SHA2_512";case El.SHA3_256:return"SHA3_256";case El.SHA3_384:return"SHA3_384";default:throw new globalThis.Error("Unrecognized enum value "+t+" for enum HashAlgorithm")}}var rn;(function(t){t[t.PUBLIC_KEY_DETAILS_UNSPECIFIED=0]="PUBLIC_KEY_DETAILS_UNSPECIFIED",t[t.PKCS1_RSA_PKCS1V5=1]="PKCS1_RSA_PKCS1V5",t[t.PKCS1_RSA_PSS=2]="PKCS1_RSA_PSS",t[t.PKIX_RSA_PKCS1V5=3]="PKIX_RSA_PKCS1V5",t[t.PKIX_RSA_PSS=4]="PKIX_RSA_PSS",t[t.PKIX_RSA_PKCS1V15_2048_SHA256=9]="PKIX_RSA_PKCS1V15_2048_SHA256",t[t.PKIX_RSA_PKCS1V15_3072_SHA256=10]="PKIX_RSA_PKCS1V15_3072_SHA256",t[t.PKIX_RSA_PKCS1V15_4096_SHA256=11]="PKIX_RSA_PKCS1V15_4096_SHA256",t[t.PKIX_RSA_PSS_2048_SHA256=16]="PKIX_RSA_PSS_2048_SHA256",t[t.PKIX_RSA_PSS_3072_SHA256=17]="PKIX_RSA_PSS_3072_SHA256",t[t.PKIX_RSA_PSS_4096_SHA256=18]="PKIX_RSA_PSS_4096_SHA256",t[t.PKIX_ECDSA_P256_HMAC_SHA_256=6]="PKIX_ECDSA_P256_HMAC_SHA_256",t[t.PKIX_ECDSA_P256_SHA_256=5]="PKIX_ECDSA_P256_SHA_256",t[t.PKIX_ECDSA_P384_SHA_384=12]="PKIX_ECDSA_P384_SHA_384",t[t.PKIX_ECDSA_P521_SHA_512=13]="PKIX_ECDSA_P521_SHA_512",t[t.PKIX_ED25519=7]="PKIX_ED25519",t[t.PKIX_ED25519_PH=8]="PKIX_ED25519_PH",t[t.LMS_SHA256=14]="LMS_SHA256",t[t.LMOTS_SHA256=15]="LMOTS_SHA256"})(rn||(_r.PublicKeyDetails=rn={}));function vTe(t){switch(t){case 0:case"PUBLIC_KEY_DETAILS_UNSPECIFIED":return rn.PUBLIC_KEY_DETAILS_UNSPECIFIED;case 1:case"PKCS1_RSA_PKCS1V5":return rn.PKCS1_RSA_PKCS1V5;case 2:case"PKCS1_RSA_PSS":return rn.PKCS1_RSA_PSS;case 3:case"PKIX_RSA_PKCS1V5":return rn.PKIX_RSA_PKCS1V5;case 4:case"PKIX_RSA_PSS":return rn.PKIX_RSA_PSS;case 9:case"PKIX_RSA_PKCS1V15_2048_SHA256":return rn.PKIX_RSA_PKCS1V15_2048_SHA256;case 10:case"PKIX_RSA_PKCS1V15_3072_SHA256":return rn.PKIX_RSA_PKCS1V15_3072_SHA256;case 11:case"PKIX_RSA_PKCS1V15_4096_SHA256":return rn.PKIX_RSA_PKCS1V15_4096_SHA256;case 16:case"PKIX_RSA_PSS_2048_SHA256":return rn.PKIX_RSA_PSS_2048_SHA256;case 17:case"PKIX_RSA_PSS_3072_SHA256":return rn.PKIX_RSA_PSS_3072_SHA256;case 18:case"PKIX_RSA_PSS_4096_SHA256":return rn.PKIX_RSA_PSS_4096_SHA256;case 6:case"PKIX_ECDSA_P256_HMAC_SHA_256":return rn.PKIX_ECDSA_P256_HMAC_SHA_256;case 5:case"PKIX_ECDSA_P256_SHA_256":return rn.PKIX_ECDSA_P256_SHA_256;case 12:case"PKIX_ECDSA_P384_SHA_384":return rn.PKIX_ECDSA_P384_SHA_384;case 13:case"PKIX_ECDSA_P521_SHA_512":return rn.PKIX_ECDSA_P521_SHA_512;case 7:case"PKIX_ED25519":return rn.PKIX_ED25519;case 8:case"PKIX_ED25519_PH":return rn.PKIX_ED25519_PH;case 14:case"LMS_SHA256":return rn.LMS_SHA256;case 15:case"LMOTS_SHA256":return rn.LMOTS_SHA256;default:throw new globalThis.Error("Unrecognized enum value "+t+" for enum PublicKeyDetails")}}function STe(t){switch(t){case rn.PUBLIC_KEY_DETAILS_UNSPECIFIED:return"PUBLIC_KEY_DETAILS_UNSPECIFIED";case rn.PKCS1_RSA_PKCS1V5:return"PKCS1_RSA_PKCS1V5";case rn.PKCS1_RSA_PSS:return"PKCS1_RSA_PSS";case rn.PKIX_RSA_PKCS1V5:return"PKIX_RSA_PKCS1V5";case rn.PKIX_RSA_PSS:return"PKIX_RSA_PSS";case rn.PKIX_RSA_PKCS1V15_2048_SHA256:return"PKIX_RSA_PKCS1V15_2048_SHA256";case rn.PKIX_RSA_PKCS1V15_3072_SHA256:return"PKIX_RSA_PKCS1V15_3072_SHA256";case rn.PKIX_RSA_PKCS1V15_4096_SHA256:return"PKIX_RSA_PKCS1V15_4096_SHA256";case rn.PKIX_RSA_PSS_2048_SHA256:return"PKIX_RSA_PSS_2048_SHA256";case rn.PKIX_RSA_PSS_3072_SHA256:return"PKIX_RSA_PSS_3072_SHA256";case rn.PKIX_RSA_PSS_4096_SHA256:return"PKIX_RSA_PSS_4096_SHA256";case rn.PKIX_ECDSA_P256_HMAC_SHA_256:return"PKIX_ECDSA_P256_HMAC_SHA_256";case rn.PKIX_ECDSA_P256_SHA_256:return"PKIX_ECDSA_P256_SHA_256";case rn.PKIX_ECDSA_P384_SHA_384:return"PKIX_ECDSA_P384_SHA_384";case rn.PKIX_ECDSA_P521_SHA_512:return"PKIX_ECDSA_P521_SHA_512";case rn.PKIX_ED25519:return"PKIX_ED25519";case rn.PKIX_ED25519_PH:return"PKIX_ED25519_PH";case rn.LMS_SHA256:return"LMS_SHA256";case rn.LMOTS_SHA256:return"LMOTS_SHA256";default:throw new globalThis.Error("Unrecognized enum value "+t+" for enum PublicKeyDetails")}}var BA;(function(t){t[t.SUBJECT_ALTERNATIVE_NAME_TYPE_UNSPECIFIED=0]="SUBJECT_ALTERNATIVE_NAME_TYPE_UNSPECIFIED",t[t.EMAIL=1]="EMAIL",t[t.URI=2]="URI",t[t.OTHER_NAME=3]="OTHER_NAME"})(BA||(_r.SubjectAlternativeNameType=BA={}));function DTe(t){switch(t){case 0:case"SUBJECT_ALTERNATIVE_NAME_TYPE_UNSPECIFIED":return BA.SUBJECT_ALTERNATIVE_NAME_TYPE_UNSPECIFIED;case 1:case"EMAIL":return BA.EMAIL;case 2:case"URI":return BA.URI;case 3:case"OTHER_NAME":return BA.OTHER_NAME;default:throw new globalThis.Error("Unrecognized enum value "+t+" for enum SubjectAlternativeNameType")}}function bTe(t){switch(t){case BA.SUBJECT_ALTERNATIVE_NAME_TYPE_UNSPECIFIED:return"SUBJECT_ALTERNATIVE_NAME_TYPE_UNSPECIFIED";case BA.EMAIL:return"EMAIL";case BA.URI:return"URI";case BA.OTHER_NAME:return"OTHER_NAME";default:throw new globalThis.Error("Unrecognized enum value "+t+" for enum SubjectAlternativeNameType")}}_r.HashOutput={fromJSON(t){return{algorithm:ms(t.algorithm)?wTe(t.algorithm):0,digest:ms(t.digest)?Buffer.from($m(t.digest)):Buffer.alloc(0)}},toJSON(t){let e={};return t.algorithm!==0&&(e.algorithm=BTe(t.algorithm)),t.digest.length!==0&&(e.digest=ey(t.digest)),e}};_r.MessageSignature={fromJSON(t){return{messageDigest:ms(t.messageDigest)?_r.HashOutput.fromJSON(t.messageDigest):void 0,signature:ms(t.signature)?Buffer.from($m(t.signature)):Buffer.alloc(0)}},toJSON(t){let e={};return t.messageDigest!==void 0&&(e.messageDigest=_r.HashOutput.toJSON(t.messageDigest)),t.signature.length!==0&&(e.signature=ey(t.signature)),e}};_r.LogId={fromJSON(t){return{keyId:ms(t.keyId)?Buffer.from($m(t.keyId)):Buffer.alloc(0)}},toJSON(t){let e={};return t.keyId.length!==0&&(e.keyId=ey(t.keyId)),e}};_r.RFC3161SignedTimestamp={fromJSON(t){return{signedTimestamp:ms(t.signedTimestamp)?Buffer.from($m(t.signedTimestamp)):Buffer.alloc(0)}},toJSON(t){let e={};return t.signedTimestamp.length!==0&&(e.signedTimestamp=ey(t.signedTimestamp)),e}};_r.PublicKey={fromJSON(t){return{rawBytes:ms(t.rawBytes)?Buffer.from($m(t.rawBytes)):void 0,keyDetails:ms(t.keyDetails)?vTe(t.keyDetails):0,validFor:ms(t.validFor)?_r.TimeRange.fromJSON(t.validFor):void 0}},toJSON(t){let e={};return t.rawBytes!==void 0&&(e.rawBytes=ey(t.rawBytes)),t.keyDetails!==0&&(e.keyDetails=STe(t.keyDetails)),t.validFor!==void 0&&(e.validFor=_r.TimeRange.toJSON(t.validFor)),e}};_r.PublicKeyIdentifier={fromJSON(t){return{hint:ms(t.hint)?globalThis.String(t.hint):""}},toJSON(t){let e={};return t.hint!==""&&(e.hint=t.hint),e}};_r.ObjectIdentifier={fromJSON(t){return{id:globalThis.Array.isArray(t?.id)?t.id.map(e=>globalThis.Number(e)):[]}},toJSON(t){let e={};return t.id?.length&&(e.id=t.id.map(r=>Math.round(r))),e}};_r.ObjectIdentifierValuePair={fromJSON(t){return{oid:ms(t.oid)?_r.ObjectIdentifier.fromJSON(t.oid):void 0,value:ms(t.value)?Buffer.from($m(t.value)):Buffer.alloc(0)}},toJSON(t){let e={};return t.oid!==void 0&&(e.oid=_r.ObjectIdentifier.toJSON(t.oid)),t.value.length!==0&&(e.value=ey(t.value)),e}};_r.DistinguishedName={fromJSON(t){return{organization:ms(t.organization)?globalThis.String(t.organization):"",commonName:ms(t.commonName)?globalThis.String(t.commonName):""}},toJSON(t){let e={};return t.organization!==""&&(e.organization=t.organization),t.commonName!==""&&(e.commonName=t.commonName),e}};_r.X509Certificate={fromJSON(t){return{rawBytes:ms(t.rawBytes)?Buffer.from($m(t.rawBytes)):Buffer.alloc(0)}},toJSON(t){let e={};return t.rawBytes.length!==0&&(e.rawBytes=ey(t.rawBytes)),e}};_r.SubjectAlternativeName={fromJSON(t){return{type:ms(t.type)?DTe(t.type):0,identity:ms(t.regexp)?{$case:"regexp",regexp:globalThis.String(t.regexp)}:ms(t.value)?{$case:"value",value:globalThis.String(t.value)}:void 0}},toJSON(t){let e={};return t.type!==0&&(e.type=bTe(t.type)),t.identity?.$case==="regexp"?e.regexp=t.identity.regexp:t.identity?.$case==="value"&&(e.value=t.identity.value),e}};_r.X509CertificateChain={fromJSON(t){return{certificates:globalThis.Array.isArray(t?.certificates)?t.certificates.map(e=>_r.X509Certificate.fromJSON(e)):[]}},toJSON(t){let e={};return t.certificates?.length&&(e.certificates=t.certificates.map(r=>_r.X509Certificate.toJSON(r))),e}};_r.TimeRange={fromJSON(t){return{start:ms(t.start)?CTe(t.start):void 0,end:ms(t.end)?CTe(t.end):void 0}},toJSON(t){let e={};return t.start!==void 0&&(e.start=t.start.toISOString()),t.end!==void 0&&(e.end=t.end.toISOString()),e}};function $m(t){return Uint8Array.from(globalThis.Buffer.from(t,"base64"))}function ey(t){return globalThis.Buffer.from(t).toString("base64")}function $Ot(t){let e=(globalThis.Number(t.seconds)||0)*1e3;return e+=(t.nanos||0)/1e6,new globalThis.Date(e)}function CTe(t){return t instanceof globalThis.Date?t:typeof t=="string"?new globalThis.Date(t):$Ot(XOt.Timestamp.fromJSON(t))}function ms(t){return t!=null}});var S7=L(ys=>{"use strict";Object.defineProperty(ys,"__esModule",{value:!0});ys.TransparencyLogEntry=ys.InclusionPromise=ys.InclusionProof=ys.Checkpoint=ys.KindVersion=void 0;var PTe=Vw();ys.KindVersion={fromJSON(t){return{kind:Fa(t.kind)?globalThis.String(t.kind):"",version:Fa(t.version)?globalThis.String(t.version):""}},toJSON(t){let e={};return t.kind!==""&&(e.kind=t.kind),t.version!==""&&(e.version=t.version),e}};ys.Checkpoint={fromJSON(t){return{envelope:Fa(t.envelope)?globalThis.String(t.envelope):""}},toJSON(t){let e={};return t.envelope!==""&&(e.envelope=t.envelope),e}};ys.InclusionProof={fromJSON(t){return{logIndex:Fa(t.logIndex)?globalThis.String(t.logIndex):"0",rootHash:Fa(t.rootHash)?Buffer.from($N(t.rootHash)):Buffer.alloc(0),treeSize:Fa(t.treeSize)?globalThis.String(t.treeSize):"0",hashes:globalThis.Array.isArray(t?.hashes)?t.hashes.map(e=>Buffer.from($N(e))):[],checkpoint:Fa(t.checkpoint)?ys.Checkpoint.fromJSON(t.checkpoint):void 0}},toJSON(t){let e={};return t.logIndex!=="0"&&(e.logIndex=t.logIndex),t.rootHash.length!==0&&(e.rootHash=eO(t.rootHash)),t.treeSize!=="0"&&(e.treeSize=t.treeSize),t.hashes?.length&&(e.hashes=t.hashes.map(r=>eO(r))),t.checkpoint!==void 0&&(e.checkpoint=ys.Checkpoint.toJSON(t.checkpoint)),e}};ys.InclusionPromise={fromJSON(t){return{signedEntryTimestamp:Fa(t.signedEntryTimestamp)?Buffer.from($N(t.signedEntryTimestamp)):Buffer.alloc(0)}},toJSON(t){let e={};return t.signedEntryTimestamp.length!==0&&(e.signedEntryTimestamp=eO(t.signedEntryTimestamp)),e}};ys.TransparencyLogEntry={fromJSON(t){return{logIndex:Fa(t.logIndex)?globalThis.String(t.logIndex):"0",logId:Fa(t.logId)?PTe.LogId.fromJSON(t.logId):void 0,kindVersion:Fa(t.kindVersion)?ys.KindVersion.fromJSON(t.kindVersion):void 0,integratedTime:Fa(t.integratedTime)?globalThis.String(t.integratedTime):"0",inclusionPromise:Fa(t.inclusionPromise)?ys.InclusionPromise.fromJSON(t.inclusionPromise):void 0,inclusionProof:Fa(t.inclusionProof)?ys.InclusionProof.fromJSON(t.inclusionProof):void 0,canonicalizedBody:Fa(t.canonicalizedBody)?Buffer.from($N(t.canonicalizedBody)):Buffer.alloc(0)}},toJSON(t){let e={};return t.logIndex!=="0"&&(e.logIndex=t.logIndex),t.logId!==void 0&&(e.logId=PTe.LogId.toJSON(t.logId)),t.kindVersion!==void 0&&(e.kindVersion=ys.KindVersion.toJSON(t.kindVersion)),t.integratedTime!=="0"&&(e.integratedTime=t.integratedTime),t.inclusionPromise!==void 0&&(e.inclusionPromise=ys.InclusionPromise.toJSON(t.inclusionPromise)),t.inclusionProof!==void 0&&(e.inclusionProof=ys.InclusionProof.toJSON(t.inclusionProof)),t.canonicalizedBody.length!==0&&(e.canonicalizedBody=eO(t.canonicalizedBody)),e}};function $N(t){return Uint8Array.from(globalThis.Buffer.from(t,"base64"))}function eO(t){return globalThis.Buffer.from(t).toString("base64")}function Fa(t){return t!=null}});var D7=L($c=>{"use strict";Object.defineProperty($c,"__esModule",{value:!0});$c.Bundle=$c.VerificationMaterial=$c.TimestampVerificationData=void 0;var xTe=v7(),vA=Vw(),kTe=S7();$c.TimestampVerificationData={fromJSON(t){return{rfc3161Timestamps:globalThis.Array.isArray(t?.rfc3161Timestamps)?t.rfc3161Timestamps.map(e=>vA.RFC3161SignedTimestamp.fromJSON(e)):[]}},toJSON(t){let e={};return t.rfc3161Timestamps?.length&&(e.rfc3161Timestamps=t.rfc3161Timestamps.map(r=>vA.RFC3161SignedTimestamp.toJSON(r))),e}};$c.VerificationMaterial={fromJSON(t){return{content:Eg(t.publicKey)?{$case:"publicKey",publicKey:vA.PublicKeyIdentifier.fromJSON(t.publicKey)}:Eg(t.x509CertificateChain)?{$case:"x509CertificateChain",x509CertificateChain:vA.X509CertificateChain.fromJSON(t.x509CertificateChain)}:Eg(t.certificate)?{$case:"certificate",certificate:vA.X509Certificate.fromJSON(t.certificate)}:void 0,tlogEntries:globalThis.Array.isArray(t?.tlogEntries)?t.tlogEntries.map(e=>kTe.TransparencyLogEntry.fromJSON(e)):[],timestampVerificationData:Eg(t.timestampVerificationData)?$c.TimestampVerificationData.fromJSON(t.timestampVerificationData):void 0}},toJSON(t){let e={};return t.content?.$case==="publicKey"?e.publicKey=vA.PublicKeyIdentifier.toJSON(t.content.publicKey):t.content?.$case==="x509CertificateChain"?e.x509CertificateChain=vA.X509CertificateChain.toJSON(t.content.x509CertificateChain):t.content?.$case==="certificate"&&(e.certificate=vA.X509Certificate.toJSON(t.content.certificate)),t.tlogEntries?.length&&(e.tlogEntries=t.tlogEntries.map(r=>kTe.TransparencyLogEntry.toJSON(r))),t.timestampVerificationData!==void 0&&(e.timestampVerificationData=$c.TimestampVerificationData.toJSON(t.timestampVerificationData)),e}};$c.Bundle={fromJSON(t){return{mediaType:Eg(t.mediaType)?globalThis.String(t.mediaType):"",verificationMaterial:Eg(t.verificationMaterial)?$c.VerificationMaterial.fromJSON(t.verificationMaterial):void 0,content:Eg(t.messageSignature)?{$case:"messageSignature",messageSignature:vA.MessageSignature.fromJSON(t.messageSignature)}:Eg(t.dsseEnvelope)?{$case:"dsseEnvelope",dsseEnvelope:xTe.Envelope.fromJSON(t.dsseEnvelope)}:void 0}},toJSON(t){let e={};return t.mediaType!==""&&(e.mediaType=t.mediaType),t.verificationMaterial!==void 0&&(e.verificationMaterial=$c.VerificationMaterial.toJSON(t.verificationMaterial)),t.content?.$case==="messageSignature"?e.messageSignature=vA.MessageSignature.toJSON(t.content.messageSignature):t.content?.$case==="dsseEnvelope"&&(e.dsseEnvelope=xTe.Envelope.toJSON(t.content.dsseEnvelope)),e}};function Eg(t){return t!=null}});var b7=L(Ti=>{"use strict";Object.defineProperty(Ti,"__esModule",{value:!0});Ti.ClientTrustConfig=Ti.SigningConfig=Ti.TrustedRoot=Ti.CertificateAuthority=Ti.TransparencyLogInstance=void 0;var Il=Vw();Ti.TransparencyLogInstance={fromJSON(t){return{baseUrl:sa(t.baseUrl)?globalThis.String(t.baseUrl):"",hashAlgorithm:sa(t.hashAlgorithm)?(0,Il.hashAlgorithmFromJSON)(t.hashAlgorithm):0,publicKey:sa(t.publicKey)?Il.PublicKey.fromJSON(t.publicKey):void 0,logId:sa(t.logId)?Il.LogId.fromJSON(t.logId):void 0,checkpointKeyId:sa(t.checkpointKeyId)?Il.LogId.fromJSON(t.checkpointKeyId):void 0}},toJSON(t){let e={};return t.baseUrl!==""&&(e.baseUrl=t.baseUrl),t.hashAlgorithm!==0&&(e.hashAlgorithm=(0,Il.hashAlgorithmToJSON)(t.hashAlgorithm)),t.publicKey!==void 0&&(e.publicKey=Il.PublicKey.toJSON(t.publicKey)),t.logId!==void 0&&(e.logId=Il.LogId.toJSON(t.logId)),t.checkpointKeyId!==void 0&&(e.checkpointKeyId=Il.LogId.toJSON(t.checkpointKeyId)),e}};Ti.CertificateAuthority={fromJSON(t){return{subject:sa(t.subject)?Il.DistinguishedName.fromJSON(t.subject):void 0,uri:sa(t.uri)?globalThis.String(t.uri):"",certChain:sa(t.certChain)?Il.X509CertificateChain.fromJSON(t.certChain):void 0,validFor:sa(t.validFor)?Il.TimeRange.fromJSON(t.validFor):void 0}},toJSON(t){let e={};return t.subject!==void 0&&(e.subject=Il.DistinguishedName.toJSON(t.subject)),t.uri!==""&&(e.uri=t.uri),t.certChain!==void 0&&(e.certChain=Il.X509CertificateChain.toJSON(t.certChain)),t.validFor!==void 0&&(e.validFor=Il.TimeRange.toJSON(t.validFor)),e}};Ti.TrustedRoot={fromJSON(t){return{mediaType:sa(t.mediaType)?globalThis.String(t.mediaType):"",tlogs:globalThis.Array.isArray(t?.tlogs)?t.tlogs.map(e=>Ti.TransparencyLogInstance.fromJSON(e)):[],certificateAuthorities:globalThis.Array.isArray(t?.certificateAuthorities)?t.certificateAuthorities.map(e=>Ti.CertificateAuthority.fromJSON(e)):[],ctlogs:globalThis.Array.isArray(t?.ctlogs)?t.ctlogs.map(e=>Ti.TransparencyLogInstance.fromJSON(e)):[],timestampAuthorities:globalThis.Array.isArray(t?.timestampAuthorities)?t.timestampAuthorities.map(e=>Ti.CertificateAuthority.fromJSON(e)):[]}},toJSON(t){let e={};return t.mediaType!==""&&(e.mediaType=t.mediaType),t.tlogs?.length&&(e.tlogs=t.tlogs.map(r=>Ti.TransparencyLogInstance.toJSON(r))),t.certificateAuthorities?.length&&(e.certificateAuthorities=t.certificateAuthorities.map(r=>Ti.CertificateAuthority.toJSON(r))),t.ctlogs?.length&&(e.ctlogs=t.ctlogs.map(r=>Ti.TransparencyLogInstance.toJSON(r))),t.timestampAuthorities?.length&&(e.timestampAuthorities=t.timestampAuthorities.map(r=>Ti.CertificateAuthority.toJSON(r))),e}};Ti.SigningConfig={fromJSON(t){return{mediaType:sa(t.mediaType)?globalThis.String(t.mediaType):"",caUrl:sa(t.caUrl)?globalThis.String(t.caUrl):"",oidcUrl:sa(t.oidcUrl)?globalThis.String(t.oidcUrl):"",tlogUrls:globalThis.Array.isArray(t?.tlogUrls)?t.tlogUrls.map(e=>globalThis.String(e)):[],tsaUrls:globalThis.Array.isArray(t?.tsaUrls)?t.tsaUrls.map(e=>globalThis.String(e)):[]}},toJSON(t){let e={};return t.mediaType!==""&&(e.mediaType=t.mediaType),t.caUrl!==""&&(e.caUrl=t.caUrl),t.oidcUrl!==""&&(e.oidcUrl=t.oidcUrl),t.tlogUrls?.length&&(e.tlogUrls=t.tlogUrls),t.tsaUrls?.length&&(e.tsaUrls=t.tsaUrls),e}};Ti.ClientTrustConfig={fromJSON(t){return{mediaType:sa(t.mediaType)?globalThis.String(t.mediaType):"",trustedRoot:sa(t.trustedRoot)?Ti.TrustedRoot.fromJSON(t.trustedRoot):void 0,signingConfig:sa(t.signingConfig)?Ti.SigningConfig.fromJSON(t.signingConfig):void 0}},toJSON(t){let e={};return t.mediaType!==""&&(e.mediaType=t.mediaType),t.trustedRoot!==void 0&&(e.trustedRoot=Ti.TrustedRoot.toJSON(t.trustedRoot)),t.signingConfig!==void 0&&(e.signingConfig=Ti.SigningConfig.toJSON(t.signingConfig)),e}};function sa(t){return t!=null}});var RTe=L(Vr=>{"use strict";Object.defineProperty(Vr,"__esModule",{value:!0});Vr.Input=Vr.Artifact=Vr.ArtifactVerificationOptions_ObserverTimestampOptions=Vr.ArtifactVerificationOptions_TlogIntegratedTimestampOptions=Vr.ArtifactVerificationOptions_TimestampAuthorityOptions=Vr.ArtifactVerificationOptions_CtlogOptions=Vr.ArtifactVerificationOptions_TlogOptions=Vr.ArtifactVerificationOptions=Vr.PublicKeyIdentities=Vr.CertificateIdentities=Vr.CertificateIdentity=void 0;var QTe=D7(),Ig=Vw(),TTe=b7();Vr.CertificateIdentity={fromJSON(t){return{issuer:hi(t.issuer)?globalThis.String(t.issuer):"",san:hi(t.san)?Ig.SubjectAlternativeName.fromJSON(t.san):void 0,oids:globalThis.Array.isArray(t?.oids)?t.oids.map(e=>Ig.ObjectIdentifierValuePair.fromJSON(e)):[]}},toJSON(t){let e={};return t.issuer!==""&&(e.issuer=t.issuer),t.san!==void 0&&(e.san=Ig.SubjectAlternativeName.toJSON(t.san)),t.oids?.length&&(e.oids=t.oids.map(r=>Ig.ObjectIdentifierValuePair.toJSON(r))),e}};Vr.CertificateIdentities={fromJSON(t){return{identities:globalThis.Array.isArray(t?.identities)?t.identities.map(e=>Vr.CertificateIdentity.fromJSON(e)):[]}},toJSON(t){let e={};return t.identities?.length&&(e.identities=t.identities.map(r=>Vr.CertificateIdentity.toJSON(r))),e}};Vr.PublicKeyIdentities={fromJSON(t){return{publicKeys:globalThis.Array.isArray(t?.publicKeys)?t.publicKeys.map(e=>Ig.PublicKey.fromJSON(e)):[]}},toJSON(t){let e={};return t.publicKeys?.length&&(e.publicKeys=t.publicKeys.map(r=>Ig.PublicKey.toJSON(r))),e}};Vr.ArtifactVerificationOptions={fromJSON(t){return{signers:hi(t.certificateIdentities)?{$case:"certificateIdentities",certificateIdentities:Vr.CertificateIdentities.fromJSON(t.certificateIdentities)}:hi(t.publicKeys)?{$case:"publicKeys",publicKeys:Vr.PublicKeyIdentities.fromJSON(t.publicKeys)}:void 0,tlogOptions:hi(t.tlogOptions)?Vr.ArtifactVerificationOptions_TlogOptions.fromJSON(t.tlogOptions):void 0,ctlogOptions:hi(t.ctlogOptions)?Vr.ArtifactVerificationOptions_CtlogOptions.fromJSON(t.ctlogOptions):void 0,tsaOptions:hi(t.tsaOptions)?Vr.ArtifactVerificationOptions_TimestampAuthorityOptions.fromJSON(t.tsaOptions):void 0,integratedTsOptions:hi(t.integratedTsOptions)?Vr.ArtifactVerificationOptions_TlogIntegratedTimestampOptions.fromJSON(t.integratedTsOptions):void 0,observerOptions:hi(t.observerOptions)?Vr.ArtifactVerificationOptions_ObserverTimestampOptions.fromJSON(t.observerOptions):void 0}},toJSON(t){let e={};return t.signers?.$case==="certificateIdentities"?e.certificateIdentities=Vr.CertificateIdentities.toJSON(t.signers.certificateIdentities):t.signers?.$case==="publicKeys"&&(e.publicKeys=Vr.PublicKeyIdentities.toJSON(t.signers.publicKeys)),t.tlogOptions!==void 0&&(e.tlogOptions=Vr.ArtifactVerificationOptions_TlogOptions.toJSON(t.tlogOptions)),t.ctlogOptions!==void 0&&(e.ctlogOptions=Vr.ArtifactVerificationOptions_CtlogOptions.toJSON(t.ctlogOptions)),t.tsaOptions!==void 0&&(e.tsaOptions=Vr.ArtifactVerificationOptions_TimestampAuthorityOptions.toJSON(t.tsaOptions)),t.integratedTsOptions!==void 0&&(e.integratedTsOptions=Vr.ArtifactVerificationOptions_TlogIntegratedTimestampOptions.toJSON(t.integratedTsOptions)),t.observerOptions!==void 0&&(e.observerOptions=Vr.ArtifactVerificationOptions_ObserverTimestampOptions.toJSON(t.observerOptions)),e}};Vr.ArtifactVerificationOptions_TlogOptions={fromJSON(t){return{threshold:hi(t.threshold)?globalThis.Number(t.threshold):0,performOnlineVerification:hi(t.performOnlineVerification)?globalThis.Boolean(t.performOnlineVerification):!1,disable:hi(t.disable)?globalThis.Boolean(t.disable):!1}},toJSON(t){let e={};return t.threshold!==0&&(e.threshold=Math.round(t.threshold)),t.performOnlineVerification!==!1&&(e.performOnlineVerification=t.performOnlineVerification),t.disable!==!1&&(e.disable=t.disable),e}};Vr.ArtifactVerificationOptions_CtlogOptions={fromJSON(t){return{threshold:hi(t.threshold)?globalThis.Number(t.threshold):0,disable:hi(t.disable)?globalThis.Boolean(t.disable):!1}},toJSON(t){let e={};return t.threshold!==0&&(e.threshold=Math.round(t.threshold)),t.disable!==!1&&(e.disable=t.disable),e}};Vr.ArtifactVerificationOptions_TimestampAuthorityOptions={fromJSON(t){return{threshold:hi(t.threshold)?globalThis.Number(t.threshold):0,disable:hi(t.disable)?globalThis.Boolean(t.disable):!1}},toJSON(t){let e={};return t.threshold!==0&&(e.threshold=Math.round(t.threshold)),t.disable!==!1&&(e.disable=t.disable),e}};Vr.ArtifactVerificationOptions_TlogIntegratedTimestampOptions={fromJSON(t){return{threshold:hi(t.threshold)?globalThis.Number(t.threshold):0,disable:hi(t.disable)?globalThis.Boolean(t.disable):!1}},toJSON(t){let e={};return t.threshold!==0&&(e.threshold=Math.round(t.threshold)),t.disable!==!1&&(e.disable=t.disable),e}};Vr.ArtifactVerificationOptions_ObserverTimestampOptions={fromJSON(t){return{threshold:hi(t.threshold)?globalThis.Number(t.threshold):0,disable:hi(t.disable)?globalThis.Boolean(t.disable):!1}},toJSON(t){let e={};return t.threshold!==0&&(e.threshold=Math.round(t.threshold)),t.disable!==!1&&(e.disable=t.disable),e}};Vr.Artifact={fromJSON(t){return{data:hi(t.artifactUri)?{$case:"artifactUri",artifactUri:globalThis.String(t.artifactUri)}:hi(t.artifact)?{$case:"artifact",artifact:Buffer.from(eLt(t.artifact))}:hi(t.artifactDigest)?{$case:"artifactDigest",artifactDigest:Ig.HashOutput.fromJSON(t.artifactDigest)}:void 0}},toJSON(t){let e={};return t.data?.$case==="artifactUri"?e.artifactUri=t.data.artifactUri:t.data?.$case==="artifact"?e.artifact=tLt(t.data.artifact):t.data?.$case==="artifactDigest"&&(e.artifactDigest=Ig.HashOutput.toJSON(t.data.artifactDigest)),e}};Vr.Input={fromJSON(t){return{artifactTrustRoot:hi(t.artifactTrustRoot)?TTe.TrustedRoot.fromJSON(t.artifactTrustRoot):void 0,artifactVerificationOptions:hi(t.artifactVerificationOptions)?Vr.ArtifactVerificationOptions.fromJSON(t.artifactVerificationOptions):void 0,bundle:hi(t.bundle)?QTe.Bundle.fromJSON(t.bundle):void 0,artifact:hi(t.artifact)?Vr.Artifact.fromJSON(t.artifact):void 0}},toJSON(t){let e={};return t.artifactTrustRoot!==void 0&&(e.artifactTrustRoot=TTe.TrustedRoot.toJSON(t.artifactTrustRoot)),t.artifactVerificationOptions!==void 0&&(e.artifactVerificationOptions=Vr.ArtifactVerificationOptions.toJSON(t.artifactVerificationOptions)),t.bundle!==void 0&&(e.bundle=QTe.Bundle.toJSON(t.bundle)),t.artifact!==void 0&&(e.artifact=Vr.Artifact.toJSON(t.artifact)),e}};function eLt(t){return Uint8Array.from(globalThis.Buffer.from(t,"base64"))}function tLt(t){return globalThis.Buffer.from(t).toString("base64")}function hi(t){return t!=null}});var Rb=L(eu=>{"use strict";var rLt=eu&&eu.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(e,r);(!a||("get"in a?!e.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,s,a)}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),Kw=eu&&eu.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&rLt(e,t,r)};Object.defineProperty(eu,"__esModule",{value:!0});Kw(v7(),eu);Kw(D7(),eu);Kw(Vw(),eu);Kw(S7(),eu);Kw(b7(),eu);Kw(RTe(),eu)});var tO=L(Cl=>{"use strict";Object.defineProperty(Cl,"__esModule",{value:!0});Cl.BUNDLE_V03_MEDIA_TYPE=Cl.BUNDLE_V03_LEGACY_MEDIA_TYPE=Cl.BUNDLE_V02_MEDIA_TYPE=Cl.BUNDLE_V01_MEDIA_TYPE=void 0;Cl.isBundleWithCertificateChain=nLt;Cl.isBundleWithPublicKey=iLt;Cl.isBundleWithMessageSignature=sLt;Cl.isBundleWithDsseEnvelope=oLt;Cl.BUNDLE_V01_MEDIA_TYPE="application/vnd.dev.sigstore.bundle+json;version=0.1";Cl.BUNDLE_V02_MEDIA_TYPE="application/vnd.dev.sigstore.bundle+json;version=0.2";Cl.BUNDLE_V03_LEGACY_MEDIA_TYPE="application/vnd.dev.sigstore.bundle+json;version=0.3";Cl.BUNDLE_V03_MEDIA_TYPE="application/vnd.dev.sigstore.bundle.v0.3+json";function nLt(t){return t.verificationMaterial.content.$case==="x509CertificateChain"}function iLt(t){return t.verificationMaterial.content.$case==="publicKey"}function sLt(t){return t.content.$case==="messageSignature"}function oLt(t){return t.content.$case==="dsseEnvelope"}});var NTe=L(nO=>{"use strict";Object.defineProperty(nO,"__esModule",{value:!0});nO.toMessageSignatureBundle=lLt;nO.toDSSEBundle=cLt;var aLt=Rb(),rO=tO();function lLt(t){return{mediaType:t.certificateChain?rO.BUNDLE_V02_MEDIA_TYPE:rO.BUNDLE_V03_MEDIA_TYPE,content:{$case:"messageSignature",messageSignature:{messageDigest:{algorithm:aLt.HashAlgorithm.SHA2_256,digest:t.digest},signature:t.signature}},verificationMaterial:FTe(t)}}function cLt(t){return{mediaType:t.certificateChain?rO.BUNDLE_V02_MEDIA_TYPE:rO.BUNDLE_V03_MEDIA_TYPE,content:{$case:"dsseEnvelope",dsseEnvelope:uLt(t)},verificationMaterial:FTe(t)}}function uLt(t){return{payloadType:t.artifactType,payload:t.artifact,signatures:[fLt(t)]}}function fLt(t){return{keyid:t.keyHint||"",sig:t.signature}}function FTe(t){return{content:ALt(t),tlogEntries:[],timestampVerificationData:{rfc3161Timestamps:[]}}}function ALt(t){return t.certificate?t.certificateChain?{$case:"x509CertificateChain",x509CertificateChain:{certificates:[{rawBytes:t.certificate}]}}:{$case:"certificate",certificate:{rawBytes:t.certificate}}:{$case:"publicKey",publicKey:{hint:t.keyHint||""}}}});var x7=L(iO=>{"use strict";Object.defineProperty(iO,"__esModule",{value:!0});iO.ValidationError=void 0;var P7=class extends Error{constructor(e,r){super(e),this.fields=r}};iO.ValidationError=P7});var k7=L(ty=>{"use strict";Object.defineProperty(ty,"__esModule",{value:!0});ty.assertBundle=pLt;ty.assertBundleV01=OTe;ty.isBundleV01=hLt;ty.assertBundleV02=gLt;ty.assertBundleLatest=dLt;var sO=x7();function pLt(t){let e=oO(t);if(e.length>0)throw new sO.ValidationError("invalid bundle",e)}function OTe(t){let e=[];if(e.push(...oO(t)),e.push(...mLt(t)),e.length>0)throw new sO.ValidationError("invalid v0.1 bundle",e)}function hLt(t){try{return OTe(t),!0}catch{return!1}}function gLt(t){let e=[];if(e.push(...oO(t)),e.push(...LTe(t)),e.length>0)throw new sO.ValidationError("invalid v0.2 bundle",e)}function dLt(t){let e=[];if(e.push(...oO(t)),e.push(...LTe(t)),e.push(...yLt(t)),e.length>0)throw new sO.ValidationError("invalid bundle",e)}function oO(t){let e=[];if((t.mediaType===void 0||!t.mediaType.match(/^application\/vnd\.dev\.sigstore\.bundle\+json;version=\d\.\d/)&&!t.mediaType.match(/^application\/vnd\.dev\.sigstore\.bundle\.v\d\.\d\+json/))&&e.push("mediaType"),t.content===void 0)e.push("content");else switch(t.content.$case){case"messageSignature":t.content.messageSignature.messageDigest===void 0?e.push("content.messageSignature.messageDigest"):t.content.messageSignature.messageDigest.digest.length===0&&e.push("content.messageSignature.messageDigest.digest"),t.content.messageSignature.signature.length===0&&e.push("content.messageSignature.signature");break;case"dsseEnvelope":t.content.dsseEnvelope.payload.length===0&&e.push("content.dsseEnvelope.payload"),t.content.dsseEnvelope.signatures.length!==1?e.push("content.dsseEnvelope.signatures"):t.content.dsseEnvelope.signatures[0].sig.length===0&&e.push("content.dsseEnvelope.signatures[0].sig");break}if(t.verificationMaterial===void 0)e.push("verificationMaterial");else{if(t.verificationMaterial.content===void 0)e.push("verificationMaterial.content");else switch(t.verificationMaterial.content.$case){case"x509CertificateChain":t.verificationMaterial.content.x509CertificateChain.certificates.length===0&&e.push("verificationMaterial.content.x509CertificateChain.certificates"),t.verificationMaterial.content.x509CertificateChain.certificates.forEach((r,s)=>{r.rawBytes.length===0&&e.push(`verificationMaterial.content.x509CertificateChain.certificates[${s}].rawBytes`)});break;case"certificate":t.verificationMaterial.content.certificate.rawBytes.length===0&&e.push("verificationMaterial.content.certificate.rawBytes");break}t.verificationMaterial.tlogEntries===void 0?e.push("verificationMaterial.tlogEntries"):t.verificationMaterial.tlogEntries.length>0&&t.verificationMaterial.tlogEntries.forEach((r,s)=>{r.logId===void 0&&e.push(`verificationMaterial.tlogEntries[${s}].logId`),r.kindVersion===void 0&&e.push(`verificationMaterial.tlogEntries[${s}].kindVersion`)})}return e}function mLt(t){let e=[];return t.verificationMaterial&&t.verificationMaterial.tlogEntries?.length>0&&t.verificationMaterial.tlogEntries.forEach((r,s)=>{r.inclusionPromise===void 0&&e.push(`verificationMaterial.tlogEntries[${s}].inclusionPromise`)}),e}function LTe(t){let e=[];return t.verificationMaterial&&t.verificationMaterial.tlogEntries?.length>0&&t.verificationMaterial.tlogEntries.forEach((r,s)=>{r.inclusionProof===void 0?e.push(`verificationMaterial.tlogEntries[${s}].inclusionProof`):r.inclusionProof.checkpoint===void 0&&e.push(`verificationMaterial.tlogEntries[${s}].inclusionProof.checkpoint`)}),e}function yLt(t){let e=[];return t.verificationMaterial?.content?.$case==="x509CertificateChain"&&e.push("verificationMaterial.content.$case"),e}});var _Te=L(SA=>{"use strict";Object.defineProperty(SA,"__esModule",{value:!0});SA.envelopeToJSON=SA.envelopeFromJSON=SA.bundleToJSON=SA.bundleFromJSON=void 0;var aO=Rb(),MTe=tO(),Q7=k7(),ELt=t=>{let e=aO.Bundle.fromJSON(t);switch(e.mediaType){case MTe.BUNDLE_V01_MEDIA_TYPE:(0,Q7.assertBundleV01)(e);break;case MTe.BUNDLE_V02_MEDIA_TYPE:(0,Q7.assertBundleV02)(e);break;default:(0,Q7.assertBundleLatest)(e);break}return e};SA.bundleFromJSON=ELt;var ILt=t=>aO.Bundle.toJSON(t);SA.bundleToJSON=ILt;var CLt=t=>aO.Envelope.fromJSON(t);SA.envelopeFromJSON=CLt;var wLt=t=>aO.Envelope.toJSON(t);SA.envelopeToJSON=wLt});var Nb=L(Zr=>{"use strict";Object.defineProperty(Zr,"__esModule",{value:!0});Zr.isBundleV01=Zr.assertBundleV02=Zr.assertBundleV01=Zr.assertBundleLatest=Zr.assertBundle=Zr.envelopeToJSON=Zr.envelopeFromJSON=Zr.bundleToJSON=Zr.bundleFromJSON=Zr.ValidationError=Zr.isBundleWithPublicKey=Zr.isBundleWithMessageSignature=Zr.isBundleWithDsseEnvelope=Zr.isBundleWithCertificateChain=Zr.BUNDLE_V03_MEDIA_TYPE=Zr.BUNDLE_V03_LEGACY_MEDIA_TYPE=Zr.BUNDLE_V02_MEDIA_TYPE=Zr.BUNDLE_V01_MEDIA_TYPE=Zr.toMessageSignatureBundle=Zr.toDSSEBundle=void 0;var UTe=NTe();Object.defineProperty(Zr,"toDSSEBundle",{enumerable:!0,get:function(){return UTe.toDSSEBundle}});Object.defineProperty(Zr,"toMessageSignatureBundle",{enumerable:!0,get:function(){return UTe.toMessageSignatureBundle}});var Cg=tO();Object.defineProperty(Zr,"BUNDLE_V01_MEDIA_TYPE",{enumerable:!0,get:function(){return Cg.BUNDLE_V01_MEDIA_TYPE}});Object.defineProperty(Zr,"BUNDLE_V02_MEDIA_TYPE",{enumerable:!0,get:function(){return Cg.BUNDLE_V02_MEDIA_TYPE}});Object.defineProperty(Zr,"BUNDLE_V03_LEGACY_MEDIA_TYPE",{enumerable:!0,get:function(){return Cg.BUNDLE_V03_LEGACY_MEDIA_TYPE}});Object.defineProperty(Zr,"BUNDLE_V03_MEDIA_TYPE",{enumerable:!0,get:function(){return Cg.BUNDLE_V03_MEDIA_TYPE}});Object.defineProperty(Zr,"isBundleWithCertificateChain",{enumerable:!0,get:function(){return Cg.isBundleWithCertificateChain}});Object.defineProperty(Zr,"isBundleWithDsseEnvelope",{enumerable:!0,get:function(){return Cg.isBundleWithDsseEnvelope}});Object.defineProperty(Zr,"isBundleWithMessageSignature",{enumerable:!0,get:function(){return Cg.isBundleWithMessageSignature}});Object.defineProperty(Zr,"isBundleWithPublicKey",{enumerable:!0,get:function(){return Cg.isBundleWithPublicKey}});var BLt=x7();Object.defineProperty(Zr,"ValidationError",{enumerable:!0,get:function(){return BLt.ValidationError}});var lO=_Te();Object.defineProperty(Zr,"bundleFromJSON",{enumerable:!0,get:function(){return lO.bundleFromJSON}});Object.defineProperty(Zr,"bundleToJSON",{enumerable:!0,get:function(){return lO.bundleToJSON}});Object.defineProperty(Zr,"envelopeFromJSON",{enumerable:!0,get:function(){return lO.envelopeFromJSON}});Object.defineProperty(Zr,"envelopeToJSON",{enumerable:!0,get:function(){return lO.envelopeToJSON}});var Fb=k7();Object.defineProperty(Zr,"assertBundle",{enumerable:!0,get:function(){return Fb.assertBundle}});Object.defineProperty(Zr,"assertBundleLatest",{enumerable:!0,get:function(){return Fb.assertBundleLatest}});Object.defineProperty(Zr,"assertBundleV01",{enumerable:!0,get:function(){return Fb.assertBundleV01}});Object.defineProperty(Zr,"assertBundleV02",{enumerable:!0,get:function(){return Fb.assertBundleV02}});Object.defineProperty(Zr,"isBundleV01",{enumerable:!0,get:function(){return Fb.isBundleV01}})});var Ob=L(uO=>{"use strict";Object.defineProperty(uO,"__esModule",{value:!0});uO.ByteStream=void 0;var T7=class extends Error{},cO=class t{constructor(e){this.start=0,e?(this.buf=e,this.view=Buffer.from(e)):(this.buf=new ArrayBuffer(0),this.view=Buffer.from(this.buf))}get buffer(){return this.view.subarray(0,this.start)}get length(){return this.view.byteLength}get position(){return this.start}seek(e){this.start=e}slice(e,r){let s=e+r;if(s>this.length)throw new T7("request past end of buffer");return this.view.subarray(e,s)}appendChar(e){this.ensureCapacity(1),this.view[this.start]=e,this.start+=1}appendUint16(e){this.ensureCapacity(2);let r=new Uint16Array([e]),s=new Uint8Array(r.buffer);this.view[this.start]=s[1],this.view[this.start+1]=s[0],this.start+=2}appendUint24(e){this.ensureCapacity(3);let r=new Uint32Array([e]),s=new Uint8Array(r.buffer);this.view[this.start]=s[2],this.view[this.start+1]=s[1],this.view[this.start+2]=s[0],this.start+=3}appendView(e){this.ensureCapacity(e.length),this.view.set(e,this.start),this.start+=e.length}getBlock(e){if(e<=0)return Buffer.alloc(0);if(this.start+e>this.view.length)throw new Error("request past end of buffer");let r=this.view.subarray(this.start,this.start+e);return this.start+=e,r}getUint8(){return this.getBlock(1)[0]}getUint16(){let e=this.getBlock(2);return e[0]<<8|e[1]}ensureCapacity(e){if(this.start+e>this.view.byteLength){let r=t.BLOCK_SIZE+(e>t.BLOCK_SIZE?e:0);this.realloc(this.view.byteLength+r)}}realloc(e){let r=new ArrayBuffer(e),s=Buffer.from(r);s.set(this.view),this.buf=r,this.view=s}};uO.ByteStream=cO;cO.BLOCK_SIZE=1024});var fO=L(Jw=>{"use strict";Object.defineProperty(Jw,"__esModule",{value:!0});Jw.ASN1TypeError=Jw.ASN1ParseError=void 0;var R7=class extends Error{};Jw.ASN1ParseError=R7;var F7=class extends Error{};Jw.ASN1TypeError=F7});var jTe=L(AO=>{"use strict";Object.defineProperty(AO,"__esModule",{value:!0});AO.decodeLength=vLt;AO.encodeLength=SLt;var HTe=fO();function vLt(t){let e=t.getUint8();if(!(e&128))return e;let r=e&127;if(r>6)throw new HTe.ASN1ParseError("length exceeds 6 byte limit");let s=0;for(let a=0;a0n;)r.unshift(Number(e&255n)),e=e>>8n;return Buffer.from([128|r.length,...r])}});var GTe=L(wg=>{"use strict";Object.defineProperty(wg,"__esModule",{value:!0});wg.parseInteger=PLt;wg.parseStringASCII=qTe;wg.parseTime=xLt;wg.parseOID=kLt;wg.parseBoolean=QLt;wg.parseBitString=TLt;var DLt=/^(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\.\d{3})?Z$/,bLt=/^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\.\d{3})?Z$/;function PLt(t){let e=0,r=t.length,s=t[e],a=s>127,n=a?255:0;for(;s==n&&++e=50?1900:2e3,s[1]=a.toString()}return new Date(`${s[1]}-${s[2]}-${s[3]}T${s[4]}:${s[5]}:${s[6]}Z`)}function kLt(t){let e=0,r=t.length,s=t[e++],a=Math.floor(s/40),n=s%40,c=`${a}.${n}`,f=0;for(;e=f;--p)a.push(c>>p&1)}return a}});var YTe=L(pO=>{"use strict";Object.defineProperty(pO,"__esModule",{value:!0});pO.ASN1Tag=void 0;var WTe=fO(),ry={BOOLEAN:1,INTEGER:2,BIT_STRING:3,OCTET_STRING:4,OBJECT_IDENTIFIER:6,SEQUENCE:16,SET:17,PRINTABLE_STRING:19,UTC_TIME:23,GENERALIZED_TIME:24},N7={UNIVERSAL:0,APPLICATION:1,CONTEXT_SPECIFIC:2,PRIVATE:3},O7=class{constructor(e){if(this.number=e&31,this.constructed=(e&32)===32,this.class=e>>6,this.number===31)throw new WTe.ASN1ParseError("long form tags not supported");if(this.class===N7.UNIVERSAL&&this.number===0)throw new WTe.ASN1ParseError("unsupported tag 0x00")}isUniversal(){return this.class===N7.UNIVERSAL}isContextSpecific(e){let r=this.class===N7.CONTEXT_SPECIFIC;return e!==void 0?r&&this.number===e:r}isBoolean(){return this.isUniversal()&&this.number===ry.BOOLEAN}isInteger(){return this.isUniversal()&&this.number===ry.INTEGER}isBitString(){return this.isUniversal()&&this.number===ry.BIT_STRING}isOctetString(){return this.isUniversal()&&this.number===ry.OCTET_STRING}isOID(){return this.isUniversal()&&this.number===ry.OBJECT_IDENTIFIER}isUTCTime(){return this.isUniversal()&&this.number===ry.UTC_TIME}isGeneralizedTime(){return this.isUniversal()&&this.number===ry.GENERALIZED_TIME}toDER(){return this.number|(this.constructed?32:0)|this.class<<6}};pO.ASN1Tag=O7});var zTe=L(gO=>{"use strict";Object.defineProperty(gO,"__esModule",{value:!0});gO.ASN1Obj=void 0;var L7=Ob(),ny=fO(),KTe=jTe(),zw=GTe(),RLt=YTe(),hO=class{constructor(e,r,s){this.tag=e,this.value=r,this.subs=s}static parseBuffer(e){return JTe(new L7.ByteStream(e))}toDER(){let e=new L7.ByteStream;if(this.subs.length>0)for(let a of this.subs)e.appendView(a.toDER());else e.appendView(this.value);let r=e.buffer,s=new L7.ByteStream;return s.appendChar(this.tag.toDER()),s.appendView((0,KTe.encodeLength)(r.length)),s.appendView(r),s.buffer}toBoolean(){if(!this.tag.isBoolean())throw new ny.ASN1TypeError("not a boolean");return(0,zw.parseBoolean)(this.value)}toInteger(){if(!this.tag.isInteger())throw new ny.ASN1TypeError("not an integer");return(0,zw.parseInteger)(this.value)}toOID(){if(!this.tag.isOID())throw new ny.ASN1TypeError("not an OID");return(0,zw.parseOID)(this.value)}toDate(){switch(!0){case this.tag.isUTCTime():return(0,zw.parseTime)(this.value,!0);case this.tag.isGeneralizedTime():return(0,zw.parseTime)(this.value,!1);default:throw new ny.ASN1TypeError("not a date")}}toBitString(){if(!this.tag.isBitString())throw new ny.ASN1TypeError("not a bit string");return(0,zw.parseBitString)(this.value)}};gO.ASN1Obj=hO;function JTe(t){let e=new RLt.ASN1Tag(t.getUint8()),r=(0,KTe.decodeLength)(t),s=t.slice(t.position,r),a=t.position,n=[];if(e.constructed)n=VTe(t,r);else if(e.isOctetString())try{n=VTe(t,r)}catch{}return n.length===0&&t.seek(a+r),new hO(e,s,n)}function VTe(t,e){let r=t.position+e;if(r>t.length)throw new ny.ASN1ParseError("invalid length");let s=[];for(;t.position{"use strict";Object.defineProperty(dO,"__esModule",{value:!0});dO.ASN1Obj=void 0;var FLt=zTe();Object.defineProperty(dO,"ASN1Obj",{enumerable:!0,get:function(){return FLt.ASN1Obj}})});var Zw=L(Bg=>{"use strict";var NLt=Bg&&Bg.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Bg,"__esModule",{value:!0});Bg.createPublicKey=OLt;Bg.digest=LLt;Bg.verify=MLt;Bg.bufferEqual=_Lt;var Lb=NLt(ye("crypto"));function OLt(t,e="spki"){return typeof t=="string"?Lb.default.createPublicKey(t):Lb.default.createPublicKey({key:t,format:"der",type:e})}function LLt(t,...e){let r=Lb.default.createHash(t);for(let s of e)r.update(s);return r.digest()}function MLt(t,e,r,s){try{return Lb.default.verify(s,t,e,r)}catch{return!1}}function _Lt(t,e){try{return Lb.default.timingSafeEqual(t,e)}catch{return!1}}});var ZTe=L(M7=>{"use strict";Object.defineProperty(M7,"__esModule",{value:!0});M7.preAuthEncoding=HLt;var ULt="DSSEv1";function HLt(t,e){let r=[ULt,t.length,t,e.length,""].join(" ");return Buffer.concat([Buffer.from(r,"ascii"),e])}});var eRe=L(yO=>{"use strict";Object.defineProperty(yO,"__esModule",{value:!0});yO.base64Encode=jLt;yO.base64Decode=qLt;var XTe="base64",$Te="utf-8";function jLt(t){return Buffer.from(t,$Te).toString(XTe)}function qLt(t){return Buffer.from(t,XTe).toString($Te)}});var tRe=L(U7=>{"use strict";Object.defineProperty(U7,"__esModule",{value:!0});U7.canonicalize=_7;function _7(t){let e="";if(t===null||typeof t!="object"||t.toJSON!=null)e+=JSON.stringify(t);else if(Array.isArray(t)){e+="[";let r=!0;t.forEach(s=>{r||(e+=","),r=!1,e+=_7(s)}),e+="]"}else{e+="{";let r=!0;Object.keys(t).sort().forEach(s=>{r||(e+=","),r=!1,e+=JSON.stringify(s),e+=":",e+=_7(t[s])}),e+="}"}return e}});var H7=L(EO=>{"use strict";Object.defineProperty(EO,"__esModule",{value:!0});EO.toDER=YLt;EO.fromDER=VLt;var GLt=/-----BEGIN (.*)-----/,WLt=/-----END (.*)-----/;function YLt(t){let e="";return t.split(` +`).forEach(r=>{r.match(GLt)||r.match(WLt)||(e+=r)}),Buffer.from(e,"base64")}function VLt(t,e="CERTIFICATE"){let s=t.toString("base64").match(/.{1,64}/g)||"";return[`-----BEGIN ${e}-----`,...s,`-----END ${e}-----`].join(` +`).concat(` +`)}});var IO=L(Xw=>{"use strict";Object.defineProperty(Xw,"__esModule",{value:!0});Xw.SHA2_HASH_ALGOS=Xw.ECDSA_SIGNATURE_ALGOS=void 0;Xw.ECDSA_SIGNATURE_ALGOS={"1.2.840.10045.4.3.1":"sha224","1.2.840.10045.4.3.2":"sha256","1.2.840.10045.4.3.3":"sha384","1.2.840.10045.4.3.4":"sha512"};Xw.SHA2_HASH_ALGOS={"2.16.840.1.101.3.4.2.1":"sha256","2.16.840.1.101.3.4.2.2":"sha384","2.16.840.1.101.3.4.2.3":"sha512"}});var q7=L(CO=>{"use strict";Object.defineProperty(CO,"__esModule",{value:!0});CO.RFC3161TimestampVerificationError=void 0;var j7=class extends Error{};CO.RFC3161TimestampVerificationError=j7});var nRe=L(DA=>{"use strict";var KLt=DA&&DA.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(e,r);(!a||("get"in a?!e.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,s,a)}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),JLt=DA&&DA.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),zLt=DA&&DA.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.prototype.hasOwnProperty.call(t,r)&&KLt(e,t,r);return JLt(e,t),e};Object.defineProperty(DA,"__esModule",{value:!0});DA.TSTInfo=void 0;var rRe=zLt(Zw()),ZLt=IO(),XLt=q7(),G7=class{constructor(e){this.root=e}get version(){return this.root.subs[0].toInteger()}get genTime(){return this.root.subs[4].toDate()}get messageImprintHashAlgorithm(){let e=this.messageImprintObj.subs[0].subs[0].toOID();return ZLt.SHA2_HASH_ALGOS[e]}get messageImprintHashedMessage(){return this.messageImprintObj.subs[1].value}get raw(){return this.root.toDER()}verify(e){let r=rRe.digest(this.messageImprintHashAlgorithm,e);if(!rRe.bufferEqual(r,this.messageImprintHashedMessage))throw new XLt.RFC3161TimestampVerificationError("message imprint does not match artifact")}get messageImprintObj(){return this.root.subs[2]}};DA.TSTInfo=G7});var sRe=L(bA=>{"use strict";var $Lt=bA&&bA.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(e,r);(!a||("get"in a?!e.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,s,a)}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),eMt=bA&&bA.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),tMt=bA&&bA.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.prototype.hasOwnProperty.call(t,r)&&$Lt(e,t,r);return eMt(e,t),e};Object.defineProperty(bA,"__esModule",{value:!0});bA.RFC3161Timestamp=void 0;var rMt=mO(),W7=tMt(Zw()),iRe=IO(),Mb=q7(),nMt=nRe(),iMt="1.2.840.113549.1.7.2",sMt="1.2.840.113549.1.9.16.1.4",oMt="1.2.840.113549.1.9.4",Y7=class t{constructor(e){this.root=e}static parse(e){let r=rMt.ASN1Obj.parseBuffer(e);return new t(r)}get status(){return this.pkiStatusInfoObj.subs[0].toInteger()}get contentType(){return this.contentTypeObj.toOID()}get eContentType(){return this.eContentTypeObj.toOID()}get signingTime(){return this.tstInfo.genTime}get signerIssuer(){return this.signerSidObj.subs[0].value}get signerSerialNumber(){return this.signerSidObj.subs[1].value}get signerDigestAlgorithm(){let e=this.signerDigestAlgorithmObj.subs[0].toOID();return iRe.SHA2_HASH_ALGOS[e]}get signatureAlgorithm(){let e=this.signatureAlgorithmObj.subs[0].toOID();return iRe.ECDSA_SIGNATURE_ALGOS[e]}get signatureValue(){return this.signatureValueObj.value}get tstInfo(){return new nMt.TSTInfo(this.eContentObj.subs[0].subs[0])}verify(e,r){if(!this.timeStampTokenObj)throw new Mb.RFC3161TimestampVerificationError("timeStampToken is missing");if(this.contentType!==iMt)throw new Mb.RFC3161TimestampVerificationError(`incorrect content type: ${this.contentType}`);if(this.eContentType!==sMt)throw new Mb.RFC3161TimestampVerificationError(`incorrect encapsulated content type: ${this.eContentType}`);this.tstInfo.verify(e),this.verifyMessageDigest(),this.verifySignature(r)}verifyMessageDigest(){let e=W7.digest(this.signerDigestAlgorithm,this.tstInfo.raw),r=this.messageDigestAttributeObj.subs[1].subs[0].value;if(!W7.bufferEqual(e,r))throw new Mb.RFC3161TimestampVerificationError("signed data does not match tstInfo")}verifySignature(e){let r=this.signedAttrsObj.toDER();if(r[0]=49,!W7.verify(r,e,this.signatureValue,this.signatureAlgorithm))throw new Mb.RFC3161TimestampVerificationError("signature verification failed")}get pkiStatusInfoObj(){return this.root.subs[0]}get timeStampTokenObj(){return this.root.subs[1]}get contentTypeObj(){return this.timeStampTokenObj.subs[0]}get signedDataObj(){return this.timeStampTokenObj.subs.find(r=>r.tag.isContextSpecific(0)).subs[0]}get encapContentInfoObj(){return this.signedDataObj.subs[2]}get signerInfosObj(){let e=this.signedDataObj;return e.subs[e.subs.length-1]}get signerInfoObj(){return this.signerInfosObj.subs[0]}get eContentTypeObj(){return this.encapContentInfoObj.subs[0]}get eContentObj(){return this.encapContentInfoObj.subs[1]}get signedAttrsObj(){return this.signerInfoObj.subs.find(r=>r.tag.isContextSpecific(0))}get messageDigestAttributeObj(){return this.signedAttrsObj.subs.find(r=>r.subs[0].tag.isOID()&&r.subs[0].toOID()===oMt)}get signerSidObj(){return this.signerInfoObj.subs[1]}get signerDigestAlgorithmObj(){return this.signerInfoObj.subs[2]}get signatureAlgorithmObj(){return this.signerInfoObj.subs[4]}get signatureValueObj(){return this.signerInfoObj.subs[5]}};bA.RFC3161Timestamp=Y7});var oRe=L(wO=>{"use strict";Object.defineProperty(wO,"__esModule",{value:!0});wO.RFC3161Timestamp=void 0;var aMt=sRe();Object.defineProperty(wO,"RFC3161Timestamp",{enumerable:!0,get:function(){return aMt.RFC3161Timestamp}})});var lRe=L(PA=>{"use strict";var lMt=PA&&PA.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(e,r);(!a||("get"in a?!e.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,s,a)}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),cMt=PA&&PA.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),uMt=PA&&PA.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.prototype.hasOwnProperty.call(t,r)&&lMt(e,t,r);return cMt(e,t),e};Object.defineProperty(PA,"__esModule",{value:!0});PA.SignedCertificateTimestamp=void 0;var fMt=uMt(Zw()),aRe=Ob(),V7=class t{constructor(e){this.version=e.version,this.logID=e.logID,this.timestamp=e.timestamp,this.extensions=e.extensions,this.hashAlgorithm=e.hashAlgorithm,this.signatureAlgorithm=e.signatureAlgorithm,this.signature=e.signature}get datetime(){return new Date(Number(this.timestamp.readBigInt64BE()))}get algorithm(){switch(this.hashAlgorithm){case 0:return"none";case 1:return"md5";case 2:return"sha1";case 3:return"sha224";case 4:return"sha256";case 5:return"sha384";case 6:return"sha512";default:return"unknown"}}verify(e,r){let s=new aRe.ByteStream;return s.appendChar(this.version),s.appendChar(0),s.appendView(this.timestamp),s.appendUint16(1),s.appendView(e),s.appendUint16(this.extensions.byteLength),this.extensions.byteLength>0&&s.appendView(this.extensions),fMt.verify(s.buffer,r,this.signature,this.algorithm)}static parse(e){let r=new aRe.ByteStream(e),s=r.getUint8(),a=r.getBlock(32),n=r.getBlock(8),c=r.getUint16(),f=r.getBlock(c),p=r.getUint8(),h=r.getUint8(),E=r.getUint16(),C=r.getBlock(E);if(r.position!==e.length)throw new Error("SCT buffer length mismatch");return new t({version:s,logID:a,timestamp:n,extensions:f,hashAlgorithm:p,signatureAlgorithm:h,signature:C})}};PA.SignedCertificateTimestamp=V7});var eK=L(oa=>{"use strict";Object.defineProperty(oa,"__esModule",{value:!0});oa.X509SCTExtension=oa.X509SubjectKeyIDExtension=oa.X509AuthorityKeyIDExtension=oa.X509SubjectAlternativeNameExtension=oa.X509KeyUsageExtension=oa.X509BasicConstraintsExtension=oa.X509Extension=void 0;var AMt=Ob(),pMt=lRe(),dh=class{constructor(e){this.root=e}get oid(){return this.root.subs[0].toOID()}get critical(){return this.root.subs.length===3?this.root.subs[1].toBoolean():!1}get value(){return this.extnValueObj.value}get valueObj(){return this.extnValueObj}get extnValueObj(){return this.root.subs[this.root.subs.length-1]}};oa.X509Extension=dh;var K7=class extends dh{get isCA(){return this.sequence.subs[0]?.toBoolean()??!1}get pathLenConstraint(){return this.sequence.subs.length>1?this.sequence.subs[1].toInteger():void 0}get sequence(){return this.extnValueObj.subs[0]}};oa.X509BasicConstraintsExtension=K7;var J7=class extends dh{get digitalSignature(){return this.bitString[0]===1}get keyCertSign(){return this.bitString[5]===1}get crlSign(){return this.bitString[6]===1}get bitString(){return this.extnValueObj.subs[0].toBitString()}};oa.X509KeyUsageExtension=J7;var z7=class extends dh{get rfc822Name(){return this.findGeneralName(1)?.value.toString("ascii")}get uri(){return this.findGeneralName(6)?.value.toString("ascii")}otherName(e){let r=this.findGeneralName(0);return r===void 0||r.subs[0].toOID()!==e?void 0:r.subs[1].subs[0].value.toString("ascii")}findGeneralName(e){return this.generalNames.find(r=>r.tag.isContextSpecific(e))}get generalNames(){return this.extnValueObj.subs[0].subs}};oa.X509SubjectAlternativeNameExtension=z7;var Z7=class extends dh{get keyIdentifier(){return this.findSequenceMember(0)?.value}findSequenceMember(e){return this.sequence.subs.find(r=>r.tag.isContextSpecific(e))}get sequence(){return this.extnValueObj.subs[0]}};oa.X509AuthorityKeyIDExtension=Z7;var X7=class extends dh{get keyIdentifier(){return this.extnValueObj.subs[0].value}};oa.X509SubjectKeyIDExtension=X7;var $7=class extends dh{constructor(e){super(e)}get signedCertificateTimestamps(){let e=this.extnValueObj.subs[0].value,r=new AMt.ByteStream(e),s=r.getUint16()+2,a=[];for(;r.position{"use strict";var hMt=sc&&sc.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(e,r);(!a||("get"in a?!e.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,s,a)}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),gMt=sc&&sc.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),uRe=sc&&sc.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.prototype.hasOwnProperty.call(t,r)&&hMt(e,t,r);return gMt(e,t),e};Object.defineProperty(sc,"__esModule",{value:!0});sc.X509Certificate=sc.EXTENSION_OID_SCT=void 0;var dMt=mO(),cRe=uRe(Zw()),mMt=IO(),yMt=uRe(H7()),iy=eK(),EMt="2.5.29.14",IMt="2.5.29.15",CMt="2.5.29.17",wMt="2.5.29.19",BMt="2.5.29.35";sc.EXTENSION_OID_SCT="1.3.6.1.4.1.11129.2.4.2";var tK=class t{constructor(e){this.root=e}static parse(e){let r=typeof e=="string"?yMt.toDER(e):e,s=dMt.ASN1Obj.parseBuffer(r);return new t(s)}get tbsCertificate(){return this.tbsCertificateObj}get version(){return`v${(this.versionObj.subs[0].toInteger()+BigInt(1)).toString()}`}get serialNumber(){return this.serialNumberObj.value}get notBefore(){return this.validityObj.subs[0].toDate()}get notAfter(){return this.validityObj.subs[1].toDate()}get issuer(){return this.issuerObj.value}get subject(){return this.subjectObj.value}get publicKey(){return this.subjectPublicKeyInfoObj.toDER()}get signatureAlgorithm(){let e=this.signatureAlgorithmObj.subs[0].toOID();return mMt.ECDSA_SIGNATURE_ALGOS[e]}get signatureValue(){return this.signatureValueObj.value.subarray(1)}get subjectAltName(){let e=this.extSubjectAltName;return e?.uri||e?.rfc822Name}get extensions(){return this.extensionsObj?.subs[0]?.subs||[]}get extKeyUsage(){let e=this.findExtension(IMt);return e?new iy.X509KeyUsageExtension(e):void 0}get extBasicConstraints(){let e=this.findExtension(wMt);return e?new iy.X509BasicConstraintsExtension(e):void 0}get extSubjectAltName(){let e=this.findExtension(CMt);return e?new iy.X509SubjectAlternativeNameExtension(e):void 0}get extAuthorityKeyID(){let e=this.findExtension(BMt);return e?new iy.X509AuthorityKeyIDExtension(e):void 0}get extSubjectKeyID(){let e=this.findExtension(EMt);return e?new iy.X509SubjectKeyIDExtension(e):void 0}get extSCT(){let e=this.findExtension(sc.EXTENSION_OID_SCT);return e?new iy.X509SCTExtension(e):void 0}get isCA(){let e=this.extBasicConstraints?.isCA||!1;return this.extKeyUsage?e&&this.extKeyUsage.keyCertSign:e}extension(e){let r=this.findExtension(e);return r?new iy.X509Extension(r):void 0}verify(e){let r=e?.publicKey||this.publicKey,s=cRe.createPublicKey(r);return cRe.verify(this.tbsCertificate.toDER(),s,this.signatureValue,this.signatureAlgorithm)}validForDate(e){return this.notBefore<=e&&e<=this.notAfter}equals(e){return this.root.toDER().equals(e.root.toDER())}clone(){let e=this.root.toDER(),r=Buffer.alloc(e.length);return e.copy(r),t.parse(r)}findExtension(e){return this.extensions.find(r=>r.subs[0].toOID()===e)}get tbsCertificateObj(){return this.root.subs[0]}get signatureAlgorithmObj(){return this.root.subs[1]}get signatureValueObj(){return this.root.subs[2]}get versionObj(){return this.tbsCertificateObj.subs[0]}get serialNumberObj(){return this.tbsCertificateObj.subs[1]}get issuerObj(){return this.tbsCertificateObj.subs[3]}get validityObj(){return this.tbsCertificateObj.subs[4]}get subjectObj(){return this.tbsCertificateObj.subs[5]}get subjectPublicKeyInfoObj(){return this.tbsCertificateObj.subs[6]}get extensionsObj(){return this.tbsCertificateObj.subs.find(e=>e.tag.isContextSpecific(3))}};sc.X509Certificate=tK});var pRe=L(vg=>{"use strict";Object.defineProperty(vg,"__esModule",{value:!0});vg.X509SCTExtension=vg.X509Certificate=vg.EXTENSION_OID_SCT=void 0;var ARe=fRe();Object.defineProperty(vg,"EXTENSION_OID_SCT",{enumerable:!0,get:function(){return ARe.EXTENSION_OID_SCT}});Object.defineProperty(vg,"X509Certificate",{enumerable:!0,get:function(){return ARe.X509Certificate}});var vMt=eK();Object.defineProperty(vg,"X509SCTExtension",{enumerable:!0,get:function(){return vMt.X509SCTExtension}})});var wl=L(Kn=>{"use strict";var SMt=Kn&&Kn.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(e,r);(!a||("get"in a?!e.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,s,a)}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),DMt=Kn&&Kn.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),_b=Kn&&Kn.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.prototype.hasOwnProperty.call(t,r)&&SMt(e,t,r);return DMt(e,t),e};Object.defineProperty(Kn,"__esModule",{value:!0});Kn.X509SCTExtension=Kn.X509Certificate=Kn.EXTENSION_OID_SCT=Kn.ByteStream=Kn.RFC3161Timestamp=Kn.pem=Kn.json=Kn.encoding=Kn.dsse=Kn.crypto=Kn.ASN1Obj=void 0;var bMt=mO();Object.defineProperty(Kn,"ASN1Obj",{enumerable:!0,get:function(){return bMt.ASN1Obj}});Kn.crypto=_b(Zw());Kn.dsse=_b(ZTe());Kn.encoding=_b(eRe());Kn.json=_b(tRe());Kn.pem=_b(H7());var PMt=oRe();Object.defineProperty(Kn,"RFC3161Timestamp",{enumerable:!0,get:function(){return PMt.RFC3161Timestamp}});var xMt=Ob();Object.defineProperty(Kn,"ByteStream",{enumerable:!0,get:function(){return xMt.ByteStream}});var rK=pRe();Object.defineProperty(Kn,"EXTENSION_OID_SCT",{enumerable:!0,get:function(){return rK.EXTENSION_OID_SCT}});Object.defineProperty(Kn,"X509Certificate",{enumerable:!0,get:function(){return rK.X509Certificate}});Object.defineProperty(Kn,"X509SCTExtension",{enumerable:!0,get:function(){return rK.X509SCTExtension}})});var hRe=L(nK=>{"use strict";Object.defineProperty(nK,"__esModule",{value:!0});nK.extractJWTSubject=QMt;var kMt=wl();function QMt(t){let e=t.split(".",3),r=JSON.parse(kMt.encoding.base64Decode(e[1]));switch(r.iss){case"https://accounts.google.com":case"https://oauth2.sigstore.dev/auth":return r.email;default:return r.sub}}});var gRe=L((kCr,TMt)=>{TMt.exports={name:"@sigstore/sign",version:"3.1.0",description:"Sigstore signing library",main:"dist/index.js",types:"dist/index.d.ts",scripts:{clean:"shx rm -rf dist *.tsbuildinfo",build:"tsc --build",test:"jest"},files:["dist"],author:"bdehamer@github.com",license:"Apache-2.0",repository:{type:"git",url:"git+https://github.com/sigstore/sigstore-js.git"},bugs:{url:"https://github.com/sigstore/sigstore-js/issues"},homepage:"https://github.com/sigstore/sigstore-js/tree/main/packages/sign#readme",publishConfig:{provenance:!0},devDependencies:{"@sigstore/jest":"^0.0.0","@sigstore/mock":"^0.10.0","@sigstore/rekor-types":"^3.0.0","@types/make-fetch-happen":"^10.0.4","@types/promise-retry":"^1.1.6"},dependencies:{"@sigstore/bundle":"^3.1.0","@sigstore/core":"^2.0.0","@sigstore/protobuf-specs":"^0.4.0","make-fetch-happen":"^14.0.2","proc-log":"^5.0.0","promise-retry":"^2.0.1"},engines:{node:"^18.17.0 || >=20.5.0"}}});var mRe=L($w=>{"use strict";var RMt=$w&&$w.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty($w,"__esModule",{value:!0});$w.getUserAgent=void 0;var dRe=RMt(ye("os")),FMt=()=>{let t=gRe().version,e=process.version,r=dRe.default.platform(),s=dRe.default.arch();return`sigstore-js/${t} (Node ${e}) (${r}/${s})`};$w.getUserAgent=FMt});var Sg=L(Ki=>{"use strict";var NMt=Ki&&Ki.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(e,r);(!a||("get"in a?!e.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,s,a)}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),OMt=Ki&&Ki.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),yRe=Ki&&Ki.__importStar||function(){var t=function(e){return t=Object.getOwnPropertyNames||function(r){var s=[];for(var a in r)Object.prototype.hasOwnProperty.call(r,a)&&(s[s.length]=a);return s},t(e)};return function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var s=t(e),a=0;a{"use strict";Object.defineProperty(BO,"__esModule",{value:!0});BO.BaseBundleBuilder=void 0;var iK=class{constructor(e){this.signer=e.signer,this.witnesses=e.witnesses}async create(e){let r=await this.prepare(e).then(f=>this.signer.sign(f)),s=await this.package(e,r),a=await Promise.all(this.witnesses.map(f=>f.testify(s.content,LMt(r.key)))),n=[],c=[];return a.forEach(({tlogEntries:f,rfc3161Timestamps:p})=>{n.push(...f??[]),c.push(...p??[])}),s.verificationMaterial.tlogEntries=n,s.verificationMaterial.timestampVerificationData={rfc3161Timestamps:c},s}async prepare(e){return e.data}};BO.BaseBundleBuilder=iK;function LMt(t){switch(t.$case){case"publicKey":return t.publicKey;case"x509Certificate":return t.certificate}}});var aK=L(xA=>{"use strict";var MMt=xA&&xA.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(e,r);(!a||("get"in a?!e.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,s,a)}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),_Mt=xA&&xA.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),UMt=xA&&xA.__importStar||function(){var t=function(e){return t=Object.getOwnPropertyNames||function(r){var s=[];for(var a in r)Object.prototype.hasOwnProperty.call(r,a)&&(s[s.length]=a);return s},t(e)};return function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var s=t(e),a=0;a{"use strict";Object.defineProperty(vO,"__esModule",{value:!0});vO.DSSEBundleBuilder=void 0;var qMt=Sg(),GMt=sK(),WMt=aK(),lK=class extends GMt.BaseBundleBuilder{constructor(e){super(e),this.certificateChain=e.certificateChain??!1}async prepare(e){let r=IRe(e);return qMt.dsse.preAuthEncoding(r.type,r.data)}async package(e,r){return(0,WMt.toDSSEBundle)(IRe(e),r,this.certificateChain)}};vO.DSSEBundleBuilder=lK;function IRe(t){return{...t,type:t.type??""}}});var wRe=L(SO=>{"use strict";Object.defineProperty(SO,"__esModule",{value:!0});SO.MessageSignatureBundleBuilder=void 0;var YMt=sK(),VMt=aK(),cK=class extends YMt.BaseBundleBuilder{constructor(e){super(e)}async package(e,r){return(0,VMt.toMessageSignatureBundle)(e,r)}};SO.MessageSignatureBundleBuilder=cK});var BRe=L(e1=>{"use strict";Object.defineProperty(e1,"__esModule",{value:!0});e1.MessageSignatureBundleBuilder=e1.DSSEBundleBuilder=void 0;var KMt=CRe();Object.defineProperty(e1,"DSSEBundleBuilder",{enumerable:!0,get:function(){return KMt.DSSEBundleBuilder}});var JMt=wRe();Object.defineProperty(e1,"MessageSignatureBundleBuilder",{enumerable:!0,get:function(){return JMt.MessageSignatureBundleBuilder}})});var bO=L(DO=>{"use strict";Object.defineProperty(DO,"__esModule",{value:!0});DO.HTTPError=void 0;var uK=class extends Error{constructor({status:e,message:r,location:s}){super(`(${e}) ${r}`),this.statusCode=e,this.location=s}};DO.HTTPError=uK});var t1=L(Hb=>{"use strict";Object.defineProperty(Hb,"__esModule",{value:!0});Hb.InternalError=void 0;Hb.internalError=ZMt;var zMt=bO(),PO=class extends Error{constructor({code:e,message:r,cause:s}){super(r),this.name=this.constructor.name,this.cause=s,this.code=e}};Hb.InternalError=PO;function ZMt(t,e,r){throw t instanceof zMt.HTTPError&&(r+=` - ${t.message}`),new PO({code:e,message:r,cause:t})}});var xO=L((UCr,vRe)=>{vRe.exports=fetch});var SRe=L(r1=>{"use strict";var XMt=r1&&r1.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(r1,"__esModule",{value:!0});r1.CIContextProvider=void 0;var $Mt=XMt(xO()),e_t=[t_t,r_t],fK=class{constructor(e="sigstore"){this.audience=e}async getToken(){return Promise.any(e_t.map(e=>e(this.audience))).catch(()=>Promise.reject("CI: no tokens available"))}};r1.CIContextProvider=fK;async function t_t(t){if(!process.env.ACTIONS_ID_TOKEN_REQUEST_URL||!process.env.ACTIONS_ID_TOKEN_REQUEST_TOKEN)return Promise.reject("no token available");let e=new URL(process.env.ACTIONS_ID_TOKEN_REQUEST_URL);return e.searchParams.append("audience",t),(await(0,$Mt.default)(e.href,{retry:2,headers:{Accept:"application/json",Authorization:`Bearer ${process.env.ACTIONS_ID_TOKEN_REQUEST_TOKEN}`}})).json().then(s=>s.value)}async function r_t(){return process.env.SIGSTORE_ID_TOKEN?process.env.SIGSTORE_ID_TOKEN:Promise.reject("no token available")}});var DRe=L(kO=>{"use strict";Object.defineProperty(kO,"__esModule",{value:!0});kO.CIContextProvider=void 0;var n_t=SRe();Object.defineProperty(kO,"CIContextProvider",{enumerable:!0,get:function(){return n_t.CIContextProvider}})});var PRe=L((qCr,bRe)=>{var i_t=Symbol("proc-log.meta");bRe.exports={META:i_t,output:{LEVELS:["standard","error","buffer","flush"],KEYS:{standard:"standard",error:"error",buffer:"buffer",flush:"flush"},standard:function(...t){return process.emit("output","standard",...t)},error:function(...t){return process.emit("output","error",...t)},buffer:function(...t){return process.emit("output","buffer",...t)},flush:function(...t){return process.emit("output","flush",...t)}},log:{LEVELS:["notice","error","warn","info","verbose","http","silly","timing","pause","resume"],KEYS:{notice:"notice",error:"error",warn:"warn",info:"info",verbose:"verbose",http:"http",silly:"silly",timing:"timing",pause:"pause",resume:"resume"},error:function(...t){return process.emit("log","error",...t)},notice:function(...t){return process.emit("log","notice",...t)},warn:function(...t){return process.emit("log","warn",...t)},info:function(...t){return process.emit("log","info",...t)},verbose:function(...t){return process.emit("log","verbose",...t)},http:function(...t){return process.emit("log","http",...t)},silly:function(...t){return process.emit("log","silly",...t)},timing:function(...t){return process.emit("log","timing",...t)},pause:function(){return process.emit("log","pause")},resume:function(){return process.emit("log","resume")}},time:{LEVELS:["start","end"],KEYS:{start:"start",end:"end"},start:function(t,e){process.emit("time","start",t);function r(){return process.emit("time","end",t)}if(typeof e=="function"){let s=e();return s&&s.finally?s.finally(r):(r(),s)}return r},end:function(t){return process.emit("time","end",t)}},input:{LEVELS:["start","end","read"],KEYS:{start:"start",end:"end",read:"read"},start:function(t){process.emit("input","start");function e(){return process.emit("input","end")}if(typeof t=="function"){let r=t();return r&&r.finally?r.finally(e):(e(),r)}return e},end:function(){return process.emit("input","end")},read:function(...t){let e,r,s=new Promise((a,n)=>{e=a,r=n});return process.emit("input","read",e,r,...t),s}}}});var QRe=L((GCr,kRe)=>{"use strict";function xRe(t,e){for(let r in e)Object.defineProperty(t,r,{value:e[r],enumerable:!0,configurable:!0});return t}function s_t(t,e,r){if(!t||typeof t=="string")throw new TypeError("Please pass an Error to err-code");r||(r={}),typeof e=="object"&&(r=e,e=void 0),e!=null&&(r.code=e);try{return xRe(t,r)}catch{r.message=t.message,r.stack=t.stack;let a=function(){};return a.prototype=Object.create(Object.getPrototypeOf(t)),xRe(new a,r)}}kRe.exports=s_t});var RRe=L((WCr,TRe)=>{function tu(t,e){typeof e=="boolean"&&(e={forever:e}),this._originalTimeouts=JSON.parse(JSON.stringify(t)),this._timeouts=t,this._options=e||{},this._maxRetryTime=e&&e.maxRetryTime||1/0,this._fn=null,this._errors=[],this._attempts=1,this._operationTimeout=null,this._operationTimeoutCb=null,this._timeout=null,this._operationStart=null,this._options.forever&&(this._cachedTimeouts=this._timeouts.slice(0))}TRe.exports=tu;tu.prototype.reset=function(){this._attempts=1,this._timeouts=this._originalTimeouts};tu.prototype.stop=function(){this._timeout&&clearTimeout(this._timeout),this._timeouts=[],this._cachedTimeouts=null};tu.prototype.retry=function(t){if(this._timeout&&clearTimeout(this._timeout),!t)return!1;var e=new Date().getTime();if(t&&e-this._operationStart>=this._maxRetryTime)return this._errors.unshift(new Error("RetryOperation timeout occurred")),!1;this._errors.push(t);var r=this._timeouts.shift();if(r===void 0)if(this._cachedTimeouts)this._errors.splice(this._errors.length-1,this._errors.length),this._timeouts=this._cachedTimeouts.slice(0),r=this._timeouts.shift();else return!1;var s=this,a=setTimeout(function(){s._attempts++,s._operationTimeoutCb&&(s._timeout=setTimeout(function(){s._operationTimeoutCb(s._attempts)},s._operationTimeout),s._options.unref&&s._timeout.unref()),s._fn(s._attempts)},r);return this._options.unref&&a.unref(),!0};tu.prototype.attempt=function(t,e){this._fn=t,e&&(e.timeout&&(this._operationTimeout=e.timeout),e.cb&&(this._operationTimeoutCb=e.cb));var r=this;this._operationTimeoutCb&&(this._timeout=setTimeout(function(){r._operationTimeoutCb()},r._operationTimeout)),this._operationStart=new Date().getTime(),this._fn(this._attempts)};tu.prototype.try=function(t){console.log("Using RetryOperation.try() is deprecated"),this.attempt(t)};tu.prototype.start=function(t){console.log("Using RetryOperation.start() is deprecated"),this.attempt(t)};tu.prototype.start=tu.prototype.try;tu.prototype.errors=function(){return this._errors};tu.prototype.attempts=function(){return this._attempts};tu.prototype.mainError=function(){if(this._errors.length===0)return null;for(var t={},e=null,r=0,s=0;s=r&&(e=a,r=c)}return e}});var FRe=L(sy=>{var o_t=RRe();sy.operation=function(t){var e=sy.timeouts(t);return new o_t(e,{forever:t&&t.forever,unref:t&&t.unref,maxRetryTime:t&&t.maxRetryTime})};sy.timeouts=function(t){if(t instanceof Array)return[].concat(t);var e={retries:10,factor:2,minTimeout:1*1e3,maxTimeout:1/0,randomize:!1};for(var r in t)e[r]=t[r];if(e.minTimeout>e.maxTimeout)throw new Error("minTimeout is greater than maxTimeout");for(var s=[],a=0;a{NRe.exports=FRe()});var _Re=L((KCr,MRe)=>{"use strict";var a_t=QRe(),l_t=ORe(),c_t=Object.prototype.hasOwnProperty;function LRe(t){return t&&t.code==="EPROMISERETRY"&&c_t.call(t,"retried")}function u_t(t,e){var r,s;return typeof t=="object"&&typeof e=="function"&&(r=e,e=t,t=r),s=l_t.operation(e),new Promise(function(a,n){s.attempt(function(c){Promise.resolve().then(function(){return t(function(f){throw LRe(f)&&(f=f.retried),a_t(new Error("Retrying"),"EPROMISERETRY",{retried:f})},c)}).then(a,function(f){LRe(f)&&(f=f.retried,s.retry(f||new Error))||n(f)})})})}MRe.exports=u_t});var QO=L(jb=>{"use strict";var HRe=jb&&jb.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(jb,"__esModule",{value:!0});jb.fetchWithRetry=w_t;var f_t=ye("http2"),A_t=HRe(xO()),URe=PRe(),p_t=HRe(_Re()),h_t=Sg(),g_t=bO(),{HTTP2_HEADER_LOCATION:d_t,HTTP2_HEADER_CONTENT_TYPE:m_t,HTTP2_HEADER_USER_AGENT:y_t,HTTP_STATUS_INTERNAL_SERVER_ERROR:E_t,HTTP_STATUS_TOO_MANY_REQUESTS:I_t,HTTP_STATUS_REQUEST_TIMEOUT:C_t}=f_t.constants;async function w_t(t,e){return(0,p_t.default)(async(r,s)=>{let a=e.method||"POST",n={[y_t]:h_t.ua.getUserAgent(),...e.headers},c=await(0,A_t.default)(t,{method:a,headers:n,body:e.body,timeout:e.timeout,retry:!1}).catch(f=>(URe.log.http("fetch",`${a} ${t} attempt ${s} failed with ${f}`),r(f)));if(c.ok)return c;{let f=await B_t(c);if(URe.log.http("fetch",`${a} ${t} attempt ${s} failed with ${c.status}`),v_t(c.status))return r(f);throw f}},S_t(e.retry))}var B_t=async t=>{let e=t.statusText,r=t.headers.get(d_t)||void 0;if(t.headers.get(m_t)?.includes("application/json"))try{e=(await t.json()).message||e}catch{}return new g_t.HTTPError({status:t.status,message:e,location:r})},v_t=t=>[C_t,I_t].includes(t)||t>=E_t,S_t=t=>typeof t=="boolean"?{retries:t?1:0}:typeof t=="number"?{retries:t}:{retries:0,...t}});var jRe=L(TO=>{"use strict";Object.defineProperty(TO,"__esModule",{value:!0});TO.Fulcio=void 0;var D_t=QO(),AK=class{constructor(e){this.options=e}async createSigningCertificate(e){let{baseURL:r,retry:s,timeout:a}=this.options,n=`${r}/api/v2/signingCert`;return(await(0,D_t.fetchWithRetry)(n,{headers:{"Content-Type":"application/json"},body:JSON.stringify(e),timeout:a,retry:s})).json()}};TO.Fulcio=AK});var qRe=L(RO=>{"use strict";Object.defineProperty(RO,"__esModule",{value:!0});RO.CAClient=void 0;var b_t=t1(),P_t=jRe(),pK=class{constructor(e){this.fulcio=new P_t.Fulcio({baseURL:e.fulcioBaseURL,retry:e.retry,timeout:e.timeout})}async createSigningCertificate(e,r,s){let a=x_t(e,r,s);try{let n=await this.fulcio.createSigningCertificate(a);return(n.signedCertificateEmbeddedSct?n.signedCertificateEmbeddedSct:n.signedCertificateDetachedSct).chain.certificates}catch(n){(0,b_t.internalError)(n,"CA_CREATE_SIGNING_CERTIFICATE_ERROR","error creating signing certificate")}}};RO.CAClient=pK;function x_t(t,e,r){return{credentials:{oidcIdentityToken:t},publicKeyRequest:{publicKey:{algorithm:"ECDSA",content:e},proofOfPossession:r.toString("base64")}}}});var WRe=L(n1=>{"use strict";var k_t=n1&&n1.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(n1,"__esModule",{value:!0});n1.EphemeralSigner=void 0;var GRe=k_t(ye("crypto")),Q_t="ec",T_t="P-256",hK=class{constructor(){this.keypair=GRe.default.generateKeyPairSync(Q_t,{namedCurve:T_t})}async sign(e){let r=GRe.default.sign(null,e,this.keypair.privateKey),s=this.keypair.publicKey.export({format:"pem",type:"spki"}).toString("ascii");return{signature:r,key:{$case:"publicKey",publicKey:s}}}};n1.EphemeralSigner=hK});var YRe=L(oy=>{"use strict";Object.defineProperty(oy,"__esModule",{value:!0});oy.FulcioSigner=oy.DEFAULT_FULCIO_URL=void 0;var gK=t1(),R_t=Sg(),F_t=qRe(),N_t=WRe();oy.DEFAULT_FULCIO_URL="https://fulcio.sigstore.dev";var dK=class{constructor(e){this.ca=new F_t.CAClient({...e,fulcioBaseURL:e.fulcioBaseURL||oy.DEFAULT_FULCIO_URL}),this.identityProvider=e.identityProvider,this.keyHolder=e.keyHolder||new N_t.EphemeralSigner}async sign(e){let r=await this.getIdentityToken(),s;try{s=R_t.oidc.extractJWTSubject(r)}catch(f){throw new gK.InternalError({code:"IDENTITY_TOKEN_PARSE_ERROR",message:`invalid identity token: ${r}`,cause:f})}let a=await this.keyHolder.sign(Buffer.from(s));if(a.key.$case!=="publicKey")throw new gK.InternalError({code:"CA_CREATE_SIGNING_CERTIFICATE_ERROR",message:"unexpected format for signing key"});let n=await this.ca.createSigningCertificate(r,a.key.publicKey,a.signature);return{signature:(await this.keyHolder.sign(e)).signature,key:{$case:"x509Certificate",certificate:n[0]}}}async getIdentityToken(){try{return await this.identityProvider.getToken()}catch(e){throw new gK.InternalError({code:"IDENTITY_TOKEN_READ_ERROR",message:"error retrieving identity token",cause:e})}}};oy.FulcioSigner=dK});var KRe=L(i1=>{"use strict";Object.defineProperty(i1,"__esModule",{value:!0});i1.FulcioSigner=i1.DEFAULT_FULCIO_URL=void 0;var VRe=YRe();Object.defineProperty(i1,"DEFAULT_FULCIO_URL",{enumerable:!0,get:function(){return VRe.DEFAULT_FULCIO_URL}});Object.defineProperty(i1,"FulcioSigner",{enumerable:!0,get:function(){return VRe.FulcioSigner}})});var ZRe=L(FO=>{"use strict";Object.defineProperty(FO,"__esModule",{value:!0});FO.Rekor=void 0;var JRe=QO(),mK=class{constructor(e){this.options=e}async createEntry(e){let{baseURL:r,timeout:s,retry:a}=this.options,n=`${r}/api/v1/log/entries`,f=await(await(0,JRe.fetchWithRetry)(n,{headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify(e),timeout:s,retry:a})).json();return zRe(f)}async getEntry(e){let{baseURL:r,timeout:s,retry:a}=this.options,n=`${r}/api/v1/log/entries/${e}`,f=await(await(0,JRe.fetchWithRetry)(n,{method:"GET",headers:{Accept:"application/json"},timeout:s,retry:a})).json();return zRe(f)}};FO.Rekor=mK;function zRe(t){let e=Object.entries(t);if(e.length!=1)throw new Error("Received multiple entries in Rekor response");let[r,s]=e[0];return{...s,uuid:r}}});var $Re=L(NO=>{"use strict";Object.defineProperty(NO,"__esModule",{value:!0});NO.TLogClient=void 0;var XRe=t1(),O_t=bO(),L_t=ZRe(),yK=class{constructor(e){this.fetchOnConflict=e.fetchOnConflict??!1,this.rekor=new L_t.Rekor({baseURL:e.rekorBaseURL,retry:e.retry,timeout:e.timeout})}async createEntry(e){let r;try{r=await this.rekor.createEntry(e)}catch(s){if(M_t(s)&&this.fetchOnConflict){let a=s.location.split("/").pop()||"";try{r=await this.rekor.getEntry(a)}catch(n){(0,XRe.internalError)(n,"TLOG_FETCH_ENTRY_ERROR","error fetching tlog entry")}}else(0,XRe.internalError)(s,"TLOG_CREATE_ENTRY_ERROR","error creating tlog entry")}return r}};NO.TLogClient=yK;function M_t(t){return t instanceof O_t.HTTPError&&t.statusCode===409&&t.location!==void 0}});var eFe=L(EK=>{"use strict";Object.defineProperty(EK,"__esModule",{value:!0});EK.toProposedEntry=U_t;var __t=Nb(),Dg=Sg(),qb="sha256";function U_t(t,e,r="dsse"){switch(t.$case){case"dsseEnvelope":return r==="intoto"?q_t(t.dsseEnvelope,e):j_t(t.dsseEnvelope,e);case"messageSignature":return H_t(t.messageSignature,e)}}function H_t(t,e){let r=t.messageDigest.digest.toString("hex"),s=t.signature.toString("base64"),a=Dg.encoding.base64Encode(e);return{apiVersion:"0.0.1",kind:"hashedrekord",spec:{data:{hash:{algorithm:qb,value:r}},signature:{content:s,publicKey:{content:a}}}}}function j_t(t,e){let r=JSON.stringify((0,__t.envelopeToJSON)(t)),s=Dg.encoding.base64Encode(e);return{apiVersion:"0.0.1",kind:"dsse",spec:{proposedContent:{envelope:r,verifiers:[s]}}}}function q_t(t,e){let r=Dg.crypto.digest(qb,t.payload).toString("hex"),s=G_t(t,e),a=Dg.encoding.base64Encode(t.payload.toString("base64")),n=Dg.encoding.base64Encode(t.signatures[0].sig.toString("base64")),c=t.signatures[0].keyid,f=Dg.encoding.base64Encode(e),p={payloadType:t.payloadType,payload:a,signatures:[{sig:n,publicKey:f}]};return c.length>0&&(p.signatures[0].keyid=c),{apiVersion:"0.0.2",kind:"intoto",spec:{content:{envelope:p,hash:{algorithm:qb,value:s},payloadHash:{algorithm:qb,value:r}}}}}function G_t(t,e){let r={payloadType:t.payloadType,payload:t.payload.toString("base64"),signatures:[{sig:t.signatures[0].sig.toString("base64"),publicKey:e}]};return t.signatures[0].keyid.length>0&&(r.signatures[0].keyid=t.signatures[0].keyid),Dg.crypto.digest(qb,Dg.json.canonicalize(r)).toString("hex")}});var tFe=L(ay=>{"use strict";Object.defineProperty(ay,"__esModule",{value:!0});ay.RekorWitness=ay.DEFAULT_REKOR_URL=void 0;var W_t=Sg(),Y_t=$Re(),V_t=eFe();ay.DEFAULT_REKOR_URL="https://rekor.sigstore.dev";var IK=class{constructor(e){this.entryType=e.entryType,this.tlog=new Y_t.TLogClient({...e,rekorBaseURL:e.rekorBaseURL||ay.DEFAULT_REKOR_URL})}async testify(e,r){let s=(0,V_t.toProposedEntry)(e,r,this.entryType),a=await this.tlog.createEntry(s);return K_t(a)}};ay.RekorWitness=IK;function K_t(t){let e=Buffer.from(t.logID,"hex"),r=W_t.encoding.base64Decode(t.body),s=JSON.parse(r),a=t?.verification?.signedEntryTimestamp?J_t(t.verification.signedEntryTimestamp):void 0,n=t?.verification?.inclusionProof?z_t(t.verification.inclusionProof):void 0;return{tlogEntries:[{logIndex:t.logIndex.toString(),logId:{keyId:e},integratedTime:t.integratedTime.toString(),kindVersion:{kind:s.kind,version:s.apiVersion},inclusionPromise:a,inclusionProof:n,canonicalizedBody:Buffer.from(t.body,"base64")}]}}function J_t(t){return{signedEntryTimestamp:Buffer.from(t,"base64")}}function z_t(t){return{logIndex:t.logIndex.toString(),treeSize:t.treeSize.toString(),rootHash:Buffer.from(t.rootHash,"hex"),hashes:t.hashes.map(e=>Buffer.from(e,"hex")),checkpoint:{envelope:t.checkpoint}}}});var rFe=L(OO=>{"use strict";Object.defineProperty(OO,"__esModule",{value:!0});OO.TimestampAuthority=void 0;var Z_t=QO(),CK=class{constructor(e){this.options=e}async createTimestamp(e){let{baseURL:r,timeout:s,retry:a}=this.options,n=`${r}/api/v1/timestamp`;return(await(0,Z_t.fetchWithRetry)(n,{headers:{"Content-Type":"application/json"},body:JSON.stringify(e),timeout:s,retry:a})).buffer()}};OO.TimestampAuthority=CK});var iFe=L(LO=>{"use strict";Object.defineProperty(LO,"__esModule",{value:!0});LO.TSAClient=void 0;var X_t=t1(),$_t=rFe(),eUt=Sg(),nFe="sha256",wK=class{constructor(e){this.tsa=new $_t.TimestampAuthority({baseURL:e.tsaBaseURL,retry:e.retry,timeout:e.timeout})}async createTimestamp(e){let r={artifactHash:eUt.crypto.digest(nFe,e).toString("base64"),hashAlgorithm:nFe};try{return await this.tsa.createTimestamp(r)}catch(s){(0,X_t.internalError)(s,"TSA_CREATE_TIMESTAMP_ERROR","error creating timestamp")}}};LO.TSAClient=wK});var sFe=L(MO=>{"use strict";Object.defineProperty(MO,"__esModule",{value:!0});MO.TSAWitness=void 0;var tUt=iFe(),BK=class{constructor(e){this.tsa=new tUt.TSAClient({tsaBaseURL:e.tsaBaseURL,retry:e.retry,timeout:e.timeout})}async testify(e){let r=rUt(e);return{rfc3161Timestamps:[{signedTimestamp:await this.tsa.createTimestamp(r)}]}}};MO.TSAWitness=BK;function rUt(t){switch(t.$case){case"dsseEnvelope":return t.dsseEnvelope.signatures[0].sig;case"messageSignature":return t.messageSignature.signature}}});var aFe=L(bg=>{"use strict";Object.defineProperty(bg,"__esModule",{value:!0});bg.TSAWitness=bg.RekorWitness=bg.DEFAULT_REKOR_URL=void 0;var oFe=tFe();Object.defineProperty(bg,"DEFAULT_REKOR_URL",{enumerable:!0,get:function(){return oFe.DEFAULT_REKOR_URL}});Object.defineProperty(bg,"RekorWitness",{enumerable:!0,get:function(){return oFe.RekorWitness}});var nUt=sFe();Object.defineProperty(bg,"TSAWitness",{enumerable:!0,get:function(){return nUt.TSAWitness}})});var SK=L(Es=>{"use strict";Object.defineProperty(Es,"__esModule",{value:!0});Es.TSAWitness=Es.RekorWitness=Es.DEFAULT_REKOR_URL=Es.FulcioSigner=Es.DEFAULT_FULCIO_URL=Es.CIContextProvider=Es.InternalError=Es.MessageSignatureBundleBuilder=Es.DSSEBundleBuilder=void 0;var lFe=BRe();Object.defineProperty(Es,"DSSEBundleBuilder",{enumerable:!0,get:function(){return lFe.DSSEBundleBuilder}});Object.defineProperty(Es,"MessageSignatureBundleBuilder",{enumerable:!0,get:function(){return lFe.MessageSignatureBundleBuilder}});var iUt=t1();Object.defineProperty(Es,"InternalError",{enumerable:!0,get:function(){return iUt.InternalError}});var sUt=DRe();Object.defineProperty(Es,"CIContextProvider",{enumerable:!0,get:function(){return sUt.CIContextProvider}});var cFe=KRe();Object.defineProperty(Es,"DEFAULT_FULCIO_URL",{enumerable:!0,get:function(){return cFe.DEFAULT_FULCIO_URL}});Object.defineProperty(Es,"FulcioSigner",{enumerable:!0,get:function(){return cFe.FulcioSigner}});var vK=aFe();Object.defineProperty(Es,"DEFAULT_REKOR_URL",{enumerable:!0,get:function(){return vK.DEFAULT_REKOR_URL}});Object.defineProperty(Es,"RekorWitness",{enumerable:!0,get:function(){return vK.RekorWitness}});Object.defineProperty(Es,"TSAWitness",{enumerable:!0,get:function(){return vK.TSAWitness}})});var fFe=L(Gb=>{"use strict";var uFe=Gb&&Gb.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Gb,"__esModule",{value:!0});Gb.appDataPath=aUt;var oUt=uFe(ye("os")),s1=uFe(ye("path"));function aUt(t){let e=oUt.default.homedir();switch(process.platform){case"darwin":{let r=s1.default.join(e,"Library","Application Support");return s1.default.join(r,t)}case"win32":{let r=process.env.LOCALAPPDATA||s1.default.join(e,"AppData","Local");return s1.default.join(r,t,"Data")}default:{let r=process.env.XDG_DATA_HOME||s1.default.join(e,".local","share");return s1.default.join(r,t)}}}});var kA=L(Bl=>{"use strict";Object.defineProperty(Bl,"__esModule",{value:!0});Bl.UnsupportedAlgorithmError=Bl.CryptoError=Bl.LengthOrHashMismatchError=Bl.UnsignedMetadataError=Bl.RepositoryError=Bl.ValueError=void 0;var DK=class extends Error{};Bl.ValueError=DK;var Wb=class extends Error{};Bl.RepositoryError=Wb;var bK=class extends Wb{};Bl.UnsignedMetadataError=bK;var PK=class extends Wb{};Bl.LengthOrHashMismatchError=PK;var _O=class extends Error{};Bl.CryptoError=_O;var xK=class extends _O{};Bl.UnsupportedAlgorithmError=xK});var pFe=L(Pg=>{"use strict";Object.defineProperty(Pg,"__esModule",{value:!0});Pg.isDefined=lUt;Pg.isObject=AFe;Pg.isStringArray=cUt;Pg.isObjectArray=uUt;Pg.isStringRecord=fUt;Pg.isObjectRecord=AUt;function lUt(t){return t!==void 0}function AFe(t){return typeof t=="object"&&t!==null}function cUt(t){return Array.isArray(t)&&t.every(e=>typeof e=="string")}function uUt(t){return Array.isArray(t)&&t.every(AFe)}function fUt(t){return typeof t=="object"&&t!==null&&Object.keys(t).every(e=>typeof e=="string")&&Object.values(t).every(e=>typeof e=="string")}function AUt(t){return typeof t=="object"&&t!==null&&Object.keys(t).every(e=>typeof e=="string")&&Object.values(t).every(e=>typeof e=="object"&&e!==null)}});var QK=L((pwr,dFe)=>{var hFe=",",pUt=":",hUt="[",gUt="]",dUt="{",mUt="}";function kK(t){let e=[];if(typeof t=="string")e.push(gFe(t));else if(typeof t=="boolean")e.push(JSON.stringify(t));else if(Number.isInteger(t))e.push(JSON.stringify(t));else if(t===null)e.push(JSON.stringify(t));else if(Array.isArray(t)){e.push(hUt);let r=!0;t.forEach(s=>{r||e.push(hFe),r=!1,e.push(kK(s))}),e.push(gUt)}else if(typeof t=="object"){e.push(dUt);let r=!0;Object.keys(t).sort().forEach(s=>{r||e.push(hFe),r=!1,e.push(gFe(s)),e.push(pUt),e.push(kK(t[s]))}),e.push(mUt)}else throw new TypeError("cannot encode "+t.toString());return e.join("")}function gFe(t){return'"'+t.replace(/\\/g,"\\\\").replace(/"/g,'\\"')+'"'}dFe.exports={canonicalize:kK}});var mFe=L(o1=>{"use strict";var yUt=o1&&o1.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(o1,"__esModule",{value:!0});o1.verifySignature=void 0;var EUt=QK(),IUt=yUt(ye("crypto")),CUt=(t,e,r)=>{let s=Buffer.from((0,EUt.canonicalize)(t));return IUt.default.verify(void 0,s,e,Buffer.from(r,"hex"))};o1.verifySignature=CUt});var Af=L(ru=>{"use strict";var wUt=ru&&ru.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(e,r);(!a||("get"in a?!e.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,s,a)}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),BUt=ru&&ru.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),yFe=ru&&ru.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.prototype.hasOwnProperty.call(t,r)&&wUt(e,t,r);return BUt(e,t),e};Object.defineProperty(ru,"__esModule",{value:!0});ru.crypto=ru.guard=void 0;ru.guard=yFe(pFe());ru.crypto=yFe(mFe())});var ly=L(mh=>{"use strict";var vUt=mh&&mh.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(mh,"__esModule",{value:!0});mh.Signed=mh.MetadataKind=void 0;mh.isMetadataKind=DUt;var SUt=vUt(ye("util")),Yb=kA(),TK=Af(),EFe=["1","0","31"],RK;(function(t){t.Root="root",t.Timestamp="timestamp",t.Snapshot="snapshot",t.Targets="targets"})(RK||(mh.MetadataKind=RK={}));function DUt(t){return typeof t=="string"&&Object.values(RK).includes(t)}var FK=class t{constructor(e){this.specVersion=e.specVersion||EFe.join(".");let r=this.specVersion.split(".");if(!(r.length===2||r.length===3)||!r.every(s=>bUt(s)))throw new Yb.ValueError("Failed to parse specVersion");if(r[0]!=EFe[0])throw new Yb.ValueError("Unsupported specVersion");this.expires=e.expires,this.version=e.version,this.unrecognizedFields=e.unrecognizedFields||{}}equals(e){return e instanceof t?this.specVersion===e.specVersion&&this.expires===e.expires&&this.version===e.version&&SUt.default.isDeepStrictEqual(this.unrecognizedFields,e.unrecognizedFields):!1}isExpired(e){return e||(e=new Date),e>=new Date(this.expires)}static commonFieldsFromJSON(e){let{spec_version:r,expires:s,version:a,...n}=e;if(TK.guard.isDefined(r)){if(typeof r!="string")throw new TypeError("spec_version must be a string")}else throw new Yb.ValueError("spec_version is not defined");if(TK.guard.isDefined(s)){if(typeof s!="string")throw new TypeError("expires must be a string")}else throw new Yb.ValueError("expires is not defined");if(TK.guard.isDefined(a)){if(typeof a!="number")throw new TypeError("version must be a number")}else throw new Yb.ValueError("version is not defined");return{specVersion:r,expires:s,version:a,unrecognizedFields:n}}};mh.Signed=FK;function bUt(t){return!isNaN(Number(t))}});var Vb=L(kg=>{"use strict";var IFe=kg&&kg.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(kg,"__esModule",{value:!0});kg.TargetFile=kg.MetaFile=void 0;var CFe=IFe(ye("crypto")),HO=IFe(ye("util")),xg=kA(),UO=Af(),NK=class t{constructor(e){if(e.version<=0)throw new xg.ValueError("Metafile version must be at least 1");e.length!==void 0&&wFe(e.length),this.version=e.version,this.length=e.length,this.hashes=e.hashes,this.unrecognizedFields=e.unrecognizedFields||{}}equals(e){return e instanceof t?this.version===e.version&&this.length===e.length&&HO.default.isDeepStrictEqual(this.hashes,e.hashes)&&HO.default.isDeepStrictEqual(this.unrecognizedFields,e.unrecognizedFields):!1}verify(e){if(this.length!==void 0&&e.length!==this.length)throw new xg.LengthOrHashMismatchError(`Expected length ${this.length} but got ${e.length}`);this.hashes&&Object.entries(this.hashes).forEach(([r,s])=>{let a;try{a=CFe.default.createHash(r)}catch{throw new xg.LengthOrHashMismatchError(`Hash algorithm ${r} not supported`)}let n=a.update(e).digest("hex");if(n!==s)throw new xg.LengthOrHashMismatchError(`Expected hash ${s} but got ${n}`)})}toJSON(){let e={version:this.version,...this.unrecognizedFields};return this.length!==void 0&&(e.length=this.length),this.hashes&&(e.hashes=this.hashes),e}static fromJSON(e){let{version:r,length:s,hashes:a,...n}=e;if(typeof r!="number")throw new TypeError("version must be a number");if(UO.guard.isDefined(s)&&typeof s!="number")throw new TypeError("length must be a number");if(UO.guard.isDefined(a)&&!UO.guard.isStringRecord(a))throw new TypeError("hashes must be string keys and values");return new t({version:r,length:s,hashes:a,unrecognizedFields:n})}};kg.MetaFile=NK;var OK=class t{constructor(e){wFe(e.length),this.length=e.length,this.path=e.path,this.hashes=e.hashes,this.unrecognizedFields=e.unrecognizedFields||{}}get custom(){let e=this.unrecognizedFields.custom;return!e||Array.isArray(e)||typeof e!="object"?{}:e}equals(e){return e instanceof t?this.length===e.length&&this.path===e.path&&HO.default.isDeepStrictEqual(this.hashes,e.hashes)&&HO.default.isDeepStrictEqual(this.unrecognizedFields,e.unrecognizedFields):!1}async verify(e){let r=0,s=Object.keys(this.hashes).reduce((a,n)=>{try{a[n]=CFe.default.createHash(n)}catch{throw new xg.LengthOrHashMismatchError(`Hash algorithm ${n} not supported`)}return a},{});for await(let a of e)r+=a.length,Object.values(s).forEach(n=>{n.update(a)});if(r!==this.length)throw new xg.LengthOrHashMismatchError(`Expected length ${this.length} but got ${r}`);Object.entries(s).forEach(([a,n])=>{let c=this.hashes[a],f=n.digest("hex");if(f!==c)throw new xg.LengthOrHashMismatchError(`Expected hash ${c} but got ${f}`)})}toJSON(){return{length:this.length,hashes:this.hashes,...this.unrecognizedFields}}static fromJSON(e,r){let{length:s,hashes:a,...n}=r;if(typeof s!="number")throw new TypeError("length must be a number");if(!UO.guard.isStringRecord(a))throw new TypeError("hashes must have string keys and values");return new t({length:s,path:e,hashes:a,unrecognizedFields:n})}};kg.TargetFile=OK;function wFe(t){if(t<0)throw new xg.ValueError("Length must be at least 0")}});var BFe=L(LK=>{"use strict";Object.defineProperty(LK,"__esModule",{value:!0});LK.encodeOIDString=xUt;var PUt=6;function xUt(t){let e=t.split("."),r=parseInt(e[0],10)*40+parseInt(e[1],10),s=[];e.slice(2).forEach(n=>{let c=kUt(parseInt(n,10));s.push(...c)});let a=Buffer.from([r,...s]);return Buffer.from([PUt,a.length,...a])}function kUt(t){let e=[],r=0;for(;t>0;)e.unshift(t&127|r),t>>=7,r=128;return e}});var bFe=L(Jb=>{"use strict";var QUt=Jb&&Jb.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Jb,"__esModule",{value:!0});Jb.getPublicKey=NUt;var a1=QUt(ye("crypto")),Kb=kA(),MK=BFe(),jO=48,vFe=3,SFe=0,TUt="1.3.101.112",RUt="1.2.840.10045.2.1",FUt="1.2.840.10045.3.1.7",_K="-----BEGIN PUBLIC KEY-----";function NUt(t){switch(t.keyType){case"rsa":return OUt(t);case"ed25519":return LUt(t);case"ecdsa":case"ecdsa-sha2-nistp256":case"ecdsa-sha2-nistp384":return MUt(t);default:throw new Kb.UnsupportedAlgorithmError(`Unsupported key type: ${t.keyType}`)}}function OUt(t){if(!t.keyVal.startsWith(_K))throw new Kb.CryptoError("Invalid key format");let e=a1.default.createPublicKey(t.keyVal);switch(t.scheme){case"rsassa-pss-sha256":return{key:e,padding:a1.default.constants.RSA_PKCS1_PSS_PADDING};default:throw new Kb.UnsupportedAlgorithmError(`Unsupported RSA scheme: ${t.scheme}`)}}function LUt(t){let e;if(t.keyVal.startsWith(_K))e=a1.default.createPublicKey(t.keyVal);else{if(!DFe(t.keyVal))throw new Kb.CryptoError("Invalid key format");e=a1.default.createPublicKey({key:_Ut.hexToDER(t.keyVal),format:"der",type:"spki"})}return{key:e}}function MUt(t){let e;if(t.keyVal.startsWith(_K))e=a1.default.createPublicKey(t.keyVal);else{if(!DFe(t.keyVal))throw new Kb.CryptoError("Invalid key format");e=a1.default.createPublicKey({key:UUt.hexToDER(t.keyVal),format:"der",type:"spki"})}return{key:e}}var _Ut={hexToDER:t=>{let e=Buffer.from(t,"hex"),r=(0,MK.encodeOIDString)(TUt),s=Buffer.concat([Buffer.concat([Buffer.from([jO]),Buffer.from([r.length]),r]),Buffer.concat([Buffer.from([vFe]),Buffer.from([e.length+1]),Buffer.from([SFe]),e])]);return Buffer.concat([Buffer.from([jO]),Buffer.from([s.length]),s])}},UUt={hexToDER:t=>{let e=Buffer.from(t,"hex"),r=Buffer.concat([Buffer.from([vFe]),Buffer.from([e.length+1]),Buffer.from([SFe]),e]),s=Buffer.concat([(0,MK.encodeOIDString)(RUt),(0,MK.encodeOIDString)(FUt)]),a=Buffer.concat([Buffer.from([jO]),Buffer.from([s.length]),s]);return Buffer.concat([Buffer.from([jO]),Buffer.from([a.length+r.length]),a,r])}},DFe=t=>/^[0-9a-fA-F]+$/.test(t)});var qO=L(l1=>{"use strict";var HUt=l1&&l1.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(l1,"__esModule",{value:!0});l1.Key=void 0;var PFe=HUt(ye("util")),zb=kA(),xFe=Af(),jUt=bFe(),UK=class t{constructor(e){let{keyID:r,keyType:s,scheme:a,keyVal:n,unrecognizedFields:c}=e;this.keyID=r,this.keyType=s,this.scheme=a,this.keyVal=n,this.unrecognizedFields=c||{}}verifySignature(e){let r=e.signatures[this.keyID];if(!r)throw new zb.UnsignedMetadataError("no signature for key found in metadata");if(!this.keyVal.public)throw new zb.UnsignedMetadataError("no public key found");let s=(0,jUt.getPublicKey)({keyType:this.keyType,scheme:this.scheme,keyVal:this.keyVal.public}),a=e.signed.toJSON();try{if(!xFe.crypto.verifySignature(a,s,r.sig))throw new zb.UnsignedMetadataError(`failed to verify ${this.keyID} signature`)}catch(n){throw n instanceof zb.UnsignedMetadataError?n:new zb.UnsignedMetadataError(`failed to verify ${this.keyID} signature`)}}equals(e){return e instanceof t?this.keyID===e.keyID&&this.keyType===e.keyType&&this.scheme===e.scheme&&PFe.default.isDeepStrictEqual(this.keyVal,e.keyVal)&&PFe.default.isDeepStrictEqual(this.unrecognizedFields,e.unrecognizedFields):!1}toJSON(){return{keytype:this.keyType,scheme:this.scheme,keyval:this.keyVal,...this.unrecognizedFields}}static fromJSON(e,r){let{keytype:s,scheme:a,keyval:n,...c}=r;if(typeof s!="string")throw new TypeError("keytype must be a string");if(typeof a!="string")throw new TypeError("scheme must be a string");if(!xFe.guard.isStringRecord(n))throw new TypeError("keyval must be a string record");return new t({keyID:e,keyType:s,scheme:a,keyVal:n,unrecognizedFields:c})}};l1.Key=UK});var FFe=L((Cwr,RFe)=>{"use strict";RFe.exports=QFe;function QFe(t,e,r){t instanceof RegExp&&(t=kFe(t,r)),e instanceof RegExp&&(e=kFe(e,r));var s=TFe(t,e,r);return s&&{start:s[0],end:s[1],pre:r.slice(0,s[0]),body:r.slice(s[0]+t.length,s[1]),post:r.slice(s[1]+e.length)}}function kFe(t,e){var r=e.match(t);return r?r[0]:null}QFe.range=TFe;function TFe(t,e,r){var s,a,n,c,f,p=r.indexOf(t),h=r.indexOf(e,p+1),E=p;if(p>=0&&h>0){for(s=[],n=r.length;E>=0&&!f;)E==p?(s.push(E),p=r.indexOf(t,E+1)):s.length==1?f=[s.pop(),h]:(a=s.pop(),a=0?p:h;s.length&&(f=[n,c])}return f}});var jFe=L((wwr,HFe)=>{var NFe=FFe();HFe.exports=WUt;var OFe="\0SLASH"+Math.random()+"\0",LFe="\0OPEN"+Math.random()+"\0",jK="\0CLOSE"+Math.random()+"\0",MFe="\0COMMA"+Math.random()+"\0",_Fe="\0PERIOD"+Math.random()+"\0";function HK(t){return parseInt(t,10)==t?parseInt(t,10):t.charCodeAt(0)}function qUt(t){return t.split("\\\\").join(OFe).split("\\{").join(LFe).split("\\}").join(jK).split("\\,").join(MFe).split("\\.").join(_Fe)}function GUt(t){return t.split(OFe).join("\\").split(LFe).join("{").split(jK).join("}").split(MFe).join(",").split(_Fe).join(".")}function UFe(t){if(!t)return[""];var e=[],r=NFe("{","}",t);if(!r)return t.split(",");var s=r.pre,a=r.body,n=r.post,c=s.split(",");c[c.length-1]+="{"+a+"}";var f=UFe(n);return n.length&&(c[c.length-1]+=f.shift(),c.push.apply(c,f)),e.push.apply(e,c),e}function WUt(t){return t?(t.substr(0,2)==="{}"&&(t="\\{\\}"+t.substr(2)),Zb(qUt(t),!0).map(GUt)):[]}function YUt(t){return"{"+t+"}"}function VUt(t){return/^-?0\d/.test(t)}function KUt(t,e){return t<=e}function JUt(t,e){return t>=e}function Zb(t,e){var r=[],s=NFe("{","}",t);if(!s)return[t];var a=s.pre,n=s.post.length?Zb(s.post,!1):[""];if(/\$$/.test(s.pre))for(var c=0;c=0;if(!E&&!C)return s.post.match(/,.*\}/)?(t=s.pre+"{"+s.body+jK+s.post,Zb(t)):[t];var S;if(E)S=s.body.split(/\.\./);else if(S=UFe(s.body),S.length===1&&(S=Zb(S[0],!1).map(YUt),S.length===1))return n.map(function(Ce){return s.pre+S[0]+Ce});var P;if(E){var I=HK(S[0]),R=HK(S[1]),N=Math.max(S[0].length,S[1].length),U=S.length==3?Math.abs(HK(S[2])):1,W=KUt,te=R0){var pe=new Array(me+1).join("0");Ae<0?ce="-"+pe+ce.slice(1):ce=pe+ce}}P.push(ce)}}else{P=[];for(var Be=0;Be{"use strict";Object.defineProperty(GO,"__esModule",{value:!0});GO.assertValidPattern=void 0;var zUt=1024*64,ZUt=t=>{if(typeof t!="string")throw new TypeError("invalid pattern");if(t.length>zUt)throw new TypeError("pattern is too long")};GO.assertValidPattern=ZUt});var WFe=L(WO=>{"use strict";Object.defineProperty(WO,"__esModule",{value:!0});WO.parseClass=void 0;var XUt={"[:alnum:]":["\\p{L}\\p{Nl}\\p{Nd}",!0],"[:alpha:]":["\\p{L}\\p{Nl}",!0],"[:ascii:]":["\\x00-\\x7f",!1],"[:blank:]":["\\p{Zs}\\t",!0],"[:cntrl:]":["\\p{Cc}",!0],"[:digit:]":["\\p{Nd}",!0],"[:graph:]":["\\p{Z}\\p{C}",!0,!0],"[:lower:]":["\\p{Ll}",!0],"[:print:]":["\\p{C}",!0],"[:punct:]":["\\p{P}",!0],"[:space:]":["\\p{Z}\\t\\r\\n\\v\\f",!0],"[:upper:]":["\\p{Lu}",!0],"[:word:]":["\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}",!0],"[:xdigit:]":["A-Fa-f0-9",!1]},Xb=t=>t.replace(/[[\]\\-]/g,"\\$&"),$Ut=t=>t.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),GFe=t=>t.join(""),e4t=(t,e)=>{let r=e;if(t.charAt(r)!=="[")throw new Error("not in a brace expression");let s=[],a=[],n=r+1,c=!1,f=!1,p=!1,h=!1,E=r,C="";e:for(;nC?s.push(Xb(C)+"-"+Xb(R)):R===C&&s.push(Xb(R)),C="",n++;continue}if(t.startsWith("-]",n+1)){s.push(Xb(R+"-")),n+=2;continue}if(t.startsWith("-",n+1)){C=R,n+=2;continue}s.push(Xb(R)),n++}if(E{"use strict";Object.defineProperty(YO,"__esModule",{value:!0});YO.unescape=void 0;var t4t=(t,{windowsPathsNoEscape:e=!1}={})=>e?t.replace(/\[([^\/\\])\]/g,"$1"):t.replace(/((?!\\).|^)\[([^\/\\])\]/g,"$1$2").replace(/\\([^\/])/g,"$1");YO.unescape=t4t});var WK=L(zO=>{"use strict";Object.defineProperty(zO,"__esModule",{value:!0});zO.AST=void 0;var r4t=WFe(),KO=VO(),n4t=new Set(["!","?","+","*","@"]),YFe=t=>n4t.has(t),i4t="(?!(?:^|/)\\.\\.?(?:$|/))",JO="(?!\\.)",s4t=new Set(["[","."]),o4t=new Set(["..","."]),a4t=new Set("().*{}+?[]^$\\!"),l4t=t=>t.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),GK="[^/]",VFe=GK+"*?",KFe=GK+"+?",qK=class t{type;#t;#r;#i=!1;#e=[];#n;#o;#l;#a=!1;#s;#c;#f=!1;constructor(e,r,s={}){this.type=e,e&&(this.#r=!0),this.#n=r,this.#t=this.#n?this.#n.#t:this,this.#s=this.#t===this?s:this.#t.#s,this.#l=this.#t===this?[]:this.#t.#l,e==="!"&&!this.#t.#a&&this.#l.push(this),this.#o=this.#n?this.#n.#e.length:0}get hasMagic(){if(this.#r!==void 0)return this.#r;for(let e of this.#e)if(typeof e!="string"&&(e.type||e.hasMagic))return this.#r=!0;return this.#r}toString(){return this.#c!==void 0?this.#c:this.type?this.#c=this.type+"("+this.#e.map(e=>String(e)).join("|")+")":this.#c=this.#e.map(e=>String(e)).join("")}#p(){if(this!==this.#t)throw new Error("should only call on root");if(this.#a)return this;this.toString(),this.#a=!0;let e;for(;e=this.#l.pop();){if(e.type!=="!")continue;let r=e,s=r.#n;for(;s;){for(let a=r.#o+1;!s.type&&atypeof r=="string"?r:r.toJSON()):[this.type,...this.#e.map(r=>r.toJSON())];return this.isStart()&&!this.type&&e.unshift([]),this.isEnd()&&(this===this.#t||this.#t.#a&&this.#n?.type==="!")&&e.push({}),e}isStart(){if(this.#t===this)return!0;if(!this.#n?.isStart())return!1;if(this.#o===0)return!0;let e=this.#n;for(let r=0;r{let[I,R,N,U]=typeof P=="string"?t.#h(P,this.#r,p):P.toRegExpSource(e);return this.#r=this.#r||N,this.#i=this.#i||U,I}).join(""),E="";if(this.isStart()&&typeof this.#e[0]=="string"&&!(this.#e.length===1&&o4t.has(this.#e[0]))){let I=s4t,R=r&&I.has(h.charAt(0))||h.startsWith("\\.")&&I.has(h.charAt(2))||h.startsWith("\\.\\.")&&I.has(h.charAt(4)),N=!r&&!e&&I.has(h.charAt(0));E=R?i4t:N?JO:""}let C="";return this.isEnd()&&this.#t.#a&&this.#n?.type==="!"&&(C="(?:$|\\/)"),[E+h+C,(0,KO.unescape)(h),this.#r=!!this.#r,this.#i]}let s=this.type==="*"||this.type==="+",a=this.type==="!"?"(?:(?!(?:":"(?:",n=this.#A(r);if(this.isStart()&&this.isEnd()&&!n&&this.type!=="!"){let p=this.toString();return this.#e=[p],this.type=null,this.#r=void 0,[p,(0,KO.unescape)(this.toString()),!1,!1]}let c=!s||e||r||!JO?"":this.#A(!0);c===n&&(c=""),c&&(n=`(?:${n})(?:${c})*?`);let f="";if(this.type==="!"&&this.#f)f=(this.isStart()&&!r?JO:"")+KFe;else{let p=this.type==="!"?"))"+(this.isStart()&&!r&&!e?JO:"")+VFe+")":this.type==="@"?")":this.type==="?"?")?":this.type==="+"&&c?")":this.type==="*"&&c?")?":`)${this.type}`;f=a+n+p}return[f,(0,KO.unescape)(n),this.#r=!!this.#r,this.#i]}#A(e){return this.#e.map(r=>{if(typeof r=="string")throw new Error("string type in extglob ast??");let[s,a,n,c]=r.toRegExpSource(e);return this.#i=this.#i||c,s}).filter(r=>!(this.isStart()&&this.isEnd())||!!r).join("|")}static#h(e,r,s=!1){let a=!1,n="",c=!1;for(let f=0;f{"use strict";Object.defineProperty(ZO,"__esModule",{value:!0});ZO.escape=void 0;var c4t=(t,{windowsPathsNoEscape:e=!1}={})=>e?t.replace(/[?*()[\]]/g,"[$&]"):t.replace(/[?*()[\]\\]/g,"\\$&");ZO.escape=c4t});var tNe=L(pr=>{"use strict";var u4t=pr&&pr.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(pr,"__esModule",{value:!0});pr.unescape=pr.escape=pr.AST=pr.Minimatch=pr.match=pr.makeRe=pr.braceExpand=pr.defaults=pr.filter=pr.GLOBSTAR=pr.sep=pr.minimatch=void 0;var f4t=u4t(jFe()),XO=qFe(),ZFe=WK(),A4t=YK(),p4t=VO(),h4t=(t,e,r={})=>((0,XO.assertValidPattern)(e),!r.nocomment&&e.charAt(0)==="#"?!1:new cy(e,r).match(t));pr.minimatch=h4t;var g4t=/^\*+([^+@!?\*\[\(]*)$/,d4t=t=>e=>!e.startsWith(".")&&e.endsWith(t),m4t=t=>e=>e.endsWith(t),y4t=t=>(t=t.toLowerCase(),e=>!e.startsWith(".")&&e.toLowerCase().endsWith(t)),E4t=t=>(t=t.toLowerCase(),e=>e.toLowerCase().endsWith(t)),I4t=/^\*+\.\*+$/,C4t=t=>!t.startsWith(".")&&t.includes("."),w4t=t=>t!=="."&&t!==".."&&t.includes("."),B4t=/^\.\*+$/,v4t=t=>t!=="."&&t!==".."&&t.startsWith("."),S4t=/^\*+$/,D4t=t=>t.length!==0&&!t.startsWith("."),b4t=t=>t.length!==0&&t!=="."&&t!=="..",P4t=/^\?+([^+@!?\*\[\(]*)?$/,x4t=([t,e=""])=>{let r=XFe([t]);return e?(e=e.toLowerCase(),s=>r(s)&&s.toLowerCase().endsWith(e)):r},k4t=([t,e=""])=>{let r=$Fe([t]);return e?(e=e.toLowerCase(),s=>r(s)&&s.toLowerCase().endsWith(e)):r},Q4t=([t,e=""])=>{let r=$Fe([t]);return e?s=>r(s)&&s.endsWith(e):r},T4t=([t,e=""])=>{let r=XFe([t]);return e?s=>r(s)&&s.endsWith(e):r},XFe=([t])=>{let e=t.length;return r=>r.length===e&&!r.startsWith(".")},$Fe=([t])=>{let e=t.length;return r=>r.length===e&&r!=="."&&r!==".."},eNe=typeof process=="object"&&process?typeof process.env=="object"&&process.env&&process.env.__MINIMATCH_TESTING_PLATFORM__||process.platform:"posix",JFe={win32:{sep:"\\"},posix:{sep:"/"}};pr.sep=eNe==="win32"?JFe.win32.sep:JFe.posix.sep;pr.minimatch.sep=pr.sep;pr.GLOBSTAR=Symbol("globstar **");pr.minimatch.GLOBSTAR=pr.GLOBSTAR;var R4t="[^/]",F4t=R4t+"*?",N4t="(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?",O4t="(?:(?!(?:\\/|^)\\.).)*?",L4t=(t,e={})=>r=>(0,pr.minimatch)(r,t,e);pr.filter=L4t;pr.minimatch.filter=pr.filter;var nu=(t,e={})=>Object.assign({},t,e),M4t=t=>{if(!t||typeof t!="object"||!Object.keys(t).length)return pr.minimatch;let e=pr.minimatch;return Object.assign((s,a,n={})=>e(s,a,nu(t,n)),{Minimatch:class extends e.Minimatch{constructor(a,n={}){super(a,nu(t,n))}static defaults(a){return e.defaults(nu(t,a)).Minimatch}},AST:class extends e.AST{constructor(a,n,c={}){super(a,n,nu(t,c))}static fromGlob(a,n={}){return e.AST.fromGlob(a,nu(t,n))}},unescape:(s,a={})=>e.unescape(s,nu(t,a)),escape:(s,a={})=>e.escape(s,nu(t,a)),filter:(s,a={})=>e.filter(s,nu(t,a)),defaults:s=>e.defaults(nu(t,s)),makeRe:(s,a={})=>e.makeRe(s,nu(t,a)),braceExpand:(s,a={})=>e.braceExpand(s,nu(t,a)),match:(s,a,n={})=>e.match(s,a,nu(t,n)),sep:e.sep,GLOBSTAR:pr.GLOBSTAR})};pr.defaults=M4t;pr.minimatch.defaults=pr.defaults;var _4t=(t,e={})=>((0,XO.assertValidPattern)(t),e.nobrace||!/\{(?:(?!\{).)*\}/.test(t)?[t]:(0,f4t.default)(t));pr.braceExpand=_4t;pr.minimatch.braceExpand=pr.braceExpand;var U4t=(t,e={})=>new cy(t,e).makeRe();pr.makeRe=U4t;pr.minimatch.makeRe=pr.makeRe;var H4t=(t,e,r={})=>{let s=new cy(e,r);return t=t.filter(a=>s.match(a)),s.options.nonull&&!t.length&&t.push(e),t};pr.match=H4t;pr.minimatch.match=pr.match;var zFe=/[?*]|[+@!]\(.*?\)|\[|\]/,j4t=t=>t.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),cy=class{options;set;pattern;windowsPathsNoEscape;nonegate;negate;comment;empty;preserveMultipleSlashes;partial;globSet;globParts;nocase;isWindows;platform;windowsNoMagicRoot;regexp;constructor(e,r={}){(0,XO.assertValidPattern)(e),r=r||{},this.options=r,this.pattern=e,this.platform=r.platform||eNe,this.isWindows=this.platform==="win32",this.windowsPathsNoEscape=!!r.windowsPathsNoEscape||r.allowWindowsEscape===!1,this.windowsPathsNoEscape&&(this.pattern=this.pattern.replace(/\\/g,"/")),this.preserveMultipleSlashes=!!r.preserveMultipleSlashes,this.regexp=null,this.negate=!1,this.nonegate=!!r.nonegate,this.comment=!1,this.empty=!1,this.partial=!!r.partial,this.nocase=!!this.options.nocase,this.windowsNoMagicRoot=r.windowsNoMagicRoot!==void 0?r.windowsNoMagicRoot:!!(this.isWindows&&this.nocase),this.globSet=[],this.globParts=[],this.set=[],this.make()}hasMagic(){if(this.options.magicalBraces&&this.set.length>1)return!0;for(let e of this.set)for(let r of e)if(typeof r!="string")return!0;return!1}debug(...e){}make(){let e=this.pattern,r=this.options;if(!r.nocomment&&e.charAt(0)==="#"){this.comment=!0;return}if(!e){this.empty=!0;return}this.parseNegate(),this.globSet=[...new Set(this.braceExpand())],r.debug&&(this.debug=(...n)=>console.error(...n)),this.debug(this.pattern,this.globSet);let s=this.globSet.map(n=>this.slashSplit(n));this.globParts=this.preprocess(s),this.debug(this.pattern,this.globParts);let a=this.globParts.map((n,c,f)=>{if(this.isWindows&&this.windowsNoMagicRoot){let p=n[0]===""&&n[1]===""&&(n[2]==="?"||!zFe.test(n[2]))&&!zFe.test(n[3]),h=/^[a-z]:/i.test(n[0]);if(p)return[...n.slice(0,4),...n.slice(4).map(E=>this.parse(E))];if(h)return[n[0],...n.slice(1).map(E=>this.parse(E))]}return n.map(p=>this.parse(p))});if(this.debug(this.pattern,a),this.set=a.filter(n=>n.indexOf(!1)===-1),this.isWindows)for(let n=0;n=2?(e=this.firstPhasePreProcess(e),e=this.secondPhasePreProcess(e)):r>=1?e=this.levelOneOptimize(e):e=this.adjascentGlobstarOptimize(e),e}adjascentGlobstarOptimize(e){return e.map(r=>{let s=-1;for(;(s=r.indexOf("**",s+1))!==-1;){let a=s;for(;r[a+1]==="**";)a++;a!==s&&r.splice(s,a-s)}return r})}levelOneOptimize(e){return e.map(r=>(r=r.reduce((s,a)=>{let n=s[s.length-1];return a==="**"&&n==="**"?s:a===".."&&n&&n!==".."&&n!=="."&&n!=="**"?(s.pop(),s):(s.push(a),s)},[]),r.length===0?[""]:r))}levelTwoFileOptimize(e){Array.isArray(e)||(e=this.slashSplit(e));let r=!1;do{if(r=!1,!this.preserveMultipleSlashes){for(let a=1;aa&&s.splice(a+1,c-a);let f=s[a+1],p=s[a+2],h=s[a+3];if(f!==".."||!p||p==="."||p===".."||!h||h==="."||h==="..")continue;r=!0,s.splice(a,1);let E=s.slice(0);E[a]="**",e.push(E),a--}if(!this.preserveMultipleSlashes){for(let c=1;cr.length)}partsMatch(e,r,s=!1){let a=0,n=0,c=[],f="";for(;ate?r=r.slice(ie):te>ie&&(e=e.slice(te)))}}let{optimizationLevel:n=1}=this.options;n>=2&&(e=this.levelTwoFileOptimize(e)),this.debug("matchOne",this,{file:e,pattern:r}),this.debug("matchOne",e.length,r.length);for(var c=0,f=0,p=e.length,h=r.length;c>> no match, partial?`,e,S,r,P),S===p))}let R;if(typeof E=="string"?(R=C===E,this.debug("string match",E,C,R)):(R=E.test(C),this.debug("pattern match",E,C,R)),!R)return!1}if(c===p&&f===h)return!0;if(c===p)return s;if(f===h)return c===p-1&&e[c]==="";throw new Error("wtf?")}braceExpand(){return(0,pr.braceExpand)(this.pattern,this.options)}parse(e){(0,XO.assertValidPattern)(e);let r=this.options;if(e==="**")return pr.GLOBSTAR;if(e==="")return"";let s,a=null;(s=e.match(S4t))?a=r.dot?b4t:D4t:(s=e.match(g4t))?a=(r.nocase?r.dot?E4t:y4t:r.dot?m4t:d4t)(s[1]):(s=e.match(P4t))?a=(r.nocase?r.dot?k4t:x4t:r.dot?Q4t:T4t)(s):(s=e.match(I4t))?a=r.dot?w4t:C4t:(s=e.match(B4t))&&(a=v4t);let n=ZFe.AST.fromGlob(e,this.options).toMMPattern();return a&&typeof n=="object"&&Reflect.defineProperty(n,"test",{value:a}),n}makeRe(){if(this.regexp||this.regexp===!1)return this.regexp;let e=this.set;if(!e.length)return this.regexp=!1,this.regexp;let r=this.options,s=r.noglobstar?F4t:r.dot?N4t:O4t,a=new Set(r.nocase?["i"]:[]),n=e.map(p=>{let h=p.map(E=>{if(E instanceof RegExp)for(let C of E.flags.split(""))a.add(C);return typeof E=="string"?j4t(E):E===pr.GLOBSTAR?pr.GLOBSTAR:E._src});return h.forEach((E,C)=>{let S=h[C+1],P=h[C-1];E!==pr.GLOBSTAR||P===pr.GLOBSTAR||(P===void 0?S!==void 0&&S!==pr.GLOBSTAR?h[C+1]="(?:\\/|"+s+"\\/)?"+S:h[C]=s:S===void 0?h[C-1]=P+"(?:\\/|"+s+")?":S!==pr.GLOBSTAR&&(h[C-1]=P+"(?:\\/|\\/"+s+"\\/)"+S,h[C+1]=pr.GLOBSTAR))}),h.filter(E=>E!==pr.GLOBSTAR).join("/")}).join("|"),[c,f]=e.length>1?["(?:",")"]:["",""];n="^"+c+n+f+"$",this.negate&&(n="^(?!"+n+").+$");try{this.regexp=new RegExp(n,[...a].join(""))}catch{this.regexp=!1}return this.regexp}slashSplit(e){return this.preserveMultipleSlashes?e.split("/"):this.isWindows&&/^\/\/[^\/]+/.test(e)?["",...e.split(/\/+/)]:e.split(/\/+/)}match(e,r=this.partial){if(this.debug("match",e,this.pattern),this.comment)return!1;if(this.empty)return e==="";if(e==="/"&&r)return!0;let s=this.options;this.isWindows&&(e=e.split("\\").join("/"));let a=this.slashSplit(e);this.debug(this.pattern,"split",a);let n=this.set;this.debug(this.pattern,"set",n);let c=a[a.length-1];if(!c)for(let f=a.length-2;!c&&f>=0;f--)c=a[f];for(let f=0;f{"use strict";var rNe=iu&&iu.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(iu,"__esModule",{value:!0});iu.SuccinctRoles=iu.DelegatedRole=iu.Role=iu.TOP_LEVEL_ROLE_NAMES=void 0;var nNe=rNe(ye("crypto")),Y4t=tNe(),$O=rNe(ye("util")),eL=kA(),uy=Af();iu.TOP_LEVEL_ROLE_NAMES=["root","targets","snapshot","timestamp"];var $b=class t{constructor(e){let{keyIDs:r,threshold:s,unrecognizedFields:a}=e;if(V4t(r))throw new eL.ValueError("duplicate key IDs found");if(s<1)throw new eL.ValueError("threshold must be at least 1");this.keyIDs=r,this.threshold=s,this.unrecognizedFields=a||{}}equals(e){return e instanceof t?this.threshold===e.threshold&&$O.default.isDeepStrictEqual(this.keyIDs,e.keyIDs)&&$O.default.isDeepStrictEqual(this.unrecognizedFields,e.unrecognizedFields):!1}toJSON(){return{keyids:this.keyIDs,threshold:this.threshold,...this.unrecognizedFields}}static fromJSON(e){let{keyids:r,threshold:s,...a}=e;if(!uy.guard.isStringArray(r))throw new TypeError("keyids must be an array");if(typeof s!="number")throw new TypeError("threshold must be a number");return new t({keyIDs:r,threshold:s,unrecognizedFields:a})}};iu.Role=$b;function V4t(t){return new Set(t).size!==t.length}var VK=class t extends $b{constructor(e){super(e);let{name:r,terminating:s,paths:a,pathHashPrefixes:n}=e;if(this.name=r,this.terminating=s,e.paths&&e.pathHashPrefixes)throw new eL.ValueError("paths and pathHashPrefixes are mutually exclusive");this.paths=a,this.pathHashPrefixes=n}equals(e){return e instanceof t?super.equals(e)&&this.name===e.name&&this.terminating===e.terminating&&$O.default.isDeepStrictEqual(this.paths,e.paths)&&$O.default.isDeepStrictEqual(this.pathHashPrefixes,e.pathHashPrefixes):!1}isDelegatedPath(e){if(this.paths)return this.paths.some(r=>J4t(e,r));if(this.pathHashPrefixes){let s=nNe.default.createHash("sha256").update(e).digest("hex");return this.pathHashPrefixes.some(a=>s.startsWith(a))}return!1}toJSON(){let e={...super.toJSON(),name:this.name,terminating:this.terminating};return this.paths&&(e.paths=this.paths),this.pathHashPrefixes&&(e.path_hash_prefixes=this.pathHashPrefixes),e}static fromJSON(e){let{keyids:r,threshold:s,name:a,terminating:n,paths:c,path_hash_prefixes:f,...p}=e;if(!uy.guard.isStringArray(r))throw new TypeError("keyids must be an array of strings");if(typeof s!="number")throw new TypeError("threshold must be a number");if(typeof a!="string")throw new TypeError("name must be a string");if(typeof n!="boolean")throw new TypeError("terminating must be a boolean");if(uy.guard.isDefined(c)&&!uy.guard.isStringArray(c))throw new TypeError("paths must be an array of strings");if(uy.guard.isDefined(f)&&!uy.guard.isStringArray(f))throw new TypeError("path_hash_prefixes must be an array of strings");return new t({keyIDs:r,threshold:s,name:a,terminating:n,paths:c,pathHashPrefixes:f,unrecognizedFields:p})}};iu.DelegatedRole=VK;var K4t=(t,e)=>t.map((r,s)=>[r,e[s]]);function J4t(t,e){let r=t.split("/"),s=e.split("/");return s.length!=r.length?!1:K4t(r,s).every(([a,n])=>(0,Y4t.minimatch)(a,n))}var KK=class t extends $b{constructor(e){super(e);let{bitLength:r,namePrefix:s}=e;if(r<=0||r>32)throw new eL.ValueError("bitLength must be between 1 and 32");this.bitLength=r,this.namePrefix=s,this.numberOfBins=Math.pow(2,r),this.suffixLen=(this.numberOfBins-1).toString(16).length}equals(e){return e instanceof t?super.equals(e)&&this.bitLength===e.bitLength&&this.namePrefix===e.namePrefix:!1}getRoleForTarget(e){let a=nNe.default.createHash("sha256").update(e).digest().subarray(0,4),n=32-this.bitLength,f=(a.readUInt32BE()>>>n).toString(16).padStart(this.suffixLen,"0");return`${this.namePrefix}-${f}`}*getRoles(){for(let e=0;e{"use strict";var z4t=c1&&c1.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(c1,"__esModule",{value:!0});c1.Root=void 0;var iNe=z4t(ye("util")),zK=ly(),sNe=kA(),Z4t=qO(),tL=JK(),rL=Af(),ZK=class t extends zK.Signed{constructor(e){if(super(e),this.type=zK.MetadataKind.Root,this.keys=e.keys||{},this.consistentSnapshot=e.consistentSnapshot??!0,!e.roles)this.roles=tL.TOP_LEVEL_ROLE_NAMES.reduce((r,s)=>({...r,[s]:new tL.Role({keyIDs:[],threshold:1})}),{});else{let r=new Set(Object.keys(e.roles));if(!tL.TOP_LEVEL_ROLE_NAMES.every(s=>r.has(s)))throw new sNe.ValueError("missing top-level role");this.roles=e.roles}}addKey(e,r){if(!this.roles[r])throw new sNe.ValueError(`role ${r} does not exist`);this.roles[r].keyIDs.includes(e.keyID)||this.roles[r].keyIDs.push(e.keyID),this.keys[e.keyID]=e}equals(e){return e instanceof t?super.equals(e)&&this.consistentSnapshot===e.consistentSnapshot&&iNe.default.isDeepStrictEqual(this.keys,e.keys)&&iNe.default.isDeepStrictEqual(this.roles,e.roles):!1}toJSON(){return{_type:this.type,spec_version:this.specVersion,version:this.version,expires:this.expires,keys:X4t(this.keys),roles:$4t(this.roles),consistent_snapshot:this.consistentSnapshot,...this.unrecognizedFields}}static fromJSON(e){let{unrecognizedFields:r,...s}=zK.Signed.commonFieldsFromJSON(e),{keys:a,roles:n,consistent_snapshot:c,...f}=r;if(typeof c!="boolean")throw new TypeError("consistent_snapshot must be a boolean");return new t({...s,keys:e3t(a),roles:t3t(n),consistentSnapshot:c,unrecognizedFields:f})}};c1.Root=ZK;function X4t(t){return Object.entries(t).reduce((e,[r,s])=>({...e,[r]:s.toJSON()}),{})}function $4t(t){return Object.entries(t).reduce((e,[r,s])=>({...e,[r]:s.toJSON()}),{})}function e3t(t){let e;if(rL.guard.isDefined(t)){if(!rL.guard.isObjectRecord(t))throw new TypeError("keys must be an object");e=Object.entries(t).reduce((r,[s,a])=>({...r,[s]:Z4t.Key.fromJSON(s,a)}),{})}return e}function t3t(t){let e;if(rL.guard.isDefined(t)){if(!rL.guard.isObjectRecord(t))throw new TypeError("roles must be an object");e=Object.entries(t).reduce((r,[s,a])=>({...r,[s]:tL.Role.fromJSON(a)}),{})}return e}});var eJ=L(nL=>{"use strict";Object.defineProperty(nL,"__esModule",{value:!0});nL.Signature=void 0;var $K=class t{constructor(e){let{keyID:r,sig:s}=e;this.keyID=r,this.sig=s}toJSON(){return{keyid:this.keyID,sig:this.sig}}static fromJSON(e){let{keyid:r,sig:s}=e;if(typeof r!="string")throw new TypeError("keyid must be a string");if(typeof s!="string")throw new TypeError("sig must be a string");return new t({keyID:r,sig:s})}};nL.Signature=$K});var nJ=L(u1=>{"use strict";var r3t=u1&&u1.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(u1,"__esModule",{value:!0});u1.Snapshot=void 0;var n3t=r3t(ye("util")),tJ=ly(),aNe=Vb(),oNe=Af(),rJ=class t extends tJ.Signed{constructor(e){super(e),this.type=tJ.MetadataKind.Snapshot,this.meta=e.meta||{"targets.json":new aNe.MetaFile({version:1})}}equals(e){return e instanceof t?super.equals(e)&&n3t.default.isDeepStrictEqual(this.meta,e.meta):!1}toJSON(){return{_type:this.type,meta:i3t(this.meta),spec_version:this.specVersion,version:this.version,expires:this.expires,...this.unrecognizedFields}}static fromJSON(e){let{unrecognizedFields:r,...s}=tJ.Signed.commonFieldsFromJSON(e),{meta:a,...n}=r;return new t({...s,meta:s3t(a),unrecognizedFields:n})}};u1.Snapshot=rJ;function i3t(t){return Object.entries(t).reduce((e,[r,s])=>({...e,[r]:s.toJSON()}),{})}function s3t(t){let e;if(oNe.guard.isDefined(t))if(oNe.guard.isObjectRecord(t))e=Object.entries(t).reduce((r,[s,a])=>({...r,[s]:aNe.MetaFile.fromJSON(a)}),{});else throw new TypeError("meta field is malformed");return e}});var lNe=L(f1=>{"use strict";var o3t=f1&&f1.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(f1,"__esModule",{value:!0});f1.Delegations=void 0;var iL=o3t(ye("util")),a3t=kA(),l3t=qO(),iJ=JK(),sL=Af(),sJ=class t{constructor(e){if(this.keys=e.keys,this.unrecognizedFields=e.unrecognizedFields||{},e.roles&&Object.keys(e.roles).some(r=>iJ.TOP_LEVEL_ROLE_NAMES.includes(r)))throw new a3t.ValueError("Delegated role name conflicts with top-level role name");this.succinctRoles=e.succinctRoles,this.roles=e.roles}equals(e){return e instanceof t?iL.default.isDeepStrictEqual(this.keys,e.keys)&&iL.default.isDeepStrictEqual(this.roles,e.roles)&&iL.default.isDeepStrictEqual(this.unrecognizedFields,e.unrecognizedFields)&&iL.default.isDeepStrictEqual(this.succinctRoles,e.succinctRoles):!1}*rolesForTarget(e){if(this.roles)for(let r of Object.values(this.roles))r.isDelegatedPath(e)&&(yield{role:r.name,terminating:r.terminating});else this.succinctRoles&&(yield{role:this.succinctRoles.getRoleForTarget(e),terminating:!0})}toJSON(){let e={keys:c3t(this.keys),...this.unrecognizedFields};return this.roles?e.roles=u3t(this.roles):this.succinctRoles&&(e.succinct_roles=this.succinctRoles.toJSON()),e}static fromJSON(e){let{keys:r,roles:s,succinct_roles:a,...n}=e,c;return sL.guard.isObject(a)&&(c=iJ.SuccinctRoles.fromJSON(a)),new t({keys:f3t(r),roles:A3t(s),unrecognizedFields:n,succinctRoles:c})}};f1.Delegations=sJ;function c3t(t){return Object.entries(t).reduce((e,[r,s])=>({...e,[r]:s.toJSON()}),{})}function u3t(t){return Object.values(t).map(e=>e.toJSON())}function f3t(t){if(!sL.guard.isObjectRecord(t))throw new TypeError("keys is malformed");return Object.entries(t).reduce((e,[r,s])=>({...e,[r]:l3t.Key.fromJSON(r,s)}),{})}function A3t(t){let e;if(sL.guard.isDefined(t)){if(!sL.guard.isObjectArray(t))throw new TypeError("roles is malformed");e=t.reduce((r,s)=>{let a=iJ.DelegatedRole.fromJSON(s);return{...r,[a.name]:a}},{})}return e}});var lJ=L(A1=>{"use strict";var p3t=A1&&A1.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(A1,"__esModule",{value:!0});A1.Targets=void 0;var cNe=p3t(ye("util")),oJ=ly(),h3t=lNe(),g3t=Vb(),oL=Af(),aJ=class t extends oJ.Signed{constructor(e){super(e),this.type=oJ.MetadataKind.Targets,this.targets=e.targets||{},this.delegations=e.delegations}addTarget(e){this.targets[e.path]=e}equals(e){return e instanceof t?super.equals(e)&&cNe.default.isDeepStrictEqual(this.targets,e.targets)&&cNe.default.isDeepStrictEqual(this.delegations,e.delegations):!1}toJSON(){let e={_type:this.type,spec_version:this.specVersion,version:this.version,expires:this.expires,targets:d3t(this.targets),...this.unrecognizedFields};return this.delegations&&(e.delegations=this.delegations.toJSON()),e}static fromJSON(e){let{unrecognizedFields:r,...s}=oJ.Signed.commonFieldsFromJSON(e),{targets:a,delegations:n,...c}=r;return new t({...s,targets:m3t(a),delegations:y3t(n),unrecognizedFields:c})}};A1.Targets=aJ;function d3t(t){return Object.entries(t).reduce((e,[r,s])=>({...e,[r]:s.toJSON()}),{})}function m3t(t){let e;if(oL.guard.isDefined(t))if(oL.guard.isObjectRecord(t))e=Object.entries(t).reduce((r,[s,a])=>({...r,[s]:g3t.TargetFile.fromJSON(s,a)}),{});else throw new TypeError("targets must be an object");return e}function y3t(t){let e;if(oL.guard.isDefined(t))if(oL.guard.isObject(t))e=h3t.Delegations.fromJSON(t);else throw new TypeError("delegations must be an object");return e}});var AJ=L(aL=>{"use strict";Object.defineProperty(aL,"__esModule",{value:!0});aL.Timestamp=void 0;var cJ=ly(),uNe=Vb(),uJ=Af(),fJ=class t extends cJ.Signed{constructor(e){super(e),this.type=cJ.MetadataKind.Timestamp,this.snapshotMeta=e.snapshotMeta||new uNe.MetaFile({version:1})}equals(e){return e instanceof t?super.equals(e)&&this.snapshotMeta.equals(e.snapshotMeta):!1}toJSON(){return{_type:this.type,spec_version:this.specVersion,version:this.version,expires:this.expires,meta:{"snapshot.json":this.snapshotMeta.toJSON()},...this.unrecognizedFields}}static fromJSON(e){let{unrecognizedFields:r,...s}=cJ.Signed.commonFieldsFromJSON(e),{meta:a,...n}=r;return new t({...s,snapshotMeta:E3t(a),unrecognizedFields:n})}};aL.Timestamp=fJ;function E3t(t){let e;if(uJ.guard.isDefined(t)){let r=t["snapshot.json"];if(!uJ.guard.isDefined(r)||!uJ.guard.isObject(r))throw new TypeError("missing snapshot.json in meta");e=uNe.MetaFile.fromJSON(r)}return e}});var ANe=L(h1=>{"use strict";var I3t=h1&&h1.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(h1,"__esModule",{value:!0});h1.Metadata=void 0;var C3t=QK(),fNe=I3t(ye("util")),p1=ly(),eP=kA(),w3t=XK(),B3t=eJ(),v3t=nJ(),S3t=lJ(),D3t=AJ(),pJ=Af(),hJ=class t{constructor(e,r,s){this.signed=e,this.signatures=r||{},this.unrecognizedFields=s||{}}sign(e,r=!0){let s=Buffer.from((0,C3t.canonicalize)(this.signed.toJSON())),a=e(s);r||(this.signatures={}),this.signatures[a.keyID]=a}verifyDelegate(e,r){let s,a={};switch(this.signed.type){case p1.MetadataKind.Root:a=this.signed.keys,s=this.signed.roles[e];break;case p1.MetadataKind.Targets:if(!this.signed.delegations)throw new eP.ValueError(`No delegations found for ${e}`);a=this.signed.delegations.keys,this.signed.delegations.roles?s=this.signed.delegations.roles[e]:this.signed.delegations.succinctRoles&&this.signed.delegations.succinctRoles.isDelegatedRole(e)&&(s=this.signed.delegations.succinctRoles);break;default:throw new TypeError("invalid metadata type")}if(!s)throw new eP.ValueError(`no delegation found for ${e}`);let n=new Set;if(s.keyIDs.forEach(c=>{let f=a[c];if(f)try{f.verifySignature(r),n.add(f.keyID)}catch{}}),n.sizer.toJSON()),signed:this.signed.toJSON(),...this.unrecognizedFields}}static fromJSON(e,r){let{signed:s,signatures:a,...n}=r;if(!pJ.guard.isDefined(s)||!pJ.guard.isObject(s))throw new TypeError("signed is not defined");if(e!==s._type)throw new eP.ValueError(`expected '${e}', got ${s._type}`);if(!pJ.guard.isObjectArray(a))throw new TypeError("signatures is not an array");let c;switch(e){case p1.MetadataKind.Root:c=w3t.Root.fromJSON(s);break;case p1.MetadataKind.Timestamp:c=D3t.Timestamp.fromJSON(s);break;case p1.MetadataKind.Snapshot:c=v3t.Snapshot.fromJSON(s);break;case p1.MetadataKind.Targets:c=S3t.Targets.fromJSON(s);break;default:throw new TypeError("invalid metadata type")}let f={};return a.forEach(p=>{let h=B3t.Signature.fromJSON(p);if(f[h.keyID])throw new eP.ValueError(`multiple signatures found for keyid: ${h.keyID}`);f[h.keyID]=h}),new t(c,f,n)}};h1.Metadata=hJ});var lL=L(Ri=>{"use strict";Object.defineProperty(Ri,"__esModule",{value:!0});Ri.Timestamp=Ri.Targets=Ri.Snapshot=Ri.Signature=Ri.Root=Ri.Metadata=Ri.Key=Ri.TargetFile=Ri.MetaFile=Ri.ValueError=Ri.MetadataKind=void 0;var b3t=ly();Object.defineProperty(Ri,"MetadataKind",{enumerable:!0,get:function(){return b3t.MetadataKind}});var P3t=kA();Object.defineProperty(Ri,"ValueError",{enumerable:!0,get:function(){return P3t.ValueError}});var pNe=Vb();Object.defineProperty(Ri,"MetaFile",{enumerable:!0,get:function(){return pNe.MetaFile}});Object.defineProperty(Ri,"TargetFile",{enumerable:!0,get:function(){return pNe.TargetFile}});var x3t=qO();Object.defineProperty(Ri,"Key",{enumerable:!0,get:function(){return x3t.Key}});var k3t=ANe();Object.defineProperty(Ri,"Metadata",{enumerable:!0,get:function(){return k3t.Metadata}});var Q3t=XK();Object.defineProperty(Ri,"Root",{enumerable:!0,get:function(){return Q3t.Root}});var T3t=eJ();Object.defineProperty(Ri,"Signature",{enumerable:!0,get:function(){return T3t.Signature}});var R3t=nJ();Object.defineProperty(Ri,"Snapshot",{enumerable:!0,get:function(){return R3t.Snapshot}});var F3t=lJ();Object.defineProperty(Ri,"Targets",{enumerable:!0,get:function(){return F3t.Targets}});var N3t=AJ();Object.defineProperty(Ri,"Timestamp",{enumerable:!0,get:function(){return N3t.Timestamp}})});var gNe=L((Uwr,hNe)=>{var g1=1e3,d1=g1*60,m1=d1*60,fy=m1*24,O3t=fy*7,L3t=fy*365.25;hNe.exports=function(t,e){e=e||{};var r=typeof t;if(r==="string"&&t.length>0)return M3t(t);if(r==="number"&&isFinite(t))return e.long?U3t(t):_3t(t);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(t))};function M3t(t){if(t=String(t),!(t.length>100)){var e=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(t);if(e){var r=parseFloat(e[1]),s=(e[2]||"ms").toLowerCase();switch(s){case"years":case"year":case"yrs":case"yr":case"y":return r*L3t;case"weeks":case"week":case"w":return r*O3t;case"days":case"day":case"d":return r*fy;case"hours":case"hour":case"hrs":case"hr":case"h":return r*m1;case"minutes":case"minute":case"mins":case"min":case"m":return r*d1;case"seconds":case"second":case"secs":case"sec":case"s":return r*g1;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}}}function _3t(t){var e=Math.abs(t);return e>=fy?Math.round(t/fy)+"d":e>=m1?Math.round(t/m1)+"h":e>=d1?Math.round(t/d1)+"m":e>=g1?Math.round(t/g1)+"s":t+"ms"}function U3t(t){var e=Math.abs(t);return e>=fy?cL(t,e,fy,"day"):e>=m1?cL(t,e,m1,"hour"):e>=d1?cL(t,e,d1,"minute"):e>=g1?cL(t,e,g1,"second"):t+" ms"}function cL(t,e,r,s){var a=e>=r*1.5;return Math.round(t/r)+" "+s+(a?"s":"")}});var gJ=L((Hwr,dNe)=>{function H3t(t){r.debug=r,r.default=r,r.coerce=p,r.disable=c,r.enable=a,r.enabled=f,r.humanize=gNe(),r.destroy=h,Object.keys(t).forEach(E=>{r[E]=t[E]}),r.names=[],r.skips=[],r.formatters={};function e(E){let C=0;for(let S=0;S{if(ce==="%%")return"%";ie++;let pe=r.formatters[me];if(typeof pe=="function"){let Be=N[ie];ce=pe.call(U,Be),N.splice(ie,1),ie--}return ce}),r.formatArgs.call(U,N),(U.log||r.log).apply(U,N)}return R.namespace=E,R.useColors=r.useColors(),R.color=r.selectColor(E),R.extend=s,R.destroy=r.destroy,Object.defineProperty(R,"enabled",{enumerable:!0,configurable:!1,get:()=>S!==null?S:(P!==r.namespaces&&(P=r.namespaces,I=r.enabled(E)),I),set:N=>{S=N}}),typeof r.init=="function"&&r.init(R),R}function s(E,C){let S=r(this.namespace+(typeof C>"u"?":":C)+E);return S.log=this.log,S}function a(E){r.save(E),r.namespaces=E,r.names=[],r.skips=[];let C=(typeof E=="string"?E:"").trim().replace(" ",",").split(",").filter(Boolean);for(let S of C)S[0]==="-"?r.skips.push(S.slice(1)):r.names.push(S)}function n(E,C){let S=0,P=0,I=-1,R=0;for(;S"-"+C)].join(",");return r.enable(""),E}function f(E){for(let C of r.skips)if(n(E,C))return!1;for(let C of r.names)if(n(E,C))return!0;return!1}function p(E){return E instanceof Error?E.stack||E.message:E}function h(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return r.enable(r.load()),r}dNe.exports=H3t});var mNe=L((oc,uL)=>{oc.formatArgs=q3t;oc.save=G3t;oc.load=W3t;oc.useColors=j3t;oc.storage=Y3t();oc.destroy=(()=>{let t=!1;return()=>{t||(t=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})();oc.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function j3t(){if(typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs))return!0;if(typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let t;return typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&(t=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(t[1],10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function q3t(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+uL.exports.humanize(this.diff),!this.useColors)return;let e="color: "+this.color;t.splice(1,0,e,"color: inherit");let r=0,s=0;t[0].replace(/%[a-zA-Z%]/g,a=>{a!=="%%"&&(r++,a==="%c"&&(s=r))}),t.splice(s,0,e)}oc.log=console.debug||console.log||(()=>{});function G3t(t){try{t?oc.storage.setItem("debug",t):oc.storage.removeItem("debug")}catch{}}function W3t(){let t;try{t=oc.storage.getItem("debug")}catch{}return!t&&typeof process<"u"&&"env"in process&&(t=process.env.DEBUG),t}function Y3t(){try{return localStorage}catch{}}uL.exports=gJ()(oc);var{formatters:V3t}=uL.exports;V3t.j=function(t){try{return JSON.stringify(t)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}});var ENe=L(($s,AL)=>{var K3t=ye("tty"),fL=ye("util");$s.init=t8t;$s.log=X3t;$s.formatArgs=z3t;$s.save=$3t;$s.load=e8t;$s.useColors=J3t;$s.destroy=fL.deprecate(()=>{},"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.");$s.colors=[6,2,3,4,5,1];try{let t=ye("supports-color");t&&(t.stderr||t).level>=2&&($s.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch{}$s.inspectOpts=Object.keys(process.env).filter(t=>/^debug_/i.test(t)).reduce((t,e)=>{let r=e.substring(6).toLowerCase().replace(/_([a-z])/g,(a,n)=>n.toUpperCase()),s=process.env[e];return/^(yes|on|true|enabled)$/i.test(s)?s=!0:/^(no|off|false|disabled)$/i.test(s)?s=!1:s==="null"?s=null:s=Number(s),t[r]=s,t},{});function J3t(){return"colors"in $s.inspectOpts?!!$s.inspectOpts.colors:K3t.isatty(process.stderr.fd)}function z3t(t){let{namespace:e,useColors:r}=this;if(r){let s=this.color,a="\x1B[3"+(s<8?s:"8;5;"+s),n=` ${a};1m${e} \x1B[0m`;t[0]=n+t[0].split(` +`).join(` +`+n),t.push(a+"m+"+AL.exports.humanize(this.diff)+"\x1B[0m")}else t[0]=Z3t()+e+" "+t[0]}function Z3t(){return $s.inspectOpts.hideDate?"":new Date().toISOString()+" "}function X3t(...t){return process.stderr.write(fL.formatWithOptions($s.inspectOpts,...t)+` +`)}function $3t(t){t?process.env.DEBUG=t:delete process.env.DEBUG}function e8t(){return process.env.DEBUG}function t8t(t){t.inspectOpts={};let e=Object.keys($s.inspectOpts);for(let r=0;re.trim()).join(" ")};yNe.O=function(t){return this.inspectOpts.colors=this.useColors,fL.inspect(t,this.inspectOpts)}});var mJ=L((jwr,dJ)=>{typeof process>"u"||process.type==="renderer"||process.browser===!0||process.__nwjs?dJ.exports=mNe():dJ.exports=ENe()});var hL=L(Ji=>{"use strict";Object.defineProperty(Ji,"__esModule",{value:!0});Ji.DownloadHTTPError=Ji.DownloadLengthMismatchError=Ji.DownloadError=Ji.ExpiredMetadataError=Ji.EqualVersionError=Ji.BadVersionError=Ji.RepositoryError=Ji.PersistError=Ji.RuntimeError=Ji.ValueError=void 0;var yJ=class extends Error{};Ji.ValueError=yJ;var EJ=class extends Error{};Ji.RuntimeError=EJ;var IJ=class extends Error{};Ji.PersistError=IJ;var tP=class extends Error{};Ji.RepositoryError=tP;var pL=class extends tP{};Ji.BadVersionError=pL;var CJ=class extends pL{};Ji.EqualVersionError=CJ;var wJ=class extends tP{};Ji.ExpiredMetadataError=wJ;var rP=class extends Error{};Ji.DownloadError=rP;var BJ=class extends rP{};Ji.DownloadLengthMismatchError=BJ;var vJ=class extends rP{constructor(e,r){super(e),this.statusCode=r}};Ji.DownloadHTTPError=vJ});var CNe=L(y1=>{"use strict";var DJ=y1&&y1.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(y1,"__esModule",{value:!0});y1.withTempFile=void 0;var SJ=DJ(ye("fs/promises")),r8t=DJ(ye("os")),INe=DJ(ye("path")),n8t=async t=>i8t(async e=>t(INe.default.join(e,"tempfile")));y1.withTempFile=n8t;var i8t=async t=>{let e=await SJ.default.realpath(r8t.default.tmpdir()),r=await SJ.default.mkdtemp(e+INe.default.sep);try{return await t(r)}finally{await SJ.default.rm(r,{force:!0,recursive:!0,maxRetries:3})}}});var PJ=L(Qg=>{"use strict";var dL=Qg&&Qg.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Qg,"__esModule",{value:!0});Qg.DefaultFetcher=Qg.BaseFetcher=void 0;var s8t=dL(mJ()),wNe=dL(ye("fs")),o8t=dL(xO()),a8t=dL(ye("util")),BNe=hL(),l8t=CNe(),c8t=(0,s8t.default)("tuf:fetch"),gL=class{async downloadFile(e,r,s){return(0,l8t.withTempFile)(async a=>{let n=await this.fetch(e),c=0,f=wNe.default.createWriteStream(a);try{for await(let p of n){let h=Buffer.from(p);if(c+=h.length,c>r)throw new BNe.DownloadLengthMismatchError("Max length reached");await u8t(f,h)}}finally{await a8t.default.promisify(f.close).bind(f)()}return s(a)})}async downloadBytes(e,r){return this.downloadFile(e,r,async s=>{let a=wNe.default.createReadStream(s),n=[];for await(let c of a)n.push(c);return Buffer.concat(n)})}};Qg.BaseFetcher=gL;var bJ=class extends gL{constructor(e={}){super(),this.timeout=e.timeout,this.retry=e.retry}async fetch(e){c8t("GET %s",e);let r=await(0,o8t.default)(e,{timeout:this.timeout,retry:this.retry});if(!r.ok||!r?.body)throw new BNe.DownloadHTTPError("Failed to download",r.status);return r.body}};Qg.DefaultFetcher=bJ;var u8t=async(t,e)=>new Promise((r,s)=>{t.write(e,a=>{a&&s(a),r(!0)})})});var vNe=L(mL=>{"use strict";Object.defineProperty(mL,"__esModule",{value:!0});mL.defaultConfig=void 0;mL.defaultConfig={maxRootRotations:256,maxDelegations:32,rootMaxLength:512e3,timestampMaxLength:16384,snapshotMaxLength:2e6,targetsMaxLength:5e6,prefixTargetsWithHash:!0,fetchTimeout:1e5,fetchRetries:void 0,fetchRetry:2}});var SNe=L(yL=>{"use strict";Object.defineProperty(yL,"__esModule",{value:!0});yL.TrustedMetadataStore=void 0;var Is=lL(),Ui=hL(),xJ=class{constructor(e){this.trustedSet={},this.referenceTime=new Date,this.loadTrustedRoot(e)}get root(){if(!this.trustedSet.root)throw new ReferenceError("No trusted root metadata");return this.trustedSet.root}get timestamp(){return this.trustedSet.timestamp}get snapshot(){return this.trustedSet.snapshot}get targets(){return this.trustedSet.targets}getRole(e){return this.trustedSet[e]}updateRoot(e){let r=JSON.parse(e.toString("utf8")),s=Is.Metadata.fromJSON(Is.MetadataKind.Root,r);if(s.signed.type!=Is.MetadataKind.Root)throw new Ui.RepositoryError(`Expected 'root', got ${s.signed.type}`);if(this.root.verifyDelegate(Is.MetadataKind.Root,s),s.signed.version!=this.root.signed.version+1)throw new Ui.BadVersionError(`Expected version ${this.root.signed.version+1}, got ${s.signed.version}`);return s.verifyDelegate(Is.MetadataKind.Root,s),this.trustedSet.root=s,s}updateTimestamp(e){if(this.snapshot)throw new Ui.RuntimeError("Cannot update timestamp after snapshot");if(this.root.signed.isExpired(this.referenceTime))throw new Ui.ExpiredMetadataError("Final root.json is expired");let r=JSON.parse(e.toString("utf8")),s=Is.Metadata.fromJSON(Is.MetadataKind.Timestamp,r);if(s.signed.type!=Is.MetadataKind.Timestamp)throw new Ui.RepositoryError(`Expected 'timestamp', got ${s.signed.type}`);if(this.root.verifyDelegate(Is.MetadataKind.Timestamp,s),this.timestamp){if(s.signed.version{let p=n.signed.meta[c];if(!p)throw new Ui.RepositoryError(`Missing file ${c} in new snapshot`);if(p.version{"use strict";Object.defineProperty(kJ,"__esModule",{value:!0});kJ.join=A8t;var f8t=ye("url");function A8t(t,e){return new f8t.URL(p8t(t)+h8t(e)).toString()}function p8t(t){return t.endsWith("/")?t:t+"/"}function h8t(t){return t.startsWith("/")?t.slice(1):t}});var bNe=L(su=>{"use strict";var g8t=su&&su.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(e,r);(!a||("get"in a?!e.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,s,a)}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),d8t=su&&su.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),RJ=su&&su.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.prototype.hasOwnProperty.call(t,r)&&g8t(e,t,r);return d8t(e,t),e},m8t=su&&su.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(su,"__esModule",{value:!0});su.Updater=void 0;var QA=lL(),y8t=m8t(mJ()),E1=RJ(ye("fs")),EL=RJ(ye("path")),E8t=vNe(),Ay=hL(),I8t=PJ(),C8t=SNe(),nP=RJ(DNe()),QJ=(0,y8t.default)("tuf:cache"),TJ=class{constructor(e){let{metadataDir:r,metadataBaseUrl:s,targetDir:a,targetBaseUrl:n,fetcher:c,config:f}=e;this.dir=r,this.metadataBaseUrl=s,this.targetDir=a,this.targetBaseUrl=n,this.forceCache=e.forceCache??!1;let p=this.loadLocalMetadata(QA.MetadataKind.Root);this.trustedSet=new C8t.TrustedMetadataStore(p),this.config={...E8t.defaultConfig,...f},this.fetcher=c||new I8t.DefaultFetcher({timeout:this.config.fetchTimeout,retry:this.config.fetchRetries??this.config.fetchRetry})}async refresh(){if(this.forceCache)try{await this.loadTimestamp({checkRemote:!1})}catch{await this.loadRoot(),await this.loadTimestamp()}else await this.loadRoot(),await this.loadTimestamp();await this.loadSnapshot(),await this.loadTargets(QA.MetadataKind.Targets,QA.MetadataKind.Root)}async getTargetInfo(e){return this.trustedSet.targets||await this.refresh(),this.preorderDepthFirstWalk(e)}async downloadTarget(e,r,s){let a=r||this.generateTargetPath(e);if(!s){if(!this.targetBaseUrl)throw new Ay.ValueError("Target base URL not set");s=this.targetBaseUrl}let n=e.path;if(this.trustedSet.root.signed.consistentSnapshot&&this.config.prefixTargetsWithHash){let p=Object.values(e.hashes),{dir:h,base:E}=EL.parse(n),C=`${p[0]}.${E}`;n=h?`${h}/${C}`:C}let f=nP.join(s,n);return await this.fetcher.downloadFile(f,e.length,async p=>{await e.verify(E1.createReadStream(p)),QJ("WRITE %s",a),E1.copyFileSync(p,a)}),a}async findCachedTarget(e,r){r||(r=this.generateTargetPath(e));try{if(E1.existsSync(r))return await e.verify(E1.createReadStream(r)),r}catch{return}}loadLocalMetadata(e){let r=EL.join(this.dir,`${e}.json`);return QJ("READ %s",r),E1.readFileSync(r)}async loadRoot(){let r=this.trustedSet.root.signed.version+1,s=r+this.config.maxRootRotations;for(let a=r;a0;){let{roleName:a,parentRoleName:n}=r.pop();if(s.has(a))continue;let c=(await this.loadTargets(a,n))?.signed;if(!c)continue;let f=c.targets?.[e];if(f)return f;if(s.add(a),c.delegations){let p=[],h=c.delegations.rolesForTarget(e);for(let{role:E,terminating:C}of h)if(p.push({roleName:E,parentRoleName:a}),C){r.splice(0);break}p.reverse(),r.push(...p)}}}generateTargetPath(e){if(!this.targetDir)throw new Ay.ValueError("Target directory not set");let r=encodeURIComponent(e.path);return EL.join(this.targetDir,r)}persistMetadata(e,r){let s=encodeURIComponent(e);try{let a=EL.join(this.dir,`${s}.json`);QJ("WRITE %s",a),E1.writeFileSync(a,r.toString("utf8"))}catch(a){throw new Ay.PersistError(`Failed to persist metadata ${s} error: ${a}`)}}};su.Updater=TJ});var PNe=L(Tg=>{"use strict";Object.defineProperty(Tg,"__esModule",{value:!0});Tg.Updater=Tg.BaseFetcher=Tg.TargetFile=void 0;var w8t=lL();Object.defineProperty(Tg,"TargetFile",{enumerable:!0,get:function(){return w8t.TargetFile}});var B8t=PJ();Object.defineProperty(Tg,"BaseFetcher",{enumerable:!0,get:function(){return B8t.BaseFetcher}});var v8t=bNe();Object.defineProperty(Tg,"Updater",{enumerable:!0,get:function(){return v8t.Updater}})});var NJ=L(IL=>{"use strict";Object.defineProperty(IL,"__esModule",{value:!0});IL.TUFError=void 0;var FJ=class extends Error{constructor({code:e,message:r,cause:s}){super(r),this.code=e,this.cause=s,this.name=this.constructor.name}};IL.TUFError=FJ});var xNe=L(iP=>{"use strict";var S8t=iP&&iP.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(iP,"__esModule",{value:!0});iP.readTarget=b8t;var D8t=S8t(ye("fs")),CL=NJ();async function b8t(t,e){let r=await P8t(t,e);return new Promise((s,a)=>{D8t.default.readFile(r,"utf-8",(n,c)=>{n?a(new CL.TUFError({code:"TUF_READ_TARGET_ERROR",message:`error reading target ${r}`,cause:n})):s(c)})})}async function P8t(t,e){let r;try{r=await t.getTargetInfo(e)}catch(a){throw new CL.TUFError({code:"TUF_REFRESH_METADATA_ERROR",message:"error refreshing TUF metadata",cause:a})}if(!r)throw new CL.TUFError({code:"TUF_FIND_TARGET_ERROR",message:`target ${e} not found`});let s=await t.findCachedTarget(r);if(!s)try{s=await t.downloadTarget(r)}catch(a){throw new CL.TUFError({code:"TUF_DOWNLOAD_TARGET_ERROR",message:`error downloading target ${s}`,cause:a})}return s}});var kNe=L(($wr,x8t)=>{x8t.exports={"https://tuf-repo-cdn.sigstore.dev":{"root.json":"ewogInNpZ25hdHVyZXMiOiBbCiAgewogICAia2V5aWQiOiAiNmYyNjAwODlkNTkyM2RhZjIwMTY2Y2E2NTdjNTQzYWY2MTgzNDZhYjk3MTg4NGE5OTk2MmIwMTk4OGJiZTBjMyIsCiAgICJzaWciOiAiMzA0NjAyMjEwMDhhYjFmNmYxN2Q0ZjllNmQ3ZGNmMWM4ODkxMmI2YjUzY2MxMDM4ODY0NGFlMWYwOWJjMzdhMDgyY2QwNjAwM2UwMjIxMDBlMTQ1ZWY0YzdiNzgyZDRlODEwN2I1MzQzN2U2NjlkMDQ3Njg5MmNlOTk5OTAzYWUzM2QxNDQ0ODM2Njk5NmU3IgogIH0sCiAgewogICAia2V5aWQiOiAiZTcxYTU0ZDU0MzgzNWJhODZhZGFkOTQ2MDM3OWM3NjQxZmI4NzI2ZDE2NGVhNzY2ODAxYTFjNTIyYWJhN2VhMiIsCiAgICJzaWciOiAiMzA0NTAyMjEwMGM3NjhiMmY4NmRhOTk1NjkwMTljMTYwYTA4MWRhNTRhZTM2YzM0YzBhMzEyMGQzY2I2OWI1M2I3ZDExMzc1OGUwMjIwNGY2NzE1MThmNjE3YjIwZDQ2NTM3ZmFlNmMzYjYzYmFlODkxM2Y0ZjE5NjIxNTYxMDVjYzRmMDE5YWMzNWM2YSIKICB9LAogIHsKICAgImtleWlkIjogIjIyZjRjYWVjNmQ4ZTZmOTU1NWFmNjZiM2Q0YzNjYjA2YTNiYjIzZmRjN2UzOWM5MTZjNjFmNDYyZTZmNTJiMDYiLAogICAic2lnIjogIjMwNDUwMjIxMDBiNDQzNGU2OTk1ZDM2OGQyM2U3NDc1OWFjZDBjYjkwMTNjODNhNWQzNTExZjBmOTk3ZWM1NGM0NTZhZTQzNTBhMDIyMDE1YjBlMjY1ZDE4MmQyYjYxZGM3NGUxNTVkOThiM2MzZmJlNTY0YmEwNTI4NmFhMTRjOGRmMDJjOWI3NTY1MTYiCiAgfSwKICB7CiAgICJrZXlpZCI6ICI2MTY0MzgzODEyNWI0NDBiNDBkYjY5NDJmNWNiNWEzMWMwZGMwNDM2ODMxNmViMmFhYTU4Yjk1OTA0YTU4MjIyIiwKICAgInNpZyI6ICIzMDQ1MDIyMTAwODJjNTg0MTFkOTg5ZWI5Zjg2MTQxMDg1N2Q0MjM4MTU5MGVjOTQyNGRiZGFhNTFlNzhlZDEzNTE1NDMxOTA0ZTAyMjAxMTgxODVkYTZhNmMyOTQ3MTMxYzE3Nzk3ZTJiYjc2MjBjZTI2ZTVmMzAxZDFjZWFjNWYyYTdlNThmOWRjZjJlIgogIH0sCiAgewogICAia2V5aWQiOiAiYTY4N2U1YmY0ZmFiODJiMGVlNThkNDZlMDVjOTUzNTE0NWEyYzlhZmI0NThmNDNkNDJiNDVjYTBmZGNlMmE3MCIsCiAgICJzaWciOiAiMzA0NjAyMjEwMGM3ODUxMzg1NGNhZTljMzJlYWE2Yjg4ZTE4OTEyZjQ4MDA2YzI3NTdhMjU4ZjkxNzMxMmNhYmE3NTk0OGViOWUwMjIxMDBkOWUxYjRjZTBhZGZlOWZkMmUyMTQ4ZDdmYTI3YTJmNDBiYTExMjJiZDY5ZGE3NjEyZDhkMTc3NmIwMTNjOTFkIgogIH0sCiAgewogICAia2V5aWQiOiAiZmRmYTgzYTA3YjVhODM1ODliODdkZWQ0MWY3N2YzOWQyMzJhZDkxZjdjY2U1Mjg2OGRhY2QwNmJhMDg5ODQ5ZiIsCiAgICJzaWciOiAiMzA0NTAyMjA1NjQ4M2EyZDVkOWVhOWNlYzZlMTFlYWRmYjMzYzQ4NGI2MTQyOThmYWNhMTVhY2YxYzQzMWIxMWVkN2Y3MzRjMDIyMTAwZDBjMWQ3MjZhZjkyYTg3ZTRlNjY0NTljYTVhZGYzOGEwNWI0NGUxZjk0MzE4NDIzZjk1NGJhZThiY2E1YmIyZSIKICB9LAogIHsKICAgImtleWlkIjogImUyZjU5YWNiOTQ4ODUxOTQwN2UxOGNiZmM5MzI5NTEwYmUwM2MwNGFjYTk5MjlkMmYwMzAxMzQzZmVjODU1MjMiLAogICAic2lnIjogIjMwNDYwMjIxMDBkMDA0ZGU4ODAyNGMzMmRjNTY1M2E5ZjQ4NDNjZmM1MjE1NDI3MDQ4YWQ5NjAwZDJjZjljOTY5ZTZlZGZmM2QyMDIyMTAwZDllYmI3OThmNWZjNjZhZjEwODk5ZGVjZTAxNGE4NjI4Y2NmM2M1NDAyY2Q0YTQyNzAyMDc0NzJmOGY2ZTcxMiIKICB9LAogIHsKICAgImtleWlkIjogIjNjMzQ0YWEwNjhmZDRjYzRlODdkYzUwYjYxMmMwMjQzMWZiYzc3MWU5NTAwMzk5MzY4M2EyYjBiZjI2MGNmMGUiLAogICAic2lnIjogIjMwNDYwMjIxMDBiN2IwOTk5NmM0NWNhMmQ0YjA1NjAzZTU2YmFlZmEyOTcxOGEwYjcxMTQ3Y2Y4YzZlNjYzNDliYWE2MTQ3N2RmMDIyMTAwYzRkYTgwYzcxN2I0ZmE3YmJhMGZkNWM3MmRhOGEwNDk5MzU4YjAxMzU4YjIzMDlmNDFkMTQ1NmVhMWU3ZTFkOSIKICB9LAogIHsKICAgImtleWlkIjogImVjODE2Njk3MzRlMDE3OTk2YzViODVmM2QwMmMzZGUxZGQ0NjM3YTE1MjAxOWZlMWFmMTI1ZDJmOTM2OGI5NWUiLAogICAic2lnIjogIjMwNDYwMjIxMDBiZTk3ODJjMzA3NDRlNDExYTgyZmE4NWI1MTM4ZDYwMWNlMTQ4YmMxOTI1OGFlYzY0ZTdlYzI0NDc4ZjM4ODEyMDIyMTAwY2FlZjYzZGNhZjFhNGI5YTUwMGQzYmQwZTNmMTY0ZWMxOGYxYjYzZDdhOTQ2MGQ5YWNhYjEwNjZkYjBmMDE2ZCIKICB9LAogIHsKICAgImtleWlkIjogIjFlMWQ2NWNlOThiMTBhZGRhZDQ3NjRmZWJmN2RkYTJkMDQzNmIzZDNhMzg5MzU3OWMwZGRkYWVhMjBlNTQ4NDkiLAogICAic2lnIjogIjMwNDUwMjIwNzQ2ZWMzZjg1MzRjZTU1NTMxZDBkMDFmZjY0OTY0ZWY0NDBkMWU3ZDJjNGMxNDI0MDliOGU5NzY5ZjFhZGE2ZjAyMjEwMGUzYjkyOWZjZDkzZWExOGZlYWEwODI1ODg3YTcyMTA0ODk4NzlhNjY3ODBjMDdhODNmNGJkNDZlMmYwOWFiM2IiCiAgfQogXSwKICJzaWduZWQiOiB7CiAgIl90eXBlIjogInJvb3QiLAogICJjb25zaXN0ZW50X3NuYXBzaG90IjogdHJ1ZSwKICAiZXhwaXJlcyI6ICIyMDI1LTAyLTE5VDA4OjA0OjMyWiIsCiAgImtleXMiOiB7CiAgICIyMmY0Y2FlYzZkOGU2Zjk1NTVhZjY2YjNkNGMzY2IwNmEzYmIyM2ZkYzdlMzljOTE2YzYxZjQ2MmU2ZjUyYjA2IjogewogICAgImtleWlkX2hhc2hfYWxnb3JpdGhtcyI6IFsKICAgICAic2hhMjU2IiwKICAgICAic2hhNTEyIgogICAgXSwKICAgICJrZXl0eXBlIjogImVjZHNhIiwKICAgICJrZXl2YWwiOiB7CiAgICAgInB1YmxpYyI6ICItLS0tLUJFR0lOIFBVQkxJQyBLRVktLS0tLVxuTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFekJ6Vk9tSENQb2pNVkxTSTM2NFdpaVY4TlByRFxuNklnUnhWbGlza3ovdit5M0pFUjVtY1ZHY09ObGlEY1dNQzVKMmxmSG1qUE5QaGI0SDd4bThMemZTQT09XG4tLS0tLUVORCBQVUJMSUMgS0VZLS0tLS1cbiIKICAgIH0sCiAgICAic2NoZW1lIjogImVjZHNhLXNoYTItbmlzdHAyNTYiLAogICAgIngtdHVmLW9uLWNpLWtleW93bmVyIjogIkBzYW50aWFnb3RvcnJlcyIKICAgfSwKICAgIjYxNjQzODM4MTI1YjQ0MGI0MGRiNjk0MmY1Y2I1YTMxYzBkYzA0MzY4MzE2ZWIyYWFhNThiOTU5MDRhNTgyMjIiOiB7CiAgICAia2V5aWRfaGFzaF9hbGdvcml0aG1zIjogWwogICAgICJzaGEyNTYiLAogICAgICJzaGE1MTIiCiAgICBdLAogICAgImtleXR5cGUiOiAiZWNkc2EiLAogICAgImtleXZhbCI6IHsKICAgICAicHVibGljIjogIi0tLS0tQkVHSU4gUFVCTElDIEtFWS0tLS0tXG5NRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVpbmlrU3NBUW1Za05lSDVlWXEvQ25JekxhYWNPXG54bFNhYXdRRE93cUt5L3RDcXhxNXh4UFNKYzIxSzRXSWhzOUd5T2tLZnp1ZVkzR0lMemNNSlo0Y1d3PT1cbi0tLS0tRU5EIFBVQkxJQyBLRVktLS0tLVxuIgogICAgfSwKICAgICJzY2hlbWUiOiAiZWNkc2Etc2hhMi1uaXN0cDI1NiIsCiAgICAieC10dWYtb24tY2kta2V5b3duZXIiOiAiQGJvYmNhbGxhd2F5IgogICB9LAogICAiNmYyNjAwODlkNTkyM2RhZjIwMTY2Y2E2NTdjNTQzYWY2MTgzNDZhYjk3MTg4NGE5OTk2MmIwMTk4OGJiZTBjMyI6IHsKICAgICJrZXlpZF9oYXNoX2FsZ29yaXRobXMiOiBbCiAgICAgInNoYTI1NiIsCiAgICAgInNoYTUxMiIKICAgIF0sCiAgICAia2V5dHlwZSI6ICJlY2RzYSIsCiAgICAia2V5dmFsIjogewogICAgICJwdWJsaWMiOiAiLS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS1cbk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRXk4WEtzbWhCWURJOEpjMEd3ekJ4ZUtheDBjbTVcblNUS0VVNjVIUEZ1blVuNDFzVDhwaTBGak00SWtIei9ZVW13bUxVTzBXdDdseGhqNkJrTElLNHFZQXc9PVxuLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tXG4iCiAgICB9LAogICAgInNjaGVtZSI6ICJlY2RzYS1zaGEyLW5pc3RwMjU2IiwKICAgICJ4LXR1Zi1vbi1jaS1rZXlvd25lciI6ICJAZGxvcmVuYyIKICAgfSwKICAgIjcyNDdmMGRiYWQ4NWIxNDdlMTg2M2JhZGU3NjEyNDNjYzc4NWRjYjdhYTQxMGU3MTA1ZGQzZDJiNjFhMzZkMmMiOiB7CiAgICAia2V5aWRfaGFzaF9hbGdvcml0aG1zIjogWwogICAgICJzaGEyNTYiLAogICAgICJzaGE1MTIiCiAgICBdLAogICAgImtleXR5cGUiOiAiZWNkc2EiLAogICAgImtleXZhbCI6IHsKICAgICAicHVibGljIjogIi0tLS0tQkVHSU4gUFVCTElDIEtFWS0tLS0tXG5NRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVXUmlHcjUraiszSjVTc0grWnRyNW5FMkgyd083XG5CVituTzNzOTNnTGNhMThxVE96SFkxb1d5QUdEeWtNU3NHVFVCU3Q5RCtBbjBLZktzRDJtZlNNNDJRPT1cbi0tLS0tRU5EIFBVQkxJQyBLRVktLS0tLVxuIgogICAgfSwKICAgICJzY2hlbWUiOiAiZWNkc2Etc2hhMi1uaXN0cDI1NiIsCiAgICAieC10dWYtb24tY2ktb25saW5lLXVyaSI6ICJnY3BrbXM6Ly9wcm9qZWN0cy9zaWdzdG9yZS1yb290LXNpZ25pbmcvbG9jYXRpb25zL2dsb2JhbC9rZXlSaW5ncy9yb290L2NyeXB0b0tleXMvdGltZXN0YW1wIgogICB9LAogICAiYTY4N2U1YmY0ZmFiODJiMGVlNThkNDZlMDVjOTUzNTE0NWEyYzlhZmI0NThmNDNkNDJiNDVjYTBmZGNlMmE3MCI6IHsKICAgICJrZXlpZF9oYXNoX2FsZ29yaXRobXMiOiBbCiAgICAgInNoYTI1NiIsCiAgICAgInNoYTUxMiIKICAgIF0sCiAgICAia2V5dHlwZSI6ICJlY2RzYSIsCiAgICAia2V5dmFsIjogewogICAgICJwdWJsaWMiOiAiLS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS1cbk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRTBnaHJoOTJMdzFZcjNpZEdWNVdxQ3RNREI4Q3hcbitEOGhkQzR3MlpMTklwbFZSb1ZHTHNrWWEzZ2hlTXlPamlKOGtQaTE1YVEyLy83UCtvajdVdkpQR3c9PVxuLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tXG4iCiAgICB9LAogICAgInNjaGVtZSI6ICJlY2RzYS1zaGEyLW5pc3RwMjU2IiwKICAgICJ4LXR1Zi1vbi1jaS1rZXlvd25lciI6ICJAam9zaHVhZ2wiCiAgIH0sCiAgICJlNzFhNTRkNTQzODM1YmE4NmFkYWQ5NDYwMzc5Yzc2NDFmYjg3MjZkMTY0ZWE3NjY4MDFhMWM1MjJhYmE3ZWEyIjogewogICAgImtleWlkX2hhc2hfYWxnb3JpdGhtcyI6IFsKICAgICAic2hhMjU2IiwKICAgICAic2hhNTEyIgogICAgXSwKICAgICJrZXl0eXBlIjogImVjZHNhIiwKICAgICJrZXl2YWwiOiB7CiAgICAgInB1YmxpYyI6ICItLS0tLUJFR0lOIFBVQkxJQyBLRVktLS0tLVxuTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFRVhzejNTWlhGYjhqTVY0Mmo2cEpseWpialI4S1xuTjNCd29jZXhxNkxNSWI1cXNXS09RdkxOMTZOVWVmTGM0SHN3T291bVJzVlZhYWpTcFFTNmZvYmtSdz09XG4tLS0tLUVORCBQVUJMSUMgS0VZLS0tLS1cbiIKICAgIH0sCiAgICAic2NoZW1lIjogImVjZHNhLXNoYTItbmlzdHAyNTYiLAogICAgIngtdHVmLW9uLWNpLWtleW93bmVyIjogIkBtbm02NzgiCiAgIH0KICB9LAogICJyb2xlcyI6IHsKICAgInJvb3QiOiB7CiAgICAia2V5aWRzIjogWwogICAgICI2ZjI2MDA4OWQ1OTIzZGFmMjAxNjZjYTY1N2M1NDNhZjYxODM0NmFiOTcxODg0YTk5OTYyYjAxOTg4YmJlMGMzIiwKICAgICAiZTcxYTU0ZDU0MzgzNWJhODZhZGFkOTQ2MDM3OWM3NjQxZmI4NzI2ZDE2NGVhNzY2ODAxYTFjNTIyYWJhN2VhMiIsCiAgICAgIjIyZjRjYWVjNmQ4ZTZmOTU1NWFmNjZiM2Q0YzNjYjA2YTNiYjIzZmRjN2UzOWM5MTZjNjFmNDYyZTZmNTJiMDYiLAogICAgICI2MTY0MzgzODEyNWI0NDBiNDBkYjY5NDJmNWNiNWEzMWMwZGMwNDM2ODMxNmViMmFhYTU4Yjk1OTA0YTU4MjIyIiwKICAgICAiYTY4N2U1YmY0ZmFiODJiMGVlNThkNDZlMDVjOTUzNTE0NWEyYzlhZmI0NThmNDNkNDJiNDVjYTBmZGNlMmE3MCIKICAgIF0sCiAgICAidGhyZXNob2xkIjogMwogICB9LAogICAic25hcHNob3QiOiB7CiAgICAia2V5aWRzIjogWwogICAgICI3MjQ3ZjBkYmFkODViMTQ3ZTE4NjNiYWRlNzYxMjQzY2M3ODVkY2I3YWE0MTBlNzEwNWRkM2QyYjYxYTM2ZDJjIgogICAgXSwKICAgICJ0aHJlc2hvbGQiOiAxLAogICAgIngtdHVmLW9uLWNpLWV4cGlyeS1wZXJpb2QiOiAzNjUwLAogICAgIngtdHVmLW9uLWNpLXNpZ25pbmctcGVyaW9kIjogMzY1CiAgIH0sCiAgICJ0YXJnZXRzIjogewogICAgImtleWlkcyI6IFsKICAgICAiNmYyNjAwODlkNTkyM2RhZjIwMTY2Y2E2NTdjNTQzYWY2MTgzNDZhYjk3MTg4NGE5OTk2MmIwMTk4OGJiZTBjMyIsCiAgICAgImU3MWE1NGQ1NDM4MzViYTg2YWRhZDk0NjAzNzljNzY0MWZiODcyNmQxNjRlYTc2NjgwMWExYzUyMmFiYTdlYTIiLAogICAgICIyMmY0Y2FlYzZkOGU2Zjk1NTVhZjY2YjNkNGMzY2IwNmEzYmIyM2ZkYzdlMzljOTE2YzYxZjQ2MmU2ZjUyYjA2IiwKICAgICAiNjE2NDM4MzgxMjViNDQwYjQwZGI2OTQyZjVjYjVhMzFjMGRjMDQzNjgzMTZlYjJhYWE1OGI5NTkwNGE1ODIyMiIsCiAgICAgImE2ODdlNWJmNGZhYjgyYjBlZTU4ZDQ2ZTA1Yzk1MzUxNDVhMmM5YWZiNDU4ZjQzZDQyYjQ1Y2EwZmRjZTJhNzAiCiAgICBdLAogICAgInRocmVzaG9sZCI6IDMKICAgfSwKICAgInRpbWVzdGFtcCI6IHsKICAgICJrZXlpZHMiOiBbCiAgICAgIjcyNDdmMGRiYWQ4NWIxNDdlMTg2M2JhZGU3NjEyNDNjYzc4NWRjYjdhYTQxMGU3MTA1ZGQzZDJiNjFhMzZkMmMiCiAgICBdLAogICAgInRocmVzaG9sZCI6IDEsCiAgICAieC10dWYtb24tY2ktZXhwaXJ5LXBlcmlvZCI6IDcsCiAgICAieC10dWYtb24tY2ktc2lnbmluZy1wZXJpb2QiOiA0CiAgIH0KICB9LAogICJzcGVjX3ZlcnNpb24iOiAiMS4wIiwKICAidmVyc2lvbiI6IDEwLAogICJ4LXR1Zi1vbi1jaS1leHBpcnktcGVyaW9kIjogMTgyLAogICJ4LXR1Zi1vbi1jaS1zaWduaW5nLXBlcmlvZCI6IDMxCiB9Cn0=",targets:{"trusted_root.json":"ewogICJtZWRpYVR5cGUiOiAiYXBwbGljYXRpb24vdm5kLmRldi5zaWdzdG9yZS50cnVzdGVkcm9vdCtqc29uO3ZlcnNpb249MC4xIiwKICAidGxvZ3MiOiBbCiAgICB7CiAgICAgICJiYXNlVXJsIjogImh0dHBzOi8vcmVrb3Iuc2lnc3RvcmUuZGV2IiwKICAgICAgImhhc2hBbGdvcml0aG0iOiAiU0hBMl8yNTYiLAogICAgICAicHVibGljS2V5IjogewogICAgICAgICJyYXdCeXRlcyI6ICJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUyRzJZKzJ0YWJkVFY1QmNHaUJJeDBhOWZBRndya0JibUxTR3RrczRMM3FYNnlZWTB6dWZCbmhDOFVyL2l5NTVHaFdQLzlBL2JZMkxoQzMwTTkrUll0dz09IiwKICAgICAgICAia2V5RGV0YWlscyI6ICJQS0lYX0VDRFNBX1AyNTZfU0hBXzI1NiIsCiAgICAgICAgInZhbGlkRm9yIjogewogICAgICAgICAgInN0YXJ0IjogIjIwMjEtMDEtMTJUMTE6NTM6MjcuMDAwWiIKICAgICAgICB9CiAgICAgIH0sCiAgICAgICJsb2dJZCI6IHsKICAgICAgICAia2V5SWQiOiAid05JOWF0UUdseitWV2ZPNkxSeWdINFFVZlkvOFc0UkZ3aVQ1aTVXUmdCMD0iCiAgICAgIH0KICAgIH0KICBdLAogICJjZXJ0aWZpY2F0ZUF1dGhvcml0aWVzIjogWwogICAgewogICAgICAic3ViamVjdCI6IHsKICAgICAgICAib3JnYW5pemF0aW9uIjogInNpZ3N0b3JlLmRldiIsCiAgICAgICAgImNvbW1vbk5hbWUiOiAic2lnc3RvcmUiCiAgICAgIH0sCiAgICAgICJ1cmkiOiAiaHR0cHM6Ly9mdWxjaW8uc2lnc3RvcmUuZGV2IiwKICAgICAgImNlcnRDaGFpbiI6IHsKICAgICAgICAiY2VydGlmaWNhdGVzIjogWwogICAgICAgICAgewogICAgICAgICAgICAicmF3Qnl0ZXMiOiAiTUlJQitEQ0NBWDZnQXdJQkFnSVROVmtEWm9DaW9mUERzeTdkZm02Z2VMYnVoekFLQmdncWhrak9QUVFEQXpBcU1SVXdFd1lEVlFRS0V3eHphV2R6ZEc5eVpTNWtaWFl4RVRBUEJnTlZCQU1UQ0hOcFozTjBiM0psTUI0WERUSXhNRE13TnpBek1qQXlPVm9YRFRNeE1ESXlNekF6TWpBeU9Wb3dLakVWTUJNR0ExVUVDaE1NYzJsbmMzUnZjbVV1WkdWMk1SRXdEd1lEVlFRREV3aHphV2R6ZEc5eVpUQjJNQkFHQnlxR1NNNDlBZ0VHQlN1QkJBQWlBMklBQkxTeUE3SWk1aytwTk84WkVXWTB5bGVtV0Rvd09rTmEza0wrR1pFNVo1R1dlaEw5L0E5YlJOQTNSYnJzWjVpMEpjYXN0YVJMN1NwNWZwL2pENWR4cWMvVWRUVm5sdlMxNmFuKzJZZnN3ZS9RdUxvbFJVQ3JjT0UyKzJpQTUrdHpkNk5tTUdRd0RnWURWUjBQQVFIL0JBUURBZ0VHTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFFd0hRWURWUjBPQkJZRUZNakZIUUJCbWlRcE1sRWs2dzJ1U3UxS0J0UHNNQjhHQTFVZEl3UVlNQmFBRk1qRkhRQkJtaVFwTWxFazZ3MnVTdTFLQnRQc01Bb0dDQ3FHU000OUJBTURBMmdBTUdVQ01IOGxpV0pmTXVpNnZYWEJoakRnWTRNd3NsbU4vVEp4VmUvODNXckZvbXdtTmYwNTZ5MVg0OEY5YzRtM2Ezb3pYQUl4QUtqUmF5NS9hai9qc0tLR0lrbVFhdGpJOHV1cEhyLytDeEZ2YUpXbXBZcU5rTERHUlUrOW9yemg1aEkyUnJjdWFRPT0iCiAgICAgICAgICB9CiAgICAgICAgXQogICAgICB9LAogICAgICAidmFsaWRGb3IiOiB7CiAgICAgICAgInN0YXJ0IjogIjIwMjEtMDMtMDdUMDM6MjA6MjkuMDAwWiIsCiAgICAgICAgImVuZCI6ICIyMDIyLTEyLTMxVDIzOjU5OjU5Ljk5OVoiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJzdWJqZWN0IjogewogICAgICAgICJvcmdhbml6YXRpb24iOiAic2lnc3RvcmUuZGV2IiwKICAgICAgICAiY29tbW9uTmFtZSI6ICJzaWdzdG9yZSIKICAgICAgfSwKICAgICAgInVyaSI6ICJodHRwczovL2Z1bGNpby5zaWdzdG9yZS5kZXYiLAogICAgICAiY2VydENoYWluIjogewogICAgICAgICJjZXJ0aWZpY2F0ZXMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJyYXdCeXRlcyI6ICJNSUlDR2pDQ0FhR2dBd0lCQWdJVUFMblZpVmZuVTBickphc21Sa0hybi9VbmZhUXdDZ1lJS29aSXpqMEVBd013S2pFVk1CTUdBMVVFQ2hNTWMybG5jM1J2Y21VdVpHVjJNUkV3RHdZRFZRUURFd2h6YVdkemRHOXlaVEFlRncweU1qQTBNVE15TURBMk1UVmFGdzB6TVRFd01EVXhNelUyTlRoYU1EY3hGVEFUQmdOVkJBb1RESE5wWjNOMGIzSmxMbVJsZGpFZU1Cd0dBMVVFQXhNVmMybG5jM1J2Y21VdGFXNTBaWEp0WldScFlYUmxNSFl3RUFZSEtvWkl6ajBDQVFZRks0RUVBQ0lEWWdBRThSVlMveXNIK05PdnVEWnlQSVp0aWxnVUY5TmxhcllwQWQ5SFAxdkJCSDFVNUNWNzdMU1M3czBaaUg0bkU3SHY3cHRTNkx2dlIvU1RrNzk4TFZnTXpMbEo0SGVJZkYzdEhTYWV4TGNZcFNBU3Ixa1MwTi9SZ0JKei85aldDaVhubzNzd2VUQU9CZ05WSFE4QkFmOEVCQU1DQVFZd0V3WURWUjBsQkF3d0NnWUlLd1lCQlFVSEF3TXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFkQmdOVkhRNEVGZ1FVMzlQcHoxWWtFWmI1cU5qcEtGV2l4aTRZWkQ4d0h3WURWUjBqQkJnd0ZvQVVXTUFlWDVGRnBXYXBlc3lRb1pNaTBDckZ4Zm93Q2dZSUtvWkl6ajBFQXdNRFp3QXdaQUl3UENzUUs0RFlpWllEUElhRGk1SEZLbmZ4WHg2QVNTVm1FUmZzeW5ZQmlYMlg2U0pSblpVODQvOURaZG5GdnZ4bUFqQk90NlFwQmxjNEovMER4dmtUQ3FwY2x2emlMNkJDQ1BuamRsSUIzUHUzQnhzUG15Z1VZN0lpMnpiZENkbGlpb3c9IgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgInJhd0J5dGVzIjogIk1JSUI5ekNDQVh5Z0F3SUJBZ0lVQUxaTkFQRmR4SFB3amVEbG9Ed3lZQ2hBTy80d0NnWUlLb1pJemowRUF3TXdLakVWTUJNR0ExVUVDaE1NYzJsbmMzUnZjbVV1WkdWMk1SRXdEd1lEVlFRREV3aHphV2R6ZEc5eVpUQWVGdzB5TVRFd01EY3hNelUyTlRsYUZ3MHpNVEV3TURVeE16VTJOVGhhTUNveEZUQVRCZ05WQkFvVERITnBaM04wYjNKbExtUmxkakVSTUE4R0ExVUVBeE1JYzJsbmMzUnZjbVV3ZGpBUUJnY3Foa2pPUFFJQkJnVXJnUVFBSWdOaUFBVDdYZUZUNHJiM1BRR3dTNElhanRMazMvT2xucGdhbmdhQmNsWXBzWUJyNWkrNHluQjA3Y2ViM0xQME9JT1pkeGV4WDY5YzVpVnV5SlJRK0h6MDV5aStVRjN1QldBbEhwaVM1c2gwK0gyR0hFN1NYcmsxRUM1bTFUcjE5TDlnZzkyall6QmhNQTRHQTFVZER3RUIvd1FFQXdJQkJqQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01CMEdBMVVkRGdRV0JCUll3QjVma1VXbFpxbDZ6SkNoa3lMUUtzWEYrakFmQmdOVkhTTUVHREFXZ0JSWXdCNWZrVVdsWnFsNnpKQ2hreUxRS3NYRitqQUtCZ2dxaGtqT1BRUURBd05wQURCbUFqRUFqMW5IZVhacCsxM05XQk5hK0VEc0RQOEcxV1dnMXRDTVdQL1dIUHFwYVZvMGpoc3dlTkZaZ1NzMGVFN3dZSTRxQWpFQTJXQjlvdDk4c0lrb0YzdlpZZGQzL1Z0V0I1YjlUTk1lYTdJeC9zdEo1VGZjTExlQUJMRTRCTkpPc1E0dm5CSEoiCiAgICAgICAgICB9CiAgICAgICAgXQogICAgICB9LAogICAgICAidmFsaWRGb3IiOiB7CiAgICAgICAgInN0YXJ0IjogIjIwMjItMDQtMTNUMjA6MDY6MTUuMDAwWiIKICAgICAgfQogICAgfQogIF0sCiAgImN0bG9ncyI6IFsKICAgIHsKICAgICAgImJhc2VVcmwiOiAiaHR0cHM6Ly9jdGZlLnNpZ3N0b3JlLmRldi90ZXN0IiwKICAgICAgImhhc2hBbGdvcml0aG0iOiAiU0hBMl8yNTYiLAogICAgICAicHVibGljS2V5IjogewogICAgICAgICJyYXdCeXRlcyI6ICJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUViZndSK1JKdWRYc2NnUkJScEtYMVhGRHkzUHl1ZER4ei9TZm5SaTFmVDhla3BmQmQyTzF1b3o3anIzWjhuS3p4QTY5RVVRK2VGQ0ZJM3pldWJQV1U3dz09IiwKICAgICAgICAia2V5RGV0YWlscyI6ICJQS0lYX0VDRFNBX1AyNTZfU0hBXzI1NiIsCiAgICAgICAgInZhbGlkRm9yIjogewogICAgICAgICAgInN0YXJ0IjogIjIwMjEtMDMtMTRUMDA6MDA6MDAuMDAwWiIsCiAgICAgICAgICAiZW5kIjogIjIwMjItMTAtMzFUMjM6NTk6NTkuOTk5WiIKICAgICAgICB9CiAgICAgIH0sCiAgICAgICJsb2dJZCI6IHsKICAgICAgICAia2V5SWQiOiAiQ0dDUzhDaFMvMmhGMGRGcko0U2NSV2NZckJZOXd6alNiZWE4SWdZMmIzST0iCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJiYXNlVXJsIjogImh0dHBzOi8vY3RmZS5zaWdzdG9yZS5kZXYvMjAyMiIsCiAgICAgICJoYXNoQWxnb3JpdGhtIjogIlNIQTJfMjU2IiwKICAgICAgInB1YmxpY0tleSI6IHsKICAgICAgICAicmF3Qnl0ZXMiOiAiTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFaVBTbEZpMENtRlRmRWpDVXFGOUh1Q0VjWVhOS0FhWWFsSUptQlo4eXllelBqVHFoeHJLQnBNbmFvY1Z0TEpCSTFlTTN1WG5RelFHQUpkSjRnczlGeXc9PSIsCiAgICAgICAgImtleURldGFpbHMiOiAiUEtJWF9FQ0RTQV9QMjU2X1NIQV8yNTYiLAogICAgICAgICJ2YWxpZEZvciI6IHsKICAgICAgICAgICJzdGFydCI6ICIyMDIyLTEwLTIwVDAwOjAwOjAwLjAwMFoiCiAgICAgICAgfQogICAgICB9LAogICAgICAibG9nSWQiOiB7CiAgICAgICAgImtleUlkIjogIjNUMHdhc2JIRVRKakdSNGNtV2MzQXFKS1hyamVQSzMvaDRweWdDOHA3bzQ9IgogICAgICB9CiAgICB9CiAgXSwKICAidGltZXN0YW1wQXV0aG9yaXRpZXMiOiBbCiAgICB7CiAgICAgICJzdWJqZWN0IjogewogICAgICAgICJvcmdhbml6YXRpb24iOiAiR2l0SHViLCBJbmMuIiwKICAgICAgICAiY29tbW9uTmFtZSI6ICJJbnRlcm5hbCBTZXJ2aWNlcyBSb290IgogICAgICB9LAogICAgICAiY2VydENoYWluIjogewogICAgICAgICJjZXJ0aWZpY2F0ZXMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJyYXdCeXRlcyI6ICJNSUlCM0RDQ0FXS2dBd0lCQWdJVWNoa05zSDM2WGEwNGIxTHFJYytxcjlEVmVjTXdDZ1lJS29aSXpqMEVBd013TWpFVk1CTUdBMVVFQ2hNTVIybDBTSFZpTENCSmJtTXVNUmt3RndZRFZRUURFeEJVVTBFZ2FXNTBaWEp0WldScFlYUmxNQjRYRFRJek1EUXhOREF3TURBd01Gb1hEVEkwTURReE16QXdNREF3TUZvd01qRVZNQk1HQTFVRUNoTU1SMmwwU0hWaUxDQkpibU11TVJrd0Z3WURWUVFERXhCVVUwRWdWR2x0WlhOMFlXMXdhVzVuTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFVUQ1Wk5iU3FZTWQ2cjhxcE9PRVg5aWJHblpUOUdzdVhPaHIvZjhVOUZKdWdCR0V4S1lwNDBPVUxTMGVyalpXN3hWOXhWNTJObkpmNU9lRHE0ZTVaS3FOV01GUXdEZ1lEVlIwUEFRSC9CQVFEQWdlQU1CTUdBMVVkSlFRTU1Bb0dDQ3NHQVFVRkJ3TUlNQXdHQTFVZEV3RUIvd1FDTUFBd0h3WURWUjBqQkJnd0ZvQVVhVzFSdWRPZ1Z0MGxlcVkwV0tZYnVQcjQ3d0F3Q2dZSUtvWkl6ajBFQXdNRGFBQXdaUUl3YlVIOUh2RDRlakNaSk9XUW5xQWxrcVVSbGx2dTlNOCtWcUxiaVJLK3pTZlpDWndzaWxqUm44TVFRUlNrWEVFNUFqRUFnK1Z4cXRvamZWZnU4RGh6emhDeDlHS0VUYkpIYjE5aVY3Mm1NS1ViREFGbXpaNmJROGI1NFpiOHRpZHk1YVdlIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgInJhd0J5dGVzIjogIk1JSUNFRENDQVpXZ0F3SUJBZ0lVWDhaTzVRWFA3dk40ZE1RNWU5c1UzbnViOE9nd0NnWUlLb1pJemowRUF3TXdPREVWTUJNR0ExVUVDaE1NUjJsMFNIVmlMQ0JKYm1NdU1SOHdIUVlEVlFRREV4WkpiblJsY201aGJDQlRaWEoyYVdObGN5QlNiMjkwTUI0WERUSXpNRFF4TkRBd01EQXdNRm9YRFRJNE1EUXhNakF3TURBd01Gb3dNakVWTUJNR0ExVUVDaE1NUjJsMFNIVmlMQ0JKYm1NdU1Sa3dGd1lEVlFRREV4QlVVMEVnYVc1MFpYSnRaV1JwWVhSbE1IWXdFQVlIS29aSXpqMENBUVlGSzRFRUFDSURZZ0FFdk1MWS9kVFZidklKWUFOQXVzekV3Sm5RRTFsbGZ0eW55TUtJTWhoNDhIbXFiVnI1eWd5YnpzTFJMVktiQldPZFoyMWFlSnorZ1ppeXRaZXRxY3lGOVdsRVI1TkVNZjZKVjdaTm9qUXB4SHE0UkhHb0dTY2VRdi9xdlRpWnhFREtvMll3WkRBT0JnTlZIUThCQWY4RUJBTUNBUVl3RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBZEJnTlZIUTRFRmdRVWFXMVJ1ZE9nVnQwbGVxWTBXS1lidVByNDd3QXdId1lEVlIwakJCZ3dGb0FVOU5ZWWxvYm5BRzRjMC9xanh5SC9scS93eitRd0NnWUlLb1pJemowRUF3TURhUUF3WmdJeEFLMUIxODV5Z0NySVlGbElzM0dqc3dqbndTTUc2TFk4d29MVmRha0tEWnhWYThmOGNxTXMxRGhjeEowKzA5dzk1UUl4QU8rdEJ6Wms3dmpVSjlpSmdENFI2WldUeFFXS3FObTc0ak85OW8rbzlzdjRGSS9TWlRaVEZ5TW4wSUpFSGRObXlBPT0iCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAicmF3Qnl0ZXMiOiAiTUlJQjlEQ0NBWHFnQXdJQkFnSVVhL0pBa2RVaks0SlV3c3F0YWlSSkdXaHFMU293Q2dZSUtvWkl6ajBFQXdNd09ERVZNQk1HQTFVRUNoTU1SMmwwU0hWaUxDQkpibU11TVI4d0hRWURWUVFERXhaSmJuUmxjbTVoYkNCVFpYSjJhV05sY3lCU2IyOTBNQjRYRFRJek1EUXhOREF3TURBd01Gb1hEVE16TURReE1UQXdNREF3TUZvd09ERVZNQk1HQTFVRUNoTU1SMmwwU0hWaUxDQkpibU11TVI4d0hRWURWUVFERXhaSmJuUmxjbTVoYkNCVFpYSjJhV05sY3lCU2IyOTBNSFl3RUFZSEtvWkl6ajBDQVFZRks0RUVBQ0lEWWdBRWY5akZBWHh6NGt4NjhBSFJNT2tGQmhmbERjTVR2emFYejR4L0ZDY1hqSi8xcUVLb24vcVBJR25hVVJza0R0eU5iTkRPcGVKVERERnF0NDhpTVBybnpweDZJWndxZW1mVUpONHhCRVpmemErcFl0L2l5b2QrOXRacjIwUlJXU3YvbzBVd1F6QU9CZ05WSFE4QkFmOEVCQU1DQVFZd0VnWURWUjBUQVFIL0JBZ3dCZ0VCL3dJQkFqQWRCZ05WSFE0RUZnUVU5TllZbG9ibkFHNGMwL3FqeHlIL2xxL3d6K1F3Q2dZSUtvWkl6ajBFQXdNRGFBQXdaUUl4QUxaTFo4QmdSWHpLeExNTU45VklsTytlNGhyQm5OQmdGN3R6N0hucm93djJOZXRaRXJJQUNLRnltQmx2V0R2dE1BSXdaTytraTZzc1ExYnNabzk4TzhtRUFmMk5aN2lpQ2dERFUwVndqZWNvNnp5ZWgwekJUczkvN2dWNkFITlE1M3hEIgogICAgICAgICAgfQogICAgICAgIF0KICAgICAgfSwKICAgICAgInZhbGlkRm9yIjogewogICAgICAgICJzdGFydCI6ICIyMDIzLTA0LTE0VDAwOjAwOjAwLjAwMFoiCiAgICAgIH0KICAgIH0KICBdCn0K","registry.npmjs.org%2Fkeys.json":"ewogICAgImtleXMiOiBbCiAgICAgICAgewogICAgICAgICAgICAia2V5SWQiOiAiU0hBMjU2OmpsM2J3c3d1ODBQampva0NnaDBvMnc1YzJVNExoUUFFNTdnajljejFrekEiLAogICAgICAgICAgICAia2V5VXNhZ2UiOiAibnBtOnNpZ25hdHVyZXMiLAogICAgICAgICAgICAicHVibGljS2V5IjogewogICAgICAgICAgICAgICAgInJhd0J5dGVzIjogIk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRTFPbGIzek1BRkZ4WEtIaUlrUU81Y0ozWWhsNWk2VVBwK0lodXRlQkpidUhjQTVVb2dLbzBFV3RsV3dXNktTYUtvVE5FWUw3SmxDUWlWbmtoQmt0VWdnPT0iLAogICAgICAgICAgICAgICAgImtleURldGFpbHMiOiAiUEtJWF9FQ0RTQV9QMjU2X1NIQV8yNTYiLAogICAgICAgICAgICAgICAgInZhbGlkRm9yIjogewogICAgICAgICAgICAgICAgICAgICJzdGFydCI6ICIxOTk5LTAxLTAxVDAwOjAwOjAwLjAwMFoiLAogICAgICAgICAgICAgICAgICAgICJlbmQiOiAiMjAyNS0wMS0yOVQwMDowMDowMC4wMDBaIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJrZXlJZCI6ICJTSEEyNTY6amwzYndzd3U4MFBqam9rQ2doMG8ydzVjMlU0TGhRQUU1N2dqOWN6MWt6QSIsCiAgICAgICAgICAgICJrZXlVc2FnZSI6ICJucG06YXR0ZXN0YXRpb25zIiwKICAgICAgICAgICAgInB1YmxpY0tleSI6IHsKICAgICAgICAgICAgICAgICJyYXdCeXRlcyI6ICJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUxT2xiM3pNQUZGeFhLSGlJa1FPNWNKM1lobDVpNlVQcCtJaHV0ZUJKYnVIY0E1VW9nS28wRVd0bFd3VzZLU2FLb1RORVlMN0psQ1FpVm5raEJrdFVnZz09IiwKICAgICAgICAgICAgICAgICJrZXlEZXRhaWxzIjogIlBLSVhfRUNEU0FfUDI1Nl9TSEFfMjU2IiwKICAgICAgICAgICAgICAgICJ2YWxpZEZvciI6IHsKICAgICAgICAgICAgICAgICAgICAic3RhcnQiOiAiMjAyMi0xMi0wMVQwMDowMDowMC4wMDBaIiwKICAgICAgICAgICAgICAgICAgICAiZW5kIjogIjIwMjUtMDEtMjlUMDA6MDA6MDAuMDAwWiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAia2V5SWQiOiAiU0hBMjU2OkRoUTh3UjVBUEJ2RkhMRi8rVGMrQVl2UE9kVHBjSURxT2h4c0JIUndDN1UiLAogICAgICAgICAgICAia2V5VXNhZ2UiOiAibnBtOnNpZ25hdHVyZXMiLAogICAgICAgICAgICAicHVibGljS2V5IjogewogICAgICAgICAgICAgICAgInJhd0J5dGVzIjogIk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRVk2WWE3VysrN2FVUHp2TVRyZXpINlljeDNjK0hPS1lDY05HeWJKWlNDSnEvZmQ3UWE4dXVBS3RkSWtVUXRRaUVLRVJoQW1FNWxNTUpoUDhPa0RPYTJnPT0iLAogICAgICAgICAgICAgICAgImtleURldGFpbHMiOiAiUEtJWF9FQ0RTQV9QMjU2X1NIQV8yNTYiLAogICAgICAgICAgICAgICAgInZhbGlkRm9yIjogewogICAgICAgICAgICAgICAgICAgICJzdGFydCI6ICIyMDI1LTAxLTEzVDAwOjAwOjAwLjAwMFoiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgImtleUlkIjogIlNIQTI1NjpEaFE4d1I1QVBCdkZITEYvK1RjK0FZdlBPZFRwY0lEcU9oeHNCSFJ3QzdVIiwKICAgICAgICAgICAgImtleVVzYWdlIjogIm5wbTphdHRlc3RhdGlvbnMiLAogICAgICAgICAgICAicHVibGljS2V5IjogewogICAgICAgICAgICAgICAgInJhd0J5dGVzIjogIk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRVk2WWE3VysrN2FVUHp2TVRyZXpINlljeDNjK0hPS1lDY05HeWJKWlNDSnEvZmQ3UWE4dXVBS3RkSWtVUXRRaUVLRVJoQW1FNWxNTUpoUDhPa0RPYTJnPT0iLAogICAgICAgICAgICAgICAgImtleURldGFpbHMiOiAiUEtJWF9FQ0RTQV9QMjU2X1NIQV8yNTYiLAogICAgICAgICAgICAgICAgInZhbGlkRm9yIjogewogICAgICAgICAgICAgICAgICAgICJzdGFydCI6ICIyMDI1LTAxLTEzVDAwOjAwOjAwLjAwMFoiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICBdCn0K"}}}});var TNe=L(I1=>{"use strict";var QNe=I1&&I1.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(I1,"__esModule",{value:!0});I1.TUFClient=void 0;var Rg=QNe(ye("fs")),sP=QNe(ye("path")),k8t=PNe(),Q8t=wL(),T8t=xNe(),LJ="targets",OJ=class{constructor(e){let r=new URL(e.mirrorURL),s=encodeURIComponent(r.host+r.pathname.replace(/\/$/,"")),a=sP.default.join(e.cachePath,s);R8t(a),F8t({cachePath:a,mirrorURL:e.mirrorURL,tufRootPath:e.rootPath,forceInit:e.forceInit}),this.updater=N8t({mirrorURL:e.mirrorURL,cachePath:a,forceCache:e.forceCache,retry:e.retry,timeout:e.timeout})}async refresh(){return this.updater.refresh()}getTarget(e){return(0,T8t.readTarget)(this.updater,e)}};I1.TUFClient=OJ;function R8t(t){let e=sP.default.join(t,LJ);Rg.default.existsSync(t)||Rg.default.mkdirSync(t,{recursive:!0}),Rg.default.existsSync(e)||Rg.default.mkdirSync(e)}function F8t({cachePath:t,mirrorURL:e,tufRootPath:r,forceInit:s}){let a=sP.default.join(t,"root.json");if(!Rg.default.existsSync(a)||s)if(r)Rg.default.copyFileSync(r,a);else{let c=kNe()[e];if(!c)throw new Q8t.TUFError({code:"TUF_INIT_CACHE_ERROR",message:`No root.json found for mirror: ${e}`});Rg.default.writeFileSync(a,Buffer.from(c["root.json"],"base64")),Object.entries(c.targets).forEach(([f,p])=>{Rg.default.writeFileSync(sP.default.join(t,LJ,f),Buffer.from(p,"base64"))})}}function N8t(t){let e={fetchTimeout:t.timeout,fetchRetry:t.retry};return new k8t.Updater({metadataBaseUrl:t.mirrorURL,targetBaseUrl:`${t.mirrorURL}/targets`,metadataDir:t.cachePath,targetDir:sP.default.join(t.cachePath,LJ),forceCache:t.forceCache,config:e})}});var wL=L(yh=>{"use strict";Object.defineProperty(yh,"__esModule",{value:!0});yh.TUFError=yh.DEFAULT_MIRROR_URL=void 0;yh.getTrustedRoot=q8t;yh.initTUF=G8t;var O8t=Rb(),L8t=fFe(),M8t=TNe();yh.DEFAULT_MIRROR_URL="https://tuf-repo-cdn.sigstore.dev";var _8t="sigstore-js",U8t={retries:2},H8t=5e3,j8t="trusted_root.json";async function q8t(t={}){let r=await RNe(t).getTarget(j8t);return O8t.TrustedRoot.fromJSON(JSON.parse(r))}async function G8t(t={}){let e=RNe(t);return e.refresh().then(()=>e)}function RNe(t){return new M8t.TUFClient({cachePath:t.cachePath||(0,L8t.appDataPath)(_8t),rootPath:t.rootPath,mirrorURL:t.mirrorURL||yh.DEFAULT_MIRROR_URL,retry:t.retry??U8t,timeout:t.timeout??H8t,forceCache:t.forceCache??!1,forceInit:t.forceInit??t.force??!1})}var W8t=NJ();Object.defineProperty(yh,"TUFError",{enumerable:!0,get:function(){return W8t.TUFError}})});var FNe=L(BL=>{"use strict";Object.defineProperty(BL,"__esModule",{value:!0});BL.DSSESignatureContent=void 0;var oP=wl(),MJ=class{constructor(e){this.env=e}compareDigest(e){return oP.crypto.bufferEqual(e,oP.crypto.digest("sha256",this.env.payload))}compareSignature(e){return oP.crypto.bufferEqual(e,this.signature)}verifySignature(e){return oP.crypto.verify(this.preAuthEncoding,e,this.signature)}get signature(){return this.env.signatures.length>0?this.env.signatures[0].sig:Buffer.from("")}get preAuthEncoding(){return oP.dsse.preAuthEncoding(this.env.payloadType,this.env.payload)}};BL.DSSESignatureContent=MJ});var NNe=L(vL=>{"use strict";Object.defineProperty(vL,"__esModule",{value:!0});vL.MessageSignatureContent=void 0;var _J=wl(),UJ=class{constructor(e,r){this.signature=e.signature,this.messageDigest=e.messageDigest.digest,this.artifact=r}compareSignature(e){return _J.crypto.bufferEqual(e,this.signature)}compareDigest(e){return _J.crypto.bufferEqual(e,this.messageDigest)}verifySignature(e){return _J.crypto.verify(this.artifact,e,this.signature)}};vL.MessageSignatureContent=UJ});var LNe=L(SL=>{"use strict";Object.defineProperty(SL,"__esModule",{value:!0});SL.toSignedEntity=K8t;SL.signatureContent=ONe;var HJ=wl(),Y8t=FNe(),V8t=NNe();function K8t(t,e){let{tlogEntries:r,timestampVerificationData:s}=t.verificationMaterial,a=[];for(let n of r)a.push({$case:"transparency-log",tlogEntry:n});for(let n of s?.rfc3161Timestamps??[])a.push({$case:"timestamp-authority",timestamp:HJ.RFC3161Timestamp.parse(n.signedTimestamp)});return{signature:ONe(t,e),key:J8t(t),tlogEntries:r,timestamps:a}}function ONe(t,e){switch(t.content.$case){case"dsseEnvelope":return new Y8t.DSSESignatureContent(t.content.dsseEnvelope);case"messageSignature":return new V8t.MessageSignatureContent(t.content.messageSignature,e)}}function J8t(t){switch(t.verificationMaterial.content.$case){case"publicKey":return{$case:"public-key",hint:t.verificationMaterial.content.publicKey.hint};case"x509CertificateChain":return{$case:"certificate",certificate:HJ.X509Certificate.parse(t.verificationMaterial.content.x509CertificateChain.certificates[0].rawBytes)};case"certificate":return{$case:"certificate",certificate:HJ.X509Certificate.parse(t.verificationMaterial.content.certificate.rawBytes)}}}});var Co=L(C1=>{"use strict";Object.defineProperty(C1,"__esModule",{value:!0});C1.PolicyError=C1.VerificationError=void 0;var DL=class extends Error{constructor({code:e,message:r,cause:s}){super(r),this.code=e,this.cause=s,this.name=this.constructor.name}},jJ=class extends DL{};C1.VerificationError=jJ;var qJ=class extends DL{};C1.PolicyError=qJ});var MNe=L(bL=>{"use strict";Object.defineProperty(bL,"__esModule",{value:!0});bL.filterCertAuthorities=z8t;bL.filterTLogAuthorities=Z8t;function z8t(t,e){return t.filter(r=>r.validFor.start<=e.start&&r.validFor.end>=e.end)}function Z8t(t,e){return t.filter(r=>e.logID&&!r.logID.equals(e.logID)?!1:r.validFor.start<=e.targetDate&&e.targetDate<=r.validFor.end)}});var hy=L(py=>{"use strict";Object.defineProperty(py,"__esModule",{value:!0});py.filterTLogAuthorities=py.filterCertAuthorities=void 0;py.toTrustMaterial=$8t;var GJ=wl(),aP=Rb(),X8t=Co(),WJ=new Date(0),YJ=new Date(864e13),HNe=MNe();Object.defineProperty(py,"filterCertAuthorities",{enumerable:!0,get:function(){return HNe.filterCertAuthorities}});Object.defineProperty(py,"filterTLogAuthorities",{enumerable:!0,get:function(){return HNe.filterTLogAuthorities}});function $8t(t,e){let r=typeof e=="function"?e:eHt(e);return{certificateAuthorities:t.certificateAuthorities.map(UNe),timestampAuthorities:t.timestampAuthorities.map(UNe),tlogs:t.tlogs.map(_Ne),ctlogs:t.ctlogs.map(_Ne),publicKey:r}}function _Ne(t){let e=t.publicKey.keyDetails,r=e===aP.PublicKeyDetails.PKCS1_RSA_PKCS1V5||e===aP.PublicKeyDetails.PKIX_RSA_PKCS1V5||e===aP.PublicKeyDetails.PKIX_RSA_PKCS1V15_2048_SHA256||e===aP.PublicKeyDetails.PKIX_RSA_PKCS1V15_3072_SHA256||e===aP.PublicKeyDetails.PKIX_RSA_PKCS1V15_4096_SHA256?"pkcs1":"spki";return{logID:t.logId.keyId,publicKey:GJ.crypto.createPublicKey(t.publicKey.rawBytes,r),validFor:{start:t.publicKey.validFor?.start||WJ,end:t.publicKey.validFor?.end||YJ}}}function UNe(t){return{certChain:t.certChain.certificates.map(e=>GJ.X509Certificate.parse(e.rawBytes)),validFor:{start:t.validFor?.start||WJ,end:t.validFor?.end||YJ}}}function eHt(t){return e=>{let r=(t||{})[e];if(!r)throw new X8t.VerificationError({code:"PUBLIC_KEY_ERROR",message:`key not found: ${e}`});return{publicKey:GJ.crypto.createPublicKey(r.rawBytes),validFor:s=>(r.validFor?.start||WJ)<=s&&(r.validFor?.end||YJ)>=s}}}});var VJ=L(lP=>{"use strict";Object.defineProperty(lP,"__esModule",{value:!0});lP.CertificateChainVerifier=void 0;lP.verifyCertificateChain=rHt;var gy=Co(),tHt=hy();function rHt(t,e){let r=(0,tHt.filterCertAuthorities)(e,{start:t.notBefore,end:t.notAfter}),s;for(let a of r)try{return new PL({trustedCerts:a.certChain,untrustedCert:t}).verify()}catch(n){s=n}throw new gy.VerificationError({code:"CERTIFICATE_ERROR",message:"Failed to verify certificate chain",cause:s})}var PL=class{constructor(e){this.untrustedCert=e.untrustedCert,this.trustedCerts=e.trustedCerts,this.localCerts=nHt([...e.trustedCerts,e.untrustedCert])}verify(){let e=this.sort();return this.checkPath(e),e}sort(){let e=this.untrustedCert,r=this.buildPaths(e);if(r=r.filter(a=>a.some(n=>this.trustedCerts.includes(n))),r.length===0)throw new gy.VerificationError({code:"CERTIFICATE_ERROR",message:"no trusted certificate path found"});let s=r.reduce((a,n)=>a.length{if(s&&a.extSubjectKeyID){a.extSubjectKeyID.keyIdentifier.equals(s)&&r.push(a);return}a.subject.equals(e.issuer)&&r.push(a)}),r=r.filter(a=>{try{return e.verify(a)}catch{return!1}}),r)}checkPath(e){if(e.length<1)throw new gy.VerificationError({code:"CERTIFICATE_ERROR",message:"certificate chain must contain at least one certificate"});if(!e.slice(1).every(s=>s.isCA))throw new gy.VerificationError({code:"CERTIFICATE_ERROR",message:"intermediate certificate is not a CA"});for(let s=e.length-2;s>=0;s--)if(!e[s].issuer.equals(e[s+1].subject))throw new gy.VerificationError({code:"CERTIFICATE_ERROR",message:"incorrect certificate name chaining"});for(let s=0;s{"use strict";Object.defineProperty(KJ,"__esModule",{value:!0});KJ.verifySCTs=oHt;var xL=wl(),iHt=Co(),sHt=hy();function oHt(t,e,r){let s,a=t.clone();for(let p=0;p{if(!(0,sHt.filterTLogAuthorities)(r,{logID:p.logID,targetDate:p.datetime}).some(C=>p.verify(n.buffer,C.publicKey)))throw new iHt.VerificationError({code:"CERTIFICATE_ERROR",message:"SCT verification failed"});return p.logID})}});var GNe=L(kL=>{"use strict";Object.defineProperty(kL,"__esModule",{value:!0});kL.verifyPublicKey=AHt;kL.verifyCertificate=pHt;var aHt=wl(),qNe=Co(),lHt=VJ(),cHt=jNe(),uHt="1.3.6.1.4.1.57264.1.1",fHt="1.3.6.1.4.1.57264.1.8";function AHt(t,e,r){let s=r.publicKey(t);return e.forEach(a=>{if(!s.validFor(a))throw new qNe.VerificationError({code:"PUBLIC_KEY_ERROR",message:`Public key is not valid for timestamp: ${a.toISOString()}`})}),{key:s.publicKey}}function pHt(t,e,r){let s=(0,lHt.verifyCertificateChain)(t,r.certificateAuthorities);if(!e.every(n=>s.every(c=>c.validForDate(n))))throw new qNe.VerificationError({code:"CERTIFICATE_ERROR",message:"certificate is not valid or expired at the specified date"});return{scts:(0,cHt.verifySCTs)(s[0],s[1],r.ctlogs),signer:hHt(s[0])}}function hHt(t){let e,r=t.extension(fHt);r?e=r.valueObj.subs?.[0]?.value.toString("ascii"):e=t.extension(uHt)?.value.toString("ascii");let s={extensions:{issuer:e},subjectAlternativeName:t.subjectAltName};return{key:aHt.crypto.createPublicKey(t.publicKey),identity:s}}});var YNe=L(QL=>{"use strict";Object.defineProperty(QL,"__esModule",{value:!0});QL.verifySubjectAlternativeName=gHt;QL.verifyExtensions=dHt;var WNe=Co();function gHt(t,e){if(e===void 0||!e.match(t))throw new WNe.PolicyError({code:"UNTRUSTED_SIGNER_ERROR",message:`certificate identity error - expected ${t}, got ${e}`})}function dHt(t,e={}){let r;for(r in t)if(e[r]!==t[r])throw new WNe.PolicyError({code:"UNTRUSTED_SIGNER_ERROR",message:`invalid certificate extension - expected ${r}=${t[r]}, got ${r}=${e[r]}`})}});var VNe=L($J=>{"use strict";Object.defineProperty($J,"__esModule",{value:!0});$J.verifyCheckpoint=EHt;var zJ=wl(),w1=Co(),mHt=hy(),JJ=` + +`,yHt=/\u2014 (\S+) (\S+)\n/g;function EHt(t,e){let r=(0,mHt.filterTLogAuthorities)(e,{targetDate:new Date(Number(t.integratedTime)*1e3)}),s=t.inclusionProof,a=ZJ.fromString(s.checkpoint.envelope),n=XJ.fromString(a.note);if(!IHt(a,r))throw new w1.VerificationError({code:"TLOG_INCLUSION_PROOF_ERROR",message:"invalid checkpoint signature"});if(!zJ.crypto.bufferEqual(n.logHash,s.rootHash))throw new w1.VerificationError({code:"TLOG_INCLUSION_PROOF_ERROR",message:"root hash mismatch"})}function IHt(t,e){let r=Buffer.from(t.note,"utf-8");return t.signatures.every(s=>{let a=e.find(n=>zJ.crypto.bufferEqual(n.logID.subarray(0,4),s.keyHint));return a?zJ.crypto.verify(r,a.publicKey,s.signature):!1})}var ZJ=class t{constructor(e,r){this.note=e,this.signatures=r}static fromString(e){if(!e.includes(JJ))throw new w1.VerificationError({code:"TLOG_INCLUSION_PROOF_ERROR",message:"missing checkpoint separator"});let r=e.indexOf(JJ),s=e.slice(0,r+1),n=e.slice(r+JJ.length).matchAll(yHt),c=Array.from(n,f=>{let[,p,h]=f,E=Buffer.from(h,"base64");if(E.length<5)throw new w1.VerificationError({code:"TLOG_INCLUSION_PROOF_ERROR",message:"malformed checkpoint signature"});return{name:p,keyHint:E.subarray(0,4),signature:E.subarray(4)}});if(c.length===0)throw new w1.VerificationError({code:"TLOG_INCLUSION_PROOF_ERROR",message:"no signatures found in checkpoint"});return new t(s,c)}},XJ=class t{constructor(e,r,s,a){this.origin=e,this.logSize=r,this.logHash=s,this.rest=a}static fromString(e){let r=e.trimEnd().split(` +`);if(r.length<3)throw new w1.VerificationError({code:"TLOG_INCLUSION_PROOF_ERROR",message:"too few lines in checkpoint header"});let s=r[0],a=BigInt(r[1]),n=Buffer.from(r[2],"base64"),c=r.slice(3);return new t(s,a,n,c)}}});var KNe=L(nz=>{"use strict";Object.defineProperty(nz,"__esModule",{value:!0});nz.verifyMerkleInclusion=BHt;var rz=wl(),ez=Co(),CHt=Buffer.from([0]),wHt=Buffer.from([1]);function BHt(t){let e=t.inclusionProof,r=BigInt(e.logIndex),s=BigInt(e.treeSize);if(r<0n||r>=s)throw new ez.VerificationError({code:"TLOG_INCLUSION_PROOF_ERROR",message:`invalid index: ${r}`});let{inner:a,border:n}=vHt(r,s);if(e.hashes.length!==a+n)throw new ez.VerificationError({code:"TLOG_INCLUSION_PROOF_ERROR",message:"invalid hash count"});let c=e.hashes.slice(0,a),f=e.hashes.slice(a),p=kHt(t.canonicalizedBody),h=DHt(SHt(p,c,r),f);if(!rz.crypto.bufferEqual(h,e.rootHash))throw new ez.VerificationError({code:"TLOG_INCLUSION_PROOF_ERROR",message:"calculated root hash does not match inclusion proof"})}function vHt(t,e){let r=bHt(t,e),s=PHt(t>>BigInt(r));return{inner:r,border:s}}function SHt(t,e,r){return e.reduce((s,a,n)=>r>>BigInt(n)&BigInt(1)?tz(a,s):tz(s,a),t)}function DHt(t,e){return e.reduce((r,s)=>tz(s,r),t)}function bHt(t,e){return xHt(t^e-BigInt(1))}function PHt(t){return t.toString(2).split("1").length-1}function xHt(t){return t===0n?0:t.toString(2).length}function tz(t,e){return rz.crypto.digest("sha256",wHt,t,e)}function kHt(t){return rz.crypto.digest("sha256",CHt,t)}});var zNe=L(iz=>{"use strict";Object.defineProperty(iz,"__esModule",{value:!0});iz.verifyTLogSET=RHt;var JNe=wl(),QHt=Co(),THt=hy();function RHt(t,e){if(!(0,THt.filterTLogAuthorities)(e,{logID:t.logId.keyId,targetDate:new Date(Number(t.integratedTime)*1e3)}).some(a=>{let n=FHt(t),c=Buffer.from(JNe.json.canonicalize(n),"utf8"),f=t.inclusionPromise.signedEntryTimestamp;return JNe.crypto.verify(c,a.publicKey,f)}))throw new QHt.VerificationError({code:"TLOG_INCLUSION_PROMISE_ERROR",message:"inclusion promise could not be verified"})}function FHt(t){let{integratedTime:e,logIndex:r,logId:s,canonicalizedBody:a}=t;return{body:a.toString("base64"),integratedTime:Number(e),logIndex:Number(r),logID:s.keyId.toString("hex")}}});var ZNe=L(az=>{"use strict";Object.defineProperty(az,"__esModule",{value:!0});az.verifyRFC3161Timestamp=LHt;var sz=wl(),oz=Co(),NHt=VJ(),OHt=hy();function LHt(t,e,r){let s=t.signingTime;if(r=(0,OHt.filterCertAuthorities)(r,{start:s,end:s}),r=_Ht(r,{serialNumber:t.signerSerialNumber,issuer:t.signerIssuer}),!r.some(n=>{try{return MHt(t,e,n),!0}catch{return!1}}))throw new oz.VerificationError({code:"TIMESTAMP_ERROR",message:"timestamp could not be verified"})}function MHt(t,e,r){let[s,...a]=r.certChain,n=sz.crypto.createPublicKey(s.publicKey),c=t.signingTime;try{new NHt.CertificateChainVerifier({untrustedCert:s,trustedCerts:a}).verify()}catch{throw new oz.VerificationError({code:"TIMESTAMP_ERROR",message:"invalid certificate chain"})}if(!r.certChain.every(p=>p.validForDate(c)))throw new oz.VerificationError({code:"TIMESTAMP_ERROR",message:"timestamp was signed with an expired certificate"});t.verify(e,n)}function _Ht(t,e){return t.filter(r=>r.certChain.length>0&&sz.crypto.bufferEqual(r.certChain[0].serialNumber,e.serialNumber)&&sz.crypto.bufferEqual(r.certChain[0].issuer,e.issuer))}});var XNe=L(TL=>{"use strict";Object.defineProperty(TL,"__esModule",{value:!0});TL.verifyTSATimestamp=WHt;TL.verifyTLogTimestamp=YHt;var UHt=Co(),HHt=VNe(),jHt=KNe(),qHt=zNe(),GHt=ZNe();function WHt(t,e,r){return(0,GHt.verifyRFC3161Timestamp)(t,e,r),{type:"timestamp-authority",logID:t.signerSerialNumber,timestamp:t.signingTime}}function YHt(t,e){let r=!1;if(VHt(t)&&((0,qHt.verifyTLogSET)(t,e),r=!0),KHt(t)&&((0,jHt.verifyMerkleInclusion)(t),(0,HHt.verifyCheckpoint)(t,e),r=!0),!r)throw new UHt.VerificationError({code:"TLOG_MISSING_INCLUSION_ERROR",message:"inclusion could not be verified"});return{type:"transparency-log",logID:t.logId.keyId,timestamp:new Date(Number(t.integratedTime)*1e3)}}function VHt(t){return t.inclusionPromise!==void 0}function KHt(t){return t.inclusionProof!==void 0}});var $Ne=L(lz=>{"use strict";Object.defineProperty(lz,"__esModule",{value:!0});lz.verifyDSSETLogBody=JHt;var RL=Co();function JHt(t,e){switch(t.apiVersion){case"0.0.1":return zHt(t,e);default:throw new RL.VerificationError({code:"TLOG_BODY_ERROR",message:`unsupported dsse version: ${t.apiVersion}`})}}function zHt(t,e){if(t.spec.signatures?.length!==1)throw new RL.VerificationError({code:"TLOG_BODY_ERROR",message:"signature count mismatch"});let r=t.spec.signatures[0].signature;if(!e.compareSignature(Buffer.from(r,"base64")))throw new RL.VerificationError({code:"TLOG_BODY_ERROR",message:"tlog entry signature mismatch"});let s=t.spec.payloadHash?.value||"";if(!e.compareDigest(Buffer.from(s,"hex")))throw new RL.VerificationError({code:"TLOG_BODY_ERROR",message:"DSSE payload hash mismatch"})}});var eOe=L(uz=>{"use strict";Object.defineProperty(uz,"__esModule",{value:!0});uz.verifyHashedRekordTLogBody=ZHt;var cz=Co();function ZHt(t,e){switch(t.apiVersion){case"0.0.1":return XHt(t,e);default:throw new cz.VerificationError({code:"TLOG_BODY_ERROR",message:`unsupported hashedrekord version: ${t.apiVersion}`})}}function XHt(t,e){let r=t.spec.signature.content||"";if(!e.compareSignature(Buffer.from(r,"base64")))throw new cz.VerificationError({code:"TLOG_BODY_ERROR",message:"signature mismatch"});let s=t.spec.data.hash?.value||"";if(!e.compareDigest(Buffer.from(s,"hex")))throw new cz.VerificationError({code:"TLOG_BODY_ERROR",message:"digest mismatch"})}});var tOe=L(fz=>{"use strict";Object.defineProperty(fz,"__esModule",{value:!0});fz.verifyIntotoTLogBody=$Ht;var FL=Co();function $Ht(t,e){switch(t.apiVersion){case"0.0.2":return ejt(t,e);default:throw new FL.VerificationError({code:"TLOG_BODY_ERROR",message:`unsupported intoto version: ${t.apiVersion}`})}}function ejt(t,e){if(t.spec.content.envelope.signatures?.length!==1)throw new FL.VerificationError({code:"TLOG_BODY_ERROR",message:"signature count mismatch"});let r=tjt(t.spec.content.envelope.signatures[0].sig);if(!e.compareSignature(Buffer.from(r,"base64")))throw new FL.VerificationError({code:"TLOG_BODY_ERROR",message:"tlog entry signature mismatch"});let s=t.spec.content.payloadHash?.value||"";if(!e.compareDigest(Buffer.from(s,"hex")))throw new FL.VerificationError({code:"TLOG_BODY_ERROR",message:"DSSE payload hash mismatch"})}function tjt(t){return Buffer.from(t,"base64").toString("utf-8")}});var nOe=L(Az=>{"use strict";Object.defineProperty(Az,"__esModule",{value:!0});Az.verifyTLogBody=sjt;var rOe=Co(),rjt=$Ne(),njt=eOe(),ijt=tOe();function sjt(t,e){let{kind:r,version:s}=t.kindVersion,a=JSON.parse(t.canonicalizedBody.toString("utf8"));if(r!==a.kind||s!==a.apiVersion)throw new rOe.VerificationError({code:"TLOG_BODY_ERROR",message:`kind/version mismatch - expected: ${r}/${s}, received: ${a.kind}/${a.apiVersion}`});switch(a.kind){case"dsse":return(0,rjt.verifyDSSETLogBody)(a,e);case"intoto":return(0,ijt.verifyIntotoTLogBody)(a,e);case"hashedrekord":return(0,njt.verifyHashedRekordTLogBody)(a,e);default:throw new rOe.VerificationError({code:"TLOG_BODY_ERROR",message:`unsupported kind: ${r}`})}}});var lOe=L(NL=>{"use strict";Object.defineProperty(NL,"__esModule",{value:!0});NL.Verifier=void 0;var ojt=ye("util"),B1=Co(),iOe=GNe(),sOe=YNe(),oOe=XNe(),ajt=nOe(),pz=class{constructor(e,r={}){this.trustMaterial=e,this.options={ctlogThreshold:r.ctlogThreshold??1,tlogThreshold:r.tlogThreshold??1,tsaThreshold:r.tsaThreshold??0}}verify(e,r){let s=this.verifyTimestamps(e),a=this.verifySigningKey(e,s);return this.verifyTLogs(e),this.verifySignature(e,a),r&&this.verifyPolicy(r,a.identity||{}),a}verifyTimestamps(e){let r=0,s=0,a=e.timestamps.map(n=>{switch(n.$case){case"timestamp-authority":return s++,(0,oOe.verifyTSATimestamp)(n.timestamp,e.signature.signature,this.trustMaterial.timestampAuthorities);case"transparency-log":return r++,(0,oOe.verifyTLogTimestamp)(n.tlogEntry,this.trustMaterial.tlogs)}});if(aOe(a))throw new B1.VerificationError({code:"TIMESTAMP_ERROR",message:"duplicate timestamp"});if(rn.timestamp)}verifySigningKey({key:e},r){switch(e.$case){case"public-key":return(0,iOe.verifyPublicKey)(e.hint,r,this.trustMaterial);case"certificate":{let s=(0,iOe.verifyCertificate)(e.certificate,r,this.trustMaterial);if(aOe(s.scts))throw new B1.VerificationError({code:"CERTIFICATE_ERROR",message:"duplicate SCT"});if(s.scts.length(0,ajt.verifyTLogBody)(s,e))}verifySignature(e,r){if(!e.signature.verifySignature(r.key))throw new B1.VerificationError({code:"SIGNATURE_ERROR",message:"signature verification failed"})}verifyPolicy(e,r){e.subjectAlternativeName&&(0,sOe.verifySubjectAlternativeName)(e.subjectAlternativeName,r.subjectAlternativeName),e.extensions&&(0,sOe.verifyExtensions)(e.extensions,r.extensions)}};NL.Verifier=pz;function aOe(t){for(let e=0;e{"use strict";Object.defineProperty(ou,"__esModule",{value:!0});ou.Verifier=ou.toTrustMaterial=ou.VerificationError=ou.PolicyError=ou.toSignedEntity=void 0;var ljt=LNe();Object.defineProperty(ou,"toSignedEntity",{enumerable:!0,get:function(){return ljt.toSignedEntity}});var cOe=Co();Object.defineProperty(ou,"PolicyError",{enumerable:!0,get:function(){return cOe.PolicyError}});Object.defineProperty(ou,"VerificationError",{enumerable:!0,get:function(){return cOe.VerificationError}});var cjt=hy();Object.defineProperty(ou,"toTrustMaterial",{enumerable:!0,get:function(){return cjt.toTrustMaterial}});var ujt=lOe();Object.defineProperty(ou,"Verifier",{enumerable:!0,get:function(){return ujt.Verifier}})});var uOe=L(Na=>{"use strict";Object.defineProperty(Na,"__esModule",{value:!0});Na.DEFAULT_TIMEOUT=Na.DEFAULT_RETRY=void 0;Na.createBundleBuilder=pjt;Na.createKeyFinder=hjt;Na.createVerificationPolicy=gjt;var fjt=wl(),v1=SK(),Ajt=OL();Na.DEFAULT_RETRY={retries:2};Na.DEFAULT_TIMEOUT=5e3;function pjt(t,e){let r={signer:djt(e),witnesses:yjt(e)};switch(t){case"messageSignature":return new v1.MessageSignatureBundleBuilder(r);case"dsseEnvelope":return new v1.DSSEBundleBuilder({...r,certificateChain:e.legacyCompatibility})}}function hjt(t){return e=>{let r=t(e);if(!r)throw new Ajt.VerificationError({code:"PUBLIC_KEY_ERROR",message:`key not found: ${e}`});return{publicKey:fjt.crypto.createPublicKey(r),validFor:()=>!0}}}function gjt(t){let e={},r=t.certificateIdentityEmail||t.certificateIdentityURI;return r&&(e.subjectAlternativeName=r),t.certificateIssuer&&(e.extensions={issuer:t.certificateIssuer}),e}function djt(t){return new v1.FulcioSigner({fulcioBaseURL:t.fulcioURL,identityProvider:t.identityProvider||mjt(t),retry:t.retry??Na.DEFAULT_RETRY,timeout:t.timeout??Na.DEFAULT_TIMEOUT})}function mjt(t){let e=t.identityToken;return e?{getToken:()=>Promise.resolve(e)}:new v1.CIContextProvider("sigstore")}function yjt(t){let e=[];return Ejt(t)&&e.push(new v1.RekorWitness({rekorBaseURL:t.rekorURL,entryType:t.legacyCompatibility?"intoto":"dsse",fetchOnConflict:!1,retry:t.retry??Na.DEFAULT_RETRY,timeout:t.timeout??Na.DEFAULT_TIMEOUT})),Ijt(t)&&e.push(new v1.TSAWitness({tsaBaseURL:t.tsaServerURL,retry:t.retry??Na.DEFAULT_RETRY,timeout:t.timeout??Na.DEFAULT_TIMEOUT})),e}function Ejt(t){return t.tlogUpload!==!1}function Ijt(t){return t.tsaServerURL!==void 0}});var pOe=L(au=>{"use strict";var Cjt=au&&au.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(e,r);(!a||("get"in a?!e.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,s,a)}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),wjt=au&&au.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),fOe=au&&au.__importStar||function(){var t=function(e){return t=Object.getOwnPropertyNames||function(r){var s=[];for(var a in r)Object.prototype.hasOwnProperty.call(r,a)&&(s[s.length]=a);return s},t(e)};return function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var s=t(e),a=0;aa.verify(t,s))}async function AOe(t={}){let e=await Bjt.getTrustedRoot({mirrorURL:t.tufMirrorURL,rootPath:t.tufRootPath,cachePath:t.tufCachePath,forceCache:t.tufForceCache,retry:t.retry??S1.DEFAULT_RETRY,timeout:t.timeout??S1.DEFAULT_TIMEOUT}),r=t.keySelector?S1.createKeyFinder(t.keySelector):void 0,s=(0,hz.toTrustMaterial)(e,r),a={ctlogThreshold:t.ctLogThreshold,tlogThreshold:t.tlogThreshold},n=new hz.Verifier(s,a),c=S1.createVerificationPolicy(t);return{verify:(f,p)=>{let h=(0,gz.bundleFromJSON)(f),E=(0,hz.toSignedEntity)(h,p);n.verify(E,c)}}}});var gOe=L(Fi=>{"use strict";Object.defineProperty(Fi,"__esModule",{value:!0});Fi.verify=Fi.sign=Fi.createVerifier=Fi.attest=Fi.VerificationError=Fi.PolicyError=Fi.TUFError=Fi.InternalError=Fi.DEFAULT_REKOR_URL=Fi.DEFAULT_FULCIO_URL=Fi.ValidationError=void 0;var bjt=Nb();Object.defineProperty(Fi,"ValidationError",{enumerable:!0,get:function(){return bjt.ValidationError}});var dz=SK();Object.defineProperty(Fi,"DEFAULT_FULCIO_URL",{enumerable:!0,get:function(){return dz.DEFAULT_FULCIO_URL}});Object.defineProperty(Fi,"DEFAULT_REKOR_URL",{enumerable:!0,get:function(){return dz.DEFAULT_REKOR_URL}});Object.defineProperty(Fi,"InternalError",{enumerable:!0,get:function(){return dz.InternalError}});var Pjt=wL();Object.defineProperty(Fi,"TUFError",{enumerable:!0,get:function(){return Pjt.TUFError}});var hOe=OL();Object.defineProperty(Fi,"PolicyError",{enumerable:!0,get:function(){return hOe.PolicyError}});Object.defineProperty(Fi,"VerificationError",{enumerable:!0,get:function(){return hOe.VerificationError}});var LL=pOe();Object.defineProperty(Fi,"attest",{enumerable:!0,get:function(){return LL.attest}});Object.defineProperty(Fi,"createVerifier",{enumerable:!0,get:function(){return LL.createVerifier}});Object.defineProperty(Fi,"sign",{enumerable:!0,get:function(){return LL.sign}});Object.defineProperty(Fi,"verify",{enumerable:!0,get:function(){return LL.verify}})});var GOe=L((xSr,qOe)=>{var M6t=t3();function _6t(t){return M6t(t)?void 0:t}qOe.exports=_6t});var YOe=L((kSr,WOe)=>{var U6t=RT(),H6t=x5(),j6t=R5(),q6t=wm(),G6t=Jd(),W6t=GOe(),Y6t=BG(),V6t=P5(),K6t=1,J6t=2,z6t=4,Z6t=Y6t(function(t,e){var r={};if(t==null)return r;var s=!1;e=U6t(e,function(n){return n=q6t(n,t),s||(s=n.length>1),n}),G6t(t,V6t(t),r),s&&(r=H6t(r,K6t|J6t|z6t,W6t));for(var a=e.length;a--;)j6t(r,e[a]);return r});WOe.exports=Z6t});bt();Ve();bt();var ZOe=ye("child_process"),XOe=et(Nd());Wt();var tC=new Map([]);var iS={};Vt(iS,{BaseCommand:()=>ut,WorkspaceRequiredError:()=>ar,getCli:()=>cwe,getDynamicLibs:()=>lwe,getPluginConfiguration:()=>nC,openWorkspace:()=>rC,pluginCommands:()=>tC,runExit:()=>zR});Wt();var ut=class extends ot{constructor(){super(...arguments);this.cwd=ge.String("--cwd",{hidden:!0})}validateAndExecute(){if(typeof this.cwd<"u")throw new nt("The --cwd option is ambiguous when used anywhere else than the very first parameter provided in the command line, before even the command path");return super.validateAndExecute()}};Ve();bt();Wt();var ar=class extends nt{constructor(e,r){let s=K.relative(e,r),a=K.join(e,Ht.fileName);super(`This command can only be run from within a workspace of your project (${s} isn't a workspace of ${a}).`)}};Ve();bt();rA();Bc();bv();Wt();var zwt=et(fi());Ul();var lwe=()=>new Map([["@yarnpkg/cli",iS],["@yarnpkg/core",nS],["@yarnpkg/fslib",q2],["@yarnpkg/libzip",Sv],["@yarnpkg/parsers",Z2],["@yarnpkg/shell",Qv],["clipanion",cB],["semver",zwt],["typanion",Ia]]);Ve();async function rC(t,e){let{project:r,workspace:s}=await Tt.find(t,e);if(!s)throw new ar(r.cwd,e);return s}Ve();bt();rA();Bc();bv();Wt();var oqt=et(fi());Ul();var $5={};Vt($5,{AddCommand:()=>aC,BinCommand:()=>lC,CacheCleanCommand:()=>cC,ClipanionCommand:()=>gC,ConfigCommand:()=>pC,ConfigGetCommand:()=>uC,ConfigSetCommand:()=>fC,ConfigUnsetCommand:()=>AC,DedupeCommand:()=>hC,EntryCommand:()=>mC,ExecCommand:()=>EC,ExplainCommand:()=>wC,ExplainPeerRequirementsCommand:()=>IC,HelpCommand:()=>dC,InfoCommand:()=>BC,LinkCommand:()=>SC,NodeCommand:()=>DC,PluginCheckCommand:()=>bC,PluginImportCommand:()=>kC,PluginImportSourcesCommand:()=>QC,PluginListCommand:()=>PC,PluginRemoveCommand:()=>TC,PluginRuntimeCommand:()=>RC,RebuildCommand:()=>FC,RemoveCommand:()=>NC,RunCommand:()=>LC,RunIndexCommand:()=>OC,SetResolutionCommand:()=>MC,SetVersionCommand:()=>CC,SetVersionSourcesCommand:()=>xC,UnlinkCommand:()=>_C,UpCommand:()=>UC,VersionCommand:()=>yC,WhyCommand:()=>HC,WorkspaceCommand:()=>YC,WorkspacesListCommand:()=>WC,YarnCommand:()=>vC,dedupeUtils:()=>oF,default:()=>WSt,suggestUtils:()=>Xu});var UBe=et(Nd());Ve();Ve();Ve();Wt();var z1e=et(lS());Ul();var Xu={};Vt(Xu,{Modifier:()=>B5,Strategy:()=>nF,Target:()=>cS,WorkspaceModifier:()=>W1e,applyModifier:()=>d2t,extractDescriptorFromPath:()=>v5,extractRangeModifier:()=>Y1e,fetchDescriptorFrom:()=>S5,findProjectDescriptors:()=>J1e,getModifier:()=>uS,getSuggestedDescriptors:()=>fS,makeWorkspaceDescriptor:()=>K1e,toWorkspaceModifier:()=>V1e});Ve();Ve();bt();var w5=et(fi()),h2t="workspace:",cS=(s=>(s.REGULAR="dependencies",s.DEVELOPMENT="devDependencies",s.PEER="peerDependencies",s))(cS||{}),B5=(s=>(s.CARET="^",s.TILDE="~",s.EXACT="",s))(B5||{}),W1e=(s=>(s.CARET="^",s.TILDE="~",s.EXACT="*",s))(W1e||{}),nF=(n=>(n.KEEP="keep",n.REUSE="reuse",n.PROJECT="project",n.LATEST="latest",n.CACHE="cache",n))(nF||{});function uS(t,e){return t.exact?"":t.caret?"^":t.tilde?"~":e.configuration.get("defaultSemverRangePrefix")}var g2t=/^([\^~]?)[0-9]+(?:\.[0-9]+){0,2}(?:-\S+)?$/;function Y1e(t,{project:e}){let r=t.match(g2t);return r?r[1]:e.configuration.get("defaultSemverRangePrefix")}function d2t(t,e){let{protocol:r,source:s,params:a,selector:n}=q.parseRange(t.range);return w5.default.valid(n)&&(n=`${e}${t.range}`),q.makeDescriptor(t,q.makeRange({protocol:r,source:s,params:a,selector:n}))}function V1e(t){switch(t){case"^":return"^";case"~":return"~";case"":return"*";default:throw new Error(`Assertion failed: Unknown modifier: "${t}"`)}}function K1e(t,e){return q.makeDescriptor(t.anchoredDescriptor,`${h2t}${V1e(e)}`)}async function J1e(t,{project:e,target:r}){let s=new Map,a=n=>{let c=s.get(n.descriptorHash);return c||s.set(n.descriptorHash,c={descriptor:n,locators:[]}),c};for(let n of e.workspaces)if(r==="peerDependencies"){let c=n.manifest.peerDependencies.get(t.identHash);c!==void 0&&a(c).locators.push(n.anchoredLocator)}else{let c=n.manifest.dependencies.get(t.identHash),f=n.manifest.devDependencies.get(t.identHash);r==="devDependencies"?f!==void 0?a(f).locators.push(n.anchoredLocator):c!==void 0&&a(c).locators.push(n.anchoredLocator):c!==void 0?a(c).locators.push(n.anchoredLocator):f!==void 0&&a(f).locators.push(n.anchoredLocator)}return s}async function v5(t,{cwd:e,workspace:r}){return await y2t(async s=>{K.isAbsolute(t)||(t=K.relative(r.cwd,K.resolve(e,t)),t.match(/^\.{0,2}\//)||(t=`./${t}`));let{project:a}=r,n=await S5(q.makeIdent(null,"archive"),t,{project:r.project,cache:s,workspace:r});if(!n)throw new Error("Assertion failed: The descriptor should have been found");let c=new Wi,f=a.configuration.makeResolver(),p=a.configuration.makeFetcher(),h={checksums:a.storedChecksums,project:a,cache:s,fetcher:p,report:c,resolver:f},E=f.bindDescriptor(n,r.anchoredLocator,h),C=q.convertDescriptorToLocator(E),S=await p.fetch(C,h),P=await Ht.find(S.prefixPath,{baseFs:S.packageFs});if(!P.name)throw new Error("Target path doesn't have a name");return q.makeDescriptor(P.name,t)})}function m2t(t){if(t.range==="unknown")return{type:"resolve",range:"latest"};if(Or.validRange(t.range))return{type:"fixed",range:t.range};if(Hp.test(t.range))return{type:"resolve",range:t.range};let e=t.range.match(/^(?:jsr:|npm:)(.*)/);if(!e)return{type:"fixed",range:t.range};let[,r]=e,s=`${q.stringifyIdent(t)}@`;return r.startsWith(s)&&(r=r.slice(s.length)),Or.validRange(r)?{type:"fixed",range:t.range}:Hp.test(r)?{type:"resolve",range:t.range}:{type:"fixed",range:t.range}}async function fS(t,{project:e,workspace:r,cache:s,target:a,fixed:n,modifier:c,strategies:f,maxResults:p=1/0}){if(!(p>=0))throw new Error(`Invalid maxResults (${p})`);let h=!n||t.range==="unknown"?m2t(t):{type:"fixed",range:t.range};if(h.type==="fixed")return{suggestions:[{descriptor:t,name:`Use ${q.prettyDescriptor(e.configuration,t)}`,reason:"(unambiguous explicit request)"}],rejections:[]};let E=typeof r<"u"&&r!==null&&r.manifest[a].get(t.identHash)||null,C=[],S=[],P=async I=>{try{await I()}catch(R){S.push(R)}};for(let I of f){if(C.length>=p)break;switch(I){case"keep":await P(async()=>{E&&C.push({descriptor:E,name:`Keep ${q.prettyDescriptor(e.configuration,E)}`,reason:"(no changes)"})});break;case"reuse":await P(async()=>{for(let{descriptor:R,locators:N}of(await J1e(t,{project:e,target:a})).values()){if(N.length===1&&N[0].locatorHash===r.anchoredLocator.locatorHash&&f.includes("keep"))continue;let U=`(originally used by ${q.prettyLocator(e.configuration,N[0])}`;U+=N.length>1?` and ${N.length-1} other${N.length>2?"s":""})`:")",C.push({descriptor:R,name:`Reuse ${q.prettyDescriptor(e.configuration,R)}`,reason:U})}});break;case"cache":await P(async()=>{for(let R of e.storedDescriptors.values())R.identHash===t.identHash&&C.push({descriptor:R,name:`Reuse ${q.prettyDescriptor(e.configuration,R)}`,reason:"(already used somewhere in the lockfile)"})});break;case"project":await P(async()=>{if(r.manifest.name!==null&&t.identHash===r.manifest.name.identHash)return;let R=e.tryWorkspaceByIdent(t);if(R===null)return;let N=K1e(R,c);C.push({descriptor:N,name:`Attach ${q.prettyDescriptor(e.configuration,N)}`,reason:`(local workspace at ${he.pretty(e.configuration,R.relativeCwd,he.Type.PATH)})`})});break;case"latest":{let R=e.configuration.get("enableNetwork"),N=e.configuration.get("enableOfflineMode");await P(async()=>{if(a==="peerDependencies")C.push({descriptor:q.makeDescriptor(t,"*"),name:"Use *",reason:"(catch-all peer dependency pattern)"});else if(!R&&!N)C.push({descriptor:null,name:"Resolve from latest",reason:he.pretty(e.configuration,"(unavailable because enableNetwork is toggled off)","grey")});else{let U=await S5(t,h.range,{project:e,cache:s,workspace:r,modifier:c});U&&C.push({descriptor:U,name:`Use ${q.prettyDescriptor(e.configuration,U)}`,reason:`(resolved from ${N?"the cache":"latest"})`})}})}break}}return{suggestions:C.slice(0,p),rejections:S.slice(0,p)}}async function S5(t,e,{project:r,cache:s,workspace:a,preserveModifier:n=!0,modifier:c}){let f=r.configuration.normalizeDependency(q.makeDescriptor(t,e)),p=new Wi,h=r.configuration.makeFetcher(),E=r.configuration.makeResolver(),C={project:r,fetcher:h,cache:s,checksums:r.storedChecksums,report:p,cacheOptions:{skipIntegrityCheck:!0}},S={...C,resolver:E,fetchOptions:C},P=E.bindDescriptor(f,a.anchoredLocator,S),I=await E.getCandidates(P,{},S);if(I.length===0)return null;let R=I[0],{protocol:N,source:U,params:W,selector:te}=q.parseRange(q.convertToManifestRange(R.reference));if(N===r.configuration.get("defaultProtocol")&&(N=null),w5.default.valid(te)){let ie=te;if(typeof c<"u")te=c+te;else if(n!==!1){let me=typeof n=="string"?n:f.range;te=Y1e(me,{project:r})+te}let Ae=q.makeDescriptor(R,q.makeRange({protocol:N,source:U,params:W,selector:te}));(await E.getCandidates(r.configuration.normalizeDependency(Ae),{},S)).length!==1&&(te=ie)}return q.makeDescriptor(R,q.makeRange({protocol:N,source:U,params:W,selector:te}))}async function y2t(t){return await le.mktempPromise(async e=>{let r=ze.create(e);return r.useWithSource(e,{enableMirror:!1,compressionLevel:0},e,{overwrite:!0}),await t(new Jr(e,{configuration:r,check:!1,immutable:!1}))})}var aC=class extends ut{constructor(){super(...arguments);this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.fixed=ge.Boolean("-F,--fixed",!1,{description:"Store dependency tags as-is instead of resolving them"});this.exact=ge.Boolean("-E,--exact",!1,{description:"Don't use any semver modifier on the resolved range"});this.tilde=ge.Boolean("-T,--tilde",!1,{description:"Use the `~` semver modifier on the resolved range"});this.caret=ge.Boolean("-C,--caret",!1,{description:"Use the `^` semver modifier on the resolved range"});this.dev=ge.Boolean("-D,--dev",!1,{description:"Add a package as a dev dependency"});this.peer=ge.Boolean("-P,--peer",!1,{description:"Add a package as a peer dependency"});this.optional=ge.Boolean("-O,--optional",!1,{description:"Add / upgrade a package to an optional regular / peer dependency"});this.preferDev=ge.Boolean("--prefer-dev",!1,{description:"Add / upgrade a package to a dev dependency"});this.interactive=ge.Boolean("-i,--interactive",{description:"Reuse the specified package from other workspaces in the project"});this.cached=ge.Boolean("--cached",!1,{description:"Reuse the highest version already used somewhere within the project"});this.mode=ge.String("--mode",{description:"Change what artifacts installs generate",validator:Ao(ec)});this.silent=ge.Boolean("--silent",{hidden:!0});this.packages=ge.Rest()}static{this.paths=[["add"]]}static{this.usage=ot.Usage({description:"add dependencies to the project",details:"\n This command adds a package to the package.json for the nearest workspace.\n\n - If it didn't exist before, the package will by default be added to the regular `dependencies` field, but this behavior can be overriden thanks to the `-D,--dev` flag (which will cause the dependency to be added to the `devDependencies` field instead) and the `-P,--peer` flag (which will do the same but for `peerDependencies`).\n\n - If the package was already listed in your dependencies, it will by default be upgraded whether it's part of your `dependencies` or `devDependencies` (it won't ever update `peerDependencies`, though).\n\n - If set, the `--prefer-dev` flag will operate as a more flexible `-D,--dev` in that it will add the package to your `devDependencies` if it isn't already listed in either `dependencies` or `devDependencies`, but it will also happily upgrade your `dependencies` if that's what you already use (whereas `-D,--dev` would throw an exception).\n\n - If set, the `-O,--optional` flag will add the package to the `optionalDependencies` field and, in combination with the `-P,--peer` flag, it will add the package as an optional peer dependency. If the package was already listed in your `dependencies`, it will be upgraded to `optionalDependencies`. If the package was already listed in your `peerDependencies`, in combination with the `-P,--peer` flag, it will be upgraded to an optional peer dependency: `\"peerDependenciesMeta\": { \"\": { \"optional\": true } }`\n\n - If the added package doesn't specify a range at all its `latest` tag will be resolved and the returned version will be used to generate a new semver range (using the `^` modifier by default unless otherwise configured via the `defaultSemverRangePrefix` configuration, or the `~` modifier if `-T,--tilde` is specified, or no modifier at all if `-E,--exact` is specified). Two exceptions to this rule: the first one is that if the package is a workspace then its local version will be used, and the second one is that if you use `-P,--peer` the default range will be `*` and won't be resolved at all.\n\n - If the added package specifies a range (such as `^1.0.0`, `latest`, or `rc`), Yarn will add this range as-is in the resulting package.json entry (in particular, tags such as `rc` will be encoded as-is rather than being converted into a semver range).\n\n If the `--cached` option is used, Yarn will preferably reuse the highest version already used somewhere within the project, even if through a transitive dependency.\n\n If the `-i,--interactive` option is used (or if the `preferInteractive` settings is toggled on) the command will first try to check whether other workspaces in the project use the specified package and, if so, will offer to reuse them.\n\n If the `--mode=` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n\n For a compilation of all the supported protocols, please consult the dedicated page from our website: https://yarnpkg.com/protocols.\n ",examples:[["Add a regular package to the current workspace","$0 add lodash"],["Add a specific version for a package to the current workspace","$0 add lodash@1.2.3"],["Add a package from a GitHub repository (the master branch) to the current workspace using a URL","$0 add lodash@https://github.com/lodash/lodash"],["Add a package from a GitHub repository (the master branch) to the current workspace using the GitHub protocol","$0 add lodash@github:lodash/lodash"],["Add a package from a GitHub repository (the master branch) to the current workspace using the GitHub protocol (shorthand)","$0 add lodash@lodash/lodash"],["Add a package from a specific branch of a GitHub repository to the current workspace using the GitHub protocol (shorthand)","$0 add lodash-es@lodash/lodash#es"],["Add a local package (gzipped tarball format) to the current workspace","$0 add local-package-name@file:../path/to/local-package-name-v0.1.2.tgz"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n=await Jr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState({restoreResolutions:!1});let c=this.fixed,f=r.isInteractive({interactive:this.interactive,stdout:this.context.stdout}),p=f||r.get("preferReuse"),h=uS(this,s),E=[p?"reuse":void 0,"project",this.cached?"cache":void 0,"latest"].filter(W=>typeof W<"u"),C=f?1/0:1,S=W=>{let te=q.tryParseDescriptor(W.slice(4));return te?te.range==="unknown"?q.makeDescriptor(te,`jsr:${q.stringifyIdent(te)}@latest`):q.makeDescriptor(te,`jsr:${te.range}`):null},P=await Promise.all(this.packages.map(async W=>{let te=W.match(/^\.{0,2}\//)?await v5(W,{cwd:this.context.cwd,workspace:a}):W.startsWith("jsr:")?S(W):q.tryParseDescriptor(W),ie=W.match(/^(https?:|git@github)/);if(ie)throw new nt(`It seems you are trying to add a package using a ${he.pretty(r,`${ie[0]}...`,he.Type.RANGE)} url; we now require package names to be explicitly specified. +Try running the command again with the package name prefixed: ${he.pretty(r,"yarn add",he.Type.CODE)} ${he.pretty(r,q.makeDescriptor(q.makeIdent(null,"my-package"),`${ie[0]}...`),he.Type.DESCRIPTOR)}`);if(!te)throw new nt(`The ${he.pretty(r,W,he.Type.CODE)} string didn't match the required format (package-name@range). Did you perhaps forget to explicitly reference the package name?`);let Ae=E2t(a,te,{dev:this.dev,peer:this.peer,preferDev:this.preferDev,optional:this.optional});return await Promise.all(Ae.map(async me=>{let pe=await fS(te,{project:s,workspace:a,cache:n,fixed:c,target:me,modifier:h,strategies:E,maxResults:C});return{request:te,suggestedDescriptors:pe,target:me}}))})).then(W=>W.flat()),I=await uA.start({configuration:r,stdout:this.context.stdout,suggestInstall:!1},async W=>{for(let{request:te,suggestedDescriptors:{suggestions:ie,rejections:Ae}}of P)if(ie.filter(me=>me.descriptor!==null).length===0){let[me]=Ae;if(typeof me>"u")throw new Error("Assertion failed: Expected an error to have been set");s.configuration.get("enableNetwork")?W.reportError(27,`${q.prettyDescriptor(r,te)} can't be resolved to a satisfying range`):W.reportError(27,`${q.prettyDescriptor(r,te)} can't be resolved to a satisfying range (note: network resolution has been disabled)`),W.reportSeparator(),W.reportExceptionOnce(me)}});if(I.hasErrors())return I.exitCode();let R=!1,N=[],U=[];for(let{suggestedDescriptors:{suggestions:W},target:te}of P){let ie,Ae=W.filter(Be=>Be.descriptor!==null),ce=Ae[0].descriptor,me=Ae.every(Be=>q.areDescriptorsEqual(Be.descriptor,ce));Ae.length===1||me?ie=ce:(R=!0,{answer:ie}=await(0,z1e.prompt)({type:"select",name:"answer",message:"Which range do you want to use?",choices:W.map(({descriptor:Be,name:Ce,reason:g})=>Be?{name:Ce,hint:g,descriptor:Be}:{name:Ce,hint:g,disabled:!0}),onCancel:()=>process.exit(130),result(Be){return this.find(Be,"descriptor")},stdin:this.context.stdin,stdout:this.context.stdout}));let pe=a.manifest[te].get(ie.identHash);(typeof pe>"u"||pe.descriptorHash!==ie.descriptorHash)&&(a.manifest[te].set(ie.identHash,ie),this.optional&&(te==="dependencies"?a.manifest.ensureDependencyMeta({...ie,range:"unknown"}).optional=!0:te==="peerDependencies"&&(a.manifest.ensurePeerDependencyMeta({...ie,range:"unknown"}).optional=!0)),typeof pe>"u"?N.push([a,te,ie,E]):U.push([a,te,pe,ie]))}return await r.triggerMultipleHooks(W=>W.afterWorkspaceDependencyAddition,N),await r.triggerMultipleHooks(W=>W.afterWorkspaceDependencyReplacement,U),R&&this.context.stdout.write(` +`),await s.installWithNewReport({json:this.json,stdout:this.context.stdout,quiet:this.context.quiet},{cache:n,mode:this.mode})}};function E2t(t,e,{dev:r,peer:s,preferDev:a,optional:n}){let c=t.manifest.dependencies.has(e.identHash),f=t.manifest.devDependencies.has(e.identHash),p=t.manifest.peerDependencies.has(e.identHash);if((r||s)&&c)throw new nt(`Package "${q.prettyIdent(t.project.configuration,e)}" is already listed as a regular dependency - remove the -D,-P flags or remove it from your dependencies first`);if(!r&&!s&&p)throw new nt(`Package "${q.prettyIdent(t.project.configuration,e)}" is already listed as a peer dependency - use either of -D or -P, or remove it from your peer dependencies first`);if(n&&f)throw new nt(`Package "${q.prettyIdent(t.project.configuration,e)}" is already listed as a dev dependency - remove the -O flag or remove it from your dev dependencies first`);if(n&&!s&&p)throw new nt(`Package "${q.prettyIdent(t.project.configuration,e)}" is already listed as a peer dependency - remove the -O flag or add the -P flag or remove it from your peer dependencies first`);if((r||a)&&n)throw new nt(`Package "${q.prettyIdent(t.project.configuration,e)}" cannot simultaneously be a dev dependency and an optional dependency`);let h=[];return s&&h.push("peerDependencies"),(r||a)&&h.push("devDependencies"),n&&h.push("dependencies"),h.length>0?h:f?["devDependencies"]:p?["peerDependencies"]:["dependencies"]}Ve();Ve();Wt();var lC=class extends ut{constructor(){super(...arguments);this.verbose=ge.Boolean("-v,--verbose",!1,{description:"Print both the binary name and the locator of the package that provides the binary"});this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.name=ge.String({required:!1})}static{this.paths=[["bin"]]}static{this.usage=ot.Usage({description:"get the path to a binary script",details:` + When used without arguments, this command will print the list of all the binaries available in the current workspace. Adding the \`-v,--verbose\` flag will cause the output to contain both the binary name and the locator of the package that provides the binary. + + When an argument is specified, this command will just print the path to the binary on the standard output and exit. Note that the reported path may be stored within a zip archive. + `,examples:[["List all the available binaries","$0 bin"],["Print the path to a specific binary","$0 bin eslint"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,locator:a}=await Tt.find(r,this.context.cwd);if(await s.restoreInstallState(),this.name){let f=(await In.getPackageAccessibleBinaries(a,{project:s})).get(this.name);if(!f)throw new nt(`Couldn't find a binary named "${this.name}" for package "${q.prettyLocator(r,a)}"`);let[,p]=f;return this.context.stdout.write(`${p} +`),0}return(await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout},async c=>{let f=await In.getPackageAccessibleBinaries(a,{project:s}),h=Array.from(f.keys()).reduce((E,C)=>Math.max(E,C.length),0);for(let[E,[C,S]]of f)c.reportJson({name:E,source:q.stringifyIdent(C),path:S});if(this.verbose)for(let[E,[C]]of f)c.reportInfo(null,`${E.padEnd(h," ")} ${q.prettyLocator(r,C)}`);else for(let E of f.keys())c.reportInfo(null,E)})).exitCode()}};Ve();bt();Wt();var cC=class extends ut{constructor(){super(...arguments);this.mirror=ge.Boolean("--mirror",!1,{description:"Remove the global cache files instead of the local cache files"});this.all=ge.Boolean("--all",!1,{description:"Remove both the global cache files and the local cache files of the current project"})}static{this.paths=[["cache","clean"],["cache","clear"]]}static{this.usage=ot.Usage({description:"remove the shared cache files",details:` + This command will remove all the files from the cache. + `,examples:[["Remove all the local archives","$0 cache clean"],["Remove all the archives stored in the ~/.yarn directory","$0 cache clean --mirror"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins);if(!r.get("enableCacheClean"))throw new nt("Cache cleaning is currently disabled. To enable it, set `enableCacheClean: true` in your configuration file. Note: Cache cleaning is typically not required and should be avoided when using Zero-Installs.");let s=await Jr.find(r);return(await Ot.start({configuration:r,stdout:this.context.stdout},async()=>{let n=(this.all||this.mirror)&&s.mirrorCwd!==null,c=!this.mirror;n&&(await le.removePromise(s.mirrorCwd),await r.triggerHook(f=>f.cleanGlobalArtifacts,r)),c&&await le.removePromise(s.cwd)})).exitCode()}};Ve();Wt();var X1e=et(AS()),D5=ye("util"),uC=class extends ut{constructor(){super(...arguments);this.why=ge.Boolean("--why",!1,{description:"Print the explanation for why a setting has its value"});this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.unsafe=ge.Boolean("--no-redacted",!1,{description:"Don't redact secrets (such as tokens) from the output"});this.name=ge.String()}static{this.paths=[["config","get"]]}static{this.usage=ot.Usage({description:"read a configuration settings",details:` + This command will print a configuration setting. + + Secrets (such as tokens) will be redacted from the output by default. If this behavior isn't desired, set the \`--no-redacted\` to get the untransformed value. + `,examples:[["Print a simple configuration setting","yarn config get yarnPath"],["Print a complex configuration setting","yarn config get packageExtensions"],["Print a nested field from the configuration",`yarn config get 'npmScopes["my-company"].npmRegistryServer'`],["Print a token from the configuration","yarn config get npmAuthToken --no-redacted"],["Print a configuration setting as JSON","yarn config get packageExtensions --json"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s=this.name.replace(/[.[].*$/,""),a=this.name.replace(/^[^.[]*/,"");if(typeof r.settings.get(s)>"u")throw new nt(`Couldn't find a configuration settings named "${s}"`);let c=r.getSpecial(s,{hideSecrets:!this.unsafe,getNativePaths:!0}),f=je.convertMapsToIndexableObjects(c),p=a?(0,X1e.default)(f,a):f,h=await Ot.start({configuration:r,includeFooter:!1,json:this.json,stdout:this.context.stdout},async E=>{E.reportJson(p)});if(!this.json){if(typeof p=="string")return this.context.stdout.write(`${p} +`),h.exitCode();D5.inspect.styles.name="cyan",this.context.stdout.write(`${(0,D5.inspect)(p,{depth:1/0,colors:r.get("enableColors"),compact:!1})} +`)}return h.exitCode()}};Ve();Wt();var j2e=et(k5()),q2e=et(AS()),G2e=et(Q5()),T5=ye("util"),fC=class extends ut{constructor(){super(...arguments);this.json=ge.Boolean("--json",!1,{description:"Set complex configuration settings to JSON values"});this.home=ge.Boolean("-H,--home",!1,{description:"Update the home configuration instead of the project configuration"});this.name=ge.String();this.value=ge.String()}static{this.paths=[["config","set"]]}static{this.usage=ot.Usage({description:"change a configuration settings",details:` + This command will set a configuration setting. + + When used without the \`--json\` flag, it can only set a simple configuration setting (a string, a number, or a boolean). + + When used with the \`--json\` flag, it can set both simple and complex configuration settings, including Arrays and Objects. + `,examples:[["Set a simple configuration setting (a string, a number, or a boolean)","yarn config set initScope myScope"],["Set a simple configuration setting (a string, a number, or a boolean) using the `--json` flag",'yarn config set initScope --json \\"myScope\\"'],["Set a complex configuration setting (an Array) using the `--json` flag",`yarn config set unsafeHttpWhitelist --json '["*.example.com", "example.com"]'`],["Set a complex configuration setting (an Object) using the `--json` flag",`yarn config set packageExtensions --json '{ "@babel/parser@*": { "dependencies": { "@babel/types": "*" } } }'`],["Set a nested configuration setting",'yarn config set npmScopes.company.npmRegistryServer "https://npm.example.com"'],["Set a nested configuration setting using indexed access for non-simple keys",`yarn config set 'npmRegistries["//npm.example.com"].npmAuthToken' "ffffffff-ffff-ffff-ffff-ffffffffffff"`]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s=()=>{if(!r.projectCwd)throw new nt("This command must be run from within a project folder");return r.projectCwd},a=this.name.replace(/[.[].*$/,""),n=this.name.replace(/^[^.[]*\.?/,"");if(typeof r.settings.get(a)>"u")throw new nt(`Couldn't find a configuration settings named "${a}"`);if(a==="enableStrictSettings")throw new nt("This setting only affects the file it's in, and thus cannot be set from the CLI");let f=this.json?JSON.parse(this.value):this.value;await(this.home?I=>ze.updateHomeConfiguration(I):I=>ze.updateConfiguration(s(),I))(I=>{if(n){let R=(0,j2e.default)(I);return(0,G2e.default)(R,this.name,f),R}else return{...I,[a]:f}});let E=(await ze.find(this.context.cwd,this.context.plugins)).getSpecial(a,{hideSecrets:!0,getNativePaths:!0}),C=je.convertMapsToIndexableObjects(E),S=n?(0,q2e.default)(C,n):C;return(await Ot.start({configuration:r,includeFooter:!1,stdout:this.context.stdout},async I=>{T5.inspect.styles.name="cyan",I.reportInfo(0,`Successfully set ${this.name} to ${(0,T5.inspect)(S,{depth:1/0,colors:r.get("enableColors"),compact:!1})}`)})).exitCode()}};Ve();Wt();var tBe=et(k5()),rBe=et(K2e()),nBe=et(F5()),AC=class extends ut{constructor(){super(...arguments);this.home=ge.Boolean("-H,--home",!1,{description:"Update the home configuration instead of the project configuration"});this.name=ge.String()}static{this.paths=[["config","unset"]]}static{this.usage=ot.Usage({description:"unset a configuration setting",details:` + This command will unset a configuration setting. + `,examples:[["Unset a simple configuration setting","yarn config unset initScope"],["Unset a complex configuration setting","yarn config unset packageExtensions"],["Unset a nested configuration setting","yarn config unset npmScopes.company.npmRegistryServer"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s=()=>{if(!r.projectCwd)throw new nt("This command must be run from within a project folder");return r.projectCwd},a=this.name.replace(/[.[].*$/,""),n=this.name.replace(/^[^.[]*\.?/,"");if(typeof r.settings.get(a)>"u")throw new nt(`Couldn't find a configuration settings named "${a}"`);let f=this.home?h=>ze.updateHomeConfiguration(h):h=>ze.updateConfiguration(s(),h);return(await Ot.start({configuration:r,includeFooter:!1,stdout:this.context.stdout},async h=>{let E=!1;await f(C=>{if(!(0,rBe.default)(C,this.name))return h.reportWarning(0,`Configuration doesn't contain setting ${this.name}; there is nothing to unset`),E=!0,C;let S=n?(0,tBe.default)(C):{...C};return(0,nBe.default)(S,this.name),S}),E||h.reportInfo(0,`Successfully unset ${this.name}`)})).exitCode()}};Ve();bt();Wt();var sF=ye("util"),pC=class extends ut{constructor(){super(...arguments);this.noDefaults=ge.Boolean("--no-defaults",!1,{description:"Omit the default values from the display"});this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.verbose=ge.Boolean("-v,--verbose",{hidden:!0});this.why=ge.Boolean("--why",{hidden:!0});this.names=ge.Rest()}static{this.paths=[["config"]]}static{this.usage=ot.Usage({description:"display the current configuration",details:` + This command prints the current active configuration settings. + `,examples:[["Print the active configuration settings","$0 config"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins,{strict:!1}),s=await DI({configuration:r,stdout:this.context.stdout,forceError:this.json},[{option:this.verbose,message:"The --verbose option is deprecated, the settings' descriptions are now always displayed"},{option:this.why,message:"The --why option is deprecated, the settings' sources are now always displayed"}]);if(s!==null)return s;let a=this.names.length>0?[...new Set(this.names)].sort():[...r.settings.keys()].sort(),n,c=await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async f=>{if(r.invalid.size>0&&!this.json){for(let[p,h]of r.invalid)f.reportError(34,`Invalid configuration key "${p}" in ${h}`);f.reportSeparator()}if(this.json)for(let p of a){if(this.noDefaults&&!r.sources.has(p))continue;let h=r.settings.get(p);typeof h>"u"&&f.reportError(34,`No configuration key named "${p}"`);let E=r.getSpecial(p,{hideSecrets:!0,getNativePaths:!0}),C=r.sources.get(p)??"",S=C&&C[0]!=="<"?ue.fromPortablePath(C):C;f.reportJson({key:p,effective:E,source:S,...h})}else{let p={breakLength:1/0,colors:r.get("enableColors"),maxArrayLength:2},h={},E={children:h};for(let C of a){if(this.noDefaults&&!r.sources.has(C))continue;let S=r.settings.get(C),P=r.sources.get(C)??"",I=r.getSpecial(C,{hideSecrets:!0,getNativePaths:!0}),R={Description:{label:"Description",value:he.tuple(he.Type.MARKDOWN,{text:S.description,format:this.cli.format(),paragraphs:!1})},Source:{label:"Source",value:he.tuple(P[0]==="<"?he.Type.CODE:he.Type.PATH,P)}};h[C]={value:he.tuple(he.Type.CODE,C),children:R};let N=(U,W)=>{for(let[te,ie]of W)if(ie instanceof Map){let Ae={};U[te]={children:Ae},N(Ae,ie)}else U[te]={label:te,value:he.tuple(he.Type.NO_HINT,(0,sF.inspect)(ie,p))}};I instanceof Map?N(R,I):R.Value={label:"Value",value:he.tuple(he.Type.NO_HINT,(0,sF.inspect)(I,p))}}a.length!==1&&(n=void 0),ks.emitTree(E,{configuration:r,json:this.json,stdout:this.context.stdout,separators:2})}});if(!this.json&&typeof n<"u"){let f=a[0],p=(0,sF.inspect)(r.getSpecial(f,{hideSecrets:!0,getNativePaths:!0}),{colors:r.get("enableColors")});this.context.stdout.write(` +`),this.context.stdout.write(`${p} +`)}return c.exitCode()}};Ve();Wt();Ul();var oF={};Vt(oF,{Strategy:()=>pS,acceptedStrategies:()=>tSt,dedupe:()=>N5});Ve();Ve();var iBe=et(Sa()),pS=(e=>(e.HIGHEST="highest",e))(pS||{}),tSt=new Set(Object.values(pS)),rSt={highest:async(t,e,{resolver:r,fetcher:s,resolveOptions:a,fetchOptions:n})=>{let c=new Map;for(let[p,h]of t.storedResolutions){let E=t.storedDescriptors.get(p);if(typeof E>"u")throw new Error(`Assertion failed: The descriptor (${p}) should have been registered`);je.getSetWithDefault(c,E.identHash).add(h)}let f=new Map(je.mapAndFilter(t.storedDescriptors.values(),p=>q.isVirtualDescriptor(p)?je.mapAndFilter.skip:[p.descriptorHash,je.makeDeferred()]));for(let p of t.storedDescriptors.values()){let h=f.get(p.descriptorHash);if(typeof h>"u")throw new Error(`Assertion failed: The descriptor (${p.descriptorHash}) should have been registered`);let E=t.storedResolutions.get(p.descriptorHash);if(typeof E>"u")throw new Error(`Assertion failed: The resolution (${p.descriptorHash}) should have been registered`);let C=t.originalPackages.get(E);if(typeof C>"u")throw new Error(`Assertion failed: The package (${E}) should have been registered`);Promise.resolve().then(async()=>{let S=r.getResolutionDependencies(p,a),P=Object.fromEntries(await je.allSettledSafe(Object.entries(S).map(async([te,ie])=>{let Ae=f.get(ie.descriptorHash);if(typeof Ae>"u")throw new Error(`Assertion failed: The descriptor (${ie.descriptorHash}) should have been registered`);let ce=await Ae.promise;if(!ce)throw new Error("Assertion failed: Expected the dependency to have been through the dedupe process itself");return[te,ce.updatedPackage]})));if(e.length&&!iBe.default.isMatch(q.stringifyIdent(p),e)||!r.shouldPersistResolution(C,a))return C;let I=c.get(p.identHash);if(typeof I>"u")throw new Error(`Assertion failed: The resolutions (${p.identHash}) should have been registered`);if(I.size===1)return C;let R=[...I].map(te=>{let ie=t.originalPackages.get(te);if(typeof ie>"u")throw new Error(`Assertion failed: The package (${te}) should have been registered`);return ie}),N=await r.getSatisfying(p,P,R,a),U=N.locators?.[0];if(typeof U>"u"||!N.sorted)return C;let W=t.originalPackages.get(U.locatorHash);if(typeof W>"u")throw new Error(`Assertion failed: The package (${U.locatorHash}) should have been registered`);return W}).then(async S=>{let P=await t.preparePackage(S,{resolver:r,resolveOptions:a});h.resolve({descriptor:p,currentPackage:C,updatedPackage:S,resolvedPackage:P})}).catch(S=>{h.reject(S)})}return[...f.values()].map(p=>p.promise)}};async function N5(t,{strategy:e,patterns:r,cache:s,report:a}){let{configuration:n}=t,c=new Wi,f=n.makeResolver(),p=n.makeFetcher(),h={cache:s,checksums:t.storedChecksums,fetcher:p,project:t,report:c,cacheOptions:{skipIntegrityCheck:!0}},E={project:t,resolver:f,report:c,fetchOptions:h};return await a.startTimerPromise("Deduplication step",async()=>{let C=rSt[e],S=await C(t,r,{resolver:f,resolveOptions:E,fetcher:p,fetchOptions:h}),P=ho.progressViaCounter(S.length);await a.reportProgress(P);let I=0;await Promise.all(S.map(U=>U.then(W=>{if(W===null||W.currentPackage.locatorHash===W.updatedPackage.locatorHash)return;I++;let{descriptor:te,currentPackage:ie,updatedPackage:Ae}=W;a.reportInfo(0,`${q.prettyDescriptor(n,te)} can be deduped from ${q.prettyLocator(n,ie)} to ${q.prettyLocator(n,Ae)}`),a.reportJson({descriptor:q.stringifyDescriptor(te),currentResolution:q.stringifyLocator(ie),updatedResolution:q.stringifyLocator(Ae)}),t.storedResolutions.set(te.descriptorHash,Ae.locatorHash)}).finally(()=>P.tick())));let R;switch(I){case 0:R="No packages";break;case 1:R="One package";break;default:R=`${I} packages`}let N=he.pretty(n,e,he.Type.CODE);return a.reportInfo(0,`${R} can be deduped using the ${N} strategy`),I})}var hC=class extends ut{constructor(){super(...arguments);this.strategy=ge.String("-s,--strategy","highest",{description:"The strategy to use when deduping dependencies",validator:Ao(pS)});this.check=ge.Boolean("-c,--check",!1,{description:"Exit with exit code 1 when duplicates are found, without persisting the dependency tree"});this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.mode=ge.String("--mode",{description:"Change what artifacts installs generate",validator:Ao(ec)});this.patterns=ge.Rest()}static{this.paths=[["dedupe"]]}static{this.usage=ot.Usage({description:"deduplicate dependencies with overlapping ranges",details:"\n Duplicates are defined as descriptors with overlapping ranges being resolved and locked to different locators. They are a natural consequence of Yarn's deterministic installs, but they can sometimes pile up and unnecessarily increase the size of your project.\n\n This command dedupes dependencies in the current project using different strategies (only one is implemented at the moment):\n\n - `highest`: Reuses (where possible) the locators with the highest versions. This means that dependencies can only be upgraded, never downgraded. It's also guaranteed that it never takes more than a single pass to dedupe the entire dependency tree.\n\n **Note:** Even though it never produces a wrong dependency tree, this command should be used with caution, as it modifies the dependency tree, which can sometimes cause problems when packages don't strictly follow semver recommendations. Because of this, it is recommended to also review the changes manually.\n\n If set, the `-c,--check` flag will only report the found duplicates, without persisting the modified dependency tree. If changes are found, the command will exit with a non-zero exit code, making it suitable for CI purposes.\n\n If the `--mode=` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n\n This command accepts glob patterns as arguments (if valid Idents and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them.\n\n ### In-depth explanation:\n\n Yarn doesn't deduplicate dependencies by default, otherwise installs wouldn't be deterministic and the lockfile would be useless. What it actually does is that it tries to not duplicate dependencies in the first place.\n\n **Example:** If `foo@^2.3.4` (a dependency of a dependency) has already been resolved to `foo@2.3.4`, running `yarn add foo@*`will cause Yarn to reuse `foo@2.3.4`, even if the latest `foo` is actually `foo@2.10.14`, thus preventing unnecessary duplication.\n\n Duplication happens when Yarn can't unlock dependencies that have already been locked inside the lockfile.\n\n **Example:** If `foo@^2.3.4` (a dependency of a dependency) has already been resolved to `foo@2.3.4`, running `yarn add foo@2.10.14` will cause Yarn to install `foo@2.10.14` because the existing resolution doesn't satisfy the range `2.10.14`. This behavior can lead to (sometimes) unwanted duplication, since now the lockfile contains 2 separate resolutions for the 2 `foo` descriptors, even though they have overlapping ranges, which means that the lockfile can be simplified so that both descriptors resolve to `foo@2.10.14`.\n ",examples:[["Dedupe all packages","$0 dedupe"],["Dedupe all packages using a specific strategy","$0 dedupe --strategy highest"],["Dedupe a specific package","$0 dedupe lodash"],["Dedupe all packages with the `@babel/*` scope","$0 dedupe '@babel/*'"],["Check for duplicates (can be used as a CI step)","$0 dedupe --check"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s}=await Tt.find(r,this.context.cwd),a=await Jr.find(r);await s.restoreInstallState({restoreResolutions:!1});let n=0,c=await Ot.start({configuration:r,includeFooter:!1,stdout:this.context.stdout,json:this.json},async f=>{n=await N5(s,{strategy:this.strategy,patterns:this.patterns,cache:a,report:f})});return c.hasErrors()?c.exitCode():this.check?n?1:0:await s.installWithNewReport({json:this.json,stdout:this.context.stdout},{cache:a,mode:this.mode})}};Ve();Wt();var gC=class extends ut{static{this.paths=[["--clipanion=definitions"]]}async execute(){let{plugins:e}=await ze.find(this.context.cwd,this.context.plugins),r=[];for(let c of e){let{commands:f}=c[1];if(f){let h=wa.from(f).definitions();r.push([c[0],h])}}let s=this.cli.definitions(),a=(c,f)=>c.split(" ").slice(1).join()===f.split(" ").slice(1).join(),n=sBe()["@yarnpkg/builder"].bundles.standard;for(let c of r){let f=c[1];for(let p of f)s.find(h=>a(h.path,p.path)).plugin={name:c[0],isDefault:n.includes(c[0])}}this.context.stdout.write(`${JSON.stringify(s,null,2)} +`)}};var dC=class extends ut{static{this.paths=[["help"],["--help"],["-h"]]}async execute(){this.context.stdout.write(this.cli.usage(null))}};Ve();bt();Wt();var mC=class extends ut{constructor(){super(...arguments);this.leadingArgument=ge.String();this.args=ge.Proxy()}async execute(){if(this.leadingArgument.match(/[\\/]/)&&!q.tryParseIdent(this.leadingArgument)){let r=K.resolve(this.context.cwd,ue.toPortablePath(this.leadingArgument));return await this.cli.run(this.args,{cwd:r})}else return await this.cli.run(["run",this.leadingArgument,...this.args])}};Ve();var yC=class extends ut{static{this.paths=[["-v"],["--version"]]}async execute(){this.context.stdout.write(`${un||""} +`)}};Ve();Ve();Wt();var EC=class extends ut{constructor(){super(...arguments);this.commandName=ge.String();this.args=ge.Proxy()}static{this.paths=[["exec"]]}static{this.usage=ot.Usage({description:"execute a shell script",details:` + This command simply executes a shell script within the context of the root directory of the active workspace using the portable shell. + + It also makes sure to call it in a way that's compatible with the current project (for example, on PnP projects the environment will be setup in such a way that PnP will be correctly injected into the environment). + `,examples:[["Execute a single shell command","$0 exec echo Hello World"],["Execute a shell script",'$0 exec "tsc & babel src --out-dir lib"']]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,locator:a}=await Tt.find(r,this.context.cwd);return await s.restoreInstallState(),await In.executePackageShellcode(a,this.commandName,this.args,{cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,project:s})}};Ve();Wt();Ul();var IC=class extends ut{constructor(){super(...arguments);this.hash=ge.String({required:!1,validator:Jx(wE(),[tB(/^p[0-9a-f]{5}$/)])})}static{this.paths=[["explain","peer-requirements"]]}static{this.usage=ot.Usage({description:"explain a set of peer requirements",details:` + A peer requirement represents all peer requests that a subject must satisfy when providing a requested package to requesters. + + When the hash argument is specified, this command prints a detailed explanation of the peer requirement corresponding to the hash and whether it is satisfied or not. + + When used without arguments, this command lists all peer requirements and the corresponding hash that can be used to get detailed information about a given requirement. + + **Note:** A hash is a six-letter p-prefixed code that can be obtained from peer dependency warnings or from the list of all peer requirements (\`yarn explain peer-requirements\`). + `,examples:[["Explain the corresponding peer requirement for a hash","$0 explain peer-requirements p1a4ed"],["List all peer requirements","$0 explain peer-requirements"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s}=await Tt.find(r,this.context.cwd);return await s.restoreInstallState({restoreResolutions:!1}),await s.applyLightResolution(),typeof this.hash<"u"?await iSt(this.hash,s,{stdout:this.context.stdout}):await sSt(s,{stdout:this.context.stdout})}};async function iSt(t,e,r){let s=e.peerRequirementNodes.get(t);if(typeof s>"u")throw new Error(`No peerDependency requirements found for hash: "${t}"`);let a=new Set,n=p=>a.has(p.requester.locatorHash)?{value:he.tuple(he.Type.DEPENDENT,{locator:p.requester,descriptor:p.descriptor}),children:p.children.size>0?[{value:he.tuple(he.Type.NO_HINT,"...")}]:[]}:(a.add(p.requester.locatorHash),{value:he.tuple(he.Type.DEPENDENT,{locator:p.requester,descriptor:p.descriptor}),children:Object.fromEntries(Array.from(p.children.values(),h=>[q.stringifyLocator(h.requester),n(h)]))}),c=e.peerWarnings.find(p=>p.hash===t);return(await Ot.start({configuration:e.configuration,stdout:r.stdout,includeFooter:!1,includePrefix:!1},async p=>{let h=he.mark(e.configuration),E=c?h.Cross:h.Check;if(p.reportInfo(0,`Package ${he.pretty(e.configuration,s.subject,he.Type.LOCATOR)} is requested to provide ${he.pretty(e.configuration,s.ident,he.Type.IDENT)} by its descendants`),p.reportSeparator(),p.reportInfo(0,he.pretty(e.configuration,s.subject,he.Type.LOCATOR)),ks.emitTree({children:Object.fromEntries(Array.from(s.requests.values(),C=>[q.stringifyLocator(C.requester),n(C)]))},{configuration:e.configuration,stdout:r.stdout,json:!1}),p.reportSeparator(),s.provided.range==="missing:"){let C=c?"":" , but all peer requests are optional";p.reportInfo(0,`${E} Package ${he.pretty(e.configuration,s.subject,he.Type.LOCATOR)} does not provide ${he.pretty(e.configuration,s.ident,he.Type.IDENT)}${C}.`)}else{let C=e.storedResolutions.get(s.provided.descriptorHash);if(!C)throw new Error("Assertion failed: Expected the descriptor to be registered");let S=e.storedPackages.get(C);if(!S)throw new Error("Assertion failed: Expected the package to be registered");p.reportInfo(0,`${E} Package ${he.pretty(e.configuration,s.subject,he.Type.LOCATOR)} provides ${he.pretty(e.configuration,s.ident,he.Type.IDENT)} with version ${q.prettyReference(e.configuration,S.version??"0.0.0")}, ${c?"which does not satisfy all requests.":"which satisfies all requests"}`),c?.type===3&&(c.range?p.reportInfo(0,` The combined requested range is ${he.pretty(e.configuration,c.range,he.Type.RANGE)}`):p.reportInfo(0," Unfortunately, the requested ranges have no overlap"))}})).exitCode()}async function sSt(t,e){return(await Ot.start({configuration:t.configuration,stdout:e.stdout,includeFooter:!1,includePrefix:!1},async s=>{let a=he.mark(t.configuration),n=je.sortMap(t.peerRequirementNodes,[([,c])=>q.stringifyLocator(c.subject),([,c])=>q.stringifyIdent(c.ident)]);for(let[,c]of n.values()){if(!c.root)continue;let f=t.peerWarnings.find(E=>E.hash===c.hash),p=[...q.allPeerRequests(c)],h;if(p.length>2?h=` and ${p.length-1} other dependencies`:p.length===2?h=" and 1 other dependency":h="",c.provided.range!=="missing:"){let E=t.storedResolutions.get(c.provided.descriptorHash);if(!E)throw new Error("Assertion failed: Expected the resolution to have been registered");let C=t.storedPackages.get(E);if(!C)throw new Error("Assertion failed: Expected the provided package to have been registered");let S=`${he.pretty(t.configuration,c.hash,he.Type.CODE)} \u2192 ${f?a.Cross:a.Check} ${q.prettyLocator(t.configuration,c.subject)} provides ${q.prettyLocator(t.configuration,C)} to ${q.prettyLocator(t.configuration,p[0].requester)}${h}`;f?s.reportWarning(0,S):s.reportInfo(0,S)}else{let E=`${he.pretty(t.configuration,c.hash,he.Type.CODE)} \u2192 ${f?a.Cross:a.Check} ${q.prettyLocator(t.configuration,c.subject)} doesn't provide ${q.prettyIdent(t.configuration,c.ident)} to ${q.prettyLocator(t.configuration,p[0].requester)}${h}`;f?s.reportWarning(0,E):s.reportInfo(0,E)}}})).exitCode()}Ve();Wt();Ul();Ve();Ve();bt();Wt();var oBe=et(fi()),CC=class extends ut{constructor(){super(...arguments);this.useYarnPath=ge.Boolean("--yarn-path",{description:"Set the yarnPath setting even if the version can be accessed by Corepack"});this.onlyIfNeeded=ge.Boolean("--only-if-needed",!1,{description:"Only lock the Yarn version if it isn't already locked"});this.version=ge.String()}static{this.paths=[["set","version"]]}static{this.usage=ot.Usage({description:"lock the Yarn version used by the project",details:"\n This command will set a specific release of Yarn to be used by Corepack: https://nodejs.org/api/corepack.html.\n\n By default it only will set the `packageManager` field at the root of your project, but if the referenced release cannot be represented this way, if you already have `yarnPath` configured, or if you set the `--yarn-path` command line flag, then the release will also be downloaded from the Yarn GitHub repository, stored inside your project, and referenced via the `yarnPath` settings from your project `.yarnrc.yml` file.\n\n A very good use case for this command is to enforce the version of Yarn used by any single member of your team inside the same project - by doing this you ensure that you have control over Yarn upgrades and downgrades (including on your deployment servers), and get rid of most of the headaches related to someone using a slightly different version and getting different behavior.\n\n The version specifier can be:\n\n - a tag:\n - `latest` / `berry` / `stable` -> the most recent stable berry (`>=2.0.0`) release\n - `canary` -> the most recent canary (release candidate) berry (`>=2.0.0`) release\n - `classic` -> the most recent classic (`^0.x || ^1.x`) release\n\n - a semver range (e.g. `2.x`) -> the most recent version satisfying the range (limited to berry releases)\n\n - a semver version (e.g. `2.4.1`, `1.22.1`)\n\n - a local file referenced through either a relative or absolute path\n\n - `self` -> the version used to invoke the command\n ",examples:[["Download the latest release from the Yarn repository","$0 set version latest"],["Download the latest canary release from the Yarn repository","$0 set version canary"],["Download the latest classic release from the Yarn repository","$0 set version classic"],["Download the most recent Yarn 3 build","$0 set version 3.x"],["Download a specific Yarn 2 build","$0 set version 2.0.0-rc.30"],["Switch back to a specific Yarn 1 release","$0 set version 1.22.1"],["Use a release from the local filesystem","$0 set version ./yarn.cjs"],["Use a release from a URL","$0 set version https://repo.yarnpkg.com/3.1.0/packages/yarnpkg-cli/bin/yarn.js"],["Download the version used to invoke the command","$0 set version self"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins);if(this.onlyIfNeeded&&r.get("yarnPath")){let f=r.sources.get("yarnPath");if(!f)throw new Error("Assertion failed: Expected 'yarnPath' to have a source");let p=r.projectCwd??r.startingCwd;if(K.contains(p,f))return 0}let s=()=>{if(typeof un>"u")throw new nt("The --install flag can only be used without explicit version specifier from the Yarn CLI");return`file://${process.argv[1]}`},a,n=(f,p)=>({version:p,url:f.replace(/\{\}/g,p)});if(this.version==="self")a={url:s(),version:un??"self"};else if(this.version==="latest"||this.version==="berry"||this.version==="stable")a=n("https://repo.yarnpkg.com/{}/packages/yarnpkg-cli/bin/yarn.js",await hS(r,"stable"));else if(this.version==="canary")a=n("https://repo.yarnpkg.com/{}/packages/yarnpkg-cli/bin/yarn.js",await hS(r,"canary"));else if(this.version==="classic")a={url:"https://classic.yarnpkg.com/latest.js",version:"classic"};else if(this.version.match(/^https?:/))a={url:this.version,version:"remote"};else if(this.version.match(/^\.{0,2}[\\/]/)||ue.isAbsolute(this.version))a={url:`file://${K.resolve(ue.toPortablePath(this.version))}`,version:"file"};else if(Or.satisfiesWithPrereleases(this.version,">=2.0.0"))a=n("https://repo.yarnpkg.com/{}/packages/yarnpkg-cli/bin/yarn.js",this.version);else if(Or.satisfiesWithPrereleases(this.version,"^0.x || ^1.x"))a=n("https://github.com/yarnpkg/yarn/releases/download/v{}/yarn-{}.js",this.version);else if(Or.validRange(this.version))a=n("https://repo.yarnpkg.com/{}/packages/yarnpkg-cli/bin/yarn.js",await oSt(r,this.version));else throw new nt(`Invalid version descriptor "${this.version}"`);return(await Ot.start({configuration:r,stdout:this.context.stdout,includeLogs:!this.context.quiet},async f=>{let p=async()=>{let h="file://";return a.url.startsWith(h)?(f.reportInfo(0,`Retrieving ${he.pretty(r,a.url,he.Type.PATH)}`),await le.readFilePromise(a.url.slice(h.length))):(f.reportInfo(0,`Downloading ${he.pretty(r,a.url,he.Type.URL)}`),await An.get(a.url,{configuration:r}))};await O5(r,a.version,p,{report:f,useYarnPath:this.useYarnPath})})).exitCode()}};async function oSt(t,e){let s=(await An.get("https://repo.yarnpkg.com/tags",{configuration:t,jsonResponse:!0})).tags.filter(a=>Or.satisfiesWithPrereleases(a,e));if(s.length===0)throw new nt(`No matching release found for range ${he.pretty(t,e,he.Type.RANGE)}.`);return s[0]}async function hS(t,e){let r=await An.get("https://repo.yarnpkg.com/tags",{configuration:t,jsonResponse:!0});if(!r.latest[e])throw new nt(`Tag ${he.pretty(t,e,he.Type.RANGE)} not found`);return r.latest[e]}async function O5(t,e,r,{report:s,useYarnPath:a}){let n,c=async()=>(typeof n>"u"&&(n=await r()),n);if(e===null){let te=await c();await le.mktempPromise(async ie=>{let Ae=K.join(ie,"yarn.cjs");await le.writeFilePromise(Ae,te);let{stdout:ce}=await Gr.execvp(process.execPath,[ue.fromPortablePath(Ae),"--version"],{cwd:ie,env:{...t.env,YARN_IGNORE_PATH:"1"}});if(e=ce.trim(),!oBe.default.valid(e))throw new Error(`Invalid semver version. ${he.pretty(t,"yarn --version",he.Type.CODE)} returned: +${e}`)})}let f=t.projectCwd??t.startingCwd,p=K.resolve(f,".yarn/releases"),h=K.resolve(p,`yarn-${e}.cjs`),E=K.relative(t.startingCwd,h),C=je.isTaggedYarnVersion(e),S=t.get("yarnPath"),P=!C,I=P||!!S||!!a;if(a===!1){if(P)throw new Yt(0,"You explicitly opted out of yarnPath usage in your command line, but the version you specified cannot be represented by Corepack");I=!1}else!I&&!process.env.COREPACK_ROOT&&(s.reportWarning(0,`You don't seem to have ${he.applyHyperlink(t,"Corepack","https://nodejs.org/api/corepack.html")} enabled; we'll have to rely on ${he.applyHyperlink(t,"yarnPath","https://yarnpkg.com/configuration/yarnrc#yarnPath")} instead`),I=!0);if(I){let te=await c();s.reportInfo(0,`Saving the new release in ${he.pretty(t,E,"magenta")}`),await le.removePromise(K.dirname(h)),await le.mkdirPromise(K.dirname(h),{recursive:!0}),await le.writeFilePromise(h,te,{mode:493}),await ze.updateConfiguration(f,{yarnPath:K.relative(f,h)})}else await le.removePromise(K.dirname(h)),await ze.updateConfiguration(f,{yarnPath:ze.deleteProperty});let R=await Ht.tryFind(f)||new Ht;R.packageManager=`yarn@${C?e:await hS(t,"stable")}`;let N={};R.exportTo(N);let U=K.join(f,Ht.fileName),W=`${JSON.stringify(N,null,R.indent)} +`;return await le.changeFilePromise(U,W,{automaticNewlines:!0}),{bundleVersion:e}}function aBe(t){return Dr[rk(t)]}var aSt=/## (?YN[0-9]{4}) - `(?[A-Z_]+)`\n\n(?
(?:.(?!##))+)/gs;async function lSt(t){let r=`https://repo.yarnpkg.com/${je.isTaggedYarnVersion(un)?un:await hS(t,"canary")}/packages/docusaurus/docs/advanced/01-general-reference/error-codes.mdx`,s=await An.get(r,{configuration:t});return new Map(Array.from(s.toString().matchAll(aSt),({groups:a})=>{if(!a)throw new Error("Assertion failed: Expected the match to have been successful");let n=aBe(a.code);if(a.name!==n)throw new Error(`Assertion failed: Invalid error code data: Expected "${a.name}" to be named "${n}"`);return[a.code,a.details]}))}var wC=class extends ut{constructor(){super(...arguments);this.code=ge.String({required:!1,validator:rB(wE(),[tB(/^YN[0-9]{4}$/)])});this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}static{this.paths=[["explain"]]}static{this.usage=ot.Usage({description:"explain an error code",details:` + When the code argument is specified, this command prints its name and its details. + + When used without arguments, this command lists all error codes and their names. + `,examples:[["Explain an error code","$0 explain YN0006"],["List all error codes","$0 explain"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins);if(typeof this.code<"u"){let s=aBe(this.code),a=he.pretty(r,s,he.Type.CODE),n=this.cli.format().header(`${this.code} - ${a}`),f=(await lSt(r)).get(this.code),p=typeof f<"u"?he.jsonOrPretty(this.json,r,he.tuple(he.Type.MARKDOWN,{text:f,format:this.cli.format(),paragraphs:!0})):`This error code does not have a description. + +You can help us by editing this page on GitHub \u{1F642}: +${he.jsonOrPretty(this.json,r,he.tuple(he.Type.URL,"https://github.com/yarnpkg/berry/blob/master/packages/docusaurus/docs/advanced/01-general-reference/error-codes.mdx"))} +`;this.json?this.context.stdout.write(`${JSON.stringify({code:this.code,name:s,details:p})} +`):this.context.stdout.write(`${n} + +${p} +`)}else{let s={children:je.mapAndFilter(Object.entries(Dr),([a,n])=>Number.isNaN(Number(a))?je.mapAndFilter.skip:{label:Vf(Number(a)),value:he.tuple(he.Type.CODE,n)})};ks.emitTree(s,{configuration:r,stdout:this.context.stdout,json:this.json})}}};Ve();bt();Wt();var lBe=et(Sa()),BC=class extends ut{constructor(){super(...arguments);this.all=ge.Boolean("-A,--all",!1,{description:"Print versions of a package from the whole project"});this.recursive=ge.Boolean("-R,--recursive",!1,{description:"Print information for all packages, including transitive dependencies"});this.extra=ge.Array("-X,--extra",[],{description:"An array of requests of extra data provided by plugins"});this.cache=ge.Boolean("--cache",!1,{description:"Print information about the cache entry of a package (path, size, checksum)"});this.dependents=ge.Boolean("--dependents",!1,{description:"Print all dependents for each matching package"});this.manifest=ge.Boolean("--manifest",!1,{description:"Print data obtained by looking at the package archive (license, homepage, ...)"});this.nameOnly=ge.Boolean("--name-only",!1,{description:"Only print the name for the matching packages"});this.virtuals=ge.Boolean("--virtuals",!1,{description:"Print each instance of the virtual packages"});this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.patterns=ge.Rest()}static{this.paths=[["info"]]}static{this.usage=ot.Usage({description:"see information related to packages",details:"\n This command prints various information related to the specified packages, accepting glob patterns.\n\n By default, if the locator reference is missing, Yarn will default to print the information about all the matching direct dependencies of the package for the active workspace. To instead print all versions of the package that are direct dependencies of any of your workspaces, use the `-A,--all` flag. Adding the `-R,--recursive` flag will also report transitive dependencies.\n\n Some fields will be hidden by default in order to keep the output readable, but can be selectively displayed by using additional options (`--dependents`, `--manifest`, `--virtuals`, ...) described in the option descriptions.\n\n Note that this command will only print the information directly related to the selected packages - if you wish to know why the package is there in the first place, use `yarn why` which will do just that (it also provides a `-R,--recursive` flag that may be of some help).\n ",examples:[["Show information about Lodash","$0 info lodash"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n=await Jr.find(r);if(!a&&!this.all)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState();let c=new Set(this.extra);this.cache&&c.add("cache"),this.dependents&&c.add("dependents"),this.manifest&&c.add("manifest");let f=(ie,{recursive:Ae})=>{let ce=ie.anchoredLocator.locatorHash,me=new Map,pe=[ce];for(;pe.length>0;){let Be=pe.shift();if(me.has(Be))continue;let Ce=s.storedPackages.get(Be);if(typeof Ce>"u")throw new Error("Assertion failed: Expected the package to be registered");if(me.set(Be,Ce),q.isVirtualLocator(Ce)&&pe.push(q.devirtualizeLocator(Ce).locatorHash),!(!Ae&&Be!==ce))for(let g of Ce.dependencies.values()){let we=s.storedResolutions.get(g.descriptorHash);if(typeof we>"u")throw new Error("Assertion failed: Expected the resolution to be registered");pe.push(we)}}return me.values()},p=({recursive:ie})=>{let Ae=new Map;for(let ce of s.workspaces)for(let me of f(ce,{recursive:ie}))Ae.set(me.locatorHash,me);return Ae.values()},h=({all:ie,recursive:Ae})=>ie&&Ae?s.storedPackages.values():ie?p({recursive:Ae}):f(a,{recursive:Ae}),E=({all:ie,recursive:Ae})=>{let ce=h({all:ie,recursive:Ae}),me=this.patterns.map(Ce=>{let g=q.parseLocator(Ce),we=lBe.default.makeRe(q.stringifyIdent(g)),Ee=q.isVirtualLocator(g),fe=Ee?q.devirtualizeLocator(g):g;return se=>{let X=q.stringifyIdent(se);if(!we.test(X))return!1;if(g.reference==="unknown")return!0;let De=q.isVirtualLocator(se),Re=De?q.devirtualizeLocator(se):se;return!(Ee&&De&&g.reference!==se.reference||fe.reference!==Re.reference)}}),pe=je.sortMap([...ce],Ce=>q.stringifyLocator(Ce));return{selection:pe.filter(Ce=>me.length===0||me.some(g=>g(Ce))),sortedLookup:pe}},{selection:C,sortedLookup:S}=E({all:this.all,recursive:this.recursive});if(C.length===0)throw new nt("No package matched your request");let P=new Map;if(this.dependents)for(let ie of S)for(let Ae of ie.dependencies.values()){let ce=s.storedResolutions.get(Ae.descriptorHash);if(typeof ce>"u")throw new Error("Assertion failed: Expected the resolution to be registered");je.getArrayWithDefault(P,ce).push(ie)}let I=new Map;for(let ie of S){if(!q.isVirtualLocator(ie))continue;let Ae=q.devirtualizeLocator(ie);je.getArrayWithDefault(I,Ae.locatorHash).push(ie)}let R={},N={children:R},U=r.makeFetcher(),W={project:s,fetcher:U,cache:n,checksums:s.storedChecksums,report:new Wi,cacheOptions:{skipIntegrityCheck:!0}},te=[async(ie,Ae,ce)=>{if(!Ae.has("manifest"))return;let me=await U.fetch(ie,W),pe;try{pe=await Ht.find(me.prefixPath,{baseFs:me.packageFs})}finally{me.releaseFs?.()}ce("Manifest",{License:he.tuple(he.Type.NO_HINT,pe.license),Homepage:he.tuple(he.Type.URL,pe.raw.homepage??null)})},async(ie,Ae,ce)=>{if(!Ae.has("cache"))return;let me=s.storedChecksums.get(ie.locatorHash)??null,pe=n.getLocatorPath(ie,me),Be;if(pe!==null)try{Be=await le.statPromise(pe)}catch{}let Ce=typeof Be<"u"?[Be.size,he.Type.SIZE]:void 0;ce("Cache",{Checksum:he.tuple(he.Type.NO_HINT,me),Path:he.tuple(he.Type.PATH,pe),Size:Ce})}];for(let ie of C){let Ae=q.isVirtualLocator(ie);if(!this.virtuals&&Ae)continue;let ce={},me={value:[ie,he.Type.LOCATOR],children:ce};if(R[q.stringifyLocator(ie)]=me,this.nameOnly){delete me.children;continue}let pe=I.get(ie.locatorHash);typeof pe<"u"&&(ce.Instances={label:"Instances",value:he.tuple(he.Type.NUMBER,pe.length)}),ce.Version={label:"Version",value:he.tuple(he.Type.NO_HINT,ie.version)};let Be=(g,we)=>{let Ee={};if(ce[g]=Ee,Array.isArray(we))Ee.children=we.map(fe=>({value:fe}));else{let fe={};Ee.children=fe;for(let[se,X]of Object.entries(we))typeof X>"u"||(fe[se]={label:se,value:X})}};if(!Ae){for(let g of te)await g(ie,c,Be);await r.triggerHook(g=>g.fetchPackageInfo,ie,c,Be)}ie.bin.size>0&&!Ae&&Be("Exported Binaries",[...ie.bin.keys()].map(g=>he.tuple(he.Type.PATH,g)));let Ce=P.get(ie.locatorHash);typeof Ce<"u"&&Ce.length>0&&Be("Dependents",Ce.map(g=>he.tuple(he.Type.LOCATOR,g))),ie.dependencies.size>0&&!Ae&&Be("Dependencies",[...ie.dependencies.values()].map(g=>{let we=s.storedResolutions.get(g.descriptorHash),Ee=typeof we<"u"?s.storedPackages.get(we)??null:null;return he.tuple(he.Type.RESOLUTION,{descriptor:g,locator:Ee})})),ie.peerDependencies.size>0&&Ae&&Be("Peer dependencies",[...ie.peerDependencies.values()].map(g=>{let we=ie.dependencies.get(g.identHash),Ee=typeof we<"u"?s.storedResolutions.get(we.descriptorHash)??null:null,fe=Ee!==null?s.storedPackages.get(Ee)??null:null;return he.tuple(he.Type.RESOLUTION,{descriptor:g,locator:fe})}))}ks.emitTree(N,{configuration:r,json:this.json,stdout:this.context.stdout,separators:this.nameOnly?0:2})}};Ve();bt();Bc();var aF=et(Nd());Wt();var L5=et(fi());Ul();var cSt=[{selector:t=>t===-1,name:"nodeLinker",value:"node-modules"},{selector:t=>t!==-1&&t<8,name:"enableGlobalCache",value:!1},{selector:t=>t!==-1&&t<8,name:"compressionLevel",value:"mixed"}],vC=class extends ut{constructor(){super(...arguments);this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.immutable=ge.Boolean("--immutable",{description:"Abort with an error exit code if the lockfile was to be modified"});this.immutableCache=ge.Boolean("--immutable-cache",{description:"Abort with an error exit code if the cache folder was to be modified"});this.refreshLockfile=ge.Boolean("--refresh-lockfile",{description:"Refresh the package metadata stored in the lockfile"});this.checkCache=ge.Boolean("--check-cache",{description:"Always refetch the packages and ensure that their checksums are consistent"});this.checkResolutions=ge.Boolean("--check-resolutions",{description:"Validates that the package resolutions are coherent"});this.inlineBuilds=ge.Boolean("--inline-builds",{description:"Verbosely print the output of the build steps of dependencies"});this.mode=ge.String("--mode",{description:"Change what artifacts installs generate",validator:Ao(ec)});this.cacheFolder=ge.String("--cache-folder",{hidden:!0});this.frozenLockfile=ge.Boolean("--frozen-lockfile",{hidden:!0});this.ignoreEngines=ge.Boolean("--ignore-engines",{hidden:!0});this.nonInteractive=ge.Boolean("--non-interactive",{hidden:!0});this.preferOffline=ge.Boolean("--prefer-offline",{hidden:!0});this.production=ge.Boolean("--production",{hidden:!0});this.registry=ge.String("--registry",{hidden:!0});this.silent=ge.Boolean("--silent",{hidden:!0});this.networkTimeout=ge.String("--network-timeout",{hidden:!0})}static{this.paths=[["install"],ot.Default]}static{this.usage=ot.Usage({description:"install the project dependencies",details:"\n This command sets up your project if needed. The installation is split into four different steps that each have their own characteristics:\n\n - **Resolution:** First the package manager will resolve your dependencies. The exact way a dependency version is privileged over another isn't standardized outside of the regular semver guarantees. If a package doesn't resolve to what you would expect, check that all dependencies are correctly declared (also check our website for more information: ).\n\n - **Fetch:** Then we download all the dependencies if needed, and make sure that they're all stored within our cache (check the value of `cacheFolder` in `yarn config` to see where the cache files are stored).\n\n - **Link:** Then we send the dependency tree information to internal plugins tasked with writing them on the disk in some form (for example by generating the `.pnp.cjs` file you might know).\n\n - **Build:** Once the dependency tree has been written on the disk, the package manager will now be free to run the build scripts for all packages that might need it, in a topological order compatible with the way they depend on one another. See https://yarnpkg.com/advanced/lifecycle-scripts for detail.\n\n Note that running this command is not part of the recommended workflow. Yarn supports zero-installs, which means that as long as you store your cache and your `.pnp.cjs` file inside your repository, everything will work without requiring any install right after cloning your repository or switching branches.\n\n If the `--immutable` option is set (defaults to true on CI), Yarn will abort with an error exit code if the lockfile was to be modified (other paths can be added using the `immutablePatterns` configuration setting). For backward compatibility we offer an alias under the name of `--frozen-lockfile`, but it will be removed in a later release.\n\n If the `--immutable-cache` option is set, Yarn will abort with an error exit code if the cache folder was to be modified (either because files would be added, or because they'd be removed).\n\n If the `--refresh-lockfile` option is set, Yarn will keep the same resolution for the packages currently in the lockfile but will refresh their metadata. If used together with `--immutable`, it can validate that the lockfile information are consistent. This flag is enabled by default when Yarn detects it runs within a pull request context.\n\n If the `--check-cache` option is set, Yarn will always refetch the packages and will ensure that their checksum matches what's 1/ described in the lockfile 2/ inside the existing cache files (if present). This is recommended as part of your CI workflow if you're both following the Zero-Installs model and accepting PRs from third-parties, as they'd otherwise have the ability to alter the checked-in packages before submitting them.\n\n If the `--inline-builds` option is set, Yarn will verbosely print the output of the build steps of your dependencies (instead of writing them into individual files). This is likely useful mostly for debug purposes only when using Docker-like environments.\n\n If the `--mode=` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n ",examples:[["Install the project","$0 install"],["Validate a project when using Zero-Installs","$0 install --immutable --immutable-cache"],["Validate a project when using Zero-Installs (slightly safer if you accept external PRs)","$0 install --immutable --immutable-cache --check-cache"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins);typeof this.inlineBuilds<"u"&&r.useWithSource("",{enableInlineBuilds:this.inlineBuilds},r.startingCwd,{overwrite:!0});let s=!!process.env.FUNCTION_TARGET||!!process.env.GOOGLE_RUNTIME,a=await DI({configuration:r,stdout:this.context.stdout},[{option:this.ignoreEngines,message:"The --ignore-engines option is deprecated; engine checking isn't a core feature anymore",error:!aF.default.VERCEL},{option:this.registry,message:"The --registry option is deprecated; prefer setting npmRegistryServer in your .yarnrc.yml file"},{option:this.preferOffline,message:"The --prefer-offline flag is deprecated; use the --cached flag with 'yarn add' instead",error:!aF.default.VERCEL},{option:this.production,message:"The --production option is deprecated on 'install'; use 'yarn workspaces focus' instead",error:!0},{option:this.nonInteractive,message:"The --non-interactive option is deprecated",error:!s},{option:this.frozenLockfile,message:"The --frozen-lockfile option is deprecated; use --immutable and/or --immutable-cache instead",callback:()=>this.immutable=this.frozenLockfile},{option:this.cacheFolder,message:"The cache-folder option has been deprecated; use rc settings instead",error:!aF.default.NETLIFY}]);if(a!==null)return a;let n=this.mode==="update-lockfile";if(n&&(this.immutable||this.immutableCache))throw new nt(`${he.pretty(r,"--immutable",he.Type.CODE)} and ${he.pretty(r,"--immutable-cache",he.Type.CODE)} cannot be used with ${he.pretty(r,"--mode=update-lockfile",he.Type.CODE)}`);let c=(this.immutable??r.get("enableImmutableInstalls"))&&!n,f=this.immutableCache&&!n;if(r.projectCwd!==null){let R=await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async N=>{let U=!1;await ASt(r,c)&&(N.reportInfo(48,"Automatically removed core plugins that are now builtins \u{1F44D}"),U=!0),await fSt(r,c)&&(N.reportInfo(48,"Automatically fixed merge conflicts \u{1F44D}"),U=!0),U&&N.reportSeparator()});if(R.hasErrors())return R.exitCode()}if(r.projectCwd!==null){let R=await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async N=>{if(ze.telemetry?.isNew)ze.telemetry.commitTips(),N.reportInfo(65,"Yarn will periodically gather anonymous telemetry: https://yarnpkg.com/advanced/telemetry"),N.reportInfo(65,`Run ${he.pretty(r,"yarn config set --home enableTelemetry 0",he.Type.CODE)} to disable`),N.reportSeparator();else if(ze.telemetry?.shouldShowTips){let U=await An.get("https://repo.yarnpkg.com/tags",{configuration:r,jsonResponse:!0}).catch(()=>null);if(U!==null){let W=null;if(un!==null){let ie=L5.default.prerelease(un)?"canary":"stable",Ae=U.latest[ie];L5.default.gt(Ae,un)&&(W=[ie,Ae])}if(W)ze.telemetry.commitTips(),N.reportInfo(88,`${he.applyStyle(r,`A new ${W[0]} version of Yarn is available:`,he.Style.BOLD)} ${q.prettyReference(r,W[1])}!`),N.reportInfo(88,`Upgrade now by running ${he.pretty(r,`yarn set version ${W[1]}`,he.Type.CODE)}`),N.reportSeparator();else{let te=ze.telemetry.selectTip(U.tips);te&&(N.reportInfo(89,he.pretty(r,te.message,he.Type.MARKDOWN_INLINE)),te.url&&N.reportInfo(89,`Learn more at ${te.url}`),N.reportSeparator())}}}});if(R.hasErrors())return R.exitCode()}let{project:p,workspace:h}=await Tt.find(r,this.context.cwd),E=p.lockfileLastVersion;if(E!==null){let R=await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async N=>{let U={};for(let W of cSt)W.selector(E)&&typeof r.sources.get(W.name)>"u"&&(r.use("",{[W.name]:W.value},p.cwd,{overwrite:!0}),U[W.name]=W.value);Object.keys(U).length>0&&(await ze.updateConfiguration(p.cwd,U),N.reportInfo(87,"Migrated your project to the latest Yarn version \u{1F680}"),N.reportSeparator())});if(R.hasErrors())return R.exitCode()}let C=await Jr.find(r,{immutable:f,check:this.checkCache});if(!h)throw new ar(p.cwd,this.context.cwd);await p.restoreInstallState({restoreResolutions:!1});let S=r.get("enableHardenedMode");S&&typeof r.sources.get("enableHardenedMode")>"u"&&await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async R=>{R.reportWarning(0,"Yarn detected that the current workflow is executed from a public pull request. For safety the hardened mode has been enabled."),R.reportWarning(0,`It will prevent malicious lockfile manipulations, in exchange for a slower install time. You can opt-out if necessary; check our ${he.applyHyperlink(r,"documentation","https://yarnpkg.com/features/security#hardened-mode")} for more details.`),R.reportSeparator()}),(this.refreshLockfile??S)&&(p.lockfileNeedsRefresh=!0);let P=this.checkResolutions??S;return(await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout,forceSectionAlignment:!0,includeLogs:!0,includeVersion:!0},async R=>{await p.install({cache:C,report:R,immutable:c,checkResolutions:P,mode:this.mode})})).exitCode()}},uSt="<<<<<<<";async function fSt(t,e){if(!t.projectCwd)return!1;let r=K.join(t.projectCwd,Er.lockfile);if(!await le.existsPromise(r)||!(await le.readFilePromise(r,"utf8")).includes(uSt))return!1;if(e)throw new Yt(47,"Cannot autofix a lockfile when running an immutable install");let a=await Gr.execvp("git",["rev-parse","MERGE_HEAD","HEAD"],{cwd:t.projectCwd});if(a.code!==0&&(a=await Gr.execvp("git",["rev-parse","REBASE_HEAD","HEAD"],{cwd:t.projectCwd})),a.code!==0&&(a=await Gr.execvp("git",["rev-parse","CHERRY_PICK_HEAD","HEAD"],{cwd:t.projectCwd})),a.code!==0)throw new Yt(83,"Git returned an error when trying to find the commits pertaining to the conflict");let n=await Promise.all(a.stdout.trim().split(/\n/).map(async f=>{let p=await Gr.execvp("git",["show",`${f}:./${Er.lockfile}`],{cwd:t.projectCwd});if(p.code!==0)throw new Yt(83,`Git returned an error when trying to access the lockfile content in ${f}`);try{return ls(p.stdout)}catch{throw new Yt(46,"A variant of the conflicting lockfile failed to parse")}}));n=n.filter(f=>!!f.__metadata);for(let f of n){if(f.__metadata.version<7)for(let p of Object.keys(f)){if(p==="__metadata")continue;let h=q.parseDescriptor(p,!0),E=t.normalizeDependency(h),C=q.stringifyDescriptor(E);C!==p&&(f[C]=f[p],delete f[p])}for(let p of Object.keys(f)){if(p==="__metadata")continue;let h=f[p].checksum;typeof h>"u"||h.includes("/")||(f[p].checksum=`${f.__metadata.cacheKey}/${h}`)}}let c=Object.assign({},...n);c.__metadata.version=`${Math.min(...n.map(f=>parseInt(f.__metadata.version??0)))}`,c.__metadata.cacheKey="merged";for(let[f,p]of Object.entries(c))typeof p=="string"&&delete c[f];return await le.changeFilePromise(r,il(c),{automaticNewlines:!0}),!0}async function ASt(t,e){if(!t.projectCwd)return!1;let r=[],s=K.join(t.projectCwd,".yarn/plugins/@yarnpkg");return await ze.updateConfiguration(t.projectCwd,{plugins:n=>{if(!Array.isArray(n))return n;let c=n.filter(f=>{if(!f.path)return!0;let p=K.resolve(t.projectCwd,f.path),h=Ev.has(f.spec)&&K.contains(s,p);return h&&r.push(p),!h});return c.length===0?ze.deleteProperty:c.length===n.length?n:c}},{immutable:e})?(await Promise.all(r.map(async n=>{await le.removePromise(n)})),!0):!1}Ve();bt();Wt();var SC=class extends ut{constructor(){super(...arguments);this.all=ge.Boolean("-A,--all",!1,{description:"Link all workspaces belonging to the target projects to the current one"});this.private=ge.Boolean("-p,--private",!1,{description:"Also link private workspaces belonging to the target projects to the current one"});this.relative=ge.Boolean("-r,--relative",!1,{description:"Link workspaces using relative paths instead of absolute paths"});this.destinations=ge.Rest()}static{this.paths=[["link"]]}static{this.usage=ot.Usage({description:"connect the local project to another one",details:"\n This command will set a new `resolutions` field in the project-level manifest and point it to the workspace at the specified location (even if part of another project).\n ",examples:[["Register one or more remote workspaces for use in the current project","$0 link ~/ts-loader ~/jest"],["Register all workspaces from a remote project for use in the current project","$0 link ~/jest --all"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n=await Jr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState({restoreResolutions:!1});let c=s.topLevelWorkspace,f=[];for(let p of this.destinations){let h=K.resolve(this.context.cwd,ue.toPortablePath(p)),E=await ze.find(h,this.context.plugins,{useRc:!1,strict:!1}),{project:C,workspace:S}=await Tt.find(E,h);if(s.cwd===C.cwd)throw new nt(`Invalid destination '${p}'; Can't link the project to itself`);if(!S)throw new ar(C.cwd,h);if(this.all){let P=!1;for(let I of C.workspaces)I.manifest.name&&(!I.manifest.private||this.private)&&(f.push(I),P=!0);if(!P)throw new nt(`No workspace found to be linked in the target project: ${p}`)}else{if(!S.manifest.name)throw new nt(`The target workspace at '${p}' doesn't have a name and thus cannot be linked`);if(S.manifest.private&&!this.private)throw new nt(`The target workspace at '${p}' is marked private - use the --private flag to link it anyway`);f.push(S)}}for(let p of f){let h=q.stringifyIdent(p.anchoredLocator),E=this.relative?K.relative(s.cwd,p.cwd):p.cwd;c.manifest.resolutions.push({pattern:{descriptor:{fullName:h}},reference:`portal:${E}`})}return await s.installWithNewReport({stdout:this.context.stdout},{cache:n})}};Wt();var DC=class extends ut{constructor(){super(...arguments);this.args=ge.Proxy()}static{this.paths=[["node"]]}static{this.usage=ot.Usage({description:"run node with the hook already setup",details:` + This command simply runs Node. It also makes sure to call it in a way that's compatible with the current project (for example, on PnP projects the environment will be setup in such a way that PnP will be correctly injected into the environment). + + The Node process will use the exact same version of Node as the one used to run Yarn itself, which might be a good way to ensure that your commands always use a consistent Node version. + `,examples:[["Run a Node script","$0 node ./my-script.js"]]})}async execute(){return this.cli.run(["exec","node",...this.args])}};Ve();Wt();var bC=class extends ut{constructor(){super(...arguments);this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}static{this.paths=[["plugin","check"]]}static{this.usage=ot.Usage({category:"Plugin-related commands",description:"find all third-party plugins that differ from their own spec",details:` + Check only the plugins from https. + + If this command detects any plugin differences in the CI environment, it will throw an error. + `,examples:[["find all third-party plugins that differ from their own spec","$0 plugin check"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s=await ze.findRcFiles(this.context.cwd);return(await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout},async n=>{for(let c of s)if(c.data?.plugins)for(let f of c.data.plugins){if(!f.checksum||!f.spec.match(/^https?:/))continue;let p=await An.get(f.spec,{configuration:r}),h=Nn.makeHash(p);if(f.checksum===h)continue;let E=he.pretty(r,f.path,he.Type.PATH),C=he.pretty(r,f.spec,he.Type.URL),S=`${E} is different from the file provided by ${C}`;n.reportJson({...f,newChecksum:h}),n.reportError(0,S)}})).exitCode()}};Ve();Ve();bt();Wt();var pBe=ye("os");Ve();bt();Wt();var cBe=ye("os");Ve();Bc();Wt();var pSt="https://raw.githubusercontent.com/yarnpkg/berry/master/plugins.yml";async function Dm(t,e){let r=await An.get(pSt,{configuration:t}),s=ls(r.toString());return Object.fromEntries(Object.entries(s).filter(([a,n])=>!e||Or.satisfiesWithPrereleases(e,n.range??"<4.0.0-rc.1")))}var PC=class extends ut{constructor(){super(...arguments);this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}static{this.paths=[["plugin","list"]]}static{this.usage=ot.Usage({category:"Plugin-related commands",description:"list the available official plugins",details:"\n This command prints the plugins available directly from the Yarn repository. Only those plugins can be referenced by name in `yarn plugin import`.\n ",examples:[["List the official plugins","$0 plugin list"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins);return(await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout},async a=>{let n=await Dm(r,un);for(let[c,{experimental:f,...p}]of Object.entries(n)){let h=c;f&&(h+=" [experimental]"),a.reportJson({name:c,experimental:f,...p}),a.reportInfo(null,h)}})).exitCode()}};var hSt=/^[0-9]+$/,gSt=process.platform==="win32";function uBe(t){return hSt.test(t)?`pull/${t}/head`:t}var dSt=({repository:t,branch:e},r)=>[["git","init",ue.fromPortablePath(r)],["git","remote","add","origin",t],["git","fetch","origin","--depth=1",uBe(e)],["git","reset","--hard","FETCH_HEAD"]],mSt=({branch:t})=>[["git","fetch","origin","--depth=1",uBe(t),"--force"],["git","reset","--hard","FETCH_HEAD"],["git","clean","-dfx","-e","packages/yarnpkg-cli/bundles"]],ySt=({plugins:t,noMinify:e},r,s)=>[["yarn","build:cli",...new Array().concat(...t.map(a=>["--plugin",K.resolve(s,a)])),...e?["--no-minify"]:[],"|"],[gSt?"move":"mv","packages/yarnpkg-cli/bundles/yarn.js",ue.fromPortablePath(r),"|"]],xC=class extends ut{constructor(){super(...arguments);this.installPath=ge.String("--path",{description:"The path where the repository should be cloned to"});this.repository=ge.String("--repository","https://github.com/yarnpkg/berry.git",{description:"The repository that should be cloned"});this.branch=ge.String("--branch","master",{description:"The branch of the repository that should be cloned"});this.plugins=ge.Array("--plugin",[],{description:"An array of additional plugins that should be included in the bundle"});this.dryRun=ge.Boolean("-n,--dry-run",!1,{description:"If set, the bundle will be built but not added to the project"});this.noMinify=ge.Boolean("--no-minify",!1,{description:"Build a bundle for development (debugging) - non-minified and non-mangled"});this.force=ge.Boolean("-f,--force",!1,{description:"Always clone the repository instead of trying to fetch the latest commits"});this.skipPlugins=ge.Boolean("--skip-plugins",!1,{description:"Skip updating the contrib plugins"})}static{this.paths=[["set","version","from","sources"]]}static{this.usage=ot.Usage({description:"build Yarn from master",details:` + This command will clone the Yarn repository into a temporary folder, then build it. The resulting bundle will then be copied into the local project. + + By default, it also updates all contrib plugins to the same commit the bundle is built from. This behavior can be disabled by using the \`--skip-plugins\` flag. + `,examples:[["Build Yarn from master","$0 set version from sources"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s}=await Tt.find(r,this.context.cwd),a=typeof this.installPath<"u"?K.resolve(this.context.cwd,ue.toPortablePath(this.installPath)):K.resolve(ue.toPortablePath((0,cBe.tmpdir)()),"yarnpkg-sources",Nn.makeHash(this.repository).slice(0,6));return(await Ot.start({configuration:r,stdout:this.context.stdout},async c=>{await M5(this,{configuration:r,report:c,target:a}),c.reportSeparator(),c.reportInfo(0,"Building a fresh bundle"),c.reportSeparator();let f=await Gr.execvp("git",["rev-parse","--short","HEAD"],{cwd:a,strict:!0}),p=K.join(a,`packages/yarnpkg-cli/bundles/yarn-${f.stdout.trim()}.js`);le.existsSync(p)||(await gS(ySt(this,p,a),{configuration:r,context:this.context,target:a}),c.reportSeparator());let h=await le.readFilePromise(p);if(!this.dryRun){let{bundleVersion:E}=await O5(r,null,async()=>h,{report:c});this.skipPlugins||await ESt(this,E,{project:s,report:c,target:a})}})).exitCode()}};async function gS(t,{configuration:e,context:r,target:s}){for(let[a,...n]of t){let c=n[n.length-1]==="|";if(c&&n.pop(),c)await Gr.pipevp(a,n,{cwd:s,stdin:r.stdin,stdout:r.stdout,stderr:r.stderr,strict:!0});else{r.stdout.write(`${he.pretty(e,` $ ${[a,...n].join(" ")}`,"grey")} +`);try{await Gr.execvp(a,n,{cwd:s,strict:!0})}catch(f){throw r.stdout.write(f.stdout||f.stack),f}}}}async function M5(t,{configuration:e,report:r,target:s}){let a=!1;if(!t.force&&le.existsSync(K.join(s,".git"))){r.reportInfo(0,"Fetching the latest commits"),r.reportSeparator();try{await gS(mSt(t),{configuration:e,context:t.context,target:s}),a=!0}catch{r.reportSeparator(),r.reportWarning(0,"Repository update failed; we'll try to regenerate it")}}a||(r.reportInfo(0,"Cloning the remote repository"),r.reportSeparator(),await le.removePromise(s),await le.mkdirPromise(s,{recursive:!0}),await gS(dSt(t,s),{configuration:e,context:t.context,target:s}))}async function ESt(t,e,{project:r,report:s,target:a}){let n=await Dm(r.configuration,e),c=new Set(Object.keys(n));for(let f of r.configuration.plugins.keys())c.has(f)&&await _5(f,t,{project:r,report:s,target:a})}Ve();Ve();bt();Wt();var fBe=et(fi()),ABe=ye("vm");var kC=class extends ut{constructor(){super(...arguments);this.name=ge.String();this.checksum=ge.Boolean("--checksum",!0,{description:"Whether to care if this plugin is modified"})}static{this.paths=[["plugin","import"]]}static{this.usage=ot.Usage({category:"Plugin-related commands",description:"download a plugin",details:` + This command downloads the specified plugin from its remote location and updates the configuration to reference it in further CLI invocations. + + Three types of plugin references are accepted: + + - If the plugin is stored within the Yarn repository, it can be referenced by name. + - Third-party plugins can be referenced directly through their public urls. + - Local plugins can be referenced by their path on the disk. + + If the \`--no-checksum\` option is set, Yarn will no longer care if the plugin is modified. + + Plugins cannot be downloaded from the npm registry, and aren't allowed to have dependencies (they need to be bundled into a single file, possibly thanks to the \`@yarnpkg/builder\` package). + `,examples:[['Download and activate the "@yarnpkg/plugin-exec" plugin',"$0 plugin import @yarnpkg/plugin-exec"],['Download and activate the "@yarnpkg/plugin-exec" plugin (shorthand)',"$0 plugin import exec"],["Download and activate a community plugin","$0 plugin import https://example.org/path/to/plugin.js"],["Activate a local plugin","$0 plugin import ./path/to/plugin.js"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins);return(await Ot.start({configuration:r,stdout:this.context.stdout},async a=>{let{project:n}=await Tt.find(r,this.context.cwd),c,f;if(this.name.match(/^\.{0,2}[\\/]/)||ue.isAbsolute(this.name)){let p=K.resolve(this.context.cwd,ue.toPortablePath(this.name));a.reportInfo(0,`Reading ${he.pretty(r,p,he.Type.PATH)}`),c=K.relative(n.cwd,p),f=await le.readFilePromise(p)}else{let p;if(this.name.match(/^https?:/)){try{new URL(this.name)}catch{throw new Yt(52,`Plugin specifier "${this.name}" is neither a plugin name nor a valid url`)}c=this.name,p=this.name}else{let h=q.parseLocator(this.name.replace(/^((@yarnpkg\/)?plugin-)?/,"@yarnpkg/plugin-"));if(h.reference!=="unknown"&&!fBe.default.valid(h.reference))throw new Yt(0,"Official plugins only accept strict version references. Use an explicit URL if you wish to download them from another location.");let E=q.stringifyIdent(h),C=await Dm(r,un);if(!Object.hasOwn(C,E)){let S=`Couldn't find a plugin named ${q.prettyIdent(r,h)} on the remote registry. +`;throw r.plugins.has(E)?S+=`A plugin named ${q.prettyIdent(r,h)} is already installed; possibly attempting to import a built-in plugin.`:S+=`Note that only the plugins referenced on our website (${he.pretty(r,"https://github.com/yarnpkg/berry/blob/master/plugins.yml",he.Type.URL)}) can be referenced by their name; any other plugin will have to be referenced through its public url (for example ${he.pretty(r,"https://github.com/yarnpkg/berry/raw/master/packages/plugin-typescript/bin/%40yarnpkg/plugin-typescript.js",he.Type.URL)}).`,new Yt(51,S)}c=E,p=C[E].url,h.reference!=="unknown"?p=p.replace(/\/master\//,`/${E}/${h.reference}/`):un!==null&&(p=p.replace(/\/master\//,`/@yarnpkg/cli/${un}/`))}a.reportInfo(0,`Downloading ${he.pretty(r,p,"green")}`),f=await An.get(p,{configuration:r})}await U5(c,f,{checksum:this.checksum,project:n,report:a})})).exitCode()}};async function U5(t,e,{checksum:r=!0,project:s,report:a}){let{configuration:n}=s,c={},f={exports:c};(0,ABe.runInNewContext)(e.toString(),{module:f,exports:c});let h=`.yarn/plugins/${f.exports.name}.cjs`,E=K.resolve(s.cwd,h);a.reportInfo(0,`Saving the new plugin in ${he.pretty(n,h,"magenta")}`),await le.mkdirPromise(K.dirname(E),{recursive:!0}),await le.writeFilePromise(E,e);let C={path:h,spec:t};r&&(C.checksum=Nn.makeHash(e)),await ze.addPlugin(s.cwd,[C])}var ISt=({pluginName:t,noMinify:e},r)=>[["yarn",`build:${t}`,...e?["--no-minify"]:[],"|"]],QC=class extends ut{constructor(){super(...arguments);this.installPath=ge.String("--path",{description:"The path where the repository should be cloned to"});this.repository=ge.String("--repository","https://github.com/yarnpkg/berry.git",{description:"The repository that should be cloned"});this.branch=ge.String("--branch","master",{description:"The branch of the repository that should be cloned"});this.noMinify=ge.Boolean("--no-minify",!1,{description:"Build a plugin for development (debugging) - non-minified and non-mangled"});this.force=ge.Boolean("-f,--force",!1,{description:"Always clone the repository instead of trying to fetch the latest commits"});this.name=ge.String()}static{this.paths=[["plugin","import","from","sources"]]}static{this.usage=ot.Usage({category:"Plugin-related commands",description:"build a plugin from sources",details:` + This command clones the Yarn repository into a temporary folder, builds the specified contrib plugin and updates the configuration to reference it in further CLI invocations. + + The plugins can be referenced by their short name if sourced from the official Yarn repository. + `,examples:[['Build and activate the "@yarnpkg/plugin-exec" plugin',"$0 plugin import from sources @yarnpkg/plugin-exec"],['Build and activate the "@yarnpkg/plugin-exec" plugin (shorthand)',"$0 plugin import from sources exec"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s=typeof this.installPath<"u"?K.resolve(this.context.cwd,ue.toPortablePath(this.installPath)):K.resolve(ue.toPortablePath((0,pBe.tmpdir)()),"yarnpkg-sources",Nn.makeHash(this.repository).slice(0,6));return(await Ot.start({configuration:r,stdout:this.context.stdout},async n=>{let{project:c}=await Tt.find(r,this.context.cwd),f=q.parseIdent(this.name.replace(/^((@yarnpkg\/)?plugin-)?/,"@yarnpkg/plugin-")),p=q.stringifyIdent(f),h=await Dm(r,un);if(!Object.hasOwn(h,p))throw new Yt(51,`Couldn't find a plugin named "${p}" on the remote registry. Note that only the plugins referenced on our website (https://github.com/yarnpkg/berry/blob/master/plugins.yml) can be built and imported from sources.`);let E=p;await M5(this,{configuration:r,report:n,target:s}),await _5(E,this,{project:c,report:n,target:s})})).exitCode()}};async function _5(t,{context:e,noMinify:r},{project:s,report:a,target:n}){let c=t.replace(/@yarnpkg\//,""),{configuration:f}=s;a.reportSeparator(),a.reportInfo(0,`Building a fresh ${c}`),a.reportSeparator(),await gS(ISt({pluginName:c,noMinify:r},n),{configuration:f,context:e,target:n}),a.reportSeparator();let p=K.resolve(n,`packages/${c}/bundles/${t}.js`),h=await le.readFilePromise(p);await U5(t,h,{project:s,report:a})}Ve();bt();Wt();var TC=class extends ut{constructor(){super(...arguments);this.name=ge.String()}static{this.paths=[["plugin","remove"]]}static{this.usage=ot.Usage({category:"Plugin-related commands",description:"remove a plugin",details:` + This command deletes the specified plugin from the .yarn/plugins folder and removes it from the configuration. + + **Note:** The plugins have to be referenced by their name property, which can be obtained using the \`yarn plugin runtime\` command. Shorthands are not allowed. + `,examples:[["Remove a plugin imported from the Yarn repository","$0 plugin remove @yarnpkg/plugin-typescript"],["Remove a plugin imported from a local file","$0 plugin remove my-local-plugin"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s}=await Tt.find(r,this.context.cwd);return(await Ot.start({configuration:r,stdout:this.context.stdout},async n=>{let c=this.name,f=q.parseIdent(c);if(!r.plugins.has(c))throw new nt(`${q.prettyIdent(r,f)} isn't referenced by the current configuration`);let p=`.yarn/plugins/${c}.cjs`,h=K.resolve(s.cwd,p);le.existsSync(h)&&(n.reportInfo(0,`Removing ${he.pretty(r,p,he.Type.PATH)}...`),await le.removePromise(h)),n.reportInfo(0,"Updating the configuration..."),await ze.updateConfiguration(s.cwd,{plugins:E=>{if(!Array.isArray(E))return E;let C=E.filter(S=>S.path!==p);return C.length===0?ze.deleteProperty:C.length===E.length?E:C}})})).exitCode()}};Ve();Wt();var RC=class extends ut{constructor(){super(...arguments);this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}static{this.paths=[["plugin","runtime"]]}static{this.usage=ot.Usage({category:"Plugin-related commands",description:"list the active plugins",details:` + This command prints the currently active plugins. Will be displayed both builtin plugins and external plugins. + `,examples:[["List the currently active plugins","$0 plugin runtime"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins);return(await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout},async a=>{for(let n of r.plugins.keys()){let c=this.context.plugins.plugins.has(n),f=n;c&&(f+=" [builtin]"),a.reportJson({name:n,builtin:c}),a.reportInfo(null,`${f}`)}})).exitCode()}};Ve();Ve();Wt();var FC=class extends ut{constructor(){super(...arguments);this.idents=ge.Rest()}static{this.paths=[["rebuild"]]}static{this.usage=ot.Usage({description:"rebuild the project's native packages",details:` + This command will automatically cause Yarn to forget about previous compilations of the given packages and to run them again. + + Note that while Yarn forgets the compilation, the previous artifacts aren't erased from the filesystem and may affect the next builds (in good or bad). To avoid this, you may remove the .yarn/unplugged folder, or any other relevant location where packages might have been stored (Yarn may offer a way to do that automatically in the future). + + By default all packages will be rebuilt, but you can filter the list by specifying the names of the packages you want to clear from memory. + `,examples:[["Rebuild all packages","$0 rebuild"],["Rebuild fsevents only","$0 rebuild fsevents"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n=await Jr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);let c=new Set;for(let f of this.idents)c.add(q.parseIdent(f).identHash);if(await s.restoreInstallState({restoreResolutions:!1}),await s.resolveEverything({cache:n,report:new Wi}),c.size>0)for(let f of s.storedPackages.values())c.has(f.identHash)&&(s.storedBuildState.delete(f.locatorHash),s.skippedBuilds.delete(f.locatorHash));else s.storedBuildState.clear(),s.skippedBuilds.clear();return await s.installWithNewReport({stdout:this.context.stdout,quiet:this.context.quiet},{cache:n})}};Ve();Ve();Ve();Wt();var H5=et(Sa());Ul();var NC=class extends ut{constructor(){super(...arguments);this.all=ge.Boolean("-A,--all",!1,{description:"Apply the operation to all workspaces from the current project"});this.mode=ge.String("--mode",{description:"Change what artifacts installs generate",validator:Ao(ec)});this.patterns=ge.Rest()}static{this.paths=[["remove"]]}static{this.usage=ot.Usage({description:"remove dependencies from the project",details:` + This command will remove the packages matching the specified patterns from the current workspace. + + If the \`--mode=\` option is set, Yarn will change which artifacts are generated. The modes currently supported are: + + - \`skip-build\` will not run the build scripts at all. Note that this is different from setting \`enableScripts\` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run. + + - \`update-lockfile\` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost. + + This command accepts glob patterns as arguments (if valid Idents and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them. + `,examples:[["Remove a dependency from the current project","$0 remove lodash"],["Remove a dependency from all workspaces at once","$0 remove lodash --all"],["Remove all dependencies starting with `eslint-`","$0 remove 'eslint-*'"],["Remove all dependencies with the `@babel` scope","$0 remove '@babel/*'"],["Remove all dependencies matching `react-dom` or `react-helmet`","$0 remove 'react-{dom,helmet}'"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n=await Jr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState({restoreResolutions:!1});let c=this.all?s.workspaces:[a],f=["dependencies","devDependencies","peerDependencies"],p=[],h=!1,E=[];for(let I of this.patterns){let R=!1,N=q.parseIdent(I);for(let U of c){let W=[...U.manifest.peerDependenciesMeta.keys()];for(let te of(0,H5.default)(W,I))U.manifest.peerDependenciesMeta.delete(te),h=!0,R=!0;for(let te of f){let ie=U.manifest.getForScope(te),Ae=[...ie.values()].map(ce=>q.stringifyIdent(ce));for(let ce of(0,H5.default)(Ae,q.stringifyIdent(N))){let{identHash:me}=q.parseIdent(ce),pe=ie.get(me);if(typeof pe>"u")throw new Error("Assertion failed: Expected the descriptor to be registered");U.manifest[te].delete(me),E.push([U,te,pe]),h=!0,R=!0}}}R||p.push(I)}let C=p.length>1?"Patterns":"Pattern",S=p.length>1?"don't":"doesn't",P=this.all?"any":"this";if(p.length>0)throw new nt(`${C} ${he.prettyList(r,p,he.Type.CODE)} ${S} match any packages referenced by ${P} workspace`);return h?(await r.triggerMultipleHooks(I=>I.afterWorkspaceDependencyRemoval,E),await s.installWithNewReport({stdout:this.context.stdout},{cache:n,mode:this.mode})):0}};Ve();Ve();Wt();var hBe=ye("util"),OC=class extends ut{constructor(){super(...arguments);this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}static{this.paths=[["run"]]}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);return(await Ot.start({configuration:r,stdout:this.context.stdout,json:this.json},async c=>{let f=a.manifest.scripts,p=je.sortMap(f.keys(),C=>C),h={breakLength:1/0,colors:r.get("enableColors"),maxArrayLength:2},E=p.reduce((C,S)=>Math.max(C,S.length),0);for(let[C,S]of f.entries())c.reportInfo(null,`${C.padEnd(E," ")} ${(0,hBe.inspect)(S,h)}`),c.reportJson({name:C,script:S})})).exitCode()}};Ve();Ve();Wt();var LC=class extends ut{constructor(){super(...arguments);this.inspect=ge.String("--inspect",!1,{tolerateBoolean:!0,description:"Forwarded to the underlying Node process when executing a binary"});this.inspectBrk=ge.String("--inspect-brk",!1,{tolerateBoolean:!0,description:"Forwarded to the underlying Node process when executing a binary"});this.topLevel=ge.Boolean("-T,--top-level",!1,{description:"Check the root workspace for scripts and/or binaries instead of the current one"});this.binariesOnly=ge.Boolean("-B,--binaries-only",!1,{description:"Ignore any user defined scripts and only check for binaries"});this.require=ge.String("--require",{description:"Forwarded to the underlying Node process when executing a binary"});this.silent=ge.Boolean("--silent",{hidden:!0});this.scriptName=ge.String();this.args=ge.Proxy()}static{this.paths=[["run"]]}static{this.usage=ot.Usage({description:"run a script defined in the package.json",details:` + This command will run a tool. The exact tool that will be executed will depend on the current state of your workspace: + + - If the \`scripts\` field from your local package.json contains a matching script name, its definition will get executed. + + - Otherwise, if one of the local workspace's dependencies exposes a binary with a matching name, this binary will get executed. + + - Otherwise, if the specified name contains a colon character and if one of the workspaces in the project contains exactly one script with a matching name, then this script will get executed. + + Whatever happens, the cwd of the spawned process will be the workspace that declares the script (which makes it possible to call commands cross-workspaces using the third syntax). + `,examples:[["Run the tests from the local workspace","$0 run test"],['Same thing, but without the "run" keyword',"$0 test"],["Inspect Webpack while running","$0 run --inspect-brk webpack"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a,locator:n}=await Tt.find(r,this.context.cwd);await s.restoreInstallState();let c=this.topLevel?s.topLevelWorkspace.anchoredLocator:n;if(!this.binariesOnly&&await In.hasPackageScript(c,this.scriptName,{project:s}))return await In.executePackageScript(c,this.scriptName,this.args,{project:s,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});let f=await In.getPackageAccessibleBinaries(c,{project:s});if(f.get(this.scriptName)){let h=[];return this.inspect&&(typeof this.inspect=="string"?h.push(`--inspect=${this.inspect}`):h.push("--inspect")),this.inspectBrk&&(typeof this.inspectBrk=="string"?h.push(`--inspect-brk=${this.inspectBrk}`):h.push("--inspect-brk")),this.require&&h.push(`--require=${this.require}`),await In.executePackageAccessibleBinary(c,this.scriptName,this.args,{cwd:this.context.cwd,project:s,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,nodeArgs:h,packageAccessibleBinaries:f})}if(!this.topLevel&&!this.binariesOnly&&a&&this.scriptName.includes(":")){let E=(await Promise.all(s.workspaces.map(async C=>C.manifest.scripts.has(this.scriptName)?C:null))).filter(C=>C!==null);if(E.length===1)return await In.executeWorkspaceScript(E[0],this.scriptName,this.args,{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})}if(this.topLevel)throw this.scriptName==="node-gyp"?new nt(`Couldn't find a script name "${this.scriptName}" in the top-level (used by ${q.prettyLocator(r,n)}). This typically happens because some package depends on "node-gyp" to build itself, but didn't list it in their dependencies. To fix that, please run "yarn add node-gyp" into your top-level workspace. You also can open an issue on the repository of the specified package to suggest them to use an optional peer dependency.`):new nt(`Couldn't find a script name "${this.scriptName}" in the top-level (used by ${q.prettyLocator(r,n)}).`);{if(this.scriptName==="global")throw new nt("The 'yarn global' commands have been removed in 2.x - consider using 'yarn dlx' or a third-party plugin instead");let h=[this.scriptName].concat(this.args);for(let[E,C]of tC)for(let S of C)if(h.length>=S.length&&JSON.stringify(h.slice(0,S.length))===JSON.stringify(S))throw new nt(`Couldn't find a script named "${this.scriptName}", but a matching command can be found in the ${E} plugin. You can install it with "yarn plugin import ${E}".`);throw new nt(`Couldn't find a script named "${this.scriptName}".`)}}};Ve();Ve();Wt();var MC=class extends ut{constructor(){super(...arguments);this.descriptor=ge.String();this.resolution=ge.String()}static{this.paths=[["set","resolution"]]}static{this.usage=ot.Usage({description:"enforce a package resolution",details:'\n This command updates the resolution table so that `descriptor` is resolved by `resolution`.\n\n Note that by default this command only affect the current resolution table - meaning that this "manual override" will disappear if you remove the lockfile, or if the package disappear from the table. If you wish to make the enforced resolution persist whatever happens, edit the `resolutions` field in your top-level manifest.\n\n Note that no attempt is made at validating that `resolution` is a valid resolution entry for `descriptor`.\n ',examples:[["Force all instances of lodash@npm:^1.2.3 to resolve to 1.5.0","$0 set resolution lodash@npm:^1.2.3 npm:1.5.0"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n=await Jr.find(r);if(await s.restoreInstallState({restoreResolutions:!1}),!a)throw new ar(s.cwd,this.context.cwd);let c=q.parseDescriptor(this.descriptor,!0),f=q.makeDescriptor(c,this.resolution);return s.storedDescriptors.set(c.descriptorHash,c),s.storedDescriptors.set(f.descriptorHash,f),s.resolutionAliases.set(c.descriptorHash,f.descriptorHash),await s.installWithNewReport({stdout:this.context.stdout},{cache:n})}};Ve();bt();Wt();var gBe=et(Sa()),_C=class extends ut{constructor(){super(...arguments);this.all=ge.Boolean("-A,--all",!1,{description:"Unlink all workspaces belonging to the target project from the current one"});this.leadingArguments=ge.Rest()}static{this.paths=[["unlink"]]}static{this.usage=ot.Usage({description:"disconnect the local project from another one",details:` + This command will remove any resolutions in the project-level manifest that would have been added via a yarn link with similar arguments. + `,examples:[["Unregister a remote workspace in the current project","$0 unlink ~/ts-loader"],["Unregister all workspaces from a remote project in the current project","$0 unlink ~/jest --all"],["Unregister all previously linked workspaces","$0 unlink --all"],["Unregister all workspaces matching a glob","$0 unlink '@babel/*' 'pkg-{a,b}'"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n=await Jr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);let c=s.topLevelWorkspace,f=new Set;if(this.leadingArguments.length===0&&this.all)for(let{pattern:p,reference:h}of c.manifest.resolutions)h.startsWith("portal:")&&f.add(p.descriptor.fullName);if(this.leadingArguments.length>0)for(let p of this.leadingArguments){let h=K.resolve(this.context.cwd,ue.toPortablePath(p));if(je.isPathLike(p)){let E=await ze.find(h,this.context.plugins,{useRc:!1,strict:!1}),{project:C,workspace:S}=await Tt.find(E,h);if(!S)throw new ar(C.cwd,h);if(this.all){for(let P of C.workspaces)P.manifest.name&&f.add(q.stringifyIdent(P.anchoredLocator));if(f.size===0)throw new nt("No workspace found to be unlinked in the target project")}else{if(!S.manifest.name)throw new nt("The target workspace doesn't have a name and thus cannot be unlinked");f.add(q.stringifyIdent(S.anchoredLocator))}}else{let E=[...c.manifest.resolutions.map(({pattern:C})=>C.descriptor.fullName)];for(let C of(0,gBe.default)(E,p))f.add(C)}}return c.manifest.resolutions=c.manifest.resolutions.filter(({pattern:p})=>!f.has(p.descriptor.fullName)),await s.installWithNewReport({stdout:this.context.stdout,quiet:this.context.quiet},{cache:n})}};Ve();Ve();Ve();Wt();var dBe=et(lS()),j5=et(Sa());Ul();var UC=class extends ut{constructor(){super(...arguments);this.interactive=ge.Boolean("-i,--interactive",{description:"Offer various choices, depending on the detected upgrade paths"});this.fixed=ge.Boolean("-F,--fixed",!1,{description:"Store dependency tags as-is instead of resolving them"});this.exact=ge.Boolean("-E,--exact",!1,{description:"Don't use any semver modifier on the resolved range"});this.tilde=ge.Boolean("-T,--tilde",!1,{description:"Use the `~` semver modifier on the resolved range"});this.caret=ge.Boolean("-C,--caret",!1,{description:"Use the `^` semver modifier on the resolved range"});this.recursive=ge.Boolean("-R,--recursive",!1,{description:"Resolve again ALL resolutions for those packages"});this.mode=ge.String("--mode",{description:"Change what artifacts installs generate",validator:Ao(ec)});this.patterns=ge.Rest()}static{this.paths=[["up"]]}static{this.usage=ot.Usage({description:"upgrade dependencies across the project",details:"\n This command upgrades the packages matching the list of specified patterns to their latest available version across the whole project (regardless of whether they're part of `dependencies` or `devDependencies` - `peerDependencies` won't be affected). This is a project-wide command: all workspaces will be upgraded in the process.\n\n If `-R,--recursive` is set the command will change behavior and no other switch will be allowed. When operating under this mode `yarn up` will force all ranges matching the selected packages to be resolved again (often to the highest available versions) before being stored in the lockfile. It however won't touch your manifests anymore, so depending on your needs you might want to run both `yarn up` and `yarn up -R` to cover all bases.\n\n If `-i,--interactive` is set (or if the `preferInteractive` settings is toggled on) the command will offer various choices, depending on the detected upgrade paths. Some upgrades require this flag in order to resolve ambiguities.\n\n The, `-C,--caret`, `-E,--exact` and `-T,--tilde` options have the same meaning as in the `add` command (they change the modifier used when the range is missing or a tag, and are ignored when the range is explicitly set).\n\n If the `--mode=` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n\n Generally you can see `yarn up` as a counterpart to what was `yarn upgrade --latest` in Yarn 1 (ie it ignores the ranges previously listed in your manifests), but unlike `yarn upgrade` which only upgraded dependencies in the current workspace, `yarn up` will upgrade all workspaces at the same time.\n\n This command accepts glob patterns as arguments (if valid Descriptors and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them.\n\n **Note:** The ranges have to be static, only the package scopes and names can contain glob patterns.\n ",examples:[["Upgrade all instances of lodash to the latest release","$0 up lodash"],["Upgrade all instances of lodash to the latest release, but ask confirmation for each","$0 up lodash -i"],["Upgrade all instances of lodash to 1.2.3","$0 up lodash@1.2.3"],["Upgrade all instances of packages with the `@babel` scope to the latest release","$0 up '@babel/*'"],["Upgrade all instances of packages containing the word `jest` to the latest release","$0 up '*jest*'"],["Upgrade all instances of packages with the `@babel` scope to 7.0.0","$0 up '@babel/*@7.0.0'"]]})}static{this.schema=[iB("recursive",Wf.Forbids,["interactive","exact","tilde","caret"],{ignore:[void 0,!1]})]}async execute(){return this.recursive?await this.executeUpRecursive():await this.executeUpClassic()}async executeUpRecursive(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n=await Jr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState({restoreResolutions:!1});let c=[...s.storedDescriptors.values()],f=c.map(E=>q.stringifyIdent(E)),p=new Set;for(let E of this.patterns){if(q.parseDescriptor(E).range!=="unknown")throw new nt("Ranges aren't allowed when using --recursive");for(let C of(0,j5.default)(f,E)){let S=q.parseIdent(C);p.add(S.identHash)}}let h=c.filter(E=>p.has(E.identHash));for(let E of h)s.storedDescriptors.delete(E.descriptorHash),s.storedResolutions.delete(E.descriptorHash);return await s.installWithNewReport({stdout:this.context.stdout},{cache:n,mode:this.mode})}async executeUpClassic(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n=await Jr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState({restoreResolutions:!1});let c=this.fixed,f=r.isInteractive({interactive:this.interactive,stdout:this.context.stdout}),p=uS(this,s),h=f?["keep","reuse","project","latest"]:["project","latest"],E=[],C=[];for(let N of this.patterns){let U=!1,W=q.parseDescriptor(N),te=q.stringifyIdent(W);for(let ie of s.workspaces)for(let Ae of["dependencies","devDependencies"]){let me=[...ie.manifest.getForScope(Ae).values()].map(Be=>q.stringifyIdent(Be)),pe=te==="*"?me:(0,j5.default)(me,te);for(let Be of pe){let Ce=q.parseIdent(Be),g=ie.manifest[Ae].get(Ce.identHash);if(typeof g>"u")throw new Error("Assertion failed: Expected the descriptor to be registered");let we=q.makeDescriptor(Ce,W.range);E.push(Promise.resolve().then(async()=>[ie,Ae,g,await fS(we,{project:s,workspace:ie,cache:n,target:Ae,fixed:c,modifier:p,strategies:h})])),U=!0}}U||C.push(N)}if(C.length>1)throw new nt(`Patterns ${he.prettyList(r,C,he.Type.CODE)} don't match any packages referenced by any workspace`);if(C.length>0)throw new nt(`Pattern ${he.prettyList(r,C,he.Type.CODE)} doesn't match any packages referenced by any workspace`);let S=await Promise.all(E),P=await uA.start({configuration:r,stdout:this.context.stdout,suggestInstall:!1},async N=>{for(let[,,U,{suggestions:W,rejections:te}]of S){let ie=W.filter(Ae=>Ae.descriptor!==null);if(ie.length===0){let[Ae]=te;if(typeof Ae>"u")throw new Error("Assertion failed: Expected an error to have been set");let ce=this.cli.error(Ae);s.configuration.get("enableNetwork")?N.reportError(27,`${q.prettyDescriptor(r,U)} can't be resolved to a satisfying range + +${ce}`):N.reportError(27,`${q.prettyDescriptor(r,U)} can't be resolved to a satisfying range (note: network resolution has been disabled) + +${ce}`)}else ie.length>1&&!f&&N.reportError(27,`${q.prettyDescriptor(r,U)} has multiple possible upgrade strategies; use -i to disambiguate manually`)}});if(P.hasErrors())return P.exitCode();let I=!1,R=[];for(let[N,U,,{suggestions:W}]of S){let te,ie=W.filter(pe=>pe.descriptor!==null),Ae=ie[0].descriptor,ce=ie.every(pe=>q.areDescriptorsEqual(pe.descriptor,Ae));ie.length===1||ce?te=Ae:(I=!0,{answer:te}=await(0,dBe.prompt)({type:"select",name:"answer",message:`Which range do you want to use in ${q.prettyWorkspace(r,N)} \u276F ${U}?`,choices:W.map(({descriptor:pe,name:Be,reason:Ce})=>pe?{name:Be,hint:Ce,descriptor:pe}:{name:Be,hint:Ce,disabled:!0}),onCancel:()=>process.exit(130),result(pe){return this.find(pe,"descriptor")},stdin:this.context.stdin,stdout:this.context.stdout}));let me=N.manifest[U].get(te.identHash);if(typeof me>"u")throw new Error("Assertion failed: This descriptor should have a matching entry");if(me.descriptorHash!==te.descriptorHash)N.manifest[U].set(te.identHash,te),R.push([N,U,me,te]);else{let pe=r.makeResolver(),Be={project:s,resolver:pe},Ce=r.normalizeDependency(me),g=pe.bindDescriptor(Ce,N.anchoredLocator,Be);s.forgetResolution(g)}}return await r.triggerMultipleHooks(N=>N.afterWorkspaceDependencyReplacement,R),I&&this.context.stdout.write(` +`),await s.installWithNewReport({stdout:this.context.stdout},{cache:n,mode:this.mode})}};Ve();Ve();Ve();Wt();var HC=class extends ut{constructor(){super(...arguments);this.recursive=ge.Boolean("-R,--recursive",!1,{description:"List, for each workspace, what are all the paths that lead to the dependency"});this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.peers=ge.Boolean("--peers",!1,{description:"Also print the peer dependencies that match the specified name"});this.package=ge.String()}static{this.paths=[["why"]]}static{this.usage=ot.Usage({description:"display the reason why a package is needed",details:` + This command prints the exact reasons why a package appears in the dependency tree. + + If \`-R,--recursive\` is set, the listing will go in depth and will list, for each workspaces, what are all the paths that lead to the dependency. Note that the display is somewhat optimized in that it will not print the package listing twice for a single package, so if you see a leaf named "Foo" when looking for "Bar", it means that "Foo" already got printed higher in the tree. + `,examples:[["Explain why lodash is used in your project","$0 why lodash"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState();let n=q.parseIdent(this.package).identHash,c=this.recursive?wSt(s,n,{configuration:r,peers:this.peers}):CSt(s,n,{configuration:r,peers:this.peers});ks.emitTree(c,{configuration:r,stdout:this.context.stdout,json:this.json,separators:1})}};function CSt(t,e,{configuration:r,peers:s}){let a=je.sortMap(t.storedPackages.values(),f=>q.stringifyLocator(f)),n={},c={children:n};for(let f of a){let p={};for(let E of f.dependencies.values()){if(!s&&f.peerDependencies.has(E.identHash))continue;let C=t.storedResolutions.get(E.descriptorHash);if(!C)throw new Error("Assertion failed: The resolution should have been registered");let S=t.storedPackages.get(C);if(!S)throw new Error("Assertion failed: The package should have been registered");if(S.identHash!==e)continue;{let I=q.stringifyLocator(f);n[I]={value:[f,he.Type.LOCATOR],children:p}}let P=q.stringifyLocator(S);p[P]={value:[{descriptor:E,locator:S},he.Type.DEPENDENT]}}}return c}function wSt(t,e,{configuration:r,peers:s}){let a=je.sortMap(t.workspaces,S=>q.stringifyLocator(S.anchoredLocator)),n=new Set,c=new Set,f=S=>{if(n.has(S.locatorHash))return c.has(S.locatorHash);if(n.add(S.locatorHash),S.identHash===e)return c.add(S.locatorHash),!0;let P=!1;S.identHash===e&&(P=!0);for(let I of S.dependencies.values()){if(!s&&S.peerDependencies.has(I.identHash))continue;let R=t.storedResolutions.get(I.descriptorHash);if(!R)throw new Error("Assertion failed: The resolution should have been registered");let N=t.storedPackages.get(R);if(!N)throw new Error("Assertion failed: The package should have been registered");f(N)&&(P=!0)}return P&&c.add(S.locatorHash),P};for(let S of a)f(S.anchoredPackage);let p=new Set,h={},E={children:h},C=(S,P,I)=>{if(!c.has(S.locatorHash))return;let R=I!==null?he.tuple(he.Type.DEPENDENT,{locator:S,descriptor:I}):he.tuple(he.Type.LOCATOR,S),N={},U={value:R,children:N},W=q.stringifyLocator(S);if(P[W]=U,!(I!==null&&t.tryWorkspaceByLocator(S))&&!p.has(S.locatorHash)){p.add(S.locatorHash);for(let te of S.dependencies.values()){if(!s&&S.peerDependencies.has(te.identHash))continue;let ie=t.storedResolutions.get(te.descriptorHash);if(!ie)throw new Error("Assertion failed: The resolution should have been registered");let Ae=t.storedPackages.get(ie);if(!Ae)throw new Error("Assertion failed: The package should have been registered");C(Ae,N,te)}}};for(let S of a)C(S.anchoredPackage,h,null);return E}Ve();var X5={};Vt(X5,{GitFetcher:()=>mS,GitResolver:()=>yS,default:()=>qSt,gitUtils:()=>Qa});Ve();bt();var Qa={};Vt(Qa,{TreeishProtocols:()=>dS,clone:()=>Z5,fetchBase:()=>MBe,fetchChangedFiles:()=>_Be,fetchChangedWorkspaces:()=>HSt,fetchRoot:()=>LBe,isGitUrl:()=>GC,lsRemote:()=>OBe,normalizeLocator:()=>USt,normalizeRepoUrl:()=>jC,resolveUrl:()=>z5,splitRepoUrl:()=>Y0,validateRepoUrl:()=>J5});Ve();bt();Wt();var RBe=et(kBe()),FBe=et(d6()),qC=et(ye("querystring")),V5=et(fi());function Y5(t,e,r){let s=t.indexOf(r);return t.lastIndexOf(e,s>-1?s:1/0)}function QBe(t){try{return new URL(t)}catch{return}}function MSt(t){let e=Y5(t,"@","#"),r=Y5(t,":","#");return r>e&&(t=`${t.slice(0,r)}/${t.slice(r+1)}`),Y5(t,":","#")===-1&&t.indexOf("//")===-1&&(t=`ssh://${t}`),t}function TBe(t){return QBe(t)||QBe(MSt(t))}function jC(t,{git:e=!1}={}){if(t=t.replace(/^git\+https:/,"https:"),t=t.replace(/^(?:github:|https:\/\/github\.com\/|git:\/\/github\.com\/)?(?!\.{1,2}\/)([a-zA-Z0-9._-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)(?:\.git)?(#.*)?$/,"https://github.com/$1/$2.git$3"),t=t.replace(/^https:\/\/github\.com\/(?!\.{1,2}\/)([a-zA-Z0-9._-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)\/tarball\/(.+)?$/,"https://github.com/$1/$2.git#$3"),e){let r=TBe(t);r&&(t=r.href),t=t.replace(/^git\+([^:]+):/,"$1:")}return t}function NBe(){return{...process.env,GIT_SSH_COMMAND:process.env.GIT_SSH_COMMAND||`${process.env.GIT_SSH||"ssh"} -o BatchMode=yes`}}var _St=[/^ssh:/,/^git(?:\+[^:]+)?:/,/^(?:git\+)?https?:[^#]+\/[^#]+(?:\.git)(?:#.*)?$/,/^git@[^#]+\/[^#]+\.git(?:#.*)?$/,/^(?:github:|https:\/\/github\.com\/)?(?!\.{1,2}\/)([a-zA-Z._0-9-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z._0-9-]+?)(?:\.git)?(?:#.*)?$/,/^https:\/\/github\.com\/(?!\.{1,2}\/)([a-zA-Z0-9._-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)\/tarball\/(.+)?$/],dS=(a=>(a.Commit="commit",a.Head="head",a.Tag="tag",a.Semver="semver",a))(dS||{});function GC(t){return t?_St.some(e=>!!t.match(e)):!1}function Y0(t){t=jC(t);let e=t.indexOf("#");if(e===-1)return{repo:t,treeish:{protocol:"head",request:"HEAD"},extra:{}};let r=t.slice(0,e),s=t.slice(e+1);if(s.match(/^[a-z]+=/)){let a=qC.default.parse(s);for(let[p,h]of Object.entries(a))if(typeof h!="string")throw new Error(`Assertion failed: The ${p} parameter must be a literal string`);let n=Object.values(dS).find(p=>Object.hasOwn(a,p)),[c,f]=typeof n<"u"?[n,a[n]]:["head","HEAD"];for(let p of Object.values(dS))delete a[p];return{repo:r,treeish:{protocol:c,request:f},extra:a}}else{let a=s.indexOf(":"),[n,c]=a===-1?[null,s]:[s.slice(0,a),s.slice(a+1)];return{repo:r,treeish:{protocol:n,request:c},extra:{}}}}function USt(t){return q.makeLocator(t,jC(t.reference))}function J5(t,{configuration:e}){let r=jC(t,{git:!0});if(!An.getNetworkSettings(`https://${(0,RBe.default)(r).resource}`,{configuration:e}).enableNetwork)throw new Yt(80,`Request to '${r}' has been blocked because of your configuration settings`);return r}async function OBe(t,e){let r=J5(t,{configuration:e}),s=await K5("listing refs",["ls-remote",r],{cwd:e.startingCwd,env:NBe()},{configuration:e,normalizedRepoUrl:r}),a=new Map,n=/^([a-f0-9]{40})\t([^\n]+)/gm,c;for(;(c=n.exec(s.stdout))!==null;)a.set(c[2],c[1]);return a}async function z5(t,e){let{repo:r,treeish:{protocol:s,request:a},extra:n}=Y0(t),c=await OBe(r,e),f=(h,E)=>{switch(h){case"commit":{if(!E.match(/^[a-f0-9]{40}$/))throw new Error("Invalid commit hash");return qC.default.stringify({...n,commit:E})}case"head":{let C=c.get(E==="HEAD"?E:`refs/heads/${E}`);if(typeof C>"u")throw new Error(`Unknown head ("${E}")`);return qC.default.stringify({...n,commit:C})}case"tag":{let C=c.get(`refs/tags/${E}`);if(typeof C>"u")throw new Error(`Unknown tag ("${E}")`);return qC.default.stringify({...n,commit:C})}case"semver":{let C=Or.validRange(E);if(!C)throw new Error(`Invalid range ("${E}")`);let S=new Map([...c.entries()].filter(([I])=>I.startsWith("refs/tags/")).map(([I,R])=>[V5.default.parse(I.slice(10)),R]).filter(I=>I[0]!==null)),P=V5.default.maxSatisfying([...S.keys()],C);if(P===null)throw new Error(`No matching range ("${E}")`);return qC.default.stringify({...n,commit:S.get(P)})}case null:{let C;if((C=p("commit",E))!==null||(C=p("tag",E))!==null||(C=p("head",E))!==null)return C;throw E.match(/^[a-f0-9]+$/)?new Error(`Couldn't resolve "${E}" as either a commit, a tag, or a head - if a commit, use the 40-characters commit hash`):new Error(`Couldn't resolve "${E}" as either a commit, a tag, or a head`)}default:throw new Error(`Invalid Git resolution protocol ("${h}")`)}},p=(h,E)=>{try{return f(h,E)}catch{return null}};return jC(`${r}#${f(s,a)}`)}async function Z5(t,e){return await e.getLimit("cloneConcurrency")(async()=>{let{repo:r,treeish:{protocol:s,request:a}}=Y0(t);if(s!=="commit")throw new Error("Invalid treeish protocol when cloning");let n=J5(r,{configuration:e}),c=await le.mktempPromise(),f={cwd:c,env:NBe()};return await K5("cloning the repository",["clone","-c core.autocrlf=false",n,ue.fromPortablePath(c)],f,{configuration:e,normalizedRepoUrl:n}),await K5("switching branch",["checkout",`${a}`],f,{configuration:e,normalizedRepoUrl:n}),c})}async function LBe(t){let e,r=t;do{if(e=r,await le.existsPromise(K.join(e,".git")))return e;r=K.dirname(e)}while(r!==e);return null}async function MBe(t,{baseRefs:e}){if(e.length===0)throw new nt("Can't run this command with zero base refs specified.");let r=[];for(let f of e){let{code:p}=await Gr.execvp("git",["merge-base",f,"HEAD"],{cwd:t});p===0&&r.push(f)}if(r.length===0)throw new nt(`No ancestor could be found between any of HEAD and ${e.join(", ")}`);let{stdout:s}=await Gr.execvp("git",["merge-base","HEAD",...r],{cwd:t,strict:!0}),a=s.trim(),{stdout:n}=await Gr.execvp("git",["show","--quiet","--pretty=format:%s",a],{cwd:t,strict:!0}),c=n.trim();return{hash:a,title:c}}async function _Be(t,{base:e,project:r}){let s=je.buildIgnorePattern(r.configuration.get("changesetIgnorePatterns")),{stdout:a}=await Gr.execvp("git",["diff","--name-only",`${e}`],{cwd:t,strict:!0}),n=a.split(/\r\n|\r|\n/).filter(h=>h.length>0).map(h=>K.resolve(t,ue.toPortablePath(h))),{stdout:c}=await Gr.execvp("git",["ls-files","--others","--exclude-standard"],{cwd:t,strict:!0}),f=c.split(/\r\n|\r|\n/).filter(h=>h.length>0).map(h=>K.resolve(t,ue.toPortablePath(h))),p=[...new Set([...n,...f].sort())];return s?p.filter(h=>!K.relative(r.cwd,h).match(s)):p}async function HSt({ref:t,project:e}){if(e.configuration.projectCwd===null)throw new nt("This command can only be run from within a Yarn project");let r=[K.resolve(e.cwd,Er.lockfile),K.resolve(e.cwd,e.configuration.get("cacheFolder")),K.resolve(e.cwd,e.configuration.get("installStatePath")),K.resolve(e.cwd,e.configuration.get("virtualFolder"))];await e.configuration.triggerHook(c=>c.populateYarnPaths,e,c=>{c!=null&&r.push(c)});let s=await LBe(e.configuration.projectCwd);if(s==null)throw new nt("This command can only be run on Git repositories");let a=await MBe(s,{baseRefs:typeof t=="string"?[t]:e.configuration.get("changesetBaseRefs")}),n=await _Be(s,{base:a.hash,project:e});return new Set(je.mapAndFilter(n,c=>{let f=e.tryWorkspaceByFilePath(c);return f===null?je.mapAndFilter.skip:r.some(p=>c.startsWith(p))?je.mapAndFilter.skip:f}))}async function K5(t,e,r,{configuration:s,normalizedRepoUrl:a}){try{return await Gr.execvp("git",e,{...r,strict:!0})}catch(n){if(!(n instanceof Gr.ExecError))throw n;let c=n.reportExtra,f=n.stderr.toString();throw new Yt(1,`Failed ${t}`,p=>{p.reportError(1,` ${he.prettyField(s,{label:"Repository URL",value:he.tuple(he.Type.URL,a)})}`);for(let h of f.matchAll(/^(.+?): (.*)$/gm)){let[,E,C]=h;E=E.toLowerCase();let S=E==="error"?"Error":`${(0,FBe.default)(E)} Error`;p.reportError(1,` ${he.prettyField(s,{label:S,value:he.tuple(he.Type.NO_HINT,C)})}`)}c?.(p)})}}var mS=class{supports(e,r){return GC(e.reference)}getLocalPath(e,r){return null}async fetch(e,r){let s=r.checksums.get(e.locatorHash)||null,a=new Map(r.checksums);a.set(e.locatorHash,s);let n={...r,checksums:a},c=await this.downloadHosted(e,n);if(c!==null)return c;let[f,p,h]=await r.cache.fetchPackageFromCache(e,s,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${q.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote repository`),loader:()=>this.cloneFromRemote(e,n),...r.cacheOptions});return{packageFs:f,releaseFs:p,prefixPath:q.getIdentVendorPath(e),checksum:h}}async downloadHosted(e,r){return r.project.configuration.reduceHook(s=>s.fetchHostedRepository,null,e,r)}async cloneFromRemote(e,r){let s=Y0(e.reference),a=await Z5(e.reference,r.project.configuration),n=K.resolve(a,s.extra.cwd??vt.dot),c=K.join(n,"package.tgz");await In.prepareExternalProject(n,c,{configuration:r.project.configuration,report:r.report,workspace:s.extra.workspace,locator:e});let f=await le.readFilePromise(c);return await je.releaseAfterUseAsync(async()=>await hs.convertToZip(f,{configuration:r.project.configuration,prefixPath:q.getIdentVendorPath(e),stripComponents:1}))}};Ve();Ve();var yS=class{supportsDescriptor(e,r){return GC(e.range)}supportsLocator(e,r){return GC(e.reference)}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,s){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,s){let a=await z5(e.range,s.project.configuration);return[q.makeLocator(e,a)]}async getSatisfying(e,r,s,a){let n=Y0(e.range);return{locators:s.filter(f=>{if(f.identHash!==e.identHash)return!1;let p=Y0(f.reference);return!(n.repo!==p.repo||n.treeish.protocol==="commit"&&n.treeish.request!==p.treeish.request)}),sorted:!1}}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let s=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await je.releaseAfterUseAsync(async()=>await Ht.find(s.prefixPath,{baseFs:s.packageFs}),s.releaseFs);return{...e,version:a.version||"0.0.0",languageName:a.languageName||r.project.configuration.get("defaultLanguageName"),linkType:"HARD",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var jSt={configuration:{changesetBaseRefs:{description:"The base git refs that the current HEAD is compared against when detecting changes. Supports git branches, tags, and commits.",type:"STRING",isArray:!0,isNullable:!1,default:["master","origin/master","upstream/master","main","origin/main","upstream/main"]},changesetIgnorePatterns:{description:"Array of glob patterns; files matching them will be ignored when fetching the changed files",type:"STRING",default:[],isArray:!0},cloneConcurrency:{description:"Maximal number of concurrent clones",type:"NUMBER",default:2}},fetchers:[mS],resolvers:[yS]};var qSt=jSt;Wt();var WC=class extends ut{constructor(){super(...arguments);this.since=ge.String("--since",{description:"Only include workspaces that have been changed since the specified ref.",tolerateBoolean:!0});this.recursive=ge.Boolean("-R,--recursive",!1,{description:"Find packages via dependencies/devDependencies instead of using the workspaces field"});this.noPrivate=ge.Boolean("--no-private",{description:"Exclude workspaces that have the private field set to true"});this.verbose=ge.Boolean("-v,--verbose",!1,{description:"Also return the cross-dependencies between workspaces"});this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}static{this.paths=[["workspaces","list"]]}static{this.usage=ot.Usage({category:"Workspace-related commands",description:"list all available workspaces",details:"\n This command will print the list of all workspaces in the project.\n\n - If `--since` is set, Yarn will only list workspaces that have been modified since the specified ref. By default Yarn will use the refs specified by the `changesetBaseRefs` configuration option.\n\n - If `-R,--recursive` is set, Yarn will find workspaces to run the command on by recursively evaluating `dependencies` and `devDependencies` fields, instead of looking at the `workspaces` fields.\n\n - If `--no-private` is set, Yarn will not list any workspaces that have the `private` field set to `true`.\n\n - If both the `-v,--verbose` and `--json` options are set, Yarn will also return the cross-dependencies between each workspaces (useful when you wish to automatically generate Buck / Bazel rules).\n "})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s}=await Tt.find(r,this.context.cwd);return(await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout},async n=>{let c=this.since?await Qa.fetchChangedWorkspaces({ref:this.since,project:s}):s.workspaces,f=new Set(c);if(this.recursive)for(let p of[...c].map(h=>h.getRecursiveWorkspaceDependents()))for(let h of p)f.add(h);for(let p of f){let{manifest:h}=p;if(h.private&&this.noPrivate)continue;let E;if(this.verbose){let C=new Set,S=new Set;for(let P of Ht.hardDependencies)for(let[I,R]of h.getForScope(P)){let N=s.tryWorkspaceByDescriptor(R);N===null?s.workspacesByIdent.has(I)&&S.add(R):C.add(N)}E={workspaceDependencies:Array.from(C).map(P=>P.relativeCwd),mismatchedWorkspaceDependencies:Array.from(S).map(P=>q.stringifyDescriptor(P))}}n.reportInfo(null,`${p.relativeCwd}`),n.reportJson({location:p.relativeCwd,name:h.name?q.stringifyIdent(h.name):null,...E})}})).exitCode()}};Ve();Ve();Wt();var YC=class extends ut{constructor(){super(...arguments);this.workspaceName=ge.String();this.commandName=ge.String();this.args=ge.Proxy()}static{this.paths=[["workspace"]]}static{this.usage=ot.Usage({category:"Workspace-related commands",description:"run a command within the specified workspace",details:` + This command will run a given sub-command on a single workspace. + `,examples:[["Add a package to a single workspace","yarn workspace components add -D react"],["Run build script on a single workspace","yarn workspace components run build"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);let n=s.workspaces,c=new Map(n.map(p=>[q.stringifyIdent(p.anchoredLocator),p])),f=c.get(this.workspaceName);if(f===void 0){let p=Array.from(c.keys()).sort();throw new nt(`Workspace '${this.workspaceName}' not found. Did you mean any of the following: + - ${p.join(` + - `)}?`)}return this.cli.run([this.commandName,...this.args],{cwd:f.cwd})}};var GSt={configuration:{enableImmutableInstalls:{description:"If true (the default on CI), prevents the install command from modifying the lockfile",type:"BOOLEAN",default:UBe.isCI},defaultSemverRangePrefix:{description:"The default save prefix: '^', '~' or ''",type:"STRING",values:["^","~",""],default:"^"},preferReuse:{description:"If true, `yarn add` will attempt to reuse the most common dependency range in other workspaces.",type:"BOOLEAN",default:!1}},commands:[cC,uC,fC,AC,MC,xC,CC,WC,gC,dC,mC,yC,aC,lC,pC,hC,EC,IC,wC,BC,vC,SC,_C,DC,bC,QC,kC,TC,PC,RC,FC,NC,OC,LC,UC,HC,YC]},WSt=GSt;var i9={};Vt(i9,{default:()=>VSt});Ve();var Qt={optional:!0},e9=[["@tailwindcss/aspect-ratio@<0.2.1",{peerDependencies:{tailwindcss:"^2.0.2"}}],["@tailwindcss/line-clamp@<0.2.1",{peerDependencies:{tailwindcss:"^2.0.2"}}],["@fullhuman/postcss-purgecss@3.1.3 || 3.1.3-alpha.0",{peerDependencies:{postcss:"^8.0.0"}}],["@samverschueren/stream-to-observable@<0.3.1",{peerDependenciesMeta:{rxjs:Qt,zenObservable:Qt}}],["any-observable@<0.5.1",{peerDependenciesMeta:{rxjs:Qt,zenObservable:Qt}}],["@pm2/agent@<1.0.4",{dependencies:{debug:"*"}}],["debug@<4.2.0",{peerDependenciesMeta:{"supports-color":Qt}}],["got@<11",{dependencies:{"@types/responselike":"^1.0.0","@types/keyv":"^3.1.1"}}],["cacheable-lookup@<4.1.2",{dependencies:{"@types/keyv":"^3.1.1"}}],["http-link-dataloader@*",{peerDependencies:{graphql:"^0.13.1 || ^14.0.0"}}],["typescript-language-server@*",{dependencies:{"vscode-jsonrpc":"^5.0.1","vscode-languageserver-protocol":"^3.15.0"}}],["postcss-syntax@*",{peerDependenciesMeta:{"postcss-html":Qt,"postcss-jsx":Qt,"postcss-less":Qt,"postcss-markdown":Qt,"postcss-scss":Qt}}],["jss-plugin-rule-value-function@<=10.1.1",{dependencies:{"tiny-warning":"^1.0.2"}}],["ink-select-input@<4.1.0",{peerDependencies:{react:"^16.8.2"}}],["license-webpack-plugin@<2.3.18",{peerDependenciesMeta:{webpack:Qt}}],["snowpack@>=3.3.0",{dependencies:{"node-gyp":"^7.1.0"}}],["promise-inflight@*",{peerDependenciesMeta:{bluebird:Qt}}],["reactcss@*",{peerDependencies:{react:"*"}}],["react-color@<=2.19.0",{peerDependencies:{react:"*"}}],["gatsby-plugin-i18n@*",{dependencies:{ramda:"^0.24.1"}}],["useragent@^2.0.0",{dependencies:{request:"^2.88.0",yamlparser:"0.0.x",semver:"5.5.x"}}],["@apollographql/apollo-tools@<=0.5.2",{peerDependencies:{graphql:"^14.2.1 || ^15.0.0"}}],["material-table@^2.0.0",{dependencies:{"@babel/runtime":"^7.11.2"}}],["@babel/parser@*",{dependencies:{"@babel/types":"^7.8.3"}}],["fork-ts-checker-webpack-plugin@<=6.3.4",{peerDependencies:{eslint:">= 6",typescript:">= 2.7",webpack:">= 4","vue-template-compiler":"*"},peerDependenciesMeta:{eslint:Qt,"vue-template-compiler":Qt}}],["rc-animate@<=3.1.1",{peerDependencies:{react:">=16.9.0","react-dom":">=16.9.0"}}],["react-bootstrap-table2-paginator@*",{dependencies:{classnames:"^2.2.6"}}],["react-draggable@<=4.4.3",{peerDependencies:{react:">= 16.3.0","react-dom":">= 16.3.0"}}],["apollo-upload-client@<14",{peerDependencies:{graphql:"14 - 15"}}],["react-instantsearch-core@<=6.7.0",{peerDependencies:{algoliasearch:">= 3.1 < 5"}}],["react-instantsearch-dom@<=6.7.0",{dependencies:{"react-fast-compare":"^3.0.0"}}],["ws@<7.2.1",{peerDependencies:{bufferutil:"^4.0.1","utf-8-validate":"^5.0.2"},peerDependenciesMeta:{bufferutil:Qt,"utf-8-validate":Qt}}],["react-portal@<4.2.2",{peerDependencies:{"react-dom":"^15.0.0-0 || ^16.0.0-0 || ^17.0.0-0"}}],["react-scripts@<=4.0.1",{peerDependencies:{react:"*"}}],["testcafe@<=1.10.1",{dependencies:{"@babel/plugin-transform-for-of":"^7.12.1","@babel/runtime":"^7.12.5"}}],["testcafe-legacy-api@<=4.2.0",{dependencies:{"testcafe-hammerhead":"^17.0.1","read-file-relative":"^1.2.0"}}],["@google-cloud/firestore@<=4.9.3",{dependencies:{protobufjs:"^6.8.6"}}],["gatsby-source-apiserver@*",{dependencies:{"babel-polyfill":"^6.26.0"}}],["@webpack-cli/package-utils@<=1.0.1-alpha.4",{dependencies:{"cross-spawn":"^7.0.3"}}],["gatsby-remark-prismjs@<3.3.28",{dependencies:{lodash:"^4"}}],["gatsby-plugin-favicon@*",{peerDependencies:{webpack:"*"}}],["gatsby-plugin-sharp@<=4.6.0-next.3",{dependencies:{debug:"^4.3.1"}}],["gatsby-react-router-scroll@<=5.6.0-next.0",{dependencies:{"prop-types":"^15.7.2"}}],["@rebass/forms@*",{dependencies:{"@styled-system/should-forward-prop":"^5.0.0"},peerDependencies:{react:"^16.8.6"}}],["rebass@*",{peerDependencies:{react:"^16.8.6"}}],["@ant-design/react-slick@<=0.28.3",{peerDependencies:{react:">=16.0.0"}}],["mqtt@<4.2.7",{dependencies:{duplexify:"^4.1.1"}}],["vue-cli-plugin-vuetify@<=2.0.3",{dependencies:{semver:"^6.3.0"},peerDependenciesMeta:{"sass-loader":Qt,"vuetify-loader":Qt}}],["vue-cli-plugin-vuetify@<=2.0.4",{dependencies:{"null-loader":"^3.0.0"}}],["vue-cli-plugin-vuetify@>=2.4.3",{peerDependencies:{vue:"*"}}],["@vuetify/cli-plugin-utils@<=0.0.4",{dependencies:{semver:"^6.3.0"},peerDependenciesMeta:{"sass-loader":Qt}}],["@vue/cli-plugin-typescript@<=5.0.0-alpha.0",{dependencies:{"babel-loader":"^8.1.0"}}],["@vue/cli-plugin-typescript@<=5.0.0-beta.0",{dependencies:{"@babel/core":"^7.12.16"},peerDependencies:{"vue-template-compiler":"^2.0.0"},peerDependenciesMeta:{"vue-template-compiler":Qt}}],["cordova-ios@<=6.3.0",{dependencies:{underscore:"^1.9.2"}}],["cordova-lib@<=10.0.1",{dependencies:{underscore:"^1.9.2"}}],["git-node-fs@*",{peerDependencies:{"js-git":"^0.7.8"},peerDependenciesMeta:{"js-git":Qt}}],["consolidate@<0.16.0",{peerDependencies:{mustache:"^3.0.0"},peerDependenciesMeta:{mustache:Qt}}],["consolidate@<=0.16.0",{peerDependencies:{velocityjs:"^2.0.1",tinyliquid:"^0.2.34","liquid-node":"^3.0.1",jade:"^1.11.0","then-jade":"*",dust:"^0.3.0","dustjs-helpers":"^1.7.4","dustjs-linkedin":"^2.7.5",swig:"^1.4.2","swig-templates":"^2.0.3","razor-tmpl":"^1.3.1",atpl:">=0.7.6",liquor:"^0.0.5",twig:"^1.15.2",ejs:"^3.1.5",eco:"^1.1.0-rc-3",jazz:"^0.0.18",jqtpl:"~1.1.0",hamljs:"^0.6.2",hamlet:"^0.3.3",whiskers:"^0.4.0","haml-coffee":"^1.14.1","hogan.js":"^3.0.2",templayed:">=0.2.3",handlebars:"^4.7.6",underscore:"^1.11.0",lodash:"^4.17.20",pug:"^3.0.0","then-pug":"*",qejs:"^3.0.5",walrus:"^0.10.1",mustache:"^4.0.1",just:"^0.1.8",ect:"^0.5.9",mote:"^0.2.0",toffee:"^0.3.6",dot:"^1.1.3","bracket-template":"^1.1.5",ractive:"^1.3.12",nunjucks:"^3.2.2",htmling:"^0.0.8","babel-core":"^6.26.3",plates:"~0.4.11","react-dom":"^16.13.1",react:"^16.13.1","arc-templates":"^0.5.3",vash:"^0.13.0",slm:"^2.0.0",marko:"^3.14.4",teacup:"^2.0.0","coffee-script":"^1.12.7",squirrelly:"^5.1.0",twing:"^5.0.2"},peerDependenciesMeta:{velocityjs:Qt,tinyliquid:Qt,"liquid-node":Qt,jade:Qt,"then-jade":Qt,dust:Qt,"dustjs-helpers":Qt,"dustjs-linkedin":Qt,swig:Qt,"swig-templates":Qt,"razor-tmpl":Qt,atpl:Qt,liquor:Qt,twig:Qt,ejs:Qt,eco:Qt,jazz:Qt,jqtpl:Qt,hamljs:Qt,hamlet:Qt,whiskers:Qt,"haml-coffee":Qt,"hogan.js":Qt,templayed:Qt,handlebars:Qt,underscore:Qt,lodash:Qt,pug:Qt,"then-pug":Qt,qejs:Qt,walrus:Qt,mustache:Qt,just:Qt,ect:Qt,mote:Qt,toffee:Qt,dot:Qt,"bracket-template":Qt,ractive:Qt,nunjucks:Qt,htmling:Qt,"babel-core":Qt,plates:Qt,"react-dom":Qt,react:Qt,"arc-templates":Qt,vash:Qt,slm:Qt,marko:Qt,teacup:Qt,"coffee-script":Qt,squirrelly:Qt,twing:Qt}}],["vue-loader@<=16.3.3",{peerDependencies:{"@vue/compiler-sfc":"^3.0.8",webpack:"^4.1.0 || ^5.0.0-0"},peerDependenciesMeta:{"@vue/compiler-sfc":Qt}}],["vue-loader@^16.7.0",{peerDependencies:{"@vue/compiler-sfc":"^3.0.8",vue:"^3.2.13"},peerDependenciesMeta:{"@vue/compiler-sfc":Qt,vue:Qt}}],["scss-parser@<=1.0.5",{dependencies:{lodash:"^4.17.21"}}],["query-ast@<1.0.5",{dependencies:{lodash:"^4.17.21"}}],["redux-thunk@<=2.3.0",{peerDependencies:{redux:"^4.0.0"}}],["skypack@<=0.3.2",{dependencies:{tar:"^6.1.0"}}],["@npmcli/metavuln-calculator@<2.0.0",{dependencies:{"json-parse-even-better-errors":"^2.3.1"}}],["bin-links@<2.3.0",{dependencies:{"mkdirp-infer-owner":"^1.0.2"}}],["rollup-plugin-polyfill-node@<=0.8.0",{peerDependencies:{rollup:"^1.20.0 || ^2.0.0"}}],["snowpack@<3.8.6",{dependencies:{"magic-string":"^0.25.7"}}],["elm-webpack-loader@*",{dependencies:{temp:"^0.9.4"}}],["winston-transport@<=4.4.0",{dependencies:{logform:"^2.2.0"}}],["jest-vue-preprocessor@*",{dependencies:{"@babel/core":"7.8.7","@babel/template":"7.8.6"},peerDependencies:{pug:"^2.0.4"},peerDependenciesMeta:{pug:Qt}}],["redux-persist@*",{peerDependencies:{react:">=16"},peerDependenciesMeta:{react:Qt}}],["sodium@>=3",{dependencies:{"node-gyp":"^3.8.0"}}],["babel-plugin-graphql-tag@<=3.1.0",{peerDependencies:{graphql:"^14.0.0 || ^15.0.0"}}],["@playwright/test@<=1.14.1",{dependencies:{"jest-matcher-utils":"^26.4.2"}}],...["babel-plugin-remove-graphql-queries@<3.14.0-next.1","babel-preset-gatsby-package@<1.14.0-next.1","create-gatsby@<1.14.0-next.1","gatsby-admin@<0.24.0-next.1","gatsby-cli@<3.14.0-next.1","gatsby-core-utils@<2.14.0-next.1","gatsby-design-tokens@<3.14.0-next.1","gatsby-legacy-polyfills@<1.14.0-next.1","gatsby-plugin-benchmark-reporting@<1.14.0-next.1","gatsby-plugin-graphql-config@<0.23.0-next.1","gatsby-plugin-image@<1.14.0-next.1","gatsby-plugin-mdx@<2.14.0-next.1","gatsby-plugin-netlify-cms@<5.14.0-next.1","gatsby-plugin-no-sourcemaps@<3.14.0-next.1","gatsby-plugin-page-creator@<3.14.0-next.1","gatsby-plugin-preact@<5.14.0-next.1","gatsby-plugin-preload-fonts@<2.14.0-next.1","gatsby-plugin-schema-snapshot@<2.14.0-next.1","gatsby-plugin-styletron@<6.14.0-next.1","gatsby-plugin-subfont@<3.14.0-next.1","gatsby-plugin-utils@<1.14.0-next.1","gatsby-recipes@<0.25.0-next.1","gatsby-source-shopify@<5.6.0-next.1","gatsby-source-wikipedia@<3.14.0-next.1","gatsby-transformer-screenshot@<3.14.0-next.1","gatsby-worker@<0.5.0-next.1"].map(t=>[t,{dependencies:{"@babel/runtime":"^7.14.8"}}]),["gatsby-core-utils@<2.14.0-next.1",{dependencies:{got:"8.3.2"}}],["gatsby-plugin-gatsby-cloud@<=3.1.0-next.0",{dependencies:{"gatsby-core-utils":"^2.13.0-next.0"}}],["gatsby-plugin-gatsby-cloud@<=3.2.0-next.1",{peerDependencies:{webpack:"*"}}],["babel-plugin-remove-graphql-queries@<=3.14.0-next.1",{dependencies:{"gatsby-core-utils":"^2.8.0-next.1"}}],["gatsby-plugin-netlify@3.13.0-next.1",{dependencies:{"gatsby-core-utils":"^2.13.0-next.0"}}],["clipanion-v3-codemod@<=0.2.0",{peerDependencies:{jscodeshift:"^0.11.0"}}],["react-live@*",{peerDependencies:{"react-dom":"*",react:"*"}}],["webpack@<4.44.1",{peerDependenciesMeta:{"webpack-cli":Qt,"webpack-command":Qt}}],["webpack@<5.0.0-beta.23",{peerDependenciesMeta:{"webpack-cli":Qt}}],["webpack-dev-server@<3.10.2",{peerDependenciesMeta:{"webpack-cli":Qt}}],["@docusaurus/responsive-loader@<1.5.0",{peerDependenciesMeta:{sharp:Qt,jimp:Qt}}],["eslint-module-utils@*",{peerDependenciesMeta:{"eslint-import-resolver-node":Qt,"eslint-import-resolver-typescript":Qt,"eslint-import-resolver-webpack":Qt,"@typescript-eslint/parser":Qt}}],["eslint-plugin-import@*",{peerDependenciesMeta:{"@typescript-eslint/parser":Qt}}],["critters-webpack-plugin@<3.0.2",{peerDependenciesMeta:{"html-webpack-plugin":Qt}}],["terser@<=5.10.0",{dependencies:{acorn:"^8.5.0"}}],["babel-preset-react-app@10.0.x <10.0.2",{dependencies:{"@babel/plugin-proposal-private-property-in-object":"^7.16.7"}}],["eslint-config-react-app@*",{peerDependenciesMeta:{typescript:Qt}}],["@vue/eslint-config-typescript@<11.0.0",{peerDependenciesMeta:{typescript:Qt}}],["unplugin-vue2-script-setup@<0.9.1",{peerDependencies:{"@vue/composition-api":"^1.4.3","@vue/runtime-dom":"^3.2.26"}}],["@cypress/snapshot@*",{dependencies:{debug:"^3.2.7"}}],["auto-relay@<=0.14.0",{peerDependencies:{"reflect-metadata":"^0.1.13"}}],["vue-template-babel-compiler@<1.2.0",{peerDependencies:{"vue-template-compiler":"^2.6.0"}}],["@parcel/transformer-image@<2.5.0",{peerDependencies:{"@parcel/core":"*"}}],["@parcel/transformer-js@<2.5.0",{peerDependencies:{"@parcel/core":"*"}}],["parcel@*",{peerDependenciesMeta:{"@parcel/core":Qt}}],["react-scripts@*",{peerDependencies:{eslint:"*"}}],["focus-trap-react@^8.0.0",{dependencies:{tabbable:"^5.3.2"}}],["react-rnd@<10.3.7",{peerDependencies:{react:">=16.3.0","react-dom":">=16.3.0"}}],["connect-mongo@<5.0.0",{peerDependencies:{"express-session":"^1.17.1"}}],["vue-i18n@<9",{peerDependencies:{vue:"^2"}}],["vue-router@<4",{peerDependencies:{vue:"^2"}}],["unified@<10",{dependencies:{"@types/unist":"^2.0.0"}}],["react-github-btn@<=1.3.0",{peerDependencies:{react:">=16.3.0"}}],["react-dev-utils@*",{peerDependencies:{typescript:">=2.7",webpack:">=4"},peerDependenciesMeta:{typescript:Qt}}],["@asyncapi/react-component@<=1.0.0-next.39",{peerDependencies:{react:">=16.8.0","react-dom":">=16.8.0"}}],["xo@*",{peerDependencies:{webpack:">=1.11.0"},peerDependenciesMeta:{webpack:Qt}}],["babel-plugin-remove-graphql-queries@<=4.20.0-next.0",{dependencies:{"@babel/types":"^7.15.4"}}],["gatsby-plugin-page-creator@<=4.20.0-next.1",{dependencies:{"fs-extra":"^10.1.0"}}],["gatsby-plugin-utils@<=3.14.0-next.1",{dependencies:{fastq:"^1.13.0"},peerDependencies:{graphql:"^15.0.0"}}],["gatsby-plugin-mdx@<3.1.0-next.1",{dependencies:{mkdirp:"^1.0.4"}}],["gatsby-plugin-mdx@^2",{peerDependencies:{gatsby:"^3.0.0-next"}}],["fdir@<=5.2.0",{peerDependencies:{picomatch:"2.x"},peerDependenciesMeta:{picomatch:Qt}}],["babel-plugin-transform-typescript-metadata@<=0.3.2",{peerDependencies:{"@babel/core":"^7","@babel/traverse":"^7"},peerDependenciesMeta:{"@babel/traverse":Qt}}],["graphql-compose@>=9.0.10",{peerDependencies:{graphql:"^14.2.0 || ^15.0.0 || ^16.0.0"}}],["vite-plugin-vuetify@<=1.0.2",{peerDependencies:{vue:"^3.0.0"}}],["webpack-plugin-vuetify@<=2.0.1",{peerDependencies:{vue:"^3.2.6"}}],["eslint-import-resolver-vite@<2.0.1",{dependencies:{debug:"^4.3.4",resolve:"^1.22.8"}}],["notistack@^3.0.0",{dependencies:{csstype:"^3.0.10"}}]];var t9;function HBe(){return typeof t9>"u"&&(t9=ye("zlib").brotliDecompressSync(Buffer.from("G7weAByFTVk3Vs7UfHhq4yykgEM7pbW7TI43SG2S5tvGrwHBAzdz+s/npQ6tgEvobvxisrPIadkXeUAJotBn5bDZ5kAhcRqsIHe3F75Walet5hNalwgFDtxb0BiDUjiUQkjG0yW2hto9HPgiCkm316d6bC0kST72YN7D7rfkhCE9x4J0XwB0yavalxpUu2t9xszHrmtwalOxT7VslsxWcB1qpqZwERUra4psWhTV8BgwWeizurec82Caf1ABL11YMfbf8FJ9JBceZOkgmvrQPbC9DUldX/yMbmX06UQluCEjSwUoyO+EZPIjofr+/oAZUck2enraRD+oWLlnlYnj8xB+gwSo9lmmks4fXv574qSqcWA6z21uYkzMu3EWj+K23RxeQlLqiE35/rC8GcS4CGkKHKKq+zAIQwD9iRDNfiAqueLLpicFFrNsAI4zeTD/eO9MHcnRa5m8UT+M2+V+AkFST4BlKneiAQRSdST8KEAIyFlULt6wa9EBd0Ds28VmpaxquJdVt+nwdEs5xUskI13OVtFyY0UrQIRAlCuvvWivvlSKQfTO+2Q8OyUR1W5RvetaPz4jD27hdtwHFFA1Ptx6Ee/t2cY2rg2G46M1pNDRf2pWhvpy8pqMnuI3++4OF3+7OFIWXGjh+o7Nr2jNvbiYcQdQS1h903/jVFgOpA0yJ78z+x759bFA0rq+6aY5qPB4FzS3oYoLupDUhD9nDz6F6H7hpnlMf18KNKDu4IKjTWwrAnY6MFQw1W6ymOALHlFyCZmQhldg1MQHaMVVQTVgDC60TfaBqG++Y8PEoFhN/PBTZT175KNP/BlHDYGOOBmnBdzqJKplZ/ljiVG0ZBzfqeBRrrUkn6rA54462SgiliKoYVnbeptMdXNfAuaupIEi0bApF10TlgHfmEJAPUVidRVFyDupSem5po5vErPqWKhKbUIp0LozpYsIKK57dM/HKr+nguF+7924IIWMICkQ8JUigs9D+W+c4LnNoRtPPKNRUiCYmP+Jfo2lfKCKw8qpraEeWU3uiNRO6zcyKQoXPR5htmzzLznke7b4YbXW3I1lIRzmgG02Udb58U+7TpwyN7XymCgH+wuPDthZVQvRZuEP+SnLtMicz9m5zASWOBiAcLmkuFlTKuHspSIhCBD0yUPKcxu81A+4YD78rA2vtwsUEday9WNyrShyrl60rWmA+SmbYZkQOwFJWArxRYYc5jGhA5ikxYw1rx3ei4NmeX/lKiwpZ9Ln1tV2Ae7sArvxuVLbJjqJRjW1vFXAyHpvLG+8MJ6T2Ubx5M2KDa2SN6vuIGxJ9WQM9Mk3Q7aCNiZONXllhqq24DmoLbQfW2rYWsOgHWjtOmIQMyMKdiHZDjoyIq5+U700nZ6odJAoYXPQBvFNiQ78d5jaXliBqLTJEqUCwi+LiH2mx92EmNKDsJL74Z613+3lf20pxkV1+erOrjj8pW00vsPaahKUM+05ssd5uwM7K482KWEf3TCwlg/o3e5ngto7qSMz7YteIgCsF1UOcsLk7F7MxWbvrPMY473ew0G+noVL8EPbkmEMftMSeL6HFub/zy+2JQ==","base64")).toString()),t9}var r9;function jBe(){return typeof r9>"u"&&(r9=ye("zlib").brotliDecompressSync(Buffer.from("G8MSIIzURnVBnObTcvb3XE6v2S9Qgc2K801Oa5otNKEtK8BINZNcaQHy+9/vf/WXBimwutXC33P2DPc64pps5rz7NGGWaOKNSPL4Y2KRE8twut2lFOIN+OXPtRmPMRhMTILib2bEQx43az2I5d3YS8Roa5UZpF/ujHb3Djd3GDvYUfvFYSUQ39vb2cmifp/rgB4J/65JK3wRBTvMBoNBmn3mbXC63/gbBkW/2IRPri0O8bcsRBsmarF328pAln04nyJFkwUAvNu934supAqLtyerZZpJ8I8suJHhf/ocMV+scKwa8NOiDKIPXw6Ex/EEZD6TEGaW8N5zvNHYF10l6Lfooj7D5W2k3dgvQSbp2Wv8TGOayS978gxlOLVjTGXs66ozewbrjwElLtyrYNnWTfzzdEutgROUFPVMhnMoy8EjJLLlWwIEoySxliim9kYW30JUHiPVyjt0iAw/ZpPmCbUCltYPnq6ZNblIKhTNhqS/oqC9iya5sGKZTOVsTEg34n92uZTf2iPpcZih8rPW8CzA+adIGmyCPcKdLMsBLShd+zuEbTrqpwuh+DLmracZcjPC5Sdf5odDAhKpFuOsQS67RT+1VgWWygSv3YwxDnylc04/PYuaMeIzhBkLrvs7e/OUzRTF56MmfY6rI63QtEjEQzq637zQqJ39nNhu3NmoRRhW/086bHGBUtx0PE0j3aEGvkdh9WJC8y8j8mqqke9/dQ5la+Q3ba4RlhvTbnfQhPDDab3tUifkjKuOsp13mXEmO00Mu88F/M67R7LXfoFDFLNtgCSWjWX+3Jn1371pJTK9xPBiMJafvDjtFyAzu8rxeQ0TKMQXNPs5xxiBOd+BRJP8KP88XPtJIbZKh/cdW8KvBUkpqKpGoiIaA32c3/JnQr4efXt85mXvidOvn/eU3Pase1typLYBalJ14mCso9h79nuMOuCa/kZAOkJHmTjP5RM2WNoPasZUAnT1TAE/NH25hUxcQv6hQWR/m1PKk4ooXMcM4SR1iYU3fUohvqk4RY2hbmTVVIXv6TvqO+0doOjgeVFAcom+RlwJQmOVH7pr1Q9LoJT6n1DeQEB+NHygsATbIwTcOKZlJsY8G4+suX1uQLjUWwLjjs0mvSvZcLTpIGAekeR7GCgl8eo3ndAqEe2XCav4huliHjdbIPBsGJuPX7lrO9HX1UbXRH5opOe1x6JsOSgHZR+EaxuXVhpLLxm6jk1LJtZfHSc6BKPun3CpYYVMJGwEUyk8MTGG0XL5MfEwaXpnc9TKnBmlGn6nHiGREc3ysn47XIBDzA+YvFdjZzVIEDcKGpS6PbUJehFRjEne8D0lVU1XuRtlgszq6pTNlQ/3MzNOEgCWPyTct22V2mEi2krizn5VDo9B19/X2DB3hCGRMM7ONbtnAcIx/OWB1u5uPbW1gsH8irXxT/IzG0PoXWYjhbMsH3KTuoOl5o17PulcgvsfTSnKFM354GWI8luqZnrswWjiXy3G+Vbyo1KMopFmmvBwNELgaS8z8dNZchx/Cl/xjddxhMcyqtzFyONb2Zdu90NkI8pAeufe7YlXrp53v8Dj/l8vWeVspRKBGXScBBPI/HinSTGmLDOGGOCIyH0JFdOZx0gWsacNlQLJMIrBhqRxXxHF/5pseWwejlAAvZ3klZSDSYY8mkToaWejXhgNomeGtx1DTLEUFMRkgF5yFB22WYdJnaWN14r1YJj81hGi45+jrADS5nYRhCiSlCJJ1nL8pYX+HDSMhdTEWyRcgHVp/IsUIZYMfT+YYncUQPgcxNGCHfZ88vDdrcUuaGIl6zhAsiaq7R5dfqrqXH/JcBhfjT8D0azayIyEz75Nxp6YkcyDxlJq3EXnJUpqDohJJOysL1t1uNiHESlvsxPb5cpbW0+ICZqJmUZus1BMW0F5IVBODLIo2zHHjA0=","base64")).toString()),r9}var n9;function qBe(){return typeof n9>"u"&&(n9=ye("zlib").brotliDecompressSync(Buffer.from("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","base64")).toString()),n9}var GBe=new Map([[q.makeIdent(null,"fsevents").identHash,HBe],[q.makeIdent(null,"resolve").identHash,jBe],[q.makeIdent(null,"typescript").identHash,qBe]]),YSt={hooks:{registerPackageExtensions:async(t,e)=>{for(let[r,s]of e9)e(q.parseDescriptor(r,!0),s)},getBuiltinPatch:async(t,e)=>{let r="compat/";if(!e.startsWith(r))return;let s=q.parseIdent(e.slice(r.length)),a=GBe.get(s.identHash)?.();return typeof a<"u"?a:null},reduceDependency:async(t,e,r,s)=>typeof GBe.get(t.identHash)>"u"?t:q.makeDescriptor(t,q.makeRange({protocol:"patch:",source:q.stringifyDescriptor(t),selector:`optional!builtin`,params:null}))}},VSt=YSt;var w9={};Vt(w9,{ConstraintsCheckCommand:()=>ew,ConstraintsQueryCommand:()=>XC,ConstraintsSourceCommand:()=>$C,default:()=>IDt});Ve();Ve();IS();var KC=class{constructor(e){this.project=e}createEnvironment(){let e=new VC(["cwd","ident"]),r=new VC(["workspace","type","ident"]),s=new VC(["ident"]),a={manifestUpdates:new Map,reportedErrors:new Map},n=new Map,c=new Map;for(let f of this.project.storedPackages.values()){let p=Array.from(f.peerDependencies.values(),h=>[q.stringifyIdent(h),h.range]);n.set(f.locatorHash,{workspace:null,ident:q.stringifyIdent(f),version:f.version,dependencies:new Map,peerDependencies:new Map(p.filter(([h])=>f.peerDependenciesMeta.get(h)?.optional!==!0)),optionalPeerDependencies:new Map(p.filter(([h])=>f.peerDependenciesMeta.get(h)?.optional===!0))})}for(let f of this.project.storedPackages.values()){let p=n.get(f.locatorHash);p.dependencies=new Map(Array.from(f.dependencies.values(),h=>{let E=this.project.storedResolutions.get(h.descriptorHash);if(typeof E>"u")throw new Error("Assertion failed: The resolution should have been registered");let C=n.get(E);if(typeof C>"u")throw new Error("Assertion failed: The package should have been registered");return[q.stringifyIdent(h),C]})),p.dependencies.delete(p.ident)}for(let f of this.project.workspaces){let p=q.stringifyIdent(f.anchoredLocator),h=f.manifest.exportTo({}),E=n.get(f.anchoredLocator.locatorHash);if(typeof E>"u")throw new Error("Assertion failed: The package should have been registered");let C=(R,N,{caller:U=As.getCaller()}={})=>{let W=ES(R),te=je.getMapWithDefault(a.manifestUpdates,f.cwd),ie=je.getMapWithDefault(te,W),Ae=je.getSetWithDefault(ie,N);U!==null&&Ae.add(U)},S=R=>C(R,void 0,{caller:As.getCaller()}),P=R=>{je.getArrayWithDefault(a.reportedErrors,f.cwd).push(R)},I=e.insert({cwd:f.relativeCwd,ident:p,manifest:h,pkg:E,set:C,unset:S,error:P});c.set(f,I);for(let R of Ht.allDependencies)for(let N of f.manifest[R].values()){let U=q.stringifyIdent(N),W=()=>{C([R,U],void 0,{caller:As.getCaller()})},te=Ae=>{C([R,U],Ae,{caller:As.getCaller()})},ie=null;if(R!=="peerDependencies"&&(R!=="dependencies"||!f.manifest.devDependencies.has(N.identHash))){let Ae=f.anchoredPackage.dependencies.get(N.identHash);if(Ae){if(typeof Ae>"u")throw new Error("Assertion failed: The dependency should have been registered");let ce=this.project.storedResolutions.get(Ae.descriptorHash);if(typeof ce>"u")throw new Error("Assertion failed: The resolution should have been registered");let me=n.get(ce);if(typeof me>"u")throw new Error("Assertion failed: The package should have been registered");ie=me}}r.insert({workspace:I,ident:U,range:N.range,type:R,resolution:ie,update:te,delete:W,error:P})}}for(let f of this.project.storedPackages.values()){let p=this.project.tryWorkspaceByLocator(f);if(!p)continue;let h=c.get(p);if(typeof h>"u")throw new Error("Assertion failed: The workspace should have been registered");let E=n.get(f.locatorHash);if(typeof E>"u")throw new Error("Assertion failed: The package should have been registered");E.workspace=h}return{workspaces:e,dependencies:r,packages:s,result:a}}async process(){let e=this.createEnvironment(),r={Yarn:{workspace:a=>e.workspaces.find(a)[0]??null,workspaces:a=>e.workspaces.find(a),dependency:a=>e.dependencies.find(a)[0]??null,dependencies:a=>e.dependencies.find(a),package:a=>e.packages.find(a)[0]??null,packages:a=>e.packages.find(a)}},s=await this.project.loadUserConfig();return s?.constraints?(await s.constraints(r),e.result):null}};Ve();Ve();Wt();var XC=class extends ut{constructor(){super(...arguments);this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.query=ge.String()}static{this.paths=[["constraints","query"]]}static{this.usage=ot.Usage({category:"Constraints-related commands",description:"query the constraints fact database",details:` + This command will output all matches to the given prolog query. + `,examples:[["List all dependencies throughout the workspace","yarn constraints query 'workspace_has_dependency(_, DependencyName, _, _).'"]]})}async execute(){let{Constraints:r}=await Promise.resolve().then(()=>(vS(),BS)),s=await ze.find(this.context.cwd,this.context.plugins),{project:a}=await Tt.find(s,this.context.cwd),n=await r.find(a),c=this.query;return c.endsWith(".")||(c=`${c}.`),(await Ot.start({configuration:s,json:this.json,stdout:this.context.stdout},async p=>{for await(let h of n.query(c)){let E=Array.from(Object.entries(h)),C=E.length,S=E.reduce((P,[I])=>Math.max(P,I.length),0);for(let P=0;P(vS(),BS)),s=await ze.find(this.context.cwd,this.context.plugins),{project:a}=await Tt.find(s,this.context.cwd),n=await r.find(a);this.context.stdout.write(this.verbose?n.fullSource:n.source)}};Ve();Ve();Wt();IS();var ew=class extends ut{constructor(){super(...arguments);this.fix=ge.Boolean("--fix",!1,{description:"Attempt to automatically fix unambiguous issues, following a multi-pass process"});this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}static{this.paths=[["constraints"]]}static{this.usage=ot.Usage({category:"Constraints-related commands",description:"check that the project constraints are met",details:` + This command will run constraints on your project and emit errors for each one that is found but isn't met. If any error is emitted the process will exit with a non-zero exit code. + + If the \`--fix\` flag is used, Yarn will attempt to automatically fix the issues the best it can, following a multi-pass process (with a maximum of 10 iterations). Some ambiguous patterns cannot be autofixed, in which case you'll have to manually specify the right resolution. + + For more information as to how to write constraints, please consult our dedicated page on our website: https://yarnpkg.com/features/constraints. + `,examples:[["Check that all constraints are satisfied","yarn constraints"],["Autofix all unmet constraints","yarn constraints --fix"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s}=await Tt.find(r,this.context.cwd);await s.restoreInstallState();let a=await s.loadUserConfig(),n;if(a?.constraints)n=new KC(s);else{let{Constraints:h}=await Promise.resolve().then(()=>(vS(),BS));n=await h.find(s)}let c,f=!1,p=!1;for(let h=this.fix?10:1;h>0;--h){let E=await n.process();if(!E)break;let{changedWorkspaces:C,remainingErrors:S}=lF(s,E,{fix:this.fix}),P=[];for(let[I,R]of C){let N=I.manifest.indent;I.manifest=new Ht,I.manifest.indent=N,I.manifest.load(R),P.push(I.persistManifest())}if(await Promise.all(P),!(C.size>0&&h>1)){c=ZBe(S,{configuration:r}),f=!1,p=!0;for(let[,I]of S)for(let R of I)R.fixable?f=!0:p=!1}}if(c.children.length===0)return 0;if(f){let h=p?`Those errors can all be fixed by running ${he.pretty(r,"yarn constraints --fix",he.Type.CODE)}`:`Errors prefixed by '\u2699' can be fixed by running ${he.pretty(r,"yarn constraints --fix",he.Type.CODE)}`;await Ot.start({configuration:r,stdout:this.context.stdout,includeNames:!1,includeFooter:!1},async E=>{E.reportInfo(0,h),E.reportSeparator()})}return c.children=je.sortMap(c.children,h=>h.value[1]),ks.emitTree(c,{configuration:r,stdout:this.context.stdout,json:this.json,separators:1}),1}};IS();var EDt={configuration:{enableConstraintsChecks:{description:"If true, constraints will run during installs",type:"BOOLEAN",default:!1},constraintsPath:{description:"The path of the constraints file.",type:"ABSOLUTE_PATH",default:"./constraints.pro"}},commands:[XC,$C,ew],hooks:{async validateProjectAfterInstall(t,{reportError:e}){if(!t.configuration.get("enableConstraintsChecks"))return;let r=await t.loadUserConfig(),s;if(r?.constraints)s=new KC(t);else{let{Constraints:c}=await Promise.resolve().then(()=>(vS(),BS));s=await c.find(t)}let a=await s.process();if(!a)return;let{remainingErrors:n}=lF(t,a);if(n.size!==0)if(t.configuration.isCI)for(let[c,f]of n)for(let p of f)e(84,`${he.pretty(t.configuration,c.anchoredLocator,he.Type.IDENT)}: ${p.text}`);else e(84,`Constraint check failed; run ${he.pretty(t.configuration,"yarn constraints",he.Type.CODE)} for more details`)}}},IDt=EDt;var B9={};Vt(B9,{CreateCommand:()=>tw,DlxCommand:()=>rw,default:()=>wDt});Ve();Wt();var tw=class extends ut{constructor(){super(...arguments);this.pkg=ge.String("-p,--package",{description:"The package to run the provided command from"});this.quiet=ge.Boolean("-q,--quiet",!1,{description:"Only report critical errors instead of printing the full install logs"});this.command=ge.String();this.args=ge.Proxy()}static{this.paths=[["create"]]}async execute(){let r=[];this.pkg&&r.push("--package",this.pkg),this.quiet&&r.push("--quiet");let s=this.command.replace(/^(@[^@/]+)(@|$)/,"$1/create$2"),a=q.parseDescriptor(s),n=a.name.match(/^create(-|$)/)?a:a.scope?q.makeIdent(a.scope,`create-${a.name}`):q.makeIdent(null,`create-${a.name}`),c=q.stringifyIdent(n);return a.range!=="unknown"&&(c+=`@${a.range}`),this.cli.run(["dlx",...r,c,...this.args])}};Ve();Ve();bt();Wt();var rw=class extends ut{constructor(){super(...arguments);this.packages=ge.Array("-p,--package",{description:"The package(s) to install before running the command"});this.quiet=ge.Boolean("-q,--quiet",!1,{description:"Only report critical errors instead of printing the full install logs"});this.command=ge.String();this.args=ge.Proxy()}static{this.paths=[["dlx"]]}static{this.usage=ot.Usage({description:"run a package in a temporary environment",details:"\n This command will install a package within a temporary environment, and run its binary script if it contains any. The binary will run within the current cwd.\n\n By default Yarn will download the package named `command`, but this can be changed through the use of the `-p,--package` flag which will instruct Yarn to still run the same command but from a different package.\n\n Using `yarn dlx` as a replacement of `yarn add` isn't recommended, as it makes your project non-deterministic (Yarn doesn't keep track of the packages installed through `dlx` - neither their name, nor their version).\n ",examples:[["Use create-react-app to create a new React app","yarn dlx create-react-app ./my-app"],["Install multiple packages for a single command",`yarn dlx -p typescript -p ts-node ts-node --transpile-only -e "console.log('hello!')"`]]})}async execute(){return ze.telemetry=null,await le.mktempPromise(async r=>{let s=K.join(r,`dlx-${process.pid}`);await le.mkdirPromise(s),await le.writeFilePromise(K.join(s,"package.json"),`{} +`),await le.writeFilePromise(K.join(s,"yarn.lock"),"");let a=K.join(s,".yarnrc.yml"),n=await ze.findProjectCwd(this.context.cwd),f={enableGlobalCache:!(await ze.find(this.context.cwd,null,{strict:!1})).get("enableGlobalCache"),enableTelemetry:!1,logFilters:[{code:Vf(68),level:he.LogLevel.Discard}]},p=n!==null?K.join(n,".yarnrc.yml"):null;p!==null&&le.existsSync(p)?(await le.copyFilePromise(p,a),await ze.updateConfiguration(s,N=>{let U=je.toMerged(N,f);return Array.isArray(N.plugins)&&(U.plugins=N.plugins.map(W=>{let te=typeof W=="string"?W:W.path,ie=ue.isAbsolute(te)?te:ue.resolve(ue.fromPortablePath(n),te);return typeof W=="string"?ie:{path:ie,spec:W.spec}})),U})):await le.writeJsonPromise(a,f);let h=this.packages??[this.command],E=q.parseDescriptor(this.command).name,C=await this.cli.run(["add","--fixed","--",...h],{cwd:s,quiet:this.quiet});if(C!==0)return C;this.quiet||this.context.stdout.write(` +`);let S=await ze.find(s,this.context.plugins),{project:P,workspace:I}=await Tt.find(S,s);if(I===null)throw new ar(P.cwd,s);await P.restoreInstallState();let R=await In.getWorkspaceAccessibleBinaries(I);return R.has(E)===!1&&R.size===1&&typeof this.packages>"u"&&(E=Array.from(R)[0][0]),await In.executeWorkspaceAccessibleBinary(I,E,this.args,{packageAccessibleBinaries:R,cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})})}};var CDt={commands:[tw,rw]},wDt=CDt;var D9={};Vt(D9,{ExecFetcher:()=>DS,ExecResolver:()=>bS,default:()=>SDt,execUtils:()=>AF});Ve();Ve();bt();var fA="exec:";var AF={};Vt(AF,{loadGeneratorFile:()=>SS,makeLocator:()=>S9,makeSpec:()=>Bve,parseSpec:()=>v9});Ve();bt();function v9(t){let{params:e,selector:r}=q.parseRange(t),s=ue.toPortablePath(r);return{parentLocator:e&&typeof e.locator=="string"?q.parseLocator(e.locator):null,path:s}}function Bve({parentLocator:t,path:e,generatorHash:r,protocol:s}){let a=t!==null?{locator:q.stringifyLocator(t)}:{},n=typeof r<"u"?{hash:r}:{};return q.makeRange({protocol:s,source:e,selector:e,params:{...n,...a}})}function S9(t,{parentLocator:e,path:r,generatorHash:s,protocol:a}){return q.makeLocator(t,Bve({parentLocator:e,path:r,generatorHash:s,protocol:a}))}async function SS(t,e,r){let{parentLocator:s,path:a}=q.parseFileStyleRange(t,{protocol:e}),n=K.isAbsolute(a)?{packageFs:new Sn(vt.root),prefixPath:vt.dot,localPath:vt.root}:await r.fetcher.fetch(s,r),c=n.localPath?{packageFs:new Sn(vt.root),prefixPath:K.relative(vt.root,n.localPath)}:n;n!==c&&n.releaseFs&&n.releaseFs();let f=c.packageFs,p=K.join(c.prefixPath,a);return await f.readFilePromise(p,"utf8")}var DS=class{supports(e,r){return!!e.reference.startsWith(fA)}getLocalPath(e,r){let{parentLocator:s,path:a}=q.parseFileStyleRange(e.reference,{protocol:fA});if(K.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(s,r);return n===null?null:K.resolve(n,a)}async fetch(e,r){let s=r.checksums.get(e.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(e,s,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e),loader:()=>this.fetchFromDisk(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:q.getIdentVendorPath(e),localPath:this.getLocalPath(e,r),checksum:c}}async fetchFromDisk(e,r){let s=await SS(e.reference,fA,r);return le.mktempPromise(async a=>{let n=K.join(a,"generator.js");return await le.writeFilePromise(n,s),le.mktempPromise(async c=>{if(await this.generatePackage(c,e,n,r),!le.existsSync(K.join(c,"build")))throw new Error("The script should have generated a build directory");return await hs.makeArchiveFromDirectory(K.join(c,"build"),{prefixPath:q.getIdentVendorPath(e),compressionLevel:r.project.configuration.get("compressionLevel")})})})}async generatePackage(e,r,s,a){return await le.mktempPromise(async n=>{let c=await In.makeScriptEnv({project:a.project,binFolder:n}),f=K.join(e,"runtime.js");return await le.mktempPromise(async p=>{let h=K.join(p,"buildfile.log"),E=K.join(e,"generator"),C=K.join(e,"build");await le.mkdirPromise(E),await le.mkdirPromise(C);let S={tempDir:ue.fromPortablePath(E),buildDir:ue.fromPortablePath(C),locator:q.stringifyLocator(r)};await le.writeFilePromise(f,` + // Expose 'Module' as a global variable + Object.defineProperty(global, 'Module', { + get: () => require('module'), + configurable: true, + enumerable: false, + }); + + // Expose non-hidden built-in modules as global variables + for (const name of Module.builtinModules.filter((name) => name !== 'module' && !name.startsWith('_'))) { + Object.defineProperty(global, name, { + get: () => require(name), + configurable: true, + enumerable: false, + }); + } + + // Expose the 'execEnv' global variable + Object.defineProperty(global, 'execEnv', { + value: { + ...${JSON.stringify(S)}, + }, + enumerable: true, + }); + `);let P=c.NODE_OPTIONS||"",I=/\s*--require\s+\S*\.pnp\.c?js\s*/g;P=P.replace(I," ").trim(),c.NODE_OPTIONS=P;let{stdout:R,stderr:N}=a.project.configuration.getSubprocessStreams(h,{header:`# This file contains the result of Yarn generating a package (${q.stringifyLocator(r)}) +`,prefix:q.prettyLocator(a.project.configuration,r),report:a.report}),{code:U}=await Gr.pipevp(process.execPath,["--require",ue.fromPortablePath(f),ue.fromPortablePath(s),q.stringifyIdent(r)],{cwd:e,env:c,stdin:null,stdout:R,stderr:N});if(U!==0)throw le.detachTemp(p),new Error(`Package generation failed (exit code ${U}, logs can be found here: ${he.pretty(a.project.configuration,h,he.Type.PATH)})`)})})}};Ve();Ve();var BDt=2,bS=class{supportsDescriptor(e,r){return!!e.range.startsWith(fA)}supportsLocator(e,r){return!!e.reference.startsWith(fA)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,s){return q.bindDescriptor(e,{locator:q.stringifyLocator(r)})}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,s){if(!s.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let{path:a,parentLocator:n}=v9(e.range);if(n===null)throw new Error("Assertion failed: The descriptor should have been bound");let c=await SS(q.makeRange({protocol:fA,source:a,selector:a,params:{locator:q.stringifyLocator(n)}}),fA,s.fetchOptions),f=Nn.makeHash(`${BDt}`,c).slice(0,6);return[S9(e,{parentLocator:n,path:a,generatorHash:f,protocol:fA})]}async getSatisfying(e,r,s,a){let[n]=await this.getCandidates(e,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let s=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await je.releaseAfterUseAsync(async()=>await Ht.find(s.prefixPath,{baseFs:s.packageFs}),s.releaseFs);return{...e,version:a.version||"0.0.0",languageName:a.languageName||r.project.configuration.get("defaultLanguageName"),linkType:"HARD",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var vDt={fetchers:[DS],resolvers:[bS]},SDt=vDt;var P9={};Vt(P9,{FileFetcher:()=>QS,FileResolver:()=>TS,TarballFileFetcher:()=>RS,TarballFileResolver:()=>NS,default:()=>PDt,fileUtils:()=>km});Ve();bt();var nw=/^(?:[a-zA-Z]:[\\/]|\.{0,2}\/)/,PS=/^[^?]*\.(?:tar\.gz|tgz)(?:::.*)?$/,es="file:";var km={};Vt(km,{fetchArchiveFromLocator:()=>kS,makeArchiveFromLocator:()=>pF,makeBufferFromLocator:()=>b9,makeLocator:()=>iw,makeSpec:()=>vve,parseSpec:()=>xS});Ve();bt();function xS(t){let{params:e,selector:r}=q.parseRange(t),s=ue.toPortablePath(r);return{parentLocator:e&&typeof e.locator=="string"?q.parseLocator(e.locator):null,path:s}}function vve({parentLocator:t,path:e,hash:r,protocol:s}){let a=t!==null?{locator:q.stringifyLocator(t)}:{},n=typeof r<"u"?{hash:r}:{};return q.makeRange({protocol:s,source:e,selector:e,params:{...n,...a}})}function iw(t,{parentLocator:e,path:r,hash:s,protocol:a}){return q.makeLocator(t,vve({parentLocator:e,path:r,hash:s,protocol:a}))}async function kS(t,e){let{parentLocator:r,path:s}=q.parseFileStyleRange(t.reference,{protocol:es}),a=K.isAbsolute(s)?{packageFs:new Sn(vt.root),prefixPath:vt.dot,localPath:vt.root}:await e.fetcher.fetch(r,e),n=a.localPath?{packageFs:new Sn(vt.root),prefixPath:K.relative(vt.root,a.localPath)}:a;a!==n&&a.releaseFs&&a.releaseFs();let c=n.packageFs,f=K.join(n.prefixPath,s);return await je.releaseAfterUseAsync(async()=>await c.readFilePromise(f),n.releaseFs)}async function pF(t,{protocol:e,fetchOptions:r,inMemory:s=!1}){let{parentLocator:a,path:n}=q.parseFileStyleRange(t.reference,{protocol:e}),c=K.isAbsolute(n)?{packageFs:new Sn(vt.root),prefixPath:vt.dot,localPath:vt.root}:await r.fetcher.fetch(a,r),f=c.localPath?{packageFs:new Sn(vt.root),prefixPath:K.relative(vt.root,c.localPath)}:c;c!==f&&c.releaseFs&&c.releaseFs();let p=f.packageFs,h=K.join(f.prefixPath,n);return await je.releaseAfterUseAsync(async()=>await hs.makeArchiveFromDirectory(h,{baseFs:p,prefixPath:q.getIdentVendorPath(t),compressionLevel:r.project.configuration.get("compressionLevel"),inMemory:s}),f.releaseFs)}async function b9(t,{protocol:e,fetchOptions:r}){return(await pF(t,{protocol:e,fetchOptions:r,inMemory:!0})).getBufferAndClose()}var QS=class{supports(e,r){return!!e.reference.startsWith(es)}getLocalPath(e,r){let{parentLocator:s,path:a}=q.parseFileStyleRange(e.reference,{protocol:es});if(K.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(s,r);return n===null?null:K.resolve(n,a)}async fetch(e,r){let s=r.checksums.get(e.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(e,s,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${q.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.fetchFromDisk(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:q.getIdentVendorPath(e),localPath:this.getLocalPath(e,r),checksum:c}}async fetchFromDisk(e,r){return pF(e,{protocol:es,fetchOptions:r})}};Ve();Ve();var DDt=2,TS=class{supportsDescriptor(e,r){return e.range.match(nw)?!0:!!e.range.startsWith(es)}supportsLocator(e,r){return!!e.reference.startsWith(es)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,s){return nw.test(e.range)&&(e=q.makeDescriptor(e,`${es}${e.range}`)),q.bindDescriptor(e,{locator:q.stringifyLocator(r)})}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,s){if(!s.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let{path:a,parentLocator:n}=xS(e.range);if(n===null)throw new Error("Assertion failed: The descriptor should have been bound");let c=await b9(q.makeLocator(e,q.makeRange({protocol:es,source:a,selector:a,params:{locator:q.stringifyLocator(n)}})),{protocol:es,fetchOptions:s.fetchOptions}),f=Nn.makeHash(`${DDt}`,c).slice(0,6);return[iw(e,{parentLocator:n,path:a,hash:f,protocol:es})]}async getSatisfying(e,r,s,a){let[n]=await this.getCandidates(e,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let s=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await je.releaseAfterUseAsync(async()=>await Ht.find(s.prefixPath,{baseFs:s.packageFs}),s.releaseFs);return{...e,version:a.version||"0.0.0",languageName:a.languageName||r.project.configuration.get("defaultLanguageName"),linkType:"HARD",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};Ve();var RS=class{supports(e,r){return PS.test(e.reference)?!!e.reference.startsWith(es):!1}getLocalPath(e,r){return null}async fetch(e,r){let s=r.checksums.get(e.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(e,s,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${q.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.fetchFromDisk(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:q.getIdentVendorPath(e),checksum:c}}async fetchFromDisk(e,r){let s=await kS(e,r);return await hs.convertToZip(s,{configuration:r.project.configuration,prefixPath:q.getIdentVendorPath(e),stripComponents:1})}};Ve();Ve();Ve();var NS=class{supportsDescriptor(e,r){return PS.test(e.range)?!!(e.range.startsWith(es)||nw.test(e.range)):!1}supportsLocator(e,r){return PS.test(e.reference)?!!e.reference.startsWith(es):!1}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,s){return nw.test(e.range)&&(e=q.makeDescriptor(e,`${es}${e.range}`)),q.bindDescriptor(e,{locator:q.stringifyLocator(r)})}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,s){if(!s.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let{path:a,parentLocator:n}=xS(e.range);if(n===null)throw new Error("Assertion failed: The descriptor should have been bound");let c=iw(e,{parentLocator:n,path:a,hash:"",protocol:es}),f=await kS(c,s.fetchOptions),p=Nn.makeHash(f).slice(0,6);return[iw(e,{parentLocator:n,path:a,hash:p,protocol:es})]}async getSatisfying(e,r,s,a){let[n]=await this.getCandidates(e,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let s=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await je.releaseAfterUseAsync(async()=>await Ht.find(s.prefixPath,{baseFs:s.packageFs}),s.releaseFs);return{...e,version:a.version||"0.0.0",languageName:a.languageName||r.project.configuration.get("defaultLanguageName"),linkType:"HARD",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var bDt={fetchers:[RS,QS],resolvers:[NS,TS]},PDt=bDt;var Q9={};Vt(Q9,{GithubFetcher:()=>OS,default:()=>kDt,githubUtils:()=>hF});Ve();bt();var hF={};Vt(hF,{invalidGithubUrlMessage:()=>bve,isGithubUrl:()=>x9,parseGithubUrl:()=>k9});var Sve=et(ye("querystring")),Dve=[/^https?:\/\/(?:([^/]+?)@)?github.com\/([^/#]+)\/([^/#]+)\/tarball\/([^/#]+)(?:#(.*))?$/,/^https?:\/\/(?:([^/]+?)@)?github.com\/([^/#]+)\/([^/#]+?)(?:\.git)?(?:#(.*))?$/];function x9(t){return t?Dve.some(e=>!!t.match(e)):!1}function k9(t){let e;for(let f of Dve)if(e=t.match(f),e)break;if(!e)throw new Error(bve(t));let[,r,s,a,n="master"]=e,{commit:c}=Sve.default.parse(n);return n=c||n.replace(/[^:]*:/,""),{auth:r,username:s,reponame:a,treeish:n}}function bve(t){return`Input cannot be parsed as a valid GitHub URL ('${t}').`}var OS=class{supports(e,r){return!!x9(e.reference)}getLocalPath(e,r){return null}async fetch(e,r){let s=r.checksums.get(e.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(e,s,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${q.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from GitHub`),loader:()=>this.fetchFromNetwork(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:q.getIdentVendorPath(e),checksum:c}}async fetchFromNetwork(e,r){let s=await An.get(this.getLocatorUrl(e,r),{configuration:r.project.configuration});return await le.mktempPromise(async a=>{let n=new Sn(a);await hs.extractArchiveTo(s,n,{stripComponents:1});let c=Qa.splitRepoUrl(e.reference),f=K.join(a,"package.tgz");await In.prepareExternalProject(a,f,{configuration:r.project.configuration,report:r.report,workspace:c.extra.workspace,locator:e});let p=await le.readFilePromise(f);return await hs.convertToZip(p,{configuration:r.project.configuration,prefixPath:q.getIdentVendorPath(e),stripComponents:1})})}getLocatorUrl(e,r){let{auth:s,username:a,reponame:n,treeish:c}=k9(e.reference);return`https://${s?`${s}@`:""}github.com/${a}/${n}/archive/${c}.tar.gz`}};var xDt={hooks:{async fetchHostedRepository(t,e,r){if(t!==null)return t;let s=new OS;if(!s.supports(e,r))return null;try{return await s.fetch(e,r)}catch{return null}}}},kDt=xDt;var T9={};Vt(T9,{TarballHttpFetcher:()=>MS,TarballHttpResolver:()=>_S,default:()=>TDt});Ve();function LS(t){let e;try{e=new URL(t)}catch{return!1}return!(e.protocol!=="http:"&&e.protocol!=="https:"||!e.pathname.match(/(\.tar\.gz|\.tgz|\/[^.]+)$/))}var MS=class{supports(e,r){return LS(e.reference)}getLocalPath(e,r){return null}async fetch(e,r){let s=r.checksums.get(e.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(e,s,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${q.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote server`),loader:()=>this.fetchFromNetwork(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:q.getIdentVendorPath(e),checksum:c}}async fetchFromNetwork(e,r){let s=await An.get(e.reference,{configuration:r.project.configuration});return await hs.convertToZip(s,{configuration:r.project.configuration,prefixPath:q.getIdentVendorPath(e),stripComponents:1})}};Ve();Ve();var _S=class{supportsDescriptor(e,r){return LS(e.range)}supportsLocator(e,r){return LS(e.reference)}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,s){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,s){return[q.convertDescriptorToLocator(e)]}async getSatisfying(e,r,s,a){let[n]=await this.getCandidates(e,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let s=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await je.releaseAfterUseAsync(async()=>await Ht.find(s.prefixPath,{baseFs:s.packageFs}),s.releaseFs);return{...e,version:a.version||"0.0.0",languageName:a.languageName||r.project.configuration.get("defaultLanguageName"),linkType:"HARD",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var QDt={fetchers:[MS],resolvers:[_S]},TDt=QDt;var R9={};Vt(R9,{InitCommand:()=>Z0,InitInitializerCommand:()=>sw,default:()=>FDt});Wt();Ve();Ve();bt();Wt();var Z0=class extends ut{constructor(){super(...arguments);this.private=ge.Boolean("-p,--private",!1,{description:"Initialize a private package"});this.workspace=ge.Boolean("-w,--workspace",!1,{description:"Initialize a workspace root with a `packages/` directory"});this.install=ge.String("-i,--install",!1,{tolerateBoolean:!0,description:"Initialize a package with a specific bundle that will be locked in the project"});this.name=ge.String("-n,--name",{description:"Initialize a package with the given name"});this.usev2=ge.Boolean("-2",!1,{hidden:!0});this.yes=ge.Boolean("-y,--yes",{hidden:!0})}static{this.paths=[["init"]]}static{this.usage=ot.Usage({description:"create a new package",details:"\n This command will setup a new package in your local directory.\n\n If the `-p,--private` or `-w,--workspace` options are set, the package will be private by default.\n\n If the `-w,--workspace` option is set, the package will be configured to accept a set of workspaces in the `packages/` directory.\n\n If the `-i,--install` option is given a value, Yarn will first download it using `yarn set version` and only then forward the init call to the newly downloaded bundle. Without arguments, the downloaded bundle will be `latest`.\n\n The initial settings of the manifest can be changed by using the `initScope` and `initFields` configuration values. Additionally, Yarn will generate an EditorConfig file whose rules can be altered via `initEditorConfig`, and will initialize a Git repository in the current directory.\n ",examples:[["Create a new package in the local directory","yarn init"],["Create a new private package in the local directory","yarn init -p"],["Create a new package and store the Yarn release inside","yarn init -i=latest"],["Create a new private package and defines it as a workspace root","yarn init -w"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s=typeof this.install=="string"?this.install:this.usev2||this.install===!0?"latest":null;return s!==null?await this.executeProxy(r,s):await this.executeRegular(r)}async executeProxy(r,s){if(r.projectCwd!==null&&r.projectCwd!==this.context.cwd)throw new nt("Cannot use the --install flag from within a project subdirectory");le.existsSync(this.context.cwd)||await le.mkdirPromise(this.context.cwd,{recursive:!0});let a=K.join(this.context.cwd,Er.lockfile);le.existsSync(a)||await le.writeFilePromise(a,"");let n=await this.cli.run(["set","version",s],{quiet:!0});if(n!==0)return n;let c=[];return this.private&&c.push("-p"),this.workspace&&c.push("-w"),this.name&&c.push(`-n=${this.name}`),this.yes&&c.push("-y"),await le.mktempPromise(async f=>{let{code:p}=await Gr.pipevp("yarn",["init",...c],{cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,env:await In.makeScriptEnv({binFolder:f})});return p})}async initialize(){}async executeRegular(r){let s=null;try{s=(await Tt.find(r,this.context.cwd)).project}catch{s=null}le.existsSync(this.context.cwd)||await le.mkdirPromise(this.context.cwd,{recursive:!0});let a=await Ht.tryFind(this.context.cwd),n=a??new Ht,c=Object.fromEntries(r.get("initFields").entries());n.load(c),n.name=n.name??q.makeIdent(r.get("initScope"),this.name??K.basename(this.context.cwd)),n.packageManager=un&&je.isTaggedYarnVersion(un)?`yarn@${un}`:null,(!a&&this.workspace||this.private)&&(n.private=!0),this.workspace&&n.workspaceDefinitions.length===0&&(await le.mkdirPromise(K.join(this.context.cwd,"packages"),{recursive:!0}),n.workspaceDefinitions=[{pattern:"packages/*"}]);let f={};n.exportTo(f);let p=K.join(this.context.cwd,Ht.fileName);await le.changeFilePromise(p,`${JSON.stringify(f,null,2)} +`,{automaticNewlines:!0});let h=[p],E=K.join(this.context.cwd,"README.md");if(le.existsSync(E)||(await le.writeFilePromise(E,`# ${q.stringifyIdent(n.name)} +`),h.push(E)),!s||s.cwd===this.context.cwd){let C=K.join(this.context.cwd,Er.lockfile);le.existsSync(C)||(await le.writeFilePromise(C,""),h.push(C));let P=[".yarn/*","!.yarn/patches","!.yarn/plugins","!.yarn/releases","!.yarn/sdks","!.yarn/versions","","# Whether you use PnP or not, the node_modules folder is often used to store","# build artifacts that should be gitignored","node_modules","","# Swap the comments on the following lines if you wish to use zero-installs","# In that case, don't forget to run `yarn config set enableGlobalCache false`!","# Documentation here: https://yarnpkg.com/features/caching#zero-installs","","#!.yarn/cache",".pnp.*"].map(Ae=>`${Ae} +`).join(""),I=K.join(this.context.cwd,".gitignore");le.existsSync(I)||(await le.writeFilePromise(I,P),h.push(I));let N=["/.yarn/** linguist-vendored","/.yarn/releases/* binary","/.yarn/plugins/**/* binary","/.pnp.* binary linguist-generated"].map(Ae=>`${Ae} +`).join(""),U=K.join(this.context.cwd,".gitattributes");le.existsSync(U)||(await le.writeFilePromise(U,N),h.push(U));let W={"*":{charset:"utf-8",endOfLine:"lf",indentSize:2,indentStyle:"space",insertFinalNewline:!0}};je.mergeIntoTarget(W,r.get("initEditorConfig"));let te=`root = true +`;for(let[Ae,ce]of Object.entries(W)){te+=` +[${Ae}] +`;for(let[me,pe]of Object.entries(ce)){let Be=me.replace(/[A-Z]/g,Ce=>`_${Ce.toLowerCase()}`);te+=`${Be} = ${pe} +`}}let ie=K.join(this.context.cwd,".editorconfig");le.existsSync(ie)||(await le.writeFilePromise(ie,te),h.push(ie)),await this.cli.run(["install"],{quiet:!0}),await this.initialize(),le.existsSync(K.join(this.context.cwd,".git"))||(await Gr.execvp("git",["init"],{cwd:this.context.cwd}),await Gr.execvp("git",["add","--",...h],{cwd:this.context.cwd}),await Gr.execvp("git",["commit","--allow-empty","-m","First commit"],{cwd:this.context.cwd}))}}};var sw=class extends Z0{constructor(){super(...arguments);this.initializer=ge.String();this.argv=ge.Proxy()}static{this.paths=[["init"]]}async initialize(){this.context.stdout.write(` +`),await this.cli.run(["dlx",this.initializer,...this.argv],{quiet:!0})}};var RDt={configuration:{initScope:{description:"Scope used when creating packages via the init command",type:"STRING",default:null},initFields:{description:"Additional fields to set when creating packages via the init command",type:"MAP",valueDefinition:{description:"",type:"ANY"}},initEditorConfig:{description:"Extra rules to define in the generator editorconfig",type:"MAP",valueDefinition:{description:"",type:"ANY"}}},commands:[Z0,sw]},FDt=RDt;var TY={};Vt(TY,{SearchCommand:()=>Bw,UpgradeInteractiveCommand:()=>vw,default:()=>cTt});Ve();var xve=et(ye("os"));function ow({stdout:t}){if(xve.default.endianness()==="BE")throw new Error("Interactive commands cannot be used on big-endian systems because ink depends on yoga-layout-prebuilt which only supports little-endian architectures");if(!t.isTTY)throw new Error("Interactive commands can only be used inside a TTY environment")}Wt();var HSe=et(Z9()),X9={appId:"OFCNCOG2CU",apiKey:"6fe4476ee5a1832882e326b506d14126",indexName:"npm-search"},QPt=(0,HSe.default)(X9.appId,X9.apiKey).initIndex(X9.indexName),$9=async(t,e=0)=>await QPt.search(t,{analyticsTags:["yarn-plugin-interactive-tools"],attributesToRetrieve:["name","version","owner","repository","humanDownloadsLast30Days"],page:e,hitsPerPage:10});var LD=["regular","dev","peer"],Bw=class extends ut{static{this.paths=[["search"]]}static{this.usage=ot.Usage({category:"Interactive commands",description:"open the search interface",details:` + This command opens a fullscreen terminal interface where you can search for and install packages from the npm registry. + `,examples:[["Open the search window","yarn search"]]})}async execute(){ow(this.context);let{Gem:e}=await Promise.resolve().then(()=>($F(),CY)),{ScrollableItems:r}=await Promise.resolve().then(()=>(nN(),rN)),{useKeypress:s}=await Promise.resolve().then(()=>(FD(),zPe)),{useMinistore:a}=await Promise.resolve().then(()=>(bY(),DY)),{renderForm:n}=await Promise.resolve().then(()=>(aN(),oN)),{default:c}=await Promise.resolve().then(()=>et(oxe())),{Box:f,Text:p}=await Promise.resolve().then(()=>et(Vc())),{default:h,useEffect:E,useState:C}=await Promise.resolve().then(()=>et(hn())),S=await ze.find(this.context.cwd,this.context.plugins),P=()=>h.createElement(f,{flexDirection:"row"},h.createElement(f,{flexDirection:"column",width:48},h.createElement(f,null,h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},""),"/",h.createElement(p,{bold:!0,color:"cyanBright"},"")," to move between packages.")),h.createElement(f,null,h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},"")," to select a package.")),h.createElement(f,null,h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},"")," again to change the target."))),h.createElement(f,{flexDirection:"column"},h.createElement(f,{marginLeft:1},h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},"")," to install the selected packages.")),h.createElement(f,{marginLeft:1},h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},"")," to abort.")))),I=()=>h.createElement(h.Fragment,null,h.createElement(f,{width:15},h.createElement(p,{bold:!0,underline:!0,color:"gray"},"Owner")),h.createElement(f,{width:11},h.createElement(p,{bold:!0,underline:!0,color:"gray"},"Version")),h.createElement(f,{width:10},h.createElement(p,{bold:!0,underline:!0,color:"gray"},"Downloads"))),R=()=>h.createElement(f,{width:17},h.createElement(p,{bold:!0,underline:!0,color:"gray"},"Target")),N=({hit:pe,active:Be})=>{let[Ce,g]=a(pe.name,null);s({active:Be},(fe,se)=>{if(se.name!=="space")return;if(!Ce){g(LD[0]);return}let X=LD.indexOf(Ce)+1;X===LD.length?g(null):g(LD[X])},[Ce,g]);let we=q.parseIdent(pe.name),Ee=q.prettyIdent(S,we);return h.createElement(f,null,h.createElement(f,{width:45},h.createElement(p,{bold:!0,wrap:"wrap"},Ee)),h.createElement(f,{width:14,marginLeft:1},h.createElement(p,{bold:!0,wrap:"truncate"},pe.owner.name)),h.createElement(f,{width:10,marginLeft:1},h.createElement(p,{italic:!0,wrap:"truncate"},pe.version)),h.createElement(f,{width:16,marginLeft:1},h.createElement(p,null,pe.humanDownloadsLast30Days)))},U=({name:pe,active:Be})=>{let[Ce]=a(pe,null),g=q.parseIdent(pe);return h.createElement(f,null,h.createElement(f,{width:47},h.createElement(p,{bold:!0}," - ",q.prettyIdent(S,g))),LD.map(we=>h.createElement(f,{key:we,width:14,marginLeft:1},h.createElement(p,null," ",h.createElement(e,{active:Ce===we})," ",h.createElement(p,{bold:!0},we)))))},W=()=>h.createElement(f,{marginTop:1},h.createElement(p,null,"Powered by Algolia.")),ie=await n(({useSubmit:pe})=>{let Be=a();pe(Be);let Ce=Array.from(Be.keys()).filter(j=>Be.get(j)!==null),[g,we]=C(""),[Ee,fe]=C(0),[se,X]=C([]),De=j=>{j.match(/\t| /)||we(j)},Re=async()=>{fe(0);let j=await $9(g);j.query===g&&X(j.hits)},gt=async()=>{let j=await $9(g,Ee+1);j.query===g&&j.page-1===Ee&&(fe(j.page),X([...se,...j.hits]))};return E(()=>{g?Re():X([])},[g]),h.createElement(f,{flexDirection:"column"},h.createElement(P,null),h.createElement(f,{flexDirection:"row",marginTop:1},h.createElement(p,{bold:!0},"Search: "),h.createElement(f,{width:41},h.createElement(c,{value:g,onChange:De,placeholder:"i.e. babel, webpack, react...",showCursor:!1})),h.createElement(I,null)),se.length?h.createElement(r,{radius:2,loop:!1,children:se.map(j=>h.createElement(N,{key:j.name,hit:j,active:!1})),willReachEnd:gt}):h.createElement(p,{color:"gray"},"Start typing..."),h.createElement(f,{flexDirection:"row",marginTop:1},h.createElement(f,{width:49},h.createElement(p,{bold:!0},"Selected:")),h.createElement(R,null)),Ce.length?Ce.map(j=>h.createElement(U,{key:j,name:j,active:!1})):h.createElement(p,{color:"gray"},"No selected packages..."),h.createElement(W,null))},{},{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});if(typeof ie>"u")return 1;let Ae=Array.from(ie.keys()).filter(pe=>ie.get(pe)==="regular"),ce=Array.from(ie.keys()).filter(pe=>ie.get(pe)==="dev"),me=Array.from(ie.keys()).filter(pe=>ie.get(pe)==="peer");return Ae.length&&await this.cli.run(["add",...Ae]),ce.length&&await this.cli.run(["add","--dev",...ce]),me&&await this.cli.run(["add","--peer",...me]),0}};Ve();Wt();yG();var pxe=et(fi()),Axe=/^((?:[\^~]|>=?)?)([0-9]+)(\.[0-9]+)(\.[0-9]+)((?:-\S+)?)$/;function hxe(t,e){return t.length>0?[t.slice(0,e)].concat(hxe(t.slice(e),e)):[]}var vw=class extends ut{static{this.paths=[["upgrade-interactive"]]}static{this.usage=ot.Usage({category:"Interactive commands",description:"open the upgrade interface",details:` + This command opens a fullscreen terminal interface where you can see any out of date packages used by your application, their status compared to the latest versions available on the remote registry, and select packages to upgrade. + `,examples:[["Open the upgrade window","yarn upgrade-interactive"]]})}async execute(){ow(this.context);let{ItemOptions:e}=await Promise.resolve().then(()=>(fxe(),uxe)),{Pad:r}=await Promise.resolve().then(()=>(QY(),cxe)),{ScrollableItems:s}=await Promise.resolve().then(()=>(nN(),rN)),{useMinistore:a}=await Promise.resolve().then(()=>(bY(),DY)),{renderForm:n}=await Promise.resolve().then(()=>(aN(),oN)),{Box:c,Text:f}=await Promise.resolve().then(()=>et(Vc())),{default:p,useEffect:h,useRef:E,useState:C}=await Promise.resolve().then(()=>et(hn())),S=await ze.find(this.context.cwd,this.context.plugins),{project:P,workspace:I}=await Tt.find(S,this.context.cwd),R=await Jr.find(S);if(!I)throw new ar(P.cwd,this.context.cwd);await P.restoreInstallState({restoreResolutions:!1});let N=this.context.stdout.rows-7,U=(we,Ee)=>{let fe=ICe(we,Ee),se="";for(let X of fe)X.added?se+=he.pretty(S,X.value,"green"):X.removed||(se+=X.value);return se},W=(we,Ee)=>{if(we===Ee)return Ee;let fe=q.parseRange(we),se=q.parseRange(Ee),X=fe.selector.match(Axe),De=se.selector.match(Axe);if(!X||!De)return U(we,Ee);let Re=["gray","red","yellow","green","magenta"],gt=null,j="";for(let rt=1;rt{let se=await Xu.fetchDescriptorFrom(we,fe,{project:P,cache:R,preserveModifier:Ee,workspace:I});return se!==null?se.range:we.range},ie=async we=>{let Ee=pxe.default.valid(we.range)?`^${we.range}`:we.range,[fe,se]=await Promise.all([te(we,we.range,Ee).catch(()=>null),te(we,we.range,"latest").catch(()=>null)]),X=[{value:null,label:we.range}];return fe&&fe!==we.range?X.push({value:fe,label:W(we.range,fe)}):X.push({value:null,label:""}),se&&se!==fe&&se!==we.range?X.push({value:se,label:W(we.range,se)}):X.push({value:null,label:""}),X},Ae=()=>p.createElement(c,{flexDirection:"row"},p.createElement(c,{flexDirection:"column",width:49},p.createElement(c,{marginLeft:1},p.createElement(f,null,"Press ",p.createElement(f,{bold:!0,color:"cyanBright"},""),"/",p.createElement(f,{bold:!0,color:"cyanBright"},"")," to select packages.")),p.createElement(c,{marginLeft:1},p.createElement(f,null,"Press ",p.createElement(f,{bold:!0,color:"cyanBright"},""),"/",p.createElement(f,{bold:!0,color:"cyanBright"},"")," to select versions."))),p.createElement(c,{flexDirection:"column"},p.createElement(c,{marginLeft:1},p.createElement(f,null,"Press ",p.createElement(f,{bold:!0,color:"cyanBright"},"")," to install.")),p.createElement(c,{marginLeft:1},p.createElement(f,null,"Press ",p.createElement(f,{bold:!0,color:"cyanBright"},"")," to abort.")))),ce=()=>p.createElement(c,{flexDirection:"row",paddingTop:1,paddingBottom:1},p.createElement(c,{width:50},p.createElement(f,{bold:!0},p.createElement(f,{color:"greenBright"},"?")," Pick the packages you want to upgrade.")),p.createElement(c,{width:17},p.createElement(f,{bold:!0,underline:!0,color:"gray"},"Current")),p.createElement(c,{width:17},p.createElement(f,{bold:!0,underline:!0,color:"gray"},"Range")),p.createElement(c,{width:17},p.createElement(f,{bold:!0,underline:!0,color:"gray"},"Latest"))),me=({active:we,descriptor:Ee,suggestions:fe})=>{let[se,X]=a(Ee.descriptorHash,null),De=q.stringifyIdent(Ee),Re=Math.max(0,45-De.length);return p.createElement(p.Fragment,null,p.createElement(c,null,p.createElement(c,{width:45},p.createElement(f,{bold:!0},q.prettyIdent(S,Ee)),p.createElement(r,{active:we,length:Re})),p.createElement(e,{active:we,options:fe,value:se,skewer:!0,onChange:X,sizes:[17,17,17]})))},pe=({dependencies:we})=>{let[Ee,fe]=C(we.map(()=>null)),se=E(!0),X=async De=>{let Re=await ie(De);return Re.filter(gt=>gt.label!=="").length<=1?null:{descriptor:De,suggestions:Re}};return h(()=>()=>{se.current=!1},[]),h(()=>{let De=Math.trunc(N*1.75),Re=we.slice(0,De),gt=we.slice(De),j=hxe(gt,N),rt=Re.map(X).reduce(async(Fe,Ne)=>{await Fe;let Pe=await Ne;Pe!==null&&se.current&&fe(Ye=>{let ke=Ye.findIndex(_e=>_e===null),it=[...Ye];return it[ke]=Pe,it})},Promise.resolve());j.reduce((Fe,Ne)=>Promise.all(Ne.map(Pe=>Promise.resolve().then(()=>X(Pe)))).then(async Pe=>{Pe=Pe.filter(Ye=>Ye!==null),await Fe,se.current&&fe(Ye=>{let ke=Ye.findIndex(it=>it===null);return Ye.slice(0,ke).concat(Pe).concat(Ye.slice(ke+Pe.length))})}),rt).then(()=>{se.current&&fe(Fe=>Fe.filter(Ne=>Ne!==null))})},[]),Ee.length?p.createElement(s,{radius:N>>1,children:Ee.map((De,Re)=>De!==null?p.createElement(me,{key:Re,active:!1,descriptor:De.descriptor,suggestions:De.suggestions}):p.createElement(f,{key:Re},"Loading..."))}):p.createElement(f,null,"No upgrades found")},Ce=await n(({useSubmit:we})=>{we(a());let Ee=new Map;for(let se of P.workspaces)for(let X of["dependencies","devDependencies"])for(let De of se.manifest[X].values())P.tryWorkspaceByDescriptor(De)===null&&(De.range.startsWith("link:")||Ee.set(De.descriptorHash,De));let fe=je.sortMap(Ee.values(),se=>q.stringifyDescriptor(se));return p.createElement(c,{flexDirection:"column"},p.createElement(Ae,null),p.createElement(ce,null),p.createElement(pe,{dependencies:fe}))},{},{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});if(typeof Ce>"u")return 1;let g=!1;for(let we of P.workspaces)for(let Ee of["dependencies","devDependencies"]){let fe=we.manifest[Ee];for(let se of fe.values()){let X=Ce.get(se.descriptorHash);typeof X<"u"&&X!==null&&(fe.set(se.identHash,q.makeDescriptor(se,X)),g=!0)}}return g?await P.installWithNewReport({quiet:this.context.quiet,stdout:this.context.stdout},{cache:R}):0}};var lTt={commands:[Bw,vw]},cTt=lTt;var FY={};Vt(FY,{default:()=>pTt});Ve();var _D="jsr:";Ve();Ve();function Sw(t){let e=t.range.slice(4);if(Or.validRange(e))return q.makeDescriptor(t,`npm:${q.stringifyIdent(q.wrapIdentIntoScope(t,"jsr"))}@${e}`);let r=q.tryParseDescriptor(e,!0);if(r!==null)return q.makeDescriptor(t,`npm:${q.stringifyIdent(q.wrapIdentIntoScope(r,"jsr"))}@${r.range}`);throw new Error(`Invalid range: ${t.range}`)}function Dw(t){return q.makeLocator(q.wrapIdentIntoScope(t,"jsr"),`npm:${t.reference.slice(4)}`)}function RY(t){return q.makeLocator(q.unwrapIdentFromScope(t,"jsr"),`jsr:${t.reference.slice(4)}`)}var lN=class{supports(e,r){return e.reference.startsWith(_D)}getLocalPath(e,r){let s=Dw(e);return r.fetcher.getLocalPath(s,r)}fetch(e,r){let s=Dw(e);return r.fetcher.fetch(s,r)}};var cN=class{supportsDescriptor(e,r){return!!e.range.startsWith(_D)}supportsLocator(e,r){return!!e.reference.startsWith(_D)}shouldPersistResolution(e,r){let s=Dw(e);return r.resolver.shouldPersistResolution(s,r)}bindDescriptor(e,r,s){return e}getResolutionDependencies(e,r){return{inner:Sw(e)}}async getCandidates(e,r,s){let a=s.project.configuration.normalizeDependency(Sw(e));return(await s.resolver.getCandidates(a,r,s)).map(c=>RY(c))}async getSatisfying(e,r,s,a){let n=a.project.configuration.normalizeDependency(Sw(e));return a.resolver.getSatisfying(n,r,s,a)}async resolve(e,r){let s=Dw(e),a=await r.resolver.resolve(s,r);return{...a,...RY(a)}}};var uTt=["dependencies","devDependencies","peerDependencies"];function fTt(t,e){for(let r of uTt)for(let s of t.manifest.getForScope(r).values()){if(!s.range.startsWith("jsr:"))continue;let a=Sw(s),n=r==="dependencies"?q.makeDescriptor(s,"unknown"):null,c=n!==null&&t.manifest.ensureDependencyMeta(n).optional?"optionalDependencies":r;e[c][q.stringifyIdent(s)]=a.range}}var ATt={hooks:{beforeWorkspacePacking:fTt},resolvers:[cN],fetchers:[lN]},pTt=ATt;var NY={};Vt(NY,{LinkFetcher:()=>UD,LinkResolver:()=>HD,PortalFetcher:()=>jD,PortalResolver:()=>qD,default:()=>gTt});Ve();bt();var sh="portal:",oh="link:";var UD=class{supports(e,r){return!!e.reference.startsWith(oh)}getLocalPath(e,r){let{parentLocator:s,path:a}=q.parseFileStyleRange(e.reference,{protocol:oh});if(K.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(s,r);return n===null?null:K.resolve(n,a)}async fetch(e,r){let{parentLocator:s,path:a}=q.parseFileStyleRange(e.reference,{protocol:oh}),n=K.isAbsolute(a)?{packageFs:new Sn(vt.root),prefixPath:vt.dot,localPath:vt.root}:await r.fetcher.fetch(s,r),c=n.localPath?{packageFs:new Sn(vt.root),prefixPath:K.relative(vt.root,n.localPath),localPath:vt.root}:n;n!==c&&n.releaseFs&&n.releaseFs();let f=c.packageFs,p=K.resolve(c.localPath??c.packageFs.getRealPath(),c.prefixPath,a);return n.localPath?{packageFs:new Sn(p,{baseFs:f}),releaseFs:c.releaseFs,prefixPath:vt.dot,discardFromLookup:!0,localPath:p}:{packageFs:new jf(p,{baseFs:f}),releaseFs:c.releaseFs,prefixPath:vt.dot,discardFromLookup:!0}}};Ve();bt();var HD=class{supportsDescriptor(e,r){return!!e.range.startsWith(oh)}supportsLocator(e,r){return!!e.reference.startsWith(oh)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,s){return q.bindDescriptor(e,{locator:q.stringifyLocator(r)})}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,s){let a=e.range.slice(oh.length);return[q.makeLocator(e,`${oh}${ue.toPortablePath(a)}`)]}async getSatisfying(e,r,s,a){let[n]=await this.getCandidates(e,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){return{...e,version:"0.0.0",languageName:r.project.configuration.get("defaultLanguageName"),linkType:"SOFT",conditions:null,dependencies:new Map,peerDependencies:new Map,dependenciesMeta:new Map,peerDependenciesMeta:new Map,bin:new Map}}};Ve();bt();var jD=class{supports(e,r){return!!e.reference.startsWith(sh)}getLocalPath(e,r){let{parentLocator:s,path:a}=q.parseFileStyleRange(e.reference,{protocol:sh});if(K.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(s,r);return n===null?null:K.resolve(n,a)}async fetch(e,r){let{parentLocator:s,path:a}=q.parseFileStyleRange(e.reference,{protocol:sh}),n=K.isAbsolute(a)?{packageFs:new Sn(vt.root),prefixPath:vt.dot,localPath:vt.root}:await r.fetcher.fetch(s,r),c=n.localPath?{packageFs:new Sn(vt.root),prefixPath:K.relative(vt.root,n.localPath),localPath:vt.root}:n;n!==c&&n.releaseFs&&n.releaseFs();let f=c.packageFs,p=K.resolve(c.localPath??c.packageFs.getRealPath(),c.prefixPath,a);return n.localPath?{packageFs:new Sn(p,{baseFs:f}),releaseFs:c.releaseFs,prefixPath:vt.dot,localPath:p}:{packageFs:new jf(p,{baseFs:f}),releaseFs:c.releaseFs,prefixPath:vt.dot}}};Ve();Ve();bt();var qD=class{supportsDescriptor(e,r){return!!e.range.startsWith(sh)}supportsLocator(e,r){return!!e.reference.startsWith(sh)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,s){return q.bindDescriptor(e,{locator:q.stringifyLocator(r)})}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,s){let a=e.range.slice(sh.length);return[q.makeLocator(e,`${sh}${ue.toPortablePath(a)}`)]}async getSatisfying(e,r,s,a){let[n]=await this.getCandidates(e,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let s=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await je.releaseAfterUseAsync(async()=>await Ht.find(s.prefixPath,{baseFs:s.packageFs}),s.releaseFs);return{...e,version:a.version||"0.0.0",languageName:a.languageName||r.project.configuration.get("defaultLanguageName"),linkType:"SOFT",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var hTt={fetchers:[UD,jD],resolvers:[HD,qD]},gTt=hTt;var yV={};Vt(yV,{NodeModulesLinker:()=>ib,NodeModulesMode:()=>hV,PnpLooseLinker:()=>sb,default:()=>QRt});bt();Ve();bt();bt();var LY=(t,e)=>`${t}@${e}`,gxe=(t,e)=>{let r=e.indexOf("#"),s=r>=0?e.substring(r+1):e;return LY(t,s)};var mxe=(t,e={})=>{let r=e.debugLevel||Number(process.env.NM_DEBUG_LEVEL||-1),s=e.check||r>=9,a=e.hoistingLimits||new Map,n={check:s,debugLevel:r,hoistingLimits:a,fastLookupPossible:!0},c;n.debugLevel>=0&&(c=Date.now());let f=wTt(t,n),p=!1,h=0;do{let E=MY(f,[f],new Set([f.locator]),new Map,n);p=E.anotherRoundNeeded||E.isGraphChanged,n.fastLookupPossible=!1,h++}while(p);if(n.debugLevel>=0&&console.log(`hoist time: ${Date.now()-c}ms, rounds: ${h}`),n.debugLevel>=1){let E=GD(f);if(MY(f,[f],new Set([f.locator]),new Map,n).isGraphChanged)throw new Error(`The hoisting result is not terminal, prev tree: +${E}, next tree: +${GD(f)}`);let S=yxe(f);if(S)throw new Error(`${S}, after hoisting finished: +${GD(f)}`)}return n.debugLevel>=2&&console.log(GD(f)),BTt(f)},dTt=t=>{let e=t[t.length-1],r=new Map,s=new Set,a=n=>{if(!s.has(n)){s.add(n);for(let c of n.hoistedDependencies.values())r.set(c.name,c);for(let c of n.dependencies.values())n.peerNames.has(c.name)||a(c)}};return a(e),r},mTt=t=>{let e=t[t.length-1],r=new Map,s=new Set,a=new Set,n=(c,f)=>{if(s.has(c))return;s.add(c);for(let h of c.hoistedDependencies.values())if(!f.has(h.name)){let E;for(let C of t)E=C.dependencies.get(h.name),E&&r.set(E.name,E)}let p=new Set;for(let h of c.dependencies.values())p.add(h.name);for(let h of c.dependencies.values())c.peerNames.has(h.name)||n(h,p)};return n(e,a),r},dxe=(t,e)=>{if(e.decoupled)return e;let{name:r,references:s,ident:a,locator:n,dependencies:c,originalDependencies:f,hoistedDependencies:p,peerNames:h,reasons:E,isHoistBorder:C,hoistPriority:S,dependencyKind:P,hoistedFrom:I,hoistedTo:R}=e,N={name:r,references:new Set(s),ident:a,locator:n,dependencies:new Map(c),originalDependencies:new Map(f),hoistedDependencies:new Map(p),peerNames:new Set(h),reasons:new Map(E),decoupled:!0,isHoistBorder:C,hoistPriority:S,dependencyKind:P,hoistedFrom:new Map(I),hoistedTo:new Map(R)},U=N.dependencies.get(r);return U&&U.ident==N.ident&&N.dependencies.set(r,N),t.dependencies.set(N.name,N),N},yTt=(t,e)=>{let r=new Map([[t.name,[t.ident]]]);for(let a of t.dependencies.values())t.peerNames.has(a.name)||r.set(a.name,[a.ident]);let s=Array.from(e.keys());s.sort((a,n)=>{let c=e.get(a),f=e.get(n);if(f.hoistPriority!==c.hoistPriority)return f.hoistPriority-c.hoistPriority;{let p=c.dependents.size+c.peerDependents.size;return f.dependents.size+f.peerDependents.size-p}});for(let a of s){let n=a.substring(0,a.indexOf("@",1)),c=a.substring(n.length+1);if(!t.peerNames.has(n)){let f=r.get(n);f||(f=[],r.set(n,f)),f.indexOf(c)<0&&f.push(c)}}return r},OY=t=>{let e=new Set,r=(s,a=new Set)=>{if(!a.has(s)){a.add(s);for(let n of s.peerNames)if(!t.peerNames.has(n)){let c=t.dependencies.get(n);c&&!e.has(c)&&r(c,a)}e.add(s)}};for(let s of t.dependencies.values())t.peerNames.has(s.name)||r(s);return e},MY=(t,e,r,s,a,n=new Set)=>{let c=e[e.length-1];if(n.has(c))return{anotherRoundNeeded:!1,isGraphChanged:!1};n.add(c);let f=vTt(c),p=yTt(c,f),h=t==c?new Map:a.fastLookupPossible?dTt(e):mTt(e),E,C=!1,S=!1,P=new Map(Array.from(p.entries()).map(([R,N])=>[R,N[0]])),I=new Map;do{let R=CTt(t,e,r,h,P,p,s,I,a);R.isGraphChanged&&(S=!0),R.anotherRoundNeeded&&(C=!0),E=!1;for(let[N,U]of p)U.length>1&&!c.dependencies.has(N)&&(P.delete(N),U.shift(),P.set(N,U[0]),E=!0)}while(E);for(let R of c.dependencies.values())if(!c.peerNames.has(R.name)&&!r.has(R.locator)){r.add(R.locator);let N=MY(t,[...e,R],r,I,a);N.isGraphChanged&&(S=!0),N.anotherRoundNeeded&&(C=!0),r.delete(R.locator)}return{anotherRoundNeeded:C,isGraphChanged:S}},ETt=t=>{for(let[e,r]of t.dependencies)if(!t.peerNames.has(e)&&r.ident!==t.ident)return!0;return!1},ITt=(t,e,r,s,a,n,c,f,{outputReason:p,fastLookupPossible:h})=>{let E,C=null,S=new Set;p&&(E=`${Array.from(e).map(N=>Io(N)).join("\u2192")}`);let P=r[r.length-1],R=!(s.ident===P.ident);if(p&&!R&&(C="- self-reference"),R&&(R=s.dependencyKind!==1,p&&!R&&(C="- workspace")),R&&s.dependencyKind===2&&(R=!ETt(s),p&&!R&&(C="- external soft link with unhoisted dependencies")),R&&(R=!t.peerNames.has(s.name),p&&!R&&(C=`- cannot shadow peer: ${Io(t.originalDependencies.get(s.name).locator)} at ${E}`)),R){let N=!1,U=a.get(s.name);if(N=!U||U.ident===s.ident,p&&!N&&(C=`- filled by: ${Io(U.locator)} at ${E}`),N)for(let W=r.length-1;W>=1;W--){let ie=r[W].dependencies.get(s.name);if(ie&&ie.ident!==s.ident){N=!1;let Ae=f.get(P);Ae||(Ae=new Set,f.set(P,Ae)),Ae.add(s.name),p&&(C=`- filled by ${Io(ie.locator)} at ${r.slice(0,W).map(ce=>Io(ce.locator)).join("\u2192")}`);break}}R=N}if(R&&(R=n.get(s.name)===s.ident,p&&!R&&(C=`- filled by: ${Io(c.get(s.name)[0])} at ${E}`)),R){let N=!0,U=new Set(s.peerNames);for(let W=r.length-1;W>=1;W--){let te=r[W];for(let ie of U){if(te.peerNames.has(ie)&&te.originalDependencies.has(ie))continue;let Ae=te.dependencies.get(ie);Ae&&t.dependencies.get(ie)!==Ae&&(W===r.length-1?S.add(Ae):(S=null,N=!1,p&&(C=`- peer dependency ${Io(Ae.locator)} from parent ${Io(te.locator)} was not hoisted to ${E}`))),U.delete(ie)}if(!N)break}R=N}if(R&&!h)for(let N of s.hoistedDependencies.values()){let U=a.get(N.name)||t.dependencies.get(N.name);if(!U||N.ident!==U.ident){R=!1,p&&(C=`- previously hoisted dependency mismatch, needed: ${Io(N.locator)}, available: ${Io(U?.locator)}`);break}}return S!==null&&S.size>0?{isHoistable:2,dependsOn:S,reason:C}:{isHoistable:R?0:1,reason:C}},uN=t=>`${t.name}@${t.locator}`,CTt=(t,e,r,s,a,n,c,f,p)=>{let h=e[e.length-1],E=new Set,C=!1,S=!1,P=(U,W,te,ie,Ae)=>{if(E.has(ie))return;let ce=[...W,uN(ie)],me=[...te,uN(ie)],pe=new Map,Be=new Map;for(let fe of OY(ie)){let se=ITt(h,r,[h,...U,ie],fe,s,a,n,f,{outputReason:p.debugLevel>=2,fastLookupPossible:p.fastLookupPossible});if(Be.set(fe,se),se.isHoistable===2)for(let X of se.dependsOn){let De=pe.get(X.name)||new Set;De.add(fe.name),pe.set(X.name,De)}}let Ce=new Set,g=(fe,se,X)=>{if(!Ce.has(fe)){Ce.add(fe),Be.set(fe,{isHoistable:1,reason:X});for(let De of pe.get(fe.name)||[])g(ie.dependencies.get(De),se,p.debugLevel>=2?`- peer dependency ${Io(fe.locator)} from parent ${Io(ie.locator)} was not hoisted`:"")}};for(let[fe,se]of Be)se.isHoistable===1&&g(fe,se,se.reason);let we=!1;for(let fe of Be.keys())if(!Ce.has(fe)){S=!0;let se=c.get(ie);se&&se.has(fe.name)&&(C=!0),we=!0,ie.dependencies.delete(fe.name),ie.hoistedDependencies.set(fe.name,fe),ie.reasons.delete(fe.name);let X=h.dependencies.get(fe.name);if(p.debugLevel>=2){let De=Array.from(W).concat([ie.locator]).map(gt=>Io(gt)).join("\u2192"),Re=h.hoistedFrom.get(fe.name);Re||(Re=[],h.hoistedFrom.set(fe.name,Re)),Re.push(De),ie.hoistedTo.set(fe.name,Array.from(e).map(gt=>Io(gt.locator)).join("\u2192"))}if(!X)h.ident!==fe.ident&&(h.dependencies.set(fe.name,fe),Ae.add(fe));else for(let De of fe.references)X.references.add(De)}if(ie.dependencyKind===2&&we&&(C=!0),p.check){let fe=yxe(t);if(fe)throw new Error(`${fe}, after hoisting dependencies of ${[h,...U,ie].map(se=>Io(se.locator)).join("\u2192")}: +${GD(t)}`)}let Ee=OY(ie);for(let fe of Ee)if(Ce.has(fe)){let se=Be.get(fe);if((a.get(fe.name)===fe.ident||!ie.reasons.has(fe.name))&&se.isHoistable!==0&&ie.reasons.set(fe.name,se.reason),!fe.isHoistBorder&&me.indexOf(uN(fe))<0){E.add(ie);let De=dxe(ie,fe);P([...U,ie],ce,me,De,R),E.delete(ie)}}},I,R=new Set(OY(h)),N=Array.from(e).map(U=>uN(U));do{I=R,R=new Set;for(let U of I){if(U.locator===h.locator||U.isHoistBorder)continue;let W=dxe(h,U);P([],Array.from(r),N,W,R)}}while(R.size>0);return{anotherRoundNeeded:C,isGraphChanged:S}},yxe=t=>{let e=[],r=new Set,s=new Set,a=(n,c,f)=>{if(r.has(n)||(r.add(n),s.has(n)))return;let p=new Map(c);for(let h of n.dependencies.values())n.peerNames.has(h.name)||p.set(h.name,h);for(let h of n.originalDependencies.values()){let E=p.get(h.name),C=()=>`${Array.from(s).concat([n]).map(S=>Io(S.locator)).join("\u2192")}`;if(n.peerNames.has(h.name)){let S=c.get(h.name);(S!==E||!S||S.ident!==h.ident)&&e.push(`${C()} - broken peer promise: expected ${h.ident} but found ${S&&S.ident}`)}else{let S=f.hoistedFrom.get(n.name),P=n.hoistedTo.get(h.name),I=`${S?` hoisted from ${S.join(", ")}`:""}`,R=`${P?` hoisted to ${P}`:""}`,N=`${C()}${I}`;E?E.ident!==h.ident&&e.push(`${N} - broken require promise for ${h.name}${R}: expected ${h.ident}, but found: ${E.ident}`):e.push(`${N} - broken require promise: no required dependency ${h.name}${R} found`)}}s.add(n);for(let h of n.dependencies.values())n.peerNames.has(h.name)||a(h,p,n);s.delete(n)};return a(t,t.dependencies,t),e.join(` +`)},wTt=(t,e)=>{let{identName:r,name:s,reference:a,peerNames:n}=t,c={name:s,references:new Set([a]),locator:LY(r,a),ident:gxe(r,a),dependencies:new Map,originalDependencies:new Map,hoistedDependencies:new Map,peerNames:new Set(n),reasons:new Map,decoupled:!0,isHoistBorder:!0,hoistPriority:0,dependencyKind:1,hoistedFrom:new Map,hoistedTo:new Map},f=new Map([[t,c]]),p=(h,E)=>{let C=f.get(h),S=!!C;if(!C){let{name:P,identName:I,reference:R,peerNames:N,hoistPriority:U,dependencyKind:W}=h,te=e.hoistingLimits.get(E.locator);C={name:P,references:new Set([R]),locator:LY(I,R),ident:gxe(I,R),dependencies:new Map,originalDependencies:new Map,hoistedDependencies:new Map,peerNames:new Set(N),reasons:new Map,decoupled:!0,isHoistBorder:te?te.has(P):!1,hoistPriority:U||0,dependencyKind:W||0,hoistedFrom:new Map,hoistedTo:new Map},f.set(h,C)}if(E.dependencies.set(h.name,C),E.originalDependencies.set(h.name,C),S){let P=new Set,I=R=>{if(!P.has(R)){P.add(R),R.decoupled=!1;for(let N of R.dependencies.values())R.peerNames.has(N.name)||I(N)}};I(C)}else for(let P of h.dependencies)p(P,C)};for(let h of t.dependencies)p(h,c);return c},_Y=t=>t.substring(0,t.indexOf("@",1)),BTt=t=>{let e={name:t.name,identName:_Y(t.locator),references:new Set(t.references),dependencies:new Set},r=new Set([t]),s=(a,n,c)=>{let f=r.has(a),p;if(n===a)p=c;else{let{name:h,references:E,locator:C}=a;p={name:h,identName:_Y(C),references:E,dependencies:new Set}}if(c.dependencies.add(p),!f){r.add(a);for(let h of a.dependencies.values())a.peerNames.has(h.name)||s(h,a,p);r.delete(a)}};for(let a of t.dependencies.values())s(a,t,e);return e},vTt=t=>{let e=new Map,r=new Set([t]),s=c=>`${c.name}@${c.ident}`,a=c=>{let f=s(c),p=e.get(f);return p||(p={dependents:new Set,peerDependents:new Set,hoistPriority:0},e.set(f,p)),p},n=(c,f)=>{let p=!!r.has(f);if(a(f).dependents.add(c.ident),!p){r.add(f);for(let E of f.dependencies.values()){let C=a(E);C.hoistPriority=Math.max(C.hoistPriority,E.hoistPriority),f.peerNames.has(E.name)?C.peerDependents.add(f.ident):n(f,E)}}};for(let c of t.dependencies.values())t.peerNames.has(c.name)||n(t,c);return e},Io=t=>{if(!t)return"none";let e=t.indexOf("@",1),r=t.substring(0,e);r.endsWith("$wsroot$")&&(r=`wh:${r.replace("$wsroot$","")}`);let s=t.substring(e+1);if(s==="workspace:.")return".";if(s){let a=(s.indexOf("#")>0?s.split("#")[1]:s).replace("npm:","");return s.startsWith("virtual")&&(r=`v:${r}`),a.startsWith("workspace")&&(r=`w:${r}`,a=""),`${r}${a?`@${a}`:""}`}else return`${r}`};var GD=t=>{let e=0,r=(a,n,c="")=>{if(e>5e4||n.has(a))return"";e++;let f=Array.from(a.dependencies.values()).sort((h,E)=>h.name===E.name?0:h.name>E.name?1:-1),p="";n.add(a);for(let h=0;h":"")+(S!==E.name?`a:${E.name}:`:"")+Io(E.locator)+(C?` ${C}`:"")} +`,p+=r(E,n,`${c}${h5e4?` +Tree is too large, part of the tree has been dunped +`:"")};var WD=(s=>(s.WORKSPACES="workspaces",s.DEPENDENCIES="dependencies",s.NONE="none",s))(WD||{}),Exe="node_modules",ng="$wsroot$";var YD=(t,e)=>{let{packageTree:r,hoistingLimits:s,errors:a,preserveSymlinksRequired:n}=DTt(t,e),c=null;if(a.length===0){let f=mxe(r,{hoistingLimits:s});c=PTt(t,f,e)}return{tree:c,errors:a,preserveSymlinksRequired:n}},gA=t=>`${t.name}@${t.reference}`,HY=t=>{let e=new Map;for(let[r,s]of t.entries())if(!s.dirList){let a=e.get(s.locator);a||(a={target:s.target,linkType:s.linkType,locations:[],aliases:s.aliases},e.set(s.locator,a)),a.locations.push(r)}for(let r of e.values())r.locations=r.locations.sort((s,a)=>{let n=s.split(K.delimiter).length,c=a.split(K.delimiter).length;return a===s?0:n!==c?c-n:a>s?1:-1});return e},Ixe=(t,e)=>{let r=q.isVirtualLocator(t)?q.devirtualizeLocator(t):t,s=q.isVirtualLocator(e)?q.devirtualizeLocator(e):e;return q.areLocatorsEqual(r,s)},UY=(t,e,r,s)=>{if(t.linkType!=="SOFT")return!1;let a=ue.toPortablePath(r.resolveVirtual&&e.reference&&e.reference.startsWith("virtual:")?r.resolveVirtual(t.packageLocation):t.packageLocation);return K.contains(s,a)===null},STt=t=>{let e=t.getPackageInformation(t.topLevel);if(e===null)throw new Error("Assertion failed: Expected the top-level package to have been registered");if(t.findPackageLocator(e.packageLocation)===null)throw new Error("Assertion failed: Expected the top-level package to have a physical locator");let s=ue.toPortablePath(e.packageLocation.slice(0,-1)),a=new Map,n={children:new Map},c=t.getDependencyTreeRoots(),f=new Map,p=new Set,h=(S,P)=>{let I=gA(S);if(p.has(I))return;p.add(I);let R=t.getPackageInformation(S);if(R){let N=P?gA(P):"";if(gA(S)!==N&&R.linkType==="SOFT"&&!S.reference.startsWith("link:")&&!UY(R,S,t,s)){let U=Cxe(R,S,t);(!f.get(U)||S.reference.startsWith("workspace:"))&&f.set(U,S)}for(let[U,W]of R.packageDependencies)W!==null&&(R.packagePeers.has(U)||h(t.getLocator(U,W),S))}};for(let S of c)h(S,null);let E=s.split(K.sep);for(let S of f.values()){let P=t.getPackageInformation(S),R=ue.toPortablePath(P.packageLocation.slice(0,-1)).split(K.sep).slice(E.length),N=n;for(let U of R){let W=N.children.get(U);W||(W={children:new Map},N.children.set(U,W)),N=W}N.workspaceLocator=S}let C=(S,P)=>{if(S.workspaceLocator){let I=gA(P),R=a.get(I);R||(R=new Set,a.set(I,R)),R.add(S.workspaceLocator)}for(let I of S.children.values())C(I,S.workspaceLocator||P)};for(let S of n.children.values())C(S,n.workspaceLocator);return a},DTt=(t,e)=>{let r=[],s=!1,a=new Map,n=STt(t),c=t.getPackageInformation(t.topLevel);if(c===null)throw new Error("Assertion failed: Expected the top-level package to have been registered");let f=t.findPackageLocator(c.packageLocation);if(f===null)throw new Error("Assertion failed: Expected the top-level package to have a physical locator");let p=ue.toPortablePath(c.packageLocation.slice(0,-1)),h={name:f.name,identName:f.name,reference:f.reference,peerNames:c.packagePeers,dependencies:new Set,dependencyKind:1},E=new Map,C=(P,I)=>`${gA(I)}:${P}`,S=(P,I,R,N,U,W,te,ie)=>{let Ae=C(P,R),ce=E.get(Ae),me=!!ce;!me&&R.name===f.name&&R.reference===f.reference&&(ce=h,E.set(Ae,h));let pe=UY(I,R,t,p);if(!ce){let fe=0;pe?fe=2:I.linkType==="SOFT"&&R.name.endsWith(ng)&&(fe=1),ce={name:P,identName:R.name,reference:R.reference,dependencies:new Set,peerNames:fe===1?new Set:I.packagePeers,dependencyKind:fe},E.set(Ae,ce)}let Be;if(pe?Be=2:U.linkType==="SOFT"?Be=1:Be=0,ce.hoistPriority=Math.max(ce.hoistPriority||0,Be),ie&&!pe){let fe=gA({name:N.identName,reference:N.reference}),se=a.get(fe)||new Set;a.set(fe,se),se.add(ce.name)}let Ce=new Map(I.packageDependencies);if(e.project){let fe=e.project.workspacesByCwd.get(ue.toPortablePath(I.packageLocation.slice(0,-1)));if(fe){let se=new Set([...Array.from(fe.manifest.peerDependencies.values(),X=>q.stringifyIdent(X)),...Array.from(fe.manifest.peerDependenciesMeta.keys())]);for(let X of se)Ce.has(X)||(Ce.set(X,W.get(X)||null),ce.peerNames.add(X))}}let g=gA({name:R.name.replace(ng,""),reference:R.reference}),we=n.get(g);if(we)for(let fe of we)Ce.set(`${fe.name}${ng}`,fe.reference);(I!==U||I.linkType!=="SOFT"||!pe&&(!e.selfReferencesByCwd||e.selfReferencesByCwd.get(te)))&&N.dependencies.add(ce);let Ee=R!==f&&I.linkType==="SOFT"&&!R.name.endsWith(ng)&&!pe;if(!me&&!Ee){let fe=new Map;for(let[se,X]of Ce)if(X!==null){let De=t.getLocator(se,X),Re=t.getLocator(se.replace(ng,""),X),gt=t.getPackageInformation(Re);if(gt===null)throw new Error("Assertion failed: Expected the package to have been registered");let j=UY(gt,De,t,p);if(e.validateExternalSoftLinks&&e.project&&j){gt.packageDependencies.size>0&&(s=!0);for(let[Ye,ke]of gt.packageDependencies)if(ke!==null){let it=q.parseLocator(Array.isArray(ke)?`${ke[0]}@${ke[1]}`:`${Ye}@${ke}`);if(gA(it)!==gA(De)){let _e=Ce.get(Ye);if(_e){let x=q.parseLocator(Array.isArray(_e)?`${_e[0]}@${_e[1]}`:`${Ye}@${_e}`);Ixe(x,it)||r.push({messageName:71,text:`Cannot link ${q.prettyIdent(e.project.configuration,q.parseIdent(De.name))} into ${q.prettyLocator(e.project.configuration,q.parseLocator(`${R.name}@${R.reference}`))} dependency ${q.prettyLocator(e.project.configuration,it)} conflicts with parent dependency ${q.prettyLocator(e.project.configuration,x)}`})}else{let x=fe.get(Ye);if(x){let w=x.target,b=q.parseLocator(Array.isArray(w)?`${w[0]}@${w[1]}`:`${Ye}@${w}`);Ixe(b,it)||r.push({messageName:71,text:`Cannot link ${q.prettyIdent(e.project.configuration,q.parseIdent(De.name))} into ${q.prettyLocator(e.project.configuration,q.parseLocator(`${R.name}@${R.reference}`))} dependency ${q.prettyLocator(e.project.configuration,it)} conflicts with dependency ${q.prettyLocator(e.project.configuration,b)} from sibling portal ${q.prettyIdent(e.project.configuration,q.parseIdent(x.portal.name))}`})}else fe.set(Ye,{target:it.reference,portal:De})}}}}let rt=e.hoistingLimitsByCwd?.get(te),Fe=j?te:K.relative(p,ue.toPortablePath(gt.packageLocation))||vt.dot,Ne=e.hoistingLimitsByCwd?.get(Fe);S(se,gt,De,ce,I,Ce,Fe,rt==="dependencies"||Ne==="dependencies"||Ne==="workspaces")}}};return S(f.name,c,f,h,c,c.packageDependencies,vt.dot,!1),{packageTree:h,hoistingLimits:a,errors:r,preserveSymlinksRequired:s}};function Cxe(t,e,r){let s=r.resolveVirtual&&e.reference&&e.reference.startsWith("virtual:")?r.resolveVirtual(t.packageLocation):t.packageLocation;return ue.toPortablePath(s||t.packageLocation)}function bTt(t,e,r){let s=e.getLocator(t.name.replace(ng,""),t.reference),a=e.getPackageInformation(s);if(a===null)throw new Error("Assertion failed: Expected the package to be registered");return r.pnpifyFs?{linkType:"SOFT",target:ue.toPortablePath(a.packageLocation)}:{linkType:a.linkType,target:Cxe(a,t,e)}}var PTt=(t,e,r)=>{let s=new Map,a=(E,C,S)=>{let{linkType:P,target:I}=bTt(E,t,r);return{locator:gA(E),nodePath:C,target:I,linkType:P,aliases:S}},n=E=>{let[C,S]=E.split("/");return S?{scope:C,name:S}:{scope:null,name:C}},c=new Set,f=(E,C,S)=>{if(c.has(E))return;c.add(E);let P=Array.from(E.references).sort().join("#");for(let I of E.dependencies){let R=Array.from(I.references).sort().join("#");if(I.identName===E.identName.replace(ng,"")&&R===P)continue;let N=Array.from(I.references).sort(),U={name:I.identName,reference:N[0]},{name:W,scope:te}=n(I.name),ie=te?[te,W]:[W],Ae=K.join(C,Exe),ce=K.join(Ae,...ie),me=`${S}/${U.name}`,pe=a(U,S,N.slice(1)),Be=!1;if(pe.linkType==="SOFT"&&r.project){let Ce=r.project.workspacesByCwd.get(pe.target.slice(0,-1));Be=!!(Ce&&!Ce.manifest.name)}if(!I.name.endsWith(ng)&&!Be){let Ce=s.get(ce);if(Ce){if(Ce.dirList)throw new Error(`Assertion failed: ${ce} cannot merge dir node with leaf node`);{let Ee=q.parseLocator(Ce.locator),fe=q.parseLocator(pe.locator);if(Ce.linkType!==pe.linkType)throw new Error(`Assertion failed: ${ce} cannot merge nodes with different link types ${Ce.nodePath}/${q.stringifyLocator(Ee)} and ${S}/${q.stringifyLocator(fe)}`);if(Ee.identHash!==fe.identHash)throw new Error(`Assertion failed: ${ce} cannot merge nodes with different idents ${Ce.nodePath}/${q.stringifyLocator(Ee)} and ${S}/s${q.stringifyLocator(fe)}`);pe.aliases=[...pe.aliases,...Ce.aliases,q.parseLocator(Ce.locator).reference]}}s.set(ce,pe);let g=ce.split("/"),we=g.indexOf(Exe);for(let Ee=g.length-1;we>=0&&Ee>we;Ee--){let fe=ue.toPortablePath(g.slice(0,Ee).join(K.sep)),se=g[Ee],X=s.get(fe);if(!X)s.set(fe,{dirList:new Set([se])});else if(X.dirList){if(X.dirList.has(se))break;X.dirList.add(se)}}}f(I,pe.linkType==="SOFT"?pe.target:ce,me)}},p=a({name:e.name,reference:Array.from(e.references)[0]},"",[]),h=p.target;return s.set(h,p),f(e,h,""),s};Ve();Ve();bt();bt();rA();Bc();var oV={};Vt(oV,{PnpInstaller:()=>Gm,PnpLinker:()=>og,UnplugCommand:()=>Pw,default:()=>iRt,getPnpPath:()=>ag,jsInstallUtils:()=>mA,pnpUtils:()=>nb,quotePathIfNeeded:()=>ske});bt();var ike=ye("url");Ve();Ve();bt();bt();var wxe={DEFAULT:{collapsed:!1,next:{"*":"DEFAULT"}},TOP_LEVEL:{collapsed:!1,next:{fallbackExclusionList:"FALLBACK_EXCLUSION_LIST",packageRegistryData:"PACKAGE_REGISTRY_DATA","*":"DEFAULT"}},FALLBACK_EXCLUSION_LIST:{collapsed:!1,next:{"*":"FALLBACK_EXCLUSION_ENTRIES"}},FALLBACK_EXCLUSION_ENTRIES:{collapsed:!0,next:{"*":"FALLBACK_EXCLUSION_DATA"}},FALLBACK_EXCLUSION_DATA:{collapsed:!0,next:{"*":"DEFAULT"}},PACKAGE_REGISTRY_DATA:{collapsed:!1,next:{"*":"PACKAGE_REGISTRY_ENTRIES"}},PACKAGE_REGISTRY_ENTRIES:{collapsed:!0,next:{"*":"PACKAGE_STORE_DATA"}},PACKAGE_STORE_DATA:{collapsed:!1,next:{"*":"PACKAGE_STORE_ENTRIES"}},PACKAGE_STORE_ENTRIES:{collapsed:!0,next:{"*":"PACKAGE_INFORMATION_DATA"}},PACKAGE_INFORMATION_DATA:{collapsed:!1,next:{packageDependencies:"PACKAGE_DEPENDENCIES","*":"DEFAULT"}},PACKAGE_DEPENDENCIES:{collapsed:!1,next:{"*":"PACKAGE_DEPENDENCY"}},PACKAGE_DEPENDENCY:{collapsed:!0,next:{"*":"DEFAULT"}}};function xTt(t,e,r){let s="";s+="[";for(let a=0,n=t.length;a"u"||(f!==0&&(a+=", "),a+=JSON.stringify(p),a+=": ",a+=fN(p,h,e,r).replace(/^ +/g,""),f+=1)}return a+="}",a}function TTt(t,e,r){let s=Object.keys(t),a=`${r} `,n="";n+=r,n+=`{ +`;let c=0;for(let f=0,p=s.length;f"u"||(c!==0&&(n+=",",n+=` +`),n+=a,n+=JSON.stringify(h),n+=": ",n+=fN(h,E,e,a).replace(/^ +/g,""),c+=1)}return c!==0&&(n+=` +`),n+=r,n+="}",n}function fN(t,e,r,s){let{next:a}=wxe[r],n=a[t]||a["*"];return Bxe(e,n,s)}function Bxe(t,e,r){let{collapsed:s}=wxe[e];return Array.isArray(t)?s?xTt(t,e,r):kTt(t,e,r):typeof t=="object"&&t!==null?s?QTt(t,e,r):TTt(t,e,r):JSON.stringify(t)}function vxe(t){return Bxe(t,"TOP_LEVEL","")}function VD(t,e){let r=Array.from(t);Array.isArray(e)||(e=[e]);let s=[];for(let n of e)s.push(r.map(c=>n(c)));let a=r.map((n,c)=>c);return a.sort((n,c)=>{for(let f of s){let p=f[n]f[c]?1:0;if(p!==0)return p}return 0}),a.map(n=>r[n])}function RTt(t){let e=new Map,r=VD(t.fallbackExclusionList||[],[({name:s,reference:a})=>s,({name:s,reference:a})=>a]);for(let{name:s,reference:a}of r){let n=e.get(s);typeof n>"u"&&e.set(s,n=new Set),n.add(a)}return Array.from(e).map(([s,a])=>[s,Array.from(a)])}function FTt(t){return VD(t.fallbackPool||[],([e])=>e)}function NTt(t){let e=[],r=t.dependencyTreeRoots.find(s=>t.packageRegistry.get(s.name)?.get(s.reference)?.packageLocation==="./");for(let[s,a]of VD(t.packageRegistry,([n])=>n===null?"0":`1${n}`)){if(s===null)continue;let n=[];e.push([s,n]);for(let[c,{packageLocation:f,packageDependencies:p,packagePeers:h,linkType:E,discardFromLookup:C}]of VD(a,([S])=>S===null?"0":`1${S}`)){if(c===null)continue;let S=[];s!==null&&c!==null&&!p.has(s)&&S.push([s,c]);for(let[U,W]of p)S.push([U,W]);let P=VD(S,([U])=>U),I=h&&h.size>0?Array.from(h):void 0,N={packageLocation:f,packageDependencies:P,packagePeers:I,linkType:E,discardFromLookup:C||void 0};n.push([c,N]),r&&s===r.name&&c===r.reference&&e.unshift([null,[[null,N]]])}}return e}function KD(t){return{__info:["This file is automatically generated. Do not touch it, or risk","your modifications being lost."],dependencyTreeRoots:t.dependencyTreeRoots,enableTopLevelFallback:t.enableTopLevelFallback||!1,ignorePatternData:t.ignorePattern||null,pnpZipBackend:t.pnpZipBackend,fallbackExclusionList:RTt(t),fallbackPool:FTt(t),packageRegistryData:NTt(t)}}var bxe=et(Dxe());function Pxe(t,e){return[t?`${t} +`:"",`/* eslint-disable */ +`,`// @ts-nocheck +`,`"use strict"; +`,` +`,e,` +`,(0,bxe.default)()].join("")}function OTt(t){return JSON.stringify(t,null,2)}function LTt(t){return`'${t.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(/\n/g,`\\ +`)}'`}function MTt(t){return[`const RAW_RUNTIME_STATE = +`,`${LTt(vxe(t))}; + +`,`function $$SETUP_STATE(hydrateRuntimeState, basePath) { +`,` return hydrateRuntimeState(JSON.parse(RAW_RUNTIME_STATE), {basePath: basePath || __dirname}); +`,`} +`].join("")}function _Tt(){return[`function $$SETUP_STATE(hydrateRuntimeState, basePath) { +`,` const fs = require('fs'); +`,` const path = require('path'); +`,` const pnpDataFilepath = path.resolve(__dirname, ${JSON.stringify(Er.pnpData)}); +`,` return hydrateRuntimeState(JSON.parse(fs.readFileSync(pnpDataFilepath, 'utf8')), {basePath: basePath || __dirname}); +`,`} +`].join("")}function xxe(t){let e=KD(t),r=MTt(e);return Pxe(t.shebang,r)}function kxe(t){let e=KD(t),r=_Tt(),s=Pxe(t.shebang,r);return{dataFile:OTt(e),loaderFile:s}}bt();function qY(t,{basePath:e}){let r=ue.toPortablePath(e),s=K.resolve(r),a=t.ignorePatternData!==null?new RegExp(t.ignorePatternData):null,n=new Map,c=new Map(t.packageRegistryData.map(([C,S])=>[C,new Map(S.map(([P,I])=>{if(C===null!=(P===null))throw new Error("Assertion failed: The name and reference should be null, or neither should");let R=I.discardFromLookup??!1,N={name:C,reference:P},U=n.get(I.packageLocation);U?(U.discardFromLookup=U.discardFromLookup&&R,R||(U.locator=N)):n.set(I.packageLocation,{locator:N,discardFromLookup:R});let W=null;return[P,{packageDependencies:new Map(I.packageDependencies),packagePeers:new Set(I.packagePeers),linkType:I.linkType,discardFromLookup:R,get packageLocation(){return W||(W=K.join(s,I.packageLocation))}}]}))])),f=new Map(t.fallbackExclusionList.map(([C,S])=>[C,new Set(S)])),p=new Map(t.fallbackPool),h=t.dependencyTreeRoots,E=t.enableTopLevelFallback;return{basePath:r,dependencyTreeRoots:h,enableTopLevelFallback:E,fallbackExclusionList:f,pnpZipBackend:t.pnpZipBackend,fallbackPool:p,ignorePattern:a,packageLocatorsByLocations:n,packageRegistry:c}}bt();bt();var lh=ye("module"),qm=ye("url"),$Y=ye("util");var ra=ye("url");var Fxe=et(ye("assert"));var GY=Array.isArray,JD=JSON.stringify,zD=Object.getOwnPropertyNames,jm=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),WY=(t,e)=>RegExp.prototype.exec.call(t,e),YY=(t,...e)=>RegExp.prototype[Symbol.replace].apply(t,e),ig=(t,...e)=>String.prototype.endsWith.apply(t,e),VY=(t,...e)=>String.prototype.includes.apply(t,e),KY=(t,...e)=>String.prototype.lastIndexOf.apply(t,e),ZD=(t,...e)=>String.prototype.indexOf.apply(t,e),Qxe=(t,...e)=>String.prototype.replace.apply(t,e),sg=(t,...e)=>String.prototype.slice.apply(t,e),dA=(t,...e)=>String.prototype.startsWith.apply(t,e),Txe=Map,Rxe=JSON.parse;function XD(t,e,r){return class extends r{constructor(...s){super(e(...s)),this.code=t,this.name=`${r.name} [${t}]`}}}var Nxe=XD("ERR_PACKAGE_IMPORT_NOT_DEFINED",(t,e,r)=>`Package import specifier "${t}" is not defined${e?` in package ${e}package.json`:""} imported from ${r}`,TypeError),JY=XD("ERR_INVALID_MODULE_SPECIFIER",(t,e,r=void 0)=>`Invalid module "${t}" ${e}${r?` imported from ${r}`:""}`,TypeError),Oxe=XD("ERR_INVALID_PACKAGE_TARGET",(t,e,r,s=!1,a=void 0)=>{let n=typeof r=="string"&&!s&&r.length&&!dA(r,"./");return e==="."?((0,Fxe.default)(s===!1),`Invalid "exports" main target ${JD(r)} defined in the package config ${t}package.json${a?` imported from ${a}`:""}${n?'; targets must start with "./"':""}`):`Invalid "${s?"imports":"exports"}" target ${JD(r)} defined for '${e}' in the package config ${t}package.json${a?` imported from ${a}`:""}${n?'; targets must start with "./"':""}`},Error),$D=XD("ERR_INVALID_PACKAGE_CONFIG",(t,e,r)=>`Invalid package config ${t}${e?` while importing ${e}`:""}${r?`. ${r}`:""}`,Error),Lxe=XD("ERR_PACKAGE_PATH_NOT_EXPORTED",(t,e,r=void 0)=>e==="."?`No "exports" main defined in ${t}package.json${r?` imported from ${r}`:""}`:`Package subpath '${e}' is not defined by "exports" in ${t}package.json${r?` imported from ${r}`:""}`,Error);var pN=ye("url");function Mxe(t,e){let r=Object.create(null);for(let s=0;se):t+e}eb(r,t,s,c,a)}WY(Uxe,sg(t,2))!==null&&eb(r,t,s,c,a);let p=new URL(t,s),h=p.pathname,E=new URL(".",s).pathname;if(dA(h,E)||eb(r,t,s,c,a),e==="")return p;if(WY(Uxe,e)!==null){let C=n?Qxe(r,"*",()=>e):r+e;jTt(C,s,c,a)}return n?new URL(YY(Hxe,p.href,()=>e)):new URL(e,p)}function GTt(t){let e=+t;return`${e}`!==t?!1:e>=0&&e<4294967295}function bw(t,e,r,s,a,n,c,f){if(typeof e=="string")return qTt(e,r,s,t,a,n,c,f);if(GY(e)){if(e.length===0)return null;let p;for(let h=0;hn?-1:n>a||r===-1?1:s===-1||t.length>e.length?-1:e.length>t.length?1:0}function WTt(t,e,r){if(typeof t=="string"||GY(t))return!0;if(typeof t!="object"||t===null)return!1;let s=zD(t),a=!1,n=0;for(let c=0;c=h.length&&ig(e,C)&&qxe(n,h)===1&&KY(h,"*")===E&&(n=h,c=sg(e,E,e.length-C.length))}}if(n){let p=r[n],h=bw(t,p,c,n,s,!0,!1,a);return h==null&&zY(e,t,s),h}zY(e,t,s)}function Wxe({name:t,base:e,conditions:r,readFileSyncFn:s}){if(t==="#"||dA(t,"#/")||ig(t,"/")){let c="is not a valid internal imports specifier name";throw new JY(t,c,(0,ra.fileURLToPath)(e))}let a,n=_xe(e,s);if(n.exists){a=(0,ra.pathToFileURL)(n.pjsonPath);let c=n.imports;if(c)if(jm(c,t)&&!VY(t,"*")){let f=bw(a,c[t],"",t,e,!1,!0,r);if(f!=null)return f}else{let f="",p,h=zD(c);for(let E=0;E=C.length&&ig(t,P)&&qxe(f,C)===1&&KY(C,"*")===S&&(f=C,p=sg(t,S,t.length-P.length))}}if(f){let E=c[f],C=bw(a,E,p,f,e,!0,!0,r);if(C!=null)return C}}}HTt(t,a,e)}bt();var VTt=new Set(["BUILTIN_NODE_RESOLUTION_FAILED","MISSING_DEPENDENCY","MISSING_PEER_DEPENDENCY","QUALIFIED_PATH_RESOLUTION_FAILED","UNDECLARED_DEPENDENCY"]);function ds(t,e,r={},s){s??=VTt.has(t)?"MODULE_NOT_FOUND":t;let a={configurable:!0,writable:!0,enumerable:!1};return Object.defineProperties(new Error(e),{code:{...a,value:s},pnpCode:{...a,value:t},data:{...a,value:r}})}function cf(t){return ue.normalize(ue.fromPortablePath(t))}var Jxe=et(Vxe());function zxe(t){return KTt(),XY[t]}var XY;function KTt(){XY||(XY={"--conditions":[],...Kxe(JTt()),...Kxe(process.execArgv)})}function Kxe(t){return(0,Jxe.default)({"--conditions":[String],"-C":"--conditions"},{argv:t,permissive:!0})}function JTt(){let t=[],e=zTt(process.env.NODE_OPTIONS||"",t);return t.length,e}function zTt(t,e){let r=[],s=!1,a=!0;for(let n=0;nparseInt(t,10)),Zxe=yl>19||yl===19&&ah>=2||yl===18&&ah>=13,lmr=yl===20&&ah<6||yl===19&&ah>=3,cmr=yl>19||yl===19&&ah>=6,umr=yl>=21||yl===20&&ah>=10||yl===18&&ah>=19,fmr=yl>=21||yl===20&&ah>=10||yl===18&&ah>=20,Amr=yl>=22;function Xxe(t){if(process.env.WATCH_REPORT_DEPENDENCIES&&process.send)if(t=t.map(e=>ue.fromPortablePath(fo.resolveVirtual(ue.toPortablePath(e)))),Zxe)process.send({"watch:require":t});else for(let e of t)process.send({"watch:require":e})}function eV(t,e){let r=Number(process.env.PNP_ALWAYS_WARN_ON_FALLBACK)>0,s=Number(process.env.PNP_DEBUG_LEVEL),a=/^(?![a-zA-Z]:[\\/]|\\\\|\.{0,2}(?:\/|$))((?:node:)?(?:@[^/]+\/)?[^/]+)\/*(.*|)$/,n=/^(\/|\.{1,2}(\/|$))/,c=/\/$/,f=/^\.{0,2}\//,p={name:null,reference:null},h=[],E=new Set;if(t.enableTopLevelFallback===!0&&h.push(p),e.compatibilityMode!==!1)for(let Fe of["react-scripts","gatsby"]){let Ne=t.packageRegistry.get(Fe);if(Ne)for(let Pe of Ne.keys()){if(Pe===null)throw new Error("Assertion failed: This reference shouldn't be null");h.push({name:Fe,reference:Pe})}}let{ignorePattern:C,packageRegistry:S,packageLocatorsByLocations:P}=t;function I(Fe,Ne){return{fn:Fe,args:Ne,error:null,result:null}}function R(Fe){let Ne=process.stderr?.hasColors?.()??process.stdout.isTTY,Pe=(it,_e)=>`\x1B[${it}m${_e}\x1B[0m`,Ye=Fe.error;console.error(Ye?Pe("31;1",`\u2716 ${Fe.error?.message.replace(/\n.*/s,"")}`):Pe("33;1","\u203C Resolution")),Fe.args.length>0&&console.error();for(let it of Fe.args)console.error(` ${Pe("37;1","In \u2190")} ${(0,$Y.inspect)(it,{colors:Ne,compact:!0})}`);Fe.result&&(console.error(),console.error(` ${Pe("37;1","Out \u2192")} ${(0,$Y.inspect)(Fe.result,{colors:Ne,compact:!0})}`));let ke=new Error().stack.match(/(?<=^ +)at.*/gm)?.slice(2)??[];if(ke.length>0){console.error();for(let it of ke)console.error(` ${Pe("38;5;244",it)}`)}console.error()}function N(Fe,Ne){if(e.allowDebug===!1)return Ne;if(Number.isFinite(s)){if(s>=2)return(...Pe)=>{let Ye=I(Fe,Pe);try{return Ye.result=Ne(...Pe)}catch(ke){throw Ye.error=ke}finally{R(Ye)}};if(s>=1)return(...Pe)=>{try{return Ne(...Pe)}catch(Ye){let ke=I(Fe,Pe);throw ke.error=Ye,R(ke),Ye}}}return Ne}function U(Fe){let Ne=g(Fe);if(!Ne)throw ds("INTERNAL","Couldn't find a matching entry in the dependency tree for the specified parent (this is probably an internal error)");return Ne}function W(Fe){if(Fe.name===null)return!0;for(let Ne of t.dependencyTreeRoots)if(Ne.name===Fe.name&&Ne.reference===Fe.reference)return!0;return!1}let te=new Set(["node","require",...zxe("--conditions")]);function ie(Fe,Ne=te,Pe){let Ye=fe(K.join(Fe,"internal.js"),{resolveIgnored:!0,includeDiscardFromLookup:!0});if(Ye===null)throw ds("INTERNAL",`The locator that owns the "${Fe}" path can't be found inside the dependency tree (this is probably an internal error)`);let{packageLocation:ke}=U(Ye),it=K.join(ke,Er.manifest);if(!e.fakeFs.existsSync(it))return null;let _e=JSON.parse(e.fakeFs.readFileSync(it,"utf8"));if(_e.exports==null)return null;let x=K.contains(ke,Fe);if(x===null)throw ds("INTERNAL","unqualifiedPath doesn't contain the packageLocation (this is probably an internal error)");x!=="."&&!f.test(x)&&(x=`./${x}`);try{let w=Gxe({packageJSONUrl:(0,qm.pathToFileURL)(ue.fromPortablePath(it)),packageSubpath:x,exports:_e.exports,base:Pe?(0,qm.pathToFileURL)(ue.fromPortablePath(Pe)):null,conditions:Ne});return ue.toPortablePath((0,qm.fileURLToPath)(w))}catch(w){throw ds("EXPORTS_RESOLUTION_FAILED",w.message,{unqualifiedPath:cf(Fe),locator:Ye,pkgJson:_e,subpath:cf(x),conditions:Ne},w.code)}}function Ae(Fe,Ne,{extensions:Pe}){let Ye;try{Ne.push(Fe),Ye=e.fakeFs.statSync(Fe)}catch{}if(Ye&&!Ye.isDirectory())return e.fakeFs.realpathSync(Fe);if(Ye&&Ye.isDirectory()){let ke;try{ke=JSON.parse(e.fakeFs.readFileSync(K.join(Fe,Er.manifest),"utf8"))}catch{}let it;if(ke&&ke.main&&(it=K.resolve(Fe,ke.main)),it&&it!==Fe){let _e=Ae(it,Ne,{extensions:Pe});if(_e!==null)return _e}}for(let ke=0,it=Pe.length;ke{let x=JSON.stringify(_e.name);if(Ye.has(x))return;Ye.add(x);let w=we(_e);for(let b of w)if(U(b).packagePeers.has(Fe))ke(b);else{let F=Pe.get(b.name);typeof F>"u"&&Pe.set(b.name,F=new Set),F.add(b.reference)}};ke(Ne);let it=[];for(let _e of[...Pe.keys()].sort())for(let x of[...Pe.get(_e)].sort())it.push({name:_e,reference:x});return it}function fe(Fe,{resolveIgnored:Ne=!1,includeDiscardFromLookup:Pe=!1}={}){if(pe(Fe)&&!Ne)return null;let Ye=K.relative(t.basePath,Fe);Ye.match(n)||(Ye=`./${Ye}`),Ye.endsWith("/")||(Ye=`${Ye}/`);do{let ke=P.get(Ye);if(typeof ke>"u"||ke.discardFromLookup&&!Pe){Ye=Ye.substring(0,Ye.lastIndexOf("/",Ye.length-2)+1);continue}return ke.locator}while(Ye!=="");return null}function se(Fe){try{return e.fakeFs.readFileSync(ue.toPortablePath(Fe),"utf8")}catch(Ne){if(Ne.code==="ENOENT")return;throw Ne}}function X(Fe,Ne,{considerBuiltins:Pe=!0}={}){if(Fe.startsWith("#"))throw new Error("resolveToUnqualified can not handle private import mappings");if(Fe==="pnpapi")return ue.toPortablePath(e.pnpapiResolution);if(Pe&&(0,lh.isBuiltin)(Fe))return null;let Ye=cf(Fe),ke=Ne&&cf(Ne);if(Ne&&pe(Ne)&&(!K.isAbsolute(Fe)||fe(Fe)===null)){let x=me(Fe,Ne);if(x===!1)throw ds("BUILTIN_NODE_RESOLUTION_FAILED",`The builtin node resolution algorithm was unable to resolve the requested module (it didn't go through the pnp resolver because the issuer was explicitely ignored by the regexp) + +Require request: "${Ye}" +Required by: ${ke} +`,{request:Ye,issuer:ke});return ue.toPortablePath(x)}let it,_e=Fe.match(a);if(_e){if(!Ne)throw ds("API_ERROR","The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute",{request:Ye,issuer:ke});let[,x,w]=_e,b=fe(Ne);if(!b){let Te=me(Fe,Ne);if(Te===!1)throw ds("BUILTIN_NODE_RESOLUTION_FAILED",`The builtin node resolution algorithm was unable to resolve the requested module (it didn't go through the pnp resolver because the issuer doesn't seem to be part of the Yarn-managed dependency tree). + +Require path: "${Ye}" +Required by: ${ke} +`,{request:Ye,issuer:ke});return ue.toPortablePath(Te)}let F=U(b).packageDependencies.get(x),z=null;if(F==null&&b.name!==null){let Te=t.fallbackExclusionList.get(b.name);if(!Te||!Te.has(b.reference)){for(let Et=0,qt=h.length;EtW(lt))?Z=ds("MISSING_PEER_DEPENDENCY",`${b.name} tried to access ${x} (a peer dependency) but it isn't provided by your application; this makes the require call ambiguous and unsound. + +Required package: ${x}${x!==Ye?` (via "${Ye}")`:""} +Required by: ${b.name}@${b.reference} (via ${ke}) +${Te.map(lt=>`Ancestor breaking the chain: ${lt.name}@${lt.reference} +`).join("")} +`,{request:Ye,issuer:ke,issuerLocator:Object.assign({},b),dependencyName:x,brokenAncestors:Te}):Z=ds("MISSING_PEER_DEPENDENCY",`${b.name} tried to access ${x} (a peer dependency) but it isn't provided by its ancestors; this makes the require call ambiguous and unsound. + +Required package: ${x}${x!==Ye?` (via "${Ye}")`:""} +Required by: ${b.name}@${b.reference} (via ${ke}) + +${Te.map(lt=>`Ancestor breaking the chain: ${lt.name}@${lt.reference} +`).join("")} +`,{request:Ye,issuer:ke,issuerLocator:Object.assign({},b),dependencyName:x,brokenAncestors:Te})}else F===void 0&&(!Pe&&(0,lh.isBuiltin)(Fe)?W(b)?Z=ds("UNDECLARED_DEPENDENCY",`Your application tried to access ${x}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${x} isn't otherwise declared in your dependencies, this makes the require call ambiguous and unsound. + +Required package: ${x}${x!==Ye?` (via "${Ye}")`:""} +Required by: ${ke} +`,{request:Ye,issuer:ke,dependencyName:x}):Z=ds("UNDECLARED_DEPENDENCY",`${b.name} tried to access ${x}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${x} isn't otherwise declared in ${b.name}'s dependencies, this makes the require call ambiguous and unsound. + +Required package: ${x}${x!==Ye?` (via "${Ye}")`:""} +Required by: ${ke} +`,{request:Ye,issuer:ke,issuerLocator:Object.assign({},b),dependencyName:x}):W(b)?Z=ds("UNDECLARED_DEPENDENCY",`Your application tried to access ${x}, but it isn't declared in your dependencies; this makes the require call ambiguous and unsound. + +Required package: ${x}${x!==Ye?` (via "${Ye}")`:""} +Required by: ${ke} +`,{request:Ye,issuer:ke,dependencyName:x}):Z=ds("UNDECLARED_DEPENDENCY",`${b.name} tried to access ${x}, but it isn't declared in its dependencies; this makes the require call ambiguous and unsound. + +Required package: ${x}${x!==Ye?` (via "${Ye}")`:""} +Required by: ${b.name}@${b.reference} (via ${ke}) +`,{request:Ye,issuer:ke,issuerLocator:Object.assign({},b),dependencyName:x}));if(F==null){if(z===null||Z===null)throw Z||new Error("Assertion failed: Expected an error to have been set");F=z;let Te=Z.message.replace(/\n.*/g,"");Z.message=Te,!E.has(Te)&&s!==0&&(E.add(Te),process.emitWarning(Z))}let $=Array.isArray(F)?{name:F[0],reference:F[1]}:{name:x,reference:F},oe=U($);if(!oe.packageLocation)throw ds("MISSING_DEPENDENCY",`A dependency seems valid but didn't get installed for some reason. This might be caused by a partial install, such as dev vs prod. + +Required package: ${$.name}@${$.reference}${$.name!==Ye?` (via "${Ye}")`:""} +Required by: ${b.name}@${b.reference} (via ${ke}) +`,{request:Ye,issuer:ke,dependencyLocator:Object.assign({},$)});let xe=oe.packageLocation;w?it=K.join(xe,w):it=xe}else if(K.isAbsolute(Fe))it=K.normalize(Fe);else{if(!Ne)throw ds("API_ERROR","The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute",{request:Ye,issuer:ke});let x=K.resolve(Ne);Ne.match(c)?it=K.normalize(K.join(x,Fe)):it=K.normalize(K.join(K.dirname(x),Fe))}return K.normalize(it)}function De(Fe,Ne,Pe=te,Ye){if(n.test(Fe))return Ne;let ke=ie(Ne,Pe,Ye);return ke?K.normalize(ke):Ne}function Re(Fe,{extensions:Ne=Object.keys(lh.Module._extensions)}={}){let Pe=[],Ye=Ae(Fe,Pe,{extensions:Ne});if(Ye)return K.normalize(Ye);{Xxe(Pe.map(_e=>ue.fromPortablePath(_e)));let ke=cf(Fe),it=fe(Fe);if(it){let{packageLocation:_e}=U(it),x=!0;try{e.fakeFs.accessSync(_e)}catch(w){if(w?.code==="ENOENT")x=!1;else{let b=(w?.message??w??"empty exception thrown").replace(/^[A-Z]/,y=>y.toLowerCase());throw ds("QUALIFIED_PATH_RESOLUTION_FAILED",`Required package exists but could not be accessed (${b}). + +Missing package: ${it.name}@${it.reference} +Expected package location: ${cf(_e)} +`,{unqualifiedPath:ke,extensions:Ne})}}if(!x){let w=_e.includes("/unplugged/")?"Required unplugged package missing from disk. This may happen when switching branches without running installs (unplugged packages must be fully materialized on disk to work).":"Required package missing from disk. If you keep your packages inside your repository then restarting the Node process may be enough. Otherwise, try to run an install first.";throw ds("QUALIFIED_PATH_RESOLUTION_FAILED",`${w} + +Missing package: ${it.name}@${it.reference} +Expected package location: ${cf(_e)} +`,{unqualifiedPath:ke,extensions:Ne})}}throw ds("QUALIFIED_PATH_RESOLUTION_FAILED",`Qualified path resolution failed: we looked for the following paths, but none could be accessed. + +Source path: ${ke} +${Pe.map(_e=>`Not found: ${cf(_e)} +`).join("")}`,{unqualifiedPath:ke,extensions:Ne})}}function gt(Fe,Ne,Pe){if(!Ne)throw new Error("Assertion failed: An issuer is required to resolve private import mappings");let Ye=Wxe({name:Fe,base:(0,qm.pathToFileURL)(ue.fromPortablePath(Ne)),conditions:Pe.conditions??te,readFileSyncFn:se});if(Ye instanceof URL)return Re(ue.toPortablePath((0,qm.fileURLToPath)(Ye)),{extensions:Pe.extensions});if(Ye.startsWith("#"))throw new Error("Mapping from one private import to another isn't allowed");return j(Ye,Ne,Pe)}function j(Fe,Ne,Pe={}){try{if(Fe.startsWith("#"))return gt(Fe,Ne,Pe);let{considerBuiltins:Ye,extensions:ke,conditions:it}=Pe,_e=X(Fe,Ne,{considerBuiltins:Ye});if(Fe==="pnpapi")return _e;if(_e===null)return null;let x=()=>Ne!==null?pe(Ne):!1,w=(!Ye||!(0,lh.isBuiltin)(Fe))&&!x()?De(Fe,_e,it,Ne):_e;return Re(w,{extensions:ke})}catch(Ye){throw Object.hasOwn(Ye,"pnpCode")&&Object.assign(Ye.data,{request:cf(Fe),issuer:Ne&&cf(Ne)}),Ye}}function rt(Fe){let Ne=K.normalize(Fe),Pe=fo.resolveVirtual(Ne);return Pe!==Ne?Pe:null}return{VERSIONS:Be,topLevel:Ce,getLocator:(Fe,Ne)=>Array.isArray(Ne)?{name:Ne[0],reference:Ne[1]}:{name:Fe,reference:Ne},getDependencyTreeRoots:()=>[...t.dependencyTreeRoots],getAllLocators(){let Fe=[];for(let[Ne,Pe]of S)for(let Ye of Pe.keys())Ne!==null&&Ye!==null&&Fe.push({name:Ne,reference:Ye});return Fe},getPackageInformation:Fe=>{let Ne=g(Fe);if(Ne===null)return null;let Pe=ue.fromPortablePath(Ne.packageLocation);return{...Ne,packageLocation:Pe}},findPackageLocator:Fe=>fe(ue.toPortablePath(Fe)),resolveToUnqualified:N("resolveToUnqualified",(Fe,Ne,Pe)=>{let Ye=Ne!==null?ue.toPortablePath(Ne):null,ke=X(ue.toPortablePath(Fe),Ye,Pe);return ke===null?null:ue.fromPortablePath(ke)}),resolveUnqualified:N("resolveUnqualified",(Fe,Ne)=>ue.fromPortablePath(Re(ue.toPortablePath(Fe),Ne))),resolveRequest:N("resolveRequest",(Fe,Ne,Pe)=>{let Ye=Ne!==null?ue.toPortablePath(Ne):null,ke=j(ue.toPortablePath(Fe),Ye,Pe);return ke===null?null:ue.fromPortablePath(ke)}),resolveVirtual:N("resolveVirtual",Fe=>{let Ne=rt(ue.toPortablePath(Fe));return Ne!==null?ue.fromPortablePath(Ne):null})}}bt();var $xe=(t,e,r)=>{let s=KD(t),a=qY(s,{basePath:e}),n=ue.join(e,Er.pnpCjs);return eV(a,{fakeFs:r,pnpapiResolution:n})};var rV=et(tke());Wt();var mA={};Vt(mA,{checkManifestCompatibility:()=>rke,extractBuildRequest:()=>hN,getExtractHint:()=>nV,hasBindingGyp:()=>iV});Ve();bt();function rke(t){return q.isPackageCompatible(t,As.getArchitectureSet())}function hN(t,e,r,{configuration:s}){let a=[];for(let n of["preinstall","install","postinstall"])e.manifest.scripts.has(n)&&a.push({type:0,script:n});return!e.manifest.scripts.has("install")&&e.misc.hasBindingGyp&&a.push({type:1,script:"node-gyp rebuild"}),a.length===0?null:t.linkType!=="HARD"?{skipped:!0,explain:n=>n.reportWarningOnce(6,`${q.prettyLocator(s,t)} lists build scripts, but is referenced through a soft link. Soft links don't support build scripts, so they'll be ignored.`)}:r&&r.built===!1?{skipped:!0,explain:n=>n.reportInfoOnce(5,`${q.prettyLocator(s,t)} lists build scripts, but its build has been explicitly disabled through configuration.`)}:!s.get("enableScripts")&&!r.built?{skipped:!0,explain:n=>n.reportWarningOnce(4,`${q.prettyLocator(s,t)} lists build scripts, but all build scripts have been disabled.`)}:rke(t)?{skipped:!1,directives:a}:{skipped:!0,explain:n=>n.reportWarningOnce(76,`${q.prettyLocator(s,t)} The ${As.getArchitectureName()} architecture is incompatible with this package, build skipped.`)}}var XTt=new Set([".exe",".bin",".h",".hh",".hpp",".c",".cc",".cpp",".java",".jar",".node"]);function nV(t){return t.packageFs.getExtractHint({relevantExtensions:XTt})}function iV(t){let e=K.join(t.prefixPath,"binding.gyp");return t.packageFs.existsSync(e)}var nb={};Vt(nb,{getUnpluggedPath:()=>rb});Ve();bt();function rb(t,{configuration:e}){return K.resolve(e.get("pnpUnpluggedFolder"),q.slugifyLocator(t))}var $Tt=new Set([q.makeIdent(null,"open").identHash,q.makeIdent(null,"opn").identHash]),og=class{constructor(){this.mode="strict";this.pnpCache=new Map}getCustomDataKey(){return JSON.stringify({name:"PnpLinker",version:2})}supportsPackage(e,r){return this.isEnabled(r)}async findPackageLocation(e,r){if(!this.isEnabled(r))throw new Error("Assertion failed: Expected the PnP linker to be enabled");let s=ag(r.project).cjs;if(!le.existsSync(s))throw new nt(`The project in ${he.pretty(r.project.configuration,`${r.project.cwd}/package.json`,he.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let a=je.getFactoryWithDefault(this.pnpCache,s,()=>je.dynamicRequire(s,{cachingStrategy:je.CachingStrategy.FsTime})),n={name:q.stringifyIdent(e),reference:e.reference},c=a.getPackageInformation(n);if(!c)throw new nt(`Couldn't find ${q.prettyLocator(r.project.configuration,e)} in the currently installed PnP map - running an install might help`);return ue.toPortablePath(c.packageLocation)}async findPackageLocator(e,r){if(!this.isEnabled(r))return null;let s=ag(r.project).cjs;if(!le.existsSync(s))return null;let n=je.getFactoryWithDefault(this.pnpCache,s,()=>je.dynamicRequire(s,{cachingStrategy:je.CachingStrategy.FsTime})).findPackageLocator(ue.fromPortablePath(e));return n?q.makeLocator(q.parseIdent(n.name),n.reference):null}makeInstaller(e){return new Gm(e)}isEnabled(e){return!(e.project.configuration.get("nodeLinker")!=="pnp"||e.project.configuration.get("pnpMode")!==this.mode)}},Gm=class{constructor(e){this.opts=e;this.mode="strict";this.asyncActions=new je.AsyncActions(10);this.packageRegistry=new Map;this.virtualTemplates=new Map;this.isESMLoaderRequired=!1;this.customData={store:new Map};this.unpluggedPaths=new Set;this.opts=e}attachCustomData(e){this.customData=e}async installPackage(e,r,s){let a=q.stringifyIdent(e),n=e.reference,c=!!this.opts.project.tryWorkspaceByLocator(e),f=q.isVirtualLocator(e),p=e.peerDependencies.size>0&&!f,h=!p&&!c,E=!p&&e.linkType!=="SOFT",C,S;if(h||E){let te=f?q.devirtualizeLocator(e):e;C=this.customData.store.get(te.locatorHash),typeof C>"u"&&(C=await eRt(r),e.linkType==="HARD"&&this.customData.store.set(te.locatorHash,C)),C.manifest.type==="module"&&(this.isESMLoaderRequired=!0),S=this.opts.project.getDependencyMeta(te,e.version)}let P=h?hN(e,C,S,{configuration:this.opts.project.configuration}):null,I=E?await this.unplugPackageIfNeeded(e,C,r,S,s):r.packageFs;if(K.isAbsolute(r.prefixPath))throw new Error(`Assertion failed: Expected the prefix path (${r.prefixPath}) to be relative to the parent`);let R=K.resolve(I.getRealPath(),r.prefixPath),N=sV(this.opts.project.cwd,R),U=new Map,W=new Set;if(f){for(let te of e.peerDependencies.values())U.set(q.stringifyIdent(te),null),W.add(q.stringifyIdent(te));if(!c){let te=q.devirtualizeLocator(e);this.virtualTemplates.set(te.locatorHash,{location:sV(this.opts.project.cwd,fo.resolveVirtual(R)),locator:te})}}return je.getMapWithDefault(this.packageRegistry,a).set(n,{packageLocation:N,packageDependencies:U,packagePeers:W,linkType:e.linkType,discardFromLookup:r.discardFromLookup||!1}),{packageLocation:R,buildRequest:P}}async attachInternalDependencies(e,r){let s=this.getPackageInformation(e);for(let[a,n]of r){let c=q.areIdentsEqual(a,n)?n.reference:[q.stringifyIdent(n),n.reference];s.packageDependencies.set(q.stringifyIdent(a),c)}}async attachExternalDependents(e,r){for(let s of r)this.getDiskInformation(s).packageDependencies.set(q.stringifyIdent(e),e.reference)}async finalizeInstall(){if(this.opts.project.configuration.get("pnpMode")!==this.mode)return;let e=ag(this.opts.project);if(this.isEsmEnabled()||await le.removePromise(e.esmLoader),this.opts.project.configuration.get("nodeLinker")!=="pnp"){await le.removePromise(e.cjs),await le.removePromise(e.data),await le.removePromise(e.esmLoader),await le.removePromise(this.opts.project.configuration.get("pnpUnpluggedFolder"));return}for(let{locator:C,location:S}of this.virtualTemplates.values())je.getMapWithDefault(this.packageRegistry,q.stringifyIdent(C)).set(C.reference,{packageLocation:S,packageDependencies:new Map,packagePeers:new Set,linkType:"SOFT",discardFromLookup:!1});let r=this.opts.project.configuration.get("pnpFallbackMode"),s=this.opts.project.workspaces.map(({anchoredLocator:C})=>({name:q.stringifyIdent(C),reference:C.reference})),a=r!=="none",n=[],c=new Map,f=je.buildIgnorePattern([".yarn/sdks/**",...this.opts.project.configuration.get("pnpIgnorePatterns")]),p=this.packageRegistry,h=this.opts.project.configuration.get("pnpShebang"),E=this.opts.project.configuration.get("pnpZipBackend");if(r==="dependencies-only")for(let C of this.opts.project.storedPackages.values())this.opts.project.tryWorkspaceByLocator(C)&&n.push({name:q.stringifyIdent(C),reference:C.reference});return await this.asyncActions.wait(),await this.finalizeInstallWithPnp({dependencyTreeRoots:s,enableTopLevelFallback:a,fallbackExclusionList:n,fallbackPool:c,ignorePattern:f,pnpZipBackend:E,packageRegistry:p,shebang:h}),{customData:this.customData}}async transformPnpSettings(e){}isEsmEnabled(){if(this.opts.project.configuration.sources.has("pnpEnableEsmLoader"))return this.opts.project.configuration.get("pnpEnableEsmLoader");if(this.isESMLoaderRequired)return!0;for(let e of this.opts.project.workspaces)if(e.manifest.type==="module")return!0;return!1}async finalizeInstallWithPnp(e){let r=ag(this.opts.project),s=await this.locateNodeModules(e.ignorePattern);if(s.length>0){this.opts.report.reportWarning(31,"One or more node_modules have been detected and will be removed. This operation may take some time.");for(let n of s)await le.removePromise(n)}if(await this.transformPnpSettings(e),this.opts.project.configuration.get("pnpEnableInlining")){let n=xxe(e);await le.changeFilePromise(r.cjs,n,{automaticNewlines:!0,mode:493}),await le.removePromise(r.data)}else{let{dataFile:n,loaderFile:c}=kxe(e);await le.changeFilePromise(r.cjs,c,{automaticNewlines:!0,mode:493}),await le.changeFilePromise(r.data,n,{automaticNewlines:!0,mode:420})}this.isEsmEnabled()&&(this.opts.report.reportWarning(0,"ESM support for PnP uses the experimental loader API and is therefore experimental"),await le.changeFilePromise(r.esmLoader,(0,rV.default)(),{automaticNewlines:!0,mode:420}));let a=this.opts.project.configuration.get("pnpUnpluggedFolder");if(this.unpluggedPaths.size===0)await le.removePromise(a);else for(let n of await le.readdirPromise(a)){let c=K.resolve(a,n);this.unpluggedPaths.has(c)||await le.removePromise(c)}}async locateNodeModules(e){let r=[],s=e?new RegExp(e):null;for(let a of this.opts.project.workspaces){let n=K.join(a.cwd,"node_modules");if(s&&s.test(K.relative(this.opts.project.cwd,a.cwd))||!le.existsSync(n))continue;let c=await le.readdirPromise(n,{withFileTypes:!0}),f=c.filter(p=>!p.isDirectory()||p.name===".bin"||!p.name.startsWith("."));if(f.length===c.length)r.push(n);else for(let p of f)r.push(K.join(n,p.name))}return r}async unplugPackageIfNeeded(e,r,s,a,n){return this.shouldBeUnplugged(e,r,a)?this.unplugPackage(e,s,n):s.packageFs}shouldBeUnplugged(e,r,s){return typeof s.unplugged<"u"?s.unplugged:$Tt.has(e.identHash)||e.conditions!=null?!0:r.manifest.preferUnplugged!==null?r.manifest.preferUnplugged:!!(hN(e,r,s,{configuration:this.opts.project.configuration})?.skipped===!1||r.misc.extractHint)}async unplugPackage(e,r,s){let a=rb(e,{configuration:this.opts.project.configuration});return this.opts.project.disabledLocators.has(e.locatorHash)?new Hf(a,{baseFs:r.packageFs,pathUtils:K}):(this.unpluggedPaths.add(a),s.holdFetchResult(this.asyncActions.set(e.locatorHash,async()=>{let n=K.join(a,r.prefixPath,".ready");await le.existsPromise(n)||(this.opts.project.storedBuildState.delete(e.locatorHash),await le.mkdirPromise(a,{recursive:!0}),await le.copyPromise(a,vt.dot,{baseFs:r.packageFs,overwrite:!1}),await le.writeFilePromise(n,""))})),new Sn(a))}getPackageInformation(e){let r=q.stringifyIdent(e),s=e.reference,a=this.packageRegistry.get(r);if(!a)throw new Error(`Assertion failed: The package information store should have been available (for ${q.prettyIdent(this.opts.project.configuration,e)})`);let n=a.get(s);if(!n)throw new Error(`Assertion failed: The package information should have been available (for ${q.prettyLocator(this.opts.project.configuration,e)})`);return n}getDiskInformation(e){let r=je.getMapWithDefault(this.packageRegistry,"@@disk"),s=sV(this.opts.project.cwd,e);return je.getFactoryWithDefault(r,s,()=>({packageLocation:s,packageDependencies:new Map,packagePeers:new Set,linkType:"SOFT",discardFromLookup:!1}))}};function sV(t,e){let r=K.relative(t,e);return r.match(/^\.{0,2}\//)||(r=`./${r}`),r.replace(/\/?$/,"/")}async function eRt(t){let e=await Ht.tryFind(t.prefixPath,{baseFs:t.packageFs})??new Ht,r=new Set(["preinstall","install","postinstall"]);for(let s of e.scripts.keys())r.has(s)||e.scripts.delete(s);return{manifest:{scripts:e.scripts,preferUnplugged:e.preferUnplugged,type:e.type},misc:{extractHint:nV(t),hasBindingGyp:iV(t)}}}Ve();Ve();Wt();var nke=et(Sa());var Pw=class extends ut{constructor(){super(...arguments);this.all=ge.Boolean("-A,--all",!1,{description:"Unplug direct dependencies from the entire project"});this.recursive=ge.Boolean("-R,--recursive",!1,{description:"Unplug both direct and transitive dependencies"});this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.patterns=ge.Rest()}static{this.paths=[["unplug"]]}static{this.usage=ot.Usage({description:"force the unpacking of a list of packages",details:"\n This command will add the selectors matching the specified patterns to the list of packages that must be unplugged when installed.\n\n A package being unplugged means that instead of being referenced directly through its archive, it will be unpacked at install time in the directory configured via `pnpUnpluggedFolder`. Note that unpacking packages this way is generally not recommended because it'll make it harder to store your packages within the repository. However, it's a good approach to quickly and safely debug some packages, and can even sometimes be required depending on the context (for example when the package contains shellscripts).\n\n Running the command will set a persistent flag inside your top-level `package.json`, in the `dependenciesMeta` field. As such, to undo its effects, you'll need to revert the changes made to the manifest and run `yarn install` to apply the modification.\n\n By default, only direct dependencies from the current workspace are affected. If `-A,--all` is set, direct dependencies from the entire project are affected. Using the `-R,--recursive` flag will affect transitive dependencies as well as direct ones.\n\n This command accepts glob patterns inside the scope and name components (not the range). Make sure to escape the patterns to prevent your own shell from trying to expand them.\n ",examples:[["Unplug the lodash dependency from the active workspace","yarn unplug lodash"],["Unplug all instances of lodash referenced by any workspace","yarn unplug lodash -A"],["Unplug all instances of lodash referenced by the active workspace and its dependencies","yarn unplug lodash -R"],["Unplug all instances of lodash, anywhere","yarn unplug lodash -AR"],["Unplug one specific version of lodash","yarn unplug lodash@1.2.3"],["Unplug all packages with the `@babel` scope","yarn unplug '@babel/*'"],["Unplug all packages (only for testing, not recommended)","yarn unplug -R '*'"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n=await Jr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);if(r.get("nodeLinker")!=="pnp")throw new nt("This command can only be used if the `nodeLinker` option is set to `pnp`");await s.restoreInstallState();let c=new Set(this.patterns),f=this.patterns.map(P=>{let I=q.parseDescriptor(P),R=I.range!=="unknown"?I:q.makeDescriptor(I,"*");if(!Or.validRange(R.range))throw new nt(`The range of the descriptor patterns must be a valid semver range (${q.prettyDescriptor(r,R)})`);return N=>{let U=q.stringifyIdent(N);return!nke.default.isMatch(U,q.stringifyIdent(R))||N.version&&!Or.satisfiesWithPrereleases(N.version,R.range)?!1:(c.delete(P),!0)}}),p=()=>{let P=[];for(let I of s.storedPackages.values())!s.tryWorkspaceByLocator(I)&&!q.isVirtualLocator(I)&&f.some(R=>R(I))&&P.push(I);return P},h=P=>{let I=new Set,R=[],N=(U,W)=>{if(I.has(U.locatorHash))return;let te=!!s.tryWorkspaceByLocator(U);if(!(W>0&&!this.recursive&&te)&&(I.add(U.locatorHash),!s.tryWorkspaceByLocator(U)&&f.some(ie=>ie(U))&&R.push(U),!(W>0&&!this.recursive)))for(let ie of U.dependencies.values()){let Ae=s.storedResolutions.get(ie.descriptorHash);if(!Ae)throw new Error("Assertion failed: The resolution should have been registered");let ce=s.storedPackages.get(Ae);if(!ce)throw new Error("Assertion failed: The package should have been registered");N(ce,W+1)}};for(let U of P)N(U.anchoredPackage,0);return R},E,C;if(this.all&&this.recursive?(E=p(),C="the project"):this.all?(E=h(s.workspaces),C="any workspace"):(E=h([a]),C="this workspace"),c.size>1)throw new nt(`Patterns ${he.prettyList(r,c,he.Type.CODE)} don't match any packages referenced by ${C}`);if(c.size>0)throw new nt(`Pattern ${he.prettyList(r,c,he.Type.CODE)} doesn't match any packages referenced by ${C}`);E=je.sortMap(E,P=>q.stringifyLocator(P));let S=await Ot.start({configuration:r,stdout:this.context.stdout,json:this.json},async P=>{for(let I of E){let R=I.version??"unknown",N=s.topLevelWorkspace.manifest.ensureDependencyMeta(q.makeDescriptor(I,R));N.unplugged=!0,P.reportInfo(0,`Will unpack ${q.prettyLocator(r,I)} to ${he.pretty(r,rb(I,{configuration:r}),he.Type.PATH)}`),P.reportJson({locator:q.stringifyLocator(I),version:R})}await s.topLevelWorkspace.persistManifest(),this.json||P.reportSeparator()});return S.hasErrors()?S.exitCode():await s.installWithNewReport({json:this.json,stdout:this.context.stdout},{cache:n})}};var ag=t=>({cjs:K.join(t.cwd,Er.pnpCjs),data:K.join(t.cwd,Er.pnpData),esmLoader:K.join(t.cwd,Er.pnpEsmLoader)}),ske=t=>/\s/.test(t)?JSON.stringify(t):t;async function tRt(t,e,r){let s=/\s*--require\s+\S*\.pnp\.c?js\s*/g,a=/\s*--experimental-loader\s+\S*\.pnp\.loader\.mjs\s*/,n=(e.NODE_OPTIONS??"").replace(s," ").replace(a," ").trim();if(t.configuration.get("nodeLinker")!=="pnp"){e.NODE_OPTIONS=n||void 0;return}let c=ag(t),f=`--require ${ske(ue.fromPortablePath(c.cjs))}`;le.existsSync(c.esmLoader)&&(f=`${f} --experimental-loader ${(0,ike.pathToFileURL)(ue.fromPortablePath(c.esmLoader)).href}`),le.existsSync(c.cjs)&&(e.NODE_OPTIONS=n?`${f} ${n}`:f)}async function rRt(t,e){let r=ag(t);e(r.cjs),e(r.data),e(r.esmLoader),e(t.configuration.get("pnpUnpluggedFolder"))}var nRt={hooks:{populateYarnPaths:rRt,setupScriptEnvironment:tRt},configuration:{nodeLinker:{description:'The linker used for installing Node packages, one of: "pnp", "pnpm", or "node-modules"',type:"STRING",default:"pnp"},minizip:{description:"Whether Yarn should use minizip to extract archives",type:"BOOLEAN",default:!1},winLinkType:{description:"Whether Yarn should use Windows Junctions or symlinks when creating links on Windows.",type:"STRING",values:["junctions","symlinks"],default:"junctions"},pnpMode:{description:"If 'strict', generates standard PnP maps. If 'loose', merges them with the n_m resolution.",type:"STRING",default:"strict"},pnpShebang:{description:"String to prepend to the generated PnP script",type:"STRING",default:"#!/usr/bin/env node"},pnpIgnorePatterns:{description:"Array of glob patterns; files matching them will use the classic resolution",type:"STRING",default:[],isArray:!0},pnpZipBackend:{description:"Whether to use the experimental js implementation for the ZipFS",type:"STRING",values:["libzip","js"],default:"libzip"},pnpEnableEsmLoader:{description:"If true, Yarn will generate an ESM loader (`.pnp.loader.mjs`). If this is not explicitly set Yarn tries to automatically detect whether ESM support is required.",type:"BOOLEAN",default:!1},pnpEnableInlining:{description:"If true, the PnP data will be inlined along with the generated loader",type:"BOOLEAN",default:!0},pnpFallbackMode:{description:"If true, the generated PnP loader will follow the top-level fallback rule",type:"STRING",default:"dependencies-only"},pnpUnpluggedFolder:{description:"Folder where the unplugged packages must be stored",type:"ABSOLUTE_PATH",default:"./.yarn/unplugged"}},linkers:[og],commands:[Pw]},iRt=nRt;var pke=et(uke());Wt();var pV=et(ye("crypto")),hke=et(ye("fs")),gke=1,_i="node_modules",gN=".bin",dke=".yarn-state.yml",CRt=1e3,hV=(s=>(s.CLASSIC="classic",s.HARDLINKS_LOCAL="hardlinks-local",s.HARDLINKS_GLOBAL="hardlinks-global",s))(hV||{}),ib=class{constructor(){this.installStateCache=new Map}getCustomDataKey(){return JSON.stringify({name:"NodeModulesLinker",version:3})}supportsPackage(e,r){return this.isEnabled(r)}async findPackageLocation(e,r){if(!this.isEnabled(r))throw new Error("Assertion failed: Expected the node-modules linker to be enabled");let s=r.project.tryWorkspaceByLocator(e);if(s)return s.cwd;let a=await je.getFactoryWithDefault(this.installStateCache,r.project.cwd,async()=>await AV(r.project,{unrollAliases:!0}));if(a===null)throw new nt("Couldn't find the node_modules state file - running an install might help (findPackageLocation)");let n=a.locatorMap.get(q.stringifyLocator(e));if(!n){let p=new nt(`Couldn't find ${q.prettyLocator(r.project.configuration,e)} in the currently installed node_modules map - running an install might help`);throw p.code="LOCATOR_NOT_INSTALLED",p}let c=n.locations.sort((p,h)=>p.split(K.sep).length-h.split(K.sep).length),f=K.join(r.project.configuration.startingCwd,_i);return c.find(p=>K.contains(f,p))||n.locations[0]}async findPackageLocator(e,r){if(!this.isEnabled(r))return null;let s=await je.getFactoryWithDefault(this.installStateCache,r.project.cwd,async()=>await AV(r.project,{unrollAliases:!0}));if(s===null)return null;let{locationRoot:a,segments:n}=dN(K.resolve(e),{skipPrefix:r.project.cwd}),c=s.locationTree.get(a);if(!c)return null;let f=c.locator;for(let p of n){if(c=c.children.get(p),!c)break;f=c.locator||f}return q.parseLocator(f)}makeInstaller(e){return new fV(e)}isEnabled(e){return e.project.configuration.get("nodeLinker")==="node-modules"}},fV=class{constructor(e){this.opts=e;this.localStore=new Map;this.realLocatorChecksums=new Map;this.customData={store:new Map}}attachCustomData(e){this.customData=e}async installPackage(e,r){let s=K.resolve(r.packageFs.getRealPath(),r.prefixPath),a=this.customData.store.get(e.locatorHash);if(typeof a>"u"&&(a=await wRt(e,r),e.linkType==="HARD"&&this.customData.store.set(e.locatorHash,a)),!q.isPackageCompatible(e,this.opts.project.configuration.getSupportedArchitectures()))return{packageLocation:null,buildRequest:null};let n=new Map,c=new Set;n.has(q.stringifyIdent(e))||n.set(q.stringifyIdent(e),e.reference);let f=e;if(q.isVirtualLocator(e)){f=q.devirtualizeLocator(e);for(let E of e.peerDependencies.values())n.set(q.stringifyIdent(E),null),c.add(q.stringifyIdent(E))}let p={packageLocation:`${ue.fromPortablePath(s)}/`,packageDependencies:n,packagePeers:c,linkType:e.linkType,discardFromLookup:r.discardFromLookup??!1};this.localStore.set(e.locatorHash,{pkg:e,customPackageData:a,dependencyMeta:this.opts.project.getDependencyMeta(e,e.version),pnpNode:p});let h=r.checksum?r.checksum.substring(r.checksum.indexOf("/")+1):null;return this.realLocatorChecksums.set(f.locatorHash,h),{packageLocation:s,buildRequest:null}}async attachInternalDependencies(e,r){let s=this.localStore.get(e.locatorHash);if(typeof s>"u")throw new Error("Assertion failed: Expected information object to have been registered");for(let[a,n]of r){let c=q.areIdentsEqual(a,n)?n.reference:[q.stringifyIdent(n),n.reference];s.pnpNode.packageDependencies.set(q.stringifyIdent(a),c)}}async attachExternalDependents(e,r){throw new Error("External dependencies haven't been implemented for the node-modules linker")}async finalizeInstall(){if(this.opts.project.configuration.get("nodeLinker")!=="node-modules")return;let e=new fo({baseFs:new tA({maxOpenFiles:80,readOnlyArchives:!0})}),r=await AV(this.opts.project),s=this.opts.project.configuration.get("nmMode");(r===null||s!==r.nmMode)&&(this.opts.project.storedBuildState.clear(),r={locatorMap:new Map,binSymlinks:new Map,locationTree:new Map,nmMode:s,mtimeMs:0});let a=new Map(this.opts.project.workspaces.map(S=>{let P=this.opts.project.configuration.get("nmHoistingLimits");try{P=je.validateEnum(WD,S.manifest.installConfig?.hoistingLimits??P)}catch{let I=q.prettyWorkspace(this.opts.project.configuration,S);this.opts.report.reportWarning(57,`${I}: Invalid 'installConfig.hoistingLimits' value. Expected one of ${Object.values(WD).join(", ")}, using default: "${P}"`)}return[S.relativeCwd,P]})),n=new Map(this.opts.project.workspaces.map(S=>{let P=this.opts.project.configuration.get("nmSelfReferences");return P=S.manifest.installConfig?.selfReferences??P,[S.relativeCwd,P]})),c={VERSIONS:{std:1},topLevel:{name:null,reference:null},getLocator:(S,P)=>Array.isArray(P)?{name:P[0],reference:P[1]}:{name:S,reference:P},getDependencyTreeRoots:()=>this.opts.project.workspaces.map(S=>{let P=S.anchoredLocator;return{name:q.stringifyIdent(P),reference:P.reference}}),getPackageInformation:S=>{let P=S.reference===null?this.opts.project.topLevelWorkspace.anchoredLocator:q.makeLocator(q.parseIdent(S.name),S.reference),I=this.localStore.get(P.locatorHash);if(typeof I>"u")throw new Error("Assertion failed: Expected the package reference to have been registered");return I.pnpNode},findPackageLocator:S=>{let P=this.opts.project.tryWorkspaceByCwd(ue.toPortablePath(S));if(P!==null){let I=P.anchoredLocator;return{name:q.stringifyIdent(I),reference:I.reference}}throw new Error("Assertion failed: Unimplemented")},resolveToUnqualified:()=>{throw new Error("Assertion failed: Unimplemented")},resolveUnqualified:()=>{throw new Error("Assertion failed: Unimplemented")},resolveRequest:()=>{throw new Error("Assertion failed: Unimplemented")},resolveVirtual:S=>ue.fromPortablePath(fo.resolveVirtual(ue.toPortablePath(S)))},{tree:f,errors:p,preserveSymlinksRequired:h}=YD(c,{pnpifyFs:!1,validateExternalSoftLinks:!0,hoistingLimitsByCwd:a,project:this.opts.project,selfReferencesByCwd:n});if(!f){for(let{messageName:S,text:P}of p)this.opts.report.reportError(S,P);return}let E=HY(f);await PRt(r,E,{baseFs:e,project:this.opts.project,report:this.opts.report,realLocatorChecksums:this.realLocatorChecksums,loadManifest:async S=>{let P=q.parseLocator(S),I=this.localStore.get(P.locatorHash);if(typeof I>"u")throw new Error("Assertion failed: Expected the slot to exist");return I.customPackageData.manifest}});let C=[];for(let[S,P]of E.entries()){if(Eke(S))continue;let I=q.parseLocator(S),R=this.localStore.get(I.locatorHash);if(typeof R>"u")throw new Error("Assertion failed: Expected the slot to exist");if(this.opts.project.tryWorkspaceByLocator(R.pkg))continue;let N=mA.extractBuildRequest(R.pkg,R.customPackageData,R.dependencyMeta,{configuration:this.opts.project.configuration});N&&C.push({buildLocations:P.locations,locator:I,buildRequest:N})}return h&&this.opts.report.reportWarning(72,`The application uses portals and that's why ${he.pretty(this.opts.project.configuration,"--preserve-symlinks",he.Type.CODE)} Node option is required for launching it`),{customData:this.customData,records:C}}};async function wRt(t,e){let r=await Ht.tryFind(e.prefixPath,{baseFs:e.packageFs})??new Ht,s=new Set(["preinstall","install","postinstall"]);for(let a of r.scripts.keys())s.has(a)||r.scripts.delete(a);return{manifest:{bin:r.bin,scripts:r.scripts},misc:{hasBindingGyp:mA.hasBindingGyp(e)}}}async function BRt(t,e,r,s,{installChangedByUser:a}){let n="";n+=`# Warning: This file is automatically generated. Removing it is fine, but will +`,n+=`# cause your node_modules installation to become invalidated. +`,n+=` +`,n+=`__metadata: +`,n+=` version: ${gke} +`,n+=` nmMode: ${s.value} +`;let c=Array.from(e.keys()).sort(),f=q.stringifyLocator(t.topLevelWorkspace.anchoredLocator);for(let E of c){let C=e.get(E);n+=` +`,n+=`${JSON.stringify(E)}: +`,n+=` locations: +`;for(let S of C.locations){let P=K.contains(t.cwd,S);if(P===null)throw new Error(`Assertion failed: Expected the path to be within the project (${S})`);n+=` - ${JSON.stringify(P)} +`}if(C.aliases.length>0){n+=` aliases: +`;for(let S of C.aliases)n+=` - ${JSON.stringify(S)} +`}if(E===f&&r.size>0){n+=` bin: +`;for(let[S,P]of r){let I=K.contains(t.cwd,S);if(I===null)throw new Error(`Assertion failed: Expected the path to be within the project (${S})`);n+=` ${JSON.stringify(I)}: +`;for(let[R,N]of P){let U=K.relative(K.join(S,_i),N);n+=` ${JSON.stringify(R)}: ${JSON.stringify(U)} +`}}}}let p=t.cwd,h=K.join(p,_i,dke);a&&await le.removePromise(h),await le.changeFilePromise(h,n,{automaticNewlines:!0})}async function AV(t,{unrollAliases:e=!1}={}){let r=t.cwd,s=K.join(r,_i,dke),a;try{a=await le.statPromise(s)}catch{}if(!a)return null;let n=ls(await le.readFilePromise(s,"utf8"));if(n.__metadata.version>gke)return null;let c=n.__metadata.nmMode||"classic",f=new Map,p=new Map;delete n.__metadata;for(let[h,E]of Object.entries(n)){let C=E.locations.map(P=>K.join(r,P)),S=E.bin;if(S)for(let[P,I]of Object.entries(S)){let R=K.join(r,ue.toPortablePath(P)),N=je.getMapWithDefault(p,R);for(let[U,W]of Object.entries(I))N.set(U,ue.toPortablePath([R,_i,W].join(K.sep)))}if(f.set(h,{target:vt.dot,linkType:"HARD",locations:C,aliases:E.aliases||[]}),e&&E.aliases)for(let P of E.aliases){let{scope:I,name:R}=q.parseLocator(h),N=q.makeLocator(q.makeIdent(I,R),P),U=q.stringifyLocator(N);f.set(U,{target:vt.dot,linkType:"HARD",locations:C,aliases:[]})}}return{locatorMap:f,binSymlinks:p,locationTree:mke(f,{skipPrefix:t.cwd}),nmMode:c,mtimeMs:a.mtimeMs}}var kw=async(t,e)=>{if(t.split(K.sep).indexOf(_i)<0)throw new Error(`Assertion failed: trying to remove dir that doesn't contain node_modules: ${t}`);try{let r;if(!e.innerLoop&&(r=await le.lstatPromise(t),!r.isDirectory()&&!r.isSymbolicLink()||r.isSymbolicLink()&&!e.isWorkspaceDir)){await le.unlinkPromise(t);return}let s=await le.readdirPromise(t,{withFileTypes:!0});for(let n of s){let c=K.join(t,n.name);n.isDirectory()?(n.name!==_i||e&&e.innerLoop)&&await kw(c,{innerLoop:!0,contentsOnly:!1}):await le.unlinkPromise(c)}let a=!e.innerLoop&&e.isWorkspaceDir&&r?.isSymbolicLink();!e.contentsOnly&&!a&&await le.rmdirPromise(t)}catch(r){if(r.code!=="ENOENT"&&r.code!=="ENOTEMPTY")throw r}},fke=4,dN=(t,{skipPrefix:e})=>{let r=K.contains(e,t);if(r===null)throw new Error(`Assertion failed: Writing attempt prevented to ${t} which is outside project root: ${e}`);let s=r.split(K.sep).filter(p=>p!==""),a=s.indexOf(_i),n=s.slice(0,a).join(K.sep),c=K.join(e,n),f=s.slice(a);return{locationRoot:c,segments:f}},mke=(t,{skipPrefix:e})=>{let r=new Map;if(t===null)return r;let s=()=>({children:new Map,linkType:"HARD"});for(let[a,n]of t.entries()){if(n.linkType==="SOFT"&&K.contains(e,n.target)!==null){let f=je.getFactoryWithDefault(r,n.target,s);f.locator=a,f.linkType=n.linkType}for(let c of n.locations){let{locationRoot:f,segments:p}=dN(c,{skipPrefix:e}),h=je.getFactoryWithDefault(r,f,s);for(let E=0;E{if(process.platform==="win32"&&r==="junctions"){let s;try{s=await le.lstatPromise(t)}catch{}if(!s||s.isDirectory()){await le.symlinkPromise(t,e,"junction");return}}await le.symlinkPromise(K.relative(K.dirname(e),t),e)};async function yke(t,e,r){let s=K.join(t,`${pV.default.randomBytes(16).toString("hex")}.tmp`);try{await le.writeFilePromise(s,r);try{await le.linkPromise(s,e)}catch{}}finally{await le.unlinkPromise(s)}}async function vRt({srcPath:t,dstPath:e,entry:r,globalHardlinksStore:s,baseFs:a,nmMode:n}){if(r.kind==="file"){if(n.value==="hardlinks-global"&&s&&r.digest){let f=K.join(s,r.digest.substring(0,2),`${r.digest.substring(2)}.dat`),p;try{let h=await le.statPromise(f);if(h&&(!r.mtimeMs||h.mtimeMs>r.mtimeMs||h.mtimeMs{await le.mkdirPromise(t,{recursive:!0});let f=async(E=vt.dot)=>{let C=K.join(e,E),S=await r.readdirPromise(C,{withFileTypes:!0}),P=new Map;for(let I of S){let R=K.join(E,I.name),N,U=K.join(C,I.name);if(I.isFile()){if(N={kind:"file",mode:(await r.lstatPromise(U)).mode},a.value==="hardlinks-global"){let W=await Nn.checksumFile(U,{baseFs:r,algorithm:"sha1"});N.digest=W}}else if(I.isDirectory())N={kind:"directory"};else if(I.isSymbolicLink())N={kind:"symlink",symlinkTo:await r.readlinkPromise(U)};else throw new Error(`Unsupported file type (file: ${U}, mode: 0o${await r.statSync(U).mode.toString(8).padStart(6,"0")})`);if(P.set(R,N),I.isDirectory()&&R!==_i){let W=await f(R);for(let[te,ie]of W)P.set(te,ie)}}return P},p;if(a.value==="hardlinks-global"&&s&&c){let E=K.join(s,c.substring(0,2),`${c.substring(2)}.json`);try{p=new Map(Object.entries(JSON.parse(await le.readFilePromise(E,"utf8"))))}catch{p=await f()}}else p=await f();let h=!1;for(let[E,C]of p){let S=K.join(e,E),P=K.join(t,E);if(C.kind==="directory")await le.mkdirPromise(P,{recursive:!0});else if(C.kind==="file"){let I=C.mtimeMs;await vRt({srcPath:S,dstPath:P,entry:C,nmMode:a,baseFs:r,globalHardlinksStore:s}),C.mtimeMs!==I&&(h=!0)}else C.kind==="symlink"&&await gV(K.resolve(K.dirname(P),C.symlinkTo),P,n)}if(a.value==="hardlinks-global"&&s&&h&&c){let E=K.join(s,c.substring(0,2),`${c.substring(2)}.json`);await le.removePromise(E),await yke(s,E,Buffer.from(JSON.stringify(Object.fromEntries(p))))}};function DRt(t,e,r,s){let a=new Map,n=new Map,c=new Map,f=!1,p=(h,E,C,S,P)=>{let I=!0,R=K.join(h,E),N=new Set;if(E===_i||E.startsWith("@")){let W;try{W=le.statSync(R)}catch{}I=!!W,W?W.mtimeMs>r?(f=!0,N=new Set(le.readdirSync(R))):N=new Set(C.children.get(E).children.keys()):f=!0;let te=e.get(h);if(te){let ie=K.join(h,_i,gN),Ae;try{Ae=le.statSync(ie)}catch{}if(!Ae)f=!0;else if(Ae.mtimeMs>r){f=!0;let ce=new Set(le.readdirSync(ie)),me=new Map;n.set(h,me);for(let[pe,Be]of te)ce.has(pe)&&me.set(pe,Be)}else n.set(h,te)}}else I=P.has(E);let U=C.children.get(E);if(I){let{linkType:W,locator:te}=U,ie={children:new Map,linkType:W,locator:te};if(S.children.set(E,ie),te){let Ae=je.getSetWithDefault(c,te);Ae.add(R),c.set(te,Ae)}for(let Ae of U.children.keys())p(R,Ae,U,ie,N)}else U.locator&&s.storedBuildState.delete(q.parseLocator(U.locator).locatorHash)};for(let[h,E]of t){let{linkType:C,locator:S}=E,P={children:new Map,linkType:C,locator:S};if(a.set(h,P),S){let I=je.getSetWithDefault(c,E.locator);I.add(h),c.set(E.locator,I)}E.children.has(_i)&&p(h,_i,E,P,new Set)}return{locationTree:a,binSymlinks:n,locatorLocations:c,installChangedByUser:f}}function Eke(t){let e=q.parseDescriptor(t);return q.isVirtualDescriptor(e)&&(e=q.devirtualizeDescriptor(e)),e.range.startsWith("link:")}async function bRt(t,e,r,{loadManifest:s}){let a=new Map;for(let[f,{locations:p}]of t){let h=Eke(f)?null:await s(f,p[0]),E=new Map;if(h)for(let[C,S]of h.bin){let P=K.join(p[0],S);S!==""&&le.existsSync(P)&&E.set(C,S)}a.set(f,E)}let n=new Map,c=(f,p,h)=>{let E=new Map,C=K.contains(r,f);if(h.locator&&C!==null){let S=a.get(h.locator);for(let[P,I]of S){let R=K.join(f,ue.toPortablePath(I));E.set(P,R)}for(let[P,I]of h.children){let R=K.join(f,P),N=c(R,R,I);N.size>0&&n.set(f,new Map([...n.get(f)||new Map,...N]))}}else for(let[S,P]of h.children){let I=c(K.join(f,S),p,P);for(let[R,N]of I)E.set(R,N)}return E};for(let[f,p]of e){let h=c(f,f,p);h.size>0&&n.set(f,new Map([...n.get(f)||new Map,...h]))}return n}var Ake=(t,e)=>{if(!t||!e)return t===e;let r=q.parseLocator(t);q.isVirtualLocator(r)&&(r=q.devirtualizeLocator(r));let s=q.parseLocator(e);return q.isVirtualLocator(s)&&(s=q.devirtualizeLocator(s)),q.areLocatorsEqual(r,s)};function dV(t){return K.join(t.get("globalFolder"),"store")}async function PRt(t,e,{baseFs:r,project:s,report:a,loadManifest:n,realLocatorChecksums:c}){let f=K.join(s.cwd,_i),{locationTree:p,binSymlinks:h,locatorLocations:E,installChangedByUser:C}=DRt(t.locationTree,t.binSymlinks,t.mtimeMs,s),S=mke(e,{skipPrefix:s.cwd}),P=[],I=async({srcDir:Be,dstDir:Ce,linkType:g,globalHardlinksStore:we,nmMode:Ee,windowsLinkType:fe,packageChecksum:se})=>{let X=(async()=>{try{g==="SOFT"?(await le.mkdirPromise(K.dirname(Ce),{recursive:!0}),await gV(K.resolve(Be),Ce,fe)):await SRt(Ce,Be,{baseFs:r,globalHardlinksStore:we,nmMode:Ee,windowsLinkType:fe,packageChecksum:se})}catch(De){throw De.message=`While persisting ${Be} -> ${Ce} ${De.message}`,De}finally{ie.tick()}})().then(()=>P.splice(P.indexOf(X),1));P.push(X),P.length>fke&&await Promise.race(P)},R=async(Be,Ce,g)=>{let we=(async()=>{let Ee=async(fe,se,X)=>{try{X.innerLoop||await le.mkdirPromise(se,{recursive:!0});let De=await le.readdirPromise(fe,{withFileTypes:!0});for(let Re of De){if(!X.innerLoop&&Re.name===gN)continue;let gt=K.join(fe,Re.name),j=K.join(se,Re.name);Re.isDirectory()?(Re.name!==_i||X&&X.innerLoop)&&(await le.mkdirPromise(j,{recursive:!0}),await Ee(gt,j,{...X,innerLoop:!0})):me.value==="hardlinks-local"||me.value==="hardlinks-global"?await le.linkPromise(gt,j):await le.copyFilePromise(gt,j,hke.default.constants.COPYFILE_FICLONE)}}catch(De){throw X.innerLoop||(De.message=`While cloning ${fe} -> ${se} ${De.message}`),De}finally{X.innerLoop||ie.tick()}};await Ee(Be,Ce,g)})().then(()=>P.splice(P.indexOf(we),1));P.push(we),P.length>fke&&await Promise.race(P)},N=async(Be,Ce,g)=>{if(g)for(let[we,Ee]of Ce.children){let fe=g.children.get(we);await N(K.join(Be,we),Ee,fe)}else{Ce.children.has(_i)&&await kw(K.join(Be,_i),{contentsOnly:!1});let we=K.basename(Be)===_i&&p.has(K.join(K.dirname(Be)));await kw(Be,{contentsOnly:Be===f,isWorkspaceDir:we})}};for(let[Be,Ce]of p){let g=S.get(Be);for(let[we,Ee]of Ce.children){if(we===".")continue;let fe=g&&g.children.get(we),se=K.join(Be,we);await N(se,Ee,fe)}}let U=async(Be,Ce,g)=>{if(g){Ake(Ce.locator,g.locator)||await kw(Be,{contentsOnly:Ce.linkType==="HARD"});for(let[we,Ee]of Ce.children){let fe=g.children.get(we);await U(K.join(Be,we),Ee,fe)}}else{Ce.children.has(_i)&&await kw(K.join(Be,_i),{contentsOnly:!0});let we=K.basename(Be)===_i&&S.has(K.join(K.dirname(Be)));await kw(Be,{contentsOnly:Ce.linkType==="HARD",isWorkspaceDir:we})}};for(let[Be,Ce]of S){let g=p.get(Be);for(let[we,Ee]of Ce.children){if(we===".")continue;let fe=g&&g.children.get(we);await U(K.join(Be,we),Ee,fe)}}let W=new Map,te=[];for(let[Be,Ce]of E)for(let g of Ce){let{locationRoot:we,segments:Ee}=dN(g,{skipPrefix:s.cwd}),fe=S.get(we),se=we;if(fe){for(let X of Ee)if(se=K.join(se,X),fe=fe.children.get(X),!fe)break;if(fe){let X=Ake(fe.locator,Be),De=e.get(fe.locator),Re=De.target,gt=se,j=De.linkType;if(X)W.has(Re)||W.set(Re,gt);else if(Re!==gt){let rt=q.parseLocator(fe.locator);q.isVirtualLocator(rt)&&(rt=q.devirtualizeLocator(rt)),te.push({srcDir:Re,dstDir:gt,linkType:j,realLocatorHash:rt.locatorHash})}}}}for(let[Be,{locations:Ce}]of e.entries())for(let g of Ce){let{locationRoot:we,segments:Ee}=dN(g,{skipPrefix:s.cwd}),fe=p.get(we),se=S.get(we),X=we,De=e.get(Be),Re=q.parseLocator(Be);q.isVirtualLocator(Re)&&(Re=q.devirtualizeLocator(Re));let gt=Re.locatorHash,j=De.target,rt=g;if(j===rt)continue;let Fe=De.linkType;for(let Ne of Ee)se=se.children.get(Ne);if(!fe)te.push({srcDir:j,dstDir:rt,linkType:Fe,realLocatorHash:gt});else for(let Ne of Ee)if(X=K.join(X,Ne),fe=fe.children.get(Ne),!fe){te.push({srcDir:j,dstDir:rt,linkType:Fe,realLocatorHash:gt});break}}let ie=ho.progressViaCounter(te.length),Ae=a.reportProgress(ie),ce=s.configuration.get("nmMode"),me={value:ce},pe=s.configuration.get("winLinkType");try{let Be=me.value==="hardlinks-global"?`${dV(s.configuration)}/v1`:null;if(Be&&!await le.existsPromise(Be)){await le.mkdirpPromise(Be);for(let g=0;g<256;g++)await le.mkdirPromise(K.join(Be,g.toString(16).padStart(2,"0")))}for(let g of te)(g.linkType==="SOFT"||!W.has(g.srcDir))&&(W.set(g.srcDir,g.dstDir),await I({...g,globalHardlinksStore:Be,nmMode:me,windowsLinkType:pe,packageChecksum:c.get(g.realLocatorHash)||null}));await Promise.all(P),P.length=0;for(let g of te){let we=W.get(g.srcDir);g.linkType!=="SOFT"&&g.dstDir!==we&&await R(we,g.dstDir,{nmMode:me})}await Promise.all(P),await le.mkdirPromise(f,{recursive:!0});let Ce=await bRt(e,S,s.cwd,{loadManifest:n});await xRt(h,Ce,s.cwd,pe),await BRt(s,e,Ce,me,{installChangedByUser:C}),ce=="hardlinks-global"&&me.value=="hardlinks-local"&&a.reportWarningOnce(74,"'nmMode' has been downgraded to 'hardlinks-local' due to global cache and install folder being on different devices")}finally{Ae.stop()}}async function xRt(t,e,r,s){for(let a of t.keys()){if(K.contains(r,a)===null)throw new Error(`Assertion failed. Excepted bin symlink location to be inside project dir, instead it was at ${a}`);if(!e.has(a)){let n=K.join(a,_i,gN);await le.removePromise(n)}}for(let[a,n]of e){if(K.contains(r,a)===null)throw new Error(`Assertion failed. Excepted bin symlink location to be inside project dir, instead it was at ${a}`);let c=K.join(a,_i,gN),f=t.get(a)||new Map;await le.mkdirPromise(c,{recursive:!0});for(let p of f.keys())n.has(p)||(await le.removePromise(K.join(c,p)),process.platform==="win32"&&await le.removePromise(K.join(c,`${p}.cmd`)));for(let[p,h]of n){let E=f.get(p),C=K.join(c,p);E!==h&&(process.platform==="win32"?await(0,pke.default)(ue.fromPortablePath(h),ue.fromPortablePath(C),{createPwshFile:!1}):(await le.removePromise(C),await gV(h,C,s),K.contains(r,await le.realpathPromise(h))!==null&&await le.chmodPromise(h,493)))}}}Ve();bt();rA();var sb=class extends og{constructor(){super(...arguments);this.mode="loose"}makeInstaller(r){return new mV(r)}},mV=class extends Gm{constructor(){super(...arguments);this.mode="loose"}async transformPnpSettings(r){let s=new fo({baseFs:new tA({maxOpenFiles:80,readOnlyArchives:!0})}),a=$xe(r,this.opts.project.cwd,s),{tree:n,errors:c}=YD(a,{pnpifyFs:!1,project:this.opts.project});if(!n){for(let{messageName:C,text:S}of c)this.opts.report.reportError(C,S);return}let f=new Map;r.fallbackPool=f;let p=(C,S)=>{let P=q.parseLocator(S.locator),I=q.stringifyIdent(P);I===C?f.set(C,P.reference):f.set(C,[I,P.reference])},h=K.join(this.opts.project.cwd,Er.nodeModules),E=n.get(h);if(!(typeof E>"u")){if("target"in E)throw new Error("Assertion failed: Expected the root junction point to be a directory");for(let C of E.dirList){let S=K.join(h,C),P=n.get(S);if(typeof P>"u")throw new Error("Assertion failed: Expected the child to have been registered");if("target"in P)p(C,P);else for(let I of P.dirList){let R=K.join(S,I),N=n.get(R);if(typeof N>"u")throw new Error("Assertion failed: Expected the subchild to have been registered");if("target"in N)p(`${C}/${I}`,N);else throw new Error("Assertion failed: Expected the leaf junction to be a package")}}}}};var kRt={hooks:{cleanGlobalArtifacts:async t=>{let e=dV(t);await le.removePromise(e)}},configuration:{nmHoistingLimits:{description:"Prevents packages to be hoisted past specific levels",type:"STRING",values:["workspaces","dependencies","none"],default:"none"},nmMode:{description:"Defines in which measure Yarn must use hardlinks and symlinks when generated `node_modules` directories.",type:"STRING",values:["classic","hardlinks-local","hardlinks-global"],default:"classic"},nmSelfReferences:{description:"Defines whether the linker should generate self-referencing symlinks for workspaces.",type:"BOOLEAN",default:!0}},linkers:[ib,sb]},QRt=kRt;var yz={};Vt(yz,{NpmHttpFetcher:()=>lb,NpmRemapResolver:()=>ub,NpmSemverFetcher:()=>ch,NpmSemverResolver:()=>fb,NpmTagResolver:()=>Ab,default:()=>Hjt,npmConfigUtils:()=>pi,npmHttpUtils:()=>an,npmPublishUtils:()=>D1});Ve();var bke=et(fi());var si="npm:";var an={};Vt(an,{AuthType:()=>vke,customPackageError:()=>Wm,del:()=>WRt,get:()=>Ym,getIdentUrl:()=>mN,getPackageMetadata:()=>Rw,handleInvalidAuthenticationError:()=>lg,post:()=>qRt,put:()=>GRt});Ve();Ve();bt();var CV=et(lS()),wke=et(vG()),Bke=et(fi());var pi={};Vt(pi,{RegistryType:()=>Ike,getAuditRegistry:()=>TRt,getAuthConfiguration:()=>IV,getDefaultRegistry:()=>ob,getPublishRegistry:()=>RRt,getRegistryConfiguration:()=>Cke,getScopeConfiguration:()=>EV,getScopeRegistry:()=>Qw,normalizeRegistry:()=>zc});var Ike=(s=>(s.AUDIT_REGISTRY="npmAuditRegistry",s.FETCH_REGISTRY="npmRegistryServer",s.PUBLISH_REGISTRY="npmPublishRegistry",s))(Ike||{});function zc(t){return t.replace(/\/$/,"")}function TRt({configuration:t}){return ob({configuration:t,type:"npmAuditRegistry"})}function RRt(t,{configuration:e}){return t.publishConfig?.registry?zc(t.publishConfig.registry):t.name?Qw(t.name.scope,{configuration:e,type:"npmPublishRegistry"}):ob({configuration:e,type:"npmPublishRegistry"})}function Qw(t,{configuration:e,type:r="npmRegistryServer"}){let s=EV(t,{configuration:e});if(s===null)return ob({configuration:e,type:r});let a=s.get(r);return a===null?ob({configuration:e,type:r}):zc(a)}function ob({configuration:t,type:e="npmRegistryServer"}){let r=t.get(e);return zc(r!==null?r:t.get("npmRegistryServer"))}function Cke(t,{configuration:e}){let r=e.get("npmRegistries"),s=zc(t),a=r.get(s);if(typeof a<"u")return a;let n=r.get(s.replace(/^[a-z]+:/,""));return typeof n<"u"?n:null}var FRt=new Map([["npmRegistryServer","https://npm.jsr.io/"]]);function EV(t,{configuration:e}){if(t===null)return null;let s=e.get("npmScopes").get(t);return s||(t==="jsr"?FRt:null)}function IV(t,{configuration:e,ident:r}){let s=r&&EV(r.scope,{configuration:e});return s?.get("npmAuthIdent")||s?.get("npmAuthToken")?s:Cke(t,{configuration:e})||e}var vke=(a=>(a[a.NO_AUTH=0]="NO_AUTH",a[a.BEST_EFFORT=1]="BEST_EFFORT",a[a.CONFIGURATION=2]="CONFIGURATION",a[a.ALWAYS_AUTH=3]="ALWAYS_AUTH",a))(vke||{});async function lg(t,{attemptedAs:e,registry:r,headers:s,configuration:a}){if(EN(t))throw new Yt(41,"Invalid OTP token");if(t.originalError?.name==="HTTPError"&&t.originalError?.response.statusCode===401)throw new Yt(41,`Invalid authentication (${typeof e!="string"?`as ${await VRt(r,s,{configuration:a})}`:`attempted as ${e}`})`)}function Wm(t,e){let r=t.response?.statusCode;return r?r===404?"Package not found":r>=500&&r<600?`The registry appears to be down (using a ${he.applyHyperlink(e,"local cache","https://yarnpkg.com/advanced/lexicon#local-cache")} might have protected you against such outages)`:null:null}function mN(t){return t.scope?`/@${t.scope}%2f${t.name}`:`/${t.name}`}var Ske=new Map,NRt=new Map;async function ORt(t){return await je.getFactoryWithDefault(Ske,t,async()=>{let e=null;try{e=await le.readJsonPromise(t)}catch{}return e})}async function LRt(t,e,{configuration:r,cached:s,registry:a,headers:n,version:c,...f}){return await je.getFactoryWithDefault(NRt,t,async()=>await Ym(mN(e),{...f,customErrorMessage:Wm,configuration:r,registry:a,ident:e,headers:{...n,"If-None-Match":s?.etag,"If-Modified-Since":s?.lastModified},wrapNetworkRequest:async p=>async()=>{let h=await p();if(h.statusCode===304){if(s===null)throw new Error("Assertion failed: cachedMetadata should not be null");return{...h,body:s.metadata}}let E=_Rt(JSON.parse(h.body.toString())),C={metadata:E,etag:h.headers.etag,lastModified:h.headers["last-modified"]};return Ske.set(t,Promise.resolve(C)),Promise.resolve().then(async()=>{let S=`${t}-${process.pid}.tmp`;await le.mkdirPromise(K.dirname(S),{recursive:!0}),await le.writeJsonPromise(S,C,{compact:!0}),await le.renamePromise(S,t)}).catch(()=>{}),{...h,body:E}}}))}function MRt(t){return t.scope!==null?`@${t.scope}-${t.name}-${t.scope.length}`:t.name}async function Rw(t,{cache:e,project:r,registry:s,headers:a,version:n,...c}){let{configuration:f}=r;s=ab(f,{ident:t,registry:s});let p=HRt(f,s),h=K.join(p,`${MRt(t)}.json`),E=null;if(!r.lockfileNeedsRefresh&&(E=await ORt(h),E)){if(typeof n<"u"&&typeof E.metadata.versions[n]<"u")return E.metadata;if(f.get("enableOfflineMode")){let C=structuredClone(E.metadata),S=new Set;if(e){for(let I of Object.keys(C.versions)){let R=q.makeLocator(t,`npm:${I}`),N=e.getLocatorMirrorPath(R);(!N||!le.existsSync(N))&&(delete C.versions[I],S.add(I))}let P=C["dist-tags"].latest;if(S.has(P)){let I=Object.keys(E.metadata.versions).sort(Bke.default.compare),R=I.indexOf(P);for(;S.has(I[R])&&R>=0;)R-=1;R>=0?C["dist-tags"].latest=I[R]:delete C["dist-tags"].latest}}return C}}return await LRt(h,t,{...c,configuration:f,cached:E,registry:s,headers:a,version:n})}var Dke=["name","dist.tarball","bin","scripts","os","cpu","libc","dependencies","dependenciesMeta","optionalDependencies","peerDependencies","peerDependenciesMeta","deprecated"];function _Rt(t){return{"dist-tags":t["dist-tags"],versions:Object.fromEntries(Object.entries(t.versions).map(([e,r])=>[e,(0,wke.default)(r,Dke)]))}}var URt=Nn.makeHash(...Dke).slice(0,6);function HRt(t,e){let r=jRt(t),s=new URL(e);return K.join(r,URt,s.hostname)}function jRt(t){return K.join(t.get("globalFolder"),"metadata/npm")}async function Ym(t,{configuration:e,headers:r,ident:s,authType:a,registry:n,...c}){n=ab(e,{ident:s,registry:n}),s&&s.scope&&typeof a>"u"&&(a=1);let f=await yN(n,{authType:a,configuration:e,ident:s});f&&(r={...r,authorization:f});try{return await An.get(t.charAt(0)==="/"?`${n}${t}`:t,{configuration:e,headers:r,...c})}catch(p){throw await lg(p,{registry:n,configuration:e,headers:r}),p}}async function qRt(t,e,{attemptedAs:r,configuration:s,headers:a,ident:n,authType:c=3,registry:f,otp:p,...h}){f=ab(s,{ident:n,registry:f});let E=await yN(f,{authType:c,configuration:s,ident:n});E&&(a={...a,authorization:E}),p&&(a={...a,...Tw(p)});try{return await An.post(f+t,e,{configuration:s,headers:a,...h})}catch(C){if(!EN(C)||p)throw await lg(C,{attemptedAs:r,registry:f,configuration:s,headers:a}),C;p=await wV(C,{configuration:s});let S={...a,...Tw(p)};try{return await An.post(`${f}${t}`,e,{configuration:s,headers:S,...h})}catch(P){throw await lg(P,{attemptedAs:r,registry:f,configuration:s,headers:a}),P}}}async function GRt(t,e,{attemptedAs:r,configuration:s,headers:a,ident:n,authType:c=3,registry:f,otp:p,...h}){f=ab(s,{ident:n,registry:f});let E=await yN(f,{authType:c,configuration:s,ident:n});E&&(a={...a,authorization:E}),p&&(a={...a,...Tw(p)});try{return await An.put(f+t,e,{configuration:s,headers:a,...h})}catch(C){if(!EN(C))throw await lg(C,{attemptedAs:r,registry:f,configuration:s,headers:a}),C;p=await wV(C,{configuration:s});let S={...a,...Tw(p)};try{return await An.put(`${f}${t}`,e,{configuration:s,headers:S,...h})}catch(P){throw await lg(P,{attemptedAs:r,registry:f,configuration:s,headers:a}),P}}}async function WRt(t,{attemptedAs:e,configuration:r,headers:s,ident:a,authType:n=3,registry:c,otp:f,...p}){c=ab(r,{ident:a,registry:c});let h=await yN(c,{authType:n,configuration:r,ident:a});h&&(s={...s,authorization:h}),f&&(s={...s,...Tw(f)});try{return await An.del(c+t,{configuration:r,headers:s,...p})}catch(E){if(!EN(E)||f)throw await lg(E,{attemptedAs:e,registry:c,configuration:r,headers:s}),E;f=await wV(E,{configuration:r});let C={...s,...Tw(f)};try{return await An.del(`${c}${t}`,{configuration:r,headers:C,...p})}catch(S){throw await lg(S,{attemptedAs:e,registry:c,configuration:r,headers:s}),S}}}function ab(t,{ident:e,registry:r}){if(typeof r>"u"&&e)return Qw(e.scope,{configuration:t});if(typeof r!="string")throw new Error("Assertion failed: The registry should be a string");return zc(r)}async function yN(t,{authType:e=2,configuration:r,ident:s}){let a=IV(t,{configuration:r,ident:s}),n=YRt(a,e);if(!n)return null;let c=await r.reduceHook(f=>f.getNpmAuthenticationHeader,void 0,t,{configuration:r,ident:s});if(c)return c;if(a.get("npmAuthToken"))return`Bearer ${a.get("npmAuthToken")}`;if(a.get("npmAuthIdent")){let f=a.get("npmAuthIdent");return f.includes(":")?`Basic ${Buffer.from(f).toString("base64")}`:`Basic ${f}`}if(n&&e!==1)throw new Yt(33,"No authentication configured for request");return null}function YRt(t,e){switch(e){case 2:return t.get("npmAlwaysAuth");case 1:case 3:return!0;case 0:return!1;default:throw new Error("Unreachable")}}async function VRt(t,e,{configuration:r}){if(typeof e>"u"||typeof e.authorization>"u")return"an anonymous user";try{return(await An.get(new URL(`${t}/-/whoami`).href,{configuration:r,headers:e,jsonResponse:!0})).username??"an unknown user"}catch{return"an unknown user"}}async function wV(t,{configuration:e}){let r=t.originalError?.response.headers["npm-notice"];if(r&&(await Ot.start({configuration:e,stdout:process.stdout,includeFooter:!1},async a=>{if(a.reportInfo(0,r.replace(/(https?:\/\/\S+)/g,he.pretty(e,"$1",he.Type.URL))),!process.env.YARN_IS_TEST_ENV){let n=r.match(/open (https?:\/\/\S+)/i);if(n&&As.openUrl){let{openNow:c}=await(0,CV.prompt)({type:"confirm",name:"openNow",message:"Do you want to try to open this url now?",required:!0,initial:!0,onCancel:()=>process.exit(130)});c&&(await As.openUrl(n[1])||(a.reportSeparator(),a.reportWarning(0,"We failed to automatically open the url; you'll have to open it yourself in your browser of choice.")))}}}),process.stdout.write(` +`)),process.env.YARN_IS_TEST_ENV)return process.env.YARN_INJECT_NPM_2FA_TOKEN||"";let{otp:s}=await(0,CV.prompt)({type:"password",name:"otp",message:"One-time password:",required:!0,onCancel:()=>process.exit(130)});return process.stdout.write(` +`),s}function EN(t){if(t.originalError?.name!=="HTTPError")return!1;try{return(t.originalError?.response.headers["www-authenticate"].split(/,\s*/).map(r=>r.toLowerCase())).includes("otp")}catch{return!1}}function Tw(t){return{"npm-otp":t}}var lb=class{supports(e,r){if(!e.reference.startsWith(si))return!1;let{selector:s,params:a}=q.parseRange(e.reference);return!(!bke.default.valid(s)||a===null||typeof a.__archiveUrl!="string")}getLocalPath(e,r){return null}async fetch(e,r){let s=r.checksums.get(e.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(e,s,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${q.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote server`),loader:()=>this.fetchFromNetwork(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:q.getIdentVendorPath(e),checksum:c}}async fetchFromNetwork(e,r){let{params:s}=q.parseRange(e.reference);if(s===null||typeof s.__archiveUrl!="string")throw new Error("Assertion failed: The archiveUrl querystring parameter should have been available");let a=await Ym(s.__archiveUrl,{customErrorMessage:Wm,configuration:r.project.configuration,ident:e});return await hs.convertToZip(a,{configuration:r.project.configuration,prefixPath:q.getIdentVendorPath(e),stripComponents:1})}};Ve();var ub=class{supportsDescriptor(e,r){return!(!e.range.startsWith(si)||!q.tryParseDescriptor(e.range.slice(si.length),!0))}supportsLocator(e,r){return!1}shouldPersistResolution(e,r){throw new Error("Unreachable")}bindDescriptor(e,r,s){return e}getResolutionDependencies(e,r){let s=r.project.configuration.normalizeDependency(q.parseDescriptor(e.range.slice(si.length),!0));return r.resolver.getResolutionDependencies(s,r)}async getCandidates(e,r,s){let a=s.project.configuration.normalizeDependency(q.parseDescriptor(e.range.slice(si.length),!0));return await s.resolver.getCandidates(a,r,s)}async getSatisfying(e,r,s,a){let n=a.project.configuration.normalizeDependency(q.parseDescriptor(e.range.slice(si.length),!0));return a.resolver.getSatisfying(n,r,s,a)}resolve(e,r){throw new Error("Unreachable")}};Ve();Ve();var Pke=et(fi());var ch=class t{supports(e,r){if(!e.reference.startsWith(si))return!1;let s=new URL(e.reference);return!(!Pke.default.valid(s.pathname)||s.searchParams.has("__archiveUrl"))}getLocalPath(e,r){return null}async fetch(e,r){let s=r.checksums.get(e.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(e,s,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${q.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote registry`),loader:()=>this.fetchFromNetwork(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:q.getIdentVendorPath(e),checksum:c}}async fetchFromNetwork(e,r){let s;try{s=await Ym(t.getLocatorUrl(e),{customErrorMessage:Wm,configuration:r.project.configuration,ident:e})}catch{s=await Ym(t.getLocatorUrl(e).replace(/%2f/g,"/"),{customErrorMessage:Wm,configuration:r.project.configuration,ident:e})}return await hs.convertToZip(s,{configuration:r.project.configuration,prefixPath:q.getIdentVendorPath(e),stripComponents:1})}static isConventionalTarballUrl(e,r,{configuration:s}){let a=Qw(e.scope,{configuration:s}),n=t.getLocatorUrl(e);return r=r.replace(/^https?:(\/\/(?:[^/]+\.)?npmjs.org(?:$|\/))/,"https:$1"),a=a.replace(/^https:\/\/registry\.npmjs\.org($|\/)/,"https://registry.yarnpkg.com$1"),r=r.replace(/^https:\/\/registry\.npmjs\.org($|\/)/,"https://registry.yarnpkg.com$1"),r===a+n||r===a+n.replace(/%2f/g,"/")}static getLocatorUrl(e){let r=Or.clean(e.reference.slice(si.length));if(r===null)throw new Yt(10,"The npm semver resolver got selected, but the version isn't semver");return`${mN(e)}/-/${e.name}-${r}.tgz`}};Ve();Ve();Ve();var BV=et(fi());var IN=q.makeIdent(null,"node-gyp"),KRt=/\b(node-gyp|prebuild-install)\b/,fb=class{supportsDescriptor(e,r){return e.range.startsWith(si)?!!Or.validRange(e.range.slice(si.length)):!1}supportsLocator(e,r){if(!e.reference.startsWith(si))return!1;let{selector:s}=q.parseRange(e.reference);return!!BV.default.valid(s)}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,s){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,s){let a=Or.validRange(e.range.slice(si.length));if(a===null)throw new Error(`Expected a valid range, got ${e.range.slice(si.length)}`);let n=await Rw(e,{cache:s.fetchOptions?.cache,project:s.project,version:BV.default.valid(a.raw)?a.raw:void 0}),c=je.mapAndFilter(Object.keys(n.versions),h=>{try{let E=new Or.SemVer(h);if(a.test(E))return E}catch{}return je.mapAndFilter.skip}),f=c.filter(h=>!n.versions[h.raw].deprecated),p=f.length>0?f:c;return p.sort((h,E)=>-h.compare(E)),p.map(h=>{let E=q.makeLocator(e,`${si}${h.raw}`),C=n.versions[h.raw].dist.tarball;return ch.isConventionalTarballUrl(E,C,{configuration:s.project.configuration})?E:q.bindLocator(E,{__archiveUrl:C})})}async getSatisfying(e,r,s,a){let n=Or.validRange(e.range.slice(si.length));if(n===null)throw new Error(`Expected a valid range, got ${e.range.slice(si.length)}`);return{locators:je.mapAndFilter(s,p=>{if(p.identHash!==e.identHash)return je.mapAndFilter.skip;let h=q.tryParseRange(p.reference,{requireProtocol:si});if(!h)return je.mapAndFilter.skip;let E=new Or.SemVer(h.selector);return n.test(E)?{locator:p,version:E}:je.mapAndFilter.skip}).sort((p,h)=>-p.version.compare(h.version)).map(({locator:p})=>p),sorted:!0}}async resolve(e,r){let{selector:s}=q.parseRange(e.reference),a=Or.clean(s);if(a===null)throw new Yt(10,"The npm semver resolver got selected, but the version isn't semver");let n=await Rw(e,{cache:r.fetchOptions?.cache,project:r.project,version:a});if(!Object.hasOwn(n,"versions"))throw new Yt(15,'Registry returned invalid data for - missing "versions" field');if(!Object.hasOwn(n.versions,a))throw new Yt(16,`Registry failed to return reference "${a}"`);let c=new Ht;if(c.load(n.versions[a]),!c.dependencies.has(IN.identHash)&&!c.peerDependencies.has(IN.identHash)){for(let f of c.scripts.values())if(f.match(KRt)){c.dependencies.set(IN.identHash,q.makeDescriptor(IN,"latest"));break}}return{...e,version:a,languageName:"node",linkType:"HARD",conditions:c.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(c.dependencies),peerDependencies:c.peerDependencies,dependenciesMeta:c.dependenciesMeta,peerDependenciesMeta:c.peerDependenciesMeta,bin:c.bin}}};Ve();Ve();var xke=et(fi());var Ab=class{supportsDescriptor(e,r){return!(!e.range.startsWith(si)||!Hp.test(e.range.slice(si.length)))}supportsLocator(e,r){return!1}shouldPersistResolution(e,r){throw new Error("Unreachable")}bindDescriptor(e,r,s){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,s){let a=e.range.slice(si.length),n=await Rw(e,{cache:s.fetchOptions?.cache,project:s.project});if(!Object.hasOwn(n,"dist-tags"))throw new Yt(15,'Registry returned invalid data - missing "dist-tags" field');let c=n["dist-tags"];if(!Object.hasOwn(c,a))throw new Yt(16,`Registry failed to return tag "${a}"`);let f=c[a],p=q.makeLocator(e,`${si}${f}`),h=n.versions[f].dist.tarball;return ch.isConventionalTarballUrl(p,h,{configuration:s.project.configuration})?[p]:[q.bindLocator(p,{__archiveUrl:h})]}async getSatisfying(e,r,s,a){let n=[];for(let c of s){if(c.identHash!==e.identHash)continue;let f=q.tryParseRange(c.reference,{requireProtocol:si});if(!(!f||!xke.default.valid(f.selector))){if(f.params?.__archiveUrl){let p=q.makeRange({protocol:si,selector:f.selector,source:null,params:null}),[h]=await a.resolver.getCandidates(q.makeDescriptor(e,p),r,a);if(c.reference!==h.reference)continue}n.push(c)}}return{locators:n,sorted:!1}}async resolve(e,r){throw new Error("Unreachable")}};var D1={};Vt(D1,{getGitHead:()=>_jt,getPublishAccess:()=>EOe,getReadmeContent:()=>IOe,makePublishBody:()=>Mjt});Ve();Ve();bt();var f7={};Vt(f7,{PackCommand:()=>Gw,default:()=>bOt,packUtils:()=>IA});Ve();Ve();Ve();bt();Wt();var IA={};Vt(IA,{genPackList:()=>qN,genPackStream:()=>u7,genPackageManifest:()=>oTe,hasPackScripts:()=>l7,prepareForPack:()=>c7});Ve();bt();var a7=et(Sa()),iTe=et(eTe()),sTe=ye("zlib"),dOt=["/package.json","/readme","/readme.*","/license","/license.*","/licence","/licence.*","/changelog","/changelog.*"],mOt=["/package.tgz",".github",".git",".hg","node_modules",".npmignore",".gitignore",".#*",".DS_Store"];async function l7(t){return!!(In.hasWorkspaceScript(t,"prepack")||In.hasWorkspaceScript(t,"postpack"))}async function c7(t,{report:e},r){await In.maybeExecuteWorkspaceLifecycleScript(t,"prepack",{report:e});try{let s=K.join(t.cwd,Ht.fileName);await le.existsPromise(s)&&await t.manifest.loadFile(s,{baseFs:le}),await r()}finally{await In.maybeExecuteWorkspaceLifecycleScript(t,"postpack",{report:e})}}async function u7(t,e){typeof e>"u"&&(e=await qN(t));let r=new Set;for(let n of t.manifest.publishConfig?.executableFiles??new Set)r.add(K.normalize(n));for(let n of t.manifest.bin.values())r.add(K.normalize(n));let s=iTe.default.pack();process.nextTick(async()=>{for(let n of e){let c=K.normalize(n),f=K.resolve(t.cwd,c),p=K.join("package",c),h=await le.lstatPromise(f),E={name:p,mtime:new Date(ui.SAFE_TIME*1e3)},C=r.has(c)?493:420,S,P,I=new Promise((N,U)=>{S=N,P=U}),R=N=>{N?P(N):S()};if(h.isFile()){let N;c==="package.json"?N=Buffer.from(JSON.stringify(await oTe(t),null,2)):N=await le.readFilePromise(f),s.entry({...E,mode:C,type:"file"},N,R)}else h.isSymbolicLink()?s.entry({...E,mode:C,type:"symlink",linkname:await le.readlinkPromise(f)},R):R(new Error(`Unsupported file type ${h.mode} for ${ue.fromPortablePath(c)}`));await I}s.finalize()});let a=(0,sTe.createGzip)();return s.pipe(a),a}async function oTe(t){let e=JSON.parse(JSON.stringify(t.manifest.raw));return await t.project.configuration.triggerHook(r=>r.beforeWorkspacePacking,t,e),e}async function qN(t){let e=t.project,r=e.configuration,s={accept:[],reject:[]};for(let C of mOt)s.reject.push(C);for(let C of dOt)s.accept.push(C);s.reject.push(r.get("rcFilename"));let a=C=>{if(C===null||!C.startsWith(`${t.cwd}/`))return;let S=K.relative(t.cwd,C),P=K.resolve(vt.root,S);s.reject.push(P)};a(K.resolve(e.cwd,Er.lockfile)),a(r.get("cacheFolder")),a(r.get("globalFolder")),a(r.get("installStatePath")),a(r.get("virtualFolder")),a(r.get("yarnPath")),await r.triggerHook(C=>C.populateYarnPaths,e,C=>{a(C)});for(let C of e.workspaces){let S=K.relative(t.cwd,C.cwd);S!==""&&!S.match(/^(\.\.)?\//)&&s.reject.push(`/${S}`)}let n={accept:[],reject:[]},c=t.manifest.publishConfig?.main??t.manifest.main,f=t.manifest.publishConfig?.module??t.manifest.module,p=t.manifest.publishConfig?.browser??t.manifest.browser,h=t.manifest.publishConfig?.bin??t.manifest.bin;c!=null&&n.accept.push(K.resolve(vt.root,c)),f!=null&&n.accept.push(K.resolve(vt.root,f)),typeof p=="string"&&n.accept.push(K.resolve(vt.root,p));for(let C of h.values())n.accept.push(K.resolve(vt.root,C));if(p instanceof Map)for(let[C,S]of p.entries())n.accept.push(K.resolve(vt.root,C)),typeof S=="string"&&n.accept.push(K.resolve(vt.root,S));let E=t.manifest.files!==null;if(E){n.reject.push("/*");for(let C of t.manifest.files)aTe(n.accept,C,{cwd:vt.root})}return await yOt(t.cwd,{hasExplicitFileList:E,globalList:s,ignoreList:n})}async function yOt(t,{hasExplicitFileList:e,globalList:r,ignoreList:s}){let a=[],n=new jf(t),c=[[vt.root,[s]]];for(;c.length>0;){let[f,p]=c.pop(),h=await n.lstatPromise(f);if(!rTe(f,{globalList:r,ignoreLists:h.isDirectory()?null:p}))if(h.isDirectory()){let E=await n.readdirPromise(f),C=!1,S=!1;if(!e||f!==vt.root)for(let R of E)C=C||R===".gitignore",S=S||R===".npmignore";let P=S?await tTe(n,f,".npmignore"):C?await tTe(n,f,".gitignore"):null,I=P!==null?[P].concat(p):p;rTe(f,{globalList:r,ignoreLists:p})&&(I=[...p,{accept:[],reject:["**/*"]}]);for(let R of E)c.push([K.resolve(f,R),I])}else(h.isFile()||h.isSymbolicLink())&&a.push(K.relative(vt.root,f))}return a.sort()}async function tTe(t,e,r){let s={accept:[],reject:[]},a=await t.readFilePromise(K.join(e,r),"utf8");for(let n of a.split(/\n/g))aTe(s.reject,n,{cwd:e});return s}function EOt(t,{cwd:e}){let r=t[0]==="!";return r&&(t=t.slice(1)),t.match(/\.{0,1}\//)&&(t=K.resolve(e,t)),r&&(t=`!${t}`),t}function aTe(t,e,{cwd:r}){let s=e.trim();s===""||s[0]==="#"||t.push(EOt(s,{cwd:r}))}function rTe(t,{globalList:e,ignoreLists:r}){let s=jN(t,e.accept);if(s!==0)return s===2;let a=jN(t,e.reject);if(a!==0)return a===1;if(r!==null)for(let n of r){let c=jN(t,n.accept);if(c!==0)return c===2;let f=jN(t,n.reject);if(f!==0)return f===1}return!1}function jN(t,e){let r=e,s=[];for(let a=0;a{await c7(a,{report:p},async()=>{p.reportJson({base:ue.fromPortablePath(a.cwd)});let h=await qN(a);for(let E of h)p.reportInfo(null,ue.fromPortablePath(E)),p.reportJson({location:ue.fromPortablePath(E)});if(!this.dryRun){let E=await u7(a,h);await le.mkdirPromise(K.dirname(c),{recursive:!0});let C=le.createWriteStream(c);E.pipe(C),await new Promise(S=>{C.on("finish",S)})}}),this.dryRun||(p.reportInfo(0,`Package archive generated in ${he.pretty(r,c,he.Type.PATH)}`),p.reportJson({output:ue.fromPortablePath(c)}))})).exitCode()}};function IOt(t,{workspace:e}){let r=t.replace("%s",COt(e)).replace("%v",wOt(e));return ue.toPortablePath(r)}function COt(t){return t.manifest.name!==null?q.slugifyIdent(t.manifest.name):"package"}function wOt(t){return t.manifest.version!==null?t.manifest.version:"unknown"}var BOt=["dependencies","devDependencies","peerDependencies"],vOt="workspace:",SOt=(t,e)=>{e.publishConfig&&(e.publishConfig.type&&(e.type=e.publishConfig.type),e.publishConfig.main&&(e.main=e.publishConfig.main),e.publishConfig.browser&&(e.browser=e.publishConfig.browser),e.publishConfig.module&&(e.module=e.publishConfig.module),e.publishConfig.exports&&(e.exports=e.publishConfig.exports),e.publishConfig.imports&&(e.imports=e.publishConfig.imports),e.publishConfig.bin&&(e.bin=e.publishConfig.bin));let r=t.project;for(let s of BOt)for(let a of t.manifest.getForScope(s).values()){let n=r.tryWorkspaceByDescriptor(a),c=q.parseRange(a.range);if(c.protocol===vOt)if(n===null){if(r.tryWorkspaceByIdent(a)===null)throw new Yt(21,`${q.prettyDescriptor(r.configuration,a)}: No local workspace found for this range`)}else{let f;q.areDescriptorsEqual(a,n.anchoredDescriptor)||c.selector==="*"?f=n.manifest.version??"0.0.0":c.selector==="~"||c.selector==="^"?f=`${c.selector}${n.manifest.version??"0.0.0"}`:f=c.selector;let p=s==="dependencies"?q.makeDescriptor(a,"unknown"):null,h=p!==null&&t.manifest.ensureDependencyMeta(p).optional?"optionalDependencies":s;e[h][q.stringifyIdent(a)]=f}}},DOt={hooks:{beforeWorkspacePacking:SOt},commands:[Gw]},bOt=DOt;var yOe=et(dTe());Ve();var dOe=et(gOe()),{env:Bt}=process,xjt="application/vnd.in-toto+json",kjt="https://in-toto.io/Statement/v0.1",Qjt="https://in-toto.io/Statement/v1",Tjt="https://slsa.dev/provenance/v0.2",Rjt="https://slsa.dev/provenance/v1",Fjt="https://github.com/actions/runner",Njt="https://slsa-framework.github.io/github-actions-buildtypes/workflow/v1",Ojt="https://github.com/npm/cli/gitlab",Ljt="v0alpha1",mOe=async(t,e)=>{let r;if(Bt.GITHUB_ACTIONS){if(!Bt.ACTIONS_ID_TOKEN_REQUEST_URL)throw new Yt(91,'Provenance generation in GitHub Actions requires "write" access to the "id-token" permission');let s=(Bt.GITHUB_WORKFLOW_REF||"").replace(`${Bt.GITHUB_REPOSITORY}/`,""),a=s.indexOf("@"),n=s.slice(0,a),c=s.slice(a+1);r={_type:Qjt,subject:t,predicateType:Rjt,predicate:{buildDefinition:{buildType:Njt,externalParameters:{workflow:{ref:c,repository:`${Bt.GITHUB_SERVER_URL}/${Bt.GITHUB_REPOSITORY}`,path:n}},internalParameters:{github:{event_name:Bt.GITHUB_EVENT_NAME,repository_id:Bt.GITHUB_REPOSITORY_ID,repository_owner_id:Bt.GITHUB_REPOSITORY_OWNER_ID}},resolvedDependencies:[{uri:`git+${Bt.GITHUB_SERVER_URL}/${Bt.GITHUB_REPOSITORY}@${Bt.GITHUB_REF}`,digest:{gitCommit:Bt.GITHUB_SHA}}]},runDetails:{builder:{id:`${Fjt}/${Bt.RUNNER_ENVIRONMENT}`},metadata:{invocationId:`${Bt.GITHUB_SERVER_URL}/${Bt.GITHUB_REPOSITORY}/actions/runs/${Bt.GITHUB_RUN_ID}/attempts/${Bt.GITHUB_RUN_ATTEMPT}`}}}}}else if(Bt.GITLAB_CI){if(!Bt.SIGSTORE_ID_TOKEN)throw new Yt(91,`Provenance generation in GitLab CI requires "SIGSTORE_ID_TOKEN" with "sigstore" audience to be present in "id_tokens". For more info see: +https://docs.gitlab.com/ee/ci/secrets/id_token_authentication.html`);r={_type:kjt,subject:t,predicateType:Tjt,predicate:{buildType:`${Ojt}/${Ljt}`,builder:{id:`${Bt.CI_PROJECT_URL}/-/runners/${Bt.CI_RUNNER_ID}`},invocation:{configSource:{uri:`git+${Bt.CI_PROJECT_URL}`,digest:{sha1:Bt.CI_COMMIT_SHA},entryPoint:Bt.CI_JOB_NAME},parameters:{CI:Bt.CI,CI_API_GRAPHQL_URL:Bt.CI_API_GRAPHQL_URL,CI_API_V4_URL:Bt.CI_API_V4_URL,CI_BUILD_BEFORE_SHA:Bt.CI_BUILD_BEFORE_SHA,CI_BUILD_ID:Bt.CI_BUILD_ID,CI_BUILD_NAME:Bt.CI_BUILD_NAME,CI_BUILD_REF:Bt.CI_BUILD_REF,CI_BUILD_REF_NAME:Bt.CI_BUILD_REF_NAME,CI_BUILD_REF_SLUG:Bt.CI_BUILD_REF_SLUG,CI_BUILD_STAGE:Bt.CI_BUILD_STAGE,CI_COMMIT_BEFORE_SHA:Bt.CI_COMMIT_BEFORE_SHA,CI_COMMIT_BRANCH:Bt.CI_COMMIT_BRANCH,CI_COMMIT_REF_NAME:Bt.CI_COMMIT_REF_NAME,CI_COMMIT_REF_PROTECTED:Bt.CI_COMMIT_REF_PROTECTED,CI_COMMIT_REF_SLUG:Bt.CI_COMMIT_REF_SLUG,CI_COMMIT_SHA:Bt.CI_COMMIT_SHA,CI_COMMIT_SHORT_SHA:Bt.CI_COMMIT_SHORT_SHA,CI_COMMIT_TIMESTAMP:Bt.CI_COMMIT_TIMESTAMP,CI_COMMIT_TITLE:Bt.CI_COMMIT_TITLE,CI_CONFIG_PATH:Bt.CI_CONFIG_PATH,CI_DEFAULT_BRANCH:Bt.CI_DEFAULT_BRANCH,CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX:Bt.CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX,CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX:Bt.CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX,CI_DEPENDENCY_PROXY_SERVER:Bt.CI_DEPENDENCY_PROXY_SERVER,CI_DEPENDENCY_PROXY_USER:Bt.CI_DEPENDENCY_PROXY_USER,CI_JOB_ID:Bt.CI_JOB_ID,CI_JOB_NAME:Bt.CI_JOB_NAME,CI_JOB_NAME_SLUG:Bt.CI_JOB_NAME_SLUG,CI_JOB_STAGE:Bt.CI_JOB_STAGE,CI_JOB_STARTED_AT:Bt.CI_JOB_STARTED_AT,CI_JOB_URL:Bt.CI_JOB_URL,CI_NODE_TOTAL:Bt.CI_NODE_TOTAL,CI_PAGES_DOMAIN:Bt.CI_PAGES_DOMAIN,CI_PAGES_URL:Bt.CI_PAGES_URL,CI_PIPELINE_CREATED_AT:Bt.CI_PIPELINE_CREATED_AT,CI_PIPELINE_ID:Bt.CI_PIPELINE_ID,CI_PIPELINE_IID:Bt.CI_PIPELINE_IID,CI_PIPELINE_SOURCE:Bt.CI_PIPELINE_SOURCE,CI_PIPELINE_URL:Bt.CI_PIPELINE_URL,CI_PROJECT_CLASSIFICATION_LABEL:Bt.CI_PROJECT_CLASSIFICATION_LABEL,CI_PROJECT_DESCRIPTION:Bt.CI_PROJECT_DESCRIPTION,CI_PROJECT_ID:Bt.CI_PROJECT_ID,CI_PROJECT_NAME:Bt.CI_PROJECT_NAME,CI_PROJECT_NAMESPACE:Bt.CI_PROJECT_NAMESPACE,CI_PROJECT_NAMESPACE_ID:Bt.CI_PROJECT_NAMESPACE_ID,CI_PROJECT_PATH:Bt.CI_PROJECT_PATH,CI_PROJECT_PATH_SLUG:Bt.CI_PROJECT_PATH_SLUG,CI_PROJECT_REPOSITORY_LANGUAGES:Bt.CI_PROJECT_REPOSITORY_LANGUAGES,CI_PROJECT_ROOT_NAMESPACE:Bt.CI_PROJECT_ROOT_NAMESPACE,CI_PROJECT_TITLE:Bt.CI_PROJECT_TITLE,CI_PROJECT_URL:Bt.CI_PROJECT_URL,CI_PROJECT_VISIBILITY:Bt.CI_PROJECT_VISIBILITY,CI_REGISTRY:Bt.CI_REGISTRY,CI_REGISTRY_IMAGE:Bt.CI_REGISTRY_IMAGE,CI_REGISTRY_USER:Bt.CI_REGISTRY_USER,CI_RUNNER_DESCRIPTION:Bt.CI_RUNNER_DESCRIPTION,CI_RUNNER_ID:Bt.CI_RUNNER_ID,CI_RUNNER_TAGS:Bt.CI_RUNNER_TAGS,CI_SERVER_HOST:Bt.CI_SERVER_HOST,CI_SERVER_NAME:Bt.CI_SERVER_NAME,CI_SERVER_PORT:Bt.CI_SERVER_PORT,CI_SERVER_PROTOCOL:Bt.CI_SERVER_PROTOCOL,CI_SERVER_REVISION:Bt.CI_SERVER_REVISION,CI_SERVER_SHELL_SSH_HOST:Bt.CI_SERVER_SHELL_SSH_HOST,CI_SERVER_SHELL_SSH_PORT:Bt.CI_SERVER_SHELL_SSH_PORT,CI_SERVER_URL:Bt.CI_SERVER_URL,CI_SERVER_VERSION:Bt.CI_SERVER_VERSION,CI_SERVER_VERSION_MAJOR:Bt.CI_SERVER_VERSION_MAJOR,CI_SERVER_VERSION_MINOR:Bt.CI_SERVER_VERSION_MINOR,CI_SERVER_VERSION_PATCH:Bt.CI_SERVER_VERSION_PATCH,CI_TEMPLATE_REGISTRY_HOST:Bt.CI_TEMPLATE_REGISTRY_HOST,GITLAB_CI:Bt.GITLAB_CI,GITLAB_FEATURES:Bt.GITLAB_FEATURES,GITLAB_USER_ID:Bt.GITLAB_USER_ID,GITLAB_USER_LOGIN:Bt.GITLAB_USER_LOGIN,RUNNER_GENERATE_ARTIFACTS_METADATA:Bt.RUNNER_GENERATE_ARTIFACTS_METADATA},environment:{name:Bt.CI_RUNNER_DESCRIPTION,architecture:Bt.CI_RUNNER_EXECUTABLE_ARCH,server:Bt.CI_SERVER_URL,project:Bt.CI_PROJECT_PATH,job:{id:Bt.CI_JOB_ID},pipeline:{id:Bt.CI_PIPELINE_ID,ref:Bt.CI_CONFIG_PATH}}},metadata:{buildInvocationId:`${Bt.CI_JOB_URL}`,completeness:{parameters:!0,environment:!0,materials:!1},reproducible:!1},materials:[{uri:`git+${Bt.CI_PROJECT_URL}`,digest:{sha1:Bt.CI_COMMIT_SHA}}]}}}else throw new Yt(91,"Provenance generation is only supported in GitHub Actions and GitLab CI");return dOe.attest(Buffer.from(JSON.stringify(r)),xjt,e)};async function Mjt(t,e,{access:r,tag:s,registry:a,gitHead:n,provenance:c}){let f=t.manifest.name,p=t.manifest.version,h=q.stringifyIdent(f),E=yOe.default.fromData(e,{algorithms:["sha1","sha512"]}),C=r??EOe(t,f),S=await IOe(t),P=await IA.genPackageManifest(t),I=`${h}-${p}.tgz`,R=new URL(`${zc(a)}/${h}/-/${I}`),N={[I]:{content_type:"application/octet-stream",data:e.toString("base64"),length:e.length}};if(c){let U={name:`pkg:npm/${h.replace(/^@/,"%40")}@${p}`,digest:{sha512:E.sha512[0].hexDigest()}},W=await mOe([U]),te=JSON.stringify(W);N[`${h}-${p}.sigstore`]={content_type:W.mediaType,data:te,length:te.length}}return{_id:h,_attachments:N,name:h,access:C,"dist-tags":{[s]:p},versions:{[p]:{...P,_id:`${h}@${p}`,name:h,version:p,gitHead:n,dist:{shasum:E.sha1[0].hexDigest(),integrity:E.sha512[0].toString(),tarball:R.toString()}}},readme:S}}async function _jt(t){try{let{stdout:e}=await Gr.execvp("git",["rev-parse","--revs-only","HEAD"],{cwd:t});return e.trim()===""?void 0:e.trim()}catch{return}}function EOe(t,e){let r=t.project.configuration;return t.manifest.publishConfig&&typeof t.manifest.publishConfig.access=="string"?t.manifest.publishConfig.access:r.get("npmPublishAccess")!==null?r.get("npmPublishAccess"):e.scope?"restricted":"public"}async function IOe(t){let e=ue.toPortablePath(`${t.cwd}/README.md`),r=t.manifest.name,a=`# ${q.stringifyIdent(r)} +`;try{a=await le.readFilePromise(e,"utf8")}catch(n){if(n.code==="ENOENT")return a;throw n}return a}var mz={npmAlwaysAuth:{description:"URL of the selected npm registry (note: npm enterprise isn't supported)",type:"BOOLEAN",default:!1},npmAuthIdent:{description:"Authentication identity for the npm registry (_auth in npm and yarn v1)",type:"SECRET",default:null},npmAuthToken:{description:"Authentication token for the npm registry (_authToken in npm and yarn v1)",type:"SECRET",default:null}},COe={npmAuditRegistry:{description:"Registry to query for audit reports",type:"STRING",default:null},npmPublishRegistry:{description:"Registry to push packages to",type:"STRING",default:null},npmRegistryServer:{description:"URL of the selected npm registry (note: npm enterprise isn't supported)",type:"STRING",default:"https://registry.yarnpkg.com"}},Ujt={configuration:{...mz,...COe,npmScopes:{description:"Settings per package scope",type:"MAP",valueDefinition:{description:"",type:"SHAPE",properties:{...mz,...COe}}},npmRegistries:{description:"Settings per registry",type:"MAP",normalizeKeys:zc,valueDefinition:{description:"",type:"SHAPE",properties:{...mz}}}},fetchers:[lb,ch],resolvers:[ub,fb,Ab]},Hjt=Ujt;var bz={};Vt(bz,{NpmAuditCommand:()=>P1,NpmInfoCommand:()=>x1,NpmLoginCommand:()=>k1,NpmLogoutCommand:()=>T1,NpmPublishCommand:()=>R1,NpmTagAddCommand:()=>N1,NpmTagListCommand:()=>F1,NpmTagRemoveCommand:()=>O1,NpmWhoamiCommand:()=>L1,default:()=>Kjt,npmAuditTypes:()=>fP,npmAuditUtils:()=>ML});Ve();Ve();Wt();var Bz=et(Sa());Ul();var fP={};Vt(fP,{Environment:()=>cP,Severity:()=>uP});var cP=(s=>(s.All="all",s.Production="production",s.Development="development",s))(cP||{}),uP=(n=>(n.Info="info",n.Low="low",n.Moderate="moderate",n.High="high",n.Critical="critical",n))(uP||{});var ML={};Vt(ML,{allSeverities:()=>b1,getPackages:()=>wz,getReportTree:()=>Iz,getSeverityInclusions:()=>Ez,getTopLevelDependencies:()=>Cz});Ve();var wOe=et(fi());var b1=["info","low","moderate","high","critical"];function Ez(t){if(typeof t>"u")return new Set(b1);let e=b1.indexOf(t),r=b1.slice(e);return new Set(r)}function Iz(t){let e={},r={children:e};for(let[s,a]of je.sortMap(Object.entries(t),n=>n[0]))for(let n of je.sortMap(a,c=>`${c.id}`))e[`${s}/${n.id}`]={value:he.tuple(he.Type.IDENT,q.parseIdent(s)),children:{ID:typeof n.id<"u"&&{label:"ID",value:he.tuple(he.Type.ID,n.id)},Issue:{label:"Issue",value:he.tuple(he.Type.NO_HINT,n.title)},URL:typeof n.url<"u"&&{label:"URL",value:he.tuple(he.Type.URL,n.url)},Severity:{label:"Severity",value:he.tuple(he.Type.NO_HINT,n.severity)},"Vulnerable Versions":{label:"Vulnerable Versions",value:he.tuple(he.Type.RANGE,n.vulnerable_versions)},"Tree Versions":{label:"Tree Versions",children:[...n.versions].sort(wOe.default.compare).map(c=>({value:he.tuple(he.Type.REFERENCE,c)}))},Dependents:{label:"Dependents",children:je.sortMap(n.dependents,c=>q.stringifyLocator(c)).map(c=>({value:he.tuple(he.Type.LOCATOR,c)}))}}};return r}function Cz(t,e,{all:r,environment:s}){let a=[],n=r?t.workspaces:[e],c=["all","production"].includes(s),f=["all","development"].includes(s);for(let p of n)for(let h of p.anchoredPackage.dependencies.values())(p.manifest.devDependencies.has(h.identHash)?!f:!c)||a.push({workspace:p,dependency:h});return a}function wz(t,e,{recursive:r}){let s=new Map,a=new Set,n=[],c=(f,p)=>{let h=t.storedResolutions.get(p.descriptorHash);if(typeof h>"u")throw new Error("Assertion failed: The resolution should have been registered");if(!a.has(h))a.add(h);else return;let E=t.storedPackages.get(h);if(typeof E>"u")throw new Error("Assertion failed: The package should have been registered");if(q.ensureDevirtualizedLocator(E).reference.startsWith("npm:")&&E.version!==null){let S=q.stringifyIdent(E),P=je.getMapWithDefault(s,S);je.getArrayWithDefault(P,E.version).push(f)}if(r)for(let S of E.dependencies.values())n.push([E,S])};for(let{workspace:f,dependency:p}of e)n.push([f.anchoredLocator,p]);for(;n.length>0;){let[f,p]=n.shift();c(f,p)}return s}var P1=class extends ut{constructor(){super(...arguments);this.all=ge.Boolean("-A,--all",!1,{description:"Audit dependencies from all workspaces"});this.recursive=ge.Boolean("-R,--recursive",!1,{description:"Audit transitive dependencies as well"});this.environment=ge.String("--environment","all",{description:"Which environments to cover",validator:Ao(cP)});this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.noDeprecations=ge.Boolean("--no-deprecations",!1,{description:"Don't warn about deprecated packages"});this.severity=ge.String("--severity","info",{description:"Minimal severity requested for packages to be displayed",validator:Ao(uP)});this.excludes=ge.Array("--exclude",[],{description:"Array of glob patterns of packages to exclude from audit"});this.ignores=ge.Array("--ignore",[],{description:"Array of glob patterns of advisory ID's to ignore in the audit report"})}static{this.paths=[["npm","audit"]]}static{this.usage=ot.Usage({description:"perform a vulnerability audit against the installed packages",details:` + This command checks for known security reports on the packages you use. The reports are by default extracted from the npm registry, and may or may not be relevant to your actual program (not all vulnerabilities affect all code paths). + + For consistency with our other commands the default is to only check the direct dependencies for the active workspace. To extend this search to all workspaces, use \`-A,--all\`. To extend this search to both direct and transitive dependencies, use \`-R,--recursive\`. + + Applying the \`--severity\` flag will limit the audit table to vulnerabilities of the corresponding severity and above. Valid values are ${b1.map(r=>`\`${r}\``).join(", ")}. + + If the \`--json\` flag is set, Yarn will print the output exactly as received from the registry. Regardless of this flag, the process will exit with a non-zero exit code if a report is found for the selected packages. + + If certain packages produce false positives for a particular environment, the \`--exclude\` flag can be used to exclude any number of packages from the audit. This can also be set in the configuration file with the \`npmAuditExcludePackages\` option. + + If particular advisories are needed to be ignored, the \`--ignore\` flag can be used with Advisory ID's to ignore any number of advisories in the audit report. This can also be set in the configuration file with the \`npmAuditIgnoreAdvisories\` option. + + To understand the dependency tree requiring vulnerable packages, check the raw report with the \`--json\` flag or use \`yarn why package\` to get more information as to who depends on them. + `,examples:[["Checks for known security issues with the installed packages. The output is a list of known issues.","yarn npm audit"],["Audit dependencies in all workspaces","yarn npm audit --all"],["Limit auditing to `dependencies` (excludes `devDependencies`)","yarn npm audit --environment production"],["Show audit report as valid JSON","yarn npm audit --json"],["Audit all direct and transitive dependencies","yarn npm audit --recursive"],["Output moderate (or more severe) vulnerabilities","yarn npm audit --severity moderate"],["Exclude certain packages","yarn npm audit --exclude package1 --exclude package2"],["Ignore specific advisories","yarn npm audit --ignore 1234567 --ignore 7654321"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState();let n=Cz(s,a,{all:this.all,environment:this.environment}),c=wz(s,n,{recursive:this.recursive}),f=Array.from(new Set([...r.get("npmAuditExcludePackages"),...this.excludes])),p=Object.create(null);for(let[N,U]of c)f.some(W=>Bz.default.isMatch(N,W))||(p[N]=[...U.keys()]);let h=pi.getAuditRegistry({configuration:r}),E,C=await uA.start({configuration:r,stdout:this.context.stdout},async()=>{let N=an.post("/-/npm/v1/security/advisories/bulk",p,{authType:an.AuthType.BEST_EFFORT,configuration:r,jsonResponse:!0,registry:h}),U=this.noDeprecations?[]:await Promise.all(Array.from(Object.entries(p),async([te,ie])=>{let Ae=await an.getPackageMetadata(q.parseIdent(te),{project:s});return je.mapAndFilter(ie,ce=>{let{deprecated:me}=Ae.versions[ce];return me?[te,ce,me]:je.mapAndFilter.skip})})),W=await N;for(let[te,ie,Ae]of U.flat(1))Object.hasOwn(W,te)&&W[te].some(ce=>Or.satisfiesWithPrereleases(ie,ce.vulnerable_versions))||(W[te]??=[],W[te].push({id:`${te} (deprecation)`,title:(typeof Ae=="string"?Ae:"").trim()||"This package has been deprecated.",severity:"moderate",vulnerable_versions:ie}));E=W});if(C.hasErrors())return C.exitCode();let S=Ez(this.severity),P=Array.from(new Set([...r.get("npmAuditIgnoreAdvisories"),...this.ignores])),I=Object.create(null);for(let[N,U]of Object.entries(E)){let W=U.filter(te=>!Bz.default.isMatch(`${te.id}`,P)&&S.has(te.severity));W.length>0&&(I[N]=W.map(te=>{let ie=c.get(N);if(typeof ie>"u")throw new Error("Assertion failed: Expected the registry to only return packages that were requested");let Ae=[...ie.keys()].filter(me=>Or.satisfiesWithPrereleases(me,te.vulnerable_versions)),ce=new Map;for(let me of Ae)for(let pe of ie.get(me))ce.set(pe.locatorHash,pe);return{...te,versions:Ae,dependents:[...ce.values()]}}))}let R=Object.keys(I).length>0;return R?(ks.emitTree(Iz(I),{configuration:r,json:this.json,stdout:this.context.stdout,separators:2}),1):(await Ot.start({configuration:r,includeFooter:!1,json:this.json,stdout:this.context.stdout},async N=>{N.reportInfo(1,"No audit suggestions")}),R?1:0)}};Ve();Ve();bt();Wt();var vz=et(fi()),Sz=ye("util"),x1=class extends ut{constructor(){super(...arguments);this.fields=ge.String("-f,--fields",{description:"A comma-separated list of manifest fields that should be displayed"});this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.packages=ge.Rest()}static{this.paths=[["npm","info"]]}static{this.usage=ot.Usage({category:"Npm-related commands",description:"show information about a package",details:"\n This command fetches information about a package from the npm registry and prints it in a tree format.\n\n The package does not have to be installed locally, but needs to have been published (in particular, local changes will be ignored even for workspaces).\n\n Append `@` to the package argument to provide information specific to the latest version that satisfies the range or to the corresponding tagged version. If the range is invalid or if there is no version satisfying the range, the command will print a warning and fall back to the latest version.\n\n If the `-f,--fields` option is set, it's a comma-separated list of fields which will be used to only display part of the package information.\n\n By default, this command won't return the `dist`, `readme`, and `users` fields, since they are often very long. To explicitly request those fields, explicitly list them with the `--fields` flag or request the output in JSON mode.\n ",examples:[["Show all available information about react (except the `dist`, `readme`, and `users` fields)","yarn npm info react"],["Show all available information about react as valid JSON (including the `dist`, `readme`, and `users` fields)","yarn npm info react --json"],["Show all available information about react@16.12.0","yarn npm info react@16.12.0"],["Show all available information about react@next","yarn npm info react@next"],["Show the description of react","yarn npm info react --fields description"],["Show all available versions of react","yarn npm info react --fields versions"],["Show the readme of react","yarn npm info react --fields readme"],["Show a few fields of react","yarn npm info react --fields homepage,repository"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s}=await Tt.find(r,this.context.cwd),a=typeof this.fields<"u"?new Set(["name",...this.fields.split(/\s*,\s*/)]):null,n=[],c=!1,f=await Ot.start({configuration:r,includeFooter:!1,json:this.json,stdout:this.context.stdout},async p=>{for(let h of this.packages){let E;if(h==="."){let ie=s.topLevelWorkspace;if(!ie.manifest.name)throw new nt(`Missing ${he.pretty(r,"name",he.Type.CODE)} field in ${ue.fromPortablePath(K.join(ie.cwd,Er.manifest))}`);E=q.makeDescriptor(ie.manifest.name,"unknown")}else E=q.parseDescriptor(h);let C=an.getIdentUrl(E),S=Dz(await an.get(C,{configuration:r,ident:E,jsonResponse:!0,customErrorMessage:an.customPackageError})),P=Object.keys(S.versions).sort(vz.default.compareLoose),R=S["dist-tags"].latest||P[P.length-1],N=Or.validRange(E.range);if(N){let ie=vz.default.maxSatisfying(P,N);ie!==null?R=ie:(p.reportWarning(0,`Unmet range ${q.prettyRange(r,E.range)}; falling back to the latest version`),c=!0)}else Object.hasOwn(S["dist-tags"],E.range)?R=S["dist-tags"][E.range]:E.range!=="unknown"&&(p.reportWarning(0,`Unknown tag ${q.prettyRange(r,E.range)}; falling back to the latest version`),c=!0);let U=S.versions[R],W={...S,...U,version:R,versions:P},te;if(a!==null){te={};for(let ie of a){let Ae=W[ie];if(typeof Ae<"u")te[ie]=Ae;else{p.reportWarning(1,`The ${he.pretty(r,ie,he.Type.CODE)} field doesn't exist inside ${q.prettyIdent(r,E)}'s information`),c=!0;continue}}}else this.json||(delete W.dist,delete W.readme,delete W.users),te=W;p.reportJson(te),this.json||n.push(te)}});Sz.inspect.styles.name="cyan";for(let p of n)(p!==n[0]||c)&&this.context.stdout.write(` +`),this.context.stdout.write(`${(0,Sz.inspect)(p,{depth:1/0,colors:!0,compact:!1})} +`);return f.exitCode()}};function Dz(t){if(Array.isArray(t)){let e=[];for(let r of t)r=Dz(r),r&&e.push(r);return e}else if(typeof t=="object"&&t!==null){let e={};for(let r of Object.keys(t)){if(r.startsWith("_"))continue;let s=Dz(t[r]);s&&(e[r]=s)}return e}else return t||null}Ve();Ve();Wt();var BOe=et(lS()),k1=class extends ut{constructor(){super(...arguments);this.scope=ge.String("-s,--scope",{description:"Login to the registry configured for a given scope"});this.publish=ge.Boolean("--publish",!1,{description:"Login to the publish registry"});this.alwaysAuth=ge.Boolean("--always-auth",{description:"Set the npmAlwaysAuth configuration"})}static{this.paths=[["npm","login"]]}static{this.usage=ot.Usage({category:"Npm-related commands",description:"store new login info to access the npm registry",details:"\n This command will ask you for your username, password, and 2FA One-Time-Password (when it applies). It will then modify your local configuration (in your home folder, never in the project itself) to reference the new tokens thus generated.\n\n Adding the `-s,--scope` flag will cause the authentication to be done against whatever registry is configured for the associated scope (see also `npmScopes`).\n\n Adding the `--publish` flag will cause the authentication to be done against the registry used when publishing the package (see also `publishConfig.registry` and `npmPublishRegistry`).\n ",examples:[["Login to the default registry","yarn npm login"],["Login to the registry linked to the @my-scope registry","yarn npm login --scope my-scope"],["Login to the publish registry for the current package","yarn npm login --publish"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s=await _L({configuration:r,cwd:this.context.cwd,publish:this.publish,scope:this.scope});return(await Ot.start({configuration:r,stdout:this.context.stdout,includeFooter:!1},async n=>{let c=await Gjt({configuration:r,registry:s,report:n,stdin:this.context.stdin,stdout:this.context.stdout}),f=await jjt(s,c,r);return await qjt(s,f,{alwaysAuth:this.alwaysAuth,scope:this.scope}),n.reportInfo(0,"Successfully logged in")})).exitCode()}};async function _L({scope:t,publish:e,configuration:r,cwd:s}){return t&&e?pi.getScopeRegistry(t,{configuration:r,type:pi.RegistryType.PUBLISH_REGISTRY}):t?pi.getScopeRegistry(t,{configuration:r}):e?pi.getPublishRegistry((await rC(r,s)).manifest,{configuration:r}):pi.getDefaultRegistry({configuration:r})}async function jjt(t,e,r){let s=`/-/user/org.couchdb.user:${encodeURIComponent(e.name)}`,a={_id:`org.couchdb.user:${e.name}`,name:e.name,password:e.password,type:"user",roles:[],date:new Date().toISOString()},n={attemptedAs:e.name,configuration:r,registry:t,jsonResponse:!0,authType:an.AuthType.NO_AUTH};try{return(await an.put(s,a,n)).token}catch(E){if(!(E.originalError?.name==="HTTPError"&&E.originalError?.response.statusCode===409))throw E}let c={...n,authType:an.AuthType.NO_AUTH,headers:{authorization:`Basic ${Buffer.from(`${e.name}:${e.password}`).toString("base64")}`}},f=await an.get(s,c);for(let[E,C]of Object.entries(f))(!a[E]||E==="roles")&&(a[E]=C);let p=`${s}/-rev/${a._rev}`;return(await an.put(p,a,c)).token}async function qjt(t,e,{alwaysAuth:r,scope:s}){let a=c=>f=>{let p=je.isIndexableObject(f)?f:{},h=p[c],E=je.isIndexableObject(h)?h:{};return{...p,[c]:{...E,...r!==void 0?{npmAlwaysAuth:r}:{},npmAuthToken:e}}},n=s?{npmScopes:a(s)}:{npmRegistries:a(t)};return await ze.updateHomeConfiguration(n)}async function Gjt({configuration:t,registry:e,report:r,stdin:s,stdout:a}){r.reportInfo(0,`Logging in to ${he.pretty(t,e,he.Type.URL)}`);let n=!1;if(e.match(/^https:\/\/npm\.pkg\.github\.com(\/|$)/)&&(r.reportInfo(0,"You seem to be using the GitHub Package Registry. Tokens must be generated with the 'repo', 'write:packages', and 'read:packages' permissions."),n=!0),r.reportSeparator(),t.env.YARN_IS_TEST_ENV)return{name:t.env.YARN_INJECT_NPM_USER||"",password:t.env.YARN_INJECT_NPM_PASSWORD||""};let c=await(0,BOe.prompt)([{type:"input",name:"name",message:"Username:",required:!0,onCancel:()=>process.exit(130),stdin:s,stdout:a},{type:"password",name:"password",message:n?"Token:":"Password:",required:!0,onCancel:()=>process.exit(130),stdin:s,stdout:a}]);return r.reportSeparator(),c}Ve();Ve();Wt();var Q1=new Set(["npmAuthIdent","npmAuthToken"]),T1=class extends ut{constructor(){super(...arguments);this.scope=ge.String("-s,--scope",{description:"Logout of the registry configured for a given scope"});this.publish=ge.Boolean("--publish",!1,{description:"Logout of the publish registry"});this.all=ge.Boolean("-A,--all",!1,{description:"Logout of all registries"})}static{this.paths=[["npm","logout"]]}static{this.usage=ot.Usage({category:"Npm-related commands",description:"logout of the npm registry",details:"\n This command will log you out by modifying your local configuration (in your home folder, never in the project itself) to delete all credentials linked to a registry.\n\n Adding the `-s,--scope` flag will cause the deletion to be done against whatever registry is configured for the associated scope (see also `npmScopes`).\n\n Adding the `--publish` flag will cause the deletion to be done against the registry used when publishing the package (see also `publishConfig.registry` and `npmPublishRegistry`).\n\n Adding the `-A,--all` flag will cause the deletion to be done against all registries and scopes.\n ",examples:[["Logout of the default registry","yarn npm logout"],["Logout of the @my-scope scope","yarn npm logout --scope my-scope"],["Logout of the publish registry for the current package","yarn npm logout --publish"],["Logout of all registries","yarn npm logout --all"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s=async()=>{let n=await _L({configuration:r,cwd:this.context.cwd,publish:this.publish,scope:this.scope}),c=await ze.find(this.context.cwd,this.context.plugins),f=q.makeIdent(this.scope??null,"pkg");return!pi.getAuthConfiguration(n,{configuration:c,ident:f}).get("npmAuthToken")};return(await Ot.start({configuration:r,stdout:this.context.stdout},async n=>{if(this.all&&(await Yjt(),n.reportInfo(0,"Successfully logged out from everything")),this.scope){await vOe("npmScopes",this.scope),await s()?n.reportInfo(0,`Successfully logged out from ${this.scope}`):n.reportWarning(0,"Scope authentication settings removed, but some other ones settings still apply to it");return}let c=await _L({configuration:r,cwd:this.context.cwd,publish:this.publish});await vOe("npmRegistries",c),await s()?n.reportInfo(0,`Successfully logged out from ${c}`):n.reportWarning(0,"Registry authentication settings removed, but some other ones settings still apply to it")})).exitCode()}};function Wjt(t,e){let r=t[e];if(!je.isIndexableObject(r))return!1;let s=new Set(Object.keys(r));if([...Q1].every(n=>!s.has(n)))return!1;for(let n of Q1)s.delete(n);if(s.size===0)return t[e]=void 0,!0;let a={...r};for(let n of Q1)delete a[n];return t[e]=a,!0}async function Yjt(){let t=e=>{let r=!1,s=je.isIndexableObject(e)?{...e}:{};s.npmAuthToken&&(delete s.npmAuthToken,r=!0);for(let a of Object.keys(s))Wjt(s,a)&&(r=!0);if(Object.keys(s).length!==0)return r?s:e};return await ze.updateHomeConfiguration({npmRegistries:t,npmScopes:t})}async function vOe(t,e){return await ze.updateHomeConfiguration({[t]:r=>{let s=je.isIndexableObject(r)?r:{};if(!Object.hasOwn(s,e))return r;let a=s[e],n=je.isIndexableObject(a)?a:{},c=new Set(Object.keys(n));if([...Q1].every(p=>!c.has(p)))return r;for(let p of Q1)c.delete(p);if(c.size===0)return Object.keys(s).length===1?void 0:{...s,[e]:void 0};let f={};for(let p of Q1)f[p]=void 0;return{...s,[e]:{...n,...f}}}})}Ve();Wt();var R1=class extends ut{constructor(){super(...arguments);this.access=ge.String("--access",{description:"The access for the published package (public or restricted)"});this.tag=ge.String("--tag","latest",{description:"The tag on the registry that the package should be attached to"});this.tolerateRepublish=ge.Boolean("--tolerate-republish",!1,{description:"Warn and exit when republishing an already existing version of a package"});this.otp=ge.String("--otp",{description:"The OTP token to use with the command"});this.provenance=ge.Boolean("--provenance",!1,{description:"Generate provenance for the package. Only available in GitHub Actions and GitLab CI. Can be set globally through the `npmPublishProvenance` setting or the `YARN_NPM_CONFIG_PROVENANCE` environment variable, or per-package through the `publishConfig.provenance` field in package.json."})}static{this.paths=[["npm","publish"]]}static{this.usage=ot.Usage({category:"Npm-related commands",description:"publish the active workspace to the npm registry",details:'\n This command will pack the active workspace into a fresh archive and upload it to the npm registry.\n\n The package will by default be attached to the `latest` tag on the registry, but this behavior can be overridden by using the `--tag` option.\n\n Note that for legacy reasons scoped packages are by default published with an access set to `restricted` (aka "private packages"). This requires you to register for a paid npm plan. In case you simply wish to publish a public scoped package to the registry (for free), just add the `--access public` flag. This behavior can be enabled by default through the `npmPublishAccess` settings.\n ',examples:[["Publish the active workspace","yarn npm publish"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);if(a.manifest.private)throw new nt("Private workspaces cannot be published");if(a.manifest.name===null||a.manifest.version===null)throw new nt("Workspaces must have valid names and versions to be published on an external registry");await s.restoreInstallState();let n=a.manifest.name,c=a.manifest.version,f=pi.getPublishRegistry(a.manifest,{configuration:r});return(await Ot.start({configuration:r,stdout:this.context.stdout},async h=>{if(this.tolerateRepublish)try{let E=await an.get(an.getIdentUrl(n),{configuration:r,registry:f,ident:n,jsonResponse:!0});if(!Object.hasOwn(E,"versions"))throw new Yt(15,'Registry returned invalid data for - missing "versions" field');if(Object.hasOwn(E.versions,c)){h.reportWarning(0,`Registry already knows about version ${c}; skipping.`);return}}catch(E){if(E.originalError?.response?.statusCode!==404)throw E}await In.maybeExecuteWorkspaceLifecycleScript(a,"prepublish",{report:h}),await IA.prepareForPack(a,{report:h},async()=>{let E=await IA.genPackList(a);for(let N of E)h.reportInfo(null,N);let C=await IA.genPackStream(a,E),S=await je.bufferStream(C),P=await D1.getGitHead(a.cwd),I=!1;a.manifest.publishConfig&&"provenance"in a.manifest.publishConfig?(I=!!a.manifest.publishConfig.provenance,I?h.reportInfo(null,"Generating provenance statement because `publishConfig.provenance` field is set."):h.reportInfo(null,"Skipping provenance statement because `publishConfig.provenance` field is set to false.")):this.provenance?(I=!0,h.reportInfo(null,"Generating provenance statement because `--provenance` flag is set.")):r.get("npmPublishProvenance")&&(I=!0,h.reportInfo(null,"Generating provenance statement because `npmPublishProvenance` setting is set."));let R=await D1.makePublishBody(a,S,{access:this.access,tag:this.tag,registry:f,gitHead:P,provenance:I});await an.put(an.getIdentUrl(n),R,{configuration:r,registry:f,ident:n,otp:this.otp,jsonResponse:!0})}),h.reportInfo(0,"Package archive published")})).exitCode()}};Ve();Wt();var SOe=et(fi());Ve();bt();Wt();var F1=class extends ut{constructor(){super(...arguments);this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.package=ge.String({required:!1})}static{this.paths=[["npm","tag","list"]]}static{this.usage=ot.Usage({category:"Npm-related commands",description:"list all dist-tags of a package",details:` + This command will list all tags of a package from the npm registry. + + If the package is not specified, Yarn will default to the current workspace. + `,examples:[["List all tags of package `my-pkg`","yarn npm tag list my-pkg"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n;if(typeof this.package<"u")n=q.parseIdent(this.package);else{if(!a)throw new ar(s.cwd,this.context.cwd);if(!a.manifest.name)throw new nt(`Missing 'name' field in ${ue.fromPortablePath(K.join(a.cwd,Er.manifest))}`);n=a.manifest.name}let c=await AP(n,r),p={children:je.sortMap(Object.entries(c),([h])=>h).map(([h,E])=>({value:he.tuple(he.Type.RESOLUTION,{descriptor:q.makeDescriptor(n,h),locator:q.makeLocator(n,E)})}))};return ks.emitTree(p,{configuration:r,json:this.json,stdout:this.context.stdout})}};async function AP(t,e){let r=`/-/package${an.getIdentUrl(t)}/dist-tags`;return an.get(r,{configuration:e,ident:t,jsonResponse:!0,customErrorMessage:an.customPackageError})}var N1=class extends ut{constructor(){super(...arguments);this.package=ge.String();this.tag=ge.String()}static{this.paths=[["npm","tag","add"]]}static{this.usage=ot.Usage({category:"Npm-related commands",description:"add a tag for a specific version of a package",details:` + This command will add a tag to the npm registry for a specific version of a package. If the tag already exists, it will be overwritten. + `,examples:[["Add a `beta` tag for version `2.3.4-beta.4` of package `my-pkg`","yarn npm tag add my-pkg@2.3.4-beta.4 beta"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);let n=q.parseDescriptor(this.package,!0),c=n.range;if(!SOe.default.valid(c))throw new nt(`The range ${he.pretty(r,n.range,he.Type.RANGE)} must be a valid semver version`);let f=pi.getPublishRegistry(a.manifest,{configuration:r}),p=he.pretty(r,n,he.Type.IDENT),h=he.pretty(r,c,he.Type.RANGE),E=he.pretty(r,this.tag,he.Type.CODE);return(await Ot.start({configuration:r,stdout:this.context.stdout},async S=>{let P=await AP(n,r);Object.hasOwn(P,this.tag)&&P[this.tag]===c&&S.reportWarning(0,`Tag ${E} is already set to version ${h}`);let I=`/-/package${an.getIdentUrl(n)}/dist-tags/${encodeURIComponent(this.tag)}`;await an.put(I,c,{configuration:r,registry:f,ident:n,jsonRequest:!0,jsonResponse:!0}),S.reportInfo(0,`Tag ${E} added to version ${h} of package ${p}`)})).exitCode()}};Ve();Wt();var O1=class extends ut{constructor(){super(...arguments);this.package=ge.String();this.tag=ge.String()}static{this.paths=[["npm","tag","remove"]]}static{this.usage=ot.Usage({category:"Npm-related commands",description:"remove a tag from a package",details:` + This command will remove a tag from a package from the npm registry. + `,examples:[["Remove the `beta` tag from package `my-pkg`","yarn npm tag remove my-pkg beta"]]})}async execute(){if(this.tag==="latest")throw new nt("The 'latest' tag cannot be removed.");let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);let n=q.parseIdent(this.package),c=pi.getPublishRegistry(a.manifest,{configuration:r}),f=he.pretty(r,this.tag,he.Type.CODE),p=he.pretty(r,n,he.Type.IDENT),h=await AP(n,r);if(!Object.hasOwn(h,this.tag))throw new nt(`${f} is not a tag of package ${p}`);return(await Ot.start({configuration:r,stdout:this.context.stdout},async C=>{let S=`/-/package${an.getIdentUrl(n)}/dist-tags/${encodeURIComponent(this.tag)}`;await an.del(S,{configuration:r,registry:c,ident:n,jsonResponse:!0}),C.reportInfo(0,`Tag ${f} removed from package ${p}`)})).exitCode()}};Ve();Ve();Wt();var L1=class extends ut{constructor(){super(...arguments);this.scope=ge.String("-s,--scope",{description:"Print username for the registry configured for a given scope"});this.publish=ge.Boolean("--publish",!1,{description:"Print username for the publish registry"})}static{this.paths=[["npm","whoami"]]}static{this.usage=ot.Usage({category:"Npm-related commands",description:"display the name of the authenticated user",details:"\n Print the username associated with the current authentication settings to the standard output.\n\n When using `-s,--scope`, the username printed will be the one that matches the authentication settings of the registry associated with the given scope (those settings can be overriden using the `npmRegistries` map, and the registry associated with the scope is configured via the `npmScopes` map).\n\n When using `--publish`, the registry we'll select will by default be the one used when publishing packages (`publishConfig.registry` or `npmPublishRegistry` if available, otherwise we'll fallback to the regular `npmRegistryServer`).\n ",examples:[["Print username for the default registry","yarn npm whoami"],["Print username for the registry on a given scope","yarn npm whoami --scope company"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s;return this.scope&&this.publish?s=pi.getScopeRegistry(this.scope,{configuration:r,type:pi.RegistryType.PUBLISH_REGISTRY}):this.scope?s=pi.getScopeRegistry(this.scope,{configuration:r}):this.publish?s=pi.getPublishRegistry((await rC(r,this.context.cwd)).manifest,{configuration:r}):s=pi.getDefaultRegistry({configuration:r}),(await Ot.start({configuration:r,stdout:this.context.stdout},async n=>{let c;try{c=await an.get("/-/whoami",{configuration:r,registry:s,authType:an.AuthType.ALWAYS_AUTH,jsonResponse:!0,ident:this.scope?q.makeIdent(this.scope,""):void 0})}catch(f){if(f.response?.statusCode===401||f.response?.statusCode===403){n.reportError(41,"Authentication failed - your credentials may have expired");return}else throw f}n.reportInfo(0,c.username)})).exitCode()}};var Vjt={configuration:{npmPublishAccess:{description:"Default access of the published packages",type:"STRING",default:null},npmPublishProvenance:{description:"Whether to generate provenance for the published packages",type:"BOOLEAN",default:!1},npmAuditExcludePackages:{description:"Array of glob patterns of packages to exclude from npm audit",type:"STRING",default:[],isArray:!0},npmAuditIgnoreAdvisories:{description:"Array of glob patterns of advisory IDs to exclude from npm audit",type:"STRING",default:[],isArray:!0}},commands:[P1,x1,k1,T1,R1,N1,F1,O1,L1]},Kjt=Vjt;var Fz={};Vt(Fz,{PatchCommand:()=>q1,PatchCommitCommand:()=>j1,PatchFetcher:()=>mP,PatchResolver:()=>yP,default:()=>A6t,patchUtils:()=>dy});Ve();Ve();bt();rA();var dy={};Vt(dy,{applyPatchFile:()=>HL,diffFolders:()=>Tz,ensureUnpatchedDescriptor:()=>Pz,ensureUnpatchedLocator:()=>qL,extractPackageToDisk:()=>Qz,extractPatchFlags:()=>TOe,isParentRequired:()=>kz,isPatchDescriptor:()=>jL,isPatchLocator:()=>Fg,loadPatchFiles:()=>dP,makeDescriptor:()=>WL,makeLocator:()=>xz,makePatchHash:()=>Rz,parseDescriptor:()=>hP,parseLocator:()=>gP,parsePatchFile:()=>pP,unpatchDescriptor:()=>c6t,unpatchLocator:()=>u6t});Ve();bt();Ve();bt();var Jjt=/^@@ -(\d+)(,(\d+))? \+(\d+)(,(\d+))? @@.*/;function M1(t){return K.relative(vt.root,K.resolve(vt.root,ue.toPortablePath(t)))}function zjt(t){let e=t.trim().match(Jjt);if(!e)throw new Error(`Bad header line: '${t}'`);return{original:{start:Math.max(Number(e[1]),1),length:Number(e[3]||1)},patched:{start:Math.max(Number(e[4]),1),length:Number(e[6]||1)}}}var Zjt=420,Xjt=493;var DOe=()=>({semverExclusivity:null,diffLineFromPath:null,diffLineToPath:null,oldMode:null,newMode:null,deletedFileMode:null,newFileMode:null,renameFrom:null,renameTo:null,beforeHash:null,afterHash:null,fromPath:null,toPath:null,hunks:null}),$jt=t=>({header:zjt(t),parts:[]}),e6t={"@":"header","-":"deletion","+":"insertion"," ":"context","\\":"pragma",undefined:"context"};function t6t(t){let e=[],r=DOe(),s="parsing header",a=null,n=null;function c(){a&&(n&&(a.parts.push(n),n=null),r.hunks.push(a),a=null)}function f(){c(),e.push(r),r=DOe()}for(let p=0;p0?"patch":"mode change",W=null;switch(U){case"rename":{if(!E||!C)throw new Error("Bad parser state: rename from & to not given");e.push({type:"rename",semverExclusivity:s,fromPath:M1(E),toPath:M1(C)}),W=C}break;case"file deletion":{let te=a||I;if(!te)throw new Error("Bad parse state: no path given for file deletion");e.push({type:"file deletion",semverExclusivity:s,hunk:N&&N[0]||null,path:M1(te),mode:UL(p),hash:S})}break;case"file creation":{let te=n||R;if(!te)throw new Error("Bad parse state: no path given for file creation");e.push({type:"file creation",semverExclusivity:s,hunk:N&&N[0]||null,path:M1(te),mode:UL(h),hash:P})}break;case"patch":case"mode change":W=R||n;break;default:je.assertNever(U);break}W&&c&&f&&c!==f&&e.push({type:"mode change",semverExclusivity:s,path:M1(W),oldMode:UL(c),newMode:UL(f)}),W&&N&&N.length&&e.push({type:"patch",semverExclusivity:s,path:M1(W),hunks:N,beforeHash:S,afterHash:P})}if(e.length===0)throw new Error("Unable to parse patch file: No changes found. Make sure the patch is a valid UTF8 encoded string");return e}function UL(t){let e=parseInt(t,8)&511;if(e!==Zjt&&e!==Xjt)throw new Error(`Unexpected file mode string: ${t}`);return e}function pP(t){let e=t.split(/\n/g);return e[e.length-1]===""&&e.pop(),r6t(t6t(e))}function n6t(t){let e=0,r=0;for(let{type:s,lines:a}of t.parts)switch(s){case"context":r+=a.length,e+=a.length;break;case"deletion":e+=a.length;break;case"insertion":r+=a.length;break;default:je.assertNever(s);break}if(e!==t.header.original.length||r!==t.header.patched.length){let s=a=>a<0?a:`+${a}`;throw new Error(`hunk header integrity check failed (expected @@ ${s(t.header.original.length)} ${s(t.header.patched.length)} @@, got @@ ${s(e)} ${s(r)} @@)`)}}Ve();bt();var _1=class extends Error{constructor(r,s){super(`Cannot apply hunk #${r+1}`);this.hunk=s}};async function U1(t,e,r){let s=await t.lstatPromise(e),a=await r();typeof a<"u"&&(e=a),await t.lutimesPromise(e,s.atime,s.mtime)}async function HL(t,{baseFs:e=new Yn,dryRun:r=!1,version:s=null}={}){for(let a of t)if(!(a.semverExclusivity!==null&&s!==null&&!Or.satisfiesWithPrereleases(s,a.semverExclusivity)))switch(a.type){case"file deletion":if(r){if(!e.existsSync(a.path))throw new Error(`Trying to delete a file that doesn't exist: ${a.path}`)}else await U1(e,K.dirname(a.path),async()=>{await e.unlinkPromise(a.path)});break;case"rename":if(r){if(!e.existsSync(a.fromPath))throw new Error(`Trying to move a file that doesn't exist: ${a.fromPath}`)}else await U1(e,K.dirname(a.fromPath),async()=>{await U1(e,K.dirname(a.toPath),async()=>{await U1(e,a.fromPath,async()=>(await e.movePromise(a.fromPath,a.toPath),a.toPath))})});break;case"file creation":if(r){if(e.existsSync(a.path))throw new Error(`Trying to create a file that already exists: ${a.path}`)}else{let n=a.hunk?a.hunk.parts[0].lines.join(` +`)+(a.hunk.parts[0].noNewlineAtEndOfFile?"":` +`):"";await e.mkdirpPromise(K.dirname(a.path),{chmod:493,utimes:[ui.SAFE_TIME,ui.SAFE_TIME]}),await e.writeFilePromise(a.path,n,{mode:a.mode}),await e.utimesPromise(a.path,ui.SAFE_TIME,ui.SAFE_TIME)}break;case"patch":await U1(e,a.path,async()=>{await o6t(a,{baseFs:e,dryRun:r})});break;case"mode change":{let c=(await e.statPromise(a.path)).mode;if(bOe(a.newMode)!==bOe(c))continue;await U1(e,a.path,async()=>{await e.chmodPromise(a.path,a.newMode)})}break;default:je.assertNever(a);break}}function bOe(t){return(t&64)>0}function POe(t){return t.replace(/\s+$/,"")}function s6t(t,e){return POe(t)===POe(e)}async function o6t({hunks:t,path:e},{baseFs:r,dryRun:s=!1}){let a=await r.statSync(e).mode,c=(await r.readFileSync(e,"utf8")).split(/\n/),f=[],p=0,h=0;for(let C of t){let S=Math.max(h,C.header.patched.start+p),P=Math.max(0,S-h),I=Math.max(0,c.length-S-C.header.original.length),R=Math.max(P,I),N=0,U=0,W=null;for(;N<=R;){if(N<=P&&(U=S-N,W=xOe(C,c,U),W!==null)){N=-N;break}if(N<=I&&(U=S+N,W=xOe(C,c,U),W!==null))break;N+=1}if(W===null)throw new _1(t.indexOf(C),C);f.push(W),p+=N,h=U+C.header.original.length}if(s)return;let E=0;for(let C of f)for(let S of C)switch(S.type){case"splice":{let P=S.index+E;c.splice(P,S.numToDelete,...S.linesToInsert),E+=S.linesToInsert.length-S.numToDelete}break;case"pop":c.pop();break;case"push":c.push(S.line);break;default:je.assertNever(S);break}await r.writeFilePromise(e,c.join(` +`),{mode:a})}function xOe(t,e,r){let s=[];for(let a of t.parts)switch(a.type){case"context":case"deletion":{for(let n of a.lines){let c=e[r];if(c==null||!s6t(c,n))return null;r+=1}a.type==="deletion"&&(s.push({type:"splice",index:r-a.lines.length,numToDelete:a.lines.length,linesToInsert:[]}),a.noNewlineAtEndOfFile&&s.push({type:"push",line:""}))}break;case"insertion":s.push({type:"splice",index:r,numToDelete:0,linesToInsert:a.lines}),a.noNewlineAtEndOfFile&&s.push({type:"pop"});break;default:je.assertNever(a.type);break}return s}var l6t=/^builtin<([^>]+)>$/;function H1(t,e){let{protocol:r,source:s,selector:a,params:n}=q.parseRange(t);if(r!=="patch:")throw new Error("Invalid patch range");if(s===null)throw new Error("Patch locators must explicitly define their source");let c=a?a.split(/&/).map(E=>ue.toPortablePath(E)):[],f=n&&typeof n.locator=="string"?q.parseLocator(n.locator):null,p=n&&typeof n.version=="string"?n.version:null,h=e(s);return{parentLocator:f,sourceItem:h,patchPaths:c,sourceVersion:p}}function jL(t){return t.range.startsWith("patch:")}function Fg(t){return t.reference.startsWith("patch:")}function hP(t){let{sourceItem:e,...r}=H1(t.range,q.parseDescriptor);return{...r,sourceDescriptor:e}}function gP(t){let{sourceItem:e,...r}=H1(t.reference,q.parseLocator);return{...r,sourceLocator:e}}function c6t(t){let{sourceItem:e}=H1(t.range,q.parseDescriptor);return e}function u6t(t){let{sourceItem:e}=H1(t.reference,q.parseLocator);return e}function Pz(t){if(!jL(t))return t;let{sourceItem:e}=H1(t.range,q.parseDescriptor);return e}function qL(t){if(!Fg(t))return t;let{sourceItem:e}=H1(t.reference,q.parseLocator);return e}function kOe({parentLocator:t,sourceItem:e,patchPaths:r,sourceVersion:s,patchHash:a},n){let c=t!==null?{locator:q.stringifyLocator(t)}:{},f=typeof s<"u"?{version:s}:{},p=typeof a<"u"?{hash:a}:{};return q.makeRange({protocol:"patch:",source:n(e),selector:r.join("&"),params:{...f,...p,...c}})}function WL(t,{parentLocator:e,sourceDescriptor:r,patchPaths:s}){return q.makeDescriptor(t,kOe({parentLocator:e,sourceItem:r,patchPaths:s},q.stringifyDescriptor))}function xz(t,{parentLocator:e,sourcePackage:r,patchPaths:s,patchHash:a}){return q.makeLocator(t,kOe({parentLocator:e,sourceItem:r,sourceVersion:r.version,patchPaths:s,patchHash:a},q.stringifyLocator))}function QOe({onAbsolute:t,onRelative:e,onProject:r,onBuiltin:s},a){let n=a.lastIndexOf("!");n!==-1&&(a=a.slice(n+1));let c=a.match(l6t);return c!==null?s(c[1]):a.startsWith("~/")?r(a.slice(2)):K.isAbsolute(a)?t(a):e(a)}function TOe(t){let e=t.lastIndexOf("!");return{optional:(e!==-1?new Set(t.slice(0,e).split(/!/)):new Set).has("optional")}}function kz(t){return QOe({onAbsolute:()=>!1,onRelative:()=>!0,onProject:()=>!1,onBuiltin:()=>!1},t)}async function dP(t,e,r){let s=t!==null?await r.fetcher.fetch(t,r):null,a=s&&s.localPath?{packageFs:new Sn(vt.root),prefixPath:K.relative(vt.root,s.localPath)}:s;s&&s!==a&&s.releaseFs&&s.releaseFs();let n=await je.releaseAfterUseAsync(async()=>await Promise.all(e.map(async c=>{let f=TOe(c),p=await QOe({onAbsolute:async h=>await le.readFilePromise(h,"utf8"),onRelative:async h=>{if(a===null)throw new Error("Assertion failed: The parent locator should have been fetched");return await a.packageFs.readFilePromise(K.join(a.prefixPath,h),"utf8")},onProject:async h=>await le.readFilePromise(K.join(r.project.cwd,h),"utf8"),onBuiltin:async h=>await r.project.configuration.firstHook(E=>E.getBuiltinPatch,r.project,h)},c);return{...f,source:p}})));for(let c of n)typeof c.source=="string"&&(c.source=c.source.replace(/\r\n?/g,` +`));return n}async function Qz(t,{cache:e,project:r}){let s=r.storedPackages.get(t.locatorHash);if(typeof s>"u")throw new Error("Assertion failed: Expected the package to be registered");let a=qL(t),n=r.storedChecksums,c=new Wi,f=await le.mktempPromise(),p=K.join(f,"source"),h=K.join(f,"user"),E=K.join(f,".yarn-patch.json"),C=r.configuration.makeFetcher(),S=[];try{let P,I;if(t.locatorHash===a.locatorHash){let R=await C.fetch(t,{cache:e,project:r,fetcher:C,checksums:n,report:c});S.push(()=>R.releaseFs?.()),P=R,I=R}else P=await C.fetch(t,{cache:e,project:r,fetcher:C,checksums:n,report:c}),S.push(()=>P.releaseFs?.()),I=await C.fetch(t,{cache:e,project:r,fetcher:C,checksums:n,report:c}),S.push(()=>I.releaseFs?.());await Promise.all([le.copyPromise(p,P.prefixPath,{baseFs:P.packageFs}),le.copyPromise(h,I.prefixPath,{baseFs:I.packageFs}),le.writeJsonPromise(E,{locator:q.stringifyLocator(t),version:s.version})])}finally{for(let P of S)P()}return le.detachTemp(f),h}async function Tz(t,e){let r=ue.fromPortablePath(t).replace(/\\/g,"/"),s=ue.fromPortablePath(e).replace(/\\/g,"/"),{stdout:a,stderr:n}=await Gr.execvp("git",["-c","core.safecrlf=false","diff","--src-prefix=a/","--dst-prefix=b/","--ignore-cr-at-eol","--full-index","--no-index","--no-renames","--text",r,s],{cwd:ue.toPortablePath(process.cwd()),env:{...process.env,GIT_CONFIG_NOSYSTEM:"1",HOME:"",XDG_CONFIG_HOME:"",USERPROFILE:""}});if(n.length>0)throw new Error(`Unable to diff directories. Make sure you have a recent version of 'git' available in PATH. +The following error was reported by 'git': +${n}`);let c=r.startsWith("/")?f=>f.slice(1):f=>f;return a.replace(new RegExp(`(a|b)(${je.escapeRegExp(`/${c(r)}/`)})`,"g"),"$1/").replace(new RegExp(`(a|b)${je.escapeRegExp(`/${c(s)}/`)}`,"g"),"$1/").replace(new RegExp(je.escapeRegExp(`${r}/`),"g"),"").replace(new RegExp(je.escapeRegExp(`${s}/`),"g"),"")}function Rz(t,e){let r=[];for(let{source:s}of t){if(s===null)continue;let a=pP(s);for(let n of a){let{semverExclusivity:c,...f}=n;c!==null&&e!==null&&!Or.satisfiesWithPrereleases(e,c)||r.push(JSON.stringify(f))}}return Nn.makeHash(`${3}`,...r).slice(0,6)}Ve();function ROe(t,{configuration:e,report:r}){for(let s of t.parts)for(let a of s.lines)switch(s.type){case"context":r.reportInfo(null,` ${he.pretty(e,a,"grey")}`);break;case"deletion":r.reportError(28,`- ${he.pretty(e,a,he.Type.REMOVED)}`);break;case"insertion":r.reportError(28,`+ ${he.pretty(e,a,he.Type.ADDED)}`);break;default:je.assertNever(s.type)}}var mP=class{supports(e,r){return!!Fg(e)}getLocalPath(e,r){return null}async fetch(e,r){let s=r.checksums.get(e.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(e,s,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${q.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.patchPackage(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:q.getIdentVendorPath(e),localPath:this.getLocalPath(e,r),checksum:c}}async patchPackage(e,r){let{parentLocator:s,sourceLocator:a,sourceVersion:n,patchPaths:c}=gP(e),f=await dP(s,c,r),p=await le.mktempPromise(),h=K.join(p,"current.zip"),E=await r.fetcher.fetch(a,r),C=q.getIdentVendorPath(e),S=new ps(h,{create:!0,level:r.project.configuration.get("compressionLevel")});await je.releaseAfterUseAsync(async()=>{await S.copyPromise(C,E.prefixPath,{baseFs:E.packageFs,stableSort:!0})},E.releaseFs),S.saveAndClose();for(let{source:P,optional:I}of f){if(P===null)continue;let R=new ps(h,{level:r.project.configuration.get("compressionLevel")}),N=new Sn(K.resolve(vt.root,C),{baseFs:R});try{await HL(pP(P),{baseFs:N,version:n})}catch(U){if(!(U instanceof _1))throw U;let W=r.project.configuration.get("enableInlineHunks"),te=!W&&!I?" (set enableInlineHunks for details)":"",ie=`${q.prettyLocator(r.project.configuration,e)}: ${U.message}${te}`,Ae=ce=>{W&&ROe(U.hunk,{configuration:r.project.configuration,report:ce})};if(R.discardAndClose(),I){r.report.reportWarningOnce(66,ie,{reportExtra:Ae});continue}else throw new Yt(66,ie,Ae)}R.saveAndClose()}return new ps(h,{level:r.project.configuration.get("compressionLevel")})}};Ve();var yP=class{supportsDescriptor(e,r){return!!jL(e)}supportsLocator(e,r){return!!Fg(e)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,s){let{patchPaths:a}=hP(e);return a.every(n=>!kz(n))?e:q.bindDescriptor(e,{locator:q.stringifyLocator(r)})}getResolutionDependencies(e,r){let{sourceDescriptor:s}=hP(e);return{sourceDescriptor:r.project.configuration.normalizeDependency(s)}}async getCandidates(e,r,s){if(!s.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let{parentLocator:a,patchPaths:n}=hP(e),c=await dP(a,n,s.fetchOptions),f=r.sourceDescriptor;if(typeof f>"u")throw new Error("Assertion failed: The dependency should have been resolved");let p=Rz(c,f.version);return[xz(e,{parentLocator:a,sourcePackage:f,patchPaths:n,patchHash:p})]}async getSatisfying(e,r,s,a){let[n]=await this.getCandidates(e,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){let{sourceLocator:s}=gP(e);return{...await r.resolver.resolve(s,r),...e}}};Ve();bt();Wt();var j1=class extends ut{constructor(){super(...arguments);this.save=ge.Boolean("-s,--save",!1,{description:"Add the patch to your resolution entries"});this.patchFolder=ge.String()}static{this.paths=[["patch-commit"]]}static{this.usage=ot.Usage({description:"generate a patch out of a directory",details:"\n By default, this will print a patchfile on stdout based on the diff between the folder passed in and the original version of the package. Such file is suitable for consumption with the `patch:` protocol.\n\n With the `-s,--save` option set, the patchfile won't be printed on stdout anymore and will instead be stored within a local file (by default kept within `.yarn/patches`, but configurable via the `patchFolder` setting). A `resolutions` entry will also be added to your top-level manifest, referencing the patched package via the `patch:` protocol.\n\n Note that only folders generated by `yarn patch` are accepted as valid input for `yarn patch-commit`.\n "})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState();let n=K.resolve(this.context.cwd,ue.toPortablePath(this.patchFolder)),c=K.join(n,"../source"),f=K.join(n,"../.yarn-patch.json");if(!le.existsSync(c))throw new nt("The argument folder didn't get created by 'yarn patch'");let p=await Tz(c,n),h=await le.readJsonPromise(f),E=q.parseLocator(h.locator,!0);if(!s.storedPackages.has(E.locatorHash))throw new nt("No package found in the project for the given locator");if(!this.save){this.context.stdout.write(p);return}let C=r.get("patchFolder"),S=K.join(C,`${q.slugifyLocator(E)}.patch`);await le.mkdirPromise(C,{recursive:!0}),await le.writeFilePromise(S,p);let P=[],I=new Map;for(let R of s.storedPackages.values()){if(q.isVirtualLocator(R))continue;let N=R.dependencies.get(E.identHash);if(!N)continue;let U=q.ensureDevirtualizedDescriptor(N),W=Pz(U),te=s.storedResolutions.get(W.descriptorHash);if(!te)throw new Error("Assertion failed: Expected the resolution to have been registered");if(!s.storedPackages.get(te))throw new Error("Assertion failed: Expected the package to have been registered");let Ae=s.tryWorkspaceByLocator(R);if(Ae)P.push(Ae);else{let ce=s.originalPackages.get(R.locatorHash);if(!ce)throw new Error("Assertion failed: Expected the original package to have been registered");let me=ce.dependencies.get(N.identHash);if(!me)throw new Error("Assertion failed: Expected the original dependency to have been registered");I.set(me.descriptorHash,me)}}for(let R of P)for(let N of Ht.hardDependencies){let U=R.manifest[N].get(E.identHash);if(!U)continue;let W=WL(U,{parentLocator:null,sourceDescriptor:q.convertLocatorToDescriptor(E),patchPaths:[K.join(Er.home,K.relative(s.cwd,S))]});R.manifest[N].set(U.identHash,W)}for(let R of I.values()){let N=WL(R,{parentLocator:null,sourceDescriptor:q.convertLocatorToDescriptor(E),patchPaths:[K.join(Er.home,K.relative(s.cwd,S))]});s.topLevelWorkspace.manifest.resolutions.push({pattern:{descriptor:{fullName:q.stringifyIdent(N),description:R.range}},reference:N.range})}await s.persist()}};Ve();bt();Wt();var q1=class extends ut{constructor(){super(...arguments);this.update=ge.Boolean("-u,--update",!1,{description:"Reapply local patches that already apply to this packages"});this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.package=ge.String()}static{this.paths=[["patch"]]}static{this.usage=ot.Usage({description:"prepare a package for patching",details:"\n This command will cause a package to be extracted in a temporary directory intended to be editable at will.\n\n Once you're done with your changes, run `yarn patch-commit -s path` (with `path` being the temporary directory you received) to generate a patchfile and register it into your top-level manifest via the `patch:` protocol. Run `yarn patch-commit -h` for more details.\n\n Calling the command when you already have a patch won't import it by default (in other words, the default behavior is to reset existing patches). However, adding the `-u,--update` flag will import any current patch.\n "})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n=await Jr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState();let c=q.parseLocator(this.package);if(c.reference==="unknown"){let f=je.mapAndFilter([...s.storedPackages.values()],p=>p.identHash!==c.identHash?je.mapAndFilter.skip:q.isVirtualLocator(p)?je.mapAndFilter.skip:Fg(p)!==this.update?je.mapAndFilter.skip:p);if(f.length===0)throw new nt("No package found in the project for the given locator");if(f.length>1)throw new nt(`Multiple candidate packages found; explicitly choose one of them (use \`yarn why \` to get more information as to who depends on them): +${f.map(p=>` +- ${q.prettyLocator(r,p)}`).join("")}`);c=f[0]}if(!s.storedPackages.has(c.locatorHash))throw new nt("No package found in the project for the given locator");await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout},async f=>{let p=qL(c),h=await Qz(c,{cache:n,project:s});f.reportJson({locator:q.stringifyLocator(p),path:ue.fromPortablePath(h)});let E=this.update?" along with its current modifications":"";f.reportInfo(0,`Package ${q.prettyLocator(r,p)} got extracted with success${E}!`),f.reportInfo(0,`You can now edit the following folder: ${he.pretty(r,ue.fromPortablePath(h),"magenta")}`),f.reportInfo(0,`Once you are done run ${he.pretty(r,`yarn patch-commit -s ${process.platform==="win32"?'"':""}${ue.fromPortablePath(h)}${process.platform==="win32"?'"':""}`,"cyan")} and Yarn will store a patchfile based on your changes.`)})}};var f6t={configuration:{enableInlineHunks:{description:"If true, the installs will print unmatched patch hunks",type:"BOOLEAN",default:!1},patchFolder:{description:"Folder where the patch files must be written",type:"ABSOLUTE_PATH",default:"./.yarn/patches"}},commands:[j1,q1],fetchers:[mP],resolvers:[yP]},A6t=f6t;var Lz={};Vt(Lz,{PnpmLinker:()=>EP,default:()=>y6t});Ve();bt();Wt();var EP=class{getCustomDataKey(){return JSON.stringify({name:"PnpmLinker",version:3})}supportsPackage(e,r){return this.isEnabled(r)}async findPackageLocation(e,r){if(!this.isEnabled(r))throw new Error("Assertion failed: Expected the pnpm linker to be enabled");let s=this.getCustomDataKey(),a=r.project.linkersCustomData.get(s);if(!a)throw new nt(`The project in ${he.pretty(r.project.configuration,`${r.project.cwd}/package.json`,he.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let n=a.pathsByLocator.get(e.locatorHash);if(typeof n>"u")throw new nt(`Couldn't find ${q.prettyLocator(r.project.configuration,e)} in the currently installed pnpm map - running an install might help`);return n.packageLocation}async findPackageLocator(e,r){if(!this.isEnabled(r))return null;let s=this.getCustomDataKey(),a=r.project.linkersCustomData.get(s);if(!a)throw new nt(`The project in ${he.pretty(r.project.configuration,`${r.project.cwd}/package.json`,he.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let n=e.match(/(^.*\/node_modules\/(@[^/]*\/)?[^/]+)(\/.*$)/);if(n){let p=a.locatorByPath.get(n[1]);if(p)return p}let c=e,f=e;do{f=c,c=K.dirname(f);let p=a.locatorByPath.get(f);if(p)return p}while(c!==f);return null}makeInstaller(e){return new Nz(e)}isEnabled(e){return e.project.configuration.get("nodeLinker")==="pnpm"}},Nz=class{constructor(e){this.opts=e;this.asyncActions=new je.AsyncActions(10);this.customData={pathsByLocator:new Map,locatorByPath:new Map};this.indexFolderPromise=px(le,{indexPath:K.join(e.project.configuration.get("globalFolder"),"index")})}attachCustomData(e){}async installPackage(e,r,s){switch(e.linkType){case"SOFT":return this.installPackageSoft(e,r,s);case"HARD":return this.installPackageHard(e,r,s)}throw new Error("Assertion failed: Unsupported package link type")}async installPackageSoft(e,r,s){let a=K.resolve(r.packageFs.getRealPath(),r.prefixPath),n=this.opts.project.tryWorkspaceByLocator(e)?K.join(a,Er.nodeModules):null;return this.customData.pathsByLocator.set(e.locatorHash,{packageLocation:a,dependenciesLocation:n}),{packageLocation:a,buildRequest:null}}async installPackageHard(e,r,s){let a=h6t(e,{project:this.opts.project}),n=a.packageLocation;this.customData.locatorByPath.set(n,q.stringifyLocator(e)),this.customData.pathsByLocator.set(e.locatorHash,a),s.holdFetchResult(this.asyncActions.set(e.locatorHash,async()=>{await le.mkdirPromise(n,{recursive:!0}),await le.copyPromise(n,r.prefixPath,{baseFs:r.packageFs,overwrite:!1,linkStrategy:{type:"HardlinkFromIndex",indexPath:await this.indexFolderPromise,autoRepair:!0}})}));let f=q.isVirtualLocator(e)?q.devirtualizeLocator(e):e,p={manifest:await Ht.tryFind(r.prefixPath,{baseFs:r.packageFs})??new Ht,misc:{hasBindingGyp:mA.hasBindingGyp(r)}},h=this.opts.project.getDependencyMeta(f,e.version),E=mA.extractBuildRequest(e,p,h,{configuration:this.opts.project.configuration});return{packageLocation:n,buildRequest:E}}async attachInternalDependencies(e,r){if(this.opts.project.configuration.get("nodeLinker")!=="pnpm"||!FOe(e,{project:this.opts.project}))return;let s=this.customData.pathsByLocator.get(e.locatorHash);if(typeof s>"u")throw new Error(`Assertion failed: Expected the package to have been registered (${q.stringifyLocator(e)})`);let{dependenciesLocation:a}=s;a&&this.asyncActions.reduce(e.locatorHash,async n=>{await le.mkdirPromise(a,{recursive:!0});let c=await g6t(a),f=new Map(c),p=[n],h=(C,S)=>{let P=S;FOe(S,{project:this.opts.project})||(this.opts.report.reportWarningOnce(0,"The pnpm linker doesn't support providing different versions to workspaces' peer dependencies"),P=q.devirtualizeLocator(S));let I=this.customData.pathsByLocator.get(P.locatorHash);if(typeof I>"u")throw new Error(`Assertion failed: Expected the package to have been registered (${q.stringifyLocator(S)})`);let R=q.stringifyIdent(C),N=K.join(a,R),U=K.relative(K.dirname(N),I.packageLocation),W=f.get(R);f.delete(R),p.push(Promise.resolve().then(async()=>{if(W){if(W.isSymbolicLink()&&await le.readlinkPromise(N)===U)return;await le.removePromise(N)}await le.mkdirpPromise(K.dirname(N)),process.platform=="win32"&&this.opts.project.configuration.get("winLinkType")==="junctions"?await le.symlinkPromise(I.packageLocation,N,"junction"):await le.symlinkPromise(U,N)}))},E=!1;for(let[C,S]of r)C.identHash===e.identHash&&(E=!0),h(C,S);!E&&!this.opts.project.tryWorkspaceByLocator(e)&&h(q.convertLocatorToDescriptor(e),e),p.push(d6t(a,f)),await Promise.all(p)})}async attachExternalDependents(e,r){throw new Error("External dependencies haven't been implemented for the pnpm linker")}async finalizeInstall(){let e=NOe(this.opts.project);if(this.opts.project.configuration.get("nodeLinker")!=="pnpm")await le.removePromise(e);else{let r;try{r=new Set(await le.readdirPromise(e))}catch{r=new Set}for(let{dependenciesLocation:s}of this.customData.pathsByLocator.values()){if(!s)continue;let a=K.contains(e,s);if(a===null)continue;let[n]=a.split(K.sep);r.delete(n)}await Promise.all([...r].map(async s=>{await le.removePromise(K.join(e,s))}))}return await this.asyncActions.wait(),await Oz(e),this.opts.project.configuration.get("nodeLinker")!=="node-modules"&&await Oz(p6t(this.opts.project)),{customData:this.customData}}};function p6t(t){return K.join(t.cwd,Er.nodeModules)}function NOe(t){return t.configuration.get("pnpmStoreFolder")}function h6t(t,{project:e}){let r=q.slugifyLocator(t),s=NOe(e),a=K.join(s,r,"package"),n=K.join(s,r,Er.nodeModules);return{packageLocation:a,dependenciesLocation:n}}function FOe(t,{project:e}){return!q.isVirtualLocator(t)||!e.tryWorkspaceByLocator(t)}async function g6t(t){let e=new Map,r=[];try{r=await le.readdirPromise(t,{withFileTypes:!0})}catch(s){if(s.code!=="ENOENT")throw s}try{for(let s of r)if(!s.name.startsWith("."))if(s.name.startsWith("@")){let a=await le.readdirPromise(K.join(t,s.name),{withFileTypes:!0});if(a.length===0)e.set(s.name,s);else for(let n of a)e.set(`${s.name}/${n.name}`,n)}else e.set(s.name,s)}catch(s){if(s.code!=="ENOENT")throw s}return e}async function d6t(t,e){let r=[],s=new Set;for(let a of e.keys()){r.push(le.removePromise(K.join(t,a)));let n=q.tryParseIdent(a)?.scope;n&&s.add(`@${n}`)}return Promise.all(r).then(()=>Promise.all([...s].map(a=>Oz(K.join(t,a)))))}async function Oz(t){try{await le.rmdirPromise(t)}catch(e){if(e.code!=="ENOENT"&&e.code!=="ENOTEMPTY")throw e}}var m6t={configuration:{pnpmStoreFolder:{description:"By default, the store is stored in the 'node_modules/.store' of the project. Sometimes in CI scenario's it is convenient to store this in a different location so it can be cached and reused.",type:"ABSOLUTE_PATH",default:"./node_modules/.store"}},linkers:[EP]},y6t=m6t;var Gz={};Vt(Gz,{StageCommand:()=>G1,default:()=>x6t,stageUtils:()=>VL});Ve();bt();Wt();Ve();bt();var VL={};Vt(VL,{ActionType:()=>Mz,checkConsensus:()=>YL,expandDirectory:()=>Hz,findConsensus:()=>jz,findVcsRoot:()=>_z,genCommitMessage:()=>qz,getCommitPrefix:()=>OOe,isYarnFile:()=>Uz});bt();var Mz=(n=>(n[n.CREATE=0]="CREATE",n[n.DELETE=1]="DELETE",n[n.ADD=2]="ADD",n[n.REMOVE=3]="REMOVE",n[n.MODIFY=4]="MODIFY",n))(Mz||{});async function _z(t,{marker:e}){do if(!le.existsSync(K.join(t,e)))t=K.dirname(t);else return t;while(t!=="/");return null}function Uz(t,{roots:e,names:r}){if(r.has(K.basename(t)))return!0;do if(!e.has(t))t=K.dirname(t);else return!0;while(t!=="/");return!1}function Hz(t){let e=[],r=[t];for(;r.length>0;){let s=r.pop(),a=le.readdirSync(s);for(let n of a){let c=K.resolve(s,n);le.lstatSync(c).isDirectory()?r.push(c):e.push(c)}}return e}function YL(t,e){let r=0,s=0;for(let a of t)a!=="wip"&&(e.test(a)?r+=1:s+=1);return r>=s}function jz(t){let e=YL(t,/^(\w\(\w+\):\s*)?\w+s/),r=YL(t,/^(\w\(\w+\):\s*)?[A-Z]/),s=YL(t,/^\w\(\w+\):/);return{useThirdPerson:e,useUpperCase:r,useComponent:s}}function OOe(t){return t.useComponent?"chore(yarn): ":""}var E6t=new Map([[0,"create"],[1,"delete"],[2,"add"],[3,"remove"],[4,"update"]]);function qz(t,e){let r=OOe(t),s=[],a=e.slice().sort((n,c)=>n[0]-c[0]);for(;a.length>0;){let[n,c]=a.shift(),f=E6t.get(n);t.useUpperCase&&s.length===0&&(f=`${f[0].toUpperCase()}${f.slice(1)}`),t.useThirdPerson&&(f+="s");let p=[c];for(;a.length>0&&a[0][0]===n;){let[,E]=a.shift();p.push(E)}p.sort();let h=p.shift();p.length===1?h+=" (and one other)":p.length>1&&(h+=` (and ${p.length} others)`),s.push(`${f} ${h}`)}return`${r}${s.join(", ")}`}var I6t="Commit generated via `yarn stage`",C6t=11;async function LOe(t){let{code:e,stdout:r}=await Gr.execvp("git",["log","-1","--pretty=format:%H"],{cwd:t});return e===0?r.trim():null}async function w6t(t,e){let r=[],s=e.filter(h=>K.basename(h.path)==="package.json");for(let{action:h,path:E}of s){let C=K.relative(t,E);if(h===4){let S=await LOe(t),{stdout:P}=await Gr.execvp("git",["show",`${S}:${C}`],{cwd:t,strict:!0}),I=await Ht.fromText(P),R=await Ht.fromFile(E),N=new Map([...R.dependencies,...R.devDependencies]),U=new Map([...I.dependencies,...I.devDependencies]);for(let[W,te]of U){let ie=q.stringifyIdent(te),Ae=N.get(W);Ae?Ae.range!==te.range&&r.push([4,`${ie} to ${Ae.range}`]):r.push([3,ie])}for(let[W,te]of N)U.has(W)||r.push([2,q.stringifyIdent(te)])}else if(h===0){let S=await Ht.fromFile(E);S.name?r.push([0,q.stringifyIdent(S.name)]):r.push([0,"a package"])}else if(h===1){let S=await LOe(t),{stdout:P}=await Gr.execvp("git",["show",`${S}:${C}`],{cwd:t,strict:!0}),I=await Ht.fromText(P);I.name?r.push([1,q.stringifyIdent(I.name)]):r.push([1,"a package"])}else throw new Error("Assertion failed: Unsupported action type")}let{code:a,stdout:n}=await Gr.execvp("git",["log",`-${C6t}`,"--pretty=format:%s"],{cwd:t}),c=a===0?n.split(/\n/g).filter(h=>h!==""):[],f=jz(c);return qz(f,r)}var B6t={0:[" A ","?? "],4:[" M "],1:[" D "]},v6t={0:["A "],4:["M "],1:["D "]},MOe={async findRoot(t){return await _z(t,{marker:".git"})},async filterChanges(t,e,r,s){let{stdout:a}=await Gr.execvp("git",["status","-s"],{cwd:t,strict:!0}),n=a.toString().split(/\n/g),c=s?.staged?v6t:B6t;return[].concat(...n.map(p=>{if(p==="")return[];let h=p.slice(0,3),E=K.resolve(t,p.slice(3));if(!s?.staged&&h==="?? "&&p.endsWith("/"))return Hz(E).map(C=>({action:0,path:C}));{let S=[0,4,1].find(P=>c[P].includes(h));return S!==void 0?[{action:S,path:E}]:[]}})).filter(p=>Uz(p.path,{roots:e,names:r}))},async genCommitMessage(t,e){return await w6t(t,e)},async makeStage(t,e){let r=e.map(s=>ue.fromPortablePath(s.path));await Gr.execvp("git",["add","--",...r],{cwd:t,strict:!0})},async makeCommit(t,e,r){let s=e.map(a=>ue.fromPortablePath(a.path));await Gr.execvp("git",["add","-N","--",...s],{cwd:t,strict:!0}),await Gr.execvp("git",["commit","-m",`${r} + +${I6t} +`,"--",...s],{cwd:t,strict:!0})},async makeReset(t,e){let r=e.map(s=>ue.fromPortablePath(s.path));await Gr.execvp("git",["reset","HEAD","--",...r],{cwd:t,strict:!0})}};var S6t=[MOe],G1=class extends ut{constructor(){super(...arguments);this.commit=ge.Boolean("-c,--commit",!1,{description:"Commit the staged files"});this.reset=ge.Boolean("-r,--reset",!1,{description:"Remove all files from the staging area"});this.dryRun=ge.Boolean("-n,--dry-run",!1,{description:"Print the commit message and the list of modified files without staging / committing"});this.update=ge.Boolean("-u,--update",!1,{hidden:!0})}static{this.paths=[["stage"]]}static{this.usage=ot.Usage({description:"add all yarn files to your vcs",details:"\n This command will add to your staging area the files belonging to Yarn (typically any modified `package.json` and `.yarnrc.yml` files, but also linker-generated files, cache data, etc). It will take your ignore list into account, so the cache files won't be added if the cache is ignored in a `.gitignore` file (assuming you use Git).\n\n Running `--reset` will instead remove them from the staging area (the changes will still be there, but won't be committed until you stage them back).\n\n Since the staging area is a non-existent concept in Mercurial, Yarn will always create a new commit when running this command on Mercurial repositories. You can get this behavior when using Git by using the `--commit` flag which will directly create a commit.\n ",examples:[["Adds all modified project files to the staging area","yarn stage"],["Creates a new commit containing all modified project files","yarn stage --commit"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s}=await Tt.find(r,this.context.cwd),{driver:a,root:n}=await D6t(s.cwd),c=[r.get("cacheFolder"),r.get("globalFolder"),r.get("virtualFolder"),r.get("yarnPath")];await r.triggerHook(C=>C.populateYarnPaths,s,C=>{c.push(C)});let f=new Set;for(let C of c)for(let S of b6t(n,C))f.add(S);let p=new Set([r.get("rcFilename"),Er.lockfile,Er.manifest]),h=await a.filterChanges(n,f,p),E=await a.genCommitMessage(n,h);if(this.dryRun)if(this.commit)this.context.stdout.write(`${E} +`);else for(let C of h)this.context.stdout.write(`${ue.fromPortablePath(C.path)} +`);else if(this.reset){let C=await a.filterChanges(n,f,p,{staged:!0});C.length===0?this.context.stdout.write("No staged changes found!"):await a.makeReset(n,C)}else h.length===0?this.context.stdout.write("No changes found!"):this.commit?await a.makeCommit(n,h,E):(await a.makeStage(n,h),this.context.stdout.write(E))}};async function D6t(t){let e=null,r=null;for(let s of S6t)if((r=await s.findRoot(t))!==null){e=s;break}if(e===null||r===null)throw new nt("No stage driver has been found for your current project");return{driver:e,root:r}}function b6t(t,e){let r=[];if(e===null)return r;for(;;){(e===t||e.startsWith(`${t}/`))&&r.push(e);let s;try{s=le.statSync(e)}catch{break}if(s.isSymbolicLink())e=K.resolve(K.dirname(e),le.readlinkSync(e));else break}return r}var P6t={commands:[G1]},x6t=P6t;var Wz={};Vt(Wz,{default:()=>L6t});Ve();Ve();bt();var HOe=et(fi());Ve();var _Oe=et(Z9()),k6t="e8e1bd300d860104bb8c58453ffa1eb4",Q6t="OFCNCOG2CU",UOe=async(t,e)=>{let r=q.stringifyIdent(t),a=T6t(e).initIndex("npm-search");try{return(await a.getObject(r,{attributesToRetrieve:["types"]})).types?.ts==="definitely-typed"}catch{return!1}},T6t=t=>(0,_Oe.default)(Q6t,k6t,{requester:{async send(r){try{let s=await An.request(r.url,r.data||null,{configuration:t,headers:r.headers});return{content:s.body,isTimedOut:!1,status:s.statusCode}}catch(s){return{content:s.response.body,isTimedOut:!1,status:s.response.statusCode}}}}});var jOe=t=>t.scope?`${t.scope}__${t.name}`:`${t.name}`,R6t=async(t,e,r,s)=>{if(r.scope==="types")return;let{project:a}=t,{configuration:n}=a;if(!(n.get("tsEnableAutoTypes")??(le.existsSync(K.join(t.cwd,"tsconfig.json"))||le.existsSync(K.join(a.cwd,"tsconfig.json")))))return;let f=n.makeResolver(),p={project:a,resolver:f,report:new Wi};if(!await UOe(r,n))return;let E=jOe(r),C=q.parseRange(r.range).selector;if(!Or.validRange(C)){let N=n.normalizeDependency(r),U=await f.getCandidates(N,{},p);C=q.parseRange(U[0].reference).selector}let S=HOe.default.coerce(C);if(S===null)return;let P=`${Xu.Modifier.CARET}${S.major}`,I=q.makeDescriptor(q.makeIdent("types",E),P),R=je.mapAndFind(a.workspaces,N=>{let U=N.manifest.dependencies.get(r.identHash)?.descriptorHash,W=N.manifest.devDependencies.get(r.identHash)?.descriptorHash;if(U!==r.descriptorHash&&W!==r.descriptorHash)return je.mapAndFind.skip;let te=[];for(let ie of Ht.allDependencies){let Ae=N.manifest[ie].get(I.identHash);typeof Ae>"u"||te.push([ie,Ae])}return te.length===0?je.mapAndFind.skip:te});if(typeof R<"u")for(let[N,U]of R)t.manifest[N].set(U.identHash,U);else{try{let N=n.normalizeDependency(I);if((await f.getCandidates(N,{},p)).length===0)return}catch{return}t.manifest[Xu.Target.DEVELOPMENT].set(I.identHash,I)}},F6t=async(t,e,r)=>{if(r.scope==="types")return;let{project:s}=t,{configuration:a}=s;if(!(a.get("tsEnableAutoTypes")??(le.existsSync(K.join(t.cwd,"tsconfig.json"))||le.existsSync(K.join(s.cwd,"tsconfig.json")))))return;let c=jOe(r),f=q.makeIdent("types",c);for(let p of Ht.allDependencies)typeof t.manifest[p].get(f.identHash)>"u"||t.manifest[p].delete(f.identHash)},N6t=(t,e)=>{e.publishConfig&&e.publishConfig.typings&&(e.typings=e.publishConfig.typings),e.publishConfig&&e.publishConfig.types&&(e.types=e.publishConfig.types)},O6t={configuration:{tsEnableAutoTypes:{description:"Whether Yarn should auto-install @types/ dependencies on 'yarn add'",type:"BOOLEAN",isNullable:!0,default:null}},hooks:{afterWorkspaceDependencyAddition:R6t,afterWorkspaceDependencyRemoval:F6t,beforeWorkspacePacking:N6t}},L6t=O6t;var zz={};Vt(zz,{VersionApplyCommand:()=>J1,VersionCheckCommand:()=>z1,VersionCommand:()=>Z1,default:()=>rqt,versionUtils:()=>K1});Ve();Ve();Wt();var K1={};Vt(K1,{Decision:()=>Y1,applyPrerelease:()=>KOe,applyReleases:()=>Jz,applyStrategy:()=>JL,clearVersionFiles:()=>Yz,getUndecidedDependentWorkspaces:()=>CP,getUndecidedWorkspaces:()=>KL,openVersionFile:()=>V1,requireMoreDecisions:()=>$6t,resolveVersionFiles:()=>IP,suggestStrategy:()=>Kz,updateVersionFiles:()=>Vz,validateReleaseDecision:()=>W1});Ve();bt();Bc();Wt();var VOe=et(YOe()),TA=et(fi()),X6t=/^(>=|[~^]|)(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(-(0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(\.(0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*)?(\+[0-9a-zA-Z-]+(\.[0-9a-zA-Z-]+)*)?$/,Y1=(c=>(c.UNDECIDED="undecided",c.DECLINE="decline",c.MAJOR="major",c.MINOR="minor",c.PATCH="patch",c.PRERELEASE="prerelease",c))(Y1||{});function W1(t){let e=TA.default.valid(t);return e||je.validateEnum((0,VOe.default)(Y1,"UNDECIDED"),t)}async function IP(t,{prerelease:e=null}={}){let r=new Map,s=t.configuration.get("deferredVersionFolder");if(!le.existsSync(s))return r;let a=await le.readdirPromise(s);for(let n of a){if(!n.endsWith(".yml"))continue;let c=K.join(s,n),f=await le.readFilePromise(c,"utf8"),p=ls(f);for(let[h,E]of Object.entries(p.releases||{})){if(E==="decline")continue;let C=q.parseIdent(h),S=t.tryWorkspaceByIdent(C);if(S===null)throw new Error(`Assertion failed: Expected a release definition file to only reference existing workspaces (${K.basename(c)} references ${h})`);if(S.manifest.version===null)throw new Error(`Assertion failed: Expected the workspace to have a version (${q.prettyLocator(t.configuration,S.anchoredLocator)})`);let P=S.manifest.raw.stableVersion??S.manifest.version,I=r.get(S),R=JL(P,W1(E));if(R===null)throw new Error(`Assertion failed: Expected ${P} to support being bumped via strategy ${E}`);let N=typeof I<"u"?TA.default.gt(R,I)?R:I:R;r.set(S,N)}}return e&&(r=new Map([...r].map(([n,c])=>[n,KOe(c,{current:n.manifest.version,prerelease:e})]))),r}async function Yz(t){let e=t.configuration.get("deferredVersionFolder");le.existsSync(e)&&await le.removePromise(e)}async function Vz(t,e){let r=new Set(e),s=t.configuration.get("deferredVersionFolder");if(!le.existsSync(s))return;let a=await le.readdirPromise(s);for(let n of a){if(!n.endsWith(".yml"))continue;let c=K.join(s,n),f=await le.readFilePromise(c,"utf8"),p=ls(f),h=p?.releases;if(h){for(let E of Object.keys(h)){let C=q.parseIdent(E),S=t.tryWorkspaceByIdent(C);(S===null||r.has(S))&&delete p.releases[E]}Object.keys(p.releases).length>0?await le.changeFilePromise(c,il(new il.PreserveOrdering(p))):await le.unlinkPromise(c)}}}async function V1(t,{allowEmpty:e=!1}={}){let r=t.configuration;if(r.projectCwd===null)throw new nt("This command can only be run from within a Yarn project");let s=await Qa.fetchRoot(r.projectCwd),a=s!==null?await Qa.fetchBase(s,{baseRefs:r.get("changesetBaseRefs")}):null,n=s!==null?await Qa.fetchChangedFiles(s,{base:a.hash,project:t}):[],c=r.get("deferredVersionFolder"),f=n.filter(P=>K.contains(c,P)!==null);if(f.length>1)throw new nt(`Your current branch contains multiple versioning files; this isn't supported: +- ${f.map(P=>ue.fromPortablePath(P)).join(` +- `)}`);let p=new Set(je.mapAndFilter(n,P=>{let I=t.tryWorkspaceByFilePath(P);return I===null?je.mapAndFilter.skip:I}));if(f.length===0&&p.size===0&&!e)return null;let h=f.length===1?f[0]:K.join(c,`${Nn.makeHash(Math.random().toString()).slice(0,8)}.yml`),E=le.existsSync(h)?await le.readFilePromise(h,"utf8"):"{}",C=ls(E),S=new Map;for(let P of C.declined||[]){let I=q.parseIdent(P),R=t.getWorkspaceByIdent(I);S.set(R,"decline")}for(let[P,I]of Object.entries(C.releases||{})){let R=q.parseIdent(P),N=t.getWorkspaceByIdent(R);S.set(N,W1(I))}return{project:t,root:s,baseHash:a!==null?a.hash:null,baseTitle:a!==null?a.title:null,changedFiles:new Set(n),changedWorkspaces:p,releaseRoots:new Set([...p].filter(P=>P.manifest.version!==null)),releases:S,async saveAll(){let P={},I=[],R=[];for(let N of t.workspaces){if(N.manifest.version===null)continue;let U=q.stringifyIdent(N.anchoredLocator),W=S.get(N);W==="decline"?I.push(U):typeof W<"u"?P[U]=W1(W):p.has(N)&&R.push(U)}await le.mkdirPromise(K.dirname(h),{recursive:!0}),await le.changeFilePromise(h,il(new il.PreserveOrdering({releases:Object.keys(P).length>0?P:void 0,declined:I.length>0?I:void 0,undecided:R.length>0?R:void 0})))}}}function $6t(t){return KL(t).size>0||CP(t).length>0}function KL(t){let e=new Set;for(let r of t.changedWorkspaces)r.manifest.version!==null&&(t.releases.has(r)||e.add(r));return e}function CP(t,{include:e=new Set}={}){let r=[],s=new Map(je.mapAndFilter([...t.releases],([n,c])=>c==="decline"?je.mapAndFilter.skip:[n.anchoredLocator.locatorHash,n])),a=new Map(je.mapAndFilter([...t.releases],([n,c])=>c!=="decline"?je.mapAndFilter.skip:[n.anchoredLocator.locatorHash,n]));for(let n of t.project.workspaces)if(!(!e.has(n)&&(a.has(n.anchoredLocator.locatorHash)||s.has(n.anchoredLocator.locatorHash)))&&n.manifest.version!==null)for(let c of Ht.hardDependencies)for(let f of n.manifest.getForScope(c).values()){let p=t.project.tryWorkspaceByDescriptor(f);p!==null&&s.has(p.anchoredLocator.locatorHash)&&r.push([n,p])}return r}function Kz(t,e){let r=TA.default.clean(e);for(let s of Object.values(Y1))if(s!=="undecided"&&s!=="decline"&&TA.default.inc(t,s)===r)return s;return null}function JL(t,e){if(TA.default.valid(e))return e;if(t===null)throw new nt(`Cannot apply the release strategy "${e}" unless the workspace already has a valid version`);if(!TA.default.valid(t))throw new nt(`Cannot apply the release strategy "${e}" on a non-semver version (${t})`);let r=TA.default.inc(t,e);if(r===null)throw new nt(`Cannot apply the release strategy "${e}" on the specified version (${t})`);return r}function Jz(t,e,{report:r,exact:s}){let a=new Map;for(let n of t.workspaces)for(let c of Ht.allDependencies)for(let f of n.manifest[c].values()){let p=t.tryWorkspaceByDescriptor(f);if(p===null||!e.has(p))continue;je.getArrayWithDefault(a,p).push([n,c,f.identHash])}for(let[n,c]of e){let f=n.manifest.version;n.manifest.version=c,TA.default.prerelease(c)===null?delete n.manifest.raw.stableVersion:n.manifest.raw.stableVersion||(n.manifest.raw.stableVersion=f);let p=n.manifest.name!==null?q.stringifyIdent(n.manifest.name):null;r.reportInfo(0,`${q.prettyLocator(t.configuration,n.anchoredLocator)}: Bumped to ${c}`),r.reportJson({cwd:ue.fromPortablePath(n.cwd),ident:p,oldVersion:f,newVersion:c});let h=a.get(n);if(!(typeof h>"u"))for(let[E,C,S]of h){let P=E.manifest[C].get(S);if(typeof P>"u")throw new Error("Assertion failed: The dependency should have existed");let I=P.range,R=!1;if(I.startsWith(yi.protocol)&&(I=I.slice(yi.protocol.length),R=!0,I===n.relativeCwd))continue;let N=I.match(X6t);if(!N){r.reportWarning(0,`Couldn't auto-upgrade range ${I} (in ${q.prettyLocator(t.configuration,E.anchoredLocator)})`);continue}let U=s?`${c}`:`${N[1]}${c}`;R&&(U=`${yi.protocol}${U}`);let W=q.makeDescriptor(P,U);E.manifest[C].set(S,W)}}}var eqt=new Map([["%n",{extract:t=>t.length>=1?[t[0],t.slice(1)]:null,generate:(t=0)=>`${t+1}`}]]);function KOe(t,{current:e,prerelease:r}){let s=new TA.default.SemVer(e),a=s.prerelease.slice(),n=[];s.prerelease=[],s.format()!==t&&(a.length=0);let c=!0,f=r.split(/\./g);for(let p of f){let h=eqt.get(p);if(typeof h>"u")n.push(p),a[0]===p?a.shift():c=!1;else{let E=c?h.extract(a):null;E!==null&&typeof E[0]=="number"?(n.push(h.generate(E[0])),a=E[1]):(n.push(h.generate()),c=!1)}}return s.prerelease&&(s.prerelease=[]),`${t}-${n.join(".")}`}var J1=class extends ut{constructor(){super(...arguments);this.all=ge.Boolean("--all",!1,{description:"Apply the deferred version changes on all workspaces"});this.dryRun=ge.Boolean("--dry-run",!1,{description:"Print the versions without actually generating the package archive"});this.prerelease=ge.String("--prerelease",{description:"Add a prerelease identifier to new versions",tolerateBoolean:!0});this.exact=ge.Boolean("--exact",!1,{description:"Use the exact version of each package, removes any range. Useful for nightly releases where the range might match another version."});this.recursive=ge.Boolean("-R,--recursive",{description:"Release the transitive workspaces as well"});this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}static{this.paths=[["version","apply"]]}static{this.usage=ot.Usage({category:"Release-related commands",description:"apply all the deferred version bumps at once",details:` + This command will apply the deferred version changes and remove their definitions from the repository. + + Note that if \`--prerelease\` is set, the given prerelease identifier (by default \`rc.%n\`) will be used on all new versions and the version definitions will be kept as-is. + + By default only the current workspace will be bumped, but you can configure this behavior by using one of: + + - \`--recursive\` to also apply the version bump on its dependencies + - \`--all\` to apply the version bump on all packages in the repository + + Note that this command will also update the \`workspace:\` references across all your local workspaces, thus ensuring that they keep referring to the same workspaces even after the version bump. + `,examples:[["Apply the version change to the local workspace","yarn version apply"],["Apply the version change to all the workspaces in the local workspace","yarn version apply --all"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n=await Jr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState({restoreResolutions:!1});let c=await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout},async f=>{let p=this.prerelease?typeof this.prerelease!="boolean"?this.prerelease:"rc.%n":null,h=await IP(s,{prerelease:p}),E=new Map;if(this.all)E=h;else{let C=this.recursive?a.getRecursiveWorkspaceDependencies():[a];for(let S of C){let P=h.get(S);typeof P<"u"&&E.set(S,P)}}if(E.size===0){let C=h.size>0?" Did you want to add --all?":"";f.reportWarning(0,`The current workspace doesn't seem to require a version bump.${C}`);return}Jz(s,E,{report:f,exact:this.exact}),this.dryRun||(p||(this.all?await Yz(s):await Vz(s,[...E.keys()])),f.reportSeparator())});return this.dryRun||c.hasErrors()?c.exitCode():await s.installWithNewReport({json:this.json,stdout:this.context.stdout},{cache:n})}};Ve();bt();Wt();var zL=et(fi());var z1=class extends ut{constructor(){super(...arguments);this.interactive=ge.Boolean("-i,--interactive",{description:"Open an interactive interface used to set version bumps"})}static{this.paths=[["version","check"]]}static{this.usage=ot.Usage({category:"Release-related commands",description:"check that all the relevant packages have been bumped",details:"\n **Warning:** This command currently requires Git.\n\n This command will check that all the packages covered by the files listed in argument have been properly bumped or declined to bump.\n\n In the case of a bump, the check will also cover transitive packages - meaning that should `Foo` be bumped, a package `Bar` depending on `Foo` will require a decision as to whether `Bar` will need to be bumped. This check doesn't cross packages that have declined to bump.\n\n In case no arguments are passed to the function, the list of modified files will be generated by comparing the HEAD against `master`.\n ",examples:[["Check whether the modified packages need a bump","yarn version check"]]})}async execute(){return this.interactive?await this.executeInteractive():await this.executeStandard()}async executeInteractive(){ow(this.context);let{Gem:r}=await Promise.resolve().then(()=>($F(),CY)),{ScrollableItems:s}=await Promise.resolve().then(()=>(nN(),rN)),{FocusRequest:a}=await Promise.resolve().then(()=>(BY(),XPe)),{useListInput:n}=await Promise.resolve().then(()=>(tN(),$Pe)),{renderForm:c}=await Promise.resolve().then(()=>(aN(),oN)),{Box:f,Text:p}=await Promise.resolve().then(()=>et(Vc())),{default:h,useCallback:E,useState:C}=await Promise.resolve().then(()=>et(hn())),S=await ze.find(this.context.cwd,this.context.plugins),{project:P,workspace:I}=await Tt.find(S,this.context.cwd);if(!I)throw new ar(P.cwd,this.context.cwd);await P.restoreInstallState();let R=await V1(P);if(R===null||R.releaseRoots.size===0)return 0;if(R.root===null)throw new nt("This command can only be run on Git repositories");let N=()=>h.createElement(f,{flexDirection:"row",paddingBottom:1},h.createElement(f,{flexDirection:"column",width:60},h.createElement(f,null,h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},""),"/",h.createElement(p,{bold:!0,color:"cyanBright"},"")," to select workspaces.")),h.createElement(f,null,h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},""),"/",h.createElement(p,{bold:!0,color:"cyanBright"},"")," to select release strategies."))),h.createElement(f,{flexDirection:"column"},h.createElement(f,{marginLeft:1},h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},"")," to save.")),h.createElement(f,{marginLeft:1},h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},"")," to abort.")))),U=({workspace:me,active:pe,decision:Be,setDecision:Ce})=>{let g=me.manifest.raw.stableVersion??me.manifest.version;if(g===null)throw new Error(`Assertion failed: The version should have been set (${q.prettyLocator(S,me.anchoredLocator)})`);if(zL.default.prerelease(g)!==null)throw new Error(`Assertion failed: Prerelease identifiers shouldn't be found (${g})`);let we=["undecided","decline","patch","minor","major"];n(Be,we,{active:pe,minus:"left",plus:"right",set:Ce});let Ee=Be==="undecided"?h.createElement(p,{color:"yellow"},g):Be==="decline"?h.createElement(p,{color:"green"},g):h.createElement(p,null,h.createElement(p,{color:"magenta"},g)," \u2192 ",h.createElement(p,{color:"green"},zL.default.valid(Be)?Be:zL.default.inc(g,Be)));return h.createElement(f,{flexDirection:"column"},h.createElement(f,null,h.createElement(p,null,q.prettyLocator(S,me.anchoredLocator)," - ",Ee)),h.createElement(f,null,we.map(fe=>h.createElement(f,{key:fe,paddingLeft:2},h.createElement(p,null,h.createElement(r,{active:fe===Be})," ",fe)))))},W=me=>{let pe=new Set(R.releaseRoots),Be=new Map([...me].filter(([Ce])=>pe.has(Ce)));for(;;){let Ce=CP({project:R.project,releases:Be}),g=!1;if(Ce.length>0){for(let[we]of Ce)if(!pe.has(we)){pe.add(we),g=!0;let Ee=me.get(we);typeof Ee<"u"&&Be.set(we,Ee)}}if(!g)break}return{relevantWorkspaces:pe,relevantReleases:Be}},te=()=>{let[me,pe]=C(()=>new Map(R.releases)),Be=E((Ce,g)=>{let we=new Map(me);g!=="undecided"?we.set(Ce,g):we.delete(Ce);let{relevantReleases:Ee}=W(we);pe(Ee)},[me,pe]);return[me,Be]},ie=({workspaces:me,releases:pe})=>{let Be=[];Be.push(`${me.size} total`);let Ce=0,g=0;for(let we of me){let Ee=pe.get(we);typeof Ee>"u"?g+=1:Ee!=="decline"&&(Ce+=1)}return Be.push(`${Ce} release${Ce===1?"":"s"}`),Be.push(`${g} remaining`),h.createElement(p,{color:"yellow"},Be.join(", "))},ce=await c(({useSubmit:me})=>{let[pe,Be]=te();me(pe);let{relevantWorkspaces:Ce}=W(pe),g=new Set([...Ce].filter(se=>!R.releaseRoots.has(se))),[we,Ee]=C(0),fe=E(se=>{switch(se){case a.BEFORE:Ee(we-1);break;case a.AFTER:Ee(we+1);break}},[we,Ee]);return h.createElement(f,{flexDirection:"column"},h.createElement(N,null),h.createElement(f,null,h.createElement(p,{wrap:"wrap"},"The following files have been modified in your local checkout.")),h.createElement(f,{flexDirection:"column",marginTop:1,paddingLeft:2},[...R.changedFiles].map(se=>h.createElement(f,{key:se},h.createElement(p,null,h.createElement(p,{color:"grey"},ue.fromPortablePath(R.root)),ue.sep,ue.relative(ue.fromPortablePath(R.root),ue.fromPortablePath(se)))))),R.releaseRoots.size>0&&h.createElement(h.Fragment,null,h.createElement(f,{marginTop:1},h.createElement(p,{wrap:"wrap"},"Because of those files having been modified, the following workspaces may need to be released again (note that private workspaces are also shown here, because even though they won't be published, releasing them will allow us to flag their dependents for potential re-release):")),g.size>3?h.createElement(f,{marginTop:1},h.createElement(ie,{workspaces:R.releaseRoots,releases:pe})):null,h.createElement(f,{marginTop:1,flexDirection:"column"},h.createElement(s,{active:we%2===0,radius:1,size:2,onFocusRequest:fe},[...R.releaseRoots].map(se=>h.createElement(U,{key:se.cwd,workspace:se,decision:pe.get(se)||"undecided",setDecision:X=>Be(se,X)}))))),g.size>0?h.createElement(h.Fragment,null,h.createElement(f,{marginTop:1},h.createElement(p,{wrap:"wrap"},"The following workspaces depend on other workspaces that have been marked for release, and thus may need to be released as well:")),h.createElement(f,null,h.createElement(p,null,"(Press ",h.createElement(p,{bold:!0,color:"cyanBright"},"")," to move the focus between the workspace groups.)")),g.size>5?h.createElement(f,{marginTop:1},h.createElement(ie,{workspaces:g,releases:pe})):null,h.createElement(f,{marginTop:1,flexDirection:"column"},h.createElement(s,{active:we%2===1,radius:2,size:2,onFocusRequest:fe},[...g].map(se=>h.createElement(U,{key:se.cwd,workspace:se,decision:pe.get(se)||"undecided",setDecision:X=>Be(se,X)}))))):null)},{versionFile:R},{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});if(typeof ce>"u")return 1;R.releases.clear();for(let[me,pe]of ce)R.releases.set(me,pe);await R.saveAll()}async executeStandard(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);return await s.restoreInstallState(),(await Ot.start({configuration:r,stdout:this.context.stdout},async c=>{let f=await V1(s);if(f===null||f.releaseRoots.size===0)return;if(f.root===null)throw new nt("This command can only be run on Git repositories");if(c.reportInfo(0,`Your PR was started right after ${he.pretty(r,f.baseHash.slice(0,7),"yellow")} ${he.pretty(r,f.baseTitle,"magenta")}`),f.changedFiles.size>0){c.reportInfo(0,"You have changed the following files since then:"),c.reportSeparator();for(let S of f.changedFiles)c.reportInfo(null,`${he.pretty(r,ue.fromPortablePath(f.root),"gray")}${ue.sep}${ue.relative(ue.fromPortablePath(f.root),ue.fromPortablePath(S))}`)}let p=!1,h=!1,E=KL(f);if(E.size>0){p||c.reportSeparator();for(let S of E)c.reportError(0,`${q.prettyLocator(r,S.anchoredLocator)} has been modified but doesn't have a release strategy attached`);p=!0}let C=CP(f);for(let[S,P]of C)h||c.reportSeparator(),c.reportError(0,`${q.prettyLocator(r,S.anchoredLocator)} doesn't have a release strategy attached, but depends on ${q.prettyWorkspace(r,P)} which is planned for release.`),h=!0;(p||h)&&(c.reportSeparator(),c.reportInfo(0,"This command detected that at least some workspaces have received modifications without explicit instructions as to how they had to be released (if needed)."),c.reportInfo(0,"To correct these errors, run `yarn version check --interactive` then follow the instructions."))})).exitCode()}};Ve();Wt();var ZL=et(fi());var Z1=class extends ut{constructor(){super(...arguments);this.deferred=ge.Boolean("-d,--deferred",{description:"Prepare the version to be bumped during the next release cycle"});this.immediate=ge.Boolean("-i,--immediate",{description:"Bump the version immediately"});this.strategy=ge.String()}static{this.paths=[["version"]]}static{this.usage=ot.Usage({category:"Release-related commands",description:"apply a new version to the current package",details:"\n This command will bump the version number for the given package, following the specified strategy:\n\n - If `major`, the first number from the semver range will be increased (`X.0.0`).\n - If `minor`, the second number from the semver range will be increased (`0.X.0`).\n - If `patch`, the third number from the semver range will be increased (`0.0.X`).\n - If prefixed by `pre` (`premajor`, ...), a `-0` suffix will be set (`0.0.0-0`).\n - If `prerelease`, the suffix will be increased (`0.0.0-X`); the third number from the semver range will also be increased if there was no suffix in the previous version.\n - If `decline`, the nonce will be increased for `yarn version check` to pass without version bump.\n - If a valid semver range, it will be used as new version.\n - If unspecified, Yarn will ask you for guidance.\n\n For more information about the `--deferred` flag, consult our documentation (https://yarnpkg.com/features/release-workflow#deferred-versioning).\n ",examples:[["Immediately bump the version to the next major","yarn version major"],["Prepare the version to be bumped to the next major","yarn version major --deferred"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);let n=r.get("preferDeferredVersions");this.deferred&&(n=!0),this.immediate&&(n=!1);let c=ZL.default.valid(this.strategy),f=this.strategy==="decline",p;if(c)if(a.manifest.version!==null){let E=Kz(a.manifest.version,this.strategy);E!==null?p=E:p=this.strategy}else p=this.strategy;else{let E=a.manifest.version;if(!f){if(E===null)throw new nt("Can't bump the version if there wasn't a version to begin with - use 0.0.0 as initial version then run the command again.");if(typeof E!="string"||!ZL.default.valid(E))throw new nt(`Can't bump the version (${E}) if it's not valid semver`)}p=W1(this.strategy)}if(!n){let C=(await IP(s)).get(a);if(typeof C<"u"&&p!=="decline"){let S=JL(a.manifest.version,p);if(ZL.default.lt(S,C))throw new nt(`Can't bump the version to one that would be lower than the current deferred one (${C})`)}}let h=await V1(s,{allowEmpty:!0});return h.releases.set(a,p),await h.saveAll(),n?0:await this.cli.run(["version","apply"])}};var tqt={configuration:{deferredVersionFolder:{description:"Folder where are stored the versioning files",type:"ABSOLUTE_PATH",default:"./.yarn/versions"},preferDeferredVersions:{description:"If true, running `yarn version` will assume the `--deferred` flag unless `--immediate` is set",type:"BOOLEAN",default:!1}},commands:[J1,z1,Z1]},rqt=tqt;var Zz={};Vt(Zz,{WorkspacesFocusCommand:()=>X1,WorkspacesForeachCommand:()=>e2,default:()=>sqt});Ve();Ve();Wt();var X1=class extends ut{constructor(){super(...arguments);this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.production=ge.Boolean("--production",!1,{description:"Only install regular dependencies by omitting dev dependencies"});this.all=ge.Boolean("-A,--all",!1,{description:"Install the entire project"});this.workspaces=ge.Rest()}static{this.paths=[["workspaces","focus"]]}static{this.usage=ot.Usage({category:"Workspace-related commands",description:"install a single workspace and its dependencies",details:"\n This command will run an install as if the specified workspaces (and all other workspaces they depend on) were the only ones in the project. If no workspaces are explicitly listed, the active one will be assumed.\n\n Note that this command is only very moderately useful when using zero-installs, since the cache will contain all the packages anyway - meaning that the only difference between a full install and a focused install would just be a few extra lines in the `.pnp.cjs` file, at the cost of introducing an extra complexity.\n\n If the `-A,--all` flag is set, the entire project will be installed. Combine with `--production` to replicate the old `yarn install --production`.\n "})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n=await Jr.find(r);await s.restoreInstallState({restoreResolutions:!1});let c;if(this.all)c=new Set(s.workspaces);else if(this.workspaces.length===0){if(!a)throw new ar(s.cwd,this.context.cwd);c=new Set([a])}else c=new Set(this.workspaces.map(f=>s.getWorkspaceByIdent(q.parseIdent(f))));for(let f of c)for(let p of this.production?["dependencies"]:Ht.hardDependencies)for(let h of f.manifest.getForScope(p).values()){let E=s.tryWorkspaceByDescriptor(h);E!==null&&c.add(E)}for(let f of s.workspaces)c.has(f)?this.production&&f.manifest.devDependencies.clear():(f.manifest.installConfig=f.manifest.installConfig||{},f.manifest.installConfig.selfReferences=!1,f.manifest.dependencies.clear(),f.manifest.devDependencies.clear(),f.manifest.peerDependencies.clear(),f.manifest.scripts.clear());return await s.installWithNewReport({json:this.json,stdout:this.context.stdout},{cache:n,persistProject:!1})}};Ve();Ve();Ve();Wt();var $1=et(Sa()),zOe=et(Md());Ul();var e2=class extends ut{constructor(){super(...arguments);this.from=ge.Array("--from",{description:"An array of glob pattern idents or paths from which to base any recursion"});this.all=ge.Boolean("-A,--all",{description:"Run the command on all workspaces of a project"});this.recursive=ge.Boolean("-R,--recursive",{description:"Run the command on the current workspace and all of its recursive dependencies"});this.worktree=ge.Boolean("-W,--worktree",{description:"Run the command on all workspaces of the current worktree"});this.verbose=ge.Counter("-v,--verbose",{description:"Increase level of logging verbosity up to 2 times"});this.parallel=ge.Boolean("-p,--parallel",!1,{description:"Run the commands in parallel"});this.interlaced=ge.Boolean("-i,--interlaced",!1,{description:"Print the output of commands in real-time instead of buffering it"});this.jobs=ge.String("-j,--jobs",{description:"The maximum number of parallel tasks that the execution will be limited to; or `unlimited`",validator:vU([Ao(["unlimited"]),rB(BU(),[DU(),SU(1)])])});this.topological=ge.Boolean("-t,--topological",!1,{description:"Run the command after all workspaces it depends on (regular) have finished"});this.topologicalDev=ge.Boolean("--topological-dev",!1,{description:"Run the command after all workspaces it depends on (regular + dev) have finished"});this.include=ge.Array("--include",[],{description:"An array of glob pattern idents or paths; only matching workspaces will be traversed"});this.exclude=ge.Array("--exclude",[],{description:"An array of glob pattern idents or paths; matching workspaces won't be traversed"});this.publicOnly=ge.Boolean("--no-private",{description:"Avoid running the command on private workspaces"});this.since=ge.String("--since",{description:"Only include workspaces that have been changed since the specified ref.",tolerateBoolean:!0});this.dryRun=ge.Boolean("-n,--dry-run",{description:"Print the commands that would be run, without actually running them"});this.commandName=ge.String();this.args=ge.Proxy()}static{this.paths=[["workspaces","foreach"]]}static{this.usage=ot.Usage({category:"Workspace-related commands",description:"run a command on all workspaces",details:"\n This command will run a given sub-command on current and all its descendant workspaces. Various flags can alter the exact behavior of the command:\n\n - If `-p,--parallel` is set, the commands will be ran in parallel; they'll by default be limited to a number of parallel tasks roughly equal to half your core number, but that can be overridden via `-j,--jobs`, or disabled by setting `-j unlimited`.\n\n - If `-p,--parallel` and `-i,--interlaced` are both set, Yarn will print the lines from the output as it receives them. If `-i,--interlaced` wasn't set, it would instead buffer the output from each process and print the resulting buffers only after their source processes have exited.\n\n - If `-t,--topological` is set, Yarn will only run the command after all workspaces that it depends on through the `dependencies` field have successfully finished executing. If `--topological-dev` is set, both the `dependencies` and `devDependencies` fields will be considered when figuring out the wait points.\n\n - If `-A,--all` is set, Yarn will run the command on all the workspaces of a project.\n\n - If `-R,--recursive` is set, Yarn will find workspaces to run the command on by recursively evaluating `dependencies` and `devDependencies` fields, instead of looking at the `workspaces` fields.\n\n - If `-W,--worktree` is set, Yarn will find workspaces to run the command on by looking at the current worktree.\n\n - If `--from` is set, Yarn will use the packages matching the 'from' glob as the starting point for any recursive search.\n\n - If `--since` is set, Yarn will only run the command on workspaces that have been modified since the specified ref. By default Yarn will use the refs specified by the `changesetBaseRefs` configuration option.\n\n - If `--dry-run` is set, Yarn will explain what it would do without actually doing anything.\n\n - The command may apply to only some workspaces through the use of `--include` which acts as a whitelist. The `--exclude` flag will do the opposite and will be a list of packages that mustn't execute the script. Both flags accept glob patterns (if valid Idents and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them. You can also use the `--no-private` flag to avoid running the command in private workspaces.\n\n The `-v,--verbose` flag can be passed up to twice: once to prefix output lines with the originating workspace's name, and again to include start/finish/timing log lines. Maximum verbosity is enabled by default in terminal environments.\n\n If the command is `run` and the script being run does not exist the child workspace will be skipped without error.\n ",examples:[["Publish all packages","yarn workspaces foreach -A --no-private npm publish --tolerate-republish"],["Run the build script on all descendant packages","yarn workspaces foreach -A run build"],["Run the build script on current and all descendant packages in parallel, building package dependencies first","yarn workspaces foreach -Apt run build"],["Run the build script on several packages and all their dependencies, building dependencies first","yarn workspaces foreach -Rpt --from '{workspace-a,workspace-b}' run build"]]})}static{this.schema=[iB("all",Wf.Forbids,["from","recursive","since","worktree"],{missingIf:"undefined"}),bU(["all","recursive","since","worktree"],{missingIf:"undefined"})]}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd);if(!this.all&&!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState();let n=this.cli.process([this.commandName,...this.args]),c=n.path.length===1&&n.path[0]==="run"&&typeof n.scriptName<"u"?n.scriptName:null;if(n.path.length===0)throw new nt("Invalid subcommand name for iteration - use the 'run' keyword if you wish to execute a script");let f=Ce=>{this.dryRun&&this.context.stdout.write(`${Ce} +`)},p=()=>{let Ce=this.from.map(g=>$1.default.matcher(g));return s.workspaces.filter(g=>{let we=q.stringifyIdent(g.anchoredLocator),Ee=g.relativeCwd;return Ce.some(fe=>fe(we)||fe(Ee))})},h=[];if(this.since?(f("Option --since is set; selecting the changed workspaces as root for workspace selection"),h=Array.from(await Qa.fetchChangedWorkspaces({ref:this.since,project:s}))):this.from?(f("Option --from is set; selecting the specified workspaces"),h=[...p()]):this.worktree?(f("Option --worktree is set; selecting the current workspace"),h=[a]):this.recursive?(f("Option --recursive is set; selecting the current workspace"),h=[a]):this.all&&(f("Option --all is set; selecting all workspaces"),h=[...s.workspaces]),this.dryRun&&!this.all){for(let Ce of h)f(` +- ${Ce.relativeCwd} + ${q.prettyLocator(r,Ce.anchoredLocator)}`);h.length>0&&f("")}let E;if(this.recursive?this.since?(f("Option --recursive --since is set; recursively selecting all dependent workspaces"),E=new Set(h.map(Ce=>[...Ce.getRecursiveWorkspaceDependents()]).flat())):(f("Option --recursive is set; recursively selecting all transitive dependencies"),E=new Set(h.map(Ce=>[...Ce.getRecursiveWorkspaceDependencies()]).flat())):this.worktree?(f("Option --worktree is set; recursively selecting all nested workspaces"),E=new Set(h.map(Ce=>[...Ce.getRecursiveWorkspaceChildren()]).flat())):E=null,E!==null&&(h=[...new Set([...h,...E])],this.dryRun))for(let Ce of E)f(` +- ${Ce.relativeCwd} + ${q.prettyLocator(r,Ce.anchoredLocator)}`);let C=[],S=!1;if(c?.includes(":")){for(let Ce of s.workspaces)if(Ce.manifest.scripts.has(c)&&(S=!S,S===!1))break}for(let Ce of h){if(c&&!Ce.manifest.scripts.has(c)&&!S&&!(await In.getWorkspaceAccessibleBinaries(Ce)).has(c)){f(`Excluding ${Ce.relativeCwd} because it doesn't have a "${c}" script`);continue}if(!(c===r.env.npm_lifecycle_event&&Ce.cwd===a.cwd)){if(this.include.length>0&&!$1.default.isMatch(q.stringifyIdent(Ce.anchoredLocator),this.include)&&!$1.default.isMatch(Ce.relativeCwd,this.include)){f(`Excluding ${Ce.relativeCwd} because it doesn't match the --include filter`);continue}if(this.exclude.length>0&&($1.default.isMatch(q.stringifyIdent(Ce.anchoredLocator),this.exclude)||$1.default.isMatch(Ce.relativeCwd,this.exclude))){f(`Excluding ${Ce.relativeCwd} because it matches the --exclude filter`);continue}if(this.publicOnly&&Ce.manifest.private===!0){f(`Excluding ${Ce.relativeCwd} because it's a private workspace and --no-private was set`);continue}C.push(Ce)}}if(this.dryRun)return 0;let P=this.verbose??(this.context.stdout.isTTY?1/0:0),I=P>0,R=P>1,N=this.parallel?this.jobs==="unlimited"?1/0:Number(this.jobs)||Math.ceil(As.availableParallelism()/2):1,U=N===1?!1:this.parallel,W=U?this.interlaced:!0,te=(0,zOe.default)(N),ie=new Map,Ae=new Set,ce=0,me=null,pe=!1,Be=await Ot.start({configuration:r,stdout:this.context.stdout,includePrefix:!1},async Ce=>{let g=async(we,{commandIndex:Ee})=>{if(pe)return-1;!U&&R&&Ee>1&&Ce.reportSeparator();let fe=nqt(we,{configuration:r,label:I,commandIndex:Ee}),[se,X]=JOe(Ce,{prefix:fe,interlaced:W}),[De,Re]=JOe(Ce,{prefix:fe,interlaced:W});try{R&&Ce.reportInfo(null,`${fe?`${fe} `:""}Process started`);let gt=Date.now(),j=await this.cli.run([this.commandName,...this.args],{cwd:we.cwd,stdout:se,stderr:De})||0;se.end(),De.end(),await X,await Re;let rt=Date.now();if(R){let Fe=r.get("enableTimers")?`, completed in ${he.pretty(r,rt-gt,he.Type.DURATION)}`:"";Ce.reportInfo(null,`${fe?`${fe} `:""}Process exited (exit code ${j})${Fe}`)}return j===130&&(pe=!0,me=j),j}catch(gt){throw se.end(),De.end(),await X,await Re,gt}};for(let we of C)ie.set(we.anchoredLocator.locatorHash,we);for(;ie.size>0&&!Ce.hasErrors();){let we=[];for(let[X,De]of ie){if(Ae.has(De.anchoredDescriptor.descriptorHash))continue;let Re=!0;if(this.topological||this.topologicalDev){let gt=this.topologicalDev?new Map([...De.manifest.dependencies,...De.manifest.devDependencies]):De.manifest.dependencies;for(let j of gt.values()){let rt=s.tryWorkspaceByDescriptor(j);if(Re=rt===null||!ie.has(rt.anchoredLocator.locatorHash),!Re)break}}if(Re&&(Ae.add(De.anchoredDescriptor.descriptorHash),we.push(te(async()=>{let gt=await g(De,{commandIndex:++ce});return ie.delete(X),Ae.delete(De.anchoredDescriptor.descriptorHash),{workspace:De,exitCode:gt}})),!U))break}if(we.length===0){let X=Array.from(ie.values()).map(De=>q.prettyLocator(r,De.anchoredLocator)).join(", ");Ce.reportError(3,`Dependency cycle detected (${X})`);return}let Ee=await Promise.all(we);Ee.forEach(({workspace:X,exitCode:De})=>{De!==0&&Ce.reportError(0,`The command failed in workspace ${q.prettyLocator(r,X.anchoredLocator)} with exit code ${De}`)});let se=Ee.map(X=>X.exitCode).find(X=>X!==0);(this.topological||this.topologicalDev)&&typeof se<"u"&&Ce.reportError(0,"The command failed for workspaces that are depended upon by other workspaces; can't satisfy the dependency graph")}});return me!==null?me:Be.exitCode()}};function JOe(t,{prefix:e,interlaced:r}){let s=t.createStreamReporter(e),a=new je.DefaultStream;a.pipe(s,{end:!1}),a.on("finish",()=>{s.end()});let n=new Promise(f=>{s.on("finish",()=>{f(a.active)})});if(r)return[a,n];let c=new je.BufferStream;return c.pipe(a,{end:!1}),c.on("finish",()=>{a.end()}),[c,n]}function nqt(t,{configuration:e,commandIndex:r,label:s}){if(!s)return null;let n=`[${q.stringifyIdent(t.anchoredLocator)}]:`,c=["#2E86AB","#A23B72","#F18F01","#C73E1D","#CCE2A3"],f=c[r%c.length];return he.pretty(e,n,f)}var iqt={commands:[X1,e2]},sqt=iqt;var nC=()=>({modules:new Map([["@yarnpkg/cli",iS],["@yarnpkg/core",nS],["@yarnpkg/fslib",q2],["@yarnpkg/libzip",Sv],["@yarnpkg/parsers",Z2],["@yarnpkg/shell",Qv],["clipanion",cB],["semver",oqt],["typanion",Ia],["@yarnpkg/plugin-essentials",$5],["@yarnpkg/plugin-compat",i9],["@yarnpkg/plugin-constraints",w9],["@yarnpkg/plugin-dlx",B9],["@yarnpkg/plugin-exec",D9],["@yarnpkg/plugin-file",P9],["@yarnpkg/plugin-git",X5],["@yarnpkg/plugin-github",Q9],["@yarnpkg/plugin-http",T9],["@yarnpkg/plugin-init",R9],["@yarnpkg/plugin-interactive-tools",TY],["@yarnpkg/plugin-jsr",FY],["@yarnpkg/plugin-link",NY],["@yarnpkg/plugin-nm",yV],["@yarnpkg/plugin-npm",yz],["@yarnpkg/plugin-npm-cli",bz],["@yarnpkg/plugin-pack",f7],["@yarnpkg/plugin-patch",Fz],["@yarnpkg/plugin-pnp",oV],["@yarnpkg/plugin-pnpm",Lz],["@yarnpkg/plugin-stage",Gz],["@yarnpkg/plugin-typescript",Wz],["@yarnpkg/plugin-version",zz],["@yarnpkg/plugin-workspace-tools",Zz]]),plugins:new Set(["@yarnpkg/plugin-essentials","@yarnpkg/plugin-compat","@yarnpkg/plugin-constraints","@yarnpkg/plugin-dlx","@yarnpkg/plugin-exec","@yarnpkg/plugin-file","@yarnpkg/plugin-git","@yarnpkg/plugin-github","@yarnpkg/plugin-http","@yarnpkg/plugin-init","@yarnpkg/plugin-interactive-tools","@yarnpkg/plugin-jsr","@yarnpkg/plugin-link","@yarnpkg/plugin-nm","@yarnpkg/plugin-npm","@yarnpkg/plugin-npm-cli","@yarnpkg/plugin-pack","@yarnpkg/plugin-patch","@yarnpkg/plugin-pnp","@yarnpkg/plugin-pnpm","@yarnpkg/plugin-stage","@yarnpkg/plugin-typescript","@yarnpkg/plugin-version","@yarnpkg/plugin-workspace-tools"])});function $Oe({cwd:t,pluginConfiguration:e}){let r=new wa({binaryLabel:"Yarn Package Manager",binaryName:"yarn",binaryVersion:un??""});return Object.assign(r,{defaultContext:{...wa.defaultContext,cwd:t,plugins:e,quiet:!1,stdin:process.stdin,stdout:process.stdout,stderr:process.stderr}})}function aqt(t){if(je.parseOptionalBoolean(process.env.YARN_IGNORE_NODE))return!0;let r=process.versions.node,s=">=18.12.0";if(Or.satisfiesWithPrereleases(r,s))return!0;let a=new nt(`This tool requires a Node version compatible with ${s} (got ${r}). Upgrade Node, or set \`YARN_IGNORE_NODE=1\` in your environment.`);return wa.defaultContext.stdout.write(t.error(a)),!1}async function eLe({selfPath:t,pluginConfiguration:e}){return await ze.find(ue.toPortablePath(process.cwd()),e,{strict:!1,usePathCheck:t})}function lqt(t,e,{yarnPath:r}){if(!le.existsSync(r))return t.error(new Error(`The "yarn-path" option has been set, but the specified location doesn't exist (${r}).`)),1;process.on("SIGINT",()=>{});let s={stdio:"inherit",env:{...process.env,YARN_IGNORE_PATH:"1"}};try{(0,ZOe.execFileSync)(process.execPath,[ue.fromPortablePath(r),...e],s)}catch(a){return a.status??1}return 0}function cqt(t,e){let r=null,s=e;return e.length>=2&&e[0]==="--cwd"?(r=ue.toPortablePath(e[1]),s=e.slice(2)):e.length>=1&&e[0].startsWith("--cwd=")?(r=ue.toPortablePath(e[0].slice(6)),s=e.slice(1)):e[0]==="add"&&e[e.length-2]==="--cwd"&&(r=ue.toPortablePath(e[e.length-1]),s=e.slice(0,e.length-2)),t.defaultContext.cwd=r!==null?K.resolve(r):K.cwd(),s}function uqt(t,{configuration:e}){if(!e.get("enableTelemetry")||XOe.isCI||!process.stdout.isTTY)return;ze.telemetry=new eC(e,"puba9cdc10ec5790a2cf4969dd413a47270");let s=/^@yarnpkg\/plugin-(.*)$/;for(let a of e.plugins.keys())tC.has(a.match(s)?.[1]??"")&&ze.telemetry?.reportPluginName(a);t.binaryVersion&&ze.telemetry.reportVersion(t.binaryVersion)}function tLe(t,{configuration:e}){for(let r of e.plugins.values())for(let s of r.commands||[])t.register(s)}async function fqt(t,e,{selfPath:r,pluginConfiguration:s}){if(!aqt(t))return 1;let a=await eLe({selfPath:r,pluginConfiguration:s}),n=a.get("yarnPath"),c=a.get("ignorePath");if(n&&!c)return lqt(t,e,{yarnPath:n});delete process.env.YARN_IGNORE_PATH;let f=cqt(t,e);uqt(t,{configuration:a}),tLe(t,{configuration:a});let p=t.process(f,t.defaultContext);return p.help||ze.telemetry?.reportCommandName(p.path.join(" ")),await t.run(p,t.defaultContext)}async function cwe({cwd:t=K.cwd(),pluginConfiguration:e=nC()}={}){let r=$Oe({cwd:t,pluginConfiguration:e}),s=await eLe({pluginConfiguration:e,selfPath:null});return tLe(r,{configuration:s}),r}async function zR(t,{cwd:e=K.cwd(),selfPath:r,pluginConfiguration:s}){let a=$Oe({cwd:e,pluginConfiguration:s});function n(){wa.defaultContext.stdout.write(`ERROR: Yarn is terminating due to an unexpected empty event loop. +Please report this issue at https://github.com/yarnpkg/berry/issues.`)}process.once("beforeExit",n);try{process.exitCode=42,process.exitCode=await fqt(a,t,{selfPath:r,pluginConfiguration:s})}catch(c){wa.defaultContext.stdout.write(a.error(c)),process.exitCode=1}finally{process.off("beforeExit",n),await le.rmtempPromise()}}zR(process.argv.slice(2),{cwd:K.cwd(),selfPath:ue.toPortablePath(ue.resolve(process.argv[1])),pluginConfiguration:nC()});})(); +/** + @license + Copyright (c) 2015, Rebecca Turner + + Permission to use, copy, modify, and/or distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH + REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND + FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, + INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR + OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + PERFORMANCE OF THIS SOFTWARE. + */ +/** + @license + Copyright Node.js contributors. All rights reserved. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to + deal in the Software without restriction, including without limitation the + rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + IN THE SOFTWARE. +*/ +/** + @license + The MIT License (MIT) + + Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com) + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. +*/ +/** + @license + Copyright Joyent, Inc. and other Node contributors. + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ +/*! Bundled license information: + +is-number/index.js: + (*! + * is-number + * + * Copyright (c) 2014-present, Jon Schlinkert. + * Released under the MIT License. + *) + +to-regex-range/index.js: + (*! + * to-regex-range + * + * Copyright (c) 2015-present, Jon Schlinkert. + * Released under the MIT License. + *) + +fill-range/index.js: + (*! + * fill-range + * + * Copyright (c) 2014-present, Jon Schlinkert. + * Licensed under the MIT License. + *) + +is-extglob/index.js: + (*! + * is-extglob + * + * Copyright (c) 2014-2016, Jon Schlinkert. + * Licensed under the MIT License. + *) + +is-glob/index.js: + (*! + * is-glob + * + * Copyright (c) 2014-2017, Jon Schlinkert. + * Released under the MIT License. + *) + +queue-microtask/index.js: + (*! queue-microtask. MIT License. Feross Aboukhadijeh *) + +run-parallel/index.js: + (*! run-parallel. MIT License. Feross Aboukhadijeh *) + +git-url-parse/lib/index.js: + (*! + * buildToken + * Builds OAuth token prefix (helper function) + * + * @name buildToken + * @function + * @param {GitUrl} obj The parsed Git url object. + * @return {String} token prefix + *) + +object-assign/index.js: + (* + object-assign + (c) Sindre Sorhus + @license MIT + *) + +react/cjs/react.production.min.js: + (** @license React v17.0.2 + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + *) + +scheduler/cjs/scheduler.production.min.js: + (** @license React v0.20.2 + * scheduler.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + *) + +react-reconciler/cjs/react-reconciler.production.min.js: + (** @license React v0.26.2 + * react-reconciler.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + *) + +is-windows/index.js: + (*! + * is-windows + * + * Copyright © 2015-2018, Jon Schlinkert. + * Released under the MIT License. + *) +*/ diff --git a/.yarnrc.yml b/.yarnrc.yml new file mode 100644 index 0000000..bd660b3 --- /dev/null +++ b/.yarnrc.yml @@ -0,0 +1,15 @@ +compressionLevel: mixed + +enableGlobalCache: false + +enableImmutableInstalls: false + +enableProgressBars: false + +logFilters: + - code: YN0013 + level: discard + +nodeLinker: node-modules + +yarnPath: .yarn/releases/yarn-4.9.1.cjs diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..e1719a7 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,2036 @@ +# CHANGELOG + +## 14.0.1 Dec 9, 2025 + +Changes: + +- fix(x-randomvalues): prioritize native RN modules over polyfilled crypto ([#2013](https://github.com/pezkuwichain/pezkuwi-common/pull/2013)) +- sr25519: switch from wasm to micro-sr25519 ([#1971](https://github.com/pezkuwichain/pezkuwi-common/pull/1971)) + + +## 13.5.9 Nov 25, 2025 + +Changes: + +- Bump polkadot dependencies ([#2011](https://github.com/pezkuwichain/pezkuwi-common/pull/2011)) + + +## 13.5.8 Nov 11, 2025 + +Changes: + +- Bump @pezkuwi dependencies ([#2009](https://github.com/pezkuwichain/pezkuwi-common/pull/2009)) + + +## 13.5.7 Oct 13, 2025 + +Changes: + +- Revert "Set pbkdf2Encode rounds to default to 210,000" ([#2007](https://github.com/pezkuwichain/pezkuwi-common/pull/2007)) + + +## 13.5.6 Aug 26, 2025 + +Changes: + +- Set pbkdf2Encode rounds to default to 210,000 ([#1983](https://github.com/pezkuwichain/pezkuwi-common/pull/1983)) +- Bump @pezkuwi/wasm deps ([#2002](https://github.com/pezkuwichain/pezkuwi-common/pull/2002)) + +Contributed: + +- Add DENTNet to generic Pezkuwi app supported chains ([#1942](https://github.com/pezkuwichain/pezkuwi-common/pull/1942)) + +## 13.5.5 Aug 11, 2025 + +Changes: + +- Add ledger support for Mythos ([#1969](https://github.com/pezkuwichain/pezkuwi-common/pull/1969)) + +## 13.5.4 July 28, 2025 + +Changes: + +- Add Creditcoin3 support to Generic Ledger App ([#1985](https://github.com/pezkuwichain/pezkuwi-common/pull/1985)) + +## 13.5.3 July 1, 2025 + +Changes: + +- Update polkadot dependencies ([#1995](https://github.com/pezkuwichain/pezkuwi-common/pull/1995)) +- Add Optional Strict Input Checking to u8aToU8a ([#1994](https://github.com/pezkuwichain/pezkuwi-common/pull/1994)) +- Update scrypt parameter validation ([#1993](https://github.com/pezkuwichain/pezkuwi-common/pull/1993)) + +## 13.5.2 Jun 17, 2025 + +Changes: + +- fix: enhance error handling for secure random number generation in React Native ([#1991](https://github.com/pezkuwichain/pezkuwi-common/pull/1991)) +- Add input length validation in scryptFromU8a function ([#1990](https://github.com/pezkuwichain/pezkuwi-common/pull/1990)) + +Contributed: + +- Add Liberland support to Generic Ledger App ([#1989](https://github.com/pezkuwichain/pezkuwi-common/pull/1989)) + +## 13.5.1 May 19, 2025 + +Changes: + +- Ledger ECDSA signing support ([#1986](https://github.com/pezkuwichain/pezkuwi-common/pull/1986)) +- Bump yarn to 4.9.1 ([#1987](https://github.com/pezkuwichain/pezkuwi-common/pull/1987)) + + +## 13.4.4 Apr 14, 2025 + +Changes: + +- Improve objectSpread function property handling ([#1982](https://github.com/pezkuwichain/pezkuwi-common/pull/1982)) + + +## 13.4.3 Feb 17, 2025 + +Changes: + +- Rollback ws change in x-ws ([#1980](https://github.com/pezkuwichain/pezkuwi-common/pull/1980)) + NOTE: this rollbacks changes made in ([#1976](https://github.com/pezkuwichain/pezkuwi-common/pull/1976)) to ensure websocket usage doesnt break in any downstream libs. + + +## 13.4.2 Feb 17, 2025 + +Changes: + +- Cast ws as global.WebSocket ([#1978](https://github.com/pezkuwichain/pezkuwi-common/pull/1978)) + + +## 13.4.1 Feb 16, 2025 + +Changes: + +- Enable KeyringPair Creation with Custom Mnemonic Wordlists ([#1974](https://github.com/pezkuwichain/pezkuwi-common/pull/1974)) +- Use ws library in Node.js 22+ for Better WebSocket Error Handling ([#1976](https://github.com/pezkuwichain/pezkuwi-common/pull/1976)) +- Fix Misclassification of ECDSA Signatures in `verifyMultisig` ([#1973](https://github.com/pezkuwichain/pezkuwi-common/pull/1973)) +- Bump dev to 0.83.2 ([#1972](https://github.com/pezkuwichain/pezkuwi-common/pull/1972)) +- Bump yarn to 4.6.0 ([#1967](https://github.com/pezkuwichain/pezkuwi-common/pull/1967)) + + +## 13.3.1 Jan 6, 2025 + +Changes: + +- Give compatibility for nodejs v22 + - Fix `getSeparator` which fixes toLocaleString ([#1965](https://github.com/pezkuwichain/pezkuwi-common/pull/1965)) +- 2025 Headers ([#1963](https://github.com/pezkuwichain/pezkuwi-common/pull/1963)) + + +## 13.2.3 Nov 11, 2024 + +Contributed: + +- Add Vara support to the Generic Ledger App ([#1958](https://github.com/pezkuwichain/pezkuwi-common/pull/1958)) (Thanks to https://github.com/breathx) + +Changes: + +- Bump Dev to 0.82.1 ([#1959](https://github.com/pezkuwichain/pezkuwi-common/pull/1959)) + + +## 13.2.2 Oct 28, 2024 + +Contributed: + +- Add Polimec support to the Generic Ledger App ([#1945](https://github.com/pezkuwichain/pezkuwi-common/pull/1945)) (Thanks to https://github.com/lrazovic) +- Add Frequency to the Generic Ledger App ([#1955](https://github.com/pezkuwichain/pezkuwi-common/pull/1955)) (Thanks to https://github.com/wilwade) + +Changes: + +- Bump yarn to 4.5.1 ([#1953](https://github.com/pezkuwichain/pezkuwi-common/pull/1953)) + + +## 13.2.1 Oct 21, 2024 + +Contributed: + +- Add bittensor to genericLedgerApps (Thanks to https://github.com/camfairchild) ([#1941](https://github.com/pezkuwichain/pezkuwi-common/pull/1941)) + +Changes: + +- Fix Deno CI Build ([#1947](https://github.com/pezkuwichain/pezkuwi-common/pull/1947)) +- Bump yarn to 4.5.0 ([#1946](https://github.com/pezkuwichain/pezkuwi-common/pull/1946)) +- Update Ledger Deps ([#1948](https://github.com/pezkuwichain/pezkuwi-common/pull/1948)) +- Update WS and deps ([#1949](https://github.com/pezkuwichain/pezkuwi-common/pull/1949)) +- Bump polkadot/wasm to 7.4.1 ([#1950](https://github.com/pezkuwichain/pezkuwi-common/pull/1950)) +- Bump dev to 0.81.2 ([#1951](https://github.com/pezkuwichain/pezkuwi-common/pull/1951)) + - Allows for CJS target in build + + +## 13.1.1 Sep 16, 2024 + +Contributed: + +HydraDx - Hydration Rebrand Thanks to (https://github.com/jak-pan) ([#1923](https://github.com/pezkuwichain/pezkuwi-common/pull/1923)) + +Changes: + +- Update all deps that have patch releases ([#1934](https://github.com/pezkuwichain/pezkuwi-common/pull/1934)) +- Bump yarn to 4.4.1 ([#1940](https://github.com/pezkuwichain/pezkuwi-common/pull/1940)) +- Update ss58-registry to 1.50.0 ([#1937](https://github.com/pezkuwichain/pezkuwi-common/pull/1937)) +- Update dev and typescript ([#1936](https://github.com/pezkuwichain/pezkuwi-common/pull/1936)) +- Add Encointer and Integritee to Ledger, and adjust tests ([#1939](https://github.com/pezkuwichain/pezkuwi-common/pull/1939)) + - This PR added the addition of `genericLedgerApps` and `prevLedgerRecord` objects. They both combine into `ledgerApps` in `hw-ledger/defaults`. + + +## 13.0.2 July 12, 2024 + +Contributed: + +- Add peaq support for ledger (Thanks to https://github.com/lavish0000) + + +## 13.0.1 July 12, 2024 + +Breaking Changes: + +- Add Support for latest Ledger App + - This deprecates `class Ledger` in favor of `class LedgerGeneric` + - More info in the following PR ([#1925](https://github.com/pezkuwichain/pezkuwi-common/pull/1925)) + +Changes: + +- Bump dev to 0.79.1 +- Comments around pair encode/decode 1-3 +- Bump ws, react-native, ss58Registry +- Bump yarn to 4.3.1 +- Update CI to checkout and setup_node v4 + + +## 12.6.2 Dec 18, 2023 + +Changes: + +- Update to latest `@pezkuwi/wasm-crypto` +- Upgrade dependencies to latest versions + + +## 12.6.1 Nov 18, 2023 + +Contributed: + +- Ledger support for Quartz (Thanks to https://github.com/CertainLach) +- Add flag to disable same-version esm/cjs warnings (Thanks to https://github.com/forgetso) + +Changes: + +- Adjust logger check for `process.env` +- Adjust `isRiscV` helper to check for `PVM\0` bytes +- Drop support for Node 16 (EOL 11 Sep 2023) +- Upgrade dependencies to latest stable versions + + +## 12.5.1 Sep 15, 2023 + +Contributed: + +- Add `isRiskV` helper (Thanks to https://github.com/peetzweg) +- Ledger support for Enjin & Matrixchain (Thanks to https://github.com/leonardocustodio) + +Changes: + +- Expand interface type comments (assists in-editor helpers) +- Upgrade dependencies to latest stable versions + + +## 12.4.2 Aug 23, 2023 + +Changes: + +- Fix `u8aTo{BigInt, Bn, Number}` for non-negative `i{8, 16, 32...}` inputs +- Extend `u8aToBuffer` with `hasBuffer` check +- Adjust util tests (extract input/output arrays) + + +## 12.4.1 Aug 17, 2023 + +Changes: + +- Add support for Ledger `signRaw`, as exposed by lower-level +- Update code to use `?.` shortcuts where appropriate +- Adjust `u8aToBuffer` & `isBuffer` typings to not require `Buffer` +- Use `stringify/import.meta.url` helpers in specs +- Upgrade dependencies to latest stable versions + + +## 12.3.2 Jun 12, 2023 + +Changes: + +- Adjust `SubstrateNetwork` typing with `HexString` genesisHash +- Re-export `Constructor` type (deprecated, replaced with `Class`) + + +## 12.3.1 Jun 11, 2023 + +Changes: + +- Only allow padding characters in base64 strings +- Expand typings for keyring meta with known keys +- Adjust object index access for stricter tsconfig settings + + +## 12.2.2 Jun 4, 2023 + +Changes: + +- Apply missing count assignment for `for (...)` loops +- Remove unused `@types/*` dev dependencies +- Upgrade dependencies to latest stable versions + + +## 12.2.1 May 13, 2023 + +Changes: + +- Align `u8aToBigInt` tests with `u8aToBn` +- Unroll loops on most-frequently used paths for `u8aToBigInt` +- Add `module` to `package.json` export map (ESM-only) +- Upgrade dependencies to latest stable versions + + +## 12.1.2 May 1, 2023 + +Changes: + +- Adjust typing for `isChildClass` & `Constructor` usage + + +## 12.1.1 Apr 29, 2023 + +Changes: + +- Add shareable `identity` & `noop` functions +- Flatten `Buffer | Uint8Array` types (as used) to base-only `Uint8Array` +- Apply `readonly` specifiers to private class fields where applicable +- Adjust compilation output for `__internal__` class fields +- Remove unused types from `util` +- Upgrade dependencies to latest stable versions + + +## 12.0.1 Apr 22, 2023 + +Contributed: + +- Add Cere genesisHash (Thanks to https://github.com/shamilkhan) + +Changes: + +- Swap secp256k1 functionality to `@noble/curves` +- Swap ed25519 functionality to `@noble/curves` +- Replace `tweetnacl` secretbox usage with slimmer local version +- Adjust `isCodec` helper with closer API alignment +- Initial steps to multi-language bip39 support +- Use Node webcrypto for Node `getRandomValues` support +- Upgrade dependencies to latest stable versions +- Drop support for Node 14 (EOL 30 Apr 2023) + + +## 11.1.3 Apr 1, 2023 + +Contributed: + +- Add Bittensor genesisHash (Thanks to https://github.com/camfairchild) + +Changes: + +- Allow empty string as valid base32/base58/base64 decoder input +- Add additional/missing `/*#__PURE__*/` annotations +- Upgrade dependencies to latest stable versions + + +## 11.1.2 Mar 25, 2023 + +Changes: + +- Expand error details for invalid publicKeys in secp256k1 compress/expand operations +- Expand `@pezkuwi/hw-ledger` with specific per-method JSDoc +- Upgrade dependencies to latest stable versions + + +## 11.1.1 Mar 18, 2023 + +Contributed: + +- Add 3DPass genesisHash (Thanks to https://github.com/fedosov) + +Changes: + +- Remove support for encrypt/decrypt functionality on keypair +- Upgrade dependencies to latest stable versions + + +## 11.0.2 Mar 11, 2023 + +Changes: + +- Use consistent `.js` imports in source files (TS moduleResolution) +- Remove TS resolveJsonModule option +- Upgrade to `@pezkuwi/wasm-crypto` 7.0.3 + + +## 11.0.1 Mar 4, 2023 + +Changes: + +- Change `@pezkuwi/x-ws` to use [ws](https://www.npmjs.com/package/ws) package (previous: `websocket`) +- Add `/*#__PURE__*/` annotations for `@pezkuwi/x-*` packages +- Swap TS -> JS compiler to use tsc (from babel) +- Adjust all tests to use `node:test` runner (ESM variants) +- Move `cryptoWaitReady()` top-level in test files +- Upgrade to `@pezkuwi/wasm-crypto` 7.0.1 + + +## 10.4.2 Feb 19, 2023 + +Contributed: + +- Ledger support for Pendulum (Thanks to https://github.com/carlosala) + +Changes: + +- Ensure `u8aToU8a` correctly unwraps Buffer value (check ordering) +- Upgrade dependencies to latest stable versions + + +## 10.4.1 Feb 12, 2023 + +Contributed: + +- Locale support for number formatting (Thanks to https://github.com/alko89) +- Ledger support for Picasso (Thanks to https://github.com/carlosala) + +Changes: + +- Add `isClass` helper (checks if input is actual Class Constructor) +- Adjust `isChildClass` to rely on new `isClass` +- Upgrade dependencies to latest stable versions + + +## 10.3.1 Jan 28, 2023 + +Contributed: + +- Ledger support for Ternoa (Thanks to https://github.com/mohsinriaz17) + +Changes: + +- Expand `arrayChunk` tests +- Adjust output for Ledger sanity checks +- Expand exported `bigint` constants to match with those in `BN` +- Adjust internal character maps to operate on `Uint8Array` instad of `Array` +- Upgrade dependencies to latest stable versions + + +## 10.2.6 Jan 13, 2023 + +Changes: + +- Drop stray `console.error` log (it really _is_ Friday 13th) + + +## 10.2.5 Jan 13, 2023 + +Changes: + +- Bugfix for `formatBalance` (forceUnit) with `BN` inputs where output is less than 0 + + +## 10.2.4 Jan 13, 2023 + +Changes: + +- Add the `withAll` (default false) flag to `formatBalance` to format to max decimals +- Add the `withZero` (default true) flags to `formatBalance` to retain trailing zeros + + +## 10.2.3 Jan 7, 2023 + +Changes: + +- Adjust `isBuffer` check on `xglobal` (no auto-polyfill detection on eg. parcel) +- Upgrade dependencies to latest stable versions + + +## 10.2.2 Jan 6, 2023 + +Contributed: + +- Adjust Nodle Ledger mapping (Thanks to https://github.com/aliXsed) + +Changes: + +- Upgrade dependencies to latest stable versions + + +## 10.2.1 Dec 4, 2022 + +Contributed: + +- Ledger support for Ajuna (Thanks to https://github.com/carlosala) + +Changes: + +- `has{Buffer, Process}` now checks on `globalThis` (helps bundlers with auto-injection) +- Add `/*#__PURE__*/` annotations for specific `export const something = someFunction(...)` +- Upgrade dependencies to latest stable versions +- Upgrade to `@pezkuwi/wasm-crypto` 6.4.1 + + +## 10.1.14 Nov 27, 2022 + +Changes: + +- Upgrade dependencies to latest stable versions + + +## 10.1.13 Nov 20, 2022 + +Contributed: + +- Ledger support for Origintrail (Thanks to https://github.com/carlosala) + +Changes: + +- Expand type descriptions around Ledger-based structures +- Upgrade dependencies to latest stable versions + + +## 10.1.12 Nov 13, 2022 + +Changes: + +- Upgrade dependencies to latest stable versions + + +## 10.1.11 Oct 15, 2022 + +Changes: + +- Upgrade dependencies to latest stable versions + + +## 10.1.10 Oct 7, 2022 + +Changes: + +- Ensure `{bn, n, number}ToHex(0)` always respects `bitLength` +- Upgrade dependencies to latest stable versions + + +## 10.1.9 Sep 24, 2022 + +Contributed: + +- Ledger support for VTB (Thanks to https://github.com/GuilaneDen) + +Changes: + +- Upgrade dependencies to latest stable versions + + +## 10.1.8 Sep 17, 2022 + +Contributed: + +- Ledger support for Darwinia, Phala & Khala (Thanks to https://github.com/carlosala) +- Ledger support for HydraX (Thanks to https://github.com/chcmedeiros) + +Changes: + +- Expand test cases +- Upgrade dependencies to latest stable versions + + +## 10.1.7 Sep 2, 2022 + +Changes: + +- Hoist Ledger interface wrapError (internal adjustment) +- Upgrade dependencies to latest stable versions + + +## 10.1.6 Aug 23, 2022 + +Changes: + +- Adjust `nextTick` with greater care for browser loops +- Upgrade dependencies to latest stable versions + + +## 10.1.5 Aug 21, 2022 + +Changes: + +- Adjust `ledgerApps` to use new `@zondax/ledger-substrate` interfaces +- Upgrade dependencies to latest stable versions + + +## 10.1.4 Aug 12, 2022 + +Contributed: + +- Ledger support for Kusama Bifrost (Thanks to https://github.com/awesomepan) + +Changes: + +- Upgrade dependencies to latest stable versions + + +## 10.1.3 Aug 5, 2022 + +Changes: + +- Optimization for empty `arrayFlatten` case +- Coding cleanups for logger (no `as` casting) +- Optiomizations in assertion checks + + +## 10.1.2 Jul 29, 2022 + +Changes: + +- Upgrade dependencies to latest stable versions + + +## 10.1.1 Jul 21, 2022 + +Changes: + +- Add `arrayUnzip` as reverse of `arrayZip` +- Adjust `objectSpread` to natively handle `Map` entries spreads +- Adjust `isAscii` check to disallow `\t`, `\n`, & `\r` characters +- Adjust `nobody` zero-key pair with pre-computed address +- Align `objectProperty` & `lazyMethod` call signatures (backwards compatible) +- Various internal speed optimizations +- Upgrade dependencies to latest stable versions + + +## 10.0.2 Jul 10, 2022 + +Changes: + +- Adjust async import in `x-fetch` to be Jest-friendly + + +## 10.0.1 Jul 8, 2022 + +- **Breaking change** In this major version version previously deprecated function signatures have been removed. If still using the old forms for either `bnToHex`, `bnToU8a`, `formatBalance`, `hexToBn` or `u8aToBn`, please update and only pass through an options object as the second parameter. + +Contributed: + +- Ledger support for Stafi (Thanks to https://github.com/kaelnew) +- Ledger support for Aleph Zero (Thanks to https://github.com/carlosala) +- Add genesis for HydraDX parachain (Thanks to https://github.com/jak-pan) + +Changes: + +- Remove deprecated signatures for `bnToHex`, `bnToU8a`, `formatBalance`, `hexToBn`, `u8aToBn` +- Align option handling of `n*` (BigInt) functions with `bn*` (BN) +- Allow for usage without `@types/node` installed +- Adjust for available ESM-only dependencies +- Upgrade dependencies to latest stable versions +- Upgrade to `@pezkuwi/wasm-crypto` 6.2.3 + + +## 9.7.2 Jul 4, 2022 + +Changes: + +- Upgrade to `@pezkuwi/wasm-crypto` 6.2.2 + + +## 9.7.1 Jul 1, 2022 + +Changes: + +- Update signatures where `readonly` arrays are used +- Upgrade dependencies to latest stable versions +- Upgrade to `@pezkuwi/wasm-crypto` 6.2.1 + + +## 9.6.2 Jun 25, 2022 + +Changes: + +- Fix `hexToU8a` where `0x` is not correctly converted + + +## 9.6.1 Jun 23, 2022 + +Changes: + +- Add `floatToU8a` and `u8aToFloat` (both 32 & 64-bit, le & be) +- Adjust `isUndefined` check (local variable available) +- Adjust use of `assert`, `isUndefined` & `isNull` + + +## 9.5.1 Jun 18, 2022 + +Contributed: + +- Update Bifrost genesisHash (Thanks to https://github.com/awesomepan) +- Add Ledger support for Composable (Thanks to https://github.com/carlosala) + +Changes: + +- Add `u8aToNumber` (limited, <= 48 bits) function +- Use `~~` as bitwise/faster `Math.floor` replacement +- Remove unneeded `objectSpread` option expansions +- Optimize `hexToU8a` operations +- Optimize `stringCamelCase` operations +- Optimize `u8aToBn` operations +- Additional internal/external comments (as missing) +- Upgrade dependencies to latest stable versions + + +## 9.4.1 Jun 4, 2022 + +Changes: + +- Add `nextTick` to `@pezkuwi/util` to defer execution to the queue +- Upgrade dependencies to latest stable versions + + +## 9.3.1 May 29, 2022 + +Contributed: + +- Add Ledger support for Parallel (Thanks to https://github.com/carlosala) +- Add Ledger support for Astar & Polkadex (Thanks to https://github.com/carlosala) + +Changes: + +- Adjust `u8aToU8a` checks with better `isU8a` shortcut +- Adjust compact conversion with unrolled loops +- Adjust `string{Camel, Pascal}Case` with loop (no map) +- Add `compactFromU8aLim` variant with Uint8Array-only inputs +- Add `u8aConcatStrict` variant with Uint8Array-only inputs +- Internal code maintainability enhancements +- Upgrade dependencies to latest stable versions + + +## 9.2.1 May 13, 2022 + +Contributed: + +- Add Ledger support for Acala (Thanks to https://github.com/ntduan) + +Changes: + +- Optimize `u8aToHex` with direct (non-hex) conversion +- Change all occurences of `.substr(...)` to `.substring(...)` +- Sync with upstream Substrate ss58 registry +- Mark deprecated function signatures (no removals) +- Re-enable auto init of `cryptoWaitReady()` +- Upgrade to `@pezkuwi/wasm-crypto` 6.1.1 + + +## 9.1.1 Apr 30, 2022 + +Contributed: + +- Add Ledger support for Statemint (Thanks to https://github.com/carlosala) +- Add Ledger support for xxnetwork (Thanks to https://github.com/xx-labs) + +Changes: + +- Adjust/dedupe output from `detectPackage` +- Adjust `isHex` performance test +- Add field-level comments to some `*Options` structures +- Add new Rococo genesisHash (reset) + + +## 9.0.1 Apr 9, 2022 + +- **Breaking change** In this major version the commonjs outputs are moved to a sub-folder. Since the export map and main field in package.json does reflect this change, there should be no usage changes. However the packages here will all need to be on the same version for internal linkage. + +Changes: + +- Be explicit in `@pezkuwi/util-crypto` re-exports from `@pezkuwi/networks` +- Output commonjs files under the `cjs/**` root +- Upgrade to `@pezkuwi/wasm-crypto` 6.0.1 + + +## 8.7.1 Mar 27, 2022 + +Changes: + +- Fix race-condition with wasm overrides, make `cryptoWaitReady` lazy +- Additional tests for `BN` & `BigInt` negative conversions +- Upgrade to `@pezkuwi/wasm-crypto` 5.1.1 + + +## 8.6.1 Mar 19, 2022 + +**Important** This contains an upgraded version of `@pezkuwi/wasm-crypto`. For users of asm.js, e.g. React Native, there are some additional upgrade instructions in the release notes for this version https://github.com/polkadot-js/wasm/releases/tag/v5.0.1 + +Contributed: + +- Add aditional Dock mainnet genesis (Thanks to https://github.com/lovesh) +- Add Westend genesis (Thanks to https://github.com/Nick-1979) +- Update README with ss58 links (Thanks to https://github.com/Nick-197) + +Changes: + +- Ensure invalid secp256k1 publicKeys are not returned +- Cater for Expo v41+ in RN random value generation +- Fixed for RN environment imports +- Internal split of details in `@pezkuwi/networks` +- Additional workaround for Vite bundling +- Upgrade to `@pezkuwi/wasm-crypto` 5.0.1 + + +## 8.5.1 Mar 12, 2022 + +Changes: + +- Adjust for bundlers where `import.meta.url` is undefined +- Upgrade dependencies to latest stable versions + + +## 8.4.1 Feb 14, 2022 + +Changes: + +- Use upstream `@substrate/ss58-registry` (instead of duplicating here) +- Swap `micro-base` to `@scure/base` (same package, audited) +- Bump `bn.js` library to latest 5.2.0 (has impact on e.g. API) +- Upgrade dependencies to latest stable versions + + +## 8.3.3 Jan 23, 2022 + +Changes: + +- Sync with upstream Substrate ss58 registry + + +## 8.3.2 Jan 15, 2022 + +Changes: + +- Correct network sorting (primary by prefix, secondary by name) +- Sync with upstream Substrate ss58 registry + + +## 8.3.1 Jan 9, 2022 + +Changes: + +- Fix `util-crypto` bundle generation (adjust `x-randomvalues`) +- Add all known Rococo genesis hashes +- `detectPackage` now uses optional `path` & `type` (`esm` or `cjs`) info +- Ensure package paths are available via ESM and CJS +- Upgrade 3rd party dependencies to latest +- Pin `@noble/*` to latest known tested integrated versions + + +## 8.2.2 Dec 19, 2021 + +Contributed: + +- Add Bifrost Ledger capabilities (Thanks to https://github.com/awesomepan) +- Add Sora genesisHash & Ledger capabilities (Thanks to https://github.com/NoodleSploder) + +Changes: + +- Add `isPromise` check utility function +- Add `assertUnreachable` for codepaths that should not be followed +- Preserve all-caps word splits in `stringCamelCase` +- Adjust `x-*` fallbacks via `x-global/extractGlobal` +- Sync with upstream Substrate ss58 registry +- Additional tests for `bip39` wordlists +- Maintainability cleanups +- Update to latest Ledger dependencies +- Swap to upstream `@noble` packages +- Adjust tsconfig with references +- 8.2.2 (8.2.1 failed CI due to incorrect CHANGELOG) + + +## 8.1.2 Dec 5, 2021 + +Changes: + +- Adjustment to non-full-word consecutive uppercase via `string{Camel, Pascal}Case` + + +## 8.1.1 Dec 5, 2021 + +Contributed: + +- Add Picasso genesisHash (Thanks to https://github.com/hussein-aitlahcen) + +Changes: + +- Allow for use of `secp256k1` from `@pezkuwi/wasm-crypto` +- Adjust `isBigInt` to not do `instanceof` check +- Ensure consequtive capitals in `stringCamelCase` are lowercased +- Use `@pezkuwi/x-bigint` for `BigInt` constructor +- Split `@noble/hashes` fork into `x-noble-hashes` +- Add `@noble/secp256k1` fork into `x-noble-secp256k1`, replaces `elliptic` + + +## 8.0.5 Dec 1, 2021 + +Changes: + +- Adjust sha3 expectation of `BigInt` availability + + +## 8.0.4 Nov 30, 2021 + +Changes: + +- Adjust `stringCamelCase` with leading `_` + + +## 8.0.3 Nov 30, 2021 + +Changes: + +- Remove `Buffer` usage in `x-randomvalues` +- Adjust `stringCamelCase` for all-caps parts + + +## 8.0.2 Nov 26, 2021 + +Changes: + +- Explicitly include BigInt patched versions + + +## 8.0.1 Nov 26, 2021 + +**Important** In the 8.0 version the hashing utilities have been consolidated around an optimized and audited version from `@noble/hashes`. As in the past the WASM hashing will be used by default if the environment is initialized. + +**Breaking change** The `schnorrkel*` functions have been renamed to `sr25519*`. Likewise the `ed25519` operations have been renamed from `nacl*` to `ed25519*`. Additionally the `{ed, sr, secp256k1}25519KeyPairFrom*` functions have been renamed to `{ed, sr, secp256k1}25519PairFrom*`. + +Changes: + +- Introduce `ed25519*` & `sr25519*` functions +- Replace camelcase dep with simplified/optimized version +- Replace (most) hashing operations with `@noble/hashes` +- Replace JS fallback for `xxhash` +- Adjust `BigInt` utility exports (with capability detection) +- Previously added `bi*` functions renamed to `n*` +- Extend performance tests with implementation compares +- Remove non-significant Node Buffer concat fill + + +## 7.9.2 Nov 22, 2021 + +Changes: + +- Fix TS compiled definitions for `base*` types +- Provide JS/Wasm interfaces for `hmacShaAsU8a` + + +## 7.9.1 Nov 21, 2021 + +Contributed: + +- Updated Polymesh genesisHash (Thanks to https://github.com/adamdossa) + +Changes: + +- Add strongly typed `object{Entries, Keys, Values}` utilities +- Add `{hex, u8a}ToBigInt` utilities +- Add `bi*` utilities for `bigint` operations (mirror of `bn*`) +- Add `stringPascalCase` utility +- Add `isCodec` to check for Codec-like structures +- Add `has*` detection shortcuts (e.g. `hasWasm` or `hasBuffer`) +- Add `sha256AsU8a` util (& replace use internally) +- Optimize for `hexToU8a` and `u8aToHex` functions +- Optimize `u8aEq` to use `DataView` for compares +- Align `base{32, 58, 64}*` around (audited) `micro-base` +- Space optimization for bip39 wordlists +- Sync with upstream Substrate ss58 registry +- Expand tests for uncovered functions + + +## 7.8.2 Nov 7, 2021 + +Changes: + +- Expose internal `isArray` check +- Move `object{Property, Properties}` from api repo + + +## 7.8.1 Nov 6, 2021 + +Contributed: + +- Added Acala genesisHash (Thanks to https://github.com/qwer951123) + +Changes: + +- Add `objectClear` and `objectSpread` utility functions +- Add `lazyMethod` & `lazyMethods` utility functions +- Sync with upstream Substrate ss58 registry + + +## 7.7.1 Oct 31, 2021 + +Contributed: + +- Add Genshiro support (Thanks to https://github.com/Overseven) + +Changes: + +- Add `arrayZip` to combine a key + value array into entries-like +- Assert `chainCode` inputs to `derive*`, protecting against misuse +- Adjust testnet detection in `@pezkuwi/networks` +- Adjust base library usage of `for` vs `reduce/map` +- Bump Ledger libraries to latest versions + + +## 7.6.1 Oct 23, 2021 + +Changes: + +- Update `xxhash*` to only use `Uint8Array` internally, no `Buffer` +- Adjust `isAscii` to check against original string codepoints (when provided) +- Adjust networks to sync with `paritytech/ss58-registry` +- Dedupe internal sr25519/ed25519 derivation functions +- Bump Ledger libraries to latest versions + + +## 7.5.1 Oct 16, 2021 + +Contributed: + +- Fix comment on `blake2AsU8a` (Thanks to https://github.com/tomokazukozuma) +- Update Ethereum derivation process (Thanks to https://github.com/joelamouche) + +Changes: + +- Derivation paths now caters for > `MAX_SAFE_INTEGER` unsigned values +- Sync with upstream Substrate ss58 registry +- Update ss58 registry handling (both previous and current versions) + + +## 7.4.1 Sep 17, 2021 + +Changes: + +- Add `u8aWrapBytes` & `u8aUnwrapBytes` (originally from `@pezkuwi/extension-dapp`) +- Verify both wrapped and unwrapped signatures transparently +- Adjust `isHex` return to `0x${string}` under TypeScript +- Adjust shared repo Jest config +- Sync with upstream Substrate ss58 registry +- Cleanup rollup build where `x-global` yields undefined + + +## 7.3.1 Aug 28, 2021 + +Contributed: + +- Added Bifrost genesisHash (Thanks to https://github.com/awesomepan) +- Added Stafi genesisHash (Thanks to https://github.com/Tore19) +- Add Ledger support for Nodle (Thanks to https://github.com/ETeissonniere) + +Changes: + +- Add support for `schnorrkelAgreement` (as exposed by new `wasm-crypto`) +- Ensure `schnorrkel*` functions allows hex inputs +- `@pezkuwi/wasm-crypto` 4.2.1 +- Sync with upstream Substrate ss58 registry + + +## 7.2.1 Aug 15, 2021 + +Contributed: + +- Always use `bigint` type to indicate instance (Thanks to https://github.com/ntduan) + +Changes: + +- Added `u8aEmpty` helper check, all 0 or no length +- Cleanup additional circular dependencies detected by rollup + + +## 7.1.2 Aug 11, 2021 + +Changes: + +- Ensure `@pezkuwi/util-crypto` doesn't re-export `packageInfo` from `@pezkuwi/networks` +- Minor TS style cleanups in `@pezkuwi/x-bundle` + + +## 7.1.1 Aug 2, 2021 + +Contributed: + +- Add keyring encrypt/decrypt functionality (Thanks to https://github.com/RoyTimes) + +Changes: + +- Bump Ledger libraries to latest versions + + +## 7.0.3 Jul 26, 2021 + +Changes: + +- Sync with upstream Substrate ss58 registry +- Bump Ledger libraries to latest versions + + +## 7.0.2 Jul 19, 2021 + +Changes: + +- Added `isCompact` utility for check on compact-like types +- Sync with upstream Substrate ss58 registry + + +## 7.0.1 Jul 11, 2021 + +- **Breaking change** The `@pezkuwi/x-rxjs` package has been removed. In `rxjs` 7.2.0 the compatibility issues at the base layer has been solved. +- **Breaking change** The named exports in `@pezkuwi/networks` has been changed + +Contributed: + +- Add Ledger config for Centrifuge (Thanks to https://github.com/mikiquantum) + +Changes: + +- Adjust `@pezkuwi/networks` to fully-descriptive exports +- Remove `@pezkuwi/x-rxjs`, direct import from `rxjs >= 7.2.0` required +- Allow building as a completely stand-alone browser bundle (experimental) +- Sync with upstream Substrate ss58 registry + + +## 6.11.1 Jul 5, 2021 + +Changes: + +- Cleanup unneeded dependencies for `@pezkuwi/x-global` +- Sync with upstream Substrate ss58 registry +- Bump Zondax dependencies (Statemine slip44 fix) + + +## 6.10.1 Jun 26, 2021 + +Contributed: + +- Add Karura genesisHash (Thanks to https://github.com/ntduan) + +Changes: + +- `isHex(value)` will now check for only `string` types (No `String` classes) +- Added `arrayShuffle(array)` to shuffle an array into a new output +- Added Statemine Ledger app information +- Simplify tests to use `{describe|it}.each` where applicable +- Sync with upstream Substrate ss58 registry + + +## 6.9.1 Jun 19, 2021 + +Changes: + +- Added `u8aCmp(a, b)` to do sorting compares +- Added `arrayRange(size, startAt = 0)` to create a range of numbers +- Added extensive mnemonic compare test (optional, skipped) + + +## 6.8.1 Jun 14, 2021 + +Contributed: + +- Add Ledger support for Edgeware (Thanks to https://github.com/raykyri) +- Fix `naclSeal` doc types (Thanks to https://github.com/agustinustheo) + +Changes: + +- Export `BN` in `@pezkuwi/util` +- Sync with upstream Substrate ss58 registry + + +## 6.7.1 Jun 6, 2021 + +Changes: + +- Add WebHID transport for Ledger +- Update to latest Ledger transport packages +- Remove old `Gerald` key for Moonbeam +- Cleanup testing keyring semgrep recommendations + + +## 6.6.1 May 29, 2021 + +Changes: + +- Adjust HD path validation & replacement +- Sync with Substrate ss58 registry + + +## 6.5.1 May 22, 2021 + +Changes: + +- Allow hdLedger derivation with optional 25th word password +- Sync with Substrate ss58 registry + + +## 6.4.1 May 15, 2021 + +Contributed: + +- Update genesis for HydraDx gen-3 (Thanks to https://github.com/jak-pan) +- Allow Ethereum pair in keyring addAddress (Thanks to https://github.com/joelamouche) + +Changes: + +- Added additional double-byte ss58 tests +- Aligned ss58 registry with Substrate +- Add explicit log for deprecation of `setSS58Format` + + +## 6.3.1 Apr 25, 2021 + +Changes: + +- Added `stringify` util to correctly handle `JSON.stringify` with `BigInt` values +- Additional input asserts for non-convertible values in `u8aToU8a` +- Adapt `@pezkuwi/x-global` to return `globalThis` as available +- Minor readability cleanups +- BN manipulation via in-place shifts (as applicable) +- Add explicit `engines` config to `package.json` + + +## 6.2.1 Apr 18, 2021 + +Contributed: + +- Added HydraDx genesis (Thanks to https://github.com/jak-pan) + +Changes: + +- Add `isAddress` and `validateAddress` functions (the latter will throw if invalid) +- Check `@pezkuwi/hw-ledger` against `@pezkuwi/networks` for discrepancies (test-only) +- Align ss58 registry with upstream Substrate + + +## 6.1.1 Apr 11, 2021 + +Contributed: + +- Adjust Polymath genesis in `@pezkuwi/networks` (Thanks to https://github.com/adamdossa) +- Adjust `@pezkuwi/util` logger for +/-/* compat (Thanks to https://github.com/Lezek123) +- Fix typo in `@pezkuwi/util` detect messaging (Thanks to https://github.com/amphineko) + +Changes: + +- Remove `@pezkuwi/networks` code duplication, manages data via script from upstream +- Align ss58 registry with upstream Substrate + + +## 6.0.5 Mar 8, 2021 + +Changes: + +- Fix for `@pezkuwi/x-rxjs` in Node CJS environments (no Node-specific import) + + +## 6.0.4 Mar 7, 2021 + +Contributed: + +- Enhance check for global process existence (Thanks to https://github.com/Yuripetusko) + +Changes: + +- Dedupe & optimize logger process.env checks + + +## 6.0.3 Mar 5, 2021 + +Changes: + +- Add import indirection for both CJS & ESM (where generated source file is commonjs) + + +## 6.0.2 Mar 5, 2021 + +Changes: + +- Fix `@pezkuwi/x-rxjs` ESM exports for Node environments (now different due to the ESM conversion) + + +## 6.0.1 Mar 5, 2021 + +**Important** In the 6.0 version the default package type has been changed to ESM modules by default. This should not affect usage, however since the output formats changed, a new major version is required. + +Contributed: + +- Add dev addresses for Frontier-based chains (Thanks to https://github.com/joelamouche) + +Changes: + +- Build to ESM by default (with cjs versions via export map) +- Allow addition or raw pairs on the keyring via `{add, create}FromPair` +- Extract re-usable json encryption/decryption functions + + +## 5.9.2 Feb 28, 2021 + +Changes: + +- Fix package detection for `@pezkuwi/networks` (no dependencies) + + +## 5.9.1 Feb 28, 2021 + +Changes: + +- Expand `detectPackage` with optional param allowing checks for monorepo versions +- Export logger `format` function directly as `loggerFormat` +- Expand tests and checks for `hdValidatePath` +- Remove `hdEthereum` class-based approach, simplify +- Cleanup formatting on nested conditionals in the `@pezkuwi/x-` packages +- All packages now export `packageInfo` from the root + + +## 5.8.1 Feb 26, 2021 + +Contributed: + +- Add ss58 information for HydraDX (Thanks to https://github.com/jak-pan) +- HD derivation for Ethereum (Thanks to https://github.com/joelamouche) + +Changes: + +- Adjust base64 encoding/decoding to not rely on Buffer being available +- Rework Ethereum derivation to only use Uint8Array internally +- Shared HD path validation for Ledger & Ethereum +- Additional derivation, encoding and decoding tests on keyring +- Align networks with upstream ss58 registry +- `@pezkuwi/wasm-crypto` 3.2.4 + + +## 5.7.1 Feb 21, 2021 + +**Breaking change** The signature of `pair.verify` now requires the signer public key as a parameter. If using `pair.verify` pass the publicKey (hex or Uint8Array) of the signer. + +Changes: + +- The signature on the keyring for `.verify` now explicitly requires the `publicKey` of the signer. Previously it only verified against an own public key. +- Add additional ss58 test vectors (against chains with >63 prefixes in the Substrate registry) + + +## 5.6.3 Feb 16, 2021 + +Contributed: + +- Add ss58 information for Aventus (Thanks to https://github.com/nahuseyoum) + +Changes: + +- Add `unlock(password)` to keypair (less confusing than only having `decodePkcs8`, equivalent to `lock()`) +- Change use of `detectPackage` to use `packageInfo.ts` +- Align with upstream ss58 registry +- `@pezkuwi/wasm-crypto` 3.2.3 + + +## 5.6.2 Feb 8, 2021 + +Changes: + +- `@pezkuwi/networks` now filters the new upstream-introduced `null` networks + + +## 5.6.1 Feb 7, 2021 + +Contributed: + +- Fix installation instructions in `@pezkuwi/x-global` (Thanks to https://github.com/raoulmillais) + +Changes: + +- Conform to new ss58 encoding with ids up to 16,383 (>= 64 as 2 bytes) +- Use JS sqrt inside `bnSqrt` when value <= MAX_SAFE_INTEGER +- Adjust all `Buffer.from` usages, prefer `Uint8Array` where possible +- Expand tests for keyring with `vrf{Sign, Verify}` +- Align `@pezkuwi/networks` with latest ss58 registry + + +## 5.5.2 Feb 2, 2021 + +Changes: + +- Expose `BN_{MILLION, BILLION}` constants (in addition to 2-9) + + +## 5.5.1 Jan 31, 2021 + +Changes: + +- Added `hdLedger` to util-crypto for Ledger-compatible bip32+ed25519 derivation +- Added `hmac{Sha256, 512}` to util-crypto +- Add `slip44` indices for Ledger into `@pezkuwi/networks` +- Remove `module` entry in `package.json` (only rely on exports map) +- Remove direct references to `global` object, use `@pezkuwi/x-global` +- Update `@ledgerhq` dependencies to latest + + +## 5.4.1 Jan 24, 2021 + +Contributed: + +- Adjust Ledger app lookup for Polymesh (Thanks to https://github.com/adamdossa) + +Changes: + +- Allow decimals as `number[]` & symbol as `string[]` in balanceFormat defaults +- Add `schnorrkelVrf{Sign, Verify}` to `@pezkuwi/util-crypto` +- Export `vrf{Sign, Verify}` on keyring interface +- Move `@pezkuwi/x-rxjs` packages from the api repo +- Align `@pezkuwi/networks` with Substrate master +- Explicit edcsa tests for derivation +- `@pezkuwi/wasm-crypto` 3.2.1 + + +## 5.3.1 Jan 17, 2021 + +**Important** For users of the `@pezkuwi/ledger` package, it is now included in this repo (since it is a general utility) and renamed to `@pezkuwi/hw-ledger` + +Contributed: + +- Add Dock Ledger integration (Thanks to https://github.com/lovesh) +- Add Polymesh Ledger integration (Thanks to https://github.com/adamdossa) +- Add flag for Ledger capabilities on networks (Thanks to https://github.com/Tbaut) + +Changes: + +- Move `@pezkuwi/ledger` packages into common +- Update `@pezkuwi/networks` to align with latest Substrate ss58-registry + + +## 5.2.1 Dec 27, 2020 + +Changes: + +- Add `arrayFlatten` to merge a series of arrays into a single +- Add `arrayChunk` to chunk an array into multiples of defined size +- Add `bitLength` param (allowed 256, 512) to `keccakAs{Hex, U8a}` +- Align `@pezkuwi/networks` with Substrate master + + +## 5.1.1 Dec 19, 2020 + +Changes: + +- `detectPackage` now can take a path-retrieval callback as second argument +- Adjust `blake2js` imports to consistently cater for esm & cjs usage +- Explicitly mark `detectPackage` usage as having side-effects +- Align `@pezkuwi/networks` with Substrate master +- `@pezkuwi/wasm-crypto` 3.1.1 + + +## 5.0.1 Dec 13, 2020 + +**Important** While this package contains no external interface changes, it now compiles and ships both cjs and esm modules. This means that modern bundlers will have more information for tree-shaking available. Additionally when using Node with `.mjs` extensions, the esm version imports will be used on recent Node versions. Adding an export map, as here, may have some impacts so a major semver bump is advised. There may be (small) dragons hiding in the dark corners... + +Changes: + +- Build and expose both cjs and esm via exports map +- Use `import type { ... }` form for all type imports +- Align with Substrate master network list +- Debug logs now don't depend on `NODE_ENV`, but rather `DEBUG=` (`*` logs all) +- Limit debug console output via `DEBUG_MAX=` value, trimming when passed +- Add `memoize` util, allowing for function memoization (as used in the API) +- Align `@pezkuwi/networks` with Substrate master +- `@pezkuwi/wasm-crypto` 3.0.1 + + +## 4.2.1 Nov 23, 2020 + +Changes: + +- Rename default Mega to Million, Giga to Billion and Tera to Trillion in formatter +- Dedupe bn.js by aligning versions between different libraries +- Add explicit link to base Substrate ss58 formats (as managed in `@pezkuwi/util`) + + +## 4.1.1 Nov 16, 2020 + +Contributed: + +- Expand ETH tests, allow for verification against address (Thanks to https://github.com/joelamouche) + +Changes: + +- Replace pbkdf2 imports with explicit use from sync-only package +- Adjust secp256k1 imports with shared elliptic +- Expand crypto tests for explicit wasm vs JS compares in all cases + + +## 4.0.1 Nov 8, 2020 + +- **Breaking change** Polyfills are not injected by these libraries anymore to avoid clobbering external globals, the user should provide them if their environment is missing base functionality. + +Changes: + +- Remove built-in utility polyfills for `Array.fill`, `String.padStart`, `String.padEnd` as well as `Object.setPrototypeOf`. These should be provided by the actual user of the libraries if so required. +- Update `@pezkuwi/wasm-crypto` library (under-the-hood cleanups) +- Remove explicit crypto polyfill injection (aligning with updated `@pezkuwi/wasm-crypto`) +- Add cross-environment `@pezkuwi/x-randomvalues` (for use in `@pezkuwi/wasm-crypto`) + + +## 3.7.1 Nov 1, 2020 + +Changes: + +- Remove the use of `chalk` (logger) for less overall dependencies +- `string*` utilities now also allows `String` (class) inputs +- Align bip39 use with wasm-crypto for English-only wordlist, default, non supplied) +- Adjust elliptic imports for explicit paths (allows tree-shaking) +- Add Totem (ss58 prefix 14) into `@pezkuwi/networks` +- Move `@pezkuwi/x-{fetch,textdecoder,textencoder,ws}` into `common` repo + + +## 3.6.1 Oct 18, 2020 + +Contributed: + +- Add evmToAddress and addressToEvm `@pezkuwi/util-crypto` (Thanks to https://github.com/jnaviask) +- Remove invalid link to docs (thanks to https://github.com/roccomuso) + +Changes: + +- Rename `mnemonicToBip39` to `mnemonicToLegacySeed` (used in non-Substrate compatible fashion) +- Update pair signature verification to handle MultiSignature results +- Move documentation to docs repo +- Added `@pezkuwi/networks` for a list of known networks and their identifying information + + +## 3.5.1 Sep 27, 2020 + +Contributed: + +- Add Dock network identifiers (Thanks to https://github.com/lovesh) + +Changes: + +- Use cross-environment TextDecoder & TextEncoder from the polkadot-js polyfills +- Add `isBase{32, 58, 64}` to `@pezkuwi/util-crypto` +- Add `base64{Pad, Trim}` to add/remove padding characters +- Add `createFromJson(json)` to keyring (create pair without adding) +- Balance formatter now outputs 4 numbers after the decimal point + + +## 3.4.1 Aug 31, 2020 + +Changes: + +- Allow for WASM-as-available `mnemonicToBip39` call (used for Ethereum-compatible keypairs) +- Add `isWasm` utility to check for valid WASM headers +- `@pezkuwi/wasm-crypto` 1.4.1 + + +## 3.3.1 Aug 24, 2020 + +Changes: + +- Add `addressRaw` to Keyring interface (if address encoding is different to publicKey) +- Allow for Ethereum pair signing and verification + + +## 3.2.1 Aug 17, 2020 + +Changes: + +- Allow for (optional, default blake2) hasher to secp256k1 sign/verify functions +- Utilities for secp256k1 publicKey expansion and compression +- Add basic Ethereum address utils (encode with checksum & checksum verification) +- Add Ethereum-compatible `mnemonicToBip39` seed creation function + + +## 3.1.1 Aug 10, 2020 + +Changes: + +- Add `deriveAddress(
, '//')` via sr25519 soft +- Use `scrypt` from WASM as available (JS fallback in place) +- Add `base32{Encode, Decode}` utilities (IPFS-compatible alphabet) +- Support IPFS compatibility flag in base58 encoding/decoding +- Update to `@pezkuwi/wasm-crypto` 1.3.1 + + +## 3.0.1 Jul 27, 2020 + +Contributed: + +- Add Katal ss58Format (Thanks to https://github.com/retotrinkler) + +Changes: + +- Adjust JSON pair output with scrypt kdf (version 3 output) + + +## 2.18.1 Jul 13, 2020 + +Changes: + +- Add `base64{Decode, Encode, Validate}` as crypto utils +- Extract `base58Validate` from base58 decode checks +- Add `isAscii` to allow detection of printable ASCII sequences (including tab, newline) +- Add `isUtf8` to allow detection of valid Utf8 sequences + + +## 2.17.1 Jul 6, 2020 + +Changes: + +- Add `encode{Derived, Multi}Address` to encode derived/multi addresses +- Correctly handle 0 inputs in `numberToU8a` +- Simplify and flatten base58 dependencies + + +## 2.16.1 Jun 29, 2020 + +Changes: + +- Adjust `addressCheck` and `encodeAddress` function to check for valid base58 alphabets (better error reporting) +- Rename `createKeySub` to `createKeyDerived` based on changed in Substrate (sub keys now named derived) + + +## 2.15.1 Jun 22, 2020 + +Changes: + +- Adjust keyring to no override 0-prefix (Pezkuwi live) settings with keychain default + + +## 2.14.1 Jun 16, 2020 + +Contributed: + +- Add `extractTime` utility conversion (Thanks to https://github.com/kwingram25) + + +## 2.13.1 Jun 8, 2020 + +Changes: + +- Fix JS blake2 fallback (non-wasm) to correctly deal with hex inputs +- Align `bnToHex` signature with `bnToU8a` (with old/new style) +- Allow `bnTo{Hex,U8a}` to take any value with `.toBn()` signatures + + +## 2.12.2 Jun 1, 2020 + +Changes: + +- Fix `isFunction` signature to assert `Function` + + +## 2.12.1 Jun 1, 2020 + +- **Important** Removed `mnemonicToSeed`, it is only for bip39, use `mnemonicToMiniSecret` for the Substrate variant + +Changes: + +- Added `u8aEq` to compare two Uint8Array or hex values for an exact match +- Added `addressEq` to compare two addresses (ss58, Uint8array or hex) for an exact match +- Throw error on `{nacl,schnorrkel}Verify` on invalid input lengths +- Performance optimizations in `u8aToHex` & `u8aConcat` + + +## 2.11.1 May 26, 2020 + +Changes: + +- Internal cleanups on typings +- Support for latest TypeScript, eslint & typescript-eslint + + +## 2.10.1 May 14, 2020 + +Contributed: + +- Add Kulupu ss58 prefix as an allowed value (Thanks to https://github.com/sorpaas) + +Changes: + +- Make the `TextEncoder` polyfill handle non-compliant Buffer implementations (newer versions of Jest) +- `DeriveJunction` now also allows for BigInt values (aligning with number types elsewhere) +- Small code-flow optimizations + + +## 2.9.1 Apr 30, 2020 + +Contributed: + +- Add support for ECDSA keypairs (Thanks to https://github.com/akru) + +Changes: + +- Added `createKeyMulti` & `createKeySub` to create utility sub & multi keys +- Added `u8aSorted` to sort `Uint8Arrays` +- Added `sortAddresses` to sort addresses based on their internal representation + + +## 2.8.1 Apr 9, 2020 + +- Keypair will now throw an error when attempting to sign/derive using a locked pair (Thanks to https://github.com/h4x3rotab) + +Changes: + +- Cleanup `isDevelopment` regex to cater for chains such as `Westend Development` + + +## 2.7.1 Mar 31, 2020 + +Changes: + +- Add `bnSqrt` to calculate the integer sqrt via Newton iteration +- Allow for optional wasm-crypto, specifically via `@pezkuwi/util-crypto/noWasm` +- Misc. CI infrastructure cleanups + + +## 2.6.1 Feb 29, 2020 + +- **Breaking change** Following on the 2.0 release, `@pezkuwi/wasm` was updated to 1.1+. sr25510 now only verifies 0.8+ signatures, closing the loop on dropping Substrate 1.x-era support + +Changes: + +- Add `signatureVerify (message: Uint8Array | string, signature: Uint8Array | string, addressOrPublicKey: Uint8Array | string): VerifyResult` to verify any signature, regardless of type. Returns validity & detected crypto type. +- Add `cryptoIsReady (): boolean` function to check status of initialization +- Add `addressCheckChecksum (decoded: Uint8Array)` as an helper to extract and verify the ss58 checksum +- Swap to yarn 2, allow use in yarn 2 projects + + +## 2.5.1 Feb 22, 2020 + +- **Breaking change** (TypeScript only) The `*.d.ts` files now contain TypeScript 3.8 features, `#private`, which is not usable in older versions + +Changes: + +- Add `isBigInt(value)` to allow `BigInt` checks. Also add support in `bnToBn` as well as number conversion utils +- Add `isChildClass(Parent, Child?)` to check if a class extends the parent, asserting Child is Parent +- (internal) Use `#` instead of `private _` for private class variables + + +## 2.4.1 Feb 18, 2020 + +Changes: + +- Ensure that `formatBalance` does not apply unit overrides apply when no SI is applicable +- Adjust `formatBalance(, )` to take expanded `withUnit: string | boolean` option where string is an actual unit, e.g. `KSM` +- The `decimals` option to `formatBalance` should now be passed as part of the `options` (previous last-param deprecated) +- The `.setSS58Format` on keyring will now just operate on pairs created on the keyring, not globally. The global `setSS58Format` in `@pezkuwi/util-crypto` will be deprecated. +- The deprecated `addressPrefix` option to keyring has been belatedly removed (Use `ss58Format` rather) + + +## 2.3.1 Feb 15, 2020 + +Contributed: + +- Remove dependency on moment.js with `formatDate` function (Thanks to https://github.com/AndreasGassmann) +- Move TypeScript `@types/*` to dev deps (Thanks to https://github.com/AndreasGassmann) + +Changes: + +- Update to `@pezkuwi/wasm-crypto` 1.0 +- Cleanup dependencies to pave the way for using yarn 2 (Explicit instead of implicit) + + +## 2.2.1 Feb 06, 2020 + +Changes: + +- Add resolver for jest requires (tests from src) + + +## 2.1.1 Feb 04, 2020 + +Changes: + +- Update `detectPackage(, __dirname?)` with calling folder + + +## 2.0.1 Jan 30, 2020 + +Changes: + +- Update w3f/schnorrkel to 0.8.5 (Full Substrate 2.x support, no 1.x support) +- Remove Alice session (ed2551) account from testing keyring (not applicable to Substrate 2.x) +- Remove `chainspec`, `db`, `trie-codec`, `trie-db` and `trie-hash` packages (moved to client) +- Renamed `assertSingletonPackage` to `detectPackage` with inclusion of version listing +- Swap to elliptic library for secp2561 recovery (No node bindings) + + +## 1.8.1 Jan 09, 2020 + +Contributed: + +- Add cross-client encryption/decryption support (Thanks to https://github.com/hskang9) + + +## 1.7.1 Nov 27, 2019 + +Changes: + +- `formatBalance` signature now allows to force unit displays +- Keypair now allows for derive on a pair, with `pair.derive(...)` +- `assert` now acts like a real asserts, with no return - signature adapted for new TS 3.7 + + +## 1.6.1 Oct 24, 2019 + +Changes: + +- `pair.sign(message)` now takes an optional second `options?: SignOptions` parameter, where `SignOptions` is currently defined as `{ withType: boolean }`. Here `withType` instructs the signing to prepend the type of signature (ed2551, sr25519 or ecdsa). This is used for the new Pezkuwi/Substrate MultiSignature format. + + +## 1.5.1 Sep 25, 2019 + +Changes: + +- Fix typings on the Keyring-exposed encode & decodeAddress +- Allow ss58Format = 0 as a valid value +- Loosen type definitions for allowed ss58format values (still checked against allowed array) + + +## 1.4.1 Sep 12, 2019 + +- **Breaking change** To set the `ss58Format`, you should now use `setSS58Format` as opposed to the old `setAddressPrefix` + +Changes: + +- Renamed `keyring.setAddressPrefix` to `keyring.setSS58Format` +- Deprecated `addressPrefix` on the keyring options, added the `ss58Format` as a replacement (aligning with chain properties - the old version is still accepted) +- Added `stringToHex` and `hexToString` conversion utilities to `@pezkuwi/util` +- Swap to [Babel 7.6.0](https://babeljs.io/) for all compilation, for latest improvements in code generation + + +## 1.3.1 Sep 10, 2019 + +Changes: + +- Remove the `ExtError` class, always prefer the standard JS `Error` object for errors. This would bre a breaking change for any applications using `ExtError` + + +## 1.2.1 Sep 09, 2019 + +Changes: + +- Keyring `addFromAddress` can now be used to store external accounts, for example those provided by external signers +- Maintainability updates + + +## 1.1.1 Aug 09, 2019 + +Changes: + +- `assertSingletonPackage` now warns via console.warn, but does not throw. This does allow the info to come accross while still allowing the app developers using multiple libraries time to fix. + + +## 1.0.1 Aug 02, 2019 + +Changes: + +- `formatBalance` now allows for `Compact` inputs +- `formaBalance` now allows correct formatting of very large decimals + + +## 0.94.1 Jul 20, 2019 +Changes: + +- Add `checkAddress(address, prefix)` to `@pezkuwi/util-crypto` that validates an ss-58 address +- Add support for the Kusama network (as a valid checked prefix) +- Add an `asm.js` fallback for the React Native environment (via `@pezkuwi/wasm-crypto`) +- The ed25519 key for Alice (representing the session), now appears in the test keyrings +- Fix missing dependencies for keyring (after address moves in 0.93.1) + + +## 0.93.1 Jun 14, 2019 + +Changes: + +- Breaking: External pair interface for keyring has been changed. Instead of + - `getMeta` use the `meta` getter, i.e. `console.log(pair.meta.name)` + - `address` use the `address` getter, i.e. `console.log(pair.address)` + - `publicKey` use the `publicKey` getter, i.e. `console.log(pair.publicKey)` +- `Move decodeAddress`, `encodeAddress` & `setAddressPrefix` functions into `@pezkuwi/util-crypto` from `@pezkuwi/keyring`. External interfaces should not be affected at this point since it is also (still) exported and exposed on keyring + + +## 0.92.1 Jun 04, 2019 + +Changes: + +- Only allow integer input values into `formatBalance` +- Allow `formatBalance`, `formatDecimal` & `formatNumber` to cater for negative numbers +- Add 'Bob//stash' to testing keyring, joining the existing 'Alice//stash' + + +## 0.91.1 May 22, 2019 + +Changes: + +- ed25519/sr25519 sign & verify functions can now take the message input as Uint8Array/string/hex and verify allows for the signature/publicKey to be specified as Uint8Array/hex +- Update `@pezkuwi/wasm` to include a maintenance bump for the `w3f/schnorrkel` libraries + + +## 0.90.1 May 08, 2019 + +Changes: + +- Moving towards 1.0 +- Added bnMin & bnMax functions + + +## 0.76.1 Apr 03, 2019 + +Changes: + +- Fix `addFromMnemonic` to generate using new-style derivation. +- Pull in `formatBalance`, `formatDecimal`, `formatElapsed`, `formatNumber`, `calcSi`, `findSi` & `isTestChain` utility functions from the originals in `@pezkuwi/ui-util` +- Swap out `wasm-schnorrkel` & `wasm-ed25519` for combined version with `wasm-crypto` +- Swap DB interfaces to optional LRU, removing `transactionAsync` (client-only changes) + + +## 0.75.1 Mar 29, 2019 + +Changes: + +- Start journey to 1.0 + + +## 0.42.1 Mar 28, 2019 + +Changes: + +- Add `assertSingletonPackage` to util +- Ensure that only a single keyring instance is loaded (uses above) + + +## 0.41.1 Mar 25, 2019 + +Changes: + +- Extensions to the client-specific database interfaces (non-breaking for API and util users) + + +## 0.40.1 Mar 23, 2019 + +Changes: + +- Add additional derivation path extraction mechanisms to util-crypto +- Add createFromUri function to keypair (creates keypair, does not add it) +- Allow all crypto hashing & ed25519 to use WASM (as available, JS fallbacks) + + +## 0.39.1 Mar 20, 2019 + +Changes: + +- Pull in bip39 generation functions from `@poladkot/wasm-crypto` with a fallback to the pure JS versions + + +## 0.38.1 Mar 18, 2019 + +Changes: + +- Align with current substrate master for sr25519 keys and hard/soft derivation +- Swap default dev keys to derived (sr25519) + + +## 0.37.1 Mar 14, 2019 + +Changes: + +- Swap to publishing -beta.x on merge (non-breaking testing) + + +## 0.36.1 Mar 13, 2019 + +Changes: + +- Add `fromUri` to keyring along with hard & soft key derivation. + + +## 0.35.1 Mar 04, 2019 + +Changes: + +- Remove NodeJs-only `syncify` function, not exported by the package (with binary dependency for Node) + + +## 0.34.1 Feb 13, 2019 + +Changes: + +- Keyring now allows for ed25519 and sr25519 instances. Upon creation, you need to pass the `ed25519`or `sr25519` string to denote the type, i.e. `new Keyring({ type: 'sr25519' })` + + +## 0.33.1 Nov 22, 2018 + +## 0.32.1 Oct 18, 2018 + +## 0.31.1 Oct 12, 2018 + +## 0.30.1 Sep 11, 2018 + +## 0.29.1 Sep 01, 2018 + +## 0.28.1 Aug 11, 2018 + +## 0.27.1 Aug 06, 2018 + +## 0.26.1 Jun 27, 2018 + +## 0.25.1 Jun 26, 2018 + +## 0.24.1 Jun 22, 2018 + +## 0.23.1 Jun 21, 2018 + +## 0.22.1 May 24, 2018 + +## 0.21.1 May 17, 2018 + +## 0.20.1 May 16, 2018 + +## 0.19.1 Apr 19, 2018 + +## 0.18.1 Mar 20, 2018 + +## 0.17.1 Mar0 8, 2018 + +## 0.16.1 Feb 23, 2018 + +## 0.15.1 Feb 15, 2018 + +## 0.14.1 Feb 07, 2018 + +## 0.13.1 Jan 25, 2018 + +## 0.12.1 Jan 11, 2018 + +## 0.11.1 Dec 30, 2017 + +## 0.10.1 Dec 17, 2017 + +## 0.9.1 Dec 14, 2017 + +## 0.8.1 Dec 12, 2017 + +## 0.7.1 Dec 11, 2017 + +## 0.6.1 Nov 30, 2017 + +## 0.5.1 Nov 20, 2017 + +## 0.4.1 Nov 19, 2017 + +## 0.3.1 Nov 19, 2017 + +## 0.2.1 Nov 18, 2017 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..947952e --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,45 @@ +# Contributing + +## What? + +Individuals making significant and valuable contributions are given commit-access to a project to contribute as they see fit. +A project is more like an open wiki than a standard guarded open source project. + +## Rules + +There are a few basic ground-rules for contributors (including the maintainer(s) of the project): + +1. **No `--force` pushes** or modifying the Git history in any way. If you need to rebase, ensure you do it in your own repo. +2. **Non-master branches**, prefixed with a short name moniker (e.g. `-`) must be used for ongoing work. +3. **All modifications** must be made in a **pull-request** to solicit feedback from other contributors. +4. A pull-request *must not be merged until CI* has finished successfully. + +#### Merging pull requests once CI is successful: +- A pull request with no large change to logic that is an urgent fix may be merged after a non-author contributor has reviewed it well. +- No PR should be merged until all reviews' comments are addressed. + +#### Reviewing pull requests: +When reviewing a pull request, the end-goal is to suggest useful changes to the author. Reviews should finish with approval unless there are issues that would result in: + +- Buggy behaviour. +- Undue maintenance burden. +- Breaking with house coding style. +- Pessimisation (i.e. reduction of speed as measured in the projects benchmarks). +- Feature reduction (i.e. it removes some aspect of functionality that a significant minority of users rely on). +- Uselessness (i.e. it does not strictly add a feature or fix a known issue). + +#### Reviews may not be used as an effective veto for a PR because: +- There exists a somewhat cleaner/better/faster way of accomplishing the same feature/fix. +- It does not fit well with some other contributors' longer-term vision for the project. + +## Releases + +Declaring formal releases remains the prerogative of the project maintainer(s). + +## Changes to this arrangement + +This is an experiment and feedback is welcome! This document may also be subject to pull-requests or changes by contributors where you believe you have something valuable to add or change. + +## Heritage + +These contributing guidelines are modified from the "OPEN Open Source Project" guidelines for the Level project: [https://github.com/Level/community/blob/master/CONTRIBUTING.md](https://github.com/Level/community/blob/master/CONTRIBUTING.md) diff --git a/CONTRIBUTORS b/CONTRIBUTORS new file mode 100644 index 0000000..4df57aa --- /dev/null +++ b/CONTRIBUTORS @@ -0,0 +1,76 @@ + 1674 Jaco Bump deps (#1912) + 44 Tarik Gul Set pbkdf2Encode rounds to default to 210,000 (#1983) + 13 Carlo Sala feat(networks): add zeitgeist Ledger support (#1840) + 11 Valentin Fernandez 13.5.7 (#2008) + 9 Antoine Estienne Add eth uri keyring test (#1291) + 9 rajk93 14.0.1 (#2014) + 6 Amaury Martiny Add tests from Rust (#283) + 6 Jakub Pánik HydraDX -> Hydration rebrand (#1923) + 5 Arjun Porwal 13.5.6 (#2004) + 5 kwingram25 Add BN consts and timeToString (#610) + 4 Adam Dossa Update Polymesh Genesis Hash (#1193) + 4 pan add bifrost kusama (#1626) + 3 Luke Schoen docs: Fix example in readme since we use default imports (#243) + 2 AndreasGassmann feat(dependencies): remove moment.js (#530) + 2 Cameron Fairchild Add bittensor details (#1783) + 2 Gav Wood Fix stake:unstake (#182) + 2 Hyungsuk Kang Add cross client Encryption/Decryption (#496) + 2 Jared Norris Add Sora network (#1306) + 2 Kami Adding Westend genesis. (#1429) + 2 Lovesh Harchandani Update genesis hash of Dock mainnet (#1436) + 2 Nantian fix bigint type (#1079) + 2 Stefanie Doll Add missing dependencies to util-crypto (#424) + 1 Agustinus Theodorus docs: fix typo in naclSeal docs. (#1005) + 1 Aleš Ferlan feat: allow setting of thousand/decimal separators (#1722) + 1 Alex Sedighi fix Nodle's known network name (#1699) + 1 Alexander Krupenkin Added ECDSA keypair support (#589) + 1 alexdniep added equilibrium slip44; added equilibrium genesis hash (#984) + 1 amphineko chore: fix typo in versionDetect messages (#941) + 1 Axel Chalon Simplify @polkadot/keyring KeyringPair (#419) + 1 Brad Larson [FIX] Adjust error message (#646) + 1 Carlos Medeiros add hydradx to knownLedger (#1647) + 1 Chris Get rid of warnings for dual esm and cjs packages of the same version (#1890) + 1 Dmitrii Novikov Add `Vara` support to Generic Ledger App (#1958) + 1 Eliott Teissonniere add nodle ledger specs (#1089) + 1 Guilane DENGUIR feat(VTB): Added support for VTB blockchain (#1651) + 1 h4x3rotab Throws an error when signing with a locked keypair (#578) + 1 Harry Liu Update README.md (#446) + 1 henrikdent Add DENTNet ledger support (via generic Polkadot app) (#1942) + 1 Hoon Kim replace plasm genesis with astar (#1397) + 1 Hussein Ait-Lahcen Add Picasso Genesis Hash (#1261) + 1 Igor Support genshiro network (#1148) + 1 Jake Naviasky Add evmToAddress and addressToEvm crypto utils. (#705) + 1 JesseAbram added check if valid address to docs (#440) + 1 joe petrowski Add example for multisig address creation (#590) + 1 José Molina Colmenero Add ledger support for Mythos (#1969) + 1 kaelnew add ledger support for stafi (#1569) + 1 Leonardo Custodio Ledger support (#1879) + 1 Leonardo Razovic feat: add Polimec (#1945) + 1 Lezek123 logger - wildcard include/exclude with DEBUG env (#932) + 1 Lovish Arora Add peaq support for ledger (#1928) + 1 Mario Neises remove redudant export (#257) + 1 Miguel Hervas Add CFG Ledger Support (#1057) + 1 Mikhail Fedosov feat: add 3dpass network (#1769) + 1 Mohsan Riaz Add Ternoa for ledger hardware support (#1711) + 1 nahuseyoum Reserving 65 for Aventus based on the new extended range (#871) + 1 Nantian add acala ledger config (#1485) + 1 Paul Miller sr25519: switch from wasm to micro-sr25519 (#1971) + 1 peetzweg/ adds `isRiscV` guard function similar to isWasm (#1878) + 1 qwer951123 Add acala genesis (#1161) + 1 Radek Bochenek feat: add Liberland support to Generic Ledger App (#1989) + 1 Raoul Millais Fix yarn add instructions in x-global README (#873) + 1 Raymond Zhong Add Edgeware ledger app (#1006) + 1 Reto Trinkler Adding 4 as address type of ss58 for Katal Chain (#639) + 1 Rocco Musolino remove doc broken link (#697) + 1 Salina Add Creditcoin3 support to Generic Ledger App (#1985) + 1 Shamilkhan Add genesis hash for Cere Network (#1806) + 1 Song Zhou Add in ability to encrypt/decrypt msg with keyring (#1070) + 1 Thibaut Sardan add hasLedgerSupport prop to networks (#835) + 1 Tomokazu Kozuma fix comment (#1119) + 1 Tore19 Add stafi genesis hash (#1096) + 1 Wei Tang ss58: add Kulupu prefix to the list (#595) + 1 Wil Wade Add Frequency to the Generic Ledger App (#1955) + 1 WoeOm Handing high precision scenes (#450) + 1 xx network Add xxnetwork genesis hash and ledger app (#1463) + 1 Yaroslav Bolyukin Add quartz support for ledger, update unique slip-0044 identifier (#1882) + 1 Yuri Extra check for process for browser bundles (#923) \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..0d381b2 --- /dev/null +++ b/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + +Copyright [yyyy] [name of copyright owner] + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/README.md b/README.md new file mode 100644 index 0000000..18b8058 --- /dev/null +++ b/README.md @@ -0,0 +1,31 @@ +# @pezkuwi/common + +Various useful utility functions that are used across all projects in the [@pezkuwi](https://pezkuwi.js.org) namespace. It provides utility functions with additional safety checks, allowing not only for consistent coding, but also reducing the general boilerplate. + +## overview + +This repository is split up into a number of internal packages, namely utilities - + +- [keyring](packages/keyring/) Keyring management +- [util](packages/util/) General utilities +- [util-crypto](packages/util-crypto/) Crypto and hashing utilities + +## development + +Contributions are welcome! + +To start off, this repo (along with others in the [@pezkuwi](https://github.com/polkadot-js/) family) uses yarn workspaces to organise the code. As such, after cloning, its dependencies _should_ be installed via `yarn`, not via npm; the latter will result in broken dependencies. + +To get started - + +1. Clone the repo locally, via `git clone https://github.com/pezkuwichain/pezkuwi-common ` +2. Ensure that you have a recent version of Node.js, for development purposes [Node 10](https://nodejs.org/en/) is recommended. +3. Ensure that you have a recent version of Yarn, for development purposes [Yarn >=1.10.1](https://yarnpkg.com/docs/install) is required. +4. Install the dependencies by running `yarn` +5. Build the everything via `yarn run build` +6. You can also launch the API Docs, via `yarn vuepress dev docs` +7. Access the docs via [http://localhost:8080](http://localhost:8080) + +## tutorials + +Looking for tutorials to get started? Look at [examples](https://pezkuwi.js.org/api/examples/keyring/) for guides on how to use the base utilities. diff --git a/docs/.nojekyll b/docs/.nojekyll new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/docs/.nojekyll @@ -0,0 +1 @@ + diff --git a/docs/404.html b/docs/404.html new file mode 100644 index 0000000..9e86451 --- /dev/null +++ b/docs/404.html @@ -0,0 +1,12 @@ + + + + + + + Redirecting to https://polkadot.js.org/docs/ + + + Redirecting to https://polkadot.js.org/docs/ + + diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 0000000..9e86451 --- /dev/null +++ b/docs/index.html @@ -0,0 +1,12 @@ + + + + + + + Redirecting to https://polkadot.js.org/docs/ + + + Redirecting to https://polkadot.js.org/docs/ + + diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 0000000..265711d --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,8 @@ +// Copyright 2017-2025 @pezkuwi/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import baseConfig from '@pezkuwi/dev/config/eslint'; + +export default [ + ...baseConfig +]; diff --git a/import_map.in.json b/import_map.in.json new file mode 100644 index 0000000..7380128 --- /dev/null +++ b/import_map.in.json @@ -0,0 +1,5 @@ +{ + "imports": { + "https://esm.sh/v90/@types/bn.js@~5.2/index.d.ts": "https://esm.sh/v90/@types/bn.js@5.1.0/index.d.ts" + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..968de48 --- /dev/null +++ b/package.json @@ -0,0 +1,46 @@ +{ + "author": "Pezkuwi Team ", + "bugs": "https://github.com/pezkuwichain/pezkuwi-common/issues", + "engines": { + "node": ">=18.14" + }, + "homepage": "https://github.com/pezkuwichain/pezkuwi-common#readme", + "license": "Apache-2.0", + "packageManager": "yarn@4.9.1", + "private": true, + "repository": { + "type": "git", + "url": "https://github.com/pezkuwichain/pezkuwi-common.git" + }, + "sideEffects": false, + "type": "module", + "version": "14.0.1", + "versions": { + "git": "14.0.1", + "npm": "14.0.1" + }, + "workspaces": [ + "packages/*" + ], + "scripts": { + "build": "polkadot-dev-build-ts", + "build:networks": "polkadot-dev-run-test packages/networks/src", + "build:release": "polkadot-ci-ghact-build", + "build:rollup": "polkadot-exec-rollup --config", + "clean": "polkadot-dev-clean-build", + "deno": "yarn polkadot-dev-deno-map && yarn build && deno check --import-map=import_map.json mod.ts", + "lint": "polkadot-dev-run-lint", + "postinstall": "polkadot-dev-yarn-only", + "test": "polkadot-dev-run-test --env browser ^mnemonic/toMiniSecretCmp", + "test:mnemonicCmp": "polkadot-dev-run-test --env browser mnemonic/toMiniSecretCmp", + "test:node": "polkadot-dev-run-test --env browser ^mnemonic/toMiniSecretCmp", + "test:one": "polkadot-dev-run-test --env browser" + }, + "devDependencies": { + "@pezkuwi/dev": "^0.83.3", + "@types/node": "^22.7.5" + }, + "resolutions": { + "typescript": "^5.5.4" + } +} diff --git a/packages/hw-ledger-transports/README.md b/packages/hw-ledger-transports/README.md new file mode 100644 index 0000000..b172d90 --- /dev/null +++ b/packages/hw-ledger-transports/README.md @@ -0,0 +1,2 @@ +# @pezkuwi/hw-ledger-transports + diff --git a/packages/hw-ledger-transports/package.json b/packages/hw-ledger-transports/package.json new file mode 100644 index 0000000..f9f0c97 --- /dev/null +++ b/packages/hw-ledger-transports/package.json @@ -0,0 +1,31 @@ +{ + "author": "Jaco Greeff ", + "bugs": "https://github.com/pezkuwichain/pezkuwi-common/issues", + "engines": { + "node": ">=18" + }, + "homepage": "https://github.com/pezkuwichain/pezkuwi-common/tree/master/packages/hw-ledger-transports#readme", + "license": "Apache-2.0", + "name": "@pezkuwi/hw-ledger-transports", + "repository": { + "directory": "packages/hw-ledger-transports", + "type": "git", + "url": "https://github.com/pezkuwichain/pezkuwi-common.git" + }, + "sideEffects": false, + "type": "module", + "version": "14.0.1", + "browser": "browser.js", + "main": "node.js", + "react-native": "react-native.js", + "dependencies": { + "@ledgerhq/hw-transport": "^6.31.4", + "@ledgerhq/hw-transport-webhid": "^6.29.4", + "@ledgerhq/hw-transport-webusb": "^6.29.4", + "@pezkuwi/util": "14.0.1", + "tslib": "^2.8.0" + }, + "optionalDependencies": { + "@ledgerhq/hw-transport-node-hid-singleton": "^6.31.5" + } +} diff --git a/packages/hw-ledger-transports/src/browser.ts b/packages/hw-ledger-transports/src/browser.ts new file mode 100644 index 0000000..5a42463 --- /dev/null +++ b/packages/hw-ledger-transports/src/browser.ts @@ -0,0 +1,11 @@ +// Copyright 2017-2025 @polkadot/hw-ledger authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import LedgerHid from '@ledgerhq/hw-transport-webhid'; +import LedgerUsb from '@ledgerhq/hw-transport-webusb'; + +import { createDefs } from './util.js'; + +export { packageInfo } from './packageInfo.js'; + +export const transports = /*#__PURE__*/ createDefs(['webusb', LedgerUsb], ['hid', LedgerHid]); diff --git a/packages/hw-ledger-transports/src/empty.ts b/packages/hw-ledger-transports/src/empty.ts new file mode 100644 index 0000000..e841a01 --- /dev/null +++ b/packages/hw-ledger-transports/src/empty.ts @@ -0,0 +1,8 @@ +// Copyright 2017-2025 @polkadot/hw-ledger authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import { createDefs } from './util.js'; + +export { packageInfo } from './packageInfo.js'; + +export const transports = /*#__PURE__*/ createDefs(); diff --git a/packages/hw-ledger-transports/src/mod.ts b/packages/hw-ledger-transports/src/mod.ts new file mode 100644 index 0000000..e9d9d78 --- /dev/null +++ b/packages/hw-ledger-transports/src/mod.ts @@ -0,0 +1,4 @@ +// Copyright 2017-2025 @polkadot/hw-ledger authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +export * from './empty.js'; diff --git a/packages/hw-ledger-transports/src/node.ts b/packages/hw-ledger-transports/src/node.ts new file mode 100644 index 0000000..c10914a --- /dev/null +++ b/packages/hw-ledger-transports/src/node.ts @@ -0,0 +1,10 @@ +// Copyright 2017-2025 @polkadot/hw-ledger authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import LedgerHid from '@ledgerhq/hw-transport-node-hid-singleton'; + +import { createDefs } from './util.js'; + +export { packageInfo } from './packageInfo.js'; + +export const transports = /*#__PURE__*/ createDefs(['hid', LedgerHid]); diff --git a/packages/hw-ledger-transports/src/packageDetect.ts b/packages/hw-ledger-transports/src/packageDetect.ts new file mode 100644 index 0000000..e3edace --- /dev/null +++ b/packages/hw-ledger-transports/src/packageDetect.ts @@ -0,0 +1,11 @@ +// Copyright 2017-2025 @polkadot/hw-ledger-transports authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +// Do not edit, auto-generated by @polkadot/dev +// (packageInfo imports will be kept as-is, user-editable) + +import { detectPackage } from '@pezkuwi/util'; + +import { packageInfo } from './packageInfo.js'; + +detectPackage(packageInfo, null, []); diff --git a/packages/hw-ledger-transports/src/packageInfo.ts b/packages/hw-ledger-transports/src/packageInfo.ts new file mode 100644 index 0000000..bbe9a06 --- /dev/null +++ b/packages/hw-ledger-transports/src/packageInfo.ts @@ -0,0 +1,6 @@ +// Copyright 2017-2025 @polkadot/hw-ledger-transports authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +// Do not edit, auto-generated by @polkadot/dev + +export const packageInfo = { name: '@polkadot/hw-ledger-transports', path: 'auto', type: 'auto', version: '14.0.1' }; diff --git a/packages/hw-ledger-transports/src/react-native.ts b/packages/hw-ledger-transports/src/react-native.ts new file mode 100644 index 0000000..e9d9d78 --- /dev/null +++ b/packages/hw-ledger-transports/src/react-native.ts @@ -0,0 +1,4 @@ +// Copyright 2017-2025 @polkadot/hw-ledger authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +export * from './empty.js'; diff --git a/packages/hw-ledger-transports/src/types.ts b/packages/hw-ledger-transports/src/types.ts new file mode 100644 index 0000000..821f249 --- /dev/null +++ b/packages/hw-ledger-transports/src/types.ts @@ -0,0 +1,17 @@ +// Copyright 2017-2025 @polkadot/hw-ledger authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +// CJS, so we use import * syntax +import type * as HwTransport from '@ledgerhq/hw-transport'; + +// u2f is deprecated an therefore not added +export type TransportType = 'hid' | 'webusb'; + +export type Transport = HwTransport.default; + +export interface TransportDef { + /** Create a transport to be used in Ledger operations */ + create (): Promise; + /** The type of the underlying transport definition */ + type: TransportType; +} diff --git a/packages/hw-ledger-transports/src/util.ts b/packages/hw-ledger-transports/src/util.ts new file mode 100644 index 0000000..9d1506d --- /dev/null +++ b/packages/hw-ledger-transports/src/util.ts @@ -0,0 +1,12 @@ +// Copyright 2017-2025 @polkadot/hw-ledger authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { Transport, TransportDef, TransportType } from './types.js'; + +export function createDefs (...items: readonly [type: TransportType, Clazz: unknown][]): TransportDef[] { + return items.map(([type, Clazz]): TransportDef => ({ + create: (): Promise => + (Clazz as Pick).create(), + type + })); +} diff --git a/packages/hw-ledger-transports/tsconfig.build.json b/packages/hw-ledger-transports/tsconfig.build.json new file mode 100644 index 0000000..d96e56b --- /dev/null +++ b/packages/hw-ledger-transports/tsconfig.build.json @@ -0,0 +1,14 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "baseUrl": "..", + "outDir": "./build", + "rootDir": "./src" + }, + "exclude": [ + "**/mod.ts" + ], + "references": [ + { "path": "../util/tsconfig.build.json" } + ] +} diff --git a/packages/hw-ledger/README.md b/packages/hw-ledger/README.md new file mode 100644 index 0000000..ee5ed61 --- /dev/null +++ b/packages/hw-ledger/README.md @@ -0,0 +1,2 @@ +# @pezkuwi/hw-ledger + diff --git a/packages/hw-ledger/package.json b/packages/hw-ledger/package.json new file mode 100644 index 0000000..9e7cc5d --- /dev/null +++ b/packages/hw-ledger/package.json @@ -0,0 +1,28 @@ +{ + "author": "Jaco Greeff ", + "bugs": "https://github.com/pezkuwichain/pezkuwi-common/issues", + "engines": { + "node": ">=18" + }, + "homepage": "https://github.com/pezkuwichain/pezkuwi-common/tree/master/packages/hw-ledger#readme", + "license": "Apache-2.0", + "name": "@pezkuwi/hw-ledger", + "repository": { + "directory": "packages/hw-ledger", + "type": "git", + "url": "https://github.com/pezkuwichain/pezkuwi-common.git" + }, + "sideEffects": [ + "./packageDetect.js", + "./packageDetect.cjs" + ], + "type": "module", + "version": "14.0.1", + "main": "index.js", + "dependencies": { + "@pezkuwi/hw-ledger-transports": "14.0.1", + "@pezkuwi/util": "14.0.1", + "@zondax/ledger-substrate": "1.1.1", + "tslib": "^2.8.0" + } +} diff --git a/packages/hw-ledger/src/Ledger.ts b/packages/hw-ledger/src/Ledger.ts new file mode 100644 index 0000000..5192851 --- /dev/null +++ b/packages/hw-ledger/src/Ledger.ts @@ -0,0 +1,144 @@ +// Copyright 2017-2025 @polkadot/hw-ledger authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { SubstrateApp } from '@zondax/ledger-substrate'; +import type { TransportDef, TransportType } from '@pezkuwi/hw-ledger-transports/types'; +import type { AccountOptions, LedgerAddress, LedgerSignature, LedgerVersion } from './types.js'; + +import { newSubstrateApp } from '@zondax/ledger-substrate'; + +import { transports } from '@pezkuwi/hw-ledger-transports'; +import { hexAddPrefix, u8aToBuffer, u8aWrapBytes } from '@pezkuwi/util'; + +import { LEDGER_DEFAULT_ACCOUNT, LEDGER_DEFAULT_CHANGE, LEDGER_DEFAULT_INDEX, LEDGER_SUCCESS_CODE } from './constants.js'; +import { ledgerApps } from './defaults.js'; + +export { packageInfo } from './packageInfo.js'; + +type Chain = keyof typeof ledgerApps; + +type WrappedResult = Awaited>; + +/** @internal Wraps a SubstrateApp call, checking the result for any errors which result in a rejection */ +async function wrapError (promise: Promise): Promise { + const result = await promise; + + if (result.return_code !== LEDGER_SUCCESS_CODE) { + throw new Error(result.error_message); + } + + return result; +} + +/** @internal Wraps a sign/signRaw call and returns the associated signature */ +function sign (method: 'sign' | 'signRaw', message: Uint8Array, accountOffset = 0, addressOffset = 0, { account = LEDGER_DEFAULT_ACCOUNT, addressIndex = LEDGER_DEFAULT_INDEX, change = LEDGER_DEFAULT_CHANGE }: Partial = {}): (app: SubstrateApp) => Promise { + return async (app: SubstrateApp): Promise => { + const { signature } = await wrapError(app[method](account + accountOffset, change, addressIndex + addressOffset, u8aToBuffer(message))); + + return { + signature: hexAddPrefix(signature.toString('hex')) + }; + }; +} + +/** + * @name Ledger + * + * @description + * Legacy wrapper for a ledger app - + * - it connects automatically on use, creating an underlying interface as required + * - Promises reject with errors (unwrapped errors from @zondax/ledger-substrate) + * @deprecated Use LedgerGeneric for up to date integration with ledger + */ +export class Ledger { + readonly #ledgerName: string; + readonly #transportDef: TransportDef; + + #app: SubstrateApp | null = null; + + constructor (transport: TransportType, chain: Chain) { + const ledgerName = ledgerApps[chain]; + const transportDef = transports.find(({ type }) => type === transport); + + if (!ledgerName) { + throw new Error(`Unsupported Ledger chain ${chain}`); + } else if (!transportDef) { + throw new Error(`Unsupported Ledger transport ${transport}`); + } + + this.#ledgerName = ledgerName; + this.#transportDef = transportDef; + } + + /** + * Returns the address associated with a specific account & address offset. Optionally + * asks for on-device confirmation + */ + public async getAddress (confirm = false, accountOffset = 0, addressOffset = 0, { account = LEDGER_DEFAULT_ACCOUNT, addressIndex = LEDGER_DEFAULT_INDEX, change = LEDGER_DEFAULT_CHANGE }: Partial = {}): Promise { + return this.withApp(async (app: SubstrateApp): Promise => { + const { address, pubKey } = await wrapError(app.getAddress(account + accountOffset, change, addressIndex + addressOffset, confirm)); + + return { + address, + publicKey: hexAddPrefix(pubKey) + }; + }); + } + + /** + * Returns the version of the Ledger application on the device + */ + public async getVersion (): Promise { + return this.withApp(async (app: SubstrateApp): Promise => { + const { device_locked: isLocked, major, minor, patch, test_mode: isTestMode } = await wrapError(app.getVersion()); + + return { + isLocked, + isTestMode, + version: [major, minor, patch] + }; + }); + } + + /** + * Signs a transaction on the Ledger device + */ + public async sign (message: Uint8Array, accountOffset?: number, addressOffset?: number, options?: Partial): Promise { + return this.withApp(sign('sign', message, accountOffset, addressOffset, options)); + } + + /** + * Signs a message (non-transactional) on the Ledger device + */ + public async signRaw (message: Uint8Array, accountOffset?: number, addressOffset?: number, options?: Partial): Promise { + return this.withApp(sign('signRaw', u8aWrapBytes(message), accountOffset, addressOffset, options)); + } + + /** + * @internal + * + * Returns a created SubstrateApp to perform operations against. Generally + * this is only used internally, to ensure consistent bahavior. + */ + async withApp (fn: (app: SubstrateApp) => Promise): Promise { + try { + if (!this.#app) { + const transport = await this.#transportDef.create(); + + // We need this override for the actual type passing - the Deno environment + // is quite a bit stricter and it yields invalids between the two (specifically + // since we mangle the imports from .default in the types for CJS/ESM and between + // esm.sh versions this yields problematic outputs) + // + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-explicit-any + this.#app = newSubstrateApp(transport as any, this.#ledgerName); + } + + return await fn(this.#app); + } catch (error) { + this.#app = null; + + throw error; + } + } +} diff --git a/packages/hw-ledger/src/LedgerGeneric.ts b/packages/hw-ledger/src/LedgerGeneric.ts new file mode 100644 index 0000000..4c75a0b --- /dev/null +++ b/packages/hw-ledger/src/LedgerGeneric.ts @@ -0,0 +1,275 @@ +// Copyright 2017-2025 @polkadot/hw-ledger authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { TransportDef, TransportType } from '@pezkuwi/hw-ledger-transports/types'; +import type { AccountOptionsGeneric, LedgerAddress, LedgerSignature, LedgerVersion } from './types.js'; + +import { PolkadotGenericApp } from '@zondax/ledger-substrate'; + +import { transports } from '@pezkuwi/hw-ledger-transports'; +import { hexAddPrefix, u8aToBuffer, u8aWrapBytes } from '@pezkuwi/util'; + +import { ledgerApps } from './defaults.js'; + +export { packageInfo } from './packageInfo.js'; + +type Chain = keyof typeof ledgerApps; + +type WrappedResult = Awaited>; + +// FIXME This type is a copy of the `class ResponseError` +// imported from `@zondax/ledger-js`. Happens because ledger-js includes +// circular dependencies. This is a hack to avoid versioning issues +// with Deno. +interface ResponseError { + errorMessage: string + returnCode: number +} + +/** @internal Wraps a PolkadotGenericApp call, checking the result for any errors which result in a rejection */ +async function wrapError (promise: Promise): Promise { + let result: T; + + try { + result = await promise; + } catch (e: unknown) { + // We check to see if the propogated error is the newer ResponseError type. + // The response code use to be part of the result, but with the latest breaking changes from 0.42.x + // the interface and it's types have completely changed. + if ((e as ResponseError).returnCode) { + throw new Error(`${(e as ResponseError).returnCode}: ${(e as ResponseError).errorMessage}`); + } + + throw new Error((e as Error).message); + } + + return result; +} + +/** @internal Wraps a signEd25519/signRawEd25519 call and returns the associated signature */ +function sign (method: 'signEd25519' | 'signRawEd25519', message: Uint8Array, slip44: number, accountIndex = 0, addressOffset = 0): (app: PolkadotGenericApp) => Promise { + const bip42Path = `m/44'/${slip44}'/${accountIndex}'/${0}'/${addressOffset}'`; + + return async (app: PolkadotGenericApp): Promise => { + const { signature } = await wrapError(app[method](bip42Path, u8aToBuffer(message))); + + return { + signature: hexAddPrefix(signature.toString('hex')) + }; + }; +} + +/** @internal Wraps a signEcdsa/signRawEcdsa call and returns the associated signature */ +function signEcdsa (method: 'signEcdsa' | 'signRawEcdsa', message: Uint8Array, slip44: number, accountIndex = 0, addressOffset = 0): (app: PolkadotGenericApp) => Promise { + const bip42Path = `m/44'/${slip44}'/${accountIndex}'/${0}'/${addressOffset}'`; + + return async (app: PolkadotGenericApp): Promise => { + const { r, s, v } = await wrapError(app[method](bip42Path, u8aToBuffer(message))); + + const signature = Buffer.concat([r, s, v]); + + return { + signature: hexAddPrefix(signature.toString('hex')) + }; + }; +} + +/** @internal Wraps a signWithMetadataEd25519 call and returns the associated signature */ +function signWithMetadata (message: Uint8Array, slip44: number, accountIndex = 0, addressOffset = 0, { metadata }: Partial = {}): (app: PolkadotGenericApp) => Promise { + const bip42Path = `m/44'/${slip44}'/${accountIndex}'/${0}'/${addressOffset}'`; + + return async (app: PolkadotGenericApp): Promise => { + if (!metadata) { + throw new Error('The metadata option must be present when using signWithMetadata'); + } + + const bufferMsg = Buffer.from(message); + + const { signature } = await wrapError(app.signWithMetadataEd25519(bip42Path, bufferMsg, metadata)); + + return { + signature: hexAddPrefix(signature.toString('hex')) + }; + }; +} + +/** @internal Wraps a signWithMetadataEcdsa call and returns the associated signature */ +function signWithMetadataEcdsa (message: Uint8Array, slip44: number, accountIndex = 0, addressOffset = 0, { metadata }: Partial = {}): (app: PolkadotGenericApp) => Promise { + const bip42Path = `m/44'/${slip44}'/${accountIndex}'/${0}'/${addressOffset}'`; + + return async (app: PolkadotGenericApp): Promise => { + if (!metadata) { + throw new Error('The metadata option must be present when using signWithMetadata'); + } + + const bufferMsg = Buffer.from(message); + + const { r, s, v } = await wrapError(app.signWithMetadataEcdsa(bip42Path, bufferMsg, metadata)); + + const signature = Buffer.concat([r, s, v]); + + return { + signature: hexAddPrefix(signature.toString('hex')) + }; + }; +} + +/** + * @name Ledger + * + * @description + * A very basic wrapper for a ledger app - + * - it connects automatically on use, creating an underlying interface as required + * - Promises reject with errors (unwrapped errors from @zondax/ledger-substrate-js) + */ +export class LedgerGeneric { + readonly #transportDef: TransportDef; + readonly #slip44: number; + /** + * The chainId is represented by the chains token in all lowercase. Example: Polkadot -> dot + */ + readonly #chainId?: string; + /** + * The metaUrl is seen as a server url that the underlying `PolkadotGenericApp` will use to + * retrieve the signature given a tx blob, and a chainId. It is important to note that if you would like to avoid + * having any network calls made, use `signWithMetadata`, and avoid `sign`. + */ + readonly #metaUrl?: string; + + #app: PolkadotGenericApp | null = null; + + constructor (transport: TransportType, chain: Chain, slip44: number, chainId?: string, metaUrl?: string) { + const ledgerName = ledgerApps[chain]; + const transportDef = transports.find(({ type }) => type === transport); + + if (!ledgerName) { + throw new Error(`Unsupported Ledger chain ${chain}`); + } else if (!transportDef) { + throw new Error(`Unsupported Ledger transport ${transport}`); + } + + this.#metaUrl = metaUrl; + this.#chainId = chainId; + this.#slip44 = slip44; + this.#transportDef = transportDef; + } + + /** + * @description Returns the address associated with a specific Ed25519 account & address offset. Optionally + * asks for on-device confirmation + */ + public async getAddress (ss58Prefix: number, confirm = false, accountIndex = 0, addressOffset = 0): Promise { + const bip42Path = `m/44'/${this.#slip44}'/${accountIndex}'/${0}'/${addressOffset}'`; + + return this.withApp(async (app: PolkadotGenericApp): Promise => { + const { address, pubKey } = await wrapError(app.getAddressEd25519(bip42Path, ss58Prefix, confirm)); + + return { + address, + publicKey: hexAddPrefix(pubKey) + }; + }); + } + + /** + * @description Returns the address associated with a specific ecdsa account & address offset. Optionally + * asks for on-device confirmation + */ + public async getAddressEcdsa (confirm = false, accountIndex = 0, addressOffset = 0) { + const bip42Path = `m/44'/${this.#slip44}'/${accountIndex}'/${0}'/${addressOffset}'`; + + return this.withApp(async (app: PolkadotGenericApp): Promise => { + const { address, pubKey } = await wrapError(app.getAddressEcdsa(bip42Path, confirm)); + + return { + address, + publicKey: hexAddPrefix(pubKey) + }; + }); + } + + /** + * @description Returns the version of the Ledger application on the device + */ + public async getVersion (): Promise { + return this.withApp(async (app: PolkadotGenericApp): Promise => { + const { deviceLocked: isLocked, major, minor, patch, testMode: isTestMode } = await wrapError(app.getVersion()); + + return { + isLocked: !!isLocked, + isTestMode: !!isTestMode, + version: [major || 0, minor || 0, patch || 0] + }; + }); + } + + /** + * @description Signs a transaction on the Ledger device. This requires the LedgerGeneric class to be instantiated with `chainId`, and `metaUrl` + */ + public async sign (message: Uint8Array, accountIndex?: number, addressOffset?: number): Promise { + return this.withApp(sign('signEd25519', message, this.#slip44, accountIndex, addressOffset)); + } + + /** + * @description Signs a message (non-transactional) on the Ledger device + */ + public async signRaw (message: Uint8Array, accountIndex?: number, addressOffset?: number): Promise { + return this.withApp(sign('signRawEd25519', u8aWrapBytes(message), this.#slip44, accountIndex, addressOffset)); + } + + /** + * @description Signs a transaction on the Ledger device with Ecdsa. This requires the LedgerGeneric class to be instantiated with `chainId`, and `metaUrl` + */ + public async signEcdsa (message: Uint8Array, accountIndex?: number, addressOffset?: number): Promise { + return this.withApp(signEcdsa('signEcdsa', u8aWrapBytes(message), this.#slip44, accountIndex, addressOffset)); + } + + /** + * @description Signs a message with Ecdsa (non-transactional) on the Ledger device + */ + public async signRawEcdsa (message: Uint8Array, accountIndex?: number, addressOffset?: number): Promise { + return this.withApp(signEcdsa('signRawEcdsa', u8aWrapBytes(message), this.#slip44, accountIndex, addressOffset)); + } + + /** + * @description Signs a transaction on the ledger device provided some metadata. + */ + public async signWithMetadata (message: Uint8Array, accountIndex?: number, addressOffset?: number, options?: Partial): Promise { + return this.withApp(signWithMetadata(message, this.#slip44, accountIndex, addressOffset, options)); + } + + /** + * @description Signs a transaction on the ledger device for an ecdsa signature provided some metadata. + */ + public async signWithMetadataEcdsa (message: Uint8Array, accountIndex?: number, addressOffset?: number, options?: Partial) { + return this.withApp(signWithMetadataEcdsa(message, this.#slip44, accountIndex, addressOffset, options)); + } + + /** + * @internal + * + * Returns a created PolkadotGenericApp to perform operations against. Generally + * this is only used internally, to ensure consistent bahavior. + */ + async withApp (fn: (app: PolkadotGenericApp) => Promise): Promise { + try { + if (!this.#app) { + const transport = await this.#transportDef.create(); + + // We need this override for the actual type passing - the Deno environment + // is quite a bit stricter and it yields invalids between the two (specifically + // since we mangle the imports from .default in the types for CJS/ESM and between + // esm.sh versions this yields problematic outputs) + // + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-explicit-any + this.#app = new PolkadotGenericApp(transport as any, this.#chainId, this.#metaUrl); + } + + return await fn(this.#app); + } catch (error) { + this.#app = null; + + throw error; + } + } +} diff --git a/packages/hw-ledger/src/bundle.ts b/packages/hw-ledger/src/bundle.ts new file mode 100644 index 0000000..cfe66fa --- /dev/null +++ b/packages/hw-ledger/src/bundle.ts @@ -0,0 +1,8 @@ +// Copyright 2017-2025 @polkadot/hw-ledger authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +// This is necessary to ensure users still have access to class Ledger even though its deprecated. +// +// eslint-disable-next-line deprecation/deprecation +export { Ledger } from './Ledger.js'; +export { LedgerGeneric } from './LedgerGeneric.js'; diff --git a/packages/hw-ledger/src/constants.ts b/packages/hw-ledger/src/constants.ts new file mode 100644 index 0000000..5c1956e --- /dev/null +++ b/packages/hw-ledger/src/constants.ts @@ -0,0 +1,10 @@ +// Copyright 2017-2025 @polkadot/hw-ledger authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +export const LEDGER_DEFAULT_ACCOUNT = 0x80000000; + +export const LEDGER_DEFAULT_CHANGE = 0x80000000; + +export const LEDGER_DEFAULT_INDEX = 0x80000000; + +export const LEDGER_SUCCESS_CODE = 0x9000; diff --git a/packages/hw-ledger/src/defaults.spec.ts b/packages/hw-ledger/src/defaults.spec.ts new file mode 100644 index 0000000..d609b2f --- /dev/null +++ b/packages/hw-ledger/src/defaults.spec.ts @@ -0,0 +1,20 @@ +// Copyright 2017-2025 @polkadot/hw-ledger authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { supportedApps } from '@zondax/ledger-substrate'; + +import { prevLedgerRecord } from './defaults.js'; + +describe('ledgerApps', (): void => { + for (const k of Object.keys(prevLedgerRecord)) { + it(`${k} is available in @zondax/ledger-substrate`, (): void => { + expect( + supportedApps.find(({ name }) => + name === prevLedgerRecord[k] + ) + ).toBeDefined(); + }); + } +}); diff --git a/packages/hw-ledger/src/defaults.ts b/packages/hw-ledger/src/defaults.ts new file mode 100644 index 0000000..cd3424e --- /dev/null +++ b/packages/hw-ledger/src/defaults.ts @@ -0,0 +1,69 @@ +// Copyright 2017-2025 @polkadot/hw-ledger authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +// These map to the known name in the @zondax/ledger-substrate/supported_apps package +// but they do not reflect all ledger apps that are supported. Since ledger now has support for all +// substrate chains via the PolkadotGenericApp, any new chains that need ledger support can be added to +// `genericLedgerApps` below. +export const prevLedgerRecord: Record = { + acala: 'Acala', + ajuna: 'Ajuna', + 'aleph-node': 'AlephZero', + astar: 'Astar', + bifrost: 'Bifrost', + 'bifrost-kusama': 'BifrostKusama', + centrifuge: 'Centrifuge', + composable: 'Composable', + darwinia: 'Darwinia', + 'dock-mainnet': 'Dock', + edgeware: 'Edgeware', + enjin: 'Enjin', + equilibrium: 'Equilibrium', + genshiro: 'Genshiro', + hydradx: 'HydraDX', + 'interlay-parachain': 'Interlay', + karura: 'Karura', + khala: 'Khala', + kusama: 'Kusama', + matrixchain: 'Matrixchain', + nodle: 'Nodle', + origintrail: 'OriginTrail', + parallel: 'Parallel', + peaq: 'Peaq', + pendulum: 'Pendulum', + phala: 'Phala', + picasso: 'Picasso', + polkadex: 'Polkadex', + polkadot: 'Polkadot', + polymesh: 'Polymesh', + quartz: 'Quartz', + sora: 'Sora', + stafi: 'Stafi', + statemine: 'Statemine', + statemint: 'Statemint', + ternoa: 'Ternoa', + unique: 'Unique', + vtb: 'VTB', + xxnetwork: 'XXNetwork', + zeitgeist: 'Zeitgeist' +}; + +// Any chains moving forward that are supported by the PolkadotGenericApp from ledger will input their names below. +export const genericLedgerApps = { + bittensor: 'Bittensor', + creditcoin3: 'Creditcoin3', + dentnet: 'DENTNet', + encointer: 'Encointer', + frequency: 'Frequency', + integritee: 'Integritee', + liberland: 'Liberland', + mythos: 'Mythos', + polimec: 'Polimec', + vara: 'Vara' +}; + +// These match up with the keys of the knownLedger object in the @polkadot/networks/defaults/ledger.ts +export const ledgerApps: Record = { + ...prevLedgerRecord, + ...genericLedgerApps +}; diff --git a/packages/hw-ledger/src/index.ts b/packages/hw-ledger/src/index.ts new file mode 100644 index 0000000..21666e3 --- /dev/null +++ b/packages/hw-ledger/src/index.ts @@ -0,0 +1,6 @@ +// Copyright 2017-2025 @polkadot/hw-ledger authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import './packageDetect.js'; + +export * from './bundle.js'; diff --git a/packages/hw-ledger/src/mod.ts b/packages/hw-ledger/src/mod.ts new file mode 100644 index 0000000..ce2157f --- /dev/null +++ b/packages/hw-ledger/src/mod.ts @@ -0,0 +1,4 @@ +// Copyright 2017-2025 @polkadot/hw-ledger authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +export * from './index.js'; diff --git a/packages/hw-ledger/src/packageDetect.ts b/packages/hw-ledger/src/packageDetect.ts new file mode 100644 index 0000000..fc52961 --- /dev/null +++ b/packages/hw-ledger/src/packageDetect.ts @@ -0,0 +1,13 @@ +// Copyright 2017-2025 @polkadot/hw-ledger authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +// Do not edit, auto-generated by @polkadot/dev +// (packageInfo imports will be kept as-is, user-editable) + +import { packageInfo as transportInfo } from '@pezkuwi/hw-ledger-transports/packageInfo'; +import { detectPackage } from '@pezkuwi/util'; +import { packageInfo as utilInfo } from '@pezkuwi/util/packageInfo'; + +import { packageInfo } from './packageInfo.js'; + +detectPackage(packageInfo, null, [transportInfo, utilInfo]); diff --git a/packages/hw-ledger/src/packageInfo.ts b/packages/hw-ledger/src/packageInfo.ts new file mode 100644 index 0000000..450c42d --- /dev/null +++ b/packages/hw-ledger/src/packageInfo.ts @@ -0,0 +1,6 @@ +// Copyright 2017-2025 @polkadot/hw-ledger authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +// Do not edit, auto-generated by @polkadot/dev + +export const packageInfo = { name: '@polkadot/hw-ledger', path: 'auto', type: 'auto', version: '14.0.1' }; diff --git a/packages/hw-ledger/src/types.ts b/packages/hw-ledger/src/types.ts new file mode 100644 index 0000000..fcbe191 --- /dev/null +++ b/packages/hw-ledger/src/types.ts @@ -0,0 +1,42 @@ +// Copyright 2017-2025 @polkadot/hw-ledger authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { HexString } from '@pezkuwi/util/types'; + +/** + * Legacy Type that works with the `Ledger` class. + */ +export interface AccountOptions { + /** The index of the account */ + account: number; + /** The index of the address */ + addressIndex: number; + /** The change to apply */ + change: number; +} + +export interface AccountOptionsGeneric extends AccountOptions { + /** Option for PolkadotGenericApp.signWithMetadata */ + metadata: Buffer; +} + +export interface LedgerAddress { + /** The ss58 encoded address */ + address: string; + /** The hex-encoded publicKey */ + publicKey: HexString; +} + +export interface LedgerSignature { + /** A hex-encoded signature, as generated by the device */ + signature: HexString; +} + +export interface LedgerVersion { + /** Indicator flag for locked status */ + isLocked: boolean; + /** Indicator flag for testmode status */ + isTestMode: boolean; + /** The software version for this device */ + version: [major: number, minor: number, patch: number]; +} diff --git a/packages/hw-ledger/tsconfig.build.json b/packages/hw-ledger/tsconfig.build.json new file mode 100644 index 0000000..422d64f --- /dev/null +++ b/packages/hw-ledger/tsconfig.build.json @@ -0,0 +1,16 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "baseUrl": "..", + "outDir": "./build", + "rootDir": "./src" + }, + "exclude": [ + "**/*.spec.ts", + "**/mod.ts" + ], + "references": [ + { "path": "../hw-ledger-transports/tsconfig.build.json" }, + { "path": "../util/tsconfig.build.json" } + ] +} diff --git a/packages/hw-ledger/tsconfig.spec.json b/packages/hw-ledger/tsconfig.spec.json new file mode 100644 index 0000000..5924e5a --- /dev/null +++ b/packages/hw-ledger/tsconfig.spec.json @@ -0,0 +1,16 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "baseUrl": "..", + "outDir": "./build", + "rootDir": "./src", + "emitDeclarationOnly": false, + "noEmit": true + }, + "include": [ + "**/*.spec.ts" + ], + "references": [ + { "path": "../hw-ledger/tsconfig.build.json" } + ] +} diff --git a/packages/keyring/README.md b/packages/keyring/README.md new file mode 100644 index 0000000..bff1f7f --- /dev/null +++ b/packages/keyring/README.md @@ -0,0 +1,17 @@ +# @pezkuwi/keyring + +Key management of user accounts including generation and retrieval of keyring pairs from a variety of input combinations. + +## Usage + +Installation - + +``` +yarn add @pezkuwi/keyring +``` + +Classes and Functions can be imported as follows: + +```js +import Keyring from '@pezkuwi/keyring'; +``` diff --git a/packages/keyring/package.json b/packages/keyring/package.json new file mode 100644 index 0000000..0a413b8 --- /dev/null +++ b/packages/keyring/package.json @@ -0,0 +1,32 @@ +{ + "author": "Jaco Greeff ", + "bugs": "https://github.com/pezkuwichain/pezkuwi-common/issues", + "description": "Keyring management", + "engines": { + "node": ">=18" + }, + "homepage": "https://github.com/pezkuwichain/pezkuwi-common/tree/master/packages/keyring#readme", + "license": "Apache-2.0", + "name": "@pezkuwi/keyring", + "repository": { + "directory": "packages/keyring", + "type": "git", + "url": "https://github.com/pezkuwichain/pezkuwi-common.git" + }, + "sideEffects": [ + "./packageDetect.js", + "./packageDetect.cjs" + ], + "type": "module", + "version": "14.0.1", + "main": "index.js", + "dependencies": { + "@pezkuwi/util": "14.0.1", + "@pezkuwi/util-crypto": "14.0.1", + "tslib": "^2.8.0" + }, + "peerDependencies": { + "@pezkuwi/util": "14.0.1", + "@pezkuwi/util-crypto": "14.0.1" + } +} diff --git a/packages/keyring/src/bundle.ts b/packages/keyring/src/bundle.ts new file mode 100644 index 0000000..9ec0481 --- /dev/null +++ b/packages/keyring/src/bundle.ts @@ -0,0 +1,16 @@ +// Copyright 2017-2025 @polkadot/keyring authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +// all external +// eslint-disable-next-line deprecation/deprecation +export { decodeAddress, encodeAddress, setSS58Format } from '@pezkuwi/util-crypto'; + +// all named +export { Keyring } from './keyring.js'; +export { packageInfo } from './packageInfo.js'; +export { createPair } from './pair/index.js'; +export { createTestKeyring } from './testing.js'; +export { createTestPairs } from './testingPairs.js'; + +// all starred +export * from './defaults.js'; diff --git a/packages/keyring/src/defaults.ts b/packages/keyring/src/defaults.ts new file mode 100644 index 0000000..6b3f825 --- /dev/null +++ b/packages/keyring/src/defaults.ts @@ -0,0 +1,8 @@ +// Copyright 2017-2025 @polkadot/keyring authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +// default substrate dev phrase +export const DEV_PHRASE = 'bottom drive obey lake curtain smoke basket hold race lonely fit walk'; + +// seed from the above phrase +export const DEV_SEED = '0xfac7959dbfe72f052e5a0c3c8d6530f202b02fd8f9f5ca3580ec8deb7797479e'; diff --git a/packages/keyring/src/index.spec.ts b/packages/keyring/src/index.spec.ts new file mode 100644 index 0000000..8b1d7c3 --- /dev/null +++ b/packages/keyring/src/index.spec.ts @@ -0,0 +1,609 @@ +// Copyright 2017-2025 @polkadot/keyring authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import type { KeyringPair$Json } from './types.js'; + +import { hexToU8a, stringToU8a } from '@pezkuwi/util'; +import { base64Decode, cryptoWaitReady, encodeAddress, mnemonicGenerate, randomAsU8a, setSS58Format } from '@pezkuwi/util-crypto'; +import * as languages from '@pezkuwi/util-crypto/mnemonic/wordlists/index'; + +import { decodePair } from './pair/decode.js'; +import Keyring from './index.js'; + +await cryptoWaitReady(); + +describe('keypair', (): void => { + describe('ed25519', (): void => { + const publicKeyOne = new Uint8Array([47, 140, 97, 41, 216, 22, 207, 81, 195, 116, 188, 127, 8, 195, 230, 62, 209, 86, 207, 120, 174, 251, 74, 101, 80, 217, 123, 135, 153, 121, 119, 238]); + const publicKeyTwo = new Uint8Array([215, 90, 152, 1, 130, 177, 10, 183, 213, 75, 254, 211, 201, 100, 7, 58, 14, 225, 114, 243, 218, 166, 35, 37, 175, 2, 26, 104, 247, 7, 81, 26]); + const seedOne = stringToU8a('12345678901234567890123456789012'); + const seedTwo = hexToU8a('0x9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60'); + let keyring: Keyring; + + beforeEach((): void => { + keyring = new Keyring({ ss58Format: 42, type: 'ed25519' }); + + keyring.addFromSeed(seedOne, {}); + }); + + it('adds the pair', (): void => { + expect( + keyring.addFromSeed(seedTwo, {}).publicKey + ).toEqual(publicKeyTwo); + }); + + it('creates via a dev seed', (): void => { + expect( + keyring.addFromUri('//Alice').address + ).toEqual('5FA9nQDVg267DEd8m1ZypXLBnvN7SFxYwV7ndqSYGiN9TTpu'); + }); + + it('creates a ed25519 pair via mnemonicToSeed', (): void => { + expect( + keyring.addFromUri( + 'seed sock milk update focus rotate barely fade car face mechanic mercy' + ).address + ).toEqual('5DkQP32jP4DVJLWWBRBoZF2tpWjqFrcrTBo6H5NcSk7MxKCC'); + }); + + it('adds from a mnemonic, with correct ss58', (): void => { + // eslint-disable-next-line deprecation/deprecation + setSS58Format(20); // this would not be used + keyring.setSS58Format(2); // this would be used + + const pair = keyring.addFromMnemonic('moral movie very draw assault whisper awful rebuild speed purity repeat card', {}); + + expect(pair.address).toEqual('HSLu2eci2GCfWkRimjjdTXKoFSDL3rBv5Ey2JWCBj68cVZj'); + expect(encodeAddress(pair.publicKey)).toEqual('35cDYtPsdG1HUa2n2MaARgJyRz1WKMBZK1DL6c5cX7nugQh1'); + }); + + it('allows publicKeys retrieval', (): void => { + keyring.addFromSeed(seedTwo, {}); + + expect( + keyring.getPublicKeys() + ).toEqual([publicKeyOne, publicKeyTwo]); + }); + + it('allows retrieval of a specific item', (): void => { + expect( + keyring.getPair(publicKeyOne).publicKey + ).toEqual(publicKeyOne); + }); + + it('allows adding from JSON', (): void => { + expect( + keyring.addFromJson( + JSON.parse('{"address":"5GoKvZWG5ZPYL1WUovuHW3zJBWBP5eT8CbqjdRY4Q6iMaQua","encoded":"0xb4a14995d25ab609f3686e9fa45f1fb237cd833f33f00d4b12c51858ca070d96972e47d73aae5eeb0fc06f923826cf0943fdb02c2c2ee30ef52a7912663053940d1da4da66b3a3f520ae07422c1c94b2d95690fca9d1f4a997623bb2923a8833280e19e7f72c3c5cfa343974e60e2b3dc53b404fdaf330756daad5e4e3","encoding":{"content":"pkcs8","type":"xsalsa20-poly1305","version":"0"},"meta":{"isTesting":true,"name":"alice"}}') as KeyringPair$Json + ).publicKey + ).toEqual( + new Uint8Array([209, 114, 167, 76, 218, 76, 134, 89, 18, 195, 43, 160, 168, 10, 87, 174, 105, 171, 174, 65, 14, 92, 203, 89, 222, 232, 78, 47, 68, 50, 219, 79]) + ); + }); + + it('signs and verifies', (): void => { + const MESSAGE = stringToU8a('this is a message'); + const pair = keyring.getPair(publicKeyOne); + const signature = pair.sign(MESSAGE); + + expect(pair.verify(MESSAGE, signature, pair.publicKey)).toBe(true); + expect(pair.verify(MESSAGE, signature, randomAsU8a())).toBe(false); + expect(pair.verify(new Uint8Array(), signature, pair.publicKey)).toBe(false); + }); + + it('signs and verifies (withType)', (): void => { + const MESSAGE = stringToU8a('this is a message'); + const pair = keyring.getPair(publicKeyOne); + const signature = pair.sign(MESSAGE, { withType: true }); + + expect(pair.verify(MESSAGE, signature, pair.publicKey)).toBe(true); + expect(pair.verify(MESSAGE, signature, randomAsU8a())).toBe(false); + expect(pair.verify(new Uint8Array(), signature, pair.publicKey)).toBe(false); + }); + }); + + describe('sr25519', (): void => { + const publicKeyOne = new Uint8Array([116, 28, 8, 160, 111, 65, 197, 150, 96, 143, 103, 116, 37, 155, 217, 4, 51, 4, 173, 250, 93, 62, 234, 98, 118, 11, 217, 190, 151, 99, 77, 99]); + const publicKeyTwo = hexToU8a('0x44a996beb1eef7bdcab976ab6d2ca26104834164ecf28fb375600576fcc6eb0f'); + const seedOne = stringToU8a('12345678901234567890123456789012'); + const seedTwo = hexToU8a('0x9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60'); + let keyring: Keyring; + + beforeEach((): void => { + keyring = new Keyring({ ss58Format: 42, type: 'sr25519' }); + + keyring.addFromSeed(seedOne, {}); + }); + + it('creates with dev phrase when only path specified', (): void => { + expect( + keyring.createFromUri('//Alice').address + ).toEqual('5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY'); + }); + + it('creates with integer derivations', (): void => { + // MAX_SAFE_INTEGER + expect( + keyring.createFromUri('//9007199254740991').address + ).toEqual('5CDsyNZyqxLpHnTvknr68anUcYoBFjZbFKiEJJf4prB75Uog'); + + // MAX_SAFE_INTEGER + extra digits + expect( + keyring.createFromUri('//900719925474099999').address + ).toEqual('5GHj2D7RG2m2DXYwGSDpXwuuxn53G987i7p2EQVDqP4NYu4q'); + }); + + it('creates via dev seed (2-byte encoding)', (): void => { + keyring.setSS58Format(252); + + expect( + keyring.addFromUri('//Alice').address + ).toEqual('xw8P6urbSAronL3zZFB7dg8p7LLSgKCUFDUgjohnf1iP434ic'); + }); + + it('adds the pair', (): void => { + expect( + keyring.addFromSeed(seedTwo, {}).publicKey + ).toEqual(publicKeyTwo); + }); + + it('adds from a mnemonic', (): void => { + keyring.setSS58Format(2); + + expect( + keyring.addFromMnemonic('moral movie very draw assault whisper awful rebuild speed purity repeat card', {}).address + ).toEqual('FSjXNRT2K1R5caeHLPD6WMrqYUpfGZB7ua8W89JFctZ1YqV'); + }); + + it('allows publicKeys retrieval', (): void => { + keyring.addFromSeed(seedTwo, {}); + + expect( + keyring.getPublicKeys() + ).toEqual([publicKeyOne, publicKeyTwo]); + }); + + it('allows retrieval of a specific item', (): void => { + expect( + keyring.getPair(publicKeyOne).publicKey + ).toEqual(publicKeyOne); + }); + + it('allows adding from JSON', (): void => { + expect( + keyring.addFromJson( + JSON.parse('{"address":"5GoKvZWG5ZPYL1WUovuHW3zJBWBP5eT8CbqjdRY4Q6iMaQua","encoded":"0xb4a14995d25ab609f3686e9fa45f1fb237cd833f33f00d4b12c51858ca070d96972e47d73aae5eeb0fc06f923826cf0943fdb02c2c2ee30ef52a7912663053940d1da4da66b3a3f520ae07422c1c94b2d95690fca9d1f4a997623bb2923a8833280e19e7f72c3c5cfa343974e60e2b3dc53b404fdaf330756daad5e4e3","encoding":{"content":"pkcs8","type":"xsalsa20-poly1305","version":"0"},"meta":{"isTesting":true,"name":"alice"}}') as KeyringPair$Json + ).publicKey + ).toEqual( + new Uint8Array([209, 114, 167, 76, 218, 76, 134, 89, 18, 195, 43, 160, 168, 10, 87, 174, 105, 171, 174, 65, 14, 92, 203, 89, 222, 232, 78, 47, 68, 50, 219, 79]) + ); + }); + + it('signs and verifies', (): void => { + const MESSAGE = stringToU8a('this is a message'); + const pair = keyring.getPair(publicKeyOne); + const signature = pair.sign(MESSAGE); + + expect(pair.verify(MESSAGE, signature, pair.publicKey)).toBe(true); + expect(pair.verify(MESSAGE, signature, randomAsU8a())).toBe(false); + expect(pair.verify(new Uint8Array(), signature, pair.publicKey)).toBe(false); + }); + + it('signs and verifies (withType)', (): void => { + const MESSAGE = stringToU8a('this is a message'); + const pair = keyring.getPair(publicKeyOne); + const signature = pair.sign(MESSAGE, { withType: true }); + + expect(pair.verify(MESSAGE, signature, pair.publicKey)).toBe(true); + expect(pair.verify(MESSAGE, signature, randomAsU8a())).toBe(false); + expect(pair.verify(new Uint8Array(), signature, pair.publicKey)).toBe(false); + }); + }); + + describe('ecdsa', (): void => { + const seedOne = 'potato act energy ahead stone taxi receive fame gossip equip chest round'; + const seedTwo = hexToU8a('0x3c74be003bd9a876be439949ccf2b292bd966c94959a689173b295b326cd6da7'); + const publicKeyOne = hexToU8a('0x02c6b6c664db5ef505477bba1cf2f1789c98796b9bb5fa21abd0ac4589bed980e7'); + const publicKeyTwo = hexToU8a('0x021da683b913fb28c979ba3e5f1881415cef4b1f58a5d05ed3610a2995e7b4943c'); + const addressKeyOne = hexToU8a('0x0cfd0dd2c59a9987b9848919163931b6a42283ffd3d91e92c98b522525a7038f'); + let keyring: Keyring; + + beforeEach((): void => { + keyring = new Keyring({ ss58Format: 42, type: 'ecdsa' }); + + keyring.addFromMnemonic(seedOne, {}); + }); + + it('creates with dev phrase when only path specified', (): void => { + expect( + keyring.createFromUri('//Alice').address + ).toEqual('5C7C2Z5sWbytvHpuLTvzKunnnRwQxft1jiqrLD5rhucQ5S9X'); + }); + + it('adds the pair', (): void => { + expect( + keyring.addFromSeed(seedTwo, {}).publicKey + ).toEqual(publicKeyTwo); + }); + + it('adds from a mnemonic', (): void => { + keyring.setSS58Format(2); + + expect( + keyring.addFromMnemonic('moral movie very draw assault whisper awful rebuild speed purity repeat card').address + ).toEqual('DrRE1KAcs4pCicX8yJPh7YxkLPQ2vXnCFSVRPQfx38KjEFe'); + }); + + it('allows publicKeys retrieval', (): void => { + keyring.addFromSeed(seedTwo, {}); + + expect( + keyring.getPublicKeys() + ).toEqual([publicKeyOne, publicKeyTwo]); + }); + + it('allows retrieval of a specific item', (): void => { + expect( + keyring.getPair(addressKeyOne).publicKey + ).toEqual(publicKeyOne); + }); + + it('allows adding from JSON', (): void => { + expect( + keyring.addFromJson( + JSON.parse('{"address":"5DzMsaYFhmpRdErWrP6K6PD7UXzYoeETToSBUrZSvxasqWRz","encoded":"0xa192d39b42bc1601bf61df31039a554228593fadf870bc837b658a5114627aca199fff596260c95fe8994c66a47636cf0270aa08f402ba5541038753960d00e6c3af5e239ec58fb1eef3db7d6bc266f4853bdfe4ed17122d9092d879014d53980d2ee57f6f55a88c38836447d8645008e8815379626addc8f81f80cd49a2","encoding":{"content":"pkcs8","type":"xsalsa20-poly1305","version":"2"},"meta":{}}') as KeyringPair$Json + ).address + ).toEqual('5DzMsaYFhmpRdErWrP6K6PD7UXzYoeETToSBUrZSvxasqWRz'); + }); + + it('allows creation from JSON', (): void => { + keyring.setSS58Format(2); + const pair = keyring.createFromJson( + JSON.parse('{"address":"0x02fde629668eb2bcc7d748f40a7e597f7c7b363498ff3db31f03ce4854937883ad","encoded":"qIhAhKqtf2iyEoWEr8nmBdksSI8EHHCpgJHToqd6Pl8AgAAAAQAAAAgAAADDZ//fj/BRRj+0+bl1KAlYgoPJp6nEUwiw0fVqO2BW4mjEgQ+iWwJEgDf1JUtecbzOlfhTXBzqX/dIYzLgUADrF4EFEPpboCWiU1iN7W/3DM1cOTRVvTGcbdIqW//z3axhz961qzeJVUIFgllwGe/euLUPIlKbIkiN/CsRYdQ=","encoding":{"content":["pkcs8","ecdsa"],"type":["scrypt","xsalsa20-poly1305"],"version":"3"},"meta":{"genesisHash":"0xb0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafe","name":"ecdsa","tags":[],"whenCreated":1600925898271}}') as KeyringPair$Json + ); + + expect(pair.address).toEqual('DHL8HKFuTTR55JzzLmkJRCAfPBbuevKaT9cXikxbEV97Ko8'); + expect(pair.publicKey).toEqual(hexToU8a('0x02fde629668eb2bcc7d748f40a7e597f7c7b363498ff3db31f03ce4854937883ad')); + }); + + it('fails toJson() when password is incorrect', (): void => { + const pair = keyring.createFromJson( + JSON.parse('{"address":"0x02fde629668eb2bcc7d748f40a7e597f7c7b363498ff3db31f03ce4854937883ad","encoded":"qIhAhKqtf2iyEoWEr8nmBdksSI8EHHCpgJHToqd6Pl8AgAAAAQAAAAgAAADDZ//fj/BRRj+0+bl1KAlYgoPJp6nEUwiw0fVqO2BW4mjEgQ+iWwJEgDf1JUtecbzOlfhTXBzqX/dIYzLgUADrF4EFEPpboCWiU1iN7W/3DM1cOTRVvTGcbdIqW//z3axhz961qzeJVUIFgllwGe/euLUPIlKbIkiN/CsRYdQ=","encoding":{"content":["pkcs8","ecdsa"],"type":["scrypt","xsalsa20-poly1305"],"version":"3"},"meta":{"genesisHash":"0xb0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafe","name":"ecdsa","tags":[],"whenCreated":1600925898271}}') as KeyringPair$Json + ); + + expect( + () => pair.toJson('invalid') + ).toThrow(/Unable to decode using the supplied passphrase/); + }); + + it('pass toJson() when password is correct', (): void => { + const pair = keyring.createFromJson( + JSON.parse('{"address":"0x02fde629668eb2bcc7d748f40a7e597f7c7b363498ff3db31f03ce4854937883ad","encoded":"qIhAhKqtf2iyEoWEr8nmBdksSI8EHHCpgJHToqd6Pl8AgAAAAQAAAAgAAADDZ//fj/BRRj+0+bl1KAlYgoPJp6nEUwiw0fVqO2BW4mjEgQ+iWwJEgDf1JUtecbzOlfhTXBzqX/dIYzLgUADrF4EFEPpboCWiU1iN7W/3DM1cOTRVvTGcbdIqW//z3axhz961qzeJVUIFgllwGe/euLUPIlKbIkiN/CsRYdQ=","encoding":{"content":["pkcs8","ecdsa"],"type":["scrypt","xsalsa20-poly1305"],"version":"3"},"meta":{"genesisHash":"0xb0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafe","name":"ecdsa","tags":[],"whenCreated":1600925898271}}') as KeyringPair$Json + ); + + expect( + () => pair.toJson('testing') + ).not.toThrow(); + }); + + it('encodes a pair toJSON (and decodes)', (): void => { + const pair = keyring.createFromUri('moral movie very draw assault whisper awful rebuild speed purity repeat card'); + const json = pair.toJson('password'); + + expect(json.address).toEqual('0x03ddca309bd5fedd01f914d6fb76f23aa848a2a520802159215dba5085d7863619'); + expect(json.encoding).toEqual({ + content: ['pkcs8', 'ecdsa'], + type: ['scrypt', 'xsalsa20-poly1305'], + version: '3' + }); + + const newPair = keyring.createFromJson(json); + + expect(newPair.publicKey).toEqual(pair.publicKey); + expect( + () => newPair.unlock('password') + ).not.toThrow(); + }); + + it('signs and verifies', (): void => { + const MESSAGE = stringToU8a('this is a message'); + const pair = keyring.getPair(addressKeyOne); + const signature = pair.sign(MESSAGE); + + expect(pair.verify(MESSAGE, signature, pair.publicKey)).toBe(true); + expect(pair.verify(MESSAGE, signature, randomAsU8a())).toBe(false); + expect(pair.verify(new Uint8Array(), signature, pair.publicKey)).toBe(false); + }); + + it('signs and verifies (withType)', (): void => { + const MESSAGE = stringToU8a('this is a message'); + const pair = keyring.getPair(addressKeyOne); + const signature = pair.sign(MESSAGE, { withType: true }); + + expect(pair.verify(MESSAGE, signature, pair.publicKey)).toBe(true); + expect(pair.verify(MESSAGE, signature, randomAsU8a())).toBe(false); + expect(pair.verify(new Uint8Array(), signature, pair.publicKey)).toBe(false); + }); + }); + + describe('ethereum', (): void => { + // combine mnemonic with derivation path + const PHRASE = 'seed sock milk update focus rotate barely fade car face mechanic mercy' + '/m/44\'/60\'/0\'/0/0'; + const PRIV_KEY_ONE = '0x070dc3117300011918e26b02176945cc15c3d548cf49fd8418d97f93af699e46'; + const ETH_ADDRESS_ONE = '0x31ea8795EE32D782C8ff41a5C68Dcbf0F5B27f6d'; + const ETH_ADDRESS_TWO = '0x4119b2e6c3Cb618F4f0B93ac77f9BeeC7FF02887'; + + let keyring: Keyring; + + beforeEach((): void => { + keyring = new Keyring({ type: 'ethereum' }); + }); + + it('creates with dev phrase from the private key', (): void => { + const pair = keyring.addFromSeed(hexToU8a(PRIV_KEY_ONE)); + + expect( + pair.address + ).toEqual(ETH_ADDRESS_ONE); + }); + + it('creates with dev phrase from the private key in createFromUri', (): void => { + const pair = keyring.createFromUri(PRIV_KEY_ONE); + + expect( + pair.address + ).toEqual(ETH_ADDRESS_ONE); + }); + + it('creates with dev phrase with derivation path specified', (): void => { + const pair = keyring.createFromUri(PHRASE); + + expect( + pair.address + ).toEqual(ETH_ADDRESS_ONE); + }); + + it('creates with dev phrase with derivation path specified - addFromUri', (): void => { + expect( + keyring.addFromUri(PHRASE).address + ).toEqual(ETH_ADDRESS_ONE); + }); + + it('creates with dev phrase with derivation path specified - addFromUri with type', (): void => { + const keyringUntyped = new Keyring(); + + expect( + keyringUntyped.addFromUri(PHRASE, {}, 'ethereum').address + ).toEqual(ETH_ADDRESS_ONE); + }); + + it('encodes a pair toJSON (and decodes)', (): void => { + const pair = keyring.createFromUri(PHRASE); + const json = pair.toJson('password'); + + expect(json.address).toEqual('0x0381351b1b46d2602b0992bb5d5531f9c1696b0812feb2534b6884adc47e2e1d8b'); // this is the public key (different from address for ethereum) + expect(json.encoding).toEqual({ + content: ['pkcs8', 'ethereum'], + type: ['scrypt', 'xsalsa20-poly1305'], + version: '3' + }); + + const newPair = keyring.createFromJson(json); + + expect(newPair.publicKey).toEqual(pair.publicKey); + expect( + () => newPair.unlock('password') + ).not.toThrow(); + }); + + it('encodes a pair toJSON and back', (): void => { + const pairOriginal = keyring.createFromUri(PHRASE); + const json = pairOriginal.toJson('password'); + const pair = keyring.addFromJson( + json + ); + + expect(pair.address).toEqual(ETH_ADDRESS_ONE); + + pair.decodePkcs8('password'); + + expect(pair.isLocked).toBe(false); + expect(pair.address).toBe(ETH_ADDRESS_ONE); + }); + + it('allows adding from JSON', (): void => { + const pair = keyring.addFromJson( + JSON.parse('{"address":"KWCv1L3QX9LDPwY4VzvLmarEmXjVJidUzZcinvVnmxAJJCBou","encoded":"U8qFEaghhmNV2PgFhjqzmhyUy37Ok7abfFU2MNsBd0sAgAAAAQAAAAgAAAA3+NniKogzNphiMNueB1X0sGA07B6CaXWfpXPx45iSXoTTprwzU5mOoSqUWO0GKHROI72LN+uJ8Yfv6Ll6JOOV3VPKfoVoFmYm+zDrrMPa0gk5E5kUuSijxADcE6zUrliPVr0Ix/qaghu5SJ7RtWDQLBf4Hp86SJ8Gg6gTSSk=","encoding":{"content":["pkcs8","ethereum"],"type":["scrypt","xsalsa20-poly1305"],"version":"3"},"meta":{}}') as KeyringPair$Json + ); + + expect(pair.publicKey).toEqual(hexToU8a('0x03b9dc646dd71118e5f7fda681ad9eca36eb3ee96f344f582fbe7b5bcdebb13077')); + expect(pair.address).toEqual(ETH_ADDRESS_TWO); + + pair.decodePkcs8('password'); + + expect(pair.isLocked).toBe(false); + expect(pair.publicKey).toEqual(hexToU8a('0x03b9dc646dd71118e5f7fda681ad9eca36eb3ee96f344f582fbe7b5bcdebb13077')); + expect(pair.address).toBe(ETH_ADDRESS_TWO); + }); + + it('allows for signing/verification', (): void => { + const MESSAGE = stringToU8a('just some test message'); + const signer = keyring.createFromUri(PHRASE); + const verifier = keyring.addFromJson( + JSON.parse('{"address":"KWCv1L3QX9LDPwY4VzvLmarEmXjVJidUzZcinvVnmxAJJCBou","encoded":"U8qFEaghhmNV2PgFhjqzmhyUy37Ok7abfFU2MNsBd0sAgAAAAQAAAAgAAAA3+NniKogzNphiMNueB1X0sGA07B6CaXWfpXPx45iSXoTTprwzU5mOoSqUWO0GKHROI72LN+uJ8Yfv6Ll6JOOV3VPKfoVoFmYm+zDrrMPa0gk5E5kUuSijxADcE6zUrliPVr0Ix/qaghu5SJ7RtWDQLBf4Hp86SJ8Gg6gTSSk=","encoding":{"content":["pkcs8","ethereum"],"type":["scrypt","xsalsa20-poly1305"],"version":"3"},"meta":{}}') as KeyringPair$Json + ); + + const signature = signer.sign(MESSAGE); + const dummyPublic = verifier.publicKey.slice(); + + dummyPublic[dummyPublic.length - 1] = 0; + + expect(verifier.verify(MESSAGE, signature, signer.publicKey)).toBe(true); + expect(verifier.verify(MESSAGE, signature, dummyPublic)).toBe(false); + expect(verifier.verify(new Uint8Array(), signature, signer.publicKey)).toBe(false); + }); + + it('allows for signing/verification (withType)', (): void => { + const MESSAGE = stringToU8a('just some test message'); + const signer = keyring.createFromUri(PHRASE); + const verifier = keyring.addFromJson( + JSON.parse('{"address":"KWCv1L3QX9LDPwY4VzvLmarEmXjVJidUzZcinvVnmxAJJCBou","encoded":"U8qFEaghhmNV2PgFhjqzmhyUy37Ok7abfFU2MNsBd0sAgAAAAQAAAAgAAAA3+NniKogzNphiMNueB1X0sGA07B6CaXWfpXPx45iSXoTTprwzU5mOoSqUWO0GKHROI72LN+uJ8Yfv6Ll6JOOV3VPKfoVoFmYm+zDrrMPa0gk5E5kUuSijxADcE6zUrliPVr0Ix/qaghu5SJ7RtWDQLBf4Hp86SJ8Gg6gTSSk=","encoding":{"content":["pkcs8","ethereum"],"type":["scrypt","xsalsa20-poly1305"],"version":"3"},"meta":{}}') as KeyringPair$Json + ); + + const signature = signer.sign(MESSAGE, { withType: true }); + const dummyPublic = verifier.publicKey.slice(); + + dummyPublic[dummyPublic.length - 1] = 0; + + expect(verifier.verify(MESSAGE, signature, signer.publicKey)).toBe(true); + expect(verifier.verify(MESSAGE, signature, dummyPublic)).toBe(false); + expect(verifier.verify(new Uint8Array(), signature, signer.publicKey)).toBe(false); + }); + }); + + describe('raw pair add/create', (): void => { + const json = JSON.parse('{"address":"5PjeoaQzCoYbSi42aQRKB3Sx18StCaEAzCbGEEbWbZyfKS3H","encoded":"JQUl8ZpoXv2OMkL9TPylLmcIye2cYhaS9INICbFgZTsAgAAAAQAAAAgAAAAr/0hJOOzokIdBG71TstigLABX9D5xGD7L37ySxtjDrVRg26LL90jLQ47quT9o3bq6ppXMVL6USk7Q4p3WU66bojTFuCDyhpYRhNbUqU6s0rD3S4bhv9lG+pG9vQ4eD5PVQUvxdANmJpYuDg45nrTmsMC5AHGdFGkHW/LHnkmbFid1cvPYkdiBoef5CIEdoly512pxMupVxnJWF1NT","encoding":{"content":["pkcs8","sr25519"],"type":["scrypt","xsalsa20-poly1305"],"version":"3"},"meta":{"name":"hello"}}') as KeyringPair$Json; + const decoded = decodePair('1', base64Decode(json.encoded), json.encoding.type); + const keyring = new Keyring({ ss58Format: 44 }); + + it('creates a pair from a private/public combo', (): void => { + const pair = keyring.createFromPair(decoded, json.meta, 'sr25519'); + + expect(pair.address).toEqual('5PjeoaQzCoYbSi42aQRKB3Sx18StCaEAzCbGEEbWbZyfKS3H'); + expect(pair.isLocked).toEqual(false); + expect(pair.meta.name).toEqual('hello'); + }); + + it('adds a pair from a private/public combo', (): void => { + keyring.addFromPair(decoded, json.meta, 'sr25519'); + + const pair = keyring.getPairs()[0]; + + expect(pair.address).toEqual('5PjeoaQzCoYbSi42aQRKB3Sx18StCaEAzCbGEEbWbZyfKS3H'); + expect(pair.isLocked).toEqual(false); + expect(pair.meta.name).toEqual('hello'); + }); + }); + + describe('util', (): void => { + let keyring: Keyring; + + beforeEach((): void => { + keyring = new Keyring({ ss58Format: 42 }); + }); + + it('can re-encode an address to Polkadot live', (): void => { + expect( + keyring.encodeAddress('5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY', 0) + ).toEqual('15oF4uVJwmo4TdGW7VfQxNLavjCXviqxT9S1MgbjMNHr6Sp5'); + }); + + it('can re-encode an address to keyring default', (): void => { + expect( + keyring.encodeAddress('15oF4uVJwmo4TdGW7VfQxNLavjCXviqxT9S1MgbjMNHr6Sp5') + ).toEqual('5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY'); + }); + }); + + describe('version 2 JSON', (): void => { + const PAIR = '{"address":"5CczAE5AmGrZ93MeVhha3Ywam7j9dKB7cArnH7gtrXcMFJvu","encoded":"0xee8f236e2ac3217ce689692a4afc612220dc77fddaed0482f8f95136a7c3e034cccfbc495410a6e9b2439904974ed1d207abeca536ff6985ceb78edeeb3dc343e561c184c488101af8811d1331430b4ccf0e96ef507132e5132964e8564232e7100d973c5bee7b231dd0c8ad5273f3501515a422c8d7ed9d20a73c0ed17c98ee4588e54844bb73052dcad81f7a1094613d63c162fec7446c88b1fae70e","encoding":{"content":["pkcs8","sr25519"],"type":"xsalsa20-poly1305","version":"2"},"meta":{"genesisHash":"0xe143f23803ac50e8f6f8e62695d1ce9e4e1d68aa36c1cd2cfd15340213f3423e","name":"json v2","tags":[],"whenCreated":1595243159596}}'; + const PASS2 = 'versionTwo'; + const PASS3 = 'versionThree'; + let keyring: Keyring; + + beforeEach((): void => { + keyring = new Keyring({ ss58Format: 42 }); + }); + + it('can decode from a version 2 JSON file', (): void => { + const pair = keyring.addFromJson(JSON.parse(PAIR) as KeyringPair$Json); + + pair.decodePkcs8(PASS2); + + const json = pair.toJson(PASS3); + + expect(pair.isLocked).toBe(false); + expect(pair.address).toBe('5CczAE5AmGrZ93MeVhha3Ywam7j9dKB7cArnH7gtrXcMFJvu'); + expect(json.encoding).toEqual({ + content: ['pkcs8', 'sr25519'], + type: ['scrypt', 'xsalsa20-poly1305'], + version: '3' + }); + + pair.decodePkcs8(PASS3); + + expect(pair.address).toEqual('5CczAE5AmGrZ93MeVhha3Ywam7j9dKB7cArnH7gtrXcMFJvu'); + }); + }); + + describe('version 3 JSON (hex)', (): void => { + const PAIR = '{"address":"FLiSDPCcJ6auZUGXALLj6jpahcP6adVFDBUQznPXUQ7yoqH","encoded":"0xcd238963070cc4d6806053ee1ac500c7add9c28732bb5d434a332f84a91d9be0008000000100000008000000cf630a1113941b350ddd06697e50399183162e5e9a0e893eafc7f5f4893a223dca5055706b9925b56fdb4304192143843da718e11717daf89cf4f4781f94fb443f61432f782d54280af9eec90bd3069c3cc2d957a42b7c18dc2e9497f623735518e0e49b58f8e4db2c09da3a45dbb935659d015fc94b946cba75b606a6ff7f4e823f6b049e2e6892026b49de02d6dbbd64646fe0933f537d9ea53a70be","encoding":{"content":["pkcs8","sr25519"],"type":["scrypt","xsalsa20-poly1305"],"version":"3"},"meta":{"genesisHash":"0xb0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafe","name":"version3","tags":[],"whenCreated":1595277797639}}'; + const PASS3 = 'version3'; + let keyring: Keyring; + + beforeEach((): void => { + keyring = new Keyring({ ss58Format: 2 }); + }); + + it('can decode from a version 3 JSON file', (): void => { + const pair = keyring.addFromJson(JSON.parse(PAIR) as KeyringPair$Json); + + pair.decodePkcs8(PASS3); + + expect(pair.isLocked).toBe(false); + expect(pair.address).toBe('FLiSDPCcJ6auZUGXALLj6jpahcP6adVFDBUQznPXUQ7yoqH'); + }); + }); + + describe('version 3 JSON (base64)', (): void => { + const PAIR = '{"address":"FLiSDPCcJ6auZUGXALLj6jpahcP6adVFDBUQznPXUQ7yoqH","encoded":"ILjSgYaGvq1zaCz/kx+aqfLaHBjLXz0Qsmr6RnkOVU4AgAAAAQAAAAgAAAB5R2hm5kgXyc0NQYFxvMU4zCdjB+ugs/ibEooqCvuudbaeKn3Ee47NkCqU1ecOJV+eeaVn4W4dRvIpj5kGmQOGsewR+MiQ/B0G9NFh7JXV0qcPlk2QMNW1/mbJrTO4miqL448BSkP7ZOhUV6HFUpMt3B9HwjiRLN8RORcFp0ID/Azs4Jl/xOpXNzbgQGIffWgCIKTxN9N1ku6tdlG4","encoding":{"content":["pkcs8","sr25519"],"type":["scrypt","xsalsa20-poly1305"],"version":"3"},"meta":{"genesisHash":"0xb0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafe","name":"version3","tags":[],"whenCreated":1595277797639,"whenEdited":1595278378596}}'; + const PASS3 = 'version3'; + let keyring: Keyring; + + beforeEach((): void => { + keyring = new Keyring({ ss58Format: 2 }); + }); + + it('can decode from a version 3 JSON file', (): void => { + const pair = keyring.addFromJson(JSON.parse(PAIR) as KeyringPair$Json); + + pair.decodePkcs8(PASS3); + + expect(pair.isLocked).toBe(false); + expect(pair.address).toBe('FLiSDPCcJ6auZUGXALLj6jpahcP6adVFDBUQznPXUQ7yoqH'); + }); + }); + + describe('wordlist', (): void => { + it('creates keypair from different wordlists mnemonics', (): void => { + Object.keys(languages).forEach((language) => { + const mnemonic = mnemonicGenerate(12, languages[language as keyof typeof languages]); + const keyring = new Keyring({ + type: 'ed25519' + }); + + expect(keyring.addFromMnemonic( + mnemonic, + {}, + 'ed25519', + languages[language as keyof typeof languages] + )).toBeDefined(); + }); + }); + it('cannot create from invalid wordlist', (): void => { + const mnemonic = mnemonicGenerate(12, languages.japanese); + const keyring = new Keyring({ + type: 'ed25519' + }); + + expect(() => keyring.addFromMnemonic( + mnemonic, + {}, + 'ed25519', + languages.english + )).toThrow('Invalid bip39 mnemonic specified'); + }); + }); +}); diff --git a/packages/keyring/src/index.ts b/packages/keyring/src/index.ts new file mode 100644 index 0000000..5784dcd --- /dev/null +++ b/packages/keyring/src/index.ts @@ -0,0 +1,10 @@ +// Copyright 2017-2025 @polkadot/keyring authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import './packageDetect.js'; + +import { Keyring } from './bundle.js'; + +export * from './bundle.js'; + +export default Keyring; diff --git a/packages/keyring/src/keyring.ts b/packages/keyring/src/keyring.ts new file mode 100644 index 0000000..2cb6965 --- /dev/null +++ b/packages/keyring/src/keyring.ts @@ -0,0 +1,307 @@ +// Copyright 2017-2025 @polkadot/keyring authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { EncryptedJsonEncoding, Keypair, KeypairType } from '@pezkuwi/util-crypto/types'; +import type { KeyringInstance, KeyringOptions, KeyringPair, KeyringPair$Json, KeyringPair$Meta } from './types.js'; + +import { hexToU8a, isHex, stringToU8a } from '@pezkuwi/util'; +import { base64Decode, decodeAddress, ed25519PairFromSeed as ed25519FromSeed, encodeAddress, ethereumEncode, hdEthereum, keyExtractSuri, keyFromPath, mnemonicToLegacySeed, mnemonicToMiniSecret, secp256k1PairFromSeed as secp256k1FromSeed, sr25519PairFromSeed as sr25519FromSeed } from '@pezkuwi/util-crypto'; + +import { createPair } from './pair/index.js'; +import { DEV_PHRASE } from './defaults.js'; +import { Pairs } from './pairs.js'; + +const PairFromSeed = { + ecdsa: (seed: Uint8Array): Keypair => secp256k1FromSeed(seed), + ed25519: (seed: Uint8Array): Keypair => ed25519FromSeed(seed), + ethereum: (seed: Uint8Array): Keypair => secp256k1FromSeed(seed), + sr25519: (seed: Uint8Array): Keypair => sr25519FromSeed(seed) +}; + +function pairToPublic ({ publicKey }: KeyringPair): Uint8Array { + return publicKey; +} + +/** + * # @polkadot/keyring + * + * ## Overview + * + * @name Keyring + * @summary Keyring management of user accounts + * @description Allows generation of keyring pairs from a variety of input combinations, such as + * json object containing account address or public key, account metadata, and account encoded using + * `addFromJson`, or by providing those values as arguments separately to `addFromAddress`, + * or by providing the mnemonic (seed phrase) and account metadata as arguments to `addFromMnemonic`. + * Stores the keyring pairs in a keyring pair dictionary. Removal of the keyring pairs from the keyring pair + * dictionary is achieved using `removePair`. Retrieval of all the stored pairs via `getPairs` or perform + * lookup of a pair for a given account address or public key using `getPair`. JSON metadata associated with + * an account may be obtained using `toJson` accompanied by the account passphrase. + */ +export class Keyring implements KeyringInstance { + readonly #pairs: Pairs; + + readonly #type: KeypairType; + + #ss58?: number | undefined; + + public decodeAddress = decodeAddress; + + constructor (options: KeyringOptions = {}) { + options.type = options.type || 'ed25519'; + + if (!['ecdsa', 'ethereum', 'ed25519', 'sr25519'].includes(options.type || 'undefined')) { + throw new Error(`Expected a keyring type of either 'ed25519', 'sr25519', 'ethereum' or 'ecdsa', found '${options.type || 'unknown'}`); + } + + this.#pairs = new Pairs(); + this.#ss58 = options.ss58Format; + this.#type = options.type; + } + + /** + * @description retrieve the pairs (alias for getPairs) + */ + public get pairs (): KeyringPair[] { + return this.getPairs(); + } + + /** + * @description retrieve the publicKeys (alias for getPublicKeys) + */ + public get publicKeys (): Uint8Array[] { + return this.getPublicKeys(); + } + + /** + * @description Returns the type of the keyring, ed25519, sr25519 or ecdsa + */ + public get type (): KeypairType { + return this.#type; + } + + /** + * @name addPair + * @summary Stores an account, given a keyring pair, as a Key/Value (public key, pair) in Keyring Pair Dictionary + */ + public addPair (pair: KeyringPair): KeyringPair { + return this.#pairs.add(pair); + } + + /** + * @name addFromAddress + * @summary Stores an account, given an account address, as a Key/Value (public key, pair) in Keyring Pair Dictionary + * @description Allows user to explicitly provide separate inputs including account address or public key, and optionally + * the associated account metadata, and the default encoded value as arguments (that may be obtained from the json file + * of an account backup), and then generates a keyring pair from them that it passes to + * `addPair` to stores in a keyring pair dictionary the public key of the generated pair as a key and the pair as the associated value. + */ + public addFromAddress (address: string | Uint8Array, meta: KeyringPair$Meta = {}, encoded: Uint8Array | null = null, type: KeypairType = this.type, ignoreChecksum?: boolean, encType?: EncryptedJsonEncoding[]): KeyringPair { + const publicKey = this.decodeAddress(address, ignoreChecksum); + + return this.addPair(createPair({ toSS58: this.encodeAddress, type }, { publicKey, secretKey: new Uint8Array() }, meta, encoded, encType)); + } + + /** + * @name addFromJson + * @summary Stores an account, given JSON data, as a Key/Value (public key, pair) in Keyring Pair Dictionary + * @description Allows user to provide a json object argument that contains account information (that may be obtained from the json file + * of an account backup), and then generates a keyring pair from it that it passes to + * `addPair` to stores in a keyring pair dictionary the public key of the generated pair as a key and the pair as the associated value. + */ + public addFromJson (json: KeyringPair$Json, ignoreChecksum?: boolean): KeyringPair { + return this.addPair(this.createFromJson(json, ignoreChecksum)); + } + + /** + * @name addFromMnemonic + * @summary Stores an account, given a mnemonic, as a Key/Value (public key, pair) in Keyring Pair Dictionary + * @description Allows user to provide a mnemonic (seed phrase that is provided when account is originally created) + * argument and a metadata argument that contains account information (that may be obtained from the json file + * of an account backup), and then generates a keyring pair from it that it passes to + * `addPair` to stores in a keyring pair dictionary the public key of the generated pair as a key and the pair as the associated value. + */ + public addFromMnemonic (mnemonic: string, meta: KeyringPair$Meta = {}, type: KeypairType = this.type, wordlist?: string[]): KeyringPair { + return this.addFromUri(mnemonic, meta, type, wordlist); + } + + /** + * @name addFromPair + * @summary Stores an account created from an explicit publicKey/secreteKey combination + */ + public addFromPair (pair: Keypair, meta: KeyringPair$Meta = {}, type: KeypairType = this.type): KeyringPair { + return this.addPair( + this.createFromPair(pair, meta, type) + ); + } + + /** + * @name addFromSeed + * @summary Stores an account, given seed data, as a Key/Value (public key, pair) in Keyring Pair Dictionary + * @description Stores in a keyring pair dictionary the public key of the pair as a key and the pair as the associated value. + * Allows user to provide the account seed as an argument, and then generates a keyring pair from it that it passes to + * `addPair` to store in a keyring pair dictionary the public key of the generated pair as a key and the pair as the associated value. + */ + public addFromSeed (seed: Uint8Array, meta: KeyringPair$Meta = {}, type: KeypairType = this.type): KeyringPair { + return this.addPair( + createPair({ toSS58: this.encodeAddress, type }, PairFromSeed[type](seed), meta, null) + ); + } + + /** + * @name addFromUri + * @summary Creates an account via an suri + * @description Extracts the phrase, path and password from a SURI format for specifying secret keys `//////` (the `///password` may be omitted, and `/` and `//` maybe repeated and mixed). The secret can be a hex string, mnemonic phrase or a string (to be padded) + */ + public addFromUri (suri: string, meta: KeyringPair$Meta = {}, type: KeypairType = this.type, wordlist?: string[]): KeyringPair { + return this.addPair( + this.createFromUri(suri, meta, type, wordlist) + ); + } + + /** + * @name createFromJson + * @description Creates a pair from a JSON keyfile + */ + public createFromJson ({ address, encoded, encoding: { content, type, version }, meta }: KeyringPair$Json, ignoreChecksum?: boolean): KeyringPair { + if (version === '3' && content[0] !== 'pkcs8') { + throw new Error(`Unable to decode non-pkcs8 type, [${content.join(',')}] found}`); + } + + const cryptoType = version === '0' || !Array.isArray(content) + ? this.type + : content[1]; + const encType = !Array.isArray(type) + ? [type] + : type; + + if (!['ed25519', 'sr25519', 'ecdsa', 'ethereum'].includes(cryptoType)) { + throw new Error(`Unknown crypto type ${cryptoType}`); + } + + // Here the address and publicKey are 32 bytes and isomorphic. This is why the address field needs to be the public key for ethereum type pairs + const publicKey = isHex(address) + ? hexToU8a(address) + : this.decodeAddress(address, ignoreChecksum); + const decoded = isHex(encoded) + ? hexToU8a(encoded) + : base64Decode(encoded); + + return createPair({ toSS58: this.encodeAddress, type: cryptoType as KeypairType }, { publicKey, secretKey: new Uint8Array() }, meta, decoded, encType); + } + + /** + * @name createFromPair + * @summary Creates a pair from an explicit publicKey/secreteKey combination + */ + public createFromPair (pair: Keypair, meta: KeyringPair$Meta = {}, type: KeypairType = this.type): KeyringPair { + return createPair({ toSS58: this.encodeAddress, type }, pair, meta, null); + } + + /** + * @name createFromUri + * @summary Creates a Keypair from an suri + * @description This creates a pair from the suri, but does not add it to the keyring + */ + public createFromUri (_suri: string, meta: KeyringPair$Meta = {}, type: KeypairType = this.type, wordlist?: string[]): KeyringPair { + // here we only aut-add the dev phrase if we have a hard-derived path + const suri = _suri.startsWith('//') + ? `${DEV_PHRASE}${_suri}` + : _suri; + const { derivePath, password, path, phrase } = keyExtractSuri(suri); + let seed: Uint8Array; + const isPhraseHex = isHex(phrase, 256); + + if (isPhraseHex) { + seed = hexToU8a(phrase); + } else { + const parts = phrase.split(' '); + + if ([12, 15, 18, 21, 24].includes(parts.length)) { + seed = type === 'ethereum' + ? mnemonicToLegacySeed(phrase, '', false, 64) + : mnemonicToMiniSecret(phrase, password, wordlist); + } else { + if (phrase.length > 32) { + throw new Error('specified phrase is not a valid mnemonic and is invalid as a raw seed at > 32 bytes'); + } + + seed = stringToU8a(phrase.padEnd(32)); + } + } + + const derived = type === 'ethereum' + ? isPhraseHex + ? PairFromSeed[type](seed) // for eth, if the private key is provided as suri, it must be derived only once + : hdEthereum(seed, derivePath.substring(1)) + : keyFromPath(PairFromSeed[type](seed), path, type); + + return createPair({ toSS58: this.encodeAddress, type }, derived, meta, null); + } + + /** + * @name encodeAddress + * @description Encodes the input into an ss58 representation + */ + public encodeAddress = (address: Uint8Array | string, ss58Format?: number): string => { + return this.type === 'ethereum' + ? ethereumEncode(address) + : encodeAddress(address, ss58Format ?? this.#ss58); + }; + + /** + * @name getPair + * @summary Retrieves an account keyring pair from the Keyring Pair Dictionary, given an account address + * @description Returns a keyring pair value from the keyring pair dictionary by performing + * a key lookup using the provided account address or public key (after decoding it). + */ + public getPair (address: string | Uint8Array): KeyringPair { + return this.#pairs.get(address); + } + + /** + * @name getPairs + * @summary Retrieves all account keyring pairs from the Keyring Pair Dictionary + * @description Returns an array list of all the keyring pair values that are stored in the keyring pair dictionary. + */ + public getPairs (): KeyringPair[] { + return this.#pairs.all(); + } + + /** + * @name getPublicKeys + * @summary Retrieves Public Keys of all Keyring Pairs stored in the Keyring Pair Dictionary + * @description Returns an array list of all the public keys associated with each of the keyring pair values that are stored in the keyring pair dictionary. + */ + public getPublicKeys (): Uint8Array[] { + return this.#pairs.all().map(pairToPublic); + } + + /** + * @name removePair + * @description Deletes the provided input address or public key from the stored Keyring Pair Dictionary. + */ + public removePair (address: string | Uint8Array): void { + this.#pairs.remove(address); + } + + /** + * @name setSS58Format; + * @description Sets the ss58 format for the keyring + */ + public setSS58Format (ss58: number): void { + this.#ss58 = ss58; + } + + /** + * @name toJson + * @summary Returns a JSON object associated with the input argument that contains metadata assocated with an account + * @description Returns a JSON object containing the metadata associated with an account + * when valid address or public key and when the account passphrase is provided if the account secret + * is not already unlocked and available in memory. Note that in [Polkadot-JS Apps](https://github.com/polkadot-js/apps) the user + * may backup their account to a JSON file that contains this information. + */ + public toJson (address: string | Uint8Array, passphrase?: string): KeyringPair$Json { + return this.#pairs.get(address).toJson(passphrase); + } +} diff --git a/packages/keyring/src/mod.ts b/packages/keyring/src/mod.ts new file mode 100644 index 0000000..23c41de --- /dev/null +++ b/packages/keyring/src/mod.ts @@ -0,0 +1,4 @@ +// Copyright 2017-2025 @polkadot/keyring authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +export * from './index.js'; diff --git a/packages/keyring/src/packageDetect.ts b/packages/keyring/src/packageDetect.ts new file mode 100644 index 0000000..7143817 --- /dev/null +++ b/packages/keyring/src/packageDetect.ts @@ -0,0 +1,13 @@ +// Copyright 2017-2025 @polkadot/keyring authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +// Do not edit, auto-generated by @polkadot/dev +// (packageInfo imports will be kept as-is, user-editable) + +import { detectPackage } from '@pezkuwi/util'; +import { packageInfo as utilInfo } from '@pezkuwi/util/packageInfo'; +import { packageInfo as cryptoInfo } from '@pezkuwi/util-crypto/packageInfo'; + +import { packageInfo } from './packageInfo.js'; + +detectPackage(packageInfo, null, [cryptoInfo, utilInfo]); diff --git a/packages/keyring/src/packageInfo.ts b/packages/keyring/src/packageInfo.ts new file mode 100644 index 0000000..83f9e1f --- /dev/null +++ b/packages/keyring/src/packageInfo.ts @@ -0,0 +1,6 @@ +// Copyright 2017-2025 @polkadot/keyring authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +// Do not edit, auto-generated by @polkadot/dev + +export const packageInfo = { name: '@polkadot/keyring', path: 'auto', type: 'auto', version: '14.0.1' }; diff --git a/packages/keyring/src/pair/decode.spec.ts b/packages/keyring/src/pair/decode.spec.ts new file mode 100644 index 0000000..9f6c4b9 --- /dev/null +++ b/packages/keyring/src/pair/decode.spec.ts @@ -0,0 +1,26 @@ +// Copyright 2017-2025 @polkadot/keyring authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { createTestPairs } from '../testingPairs.js'; + +const keyring = createTestPairs({ type: 'ed25519' }, false); + +describe('decode', (): void => { + it('fails when no data provided', (): void => { + expect( + (): void => keyring.alice.decodePkcs8() + ).toThrow(/No encrypted data available/); + }); + + it('returns correct publicKey from encoded', (): void => { + const PASS = 'testing'; + + expect( + (): void => keyring.alice.decodePkcs8( + PASS, keyring.alice.encodePkcs8(PASS) + ) + ).not.toThrow(); + }); +}); diff --git a/packages/keyring/src/pair/decode.ts b/packages/keyring/src/pair/decode.ts new file mode 100644 index 0000000..dbbc30d --- /dev/null +++ b/packages/keyring/src/pair/decode.ts @@ -0,0 +1,56 @@ +// Copyright 2017-2025 @polkadot/keyring authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { EncryptedJsonEncoding } from '@pezkuwi/util-crypto/types'; + +import { u8aEq } from '@pezkuwi/util'; +import { jsonDecryptData } from '@pezkuwi/util-crypto'; + +import { PAIR_DIV, PAIR_HDR, PUB_LENGTH, SEC_LENGTH, SEED_LENGTH } from './defaults.js'; + +const SEED_OFFSET = PAIR_HDR.length; + +/** + * Decode a pair, taking into account the generation-specific formats and headers + * + * For divisor/headers, don't rely on the magic being static. These will + * change between generations, aka with the long-awaited 4th generation + * of the format. The external decode interface is the only way to use and decode these. + **/ +export function decodePair (passphrase?: string, encrypted?: Uint8Array | null, _encType?: EncryptedJsonEncoding | EncryptedJsonEncoding[]): { publicKey: Uint8Array; secretKey: Uint8Array } { + const encType = Array.isArray(_encType) || _encType === undefined + ? _encType + : [_encType]; + const decrypted = jsonDecryptData(encrypted, passphrase, encType); + const header = decrypted.subarray(0, PAIR_HDR.length); + + // check the start header (generations 1-3) + if (!u8aEq(header, PAIR_HDR)) { + throw new Error('Invalid encoding header found in body'); + } + + // setup for generation 3 format + let secretKey = decrypted.subarray(SEED_OFFSET, SEED_OFFSET + SEC_LENGTH); + let divOffset = SEED_OFFSET + SEC_LENGTH; + let divider = decrypted.subarray(divOffset, divOffset + PAIR_DIV.length); + + // old-style (generation 1 & 2), we have the seed here + if (!u8aEq(divider, PAIR_DIV)) { + divOffset = SEED_OFFSET + SEED_LENGTH; + secretKey = decrypted.subarray(SEED_OFFSET, divOffset); + divider = decrypted.subarray(divOffset, divOffset + PAIR_DIV.length); + + // check the divisior at this point (already checked for generation 3) + if (!u8aEq(divider, PAIR_DIV)) { + throw new Error('Invalid encoding divider found in body'); + } + } + + const pubOffset = divOffset + PAIR_DIV.length; + const publicKey = decrypted.subarray(pubOffset, pubOffset + PUB_LENGTH); + + return { + publicKey, + secretKey + }; +} diff --git a/packages/keyring/src/pair/defaults.ts b/packages/keyring/src/pair/defaults.ts new file mode 100644 index 0000000..37f82e3 --- /dev/null +++ b/packages/keyring/src/pair/defaults.ts @@ -0,0 +1,20 @@ +// Copyright 2017-2025 @polkadot/keyring authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/** public/secret section divider (generation 1-3, will change in 4, don't rely on value) */ +export const PAIR_DIV = new Uint8Array([161, 35, 3, 33, 0]); + +/** public/secret start block (generation 1-3, will change in 4, don't rely on value) */ +export const PAIR_HDR = new Uint8Array([48, 83, 2, 1, 1, 48, 5, 6, 3, 43, 101, 112, 4, 34, 4, 32]); + +/** length of a public key */ +export const PUB_LENGTH = 32; + +/** length of a salt */ +export const SALT_LENGTH = 32; + +/** length of a secret key */ +export const SEC_LENGTH = 64; + +/** length of a user-input seed */ +export const SEED_LENGTH = 32; diff --git a/packages/keyring/src/pair/encode.spec.ts b/packages/keyring/src/pair/encode.spec.ts new file mode 100644 index 0000000..eb04eef --- /dev/null +++ b/packages/keyring/src/pair/encode.spec.ts @@ -0,0 +1,28 @@ +// Copyright 2017-2025 @polkadot/keyring authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { NONCE_LENGTH, SCRYPT_LENGTH } from '@pezkuwi/util-crypto/json/constants'; + +import { createTestPairs } from '../testingPairs.js'; +import { PAIR_DIV, PAIR_HDR, PUB_LENGTH, SEC_LENGTH } from './defaults.js'; + +const DECODED_LENGTH = PAIR_DIV.length + PAIR_HDR.length + PUB_LENGTH + SEC_LENGTH; +const ENCODED_LENGTH = 16 + DECODED_LENGTH + NONCE_LENGTH + SCRYPT_LENGTH; + +const keyring = createTestPairs({ type: 'ed25519' }, false); + +describe('encode', (): void => { + it('returns PKCS8 when no passphrase supplied', (): void => { + expect( + keyring.alice.encodePkcs8() + ).toHaveLength(DECODED_LENGTH); + }); + + it('returns encoded PKCS8 when passphrase supplied', (): void => { + expect( + keyring.alice.encodePkcs8('testing') + ).toHaveLength(ENCODED_LENGTH); + }); +}); diff --git a/packages/keyring/src/pair/encode.ts b/packages/keyring/src/pair/encode.ts new file mode 100644 index 0000000..c1518e6 --- /dev/null +++ b/packages/keyring/src/pair/encode.ts @@ -0,0 +1,30 @@ +// Copyright 2017-2025 @polkadot/keyring authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { PairInfo } from './types.js'; + +import { u8aConcat } from '@pezkuwi/util'; +import { naclEncrypt, scryptEncode, scryptToU8a } from '@pezkuwi/util-crypto'; + +import { PAIR_DIV, PAIR_HDR } from './defaults.js'; + +/** + * Encode a pair with the latest generation format (generation 3) + **/ +export function encodePair ({ publicKey, secretKey }: PairInfo, passphrase?: string): Uint8Array { + if (!secretKey) { + throw new Error('Expected a valid secretKey to be passed to encode'); + } + + const encoded = u8aConcat(PAIR_HDR, secretKey, PAIR_DIV, publicKey); + + if (!passphrase) { + return encoded; + } + + // this is only for generation 3 (previous generations are only handled in decoding) + const { params, password, salt } = scryptEncode(passphrase); + const { encrypted, nonce } = naclEncrypt(encoded, password.subarray(0, 32)); + + return u8aConcat(scryptToU8a(salt, params), nonce, encrypted); +} diff --git a/packages/keyring/src/pair/index.spec.ts b/packages/keyring/src/pair/index.spec.ts new file mode 100644 index 0000000..200db0c --- /dev/null +++ b/packages/keyring/src/pair/index.spec.ts @@ -0,0 +1,189 @@ +// Copyright 2017-2025 @polkadot/keyring authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { hexToU8a, u8aToHex } from '@pezkuwi/util'; +import { cryptoWaitReady, encodeAddress as toSS58, setSS58Format } from '@pezkuwi/util-crypto'; + +import { PAIRSSR25519 } from '../testing.js'; +import { createTestPairs } from '../testingPairs.js'; +import { createPair } from './index.js'; + +const keyring = createTestPairs({ type: 'ed25519' }, false); + +const TEST_ADDRESS = '0x4119b2e6c3Cb618F4f0B93ac77f9BeeC7FF02887'; + +await cryptoWaitReady(); + +describe('pair', (): void => { + const SIGNATURE = new Uint8Array([80, 191, 198, 147, 225, 207, 75, 88, 126, 39, 129, 109, 191, 38, 72, 181, 75, 254, 81, 143, 244, 79, 237, 38, 236, 141, 28, 252, 134, 26, 169, 234, 79, 33, 153, 158, 151, 34, 175, 188, 235, 20, 35, 135, 83, 120, 139, 211, 233, 130, 1, 208, 201, 215, 73, 80, 56, 98, 185, 196, 11, 8, 193, 14]); + + it('has a publicKey', (): void => { + expect( + keyring.alice.publicKey + ).toEqual( + new Uint8Array([209, 114, 167, 76, 218, 76, 134, 89, 18, 195, 43, 160, 168, 10, 87, 174, 105, 171, 174, 65, 14, 92, 203, 89, 222, 232, 78, 47, 68, 50, 219, 79]) + ); + expect( + keyring.alice.addressRaw + ).toEqual( + new Uint8Array([209, 114, 167, 76, 218, 76, 134, 89, 18, 195, 43, 160, 168, 10, 87, 174, 105, 171, 174, 65, 14, 92, 203, 89, 222, 232, 78, 47, 68, 50, 219, 79]) + ); + }); + + it('allows signing', (): void => { + expect( + keyring.alice.sign( + new Uint8Array([0x61, 0x62, 0x63, 0x64]) + ) + ).toEqual(SIGNATURE); + }); + + it('validates a correctly signed message', (): void => { + expect( + keyring.alice.verify( + new Uint8Array([0x61, 0x62, 0x63, 0x64]), + SIGNATURE, + keyring.alice.publicKey + ) + ).toEqual(true); + }); + + it('fails a correctly signed message (signer changed)', (): void => { + expect( + keyring.alice.verify( + new Uint8Array([0x61, 0x62, 0x63, 0x64]), + SIGNATURE, + keyring.bob.publicKey + ) + ).toEqual(false); + }); + + it('fails a correctly signed message (message changed)', (): void => { + expect( + keyring.alice.verify( + new Uint8Array([0x61, 0x62, 0x63, 0x64, 0x65]), + SIGNATURE, + keyring.alice.publicKey + ) + ).toEqual(false); + }); + + it('allows vrf sign and verify', (): void => { + const message = new Uint8Array([0x61, 0x62, 0x63, 0x64, 0x65]); + + expect( + keyring.alice.vrfVerify( + message, + keyring.alice.vrfSign(message), + keyring.alice.publicKey + ) + ).toBe(true); + }); + + it('fails vrf sign and verify (publicKey changed)', (): void => { + const message = new Uint8Array([0x61, 0x62, 0x63, 0x64, 0x65]); + + expect( + keyring.alice.vrfVerify( + message, + keyring.alice.vrfSign(message), + keyring.bob.publicKey + ) + ).toBe(false); + }); + + it('allows setting/getting of meta', (): void => { + keyring.bob.setMeta({ foo: 'bar', something: 'else' }); + + expect(keyring.bob.meta).toMatchObject({ foo: 'bar', something: 'else' }); + + keyring.bob.setMeta({ something: 'thing' }); + + expect(keyring.bob.meta).toMatchObject({ foo: 'bar', something: 'thing' }); + }); + + it('allows encoding of address with different prefixes', (): void => { + expect(keyring.alice.address).toEqual('5GoKvZWG5ZPYL1WUovuHW3zJBWBP5eT8CbqjdRY4Q6iMaQua'); + + // eslint-disable-next-line deprecation/deprecation + setSS58Format(255); + + expect(keyring.alice.address).toEqual('yGHU8YKprxHbHdEv7oUK4rzMZXtsdhcXVG2CAMyC9WhzhjH2k'); + + // eslint-disable-next-line deprecation/deprecation + setSS58Format(42); + }); + + it('allows getting public key after decoding', (): void => { + const PASS = 'testing'; + const encoded = keyring.alice.encodePkcs8(PASS); + + const pair = createPair({ toSS58, type: 'sr25519' }, { publicKey: keyring.alice.publicKey }); + + pair.decodePkcs8(PASS, encoded); + + expect(pair.isLocked).toEqual(false); + }); + + it('allows derivation on the pair', (): void => { + const alice = createPair({ toSS58, type: 'sr25519' }, { publicKey: hexToU8a(PAIRSSR25519[0].p), secretKey: hexToU8a(PAIRSSR25519[0].s) }, {}); + const stash = alice.derive('//stash'); + const soft = alice.derive('//funding/0'); + + expect(stash.publicKey).toEqual(hexToU8a(PAIRSSR25519[1].p)); + expect(soft.address).toEqual('5ECQNn7UueWHPFda5qUi4fTmTtyCnPvGnuoyVVSj5CboJh9J'); + }); + + it('fails to sign when locked', (): void => { + const pair = createPair({ toSS58, type: 'sr25519' }, { publicKey: keyring.alice.publicKey }); + + expect(pair.isLocked).toEqual(true); + expect((): Uint8Array => + pair.sign(new Uint8Array([0])) + ).toThrow('Cannot sign with a locked key pair'); + }); + + describe('ethereum', (): void => { + const PUBLICDERIVED = new Uint8Array([ + 3, 129, 53, 27, 27, 70, 210, 96, + 43, 9, 146, 187, 93, 85, 49, 249, + 193, 105, 107, 8, 18, 254, 178, 83, + 75, 104, 132, 173, 196, 126, 46, 29, + 139 + ]); + const SECRETDERIVED = new Uint8Array([ + 7, 13, 195, 17, 115, 0, 1, 25, + 24, 226, 107, 2, 23, 105, 69, 204, + 21, 195, 213, 72, 207, 73, 253, 132, + 24, 217, 127, 147, 175, 105, 158, 70 + ]); + + it('has a valid address from a known public', (): void => { + const pair = createPair({ toSS58, type: 'ethereum' }, { publicKey: hexToU8a('0x03b9dc646dd71118e5f7fda681ad9eca36eb3ee96f344f582fbe7b5bcdebb13077') }); + + expect(pair.address).toEqual(TEST_ADDRESS); + expect(pair.addressRaw).toEqual(hexToU8a(TEST_ADDRESS)); + }); + + it('has a valid address from a known ethereum address (20 length)', (): void => { + const pair = createPair({ toSS58, type: 'ethereum' }, { publicKey: new Uint8Array([75, 32, 205, 127, 248, 119, 52, 31, 46, 171, 170, 23, 158, 23, 46, 108, 95, 180, 186, 168]), secretKey: new Uint8Array([]) }); + + expect(pair.address.toLowerCase()).toEqual('0x4b20cd7ff877341f2eabaa179e172e6c5fb4baa8'); + expect(pair.addressRaw).toEqual(hexToU8a('0x4b20cd7ff877341f2eabaa179e172e6c5fb4baa8')); + }); + + it('converts to json', (): void => { + const pair = createPair({ toSS58, type: 'ethereum' }, { publicKey: PUBLICDERIVED, secretKey: SECRETDERIVED }); + const json = pair.toJson('password'); + + expect(json.encoding).toEqual({ + content: ['pkcs8', 'ethereum'], + type: ['scrypt', 'xsalsa20-poly1305'], + version: '3' + }); + expect(json.address).toEqual(u8aToHex(PUBLICDERIVED)); + }); + }); +}); diff --git a/packages/keyring/src/pair/index.ts b/packages/keyring/src/pair/index.ts new file mode 100644 index 0000000..6fdc1df --- /dev/null +++ b/packages/keyring/src/pair/index.ts @@ -0,0 +1,220 @@ +// Copyright 2017-2025 @polkadot/keyring authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { EncryptedJsonEncoding, Keypair, KeypairType } from '@pezkuwi/util-crypto/types'; +import type { KeyringPair, KeyringPair$Json, KeyringPair$Meta, SignOptions } from '../types.js'; +import type { PairInfo } from './types.js'; + +import { objectSpread, u8aConcat, u8aEmpty, u8aEq, u8aToHex, u8aToU8a } from '@pezkuwi/util'; +import { blake2AsU8a, ed25519PairFromSeed as ed25519FromSeed, ed25519Sign, ethereumEncode, keccakAsU8a, keyExtractPath, keyFromPath, secp256k1Compress, secp256k1Expand, secp256k1PairFromSeed as secp256k1FromSeed, secp256k1Sign, signatureVerify, sr25519PairFromSeed as sr25519FromSeed, sr25519Sign, sr25519VrfSign, sr25519VrfVerify } from '@pezkuwi/util-crypto'; + +import { decodePair } from './decode.js'; +import { encodePair } from './encode.js'; +import { pairToJson } from './toJson.js'; + +interface Setup { + toSS58: (publicKey: Uint8Array) => string; + type: KeypairType; +} + +const SIG_TYPE_NONE = new Uint8Array(); + +const TYPE_FROM_SEED = { + ecdsa: secp256k1FromSeed, + ed25519: ed25519FromSeed, + ethereum: secp256k1FromSeed, + sr25519: sr25519FromSeed +}; + +const TYPE_PREFIX = { + ecdsa: new Uint8Array([2]), + ed25519: new Uint8Array([0]), + ethereum: new Uint8Array([2]), + sr25519: new Uint8Array([1]) +}; + +const TYPE_SIGNATURE = { + ecdsa: (m: Uint8Array, p: Partial) => secp256k1Sign(m, p, 'blake2'), + ed25519: ed25519Sign, + ethereum: (m: Uint8Array, p: Partial) => secp256k1Sign(m, p, 'keccak'), + sr25519: sr25519Sign +}; + +const TYPE_ADDRESS = { + ecdsa: (p: Uint8Array) => p.length > 32 ? blake2AsU8a(p) : p, + ed25519: (p: Uint8Array) => p, + ethereum: (p: Uint8Array) => p.length === 20 ? p : keccakAsU8a(secp256k1Expand(p)), + sr25519: (p: Uint8Array) => p +}; + +function isLocked (secretKey?: Uint8Array): secretKey is undefined { + return !secretKey || u8aEmpty(secretKey); +} + +function vrfHash (proof: Uint8Array, context?: string | Uint8Array, extra?: string | Uint8Array): Uint8Array { + return blake2AsU8a(u8aConcat(context || '', extra || '', proof)); +} + +/** + * @name createPair + * @summary Creates a keyring pair object + * @description Creates a keyring pair object with provided account public key, metadata, and encoded arguments. + * The keyring pair stores the account state including the encoded address and associated metadata. + * + * It has properties whose values are functions that may be called to perform account actions: + * + * - `address` function retrieves the address associated with the account. + * - `decodedPkcs8` function is called with the account passphrase and account encoded public key. + * It decodes the encoded public key using the passphrase provided to obtain the decoded account public key + * and associated secret key that are then available in memory, and changes the account address stored in the + * state of the pair to correspond to the address of the decoded public key. + * - `encodePkcs8` function when provided with the correct passphrase associated with the account pair + * and when the secret key is in memory (when the account pair is not locked) it returns an encoded + * public key of the account. + * - `meta` is the metadata that is stored in the state of the pair, either when it was originally + * created or set via `setMeta`. + * - `publicKey` returns the public key stored in memory for the pair. + * - `sign` may be used to return a signature by signing a provided message with the secret + * key (if it is in memory) using Nacl. + * - `toJson` calls another `toJson` function and provides the state of the pair, + * it generates arguments to be passed to the other `toJson` function including an encoded public key of the account + * that it generates using the secret key from memory (if it has been made available in memory) + * and the optionally provided passphrase argument. It passes a third boolean argument to `toJson` + * indicating whether the public key has been encoded or not (if a passphrase argument was provided then it is encoded). + * The `toJson` function that it calls returns a JSON object with properties including the `address` + * and `meta` that are assigned with the values stored in the corresponding state variables of the account pair, + * an `encoded` property that is assigned with the encoded public key in hex format, and an `encoding` + * property that indicates whether the public key value of the `encoded` property is encoded or not. + */ +export function createPair ({ toSS58, type }: Setup, { publicKey, secretKey }: PairInfo, meta: KeyringPair$Meta = {}, encoded: Uint8Array | null = null, encTypes?: EncryptedJsonEncoding[]): KeyringPair { + const decodePkcs8 = (passphrase?: string, userEncoded?: Uint8Array | null): void => { + const decoded = decodePair(passphrase, userEncoded || encoded, encTypes); + + if (decoded.secretKey.length === 64) { + publicKey = decoded.publicKey; + secretKey = decoded.secretKey; + } else { + const pair = TYPE_FROM_SEED[type](decoded.secretKey); + + publicKey = pair.publicKey; + secretKey = pair.secretKey; + } + }; + + const recode = (passphrase?: string): Uint8Array => { + isLocked(secretKey) && encoded && decodePkcs8(passphrase, encoded); + + encoded = encodePair({ publicKey, secretKey }, passphrase); // re-encode, latest version + encTypes = undefined; // swap to defaults, latest version follows + + return encoded; + }; + + const encodeAddress = (): string => { + const raw = TYPE_ADDRESS[type](publicKey); + + return type === 'ethereum' + ? ethereumEncode(raw) + : toSS58(raw); + }; + + return { + get address (): string { + return encodeAddress(); + }, + get addressRaw (): Uint8Array { + const raw = TYPE_ADDRESS[type](publicKey); + + return type === 'ethereum' + ? raw.slice(-20) + : raw; + }, + get isLocked (): boolean { + return isLocked(secretKey); + }, + get meta (): KeyringPair$Meta { + return meta; + }, + get publicKey (): Uint8Array { + return publicKey; + }, + get type (): KeypairType { + return type; + }, + // eslint-disable-next-line sort-keys + decodePkcs8, + derive: (suri: string, meta?: KeyringPair$Meta): KeyringPair => { + if (type === 'ethereum') { + throw new Error('Unable to derive on this keypair'); + } else if (isLocked(secretKey)) { + throw new Error('Cannot derive on a locked keypair'); + } + + const { path } = keyExtractPath(suri); + const derived = keyFromPath({ publicKey, secretKey }, path, type); + + return createPair({ toSS58, type }, derived, meta, null); + }, + encodePkcs8: (passphrase?: string): Uint8Array => { + return recode(passphrase); + }, + lock: (): void => { + secretKey = new Uint8Array(); + }, + setMeta: (additional: KeyringPair$Meta): void => { + meta = objectSpread({}, meta, additional); + }, + sign: (message: string | Uint8Array, options: SignOptions = {}): Uint8Array => { + if (isLocked(secretKey)) { + throw new Error('Cannot sign with a locked key pair'); + } + + return u8aConcat( + options.withType + ? TYPE_PREFIX[type] + : SIG_TYPE_NONE, + TYPE_SIGNATURE[type](u8aToU8a(message), { publicKey, secretKey }) + ); + }, + toJson: (passphrase?: string): KeyringPair$Json => { + // NOTE: For ecdsa and ethereum, the publicKey cannot be extracted from the address. For these + // pass the hex-encoded publicKey through to the address portion of the JSON (before decoding) + // unless the publicKey is already an address + const address = ['ecdsa', 'ethereum'].includes(type) + ? publicKey.length === 20 + ? u8aToHex(publicKey) + : u8aToHex(secp256k1Compress(publicKey)) + : encodeAddress(); + + return pairToJson(type, { address, meta }, recode(passphrase), !!passphrase); + }, + unlock: (passphrase?: string): void => { + return decodePkcs8(passphrase); + }, + verify: (message: string | Uint8Array, signature: string | Uint8Array, signerPublic: string | Uint8Array): boolean => { + return signatureVerify(message, signature, TYPE_ADDRESS[type](u8aToU8a(signerPublic))).isValid; + }, + vrfSign: (message: string | Uint8Array, context?: string | Uint8Array, extra?: string | Uint8Array): Uint8Array => { + if (isLocked(secretKey)) { + throw new Error('Cannot sign with a locked key pair'); + } + + if (type === 'sr25519') { + return sr25519VrfSign(message, { secretKey }, context, extra); + } + + const proof = TYPE_SIGNATURE[type](u8aToU8a(message), { publicKey, secretKey }); + + return u8aConcat(vrfHash(proof, context, extra), proof); + }, + vrfVerify: (message: string | Uint8Array, vrfResult: Uint8Array, signerPublic: Uint8Array | string, context?: string | Uint8Array, extra?: string | Uint8Array): boolean => { + if (type === 'sr25519') { + return sr25519VrfVerify(message, vrfResult, publicKey, context, extra); + } + + const result = signatureVerify(message, u8aConcat(TYPE_PREFIX[type], vrfResult.subarray(32)), TYPE_ADDRESS[type](u8aToU8a(signerPublic))); + + return result.isValid && u8aEq(vrfResult.subarray(0, 32), vrfHash(vrfResult.subarray(32), context, extra)); + } + }; +} diff --git a/packages/keyring/src/pair/nobody.ts b/packages/keyring/src/pair/nobody.ts new file mode 100644 index 0000000..c45eecf --- /dev/null +++ b/packages/keyring/src/pair/nobody.ts @@ -0,0 +1,62 @@ +// Copyright 2017-2025 @polkadot/keyring authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { KeyringPair, KeyringPair$Json, KeyringPair$Meta } from '../types.js'; + +// empty publicKey +const publicKey = new Uint8Array(32); + +// pre-computed via encodeAddress(publicKey) +const address = '5C4hrfjw9DjXZTzV3MwzrrAr9P1MJhSrvWGWqi1eSuyUpnhM'; + +const meta = { + isTesting: true, + name: 'nobody' +}; + +const json: KeyringPair$Json = { + address, + encoded: '', + encoding: { + content: ['pkcs8', 'ed25519'], + type: 'none', + version: '0' + }, + meta +}; + +const pair: KeyringPair = { + address, + addressRaw: publicKey, + decodePkcs8: (_passphrase?: string, _encoded?: Uint8Array): void => + undefined, + derive: (_suri: string, _meta?: KeyringPair$Meta): KeyringPair => + pair, + encodePkcs8: (_passphrase?: string): Uint8Array => + new Uint8Array(0), + isLocked: true, + lock: (): void => { + // no locking, it is always locked + }, + meta, + publicKey, + setMeta: (_meta: KeyringPair$Meta): void => + undefined, + sign: (_message: Uint8Array): Uint8Array => + new Uint8Array(64), + toJson: (_passphrase?: string): KeyringPair$Json => + json, + type: 'ed25519', + unlock: (_passphrase?: string): void => + undefined, + verify: (_message: Uint8Array, _signature: Uint8Array): boolean => + false, + vrfSign: (_message: Uint8Array, _context?: string | Uint8Array, _extra?: string | Uint8Array): Uint8Array => + new Uint8Array(96), + vrfVerify: (_message: Uint8Array, _vrfResult: Uint8Array, _context?: string | Uint8Array, _extra?: string | Uint8Array): boolean => + false +}; + +export function nobody (): KeyringPair { + return pair; +} diff --git a/packages/keyring/src/pair/toJson.spec.ts b/packages/keyring/src/pair/toJson.spec.ts new file mode 100644 index 0000000..5c26aff --- /dev/null +++ b/packages/keyring/src/pair/toJson.spec.ts @@ -0,0 +1,42 @@ +// Copyright 2017-2025 @polkadot/keyring authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { createTestPairs } from '../testingPairs.js'; + +const keyring = createTestPairs({ type: 'ed25519' }, false); + +describe('toJson', (): void => { + it('creates an unencoded output with no passphrase', (): void => { + expect( + keyring.alice.toJson() + ).toMatchObject({ + address: '5GoKvZWG5ZPYL1WUovuHW3zJBWBP5eT8CbqjdRY4Q6iMaQua', + encoded: 'MFMCAQEwBQYDK2VwBCIEIEFsaWNlICAgICAgICAgICAgICAgICAgICAgICAgICAg0XKnTNpMhlkSwyugqApXrmmrrkEOXMtZ3uhOL0Qy20+hIwMhANFyp0zaTIZZEsMroKgKV65pq65BDlzLWd7oTi9EMttP', + encoding: { + content: ['pkcs8', 'ed25519'], + type: ['none'], + version: '3' + }, + meta: { + isTesting: true, + name: 'alice' + } + }); + }); + + it('creates an encoded output with passphrase', (): void => { + const json = keyring.alice.toJson('testing'); + + expect(json.encoded).toHaveLength(268); + expect(json).toMatchObject({ + address: '5GoKvZWG5ZPYL1WUovuHW3zJBWBP5eT8CbqjdRY4Q6iMaQua', + encoding: { + content: ['pkcs8', 'ed25519'], + type: ['scrypt', 'xsalsa20-poly1305'], + version: '3' + } + }); + }); +}); diff --git a/packages/keyring/src/pair/toJson.ts b/packages/keyring/src/pair/toJson.ts new file mode 100644 index 0000000..5470a61 --- /dev/null +++ b/packages/keyring/src/pair/toJson.ts @@ -0,0 +1,20 @@ +// Copyright 2017-2025 @polkadot/keyring authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { KeypairType } from '@pezkuwi/util-crypto/types'; +import type { KeyringPair$Json, KeyringPair$Meta } from '../types.js'; + +import { objectSpread } from '@pezkuwi/util'; +import { jsonEncryptFormat } from '@pezkuwi/util-crypto'; + +interface PairStateJson { + address: string; + meta: KeyringPair$Meta; +} + +export function pairToJson (type: KeypairType, { address, meta }: PairStateJson, encoded: Uint8Array, isEncrypted: boolean): KeyringPair$Json { + return objectSpread(jsonEncryptFormat(encoded, ['pkcs8', type], isEncrypted), { + address, + meta + }); +} diff --git a/packages/keyring/src/pair/types.ts b/packages/keyring/src/pair/types.ts new file mode 100644 index 0000000..5a6d7bd --- /dev/null +++ b/packages/keyring/src/pair/types.ts @@ -0,0 +1,8 @@ +// Copyright 2017-2025 @polkadot/keyring authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +export interface PairInfo { + publicKey: Uint8Array; + secretKey?: Uint8Array | undefined; + seed?: Uint8Array | null; +} diff --git a/packages/keyring/src/pair/vrf.spec.ts b/packages/keyring/src/pair/vrf.spec.ts new file mode 100644 index 0000000..308b3f0 --- /dev/null +++ b/packages/keyring/src/pair/vrf.spec.ts @@ -0,0 +1,47 @@ +// Copyright 2017-2025 @polkadot/keyring authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { u8aToHex } from '@pezkuwi/util'; +import { cryptoWaitReady, ed25519PairFromSeed, encodeAddress as toSS58, randomAsU8a, secp256k1PairFromSeed, sr25519PairFromSeed } from '@pezkuwi/util-crypto'; + +import { createPair } from './index.js'; + +const MESSAGE = 'this is a test message'; +const CONTEXT = 'some context'; + +await cryptoWaitReady(); + +const ecdsa = createPair({ toSS58, type: 'ecdsa' }, secp256k1PairFromSeed(randomAsU8a())); +const ed25519 = createPair({ toSS58, type: 'ed25519' }, ed25519PairFromSeed(randomAsU8a())); +const sr25519 = createPair({ toSS58, type: 'sr25519' }, sr25519PairFromSeed(randomAsU8a())); + +describe('vrf', (): void => { + it('has deterministic signature values for ecdsa', (): void => { + const sig1 = ecdsa.vrfSign(MESSAGE, CONTEXT); + const sig2 = ecdsa.vrfSign(MESSAGE, CONTEXT); + + expect(u8aToHex(sig1)).toEqual(u8aToHex(sig2)); + expect(ecdsa.vrfVerify(MESSAGE, sig1, ecdsa.publicKey, CONTEXT)).toEqual(true); + expect(ecdsa.vrfVerify(MESSAGE, sig2, ecdsa.publicKey, CONTEXT)).toEqual(true); + }); + + it('has deterministic signature values for ed25519', (): void => { + const sig1 = ed25519.vrfSign(MESSAGE, CONTEXT); + const sig2 = ed25519.vrfSign(MESSAGE, CONTEXT); + + expect(u8aToHex(sig1)).toEqual(u8aToHex(sig2)); + expect(ed25519.vrfVerify(MESSAGE, sig1, ed25519.publicKey, CONTEXT)).toEqual(true); + expect(ed25519.vrfVerify(MESSAGE, sig2, ed25519.publicKey, CONTEXT)).toEqual(true); + }); + + it('has deterministic signature values for sr25519', (): void => { + const sig1 = sr25519.vrfSign(MESSAGE, CONTEXT); + const sig2 = sr25519.vrfSign(MESSAGE, CONTEXT); + + expect(u8aToHex(sig1.slice(0, 32))).toEqual(u8aToHex(sig2.slice(0, 32))); + expect(sr25519.vrfVerify(MESSAGE, sig1, sr25519.publicKey, CONTEXT)).toEqual(true); + expect(sr25519.vrfVerify(MESSAGE, sig2, sr25519.publicKey, CONTEXT)).toEqual(true); + }); +}); diff --git a/packages/keyring/src/pairs.ts b/packages/keyring/src/pairs.ts new file mode 100644 index 0000000..d7d05f9 --- /dev/null +++ b/packages/keyring/src/pairs.ts @@ -0,0 +1,41 @@ +// Copyright 2017-2025 @polkadot/keyring authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { KeyringPair, KeyringPairs } from './types.js'; + +import { isHex, isU8a, u8aToHex, u8aToU8a } from '@pezkuwi/util'; +import { decodeAddress } from '@pezkuwi/util-crypto'; + +type KeyringPairMap = Record; + +export class Pairs implements KeyringPairs { + readonly #map: KeyringPairMap = {}; + + public add (pair: KeyringPair): KeyringPair { + this.#map[decodeAddress(pair.address).toString()] = pair; + + return pair; + } + + public all (): KeyringPair[] { + return Object.values(this.#map); + } + + public get (address: string | Uint8Array): KeyringPair { + const pair = this.#map[decodeAddress(address).toString()]; + + if (!pair) { + throw new Error(`Unable to retrieve keypair '${ + isU8a(address) || isHex(address) + ? u8aToHex(u8aToU8a(address)) + : address + }'`); + } + + return pair; + } + + public remove (address: string | Uint8Array): void { + delete this.#map[decodeAddress(address).toString()]; + } +} diff --git a/packages/keyring/src/suri.spec.ts b/packages/keyring/src/suri.spec.ts new file mode 100644 index 0000000..1d2dcc3 --- /dev/null +++ b/packages/keyring/src/suri.spec.ts @@ -0,0 +1,109 @@ +// Copyright 2017-2025 @polkadot/keyring authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +// From https://github.com/paritytech/substrate/wiki/Secret-URI-Test-Vectors + +import type { KeypairType } from '@pezkuwi/util-crypto/types'; + +import { u8aToHex } from '@pezkuwi/util'; +import { cryptoWaitReady } from '@pezkuwi/util-crypto'; + +import Keyring from './index.js'; + +const PHRASE = 'bottom drive obey lake curtain smoke basket hold race lonely fit walk'; +const ETHEREUM_PHRASE = 'seed sock milk update focus rotate barely fade car face mechanic mercy'; + +const TESTS = { + ecdsa: [ + { + pk: '0x020a1091341fe5664bfa1782d5e04779689068c916b04cb365ec3153755684d9a1', + ss: '5C7C2Z5sWbytvHpuLTvzKunnnRwQxft1jiqrLD5rhucQ5S9X', + uri: `${PHRASE}//Alice` + } + ], + ethereum: [ + { + pk: '0x0381351b1b46d2602b0992bb5d5531f9c1696b0812feb2534b6884adc47e2e1d8b', + ss: '0x31ea8795EE32D782C8ff41a5C68Dcbf0F5B27f6d', + uri: `${ETHEREUM_PHRASE}/m/44'/60'/0'/0/0` + }, + { + pk: '0x02509540919faacf9ab52146c9aa40db68172d83777250b28e4679176e49ccdd9f', + ss: '0xf24FF3a9CF04c71Dbc94D0b566f7A27B94566cac', + uri: `${PHRASE}/m/44'/60'/0'/0/0` + }, + { + pk: '0x033bc19e36ff1673910575b6727a974a9abd80c9a875d41ab3e2648dbfb9e4b518', + ss: '0x3Cd0A705a2DC65e5b1E1205896BaA2be8A07c6e0', + uri: `${PHRASE}/m/44'/60'/0'/0/1` + } + ], + sr25519: [ + { + pk: '0x46ebddef8cd9bb167dc30878d7113b7e168e6f0646beffd77d69d39bad76b47a', + ss: '5DfhGyQdFobKM8NsWvEeAKk5EQQgYe9AydgJ7rMB6E1EqRzV', + uri: PHRASE + }, + { + pk: '0xb69355deefa7a8f33e9297f5af22e680f03597a99d4f4b1c44be47e7a2275802', + ss: '5GC6LfpV352HtJPySfAecb5JdePtf4R9Vq49NUU8RhzgBqgq', + uri: `${PHRASE}///password` + }, + { + pk: '0x40b9675df90efa6069ff623b0fdfcf706cd47ca7452a5056c7ad58194d23440a', + ss: '5DXZzrDxHbkQov4QBAY4TjpwnHCMrKXkomTnKSw8UArBEY5v', + uri: `${PHRASE}/foo` + }, + { + pk: '0x547d4a55642ec7ebadc0bd29b6e570b8c926059b3c0655d4948075e9a7e6f31e', + ss: '5DyV6fZuvPemWrUqBgWwTSgoV86w6xms3KhkFU6cQcWxU8eP', + uri: `${PHRASE}//foo` + }, + { + pk: '0x3841947ffcde6f5fef26fb68b59bb8665637e30e32ec2051f99cf6b9c674fe09', + ss: '5DLU27is5iViNopQb2KxsTyPx6j4vCu8X3sk3j3NNLkPCqKM', + uri: `${PHRASE}//foo/bar` + }, + { + pk: '0xdc142f7476a7b0aa262aeccf207f1d18daa90762db393006741e8a31f39dbc53', + ss: '5H3GPTqDSpjkfDwbHy12PD6BWm8jvGSX4xYC8UMprHpTPcRg', + uri: `${PHRASE}/foo//bar` + }, + { + pk: '0xa2e56b06407a6d1e819d2fc33fa0ec604b29c2e868b70b3696bb049b8725934b', + ss: '5FkHmNgbg64MwStgCyDi2Uw3ufFu11mqQgmWT9uwK4Lghvpv', + uri: `${PHRASE}//foo/bar//42/69` + }, + { + pk: '0x0e0d24e3e1ff2c07f269c99e2e0df8681fda1851ac42fc846ca2daaa90cd8f14', + ss: '5CP8S23JBNXYNpJsL7ESPJBNnUZE6itcfM4EnDxEhaVEU6dT', + uri: `${PHRASE}//foo/bar//42/69///password` + }, + { + pk: '0xd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d', + ss: '5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY', + uri: `${PHRASE}//Alice` + } + ] +}; + +await cryptoWaitReady(); + +describe('keyring.addFromUri', (): void => { + for (const [type, tests] of Object.entries(TESTS)) { + const keyring = new Keyring({ type: type as KeypairType }); + + describe(`${type}`, (): void => { + tests.forEach(({ pk, ss, uri }): void => { + it(`creates ${uri}`, (): void => { + const pair = keyring.addFromUri(uri, {}, type as KeypairType); + + expect(u8aToHex(pair.publicKey)).toEqual(pk); + expect(pair.address).toEqual(ss); + }); + }); + }); + } +}); diff --git a/packages/keyring/src/testing.ts b/packages/keyring/src/testing.ts new file mode 100644 index 0000000..14aa430 --- /dev/null +++ b/packages/keyring/src/testing.ts @@ -0,0 +1,156 @@ +// Copyright 2017-2025 @polkadot/keyring authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { HexString } from '@pezkuwi/util/types'; +import type { KeypairType } from '@pezkuwi/util-crypto/types'; +import type { KeyringInstance, KeyringOptions } from './types.js'; + +import { hexToU8a } from '@pezkuwi/util'; + +import { createPair } from './pair/index.js'; +import { Keyring } from './keyring.js'; + +interface PairDef { + name?: string; + p: HexString; + s: HexString; + seed?: string; + type: KeypairType +} + +// NOTE This is not great since we have the secretKey here explicitly, but a testing +// keyring is for testing - what happens is that in most cases the keyring is initialises +// before anything else. Since the sr25519 crypto is async, this creates problems with +// adding the keys when only the keyring is used. +export const PAIRSSR25519: PairDef[] = [ + { + p: '0xd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d', + s: '0x98319d4ff8a9508c4bb0cf0b5a78d760a0b2082c02775e6e82370816fedfff48925a225d97aa00682d6a59b95b18780c10d7032336e88f3442b42361f4a66011', // nosemgrep + seed: 'Alice', + type: 'sr25519' + }, + { + p: '0xbe5ddb1579b72e84524fc29e78609e3caf42e85aa118ebfe0b0ad404b5bdd25f', + s: '0xe8da6c9d810e020f5e3c7f5af2dea314cbeaa0d72bc6421e92c0808a0c584a6046ab28e97c3ffc77fe12b5a4d37e8cd4afbfebbf2391ffc7cb07c0f38c023efd', // nosemgrep + seed: 'Alice//stash', + type: 'sr25519' + }, + { + p: '0x8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48', + s: '0x081ff694633e255136bdb456c20a5fc8fed21f8b964c11bb17ff534ce80ebd5941ae88f85d0c1bfc37be41c904e1dfc01de8c8067b0d6d5df25dd1ac0894a325', // nosemgrep + seed: 'Bob', + type: 'sr25519' + }, + { + p: '0xfe65717dad0447d715f660a0a58411de509b42e6efb8375f562f58a554d5860e', + s: '0xc006507cdfc267a21532394c49ca9b754ca71de21e15a1cdf807c7ceab6d0b6c3ed408d9d35311540dcd54931933e67cf1ea10d46f75408f82b789d9bd212fde', // nosemgrep + seed: 'Bob//stash', + type: 'sr25519' + }, + { + p: '0x90b5ab205c6974c9ea841be688864633dc9ca8a357843eeacf2314649965fe22', + s: '0xa8f2d83016052e5d6d77b2f6fd5d59418922a09024cda701b3c34369ec43a7668faf12ff39cd4e5d92bb773972f41a7a5279ebc2ed92264bed8f47d344f8f18c', // nosemgrep + seed: 'Charlie', + type: 'sr25519' + }, + { + p: '0x306721211d5404bd9da88e0204360a1a9ab8b87c66c1bc2fcdd37f3c2222cc20', + s: '0x20e05482ca4677e0edbc58ae9a3a59f6ed3b1a9484ba17e64d6fe8688b2b7b5d108c4487b9323b98b11fe36cb301b084e920f7b7895536809a6d62a451b25568', // nosemgrep + seed: 'Dave', + type: 'sr25519' + }, + { + p: '0xe659a7a1628cdd93febc04a4e0646ea20e9f5f0ce097d9a05290d4a9e054df4e', + s: '0x683576abfd5dc35273e4264c23095a1bf21c14517bece57c7f0cc5c0ed4ce06a3dbf386b7828f348abe15d76973a72009e6ef86a5c91db2990cb36bb657c6587', // nosemgrep + seed: 'Eve', + type: 'sr25519' + }, + { + p: '0x1cbd2d43530a44705ad088af313e18f80b53ef16b36177cd4b77b846f2a5f07c', + s: '0xb835c20f450079cf4f513900ae9faf8df06ad86c681884122c752a4b2bf74d4303e4f21bc6cc62bb4eeed5a9cce642c25e2d2ac1464093b50f6196d78e3a7426', // nosemgrep + seed: 'Ferdie', + type: 'sr25519' + } +]; + +export const PAIRSETHEREUM: PairDef[] = [ + { + name: 'Alith', + p: '0x02509540919faacf9ab52146c9aa40db68172d83777250b28e4679176e49ccdd9f', + s: '0x5fb92d6e98884f76de468fa3f6278f8807c48bebc13595d45af5bdc4da702133', // nosemgrep + type: 'ethereum' + }, + { + name: 'Baltathar', + p: '0x033bc19e36ff1673910575b6727a974a9abd80c9a875d41ab3e2648dbfb9e4b518', + s: '0x8075991ce870b93a8870eca0c0f91913d12f47948ca0fd25b49c6fa7cdbeee8b', // nosemgrep + type: 'ethereum' + }, + { + name: 'Charleth', + p: '0x0234637bdc0e89b5d46543bcbf8edff329d2702bc995e27e9af4b1ba009a3c2a5e', + s: '0x0b6e18cafb6ed99687ec547bd28139cafdd2bffe70e6b688025de6b445aa5c5b', // nosemgrep + type: 'ethereum' + }, + { + name: 'Dorothy', + p: '0x02a00d60b2b408c2a14c5d70cdd2c205db8985ef737a7e55ad20ea32cc9e7c417c', + s: '0x39539ab1876910bbf3a223d84a29e28f1cb4e2e456503e7e91ed39b2e7223d68', // nosemgrep + type: 'ethereum' + }, + { + name: 'Ethan', + p: '0x025cdc005b752651cd3f728fb9192182acb3a9c89e19072cbd5b03f3ee1f1b3ffa', + s: '0x7dce9bc8babb68fec1409be38c8e1a52650206a7ed90ff956ae8a6d15eeaaef4', // nosemgrep + type: 'ethereum' + }, + { + name: 'Faith', + p: '0x037964b6c9d546da4646ada28a99e34acaa1d14e7aba861a9055f9bd200c8abf74', + s: '0xb9d2ea9a615f3165812e8d44de0d24da9bbd164b65c4f0573e1ce2c8dbd9c8df', // nosemgrep + type: 'ethereum' + } +]; + +function createMeta (name?: string, seed?: string) { + if (!name && !seed) { + throw new Error('Testing pair should have either a name or a seed'); + } + + return { + isTesting: true, + name: name || seed?.replace('//', '_').toLowerCase() + }; +} + +/** + * @name testKeyring + * @summary Create an instance of Keyring pre-populated with locked test accounts + * @description The test accounts (i.e. alice, bob, dave, eve, ferdie) + * are available on the dev chain and each test account is initialized with DOT funds. + */ +export function createTestKeyring (options: KeyringOptions = {}, isDerived = true): KeyringInstance { + const keyring = new Keyring(options); + const pairs = options.type === 'ethereum' + ? PAIRSETHEREUM + : PAIRSSR25519; + + for (const { name, p, s, seed, type } of pairs) { + const meta = createMeta(name, seed); + const pair = !isDerived && !name && seed + ? keyring.addFromUri(seed, meta, options.type) + : keyring.addPair( + createPair( + { toSS58: keyring.encodeAddress, type }, + { publicKey: hexToU8a(p), secretKey: hexToU8a(s) }, + meta + ) + ); + + pair.lock = (): void => { + // we don't have lock/unlock functionality here + }; + } + + return keyring; +} diff --git a/packages/keyring/src/testingPairs.spec.ts b/packages/keyring/src/testingPairs.spec.ts new file mode 100644 index 0000000..9e2f2c4 --- /dev/null +++ b/packages/keyring/src/testingPairs.spec.ts @@ -0,0 +1,79 @@ +// Copyright 2017-2025 @polkadot/keyring authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { u8aToHex } from '@pezkuwi/util'; +import { cryptoWaitReady } from '@pezkuwi/util-crypto'; + +import Keyring from './index.js'; +import { createTestPairs } from './testingPairs.js'; + +const TEST_ADD = '0xf24FF3a9CF04c71Dbc94D0b566f7A27B94566cac'; + +await cryptoWaitReady(); + +describe('testingPairs', (): void => { + it('creates without failing', (): void => { + expect( + Object.keys(createTestPairs()) + ).toHaveLength(2 + 0 + 7); // stash, session, pairs + }); + + it('has the correct address for Alice (non-HDKD)', (): void => { + expect( + createTestPairs({ type: 'ed25519' }, false).alice.address + ).toEqual('5GoKvZWG5ZPYL1WUovuHW3zJBWBP5eT8CbqjdRY4Q6iMaQua'); + }); + + it('has the correct address for Alice (HDKD)', (): void => { + expect( + createTestPairs({ type: 'ed25519' }).alice.address + ).toEqual('5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY'); + }); + + it('has the correct address for Alith (Eth)', (): void => { + expect( + createTestPairs({ type: 'ethereum' }).Alith.address + ).toEqual(TEST_ADD); + }); + + it('has the correct address for Alith (Eth), same as obtained by createFromUri', (): void => { + const keyring = new Keyring({ type: 'ethereum' }); + const pair = keyring.createFromUri('0x5fb92d6e98884f76de468fa3f6278f8807c48bebc13595d45af5bdc4da702133'); + + expect(pair?.address).toEqual(TEST_ADD); + }); + + describe('checks eth test addresses', (): void => { + const ring = createTestPairs({ type: 'ethereum' }); + const keyring = new Keyring({ type: 'ethereum' }); + // priv keys generated by ganache-cli --mnemonic "bottom drive obey lake curtain smoke basket hold race lonely fit walk" + const privKeys: string[] = ['0x5fb92d6e98884f76de468fa3f6278f8807c48bebc13595d45af5bdc4da702133', + '0x8075991ce870b93a8870eca0c0f91913d12f47948ca0fd25b49c6fa7cdbeee8b', + '0x0b6e18cafb6ed99687ec547bd28139cafdd2bffe70e6b688025de6b445aa5c5b', + '0x39539ab1876910bbf3a223d84a29e28f1cb4e2e456503e7e91ed39b2e7223d68', + '0x7dce9bc8babb68fec1409be38c8e1a52650206a7ed90ff956ae8a6d15eeaaef4', + '0xb9d2ea9a615f3165812e8d44de0d24da9bbd164b65c4f0573e1ce2c8dbd9c8df', + '0x96b8a38e12e1a31dee1eab2fffdf9d9990045f5b37e44d8cc27766ef294acf18', + '0x0d6dcaaef49272a5411896be8ad16c01c35d6f8c18873387b71fbc734759b0ab', + '0x4c42532034540267bf568198ccec4cb822a025da542861fcb146a5fab6433ff8', + '0x94c49300a58d576011096bcb006aa06f5a91b34b4383891e8029c21dc39fbb8b']; + + // @ts-expect-error We should not delete from the maps, however this is a test + delete ring.nobody; + + Object + .keys(ring) + .filter((_, i) => i < 6) + .forEach((testKeyring, i) => { + it(`checks #${i}`, (): void => { + expect( + u8aToHex(ring[testKeyring].publicKey) + ).toEqual( + u8aToHex(keyring.createFromUri(privKeys[i]).publicKey) + ); + }); + }); + }); +}); diff --git a/packages/keyring/src/testingPairs.ts b/packages/keyring/src/testingPairs.ts new file mode 100644 index 0000000..d015493 --- /dev/null +++ b/packages/keyring/src/testingPairs.ts @@ -0,0 +1,56 @@ +// Copyright 2017-2025 @polkadot/keyring authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { KeypairType } from '@pezkuwi/util-crypto/types'; +import type { KeyringOptions, KeyringPair } from './types.js'; + +import { nobody } from './pair/nobody.js'; +import { createTestKeyring } from './testing.js'; + +export interface TestKeyringMap { + nobody: KeyringPair; + + [index: string]: KeyringPair; +} + +export interface TestKeyringMapSubstrate extends TestKeyringMap { + alice: KeyringPair; + bob: KeyringPair; + charlie: KeyringPair; + dave: KeyringPair; + eve: KeyringPair; + ferdie: KeyringPair; +} + +export interface TestKeyringMapEthereum extends TestKeyringMap { + Alith: KeyringPair; + Baltathar: KeyringPair; + Charleth: KeyringPair; + Dorothy: KeyringPair; + Ethan: KeyringPair; + Faith: KeyringPair; +} + +export type DetectMap = DetectPairType extends 'ethereum' + ? TestKeyringMapEthereum + : TestKeyringMapSubstrate; + +export type DetectPairType = O extends KeyringOptions + ? O['type'] extends KeypairType + ? O['type'] + : 'sr25519' + : 'sr25519'; + +export function createTestPairs > (options?: O, isDerived = true): M { + const keyring = createTestKeyring(options, isDerived); + const pairs = keyring.getPairs(); + const map: TestKeyringMap = { nobody: nobody() }; + + for (const p of pairs) { + if (p.meta.name) { + map[p.meta.name] = p; + } + } + + return map as M; +} diff --git a/packages/keyring/src/types.ts b/packages/keyring/src/types.ts new file mode 100644 index 0000000..469f055 --- /dev/null +++ b/packages/keyring/src/types.ts @@ -0,0 +1,131 @@ +// Copyright 2017-2025 @polkadot/keyring authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { HexString } from '@pezkuwi/util/types'; +import type { EncryptedJson, Keypair, KeypairType, Prefix } from '@pezkuwi/util-crypto/types'; + +export interface KeyringOptions { + /** The ss58Format to use for address encoding (defaults to 42) */ + ss58Format?: Prefix; + /** The type of keyring to create (defaults to ed25519) */ + type?: KeypairType; +} + +export interface KeyringPair$MetaHardware { + accountIndex?: number; + accountOffset?: number; + addressOffset?: number; + hardwareType?: 'ledger'; +} + +export interface KeyringPair$MetaFlags { + isDefaultAuthSelected?: boolean; + isExternal?: boolean; + isHardware?: boolean; + isHidden?: boolean; + isInjected?: boolean; + isMultisig?: boolean; + isProxied?: boolean; + isRecent?: boolean; + isTesting?: boolean; +} + +export interface KeyringPair$MetaContract { + abi: string; + genesisHash?: HexString | null; +} + +export interface KeyringPair$MetaExtension { + source?: string; +} + +export interface KeyringPair$MetaMultisig { + threshold?: number; + who?: string[]; +} + +export interface KeyringPair$MetaParent { + parentAddress?: string; + parentName?: string; +} + +export interface KeyringPair$Meta extends KeyringPair$MetaExtension, KeyringPair$MetaFlags, KeyringPair$MetaHardware, KeyringPair$MetaMultisig, KeyringPair$MetaParent { + address?: string; + contract?: KeyringPair$MetaContract; + genesisHash?: HexString | null; + name?: string; + suri?: string; + tags?: string[]; + type?: KeypairType; + whenCreated?: number; + whenEdited?: number; + whenUsed?: number; + + [key: string]: unknown; +} + +export interface KeyringPair$Json extends EncryptedJson { + /** The ss58 encoded address or the hex-encoded version (the latter is for ETH-compat chains) */ + address: string; + /** The underlying metadata associated with the keypair */ + meta: KeyringPair$Meta; +} + +export interface SignOptions { + /** Create a MultiSignature-compatible output with an indicator type */ + withType?: boolean; +} + +export interface KeyringPair { + readonly address: string; + readonly addressRaw: Uint8Array; + readonly meta: KeyringPair$Meta; + readonly isLocked: boolean; + readonly publicKey: Uint8Array; + readonly type: KeypairType; + + decodePkcs8 (passphrase?: string, encoded?: Uint8Array): void; + derive (suri: string, meta?: KeyringPair$Meta): KeyringPair; + encodePkcs8 (passphrase?: string): Uint8Array; + lock (): void; + setMeta (meta: KeyringPair$Meta): void; + sign (message: string | Uint8Array, options?: SignOptions): Uint8Array; + toJson (passphrase?: string): KeyringPair$Json; + unlock (passphrase?: string): void; + verify (message: string | Uint8Array, signature: Uint8Array, signerPublic: string | Uint8Array): boolean; + vrfSign (message: string | Uint8Array, context?: string | Uint8Array, extra?: string | Uint8Array): Uint8Array; + vrfVerify (message: string | Uint8Array, vrfResult: Uint8Array, signerPublic: string | Uint8Array, context?: string | Uint8Array, extra?: string | Uint8Array): boolean; +} + +export interface KeyringPairs { + add: (pair: KeyringPair) => KeyringPair; + all: () => KeyringPair[]; + get: (address: string | Uint8Array) => KeyringPair; + remove: (address: string | Uint8Array) => void; +} + +export interface KeyringInstance { + readonly pairs: KeyringPair[]; + readonly publicKeys: Uint8Array[]; + readonly type: KeypairType; + + decodeAddress (encoded: string | Uint8Array, ignoreChecksum?: boolean, ss58Format?: Prefix): Uint8Array; + encodeAddress (key: Uint8Array | string, ss58Format?: Prefix): string; + setSS58Format (ss58Format: Prefix): void; + + addPair (pair: KeyringPair): KeyringPair; + addFromAddress (address: string | Uint8Array, meta?: KeyringPair$Meta, encoded?: Uint8Array | null, type?: KeypairType, ignoreChecksum?: boolean): KeyringPair; + addFromJson (pair: KeyringPair$Json, ignoreChecksum?: boolean): KeyringPair; + addFromMnemonic (mnemonic: string, meta?: KeyringPair$Meta, type?: KeypairType, wordlist?: string[]): KeyringPair; + addFromPair (pair: Keypair, meta?: KeyringPair$Meta, type?: KeypairType): KeyringPair + addFromSeed (seed: Uint8Array, meta?: KeyringPair$Meta, type?: KeypairType): KeyringPair; + addFromUri (suri: string, meta?: KeyringPair$Meta, type?: KeypairType, wordlist?: string[]): KeyringPair; + createFromJson (json: KeyringPair$Json, ignoreChecksum?: boolean): KeyringPair; + createFromPair (pair: Keypair, meta: KeyringPair$Meta, type: KeypairType): KeyringPair + createFromUri (suri: string, meta?: KeyringPair$Meta, type?: KeypairType, wordlist?: string[]): KeyringPair; + getPair (address: string | Uint8Array): KeyringPair; + getPairs (): KeyringPair[]; + getPublicKeys (): Uint8Array[]; + removePair (address: string | Uint8Array): void; + toJson (address: string | Uint8Array, passphrase?: string): KeyringPair$Json; +} diff --git a/packages/keyring/tsconfig.build.json b/packages/keyring/tsconfig.build.json new file mode 100644 index 0000000..9bc3a6f --- /dev/null +++ b/packages/keyring/tsconfig.build.json @@ -0,0 +1,16 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "baseUrl": "..", + "outDir": "./build", + "rootDir": "./src" + }, + "exclude": [ + "**/*.spec.ts", + "**/mod.ts" + ], + "references": [ + { "path": "../util/tsconfig.build.json" }, + { "path": "../util-crypto/tsconfig.build.json" } + ] +} diff --git a/packages/keyring/tsconfig.spec.json b/packages/keyring/tsconfig.spec.json new file mode 100644 index 0000000..5efa0be --- /dev/null +++ b/packages/keyring/tsconfig.spec.json @@ -0,0 +1,18 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "baseUrl": "..", + "outDir": "./build", + "rootDir": "./src", + "emitDeclarationOnly": false, + "noEmit": true + }, + "include": [ + "**/*.spec.ts" + ], + "references": [ + { "path": "../keyring/tsconfig.build.json" }, + { "path": "../util/tsconfig.build.json" }, + { "path": "../util-crypto/tsconfig.build.json" } + ] +} diff --git a/packages/networks/README.md b/packages/networks/README.md new file mode 100644 index 0000000..4d87973 --- /dev/null +++ b/packages/networks/README.md @@ -0,0 +1,5 @@ +# @pezkuwi/networks + +A list of all available Substrate networks and their applicable prefixes. + +This list is periodically checked against the master list available at https://github.com/paritytech/ss58-registry/blob/main/ss58-registry.json diff --git a/packages/networks/package.json b/packages/networks/package.json new file mode 100644 index 0000000..afe054c --- /dev/null +++ b/packages/networks/package.json @@ -0,0 +1,28 @@ +{ + "author": "Jaco Greeff ", + "bugs": "https://github.com/pezkuwichain/pezkuwi-common/issues", + "description": "A list of all available Substrate networks and their applicable prefixes", + "engines": { + "node": ">=18" + }, + "homepage": "https://github.com/pezkuwichain/pezkuwi-common/tree/master/packages/networks#readme", + "license": "Apache-2.0", + "name": "@pezkuwi/networks", + "repository": { + "directory": "packages/networks", + "type": "git", + "url": "https://github.com/pezkuwichain/pezkuwi-common.git" + }, + "sideEffects": false, + "type": "module", + "version": "14.0.1", + "main": "index.js", + "dependencies": { + "@pezkuwi/util": "14.0.1", + "@substrate/ss58-registry": "^1.51.0", + "tslib": "^2.8.0" + }, + "devDependencies": { + "@pezkuwi/hw-ledger": "14.0.1" + } +} diff --git a/packages/networks/src/defaults.spec.ts b/packages/networks/src/defaults.spec.ts new file mode 100644 index 0000000..dd16b27 --- /dev/null +++ b/packages/networks/src/defaults.spec.ts @@ -0,0 +1,59 @@ +// Copyright 2017-2025 @polkadot/networks authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { ledgerApps } from '@pezkuwi/hw-ledger/defaults'; +import { isHex } from '@pezkuwi/util'; + +import { knownGenesis, knownLedger, knownTestnet } from './defaults/index.js'; + +describe('defaults', (): void => { + const genesisKeys = Object.keys(knownGenesis); + const ledgerKeys = Object.keys(knownLedger); + + describe('genesis', (): void => { + it('has hex values for all genesis chains', (): void => { + expect( + genesisKeys.filter((network) => + !knownGenesis[network].length || + knownGenesis[network].some((g) => !isHex(g, 256)) + ) + ).toEqual([]); + }); + + it('has no entries for testnets', (): void => { + expect( + genesisKeys.filter((network) => + knownTestnet[network] + ) + ).toEqual([]); + }); + + it('has genesis for all Ledger chains', (): void => { + expect( + ledgerKeys.filter((network) => + !knownGenesis[network] + ) + ).toEqual([]); + }); + }); + + describe('Ledger', (): void => { + it('has entries for each of the apps (hwledger -> networks)', (): void => { + expect( + ledgerKeys.filter((network) => + !ledgerApps[network] + ) + ).toEqual([]); + }); + + it('has entries for each of the apps (networks -> hwledger)', (): void => { + expect( + Object.keys(ledgerApps).filter((network) => + !knownLedger[network] + ) + ).toEqual([]); + }); + }); +}); diff --git a/packages/networks/src/defaults/genesis.ts b/packages/networks/src/defaults/genesis.ts new file mode 100644 index 0000000..fe848df --- /dev/null +++ b/packages/networks/src/defaults/genesis.ts @@ -0,0 +1,210 @@ +// Copyright 2017-2025 @polkadot/networks authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { KnownGenesis } from '../types.js'; + +// In the case where the network was hard-spooned and multiple genesisHashes +// are provided, it needs to be in reverse order, i.e. most-recent goes first, +// oldest goes last. This make lookups for the current a simple genesisHash[0] +// where the latest ios always the first entry (See Kusama as an example) +// +// IMPORTANT: Apart from the test relays, this list is limited to live parachains +// and live production networks. It does not and should not contain any testnets, +// either stand-alone or connected to test relays such as Westend/Rococo +export const knownGenesis: KnownGenesis = { + acala: [ + '0xfc41b9bd8ef8fe53d58c7ea67c794c7ec9a73daf05e6d54b14ff6342c99ba64c' + ], + ajuna: [ + '0xe358eb1d11b31255a286c12e44fe6780b7edb171d657905a97e39f71d9c6c3ee' + ], + 'aleph-node': [ + '0x70255b4d28de0fc4e1a193d7e175ad1ccef431598211c55538f1018651a0344e' + ], + astar: [ + '0x9eb76c5184c4ab8679d2d5d819fdf90b9c001403e9e17da2e14b6d8aec4029c6' + ], + basilisk: [ + '0xa85cfb9b9fd4d622a5b28289a02347af987d8f73fa3108450e2b4a11c1ce5755' + ], + bifrost: [ + '0x262e1b2ad728475fd6fe88e62d34c200abe6fd693931ddad144059b1eb884e5b' + ], + 'bifrost-kusama': [ + '0x9f28c6a68e0fc9646eff64935684f6eeeece527e37bbe1f213d22caa1d9d6bed' + ], + bittensor: [ + '0x2f0555cc76fc2840a25a6ea3b9637146806f1f44b090c175ffde2a7e5ab36c03' + ], + centrifuge: [ + '0xb3db41421702df9a7fcac62b53ffeac85f7853cc4e689e0b93aeb3db18c09d82', + '0x67dddf2673b69e5f875f6f25277495834398eafd67f492e09f3f3345e003d1b5' + ], + cere: [ + '0x81443836a9a24caaa23f1241897d1235717535711d1d3fe24eae4fdc942c092c' + ], + composable: [ + '0xdaab8df776eb52ec604a5df5d388bb62a050a0aaec4556a64265b9d42755552d' + ], + creditcoin3: [ + '0x4436a7d64e363df85e065a894721002a86643283f9707338bf195d360ba2ee71', // cc3 mainnet + '0xfc4ec97a1c1f119c4353aecb4a17c7c0cf7b40d5d660143d8bad9117e9866572', // cc3 testnet/drynet + '0xfc9df99a665f964aed6649f275055e54df5e3420489538ed31d7788f53d11ef6' // cc3 devnet + ], + darwinia: [ + '0xe71578b37a7c799b0ab4ee87ffa6f059a6b98f71f06fb8c84a8d88013a548ad6' + ], + dentnet: [ + '0x0313f6a011d128d22f996703cbab05162e2fdc9e031493314fe6db79979c5ca7' + ], + 'dock-mainnet': [ + '0x6bfe24dca2a3be10f22212678ac13a6446ec764103c0f3471c71609eac384aae', + '0xf73467c6544aa68df2ee546b135f955c46b90fa627e9b5d7935f41061bb8a5a9' + ], + edgeware: [ + '0x742a2ca70c2fda6cee4f8df98d64c4c670a052d9568058982dad9d5a7a135c5b' + ], + encointer: [ + '0x7dd99936c1e9e6d1ce7d90eb6f33bea8393b4bf87677d675aa63c9cb3e8c5b5b' + ], + enjin: [ + '0xd8761d3c88f26dc12875c00d3165f7d67243d56fc85b4cf19937601a7916e5a9' + ], + equilibrium: [ + '0x6f1a800de3daff7f5e037ddf66ab22ce03ab91874debeddb1086f5f7dbd48925' + ], + frequency: [ + '0x4a587bf17a404e3572747add7aab7bbe56e805a5479c6c436f07f36fcc8d3ae1' + ], + genshiro: [ + '0x9b8cefc0eb5c568b527998bdd76c184e2b76ae561be76e4667072230217ea243' + ], + hydradx: [ + '0xafdc188f45c71dacbaa0b62e16a91f726c7b8699a9748cdf715459de6b7f366d', // Hydration | HydraDX Parachain + '0xd2a620c27ec5cbc5621ff9a522689895074f7cca0d08e7134a7804e1a3ba86fc', // Snakenet Gen3-1 + '0x10af6e84234477d84dc572bac0789813b254aa490767ed06fb9591191d1073f9', // Snakenet Gen3 + '0x3d75507dd46301767e601265791da1d9cb47b6ebc94e87347b635e5bf58bd047', // Snakenet Gen2 + '0x0ed32bfcab4a83517fac88f2aa7cbc2f88d3ab93be9a12b6188a036bf8a943c2' // Snakenet Gen1 + ], + integritee: [ + '0xcdedc8eadbfa209d3f207bba541e57c3c58a667b05a2e1d1e86353c9000758da', // on Kusama + '0xe13e7af377c64e83f95e0d70d5e5c3c01d697a84538776c5b9bbe0e7d7b6034c' // on Polkadot + ], + 'interlay-parachain': [ + '0xbf88efe70e9e0e916416e8bed61f2b45717f517d7f3523e33c7b001e5ffcbc72' + ], + karura: [ + '0xbaf5aabe40646d11f0ee8abbdc64f4a4b7674925cba08e4a05ff9ebed6e2126b' + ], + khala: [ + '0xd43540ba6d3eb4897c28a77d48cb5b729fea37603cbbfc7a86a73b72adb3be8d' + ], + kulupu: [ + '0xf7a99d3cb92853d00d5275c971c132c074636256583fee53b3bbe60d7b8769ba' + ], + kusama: [ + '0xb0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafe', // Kusama CC3, + '0xe3777fa922cafbff200cadeaea1a76bd7898ad5b89f7848999058b50e715f636', // Kusama CC2 + '0x3fd7b9eb6a00376e5be61f01abb429ffb0b104be05eaff4d458da48fcd425baf' // Kusama CC1 + ], + liberland: [ + '0x6bd89e052d67a45bb60a9a23e8581053d5e0d619f15cb9865946937e690c42d6' + ], + matrixchain: [ + '0x3af4ff48ec76d2efc8476730f423ac07e25ad48f5f4c9dc39c778b164d808615' + ], + mythos: [ + '0xf6ee56e9c5277df5b4ce6ae9983ee88f3cbed27d31beeb98f9f84f997a1ab0b9' + ], + nodle: [ + '0x97da7ede98d7bad4e36b4d734b6055425a3be036da2a332ea5a7037656427a21' + ], + origintrail: [ + '0xe7e0962324a3b86c83404dbea483f25fb5dab4c224791c81b756cfc948006174' + ], + p3d: [ + '0x6c5894837ad89b6d92b114a2fb3eafa8fe3d26a54848e3447015442cd6ef4e66' + ], + parallel: [ + '0xe61a41c53f5dcd0beb09df93b34402aada44cb05117b71059cce40a2723a4e97' + ], + peaq: [ + '0xd2a5d385932d1f650dae03ef8e2748983779ee342c614f80854d32b8cd8fa48c' + ], + pendulum: [ + '0x5d3c298622d5634ed019bf61ea4b71655030015bde9beb0d6a24743714462c86' + ], + phala: [ + '0x1bb969d85965e4bb5a651abbedf21a54b6b31a21f66b5401cc3f1e286268d736' + ], + picasso: [ + '0x6811a339673c9daa897944dcdac99c6e2939cc88245ed21951a0a3c9a2be75bc', + '0xe8e7f0f4c4f5a00720b4821dbfddefea7490bcf0b19009961cc46957984e2c1c' + ], + polimec: [ + '0x7eb9354488318e7549c722669dcbdcdc526f1fef1420e7944667212f3601fdbd' + ], + polkadex: [ + '0x3920bcb4960a1eef5580cd5367ff3f430eef052774f78468852f7b9cb39f8a3c' + ], + polkadot: [ + '0x91b171bb158e2d3848fa23a9f1c25182fb8e20313b2c1eb49219da7a70ce90c3' + ], + polymesh: [ + '0x6fbd74e5e1d0a61d52ccfe9d4adaed16dd3a7caa37c6bc4d0c2fa12e8b2f4063' + ], + quartz: [ + '0xcd4d732201ebe5d6b014edda071c4203e16867305332301dc8d092044b28e554' + ], + rococo: [ + '0x6408de7737c59c238890533af25896a2c20608d8b380bb01029acb392781063e', + '0xaaf2cd1b74b5f726895921259421b534124726263982522174147046b8827897', + '0x037f5f3c8e67b314062025fc886fcd6238ea25a4a9b45dce8d246815c9ebe770', + '0xc196f81260cf1686172b47a79cf002120735d7cb0eb1474e8adce56618456fff', + '0xf6e9983c37baf68846fedafe21e56718790e39fb1c582abc408b81bc7b208f9a', + '0x5fce687da39305dfe682b117f0820b319348e8bb37eb16cf34acbf6a202de9d9', + '0xe7c3d5edde7db964317cd9b51a3a059d7cd99f81bdbce14990047354334c9779', + '0x1611e1dbf0405379b861e2e27daa90f480b2e6d3682414a80835a52e8cb8a215', + '0x343442f12fa715489a8714e79a7b264ea88c0d5b8c66b684a7788a516032f6b9', + '0x78bcd530c6b3a068bc17473cf5d2aff9c287102bed9af3ae3c41c33b9d6c6147', + '0x47381ee0697153d64404fc578392c8fd5cba9073391908f46c888498415647bd', + '0x19c0e4fa8ab75f5ac7865e0b8f74ff91eb9a100d336f423cd013a8befba40299' + ], + sora: [ + '0x7e4e32d0feafd4f9c9414b0be86373f9a1efa904809b683453a9af6856d38ad5' + ], + stafi: [ + '0x290a4149f09ea0e402c74c1c7e96ae4239588577fe78932f94f5404c68243d80' + ], + statemine: [ + '0x48239ef607d7928874027a43a67689209727dfb3d3dc5e5b03a39bdc2eda771a' + ], + statemint: [ + '0x68d56f15f85d3136970ec16946040bc1752654e906147f7e43e9d539d7c3de2f' + ], + subsocial: [ + '0x0bd72c1c305172e1275278aaeb3f161e02eccb7a819e63f62d47bd53a28189f8' + ], + ternoa: [ + '0x6859c81ca95ef624c9dfe4dc6e3381c33e5d6509e35e147092bfbc780f777c4e' + ], + unique: [ + '0x84322d9cddbf35088f1e54e9a85c967a41a56a4f43445768125e61af166c7d31' + ], + vara: [ + '0xfe1b4c55fd4d668101126434206571a7838a8b6b93a6d1b95d607e78e6c53763' + ], + vtb: [ + '0x286bc8414c7000ce1d6ee6a834e29a54c1784814b76243eb77ed0b2c5573c60f', + '0x7483b89572fb2bd687c7b9a93b242d0b237f9aba463aba07ec24503931038aaa' + ], + westend: [ + '0xe143f23803ac50e8f6f8e62695d1ce9e4e1d68aa36c1cd2cfd15340213f3423e' + ], + xxnetwork: [ + '0x50dd5d206917bf10502c68fb4d18a59fc8aa31586f4e8856b493e43544aa82aa' + ], + zeitgeist: [ + '0x1bf2a2ecb4a868de66ea8610f2ce7c8c43706561b6476031315f6640fe38e060' + ] +}; diff --git a/packages/networks/src/defaults/icons.ts b/packages/networks/src/defaults/icons.ts new file mode 100644 index 0000000..5e9c4f1 --- /dev/null +++ b/packages/networks/src/defaults/icons.ts @@ -0,0 +1,15 @@ +// Copyright 2017-2025 @polkadot/networks authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { KnownIcon } from '../types.js'; + +// these are icon overrides +export const knownIcon: KnownIcon = { + centrifuge: 'polkadot', + kusama: 'polkadot', + polkadot: 'polkadot', + sora: 'polkadot', + statemine: 'polkadot', + statemint: 'polkadot', + westmint: 'polkadot' +}; diff --git a/packages/networks/src/defaults/index.ts b/packages/networks/src/defaults/index.ts new file mode 100644 index 0000000..3437f94 --- /dev/null +++ b/packages/networks/src/defaults/index.ts @@ -0,0 +1,7 @@ +// Copyright 2017-2025 @polkadot/networks authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +export { knownGenesis } from './genesis.js'; +export { knownIcon } from './icons.js'; +export { knownLedger } from './ledger.js'; +export { knownTestnet } from './testnets.js'; diff --git a/packages/networks/src/defaults/ledger.ts b/packages/networks/src/defaults/ledger.ts new file mode 100644 index 0000000..0e96477 --- /dev/null +++ b/packages/networks/src/defaults/ledger.ts @@ -0,0 +1,61 @@ +// Copyright 2017-2025 @polkadot/networks authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { KnownLedger } from '../types.js'; + +// These match up with the keys of the ledgerApps object in the @polkadot/hw-ledger/defaults.ts +// and maps to the known slip44 (minus the `0x8` hard derivation flag) +// +// NOTE: Any network here needs to have a genesisHash attached in the ./genesis.ts config +export const knownLedger: KnownLedger = { + acala: 0x00000313, + ajuna: 0x00000162, + 'aleph-node': 0x00000283, + astar: 0x0000032a, + bifrost: 0x00000314, + 'bifrost-kusama': 0x00000314, + bittensor: 0x00000162, + centrifuge: 0x000002eb, + composable: 0x00000162, + creditcoin3: 0x00000162, + darwinia: 0x00000162, + dentnet: 0x000002de, + 'dock-mainnet': 0x00000252, + edgeware: 0x0000020b, + encointer: 0x000001b2, + enjin: 0x00000483, + equilibrium: 0x05f5e0fd, + frequency: 0x0000082b, + genshiro: 0x05f5e0fc, + hydradx: 0x00000162, + integritee: 0x000007df, + 'interlay-parachain': 0x00000162, + karura: 0x000002ae, + khala: 0x000001b2, + kusama: 0x000001b2, + liberland: 0x000002ff, + matrixchain: 0x00000483, + mythos: 0x0000003c, + nodle: 0x000003eb, + origintrail: 0x00000162, + parallel: 0x00000162, + peaq: 0x00000d0a, + pendulum: 0x00000162, + phala: 0x00000162, + picasso: 0x000001b2, + polimec: 0x00000d10, + polkadex: 0x0000031f, + polkadot: 0x00000162, + polymesh: 0x00000253, + quartz: 0x00000277, + sora: 0x00000269, + stafi: 0x0000038b, + statemine: 0x000001b2, // common-good on Kusama, shares derivation + statemint: 0x00000162, // common-good on Polkadot, shares derivation + ternoa: 0x00003e3, + unique: 0x00000295, + vara: 0x00001370, + vtb: 0x000002b6, + xxnetwork: 0x000007a3, + zeitgeist: 0x00000162 +}; diff --git a/packages/networks/src/defaults/testnets.ts b/packages/networks/src/defaults/testnets.ts new file mode 100644 index 0000000..fc8add4 --- /dev/null +++ b/packages/networks/src/defaults/testnets.ts @@ -0,0 +1,16 @@ +// Copyright 2017-2025 @polkadot/networks authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { KnownTestnet } from '../types.js'; + +// testnets should not allow selection +export const knownTestnet: KnownTestnet = { + '': true, // this is the default non-network entry + 'cess-testnet': true, + 'dock-testnet': true, + jupiter: true, + 'mathchain-testnet': true, + p3dt: true, + subspace_testnet: true, + 'zero-alphaville': true +}; diff --git a/packages/networks/src/index.spec.ts b/packages/networks/src/index.spec.ts new file mode 100644 index 0000000..2e87c78 --- /dev/null +++ b/packages/networks/src/index.spec.ts @@ -0,0 +1,120 @@ +// Copyright 2017-2025 @polkadot/networks authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import type { SubstrateNetwork } from './types.js'; + +import { knownGenesis, knownIcon, knownLedger, knownTestnet } from './defaults/index.js'; +import { allNetworks, availableNetworks, selectableNetworks } from './index.js'; + +describe('availableNetworks', (): void => { + it('has the correct starting order', (): void => { + expect(availableNetworks.slice(0, 3).map(({ prefix }) => prefix)).toEqual([0, 2, 42]); + }); + + it('has a sorted list (first external, last external)', (): void => { + expect(availableNetworks[3].displayName).toEqual('3DP network'); + expect(availableNetworks[availableNetworks.length - 1].displayName).toEqual('ZERO'); + }); + + it('has no ignored networks', (): void => { + expect(availableNetworks.some(({ isIgnored }) => isIgnored)).toEqual(false); + }); + + it('has no reserved networks', (): void => { + expect(availableNetworks.some(({ prefix }) => prefix === 47)).toEqual(false); + }); + + it('has allNetworks genesis information', (): void => { + expect( + Object.entries(knownGenesis).filter(([network, genesisHash]) => + availableNetworks.some((a) => + a.network === network && + genesisHash.some((g, index) => a.genesisHash[index] !== g) + ) + ) + ).toEqual([]); + }); + + it('has allNetworks ledger details', (): void => { + expect( + Object.entries(knownLedger).filter(([network, slip44]) => + availableNetworks.some((a) => + a.network === network && ( + a.slip44 !== slip44 || + !a.hasLedgerSupport || + !a.genesisHash.length + ) + ) + ) + ).toEqual([]); + }); + + it('has no testnets exposed', (): void => { + expect( + Object.keys(knownTestnet).filter((network) => + availableNetworks.some((a) => + a.network === network + ) + ) + ).toEqual([]); + }); + + it('has allNetworks icons, except for overrides', (): void => { + expect( + availableNetworks.filter(({ icon, network }) => + icon !== 'substrate' && + knownIcon[network] !== icon + ) + ).toEqual([]); + }); + + it('has all the correct fields', (): void => { + expect(availableNetworks[0]).toEqual({ + decimals: [10], + displayName: 'Polkadot Relay Chain', + genesisHash: [ + '0x91b171bb158e2d3848fa23a9f1c25182fb8e20313b2c1eb49219da7a70ce90c3' + ], + hasLedgerSupport: true, + icon: 'polkadot', + isIgnored: false, + isTestnet: false, + network: 'polkadot', + prefix: 0, + slip44: 354, + standardAccount: '*25519', + symbols: ['DOT'], + website: 'https://polkadot.network' + }); + }); +}); + +describe('allNetworks', (): void => { + it('has no ss58 duplicates', (): void => { + const dupes: SubstrateNetwork[] = []; + const uniques: SubstrateNetwork[] = []; + + allNetworks.forEach((a): void => { + if (uniques.some((u) => u.prefix === a.prefix)) { + dupes.push(a); + } else { + uniques.push(a); + } + }); + + expect(dupes).toEqual([]); + }); +}); + +describe('selectableNetworks', (): void => { + it('has the correct starting order', (): void => { + expect(selectableNetworks.slice(0, 3).map(({ prefix }) => prefix)).toEqual([0, 2, 42]); + }); + + it('has a sorted list (first external, last external)', (): void => { + expect(selectableNetworks[3].displayName).toEqual('3DP network'); + expect(selectableNetworks[selectableNetworks.length - 1].displayName).toEqual('Zeitgeist'); + }); +}); diff --git a/packages/networks/src/index.ts b/packages/networks/src/index.ts new file mode 100644 index 0000000..331bd05 --- /dev/null +++ b/packages/networks/src/index.ts @@ -0,0 +1,9 @@ +// Copyright 2017-2025 @polkadot/networks authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +// TODO: This was removed, really cannot recall the reason... +// ... put it back, but keep it removed +// import './packageDetect.js'; + +export * from './interfaces.js'; +export { packageInfo } from './packageInfo.js'; diff --git a/packages/networks/src/interfaces.ts b/packages/networks/src/interfaces.ts new file mode 100644 index 0000000..6d4d729 --- /dev/null +++ b/packages/networks/src/interfaces.ts @@ -0,0 +1,72 @@ +// Copyright 2017-2025 @polkadot/networks authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { KnownSubstrate, Network, SubstrateNetwork } from './types.js'; + +import knownSubstrate from '@substrate/ss58-registry'; + +import { knownGenesis, knownIcon, knownLedger, knownTestnet } from './defaults/index.js'; + +// These are known prefixes that are not sorted +const UNSORTED = [0, 2, 42]; +const TESTNETS = ['testnet']; + +function toExpanded (o: KnownSubstrate): SubstrateNetwork { + const network = o.network || ''; + const nameParts = network.replace(/_/g, '-').split('-'); + const n = o as SubstrateNetwork; + + // ledger additions + n.slip44 = knownLedger[network]; + n.hasLedgerSupport = !!n.slip44; + + // general items + n.genesisHash = knownGenesis[network] || []; + n.icon = knownIcon[network] || 'substrate'; + + // filtering + n.isTestnet = !!knownTestnet[network] || TESTNETS.includes(nameParts[nameParts.length - 1]); + n.isIgnored = n.isTestnet || ( + !( + o.standardAccount && + o.decimals?.length && + o.symbols?.length + ) && + o.prefix !== 42 + ); + + return n; +} + +function filterSelectable ({ genesisHash, prefix }: Network): boolean { + return !!genesisHash.length || prefix === 42; +} + +function filterAvailable (n: SubstrateNetwork): n is Network { + return !n.isIgnored && !!n.network; +} + +function sortNetworks (a: Network, b: Network): number { + const isUnSortedA = UNSORTED.includes(a.prefix); + const isUnSortedB = UNSORTED.includes(b.prefix); + + return isUnSortedA === isUnSortedB + ? isUnSortedA + ? 0 + : a.displayName.localeCompare(b.displayName) + : isUnSortedA + ? -1 + : 1; +} + +// This is all the Substrate networks with our additional information +export const allNetworks = knownSubstrate.map(toExpanded); + +// The list of available/claimed prefixes +// - no testnets +// - we only include those where we have a standardAccount +// - sort by name, however we keep 0, 2, 42 first in the list +export const availableNetworks = allNetworks.filter(filterAvailable).sort(sortNetworks); + +// A filtered list of those chains we have details about (genesisHashes) +export const selectableNetworks = availableNetworks.filter(filterSelectable); diff --git a/packages/networks/src/mod.ts b/packages/networks/src/mod.ts new file mode 100644 index 0000000..30ed091 --- /dev/null +++ b/packages/networks/src/mod.ts @@ -0,0 +1,4 @@ +// Copyright 2017-2025 @polkadot/networks authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +export * from './index.js'; diff --git a/packages/networks/src/packageDetect.ts b/packages/networks/src/packageDetect.ts new file mode 100644 index 0000000..9e71cb7 --- /dev/null +++ b/packages/networks/src/packageDetect.ts @@ -0,0 +1,11 @@ +// Copyright 2017-2025 @polkadot/networks authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +// Do not edit, auto-generated by @polkadot/dev +// (packageInfo imports will be kept as-is, user-editable) + +import { detectPackage } from '@pezkuwi/util'; + +import { packageInfo } from './packageInfo.js'; + +detectPackage(packageInfo, null, []); diff --git a/packages/networks/src/packageInfo.ts b/packages/networks/src/packageInfo.ts new file mode 100644 index 0000000..3286ad6 --- /dev/null +++ b/packages/networks/src/packageInfo.ts @@ -0,0 +1,6 @@ +// Copyright 2017-2025 @polkadot/networks authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +// Do not edit, auto-generated by @polkadot/dev + +export const packageInfo = { name: '@polkadot/networks', path: 'auto', type: 'auto', version: '14.0.1' }; diff --git a/packages/networks/src/ss58registry.spec.ts b/packages/networks/src/ss58registry.spec.ts new file mode 100644 index 0000000..7d99fee --- /dev/null +++ b/packages/networks/src/ss58registry.spec.ts @@ -0,0 +1,34 @@ +// Copyright 2017-2025 @polkadot/networks authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import known from '@substrate/ss58-registry'; +import fs from 'node:fs'; + +import { stringify } from '@pezkuwi/util'; + +describe('@substrate/ss58-registry', (): void => { + it('has known values', (): void => { + const testUrl = new URL('../test/ss58registry.json', import.meta.url); + const json = stringify(known, 2); + + try { + expect( + JSON.parse(json) + ).toEqual( + JSON.parse( + fs.readFileSync(testUrl, 'utf-8') + ) + ); + } catch (error) { + if (process.env['GITHUB_REPOSITORY']) { + console.error(json); + + throw error; + } + + fs.writeFileSync(testUrl, json, { flag: 'w' }); + } + }); +}); diff --git a/packages/networks/src/types.ts b/packages/networks/src/types.ts new file mode 100644 index 0000000..5d0fe21 --- /dev/null +++ b/packages/networks/src/types.ts @@ -0,0 +1,43 @@ +// Copyright 2017-2025 @polkadot/keyring authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { RegistryEntry } from '@substrate/ss58-registry'; +import type { HexString } from '@pezkuwi/util/types'; + +export type Icon = 'beachball' | 'empty' | 'jdenticon' | 'polkadot' | 'substrate'; + +export type KnownIcon = Record; + +export type KnownLedger = Record; + +export type KnownGenesis = Record; + +export type KnownSubstrate = RegistryEntry; + +export type KnownTestnet = Record; + +export interface SubstrateNetwork extends KnownSubstrate { + /** The genesisHash for the chain */ + genesisHash: HexString[]; + /** Does the chain has support for Ledger devices */ + hasLedgerSupport: boolean; + /** The IdentityIcon to use for the chain */ + icon: Icon; + /** Flag set when we don't include this chain */ + isIgnored: boolean; + /** Flag to indicate a testnet */ + isTestnet: boolean; + /** The Ledger-specific/required slip44 for the chain */ + slip44?: number | null; +} + +export interface Network extends SubstrateNetwork { + /** The network assigned to this chain */ + network: string; +} + +export interface Ss58Registry { + registry: KnownSubstrate[]; + specification: string; + schema: Record; +} diff --git a/packages/networks/test/ss58registry.json b/packages/networks/test/ss58registry.json new file mode 100644 index 0000000..e9b5a56 --- /dev/null +++ b/packages/networks/test/ss58registry.json @@ -0,0 +1,1905 @@ +[ + { + "prefix": 0, + "network": "polkadot", + "displayName": "Polkadot Relay Chain", + "symbols": [ + "DOT" + ], + "decimals": [ + 10 + ], + "standardAccount": "*25519", + "website": "https://polkadot.network" + }, + { + "prefix": 1, + "network": "BareSr25519", + "displayName": "Bare 32-bit Schnorr/Ristretto (S/R 25519) public key.", + "symbols": [], + "decimals": [], + "standardAccount": "Sr25519", + "website": null + }, + { + "prefix": 2, + "network": "kusama", + "displayName": "Kusama Relay Chain", + "symbols": [ + "KSM" + ], + "decimals": [ + 12 + ], + "standardAccount": "*25519", + "website": "https://kusama.network" + }, + { + "prefix": 3, + "network": "BareEd25519", + "displayName": "Bare 32-bit Ed25519 public key.", + "symbols": [], + "decimals": [], + "standardAccount": "Ed25519", + "website": null + }, + { + "prefix": 4, + "network": "katalchain", + "displayName": "Katal Chain", + "symbols": [], + "decimals": [], + "standardAccount": "*25519", + "website": null + }, + { + "prefix": 5, + "network": "astar", + "displayName": "Astar Network", + "symbols": [ + "ASTR" + ], + "decimals": [ + 18 + ], + "standardAccount": "*25519", + "website": "https://astar.network" + }, + { + "prefix": 6, + "network": "bifrost", + "displayName": "Bifrost", + "symbols": [ + "BNC" + ], + "decimals": [ + 12 + ], + "standardAccount": "*25519", + "website": "https://bifrost.finance/" + }, + { + "prefix": 7, + "network": "edgeware", + "displayName": "Edgeware", + "symbols": [ + "EDG" + ], + "decimals": [ + 18 + ], + "standardAccount": "*25519", + "website": "https://edgewa.re" + }, + { + "prefix": 8, + "network": "karura", + "displayName": "Karura", + "symbols": [ + "KAR" + ], + "decimals": [ + 12 + ], + "standardAccount": "*25519", + "website": "https://karura.network/" + }, + { + "prefix": 9, + "network": "reynolds", + "displayName": "Laminar Reynolds Canary", + "symbols": [ + "REY" + ], + "decimals": [ + 18 + ], + "standardAccount": "*25519", + "website": "http://laminar.network/" + }, + { + "prefix": 10, + "network": "acala", + "displayName": "Acala", + "symbols": [ + "ACA" + ], + "decimals": [ + 12 + ], + "standardAccount": "*25519", + "website": "https://acala.network/" + }, + { + "prefix": 11, + "network": "laminar", + "displayName": "Laminar", + "symbols": [ + "LAMI" + ], + "decimals": [ + 18 + ], + "standardAccount": "*25519", + "website": "http://laminar.network/" + }, + { + "prefix": 12, + "network": "polymesh", + "displayName": "Polymesh", + "symbols": [ + "POLYX" + ], + "decimals": [ + 6 + ], + "standardAccount": "*25519", + "website": "https://polymath.network/" + }, + { + "prefix": 13, + "network": "integritee", + "displayName": "Integritee", + "symbols": [ + "TEER" + ], + "decimals": [ + 12 + ], + "standardAccount": "*25519", + "website": "https://integritee.network" + }, + { + "prefix": 14, + "network": "totem", + "displayName": "Totem", + "symbols": [ + "TOTEM" + ], + "decimals": [ + 0 + ], + "standardAccount": "*25519", + "website": "https://totemaccounting.com" + }, + { + "prefix": 15, + "network": "synesthesia", + "displayName": "Synesthesia", + "symbols": [ + "SYN" + ], + "decimals": [ + 12 + ], + "standardAccount": "*25519", + "website": "https://synesthesia.network/" + }, + { + "prefix": 16, + "network": "kulupu", + "displayName": "Kulupu", + "symbols": [ + "KLP" + ], + "decimals": [ + 12 + ], + "standardAccount": "*25519", + "website": "https://kulupu.network/" + }, + { + "prefix": 17, + "network": "dark", + "displayName": "Dark Mainnet", + "symbols": [], + "decimals": [], + "standardAccount": "*25519", + "website": null + }, + { + "prefix": 18, + "network": "darwinia", + "displayName": "Darwinia Network", + "symbols": [ + "RING" + ], + "decimals": [ + 18 + ], + "standardAccount": "secp256k1", + "website": "https://darwinia.network" + }, + { + "prefix": 19, + "network": "watr", + "displayName": "Watr Protocol", + "symbols": [ + "WATR" + ], + "decimals": [ + 18 + ], + "standardAccount": "*25519", + "website": "https://www.watr.org" + }, + { + "prefix": 20, + "network": "stafi", + "displayName": "Stafi", + "symbols": [ + "FIS" + ], + "decimals": [ + 12 + ], + "standardAccount": "*25519", + "website": "https://stafi.io" + }, + { + "prefix": 21, + "network": "karmachain", + "displayName": "Karmacoin", + "symbols": [ + "KCOIN" + ], + "decimals": [ + 6 + ], + "standardAccount": "*25519", + "website": "https://karmaco.in" + }, + { + "prefix": 22, + "network": "dock-pos-mainnet", + "displayName": "Dock Mainnet", + "symbols": [ + "DCK" + ], + "decimals": [ + 6 + ], + "standardAccount": "*25519", + "website": "https://dock.io" + }, + { + "prefix": 23, + "network": "shift", + "displayName": "ShiftNrg", + "symbols": [], + "decimals": [], + "standardAccount": "*25519", + "website": null + }, + { + "prefix": 24, + "network": "zero", + "displayName": "ZERO", + "symbols": [ + "ZERO" + ], + "decimals": [ + 18 + ], + "standardAccount": "*25519", + "website": "https://zero.io" + }, + { + "prefix": 25, + "network": "zero-alphaville", + "displayName": "ZERO Alphaville", + "symbols": [ + "ZERO" + ], + "decimals": [ + 18 + ], + "standardAccount": "*25519", + "website": "https://zero.io" + }, + { + "prefix": 26, + "network": "jupiter", + "displayName": "Jupiter", + "symbols": [ + "jDOT" + ], + "decimals": [ + 10 + ], + "standardAccount": "*25519", + "website": "https://jupiter.patract.io" + }, + { + "prefix": 27, + "network": "kabocha", + "displayName": "Kabocha", + "symbols": [ + "KAB" + ], + "decimals": [ + 12 + ], + "standardAccount": "*25519", + "website": "https://kabocha.network" + }, + { + "prefix": 28, + "network": "subsocial", + "displayName": "Subsocial", + "symbols": [], + "decimals": [], + "standardAccount": "*25519", + "website": null + }, + { + "prefix": 29, + "network": "cord", + "displayName": "CORD Network", + "symbols": [ + "DHI", + "WAY" + ], + "decimals": [ + 12, + 12 + ], + "standardAccount": "*25519", + "website": "https://cord.network/" + }, + { + "prefix": 30, + "network": "phala", + "displayName": "Phala Network", + "symbols": [ + "PHA" + ], + "decimals": [ + 12 + ], + "standardAccount": "*25519", + "website": "https://phala.network" + }, + { + "prefix": 31, + "network": "litentry", + "displayName": "Litentry Network", + "symbols": [ + "LIT" + ], + "decimals": [ + 12 + ], + "standardAccount": "*25519", + "website": "https://litentry.com/" + }, + { + "prefix": 32, + "network": "robonomics", + "displayName": "Robonomics", + "symbols": [ + "XRT" + ], + "decimals": [ + 9 + ], + "standardAccount": "*25519", + "website": "https://robonomics.network" + }, + { + "prefix": 33, + "network": "datahighway", + "displayName": "DataHighway", + "symbols": [], + "decimals": [], + "standardAccount": "*25519", + "website": null + }, + { + "prefix": 34, + "network": "ares", + "displayName": "Ares Protocol", + "symbols": [ + "ARES" + ], + "decimals": [ + 12 + ], + "standardAccount": "*25519", + "website": "https://www.aresprotocol.com/" + }, + { + "prefix": 35, + "network": "vln", + "displayName": "Valiu Liquidity Network", + "symbols": [ + "USDv" + ], + "decimals": [ + 15 + ], + "standardAccount": "*25519", + "website": "https://valiu.com/" + }, + { + "prefix": 36, + "network": "centrifuge", + "displayName": "Centrifuge Chain", + "symbols": [ + "CFG" + ], + "decimals": [ + 18 + ], + "standardAccount": "*25519", + "website": "https://centrifuge.io/" + }, + { + "prefix": 37, + "network": "nodle", + "displayName": "Nodle Chain", + "symbols": [ + "NODL" + ], + "decimals": [ + 11 + ], + "standardAccount": "*25519", + "website": "https://nodle.io/" + }, + { + "prefix": 38, + "network": "kilt", + "displayName": "KILT Spiritnet", + "symbols": [ + "KILT" + ], + "decimals": [ + 15 + ], + "standardAccount": "*25519", + "website": "https://kilt.io/" + }, + { + "prefix": 39, + "network": "mathchain", + "displayName": "MathChain mainnet", + "symbols": [ + "MATH" + ], + "decimals": [ + 18 + ], + "standardAccount": "*25519", + "website": "https://mathwallet.org" + }, + { + "prefix": 40, + "network": "mathchain-testnet", + "displayName": "MathChain testnet", + "symbols": [ + "MATH" + ], + "decimals": [ + 18 + ], + "standardAccount": "*25519", + "website": "https://mathwallet.org" + }, + { + "prefix": 41, + "network": "polimec", + "displayName": "Polimec Protocol", + "symbols": [ + "PLMC" + ], + "decimals": [ + 10 + ], + "standardAccount": "*25519", + "website": "https://www.polimec.org/" + }, + { + "prefix": 42, + "network": "substrate", + "displayName": "Substrate", + "symbols": [], + "decimals": [], + "standardAccount": "*25519", + "website": "https://substrate.io/" + }, + { + "prefix": 43, + "network": "BareSecp256k1", + "displayName": "Bare 32-bit ECDSA SECP-256k1 public key.", + "symbols": [], + "decimals": [], + "standardAccount": "secp256k1", + "website": null + }, + { + "prefix": 44, + "network": "chainx", + "displayName": "ChainX", + "symbols": [ + "PCX" + ], + "decimals": [ + 8 + ], + "standardAccount": "*25519", + "website": "https://chainx.org/" + }, + { + "prefix": 45, + "network": "uniarts", + "displayName": "UniArts Network", + "symbols": [ + "UART", + "UINK" + ], + "decimals": [ + 12, + 12 + ], + "standardAccount": "*25519", + "website": "https://uniarts.me" + }, + { + "prefix": 46, + "network": "reserved46", + "displayName": "This prefix is reserved.", + "symbols": [], + "decimals": [], + "standardAccount": null, + "website": null + }, + { + "prefix": 47, + "network": "reserved47", + "displayName": "This prefix is reserved.", + "symbols": [], + "decimals": [], + "standardAccount": null, + "website": null + }, + { + "prefix": 48, + "network": "neatcoin", + "displayName": "Neatcoin Mainnet", + "symbols": [ + "NEAT" + ], + "decimals": [ + 12 + ], + "standardAccount": "*25519", + "website": "https://neatcoin.org" + }, + { + "prefix": 49, + "network": "picasso", + "displayName": "Picasso", + "symbols": [ + "PICA" + ], + "decimals": [ + 12 + ], + "standardAccount": "*25519", + "website": "https://picasso.composable.finance" + }, + { + "prefix": 50, + "network": "composable", + "displayName": "Composable Finance", + "symbols": [ + "LAYR" + ], + "decimals": [ + 12 + ], + "standardAccount": "*25519", + "website": "https://composable.finance" + }, + { + "prefix": 51, + "network": "oak", + "displayName": "OAK Network", + "symbols": [ + "OAK", + "TUR" + ], + "decimals": [ + 10, + 10 + ], + "standardAccount": "*25519", + "website": "https://oak.tech" + }, + { + "prefix": 52, + "network": "KICO", + "displayName": "KICO", + "symbols": [ + "KICO" + ], + "decimals": [ + 14 + ], + "standardAccount": "*25519", + "website": "https://dico.io" + }, + { + "prefix": 53, + "network": "DICO", + "displayName": "DICO", + "symbols": [ + "DICO" + ], + "decimals": [ + 14 + ], + "standardAccount": "*25519", + "website": "https://dico.io" + }, + { + "prefix": 54, + "network": "cere", + "displayName": "Cere Network", + "symbols": [ + "CERE" + ], + "decimals": [ + 10 + ], + "standardAccount": "*25519", + "website": "https://cere.network" + }, + { + "prefix": 55, + "network": "xxnetwork", + "displayName": "xx network", + "symbols": [ + "XX" + ], + "decimals": [ + 9 + ], + "standardAccount": "*25519", + "website": "https://xx.network" + }, + { + "prefix": 56, + "network": "pendulum", + "displayName": "Pendulum chain", + "symbols": [ + "PEN" + ], + "decimals": [ + 12 + ], + "standardAccount": "*25519", + "website": "https://pendulumchain.org/" + }, + { + "prefix": 57, + "network": "amplitude", + "displayName": "Amplitude chain", + "symbols": [ + "AMPE" + ], + "decimals": [ + 12 + ], + "standardAccount": "*25519", + "website": "https://pendulumchain.org/" + }, + { + "prefix": 58, + "network": "eternal-civilization", + "displayName": "Eternal Civilization", + "symbols": [ + "ECC" + ], + "decimals": [ + 12 + ], + "standardAccount": "*25519", + "website": "http://www.ysknfr.cn/" + }, + { + "prefix": 63, + "network": "hydradx", + "displayName": "Hydration", + "symbols": [ + "HDX" + ], + "decimals": [ + 12 + ], + "standardAccount": "*25519", + "website": "https://hydration.net" + }, + { + "prefix": 65, + "network": "aventus", + "displayName": "Aventus Mainnet", + "symbols": [ + "AVT" + ], + "decimals": [ + 18 + ], + "standardAccount": "*25519", + "website": "https://aventus.io" + }, + { + "prefix": 66, + "network": "crust", + "displayName": "Crust Network", + "symbols": [ + "CRU" + ], + "decimals": [ + 12 + ], + "standardAccount": "*25519", + "website": "https://crust.network" + }, + { + "prefix": 67, + "network": "genshiro", + "displayName": "Genshiro Network", + "symbols": [ + "GENS", + "EQD", + "LPT0" + ], + "decimals": [ + 9, + 9, + 9 + ], + "standardAccount": "*25519", + "website": "https://genshiro.equilibrium.io" + }, + { + "prefix": 68, + "network": "equilibrium", + "displayName": "Equilibrium Network", + "symbols": [ + "EQ" + ], + "decimals": [ + 9 + ], + "standardAccount": "*25519", + "website": "https://equilibrium.io" + }, + { + "prefix": 69, + "network": "sora", + "displayName": "SORA Network", + "symbols": [ + "XOR" + ], + "decimals": [ + 18 + ], + "standardAccount": "*25519", + "website": "https://sora.org" + }, + { + "prefix": 71, + "network": "p3d", + "displayName": "3DP network", + "symbols": [ + "P3D" + ], + "decimals": [ + 12 + ], + "standardAccount": "*25519", + "website": "https://3dpass.org" + }, + { + "prefix": 72, + "network": "p3dt", + "displayName": "3DP test network", + "symbols": [ + "P3Dt" + ], + "decimals": [ + 12 + ], + "standardAccount": "*25519", + "website": "https://3dpass.org" + }, + { + "prefix": 73, + "network": "zeitgeist", + "displayName": "Zeitgeist", + "symbols": [ + "ZTG" + ], + "decimals": [ + 10 + ], + "standardAccount": "*25519", + "website": "https://zeitgeist.pm" + }, + { + "prefix": 77, + "network": "manta", + "displayName": "Manta network", + "symbols": [ + "MANTA" + ], + "decimals": [ + 18 + ], + "standardAccount": "*25519", + "website": "https://manta.network" + }, + { + "prefix": 78, + "network": "calamari", + "displayName": "Calamari: Manta Canary Network", + "symbols": [ + "KMA" + ], + "decimals": [ + 12 + ], + "standardAccount": "*25519", + "website": "https://manta.network" + }, + { + "prefix": 81, + "network": "sora_dot_para", + "displayName": "SORA Polkadot Parachain", + "symbols": [ + "XOR" + ], + "decimals": [ + 18 + ], + "standardAccount": "*25519", + "website": "https://sora.org" + }, + { + "prefix": 88, + "network": "polkadex", + "displayName": "Polkadex Mainnet", + "symbols": [ + "PDEX" + ], + "decimals": [ + 12 + ], + "standardAccount": "*25519", + "website": "https://polkadex.trade" + }, + { + "prefix": 89, + "network": "polkadexparachain", + "displayName": "Polkadex Parachain", + "symbols": [ + "PDEX" + ], + "decimals": [ + 12 + ], + "standardAccount": "*25519", + "website": "https://polkadex.trade" + }, + { + "prefix": 90, + "network": "frequency", + "displayName": "Frequency", + "symbols": [ + "FRQCY" + ], + "decimals": [ + 8 + ], + "standardAccount": "*25519", + "website": "https://www.frequency.xyz" + }, + { + "prefix": 92, + "network": "anmol", + "displayName": "Anmol Network", + "symbols": [ + "ANML" + ], + "decimals": [ + 18 + ], + "standardAccount": "*25519", + "website": "https://anmol.network/" + }, + { + "prefix": 93, + "network": "fragnova", + "displayName": "Fragnova Network", + "symbols": [ + "NOVA" + ], + "decimals": [ + 12 + ], + "standardAccount": "*25519", + "website": "https://fragnova.com" + }, + { + "prefix": 98, + "network": "polkasmith", + "displayName": "PolkaSmith Canary Network", + "symbols": [ + "PKS" + ], + "decimals": [ + 18 + ], + "standardAccount": "*25519", + "website": "https://polkafoundry.com" + }, + { + "prefix": 99, + "network": "polkafoundry", + "displayName": "PolkaFoundry Network", + "symbols": [ + "PKF" + ], + "decimals": [ + 18 + ], + "standardAccount": "*25519", + "website": "https://polkafoundry.com" + }, + { + "prefix": 100, + "network": "ibtida", + "displayName": "Anmol Network Ibtida Canary network", + "symbols": [ + "IANML" + ], + "decimals": [ + 18 + ], + "standardAccount": "*25519", + "website": "https://anmol.network/" + }, + { + "prefix": 101, + "network": "origintrail-parachain", + "displayName": "OriginTrail Parachain", + "symbols": [ + "OTP" + ], + "decimals": [ + 12 + ], + "standardAccount": "*25519", + "website": "https://parachain.origintrail.io/" + }, + { + "prefix": 105, + "network": "pontem-network", + "displayName": "Pontem Network", + "symbols": [ + "PONT" + ], + "decimals": [ + 10 + ], + "standardAccount": "*25519", + "website": "https://pontem.network" + }, + { + "prefix": 110, + "network": "heiko", + "displayName": "Heiko", + "symbols": [ + "HKO" + ], + "decimals": [ + 12 + ], + "standardAccount": "*25519", + "website": "https://parallel.fi/" + }, + { + "prefix": 113, + "network": "integritee-incognito", + "displayName": "Integritee Incognito", + "symbols": [], + "decimals": [], + "standardAccount": "*25519", + "website": "https://integritee.network" + }, + { + "prefix": 117, + "network": "tinker", + "displayName": "Tinker", + "symbols": [ + "TNKR" + ], + "decimals": [ + 12 + ], + "standardAccount": "*25519", + "website": "https://invarch.network" + }, + { + "prefix": 126, + "network": "joystream", + "displayName": "Joystream", + "symbols": [ + "JOY" + ], + "decimals": [ + 10 + ], + "standardAccount": "*25519", + "website": "https://www.joystream.org" + }, + { + "prefix": 128, + "network": "clover", + "displayName": "Clover Finance", + "symbols": [ + "CLV" + ], + "decimals": [ + 18 + ], + "standardAccount": "*25519", + "website": "https://clover.finance" + }, + { + "prefix": 129, + "network": "dorafactory-polkadot", + "displayName": "Dorafactory Polkadot Network", + "symbols": [ + "DORA" + ], + "decimals": [ + 12 + ], + "standardAccount": "*25519", + "website": "https://dorafactory.org" + }, + { + "prefix": 131, + "network": "litmus", + "displayName": "Litmus Network", + "symbols": [ + "LIT" + ], + "decimals": [ + 12 + ], + "standardAccount": "*25519", + "website": "https://litentry.com/" + }, + { + "prefix": 136, + "network": "altair", + "displayName": "Altair", + "symbols": [ + "AIR" + ], + "decimals": [ + 18 + ], + "standardAccount": "*25519", + "website": "https://centrifuge.io/" + }, + { + "prefix": 137, + "network": "vara", + "displayName": "Vara Network", + "symbols": [ + "VARA" + ], + "decimals": [ + 12 + ], + "standardAccount": "*25519", + "website": "https://vara.network/" + }, + { + "prefix": 172, + "network": "parallel", + "displayName": "Parallel", + "symbols": [ + "PARA" + ], + "decimals": [ + 12 + ], + "standardAccount": "*25519", + "website": "https://parallel.fi/" + }, + { + "prefix": 252, + "network": "social-network", + "displayName": "Social Network", + "symbols": [ + "NET" + ], + "decimals": [ + 18 + ], + "standardAccount": "*25519", + "website": "https://social.network" + }, + { + "prefix": 255, + "network": "quartz_mainnet", + "displayName": "QUARTZ by UNIQUE", + "symbols": [ + "QTZ" + ], + "decimals": [ + 18 + ], + "standardAccount": "*25519", + "website": "https://unique.network" + }, + { + "prefix": 268, + "network": "pioneer_network", + "displayName": "Pioneer Network by Bit.Country", + "symbols": [ + "NEER" + ], + "decimals": [ + 18 + ], + "standardAccount": "*25519", + "website": "https://bit.country" + }, + { + "prefix": 420, + "network": "sora_kusama_para", + "displayName": "SORA Kusama Parachain", + "symbols": [ + "XOR" + ], + "decimals": [ + 18 + ], + "standardAccount": "*25519", + "website": "https://sora.org" + }, + { + "prefix": 440, + "network": "allfeat_network", + "displayName": "Allfeat Network", + "symbols": [ + "AFT" + ], + "decimals": [ + 12 + ], + "standardAccount": "*25519", + "website": "https://allfeat.network" + }, + { + "prefix": 666, + "network": "metaquity_network", + "displayName": "Metaquity Network", + "symbols": [ + "MQTY" + ], + "decimals": [ + 18 + ], + "standardAccount": "*25519", + "website": "https://metaquity.xyz/" + }, + { + "prefix": 777, + "network": "curio", + "displayName": "Curio", + "symbols": [ + "CGT" + ], + "decimals": [ + 18 + ], + "standardAccount": "*25519", + "website": "https://parachain.capitaldex.exchange/" + }, + { + "prefix": 789, + "network": "geek", + "displayName": "GEEK Network", + "symbols": [ + "GEEK" + ], + "decimals": [ + 18 + ], + "standardAccount": "*25519", + "website": "https://geek.gl" + }, + { + "prefix": 995, + "network": "ternoa", + "displayName": "Ternoa", + "symbols": [ + "CAPS" + ], + "decimals": [ + 18 + ], + "standardAccount": "*25519", + "website": "https://www.ternoa.network" + }, + { + "prefix": 1110, + "network": "efinity", + "displayName": "Efinity", + "symbols": [ + "EFI" + ], + "decimals": [ + 18 + ], + "standardAccount": "*25519", + "website": "https://efinity.io/" + }, + { + "prefix": 1221, + "network": "peaq", + "displayName": "Peaq Network", + "symbols": [ + "PEAQ" + ], + "decimals": [ + 18 + ], + "standardAccount": "Sr25519", + "website": "https://www.peaq.network/" + }, + { + "prefix": 1222, + "network": "krest", + "displayName": "Krest Network", + "symbols": [ + "KREST" + ], + "decimals": [ + 18 + ], + "standardAccount": "Sr25519", + "website": "https://www.peaq.network/" + }, + { + "prefix": 1284, + "network": "moonbeam", + "displayName": "Moonbeam", + "symbols": [ + "GLMR" + ], + "decimals": [ + 18 + ], + "standardAccount": "secp256k1", + "website": "https://moonbeam.network" + }, + { + "prefix": 1285, + "network": "moonriver", + "displayName": "Moonriver", + "symbols": [ + "MOVR" + ], + "decimals": [ + 18 + ], + "standardAccount": "secp256k1", + "website": "https://moonbeam.network" + }, + { + "prefix": 1328, + "network": "ajuna", + "displayName": "Ajuna Network", + "symbols": [ + "AJUN" + ], + "decimals": [ + 12 + ], + "standardAccount": "*25519", + "website": "https://ajuna.io" + }, + { + "prefix": 1337, + "network": "bajun", + "displayName": "Bajun Network", + "symbols": [ + "BAJU" + ], + "decimals": [ + 12 + ], + "standardAccount": "*25519", + "website": "https://ajuna.io" + }, + { + "prefix": 1516, + "network": "societal", + "displayName": "Societal", + "symbols": [ + "SCTL" + ], + "decimals": [ + 12 + ], + "standardAccount": "*25519", + "website": "https://www.sctl.xyz" + }, + { + "prefix": 1985, + "network": "seals", + "displayName": "Seals Network", + "symbols": [ + "SEAL" + ], + "decimals": [ + 9 + ], + "standardAccount": "*25519", + "website": "https://seals.app" + }, + { + "prefix": 2007, + "network": "kapex", + "displayName": "Kapex", + "symbols": [ + "KAPEX" + ], + "decimals": [ + 12 + ], + "standardAccount": "*25519", + "website": "https://totemaccounting.com" + }, + { + "prefix": 2009, + "network": "cloudwalk_mainnet", + "displayName": "CloudWalk Network Mainnet", + "symbols": [ + "CWN" + ], + "decimals": [ + 18 + ], + "standardAccount": "*25519", + "website": "https://explorer.mainnet.cloudwalk.io" + }, + { + "prefix": 2021, + "network": "logion", + "displayName": "logion network", + "symbols": [ + "LGNT" + ], + "decimals": [ + 18 + ], + "standardAccount": "*25519", + "website": "https://logion.network" + }, + { + "prefix": 2024, + "network": "vow-chain", + "displayName": "Enigmatic Smile", + "symbols": [ + "VOW" + ], + "decimals": [ + 18 + ], + "standardAccount": "*25519", + "website": "https://www.vow.foundation/" + }, + { + "prefix": 2032, + "network": "interlay", + "displayName": "Interlay", + "symbols": [ + "INTR" + ], + "decimals": [ + 10 + ], + "standardAccount": "*25519", + "website": "https://interlay.io/" + }, + { + "prefix": 2092, + "network": "kintsugi", + "displayName": "Kintsugi", + "symbols": [ + "KINT" + ], + "decimals": [ + 12 + ], + "standardAccount": "*25519", + "website": "https://interlay.io/" + }, + { + "prefix": 2106, + "network": "bitgreen", + "displayName": "Bitgreen", + "symbols": [ + "BBB" + ], + "decimals": [ + 18 + ], + "standardAccount": "*25519", + "website": "https://bitgreen.org/" + }, + { + "prefix": 2112, + "network": "chainflip", + "displayName": "Chainflip", + "symbols": [ + "FLIP" + ], + "decimals": [ + 18 + ], + "standardAccount": "*25519", + "website": "https://chainflip.io/" + }, + { + "prefix": 2199, + "network": "moonsama", + "displayName": "Moonsama", + "symbols": [ + "SAMA" + ], + "decimals": [ + 18 + ], + "standardAccount": "secp256k1", + "website": "https://moonsama.com" + }, + { + "prefix": 2206, + "network": "ICE", + "displayName": "ICE Network", + "symbols": [ + "ICY" + ], + "decimals": [ + 18 + ], + "standardAccount": "*25519", + "website": "https://icenetwork.io" + }, + { + "prefix": 2207, + "network": "SNOW", + "displayName": "SNOW: ICE Canary Network", + "symbols": [ + "ICZ" + ], + "decimals": [ + 18 + ], + "standardAccount": "*25519", + "website": "https://icenetwork.io" + }, + { + "prefix": 2254, + "network": "subspace_testnet", + "displayName": "Subspace testnet", + "symbols": [ + "tSSC" + ], + "decimals": [ + 18 + ], + "standardAccount": "*25519", + "website": "https://subspace.network" + }, + { + "prefix": 3333, + "network": "peerplays", + "displayName": "Peerplays", + "symbols": [ + "PPY" + ], + "decimals": [ + 18 + ], + "standardAccount": "secp256k1", + "website": "https://www.peerplays.com/" + }, + { + "prefix": 4450, + "network": "g1", + "displayName": "Ğ1", + "symbols": [ + "G1" + ], + "decimals": [ + 2 + ], + "standardAccount": "*25519", + "website": "https://duniter.org" + }, + { + "prefix": 5234, + "network": "humanode", + "displayName": "Humanode Network", + "symbols": [ + "HMND" + ], + "decimals": [ + 18 + ], + "standardAccount": "*25519", + "website": "https://humanode.io" + }, + { + "prefix": 5845, + "network": "tangle", + "displayName": "Tangle Network", + "symbols": [ + "TNT" + ], + "decimals": [ + 18 + ], + "standardAccount": "*25519", + "website": "https://www.tangle.tools/" + }, + { + "prefix": 6094, + "network": "autonomys", + "displayName": "Autonomys", + "symbols": [ + "AI3" + ], + "decimals": [ + 18 + ], + "standardAccount": "*25519", + "website": "https://autonomys.xyz" + }, + { + "prefix": 7007, + "network": "tidefi", + "displayName": "Tidefi", + "symbols": [ + "TDFY" + ], + "decimals": [ + 12 + ], + "standardAccount": "*25519", + "website": "https://tidefi.com" + }, + { + "prefix": 7013, + "network": "gm", + "displayName": "GM", + "symbols": [ + "FREN", + "GM", + "GN" + ], + "decimals": [ + 12, + 0, + 0 + ], + "standardAccount": "*25519", + "website": "https://gmordie.com" + }, + { + "prefix": 7306, + "network": "krigan", + "displayName": "Krigan Network", + "symbols": [ + "KRGN" + ], + "decimals": [ + 9 + ], + "standardAccount": "*25519", + "website": "https://krigan.network" + }, + { + "prefix": 7391, + "network": "unique_mainnet", + "displayName": "Unique Network", + "symbols": [ + "UNQ" + ], + "decimals": [ + 18 + ], + "standardAccount": "*25519", + "website": "https://unique.network" + }, + { + "prefix": 8866, + "network": "golden_gate", + "displayName": "Golden Gate", + "symbols": [ + "GGX" + ], + "decimals": [ + 18 + ], + "standardAccount": "*25519", + "website": "https://ggxchain.io/" + }, + { + "prefix": 8883, + "network": "sapphire_mainnet", + "displayName": "Sapphire by Unique", + "symbols": [ + "QTZ" + ], + "decimals": [ + 18 + ], + "standardAccount": "*25519", + "website": "https://unique.network" + }, + { + "prefix": 8886, + "network": "golden_gate_sydney", + "displayName": "Golden Gate Sydney", + "symbols": [ + "GGXT" + ], + "decimals": [ + 18 + ], + "standardAccount": "*25519", + "website": "https://ggxchain.io/" + }, + { + "prefix": 9072, + "network": "hashed", + "displayName": "Hashed Network", + "symbols": [ + "HASH" + ], + "decimals": [ + 18 + ], + "standardAccount": "*25519", + "website": "https://hashed.network" + }, + { + "prefix": 9807, + "network": "dentnet", + "displayName": "DENTNet", + "symbols": [ + "DENTX" + ], + "decimals": [ + 18 + ], + "standardAccount": "*25519", + "website": "https://www.dentnet.io" + }, + { + "prefix": 9935, + "network": "t3rn", + "displayName": "t3rn", + "symbols": [ + "TRN" + ], + "decimals": [ + 12 + ], + "standardAccount": "*25519", + "website": "https://t3rn.io/" + }, + { + "prefix": 10041, + "network": "basilisk", + "displayName": "Basilisk", + "symbols": [ + "BSX" + ], + "decimals": [ + 12 + ], + "standardAccount": "*25519", + "website": "https://bsx.fi" + }, + { + "prefix": 11330, + "network": "cess-testnet", + "displayName": "CESS Testnet", + "symbols": [ + "TCESS" + ], + "decimals": [ + 18 + ], + "standardAccount": "*25519", + "website": "https://cess.cloud" + }, + { + "prefix": 11331, + "network": "cess", + "displayName": "CESS", + "symbols": [ + "CESS" + ], + "decimals": [ + 18 + ], + "standardAccount": "*25519", + "website": "https://cess.cloud" + }, + { + "prefix": 11486, + "network": "luhn", + "displayName": "Luhn Network", + "symbols": [ + "LUHN" + ], + "decimals": [ + 18 + ], + "standardAccount": "*25519", + "website": "https://luhn.network" + }, + { + "prefix": 11820, + "network": "contextfree", + "displayName": "Automata ContextFree", + "symbols": [ + "CTX" + ], + "decimals": [ + 18 + ], + "standardAccount": "*25519", + "website": "https://ata.network" + }, + { + "prefix": 12155, + "network": "impact", + "displayName": "Impact Protocol Network", + "symbols": [ + "BSTY" + ], + "decimals": [ + 18 + ], + "standardAccount": "*25519", + "website": "https://impactprotocol.network/" + }, + { + "prefix": 12191, + "network": "nftmart", + "displayName": "NFTMart", + "symbols": [ + "NMT" + ], + "decimals": [ + 12 + ], + "standardAccount": "*25519", + "website": "https://nftmart.io" + }, + { + "prefix": 12850, + "network": "analog-timechain", + "displayName": "Analog Timechain", + "symbols": [ + "ANLOG" + ], + "decimals": [ + 12 + ], + "standardAccount": "*25519", + "website": "https://analog.one" + }, + { + "prefix": 13116, + "network": "bittensor", + "displayName": "Bittensor", + "symbols": [ + "TAO" + ], + "decimals": [ + 9 + ], + "standardAccount": "*25519", + "website": "https://bittensor.com" + }, + { + "prefix": 14697, + "network": "goro", + "displayName": "GORO Network", + "symbols": [ + "GORO" + ], + "decimals": [ + 9 + ], + "standardAccount": "*25519", + "website": "https://goro.network" + }, + { + "prefix": 14998, + "network": "mosaic-chain", + "displayName": "Mosaic Chain", + "symbols": [ + "MOS" + ], + "decimals": [ + 18 + ], + "standardAccount": "*25519", + "website": "https://mosaicchain.io" + }, + { + "prefix": 29972, + "network": "mythos", + "displayName": "Mythos", + "symbols": [ + "MYTH" + ], + "decimals": [ + 18 + ], + "standardAccount": "secp256k1", + "website": "https://mythos.foundation" + }, + { + "prefix": 8888, + "network": "xcavate", + "displayName": "Xcavate Protocol", + "symbols": [ + "XCAV" + ], + "decimals": [ + 12 + ], + "standardAccount": "*25519", + "website": "https://xcavate.io/" + } +] \ No newline at end of file diff --git a/packages/networks/tsconfig.build.json b/packages/networks/tsconfig.build.json new file mode 100644 index 0000000..2950df9 --- /dev/null +++ b/packages/networks/tsconfig.build.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "baseUrl": "..", + "outDir": "./build", + "rootDir": "./src" + }, + "exclude": [ + "**/*.spec.ts", + "**/test/*", + "**/mod.ts" + ], + "references": [ + { "path": "../hw-ledger/tsconfig.build.json" }, + { "path": "../util/tsconfig.build.json" } + ] +} diff --git a/packages/networks/tsconfig.spec.json b/packages/networks/tsconfig.spec.json new file mode 100644 index 0000000..9945b81 --- /dev/null +++ b/packages/networks/tsconfig.spec.json @@ -0,0 +1,18 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "baseUrl": "..", + "outDir": "./build", + "rootDir": "./src", + "emitDeclarationOnly": false, + "noEmit": true + }, + "include": [ + "**/*.spec.ts" + ], + "references": [ + { "path": "../hw-ledger/tsconfig.build.json" }, + { "path": "../networks/tsconfig.build.json" }, + { "path": "../util/tsconfig.build.json" } + ] +} diff --git a/packages/util-crypto/README.md b/packages/util-crypto/README.md new file mode 100644 index 0000000..4129a44 --- /dev/null +++ b/packages/util-crypto/README.md @@ -0,0 +1,17 @@ +# @pezkuwi/util-crypto + +Various useful cyrpto utility functions that are used across all projects in the [@pezkuwi](https://pezkuwi.js.org) namespace. It provides utility functions with additional safety checks, allowing not only for consistent coding, but also reducing the general boilerplate. + +## Usage + +Installation - + +``` +yarn add @pezkuwi/util-crypto +``` + +Functions can be imported as follows: + +```js +import { mnemonicGenerate } from '@pezkuwi/util-crypto'; +``` diff --git a/packages/util-crypto/package.json b/packages/util-crypto/package.json new file mode 100644 index 0000000..e11d71d --- /dev/null +++ b/packages/util-crypto/package.json @@ -0,0 +1,45 @@ +{ + "author": "Jaco Greeff ", + "bugs": "https://github.com/pezkuwichain/pezkuwi-common/issues", + "description": "A collection of useful crypto utilities for @pezkuwi", + "engines": { + "node": ">=18" + }, + "homepage": "https://github.com/pezkuwichain/pezkuwi-common/tree/master/packages/util-crypto#readme", + "license": "Apache-2.0", + "name": "@pezkuwi/util-crypto", + "repository": { + "directory": "packages/util-crypto", + "type": "git", + "url": "https://github.com/pezkuwichain/pezkuwi-common.git" + }, + "sideEffects": [ + "./bundleInit.js", + "./bundleInit.cjs", + "./packageDetect.js", + "./packageDetect.cjs" + ], + "type": "module", + "version": "14.0.1", + "browser": { + "crypto": false, + "stream": false + }, + "main": "index.js", + "dependencies": { + "@noble/curves": "^1.3.0", + "@noble/hashes": "^1.3.3", + "@pezkuwi/networks": "14.0.1", + "@pezkuwi/util": "14.0.1", + "@pezkuwi/wasm-crypto": "^7.5.3", + "@pezkuwi/wasm-util": "^7.5.3", + "@pezkuwi/x-bigint": "14.0.1", + "@pezkuwi/x-randomvalues": "14.0.1", + "@scure/base": "^1.1.7", + "@scure/sr25519": "^0.2.0", + "tslib": "^2.8.0" + }, + "peerDependencies": { + "@pezkuwi/util": "14.0.1" + } +} diff --git a/packages/util-crypto/src/address/addressToEvm.spec.ts b/packages/util-crypto/src/address/addressToEvm.spec.ts new file mode 100644 index 0000000..9227481 --- /dev/null +++ b/packages/util-crypto/src/address/addressToEvm.spec.ts @@ -0,0 +1,16 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { hexToU8a } from '@pezkuwi/util'; + +import { addressToEvm } from './addressToEvm.js'; + +describe('addressToEvm', (): void => { + it('creates a valid known EVM address', (): void => { + expect( + addressToEvm('KWCv1L3QX9LDPwY4VzvLmarEmXjVJidUzZcinvVnmxAJJCBou') + ).toEqual(hexToU8a('0x03b9dc646dd71118e5f7fda681ad9eca36eb3ee9')); + }); +}); diff --git a/packages/util-crypto/src/address/addressToEvm.ts b/packages/util-crypto/src/address/addressToEvm.ts new file mode 100644 index 0000000..278bbce --- /dev/null +++ b/packages/util-crypto/src/address/addressToEvm.ts @@ -0,0 +1,12 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import { decodeAddress } from './decode.js'; + +/** + * @name addressToEvm + * @summary Converts an SS58 address to its corresponding EVM address. + */ +export function addressToEvm (address: string | Uint8Array, ignoreChecksum?: boolean): Uint8Array { + return decodeAddress(address, ignoreChecksum).subarray(0, 20); +} diff --git a/packages/util-crypto/src/address/check.spec.ts b/packages/util-crypto/src/address/check.spec.ts new file mode 100644 index 0000000..8f8d30f --- /dev/null +++ b/packages/util-crypto/src/address/check.spec.ts @@ -0,0 +1,44 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { checkAddress } from './index.js'; + +describe('checkAddress', (): void => { + it('returns [true, null] for Kusama', (): void => { + expect( + checkAddress('FJaco77EJ99VtBmVFibuBJR3x5Qq9KQrgQJvWjqScCcCCae', 2) + ).toEqual([true, null]); + }); + + it('returns [true, null] for Substrate', (): void => { + expect( + checkAddress('5EnxxUmEbw8DkENKiYuZ1DwQuMoB2UWEQJZZXrTsxoz7SpgG', 42) + ).toEqual([true, null]); + }); + + it('fails when an invalid base58 character is supplied', (): void => { + expect( + checkAddress('5EnxIUmEbw8DkENKiYuZ1DwQuMoB2UWEQJZZXrTsxoz7SpgG', 2) + ).toEqual([false, 'Invalid base58 character "I" (0x49) at index 4']); + }); + + it('fails with invalid prefix when checking Substrate against Kusama prefix', (): void => { + expect( + checkAddress('5EnxxUmEbw8DkENKiYuZ1DwQuMoB2UWEQJZZXrTsxoz7SpgG', 2) + ).toEqual([false, 'Prefix mismatch, expected 2, found 42']); + }); + + it('fails with invalid length when some bytes are missing', (): void => { + expect( + checkAddress('y9EMHt34JJo4rWLSaxoLGdYXvjgSXEd4zHUnQgfNzwES8b', 42) + ).toEqual([false, 'Invalid decoded address length']); + }); + + it('fails with invalid length on checksum mismatch', (): void => { + expect( + checkAddress('5GoKvZWG5ZPYL1WUovuHW3zJBWBP5eT8CbqjdRY4Q6iMaDwU', 42) + ).toEqual([false, 'Invalid decoded address checksum']); + }); +}); diff --git a/packages/util-crypto/src/address/check.ts b/packages/util-crypto/src/address/check.ts new file mode 100644 index 0000000..6439ff1 --- /dev/null +++ b/packages/util-crypto/src/address/check.ts @@ -0,0 +1,34 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { Prefix } from './types.js'; + +import { base58Decode } from '../base58/index.js'; +import { checkAddressChecksum } from './checksum.js'; +import { defaults } from './defaults.js'; + +/** + * @name checkAddress + * @summary Validates an ss58 address. + * @description + * From the provided input, validate that the address is a valid input. + */ +export function checkAddress (address: string, prefix: Prefix): [boolean, string | null] { + let decoded; + + try { + decoded = base58Decode(address); + } catch (error) { + return [false, (error as Error).message]; + } + + const [isValid,,, ss58Decoded] = checkAddressChecksum(decoded); + + if (ss58Decoded !== prefix) { + return [false, `Prefix mismatch, expected ${prefix}, found ${ss58Decoded}`]; + } else if (!defaults.allowedEncodedLengths.includes(decoded.length)) { + return [false, 'Invalid decoded address length']; + } + + return [isValid, isValid ? null : 'Invalid decoded address checksum']; +} diff --git a/packages/util-crypto/src/address/checksum.spec.ts b/packages/util-crypto/src/address/checksum.spec.ts new file mode 100644 index 0000000..a5f4ca1 --- /dev/null +++ b/packages/util-crypto/src/address/checksum.spec.ts @@ -0,0 +1,45 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { base58Decode } from '../base58/index.js'; +import { checkAddressChecksum } from './checksum.js'; + +describe('checkAddressChecksum', (): void => { + it('correctly extracts the info from a 1-byte-prefix address', (): void => { + expect( + checkAddressChecksum(base58Decode('F3opxRbN5ZbjJNU511Kj2TLuzFcDq9BGduA9TgiECafpg29')) + ).toEqual([true, 33, 1, 2]); + }); + + it('correctly extracts the info from a 2-byte-prefix address (66)', (): void => { + expect( + checkAddressChecksum(base58Decode('cTGShekJ1L1UKFZR9xmv9UTJod7vqjFAPo4sDhXih2c3y1yLS')) + ).toEqual([true, 34, 2, 66]); + }); + + it('correctly extracts the info from a 2-byte-prefix address (69)', (): void => { + expect( + checkAddressChecksum(base58Decode('cnVvyMzRdqjwejTFuByQQ4w2yu78V2hpFixjHQz5zr6NSYsxA')) + ).toEqual([true, 34, 2, 69]); + }); + + it('correctly extracts the info from a 2-byte-prefix address (252)', (): void => { + expect( + checkAddressChecksum(base58Decode('xw8Ffc2SZtDqUJKd9Ky4vc7PRz2D2asuVkEEzf3WGAbw9cnfq')) + ).toEqual([true, 34, 2, 252]); + }); + + it('correctly extracts the info from a 2-byte-prefix address (255)', (): void => { + expect( + checkAddressChecksum(base58Decode('yGHU8YKprxHbHdEv7oUK4rzMZXtsdhcXVG2CAMyC9WhzhjH2k')) + ).toEqual([true, 34, 2, 255]); + }); + + it('correctly extracts the info from a 2-byte-prefix address (ecdsa, from Substrate)', (): void => { + expect( + checkAddressChecksum(base58Decode('4pbsSkWcBaYoFHrKJZp5fDVUKbqSYD9dhZZGvpp3vQ5ysVs5ybV')) + ).toEqual([true, 35, 2, 200]); + }); +}); diff --git a/packages/util-crypto/src/address/checksum.ts b/packages/util-crypto/src/address/checksum.ts new file mode 100644 index 0000000..2907ffd --- /dev/null +++ b/packages/util-crypto/src/address/checksum.ts @@ -0,0 +1,25 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import { sshash } from './sshash.js'; + +export function checkAddressChecksum (decoded: Uint8Array): [boolean, number, number, number] { + const ss58Length = (decoded[0] & 0b0100_0000) ? 2 : 1; + const ss58Decoded = ss58Length === 1 + ? decoded[0] + : ((decoded[0] & 0b0011_1111) << 2) | (decoded[1] >> 6) | ((decoded[1] & 0b0011_1111) << 8); + + // 32/33 bytes public + 2 bytes checksum + prefix + const isPublicKey = [34 + ss58Length, 35 + ss58Length].includes(decoded.length); + const length = decoded.length - (isPublicKey ? 2 : 1); + + // calculate the hash and do the checksum byte checks + const hash = sshash(decoded.subarray(0, length)); + const isValid = (decoded[0] & 0b1000_0000) === 0 && ![46, 47].includes(decoded[0]) && ( + isPublicKey + ? decoded[decoded.length - 2] === hash[0] && decoded[decoded.length - 1] === hash[1] + : decoded[decoded.length - 1] === hash[0] + ); + + return [isValid, length, ss58Length, ss58Decoded]; +} diff --git a/packages/util-crypto/src/address/decode.spec.ts b/packages/util-crypto/src/address/decode.spec.ts new file mode 100644 index 0000000..ac02755 --- /dev/null +++ b/packages/util-crypto/src/address/decode.spec.ts @@ -0,0 +1,138 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { hexToU8a, stringToU8a, u8aToHex } from '@pezkuwi/util'; + +import { ALICE_PUBLIC_SR } from './encode.spec.js'; +import { decodeAddress } from './index.js'; + +describe('decodeAddress', (): void => { + it('decodes an address', (): void => { + expect( + decodeAddress('5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY') + ).toEqual( + ALICE_PUBLIC_SR + ); + }); + + it('decodes the council address', (): void => { + expect( + u8aToHex(decodeAddress('F3opxRbN5ZbjJNU511Kj2TLuzFcDq9BGduA9TgiECafpg29')) + ).toEqual(u8aToHex(stringToU8a('modlpy/trsry'.padEnd(32, '\0')))); + }); + + it('converts a publicKey (u8a) as-is', (): void => { + expect( + decodeAddress(new Uint8Array([1, 2, 3])) + ).toEqual( + new Uint8Array([1, 2, 3]) + ); + }); + + it('converts a publicKey (hex) as-is', (): void => { + expect( + decodeAddress('0x01020304') + ).toEqual( + new Uint8Array([1, 2, 3, 4]) + ); + }); + + it('decodes a short address', (): void => { + expect( + decodeAddress('F7NZ') + ).toEqual(new Uint8Array([1])); + }); + + it('decodes a 1-byte accountId (with prefix)', (): void => { + expect( + decodeAddress('g4b', false, 2) + ).toEqual(new Uint8Array([1])); + }); + + it('decodes a 2-byte accountId', (): void => { + expect( + decodeAddress('3xygo', false, 2) + ).toEqual(new Uint8Array([0, 1])); + }); + + it('encodes a 4-byte address', (): void => { + expect( + decodeAddress('zswfoZa', false, 2) + ).toEqual(new Uint8Array([1, 2, 3, 4])); + }); + + it('decodes a 8-byte address', (): void => { + expect( + decodeAddress('848Gh2GcGaZia', false, 2) + ).toEqual(new Uint8Array([42, 44, 10, 0, 0, 0, 0, 0])); + }); + + it('decodes a 33-byte address', (): void => { + expect( + decodeAddress('KWCv1L3QX9LDPwY4VzvLmarEmXjVJidUzZcinvVnmxAJJCBou') + ).toEqual( + hexToU8a('0x03b9dc646dd71118e5f7fda681ad9eca36eb3ee96f344f582fbe7b5bcdebb13077') + ); + }); + + it('decodes a 2-byte prefix (65)', (): void => { + expect( + decodeAddress('cLtA6nCDyvwKcEHH4QkZDSHMhS9s78BvUJUsKUbUAn1Jc2SCF') + ).toEqual( + hexToU8a('0x08e8969768fc14399930d4b8d693f68a2ff6c6a597325d6946095e5e9d9d1b0e') + ); + }); + + it('decodes a 2-byte prefix (69)', (): void => { + expect( + decodeAddress('cnUaoo5wodnTVA4bnr4woSweto8hWZADUvLFXkR9Q6U7BRsbF') + ).toEqual( + hexToU8a('0x88eafe0305d460d1695cf34c2f786050df8e40d215e488790cc70929c9e8316d') + ); + }); + + it('decodes a 2-byte prefix (252)', (): void => { + expect( + decodeAddress('xw9Hca4RJTmBRgzJT4ieJBh7XCK9gE3NXBDSEmgGHd4TCrbnG') + ).toEqual( + hexToU8a('0xfc422da6c3bc6dfa2a436a506428072941662f816987baaa8914e02ff5947f4b') + ); + }); + + it('decodes a 2-byte prefix (255)', (): void => { + expect( + decodeAddress('yGHU8YKprxHbHdEv7oUK4rzMZXtsdhcXVG2CAMyC9WhzhjH2k') + ).toEqual( + decodeAddress('5GoKvZWG5ZPYL1WUovuHW3zJBWBP5eT8CbqjdRY4Q6iMaQua') + ); + }); + + it('decodes a 2-byte prefix (ecdsa, from Substrate)', (): void => { + expect( + u8aToHex(decodeAddress('4pbsSkWcBaYoFHrKJZp5fDVUKbqSYD9dhZZGvpp3vQ5ysVs5ybV')) + ).toEqual('0x035676109c54b9a16d271abeb4954316a40a32bcce023ac14c8e26e958aa68fba9'); + }); + + it('fails when length is invalid', (): void => { + expect( + (): Uint8Array => decodeAddress('y9EMHt34JJo4rWLSaxoLGdYXvjgSXEd4zHUnQgfNzwES8b') + ).toThrow(/address length/); + }); + + it('fails when the checksum does not match', (): void => { + expect( + (): Uint8Array => decodeAddress('5GoKvZWG5ZPYL1WUovuHW3zJBWBP5eT8CbqjdRY4Q6iMa9cj') + ).toThrow(/address checksum/); + expect( + (): Uint8Array => decodeAddress('5GoKvZWG5ZPYL1WUovuHW3zJBWBP5eT8CbqjdRY4Q6iMaDwU') + ).toThrow(/address checksum/); + }); + + it('fails when invalid base58 encoded address is found', (): void => { + expect( + () => u8aToHex(decodeAddress('F3opIRbN5ZbjJNU511Kj2TLuzFcDq9BGduA9TgiECafpg29')) + ).toThrow(/Decoding F3opIRbN5ZbjJNU511Kj2TLuzFcDq9BGduA9TgiECafpg29: Invalid base58 character "I" \(0x49\) at index 4/); + }); +}); diff --git a/packages/util-crypto/src/address/decode.ts b/packages/util-crypto/src/address/decode.ts new file mode 100644 index 0000000..3d64626 --- /dev/null +++ b/packages/util-crypto/src/address/decode.ts @@ -0,0 +1,41 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { Prefix } from './types.js'; + +// Original implementation: https://github.com/paritytech/polka-ui/blob/4858c094684769080f5811f32b081dd7780b0880/src/polkadot.js#L6 +import { isHex, isU8a, u8aToU8a } from '@pezkuwi/util'; + +import { base58Decode } from '../base58/index.js'; +import { checkAddressChecksum } from './checksum.js'; +import { defaults } from './defaults.js'; + +export function decodeAddress (encoded?: string | Uint8Array | null, ignoreChecksum?: boolean, ss58Format: Prefix = -1): Uint8Array { + if (!encoded) { + throw new Error('Invalid empty address passed'); + } + + if (isU8a(encoded) || isHex(encoded)) { + return u8aToU8a(encoded); + } + + try { + const decoded = base58Decode(encoded); + + if (!defaults.allowedEncodedLengths.includes(decoded.length)) { + throw new Error('Invalid decoded address length'); + } + + const [isValid, endPos, ss58Length, ss58Decoded] = checkAddressChecksum(decoded); + + if (!isValid && !ignoreChecksum) { + throw new Error('Invalid decoded address checksum'); + } else if (ss58Format !== -1 && ss58Format !== ss58Decoded) { + throw new Error(`Expected ss58Format ${ss58Format}, received ${ss58Decoded}`); + } + + return decoded.slice(ss58Length, endPos); + } catch (error) { + throw new Error(`Decoding ${encoded}: ${(error as Error).message}`); + } +} diff --git a/packages/util-crypto/src/address/defaults.ts b/packages/util-crypto/src/address/defaults.ts new file mode 100644 index 0000000..bee3f98 --- /dev/null +++ b/packages/util-crypto/src/address/defaults.ts @@ -0,0 +1,12 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import { availableNetworks } from '../networks.js'; + +export const defaults = { + allowedDecodedLengths: [1, 2, 4, 8, 32, 33], + // publicKey has prefix + 2 checksum bytes, short only prefix + 1 checksum byte + allowedEncodedLengths: [3, 4, 6, 10, 35, 36, 37, 38], + allowedPrefix: availableNetworks.map(({ prefix }) => prefix), + prefix: 42 +}; diff --git a/packages/util-crypto/src/address/derive.spec.ts b/packages/util-crypto/src/address/derive.spec.ts new file mode 100644 index 0000000..dfc2be8 --- /dev/null +++ b/packages/util-crypto/src/address/derive.spec.ts @@ -0,0 +1,26 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { waitReady } from '@pezkuwi/wasm-crypto'; + +import { deriveAddress } from './index.js'; + +describe('deriveAddress', (): void => { + beforeEach(async (): Promise => { + await waitReady(); + }); + + it('derives a known path', (): void => { + expect( + deriveAddress('5CZtJLXtVzrBJq1fMWfywDa6XuRwXekGdShPR4b8i9GWSbzB', '/joe/polkadot/0') + ).toEqual('5GZ4srnepXvdsuNVoxCGyVZd8ScDm4gkGLTKuaGARy9akjTa'); + }); + + it('fails on hard paths', (): void => { + expect( + () => deriveAddress('5CZtJLXtVzrBJq1fMWfywDa6XuRwXekGdShPR4b8i9GWSbzB', '//bob') + ).toThrow(/Expected suri to contain a combination of non-hard paths/); + }); +}); diff --git a/packages/util-crypto/src/address/derive.ts b/packages/util-crypto/src/address/derive.ts new file mode 100644 index 0000000..5c8e954 --- /dev/null +++ b/packages/util-crypto/src/address/derive.ts @@ -0,0 +1,36 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { DeriveJunction } from '../key/DeriveJunction.js'; +import type { Prefix } from './types.js'; + +import { keyExtractPath } from '../key/index.js'; +import { sr25519DerivePublic } from '../sr25519/index.js'; +import { decodeAddress } from './decode.js'; +import { encodeAddress } from './encode.js'; + +function filterHard ({ isHard }: DeriveJunction): boolean { + return isHard; +} + +/** + * @name deriveAddress + * @summary Creates a sr25519 derived address from the supplied and path. + * @description + * Creates a sr25519 derived address based on the input address/publicKey and the uri supplied. + */ +export function deriveAddress (who: string | Uint8Array, suri: string, ss58Format?: Prefix): string { + const { path } = keyExtractPath(suri); + + if (!path.length || path.every(filterHard)) { + throw new Error('Expected suri to contain a combination of non-hard paths'); + } + + let publicKey = decodeAddress(who); + + for (const { chainCode } of path) { + publicKey = sr25519DerivePublic(publicKey, chainCode); + } + + return encodeAddress(publicKey, ss58Format); +} diff --git a/packages/util-crypto/src/address/encode.spec.ts b/packages/util-crypto/src/address/encode.spec.ts new file mode 100644 index 0000000..91dda97 --- /dev/null +++ b/packages/util-crypto/src/address/encode.spec.ts @@ -0,0 +1,177 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { encodeAddress } from './index.js'; + +// eslint-disable-next-line jest/no-export +export const ALICE_PUBLIC_SR = new Uint8Array([212, 53, 147, 199, 21, 253, 211, 28, 97, 20, 26, 189, 4, 169, 159, 214, 130, 44, 133, 88, 133, 76, 205, 227, 154, 86, 132, 231, 165, 109, 162, 125]); + +// eslint-disable-next-line jest/no-export +export const ALICE_PUBLIC_ED = new Uint8Array([209, 114, 167, 76, 218, 76, 134, 89, 18, 195, 43, 160, 168, 10, 87, 174, 105, 171, 174, 65, 14, 92, 203, 89, 222, 232, 78, 47, 68, 50, 219, 79]); + +const SUBKEY = [ + { + // substrate default + address: '5DA4D4GL5iakrn22h5uKoevgvo18Pqj5BcdEUv8etEDPdijA', + publicKey: '0x3050f8456519829fe03302da802d22d3233a5f4037b9a3e2bcc403ccfcb2d735', + ss58Format: 42 + }, + { + // aventus + address: 'cLtA6nCDyvwKcEHH4QkZDSHMhS9s78BvUJUsKUbUAn1Jc2SCF', + publicKey: '0x08e8969768fc14399930d4b8d693f68a2ff6c6a597325d6946095e5e9d9d1b0e', + ss58Format: 65 + }, + { + // crust + address: 'cTGShekJ1L1UKFZR9xmv9UTJod7vqjFAPo4sDhXih2c3y1yLS', + publicKey: '0x04a047d52fe542484c69bc528990cfeaf3a663dded0638ee1b51cf78bacd1072', + ss58Format: 66 + }, + { + // sora + address: 'cnVRwXfAnz3RSVQyBUC8f8McrK3YBX2QYd4WoctpeSC6VTJYm', + publicKey: '0xae640d53cfa815f4a6a50ae70235cd7d9d134d0f1c3a4ccd118e321dfb6ab51f', + ss58Format: 69 + }, + { + // ecdsa + address: '4pbsSkWcBaYoFHrKJZp5fDVUKbqSYD9dhZZGvpp3vQ5ysVs5ybV', + publicKey: '0x035676109c54b9a16d271abeb4954316a40a32bcce023ac14c8e26e958aa68fba9', + ss58Format: 200 + }, + { + // social-network + address: 'xw5g1Eec8LT99pZLZMaTWwrwvNtfM6vrSuZeVbtEszCDUwByg', + publicKey: '0x5c64f1151f0ce4358c27238fb20c88e7c899825436f565410724c8c2c5add869', + ss58Format: 252 + }, + { + address: 'yGF4JP7q5AK46d1FPCEm9sYQ4KooSjHMpyVAjLnsCSWVafPnf', + publicKey: '0x66cd6cf085627d6c85af1aaf2bd10cf843033e929b4e3b1c2ba8e4aa46fe111b', + ss58Format: 255 + }, + { + address: 'yGDYxQatQwuxqT39Zs4LtcTnpzE12vXb7ZJ6xpdiHv6gTu1hF', + publicKey: '0x242fd5a078ac6b7c3c2531e9bcf1314343782aeb58e7bc6880794589e701db55', + ss58Format: 255 + }, + { + address: 'mHm8k9Emsvyfp3piCauSH684iA6NakctF8dySQcX94GDdrJrE', + publicKey: '0x44d5a3ac156335ea99d33a83c57c7146c40c8e2260a8a4adf4e7a86256454651', + ss58Format: 4242 + }, + { + address: 'r6Gr4gaMP8TsjhFbqvZhv3YvnasugLiRJpzpRHifsqqG18UXa', + publicKey: '0x88f01441682a17b52d6ae12d1a5670cf675fd254897efabaa5069eb3a701ab73', + ss58Format: 14269 + } +]; + +describe('encode', (): void => { + it('encodes an address to a valid value', (): void => { + expect( + encodeAddress(ALICE_PUBLIC_ED) + ).toEqual('5GoKvZWG5ZPYL1WUovuHW3zJBWBP5eT8CbqjdRY4Q6iMaQua'); + }); + + it('can re-encode an address', (): void => { + expect( + encodeAddress('5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY', 2) + ).toEqual('HNZata7iMYWmk5RvZRTiAsSDhV8366zq2YGb3tLH5Upf74F'); + }); + + it('can re-encode an address to Polkadot live', (): void => { + expect( + encodeAddress('5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY', 0) + ).toEqual('15oF4uVJwmo4TdGW7VfQxNLavjCXviqxT9S1MgbjMNHr6Sp5'); + }); + + it('fails when non-valid publicKey provided', (): void => { + expect( + (): string => encodeAddress( + ALICE_PUBLIC_ED.slice(0, 30) + ) + ).toThrow(/Expected a valid key/); + }); + + it('encodes a 1-byte address', (): void => { + expect( + encodeAddress( + new Uint8Array([1]) + ) + ).toEqual('F7NZ'); + }); + + it('encodes a 1-byte address (with prefix)', (): void => { + expect( + encodeAddress( + new Uint8Array([1]), 2 + ) + ).toEqual('g4b'); + }); + + it('encodes a 2-byte address', (): void => { + expect( + encodeAddress( + new Uint8Array([0, 1]), 2 + ) + ).toEqual('3xygo'); + }); + + it('encodes a 4-byte address', (): void => { + expect( + encodeAddress( + new Uint8Array([1, 2, 3, 4]), 2 + ) + ).toEqual('zswfoZa'); + }); + + it('encodes a 8-byte address', (): void => { + expect( + encodeAddress( + new Uint8Array([42, 44, 10, 0, 0, 0, 0, 0]), 2 + ) + ).toEqual('848Gh2GcGaZia'); + }); + + it('encodes an 33-byte address', (): void => { + expect( + encodeAddress('0x03b9dc646dd71118e5f7fda681ad9eca36eb3ee96f344f582fbe7b5bcdebb13077') + ).toEqual('KWCv1L3QX9LDPwY4VzvLmarEmXjVJidUzZcinvVnmxAJJCBou'); + }); + + it('encodes with 2 byte prefix', (): void => { + expect( + encodeAddress(ALICE_PUBLIC_ED, 255) + ).toEqual('yGHU8YKprxHbHdEv7oUK4rzMZXtsdhcXVG2CAMyC9WhzhjH2k'); + }); + + SUBKEY.forEach(({ address, publicKey, ss58Format }, index): void => { + it(`encodes with Subkey equality (${index} - ${ss58Format})`, (): void => { + expect( + encodeAddress(publicKey, ss58Format) + ).toEqual(address); + }); + }); + + it('does not encode for > 16,383, < 0', (): void => { + expect( + () => encodeAddress(ALICE_PUBLIC_ED, -1) + ).toThrow(/range ss58Format specified/); + expect( + () => encodeAddress(ALICE_PUBLIC_ED, 16384) + ).toThrow(/range ss58Format specified/); + }); + + it('does not encode reserved', (): void => { + expect( + () => encodeAddress(ALICE_PUBLIC_ED, 46) + ).toThrow(/range ss58Format specified/); + expect( + () => encodeAddress(ALICE_PUBLIC_ED, 47) + ).toThrow(/range ss58Format specified/); + }); +}); diff --git a/packages/util-crypto/src/address/encode.ts b/packages/util-crypto/src/address/encode.ts new file mode 100644 index 0000000..700a543 --- /dev/null +++ b/packages/util-crypto/src/address/encode.ts @@ -0,0 +1,43 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { Prefix } from './types.js'; + +// Original implementation: https://github.com/paritytech/polka-ui/blob/4858c094684769080f5811f32b081dd7780b0880/src/polkadot.js#L34 +import { u8aConcat } from '@pezkuwi/util'; + +import { base58Encode } from '../base58/index.js'; +import { decodeAddress } from './decode.js'; +import { defaults } from './defaults.js'; +import { sshash } from './sshash.js'; + +export function encodeAddress (key: string | Uint8Array, ss58Format: Prefix = defaults.prefix): string { + // decode it, this means we can re-encode an address + const u8a = decodeAddress(key); + + if ((ss58Format < 0) || (ss58Format > 16383 && !ss58Exceptions.includes(ss58Format)) || [46, 47].includes(ss58Format)) { + throw new Error('Out of range ss58Format specified'); + } else if (!defaults.allowedDecodedLengths.includes(u8a.length)) { + throw new Error(`Expected a valid key to convert, with length ${defaults.allowedDecodedLengths.join(', ')}`); + } + + const input = u8aConcat( + ss58Format < 64 + ? [ss58Format] + : [ + ((ss58Format & 0b0000_0000_1111_1100) >> 2) | 0b0100_0000, + (ss58Format >> 8) | ((ss58Format & 0b0000_0000_0000_0011) << 6) + ], + u8a + ); + + return base58Encode( + u8aConcat( + input, + sshash(input).subarray(0, [32, 33].includes(u8a.length) ? 2 : 1) + ) + ); +} + +// Exceptions like 29972 (Mythos chain) which uses Ethereum style account (not ss58 Encoded) +const ss58Exceptions = [29972]; diff --git a/packages/util-crypto/src/address/encodeDerived.spec.ts b/packages/util-crypto/src/address/encodeDerived.spec.ts new file mode 100644 index 0000000..f0c5f06 --- /dev/null +++ b/packages/util-crypto/src/address/encodeDerived.spec.ts @@ -0,0 +1,14 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { encodeDerivedAddress } from './index.js'; + +describe('encodeDerivedAddress', (): void => { + it('creates a valid known derived address', (): void => { + expect( + encodeDerivedAddress('5GvUh7fGKsdBEh5XpypkfkGuf7j3vXLxH9BdxjxnJNVXRYi1', 0) + ).toEqual('5E5XxqPxm7QbEs6twYfp3tyjXidn4kqRrNPH4o6JK9JSLUeD'); + }); +}); diff --git a/packages/util-crypto/src/address/encodeDerived.ts b/packages/util-crypto/src/address/encodeDerived.ts new file mode 100644 index 0000000..75e4f87 --- /dev/null +++ b/packages/util-crypto/src/address/encodeDerived.ts @@ -0,0 +1,19 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { BN } from '@pezkuwi/util'; +import type { Prefix } from './types.js'; + +import { decodeAddress } from './decode.js'; +import { encodeAddress } from './encode.js'; +import { createKeyDerived } from './keyDerived.js'; + +/** + * @name encodeDerivedAddress + * @summary Creates a derived address as used in Substrate utility. + * @description + * Creates a Substrate derived address based on the input address/publicKey and the index supplied. + */ +export function encodeDerivedAddress (who: string | Uint8Array, index: bigint | BN | number, ss58Format?: Prefix): string { + return encodeAddress(createKeyDerived(decodeAddress(who), index), ss58Format); +} diff --git a/packages/util-crypto/src/address/encodeMulti.spec.ts b/packages/util-crypto/src/address/encodeMulti.spec.ts new file mode 100644 index 0000000..6d6e308 --- /dev/null +++ b/packages/util-crypto/src/address/encodeMulti.spec.ts @@ -0,0 +1,18 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { encodeMultiAddress } from './index.js'; + +describe('encodeMultiAddress', (): void => { + it('creates a valid known multi address', (): void => { + expect( + encodeMultiAddress([ + '5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY', + '5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty', + '5FLSigC9HGRKVhB9FiEo4Y3koPsNmBmLJbpXg2mp1hXcS59Y' + ], 2) + ).toEqual('5DjYJStmdZ2rcqXbXGX7TW85JsrW6uG4y9MUcLq2BoPMpRA7'); + }); +}); diff --git a/packages/util-crypto/src/address/encodeMulti.ts b/packages/util-crypto/src/address/encodeMulti.ts new file mode 100644 index 0000000..8c08863 --- /dev/null +++ b/packages/util-crypto/src/address/encodeMulti.ts @@ -0,0 +1,18 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { BN } from '@pezkuwi/util'; +import type { Prefix } from './types.js'; + +import { encodeAddress } from './encode.js'; +import { createKeyMulti } from './keyMulti.js'; + +/** + * @name encodeMultiAddress + * @summary Creates a multisig address. + * @description + * Creates a Substrate multisig address based on the input address and the required threshold. + */ +export function encodeMultiAddress (who: (string | Uint8Array)[], threshold: bigint | BN | number, ss58Format?: Prefix): string { + return encodeAddress(createKeyMulti(who, threshold), ss58Format); +} diff --git a/packages/util-crypto/src/address/eq.spec.ts b/packages/util-crypto/src/address/eq.spec.ts new file mode 100644 index 0000000..b78fbc0 --- /dev/null +++ b/packages/util-crypto/src/address/eq.spec.ts @@ -0,0 +1,45 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { ALICE_PUBLIC_SR } from './encode.spec.js'; +import { addressEq } from './index.js'; + +describe('addressEq', (): void => { + it('returns false with non-equal', (): void => { + expect( + addressEq( + '5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY', + '5EnxxUmEbw8DkENKiYuZ1DwQuMoB2UWEQJZZXrTsxoz7SpgG' + ) + ).toEqual(false); + }); + + it('returns true for equal, matching prefix', (): void => { + expect( + addressEq( + '5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY', + '5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY' + ) + ).toEqual(true); + }); + + it('returns true for equal, non-matching prefix', (): void => { + expect( + addressEq( + '5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY', + '15oF4uVJwmo4TdGW7VfQxNLavjCXviqxT9S1MgbjMNHr6Sp5' + ) + ).toEqual(true); + }); + + it('returns true for equal, address vs publicKey', (): void => { + expect( + addressEq( + '5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY', + ALICE_PUBLIC_SR + ) + ).toEqual(true); + }); +}); diff --git a/packages/util-crypto/src/address/eq.ts b/packages/util-crypto/src/address/eq.ts new file mode 100644 index 0000000..057cedc --- /dev/null +++ b/packages/util-crypto/src/address/eq.ts @@ -0,0 +1,24 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import { u8aEq } from '@pezkuwi/util'; + +import { decodeAddress } from './decode.js'; + +/** + * @name addressEq + * @summary Compares two addresses, either in ss58, Uint8Array or hex format. + * @description + * For the input values, return true is the underlying public keys do match. + * @example + *
+ * + * ```javascript + * import { u8aEq } from '@pezkuwi/util'; + * + * u8aEq(new Uint8Array([0x68, 0x65]), new Uint8Array([0x68, 0x65])); // true + * ``` + */ +export function addressEq (a: string | Uint8Array, b: string | Uint8Array): boolean { + return u8aEq(decodeAddress(a), decodeAddress(b)); +} diff --git a/packages/util-crypto/src/address/evmToAddress.spec.ts b/packages/util-crypto/src/address/evmToAddress.spec.ts new file mode 100644 index 0000000..2d1755e --- /dev/null +++ b/packages/util-crypto/src/address/evmToAddress.spec.ts @@ -0,0 +1,20 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { evmToAddress } from './index.js'; + +describe('evmToAddress', (): void => { + it('creates a valid known SS58 address', (): void => { + expect( + evmToAddress('0xd43593c715fdd31c61141abd04a99fd6822c8558', 42, 'blake2') + ).toEqual('5FrLxJsyJ5x9n2rmxFwosFraxFCKcXZDngRLNectCn64UjtZ'); + }); + + it('fails when length is invalid', (): void => { + expect( + () => evmToAddress('0x1234567890ABCDEF1234567890ABCDEF') + ).toThrow(/address length/); + }); +}); diff --git a/packages/util-crypto/src/address/evmToAddress.ts b/packages/util-crypto/src/address/evmToAddress.ts new file mode 100644 index 0000000..3b0ac23 --- /dev/null +++ b/packages/util-crypto/src/address/evmToAddress.ts @@ -0,0 +1,24 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { HashType } from '../secp256k1/types.js'; +import type { Prefix } from './types.js'; + +import { u8aConcat } from '@pezkuwi/util'; + +import { hasher } from '../secp256k1/hasher.js'; +import { encodeAddress } from './encode.js'; + +/** + * @name evmToAddress + * @summary Converts an EVM address to its corresponding SS58 address. + */ +export function evmToAddress (evmAddress: string | Uint8Array, ss58Format?: Prefix, hashType: HashType = 'blake2'): string { + const message = u8aConcat('evm:', evmAddress); + + if (message.length !== 24) { + throw new Error(`Converting ${evmAddress as string}: Invalid evm address length`); + } + + return encodeAddress(hasher(hashType, message), ss58Format); +} diff --git a/packages/util-crypto/src/address/index.ts b/packages/util-crypto/src/address/index.ts new file mode 100644 index 0000000..1212234 --- /dev/null +++ b/packages/util-crypto/src/address/index.ts @@ -0,0 +1,21 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +export { addressToEvm } from './addressToEvm.js'; +export { checkAddress } from './check.js'; +export { checkAddressChecksum } from './checksum.js'; +export { decodeAddress } from './decode.js'; +export { deriveAddress } from './derive.js'; +export { encodeAddress } from './encode.js'; +export { encodeDerivedAddress } from './encodeDerived.js'; +export { encodeMultiAddress } from './encodeMulti.js'; +export { addressEq } from './eq.js'; +export { evmToAddress } from './evmToAddress.js'; +export { isAddress } from './is.js'; +export { createKeyDerived } from './keyDerived.js'; +export { createKeyMulti } from './keyMulti.js'; +export { sortAddresses } from './sort.js'; +export { validateAddress } from './validate.js'; + +// eslint-disable-next-line deprecation/deprecation +export { setSS58Format } from './setSS58Format.js'; diff --git a/packages/util-crypto/src/address/is.spec.ts b/packages/util-crypto/src/address/is.spec.ts new file mode 100644 index 0000000..7776ba6 --- /dev/null +++ b/packages/util-crypto/src/address/is.spec.ts @@ -0,0 +1,113 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { isAddress } from './index.js'; + +describe('isAddress', (): void => { + it('decodes an address', (): void => { + expect( + isAddress('5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY') + ).toEqual(true); + }); + + it('decodes the council address', (): void => { + expect( + isAddress('F3opxRbN5ZbjJNU511Kj2TLuzFcDq9BGduA9TgiECafpg29') + ).toEqual(true); + }); + + it('converts a publicKey (hex) as-is', (): void => { + expect( + isAddress('0x01020304') + ).toEqual(true); + }); + + it('decodes a short address', (): void => { + expect( + isAddress('F7NZ') + ).toEqual(true); + }); + + it('decodes a 1-byte accountId (with prefix)', (): void => { + expect( + isAddress('g4b', false, 2) + ).toEqual(true); + }); + + it('decodes a 2-byte accountId', (): void => { + expect( + isAddress('3xygo', false, 2) + ).toEqual(true); + }); + + it('encodes a 4-byte address', (): void => { + expect( + isAddress('zswfoZa', false, 2) + ).toEqual(true); + }); + + it('decodes a 8-byte address', (): void => { + expect( + isAddress('848Gh2GcGaZia', false, 2) + ).toEqual(true); + }); + + it('decodes a 33-byte address', (): void => { + expect( + isAddress('KWCv1L3QX9LDPwY4VzvLmarEmXjVJidUzZcinvVnmxAJJCBou') + ).toEqual(true); + }); + + it('decodes a 2-byte prefix (65)', (): void => { + expect( + isAddress('cLtA6nCDyvwKcEHH4QkZDSHMhS9s78BvUJUsKUbUAn1Jc2SCF') + ).toEqual(true); + }); + + it('decodes a 2-byte prefix (69)', (): void => { + expect( + isAddress('cnUaoo5wodnTVA4bnr4woSweto8hWZADUvLFXkR9Q6U7BRsbF') + ).toEqual(true); + }); + + it('decodes a 2-byte prefix (252)', (): void => { + expect( + isAddress('xw9Hca4RJTmBRgzJT4ieJBh7XCK9gE3NXBDSEmgGHd4TCrbnG') + ).toEqual(true); + }); + + it('decodes a 2-byte prefix (255)', (): void => { + expect( + isAddress('yGHU8YKprxHbHdEv7oUK4rzMZXtsdhcXVG2CAMyC9WhzhjH2k') + ).toEqual(true); + }); + + it('decodes a 2-byte prefix (ecdsa, from Substrate)', (): void => { + expect( + isAddress('4pbsSkWcBaYoFHrKJZp5fDVUKbqSYD9dhZZGvpp3vQ5ysVs5ybV') + ).toEqual(true); + }); + + it('fails when length is invalid', (): void => { + expect( + isAddress('y9EMHt34JJo4rWLSaxoLGdYXvjgSXEd4zHUnQgfNzwES8b') + ).toEqual(false); + }); + + it('fails when the checksum does not match', (): void => { + expect( + isAddress('5GoKvZWG5ZPYL1WUovuHW3zJBWBP5eT8CbqjdRY4Q6iMa9cj') + ).toEqual(false); + expect( + isAddress('5GoKvZWG5ZPYL1WUovuHW3zJBWBP5eT8CbqjdRY4Q6iMaDwU') + ).toEqual(false); + }); + + it('fails when invalid base58 encoded address is found', (): void => { + expect( + isAddress('F3opIRbN5ZbjJNU511Kj2TLuzFcDq9BGduA9TgiECafpg29') + ).toEqual(false); + }); +}); diff --git a/packages/util-crypto/src/address/is.ts b/packages/util-crypto/src/address/is.ts new file mode 100644 index 0000000..c200687 --- /dev/null +++ b/packages/util-crypto/src/address/is.ts @@ -0,0 +1,14 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { Prefix } from './types.js'; + +import { validateAddress } from './validate.js'; + +export function isAddress (address?: string | null, ignoreChecksum?: boolean, ss58Format?: Prefix): address is string { + try { + return validateAddress(address, ignoreChecksum, ss58Format); + } catch { + return false; + } +} diff --git a/packages/util-crypto/src/address/keyDerived.spec.ts b/packages/util-crypto/src/address/keyDerived.spec.ts new file mode 100644 index 0000000..a7bb9b5 --- /dev/null +++ b/packages/util-crypto/src/address/keyDerived.spec.ts @@ -0,0 +1,24 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { createKeyDerived } from './index.js'; + +describe('createKeyDerived', (): void => { + it('matches sub accounts with Rust', (): void => { + expect( + createKeyDerived(new Uint8Array([1, 0, 0, 0, 0, 0, 0, 0]), 0) + ).toEqual( + new Uint8Array([234, 236, 28, 96, 177, 168, 152, 193, 71, 179, 226, 102, 179, 155, 188, 240, 90, 182, 21, 175, 47, 47, 250, 179, 178, 0, 81, 222, 70, 56, 52, 234]) + ); + }); + + it('creates a valid subkey', (): void => { + expect( + createKeyDerived('5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY', 1) + ).toEqual( + new Uint8Array([248, 19, 86, 209, 254, 89, 84, 48, 54, 128, 166, 239, 153, 212, 143, 34, 191, 60, 210, 50, 39, 77, 122, 71, 29, 60, 247, 198, 95, 101, 246, 83]) + ); + }); +}); diff --git a/packages/util-crypto/src/address/keyDerived.ts b/packages/util-crypto/src/address/keyDerived.ts new file mode 100644 index 0000000..ab7d1d1 --- /dev/null +++ b/packages/util-crypto/src/address/keyDerived.ts @@ -0,0 +1,22 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { BN } from '@pezkuwi/util'; + +import { bnToU8a, stringToU8a, u8aConcat } from '@pezkuwi/util'; + +import { blake2AsU8a } from '../blake2/asU8a.js'; +import { BN_LE_16_OPTS } from '../bn.js'; +import { decodeAddress } from './decode.js'; + +const PREFIX = stringToU8a('modlpy/utilisuba'); + +export function createKeyDerived (who: string | Uint8Array, index: bigint | BN | number): Uint8Array { + return blake2AsU8a( + u8aConcat( + PREFIX, + decodeAddress(who), + bnToU8a(index, BN_LE_16_OPTS) + ) + ); +} diff --git a/packages/util-crypto/src/address/keyMulti.spec.ts b/packages/util-crypto/src/address/keyMulti.spec.ts new file mode 100644 index 0000000..87225c2 --- /dev/null +++ b/packages/util-crypto/src/address/keyMulti.spec.ts @@ -0,0 +1,20 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { createKeyMulti } from './index.js'; + +describe('createKeyMulti', (): void => { + it('creates a valid multikey (aligning with Rust, needs sorting)', (): void => { + expect( + createKeyMulti([ + new Uint8Array([1, 0, 0, 0, 0, 0, 0, 0]), + new Uint8Array([3, 0, 0, 0, 0, 0, 0, 0]), + new Uint8Array([2, 0, 0, 0, 0, 0, 0, 0]) + ], 2) + ).toEqual( + new Uint8Array([67, 151, 196, 155, 179, 207, 47, 123, 90, 2, 35, 54, 162, 111, 241, 226, 88, 148, 54, 193, 252, 195, 93, 101, 16, 5, 93, 101, 186, 186, 254, 79]) + ); + }); +}); diff --git a/packages/util-crypto/src/address/keyMulti.ts b/packages/util-crypto/src/address/keyMulti.ts new file mode 100644 index 0000000..363f9a5 --- /dev/null +++ b/packages/util-crypto/src/address/keyMulti.ts @@ -0,0 +1,23 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { BN } from '@pezkuwi/util'; + +import { bnToU8a, compactToU8a, stringToU8a, u8aConcat, u8aSorted } from '@pezkuwi/util'; + +import { blake2AsU8a } from '../blake2/asU8a.js'; +import { BN_LE_16_OPTS } from '../bn.js'; +import { addressToU8a } from './util.js'; + +const PREFIX = stringToU8a('modlpy/utilisuba'); + +export function createKeyMulti (who: (string | Uint8Array)[], threshold: bigint | BN | number): Uint8Array { + return blake2AsU8a( + u8aConcat( + PREFIX, + compactToU8a(who.length), + ...u8aSorted(who.map(addressToU8a)), + bnToU8a(threshold, BN_LE_16_OPTS) + ) + ); +} diff --git a/packages/util-crypto/src/address/setSS58Format.spec.ts b/packages/util-crypto/src/address/setSS58Format.spec.ts new file mode 100644 index 0000000..3830d96 --- /dev/null +++ b/packages/util-crypto/src/address/setSS58Format.spec.ts @@ -0,0 +1,21 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { encodeAddress, setSS58Format } from './index.js'; + +describe('setSS58Format', (): void => { + beforeEach((): void => { + // eslint-disable-next-line deprecation/deprecation + setSS58Format(2); + }); + + it('sets and allows encoding using', (): void => { + expect( + encodeAddress( + new Uint8Array([1]) + ) + ).toEqual('g4b'); + }); +}); diff --git a/packages/util-crypto/src/address/setSS58Format.ts b/packages/util-crypto/src/address/setSS58Format.ts new file mode 100644 index 0000000..dbc91e6 --- /dev/null +++ b/packages/util-crypto/src/address/setSS58Format.ts @@ -0,0 +1,20 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { Prefix } from './types.js'; + +import { logger } from '@pezkuwi/util'; + +import { defaults } from './defaults.js'; + +const l = logger('setSS58Format'); + +/** + * @description Sets the global SS58 format to use for address encoding + * @deprecated Use keyring.setSS58Format + */ +export function setSS58Format (prefix: Prefix): void { + l.warn('Global setting of the ss58Format is deprecated and not recommended. Set format on the keyring (if used) or as part of the address encode function'); + + defaults.prefix = prefix; +} diff --git a/packages/util-crypto/src/address/sort.spec.ts b/packages/util-crypto/src/address/sort.spec.ts new file mode 100644 index 0000000..abaa39f --- /dev/null +++ b/packages/util-crypto/src/address/sort.spec.ts @@ -0,0 +1,22 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { sortAddresses } from './index.js'; + +describe('sortAddresses', (): void => { + it('sorts addresses by the publicKeys', (): void => { + expect( + sortAddresses([ + '5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY', + '5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty', + '5FLSigC9HGRKVhB9FiEo4Y3koPsNmBmLJbpXg2mp1hXcS59Y' + ]) + ).toEqual([ + '5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty', + '5FLSigC9HGRKVhB9FiEo4Y3koPsNmBmLJbpXg2mp1hXcS59Y', + '5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY' + ]); + }); +}); diff --git a/packages/util-crypto/src/address/sort.ts b/packages/util-crypto/src/address/sort.ts new file mode 100644 index 0000000..bd66822 --- /dev/null +++ b/packages/util-crypto/src/address/sort.ts @@ -0,0 +1,17 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { Prefix } from './types.js'; + +import { u8aSorted } from '@pezkuwi/util'; + +import { encodeAddress } from './encode.js'; +import { addressToU8a } from './util.js'; + +export function sortAddresses (addresses: (string | Uint8Array)[], ss58Format?: Prefix): string[] { + const u8aToAddress = (u8a: Uint8Array) => encodeAddress(u8a, ss58Format); + + return u8aSorted( + addresses.map(addressToU8a) + ).map(u8aToAddress); +} diff --git a/packages/util-crypto/src/address/sshash.ts b/packages/util-crypto/src/address/sshash.ts new file mode 100644 index 0000000..e69437e --- /dev/null +++ b/packages/util-crypto/src/address/sshash.ts @@ -0,0 +1,12 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import { stringToU8a, u8aConcat } from '@pezkuwi/util'; + +import { blake2AsU8a } from '../blake2/asU8a.js'; + +const SS58_PREFIX = stringToU8a('SS58PRE'); + +export function sshash (key: Uint8Array): Uint8Array { + return blake2AsU8a(u8aConcat(SS58_PREFIX, key), 512); +} diff --git a/packages/util-crypto/src/address/types.ts b/packages/util-crypto/src/address/types.ts new file mode 100644 index 0000000..0e91f54 --- /dev/null +++ b/packages/util-crypto/src/address/types.ts @@ -0,0 +1,6 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +// FIXME we really want this to map with what is in the allowedSS58 array... i.e. the +// values there. As of now, we just map to number. +export type Prefix = number; diff --git a/packages/util-crypto/src/address/util.ts b/packages/util-crypto/src/address/util.ts new file mode 100644 index 0000000..d686e03 --- /dev/null +++ b/packages/util-crypto/src/address/util.ts @@ -0,0 +1,8 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import { decodeAddress } from './decode.js'; + +export function addressToU8a (who: string | Uint8Array): Uint8Array { + return decodeAddress(who); +} diff --git a/packages/util-crypto/src/address/validate.spec.ts b/packages/util-crypto/src/address/validate.spec.ts new file mode 100644 index 0000000..03ee9f7 --- /dev/null +++ b/packages/util-crypto/src/address/validate.spec.ts @@ -0,0 +1,113 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { validateAddress } from './index.js'; + +describe('validateAddress', (): void => { + it('decodes an address', (): void => { + expect( + validateAddress('5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY') + ).toEqual(true); + }); + + it('decodes the council address', (): void => { + expect( + validateAddress('F3opxRbN5ZbjJNU511Kj2TLuzFcDq9BGduA9TgiECafpg29') + ).toEqual(true); + }); + + it('converts a publicKey (hex) as-is', (): void => { + expect( + validateAddress('0x01020304') + ).toEqual(true); + }); + + it('decodes a short address', (): void => { + expect( + validateAddress('F7NZ') + ).toEqual(true); + }); + + it('decodes a 1-byte accountId (with prefix)', (): void => { + expect( + validateAddress('g4b', false, 2) + ).toEqual(true); + }); + + it('decodes a 2-byte accountId', (): void => { + expect( + validateAddress('3xygo', false, 2) + ).toEqual(true); + }); + + it('encodes a 4-byte address', (): void => { + expect( + validateAddress('zswfoZa', false, 2) + ).toEqual(true); + }); + + it('decodes a 8-byte address', (): void => { + expect( + validateAddress('848Gh2GcGaZia', false, 2) + ).toEqual(true); + }); + + it('decodes a 33-byte address', (): void => { + expect( + validateAddress('KWCv1L3QX9LDPwY4VzvLmarEmXjVJidUzZcinvVnmxAJJCBou') + ).toEqual(true); + }); + + it('decodes a 2-byte prefix (65)', (): void => { + expect( + validateAddress('cLtA6nCDyvwKcEHH4QkZDSHMhS9s78BvUJUsKUbUAn1Jc2SCF') + ).toEqual(true); + }); + + it('decodes a 2-byte prefix (69)', (): void => { + expect( + validateAddress('cnUaoo5wodnTVA4bnr4woSweto8hWZADUvLFXkR9Q6U7BRsbF') + ).toEqual(true); + }); + + it('decodes a 2-byte prefix (252)', (): void => { + expect( + validateAddress('xw9Hca4RJTmBRgzJT4ieJBh7XCK9gE3NXBDSEmgGHd4TCrbnG') + ).toEqual(true); + }); + + it('decodes a 2-byte prefix (255)', (): void => { + expect( + validateAddress('yGHU8YKprxHbHdEv7oUK4rzMZXtsdhcXVG2CAMyC9WhzhjH2k') + ).toEqual(true); + }); + + it('decodes a 2-byte prefix (ecdsa, from Substrate)', (): void => { + expect( + validateAddress('4pbsSkWcBaYoFHrKJZp5fDVUKbqSYD9dhZZGvpp3vQ5ysVs5ybV') + ).toEqual(true); + }); + + it('fails when length is invalid', (): void => { + expect( + () => validateAddress('y9EMHt34JJo4rWLSaxoLGdYXvjgSXEd4zHUnQgfNzwES8b') + ).toThrow(/address length/); + }); + + it('fails when the checksum does not match', (): void => { + expect( + () => validateAddress('5GoKvZWG5ZPYL1WUovuHW3zJBWBP5eT8CbqjdRY4Q6iMa9cj') + ).toThrow(/address checksum/); + expect( + () => validateAddress('5GoKvZWG5ZPYL1WUovuHW3zJBWBP5eT8CbqjdRY4Q6iMaDwU') + ).toThrow(/address checksum/); + }); + + it('fails when invalid base58 encoded address is found', (): void => { + expect( + () => validateAddress('F3opIRbN5ZbjJNU511Kj2TLuzFcDq9BGduA9TgiECafpg29') + ).toThrow(/Decoding F3opIRbN5ZbjJNU511Kj2TLuzFcDq9BGduA9TgiECafpg29: Invalid base58 character "I" \(0x49\) at index 4/); + }); +}); diff --git a/packages/util-crypto/src/address/validate.ts b/packages/util-crypto/src/address/validate.ts new file mode 100644 index 0000000..18ac6ea --- /dev/null +++ b/packages/util-crypto/src/address/validate.ts @@ -0,0 +1,10 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { Prefix } from './types.js'; + +import { decodeAddress } from './decode.js'; + +export function validateAddress (encoded?: string | null, ignoreChecksum?: boolean, ss58Format?: Prefix): encoded is string { + return !!decodeAddress(encoded, ignoreChecksum, ss58Format); +} diff --git a/packages/util-crypto/src/base32/bs32.ts b/packages/util-crypto/src/base32/bs32.ts new file mode 100644 index 0000000..58eb815 --- /dev/null +++ b/packages/util-crypto/src/base32/bs32.ts @@ -0,0 +1,53 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import { utils } from '@scure/base'; + +import { createDecode, createEncode, createIs, createValidate } from './helpers.js'; + +const chars = 'abcdefghijklmnopqrstuvwxyz234567'; + +const config = { + chars, + coder: utils.chain( + // We define our own chain, the default base32 has padding + utils.radix2(5), + utils.alphabet(chars), + { + decode: (input: string) => input.split(''), + encode: (input: string[]) => input.join('') + } + ), + ipfs: 'b', + type: 'base32' +}; + +/** + * @name base32Validate + * @summary Validates a base32 value. + * @description + * Validates that the supplied value is valid base32, throwing exceptions if not + */ +export const base32Validate = /*#__PURE__*/ createValidate(config); + +/** +* @name isBase32 +* @description Checks if the input is in base32, returning true/false +*/ +export const isBase32 = /*#__PURE__*/ createIs(base32Validate); + +/** + * @name base32Decode + * @summary Delookup a base32 value. + * @description + * From the provided input, decode the base32 and return the result as an `Uint8Array`. + */ +export const base32Decode = /*#__PURE__*/ createDecode(config, base32Validate); + +/** +* @name base32Encode +* @summary Creates a base32 value. +* @description +* From the provided input, create the base32 and return the result as a string. +*/ +export const base32Encode = /*#__PURE__*/ createEncode(config); diff --git a/packages/util-crypto/src/base32/decode.spec.ts b/packages/util-crypto/src/base32/decode.spec.ts new file mode 100644 index 0000000..c42b6f1 --- /dev/null +++ b/packages/util-crypto/src/base32/decode.spec.ts @@ -0,0 +1,34 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { u8aToString } from '@pezkuwi/util'; + +import { base32Decode } from './index.js'; + +describe('base32Decode', (): void => { + it('decodes an empty string)', (): void => { + expect( + u8aToString( + base32Decode('') + ) + ).toEqual(''); + }); + + it('decodes a base32', (): void => { + expect( + u8aToString( + base32Decode('irswgzloorzgc3djpjssazlwmvzhs5dinfxgoijb') + ) + ).toEqual('Decentralize everything!!'); + }); + + it('decodes a base32 (ipfsCompat)', (): void => { + expect( + u8aToString( + base32Decode('birswgzloorzgc3djpjssazlwmvzhs5dinfxgoijb', true) + ) + ).toEqual('Decentralize everything!!'); + }); +}); diff --git a/packages/util-crypto/src/base32/encode.spec.ts b/packages/util-crypto/src/base32/encode.spec.ts new file mode 100644 index 0000000..25edc71 --- /dev/null +++ b/packages/util-crypto/src/base32/encode.spec.ts @@ -0,0 +1,30 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { base58Decode } from '../base58/index.js'; +import { base32Encode } from './index.js'; + +describe('base32Encode', (): void => { + it('encodes to a base32', (): void => { + expect( + base32Encode('Decentralize everything!!') + ).toEqual('irswgzloorzgc3djpjssazlwmvzhs5dinfxgoijb'); + }); + + it('encodes to a base32 (ipfs-compat)', (): void => { + expect( + base32Encode('Decentralize everything!!', true) + ).toEqual('birswgzloorzgc3djpjssazlwmvzhs5dinfxgoijb'); + }); + + it('encodes a base58 to a base32', (): void => { + expect( + base32Encode( + base58Decode('zb2rhk6GMPQF3hfzwXTaNYFLKomMeC6UXdUt6jZKPpeVirLtV', true), + true + ) + ).toEqual('bafkreigh2akiscaildcqabsyg3dfr6chu3fgpregiymsck7e7aqa4s52zy'); + }); +}); diff --git a/packages/util-crypto/src/base32/helpers.ts b/packages/util-crypto/src/base32/helpers.ts new file mode 100644 index 0000000..b071d2d --- /dev/null +++ b/packages/util-crypto/src/base32/helpers.ts @@ -0,0 +1,93 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { U8aLike } from '@pezkuwi/util/types'; + +import { u8aToU8a } from '@pezkuwi/util'; + +// re-export the type so *.d.ts files don't have ../src imports +export type { U8aLike } from '@pezkuwi/util/types'; + +interface Coder { + decode: (value: string) => Uint8Array; + encode: (value: Uint8Array) => string; +} + +interface Config { + chars: string; + coder: Coder; + ipfs?: string; + regex?: RegExp; + type: string; + withPadding?: boolean; +} + +type DecodeFn = (value: string, ipfsCompat?: boolean) => Uint8Array; + +type EncodeFn = (value: U8aLike, ipfsCompat?: boolean) => string; + +type ValidateFn = (value?: unknown, ipfsCompat?: boolean) => value is string; + +/** @internal */ +export function createDecode ({ coder, ipfs }: Config, validate: ValidateFn): DecodeFn { + return (value: string, ipfsCompat?: boolean): Uint8Array => { + validate(value, ipfsCompat); + + return coder.decode( + ipfs && ipfsCompat + ? value.substring(1) + : value + ); + }; +} + +/** @internal */ +export function createEncode ({ coder, ipfs }: Config): EncodeFn { + return (value: U8aLike, ipfsCompat?: boolean): string => { + const out = coder.encode(u8aToU8a(value)); + + return ipfs && ipfsCompat + ? `${ipfs}${out}` + : out; + }; +} + +/** @internal */ +export function createIs (validate: ValidateFn): ValidateFn { + return (value?: unknown, ipfsCompat?: boolean): value is string => { + try { + return validate(value, ipfsCompat); + } catch { + return false; + } + }; +} + +/** @internal */ +export function createValidate ({ chars, ipfs, type, withPadding }: Config): ValidateFn { + return (value?: unknown, ipfsCompat?: boolean): value is string => { + if (typeof value !== 'string') { + throw new Error(`Expected ${type} string input`); + } else if (ipfs && ipfsCompat && !value.startsWith(ipfs)) { + throw new Error(`Expected ipfs-compatible ${type} to start with '${ipfs}'`); + } + + for (let i = (ipfsCompat ? 1 : 0), count = value.length; i < count; i++) { + if (chars.includes(value[i])) { + // all ok, character found + } else if (withPadding && value[i] === '=') { + if (i === count - 1) { + // last character, everything ok + } else if (value[i + 1] === '=') { + // next one is also padding, sequence ok + } else { + throw new Error(`Invalid ${type} padding sequence "${value[i]}${value[i + 1]}" at index ${i}`); + } + } else { + throw new Error(`Invalid ${type} character "${value[i]}" (0x${value.charCodeAt(i).toString(16)}) at index ${i}`); + } + } + + return true; + }; +} diff --git a/packages/util-crypto/src/base32/index.ts b/packages/util-crypto/src/base32/index.ts new file mode 100644 index 0000000..c74251a --- /dev/null +++ b/packages/util-crypto/src/base32/index.ts @@ -0,0 +1,8 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/** + * @summary Encode and decode base32 values + */ + +export { base32Decode, base32Encode, base32Validate, isBase32 } from './bs32.js'; diff --git a/packages/util-crypto/src/base32/is.spec.ts b/packages/util-crypto/src/base32/is.spec.ts new file mode 100644 index 0000000..f07590d --- /dev/null +++ b/packages/util-crypto/src/base32/is.spec.ts @@ -0,0 +1,32 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { isBase32 } from './index.js'; + +describe('isBase32', (): void => { + it('validates encoded', (): void => { + expect( + isBase32('afkreigh2akiscaildcqabsyg3dfr6chu3fgpregiymsck7e7aqa4s52zy', false) + ).toEqual(true); + }); + + it('validates ipfs-compat encoded', (): void => { + expect( + isBase32('bafkreigh2akiscaildcqabsyg3dfr6chu3fgpregiymsck7e7aqa4s52zy', false) + ).toEqual(true); + }); + + it('fails on invalid', (): void => { + expect( + isBase32('not in base32') + ).toEqual(false); + }); + + it('fails on non-ipfs', (): void => { + expect( + isBase32('afkreigh2akiscaildcqabsyg3dfr6chu3fgpregiymsck7e7aqa4s52zy', true) + ).toEqual(false); + }); +}); diff --git a/packages/util-crypto/src/base32/validate.spec.ts b/packages/util-crypto/src/base32/validate.spec.ts new file mode 100644 index 0000000..ebfa09e --- /dev/null +++ b/packages/util-crypto/src/base32/validate.spec.ts @@ -0,0 +1,44 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { base32Validate } from './index.js'; + +describe('base32Validate', (): void => { + it('validates encoded', (): void => { + expect( + base32Validate('afkreigh2akiscaildcqabsyg3dfr6chu3fgpregiymsck7e7aqa4s52zy', false) + ).toEqual(true); + }); + + it('validates ipfs-compat encoded', (): void => { + expect( + base32Validate('bafkreigh2akiscaildcqabsyg3dfr6chu3fgpregiymsck7e7aqa4s52zy', true) + ).toEqual(true); + }); + + it('does not fail on empty', (): void => { + expect( + base32Validate('') + ).toEqual(true); + }); + + it('fails on non-string', (): void => { + expect( + () => base32Validate(true) + ).toThrow(/Expected/); + }); + + it('fails on invalid', (): void => { + expect( + () => base32Validate('not in base32') + ).toThrow(/Invalid/); + }); + + it('fails on non-ipfs', (): void => { + expect( + () => base32Validate('afkreigh2akiscaildcqabsyg3dfr6chu3fgpregiymsck7e7aqa4s52zy', true) + ).toThrow(/Expected/); + }); +}); diff --git a/packages/util-crypto/src/base58/bs58.ts b/packages/util-crypto/src/base58/bs58.ts new file mode 100644 index 0000000..a699f56 --- /dev/null +++ b/packages/util-crypto/src/base58/bs58.ts @@ -0,0 +1,43 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import { base58 } from '@scure/base'; + +import { createDecode, createEncode, createIs, createValidate } from '../base32/helpers.js'; + +const config = { + chars: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz', + coder: base58, + ipfs: 'z', + type: 'base58' +}; + +/** + * @name base58Validate + * @summary Validates a base58 value. + * @description + * Validates that the supplied value is valid base58, throwing exceptions if not + */ +export const base58Validate = /*#__PURE__*/ createValidate(config); + +/** + * @name base58Decode + * @summary Decodes a base58 value. + * @description + * From the provided input, decode the base58 and return the result as an `Uint8Array`. + */ +export const base58Decode = /*#__PURE__*/ createDecode(config, base58Validate); + +/** +* @name base58Encode +* @summary Creates a base58 value. +* @description +* From the provided input, create the base58 and return the result as a string. +*/ +export const base58Encode = /*#__PURE__*/ createEncode(config); + +/** +* @name isBase58 +* @description Checks if the input is in base58, returning true/false +*/ +export const isBase58 = /*#__PURE__*/ createIs(base58Validate); diff --git a/packages/util-crypto/src/base58/decode.spec.ts b/packages/util-crypto/src/base58/decode.spec.ts new file mode 100644 index 0000000..2388c58 --- /dev/null +++ b/packages/util-crypto/src/base58/decode.spec.ts @@ -0,0 +1,31 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { base32Decode } from '../base32/index.js'; +import { base58Decode } from './index.js'; + +describe('base58Encode', (): void => { + it('decodes an empty string)', (): void => { + expect( + base58Decode('') + ).toEqual(new Uint8Array()); + }); + + it('encodes a base58 to a base32', (): void => { + expect( + base58Decode('b2rhk6GMPQF3hfzwXTaNYFLKomMeC6UXdUt6jZKPpeVirLtV') + ).toEqual( + base32Decode('afkreigh2akiscaildcqabsyg3dfr6chu3fgpregiymsck7e7aqa4s52zy') + ); + }); + + it('encodes a base58 to a base32 (ipfs-compat)', (): void => { + expect( + base58Decode('zb2rhk6GMPQF3hfzwXTaNYFLKomMeC6UXdUt6jZKPpeVirLtV', true) + ).toEqual( + base32Decode('bafkreigh2akiscaildcqabsyg3dfr6chu3fgpregiymsck7e7aqa4s52zy', true) + ); + }); +}); diff --git a/packages/util-crypto/src/base58/encode.spec.ts b/packages/util-crypto/src/base58/encode.spec.ts new file mode 100644 index 0000000..2075cf8 --- /dev/null +++ b/packages/util-crypto/src/base58/encode.spec.ts @@ -0,0 +1,26 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { base32Decode } from '../base32/index.js'; +import { base58Encode } from './index.js'; + +describe('base58Encode', (): void => { + it('encodes a base32 to a base58', (): void => { + expect( + base58Encode( + base32Decode('bafkreigh2akiscaildcqabsyg3dfr6chu3fgpregiymsck7e7aqa4s52zy', true) + ) + ).toEqual('b2rhk6GMPQF3hfzwXTaNYFLKomMeC6UXdUt6jZKPpeVirLtV'); + }); + + it('encodes a base32 to a base58 (ipfs-compat)', (): void => { + expect( + base58Encode( + base32Decode('bafkreigh2akiscaildcqabsyg3dfr6chu3fgpregiymsck7e7aqa4s52zy', true), + true + ) + ).toEqual('zb2rhk6GMPQF3hfzwXTaNYFLKomMeC6UXdUt6jZKPpeVirLtV'); + }); +}); diff --git a/packages/util-crypto/src/base58/index.ts b/packages/util-crypto/src/base58/index.ts new file mode 100644 index 0000000..ac1f6d5 --- /dev/null +++ b/packages/util-crypto/src/base58/index.ts @@ -0,0 +1,8 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/** + * @summary Encode and decode base58 values + */ + +export { base58Decode, base58Encode, base58Validate, isBase58 } from './bs58.js'; diff --git a/packages/util-crypto/src/base58/validate.spec.ts b/packages/util-crypto/src/base58/validate.spec.ts new file mode 100644 index 0000000..2e7a06d --- /dev/null +++ b/packages/util-crypto/src/base58/validate.spec.ts @@ -0,0 +1,20 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { base58Validate } from './index.js'; + +describe('base58Validate', (): void => { + it('validates encoded', (): void => { + expect( + base58Validate('a1UbyspTdnyZXLUQaQbciCxrCWWxz24kgSwGXSQnkbs', false) + ).toEqual(true); + }); + + it('fails on string with extra padding', (): void => { + expect( + () => base58Validate('a1UbyspTdnyZXLUQaQbciCxrCWWxz24kgSwGXSQnkbs=', false) + ).toThrow(/Invalid base58 character "="/); + }); +}); diff --git a/packages/util-crypto/src/base64/bs64.ts b/packages/util-crypto/src/base64/bs64.ts new file mode 100644 index 0000000..20d7c9f --- /dev/null +++ b/packages/util-crypto/src/base64/bs64.ts @@ -0,0 +1,43 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import { base64 } from '@scure/base'; + +import { createDecode, createEncode, createIs, createValidate } from '../base32/helpers.js'; + +const config = { + chars: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/', + coder: base64, + type: 'base64', + withPadding: true +}; + +/** + * @name base64Validate + * @summary Validates a base64 value. + * @description + * Validates that the supplied value is valid base64 + */ +export const base64Validate = /*#__PURE__*/ createValidate(config); + +/** + * @name isBase64 + * @description Checks if the input is in base64, returning true/false + */ +export const isBase64 = /*#__PURE__*/ createIs(base64Validate); + +/** + * @name base64Decode + * @summary Decodes a base64 value. + * @description + * From the provided input, decode the base64 and return the result as an `Uint8Array`. + */ +export const base64Decode = /*#__PURE__*/ createDecode(config, base64Validate); + +/** + * @name base64Encode + * @summary Creates a base64 value. + * @description + * From the provided input, create the base64 and return the result as a string. + */ +export const base64Encode = /*#__PURE__*/ createEncode(config); diff --git a/packages/util-crypto/src/base64/decode.spec.ts b/packages/util-crypto/src/base64/decode.spec.ts new file mode 100644 index 0000000..9c95ff0 --- /dev/null +++ b/packages/util-crypto/src/base64/decode.spec.ts @@ -0,0 +1,42 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { stringToU8a } from '@pezkuwi/util'; + +import { base64Decode } from './index.js'; + +describe('base64Decode', (): void => { + it('decodes an empty string)', (): void => { + expect( + base64Decode('') + ).toEqual( + stringToU8a('') + ); + }); + + it('decodes a mixed base64 utf8 string (1)', (): void => { + expect( + base64Decode('aGVsbG8gd29ybGQg0J/RgNC40LLQtdGC0YHRgtCy0YPRjiDQvNC4IOS9oOWlvQ==') + ).toEqual( + stringToU8a('hello world Приветствую ми 你好') + ); + }); + + it('decodes a mixed base64 utf8 string (2)', (): void => { + expect( + base64Decode('4pyTIMOgIGxhIG1vZGU=') + ).toEqual( + stringToU8a('✓ à la mode') + ); + }); + + it('decodes a mixed base64 utf8 string (3)', (): void => { + expect( + base64Decode('SGVsbG8gV29ybGQh') + ).toEqual( + stringToU8a('Hello World!') + ); + }); +}); diff --git a/packages/util-crypto/src/base64/encode.spec.ts b/packages/util-crypto/src/base64/encode.spec.ts new file mode 100644 index 0000000..ec31a28 --- /dev/null +++ b/packages/util-crypto/src/base64/encode.spec.ts @@ -0,0 +1,14 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { base64Encode } from './index.js'; + +describe('base64Encode', (): void => { + it('encodes a mixed base64 utf8 string', (): void => { + expect( + base64Encode('hello world Приветствую ми 你好') + ).toEqual('aGVsbG8gd29ybGQg0J/RgNC40LLQtdGC0YHRgtCy0YPRjiDQvNC4IOS9oOWlvQ=='); + }); +}); diff --git a/packages/util-crypto/src/base64/index.ts b/packages/util-crypto/src/base64/index.ts new file mode 100644 index 0000000..1719dc7 --- /dev/null +++ b/packages/util-crypto/src/base64/index.ts @@ -0,0 +1,10 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/** + * @summary Encode and decode base64 values + */ + +export { base64Decode, base64Encode, base64Validate, isBase64 } from './bs64.js'; +export { base64Pad } from './pad.js'; +export { base64Trim } from './trim.js'; diff --git a/packages/util-crypto/src/base64/pad.spec.ts b/packages/util-crypto/src/base64/pad.spec.ts new file mode 100644 index 0000000..e124f86 --- /dev/null +++ b/packages/util-crypto/src/base64/pad.spec.ts @@ -0,0 +1,14 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { base64Pad } from './index.js'; + +describe('base64Pad', (): void => { + it('pads a utf-8 string', (): void => { + expect( + base64Pad('YWJjZA') + ).toEqual('YWJjZA=='); + }); +}); diff --git a/packages/util-crypto/src/base64/pad.ts b/packages/util-crypto/src/base64/pad.ts new file mode 100644 index 0000000..a32b1f4 --- /dev/null +++ b/packages/util-crypto/src/base64/pad.ts @@ -0,0 +1,10 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/** + * @name base64Pad + * @description Adds padding characters for correct length + */ +export function base64Pad (value: string): string { + return value.padEnd(value.length + (value.length % 4), '='); +} diff --git a/packages/util-crypto/src/base64/trim.spec.ts b/packages/util-crypto/src/base64/trim.spec.ts new file mode 100644 index 0000000..4479e30 --- /dev/null +++ b/packages/util-crypto/src/base64/trim.spec.ts @@ -0,0 +1,14 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { base64Trim } from './index.js'; + +describe('base64Trim', (): void => { + it('trims a utf-8 string', (): void => { + expect( + base64Trim('aGVsbG8gd29ybGQg0J/RgNC40LLQtdGC0YHRgtCy0YPRjiDQvNC4IOS9oOWlvQ==') + ).toEqual('aGVsbG8gd29ybGQg0J/RgNC40LLQtdGC0YHRgtCy0YPRjiDQvNC4IOS9oOWlvQ'); + }); +}); diff --git a/packages/util-crypto/src/base64/trim.ts b/packages/util-crypto/src/base64/trim.ts new file mode 100644 index 0000000..86c2f12 --- /dev/null +++ b/packages/util-crypto/src/base64/trim.ts @@ -0,0 +1,14 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/** + * @name base64Trim + * @description Trims padding characters + */ +export function base64Trim (value: string): string { + while (value.length && value.endsWith('=')) { + value = value.slice(0, -1); + } + + return value; +} diff --git a/packages/util-crypto/src/base64/validate.spec.ts b/packages/util-crypto/src/base64/validate.spec.ts new file mode 100644 index 0000000..8406455 --- /dev/null +++ b/packages/util-crypto/src/base64/validate.spec.ts @@ -0,0 +1,32 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { base64Validate } from './index.js'; + +describe('base64Validate', (): void => { + it('validates a mixed base64 utf8 string', (): void => { + expect( + () => base64Validate('aGVsbG8gd29ybGQg0J/RgNC40LLQtd^GC0YHRgtCy0YPRjiDQvNC4IOS9oOWlvQ==') + ).toThrow(/Invalid base64 character "\^" \(0x5e\) at index 30/); + }); + + it('validates with one extra padding character', (): void => { + expect( + base64Validate('bGlnaHQgd28=') + ).toEqual(true); + }); + + it('validates with two extra padding characters', (): void => { + expect( + base64Validate('bGlnaHQgdw==') + ).toEqual(true); + }); + + it('validates misplaced padding characters', (): void => { + expect( + () => base64Validate('bGlnaHQgdw=g=') + ).toThrow(/Invalid base64 padding sequence "=g"/); + }); +}); diff --git a/packages/util-crypto/src/blake2/asHex.spec.ts b/packages/util-crypto/src/blake2/asHex.spec.ts new file mode 100644 index 0000000..ac58b3b --- /dev/null +++ b/packages/util-crypto/src/blake2/asHex.spec.ts @@ -0,0 +1,57 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { hexToU8a } from '@pezkuwi/util'; +import { waitReady } from '@pezkuwi/wasm-crypto'; + +import { blake2AsHex } from './index.js'; + +describe('blake2AsHex', (): void => { + beforeEach(async (): Promise => { + await waitReady(); + }); + + for (const onlyJs of [false, true]) { + describe(`onlyJs=${(onlyJs && 'true') || 'false'}`, (): void => { + it('returns a 64-bit value (specified)', (): void => { + expect( + blake2AsHex('abc', 64, null, onlyJs) + ).toEqual('0xd8bb14d833d59559'); + }); + + it('returns a 128-bit value (as specified)', (): void => { + expect( + blake2AsHex('abc', 128, null, onlyJs) + ).toEqual('0xcf4ab791c62b8d2b2109c90275287816'); + }); + + it('returns a 128-bit value (as specified, with key)', (): void => { + expect( + blake2AsHex('abc', 128, new Uint8Array([1, 2]), onlyJs) + ).toEqual('0x36f3d08cda72a00ddf2be103eb5770d9'); + }); + + it('returns a 256-bit value (default)', (): void => { + expect( + blake2AsHex('abc', undefined, null, onlyJs) + ).toEqual('0xbddd813c634239723171ef3fee98579b94964e3bb1cb3e427262c8c068d52319'); + }); + + it('returns a 512-bit value (as specified)', (): void => { + expect( + blake2AsHex('abc', 512, null, onlyJs) + ).toEqual('0xba80a53f981c4d0d6a2797b69f12f6e94c212f14685ac4b74b12bb6fdbffa2d17d87c5392aab792dc252d5de4533cc9518d38aa8dbf1925ab92386edd4009923'); + }); + + it('matches with the Rust implementation', (): void => { + expect( + blake2AsHex( + hexToU8a('0x454545454545454545454545454545454545454545454545454545454545454501000000000000002481853da20b9f4322f34650fea5f240dcbfb266d02db94bfa0153c31f4a29dbdbf025dd4a69a6f4ee6e1577b251b655097e298b692cb34c18d3182cac3de0dc00000000'), 256, undefined, onlyJs + ) + ).toEqual('0x1025e5db74fdaf4d2818822dccf0e1604ae9ccc62f26cecfde23448ff0248abf'); + }); + }); + } +}); diff --git a/packages/util-crypto/src/blake2/asU8a.spec.ts b/packages/util-crypto/src/blake2/asU8a.spec.ts new file mode 100644 index 0000000..edda1fb --- /dev/null +++ b/packages/util-crypto/src/blake2/asU8a.spec.ts @@ -0,0 +1,74 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { hexToU8a } from '@pezkuwi/util'; +import { waitReady } from '@pezkuwi/wasm-crypto'; + +import { perfWasm } from '../test/index.js'; +import { blake2AsU8a } from './index.js'; + +describe('blake2AsU8a', (): void => { + beforeEach(async (): Promise => { + await waitReady(); + }); + + for (const onlyJs of [false, true]) { + describe(`onlyJs=${(onlyJs && 'true') || 'false'}`, (): void => { + it('returns a 64-bit value by default', (): void => { + expect( + blake2AsU8a('abc', undefined, undefined, onlyJs) + ).toEqual( + new Uint8Array([189, 221, 129, 60, 99, 66, 57, 114, 49, 113, 239, 63, 238, 152, 87, 155, 148, 150, 78, 59, 177, 203, 62, 66, 114, 98, 200, 192, 104, 213, 35, 25]) + ); + }); + + it('returns a 128-bit value (as specified,)', (): void => { + expect( + blake2AsU8a('abc', 128, undefined, onlyJs) + ).toEqual( + new Uint8Array([207, 74, 183, 145, 198, 43, 141, 43, 33, 9, 201, 2, 117, 40, 120, 22]) + ); + }); + + it('returns a 256-bit value (as specified)', (): void => { + expect( + blake2AsU8a('abc', 256, undefined, onlyJs) + ).toEqual( + new Uint8Array([189, 221, 129, 60, 99, 66, 57, 114, 49, 113, 239, 63, 238, 152, 87, 155, 148, 150, 78, 59, 177, 203, 62, 66, 114, 98, 200, 192, 104, 213, 35, 25]) + ); + }); + + it('returns a 512-bit value (as specified)', (): void => { + expect( + blake2AsU8a('abc', 512, undefined, onlyJs) + ).toEqual( + hexToU8a('0xba80a53f981c4d0d6a2797b69f12f6e94c212f14685ac4b74b12bb6fdbffa2d17d87c5392aab792dc252d5de4533cc9518d38aa8dbf1925ab92386edd4009923') + ); + }); + }); + } + + it('has equivalent Wasm/Js outputs on hex inputs', (): void => { + const a = blake2AsU8a('0x123456', 256, null, false); + const b = blake2AsU8a('0x123456', 256, null, true); + + expect(a).toEqual(b); + }); + + it('has equivalent Wasm/Js outputs with key inputs', (): void => { + const a = blake2AsU8a('0x123456', 256, new Uint8Array([1, 2]), false); + const b = blake2AsU8a('0x123456', 256, new Uint8Array([1, 2]), true); + + expect(a).toEqual(b); + }); + + for (const bitLength of [256, 512] as const) { + describe(`bitLength=${bitLength}`, (): void => { + perfWasm(`blake2AsU8a, bitLength=${bitLength}`, 64000, (input, onlyJs) => + blake2AsU8a(input, bitLength, null, onlyJs) + ); + }); + } +}); diff --git a/packages/util-crypto/src/blake2/asU8a.ts b/packages/util-crypto/src/blake2/asU8a.ts new file mode 100644 index 0000000..8bb1fd8 --- /dev/null +++ b/packages/util-crypto/src/blake2/asU8a.ts @@ -0,0 +1,40 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import { blake2b as blake2bJs } from '@noble/hashes/blake2b'; + +import { hasBigInt, u8aToU8a } from '@pezkuwi/util'; +import { blake2b, isReady } from '@pezkuwi/wasm-crypto'; + +import { createAsHex } from '../helpers.js'; + +/** + * @name blake2AsU8a + * @summary Creates a blake2b u8a from the input. + * @description + * From a `Uint8Array` input, create the blake2b and return the result as a u8a with the specified `bitLength`. + * @example + *
+ * + * ```javascript + * import { blake2AsU8a } from '@pezkuwi/util-crypto'; + * + * blake2AsU8a('abc'); // => [0xba, 0x80, 0xa5, 0x3f, 0x98, 0x1c, 0x4d, 0x0d] + * ``` + */ +export function blake2AsU8a (data: string | Uint8Array, bitLength: 64 | 128 | 256 | 384 | 512 = 256, key?: Uint8Array | null, onlyJs?: boolean): Uint8Array { + const byteLength = Math.ceil(bitLength / 8); + const u8a = u8aToU8a(data); + + return !hasBigInt || (!onlyJs && isReady()) + ? blake2b(u8a, u8aToU8a(key), byteLength) + : key + ? blake2bJs(u8a, { dkLen: byteLength, key }) + : blake2bJs(u8a, { dkLen: byteLength }); +} + +/** + * @name blake2AsHex + * @description Creates a blake2b hex from the input. + */ +export const blake2AsHex = /*#__PURE__*/ createAsHex(blake2AsU8a); diff --git a/packages/util-crypto/src/blake2/index.ts b/packages/util-crypto/src/blake2/index.ts new file mode 100644 index 0000000..001f7f3 --- /dev/null +++ b/packages/util-crypto/src/blake2/index.ts @@ -0,0 +1,8 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/** + * @summary Create blake2b values with specified bitlengths + */ + +export { blake2AsHex, blake2AsU8a } from './asU8a.js'; diff --git a/packages/util-crypto/src/bn.ts b/packages/util-crypto/src/bn.ts new file mode 100644 index 0000000..6d82635 --- /dev/null +++ b/packages/util-crypto/src/bn.ts @@ -0,0 +1,15 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +export const BN_BE_OPTS = { isLe: false }; +export const BN_LE_OPTS = { isLe: true }; + +export const BN_LE_16_OPTS = { bitLength: 16, isLe: true }; + +export const BN_BE_32_OPTS = { bitLength: 32, isLe: false }; +export const BN_LE_32_OPTS = { bitLength: 32, isLe: true }; + +export const BN_BE_256_OPTS = { bitLength: 256, isLe: false }; +export const BN_LE_256_OPTS = { bitLength: 256, isLe: true }; + +export const BN_LE_512_OPTS = { bitLength: 512, isLe: true }; diff --git a/packages/util-crypto/src/bundle.ts b/packages/util-crypto/src/bundle.ts new file mode 100644 index 0000000..ab99b45 --- /dev/null +++ b/packages/util-crypto/src/bundle.ts @@ -0,0 +1,33 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import './bundleInit.js'; + +// all named +export { packageInfo } from './packageInfo.js'; + +// all starred +export * from './address/index.js'; +export * from './base32/index.js'; +export * from './base58/index.js'; +export * from './base64/index.js'; +export * from './blake2/index.js'; +export * from './crypto.js'; +export * from './ed25519/index.js'; +export * from './ethereum/index.js'; +export * from './hd/index.js'; +export * from './hmac/index.js'; +export * from './json/index.js'; +export * from './keccak/index.js'; +export * from './key/index.js'; +export * from './mnemonic/index.js'; +export * from './nacl/index.js'; +export * from './networks.js'; +export * from './pbkdf2/index.js'; +export * from './random/index.js'; +export * from './scrypt/index.js'; +export * from './secp256k1/index.js'; +export * from './sha/index.js'; +export * from './signature/index.js'; +export * from './sr25519/index.js'; +export * from './xxhash/index.js'; diff --git a/packages/util-crypto/src/bundleInit.ts b/packages/util-crypto/src/bundleInit.ts new file mode 100644 index 0000000..4b6dcf6 --- /dev/null +++ b/packages/util-crypto/src/bundleInit.ts @@ -0,0 +1,11 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import '@polkadot/x-bigint/shim'; + +import { cryptoWaitReady } from './crypto.js'; + +// start init process immediately +cryptoWaitReady().catch((): void => { + // shouldn't happen, logged and caught inside cryptoWaitReady +}); diff --git a/packages/util-crypto/src/crypto.spec.ts b/packages/util-crypto/src/crypto.spec.ts new file mode 100644 index 0000000..77db10f --- /dev/null +++ b/packages/util-crypto/src/crypto.spec.ts @@ -0,0 +1,18 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +describe('cryptoWaitReady', (): void => { + it('should return false when it cannot initialize', async (): Promise => { + const old = global.WebAssembly; + + global.WebAssembly = null as unknown as typeof WebAssembly; + + const { cryptoWaitReady } = await import('./crypto.js'); + + expect(await cryptoWaitReady()).toBe(false); + + global.WebAssembly = old; + }); +}); diff --git a/packages/util-crypto/src/crypto.ts b/packages/util-crypto/src/crypto.ts new file mode 100644 index 0000000..7998608 --- /dev/null +++ b/packages/util-crypto/src/crypto.ts @@ -0,0 +1,18 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import { isReady, waitReady } from '@pezkuwi/wasm-crypto'; + +export const cryptoIsReady = isReady; + +export function cryptoWaitReady (): Promise { + return waitReady() + .then((): boolean => { + if (!isReady()) { + throw new Error('Unable to initialize @polkadot/util-crypto'); + } + + return true; + }) + .catch(() => false); +} diff --git a/packages/util-crypto/src/ed25519/deriveHard.ts b/packages/util-crypto/src/ed25519/deriveHard.ts new file mode 100644 index 0000000..c6973d8 --- /dev/null +++ b/packages/util-crypto/src/ed25519/deriveHard.ts @@ -0,0 +1,18 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import { compactAddLength, isU8a, stringToU8a, u8aConcat } from '@pezkuwi/util'; + +import { blake2AsU8a } from '../blake2/asU8a.js'; + +const HDKD = compactAddLength(stringToU8a('Ed25519HDKD')); + +export function ed25519DeriveHard (seed: Uint8Array, chainCode: Uint8Array): Uint8Array { + if (!isU8a(chainCode) || chainCode.length !== 32) { + throw new Error('Invalid chainCode passed to derive'); + } + + return blake2AsU8a( + u8aConcat(HDKD, seed, chainCode) + ); +} diff --git a/packages/util-crypto/src/ed25519/index.ts b/packages/util-crypto/src/ed25519/index.ts new file mode 100644 index 0000000..f39a0fd --- /dev/null +++ b/packages/util-crypto/src/ed25519/index.ts @@ -0,0 +1,13 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/** + * @summary Implements ed25519 operations + */ +export { ed25519DeriveHard } from './deriveHard.js'; +export { ed25519PairFromRandom } from './pair/fromRandom.js'; +export { ed25519PairFromSecret } from './pair/fromSecret.js'; +export { ed25519PairFromSeed } from './pair/fromSeed.js'; +export { ed25519PairFromString } from './pair/fromString.js'; +export { ed25519Sign } from './sign.js'; +export { ed25519Verify } from './verify.js'; diff --git a/packages/util-crypto/src/ed25519/pair/fromRandom.spec.ts b/packages/util-crypto/src/ed25519/pair/fromRandom.spec.ts new file mode 100644 index 0000000..27b429e --- /dev/null +++ b/packages/util-crypto/src/ed25519/pair/fromRandom.spec.ts @@ -0,0 +1,28 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import type { Keypair } from '../../types.js'; + +import { ed25519PairFromRandom } from '../index.js'; + +describe('ed25519PairFromRandom', (): void => { + let keypair: Keypair; + + beforeEach((): void => { + keypair = ed25519PairFromRandom(); + }); + + it('generates a valid publicKey', (): void => { + expect( + keypair.publicKey + ).toHaveLength(32); + }); + + it('generates a valid secretKey', (): void => { + expect( + keypair.secretKey + ).toHaveLength(64); + }); +}); diff --git a/packages/util-crypto/src/ed25519/pair/fromRandom.ts b/packages/util-crypto/src/ed25519/pair/fromRandom.ts new file mode 100644 index 0000000..1909f62 --- /dev/null +++ b/packages/util-crypto/src/ed25519/pair/fromRandom.ts @@ -0,0 +1,25 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { Keypair } from '../../types.js'; + +import { randomAsU8a } from '../../random/index.js'; +import { ed25519PairFromSeed } from './fromSeed.js'; + +/** + * @name ed25519PairFromRandom + * @summary Creates a new public/secret keypair. + * @description + * Returns a new generate object containing a `publicKey` & `secretKey`. + * @example + *
+ * + * ```javascript + * import { ed25519PairFromRandom } from '@pezkuwi/util-crypto'; + * + * ed25519PairFromRandom(); // => { secretKey: [...], publicKey: [...] } + * ``` + */ +export function ed25519PairFromRandom (): Keypair { + return ed25519PairFromSeed(randomAsU8a()); +} diff --git a/packages/util-crypto/src/ed25519/pair/fromSecret.spec.ts b/packages/util-crypto/src/ed25519/pair/fromSecret.spec.ts new file mode 100644 index 0000000..5c64847 --- /dev/null +++ b/packages/util-crypto/src/ed25519/pair/fromSecret.spec.ts @@ -0,0 +1,33 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { ed25519PairFromSecret } from '../index.js'; + +describe('ed25519PairFromSecret', (): void => { + const secretKey = new Uint8Array([ + 18, 52, 86, 120, 144, 18, 52, 86, + 120, 144, 18, 52, 86, 120, 144, 18, + 18, 52, 86, 120, 144, 18, 52, 86, + 120, 144, 18, 52, 86, 120, 144, 18, + 180, 114, 93, 155, 165, 255, 217, 82, + 16, 250, 209, 11, 193, 10, 88, 218, + 190, 190, 41, 193, 236, 252, 1, 152, + 216, 214, 0, 41, 45, 138, 13, 53 + ]); + + it('generates a valid publicKey/secretKey pair', (): void => { + expect( + ed25519PairFromSecret(secretKey) + ).toEqual({ + publicKey: new Uint8Array([ + 180, 114, 93, 155, 165, 255, 217, 82, + 16, 250, 209, 11, 193, 10, 88, 218, + 190, 190, 41, 193, 236, 252, 1, 152, + 216, 214, 0, 41, 45, 138, 13, 53 + ]), + secretKey + }); + }); +}); diff --git a/packages/util-crypto/src/ed25519/pair/fromSecret.ts b/packages/util-crypto/src/ed25519/pair/fromSecret.ts new file mode 100644 index 0000000..e92db94 --- /dev/null +++ b/packages/util-crypto/src/ed25519/pair/fromSecret.ts @@ -0,0 +1,29 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { Keypair } from '../../types.js'; + +/** + * @name ed25519PairFromSecret + * @summary Creates a new public/secret keypair from a secret. + * @description + * Returns a object containing a `publicKey` & `secretKey` generated from the supplied secret. + * @example + *
+ * + * ```javascript + * import { ed25519PairFromSecret } from '@pezkuwi/util-crypto'; + * + * ed25519PairFromSecret(...); // => { secretKey: [...], publicKey: [...] } + * ``` + */ +export function ed25519PairFromSecret (secretKey: Uint8Array): Keypair { + if (secretKey.length !== 64) { + throw new Error('Invalid secretKey provided'); + } + + return { + publicKey: secretKey.slice(32), + secretKey + }; +} diff --git a/packages/util-crypto/src/ed25519/pair/fromSeed.spec.ts b/packages/util-crypto/src/ed25519/pair/fromSeed.spec.ts new file mode 100644 index 0000000..1c07c67 --- /dev/null +++ b/packages/util-crypto/src/ed25519/pair/fromSeed.spec.ts @@ -0,0 +1,42 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { stringToU8a } from '@pezkuwi/util'; +import { waitReady } from '@pezkuwi/wasm-crypto'; + +import { ed25519PairFromSeed } from '../index.js'; + +describe('ed25519PairFromSeed', (): void => { + // NOTE: Aligned with Rust test, b"12345678901234567890123456789012" + const TEST = stringToU8a('12345678901234567890123456789012'); + const RESULT = { + publicKey: new Uint8Array([ + 0x2f, 0x8c, 0x61, 0x29, 0xd8, 0x16, 0xcf, 0x51, + 0xc3, 0x74, 0xbc, 0x7f, 0x08, 0xc3, 0xe6, 0x3e, + 0xd1, 0x56, 0xcf, 0x78, 0xae, 0xfb, 0x4a, 0x65, + 0x50, 0xd9, 0x7b, 0x87, 0x99, 0x79, 0x77, 0xee + ]), + secretKey: new Uint8Array([ + 49, 50, 51, 52, 53, 54, 55, 56, 57, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 48, 49, 50, + // public part + 0x2f, 0x8c, 0x61, 0x29, 0xd8, 0x16, 0xcf, 0x51, + 0xc3, 0x74, 0xbc, 0x7f, 0x08, 0xc3, 0xe6, 0x3e, + 0xd1, 0x56, 0xcf, 0x78, 0xae, 0xfb, 0x4a, 0x65, + 0x50, 0xd9, 0x7b, 0x87, 0x99, 0x79, 0x77, 0xee + ]) + }; + + beforeEach(async (): Promise => { + await waitReady(); + }); + + it('generates a valid publicKey/secretKey pair (u8a)', (): void => { + [true, false].forEach((onlyJs): void => { + expect( + ed25519PairFromSeed(TEST, onlyJs) + ).toEqual(RESULT); + }); + }); +}); diff --git a/packages/util-crypto/src/ed25519/pair/fromSeed.ts b/packages/util-crypto/src/ed25519/pair/fromSeed.ts new file mode 100644 index 0000000..0fe075e --- /dev/null +++ b/packages/util-crypto/src/ed25519/pair/fromSeed.ts @@ -0,0 +1,41 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { Keypair } from '../../types.js'; + +import { ed25519 } from '@noble/curves/ed25519'; + +import { hasBigInt, u8aConcatStrict } from '@pezkuwi/util'; +import { ed25519KeypairFromSeed, isReady } from '@pezkuwi/wasm-crypto'; + +/** + * @name ed25519PairFromSeed + * @summary Creates a new public/secret keypair from a seed. + * @description + * Returns a object containing a `publicKey` & `secretKey` generated from the supplied seed. + * @example + *
+ * + * ```javascript + * import { ed25519PairFromSeed } from '@pezkuwi/util-crypto'; + * + * ed25519PairFromSeed(...); // => { secretKey: [...], publicKey: [...] } + * ``` + */ +export function ed25519PairFromSeed (seed: Uint8Array, onlyJs?: boolean): Keypair { + if (!hasBigInt || (!onlyJs && isReady())) { + const full = ed25519KeypairFromSeed(seed); + + return { + publicKey: full.slice(32), + secretKey: full.slice(0, 64) + }; + } + + const publicKey = ed25519.getPublicKey(seed); + + return { + publicKey, + secretKey: u8aConcatStrict([seed, publicKey]) + }; +} diff --git a/packages/util-crypto/src/ed25519/pair/fromString.spec.ts b/packages/util-crypto/src/ed25519/pair/fromString.spec.ts new file mode 100644 index 0000000..f4f35d4 --- /dev/null +++ b/packages/util-crypto/src/ed25519/pair/fromString.spec.ts @@ -0,0 +1,17 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { ed25519PairFromString } from '../index.js'; + +describe('ed25519PairFromSeed', (): void => { + it('generates a valid publicKey/secretKey pair', (): void => { + expect( + ed25519PairFromString('test') + ).toEqual({ + publicKey: new Uint8Array([188, 108, 179, 142, 36, 142, 76, 87, 77, 193, 147, 139, 254, 110, 196, 217, 117, 233, 167, 165, 250, 150, 247, 237, 198, 68, 129, 4, 211, 209, 136, 48]), + secretKey: new Uint8Array([146, 139, 32, 54, 105, 67, 226, 175, 209, 30, 188, 14, 174, 46, 83, 169, 59, 241, 119, 164, 252, 243, 91, 204, 100, 213, 3, 112, 78, 101, 226, 2, 188, 108, 179, 142, 36, 142, 76, 87, 77, 193, 147, 139, 254, 110, 196, 217, 117, 233, 167, 165, 250, 150, 247, 237, 198, 68, 129, 4, 211, 209, 136, 48]) + }); + }); +}); diff --git a/packages/util-crypto/src/ed25519/pair/fromString.ts b/packages/util-crypto/src/ed25519/pair/fromString.ts new file mode 100644 index 0000000..03e36ce --- /dev/null +++ b/packages/util-crypto/src/ed25519/pair/fromString.ts @@ -0,0 +1,31 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { Keypair } from '../../types.js'; + +import { stringToU8a } from '@pezkuwi/util'; + +import { blake2AsU8a } from '../../blake2/asU8a.js'; +import { ed25519PairFromSeed } from './fromSeed.js'; + +/** + * @name ed25519PairFromString + * @summary Creates a new public/secret keypair from a string. + * @description + * Returns a object containing a `publicKey` & `secretKey` generated from the supplied string. The string is hashed and the value used as the input seed. + * @example + *
+ * + * ```javascript + * import { ed25519PairFromString } from '@pezkuwi/util-crypto'; + * + * ed25519PairFromString('test'); // => { secretKey: [...], publicKey: [...] } + * ``` + */ +export function ed25519PairFromString (value: string): Keypair { + return ed25519PairFromSeed( + blake2AsU8a( + stringToU8a(value) + ) + ); +} diff --git a/packages/util-crypto/src/ed25519/sign.spec.ts b/packages/util-crypto/src/ed25519/sign.spec.ts new file mode 100644 index 0000000..7c0fe34 --- /dev/null +++ b/packages/util-crypto/src/ed25519/sign.spec.ts @@ -0,0 +1,40 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { stringToU8a } from '@pezkuwi/util'; +import { waitReady } from '@pezkuwi/wasm-crypto'; + +import { perfWasm } from '../test/index.js'; +import { ed25519PairFromSeed, ed25519Sign } from './index.js'; + +const PAIR = ed25519PairFromSeed( + stringToU8a('12345678901234567890123456789012') +); + +describe('ed25519Sign', (): void => { + beforeEach(async (): Promise => { + await waitReady(); + }); + + for (const onlyJs of [false, true]) { + describe(`onlyJs=${(onlyJs && 'true') || 'false'}`, (): void => { + it('returns a valid signature for the message', (): void => { + expect( + ed25519Sign( + new Uint8Array([0x61, 0x62, 0x63, 0x64]), + PAIR, + onlyJs + ) + ).toEqual( + new Uint8Array([28, 58, 206, 239, 249, 70, 59, 191, 166, 40, 219, 218, 235, 170, 25, 79, 10, 94, 9, 197, 34, 126, 1, 150, 246, 68, 28, 238, 36, 26, 172, 163, 168, 90, 202, 211, 126, 246, 57, 212, 43, 24, 88, 197, 240, 113, 118, 76, 37, 81, 91, 110, 236, 50, 144, 134, 100, 223, 220, 238, 34, 185, 211, 7]) + ); + }); + }); + } + + perfWasm('ed25519Sign', 250, (input, onlyJs) => + ed25519Sign(input, PAIR, onlyJs) + ); +}); diff --git a/packages/util-crypto/src/ed25519/sign.ts b/packages/util-crypto/src/ed25519/sign.ts new file mode 100644 index 0000000..b1cf399 --- /dev/null +++ b/packages/util-crypto/src/ed25519/sign.ts @@ -0,0 +1,38 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { Keypair } from '../types.js'; + +import { ed25519 } from '@noble/curves/ed25519'; + +import { hasBigInt, u8aToU8a } from '@pezkuwi/util'; +import { ed25519Sign as wasmSign, isReady } from '@pezkuwi/wasm-crypto'; + +/** + * @name ed25519Sign + * @summary Signs a message using the supplied secretKey + * @description + * Returns message signature of `message`, using the `secretKey`. + * @example + *
+ * + * ```javascript + * import { ed25519Sign } from '@pezkuwi/util-crypto'; + * + * ed25519Sign([...], [...]); // => [...] + * ``` + */ +export function ed25519Sign (message: string | Uint8Array, { publicKey, secretKey }: Partial, onlyJs?: boolean): Uint8Array { + if (!secretKey) { + throw new Error('Expected a valid secretKey'); + } else if (!publicKey) { + throw new Error('Expected a valid publicKey'); + } + + const messageU8a = u8aToU8a(message); + const privateU8a = secretKey.subarray(0, 32); + + return !hasBigInt || (!onlyJs && isReady()) + ? wasmSign(publicKey, privateU8a, messageU8a) + : ed25519.sign(messageU8a, privateU8a); +} diff --git a/packages/util-crypto/src/ed25519/verify.spec.ts b/packages/util-crypto/src/ed25519/verify.spec.ts new file mode 100644 index 0000000..e24d930 --- /dev/null +++ b/packages/util-crypto/src/ed25519/verify.spec.ts @@ -0,0 +1,84 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { stringToU8a } from '@pezkuwi/util'; +import { waitReady } from '@pezkuwi/wasm-crypto'; + +import { ed25519PairFromSeed, ed25519Verify } from './index.js'; + +describe('ed25519Verify', (): void => { + let publicKey: Uint8Array; + let signature: Uint8Array; + + beforeEach(async (): Promise => { + await waitReady(); + + publicKey = ed25519PairFromSeed( + stringToU8a('12345678901234567890123456789012') + ).publicKey; + signature = new Uint8Array([28, 58, 206, 239, 249, 70, 59, 191, 166, 40, 219, 218, 235, 170, 25, 79, 10, 94, 9, 197, 34, 126, 1, 150, 246, 68, 28, 238, 36, 26, 172, 163, 168, 90, 202, 211, 126, 246, 57, 212, 43, 24, 88, 197, 240, 113, 118, 76, 37, 81, 91, 110, 236, 50, 144, 134, 100, 223, 220, 238, 34, 185, 211, 7]); + }); + + for (const onlyJs of [false, true]) { + describe(`onlyJs=${(onlyJs && 'true') || 'false'}`, (): void => { + it('validates a correctly signed message', (): void => { + expect( + ed25519Verify( + new Uint8Array([0x61, 0x62, 0x63, 0x64]), + signature, + publicKey, + onlyJs + ) + ).toEqual(true); + }); + + it('fails a correctly signed message (message changed)', (): void => { + expect( + ed25519Verify( + new Uint8Array([0x61, 0x62, 0x63, 0x64, 0x65]), + signature, + publicKey, + onlyJs + ) + ).toEqual(false); + }); + + it('fails a correctly signed message (signature changed)', (): void => { + signature[0] = 0xff; + + expect( + ed25519Verify( + new Uint8Array([0x61, 0x62, 0x63, 0x64]), + signature, + publicKey, + onlyJs + ) + ).toEqual(false); + }); + + it('throws error when publicKey lengths do not match', (): void => { + expect( + () => ed25519Verify( + new Uint8Array([0x61, 0x62, 0x63, 0x64]), + signature, + new Uint8Array([1, 2]), + onlyJs + ) + ).toThrow(/Invalid publicKey/); + }); + + it('throws error when signature lengths do not match', (): void => { + expect( + () => ed25519Verify( + new Uint8Array([0x61, 0x62, 0x63, 0x64]), + new Uint8Array([1, 2]), + publicKey, + onlyJs + ) + ).toThrow(/Invalid signature/); + }); + }); + } +}); diff --git a/packages/util-crypto/src/ed25519/verify.ts b/packages/util-crypto/src/ed25519/verify.ts new file mode 100644 index 0000000..8ff4c42 --- /dev/null +++ b/packages/util-crypto/src/ed25519/verify.ts @@ -0,0 +1,41 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import { ed25519 } from '@noble/curves/ed25519'; + +import { hasBigInt, u8aToU8a } from '@pezkuwi/util'; +import { ed25519Verify as wasmVerify, isReady } from '@pezkuwi/wasm-crypto'; + +/** + * @name ed25519Sign + * @summary Verifies the signature on the supplied message. + * @description + * Verifies the `signature` on `message` with the supplied `publicKey`. Returns `true` on sucess, `false` otherwise. + * @example + *
+ * + * ```javascript + * import { ed25519Verify } from '@pezkuwi/util-crypto'; + * + * ed25519Verify([...], [...], [...]); // => true/false + * ``` + */ +export function ed25519Verify (message: string | Uint8Array, signature: string | Uint8Array, publicKey: string | Uint8Array, onlyJs?: boolean): boolean { + const messageU8a = u8aToU8a(message); + const publicKeyU8a = u8aToU8a(publicKey); + const signatureU8a = u8aToU8a(signature); + + if (publicKeyU8a.length !== 32) { + throw new Error(`Invalid publicKey, received ${publicKeyU8a.length}, expected 32`); + } else if (signatureU8a.length !== 64) { + throw new Error(`Invalid signature, received ${signatureU8a.length} bytes, expected 64`); + } + + try { + return !hasBigInt || (!onlyJs && isReady()) + ? wasmVerify(signatureU8a, messageU8a, publicKeyU8a) + : ed25519.verify(signatureU8a, messageU8a, publicKeyU8a); + } catch { + return false; + } +} diff --git a/packages/util-crypto/src/ethereum/encode.spec.ts b/packages/util-crypto/src/ethereum/encode.spec.ts new file mode 100644 index 0000000..434fa60 --- /dev/null +++ b/packages/util-crypto/src/ethereum/encode.spec.ts @@ -0,0 +1,59 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { keccakAsU8a } from '../keccak/index.js'; +import { ethereumEncode } from './index.js'; + +describe('formatAddress', () => { + describe('address to address encoding', (): void => { + const ADDRESS = '0x00a329c0648769A73afAc7F9381E08FB43dBEA72'; + + it('returns 0x for no address', () => { + expect(ethereumEncode()).toBe('0x'); + }); + + it('returns fails on invalid address', () => { + expect( + () => ethereumEncode('0xnotaddress') + ).toThrow(/Invalid address or publicKey provided/); + }); + + it('converts lowercase to the checksummed address', () => { + expect(ethereumEncode(ADDRESS.toLowerCase())).toBe(ADDRESS); + }); + + it('converts uppercase to the checksummed address', () => { + expect(ethereumEncode(ADDRESS.toUpperCase().replace('0X', '0x'))).toBe(ADDRESS); + }); + + it('returns formatted address on checksum input', () => { + expect(ethereumEncode(ADDRESS)).toBe(ADDRESS); + }); + }); + + describe('from publicKey', (): void => { + const ADDRESS = '0x4119b2e6c3Cb618F4f0B93ac77f9BeeC7FF02887'; + + it('encodes a compressed publicKey', (): void => { + expect( + ethereumEncode('0x03b9dc646dd71118e5f7fda681ad9eca36eb3ee96f344f582fbe7b5bcdebb13077') + ).toEqual(ADDRESS); + }); + + it('encodes an expanded publicKey', (): void => { + expect( + ethereumEncode('0x04b9dc646dd71118e5f7fda681ad9eca36eb3ee96f344f582fbe7b5bcdebb1307763fe926c273235fd979a134076d00fd1683cbd35868cb485d4a3a640e52184af') + ).toEqual(ADDRESS); + }); + + it('encodes a pre-hashed key', (): void => { + expect( + ethereumEncode( + keccakAsU8a('0xb9dc646dd71118e5f7fda681ad9eca36eb3ee96f344f582fbe7b5bcdebb1307763fe926c273235fd979a134076d00fd1683cbd35868cb485d4a3a640e52184af') + ) + ).toEqual(ADDRESS); + }); + }); +}); diff --git a/packages/util-crypto/src/ethereum/encode.ts b/packages/util-crypto/src/ethereum/encode.ts new file mode 100644 index 0000000..fb9dbde --- /dev/null +++ b/packages/util-crypto/src/ethereum/encode.ts @@ -0,0 +1,39 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { HexString } from '@pezkuwi/util/types'; + +import { u8aToHex, u8aToU8a } from '@pezkuwi/util'; + +import { keccakAsU8a } from '../keccak/index.js'; +import { secp256k1Expand } from '../secp256k1/index.js'; + +function getH160 (u8a: Uint8Array): Uint8Array { + if ([33, 65].includes(u8a.length)) { + u8a = keccakAsU8a(secp256k1Expand(u8a)); + } + + return u8a.slice(-20); +} + +export function ethereumEncode (addressOrPublic?: string | Uint8Array): HexString { + if (!addressOrPublic) { + return '0x'; + } + + const u8aAddress = u8aToU8a(addressOrPublic); + + if (![20, 32, 33, 65].includes(u8aAddress.length)) { + throw new Error(`Invalid address or publicKey provided, received ${u8aAddress.length} bytes input`); + } + + const address = u8aToHex(getH160(u8aAddress), -1, false); + const hash = u8aToHex(keccakAsU8a(address), -1, false); + let result = ''; + + for (let i = 0; i < 40; i++) { + result = `${result}${parseInt(hash[i], 16) > 7 ? address[i].toUpperCase() : address[i]}`; + } + + return `0x${result}`; +} diff --git a/packages/util-crypto/src/ethereum/index.ts b/packages/util-crypto/src/ethereum/index.ts new file mode 100644 index 0000000..16f044c --- /dev/null +++ b/packages/util-crypto/src/ethereum/index.ts @@ -0,0 +1,6 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +export { ethereumEncode } from './encode.js'; +export { isEthereumAddress } from './isAddress.js'; +export { isEthereumChecksum } from './isChecksum.js'; diff --git a/packages/util-crypto/src/ethereum/isAddress.spec.ts b/packages/util-crypto/src/ethereum/isAddress.spec.ts new file mode 100644 index 0000000..183da5b --- /dev/null +++ b/packages/util-crypto/src/ethereum/isAddress.spec.ts @@ -0,0 +1,34 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { isEthereumAddress } from './index.js'; + +const ADDRESS = '0x00a329c0648769A73afAc7F9381E08FB43dBEA72'; + +describe('isEthereumAddress', () => { + it('returns true when fully lowercase', () => { + expect(isEthereumAddress(ADDRESS.toLowerCase())).toBe(true); + }); + + it('returns true when fully uppercase', () => { + expect(isEthereumAddress(ADDRESS.toUpperCase().replace('0X', '0x'))).toBe(true); + }); + + it('returns true when checksummed', () => { + expect(isEthereumAddress(ADDRESS)).toBe(true); + }); + + it('returns false when empty address', () => { + expect(isEthereumAddress()).toBe(false); + }); + + it('returns false when invalid address', () => { + expect(isEthereumAddress('0xinvalid')).toBe(false); + }); + + it('returns false when invalid address of correct length', () => { + expect(isEthereumAddress('0xinvalid000123456789012345678901234567890')).toBe(false); + }); +}); diff --git a/packages/util-crypto/src/ethereum/isAddress.ts b/packages/util-crypto/src/ethereum/isAddress.ts new file mode 100644 index 0000000..bcef40c --- /dev/null +++ b/packages/util-crypto/src/ethereum/isAddress.ts @@ -0,0 +1,16 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import { isHex } from '@pezkuwi/util'; + +import { isEthereumChecksum } from './isChecksum.js'; + +export function isEthereumAddress (address?: string): boolean { + if (!address || address.length !== 42 || !isHex(address)) { + return false; + } else if (/^(0x)?[0-9a-f]{40}$/.test(address) || /^(0x)?[0-9A-F]{40}$/.test(address)) { + return true; + } + + return isEthereumChecksum(address); +} diff --git a/packages/util-crypto/src/ethereum/isChecksum.ts b/packages/util-crypto/src/ethereum/isChecksum.ts new file mode 100644 index 0000000..8522915 --- /dev/null +++ b/packages/util-crypto/src/ethereum/isChecksum.ts @@ -0,0 +1,27 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import { u8aToHex } from '@pezkuwi/util'; + +import { keccakAsU8a } from '../keccak/index.js'; + +function isInvalidChar (char: string, byte: number): boolean { + return char !== ( + byte > 7 + ? char.toUpperCase() + : char.toLowerCase() + ); +} + +export function isEthereumChecksum (_address: string): boolean { + const address = _address.replace('0x', ''); + const hash = u8aToHex(keccakAsU8a(address.toLowerCase()), -1, false); + + for (let i = 0; i < 40; i++) { + if (isInvalidChar(address[i], parseInt(hash[i], 16))) { + return false; + } + } + + return true; +} diff --git a/packages/util-crypto/src/ethereum/isCheksum.spec.ts b/packages/util-crypto/src/ethereum/isCheksum.spec.ts new file mode 100644 index 0000000..ace76b8 --- /dev/null +++ b/packages/util-crypto/src/ethereum/isCheksum.spec.ts @@ -0,0 +1,30 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { isEthereumChecksum } from './index.js'; + +const ADDRESS = '0x00a329c0648769A73afAc7F9381E08FB43dBEA72'; + +describe('isEthereumChecksum', () => { + it('returns false on invalid address', () => { + expect(isEthereumChecksum('0x00a329c0648769')).toBe(false); + }); + + it('returns false on non-checksum address', () => { + expect(isEthereumChecksum('0x1234567890abcdeedcba1234567890abcdeedcba')).toBe(false); + }); + + it('returns false when fully lowercase', () => { + expect(isEthereumChecksum(ADDRESS.toLowerCase())).toBe(false); + }); + + it('returns false when fully uppercase', () => { + expect(isEthereumChecksum(ADDRESS.toUpperCase().replace('0X', '0x'))).toBe(false); + }); + + it('returns true on a checksummed address', () => { + expect(isEthereumChecksum(ADDRESS)).toBe(true); + }); +}); diff --git a/packages/util-crypto/src/hd/ethereum/index.spec.ts b/packages/util-crypto/src/hd/ethereum/index.spec.ts new file mode 100644 index 0000000..a8fadfd --- /dev/null +++ b/packages/util-crypto/src/hd/ethereum/index.spec.ts @@ -0,0 +1,54 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { mnemonicToLegacySeed } from '@pezkuwi/util-crypto'; + +import { hdEthereum } from './index.js'; + +describe('hdEthereum', (): void => { + const PHRASE = 'seed sock milk update focus rotate barely fade car face mechanic mercy'; + const derivationPath = 'm/44\'/60\'/0\'/0/0'; + const PUBLIC = new Uint8Array([ + 3, 118, 64, 77, 247, 27, 4, 157, + 236, 206, 251, 221, 230, 244, 154, 147, + 189, 131, 249, 169, 102, 78, 3, 185, + 153, 19, 89, 40, 24, 25, 139, 131, + 93 + ]); + const SECRET = new Uint8Array([ + 166, 162, 203, 17, 2, 206, 110, 176, + 18, 102, 230, 144, 90, 158, 25, 232, + 43, 180, 176, 49, 189, 149, 3, 71, + 243, 228, 223, 104, 125, 132, 58, 228 + ] + ); + const PUBLICDERIVED = new Uint8Array([ + 3, 129, 53, 27, 27, 70, 210, 96, + 43, 9, 146, 187, 93, 85, 49, 249, + 193, 105, 107, 8, 18, 254, 178, 83, + 75, 104, 132, 173, 196, 126, 46, 29, + 139 + ]); + const SECRETDERIVED = new Uint8Array([ + 7, 13, 195, 17, 115, 0, 1, 25, + 24, 226, 107, 2, 23, 105, 69, 204, + 21, 195, 213, 72, 207, 73, 253, 132, + 24, 217, 127, 147, 175, 105, 158, 70 + ]); + + it('derives the right key pair from a mnemonic', (): void => { + const key = hdEthereum(mnemonicToLegacySeed(PHRASE, '', false, 64)); + + expect(key.publicKey).toEqual(PUBLIC); + expect(key.secretKey).toEqual(SECRET); + }); + + it('derives the right key pair from a mnemonic and a derivation path', (): void => { + const key = hdEthereum(mnemonicToLegacySeed(PHRASE, '', false, 64), derivationPath); + + expect(key.publicKey).toEqual(PUBLICDERIVED); + expect(key.secretKey).toEqual(SECRETDERIVED); + }); +}); diff --git a/packages/util-crypto/src/hd/ethereum/index.ts b/packages/util-crypto/src/hd/ethereum/index.ts new file mode 100644 index 0000000..ca76e31 --- /dev/null +++ b/packages/util-crypto/src/hd/ethereum/index.ts @@ -0,0 +1,69 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { Keypair } from '../../types.js'; + +import { bnToU8a, stringToU8a, u8aConcat } from '@pezkuwi/util'; + +import { BN_BE_32_OPTS } from '../../bn.js'; +import { hmacShaAsU8a } from '../../hmac/index.js'; +import { secp256k1PairFromSeed, secp256k1PrivateKeyTweakAdd } from '../../secp256k1/index.js'; +import { HARDENED, hdValidatePath } from '../validatePath.js'; + +interface CodedKeypair extends Keypair { + chainCode: Uint8Array; +} + +const MASTER_SECRET = stringToU8a('Bitcoin seed'); + +function createCoded (secretKey: Uint8Array, chainCode: Uint8Array): CodedKeypair { + return { + chainCode, + publicKey: secp256k1PairFromSeed(secretKey).publicKey, + secretKey + }; +} + +function deriveChild (hd: CodedKeypair, index: number): CodedKeypair { + const indexBuffer = bnToU8a(index, BN_BE_32_OPTS); + const data = index >= HARDENED + ? u8aConcat(new Uint8Array(1), hd.secretKey, indexBuffer) + : u8aConcat(hd.publicKey, indexBuffer); + + try { + const I = hmacShaAsU8a(hd.chainCode, data, 512); + + return createCoded( + secp256k1PrivateKeyTweakAdd(hd.secretKey, I.slice(0, 32)), + I.slice(32) + ); + } catch { + // In case parse256(IL) >= n or ki == 0, proceed with the next value for i + return deriveChild(hd, index + 1); + } +} + +export function hdEthereum (seed: Uint8Array, path = ''): Keypair { + const I = hmacShaAsU8a(MASTER_SECRET, seed, 512); + let hd = createCoded(I.slice(0, 32), I.slice(32)); + + if (!path || path === 'm' || path === 'M' || path === "m'" || path === "M'") { + return hd; + } + + if (!hdValidatePath(path)) { + throw new Error('Invalid derivation path'); + } + + const parts = path.split('/').slice(1); + + for (const p of parts) { + hd = deriveChild(hd, parseInt(p, 10) + ( + (p.length > 1) && p.endsWith("'") + ? HARDENED + : 0 + )); + } + + return hd; +} diff --git a/packages/util-crypto/src/hd/index.ts b/packages/util-crypto/src/hd/index.ts new file mode 100644 index 0000000..175d199 --- /dev/null +++ b/packages/util-crypto/src/hd/index.ts @@ -0,0 +1,6 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +export { hdEthereum } from './ethereum/index.js'; +export { hdLedger } from './ledger/index.js'; +export { hdValidatePath } from './validatePath.js'; diff --git a/packages/util-crypto/src/hd/ledger/derivePrivate.ts b/packages/util-crypto/src/hd/ledger/derivePrivate.ts new file mode 100644 index 0000000..4b2c1f9 --- /dev/null +++ b/packages/util-crypto/src/hd/ledger/derivePrivate.ts @@ -0,0 +1,34 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import { BN_EIGHT, bnToU8a, u8aConcat, u8aToBn } from '@pezkuwi/util'; + +import { BN_LE_32_OPTS, BN_LE_512_OPTS, BN_LE_OPTS } from '../../bn.js'; +import { hmacShaAsU8a } from '../../hmac/index.js'; + +// performs hard-only derivation on the xprv +export function ledgerDerivePrivate (xprv: Uint8Array, index: number): Uint8Array { + const kl = xprv.subarray(0, 32); + const kr = xprv.subarray(32, 64); + const cc = xprv.subarray(64, 96); + const data = u8aConcat([0], kl, kr, bnToU8a(index, BN_LE_32_OPTS)); + const z = hmacShaAsU8a(cc, data, 512); + + data[0] = 0x01; + + return u8aConcat( + bnToU8a( + u8aToBn(kl, BN_LE_OPTS).iadd( + u8aToBn(z.subarray(0, 28), BN_LE_OPTS).imul(BN_EIGHT) + ), + BN_LE_512_OPTS + ).subarray(0, 32), + bnToU8a( + u8aToBn(kr, BN_LE_OPTS).iadd( + u8aToBn(z.subarray(32, 64), BN_LE_OPTS) + ), + BN_LE_512_OPTS + ).subarray(0, 32), + hmacShaAsU8a(cc, data, 512).subarray(32, 64) + ); +} diff --git a/packages/util-crypto/src/hd/ledger/index.spec.ts b/packages/util-crypto/src/hd/ledger/index.spec.ts new file mode 100644 index 0000000..d3c511f --- /dev/null +++ b/packages/util-crypto/src/hd/ledger/index.spec.ts @@ -0,0 +1,64 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { u8aToHex } from '@pezkuwi/util'; + +import { hdLedger } from '../index.js'; + +const MNE_0 = 'abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about'; +const MNE_1 = 'open jelly jeans corn ketchup supreme brief element armed lens vault weather original scissors rug priority vicious lesson raven spot gossip powder person volcano'; +const MNE_P = `${MNE_1} testing`; + +const TESTS = { + Kusama: { + slip44: 0x01b2, + tests: [ + { + ed25519: '0x98cb4e14e0e08ea876f88d728545ea7572dc07dbbe69f1731c418fb827e69d41', + index: [0, 0], + mnemonic: MNE_0 + }, + { + ed25519: '0x70e9010e84c81095aaa5f63b1c5a6a66a1dcbec017a23c2f3b7a1b08fe5ea65a', + index: [0, 0], + mnemonic: MNE_1 + }, + { + ed25519: '0xf06730efb1e6ea59ac752a7c3620fade3909062fb88597856cc3af72045fa65a', + index: [5, 7], + mnemonic: MNE_1 + } + ] + }, + Polkadot: { + slip44: 0x0162, + tests: [ + { + ed25519: '0xe8c68348586d53e4e8d1a864b0e4e17c75e4eb06e0c63c1432bef2ba29e69d41', + index: [0, 0], + mnemonic: MNE_0 + }, + { + ed25519: '0x3890e8db837eba3f8f25215c753e1091062298ce671a51441e7ef89a7adc4f48', + index: [0, 0], + mnemonic: MNE_P + } + ] + } +}; + +describe('ledgerDerive', (): void => { + Object.entries(TESTS).forEach(([network, { slip44, tests }]): void => { + tests.forEach(({ ed25519, index: [account, address], mnemonic }, index): void => { + it(`derives a known ed25519 seed for ${network} (${index})`, (): void => { + expect(u8aToHex( + hdLedger(mnemonic, `m/44'/${slip44}'/${account}'/0'/${address}'`) + .secretKey + .slice(0, 32) + )).toEqual(ed25519); + }); + }); + }); +}); diff --git a/packages/util-crypto/src/hd/ledger/index.ts b/packages/util-crypto/src/hd/ledger/index.ts new file mode 100644 index 0000000..818b2aa --- /dev/null +++ b/packages/util-crypto/src/hd/ledger/index.ts @@ -0,0 +1,42 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { Keypair } from '../../types.js'; + +import { ed25519PairFromSeed } from '../../ed25519/index.js'; +import { mnemonicValidate } from '../../mnemonic/index.js'; +import { HARDENED, hdValidatePath } from '../validatePath.js'; +import { ledgerDerivePrivate } from './derivePrivate.js'; +import { ledgerMaster } from './master.js'; + +export function hdLedger (_mnemonic: string, path: string): Keypair { + const words = _mnemonic + .split(' ') + .map((s) => s.trim()) + .filter((s) => s); + + if (![12, 24, 25].includes(words.length)) { + throw new Error('Expected a mnemonic with 24 words (or 25 including a password)'); + } + + const [mnemonic, password] = words.length === 25 + ? [words.slice(0, 24).join(' '), words[24]] + : [words.join(' '), '']; + + if (!mnemonicValidate(mnemonic)) { + throw new Error('Invalid mnemonic passed to ledger derivation'); + } else if (!hdValidatePath(path)) { + throw new Error('Invalid derivation path'); + } + + const parts = path.split('/').slice(1); + let seed = ledgerMaster(mnemonic, password); + + for (const p of parts) { + const n = parseInt(p.replace(/'$/, ''), 10); + + seed = ledgerDerivePrivate(seed, (n < HARDENED) ? (n + HARDENED) : n); + } + + return ed25519PairFromSeed(seed.slice(0, 32)); +} diff --git a/packages/util-crypto/src/hd/ledger/master.spec.ts b/packages/util-crypto/src/hd/ledger/master.spec.ts new file mode 100644 index 0000000..3313270 --- /dev/null +++ b/packages/util-crypto/src/hd/ledger/master.spec.ts @@ -0,0 +1,19 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { u8aToHex } from '@pezkuwi/util'; + +import { ledgerMaster } from './master.js'; + +const MNEMONIC = 'abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about'; +const XPRV = '0x402b03cd9c8bed9ba9f9bd6cd9c315ce9fcc59c7c25d37c85a36096617e69d418e35cb4a3b737afd007f0688618f21a8831643c0e6c77fc33c06026d2a0fc93832596435e70647d7d98ef102a32ea40319ca8fb6c851d7346d3bd8f9d1492658'; + +describe('ledgerDerive', (): void => { + it('derives a known master xprv', (): void => { + expect(u8aToHex( + ledgerMaster(MNEMONIC) + )).toEqual(XPRV); + }); +}); diff --git a/packages/util-crypto/src/hd/ledger/master.ts b/packages/util-crypto/src/hd/ledger/master.ts new file mode 100644 index 0000000..ace9ec2 --- /dev/null +++ b/packages/util-crypto/src/hd/ledger/master.ts @@ -0,0 +1,26 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import { u8aConcat } from '@pezkuwi/util'; + +import { hmacShaAsU8a } from '../../hmac/index.js'; +import { mnemonicToSeedSync } from '../../mnemonic/bip39.js'; + +const ED25519_CRYPTO = 'ed25519 seed'; + +// gets an xprv from a mnemonic +export function ledgerMaster (mnemonic: string, password?: string): Uint8Array { + const seed = mnemonicToSeedSync(mnemonic, password); + const chainCode = hmacShaAsU8a(ED25519_CRYPTO, new Uint8Array([1, ...seed]), 256); + let priv; + + while (!priv || (priv[31] & 0b0010_0000)) { + priv = hmacShaAsU8a(ED25519_CRYPTO, priv || seed, 512); + } + + priv[0] &= 0b1111_1000; + priv[31] &= 0b0111_1111; + priv[31] |= 0b0100_0000; + + return u8aConcat(priv, chainCode); +} diff --git a/packages/util-crypto/src/hd/validatePath.spec.ts b/packages/util-crypto/src/hd/validatePath.spec.ts new file mode 100644 index 0000000..81746de --- /dev/null +++ b/packages/util-crypto/src/hd/validatePath.spec.ts @@ -0,0 +1,30 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { hdValidatePath } from './index.js'; + +const VECTORS: [string, boolean][] = [ + ["m/44'/60'/0'/0/0", true], + ['m/0', true], + ["m/123'", true], + ["n/44'/60'/0'/0/0", false], + ['m', false], + ['m/', false], + ["m/xyz'", false], + ['m/123x', false], + ['m/123"', false], + ["m/123''", false], + ["m/123'0'", false], + [`m/${0x80000000}`, false], + ['m/-1', false] +]; + +describe('hdValidatePath', (): void => { + VECTORS.forEach(([path, result]): void => { + it(`validates ${path} as ${result.toString()}`, (): void => { + expect(hdValidatePath(path)).toEqual(result); + }); + }); +}); diff --git a/packages/util-crypto/src/hd/validatePath.ts b/packages/util-crypto/src/hd/validatePath.ts new file mode 100644 index 0000000..66de4a4 --- /dev/null +++ b/packages/util-crypto/src/hd/validatePath.ts @@ -0,0 +1,24 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +export const HARDENED = 0x80000000; + +export function hdValidatePath (path: string): boolean { + if (!path.startsWith('m/')) { + return false; + } + + const parts = path.split('/').slice(1); + + for (const p of parts) { + const n = /^\d+'?$/.test(p) + ? parseInt(p.replace(/'$/, ''), 10) + : Number.NaN; + + if (isNaN(n) || (n >= HARDENED) || (n < 0)) { + return false; + } + } + + return true; +} diff --git a/packages/util-crypto/src/helpers.ts b/packages/util-crypto/src/helpers.ts new file mode 100644 index 0000000..3ee6689 --- /dev/null +++ b/packages/util-crypto/src/helpers.ts @@ -0,0 +1,38 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { HexString } from '@pezkuwi/util/types'; + +import { hasBigInt, u8aToHex, u8aToU8a } from '@pezkuwi/util'; +import { isReady } from '@pezkuwi/wasm-crypto'; + +// re-export so TS *.d.ts generation is correct +export type { HexString } from '@pezkuwi/util/types'; + +interface DualHash { + 256: (u8a: Uint8Array) => Uint8Array; + 512: (u8a: Uint8Array) => Uint8Array; +} + +/** @internal */ +export function createAsHex Uint8Array> (fn: T): (...args: Parameters) => HexString { + return (...args: Parameters): HexString => + u8aToHex(fn(...args)); +} + +/** @internal */ +export function createBitHasher (bitLength: 256 | 512, fn: (data: string | Uint8Array, bitLength: 256 | 512, onlyJs?: boolean) => Uint8Array): (data: string | Uint8Array, onlyJs?: boolean) => Uint8Array { + return (data: string | Uint8Array, onlyJs?: boolean): Uint8Array => + fn(data, bitLength, onlyJs); +} + +/** @internal */ +export function createDualHasher (wa: DualHash, js: DualHash): (value: string | Uint8Array, bitLength?: 256 | 512, onlyJs?: boolean) => Uint8Array { + return (value: string | Uint8Array, bitLength: 256 | 512 = 256, onlyJs?: boolean): Uint8Array => { + const u8a = u8aToU8a(value); + + return !hasBigInt || (!onlyJs && isReady()) + ? wa[bitLength](u8a) + : js[bitLength](u8a); + }; +} diff --git a/packages/util-crypto/src/hmac/index.ts b/packages/util-crypto/src/hmac/index.ts new file mode 100644 index 0000000..09c157b --- /dev/null +++ b/packages/util-crypto/src/hmac/index.ts @@ -0,0 +1,4 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +export { hmacSha256AsU8a, hmacSha512AsU8a, hmacShaAsU8a } from './shaAsU8a.js'; diff --git a/packages/util-crypto/src/hmac/shaAsU8a.spec.ts b/packages/util-crypto/src/hmac/shaAsU8a.spec.ts new file mode 100644 index 0000000..926309d --- /dev/null +++ b/packages/util-crypto/src/hmac/shaAsU8a.spec.ts @@ -0,0 +1,45 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { hexToU8a, stringToU8a } from '@pezkuwi/util'; +import { waitReady } from '@pezkuwi/wasm-crypto'; + +import { perfWasm } from '../test/index.js'; +import { hmacShaAsU8a } from './index.js'; + +describe('hmacShaAsU8a', (): void => { + beforeEach(async (): Promise => { + await waitReady(); + }); + + const key = stringToU8a('secret'); + const data = stringToU8a('some message'); + const output = { + 256: hexToU8a( + '0xf28a70b41263840e5c059a0a733336e0957efba87902aa8cca11441d4b0c96d7' + ), + 512: hexToU8a( + '0x295832e97ed77be75a9fa98029497e4a722c4b9a2f21b39d34f1befa931a39ec520fd24711d6f5c03501384ea66b83066a01a82c57a0460f8cd1f471fcce5841' + ) + }; + + for (const bitLength of [256, 512] as const) { + describe(`bitLength=${bitLength}`, (): void => { + for (const onlyJs of [false, true]) { + describe(`onlyJs=${(onlyJs && 'true') || 'false'}`, (): void => { + it('returns an hex representation (string)', (): void => { + expect( + hmacShaAsU8a(key, data, bitLength, onlyJs) + ).toEqual(output[bitLength]); + }); + }); + } + }); + + perfWasm(`hmacShaAsU8a, bitLength=${bitLength}`, 16000, (input, onlyJs) => + hmacShaAsU8a(input, input, bitLength, onlyJs) + ); + } +}); diff --git a/packages/util-crypto/src/hmac/shaAsU8a.ts b/packages/util-crypto/src/hmac/shaAsU8a.ts new file mode 100644 index 0000000..385bcf1 --- /dev/null +++ b/packages/util-crypto/src/hmac/shaAsU8a.ts @@ -0,0 +1,48 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import { hmac } from '@noble/hashes/hmac'; +import { sha256 } from '@noble/hashes/sha256'; +import { sha512 } from '@noble/hashes/sha512'; + +import { hasBigInt, u8aToU8a } from '@pezkuwi/util'; +import { hmacSha256, hmacSha512, isReady } from '@pezkuwi/wasm-crypto'; + +const JS_HASH = { + 256: sha256, + 512: sha512 +}; + +const WA_MHAC = { + 256: hmacSha256, + 512: hmacSha512 +}; + +function createSha (bitLength: 256 | 512): (key: Uint8Array | string, data: Uint8Array, onlyJs?: boolean) => Uint8Array { + return (key: Uint8Array | string, data: Uint8Array, onlyJs?: boolean): Uint8Array => + hmacShaAsU8a(key, data, bitLength, onlyJs); +} + +/** + * @name hmacShaAsU8a + * @description creates a Hmac Sha (256/512) Uint8Array from the key & data + */ +export function hmacShaAsU8a (key: Uint8Array | string, data: Uint8Array, bitLength: 256 | 512 = 256, onlyJs?: boolean): Uint8Array { + const u8aKey = u8aToU8a(key); + + return !hasBigInt || (!onlyJs && isReady()) + ? WA_MHAC[bitLength](u8aKey, data) + : hmac(JS_HASH[bitLength], u8aKey, data); +} + +/** + * @name hmacSha256AsU8a + * @description creates a Hmac Sha256 Uint8Array from the key & data + */ +export const hmacSha256AsU8a = /*#__PURE__*/ createSha(256); + +/** + * @name hmacSha512AsU8a + * @description creates a Hmac Sha512 Uint8Array from the key & data + */ +export const hmacSha512AsU8a = /*#__PURE__*/ createSha(512); diff --git a/packages/util-crypto/src/index.ts b/packages/util-crypto/src/index.ts new file mode 100644 index 0000000..e82ee0f --- /dev/null +++ b/packages/util-crypto/src/index.ts @@ -0,0 +1,6 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import './packageDetect.js'; + +export * from './bundle.js'; diff --git a/packages/util-crypto/src/json/constants.ts b/packages/util-crypto/src/json/constants.ts new file mode 100644 index 0000000..f2fc945 --- /dev/null +++ b/packages/util-crypto/src/json/constants.ts @@ -0,0 +1,11 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { EncryptedJsonEncoding, EncryptedJsonVersion } from './types.js'; + +export const ENCODING: EncryptedJsonEncoding[] = ['scrypt', 'xsalsa20-poly1305']; +export const ENCODING_NONE: EncryptedJsonEncoding[] = ['none']; +export const ENCODING_VERSION: EncryptedJsonVersion = '3'; + +export const NONCE_LENGTH = 24; +export const SCRYPT_LENGTH = 32 + (3 * 4); diff --git a/packages/util-crypto/src/json/decrypt.ts b/packages/util-crypto/src/json/decrypt.ts new file mode 100644 index 0000000..eeea925 --- /dev/null +++ b/packages/util-crypto/src/json/decrypt.ts @@ -0,0 +1,25 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { EncryptedJson } from './types.js'; + +import { hexToU8a, isHex } from '@pezkuwi/util'; + +import { base64Decode } from '../base64/index.js'; +import { jsonDecryptData } from './decryptData.js'; + +export function jsonDecrypt ({ encoded, encoding }: EncryptedJson, passphrase?: string | null): Uint8Array { + if (!encoded) { + throw new Error('No encrypted data available to decode'); + } + + return jsonDecryptData( + isHex(encoded) + ? hexToU8a(encoded) + : base64Decode(encoded), + passphrase, + Array.isArray(encoding.type) + ? encoding.type + : [encoding.type] + ); +} diff --git a/packages/util-crypto/src/json/decryptData.ts b/packages/util-crypto/src/json/decryptData.ts new file mode 100644 index 0000000..b715863 --- /dev/null +++ b/packages/util-crypto/src/json/decryptData.ts @@ -0,0 +1,45 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { EncryptedJsonEncoding } from './types.js'; + +import { stringToU8a, u8aFixLength } from '@pezkuwi/util'; + +import { naclDecrypt } from '../nacl/index.js'; +import { scryptEncode, scryptFromU8a } from '../scrypt/index.js'; +import { ENCODING, NONCE_LENGTH, SCRYPT_LENGTH } from './constants.js'; + +export function jsonDecryptData (encrypted?: Uint8Array | null, passphrase?: string | null, encType: EncryptedJsonEncoding[] = ENCODING): Uint8Array { + if (!encrypted) { + throw new Error('No encrypted data available to decode'); + } else if (encType.includes('xsalsa20-poly1305') && !passphrase) { + throw new Error('Password required to decode encrypted data'); + } + + let encoded: Uint8Array | null = encrypted; + + if (passphrase) { + let password: Uint8Array; + + if (encType.includes('scrypt')) { + const { params, salt } = scryptFromU8a(encrypted); + + password = scryptEncode(passphrase, salt, params).password; + encrypted = encrypted.subarray(SCRYPT_LENGTH); + } else { + password = stringToU8a(passphrase); + } + + encoded = naclDecrypt( + encrypted.subarray(NONCE_LENGTH), + encrypted.subarray(0, NONCE_LENGTH), + u8aFixLength(password, 256, true) + ); + } + + if (!encoded) { + throw new Error('Unable to decode using the supplied passphrase'); + } + + return encoded; +} diff --git a/packages/util-crypto/src/json/encrypt.ts b/packages/util-crypto/src/json/encrypt.ts new file mode 100644 index 0000000..fc66ec3 --- /dev/null +++ b/packages/util-crypto/src/json/encrypt.ts @@ -0,0 +1,25 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { EncryptedJson } from './types.js'; + +import { u8aConcat } from '@pezkuwi/util'; + +import { naclEncrypt } from '../nacl/index.js'; +import { scryptEncode, scryptToU8a } from '../scrypt/index.js'; +import { jsonEncryptFormat } from './encryptFormat.js'; + +export function jsonEncrypt (data: Uint8Array, contentType: string[], passphrase?: string | null): EncryptedJson { + let isEncrypted = false; + let encoded = data; + + if (passphrase) { + const { params, password, salt } = scryptEncode(passphrase); + const { encrypted, nonce } = naclEncrypt(encoded, password.subarray(0, 32)); + + isEncrypted = true; + encoded = u8aConcat(scryptToU8a(salt, params), nonce, encrypted); + } + + return jsonEncryptFormat(encoded, contentType, isEncrypted); +} diff --git a/packages/util-crypto/src/json/encryptFormat.ts b/packages/util-crypto/src/json/encryptFormat.ts new file mode 100644 index 0000000..b21182a --- /dev/null +++ b/packages/util-crypto/src/json/encryptFormat.ts @@ -0,0 +1,20 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { EncryptedJson } from './types.js'; + +import { base64Encode } from '../base64/index.js'; +import { ENCODING, ENCODING_NONE, ENCODING_VERSION } from './constants.js'; + +export function jsonEncryptFormat (encoded: Uint8Array, contentType: string[], isEncrypted: boolean): EncryptedJson { + return { + encoded: base64Encode(encoded), + encoding: { + content: contentType, + type: isEncrypted + ? ENCODING + : ENCODING_NONE, + version: ENCODING_VERSION + } + }; +} diff --git a/packages/util-crypto/src/json/index.ts b/packages/util-crypto/src/json/index.ts new file mode 100644 index 0000000..dff5c40 --- /dev/null +++ b/packages/util-crypto/src/json/index.ts @@ -0,0 +1,7 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +export { jsonDecrypt } from './decrypt.js'; +export { jsonDecryptData } from './decryptData.js'; +export { jsonEncrypt } from './encrypt.js'; +export { jsonEncryptFormat } from './encryptFormat.js'; diff --git a/packages/util-crypto/src/json/types.ts b/packages/util-crypto/src/json/types.ts new file mode 100644 index 0000000..7dcfd70 --- /dev/null +++ b/packages/util-crypto/src/json/types.ts @@ -0,0 +1,22 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +export type EncryptedJsonVersion = '0' | '1' | '2' | '3'; + +export type EncryptedJsonEncoding = 'none' | 'scrypt' | 'xsalsa20-poly1305'; + +export interface EncryptedJsonDescriptor { + /** Descriptor for the content */ + content: string[]; + /** The encoding (in current/latest versions this is always an array) */ + type: EncryptedJsonEncoding | EncryptedJsonEncoding[]; + /** The version of encoding applied */ + version: EncryptedJsonVersion; +} + +export interface EncryptedJson { + /** The encoded string */ + encoded: string; + /** The encoding used */ + encoding: EncryptedJsonDescriptor; +} diff --git a/packages/util-crypto/src/keccak/asHex.spec.ts b/packages/util-crypto/src/keccak/asHex.spec.ts new file mode 100644 index 0000000..ec7de17 --- /dev/null +++ b/packages/util-crypto/src/keccak/asHex.spec.ts @@ -0,0 +1,30 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { waitReady } from '@pezkuwi/wasm-crypto'; + +import { keccakAsHex } from './index.js'; + +const BITS: (256 | 512)[] = [256, 512]; + +const value = 'test'; +const result = { + 256: '9c22ff5f21f0b81b113e63f7db6da94fedef11b2119b4088b89664fb9a3cb658', + 512: '1e2e9fc2002b002d75198b7503210c05a1baac4560916a3c6d93bcce3a50d7f00fd395bf1647b9abb8d1afcc9c76c289b0c9383ba386a956da4b38934417789e' +}; + +describe('keccakAsHex', (): void => { + beforeEach(async (): Promise => { + await waitReady(); + }); + + BITS.forEach((bitLength): void => { + it('returns a prefixed hex representation', (): void => { + expect( + keccakAsHex(value, bitLength) + ).toEqual(`0x${result[bitLength]}`); + }); + }); +}); diff --git a/packages/util-crypto/src/keccak/asU8a.spec.ts b/packages/util-crypto/src/keccak/asU8a.spec.ts new file mode 100644 index 0000000..1c00ad8 --- /dev/null +++ b/packages/util-crypto/src/keccak/asU8a.spec.ts @@ -0,0 +1,56 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { hexToU8a, stringToU8a } from '@pezkuwi/util'; +import { waitReady } from '@pezkuwi/wasm-crypto'; + +import { perfWasm } from '../test/index.js'; +import { keccakAsU8a } from './index.js'; + +describe('keccakAsU8a', (): void => { + beforeEach(async (): Promise => { + await waitReady(); + }); + + const input = 'test value'; + const output = { + 256: hexToU8a( + '0x2d07364b5c231c56ce63d49430e085ea3033c750688ba532b24029124c26ca5e' + ), + 512: hexToU8a( + '0xc1b50cc57f85ccd968a9d7c7a809dcebd140a548c8e0b67f3afcdd6fc14cca2b1d04187aef24ba0081b74f2ec362431e425760febe94a5607790854cafe5b197' + ) + }; + + for (const bitLength of [256, 512] as const) { + describe(`bitLength=${bitLength}`, (): void => { + for (const onlyJs of [false, true]) { + describe(`onlyJs=${(onlyJs && 'true') || 'false'}`, (): void => { + it('returns an hex representation (string)', (): void => { + expect( + keccakAsU8a(input, bitLength, onlyJs) + ).toEqual(output[bitLength]); + }); + + it('returns an hex representation (Buffer)', (): void => { + expect( + keccakAsU8a(Buffer.from(input), bitLength, onlyJs) + ).toEqual(output[bitLength]); + }); + + it('returns an hex representation (Uint8Array)', (): void => { + expect( + keccakAsU8a(stringToU8a(input), bitLength, onlyJs) + ).toEqual(output[bitLength]); + }); + }); + } + + perfWasm(`keccakAsU8a, bitLength=${bitLength}`, 128000, (input, onlyJs) => + keccakAsU8a(input, bitLength, onlyJs) + ); + }); + } +}); diff --git a/packages/util-crypto/src/keccak/asU8a.ts b/packages/util-crypto/src/keccak/asU8a.ts new file mode 100644 index 0000000..1ef21b4 --- /dev/null +++ b/packages/util-crypto/src/keccak/asU8a.ts @@ -0,0 +1,45 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import { keccak_256 as keccak256Js, keccak_512 as keccak512Js } from '@noble/hashes/sha3'; + +import { keccak256, keccak512 } from '@pezkuwi/wasm-crypto'; + +import { createAsHex, createBitHasher, createDualHasher } from '../helpers.js'; + +/** + * @name keccakAsU8a + * @summary Creates a keccak Uint8Array from the input. + * @description + * From either a `string` or a `Buffer` input, create the keccak and return the result as a `Uint8Array`. + * @example + *
+ * + * ```javascript + * import { keccakAsU8a } from '@pezkuwi/util-crypto'; + * + * keccakAsU8a('123'); // => Uint8Array + * ``` + */ +export const keccakAsU8a = /*#__PURE__*/ createDualHasher( + { 256: keccak256, 512: keccak512 }, + { 256: keccak256Js, 512: keccak512Js } +); + +/** + * @name keccak256AsU8a + * @description Creates a keccak256 Uint8Array from the input. + */ +export const keccak256AsU8a = /*#__PURE__*/ createBitHasher(256, keccakAsU8a); + +/** + * @name keccak512AsU8a + * @description Creates a keccak512 Uint8Array from the input. + */ +export const keccak512AsU8a = /*#__PURE__*/ createBitHasher(512, keccakAsU8a); + +/** + * @name keccakAsHex + * @description Creates a keccak hex string from the input. + */ +export const keccakAsHex = /*#__PURE__*/ createAsHex(keccakAsU8a); diff --git a/packages/util-crypto/src/keccak/index.ts b/packages/util-crypto/src/keccak/index.ts new file mode 100644 index 0000000..6280373 --- /dev/null +++ b/packages/util-crypto/src/keccak/index.ts @@ -0,0 +1,8 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/** + * @summary Create Keccak256/512 values as hex & Uint8Array output + */ + +export { keccak256AsU8a, keccak512AsU8a, keccakAsHex, keccakAsU8a } from './asU8a.js'; diff --git a/packages/util-crypto/src/key/DeriveJunction.ts b/packages/util-crypto/src/key/DeriveJunction.ts new file mode 100644 index 0000000..b6a8831 --- /dev/null +++ b/packages/util-crypto/src/key/DeriveJunction.ts @@ -0,0 +1,79 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import { BN, bnToU8a, compactAddLength, hexToU8a, isBigInt, isBn, isHex, isNumber, isString, stringToU8a } from '@pezkuwi/util'; + +import { blake2AsU8a } from '../blake2/asU8a.js'; +import { BN_LE_256_OPTS } from '../bn.js'; + +const RE_NUMBER = /^\d+$/; + +const JUNCTION_ID_LEN = 32; + +export class DeriveJunction { + readonly #chainCode: Uint8Array = new Uint8Array(32); + + #isHard = false; + + public static from (value: string): DeriveJunction { + const result = new DeriveJunction(); + const [code, isHard] = value.startsWith('/') + ? [value.substring(1), true] + : [value, false]; + + result.soft( + RE_NUMBER.test(code) + ? new BN(code, 10) + : code + ); + + return isHard + ? result.harden() + : result; + } + + public get chainCode (): Uint8Array { + return this.#chainCode; + } + + public get isHard (): boolean { + return this.#isHard; + } + + public get isSoft (): boolean { + return !this.#isHard; + } + + public hard (value: number | string | bigint | BN | Uint8Array): DeriveJunction { + return this.soft(value).harden(); + } + + public harden (): DeriveJunction { + this.#isHard = true; + + return this; + } + + public soft (value: number | string | bigint | BN | Uint8Array): DeriveJunction { + if (isNumber(value) || isBn(value) || isBigInt(value)) { + return this.soft(bnToU8a(value, BN_LE_256_OPTS)); + } else if (isHex(value)) { + return this.soft(hexToU8a(value)); + } else if (isString(value)) { + return this.soft(compactAddLength(stringToU8a(value))); + } else if (value.length > JUNCTION_ID_LEN) { + return this.soft(blake2AsU8a(value)); + } + + this.#chainCode.fill(0); + this.#chainCode.set(value, 0); + + return this; + } + + public soften (): DeriveJunction { + this.#isHard = false; + + return this; + } +} diff --git a/packages/util-crypto/src/key/extractPath.spec.ts b/packages/util-crypto/src/key/extractPath.spec.ts new file mode 100644 index 0000000..7f67dc1 --- /dev/null +++ b/packages/util-crypto/src/key/extractPath.spec.ts @@ -0,0 +1,51 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import type { ExtractResult } from './extractPath.js'; + +import { keyExtractPath } from './extractPath.js'; + +describe('keyExtractPath', (): void => { + it('extracts properly from soft', (): void => { + const test = keyExtractPath('/1'); + + expect(test.parts).toEqual(['/1']); + expect(test.path.length).toEqual(1); + expect(test.path[0].isHard).toEqual(false); + expect(test.path[0].chainCode).toEqual(Uint8Array.from([1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])); + }); + + it('extracts properly from hard', (): void => { + const test = keyExtractPath('//1'); + + expect(test.parts).toEqual(['//1']); + expect(test.path.length).toEqual(1); + expect(test.path[0].isHard).toEqual(true); + expect(test.path[0].chainCode).toEqual(Uint8Array.from([1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])); + }); + + it('extracts properly from hard/soft', (): void => { + const test = keyExtractPath('//1/2'); + + expect(test.parts).toEqual(['//1', '/2']); + expect(test.path.length).toEqual(2); + expect(test.path[0].isHard).toEqual(true); + expect(test.path[0].chainCode).toEqual(Uint8Array.from([1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])); + expect(test.path[1].isHard).toEqual(false); + expect(test.path[1].chainCode).toEqual(Uint8Array.from([2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])); + }); + + it('does not extract from invalid paths (1)', (): void => { + expect( + (): ExtractResult => keyExtractPath('1/2') + ).toThrow(/does not match input/); + }); + + it('does not extract from invalid paths (2)', (): void => { + expect( + (): ExtractResult => keyExtractPath('hello') + ).toThrow(/does not match input/); + }); +}); diff --git a/packages/util-crypto/src/key/extractPath.ts b/packages/util-crypto/src/key/extractPath.ts new file mode 100644 index 0000000..b88779c --- /dev/null +++ b/packages/util-crypto/src/key/extractPath.ts @@ -0,0 +1,37 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import { DeriveJunction } from './DeriveJunction.js'; + +const RE_JUNCTION = /\/(\/?)([^/]+)/g; + +export interface ExtractResult { + parts: string[] | null; + path: DeriveJunction[]; +} + +/** + * @description Extract derivation junctions from the supplied path + */ +export function keyExtractPath (derivePath: string): ExtractResult { + const parts = derivePath.match(RE_JUNCTION); + const path: DeriveJunction[] = []; + let constructed = ''; + + if (parts) { + constructed = parts.join(''); + + for (const p of parts) { + path.push(DeriveJunction.from(p.substring(1))); + } + } + + if (constructed !== derivePath) { + throw new Error(`Re-constructed path "${constructed}" does not match input`); + } + + return { + parts, + path + }; +} diff --git a/packages/util-crypto/src/key/extractSuri.spec.ts b/packages/util-crypto/src/key/extractSuri.spec.ts new file mode 100644 index 0000000..a5d7ed4 --- /dev/null +++ b/packages/util-crypto/src/key/extractSuri.spec.ts @@ -0,0 +1,147 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import type { ExtractResult } from './extractSuri.js'; + +import { keyExtractSuri } from './extractSuri.js'; + +describe('keyExtractSuri', (): void => { + it('does not extract from invalid suri', (): void => { + expect( + (): ExtractResult => keyExtractSuri('//2') + ).toThrow('Unable to match provided value to a secret URI'); + }); + + it('derives on "hello world"', (): void => { + const test = keyExtractSuri('hello world'); + + expect(test.phrase).toEqual('hello world'); + expect(test.path.length).toEqual(0); + }); + + it('derives on "hello world/1', (): void => { + const test = keyExtractSuri('hello world/1'); + + expect(test.password).not.toBeDefined(); + expect(test.phrase).toEqual('hello world'); + expect(test.path.length).toEqual(1); + expect(test.path[0].isHard).toEqual(false); + expect(test.path[0].chainCode).toEqual(Uint8Array.from([1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])); + }); + + it('derives on "hello world/DOT', (): void => { + const test = keyExtractSuri('hello world/DOT'); + + expect(test.password).not.toBeDefined(); + expect(test.phrase).toEqual('hello world'); + expect(test.path.length).toEqual(1); + expect(test.path[0].isHard).toEqual(false); + expect(test.path[0].chainCode).toEqual(Uint8Array.from([12, 68, 79, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])); + }); + + it('derives on "hello world//1', (): void => { + const test = keyExtractSuri('hello world//1'); + + expect(test.password).not.toBeDefined(); + expect(test.phrase).toEqual('hello world'); + expect(test.path.length).toEqual(1); + expect(test.path[0].isHard).toEqual(true); + expect(test.path[0].chainCode).toEqual(Uint8Array.from([1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])); + }); + + it('derives on "hello world//DOT', (): void => { + const test = keyExtractSuri('hello world//DOT'); + + expect(test.password).not.toBeDefined(); + expect(test.phrase).toEqual('hello world'); + expect(test.path.length).toEqual(1); + expect(test.path[0].isHard).toEqual(true); + expect(test.path[0].chainCode).toEqual(Uint8Array.from([12, 68, 79, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])); + }); + + it('derives on "hello world//1/DOT', (): void => { + const test = keyExtractSuri('hello world//1/DOT'); + + expect(test.password).not.toBeDefined(); + expect(test.phrase).toEqual('hello world'); + expect(test.path.length).toEqual(2); + expect(test.path[0].isHard).toEqual(true); + expect(test.path[0].chainCode).toEqual(Uint8Array.from([1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])); + expect(test.path[1].isHard).toEqual(false); + expect(test.path[1].chainCode).toEqual(Uint8Array.from([12, 68, 79, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])); + }); + + it('derives on "hello world//DOT/1', (): void => { + const test = keyExtractSuri('hello world//DOT/1'); + + expect(test.password).not.toBeDefined(); + expect(test.phrase).toEqual('hello world'); + expect(test.path.length).toEqual(2); + expect(test.path[0].isHard).toEqual(true); + expect(test.path[0].chainCode).toEqual(Uint8Array.from([12, 68, 79, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])); + expect(test.path[1].isHard).toEqual(false); + expect(test.path[1].chainCode).toEqual(Uint8Array.from([1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])); + }); + + it('derives on "hello world///password"', (): void => { + const test = keyExtractSuri('hello world///password'); + + expect(test.password).toEqual('password'); + expect(test.phrase).toEqual('hello world'); + expect(test.path.length).toEqual(0); + }); + + it('derives on "hello world//1/DOT///password"', (): void => { + const test = keyExtractSuri('hello world//1/DOT///password'); + + expect(test.password).toEqual('password'); + expect(test.phrase).toEqual('hello world'); + expect(test.path.length).toEqual(2); + expect(test.path[0].isHard).toEqual(true); + expect(test.path[0].chainCode).toEqual(Uint8Array.from([1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])); + expect(test.path[1].isHard).toEqual(false); + expect(test.path[1].chainCode).toEqual(Uint8Array.from([12, 68, 79, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])); + }); + + it('derives on "hello world/1//DOT///password"', (): void => { + const test = keyExtractSuri('hello world/1//DOT///password'); + + expect(test.password).toEqual('password'); + expect(test.phrase).toEqual('hello world'); + expect(test.path.length).toEqual(2); + expect(test.path[0].isHard).toEqual(false); + expect(test.path[0].chainCode).toEqual(Uint8Array.from([1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])); + expect(test.path[1].isHard).toEqual(true); + expect(test.path[1].chainCode).toEqual(Uint8Array.from([12, 68, 79, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])); + }); + + it('derives on actual Alice', (): void => { + const test = keyExtractSuri('bottom drive obey lake curtain smoke basket hold race lonely fit walk//Alice'); + + expect(test.password).not.toBeDefined(); + expect(test.phrase).toEqual('bottom drive obey lake curtain smoke basket hold race lonely fit walk'); + expect(test.path.length).toEqual(1); + expect(test.path[0].isHard).toEqual(true); + expect(test.path[0].chainCode).toEqual(Uint8Array.from([20, 65, 108, 105, 99, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])); + }); + + it('derives on uncommon characters', (): void => { + const languageMnemonics = { + chineseSimplified: '熙 礼 淀 谋 耗 搜 雨 瑞 雷 合 析 感', + chineseTraditional: '召 胸 捕 乏 講 祥 隙 幫 動 框 場 給', + french: 'ruiner minute maison ouragan palourde piscine nerveux descente romance édifier ancien médaille', + japanese: 'ほったん はちみつ おやゆび ほかん いりぐち さんいん てぶくろ だいじょうぶ ふとん でぬかえ ちしき あわてる', + korean: '김밥 방향 논리 저절로 증상 지진 회장 오히려 시리즈 최근 학용품 곡식' + }; + + Object.keys(languageMnemonics).forEach((mnemonic) => { + const test = keyExtractSuri(mnemonic); + + expect(test.password).not.toBeDefined(); + expect(test.phrase).toEqual(mnemonic); + expect(test.path.length).toEqual(0); + }); + }); +}); diff --git a/packages/util-crypto/src/key/extractSuri.ts b/packages/util-crypto/src/key/extractSuri.ts new file mode 100644 index 0000000..803d89c --- /dev/null +++ b/packages/util-crypto/src/key/extractSuri.ts @@ -0,0 +1,40 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { DeriveJunction } from './DeriveJunction.js'; + +import { keyExtractPath } from './extractPath.js'; + +export interface ExtractResult { + derivePath: string, + password?: string; + path: DeriveJunction[]; + phrase: string; +} + +const RE_CAPTURE = /^((0x[a-fA-F0-9]+|[\p{L}\d]+(?: [\p{L}\d]+)*))((\/\/?[^/]+)*)(\/\/\/(.*))?$/u; + +/** + * @description Extracts the phrase, path and password from a SURI format for specifying secret keys `//////` (the `///password` may be omitted, and `/` and `//` maybe repeated and mixed). + */ +export function keyExtractSuri (suri: string): ExtractResult { + // Normalize Unicode to NFC to avoid accent-related mismatches + const normalizedSuri = suri.normalize('NFC'); + + // eslint-disable-next-line @typescript-eslint/prefer-regexp-exec + const matches = normalizedSuri.match(RE_CAPTURE); + + if (matches === null) { + throw new Error('Unable to match provided value to a secret URI'); + } + + const [, phrase, , derivePath, , , password] = matches; + const { path } = keyExtractPath(derivePath); + + return { + derivePath, + password, + path, + phrase + }; +} diff --git a/packages/util-crypto/src/key/fromPath.ts b/packages/util-crypto/src/key/fromPath.ts new file mode 100644 index 0000000..4c93405 --- /dev/null +++ b/packages/util-crypto/src/key/fromPath.ts @@ -0,0 +1,28 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { Keypair, KeypairType } from '../types.js'; +import type { DeriveJunction } from './DeriveJunction.js'; + +import { keyHdkdEcdsa } from './hdkdEcdsa.js'; +import { keyHdkdEd25519 } from './hdkdEd25519.js'; +import { keyHdkdSr25519 } from './hdkdSr25519.js'; + +const generators = { + ecdsa: keyHdkdEcdsa, + ed25519: keyHdkdEd25519, + // FIXME This is Substrate-compatible, not Ethereum-compatible + ethereum: keyHdkdEcdsa, + sr25519: keyHdkdSr25519 +}; + +export function keyFromPath (pair: Keypair, path: DeriveJunction[], type: KeypairType): Keypair { + const keyHdkd = generators[type]; + let result = pair; + + for (const junction of path) { + result = keyHdkd(result, junction); + } + + return result; +} diff --git a/packages/util-crypto/src/key/hdkdDerive.ts b/packages/util-crypto/src/key/hdkdDerive.ts new file mode 100644 index 0000000..70833fc --- /dev/null +++ b/packages/util-crypto/src/key/hdkdDerive.ts @@ -0,0 +1,17 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { Keypair } from '../types.js'; +import type { DeriveJunction } from './DeriveJunction.js'; + +export function createSeedDeriveFn (fromSeed: (seed: Uint8Array) => Keypair, derive: (seed: Uint8Array, chainCode: Uint8Array) => Uint8Array): (keypair: Keypair, junction: DeriveJunction) => Keypair { + return (keypair: Keypair, { chainCode, isHard }: DeriveJunction): Keypair => { + if (!isHard) { + throw new Error('A soft key was found in the path and is not supported'); + } + + return fromSeed( + derive(keypair.secretKey.subarray(0, 32), chainCode) + ); + }; +} diff --git a/packages/util-crypto/src/key/hdkdEcdsa.ts b/packages/util-crypto/src/key/hdkdEcdsa.ts new file mode 100644 index 0000000..7592ea4 --- /dev/null +++ b/packages/util-crypto/src/key/hdkdEcdsa.ts @@ -0,0 +1,8 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import { secp256k1DeriveHard } from '../secp256k1/deriveHard.js'; +import { secp256k1PairFromSeed } from '../secp256k1/pair/fromSeed.js'; +import { createSeedDeriveFn } from './hdkdDerive.js'; + +export const keyHdkdEcdsa = /*#__PURE__*/ createSeedDeriveFn(secp256k1PairFromSeed, secp256k1DeriveHard); diff --git a/packages/util-crypto/src/key/hdkdEd25519.ts b/packages/util-crypto/src/key/hdkdEd25519.ts new file mode 100644 index 0000000..1c3869c --- /dev/null +++ b/packages/util-crypto/src/key/hdkdEd25519.ts @@ -0,0 +1,7 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import { ed25519DeriveHard, ed25519PairFromSeed } from '../ed25519/index.js'; +import { createSeedDeriveFn } from './hdkdDerive.js'; + +export const keyHdkdEd25519 = /*#__PURE__*/ createSeedDeriveFn(ed25519PairFromSeed, ed25519DeriveHard); diff --git a/packages/util-crypto/src/key/hdkdSr25519.ts b/packages/util-crypto/src/key/hdkdSr25519.ts new file mode 100644 index 0000000..3466da5 --- /dev/null +++ b/packages/util-crypto/src/key/hdkdSr25519.ts @@ -0,0 +1,14 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { Keypair } from '../types.js'; +import type { DeriveJunction } from './DeriveJunction.js'; + +import { sr25519DeriveHard } from '../sr25519/deriveHard.js'; +import { sr25519DeriveSoft } from '../sr25519/deriveSoft.js'; + +export function keyHdkdSr25519 (keypair: Keypair, { chainCode, isSoft }: DeriveJunction): Keypair { + return isSoft + ? sr25519DeriveSoft(keypair, chainCode) + : sr25519DeriveHard(keypair, chainCode); +} diff --git a/packages/util-crypto/src/key/index.ts b/packages/util-crypto/src/key/index.ts new file mode 100644 index 0000000..a0b19dd --- /dev/null +++ b/packages/util-crypto/src/key/index.ts @@ -0,0 +1,12 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/** + * @summary Create keys from paths, seeds and password + */ +export { keyExtractPath } from './extractPath.js'; +export { keyExtractSuri } from './extractSuri.js'; +export { keyFromPath } from './fromPath.js'; +export { keyHdkdEcdsa } from './hdkdEcdsa.js'; +export { keyHdkdEd25519 } from './hdkdEd25519.js'; +export { keyHdkdSr25519 } from './hdkdSr25519.js'; diff --git a/packages/util-crypto/src/mnemonic/bip39.spec.ts b/packages/util-crypto/src/mnemonic/bip39.spec.ts new file mode 100644 index 0000000..2b216d7 --- /dev/null +++ b/packages/util-crypto/src/mnemonic/bip39.spec.ts @@ -0,0 +1,80 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import * as lists from './wordlists/index.js'; +import { entropyToMnemonic, generateMnemonic, mnemonicToEntropy, validateMnemonic } from './bip39.js'; + +describe('wordlists', (): void => { + for (const [lang, words] of Object.entries(lists)) { + describe(`language ${lang}`, (): void => { + it('has the correct number of words', (): void => { + expect(words).toHaveLength(2048); + }); + + it('has no empty words', (): void => { + expect( + words.some((w) => !w.length || w.trim() !== w) + ).toEqual(false); + }); + }); + } +}); + +describe('bip39', (): void => { + const m = 'seed sock milk update focus rotate barely fade car face mechanic mercy'; + const e = mnemonicToEntropy(m); + + it('generates a known entropy', (): void => { + expect(e).toEqual( + new Uint8Array([194, 249, 194, 50, 119, 69, 163, 120, 68, 162, 142, 34, 74, 50, 40, 197]) + ); + }); + + it('has a two-way entropy <-> mnemonic (default wordlist)', (): void => { + expect( + entropyToMnemonic(mnemonicToEntropy(entropyToMnemonic(e))) + ).toEqual(m); + }); + + for (const [lang, words] of Object.entries(lists)) { + const isUsingList = (test: string, length = 12): void => { + const split = test.split(' '); + + expect( + split + ).toHaveLength(length); + expect( + split.some((w) => words.indexOf(w) === -1) + ).toEqual(false); + }; + + describe(`language ${lang}`, (): void => { + it('has a two-way entropy <-> mnemonic', (): void => { + const test = entropyToMnemonic(e, words); + const entr = mnemonicToEntropy(test, words); + + isUsingList(test); + + expect( + entr + ).toEqual(e); + + expect( + entropyToMnemonic(entr, words) + ).toEqual(test); + }); + + it('generates a valid mnemonic', (): void => { + const test = generateMnemonic(24, words); + + isUsingList(test, 24); + + expect( + validateMnemonic(test, words) + ).toEqual(true); + }); + }); + } +}); diff --git a/packages/util-crypto/src/mnemonic/bip39.ts b/packages/util-crypto/src/mnemonic/bip39.ts new file mode 100644 index 0000000..ea31725 --- /dev/null +++ b/packages/util-crypto/src/mnemonic/bip39.ts @@ -0,0 +1,127 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +// Adapted from the bitcoinjs/bip39 source +// https://github.com/bitcoinjs/bip39/blob/1d063b6a6aee4145b34d701037cd3e67f5446ff9/ts_src/index.ts +// Copyright (c) 2014, Wei Lu and Daniel Cousens +// ISC Licence +// +// Change made in this version - +// - Adjust formatting (just eslint differences) +// - Only English wordlist (this aligns with the wasm-crypto implementation) +// - Use util-crypto randomAsU8a (instead of randombytes) +// - Remove setting of wordlist passing of wordlist in functions +// - Remove mnemonicToSeed (we only use the sync variant) +// - generateMnemonic takes number of words (instead of strength) + +import { stringToU8a, u8aToU8a } from '@pezkuwi/util'; + +import { pbkdf2Encode } from '../pbkdf2/index.js'; +import { randomAsU8a } from '../random/index.js'; +import { sha256AsU8a } from '../sha/index.js'; +import DEFAULT_WORDLIST from './wordlists/en.js'; + +const INVALID_MNEMONIC = 'Invalid mnemonic'; +const INVALID_ENTROPY = 'Invalid entropy'; +const INVALID_CHECKSUM = 'Invalid mnemonic checksum'; + +/** @internal */ +function normalize (str?: string): string { + return (str || '').normalize('NFKD'); +} + +/** @internal */ +function binaryToByte (bin: string): number { + return parseInt(bin, 2); +} + +/** @internal */ +function bytesToBinary (bytes: number[]): string { + return bytes.map((x) => x.toString(2).padStart(8, '0')).join(''); +} + +/** @internal */ +function deriveChecksumBits (entropyBuffer: Uint8Array): string { + return bytesToBinary( + Array.from(sha256AsU8a(entropyBuffer)) + ).slice(0, (entropyBuffer.length * 8) / 32); +} + +export function mnemonicToSeedSync (mnemonic: string, password?: string): Uint8Array { + return pbkdf2Encode( + stringToU8a(normalize(mnemonic)), + stringToU8a(`mnemonic${normalize(password)}`) + ).password; +} + +export function mnemonicToEntropy (mnemonic: string, wordlist: string[] = DEFAULT_WORDLIST): Uint8Array { + const words = normalize(mnemonic).split(' '); + + if (words.length % 3 !== 0) { + throw new Error(INVALID_MNEMONIC); + } + + // convert word indices to 11 bit binary strings + const bits = words + .map((word): string => { + const index = wordlist.indexOf(word); + + if (index === -1) { + throw new Error(INVALID_MNEMONIC); + } + + return index.toString(2).padStart(11, '0'); + }) + .join(''); + + // split the binary string into ENT/CS + const dividerIndex = Math.floor(bits.length / 33) * 32; + const entropyBits = bits.slice(0, dividerIndex); + const checksumBits = bits.slice(dividerIndex); + + // calculate the checksum and compare + const matched = entropyBits.match(/(.{1,8})/g); + const entropyBytes = matched?.map(binaryToByte); + + if (!entropyBytes || (entropyBytes.length % 4 !== 0) || (entropyBytes.length < 16) || (entropyBytes.length > 32)) { + throw new Error(INVALID_ENTROPY); + } + + const entropy = u8aToU8a(entropyBytes); + + if (deriveChecksumBits(entropy) !== checksumBits) { + throw new Error(INVALID_CHECKSUM); + } + + return entropy; +} + +export function entropyToMnemonic (entropy: Uint8Array, wordlist: string[] = DEFAULT_WORDLIST): string { + // 128 <= ENT <= 256 + if ((entropy.length % 4 !== 0) || (entropy.length < 16) || (entropy.length > 32)) { + throw new Error(INVALID_ENTROPY); + } + + const matched = `${bytesToBinary(Array.from(entropy))}${deriveChecksumBits(entropy)}`.match(/(.{1,11})/g); + const mapped = matched?.map((b) => wordlist[binaryToByte(b)]); + + if (!mapped || (mapped.length < 12)) { + throw new Error('Unable to map entropy to mnemonic'); + } + + return mapped.join(' '); +} + +export function generateMnemonic (numWords: 12 | 15 | 18 | 21 | 24, wordlist?: string[]): string { + return entropyToMnemonic(randomAsU8a((numWords / 3) * 4), wordlist); +} + +export function validateMnemonic (mnemonic: string, wordlist?: string[]): boolean { + try { + mnemonicToEntropy(mnemonic, wordlist); + } catch { + return false; + } + + return true; +} diff --git a/packages/util-crypto/src/mnemonic/generate.spec.ts b/packages/util-crypto/src/mnemonic/generate.spec.ts new file mode 100644 index 0000000..147163f --- /dev/null +++ b/packages/util-crypto/src/mnemonic/generate.spec.ts @@ -0,0 +1,58 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { cryptoWaitReady } from '../index.js'; +import { french as frenchWords } from './wordlists/index.js'; +import { mnemonicGenerate } from './generate.js'; +import { mnemonicValidate } from './validate.js'; + +await cryptoWaitReady(); + +describe('mnemonicGenerate', (): void => { + it('generates a valid mnemonic (default strength)', (): void => { + expect( + mnemonicValidate(mnemonicGenerate()) + ).toEqual(true); + }); + + it('generates a french mnemonic', (): void => { + const mnemonic = mnemonicGenerate(24, frenchWords); + const words = mnemonic.split(' '); + + expect(words).toHaveLength(24); + expect( + mnemonicValidate(mnemonic, frenchWords) + ).toEqual(true); + expect( + mnemonicValidate(mnemonic) + ).toEqual(false); + expect( + words.every((w) => frenchWords.includes(w)) + ).toEqual(true); + }); + + for (const onlyJs of [false, true]) { + describe(`onlyJs=${(onlyJs && 'true') || 'false'}`, (): void => { + for (const num of [12, 15, 18, 21, 24] as const) { + it(`generates a valid mnemonic (${num} words)`, (): void => { + const mnemonic = mnemonicGenerate(num, undefined, onlyJs); + const isValid = mnemonicValidate(mnemonic); + + expect(mnemonic.split(' ')).toHaveLength(num); + expect(isValid).toEqual(true); + }); + } + + it('generates non-deterministic', (): void => { + const m1 = mnemonicGenerate(24, undefined, onlyJs); + const m2 = mnemonicGenerate(24, undefined, onlyJs); + + expect(m1 === m2).toEqual(false); + expect(mnemonicValidate(m1)).toEqual(true); + expect(mnemonicValidate(m2)).toEqual(true); + }); + }); + } +}); diff --git a/packages/util-crypto/src/mnemonic/generate.ts b/packages/util-crypto/src/mnemonic/generate.ts new file mode 100644 index 0000000..68da34b --- /dev/null +++ b/packages/util-crypto/src/mnemonic/generate.ts @@ -0,0 +1,25 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import { hasBigInt } from '@pezkuwi/util'; +import { bip39Generate, isReady } from '@pezkuwi/wasm-crypto'; + +import { generateMnemonic } from './bip39.js'; + +/** + * @name mnemonicGenerate + * @summary Creates a valid mnemonic string using using [BIP39](https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki). + * @example + *
+ * + * ```javascript + * import { mnemonicGenerate } from '@pezkuwi/util-crypto'; + * + * const mnemonic = mnemonicGenerate(); // => string + * ``` + */ +export function mnemonicGenerate (numWords: 12 | 15 | 18 | 21 | 24 = 12, wordlist?: string[], onlyJs?: boolean): string { + return !hasBigInt || (!wordlist && !onlyJs && isReady()) + ? bip39Generate(numWords) + : generateMnemonic(numWords, wordlist); +} diff --git a/packages/util-crypto/src/mnemonic/index.ts b/packages/util-crypto/src/mnemonic/index.ts new file mode 100644 index 0000000..7c143dd --- /dev/null +++ b/packages/util-crypto/src/mnemonic/index.ts @@ -0,0 +1,11 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/** + * @summary Create valid mnemonic strings, validate them using BIP39, and convert them to valid seeds + */ +export { mnemonicGenerate } from './generate.js'; +export { mnemonicToEntropy } from './toEntropy.js'; +export { mnemonicToLegacySeed } from './toLegacySeed.js'; +export { mnemonicToMiniSecret } from './toMiniSecret.js'; +export { mnemonicValidate } from './validate.js'; diff --git a/packages/util-crypto/src/mnemonic/toEntropy.spec.ts b/packages/util-crypto/src/mnemonic/toEntropy.spec.ts new file mode 100644 index 0000000..2397079 --- /dev/null +++ b/packages/util-crypto/src/mnemonic/toEntropy.spec.ts @@ -0,0 +1,36 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { u8aToHex } from '@pezkuwi/util'; + +import { cryptoWaitReady } from '../index.js'; +import tests from '../sr25519/pair/testing.spec.js'; +import { french as frenchWords } from './wordlists/index.js'; +import { mnemonicToEntropy } from './toEntropy.js'; + +await cryptoWaitReady(); + +describe('mnemonicToEntropy', (): void => { + for (const onlyJs of [false, true]) { + describe(`onlyJs=${(onlyJs && 'true') || 'false'}`, (): void => { + tests.forEach(([mnemonic, entropy], index): void => { + it(`Created correct entropy for ${index}`, (): void => { + expect(u8aToHex(mnemonicToEntropy(mnemonic, undefined, onlyJs))).toEqual(entropy); + }); + }); + }); + } + + it('has the correct entropy for non-Englist mnemonics', (): void => { + const mnemonic = 'pompier circuler pulpe injure aspect abyssal nuque boueux équerre balisage pieuvre médecin petit suffixe soleil cumuler monstre arlequin liasse pixel garrigue noble buisson scandale'; + + expect( + () => mnemonicToEntropy(mnemonic) + ).toThrow(); + expect( + mnemonicToEntropy(mnemonic, frenchWords) + ).toEqual(new Uint8Array([189, 230, 55, 17, 65, 33, 40, 4, 106, 9, 11, 88, 227, 26, 229, 76, 59, 123, 200, 55, 177, 232, 158, 66, 34, 54, 93, 54, 255, 74, 137, 70])); + }); +}); diff --git a/packages/util-crypto/src/mnemonic/toEntropy.ts b/packages/util-crypto/src/mnemonic/toEntropy.ts new file mode 100644 index 0000000..c32370f --- /dev/null +++ b/packages/util-crypto/src/mnemonic/toEntropy.ts @@ -0,0 +1,13 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import { hasBigInt } from '@pezkuwi/util'; +import { bip39ToEntropy, isReady } from '@pezkuwi/wasm-crypto'; + +import { mnemonicToEntropy as jsToEntropy } from './bip39.js'; + +export function mnemonicToEntropy (mnemonic: string, wordlist?: string[], onlyJs?: boolean): Uint8Array { + return !hasBigInt || (!wordlist && !onlyJs && isReady()) + ? bip39ToEntropy(mnemonic) + : jsToEntropy(mnemonic, wordlist); +} diff --git a/packages/util-crypto/src/mnemonic/toLegacySeed.spec.ts b/packages/util-crypto/src/mnemonic/toLegacySeed.spec.ts new file mode 100644 index 0000000..f2054fd --- /dev/null +++ b/packages/util-crypto/src/mnemonic/toLegacySeed.spec.ts @@ -0,0 +1,52 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { u8aEq, u8aToHex } from '@pezkuwi/util'; +import { waitReady } from '@pezkuwi/wasm-crypto'; + +import { mnemonicToLegacySeed } from './index.js'; + +const MNEMONIC = 'seed sock milk update focus rotate barely fade car face mechanic mercy'; +const SEED_32 = '0x3c121e20de068083b49c2315697fb59a2d9e8643c24e5ea7628132c58969a027'; +const SEED_64 = '0x3c121e20de068083b49c2315697fb59a2d9e8643c24e5ea7628132c58969a0275693dd5bd9d4cc9e648475eba9613ed4678f4d62560a9c42f75bac04022ded25'; + +describe('mnemonicToLegacySeed', (): void => { + beforeEach(async (): Promise => { + await waitReady(); + }); + + for (const password of [undefined, 'foo', 'bar']) { + it(`generates Wasm & Js equivalents for password=${password || 'undefined'}`, (): void => { + expect( + u8aEq( + mnemonicToLegacySeed(MNEMONIC, password, true), + mnemonicToLegacySeed(MNEMONIC, password, false) + ) + ).toEqual(true); + }); + } + + for (const onlyJs of [false, true]) { + describe(`onlyJs=${(onlyJs && 'true') || 'false'}`, (): void => { + it('generates a valid 64bytes seed', (): void => { + expect( + u8aToHex(mnemonicToLegacySeed(MNEMONIC, undefined, onlyJs, 64)) + ).toEqual(SEED_64); + }); + + it('generates a valid 32bytes seed', (): void => { + expect( + u8aToHex(mnemonicToLegacySeed(MNEMONIC, undefined, onlyJs)) + ).toEqual(SEED_32); + }); + + it('fails with non-mnemonics', (): void => { + expect( + () => mnemonicToLegacySeed('foo bar baz', undefined, onlyJs) + ).toThrow(/mnemonic specified/); + }); + }); + } +}); diff --git a/packages/util-crypto/src/mnemonic/toLegacySeed.ts b/packages/util-crypto/src/mnemonic/toLegacySeed.ts new file mode 100644 index 0000000..4608e83 --- /dev/null +++ b/packages/util-crypto/src/mnemonic/toLegacySeed.ts @@ -0,0 +1,39 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import { hasBigInt } from '@pezkuwi/util'; +import { bip39ToSeed, isReady } from '@pezkuwi/wasm-crypto'; + +import { mnemonicToSeedSync } from './bip39.js'; +import { mnemonicValidate } from './validate.js'; + +/** + * @name mnemonicToLegacySeed + * @summary Creates a valid Ethereum/Bitcoin-compatible seed from a mnemonic input + * @example + *
+ * + * ```javascript + * import { mnemonicGenerate, mnemonicToLegacySeed, mnemonicValidate } from '@pezkuwi/util-crypto'; + * + * const mnemonic = mnemonicGenerate(); // => string + * const isValidMnemonic = mnemonicValidate(mnemonic); // => boolean + * + * if (isValidMnemonic) { + * console.log(`Seed generated from mnemonic: ${mnemonicToLegacySeed(mnemonic)}`); => u8a + * } + * ``` + */ +export function mnemonicToLegacySeed (mnemonic: string, password = '', onlyJs?: boolean, byteLength: 32 | 64 = 32): Uint8Array { + if (!mnemonicValidate(mnemonic)) { + throw new Error('Invalid bip39 mnemonic specified'); + } else if (![32, 64].includes(byteLength)) { + throw new Error(`Invalid seed length ${byteLength}, expected 32 or 64`); + } + + return byteLength === 32 + ? !hasBigInt || (!onlyJs && isReady()) + ? bip39ToSeed(mnemonic, password) + : mnemonicToSeedSync(mnemonic, password).subarray(0, 32) + : mnemonicToSeedSync(mnemonic, password); +} diff --git a/packages/util-crypto/src/mnemonic/toMiniSecret.spec.ts b/packages/util-crypto/src/mnemonic/toMiniSecret.spec.ts new file mode 100644 index 0000000..e3627c7 --- /dev/null +++ b/packages/util-crypto/src/mnemonic/toMiniSecret.spec.ts @@ -0,0 +1,67 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { u8aEq, u8aToHex } from '@pezkuwi/util'; + +import { cryptoWaitReady } from '../index.js'; +import tests from '../sr25519/pair/testing.spec.js'; +import { korean as koreanWords } from './wordlists/index.js'; +import { mnemonicToMiniSecret } from './toMiniSecret.js'; + +const MNEMONIC = 'seed sock milk update focus rotate barely fade car face mechanic mercy'; +const SEED = '0x4d1ab2a57929edfd018aaa974e62ed557e3f54b4104acabedf73c8f5a1dbb029'; + +await cryptoWaitReady(); + +describe('mnemonicToMiniSecret', (): void => { + for (const password of [undefined, 'foo', 'bar']) { + it(`generates Wasm & Js equivalents for password=${password || 'undefined'}`, (): void => { + expect( + u8aEq( + mnemonicToMiniSecret(MNEMONIC, password, undefined, true), + mnemonicToMiniSecret(MNEMONIC, password, undefined, false) + ) + ).toEqual(true); + }); + } + + it('creates a known minisecret from a non-english mnemonic', (): void => { + const mnemonic = '엉덩이 능동적 숫자 팩시밀리 비난 서적 파출소 도움 독창적 인생 상류 먼지 답변 음반 수박 사업 노란색 공사 우체국 특급 도대체 금지 굉장히 고무신'; + + expect( + () => mnemonicToMiniSecret(mnemonic, 'testing') + ).toThrow(); + expect( + u8aToHex(mnemonicToMiniSecret(mnemonic, 'testing', koreanWords)) + ).toEqual('0xefa278a62535581767a2f49cb542ed91b65fb911e1b05e7a09c702b257f10c13'); + }); + + for (const onlyJs of [false, true]) { + describe(`onlyJs=${(onlyJs && 'true') || 'false'}`, (): void => { + it('generates a valid seed', (): void => { + expect( + u8aToHex(mnemonicToMiniSecret(MNEMONIC, undefined, undefined, onlyJs)) + ).toEqual(SEED); + }); + + it('fails with non-mnemonics', (): void => { + expect( + () => mnemonicToMiniSecret('foo bar baz', undefined, undefined, onlyJs) + ).toThrow(/mnemonic specified/); + }); + + tests.forEach(([mnemonic, , seed], index): void => { + it(`Created correct seed for ${index}`, (): void => { + expect( + u8aToHex(mnemonicToMiniSecret(mnemonic, 'Substrate', undefined, onlyJs)) + ).toEqual( + // mini returned here, only check first 32-bytes (64 hex + 2 prefix) + seed.substring(0, 66) + ); + }); + }); + }); + } +}); diff --git a/packages/util-crypto/src/mnemonic/toMiniSecret.ts b/packages/util-crypto/src/mnemonic/toMiniSecret.ts new file mode 100644 index 0000000..ea1a470 --- /dev/null +++ b/packages/util-crypto/src/mnemonic/toMiniSecret.ts @@ -0,0 +1,23 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import { stringToU8a } from '@pezkuwi/util'; +import { bip39ToMiniSecret, isReady } from '@pezkuwi/wasm-crypto'; + +import { pbkdf2Encode } from '../pbkdf2/index.js'; +import { mnemonicToEntropy } from './toEntropy.js'; +import { mnemonicValidate } from './validate.js'; + +export function mnemonicToMiniSecret (mnemonic: string, password = '', wordlist?: string[], onlyJs?: boolean): Uint8Array { + if (!mnemonicValidate(mnemonic, wordlist, onlyJs)) { + throw new Error('Invalid bip39 mnemonic specified'); + } else if (!wordlist && !onlyJs && isReady()) { + return bip39ToMiniSecret(mnemonic, password); + } + + const entropy = mnemonicToEntropy(mnemonic, wordlist); + const salt = stringToU8a(`mnemonic${password}`); + + // return the first 32 bytes as the seed + return pbkdf2Encode(entropy, salt).password.slice(0, 32); +} diff --git a/packages/util-crypto/src/mnemonic/toMiniSecretCmp.spec.ts b/packages/util-crypto/src/mnemonic/toMiniSecretCmp.spec.ts new file mode 100644 index 0000000..d8c4858 --- /dev/null +++ b/packages/util-crypto/src/mnemonic/toMiniSecretCmp.spec.ts @@ -0,0 +1,64 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { arrayRange, u8aEq } from '@pezkuwi/util'; + +import { cryptoWaitReady, ed25519PairFromSeed, mnemonicGenerate, mnemonicToMiniSecret, sr25519PairFromSeed } from '../index.js'; + +// NOTE: This basically controls how long stuff runs for, YMMV +// +// - 100 runs with 5 checks, takes 2mins on _my_ machine +// - 10_000 runs with 5 checks should be ~3hrs +const NUM_RUNS = 100; +const NUM_CHECKS = 5; + +await cryptoWaitReady(); + +// generate either a JS or WASM mnemonic +for (const onlyJsMnemonic of [false, true]) { + describe(`mnemonicToMiniSecret (conpare), onlyJs${(onlyJsMnemonic && 'true') || 'false'}`, (): void => { + for (const i of arrayRange(NUM_RUNS)) { + // loop through lots of mnemonics + describe(`run=${i + 1}`, (): void => { + // compare both JS and WASM outputs against original + for (const onlyJsMini of [false, true]) { + describe(`onlyJsMini=${(onlyJsMini && 'true') || 'false'}`, (): void => { + // NOTE we cannot actually use the onlyJsMnemonic flag here + const mnemonic = mnemonicGenerate(12); + + describe(`${mnemonic}`, (): void => { + // do iterations to check and re-check that all matches + for (const count of arrayRange(NUM_CHECKS)) { + it(`check=${count + 1}`, (): void => { + const minisecret = mnemonicToMiniSecret(mnemonic, count ? `${count}` : '', undefined, onlyJsMnemonic); + const edpub = ed25519PairFromSeed(minisecret).publicKey; + const srpub = sr25519PairFromSeed(minisecret).publicKey; + const testmini = mnemonicToMiniSecret(mnemonic, count ? `${count}` : '', undefined, onlyJsMini); + + // explicit minisecret compare + expect( + u8aEq(minisecret, testmini) + ).toEqual(true); + + // compare the sr25519 keypair generated + expect( + u8aEq(srpub, sr25519PairFromSeed(testmini).publicKey) + ).toEqual(true); + + // compare ed both in WASM and JS + [true, false].forEach((onlyJsEd): void => { + expect( + u8aEq(edpub, ed25519PairFromSeed(testmini, onlyJsEd).publicKey) + ).toEqual(true); + }); + }); + } + }); + }); + } + }); + } + }); +} diff --git a/packages/util-crypto/src/mnemonic/validate.spec.ts b/packages/util-crypto/src/mnemonic/validate.spec.ts new file mode 100644 index 0000000..3683bea --- /dev/null +++ b/packages/util-crypto/src/mnemonic/validate.spec.ts @@ -0,0 +1,39 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { cryptoWaitReady } from '../index.js'; +import { french as frenchWords } from './wordlists/index.js'; +import { mnemonicValidate } from './validate.js'; + +await cryptoWaitReady(); + +describe('mnemonicValidate', (): void => { + for (const onlyJs of [undefined, true]) { + describe(`onlyJs=${(onlyJs && 'true') || 'false'}`, (): void => { + it('returns true on valid', (): void => { + expect( + mnemonicValidate('seed sock milk update focus rotate barely fade car face mechanic mercy', undefined, onlyJs) + ).toEqual(true); + }); + + it('returns false on invalid', (): void => { + expect( + mnemonicValidate('wine photo extra cushion basket dwarf humor cloud truck job boat submit', undefined, onlyJs) + ).toEqual(false); + }); + }); + } + + it('allows usage of a different wordlist', (): void => { + const mnemonic = 'pompier circuler pulpe injure aspect abyssal nuque boueux équerre balisage pieuvre médecin petit suffixe soleil cumuler monstre arlequin liasse pixel garrigue noble buisson scandale'; + + expect( + mnemonicValidate(mnemonic, frenchWords) + ).toEqual(true); + expect( + mnemonicValidate(mnemonic) + ).toEqual(false); + }); +}); diff --git a/packages/util-crypto/src/mnemonic/validate.ts b/packages/util-crypto/src/mnemonic/validate.ts new file mode 100644 index 0000000..dee0957 --- /dev/null +++ b/packages/util-crypto/src/mnemonic/validate.ts @@ -0,0 +1,26 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import { hasBigInt } from '@pezkuwi/util'; +import { bip39Validate, isReady } from '@pezkuwi/wasm-crypto'; + +import { validateMnemonic } from './bip39.js'; + +/** + * @name mnemonicValidate + * @summary Validates a mnemonic input using [BIP39](https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki). + * @example + *
+ * + * ```javascript + * import { mnemonicGenerate, mnemonicValidate } from '@pezkuwi/util-crypto'; + * + * const mnemonic = mnemonicGenerate(); // => string + * const isValidMnemonic = mnemonicValidate(mnemonic); // => boolean + * ``` + */ +export function mnemonicValidate (mnemonic: string, wordlist?: string[], onlyJs?: boolean): boolean { + return !hasBigInt || (!wordlist && !onlyJs && isReady()) + ? bip39Validate(mnemonic) + : validateMnemonic(mnemonic, wordlist); +} diff --git a/packages/util-crypto/src/mnemonic/wordlists/en.ts b/packages/util-crypto/src/mnemonic/wordlists/en.ts new file mode 100644 index 0000000..d226189 --- /dev/null +++ b/packages/util-crypto/src/mnemonic/wordlists/en.ts @@ -0,0 +1,7 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +// Adapted from the bitcoinjs/bip39 source +// https://github.com/bitcoinjs/bip39/blob/1d063b6a6aee4145b34d701037cd3e67f5446ff9/ts_src/ + +export default 'abandon|ability|able|about|above|absent|absorb|abstract|absurd|abuse|access|accident|account|accuse|achieve|acid|acoustic|acquire|across|act|action|actor|actress|actual|adapt|add|addict|address|adjust|admit|adult|advance|advice|aerobic|affair|afford|afraid|again|age|agent|agree|ahead|aim|air|airport|aisle|alarm|album|alcohol|alert|alien|all|alley|allow|almost|alone|alpha|already|also|alter|always|amateur|amazing|among|amount|amused|analyst|anchor|ancient|anger|angle|angry|animal|ankle|announce|annual|another|answer|antenna|antique|anxiety|any|apart|apology|appear|apple|approve|april|arch|arctic|area|arena|argue|arm|armed|armor|army|around|arrange|arrest|arrive|arrow|art|artefact|artist|artwork|ask|aspect|assault|asset|assist|assume|asthma|athlete|atom|attack|attend|attitude|attract|auction|audit|august|aunt|author|auto|autumn|average|avocado|avoid|awake|aware|away|awesome|awful|awkward|axis|baby|bachelor|bacon|badge|bag|balance|balcony|ball|bamboo|banana|banner|bar|barely|bargain|barrel|base|basic|basket|battle|beach|bean|beauty|because|become|beef|before|begin|behave|behind|believe|below|belt|bench|benefit|best|betray|better|between|beyond|bicycle|bid|bike|bind|biology|bird|birth|bitter|black|blade|blame|blanket|blast|bleak|bless|blind|blood|blossom|blouse|blue|blur|blush|board|boat|body|boil|bomb|bone|bonus|book|boost|border|boring|borrow|boss|bottom|bounce|box|boy|bracket|brain|brand|brass|brave|bread|breeze|brick|bridge|brief|bright|bring|brisk|broccoli|broken|bronze|broom|brother|brown|brush|bubble|buddy|budget|buffalo|build|bulb|bulk|bullet|bundle|bunker|burden|burger|burst|bus|business|busy|butter|buyer|buzz|cabbage|cabin|cable|cactus|cage|cake|call|calm|camera|camp|can|canal|cancel|candy|cannon|canoe|canvas|canyon|capable|capital|captain|car|carbon|card|cargo|carpet|carry|cart|case|cash|casino|castle|casual|cat|catalog|catch|category|cattle|caught|cause|caution|cave|ceiling|celery|cement|census|century|cereal|certain|chair|chalk|champion|change|chaos|chapter|charge|chase|chat|cheap|check|cheese|chef|cherry|chest|chicken|chief|child|chimney|choice|choose|chronic|chuckle|chunk|churn|cigar|cinnamon|circle|citizen|city|civil|claim|clap|clarify|claw|clay|clean|clerk|clever|click|client|cliff|climb|clinic|clip|clock|clog|close|cloth|cloud|clown|club|clump|cluster|clutch|coach|coast|coconut|code|coffee|coil|coin|collect|color|column|combine|come|comfort|comic|common|company|concert|conduct|confirm|congress|connect|consider|control|convince|cook|cool|copper|copy|coral|core|corn|correct|cost|cotton|couch|country|couple|course|cousin|cover|coyote|crack|cradle|craft|cram|crane|crash|crater|crawl|crazy|cream|credit|creek|crew|cricket|crime|crisp|critic|crop|cross|crouch|crowd|crucial|cruel|cruise|crumble|crunch|crush|cry|crystal|cube|culture|cup|cupboard|curious|current|curtain|curve|cushion|custom|cute|cycle|dad|damage|damp|dance|danger|daring|dash|daughter|dawn|day|deal|debate|debris|decade|december|decide|decline|decorate|decrease|deer|defense|define|defy|degree|delay|deliver|demand|demise|denial|dentist|deny|depart|depend|deposit|depth|deputy|derive|describe|desert|design|desk|despair|destroy|detail|detect|develop|device|devote|diagram|dial|diamond|diary|dice|diesel|diet|differ|digital|dignity|dilemma|dinner|dinosaur|direct|dirt|disagree|discover|disease|dish|dismiss|disorder|display|distance|divert|divide|divorce|dizzy|doctor|document|dog|doll|dolphin|domain|donate|donkey|donor|door|dose|double|dove|draft|dragon|drama|drastic|draw|dream|dress|drift|drill|drink|drip|drive|drop|drum|dry|duck|dumb|dune|during|dust|dutch|duty|dwarf|dynamic|eager|eagle|early|earn|earth|easily|east|easy|echo|ecology|economy|edge|edit|educate|effort|egg|eight|either|elbow|elder|electric|elegant|element|elephant|elevator|elite|else|embark|embody|embrace|emerge|emotion|employ|empower|empty|enable|enact|end|endless|endorse|enemy|energy|enforce|engage|engine|enhance|enjoy|enlist|enough|enrich|enroll|ensure|enter|entire|entry|envelope|episode|equal|equip|era|erase|erode|erosion|error|erupt|escape|essay|essence|estate|eternal|ethics|evidence|evil|evoke|evolve|exact|example|excess|exchange|excite|exclude|excuse|execute|exercise|exhaust|exhibit|exile|exist|exit|exotic|expand|expect|expire|explain|expose|express|extend|extra|eye|eyebrow|fabric|face|faculty|fade|faint|faith|fall|false|fame|family|famous|fan|fancy|fantasy|farm|fashion|fat|fatal|father|fatigue|fault|favorite|feature|february|federal|fee|feed|feel|female|fence|festival|fetch|fever|few|fiber|fiction|field|figure|file|film|filter|final|find|fine|finger|finish|fire|firm|first|fiscal|fish|fit|fitness|fix|flag|flame|flash|flat|flavor|flee|flight|flip|float|flock|floor|flower|fluid|flush|fly|foam|focus|fog|foil|fold|follow|food|foot|force|forest|forget|fork|fortune|forum|forward|fossil|foster|found|fox|fragile|frame|frequent|fresh|friend|fringe|frog|front|frost|frown|frozen|fruit|fuel|fun|funny|furnace|fury|future|gadget|gain|galaxy|gallery|game|gap|garage|garbage|garden|garlic|garment|gas|gasp|gate|gather|gauge|gaze|general|genius|genre|gentle|genuine|gesture|ghost|giant|gift|giggle|ginger|giraffe|girl|give|glad|glance|glare|glass|glide|glimpse|globe|gloom|glory|glove|glow|glue|goat|goddess|gold|good|goose|gorilla|gospel|gossip|govern|gown|grab|grace|grain|grant|grape|grass|gravity|great|green|grid|grief|grit|grocery|group|grow|grunt|guard|guess|guide|guilt|guitar|gun|gym|habit|hair|half|hammer|hamster|hand|happy|harbor|hard|harsh|harvest|hat|have|hawk|hazard|head|health|heart|heavy|hedgehog|height|hello|helmet|help|hen|hero|hidden|high|hill|hint|hip|hire|history|hobby|hockey|hold|hole|holiday|hollow|home|honey|hood|hope|horn|horror|horse|hospital|host|hotel|hour|hover|hub|huge|human|humble|humor|hundred|hungry|hunt|hurdle|hurry|hurt|husband|hybrid|ice|icon|idea|identify|idle|ignore|ill|illegal|illness|image|imitate|immense|immune|impact|impose|improve|impulse|inch|include|income|increase|index|indicate|indoor|industry|infant|inflict|inform|inhale|inherit|initial|inject|injury|inmate|inner|innocent|input|inquiry|insane|insect|inside|inspire|install|intact|interest|into|invest|invite|involve|iron|island|isolate|issue|item|ivory|jacket|jaguar|jar|jazz|jealous|jeans|jelly|jewel|job|join|joke|journey|joy|judge|juice|jump|jungle|junior|junk|just|kangaroo|keen|keep|ketchup|key|kick|kid|kidney|kind|kingdom|kiss|kit|kitchen|kite|kitten|kiwi|knee|knife|knock|know|lab|label|labor|ladder|lady|lake|lamp|language|laptop|large|later|latin|laugh|laundry|lava|law|lawn|lawsuit|layer|lazy|leader|leaf|learn|leave|lecture|left|leg|legal|legend|leisure|lemon|lend|length|lens|leopard|lesson|letter|level|liar|liberty|library|license|life|lift|light|like|limb|limit|link|lion|liquid|list|little|live|lizard|load|loan|lobster|local|lock|logic|lonely|long|loop|lottery|loud|lounge|love|loyal|lucky|luggage|lumber|lunar|lunch|luxury|lyrics|machine|mad|magic|magnet|maid|mail|main|major|make|mammal|man|manage|mandate|mango|mansion|manual|maple|marble|march|margin|marine|market|marriage|mask|mass|master|match|material|math|matrix|matter|maximum|maze|meadow|mean|measure|meat|mechanic|medal|media|melody|melt|member|memory|mention|menu|mercy|merge|merit|merry|mesh|message|metal|method|middle|midnight|milk|million|mimic|mind|minimum|minor|minute|miracle|mirror|misery|miss|mistake|mix|mixed|mixture|mobile|model|modify|mom|moment|monitor|monkey|monster|month|moon|moral|more|morning|mosquito|mother|motion|motor|mountain|mouse|move|movie|much|muffin|mule|multiply|muscle|museum|mushroom|music|must|mutual|myself|mystery|myth|naive|name|napkin|narrow|nasty|nation|nature|near|neck|need|negative|neglect|neither|nephew|nerve|nest|net|network|neutral|never|news|next|nice|night|noble|noise|nominee|noodle|normal|north|nose|notable|note|nothing|notice|novel|now|nuclear|number|nurse|nut|oak|obey|object|oblige|obscure|observe|obtain|obvious|occur|ocean|october|odor|off|offer|office|often|oil|okay|old|olive|olympic|omit|once|one|onion|online|only|open|opera|opinion|oppose|option|orange|orbit|orchard|order|ordinary|organ|orient|original|orphan|ostrich|other|outdoor|outer|output|outside|oval|oven|over|own|owner|oxygen|oyster|ozone|pact|paddle|page|pair|palace|palm|panda|panel|panic|panther|paper|parade|parent|park|parrot|party|pass|patch|path|patient|patrol|pattern|pause|pave|payment|peace|peanut|pear|peasant|pelican|pen|penalty|pencil|people|pepper|perfect|permit|person|pet|phone|photo|phrase|physical|piano|picnic|picture|piece|pig|pigeon|pill|pilot|pink|pioneer|pipe|pistol|pitch|pizza|place|planet|plastic|plate|play|please|pledge|pluck|plug|plunge|poem|poet|point|polar|pole|police|pond|pony|pool|popular|portion|position|possible|post|potato|pottery|poverty|powder|power|practice|praise|predict|prefer|prepare|present|pretty|prevent|price|pride|primary|print|priority|prison|private|prize|problem|process|produce|profit|program|project|promote|proof|property|prosper|protect|proud|provide|public|pudding|pull|pulp|pulse|pumpkin|punch|pupil|puppy|purchase|purity|purpose|purse|push|put|puzzle|pyramid|quality|quantum|quarter|question|quick|quit|quiz|quote|rabbit|raccoon|race|rack|radar|radio|rail|rain|raise|rally|ramp|ranch|random|range|rapid|rare|rate|rather|raven|raw|razor|ready|real|reason|rebel|rebuild|recall|receive|recipe|record|recycle|reduce|reflect|reform|refuse|region|regret|regular|reject|relax|release|relief|rely|remain|remember|remind|remove|render|renew|rent|reopen|repair|repeat|replace|report|require|rescue|resemble|resist|resource|response|result|retire|retreat|return|reunion|reveal|review|reward|rhythm|rib|ribbon|rice|rich|ride|ridge|rifle|right|rigid|ring|riot|ripple|risk|ritual|rival|river|road|roast|robot|robust|rocket|romance|roof|rookie|room|rose|rotate|rough|round|route|royal|rubber|rude|rug|rule|run|runway|rural|sad|saddle|sadness|safe|sail|salad|salmon|salon|salt|salute|same|sample|sand|satisfy|satoshi|sauce|sausage|save|say|scale|scan|scare|scatter|scene|scheme|school|science|scissors|scorpion|scout|scrap|screen|script|scrub|sea|search|season|seat|second|secret|section|security|seed|seek|segment|select|sell|seminar|senior|sense|sentence|series|service|session|settle|setup|seven|shadow|shaft|shallow|share|shed|shell|sheriff|shield|shift|shine|ship|shiver|shock|shoe|shoot|shop|short|shoulder|shove|shrimp|shrug|shuffle|shy|sibling|sick|side|siege|sight|sign|silent|silk|silly|silver|similar|simple|since|sing|siren|sister|situate|six|size|skate|sketch|ski|skill|skin|skirt|skull|slab|slam|sleep|slender|slice|slide|slight|slim|slogan|slot|slow|slush|small|smart|smile|smoke|smooth|snack|snake|snap|sniff|snow|soap|soccer|social|sock|soda|soft|solar|soldier|solid|solution|solve|someone|song|soon|sorry|sort|soul|sound|soup|source|south|space|spare|spatial|spawn|speak|special|speed|spell|spend|sphere|spice|spider|spike|spin|spirit|split|spoil|sponsor|spoon|sport|spot|spray|spread|spring|spy|square|squeeze|squirrel|stable|stadium|staff|stage|stairs|stamp|stand|start|state|stay|steak|steel|stem|step|stereo|stick|still|sting|stock|stomach|stone|stool|story|stove|strategy|street|strike|strong|struggle|student|stuff|stumble|style|subject|submit|subway|success|such|sudden|suffer|sugar|suggest|suit|summer|sun|sunny|sunset|super|supply|supreme|sure|surface|surge|surprise|surround|survey|suspect|sustain|swallow|swamp|swap|swarm|swear|sweet|swift|swim|swing|switch|sword|symbol|symptom|syrup|system|table|tackle|tag|tail|talent|talk|tank|tape|target|task|taste|tattoo|taxi|teach|team|tell|ten|tenant|tennis|tent|term|test|text|thank|that|theme|then|theory|there|they|thing|this|thought|three|thrive|throw|thumb|thunder|ticket|tide|tiger|tilt|timber|time|tiny|tip|tired|tissue|title|toast|tobacco|today|toddler|toe|together|toilet|token|tomato|tomorrow|tone|tongue|tonight|tool|tooth|top|topic|topple|torch|tornado|tortoise|toss|total|tourist|toward|tower|town|toy|track|trade|traffic|tragic|train|transfer|trap|trash|travel|tray|treat|tree|trend|trial|tribe|trick|trigger|trim|trip|trophy|trouble|truck|true|truly|trumpet|trust|truth|try|tube|tuition|tumble|tuna|tunnel|turkey|turn|turtle|twelve|twenty|twice|twin|twist|two|type|typical|ugly|umbrella|unable|unaware|uncle|uncover|under|undo|unfair|unfold|unhappy|uniform|unique|unit|universe|unknown|unlock|until|unusual|unveil|update|upgrade|uphold|upon|upper|upset|urban|urge|usage|use|used|useful|useless|usual|utility|vacant|vacuum|vague|valid|valley|valve|van|vanish|vapor|various|vast|vault|vehicle|velvet|vendor|venture|venue|verb|verify|version|very|vessel|veteran|viable|vibrant|vicious|victory|video|view|village|vintage|violin|virtual|virus|visa|visit|visual|vital|vivid|vocal|voice|void|volcano|volume|vote|voyage|wage|wagon|wait|walk|wall|walnut|want|warfare|warm|warrior|wash|wasp|waste|water|wave|way|wealth|weapon|wear|weasel|weather|web|wedding|weekend|weird|welcome|west|wet|whale|what|wheat|wheel|when|where|whip|whisper|wide|width|wife|wild|will|win|window|wine|wing|wink|winner|winter|wire|wisdom|wise|wish|witness|wolf|woman|wonder|wood|wool|word|work|world|worry|worth|wrap|wreck|wrestle|wrist|write|wrong|yard|year|yellow|you|young|youth|zebra|zero|zone|zoo'.split('|'); diff --git a/packages/util-crypto/src/mnemonic/wordlists/es.ts b/packages/util-crypto/src/mnemonic/wordlists/es.ts new file mode 100644 index 0000000..a8a8d40 --- /dev/null +++ b/packages/util-crypto/src/mnemonic/wordlists/es.ts @@ -0,0 +1,7 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +// Adapted from the bitcoinjs/bip39 source +// https://github.com/bitcoinjs/bip39/blob/1d063b6a6aee4145b34d701037cd3e67f5446ff9/ts_src/ + +export default 'ábaco|abdomen|abeja|abierto|abogado|abono|aborto|abrazo|abrir|abuelo|abuso|acabar|academia|acceso|acción|aceite|acelga|acento|aceptar|ácido|aclarar|acné|acoger|acoso|activo|acto|actriz|actuar|acudir|acuerdo|acusar|adicto|admitir|adoptar|adorno|aduana|adulto|aéreo|afectar|afición|afinar|afirmar|ágil|agitar|agonía|agosto|agotar|agregar|agrio|agua|agudo|águila|aguja|ahogo|ahorro|aire|aislar|ajedrez|ajeno|ajuste|alacrán|alambre|alarma|alba|álbum|alcalde|aldea|alegre|alejar|alerta|aleta|alfiler|alga|algodón|aliado|aliento|alivio|alma|almeja|almíbar|altar|alteza|altivo|alto|altura|alumno|alzar|amable|amante|amapola|amargo|amasar|ámbar|ámbito|ameno|amigo|amistad|amor|amparo|amplio|ancho|anciano|ancla|andar|andén|anemia|ángulo|anillo|ánimo|anís|anotar|antena|antiguo|antojo|anual|anular|anuncio|añadir|añejo|año|apagar|aparato|apetito|apio|aplicar|apodo|aporte|apoyo|aprender|aprobar|apuesta|apuro|arado|araña|arar|árbitro|árbol|arbusto|archivo|arco|arder|ardilla|arduo|área|árido|aries|armonía|arnés|aroma|arpa|arpón|arreglo|arroz|arruga|arte|artista|asa|asado|asalto|ascenso|asegurar|aseo|asesor|asiento|asilo|asistir|asno|asombro|áspero|astilla|astro|astuto|asumir|asunto|atajo|ataque|atar|atento|ateo|ático|atleta|átomo|atraer|atroz|atún|audaz|audio|auge|aula|aumento|ausente|autor|aval|avance|avaro|ave|avellana|avena|avestruz|avión|aviso|ayer|ayuda|ayuno|azafrán|azar|azote|azúcar|azufre|azul|baba|babor|bache|bahía|baile|bajar|balanza|balcón|balde|bambú|banco|banda|baño|barba|barco|barniz|barro|báscula|bastón|basura|batalla|batería|batir|batuta|baúl|bazar|bebé|bebida|bello|besar|beso|bestia|bicho|bien|bingo|blanco|bloque|blusa|boa|bobina|bobo|boca|bocina|boda|bodega|boina|bola|bolero|bolsa|bomba|bondad|bonito|bono|bonsái|borde|borrar|bosque|bote|botín|bóveda|bozal|bravo|brazo|brecha|breve|brillo|brinco|brisa|broca|broma|bronce|brote|bruja|brusco|bruto|buceo|bucle|bueno|buey|bufanda|bufón|búho|buitre|bulto|burbuja|burla|burro|buscar|butaca|buzón|caballo|cabeza|cabina|cabra|cacao|cadáver|cadena|caer|café|caída|caimán|caja|cajón|cal|calamar|calcio|caldo|calidad|calle|calma|calor|calvo|cama|cambio|camello|camino|campo|cáncer|candil|canela|canguro|canica|canto|caña|cañón|caoba|caos|capaz|capitán|capote|captar|capucha|cara|carbón|cárcel|careta|carga|cariño|carne|carpeta|carro|carta|casa|casco|casero|caspa|castor|catorce|catre|caudal|causa|cazo|cebolla|ceder|cedro|celda|célebre|celoso|célula|cemento|ceniza|centro|cerca|cerdo|cereza|cero|cerrar|certeza|césped|cetro|chacal|chaleco|champú|chancla|chapa|charla|chico|chiste|chivo|choque|choza|chuleta|chupar|ciclón|ciego|cielo|cien|cierto|cifra|cigarro|cima|cinco|cine|cinta|ciprés|circo|ciruela|cisne|cita|ciudad|clamor|clan|claro|clase|clave|cliente|clima|clínica|cobre|cocción|cochino|cocina|coco|código|codo|cofre|coger|cohete|cojín|cojo|cola|colcha|colegio|colgar|colina|collar|colmo|columna|combate|comer|comida|cómodo|compra|conde|conejo|conga|conocer|consejo|contar|copa|copia|corazón|corbata|corcho|cordón|corona|correr|coser|cosmos|costa|cráneo|cráter|crear|crecer|creído|crema|cría|crimen|cripta|crisis|cromo|crónica|croqueta|crudo|cruz|cuadro|cuarto|cuatro|cubo|cubrir|cuchara|cuello|cuento|cuerda|cuesta|cueva|cuidar|culebra|culpa|culto|cumbre|cumplir|cuna|cuneta|cuota|cupón|cúpula|curar|curioso|curso|curva|cutis|dama|danza|dar|dardo|dátil|deber|débil|década|decir|dedo|defensa|definir|dejar|delfín|delgado|delito|demora|denso|dental|deporte|derecho|derrota|desayuno|deseo|desfile|desnudo|destino|desvío|detalle|detener|deuda|día|diablo|diadema|diamante|diana|diario|dibujo|dictar|diente|dieta|diez|difícil|digno|dilema|diluir|dinero|directo|dirigir|disco|diseño|disfraz|diva|divino|doble|doce|dolor|domingo|don|donar|dorado|dormir|dorso|dos|dosis|dragón|droga|ducha|duda|duelo|dueño|dulce|dúo|duque|durar|dureza|duro|ébano|ebrio|echar|eco|ecuador|edad|edición|edificio|editor|educar|efecto|eficaz|eje|ejemplo|elefante|elegir|elemento|elevar|elipse|élite|elixir|elogio|eludir|embudo|emitir|emoción|empate|empeño|empleo|empresa|enano|encargo|enchufe|encía|enemigo|enero|enfado|enfermo|engaño|enigma|enlace|enorme|enredo|ensayo|enseñar|entero|entrar|envase|envío|época|equipo|erizo|escala|escena|escolar|escribir|escudo|esencia|esfera|esfuerzo|espada|espejo|espía|esposa|espuma|esquí|estar|este|estilo|estufa|etapa|eterno|ética|etnia|evadir|evaluar|evento|evitar|exacto|examen|exceso|excusa|exento|exigir|exilio|existir|éxito|experto|explicar|exponer|extremo|fábrica|fábula|fachada|fácil|factor|faena|faja|falda|fallo|falso|faltar|fama|familia|famoso|faraón|farmacia|farol|farsa|fase|fatiga|fauna|favor|fax|febrero|fecha|feliz|feo|feria|feroz|fértil|fervor|festín|fiable|fianza|fiar|fibra|ficción|ficha|fideo|fiebre|fiel|fiera|fiesta|figura|fijar|fijo|fila|filete|filial|filtro|fin|finca|fingir|finito|firma|flaco|flauta|flecha|flor|flota|fluir|flujo|flúor|fobia|foca|fogata|fogón|folio|folleto|fondo|forma|forro|fortuna|forzar|fosa|foto|fracaso|frágil|franja|frase|fraude|freír|freno|fresa|frío|frito|fruta|fuego|fuente|fuerza|fuga|fumar|función|funda|furgón|furia|fusil|fútbol|futuro|gacela|gafas|gaita|gajo|gala|galería|gallo|gamba|ganar|gancho|ganga|ganso|garaje|garza|gasolina|gastar|gato|gavilán|gemelo|gemir|gen|género|genio|gente|geranio|gerente|germen|gesto|gigante|gimnasio|girar|giro|glaciar|globo|gloria|gol|golfo|goloso|golpe|goma|gordo|gorila|gorra|gota|goteo|gozar|grada|gráfico|grano|grasa|gratis|grave|grieta|grillo|gripe|gris|grito|grosor|grúa|grueso|grumo|grupo|guante|guapo|guardia|guerra|guía|guiño|guion|guiso|guitarra|gusano|gustar|haber|hábil|hablar|hacer|hacha|hada|hallar|hamaca|harina|haz|hazaña|hebilla|hebra|hecho|helado|helio|hembra|herir|hermano|héroe|hervir|hielo|hierro|hígado|higiene|hijo|himno|historia|hocico|hogar|hoguera|hoja|hombre|hongo|honor|honra|hora|hormiga|horno|hostil|hoyo|hueco|huelga|huerta|hueso|huevo|huida|huir|humano|húmedo|humilde|humo|hundir|huracán|hurto|icono|ideal|idioma|ídolo|iglesia|iglú|igual|ilegal|ilusión|imagen|imán|imitar|impar|imperio|imponer|impulso|incapaz|índice|inerte|infiel|informe|ingenio|inicio|inmenso|inmune|innato|insecto|instante|interés|íntimo|intuir|inútil|invierno|ira|iris|ironía|isla|islote|jabalí|jabón|jamón|jarabe|jardín|jarra|jaula|jazmín|jefe|jeringa|jinete|jornada|joroba|joven|joya|juerga|jueves|juez|jugador|jugo|juguete|juicio|junco|jungla|junio|juntar|júpiter|jurar|justo|juvenil|juzgar|kilo|koala|labio|lacio|lacra|lado|ladrón|lagarto|lágrima|laguna|laico|lamer|lámina|lámpara|lana|lancha|langosta|lanza|lápiz|largo|larva|lástima|lata|látex|latir|laurel|lavar|lazo|leal|lección|leche|lector|leer|legión|legumbre|lejano|lengua|lento|leña|león|leopardo|lesión|letal|letra|leve|leyenda|libertad|libro|licor|líder|lidiar|lienzo|liga|ligero|lima|límite|limón|limpio|lince|lindo|línea|lingote|lino|linterna|líquido|liso|lista|litera|litio|litro|llaga|llama|llanto|llave|llegar|llenar|llevar|llorar|llover|lluvia|lobo|loción|loco|locura|lógica|logro|lombriz|lomo|lonja|lote|lucha|lucir|lugar|lujo|luna|lunes|lupa|lustro|luto|luz|maceta|macho|madera|madre|maduro|maestro|mafia|magia|mago|maíz|maldad|maleta|malla|malo|mamá|mambo|mamut|manco|mando|manejar|manga|maniquí|manjar|mano|manso|manta|mañana|mapa|máquina|mar|marco|marea|marfil|margen|marido|mármol|marrón|martes|marzo|masa|máscara|masivo|matar|materia|matiz|matriz|máximo|mayor|mazorca|mecha|medalla|medio|médula|mejilla|mejor|melena|melón|memoria|menor|mensaje|mente|menú|mercado|merengue|mérito|mes|mesón|meta|meter|método|metro|mezcla|miedo|miel|miembro|miga|mil|milagro|militar|millón|mimo|mina|minero|mínimo|minuto|miope|mirar|misa|miseria|misil|mismo|mitad|mito|mochila|moción|moda|modelo|moho|mojar|molde|moler|molino|momento|momia|monarca|moneda|monja|monto|moño|morada|morder|moreno|morir|morro|morsa|mortal|mosca|mostrar|motivo|mover|móvil|mozo|mucho|mudar|mueble|muela|muerte|muestra|mugre|mujer|mula|muleta|multa|mundo|muñeca|mural|muro|músculo|museo|musgo|música|muslo|nácar|nación|nadar|naipe|naranja|nariz|narrar|nasal|natal|nativo|natural|náusea|naval|nave|navidad|necio|néctar|negar|negocio|negro|neón|nervio|neto|neutro|nevar|nevera|nicho|nido|niebla|nieto|niñez|niño|nítido|nivel|nobleza|noche|nómina|noria|norma|norte|nota|noticia|novato|novela|novio|nube|nuca|núcleo|nudillo|nudo|nuera|nueve|nuez|nulo|número|nutria|oasis|obeso|obispo|objeto|obra|obrero|observar|obtener|obvio|oca|ocaso|océano|ochenta|ocho|ocio|ocre|octavo|octubre|oculto|ocupar|ocurrir|odiar|odio|odisea|oeste|ofensa|oferta|oficio|ofrecer|ogro|oído|oír|ojo|ola|oleada|olfato|olivo|olla|olmo|olor|olvido|ombligo|onda|onza|opaco|opción|ópera|opinar|oponer|optar|óptica|opuesto|oración|orador|oral|órbita|orca|orden|oreja|órgano|orgía|orgullo|oriente|origen|orilla|oro|orquesta|oruga|osadía|oscuro|osezno|oso|ostra|otoño|otro|oveja|óvulo|óxido|oxígeno|oyente|ozono|pacto|padre|paella|página|pago|país|pájaro|palabra|palco|paleta|pálido|palma|paloma|palpar|pan|panal|pánico|pantera|pañuelo|papá|papel|papilla|paquete|parar|parcela|pared|parir|paro|párpado|parque|párrafo|parte|pasar|paseo|pasión|paso|pasta|pata|patio|patria|pausa|pauta|pavo|payaso|peatón|pecado|pecera|pecho|pedal|pedir|pegar|peine|pelar|peldaño|pelea|peligro|pellejo|pelo|peluca|pena|pensar|peñón|peón|peor|pepino|pequeño|pera|percha|perder|pereza|perfil|perico|perla|permiso|perro|persona|pesa|pesca|pésimo|pestaña|pétalo|petróleo|pez|pezuña|picar|pichón|pie|piedra|pierna|pieza|pijama|pilar|piloto|pimienta|pino|pintor|pinza|piña|piojo|pipa|pirata|pisar|piscina|piso|pista|pitón|pizca|placa|plan|plata|playa|plaza|pleito|pleno|plomo|pluma|plural|pobre|poco|poder|podio|poema|poesía|poeta|polen|policía|pollo|polvo|pomada|pomelo|pomo|pompa|poner|porción|portal|posada|poseer|posible|poste|potencia|potro|pozo|prado|precoz|pregunta|premio|prensa|preso|previo|primo|príncipe|prisión|privar|proa|probar|proceso|producto|proeza|profesor|programa|prole|promesa|pronto|propio|próximo|prueba|público|puchero|pudor|pueblo|puerta|puesto|pulga|pulir|pulmón|pulpo|pulso|puma|punto|puñal|puño|pupa|pupila|puré|quedar|queja|quemar|querer|queso|quieto|química|quince|quitar|rábano|rabia|rabo|ración|radical|raíz|rama|rampa|rancho|rango|rapaz|rápido|rapto|rasgo|raspa|rato|rayo|raza|razón|reacción|realidad|rebaño|rebote|recaer|receta|rechazo|recoger|recreo|recto|recurso|red|redondo|reducir|reflejo|reforma|refrán|refugio|regalo|regir|regla|regreso|rehén|reino|reír|reja|relato|relevo|relieve|relleno|reloj|remar|remedio|remo|rencor|rendir|renta|reparto|repetir|reposo|reptil|res|rescate|resina|respeto|resto|resumen|retiro|retorno|retrato|reunir|revés|revista|rey|rezar|rico|riego|rienda|riesgo|rifa|rígido|rigor|rincón|riñón|río|riqueza|risa|ritmo|rito|rizo|roble|roce|rociar|rodar|rodeo|rodilla|roer|rojizo|rojo|romero|romper|ron|ronco|ronda|ropa|ropero|rosa|rosca|rostro|rotar|rubí|rubor|rudo|rueda|rugir|ruido|ruina|ruleta|rulo|rumbo|rumor|ruptura|ruta|rutina|sábado|saber|sabio|sable|sacar|sagaz|sagrado|sala|saldo|salero|salir|salmón|salón|salsa|salto|salud|salvar|samba|sanción|sandía|sanear|sangre|sanidad|sano|santo|sapo|saque|sardina|sartén|sastre|satán|sauna|saxofón|sección|seco|secreto|secta|sed|seguir|seis|sello|selva|semana|semilla|senda|sensor|señal|señor|separar|sepia|sequía|ser|serie|sermón|servir|sesenta|sesión|seta|setenta|severo|sexo|sexto|sidra|siesta|siete|siglo|signo|sílaba|silbar|silencio|silla|símbolo|simio|sirena|sistema|sitio|situar|sobre|socio|sodio|sol|solapa|soldado|soledad|sólido|soltar|solución|sombra|sondeo|sonido|sonoro|sonrisa|sopa|soplar|soporte|sordo|sorpresa|sorteo|sostén|sótano|suave|subir|suceso|sudor|suegra|suelo|sueño|suerte|sufrir|sujeto|sultán|sumar|superar|suplir|suponer|supremo|sur|surco|sureño|surgir|susto|sutil|tabaco|tabique|tabla|tabú|taco|tacto|tajo|talar|talco|talento|talla|talón|tamaño|tambor|tango|tanque|tapa|tapete|tapia|tapón|taquilla|tarde|tarea|tarifa|tarjeta|tarot|tarro|tarta|tatuaje|tauro|taza|tazón|teatro|techo|tecla|técnica|tejado|tejer|tejido|tela|teléfono|tema|temor|templo|tenaz|tender|tener|tenis|tenso|teoría|terapia|terco|término|ternura|terror|tesis|tesoro|testigo|tetera|texto|tez|tibio|tiburón|tiempo|tienda|tierra|tieso|tigre|tijera|tilde|timbre|tímido|timo|tinta|tío|típico|tipo|tira|tirón|titán|títere|título|tiza|toalla|tobillo|tocar|tocino|todo|toga|toldo|tomar|tono|tonto|topar|tope|toque|tórax|torero|tormenta|torneo|toro|torpedo|torre|torso|tortuga|tos|tosco|toser|tóxico|trabajo|tractor|traer|tráfico|trago|traje|tramo|trance|trato|trauma|trazar|trébol|tregua|treinta|tren|trepar|tres|tribu|trigo|tripa|triste|triunfo|trofeo|trompa|tronco|tropa|trote|trozo|truco|trueno|trufa|tubería|tubo|tuerto|tumba|tumor|túnel|túnica|turbina|turismo|turno|tutor|ubicar|úlcera|umbral|unidad|unir|universo|uno|untar|uña|urbano|urbe|urgente|urna|usar|usuario|útil|utopía|uva|vaca|vacío|vacuna|vagar|vago|vaina|vajilla|vale|válido|valle|valor|válvula|vampiro|vara|variar|varón|vaso|vecino|vector|vehículo|veinte|vejez|vela|velero|veloz|vena|vencer|venda|veneno|vengar|venir|venta|venus|ver|verano|verbo|verde|vereda|verja|verso|verter|vía|viaje|vibrar|vicio|víctima|vida|vídeo|vidrio|viejo|viernes|vigor|vil|villa|vinagre|vino|viñedo|violín|viral|virgo|virtud|visor|víspera|vista|vitamina|viudo|vivaz|vivero|vivir|vivo|volcán|volumen|volver|voraz|votar|voto|voz|vuelo|vulgar|yacer|yate|yegua|yema|yerno|yeso|yodo|yoga|yogur|zafiro|zanja|zapato|zarza|zona|zorro|zumo|zurdo'.split('|'); diff --git a/packages/util-crypto/src/mnemonic/wordlists/fr.ts b/packages/util-crypto/src/mnemonic/wordlists/fr.ts new file mode 100644 index 0000000..74877b7 --- /dev/null +++ b/packages/util-crypto/src/mnemonic/wordlists/fr.ts @@ -0,0 +1,7 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +// Adapted from the bitcoinjs/bip39 source +// https://github.com/bitcoinjs/bip39/blob/1d063b6a6aee4145b34d701037cd3e67f5446ff9/ts_src/ + +export default 'abaisser|abandon|abdiquer|abeille|abolir|aborder|aboutir|aboyer|abrasif|abreuver|abriter|abroger|abrupt|absence|absolu|absurde|abusif|abyssal|académie|acajou|acarien|accabler|accepter|acclamer|accolade|accroche|accuser|acerbe|achat|acheter|aciduler|acier|acompte|acquérir|acronyme|acteur|actif|actuel|adepte|adéquat|adhésif|adjectif|adjuger|admettre|admirer|adopter|adorer|adoucir|adresse|adroit|adulte|adverbe|aérer|aéronef|affaire|affecter|affiche|affreux|affubler|agacer|agencer|agile|agiter|agrafer|agréable|agrume|aider|aiguille|ailier|aimable|aisance|ajouter|ajuster|alarmer|alchimie|alerte|algèbre|algue|aliéner|aliment|alléger|alliage|allouer|allumer|alourdir|alpaga|altesse|alvéole|amateur|ambigu|ambre|aménager|amertume|amidon|amiral|amorcer|amour|amovible|amphibie|ampleur|amusant|analyse|anaphore|anarchie|anatomie|ancien|anéantir|angle|angoisse|anguleux|animal|annexer|annonce|annuel|anodin|anomalie|anonyme|anormal|antenne|antidote|anxieux|apaiser|apéritif|aplanir|apologie|appareil|appeler|apporter|appuyer|aquarium|aqueduc|arbitre|arbuste|ardeur|ardoise|argent|arlequin|armature|armement|armoire|armure|arpenter|arracher|arriver|arroser|arsenic|artériel|article|aspect|asphalte|aspirer|assaut|asservir|assiette|associer|assurer|asticot|astre|astuce|atelier|atome|atrium|atroce|attaque|attentif|attirer|attraper|aubaine|auberge|audace|audible|augurer|aurore|automne|autruche|avaler|avancer|avarice|avenir|averse|aveugle|aviateur|avide|avion|aviser|avoine|avouer|avril|axial|axiome|badge|bafouer|bagage|baguette|baignade|balancer|balcon|baleine|balisage|bambin|bancaire|bandage|banlieue|bannière|banquier|barbier|baril|baron|barque|barrage|bassin|bastion|bataille|bateau|batterie|baudrier|bavarder|belette|bélier|belote|bénéfice|berceau|berger|berline|bermuda|besace|besogne|bétail|beurre|biberon|bicycle|bidule|bijou|bilan|bilingue|billard|binaire|biologie|biopsie|biotype|biscuit|bison|bistouri|bitume|bizarre|blafard|blague|blanchir|blessant|blinder|blond|bloquer|blouson|bobard|bobine|boire|boiser|bolide|bonbon|bondir|bonheur|bonifier|bonus|bordure|borne|botte|boucle|boueux|bougie|boulon|bouquin|bourse|boussole|boutique|boxeur|branche|brasier|brave|brebis|brèche|breuvage|bricoler|brigade|brillant|brioche|brique|brochure|broder|bronzer|brousse|broyeur|brume|brusque|brutal|bruyant|buffle|buisson|bulletin|bureau|burin|bustier|butiner|butoir|buvable|buvette|cabanon|cabine|cachette|cadeau|cadre|caféine|caillou|caisson|calculer|calepin|calibre|calmer|calomnie|calvaire|camarade|caméra|camion|campagne|canal|caneton|canon|cantine|canular|capable|caporal|caprice|capsule|capter|capuche|carabine|carbone|caresser|caribou|carnage|carotte|carreau|carton|cascade|casier|casque|cassure|causer|caution|cavalier|caverne|caviar|cédille|ceinture|céleste|cellule|cendrier|censurer|central|cercle|cérébral|cerise|cerner|cerveau|cesser|chagrin|chaise|chaleur|chambre|chance|chapitre|charbon|chasseur|chaton|chausson|chavirer|chemise|chenille|chéquier|chercher|cheval|chien|chiffre|chignon|chimère|chiot|chlorure|chocolat|choisir|chose|chouette|chrome|chute|cigare|cigogne|cimenter|cinéma|cintrer|circuler|cirer|cirque|citerne|citoyen|citron|civil|clairon|clameur|claquer|classe|clavier|client|cligner|climat|clivage|cloche|clonage|cloporte|cobalt|cobra|cocasse|cocotier|coder|codifier|coffre|cogner|cohésion|coiffer|coincer|colère|colibri|colline|colmater|colonel|combat|comédie|commande|compact|concert|conduire|confier|congeler|connoter|consonne|contact|convexe|copain|copie|corail|corbeau|cordage|corniche|corpus|correct|cortège|cosmique|costume|coton|coude|coupure|courage|couteau|couvrir|coyote|crabe|crainte|cravate|crayon|créature|créditer|crémeux|creuser|crevette|cribler|crier|cristal|critère|croire|croquer|crotale|crucial|cruel|crypter|cubique|cueillir|cuillère|cuisine|cuivre|culminer|cultiver|cumuler|cupide|curatif|curseur|cyanure|cycle|cylindre|cynique|daigner|damier|danger|danseur|dauphin|débattre|débiter|déborder|débrider|débutant|décaler|décembre|déchirer|décider|déclarer|décorer|décrire|décupler|dédale|déductif|déesse|défensif|défiler|défrayer|dégager|dégivrer|déglutir|dégrafer|déjeuner|délice|déloger|demander|demeurer|démolir|dénicher|dénouer|dentelle|dénuder|départ|dépenser|déphaser|déplacer|déposer|déranger|dérober|désastre|descente|désert|désigner|désobéir|dessiner|destrier|détacher|détester|détourer|détresse|devancer|devenir|deviner|devoir|diable|dialogue|diamant|dicter|différer|digérer|digital|digne|diluer|dimanche|diminuer|dioxyde|directif|diriger|discuter|disposer|dissiper|distance|divertir|diviser|docile|docteur|dogme|doigt|domaine|domicile|dompter|donateur|donjon|donner|dopamine|dortoir|dorure|dosage|doseur|dossier|dotation|douanier|double|douceur|douter|doyen|dragon|draper|dresser|dribbler|droiture|duperie|duplexe|durable|durcir|dynastie|éblouir|écarter|écharpe|échelle|éclairer|éclipse|éclore|écluse|école|économie|écorce|écouter|écraser|écrémer|écrivain|écrou|écume|écureuil|édifier|éduquer|effacer|effectif|effigie|effort|effrayer|effusion|égaliser|égarer|éjecter|élaborer|élargir|électron|élégant|éléphant|élève|éligible|élitisme|éloge|élucider|éluder|emballer|embellir|embryon|émeraude|émission|emmener|émotion|émouvoir|empereur|employer|emporter|emprise|émulsion|encadrer|enchère|enclave|encoche|endiguer|endosser|endroit|enduire|énergie|enfance|enfermer|enfouir|engager|engin|englober|énigme|enjamber|enjeu|enlever|ennemi|ennuyeux|enrichir|enrobage|enseigne|entasser|entendre|entier|entourer|entraver|énumérer|envahir|enviable|envoyer|enzyme|éolien|épaissir|épargne|épatant|épaule|épicerie|épidémie|épier|épilogue|épine|épisode|épitaphe|époque|épreuve|éprouver|épuisant|équerre|équipe|ériger|érosion|erreur|éruption|escalier|espadon|espèce|espiègle|espoir|esprit|esquiver|essayer|essence|essieu|essorer|estime|estomac|estrade|étagère|étaler|étanche|étatique|éteindre|étendoir|éternel|éthanol|éthique|ethnie|étirer|étoffer|étoile|étonnant|étourdir|étrange|étroit|étude|euphorie|évaluer|évasion|éventail|évidence|éviter|évolutif|évoquer|exact|exagérer|exaucer|exceller|excitant|exclusif|excuse|exécuter|exemple|exercer|exhaler|exhorter|exigence|exiler|exister|exotique|expédier|explorer|exposer|exprimer|exquis|extensif|extraire|exulter|fable|fabuleux|facette|facile|facture|faiblir|falaise|fameux|famille|farceur|farfelu|farine|farouche|fasciner|fatal|fatigue|faucon|fautif|faveur|favori|fébrile|féconder|fédérer|félin|femme|fémur|fendoir|féodal|fermer|féroce|ferveur|festival|feuille|feutre|février|fiasco|ficeler|fictif|fidèle|figure|filature|filetage|filière|filleul|filmer|filou|filtrer|financer|finir|fiole|firme|fissure|fixer|flairer|flamme|flasque|flatteur|fléau|flèche|fleur|flexion|flocon|flore|fluctuer|fluide|fluvial|folie|fonderie|fongible|fontaine|forcer|forgeron|formuler|fortune|fossile|foudre|fougère|fouiller|foulure|fourmi|fragile|fraise|franchir|frapper|frayeur|frégate|freiner|frelon|frémir|frénésie|frère|friable|friction|frisson|frivole|froid|fromage|frontal|frotter|fruit|fugitif|fuite|fureur|furieux|furtif|fusion|futur|gagner|galaxie|galerie|gambader|garantir|gardien|garnir|garrigue|gazelle|gazon|géant|gélatine|gélule|gendarme|général|génie|genou|gentil|géologie|géomètre|géranium|germe|gestuel|geyser|gibier|gicler|girafe|givre|glace|glaive|glisser|globe|gloire|glorieux|golfeur|gomme|gonfler|gorge|gorille|goudron|gouffre|goulot|goupille|gourmand|goutte|graduel|graffiti|graine|grand|grappin|gratuit|gravir|grenat|griffure|griller|grimper|grogner|gronder|grotte|groupe|gruger|grutier|gruyère|guépard|guerrier|guide|guimauve|guitare|gustatif|gymnaste|gyrostat|habitude|hachoir|halte|hameau|hangar|hanneton|haricot|harmonie|harpon|hasard|hélium|hématome|herbe|hérisson|hermine|héron|hésiter|heureux|hiberner|hibou|hilarant|histoire|hiver|homard|hommage|homogène|honneur|honorer|honteux|horde|horizon|horloge|hormone|horrible|houleux|housse|hublot|huileux|humain|humble|humide|humour|hurler|hydromel|hygiène|hymne|hypnose|idylle|ignorer|iguane|illicite|illusion|image|imbiber|imiter|immense|immobile|immuable|impact|impérial|implorer|imposer|imprimer|imputer|incarner|incendie|incident|incliner|incolore|indexer|indice|inductif|inédit|ineptie|inexact|infini|infliger|informer|infusion|ingérer|inhaler|inhiber|injecter|injure|innocent|inoculer|inonder|inscrire|insecte|insigne|insolite|inspirer|instinct|insulter|intact|intense|intime|intrigue|intuitif|inutile|invasion|inventer|inviter|invoquer|ironique|irradier|irréel|irriter|isoler|ivoire|ivresse|jaguar|jaillir|jambe|janvier|jardin|jauger|jaune|javelot|jetable|jeton|jeudi|jeunesse|joindre|joncher|jongler|joueur|jouissif|journal|jovial|joyau|joyeux|jubiler|jugement|junior|jupon|juriste|justice|juteux|juvénile|kayak|kimono|kiosque|label|labial|labourer|lacérer|lactose|lagune|laine|laisser|laitier|lambeau|lamelle|lampe|lanceur|langage|lanterne|lapin|largeur|larme|laurier|lavabo|lavoir|lecture|légal|léger|légume|lessive|lettre|levier|lexique|lézard|liasse|libérer|libre|licence|licorne|liège|lièvre|ligature|ligoter|ligue|limer|limite|limonade|limpide|linéaire|lingot|lionceau|liquide|lisière|lister|lithium|litige|littoral|livreur|logique|lointain|loisir|lombric|loterie|louer|lourd|loutre|louve|loyal|lubie|lucide|lucratif|lueur|lugubre|luisant|lumière|lunaire|lundi|luron|lutter|luxueux|machine|magasin|magenta|magique|maigre|maillon|maintien|mairie|maison|majorer|malaxer|maléfice|malheur|malice|mallette|mammouth|mandater|maniable|manquant|manteau|manuel|marathon|marbre|marchand|mardi|maritime|marqueur|marron|marteler|mascotte|massif|matériel|matière|matraque|maudire|maussade|mauve|maximal|méchant|méconnu|médaille|médecin|méditer|méduse|meilleur|mélange|mélodie|membre|mémoire|menacer|mener|menhir|mensonge|mentor|mercredi|mérite|merle|messager|mesure|métal|météore|méthode|métier|meuble|miauler|microbe|miette|mignon|migrer|milieu|million|mimique|mince|minéral|minimal|minorer|minute|miracle|miroiter|missile|mixte|mobile|moderne|moelleux|mondial|moniteur|monnaie|monotone|monstre|montagne|monument|moqueur|morceau|morsure|mortier|moteur|motif|mouche|moufle|moulin|mousson|mouton|mouvant|multiple|munition|muraille|murène|murmure|muscle|muséum|musicien|mutation|muter|mutuel|myriade|myrtille|mystère|mythique|nageur|nappe|narquois|narrer|natation|nation|nature|naufrage|nautique|navire|nébuleux|nectar|néfaste|négation|négliger|négocier|neige|nerveux|nettoyer|neurone|neutron|neveu|niche|nickel|nitrate|niveau|noble|nocif|nocturne|noirceur|noisette|nomade|nombreux|nommer|normatif|notable|notifier|notoire|nourrir|nouveau|novateur|novembre|novice|nuage|nuancer|nuire|nuisible|numéro|nuptial|nuque|nutritif|obéir|objectif|obliger|obscur|observer|obstacle|obtenir|obturer|occasion|occuper|océan|octobre|octroyer|octupler|oculaire|odeur|odorant|offenser|officier|offrir|ogive|oiseau|oisillon|olfactif|olivier|ombrage|omettre|onctueux|onduler|onéreux|onirique|opale|opaque|opérer|opinion|opportun|opprimer|opter|optique|orageux|orange|orbite|ordonner|oreille|organe|orgueil|orifice|ornement|orque|ortie|osciller|osmose|ossature|otarie|ouragan|ourson|outil|outrager|ouvrage|ovation|oxyde|oxygène|ozone|paisible|palace|palmarès|palourde|palper|panache|panda|pangolin|paniquer|panneau|panorama|pantalon|papaye|papier|papoter|papyrus|paradoxe|parcelle|paresse|parfumer|parler|parole|parrain|parsemer|partager|parure|parvenir|passion|pastèque|paternel|patience|patron|pavillon|pavoiser|payer|paysage|peigne|peintre|pelage|pélican|pelle|pelouse|peluche|pendule|pénétrer|pénible|pensif|pénurie|pépite|péplum|perdrix|perforer|période|permuter|perplexe|persil|perte|peser|pétale|petit|pétrir|peuple|pharaon|phobie|phoque|photon|phrase|physique|piano|pictural|pièce|pierre|pieuvre|pilote|pinceau|pipette|piquer|pirogue|piscine|piston|pivoter|pixel|pizza|placard|plafond|plaisir|planer|plaque|plastron|plateau|pleurer|plexus|pliage|plomb|plonger|pluie|plumage|pochette|poésie|poète|pointe|poirier|poisson|poivre|polaire|policier|pollen|polygone|pommade|pompier|ponctuel|pondérer|poney|portique|position|posséder|posture|potager|poteau|potion|pouce|poulain|poumon|pourpre|poussin|pouvoir|prairie|pratique|précieux|prédire|préfixe|prélude|prénom|présence|prétexte|prévoir|primitif|prince|prison|priver|problème|procéder|prodige|profond|progrès|proie|projeter|prologue|promener|propre|prospère|protéger|prouesse|proverbe|prudence|pruneau|psychose|public|puceron|puiser|pulpe|pulsar|punaise|punitif|pupitre|purifier|puzzle|pyramide|quasar|querelle|question|quiétude|quitter|quotient|racine|raconter|radieux|ragondin|raideur|raisin|ralentir|rallonge|ramasser|rapide|rasage|ratisser|ravager|ravin|rayonner|réactif|réagir|réaliser|réanimer|recevoir|réciter|réclamer|récolter|recruter|reculer|recycler|rédiger|redouter|refaire|réflexe|réformer|refrain|refuge|régalien|région|réglage|régulier|réitérer|rejeter|rejouer|relatif|relever|relief|remarque|remède|remise|remonter|remplir|remuer|renard|renfort|renifler|renoncer|rentrer|renvoi|replier|reporter|reprise|reptile|requin|réserve|résineux|résoudre|respect|rester|résultat|rétablir|retenir|réticule|retomber|retracer|réunion|réussir|revanche|revivre|révolte|révulsif|richesse|rideau|rieur|rigide|rigoler|rincer|riposter|risible|risque|rituel|rival|rivière|rocheux|romance|rompre|ronce|rondin|roseau|rosier|rotatif|rotor|rotule|rouge|rouille|rouleau|routine|royaume|ruban|rubis|ruche|ruelle|rugueux|ruiner|ruisseau|ruser|rustique|rythme|sabler|saboter|sabre|sacoche|safari|sagesse|saisir|salade|salive|salon|saluer|samedi|sanction|sanglier|sarcasme|sardine|saturer|saugrenu|saumon|sauter|sauvage|savant|savonner|scalpel|scandale|scélérat|scénario|sceptre|schéma|science|scinder|score|scrutin|sculpter|séance|sécable|sécher|secouer|sécréter|sédatif|séduire|seigneur|séjour|sélectif|semaine|sembler|semence|séminal|sénateur|sensible|sentence|séparer|séquence|serein|sergent|sérieux|serrure|sérum|service|sésame|sévir|sevrage|sextuple|sidéral|siècle|siéger|siffler|sigle|signal|silence|silicium|simple|sincère|sinistre|siphon|sirop|sismique|situer|skier|social|socle|sodium|soigneux|soldat|soleil|solitude|soluble|sombre|sommeil|somnoler|sonde|songeur|sonnette|sonore|sorcier|sortir|sosie|sottise|soucieux|soudure|souffle|soulever|soupape|source|soutirer|souvenir|spacieux|spatial|spécial|sphère|spiral|stable|station|sternum|stimulus|stipuler|strict|studieux|stupeur|styliste|sublime|substrat|subtil|subvenir|succès|sucre|suffixe|suggérer|suiveur|sulfate|superbe|supplier|surface|suricate|surmener|surprise|sursaut|survie|suspect|syllabe|symbole|symétrie|synapse|syntaxe|système|tabac|tablier|tactile|tailler|talent|talisman|talonner|tambour|tamiser|tangible|tapis|taquiner|tarder|tarif|tartine|tasse|tatami|tatouage|taupe|taureau|taxer|témoin|temporel|tenaille|tendre|teneur|tenir|tension|terminer|terne|terrible|tétine|texte|thème|théorie|thérapie|thorax|tibia|tiède|timide|tirelire|tiroir|tissu|titane|titre|tituber|toboggan|tolérant|tomate|tonique|tonneau|toponyme|torche|tordre|tornade|torpille|torrent|torse|tortue|totem|toucher|tournage|tousser|toxine|traction|trafic|tragique|trahir|train|trancher|travail|trèfle|tremper|trésor|treuil|triage|tribunal|tricoter|trilogie|triomphe|tripler|triturer|trivial|trombone|tronc|tropical|troupeau|tuile|tulipe|tumulte|tunnel|turbine|tuteur|tutoyer|tuyau|tympan|typhon|typique|tyran|ubuesque|ultime|ultrason|unanime|unifier|union|unique|unitaire|univers|uranium|urbain|urticant|usage|usine|usuel|usure|utile|utopie|vacarme|vaccin|vagabond|vague|vaillant|vaincre|vaisseau|valable|valise|vallon|valve|vampire|vanille|vapeur|varier|vaseux|vassal|vaste|vecteur|vedette|végétal|véhicule|veinard|véloce|vendredi|vénérer|venger|venimeux|ventouse|verdure|vérin|vernir|verrou|verser|vertu|veston|vétéran|vétuste|vexant|vexer|viaduc|viande|victoire|vidange|vidéo|vignette|vigueur|vilain|village|vinaigre|violon|vipère|virement|virtuose|virus|visage|viseur|vision|visqueux|visuel|vital|vitesse|viticole|vitrine|vivace|vivipare|vocation|voguer|voile|voisin|voiture|volaille|volcan|voltiger|volume|vorace|vortex|voter|vouloir|voyage|voyelle|wagon|xénon|yacht|zèbre|zénith|zeste|zoologie'.split('|'); diff --git a/packages/util-crypto/src/mnemonic/wordlists/index.ts b/packages/util-crypto/src/mnemonic/wordlists/index.ts new file mode 100644 index 0000000..8e0461e --- /dev/null +++ b/packages/util-crypto/src/mnemonic/wordlists/index.ts @@ -0,0 +1,11 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +export { default as english } from './en.js'; +export { default as spanish } from './es.js'; +export { default as french } from './fr.js'; +export { default as italian } from './it.js'; +export { default as japanese } from './jp.js'; +export { default as korean } from './ko.js'; +export { default as chineseSimplified } from './zh-s.js'; +export { default as chineseTraditional } from './zh-t.js'; diff --git a/packages/util-crypto/src/mnemonic/wordlists/it.ts b/packages/util-crypto/src/mnemonic/wordlists/it.ts new file mode 100644 index 0000000..38d0da0 --- /dev/null +++ b/packages/util-crypto/src/mnemonic/wordlists/it.ts @@ -0,0 +1,7 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +// Adapted from the bitcoinjs/bip39 source +// https://github.com/bitcoinjs/bip39/blob/1d063b6a6aee4145b34d701037cd3e67f5446ff9/ts_src/ + +export default 'abaco|abbaglio|abbinato|abete|abisso|abolire|abrasivo|abrogato|accadere|accenno|accusato|acetone|achille|acido|acqua|acre|acrilico|acrobata|acuto|adagio|addebito|addome|adeguato|aderire|adipe|adottare|adulare|affabile|affetto|affisso|affranto|aforisma|afoso|africano|agave|agente|agevole|aggancio|agire|agitare|agonismo|agricolo|agrumeto|aguzzo|alabarda|alato|albatro|alberato|albo|albume|alce|alcolico|alettone|alfa|algebra|aliante|alibi|alimento|allagato|allegro|allievo|allodola|allusivo|almeno|alogeno|alpaca|alpestre|altalena|alterno|alticcio|altrove|alunno|alveolo|alzare|amalgama|amanita|amarena|ambito|ambrato|ameba|america|ametista|amico|ammasso|ammenda|ammirare|ammonito|amore|ampio|ampliare|amuleto|anacardo|anagrafe|analista|anarchia|anatra|anca|ancella|ancora|andare|andrea|anello|angelo|angolare|angusto|anima|annegare|annidato|anno|annuncio|anonimo|anticipo|anzi|apatico|apertura|apode|apparire|appetito|appoggio|approdo|appunto|aprile|arabica|arachide|aragosta|araldica|arancio|aratura|arazzo|arbitro|archivio|ardito|arenile|argento|argine|arguto|aria|armonia|arnese|arredato|arringa|arrosto|arsenico|arso|artefice|arzillo|asciutto|ascolto|asepsi|asettico|asfalto|asino|asola|aspirato|aspro|assaggio|asse|assoluto|assurdo|asta|astenuto|astice|astratto|atavico|ateismo|atomico|atono|attesa|attivare|attorno|attrito|attuale|ausilio|austria|autista|autonomo|autunno|avanzato|avere|avvenire|avviso|avvolgere|azione|azoto|azzimo|azzurro|babele|baccano|bacino|baco|badessa|badilata|bagnato|baita|balcone|baldo|balena|ballata|balzano|bambino|bandire|baraonda|barbaro|barca|baritono|barlume|barocco|basilico|basso|batosta|battuto|baule|bava|bavosa|becco|beffa|belgio|belva|benda|benevole|benigno|benzina|bere|berlina|beta|bibita|bici|bidone|bifido|biga|bilancia|bimbo|binocolo|biologo|bipede|bipolare|birbante|birra|biscotto|bisesto|bisnonno|bisonte|bisturi|bizzarro|blando|blatta|bollito|bonifico|bordo|bosco|botanico|bottino|bozzolo|braccio|bradipo|brama|branca|bravura|bretella|brevetto|brezza|briglia|brillante|brindare|broccolo|brodo|bronzina|brullo|bruno|bubbone|buca|budino|buffone|buio|bulbo|buono|burlone|burrasca|bussola|busta|cadetto|caduco|calamaro|calcolo|calesse|calibro|calmo|caloria|cambusa|camerata|camicia|cammino|camola|campale|canapa|candela|cane|canino|canotto|cantina|capace|capello|capitolo|capogiro|cappero|capra|capsula|carapace|carcassa|cardo|carisma|carovana|carretto|cartolina|casaccio|cascata|caserma|caso|cassone|castello|casuale|catasta|catena|catrame|cauto|cavillo|cedibile|cedrata|cefalo|celebre|cellulare|cena|cenone|centesimo|ceramica|cercare|certo|cerume|cervello|cesoia|cespo|ceto|chela|chiaro|chicca|chiedere|chimera|china|chirurgo|chitarra|ciao|ciclismo|cifrare|cigno|cilindro|ciottolo|circa|cirrosi|citrico|cittadino|ciuffo|civetta|civile|classico|clinica|cloro|cocco|codardo|codice|coerente|cognome|collare|colmato|colore|colposo|coltivato|colza|coma|cometa|commando|comodo|computer|comune|conciso|condurre|conferma|congelare|coniuge|connesso|conoscere|consumo|continuo|convegno|coperto|copione|coppia|copricapo|corazza|cordata|coricato|cornice|corolla|corpo|corredo|corsia|cortese|cosmico|costante|cottura|covato|cratere|cravatta|creato|credere|cremoso|crescita|creta|criceto|crinale|crisi|critico|croce|cronaca|crostata|cruciale|crusca|cucire|cuculo|cugino|cullato|cupola|curatore|cursore|curvo|cuscino|custode|dado|daino|dalmata|damerino|daniela|dannoso|danzare|datato|davanti|davvero|debutto|decennio|deciso|declino|decollo|decreto|dedicato|definito|deforme|degno|delegare|delfino|delirio|delta|demenza|denotato|dentro|deposito|derapata|derivare|deroga|descritto|deserto|desiderio|desumere|detersivo|devoto|diametro|dicembre|diedro|difeso|diffuso|digerire|digitale|diluvio|dinamico|dinnanzi|dipinto|diploma|dipolo|diradare|dire|dirotto|dirupo|disagio|discreto|disfare|disgelo|disposto|distanza|disumano|dito|divano|divelto|dividere|divorato|doblone|docente|doganale|dogma|dolce|domato|domenica|dominare|dondolo|dono|dormire|dote|dottore|dovuto|dozzina|drago|druido|dubbio|dubitare|ducale|duna|duomo|duplice|duraturo|ebano|eccesso|ecco|eclissi|economia|edera|edicola|edile|editoria|educare|egemonia|egli|egoismo|egregio|elaborato|elargire|elegante|elencato|eletto|elevare|elfico|elica|elmo|elsa|eluso|emanato|emblema|emesso|emiro|emotivo|emozione|empirico|emulo|endemico|enduro|energia|enfasi|enoteca|entrare|enzima|epatite|epilogo|episodio|epocale|eppure|equatore|erario|erba|erboso|erede|eremita|erigere|ermetico|eroe|erosivo|errante|esagono|esame|esanime|esaudire|esca|esempio|esercito|esibito|esigente|esistere|esito|esofago|esortato|esoso|espanso|espresso|essenza|esso|esteso|estimare|estonia|estroso|esultare|etilico|etnico|etrusco|etto|euclideo|europa|evaso|evidenza|evitato|evoluto|evviva|fabbrica|faccenda|fachiro|falco|famiglia|fanale|fanfara|fango|fantasma|fare|farfalla|farinoso|farmaco|fascia|fastoso|fasullo|faticare|fato|favoloso|febbre|fecola|fede|fegato|felpa|feltro|femmina|fendere|fenomeno|fermento|ferro|fertile|fessura|festivo|fetta|feudo|fiaba|fiducia|fifa|figurato|filo|finanza|finestra|finire|fiore|fiscale|fisico|fiume|flacone|flamenco|flebo|flemma|florido|fluente|fluoro|fobico|focaccia|focoso|foderato|foglio|folata|folclore|folgore|fondente|fonetico|fonia|fontana|forbito|forchetta|foresta|formica|fornaio|foro|fortezza|forzare|fosfato|fosso|fracasso|frana|frassino|fratello|freccetta|frenata|fresco|frigo|frollino|fronde|frugale|frutta|fucilata|fucsia|fuggente|fulmine|fulvo|fumante|fumetto|fumoso|fune|funzione|fuoco|furbo|furgone|furore|fuso|futile|gabbiano|gaffe|galateo|gallina|galoppo|gambero|gamma|garanzia|garbo|garofano|garzone|gasdotto|gasolio|gastrico|gatto|gaudio|gazebo|gazzella|geco|gelatina|gelso|gemello|gemmato|gene|genitore|gennaio|genotipo|gergo|ghepardo|ghiaccio|ghisa|giallo|gilda|ginepro|giocare|gioiello|giorno|giove|girato|girone|gittata|giudizio|giurato|giusto|globulo|glutine|gnomo|gobba|golf|gomito|gommone|gonfio|gonna|governo|gracile|grado|grafico|grammo|grande|grattare|gravoso|grazia|greca|gregge|grifone|grigio|grinza|grotta|gruppo|guadagno|guaio|guanto|guardare|gufo|guidare|ibernato|icona|identico|idillio|idolo|idra|idrico|idrogeno|igiene|ignaro|ignorato|ilare|illeso|illogico|illudere|imballo|imbevuto|imbocco|imbuto|immane|immerso|immolato|impacco|impeto|impiego|importo|impronta|inalare|inarcare|inattivo|incanto|incendio|inchino|incisivo|incluso|incontro|incrocio|incubo|indagine|india|indole|inedito|infatti|infilare|inflitto|ingaggio|ingegno|inglese|ingordo|ingrosso|innesco|inodore|inoltrare|inondato|insano|insetto|insieme|insonnia|insulina|intasato|intero|intonaco|intuito|inumidire|invalido|invece|invito|iperbole|ipnotico|ipotesi|ippica|iride|irlanda|ironico|irrigato|irrorare|isolato|isotopo|isterico|istituto|istrice|italia|iterare|labbro|labirinto|lacca|lacerato|lacrima|lacuna|laddove|lago|lampo|lancetta|lanterna|lardoso|larga|laringe|lastra|latenza|latino|lattuga|lavagna|lavoro|legale|leggero|lembo|lentezza|lenza|leone|lepre|lesivo|lessato|lesto|letterale|leva|levigato|libero|lido|lievito|lilla|limatura|limitare|limpido|lineare|lingua|liquido|lira|lirica|lisca|lite|litigio|livrea|locanda|lode|logica|lombare|londra|longevo|loquace|lorenzo|loto|lotteria|luce|lucidato|lumaca|luminoso|lungo|lupo|luppolo|lusinga|lusso|lutto|macabro|macchina|macero|macinato|madama|magico|maglia|magnete|magro|maiolica|malafede|malgrado|malinteso|malsano|malto|malumore|mana|mancia|mandorla|mangiare|manifesto|mannaro|manovra|mansarda|mantide|manubrio|mappa|maratona|marcire|maretta|marmo|marsupio|maschera|massaia|mastino|materasso|matricola|mattone|maturo|mazurca|meandro|meccanico|mecenate|medesimo|meditare|mega|melassa|melis|melodia|meninge|meno|mensola|mercurio|merenda|merlo|meschino|mese|messere|mestolo|metallo|metodo|mettere|miagolare|mica|micelio|michele|microbo|midollo|miele|migliore|milano|milite|mimosa|minerale|mini|minore|mirino|mirtillo|miscela|missiva|misto|misurare|mitezza|mitigare|mitra|mittente|mnemonico|modello|modifica|modulo|mogano|mogio|mole|molosso|monastero|monco|mondina|monetario|monile|monotono|monsone|montato|monviso|mora|mordere|morsicato|mostro|motivato|motosega|motto|movenza|movimento|mozzo|mucca|mucosa|muffa|mughetto|mugnaio|mulatto|mulinello|multiplo|mummia|munto|muovere|murale|musa|muscolo|musica|mutevole|muto|nababbo|nafta|nanometro|narciso|narice|narrato|nascere|nastrare|naturale|nautica|naviglio|nebulosa|necrosi|negativo|negozio|nemmeno|neofita|neretto|nervo|nessuno|nettuno|neutrale|neve|nevrotico|nicchia|ninfa|nitido|nobile|nocivo|nodo|nome|nomina|nordico|normale|norvegese|nostrano|notare|notizia|notturno|novella|nucleo|nulla|numero|nuovo|nutrire|nuvola|nuziale|oasi|obbedire|obbligo|obelisco|oblio|obolo|obsoleto|occasione|occhio|occidente|occorrere|occultare|ocra|oculato|odierno|odorare|offerta|offrire|offuscato|oggetto|oggi|ognuno|olandese|olfatto|oliato|oliva|ologramma|oltre|omaggio|ombelico|ombra|omega|omissione|ondoso|onere|onice|onnivoro|onorevole|onta|operato|opinione|opposto|oracolo|orafo|ordine|orecchino|orefice|orfano|organico|origine|orizzonte|orma|ormeggio|ornativo|orologio|orrendo|orribile|ortensia|ortica|orzata|orzo|osare|oscurare|osmosi|ospedale|ospite|ossa|ossidare|ostacolo|oste|otite|otre|ottagono|ottimo|ottobre|ovale|ovest|ovino|oviparo|ovocito|ovunque|ovviare|ozio|pacchetto|pace|pacifico|padella|padrone|paese|paga|pagina|palazzina|palesare|pallido|palo|palude|pandoro|pannello|paolo|paonazzo|paprica|parabola|parcella|parere|pargolo|pari|parlato|parola|partire|parvenza|parziale|passivo|pasticca|patacca|patologia|pattume|pavone|peccato|pedalare|pedonale|peggio|peloso|penare|pendice|penisola|pennuto|penombra|pensare|pentola|pepe|pepita|perbene|percorso|perdonato|perforare|pergamena|periodo|permesso|perno|perplesso|persuaso|pertugio|pervaso|pesatore|pesista|peso|pestifero|petalo|pettine|petulante|pezzo|piacere|pianta|piattino|piccino|picozza|piega|pietra|piffero|pigiama|pigolio|pigro|pila|pilifero|pillola|pilota|pimpante|pineta|pinna|pinolo|pioggia|piombo|piramide|piretico|pirite|pirolisi|pitone|pizzico|placebo|planare|plasma|platano|plenario|pochezza|poderoso|podismo|poesia|poggiare|polenta|poligono|pollice|polmonite|polpetta|polso|poltrona|polvere|pomice|pomodoro|ponte|popoloso|porfido|poroso|porpora|porre|portata|posa|positivo|possesso|postulato|potassio|potere|pranzo|prassi|pratica|precluso|predica|prefisso|pregiato|prelievo|premere|prenotare|preparato|presenza|pretesto|prevalso|prima|principe|privato|problema|procura|produrre|profumo|progetto|prolunga|promessa|pronome|proposta|proroga|proteso|prova|prudente|prugna|prurito|psiche|pubblico|pudica|pugilato|pugno|pulce|pulito|pulsante|puntare|pupazzo|pupilla|puro|quadro|qualcosa|quasi|querela|quota|raccolto|raddoppio|radicale|radunato|raffica|ragazzo|ragione|ragno|ramarro|ramingo|ramo|randagio|rantolare|rapato|rapina|rappreso|rasatura|raschiato|rasente|rassegna|rastrello|rata|ravveduto|reale|recepire|recinto|recluta|recondito|recupero|reddito|redimere|regalato|registro|regola|regresso|relazione|remare|remoto|renna|replica|reprimere|reputare|resa|residente|responso|restauro|rete|retina|retorica|rettifica|revocato|riassunto|ribadire|ribelle|ribrezzo|ricarica|ricco|ricevere|riciclato|ricordo|ricreduto|ridicolo|ridurre|rifasare|riflesso|riforma|rifugio|rigare|rigettato|righello|rilassato|rilevato|rimanere|rimbalzo|rimedio|rimorchio|rinascita|rincaro|rinforzo|rinnovo|rinomato|rinsavito|rintocco|rinuncia|rinvenire|riparato|ripetuto|ripieno|riportare|ripresa|ripulire|risata|rischio|riserva|risibile|riso|rispetto|ristoro|risultato|risvolto|ritardo|ritegno|ritmico|ritrovo|riunione|riva|riverso|rivincita|rivolto|rizoma|roba|robotico|robusto|roccia|roco|rodaggio|rodere|roditore|rogito|rollio|romantico|rompere|ronzio|rosolare|rospo|rotante|rotondo|rotula|rovescio|rubizzo|rubrica|ruga|rullino|rumine|rumoroso|ruolo|rupe|russare|rustico|sabato|sabbiare|sabotato|sagoma|salasso|saldatura|salgemma|salivare|salmone|salone|saltare|saluto|salvo|sapere|sapido|saporito|saraceno|sarcasmo|sarto|sassoso|satellite|satira|satollo|saturno|savana|savio|saziato|sbadiglio|sbalzo|sbancato|sbarra|sbattere|sbavare|sbendare|sbirciare|sbloccato|sbocciato|sbrinare|sbruffone|sbuffare|scabroso|scadenza|scala|scambiare|scandalo|scapola|scarso|scatenare|scavato|scelto|scenico|scettro|scheda|schiena|sciarpa|scienza|scindere|scippo|sciroppo|scivolo|sclerare|scodella|scolpito|scomparto|sconforto|scoprire|scorta|scossone|scozzese|scriba|scrollare|scrutinio|scuderia|scultore|scuola|scuro|scusare|sdebitare|sdoganare|seccatura|secondo|sedano|seggiola|segnalato|segregato|seguito|selciato|selettivo|sella|selvaggio|semaforo|sembrare|seme|seminato|sempre|senso|sentire|sepolto|sequenza|serata|serbato|sereno|serio|serpente|serraglio|servire|sestina|setola|settimana|sfacelo|sfaldare|sfamato|sfarzoso|sfaticato|sfera|sfida|sfilato|sfinge|sfocato|sfoderare|sfogo|sfoltire|sforzato|sfratto|sfruttato|sfuggito|sfumare|sfuso|sgabello|sgarbato|sgonfiare|sgorbio|sgrassato|sguardo|sibilo|siccome|sierra|sigla|signore|silenzio|sillaba|simbolo|simpatico|simulato|sinfonia|singolo|sinistro|sino|sintesi|sinusoide|sipario|sisma|sistole|situato|slitta|slogatura|sloveno|smarrito|smemorato|smentito|smeraldo|smilzo|smontare|smottato|smussato|snellire|snervato|snodo|sobbalzo|sobrio|soccorso|sociale|sodale|soffitto|sogno|soldato|solenne|solido|sollazzo|solo|solubile|solvente|somatico|somma|sonda|sonetto|sonnifero|sopire|soppeso|sopra|sorgere|sorpasso|sorriso|sorso|sorteggio|sorvolato|sospiro|sosta|sottile|spada|spalla|spargere|spatola|spavento|spazzola|specie|spedire|spegnere|spelatura|speranza|spessore|spettrale|spezzato|spia|spigoloso|spillato|spinoso|spirale|splendido|sportivo|sposo|spranga|sprecare|spronato|spruzzo|spuntino|squillo|sradicare|srotolato|stabile|stacco|staffa|stagnare|stampato|stantio|starnuto|stasera|statuto|stelo|steppa|sterzo|stiletto|stima|stirpe|stivale|stizzoso|stonato|storico|strappo|stregato|stridulo|strozzare|strutto|stuccare|stufo|stupendo|subentro|succoso|sudore|suggerito|sugo|sultano|suonare|superbo|supporto|surgelato|surrogato|sussurro|sutura|svagare|svedese|sveglio|svelare|svenuto|svezia|sviluppo|svista|svizzera|svolta|svuotare|tabacco|tabulato|tacciare|taciturno|tale|talismano|tampone|tannino|tara|tardivo|targato|tariffa|tarpare|tartaruga|tasto|tattico|taverna|tavolata|tazza|teca|tecnico|telefono|temerario|tempo|temuto|tendone|tenero|tensione|tentacolo|teorema|terme|terrazzo|terzetto|tesi|tesserato|testato|tetro|tettoia|tifare|tigella|timbro|tinto|tipico|tipografo|tiraggio|tiro|titanio|titolo|titubante|tizio|tizzone|toccare|tollerare|tolto|tombola|tomo|tonfo|tonsilla|topazio|topologia|toppa|torba|tornare|torrone|tortora|toscano|tossire|tostatura|totano|trabocco|trachea|trafila|tragedia|tralcio|tramonto|transito|trapano|trarre|trasloco|trattato|trave|treccia|tremolio|trespolo|tributo|tricheco|trifoglio|trillo|trincea|trio|tristezza|triturato|trivella|tromba|trono|troppo|trottola|trovare|truccato|tubatura|tuffato|tulipano|tumulto|tunisia|turbare|turchino|tuta|tutela|ubicato|uccello|uccisore|udire|uditivo|uffa|ufficio|uguale|ulisse|ultimato|umano|umile|umorismo|uncinetto|ungere|ungherese|unicorno|unificato|unisono|unitario|unte|uovo|upupa|uragano|urgenza|urlo|usanza|usato|uscito|usignolo|usuraio|utensile|utilizzo|utopia|vacante|vaccinato|vagabondo|vagliato|valanga|valgo|valico|valletta|valoroso|valutare|valvola|vampata|vangare|vanitoso|vano|vantaggio|vanvera|vapore|varano|varcato|variante|vasca|vedetta|vedova|veduto|vegetale|veicolo|velcro|velina|velluto|veloce|venato|vendemmia|vento|verace|verbale|vergogna|verifica|vero|verruca|verticale|vescica|vessillo|vestale|veterano|vetrina|vetusto|viandante|vibrante|vicenda|vichingo|vicinanza|vidimare|vigilia|vigneto|vigore|vile|villano|vimini|vincitore|viola|vipera|virgola|virologo|virulento|viscoso|visione|vispo|vissuto|visura|vita|vitello|vittima|vivanda|vivido|viziare|voce|voga|volatile|volere|volpe|voragine|vulcano|zampogna|zanna|zappato|zattera|zavorra|zefiro|zelante|zelo|zenzero|zerbino|zibetto|zinco|zircone|zitto|zolla|zotico|zucchero|zufolo|zulu|zuppa'.split('|'); diff --git a/packages/util-crypto/src/mnemonic/wordlists/jp.ts b/packages/util-crypto/src/mnemonic/wordlists/jp.ts new file mode 100644 index 0000000..83faf8e --- /dev/null +++ b/packages/util-crypto/src/mnemonic/wordlists/jp.ts @@ -0,0 +1,7 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +// Adapted from the bitcoinjs/bip39 source +// https://github.com/bitcoinjs/bip39/blob/1d063b6a6aee4145b34d701037cd3e67f5446ff9/ts_src/ + +export default 'あいこくしん|あいさつ|あいだ|あおぞら|あかちゃん|あきる|あけがた|あける|あこがれる|あさい|あさひ|あしあと|あじわう|あずかる|あずき|あそぶ|あたえる|あたためる|あたりまえ|あたる|あつい|あつかう|あっしゅく|あつまり|あつめる|あてな|あてはまる|あひる|あぶら|あぶる|あふれる|あまい|あまど|あまやかす|あまり|あみもの|あめりか|あやまる|あゆむ|あらいぐま|あらし|あらすじ|あらためる|あらゆる|あらわす|ありがとう|あわせる|あわてる|あんい|あんがい|あんこ|あんぜん|あんてい|あんない|あんまり|いいだす|いおん|いがい|いがく|いきおい|いきなり|いきもの|いきる|いくじ|いくぶん|いけばな|いけん|いこう|いこく|いこつ|いさましい|いさん|いしき|いじゅう|いじょう|いじわる|いずみ|いずれ|いせい|いせえび|いせかい|いせき|いぜん|いそうろう|いそがしい|いだい|いだく|いたずら|いたみ|いたりあ|いちおう|いちじ|いちど|いちば|いちぶ|いちりゅう|いつか|いっしゅん|いっせい|いっそう|いったん|いっち|いってい|いっぽう|いてざ|いてん|いどう|いとこ|いない|いなか|いねむり|いのち|いのる|いはつ|いばる|いはん|いびき|いひん|いふく|いへん|いほう|いみん|いもうと|いもたれ|いもり|いやがる|いやす|いよかん|いよく|いらい|いらすと|いりぐち|いりょう|いれい|いれもの|いれる|いろえんぴつ|いわい|いわう|いわかん|いわば|いわゆる|いんげんまめ|いんさつ|いんしょう|いんよう|うえき|うえる|うおざ|うがい|うかぶ|うかべる|うきわ|うくらいな|うくれれ|うけたまわる|うけつけ|うけとる|うけもつ|うける|うごかす|うごく|うこん|うさぎ|うしなう|うしろがみ|うすい|うすぎ|うすぐらい|うすめる|うせつ|うちあわせ|うちがわ|うちき|うちゅう|うっかり|うつくしい|うったえる|うつる|うどん|うなぎ|うなじ|うなずく|うなる|うねる|うのう|うぶげ|うぶごえ|うまれる|うめる|うもう|うやまう|うよく|うらがえす|うらぐち|うらない|うりあげ|うりきれ|うるさい|うれしい|うれゆき|うれる|うろこ|うわき|うわさ|うんこう|うんちん|うんてん|うんどう|えいえん|えいが|えいきょう|えいご|えいせい|えいぶん|えいよう|えいわ|えおり|えがお|えがく|えきたい|えくせる|えしゃく|えすて|えつらん|えのぐ|えほうまき|えほん|えまき|えもじ|えもの|えらい|えらぶ|えりあ|えんえん|えんかい|えんぎ|えんげき|えんしゅう|えんぜつ|えんそく|えんちょう|えんとつ|おいかける|おいこす|おいしい|おいつく|おうえん|おうさま|おうじ|おうせつ|おうたい|おうふく|おうべい|おうよう|おえる|おおい|おおう|おおどおり|おおや|おおよそ|おかえり|おかず|おがむ|おかわり|おぎなう|おきる|おくさま|おくじょう|おくりがな|おくる|おくれる|おこす|おこなう|おこる|おさえる|おさない|おさめる|おしいれ|おしえる|おじぎ|おじさん|おしゃれ|おそらく|おそわる|おたがい|おたく|おだやか|おちつく|おっと|おつり|おでかけ|おとしもの|おとなしい|おどり|おどろかす|おばさん|おまいり|おめでとう|おもいで|おもう|おもたい|おもちゃ|おやつ|おやゆび|およぼす|おらんだ|おろす|おんがく|おんけい|おんしゃ|おんせん|おんだん|おんちゅう|おんどけい|かあつ|かいが|がいき|がいけん|がいこう|かいさつ|かいしゃ|かいすいよく|かいぜん|かいぞうど|かいつう|かいてん|かいとう|かいふく|がいへき|かいほう|かいよう|がいらい|かいわ|かえる|かおり|かかえる|かがく|かがし|かがみ|かくご|かくとく|かざる|がぞう|かたい|かたち|がちょう|がっきゅう|がっこう|がっさん|がっしょう|かなざわし|かのう|がはく|かぶか|かほう|かほご|かまう|かまぼこ|かめれおん|かゆい|かようび|からい|かるい|かろう|かわく|かわら|がんか|かんけい|かんこう|かんしゃ|かんそう|かんたん|かんち|がんばる|きあい|きあつ|きいろ|ぎいん|きうい|きうん|きえる|きおう|きおく|きおち|きおん|きかい|きかく|きかんしゃ|ききて|きくばり|きくらげ|きけんせい|きこう|きこえる|きこく|きさい|きさく|きさま|きさらぎ|ぎじかがく|ぎしき|ぎじたいけん|ぎじにってい|ぎじゅつしゃ|きすう|きせい|きせき|きせつ|きそう|きぞく|きぞん|きたえる|きちょう|きつえん|ぎっちり|きつつき|きつね|きてい|きどう|きどく|きない|きなが|きなこ|きぬごし|きねん|きのう|きのした|きはく|きびしい|きひん|きふく|きぶん|きぼう|きほん|きまる|きみつ|きむずかしい|きめる|きもだめし|きもち|きもの|きゃく|きやく|ぎゅうにく|きよう|きょうりゅう|きらい|きらく|きりん|きれい|きれつ|きろく|ぎろん|きわめる|ぎんいろ|きんかくじ|きんじょ|きんようび|ぐあい|くいず|くうかん|くうき|くうぐん|くうこう|ぐうせい|くうそう|ぐうたら|くうふく|くうぼ|くかん|くきょう|くげん|ぐこう|くさい|くさき|くさばな|くさる|くしゃみ|くしょう|くすのき|くすりゆび|くせげ|くせん|ぐたいてき|くださる|くたびれる|くちこみ|くちさき|くつした|ぐっすり|くつろぐ|くとうてん|くどく|くなん|くねくね|くのう|くふう|くみあわせ|くみたてる|くめる|くやくしょ|くらす|くらべる|くるま|くれる|くろう|くわしい|ぐんかん|ぐんしょく|ぐんたい|ぐんて|けあな|けいかく|けいけん|けいこ|けいさつ|げいじゅつ|けいたい|げいのうじん|けいれき|けいろ|けおとす|けおりもの|げきか|げきげん|げきだん|げきちん|げきとつ|げきは|げきやく|げこう|げこくじょう|げざい|けさき|げざん|けしき|けしごむ|けしょう|げすと|けたば|けちゃっぷ|けちらす|けつあつ|けつい|けつえき|けっこん|けつじょ|けっせき|けってい|けつまつ|げつようび|げつれい|けつろん|げどく|けとばす|けとる|けなげ|けなす|けなみ|けぬき|げねつ|けねん|けはい|げひん|けぶかい|げぼく|けまり|けみかる|けむし|けむり|けもの|けらい|けろけろ|けわしい|けんい|けんえつ|けんお|けんか|げんき|けんげん|けんこう|けんさく|けんしゅう|けんすう|げんそう|けんちく|けんてい|けんとう|けんない|けんにん|げんぶつ|けんま|けんみん|けんめい|けんらん|けんり|こあくま|こいぬ|こいびと|ごうい|こうえん|こうおん|こうかん|ごうきゅう|ごうけい|こうこう|こうさい|こうじ|こうすい|ごうせい|こうそく|こうたい|こうちゃ|こうつう|こうてい|こうどう|こうない|こうはい|ごうほう|ごうまん|こうもく|こうりつ|こえる|こおり|ごかい|ごがつ|ごかん|こくご|こくさい|こくとう|こくない|こくはく|こぐま|こけい|こける|ここのか|こころ|こさめ|こしつ|こすう|こせい|こせき|こぜん|こそだて|こたい|こたえる|こたつ|こちょう|こっか|こつこつ|こつばん|こつぶ|こてい|こてん|ことがら|ことし|ことば|ことり|こなごな|こねこね|このまま|このみ|このよ|ごはん|こひつじ|こふう|こふん|こぼれる|ごまあぶら|こまかい|ごますり|こまつな|こまる|こむぎこ|こもじ|こもち|こもの|こもん|こやく|こやま|こゆう|こゆび|こよい|こよう|こりる|これくしょん|ころっけ|こわもて|こわれる|こんいん|こんかい|こんき|こんしゅう|こんすい|こんだて|こんとん|こんなん|こんびに|こんぽん|こんまけ|こんや|こんれい|こんわく|ざいえき|さいかい|さいきん|ざいげん|ざいこ|さいしょ|さいせい|ざいたく|ざいちゅう|さいてき|ざいりょう|さうな|さかいし|さがす|さかな|さかみち|さがる|さぎょう|さくし|さくひん|さくら|さこく|さこつ|さずかる|ざせき|さたん|さつえい|ざつおん|ざっか|ざつがく|さっきょく|ざっし|さつじん|ざっそう|さつたば|さつまいも|さてい|さといも|さとう|さとおや|さとし|さとる|さのう|さばく|さびしい|さべつ|さほう|さほど|さます|さみしい|さみだれ|さむけ|さめる|さやえんどう|さゆう|さよう|さよく|さらだ|ざるそば|さわやか|さわる|さんいん|さんか|さんきゃく|さんこう|さんさい|ざんしょ|さんすう|さんせい|さんそ|さんち|さんま|さんみ|さんらん|しあい|しあげ|しあさって|しあわせ|しいく|しいん|しうち|しえい|しおけ|しかい|しかく|じかん|しごと|しすう|じだい|したうけ|したぎ|したて|したみ|しちょう|しちりん|しっかり|しつじ|しつもん|してい|してき|してつ|じてん|じどう|しなぎれ|しなもの|しなん|しねま|しねん|しのぐ|しのぶ|しはい|しばかり|しはつ|しはらい|しはん|しひょう|しふく|じぶん|しへい|しほう|しほん|しまう|しまる|しみん|しむける|じむしょ|しめい|しめる|しもん|しゃいん|しゃうん|しゃおん|じゃがいも|しやくしょ|しゃくほう|しゃけん|しゃこ|しゃざい|しゃしん|しゃせん|しゃそう|しゃたい|しゃちょう|しゃっきん|じゃま|しゃりん|しゃれい|じゆう|じゅうしょ|しゅくはく|じゅしん|しゅっせき|しゅみ|しゅらば|じゅんばん|しょうかい|しょくたく|しょっけん|しょどう|しょもつ|しらせる|しらべる|しんか|しんこう|じんじゃ|しんせいじ|しんちく|しんりん|すあげ|すあし|すあな|ずあん|すいえい|すいか|すいとう|ずいぶん|すいようび|すうがく|すうじつ|すうせん|すおどり|すきま|すくう|すくない|すける|すごい|すこし|ずさん|すずしい|すすむ|すすめる|すっかり|ずっしり|ずっと|すてき|すてる|すねる|すのこ|すはだ|すばらしい|ずひょう|ずぶぬれ|すぶり|すふれ|すべて|すべる|ずほう|すぼん|すまい|すめし|すもう|すやき|すらすら|するめ|すれちがう|すろっと|すわる|すんぜん|すんぽう|せあぶら|せいかつ|せいげん|せいじ|せいよう|せおう|せかいかん|せきにん|せきむ|せきゆ|せきらんうん|せけん|せこう|せすじ|せたい|せたけ|せっかく|せっきゃく|ぜっく|せっけん|せっこつ|せっさたくま|せつぞく|せつだん|せつでん|せっぱん|せつび|せつぶん|せつめい|せつりつ|せなか|せのび|せはば|せびろ|せぼね|せまい|せまる|せめる|せもたれ|せりふ|ぜんあく|せんい|せんえい|せんか|せんきょ|せんく|せんげん|ぜんご|せんさい|せんしゅ|せんすい|せんせい|せんぞ|せんたく|せんちょう|せんてい|せんとう|せんぬき|せんねん|せんぱい|ぜんぶ|ぜんぽう|せんむ|せんめんじょ|せんもん|せんやく|せんゆう|せんよう|ぜんら|ぜんりゃく|せんれい|せんろ|そあく|そいとげる|そいね|そうがんきょう|そうき|そうご|そうしん|そうだん|そうなん|そうび|そうめん|そうり|そえもの|そえん|そがい|そげき|そこう|そこそこ|そざい|そしな|そせい|そせん|そそぐ|そだてる|そつう|そつえん|そっかん|そつぎょう|そっけつ|そっこう|そっせん|そっと|そとがわ|そとづら|そなえる|そなた|そふぼ|そぼく|そぼろ|そまつ|そまる|そむく|そむりえ|そめる|そもそも|そよかぜ|そらまめ|そろう|そんかい|そんけい|そんざい|そんしつ|そんぞく|そんちょう|ぞんび|ぞんぶん|そんみん|たあい|たいいん|たいうん|たいえき|たいおう|だいがく|たいき|たいぐう|たいけん|たいこ|たいざい|だいじょうぶ|だいすき|たいせつ|たいそう|だいたい|たいちょう|たいてい|だいどころ|たいない|たいねつ|たいのう|たいはん|だいひょう|たいふう|たいへん|たいほ|たいまつばな|たいみんぐ|たいむ|たいめん|たいやき|たいよう|たいら|たいりょく|たいる|たいわん|たうえ|たえる|たおす|たおる|たおれる|たかい|たかね|たきび|たくさん|たこく|たこやき|たさい|たしざん|だじゃれ|たすける|たずさわる|たそがれ|たたかう|たたく|ただしい|たたみ|たちばな|だっかい|だっきゃく|だっこ|だっしゅつ|だったい|たてる|たとえる|たなばた|たにん|たぬき|たのしみ|たはつ|たぶん|たべる|たぼう|たまご|たまる|だむる|ためいき|ためす|ためる|たもつ|たやすい|たよる|たらす|たりきほんがん|たりょう|たりる|たると|たれる|たれんと|たろっと|たわむれる|だんあつ|たんい|たんおん|たんか|たんき|たんけん|たんご|たんさん|たんじょうび|だんせい|たんそく|たんたい|だんち|たんてい|たんとう|だんな|たんにん|だんねつ|たんのう|たんぴん|だんぼう|たんまつ|たんめい|だんれつ|だんろ|だんわ|ちあい|ちあん|ちいき|ちいさい|ちえん|ちかい|ちから|ちきゅう|ちきん|ちけいず|ちけん|ちこく|ちさい|ちしき|ちしりょう|ちせい|ちそう|ちたい|ちたん|ちちおや|ちつじょ|ちてき|ちてん|ちぬき|ちぬり|ちのう|ちひょう|ちへいせん|ちほう|ちまた|ちみつ|ちみどろ|ちめいど|ちゃんこなべ|ちゅうい|ちゆりょく|ちょうし|ちょさくけん|ちらし|ちらみ|ちりがみ|ちりょう|ちるど|ちわわ|ちんたい|ちんもく|ついか|ついたち|つうか|つうじょう|つうはん|つうわ|つかう|つかれる|つくね|つくる|つけね|つける|つごう|つたえる|つづく|つつじ|つつむ|つとめる|つながる|つなみ|つねづね|つのる|つぶす|つまらない|つまる|つみき|つめたい|つもり|つもる|つよい|つるぼ|つるみく|つわもの|つわり|てあし|てあて|てあみ|ていおん|ていか|ていき|ていけい|ていこく|ていさつ|ていし|ていせい|ていたい|ていど|ていねい|ていひょう|ていへん|ていぼう|てうち|ておくれ|てきとう|てくび|でこぼこ|てさぎょう|てさげ|てすり|てそう|てちがい|てちょう|てつがく|てつづき|でっぱ|てつぼう|てつや|でぬかえ|てぬき|てぬぐい|てのひら|てはい|てぶくろ|てふだ|てほどき|てほん|てまえ|てまきずし|てみじか|てみやげ|てらす|てれび|てわけ|てわたし|でんあつ|てんいん|てんかい|てんき|てんぐ|てんけん|てんごく|てんさい|てんし|てんすう|でんち|てんてき|てんとう|てんない|てんぷら|てんぼうだい|てんめつ|てんらんかい|でんりょく|でんわ|どあい|といれ|どうかん|とうきゅう|どうぐ|とうし|とうむぎ|とおい|とおか|とおく|とおす|とおる|とかい|とかす|ときおり|ときどき|とくい|とくしゅう|とくてん|とくに|とくべつ|とけい|とける|とこや|とさか|としょかん|とそう|とたん|とちゅう|とっきゅう|とっくん|とつぜん|とつにゅう|とどける|ととのえる|とない|となえる|となり|とのさま|とばす|どぶがわ|とほう|とまる|とめる|ともだち|ともる|どようび|とらえる|とんかつ|どんぶり|ないかく|ないこう|ないしょ|ないす|ないせん|ないそう|なおす|ながい|なくす|なげる|なこうど|なさけ|なたでここ|なっとう|なつやすみ|ななおし|なにごと|なにもの|なにわ|なのか|なふだ|なまいき|なまえ|なまみ|なみだ|なめらか|なめる|なやむ|ならう|ならび|ならぶ|なれる|なわとび|なわばり|にあう|にいがた|にうけ|におい|にかい|にがて|にきび|にくしみ|にくまん|にげる|にさんかたんそ|にしき|にせもの|にちじょう|にちようび|にっか|にっき|にっけい|にっこう|にっさん|にっしょく|にっすう|にっせき|にってい|になう|にほん|にまめ|にもつ|にやり|にゅういん|にりんしゃ|にわとり|にんい|にんか|にんき|にんげん|にんしき|にんずう|にんそう|にんたい|にんち|にんてい|にんにく|にんぷ|にんまり|にんむ|にんめい|にんよう|ぬいくぎ|ぬかす|ぬぐいとる|ぬぐう|ぬくもり|ぬすむ|ぬまえび|ぬめり|ぬらす|ぬんちゃく|ねあげ|ねいき|ねいる|ねいろ|ねぐせ|ねくたい|ねくら|ねこぜ|ねこむ|ねさげ|ねすごす|ねそべる|ねだん|ねつい|ねっしん|ねつぞう|ねったいぎょ|ねぶそく|ねふだ|ねぼう|ねほりはほり|ねまき|ねまわし|ねみみ|ねむい|ねむたい|ねもと|ねらう|ねわざ|ねんいり|ねんおし|ねんかん|ねんきん|ねんぐ|ねんざ|ねんし|ねんちゃく|ねんど|ねんぴ|ねんぶつ|ねんまつ|ねんりょう|ねんれい|のいず|のおづま|のがす|のきなみ|のこぎり|のこす|のこる|のせる|のぞく|のぞむ|のたまう|のちほど|のっく|のばす|のはら|のべる|のぼる|のみもの|のやま|のらいぬ|のらねこ|のりもの|のりゆき|のれん|のんき|ばあい|はあく|ばあさん|ばいか|ばいく|はいけん|はいご|はいしん|はいすい|はいせん|はいそう|はいち|ばいばい|はいれつ|はえる|はおる|はかい|ばかり|はかる|はくしゅ|はけん|はこぶ|はさみ|はさん|はしご|ばしょ|はしる|はせる|ぱそこん|はそん|はたん|はちみつ|はつおん|はっかく|はづき|はっきり|はっくつ|はっけん|はっこう|はっさん|はっしん|はったつ|はっちゅう|はってん|はっぴょう|はっぽう|はなす|はなび|はにかむ|はぶらし|はみがき|はむかう|はめつ|はやい|はやし|はらう|はろうぃん|はわい|はんい|はんえい|はんおん|はんかく|はんきょう|ばんぐみ|はんこ|はんしゃ|はんすう|はんだん|ぱんち|ぱんつ|はんてい|はんとし|はんのう|はんぱ|はんぶん|はんぺん|はんぼうき|はんめい|はんらん|はんろん|ひいき|ひうん|ひえる|ひかく|ひかり|ひかる|ひかん|ひくい|ひけつ|ひこうき|ひこく|ひさい|ひさしぶり|ひさん|びじゅつかん|ひしょ|ひそか|ひそむ|ひたむき|ひだり|ひたる|ひつぎ|ひっこし|ひっし|ひつじゅひん|ひっす|ひつぜん|ぴったり|ぴっちり|ひつよう|ひてい|ひとごみ|ひなまつり|ひなん|ひねる|ひはん|ひびく|ひひょう|ひほう|ひまわり|ひまん|ひみつ|ひめい|ひめじし|ひやけ|ひやす|ひよう|びょうき|ひらがな|ひらく|ひりつ|ひりょう|ひるま|ひるやすみ|ひれい|ひろい|ひろう|ひろき|ひろゆき|ひんかく|ひんけつ|ひんこん|ひんしゅ|ひんそう|ぴんち|ひんぱん|びんぼう|ふあん|ふいうち|ふうけい|ふうせん|ぷうたろう|ふうとう|ふうふ|ふえる|ふおん|ふかい|ふきん|ふくざつ|ふくぶくろ|ふこう|ふさい|ふしぎ|ふじみ|ふすま|ふせい|ふせぐ|ふそく|ぶたにく|ふたん|ふちょう|ふつう|ふつか|ふっかつ|ふっき|ふっこく|ぶどう|ふとる|ふとん|ふのう|ふはい|ふひょう|ふへん|ふまん|ふみん|ふめつ|ふめん|ふよう|ふりこ|ふりる|ふるい|ふんいき|ぶんがく|ぶんぐ|ふんしつ|ぶんせき|ふんそう|ぶんぽう|へいあん|へいおん|へいがい|へいき|へいげん|へいこう|へいさ|へいしゃ|へいせつ|へいそ|へいたく|へいてん|へいねつ|へいわ|へきが|へこむ|べにいろ|べにしょうが|へらす|へんかん|べんきょう|べんごし|へんさい|へんたい|べんり|ほあん|ほいく|ぼうぎょ|ほうこく|ほうそう|ほうほう|ほうもん|ほうりつ|ほえる|ほおん|ほかん|ほきょう|ぼきん|ほくろ|ほけつ|ほけん|ほこう|ほこる|ほしい|ほしつ|ほしゅ|ほしょう|ほせい|ほそい|ほそく|ほたて|ほたる|ぽちぶくろ|ほっきょく|ほっさ|ほったん|ほとんど|ほめる|ほんい|ほんき|ほんけ|ほんしつ|ほんやく|まいにち|まかい|まかせる|まがる|まける|まこと|まさつ|まじめ|ますく|まぜる|まつり|まとめ|まなぶ|まぬけ|まねく|まほう|まもる|まゆげ|まよう|まろやか|まわす|まわり|まわる|まんが|まんきつ|まんぞく|まんなか|みいら|みうち|みえる|みがく|みかた|みかん|みけん|みこん|みじかい|みすい|みすえる|みせる|みっか|みつかる|みつける|みてい|みとめる|みなと|みなみかさい|みねらる|みのう|みのがす|みほん|みもと|みやげ|みらい|みりょく|みわく|みんか|みんぞく|むいか|むえき|むえん|むかい|むかう|むかえ|むかし|むぎちゃ|むける|むげん|むさぼる|むしあつい|むしば|むじゅん|むしろ|むすう|むすこ|むすぶ|むすめ|むせる|むせん|むちゅう|むなしい|むのう|むやみ|むよう|むらさき|むりょう|むろん|めいあん|めいうん|めいえん|めいかく|めいきょく|めいさい|めいし|めいそう|めいぶつ|めいれい|めいわく|めぐまれる|めざす|めした|めずらしい|めだつ|めまい|めやす|めんきょ|めんせき|めんどう|もうしあげる|もうどうけん|もえる|もくし|もくてき|もくようび|もちろん|もどる|もらう|もんく|もんだい|やおや|やける|やさい|やさしい|やすい|やすたろう|やすみ|やせる|やそう|やたい|やちん|やっと|やっぱり|やぶる|やめる|ややこしい|やよい|やわらかい|ゆうき|ゆうびんきょく|ゆうべ|ゆうめい|ゆけつ|ゆしゅつ|ゆせん|ゆそう|ゆたか|ゆちゃく|ゆでる|ゆにゅう|ゆびわ|ゆらい|ゆれる|ようい|ようか|ようきゅう|ようじ|ようす|ようちえん|よかぜ|よかん|よきん|よくせい|よくぼう|よけい|よごれる|よさん|よしゅう|よそう|よそく|よっか|よてい|よどがわく|よねつ|よやく|よゆう|よろこぶ|よろしい|らいう|らくがき|らくご|らくさつ|らくだ|らしんばん|らせん|らぞく|らたい|らっか|られつ|りえき|りかい|りきさく|りきせつ|りくぐん|りくつ|りけん|りこう|りせい|りそう|りそく|りてん|りねん|りゆう|りゅうがく|りよう|りょうり|りょかん|りょくちゃ|りょこう|りりく|りれき|りろん|りんご|るいけい|るいさい|るいじ|るいせき|るすばん|るりがわら|れいかん|れいぎ|れいせい|れいぞうこ|れいとう|れいぼう|れきし|れきだい|れんあい|れんけい|れんこん|れんさい|れんしゅう|れんぞく|れんらく|ろうか|ろうご|ろうじん|ろうそく|ろくが|ろこつ|ろじうら|ろしゅつ|ろせん|ろてん|ろめん|ろれつ|ろんぎ|ろんぱ|ろんぶん|ろんり|わかす|わかめ|わかやま|わかれる|わしつ|わじまし|わすれもの|わらう|われる'.split('|'); diff --git a/packages/util-crypto/src/mnemonic/wordlists/ko.ts b/packages/util-crypto/src/mnemonic/wordlists/ko.ts new file mode 100644 index 0000000..9efe865 --- /dev/null +++ b/packages/util-crypto/src/mnemonic/wordlists/ko.ts @@ -0,0 +1,7 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +// Adapted from the bitcoinjs/bip39 source +// https://github.com/bitcoinjs/bip39/blob/1d063b6a6aee4145b34d701037cd3e67f5446ff9/ts_src/ + +export default '가격|가끔|가난|가능|가득|가르침|가뭄|가방|가상|가슴|가운데|가을|가이드|가입|가장|가정|가족|가죽|각오|각자|간격|간부|간섭|간장|간접|간판|갈등|갈비|갈색|갈증|감각|감기|감소|감수성|감자|감정|갑자기|강남|강당|강도|강력히|강변|강북|강사|강수량|강아지|강원도|강의|강제|강조|같이|개구리|개나리|개방|개별|개선|개성|개인|객관적|거실|거액|거울|거짓|거품|걱정|건강|건물|건설|건조|건축|걸음|검사|검토|게시판|게임|겨울|견해|결과|결국|결론|결석|결승|결심|결정|결혼|경계|경고|경기|경력|경복궁|경비|경상도|경영|경우|경쟁|경제|경주|경찰|경치|경향|경험|계곡|계단|계란|계산|계속|계약|계절|계층|계획|고객|고구려|고궁|고급|고등학생|고무신|고민|고양이|고장|고전|고집|고춧가루|고통|고향|곡식|골목|골짜기|골프|공간|공개|공격|공군|공급|공기|공동|공무원|공부|공사|공식|공업|공연|공원|공장|공짜|공책|공통|공포|공항|공휴일|과목|과일|과장|과정|과학|관객|관계|관광|관념|관람|관련|관리|관습|관심|관점|관찰|광경|광고|광장|광주|괴로움|굉장히|교과서|교문|교복|교실|교양|교육|교장|교직|교통|교환|교훈|구경|구름|구멍|구별|구분|구석|구성|구속|구역|구입|구청|구체적|국가|국기|국내|국립|국물|국민|국수|국어|국왕|국적|국제|국회|군대|군사|군인|궁극적|권리|권위|권투|귀국|귀신|규정|규칙|균형|그날|그냥|그늘|그러나|그룹|그릇|그림|그제서야|그토록|극복|극히|근거|근교|근래|근로|근무|근본|근원|근육|근처|글씨|글자|금강산|금고|금년|금메달|금액|금연|금요일|금지|긍정적|기간|기관|기념|기능|기독교|기둥|기록|기름|기법|기본|기분|기쁨|기숙사|기술|기억|기업|기온|기운|기원|기적|기준|기침|기혼|기획|긴급|긴장|길이|김밥|김치|김포공항|깍두기|깜빡|깨달음|깨소금|껍질|꼭대기|꽃잎|나들이|나란히|나머지|나물|나침반|나흘|낙엽|난방|날개|날씨|날짜|남녀|남대문|남매|남산|남자|남편|남학생|낭비|낱말|내년|내용|내일|냄비|냄새|냇물|냉동|냉면|냉방|냉장고|넥타이|넷째|노동|노란색|노력|노인|녹음|녹차|녹화|논리|논문|논쟁|놀이|농구|농담|농민|농부|농업|농장|농촌|높이|눈동자|눈물|눈썹|뉴욕|느낌|늑대|능동적|능력|다방|다양성|다음|다이어트|다행|단계|단골|단독|단맛|단순|단어|단위|단점|단체|단추|단편|단풍|달걀|달러|달력|달리|닭고기|담당|담배|담요|담임|답변|답장|당근|당분간|당연히|당장|대규모|대낮|대단히|대답|대도시|대략|대량|대륙|대문|대부분|대신|대응|대장|대전|대접|대중|대책|대출|대충|대통령|대학|대한민국|대합실|대형|덩어리|데이트|도대체|도덕|도둑|도망|도서관|도심|도움|도입|도자기|도저히|도전|도중|도착|독감|독립|독서|독일|독창적|동화책|뒷모습|뒷산|딸아이|마누라|마늘|마당|마라톤|마련|마무리|마사지|마약|마요네즈|마을|마음|마이크|마중|마지막|마찬가지|마찰|마흔|막걸리|막내|막상|만남|만두|만세|만약|만일|만점|만족|만화|많이|말기|말씀|말투|맘대로|망원경|매년|매달|매력|매번|매스컴|매일|매장|맥주|먹이|먼저|먼지|멀리|메일|며느리|며칠|면담|멸치|명단|명령|명예|명의|명절|명칭|명함|모금|모니터|모델|모든|모범|모습|모양|모임|모조리|모집|모퉁이|목걸이|목록|목사|목소리|목숨|목적|목표|몰래|몸매|몸무게|몸살|몸속|몸짓|몸통|몹시|무관심|무궁화|무더위|무덤|무릎|무슨|무엇|무역|무용|무조건|무지개|무척|문구|문득|문법|문서|문제|문학|문화|물가|물건|물결|물고기|물론|물리학|물음|물질|물체|미국|미디어|미사일|미술|미역|미용실|미움|미인|미팅|미혼|민간|민족|민주|믿음|밀가루|밀리미터|밑바닥|바가지|바구니|바나나|바늘|바닥|바닷가|바람|바이러스|바탕|박물관|박사|박수|반대|반드시|반말|반발|반성|반응|반장|반죽|반지|반찬|받침|발가락|발걸음|발견|발달|발레|발목|발바닥|발생|발음|발자국|발전|발톱|발표|밤하늘|밥그릇|밥맛|밥상|밥솥|방금|방면|방문|방바닥|방법|방송|방식|방안|방울|방지|방학|방해|방향|배경|배꼽|배달|배드민턴|백두산|백색|백성|백인|백제|백화점|버릇|버섯|버튼|번개|번역|번지|번호|벌금|벌레|벌써|범위|범인|범죄|법률|법원|법적|법칙|베이징|벨트|변경|변동|변명|변신|변호사|변화|별도|별명|별일|병실|병아리|병원|보관|보너스|보라색|보람|보름|보상|보안|보자기|보장|보전|보존|보통|보편적|보험|복도|복사|복숭아|복습|볶음|본격적|본래|본부|본사|본성|본인|본질|볼펜|봉사|봉지|봉투|부근|부끄러움|부담|부동산|부문|부분|부산|부상|부엌|부인|부작용|부장|부정|부족|부지런히|부친|부탁|부품|부회장|북부|북한|분노|분량|분리|분명|분석|분야|분위기|분필|분홍색|불고기|불과|불교|불꽃|불만|불법|불빛|불안|불이익|불행|브랜드|비극|비난|비닐|비둘기|비디오|비로소|비만|비명|비밀|비바람|비빔밥|비상|비용|비율|비중|비타민|비판|빌딩|빗물|빗방울|빗줄기|빛깔|빨간색|빨래|빨리|사건|사계절|사나이|사냥|사람|사랑|사립|사모님|사물|사방|사상|사생활|사설|사슴|사실|사업|사용|사월|사장|사전|사진|사촌|사춘기|사탕|사투리|사흘|산길|산부인과|산업|산책|살림|살인|살짝|삼계탕|삼국|삼십|삼월|삼촌|상관|상금|상대|상류|상반기|상상|상식|상업|상인|상자|상점|상처|상추|상태|상표|상품|상황|새벽|색깔|색연필|생각|생명|생물|생방송|생산|생선|생신|생일|생활|서랍|서른|서명|서민|서비스|서양|서울|서적|서점|서쪽|서클|석사|석유|선거|선물|선배|선생|선수|선원|선장|선전|선택|선풍기|설거지|설날|설렁탕|설명|설문|설사|설악산|설치|설탕|섭씨|성공|성당|성명|성별|성인|성장|성적|성질|성함|세금|세미나|세상|세월|세종대왕|세탁|센터|센티미터|셋째|소규모|소극적|소금|소나기|소년|소득|소망|소문|소설|소속|소아과|소용|소원|소음|소중히|소지품|소질|소풍|소형|속담|속도|속옷|손가락|손길|손녀|손님|손등|손목|손뼉|손실|손질|손톱|손해|솔직히|솜씨|송아지|송이|송편|쇠고기|쇼핑|수건|수년|수단|수돗물|수동적|수면|수명|수박|수상|수석|수술|수시로|수업|수염|수영|수입|수준|수집|수출|수컷|수필|수학|수험생|수화기|숙녀|숙소|숙제|순간|순서|순수|순식간|순위|숟가락|술병|술집|숫자|스님|스물|스스로|스승|스웨터|스위치|스케이트|스튜디오|스트레스|스포츠|슬쩍|슬픔|습관|습기|승객|승리|승부|승용차|승진|시각|시간|시골|시금치|시나리오|시댁|시리즈|시멘트|시민|시부모|시선|시설|시스템|시아버지|시어머니|시월|시인|시일|시작|시장|시절|시점|시중|시즌|시집|시청|시합|시험|식구|식기|식당|식량|식료품|식물|식빵|식사|식생활|식초|식탁|식품|신고|신규|신념|신문|신발|신비|신사|신세|신용|신제품|신청|신체|신화|실감|실내|실력|실례|실망|실수|실습|실시|실장|실정|실질적|실천|실체|실컷|실태|실패|실험|실현|심리|심부름|심사|심장|심정|심판|쌍둥이|씨름|씨앗|아가씨|아나운서|아드님|아들|아쉬움|아스팔트|아시아|아울러|아저씨|아줌마|아직|아침|아파트|아프리카|아픔|아홉|아흔|악기|악몽|악수|안개|안경|안과|안내|안녕|안동|안방|안부|안주|알루미늄|알코올|암시|암컷|압력|앞날|앞문|애인|애정|액수|앨범|야간|야단|야옹|약간|약국|약속|약수|약점|약품|약혼녀|양념|양력|양말|양배추|양주|양파|어둠|어려움|어른|어젯밤|어쨌든|어쩌다가|어쩐지|언니|언덕|언론|언어|얼굴|얼른|얼음|얼핏|엄마|업무|업종|업체|엉덩이|엉망|엉터리|엊그제|에너지|에어컨|엔진|여건|여고생|여관|여군|여권|여대생|여덟|여동생|여든|여론|여름|여섯|여성|여왕|여인|여전히|여직원|여학생|여행|역사|역시|역할|연결|연구|연극|연기|연락|연설|연세|연속|연습|연애|연예인|연인|연장|연주|연출|연필|연합|연휴|열기|열매|열쇠|열심히|열정|열차|열흘|염려|엽서|영국|영남|영상|영양|영역|영웅|영원히|영하|영향|영혼|영화|옆구리|옆방|옆집|예감|예금|예방|예산|예상|예선|예술|예습|예식장|예약|예전|예절|예정|예컨대|옛날|오늘|오락|오랫동안|오렌지|오로지|오른발|오븐|오십|오염|오월|오전|오직|오징어|오페라|오피스텔|오히려|옥상|옥수수|온갖|온라인|온몸|온종일|온통|올가을|올림픽|올해|옷차림|와이셔츠|와인|완성|완전|왕비|왕자|왜냐하면|왠지|외갓집|외국|외로움|외삼촌|외출|외침|외할머니|왼발|왼손|왼쪽|요금|요일|요즘|요청|용기|용서|용어|우산|우선|우승|우연히|우정|우체국|우편|운동|운명|운반|운전|운행|울산|울음|움직임|웃어른|웃음|워낙|원고|원래|원서|원숭이|원인|원장|원피스|월급|월드컵|월세|월요일|웨이터|위반|위법|위성|위원|위험|위협|윗사람|유난히|유럽|유명|유물|유산|유적|유치원|유학|유행|유형|육군|육상|육십|육체|은행|음력|음료|음반|음성|음식|음악|음주|의견|의논|의문|의복|의식|의심|의외로|의욕|의원|의학|이것|이곳|이념|이놈|이달|이대로|이동|이렇게|이력서|이론적|이름|이민|이발소|이별|이불|이빨|이상|이성|이슬|이야기|이용|이웃|이월|이윽고|이익|이전|이중|이튿날|이틀|이혼|인간|인격|인공|인구|인근|인기|인도|인류|인물|인생|인쇄|인연|인원|인재|인종|인천|인체|인터넷|인하|인형|일곱|일기|일단|일대|일등|일반|일본|일부|일상|일생|일손|일요일|일월|일정|일종|일주일|일찍|일체|일치|일행|일회용|임금|임무|입대|입력|입맛|입사|입술|입시|입원|입장|입학|자가용|자격|자극|자동|자랑|자부심|자식|자신|자연|자원|자율|자전거|자정|자존심|자판|작가|작년|작성|작업|작용|작은딸|작품|잔디|잔뜩|잔치|잘못|잠깐|잠수함|잠시|잠옷|잠자리|잡지|장관|장군|장기간|장래|장례|장르|장마|장면|장모|장미|장비|장사|장소|장식|장애인|장인|장점|장차|장학금|재능|재빨리|재산|재생|재작년|재정|재채기|재판|재학|재활용|저것|저고리|저곳|저녁|저런|저렇게|저번|저울|저절로|저축|적극|적당히|적성|적용|적응|전개|전공|전기|전달|전라도|전망|전문|전반|전부|전세|전시|전용|전자|전쟁|전주|전철|전체|전통|전혀|전후|절대|절망|절반|절약|절차|점검|점수|점심|점원|점점|점차|접근|접시|접촉|젓가락|정거장|정도|정류장|정리|정말|정면|정문|정반대|정보|정부|정비|정상|정성|정오|정원|정장|정지|정치|정확히|제공|제과점|제대로|제목|제발|제법|제삿날|제안|제일|제작|제주도|제출|제품|제한|조각|조건|조금|조깅|조명|조미료|조상|조선|조용히|조절|조정|조직|존댓말|존재|졸업|졸음|종교|종로|종류|종소리|종업원|종종|종합|좌석|죄인|주관적|주름|주말|주머니|주먹|주문|주민|주방|주변|주식|주인|주일|주장|주전자|주택|준비|줄거리|줄기|줄무늬|중간|중계방송|중국|중년|중단|중독|중반|중부|중세|중소기업|중순|중앙|중요|중학교|즉석|즉시|즐거움|증가|증거|증권|증상|증세|지각|지갑|지경|지극히|지금|지급|지능|지름길|지리산|지방|지붕|지식|지역|지우개|지원|지적|지점|지진|지출|직선|직업|직원|직장|진급|진동|진로|진료|진리|진짜|진찰|진출|진통|진행|질문|질병|질서|짐작|집단|집안|집중|짜증|찌꺼기|차남|차라리|차량|차림|차별|차선|차츰|착각|찬물|찬성|참가|참기름|참새|참석|참여|참외|참조|찻잔|창가|창고|창구|창문|창밖|창작|창조|채널|채점|책가방|책방|책상|책임|챔피언|처벌|처음|천국|천둥|천장|천재|천천히|철도|철저히|철학|첫날|첫째|청년|청바지|청소|청춘|체계|체력|체온|체육|체중|체험|초등학생|초반|초밥|초상화|초순|초여름|초원|초저녁|초점|초청|초콜릿|촛불|총각|총리|총장|촬영|최근|최상|최선|최신|최악|최종|추석|추억|추진|추천|추측|축구|축소|축제|축하|출근|출발|출산|출신|출연|출입|출장|출판|충격|충고|충돌|충분히|충청도|취업|취직|취향|치약|친구|친척|칠십|칠월|칠판|침대|침묵|침실|칫솔|칭찬|카메라|카운터|칼국수|캐릭터|캠퍼스|캠페인|커튼|컨디션|컬러|컴퓨터|코끼리|코미디|콘서트|콜라|콤플렉스|콩나물|쾌감|쿠데타|크림|큰길|큰딸|큰소리|큰아들|큰어머니|큰일|큰절|클래식|클럽|킬로|타입|타자기|탁구|탁자|탄생|태권도|태양|태풍|택시|탤런트|터널|터미널|테니스|테스트|테이블|텔레비전|토론|토마토|토요일|통계|통과|통로|통신|통역|통일|통장|통제|통증|통합|통화|퇴근|퇴원|퇴직금|튀김|트럭|특급|특별|특성|특수|특징|특히|튼튼히|티셔츠|파란색|파일|파출소|판결|판단|판매|판사|팔십|팔월|팝송|패션|팩스|팩시밀리|팬티|퍼센트|페인트|편견|편의|편지|편히|평가|평균|평생|평소|평양|평일|평화|포스터|포인트|포장|포함|표면|표정|표준|표현|품목|품질|풍경|풍속|풍습|프랑스|프린터|플라스틱|피곤|피망|피아노|필름|필수|필요|필자|필통|핑계|하느님|하늘|하드웨어|하룻밤|하반기|하숙집|하순|하여튼|하지만|하천|하품|하필|학과|학교|학급|학기|학년|학력|학번|학부모|학비|학생|학술|학습|학용품|학원|학위|학자|학점|한계|한글|한꺼번에|한낮|한눈|한동안|한때|한라산|한마디|한문|한번|한복|한식|한여름|한쪽|할머니|할아버지|할인|함께|함부로|합격|합리적|항공|항구|항상|항의|해결|해군|해답|해당|해물|해석|해설|해수욕장|해안|핵심|핸드백|햄버거|햇볕|햇살|행동|행복|행사|행운|행위|향기|향상|향수|허락|허용|헬기|현관|현금|현대|현상|현실|현장|현재|현지|혈액|협력|형부|형사|형수|형식|형제|형태|형편|혜택|호기심|호남|호랑이|호박|호텔|호흡|혹시|홀로|홈페이지|홍보|홍수|홍차|화면|화분|화살|화요일|화장|화학|확보|확인|확장|확정|환갑|환경|환영|환율|환자|활기|활동|활발히|활용|활짝|회견|회관|회복|회색|회원|회장|회전|횟수|횡단보도|효율적|후반|후춧가루|훈련|훨씬|휴식|휴일|흉내|흐름|흑백|흑인|흔적|흔히|흥미|흥분|희곡|희망|희생|흰색|힘껏'.split('|'); diff --git a/packages/util-crypto/src/mnemonic/wordlists/zh-s.ts b/packages/util-crypto/src/mnemonic/wordlists/zh-s.ts new file mode 100644 index 0000000..4131792 --- /dev/null +++ b/packages/util-crypto/src/mnemonic/wordlists/zh-s.ts @@ -0,0 +1,7 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +// Adapted from the bitcoinjs/bip39 source +// https://github.com/bitcoinjs/bip39/blob/1d063b6a6aee4145b34d701037cd3e67f5446ff9/ts_src/ + +export default '的|一|是|在|不|了|有|和|人|这|中|大|为|上|个|国|我|以|要|他|时|来|用|们|生|到|作|地|于|出|就|分|对|成|会|可|主|发|年|动|同|工|也|能|下|过|子|说|产|种|面|而|方|后|多|定|行|学|法|所|民|得|经|十|三|之|进|着|等|部|度|家|电|力|里|如|水|化|高|自|二|理|起|小|物|现|实|加|量|都|两|体|制|机|当|使|点|从|业|本|去|把|性|好|应|开|它|合|还|因|由|其|些|然|前|外|天|政|四|日|那|社|义|事|平|形|相|全|表|间|样|与|关|各|重|新|线|内|数|正|心|反|你|明|看|原|又|么|利|比|或|但|质|气|第|向|道|命|此|变|条|只|没|结|解|问|意|建|月|公|无|系|军|很|情|者|最|立|代|想|已|通|并|提|直|题|党|程|展|五|果|料|象|员|革|位|入|常|文|总|次|品|式|活|设|及|管|特|件|长|求|老|头|基|资|边|流|路|级|少|图|山|统|接|知|较|将|组|见|计|别|她|手|角|期|根|论|运|农|指|几|九|区|强|放|决|西|被|干|做|必|战|先|回|则|任|取|据|处|队|南|给|色|光|门|即|保|治|北|造|百|规|热|领|七|海|口|东|导|器|压|志|世|金|增|争|济|阶|油|思|术|极|交|受|联|什|认|六|共|权|收|证|改|清|美|再|采|转|更|单|风|切|打|白|教|速|花|带|安|场|身|车|例|真|务|具|万|每|目|至|达|走|积|示|议|声|报|斗|完|类|八|离|华|名|确|才|科|张|信|马|节|话|米|整|空|元|况|今|集|温|传|土|许|步|群|广|石|记|需|段|研|界|拉|林|律|叫|且|究|观|越|织|装|影|算|低|持|音|众|书|布|复|容|儿|须|际|商|非|验|连|断|深|难|近|矿|千|周|委|素|技|备|半|办|青|省|列|习|响|约|支|般|史|感|劳|便|团|往|酸|历|市|克|何|除|消|构|府|称|太|准|精|值|号|率|族|维|划|选|标|写|存|候|毛|亲|快|效|斯|院|查|江|型|眼|王|按|格|养|易|置|派|层|片|始|却|专|状|育|厂|京|识|适|属|圆|包|火|住|调|满|县|局|照|参|红|细|引|听|该|铁|价|严|首|底|液|官|德|随|病|苏|失|尔|死|讲|配|女|黄|推|显|谈|罪|神|艺|呢|席|含|企|望|密|批|营|项|防|举|球|英|氧|势|告|李|台|落|木|帮|轮|破|亚|师|围|注|远|字|材|排|供|河|态|封|另|施|减|树|溶|怎|止|案|言|士|均|武|固|叶|鱼|波|视|仅|费|紧|爱|左|章|早|朝|害|续|轻|服|试|食|充|兵|源|判|护|司|足|某|练|差|致|板|田|降|黑|犯|负|击|范|继|兴|似|余|坚|曲|输|修|故|城|夫|够|送|笔|船|占|右|财|吃|富|春|职|觉|汉|画|功|巴|跟|虽|杂|飞|检|吸|助|升|阳|互|初|创|抗|考|投|坏|策|古|径|换|未|跑|留|钢|曾|端|责|站|简|述|钱|副|尽|帝|射|草|冲|承|独|令|限|阿|宣|环|双|请|超|微|让|控|州|良|轴|找|否|纪|益|依|优|顶|础|载|倒|房|突|坐|粉|敌|略|客|袁|冷|胜|绝|析|块|剂|测|丝|协|诉|念|陈|仍|罗|盐|友|洋|错|苦|夜|刑|移|频|逐|靠|混|母|短|皮|终|聚|汽|村|云|哪|既|距|卫|停|烈|央|察|烧|迅|境|若|印|洲|刻|括|激|孔|搞|甚|室|待|核|校|散|侵|吧|甲|游|久|菜|味|旧|模|湖|货|损|预|阻|毫|普|稳|乙|妈|植|息|扩|银|语|挥|酒|守|拿|序|纸|医|缺|雨|吗|针|刘|啊|急|唱|误|训|愿|审|附|获|茶|鲜|粮|斤|孩|脱|硫|肥|善|龙|演|父|渐|血|欢|械|掌|歌|沙|刚|攻|谓|盾|讨|晚|粒|乱|燃|矛|乎|杀|药|宁|鲁|贵|钟|煤|读|班|伯|香|介|迫|句|丰|培|握|兰|担|弦|蛋|沉|假|穿|执|答|乐|谁|顺|烟|缩|征|脸|喜|松|脚|困|异|免|背|星|福|买|染|井|概|慢|怕|磁|倍|祖|皇|促|静|补|评|翻|肉|践|尼|衣|宽|扬|棉|希|伤|操|垂|秋|宜|氢|套|督|振|架|亮|末|宪|庆|编|牛|触|映|雷|销|诗|座|居|抓|裂|胞|呼|娘|景|威|绿|晶|厚|盟|衡|鸡|孙|延|危|胶|屋|乡|临|陆|顾|掉|呀|灯|岁|措|束|耐|剧|玉|赵|跳|哥|季|课|凯|胡|额|款|绍|卷|齐|伟|蒸|殖|永|宗|苗|川|炉|岩|弱|零|杨|奏|沿|露|杆|探|滑|镇|饭|浓|航|怀|赶|库|夺|伊|灵|税|途|灭|赛|归|召|鼓|播|盘|裁|险|康|唯|录|菌|纯|借|糖|盖|横|符|私|努|堂|域|枪|润|幅|哈|竟|熟|虫|泽|脑|壤|碳|欧|遍|侧|寨|敢|彻|虑|斜|薄|庭|纳|弹|饲|伸|折|麦|湿|暗|荷|瓦|塞|床|筑|恶|户|访|塔|奇|透|梁|刀|旋|迹|卡|氯|遇|份|毒|泥|退|洗|摆|灰|彩|卖|耗|夏|择|忙|铜|献|硬|予|繁|圈|雪|函|亦|抽|篇|阵|阴|丁|尺|追|堆|雄|迎|泛|爸|楼|避|谋|吨|野|猪|旗|累|偏|典|馆|索|秦|脂|潮|爷|豆|忽|托|惊|塑|遗|愈|朱|替|纤|粗|倾|尚|痛|楚|谢|奋|购|磨|君|池|旁|碎|骨|监|捕|弟|暴|割|贯|殊|释|词|亡|壁|顿|宝|午|尘|闻|揭|炮|残|冬|桥|妇|警|综|招|吴|付|浮|遭|徐|您|摇|谷|赞|箱|隔|订|男|吹|园|纷|唐|败|宋|玻|巨|耕|坦|荣|闭|湾|键|凡|驻|锅|救|恩|剥|凝|碱|齿|截|炼|麻|纺|禁|废|盛|版|缓|净|睛|昌|婚|涉|筒|嘴|插|岸|朗|庄|街|藏|姑|贸|腐|奴|啦|惯|乘|伙|恢|匀|纱|扎|辩|耳|彪|臣|亿|璃|抵|脉|秀|萨|俄|网|舞|店|喷|纵|寸|汗|挂|洪|贺|闪|柬|爆|烯|津|稻|墙|软|勇|像|滚|厘|蒙|芳|肯|坡|柱|荡|腿|仪|旅|尾|轧|冰|贡|登|黎|削|钻|勒|逃|障|氨|郭|峰|币|港|伏|轨|亩|毕|擦|莫|刺|浪|秘|援|株|健|售|股|岛|甘|泡|睡|童|铸|汤|阀|休|汇|舍|牧|绕|炸|哲|磷|绩|朋|淡|尖|启|陷|柴|呈|徒|颜|泪|稍|忘|泵|蓝|拖|洞|授|镜|辛|壮|锋|贫|虚|弯|摩|泰|幼|廷|尊|窗|纲|弄|隶|疑|氏|宫|姐|震|瑞|怪|尤|琴|循|描|膜|违|夹|腰|缘|珠|穷|森|枝|竹|沟|催|绳|忆|邦|剩|幸|浆|栏|拥|牙|贮|礼|滤|钠|纹|罢|拍|咱|喊|袖|埃|勤|罚|焦|潜|伍|墨|欲|缝|姓|刊|饱|仿|奖|铝|鬼|丽|跨|默|挖|链|扫|喝|袋|炭|污|幕|诸|弧|励|梅|奶|洁|灾|舟|鉴|苯|讼|抱|毁|懂|寒|智|埔|寄|届|跃|渡|挑|丹|艰|贝|碰|拔|爹|戴|码|梦|芽|熔|赤|渔|哭|敬|颗|奔|铅|仲|虎|稀|妹|乏|珍|申|桌|遵|允|隆|螺|仓|魏|锐|晓|氮|兼|隐|碍|赫|拨|忠|肃|缸|牵|抢|博|巧|壳|兄|杜|讯|诚|碧|祥|柯|页|巡|矩|悲|灌|龄|伦|票|寻|桂|铺|圣|恐|恰|郑|趣|抬|荒|腾|贴|柔|滴|猛|阔|辆|妻|填|撤|储|签|闹|扰|紫|砂|递|戏|吊|陶|伐|喂|疗|瓶|婆|抚|臂|摸|忍|虾|蜡|邻|胸|巩|挤|偶|弃|槽|劲|乳|邓|吉|仁|烂|砖|租|乌|舰|伴|瓜|浅|丙|暂|燥|橡|柳|迷|暖|牌|秧|胆|详|簧|踏|瓷|谱|呆|宾|糊|洛|辉|愤|竞|隙|怒|粘|乃|绪|肩|籍|敏|涂|熙|皆|侦|悬|掘|享|纠|醒|狂|锁|淀|恨|牲|霸|爬|赏|逆|玩|陵|祝|秒|浙|貌|役|彼|悉|鸭|趋|凤|晨|畜|辈|秩|卵|署|梯|炎|滩|棋|驱|筛|峡|冒|啥|寿|译|浸|泉|帽|迟|硅|疆|贷|漏|稿|冠|嫩|胁|芯|牢|叛|蚀|奥|鸣|岭|羊|凭|串|塘|绘|酵|融|盆|锡|庙|筹|冻|辅|摄|袭|筋|拒|僚|旱|钾|鸟|漆|沈|眉|疏|添|棒|穗|硝|韩|逼|扭|侨|凉|挺|碗|栽|炒|杯|患|馏|劝|豪|辽|勃|鸿|旦|吏|拜|狗|埋|辊|掩|饮|搬|骂|辞|勾|扣|估|蒋|绒|雾|丈|朵|姆|拟|宇|辑|陕|雕|偿|蓄|崇|剪|倡|厅|咬|驶|薯|刷|斥|番|赋|奉|佛|浇|漫|曼|扇|钙|桃|扶|仔|返|俗|亏|腔|鞋|棱|覆|框|悄|叔|撞|骗|勘|旺|沸|孤|吐|孟|渠|屈|疾|妙|惜|仰|狠|胀|谐|抛|霉|桑|岗|嘛|衰|盗|渗|脏|赖|涌|甜|曹|阅|肌|哩|厉|烃|纬|毅|昨|伪|症|煮|叹|钉|搭|茎|笼|酷|偷|弓|锥|恒|杰|坑|鼻|翼|纶|叙|狱|逮|罐|络|棚|抑|膨|蔬|寺|骤|穆|冶|枯|册|尸|凸|绅|坯|牺|焰|轰|欣|晋|瘦|御|锭|锦|丧|旬|锻|垄|搜|扑|邀|亭|酯|迈|舒|脆|酶|闲|忧|酚|顽|羽|涨|卸|仗|陪|辟|惩|杭|姚|肚|捉|飘|漂|昆|欺|吾|郎|烷|汁|呵|饰|萧|雅|邮|迁|燕|撒|姻|赴|宴|烦|债|帐|斑|铃|旨|醇|董|饼|雏|姿|拌|傅|腹|妥|揉|贤|拆|歪|葡|胺|丢|浩|徽|昂|垫|挡|览|贪|慰|缴|汪|慌|冯|诺|姜|谊|凶|劣|诬|耀|昏|躺|盈|骑|乔|溪|丛|卢|抹|闷|咨|刮|驾|缆|悟|摘|铒|掷|颇|幻|柄|惠|惨|佳|仇|腊|窝|涤|剑|瞧|堡|泼|葱|罩|霍|捞|胎|苍|滨|俩|捅|湘|砍|霞|邵|萄|疯|淮|遂|熊|粪|烘|宿|档|戈|驳|嫂|裕|徙|箭|捐|肠|撑|晒|辨|殿|莲|摊|搅|酱|屏|疫|哀|蔡|堵|沫|皱|畅|叠|阁|莱|敲|辖|钩|痕|坝|巷|饿|祸|丘|玄|溜|曰|逻|彭|尝|卿|妨|艇|吞|韦|怨|矮|歇'.split('|'); diff --git a/packages/util-crypto/src/mnemonic/wordlists/zh-t.ts b/packages/util-crypto/src/mnemonic/wordlists/zh-t.ts new file mode 100644 index 0000000..9caf121 --- /dev/null +++ b/packages/util-crypto/src/mnemonic/wordlists/zh-t.ts @@ -0,0 +1,7 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +// Adapted from the bitcoinjs/bip39 source +// https://github.com/bitcoinjs/bip39/blob/1d063b6a6aee4145b34d701037cd3e67f5446ff9/ts_src/ + +export default '的|一|是|在|不|了|有|和|人|這|中|大|為|上|個|國|我|以|要|他|時|來|用|們|生|到|作|地|於|出|就|分|對|成|會|可|主|發|年|動|同|工|也|能|下|過|子|說|產|種|面|而|方|後|多|定|行|學|法|所|民|得|經|十|三|之|進|著|等|部|度|家|電|力|裡|如|水|化|高|自|二|理|起|小|物|現|實|加|量|都|兩|體|制|機|當|使|點|從|業|本|去|把|性|好|應|開|它|合|還|因|由|其|些|然|前|外|天|政|四|日|那|社|義|事|平|形|相|全|表|間|樣|與|關|各|重|新|線|內|數|正|心|反|你|明|看|原|又|麼|利|比|或|但|質|氣|第|向|道|命|此|變|條|只|沒|結|解|問|意|建|月|公|無|系|軍|很|情|者|最|立|代|想|已|通|並|提|直|題|黨|程|展|五|果|料|象|員|革|位|入|常|文|總|次|品|式|活|設|及|管|特|件|長|求|老|頭|基|資|邊|流|路|級|少|圖|山|統|接|知|較|將|組|見|計|別|她|手|角|期|根|論|運|農|指|幾|九|區|強|放|決|西|被|幹|做|必|戰|先|回|則|任|取|據|處|隊|南|給|色|光|門|即|保|治|北|造|百|規|熱|領|七|海|口|東|導|器|壓|志|世|金|增|爭|濟|階|油|思|術|極|交|受|聯|什|認|六|共|權|收|證|改|清|美|再|採|轉|更|單|風|切|打|白|教|速|花|帶|安|場|身|車|例|真|務|具|萬|每|目|至|達|走|積|示|議|聲|報|鬥|完|類|八|離|華|名|確|才|科|張|信|馬|節|話|米|整|空|元|況|今|集|溫|傳|土|許|步|群|廣|石|記|需|段|研|界|拉|林|律|叫|且|究|觀|越|織|裝|影|算|低|持|音|眾|書|布|复|容|兒|須|際|商|非|驗|連|斷|深|難|近|礦|千|週|委|素|技|備|半|辦|青|省|列|習|響|約|支|般|史|感|勞|便|團|往|酸|歷|市|克|何|除|消|構|府|稱|太|準|精|值|號|率|族|維|劃|選|標|寫|存|候|毛|親|快|效|斯|院|查|江|型|眼|王|按|格|養|易|置|派|層|片|始|卻|專|狀|育|廠|京|識|適|屬|圓|包|火|住|調|滿|縣|局|照|參|紅|細|引|聽|該|鐵|價|嚴|首|底|液|官|德|隨|病|蘇|失|爾|死|講|配|女|黃|推|顯|談|罪|神|藝|呢|席|含|企|望|密|批|營|項|防|舉|球|英|氧|勢|告|李|台|落|木|幫|輪|破|亞|師|圍|注|遠|字|材|排|供|河|態|封|另|施|減|樹|溶|怎|止|案|言|士|均|武|固|葉|魚|波|視|僅|費|緊|愛|左|章|早|朝|害|續|輕|服|試|食|充|兵|源|判|護|司|足|某|練|差|致|板|田|降|黑|犯|負|擊|范|繼|興|似|餘|堅|曲|輸|修|故|城|夫|夠|送|筆|船|佔|右|財|吃|富|春|職|覺|漢|畫|功|巴|跟|雖|雜|飛|檢|吸|助|昇|陽|互|初|創|抗|考|投|壞|策|古|徑|換|未|跑|留|鋼|曾|端|責|站|簡|述|錢|副|盡|帝|射|草|衝|承|獨|令|限|阿|宣|環|雙|請|超|微|讓|控|州|良|軸|找|否|紀|益|依|優|頂|礎|載|倒|房|突|坐|粉|敵|略|客|袁|冷|勝|絕|析|塊|劑|測|絲|協|訴|念|陳|仍|羅|鹽|友|洋|錯|苦|夜|刑|移|頻|逐|靠|混|母|短|皮|終|聚|汽|村|雲|哪|既|距|衛|停|烈|央|察|燒|迅|境|若|印|洲|刻|括|激|孔|搞|甚|室|待|核|校|散|侵|吧|甲|遊|久|菜|味|舊|模|湖|貨|損|預|阻|毫|普|穩|乙|媽|植|息|擴|銀|語|揮|酒|守|拿|序|紙|醫|缺|雨|嗎|針|劉|啊|急|唱|誤|訓|願|審|附|獲|茶|鮮|糧|斤|孩|脫|硫|肥|善|龍|演|父|漸|血|歡|械|掌|歌|沙|剛|攻|謂|盾|討|晚|粒|亂|燃|矛|乎|殺|藥|寧|魯|貴|鐘|煤|讀|班|伯|香|介|迫|句|豐|培|握|蘭|擔|弦|蛋|沉|假|穿|執|答|樂|誰|順|煙|縮|徵|臉|喜|松|腳|困|異|免|背|星|福|買|染|井|概|慢|怕|磁|倍|祖|皇|促|靜|補|評|翻|肉|踐|尼|衣|寬|揚|棉|希|傷|操|垂|秋|宜|氫|套|督|振|架|亮|末|憲|慶|編|牛|觸|映|雷|銷|詩|座|居|抓|裂|胞|呼|娘|景|威|綠|晶|厚|盟|衡|雞|孫|延|危|膠|屋|鄉|臨|陸|顧|掉|呀|燈|歲|措|束|耐|劇|玉|趙|跳|哥|季|課|凱|胡|額|款|紹|卷|齊|偉|蒸|殖|永|宗|苗|川|爐|岩|弱|零|楊|奏|沿|露|桿|探|滑|鎮|飯|濃|航|懷|趕|庫|奪|伊|靈|稅|途|滅|賽|歸|召|鼓|播|盤|裁|險|康|唯|錄|菌|純|借|糖|蓋|橫|符|私|努|堂|域|槍|潤|幅|哈|竟|熟|蟲|澤|腦|壤|碳|歐|遍|側|寨|敢|徹|慮|斜|薄|庭|納|彈|飼|伸|折|麥|濕|暗|荷|瓦|塞|床|築|惡|戶|訪|塔|奇|透|梁|刀|旋|跡|卡|氯|遇|份|毒|泥|退|洗|擺|灰|彩|賣|耗|夏|擇|忙|銅|獻|硬|予|繁|圈|雪|函|亦|抽|篇|陣|陰|丁|尺|追|堆|雄|迎|泛|爸|樓|避|謀|噸|野|豬|旗|累|偏|典|館|索|秦|脂|潮|爺|豆|忽|托|驚|塑|遺|愈|朱|替|纖|粗|傾|尚|痛|楚|謝|奮|購|磨|君|池|旁|碎|骨|監|捕|弟|暴|割|貫|殊|釋|詞|亡|壁|頓|寶|午|塵|聞|揭|炮|殘|冬|橋|婦|警|綜|招|吳|付|浮|遭|徐|您|搖|谷|贊|箱|隔|訂|男|吹|園|紛|唐|敗|宋|玻|巨|耕|坦|榮|閉|灣|鍵|凡|駐|鍋|救|恩|剝|凝|鹼|齒|截|煉|麻|紡|禁|廢|盛|版|緩|淨|睛|昌|婚|涉|筒|嘴|插|岸|朗|莊|街|藏|姑|貿|腐|奴|啦|慣|乘|夥|恢|勻|紗|扎|辯|耳|彪|臣|億|璃|抵|脈|秀|薩|俄|網|舞|店|噴|縱|寸|汗|掛|洪|賀|閃|柬|爆|烯|津|稻|牆|軟|勇|像|滾|厘|蒙|芳|肯|坡|柱|盪|腿|儀|旅|尾|軋|冰|貢|登|黎|削|鑽|勒|逃|障|氨|郭|峰|幣|港|伏|軌|畝|畢|擦|莫|刺|浪|秘|援|株|健|售|股|島|甘|泡|睡|童|鑄|湯|閥|休|匯|舍|牧|繞|炸|哲|磷|績|朋|淡|尖|啟|陷|柴|呈|徒|顏|淚|稍|忘|泵|藍|拖|洞|授|鏡|辛|壯|鋒|貧|虛|彎|摩|泰|幼|廷|尊|窗|綱|弄|隸|疑|氏|宮|姐|震|瑞|怪|尤|琴|循|描|膜|違|夾|腰|緣|珠|窮|森|枝|竹|溝|催|繩|憶|邦|剩|幸|漿|欄|擁|牙|貯|禮|濾|鈉|紋|罷|拍|咱|喊|袖|埃|勤|罰|焦|潛|伍|墨|欲|縫|姓|刊|飽|仿|獎|鋁|鬼|麗|跨|默|挖|鏈|掃|喝|袋|炭|污|幕|諸|弧|勵|梅|奶|潔|災|舟|鑑|苯|訟|抱|毀|懂|寒|智|埔|寄|屆|躍|渡|挑|丹|艱|貝|碰|拔|爹|戴|碼|夢|芽|熔|赤|漁|哭|敬|顆|奔|鉛|仲|虎|稀|妹|乏|珍|申|桌|遵|允|隆|螺|倉|魏|銳|曉|氮|兼|隱|礙|赫|撥|忠|肅|缸|牽|搶|博|巧|殼|兄|杜|訊|誠|碧|祥|柯|頁|巡|矩|悲|灌|齡|倫|票|尋|桂|鋪|聖|恐|恰|鄭|趣|抬|荒|騰|貼|柔|滴|猛|闊|輛|妻|填|撤|儲|簽|鬧|擾|紫|砂|遞|戲|吊|陶|伐|餵|療|瓶|婆|撫|臂|摸|忍|蝦|蠟|鄰|胸|鞏|擠|偶|棄|槽|勁|乳|鄧|吉|仁|爛|磚|租|烏|艦|伴|瓜|淺|丙|暫|燥|橡|柳|迷|暖|牌|秧|膽|詳|簧|踏|瓷|譜|呆|賓|糊|洛|輝|憤|競|隙|怒|粘|乃|緒|肩|籍|敏|塗|熙|皆|偵|懸|掘|享|糾|醒|狂|鎖|淀|恨|牲|霸|爬|賞|逆|玩|陵|祝|秒|浙|貌|役|彼|悉|鴨|趨|鳳|晨|畜|輩|秩|卵|署|梯|炎|灘|棋|驅|篩|峽|冒|啥|壽|譯|浸|泉|帽|遲|矽|疆|貸|漏|稿|冠|嫩|脅|芯|牢|叛|蝕|奧|鳴|嶺|羊|憑|串|塘|繪|酵|融|盆|錫|廟|籌|凍|輔|攝|襲|筋|拒|僚|旱|鉀|鳥|漆|沈|眉|疏|添|棒|穗|硝|韓|逼|扭|僑|涼|挺|碗|栽|炒|杯|患|餾|勸|豪|遼|勃|鴻|旦|吏|拜|狗|埋|輥|掩|飲|搬|罵|辭|勾|扣|估|蔣|絨|霧|丈|朵|姆|擬|宇|輯|陝|雕|償|蓄|崇|剪|倡|廳|咬|駛|薯|刷|斥|番|賦|奉|佛|澆|漫|曼|扇|鈣|桃|扶|仔|返|俗|虧|腔|鞋|棱|覆|框|悄|叔|撞|騙|勘|旺|沸|孤|吐|孟|渠|屈|疾|妙|惜|仰|狠|脹|諧|拋|黴|桑|崗|嘛|衰|盜|滲|臟|賴|湧|甜|曹|閱|肌|哩|厲|烴|緯|毅|昨|偽|症|煮|嘆|釘|搭|莖|籠|酷|偷|弓|錐|恆|傑|坑|鼻|翼|綸|敘|獄|逮|罐|絡|棚|抑|膨|蔬|寺|驟|穆|冶|枯|冊|屍|凸|紳|坯|犧|焰|轟|欣|晉|瘦|禦|錠|錦|喪|旬|鍛|壟|搜|撲|邀|亭|酯|邁|舒|脆|酶|閒|憂|酚|頑|羽|漲|卸|仗|陪|闢|懲|杭|姚|肚|捉|飄|漂|昆|欺|吾|郎|烷|汁|呵|飾|蕭|雅|郵|遷|燕|撒|姻|赴|宴|煩|債|帳|斑|鈴|旨|醇|董|餅|雛|姿|拌|傅|腹|妥|揉|賢|拆|歪|葡|胺|丟|浩|徽|昂|墊|擋|覽|貪|慰|繳|汪|慌|馮|諾|姜|誼|兇|劣|誣|耀|昏|躺|盈|騎|喬|溪|叢|盧|抹|悶|諮|刮|駕|纜|悟|摘|鉺|擲|頗|幻|柄|惠|慘|佳|仇|臘|窩|滌|劍|瞧|堡|潑|蔥|罩|霍|撈|胎|蒼|濱|倆|捅|湘|砍|霞|邵|萄|瘋|淮|遂|熊|糞|烘|宿|檔|戈|駁|嫂|裕|徙|箭|捐|腸|撐|曬|辨|殿|蓮|攤|攪|醬|屏|疫|哀|蔡|堵|沫|皺|暢|疊|閣|萊|敲|轄|鉤|痕|壩|巷|餓|禍|丘|玄|溜|曰|邏|彭|嘗|卿|妨|艇|吞|韋|怨|矮|歇'.split('|'); diff --git a/packages/util-crypto/src/mod.ts b/packages/util-crypto/src/mod.ts new file mode 100644 index 0000000..a6dd535 --- /dev/null +++ b/packages/util-crypto/src/mod.ts @@ -0,0 +1,4 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +export * from './index.js'; diff --git a/packages/util-crypto/src/nacl/decrypt.spec.ts b/packages/util-crypto/src/nacl/decrypt.spec.ts new file mode 100644 index 0000000..f8503a9 --- /dev/null +++ b/packages/util-crypto/src/nacl/decrypt.spec.ts @@ -0,0 +1,26 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { naclDecrypt, naclEncrypt } from './index.js'; + +describe('naclDecrypt', (): void => { + it('decrypts a encrypted message', (): void => { + const secret = new Uint8Array(32); + const message = new Uint8Array([1, 2, 3, 4, 5, 4, 3, 2, 1]); + const { encrypted, nonce } = naclEncrypt(message, secret); + + expect( + naclDecrypt(encrypted, nonce, secret) + ).toEqual( + message + ); + }); + + it('returns null on invalid', (): void => { + expect( + naclDecrypt(new Uint8Array(), new Uint8Array(24), new Uint8Array(32)) + ).toEqual(null); + }); +}); diff --git a/packages/util-crypto/src/nacl/decrypt.ts b/packages/util-crypto/src/nacl/decrypt.ts new file mode 100644 index 0000000..76e068c --- /dev/null +++ b/packages/util-crypto/src/nacl/decrypt.ts @@ -0,0 +1,22 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import { naclSecretboxOpen } from './tweetnacl.js'; + +/** + * @name naclDecrypt + * @summary Decrypts a message using the supplied secretKey and nonce + * @description + * Returns an decrypted message, using the `secret` and `nonce`. + * @example + *
+ * + * ```javascript + * import { naclDecrypt } from '@pezkuwi/util-crypto'; + * + * naclDecrypt([...], [...], [...]); // => [...] + * ``` + */ +export function naclDecrypt (encrypted: Uint8Array, nonce: Uint8Array, secret: Uint8Array): Uint8Array | null { + return naclSecretboxOpen(encrypted, nonce, secret); +} diff --git a/packages/util-crypto/src/nacl/encrypt.spec.ts b/packages/util-crypto/src/nacl/encrypt.spec.ts new file mode 100644 index 0000000..6993ad4 --- /dev/null +++ b/packages/util-crypto/src/nacl/encrypt.spec.ts @@ -0,0 +1,20 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { naclEncrypt } from './index.js'; + +describe('naclEncrypt', (): void => { + it('encrypts a message', (): void => { + const secret = new Uint8Array(32); + const message = new Uint8Array([1, 2, 3, 4, 5, 4, 3, 2, 1]); + + expect( + naclEncrypt(message, secret, new Uint8Array(24)) + ).toEqual({ + encrypted: new Uint8Array([94, 21, 20, 69, 68, 221, 140, 245, 200, 67, 77, 188, 129, 85, 227, 141, 199, 60, 184, 251, 251, 129, 205, 46, 234]), + nonce: new Uint8Array(24) + }); + }); +}); diff --git a/packages/util-crypto/src/nacl/encrypt.ts b/packages/util-crypto/src/nacl/encrypt.ts new file mode 100644 index 0000000..f19a5d3 --- /dev/null +++ b/packages/util-crypto/src/nacl/encrypt.ts @@ -0,0 +1,31 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import { randomAsU8a } from '../random/asU8a.js'; +import { naclSecretbox } from './tweetnacl.js'; + +interface Encrypted { + encrypted: Uint8Array; + nonce: Uint8Array; +} + +/** + * @name naclEncrypt + * @summary Encrypts a message using the supplied secretKey and nonce + * @description + * Returns an encrypted message, using the `secretKey` and `nonce`. If the `nonce` was not supplied, a random value is generated. + * @example + *
+ * + * ```javascript + * import { naclEncrypt } from '@pezkuwi/util-crypto'; + * + * naclEncrypt([...], [...]); // => [...] + * ``` + */ +export function naclEncrypt (message: Uint8Array, secret: Uint8Array, nonce: Uint8Array = randomAsU8a(24)): Encrypted { + return { + encrypted: naclSecretbox(message, nonce, secret), + nonce + }; +} diff --git a/packages/util-crypto/src/nacl/index.ts b/packages/util-crypto/src/nacl/index.ts new file mode 100644 index 0000000..7a1a4bc --- /dev/null +++ b/packages/util-crypto/src/nacl/index.ts @@ -0,0 +1,8 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/** + * @summary Implements [NaCl](http://nacl.cr.yp.to/) secret-key authenticated encryption, public-key authenticated encryption + */ +export { naclDecrypt } from './decrypt.js'; +export { naclEncrypt } from './encrypt.js'; diff --git a/packages/util-crypto/src/nacl/tweetnacl-secretbox-data.spec.ts b/packages/util-crypto/src/nacl/tweetnacl-secretbox-data.spec.ts new file mode 100644 index 0000000..1729f48 --- /dev/null +++ b/packages/util-crypto/src/nacl/tweetnacl-secretbox-data.spec.ts @@ -0,0 +1,4629 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +// Imported from https://github.com/dchest/tweetnacl-js/blob/6a9594a35a27f9c723c5f1c107e376d1c65c23b3/test/data/secretbox.random.js// +// +// Changes made: +// - ESM export +// - Auto-lint fixes +// +// Original headers: +// +// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri. +// Public domain. +// +// Implementation derived from TweetNaCl version 20140427. +// See for details: http://tweetnacl.cr.yp.to/ +// +// + +export const TEST_DATA = [ + [ + 'givKPH4F/eDcIEUZcws1+BIWqcnx35Ul4qkA7Ilxj1c=', + 'crkCCNKADjatFscwlBoDjXw62dhwMNMp', + '', + 'ebNFUe0iT6F8tkYMy5Cg2Q==' + ], + [ + 'hHMQ5Z8jKNzdADMt+jxhYF5437On2tZcokdNX4h5nxI=', + 'qem0uDdL2JT2ObMjonw0UUqOfWTMg7le', + '1Q==', + 'VJViVugBhKeaOvfSlHkTzUQ=' + ], + [ + '3J6KRrXpxS9RkfS0eFQbBdlIpWMjonDv4ty0hPZ1/Bg=', + 'cZaDOkcRFR8dB5ixKUER8VUEKV4U/wLu', + 'bVs=', + '8T+ZmMp6dVzECd2jwSyKq4QT' + ], + [ + 'SU2wQeGpWjKno5RsX8RNNShnkzJ/IP3n9FysN4j4JhU=', + 'QQBg0+UtZUUA7C0VPbYY6KDhGegpipkg', + 'FKSC', + '6JbXfPIiT+bCujet8qsLeXdTpQ==' + ], + [ + 'Ruo0n3U5y/i41vnies4Nv4HYz4sxqh6GD+j3P1FgaHk=', + 'S8NeXzOahJBPW5wZi0b3NZtucWn5V99J', + 'eadKtw==', + 'EM3yNjHwPVMTm0/V2duXvXd60ls=' + ], + [ + '5DCX+qYcc43IUf8kNzwupzvYin6sFcMLobVpHhYWbvw=', + 'n61fOs6a1cjz/bPlHT6QI2UA7BtfdcKp', + 'RptcTvE=', + 'lugfPc+cao9V07LoYLyINjz89sOm' + ], + [ + '4FtSKKalKlHB0XW8CvJKXG+1cvEJKDYMLmD3whxyrZU=', + 'Kbd64yEXUKk3MrRivzma/J0dK8ve345y', + 'xPpE0s/O', + 'GdViTGzvIarDCos7TLjgh0y6EaPHww==' + ], + [ + 'nWxnsIPgGcEoOBHUduc1gBt1ml2noEQwI0jF2ZR/EIY=', + '+sDNjHiE9OBm8T+2BdxBBnqwqxbJ44Ia', + 'i5VCqzlnvw==', + 'AzIUeYmf3j8vVS52WtZH6DvhAT8UqPA=' + ], + [ + '7eyRfatcSsqHzfzK4JUFN+RmjVwLdH0m8GH624ndQeg=', + '1t0ub8PjIkCBH/kLDyqDkDkH5Obg9Z8Q', + '4tp8yCr1dXA=', + 'HCWRvOydkTzNYR5+oyuWkZ2ZIWxGCEPj' + ], + [ + 'fOQduIEEVx7+SPsa33RZhuZXna+J3edbNU/EY+jKcts=', + 'pH0ac45hX1u8fN7xT8L9xdLF9nq3IGyw', + '4aknivBxlrpQ', + 'qtdSSkeprYxLDft/tU1IebcGbCa31IHKnA==' + ], + [ + 'HnT2LZo1c2562DMf61NSuuem4HzybDh/Axe14QpRTl0=', + 'm8xSS/ztCDy7QGgBtVntpjZipXXWWg1B', + '8cRZLI1tVJyhiQ==', + 'qG1PcZwfkH38MDHwtj3TmGQzN3KsRPvc9qU=' + ], + [ + 'n4M4FU1cX+IdsL4JMJnlBq3aMyHqaay6MaIldr0G3Vw=', + 'WkJSIXLYwLsS0SDsO8idwVQuT8azkEb4', + '+jG2wKRrIW8p7/Y=', + 'sMwGDjuh4NWQf/08UoJQ7cyIP4377h1wdmeb' + ], + [ + '/y6clY/Hq9fiLs3cpdpJtGM6ZrqC+iwRgApM083cB4g=', + 'wnKspVbogNuPKDyzoCapw+rbMOwz29cB', + 'UnOSto8N43bNerkg', + '9jF6e6Jg8erB+WGThgzxoJdobyBWPdJEa0Gbhg==' + ], + [ + '2EFV7G4ZSvHhMlYrJmT9IaPtKmXXIZgCwteDX1/n7c8=', + '+1aO7bhkmj5dT+Y1AMl6vfe/0G/vUxsn', + 's1jycLdGalf9F1UboQ==', + 'qTSkDwgNJT9n+N8ku14EwPYjkxGS1blT3E6Yeq8=' + ], + [ + 'SdE6lmp2GmrP/tiSO17lDClxun4SwB/Zng1w3pEy9tc=', + 'Zh1CxI9xsxww1cJlsWhRGv1YuHC/NU9P', + 'qU02XQ86ClBMjBJ2JTE=', + 'ACH0FyS+Osmka9VsGWRNMg65y2YwO5jtop4ige1e' + ], + [ + 'mKWcTP/2BTV3nyh8WseWYB6efaOQAq4jgG4Hn95sxgQ=', + 'JYAjTb6zyP532E49Jp1f80/7j3bKI8Ua', + 'amcPmJU+jguzq/ekiv9k', + 'jiHp1hEQXhVh6Cki0rG1dwkEKSvy5z2lNu2P3loFyQ==' + ], + [ + 'y3MQi+Sffuqu5q2AB02O7Oq34MxFr+uSXNBosXvB4Mg=', + 'LkTNlhLCNX6p9fK+L+NCFHd4P2vWJLiw', + 'JgVCXLq0xyM0M1Ppz7fVkA==', + '5eG8r29HpxQOr5A9PM7AOwF3X43Mu0ECRPI2rziCG5E=' + ], + [ + 'sCrgWptNkUcoU2XJDKQeT1M7gLsSVxW+Z+v46nHbEik=', + '4MhQGwxeu+QjiJP4PzHQudpMRDxiwiJj', + 'R1NE6e0vrN1oS5LbuI4Bvto=', + 'GSn0qNxPfTyAHOkNl25ViM8xm0pr1uekERB+UGZZO1Kd' + ], + [ + 'ou2IE41Aif98pxldNegl4T/kk94tvoxWxOpBsIUYpD4=', + 'uFKsxDSqTJmwpvAVpLCb6HstXOdqezms', + 'uJl29cFg5d8rZkLmjvOk/HYE', + '7OHt3XrdIk06LpsahzvXeDBRxd+R1QM+THe0AdcYB2Z4uA==' + ], + [ + 'GxeTqxEgR+RXsq5TJcHgdzMSwyN92mMivLSMck3P/fM=', + 'XAeWkS+lNQgijGappIGUO91c2aUVimJ4', + 'RZvNLAtCJ7jE06OWX0Nb6A4WPA==', + '04On6B1xbNCZ0G8svX9oramiUNuFeeGAJ9x4u9ulzVBRqHQ=' + ], + [ + 'kMiBzcIWPXipfEXas7iLZImctJ7XnMHUGn/muhLcqtE=', + 'Vt9/jNdMgXSVZM3eIcgUKgSBoLW6E+Y4', + '2y4TyVvtQlR2QJOLHarvZ9zrWIM=', + 'gX3USU/QvafztsT51rmoYfHxQMGDBnTWTNKanMixO8f0lhUW' + ], + [ + 'G2tMXAFqCPWhGSy68Nauk0F1KHDjoy8nVw3abQte1XE=', + 'egtK1+25G5jdFxVKGH60tkDwc5xr/zsk', + 'i8X41Ysnf/Xhw60bfiGSrTbG/VPk', + 'rSJIODhkT17XIdW3z3q7gH9SOOg3PudRIUo+OTQI74myIjWiOg==' + ], + [ + 'O2Tw1kL+Utbw2cj9hqt9IwqvaYLypJGV9Aso2QJuvwM=', + '4TBkuWB3Hm9w2iIHvNM/QYXT6ojB731A', + 'NwrmiI0baQT4HwG8jTYMtqkl1gbUpg==', + 'Wu/GRutn9sZhLhSnPW4BLZ1ss7ucyTbgdabpIPLgXvOIlZJdAdI=' + ], + [ + 'VoW/uM+zGkBep93DblwYXbNJuKfMJoWOy6Wc/sbIQbY=', + 'LnjWczzJUuBfiKj6E2WoMu2y4MIdxXMr', + 'g4duXivSgdXO52A1fMgqQ/PjJhwkdvo=', + 'jQQXyJ7OSOKygvMk+BK2clpX0HI/dViIokO+Ss8FQlsi6fxv5aBe' + ], + [ + '4JrdULH4jmOYxAjjB3iBd2JgMJ44GoWmz4aiUxvLp5U=', + 'HzXr2ocNvAnZntHzgdaqFvdskuu82RyX', + 'Whe/VW5tyKiJoPKfIOHlsmQ6oqWtmchD', + '2B69xdsZQKGPl6b9vpIoSTy8BS1vqtK+1GEi35u/HpWutpD4hkTICQ==' + ], + [ + 'qMtutZbjMgSJPEPZvnn+HReRwl3a3sZ7s5MZSA7eMwM=', + 'R8MKBDcbhjLeMG1TZ6tFrSZkEPDYkK6z', + '+Jo4KpwH0YuRALMwUUjLH5g5IQygPPFMDw==', + 'VS6bGQ4JB7LzFpGUFBallx8ehXAJMu4Fc4Mod9J3MlSvgRjAciBoQpo=' + ], + [ + 'Fv2Um8x7N14cItTBAih1ImMnoMsFWQGxlBr5W7N4SqI=', + 'HZgjO5ndWyY8bEqM4nLLesyPB/86QYFq', + 'uT5+hNkM0q6UNSrMshtYUHOyPj98vtk1vcw=', + 'Blmz3iabQoIx1qpUewt8aN/hT+dnVGdPvsiwGHOtWCP6jtlpubnr2Iys' + ], + [ + 'AFeuqMDtTsZeo9NzQYLBmP0rgJTj1TxUK9LTMI0+Vrg=', + 'fKHAKUCSj1QlqL1WjJUn9AnMhUfOnPep', + 'd3c+nYr7XTz86W3OBIIK2e0A5fbt6j9wqT25', + 'pT6eZZL8XEf/HFLBUioPwZ3+Mhv2ovjnVXyqFceUh7kJNqNFfIRZIF8KMg==' + ], + [ + 'BqsqYrYqbD+tEkHnTpC4WhFtwIsJTfkwj+5Ef3erESE=', + 'LbDH9i/ikGJdBmRAAz0O6nLgeHrjkk+A', + 'dOo5/bDEV2SdJAJwfZxVx+wsbBUY3MzZ81s2gA==', + 'zSLi5rHoQzvvDzguIL1bmyyYwmGbpT9EaWhlWbrAard+yFyMLEYiVPDNe4M=' + ], + [ + '7vOBVBbosheXP6tys4MaY31VUvip4FepcDHiju+I98I=', + 'LyiG0+xhiVZMYLQMiCKMhEOFBgSH6rPg', + 'bJR71MkF7q0rtxQh75J4AcpqM/uL9Hv2dzZuIe4=', + 'swPBl9wtoASBm1WjBldCOgXO2V5fTP3vKxEn3F17fXPg8An2xZ4+863YOee1' + ], + [ + 'PrfycLbt4mEiNix/+qAa/EnLaerInZkFOPhOvkpfN1s=', + 'r9pmYy7Y9V/7SAH5BP6ydu+vRrIGcJK4', + '+V8KOYfE+IQ7szxZrL6tP+BMJ83irK4eq1PuCUYI', + 'qrfwvcQENpckj2LGTK7r26sUNJoibwolA7jQ1SoNUUJ4S3E9LMSXvP1ONOCl5w==' + ], + [ + 'ejVfGsp2SPzR4KbQS3XBOJeXwImd9M7aillzaVdZBz8=', + '6QFn6O6SAibeP/G5I1IcDgLUHCwKC58u', + 'rc9nw3M89RI4m9JGL1iA9Sd4qMz/eEXf8HgzfrU1jA==', + 'FZFY7XmIVXXMK4m26rJXfo16dVhbwxF2dQJvWUGqwoWev5Hm7yCDzu6ysAo02ig=' + ], + [ + 'FRWJ1g4afBW60SnXlO6ys7fyB0QlGhSRKBisT+XdeZw=', + '9qf9QUeovCfDOC9J2VNEDcWo+gAoPhqU', + 'O5GJce3/WcRAhjjyfb1vheGRIWHof5pjPCDvzwyHC6o=', + 'ZtM128IsF2vUC0u7TJV8Mo9oYUrGqjFzFh5o0ye6dJIQDe41+jxX08lFqnO4Gyi5' + ], + [ + 'NzNRFlQ90YmvQIKKG3DloBDTAQlu19JUZz3XakVmfgA=', + 'YAUGfWJB0S/FbsN9QWuIIsNFIE38W17N', + 'zvP5lRVQjtId9D4QcIr2aXRBsLBZRHRbKeX6FygC0UaC', + 'YFWbE6nuFHI/Qk5r77i1DKuQXL8gy837H9YyjpBeEeCwUbHAEjGPe/QMBZDm/Z1wGQ==' + ], + [ + '/UXPd1KJLZsTIZdrJB/JRzfANCacxoN0F1Ct1UG1yr8=', + '48ddUScyfgqDfHmRsIAXnkhbl9Jeq5WQ', + 'DzhVF0E2UjpdEdemsJWaXCeDl1dnUisismry5aiPVVnWHQ==', + 'LDqfbZBNrf3rllP5xrXp6slrE5uOU16syoLlT7LE55i7VVg7BvF+k5cYwUqBJYmhgV4=' + ], + [ + '4Vu26hsje4pEM2i9ucGjU5/kOQcPI9Lu5B1l2OLamkw=', + 'bvzdWkXM3AMksQguSyvkbBDZlHweiyZK', + 'UJ2D9nkQNLQl9/OnDynKVFIk/p1dOSzQE1i1Tv1htAgJvu8=', + 'BOh3ag1XCRgREunSKa5eVakiisRA4ZbglFw+KZlslRj1iLWV+buDcZPcLdHYQivE7YSr' + ], + [ + '5Hhv8b27iGZvcQNAUAvXpeQE0PiJdkbMdWu+Kce3KCk=', + 'n6KmHNLKIylV3vg6z7WtSrIRTfy73q6n', + 'yFXmTdOcL83u8r5xyXVsqJ+ZqvpmE7qWAVGawAxP1eP0v2GP', + 'kb1mKaQuAlUOPjbHYcWsiaWu0+MZAIucOZJvcX0B4+EPURCM3393rSwHX90lDL8w0yv/Ww==' + ], + [ + 'Rh9WnYU1VTtBYKKYeypeIIY+9ejOz+yjm0jR3I8TTkk=', + 'z3zeznh5pzlGNbUQcKCvH+Mks4FRGGkP', + 'wjDIQRR+t004sjv0ooF5fegtvAS5CMs6/PrFiX/ABiZX0XZvWw==', + '621AzsDN3YQAtcWN6YMJ1MyJFoYNVZ69oRqa+83u/1UfCMnlCJEH5BhkMPsJdBMNjVIbgDM=' + ], + [ + 'l7V/sSG0J3NsmuJzaekIVJE4XU0PNgA+CC0L0Kx2/k0=', + '+3bQaA0F9/XFtqRbAgjGsCksCrrKp6KB', + 'mXbh5k9vomwuV1D/D+1HEtQLuYgcj9F0eELqgDvYQD3CIHDZ2ng=', + 'dD6ppxSXxpLE/l2nqaXZxO3b3HAhF7RIq0c51oHng5jvSHh7TuF6Ly7djikC96LjG1ahUqNZ' + ], + [ + 'HN6/9dejd8E7YmnRMUELQ8NDV9bzWKKX+jXMffWl/rA=', + 'nY84UZs/iA0W8LaAjde1HPb6g/JW+fhW', + 'eIRLoefZowYjJ9+8H+w+K7UpkW+udoxYQoc/Sclqx9yKDtahAWGh', + 'QuO4VLCIwlszCQQ3X2DbjLU2gYegjegBHKtvu8N/U5DXmRMzeYJ5o6Zg2kFGwzaYxc0HxwEIcg==' + ], + [ + 'Vd8SFl5a3rICVcC5LvY0oyDDgAuF2HZrWhEG/xlYDxw=', + '0RLLvotVn6kJb0VJiyiYi4WRelM73tdV', + 'UATtU1jfXmmoFbm5Ay0qrbyx4FH2gf/bjzbN54sdJC7Qhlfw1mjhuA==', + 'aGfqtMEMTIqT3Gu0tmyG4hbecqf6/Frsj+8R1maYZHaiK7XipPp/TZ+NTJ+XcVZ8GZiXRfR1tJc=' + ], + [ + '8sY4nsThhDv2dH82dID1T3m9f/ishbWVief8A/HNRqw=', + 'AA2tgLBs3hwywZVSnHnK4j/ktahcxPsj', + 'ie4vO4NTMMo3iQ38+whN5xH5OL523jLPvf5kqftuFuBcmB0+bWrJ5hY=', + 'VElzKHTEtQMJoBRIKObOB89UPub4HHDct9cjkGIU3Nh9r6zxhHz+A7xseBbfUrDr2C1hRSqX3D3P' + ], + [ + 'dNJ+xaS8DH180JGab6SXmD/zrDcZVxB16ZR80uQHodA=', + 'pQcqvCVWxComHs8EQO3H8jX9SSJfRPiI', + 'i5gRunYQSRy5BTq2pG9yGfEUYUp1KDiZyLHerig8GM9dWavb79i3djjh', + 'h5a282Y0dxwB2V0pbh+5+P2GW2zPr++6s3StG3wagPZsT1VuCGQJqD0PobU9/H0fpJ6/cRxbWTuvsw==' + ], + [ + 'OVbwQWoYnN6Ol7/lP69ZpD8fnBScBBfdPyvOrdwMfFA=', + 'nE7WDd59Vx6dglG3NeKYa0Z8nyibZfeG', + 'BMJe5hnohmedJs3ffRL1A08cEps2p3T4tmoeOTpqWms2Y0erOtGWpnUulg==', + 'qdCC5tBDCJhkka0m81r/2u7ZHlI+JR63GDxAz6zseHQwhrXOBlr2yW9+1JluWrkXASNjGVsQrxSXfaU=' + ], + [ + '8vWy4JkmFOvDjlQ8nq398Zjicv9iY9YumF6WNZKxeQY=', + '5NVKpa8QGWnvEUNqu711bNHkZQynFmnE', + 'tY0D0xNdsGeXj8H+MsqCa/+RXCpMyQu+8TdmhQUPemyIjNYjYmpfBcaglpo=', + 'vEOSKs0dV/YrXJIzNEr0aAJ1rBwQUlqQIMMWb0xtAMUpIiotbMl3RRN3tB4jVpgmtYsvzZ/1+O2Ug/fs' + ], + [ + 'cTb7Y4H1QguTdj/aATKr6Tm8iHOu4VcGCr/FLf0APAQ=', + 'MtyA6FKnNaagKKy2vuT+2Xz5RAqYM0VF', + '0+e8+ZZLk/K/WvlQNKRDzMeu/0mW+rSlIfeXHrR0PkgPFfbk9iydgvEEwUD3', + 'fnsMAVymMIKP0PqHu19q3VBHWRFGHNnOgAosz6uWaAOFBZaHaK+/rjR52k7gF7KTHeASbazEk8CINvXwGw==' + ], + [ + '+G62S1Y3GsynXTXoTevNCmCQuuqRkNJokumLUEK9s8k=', + '3qzyToucVBSh0zPuutJeHjUqEvu2WKuM', + 'Kib+xijuC/dg4PUKJCyY/hi5LtlGkh1ej20NEOuR5m5cteCmwAf2Lw2F7gmJcA==', + 'YhxIyAgvKIRV1hAkK7Tq1dJvqSAsI+Q9fV137bSjdPOKcghSxkIubzSX48RPUDQyM8/U+5MTha0EWKLuc20=' + ], + [ + 'Rnb0L7Chu95KJwwwClcvzh793mEuBzwgNrh7UnOU1Yo=', + 'CxJc14y6r/VHOrDT0xhpHY5lotirJpPd', + 'GwvlxXVqmddIEEPeS6DOoufx62rvKjT0/byZOLUs29uAEcCwazi2vq89NAIp4eE=', + '3XbTVleVpV1p1o7hmQv44oZmE6rIzDTuxpO579gQP5CxfNTqirtfxQspf8ZiTdh/58xICALnIaQzozTrJPbl' + ], + [ + 'Yxe2xUGQ9bxqDvlCPUOGrnNakqNZ6UqW434NGcIEKJo=', + 'gAtcA2ZqptP4EHa0XIilRc5/oY8zktZz', + '8WyJJQUhya7DoSmpX4p01GOftJQTIkZ+nnZL3xF12ikHb7c3tTf7xndWdSvr1Liq', + 'dnE12A1wTUHKFk8Na+rprsF3JrhkWFn6xR6NntfB0mkdnvqi/PbdcMR9wkR2c4G7fgRrdQSkRbHwLIhlH2YD6g==' + ], + [ + '4aQGD1fz793vrePP5CiJkoRiM4K26JEsk2a58jH8v4Y=', + 'Bch6GwtHZUUZEN0QkBj2/tIRd2Nm5Gs1', + 'WSTGwHWXKzt5lVepivMSZPPLdqsoRfHe5LcdA/qL6SzJ753lIJCiw7w1GQ6TlvUMQA==', + '2i+/7GRDiMcACV6EDoHd6uAbVtYzMnhkM7wXx09qlFTQGbdqTnI2ymO+cgbigsgBLvz6X7Xwv5TwvP8dqtNI+1w=' + ], + [ + 'inz2eAOa/KQsQsh0ciUefCkErv0LGhWjsEDhDvEZhDk=', + 'ti+v+q87y58YORxoGBI+qlvggsJ+dFfk', + 'ZM3Je3exOjoHT4wTMa8oFgZnJPhVOcDJqXtRSRhQRag6bD3y9dMeKVfAt1GLP0Z7OGI=', + 'tBfd67V5zs5Do2Uz3bAUw4reSOdX0NID5Z8adOdTeu9BLZrkL4MlS7LRTjbRKcWQWkQD4E6U3xqYomMCOQk3rc1m' + ], + [ + 'ILZguCzpkF5x0AAP2nzIdF+ssJsFRmm33pvwOoWG20k=', + 'yGBI0hhc4GeXVeD5Mxvwool/+O87/db2', + 'FNL8xE8e+y+OkT74pf9ECXtw5WCRLS6BGwTdRgc3ZA/t6yGd32UDflpxuzO4CTRBsoWR', + 'BAPmV7jM0VO1nnAX4Vg99ZCVSIuyDojdZIfEaMEuuYCqxyF2RbeFwTlCsB+fSJ5E0sh70QXeGrRITzreffnAoP4gtQ==' + ], + [ + 'rkLVyfHcz7oDXm5hdCf7vGIiPX7W02Ez9hWdV1Tl4Vc=', + 'SSGintmlPXjcqjaapF4X9zoUEl6oA0z2', + 'zdchA8q8eLHI6FP8R7GADp5jQvtBtxqTa3+0eAiDPbLz9QPDFhN1KcBzLftXf3/ed85A0w==', + 'QUIth6NM+ovUqiG25rubSJ23pq5CQ/uePK0L258wYyWpjh5dazHjmu/bsTgownZs+fGffbC4GlizHFW4M5so8T0BINA=' + ], + [ + 'YC5bexLPao/hfDr2uP+7SzqpLsnW/wrJUtJF9yr9K/8=', + 'J1mFS5580SGVeDGxA4ijYhP6VtIwKmSh', + 'olSYyBgiO34qvTJPGfWwjel7zM6FoxgsI7gdojGymJQ8phInNiwsm/oBelLQawkSTQELByM=', + 'RXSEOOEhwV8GXA2sUddQP3h//QMfchJHY2TOhc+5EXXNko8LGFigY57q0wTxoyor2MSuvcgF9tJVvTfYiJ5YsWSdZSz0' + ], + [ + 'QglXU3Mle0/7bAS33WBUE0xUSuwxRSZL2HevyeOFiB0=', + '381cQrK9eA38bASTaa/Y64ny5cSkwNcM', + 'aCeX0Iix2DFTNumulGEWaiz7p8wohHiVb/CM3S+yumw+UvhtIWsDUWT9HWHsJWCbNTpBTQqZ', + 'GUiRkbe7m+fwnuKKe0eTJmzV2BwzdwYYXAdPs/DWuIRdMQ05dh7QewLXWXOB/i7zUOr7PgiccS3j59/be4cn3HfVKqGJww==' + ], + [ + 'roN2scJYAUsjd9WdTGO4v+M8IbD+NtYEdOrG9r+sy+Q=', + 'cD4NDsaf285HVWgNSPlwfekL1DR8wdaZ', + 'yxiIsWf/QdCdOPs/Yvs4YPRtjBY0o7G9PyuZ8RL+cUgx9OzUOs3Iepu3DTtoS+6JPNeRAfeEiQ==', + '5fQCCcL+E3TkSnN39jy5QKZOMNgYFTpYNay0GwBO2RgYuXY6+ZcUULXtJqVcSMYyVfsGkXUqkwkTDoMq5liVV8NxaMHQnkk=' + ], + [ + '4hDamMhrqB58UCRLhz0o69QoDQrpmBcA8Q0AOdop5uI=', + '/nWF+TB1fu6E19rPiOb8t72Bgel3773Y', + 'hmH1raqt7bJVA1gV4TferfLVwoyFRzGgcv1tQ+85JODjUHdU3PStK3ShfS0pw4/dCndbL3/MaT8=', + '41pVbO1A5IZEgV4o6UBxcf4Dki5cLNmREvJr+mBcIwYU4LNe5FE+nzUUe/7FgaecmjEqtjz1WGinH5vrQK9ScQ6CZByyFO5C' + ], + [ + 'v000hbVGuQ4H54Dh67zp9arU0A4JR2jGMQ/SSIIsU9s=', + 'LLb0knOZFR3eY7OQZ8Ly9uWSOdLEKpOH', + 'ZYc4hxvL7wncUMMtJEBs6m4pLzTvoBrs15F19niC8FdsIxVUcwQVz20gFIA5ioe2jvHEmcvKxXrz', + '0bb5Z/jJmsZtvxZ8rXJR/qcYxpYC5V33axFzMpEDY/J7iyhRgqTgVhY8wpM5Al3NeuT2sKpUCjgUnucYcAea8FIXXOZwNv0rWA==' + ], + [ + 'shQp4n4BlL3RD+YRBiOwqcRls/pIOV6AiyTFFZPasKU=', + 'CVW/j9HcmZw80WiVF1ucKTpnmlxpWpdQ', + '3ZqtzubEEySZDEIR8+rUHxkPgTuwn3NuJtkJUBbiTcFdsjNqyCVrt8PCvpkIXXSlDAyblo+iz10jZw==', + 'kRBJISH/QMzBioU96SgxJybXr+0SZSrt5aaGgyXFrgRJn1ZYbyQ6Vqixh9ZbAjF1hdQaG8T/OluF3At05YjfpinYCAhTHjpc2Ac=' + ], + [ + 'aHJJeVV0CIwwtk1JPgduh4DEVuw9RjPpaygpIZL7bFo=', + '9GDl/insORrh2jTBkM9sleweGfmujn65', + '7K6kHyBiphDXlpT+J7j8oOplF74F5ZHaIVsTM6wXIptPVw3VwBDH+NSrXfu4zHh2AWsW5xhiV6HrZkc=', + 'PDR9TlVVncUZS2oSK4xl9zqD+kPKsGbOcjMpibJ2r91E7I5xPQm9O0u756LmW0DN2gqYiffmO2KJOj4DiAJPz2De5izsP8qHj9tq' + ], + [ + 'dm37InfOyvYNSfA6XCt4IswqvbZKCKjN1z9F2sX5ZyY=', + '6qfkTkYtBQ5Xe02cGGAzlIhWtbFDoj6N', + 'vA8YDpFzEAI0bMMvI/oBSC0GIkBPNQurYZoTsTZYuOKmd3pRYHjyKVrMisXSpfm9X+6q6+/DhLH/CjNX', + 'KF9xsXSXXnvLvs26egfXvWzU5c7ZAAyjxayBpHUp4M5OGyZMpNJoQmLWPutt1rGWwP3aCFKBniBYZU3iSvYURJclw1gOsrxAqxy3xw==' + ], + [ + 'aAQS4nEU13PCSAuzZBk12sHenJIc8jHOeJzgxSJ3lZw=', + 'sWF1N/jtTpjpOChXvGsvIcBsgRrpeoEc', + 'A+0/p2lVeBRlBldDguzlEZVC+BWoc6+3u9c/hGGYITZIBCBba3Hck6WCw9Sn2LhvmbD3YkOX4I8om3ILLg==', + '30WQxNFF/GEtD6oWtzp11Wqxl8RPf8r27MMkhqbxQI6HLV6l+H8Ki/J8PC2/MZsBI7vrjFyjOlS2JXwipTO+PDnnWnaRgaNJSOkvzJA=' + ], + [ + 'nvH1+0NzzD1OCKjacwI3XPAWUZZXyWW7iI6cLFzYbYE=', + '8lN1TwVhh1YRXnWKyM4rMxLEAACx1C7K', + 'LzbYMIjCg+Q0R8QshbahxUpcVEe7O6/zJ2/ggkhSMawlAfbDzu8sjaQZL+KfZUNuH6zkscvbKhMOhatQM/k=', + 'XARHSmnAbt1EDiLdwOa62evyPtzEPs4rA6pH6XmGhea9x+YIDS7CDphOnmnl4rhXPwy/cZUyppLhdhCkILnbKYO/XWT+y39RVjVGZfXM' + ], + [ + 'M6c1/S369Nf60+bvDd2t5yydiqgU9vmEnCOIyTq97+c=', + '8sU7vQiS8GvavuHaKX/STwW4ixSFnHUU', + 'VoE9BjJl1uNEEoyxRpG0KnpYSEAp0DH44csObI92CYcC2Rakd/je8qk+WgR9TZG9JegRFLiufQrKFuEh093D', + 'HImK0B3uRGBvxxxic3ndYPP5/vCznDb29dIYvA9YM7v9hf3Y2/hoD5LLcvopuKS3FIxe05NBw0YHX3lRRWsgf5vAOKPtnQSkl9N/Y/GUyg==' + ], + [ + 'kwECmyCqlutK+hzcFUBRJToH52S+RMqORuyLmNREf3g=', + 'bwu52x2tvb0peQdrOAnfcOq+9h0IMDeI', + 'gyT/CDos1mHR3tGBL0k0zwob/BlvLedRkaaa2aNKaHO2wZIy64bRwG9awAKRWYXgoJjG97kfTb+B0WAzgSVDBA==', + 'I+cJSdng2bKLIysdyJAY+TsENbKtJGGIopM4977m5x4QP5sv3T4LtD2dgvPTlzkF7aHItT8IiA5j68Heh0+3ISuPCy2CAtSzps143Se+P+U=' + ], + [ + '6/4X0qoQ2MRwHGe0XFjxClu5zyYtc+HuErl67YvQapM=', + 'zDXSd/bS88MwdvC6+9qlx+SxV/J+Q8x2', + 'N1L2Meku9M76Fst9q103nDizRhyvF7syMu4ic3USCpjLOare00rVFUH/cVGmNJHFOCS/7n32f/k4VzcpUN+HelY=', + 'D34qVypr3hch+iGhj4uwp+9Z17p03RAN1OqiaJkhVADPmI8xhLp2nUtx5aVesY0IvxIdEF7tGVbcOCpCkUcK4eI68m5FgDmYwLF40XCXXa9O' + ], + [ + '16/nWsZspSl4HrxzWgVjktxA91qByleTFXDLjMuCHts=', + 'qympFefbHJMd217RjH8nPOAVyc4D0/c7', + 'u83wzGAndlWz+bdA5jowE5xDXWVN6x6fpsruxRjn++WFsWklXLB4V1CMb0C4Wug7ZloDx2bR7uogsD3PnUFLwAe2', + 'jHSR/MVc+elcTuV1GWXWZidAeNxIpaPHvGr7c+BIhKXqCAQ+4RrP2+bYBx5P/2jnUzyp0mg8Gidbleh50QVtpTAqjNDuBVpKhWFUDDD8SZoj8Q==' + ], + [ + 'DSxftS2nJ0LqtKztIIizPXfhgK5kchDoNbHzFwBpJe4=', + 'J3rOsgDrw94X+CQOBv30vXf7wXljfzz7', + '9k0tocVEYH2uL10JBAtSKVj2zrZXYJ2A7qKIQIB0RjWSlO6DSPBH/ytchU/Ki5QuYw8zkvLUgQULdm674eqB52o40A==', + 'IlL6Ak/BdEBLUzGzK9CTuLefpM8j1bAEml8RQKfkusNv/s/EB3zyjpa68PrY2Y07XSx9SEVLskmRkwk8Xk6s5KaChIf8HFFKoG/42udlP7PGH+c=' + ], + [ + 'e5MFS67QZrOaQu3ueJOsKlIUxSKwIOPBcZOMcLqA4R0=', + 'Pj1n0fFZbr9+pfHun8DCn9ePKe25/Ois', + '3BgDVhmWNSKyLQmqkWfjp8pVtwdlUyujHZEhR/l4G5pu/ljhqL5SzG+1LmHuiTBBPDRvyeStBwG7u07ax0WEQG8Q3L0=', + 'StLccaBldsTqzQZnI6WiupFgnMfF0+vhlvtwOSNvBGsGOERBi4BQ06T77kezYcNDaeO2CCMKigK3/gpbpCfnLvEZJGqfBj8duuLFRfVMYzP6B97c' + ], + [ + '59ztGpvRtxcqUc5FULzR8TXjkg97CpqiVDRnsjtrKHM=', + '9BBNqKuhnaK5kjZ1A0NWLp+GQ8KjwCbB', + 'qPBEWVupau4Bl59uBb6+bHMScPbxv2+YNIDyLVNZatr33IGdP1TP3BgBWL7QzW35YwuuRUbibWstkjhtOipeNe10NBzR', + 'iWHANYon5x2bsC3lC+xw1g41RXeizl5XRuRuzzQfUjhvGcDqxmRgxOhS1G+nHnP9t8f3Sf/WpjQqVQesbDgpnHZqDDUUjhcFZtx47aaVSxsMFmwk7g==' + ], + [ + 'Uw3QMZTuAUm4ZS7JgIFfy5MinMD071ibMlfq4UUCm8s=', + 'BBp5CyrT2c1Udup5ufonIgk9QY5f0osq', + '22gqR0eIvain/3H6SHZHaOCIseTGVZgC4uITTgJimd9/Y09yqm6du06lTE+TFBvT0UPGGWYJjft8uxALx5Gg52Wiqk8XVA==', + 'MXzYELW0t8UB1hS5dPx2Z4uxwYGr+iZXRTJ0MIntSp4Cv8+40dT6c6tTeMxJO4d3GTKVHQLQjyKp2Uqhd3HQKNFa1zW/vijBw5Ezn9Cdrho50lr2BIo=' + ], + [ + '7vhC0ujNm45luf13/JJ2XZoV0nCD2atTllLKmiux+FQ=', + 'RVxXMGQYCnZKFJefcULhGHmLgmDy4UhO', + 'SR5ywxscnmS+P2YtlMDLFMhMrpVzWZuQiWCcSCzSrfH9RpCAeNGtR1yauK895ZBYEPI/mGl9z/ILlXt3ehU1fBhvIzIBCpc=', + 'QpGvQmMDBmaPdAwafuptQR2niCOn4nvTCVWo7SbxURVlCK9y2H7UaiHfMKl+pXUw7M0kajc34v8Henb1SaNoK3IuO1wQuiL9GD1aUwP4T4/cZ7Zu5kOQ' + ], + [ + 'k1E86phcTKgJbZ3X72XUAwPW9lAHBNplsilETHqFLys=', + 'uE+HcAXFmiwK0tkchBy8MOg+fh4oD4RD', + 'Zm3jl7PYlwqmWceSYRwkBl05lsDOGNZWoJajAizaXegdnwmRnsTP2LhdABK3CjKeiTb9t6FuOW4sIblK5HyFvLWK02TqERa3', + 'ZNs8nc655bvfZP2qeOGW1qxI4seuGpHJiQUG5ymsBgpkD1Xzvg40oex9CpVraG3TF3s+Hq0yN7YdinBI5vIKk4/xNq9A7+4CKLCPw7QpXAzAAPLguJo30Q==' + ], + [ + '1tpRO8HlC59h3Ygnc1ZzThHHZ8k0rTq4T96sA57QH0A=', + '+MXTpOxKhJq+wQeSR810KlR5J/2pEb/t', + 'H4hD+8puBBBdmyiVgJKbxLoa7MQ2kmuqmliYEL5fI6FN0R2ICFnAcHf9iyODnvArZ6qoLmyfqgZNyJw0K/suHV4bbB40Sy+Wcw==', + 'D4IvxY+enRyUpX+3aJGDa629Tebg2M/GxeSJYdiPqPg5cSo79kEX2K30l8fdb70//GTCHksx/mw+k5AMtssJVes8TYyn63qcLCnOBsz1kRl8MY83m/fOJJ4=' + ], + [ + 'K+EksVhwGBkt8i3DvqpUUPQ39HOJmgjS3AAVQf6yGts=', + 'im9mxfcxZGgAszF4GWtWeZLXKOdE56YY', + 'qnwFAna+K9Z6F74qKvO5/Y9ePVQyH/8ANXpx4MKJWkt1ySacJirsJEcEERADLyIhF3gVJMIFEOy8GEYuoKeJZshLg87E4/lFkHA=', + 'KxqiBmCg7RWOsAkBKlUJw083RGyDoBEXJuHaqq0gX9oL9b6OnMrmV/iNiBQQz9RbHMPKjM9kUw6I9kg3dNLZGPGC7ruvoe9W1dccw1/THAf7LiJVm2dRTJ1X' + ], + [ + 'fwcu841T1fvH/AApesCzH0Vpkk1TmCwbp8lxQStVDaI=', + 'ZmezhvCb6AM2ChlSuQYD8FK/7y6mCns5', + 'osglk6shYchLBmT4lsltUEQ767rAFijKokM40paWdDxlB/NeD/jhwPwXeE9aONkngFRxsnKrzzAxPBIs9UKGi+B2JLHKGVmET8rv', + 'gOUjxac52m2irIaP6kxxb34ECDCl8Qz+gN3rNKzYWNPXmbJkRMyADhXNkiR6AIoE390MHfTFwjw39jpq9DGCjZRyd/jHoLYXOBW3nyO6im2oQgHlBvekxNj+Pw==' + ], + [ + 'Tt5zvSZHaACiI/0ZjsnWTkOBlQaRdyiEJ7qBD7AVEaI=', + 'k/iyli6ZLXaOmCOONSdroTR0uK0M53P1', + 'nlCMHEH+JcQ5tUQ8h8iKRvlm4SBT8iIj4krDjfYHoRnu5LhoZCwBb+Z4T8lxOkA2AY7eBk3ed/CM+Xj0JAfpgzjDH5v3JoNvSi6EhA==', + 'D/JYb/ACSPMNF30J04eUnR36p7C4MZ/nCqoDbFgMRe5qjuKKBhBIgeEaERIXm3Q/ZcAUB9VwIeRNenQN0xWGnKTTxh72CohK5oAh9JNuWf50wtWQTft+9unVlEU=' + ], + [ + 'QiCVSk5rVf4V5xilPWSputDtxyCYkkvqoa0+6sQKuV8=', + 'iTC8csNBD1xJ1Y0I+60Avs8RX8Sr1jMt', + '3CvX8drXPmywhCoeCWanBEJR6SI9fVq0K6q2TITOhR1L5a+JwZ33aHiNrpgHJ/VJzgnunVDaLd736ArIVjLjn3mJ2PUGFjjSrwv7CRI=', + 'qhu4sHSHqHN0w89g/zV19MJy1JIhmWWdsoD0ybuLAvF7gYt6If4XAaBuuMgtG3wzxjdayQ92jfevShKuOUoILak2TxX38PzzxwXrKwMG1zZEj+rUxGLpE6VkGSaG' + ], + [ + 'ecaCr5041dIbI56xGvT62gNtqYUhHmtSpkieX7QM+4w=', + '71YOQ08u0pDeZJnZ3ijjuuVGAAcHeRJ7', + 'lnTxy4UFBsNxnjCta4fFztrTIJvRtFLUo+Y9CrcgjeKSv6kdMLfVNXp/bUfrc2AAQhX26uMNmaa2/Fs6oWShGSbFiL811tJjGUBiVHW9', + 'Ai4/fCUq2t7TR+pRds+pjB6GGP4oIBSh27y4asAWtmZ0i00Tphe9dSuw0kgEmC1gtI8sRGPw+OIt4msV3ht9k1vfeHIE6yjhX/N3hAmysYU26fajm6Yc2IKAcS4FPA==' + ], + [ + 'Cz3gYBkCQNCAis22Dr6LXriA5zm59vZ4+pWg1bUJdn0=', + '/1Ntc9AF8FKP+twg0FpEhcgtZG+oubeV', + 'QAVAv+FicxV5xDvykgRa5ZaWO5oJuyJdQhlAOY20+j+WAKdFkrC2wCQZtjhjKkF8hJPvBFrd3ZulNUWsoZuOBAUaa4zrEDYcx6TILwaWtA==', + 'n6NtYX9UuEJp2vQTgSn3LQA2JgocAB9j+gV+V6jVBozawZGeJGQAR3sipF4vhnJGhLwSMGKGlZXH/sgcjahSoy4aptnRS/I2/3ePzyJfs2XhWPMzuo+T43ly1KkDnkI=' + ], + [ + '+Vofu+VDhUFjWLre8ISrm1qNlWYY8Xapzob7pSzigCk=', + 'zgIwZCT226qUZY7n9baoXpDgir2A3AXC', + 'kjsUe/zqbSkDTJ+inqLauHFNtozApM+FsiAo9fLyoEXzjE59OS31KngxDqxmbTNOTlgKM77x9102Imhe8yj1mQEbP8JMiN+cdvHNiOdGDLw=', + 'FbADIL/0qXSVC8aTlRYfqjvT8ChYfvchLb8wWiqQdPXOeLFrYkTACwOv9bCFsxYCFhMcEh4i93ZpRNvFG9x1Jvtw8H6CvQCo26mZ0q3YU2OqxIZr90feQ98Zy2i1Q6NK' + ], + [ + 'o3cPZ+pwDPJWjsf+GXPqvvj3qYFLgYCIHy3y8I9iEZE=', + 'd9Pr2TYMj8tyO7nE1o+4YWKwGEF8TCVk', + 'ziz10hzKkwVomeroiBQvgpKMzvbjvEOJPq6DydLyGVciRXYVBtuVPklIYweoJljeU5f9gCt6beY/H77W2f+KX6Z6DxCD7ZiresbSjI6UuTj7', + 'DKwHFH/5pVNGZLJ9+J/fnyrVnYRSV0DzNmDk9BYtVaDTydT3ySvTmNRgMNotvZ/Ezi9/+qSRrcniBRr6/kYPWRdCGc7PGJ6pDCbtLVrSdU4KeEJXYGkPqHhizOq45jXjHw==' + ], + [ + '3z5jVTxls/6qcAwAtKUSPkSARDAlvJ6ipGbPJect06Q=', + 'vwBMIyguT1qwLD04yQRYBZQgL3DhIimu', + 'JnFHqYVnsiouoHt92k4hMBipnA1XPJJEPdcjPh05M5EY/Y9MIvXPkOkClwLnu+VsqRetFZ8L1GVSADIFZqPn4on1EpVfF5zDFWH2b2OC82KEog==', + 'YhdTQJBv8iToFqGp5GurRHlac54vTbdM7A1v44xE1Tcm7ZiFo1Ot/1vNNgG8lsm2TM8yi8PUdaoPV+v40KSoPJPbaPj6/pv3TRwUK6Dnr9jpwwG7US7tvNs3HV62dyiEA2E=' + ], + [ + 'fKDopzrZTMzsukj8qFEpscCPuLU6UvidtS6RmX0L1eM=', + '2CelzKkD7J4psveXlO2CXmKxmeraVWxJ', + '2bn9a4BgQTREHeiEnw4bckZGvdqUE9qnqlYaB7gB+Ss+6pgWm0oZ9RqoxD2e+fLt388A270y5yUIOZ4KKOKI3MNZbhAcPv0e/5f3BCuA3x4R3eQ=', + 'X4GV+50p/yQJc3sD/ouwerD0SPjuoZw2LXaDLXC0p0a56GBd+pxLwI0T2v0Kn6c2QN89qIYOzRewboQ7sZdH1c2u5GcU52nQMz6THXIWvBBCQiqqzDO9tCVcGuP5i+x+sCxY' + ], + [ + 'JlmakQ3dIv3C7h8f5rwrOz4087YPIosdGp4pEXXG0/o=', + 'C+CzShif2e8dkHwRGR2obMY9jmknV74O', + 'R0TeEIpI/xBqN5XcnWuG+yfsGTwdP9eTLVpZ0GWz9OI8e41bMdVbff5uAWL5teF6YlFGl9K2WXR35xTL64mALOeVuNcvFrznxilRyQDEAsyIE75x', + 'nKzpX939t0UbLQRm1AVKImbboXgwYrkRlm82zjLjb+2V9pQZiZIhN0BlSxlXmNgWgGUQPBbZIvgvD0yxBNmoaie2Y88Og+Z1j64ZyYSB2jnErdJi1GHCKfRP3QrGHvRWJyRPfg==' + ], + [ + 'A+M0DJ9CAwzJbJRzaPfLwlYolomlGGto6IR3iPHPWiU=', + 'dL/g6QZ7HPUkh6kGt2z13RV44MM23ge5', + 'yWzsw2MC58xzFoNtoqFMSMYdwNT2nixaCKoSMEDH94r9FQYyeHQtnbE9tU6SJX+Me9K1TH29Iqz4t3kYoFdJoel31b5oXaqK6fPcP3R+PBT0Zb+Hgg==', + 'Qhtfq8mkfRmLcMlXbZeKY0H3nn0NRC0kdajYkdS0PcDaIFGHJYVRdERH3vK9tZNJlMA/bV4iF0mOTWsWCbOjBa58ZhT1UwymSKF8YB7xxxQAzPTad0w8iRQl+nOaFeqxH1TIBbg=' + ], + [ + '7YJEvAH7cn7weU1ke6xlPHPh5ga6ylxK0v7odh01o4A=', + 'gdNoHe8CxXyRWLxXVG7j86YVlK5BB1Xb', + 'oRzpBmqeA2KRzuDmjrKx2P5pZxQVR7S2ebVWOUEgRpMSYK5uB9pGLpLiVcVGZNq6rnI2CWWTfwM0J6AwynkgUpB9hjfy/Gmx96edYbmhyqt11MzT1/0=', + 'BekCCVnpNp6M3trtJ7qKPKRDAltvFkx5BjfOoACNw3acNxyOid7XCJwcDx1GAKBjeZyWDNnySTnokm90DWVXKlzIy1Esu1JiVERCe+lNuih3L+U2MF9puC0QYtZU8GCk6xcImf8l' + ], + [ + 'LftsnftGo4+WOI6l5oA1Wa71w5LGfpfUiJ3Bq8NXd+U=', + 'pa/r+pbtGhLCultaL/USFyv15UWtQQ2K', + 'm/yJTGYTQpW5TGT5s58+NA2kZv1kNKmTSBys1ks1KAbCsSRSSBGsedaX1PYG0zJE0a62dpuW+gwCONwYpyR4sBfsjZi6FzPjEjXLBj+jOGryQKxx091i', + 'k0l5N+3LNMdYRACU5rWyGI6RC3ggRegUH3DcBwxZ8JJT+cn+ettwzweNBIoHLwJtcrGNXR5/rNUFKg4HV1C1Z89pivnRG5h+87BbxqwaWmUb/gb95caKBCxE6cXQax+Yjoov8o5iaQ==' + ], + [ + '/g5S9m9lNiJRHFHkoBvTzjrylG5FG+reucuXN5VJssA=', + 'lGH6qQYOQ2LbD1hXiyFHYiGqRASUgvCM', + 'OBm+xz+PEIJ/mBIdLtvbBrj9UXzme3GL/duqLasACHXIYiXNCfTbPSMiSfCKFr6a1h2pzPELRoDRz2Jma7cvSsrn5Dmh05Wd7nj+4OF6sT7ceh3hKOYkLA==', + 'AtQtxXSEWb9KwOK4b/6lD28AlcVESNJD1h43XiqtfElFSRkLNkQvqGOBf7yqBgkz9TYMlyVu1iB7RTUyuWjb9SqUiOzBLnWwzEYGrQ4cudCT794kbMeowrRkhidfr5BAJBSlpUd2Li0=' + ], + [ + 'DTC7/hRZdR1OrGklgNprMVClMJUVnpS8dK+SaT2D7xE=', + 'UHJ9EYyQkWT3cJ9xtNyYBV7BqO8jmfw0', + 'f14w+SdbnZhnrMozVg6/Rhtsc933oWVa4YyYUMPaVRrtJJE08+27+hJNzcxa2oIWPcULrW+dez+TtsJNBK9fz1d8d94MgW6dXzvRCK4n3Jru1Xtmu89Z1uQ=', + '3+1kbcyHBrIM5rfysGbwbwpT54CSGDmCiztdMt8bRmLAIDCQ9zOk7NyMwzjFswwUU6d+uexGIvD4+PCsr2oWtQGsNaUBr+oAwc5uHc96VBYvXoLV9PiYvyoIh9bXwNNeJTWkg0mq1S0D' + ], + [ + 'VCZn8TcldvymuVAwcjbw9AN/stcGp0XuVjyto5unz70=', + 'Sm1NAZoGuN0rhF+DsIOJBMAT/bTXJ32r', + '7ebHVM6eEVnkeTeXD2rx2FRohcFAtUsZ47uX60PGTl6SDrjY5PDy22Y64hMt/d2Ewg8uEJoeqjKPqVZ7kFdDhkLRPSHCUEXA/WUWA5537RBVl+ArFpD2AFNG', + '+5loWJd2mqmQqWD3yOgmM+WIrxnN3+madlt8MDqI4kpSq0Hpvu+UO/ZHelgpCdBHHncbWArODfAoP75wdG0QRfvrwNbUZcswcVh7ko9rlnfA0njL7c/5btlqh+PabGLQaxPgq3ROB4SW3Q==' + ], + [ + 'ugQcLGP0V3Q9J86IrqGSSrkFxM/oz1vZvsZB9lCYG6U=', + '9+yq9syPjp5QOUqgYkMOdAKTA41glEgD', + 'eMxn1mBimX7BO2uV7KEh2LIs9wXxuhoYCLrr07H+9qRCecKHmdpO9zNAXGlQ8H3DPCjZu1mxJxFPf4G/7/74I79qm3TJu/6ndWf5IcAL0whAzPaflqm0Iq/1nA==', + 'afptAIrxkIMRvRx7rJ/bJlCToAFKxnXcC4QIjgmsK7oVnEMWL1DWnFQm7K6YUQVt1Cd/f6EdEkPrqnePAHq99eEoe9f33NsPUvdyajMbQ7mnz7CiOMV27vrydK8RtTUlywBkyvzUr5FO4mY=' + ], + [ + 'bDJIcwDYBgtzgIwYDJES87BMytE0TciuMxNspGUzf8g=', + '1ZyEGksnWolz7KUQc/KyBuwxabd1Papj', + 'F4ubdJ1XxRigN5zGoE/fZrKqIrvO/jyvfGmlRDq48YQnqUV5sKQDMdTcUJaVhGSjPUgQm6q1RH8i7z5bPqWEvdVJFW6lcSTNamWZ2QoloOd3jhWvkyyRrMI/P9s=', + 'Asx/7Rp5952RykTGa5t9nBhVGBi7J805U2RoarR6X3Z4u6vZlqkjqGYA+o4P7sIgutpnXgz+ld8Q1rND2tG+KgGYoY2aM7JULBwmXC8koN5oOC+wHC1mjiGAP8ZiG9gQVjHFDbCcsNy6b/yF' + ], + [ + 'ZVbXrYAe+iC1OaO3gAGyUWLRnBDecF8C3ZzoliP8sUU=', + 'tml9vOu2DUMBAmK0NdYjuK35fJTqpQ5n', + 'NVNo4CFBP5bJmvdv4PHr9gS893pCFk5ox4ad9u8MH8cvayHncPSbRxIO5JtfiHtx7/ZLflIBilmkf0FffkuDYwJM8tfZvWwisWSHQuFgE/Z7qTzuTPws6HfgYCYs', + 'O3xaif5TziMKLW2RROjZI16qjQswjkOFyHsAh2MOgC/nfS0XjkHrdhPeLyp6y7jGjVceF+6M0yBh0rpTmlcgLTRewyp6vlZPWIwLluZDaWyUhpSAOw9tiUFyK2jc7ytfxU3R3RmZwSk+g3hmLQ==' + ], + [ + 'FaB3qwFdSjLNugtjiJ4RkWI+2G1dAcRfeUNFlDnA3Ws=', + 'YD24qxBKUZiA6l8dsl4LmxSJjnBCkRib', + 'rCGe9CDIrP1q68Q8o8dslUU/MJKHIVyz++mVcJ+MHA9R7MPthqcK6KRjvb5t62LfKTiu5WafRP47zgggLp+bdLyb1+4AYURpBosVSD0xLsQEg2urwgvbJ/XvfyRS9g==', + '76pW3I5kkPVigt2pMzIKwKNjprbnI+643t3t/KOwpxHeCy+KJ0EAeo/WfiaFDw1blD5XBOAlM7qqvfrw5Glr2/Y0KOTUHnjsILIcISbUGuI6K0/q72V7pjXs5QeehrzbO+u0aR37icNnsaTfGJc=' + ], + [ + 'Z6vPsACcfUNqQNuEFDtwsQ+90AySeOr4IBNhf5XY/X4=', + 'ch4+gvprl0E5bRJ0qpVdx6S5YA8t/ph/', + 'zBERNV6ne22TOjFar8Pfj2J39t9rMNxiF0qAlx2b5zpNcsrv2M/PObX4O1Juj+R3vu0DL6s77js8lLwZplcJcp6MhGEOEF/YfhbapWSMgQzoEGYhHm1LRcPtB3CVe98=', + 'w96gpA/WmCx/SRV7PKlighEBm+5uVpCXvsJ7+8xJcI9ahT6G/94sSILi6FMLa0naFUO3otGpXN2N2yFvtQA3ljpwx+JFdNBmCCTvnfabVybSUKgOOWo8ynDlwulGBDP6SEh/1RXAhDwWNWHBAqa9' + ], + [ + '8oE3YSEWSNoAF4MRVxmE/QZ55i8TzqLCR3blLWjJ+cI=', + 'ZJweVcoUqBSj4rWWJVfz7Q2t+NosYsH0', + 'xlttz1Y9CJuTStoBuuHKXthPc0kT/JMTfTV4EswNEee6WyQQP3W/qb+vp2yE5AF//23M6RRGPi1r4CFa9Q18zzGGUJ60FeZ6Q9hygEK6x3MJhVJHu73OhX6VnXFKvr7w', + '5rKUD0E8JAXC4FNzEY6W7txHh/QaJMwIr0bAYGtWGD2tOdDtnAYBFHRopK7DffllfQ78pEWNSY0dhIJ4Htqd1fZ5sbaKhIn/Lh2WXWAngEF7LrnPG4lKTu8RQTx/q/iikw8ivo+z4GglrBfMTQBTMA==' + ], + [ + 'FtCQV2/194PisBF94yeS5XkHHJBk+oCuZIZk60lEvoc=', + 'VM2KHAzzudmhDnBznmJQhwicZFpjNMPU', + '3aEPLHEBNsJCdJT+a5OncDMN5EtbHT41/ACf7KsijDBuII4PgbEUFSyxR5CJ1o9PB3cqc5amK4P73gXWHvL6Z4YavZvoFy/incSgSTLiKORwOxabAQFm1IP5kNdu6ORo1g==', + 'FK9QfQYJz32Co9DxoPRWBbSl2x4LdX9YJUmudYxd0qiZ6f9znhVKZZGCx/nMiu71Iq7aQ3lgmLpHgTFY01wWvv4YTT5X6G1j6pRSFEjfxpS9ji3mR+8yZ9B/zQ8fpaeDQpLZR/ZNEAvAoPDQ0ipB5ZU=' + ], + [ + 'mf33ogt0pdXwUP85SD/C7lSmVEpwF349eR2i5EiwZZI=', + 'ny900K94qp0XRWiY98JWfx0njlH22pCW', + 'vt+MGbM6Kl4DP5E9iWhG5vlOL2DaoJ0X+LsBCXYn+Y0R2iXdV35ZJ3ThkeNoJ+4AF/74Ya8cZPn/Krpr/URMGUiLw/wDxHNIccs+IW2SXjLRC+UUhuC00KKyWQ8dd4rn1Cs=', + 'PaUUGcyLB4NJwFshzVQqs3H485o/mWU8vBtc8q2IgFjmHJoKH0pCxdTUaasMalkQveXolpmzZZxURM8DAVpjq7IfnymLaOlL4Oxn8CH5iFuywDYGciLr0tlFD3Nva/e733YDowmnxaLtSzEVRCnr0/Qy' + ], + [ + '4doBdsg4Rt1sycq26HBmV0yMBGNwV+K2pF7rB77xoBM=', + '0KOSxI9/MYfX2IcPlr6+I+NQjcftTFEf', + '1Ux373KAwY2DpYwXOt7mL5MlvxKMbqrT8pRAvgaHrAmI+MsGkkA3LLzF7h+7AoG5bVPBEwEtU2I+E2XfRUINw+kcUx4dgV3KxZ2l3IsxbzpNOHykOSXc3bipOh5bQ1Vokfe9', + 'U+Se/vvcjvc0erGw0lo7rG+u0EMc5ygMCnEIWVlyZDLlEKgtkbVvOMsVxAC9iSgoS4dnGLv4brRF/jIzcU+lngfcQjthrA6ZZZ4fXgHHcz/Ctm+Yp03e9A/uceVCrg8p/jNqcTfkzBw/YtjkOEce9FqwwQ==' + ], + [ + '0IWX9DEZzktcK2Pq9jstiLFsAtCPvR3l4rBYPqxewwA=', + 'aGqc4SD/YNy4naJLVtYPjDKAifs7CwCT', + 'Mk4z+TDs6ZBmnUM8+8YS2DeCskfn4Ikffcw2aorCL9tcO8Zj7CGUI5wV5r+ouKkMazAfnRIIoF7fyxTfD9K4GoEo/FAEjmSk9jPpkGxlRdOP9vUUtdiTW4EGwF2l4ZKUXgeMPg==', + 'K4LHXDhPLX/CRw7IWLXQWYAyVNoCphZ/TE6udGw44FJv+QXKOa/OI/v7TTmtGV5oxNzp1qXusDGb/aetRUMrHstk7huK8+RJ8iqnvME3nOoIAIYiNDXhIbyHXyPd2oGsf9w4DMdSNAV+xMPOq1Rw5bE6rO0=' + ], + [ + 'JcEnvZHJmPmO3ixdDrb2IjuaaZUr4ckf7rrTc36v294=', + '5WOF5hUCiMdM10q7NxD4WLspmbi26ZC5', + 'rqt+BO4J7RQsl7iWltuK4UL7u3g2iQmDdjOXo8MzcB7FvatL3T16eVyyqwQSpkJMuZatBAgO3TBhG9aYnA3IO/YP8lkPebqjexmVZNpd1MBHj2Y0MHszsCsPv2ZQndndX0sokCc=', + 'hyN8zugzLdKyXWDcopJ/9H8aZ0UgHki6orFEpcu+zR9Cnos8tgOTBpMJfh3xunyyRzhLSOseFsrdgLzHWf+OdSw3cUFQEr4g8QVzVMdJv1lJXaVGm0UkkNmVPRG/7zqsKtH/14jwHRxyDIkh7GpW956dKuEd' + ], + [ + 'VvKD6bz5dqjXIHAemb4wZTFecDowThi6V+vuckfz0PA=', + 'zlzSN0EB7f86DTsXCiyMbbmmhCIFzU9F', + '7TapZZuS+9NtCMXFzDzEsvDixU27/yPfslolRzLPRzvI3Y/lWXwUYd2CG6EBpTMAkaATwe6Hfj9AhVW2gKN7bNnhRIjp9vTi/ZlEXz8RvODM81W0qWmOLolNSZKgJLxymLModIp3', + 'KoBT1V1B+dMLpE4bMd9pN9ozYO7GBQgQtNyH0jbE+FtTGmLhkdJ63U41Aw5P5zR0Up2P9B3sae64bhav/EhKRzvZPwY/5d1qAgJALhurfriroa4U/JT9PplBN7HklSwhfW7a+2Hod30IMbZOY7YZ0+YelME2aw==' + ], + [ + '0bXqHtOup8Gi7AW+XkZC5o1WpPzGR02VbipCcDSrmbQ=', + '3T3s8ES54pnIuntstj1e+roVIRWhzWA1', + 'GkK2B06PwqhXQ+jH15JGCJLC7g0GogYFATSKnRKzYQM5zhiFZo+MIHY35CcqOqSXxYKHZKGu/H98snQFVBYcFRJ0hiQXG2HGpU5Q9pnyq0rXWjJTdeQAWjsKfMQsyOPoF6oYz3Nlgg==', + 'h3sGafqHlrHdIj2omJVEzJgCaRj91SgLJ/5nYU/ztlepfB6zFmjDu1PczEaXkC4NeYXY3RiDhr65H2VjvbsoJtkCUsVtzVMJhoUG4RMV1YBDyR0nXqruPfKtyZ566coxrv1fAN/F1ZwzQALwSsKKkve3qUHLX9M=' + ], + [ + 'x70Vw36SfSGxUzqI+OnhjKMtQjKxviJkecsQ1lSVjD8=', + 'XyMmzqrZcZ+0oiKUE97zFJyOBU7PF4zN', + 'akxS8e2vuim8SE0yWIiLpgrlLObOvHt5SwzvoulMYyLgEWU/xnkqKMNcxc7rD2EPTPYwkFuRkfs2hICBxW2iIK9eJb6yNX4G21xFucaOHGNi1WfwYzyk+rtRNL5mt5s0tXddm4EoGCA=', + 'yfAYrGX/bxPYv0HUe+/XpkWxA2QOoOOvdSbCo3uwIXAW6Rn/AlX+DWp5tWQ57WIhOk1lGuReS3iZv3dZmodmUBuLqQ+xJf7RQWrsRSX9fdgJ2+GOvdnTb7UKMQK+bf/PUgK5LrQ+xFqlH1TXcrT4e7SKopAq7uIf' + ], + [ + 'uwp1SnGoOuY4zM5Kscl3WUGHaDAm3e2FjHdGvk0LP+E=', + 'XKWTftH3nIXVw5vfwt/SotBf5gu7Nnd+', + 'czwzJl9iGqXsAAGVmOR4t28v22u0oY4ekED+Bcb1nSCvuWcAKrBDNCW4gM2obSvu3Qd8sDbR75A19xSWlEcVJ2vD9S07aDq10jRVvf6bsOpUtrLyTR2NO57fFvgvbb0DlNhidw8f4QW0', + '22w3T573pXKap0nGbgt13YloPjtyi19kVCjc5GPAkXK38COL97VLfIpxsf8gHWtsP3wSrgQVULJFa+xvLJ0gXfcRdNKeOmRPx5lg5W5YnhmAXgyhSieCaL4K3B0b9ClZ+7m1M0Qb8dlhrjE6t87bMUEpTjajkDrxbQ==' + ], + [ + 'STnzD/laax4gaaLmwvZM1WMZbNd71bp/hEW4N3wGExc=', + 'oUdrhIm1kzYxUjAmJSNWvbTve3FSH/w0', + 'eb8iqGndKETWrfkDSbhpE660sVIZC01dwgTGgTpajCIEBc46C7W1SNOZ7Rzb5OH29x/KvC+LvY3ZCrZmevoE6FQ9ZEAVAsOCSs+lYChAp0agObQBqk5T0/U+FAh+BtSNznlALsgnLRFWnQ==', + 'UHNqdwfSV/6YndCEzzLt1EfZ2KYA+Trfoo9a2bmdtQUg0QFA4zn6zG0KfzInW9/mzwSRgPSTyMm++CEaxxTeZHhv0iV8oHtLUAorsKprrJ7xTJcN5jOVlQKWadG9QAN/VoPVuqKGk+VPhB6ECzYbbcaAGUJkoBy17PY=' + ], + [ + '0TOsFNnOkVoVre+qHkuFXP7w6KSiOyXlruxTJX07dRo=', + 'fLD6rkCAv/q32qmsjGD/d88wXKKkB6Z8', + 'hsMAo1x0KEzmtLytpY+JZ3RsdeccdYqdbZxMgSb6dc5CcZ2TtYbTJaSD3AHBkgheDW99+iJchSGYwBlM1NORH2npLaY4GorwXjH3CVY4IR3VXRMnfELDVeT6sZ8Uc28kzYrAbOTqqBwJHJo=', + '3efUsHnMp9873rarLK/7bKoTReYJOhzpWu4AO3XKQGfG2iugnN8Ze/AEDZNewH74mcDu0AsjX58w8nKGjLRV4x8hoAWSAiHm7BmhUh77p58xPqDlacPbLyNkMn75Tmf4Ex6HElUYMVcwCEH6yF8ni8ZQ3qx32jWWY0O+' + ], + [ + 'i38TKdyoHKVgQL5qjqH3/dlrp28DuBEuNxOt48uxVRg=', + 'AHjEHVo14VqmJUe0jiWgxGMAofiYSWlL', + 'cWU502UiFUVeF47q1PpiFIWM+54YN9vNWFMQ2TXsGMaJenh8pIZDMpqT4i42WlPe6O3+tCqP4DQ1n+nWd4W7yXXDNHu8nCKLjrzQB6fYuT1geczicnz51WnV9O50m3otCTHDd2+hUVFu3Yhl', + '8MTJ+ePeRqRxNCEa3DZOuUltqD2L3oX8yGEa1jeL8umVlxxn/UfYAa9iOjXbgGavbieUVAUeAwi6OkIXkgNOTPHjdMsZeo0aFvDO1pgxFNKpngN57Oybjtgrui3hsrzdy8/KD6R3c4DtFghmNqD8rtUesBWooz4jqnlstA==' + ], + [ + 'WZ6CGseNiQLyUI1LCNKFRL3ak+s1jZAptUCR6NvYaMk=', + 'MBnuNTN7ebKpmsfqXNr8wLIicsvSff+w', + '4WAeVTJXpC+oOsHu5XenpG2u+MCwJn5VjV1kx8kuvLRtC2/tnZf46wqoA5pU98PVDVDZKX2DcYKHXzt7BHUglEfIenTIFy08IHhIWYG49w01/AwGS1F6m/TlZL3WirzYkXzK6I/iH3KtiapooQ==', + '/wCzWGw4bCJ7lqpWe9myokXeW4Vxs418PdgAAHmNWlN/yfZwtSjA9lqVHf7IcqqIXA/cYfepdSrWddG6YoCsMf/lYTIKrPslF/EkMEmJq/PUqaK9H15/W/pAkZtzZjLN0ixb1U1dPeFNLG8pZ3D8vXfxHUCmuGbbT2s8XCw=' + ], + [ + 'wYPHU9LN2K25nWbpm8h7SfPvR6ddft7KBJJXsp/9egY=', + 'WgD/pl5AZmIC2DR/Snfqjd97lszbgBdu', + 'RTSUlSaqw/2aFYHBo/fOS61HLC3tBe4FATrM7AGYMTRzqX6GhIAcvzuioHvSdWWGnrNnTWa1xVSDVDFOEYAVuGLBVf7DHpTD5U0lmWzL6U0q2vqroi0uRmrnI+x88hRC1uGlrNGL3NcTWJVAvOU=', + '3lQeg8ZJSz7K8g3GCrlceWNw/aTlEl3khOyXIQbbIMLe3Wu7NC1r3cTZQ5eerXjfI8IzUiXGohPp8x7Vn/9EXl2Knsm2IGo69bMWO81dWIdKbZnz2glUBeWofGse107zUYXCyt5saRDnq2bNMd0f5FKSlY3Nv/APWYQdJjSz' + ], + [ + 'bHDx0K6XRtoC4VxPV82Bp1k1I1sdnD+nJe+k11vcK9o=', + 'HXzw8TXmnbJJZxsod+DPQpeaJhG4OVL/', + 'RFl9Vy6h/oV6caT63NHIqfUBhr57jbNJij4uQKd0chRCjtLSAHoOw6xQFc9T1AKYe8936SllY3TkYh19qQo39gt3f34Qhmv2dWJ04cqvGDsuiTgzbAsP/HoJeKzJIdIj9a8K9IVEnB2NEiQANEMU', + '9KZdO53cHM7v8mwaj7G0YEP8aZrC5irVZ/NoNYrfkb2lblL4qHCr/q9bDAyu2LT4nPIVPXeChyuMLQQokxB2ISJ/3ElLSeD3tWhVUMm0adijkpdQjZnHiKk3Ovi/myyL8vxAP/kya+hNBpMNPyV9ilVhzl8hpWrwc8F5Mm0z3w==' + ], + [ + 'e6nnQhHW0FIa3bAVV+8giDWRPqjUd/TtRtKVB8SB+iw=', + 'peyXpdPmIukSKvY7OM2Qxjsaerg5ORcF', + 'qDtdXL5WN4t/9lrsNo2UbVwaojrjdjoVHAv5aPZ7eMby5qI5a4wVEIh+4dOdX0Q/XAUsMPjDv+wjoU+pAe/y674fNJh82UMoGS3TuJZBcr2RKYBmAzqm+83YvI57FYj37zjGz3Rgm6f5knYXPghGlQ==', + 'em5tRptZTdZWCtEno16XKMjGVk5E4l60c5kRJKn1GRi89WlpOr9b75RwHmeedJ4ADHkiCmyZFBaNEupgIW+bRKxINUIYHG9skoi9AJFKS5Sdjevcth7AA2sjwYGVTxdE+TefUr6NzNWsc8aLHQ2BbRTarQN2yJuaK9lNQJ8MwwI=' + ], + [ + 'NvL5wcF/CqdhGgE+KnnSv+a7tmaok783YtD8+GQcRcQ=', + '3wfDNFVPtqajNk3bwA2y7WwekXbpPq9h', + '3OQ1g8x7N7nuC3W8gV8V3CPzmXGNxalIU46/Cl11V3fCO/BPjW3efVVPObIBqHkDSmlI3xVIA0Ssf9CAG6eVXD1ucc32yWHcqT5V7AcfqcWbLVWz/Y/7FOOTjA9S3d8uoih7KIY/BhkVDX+B805EIIg=', + 'T4AQKkMQs4s9ntiRuEvXXNZIdvggVTn5gFZqBQUPkXilechc9nifEPkYEB0UC66WJlOnX9jiXZt+7ex8p4y3kjp88VVzKOjs2GPGKsyVph8HZbZjM9zvvW1wHQeLI0I4sRtNOfopoViJQylhq0IjxmD2ztQjt/3nhfSlUW7qGHmP' + ], + [ + 'dZGyWpfJD1Uj80LWfDZrA4xcOZLM9sPrRY0isbXL/ew=', + 'ZXtSdMkv6PkIMVFdswG88Q1dOjE8p6XM', + 'OUSZ3jn3+NaeLNJ8i/gVG//I8qr+S1R680Axvn8QhfB/XkkpDJXbhLDJjMFBzrl2wUu0Yg7uWnwYVF2Gu8wfreEDWbxDhkVnEtG0iOjc4dUv49JO+q7h4lpa0AVbWJZuPnQcC71xiEos25pR1xFnSjiR', + '+Xa4zrETNQOxazI77ECLlfESAJ6+O4C1RYNykwobMwBxljadajg8niebQ7l5TVQ3SvWQKw3Ag1vZ65/bRYqZomA9XF3LP7Rgcu7xKwLdsaK1YpKuh4/PTVejcUabU1W/Kp42BkQ4WyQBB3PtvX3AupzrxPLlofJjTGR7Rari0soEqQ==' + ], + [ + '5VGjKJ5MmR+tsfQN9eq1x4qtIksXVXvU17V4K9IxuvI=', + 'F8nDV9J2WEbDCpL1vYQNMgcTmi655nKA', + '6kQFVQJ8fkijV2R9rY58m7zUk3FkBfi3QSytBOYybSnWQkVJJshdoyzlDsXRvvWBHuFjXAoE8i2gyhLtUcksW7PgRI/mhyYVdAtU9vzSQJhLP+INyTrCECE410pGSzMKqFN2bsmok/Q2BRmKjiQiEcPU0g==', + 'E1kFfaIq2VsI77vMQVO+Em6d6Qwla6kq8FjSJ42tsuxEmddVrxf6I1pxKiPJPKDyAvjg/bjV+mmc56ryfP8plTMAJ2Hioxq4l4vG1zo0YUQ3g/NAJTOyAsJK63uAAM7pRD1sSr067ib45YVfwNXFR1nYhH0obQN15cYe9RvGEoct7yE=' + ], + [ + 'QFX1E4rr6aqemy9s1XaZFHNdDnebqaFtl4wHTL/Zd4k=', + 'NG9RnsVFNkqBAl77ESCpge2mGBIf5lZ6', + 'No1ekdB2ISjy963G7S2PYNo86rA6OfTPERoUeBN4gvoxlW2YhW7Rit0cjChqoQSGDA5unVBcr3Cbb3WrnKJdB0DLnqamv2eO/NweMUlDTAdjoMBh5CCaSJNmzzlQI6wUAyytysrzJvbItfi/TzOXXaGDB4Y=', + 'QKN3bNR0yj5wJTSUxq5SRpFswD0VmRYgl4a9SFJpp1SQTyZ3Dj3OzuxKIjK39+rE64mqMP6bD6KxhddCHy5YeqyAIj+r6kceZOnQZgbdVMz+m4JIPFN+caZ6d2aR9aSqZ0YfM5Vzk8m3+cxwXwlCA8w/FTCnQcTcAyhV121qbeELjtsh' + ], + [ + 'RD4rku9u0tj6MEJHYUjMoRdek4HzTX0NpS0+Id1tojk=', + 'lO04o90Osg1Ym8cbAUSeugDRi0D6OJCe', + 'p3eZFFsdjg9WlQHkUERcGs0AbfQxCj3WNSiDSeZjXLJVxADRY3PaNMJVoV7qnykiK5+dIlT7BxyLwyiAlu3J31Jb+2ak1r05sC17/g5RxHr1pn9RrYQdv5N0UBPoKayOqZ4zLimp4UvCC7lPxquKHq6UKiAe', + 'Y0Cap6C2USRSB2AUMZjI8A4ZQEWeEQY17U3cBptmBIeSY4ieVmSuAAJSnkwq/ZZU1ZjvC0vIfymDeDP5kdOW5yJWRGtELzKMLbMyDBslmwLWpSuFD8Qw4mlzwo9Y/etfH72OMykdd7JsVIdVL7spad91zoqLGLyl5m8xWnfPSRsjguqhPw==' + ], + [ + 'C79+U31g7ZlItsWCm9R1srH3/7/x0w8ezkahWASOnQk=', + 'bQ7+zsaYW3lKZCztDFRP45JYmETJDIKd', + '0D03suqN0ve4ZgSn5uOvzZKbJL0VJEx+k/ekaZS5fv372dBLeDGOvffghUGOGtaS9NXnz7IXAgv38xgPEHEzdmCL99gGtFxim98xq2IC10rxsfaH2Zl6KtnSfckxB5APWNJ3QWo3ZaQt2Nya1frabB23jIVjLw==', + 'GBtk+/BqXiUrO/CQanpZHQSWUm9R713LVb3gCG9in0uUIvjuhqNTzEvo6yFPy5hjbaOEsLljkde8Sk3LcvKAOsFIuzUbm1TRYqnWetyGehC9WoSkN6Ko0mDlgX1s31DfZjnvm7YpQvcN6yRmr1fL2yAcQJ4YqkCBFHwoCyNqO0jGfmooeg0=' + ], + [ + 'CTkpstUc6FnPdBQzpbvLvE0j/6xq1XzaRky1bVfAx/k=', + 'A6EnQKoHMo+TujuAKC/hgsPeAPAwLEzR', + 'jDbogF08MKLMMC5UXGvOIezIXeJMJNfwe3BXm8l50OgSgVvnpUOpOGIJF0LiWJGP+oJ82j/fKmN3uZAGcvX5BGEGqgdVHr8G/ydYHw3K5NJMPoeLHjLyYx/Y9qbiqt7JLK2XKtNL6uAl/3j8vLyXn3GLGyy7c+0=', + 'eaDrS5AVlpsiGCOPPRCnsANERVykLPBg+O1P05c2OSoIDe5R49iA3TTG9orqS57Xiuv1I41CjwaU/53HsOTHl79HxKsQof+xM9WWgaRaQUZal/3YXacb462y08cb8stPM/yiRE34Pn/Yge2X5JTCkZqd9EZC+nuWNRZMkRqpmU27fbepp3jC' + ], + [ + 'yVLwWe+JAP2HJfy3EPnhK7s+Dp23dx/6PvdTQOn/MjE=', + 'wx3+4e9Zcu5b2LGMWrJYkZm/C6dbRvPX', + 'i97oQHtnayNGqJj9/sxpmgDCJh2zvk1aWGuUqcX9w14jXWRY5wt8fv6geS8RPN3r4tZrOyZlPP6oLNEA/odPwCdpwHaCAKu/OcpAkddW1zT8R1kDGmTXIYWQrOtwFYc52cVqIBg+ccXXRGBPF/T3wKoXv6Kk4Eur', + '5ycuOdgCL7uNvD1u8lXLYfdc/reqtgaGii/iqli0t/HjQFf6t0bqLwnqW0vKq7XLn8IhGopVHPN8Ov7+wYMyLR84kbnY8SPezXllpro7wR5pLdqDhV3qh2mFOV0zmF+OUnbHkkqpk33AGO4vtEVaZKBXGfdl63+QOrSV52FSdx68V/bdzc20cA==' + ], + [ + '4HwUhleucE3m280E+1xwfChdKPmzzNqluhYJzPcSXhE=', + '5B4IiBZ2IyjAuNVtvNYHGmQEZYlMuvQW', + 'KIZbGf8JqZs98oevDZLeQ8GT5mbyI8BQH6/MIo9glPPiXLiiOaOINhswrfMcWoLZSamPFWEtYwxu569JStL8t1tJumiEtRqIgIRISCHzay1Y+jZH+BJ+sGwh2J4LWbEUa3oThPDDw1LPa1Qa1y4SjQAF5ru3itcNSw==', + 'ASSRO3NSDn9vlTyh9YBYXRggeZY/Z2OYYqP2Ky1pT81ojEW+ruUkj0t5DLpiNIpYY9RsgsazCVjPNBcpb7neYb2ig+3gnikQdZWtkm4wpLJ8kJFhuo6zXThfjhUd8k5zU6nuxZ88MHBosgJnic0Lp/MFfXDmhzOXkiY4UqVcL/TjMogLbGXVOhc=' + ], + [ + 'XP2Acjxbo3q/2f62JRLcOnor86+zRKYSID1PXATOCOo=', + 'VinakyotU1cHjinOCs/dbVIkv/RJfje1', + 'TpwW/cvLOOm9PaLJgtbhh6+d//sdEbTEMirtjHpfyJu7Y3U+Xwh6qTzObhrrE8udUp0XNy7Da9jKbhIzjHqfU0t6RuRIbe9p7mnwahR27/WSMfI0pnvHXfGVFOoZyXFraAp7L7wUXDYMYlDbp6yHRc/kEVPJGE4xpQ8=', + 'j87eDpPYaEgPpVWkN02HudfxImOH40al5Hi1ZRAzdO4dfSAf5eT8SpU3UPJyDsLrOL0KsvhWzYRU2oq16zK0JtKCYo6EJyCwNmrvjZVBrp9N7V0GZSxXirQPt4qUwiFYcmyxUSbuX/VCXpn7Fd31UG1JWG5gKFWponCbBJP5VhkxTU39cip1NH6M' + ], + [ + 'EBXjZxoDjvKHEAb5F8t2PKR/YCBwCM23zBvKSlmvN1Y=', + 'ZhRsc/soSsbHl+DJqEZNJGafkLc5Q0e+', + 'wafxVef4aJJ3QJhHNBLI464NQAUBIVLzygWBGqK56p5GO+CmotkbbUQZTo6DgzDNmPIf6E6b6XB9dfWKRBTpEAzQOxG0Mxc5lW5EM9p9w1BazfhE7ibumEnGBvqULNV7j2u7pmOdeIZ8YyZiZMGa2mTU1jzg7UUGzWNo', + '3eaaTGr+MeBYPtRPGpoxBk+46hoF9dmvifW+7rAJ67Nk+oFDeRsjepWsXd31kft0FJGd2AwEO79SaElCybtBnXNlJOSTBb6JqZ6q2biOW1pPcsIZvtQ9O7GYxBfJuuPQhqmJYKilI9CbUEcACkxOQ5AjydeU3sHV7x06w6Tfjbqs3PQJ4GTy8bcWrQ==' + ], + [ + 'VymYuyEU58X6U1yPamKpLQw/Mwf+fFyKRmHk16IFeLY=', + '923D4KSV68H6b/Uez9uT5+wTeI8ZJ5tn', + 'yTMAtwifSABkxOtsQqzkIm3MUrDx05TUHh8uKzX5Us6Bp2yyy7t0HNCOv8qinxI7bE4AmB48nXUjMr4ClWcePSm6ExOHFUzTJT0fAjCsZmDGjYd7MI7B865C612fjNGWvehHvdhbImKoAF5TkYFyLUmNODCcRHuXCA29mQ==', + '8E91IL0A8U9ElE0NfKDVBCylB433GtRQSXQcrRo8F5lIP0TevQx0pcsKpT+P69J4Ex3vIHMH6Px7B/SMAV1O7lFw5cE7XdZ57tJw1tnzRnIHLlLl2QK9sRoYGiHMmObyk4+NQRPUhygjEw7+lGfI2g1F0EiZFVKfZwVBsDhPqc3voHD1FTTiAmO6KG0=' + ], + [ + 'A/4Y0Dwo+wwuiASfg4ZchMfbWVpkD+WHlPtYwIgzGmI=', + 'ORrQEMu1ftEyJtNiCGrJ38B4cJ+z8lkr', + 'tlQunywhg3CI01nzYakADsYLl/M+13fOSp5TL6s7EfaGZYNKpNyeDvHZ8WS21HChrpUkAl5sea+p1IjquyCyzlgehW90aZg6+F99Q2hDOExsUeHye4sRM4QVn+e8A8ru2qOJ/IWX97DyxJ9g/JY/G6rQSfOo0gOIvMs3bt4=', + 'lM1txkixt8aWFqhG6O5eSK0ySMZy5tjPtQpd4k6NomDJlVlyxz0pMuKdlsm4kpxTB5rbgz8u40XGbh8ZP6l5IBBB9JJasdp6XkPdLddc/+VQFnwxCFTauOee/howrhlrgQA6MDrO6TbBiwrQ2xMw7457x/KXHdjpbADLS3BXb3nuDnT0EsJ4AxbAB/iS' + ], + [ + '2I8vXSOJ0P1BPXLnTLeYBXjli2HRXaljC/li8kMQfwQ=', + 'IuR+t8ZproMiuVyiwahxth+jPZ9vYeAI', + 'PgoyaP5WbC4l/R8/ArRnYIk2MVFVVEV6S6gMb8oxgHd+GfT1/DNgXpY1Utm2WqhRq0ZdIMCI9Rvx9jwHHvj6ZHedCtHJL0UjGPMqD5RCCSgj3HNgCcnbeqUo4rQwnenjDr1aQnywHxR2lWLq8J0TxWyJEkWHykLQmsK8CH1o', + 'tDmns5JIchIN+zNO6IT+Ort7fhIJGqew1R/R2ZaFmtNFqueE5Vhh3w0MkUvW6REpM99rKY2bA97Ll2da2w/Jq+VL0lzjAVVhyJ7AZOy51e4vVUGE+E61ljddW/uF9WfcuiN3Gpb8X+G8+cvcJwKeLIpQxc9lXjOaB7O54S5o3J1dHa1IWljeViWOHrQgWw==' + ], + [ + 'Oh0Li6fYCv7Tk457nvGqP5CuNEcpitQEAtE/+9tQmAU=', + 'Tqv5cKO2SkXpVTXHEBLfwt+blGt2f2ep', + 'BGQ1mFRXJc6tO+bsldvKuuAM6C5N7PVA96WJCKoOxlCFkXjd+0jk3f86I55dX4rLKCQeWvU+j2I5lygcaAxzE9X+1lECqv3j9stvb+uIn8j+kE3Qa4gNbUabeGxoLMUHISBESQHmFJiVENb1E3Z2DE9mFsJ2V0ryhGlINPNOGQ==', + '9lco6MNDhUnEtPG/r9BSoLAfSy6BTgvEbMEj8EB/0cAkqqwqWk7T0fke5tK8QCI5CgsUUG1gLCPp8SOmHRvkr63fIkUade+h5xm623GdgpItBRoWRCNWHtCR+5QHQ2zxQ+/E/DQaOoHIdfzFwDVok43zTlQweHOh9d6623Q6xghEFMlet4pI2DV3urByl74=' + ], + [ + 'rYp0B0QOqZUkRHGYxkw6nI5u8cbW+WoaTDSQHe2H/o4=', + 'BVjUmSzppnmzBcvtRUxZB3TbQAPCESAl', + '4gfmcgCN/DVx+O4TTx0phslBcBacaJE8N55DgrLFPoPyTwm3dUSfQAbFTg+QuhFHVwo/yVK9QlS3zr26o0hUyHmpWzyD1Ab0x80XK8VZtUrV36Ogdi5k1BLRmRWUowMYIo1BgP3LXS/EZL9qX/ot75+JRb7V+Ui09PaLa2dJd5o=', + 'HUa+LhOMsduHMWfNPt97tyoFN/VcEr3F7777DlFllIpH2RW2SCBQ4QtyS3xyVuJk7wLsvouZvrU9x5NitNvH8UGIDYm+Pan4BW1boT1l/REDTZvCCqN+b61SLigJrByjMVwkvs4xEz+TCuUW6TufPz8ilMH09Mm8jA+298p0wSYtbwqN6U61UAFcrcVujW3a' + ], + [ + 'gOYuHNU9yK50IVhe3rnXCiDBzcR1FxeXStvuGjNEeng=', + '80aMcmFRTmMAyAvNgO27Y/vyAtv6QGfQ', + 'eje4YJJyRri9fX3iazILNnC4Au798YIpHfrSxNH2HeOQYooziExd0+G7lSQ0xq24nd5YZlvLUiuQl5oSRz8B6HBSJpAp8Yw4SN7nttDI95IncF60vL/L8lpUbenc56x/EW7bf/34DIJ8xzrZAGyErDA5MyBL0bFWZJYEZcpiJ7Ul', + 'E0oI6xMDoVsKFbvCCVSJ6WBmfjbpWXm+Ud2d05DhDX/NvWC+0C2i5p8+4JfwOeOtmU57krTaxB4+SCpsCT1dO/g+3mO9byceB4r1ej3g1RputjNwsds80KqlV85pd1O+xQOMasaHEsd1bs8paq4GmTNNo/yMuFEwkXjpPXbYUG9sWkdv8EZqQimECaYqDVwbQw==' + ], + [ + 'N+8Wq4eZk1/US++w/Zq80EGgSoFqmW3txNe/H6mH+x0=', + 'zkfQNj6ND84CNalpEf/KqsslqrvmWdFd', + 'Mgz/3lYJwyialPR39fPqf39hqu27KNL1KX1J/cS0IxZuX+EDYR7kS80XTaiOtztp9EzZwQ8K6K3f9dcnq9RWGG3gKF671PE9S4BVVqVxKYnDCLKm4gXoJSqmCXowaD+GhAC9q0Xxylkm81sxGuOXPCStFzmrgqA3Ffcrob2DD3/3OQ==', + 'ELfLLeO0gI0jtJpOJkGugWZN3RklqTjoP6VWeXcD2WlhjM89rP1B2VwCDPBDTKburaED/eXCdLn1oEVyFTTJhcPN11gnM5Bs6Mr+fr/zUlOVclBLqg6uEq/7DPF6Bav87BvRd6LNeplMXq64GDRmvGwGmbwbDGwurCGfB9XF60+pKOiusqEnxIZk073IyfhPMAY=' + ], + [ + '1m3nmkc8VYNw+8Ghct0u03OEuTYdjzngjnxN+am2+BQ=', + 'PqzJk8ncgPjoskYCFg0iYA3evUkxaaC5', + 'Z7O/QOSATtP7Me95ncdRAyPxs3SygNIlAj4b0NH0Lvohv0Lww4W6QQE337/R/KAdTF86dgo33y7AIG/OOM0BCr51YgyQqaH0X1Jq7UuTxt58cvWtJDFJrFkge39KuoT5RGFwLmLG5RkPkYxX7xsFgJlXQQw68EQUgcFZOPViAaptM0Q=', + 'ez5mAcbA+3djSKOETH5id4clmkXu2EL85uYwnY8Qwc2nWjPUKdyYmjV0Ro/qtKSt5q8Wh7RI+oIaPqCKgYyDdDUexDmstrdLm7/B9jtGJKPxvEUfE4U+LJvKqs1VP780B5lfg0C1QQrg7XNmN2O/Im9tlnJbY76k5eYWy0BFhhv9EmdylE5ByJM2HqstaAgkwac+' + ], + [ + 'BXeCCplZM+S8R7fmnK44lC0TyGhpsjyIqlhCv1XXCCI=', + 'xrrEZpjz/AjVcceQ7H593fW8dQB5w2sE', + 'ZsQ+pVFPdEzfWf/rUqpBPuqg2objoEkDfQfELRbYYZAUEwC2/KAYAz8PUc/zAGKpxdrhqDQ5XPF7bBl62xOd9KRtda8cSwF+OYNVBenPbYuYhfjejQi24HFeNYCjLliAwj+lfxcO6162peB9vhRwi6DTaHrR3CTk/Naf7K6iSrdA/hM7', + 'iWwT0LXVZ/jwpbkqcEWMa2D+JLtDLLXAmOtxqkcOY3Xl0t5eqoVk77zlk9RCSant9+xXcgrBRcmD794h1xZI0bBOHuzMHBZPYociwxKu5G60y9BE0HzY9PGsuwzsHei/J7abblElG7cxU7nz6k7L737eiUxMluW4wu7dG+Nnfc2H8Ov7JdAjMSHsIh02F/ul3ftLeg==' + ], + [ + 'yu8XaM9a1QU0SUyy5hPXm3SuwR/V1QalzTJb0ybZ8Xo=', + '9B57b3YYI0uvLWGy5/qlhYlZ+NGWIUXi', + 'Y0g3kiaPrl5AsazZ5H/aJO7wvtc1LMnlcaoLjLgGZfsqKaPi4nCOBJAKnBC4e5HI2APTDrHiZOQJB1yT7v7fPzXpR6oVi6vcPjHjk+Mve1v6YZtM4M3b5ShEVvWXLlF3gvxk5uHs9gdP3yeA6WNzCaEe/BOm+wVGQGvfjl2hfxsKiGtfsQ==', + 'Ls0l6LPMrNedlCN7bPyWfnPy5NCZysjS5BAtmYLHO8eeNij6HpVtvpyyXbZsdBcNxfF2rjjDIe3Dp85NtOXZMoJRAWgl2MOTKW5+SeqLiDaSZsaQL+t5TWa/dOTXd1xJ0fqYZzlttkwDRg4/w6syX3wLk02G/d+1agOkjvraaYp6O+6fxLx7dJjUgz7O8WNjffixUac=' + ], + [ + 'O6tN/t/xHI3g0BqtHzZvodYWmbXxmJ3Epm7u5PoK0IM=', + 'Hb7TKYXDPns4X2+mTh4UyMSULHyWwmj8', + 'hvca3fclwlpEv/crRYfmGk5fRlm/Q3alQlE5MwFwlsKEv9oeRtQGYB3VH0yhpg6kBVxZlq73nqnn0GLB25U7T7AAifT6gxoD8/EiQYW1uwJ8JVCy11rlz1BPVJWvMWOv2NtbWfa1coKqh7v06X0Lg/dWv9hD/h3kpagMfXGnpgMpHvSUqKI=', + '3K4FRZVdNUmH4ZUpPEMhXPgflaAfy2juJxfdmqvspTouhV9FywqTHJ6WJ8Tv0DGJvyffPaOjIqFMiX4ydqoaF5Sg9eggHU7jrpWcZ2ymo7tEpET8GCKt/EA3b6xplwyZyl8rni0yEQge/spx6xQKsnkA7kXrTc+dfXbIgHIJzH9cKtAY3qN1HEA0pdmhDXhdMzzHDLVD' + ], + [ + 'EB3VHn6YEmXbGSrHptfIVGc5YOfDFm1n9kEDCS6bj/4=', + 'oW14ay9yEe6eof3xOLDcLzMFUkYywvD/', + '3YFGPdm4uG7kCtKFnhrBNsPrtO6D78R1b+Q2SYYqED0WSC8NkKlocfIR7au8D+BA/GP2CAGNd4LvoV7znKpfHM5HbaZsGwVw1WFYp/dpbRPV+dYvMdkT63svv+MzFVsnfRJFwHTvTuEjAIOwI52VAG2joFT4nBosVqyEOOq7b7HvDpKgjtJx', + 'NMB8LOHW00Q7nggBRkNVOD64Trx/8xAUr6rrmyeE6HQWVKY3PFTIKFihkTX88A5tnd0c4qIEr/F6/bl0zVL9Wu2riuio8X0QSXE5+NkE3svpAvJF7MPH+0buh6uh0/Y1ZB3gVREw4tprdp9TO/reYaJ133tXFKLjV2MDzPUpHZwsGX/zYlmZ45fyQILRtNKNj8eMTeu2eA==' + ], + [ + '6daNFQu7qVu5AMSi/8oh9dCEUMx/dxrvbY11EWgi2fM=', + 'xm4UpzFdTisCu0ODF5hHQjsr4JUdv1co', + 'OAwq3KxshkQ0pzyUlRKKgKw1z1nPBn8wvLKdRAA4NXLJATNk3oPtXS6on/2cYpN8xzoXU4AplG2TjFgMwqtwodB8yc7lo5CZtixYCB+XVGi/pVR4Q1dgBF26jc7t8wuOspax7VfSKL5vts3cYkvYT6aFR85M43A4H5Etf/L4usDM6o5igeQsfw==', + 'iuUXQVvK2J1NTKZE0cdUtVPeChaLsh25q4fbFXaPAd7/KxXQpR3kGVll6DD+2m2MLhcZi7pl5zu1GFhEgIWc5eHWdFcO12Ek7omNdoZrGw9Z1PhN33XDR6B1MI0aGdeKrGrVTdhdJkpoeRkGLlkysFbm7nHz6VgcrgjWOLIStU6wysBNAZ72O315hA3m13UJ7AFsOBL4piU=' + ], + [ + 'qKjVQTUc3ct7d4o9zwAslXHx3ulExPNGfmmHxedtCC8=', + 'UoxwehSRqviWANXtKKMYrW9B8F0/GXxQ', + 'd/0Z3+cBTBgUKhGfbUjGtGbdfA0nj81UIibQ6+xPuhAGhp1AjG4OlrYj8tiDIiCzV5lGVFIIKAtpeHpa5Dy707Uok7OXGLL3i/yhxBoAtn6Qr7cQ1EnYWpyczXSEnsxajkzVx3SKfBKL2tBpr1f/beqjriE9Sq1tTsgofffM+p1jYo7+0pOBBA4=', + 'RJDkVOGAjmJiupmwf5nqCeY4Vzs1vHUK1rYtrn8O9m9p1ZTCbehuBwQ3W+7XaQgSmzj5gBUwNpsh+PZQA8C2VTy95EzJg1Q/vVOfWYMA2saOWeL3q6hztfuf4uAI2wM1Dtx0Bz/Pvfp9iPQ5efMtJWYrZzoAkiNqjbiyiq3SKExs6OffCxvjtZzlnUFbyw6k9pzum+FU3oEj' + ], + [ + 'qNB7rVC48HOT8G8vf/2i1FQW2tEGIV9tM084itmNjOI=', + 'isJknkS4kUEgVS1OEcVE19frdzQL1n+u', + 'UekDrSrVeF8DGmZY+XzuW0yGkl5mxBb+s7nwA+MCiFnhUeu+tY05deNXip5TYYqyorAGD8sxw4gIXbXS/ESK+sNKmsC84iqHeJCzzX8jGuCOIiqvk/S+YcpB7Kq9HPj0rVF2BMT7piA8b0BryBNF6j5egI9Lno3eQBNob36P8LRhMib4GKEBOfHq', + 'uCuqdZ/LRYzeKVVfXPLgLaNlIBUZEx4Yqe0Gf5xQMkaOaE4RvSdGYbJ6p2uk6GB1YB/zSb7FcsHWSA2x2wtlunIqdHZCZuB5F4k2YH+Tv3Ef+bJkvsEfsC+qm5BpJCZB7//IOJW/jtWdTiB1IEAH4LsaDl7DGdOIJF0yltqg7ruNpXCZ+4CwXuN/qRkaEEqQrKTk1gT7qTuimg==' + ], + [ + 'I8disWqFSY4j62i1Na8By7RP6lpHJsdPJMPnGcXH9NQ=', + 'fUVs6eelURaeO9Rsr4zTqgfPNNi0o2w7', + 'YBk3w+Q/Q21U2CKqmgCdOrZHF1ATGvmKmkPKilHC0kupxblmsPbiaf5IAcQ/tJhhmLNKc2djI3EzEFHTPVS3/nxUPI6PGfo17xkm/O35wpRQQS11NKO9j44kQs28Ob34vnjHwxKcmkUKF/lAi4zQbSdiC8CjBP33ezU0h8nK82hS0Hb+J7Rd3eYj1g==', + 'gpW/Dq8vxVqw9t+d39yPOkdRgqBq3EcGWRkUdmEXPGc1rcPlFPyxlh60LlILGfe6JC8s7MW8+GAPRRY8SH7TROehS3bcMz0VDjW8A0hlEB8m3OvMa+WaE1Vo7Bg4JBPa4fpMO3qs1/dJafIVSf21YHtBRGGc8AoAA6TWjfUbxrDY+HZcwV2kRpG+NWzJz0xjcVYmiDv6bmaZle8=' + ], + [ + 'jUkd7taLbTjuRg15V869J0SCZK19+QNy/ZRGxSlVk9k=', + 'djGCpl1gyrBTy5NAJoHPrPmcdR1EqKr4', + '0S6FizHtOQLJIOCf1vvExU9ZbdrHsczgVWgpLrnpWpgvk+MQengiWN/YSaMXff1p9Sk03BWAAexnRzu635f/gPJAX2m+JeE/YTHogU3x9TbBYuiHJX1kYcOAV3GeiozoaVfqf4aNyXzmITq6Rj8L8dRK5iJdQWD2DX9ocYaYf6jk6qKB41N9z1oFXwQ=', + '++ovuKuzeXRHfgRbJKhM/jyctLkwZh5kMPqiEPg1oKpRXAxBCGVA0aLV611AyXjBY99eHpNhOa3/UZrUI4Tm2ZCVe0F7Ca1drgY3ld563U+4W5WIfgcBr9PFz+X7pyxIe0jzdNmfNEdUe3FAukz2aLH2aRQmXPDkUcsF9hCWoXe/zjTy/NPi3r7lwm1qolTI7vbBgdfYdPyLTO5v' + ], + [ + 'PnK/gUlh+8aqgqZi6J0ex0iLyZN9cNW7TSLTnYhI5KQ=', + 'Uqa6WGdgpcJsVH5ZKLiy5iGHUVXyAT7M', + 'ZAyDjiezjWo8oSyw6fUmi9nPhbowzfzB1qPbkMWFZV1zVq+vBAZa1CwBgB0ym0qJid4t4f5ek2ZpLxbbWgShOLEacRXd8JdTTXYzK/2LBYd51sO9ARE2e8BUKtF/P8ztcD6bxdXBxb4WLCYMsEkKQyZfobOhJC0nDbCBEVJUWtkWC9Eu02MZGOcNRTWR', + 'ZRDjm32V7f5d38fCWj4qle2mGdoemAo6K4vdIREf8tcG7koMGgiUoH5H4knheLG1TueZttnLAJTRnef/TDLxIun1vFOoSMJu5oXnvbILZTpDMWLKvXttvCVjEems7YU/uo5aAQ1FlOK5m/6m3+GZu30YUvTbE+5PbNAJR6sArK3DTpNxKtUFRUq/0/4bbKRvFTaILbMIeYqB/kNFXQ==' + ], + [ + '0nvPZCWdPAjy6c7DlXaed/lb7hHVWmqkag569qd6If8=', + 'sWhGAGRMzAU3ph2ZbSbNExnX7aOoUD0a', + 'Fa0CY7bdDCZpqdWMnQl+2Q7s0hoAW+wrvklszfjMkE6ESvmK4KlptRM01SlS1jp6ZN/iImty0raiYGnGTxdwDv4fNQYx5+Ib8x9K8pNG5nXdzdYg2itXmmSWqsLvyTWEamoeuAUTEwYZpY3OOVsCBSp1D5V0lkgHD3yDR9NRT0cY9tRpXYaciNZciBUs3Q==', + 'vgwBfha79cNfHu7v5YipHIuY51uBzs/pfoH0ob78Trg0F+tWe8l29zn+HgdeR83JhgdUteOCcFzQezNKnIETiUiFgkQzTHNrtUPVOfiyG6qTh+YiF7c6MJ0OUNBraYxUBC6MBSESZ3SERIQfAeN+xNY5nDmMFPYOclkH6iMvVSdT+7vOIH0wk/fOp/Jl2Ey7XQGkqjQccsyZx8J2Fpw=' + ], + [ + '6f7Nw8hIvtDnDhLTEUaymAQiVyFmN8qJo+DkCP6fGdE=', + 'E6nyI9wu31QshF6LkGRvpdeDtQF3rEkf', + 'OqV+ctag3HEHbnJ0Fh6HLPXgNzrNkQFkmG4UQb3g6nzm1RkQTaiV/q3MIgnfHhg2NIkgyXRCLxkWZLJzorYGejkrGl6bmkzF+GZVLHhQ5butN2vt5Z0sjf9GFS6FB6D1c1sqmddws7u4U+uTocUBtMoqpRhuv5LmCZpzegyJK5HVa860r/NFWOiHkExm1NE=', + '91FsSJIGEfQhECC8WIg2Jec3dAboS8AgKD6Y99wdSRaGauQsQeDtX+j1i6ElGgg9S1Q3IO25RUEX0QK8utg5tU0fm9wihhTGIFORArdt3Vvefo9ZGI6Y9eP60wTAd2TpnFxMxJq/fOV+BqyKvsugB51lxRFAS/DD4ZIvj1F47GIkKsP9VbWYj6mh8fUl08JsMX4Oxs85KS6oVtwNTa/v' + ], + [ + 'IzTb8JFXmVu6GdgmaQJZI0Tj+ciSgmipXokaWfDDQIs=', + 'H3K85/9uSGjyqt8c6gTIEDYRDZ8kB+o6', + 'wnUdzIH69rttvPHeQWWWn0O+iepXiCbifnrA+ba6TQbl7P6a5ioIKmi5CUPFmAyZKP8mGRNtqvjYiRthLlO07QBd8gKftIoaTN69LAlMR8Z+UQh6LNn9C83rd5bcsTW3HWQ5y0Mb1ZIPb3qNSyJEOMz4GVPO76tqq7xqF6lwxu/bDGvabZ1g36BH5PnlE/lb', + 'pMcVZsLdCYAOI4lufSwcNG3twpZwlL6fUIHcWkCXkw7vuemv+E78q6VcQzOA732S3xbjIgPALqwm+7SeyJ2ZAyikbzltO3BfqmLuovQnvDgBLu86My60EsXeBQXz41R5e5jpMdHGhl8rnxwAHNzuLwXuSZcq6Qi9VPxxPAmnBUJYgvKd3r9csq/845t6xQqU6puQdhZAtjpOudd7o2Mq9g==' + ], + [ + 'tBNEQrfIPElGkcwK9XFMlQoyciCQDuahRu7tNi55OwQ=', + 'pmrY5sGSEt8lxed3JNdSZTSu7YjeKplm', + 'romrzTxfm+QyJpqjBTunD6GBEJ4+14aRPuGtVbz1upAfeBU1+p6ZHekXfF5PH+fG5yzg8WXklI+TAAXChDlV6eVUoD68si5XD5sBqz572ZhcwBNzKX32Lcsoyp6QFJwm0UnhPcirp9GFgAS2DWDB/0dznKn+dgJgwu2aWcLZ6tFuIX+GFvAUPr15a4oLNiKaUQ==', + 'LD0E5QoYs53pkdFOHf06Jees9Pp0H71yTaWErjOaZ5c/wbgeKpfXCZgsf8sXbj4qLq43rBnf9z2JrwKk/9gJQdnUVEaRenqL7SCaD032PlP4W2AwApjyqP1JV41U835P7AbvH3mopGMakKp8JJh6iIoguIq5otAbLWUDXV8Nll5JpCIvd1E4MaqBTVfxbVtKzRgywhMS50KduGMO3cuxGSM=' + ], + [ + 'VyRhvjjCafw5oVYaaj31e4HMkAkVzQ8AAHEPmmasD1w=', + '3nBq6vsfBa5nP3jdQ1sNmw9+67McqxYm', + 'Bs0cf5PU84NVr+B9FW/Tw0BNcKgTsjELSc+IF+457WVZ0zE+eC+6QNgcjV2m6BKHc1cBebVZONEAGo2ERDlwQKhtyPmCILe72wTNkUX1VwG1tyb03gY6MEMiEpr70YvXgQT/Yk+sf24fxKwOerrtk8j/hhaMPp/fPDt2yWqVz42Uf4Mrz72pCq9OGedwFkGksoA=', + 'LZCqp2ZaeQUNuQCEdtWEB7caWKTRAyb6OG/c2IZLxqySsYfGsnJ4sFBNBt4fZ1/hP2WfC4Ug+UoPqyWOJvKTJKpUK61/AyS1MoC3+Zt32PFBkNSwbbgcrqsXF03YQ80tChYccMbSIM3rpXVqzCJ2oBOsI4td8LuwceE5IIBb+6ueIylxw6Sum8jTyM2O7U3J/t0dKxqTCoDCDBjFlEacUMjP' + ], + [ + 'l/v/GcAj8IGJv04UJkc6bLCfnOwRguqwF/y+457U2IE=', + 'pVP9K5nM5jMFlPwKRAPLjd7D5yDTZbOx', + 'djmJS26l+iRsPt+08i1h2WeWSNM5kf0Axdx21KZkfCuHH54ASDYQJUV9z2bYpzAitiBMn2AJkm7jhCxmzhrbHie6ExS+T8aMaoaftb+CaGpB0Z1/k8GzbsUoPadbLmxExNB5ibSQ9QaIB3eU9yNVgLCVP/Iqy88DESXUk+TBNpZg3t0yiQgZJZ+C3xfOz8HajGnr', + 'fjI2gfe9L2futsNT5DS3b8C9vutxsXB0ywC+p1ZOISM4bJhwoujVvMygfGd8oCrJ7O6Bg6d+3pDT0lJVhB4SIBrmpiNtBKFsYgDWiRJEcMKrLC5E2moKakQX1v+bvKaf9iBdKeOp6W2RApQAKo274IfSL9b0e3zK4OB4Ld7lHaOepUeTDEthpveZgNM7r2/aEZkBcQDsmg/LLU76fMJYi4jKkA==' + ], + [ + 'AB8FxJ6W8toImsXFgVYdGPl8xTl9zJb4P/YK95tlZ8U=', + 'y2KeIrNnTH7Hi2yLDTZl9U7kSjF2p+H6', + 'AnoZJZx5tPMuVDcyb4za5T+v1fIVX6UfwdfEzsXMInDFESkYPDkldH7GJ2Fk4sgmnY5t40QdkpMi9hgdQsylvOP8HMT7A0A/NUDvBPtCUyRVQEr6FDLaHC+1Do6A27QKqi+BJTi8ebkhsJXAk/YFZjwiqdiM+sBUgZC+xkGAVtMy71o0r5NZ9Q0DseUG+ih4XqAg9A==', + 'Anb+1qWGEGgKms5mGTQf+9D5Thaa0NL8JnJfGkBoJGltmTSpAGvG3MR4j8J1uDYzCSa8hcDu919JoREalYMsZc4CVJQK/jXnYZySqEXzxjpxNKuzR8W31bD2kHPCcNQRmxzTqlqCrSrbVJC7rumv1OQB0SycA96CsBmgf8oSEUR3EYO+b5c81J+SRF9Jwj84pF2tnh1OlN+UqyKnmMSZuZWgykc=' + ], + [ + 'SZFWHo3EqXgtAOZhZS2TvzCh0VpBMdZ/Oh9ba96hSBU=', + 'hHjmPCtIPQ8p+8cBDN+YpzjUiXpSFLVh', + 'M0zxch+8A++M+S7IN+ITBntDPKJw3vGaJzREolDjVtdkUlM6kdlFX4m8KIOk6YCATcngBh2tczjwXtdSZu2ZREC+PlY1MrVzk3GPLpeiMhyKYLU7jhBabwbg1v3NT7Um1hoOSp6YZ7EBH3efARre7UYz5hr0ot0KGlR0ssobOJPcUEBVutNDBbSNZuG5oVF97DY0G2k=', + 'kupyicyYdf+oKCRn4uEEpx8TBFwtfcXR+F/Hck8KWIXUv6XTv7OzQzaMP5WUxHRr/7jIFlOl1w4fDrqukthw9qn/7bJfRrXHjm0Hgk5+dMWNDfL0NogmtKvCofk/6g3kU4iwWfM0o7QtR3ZPCRRyDeHT/7Oj2ysKtYvNlYXOuDu++iaXHe/hoqznKbXfWWSBG7BZcAcSk5PNbik2BspkpFSp4NYh' + ], + [ + 'l7iEvjSvGGVAEXLMl2v0H6Qp6bpkZbD7UBUoCnHwgYM=', + 'G98+QtmC62LnOzhube9scXixLjFTUHRS', + '4rY9cW3y3aA53vLzKePjogp3MaegjIkwJGlPn67AbiNTsd5NMqRbOzxHfMRoRP+RySMtzgsUb08J3tdMQ4mUz625a6OVXPoEc6XC0Iea728n+YGfbvH/LuFU9pyRpQii9E1Zib+3XXtkrh6jT6Aq2Dyfr7ObijCUivlcmQKVh4pRswyt12cJpY/ek1brmErzR5G3HTvE', + 'Bceldby+emIwJKPjHqe0KRarXzbV+B0VjivYrqhTr1nRBEpyp/iDXG07rmCCEwBlvvEINsr2yqHRSthFzIB84w6Rklc85HkumNzDFmpWr/avIwoO1zxKxgcVl47YpD+f5jdAG7ATqIB+7Y5VuoFwW9OzyCTSS6wHjRJbBW0hUFfMS/KmINGeYziBgo+9QBYeVvDjZumWmMi64YY+ypl28BYhAzqESQ==' + ], + [ + 'MA2LC7KvzT4n0NA50CdaHMvsfoLmDuCcQozBKwCPGc0=', + 'xFLoSSyVKSa2NBqafF1dIp+RG0M6UWbY', + 'CFLCH1JVDolwMw/mjZquZWRXxuo7Y93HdN1vkhamGx+Il4P/+Y/QStKwRd4WxqRVLL6SbJQzZF4E3seFfqP2Z/8I3yriSVb8XFOx9Wv1Eb5Tqxpu2HxCxbY6LeDd4E56NfJxCkDG1/hO1x1ySGEj5DeSYWVx9/aD/56jKoGqOH1fw4cG3ge1wGFfGf/Z1IyEQdKmzDjRRA==', + 'xPrDukYFYemfP0JLzGs0iqnrIsI/ZaYHe7g5JerCrH0wZB9rdHjFigS+0JYkTrhwkUTWVicdtOS5I03HBxu1iq4u5uXPj2vmesMztkYHz3vi+r1bDzG0Wz0126ZnY+Rpl5h7Hi63V+xe+3UJR8SsqyuQpoLH2oxdoNfVty/WZOCjbgApjbmBcm3uuTNlKUQyDDl5EOKp/P97N67x/nf141bju4qV7A8=' + ], + [ + 'JqZtRTt11jzRnaVD/6u2oJ/8F+7UwehoWwHRTq986H4=', + '3v+25v1CS+MxPpsiZpTXOz2XcxDyJPTk', + '5ANC3tOwylGDlGyLsHY6g89UwsfS+R2lNjpcc+MI9BkSqjzW3/T+ZAbimF68oQ90HbuSmxJ6wqqjZGu9uZCNvrVEGkuTTjm82VMlzk9cxZKo0yan+SVk1cXXjh3aGY7S31DyfmPhREcMJvGHHlXo2bDo/eff9O9hSoUSeyvHU+yWQoYoyrhGmYP3UijhtWCJkoD3GHTuzhA=', + '5Af96Eq1saGVIS8Z2nJGxkJTX3CFM3g+Xs14GcJuUWZkLm1KioKJSGRJUL/4L9GrVWtgq+lgfrLXbhIP4cwSNF/PYlXmZA9LqXAiDg9dD36FIpn5SRMCmTUbS84Nel0p8YBn1HT6IAs6e/26/BOD15p+yvqNmrowRTvbEEbKckmqq2N/4jNbNKCC7w+dd4Zx3tvrv9iiX6ABU/OmiAQGKSXI1bjxsh3H' + ], + [ + 'wyP1WXq3Bo9tQzim2BhV0wDbNOohfD0epP8FIp0wOXc=', + 'P37IunNDQkJ4LBwid4d1x3k91QU/vxel', + '9F46ml5noHHuWQ22+YZ6t9L+5kqk2e7kvjHcFlgBRn8Z4LbZEDbTbtozi1pKKjl3goUAy0R/YOy/7eXyOsJ+ivUKgw/2XCpcHrgVgTH+57rsGIKawIJhXbBMsW9u9RtCzxf/cvzcozLmxqSIQK0hSX/T4e85+FYBsdFIfjrC4PTMhiK8h3flGan9UhWgTwUILeRn3hiMIIBD', + '5R5+asagqC5xKqDK99ZSstWQyI/J9CHFTW2t4jm3Q9sOEAIuXKD+WbDXy4UKlGLrrcbaegk62MKrifE3RWQCRR2IEJupRf5YizLPeP8u+3C5Pkg69adPl4yMhxGGPYWuZW1jGlDI4uQuvO89oEy9cV/9g19HxGVkk9L4+Y5dx6bnpKT5m6DaQ1IBPy2nordA1a616BVqGDwUHbJMtIwro/rjxiuAsbyujA==' + ], + [ + 'IuSAgGgRbCJuQdSQn8mXzU5UaXqY0dIKkyh2eGyjZDg=', + 'MpKG55HdpAg/36yef/3SalP7hKNzExVd', + 'HoJLPRT6pSaSg0esZAYbzy6wtXL1W/YlRGbB28t5XnLEzYbL1O7VFnWuMRueRohLUc8bQbTpm1w1+LfFQ1Z5x6RraJi9ZhsxXpHBOl4W0eprrO4g+e0o619tu21PBK6WER5GvB70wfhJvbpxCKvR+OvxU0rFOfq76a2zdlWl4vkyCRoSZUrDkz7XB2M0uKytV8qgv7wT/1MO0A==', + 'RmgWoZHIk3JX8hOW8Q3+mmxRhL01iKO46TeaQI/QQF2dpX+Nw1FgHd2gCZqeonjWjtgpbnoOSjXXECcBrrJ8OVnkt9uCFhCOeizRBxZH9ieR8aZ6F1rKwPGdJ4ySk3O2YOzkWRnFwKjqPp+IkvyJJhGM6EmVxTvmjPqgYrWn0q7WoRS0yTo/LSPdYEjgJ7c5qHVsbwItAb1DDgHRX/Ex4uFcV2/6oGeJp5U=' + ], + [ + 'Qd0oqNvU3PF2f1nKw/NUZ0fnyFXDNAKpW2dHfH3lEMA=', + 'PIdeue3vyDnll2ur2hAvmaJMYZv//4dV', + 'rMheO066/22ZizAH5E8IN6cWXn+tP8mAyvhJACXSz/ijfAuAu2dQQm5xkdAm1iEQdx19S86j3end/p3U1uly59+HmK0TmWMiKljvAkVOSbKASsQZEGvqTsjbyF9TARRUDfe9uwclVfbccZsiHbZYJmtnWLInJStpqtka5qOeq0TU9aENOUWviYRHF/JAQLtXx8qMh1yPcE8mWUE=', + 'GaGH/5rp4kJ/l/8fq26j5Hv/XcDoicbb8+PsB8lclUbG8nWePSsmdkGIu871UPPpLUxJTk0lcdbnEushz92oHYygk2tyfsMtdOo0z2APQ+ZBNWLhYc2LKadtGSnVZQHXL61rEQQT9PdwJq/iOW2NCPu9Xuov4IXaOBEI5hRBqX1214nkX0FGbc8qEP6W5fE4hERYgis1/o/L4IdakWo51ccAuzURW1T1SWi0' + ], + [ + 'xwlACaZPe4yswWcvAYwow/iZovqsQsBKu55RdOXw9Qk=', + 'se5QxgiHsR2tJ4zJl/46FVLx7Tsm6VRY', + 'CR9sTlQ/Q4dkvqtTrhsniKuMDDBEsF7kdrBJvDsTHAZ3LZ3ovd/XEcbv1wSCXyxvfEoWJbbbq34flPpLqi1TrUHi9Xseo6GBw2ZnOyprq16y7/ee++L55EY4k9vQI8pX0KfMIHY9MczreQAygyrHOD4GMjXOFRlPpe61ZfcioF+iGj/erKr/HnFJE5/JCbR8Fls10f6yTC+T2XX3', + 'zxA+ZtO51LDCagZismAA9l9eGtjPiMHvpUtiXOlsO2IVk5u7bwgpXtQnrZ3yJ/mVe6gC/gGHTHcw16zBETgDUptn6AS4cGLUXC/jIsia8Z9jKdeCTrkkUtuWJHWrEmnCf4kGHXgV2YsOyP6Wh094X4O9aiBynU9psk8wmaZlZbU6ZVzunuubS7mQvpZdVs9C+IjdpCnyVTWbC2fBHngqeWLBoS/vN1P1AlEBHg==' + ], + [ + 'nOy3mMFoyh0Qjv3OSzx4/yA0anB7o6bAqba9TnbbgBY=', + 'Cqp9mIRd41S15diDmfW5W+4DsyBVxcFb', + 'xPluGh0AHxY0Ci3UV8bJ46AdFtrv0/UnEx0P6A1hWJXC+J+YnKnYCs9k5+Mni2gDVOdq8FAZl5JzwrpceTKZTgd1lgjDjD/7tmA3Tp9MRNWZmPcx+LxyTEeus0rCptK4FJYaoq1CxXc65gkAhb6aZUbRGoyYrMzbaAs8p2TmmRu2dwcNj1IrONi3qHK5eVKT2NwE+JwLWMnyIaoU6Q==', + '2tXMaDNqnFAyvacuraCWCnl5v/+4Oo8DAgWPv++Ox7478BLtglmnLBnPDlWkJsvXLkZ+FEvzOIroRUNg32qoTKAYhJ4sZcS+GPFuGGBxGe3VhPuLj/SOeml4hVhvzVup4vCpyaWmyHxNxJiS7CcBEOHB6cXw9oQD4vF2EAi6OD7ynXxPxJfM34YF6f4x5LVK/gahwPtD6afBrC9Wo+BGXSsQEfxI9+4qNNkIHs0=' + ], + [ + 'ebRoCwb1J6ZtwRYI1OvwXgnL4K06huuhqtkWHnsyjbk=', + 'XDmhOL8xJcHw/JKX0jTqMC1TpevwJAso', + 'bOOB+xiIKIDRZY9EIO0Xi3Nw946wvSVLlEMXa5Q7x1WdBuh7NBkLNnXTqfmvzYndXHbYcDhpd4bHT3SyNMsdJ3tsExagjsGRvWeVwQuFWuzvpyeuDPsesyG1o7qD4d6HaADyEDZTZAEvQilJNBqLxqaXf9BrK96veXL3fDWFWJDlMp1EGmTpmGFIhFyqDaUojuUzoONh/ZYA4VJQ01w=', + 'ZRUzX+SpsTrTBWOk2Lw2gqUaEBysKxMy7Z6eYImMD9f3vomz4WXaOZ+Wd0ZgZxX7ADSik6dSaKdisI7TJZux7RnBl9tGD2KWIAny+JBuHAog+L3rHsldvr6VjJdGGjAp8murynNa5LCJJNeqcgS3Lnc1XICz7hZdOF0vUe59FVsA+SfYtTp5zmMw8UVIW6Bjfidixm6MGIOOMQZSdg8O9t/2GuqPyM2XR60X+9rR' + ], + [ + 'McqKNcrpSKwrpV6TU+NL2nRSrL+8TCkFxywdyszP2ko=', + 'r14fDj4eW3tCQwyv1EZNMqv/c/AkErSP', + 'jssCm0tI2u9GP+LghFszC/TQn66pzzgAhhswywanDuGMdduIz8rDCyMcpGDaDho0cS5PxlZ2lrZCiTHzI7no6xkvJXYG9uJ9SBEVXOMb3MvV9DuBOL3GDnhY/ELKPDeVuL0m/eoucxcA1x8zI5zpFQbvfY4P4Hnjt7UXHmdtSt+z0npJGSmc7GfyhIWvWb0ukuSVGL1Gsv0ylBJF8Rkx', + 'JZovCoTcqsIurhfBQVDl0+TpNBsK9OR3nerNe7WX4/NsedLhvKPBksfHyvlFle7gnd9RT7RXexpFziFZzcMe3Jqoo33iJMKVX4HjjOPCcEL3p0FYGDbFdA17h2fa3qmwfSfLFJYuYnDn4S5Z2INc0a6xchLGFzvnuQzvzlS3jl6etuA01gks2TfAj2tIhK/YbHnN1MoSUOUvuzeqoMUywnpgla9EqqNfEdnbty0IcQ==' + ], + [ + 'DrKxRWs6WHsjp9+rC7uZule/Ek+sCeb+F7/vbDIW7UM=', + 'NToAZnUVrRYuDJDhY7SF2Xu22a+LVm1n', + 'ZHoIHYIeZ2O+Wn21qkPIcFf4Y3vN8ZdaACwSwN6hB1dnudT9q6mhMFoIVxWf0twObxDjQ53xNtjg9EQrg1ouxCCxcPDamXtBK1BdQgAd18zkhrv6v0NlTfIwTHn3bYCVwyC4tIelT6C7JJxd0rszGm/WQxRwOHNH/dlgmgkXTseIbPOPfxt+upsmLSELsoegeMzEpBhFj+g8KY1EgBi3WQ==', + 'is06WP0RCwHUhDzukXAxIpkTbONH/bilQXHhfFIP1T+IBytFMqVXhwK6clL9Z2eUXBSZmzJNVWV1omJR5pwrNbQ9X1t0nTwLxL2kF3KiHIs6EadUuyoCVw5j8XRkntM+K/3756w/u2MlwBdPsLflBScebgYbo3gsB6g+4rvv12pJxy4OVRs3/Xw9rmzN42uHiiVlI277J1PSvSzcZcaEU5PI9lJFlHGW6HfdIsmnzdw=' + ], + [ + '3Q11AzIsLNMGj/D8hEOV4DY8/DURNsVtVFu+iUnPG0w=', + 'oYkvPh1KolGPxnU4aRiek7HbScH3Th1Z', + 'b2U+pFLuUEgZz3p7b2Igghbn4hKt9l9o4pvciUulMDMxsIqCToN69eA4fYJuVsIw5FSafIv2rLzqh38PlazosKSitWUqNMZh2GWxpDv84Zs54AyBUs4zNlqWsFvvQrjjgKwNO7OcYazUaF0pBD7XieTlboOR/4cST5vfOQTBXyZFuGTyWs5mA9NCHF5RJIpzzrRDiCmHfMLq3qQBQib10pw=', + 'WCOE/pu0rvlTCav8ix2m1KBGHiOy3VxrXfM/8Ru81g80Cy+usNeELovYtu6Hgln1Ax0z+AwrmOA9a3YHTyX8cHll7bAYOMT4c4aCMbPTNl7wfJWeTRGXiEBgb81B2yrjVn+Ku4ZkLYxuXMban5hJ+R28OnjeP+hs4kTZRJ+JMXrdxNBxKN/4GW1pz8XV2+Aw/dIUm7EmcjWFXuTnxQ1Sy+AEYu6U/3TWib7wCPrN0oJ1' + ], + [ + 'y01JbNNpx8QlpSHdx0wd7B3admj1ZKg9nVxiensWGMk=', + 'QDdSZGcwUSXGj0FydTXmIFFYQouiqkYF', + 'blp+Ya22nEPsuYelRCB2vzOPrHBYn/3dXSglSqsXFPYvPMKLL7ml8uM/+0hPJOFosJefgdKvjBmhnBU1cIf1cdTBEtTyJnRRS53aBP2unZl52kExgk8wpZyZbAlqo94aRymIXYTgIRmrb1RLfABg/7oHWy2CBRZ32lw5nOMduKXe1eU0nbUXkj4778AqcqCFltnHLduj0s6Is4/XQGkFVt2R', + 'nC7G6CLxBC1tIFOC6yk1oGWmHMqOj9tG4Cx+G9x0lgnzmskMk/PXAVbrTaG3WigsPmp3Z99bUKrym2C8pKvQTe6W6ybB+4oHEtf8uJwWjFCcLTyrAoWqf2gQCsBfZ1h9XUUkWKuROBqP42e1WuzQOKWwcjtJEO4kDOejmPBxXu820HVEoKQK66IYNRnlaAsqoIq6lVGn2Cz0fkLOLIjvPAu2QnBMPf8CMVioLl1+5pWlZQ==' + ], + [ + 'Jxr9G3zo2mHIgrdAYyYc4VwbiCcK4EpHJcKRR/LpNHU=', + 'EaSSSP+vMKbiyG7zan4lOJ6cnq3GGO1i', + 'Q+8eD3taLEVS2MMtmASzzGku5PVvD/2f3Q2zgxiiwc1oZSyAz8Ow6AJOxzknOPo1CGj3tIrqe1WSS6nabjYwUnrGjWNTmJYjXZr0reTR6hd832TGoLeP/ixhzIDND4GJESAaDMGK5MQT27wyp2gXavCHR+2V0bEvMCLlW24ZYVNt+i2QgnMaMd3/7JAks7MhPuKOzKDoHVQzNN3MudGQi6BOlg==', + 'XooqVHyiJUNx6EJ3302BOhZrq6nHw8uHy3aN0Vm3PMZWln5MVxf+sZ5LVhDnagT3dxXmZfUzwff8A8cUu4IABGn6z3AEYHiqcUToUPR+fqZ6454b6S7S13pXl5P32nPlFchinAhXdHYdojLsqdTX0gsaWpouCSD2jiJBNqzCfMSxHIKuGsiGEwLvqae+to7q6476ALovbLssH1FVpgKXOlfSYrWyHLCz/bZc2UT7RwWznUw=' + ], + [ + '3eMBbNtDP3sTRNV1oyMIaZSSlEeUml49WaeiH604OYk=', + 'x8T1Q3gJ8H61LKqLepOIFBG+xvwPvBDp', + 'TpALzIMZmACR3MljxrFAGQv78MbNjN8eCWbcN4K2l3/DJl9+ujSIlp5tqIFLvggX/sU0N3ddsYKVIGnBZJqcr7IzS5oyvXz5Dv5rHZDtN/0ElUOA3s7JVxMDex5/HrX9yyUClKdCllSp70MHshuRai/TNN1Bf9rWhucXA6muTDYhQBXBTqft9tLfynlhxzpyFSm+kKNXGTWcGfxFu37QfqKindc=', + 'GV7+jlOkIzNfwlC2aid2uMo3n2hm8WPq3R3wf5+v1jJk8rHE1wJVb/afAv5R6QqqPh5A+H9+gt6Q1sPHR0V5DjdKuZ8EZyHLeHIB5WO2+8a/P1V4UBIWgFL4SDcbm9ot6IgybFGmJ/2PapBdohyOwjFMLF8Acp6BmCQam1zb7mQ1tp6hINP0C4qpjhDwfsaNVtAh8NJaAWFpvDAlW9zFV3s+EWqkdUoYz/b8i2LgwiCngVXp' + ], + [ + 'o/10v/uVYdGZDSmGgg7rP9b2sNL/rCYVGOn49PnVB7g=', + 'CRMffNgCrSCX2jOR7hlp/tsCEBvjWaqx', + 'TRBuhAg9yrBLGWfaLrJJGzw8NKzacCmGIxBHiJko729pAFFLcyYznlKVEUo4mvjs7rwgT8AdIZHsb3m8wKTJIp1mD8mfz3Nz70XOZrK6osalsWD8TxOV7DlqaYtZRzXg3kLh49U5hCjnqSZdKj22NT3HlhTFehChjluSmsRkO7YoxKVk9iviUwTi/RuThxm60KDORBuuTN3fDHXG7/z5Q0610zjz', + 'aStG/XSyu4I76v0nXUOtsbxStfx8TeBUfxNvyYTSG9g2ehLYHpzOYN/l/TwntHgcQPE9WRD09mp5CrM5Ns6m0/oWnivr8kR8AbA6UQZm/vtNBAhcyf+LqpvYFH1CLVCAGDM7QlTUnLekqXbzaBQaFckLdEDJF1sgFapvA645E5CEWJsl9qs7McHgf3o8oC0cjsHngXbodZTRkhyYmqdp/awIs532dhtUDm2qqywUn+UKp+IbGQ==' + ], + [ + 'FozD3/6lo+FsuvoGyD2QXsK4v3mXA8oMJvb/kYaBTqw=', + '+VKAw+czSv93njwkr2w49l3t2TUWTwZ5', + 'FeiHES8/DYGMemN3wBWFv2W7R0+DtxP4xq0W7UjNaD3dUBMPKBW9jDHMiXMKKPsEzoMxSthWCjONQrJrj0z4jFqUVzViaP4xUcxI3bx6jkdV+pAjOb4t1EC3IxwzuNwBYiie156/L13Hkw0WhRcZ174QRZqjMXbHmUsp9JDasHEw57FZimFuHP0xKKkcBaIImUJtWX04DnEIuN2Af8Atda4hbZExDg==', + 'GWu4LgXiRxbzkBqQQAikrBa8Tg7mFX3E/h2MTFpfBd5Y2XqyCAyf0wwzaG43hz6kNiLcwXjwYRZ/xUVN0Rb/fN8nMw/Agq+/+OoTthR6Hc9gu/aI2fsuSzBzw4rFH5oEljjTwqK9PPiSrTx6P7l1K7jBdGyILEQUzB/Rqw7SOJvjwcGCOZ/sSab8ijhF2G8ThpOIGpAew2eqS6Rxld7Bk0+MrCg7ab47dYKNIbCAAWl8kefabQY=' + ], + [ + 'WKAyKloJkkdgTwUyES/dKoPt2rXBUoQqnnioNwFsv14=', + 'JTNCrJVj+fnkpkxMEULBkgUJWvgalr4E', + 'rhX7v09TM9ua2NYMflcc+xywxUjs+srK+o8bvFLyGXfu3EEBNDWyJKY0WYx44RGVsxNGRPLnzN+/PwUlr7E8WRL1EBoffz8JIgr+ItJvi2BBtEOrlD5apEM2hq4xx4e+xl53ACi9etNb4WkV81YsDe6ce3wVIDPyWnb2+7bT49rKvTMEk8jkI5VuYIzLP/9vdQJQZ/+BwissBn3ZGAdY63gUOErTP8U=', + 'OqT7qpS9U+bFK8kIeBbqlJF+RP4mPQhoLLuNCGUu/BRrecC8XmYPRfn4yy+fbqR0uV1YONvNHt+TZl2UCQkUheMOwiXo7nQ9xTxU/XXDV47GeK/oz2RnxxD/rp+hMBmkWGtYH3SM1+PIgswZ9uq0OAQZhPSKmg5Y8TIK8hltpKitnsYDqv8amPmbLGrhTZl1J47RiRbaBPiLeY6nHoXpWIPN0crI4sK1THarbWRUFRwJnLe7sS02' + ], + [ + 'tmwSWJNvVAW/M/E4BGiGPnO8GakEYxtvfoC+fqb8P6g=', + 'EntqrW5Hbe1IH8vgY6qeKp6AkAzyNRig', + 'cF1oUrWVEWRhXKgvyx7YBWuKMewLdLka4T2q5dkMQQa+gXA9+rdSPStphXIfQ00/ltWRna350wL/R3i9e0yRO56ZyIwK1aMsQtrVZH2CrQacAARV8uYVaRRr/rN0feAfV4B1XTWXC6AOTnz3ejb1puO//rB04kyMH84Ne4OAMmjinYMXNae6G47YLWa15p4VnXzuNX8m2A3YLbAcopDpAKsZzKGa7quF', + 'hHFr7B6awy7S2MgXgr/IH6cwAhE2ORWaivCx0UHfcf7lqksIN9p6Fw+UBRDmGDlHuE8f3dJYN/d5q2LF8g3ft2ULkqQmywqI3UQuX5LspBmWqs7mZ+TzaCPaVFTB1CZt/qlTvSmWpX0KUd7xE+nVJQjUtrq12MMxzM6/Te/SFgdxFpwt7K7TrRx1vI6fjWeDSkGyg4qdR/OtIc0/YwGGdojyhbUquQsdeMmPhjm+3CbnVUsMHhZLBg==' + ], + [ + 'qCT/pXjtBXEXJCihby2Q+uBXp5A2BY20WSph8Exbsi0=', + 'DReL1aKsK4uhxMIcxAOHww9Vyyvrt5hm', + 'nTct375w28EFZOnWyhD6p3sZGDqvQc5qZBQSmSgWXzeggM8KScibMpExDpnKkQXnhENQro9xpcckC3WaxbEvv1T1HocazJD1w5yKKfNvOfr5u0p5dQQaYFwr/CDqGzPDbWwua838xFaIZYb39DWs9oYj3E0L0wEHZqWfrkUE9ZA1L6IhVNCMOPmm12b8bzPIv7XMwgMajpYcPafHGwJmhCqddvUBKx3K8w==', + 'Ro/6glUpKmZI1gdMFHYQLIguiGhJHw2MLWMV0VxQXh1ps+aiI0SnXada2p1HskPkGrXNT0U+hJ3kHs+nZwRsJSY2hJOT0fAPcG5GOWDRhNL7jJ+7tK83Wl/OD+3K9K8M89lr3y87cMXbdeoY408idQYxSuZXKkRpdK5sZmQKU50FV/igpmXpmx+mX5lQ6Td9r3mZjo9rxzAolJtYrslQj5tKWKqqS+9q6IZgFAMS/9LRZI1V2dyO/y0=' + ], + [ + 'Hp39aR+3BsDQeJbPY6oi4/BB/onWQzyZrm1TUuufB9A=', + 'rbVBH6nu9FVBJSw+1ABqHPRFFB+qqg/g', + '7q9ynGpIi3eaf2Ip6ZYQKRM0YhgyDTMDdbWh+7aMgIRBzR/9Um70KAH7A5wJZ1NctkfQ7sbavdaZF1TQZnd7ewOcwpii/UwNx5CnXYjs6XFaEzeKrU2j2HoXYyWeT9V7pkSvXYHeJV1RdiKBMkMfHNe8pT4Xa6zZvZYUPBuWOxZ167X2RX+iPj7skyGJa2mtHRJ7QrS3/WnuKeOAQiiWgLUeIEK2AyGqgA4=', + 'qqD+0a/htJtUHeZv7vFdoF04NY1oNcSqCeYW8hpgrPFktl6wQRx5UMS+1sifnlkWpNz7IvQYfPtYe9Ohs8HmOP8axxoaDjAVeabVfqLyt6bFfyh7YeOm2+J+xoiWQEF5e3ssp9WKedrvUwdlDrlNPNRa8S0ER5SFLupvs5cmGP3AsXEJYDqPN89oqP6knhCzO9isyLUlzklIVYsTmgdRE2CE3lxDg2iA6qbJbkSGacAdO42pE4Te2zuZ' + ], + [ + 'q4z7NIHTGkwBdJgB/YaVsh3L9DS+bcBX3/dfTwbXFgc=', + 'ewFgp6muy46H1huuQsl6Sc0LevxX/Nsc', + 'fTohBNf9yW6TAcl+NcSbUF45JxTESA8D2DpEj/GdHLLkq/5HKAezW3TozuquKZ1bv83gyX7kL5SwIyrTnZA6Ej8i8dzzNY8wk/NpwHjtUVqtQMMYnZQNGbxs2i9Upg071kDbNmHVkq/JirxUtdpV8UMcABmplrxQ2ZaRhfclgGOYipXwPSibAV9qErZpsC9XMsHSVpoIPg14xNEK+9f2UIOwSaOgKmUXN25T', + 'zT1fpML5lly9Z7w+2IJCeMc4jwoX23rpXTBdHjQpr6vpr/F6+29vIoQcJvj3JUxBLpTfOL1DqrkLpjwEh4jZ2W9+0dTMT0n//JgbkDwhD0EHwrpoQQB77LTXRMEnbPaYKoVaBlI3ecZaKJ6ZWsoTDupmYm947r+8O1Rb+sIi/NumZpO6r+0VkHc2oBQ/zvCT5/wgF2ArDas4k9FmZXHqadjS6Me5nk+8Z2dmnSTHjIil4s1pBfFGVb8GDg==' + ], + [ + 'XsD96lW0YGNmwlbKQxOkgExFRq6ry3w5IN2QquTN8Ts=', + '881xyLE+jbpUxCSUSr4yJTc6UGwCZivr', + '1zXtOOFVAEDZywKEJM5V1fyyKpt1PHHY1fTOV5V/wAdF0aUGeKWVo/N5UOm/YxUNvPUkci7G34KMhOro8GDwhYp2CKhBAlHe9BAjlDFzZ/YmqtdV/lLk1GpwOLtn+reX02gPegzMGZgeahI3lnzQ0at/5IKH0HpcvoyIucovw4mNpewJXfDbQtbdqkvsxRshXyAoKjilgIxshvLKP6sl/h2WreOxUPTLcWwVOQ==', + 'GiI+SdkqDpzUu+91uSGsXMKCdohJt6nyqvsmfGuMOEg1hdrMVPIQSui1WclrKXqCgdlUPCwUZgUQuyeIHKg6vrjSPU6wgAHxKd1vg1qJHCEsu07v426BTMBvmO5hwBn/VR3sLqboNSFt9td+ZgTtm6/LL5b1DRpDqxPbjeK/M/6BBOFPD63MhQI5vQCMcrQpU6WqM0ndUvSzuKuEX8JVLVTAbGCCmPIzc/LY7Ji4K5r86nsVgmTv8E5xYbA=' + ], + [ + 'GBj5Q+fvbMQfuHiAs8tAcATmhbxlRQ9loSPGaJ+ZCBA=', + 'IlcIbocWhCktNfr3Sq/AADdvTvLf9had', + 'GEqTIhZ3oAaXuuIvyZOpwyaVZ+aHWycMn4mZG6Z++B1O0w01sZRQudUkMxWhMpeokQ3wZiWR+Bkfla91sloXYLWo+sgYffNNZ3Z7H1U54B/XmL7un5ZFpXY8+q7MZGApE8oLMwy++fbGV8cxoteFoUbThDoL09qyVuGM7DJnUyVmGlkqoq8iU/e03gCTy1PuZ+upk9A23clUqX/IPc0yAZgt90mpSESqH8Uax7w=', + 'YuS3k+Y9D6vUByJLtQTeO9GZLRQQURbke2AobXtG0c/UlKA1HWPghyKexIVgRiYX3wnGqUhrwFu75YYr7NnDS3pKadIrR+A2tQrxBWhplkBXS9Olmd5Hp27vc5dr0iKL98Zieh7fueoYjsycAJqsPkT7ibbml4dZvyRARX6umpPf/nXMGevyvVMmnBkAwULqmL1e4AiUtbAErtp7CIdRj7fIpMOUgwzlS4CWS86LK6MsZ3lsKh2KDeFwB/Kn' + ], + [ + 'xhNHXRX6fkXZUGjnaQS7NMH3kJgiQTYqPQQowCJHWFs=', + 'V5J1Ki1tORjklPrMjGDJrzjDjZCTLXRm', + 'SVZa0gmTOpd6tSm4iVdeZE00y7Nx73/EHcq/lu2gYAqtBfSBjNmPlrq9I+AIU73c6CuzUHZOTqhnh5Y6QuVNy4z5w8AoBCtxZ7xDO285WokPDEVsG7c7+7nHwHDhBd6ivDYeAgDSHtb5PNExJC7Lmx1k6BO8bnVveMIEH90Y8sZulSvvndfLdcyeT19PDuw+Ol5ux2LT6wwGR2BIMilCbkdVtbAo9OKOBMYNBlTj', + 'XWTuWqIcqkpa5p8V9usH0sv3e7rYuKRLMejHPiqxk+63xEWxgaOtECcqC7xbuUkBGWJU2wU8WGBtAU45H5ZmQ81ViBOViuMFpyDgzzcrHBfURJK40PgwfEw4NNOglv2F8i59gcibope2dbGQ2hs/4LZIj6C2ikmutnjDP+dEiVMHb7h9FClz1d2BJhtAgjiT+ERBbMGO1tjhqESp93d0xNsfbhfpqTYH70pwabGyXpT19F2gYwf3HZgIeSrqUQ==' + ], + [ + 'HQOzA+ZhJ3OodxujcHOkOCGPaIFFQRL5kEXEL8Yaoeo=', + 'nAV9RCqKPsLGWgrR120NeJiJnw/6bGj0', + 'xG3QidYOWMyh7ZbR1u7jiIpMMLCNvu0BoSOdFLBHE9ZFB9BP7MW28MiaOxlgM12p3SPbLC0yTE3ONNCOwpRH7q+ogY8EZEWuDFp8H69l3hwqQy0+keIEf1inh+sGQJIBE9LHuQbrQXctYHIkW4gbvANsaeCFZfpvV7a9RjS9Zwinj4mdq3g1k2KSpHZ7Oau5sXOyOSklCFW73/mrR5IJDU/NRN4fj7SEEXC/XJgU4A==', + 'tex8fLmYT/N4Er364FSdHBFglHRHhu11SnJfvqpek5vbqS7MqX9NPLARAOHuOKA09wWa4coQEsY1FvsI5Y4egZrAJhByvFU00B7z9TXZU6zSIIXhYxv8yetWLuyFpnqQJBdCm/G0nh5iGhUz4IY8xBPx4gAroI0CKVvh8QznGg/OUuu1+5vvdPpvSeefdpYeho1HlGgLPUPz2Ju9UizLptBjm9m4gUFHDtPCdRTVcBUpaY2BeVmILQdkgtysWfY=' + ], + [ + 'nKP2PB/BRMh1yUv8WQNiGgdq0G7j8m8YfBOxzUJ/ksA=', + 'eDGVzDJ09uKY7CtvHds85GDqvY1ENpMf', + '1dpkOPofVTKe+HepL346jB8VYS4jBVixmNioHSWk2x/LaXRr0VYtWFLBaDuJfA5K022rWxAqGJy+MLQpim0ifC0uCe5eOgzqWkS/SapQkrZAn5XZNCts1ZRhGMOZswabcjpOOxj5gkMl1VxpBlG7kggaH2hN5Tds7Nq4l6TKWXjv/2VyUtiHrsrnLfrRfPMbTB35b60a+37z0TsCvNeQpf0V5Bo5TuVmJx26lwkOM98=', + 'Yoy6nLs5gs76IyD1TKiWU9/1fD7ooiD5H9FIcB8JRTA53Ua3eHVgt82LNWQqvT3IQqzzlvm+QIBakxMWpVi44aiip9prrSDMgdh0oScVfySktrXKoP513F4ckvFM/vQj/4NkUYZB1EVmkY59HX20GudVxwhFXE0wHZBmgvEgbog/W8GaQCgJnQRICvnudtt54FpDiAKqrByzXzZfL+4P03jsUyQ/bb1X876I4Kvw35ZxIXqYxafJCNJVOpsrrYDi' + ], + [ + 'XAg9W+9Z8PHT/1vT9Q8bLI32Gy4mfOi+yn/2aDIGXh0=', + 'eHOxuC9q3MA5xRDXXWpMf2pJzC5h4U6e', + 'xnaGYwHI8iLYbDZAZKZy4P1RlMNz34UfT3NxtEeOBaY7pKc0MV3C2wEDpPwl/VP2f0T31sp79VbMj2WA5DaXnYHBW7E1pObihozHRGbv7bSMGnzP5wQNr5VPcljZPNUetShpcuI94ZSO2h2lG+KSKdQ9necdyPfUUzRePnzWYLTWzoQb0MN7jaMj+iEsBzo7fctREZ+sEPmdGcVUlj32EmznrKguIxqbOfSZXZzW1l/B', + 's7wJnh8AOhuFIzS/G6WdOa32wAuqTDOspOWyVoN0svKUbEOK5QMxTPbighslx43C6Yn6MCocjH78+5j2DegTqYcrqUl7GA53Sg2Y0PtDZsi45O3A6tv7hMbj+8kNVp6VdOuTa+btOEX+H/FPnw3nM0sMooJjx2gWwHffXFCDpE52pY42+rNtsdIUJZZ5j7gxO36Rz11OCWgZOFk5RkvqaYsQYph0Ajj+ajfaIYFTv5WW45sraK35qkUsNhlXzbIaRw==' + ], + [ + 'WgbFvuCG8VJJ+xRATn3I5qm6Qmr/iaEmRL/ks9Dd7u0=', + 'xHrGh6B0pG34NzDMSc4L/E/5JHNcMMAd', + 'QYUcmEao4YmsjNNnhg9slBMic/3DsONSbthuJkr33QuqLMAj+YtOcj/LHD3pkY0tGLDPczHC6bSqgr6YH0Ge+AgeolmpPGLBwai0/KqfMkZ/H0FwDCfD/JUv+L4Foul4xi0Te2r61FF6Z9VNDwZdIFIIxz6hQYuB4Q9yf5OyhHpcVB77d02yf1NZPifbkO5hxTHQc+3rBIy65C/4eSwaDSyL5qylgIxqoCzz/CX6j+NRzQ==', + 'ORNMBXcEQ8tieYC68URnav+8XIXO1bZz2iM4c6A5I1zCt/grtve0GXG+wvhdshlBU2o1FtCcDq05kHJwng1FIHyPzVufRPPRLfw1qb9utKP0lBz12JSjeGSonA7Amouq/2X1D2RzhZ779anbJOE73nphL1d+KXbIeLK6Ne2htqYaHj7BPnHICrc1LfTuxfDTTu3F2UlAV92NnixN8j0pG5hUnRWWO0ojqnkNeizqwDrXtGOMwcBuqviq6u6ZX9JfYzo=' + ], + [ + 'oBwC+KytbbOlG6Wn48oo7wkErlRE26rNPSiXP1zl8LI=', + 'N9K58RG8tA+/JKd0bEi2RWARnYszOwuz', + 'LDoKCLUgjFsdNd9hx3afmk67rZCwZFZtmEvYvdXUyIC8AX0grP74jEG3FBZwnrR0eVqsBCR5h3BVGrhgzU1RZ9+bMx9RXtpip0QkTQSu+peTCrm7khX7fJq2uKGjEWoy9Lu//sdKg8W78b/PZEQcYs3plhk8VbyGJAOlsPbScwJ9wpe+a5Rka0+H6qCucORPm5sRE7JR4zS2IC1l5Is80+LkyG6srMrzbP6Hn75HK+0fxQE=', + 'MaktmKYnONSNNharzu2BVD50OLnDkOhnwhOANxM2BTaqGXdqPmmFSY36qZveD90wO+vZNHDIfdlT9MbQErW+LEgKOajZY09lQuli6An8pgZm2tJq09IoLgAEfyGcFIhfPfPurPqHqBelT+DYG+rt9l9gFrcZ0OWr1esCWy1tlORRJANkf+LYjB2HXhUB+wO3dC7T0fzQNO3BbucBCc/41NktEGJPkrsdw8zMQ7j5fSHeUyqNXbBfIJWNPJV35fLr124y' + ], + [ + 'Ri60D2TvC3x+sL5CpJovy+oWzcyGdJg+WV15yoiQY/Y=', + 'B4Go2oxSVvS61aPLSBE61XYbx5UJfdcD', + 'H507ufg/kfUvUlmfsVTlqvSBcXZNFVyBOMbeUozeqxCK2PghT79olxzb1dq0GnHOONsn3i3Jw8ckhYu1JkvDGArsoTs7LSi8tVDmwA2BKXZ/9wiODZcKIbfcgPcgaaiQuHClzZCDrFMsG/o7QHLfDu6pLMwqoPIzz3zdlpakJHD6GSwt0JAjPCjNwjVt4aVQAqdJJ6d6tMHDtLeB0QRJZYNU5Pvuk3q7ngRI503dF74yxJxR', + '6ZS5EC1/Yj0xLYSzp3pTmQH1U75Sq/ZHIcebNttNxeHulAo3h9UIChArCvRNzzjAHAE/va/llRsVBgzrlj7B/6JfAQAlTNz0HL7iJFQbBWx4T5kp4GtSbpf6m6uwxaoM8AhqQG1VSaGJDBb+YpAjP94XHYtXCwLSB1eLw1mpu/UAK7SL8zpFDsjKWZS/sXVLIi1jmrEaHRpePsAOKbpxLQgXTE2ZW6U6SJq47wHCuvaaKYmjrOFrpi89LFhf8a0OnyxYTQ==' + ], + [ + 'jcFpUsA2YF4R7h3cQXZxz3xfasy9dhudM9GWDlAs9Qw=', + '3Ifu5QgKZvYmK7cEq4D2o4AcHTZVZoYB', + 'BDAfb/gaxd3RByFK7XFnuNUiUvN284iZQV2Bm1QANOFZJylDkXAzkGSaSR81eo4DFCdSr0lH8lfDJjKzylRYXqMwA8mASlnYXGrsO/unBnMv0ywOxKt/CaFhSJIt0U9YD+T6791qYhAwU7UR/fy2DR4n61+RigENL/Ecf5mCUPTuhxRNZXO+2+f0ioF5y8aJD233jhIE20peKFxb8wvYiBDVQSkCoaS3DGg8VOuezv6PrN1/Cg==', + 'CoEj1vgc/z53YekBMTZRFu4MK9hLz3bY/I1gY523g0yEJ+blOGtZd6eFowmdpTHzBgpl69TQ8NbzpeSdjaIfUfEAy/vTRVg7RnjtIOdYfHrby8tmiKcl15ePYN6J6/w3AdsbRx8ojdxiAj5BFvm/j3CUIMwuCFStEPjmJDgo07EHqSgkD5O4IaZm0GVf4BqCCFmac3PDI/V6/Om2Q0BBr0+RhnL0dUrXtY06L1vf5iZxXDC+my2nQ4PuKjs9aAYeo/EXbe8=' + ], + [ + 'Ek/sQEinzkgn7MBJN8NCBrIVIZcOP3D39ynWwkrqSrw=', + 'cwuuFOB7Lxb9J8jRdSki3ltgliDFU/VD', + 'VrYJeR+8yaugZIhTiFw5YYeUfFTs0EoBqDryiBipyFV76EghZMYZy0dO2aBRq/OJtrrOUR4ilGxCtvr65FMu5Du9og/R0hm6Cr+WcyHuYp7ruPUxxooz+XIlMfUCMMhZqMnAlyJ+iSPPJC7FoxaQjeVBe91Peghen90ybdSNKmT5xavlPC2nKbJQPbEIacBPf4eTzIKxeWoz91KmHd+VRXcgtzo9qs/g3b13r40v8mkDkQsyJJE=', + 'IpWEGmBQdHUAzakzVexrlRlZXMaQgQpNpG7NILGpKc6EYqRxooGt/H/A8ouuiTOSwIDwba0H37oPat8KAhjZZM23OdZnx3isXavX5nRbdqwoPE5O6jXKT8eqvvSUzkBKn5cFyYvJ3hhRTA+lheDk/kJB4wvpf8ReqSKV0fIdU6SDP6OuQW0xVlPnrz2h609+H38lDxzikcTWZZsA1daU0DQavDS6MzR8Cmq5F9DJpaqfAthM4Eg1LC0fJ9VUPnXXYRND9sR/' + ], + [ + 'Cjlg1kZMyv9W+5rjpIHvQCqZGkmKy+EtSBmDxCPBfPI=', + 'NtguHcGlJBKaDU7wVUStYlQJ3n3ney7C', + 'y6J7dJpxeQzw8MqFXzDo6VJoO20f3ksojXYr+483OKHHu081GK1rfAl8SKTXFPS7g5hrPyPZ65OYzvms0BxO1qLwnhEIDeA7TIpJhhMcotzrS7surd+qP1K11PCqPy6bvZqTzjVpoH1Xhmi73lr/TxEqb2r60Danz5m7SbHSJ3klslr/tk/ltH8hjY8m0V1HKGrv7JsX63PQRBFzeRM0NyNygjVaFb7brP/WIQ1yJb5UCN9siie9', + 'Bs9Y8LC1dN3R2PAlI+e6WMIdKUTCi3meqAD8WCwIL5YGHJUGco2lx9T0VDAv9BIlrUcycOOirtAJsLSLInvseSu701HsasJDXylQhqPikkb/uWMe4x+abbMPPJbyItZQ8XlzW1ZdTGZCVk2H0O+gspd3eP0V2OowU2vqvJWO1DC4tCVfNlQmojlpdMF/SrteKomS1SvngbUouVxnf9BFadAyP0FmNTSrUkHSxAmT2SqpRGHQSy8+Hh6Dhu2DDlEpqGO1qGw71g==' + ], + [ + 'vv0cLAGXkyxd3ebEFiym5kZHtEdMzCw/5VgUUEYNToI=', + '7p4Wl1bv9Uko/ZceH2UCXb4OAeee2ytP', + '28/Evkx/Av8cNSfHjGl3qZ4wmxblaSiN6i5OR409l5smbUtmgyVnMNIAb2VIoM78VK0pOWcothZ7Xhymh+5GlH3tr4r9rT0/q6mCZBV2A+OrFhSC5Axw4/2LOztar1BTa1L/hcbrjKtC8JJ7a1CEV5zmijUf0b3fqzf9QH8Yaxa8Cqd8VB+rGR/DglJVxajliiCc9Y+K2graCS8HIH5I8/SNbaO992Y35lAC6VfpnHP0+TPTH9go/w==', + 'TfuwfNMITrSMoATzxafcdhoF2e/JlvZ+nL4p/HLlR+sRYW/LViJqFc0ivs88Rzubh60dQkl+befAtxGDGsmKmKQP1kpC/EZy8Dr6lZgOUv1EvzILZW45+gZ+3Tb8yfomMJhSI7iI/c7i05M39LeKp4J1J+dQD/zViR6roDhrIOrMN5XWF7shCwupoJbmKV39KblxliFyV8NaDEOCHtPws+b4HAM04cXNjMFdvzqz87qzjF6ulOscatdLfMo0Uwym91xUhlWTbi8=' + ], + [ + '8S+Ig+NSq9f1VnQVfEatSALpOz/Rlu2GgzsNRjuW0iY=', + 'BzOTH4Bnu/L4JSQkjWppYrfy6mIR/9oI', + 'fh0Vb0utoBY6cNJEGO2zT6bQfzmMJwtL80Kbt7t9PR9ooq8BF0KMGIBJqHlMnRLnA+TFrf9ep3rXERYPsJ26wQZGgAJ/2B1JmAZiqBf/NZyfSmqYUT4bYVjay75UTbBmXdViKqb1OrYsgtkmHDVpfwU+DzbyyLp1hovtq+ks0fIDJ8m9zxjIpon/WZx3XrqpIPsJRuAVcnUAdlFQj0jT9P5Q5Et20zZLNPMC8Vpck+A7TS6xrJvZKqk=', + 'OMoPHWryUwpi1jm/WwMHy7N6frJBeu7Fu0h8+n7zJS9F5Rm0WjuYURBkd6mU+Zp/vixSK2DSvnLnv1kA/JZuykr5gNQQi/aygsUNCS7cKBOjaq6rIIu2AoTDIYu6fCln+0QLqpzs8wdu3CKoMoiON1PGy/G6CYom+u6EeaIRHQLCaYliZZE+nTlJd/URvr3dLlJ1yBToQw3gV5Wv94u3qw8RhzpPjsmkWKwMVV/yxkJm3KHo/keg0l1D9pQNua+xHQPorTfo1jMU' + ], + [ + 'DTy/vLAXxnpsjNkauLbtMAWN8Y4njPAE5QVXH3OG37k=', + '0HEpit74hf1JTBW59hE/Mqe3c+TbxIex', + 'PP0R6jzEHIQyiBqUKiOKU+KbHQJPnkpQjkstj/HLL9KAstPrJ9MHuWugfpA80VPEMi3/kU01GK2Et6bcYQDU2ZePCCWg9iXXsTe24yrtBxOMoZpKP3+NuEcPUQjDY9lbtE3eU8O6ovV7avcnq0znfNew6xYVkgL3BfyxLyboIuqEgt8YgN1XH/XG8616iQGTmfJhlIpju39F7cW0R8i9qbIGxXiJSnzlGU1hrAgDpdWSblCBs5gYhfRL', + 'hPRhTUMLyiROKEaawhPKPa5emlEslPBTAkrdiJdW18ji54xQKUoR/XDvnsnIrskS+CBmy2C921NItuc1auO9QB5hhJdnZu6hLO1i/Pqg/37++7JrUEN66iQOvPF7CZHbfikzAxCVolorgKpEW545Zj9iGlBQSS3+kX/Nyo+gSVTFYN/a9dN4MaOJvpfK8U/8C9W0fkEemlOgZXWiBKuXpK/xaz3ynRXqz5WbfP0u4+CR8NAP5201E/zI7pDs7NRwJ05nvuBsqZongA==' + ], + [ + '6poAWfBjzJPLa35C5Bn5lIqXN+TbvtwCttSNmNK4Hnw=', + 'Ob5vZq/CFLJU3Dz/8k8NUQUERMQH58nd', + '3j0XuhPUoFIA97KpYYMc5FhVYs6R/WjWorkBQ5Q+Ajufitsebfb6Zl+oTcfMY5OoUNdduDU3Ua8LMf5588H1K4UM4R/N73ibinHkSDQPvrucJG/dVYGFQVEQZgrVznBNSj0GZqOHtzFu63Wy4WvK0xP6jqcWNKtAg/px/xeo+2dDCNIHp++7zrudyCYa3Y8gpA8j6XAIr1BNCqwwAhAq9iQXGqUMomyYRS2xJ08AdvD1QrQs70HMjvOhYg==', + 'Z0k+iDsfUkbm2dhKLBosvJNoLGb1cf0Al4T2rSfPMkH9zKtf/AKomwh/HvTm37N5pOGBYlvH7F5aZ0jBHmzq/GWW2MlurzVvxsubRskKv6WIdiCwwkkVb2IueNjLZ4cf7+QsG8kpBo2XXtOhhDgoI1Kly7Dwkcwq8qUykQnK1tLujuZR+k5GucSHRBF2GuUAPS3WnkOL08J8ScMJdo3rx7TzD7X9fmWgIibq/fvVCTj0WfNxS6qN0EMwTDaLea/Or/fXGVBhglIQKss=' + ], + [ + '7K2FPVmbwx/U84maBrewCROa/Dt5D5SJ93WLQMiNB1s=', + 'LkAsPNiAYaQeiZ2ZvToPcX/vCDvoYQXp', + '/9VPBAU1IEpXZOlW6ts7LysmF/3QBymwXtqGVFRJWgnH6kJtLZ4qO392KdQm511MVZDn/as7JHXnuSswf8AUGFhs0wXLbQ+ZwjVkkYdCX5w9FCEOeSx49kVdQkEICiSSevR3/8ceuqW07Mz8z0/GHSlCb6ah2k4faYVXyOkxz/k9lYYKKsjN+ZKCUew1Jgqxz3900nRVkNlltYMhhE/I2XlrjA8XwlT4/iQwPw7DtisAKyltuRKGLDCj1KY=', + 'DnmshHOkqnvo8f3oeN0f2arA06809iRz4LOPz8CLELLWxztqDtxRTBxQOH4XZLECGLxi/IMXjcG0YI+VzXz8YBrn6Qhd5lXooMlUWdn6A4ZCmzsyRf12qtCb7VhJcopZ/dphgx1I5TL1G+aHZeIDq4QgeMorP6DZJu2U5j4fBdey0RP1d8hwod9hjW3vMtOSnsEDEDuMsIuJimyWWhmlqW62C91M1OtmqfAcc3TkRVUvhqjjfeXPzeRzsmbqOD3m3talDa2MwXg0EDIQ' + ], + [ + 'zg/hEFuAUnploNlSQ2qvyAneVcWJ9NivhZSR41JfdgI=', + 'eIeTkKtzJuHogTjVKre5fv6sJYCLlNGb', + 'G7G7FLsroR5TkisIWljpvZ2cjp18yVxLppO7WqO4iH0gHI+VsdA9j690cxbS5uMW/A3xCLL4A3Qj/CSgzFu8XI0U3JyTVCRC9uBBivBjaujWYNGeIh6tCzQDyt6fBQ81K7zuAb73g6FtN8d7pUQG2tfdjrap7w/tgJQfEIaZPm8vZ+T4Jg8DIDQtOOylfvcmBgqqkVWmW2s1Nf3yiA4LuAP53PSD8b2hjGQSeM6H2yD+TWSmZ/r59OCTfwKy', + '4KJolEOQ+HE301XUzo0YjUNePN3/p1zBdybyf5HERPtKrRs21nAaKpfzuEh2UcuCC5ZK/SfBTbaK/p9IR4hjDIdoqZBAQddeI9189MH6ncIeSyXf/60ofoVRNZALZZQ+bp077LmFLzYLORxEW2Wt/zbJrRpANDdbstV9jlQ5i4EHjdDEpJzJCNeVBT/OfvlduneX4NZq6HRZRzyxxhLjc/P+bvGjxmziHSXzYr8QCJmY+DH+NukHnDCiaBQIEMqmbtQ4wXbcADhAPzisxg==' + ], + [ + 'e1X2TAOvKD3x7gj7tK8nvY7Y+ocPhztARkRSrRxIcEk=', + '9L8JfGBafbOnPdG8wY7B+4Uq80x1OGxf', + 'IEvWjmbENLfqf8E1SC/Wwf4tz7oBvhK4fRlSNNNyWVGH8SSbN9bKUyxyR+lzd6u5LTVtesJok4qiKkn/Uq+siVZOUlPVZButfYVqKqwZhWhQYnyAq4ye/VK2dhTLlwFpyY+z0dobmJ35Mb64iiDKMGWFqI6jDOQPMPzOE+U64LVRp84KkmgE4y6GHMZ9HmAWJPDyrPr78Dx1FsEMS5lYAdf8+EvVUYmzVjGRJLOUYsR8s9w4YnFBZJTiw7lnqQ==', + 'wukLCbpWLjF5RXjPVu+x2FSgj9sYMCjhulMsdQcqo3W2KoTkdINNCJRTKI090NdeHQtFuvEPWdNzQuO1bOWYC5zTWBWPpNkRXw0r62cAksfO/lD4IL1c8Xe3lZtUidqZ7oo4dxRobBeFUqX8hxiTxrZGtmC/9+wvetnnzKg/JxkwsvyEoYTp9ODGRoNQ3L75xzesVn+6i5ycw/+c3IwF7vVxkhXsguW92iZT+ttKtxpS4gJhHDaoBlWK52CfdepBwvQpgHiChdiW4P+EEVY=' + ], + [ + 'IX+whgqefHnVry5P+yiA8TVjMqZtOGAy3nVwLRldQl0=', + 'udrVjlz72nT7U2eMB8+jgf90+zWZ6efz', + 'XjECYEUzrBrp+dqW/H+WBJoa3Qy6jP/wvDKXF8SVJes4i51a1jR00cT7TTt1vUuogABnR4J9KVF7qhb1KTgYAvsKniKsYbM/Mttuct3v+CB0y4mU1MnIZSB7qiKFZqofIhSTld13crytDIbFmvMMIjLnVCGeJ+Tw8bQAcvRAH7nVVxAoRBldYtSYiVAgYDztD/xa2dXQwQuNQpos4PZoKVc5WEoL0j8yf13MwPqKKwkho/zNNwJW1mYJevpEfA8=', + 'iDZfzmYRHrRMze3R/kwDAQKw3ndgYs4DrOwD33XAbMbJNAJrd428+o4vDuJcy/ApzJqwCisHj+7H4sk/wOrGFOE5U0XQIKkuNxSSn6rPRbMSLbHrY5JNLy894ZqFknvIDGUKP9Fw1yLdtiE2TZ9fr88XoR5HSuA/xDrXI84Ixy1oWwsYrmi9YQZ7RpxfDotJGAzWiQmovWIAhXu37WyNDZ7z7d8MCuJJc23rInTJV2+3Y3Td6dTpGUMnsQp4vSsBuQ5/hpnS+xkYoxG5Al03' + ], + [ + 'Kv0vArtz6DegJzxUwJepT7BPNDD6fY3VjYoezeVytYk=', + '8bt/cT3QTE6l7w8NDx4vaFkkfcaZ0yYK', + 'jdTXbI5s3GKViiLFPO016zBDvWEqqxvYB4IV26lBTv3iVRkt2MtPKDfkOvICO6rcS9K6AQvfMbTW0r9nve1RWp082AwFnRtvCLOwQ7lq6lW4J6EOLmuiy3+Po3q6FElVh2H5Dtljujl/z0i4RHVCNLlQ/MVQ/EMPamnqGkSosRvte6eCPMMGQ7a3w307szVXWizBKsbQNqTZzsgNu5LgZzgQOiKleaKV58tfcNmnm8enO2EAeW+Lhc5G40f24VDq', + 'oRYuIprCwBK7kAidfNjpXowPxTOjdfFYc/ykS2/jDwcgkcHBM2RiOOg1+BRPJSAk1SdE44rkKdJz92DDvAqQ8qPQ8SBFhO+WoERlplTd3Jf4QW37WpPmDDd0t1LDfIZHvwuXUZnYorZOdHPFsZgCXolubtpGaYI1nKDv/svXAT89pl0DVbbodQsOduGx8bPinexEIoHdk6aNd/4HxVOp6rnuPOcgmTj3dsgoH6rxCJQ3QbkKE44JZJDLehjM60sIJ2cWXPJHqPB5QMB/1VHlKw==' + ], + [ + '8Jg2ld0bRHrBb7qAOTrpXOoB//OHypdDtGSc9tKNsTA=', + 'AZPReISY55JlOOQcpWKw9ouL/MGcdgPu', + 'vE6FcqV/K+HYX6+CyVfzG9kLso/Kd1C8p5qtq/hJI1B5m76V4To2NVc9ir+vTVnQxjJfZjYkj4uchb3C0szfq7D8p7tNfq2VeHtbxMD00zuyVdSZbHSafbh4uF4vMADsSRJf5uTgWjtg49trXCq9FC8x81ySyWiwpg0xPSwQ77BnY+qtJuEDMthLu6eGksUUwzhgdkIQM4nbd9VRdfQxp2ry3u9mrMumJYKdznjfA+PnBbwAtQF5pdVWMKks+8lZ9w==', + '6usEwPVv+ufSbQLWFnBm/zwnFo8WXVTerom/6Dy08QvDvi+W/75Mq4rkx7g5DcgcWhbvDQdS+bqkQ9U+BrxbEupbesTSW+7M5NLIqSKndB2GH0h0gdqmQD6QvgihOxvKJHBTnhQPRvdLjksaVJd7NyD4a005FYfDiU0lLzURq6z5MN4NzvQiGNT0Pifd3BylYg+fIUb0eKaTBq7IXFafeIhQTrfzQ3KvT/eIx89KWgCgt2mG5kaxOQSvlpQPB5rrKE38YYt86kMBoDIYjQ80g8I=' + ], + [ + 'ELLEvKV1DbVX+/8YfaIXyrEybQJ6QKJpwMMbQWMXeVM=', + 'pahloyPU+NuXdoKOoe9RIX9ODcvX6ljx', + 'dooCxdkHA8xKIhb1f7ocYS/s1KQRgr0bbgJRnlWUmye+QO3wPueoKas0Z4o2zs3mpGoYaNmyQMvzNn5b8Umx8UejgT4nTBKeG7AupEx6lnRJ2meuf0yOShJdVtKR7mZlvCJFzPcXd0dJIgjlCSeQrHgwVkILAWPHRdRU9n6eJrKMICnmasVldac8OZ+6Vb+SsdZQQnzsB5fjUvenFNqe0VqlVE3msHnhgXH6FisLIdyo9TecPVeBDpdHD98V6sraUmI=', + 'TKp6ObLASbpJ7hyDbmjEXa4cwITTM4eYHvxA+IQVjpNdaiXPe9ZlR0ahTvN+auar6eIlH4zuSERhQ6jnNCE4fILFTU+nAd1S+e2W9Wdh9NMIcwkU1/7ry+j1yCHZjuhiklLneenDmQ7GM9PG236nBx4rk7sd2KOho/NX9A+HM6aXXTFOFk6thkm5mCT8tTZMEVwuQrsUGMueG6ahn0QBhTnSsTXiHnQCrqTcjNp3YqdHoVRJg0yrXPh1oajF8jUm+PBd9d7+HI/DWSay3e4PYcPZ' + ], + [ + 'aDXkPsRgwP9/WXhC5GFb0XQ2afGQnmPlecKLEY378cU=', + 'kKxrKxBFjm8dB1qYh+2n/GRjICcVkEmW', + 'INeEoAb2kEs8/ETxjlAHaCsPFM7/JWkPZ0wI8/fs3eURAH2myEagInPg7DbbDpKK9J11DAiVWOnvnO79B+GW4ptAEnc7jrA9Z/+qzYuxP2g/LJ0+e6SxHA6exdahVkh++BMC3bUlUoPfrRMZz77X3eTZxTnuwLD/1OlxmwZ1kQe/ZHfvrwlU5eBNDY2csHwzGrDhcEPH1ZzRVsqT2SihsCA5L4hkIQUM+w/Wl9w7wH+wE7ZuIkMvPtQaoG1s7TDiEENr', + 'kETyhmTnXIC7jpdwnk/gvuYBZgwEI7QxL3IbdkDI8juXapdSatf4vNECJATjVvV4oPhnhsOZVwUun5vA8dY8+oj4jTwfhyjL4Xhp5Po7yRH6/HRLq48ig8HJ34xU7O/KtHC2H94wMyXLf3fgmgCozv5MsYJEQ6uhTWRhL7sSxdFZbvMe7Xk5VenkPW8Ivo2Q6swzjNI12W6TudUjzdVDvW91Pk61T6Aeempik0Ij/td/nWu7MFouuXuijLYkq6xXI/Uz6sUunSyTB210EvqnQ7Sp1A==' + ], + [ + 'G7vKZDd8qRFUqe07+BdukMotBLALiD6W0BvUlUmjecU=', + 'EBYKeYjBSpxOjbKJAHB1e3EP7Nnthm5f', + '6kBtLOLXoLjX3o2TcS6NDPoxm28Oiu9UujEXb9KUzvLMG/mm9DqwuZYUE3td85MP8rp1Uj7l/c/bbsaQlbiMXtl0zzmS8acMirLNaNcRWSPUOMKuqrIaLGmMBuTpVuYSqFdDJ7fDD3zisvCVg6m0dedk4aX/o8mku4gr/kSW5UfAm84S0hLZgB6ueSoibSKQ7qS8qkkazoLXgEiI2FSr3YcWunRu12+Usjb8chB4E1KfUgbD/vMCdgUqMfhLQxfzmmcRAA==', + 'zglCcrRtfrY0WxpWW2Uv0qWGSyRWrD5S2eS71+9VUV+xWJcsxL7e4RZlhrqs56aarcDqX6z+JuBb1kQuLmdV0YWC8ixq1MU+QStCDj50nkRZMyI90Hui1/jB8a/WEekNs3BfsOOjFA2J/Cl12bHshXDjKf5yflet3jrunDfe4nHXx5HZXXafOJEhyIJ0ZHuN5DPGjM+j/KleI2N/nDczV5VpMle6z+KSX+QcQZVC6j8n7kII6n7boLPc89/I7BrPHNAWH473Lo4a7xCnHVl5Sfzdn0w=' + ], + [ + '8gtBlPvC8uvjxtVfks/RRp7VuBQC6UrlbovYagQ9CeE=', + 'CYuUBpzKBbVPzqDjKr1eHDCBjpuMb1c/', + 'ZqXqTdtmYCQhP66R02aScWgjlqLUUKX0DOeGKT02RORTJp28KewXMTHlcFtOtAV0e4G4RKrDXb6T3RylV1v0VAmKjrhQqaWk7mkoYJK0b54TnF91/cHOHrJ66sR6HwWIk4S5hcXdwnwVEHiSbuYe0SKaadK14K2pA9YTl37pb5uuwIskoMMC6OzDtv46fhnIJto3NOGrl7+s106EqcWCodxAKlkPSMHMMZQax15rjL08pp3Jlm3nKiYO/CqVbYLrsaHm/Pc=', + 'lVVgmdFmLEVh99ISAyy5HEblCD9K90cQZTHAkSrK75IQ7txiRBKycjroO/O6PyJRT42JJIJC6z8V0UrclmxZiOCIwVIzpyoIGtfeKEf2bhF1HCuDgRpSeI8olbssqJgnQO1iilbpgk0vXKlXkqMqlIHbhHMT+/CpRylKHikv60GVa6zsx3MaSVW+F/BRzfcB5d0LgbRQCX/yialY1ojcAW1HGMgi3LX8EE5JAWxHbOvLPc2Kqdapx53NC927CNrCOb+YkWHZKrN+EXPwvE19+ZQwytPj' + ], + [ + 'A0nHRf/NRWJxPVW9GoHXsd/dkVeZ9g1egUsjIcm3HYM=', + 'PjE/RftI+bRKnzB8VbiEt38KtMMacTmQ', + 'nNsJ/f6JOyjTlYlXMOybXWoWwMu8mSFhxZpE6rRl2SYk0YgX+bhYCRsFvnVYOKOr5BwsWrnAM9Nfrg36viGtvHe6XXzJ10rvXw/AyUGZQ0eCqS1ifSwU49d+uXS7S1MswaVuGwcOQBjrCvQ4qIuaGXa2NawMylzcQeSTvTVX0B8b4uml840GLIaGnAc9inqkxsZsj7G8IUZaKti5ok/pq5TJqSIATjjz9nXUISuziA40f4RtAyLR/hn31RKj+fEwHV1WQJ1N', + 'Aw1WyG1v6ZYPnjIbBYLZsDdfKZGaj3PfpB9h7C3f0mgpTisc5nbfegV0sNVTK+oQnZLaVqfVjsPIgdfx7+VQQFRDlscwpfxhcxY205tIsFY+JHMUSMjoSSUpffMUn9rFqdMjiQhi4EGcUpUmWSoG/iTHeZ+OwEmrNiUQXAa6UdfGXvWa0ZB2ln24HizJVb81CTIjiGKjvNBI+gB0tHMdvZm/nGm45R0m/YGkuIrrSs1E9kTraxbvV33BMhAWBH0xYHhZ2/pOwLM5WNK0R8QMWdc9yuPzjQ==' + ], + [ + 'Ao/bpDlb28evnA1wHSbnIHqnQtHmMs1bEa/WhJVodsc=', + 'kxr9Gc/30dAQlc3LL/GIxI64LKXu6u6V', + 'OgAHt6unmKYgpkJFELrI0ZpSG8AuJwa0lYmDhBV2yypR7yAprsytfu7Mt6k3zwbLd+LzjLGJWSI/77HoJgjLw3/15fGlGUSBOR711ufB/2nmOw8c/ZuafOLDCq0Yyl91VfaRqmqqaPtkUfQIUwC82g4L0rLpNSnxTB4VEI7hoUb6DmzHwcavBJkBmmAqElPi4UH2QVnra6KXq0hwq0Wm1aFMCmDkV9ITttOtK16gb5+nPFy7A60LMTOyPw0X/56B0emXnr/Hbg==', + 'GfmZRnuHZGNjJ57PwquK/5m/yKI1TRTyprPPcH9Rw+HC6DRq8fjba4aCISCiliIW74Sy1iE0FuMLimjOliPcsko6J6jjQXIVUURY+96bi6OoNgDa3x2fC7Tf4pFjabxrCNf9sSOlJH0q62/OZ65hltAl7YB2iv16OEtVrKhIAWPGUnmakRacMZN9uISyZETyKjiwnANBnJWRJoW+N4QjkiarKFgPz8YfECF1Mo/jwUqxzHxWGLfZ4QBESEVEQKV6r+604ByyiNC0pspVTlwmXa8PPvyU7Qo=' + ], + [ + '23I5BXLpTO1+fGb/Rg2LkKEeey2hLiREEpL3nm7QMuQ=', + 'mKOS4VFE1OyX7Jd1PsQGsB8No99BVaRH', + '0+ifirkqfrxLaqDWwet5qs9wfKNU8ESmU4tz3PYW0xEIyVr9eWoMLAp3o+Bn1TQi1/o99K8j9upuWG0wHQR57qw8ismbrfJHAcdAOfrv7nlcFD0D26BMEMjHgiD2Pp4nlH/CrDvhVN16DZJHWRa7rzLFpFDu0ZHhabIVmGQew9wlTXIgGffucyc2ptLgXARk1dJO7XzZfxI+F5gl0HT6U4Y7AISEnBLeNmhQsUGeHBR5/vGulp/9NANoMEM+RejM62qApyY353E=', + 'YEowV7JL9gu1x3InUT02zc/y01mrPRU79hxOxvCi96KPzpiKxQvwoRinnJRVMh7RF63lFpyaHWtkYPvg2cQyzPpuV4j3kWiHrTCqPo6+6IWksQ3Ib1ypohRN2GRgoOhTgbooDXOhdqrgGnX7XuSZ4IASzNWE7DVwdqwgiPRCp0ltLvbTtHuHtiZk2tCzL/Sdye6vGWo/r8F02MmpuDb1e9TNH4I8a9yWrYIkXAuTEjUCJO9sE9+9R1RZwUEaZke+J5YuOBWtkHOO9H06ifyivxJfQqaa3/Pu' + ], + [ + 'oJz5wsqL78uZ52oJfYivp8gYkfwtA3vzv4H9AH+ad0Y=', + 'oe/Tlbh0SxP9UNHkjW22N9xBY6uJj39u', + 'KxuTZSnt93sH35p/Rzrm2kim+P1MoxXgzind+NQmA5whimJ1z3amzVcjtBWB+8lBdzedrlv8aSJ+NmEHh/dEJfrwbuhz1O4MwEyAN4kOipoUYMwYX5xlU7sPyhcEv+fXR0/LIBdT13tbiiL8vbzcy6YgUD1oHyMJ0TrN2J1wvr9amC92PjKBsoLLL1hzvFTwZL300lCrnO4dX52OeCJwOm+65IE3xXGXH0eRTGwfwfTXxqWcEBufxawUTgUDOQcOYaTQXBltyU/w', + 'p7VV5y5SGnrbEOiNPPz11iwQkeFVmrDuVXCgUr1o4nJzUcB43Qx2z1pazjbkHKGmySHjY1yW5VZpkso+Jq0/0Orr+gXZw7oL+4Ydc/7+F3kocVN25CP+g/pRcvmUWGvPjDDH+eT2/btCAU0vxuycHYVg+N1X88cUB0b0AT2edPTlFukKEA21F6CHbinUsc1SSx709SJRgnIYHYoag2NzJHpd46olGUH+gtO5gOUpQH4NI/1jAKU2305GV3ZIqN/swsqahtnvH8ctGqvAK1yleFs0y9UNvR1eog==' + ], + [ + 'lCk5Qa73x+YBcnIAEtiG1lveT1sixO4G4reViGflb8M=', + 'mi4h7NnVTFfQGcKrfngAhZTD9TosJRgw', + '02wJDrLxZSo5B1gppnDtw9FJCyzr5zQ7ciijP2wVtyirXXyL+gqt1Jzcd7cPyKRjf5gV4Gzk2v6LQCtyLgbWSxW6WnZEHDHIeYaE0fcSx2iSMe0noRpzgxQvt6Xu3SrvCiphVLSzn0E+THYWIJRTXVcx6OpfsMtfpju9oiGsKY8vG9qHmGPZP5k0kz7/ncewE/NAjqi3pJeGORolcrdQgWqmAgxC7AJI33VufP1zXdiiL2z34dp7HNy3TkHVSLipaqQejiZHtM/t9A==', + 'QstJ59Z02wcLUWpY+cFBR7g3LY2+2nMtEssJWQ7dqax6Y+B2+Qdflg9PKTj3jkebiZT/PBCgK8TQSrSwX4OzN0DiejhdeyS2LD1J94E9kGy7DeQup0J0oDJSmPywxrQaAMA/E3fKYzxmV8vvk7EgyZzO66CvFJvPXKvY0S0tiXikk2YAVcFxRzCWt6DeS0to7PJsO8ZRP3DXVwt4ZffWYq/IjeIlUAog3xbkraYxKieQmkAvETmgaCEaYKuKYOxe2tC3/GVnRJqcWhB1uHzW0KCHvxvsycEn/xc=' + ], + [ + 'dvLBsmdaSAjYphpLeHl8s2LnnXMfWEmDcyj6IfuigGA=', + '+Sn2jg09oKtZsBIduFyFEZ7r76GYKp46', + 'gbMWEM8nbe8uJs+hwSAT8P6hZZ1NK/fatJp1lQLnpb5GjdSmeU261+V4NLBXFZvlW1pwGWagRilcFiPudvTCPWQkUZzp4ldxCiqI3DouCgDP/WSK59ZroUZh9kLpaZ430Ifi6/YwkK6xsltR3S5oQhj2mFqeX7vZhfaQQD1j1qTMIHGDA7oQiINikXULgncO6m3O6FkN+dKJAaqHcTkIBqC/5HrN1K3YZPfQbKcXvdjv+VQlsWQfZk5TC4E3+t1cUpZe870BHCvEo84=', + 'RDWKF8pk3Lq3BFYPT0wYbn5QwnXniCN0LPVAX0GMEYyIA/jGQ0mlTy6bBWar9YgUzytCMlt9riZQDnSs6Y6bMxK8xZJvZnmdWZp7JKkcejBk6CF1b07Z8YDvLjM4tZ7YybNYXeM1BjzL7weuSwM0YVjEGBnnQ94EBE6Y1CMlOgEEDctYO68umUm07+dATLaDIERbBKpid4DQ+QIQZY+Zk2TPTT/mYNnjHra0XohNwTzjILYKqQXp331R4hQY38ut3GU3TTNWOD0BkFA/IDAV1G2tuJOfYwHfNZrr' + ], + [ + 'uVllB1LFzgr3K9PsaEFiAAsk48nbxu02g8oCKny/btI=', + '4egBWHdUvEgEHCLa2NnvY87AaVJVhix/', + 'UvXz7zMZTi8LAP50VvSSaHYdCcabzihMIGrGG1I5Heln+SuArLTK73Rk0CsfsWLiP83S3VyIGrF94Okkos2bCWr7msrZFQwNjdt0xm1s/LKyJa0NiE17WSXWu09FuxhYNFP74rBX0F1XYtBEnz9Orn8gJan712sA0AVOxkhOrT8/OfH8BayEkLFtloVhBDFNBFIM0yf5KDEng/MSiH0SQ0rmeHSGL5gwnHh0FiobX3rIZzo+mPR6Y6vgiwa6JnlsV7o/KgwT+KuhmBQw', + 'Fgjk3f9CvFZNKKwCmRj29zM7ATf5gVD0Y0tupd2sSnywD5qsXiAA/9SRF94NEIiYSOu5M3OoWi05/UiaO0wRBlKIdGHtd3dg4Pb8AvT0Pnp67m4KeN0A/wRPrXwEwTF7nOQ731VDxnmvKQU6eT5XC8YDZnS0EMNYvW1qlroDRZaziBTpi9d1nLrhaOFIHkN3xhSpnismr6/GbqHhUVxLuS9MGVPpjAjZEWvkc5u5k/z5PFXcA7dr0VjnFTNEk5Tv33GAENLwd9IqcOYxhgE0tjQYRGsWdULSJhzBUA==' + ], + [ + '9q8q2hpyjhCBfvdfcSNGVRzAK706BmuDnGmFvBDtL8o=', + 'MQtmBF6CVkPs4Ja/2FdlSkE4+eC4cyW1', + 'YOletPz+fQcdQkh7GuS0IcwMramifS4DbC2MWUrWUGEpwz9fZHcPz5dDSl3qz6GHQk017mF4jK9yAhO4uVgy79oFNOPBqhvEQoaMvzcJjUhtHslKIluFH8sbJAoZMNlFoNcMgOzAQ1hkiP8pH33PMKDNr2HaZqiE/X862UdcpIeSiNn6eg+AndgXoJMKcldafDNISpUO6LmbJ6I6/UfUqyT/lpaWgFAu9ULH+7RYyLbAmxBaNcrPLp4tx44elDpL/yhXHPJfu048y/1KPA==', + '1uSjPAhuFOEI4XqYx6+byrE8D+2ypYEpSgdOm7dS2AJ7p9fQg7EyJ4Ds5A8C3IOJa/rrItndBhejIPs4BzlMmkT1rRrIMM2T7XEi3Q7Sej54vto6ZVA5FDoXUeAyUT3Kf+9RxVOQBqcd1TNfF2ddkA2FDMjjMqFeZfJmaXI5SluFCMaL7qWqbT4EsMuuptoTQaCLKegP1Vr9tXJireWu6FPVtvtU7ig0lAYprZwhsCAOJdWf9vEfmtX4pbLn2ioiEtaQebUfUwd18P4pFe8vwW9nW4Ij+xrHwHYW/Jo=' + ], + [ + 'Gj3JBRXJ4LvjiugGbuvlQS/cRviHcltF1vSPCPqaY8I=', + '91uFP7cr98CcSDbS8d0safhD4Sb4QhHe', + 'HYcboUaBicPrDsS0mLjp2/lkOqVoUjHsilYyxVFW4NU2mWt0CdzGfEufcd0cjwXlpyWY9XtMJDBaKEplSPNvJUdpZ3E1QL510xUXtuthyOy6+xW4Rgv8hvTkYpqZEu5SmUW6jCIsKp9Eo4EP2T3MSSQnApVh6d7ess7UOJOm5USfd7Lk3iEnRBHucwd73TJyC+4m3fDzYFN2YNo5VjNf2bw2uGS/HHKvk0wFtkj9KI4pIesULmzXxD3i0ChnX5zKs+9YQSmkU8cma/AG1sk=', + 'QYCyVshmXe4HPm+6PM2Hp3hhjK5mcvipWtcQmYvSzKSOI2ZZXzuzeLjBuVLOC+UzYWBqqwHx4ma24Rh2wtjqj2tLJN8q/2m4es+EEH3d66LNqIGpUz57kJAzUXLrSbRKXaQxXD7SCIeSu5fzCm6ZqPOrHd2zBYgXoVCw6xdH7l5p1wk//Kj8M35txolqiW02+PxuV7QNFG9QlXvSNduuaqRBmH+FdmsJIwPkoYvC83lt/sSu+6KhiZ05M2JU0IVh4O7Cs+TPeh2+MfEu1qqvShoNPSTwAFkcGjGFN4/s' + ], + [ + 'c3pYmpomCVmb2IGFk+hyP8S2Rjsa9M/UE9eKDee65jg=', + 'yPNtcYWzljMJiPAGwdzSQ9r7nPQ/QVR9', + 'l8xv0K7idBxWuQ6wbL21yDvzb3H+Y2YqXYGJ5WV37+40tAcVr5xQWExkmT21uRR2d41VpxBfMsgevyUQspIx99GY6Rxn3ikJSPg6xT2jxyLP5CGRIatXS81RjO5ehnEeoI/YC3C8KOHuIsAJthUO/vz53cdveGXT1vh9FUKJ7goUnb3lnalvnaECdgT9mACO6QhiiM2fUqTQQLGht6yOOMJsKvmK6yhGC5mSKsjgnZOFRHVWGADaxhETtMt/nhH7t52OzWWJW9/wBjDDRwKl', + 'Gm28PZdCbzs/krRrIoK4PZbpngtoKnUcSdhrYsbf/t2ZKtjHHEtMLFhrSjIoqCjISAdCpzhEERTAORYhVJjdXiC0xKWV+fWjGkk3L8KR07qPwYs/SqOBhWE0Tc32HMG0eqyKY4viTMnqcg8gXl4mpChHIGT5k0Ovi5D8ZBiGQwqOewLnkkcH+e0wDEcGy7ircDR60Yz7fHK0GcOtzp+rfEIYq1sISfgdSXage5e/Ilas/C1sIeBXCB8+UOtiUrB1PyPPCNfnbWX9pNeQhPs0YeDJiPnRZhy5ZsYvNcUbPQ==' + ], + [ + 'HWnOVU4oDBf8JMC50MHRT9iu0P9rvJ5ko5RMhgmP2p0=', + 'wCS4+cBfG3k+T2KbW9/nmGF+IxWCq/wn', + 'u1MyK4pYaozrQCdXS326J4C4XxZhWa2EzWHl+Djd1Dsr5Pmrxfqy+Tr0yM+zxknrZ/obCiUUXUDyh7ugA7dowc8kkOORKz8rEWXAMvszGJ6kx3MKvuFpTvgaKclz8/PabETXZLWjEzb/mSM6ZeQRmChaViqwW28NrFurhsXxWTkKr5kQryLlS/NhhybOpUADmIFvZne1j215rTb51CytXreeVBj0xbx1WnCl6/XGONYeMlWYyX0aCrBOCxUREpqYEot68NCSGg6SeRz25xqUQQ==', + 'ttxfPsFk3M319dVc9z38niZAT2iaKpHJuK1Y+i5J36UbVTnyw6aJvOjUEW9Y3dSgcBJhaHnf60beUB0xsqCR/T8CLlIqiSuGiQuks86/VfZaRpbIZ7WHkwg0bCI7JqsFfmI+Zmrf/FV5TBHZUCz74XcbvdB3wPtfrj/yD2L6Yg7XCO/MLCnYWMZQL+nvf50QFOEVW8jn+XoX+TznQUmdNE9zdbhO/sK2HDwvJDYjsWQfBC9Nz9rsXl+9A8NmBnZ2YRBxoT3zh7xAEMWg03KbqyyPIeH4HGHQXZhB99nlzxc=' + ], + [ + '3rS7kiKCEq1YiVe+Hfq8W+L+xY3gAJJjYkG01pmvcmo=', + '48urI1Ns8hgkUizLj9+DPrWzUXYs2bBr', + 'jDlszAfYumcS9JqQDGpKOdAijJgDqA2A2mmrbF3LMJoIUsMOeAryQFSlaQxmC0IEDxCoTgzJat831H4TQYHb8RBvfAm3H6276XGKhV3b5tZGVITJHoX9AKm5BD9xXJYrIcepE8kD6ELh1wdnhrXofOX8hODBQ/MhejuUY9j7wE++/ffroe2beRidUwPCHDKgjtQ3itOnrpH5+g9X0423bbpLpoeMOykG20LCbw1/Be4qGdNlg2V8pPky2dZwQ64dGAaWQMCa0AMF2y1zRB8jveI=', + 'ITcZ5Wiz4Ve8eNni2x6d0ypGkpCVlRvkpNP3hdY9Ytzdcv1BHT7LYYERQxORLnZ9gjNqDujA3CgfmbuMd5NByL28DaVmhkXHshSp7/UweIBbz5VasmAmLkD49HMyvQje+TZ1Zev3Uxgmo4n/UzQnUqxIJ0xxpkf6DDpi7XlvoVh81ecpYYgnYlR7t/6ag8XB7Y3lZpiOYQRJW7ePGmJy3chy+vturAUgV/VhN3pKV64IBz71DpNj5Zw9U3ENRLI4+MkFUbWW94+xeuE/TPrpMwZ047BIL/P6h/7YwZdZ6cKI' + ], + [ + 'JP5ezuKXkCkpFEueUxK4caUHg9KG81wjutBU3yB48N8=', + '49qA5tmPNL0R/vtieIa7yqYJAJzZ04DF', + 'PDcpRiVgkzsMQLOmfz7If3+VHf3aVgsx4noCShH6U9j3fjoHEH2812BUensel8uYayyydWB5/NItLiOI6S+07Ysq3qcg8YOIcv1UA+H41/uds7/nBOpNrqTPGRFiay0x5F7f93V6UhXVqDJF66TDidJx/NebPccFt/lwF4GpsNqaQcll5KloxQGSmZKqwWvLE1YbnwkDr8pxvZl8iAWiI0xD5ofeCAFDPEbfIlEkVr3k7tnyV3KbcQ9xgKLMFc8hmPWNs/vwqmE5VWKCQMal0Cwo', + 'Vt+eCuONQZ88X/vfqK00QCaFHZtkD9VWQzaoQfBXPgTnB0Z9v8F5UiQq13R3iP5QS2FmAj5hIY8yoy//QLhPfVe7VtY6wHHGVKcTYLE4m5KVeBg3Lp/IGrzS9OlUjlUNm7npN4tb4da5DgE1lJGM7J0/BuPRc4gJI4ELPohgEoPvQh/7ssX8cT7AE5+iMgMj+eIuK1EBBSL6sIYP/oV7aw53LKAfBADxbdKY2inQl6ln4TtlY0h1VYtBx7+VXORGdbTGkGf26GTpe0GFc/M2NGxxDTnWU+dKaB31MoqLF5iJ8Q==' + ], + [ + 'zPi76uyesdJROuq7kzfNWGRdM/IbOJKc7Nu0QhKzJEQ=', + 'k7Nv8fFJciHRTfoi7Eup7R4tHRJHHUBL', + 'lqHpt9XEiWAOkAUxKBnRI1ViYW6fqjXfZXuNdExurf2J9MQXbyBqVmSBHRUzoAWKRFvjNEmyS3E/e9ZxiqjyRnk7g8z89J5trAxxdiRxtRYyx8oemfTydntVwez4Mzeskq/StG+py21mY8nGKQCl/N8MncrOncL+oQEVarGWuwnENyv1KrZ0xb715IgkH9rBC64BKWC2KasFHbYWrbKG3ChKsDGkMzqHxQgW6n+3YCn94IQ+w27XLIHMb2loRBXRM9nqrgkmG1aXo4JHHcpf3okh8g==', + 'QmfeHVrRvJq2GK5u7rXiylyWBYaoCQlANfcZptTJexeyfUOtg1Jg8TVlR1c7oVn0YAggYMqsI9isrL8rdpi5EAsBmjCLcI6rFid0EBo9hwDQB9NIRoO70UVBCpIT+OeBK8QlHt1FeO30T+bgyGfVsEFnafI0jvPy4Edsxc/OrfKz0sn9170ZsK5o8pkEaY9ZmL2rHGcYwPQ+VW6Fht3SsmBGBaNUOBOIEwblwv45TJ0FCSkDHFkMLxUeLb9SuhHczD9gSWs/OxiFBZnKFt5eTR1JN5p28AR1YqZF3J43XFcpVt0=' + ], + [ + 'A+C8D/RjArhzsnJw0PUJ+kBsUCoqZlJOQO4qhaT1sXg=', + 'TfluupfmmRRtrdSKpMwDQLgO0/o7Cmwy', + '/PGCfmPUV1d04q+GJsHJumSnoWvU/8vwqoM9+3iTpyl25fpQYMR+nYRf/l15jqC6ddJ+g2ZJO+Tp8bbA1910DGCnizGR1kjgMyacFgnAS0f6pQCtqEAUpVB/Rmp1DKoiOgA+aNpUPFpshkrtunikiiRL7pOFWkAluzMQi7iu2OTIT8fi4tn751ZclUv0soSGoF52WYrNhC6l51Exkw4DeXEmSRwuoGk6vsKaICfSenSWvKOLB6M4MYRjFUyrfeRsyZp5b3U2JBWC/o91Zc5hOeXIa/4=', + 't0pV9cjrk01DrLibqcL0dPPWHlePy7bPxfbP9IzxltunDZd6UMR9feu8MwqNPD2xg6TUVGeuuKONHwLYVKXEwBQpXswOb90KSrKpvfHh11hyqMOB5tMFmurd0Ylsv0DBXALaeWxf6/bRw/iKybmY/vC6T8blf/H2TBWUIUd5VZAcjXLnTYCkWQLJwF+RK3I12qhYlAH3zfVGS1j75rTQ9JfKBBelVJj+hT3e6EjU1XEwNYfdBg3Zmls8Jpe/nwF0sTvSOxPPuL8MCRHn3D3HjabciZX6gvnxwhEkyEx3pWq4O+pp' + ], + [ + 'hv5gOO5BkRcF8LjyBkk1Xa6CBHzjUUG74sfHiMt2esw=', + 'N2gDtK4uFfHpIPllwZq+2IJuoC6m/gWv', + 'rqo8hgbMQ+fS6eUgxGBn0vxKSyCfMnfgTgsa/2R5fknmlPHhEyfp6ja1/o0fWGIvdfBSFzcAlraW0Qr8TYEy1Fl57a4IS4pMa23CyIIvZiNXowaWo3t+4C/Q/bN4vQuTYMWDQAt0wFIKfGs+HbQT7MvrxG2qBWYHAnJNaDX5pDMIFPJE4FMuIDvaXqZmBYBOEBwWX2SI5HiG7QpzvUYpzaipNhcGZ+DQL08SkT3LH0jWdlydnH6Mr4v+/yNJth9CHQR73C8Y7/KxWOFC1hoVWZcKxjSg', + '1dWQ2886xocA3MRFKXuBCpnI0I8QgkwWez2ixTTtARu4zhx3hi9DtGLAQ6lDkC9ZONJwZrgtDnANCaiumV8WguwTuPruFvPsS30PzAI5D4wrejsuLa+dGPKLeFZKmPJaBRIjkrcheHVPgONx2Znkt0nsc2psSYBS6htHLXXHvryMc2dzq8l0viaED1kjiQO+Q3iRF2Cqq1oS8C7qzLDxSPekg3QJ5m39RWFyySpHivIyoqV+i60fgb/fgl2yIS1/r6HYs9IraQNFjuFxVZa6FkqS4qDMGwgzfX8MCEjlp0Cyb0CfrA==' + ], + [ + 'uNPWuTmnXUHi302+LhtAedSJEiruT+HsjPsm1eOaC6k=', + 'uo1BsPQctN1TqJDRipuHzecbHFBUl3wl', + 'tHMFxol0x+pFn8gHmLGqHl35gQpAtxajZg5YorgaVuSy78Q714i6GIgO/NjIPcduDJCQVP3U+b9PCYNR+xn6xb77zpmd9Zp6TMXcWRpDnKLrakAoPp65vWAvpj4XaCHXFdnbGLtQeMen+SSrAw2Qrf09P33eOfI/9raoMH7sO6xNaXH+Ksc3/goOSGu7hycaqKNA792kDNQ5rWZddF4nsi2gSbY7pkmGN2oY9GfjlRC9DBjcejf82AeRbMlQZMXWJXoK8XVQ+isCwLaenPOD01cNWjj77Q==', + 'NnMAFXQdg6rBakeA42G1NUXLTiCVkyucmPS8qfK0/TQBe5j5YHSixHDnFKU20jDpHa+rkv9321A5OJHcP3q2jmonzUPbrORAKOBsBlgVMb8JbW1LIPGbZLrQUFQff/q4sRxpha20spmPPgoDPiDgTGcGzvhMZe2E1456SNa+tGoAJHDCL/b2O3J+7KIoScSY8x4hyf+B7OJK71rojDi8rSNHFJK2qsGhn4JrNNfS8pRaD3fAupTANPFVEa9ZihLLjk4mlRp6rLcpSIzlZe04xpQ6hn54UCaU123FGZSXDgrrv/pb1Bs=' + ], + [ + 'q67ftWKuvbgMD1BwQY8r5rr1qzp+Lj+HnXA9YUhmFgQ=', + 'JZSbXiOqaEIksdICx7SNGdZOhCGE5x/U', + 'ZQCqUEYVbzd0XnAXfkv5GPe0pGKTIKWen8p/vZvqwG7Q0zpy7TXdqBq3rLfZ01q8hx6cNx81rKkAnkfk31QE/f45MK9z15VlSeoWAh9VbMlqZ1OHEu8/mw5dZ6Y0UeqVyCG8EEJi7A+ctGR+QWG47JET+MgeOnAbDmCyryjAL2UK6UL6lFWJTVFoEOVxhzTmn8l5klk1YBF8ewpJY0ll37StQvIRuEFvrynVh/C24Krg/MKsDfuUzN7KwSTMjYwqBiaR8Gwz9AC+7GIkz8yNn2/K3aALtfU=', + 'T1BESn2d2WvDeHGla55QdMpzQmAvJX8GB146lpcCOsFcsKZlkIj0trbu1FrnaIRKcBmztD46jrrX7iHSQXoPw5BqVLWqGYGoGf1t6qfIuJMWbSvv2O1IDrtYEM10eQrU5rkogZPQafdOeX7BVZ/fiO1edC0bpp4OWe0mIhbpQWunC+yn+M4O354vIVRgGeyLNQDYbimYnk1Bgnz7fy33VEhoHT9UciNhQqYbeFqBagSTjaXGXRcSXGkquMAnSTSQn7CM9ur3T4e+LjGHWklQ0WpSgkYTSWAvczh//GNtdmnxsoveGYZf' + ], + [ + 'VvdRX6Qm347vjlXe/YhsgvB7b6qRz8cxLxsOUjxbWt8=', + '6mHiNyBicxszZPtaLlnc1M2Ri1XI2DBV', + 'WdCWc3rrwcZx/1noOLg4kublkec5lZ3tsXMLZp2ORkSLjf5qwKEi8J6OSkhxn5xI8O0rfZkJ6pDcq2nXN4WOEe5lcR9GmNDK245m1wG9q7WB7no7LQycaMJrCLUppMBOZnRXopmERIJFzSbcun4i4KHkGw5ccdAMAc7Wpt9IKbXbT6SZ1rLGP4qgL4+ZcEQbtbHrqf7N7HV3Kt3w9zt/l9QKgqd2FsgSkRDpZPdCsxdFirWf4EVxyFXL7CWWxDgWHxLJwvGDrZqbIya5CBBsZHbrIZun+rij', + 'EJuUiQnOb2TNkA68mPjpMOncWPxMaIZKCLNCxBuxCTaiOPyTllX//LmLPz3wveVCYkxPndHxOvUpwWjgYR9n85ucAvobJUqrdKzd13b5NYkh47G6ppjtDQJejJ4dq9iH4uVsbnaNctaAS8GkpSWl+3N8lJ+lMW49Y2ESajDpy0Erkl4b0yw7kFdbYucbVNCCgyVqc6O9srJIn8PoqieRgABwJfFK1U4vppeQcKhI7SkpHgVi6Dri9UU6IeC68ruKZbeD/6/hTMGLQhup53uLqSzchQZrHxYtNrlC0j5FHr2KR8ofbwTqFA==' + ], + [ + 'VbBC76JeMzg4UeNvmlx7gIK9O9n4Sx5tMERIIDj50mg=', + 'jMa1Vgn6RRjNsCDhT02Vp/Xs/V18PXY9', + 'KasxO1hyK1KyPNMFLZsR2su7nA8f2dT4pNwUHTujVwYHK369iIQlmK2ALLe3+jARbiQQvhcROyAfkmpN5LPsSYgs3Sdx177oP2kntgvuNdJA8M7nveuZ26xgrRZI9C9dsHJZGsjoyC9Vo6VRq/pR29CNoF5UkQ2u1H0aCUwhZ1vDM7C2pZJK/3XLWmeejC3LQCoR40GpafKGNFfc7SZ9rafAbWO4pC4I6KOX6nL/pjDYUqJfIkJwTkGU5Y6pcG/Dw0rhOurwW1ZrLvgx6v9Ke60ZeGeWa8JhkA==', + 'JmjV/lGwTk/0Kq7x5Fmjb+W3LtYD24gBTO0jSA49NXvP39MrGbmh105Jv2jYdUOLgdpSFRUuV5o0U2dfHwEpu1VNpDdJxL/vWYxRE1XQxgdcLf3/oSS5S4Fp2IyVN2UD4miWXeh2lkkyGd7fIFL4wUqJbHWdGNra78rPv267mue4HVuq7WLqKw8IUDeJ4FhpbSsJcmKuvt1c9L7VK8OvbG0YjttvPrNIJm1noJ8Lc/Ci9lD2RDNesEGAM2FYO2HCsavkYSMqKBZFV5rrgMI/CoJtcZw+RGgfqD+Coea1VLhOxOk0sT6sfKE=' + ], + [ + 'WejFpf7tTbMc1DCzjOXkKsDJLKvRtTl3WEWZhKq2Ww0=', + 'e94q5KePO4vIE6WXqGVH8yPzRThl2BSN', + 'xxjp+0a//iamCEP5DgxK82Fw99Usxkur1ILZYwgURTdl9/LKINmZQVXVQjaK62Iw8bJ+WiresvM7QupXzGdeEQa/yQTUdhExRZb0FairlK1ebFgnGeJZhDxFoPtcklIQnuNhxeZduAanHW2nrC5lMw8RH4Gj0slgKc3uzArK3CJ8drltiYdg1c3t2lFRK/djB131c9JVxDvNitue37GnDgfPLs3HQjpxSAh9pZYB2aKKo/aQr2mUTd95/5sKvnTQRm250JvAJ2ipHgWBLvDvktAGXKNiQAt4BGE=', + 'S6W0hSkvOn/4Gql4gS2hoX2ZNjSAvZXgRTaa7l2K6IFbGMaEvE+CMbwM9yW/ZKWpn4ZWHEsQytgG0RtuvEW+ypHxHJj1kYdPzb6+q7ktt+ZDC2iphQqhgxKqLS/oPclb9Xt6MXLOmzNsjJvR7TKqrg0AJlEhqrghgI1Op0rjL2Pf3IHkmlYC6+ngBLb8KnlBw/8DnCn9fSQVTq3wP4wliWoFJ6pI27eBy/LDN8iEcKhndsOIqBWhnPEJUlK9bvs1sBlgrJ7cWwcu8ssMZtm1ZqQu02SwECk44X2tExJrFlQtw4f2q8O91Z9e' + ], + [ + 'zL7wWulKhz6hXwL6rHChjsC/O3doPeMellRwm75iYDg=', + '3af8SH5IAeDYP6nsPHlpobIn1/A3b1Gi', + 'sS9oAhL7G8sBdyz6ifCe7GB8Jhud/Ur9PWkSW9Q9XJznbizvFtR5mvfhhlG/iYRI84iaXVDMtEFvzQpDsFWhznhoZ07nJazjPg8XXK/KhVbuZUgGC8t4g3Tosr6pxQGcTDWq/O9Z6XKLtqWa0YJHM1MbnMrBcslJxC5QeUKijdsnDCAEdWvA9j2Q9omrnT+OT4odT8+EXtuDjLmEH7YgHTpBgJicOhZ54TjXzXu+n+0Bo1C8ie4pjp0JegQGuKJdZCBQ+kQo0K9qaGx4BmR9quY9vsO1lLI3BMGu', + 'xitlx0KH671PvdwFqWzVoGlOxkdrwkzXdeGV8NpVuVfr2grqzqOPhbCfM8b9iwYjmbR7AXy/P8PQTy0seaniX8ioupjBP8h4LirJyU2vWCU6SN7UOIvzxOL0ruzBnwetAbxcXvJFNqXndaDhVV98YbbC/CPndBCn2s4M6D2rv8+Hd857UFUvKRlp+APtGCrj+YsZbOSxHe9AreHCLqkJP1XQWJNvuIh3iMf0UJ0IPJ530IEZFQJq5huEkyUpVqcxvXPumOHZnHCOf6ZRfCFw/Bln48+ywIh+xw1GtBaqM/pM8l3pFke/PM+9UA==' + ], + [ + 'm6DUlscfkF4JTY8OQo4mE5AmqHaAUxs39rsoC9U8l0Y=', + 'YuHJsVsmgjDPul+KIhjFERMxlAzRmKQ7', + 'A1pT3iEMeKxFBFGP9+cbnYrlGN1tGYKrVDy4Y8mDBLLUYl5tCC4sRLb+DgEWv6ne5pv68kLgh6lNR+22iidDvIj8omJp7tGorWkl3Ik9TCF//2dQ4JkTs9HgaX4YEwb/mq4Dvd4uoftxkicmjhVZTNsilKhSlsE/Mn+WsgtuIDPei/iQVxKxEklYn6ZmIQ9gMakiKrCynIt/lfPVXPlXF356PvU6UziZ+R8s+sJ47qqZgpzjX/4BEMrFVYxDV9DZSXoYEmFrCSRGZCXMMixnzqAFALW6KkTXJtu/ZA==', + 'cQiV+RyBav+7n93bibobOhoLJ8iZhyjr8SCLeunqnwm7Ir7XXIlZ7jH31SebnitO7sENCEUw4386TVceeg44wmjFpF8rE03UV97pXrF4CZ9V6yGD0167EsPKvEo0wv2YUwvD9ZV21SJv3OcvEaseXDu/klW4d81jER8YDHyYfo4TkVtnxdpUM+hmipsiFas46Ost4BgcLfZSWmYtVe/i3tAInZjNN2uSfnsOl7SrTH9EWXJrvbWThAbU+AU9gd7KjmrXJOqgGlUipnqDUTbpbxEJGHekdXFWWnFB1jQCTsfQEOxCEcp1uynyCHk=' + ], + [ + '/uFn521XyloJJqkdP933GJ06bAvbgnZuiwxZgAbX4jM=', + 'BxtAnHaqcSwYHSP3CMRu3hQNwZdlRi5t', + 'FlfM7gBeHJCa41jwTGKoht5ZBJm84HzU0yvE+tqXXqh1ral4Fxt2UtzObJRt/O37yz+FoQ3ONDUdRnN+KaWWDDc8eIfmN2eI4skiPj7VQumE5Q63aQj6jUF2H662VlvMUW4GTxZAtHVMH8xd31pD+wFMVKNa1ai6I+hBZWkQfVfiSqsF+x7yQoRHjOoZOIzkVLupqsMkRPBraBujKV+o+YJliOu061nVW2l5+n2z+ysu2Tk2Pt0lJ/xX+Y3mkGVzQl7dQSSeXaaREGAc+O8a/V6zRrqI4fsHXcTahbg=', + 'up1BafmE399KqoabTmDLWC22CJ8Xx5tQPAt/ea1SgPGvu77JkDiMyjtMAqhtjIQ6AyhRrk9EV42Cc+dbuopY9Q0m3fRDtNd9NaOOliWLOh0MZ/ATGealkoI5q4Lln4UP7DHhzfTMepNZH4qF+sm3vsrXCqFAofYbCUSxXWCfWREmqznW9QP1r8ImUzF4iAGHxWJ8xUR5nPKT/TxAnIlolZ4T/nHCxpnrY4kZ0AY6d+XlAFmY0g/JInncJLyUlen0w2OXSi9DUQNLprSJt9mwwseXa2HpRxSy3sNO+84JNWRp2EKwuAMtZ6WVYXF0' + ], + [ + 'kVsIDlNld7EhQgvB1xnLJXNJ+YKl1SDgxP2UslrTLj0=', + 'aP23Q0wgmenty3hkpfuwaq3WgOnuzW1m', + 'B3GqL74666z4ZS5UTSXbVYSRWvquY9VdCRRR+NJBOZUObeNkaTI6P6qwVCCCK9QQXQl9qEIRs1zntj0pkR5HLcJlQQXGPRdWTZKFaYlFJvWqfoupiVMbZ4iUIv3TBqWbkQtBMag0Sb/3qHF7tRPUJJqiwCuQiZ+0CrvSbm+rNuzoSrXCiG4LewuZKe6W7RzfloVHzZIlVyC0DmrfMpZvBcTyEkFajmgXg4tyjoFD8jT0qEyFtVtwp0tSHVl1DvS+TJdkWkiep9rk/6T6eRZQwWNa+kEYrCpLmXjVLFwy', + 'tFy7kkb9dE+6t0jMHpJkVlpCGS50Tey61XOAhpjFP/ZMrML8m9NUNvet9rhhZY8pz0RTJLZyBKiI+w0dr7uB5dk193kBaNfaMCdhYgnW2FP0ydFbXjhLKEefM/v5JuAB202pmoUCV+FmYPQ4LAHwCjI7L2u7iedfrlEVn5mAQtStL7XmQUY5uZfwfOEFiM20M9zlzUY49SyF+hRd3JY6xVUJNlXMAu8rwj6NctHXzSpe2HEQKba6+uDIWzt4bMCX+5732Ixk3ghTtWiBWFOAxfycAPSe5YEl1Nw3NMQUKWcO8XEwJAUaI0YH4YMamA==' + ], + [ + 'j5AEDiYift+gtypnO+XJ5c7QxFXOHBUVZyA7uWvHxYY=', + 'OUVNp6AS5xYIK+l7TMJv2Oz0VO3TG1IL', + '7cX2ssUrklyAyzJqyOC8vCgGj2f8NjI9F9WbIsQesyrqIZANQsWr0XlQ8ngaSzee6i6ii/Lvf7qVF82TVgSE59+SOW0rVQPMTMTLP1EOAmB0xZFOTgy/GbCgl89dXh+jg4L1MoExxUpc6Z9ftAuNo91u9gFGp6Cq1eHheCABWZIuMjnlGIbFp9n+r3IaNpfAe4NPnBXB4EISS9gYoExTeRULnutrnwQ9Raj3KWH5huNKl7Ie4z63LFMNft0v/qCt2IJom6FDtdQt+RpEPWBU1dgTsLPdrAzBoz25AUOoTA==', + 'QPpVou2TH0uS+qzXTPg2COCJIB3RL6sFRuViRXycFGK4EvCrFg3Nzd4W58VxcIcls3qcPeBCi/oFdsI1No/Cbs7wVlAauZKNc2Bl+qzmJwQRQ/eajDPnREuCb7PIeeJzR8S5SXZLTTZ01SczuOwhq1qhYMkyQKs3fKWyOV3IUrr7jEsXUIi4fFqWN7jQxIDeNl6jctSETfrsuhRpxWnZTe8xJM1B3DfLM1ccOSx5pW5A6B6/vYOsOp6qKD2iqYcMhLqqX4JPHuQIOsjFkZRD314/5m87+GYol0iq1INVGkISJj6DWVbcESOF+sIH1CE=' + ], + [ + 'lwrxYX7PrMiw8FoxFvR3FELxgm2vl62fJh5vd3ou8dg=', + 'aR+DQOyZThvi/MwcyXNWBTtcgvXh5ZZI', + 'mIkbcs0uH1MGjU1dIbak+j9LSteFS3wJRPeDS6hzYQq6+O7B0vyCvH5bitwdcSvVkZtfJpZ19K11eMAW0gSu9IpwcCu8Ut7xkI2vGQJfcDmnTJhhuNHd5kxMn6RN7rZ2L9qZN9QlkTIBMIg7hNDWRwINTeIlYYDiljsTJuRExcO7csoxGP/GHkQMciLuopefWj23EPjfWuBwIOI1JmmTrSGPQcaHmCrpKGQbrdFIDuSLqXKlcy4FAJWTcjcM5wW8WmJNpCgQSvSseQwywZ66kOt9AhuRCvhSaA9IPnAH2Hg=', + 'D/v1bU1GKQAZ3FjzSJary9Ts9+hF2qouN9sQE3T64p2llXjBf4MARjm2IBxQ6KrKoy5axt01D9/BfBCnTkSjfqSZokbwltvK2YBsKjZVAzJT368eJfChxixWcmQbL/yF5K1n/b/ekRl82DvwU7r54yWceYssFcpKr/XKZpLjOVRt4VPRpUOKIaRwx28kRKAfzPrQGxOzh2sg9VMvc/yT0K9SrlRs1WEup2M4qIPoDBJJqcVq4ZRILlsLktWb/jl0Cej/2v5yEe/BvTGqACFi+g0rxdQrpUwTO6CMqI4kWUP1z6Ap+yjii6gFc6ek01WC' + ], + [ + 'G8sFSZwogCajMDEV+KLCqUbwfRmpwNcwXpHfriPzd3Y=', + 'drj+s35oXzkm9KmOgtjlvtK+45fLdzU2', + 'Cb8ERhUHuzMqpNkccQ5nkcdo+IALX8e/tc24sLOQXX0hdhz6IgPUPCctWo578nkONLHtKOZ6h0Ez107wfAGnHQbzSiayLXl9SJKVnvU4TAN7CgFF/+oOD4o3Os+FOTYWu2EGtNwaIZRx6SLoq7JwfFx1cXvl0IM/asQeLYISiycOCPcPTjGRCNS9VZmM/Tbo3qLTxbNtaLAWijVZehL8bZ6Dpd5Iia6jDXfP0E0n27nv0ruOy3cCuml2JRGy4leTYOozPHzqrvee3psd5q3f8v552d41lajqammQ74lGvYCq', + '2h2YOfqWsgX3mdG95+iT/w4T4DjfYKxaTXEB8P0RaqTHsjQgVOP9hHQbVFu9jlv6R2+HaHLzO6+7VgEy9+8tzn5JTHUqg6OCnB9ct7PQMuIXKxLmdOAdJBwmUxg1+/lGMLxt23ncrmtss5920gxwBPyaxvJQ9FoaPHgTFMV8SVYkLcOIcfB1UVc28aouZZC2DwIpHod5UHDe1xDLO9ekDJ+sKSU7zpwk7yUDixL6c6FThNOjCpwDsxY8FDTzaS1o7jAUMK9Ug3I6l99TQBmd85+DVS1fuyrw0jUkKm42iR07FScbAeREuFlwewu6iNbUTA==' + ], + [ + '/a3gxxtY6qQ8esk5qnRhh8FwAwyYWTV88RGrO2wrhmE=', + 'IUhHWdVmamDslcSXGudW6x2LUmCyrSCT', + 'P5wTFdUuKJ7MlxAXDgn+By4jzq3iId7WF0eG2j9Mq1gtqZfXJkQj9/KMNXuR80jnsZ8Mo7TQTykSjI0FSuNTwiO4yt4l8bg1PTrqHfstihjqmBZTdTIhmOU82+qxn8tGd7bSxDivHEU3ZmAW0M2k+GAlaSDa2WIxV+FSzKPR6RcXFFNsoZriiL/JBmISrRl1O7btKQdEw0x9GyZT/PV9/ZgIXQ78oawS5Pl/46HBNMHmtsN4yodMfufy/s0DiF+Ym5Bf7RbQvMUsUFEY/Yz42bcLAIW9SbPXWr/FoToVZHhGeA==', + 'ssjsqpDkP78CpeXbc1C9j7qOWFG2p9MB2C90KxKRQx59BqCP4NtYAXExBMq5DYCoWAZv4aPEebvI+nHnVNhJNqp9L5DYf5G7T1PGkSxGLiYEgzQZyhPKPUV1VQ3X4f2Vz3H9EWBBOtHbfMYb/fQ+JUGpXeHPtCz1rqKLC0AnjHs0sT6rHX6r6ApI4N/oFAvVpako6JGB4CocPKLfdPSKRi2upU1B9J/OyUhnZdLWmlZxRSc+vjeZ669E1slT7S2F8eVUDomiZaVqR9udOI+ixHjze8ArGXus23YGyMFC+HZwefWSl6dJr9JNa51iE+KvI2U=' + ], + [ + 'no64NnBzkOrSUprRIHMx4zthtDS4d8T5A32nscAYtnM=', + 'iuAgGJb/8VTJ9m7jJgCzIh31nADZjJhy', + 'UT7oUpRLvShoGutoTqyV5gXdAVBbv/IvosWdpIT6SRBeGiJald4eKsQ9H3oeuQJln/scThm1EYTFzF9YaCokLldXVQTXOhd7IXOaj6YaM/yeIWz/0WTiiXFSaZ+tlNi7420SPnAdtmE91GGCSLnggrTF/lTzHlL/hKBS0he7kccAlfVdbnq19hw0J04zuMjqPuz2TyJ8c4vv1DW/duY4UC1GNwR5wVnYEzxRwzleuUaPfQm9PBkXZXwV4uZRGMzuTYUZqPecxUaceDSx9YA+2qrb+uZy9VfGDEBNv4iT21lhmBI=', + '2iuxfIBZ27Q4NyHyK7D4JcYjXRHI/JzigMsClEsM2pMgoUW1k1tq4/5/XVVnBOQUpDJK1zjQRSWzC17IMG1Dy44AVcTdwWDdV3I1Fj0TknnngLSx3dUFTOY49FhGUde4SkHy/prqlA/afw5sTG/bCp8MeGjprfLsRqYuOO+jeSYWLiYg1/jaqo6etFwoKDsnXlUlT5HPww5aPT3of2pVU6HfvgLqxNZ4mFqVO87j2FM4SM82sXL4hZXgbE9eu7hEmKKhu0x7A9rTDOqhSUKolDrTkFFnsuZrASYzG4SrNkxN59MJnB5aPgL9DM+W6uG/X9Up' + ], + [ + 'EQwniRG03418JKggNXDPR8pLhZoaIiTBlJZhHKJaKX0=', + 'UYf9v3HyH8aMHySinV4b5GDW3OFI1E1t', + 'Ey9U1NoMdKGbQgWURwGoqUP88xnFjZJiIOuIv/aSS7sj2jW9Z1ccc1Cv+KzL1omA184PFwQAh8dqwM3w7D0eszkN+p+ya/0KCjv2ieTx1ow5l8IkT2tXq2EzbPDmAAqsvot2vGCBCY7CsH67jS5jKjxp2lmBHx6lZpxUT+FtaNCv+dkVzky48A2WT8TQN/8yOHBO4MIdYAUvC0ticGaR4IEWSf+fSzPIY/b+32rCUeC0BXRrn/RM5OQv4D1pVcHDwwBUy6lOr4Yq5JwkW9ckTEhT7fitnv30qYgPZIiw2AY4GE6L', + 'uPMLGrfX9XTIQUUS92H0oKohUqZYFQbJI0cNi24qAStYAuCv0Bm853otd5rLhRorcioXqVtm0MrXhRxsu73fLD+tiEd6jVwizjTx7YgGauqh5HAwUJMk+q89xY8fNVwgL+xlQ+bw24CFJ4ihFnK6OoMYXUEWKmkuCQrjOyXClzPOfWocsmVK2u9eyblkNTJkeKiGhjujt05888Uo3pGasLrkzq/PxTBksvT1mJ0ok3hNm1gOMr0Jb5k1S2vX0xrVXqk8jgtYl9o+rpTHxMjaIs2RvAWKCcyy0lznlwqJO8eLRV5djnR6B4RtcPQ0C0ptRuxM2Q==' + ], + [ + 'QnztRUXtq1HQO+nkL8fWksiaxDJMl3ZyhCJ24SXRPH8=', + 'Y4ei9ipHzmYtg/ADIsdZX5H7/cX7EiLm', + 'Kvv0DnZ7d6v0bcbsIlzCnRY8OSPrTyzGfOU60AUSyhMWYewgM7ZtmS7ypKMeBqQY4muDQFkSHs5sQTDKWBwWpCSHSyowe6CnDE36OqB7KDVt3mxQ6Rv/nnHPt9hc6qJQrtGFxRzvbO1fvtkF2eE52T3MbLwkTsVNMbybHtziK/tFSddiFgA4egt894iuPgCYueu4CtRcLY0PmlFhFGJj9OQgv6HQyeMVqakfKDbFlh11GwNj0PXcCtqQAcakeP69FFFOs6w5LWTTUBITtSTk+5qWG7hlt7B0ntXhUGRCeXLpj79zlg==', + 'T1cwJawQvDoScrVg44sfHiVoOo6Lp9X8UNYDt7fotixsFrLiZN2NwSnMXIM74RUhSeuZq0SoiXcfqKhl6kjx64LoLPzMI7js62+yBRwwwgXE7ZuwikovoLqyyqmf7K/FmjE8ChAvYemocLyUIsZ/5VlZx9OTGynxwBNZapkzq/bbtayXSQMLlyZ+Ukgece1iHDcq6fOjIp75vOIEsw2L6SK6EE+lGRg5v0auqieeKMvqad39Lhn0ZTaHHnK7FCXoySfqS39GieWAkUcLVmQZwJMctAFl11341CEKhv/wxrdZ1qXviA07Rjk8k0KSwKRoLUK9vhA=' + ], + [ + 'vSnQLTT4aqOraZ1GkHqlBPMf6AmAGGSSA29rmy/2c1A=', + 'o6jZqqkM7SvrPvFAGT/j2l+/KpoLtKSK', + 'HcLyoEBZSKjQdBDyQqmsFZ3m3ulOavPEjZIoGMuuEk1W6ckiLJPpljBIa7ptgIepNCKYIK980h+TQXL6KfEsKPksinmZA2UkS9MxJ8Uniafoq+7sS1Y86EEPBnTL8Y+eGJJgHpgDXfhXKllf3tF72NASBHjRSRwnvY6lklv8M3Z+Zlvh8l/j99vucnCT6QGro/ntTHKv6wv7+rk31450U6t1QNa6Erh0wlt624wJovSw5KxyglQa8PCAuG7baKdwRJOYOr7/PUTVYDnFzkxEJ/S0rEkS2GLqCKajYG1ArBEdJk4juYE=', + 'DyYUYnxDKyCvcEWeSBACLJJjD5AOFHJPp6kREKcaNWNNj4bNTyutTXd6RL6bqx09YU2Tlm0zWTI7YDhI3AI1fSFqYgqAW//1tgO2ogjpj8x4HETwlA8Wpk0p1krPvztqJdnuaYQLvDzhcBrrSgcLTJt05Wh+mB+OyAobNbnyWFwspq0gkW00K9jS/2kbSyA7P/Aw5Q8QVMSZBQY44DfSi1PeO7kCoBR1BBKaWWzX0fSeVA2ERBtcZd/5zSmQ5r+GhyZIgQW6e0zktKT1u2ab0HoaOgtLw0J7UQ7a994AwIumncyq0MQfZ3x2aiUNj/m+AjJuN9H/' + ], + [ + 'z/dVdV/e51ccfAmdlnjcHwitg81nJBG8kK+vAaK6PTM=', + '3rXTNUUBpSkJ0Gz+nqGyy6A83sfOOgdm', + '+sQZdkkuaMd/TDhWozMg4qH4gUPqQQOzBKGbNcr5RojWmE3FeQPovwL4w2NKTdLDngmLRxaCEWiu18Kyg2nDSgSUV4SSBMvod+k7PMN6yXzTVYfYslQdMiVkAJKg4F0GhzoxvwVFKYnc9QouymWE+du9RDRiq+YlpC12n4+XZtQVwjNzKb7v1zVN9LHmRn2co5K3Kcur9vK5tfaGUYT/o4DDacEeusdhUX75/6xautZP3Nf5RNTbYuVS5O2CIV+yarrWxCq+XD7iunxRSD2zfSaill2BKm/4qbxRP8r11q2yDWBDyCor', + 'DEvwIAQkUKCaGNAgp8nrQJGmuf4HKPzcJspwNrSeFMXiDJ5SV8IXVTbejQzxgeKr2vwskDMAgNdQQjmE0QTW+EcF3T/1aTSGMvoWsXbFqSv+/e9vrrOOxhhidJQKShE7FvXCOIM6DHF823DF/h1xHPt5kugxdIa22xh4tlH6h+jMqmryPuVyvzw+O4oZj2KZA0JOd0zhZKldm0YimwN12kyEve0Qs+YqEIspXAPGjnRJQ+yMsSw+UkqU0UVcs+KaGEfzvA75xI21NfSV4aPEIe+bHa5ruq+AKz6nMkh9FWBBQq+xooYEmRy4Em8Cyc6PVzOe70Ytfg==' + ], + [ + 'owLlCkBVcUV1+irJZulkBWxH9npML6uDe7gKUT9WkUY=', + '5vfVK5RukchOaIkgT6cgFnbnOG5ol/IL', + 'Cm/R2hbV6U4zIieS4cf3JQHzWVRftRdUK/UGTYmeLGv/SLu8bCT3k5GAGtpB/1a7aoxVZGPk4gMhF2fa/R8awE6Wi4X0VTKeScFvtkHcQkHV9CB+rV4bEbGgjbJguHqovMwNT0tuf0UHk4zxUjXJMYdtaokQGFoz1+YGE1mLpMCZpgcC1DhOocAyCKR24y77XagbjmQzdbrjGtQDf/8uVvhhiAXbXjQUZ5OTY+3JlKFoDH+dhRmSnRSgTfr+sXvVsBEurCtNhQqdWFCqSBj0LLIw9Mi//lTZsQX1jvatqY/YoULc2jNDhA==', + 'zBN5bJf5cKKFaRZUrtC63TDCJRamaLQjQh8y0KR76ySuvuKde+ywtY7ojIb1DHKs2A7N+D0Re58p4CYqo4DyFL1bbhoPg/+l1L5mxCAsatZIPY9VkLA1aycuWg/p1hipq/45m9wnLnP+FUgqFYJflDPUPW5/4EHmkarp+CD0NkHTlXU2pv6OPq2TYw+RhXWWlakoTT4fEHOiLx7700GqC24Wq5xavmw36Rkkhq5RbJ4bXfKEzpu5l97oSBPV+rvyea3Ac9MvkZBVgnwEqQ572Z1S6RgFAD8FHjmO2z7fddqejFuLPUqqy6iqUczdMGFMFpolJUHDics=' + ], + [ + 'hVAcHZ025OnDFGkOCXr/6wZySbCAcS+wJK0SMTNpPVk=', + 'SeXK7fysr+K8s78MC7byOLvrx0qqHWak', + '5tNx34SjKb6P/Ggk9S0BCR5kownU+xU0H/kKHEW/WdGtyvqSsfjdkxohBjw5cktaERR/+psb4YxiLn/AtPimsGcg6WW5rQYXS00NR/q1KplfIBYJ34d9H/Hsid969PeKcxSKuUplee4fWQA9Xm7K8duVdyZaaQiMAKs6barwGrKBGsNzOCo6yzSx+0I6RAeLoSeEBIJS6ITKIOFvTR3oFAtg5r8XZcwbAwWUqkMo74KcLH1ZUmd6G24TrtGkKACiJAX6Ft2+1nR1RdG/ez2ZlzSWomDHquxQboXMbrjO0bL6VROLVEwohq8=', + 'J28lEOq5hlrxBIk8YewauG9BX/vVkJwlvakR8IvWvQ6iqaGbKuoU95i85umK/hfUr+El48II4xZsOu1KJf3WFiRyK/dWKQ0bw/hO1KQ9YkdAmyAoakT5r4VeiUm9CCiwZMzS5ZFukv1Ma6+POURkE67+PgcJtU/8ql84iLj5lHKb6ArgvLqswtlmmjWoFgXywYsW6gPH0diFStGNyTIaVcOyiaw+56B95TnGSLOcaY610Yc6T9lstz6q4lQkTfijByWAvTUdtFjaFn2c+yI0TJFjBLzQU7ND8LSzcGNSUZa+oE/aE5bOhgVeDn/DV0MZoV+VYk72gD1e' + ], + [ + 'csef4CumMXaom0IM2P1HtTO/fH+IYxVP7Yq9LoE3NyM=', + 'IHIM938hAvMQHkk5Hv7z4JDXBMBLRs9h', + 'I4k7VJ1L26vhsTWqanTIeKFjnx87y756MfxF2S4+fcH4SwtZiedqfhbTYM/9ucbmvbR1S0+0sSthcg1O7JO+FqWPhkJYoClk8v0XPi/xqyFgHTLT4a06wSPbOGV7caPA2tDjGY3x/sQVvsoc5wy6WkydJFyIFQLpurHed6jY246ud7HF2gkqgGQMFj1Lu0a0IuWRe2eNXleHsDeXTiwfnVZxywH1Ya48zvyG/rHzRaLxZoqs32M21xy9WGRkWRxZRkUBo8WSCOCn+cS5VDlJyMT++AnbQFEufzwlHLcF4ZtcdDv8+0KwECdv', + 'ZctGvwmbLWu98XPEpgkTUcQZEUEfMRxtSHEke2TBLL4Gkg6F6a92QkVwojqFyTo9FLCca4z3ds6e+6Nut6OfiyZjG3O3wYA9XfVJYuqOBG3J+nkO1YmFhIQnd30WUWPc+TvMH/2+ciAhS0dhw+6MK7s1TahoYM5+fQzZS46WhWwCB6b1ba1JJv4jYO1yMZGIME4BPvt/bE0W/zk/eoogGzrc4j3kKvWyZDp2QY0NMwr9CXCBuJJ+IaQyz2NbmlJb7YGIovvNa+/d+gWofKq34I7VJC6l6nCGuo+k9tw1n1LensTcSyhUVd/UoXbBUVuAXw8C76Y7pScsQw==' + ], + [ + 'hIBHiSibnE2dR4cR0ZC72Hr7ApCKjtRg3TtJ+E13CL8=', + 'eX32+MIr40pcPsA43YilnM5fOF4xtbLv', + 'NEixGj7SoEuKXg9mYMxiP3H2V77cHS5sag+TXRH9UeaZ5bwQ9IkhldU7olnYwREgPR3rjmNc+RC0zMx878kvyEoMSknfRfpoak534NlRmvdFJm0bMEwJZp+SkrmqD1ZS4C+mnPxkM+LipRVal4Ev0ivqEz2h45uBI70ish7q5mFr+em6ORhygoqTmFhTKttHL27FUP3Z3uLUVwbKZjhZFrVtGdKgGasU2JXtsw7BEta+GfS7m5RSrvIM7UKLm5lxCr67dTqOp/o3b9bey+jlz/wk5APxXPBkSekEJlVxPnY7A+osIGpK+xXv0Q==', + 'KE0v/uXN59nOgZySlbg0pyhIazDC43P4XkHAZdz1D8W0VGRMgVND59sezYDaTFfG0RT0lHIoeYQm+tjmqyC4OpQeNgP4xIKcz4rHhIk6Fvs6OGOKZJcoh3y+9pqSc8wWm/wHE9c0FyaygM7qotbyJSiOx26CwhbuPNchuROl9HarcvIlu/X8B29zcUAx7PD0K+s2mZEn2VoB4HaaBOYSbD3hcGcrfGSzEIbJ97NC7jJJtYzOLWWA2S3r2E5Jfbg3lFKfwSTfU38hm7EUJ6YMFr5uHq+vRi11739Jbe19eOCRY4QGFRLjtXBGWZDMb/49Bq5FVQhG7Fgc3b0=' + ], + [ + '5KPstXn8AlZvVrx61DZLSWGW3xicaE+k3aahm2LMHM4=', + 'Yl51AujwNTBn1MokdO7dHlJSeNCSR0XJ', + 'y200AbKGPTKAaI5jhVhACJh70kYjKQBb9amtA1juC7pLPYt/9KntoXHjM/iibjn8h20CXow6Zv2OwlTbH9ufiN9dFSFhch5B0PB08OVBxdbvvriH8bgaTPO0vnKKCktSgpWU1yQlKWG0L1haQg8rJprz15YR8gWACxvgSEpb8lQo5YV0CKC9uLKAG3jWKXMyJuZLPiAIa4kEEhs8kZJyCVty2E4XFXqlONrco+CkYfqW18g/2xeFRep4pjbDDMT19OPgJwyn9bDOWtzafy/YHvnsbN5jYughrmy69HwRfpkD8nP2SEIoUFwGqpo=', + '5oHjgx2iD3PFwFzYfi4I1nsBHnxRtIDjR84ae5wXPM/UvuCFJi28cKOMPrSNIO1O7VjZSsyXwMDzDbolG1eUEtxl2JWqQahVhHZ8R8WaoRk4/Nv3i/Ji0qeci8fO9wLLaDSNrngGIQeI53s9961YVk0ffg6TN7iU7YG+B6wx70e6k39k92XMmKkKcFm9lAP1YFm4SkO9ZQTaaoiFlhyRcz3ZZ3yQxmsSSIHYvKy4e1mx4B9mPdPYVrfZ87R3eF4K7YuxYeaIQ4hjBcUWDyZhc3f64GTpVX1amP8Jwj3pfTQl9id3wySvIqOoBqPwRchnPQzNL8Q5grZ6ZF8n' + ], + [ + 'w9mFBWGhBmKy8xWaqcaMs5u4524NInNbXDNOEN+ALoc=', + 'Vy6lnd+u78oOcPZnyyojEYzNk257sq8m', + 'qXf1Mnsbu2X5uU+HSCSk7ZvIHjSur6Z+J3SvYKBqXXYdKWu8MsZ6ZWDeACmzIxOGSOnAgWc2j/IJ8Fu37+IKLs/ezR2OPIdvPQu/iMOdQ8YMmJUepF3n1E4HfeUojokxdSTRNd3yHlS9KSv4nQopxJjCWHR+R2XT1a8mRhvkqU4pTwO2l7sIyhXKbZzkwQn5Z+tLmL2+Z0Uvk46v4QHuIOYGQklLb1Mn/qOS6/DZTXWyvrUvQOSsHJCR2SDYv9ZMkdkmD+SKgjoVRt1splC4b8o2E5Rm11K1UCYngW16cejTVGk3y6dBmIYKux/p', + 'xWD2N9t1TWPy3h0bcCZGAypqsh1oSYdxFA1+zYaIsryYX5LoFPeFgB5NpFdksH8SbzfgBUS9hrddRQIRrpMLuYdReSavEfLEon54dL8zvEU2ixTG8yXYS2FHYxoNW0p8rRIa5An8k6A0xaQACKwdDv0hjB8u6kAEX8V73wuSsN9ZITkuusey5TDZTKt9Dy7rxwXfmnTJ5J1NymOPrkS0i+Psy54uyAfV/KdBbLeihi2yloKW5PbUnHf6vvhDGnI2Rz1hZm6LnmAJuOGmhMF4YrwgxIP5on+QyPb35CDarUGDBE/b2iNEEqboiiLmgkzmo9F4Ud8s/H2bJowlSA==' + ], + [ + 'koavbkmCw9Rsl+p5Z2HY0I+8E3UzPCrzhqn7XrhZa5Q=', + 'sClRfbeclN0ZrPs7w2djy+39RW6pXd4m', + 'cpdRTx4HP0Rh12TqAF/7Q+E4CAxGbVdzxJk+YAnBJk1zIXfk/UpD1GLxSDR5HZDKAXD5R3m+kMOxAqenvIHBGJKLmecsVQ5zkDB+Aej20Y+Whcub5MqWrdCdC1vhpGVHg9/V5LDaPZtH3KxwZbYZ7Bv6OCCbG5TT051rFv6W0mw3ILXE4C7hG6QOV5LwQQmfXRNIkvKjgOGzYYABoM+Nke6e+sl81G1oD0PN7oDNnOip2ubtk/g+V+/hwM+jmMFZlVzPiRJml6VuMlMEkarf6CJYOSslpxH6gbUsYriemRzeShODJYwdrZgb3UCoWA==', + 'fAQB08UQ+ZhBI2HKdlbAZlAcrQulzIVmev0GZ6tTvcyzWGsy8G0YyAV09YgoX5Hpo9DHJiWZdiNtqLma+tF4qnMp4JUKitRjR7TYi85j0H9WwL6TKu+9+dBKlkCyQ+aX4JQtHKfXT8PKG8lbODiC/mvEqwLaQ+B2nMUmwd/7f3GMdb+MeJo8MJIfhdE7yGowVZbSZNYwb+ANcjh8EbkB6gi7moWnM6SUi86UxmtKJhOK73cotQmoiZ8dDD2acqB+0ldJ9y+y5Lj3au2ncGDZduWAofclNpJyHLuPMrzUBgNm/dz6qcPncjC1+b/1wL8gkri6Qt3qzLuOt7RjlW0=' + ], + [ + 'BGG4jZsyyUbg5tYXa/EVEqp82yo6qUzUsXiXOh+CwzM=', + 'KumYv/57+lTarQjIeeiFqOv3+weQRodS', + 'OA0iPLko/Pe0Lhbg034yC8Ay9mMeu4tny3x1v++ux2PcdJc4fJTDc1o9FtBofwIJPIpp8qFdWFM07LbprMnT2nr7Y3D/iLhKVM/NR7mV7/6Qqa4fNtkt20hlP+jpPH1ai4+MCslwayKFwymUf/oGjsZhAanZEASP2QC+UsnoMbKADrGIzjHZkwDSI5LUsGk+IVSyThGosFjHrzlklv1UwIvPcof0IiRSRkQkb36CpPd27KixSHdYkI9b/LfM0Z6AlnEY7omaxy+1GTiq2eagqKFIWNlkvm2nf8jrv0hcrLaZ/18ucAsU3wE/nJ7iAxM=', + '2H5eqmHrT62GXUrTgpF0761OmZucDNdODb4rLPsNSWfnfzsRNelGt8cPGsE6HBfVB9Y5cG/ih9a6azVlGlJIc9p4OVZFBd2MylPHvLI0Y9Nlld9+EE9we5N7DKXHcULanQGs6J7TorVCzvbITjVyU5Wdv7+Cj770B8D90e0vNSCSVsAyVC3+Y2tBX3AQlt7KYQCPnNe09aJmYQB2HUHydM0uHlv20ZkENTe0m42rMgdtD0Vt8iwcY5QYJCkhaa3s66t1YxhSgA+ONKkh7a6Wd9nl/E79S7cu4UPcOsn0unRcGvnn1zKWmKoWQBSrOWQChjSocy8+rqLcU9Hod1/3' + ], + [ + 'ZMORCl7WGIn0n0sdpPSd691gpBph2iXYyPt1ev+TsXU=', + 'BYXZkxwVxHyghAZo6QFb48dh2gzsMK6T', + 'bs23qKxkLc6hbbQCGrSiApEjNDBYPru7gopGr2IhzLihgU7itLUtxvFdYZIaz5nYUy3EJoN3vaq/yTUcqclcnaQjzEpgebJ7WTaxpq5KXUvinlgXUi/+VQHknOpjscwXmz5Gu7u1RoHkim3HCYpMwLK+LhEEGMx9tSrs9aeTGxGUrdwglp5kCYuFBO7TqhTU7ciD2PRhprDnWilsdxBuecX9T90GSjQfktvmcDK09hjhWcH/o81/tuhqAawieop3v7lU3/U1OfzmUsqqhbAmZKf+TY//4dFpPy6kZFuDeREdz8PF8Ehs3s46uK2i37KF', + 'EHIyhr5qW6Qkv7ceGJawh1240g7DgPqrVL+osfgZIs8eDMsBOUi+IMQ6ngZOdq3kwZylswgJhCXcyGt2+jweCBPDgPmZ60tOGFA+ZU6yEdYckf5mwjOqrQCzEZSEw+SEDsU/+FQi2Y/6fkyLDnd2gv8ZIWyBw4PKOVHrXV7cZ8WFox1I3sw/CC95Z5Si6EuLgFK5SKtzrMBE4ovAOG7zQcqBDRdd7oG0Ve1addbuLgIYWrICI5wtJ4GkyLlV/t8CEcSRO07SIpVZYrM3AR/3++0StChMbtemlN1IIuH7URF2+010ewZfv4phINYVP+Dpzo3bjqrqrgpu7uE39HLDCg==' + ], + [ + 'ucWEHRQ9I8is0rRpvQDRbsaiY13IOGTvRVYaQsKHtFg=', + 'UAJVAjuO6mlnPkncPeI1N6lIJeKjuCRc', + 'kLbiobfRf6pnnVV4ee6sH+l+i1tffSzw1+xUklLFiDt5ZXCbNCAlzcDtr/2kvj4wYFjAvGoxRIDX0xUWdErfvW7XGBFB+owo7FzCFEQqLiVB2F0xTPN+sl+m16YZrAgQ3AX+s2L5neOwiTZtT0Hrr5iqj/K8+4Wyuj+4ZNDrpETyQNwKxip5Ol5Qx8hwCrhUuuh1Sw+g/nXWKdKpqDKQ0BlYGsbok0UkjSISfmz85GR3/8fEPdGovqoOhP3DNJI/RQiolprkRa+oT68T4/TVmTlGCtVB2WYmRzG8fdgoLa1hTK5aPWQq6w0OeGDTjcDPNw==', + 'r/GGun4eFUY+aD80zJuQ1lXXJ/SnvKMFpPKx+ODuffz5nCUtUg248J9CHrS69BdwJaoxsYXJhKUSddHTt4dDbYshx3WwtM6Wlw+fpWJzDpVloMDs3bZTyUud5z2KxsSmhAAxKwy7mQhxzMhIWkRHlvUnWDqqmwpj4T1A8+kPuDJxpzHKQJ/mf8qXX6SbEIOwQKF7KGuVx1PLzRkPKg/01nxh/OviD2jSQsdel8f1CYOFiIjA+mOFgOBJJIOvbB9/mEUtd04QS0wUQ6PV0agH0rnwnSZWL7SbWvcXbrprtz4k9EcWX6a2r2F0v4OSF6NO5ZUQDsB8inUSgp32Xz9i8Ms=' + ], + [ + 'IFIubfys/leQRCFzhnCPiZbTFzcSWKgtQHsjp0kP4BM=', + 'vbKy/nPS+oflsx/YaUco6tqHTm7mr6CQ', + 'wYYQeMqTPTUaw15FoDbKClgOB0ecN5qkgYkUFfMDO71c5oHI9schOqc6tEPmlH9WWJQsm7SvxeG2gpxgmEbzgoqzXHe3G39t5ivZoYDkpHrfHoBWWz3DPSyvf45Vb2q4ii0RaDdJTVQhZPt3NkKtsGreXW0Rk9w1kgknv13knA9uh+NXs4B25gTwDxTo96fpPzBCUqbbZq0xV3hxdK/unkKBm5Kl93QDpYKZtXmKo1gPAoMYo89PRaCJe/D1zoHKU4kUZtS1c781RXygc/u3P8jSDRD5DavrzQledXzLh7GRa+gfWjONbycJc+To4716AjA=', + 'JkUJvA7RdSGOfWqdtyNgTYjKoy2fSs0NAmco7pZG8d+2n5KNHBKkjMMaq0+TBRE2kCZZUIEyA89OEuDuVukwGD9zEV+dS2go0J7p/VxKLhrDKtx84vXTgYhMjccY3h2YBrC2J9Pxj2WgJMFlZMk5XNu+Qfgvl3WCLFcb0pdf1cg9w2JVhnXkDQkn6NoZoPFpJA2Woq2fVZ+RQVXXldW/cSTkAasoFBCm87SNMZ2Ci1IxK9uStHlDXNXCqMWI1eBmH1LDtKbec4MWKuySxT0UMV9pVEYJgi83o8GCC2Fw+h45qG8rgu5rVQGiFPmqO1vWp/FrkMPUox/UKf2mr9vpRHE6' + ], + [ + 'sEm1Xy0mbG5sDYNBSjJt5WaWSm/ItIZjRGmYhmRhqF8=', + 'g6kpjZ4dLkDoWIIzV46VrQvVjCaYJCzy', + 'BAc9KGdi98nWO9FCVFTIYQCMI4kJlu6tJRD7IfkB5OLzDzPRoL6NyAPUdPts5sJBX6S/pJ+ht2NDB0XaKf/d+xqLddS8npO/B8PQ9lpE36FTjpe31MPH/cFFqPwrblA4Wb3VyH+9DVXmgdYW8UbP6fXy4N7mVP5IFj74dDI2JJ1fPEL5mOaZpOj2xu1/F/TIkMoryujGAnmCIPdS5XqCmcudDKFs+WxA09MvSEvi0KNFSFpL7P38/PR+yfhiVOZOk/yTbwpum/x0vHemWXVNfkZTgXD/gZL7TSC9arUxY3MzF1EU8AYZmVJR9v6H+OnbN9rt', + 'guaJJNZCM1kA94gc630uTGcYA7wIvpxZmx+S5U7JPlqALAujAfqLMr78qdUOvq7tmNwzqrA4R2Nq5A2nW0166+vzh70kwsY5k+/FGZDT1Wg2iOxhkSV60aiXu/Qx3RxpKL3q336/jSWhgdUadu7JectuQXfawsU7USAFBsa/IFv49CIiDgRjlrg6aJ3XW9c/Dc3GauPJLaFjCg2hLtqV3VLQtLik4x2wdWdqpl/bnW7mboXeVv3csZ6RNEfyDN1Os+8l0f8VoBmSZo7Wp5siOj/ym4Zo+RVYnZp8GfRD+bO6qOlYDFiEkXNHD0Gvn0o13N4NDJisCqkj7W238vLbFN7tLg==' + ], + [ + 'qxAq/HbCAdYrg5/rv+6j+xBKWN1+4Jma4ykVeyMjwZc=', + 'YYytRvqurN6v9jRHLM1WzuD0WEEQeEl2', + 'ZVke3LeZ+e8iiCJNrW7LvMY2f4rNnuJ05AlMKzhsRf/QjJWn1YWWZOzZiiE1dX+0F6PtEVOlIqaz7FrFLye6UDE9uRhWSMDxr/mV0rRPf5haQMvUsedeP7GpBB8BuXnewrruFEiiAa7cM4J+pbvOcS4vgo0r2Wq2kSP8lTCsTZaCvPhkbNp3moD/hipuxYxf1N9oE3RCpWyU0gRmjxlMKm4IyNrXJU3lxmbmwNLxu6h8Kv4SL4T4+OcQpzQwXlnztZIB4i8veu9Rw+AVgXdfrRHVEVQZgZknN7dfN5qAiqbgwkLWLhhBlWP5KUKdxSfm6S6NMA==', + 'gfx28ARdY0EEGXN1mdcDmGlqWEUwGU/rPcB/zswrcZ6HYBZLQptkJ+qGTM7RvAaJ89m9/+VXMUzNQspkVeF6xHlkQiCGqlAPocyEwggPEQkEiBFl1RDVw5Ezm/yIE2gj3/C1tYH9b9fsGYlKzE53o4toRZPgusQthqImzS+Bv2aL4jrYcE7gJRDfmwXLaI01Np0WIHIYsOr+Vkyakij6EVrDmUwkMknBxwznnOwhYeLFxwtRtfzNn6Dx/6EXSm00t0Y1t4gbwmiBhgI4H5qsVMUyw6xM8vCipuXn90X7UyUmxcELsAPBjQO7WL5hPjz7hPO29oiqC48EOsWFnONxaHmk3aM=' + ], + [ + 'WgUNpPExhMhjlBNJVz4y2JknVEQiny3WPeETlpGL4CE=', + 'faYGeviIcoWYq9E2kD/qCV5JRcSBvR95', + 'eIm+/mq0J1wKENwLbUC6XYGP6238v9KE6pEGLx+ZOV6oGd38xig1sYksEekKluV5W/URpeiJ6RTxnKnhKgNhhofo7Y5rAUUfElUorop4bJZmuInps4XuAS+g4LcN6DO5+g2IEuMT39HDNJkHjEGfsVmD6/O4/GEDwHiNWLf2tTV69vFtMzEb30zQQ2kRTWcloTAAgF7AdZiSDHLqHlynmAhnYd0ZtjlEotJ1VpVq9SfwYi01KPBcc+Zty5aCngITF4UEafOCrVP0uOQBp4c8mY80z1zbVPQ7aM90eNq8JFNuKqMMQzE4Qn3CurFSJtgB7T6csRU=', + 'HvHwWvOBoBV+dFTwyfEmIPKIQ3VwVh0L1JgdVumjlB6otJnADoMZo+vms+vIUQ+sPfh++DJrjRyLWo6W31TS0U8wBfM58ebAaxc6jIGLCHQcgNtFvU+jHgcQntxZRkZYoq6imi6xLb5K4dBVHdJpUC7H7Zge933+pPw8Zi/lHaxtjvrZ5CpDMLPuKJoYRB2JNBGsUc11jXNUQC0HHllIninZQCoATCcKp4UfWoBfm3MjLxqP9gLxgdz9c7Bcm87eYkdy5AB6vJz0LHhMMGxWWO15M8t6Z9Er3YKin6ABaIrS9YofF2rDofm3CvVu2E6qmHurI2xTihCJfveVg8cIvBO7cvSn' + ], + [ + 'lDrh2f7s+t/bAGCMCJBzmlCVScUtIegck2azjAem+Tk=', + 'MvLQjmUdrbVVXY2XZGYVQSbOPLnU5ouH', + '7Y9mupQF4rTHl0eF+X0tcIR1TaSbNGj6kJUinYkHXGcnH51xLFhIQR6K9D3+88AF4VSxZg0Ac1cercSwRfiwdF3UKUyJ59Tnpkq3tZk2+36tlK8OB1pp0n5N5q2mPWVpk2Bf5qeBxfFHA82abzhOk42pqcNfSge7r2J0wCbHVsVJYb5/sAR6tdD33uaGaw8XeeYEiGp61T3047b9TlhJylcC//oufqQ6EppEK3QeXDneHAXGPuI9y/HwrV+QLNGKuAwHhmqM95YmJ847uzKb6zcMpVsuGW4eeXvN5DnqY+YT4gB+jlpq90xp7euvYwEdD19S7FHK', + 'bYHpT3Exc5+7/d/AylyXThCQPX6g5+tCmGC8VTcFwz5Fp6l/E6vjwT7c1chivu5GaaECHvVzpjMbc0ncKH/aoLAKCOUh97zcOd0UyYHWSVE2haDXNKyJMnhoG9dn0Us3FbbN7JPvuYiP2c0sfa/PmLSV2wfIyJRwb/vAcmr4l2RInGgaHkSBsk58BhscCK0KSnQtPXS32eydsQMxANoGdvcHYHAblWmhXCjtskxNVD7mMIYLIbooXSNfSso0fqgrAyzGBbRbbHasm5IKI1/NIaTnrwuegl5SK6JSbtttW2DH/GneaT5LkgqQypL6EEeyhzmkzD5Kke2MVRmZPdZcmbEF0g3U1Q==' + ], + [ + '9a9yvniStq07qwi7dZgvUpHUjuwU1GdAjeXo2x2owJI=', + 'um5IFM6QQaOGTn2YO725eKqV2UadST5m', + '+pdBHDaHADXNkQ/gZpqEudtmkmdDni/LBKfDqcSYKxbCzwDwSxRIZedKb4Rox5sXb6EXiSCsZXRDgkH4rkiG2xPrYXuBZkHI3iwsMPWnXurU6ZkOuyCE8H3rMBzDiyGb8/DHJsop/soXrkE0qWPtkJfSbW/Vu0oiRzILYP5VSJLrHrY6xRgiZYicsWwwCiYQ14YIMXvqzgCBfHJVMn9NYe8syV8claXkoZEto0Lqy77tKRXsJ9ALf/gz5wIyKSbS1Ld6teyYNrUPd5NGtOab7jyHHkWIQkJaS0+IyOOaAZ0nWA2YNsH9DA5a5xDegzqilFNLugS89Q==', + 'LpYCIT/eRcBf+12kNsNLt/hFtSQUh96Kzqd52Y6C84NT2x4TkpBXBGJHaVWrludk3L/qtUYhO5uLDTdFQKyu2ssihiTura0Xz/+WloPooY5lRrtXITs1JEiGjd5vogpNKxNNESd6mO/kQTdsEx+thmJ6GkZdpCcGUCDMLhCbcl0IJ6QdG3xoWUoEiFPQJvVG56DSoP+s/LuFWEn6s0UB2tQIWXeVcj5J9TNTg6c9xOutBKQNes6Gl1xqZwMRiqo2SFt+dLjFRdFPwiwFVrqpgNd6WoLQFGWyEODqpuTtSW9kr9M5JXd0t1Q0c6PXVF+ehq5VxUQUH1S0Mo9ekOlef9Lr5MyCUSs=' + ], + [ + 'Cc9h6yzBuOtzPVeQlWTLGq6M6VjlVcGlGiGHFnfxf8E=', + '5jAd3kwoUGEuprE6ICMDpC2ulNO4sLBK', + 'JgxAeIuibtfPEVFcTj/KdQdHH7cSRVp4ZSWgB/S+YrKCuKLjDFkZCcrgcQ6vKPUYYutbA65WxKZP2IX1IWfvQpX8UE7vphlGgO/Z4OMSFS2h/HaSPeNt1cn0049IIxcxhgwuvrJL2a24yvkbYRR+wnYqy4TJ7Ez14yp8eL67vYA8tC1Y7DHvjUc14lNqctW4aFqXEbbd/QHuboeDm7bc96dqQmPVFvFeGgUkqKfG0KpVfEvDMyisbVRqI8MJJnIx0RYv70siLgO+8QeQqHPd8DOb+2/reUpfAVl1xw/YCQ/DogdVt6tSCxObs8ws/dNy1LGv5N/ugqY=', + '+orbbHV8/Mb9vFWa9rPKrsSHqKoVcylpmWRrBvzaZSnwgZ9d2SaD3L7/FlqfN07ZFhOIFYeM69An2QqZ4RulK6WMSRHGK1KoX1L5qs1zKPASN0bZJGSn2R5J9yj2/tnrRrJLwobqM46oIRo8GoGI5uVUSJZHKzcBvAGi27mNGyim9nsJvEoR5mrAyL775arceHA55wCHEklIEvvTHvinSRckpDpucagRNFJ+C6K6/+0KuG8IpwUkmnLnAJT1VSKSWY3s5okwOQhZJxlBr0sYKgR4K6e38v5STake3nO3HlLUFacNT9pdA41v9M3fCzCzjGHetN92YKK5Nryv8kb72q5YOzeCoOcj' + ], + [ + '8MnpOVYSkIlxG785TWsX8sAnWYOo7ZDUwEheltflePk=', + 'm95R5JBRdiPyN1Komg7pXqxDCzXGK0yv', + 'HQHvhazACdKdB8VTe5i5IUI+9V+RVDPiTa1Mq6i0QmwQQy5IYFXQK+cEEUwDaXc7EXFsOedxZbNV/qELhzy3nW3S8swe2HCMQdcOATzRgI3I+PLqNPa44RAOPvQewbofO6LPABA5NqqPHdrRhijhiut3Y9ezD2JLIApLP/cJiixTHFvW7PFFUivK8PPspKEzcq6FBdP36fUqlP805dk6owfc37cu31iNFauZD6eOJ+mxdgBF12P1jDALiXehAszOb9O9EhTxVKOQPGXQFlcxAKGpFYvySMGa9Cpn+W2q1jZ91oYXYox9QOBHTv6qClkimxViCNsEPUDO', + 'd1lbzYpaU7GNF5hSBvkAijpyRgCT/qDXCEZyavpNB2NyPNW2cvF7TS1qmCQnxN2h+W3HuGFhQTCpID32bUZozdQUnfwkr/ZpqfuZB3DWx9WrXw1GjvSj6onF3SFBX2HfH4v9GKlvYNwicI6T5GndbPxBngR4pZjKg8ZdFqVLIRsGDglvfU3UTWIHqEdiaFpia0/rmJAWcikVMCo/rGTQuR+QqHqr7AkzL7hshhK7OWGySr/jXL00RJUY/o9B7/mRTsN0JvxR7pIP5bkJ0hRluzLN2rI8ezDPd2CYDye2vGatkaNprmzGyZSipTKW1WCnUmCqy2LtZDxnI4ekkaQz7CfNr5aX0Itglw==' + ], + [ + 'rc1uwNfXDAhEVz4y5SwZp0gjjPgAc43T7MOn0WQ6hHw=', + 'SOs/4Iv8qCQ+I8aoRwskygaaScFMSstn', + 'H7+Jpr7ogSKNb0mJ+MG5VQZ3miSySBO3bxU5q2Dp2Q5Gr5spOaH7b65GZ9JtSn1Y1GEwv9YSYpj+Qo5hKnsAuJrW6uU+d3VsZj/uTj0FBaXnsApjYc3Segsnrc2IWN5oo5wx0OEWQm2ytVMvPKNUCfQ7n+D93e6NpfPhuU0fTlb0oIIyKihVeXIihC2VRMrCyZe6wz8FpbEPSu3fmXhxR+Ea87UVen82ZljMiTZI9GegFaUKfohvmFruHz3lpuwQ3++mZP55srEPrvTzUM9/SmvJ63x/WPcIZtwUIKmXYXjng6/bMwno617fsRjeOWUxzv8cyI183Zb8Ww==', + '/PUstzJKej+zIfDewVDXp6TxcsZflWhW9fdzz3xPrqcQuO0voBegu/e2kDJfRUVmcC0DZ8jKo4TWr8R38BnSBMXLy/mCWszZbgR9AVKUKvwLIzmSClkjXPxf+tyVBnTf+wLsuVkVHnl3oMmU4SQCG8G7OEM6rqTm5YedfrVOS8MqyFjZkttAUUQx3n/25PmZ041BXA+/lTcRj9zAqfHAHCoKwK2RL9xT0lycYwAtfVywVaaFhYQoxaVeJ1tfprdDJS7yb/1LbFbwWvuzNWQ5R9+2goz/RCOj+IXuy/EZiIlvWM2ar8WlbjGco1HNImyJc+yfq4uhr482fqLEMHiVR9z49CDELroGVMA=' + ], + [ + 'idznQcp9sjBF0hMANMscPc+urtJDph20kHFLY7ET8vo=', + 'XbWiEh2d0yJ+9uo4vvoy0kIaxMPv/9iy', + 'l0i/9vP4iM7y26MNG1HtfCMmczO6P5dJfEOwoWGLwo7YsoEdZQH433nq/3hRSwGWWgHDxUfVwH+KPy9jO35J2DhMFKhNeCx6zV5TwBV0cNgKZ4DGnxm1YaIpT3Jb3UIL1fN0IScKPeWLWozmuZRtEcFQtdcyujp0L5KYerueGJhjaIT73toWEnjSaSHlpElskFHLQWA35prflxKQPLDqNskSTN7jJ8LL5Ju6MKNwLPts7zrq9XkFoqDUVUbPVDQQ02UbY6Q28NhpBkp1/Y9PWmYyFIQ46qeWm6FPmMMHamXssjnDG5PTNDnacSLo7HT4/wazV+84aG14XDo=', + 'lCEJWbVToeH3I8hM9+/H7iwxBUZ3xHFUHPTGgEU+BsR87RggOL0GctbtBr1KHI1TX9dqxXwuUQzJxxX89gpDx+5LHPByL8qu7Ik4Ij6W0LcG7AAI4vti/GAJp4OxnjHyJRE4eRhs96Ig00yv7Ne6WDiamtyc9sur3Pni/bE2yUelCy7rCZRNVWU8GmjZAzuF/TfciKHk72PWnHHLSQ1jQflVinfnmo+BT+6bUJByuTZAmOP9E2XZfMpOxt+9JExvtqRU429MpoI3ncN2mYgDvL67XBhidEOFz3zn+GCmNqOeuw6e818/Q+N1bIu2vOVsQ+CmW4h2XIZdbl3vciUYOE4HvCNaEUBsjM5+' + ], + [ + 'FuN5BFc18kIaSOQ6RSSvjCWGaNABSDvKj6vwogPtNVc=', + 'zaUi8sv7yKeqqYqkxjADRSBsSobqOorH', + 'f5ktBv+vVX2BntoN8o6Unh4hmg5uCZKTxbyyBPtsib59lEEXNn4FajZRbavZROeJxVGZCNWQowXEMBLATxLM2TkmZUrCKBlqarb9dAK3M899qoqHMghne0bKhgnpxlqGOi5/Vf84gnjDOuv4iWwf7sfiIeJGQK7YhZCnR+245+SGFOXNUai6jwjiLuiotRfP/fUYdPMV7IT/xXGtbWSaSmTsr95UE9t5h0FUY3a+e5vWUUwRxiC+cmZnygCwGt9DEAmkcHLdv8F4jKrqRA8v8qaP8travJJhVf0e9t1KuNWZkPXAEV94yFOS6TD7kEGpN7+A+QsFQ+VuvT4N', + '+0iguB9+ZN8sqPYhbpwLw7TPR115BHWsfxTpND0cTAL4XrVR0KoxjMOIqFuHvz12y5bydBkpgxTf0+ZejSPfjrHBNY2NeKvevx44T8LTIhUGSQWaYK8aFWKzGr2GhaC8nMm8uc+M0QwgkZcZbqfXGXEIoAOue+ar6mCDkiR9TA4HaYa3m4jnvxmhIxRNeVAcOV9uPb0mkCpG62obUfUySWoGyQWhxCdtAhYjEYjg6Y/6U05lSjR1NhsWXFv0SRjO2ipZerH7Dq9gL6JeHVWD/7C7FKjteJK3uoD/ISV2Np0BI9dF1VpHO72fAz1NvfcuJUlbbU+uOMric7CgGc8flgioGr4rhrLKArHqxQ==' + ], + [ + 't7K1YpFmorpf+50/JPmmz8fvE77QESes5JSMeSw0s2M=', + 'GjJmxGfMhu6oevPbD3hQTPdnDmblhFey', + 'oTD2SJWslWXys7argJLEGiTsEs8WnkWVyNKnuneth0SSuN/VFfffZtWmJ+Pu6Fd0ZXddj92rEslbPvpxzTQtXSs7YQ6I7qt9bIsvfnp42xxXxJsxl1L+y9ztPeE+Dd1j0I3BDtTZDw/twm7G9Vx3LOV6Xv+/VOU2HYSqGJKQxw4FlpsET8sthWEUIBqRUlCext4HRP8T07KTFkZWXQMXdg+19CGc4rX4UAYi/QgqxldsfZstvSY5b64xKp3cW+FTVvrJdTaFmGtOLUlYO3ShcQiWfhJCLr6s9u+uNqDxb2WHFLkHLgNCUc82i3GkoOczSzUZFbQnDlskUJ2U2w==', + 'GMd4DYSpklPw22cICzBMhQgniSlUM9XtbeNDOc1PzySZqbHg+xA8Vzl741DHn7JQYEBwL95NiO9ImImrAuZ7OmhVKNP3EScbxqM6Lx5s3+Ooe1t5nGtEnfP+yobImdimOwXwf6t7Bxw5zdv+PtdesV887XtTUy8iPOYg7S8HLH0dcH+IygLjwwpy4StxYahhVo+3XtQ88Yxk8/kVNnnoGuApPekZJKzhudMNeSag4mtpnNf9vHTkZC0FAg+1wgouLYDoNsDEfqYftynz7rru8aPS3xsDdM4sPnz/UrISnnGP+80sg24obZEcnTlGHtebaUqSxWfc2y9u1ktx+J5hGUzia9PzKU026GPZLOE=' + ], + [ + 'gSdOzXXftQxa1ZERqUYxojR4HjTbqMWXv/TjHEPyMpE=', + 'ohGgmuC0PoHqR7OMX7QCh8gO83K9J+vP', + '4vYERVuJbNhYghiXg53a/Uvxx9Yq5lVQ0RDyvRCizq/XEQBzd+QrDq6/u0PuG6tHt9QjLyJFb9XqrLkimE2vK2Ag4YcuPy2fImgfMg/FpsfIayf5M3a52Zj5/vlUiL02cCjRKkcCbJgZfPl5II9KHrTVl11szkXPIXBkdtuFqeOaRUPFuLKQAjDeUNYEDaxuiSetuyz5jbURwO1Y1q0+PsBesTCOIqjYdTy3FuT78Zj0HScaPdqkyxF2JhtohnStedSypx/Z2vAuRjGjPYkIA00dQakPhbjXr1b3HUymlV1FrbsqFpnTerkfUrbUk/XeTXnd4pnO2xMYAcJchoM=', + 'cbZVNlE4rC/G/4aFFQ3JaB+EhEBHqmxTvZAnrMqDhf4ExsGLCj52TLkkfRhBT1fjBeBcTCd5h0W1Bgj3Y4QvuRiNZ4xsVweFPtZ2uDsjYH9WLQNF7aHP/0ynwnHALdgYSXewSCOQXYeXf1/3hpiPXjAE1FX7sGYknPlYs05Z0kDSfn1IAZ2XLbAU4RujeF02Ahavmt/N/wPMjecqU0y66Jxrry5UT0Zbp1hCAJjBZwHjshTXcUaP8bNNPl2IxOZ5/N/KpnM/tcxqL0LK/Mv46YbE5raWIfqr0BMP5G582n3BOy7zG24gakWUIRck2SU1T8Ew84zqA0nmE383kU6UHGNMt1aBhxhGZgPgduts' + ], + [ + 'Bg3ZezP/neEoHHszP6oTP7so+qetiCzxw/ZHfhBNR9Q=', + 'fiSRAL/0xBPFjr0pv/6YtIyzrWNf/vtm', + '8j5eYc/oZsOtq4EqmAfM1bRFGx+jIDPDAR9JCRFONmJEe27PGupBEKrjx132bmphpiAmNAK2JCWnKicO+rYnegL1H6Qnls3XeD0FVFZG7M9DMmry93hD/9FuVoTj67z49JMBov4JfR4rtGqEkegENnwwqZ01b+HVNzu+U8lSfYGl8SLc1iTPZlWBoUvkZSZEUghmoWqsc4y9kIvAfbOrnkv+AmAb4RZyuO2NLQz38EUrrZtadcS2ezUAMQg7maYoC9gkiDrdaLGaJ3KnVG4OxumHgaKQS6H1bTmBVf6rNndAt1I/WsfQYBm86aNaCJIrBS0pEJGGSRmwLqz/9Xx4', + '8xEFbNd6oa+nY68JPuDNTw+rPxTGoOsEVuZX20VWf+jRLrx7gywGwWnS6rCRPasddZINv+RfhojtWhhkbeZtzK6o83+O7YDDn2oRd1Q1Q/w/H1DtZFpIdCcwDkfCr5saEKU60jXokEZMWv0U80WPOh1F5Ga0pCgk/+fohPX5xZnx5YWHXihLK6QUra24Q5JtfI1T4Bff5IQXWb6NbyJGzON39Cb9pn/ZdDQb3t0KtYh8Bro7HL9KnwFJVtFHOrT74RUkiFQYoT6GME+hBkTVil6FH+y5t4sy7FHWdvtCeEbMHMyyWCXxXThJ6Mf0iWDAz+CC8gTtoktXRDOZ2H0vsxZKmNoFdRL6LAhgOc5KKg==' + ], + [ + 'OUVBbDXZNkHvKDlfrjDcPem2n478TYPCwzMbDHiwng8=', + 'LSO+V3bcREEGjavLWXBYYJlpZLatPu6/', + 'vkB6A5QT4yzGuWGuI4jGqEzxtavT6BmlgIp7+Bf3GtRDMyJWlj0ROZNIThGw/JBYSZw2OiFKl6xDU0cHpFx29EqIOIQpHbqXxX7KORHtppRd1x5rAFUUCjx2dV9DuX/O86A/WcyHgg817EkkLjs/6jFKhcnbD+beUf1znov3/HyreSzQFpg4VThbWQhDmDkOo09RZ1trsNrDQtLWg+U7SRu4/MiGoQ8HHuT7ontAJ6XRTPuTqXaWbTHZaFdG8FQiG3eVX15+it24w20IcrG1JdJMqqMDf+9UEH/iV53g77sFH8MDblxh825dFz2ZoEsL8yAYDrzDvdzV/pvicGvj8A==', + 'u7QEm0tjbViv1YfuNKhFKLRqFKw1kA4imvpT667Oje4tU1IiJvxneaZMEZ1W4emDRGL8GiG8gYt0yXiMWPzREWCJLT8vSutJGljqN10kkJT+5eyI3MCCAMeEwnrkEi5pVgqEilZWWFRd50HfFNYpxczuGXAYJjIXgLNxxbd9kr4qsiJ46ncB0mRI5++fWiIRCi4JUKJSiuE/IigtZe59UsoI37xFZHrgd0Q3CSUiiKyHF1pRFadp+fMpYsysiQSw8RC0uOXAhLL6+Um639V63R8kJBpkufPv8B2AFscTnZaoUR/3a6Sar+tCFD2XDE0ppfvSGhJD3b2dwURZr1q7Gfu1j27UMWGbBGDxj65r9Fw=' + ], + [ + 'efnWsC6lRJ8sWJ/sTzuR/rnQ7srN4ZzwpqwQndhrZOk=', + 'Vi+2rPglndGXn3Ua5XNLiAlimozvAFdz', + '829/82fwN4yyNbFfqp2AYtAgTyyufT/AgIhhEmaqkt0ytKkLUIxL6DpcITtqLKDwV3F6K8f/Ry92ygJluIbbvRxMBYyIXFq3upqxPz7GpKRsOMEiX6gdYlvtp5A4G5fkgRCPygFMOs8Yf8WtMpoRAr1hWQOgO+RGI8MvvCqjprA6/R2cU+YOpPoLb2/qXwxSJ49DpcYDHZRxYQ/H4zYNkBOj44SSzajcqrHa7kwwrJfKDy3X3wKmZ6fadBbG2jFqnum8OOPziycToo45OP2ZEByeQtDjH93ScF6uIRsHkkxPl3MN1+41Ip9YPAo9wlXwZVOc8dx5FE/LO0wY4y63lS0=', + 'CECDi4p6LwT57U/Rh4bXrdjEN1YYXpduK2Lov2UOUlg9toebj8Ej+QUNI0zCFXE5YdAfNsvKebitBj6p6uVfh/WGz7ITMb+qpTkXgIhpZoVucl+hZ679NRL8Zmibruk7VYDbT/Yp7avCEEJPDyLIRZdIflaRqRSHDgufvfljq6ko5zs7b4oHAUeTPDAuT79rxYIK/LsQ1ig7AaZQzXulp466myXDqkpc3JioQ70a74KPIjFj4/WSLL1W9FMGuhnSnCfDYj6cEZ7PBiEXcf8jkqdsspUxDoWlpceVGKmDw/3SzCb1upPm+O97I3g6AsNErDuAIhDhQpYlfj4uQcaRrpyrS+oUK743quKT71CuX3Jp' + ], + [ + 'dQQcjmyLgeaEj+FP5c1dmdiHq1paos0VU+4BGc6A+E8=', + 'jVQogPjMYaHGV10b5dp+rewz33+nHc6W', + 'l1JghBae8Jnd5EQtiWRP0oEcJV5duT3ERCUqY4weE13HGT995dy06sdCxf8gXrW6CVQTiffo58CyBuApYFE5twZAWdYX5t9QrFGlctN8uIx2iA3UpqaVCwg78Vc7QMMaJYfbJKSmqKTRPhhAGQsaL+mnC4p1r/n3egjZHc9MMlVJuRNbHyL/3bI/RhsNS5RGBpGGSGbka7jdhSE6aKgeD/grS02LUPJIhrjipx9vSSjoNe7AIbApwPUEk8PGEUKbmbmzb5KtPndM1EzjR3bfesS2jfK0WdRtaAfaTK442hHnoHS1EeXfEOk+ilo6FKitKlqZpOjBwYaYe2EUsKpNpHUj', + 'Z1cGvw5ozpAA2Bzw9sjQvnxZ2nSMfsjcaJLOCpQihB7h4+RYW3t4NZL+uYM9z7yV8xhbZQ/KulMvc+epMV1ElnF85yz5Fmu6RIXr0ZlMTAkLpaKTCII133yQVdsKwcIwj65Ujd+44hZc/DO0kv+4n2set8vWpI8w88XXglyGX0b3zK4cgK9te07ZvtZ7E4E5W+1E3L0ZtmK0s8Kw/wOoZiG8kOqFceRFIgPqpcXM50AvLS2w3zMHKHN2mqJjvEZJ0SViGtEHiy7BQ7nmRwxHHmOdhNItP5F9ntsEn+fEvDdMhlawYoIl6SbaRIIo6S0+K9NrUYq8t7YC39hpjgDdh97IGmyzIJC4X8asMARaNwLELQ==' + ], + [ + 'nHrNPnUYFePTWj3m0S3rXTOzdLXsC8fZgNoAew3aJeE=', + 'uj0zFzkXu6lqMXPX0navYkydAEkSrS3b', + 'x6UgZKtafKGZrcjzd9DBOYrwZbrSJMQrnv7FfjaK2AVMmHT+NTT2tNmpouc4/DxFPDlTrJY5N/v2tEjjqSR3YV+GPC7gQm30ArJhwWIBtjkPPFOE/0lcXzfn+VK74n1k9q+nwjxb+dTOsLpqUxcndKqXU+m0k4YwIhmpb1xdF1W+g/l1HAHwj6vzTMFCAyaM8DXjbuLqT7im5U4rAdKV45skLTE29gbXjaJ8D3ftkB/o8qyqGEGo0KqDA14Vihvz3T9LJk4x8kCLBkBTqS0cV5TkB6KK/gyAGy9mJDGTFSq3Jhjzl4QENsXG7mVpDYQ2RxGjYg3sxfT1tfTZomTL4VtHzA==', + 'jB5C1kx7FItVGf00j/XLmcKGkY4N9p4p4UhRgnvNbOPlhGgs04wXktQeXI5eZEam/xa0+Gti+9f50LTjeBMljY76UrS6B+ZfMvVD3oy44vHGguFJq4LWBsSxkE8PFp4KQUxU0wMF3X0f6ah1yTM2LxSgCtCbgjCVNxugjC559TwWs6ewLkITl70LAVcR5YO2jrYFhzZXVcEjHuUYT9VNNDIiMgX9nVEMCdRWsnzcFXpKsw3SL5g6FWMvnXGge+fP4f19zHnCvefJMZPhC7LmGLff3uOamjYBGmnMYhRr8zlGfasC7LL4WuUEpZbGssC1898EQl3KZRkkoKG/YQOOpoLPC3ctXXA+sAmf+rYKP11FZpg=' + ], + [ + 'WoCfH7f20tusNXRnXq8fwITo3klSSdonaJE3Df5W/bE=', + 'POTsH4Z+TWAGKkU5s/vPTGueN3ItO4AY', + 'lee9Al+Hd8EMv/A6nc6OFcC/lmnQzx/GaY+kbwirOclNxnTeAXeOnvKKdP0WYR7YOzi4ZrOlwLbEedpMlmWlHsG47DShYsvTXSa9uIJoZLhXwNxCmMdAus94S2caBWUexW9XeT6i6n7ES7nj0/PRsRvfQAYGgHSkxZRL/tqGNqJqW/EKVNkDFdlztLA61M6iMXMOS4DNaS5i2ZSgviMApssmgRK3vszbsjNLlef+2KxFBw3Fc/gP6wGv+I3OQ+Ss20nj0JUK6u2uzDlvIjez7xq16pUDsLIk+1yjq+vbJvJ2qVAhhmdV5OqLVa9t3pJ0KeED0OjCdkh7fpbbN5q8lUHfifk=', + 'DA6080biMX+00FVURWMzEYf9sXlmIvkBRqzfueAhRgAIWOCMtzhnjUPYSjpoSvnNaSVQP2dk68/BpG4MTPt81ATrLDkSu2f4bQtvQTlYAX2coQvIjNP0smXy+ZnZNg2d91/HF8j7Y3G/zC7xUu/gR9cTOjgo4jJ+PGxV1/1BeKZFum7fbXGDrv07HTZ1uovXQ4o/N4jz0a/0SVilYpCwYfdv9KneVGTXxpA/ttxevdTl5vIFBAeFD9aVpz4XnwrDgKQakEfuV23Y3m9Mq/KBGNqwrbDb7dahAncbXde6pB4Qky5dtwOF8aLGdL+bD5xEI4JMUIknv4iIBVocuRQd0J+iKNUVVVxULrT1HKHvJCANtN1l' + ], + [ + '4W/0tkLjY9mDpoCg9iRjQjHI6axZV0Bn5949fLJzkzk=', + 'rO86fUzc8D9Wt+WJZbp49vzI5slvcJUu', + 'i4qinflkZAhaRuLk8nr2jzWWmvmBZ9MldTEG98/phZku9Kkzaa1Bjol3qK8iTOxuo0BQDt/C80onni/uXkd8lV5ZSiQqJRL9fQ5s325kFKgU83FxAT8eGkShcui+m65+Xjh3gG4XJ540UeKuBp5NjmmaBsCPpafGCob3WhNlBaQbE1mF5Ccj1Jq752O997d9feupKocY++xmsLWtUdWEZ/IAPo9AS1VZxg3BsIiy0Q+aLAgj2qSyCxO+w669F5OhMdhuKgLHPegTZiKzz9j0UlyFUEXvC7QFTy0BRBcGqAqCTSuoNbB8hXCjk7qZweUMUb12pg37FUPSNYDnA2sr0lQ48BwN', + 'lqqEu7QUcEg7TpAn4MV73WDFvbAHLtytMgFw5DUe/OD4ffMAsrqAmaCJXS/9FdgExFVlLFYNqAFsJaMwUBDyQBWFXIrJV74zzML9xvGCSI21+e3UfwRQUKbzm/imRf2Qsultlm79A6f46Pljcc6jhJQegAvcEVw7uvYwdo/R6gGBaWuVCkJh5GsKobwS7e7WA2G8U7cMNrCt0JRER1iTLcA0RxN8/aGNunKK+hkGPLJ8gPAP2mzvej6naA569TFO9AoASQ+ySGNOcEtOy+IbT3DMJyVZr03L0yqkjeSu3PNERcUyzsn5ovnafk3N/OO4X8Va6jv+TevrtzHu4uyCe6h3P45iTljZm8Q3S+BAtVpwnxTU6A==' + ], + [ + 'JvCiz/ufOFExo+WiVJkiW8M0MM+fQOJHuzzz1EcQcIE=', + 'BXjZhzMYwvYmQdcyLedeGFsUBOqJ49jZ', + 'nN+ezL6dWgbUnDmK1fgtiicfpgsuiqSaVq2P8eBoXQRVh+HpKf08u7Sbf8zRGIoXyI/YBw1StChaKMXPbNpoCbAtgkxRaUj2ICsZPsf4geQd8t8aP5L9/PYwsmW830NPFFiFHc0XZH/dLAxNVu9nq74ydER/8FMKxr1scLW7T03YzZsUI71oOXvtXczS6+aI/0eYIEgD9lA9SXm8uiv7Twga1aNCdIiytbvxp+fn/xt1C7hYmuC0MERKzOFbdLo8K/DLs4SgWuCan7rn7yzX6tkt8exEPV2ukGv+6YqKfvPghnXhBTYSqdX/3pZE/qkeLXEr8FD4XDPbTC0k4Ia5PD9UJfho2A==', + 'm90VvdVceYpwpHtcxeVjXCm7s1DU886PbiZQFsnEK3eIQqHnyXLHJIRiPRBpn3PlwIbHmVsb6dDNN1MZs8iqoi6YJigO3l08WvqRJCKFvq2aLP1h19y8V58wynh5PwVPv1k2YbHpP2J8P1dJLUzRfza469xb5neMBHw4GJnW7GjE82K1ZyyFG6TvnD8QGhysCjbid0sw9sdTt9AvCsbFoJH+wY4JdJ/77/LGnV7C7AUx2k4fVHA7Tn08G2ZXcsVebBjvYcNyYhGPCbill4Y7FefsTNZmsW4TMC738mPw3hz72YZF/mPW+QCoTyFBJVkARerwo65Wrzx/NrBIwrBBH9Xtd7ODX2AzzyrYxz0IU1GCUstFLF0=' + ], + [ + 'I3TvWtAEDQdguR2qc/PesVpSo0OYiFTYUyw9xr8h7wo=', + 'eJxuvNNcWpUdd3JQ34PUNayGNIyF8HsA', + 'rByLQtVhB+2t+zHm8TuC/VRWW/wbcTrCpGhWYDqDciO4RX9lNWkr+33N5P6/UIqkRTIS5c4SI/1sFAlxFFrGStTVciFZkFgC+2RJdcm9mi2rfDpLOrwcGmRC6vNhFdXTaVjprg8zpRRWAwsIVpU1rW50Krt1vIvzTShdAGW616tNMkrJ0ArMVAuPF5AHBOjoDZoKvE7DBn729TjDrsaaVqUtVOr5apCjmHx3IU2Hb69mvhGhoU5bAngYiLSK17DtgumPeogQ4rktar7P7RDwmoFkW6qig+0R37SYQQA4cTUYgTFW73o0s0/Dm2G22mLIoBmQMzr8bXla/7jjl0a8t4yrKAqdU+g=', + 'eMomIvTeOZ9waXFuED1eCpjTJXD7dfsFLU6yO2dE567d+DLHRCDtQ+gdWOnK445DbOU9DfKiImUaavtNRqTkxDGlAOU/iTzvyuPv6AEnO0mM3+pT8U3MBItcKwTkVg/BM+7UUMr8zupTFrJjdJz6xeNqZFD5sCxsja9PuAgtlqFyWH90SDo+GSzHE1aeTi0TSrGq4gzxxK1gPjJ7KrpLzHxeVflk1VzlyU7210Afs7K7TdOS5KNZlXRamPtrCuihEy2kCHsr20LNz6g3NvpaP01xRdjQd03Yl2KKyWSzySuq2hI8RBWcWpxOz6mWjWB5Qbonv4WTNNLVIa3JGpWYom3g6rFhhgGDESI1ECX6hkTOvgh6CouM' + ], + [ + 'xM7WhaNVB37KnXfsKd0RFKjZuQz8NpoSViyYN3BDNvQ=', + 'rf7pi7fmkNT8H80rbOroP4cKXBjXxMpl', + 'F4gJA7L99YAJppPwNHfEZHMMAxKmQ/tDRO14L+Zas44PInj4U32dJ3launEsbjfs3gz+Jz0rbpSzkYTgQssTPCKfv99SEhvSl64S6jygo0vqqeRc26nIZlDnQQC/rHTnvYdUjLW63xUPh6Ergri1WKY4yTEByXkKAe+lmxObaK3VOM+WO7OxB71TyaiYS9cSUN5cH9eC/9toCordhjqcm7jtDVIbQ2dNTwkdVz8JeHY1zMq9qnEN/KI58HMzjcYjqyRqD+7FRY74nNWJB7k19vXCINduGGQZZQWiVRZfhe1HwmUXX3IlnakX6A9a4lbvZacmhmlzdm61QY2xikqtaRZYMHaSrwFT', + 'AUe/UW8D6j8N4Y2bmvL4lDrMMTvf4cASiYYL8CFVPeu/TNqAwqaB+7p7oNzn5j0cRO5wLz0CQ6ccgD0xxDEiqP6HUh8AVwkHG8KCBqh7TswEal13My8Flug0Wp38WEIvJ+1YmUtYEhIe5RJd0zpSSW3a7+scyl2RAdoej7xHeW9NCsHz4LWXf23UT+G5idGsqDejZVJKmIy1mL8U8T08M3izeEwKknYAVVkXy6tI9kZMhUknRg27YoRkdDbTHUvQG1511HY0TONcYIn5X+diDJfCN0Z3sutPM3SneW7Mq8dKqMkpJyMnduWTXAhPhGxS8R30HOyf+WsYSWMkmExkJ/DkLOH2YX+L0WkZzOmc+u9KdlYvqsL8vQ==' + ], + [ + 'NkRBeigrCIWmpOEiUScfBLMQY1a4nt5uoHNM4Icfe1s=', + 'lUQ88y1GIJWrLHgTu/OJ9wytH/Z9sWry', + 'aR76uutgfCGQgDrw8j29Ua7216Sm+DlEKOimFJCi4WOdkC0zU7XPXEH6+4K39KjwJlQkvsUIu+vvoK+rpJmZxdcDzj1QUbWCzAHryNPfqPfhCrfZENVLBolVCJR75JG1yZd1RvoXbhvkx+bEIbGDRTxmmCvZfDfLZWKUt7ipUZt2LYxOcl0cFUOGRiYCZanVlGYHd1BBlX6RTlNvWUZpRzjdoZ14vs4kLQcHkoyEIk+Pz5R692jkEfCv+jcrX3fY00SWh/cItVO0z0+lEKIY3Vw3ybqV1mJF2V7xIcjw1YGTEpaVwePq4TSIATfrhZnxpJZQY2dzpBp3H45HM0tV37wHUGrarc0lVw==', + '+65i+/hqsCf9WD2TpsYsGEgcALvvIg0LeKuCxum5lG/vViWXz/dxtv9NvabJ59JXv+NlsNduej8MfZdqwO/hNZEzN3sWj8jWIhEW6vjXuI/CsnbGoaebYKMBO4trAjRjKKVl5dU9SZ0qvQHL1dsPo7uECMbhtIEMaWtE81T3JiurHWf/fsVXxu64Zsbi79CXv1teWCtWFlV1A7GqvI29WyriXNLrOjgceSlRNPDVDXYQXXLoQ1TrABDgbydRn8cFEj+seZWQqS/mV9W+Qr7djjgi3SNYHlJRXERB8OGpqHAHDsPd5ocTil+tFob3M9ZdKxZ9NyS0KLuj1bJQQxZA9TQDD11Q94XJxszBQrn9w5BX7HGH83aNgoA=' + ], + [ + 'F/725gEAnqXYnPJqHS7M+rndZZUoQYGvlvMW4EhdJHg=', + 'VwomOJ1Gsfnx7m6zPWJsltRYzS9xG/M0', + 'ylNH9sE3hDCGtD72AUp+mlQ5Q6+eusBUYjYhtMYaesTbJespc/Pt4uJtu4b4uxpV4GK9px3TihEFqbD4f6GHUcxit0ZW5OK5qqyPdvG13IxYAGsfAgsxj6z+SwY6rA7SLrDefwiPs+ya24MMOl+NNdK/NT55uP4Rz+eoUjlJlFq0piWnfEBoReNRMqwbPCjl66wyiJ4cC2WnlJ1LK/9JCf5lkg1LBd40b0SWiF9N3IRO27BtsKirehCPwiIksoHPVeDmgc1CSWTT/6zvt1ZIi5aYBpOqB1qRw6Lgxof40Z2mUvUMZ8mjmjx8/94Q8jW5v6Gc4y8SW5/h7xSEajkJ77q3gxJJzRDZzfA=', + 'AhN14wDR3dxBR2SU3Yy/hyI0YTEI83IcBPX/4FEc7jX4YWSUl2+BI7h5GkUJBS0JEO6zVCc2UgZwCNdibgOUT1pNoNO6SxMww2Pfh+adAS76a9L8s+OPSFIwe75HwhQaut6qBrMc+5SGKFrH+K/jhv3vZokYZ1KavGZtrTaNxZCAl9TcxKPcAuSWN+R/X7BrQouYUIkY89vWia9JqTipHPf48jkbtEnOkpXcc8EFIENqneIwiQPMLyzwSC6ZiHd7qWIJButno0If3hPrKf46jLH00aC1SGvYxD5jm05Red7BqG9Taewo5qAQdW2V99Fs4Poa2UW323Dt4g9lpr7taoHBLjb7wzSYHB6t+45s6eYbWexC3Mw8/nai' + ], + [ + 'rypS2zIoaB+0YckJZkdOu8e/tg9gGs3JGjbBT4KMPrQ=', + 'TgJXMSdxKBvwu0+A+bQkA+Ps5EipkMIf', + 'O/5rceOBcj/RbguQdcj8Tbx0UoJDib1cEZxzl8hg+TCz1nR4hvK/JmSS9ZyXbv6iJLN8bNDehDazmH+CWJjHKiUnbmhwCphYJ+ZUH+6Q7Se7BDX2ihA9vJJ02ztwHMNvZZo68i3+c8e3/WRw3NYZhXvwr5VcD3ZF+2XEqeio9D+HXsp/v4FxLAIa40YL0b/4+dbtnekeXB0XHu0afEt68K4DbwT5dvCuUNhwUx+v7ieFaQtrEqyClv0HoLpcwhhl8QWD5y7zijOO5TF9qe4gBvwrfZIuPDZ5HlkzFufSN+T9Qzx6cipbaif0oziF7zLy0mRtgD+xhm++4atANNi0NSenmMBdwYyv8O/g', + 'WKFwSbnZJZqA5IxHGNzMJbrSwvG2ggQRGoSDv/lzTlbUoKtNv6hkr1stcM26gVRZ6H6q7IzHD02Q6DZUy8GdvfXMiNqFwCz4RgK/5Wh66QP6OI3X+qymHqlTfSf6R06Mb8OqpkhXcUcQDkLgvBU0mOiPgY+r9dCoKKAfvetb/M8CFo9Kd8ZAXd/mWyWafELxQCjIFQS8DBji5IFdLs5IGDuBFQZ2scM3aJGW5KftpWMlQx7uayNFTzI5lYqA9yiM+L12isOBqJ2R17VEJMBci/D61nHjNP08LnU6U9yyZIodEFR2rABXoYqFzBVzQtLAY/01ZNsaWwDO28UL44jnbk7GqNN35kKDg/JmNbyKqneHbwiCZmpFPczpLg==' + ], + [ + 'EAnWSqc8RICn+pAltySNt/b6P4am82EFucSnLRFg9qM=', + 'I/WilldpOynIP9Cg7nhWfZ25zzT4DTrW', + 'P1/ZMcxRuYnHzfcZgoCPxdVg7LEziBtdtOzraX+K3ltSa9Hm0ZeSayYFX5Wo6E/oDCjhUxlOeZV+W5WouBR1QYH5uh73YRlWHyH7W4qtN3pE566PUrmisyrsmMUVSLl9Y27P86qq6tKrpbe498yZ5yWBlUzTuH36vi9i01jptxZUEngC9dQIvrMInngisXQu1IGw1VuncocTiBYi+1lypNuaJHCwiX+OkALVTpfC2iNmoxYQNNBhqnMG0L9KMKpQBZIfe0R+uakuvkdQUIgebVo40zlZY4tfn6me2aBDzBgi4St1wpjoKOeBUkK5mwmkqJrXlLXKUCnI3DCR9HlcsEZykpO49H86/oTdbQ==', + 'T+pI+9ufWcdldYOFs9kA2SiatrY0H1wYQCmv7flK2rASBaojCRzqqbUZUJRS8F4BwWAbRCxYX6Wq3FNctqioVBWFLO6AcU01k7RmHZaav9GN5m00LCJkmx9/OwlmybJf2Fx7Z1ITINuR4cA5sp7Si8zmWiqj/AEd8Sc/bfqqBkZbG7AfyBJP93UY0RWf6xYu3HIrGTItRP8zgKc1SANhpMYjVErfhLxKbqtEo9MP3i328DGa27Wv+ZChVdcGjk+se/5szf5dud+y6Cqycxuu/OX5jWXj3RrHDBFf642Ykhzc1q0GqhlaKrmevA4rf2tAhld+MI/KJYQ/ppel34cqyFZKSJx35Z4CoTOxHRhkop8bhCpukzQNbYhehPk=' + ], + [ + 'P7vW2+S/m8Vgjh4nN2Y7q4/tQdMryY9jZnXvJa8BHZ0=', + 'wwozWfuxvW0teGjubMTer/m9nuxpQYRN', + 'QUFcwWSnBKGm8QDEjaBNBN0/gqp7ND0+HTJO8q/lzHAJ8SgvLea056BNu6ns2fJRJvL9wlqzJCjBBHPO+fWhGdWItCSAYKMaRZxbqe/RvktIDKhaRvrAjm0aSW8bsPI6n3k8F+6BtX2oDYcRdznJPO9Xow3kMACP4uaU4hnkzSgAnaPYPMykul+yEWlLDMAexFUDl0XDrvzqarM/HqZNMz9g6V2G9AOX39q78Fap5OHzeMqfvusM+txkER69hCybXiOljLD2EXsWNyG3zwdEdRg0TDeCVJxUz4jJ3yv1IBl/lfdt22/9LM+LkdZ+52XP1rAkovHw7XjBXQeLCgo9Dj/9WdrNadmpiVhQTpc=', + 'EWGoGjD48rZTGswyfG94CX3OIretcV7QhqefUzi+OtTERZkb6YbXh+f+FSy7iIHikjS23MLiD1rUhY1hXLC91CwDB0hLTGyu/mVETfHffFHJDmlf8Egbzym8zD5g2PvRkxCM/2tU5WrqDYLYVrWNu/1HZKneZ5JN74Hom8o1RG5gIYFLvosEziJvmaLb3iyvA3bX7bRRi/3z4MCyBTUq8v9TXapSHFgVX5sGCvnsd0tTj99EUj1zPFhrIw9S+N3imXqsviXdobzZkwl3rvUSmm/p2HsPcz/JzLP3hv89iRidGdYOHdqUbM+FAXImSXayUn1/zgbjO/lq9Tn16KoxIXzrgBIWcztWGC7F+OQQz37+6n0DRfDxiAnYRH2T' + ], + [ + 'gtBLkDX2TB7iF8bt6hjTUkuqO1AA/dYQkO8nBoeq5g4=', + 'desCqZARcV2joH5vJPTnvG+uAGlzZGhu', + '1QHrlX+3erMDcxpJL3N85i+9j8/q/aUK8ZElnP5qZlTw7AuwyQ891oCKxRs9LWhh5dXFoOb/5nC7O+kRC06GtBW0OpR4C02JjGnKhDa9DfZ5duleYmRa9RQ3WxJfaWM1rGmmnS6u6GPjc5jzsdExDtbS1W5DF5PpB3kNQsRjjn5UKfHI51GDMyJ44qWFaxl71YbIHqyvxOxjp0u24F7zii0bNi6npi/Z8GRnCdduwJbbZJb4p3cpVhLS2GNM2s/H/mCqReI60i7tjGn83YhLD1iUeHFQFCetDrbnbHljE0pDnDqtqnZwrAUqMXmEfQZ4OrrxNBx8j4rAerkHlmf/CxzH1yuou87B6Sc6FhR5', + '+hff+WUpzLXX6zcjgfY9s6L2tDBbLK5BO/2n0/onheqDrfLwIseUJUprQ/6NxejGvweh9B+WPHBgn9RDJscflDujuVc6sVhMhxLjLJpcZDZM9ohN/YjIUv8H7WEbjtvRNPuFgswLqBiLFWd9xJe7EC2kXjsrhd8IA+xSv8qnZGVW/S46Ms4Lg2SVC43M1Ngacc0mluXyAHtA+ZROviz8jgPrZx08lwjKJI7lvykQnH5qHSPhNVIOcsU4yfBDZfLt3SXjhCi5jKMaKsNAHqWP0zB3nTtgUQj90GiJx0zNSP8T6rXRJnUMQTkhaXncq+QzLgKo+IhTi/s9tyLlbcFbymrRD7ngXbW0ZzpZie8ZmmLOOBsI1ajO6TB9hBYzww==' + ], + [ + 'iH/BbLZfxLaHO7f+qPI2VzTdAEwcooewLbAINqxVgsQ=', + 'U2nKAD0ryJ8kR6zPfimdQT2IiwSMRRQJ', + '726r1iAVPAjoa0cYYPcb5LaXQXH7tfsfAz0F/WFW6+NAkY8KOSICCR8hV+HYBBSbrL4FW6acWzVb4bPdec5FABpd6rvLJ/d/PWlyLZ7UQOG+8npLtOG5TsF5OfpYlYcpy3sFlLeYtIaYbzS6k6aR0kLl3EwlAt00+dkiAxmtM3K48qPNpfDDco0AwcaomfjZyFasZf51a56pObCOdmPMG2VKsbkbTMcahAUv4+BupU0kJkdDZp7EUq7yIzLU2wHNHkCX9q9XmAHjjLuEAuWHpQ6IMjxf13mYXptnUp8UIGI5zC1fP1j1XdrGHz5d+h0fb9DVFg00Cx2ifmD2o5F1k3cAz3ax10YwiDc3KACMsw==', + 'wZCG6webOEChYIFW0gI/vqjUUcvOjen2GXuAewfWBAd+uFM86qzbYO0kQwv5TmCHOEqKld0FnVZdSW8jN70BAi/2jtR0joo7L1DRcOOmwx5jEeoF64HK/kZiI92em609y4n2MWVkVJLMSrvoO8Syn5zCn67Z6pG2BLRC/VxnlLU/NFb0WElQna3OpwOtIrTJq5rQh3t7AMVpa07kSdCSeRPUlQkWudfiEgNqwtvQMakS0egBuqsY+IruCuhH8gvH6KvXjsCkGxwSiwyEOfUXaHDNBqEJpIhUlUmGpCzlJqVchgK0oI55wpENVZM6mnxV3NWkc+LPDyGs3xJpxIdcnPqK5PhbmbLc6mE/8XvQfLYoRuGj+FJrRqOISF39Kvg=' + ], + [ + 'fWBucYcTgplY0Z1KxGiJb2ad8kJxERLzPW1ue+wLeyQ=', + 'wBbLW33LK4v1MLQBzbsJ2ZWLWD23w5sc', + '8RYQHMHkHqHwFdQZW9r70k9phTxumk2BSVFYjyUW3Nuj+18UEIa300UQ8hgtEaTPdeT3M58Jea7Fo6dfP95K29b9uog3UjWSJqcDxd4i2BcAAgBwpVDZcGmRMuRpGKgHV9lo1D+Pag28SuLam6pC2Cy7mCxyKGJFfdWOgBWqnHCgUorr2QvaD+WONVBmj829OpV2EP6VvjociMEZMOQhc+J/vH57MFpG+vbN38QDSxSPU/GwNXYBoDKuuoe8pAwVA+sDlz8V5i1pjr9nt1kawswMtePSLspkVc0Wt5/BbP+N/N7UtJY3OXk2gmBymwE9avyHuq423z6c9uug7sf8U9b0o4GFCYKhSd12v7cptts=', + '7Jb61JKvYshXQbmVCQTsthXYW58ACasxHz0wC1emCTjy+LiAoLb4+ifzH7vDmxIVN2E3bk91JW1z0aGrO4ldPAgbwbukdLJsUCCLye/kkyET8sD0jEgR3/Jg6zR38dogik+T/xei+wxfTRbOYh0W7WEsD+oGo3gvLE6MhNycDohDjPrjSR/LIwMOuQvpjgedaxz5QHNFO8vU0Or8X4neDkbn9OXU9eV6ct1K4pc5dUD61g7J+rJye48kOit+89n1NPmvFnXNLdv+qtE7LLUiplCkc+zl23cpNthYcTMerf48KFWwwAlUCgPMdkzw9c0/rw7xN0R2BSBgNiyuiR3MVwfKnav3MhkYnOUGDQqNxs815ghkEO8WG+jtqQXXymPZ' + ], + [ + 'ihS2M9QJqeKA1Z+b57EnZ2sakT3/MCcfVEqlgwegJR0=', + 'YcRQ9VLqnhW1cZfPhz2oFp+A0i2fD89/', + '39lODGE0WtjEubchmqCM6+DwJlx9aVADB43s2vs2UzkID9pbJe7kPlFV0ifK6JMhVe/7YkNVKqcQoqZySq3KX6wIhdR+fyScfa7YsPPZ1OKv+DKVL7RdHi51dW+s6Ua2rFFLumtrHrxIK3XauOvxeCq/SuD3mbBlM1L2FmrhAkYimSvc6miKsinzT1bGlTDgAzjz0l+VrwLhc7GhAbW8UhWUJIF4+MmC9zFq66PMZ1V1WDZ/ZwGcAjmCNG+9JjRTZbb7v5Bh7WoKzm9PFCCUyWn1cs8cH2dJxxEj79he3FdBDEfEi5fClmJ0Eu1bUgGemsyiLl0nci2zAWgD5tuaPv3SC6nSeQtPQZm7Zlx6DNyG', + 'WmntioY7teVW+mZaH7mupxm7Njzwso2ioINAiIsN8zQRNpEuWdBr2rZPsZLnh6u+uSx47Vk4thMu6v3pDuBYdh9SKUa2qCMmuW1Zv7NjSgC6Q1LlhLqs4lwzBhYOlhaHSBfefRe+irN0ynJAMJ+Is03Rreu7aVFjEgFiLRmCqw6qQKSQczN/5TJMJJFSIhGMJ7WSRYBIOcaRM2RMfIPKS5voUHwVI3fihvPyDz4UVJks0wfrRArB/SUvN+Q8N82AA5ceuttkPBoe/3LZU+oRboUJBKYactJRhVOeDaQG2MAyAM7u6oKR3YEbTc3TqyIan0OSgm8N9BBtor63jDKnygwV+LG9lIDNe/zJITTz/fqnvPdmU6K6F1klsyOE/JtZjw==' + ], + [ + '7Kq9aV3jTiMZydaZCVTnoNSMIGWEaXip1oGXxUvD+xU=', + 'hw/t9U2vhn7kgzEJaviSMKSXVs5lKdNC', + '2QL113R6f22KTvJ3pHAxzKzuPxos1XUKEWD2R5G5Rm0T1frG31mJwgwErrfGhVHmzVdAGcIefhatoCrIjxUWcFiaX9vTQRwEv2Go9FHsFvDfay1MRsVSTGrgCGmjwkz9WTYs6sr4Wh7phdYMH/iy8+jWLFyTScxRXXT29rW9j4RqrFMuEpga06LkhCqbo8tzb6+oo8m0vz0sYBqCBbbYuvTSlcVBCBjaaOAqsySXDoLpYu7lPOVKC/kW/ynZEPtVQYgSGuJ1sA3h3480I9oqa5Q2+ICSXYJvDXFJJZmEWKYW8f8Yy1/CdbnP4H2oZrHHXfx8gYFgotSzltpHngvN+ESkjmCWCJ6ATq3vGzi1vVaUIw==', + '+YrG5P+Oj9qtSbIx55U9e75xDj/W5+swzzThJFx9jK7k7rjNpjPPb8eW2uq1VpZkkz3VzhQOOtc1dJ3Va1PKzHKuEcNcMN3kqGAEIAstDZJlAfa/q42Ayf7NEUTZZFDWB/tpOi/p4O5rXhgXaMdToNpL8c2RmVFmjRoBX7AQDyJ0IiiwjAYdt+DRdUnfs6rZGTMVw1rnQD/fK7pZ+0WzZAZASkIeM+S9K1eSP9kJgmf022Jp8B1WN6vDSCrfD06nq9xEYo7MbZ+BDO4oDcTE+oHTkfuDeadjyywFQA5F4Qb6oLW/gfyV/t3JL4Y4uuua5Jqxto/8sYsIrnKV/Iz0ThIp43YGzcyfI+WfvYM1PT+9VsdZ1QTosdrf0IKYYNVh3Pg=' + ], + [ + 'QRQsTMbImIkvNoUjoaNtqScpHqIYu/f29cgqNUJYkiM=', + '9is9tEprOsDwvERfnB2FqXP+uCPN0/6j', + 'C2lGUzz4KArbaaptzOLnVyFA4T+L7qmLvdxoU5+JgV8qsfXvXgxFiWL5SmAjJtQoUdzhFJ39yqPISYulR4sx+GXrHOWuRVXvePORzHwurR8siM5u53/zpkWC2f9jlG+2gafvxdxRUpOdHt19BOgUbWbo0TgrcuNOqLhhWIxNIeDNOMxxhB6bERYoRRLYmV1dQfFlHER+2yMV/ohtMSB42RkU1vNHQVg8iiT10DntM7pYu0nqxDPehH52jp9jh1VFensyJwoA6uJW0aoBhfwL5d7NCZy07IAue3AyfaA0Jvx703HMom2G52s2Et1ldLRLybojHaYHQJjqS8DQ2f23E0ENLZkUams3zZGF1wZ7MasVUMI=', + 'dpslGWcWzqdKltDAfttggtqYF9LFftmED2KpXxUJ1ftT8gUbEHvYONPczDqfv1dGx5D6MEy12qFkEmA9ZzJ5pSc6kB8JFyhGq5XgMk/zpi0WtGhBUjA0swykSsGbD1bktBfEX77HjxNfT84YXw90Xo/iAmxB8CJ/XGAGncmAxAZlmn7QA7XCUJIz3yv7V5V5tZmhn+FmRFzEqXm7g60Q18YJBccJUCC1A/UoVxrpNypNCg0yybEJXTZKNm4qfhjTQoNhE1u3prmURN1sOaXODMMSs5AztygtBVS/W44y44zL2yHcwmLkVxsU9XmLgR2KLt5VH061dQOgR5RuIMWnAMwFWSmGFP00hX+EEwoBQcoq5PhUmvj5keDAv6j1QoVx8YBw' + ], + [ + '8OG3/MNi9esRICwsavAoS+ez5dFxGEsYvXdf/yVto1A=', + 'GJhGUv9MqM9YDMOBZFgJbHmNIM5GvIw7', + 'y+ihB2D0AjHBL/UIQQGvAk90NocKCCQ2wY/zQ26zgWBQ2jkO6yAuLPSuuymFVHcsPPXSwzS52B5rUfQZCAWNBd4ChDGp9MCwk3ZEYehzj7B1lcOCS7WZ22TNOAaPikUS0Ma3sm1asN6OzrxkyBDEvwE2XruoPfwQiPmSQHJ+1fXrj2eY6ajl0dHzcGanQMUC/6mFLOc45X1AJEYJC88H6F355Ti8TP+7yV+0rwYWn7pb+3Qr3DVi2z4LfXpmVDvgbZel8MKr3e8w2+FEvZwm9Ic1YJg8vxC80C2sNZ5L4sx0V/Ife+DiyroDQv99BLGgk+sNExU+kerlInxAX/NlTVpsz7zgJPYqDbdaUep4JF+rnTzW', + 'PGO08jGXmiWloHUN+gz/5GKmLcfttvNTBKJ+BKlEuklktcxYpncsS5DR308ED25pWnyuWBRKDwoTc2QHTnj8xbifKPI+M7k7UYu5nuV0Qhsm9+6WI+Ph+IM8gvDkd5MDx8gI3o7iRSE1dak2TZgZ3C2c2Y0PA1bJjwMBloejLP/3nMrQrxV3n31OSMEY/7s1lJgcge6cvemuKhqZDObTeiQHCa9a7H4alZqf7eY/Sfza2vQPs5gQurxLCqNm4LpLlInL+ix+EO4wbvZhtZRH5w0LfAUgihOzwcUiFcW01R4z8vavRN+Sl85ABG+vh7BNKdf4aBd9cUtVpHrjH/fuE9+zgW26whEqbULoF3cLuocTIrUGgNs+iQ8+v6ZTIVUOpG3iHw==' + ], + [ + 'KxQ5HgtUCVPnLCOIzXDVgSgN0FiiHEjbKfz2LDZTZW0=', + '8KbnbdxEbToJq6kT5ft50IHPgDE8MQ8r', + 'oqjf+EyWhqEa3QgpPS9ZodqT1gdWwGF5pICte40zpS7KVhNLca800g+aATvw7fBTRD00HcZpZ1NHWMaA/HBuG1R+g9BlwGRuGnY4CGnvpBcnKGxYykcBvFzDIk+Vset1Jc1C9WgBJS3lfEUQvssuSPzt3uFdniBK0VZKeiUl4DE/yR0cPJB1/GPIGer0Hozgnkscqp/lsbVLnm3KnhxiaSdb8BTyQIZ6XY/p9zqinQUsS42XmC0Iv8TiUsugn1VmB+zcnNk3DyPEbs1beMu6uyjSYWezMCzN/MOtUo0/8jsSfXiQeeXktIBZzooDnO5zmvX8jzyhNBR0/UwiP0Q/UM8QWoW5Nbcu0xr1eCSkDq9BIO5lFA==', + 'pILQ3ihVlDnwpMQ3qCpkeqk1gzgVogOMGBR7CS8tkIh+VUvu5js2bmeTHHgGax/LxJ5AtgmrT764Wi2s4l76klRUGv6Dcc7N+WGF+522jQaB0X9m19BWNqZFSjnagRsnsBlCt5SjX/PRz5IE8Xz/e3l5JFexjxHn3ROkaEn8SDshQVbVLr2GsY9qayhd3oJ890oKtJmEKEinE3YNB0Zi5rUmVl4RpZpZzOP7DENc1GQZHT0nvAfZ17E0/lxcYkBIZx+CHTVbXe3CPjL8fDZ4WEf9bPHuPmwRtgJ5yVZUupCOlr1JFgYhkOL6qFUYtGGCaYLms4qRPTVL0J2YRm4piJCUQ6QTp6yrAw+4t7Ttz3uTj8iwu3P0FybTzSdrkFKIVWyGF68=' + ], + [ + 'eVRCztPOhPTh0Q/jkadpvQaF7Pm/pOexEe0dHH9k2iw=', + 'sUsY6azOpe4t+f+SzoMm1N8fc0nlE/ww', + 'Uk5Sq6Hlvgm1NXvqPqjrVbuALccE72fUSA/qmsUFyTxQGDmyLuKad5Qdh5TtOinbe3u7xMQ8J1U8Lp2xMB4pZKKKWjRMD9S5FD3Vo3P6OK8gm9yUWBxumaT0h2SU1noTLXUHeqi+P7sc4FcsnT0uEoRAz8eBFW55knd9oIsRd5UmZWFranCv4b+NCNAwyYFex3JsNe7e/pWXvOgzoirokfQiaLex171/oYqxzYubDh3hFLmg4WLTS0NHTiidoeKrUBMipL3ebiM+IGYf/gCVLBlObyW8/8nh2ivBB2cL6kSm/29JcKleZQJzOEubw10b9Z+0A/XJo2FP3TFpgjo/gqC1+xJ+nuwOgSd93Arj2meAEaXNTFM=', + 'oki1fVnW7NnJPekiEmMnNwgjR2U+WRczsMnDcfKlV1OC9y1GtMWmVA4ruHgBWBXQyjs5J6fD/AaFoVDhpBinnju+3hiB0pD3VgKZgAmFCJU2IkXvp6KQHpr31/KSoX2qFYyowW95xObVSckc+/ahTum+oa5NFDI5sYk4pyNyZscy2PldoHbZnwqIXm2IV5CF62oILvB68sJuGENB2lpEJcsl0hC1uG8BGLF2Bk+iDePPw0W5O46KSInfAKC7We3GaNgfKKTKtVnETMHd6FFTVs9D8R9AVRJ1WylaIgeqyNpMOZq8OgcmbstFtab0npxRjZCQWvFGvCbUTxLcALl6uz0uW812aIlqC3BiGeulzf/RVav1QfgC3yaY2T8EFg4xj1S1TuCk' + ], + [ + 'CPOUhV/mEGRv8vUOFsBnWWpaZE1U0a5/BxZRhPzpksU=', + 'kPKo6d4EmFiBIfVsyjgRUxoeqIvOTwlM', + 'oqdvXi2nHKQ0bIRYE9+GPw+JvpD4ky+fTtTrm8A9XtDJe88P66leZnRg+2O3rwDi0z8XNpdMKlsrYDRVJZE0x7DNHBGwjzxhaYLomkjAuF6/lAE9a7ytBmp76f7ltudr31LZyT9QcR0wa48uxIRFIDSojsNopVvUJWeAtwXPIcQpdIe6GnrFS330rbb0HNm1qo6wcH7xzIxXeVHBVY4xmfUy62Kj0/qXcYpvF3LWPBJVT2xk82GgsSNCg7m2wK0t9Fh0SHGk26YgpMNpBdnTVqf3l21kd2EGfgOG0VizsC41QzrZghtWgYg9wbpdiVJAugh7Fsgr0gH9zkhEelFYfmKDzCQukk9eFSlcosrvbuaYlvqpxwfX', + 'zUR38FmiWISZQCAIbOyYDEfscwLux6cb6bB5t/fVp/Urqgd/lIbG3YkEmtyWOCYpyukdAOiYZT/OYuI9nYyJES0k3LAmYi/tFoIcAQVGTLMhDuhEVzjHvrl555o4DKFUz4HbBY3y2/RBZlQQ0j4ZkXrX1eLNBUZDjURdwsF1diVKQ6sRb0EqF3g6I7eY7EB8LcG8nPi0B+DAusOJEWqdvPdiW2gYPIXYGWJUpn1DREXwJAP1NWbr3eQNBlIgBZE9rdOcoy5iiaXEwbtxFB4jrRkht93jb0Hp35nrfVMY8FucDk6+E1sJS4fekk6MHNZZZgiI3ymzS+4KxupoeIMxIBpgw4Bfma0vRq11yV3Dwo5O65XyntoCcZg+FBTk8Gpmv01qS7V9Jw==' + ], + [ + 'C332Gu5jrMkKf53Xdb+nPOEPmvgUn2G0nDmTldMiEMo=', + '1tji1BgZFlqxfzzF5QvNEOyMk5S4wF2v', + 'HeowSX8+eDaFFDzN9Xu5ujExFCWRNvV1edk5jikQR8TK1NuGMUxaigSrWFGnLuqV33aOHs4fOo+A2cjbz94+ZyeI3q2MTcT8m1edCbNqtdXrzommHrbvxGjt5qA3LhitvVbvXT3geXXin2kPIVpUYvk1lAQTUURuief2X00ekIRGxbxnTvCwsb555QkiboHzDMeHxCKcxaX2WXcwO1JvDu9XreKC3/dm4vqV6+DVElQPVFS71g6Sm8p2J15wKXad2DDlIUaHNCsyCT9cS5myPiWAbWWdx5wW9RpQPlR4q5jR1kqkM14FQk/8y3xLV44Jp7td/BuFEZBuPW3oRgjlzzxf0iZtAvThE/+LfKDR1gVQFsqkPgbT9w==', + 'lSIj1c4lAQBHo3/OM+uiLNDCfpytHuAvquxgAvWfrofpaVickTE6QM2pbVbAswLEvZpg6ESejq9258RBvifKdxBTpUgtBRUSJoJ+wk6QBpL8b1+WD7oqxRXKItHAgXat4mlctdgz+WMzuUQU5pSuFhtiPwDatQVLb1qlbKAQMJRFz9bIpYhsBR6Bt/PQkUM0MTUc4Bc3GUv/bJMYOGr4NsiwxAhPjo+6f3xYgwBNp2SOaoOg1G8W4qO8lUFAiDpRT0CmayxS79zDQ6dkFtk+HAOy1lskcD+68D1EN/KYBOAo+qeGJaymwumWVjAk4lAOnmN8bb9H4Knkd1djLt2a08tUDjMqkGXmRz8aKUWnjYJ45kkXkDF0k3lgCb4Gh3mWD2aLZQPH3ZE=' + ], + [ + 'Q/IcTz3m7yfQU597uqBAFOiQCLzPxG7wFfvVe8Pse3s=', + 'Hpq+1UjrAVZXFmCKtolkdQnBCwnzuFq2', + 'eu7QHIkuD6TeCqOTi/0SKCEM1tgYcgzWVMsQWPzNdzjlzf77PVV6UnfidEhPGMEVh31Db8Hk6lhEvphAVlvsQOnSsRgqdS7f+LbG5BqaRjto7xJFzEwaV3QkWlQwoT5THw/xMEKX8pFHLv8gT40fFhWsvgX7uY4cjlBq8s7VKo4ddki5K3KnhcKlRo4yPBNsW45FUHZ3YyL6TAD6sQfboYr4xPZBoVo28A7kRQeKYGALmw8GPw9cGNEB3QcwITo7LE87sXz+OV+UzgoAAlgI8q9i1iLKkGl7bd3fRZIQ5Qf1mpJ8ZZTPynSVAV0LR5BRauRCFIXbGLw73XtomINjl1r864DrJYDU1MwB+A8EDha+KP/iAMND+yI=', + 'EHf0A9Ao100OxHLI3bQ2/lAb64EoJHROqGTSzu52U9SY0LBgEAcRrmihippcA7NqbyI01LBqhe80HdLqGvsF1B5DgspzVEBQJzL9GrHUNX/FMSG2lDAK/wZFcZ5ePStJf5+HGMR0LB04Qz/NGSRLjxcC3PFd7wOuWCOV+k4aA2CuDsUdvJsBuyHCTjRVwuxKsAvpQhXVMflYdKT/4T3Ie/ixDUo58OCO8FCrH1QnbvIy7erdeK/8AiQdQ5WDjyKRRDAkvm3EJiJ+cOIznEGJ4imLtNuYjrhym4cam+CnA/eKm7GeATT6etndiR1YevcdZ16V29IiTvYzEWVuIoDf5qmCS0HtOcRbpzJOK0uk88XGaGki4UCUl2jEGCE5nIwKcPxv5JEgUYQ+' + ], + [ + 'VUNDUZXrBi0zbFXl+IGRdHfLFLTMpQkrkj+9YInUl/0=', + 'Q5K+mBeG5hw5xvtkWWwzekAottY0A5ZS', + 't/5J3zbq4D6Cqn/PRQHeKdDFjhyVX8AwfFUHeAbNjSISBOz2jrAaoFxC/+FmOr9MldFwB37JlNPusa+kt3pAu8p6125Oc9stYi69C7rIyzll6H8qoDWT7S4leNmF4R9uCvFMeVR/1pcbyVi7+qqjkM0axLvLcfBTVjNj7DYetRzuZC2uimDsSS+AcMmJ28UHPpz6U+LQ2yV1YPPLYLcqZnEvFL12RKgwFE98zg/zwlc/M3dwndrKCn/7LyOPHQelZgiiGP9hsBQuGNpW4qT7Lja3BacalC1DESw/xbf4LiMFfGP289PY51Gc3cmD4ff+hsFRGahkASw8kPWcU6+HRVJEHPysvMr3jLBnP+MdYtoQLeJRom2xNH1s', + 'qgioGyHthsU8yM1o/kvIehj7DiKeW454wor1FIOTkjWYEBS29keFaa5P+qtCnQ7Y2R0wVjOFbqeL01tw0cisYZFMZE4KnLUYYUadYq+yByb+r/bjIqfTyNwtDJXZlHkOB7dFb4B6xwCDLeP7oGGt8lc0vdv3sskNdil1GgNE5yy4OWFRmIr4fu5igd16dEYXwJtJgJD1ZeKitAd9Ln5Ys0pSn3z4nSxBzCc54SMgHgs1LgbDG6j3NSXwOxpSGdnBXuge2JN5JIUSwUk7TBeRaFKHRIcdFBeFPkHSFuU9b53AkkiREyaH7OG+7j9fVPcJd7vXnBAdTjNJ78Ow3tAGLQqwNArCa7g9iectMLom/ew0h2XHc5NNIlkO3SBepT7GbGUhBkHJZc0xNA==' + ], + [ + '4te7hv5WJKvGZF8FnrSe/Rkj0GSJX0vJZLflFg9ZfvQ=', + 'DTeKiFRLFlb6TrLYqhKxGC++pxzJmb+k', + 'YS689iH0lz8gHxVtf5hvI+lOQ0DRPxLznZGmBs4dL4mVtIDw6hcbCY7gtKnGlho69UEJUgho8O9HDzZNWY/a4/dP0p0Hi9w9GV4kuxxECBLtIjxiazYWSMCfGLjkzWBJMZwfj3PCDHFEeDwAcz0aYVF5arCb3xGZFGpBO300BaxXXyFHFdJVqoydJ50B9gvr2Ni1hvK9VdwblNdkzLmYkF5t0ZBsMiRXYS69EjNG0ibd+KGCx0cZHBHgdLHkGJJjQfAVrR1hCUNWYznDha41IyHLyEAeZjyE2ELEbrZ25QLqV17WL8Jj5a72vTfsxpE7z7zPOsHZtztaCiJsODDZq8vrxkbZquaZQ/U13H+uPAVezZrGFI9clQoLog==', + 'LI2oRuW3HzDe3kiv+zfZ5hZoLldbssZ4PbD/77fsSBLIFA1BZNWR8OlKkvGBhhx5QyDZsFVoaEWTwrLF8DoksnwgJwGvNhOjutX87nXhMF/vjcPamnIa9FATml/2KKRyGjveMl7wOG2BYRenT8+/It2LDVATygSmpmmEUw5u6QGgYLYS9ChkW9ZxrBT+u2mU8UT76dCTgIzJR3n2sk3RVIkBuqxPeq2R1ZhKCBAGTi88j6sup73O/05LOfBAIO2Y5wY8uAdEeUFs3PO9Bx+QiDRnHmY6b3fWbbQGhcYkkc6AB5Fwt3c/GM/NGvBghWgvzotjyrUMMJj/6cJlC9GtGAvfkEG5rczj6FzfMY9+zAz5GRtg9qr9sM5mtmpIi1loYYd1jvzkPSnVqtU=' + ], + [ + 'H5/DtRvm63VjPDhmdWxwQhvRnlCbIrbx+1jmROVtPAM=', + 'kFdxPZJC2SLrKtoSxY0z6REV/FIVSdAI', + 'nCRXc+NMyyfSXHufJ1MsPrQ9/mS8QyR92TQzesQ0oe2TjR0uWTXyzHirKKnxqh9TJN+SUoRwFMPVu6s0URMzFfCQZUCOj3dCJH8jAOOBp/7fA4q6bHCKFMGR8dzzM6I95fH9WPlATZovhC0vxfcitLFWJB0z6mk0PQ0dW/O4y/tSXxoApsEB2p4vcEx+evqNebyrB0+S7yV4xRof7n7pRTAWS0ufWsyFtR1sM+q9f8gfjQ0jM51UP5JTEDuL6hyGAIPKesQkLCj9MQvNSWqs5JQOk+P9+EGkW7zHWvEoJlXOgw4dB0uZbwtgaZCit31Zlimca/LXRCGRTzkjTv9U/zsCeRgkDmOgdnIstKnf6TwX0/Gg9gPv4IZGNP8=', + 'Wjt8orPD+Hg/qfWfugHms+3jDwibgsKX4u27prSl22CJns+vJJZojRCxk8fMTHD95O5bH6Iq3+Hmr2h+Sx5fXghRzltsUROyxfWvYD89AJyaECDAPlWRS40BhUPYX4MUROgrotzM0JflFJiO1SzHizQBy2vIskYGalpaHJ7GTsWdF038/bRuVvDeOWOmlrGv5Udull9ZNY5zFHxkotbpr2Ow/eGwYPkRUqpXKAfVndBwP913wDhOEpZOTZzBqttcP242vJ6AyEz5PNbKo1xSNDcrLomETfxMG2EP2R6205WaIyX6j2VY+koWvhS3zzRKDhebkIHbqgQj8EaLY0HZa7RcX52nhbJhqxgh0R14nc/m9yILwsk7ei647FT7Pyhgh/gv9p9v08qeT02e' + ], + [ + 'nQ0KT9BjfzAfnBCYUcw+SXidC1iU4nV1S0l4Pm5xTGQ=', + 'A6NKLaIn5vLBNxucLxGjE8C/+XZ697bj', + 'SCWqYw5Td0egA4MAHJFcqo1q7zVpDSd1vtKX+1Q2m8yXheyZjPdf0rFnKgnmRx6h7PCpyGVyMX7H/8cvKSXXlo9tkoivMDoszcGaGMkRaoLywe57V4W4A36L3HRPxaioeZw54CuQv+SZHunUvmgJAVEf3IWjWvihsGYs/a31lp1mMufAm29YfVuaguAkMMZujg2sS+pGzFSgiulu4p1c3s0LKrN1fdj1vSpAN+inE9+HBeAGA8tgOoQ9tsgNcpmImENUIVFWQbYYBPTTiRGwYugOES9yWjGDg48zK+MECx1q31wWc+pInyy9QJO+Z8v+jHdgrEDmsVpHCpSkoQhrJyJokxTpRkQ6h0/Hpd/td7sIfqj5wSV2HMwfF6il', + 'xS2FVEg1hXeeYvdF+AAA9X6o9BhfRNlp3y7V5g13GNTKtieNyXEFwXvbVQg+oTnMo+l7CV51ggfyXF3HBfwTeiE8KcPySdrY1w9J1U9hV+vzsE8W5cHcvlwbZdhu4XbIFI4At8/8GYc032YI62n8c7sFP72qE9uNG6kaovcxM1K9kWjRHj4KSWXwWmLMvEeDF0L/BFSWImC4TCsTM5dgu47hQ319v6pTpZWBNP1bQV1IV0g/9OgGXy22kQZNffK4iaJ5swau7j1GFXJqg2u5+ctRbn5HKj7u+SXex+n9NupLE14KraJ3UaIlzgpmbWqc+2Zlv7iszjnXZCweC6oEtzLpO/v2LNOqDxOHTiBlgRclCUj5+OetR4WBw2FerUFjlxAml7KlEHmOCnT1mw==' + ], + [ + 'VLcWcXvMihPAnRpGPdsRY5RL0RJ6rEmle3zalCUctKQ=', + 'GgGcosJ4tzG2JxF3e3/vYUUfsx+qxAiO', + 'cdc8ADKHQf6CyOHpod7D1HdeXZcJqp8KURtmG+s93pAS5k50siQR8OXJablF5686Hr+MySwo3suj9KDt7aAi86548gjDyHSrTDm6LStcICSfnnMdyMUC64cwgG5uSi+YnMvr+19n5MN2a28WNyCzXT9KVokgYgxUoAOvIejj2ARE+/Ljxgxd5vQFiRrGU+Q+djUYNuHwGTSfpT99CmnkhYQWJiQdw9eSTAnWSAKS/YYJ7Eg71XuSH1MPoMdKk1Vwo0DG+kJ/nDMzTlaLChnFEERubGuyqaARLr/Hu3tECQGM9Uio6X8c7YTAekacwouuggptaeO10ZNzZTbfH1kej2YI3+7wU30nXn1YvMH+4bSOr0fdPsVUbjR5JshQ4w==', + 'gYACFfQPGd82veIqV6tIs5duSRsxsAFs1RXDtXEerOqoxZmK3mHwAf254NZLv33VjhNivtfdRLtPyY9KVDzqAS8ycI841zsHy47xqvRdz8hnQE1UwUsb54HJfLcrwLLWUPJUmYscf238ks1CHIsUQbKi0tTV/zD7Yma+aPn5xgGdg+IjpQkFBTJuiMEcMmOv2R7f36B6wrLmHRyi266aq9C9vVmVMSG6bC7CnLNAUi/S32Mja2buSDstmaDC340fmdvzp1tqPxRJzhkROXhZ9ggU00o8c5p6qr/JtUJ7Irl7j5f/ITTLAkQfGnIUKuVYS26C9sU6wRdnfKL5OhcB3pfCuUZnpW/CTKERWvR+T71aSmKPi3p1oowcfc+9YEWieprLunR6XQspMEcoEzA=' + ], + [ + 'tyXDy8KseMU+AZvPw0aZLeLRT891CzF3OkYt+DvZuSI=', + '6qxM/+ZLUxhDzJcIzn9g/6nC1xyhrj9k', + 'hade1btDi6FXKYCUG9KweEiw58AYltKs20ttRdioaP/+7FJC0ihKJCEts0kSojzZ+DTA2Os8A/D3fdzbtFXFFaZxnhfssQSXSV9xtXBS8WVShYl3v8i691usLOcmwNIjeSA3cjUM1X+81nhWfeZsKD3xRPimWXiHD6zWMG22IhoWRz8cpeTC7Lffg4LyLX7XcdDV6RpF1tGK2iaiKjtGMeqZR0mOaJ/h0pLKc9GeVWMa73ycWVxWhIREJKxTyTYqxq6zha/RWjwkLjrEdofgXjAHtSsRM4fUxvVmNyulAy9DC9OQG+AZRyyGiJYlUAqQ8C2PJNIk/OAiX08WDtPlmIttmO7YvEc7hX7XApqoU8tuPLX31qmL59Rr3O7vmyE=', + 'ScFGLmJ5rq/dERNS4zTqmTBA0tiN6iGdQwQNuDd5xjVNTSGXgYC2D8814BYODHvzgFCYORGZJGbRe7wyTDf51lnrpy12FHYtrOqHI/5g/yvGCwCD7AcQKpVYHeBKzMEzyNM5ugPag4FBQyWt4fDlBhpgdc24rY9oMC46d28dIuCBq4kZabO2gHSAM+pxJ2Bzfpkcfs49NbIiEODtYcsS3RBgMaaS+c6RY1sbFvNMEN340Ez5rNtkPRnfFqxv7PfO/JllMWijQdWnGWPoKMXjWmgr9bFNqQnAMG4sRuQ//Zu2kBwcJ9Uem1Ylfysr4cFcByEPbMaRbXpTD/EhCiJe+Lurdqp2MuWQ7Zv5Q8bGIMpz4YhtUGOStwJVRAiq6mXcjYonUAXJ2uCje224/QBp' + ], + [ + 'ykwt37fPicl8qfx//R5IhSwUwLCIlmy9+iddankn1g0=', + 'AwoDSOU3ufK3gFREwmy5Kl6PWwhnb35U', + 'xY7KAtkRjC/+tPnlPppfGm92sEO6UroOLr6WcI4r03uyUY4xnU79akxj0kj6VbX+Ks0UtwenTF5HDHCEy5xc0ameYh4yq0D1ULLs2b3NFqLIRiC1pLBaVVEIqrvsexeMeOO//RljOzVxjN8lJ1M0IV0lg81vTVpCiQ1QrEXiCS6Uu4irJw2DZAsPMGJEvzmInr4t+Tm0aJ+RgBrY4sMGgVhgC4PkzwAKDx301Sewwp+31LITphTpRicMIlSY2Z6NR6N8Yoq0A84q1tlaf2O/u8xoOVu/9XKoARUENtEyB4IzHJnAu26u7xvVc+VqgX7b3Q8Tc+fhBNAUiXD5sx1EBwo7CCzJ+Z/S0EXhtn+9IqOdKdd8vHv4RXLthBUMnmND', + '0PWS0K/XrIMkkLKnHnMkVkynKUvJVvsuddviVgazJDjqAkGzafpusPp4OdHhkovhEgSoMktERU9fuvBrQPCy81FXRoiFD12gRZVg0SsnysVFnG5jOCINcjD48+UVl21z2BzCua4vy67EQCyOl6g5UdhoD6vNGk9V6632Yb+84xX4u/50Px8pkJ+/NjIcZhOFh2a+afZDGUI1+aqN5DMXbQ93ZLycA2wgbzFoTB6lRzz53ZlmdJUqOyoggnp7zQDm9K6X6JcIJyeWk+s1YeEzXWfWDEm8k4zzCZ7C7TqSQnLxdYmbAkaWtCvd+5EackwTuUbtDke0pPh2KW8IogyvKAbdqX/bxAhvlv2m8FlGO4V9tA0cvWqnNESZI/pqVIwJMWGVdsW7Xlsv1qkWuEAjYQ==' + ], + [ + 'uXlOwO1mv3d3+iANGOnM9zTJlsIFXuIZJQmqZsMtPj8=', + 'ZT6DOuVvR37dyzKv0OjiYjE7lm8VlSXf', + 'QdbvxoNg5mZyegqGc38F3LylZtCZ6ZpaqmntnOGwAKg3U/4bbQuGaSqHFTZp4HewBbeowIAnfN6Km1XuNqKVlWFNPGXOjsUUrg9w1OlLvnItHlPU5k+HKrUuSIX88Z4yyjASWkai26uFw6jKC6Bu2HjGw8mLAwsxZxECk1M1rqiWAmnSrYF6sE7+zXjNjUc44PqJJqdXMnRaANyM+RIrtbBRSNlD0BqT2fTZg1hGv+Ttp0k8QIRkljUEkqQorAhqeanmn4LDT5YEWWXMK2v0bGXsfTgYBfqNXEqoy+8jmxHE9yY2LDN3iTssR4wA+E6gUiu05HQjH4vtepDgEh/2PAgb57Rg7SFObhphAkGHrN0GTPdvN6qbd+w8+4zk0kU6WA==', + 'bDAlLvKXtei6FI8JV6B8zUZ1HSVzEOeQbGmiPJG7iHXVqFP75KDKwnjups/aqwhmqZq4LCC9tngSNIji/DcbY72IAPndm81bK90Q+QRVn7+WFVJmUHD4HOWd6Oz8/lG3n8IM3LsAIwp2nBRqeb/7QSBp7NiQJcmSKdOs8ls5RyUPq5kICTaTzKZH+Qkg/TPtoHNfFe7pAPaX2kFbXQOEcsBO8DMKy66Uz75nzh72BNDmx5PXQpog3DSar9wRO1TPYVXK13lY3ZA3I5YNAqj3P7vXmWCT2gvuqtnE2L0G8kNzTbRzlzFCMlzAgZ7+OzHt4NiSQI5q1K8bucAc9D+0oHKsnMVP6Ux8HnP7FWGUHwyBkFqZHDu9Wu5NXTj8D4R7IUzV73LbvV3fIcBCx3dQ8jE=' + ], + [ + '8wLlXrl9cE8ItNOqd9CpPeSXj/FQoMQjhdEoGreRFvg=', + '/OiulVctpS9euP+nS1aEcHAnt7IVGXbU', + 'hS133tg36MApdCBna+Rg/0lYppp4ono78WndwgDB9oVV9sDv7uj44yulvtYwxUhmAgT7cx3ngDetP4sfZtW9ozdzkfpaub7EqdQu79yN8eNsLCoBBVjjFzZPNpSKt5JOCWHAkBSR1jXM3AG7wax6bQ4Q+r6PE+gJBm8lb7D8HdkjFlckfVdkXS2R8cNtO5aEozqOG0q6fvsy6+hbjDNJHQLXxL52DU2W39Ldb92qG6IyNoq2HJRMIpw9yqxNeWIB6xh6TRStYp2o+xHw2moeNieUDhr6BTtabm3nTdjaFqT3SzkfZNAYfLrnJxxpBjFlkAanrk9qKXI2jntNSUDuKGqDCP8T7IgHbQ2spxLJAsKmFoMzOyC/IVI6TTok5Kef/fs=', + 'VB/c75q+Pqcj65KR/xChLpmxLVhXkDzjjuXLOrKG3BonDg6oU4TF0eoZkzkvWJ/UfX1cej+c6evMpyxzOra5W/mBj4IF//EkFQg88DnJDaeGp9YgTC8+tD+mTWUeSnOznB+oz0CIkLBP9dUVwjq3pV197tLOCfnuXTmF9t9Q/GJwKfHjn98UeAe32mCaPWVE0JKx9bl8kDJiReCOcQJRYu0TVnwG2lLTJVV7qCAGjhpcax0SI0i4EEJQsbar5VKznXEQBBNXI1BDBNwoF3HbjWrWVGeHJfpncW9yJuMg1NLZYyfP936JuJLodZeX+7SW28DWzyobCVkysRvsfaM0vNHihn4k+ZcItGio1c1GEYat1S0vvcux2Qs8cV3BUMmJLbChcWrj+d2E3b8h8eKCyyig' + ], + [ + 'BENY9DId2jZvmroYDlokpT89rPZ2Yc9zfKucufcpKkI=', + 'IFRWej0R+fJv8zs11Q8gvmUWfvkQI17o', + 'zqrYUkA2eip7UF9wXWaehwtYjRuU9P/79yT9VFmGgDJF/G5WOtZW+S76NOfJ7U4tzcSgzGv11Ra+LAe30f6WgcNO0pVAse3eYsCAw+v8SEZMxvRr7mG5lJPvlXy6PlaV1AKd1G5NhVJXQuWZ5raTPN85KAiCg7hLUz3I02ozsXF+3mdWhU9EbTerN3MxwmRNXCv8QsWqgAYItCq5cv+PetWbu3bYVTA69S6BekRzhQ3DZAmfIyPI83M6YJn+oGjUmue/tp8K9XEM/IBkRUiWPivaBVVZ12H/zj3bTxov96BosmmyRSDcWLdieCM78QiHfmB97J8HIneFZl0TEuu4BH2510nnzgSw/R+kUhpNbdShB/wW5KC3ILNZOjV0la+hOSV7', + 'PxFobacFxijngMB6M+feVUty0Bol0tW9zrjhFdYz28eIqvzmlgBmqMXLC0bwd1yzz6M6yM1VCOwTipdijToRKJ8jTUy7vKvDEq0O9ucuxHi9s2p0OYqb8uo6iA5K/kJoMBYtvN5z+hCGk7Jhd5Ne84cV0ebXsS1ACZWhgX75/4HDtJQTAgSXRIjk21MWQnos5AL7EZ+mhJNBXOEgJBVkpE55ZF7wYTYVMKBEfV0kL+dgzjnwMEsY7WjobbdCVYlOe519jvR1ZcorNXm0mEnih9U7lRQ8H0jFwIdAYIUVsh9nroSi8CXSfIZNNT8aQzw+oTIYMuHXTmQRLgT+esxWIksPTC8RdV4A70AHI51p9KOfUhgTTKBi+BtGGmPRCkquMTPhcUaBjsxIDKs5RoiqEmxjLg==' + ], + [ + 'qupmUdOXJCVGpZJikv73ctqheGiZuBGOQcPxogY+hhY=', + 'gPXwTQQRLFA1Kc0ywhoIbfdQjwKf2i77', + 'CuH1ZpWH2zwQ7qEcsTEfvaUvQRHHgmbqySLg0kxO1ilLykwxa0vTWyw8u6+93Uu0GyVnpuLpFrdOCPZPK21HCjmACEY+9pwUY+v7x+BIFmCXNgW13Uj+VgUqnmjcEUx79RGrCrzx4wBL7dWmQPhZAxjWw7z8cHcCz2Do1aBnr387byyG/fo/5qHUdN/hRdbjALlxoiZ8ASQVQjGEewmY0kGGOtgDEbhG4SQR8wXv/VusGJXrlRP9DLtNv6DVByVeUIHIegesUWBOCQkQmndin6iFcURqucbXxCgB/EM8yGjSOUHjVJ17Ecol9pPCw4vJabRz5RvFrkAe5bWc77xhaaJyhfjf502etdsFwsVCron/eNxWGIWQO0hrhQ3sbgz011wnFQ==', + 'M5RepW/92SbjXNqTPYje+KLHqu/NEDvuhD4dFMDa7ubLcy0c4m8VesHuUjxL1QIbguf/jvKALrfPaFEkFcTGn2RyjKamYlxGER5z6AkXUkh8HPxMHLWux5E6kIvubALqn0/oDHEnvmbs2vqQmYI5NqFojamY82tp36xEBDzGiOKle208ftZW/o8hnq1r3Fzq2k35y2LaFnNR7KCeeMfybuM28QszhXD/ycVYBripkvS3dteeU8vuAhSRWv55qxyigcrX7V6C+SIkm5tnYLi2zeTM+vhJmptibLTxQzrk+Isz/ZU5zXpbYIvs7tvXdsrXwfiBBMpYmGGGi1RWXq4CWtCuuLLZOqdVrr55ZmNAn1LgnM7uasoDXhPru1dArC2b9wPe8XB23epDK1KfsZHqaFBviLM=' + ], + [ + '4gb7T3zZ7sKIH6t366ZxAngfCSYsovFupP4RL5Sa4iY=', + 'PKfn1TjSDg1JB9sW8DvJ3r8uyTD5LurE', + 'ZMakEQhmweAjaayQ9Tt4sHHQJag21hvJMQBcKTtKRPHUu7xozpsaozACbiYBoSXoVXHKr2N8pN4QBpwhgEcCLDAqEacQfpZjIQ+9qO8qZ2Yxd6KQZlmujsYeLhbL2dEpJTXs7QqU5CKw8OJJYVE7PT0IGjjWwsbIIW4s2KAlkkw11085xL/bS9dzLJvGT13WFI44N97Gl0IKPEkpmJNLADvkeK5UtJiaS+K4S9NUX1LhOA2TGhjRBE8PxjZQlqGcrDd7xMT4fKSotKM+BLic5jtYqvUdDleiRtQTt7LOM+ZPsOUZj/ddJiEwKxiZjk3iL3kfkH/1HMeR9N9gaEx84YjaNXk+PzSyMcft7JM0JMZVhEQztx0HEOfugr9NYhkrq8IC4L4=', + 'wDHJPQ3URXo9QV6MfqWZY8iTDKoSSAcR0zGUvrCH6bjMkcOH3WI6e9Wxk/e1mWkUcBWcTj+LP+3aCSMR9lEAefk+2M3YpvqfJfk/H/8UIdClYka9ifV+6kv0IsKzD2PrWAFUJGSzRVjAskjTUcal373LRB2988jOT6rK+26x4zXlYEbxZ3qSnHhm2EHyxW0vO9accDK/IHTVWM61Ju2bAlwkFALVRa8nekvLEnVqs9IfTC0TRwBS0/8VWYI1OEi8s8WWAbG7mlVsRbM9n7fQn1J8AiGZgMsNhp0w42u6WihRVYsHw7aJg7qxGh+qfEcW0a7/RJaDEc9OtrWMtUUJefXT8H1Q+JLOTmrEgLH5t7ZtfworbFQ0iVmFVgR7Z8j+egfoilK9sWcYlzKA6nMVtZbJ4OKb' + ], + [ + '7jyZb55MSq6VDq/opqw8BxwZfUwZI5bVhGodP2RK69U=', + 'DY8aqtXvN5Agjivph4UuoV5Wb5Y97RQ8', + 'j8b7hM5HwsNgJC/yptbDjf6mUm2rOiVN2FI27g98EaSJ19d36k1+n8aLJ9vzNZtFC32PwH5V/+sX+G/aZhkz4xCiUkpHVMj9AWobLuque6Eufo1qwXqgDLXu1Oh3J7SihF4d+3EFSF5NpBq+meu5K4Gg36W/J4ByMVzc4yFQp589vZXyfLOLsWGiLAzpUpbvcl7qE+pl6ThkWfSPPw/IFLUxWepn/sttNWHpDrJvDXko1iqlEQyFV5/mN7IPTWfQU/Ckq0VFyq8JkXsPlw/LTnqEuhTeYUH3W4wWDggLuUzlD3tHB5X8JXRB1/5r7dhMPt4tlwuFLFlUSlTp8K8lf9b+FiuwYiSoOgKIwYppPlEE6UV0JlAdJgbGZRuZWuCeSXpsWdi6', + 'GWjgOITCJXuvd8A/cY4Q2g3fQVJAdA7IriC1jfNU8EsBerU8Ekze2XLCyI42h70ayFE+SiZYqBTX94YSU6MRHA/5ARyK0/a1Zmj6u6tjTpD1X4BPQZAkA85UGFgesrYHxniVkzTK7ZEMsvqE4J7g0UOrdzaIZiIG9GKbs5NiA8qjC85T9dOSi3oipqqTX+JiF77EzxAcDMDWzHV5aG29uUT5JeU8Z4NhdiSReyTNepGOBRAZFfT1x4CtMavXpHn+aP4pBH1+XP1kmYOjXpBpeBQ03xF95RHrTbwBeQuSrYHj1l+BYknsNHLo4RbcrNb+qy55xlKJSJy3KYCGQRUFn29FYeeSzPYLvlJv0Q316kZMjwOyS4Wp0j/uNy6yME7lYNBukfJhDop3BkG7TMNCLSkZKf2Nvg==' + ], + [ + 'ALNEkr5NL4L8kfgrX5bvBasw010tkbsktccepzK7gKk=', + 'QYNzgsDW1s6sWfkbg8zESQWoxcWKrr8u', + 'O46dTxEXJtViDsOWDm10cLA7+KyIDA+hd9i+UcjI1NSXerHgR+4JNKyERpYead0giC6d/G7zGdIgetqvwvtmUDW3DosE/2GyeJ3xqzrw5Xm9StrckJD0ic1/KPn04kIbw/GYdFo3E12oITcohXNkhjOHXjQ2DltPA9c1eYFHlUoA9G7imKupPzkgvY43tuPmawgazAAuYpdxttu7hlLZtK6ACDos9GPE4Ok/yWB4HONVTcRqC1yjq2b6rAsF53QghMWtd4FNAuQR6Ao8FwDui0a7CUqWfKzQ1AgJhSRoP4Qc9t1weLZ8rx3YN9qIopd6VUYg5RoC8doW9cIrcbthInTuh4MJMF1u9pmXj9AKyHxfbXYuHhJeT59xPour9xVYgr6GRm2yEQ==', + 'lJFx9XOkOpSghUIfwJoV3IJ+rU+aSzDAO2EGyv+hIplStyfmxOPfZghOpyhfV+6C3j/0JAX8jBWJbZDv+vLyU2gti4aIjwJBd4mcE/X9GUDtCmATTiEGMirCau4sB0SDuJ15m0WyR45TfkUHQHehH1E5GMJFZioY+AfGI4djLH8R4VVwaMNwDtqszXG7J+71WIe1YXCgwE4nr5lSXQLlsN009/IeFVNPYyvrZJZawvBz0fHN55chBD0c4hwW0CzxP/KjlTJw85ZSuHlOW5T/Ca90FOo20r87LNUyTBoEvXwnKvkb9uIzcpxcIk5WCYtLVn7aO9zIOL6BM7/wmH/WmgL5ANe9GOq/GwKulpazvc8YX/Ot5Cmqy75tx+xvFSPfDV57G9QUmCxXOg57pzjVypcXF67trZI=' + ], + [ + 'sTYnjiX2AXKJgSktJyUF0nu+FJN0E0IH+7kCvcSNAgo=', + 'AwLCsWVTB88GUFmesvfuMvNgKBhsr0tt', + '/lBvR/F6/hqx+l7azW/hp5FpB+XqgaXkIINfA4gQOH1ggDgzFCxAjm1CNZzrWadjv0hxH/t5Ps6hhve4BRj++NObhXgMX7vXHOYtCFbYtTZzbdsD9od0RDcoJg+l6jvWbGmTV/IwbH6CbIJWR1GIyHt4Xjw8uKLmz1y88Ubo8CNRpoTvGHpz8nd85M1ogSeiXPPv4WCISluKUsGNhfz+hvE52bBSgh6erL7nJr1IYDqTC8rJOHDyIqpiHmUwDT3qFpBTacz9McyG9n3LKDEh5+qaVr8rkiZr4TIXo2RhAFHegxDsbjOKdQcY9r4YhCDnLKeUAVr0l+d/Cd6DFf8NwNWJbJooCDm/XPUAaviinYP2hRKq8jV0zDWxwT4r6EQ+iuhyjKXNuso=', + 'YtSEVUKC+JlQ7qY534s0uiHQtMQlPR/fYzVK6rsvrpWGDOpV8XS49gVf0+JhChP4bJiuZv2oHM2rUNdtY54MeXu5mh7Ow1jh04PrsAwuZ28LzNybn9KRFCazbdbwVIXvPFNnJrxBEUI01h4xiMek+4hcd58bPsWSWnwkNPJRUxQ+/A19eEtLTJHwkmVwHPtspYsoVd9VWB0qiFOeptQ8MkkfnudcymYMXQcBsNoSFJIbNHDzYldKISkMazT7pKrmwvZfEv7d0+GQNxuotDiuKIbuD1gXLG5DTnM+sXjXhc3tIhWWhDQlpXwiz59RVc2je0SVeC2h8JHJ4KutzFVpg2209cmB/27mZ086Lm4dO8FKsXHwhhqGrzuD7uOL0CqIfJElgpXbVoye578B47bLlc8ndkqWS6Or' + ], + [ + 'dU6ZJPip3BWCZEz2QS+ZcpWKyqXHTGtKPY//dRVqMoc=', + '4KpCmOvGyknHSH3fFCG5402T+ogqbZjv', + 'QIclaNwjgtZfshHv9i0eK+8l3IWgaFsmoy6gJF5qLBtL5gcRg5gtcHg3ySyYlMLcP6hgDtWRDJPV2Qp4HSDY9tSbzPCLTjQCPbQDsiZHgtO3NvjRVPptGmCdGX32facSSC2rpHcRCZoGGhEnernaqaR6pFjZD5wwCV9pwM+9gO2lG6Y8MbnXqOO5I6cNwfsEJzCGlZHI+Wsfx6mCXPVx6OEzYVbmApc4MhGKcmJcIyMogwAgjyViYW+Y/7cPTvqF2knH+lWOSttXsWtpQmWllyzf5aNKnRoF3KoJ+e5OvmWzjuPrE9H7qY+jMMZpEzXCYhSugQr1iB1BWmPTI05HNP8F3KMZjxJYgf7NOcTm9h9WS5lqm30kqOpsh30SC845M3SZGnyLHtGj', + 'oWTVHw8Uuj39q5w1wHiyNeKAROaF+rKxyigeU6U4/7nX7B89R3w/AGipU8smxJOf8PsrbsZCcQcKV4yBib3P+pHoQYKDbvDPi7rK0fYwwM7yhgwFz/c2ikAtieqxz8wByg24+PZBT/1MbwBoJa0jIwFgSZdXkqmjIE06IuQ+JhFv95YbirODTAkjzwGivOvyjnRGQnHdrmD8VRRbKWFK4Gg3Sxzx575qmUAKFWJWtk6L7aSQkhdoFpSMFJ1xrFUun68zvN4TgS/DVp4wffH5u6ZSQI8FGf8dZmZF9umuSfwCPYb9vR715UEY4VV76/kz71IqTr8FlzbKdCJ2Fa87tjnXGAdib98+wtdTKkUGPCq3L7JpzfgWwAbE0kOID37lcD6KDAi1IrATXD/cnAIDl1UdGRfXMpMibg==' + ], + [ + 'CkJ9ST52yNCSFLKO0dXN/2iv5XfkGcac/B8RfRALbY8=', + 'TxT6w2+/rTPrRUfzZxhBTfMVQhix3S7e', + 'dNdme7kxSE/gUOOSe6kSjR8PSrxn73vybt+TIugFxywHV+QlVxSV63gBOk9Sdd4UohLWoNy9y9Z+BFlkS5foGRu9kcDrB3LSenho+KXTXDIRfJh1u4/RaRXnjSA44YAUzoIGS4QTuIwihgcC2KAgwdcf+9X++o2t8MJBvgEDWAhat9pBUNkULqJ6SPDydqfF8cNOU8i095cMFkEZTGvhv9YWN+pVfPNJ9OLh57ZjhUCK4EzqAhRLA2xVHGl3egb9PU3+7Bb0QBrZSHB8nfbOOHdMSFcurxHJWFvn42IaL/BO2IZhxkrMMbrU1Pn2TjXuQP3FGk4gAJuKXRfRCFib9RNTwvrEvfqVDfZ+v4gNxU6LK/haI8Zd2meG3UQ/7CX0UJc844tH8n3wnQ==', + '64ggtdSFtuw/1pgWyZ5pkzaNIfjcmx9+HNY5IQ7+v3uG5fhQZQvtEJ1KN11+dt0vk3UfmD9JgQnY837qYA+8/oMfqmFBJFCdoO3k03cLrpctuRLxvTVKX6cqwR0CGFOz6rAwCAwVE5a5a9FMMc//Ip1kFZFEE3ZESZrMec5hoDg6BCIDVsef20dWeDhxEoWYcyeWCuHA9fmXBlkERgMAXCnOFdtq5TXvrsE33+FaabvbHBOcjZICdo/3JWauVGNyKwMrKr/QCj6YPdg9PG+lKyxmG1vjml1wx7Nh3+JvMA0RjV5vJuTMEhhnhNKBqSHgXrL7Kgf7gP4kojH32MyPVUfFzdVULwJ/JDwT/vqOKjOSq0JSyaU1zM3pUaCsxWPgR8lo97Rj988X0Q9B0kVtMlbIoI5vlIG/JC8=' + ], + [ + '+rGnPDj062EGVHrkZq51IjJ8MydgHlJMgRFkfkBPb9w=', + 'QbHw1rp/965cgIPpf2N1bfqSPpD7LFMB', + 'dfJhW01t3LyptscqNZEts0DPDs621HvsBE0A70np41geWbJaKN74UVzevC3egmk+btJNBBV1uYBgCG5HQF4udV3SW55VzhFiSd8asxaxIQztCPISWADupg14vpHwWAeICH+t0HoTeTt6VqIhGR9n6IxfgT8G37+UROZXfm0i9+aYN52ioZaNMRyqAI3kmxjnDLwfxe5tYwAI9GV0s0vEeu7yewes08eLZqgr8TfEpV114F3ZgDR6nXYMW7UM2HKGbHpTJD04Md36Bap3bIJ9BkbHshv+7tb6YGjIrnV9RJ9HIytBLANCa2SQh4JfvoSK7ubbeFyTz9vy9Jg4yXxXIO2uDixIdnFMEERLEQAyOBeEw1c93QOQJpQuVyRfRhEfS5PENXnVq6MjKjg=', + 'Lws3el54WxtvYTiGGI2CNutAJAP5vpJs3JLz0UpWHn/ct32Cv0iFagIPju2leg4kr3sr18jhkua65c1vO7mQIRiLX3f/X1S6MJRmhmLDGYTukIX3LY9xNCYO3rJ7z5fspsFMdsiK3q84+VoRRakxNkJBoTM99mDb0vSHDJE05u+gXY3yWylKAZyMgLOb6lB8zz9GIKR2T1KI1uMRi/jP4Rv75BBgvrGxoEHK4am7eHCbAN4ZfgODMLwvQUYLBiKhAYKSJdj3Sm8otH07Pi5j64SP9FulXfcFI+p+ZcSmqxiQu/6tPzhM8H1U2tZZWFjlQywrlk89uE4yucWOyaTygIle2OnIxTJawdu8YB8dCkt7t3+sG0YUBcRxMa9DK1UAM2xYIM6sMq+xpu2bu95oDv0T2IkcjZeSzWhh' + ], + [ + 'UwN4mBGnDTV06tnl+6/5urVxc9/9Jxp0fDuF9Ur55fM=', + 'j0+NnJqkmEr/0qTNU0QMGOllaDFD2Qmg', + '3tRVSdoz8aZy/I18NniXog3aOctwecLz5PKWw2VAijaW206ZjrN5Q3U3eVb3+WdXSmy5eyEbX0NOuJo7iqV1AWFR9hjt5ExOoL113iTDYFpev4W/qQjOjnVo5L86j+1S0fLIhc9kjQXSRaeJo5FIwgXXEeG1al82pdUDfGKCVOO/EipaHBANZ3FG7XLddyZns8l4xPKeB/FbtV47xY8lWxjkdmTTTnhWlMT7KBZ2Dsm5pCygkf2g2moNUCvmfIioIqeD0BD4jKLXD+aw7BKso3PvXCF+FPwxS5PGLGwEYr/5k54ZpEu5gHWruw4itzKYl0cDn0iKQWkXMylRQVU3MDxa46VAHV1DL03bP5td09GDLWnM384eYta1Nd1v8KlWzYB84m3RRNXGRtLr', + 'DRm5JmVPBsd3ArK4X5AyTYUMaXTsE6etPnZCsEtEHjZpQ7va5NFUcQJbZMNSD575LasmFid8MhVUaYQfo+AYPa707mwDvexLqb282+TI0xyLOQVib7lYbOC1Q5G68S3w2k4Gdq6c1ujBsX+VRcAgEyfii432lutiWcyz/OBQw17gSklcGfX+KiU6N0Ez0VVTucj9SgfgVwbZq1s4ZZqnN5fFpc2Q2oPYY6AA1Lzeb/D/ARRpeL02jDkK4GcMMVJXEMF+eydAzs7ARkUFTpkdakqnyrCp/rnaUYJggsE1UKwK/71HtwlZSsNOauwULY2J6on9oSUWTus1BLvS9AoO8kPMWTIFyoXTcjJjFE/HO7Luf8j6tW6Q/r4p1r+nyCPUuD/cwKbbLDmU5AatdbD2jMoAfywNTYM375BVSA==' + ], + [ + '1srAt4SPz1PTMwiBz4ot37fi3APylxXs2O/PEqCayEY=', + 'ZQbrdIzQRS+OG1rpC28CJfqPtm8ME+1w', + 'mdW8L1e+dh6VST0ddgpyicVVUEi2DtIz6cjSxuB0AXn5/G0czy5e4PNf3HXY0uJRB9bIoswG1zlR0rrHajFgY9YzKWoMNHWkN157kgFv2I8Pon4YcgNir/p4It5eKfrcXnSZTOJ/ATc560+qQYpraYsuMzs+GfUsdtX1p2ZUucP7iKHnHNSYWye030SguiR/2j43c3XHbHrOBH8zDHEhGTKMZruIwogd5+iK/ZJ/lhQGknYLC6nlr+55sIYAKZehjuauJcQLBNZ3/B4XxY4Nmpwa9h3jyRYpezLru62EgbD7l4V3L2T1L+dzOP0VFrbboFl+Xr9kk7adUgE4FC7ha9ZG6XV2YTCVlx1J+lgwimkWVBdmy5NgF489meKNxRybOVlRU+F/h7Prcb/Z4w==', + 'QX+d3D4ZLIbSRRUYbzloByK5RASaL62yPRI4XAV3GcSHHgZuMbNEq0LSqL1McMLbLzLDRe1qzJNQdcFY8T25nt1rfghWP/pvuzEECzTjtnmtFgbGszkFk7zSjwXVDKt3qFiJfQekPRfTTztEsxowcuG7Q6AKqAexBEtZ5jYb3VF9sL9t9OTSywQs92YZqMGWjo+TV3RzkPrpWZo7g03gXVNqWx+YNYa7DoM9GrXB6Q5ySOuH8dqctqPQhf2FRboMxO9qEDE//W5U7+MhxSkl9nVb9zReFERVDfP27/sAuE2NxDeN4U55FY1jv27LRrSAM3amwvAhRsoBktA2MyEhbNHbtta+cYCxfv9w9kEq7XYAvWxae7ZpnKpfregdxiaM5VMc141jEa4S4hPPoAF3w8JaREJLUe1KHPkBOcQ=' + ], + [ + 'ffpnLiJBUMq/ZmT4/vnPLUD3dhj5os9Krq2kY756xAU=', + 'n2GZX+815eRIqD9YKIgHfD9LDq50AEDy', + 'bnH7KKYjyN/eyLvhVd5G9YMX0CRN1Vl7ZKxalj1O26W9SbEde+5DZtfbgymE8fGI2ezcYgyw5dUcBGRlRJwOtTTdekSn+xD2XNAM3aLX3UjoI+eWs2unGaMim5SPd8mpvV3MhjOWjeUrosikx9Wg0XNibsYLKHdUIQMJUA7KkE6WCcF4Je8i7tVS1rErEqURpor3d1CgHKEXTKNL+7M4ZF4jvnOA2foIhSLB9RLgxyVOYTNKQkSsk0XgrE1Gun7irHqEuAHKXIZADCbgQ6Z9NOziRWe5F5pHuxEn29OEFWqfQmvINcBGMbr5v9mN6grvKuX+2nJAt9iU+CjztfT5QhcDaJ/noTGQWoqbfmguXznKL6yn1XAxn4jNs2J52IVHIAwfcbUt7RKOgoA2+pg=', + 'pg9npUV5nvd3lolTxzCjiiLYgmnlx3wkRP1eRySYuC1qJxkCZk7WCE4MdzJeCovZwaSXO1+j4JX15riT0eve+gixGmcnU8w5asrzmzrYrHto49l6t99gZqXgaV2JNesK9vdhKnOkAvNJkqqmVyJTAuGYLkZ/QrpLn1HNrg2LAlvvWBpKbYRo/BsICd3amrMqyorGfHesRvgNm3VIbiv685iTrZTsR8w/Q8rKBCN7griKjb6hMWfQIDPog2t4a/gPtry/uBHaWTH3oMFkmwoVlzm57D4Qj35CQS/NCosQaDvPoGum5ktCRC+z+EXuTT2ktZHbY+lP0SHn09ItSzyE+N9/71A2LwPfuZMlSDn1OLWjjsJjGl+adjxcskuqne3E865JJfIqd74esisfuNvR/LMMcPnLmPRpJWb7H00z' + ], + [ + 'N1iaPlcG8fKRkq6XBhvO1JZa6fMtqtiDVIMKnBR8pkI=', + '6UNC/RwU1Oi1FyHS89X25lK3nwwYO/nD', + 'BOeVi04i5qRhKf8eIqZF/Ll0SFx7iNwm4wDkNdnArWgPCpRxHguDpMOSB9ucoityRsDJ+6u0/6MW+ZvY+rERyvcXWjb6ETDr4RcsYcRY2ZbBzHYl4XI2adwqF/HK51O2IUD8aDmqlEnoooISTQGTF3Eux30yKsj449H0ir4zSlgRlXCwDGXaosPPAnhT9ecgU5uYumUZspmB7HLDu27IZdTjcynoS6m5K5LAfChi2q6/qe//MIiSTwMwLMdJDGfDk3NVa7z7LuM7Ia8kD6I5lfqmwbnS4pDD0WMdlUDaQS6HruTKz6ktwII1mYJDScAc98n+C5q4I5H7vRz4BEFHdJl2YrL2+ewSB6LSTFCjlq0d5x+V1NVgTlDZHJvjZLuNy6PulzSEqF3K4h4ae90T', + 'CpynECZqzPx7/cIwk1QqCfgjy4QAc5yeImfZbUIGOo6EOeaCL7lOGh7V4qvfjFWlsSD51/+WrVKi74a1EDR8RzF5B52BqI19n7zq2xfk7s/31hKroM7Xwbji6p04ny4AyNwPy+psKdIBp/+Wb60sGpTzHhigTpUZmLPWWuSSuo4fe0jJjfoBMia8WxoprVXfkmolNq1Hbq1+h3GkzL6bBVu53XyhvhIEVzpZ1LqzSWabseAk29OcLu0yatUMhpryfXHTZ0VVhD1iXBuVeg20GOdU9TeQTmRm5awH60hWNfaCM2v3Yt3133Z0Ui++BT/f6JBeVZAf0ItPUtU/1bo5tEOgh4ynucb+jJpq7Ff9WhtUFhN8+vy6hsqRxfxh0aeM7Ob47+GQa7USkDzLjH6kGO05D0TsdDXxT1IJon40YQ==' + ], + [ + '2aBMJqJE0JqxiKCXtAPb3TsNOCpz/om/6XaVlX9pMdI=', + 'rg8rSKRNY81QcLVodikSY4dhihCL50C4', + '+74siQ5/oqM5OGuRaKx3IQTRj0n4PLSNPx8OEO3fnteKzs/ha2RSPmN1AqhaZXfqSJg1+6Mw94Wo66i+fzRPcz0urSMjZDeLVWKpak8a2RW5BMnnYSxOaTtlR6Bu2w6uuES8Q8FPYcw97TL+yl1nbAggRcDp9kma1/0Aq/TUUz7WqaMtjD87ohm9wgf3fL34BZJljSAPIDmhyIzTrj40RwTZ/SLdC4GJgbr8HvsTUUbq6szHLRSrcfqNHd4o9qFkRqr+WpOQu/4o7xgz0ZthBnLf0oWDHZdJwFkvwtnJjxFYMW5WCNTw2L+1Am50ykdNz/HdLh9gm1nEPWH/GY0/20c/Rri0stGw0Q7hZCpRjW0wO33OHZvtpo0niAMAsS6WfuxLvFunMvSVlIlyuXLntA==', + 'AfJBHFd+9gbv4Lqasz1+VEDAwh2BqV1hM3isb6QT4oHcMjEiJSMPwNpjJ7NGgn8FaE3HRGfXwIJxo4d+lYiL6oY1g8vYkP0b15KcNiZrFrbzU3Ux/AzMuvF9+uqUiCTvcgCvMeYLvOp24AkvztMEBkiLJGZeD7Vie12V9Gy5ypL4p/R5BQGHSDtynjmly/n4gDQQ8jpgudJ4LjQFQQZNJTuDNNoVLwc2qxeEdkUEBUB0IHNw1/HwsWAVvwXZly0mrzS1sVf7pCeK1ZMLsrfFKJRilT2/bE4qYfq97hKxwa5SRU0mX2byQg7QdlT4xjkHcI1d/kVlcMqSC7TVKx/yPduGozNBP/ZGS6wCsYc7roP3cd/eVTcko2F6mqqorqB1W2lkVWUpBOGDSygbw9qfp0l4JdKMjERvmmll5vOkBDw=' + ], + [ + 'QDLZckhw7O0MNxfNdrIxzcqazz9Eqyth56B/J2XML10=', + 'SuuE32lXWg0nXPr9iZfpz1y8Izu03eEr', + '8ug3WWHU6G8iR7uuyrnT5hvZfpNpgRGvkG+0jQTv08Ig7QK+T2VArHCfeF65MmhlcXOyHLeyoGRwO8GRC4iYPNX6CM4PONZACvFE6ZJ3s8pjUhXxIFlUmJ5QykrYJShtT6B1HXGxmEZS4wQkUr82eMU39sPhOkB5pVv04C5ah6DmBNXP8LJRpbHkWKibDm1S4x31ICK5twSg80RfftgxKd3RsJQu3wzDK2FEt70clbKW5xOs01icujEoMNGxYpSlVZr2RgQfwylNxya3V6Z1fXo5ec2xEcw9sWi2hvPOSLsPKBhaO3iAg360CiLJxVHf6+CcMs4BmaGKUeC3g/4pl5C8N7PpblzilLMEly9CUBC0luNUK5N4W2oEc7imIXlaGyxV5BSTGizuqnFeR/mxYME=', + 'CJMTMeSOqwM22t3aCUWAk4cLTBsHYFeiRnlE7rsv8Ul88ojee8xXCqx2OwNhZmskMHSdlC7HtFx+v/oRIRDYsMt+FJavfCDv1SwQsh3H8OTSStgJg5yiMhMbjPRlku56Z/t5cDhufjTfBUbjC6gwjUsW0cqwz4Fwwb19FBidES3A1Nk2Xv2Ogcb6pojD/crY4nxGrnnC1lNfJ5noEvH34tCcN9WTbAVRkTp3pFhuPgCwqr/KmGVywQVtPBLFX1+Mn07jm06hPAS7Tn54SYCzUDKUG+8861ZgASi3KwbKmo0V/ldJG/XpaMqTeY9rE1sOvZPL9U1dNcZYtcQTshPKuZAuu0rfRoizrZKjUwNK+RAMq4gZikO+JVpH+VPZ8eC+VUwvwiN+VK5IYWi3Q/rBYJZfWYAkdVhimPJaDoHiPKzw' + ], + [ + 'T7/24p/7vC55f2TrhibTyXhH+6l/IE19ft/DyYpoZ+A=', + 'aVSgU96w2qJ1vUfC5lAGWE3Crr7dZCib', + '8pP16Lo4iE07Uawk9EKAqcRV0AcU7XWnQ5DKGwnO62Ari+uHKkV7Aju5C7MNLOk7xWxGP18K1Pl40yfKZVtFcwkbestlG1mAzmI3U9/BjGX0dcsi/u3Z0B3aYfDwUPQmFdSjm2GRkJQ2VJJ4/lEBvtKL5vaE+s0cV3SVrOoCJLeJYXqcnVAR0CLzTPZkweQrVy3qrubDzUIgBZapNBi7r42jPhOcW6u8+vJv+8PPRlq0u6dmz1daRbhsNxLrmxFH53vSBCiSmylaFo88lklRARoWb0OH+PmR+4vEeBc4IJScGlj18IeV08wHiCx0JytzkPg10O4lXhNx4zL3mdhMJQO0z3YpxHPkAyBqO7/mTCyoJiXeFtdFSpTNuouuM91lC5J5cCFW4KpgaRWlVa3Kf7Iv', + 'eQK7OyXlyCy57EdmnbDSPjz9rMEpKCQrNsM6Uz0Wakp4URVdod9i87cBKrGnnootLlP1FGoYT01xz4y9uFpEyrTFe8QO7Hh5TOHy3rvV3/zyOV5eJWlgIotX7clOw+ZHSMLKm78WK6nQeCTg+6fshwmNp+3KbPe43u4QJHdTiqsBDaXymN/bxav7zozP8x+++qSw3jWUVzbUyDnq83ShFbi8czfYNEi8OSDLSZ/bjBxfaizcM/d22ZQBQjBYit87deltQqRaC4LP/Si8qnq+wc1eGg7DdGQctzgfzB25JAendYRXok182mYc5sa6uv7Q4Qe0ixMPVsO+euBaW6hOnRTe+G+6TfCMEqJnqU6Q7RVdIocjjQY2fZHNMS/b2j7XdzZWVfAQ/4Qi6nlWwInGIlUc16YW0R3ed+IYmfEfnnqmtQ==' + ], + [ + 'YAZT1Z4azPiGNhgCzu4G7V30K+otgwya+GJRmihjAaQ=', + 'FGIo9KnDWOOEypa+Qcww5Rn2IV5nXa57', + 'bYJY0VfR6ae+i0riOUc9lg4BFaJX63bDUGjSAdvG/JS6CSXVn7VuRh+VvemRs+OWGOeQKavDsrK1oIbPLVK6Rvi57UxatNKibSFZEWb03D49kZ8erY6dx/RjGd0wqc3WmSzexAyzZYLDweFJ7F3teZ9/YzUx6dFUvre6wIJdhnuk+mUE0jP2GNf5apSFBX2vvuM2TrUb/mLM9QUY8bPDbagohpVIHvZ0G9sGqgqErAage2Is/gqFiAbnHCBOHI59XAOAA816JbJP1GfE/ngXP58/FFD2zd5lRZxD4/wxJRR7VAHiSIeP9avcOoVW3gRBIbYFodIr+pvwsbGtIsBc7eJN2Tz46X0gfWqsohLHjpDdBwAr8qTlW0dKwk49I5X6leti3zrehWkcWWQ8v6nTJfS6ng==', + 'CcbB4gNnHtflKTOUjqzTNCsNZPPf/uFx9S8chxeHxq8CWn7SJ4jWifxQD5411mRy4NyC093WHLxxJQVJKxKKZFarx2jrdMH4/NrD1cpLfVimLLvXCnc0iwsodYGcU0JCF32tDViQMNxflxbxU+NCbK/G/M8gE+3tlPqDxNsjw7UEwtSFHed8ADL6l2+Rcp8kVV7pI0oWA9tFPEZaqQZPzjpuuzrh8tkAE8cv1uiTZMZYIEWGWs1uwaiqnJq6jaFfS+P3h1nlJb9dTeeQ3jR/ABO6LuX1xBWifDru/A1pEyYc4kB0FP4YESbxyUjapKKfmgsruS34cR2Wsj8synNOysRD90QZtsCOW3Y+O7aeyZ55l6YDM98XQ+xTx9Ugfe46TMu7shEwp23rRkO+YLPRVaaLh9uyrLKwCG38jKoOTtutzyE=' + ], + [ + 'JswTCqpiLt5K3NdaiLoCKWzU8gn4IJvjnTIgn91InBs=', + 'PYEr8eUdDoOsnaxG7SZP8f11tVE2H2Tx', + 'kxMtCk81XG7e9fhBq/T4Tvtq0+Uckw1jipgcnBdzXXxT1TKeoScrzSpwD2wlOXZ/e5Uc80/tO3FAJTqpXt1g0B5zZ25OSaaFspnh8AE8ZPpEwOhGPgo5t9CxJRCNJUKMDN8n1n08XE7SWc2dhEtFKLWwqipzWOfxcIerX+KUPU96leARpb44x+DW12QZnVOkeDczfvaSDN+tRkbLGemzs9JZePGJ15Ur/btk6SwlEkZWNAvnXww94VKSeEcHGY/j7tG0bIVN5VQYreal+Qpdpl9WA+IA1YREJ0ghUoeUbn+oLu+wePREwePjncqEDltCK/fYpbPQe2YWOSiH4QhtNNoCi1ccBiUbmLf7DAfM4ZC4ASbf7MsuilrvbVh6H/T7rs3k/barbXF4EMqJWCagXS5urMY=', + '0hocxE3gN842sVTEmJCGRUNHFuqilfAiYEh3DRDINTbCyqykPOtJ0GHngUmsdbdVD0fEyXFhemQ9MGziMyNHHml6SmGTAl/IzgT9ApVIRPQLWb0mCEDkUL9FoElfi6eV0YCswvHGU2mFa5FwPISLdItK14jMM2R0LcAvAj/+GSYcZRWG37+t+y+O20XUgJpX1HOMso8+cppx53yn4VZvTdb5ceFVgoxdrEbJLwF9jlNZTXYNOXe7k0Qpc2alhwLe2BwFpXiRikwL4rNynue1ADPjZA7FLj/+C+SFvkgKR5q2oU2sJmSoUaPfcRBngV51dIzbdZ0K8sZUqBdCw84o3S5IyDoNWFD18oGStKP5P3LUluqacFDDaaN6hCrHPSG3qc+r3nfS/W2d1yzGEQVTGmDyLHADQurbMZB+ZQfd21Mec7Go' + ], + [ + '0z9iqHKjx1/MEhbBs7SJiZ4KyG4ksJEPEji1DloTyuM=', + '42Qg4j/ZYSTxk26ONJxAgmM/o4X9Ii8n', + 'UeTOksb8/JkxZnohXCDrxfHzckxcXHBpD8MA10WqdU2tpoVfkoJLMhCr6dHEmLa1Go7/LGa43TXBBMmXtCBsDdx/TGn/MVIkVPpxDc76kFEyOfrTiphI8jl9UzGn/skzP2xxuELW2Amdmmok2Zu5gV5jo7FZJl92+EsI8Saug6wWT5Ky3N9V90ByUCMsAngy+tJDhSUd+ufWsFDxNWoi0Qvw40XZ3AoT5JCYcx8ocJuI9tNchO1VUc4Uszk7i4uk48RuxpPss7iG9uTAwKdXW1A1ac/NMawYg7C9qKVx2r0E58OMP04/h5E0utPuZgR0SKKke/OnQZsOcLxa3hzSW3EUwqC1tLPwSCqKEMkTZoMbuaaOmKoPjzvGSoszGGi76RTpeZMUTpy7Yx3JQiz29pZoFJf7', + '82rQhMUQkULeR1V9rAh1z1h3ZXRT/2oqgcdDp5iLD6pgWK64l5sXvTNNt1iP467S2FVGjZxRNjMH7tqdPPPwK++PYSwNU6SrKAQFxt5Ii9D+HpvAv4dLDyWwwN3fzf8kxC12zhoaP5fXm9+ExjlKCofWtk/k1zuZs1b2DNWN1cYmrXDmEhMqLLdDJzVJtH+O9ncLASOpfs4YOj2wOG6tL/ZaLo1awrYvayovLL/Eo+YZQAMN1k9axCCRvK0XQdGhtvoZDFb5Fgruk1DuXOsdZd3ZUAwGIgsJXLf/mfG8dtnTFr7RtZoSw6tigOk5bBCE+rvGvbFZmZd19qzyLkTFZuiRbOysjQT+m/Q9i4NRzB6Ap+0weHSpF/d4nli4RvqN7f0+2Rr9i3oI7Hm25zGGlIe5/anNpsYJunWfWVqSMfGlutIvAA==' + ], + [ + 'b2a0AE3RICdlhU2ixs3K75Ce/48opExr2xVS0bnaZBA=', + 'Ruk1BTtdZHRKFnmI49zeaNH3xw5rJWbP', + 'OrusxnpmdYwf+EY2v4ujKibTeyrSs7rPArNyn7Mu1vKRt0yeScZNabrNtuVqk+ENufXsfjXV6o72JY2n6QnjBdigpR0fx6qflaynvwEzkaEKFDNvYkhLEc/6+7lYGBejlLL7qNXH41PWc3K1jTKF+uVIg/pyWDWBhz8OAWf3nkQWEFeU/MyjUrfC/HWfjATy7+Bj/6pt1rL0YlG2lQkh2sG7zQ+0Q3HpQfvaXFB+O62JSkU1dM2MpKbkAfEZSwB62ipG57aFHCNfVOrC1h8jWquzvxIeqY4hPsEKdxG5YVybtmHUU3wNhsZAxEQNGRJKH+kJZnDDAveQ77ZwoAKwVb6490cqF5lDyG30C5KAivYAjSXmrznmX3L4ceMareQk6z++iMUIA/dorvge8uor+64Nsysm4w==', + 'I5wDUJvwYaZQp3b0TR/2X8VERsmqaC/7or8vkp4kefXRKeLvICjeh0kUhyoHU6oY8xbucA8HAev/lWZZbA3qEVGicjhWTBvtV0KBFB+SC/LxV1PaJnqezaBTvCWqnydFTtGR0kmIjEnxVskVT4IreVVr5YCol7EHSDNvtBXb/jaedOSSbXpdIhOF3dKb1ElZuD3unLI/ugIPoFrIM+FSkAeVbmsTZNl+MeDbizmhZoEPyTLLYXIsrCdl2VxxPfng8hsId8j9NbVBoKBVp5En2KUXuXI211/jmxW7JN/ht1lpNJi3IT1Ej1sUPR/kDNz52zV7e5dbBpykrkiVjCXGc8Yn6s+7GoU9m4/E6mi7h2vtxu2MuPo+gfk3CBT9Q4sX/fImOm78r5Zu6foylv+RL870bsP9vrADEtmLNxk9DQs/QZ1h76c=' + ], + [ + '1NREUQEO1R6Wfvy7yz4lZuhUhP+31p6MBq8mw+4QgZg=', + 'wZKELSnqJHQUyw94QJAV/flhy2UueVt9', + 'mS1RAsCEd0Zzc1MKFPU6ov84TrqZ8A1Qwkegccqt8951zoHlulaPR/KsllpuioYetfmv6yPsQ1dNTqHWJRwJwFHWEeqji9Y8LkKQMT+HjhDl9Sn8Gh3in37H3HK0LyjMKTC95vOGiEExhGS/eZ51FlSdZa3norxAqjwXRrv1X8EY9UFb+mbP4/YkhfdFehtJH86vjz75RqS0jQLOlgGuh3klUjNRMeCsc2kjHxCOQUi5POamJ3MzO0GtfMB8x+kPI355Ffdn9/OoC27MRAXU+ihRyv5A4/usEV3JzDA5oO5G/uol4PQN/VQxlNOp2GK8mkhLsGjrXYcWGF+zuYVZP1vIg32LPEw9OiEnTJmHZ55hSYrJ2t/jRs2xwlLOWIxXY0LH/OzrfKKFE8x4RkNFYyoXwXgbzY0=', + 'EdB3GczKRYj/191WegtYBIsGWc9tbdt+eSm1ST4Sdj6x2nLPP6qJ5FDzvF915QcIU1hQJXidwylj+4fVIRm+DCrLpdY9EN4QBUlUCjqIexveoOQS/Ug0HQ7okpx6TM5Qx4SIQFePgZKwF/l2LnRQ3Xn/IkrM4Oe550QFPSbxL3CrORICUGpJ85Li+P4lk+xsiKcMCbf2uUs3VYKm9Aw7kh6SVGw9nElZG/9AayVQBC7AHuOIQnmy0i0SRHaRi1SbKHoZX9QhEl4ja07AVDk5KTRDEA6Q5B4a1spopq/E0X13dycd0Q6pBUfP+uvEjW1cvpc/cX1qYxHS0WSAevqVQVe5w8f1ce3J/ctdRhcNoGLiznpMRTYen9jURCaZLLuMvWmgxX4iy98v1SsNvHl2ywEe8xDqMSvd7e7Fya0j/RRW4ggZSsNR' + ], + [ + 'CDKYz3b5yMTdDh1ixzaq5PVycthQyLzewkw7BnJHex4=', + 'Z3VKzn2wc/wTvJmxDNrk49DGxWVhPrLl', + 'BuC+78Cid5H4PrjQRCfe3iSyFYBTYg81NM0f9WgV/kZd4no1DmddyZ76TpDoYWPs/NkXNP9eVUVwC7QXreMlj1Dy8md77tjdlKDV7NLJv4zXxe5p50Cljj8YxWY5xMgW15ziVFJLC72QQjsxxEvAjWOKVhLzCP5p1nBcFkRNBUu3ky/gqNc6Z7X3EZ2Sd4es1Ekm3o5NubhiQ1YpmMLVSPvhd6UL3J+PMSyTiKr/9tZYJKvBFhsqWML/CJyAk+oOguEeejZY5piIQbC5Bdq9oIKjtt7+2MBrE6EEehdqDM9Z8FKSpkT5y5rxp8Hbj3YmwqcbkQalq3cjVcAllz62KkiNI8VA7Zn3Bi0X7IHNMEoRQGIasZj0VPgHCEBN7KWZpSbbXE9ZefDNEu2h8u1gAW7/eJ3gRG/L', + 'cAs2uxFE7KDFoXQj10cVEjfbOo9w5yoXpmXMYOcWDgbklqftzrbDCQaQIuMzVUK2hriayOHjqtmSdrV++PsJIlslhD89LSmLl/WKtBgzKzxzmpOrYFM8XCYD7YO5aNETB64S3H6rn4opyzmjroiTUD6AgS31HJjVALYaaVHp+8rDikOpE95YjFBMAl7xjx5PMx5tdHhGqH5/knKiXAKJhrb7MgCKqu6CMEAXZe+AUzGmxwQHozp3Fz2DH4+mT48Koyw9k1iej8NhUVwS5vBP396J3s+aKssvzsZEDilPPXoxmZ5GYPl8V4HnbWfQkTetXsLzUxv31HesBm71D2MxPcwwiaXU1JLAtMKpbnUfdp2T360DjGIXNCAuM+4fEj+sDl6FOJnn5BNzk09bVvueaqO+Uwb3S0XK2pKp3m3dISuX6tUSKQsP+g==' + ], + [ + 'W179Nze1zXTvTWrDiPYE2nqrAsud+/Kp26tUVEvuUQI=', + '5HfZHuCjGPSxgz2WU0NglbATaOlAHLi0', + 'pecPcl+Qzaou4WUaGITwXRqBAbcYCkHSvwNvUnBrrEzSJ8bIYuopERyT50yd1X0n1E3FCwetqGEel/hiXJJ+25atAuXhJcNJs95siCKfDTRSb1FjlnflsFCCy7Rhe15rCHcOvZ6zqeMGhyDId0wmUaf9DbGCujt2OiCqn5zmI8+1J6Td7BYVYv1dMM+G0OMwL3b2EbwifdR2LN9HS/slG4y8pgHk02zFvxJThI4IqQzNwdQqaS6XiCwb2dYeMbwRnCB9o730V3tbELjTo7IT5giilSNZK5TRZhvP9Zz9rR6NEluiyp88GPex1lgeMZoZ3C50mSWPSo2LNRRuWFUZW59IEgkZa5KArxOotOSHU35ylJjFnY4IsYR+GXOYXer9Nu4Liu4YgPZZAJxCMylMEwAjzOnvaJ0WDA==', + 'Ffh4ISjcSF2mzlh2H9puGtsmXtliHJ9NJffi/n49A++kPL0n/KGKqacNdCAKwJ+Tzaeqx5uaOsoO8S4d97+sUzDyNO/NXsvJbDBXHZDWWaP3IX7IULSqmzYeFrPr+XBg9rKhnmDN07h9wlofTUM24p1I6qm1/KmnCOHT7ledILRK4903RjyZU829yloq3awvicY4lH0PLviDJv6jy4TGx3c+RAgh3DGRbbrPUxcQE/9UU+lML08A8P5E37YNqryO0yLZkO/po0BE0g5BHfbktFRTDeha9k4CINVHxnm2b2HdKWyY2y9egqqp2n/VOpB5hImSYjf42ksj9NvgV2XBfqaF8MSJw2wkMalOBh33kEriMQrvixIP3rWsuawrHt8YnhU+kIJxkB9EBsAMjYsuPPUqRmzHDKeUsN/0Se9C+58hAf/JkKQ50A8=' + ], + [ + 'IOPyLcEnnqy2dDKwGXSwdVdzXMIZtwRHhUCIrzk/92A=', + 'CCN2HF+twn/RUIk4eRspYyoX0EgTD0VI', + 'i6QBlxzqKYespWJOIax+w3wVSmD/teyU2Ou35IqPpRzPWVyv45JtLR98oItXWrjks0S24Ileyb/am1nxrAroID5er33BNACaW2Gmm4J5kf2uAqptnhSJoCFzMZDryL2hfgIcl4Lu7yFOONQGf52ACUctV7rswNFUh8ChamerJwbD6DK64GmShQnFQhQyk11UIOi/CbSmSZ6aNXzJ5K8rPilypjkOsiabJ8/XxDLuJuahDqD8ctsRnSlW8GPYh3nGCWaEBAuL0JG1Qk0x8tFhaR5PN7U6IXw/Qf9OPYmgFPoWIFqfWCJM55oMA/lY/QtnGAbsl+PZMNHPUYJVQFhFoSBnea0AQDPolse2nORzPgppqL8M7T5UNCdzJt+ZTwn30XGTENXVSnWVvNyXBgOeyEWY1mBsUhARFdg=', + 'ciloy8medzqmD300y9v+tTOjYq0hx5tnJp7ZmqJNSvagIyMxXHT0EYFgIfks7Iww+tZLGgtIljdf7ntzsF3u+9kodWdwPZCWaBDQaEXRGEjiywBq42qAW7JOnWUBtEr1kFAKHizzkyDHJ27Cz2ugrA7KRIFdSURwbKvXsIH8bQkzBBsrE3X9agm9+hNviMq3k5AjcezgIHEyT9OtBfIgkR4PLtF7/1BSDCvt1S9niy1dS5Je3PRZFeyayV/qL0A4Gbxq6CH3blRNkxKDtwMEzkiug1bir7dKrrZartosCX9LPtCGV7CBdUj+QChQrdatsGorSu5LTCyGZrmwPurgRMXJML1yAd5H4TfH8SAqABO8+b6io5MLNyd46pZ/3Uz8pcqfyuBW4scdzSl3Hc/dB3m6jgvBhGxrOS3+i3DdQPT+S4pEh7ZzqO1d' + ], + [ + 'eeFSHsHXlIFVLcc1WyjeFn7ORAUo0Q21/zrJHspbwjg=', + '30kJtexfxL3/kBtIPtalLe8jjuRFzt0r', + 'iQCTm7be6EWuCAlFgMQ+7eFefSw8aUlT34PGau9yamIbHGsSxBdrFl35LgWx8xfXQQi7uL8fyWZkjceIuXUkIkfUY4Bt2tWtxteOX5AIKWjvjc6MzMpmI933eoIq6aeP3Ff81OYYVT7UYKMDNwwZrsoXVfw/+fkCGrbkfnwR9JvnuxOg1fVD6vd1YHpSBQOsCaIGkxFllb975l+sDyodLlZ3YpXtiMEG2f552AhlaSQCAYiopjS1BPzq5sWu+znZMjjmdllM2R505/9R0hniBYplxSsXV8URhUbsv2Imv1SznEkJPC0kMcMEnrvJNGwLLnGsk7i21iGETMEyw2Skk7uxVzOereiNS7ATt/AGyNU4rMvsokIAgJk7NARxMf71c4mPmxXtx3EDTBYr1VWiEFF5J9vkeR3kmY2n', + '3NEpjJb8vrE7HQpf/fOOxSkuW+FQkmKyExWajKeqE8oXoodirdLBtL+VM/Li39fafk3Mr7f2wuat+QWdzOmTILayWbv0KqEz49V7sil3Lhl2ySMbmKCgcvkI5ZutgonejLQe7lYI+b72Z6Lb0fBnuM7juxy76eoIcfbeAxaPz7eT73ayE7l6s07B/MkOZZKspWdirQ8ScUdBnYoU2zDheNanMUYtryAj/fNA57WmbVMgSLKm9hnyIEb7EPf+2HQiR6QIuzegwNVL7K921+dSXyOLJ59stV+To2468jD9PIIatP5NfEnnNhLXtlxwgTDhiC3lPJrfsz376VqTumZm1v+s031lJCDUOuDuW/KzE2MsvMO8iksYzislCw9AdXYE2n0z/efc+umN5YnBWtzPnA8kzH4eXXOnrZFGQ1RDE9KCmp65AghjpfbaEQ==' + ], + [ + 'Pk964vJIc8zAKy1JaQZH/GV+jOXyhBsx7Pndg+dZK3A=', + '/JrM1V6HE1nmPLUj6fTYc6sJtwGoUnnf', + 'FuijNoGICfxCEf08FP/g4SkNbCQVBoalQf4euNgTamXcAoo52Btcs4zmGC7EkjbLQp7IvFTYxZr51/Jym9Nleopf7742KYcXk5wWdIIDQV7Gi9zMQ663fV+osjPIegJAGVbEQyXgwcJcnQM49oWjma3uoJU9X+xAHJr7v572mrT5j0MeDAxCKs0VFuq9eVJU/piPg2mVHARcRJyjfk5iHH0wij9kCo1NgcB0B/kBdRANCeGzyAVPLVMlYaspYBxbO4cOSo/cZZr9UbqC+rdw1TZCl2J9hvlVPtins6vURqlCwJkA/nDXKBRKKTVHCic5xXkgMxC7SCGo6GRAFVCnX51fI0HO+BoSIlQvPDzB5lOLxCLf1gEvNfKQ1TPHhJeV+1dRdPxMEEmxBtnB2vJbq2q9Cr+V5KWIdLaHZA==', + 'JSCUX1GfhUoSKb9wAYRyLZ8wwPbZp76pa97QlkyMHPZ6/2EfNUsIs7thDRlBZsBePcpLy6UWYMckfvY9DpXLvmSMCQQAKl/b+46UslStxo4PXsb5xS+B5uenjG5ZuetR9f1d+OZ/sAZrZGrKwybb9Foz4r4ZjZO+wuVFFWu24A62baH9hofKTqMC61sKMYwlQa7F7HxrdM4akUPCAjOw2E5WwoCd85pbl85TcMVUV/YSvs2OjFSFSte2bHCw/BywhCIqBasXHGFEgrFlRqzKoURWGzxatncKNPj4W5+CD+rM8ZSYF93vYQfwXUhlePDVtRZZC/lh/xe91Ni2R2KqP69NNJrAk0PKgl/fABEVxDfEaYTmJPNnzt69y9JnxETgj3VniBOtcoaPoWBBaeNH9xUBaXqa36+YEUkjtGajRe+UzMRqvkBaDsUc800=' + ], + [ + 'obuOEf8a+RcE5NqcupGR7ifXmKCXtjjeZ3RKrvwGt9M=', + 'mT0QCITg7BOgrVwyOpupqJV3LirZHGmy', + 'pHdGDE8NPmiiRSr5ZY1LTsuYCWbgjD99irJHQy6/gKo0uzvQrv0rkBI8UgI19xCTGMc3n9kMpKgc7Uvpgcg/RFYTuFAxGgzpcsQtN/6NE77by/Uaj3UKJxvrrBSxjUw9Et5kd/HUMZBWTtBvmyfUGHBFxo3l9ZZexzlyFJ7kaElDIagQp0tDPw2WQf2bf4AL2ffbZ08u1g1rRjsMDmpO2osNasyxPBy0YYIhxZ0P17g74GDAE7YSM/bjHhvPoV5ytYdMam/2anNjLAjg2y5kyXcXxCUG6uYWn6yQTXBenxs4vkyRnKGRSVvf667M50zFs8WJtMfqmOrvPP+1rNf+WNK7zquWnH2Uq6K234LqVf0cB01Hh2Y+6NpcDmDsxoXoXOkwlPM3u3Dd8xDG3vkn/WIYDvDwyG6PjMH4QVo=', + 'cAbgBB0fh5vV3Iw7r+f62LMSV7BTdfO+apV2n9KcO9TrLwedUuk5y1CmAE4AhysX/aZ+VoFZq7fXj2btsc5tiQ8wnRLHiHFjTipfBtBIWFv2qk/KHO4O91CtwbvP+vEH0cnzE/mOAlRO6Ftri3ZcKoDSdf89M0HZJVFpTbo3bnYl1r4nWwWoHX4NNtIXdJP3l2L36i21ozQJOzsxtJJhe+pYtoscy0fFzT8T11SXx9I36bHs1fn3YPxtpgJ+7uF9DgDFPXqK6NBGCLntwObMq3Qmkvo9+JRhgYnelWR/9LLJUeUTM1ks7YhG6PThureupSNDuy7jQvqvXh4cx9mJQTRvus5PprQZmaoDizIzioDKAmc7UA+crb6FaqrwXqmOLaoJfAeBlAUvuhCiq+bJ06PR7RF22XlYSDEeVHBKGoFErBa3JM87dofdhHQo' + ], + [ + 'yrhG6+bOSOe4DMuO0N6sHHpojvjmN2SPpKMQE4tAs+k=', + 'm3/A4LBFfFTI3oBRaUsOrt4MNhfuIH/p', + 'LRIXoMv6uuZfMVl8NoQTUcISDbkAgVDRUk7WGj1BAdF93ZopyaTcfq8TZF74Qq2ZeLbhQunLuweF7rOSO59/dKaqEdaSUOlSQvK28OycghoYvymc1SVOvWyR/mAVFKbcOI7KtYpiKv3+K3YZYdsw8LFbtWf1HUAS1OmQZYKacpxfRrOQ6piRpssrLzALpuqObqwjdGIyFeOoLYv0JGcvapghqKCZsh9WEfiswomZONrS45M1zunwaTj8Y1JLLICtcQmuMUCkdskFPdTbXybalmOavhI2GjIIvmm2gLq8RixmeRkGtuBQMhJoxXHRaKE6AAceYVagnyfrpzldGy5zjRGjUJI2anFeV14hATt24/6Ovhj3WVeQxW15P9dLdnTpk3I8CAaEbm0fvGL6q6cbIw/TNqyDfTB3W3ycpOlj', + '5rCu4KhAi//6oUsa2Wyv6nVF+aXGIO8qCgwhHuf85PEOfTyZ9g8OCwtuZdkd+a+218C1GQCf0VbNCFxl2+DtnpRbsZtTWHCsSaQq5M5kcorqsmpHc0Mv7DUXozX/OoHFn20AxO71KjO0ezW1KRqVpz2Udfjdgh1mY+VBXR+9rJQDqhmbcManwjsGR3eTaHz+Y6Q6gLo6+8PtPfMqwA9WnjKHzJWnKfaH21vyfnVh2zp+XSORwsRl7hP084H5kv0tzr/B15US2b26/2hHN4yOx45UK8pnPS1sjHZ1pQivxEuG5vP9+jqgBQkTYOP+9Zi/Pp/g3XwueuS5Ra2D1npPwxAKzEbiN5/IDL2MYI0FClWMTMrXcLxRCqdGQq1UiMcqd1gW/HxPZQV2HjvCTO+853AWjiwfavMK+DobSTvaMWt/LUN0M1Yh8q17HcrN7g==' + ], + [ + 'z2R45BTRJa4tlY787KqDoFPAi/Lusz/ZpqxyQbEuJPs=', + '07asi0HEc5eGfehakXt2cnulN46rHSFd', + 'Rebz1OEHPfxYFfeCuvOnD98Kyi/0z2I/pAm1zVSA4mKb/D609nSTxNZ5uvjC1AiNecqbflPIKYpVM/8/4oMUkSl6LwAlH4OrH+f3NUfOI2I4czn69zirKjHdLw7RxXRpit4eyKct2zLkZsG6sn6Ff13T9uuaYksW6qhOeU8QvN6bnKlTu7xSxWrC+oPeOL2vdcIuN3uww6yTGKgLEgHDQJBm+EbJXE0XRVEpYRGJ1Xq84u1D2E5gC17Ov7e/W6wQbKQvPk+pasf9OIS9+lbAJAL3X0OkUe7BVP6aDJny5vpMn5bkq9LpPRamzw/qWZgbXrjyBLdGA106etJIQUqBIJc22gwDnYSmoFX66cLMK/Lc/tvuuiM2RbO39IO+3H654vm3gvPHZ/ppHAE7s1KZYO4UnTs+h1M50cCagSk7HQ==', + 'eXeUDYE3OSAOikZF2dglb+JEReX26JZXB+95gN41Je16ppdNKFU/E8JL0oe5ve2D5jhG8SEJy4+3N21ieYV8rZquxt6Quh8MvQXgcT5wnp46Gwe3eBsE/PgkJYjiGpdWHn6u0+gh5w8Aw5Xl3IO4C4+2FL5tYyTjoqS7VLnJpe+gg7M+0mwMHkZsyDrwwI/9lzGE6I1m3QZXMFa5B02hup57OknyfBoHzayNZ4bB0hoSf8UZtRsMfGRyDhDFj2sEpYhUZrwqeg72HpMwEnL54dmURbGlRjM7uNCvLjocOzmS0Czdv/0RnN7DpCBa+viufXMqyH4CkBRXglpShCBcFbiEKTOrG8kGf+ILsl7AZReH0vaUNThaJ/qPVFNtg6ebvHqyMgF2JWlYlValJyZ7DV1Tdgnp2qa8dVWKWF/7WgQNaPBbt61V3Vdtu8o+UHY=' + ], + [ + 'fYiTHx7hFmCYIU9agnKHnTXjR/YXMaaSRSpIU3KwSRE=', + 'ms8VwOAn1IyOCiRKiGMA5e29hONbbR1Y', + 'gTGGq9ZVs2aI26/sZTc1VWcS42qsAjgXCRjaxh/qD8uS7MxrRaPvTLI1QBgvU/sjKm+8bXEe4sTd0jJ3wapX7zI1koZ6CHMPIzPQRvbOiZDpJo/3sKlxuYWe2gPhf6hnTZmOmQrj7pkI0vZv9CxVCikivmPe4/tBGN9j9+AEAlAY1HUVTR42Bf2zkoIp77QYJ+YswfMAsnLT7DgcnVH2/BQGm0q9uPV48RzbHeM8nNmKd3ubTzkrGyw6DcOk2gHbso37M2a/9T4ANnN4fy7MSvdT7oNTTUBcn0Lx01s277RjrshxMr2x6mD3ZrZPbjlOSxjyZwlQhahMDHIQSS6i+s9xiuJ02G1ccvILRNrdMQNCTU3hOU2z74DPo6s8bLODfik2SwDLvXWQI81G3wPcz3DMTlJ3jdsk32LuNfTFD3o=', + 'mhJEDFrQZLczAvqYokBpdXsoH+V1PAqAaLBr/QvO+35gQo4U1bOmedM8fH8BLM7+0KNlqA2cpuhTErE9aMFGqU5TevfcjX1vvTRbfXJ/Wq/9j1gHQIWbEFcbXQ1MNMuL9KBfL/pZjHsl9c7RaNTAjegGxVCjkocEDLrbvhxUxdqIxX8O5Q2cqrWRtD3yjKuX/5bCE+MPooWPonH/VvB5rfa7Wtle1gW43fd/fckC4H4CsukHdjxfdkllehVgXeH4rZBinZN2HAR9zDTfNC04aDj2OPnfLLaW7LIuQiaqgs/6ubwjwqq4YtPCfvcKyxd0pj9BrJtG0hfex0JQqIJORmshay5FvYl79vw0Qw8UcrOmfcAAbRfMgRAjM0X4eFu+/vxMQzE67OUUgWP8zimrD5eCtkXkMTqpVfgPFvXjsvaxFFWI//XjuCDJE2aQMZ0U' + ], + [ + '0E6r5LYYgO4d1SMXmDOXhcoDo8AffrGzSFLNbfSsIT0=', + 'j7YDeifUmttbeihx3GXCdDq7YwPzBOHr', + '6WWQUIJtIsvR56q76+RgjddJkzQOd/e2H7GTjUdKR7sHrJV7LTz7qWGJKE3RK9VjVCOJJZs+KqV9MOxB9cg94XQYcLZ1EnUgbtvqroDd6J9r8qEeLTY1RHtgviWojzCYgRY5Md6vBYHUEhIBSw/Trwi+ot83HdNM44NELKW2/0ysIhBCHnwLhMdoELxs+VByjwF0v5GukiVdqRqFmF4hRc8J7H+KgFC9XEnxWD+OTxDyZF83JJFYWICFChUx/1IQuwiVtpLRMcOZsVUaDnRrYyiZuCYd57X0Lg4TG3cHYdyLzgkzRsi6ZUN4l7ZQa3UlBAVE2Ft9w5tZl4Phuq8K0IrRYt4RGIvQzoPnrnOYmOxFlF/IQhrJm/XVVf97ziJzAXFvJw17oBLkXo/QFqzOk0EJQ1oLhHPICirZ2RTGbLWx', + 'mMYBisbz3ynKo2+UF5J/WuJ11hin8NzlUl5iTb+HR5IyuseM6+bqS/Go5woF7Hd1tCfhdpfj5OCgQz82LR7TBJkHoshrOPsCNN01bDxjoS+UHmF53iU6csYx3xmwylwNLcILRkmSkfam2qO8xGNwLbHYqJVmY7dp4sLDel5ttSBz2way8cAfGjFZ7T0AWmpUex7bwK/rEh9HKe6SyFR7k0lztT0/Ss7I0YRajCEt4MXUpXaTkJ87tWoJL98g6Tjoryy7Sw+6/i8GKvOWaJNSLEk4+c+mAWbuzBoVNcxEFjQw/BdOyH/1/rsNjVH0XWD3ebZtn8+flcOAjXk30ldQes7QP1AN7Y85jg0/4Ac4BhBNS1Rf/jwXSBZdc4419K+Mc94DuDopCn2bzScspVvoYCavrSxf8TyG09WSdhGoLAxvY8mjJyNjXlNFZnEWUWcMHQ==' + ], + [ + 'AzbiX8LKRCB9YFQIVuzW15+Qan9shEMa6yhHp3b1Gr8=', + 'WH3S2MM6OlceM3qTvX79FiSliI27R3sl', + 'c/KHgGPb9yzI4fpFkJNprHEf32Y73LG3FsC5QxRu03NS5/Vks5vHTtWSm+mQEKPTT7HW4WuCgi1CAMNXwArMKINEXwlo246Vte/Kn5ooz6fZR5gPQyQL+Pu0Ad5LBWcrO3pX8szf4Io8D2mjGvdIuYs6EH57b5pm4bBOTqZavpXsgJxBvJ9M30MZdY5oDl4OyHdkWuN3uXvPjD/tHYNp44Aji7jry1LU/HUs7tjTV6xUhQDh70qFRUIpBi5w3WrRD79mZ+RNeJ6iLOkjewQ0+D9A3fC87dWL65gqZotJ+4QRWlm/oj03vWS7B/WNRXy6FRvY2A7tCiedQ6kcvwc7/Ss8u2Y53QLHOvMvSgjKlesPAJHmPkcj/6Gad6CBwNGoXIsdFBgYYWNzoKRyJtFDYFpiAb8HqWccIdhQyubkGkjlLw==', + 'EhLO3h97Ds2MUFK9Ou36pRKCRgEOWbbU4x1PlU3d+Fxpc4MwJ3oS47PS1ZMxhF4Nm5TKV55l9u+qQSx4N+JX85N8oXOysY8Xkq00PcZjXnVM1YpLLbvJsgXB4EqBU7HP/plmUWiTJ83EIVC4hik/FbBGPQWtYx8WyYglXyViq9xW44BorSG0EMBF0Ha0fpRqxUuL2dAJoCSWvCEtaBodA+QkxkfOTPA5e/SNWEOxY8Br5oWU+YDw6JBs62bCXbwnsRxaXnHvlXLeJPSgvafcHSAVx5TGt8l1EUuC4Tds6ypQ1dpxv5kBXOwU0D/YSWArhWsgCbVMi1CdKYhss/gBmfudh47RJWZWZmbW/bFA3W7Kxqk5BgEzA3KQthzh+UDgVkcfBJKWiKOilf4HeX9wXEZDf7HI+qBj6UMzwz9w7gLWEqO983s/K8nClcLKaV/PSlg=' + ], + [ + 'SzlGNacQRg4yE5AiTP/CLTw9JD3SuSsvZRqsh5oxhfQ=', + 'MhBUELOQOnMOxvlYb54XNpLrJJmdorEB', + 'h2tc+mkexqM1JCKZyr46eXNOwyOQJsySbKOCff9eG5Hk+AYmZiBse0yaPpnlTv1vD1u79SqsoJjWm9kVHXc72qK4CUZeR9YR0hflEviiYn2l/cYd5TLkhoxAvj8uP4RR+HHaRsHO9VIlM2tYI2erp6v4LZ213/QjEWbkBLncz7D+QpfdcLRDBx9nD43T2Z3aUqGOArfTXZ02luY7SlAonkgzG0opvcz+fu/kp4C2fgh3oJ3FevHCeFYDbBw1TgF2T82Ng25ydKEZnpCIav1UoZ3jxOh4j5HDDa5B2QYC+jkV+8F1FsMkoWE2SGedOUXLBg0tiXyOLG2lTNjBJIEX7Pr8WgiUJY8XteSf3+NjpQ5pWK7BiWbJ8GtSIXmaCv5nuYr1KWNU4WXEWEF4MVD6ErzXJgmVEmJG0hiwExBO7TWXxc4=', + 'pGfFM664SmPx8J7mTyBhLCYy4sEuKwdvUrNvxOu2AQLxb5WOTKU8iRdQbIm/QbQa1ivUpbWtllS7cBn6fbDcnhLql1NWvFS0qdqTihCPsJksrAJptda1hDYmuRP+tvadnHJZ+5Vqu5WG2cTYX5Mdx2kGIpdOWACIkn+lmEbS6AXXBa8HLs8u/3FWnALmWsyQnhEHZk8E01V9dRzdzL3es+/NqNGq2h4z0dlxL1qX+Lco4ZyRplRy9KF6HgLBnEFaPYOBFOitJYJnIwqXQcEspc6gHALRfypMRKfLxHeoFHNmLqP8p35wAtQSVRBhsKex40b2CzDbDE4ydO8nYDuTBtkLJtJiFlig5uLWQXEFh/ShDcCwvasNQJXF2Smg6fR2hZJZxqZ441w3xuZIf8ICtPJUT3YP+XEKuz2ZYQUX7OiJTA0XOlhDSYAA+K7/CymUJW5d' + ], + [ + 'CIY6HN4RehZHEIGAS27ywfx7MszdnQ4SptwTgWRV4QQ=', + 'JQOTHk7hC+OfrfXxMBl7aZSG8D1Dxtj2', + 'hjvLR9tEdL3qfmVcrVb8fnmxiD14guYfALFfUzchm9jP0uLfqRalOSTXpwn2zl6HwCAXrvkf05kpWpcO55sE2+vlhNKgKNPJzUJPpmYNNnokemeBKw9gNDin7CVQOCawsyjEopKYhywjeQOjXgdQkPvxrh6L7v90K1LWcBJ8rn0j0zW2g9LIhzuNU1wXQbDbRNJnixsG8eu3ojiDSIHzR90nRpvZP7AinBMSxp1mERaBFpdHEz0w3e4v/ofDEdt19RCoYIGWKToDBCHiDchHgff5Gx4Tp2oTcDmNlNwEUBHajcH+TZF3h4bBsozwfyzMtaPCstOadNqRzzcJpM9Nlj1nxL0IS3QZYbGSq900onLEi7FKh6QuudqB+biB5ioV3wHO5j1O26WVb/M11ALPxSrag8kQMHJ1V72VzqlI2Nl6/P20', + 'zUL9fVRxYTga1FCgiB7pRQI9mG8xb5ghfU3GKuUQfuollwGh+RnXth7BUFi+HGTyk52GCBFUVBUDaEpcvx3CD2QsiKaPJGkhGBPvYX/loJb//NPETd/xIjSy1IsmlgdDXn/+OcwyrRe9Lshikayfda7X5cuHTV4MgGSAUE+iarNmzVBD6QxOWxUvFlQtbr4y0oU1G4aliB3POMmegQ+KzOsVenkn7lnRX5ZLeV5Qd1JqjX196Ue7vDzBaAb9CdpXDaOdKYJNed95R1gR9sLDj2A3PklExCs+ejLITkSHqvZI09VYBQSCNiScCGvXHvnoxILM85BGYw+leEV4LbhTBXXvuWb87WV7XI0Y9addZ1OoofINco2yO6oaXwsSEbkXmzOlP9Lciv7wndE+AVRCUsxJAc30Z1iKr9Akw3IaYRX/YFvvSADzyYmyT9XBm2OYpQnNVw==' + ], + [ + '8erqVFbibeq8YKXoGnmSksMH0F96+x1xnW/mkEb8Hx0=', + 'Cz6meSm4NdvQYLVSCsiq/q9haJ1OqYTp', + 'pV4vtH9Mq7JbtkaOniebJSi6RhNlsffpzd7cAnS4Rid106aNYqidaa7fsg5YT1m5KCxUFVh51oXCXB1MMrF0+Rll7Mbt59F9om4ZdgunJsURskIJQYnV9ziQBniIYvQsla5v9oYlScbCHapnJlMNWigsf99Y5Yv0RFY3mdb53C8n58cvXrc90OyDWNXPc0KkjLPkMX9KwklcifUZeR0XweEa9R9IHZpmkEzv6RxaAvQ0UFEgDQbHX2Nr4pljAm81mCGEeWUpxhHRdIWqBttKFdSn+SVFFwfT58CbtykgE9UzlbRXaRXG9WiIG/Uo7AAN84t4P8hk4VMmcRmVojreW4gBiEpuoCcruQONzCJS4lWCgHre4Pfi1fk6562C0HXePWxl4dnRxk6Gq9+zPHH/gbr9mfEj1wq77JqptIFv/jFmCZRiWg==', + 'rQyQ6CT/yBcK0pDoGa7JEsv4xd4flv7Ppsi4xKDueLVjG8bentd77JZxphP7efuWhs19qANGPv1g2Y4FGqxdzO7HgrznO4veu+XbdlDEdMfuviAyVpk5J+JECErcSk/Ubnzqx728nHiXjVgW0CqLc4BqWnBIgzx4bsBIssmbx6qkBE7+Wu2Sr+GGWiIBwT2cTSsaPDw4r915M0feLtvCLJZk0YPqMoUYnIWkkAeKTJcYlI3Cx7Gb3+nI3Yr0JmTEK1OT5MrdgubY0d35qUESHrkfpAFvRDT10w0BmRDKET7rSVd6YAmrxvVpssRojJmd+pt0NtQWc0v1o++BPSt5ch57y2UmjeyqIhituuZhVGLpmdkW4JJL5YkSU3g1CTlSwm6NkNaNVUO0Z2nUWN2SoPwHV0RWqAFkPPPYhjB5XGWaUGJt1gWP6oho2YUIJPxPvn7jn9A=' + ], + [ + 'cIi77jDOG7LOtwTOXUkOAvAyf77maq+uddggH35XPgA=', + 'lYo1noL1+jCXTVZmy6cqCRBySZZqIsLA', + 'skRX2nD5IulXAFFSaWkgXlWZ7FhP2Oef29TWoYYuk9IXm/c9rYxwhQJot8hnd0Z1VlnlXLdkmRppb9Zh6VN6gK58Cvd5D4m6shMU2d45/NNmhaGRwC2r8NcI/bJHJwXPB1nazKMdSDiqDjyMMi0lBevGbev9RBXa/n5JizB3NmXr77acVbNABJbN0/qVwJMUGztpXsKHCSIYht3e+OfQkUeRGdBzdLOAXVFupnbvg61LhvahSyoRls6eRFTzgt+cWfxHdkzh+O9cNSqv/B83KUxI5ZNBOP0AXXOUrmZYcyC1Sd7UdRoVoJ0vnUX1b7Tg0UKmd8DINl43tctu6vtvmxVAcGDENdYDUvecnxz//3NZ8CHXpXbceRPgsgGNCyH+FoOnlgkdVGSz+sDcUwq6KaQCMB6O03lgqg+VhiLLtWfRM0qp3IM=', + 'BYi4grr4NVvT/JRE7ZWn+KgxGzrrHhkVU01v5Bx4oKPoZVEXTi9v52Iahn1XhjN8NeCOycdUrJSRsgd53KVUmSsvTsr8pvWNudTpPi61dc1dXK16ueGJCNhIxKBezQTJ1gPxQ8rdoPrKIXe7IW5sIlgwmeY2tMjklMhnQ733kx7B23jSJo9EY1CFvnyQLLwUkBleS97ZNpPS9hgYNynuv6fmkkU1w8mel/uIn1JzcNiPU+JeOnjybV3BR3y5KQ3F6IMdZVXnOoRlyNltZVIx6bSkB4G+oFe48a/VcpVFP9ysuYiDYAarFk0SfaoNv8bCacM+nLpDSmCPnkybbIHs2eD25YfCHjQFb60xyhrUzdUV2E0OmTsdvqAyI3xtCam4CotccOuB8oAkhcMCsOOR1dUl1BSRxQIWrHkDAslzOb1bShOHthphsDdIuAIP62JlKKuIWhAq' + ], + [ + 'l2LCnWvZsdaIZ8DOaL6goqxg/xRMGsABVTNnh8KrFnE=', + 'l/LfL4vubTTH12ke+JLw1hDlqnwAPo6h', + 'jU8UTWJ0H1ZjBDNwGIiS9m+62OriVYDNjA0BtmZrqAXi3gYWn9ZEylh9WtsmhBU3SNU3baxH60U7PBXe71TxpOJRgMLGtwtgmgIQV5axn/LwLc8ylEp2CeYfu/SdNrOz7/esB9kVMe3QcY/5kL8629z0YzVdCW0Y22eSt9Xb69EaOsiuqMkh3ziUXGyONofEjS2v3bID42OkiTxWxnwU43VNuZ5g6/NbqDgPpI8Yq2lzI9qMknbZjJRx09ssXjbZSjlGtq51zcaqiFywn3YqUUl/wlv+fB1cZe45QxzCY5U0Hi/2CZfU9wyXf5BWY7DDJps6Sp+aIcEeDAAAVaNLQhRmqw1+ucVivT1cFuLKHngBzPcMugd29YbJFQTA6ElS985l9dOIRD61YfIYo4vtRqNeURiH6kNs0mb+RcZUpSRSVT4ewxXQ', + 'kwsFrzgJ26SS44+sWas3Z9hnFv1Ep5gdZ6EKd6E8SeLcOnOqSmB+n1DuFl0gADhz25aIXUxOWMmNk2vfZpi3OSXS7yBJ7bhieKMBx05z9xUfu2SWkin26LoVTvp1uoYqvgpkfSQKDiNuQdiyQxdl4WSuhgud1gA4YWEo2PkmIbNwVM0oBTcZ3BklvHFCMwOXrLOEC3kwALnhKcBlCH1TPgAXWpqnpzf3HH8xxrPPsFj/levpqc/0dO4yY62wcUBSBhVjx0w/fb+M6Pd1aPk4uy/GRmBJ3nZmjXtCBRbGN42uUy7WxLiOiO6O8t7aBSTnin3tjSlTLhvFSZrmDo2HvdminalK1H3MMn8HE2yLs8Y/SDOt8b4gCDVqTDWeW5jFZEjNoVrPGMG9nOuts81OEGerQ5p7wHK2B65XXf85i2IWYAuB3/CHzjYWTqgJ3nAdBdyDlJd87w==' + ], + [ + 'QbSeDimJegXdKEuB5B4Qplyd2Cbm7qjnktH9M4Gk3SQ=', + 'GKPDcoLS13rl/g+765ZKa+Lva24lSvbk', + 'pFm4UtWccJnzDGxwOYvfVqxAu5rTyej7kkOeM9tQaWTf3+gg4qzQNDaWcMbgfq6fzP2/rcRzvAxEY91t/jykPogkv1bRBqzEkSYVmXohCit+axGk72Y8Yp14jURedx1HOWM2Jpz29f45Ycw+0R3BLs4BsaedzFca9BZ0P0tAkbx8IvWACEyyElRfdvwH3sNYAq5+JIiY5UxtfnSoJg2w/D8Ov6nmpoukAXq3FC77RqKmYzCRNWxBi5n0XBNg27PHIBW+TsnDDNF1jACX2P1u0u+TH2DN7hwYqzvnr1611KDR15vPHNvN/UiJseNIKgRsCrX0AUFLokcX79lXif/gGj26pGYX/FS/WifLhr2/uYzowbGOja7l78052lVscDK4wZWZ36WmznFvUFSaGvkJAosFmpxwV2vkQKpwvNe0MlHlL+xn2uVJ1w==', + 'lA7wZ+rHEklEHqEKa6tD3F0cBy6DaA2WKqormLPj/TQ3rZUqhdUXPzgOEPTYHGLOcRpFpkPUmts6s0jdWIHhMrQGqabO6aR4G+uMw1GLeagsIMtBrUbvQvEsYtXqK58CA7h/Fy4CkGzqEeZaZuJ6foomg4hZ9GNF11dD3qKreldB7p/DLW5AL2rmFeOQfiDaig6YP1Vqu02hSgoMX6PvrM0EpmHhcpMtcAllzp/7yfhCGfnxV+6mZQKuR2bxGIj35BqgYMn17E/f1REQXTpBEuNa+9MPzLgz1wwoMcp0mOW2EuiRil771eoWJiXoC1w4gHMWtHO/uFb+5DGpPldAMynSCkV3X/4+3H3zCUuoREthmOfj1VfJ1ROWyEF16LEic+2Bt7RFmHDgnz2dGGjf0k13wMA7A2cYLk7hvQWlzw6hvRvoBWijnl2UcPrPuCYqJ/JwxoilaCs=' + ], + [ + 'eTxbSlPKZQq+0HP/b7jWPo9Y6IDrKSeZVA4/AYBSKOk=', + 'g5IRu0n8guVnn9cKlGEAGTZTTm/xGIbS', + 'IMRYcFbFB1234JXGGlCIwxY02ahI/hkef2yjkDNpzhn5wfvQSarb0zFrxW55xbbSUr/9ICx9okBOW+vHLBFsKrC6pcN1hhzBytivEjOoenKqpHjlGM7zRN2sXot1vU2zeyjxKPxtnjCcUk/KTA2h0CN22UmqZFWuOgyHVNkMUrCZ7JSJUMMpV45oW3cXgNWWays3LLbiNQ7/ZL9lxC8otcgTuMEbn4CeqJo9iRTX9hKGfhRH5pzcOpZvuE7XD+Wv3jweYLdvIYKSYqaanM7Hv6WH0gL9heV/xXs8icTHEpgenhFsHTUuZA9OpE/mdDEbTWnUZ8OtMmeKyz0QWyj8kdnEgPX0qo7tW5UcdfAFdOGjR5HxfsGs7Bgefiu28XMG6Ok2lolczNwYcO+d/AWU2uonBc7oYR6X7TRzz4UAnVgu1s6sonFfP9Q=', + '7Y4vI6rjMyLYcBrdeCGrT84bSL9jfrztgCXRtbgB8IpLnAMOokTGA2PFCcIDMmDR4MEQKT4cGqRtgm1wAZF/eW/GfBJD5FNZ7hvuz1FVT/jtpM0VHwUXb4wWSn7+QRbtIMjN8ZzBVnbGIJbDzXLQp7yK7E0nT7TFLL1dq0gyIQy6op71MkHve7jdC+I/rWVQwzOP08uxmlladekkSpd4dVTxWJO3/aJWgp0ee+pAw5cmNWHMfOcf+m0AATNTuXc21hG5Kx4yWn4OU8cqyPbSIDz/mviIwR6gBGKsXTXiKIIrjMGzNcd8u89USivWteSb8WC2YeXe7MuEsq2E8LczgppP7XZqowek6b9tMbN+ftsJC5TRTUR8wYk6H43KXsK3QOqYNo5D7I5ADxWsmS4LdtMP1sieqmN9E69WBKGHE8pas+o3zpBNiKw4nq/lwrhv96Y9bS/eDcq+' + ], + [ + '8SIsTfT/zbOCoACQT0Tzrpppyn6W3e45tkPLR9oaexA=', + 'CvIez0+A8LXgI+axYbFPNktR8zXls5Up', + '5DJ3gVchQX60D/d4AXF7oOAftitj8xPx63lzmR3gnhtuuyJhgl46rx7zgf13WPLMrTz31KDfgJjsf9CT8GkM1Q6Ch6sXH/VslA2OBV9R0kwkd2ZY1CzOJlMrg2uMzhejiJU/JzB8Xtv1bd5XevwVvgM4MX9hCyyvlis6B0fH0SrELux78kTNlcy51NU6edjoSdxSDWT5sYptxLQTQ/suAPBaGTf3I7TyDFt6onl55hDW8Fo7tZtYggbN4i4Bd6PBi9UH9fwlQUEMmNcyydkzPAfrBAEgR35iSock01mYdQKT1N0KcENLCtLh0ZWcWNjQ8vI2Q6PKdDI9evLDw9U4cQlKAihjhXrmjdJDnzMeJvUp1KNC5Rzgut9Jrtp07VuxcWhzxCMhfSvsKfQ/hmE30/fbd42OX7pnJoACHJUyv+bt+N+M8CDDxhP9', + 'YfytWqTVBHMFMUnsmUCTt04rVCG5sqfk4wUj+yuN7/Pwi3aNRj1T+/IIRaLBypE2JfxlHlNo9vIQtbIx1NTg9cm63OiUDqIUQ/6Wx6I7yHPc6qf6AhTi3si5CnRCDAG/0G6i0Q6Ga4r0tMfsXjATV/RFF5nRiDRBUyqzDJXjDHygs5AJ52vgtR2Dp1pHX/170jybxRvHdoxPxBX1aqtOMxApb+eo6GEDpOCwqrtHPKEKZl6fWYB2XiirGsVvwpaFuYEz37a7YUjvRwm3naEo15e1xN0cifgJjDTED/nzOWyMdtAm/gEPW9IgBVPo+100l49F7P2TmbFGgydvV4anKdfLgZQVuoTS/vERMpTeVURZzIFBJCamAXIvtH1h/oZukiw7IM0h6D8FoFkjY5/3rM11QwzKRGZUbyHXzkHE2FP83ZeQXzEATxKlc0Fan64DAN/2T2bTUdN5Fw==' + ], + [ + 'dpGwdwclc0s9FjKNCsN6DSxlTSUpux/MAODet525cns=', + 'C18veSkZIoBKS8sYuuMlZclSy2sQPPT7', + 'cbBtXRTv+h8mR32klA2Ihkqg/LVPDfLz8ISfR8Cwtw0N8UrNDDrm1sgoVJSGRmsBTnX9vS6lwfFEyXND2NVt36vjS1C7AmTbtcnELJcallurX7oTLFmKghylLomvfsU3ZsPkXZx4jQCBsnGv9Y7lzEkNugg0CTH//kdWQ+tuX5Uc/EP3b8I3x2851gtH6M1t37/Q27+6P/77rZ6asOlgWDNw9d4RntCaHgTA9rqsutdD/J1ULDlOeppjPrBeoc5XRyTaFsUcxIvL8Eu+ynoMC4oe9VFypzgkrr/4XOfE89e82Y7/HWKC2fu7gAYOW/GFDLyYYei36Z8aUOhgznXPXkL2/LPwuveS8KWGalWbRvhOK4U50/HPvc9xo2XIGx9xLbEEpAk5HndQHTRSa2sfNEMaOFfprJ3RsMZuhFsn+k4ojijiiwS0p5j1ig==', + 'q2w4q0t4tReS1AkDm1mrBNKB44KMT3toFGqXuut4Noa0vG/Fs3eNoziKVgSzLCA8iMab6cCINeWxghgudGF+YxE0OD18dyIaBDurHMqbRX0sXnrnCAqAz0Y64HNjvSeTLIBWtA/q+/oHG9o2yz6OSyYMNCvZpSWP/zv92k22zEp06Ri+RLwmZ0KmEwo7SZT2jQwZj8DytIt7DMMTnZ3UDD5WbfpPbl+vR12oWP8jqgLtJZ7XOXnmyCt21gny33FQazHJepb0m1+ngHDZuzltxkKY00Ng4wEbIqRCbAR3FS9LbuzdYMq60wMeKgFjEUIac0nf2yq4OYxvYKh1DmDtY6TUJU2Vs8S+eiNjEYfszqXoaFM17h7F3EpsDwPRNuIZCjr0AwT5HRMOLk/SvhlWp7Bz7zJb43swH5y1MzkKMVDfkV/bnfvcvU98EA1b1lVRnxaXff4wdM9ehs8=' + ], + [ + 'APjQ1LRL09krlDGRMgAVNVrpABh2C+yPeWEVbAh/N18=', + 'oBWiHE0ZUzO5WNU0kvq/OKzWghehLQ0y', + 'ju/egMuobPuzyUcPYQcbACrlvVivRutXMFSZvntfXwYAUD7s1ihra/gLlrHrZDGbZSVd2JaNgXUpW1WAmOLpK+Z/fer3Wq5ux3KgkqkHbtidax7lu3FE3JgP22za1JA/3GLsV0JdiyKMkLkfcGjsuyL8oNpoBH6uKGsQSjlOAjwLJpxUIsr3ePm+oM99E6tMsMgbmmC7BSEpoqGqApl1T4IJAZ5pFgs9R7d3o4Ni92PynjgrrL1YhHYwaqvYmtOlmIx7gsVbm6f1s5dxEK6gAtmphqoK1NpP7nNhMtKpiscWx2jWW+su/4+dMnL4T+bSzB0l6d+P7YvegJH1Oswg7ZNCWsvo7hIajtETInF5EP1tYBAqA9eNIQE0ik18OoQ1NGQNOjzz+Pvr5lhJGdARa208++5eIkD4QgJyZSouqAwgKatMLtdt0Rav6Wg=', + 'NzavOM7wd0QwlokwmM7IigUGnMBl8LCjgluvvqXR+mUsE3OB5oplBLccsSgFmBXmedDBKO451AM/28Rl1iVv92o+/KyInAJDEe469wNRbs/kG3kg+64q9GzdE/Lrkfbw93cr2uKfNejRr8I7G3eGNgTXuW5ZaRKjngTDJh+E5ZF2e4in4KwqfMGjGU5IfK7SbnWSzBJ2vJFZqIeUT5Eb42yG73TpkyeqxbsAOnd6fXMJyu7PSmt2RrX9tokFgU1wVnA+l++fVHiLN+dY0E+45nxYZYPAlRtAhNKDwAvlevi15BdkhkwaIK+IOL1kOT1X35UMT/cF+uxNhIvrDk3hC1jRYj/EV+JYyU6G0DPSPly5nSuVrpbqwGdT3uh+wp4tUh1RbPGADRYmKqvDrI6k0oX4wsqYyV9nbQ/7DGEHGoDBiX+Ale6t12l9qjnYk+Oc5wTsHn8bbvhrGyRf' + ], + [ + 'eL3D4trH1ote8xjdGJPvOyvFTbEvHJUtv4NsKpWKozY=', + 'jt/px65jj4FCATswnm3vAbj9gaFxrs4+', + 'jFgUlhR2uRbs3qFAp3PIOvniYeyAI2zdnUPaY5xnQVlin7kzaynamMwS6yEEKL7mZz21UW/ON8W18hugyhnAJjaZMXn2sXloeXDJIXU8evGJQrdLan2v13DaZhRAB5K+copWYKym7IWXk6i1a1qN8LQfzICn8pqdqutrUslcRxTmU4B8Lz9LS4gDoGJkqOq4uNH2fyYKHqEp0qugzCGpYEHcHuN/egPQVSUj5/UoGsZE9H9HwoBVy/9wGVl0PKYjO85oS7Cas8/X7ZPGyX+CdMmTHeIs74Xi0NJKPwVceKGJ2vi5TGnTVdrbZXiWyeE3uuYpUIPM/SPqmiWwTYye4ZBQoECeZ6nBzrJarba6Pi9dpeW1SogUmJ8K9f2vladSpqsv+YVkAe1Fabwc2iBO1IS3T9GVLHqRkZrUP+z0u3mOq8G4r6nNUtiq2F7v', + '0AaJ+huq2Q6aafGo3lGThXab5qza1CuxLwlDyhrN5Fr6/9fPwVb5olOIE6C4FI7KXy1JdaKqzu0KbGBN6nFRjt4mDuHB8pdpu9hDQglTY7ZXyWwX9JOcCmMWKOEXOIXFU7n8D4v3bUIVZjLYD/H3dm8UJp8SLtS3Z3LDoDIHkYeO6QGXsX7bRs5GQYvECxCiHwBaxpQ6XvykxlzIYKx7LGiESG3WaTwMYFkZAkX4xpanXAfdUdrxMSTl2c7szSB/Kqu0/LoaXSDq39C4tg5RDr5fIM7Y+A8wluX1CjagaEOnXpvFNct6bOTaF2JGdvHwAbFI4jN4Njwsyr+LlJUWCzW6GsToCf/kgrPBYJxTLYd2eaEJXcz7cltC1ohr/nnrpjc1jFzjIeSe2wyaHBXZNxxXqsUKWZT0BHJM56H9o9tQLWcOmtfqnEVb7Mwq7r2i4IlXGZuUrs25AvxeDw==' + ], + [ + 'A23FX4Uorrlrwul61U4HiGBiVDvYREgVuTFGWak/KWs=', + 'xd3mdCZ3f6vsLfOYKP28oLSD0DSmoUML', + 'OC8Czd39i+duK3mSVN1MdOo4GbzF38pk5Cp/Oc8YzQpFHBVsXbw4hbZseZQERkKCr+2IpaEpjEYbND0MepWbA+677WS/3Na4DN1qPHDc/DYKjNuP8K5m4rdYOp+Zaxzw6OVVWzkxS3E/b/CFwPuz6xN44nIHVh/++6Be+DkLeJozHqGIY+10zPKdmo4V3ou9ME+vAyFvP3yK4G8LUP9s8df3LtpItmiGbSh4GNsze1gsTHyrJfMaKEvZ32vfjRnNDSpwSLfAxdDOD/7JptVdWuQszO54+69c4IGVdE4LtSIEpxnlXsZFNuyY82hILtf7qvXqRmiaXEzQ7zQbwLt/sqdBqnEOpGyDHjAmrKvuN0evDSjRE9w+N/cLjsRpDfIlci8ESvNSCp7W3ZcloMxyNEgHLWm8StUkHeck/4GheUsc9o84+gEkG0RSeYK7Lw==', + 'nI07evPc6eQOl2UDb8PWMi2E6vuT9zQa9ZoP73WurwUEw+Oyt2FCxSPVfyX+GuSV88cEwjLOB59E+0pxiCllyPBtLCEZS5iMcyjog0fa7WuETz9Ojv67zBvIuxWujr9i0OHYnvbbV1/J+P0ZOuzvsKmRF0Aw8ePel9d3q4XDbYajKuMiV5SIc+lQDzJeq4D7QbY3UgkbQ42Try0aWwJiKPzKVHpneekBro4Szu6DCPCoh9M9ArlFzqiNiYq+6e+5Wb/JH7udrRdSZjP/WxSUGmhwST2d8nmjT3iGt7gZvJGYr9W//hQZ0yHgvg0DyV64VWErAWPBrvgmxUecZtPCPbPG8wRC4xpCs1Y82IZ7nTGz1gVMvGI/THE1mrjrxj0VD8H+K4yO7mEuklw6SA5kZGbaMXRMOSPkxDR8jo3oQbTA1APoLEJDd3mVUfutIiD+ohZFCJPtoumi/F1prgs=' + ], + [ + 'XOcmJ5wdMrC7X8re/jBeMIKTHo5GIRUzJAiW9K46ERI=', + 'sYLnzVICy2whJoLZyIgU4p6nH2tUEL6w', + 'vBkwWgWGZ63KSSCdq69Zool4evnAvmkbpai+UwgyobM7v4dWmqa4pMHhipLEiRW2H0sfyhlfBpeFeQI9ECH/Y3KT1g9KNLMCtTloO160YS0DA8NChV+5VDjOYbxkrBuKq4IeNLupmlSzevOWjUuSAf7T97+B0J0MMigaSlfBbFrZGPV7jZq7yp/MfnOVwyhWKN1j+6ih/vzZQhxBdSwwPlyC+j7YmXQxd24X5hguisqubqsOw0lFh0Be5wDz+F1DXPEvL7tDDnOwk0F3lJ7N9w68NHKFBIdvH3KXsyyu4pIEhPC72W2QAUL/vfKqOYhF1anvkVR39yJ3aBDd4POf65+0dOMKaYsoR6JAJcimkJN19G4gjIk+23e/XJgR/HEeQqNPOYBwzuvxLePhKW0BS02KFABseKMPMdhZOihD+3yrkvE2Z5IHU2AOeYTocok=', + 'RhnVzdGndcz1Cm1fIST+NKTFPtwYjN0yem1j6KkyupAONYwOq8JsDNF3/fzq8ysH/oyHKCGLXQF9o0n+pEZNBnjeBaxcKZ9+FdDUJf/81FG3w/agBNXh1hixDhC/zfWbvbq23Wge/O/conxqSNjHkqSGgRI8km42+GVy99tDFqOuSx05DHV2JeJtIfwMJl25wnwtbD7/1qPtNcYAuPK5SWZQlrtJyXmJABDbJt3+sWGIzrwimxWXGSspesuPrfO5G52Erx9KnNlXjkBPuHf/MrNu/r3f5YwS6UQGPYLz4Lrf2aQzmuuzu7TPwwfwGfwLDOwhVPtz24sVoArRxvHoGu3EnjWhrIuX62Lj+ILokOnwaEEJLNWIpv32n4p+w/l5gtWVI4G3z4YvAkRyIK6aOnp8Vj0UkzPvl4g3RpkaP+vf+fnTf08gtD86HOK539I/ssu0SXyBHxip8P+WQd3t' + ], + [ + 'tzHqijowREV81G/7iTPKUfFP4PkU7GOAJ2hJ1bVlxIo=', + '9XaZDGMvCTIixUCCakyI+KhJnSMoTNkg', + 'K+wTe+HryS0mEWbW7NMMvoAhV/tkTTOKaUHLkohu5PMXaEVCbXBG5UvU7k7t05/jwHM9WIj4EKzKXJ92/P0EcLSlB1FQOpcCKAn51gdnvvS9m6H/So+rQ54GPdG7QuXPXaqnhivSxsGJmGWNvTLT4wsj9dvk6W2O3mVGxvee83qtHQamZdtQWByTg2NR7xZZp/2e6Dn5PA5/J0Q3t+Hr27nTT7NdqwOTfb995ok9/Vf/zJnzEfYyGN6sr2qPuwB/I1cZjk+uDrCrP5Zr1hyjHAehHzTtdmARsTc0l3Pa5RX1Ozz4W7gV0ufLyFcVYZUxfy/S5J6SBg+8sfvHuR3HYJWwSLeUaghPPzJ0/4tIb+wt3MAJMhcHzKTIfHtkc047Z0vbW2RQ5Vj6zufFwGLpm7MzQq30nPvtjSFYzLAEC7kRdTUuHoLFN7LWwzQ2DzJU', + 'cJQZpLH172dpnPebrhDm72eOfaIJLauau9HqvcgdrVqtstIwvSiUQ6bIj28kRsCP+fkxI/TTS0iCQY2jzM9Cr8QalHipp8dGsvj6Xx0buGS7vgQ9qwSG2jWkEV3WaWU8/9kMx21pF39BnWKNYEy5ruquHFtbFfRBMKuy/bASmTGzg++LVqr86ARzy6a4XYsOaWj2wxIsUQGpAGlqnbTVUtPK+SutlG3LXX5GPeRVVrJf0M4HDDiAb1OK4ivRgt1jklRP9Sy/spghYvLE0bgj+o+LCwRyBAt04j2UXzcKCcAqyltG8AkI/b8Yn19lodiJuubnwMaBI8N04GxzX7GnInrrhJnovGBgtHrlOn6+8FCI12hZH94Yifo+N4+CExGS661GLNQFMfL3ThnT/i0dtnHFANbaqBzDBGcaq8SNPg0+s+xjrrg71wLUdqquAOWMubSWgQI+8XM4IPtg0uAjxw==' + ], + [ + 'Grq9RsCXvbz7AUE1tjfMPAhtH5MZHMWLd0tUEd6SAtg=', + 'UI934MSBcg4iYceaX6sh7uFmjYMNFgz6', + 'PF+uTtXfSyW6byjRMJ8ngwHEgwI01XEjOSXJoIUDLccAmRQ2O8Zal6pX9s+JyPrK4ssh2vhs4mN+agvxxK794srJcdGnMNZBhyhC+XTKy4sQTwPXcitztCiuTrEy+MZMXo+RB3g+vN/j9lpACNGHoFqVvVDs70T5vAXDGpMgZSNqWvba6gw6um76RDOqQY+MlKZGQx02IzPJx2oeCBH7JeTM4wnlpfrrKuXDPfoS1EYFpcubbu9b0B3zd7eaILss3W1rWh0gp4DIfXpbnCcYqhs5MSxSIwuYYA4vtXbe5A3E7CnGufbM7uFJo4dv48XefOONe4SCEAV9GGQFQ5iSiYzxugHt0jAI9eXv9zWo/Xglzu2Raqilfr4aFwlGxkV96gwjZqBu8m8q27QGEG6th4RnjDD7KEXkkklMX5b8YkZSv/6DNLT9N0q5UNANFPCzfA==', + '4Cnssj4mF/J2WB4Litm1hWlBWpoXrZsQoSWRJfg4Tcvg0yaoaM1XMzhlWY4d8WJNu+lk/LVs183kwEuYbYHMLsFCbG+Qv/l4ROvvb0ZobKUCMUmssC5yrYjrkm1xMQbe+Qv+vGlpJwUffr4PF8X23QpUjEokyoekHmMNvn78qgTJySVeEbL1x1NGgFoULu1ZW8CEBK5FZk88sYVgpSScp8XWmFvfjB2xdyjaGTyUK5W+iv2zBVWHQlWTQverezOHigpJi1IoSg7r7CRgyFyHnnu267uE/wUccMF/ppQe31HRWNYng6nO0gldSg64MTFZLwmnE5vxPjn3kZzfAyJlRF79Hwpw2YEcg4qQHw6N43IS1O0T3/EJIBFaXF8OCinyy3W5DiXhjcAXT4QLVYUwoIdr5NzCGsJ8j1wrpTGhyfM5rEVIqurVAKDGcNXLv0jUJ3/UuZEGQ6zsIJmkeUQyNXk=' + ], + [ + 'YTwKnX7KNwvwZYsOw0LdnRDVOG8MpLH4mci7bLGgdSs=', + 'xmnBw3YqAtwxxQZX6vtz/cXhc1aZcLWh', + 'eBgDvUcBTU12KFAnM5G92k2vEbbsvu0J4prBt1RizGOERsBNaZKV6Dg2mBqrWbMfdnlKA0MNn0icTwfSbQs+X5jfW4SV8PIWt+WJllDxDVnhfPWaq0ygV0pZVaI5oaE1DwVsdtP0F9QO3w4btRttkJpYSXS/lea1hjZn6HVSUfI3h4k7cDfhKl0fQLmg3FKSsAaw8/nzE1s2mU5JeMJsX/+e8NI5rRD7ee0ozeW9RdXQFxuQyhPJAXJyPyUmgA530Z1GMP/xrARw6uOhmOBlgFV9JCwogBJ6c2sG4FpOtbumgQK60681ZGvYa9MN15FIOdy3Zkc5pRhXGKoK/Uft+TSRK3H5kFNdUML4WnCbAZuKhoTB9CqbPe3o1hbYZYAM9aG8nNHxLgL2kPdacAplVI/aNT14RHXqX46MLkwBoOF/ls+qGWc+s8b2jAFqeKA4qxs=', + 'dJz8kD8xBmlFybdACQpzpy17RbTCLJ5IGS6bv2nD9dRz8UqLlBpuJkr4/VVfxhyugHXW/Mf8bl6VW9TZtF0li7NGLvZfLgt7FCyOHekr/S26aa8n2jPfxJju9PS2QhPObMybYQ536cMFlUUwFFi62ontiQXtNlt0AZa3VuzAvlZnp5rZARcQZ9Mvt2UJJ4lL8f5pVH8myAx9wW6UYLWv6q0XpCZY2LCbdEukXbLpDlcjQbejv2eboFTncdfmtHYC4+czhbLHFRHkY+HxzvU4CyB35nT+7/F6lrf//d1Q51m8Q6zg/MM5ndOLr7Ogdm/Me5wG3RSCJDNXHYizkTjSNa/CYpHJwJbaIwmr9rcn692Rszts8XRrqmGRcQHl8EqeIHIv8xq/+kL3n/P2jFEKYVetydXpWRWy5cYoGjsd1HrKHS1iiEEJG6g0RwsdE7+YuB4fD4F6sPxT5/v0yWGLoxyx' + ], + [ + 'efzvBh4Egm2kjmt9S3I1ve+rDqyv8ETb5jWguwe1hzg=', + '0FlDU2YnOLcGwc4BDZx5n4cVmllLVXMy', + 'mHAQdq38nA8/Buyg915+K9lWyNJp51Brr9W/VKaPy/ilhqH3bc6TYRKgpShDamKZBgOlDew0zk+WvQASLpZqhWUDtWDK99ZqsIepTe1r8/I630eT34I58h9SBHJ9QqAvILgzDw7KuCow9GNw+1xARS76MeFeTcxWDV0jbAQyf4pF5pCJZIgT2uN7J5vBDP9mHh+tZRElUFZSiObpajDHaIzohgO54zIerD/L0fqfnsiREjk6wluQ+GPO0vUGNQOGt0ECbQPuJ03ayTYwdZkfYal0K4m+b7JQfSkeZjqQAeCYcOWOCbInOLodrUaOlhPQzG+gutBL2tQyDg2DTcRNNZKmQFM4d1ssxrU9WbxQhqABm7R4LrPnEHCSWAuH9oUnuPqRAy1kfkgDCh/tLx8e0/feiwCxOl8C5gw2cc5nCJxOmuWP1S7Uq4Y0Gt3ZEQP8absf', + '/0zjQSSFFRpG1bnYuks4ruoDTInZ/l8N8bV6Dy3N+bj1slpwjoI+xiLHVqu2gNuMSKJ30kpRTi/spezkPKjtJHe519CbHa3QzDltf76kSnvNBCc5qk6YvqYFd9D1QvzvqB/WbJZplz+V9OVGczmQvNsNfLDJzVVYeP9gBPULfZaQ9swU8tTZmvngbpirts9YU35e3FJIbKfmhK+7KpIH0RKboS7j100wx4o/1meQZCvTBP9zDuVyyqEwKRzQnwS1hsaoKdYUW8n6lIkIFYJNPjpNrftiXyx33dfHzxLmANbF2BSejK08nUoVaZLh8FVkqEYF7e1UVhXH3wa6+YSiYZ6nvEjyNzNph7Dtp4+IMWW39YjV7U5dspcOQcnnWvtqraXHcY9KbdWb8LQ48qhqtIhV8u/PS7GdEU+xeNbFDrR+CpFvVF+31hQPGSmtLpf18awe1J8dHaToeYKmj3RqIH8n3g==' + ], + [ + 'D3FvgN56ZKneStpgvS+S06XPaPEtjiN3Sujpr5DS5+A=', + 'm/n35vNjhdFrF57vuEU+DEcbprNiQRch', + 'OYsUb84Dzwv+I0XK1SVp15Lg47OEJQtLyExiskLu8rXxcif4478a0NwM+O4qNWy2O2JIZ1zHSd71w+JfV1m+1ephRppPb6mTGJSibAvNB2CIPz/HFy8Abmt/ebokdwP8gXF/jcDAZtL/WlMppJBf8Rh1vmrOglS8j8867CemDvRXrQ65mY+6CfKRVVoPG25vAa7aD7workIxz9oeT+Iesjeg0j7TSZsoPiuGqaq96LUIUewnW8MTr+TtWxFINvVKFcIOwgIFJPVVysr4ldjuEcldHvgha41K2SHKMiRr+kECD5lNNrIqlPVZSrQHsIlgaRGIDrCzMcpLUpiyI+WIF+1eSMCaVGfgANWUceAoGyJfbTf8xDnSPyHEMXet7JB4Peiri/2AQbxcqZ5K1UiWJqo2mqU49ZJZavm5ETI0/AmBimtMr1IojBXu6sgWG1WMJzGWSg==', + 'O6OpfeLaYlVmLXNLUOUQoUeH7yXRoBZUf+2mL1NaXPhbD5kLrq8f/HCebnP2O4wK3zfGQivrWUqoBp/byJ+YZ53JEHFxvnEsLCXwdNA8XJAj3Kbl7F7f3QyuOwwE4vrBZkyCGa2GU23PySU2mkf5FXIZC+4KIvFUp/zbwZKtM4i6h+j9PX+1BFbaRnZvV5blL1tbmhzsRkLUo0PX6g74tM/m1jtqXa9AJbo4cJRLc8SfTEAyOsI7RkqMZRFSCTU+9Nymyv8vyO6iKOnXGmzLMCPtDK8BLwAMmbmK3vr8m+77zut9k0meyCRRtGdpo2Qo7ZzihcIpI6h3qAxywaEcaeyxEJQPg5HPVc8US2reHFpw3H8JFDOQoBzcEh0YMqCU0IRqgFie+UkBM8L5E1D/s6POaUS011y6WgeKiqJXkAq9NXiCOzvHsxlwlVLxabKWo2xyBNE7q2TlF+VTwTA2Wd9tv7Y=' + ], + [ + '5OBXrHD+SR2WeEwfFTTHr5obnU/HdZ/1NjH3AyRrETc=', + 'FLxkD5gpi3tVgtsgX8vkw21AdofytXKy', + 'eoIPm21r1abcp9sVbOqTZFKS7vZUYzp5+vq8GIpBRLorwXcI4CWhFsJ5tZ5Svq+RUqsY5ZyQxtrGhU7lhL60MwhuLQJLURqEgtkLbuzClkluqWNj38dz51qg8Fri4kRzqDQE5IrlUrWIXUb7w8j9QkHJNS1wfpjDVc4iHTE6ARNHGSYu7NWERx6byxzgbs+Lp3YpIewSZ6ipdPlrFqDpuFuOpXMQ5yE1F2U+uQkD5Y34oG4iYi2JAToMkTSZQXAjYPRhvt2bBrk/i099KABc268VRcFpCLlzw5s7w98IxpYW9aY/MtuA0Imaop+uSZE0BGxRjiRXHU97ff0l0cdkmGlYFSjEDkDs7DxYdktvnbICQ1VFa4j2AGvi8ZXYQEbsO9KYoBUcyoBEfxprmww9ybX+PKY6xozIt1st2eScctwfVABic5l5iDKZxGtuO9yDbpHTO38=', + '4+caIn5Xh99vgFPImaOFBgDvXuoSxVaDFAyZdI74TiaxAgV49T2ENNCBWWCEKxYfnCV89QUYU08c9PARaBALM8/2tQF/Ntb7yUhCsiDGQUDa9d610ZZGQBbOaywJv0dh0GRkIWfG2dkIjweCxtf46Y8mFBFZPVs/ciMRouO5UDUAZ26SdEY0RlWM2fmuV2owUmEAHeRQKny3BokdFY9os2zyCL+9RXwoAz9bcdDHzo2uXNiM70dtVrgx/NoKktijDB1vhAkFmrTQr4mpVnDeF7prXIOmBMUnuaXnEptTbjO2FDHw9PMKHRj0oV3Iv3Q783ise2gyYHbC2W4cAkjvQusyIKJZwgTPMPajAoxUwHTMmrOSrbeTH5ExCloNLreS3hcgmZI6GGXNSlYcWtXXifqSrd0oSSbK1ulUCwvYwSG2QOLSXdruZFxFnlvwXmOVDovbzDGLvc/AE/+OggGNd3v7ctYP' + ], + [ + 'EaCP7eGFhWwPS4op95j+e4A+aC4Lwg7w6xCLnEEXrpA=', + 'EzB1RhxeBy+am1tSX8dIqhUqp1WrphDh', + 'MpNOkWrfnfpxHk1QdOh5khEparXxiC6LKkVHlfewacMc3jgSmkmFM8rX0JVFfPKAl8dEwSJpsPlpLvLwuwc3A5UNr8Pg2XkZfDAI/fcO4ZDOwQTPrCd+Tf1Uc3Uau5oTLw2qHgxdoJW+12AYlTPnrxk5LH+RMNmP1JrdUFwoxvlwuCtYLKW4LlR6f5tOqErxwNTIdUj3qxstfPl+1xeOEjFTobQrJGIq8dk2YYGhCnBH9Qy9Lh4atWx7XZoQb61RB1yWviQrErlAMHWhWdED5JzdtLFbnQ6MVC7+B8VR843Slutz6g8J/YhtvTi+7boX4bKYEElawu82CJ7OaJ7SoI+PdcVPr0TSYhywMLp0VW3mtVHFTARCMVQ/edCSClYMgsy0GYKeyn9WoAV9k92eXMdUzF9MRYC8waM73gp4+ea5yDVM5DOMM+2k1/xbCiJPfA8T3YDX', + 'O/CY5lEv9J0WWnccnohfh2duBE9STcnaNqA3frWkmceSbqevm4ppHipIP8yM04pQ6PIdtJR+k/NtUVIae8Aj6YGJikQfSiJD/X+RGVBF+0lGwDseKyVyHYIfTK+Qsz7rDfceXQYQ0T5sU4xwMG9e525PrpUGYYQOKOt/wtRD9MOc360PAolqVEQEV6P3IcergEJgy220Zi10Ub/p4uPKP8f85juR4JtJnY8o9g6x4XVR0ZAk+5NrzpxlWL0vMFa78iHYPSI9h9+HvO+DSie52iiI2ePMubjyq1JnwcfnTHu0AeaYQ4ma7mlTwZ9Q9hsYhmexZpXi1uZ+ata4KxOTa1mLMk9DvV7luF1WALbg5NkQB6ln/SdWHiA5p35xfYw6eXv+MPTLdVsYWtfe6TG+TX/CUk2p5cwfeIK8AgT/AHE3nZGYHns/ChSZ58utyEbpEjFU5kDM0remI877aJ1P8GZw+wJRnw==' + ], + [ + 'j/OqrsnquyEdK14zQeOdXiy4YCuMWqTcs7ePCKxhcR8=', + 't82NeBJDbIhLzjoRrGbWHRk5CEOhupNi', + 'p6TiYvdL9efxTtvPPpedQUNbhSv1z+sSOAZ6zqnMp6lFBcqixICzU0PsfzA+xQNCBkbY9ukZflkIoMqocPktMrOek3669SFAosfC/YjiAlaaDV6ROUYFzxql7M8PPObc6CqPfNFn5C412g4oAYQ5g/SULl/MWm38ClMAKRZvO/9R7Bw9jB9v+b5AeUZW2Y3m/blIXmuvgp8pZZNDgTxJeWc65Obx7enEEezwvAhmEYu5ITZso8Ququ5zpZZVaX6mVvHyzOWn19jUdqbRMz54YOaUtiz1tzRrmeJBfVYPXi0qh4jBwIqM1w9PSPHrKqkhKhiTX3j5Iq41vmIEpW917X1hHSqEzMV42IhLKOHvcnh+PG4O1QzVoijQAKPuTVnsMWK5El77IeWAej58xQGCUrJTskApykxEFxcanXW/qLqjWkERdbsLSal43ijDuCg9zKeR5pg2vA==', + 'bakodemrNv5e6UYaV3/rk/Q/izD364VtNY4JDskAbCeOoOodHdTdH0nDw9xwmiP51iNPW/YbpAF73SD6osi9TIVQOhy7zfO40sjzO3hipImSR+LpmIYQ4iRlaxIOPDc6LjJuhs6KjbaoBkD/vGZAlz0gIqhFoJ+VZSDcZC7FjrBB+rDT9vreiGGxCn0H02pPFV+u5/sQvkP+yRX2skwQeQpXg9ev7zMdy+sbYGDQs/Ow2t394IFSAC0atlRgbUIwFqVDLYd8bvEz/1E83sygCAe0W3n+kCWELVPY5u8Cf8DHdQrowUBHPsam9S6fsiFjFIeYxMRTuwFrlDkEMsT250efNf7ujx8iz1sfdA1mOVn5D2TqcTZTkxkBv6M4Qx3kWCNNMYqwSHBGMwZ+EAnWPiZN5iJcVKOGLZshcZKcfw80te0TvuhoZWsH63o6JcVc3Q5PnTsj2nOnAXv69Qj1UrTT2ftIbnw=' + ], + [ + '9aWO+ldV5EOf9wgM387nGv0p5dInrzVYIs5GdmvHRHo=', + 'JqV7gal4iTW99hCMIwa9wi6TMq4nN6to', + 'RpjqJJDEiLEpwV8yfYZpQVMrPOH+Oi0I4WTOiC2HI6yrt3gqIu088RI6OKC5is3H17JCi5WrwIEocKKqGbsMOlpvT2L+Pk9mFtqrGYImVqjHzpIM4Ec8uFtquEvAlySCGmSrRHKieBE6GiYL3Sq31de0+rKfo00Rzo4wqEnolDGTXECo8XezM/QAYB2GoQxcJpsGXgrwt2k2aUT27CnkNC/Mq/zn4tj/oI9yMD9vB3v9mE+GLufGIqn9/OEocCul9fOHJj2iNY3S/2Qtwm9UyQn+J2JuPTWSDC0UCrOmVsbNFCRM/bwgTsJ7enkiuIpVw3yYodUYc4psDL2qYcxLefdidclJyOZJibwNoGjg/Naz6uLbreSLUmVglPm1XT79ffgsvPle3vmIZuplbWYkb+cvbHOmBv5Jn3+nKPZ1ovKPItUbCl53TBgoHtqc4I5FdP/9UW4rg28=', + 'ky3nyR50JyzYutrModVM0Ja67qg6wua++P/XAnIqQ9NcTeSKoCItZ76jt91UrB+kESgoj2t/lFcFEugMpxMZPtm6N5eEqD9u4BfFwHrWa0vAgYfYotL5CiIfSofD0dwrqAoXSRU1iBJ3N1rJRb5mLLowsRUMUB+S2IS/cSnevWqYtREonlvDhx7iO9/DQ/GCQ9fSO8ZcQZVc75AQsBaJLHwzGjjjY3GcvXB+Ee9fEvzqdaqcVh9JfcScx/J1nXAC1IRtUl7tKWFQWfqhL8ZT1MwlDAokB+xnKbA1OHBijaPHeLHriafrnf9d9r5VXaO8FhICf9WHYmnrbBcZiF/Q130G+01kUFDQLoSQGD85KPw1ghSu2Lz/7PVGOvRvVp3HSuNvDebXiqa5YFwGlerAa0bAUZPpBSQ2q4cJyl9ssDUAy/3LNIz9vlKsT4j0yUP4yblh9YrYN02i1veD/iMlaw9DrfHl7rz7' + ], + [ + 'b4wzzv7T9M1DeH1fBOcoBS6bBirvbb4HG0b7oUx7TEM=', + 'NkpnxjkZkWZgC3F9nWrLAhv4NpGCrN+P', + 'vb3fJgYBFOTYpoWnt6hA+uHiMcBYhSfZhC/ielxc9/M66m0u+JBHq7pSBCcgZVBcMV+JG4Sw4ik+T+FA9cGY7+c/2dvxVrXoeXXQgHkPqLMU6EYzJzCUzJXkDhl5+WbZvFSsgSYB0dAd5FzE1BDA6u6C/WgUAob+x1Z7DS7x2SWz1DB+U/dOOMo/zmpk6Q9dfLHiYneSxAi77U+/rGsCfIsvRsLd+AsfBnWAPx/Fu2HBI9DNH/VpuQuK+/PpPLa8BlAHtwtGcKLd6POkcf5sCOfgk+r9s74fRfbPt7dF2hT3Sqz2H10WEvdX6IVc8+/e1kxANFgSmQ+RCG+7JkhFqkqvVfhfq8AmxD/fXZpQvuk4rIbtnEclUO3hhB5hgwarbDNErXcNdDcrHG1vd43lzvGsHYLqSsoGQDtA3q0afBzSpAJpX1Sui4roaeGV4tRrawThpjDeHul0', + 'LMibKPsvSytwoE5xKly7B0Hj7g93m89isrhTSGTNDzkBEZz3X16G0hxcQybsp49yofOZZy24OkrJHixpGRKvFNv+lgRD7AtAQyzB5oIcQOrZbJiRTZcwDGN4RN/mCHFQnC9OASoCHrx9q4QcXsZUm38A/kyOmkzIgi5mWtHZjvPHwdFiVL5nLRB7HmSWUByAW95TEzTurmuGQ0VdLxqt2CH3WO/NVPy9AjFryMh9/vPpvrCU9UrQ9hQkLFEUFUKfxW8dGm1vblhjqBM+FkAq+eCt4wj3jbPX1MUxHzfTjnOE7wEAcBDjZmdAOoTDahzdLSxNpff7VUitpddRtfEeTxZr0KFDWxtxFOowO3+VWhh6RhD5su6zhJO1CEUBD/bMx0iDWqsBHNm2KWQRiTrxSMO+yaOMinoIMqv4mqGX789web7CwHKR5JKunbDSz3V5R6nACbhnzHwhgPHwYQbpjN83aNPwd2iCRQ==' + ], + [ + 'aA+aYCaKSyt8NiAG+Bk5nvhoiat9jMdq/0dSpl5jdXs=', + 'JVtpO5m+CrpZTu1WxQmhCaMiQ4QiELtM', + 'sNiAJxzXlYKeFfkki2H2gI8oceyhT731uuQD0VSxLHgUCVHUtmzW3VoptzDHKpOoHUhr1bu3VldITLFmcQdsGZifiIHQFnu/l/sMnl67Mba8tIZu5qBnxqeMykbNADqpdv7oWjzYQpzMJt3DJDXAA4IZugRbfEZFSEeQ/FkUM9mSH/nmloNBSoihw2cQTpF3izX9nUgkE8bX1t7DZmxMvMDq3oF+0EShkn5UNnUCmENWUfC/jLR+OFfuxsgfWtDT+URU16Ihs6xZ2AnWW8SJ9Fn6JpJEFlHw+vPA9GlSmpc3gQ96JsjfJZNez7+3RD2vFrVRvfMY38rP9vhZ/jMbELrQWTmK61ayfdYDvcWt+QqsfAGMb1vMZdGSYVTyD/Uu75WASssaHiGd8FFEyoqHpfReJxem6b7VUmrdb7u8nQ1u93kez/6AwQXp5TazUFsVw4v0v+PUFgtNLw==', + 'EpS5sZkHAdmyeKcpMgjVZfcf7OORRaRMyfc5oNlhOIglMmu1Foa8b24tCOntxN6m0Lle0fq/rOsja6Jpk9xNZ56xgVuCC36maxmpO9JhKottMiuEhD93LAIN/zT1yNmZM/lEvV5qANU00lUjj7FWpcTnepsfo9IXbJXpQFn3EBxwlBRhKiLbXAQPM5jBTMAY+LA25n1qAu0s2I098UVRA1wSUQeqSqzuRofnOuUI5YXE/TJGyN9JWMgroft2cUgSKYoKdwKs4qewm5HAX34SeBsovewb7jv5uhmZ5DeSM8fh/Xkc2lZj1ttUSJCx8Hnk5f04IcdGsEFzeAUVKbN5kNgNWD9/vbRhZoimOCZKodJm7O48imxy2NX0DBPmgCUosROkeqyTRB0CggEq99cjBHHNNQmFsnsXtFLL8wtioJ55KeoEcgQiOEN+iq5D/L5aMQO4aKSsk3x2cZbTTSi9jo3N2dpHZgulSjk=' + ], + [ + 'E4yApbje54SDMYHU5yTWRcVc7mAbbXGRapPy5piQY0I=', + 'LEOGGAUHEVIUeAE4aZD61xlFJrFqGa23', + '7kgVW6dQwZcUW4lVyAUpgc5MV69/cW2oPqp/wNMjk7X+vsisO6Te5TgHy0/79xeSjCIJgWMeNOjeZrQVLJLpchRC6rP9O3waGLs+dIFS1gesUDKim8CFaOKKp3nE38tzLn8+rg4UNlRqrDOGopvKUjF+FfUogM4j9vXa1Mm/IirivfLT4AeoaohFnEXOQYmHPc3Axy66uFrsOKxPAuxz9O1aonpyFF86LnbixzH5+PdZ5bCRpymdzcU5mOzerW6FF8ILi/MUCtw6uxchvLRRWhDd9NOeSVps8oo15UV43JXUWmnSymbuynWusC3BrXw8LAFSa0HwVOEyDwS6BzTiuAsHBD19RV9ZXirBBm/7hs0v+OHpsugOG9ZOpv1gZTFIx4CLbOeVwM8zqGLjOTIYw9e6WCnTnbkDaBlukTnRDBVAD7Tr8c7Wir6+BUZ2t8O9oEzLIilAFuUnTgc=', + 'DXP54YiQszWoczjNB5v99D6Z+vk9+MU6MXK2rscU23o416OtgXdnC61cu3H6dO5R5WsziZagObCKVIhCWh0HZ/tFDmQ8CIlc9/0tFFmhBceFipS6dRz02WnuwT7MiCRE9GNyziMMnl9ORS3n9ZqrrLWINPsYvRl8j1EG3i1SK0zRfKwrHZp/icIXVTXkoMU1JUdd/oIfugMJSmcYDwb2Hkmu24xyrTKeKT87ijZVhTw9sUUrSSg2rAQqFsauELl7geqqeEvvcIa5oRTKwkVzQBXtXysRxfO2Imb7GZ1xSF4FNZNyq32JZ5E2zapxmRptPfWwLNuE29dDeEl7HfUsW4l/odVgWXlDkEPZLT2M3AMaKSiSuOw42UYkbJbHyXp3erGlaOY/lIBKDK7oER0fGrzkxUDFUpCaT/gcE3/sPAFSFuCWbYMEHgi5GbfgoBtY230HINI8l2Io2OpoERTdi3ez8ECUWDpBXF9w' + ], + [ + 'Az3XILFThyjpf/OOHjyTOdx9ftJnM1H6sX2wHy0WVqc=', + 'm6AMbdmz1ekPXA2ywNgjW/hTMGZeLlbk', + 'quDs9GDFufI2b8T2FTWbOtmXmKyPAmgI1ciz/C2c3Jksv/ZgEhRNfVyNTHHuRCD0p/osPZQQQ5b+FE0PUyqajz8A8CCoCxsWfSGRxy/KZOUcsGap6OOSLgabNhU/33foHQWTIOnFwbgSfU46xTDqkdj3oLD5X/o9dWwwoL7+PbM8hhwNi9B9wT7X5FUZ6U5F7CE6GXzknPMSNAHY7sQ4yYujt4VDaEjrzRHLiLRvyXiZfUTJC2u0EQAmXCZQoomQrumVBJ4ck+4JjQ6Vfmqbuwshisf/JMh8Y1pZOkVA+lJ6C4VLixa9/VwQ++raooc1SLRc5WaCiv41vVVekbkBiT6TFwvsN/0EBVjK85fpPDwThiyP6QP/+sGCOEuHGsHHhHlKCHpJe59X0qHWSE5MylyP1G56nav+zWjvq7ZK9KsSOxEp2ROWG0WstBLav1elzFbsNAOi29ihDQR1', + 'RcJGLiUaXF8oE2miaxlnnY528abn1tbGJANyd2Nx+gnP8r5mZTWplf4ld7cqbuZRYJk133U/1cHjdOcI4NSlLmz4og8KNDZMSZkgMwiMjr8M1uo+zwk9LCAw3/mR1Ho05UQDnCyS8jLBdNEhe1LI0JmgZbTEJ80toWLA9IuiownkzgOTWmG6du2SXIWn3mbmakckQn7EL0E4deyrJsz3xUNDk4TNXDRtQcdpkv9/TBCTlAyld0lkMYwvhh0ckD45qgjl7CCFbL5X18xV0q4t+dD+40p2cYVOG0Rscy+UBdJ+CB+EPhrGEClHP6Np50MgPOLHUwb/RY64ur1FlI0tbBib9jKHt6nV9MPUalxunrqIU1AuTEsW2Y6YYXjDklZqAVQ8y/Ygknx1G713HbWPmAr0oDDHC7Y05YdGY/hf0YNdbuGeUuNmEPgUYqo26vuXwEeVEuE22LmKuEhViv1AY85dAN/l/GGS6kf8ZA==' + ], + [ + '7Y3e0u+f1a4CnMHsJ54b2GxXwnjabpj09s15SnuG9mo=', + 'fGqUzY3cFUx9gc1jqSWuPT9n3zHqLExE', + 'Db9/FPcLMcZ8yoHJONkSniWWIJ8MkkTuigWPNZBzkm2zOSOa+aQPI1CIHZD+7Ys7Wd8BXu0G9GZfKBg5LjI8x0+zlglrMezPeH9U+BwNRAVSSQBkSF1m7Y0MCGCvcdPqwbtS7RUZgspCFd0JQ22l2KN7nS84WTbbwDmG/xg5rxEddjmp/q2oTeSX7M2tdnoNfGgDdoZHzSs1rH4LtPqzY+fxqyaFU7Yu+RZY1Fp7XOs77rgr7bjWNR46MiKNlQOKE8Sbuzxqghj/0YNgzTGHo2RRlIEwwuaResLcOLw29rbZrHhq/+DpICaxvd8MWTtNm4PuENI06Z1DWBh55cG4iogtZNb+uT7fiOzi1nFRiWAM+ODiOwcsNKv9Bqk3REx4ToGSciRIKRUk7ODAkiYK8HitBt/W0tNU4tIr+IgEbIvhNTXRd5Bri7n4cd87bgRs/FioqjywFI0IJsVdYA==', + '450860b4s2u1mj1GX7rSOi2QcT7p9jbCHvxB0qpxOf+Hi+HHA61CI2LzhidVPOGbk5bpZsj6fT4sH4odd0KPYq0D0KaVj9nfHLmreZJO3JKg+Z4abo5G5qk736lJf5gFYUn8gOFO/P2Xq1ajmYw12g+KPK6svq7q0re3nDu8hzsLfLHpIAJS+ddZyUDNyybqwjr7xsuTLLo4A+zOC8esSSA2pnwFrMbEcIjTUDjryONpFAymcru6gaQhk4rZzjwEV22a7bOZAWbP7BsLfnASArc5i9hi5jz+TSqH+3TC/ZfGkAh105f/kOMa2zaU6XWcBXjamar4sm0HntEbW2jw4lvlBcv6Zk6lXerXPJQwwVPfo1JTm0AoKu20bAwKOO/M5vc5LveXnmD+Enb8scmPCWSO7efSXtvZhZVodgGAY5fWVIcegTkJI0gTgYKsOjK0fLWdU1N74jbgEWFaqCflz7jrxymRPaS/kaehlnI=' + ], + [ + 'TlGq9lS2B13GAMklCurXVfiEOxLEsm5++N9yTpYA4HM=', + 'MI0QhYnoyf71uHLsxP0JuE98SWMceghi', + 'QnALEjjrlcl8NLo2iYLV3CJKZ03M3OyVc/+w6f2vVfHMiWf2ZAbM9atFICwvvkZTdRzC2IS8ZAWGmO0gQ8cGcfqwwLBrZC4tFO5PuYS3er7otcPulgvLvn0/0iEXldHahKrXPbaBX0ALe2ykzGCzyMdg3wa6jAUQv5f8jqy1eQ7Ak1rf9s0aEqmyJe3sl6EdmfCcnbTezqbjseJZ+gtzWxmS/Hq0KU1dseKbhtSTAGapnlM2/Hl8P098CFpwpqGRKKanPhB89V/l7h9v8sXjvgZQ7nWW6wCIhgU8+o+rTFNsHGcBYYzq/vHd2ureZXGXy7hlgETi6S3AfDvhuNi8Q2oa7z3bESXNs4Gg2JFc7WVqzj5K7ReTRRqnyhRRZ5K+OLJ0Ojn2QLp5zAtcYqy8TEM2Mk5NufZG3OiJYMNYFsuOgJhQYOyZjCEaReVrXrhkDpB4fv+9oLOkjERTRkY=', + 'rEFQnG8o3f/3xliS249vocdaHRdmZhdbYr9jEKaJ8fJopIKbPvsNs7e2sBk3POeywxHgjZg4AHsnlZZe/FAdv4wIJedCCVM0k/BBWT0H9VBIdMr0DdHM2UzSzpL4QszAWdLeIWQlThlyY+8ViComoR6MZkVKEcaHT9lsIyUgfCJ/BtHIh/QraMhmxxcSQImu5Fp1nHX786LZtmxsQtUr8wcAcwuW8i6L26h6gGZXooVWi8zucgQhyRAU1pXJqOm+7GxnHvnU6suVjcdUgze06tFvIO0ZstGYoRLGqbXAdKlUomT5AN/83soqUdK7Ur+LcccBDNTH5F6Mk7OMw6Tzuy8EL2MA5upubn+iTwSQmuPEZs3BBvfhpUOrleZNH363Ue8t+8Fyow59XKQjTkT9p1JTY+uf0XowLY5ENSMhZPNEE/hGdWIcwlN2kDSeIMrv9q02rj5Y16o4ozjvukyk2may2IOVYdaiST/s0EPM' + ], + [ + 'WHkGPW1suSM0hkKzDvdydjnil7BAc1ZuW1FJzI6Glz4=', + '/ja7kcg/NDlXkX0td9PF3yaTo0xmJOkt', + 'BtM2hCO4r2PgePceg6VLvZxYW4PbNRdTq35Q1Kzrz5rp0L5Av20XY0a1ZGMqgwkYVRIezvmGf0X3cdcJszt8CJjNZqc9L5ilJUJkMGUYsSkwTm+7MbBWnTj8WK9gSkx1uWIQiCrdJTQfzMZML005oolkYqXw3AT166H1XfsyCAB62Z+vVXKPDbdUF79DFjJAXn43q2p+X+Tr/BU1/s7cGtoT2ehjoxYG7AKW2KFMeL+s+d1mW1GHAUBL03QXSMjUbw7Rfd6VEFM2YVgfnPLx7e6+q3p99grrVPt4Eu9a+AdECFuMXBEtsuSL8pVj0WR1Vfpc2mwkDPr8joIMmArdvRUaeXHGZ80XyPrAwDCBsKWnnfFOsRTzaHhRy2km+KV1P25CHQZaQl4AdV4uUclZ5l11EwGqDX+c5ssnpacZRBx6ipr1S9B8jN1u7xgeC+ur2MMGg6W0RVa1ZKn3yHuB', + 'zrbJlqZCPuMczBBmPaAOlUE0ZasrX2AzRmgzr4vwaZZVgdfNwfgzWwEmWYhktOH5FKpTympZhLrsITeUAEmqnBKejHR0HKeXqWfW1HRZ0NeK86Bg9FyH6yCrzUcLElLmbd+B+UHjFGZ95fHLk9Jgn4wDe22rfPgLLVzT9Hy8s6ZaDdr/i/yAsnX28K2OcRYijZZUVquc3ZxSKOFZrvU1Czr1AMJayfWEWjXR4CoNiVtxdU0Nsh7jyvpvxquvIxK4Nu62J2SbjVT/3dd1Be1rPRR2mDb79DnwKc0Eo8p8nmmywnPYWq9RJcfBNJ1e+dss2ti2VxrdKa6H04Edu2eA7TuIqCijl9EZsae3D2g4t3bducJeulPwsav5zcYlHV8xEsF+vboJJ24moKgHasAounhnlD4anB5xdL/llc+MERwbsx88hpsgudj53jBeeNj12WMxwBWz4c/T50I6Q/3pgBaHACWOBrvI8Qw47Hp8rg==' + ], + [ + 'FZW1F2j2IHqqH/iNqshT5GP7DiMzyECJalwZ8BwkPAQ=', + 'VMhgGP3XeeYwR5fL0suHzb/orUTrSSQW', + 'uC3YbJS0pnBjPIqcfvNkVyzQgcVBxCIokdYdnzeSodvP+jqKKg2fD37+of1FXO4LWyas+3iH7SOs2Q30MF6he/xX2Zqni2sdDkx81snu4DhCjhHo8/NFU7y+OnnXofUmZaNbLP0GHljkFDlQMO/fnTzHW2F1Tlgd1KbqyY0FKjqvwkh4xrSijYRsFE/rCTQZrzaQuV4DRnJWPc912ktuPbHYWGAP9P08oXrFqd5muAnIs2K6bJjUcyJR7MRLCxERp4MUDwgxFQtV7nWGzWAlwWKpi+0zSN94h33hDLwBwx1ZB4Eg+Xfh5GbDQQBrJNPUwnU239sTZQP16LuPgRwUoTTKXJx6jrFJhZNmmokEtHDK9bBDuty/v7jxYcppgxVGLFCc/H/IfR7cQaXz3tgkNDzsyG9wx0jEt8On48IJ4ak+2WRvP0Y3lruUrTHnD1BScD6+Itiee2f0LhDTvTy1Ug==', + 'pHf+pfuzDxQCoszoDV3k2PIoTIAPQFG1xvan8pCDIFlk/U7sGsxnya+NvBOMJv6fMxTdP09Zm8D+uKhD+dO9EURDofqzlZcxEer8eWKpcL32HTa609qQooozG2XE+0gVbJRk8uF31MV7DMa6rkDdQi4OrE2yUb+hw7wiv4II4l1Qrtx5LCppP0DuEs56T5EUiyMz8yJ7LKThs4ep3x+ou4MpjhGW4Vil93OyL7+XbUzSjS9CCXnNiTamO2zg73rk9eVKlIXf8B5G6Xq7AxFwDN55vQ6a98mK2g9xMzEyOAaN/pra+P7/Mpr4HTY3H8gPQvqeo3fgaeBPxcohtpYt4GYNmfmoqxVO0N1h6zVZ5HHrR8Qxkd2FKGetPNyzyZ3QKveFXIx+HPEZ2bN2XJx3uKbscf9DsfcpdimgA0Fo4L5syht/kveN/VTnYioFBbQg3tPtZZrtEDrg/cqNCK/fpF36zBstG7CaPbUZ8CYpGc4=' + ], + [ + 'bdrgxSyJoXO3glnwChSnoZrH571c43xlFQoh7yF1ymI=', + 'KaWlyV4WSTzUsP5rwwoiHp5BX7SMuLTW', + 'T91uffgQMzsuvkDAAdv0VaTie8qcFm3+JPhOHa0bFGfHoZHV6XbwwbQ86zg5NVE+WfEm/hTz6QgEhhEowComW4QWnqWevqA0Wdnfj9ybV04zav+/lBX12E+1LiFTiiAHRTOpauYoh/wZUdHLw/ucAA12saKs7jaUYU2YSzJXYDsQ5GNc8Erli5H+OxBAwGGRQDuNfyGmPBtxnfQIm/7kfcoJLl/KwYStJiqKCSi6+9v6G3QM2wXLvHCp9XXAcNKfdoArF07Q5S7rz0GUrmBc78yinFfClzKSSH4zYeyAXkQqh7knaa+KPK2TJOlFsnTWELxOIEg0tb6nlrz2rLBUJP8uNd5R+gVcxf6rirUF4avNUjpizoU17CNwwdlRQSZyl37laLwtlEJTDSq7320vUq8yT0pWzLM9BfuSCpYUGtrBLy6TSGyfOVwBEFpeRExhTi7kFww7K80B2aY7MgJZPDo=', + 'ElQpAI7EActpK+u8bQ0eTK12csrawr2T+rpOEu8aeaNy7k2+23/rmRintiMfMOdyWxKANtO6wQhZwyAnwJKqmfc/nc42j7cmXO8kZ9+6BK+9Se3tPcvS1keAptCLrF8q3zjckY88/GBQd6iB7r9NQxl/IFb1AArukWyDmqZaDaKHa5v+cIr0w46bF/USpxEorQ08sz/GIeJeWiWOlzdaBPOJcORd2QwmzGug7hLJRKihA9pg5VPfHh/jxhtdJsxSFoZbaeVHKjNiRwSfQ0NY2wr/EM+xfgNFZsU1n7IvsGrcQRe4yaqd3RZtqASnaq0heD49GIa7L6SDtH/j7e4QKYn6m29c7+he7E6vmbsVx5qtcm/6LJWBdzpOEfgQ7EnS9rA4x6+E1Tpjz8sHrDLAot+hpfafRjrE+mhZBMf2hM/yt/x+1il5ec9Sd0FCU7WHbI1lteZxOvMBN+5U6LR1yUn1AeS429cKsI6Qy8pg817J' + ], + [ + 'fDEIbh/86dRronWXyg6A2+y0uCOqLR9mVbeqSq9UU7A=', + 'Sk5yW1QnlDXOM29jod5SEAHb7coZh2I2', + 'rOK79+lSwl+KbjBbpc+fS/MFrHCOACBOE2rjI25C0YkQgkGxtlZtZX/ORHOARYF6IwEHpcP4gHpr5iUpG4QSQ4bWWvB2py2C0OY7xHAlzGAgvo9r+3EunqaiK81tZV/h9RAu429XtgUva4kvNhHRoZMBlJXt1D32L+f51WrAW1/WXfZJz8Meu8eKuoPvSipyJNnEHRCT7FBouW0u2sDeYBGIMCLJm+wYcHDHEp5uJ507sl+9G6mQXIIiIdMVAixA0MpDglmLkBolN/F/pn00DqyGOhMPy1HYaEZLN5tfNGdczYw1FqkjdwVsX3uOcB9oREaKLc08N4ZlhUZ+9lRdOX1TAwEeOXp5q6VLT9ANekCmS8GWJtJsOcahfFQaHTnCNQ6KwvMWnN4C3BxqOwP5+CqAJtGmdiIfqpuIPZpl0EOWwcbQGJ7JTVI3fYHZGcvQIz0EM84B+XS/X45IXDx+fg6K', + '6FUklFVompaxHMi62YDqzJWP9xkgYE/m/HWGhglA6qDKU5EJT30whomU32RZxNbHUx/WzG35gtZj0QBc6o9+rZgUkJ579HvEZDhUpfbot6e5f8FpLaRysqJxxcNxGkvbfSKdl4tWNkh8C/UMslhuY0o8diHwYbdU2seIooVMf0X93ZIf4ICHHOqOrY9FqTktHiH+tTY8Ryse52m1vZFw3Kix8WslJTVfVSuf81HvCGS9I1S71WRe460xpJWzgOKtyb4hZY0AKR/bV0ho+iTWfUBMy40QSx10WhmYrk7e7XPvQMq4hGdleoHUL2X7ub/GRGZeEpqGXl9oWsAHPypn47LYXuo9VPR6BLr4L99cl7oo5ihKaTu9EjW1QR1KWJDZ1u0Oi+GwUy69MBj73A8oiYSDUGnzPaZhOVpvpHyTwLOI4EKKWIKZvE80vrp1mSteqm7akZhGyA4BIptA8PSZ9z9Unzjz1NtviJrj6Jbd5x7Pug==' + ], + [ + 'cq09HXewZcBzFOixZksWwzWXlyqc+If9ZiFuiaBM/aU=', + 'YqB2jcCIwXWOEir2fHP8NzOTwkNsqYPw', + 'semgqkOZYJzslZMmo6tfBM1n2E52PKKmqimCqd5oKRV+aJh6GVU/ur7Y95dBNCjxlNKla91IZVCIalj+mGEOA2k5kBvKfwTYVmSEP5Cx8k6PKMfyNRWq5llPRk1kR1PQi93JZDfJHMy3PXPvK0Q0NbL34PyyR+vZxqiJ/rqxxZWGVnDha6VLlyWz6Iq8U8uI69Nc5Ks8AwDJKoq68WlRYtUIcEFLsY2W5/0VSnMS5tFdQ/ereQpCd3l/aBhN2gYBxfliRP2a7T1JeoIqZsyi2X2U/5rEQL8AcQJrZ2hYyubXzzPpju7Q2AGncIqWrznSVP1+7U5LcagYwXqcDV4jO0pYSc7+FazRwJjcAfgKnh5GorymOtOMooHvWTI8MNnGSDwD/B+FgiJOViTBMsAkQw+ctdwe1N5ZXnEUKmfnoCIZB6UKuR4QkfXXPFLyq9l2lMN46iOUfcu0hPqtwJ+uvV80Fg==', + 'pqkwKrx3T1Wg6yvJzjLVrPzHQ1nh9/jPrOsTWYVviEmVXbLpPXgVoGgMolgdkfImn2vdMy7thmD9rEK/eFpAmeifQD3W0IVAeax+L/jDSat1WOV8iQsi15yZYgDgL0yv1aVmUfOA79yuWcN20g3aDLAfsZ0O1H6c8HLgFzpjPRDV1V4YAGK/gx72zBAtZU2YUxEiQSWEOXhSLsu2eZScjFa9bCqvh2cQZsApytJ3oMEUGmZb6O7ijGJCMZBQtt0BA4HXFUlMtdAIxxJDSs5eBMgPvvLeSeAX5MveZWc1rJITvgEyksB3Vu8qHiVKSWsv3fpAmH5NmW9PBU6T9g4q7l13PIAXZI8EFmz0w+7JwKbvnI0lrhtFYQ9dGD0/Zt7zSm9ETRbT4IuUnMvG8dqbagIxNxWx+LSr9n2gIAiPOJykxsM0gevj+vbDxinog2SYZWooUvRfXuC1pZGfU//CajqaLNfZxhzDVUosYpJxCRLCj1g=' + ], + [ + 'ZWcKV0cBrrqkFKK1Gt9HMhjkUBYzq689TxwgTZCtp6A=', + 'waTX7FyXVRcm4L8yjK5M10qu7BHoQsZA', + 'Kezo0fjIb7UggOjY+al+57HDO9el2CkqV23eLffkEWM7/lyGobBOjsVGptprK2neKNnin+sXjSITNtYkjOCxD8m5LKDWm+AMWDclnw0G284sZAyAYelzejouzf5+ACbw0dJ2YI17UeODxAo2Ied1g1xvGdNYjp8MxzsISIwSl94/cMbKdISHAhDzIbU6lRnPAnorvVAmxH8Fxy0BXYLLC2LpajicC+dasDSifG4U09gVohS5V8KLH+wxND8lqk/H1Ak2voXD7A6m38ojqC6DBxTY6Nva3lkatHR25Q99g9l2kIW52u2dLxr8uCkdUTfiw2dFed18ROqPB/y388QbdzNLDLGuDLyzYEpkBxL9h8xYQDr6MAWPh3pBVo3TQeCnbFKH0G47jU5O/UXOcrHUVnorgjO1HUqvysMrIx9CS3Ki5sADORrCauM4QHP1v/LmUhwgVDp/Q1QWp+WXks9C4G6Cb4o=', + 'V/MrGk/ddbImCn0C5SqQ1cf78yRmGsx0nfbIuwUHmbOAOkX9ChvQuKOKOUMdZnJJS7VUrJaNOBDk1A1xmbr553ifXDl6W3TyiRZ97LakBV9anl/vprQqETV9kMXDTJi/gGY7NhfzfGi05cph7RfGGfCm+1X0c3X3DsRX6EZ+pme7WP7CrtamQ3FDAGB17LpxwbIFkEhxP96UvlAcNCtsxHAKUFwrr8KdT6bI42NzprsRjzq8edNYRNuBG+a3bKYJRaVk6uhzv/tRIztd7Yjvq5KPSFW1QBtPxObvyFZ5P6c/7KjTq59lP1QmZpDMYmCxSaJtV2NpWD8XRsNI1E9RE2sPYQUCHF76k7lE/bgeTc6cPacBW4n4bBs7Gq+ylxBfWv8amYXWZPVXXWW6+EEfFwuv3b/xe/8P7bwkKdSeaxedURrxg+YcN5dyTZokR/czqykQXA2m/m7bf67VIoUHgHijt4GQIoz9PXiFvhHKQyBJ1abL' + ], + [ + 'RB5mAYADsUZDEutWamqwahcKxt6BuVEDqjrO1SkcS7w=', + '1WjlGNwlekpMMUVW2FU+8XC7FRsIHBBP', + 'Nb5TxFI1Z4T9cBE8kvP3I7wDOav7BQpWsoPnBJVrSKpyVEyza/13Lt5dUJJNWur2FhN8tECMV1p5mrTyz+Wa3Px0JQfmnR83A5qXX+wnn6pN2lteeXU3J4pOMW/XAhuj7gC3XBLcOm4ud+RPqR8vYIoGBlOE2+Qj7RqI9enL67ngpqvGSLljNmgtCnWkIxbdHVMHbEiJHy2v9bnVdr7aCN/02L7c8KbPT+nH1Y3gqNL81N1aQlacffYy24WpW0LlU1t0nKdtjv7aHSBFMzSuJDB2npP/X18VPZdI3xVsxS3sY053OsV4jwyUFP0s1NcPSRhvRoMFaDKGyo9xAb0R9YWyCV6P0L5kw+AsGRGuOLeMhoSJuOCcNczkViLAib6OZkYHARC7WEtrTH9Rv99k7jXPJY5XXXzQyBZ9MYscDUGTo0S+oFsfrZKY4z1wROiI0Mwjk/V1WE+Ekvz52cFV++26noFF', + 'B3rgQWs+l92TsDQRhJ9vQtdVHVHLiUsRuiuH/Ob3i5k36nLufziK/l8Kb6xEBYlj/yTKzQkWXEiAyM6y85suBJf3d7R+dlw7Q5lhR++MoWjXo70K3Fzk7p1ekGydyzEwbqkhRRfM9Bl9JG/hijjWBqfMjT89hHljA3CvfnzKjt94Ey8k1Tr2hZmfOR4ttxSPQflfevayEfRvt9QjXZdG4RpoqzDxAi+rX/5wxWmd+idnZ6Wqlv1h5tWQq05pCMCZzXYcyqyw9M0r/Wh99//VwRF1Ufr1T8w33BX5lGjIpJlQ1LX4UzltQaFtcN8M9IAarrQgQCKJaRTr2HOIZUw7MVKH8B/0/UExxJ9rJgvUDXQhCn69rgUXv5CEGrqJkKYRKoaMt8cEVfCBgR3hbzHDSA4P9n4Sk+4vPK9t584ZkwPJhEJInQx5AVqGQrwKfBfuYMnhlscDyYibSiQaBA86/MSBp3yH4CyJcgwvL5n2SXVhRRGyoA==' + ], + [ + 'rq72l1XJMNnWRF4H8Rbcy/Ps0fB+ncZX/B3emwdicNc=', + 'gNClcf0GWEDVe8XdhKdwm5IYy8SX5HhP', + 'W1R1FZXFfZYw19h22jo8oMC46E7rMcoD2lVB9exBfT24OMBQEZQwhlg8iRy1DKGUfhoPbFgcwc8CQ//UkfyAddGpXrtTy40kA+f4smgqHE2Rr5sswONXjXnNpIcHKF0IUIMcMeEAZXFYP66ytxiSRknfS1SMZhDbfaqsduyUyTnh+s9jxCLL754HCbtNS0qaUmv6cg180IdFxInJc/fkV6Cg+66J944sb4oWrUyEOt4//Z0YmgjfT5v7ZhM0jsCQ89pSOpXW6xoVxlWBsoZz+6Wuy4qad2R65sy7n8ahrojo9YCcZ63/s8dT+HRPhw/d+NrbTAS4/jD1ilrmtFXkvjY+IMs6VYmUX7s43ybkWg7tPPdFA0NUzjU48xvMdfIy+pv5zxBuEj8rYq+l8lXGwg0MDSfy1fAHKCHHNKWXo60/lUcaxEcKl+ClH69ay0F12WXTRQ+8Zr//3xxd+pt7g4hBgqdLfw==', + 'goojuuQcnWGzE5HB4YN5vaEMz+EMDbbGT+nAOMmep2lm7NlRnn888Cp1ct0zyVY8E4uTPeURWc3c5oNRCjmdTVEOp+49LyQLiJ8ZsJO+IjDTJVE4lubIJbNQx/JIL0rhrmG0cBv18DSVBAxablu9NrK6myadtys2QDdvLHEd17GWFHMRLIjtXJJ+FFKfQAZ0jr4tL7Co6YErrtHjAlqa04J4Cuz1kgXK2CxisLkw5zEiuf6VdSb7BVEXyJmTMi5mxdmXHXTmWJw+egjG6mazdmhmi7sZkNg8NLub6Klvtz+8YL7T5ohmCwn0+qsftOuik0MUgHvsb7Z1+BlfvsCSvfo4hqtCcvFyjeJpQhfEV3i5xaqnwGeqMbrUs/jY5202Pjv3hG+TxVk5RRn6AUEK4ktm+7Zox9c7eYi0w06lUtxCu7mD4k8Di2VuzhwVCsjsHPrYZpLI++kfO04XYwia+7utoVUrdkbmT+cB6DMgjy3lczvA6EM=' + ], + [ + 'hQ1S+Y/4/ZR+0taz1ApsQUF5rzqHa7U/eDGATCIPctc=', + 'oRUvUGZIQrUS4LLy+TYiKamxtLnTPnGy', + 'rc21W9dS7W6RT4ochvp62v8egtW8KDtnI3xfk1EZ1M/qKdITu3BlMp/wS9aBe2pZXNww9RnZ8TnK+BjzUqbW6U/6kqSS5KXBO+zfvQwPinZBUDAL2P0DOWBKRuUevxpHyv6cbfDA+nos6xnmyCubFPfXcfoOVAhFLqAueeEsU+y3GdwcMbM7TNOpBSF4SqO+O9nlje+wV1ZtK1fNrAmvdXTKcq2v26kXRJSMtVMMyOXgJHEXN8j9CyIXAcDthzdEOVGtRHLa9mI9MCPU/iP3X02jj273odil9R3yoZ4NRrRITgdaAPl4Z+J9eqFQvi+bMLYcuygHXaPrsKI2czTBRZiTQR1mgxLyzmv+/0djwIWMPKRTXkL4o3WRP2WU2mcIW6b4rVWqSWfHshBUYZIxTs4r/fobKaux83xs8zJdZE55QG+488MgZAJfWEOsZZqF57JeANXGbOR5Qh9FKBvpXBL52RT/cyU=', + 'TmP1rcXy6MS39YZp0gDopz/mbd++UsGHi7ZYwusSAHHjoYkFmIn3QnxdFtKBvbusAplwpVJdb2xKWgnhbjPDJsU18GUTzXGFbAsEXBpyATrC6DTQfyMZPMcZG+eawa+0CCJFHb4bnnuyYBAWfG/TbtE1/YfXhb/AeItoJGU1G5lXg15l5/RCTz8VOl9+MTdlk3j5bxqeYquDf48V8DJBnY2D6If5/nJ4Cky4S8ey8Bv1UfT27JissJs9CwN/h8Lkwy6gdNESVl9VHrK0VUghvnWFxBW15pQxPi05spc+CfVDJUB0+xeWn82S7gp5UEudDcLLuvwJPW/r9rBKKdr3D63G7TNDS2VFJoi9ZXDe1OFCEpCq2Anmry1JHSbq2jBmVQec4CGrrGgdGUldy3H9NR4gCPPCEshKQ7GDXWp1LZgKS3JS2ycxXqYSzHn/A8km0Fwbbzmb0XvWZVliNb/GRw7AAVYJgBeIb9ddL6W0/CxXZG+zhQ8o' + ], + [ + 'hqtrXQ50ojq2qLtAi7AdF5/LDA6SelM3BukoyhRgRvw=', + 'bdrvSofNzVfF1mUrsRvlKynZgdtJmboE', + 'FKnBNszqhtdpIX5Ka8vVxl4XhmvBDrzk6rvY7FtgmzQvDjQ9D8nbDW/hReG20EkEMCRbEeUUDAk94CqIV3Ud9MTiYKOit+AFR/J3l8IHUXvOBUE5/HzkXbJ+xjK4lq4IpPxo/zEdoDeR+IFqUQOTfwBMR1XG8eh9dEf5BRVy8jFky0iPjdBkJ54kteGe1oJ53dsOrBpADNFS2ypTG2dhPgCc65x6gIH20q0CJtqZEvrFfYNIoAEW/qmgJodW6HXXHLd6pJln4dk7QLmrXD4x7aKkrz+vUMcVNKHCaRNPFl2Js131nA1ZA1JhJU3aJ7TPIZipkEg278b8nWTtIrD/SFcbhxrimgc7AaFItwg6GUZJnsUXjlGYQMMWCNTZ6n8lmYBYWnQofUf4vc9hlr64cTEohPWM99sYZFMV+VUGWfEvTrHAcXBAWUCk9gwlcSdJ+65BBLLvYFSPteNDFaRs9xUsLS6uweCO', + '8S0WayjrD7sWHd9K8CGHlJ5rBW5MGoaECnrxQ5Y9kAsrr/Z2FZ+fmFEmVgvvcF7k/4nmWcVYvgolyY7H7D0c/4v8aWJWSkeccH2c25oZuJFfTm94xCuXAFmkdIzjSb7nQ9Vz1issZ2rH7mFJuSPfcONKhkkyomDJLN1+q3PZ1uQMZWILGKV4l5Fm1GnnVQ93ufnVH6rbT6KqkItCrUkWWvfsIva6UT7L9lHMqspkSh/dBSvjne/wU1dwIMS4b1EfYkxFbljy/GaS1Z/jN/JvOozDkN3B3q/p2Xzhmrrw8FiqumWPUiD40KJsuWUGAHCWWXYa38N7a2cSlls/uj9epPiom5k8Tmto8OKSFoh4hqFz362VVRhNnKWyGcRnH4c+yvlxHcriUUbn9ZHD18PuF/FwR53QxvJxjPsj2J4/uU6eDi1VM6QiDwzBtrEo5NT13+hKhPgFgWbgji/B9bzMYFRmasI6/3/aNWT8k8pvQvOj84AKCkGXXQ==' + ], + [ + 'ZiEaQw2EbZ5pQWMueNPoDMli5NuVm/CGRrZ3CRQmXdc=', + 'fCPXHcYANA/IHr+Iz9JdDC4StQL9WFPN', + '+uBPLPQQ+pxorPnmEj1w3DeZkJwBwlvlRL4VzE4xS/iLckno5qZ/AVaeNFIIMBq7CaWnUjUo5t9Xg4fzFck4n8HR7BDkAhDuiro1AB34q3EO2uX9nhj8vDInwa5t4IfsxDLeD7P45IewkUB44AWBqysfpmn34W4I/QW6BbkFNfTFaU7Sj9KZVH3P6nNjgKvwCBBBvvNSmG6xAWSzgpIfAmppChHZlAqUtsQb0ENcVltmk5fAR5B3qAfY1twVmPWTMJLnaf4qZ7NfJGqrhgg4W72KERe4QpFJ8m7rSliztXmXALKmyJ48c0XNmnKizHmpZqMtqRj1qpc6NMIYl7Vlwy918p3qYfxVDuTZM1lAZrugKlBEa3sr9yWqUU1mVIvXcec44yUTFiYbY9tKK7Ducbxe1tUyenUgHGtmEVRyJIaadEbsEHo6qu8Fq58E910qIsnNfvYVyeGavIRR+2Y/JOjBhxzmTH75iw==', + 'aAvPBxIEwnyztn4iezur7wMq8QrLMWPSn8KHHhP1I+Uon4NYE4qoHf5lZqwdxflPYDQfNvt9AUNNnGV2srIGbuP5wCTd1GaAX6QfFWpWO2PW76XYBaG7A/7P0/AalY1fZHr2pYyAgH5+BkPXX3cggBs9GAmYYak5PpkyRbnBMh1atNR0wfKzMxhZKtPaBlPuM4yV4mqP3hgtgzl29KhpCFITrLkCDZYlPrtIacN+Yetad29kgkMA/4umenVMQPw4zglLEpFXXuujknT3e8lE2YiNI6KHIOQ3zBqWbs909ncZuj9Dd5/OxPFjCl/2aT8uMYaeKnoQki7WvShCLKhxLR6R3Ah8j5jjZQMvwCgtnvzVf28wRfMSxnCeqCOyqAK3DgzwvfH+F3yYxOFXa4x6g81SVmOtSvkZYzYTBm4bHIuYWhOnw94g1/g8wV6I1Wr5in745Tu3e56q4J5I1UVL+yeph/RNfanBlmXvL/tQak7yjYg/t6hvYtg=' + ], + [ + 'q07u2f6K6bqzndmxqBBfwq8cCd045WsR/oFuhre5ALs=', + 'LurleI4YrvuNL5SAoIlpDdCq37DbuRmZ', + '5NDkNx3uA+LGepO/tt2jaSm/Ytr71uXNB5jVInMoAI1JVWdMId1ax2EDtvmOMl39/Hh6tW1VeU2JVylTLePnNNqIkw/t53R5POTTo3wkJJAkIY2BR5snRRPNN7M/Q0hbvtuozaKjlkN53lpM8PcPdbQtHJv25f+slOnz6bHNcHZt/zX/a7hU+bU2AbRNCSLfa2XlNBjWs8C0k/1yC2Tx6UBPHm+8gZHPIpIm2ZF8LW+w5W9QaLXKva2l5iX/L6Jwezemig3Et8t+8TG/tnzJH0zEO70824v2uFQ10VGHOSqG/X6nZGJcx9E4UvImXdAD24ViAEJn3IeGXxg2T5XXBtNcebPLT82KA/+PqdZ2wY1i4SNbObioDIx4ZH0qeKmEGwnVid0jR8HyO3W6HIi0ClA7KcQaEO5qsqdxA1yIkHKp5jrwGM29OOS6HcEj1QNkrTcBFpo/tTap/TMdK+2dpJbgMHRNevGJt/A=', + 'Z2EL3HNmsp3XdCGMixKvEHZUZxuFNQw6kmJFzE1NBzBZhxEhUswf7EySLDILbklT8ljxyVz0mjjM0MOlBjBv6At6R++kkeEl3kfF/vd6CZWWb+jgH1vYX7mlaa4Ql7ab9EwYtoFhBpnNUGOlRG0+JZWfZpP0LWchYCPitIcHlnXUMhtc+xQw8MJvNmZjK6BpG90DiLK61AybIzzeNO0nr9gv2CsREoG5nT/FVcv6OePGImw23S3j9zEjF5Er0cxTkc6CO/Yzw+ACWaZugIGE63mDxv5nZAMExHZx3GffVr60oADQTDrEDbo50IS29t42aOGgkN2vGKj7vVu4bFFohSfYjr/6ArEe/xdj+FXbpWTXJpisNl4TjNza8MBqZ8LDjPpS5ej91QgLC3qVdmQlOWmK8ffXjsTf/ZlPpTV03Wo2xYU7FrBBn9InGskHcP505h+0TB+PoK8gVjNTOgtkwyVXPxa2868jMA8qsxMjEv4zqgO1fxihhNLO' + ], + [ + 'YeNPQN55g1AwKwrDQgW3k1wX+/zBtgaL4UrxsrrtfBM=', + 'dVKsZImf+1atiFTQZWbj6E/8yKIJQHAx', + 'hkoWWMhuPBcWVxayAxnUqIp8ZLjevzDwGuoYFVWcnkqBZx/d1SpEC2X9YcpNiHqcH7UzX5bwLXy4FBTsVq0DcKSpaOv63Bhb15NXR0Skfp8neRfICRFLVi9XGUd46BbCbrMMQzibw9HSsWnQ6n6bfhOLatgEO34gL9eaBuHIQ0qPOhrl1LUClJD4+qHo5QAjhaAkmW7OnZy61pWx/7QlymCeR4pjyMspNUmukYfa6VALk+/dKo7TdJ/hR/IhGUw9gp6w55YhORKsDvIBmCbkMWHv8sCg4TCovJt49eVK4pBKBTghGFsHL3ZECGgZ5C9LisUrJ5JDKFKrI6Srde+JZ+hzomVArtsjpr8w4zUDFiOTVW6xTtVBA1ZyR+H7vZx4VMzjjdi1O3mxuHf4ZhZezGhpgE3LCrQp4/Yxoutzb8nkL/zfjuNOfoPDQLexMB4VKLQ+pVrWEZNq60WGqG7jEBH18U0m13HkHP5w', + 'qeLQXx6XRKOZplVMEpgW3Jl++2flebEayQDE9seUO043YSH7scZNcEt+33ZSK9mXV+eJ++PCmSyhUcItDCIWNqTYE1f+R1MhAgxFifQODzEV90nsGZPzbts0sM4xP9NG4rTkOi486u0qm9lM6SPSDS6pLfgWjhqfOcLklJI7JPoDPIqOctaJQUvbOfF8rmukcfDzsVQBtnuO/kHj2OhOkxtSmmS0grKzdvXfbA4dR2Qepj0KPO86aLehsKCYrtJJzr9pjf2/gKzmIkNcDHMKgf4yb7zbYyM0mMzsvnpAKH2RCzw4tELWpXTtQUF7s3Bd13Tr6ZtFMjSvQ72B9apNZpw3CMwrjCv5x7TXLOPN0PeJeuEA9XSazGZJtEvRO/dnEDQwQm6WMuEy8iiclupmkAqAPvNEZEGZSFjMNjS6QMwxrIA6gee/ykVr7XgtmaoXAeeH7rR3ld6TysdivyCis64/063Ct9DZVTiuQMWLcX0EkBop0EyWhImQiQ==' + ], + [ + 'Xly/fDOCLYvu7mGmQZYsNthEWsfQZ0/c5UDQB4S408c=', + '0zjRDiC0VHmldJJnps+0s0cbx9BKH7MW', + '/Na1+7DPHTIdxm1BRfsmEubYg7a5DVnS+3qcgmGRVl6RCBa3Y/qdodMk75hECRIvEaUVO8HEIEmVV5GRhm85fyujOubQNcdG2SjUJHIYQJnDwisGZGq7lDG+O/yACy1xhfDn33cLVxSDNO2l1zquvvVy6rjnH5A4RwWBJnbYRk4iV7aHOtGvah1FR4okLnYHouqUodJO5jB0tsU9bQhhr+reaHF7rq7YE7zjUvhvWm6nPyoe8YdAxkyKrI0Wx/02a5TsnKoFXmoJJc8Y6l95oB2XiKa8e4ny1nN5gtdRZrEY1MpCN8fCV1pwe1i/aRCQLYyReezkGQQNisTzHhgII1XV1Y294Cwi4ggvHumKT78ppjCc8d0u8Ji8LOUXtjTuXxZKhBak+Zte2pne5cj/IlEBCdD85dcnkhSrjGLL/NLRaMv9hkB5qQi0pw806qEdywnuFysyOXF71twymPcaS8nA/sDLmUbCueJcXQ==', + 'E+djqUSZ7rGsbnxAzcSlzGsqqKrASwq9sHr9zgMgefTvmnWyUBHKQ8Bo/DTLUPrHGoDkL7fo5DPTypaG49/Eao6lQnFGaIJJAh2tf6OHAfkeGYfY7AU504mwg9Y5map3i5Kmm/VFt2Xc6zsS90sVg6KoR23mS1F6LnuO+a7Z1aLEVnd5ul55F823BoajEQ1+MFMfKu1YxNY5a/gVrFZdeSic3qiTS1dObRYTM1lLz7Qlg7RqA0F1t5FAtXjUwfhoD7xQ6fxO8hd3YOS7veoZuTPT+uhxYYjK3d7DseaVgqhyofdcpMnBugy6Gvt1PmjlnT4wBRX49rwmMTengW47Mxhy4DBEFXUYY3muhdBICSLZSG7BMHu1VbCcLiLT5lkrbcmyPdBo2sp1dn8f4kCEd1hrKIbTaAic4ur6eSJwQd92Hx84vF6UeXgUoecHBJL8wWLIJIHQYjqyRLVwyK75oKBgq3jTisfpuhddcEosazenwo98XajEJXCWEt8=' + ], + [ + '/FM/j6WDiNQo6oVMaLje82AEU+zW4ugXLFwptSvmkXs=', + 'qQT3R5EBIk9wz2TlyDubehhowDLT3Mr+', + 'kitjpKwzQ8uUutui7bJBo6b+uELovqrTgBheDyDDX3mqRPAQm3LvDi88Km8uf2xEyHELvkjlJdfilILjAXnm80Vn7taB3luP4XmO0RTlTOA3SFA1yIYD51UXE69+QDCVUZnZzgAGSZdFQBcXot8Lq2lfZGGmH8cQJ3qh70eR6v0nUZM+x9Y+UYE3uuefAb7mwkjiTWy0qKNASMH/JMRGnleskATZ3SLlXOF71InzKAHBEizr8Wj++lnzknui2ilVgTQju0DGNqHjrEQ3ge9DbOVTpa7YtHVvnd4EgcqHU9vJXzHq7ri8wfbWFumovDsn4ATjPOp0x/shjLoNOI+maum4WSEh2lzQDJyhWlOCRNOw2/GJci2CrTlGIMMTk/exWeux358TIFxBOa7zStuYMSRykOp+GGWDKc5PreNn9OR2ZeByGnHJum04kbdT+2GuA9MtwwK9PK6AWV5Iq3447D/7ore5Ij7wLaNRYYs=', + '2uZNa4tiP7xKtCvdFGWUOhQL5Sr5V/fNsW9N3IDsUC18YDa5jtoIFaUzI1dnU6RwFbGDehA3iNhCTq9k1Ef9uPCFSD1hllnSo1Xm2QjW8TSTa5YyTyTzGZbicfEvVyC6K3CJqkMNlaQAqral8bRPVr7Wa9GAFW8vTZtMJT+EoRctBezrU7ylk4QFF2WmKBM67Q+5bkMa0n22JaIR3Lj/Ok2+3oauPowTGIAaSDELorKZIPe0DBqJBZsaqMcKKOOdGGamW8o+bfjjVj90x7LQF3/wW8GA220KiEQ35Rvq0KpmigDOn+UmtM9DdI9c69lb9zdpOLWkiC9bDrjZ/Ad/igXXnbelq+Zle/Mc0yJAhgmv34Mp/R7kJxutVNrkVItEKVvTx2DExH2w9tm2SWaiLQByzkNPxrBYvPXLwAGo5hnoZsyGqzEVQKUTa6ccDw2EW7kMJPBILNLHjLZCctRGNzfZ1Db+HrxQqtxIkhZQk4oA4iGy4P557XDiLved' + ], + [ + 'qcAP8BDGFd5tFzh0P53eLxLkU2Cg7YFY7v909brl5Bo=', + 'Ox9ZE9LT4hiwZhzDC5BlKyAl9tFAle7u', + '5kShc/FOTwTDV3ZUK05peW9yQPdniv7vQ7pvrwyITepWYYnbZnp1Nq9S+3I3Kivh7KRwIBM7Glnu1lixzZ18NNv/6KoxNn2/JGHt5ycQf4psWfKQcFo02nmuZm8uBIXOWVbngLaogHDPZdM83F5OFZ9+a5N8VCAYtlmPLVqZfw/lUvNLKWDLkIl54CbLfLDqhNcDp3klW8nFNO8/jXS2SVisUyy5rP8l76gsa3qzi6avO16pN4Kv//sAjRf4xYj3sqsCL3m4Nw3SxiqnlV2dAADtqEkHRfehKEe7ph6+RzeinPjx2YnP7F3eX3ogX+eQY0kWTd08MlGQ9WvRsg8g3HuQkVDaVeWfLauqx9GRQiukZmp6+FIRgVVCU0x/RCYM2cLw1jwvmWKZC66QRlrhVyA9MW5kDGsOI6xVhdiCCWOSemdfmA8MUGr8VXo9lIMju2lj406nb7eeu/V6M4fjfntoDPZhpMi4xIGx2rcq', + 'gFOFC88EcBjgluKCh4jIQ2xQr6uLBrOE6rlC7qp+GANJ90acV4qq9/6tP222aH8djz8zYrogphuus8sIeAAibQLWy7Luk+QQcPsjTkelx+97uISPHwCJQ2OEViY2Q+7+TCDE9oEbAh+oL6xeqkbzXL1WfA9/yAMcraGbNKx5TLw0brTf8AsJk1o81dc1lvIVwWRQg9tBa2BGPyry39orJmAb1Y0Mjg+tOa7XF4qjEOxvUxpPKWvOOUzcEF5vwIr1VU1JPPKdMBjt6Jvx7jNF1tIKVxqZVefobni9HePfeqIqfvYD32a21vK3sA0ecCOYwr8maeMgMvg/s1fvfB9IwdB4twNfjPrmYASb/8uLc+dZdMZDD4jnaAkCUMSaroUDX2kHK5ixp889aMqKSaEWh+Tx7zO6McKLeRwYRTJU72RGYPKPUApXd2Gk9wqAD/meD4966m3wDVe+jNFmHu2dApxQ1hFhgpvu0QWVuoZ5QJdjMYFwE+rv3HAfAcFdlQ==' + ], + [ + 'hLiHJ5o2wwZznA1GCO83BNMJT5HlxNkq0P6/2uLRLL8=', + 'sK3BAZtDqMfGISctvPR90CIRFOPF5LmU', + 'fVbVujaxEJd6e5qWt1v94MerXa4B/J3aXyFUnmD+MAbCd5me0gxBMoSLOaFMc2nG4NN0i6bOorV7D7CnSpQjetOpH3fgnGsEmxj1D2GjEhsdhm5MBPi6xk8SSJqHI42vIpWh2AHu9FW+ik97WLmVnwxyfsAVkS4hvoK4QjKd0nlgrjCYGtEAkNv+WD2JaDukTGt4NzOuOrdeRFZCMslSepyui6z/KbgKl57037T8q6uSco6vCKI0iR5j1XkuYs5qCF3EAuo9UYvbpDVIRyXhKIiquWoLIFeyGHK2Wi9boRh1QSTAe8sUR2RBdLajjD1dirOTpTBgXTZk+zYO3FvZREfs8WZJNTRCqY2P5msqho6Lg0Sv3/12lTQYQxDKSZv5ITrfiMJd1S7F8PIg5/hum7y+p/vy7fi/ctk1XPzD3eRc9b6nyELHHIeG/BLxfbhlxq1zgOU2Y7hacXPqdS6q9Y69UPWGNJ/fA66ZsUFDIw==', + 'a/osUIXjbSQb+upOTlYCT4rDyk6dswss1GQXqO1vQ1kZBk7ZxNPvo9TPl8ZMRQF4dFNnv3+nEkq5+9JC1cl5CCUwa44O+r1J7pJG7k4hcPIg3HHQeR04P8gaBp03mC87sRWD0kWbwvHb4YfHLWoCyU37Jm2IuT3cKiRJ/wD3l1eR0s8wEmMMoeZ21JpsJvWM6iV8OzFPcqOxlR9EwH6TTe52RTYRMWylFKfFbiaty0NqlTx44G7myaJYtIXtr0SLP9XE33HcLXamaFGzpCd9KykHw9FW/f0I9R065qZFou8q/8VLyt8JlCjiJ0oEzgy60azr4MDgsRisI2OJ7gokjgkol0erxRbeqffAVj9TXWPSAjZ+im970L2Hx70vNLc/O5+iqlDdXLp1BTfJb4inxnOnhN+w7QQvp+pz7ehwezb9CrQo6/uSD6Zhp8wdD4AjeZSnFSgxlHbDrqF/ZdKmJsGT2IjDbVJc0FRbinFItn2pJA841FNYLXJgt8S6Vkk=' + ], + [ + '8Le3SBIG8mQX6fFbxVVFb6wUEBHPy1lRpIJ4B3FrCCY=', + '2FuaCg/vRwx02zctal1ALjOeO6p1GTSQ', + 'nJ08ol2hdAD9j6cgs7AIJkaCLC/79fuwecRagnImlTODMd7LDHAKNhOE9MaCrFgjK1IZcoHq9e41cCsSu+PVHeNOS+iWEYqypNnoqp8nUFRZH03+kJpio6yw5GGYZj7lDdv0+s1V7xD64L+ggEJqzcbfNp5/aJBj6awaSce+MOoMic1S5wrl4qnOCTvN2OcRw5ERTethH0dr8doz0+NNNwTNAszAR0wK/K22hFdI1HS/qFeusvXZcWrx1vw8DG6fc1f5uwpj5/d6fuXcNUYG+dJxk12HPEZl6TYECD00YD7RdYhN8ZI4NYNM7hRwaGUQuIfsO/byjGeFQ9/2146uDhGATnXjbr0bMXqlCFyR3NG9G9yHQGK8DWF5K8+qHy/U8TzXnb3eqis/dcdFfHn+h1x4Nh66+3uNZejkG1U7S/xK+ES1+NVp2EMC+NmsLBDzIQwW3b8Hi2Mz8eQ6cWddQwQfIxM/x6AQHhTHhBDS12s=', + 'WHEe8Ft6iUCSE6lcJgdhmmoaj4YtmKtbOXtX3WrLrxQYtvuY+RlE8wvwpK6ptQjSBJVaAPRxbbPUmIrJJ27jwBGfBlJjoCvP+YsvMEAaHyaBs9YbXmHLdKg2qLBRNaq+10TJESd4qUOE7/GX97IuMOS/wtHWIiJGLSzkPWLVu7kDGoefrjUo+kRdslQLFn46zTcZ3/qMruB8whAv78XXtlAyIjuAo7neZirEO0nwQSBDJykNlLheLjIfmAxsDL8OsX+Ok4qtS6UC7Kw28ea5QIKl5kn30BgL2atW+i0Z29HxKuEkEW2nvY2mb/xycea8zrOGnJol/bgpR2KWpR2ND0QaOT+df7bNMfrBURqbhsImMvIX1OLvDrtlpPftkqEAJfIKqfmhrF8LiaC9yTCTU3eJwyVp9v5QYsTPH7dFuFLvE93WYLSh1KAIeZSR+Ev3qAT1sEFRXJQ+YRPjGFjPNW1d2M/9cMuGV0FkVj0StV6xYh+VJJOHMKQXgJjkskPJ' + ], + [ + '8Vvoi4TClttU/vfdP6GWvHwC50EttDNrmcMHEzi6wF8=', + 'hitOoJbd+ylNWi41IncnkG7J8RUxkv/g', + 'KHsdzdMd99qroBTeJDhGd8EfUvspFBO50q9CTiFgNQq7FEFcJle5vQUUF8TMgkcGgdPFBO72tfXoeleexwwLjXer99dBXaiz7aGPW6yHUxwWJJ/U07OZ49zrLYGkMn78bD2KCvR+q8vNTShWYatdyy5YKcIOKR/YAImv9gOhxWwbUt4fTyhBiaZcJMKSyABofXgVKWzwanEEq6KEJBxy1b+RYzJJeITF9rIuAM/dSqrVPgxgS1YX8KwVjEL21ar3Uxhl/+AsRFRwP4dvenVE1oqtg7aEF3EDwVFJVuf426UWkbLBNKVGI5tURaCz+OvJ1fi1YyW2tydlsPZEfrGB8P6CZanMTECWpwIGZA2HaH0mvlMptz/j1tX2Kb6P2e6Tz/j7hjRa7HLevByZXVzcYsHQzFfGWLdOTjSYN46y/7N5jIUdU63MGzngtvHjmwwSTnUZqaNb/lLEvx0K4L+6Ua5uV1jOIyCXgFQ1fWfbAdGz', + 'mEnSCEAqzZuvMlN0+qkS62zNTqgsmlaXsBUdyllNdzi6gekmQNoxbfkcVj6FjXhQrVkrSoCT0CRkOm/5QyzJg1xD+AXirPe450dBT4HFslbZYbq2AAX3SqoxUBZexDzw1S6r5K9yRn9+Lc2WerkUQMNsTUMXw3rcaw3ym1Zm+rJx15Zf3r9MLDqd4YqMF7Ac3VekYfPGOnUgnXZgRbxD0IPtY4AzUk2atPDtIcl2dQtUgnNkz/o2d5KcyxmFj3GNvzuJaIBpIc7aXylvd7ce1daUoE0UP/VwwOWB7y32z0zNtlzNfPhNZ3WHG5ilsjeQG1Pg0WfxIKVo4dnum4n6HCh8778W7h3PjApKBxBLFISeybgzh+H2G+RxU+HpAHPDWCeNYGXIFPyUjTtWIcLMjdn+OpDZ5MBj9xlU3DCIp2yBfKJsj5lz8h2/O6B6jBsZpjE7+lAnNfgsT/+mdibEnY1u+hzMIdlM6mN0LAbGx9vDXVNONEqk434Vv4ETVaC1Fg==' + ], + [ + 'mqSvUMdHyRUcRrO0GcGUwi+aGPKWLA9cOB925T7Fwnc=', + 'J4ZTTe9K3NJtRuZh4aF2fSTyjXyrZCM0', + 'linDp1yBp49ljb9hXqWGKnmX8ae7i2QchC6equJSlelYhRCrKsUzAyON6KAiYKDLwqsLqPOaliG4Qux1s4jhM6zHdPVtlJzZQlnNfaFS6KLpae9cnuNg5GIEMNkhwmdS9hJm/IeZZlUGrbTw9mO761G0IEefxLKeNAi8v9Gg0lpuCKx8AN5/MZN3coBsZV7zPgZ18NUJEyD1ZZLEF/pBd/4g8Ln3Goo21rEi+dz4wXALwJ6Y0UAGVT2kjBqIPCGouh3hod2eCdM9UCPW6s+ARA+Aw0WHx9YXoDvtfJy/ncwkFlsGvLt+XWZigzGrg7NPzoYMlXos2F+lMr3L/nFTfk4CwYUEuiqPHd0PErQtPbwnmctcmpwj9yZyjovcwY/D5RzsjIUATfdFAkQOXbrB3oPN+OZI4Bb1ERnvNLIyui4LuNIyrpXuhO5E1Gvlpa4i+kKlaW3q4MAvQnw7ETlqqtFv/Lwm8gVrx93nBiAhypExiA==', + '7WbJFfjSe14XMDXJfir57mCae2YtiUEYdjmzkgkXOBBhYUhnLwpdCBjn1BmkfR+E2tDcWxGHbTvXh3vfFiqG9jIijfyNy+Y1y5Bu2pD6rn0bsAl2HdntNqM+KgWtWjP0Uu2O90lq0QJJWGyak6g7pP2U28ENbMLHpfo2w8CTPmW/7kQ/epOC4Koy439d8ir1p2WTLInX7ILTfOP1ck+hvdfJ6wpzHw3w3gFOmAtUXKarOT4XKuDHw82KjuP3Gaq7PlzZ7iqOM2ZqkDRHJHvvBOU2I8rjeRKXd06g66vdr9nvMBBUVtTZktlve8hfIP9ZOyfijeduFCIo6Fi2tzUitcRrcp5Egcsy3qMe8PLgWNSMmjAxFgmK829NBQEPsPLb9OgeA5XifhseN8kbX+hA6DrzLkKvhRcO6vEFEWuzOzINBwbdci6xszrK6SBq8o7YBKUHbKay3zYkZONLhHxxX1eYK3WvhrWTJK2/5/S3YgU9ahdM6X+HKk0ZdLvZmTU59d8=' + ], + [ + 'uJ0lKjK5rVmq1KWVDLjoIk4nRwVuQE2C6FnXuNXmxiM=', + 'apF0xzjUWGcnjpDKAZy4hJEN/PJ4hZBd', + 'nJSSAoeYDBEl0GjHbRzX2U7WG/228IJXBKSgE2KWwNRaG8qudS+fn7zMuiDpJQBh4tTiHeSnU5INCava0u9EDqmKuMuk0m4TCo9638bKKu4XBUe3FqThITtJSk8fBy2C6tEJN/krYMWCx47twPZb5/KVtaKb0PatsBnvGW16ee6r/5edP+/NRShQIuaqiF7frn+dXUtWXY5IbIvHp93Qo3ouilUf6OCp8FocqehQ4Wi5PsCX7EOdB2MJCjeLLNDy8Kj1YnXUVeqCwoJ/iW7BWXASuko8DKLMEp+UyVAAroaXCYGQ2VV4534+AW69n8nw0w7aDNoz5F2nqhxQpVkiLBmHzNg2t8/E5yk4cYNTG/3Kf+UwRPBDWyXq1Ijka9YVnvr80Lk1/uyI2Hpa3hYnOY8pXh3qfchK+F7Z+KuEyupak1nrJ8o2YL3w7OAx2ZYIGgn04tN4G3TT3y7JFqVc6nN+y3Y7HFx7EY+h5RELtC/Jll4=', + 'jKvIJB5f31qHbaCifkz4V32IojIvPujOxPnytsE0LiwEdu6e2Wc6eXQ8/vL1Ri+ZhVLXq2isRf4f8wqyVFAV8m3hYQd0oJigVzVOBRLgfB674NeA+E5f5Pz7cKys8K21BVt6sxU4ceqfPt889IKGkhipLWfDWws1rxb+44s7LFseE/A8TSLazk2LsFYrVMThW5sgzOZPsWTzoielby+7jL2VMB7gkn8nqT/lAa7boPQwv3aD6QtcPC2VAsB6H0mCoZlVRXcFBjU846LhH0FY8KcB8wNjfCVtjHgfQnjgBRffSvgywU6+xk3Rl8+U3OOuBssDDi9/+jP3J79HW+FvCwPB40fPnNtxMmZpXUIWKmauAYD8dmnZ3bhSmKMmMG48WOTdobS9PgOvZ0jnQGMTvyJDKkxGmSL2TqHPWVN2axno9PC7Cy+qHK+aUNXXdL3CwFwpXymsSpVwjkviwOTzsh17QdvvsfimibGM8D8oz69Lpav/yHrh4tzPL5pzMRZSUbiD' + ], + [ + '/yXF7+eKGWq3hpvNEzs+TiuF2LeAfVI4TtKC0lF11xU=', + '8VDwTZ1taIWPurMPX9lPZw/FQe8ElFqy', + 'QANRtg46+j0ZipEsjkhaq14sDSorKnuK40vi3MbTdUDjWMLdNGgqmNRRX+aOLX1IdYTfIMcQ6rfSevF4r4p5qD9CvEDU7h2aOy2Xu6x7fxwjwd296ikr/bLJJALrL3/D4jMV1uZr3zevC5wbANW6vsGp2DNQNXv4hVwmIZh3iH4vd6zmG/pEWZ6cfg75fFR3sb+r9YjwaKHE2Ng2R8581Lhea1IwE/+8IPb7XdHMU6dQNEUQWCY/dTwPBYpRL6+9UWyInTauTQG6kmwNCU9MYkvo0KpTcq6EWfjpo0E54DkoSBATAOWv8IsdiL3f2LRrcdXFgvmxGlxT2htdTXJ9C17dFbLlKedQ4o3mRIldZmemvTt6V3X5D+DHiEQDyS+YHoY9PEW6p3IjPaCMCHDN6u54KmDzzg/DD2vCmviG1x9AGu+bcMRKcVbSbaAygC5T/fMIiKzqac0P4s4gMdL4wW1cjLES46c2Xj6nL29Xf+SrYq4X', + 'COYb8v5hLkm+NPHuuyWcywKvPtztAO1Q2wUaHyLMvCag8Ssciu0CQnb1V4OEjkFVPkweissrq+jkV8Mj7b8pKBJZtwmnb6zk102MjAABcPrAE/mN1t1kBGTZLgGlr7R6ohut7nQH3dZvgRpU0KEUtIzLmDYeHub0sC0lMJfiNqnXytGYIC7LXsagQV5WRzEp9DtIli9CB2/Kf6xt1661bKdJWwO3gtS2XsjO4/t7kUtAPOGi7H5AAw8ndEaYdtE9jwbaI5CIZzZx/vcHzarPljC0ED5d9JTf6tXb86WjkZvJGc4SQR9JfZw7AJ+u+lcu/G60X7QAQrnb/DDq6IiGLfwc/yXjp+BpntUIZYjy7KuQ2qlQC82GTmnVDQFl3LWws52Mpv3lE4bUhmMGFwr/TW3veNzdEeYrf2QXYVCMnaJvubj8g87Dx4jWOSmqLr17eNkYy/6skalF0pfymJZbJ5VeS+Dzt+fErz5/NeTh1HFeUk/QtfHEClA2MD/dOxj8Qtk9zw==' + ], + [ + 'arbmv6hNjkGrMOX6+QLWHu85G/uQHzzrAswdhB8Ip9A=', + '/g5w3evULZULKqJRqvQiIGO3sFB+/+A8', + 'eLAcNMbnf8cxqJAILE0S4tvvlGH+p+uneU17/wDzAujN6sCzixXLtQ2nff43e8OlBAfGK2/b7ODGCXPDfx5zGxe3arEVWRmxk/zUGv/nfQNK1/RSnPOhmd59Hi+QoJRZlIQl9rLwHhbWDtzQbbXHE28AoB6trkRY8/EXculhir3OEHs7da8SnFrEBPWSGdAe1/Fi+DOT2tOULiomrS9dX/AhkazndDepI9+0M/slH/ckUZRlKzL5OlOW3vpEenUpirqoqcEpFzXwM2oqxuzXWQqePcy6OUxUtXZjsL7kw/MHEjyNDM70KxoZzAWKcKsFy25Wh5YYDWYbfI/zjL8a8pBNEfuPtCanDxZXGJCxc+beAAc9vPJbZT92ckmu4kR0bberb1sT3fyI3lBwE/mNnPjbDgDyFikkVErSkKYgnRWqp9w0fzZtn++CZbd9qq8kNcvvj4ZBFGBPsBMdBmV5+06imlmmbTIuvANV5hAH+vjDNif12w==', + 'svqIccaFFUZQBvfz26EHoGIKJeId57shnig3ecL2fn86AIN0iIi8J5CzwNLjumDZIgiKrCcDaaRlf+zOw2mqZpQWe4FHzc/wkAAwahe/1JdVG164KaaUYmyLCCSWt/IEZ6RBoPUkwfvwt+Z13snNsMO2jFsOndGEuxY+xPCznVzuy4MoQo9jOsIvclPtKFAE5Ro7ttqagtannQVrAQAxybWLZVV+J0hqxi50Si56T16w+HKovuQlP1uBz0C2aMBzLVhPZZct0Ipf19E8/o5mwgfnqjvlLCx4D/U/LIpiIIkHq8+ImXaFhM18hhBcb+oaQXu5TYuSIzLVILu4j16qTXvpO6wI7xVaVn+FZvSf/FGdmQL4xkJ7B46X0020wBEXbTGd82bqsuMryaOJU7+SPYqITpDEJc4HlbKXI2nHH/CC2k6yjHpQs4vOu7TUHaUXuFD1dL67tvPi8H3sRCdoZzEQIFOmQjx8fpjS2Nb0WQharUC/eHBDQATSMpTkL2aIrVc8ApQ=' + ], + [ + 'cgKepSJavsAWsFAI7I3pVjoPtr7a5egOhuKny4OIjeI=', + 'FBXS3lVGAsFiS8lzo+siilJkLfclG9p9', + 'Nkc5zc15iY152m735ZXIsCyo+cuMs8kZhz5kmxEHE6Q9lEiD9It+yEaF37uLu/QRBFCtHZga4LJrFfPc8inYpKJYzgkbaqzYBbIw0S3FiNTdzA5TMGtr21u0hATZnBY0EjQWnihnps9nyH5wq8WtocZySS3RYV2NVz2XsMhlj9WTOvM+WGyaC8FwJ31Hr7IWJ1CoIk8Y8oWvhvtVAqwhKXt5bH4oAfvWT81KdfOPITAvL8xXAMAeyQdisGaMpBwukhg3QAa4qncqpp+mRMvwfEb/H1wPIhgr654HtafmbxCB7UnT/0aFM29Ff/iY+iiReS0WV1+J7xPIoQ4/dZaClJJq8QNzs+S5kovh4+V75UCYKXvf4+z1ySgWlCJJ5VIxQjzwdtCU26TayFyBN6hTDQPHh0jNPFRGo2ZX9LUcfSN+bK7Tg2eTgfZoN+qT3VObjJSSXkf4LYVEi+dLGVBZSgrYRKn8QyFde+ePgExegJZASA6/8aM=', + '8XRYOPLacTqSNfEAni1QNViwpFLIfGfMxl6UpiQqDz72f6lFVmeQbhlM61C5jLNHbHzGflK88xEJu+HGspexMaVUxTPIg7V1plZ4lGpFHBENvfOT7a1YStpOLgEgq236tNqi4FsjQerlm6NEasWsDluCcKTp/m7SaHOEmKKUXCJvJu4Ze0PqjFNSCxBGimox3g7Q96lvMUFa74kG6r4X+WhwOn4TuCAjdgx8gz3ykzQEpPnhJJk/lJPoRCWNob9/TP/d2DUsjsdgcq+XafyTMreXDbLRJIYO8M0ZsfAAdPu2c1hnOmDI1GuP5C1vWW3Pue2NbecoEoKrdm7O/R+f626lexh4g7R0hsbF34nxUusGUZZL7ejF+5XQv3gjuT9Qyy4RTc3tCeiibxclT9YXNrtIrutNONst8h7z1RgP2kV9/K8oTRhI4LEO8klVoLAurPjLYE8RP10YCqhACAK429UhnjcAc3HrPd8pMYw6hDfwgOwihFIIuOu83SL16rxZAJ6GGps7' + ], + [ + 'hzizQhR+fUQ4wruI9UW1NX9OREdmnii7IPNWT4dQMM4=', + 'x0L2DHmqf+HXYqM/1BYGjsQWQRA9czCI', + 'ogF0nwuwbCDEBAWC0a2D+Inic01QZjaNBZObRVAW48E/yXi/BM5L8qSiNRwVFODpJu6EXk+MStytr05lDqgl+iyUl9NMqYq3SmBfwQwd4l8xXM8qK1Qcqrehw8+4DAVPotfY+0n7x4A5z4xZOBS2DFuNWSyjNvq6cVYGe/UA6maxTszjokvvJdWirnvRABZejLzwsL40phlIF1AnJFzAcTrDQZqz+afejiZm4RTDrXzfv8ESWtWnNbqYdVHB0W6ShOdDKlwM82a/y0nhKPFuEee758S2RimBKGN2Z1iqIZyAChqwt9992HGJHS7rw9u4Ftvd1xsZJIfv1tQjtrJ30q/h4PTLpSuVtsbxD29p2CmZ7Jw+FVaPX4A2j7TAO9nWvOs/UMN7aGZNYHFxbulaO63GYI+4BzAiBEcqyYIBXif51kGVnr/Jq16Hi5e5hOYiPff74Hgz0VrPo83On2bYuJ4O3iNMc0KyxMZgGKj5/2pm5F/QQld4', + 'iu7cqYO8Vmr/Xt5sbOiv45sWT4185PzsNqoBv0WT7f5awXoLCEnDGBiIJpMdwNcvHKU67CTmtnD1Q9QjgGcIE4Bf/3FIxoSmqh83Tbp2PWW1wttiNDmJJiM3kNCaqryE5Cw82Fhvs1CfX9f8/mgkqDJFSq6gIAZDk/MlJI7NyDStlmX9mgEDKog4IAGmE/7Cf8S7zqvgS6zt6YqJmKSgmRqmvtiNf4AqkTZntvt3RdUB144dCbKBTUskgGs2c0eON2O+jcLP7ZPtwKY/IVpaUcmXHpqBOH6uNWdNgMfBg2/JSYD3MBexUMc/oP6vy4/J0JHlATOeo0dOuidpBEf/LsdZQOlVVziTDdoUdLz/YR+nWMIDX6e2Y6o0fOAIkfKzc/uA3a8qXQlfuaponmP9KDSDL228O8SXWaJw/BvU0n0GXLyHI44OARPclTNZOoO0K4+3oSzz/QEaVgsmiYZ2vukdY+dhiUQepDq/V3q7c6KXtNJ8MSK6w4sVZOf9Qxl6eTdMjW5KqA==' + ], + [ + 'Alka5LG46gIRxnrEdlXXDwpmzcuZgnYErzRXfEgjjgw=', + 'ZJzuAwZ+rEZgOVv8nEBM76qNGtGlVCMJ', + 'sLDfsZ4zFRJ2rdiMot8/QBtb/cLLLDwbtyOSel5KcwigKyoPt2NWBT4a02kI/cqTPUJOOSQ7OuztRAQAiqP7ptcqw2TIKvaE3Tq19ZhdVt92VeEdclAnaTsik033k6D5s5FQgP/7b5WtV8nXcFMWVzmACUoYCfWR8vYtNKdeb6MfD5gTL2SSF7iLsU09oMlF8fqOF4LBsQ702Xlp2sdsR/KVsh2VdSZqL/KqqSXDppsYjVT9mrQstRgSq0FG0l8E4vMQNY/B+nzYQ188ZrVCs3RoYmtD99k8uR6t/Stsl2Dque6PP8H3wI2/XnL8hiX09d0M42FWkg2LssAnppbOqXYxE1eY2/IH0yNx25Tw9RdNPdWzzFC84hwpHIWGFh1M2l4L95m5/vQSRTKjACu5rx5uJX9TktQm48y3M4cGT0aFAn4EarFdVk+DZaK7fNXBKT0XBiA64aY2X+V0ZaRHQI9Oaz9KJ7tqD1bulaa98qJFx6eoHj92Bg==', + 'DORhipp4P2P//sXR2HNHY2uc6FbT64MJeNE7qPHjST/FE4fvHG+hjtR9kkwakSa3jNRaZ3W5cyciU+IO0qpMBpnxtG268/LZBcX2HtX4NiCxPcIwQ6IUCzahZQTq3gUkTg6A8O93GfW+iSCuJ09DgUci3VuQjzdT7Gfb2FWG5db035fPAsM8gz1coHoJtkVvDmiqT9azaj/55XnULY6ro9BK+2IdZCcpBdZ5PLPw/zvB2EhD2qBP50pDxT5htKuLJAIvpY2CMl5IQIpl8Av8bHNSfBOPNQ6Y7buzVA9dKmTVBYUjZ0Z00A8uu4wE+FIM4vTHysUA/btQ004GYuywu5KRtT+HwaRUstmjdkz54gDR2oN5XWGkXCRTPrrJ/oPm+lAjCN5ixA2gXeC+3m2fWRQm3GKCSgHB3CdTi6pRpfpJmpCrDahwRSRvOsxNiuNALPrCYRBNIFY+xTwWfvO7qqnSFThPMwOPeL/37nvCa6Jw4kZQhuqPypIW4Wc5X8lED4rAHdxk4yc=' + ], + [ + 'iCYFbDQCmDYlemENqKasrh4vYn24kwQa78BNBhuQHgk=', + '2oOPZNwx4G73s1SUzSLkBtwhanciC16q', + 'y7vQ0EIt6m2QivpAXf0nUgfaEW3zVVWjc1fGHJB/40+gEKya3fi0hbXo4XK4EiFQAZOck4slLdaZ3LkOGz+gu6dUdy/dfUhTZF/dqrSvV55DOkGKTw/L4UcaTWxOhasUWSKBARjj1V2E4NRk8N40PVRPmfznGpai4jgtjvYApLHVGTgXOzFci3VCbGa6ZsSaRhyy/vrqcziCZUJpDz8tSBGQfB/1L5RW02FbQKWrVZJFe2IbX5vGNjG4UKAhe/UM6f95Xrp4XKzLomaEtc9+Vk08Af/ImK42LAYp16JNMNwuSN3RghEOwi5EOwK0zoAjM1cHtWB2jZ8WnDtyalSqXoTT84IUPTJZ4tYX7LZLSyNp13M86CBHqF1VxiRa8u3H2aGtKj3BuxApy4ZoVvK9bZUeJ5Owgn1IUREL9jRXiVPPbBo6vdFMZoCahGu6XbX0wGNMMgngO8kvX6LDHwJeiHAyblXN2bP+q3HdxJgZi85+n8IBy/JTSBo=', + 'tkezCraOByv9LKDBSEyBziS5LVvdw2mxVlhYqfiE1CMzeQwFSiFLR4G9itp0WoXyhrEV0jmagkXPMMjOH+ZEwfLdzzmCYSbijgyEDBbCTiRncqEaZZHsu76HCtm16CH/wW7Wkzp9yyZBPltJ/JyTy1W90/e6VXvbg7Or1R90e7yk0GK8zyikzmFBk1ziLyzA/NMjLE4FsBQToGdJ+2W6Nzbl+sUAUa3IxVw5ZknBTJPWNsXUhx04tf6Hr9aEC8GQly/z3yqMB6fBPV4OGct0ga+lNo0J7wdhuVrx4DLHdhWqYEwXr+rfakZ0t6YWmBQfS1hg+PdyXJisLdrBJw5eagmHteelGrATW+kn8gR+rVsxhbHRDgXvyFtClWlBDMM6xm7lfWq9D9tT+XDaOOfGows9fY5yLOzefI/SRNmnNncZcVWIAt+FPqxg6cNl3s74cxKmBx8TcKiQCqko9WFc1rPAGLV503BkS2SK1lQbSoije84qOZFj64LY1ahbCxxulrT/N3QFFbdO' + ], + [ + 'gsqFkJUvZ+wJqB9PF1GvtU/l0CfDlBFFTO9apsfpC8A=', + 'N5WczlifYw8FVHPPQdrsrNfEPljWfd6d', + 'p7uPdzUdh+dS9m7fHeb1wrTTvFL7sLwoVjUu+0PKnjhbWd2Rer3LD7T9v+YIvwIfwnLiDFgZQYjuMyH0hSARE4FthIt93RVm2cPvmkpL/IbG7Aqmd7lrF/HX6sHT+kXqF8PbhKE2T68J50QD/tuiOC1XAoQQPaSz63Z/Y8isVw1Q3hW6RveM4gccT8Xt2yc3Hbt7S1sqQ9iBhjDkecYo7Q9hGL2F9aiJDt/MS8JjGiRNHVBcr3y7c8+Q8//bEII/PgvpwcwNpRGWet1DPfNepUteJ5coTbxXuJMLFBldfpL8NNR1e0qOV+C4LrgFLY2qeWwcZw68KN+ciwEyBhh3CH6HxW5ujkU7E013WT0CrA+IAx3S53aUq9OCAYgdteg3cOz6sDuWqYdOLNzaRXElgxCcVbpKjQjNJyXTaQqRoe/tMuoBR1Y4qIW6Apda4/COvRhP4Q1C7Qy9vpTDkAc/MQjWApzxX29cAI2197fnwLvZmOSyotMtEV5f', + 'gxhzvUFTnmBPrTYn9UIVZ0wkxJ/g++P1sbZLW9RB3l6HJwRMUA/6VwRy7pDqBA7X9F7uaQB7M8bOZZ133xsn1X4huWDWUN9zeWNU5u/xfrs5Z/q2644rlVG+6/dk9/QAa9rOIL2rGzdDPUmoJof6Z/WbK+QUkohHjRAXuOTH05bKC/uzlqvL7thssCHxP8c4T922bbL3z3hdondc59foMyES0Gh0OKQM6dziNfobTDHEY4uPGC1TIa9htg3yFgyRCk4j0GJ6uMwZFfmMGdlmhhWRLgvElF5wmvnqKotGzQYehzA9IvG/d+WcDLsjlkwIx7yWH6K8m6Q8wcIXgHnOnFIkHKfYR2IFh3i9JWrssYcz0nLt7oPEyVaBpnQfyWuBgVzqH5nqqBSxpXN0hhFWeKgMpyisnaj9FfFc3JdalmAaqDp8OBx2bGCU/UEk9Emj2Rethwgcg76D3nERGbeUMPdtdF+gnA0DWEh55Qyn/Fjdmeb8mT44PuqIENxFyczw+wtVHfAA6HxZ4g==' + ], + [ + 'KvRtr8w9sRVdDBRzkI3cRUD3cTiX4lin3SSfDcccmCc=', + '6RZgTI0e2Vus2xnatG3FjlWthMgPRWgf', + 'AHv+7wnWIyZws1tecxKR26HCa7ECe2H5iMn9GY7LHTIM/Q+fNlv+fDaSaxA7IXhmmt49D7A35s8kJL5xL6yEkDWXTOhMO9uqvCFG9ABqh51BZ1LANDaooxl73d6PnZ0nLSZ8zTBUDROzOltlDiVrIIGRHkNMHYmfXd4RTIgGY6uMIHiU3KqmPu90KLHZnWq39+p4gUVzZ6bz2JXFBBKrIG45XyzPxDueYJh+MWuem3Z8/OPrXr2XmWzBem9G1WjziKYv+F2AP0BukcgnXXzV6uymlGN8dY+dmUt6wKnFgdYqZuBgTyOGV0lpZZuumfYX09TRLAfn4WYnpOMWnkK3Jqr1FDQcNsukn9FffY1dAo27fkgxR3uRFyoCAyOx26OeV5W6I4e9E4r7AkcuaEZ1TMCYctk42tmirmx+WJC3exk+udHSJJTiUQRmgYlOt7vfVEdjlWYbVQkEx2vJopOKNLnmGSLUR3e9c88w3dS6b52YrBxii3543mlUGA==', + 'mx5igUjWvLZ/2BhhEmQPctOur61fVJLmHbVpxhnfjotsJuY9uA7rCO+pa4R0C7gQimI+Hqu+gNihFQfYpWRK5IwjNtgYYtsq46Kakvk5CgrGV6s9uSzAFSIlF025TuLJ72uTVxnOSbeLBMiI8M+pqlesUYUFubIB/w8PA+pRB0nXb84lQSXtc0PueV5uZRvwiJRbKnmScp6vghhKKxn9l6QF+06ahJrS1xI43UL+z1FqPfG9CLBlBvK4lDgCKus5CZQjawGMQgO9qhPT3VvG+uueoVoyfJdt/lnwfC9N57+/kiWL45DUe9wlGQrc3SjoZoWLznBJQ8cia/VGhvEnpzfg9ojCb+auRSOQ7f0xkPcD272ju50pM91WBphVUbydFGkBMu30LUcsGn0FZovkepA4wyxqazp4uG3Y6KjXEsENe88r/kyGl+nzFgTTq1SfYJZogLbq+N8hfIsn1Eek+1IRrCcoOePFQEGuzE55V45t4iRDxmNsmtR8dgEiUUgeb+hpzBWu/U+xcAM=' + ], + [ + 'mGy/Cw4AcOXwa9b+OaOyrQOAhvNZXZ/8hL74QoP9Mdw=', + 'dep4vj+o5HpP21uHiXqu79W47zPxWDsc', + 'nR5j45qnC0CE6nsItxfoYXxPbxo/G+1KmkZI6TIVAo0TiDkyZFJw/A+CT08ahgIG0bEOv2FR5ZpWYYljH9gUUIrn9Ew54uqeOLqaLTm9SPadLEe68wAU68GPd0r0lPdTI149xJLIGnhQe6ABGBB0OjHN3dkpf1tp5v0RfZ3l1oX1bkL5V/Py9ua2p79Xqra8TDigi3xZGQ2WL1YHrK226yQx/IDp0Z921qPzKPumqhVJfDoU258U5Ozy6j7iZJXFrvoeYlg4REnSYJ7IfUsR3oNL7EbfJMwVKfSNhkwWQVAJPOlxN1jpTcwBK7xL7oBcQk+qutmcQQfMKTjVeHR5D4ZjvFIe7OTnw0DQenk604ZJCabpVTIPB3iQEYT36ArW8Cu+USztUHcCRbvOIoMXitINRmlVGEwVKPTP2JtsRwQKysCnHh+vd8vERNtgW8TDY33MnCwh6ckAmSB+eaRXEh6imXSj/DNefsHEldEZr1P6pKKOx126TY517b4=', + 'bqzUxnPhE16d8AypDEtZCf4y+yejzTClohoZmelZDYWv3wadSEJ9zUKZWdgVVit6WYsxXdJLpx21m00woW2yY5i68xhUgopaZ+fEI4aZ9o4X4eBDqhWdjEhImv4kVxpliiQP6gtqRQvVx9xjZmjyJYRKZ0ekcAccjnFYXB4HYdC9v1K6a+usaFci7lN0iBsd7sqBODhrAbfBz/AtVeFYmYAv4XlejRxrsfAshBdZS/1MF0+ROolPGusmVS0cMl1h5rVFBDlUlE0XBG+6g7fEpef40eKwWo4/N6zwtD36tGgLsHTJdLdELkQn1BFs06XP0uT7KTIdnxj8JHRAZi7FmV9P4x2Fv0fayBG3jMhYRmNll1rvs354JvbovMswCT6/mHWc2qFmAf7JPi+hgJRFugM0MNooyc5ONK+VVsEXXPtKjnyinVsBjfNdYilK7jJmh1eK2UsC5Z6eoYOkCfuiFRSH+PpAZ48iAfqaXTjFksPAYgOFtDyZcfu1X0W6OopzfTzeQaEZYHYcgemf' + ], + [ + 'inscVRpd5Mad2SE5AE6+YHoTovIl1v7fKQjHfZjVnRU=', + 'FpeYeSHa4y52jTJNoAz0NqzT8/mgTTjO', + 'yagp68jLpFcu414zLVhqvxrsrYAOWtMDCyNU4ncd3KX3YDIrk6HsYxer27fanIktTy3A9KhpzKmY3TtYs+6zY6klUUpI00B6FMjt+GHVkRIGwy2KIz9MvJkyRUx096dp5IlbWj8QIr9pwGpLiL5q/2ALlbX9PCdO2h3CXBTt3FMFOdUvTB0o97wtK65qH2EWmS5JZN0hAdFVmeADpGhXFYE521gfgR5i1N1hbub1eYJguwCsnEzDkeoE8Cy/WtA1tnFVZP7qqp9ipP+W+WzWvq6Y404+6HF67EH/q8Rs5kuMT8AdK1ZH1AssLP3ZVPRPmn1E3SzweC3bO/2dwxbxkT9g6DdIV6U5Jk34Rs0R86jHQob3y62rQHr9iUUppVdDuYBDSr2DFH3ODeD40fnKp33xKgpxaIVKEh5F3tH6sDIQdR00LH7Qkdl1eINIXLKn7aKy0lZSwQbXgQawwJsP2OGtA6haLlpzlB4VhDGVZ7M2uwFIdGl+/Wvmu7+X', + 'INO6ctG+A5UFW/QwCu2s4rK8Vta+52Nz50tn6sx5kNnESWNinfzD8KRhcbD521DuZ6X1Ie5DJXXXME5oiXxiV35yN3qFV0x2ksYbQXkoFpnYHxoK4mQhnBtseQPJrgDzL1HpR4MJ77sGp+4ZVe4vZQqgqaysPjB/Rh1y8NZhZIMMYXh6NA8Ezr+Z7OmLGy8dYW1RJ+242ujBImLa9AaB2U4z+soEtJL75T0yWkg6LEtB0AdUtGXoSloiVrwQEQheN+BTfdba0ZwvvjZFFf9ZoEN9LZ98+NkhUoN3uABpDq2Hc+U/RCWRCgXEJ4SfHsPnAQz8h8nYbzcB3hcXBYUwql4auKUcfZxRRpitQIq1ylCL1IJo3kgffpt/E4J9NpmvwT/vE1BqXi92aojJ8YGSd7X+OWD8ENp3TCq/d3ho0x/yxA51w8rbE00GUsXthv0GCyV++8kILr39QKc6Fyiaa5OqWsUi2/ETlEDy6/rPWDqJ94NwSHoclowAmtP8qPR3wbM0JtXr0Ofh3Xzf0Q==' + ], + [ + 'Y7jvIHa1jZ41wk0ZjkL83+nKm1GpzeJvDkOm0P+fH4E=', + 'ic4mdng8S6tHltywniJyH1UWeJPHnxlW', + 'fu2BSvAVy8w89bHMUuWQPMoTioZA/e6y/RH9VOKRUpK+lddGt7EaFzhx4hZM6GwmRIRVCEr3biq0kkz5WiituX5GFjes6dkbGjUx9sj5P7U6H810d3+rc00RgTLpt9TgqEDD6w2zqXNiw7slVm4UnSLSWVnEY8kDqoE4ez3DrmR5y9uCt6aokMsLIrpOP38XC910RL0sq0Pg5UuuKDr3ivH1LehxShi3iP0yAPw3x0948gS44wnzkqyk9q/FO5wazJRFwbtmNdo1m7sr8Kx6MOKC8q244pe099YwmvJI2wi/5UbqcCJXzIcV4xJb2dmrIEdHZ9wVkXA+CgZ1xhnegFtjVYcJjsvTC0neuhdw50RHy1b6Hgz1uJ39/zh1uuUS7iwDTrvmvd1im9wBsZxrsdqJ9aIPdO6cYncmXxn/RHXYLVfNN7MjUxtgLGZqyEtzFQo4VhnnCQ2dARW9buy9LNU23e8HYJNFP3eKwqRMLys81aKyYVsoLnEDP1TRrw==', + 'yZoieBMbbIlmHWSBPHa8aS7vE11NuQ3Geg1zlPE34U2Z+r4Xudd6yXn5+Z+K73M8igSXDuBq5kz0FEkBw4q24TDS/sWxbHowutn7eu+Mrg0/JblFHcjiaEGCJtKbjE2Aewuiaj7oZiD5PC2SU9g2tBB9n8XjBdZCcTo0j+Cp+SeZ0DwZF8h21ZMvqMbvCE8EUPY6FbMeTa+kAs4nhbyNUQ5QVe46OmjkqERU5rO+QM0egG8UWrJtE/MjTIsgjHavmUt8pY27hpM1DCBQpdPUX3M3wctnHr6usPb+kZ961F9RHlchVmNLIZsBJowNxTj14V9oDYScwmbtgrF0DSbj5Bzldaamy1tGy/wTxtyS+dl+saa7y4IyjKhjgusXpao4cEEMVPLdP5nupte4hNjgg3Y8qeJOVznMQ9LmWOgpC3X9MJoXJOGfHRJOU7O+OBLtjRIj5gMsu9Wer6as29htuf/2BogwPplaW99IR3hn9RWCHaExZQzCNFAWP/iFw0DZptUsZ6ruTBfiCXhmk3A=' + ], + [ + 'rXb6VObLGlusmbBH4oFJ5h7chLX8Aq1FEOs707HYye0=', + 'yZ2xGv+3QwbnQdVBUWko1xnOSPV8IdSG', + 'ZReyE1eZbHRgK13Wtt5auTlKPedPGCKgLI6yH/GWmU+EmqfAKrnA61G4dsDdn31BhX0xUKM3oe0Z+0d0Lb9LyCOmTFyV9SXPDfvpGda4b4u9Tt8z035XuIdZxmVWswyrKlrNstARG2gWci+Y9N3gHFQ3NqKD/xW0vri55LIRe2ayskR1+R9nqm3RVKIlYk5zPy1QVL/rkt2VRjlgXuPbTWcp/lTkKYpDZOs3LDVUJTdVaa0BcLEQXxe5tqDcMetjpF3m4O04Q2DugBCZrO9D80iMUbwrS3IYrUiRVsfzazvuVeXWCWO9lpLuwhbw6UEZLF60vctnngnhBt0L9pWkrBWlQSOMhf3FQUwPQuMtqUh2UP+tB9ipqa6y9r5a9FiZBJ5ZA7nW7pPEhhcn20H0p0zluwuI4G2qko5036nu9AdRupZ8zPwLCQiA1CSjrulPpi+Jr7MAy5EMgAEqz7ceVbl/ac3ooA04CFhuox8wA+k0gI0X6VujF0WCSE+1vZQ=', + 'Uosvm2IY/3QRGKsc55NZ9H8bez3DDJ6Aho8zJTNfa9GfcZD83JFbvk6//GsmtGPBf+N0dY2l90aW9nMx9G8r9zlK+Msre4Ag9QknvX6yFROtL/puRK16H8uwKy6R0fDxRPgWAzURebn2QEyy7brLbwlwl772cFIZazFXSRYPTwiVHVaZficvd2bxNGhArN5Gjz4S8rRqtL5JGAyibfprnvofagkuLQygbHo4Yfv20v1s+o5AKHserc1geHObPuf9dhETU1WY7gem1tkZ331p1HSPeOr9ga8Z+0lh3IXxUyU64UwHdWrCcmxj9Xi59V3S+dl/DB/QHdL8BZ9PqQBXeSu7VEy7SrgjCyCyYYw4o4kIgXeln+OF3DXY6DS/9vsTyf8fSSB7DqHjZiGmxdnESIs62yy5E1DYx0wbwNPjybFyih1eVhLhKPQHmU5glvZlsVsAC/lnfcclJndZ0tkA/3OKzH2DI9QnxioRVy8t8k3gMDY8hU9WwVuaciTQ5dMYjyPVF/y/ce8Ro61wQsGQ' + ], + [ + 'B4y0IXm2Y2yvZTX87lYYKqOdpoRzzpU74YxqXyHmN8k=', + '96739fIgvIu9tWfImaRxJyykoGF7+hP4', + 'NllAId8mORmTp5raotS5qSvux4EjGK0Sqd9HCbdjnPbBCKj0QlagRERl8zjm/TUSOYAPxv/GrJ2c96IyPJwLfAMKAE8ZunX+JKq+BVBhshGlJSCW6sMZPIAZqqbwi7jSywcGWsjzaCSt03hB/zlyhYQ15ZPNnPkY1Gi4iLhjcCjpEXPAhikE8joC7o7zvZwHhC2EHT2Xzd+BSOqWH/mHvfloLCLK/4H4V+xVONZ87NL5BtDp2eA8BOHIodI5u8Lsj8QfV7J8OeagDF6LCgR8D856Z9Xn+LMQFYQgAzrzDY2M26s9+JP2bEmbEcow+idv16vZ+nyiKrFfqWW+SfEVV8yKmpWBAzkXnvSEQAEviyLcvaxOfwNbZy8bVM0XNfL0DElNJN3/q4+ePAfXMP6p1IHgr5Hs4tVAXDkVCF3aGErAvKA1QNJ89JiPVtNEhiZ8CXvAas3mPOfaM5cbA3ExfLBhZPSGdTjodr5kX9U7PMVjoCE2GrLf5eoS5LPgtkIe', + 'WBEV70/U6LBXIAIze+PYfJCIKZ58fqdGa/RLWXedjemuNuA38Dy2ok3hya2Md9k+z/alC3TZCUFgs5NW9LcYfUT2Lq1VDuQQf3Y8fQ5eWSe0AE6yMu1+XpOzQjMM/EsyeCmWg2Nd5fwSY4/Jc6P4E6VIIZmrqJ5jsAu2TVFk7bL10JMHn+POvtYfmg+983I69AZd3weqxuN1FLftjzkrUQu2H6luIYwbgypg/ZHlnUUmzRyU1G/nQ8wekIlEj3RbXdLMF8Aub9r1oWCcUR1TrFePbZc2jzjCmWCUK/GWFRUUkXqF2HREmt9dKnNCJlDQbi/GkohcnVoEyEdKOA1/s7BRHJNpxPX0f88Y7e28LTJ16fPVzcVgwEsCF8m6Zw3si/IhOVJ39UM7aBXzod0GGV1noH9hLeHq/qoPEMm0tjaxi+ZcGod1vIUTaUFYlBqf3Q1vbCXaLXEpzmeNjGUX7mPpVNi8k4NyXM3Y86kJxNgqxyAn36tdeU66QkTviOLtdOW8Ml7iDGv0lr2t6cGYCg==' + ], + [ + 'lRvZt4c9Cx8yImrOgPAMCoLeIErUQjn4aw0l0GVQxf8=', + 'GSkH72zKOqQXRoEzSNP3LSSiVbnPJLFG', + 'rEUKn5YeFROMs4T4PovTcVdisD8nxXbvDszjEHW8YChkmcwko6hFgGwsgqAYgB+QRgR/Vz9asQj8wz/E9fAtCix693+fLDrTBW1sJ014ig+8ocEWyha2S11JNx1ZeUC3Qenpla59dc1nBQYkwD6a4czJBDn+C98vuHR49v/XuC+oH/7caCsgR11Fr3bMTh/5YUgLLBGVNfHOFYYyCBIV1HGgobroBh7SHO33Sf1AgktwtM0UnlxF5PN+RcSjbZnjXRF8d4K25O1z5p7irQs7klaUtTz+944xwZwt9luK0Ie2fyYo0Ktv70CvWqYfTwzmWk+02gZ88AfDzuPiU6IZdEJIsB+gSHbPrfXz1PDQ6zHEjjInuaAN0hi0y9zqQenxyer30NC8BnURAWm13mo5bPDAIT/ZymCRr5gbt9kDUdJHTCRZ9B3zwxy/CnUEQXg9tbQvSnWIfQ2Se+yUen4eaT51zsGL/c3apq+UEN/NNSzL+YqivvL+SbemEnTsvxhtqQ==', + 'dGdJlU1hcfP/+NoakHGwrS7urt9QQ6nGcgTApTBy92m08ft0+1IysrYZ9SRDQZuJLTktHwLyHOiOUSxZFWEQiRUWMRd2eOXY1uwaSr+OtlfQw4nVkdt4k+KDpbsxQ+LYXoaEIm5ZurvzuxnAfDpze23UrIQFIMRgx7WR971y198YMsMV+2sEJW5pRzKJX3NipcQfyHxYaE9ptMx7wnLSle34HZt0Hg5hJh+xjqzPeoxHANblAk7JxoplmZGnLmRRyXJ4PQ7FVIiRUtjTonoGLYHSjzodIxttY9h+qzUQ+T3G2+x2tArM1T3s8VKTDo1mq7PvqQY+fu6RO8rLMn9RyzVvLga91skFjvvfkoroEwNrOP2kb40xzmQJ8o+gIDiKRZvSX5lGEBcClyIvz7Tjd/8Md8sgdyEs4WpurbjotQx+/wR0uooB8DjvrcOLsNGCkkEzAzNOFKWSl9MhuixGggn1AhNHz+dlc7bkZcClbGNbmR9QA4oM0pjpE6C+bWoqn7OVcPn8nu/99HiAO7yq7aQ=' + ], + [ + 'ylqVZh801Vz4VOsp/A8eST5o2Pu16rIzymWC6C5oFUM=', + '1y4KQ1Ky33i9AEI0TLV2GXbfTe79izHe', + 'ePquzHzfOU2d7e9aI+ZmLJci0SCTIzD9e6A0h3zGNAeXhilMmqR4K1m36Hdld//5i7YfIqIc6NxFvYMj5WFSvvLJ8355rbCiZexR2dahLGY5gdI3AnMRc2T/TvBw+z4ragFiFiRfr/FZs3LVUuN9TEr2GfeHfjZy86jGoGjJVst+c5WCTcNCuZ6yds6N3fJ6o34W0ZYarWQbQkSA7zhzJP+8ko/YaIyd/K8eapFEXYUObznhjBfzBwSWHTS4+ijCN24sEYXN5mQBXMmp2oUy+HqrWRhDOS5++YrwIi+b+hZ7r+eYGGSF2DCR+We8svs4PVwo72pNGOIQTp8cFtfJxghxEtT1rrCxuC7NdOlwzEm60YVNtbV8WGSVDJ52ger25UOEtTRFbkf4FdkwzVEWogbouL+Vi5iE55mnQOVLCH2WcPOPKGL5VAuH/jyuEGbGFw0MPOTC75NtT6dlm8P9Bv7NEtvNqilJexpj2Yj1/FiuRYGKa8Z/Ewn3JvDPkaCFskM=', + 'm9Xb6wHMZItgDRdLDa5kjSzIx02oA3W/IrFRAa9qCYKYKc7Y5yTOT2zWmxXQVPn5phQnreyMSZOoCL7y6yeXTih6NgVjJbMtWCXqKHpjN+NRB26dzEx1DqnGZcWpR0YFfQ8T4szybQTjWd4U8HZMQyPbh8Ke1ppxiWsZmC7hpDoX1csK/P4jWiGhAtCQXE6ycxa3STRNEpcIuRjrRgHysxaH66pL8Aj6yg0LDRYh6gDByKP7vMW/M3YKZ6QPuPeqaYRbE/jWV4vBW/xZK/2GBItFi87JPjhs+0WwKBGV8ytADUYhtKtGjw0ERqMnWdxr76OAJHSOnGFPk+iUNOZHeEb9whsmIgVnRJzIO3ZMGtG+f1EZOvH/47XlojUcMrYBCHjMP8LcVxrUGmOvtubQvQlbQrqx4+wkXFx7POtjkZmOeEruWMxi2NoWYhRSR/hTDaSIhNwINfL4S/7MSJLnutgMpOSgY8ba0JTUDqzc5egmaFjv91bp8WdDaRZ/Ss33KeUIM7XF9A1XQtrmyHNDhkGa' + ], + [ + 'VAfXCS7OBk3MLwI70gi2qfEaYE6DhtN0GVA3/6MHN3w=', + 'PTe9aTAlewrV7b3tlr8dEXvZtauxvwCN', + 's2cQF1l2BX5wDzl2RQce8rr4oIik5n1Fk+zxhqGgX6g7tp6lJJHzaxpdPEh3iZ5ZX8TlhtdqBxYXD4V1P5A0WZE7RCNTWP4Qgn8qSnkl6lZVMpOHc6kQ+ifoH4YX4MDkkRZK/jL3RBitdMh25XvjLDSs3Bjkna8ZxBLPxMa3kZ6TOBWM6xrfc+J1y62V75VvFBITHw9PilLODjCi2tuxrEPsrIph0hv0Ty8ePKfK3owZfPFrowi3yu6EK6kuSGilE13+FYcaA8kFG1CpQPrZrSyNdOuCnU1ZtlLLig8ELPth0AbplKWJwg7US40JWnBP3p7ZqTUcxV6m1Du30s9E+gJXbgGI8TG1B0sJ5maD67HPKK0G15vnynIs41hR274HAYHUyjfKtVi1fKCWZ/tKCsqOAkiceh3fy6YqiQRAQYkt3L+0OERPdzBCfmMqwGHQlXgntEL8PWGzXxNOJyB+zBcnn9DnXE0rxxSpJT7FJ8qK3GwLhK3ox/SnmTfN57r5BxZm', + 'Im9npSdti8FzYijbFYqLr2+IcMT+EdmwVE+TD2RCB+dCT6sdXcAyyorCiO9jO8Vd4khPhzzWeI8QuGYKBqzVCx2Wsfd9Esh1IvUYcn2P4Bp1x4DOnd1Kj5+kwcrqyq0WTEUilf05aksXctco9I8791lNbywP7ulkaJysZ2VnkE3aM757H2jBN5bI20YoefVNLur+nDW6TOYAeZfIHxVFUNuEPNKuHG/aKmfon/oHnJqjBThyyy7/uwIqERWsD6Nv8h9weIvGZPciWPjNi8TlXpwekxNqH4x3eAFz/wVYLakDInxm/cGOk11kBhFoIbLoEffbgPGkem+JXo3y4NDRapxGFgaEKsjVl9V7mVx8fP6o7bKGGyoiqxRa5BO98zdWeOjkMOgwzVUaryd2gUJG5O6d9o+GfQpaT2Xo/IpsEKjQRanc4u3WjRsji+eIy7HvTeWJBNA16lmQ5fFOiERp8lPwZIMk99Geloj6CaYK1SgqtrsH16QpY+TJ6xAbhBHJzZpe3L4U22PLgkUGtnuoJv/DBw==' + ], + [ + 'xO9py4YMBTrG3Ox6ssM0OZ2xI5EwxhI8L7ZQZg6cs3s=', + 'JTYFMVFQKZOZsxs5hzVCBB9H7STOu7nh', + 'ZW3Nm8YW56aCwz9YqjQ/NZQtCzegQGDJPzngP+wSBWr/vp7C6+xl9AS0jOoaoZOnEjZ3pEX93vdYa72yc2padvfFrL8T0xKqr/74naFYiCA9i1R78wdlMMRju6TR/9sPdaYnJKxBO3uBcx7vY+0hFHyvdOpHYu/uI3CsKxR9Y4PpU3wFh6o7dFl0sCcS8r79xboLD3/KkuBnFr7MkqTS8RmGi/8OU/HErARw+vciB/jwhmFhZczbNcnZekeIG4u1wGZK3mbIpIYjr6+zFl1ol03aNbf24Wni78yPeCL0NMxit67StqGp0VxDY0qmdv/LjoJONvwb6ZoAamffgFmVffn8SZQQijKFlxxNgU4JBQwdjEj3qdGzY83WjY/Uj1zOo3TBNcixEVZWi2Hu1doca5eVUD9/5lFZFlUrpuRQcjrA5OE4CIxlv2O1Reqo/2t3F2VpTRZ8TWQCTe6pcwg2jHrCpIwyJpNS2XrN2a60i24v+34xQWN3n4cBYvad71tiIo7gcg==', + 'G2CkMkUHzCy7qitbjJO5+qn8aVheuI3/pYRlx3wKCbnsTQX8zCAv9mSdlw9U6n4TTa7yTaJSPzgnrYoRhqov+4tXVHAk/hGWq2HQVqJxtMzX7hCaThsSqtP1sHPCG4xRZxi896L5hOzprVWlSLiV4eZKOucLBWKsurTeITVURfMowZSzqVeM//MMlQreWqdOQh2tY+JSPDHl0ETz7XpgnNnGO7NbewZfvEmRLl4kbdfhwAFXdFkIzr3/WF5egeq2fCAr93r7WT+wkMPAIhHLS+r0jnj+I5lBtgFH0DiJ9dXcTgkoh3bS5HjtA47Vd/hITfIiEqL8NuiJrw99l80WFtIXtahsV73h18f6jGI9JzGGr/kOEtyGCD2bm1mvibkf0PnvigA/dAKjvtPpOwL9vDdXrNszZhOKoT9zk1xDnKIgfjUsol0BajHeEwswA+JnFmAVeDWcnkLgv9OX2vQRbRk2t+w6jpj4KB6pAygXyrqkS382mkdCIl9ZEDrLddtckdwyzf/6GakGLBniFQx5AX566OI=' + ], + [ + 'O0Uuvu8uWLdBo3/lFv5NYPfOSwqM+kbbPMJr3bL5Qus=', + 'hzaccqFmPJJH0yAmw3jkaw9exD1DQF6T', + 'LjW6GgZbKN/5dt0cLjFYFhqXKigx808z9XcZ/l/DYOgawn8xvhIqtNyHm5ATe3duaQy2BRnxH4WwD507TfHiVlmTW4vrIiOCIs2aQwWVUXI157kxCSwmXfodVWTS4zBS2f41ueDffOoB5etvF52CX6VhrXziPNuDnL52Z4kiJRaDogIIjiA5N1KI2RX01z1Yy4Ckk/5ylFUyn6odXFFLFR5w6KTA4gLtNu4Z1teWNuQbvCX7XiP0tublzZ2nftalfJ76MEfqpyauEUlHI5clIT5TRhuvP8OB4LKzTGw8mO3Gx7Uf0R6T7vp+vPUSoGiAzBVtCCn1ChD8L5SHyqqZmPyhoJHDac1E0a4dgRceI7DJsmt1+fySFbCQU5AW6/x54NHnRo2YxzEqVTQf3RSqw2Xtgq4P6XJGELck6xGKd6JBMeksfSwwYtNLCOsdIt0ygOjJ0M6L8er1hL4kl2BBCw9pbVYpCjQgNph7avGm3r3IT7FJlTqmN8gj/hK6BdPXvujKCn0=', + 'g1n5l6l5Y1djJ1zkyST2nZ37S7kNYY/kydZogIRXVeMBnMiRXX+pgUVYvZQUEtrmwPWNFqkEYKSj3Y8VL+6tvMcYfsZ5DXl/qUZ/57iQRuAUUsrJBXdGyzmIxPjW9wbocLtrJHlBI8QViu7oDQEDFzXsoCCSQtRf1H0xRAWwBhEKI1lVnDTYvFUpmIzc03LCo2kWMbV/LlWig0dVivOHPpmXNCk97lRTKdlbxAhQhT5raGK/gaTH1fkrNggD8Y+r/zy9U7Tk1N1wFjbT8LBDHmfuy7FroccNxjweawMIPsjVweiBJG+LPKTbKtiP2N7MyLOLcBu+LAfafT6hSYaBpsBZz+VCvvzDXTISL4mTOs6LNNyzjpKtidzEqFCA7CFYpioVHt9cD5NS+qkbVOPVjb2QzqZyzMGO0NffvgWXpi3GcaaTcfEtbXqDlIOYycZTZUE1c6LdanMdXmhfHJ8FAFYbB9l2v1lPcmtua4PxmSxnWZQgwuiPYvy50ww7X5g80tj2g3QsGxhqzorpGGpP086J8DJm' + ], + [ + '2hD2WYGxtnQ8h/4e1ctqKWbgayRsGJPesDiFuzt7vEc=', + 'mBLCcMHad/EJo7BCIEWIH3wniMmM6fy3', + 'cdMvADOQhu+tvEsE/Y0Q5ujCFkKL5emhiUv9o3X+3HPEYIy9UkZJ/sb1AWHgWfmWfroKNEDI1DbH+97bPJw8sXIS52qQMUZedLVGsxIWkLwBudeJHWrJEMfzA62myJ+re4NsfDCyMnlgV4Lk9Ux+X+ZjqzSTN3uNY0yEZQ+drLXPwEMfjOOd+I2Kusivx90OqYaWy4XZ23dmmzIEa2UbRA5Tlu7+7snCLR/tC/YGcV/gDzLU5lIXgtY5L7SWkVOjKCZPkyWNdiFgUuT8u4LkD20ly/hU2+ev7pNN+SYX/TuuetYBthaNzQ+tPhVYX/MuL97qczLyqNaNEFzYfE94fHYHhfnAlkdAaANluCwMK0MhJUbMns1KK6N8GApKgGvB6JZxMg8ThAlOdiz5JAsTk4f1XJZcKKhYINSneykAGFPSq9mi0Qed2cva0Jy2O4eycrNdfjf+SgGj4WtgiBPJ41k2Vcja83D3vML77dm2dC9IsbVE3jJOK2PFbOBKCUw35pAHXFYb', + '7eq1c88HSDueVIR4ZZgMeCICdE49eCQb0qSaioIwscOtbnGFa/ukHdPwQcgYyG6wULQHKKG7MkltplhRxqrUlVNCKkQYJr3R2tpmSB3gzacByAMOM02Qeaftyyq6Uy0FWNUAN6noveYUoxoTf4G3lEMhz06xacaXctUxz3FC904CuFjcz1aHLTMdiETE9cToqRBHCCzYfBw2QtMljXcv1+rbKFrURK09ujTO/XX4U0bZPCQw5BowtGyq8GOTFcUeYs+BAE4WgWONu6yE9+SNe6LYbFVGvuu2qKCBY6J1f8kr6xRwxbASTFh0+iJBiErSTZSVOa/cNP3PZC1jHpqia87te+X+WsRmPVdTOdU0VwNen8j318Ke/Qo8L1gPztr2gRIvQdWX2O6824Vm9BTj+F4bvVNCjkryS493AZfcCCt59RXDoZvVIPt/hYb3G2/rDgxtMn7F9BFoQainYrpXtRe8P+BpsoWf7mJu8QkUUs++MFiO8mH+h1dvc1buu6Pf7b7TlUE2olT22BPwq58e5HAGFtyerQ==' + ], + [ + 'XieA8zSzVpejWTdwp1RlNj4qWRk7D6R1o8Cs75VGOJ0=', + 'c+d0130nxNP1D7t3xHg+DLojEhOA1QKx', + '5WyxPZIbfXJz0N//FfELO7DWFxMQtVkR/XN6FauX74wnmQlUNjsdKwavpc0Rs0gHK8nwJcGHYRShD3ItvtWhvww97NNIlLl1Yii6uAL2nN11RHWi4uUzyip+48oXqsmVXUqKqTmISvqePMz2biNGW2SNE1/UQUBAe5LtbQnJjsJRcPGDS/TBZEONg7Ti6TRPpPU+sAKjNAzBCKeC+8jR77vFxVta6a0SECyyw039hnUkMaasy9CdZjfgis2t6md3sc1mdGEt1rDHMoNk9CeUsqtXc03f/ET3GWawBsEplIz3VjWlHZhJtHGUeAdoYz4oYjEAbwmaAiLeGI1kV94y+XON4Qj5CC0rIOhstlNumDWpv5eAIwZTqmzzPNirkA1ywdbvjQkg2ZedGtzFFVMGtvbmi8IGXlJybfJWN9tIipGVzRRTFy6S80q2ycJRnFNJKvaQcAkSRDd25yx7s4hSddtvVUJ89CPxA2FPh5CIcxnsOq85vuQ7BVQXGeIrwyrT/uJVDi8QVw==', + 'qy8GBkclntzt+OE+MHG9+vP+oc/3UEZjrITwUGbo1g4QNwAqU5YL838WI35JgE/PelJNMgvQkLP2WNtGo0nDcIA4vtsII96ZP4ORyF518CPtbRwcF6I69fKIgxF6kahYGaHwyOli3dK0IobjLqALKxtC8NQpbcHoF4L5L2aNou45SK4JuQe/FmeTBqrILXbjsp05/mGtw8L73d8xCbwVabNwpu08U0IyfPrXlCSz/9/N71gqiTkDn6ORopwAvdm6H8NMux4jRFYocH6k7BC+gPB3sHiwfTht0TvtB9ihgK2mBfGZAMPNmJYnApEzLnak3bwXf0uR7wxzFxl0vyakqaOYTq3GY/UETLGsm3GyMh9RzJOVRekpCotFvoM/5F6Cp3gayHPb7ITMh1O4HXD579EcMnMig4tDmI5LlSTmkS/whpj+o6liR0cIW1h6C4rfbo2qJ155PWKZFKU8bxVh5i2bwzH5C6+1lMKCRzp25YO+3huD50ALb9YXSaX0/ergJfN/p1dGeBVQMc+nhmibJ2D2njriJp4=' + ], + [ + 'g1r/LF7cVYZxC6fjZkgSaryMxY9iZYJaXF93pg9PKiY=', + 'iQIi2E/l/wVpDH9wZHRtlikpB8kzqAy8', + 'lCSOBu7A2DMUQGWcf5bAAuIOj7rsnsGCvJnpsGCmDFU/4WigOXVP/KULr77urpDzxJ4+SL6iTcZO5C3RI0v5+IgaQe5ONAUacdAHdmmBEiOa9kDYi0RtmJwIJLy66laQDWxieBuEQnZFdy2vNLs+5dtp/GFEfHH3HxS2BVzsniFVe2FB773Eo2lYR6Pn7QARP4TKQ6WeU6MCYlKaBOfvpMeQj9CymV4EnFOGW8qbs0ky5x/Jzn2hNVNOmmt5T7B+0MjfF96nYF8ZH40XL/wi+RvXXj5/dm1qQx2CpT3mORg0tDjWMkJ7lS5d6oBf2jXV1x1N7gmF56vn4OZLDNd4ynRmK3pOgil34YQIi6JPTHnLM6trLB4rYzY7EZF2QYCYI9E+wcPto7TVzH9+8rYHuIH0UhvZTuNr9DXhJa0nlguaEVkW+H/a5EvPTyWoTin5t40BTrJmbaDGvPrLk/KDtcOg/LLlhLXtlG4DYZOwFMgB4Sqk24xq80RcYF0ZIoTNU4MCXcZs5cY=', + 'nSzCoWqUP3HEUV19uy4/wJpci3N/rbBhXSlG9tm4W/siDbPzyLIQouyLmJF/zv8uecM/YbJNQLAcHT64aItQ9N8AAMCyZ23qGqDcmyLwYVI61witxG57ZLWrKgiT0pKONmv8TwWuzE17prCaOgIqh/6Nu5g5YAWioTgiUMuH+JsPomT2A1Ar7aYJG7LF85ysJx6zA7HIRDIcDt/T/HJPvDsKyyOSzaAisfBuxDtwmG4zzUSMqCmJqdcw56IBH7dJTd1vXFXzDlKIsqiyymmnuh5a+tEZjrghgWGDESCJjLFsQ2+EmFY3E1Y53+t6opcSuRbc8j1Mq1HQ2GyEP2B0IA1NFCQXaFgjETsQKGA10rgLCQiE4shNPjBcBqhWNK+N1ncly95TSCX/pT3RyeXVdHj5Gt/fExnMNxN0OrM1LmUaoceQ/97yDQQq7/MieJsl7xz6bJO1+lgkIWzF8uZJdo9EZQMBVOhacU45bFDeLGEp19Lrly2bD72FxwsODGNYaecsC98Yk/CmkwZRaQEQwaG7hOrQoalh' + ], + [ + 'CpYJzd6sUEFexpBETr/YoXD6d4yWiWPRJ2e4HtU2Jyg=', + 'uDGeFRNo1C/pO3cOBczHhwqdPnuq7BwH', + 'WiVjvYOj/wxHfT+qSHxMBWujsg2rhqWIhZgDR+NLuQp4p5N+v2E0BmDuo0AmlPbzJaW3xWb0iPw8osheNqnUMHUjlH4iz5MhVw3fmO3zmVss2B7SXMBtKd4D18g4Q9dw3k26wPMsNwjawfpj3amnAa+NVPDc0VqasJgOVflGkDkm8GZecvKu5LVvtBDUCHG59n/WQ3HAW/XZ/u9gZGUc9Z/uDfzkIjuyVT8cUe2qJoDwimo3NHJIufwLdNMtBDlj1Aqc/3O0ZzBxaqlInl/F8rTSh2x8a4gKrC/EmbMETbapl769NI/TGCobwJaa9VOicRMTaCmkwXKPxCyfYcQ5+D3TrMQktZhKSVg1udnQmPVK1oh7PO+tx2sF51ze/R1QXmwdceAgqbeG4mgfFI31iBYU7iW8u5ufF0imzNPXFPiUDw4RiAqMC5cJK13eCpS1EKExyYZDGLK7HxZYK2QMfdMtWPcgi81c875LPzw3EKlugyETxcdrlWNGvrEA8nTB7fhXDtJ/c5t4', + 'Yj/OYkwS/Lnj5AMdxiHjE/Uu95bgbs2xCCAm8Na9EJHJag+wQuOnXM+lq/AjBxEy91+c1UY0CxTMfd5tILhmZaS8/PgUgEMCrFxDSQZv7uRo9P5G2g+5ZH+sasuYBlFNvBBIAUGezS+l39/dzxkjX4Q8402ksmmsTB4DejesN3/qaGKIvLNbPVNLjoBZAXddgkUMnmB641QpxW48WLFo4/WftqqptcQgtwLVXxvdzbrdQ3ha1x9Ri8ZDEqndJpczbFW7ZEhmjMIyVYkBXQ5z2LbAvb1JA2d5KrJGREEezXJnMZngkg1i2KfvpyDxdWWoCJP1tYJ3/dTAJxhK5eYylMeZzDLFIBq7MEbEl87V9Ki/IqpBqgJ3iPIBUZBNjzCTRk1KeWX0AqucfzO452w9R7UwkmntP92z11vB+GUkK+dcQg/qJvycWcAVkPPMYURx+BHpSDn5eprZgMPCvoerW2CmwXNNz0GRmwgZ6dMm/wVtKwTDhePh73de6xPOg9plgHqcQjgtrnn6OaWiKH+48pss9vPfENhoXw==' + ], + [ + 'sZvY7DAFZwhX/3X/SfG1couHxkqknPqN4vUmQgeaMfI=', + 'WwG2W5ntEGO+gx8NVD1VTZkcdB4LjFbe', + 'EFL8T/d9kK856y7BYTNZo5YpAazasP7zN0eJKU6k3Q4sVI3vc1nofNnAHAxe9p4yUwLrp/TJ7jMAxRJTCo95V24jxeXH/Rb9m0GvPZKoDqTDzGi5xTY9d0SGKYVothFMFdQMYS9/odjGH6VtpMDELzal+UQvdRwXL/tfR8gl/OqUmLQqM2uuLlViUOHlEzRClQj93jfIKO5seCY6vF1RTWpIo1MCYorQwloYUIvywrAZAak/dUrKPF3StL2vpFmtKv2MlZtfP3eAJQBcNVOPOFFOerU3mwh33Kyt8n/MNpyMUCj/NAnJ0tY2lLMf3ebaoMUM2sA1BpPPrDINpLwNSj4gOWjptOnPu7q6y5qf8YjUiBUkT0nYXPvgqV9WAWfD5ITBIYMKsTCgatc/7QnXKg8G5goXSQB14l17tzUsNJ1MWVprqXVIrHphhRVZ+B1jyl9a4MnWaO4SNghuPbtTlQa301YuLqr3PTrGcB5KHN0fff3e5vVvXmK/lIjiSZUlVi0gWH5k/7zEjQ==', + 'NE/uPb/sJFG6yDgZuaM4kvS5KDIYflQdwODFmYB7RqFc//fZwaHl6YftiZ3r1g05obv/J3yTxhwiddt4OcR4hdHXhqBdTVx5NTffwSPu3/cbVxh4En9DfmGgiZmSybr/1umn7LmkshSK69NPWmxi+6EWsHjS+WZ4II3XHgz3AGe8xR0XWf+xdIW1yctfBwLKus/s2ntmHFRQM3/gQbmfoX1jz36s1Vgo/UZmuY68DfGIwmFKmA6iCPk6n2B3Owi7pEHQGOpitzbpoRmY9Z5dz9BXGhBSQsfQOeAMbs7y8BhSNQKgmKs4Yf9lAVj6BV69DaQjRAxmcxxG2381gVpGwZvggsmvzK8VZZHYGUTI08cOAN7JO4mM1vx6S+DxQQ7VtXzI4NGLBwhwTu1YkqpKSPqB9y43Isubslod796zzX/Kc3cAiMhu0YEKvIHkluT6VxN2fqECpxOH/S3A5PFR/8IHuqoQ+zSTIL8V/bR2KWLRzTzp7LKqax2puNrLoPtKVHfEwJGtSQmFO1TMr0xSBdqxyC26VxhiyJc=' + ], + [ + 'qTbmUley7CbNF8cOe1ZyGOLiCBmo/b9xoEc8/jgU2eI=', + '0xS3u4b+MP54hqCNKeX55gXyH4XTRnlH', + '/3cwUzmFFG56XVp1MFb/a6EnVnRzNDKkiZgqnVVLbafruf/kikz5RUFbvKXAOXnMBTpwJs1rCdanmty3z8Q2dgVWREC6iyEr/q0elQQ+qzeVUxu2Dsx9ku343ivU6gRycpKawJ/JIdMVukXfb5o1hXbjeXLmQpnUwq4NetorJp0GzwWSPJabnRkV2zHx4r5CevmaYcg9tLixYswtR8N0f+w0WYvsiJFoEx4BPfLv5xeCWh6CtzocQBslSANRft3X8jgqeMAehajw8sCJNa6uISgAbcwysfdEiNKtOzCJHgHiG3Q2NVv55cR0C2dbb5zJoc0blSBdCGIZ5uutgdXwSj7JubXztWS+9YVC+bzKYdOhLtvxvs8qGrwy4BahEw87sQAYh+Qh+63biFhQuC8XfzaEWLAhyRxExFoDbZzfKvSaYZhoxdH9AMB3hYXnAyuCocjzeBy7FnAkvBQDAHDuSeXP+BW+tGu9M4zAhJYOrgyZPLs1rZbfT3rhyK1e0aCvjYJtx1LXr0OQZ9I=', + 'j1K04MtfwuZz/0dqHD6gPp/AOp59o+7XVU+fP5lRErF7wdj/oFlbzQsXc7dSmhcA3d9Ufwx7ciZoTqbYHXzVUM3AHYl48sZYFhg91nhp5QOtBqnQrcwhENI9y+jg9zoFFmPvtOXJHLDUphL2XOTq1jiiQ1Kk8RWfYLZ+3omr6H5/Hbm3snOjq/jEDFshK6J1s1i9+tlZxohHmz4WvMteauxr4rK2q3Je0dOJZZRxkthtgeVvKCO7wha3ABh3d44hjoGXP+g/22MO/Uj+3FGIQN9NSM97XT5MoU4Rw33rwjNdshCfUYeAmUWrOgzAK5fGdOsQ19QeYQc76XuPd14bd4v2sC8jcMqqbR1i/TD7YNuV6iGrGluQVCPemJ5nyy8uK5HoEecvcEzhgPVH4diyaJSPSMlG3ti7x8exYBIUhThQUaB86yNgHdP67a70aNp+yhWAmi5GWGCYrN9HEnXnUAaXTYfq8NoKNu4dwynsBZ+0EIvx5aURyv9bLy5SBHogozBavX4uPdunDe8UpTWrIam3Os7RSqfLFntk' + ], + [ + 'zZ6wOEJ8FdW+DUKNwh+XTVmzB9wNNCMCpW+gCQ8tLa4=', + 'M3CrG6IBJN2VajAPhcux7RECfRAd9rp7', + 'j4FO54+puhgzurCN+NNyVVJGDJVCPZWQ8p5xMNzyMYs/7k2igTaRki7eE2bQEOsotl/Zvs29FIL3EomBwTQQQ76oh6lCb7xc+lm7iXZbsYqViZ6ruW396Ug+mm/PK462zGCW6qvvonAH23mJwcMwGWDLGqwjls6WK1mSPKhvhfPnIinrs728LgdRK9stFjUIYpIgVzICfsGi5pJi9erDMGZqsr3/V1XW7yKTWBWDYVXXG2gFqXLd86RZfh8APbCp9vzZns5UHOHjsgYegZNOrGcnvdpYpS8aP0/AAHuG2ns48CpbdfN4rIDT/aeguiqp/c1pDHeuftsmeZn3vmLE8Ephck+Ec5C9OT9EpNNeFOOeMy0H3WwKkSuohlIumiAgrjHI4UTVSYMYk9lbu/3fosZzOM0DiI3zp2Cpx6nVrzLFo5G8CAIRtaB6g9rha4tUyKEICYRhH49LIo6J6KhJSycRIhOo/JdkJt1TQycbuTVklhfYVTE9BV6jZBebVb1jJXKqTN3ifzrcRmlr', + 'H2G0f8IpeZEY9OhXCrObMboH7D6g7J0vR9QIaJPlJgs7PgqFjFYNqWP9pULU4AJTo2OMFRJdNmHvJQj7YgxDNcu9eD9RmilWxHZcqhL5154rbgEU5FcEyrH/YZZzw5oN/tXdnlqY6uedoZDw6QyOu3IJdH0c/14IPuFHIOaEJ6qKsfAxvkb5NxTNNkbqZ6jgYBWCZEklYiLusfoDokJ1MLkCsx4QrljyoYe4HnpXem90ss9r7P+1Ybg3Hyji5aioK03yg4gA2xlQl5da7oiAuW8dZV4iMCh/KfHnVkeI8gAz+2Y5HL0BtV3BzAweBj7S4ViZyKYJiDbUdhRPMhmD+chg8XmedsplVbu4ApP6qhpLE1Zx43UtjjIh20t/1nl0Bo5i3UEP5ERJ9R54+icLF50ETc+Ef5nEFuN+BJXxvjvSo6rbDUaOPdNMvrYipqO1okCHu//VJlglI18DiXOV2FWrI3In7zd3RXYoeOSLHaFTkFdyp35pNe7eX/nf9lCWqVOqj+tnMQrtR0r7pqwoqTpro1ruQtQb02x4lA==' + ], + [ + '/jr7VOeRdN7uyXcSQZNHSJRq4WNY2QN8aFNnH1w5qx0=', + 'LhK/GO2XpxUVrNKOuP4a2qX1wWgpPF9V', + 'Gq7c7stgYTELkR0+iVIm0zUe0ihafd65RVGcGq/PpY6CzXArHVQMsNqaizRhHk+8V979DUV8YhB5dhU+maXJItwHAPEtc+P2MWzvv58ZEeqWjaxokl8qs0Nz7W8cz9OnrDeGHqEvzZguNkKWjZAto5kuU59cXMJL7Q9zL5JJToh3bHydhChgHv3zTwdJ6SZm+KeMzlNORxZWr7fQw9bVdhqrTpsltJLC8+8Wc2aJePf8Vr2RIzvACczOvOmNrJ00k4HCXDsomhOonu5fF4APLFSnvcpGskuFzLYAhVrqlp/U5mfBddTU7hxjYOh5Pb7etE4Ys7lzKQq/dAOcd8B2UopFx63kY4hbKe/79PcwTpkMH6lEtkKASOJ1KBfbPRhgnDtw7ENLWS7OJxGe6+ZmMAip/gQnzvdAnkB/M+8Ed7RZDfVm1mxRLl1lapNBGhPASNh3cxKInd9CzlAGqJJ5dtbvZlRNMtG4T3TScTYev27/F/n4SkjvdkzhBetfujNAceJukEi5HM7fzprWnA==', + '9ZZFMVRsa+85kax0eTtcoWV3coBtLKu0yV946jIKrfhjs3nV+0BloO6FjzE4GI+jnmTzOM2DiZJuQtzxWUccmuj2leY/xsA00MEZOV8NYvjHnji7rGiSwByUOpo4ZpiXrK/0j0vNjiYBNga7uC8T7JMq8awAeRLFpqaPguMRvitmXEEXGqfTCaot8CmAL4g0nI04YfL+L1MVhSZBgEb29eKtifH2TJ41vkf4iSo58KDSTV3OncB6YFOM0cVNubF8QQQoUXO7q/5nQ4tCP6P9nTqUIS3B1vQZGNdyDhQAeg0kbeJnrq0GpC/d+Z6ybB9q1MJvuv8Vpd0lUl0WC7y+rCUH+WFaPp+KRafi57CrqYsmr9NPX6kRm7glUaI0QtBiLDf3FArOEBc7DOGj3a24KxvxTHcOdlSGO4phRgpUUK5Lvgta3JzTtcmz+z1oPIjCr8wWdfULmd4CtiqQGxu523XaHuCtfUlIaiLT+QguVoFwY3qWUPqEamWCL+DRl/02qw9OgNR1OZN+pRqu38hM4mwIJo11YdaOi4NENj0=' + ], + [ + 'NpXSt/ZzbToa7LlUNB21njYweqs87caLxRBLuHBLMFA=', + '7VZ6OGS1g9CoSzm22XM1g6/LCoJ32D+F', + 'e1DYCtsEyXjFvFtBKxDkxJzDNbSFNohS0E1DtLiqzUMGcp7KuTzCPYTnx5vR3SiVAAI9nSeKtew3eMVy69zXnCBlZDmHXZ224N1u/aM3SFVIL2CfGjbbD0hALW1o14lz8AE65tfzB6OphBBnneJ03E/wOD4VXvAPuXP4na74kcDP7PIry+8h8eO6NkSDTZ7UmMdccHjMt4zy9hiCi5q3Y2Ybx3H46gYMz4iA3CSAyCMD2b4ZHGgelfPRgvltGZPywGIxDfW5G3jcuB1ERFf67Z0rElIVQnlP1XbLXwSw44C7K+2HbiUBpSCS9EgLRKx2/6aTsYCE+4oGmdPZ6Crq8lUUJKUkIyriVoWxBKMQVmVdsOhydyX4R5i5SX5DkLPHka6s9Ofhe02HkmGt5FVqsYrWPyr3NSYsXtO5EQs5sKBF6mZxvjNikKgONAhTu6XCc0k9BrJtPszG/03WQOyH0149VcUNkog8JpSMjXmawZhUW6RqbtCginL9jZueCSQmv3SqPzRzGrlSCgciVFo=', + '5awTmd7YvpZb7DNau3LAou/Wr64+cn7TFoA9FD5+KHlFTNDAKgoonHHO9ntppRuWJiz8a1fCotUPCtvaZyTAAWMPJ+Fp+gsO1IAysDuLyklQAfOs1+ZKZfqZe1ue/hHRQ4xkoe943sQWV2hbxdFexljWwkkpQ3uYvGW49WYUn3IYkGNduN8RZB82+8EdzYRTjk1//HFC3fCafnG3j+i63OgqV823D01cKJVdhrnAnvA4XjL9TcXwv1ubEGxIJ/eXIJ/A4mjHdKgEHXZs6A5f6zDfZSIgWjoK1dnAPtyIygQqrON3/6bU/EeoBBbvTDMexKprvxrA5KClUx0NH8/AzZCUjUo4KUzwFvLIzcfahufdN/iURQfnav/E4jRv+Hiw0Qkw6OtcMt+qqnmzmmoniBU2BjZX+QalRA7293y11iM8fhNG5J5ZHqHEamM7N4nndum5jE56pvAGToVi+jb7ZMiY/GufDNbWEk7sUJia8TPV2r13YaL6DJ+TOY8RFalJAWDVB8aNCpBdKThYbtPWLhGFIYdBlyG9q5wnNXqf' + ], + [ + 'iRL7lnwcBpB3PYRohePcUSTdY8CBh+0PoMdXos5JBWc=', + 'iCPGrZbmq2Gypp9FZ74TFjr8/PRmpcKp', + 'C9WvcDnovnBl8w058Ua2iYON0Q9xcTfka6o072UVQMezdGRHXF8nWUF+n9jXHDGCaPCuygv9JEtxIDlEY+86cFAZFJ2pyqRGZZF1NWMN67ui1cRaL7vj9YCxkyR3eyvyhyBlbieO+pD/2ATjArgkagE3SvT2OeHHtHzFAMsvPoRm2pQvrGEztWevivpmSEIvd8JrU8XqVrrI+XxLH/1+FsihOQBoMbQh3c0gIWsI3Gvuij9qZHG0Q5zLb35FftovG9bAQHpovlX4zZ5INCvsmhdXSooV88tNTkXVZTaOSy8+DS5nVon3LtGUFBt3aTTJ5r+ktFJ//zZD0aSr8ANV1J/lxOp9H29EGzAfXH+WlvCyqQ35fKKnhEPjK4HkNkCUPUtWP1wBjAhzCd74PpkcnX+js3KobkGpyoZrkZLP48r2LjakxbFrYgB88lP2Y28p59tX6XSX0las7A2gwqH5qjj87hYO52AJCZPGX53qnlTIM9PYPj8Uo6pgj79tT/ma3AN94ijCfWjytdfX//Mx', + 'PC5/YjRcIncmxHkafLlC401qk96jcZ3CodzLXkxVcg7sY24CkAr+1OPjZ7bYDy41KoSPH5OHydzqZxHyBtSDpOA9NElqzkErxmTIg2X6dgYLjqgKM9Aav6BYYVvCIv5jztgglCmPkpnzMcTg6DMz6FkypfPKmAFRi/c/w8ZnZ+snSvDHMrBV3BLWFhBWhXeJVUdDLQXRknGl4XyUErI+qMIk7KLbUScT5bWDKFdANQjazw3+Ij/bUuSBgY7AlJZCXhoKJ8J4b5xt8CLVFlNjP5MiwE6cxNwahxZrDPomGhGskIkBipn7DE8deZDSf+4VMYCL87PYICSoRZH0DduhZxqWzyF5j1epQR5SNouUosznROW/CkkGBJeIlGWeqe/+s8/WtFLgrhom6Rh3lTh6t6Eiu+pNIExNHFS+ormYIS5Kqs8wjk68WHBzjCwOyEzilbdDZ7+DXpkzcRdYW7faQdTaraeHNjY8f0LExUsYgyr582McPetRK2B6q0TpwMoXqXPmG1cmEwDiB3fDjnYH+t77hmKvR0O5eADbEO7wgg==' + ], + [ + '7cvJGPtcHB0HuRF25ydLXoxhVToW5EGtZyiX71vJKVc=', + 'Og61w5XiXiXMNDWTVmQ6ubDYyXhqpjDu', + 'zVxbwmVZkpYIk+/LShiUC7hcyCctJeUdDYqOatT2l5nwQgWnS0+y8MhStHBrWgK06NuwYVX7zBE+FQFtQJcdG5lTqeYDJ2nK9+jDxEHKAq3HIt2xMHwASprH3niCJwOuWCzxR1eddT0NxuA7Vk/Qa2XCNtWBuRyoellZ/GQeA7Qrd0G2FOHNIMlpQv0xVVl+vWqDvqa1ZVdYj5ZE+FCIQkXol8dLB+1Obv+gYZpLqfl+grUdvXrse0wmOZT/rIwuBGP+jlIUtlBczY5VZ+zYm+/u3ooUv1Dfviasux20hhTLoSX/rxKVLOMAPh3L/LfdfAjc46e0fm2QsNrtxcaJKQf5n2sw7lmDJTmQGE5SuWs8mfi8hdRh903uEkqRVlHLoItQw1JgImDs6RYnQ9BDAOK/g8mT3sEWpaeXmwhgyWTAsJjc0w6fYAW8+LL19B12CH8kSG6B8WU9sbwkLXSKJMsoVOSlOYZkNgxxJLjRaf0wgqhncqsNJKjPhoqEWstcBH7rb5ZzXSReeLHi2stSKw==', + 'hqjy3sM5CaSe4FI+LyfiFeXEzjXdsvbdMlRiwXjbhWlNV1vV1bRD9obiaFChY36HfcnKqW7jezjwUCFKwdQJdnrTFAfTui7brUsGjyFL8X5lZhkI8WZ5MF0XRGidlJMM3LocMEWSrocyWytQ1wirxOMQzLH7mAv9Vgy9vTGiTj7W7caxA8Kr2H8td8ffl5r/N8j6TvRzOHA0J9kdaNEbdiFoqS6YtbvLNUAu8TbYWjZTVSQQGhqL7WK4epCjRci0CotLnwd9NCXMsqFEO4GzSZUbNCY/l0RTc4oFBvUCm1+9gGVF4gOwIruXExLhWOD5YxzkBrvEi8oy+crw8BkTpmZ/fro8O3pBheKkc0mmrGYIIEsaPIdHkRn7avHOaevta+j7XuWE2CYWWBJ/eAdE/c8lcEfDvDl17Eo6Gtjo/FIcj2QGO1ud/l1iF/4Qm/HnynQ2SsGUjyZWK2Uyb3V2Y9ToKazF7ssXDAr4DXcODEmMFXem3XOXS3W1I+Zhtfz6ff97s4HcYZRDbnAlBeikdZLG7PJqPhmxvwIixlEQGMU=' + ], + [ + 'e2hx/d6X3jVyERWwNZXdvTq5y+8vl+8s94wnoy/PdnA=', + 'QG0sQRP26hQ69H+lVP6LOvDA1CUum+V6', + 'XzK/AasJrJHN915cWk85VOfACL5TfPAa47lkuyJVGg34OO0go4CMDgaMS6RjEokzXGNagPi0CE3XBSiOQfSPaZ0MWN+zN8CJDXo/Gp/AQtdYTGvPYfy9aNswKf+NJqZIFB5dAkfOYBkcTKZjeCiFbPPfMYTD+TX1s0VapSTKr/CksaWBGXPwnWC2vILsUpL0GKqq2sZiquNueYOI+eQwOgtlPc1Vls5NWP0UmlqUP0x0BdNPkLCNOnP7Gnk6NmYBuV3vz1LSQtixtXjjPn5XdcocPcvSRH0Lg3xayaTZhFGjz6e3wyOsTsJIRopZri6zEMccFCHRxZbGNgB6ojlErh0bXD86k4AVVwZE2V9wH6Pax/9Be/0CVPSzdBMMyKoRV+wJnBooTOL5WGH+PuXazv8swFbKGhweFVSCJYqBQpgIE3YxoS7KYjv0kHPAsaeVYwuLNndO9+PXDbYUGUJy84Y6xM+0ADlbSFHkmsMdQV4ActqS+aCi3yzlONwiBlSAmkvD+X3ClhI+xWmIp3+3JdE=', + 'CoUuc4+cWREEyPr2CZMLwcgYdLRqfQLPfHFmgHf96Oi04MiI92xarYgFY16sKQv7JS5F0uh0q7NzzlcPSQA2ClQQ3z7el8kjhyh1hzGtW7iNo2lN2QuvJSYOCxN3EgHwemoBnccHDYVStPL6+BrEZVu2WoOUjmcVkpR9phdN3bYcOo7a3lWWN92/zFj4o0xPmK5bKr7tq8Eqz4i7LrkPRgeD7drLL3Wy20fKcJWML6PwsBmyGUEgpJJrccj29in9/4RPbM0E7M2loC1XFrPqPFaSEF1nyrYB6eXVhiUdT5WIdTAaAkNRJ3yxrt6Dx02vaOkuuWDBz9RU2OMOzPPoAD5Br01iMRQH/CLG8vGwb63vCeanSS3I4ae8mLrupgjVVSuzIBFELugeSPnDmKnev9SXPq1Yu+GJ97tzkTenl8/Shc7oaBO6BEh2qWg6JahAh/rY1hfOu+6n7S8jSkZf84CXCZ1dTGSh3szUXSluFqpsXszX52BxJyr74MR8Cp9GJxU8W+u+e5Lrhcjg6/MS7C2pMIpTA7pstKT5a57L4tKB' + ], + [ + 'yvAl/FWsEdSENWG2rXiBPjLizl5qqjHhHD4MWa6SrAk=', + 'lRGwQm1XfPoKFoW8YmHXBVTkkFZaynMu', + '9KBTSdl4pXlyCKvWpIlS3kJdFJYEZTTihxCgFXO8IcDPOcLpYygogF8PsL21Kv73AvP9NAZx7cpsGM69aaDQOPHk7x7IMwq6TplfW/wH/vQFiWrCRUjj9W2FbVL0o4QbzoUEvMQiY5112vt8AkmU30Srgs3dz9rl2Xrl6wPSuN2Q3i6zMFmzWW0sBGCaSvjOftsEymdHbLHLAmlWTnNjvA6QJm4DL5d4QixlHG8z8V+MKhl4oYnR3vrzKKC1ljsKMFLMAEYDU6DEEyHLAp57GB70NguFJMhdvVwGC61z2F4Q2VH9kwfpS2+NtFsZN1Gp2fJDFWFgIa2+1ZA67K/pU1FuGzqnXerQI1wkuTUqQ+hoIgLtEazJGdOEMQ9K+fRr4EWpNYAnewdoytih209de33g6FKEnMFFlhPWmz+fkAXIjI4QllD33LRH3XFtlqzmYRoR6ghbI/oMQiIa/H3d+dk2GdEBMjpiujt8prVx6XuoR2WLcnB8nwhVzEhyIx18FI+XDo8WpMa0aSn6iv/yFSrj', + 'KF4r0DjbxkfbecEtvxv5psPJ2Cv9MLZShbucvAc0aVX+9ild2kF391rVViBzVj9wzJgFVNzRxerh5WrrUblDL78Tr5xVCTo5W2wc+nshr3H4AWblKSe/ezxJCF05wQg/RRUwLqgAdiBNv661DUyG7AvTVwD6kYCrN1Mz6RHE7VxQjVUfetBRU8fj3324UwJA5qz85rld3QLzSDVkw0g+t/CmvkWrn4zzB30bnSxZ30qVTmTWXyOMeGesjgmFSs8L/z2a8AE/3Aab6UjnVfrm4JfeGmCVS+/KDR+7RmfLwUY4aFQqgr43El34ZCmXnUi6bhzxtqyyZbV7i8OiWKFAUigaewsOjCgutOE8uUBNY45Bh87t5DtgFZSvKUyZhZQkKWc8HCao6itnLD0828QiRkuIu72Lk+8MBDIYbUcFDWrU/llGJxCNdQkwWzrU1zlfOwo00uAfb8a8QAzmS42Cf6zSp3muecdgYyRZ9edy/I80TSUZinmjD7wl/tnVCC/cgfGE5yYrX12/czZ225w7UdHy2JhxHKJWZMCMAQGMPXJzpQ==' + ], + [ + 'KvORBLoEYU624BHhyMK0iBlm0ogQ2j9l9WoPLWnhl/w=', + 'fBAZ1qd5FPRIJkOYQAMGHdsKZYmaE55F', + 'XfF7GHT32HlcK3aw+9LudXcEMt1f6BXj+9ATfvToFuUqjYhJOSsckqeclyf2BOtuzRn8wLLybNb8++QcCjQ8IOr3VWJog3+6/3hXJfu2/f06SySlTQBgxO15JLAlCmGK9JwoLYn38P8UyaRHnrQGX7fLjSzCUZd/IyoaHTHi0Pa0QG9MbVNez/M7vkFRnWsIzRq1p0EY0sNadvEzM39deVOjmfoeM9xFICN/p98sz4b6hOkwqTxGZivm3Sfnhh5JJKx+04wHCO86g+z+PKs7HqsrbojsCFluTo+aIYth1CfEvCJUjzhKe5Ht6+wsCD0PgfEdVfgq8rLKy/nZ4u8sFmJQQIvKnSy3tjO4FwWPeoAf9mV7Ct0TwSjQ6NrvGXFznSnLRWxxKB2k+nfCiuVSUAOXmsugvoWud99WIxKouEtcsRFrMTC0CQg41e3WCKb7tM8RUttg5oQN3aam/UcAkfZi/rDDb+QwgWA7FtyjuZnzsAAXho3T1zI5fdXw0TEj749PsvsLGpTXN+J5dFWjX/CASA==', + 'sAX/CVU/5uzh5XgaAed59pCqRItYCXxUlghMWYDeDfXeEpybDqm1mbDLgIa6Dm9T0akOIURK6XW4ilhXkwrqj8i15oNLEEcvNV68KLCYrVbuoVOrmzs6LSPrDO9Ljo852CzDzrhuYJRDhA5Fr7XVMmKvU0RS/X7bLK6S+lnc06K6rrpF+ff+y+oXo7uLc0UxmcY9R5zGeIiELqR7H3PuoHFaWz5XUjGs5+tWpEmRQuKVxFwR9Rfe0o4XNLtl9QLCVjRHvNSptRnzCn2MFAvplZP+70sytCRbktvU6PFWPA29BWYrzYPpouC46LJU0pyZgLFfCI5DaJT+g3lUyQufFX8THHsg0tlWlSsQN124fLJO5RLchB4UkufiYOmpLjCvxFO5ApKffF6VODEezRlzO7NcPuskKEiqsPS8QbUK8Lj8DHoBZ92KRrltN81hFXuV3furjJNzm/RdrhmQHkWp+HaTM4zdvRZJzq0p6aYHBk0l7CTqc/vaxFRNv28KWEy4gLNrr0/Q4jxbNtwvMYhDLf+QYpbHozZrQNQveh2vtVMIRFA=' + ], + [ + 'xh6AtyjjzPSeusuvuQrcTI04b44qHCTmMPu997ENXUY=', + 'f7/FW1Rg/CEwU7oeGJgySeMK8JCfGI8y', + 'lHT+ei7YINRzNSSFpvcP03VUGM7rOXHtxJN91PiffTJGdL56zpJz43BMTr3xDPPT9NE6E20NRnXDb17gJk8Gh0AvfQG7Q8/LzUOdj1bIX0Pf6Nuhz4SD2V0QLuheV2doG67V5Nc2uwE7E5xdbrH0WDCDzrn80T/6JxvbEn5d0LzyUAza/lMrSB+/ye4eeahnlNzQlsUDjRmWkly6SFDsz837jhItNBr3zxUhotwYQoKlPh+hZFNwMfQKSiH+Z+p6M37IDvhZg7yaOb7EBdzBfDmBXeOWS5ydXiVSNv3gPKlgNbHCSWyJ1A6WaAk98vhLlFATNXvMepMy47kp4Cl8PreZhmLgaQHjNLbkLKJGA9NCv09F8P2yuqSdA4nqiCyzgnu5iY17pKqp2bQnkBiNWsi2yYuN/UUw+sgx+myBMs7z3OCfg5fuvxOHRFh6rtGTZcQUbG/aOHLIgcg2owDuy0peUlqOEnjb6fhrxYl/+WdQC8cH60+RDNXhzeYIlNi6hMM2eQYNXAkH28P5gYxEN3JdLsE=', + 'fTuWjJbAI/r2er6XvqBwWtNm3UppR+sKTYiSOBMniVTrR9CwaItzIArLsH1dReLuwGUAxz34BN+1IAiqjsJpFLF+8XE4X8A+kL0KOZrjW0YQuxZT4z2s29mCBwBV2trcoIvi0XnZekONo4KXLCd4RqUcSnEf1rkUN46JiVwC/z2GhjuGA2maNjlbwI5TEYLiI7CQPs/LU2SGrHDZ5NT46rs2wP7xlSFalgcgdj9DGaQmoeIsuDbaiMF1VCZAsHIlhQM9ul9nQyQb6AqvLk8KqtVW7BAFv1dsHEqMoL2/uI3slz3SHttEsnL94gER5sxCxWJJf07aKGSoEp0kMbjUeUHDuQchR4tQSesAvnGYQ/CrZXpLwiTA148YrtVkY29n4cDJaPjdbyZd9DRDnjwTIjgcTEfB9tCGtMZGIjI8FxQn8RoZYpcwVuG2U7Wu5Ua8COzW7nuNK8xXSGjCTa2yVtXqEAcMX+CQUsiqsDUX423qojSsg8kROWcJPmW72OPZ0ZpAlZaJbVBKquZTnvPRjqECuZ/jA+7W8ySkTs7UF9X4m1u+' + ], + [ + 'cmcitfOPJoiJQxKfFuIQE9mKlthDFKzbeZ8WCSzNST8=', + 'FHseHGLgvPJ8apOuInnDatg1bynXsXrw', + 'viu9XkTXoyMJzBaZdgWpn7Tpt4wzxp0wc0I0E+Y3oZnAw1lzh3wtlAaIKrrEKUVfiBciT+dL+TWpyFTfHgBKfQIVjFoVWcwdfMjs/lUfbsoN97VO4sOa1GlSLJz69rqJjOb3FSPRfFpUsQj5/BvBdpjiT7tGGa8sJwk4T6oaXiiCu4R7enVMj+GJUnMKXtfrENt+jHr7ZkpafMVYleerVC1j9QwUHR0NJDl1O22n2dlqunE5BXXzmWgFyWTRlJER/4mXu38bJ6rGKyG61UVm+zNiWj0NWR/NcOjlxYXoSxucEz5+tOrgh1KT6hXTW6ZcKaGeRYamG/gwp/IV4ReSAeGnh4ExLIQtvQ5zbwJLXdSp9+QI5e+IpFLxddHjUkCG0qcaQmgAbuZJ5Gsq6Qwir21Dek2a4k9LyNfS0efyRc0kurinZHJj8rAbvv0yoONdvgF4dWr6x3W0/UvTiVPld5VhZ4Rz9bDlPE1H7NiB99dTberdePhlNpO6DwI5p8cyW4An/Q5sKIjaHfV/vEYFUjgqHTt4', + 'nEzXfvESE3f/LHLZFgWyNFCO2wk6y0uX3FOH2+r1PdDWU6gh9qKhmmYwfEiggOf0vMHFBYquagy/S165xFNN2TtT/NhyvZmXIC3jpo/d0pKiYkCd/66XK6cB8R7r1vHManY/q4FiUCzccLKSS/4skC4QMUEErwcr9Hpe3A6R54rHtnAm2joFv4Hztdb9K+TJJ4Jryz2CdhS8yFQg3wqokp0mEISgz6nSis2aKaZ3LeAwwS8sci/JfT0xcr2LXuCgX57J/+kloe1sq8nO/ZI2U2/D/e5bSQzL7FqxPUTjNQCCXGPdmXpZ2jd61VoW8tMtgWPELjDVNqyL5Wo/KenUyAMLVz7NS4mvmiJqPcrmpYbbgIG6uGSYl0L0gRfsPS9vbSQrfviOZiQu0inLqCskFA5btDliX89DhlrEZU6sDeh4K4UHLuW5GOLrWncarzu6d/nE7lf7wKYQUbT5rRFOIqqRWvy60oBmv8NwbfQ9TXWdVzfew7g5UNvgstCp8ev//sGhV8JqKe2eIr727xKrrsduZSDT+VbfVLeIh8XWDMAomIgrNw==' + ], + [ + 'CYG3SfnLFP0HnzqaLVLG0gyb+TNB1xNR5BT0rN+UaQU=', + 'fC+Tq1XlhqNqixpdhHUZmycqvSnQIfCe', + 'ZJzYEX9oHKJAmN1zuv8+jPIfahnay2eCz1W8DKLnLDmGLRTJ2M1Nr5GKwpherfpZ5H8/+qFqb2N19Y3j+elQXrLuBA+DoHHRD4B3U+gDQ7csMtnuvGaCD1+jWBqygENuBpoqFimTF8eQmVFYNMfOxLa3GZUPEymUfqsTMw1PnV7AGGZOqREuHsefz1bZtQbRpPYIzKDYernLz24qClKaWZugO5EEN8m2NGJ6U/PzGolK5gUS0ag3I3SgZINqGXddiixVXhBjRYwilgNw8DTZTq/iJtnPhZm6wsbiQGXTuQpeTfmhJhqfA3xCJKsJbZVSBOa7KxqB4jfvIN4hJT6gNxb3CUjMhR4abJyO3jQt6rzCecRSKpxZG2zb+Y/0YDZxLb8uTo7WOPial+cPIO6Rt0R9yaeeZypumvFmx/hFcNpiCpkCMYZCMDwBasXcCdjPKRf8YtAugOIPwct0JtJiZm8LPUfDhRMI8RfqNMhlRdDSSeQfSTetZffMyL8R2z58F2jzh9qfsXSZolP19AmyXUATuatGlA==', + '2XbDc3b6/CPxgI7UiifeaQnFrvVUhkRuhkSwCMGp8hYHXnXE2A7dMjgUQsUbr8FLBfIXsZVLlFQlCP3BlC/08/sqitc1y7iOz85Sw2WfpH3yycIcKUxRyzdbNWr/YDVIPS5/IuqRD4v7M2rk3sg36GJUeGwuk6EO8fpSCg54IeIH+t+qgL/syGNsYysNJpP3kt3A7NNMU2HuW0jIGqpJXeDtS9nHsnSKyuCdXMIFGGgY2y8GDW/SeZJT/tD4i2ggnP0+jY+xckC64NgArdJfPGzFawb6bmCUSP1g0+UnDaP6vhiL2xeIM9YJfvnK/qjatcTvcbNH4B76nMv+t3lQgpAAMSzLA2GveJkzTs/+mmINcwQbnDec6yqqA+nPmQgSt79gYyjo4xuy6h9lbS8s8UI7O3o5LkA3Tb+zaX5fwyKUpSRcrP8JQUxC06k8ydANitsBQ7MvY3dXX66qW2Ec3SWdtC5XasrDVDwpeVMH39dOn8LAjzUIQPcAtdKx9Vs3mWWyB+mCwpo4OWIFZkgZURvrmkcuq1k+dEIqXFJBiowtDjM6zwk=' + ], + [ + 'NJ9nsC+Z9+drp8CFXxO1HPS0P+3qjHMeDh9EoDBJYN4=', + 'szG/wKIswVkIMKKbBDRBh/vlkM9HUnG2', + 'JPCGWDI+8zgVWCuA93vFpfQ38G2WlqjYDfTQ9j7gTlUWqzBFft4xRNUywpNSQ7YZ5oKme2iyVshwhvrt0y6/1qTvp6ritwKJAwseYRVCoiZ+yBgIjwU/MQkSmCLsPwJhVXC/Y8eLW7pCPDLyeyL6Df9lc/+iUX+Skrlz9ZJ2Nrdacn7xzL+6yaCRRhuwELiL8AD8aYRFhS2h9OBEu4ByCfxs7o/s+JCH2i6S8SvqVhLZ+VWZwBML5ujBb+kjNIqctbMObaULxBsbhKuN2+3YZtOOCxd8DBoP8kdnZcnTwRrtjGenskROGMI3Xd66v3+SDGS3vZ8ogdQfQpNBGTFihS9672RPNgb5+SO6Scczdmf+uA1Ba3CbbNYkovCaQmxlaCj1WfgDyrHrDz4nK36lMD6C9OIG/Fj2HtHqm1ed/C9AXRmRIIG/dnJOQTQMQgpo/pwzIIHAASriT4GzVqjGsip5ri1Qs1f2OtpbhOvRd6+wa3t622HEwZ7WcD67S/E/Rc4IXpY9xKNDhfIDxKQAcyWSgoKxQ1k=', + 'Et+JUurAVoVd9XgP99DHxJICY+ObpUBQWGajyB3kTvIWOAja5l8CKqqVW3a+V8y0q9iO6hXWYHA3sGIbL2vT3XY6A4ckhyMeSnaDLp8FnufAycQQAKYWPD9aGjbSy5CbRNBAY7uWsulzREiR/JbhQkqd6bp7LVxya19czGLYK7lkmPHF7/kGeR1AkFohmQsuuHhB6cJgO+PsBilMza9CD9iproc4VYq6aDcm7Yuwo7vLMMo545tU84swGYXqesOrN2ZN/SFDKP9UM8v92t4mTdGcly8wzzWRZlnh9StKre8xpRhTLCo6g7J6Pa3vrNxdDW50M/ex//jsFkcW+0ajCGg8kNjCzGRtUXqRw1GBqbOtCNmAp8QuCRQ5P13VOmBF9nHQZfxa3H2S0nnYLA8xyM5s6HCtJ1vqCrwoZiG4K/QLomZ0s8XkECF8MiM0Iok9ZBhSQSRm8OjDWQ1n2NE1StoU8CObCzcah474BorjVVYYOSNJaQYObqxVcXS0hIQOCbjo3x1t566CxXjqcX6RBUurgWsYAu5Xz2hPqwnwp+MHl8J19ukh' + ], + [ + 'f+Pb6q4lz9RWmEwiM6/ja2tnjV7FsWcxinBsg/KUtA4=', + 'b4kR6BhU/blu6w6KNTYZiEOfbD6LFZQ6', + 'jyH2f3tYJ6Fk1ww5HupKLphbxcBlKejfnyazdEFR7W8IoZ3U+WlM/w417MCaaP2MPfDWVuFg48AirsoL8UdwVs/4nSBL8CQC8R61IJvxW/v5Iovkce8NLxxBQedmy6i+s0wESh/Srb7kg61RJxoJ46T8sbba8AuhaDsN+NxUeuXtROPWhMA0LCVL7vqotAbCkp3n3ty3wCAMGLNsRMrXBz0JWC5tbDhSwzxcHdQZ39BswD8lnNqvpUWapEp+7w2piGHQiYH5vcH4bR5NfaCNszuICDAWHojp+msUZC+UK+bFpK86knYyeGtFPq8aj/0XMhFPN6iFFKQ8X0v33kGzJ95YF37bercClTFAG9VcJzkCtyby/onQHuGYLezUjFK2KLDUcDalLMsIPt+70jSRfRadKd7hfe4e3mgn2mNWfKh5CC3OWt9LdhYeHxLJ28vuEvtfGV3P09Vk/7yun6CK4QTpjgCjdyev3EKnxjvZFAAqAEF4iFbDbw5OqoQLtl1lgfm1jzcwNITehCo1aXIZeGz+gxOerq5c', + 'ejj0FJ9m2Ba9VQ3RmChAk4IzvHm+T6t4dDvk0b1ksOj6/tAwZh08voJUikLGNZ8egud+vya6mSt+3N3+wInOfq3URnzZBFduht1OvanJpJx3VDbEX63iEtnV18Gdgnl4hAZB8OEf/WNmwt7Aoe3Lvmi2zPgwiCiKsguBR5n8KzP/jpqHcpLH9aTm1C9XRr5hTOf7CksbeDtg7QpqHrtG7SDpnNub3ZX0iN0JIqVJOo/pyV9rPIuZAQRvQF3wy/qwhp+4TpRWSUhJ1o+HufOoEH7BD47PeIlISgdtsyRgZpuuReLZ2puKmjs7l4GW/vo9h+qpv8fVVeY/y7f4lU+yZZt/88il3YCd0qHh0/BPL6KBD0FL0mQjZoKKVPMBWPZy54G6+zy6UUbg31dBaezbIbUT8i3shiiryqLwAi/wSxRV9h6o0cl8vy+RIhlgOrbtShgq00XIlcnh//BxZXS3Y3JqJkorWDKW/8m25GPK+drGsSO/wfLiZojQSylnnUi+w/fqwnkHtVKkDUwEYzL4E+b2l06sDeHsEM+kwFaHj1NI4yEmQgZ+LA==' + ], + [ + 'vS3yL4O8+doijmeG8p46/XKajKzzsvZEibh9LZn0Q5k=', + 'Vljiwgzyqqr1CqcBDrcae2gs9uCyzTlb', + '33IE3H4+w4YWcldWcn5U+laf+rnpyfpEx3FJSWysVSyVuoll7vkgP78OjQza1HX3E/ahjBa6f30qP4BM7p2L2JGtl/ioTmHtLqQpoiwxy8NK0fCqte6JW3COGuvDaWAsrWdiCKXVHrfZy5VSmoGvnhod+WpsCPqMUPKHvPxtkfDAcoLrXvyYY9goDSeweksAUNYaRbTlgl9QVssatKC8MzRIWMbCpl4+7GBGFFX0bfGUuOux+dV5E7NdPEn1icH5CwMyHm8gMzog6r1GJsHUtc8Tg0mwwMm2GrBnIwa4qayBMHvYXu68xlixvq+4feoiv1ssNAPrSLl++NEC/5592SSnxH0EWcjPRqsl8rAABDNMv9tGJN+D1T9NgDDtwU+DS3zGhtzjt2OB8SuEbo2oS/CI4ZI76gZrnUzbLDItAAtGT5/rKjcgnMWsJSZD7wCCx8/WB0WtVOc0HwIKUxENa/g6m0qDi3Mw4Ja1fCs8fndFZEcdsQr184Hogj/L7aWiE5EdSJq5RrvSpz6QBfAOjrk45njY+sSRdQ==', + 'fbFv1kWj7IkwEv4YdklFZitaQKzK+dccAlx+1VPpx8k6dFMJ8ee+MvMzwR4Ga9P3EIp97LM555vnX2PRGag7/4JRy49dkAZQX4GrFw8iMZvGg/dQ1J/LHJu4JBYKIhaku/ZQAJuZ9DWSdBYcaPHlFCYFZLszaS8vxJ+lLCnP85By9V0h9j98xgAWz83TrH4yZX52B4McIzN8hvIrHWfkI2PNMDn1Av2YtUqptOuSlJcvlgPx6DV2olGlfX7OBqkDHFbR+hBZhARm7V/8ESiTV5IE68l5Eegp6bAL70cxLcBOOZfUkNLGW/1cxHKDuWVzBV5dhXUM7pdTW+Q0bfo/ACbByzbT/2oMw+9RATZZwv1Ge7FQITIYPbFcyt6Zgx2mth2Bx5filTt+QrDvlt6FKkc9ZAvR3pvGZodNhusDFXy+6ApV+O132OanZXyWEKuN6QJ/kvD2CWSp2L+MDGlIIMWOqGpLohGACBNU/prire1zUeABjrkonYFLC9hRPH56khuFCM0HdWnWI8NNWg/BRPs2JqJCgfJUsYRFknSWx9Xh1qdijedekRg=' + ], + [ + 'VMNLNaDmQKVwlWDJLE+1sQttj84+n/jNjnDiliSEMbU=', + 'T9GFXdzQPAgvf5pAX4g6TLZIoissSjvX', + 'QGOfcoWHSElN3XZIGICAYYH4LaKsU51CerIFQs1uXL9t5xSiRO+4iJBhuI+Mb3E2m/D4GVn2O+qP1Pk43CTLojbmUHHVi+pAfY8CsMnqI5mxe8YCRByq2nJfnkz+3KACQv+gJcnQEBpHrMosLpGmPi7nb+ULO1shXu5zYq5s0bPt+GOa1WK+xbsAOHjGTUzYfywm0BMigqo56b0alIZkO3gFnkitcl45hKJEbuxM0JeTIYYg/8BOZjZaSvxV9sqq622VgUXhGYPQOvC10nZAAOrOlUnMz7x+rEiUpwjpUO4E2ArG9+wDrY9ZzLxcDBQZ2UAjCQ6LxG5b8XsG2LRdaoGv+9BJbsjitMJcC5qyx7GaJrUidjR2cs56PyJB5OWvhYIuMvgQtO8Zl99oOB5ORWF6wv4JjlbNLQHueG7FJj4wxbma87FnWYhHkBVuHO1wxa+MNjgKhPYC+iksD7aTwP8b5lkrGdwSSxbugR1L7fuM5RRj//Q13VpG3NagtdHwXjeYMuobOFn+Kvbfo3cL3pXPdvljmgB+pY4=', + 'B9fVQAKqLyNJDSeQJj8K49HFtH2Fmo+gBfxyCq3icqxjiY6cEyutJ2QQBF2df/OjSAYc2EzyruVI2W1TWSIrq9A4Q9A6cDGdpRafriIxEJMyA8JabcNzAn9u9r4+tZB5k82Z2gTJ8ReBuQJ/Plas4Bbl8LbmJc40IFuZqYIWz4S6k7hoAdGWAy/M3bCN6AGqqB5nXCe9ANt1Iau+vgmhq4tvB5Q+jOlKrEndDn88KNrbUjGTup8vUrpS1FqzCCFpJz8eZAtF9qLBQI9keoTUC6wxknCHhJmzWAxPMk265di/neMv23XPquXhNGmkHDOOoNjy5Ud9qqfxYct2hbbmeHQX+duS0iN7ZfruPALUfxmsuCPCY8RLNZwQkZYehOtv9/8njpP2Kk2LvqcxjMAg1mIk3GdhmUEC5TGquHSEdjQ+d/xcvVqIz3NfxKBRMuTzbZBePEzIJJI5hg1rG0TPDBJwS8VrlVOSM91e7o2S3VBQ5awmuiN+RYCZBRD8my6WVQMNx8L/MNfmXGi2oI7gp7nhy5Q6R6ZPQxUabYxKzMRoaJWvyLeBRqWM' + ], + [ + '1pBltoM3NAFVZC+ZCssotG0mWkULbqksLZkLlq5r9FE=', + '2ovcgPJSgbpsXjhr+KDExBsHVjBK8HzD', + '85ycF8gl48s7PaXW0zmbbcEqkx5L/ecQGPBKEBrw8kiKAmQOUmt3m1+szt4il6FJevaMlUxIgZiOMTOLCI2J2vq3WpuTRgKkB4gwaqIP2R5W9Rl54DTb/am9g6PnaXgm96iLedDihAS+YvwJCCt8v+7C1U3GDBkKQKvAbHEMuTAQYSAfOkFdFBqt2g6FXdbg5jcNpbg8jJnWeANpVxeFle8YRwb8MtEFqsqTo6/umD8Xltthai9CuLY9L28EoBWU0TbHzClCDPYwllpKvz9/deLaxKd0K432YBAL5ND6RXCrINbDjUc839B7FitCZ20nghShY6mcl4+BP+nqL3f7RcSWa4KLXQo/VmP8MHKRcV7UdJodux3RolxGOwCAM0UVG8W3kTWSonDHNKIHXMdW0c3CYzCM4fVgHbbYuy3vcnvShf+DRrF4dagHa0Pc7O83EZGRCng15pfHyvWRDxvtmBLY98nHqwr3MrXagxenV62m8oPT8cxNMMwZC7YEfox2OpKtCbtmA+PseJkG2gfpuF3OOanCBXOpqVKr', + 'f3MZ9nZ4+edNQ7WbhAP9C39MKHnt43aBdUYULPnz5j5Q9BgfpexhEEVUkyESr4sYNuMjcOvl3Jl+jBOmPVLiUsRjjfQN8DmSNbxpriq4ghqlgGX+xIO+ZewFImhVEyebOllv78jEb+JLuctTp/xs3wusAmGQg0aBA5o68h6aCgv22IwD1KlKuZMRvox0/VpiOBXUMJE4djPUKeK1lih4f+VSKuc0GEVIHUMLrxzIioJFXYh8ecAyogQCgJ8Zi8ArH/W9h5Xkje+l9yR9ivT0XUUtG/HHEU9f2F9zSoXeJuo/bF7IVnwhSz7ZFqvRMUixE/Ap7n+4m8UR55w3ESRiG1YIEjubBbojDFTe1gRaxedSlha+xNYfTmO1INCYV1H3bBkj47OqYWduGnjOQUlGmwc3TI972EFZh8wySA+4gR1RYxmTgakVIg/ZNekqj2AdgqDhBdOLtUl1+V7MtTVYrBBFSUXqOip4zR9P7aw6K8gJa5CdrS/D9u/5DBXNAcgY86fSOvKGyZjk0iHJYvReoYN42MWOHVsyHeu4sg0046nNOMlA/DLPfbsHnA==' + ], + [ + 'pTImHFMRv2Qv/ELEtVCw/3cyhbZJ24aeCCWkY4ASn50=', + 'PwtdqFKneOOp7AGB4/nCn5+KGhH752ff', + 'pg+6Rbh0uBVYxJ3fVjlphpdV0dRC+fn5blPw6NDEyGIRNQXxk2W79P/HY25zMYWgZeiqA+HSkcaWcAm0yebRb9fjl12b2tuzJ45xIqnzAh/d9PTV03PCwGBAPSOv1CpWvsmvE6YLD4I546Bhk7PypcVDicD0fxpz+FfTgFzypv8CNkNHiqx5zGYyRcDy/M3veLe9eNjB1r5wSZAAt9+TdIiLO0wDt+qrg+6KVz+W9CHgT2FyRCwuXVh7cx5U5sXWGrN8aFEzP8vlc+mnbRt3BH3x008bfE4JpDzuJiYxmO0WNybPVFPnOeix5n5V3oNJhtOLDbL/tEGPsdQA/Xp1Op3+GeUT4ngVOAOt29Wpj+kGhcgSnxI+P9/BY4GYWwV8J8En+igi+8PbgWt9eLW9wujF8P+/2rk45f26ekFuJaZosti4aQ0WkVe4zwfJfrKV2rlF2CfOQlOsLKoX2v8wE0m5+QASoAno3RWbKWL7eN/NpB5xwgva93xF02Hi3GFgY0G/Dz5gBsgnMHt0QOcrI6wUK4LtKZJ4rckeqw==', + 'hzCa8iFjRbtLaPeOMDGupDLaTNWO9k76VIXip49C+xJ9xGOfkCd6MT6RaduPEXca8YH6Y2ifGKVJU3cgWefaMvxxUrceQ9o+GVpoDqG4q7gKXat8/wBccH+z2hv8Lvxi+v12Fz9vmEzbwoxP9OORx3Yt8H1AceSS0ODL+y+wiVjljwybiRaOOkeMgD+La7DclPFfNyjN8SM3yhEwSCOU3b1jvsx4J2I6Nbdsebnqo8G0cPGRQqcQIh0GIB3y8ZLOrTDpAk2TFPgRxZYykY3OvHh0HCsw6uyZJS4O3POM8JSAMpINmyGWYKmiGA1SHqe93vlIKan1UxdofZVWfpF+maO5o4+K+h5CQ/Qx6SaduH+2PlPQIWAyGWPqDd6ouJTWVLLOORl1mokLWP4oOcFC7MYB49LgfQtvj5lqIzFQ/+e7Y8mmQoJ08BYl3TZvdh+wssKA1WQ61yvRYHg+OGRWNlVXamTvEj916xTQxx1Tx2E5dJ9HCEvzbCpsJUOBYOEvQBULxjxJI6QD53CkQ+weIIPav0v6bxX9f2vrRTfNgQG6HpdhbL9oJvotpD4=' + ], + [ + 'UjPrfS5eqMcDzL399466enlXle2hLb6nPtAqdSCyU4c=', + 'ymW2DcAiDxHlYkJfuqkzW4j9odrN5qLQ', + 'XucDWlfqz3r6ePUWe7+8GZaLpDT2gIapmVFBd2JAyWELVwxuTaCafL5EB+5tZN6G4iB6LCz/aG/5gYf+Hg2bXYZ3GYzcAkOMd7dNFWtlbEKRdVZxXKUrk5LABdHgLtfhYw3W+JlXv/GwfHCqVcNNrnBECnqh6DhyynznZv5tErk6l5eHGqxDEvetK5pE03vuCucGeg4pyYWouoEBTO++B8A0fj+LYZZP9g+nf4sLCrAXoGXNJejApuvVKk3Qc6lH8und42thw5q3ItoLx7LjpoV40YFpwEVWZmRj10OE8dyVbNw+sNpPVzYTUwVcJSQATfkh5xqCt5a8kVDcMH0xNpnYHzS5/TIahazA7iXAQQ6dSGZE/7xLHvoRCjjgLUeqcvAskzo2vv+eiPCOH1YX+M0fMaU71ieXYnwgUQOOA0PhSXFBfaASM2pR1uKZ5K0FyaYaQ/xZFHh/lG1HToyDnHLU5dW/Tfe4sOYYojmWLXYOR+z4OD8dkWNZ3IHd/4mlzHe6HrKkd7RTkEy6pgVlotdrtlRSteXA4z+dDow=', + 'aFlW0/kssLKuzcO9iFTtHuSc+EN+XTXeKGfIbz4xcphPkU6DA++VDNXdftC6nqtWRLvwMl56eZ2JOiIVoUs05JfTM/jZyw7ErGQS66E5b7MEUepG1NJYsgjLNWC6FDRBH7kB+JhTwX1uZ1AYC1T3j+8MYNWmrz/xJ2q/ITKKmgS4GYAoBXzkrPAj6KEYWcgQVg2SCD09AkTzC4vftADHFf3r7BPDNyHy7txiKUn+i9mrZ/eD6j8VAsgE1qZaaIm/bZ8zyiRhJe9iLeXPvs3MLsh1PXOQRQA8uYywejI8/Do3n1AWWMPS3ZC85wqKQBdVeXBKChhGVYkOxJxFoSFeIoADA3E2HQVI6YGwgg4i8ySHlTLw6lowvCXnAsShrTwM2ffrgeeFu+C2V/6fykG7uilzbdTj0KyTici6v4/o5Ltc9vygv7Zyh98vtDVGezjawmFG8Y2H7m80Ab9mljsZyyuEdCRAgbdkm4WGtDi2EUL+MB+nOM02rVhX33Jj2Hf/1mvuPoD7BynYNoq+PzzStqfXyBHVBPJuHy3E9h4ROv+gpzqgrVDxLSMWH1AH' + ], + [ + 'VCIg/tjJWXpaj7OFli5zRjXrSpOFcU2SHHfU2bCjRfU=', + 'bjC1m4E7vtWFbemJPiA5fWXSawMHO0VC', + '5okobPHRm/zcRPyd5qG0buG+ZYJthvUcqg2ll4ZM2rKSLG/ahfZDG6qlxQpxsleqc3hYKAwMHV6PW1kMFYu8FYuWRgtsQ00+GYVK4HreIBNX6K8R49eh//pXgbgUQXAnovZRCy3I17dqkokHZFoRbl7HAOqrOo7AF0AzOpm0b0dMPy7l1d++NfElPfm5nabIjz0n2Vtmnp4ImFY+998x1V95yjTQM+KEc1jETRd+PijBH3Z0mpBYtCoEFJP65FNgcwMnwfQAMOdIF4bpmUlyX4iwNzRD9P4SlR/LYSLXC3B3OwAIBsCY+/4fjNTXF7xKDUH7ZHxy+kRyIFegQyBLrHR9ruzAR4bLEbEJwduEeD0woEw8TYKxb8Oqecp5ehrXu1wuyjsAGV88mBAYZ0Ui2NS01mGBu4rhf4Bm2UuIr8TjAgWDPtLorTLZ/YJboe63q3jvNsfsYYJsEZ6RIUOG42uO7fX/ycu6N/SScx2gEGz2aNBjvQi+PhWsOjHH35Hft6RP6zcomf1FSQCkaLq0Sa+OxBRLebvdqz8JM+hi', + '7mtZ9VQvpDil7X+snEHubgFDn2Osbcg0ZE4tfPvpb9mk9SObmIhC9TNPRBRs+k0I536a/gmVZdTHvGJqRwr7hHAUmayqB+CvCnvJ7mHpm+Dl37vnangU2+nnjlHeq6Y2Jqh3alpQNE/PFpL40yIX+mOPSX2LC3mWSQMx+ow1yT/6vM+JoWFJmDwp/QeyiRKvwJl7YkEmK6VTGq9t8FrHEY6uhUyuV6EiUb76pOU7t5mtbwSDTOv/gb0F7VQ+ctkL+Jhs/1mZNdB4N0XpZM+KWm0sJ99CKhK8+dJ1c0iqaceJ6gBIMJake86Q41ND2t9wk0nP4/uqGr496CIMK0nN7KvH0HNKvVNx76GYEP7tTkbIFz8RJpp5K6sBgbI3zM01CTyQ/Bi43AHBoqgYe5uHl7Z2ruhW+7zSItW3CeiAtEgjYPFt2p+NWqRy9nSUI4jLgpx3ozVYmdDI175/IBpd8MqUoZS05eWlU9sEdaqXl9FxK43Bn2AuASgvRoJcdJHuVhoVagT2Af+8breVA5uZHOu5kjgei+5PLwqQHkJyD8q3Gujr0Dsibxj7ttptHA==' + ], + [ + '/NmghroX0grSK5p8dOqiATnPQTCkzxbHrQorVyapy+U=', + 'cn0CqlikWkTY3WS5N0TbDJfRef8YpLB3', + '18ilpy8J5WxrSWoHztpc7ucBSlWV7WLaixt2cMRTiinnYYswrEnTN1YZdjRzO4IuutGO7B8TFXZZVZZHfl7bQQcOrPZP3yJ5Ci3UBXw5PDKX47gKyi91cAFp9Hf+NRjQHTyJixKItNtvx3SatZCkDcWGILNkhx4cjKvyfHKycxVQQvsm238VNDizE3Mk9jmZ6m2UUiwaBfO0tovTylbe/gctnixECT9y1KmU/MdTInWw5I2X4UldVUmzgZ4nVf4p2qDZZEZZrHhUK7xBNgXvlHfJK9nXDoay5/Ao7TQVs6LBrcDaAggNcIP36DZk9XgJTL6udwUJtOqYLnubVTJDoFlVx06B01W0laViOQcyd1+1caJxGt98Tcb5nPbcJ49/uDU0CjyU2MtQV8QemxKlVM7gzG/wV8GaldC+aAt2m3+NQP++nDQm6ueFxZYziEqRKLnB5vP0fas91bf1W1XKjR/zdFgfk2Ntz6O1NjrXw+ZGhlgj6s4VnijFMvcMMRRFoC6AgwjayXE6sEN/Cjwa7HtAeISuXGFCkRdLBYNL/Q==', + 'BgmwqdfooXAUXRL4oStc/PCWyLPiUMAmGwz6i2xrQd+Bf3p/g+jx8pRXyUMUqJxABT6MDfamhQ9lpxx28tyMD1E+PCUrVa7DlHjm6HokyP69ZqrxPi47eU6+irqg9DKLJLnaX4mZgmACryOrIbHdkk4P83Mh3ZzWfeOFulTgQouyj0/EPs6GfuXwog0f/qJIpOW17FzgvTeOG9S3ZChOMN2DH9RkyetUdA0uqtainUbZId37lTGo2XPAQFcq6Q1p3HcpF63MoVOJ3x2Tx6A6wZeTAzvrQ/XgBV3867r47vIhdWwqJZqAxgRImhfRoASBsdqw03HAW21oh9hv0bI4zirGst7rpfKTve506guNE+eAsyk4qSfvLp1+NqGlLB9a0H56SkYs5rP4+hg0ZtrWE0eGFliHQwQD0EE3R7c6T6FUyjDSa99NL4RROhn85FPhSgIB6llWBUyxjJk5hZF98oGdZW3yG6Cs3cXYYtUaTKWF3HJ7JqkDW56VlWjUAYIL0N2xbxoE0PqB9vns4y+Oy7tmmekeNHGUqghaX6OWS5AQd29LqCuEZ4lHhFMUNn4=' + ], + [ + '5LjLlQjDfwHa8y5QIoPKaM0D+JsZ25XQb/Yc2PkZvvM=', + 'uh9P5UCtIo218UKzHq+ggiLyJx/v5+oL', + '3EsXs57li/CHv9x2yHkYCaMOgcOfXZ5mAY1xCgvLiee2ozIosHK2tIH3AR4OAbO+82CpBLmEbT/1lB8iMMGB/E+Ivl8zD4JVJywacmKUlu8IaUpU+v8AmHy8tPIQWVi+RzWUedLToB+2zqcLPpTR9k/rS/2SP0lzGAYKp2HZl0pDP2HfsZG1agO4/ugmwdR0TFHDhDbkTkR8gcfdCMbzX+gdmeu6WcM5R/jXsSV8MhmDbMGDQWpoGIEFbQP2QirqJOBSOJ6Uxr/vACKKaR04g3XCviwT5pQMa/AqUK7TYzWnzu/crBSZOEBKfczOlSGJ5U34Wf+eNxBZuDzuG9QDJtqz98/QKTZ3zcE8Q2yaNmS/b6mouW/dZ9rDR6P+aUmBvXuyMY2G7N2W5pkZWlKf20j1Zedzi0OQNjirdNse8HSyzQkdoukfhnfvwKivqRvTkuS5Tuq99KT698e+4LrAhM4IT0dwlWgyGdbdQkAr4WchAklO/1gllDYY7RP3X3n64TshQ/Uk93AQTgTLTFUV69XMKbjUvJCoDUiKlMc08iQ=', + 'feNr5xCIy5cT0S4zUFnVqwJtC6FQDZAArQbFw/ak2bEJnpnuysO1ruxCLC9YTFXATzaxL0jlozi8Kqbmy3EBwoy+c+WX9h/lz5V4s6ZNe71Ks23meJE3NDjDSfntMaN3SxzecEs/BncNXgQazufmKRy3rxuvHibEo+80G/Ca2ZWtJLPCox3BdubAfIVeF2vjWUdvEFdiFoA1ZSDxZ9kGnYfbC0b1th6LCziiUkbz56/5QYj2rd2WgCErLVKbcFFST3EDABa0UhH2lmbRZLYDmhVbWvbLQgBIhzuxizWVRqT7zJWImdvtuC+sijBtaITfusUvFwLxVig7YIO10f0x4B7mSJxyauOAbse2uvB+zL4BHkszN/LO+5Bf+ZiMunyg7CUrLBjMIhCAVZstjP8BH1st4+jy2hvBv9HWEg5My26fHuXakuYMfvZ0nemINqLZrzu0ePDXAlOwu04O9RP58uA7wUTuBLFiO/Vfhh5YGvI5Sk6IBANm7pHHP9gCs45gBVMNJjFoyPxMZSxIHEEcFEFGXU9iUOAM9Phw9xYdxds9Der1W2vefq+awK4R8yNa' + ], + [ + 'GorlPWh6ksYTgqcUirnjHRqp5V1Lh40cyBICmgEzxBA=', + 'bJueYiHxQwemSE0v45H1eDcerunRsohi', + 'Jvz6XyzNUx0HGwnJLjjboR4FAeDCmH04dzpHUY/IRSHX3jGWO8ZbI5CQtgWHo8vMQCckbBN2yeiDwr+O92sqJvoze8Zq45LE9mPKwNTbnFlpx5MZp258Id1fBRXDRtBd+MrPnDvE0J8+6UJChmiUfLgrznTKEH9et8evOQ0yRZ+AWU+Rnr8BpgPpl3Z51XyBtkCkYS84x7YlUEMEkhz2U97JJ+P9+PECcBb+canuYgkK0m43qHvTuH/ISHma9jlX8WIV4pFckOPJh7+vYUgSjsgF4KzU89y9MRnkeutng0yuAKAv3dTXAkmZB+V9Tsjub9DJ2SVlgZ8mBd+2lzHmwrJUk3YHan7V9JG6GGp/7rTawiO9eMyPXZKEE63qNdpcvCq03NnefQCmXS7HDtMcoeHxy9xNaQPURHPeDS7zOw2UpSx0FH0bXQOG3GNi0eEZ74xstX9DrifHH1E90gTN3WvO9cDLQznRe/hNf89vBV1MBlZumk7T0wOpAIF9eDhgxUYdRmTknP/mO0RMFIdsvlx/JKWmNXHejianScljCpQt', + 'B/Hq2z6fIpbQm8xpsz8vgqW8F8MY9uxGpd2iILiiGE7VWLi7x5N6F97zVakGfExLJHxyT6kgJa3Mw6Rs8jSOGv+E9KCEcoMx8qWdr/i4rx3mC5N8r1te6UvcXyJAl1Kg+q9ay4eEWUDbc3dmj+PfKlYZR6fI2CmxAUjAKkv8yWry5g3VWW+WKmpRJheCKw4a4HQXRR7dxUJMmFPdosym5PU6s/2/XY1+d3j8BS4alDpc/Comnm0j3zLn8WM9oqiMemFFVUqRMLZFtVN/CZ3Z1iZv3Ta0eUK34LalZkCrKXXzVvE7SeYEssK3l8MFx48P2wTn59SUFbnlKKSevVsdwoqP0Fx+mJWz763xvcEobQxhqS/kU1mS+YNX3XqwsvMazbnvmrtAvwxrSLvi8W99trlHKMB6qZqio4vwSJ8DWvKye07uVuLeiDKxtK2O7VrOZGs80uBCu1rXxoETk+7T/VaNZjaJS5NCqlzcBE7H/JoqZqNmp5STxh1DmlCURzuuDEyoHxnxE8VT89NisTzYjIK4NReVtIvCu4TmTJ77MMfDcbqcPvT/WQRKI+6NAc6CcA==' + ], + [ + 'pL0Jo3Jkti3ArrArWtpbnm64TrLKNAeV+wMhiONsKv8=', + 'ykyqGpMp+IzRqd2h5jnrJZN6w5FWWIkN', + 'k7H6Oyv4Jw7VwH0ycRXHShV25+tofbEXSMDX08aGFx7fVpGopn2WbtX2FadLkI0PrFEGMUObshRVBFk3gcOQniCm6otB6IHQ0mzFALlxeG/JStKuOhXioZLNAuINED2Xi6pbbS4eE70ysEC/A5uuXKylDBQFtL1VfDt5UG2C/4F1wG2WJ9+I/lR3O4wfUwBegwy020g1AHlVvhlujqov4Lng63O5caxc7auvJnj+C0rmRBi9GSevEBLbnQ0YeVrw+dnY/0JhysXCwIYFgYRijrnBfTyv0TU1Jdek+N1SUp7+iA11BgIDCGul4+PCW9wanUF2HP3RW7NG32CejhhS05pjXhw4/QpdMOOODp/QVDHOLYEp7wmcVOLqW7xQ8VT8uPKrwglrcgoqT/XCyQeQUdx8NxiHqJgecuD0NNy6rg9Iy1iDtMqp8S0VIuEkkA+NNbRKoIt1cCmR1elX7vw3HLKTgCP9eXO5RRcKXM8LdCQskJ8H3lhyleuXSgrFFnXoVXtoknrcTMUwwj+aIfP6LfsvzgQA34yY6ytV4JiMIYIj2g==', + '9usNr2dYzsnZcDkUsltcNtAFzv+EGpVwnOdQjtobijf1n9inraAaHXncrazm5qhn4wcOHCHix6Vy7lB518eT/QkXk+QsVnXrh1ehIUNrAZPKx98XkBXLi+MVlFrrLx12ilGehEKc4LA3yDrcpc5wgGAbzZcfFgcBqfmk5DCpiE+3+lhceYH5oBKZuq2aOaMhPjIDoaBLPqSVDWdfnKRQiPgAbakWSCECEpyyJITgF7slYbPNXs0gjmN60iHq99S4jTkMRwKnSklKKKotefA4utA+wcFmZQnOmugXN/Wj5WZOUq4NUyytcRR9djNg8a7LOL6Fwm5C6uiljrZDJKGy1jBUMWuo6NOWZfg8t8dMU/0/zTNZfb7rWoDwbXPQ86elPr0qwvWCaEl5kYYE3GAd1nl9OfMVmbPFgwbQoAhry4r/Yz8hO+0nn9ThVtLSWJ2yErwGjmSliOuECmpH6lTKEI8JGJREUq0Ey5Dk8ZQ5eYVJDJ4B96+bFB6bztiVZ+Ji1VuMeIqcKpQtXbLeBzyt/1p9hDwea6lOwnItUTyCTL/BRLIEy+U63MDIFCPbJB3iYLc=' + ], + [ + '4HdERMuYIqdfLdwsCyojkQsAnALKmpCU5w3xc+fOMcI=', + 'U5A+R4SNy2xxhydYgY69AnZPOSHlDF/O', + 'BYXqdxc6dJUY2+iY/2gwiaMacuevCvs5QZEGW1vbx0MsEv1fpsDTTzcgdrlqVtQlSm28Nbn3Hof+l7uOBT70UBkCrFemYiVaf8+Wttlv3Dbhm7L4KjDK6brX8MIVmZUGP5Xbv7TIznotsTeAcw4sPQ7bGFXuqyXqm+raJI0rLikTxclg/yhMJyqAAtJPa3r4Jw1mM66SIBx0oODFN3IgwNcDTK8CLmf9mOtr/8aT6hwwCVfeXE3hx8yu4AXtBfPZssPwjZ+lwl9skt+oL/dmjd7FFuCcev83S+C3Oz0Pl5z4n1d9GOuzUgIbzm7jNk1X2f4Io793IgN6TX2in6hHAavhYmwne3dbYz0tzdX2pC1zL2XXwQQofdYHQkoCo3G/NWnGj9f9lSIawZ/6t1XgX4k/62jVIimNUkqObhUEH4KoCBwiv7RC7KvASo1DsWX4klrRfzgJD/fLsSGmuMmQu2OVX8PBWJB9cXZR0wiqHAmeZQlEiI5F01zoaHWUqOf9Kr5ncFpizS7YntxAb++CXU/y33xo0nEbs1cqCJT5txiWmrc=', + 'OuXIoOpn7bJlUPgSgzi6+krEAvTRlub3atJqfQNRy4/8kt7nZmPR4Z2Tts/Xy1ReLncTOEzbxd6zzd5ROD+dHZAgGidiZLjHl9P/4nXMyZJW5rVWu4IQ99hS+zeMvRhhBq4Bv8P0RIrLDX1jixLSS02iikiYMijOxV+8+K0qROz77NAKslcp7mL1+iWDca3erHvBveSqy80zXz3dTIsuZ7IXG4o3wWcl2JwivUtxHxUxhsLDT/xs0UZKnVJIrk/GUjOuHhOdQmkJQVUqhaM9i8/elBO1PIIk5yAIHtHc+fIqRFu1qPfEMXG6c0gpiEIOmI6BmwP+kxmCBCQb0grKYP91Ijg9kUubQBf5VvF/q70Ar0OyxOFMUJRnmpsK0LcjidvFvVsX7qEqyI2/d1Q7UmM6WOaQnT04724YCkw5Bx6HfjeuMZ0KYen36kcC/DGtSaIhX0SfVrvn06h3BBNi9B1lYuC3Rqaa7LshkW4+bNCMPL1QRUBdtd1G/D29tgKg4vpb30zKdQArxyssLpHf+zdNfR1pGhaMbZlfL2ipTCKXprvrQMV/dz5hydiinUoMEK1v' + ], + [ + 'G4JOI9MuPgR/b4qtUEFYKzRBiSmFnB3nfHG48KC1fRI=', + 'DuuuOcRVjhDbE5mO4Wu2V0V1s57L5gOm', + 'thgei1LZk13nR3YjkBZ/gW5Eto8cqzfiSWy+40RtpRHju3lvV2knMae0IAxk+pq0bMEVjVCzkRemS2lOlNKyGojMu/Y9XPgTVpLjK7Pl1F+umx/fXjKmaE+TATfRMZN3MjgyJVo/6qZ64+JfpWDL3UBWrTSKTafDr8D8R9/t2Zk7DKU6Dy4U+k4zUWQFk6g3OPUyqlFtrcGCRoTebKDWxj1y4LkDzC/DJnfDKtrbSEDU5WEFAhpNhtfyVa0umg4wp5K1ySkKxeKw9QWt4dxRgyF52xUxnIJy9Xu4KFXuQIEMJ9I33+3s8Tjld+VqT/PLitiPMO1QcmsmRKV2k8+nxeCQbz3Rmp0JTiDRThD4XMunps0cL+iOEKClQtT8c0APXbLDaqoHLcXDTCMB9cFsDfUxKgwIcGTGO1jjWVP6wZp68BtfzZW1KMW7nmyxDDgBAUp9PxnILA/cH+UCJQSFsbApm5sgqT1ambhOumhzyDnBFU8PXO+eqcv//rbyGbSD3jl4AgalfjewEkhkfroVMPLz/hlkSkEeWOQUOmOMgtNu09XE', + 'iWHR2OAn1RmALujGCr2Qh3HEeTcrYfm1nheRB+K6t2V9Ui+jtiuPaNLpBJSdb3Md3d+kMLzD9IfEUd6y5lJ5rhzPkJyhxTOn2KZFziN4NWB0ZmENOuz2Asa5ZmdvfUW0YDbzI925xMUlk9Ym+RjliFJIHwxOKzY9x5+4BML/w/kT8TGIYe7u+2NkqyKPLEPgTOQWRimrR+QAAWkUh3rbffbZb8YsfWHhJhBcYaS/V/6pAORjTOQxO0lwlkCSRVv+Kdum9YWvJC+6xJWtFn5DYqoY6PsbGcjmDEAK3V6oCRkVl6RPckR4KB2Me8qYMT5L904s+ge0rvRN5mYm/Of+bijQamcKXCLo4uXhwKrv/UaYO/C9oADC+O9/Zm94Cb0Ut1RCAZE0MBS4Xeokx+/YxP4bQCffdTQXVwXgzDEHIRAxP9VCLfCOx1FAfK3LZHPOVJpKQ5smW7NhFe7rrEp7kKMby+tNuk9y1pTaJRcuqyoPbdtKfCRNLfnQNRADp0sblPgI0DwpPHMMcp86gUyyenrAEcvJK938cZtZDPfAjy0uSWk3NXT5K/2sIXv/X9Mo/34vUQ==' + ], + [ + 'GJ6KH0hXHikOLt4hBqdiHb0Drz4nXOvWIi5gbv0B04o=', + '2oZp8MKGy2I3oLAkra5jEuH3iyKjWVg3', + 'abwwtRIJkHBRMohxJIehSm8HqHdNQgpGMnH8mu/w9SgFulU+sTZ6rvgtNWnl20rJwstaWZ7Xc3cAQsKtDuJcUEI3jkjClwYIhZCJ7bIP5eAfCHxwF3KplKUM9FbdD0S7t2uPkD2leuLe7mQps9USzLP57EpvkiIPNme+v0zzUmGrqUhQV0y+defBOLu2wiufbBg/Bh0O9b3BazSDNMZKQEPPVYsMI8RkEyu9/VuSzayf1T+v+u1NDFNpmn+Pj4J5wSFW8GN3R/ZP0OiRVqKRGja0HeVcumUWgbO4vAhBGTEU1SMHTivBTo2ulc+sYyCewW1dNja0mWQQ3+VSUi+G6tmSGyIvQ3fFfJjh+OwJ/Y9fRtimnZ971bfWletLkyHHRBtVfHz31OUyP8rXK4fXiNm0uUnrs2Gukuflk3683/AozMzndvr+iPH2qP1v1z+1DBnDLypNG0KRZpCEQJYblOv9TLbT39vJIJpQl4MfQY8PaH5XQk12TfA6cgZViyJwyW3/Nc2j1zzW4JJFt5qy0wqu3jgBaC5TPodKAoSGqp625r9+Lw==', + 'EoVX0gRpxLccLEMT4fQLbfVKhj9/fKkyjgRWlVV6GTP572B1M7c/NFAZ1zE+MdujufTmdcZQPIm/h3wfdvpDclg4uNoptT3XUbZ0x78GP9uX8EDf2Q9DHKYAQQSBjuo96I7m+zk5iX0HnxE1ZN3iTCltytkErFZou6vPi0B68XeR5pYD2VL1TIhIBSZm2VbIm3FeZ1qSfmA51imz5IOQI4ZtBwOawADq2WJLgAiSkqLqb0mt4QdlOvg80CTc7nutRRrmRuY083KyN/JyqRGyiMlp866nxl+ukwSJPHQcvja6ccPuW84e51OoI7C8/h7kHJRi+wjBZ1fvcQg+y3Rsx9QINGS0OoQlRCcUedgjJk+S0Z4sIjHrlpMpTfOyJzu59LJQVBlYVv1nVmykGu3mkjGmtgo2+27TgQdRzf4qdbaVybDlpSc7IwwjRlvARkBy2kx59c8V60Gu+AhiOdvt6v5gF1sdzAKOU9IMXLhZt0XJJFJL7KRthXoPJ3loqmuIggsrTlQw9MGbqPWnCcObyvBO7iULsi+H46sVgIJn0pG4/sx497YaTa7d0zFV3n2sDBGgLUE=' + ], + [ + '8kUCF61zo2O38X++M/GONj6+Zd/ySIBU32Bts8O8870=', + 'QFwYPb2oQAEGqE8XxcBut+E4egSD6xNi', + 'iQriBlmqyvD8u9YRkboRCHQ6qt7GpwruQNp6GukcoylZmZPYjCRy144HfYkYoWm3qr1ESjqsZtRt8YlEMoQnkegLccSRoO923yd7gO91wZwIraWW1JgSjSoHCngU7pGvsvDkZ66XfwLrjbE06rjSLl7ilYwYUUlVcxoE8KFqg5qRSTlO/Q2yJjGPuom3fcbi6er/0ZUg3KbHfMMMG/z6WX/XwGdyzJalyynysD7j80j1zpTP7zc/PQH1KESrQnt9VbTWO+tlRySKzAqaVO9PXwwqTrmBjYQUgnqQyMeKIGxsosis9OmsSvdnUz9v53B580hshNQpfd9l852r70U+bLJluxLU/CsMoFIzsWViE9lc1Rtd8FHofqRbyPIcvHs+kpcgbuCLSnBOiYu0VVcWGUxxiR9qcXN1B7OdrltyfhTG5iLsiRC/kL8RAURxOFpQwdFS7U5Fmhebi62g2WZjkgsQmvn2B8BUZypI/Xh+mZNASyEnLbr1cHyUuyhGovEu7WxAdEyyGmOFfkpqAp2DJxRa2IT3dnZQYqtgWm88F7pJ8K4W67Y=', + 'Z+kJRjzFYCqLAAAlaqdQnEEurQwndj0QQ9asQhFmVLvt0v5+jWWFpZUSDD8OL6Uty7/TPqfRtKJRMs0drSF9olmMhdpKG8sZ4JB2OGT85HOd0983BjMpzoJBzX37VDPeuKPhocOovvQCUsSjDHH3o0F3a9PN3ptIL51gCzea/+zVSEznZz1ZM3PT/O3DfgWAaKI3g+V8oug/VAJ1j96RBBULpZf7r+hwob6/zwNIDxw8YKM8AZtVBNgDI0s2stxNzrpcUuU+Ff4md/eHNaQB8ooyJwUxk3Q7MMrVE1RVxh3iyUuDXSJgSaiG7Gf55rezXZ4Di6cbpym9lLyzsVz2OxJ0m4ipmp+Zofah2JdTfXGYQ0joY+P/Y94ds7lZnP9aYOMWdhhKNZmXAz0n+UG7B8ZGZ3DzoaUH2Ci+J/Oe/1hUZE6qRGCgoX5978Qn9TVObX97usP8s9qiedGMYV/lyQTE+f2fhlHSKlGC81QSiCHh81X2jHUbHAn1P1Q/Xf1PEUsxAa2YHoMLEnWRCobez0cTk0JAaUaVjF1Yl955wKiMRqCBA6ssS8zKlbRYAO2l68Hcb0ph' + ], + [ + 'KC5JUDWCcxHHniMUbZyaImY6pQ+mWLtNyhvpRNoleC8=', + 'k1FCEdp6YcQAe1iVZ7gS4jvuLpn6hgq6', + 'ZGoAXJbnhsnr7E/ldBXfGz2W09oB+ac05A90S9+WzkVT+lsgZioiqFMmbfSrpwRDC9Uv62olofnKDzHOvuVurXs0oDiJGEQAD17jUvnQCJg+2gSJWYJwf2h0MWuUVhorn1WjNFvWw4rFKQlU56glJfu0QpmrBAV2xUIDTKkMviXHH1NJUhfikHfftgBk60+tiG+hgVt9VSHZATY0Y2D8xMl35CIIqFGVlVdHNJwhVlS9fDPlIEEqYkp84K8/HEVC/OhjiA4M/BgYqzls6u4EbqNCpW5lZSEO8Nlr0aVzJB4z2t/82Ci5lUXNzM+NYEzcQnng2yFoC+b79Xz/EXU/fhLRpHZTkAzHeXNlVeA9Mdbr0UYlp/sc2eCpY5DAPNTteGeKlPYXFV142IVQRszxii90t6ISwNTV3p/whhByaFZWyWjiTDR5qPaqRlB5Vjzf+tHz+ZFGmUnXBnWRVvaXoSTZTvb45XogRr1HfhK5Fug0wPjzUwCdEZQqi0+zYOt2VwmG5+z4OzXUElLuJpUH4AY1v+ejxbxo6QS3AseIm4EUv3vAoQU0', + 'r9wW4cQB08bPnwGbY3CkpH+jBUrC9NUtwTdBRwtrJs6EemFssr3mOjLA9HzLhcMOs42C/jEI67p62zJHZLfVvCJ1OVSU+Q4Tpr1cb3SlS26LgUM8iki1K42Twh5FRVKJa9F86slcu51mA3YMJdawyT8pF5tDBMnOVaisb9B/5PEw7yDrmfejWX0Ik/dYzkpVMqHrDFVD9QAZjeaXLU8odgivPe+Ms6TXmVR7GcC/8EHReiFDfIj3F2w40U26LuffBuZZvbpNBpUQSCnpCu9U1YHlfYwRWFWHE+mfItiPbPixYcNhQKjqncTwQk5O94m4RPx4bPX/a/WE4w94fGa4jOYbmMgQktXotIayjkQDn2bSZL2xpUpXE/GVUx40pJprwua4rvloAhTWd6aIk5jpsIJs6UP6AF6xFFMDIQkgb2fdLSMVhgkErdOG7vUu2OyGKndyXnQO4P2m9F6Rbsp5cE+nQ2t3trHi/FITzXfpOd5vnC139AKhWTrl7U8+wesT8VH8fUWveXAtCMMQcK8bag3SaoMftT7Rq7IxjJdVfID8x8dqz5eqSIKuUHmHyIfNEY/pz3xwfw==' + ], + [ + 'xhrLtVXvvCp1yjF6x3lntHAqb3vcHFO8kJ/NKDcwGJ4=', + 'u6sxIr0Cy8DIbAKp6Z7YzsS//miaNhC+', + 'KxN18wAPPt1pZyWROZkWkvn3h/GOZ68G+JqR4TviuPPh5UpA6vJCGCtU1EdtQi2liVIOnctmezG0TlYauMTVemK5wSgVn8H/FkORu2ovq6h2nRVLMLCu8ZLLagYL3BSW0H0Z1Fiy4bjUWLVg/a+SI7Xch1/oPEooLloN4lyFu2lAfJyV1mHUtYzcNmnq0d+UOIT7XDCUMi/YQ65n/RrL/a1U1AjlZZV6GcLUbbZqau+LnbCnrKqvBiuJZCYCj+XJgcv19lFKiodrp/xdqBnqv5eeb+F63785vKi/7LA0SW8CT4k3XtzSxggtivswkJAa/E5Xvt60nJyKtkyXeB8oLkcDwwMS7C2qEGRyfmZwNmNimaiMp7oUa3Zp+i1oa9AUy7Y5adpntkzw9ZMJPVsiodp14cbyHYS5sF68oZgdx594IbVUqUgar0VGELEr4UVBlmW8vW4XNC8piAFIdXc1Lrfksp2nMKRh01j59jP/xw9WCmiiOo20hY3sXQczGbo4YPoIV3y4DSbyFBgCniBn3RILU94eVNneKUJgg7aZfXLkkvtR/vBqPw==', + 'HtuxVDcFrtUxsAjSvMC4eR3hKClGEF6goxt8C/XNmcBiyn22jenlKbQqKTXjR18JitC5kbrit9QpaHIoFJbskDSeqmuJJY3OPNPz/7By1D+xMS+s9DT0+IVNAMxqEpaeaW+nE2EuFtZOV4fA3zrJ29Cx6tUvAzmaUfltOFB1wWj1ATBW4OVw06/qYTjRSR6I9+EN8z+qhNuiT63H/O2QPMCYvWWcTg6CPvvT18Bq77u40OpCg09SCXFnQ+Ukq/IaNBwy/D3eF9xyx570+8hYHmKky2DUtTuYXO3jzF7X7N+tnctx8G8cGv19WSna6/jIvsgdBj0QTHWAtMiryn7cloG+eruTlqFagMZeXP0bcCv3091hYx7rIfe2+ONBfVYLIGXJvGJC2ldj9IGebBwhpoF74sElfGaC0l9xg5et+K2p8l4RJw9pHm83uW1fgb4aAI3XdR/hGQJ2h73bCHIoXWHQNKzBz3NCRyOU9ukOk8DwSVZ5mQkVeWIWRn9FDN1B1+m7cD6swpWarsXjPyE4jI6pR7uTCaoeRVXpDjzQdpjxsdy7zPM3FD510GeRHwCbSfZ/syrTNdY=' + ], + [ + 'VujbYYLlQqUAT3sRr8LVzqySGF90F7HW4gshfIKy1Po=', + 'OB7dKy/l+dzDoVotyonLM5C0V3Iw6mOt', + '0KC/hTAzlciFDJAKbqBe0V6QFelYkeEeU9NOvek9X2akFqMfxql5BCc49zBY79c5nZWXBfTpRBHPAZImAq1aavg0yPzT6w6FhBy6MXEvpBRa7nKvu/TIcyM4T9l+ND6kxCiTgHvDSlFEAZWZO70uiQ+5SjPl4hjQ/JSSPoae4qCgQ3Becr/UxBN0spS2p68jVAWaebU+Rl2vX3yQ5veMOIOgvskhB/uP7W1pOM5axNZRndaON4Avph9u/V+ZbpjoFvdeQuXJhuQbUjFY9R6eDCIVMNv3U/TiqHnNiABRM59MYGyLn8q5suHrDl5pN9J3jIIPRse5/fDI0y3r0r9kjF7ynwU905djciRtUs6k3h024KEUEmXG7PLAtCSrBo/hFqDvp5u6LEFjqcQ492+lObtVoacpmF3piaaurQUqwN7pqvuseR2K7x8AFZ1nAMQAP/aCS8e4f/pUI3jhmJl4kRnmTsV5VPEHPgsZvwBs8Z//7HilWTGo+UZ1Na6580qiCLbVCWzI8US0013hw3nAWzDOgTCF3MFFc9IDgExMy+8cZXyofKzcgP0=', + 'hxbo0+DSsJNsRh4B70A9Zu64rr0N85zJ1rAM1kGeAeValIPAelVmkPiT0cZZdGvxCCSj7UKs6hVxsJMcaf2SqFFWvlgV7IpIPgBDF/ZVt0hD77MxSeG4PSPzN41mbXJmznVAoQ2HnxUt3FQwGQMMhdzcIdDYRHiYAlNoXyWZCubH1iC9BQqf5Jx3BaLoxwtrrwep4eVPdBnHV1DQYOJv4qXZiwTWcLbaAjvCxvQWmooEDhxbhjQBznwi0/Stg2Xzkxu5WuW7nG97acgmQFpMgPfsEnnaVm+A7oEWhqUOchcjYOuWhAZT/ww2OG1CuQE9hKCP9wlnoF/zJCES6epY6Muz58G1rb/M5sHPUqnZqHp7+A2Hd3MQEJbqJSXJZwCO6OX2TRcrHjLGP7yWMrBwWyUiCLaxROu6NOcvMXtVAQNJUqA32AS6j1z5uWG79giuvnkbf/NC9Gh2K5uJdjlh9Fvq3cYfUuWOpih4DMINQ/BE22VN9DhLDMnljWJk9ypnhwOGZZ9kF7VBZT5tp1lHtS8snDrjQgmGKi23aN7Y/Uywg0xsIn9DIjlOepsRZdiix2RNcmRUR9Qe' + ], + [ + 'uzFQhSn2rmHmn+q94sjql/67/B2ToHgbSZ28NpsSR4I=', + 'Cfe8w1bfHuD0m4gz+bktIWo6sKN1dviW', + 'BHNWz+igJf/b/8vLrK4mDnvfb1Yy2/HRgbsIyr6cO3YU4BiXQ3hmi1MNDLn1v/+gfBmTlDYTDbu0+X9vIRM6G2PINWuWE9AkYAyNk5B15oar5+pgkyzDlLOqpSUR3Seg8Efs24uP+QEguhE1hN4X2tbPBiybrlzuo5aP3WGz83uG9xcKfHi5kRpEFceIQLwrWKOTcAFhaZCVnX7gU00RtiYEZKUKFadc/SjLXJIDuTjf4lPB4bzIRvkFRTkNMrHoRnGgiwP6O/09EP33bz6BpXqSl1U+4YOd7nw8bje5lSC8aIkbZcTAGUnX78i2BXCWQ4cGlhTRjzLFo8g39KHEr4MZxSAgJLmiz94sXK5bXz/ZzPf56YMeE+LuFaEp4oisJzx3WXABCnLsY3r7mPbJcWyGTgKO1YXUI8MnB/Ei9a3iFciD2d3x6cBf7XyMKoR1ezOtXsItJU/UrQK+gZPK+Dp7uNfMywUD/OL6Utxw3bEQTeZfWq96fV9m60GIRzkShqlUNbiBgG2kxmDTqy6YDjwGXy1MclDcYlFk0StQpR0RiJFg5MtE1jJu', + 'RBihfLcxbOLXnrf5YVAFF4YBFIbBzPhEV3Xxahhz+3hpLfx6sr1wY6fTSsIvXWlrXiaiFwX4j7mXdqS2kiKEnmuOAvmSdIgHjBfmTztueXRTlP7Qvi7axsxHEuVFh1W384vvvWLab/SvnxWKlB5M8e2rP0xu6aedGotB7aePTvYcLq6XKaTE6RKXiEZa1sdid39ufM9JxAMnKRb1ZtOeP70M+YwNCr7OLYDkBUz6L3JDCdkrPquY9n4P3e3RGIE//e3XdNgPQf+JYJb7s7JQlH6w4dQN4QRggQjKIr/7aIrOsPLV3UtYYmiJpjrnBXqpID/H91AErivxLvoCSbrLLuhU/hjJnEGkRpWcsVc9lA3d2j50rEI8G4clFvlypaMaIZCtymjpWa+QLZEXMW347FxgBxhJjrYxx4/oCehatEHToZtCUG8mwlq1xwlyuolnwdHLtW+TYgjUuHAdunPcHlIRJthVvR+1LgWO1N0pZv1KYNwfyDELrsybn04j8S28GIa4bqQkfqZwB/r0ImUuKHMrS4n21G20VfNiFKPhGSkSo/tLmWz2xA2xvx+UEvq6n4fDvjGncOSdKQ==' + ], + [ + '9KE5ljLCg1Y2V5ZvZxMYs4agy0Tg+FkkNglr+/If6Wo=', + '6OpYqGntRJTEukLJCDVPMYh5cRo/6+f4', + '0XkXMXQ2bgYClybvkBuvQ4NZa1SHSXXVj88vB5+MA+Rx61CYJJW/8cmG4kKOu5CJ1mkSPl/zmaRBCkUBHOk3BmZDZsrdiHVnb7kXaPrRJRz71hPCSaH1SPgtZVLV3D/8T4ZsSP1QWUBXphMsuWKzsCL1i+a6NPSlkMRsfQ61JsdKoMW6/+pulsd5keqBUboE1BpS9V9Ra21O4oK6TSnBus5bV45Dm4kVZY/WAXcP28mnO31yZT/+8j0kdmRzGwDeG6gaMNUtRvmiehsQtgaPuOE3pVuxRpJJf0ujwh1rLEEWisl3P+sjBgGaqDS6q3v9om95bEp0TlQE5EkpGDyiCFaXzpolyctsirDlVUt/C6JNnnGbn6abmgVr6Yjy52WPuS5JXMvdRnlBRPAhartKCdFIgaHzmk/+Sgk5f5brkCawlvz80y7r7KTr+xYFeCLKO7DkGsdqEpVUtirsBRZ2svUV0G1SM038z9OWVr7yL37Rg+GhQqCCrcERxvVSorbZDuP5aQMBlQtiIP9DpGjM6Z0vn91MOxgGzPwCec30xVHLDtMj8RUya9648g==', + '0X5gJ+pFHYO29uBoKXoPIa9yfVoYTDUX52s1NmuJT9XSVsRIX+vhBd8ho0+Ddcb0QA2QvNx8w5AAX5dQp7Y4BYhKI7WUDqELz73yYD4FN47FQ+VVCeaUGkHe03gApTgHqOu7gwknRdmhjueLYGB/5zDP2k+/3Y/Kd1JJotJps754ucsI6JiGad9yyo1/fSMpj4Sek0eUjRCs9YUUlEvGUjn101C7oOx8fdt5MFKAKQmxa8jHlYmApMtR8r5g2krTLDDaSDqZ523/rqOTnec2mTLFSBIMm8/9eGyNlbWzYU1Y1dTuyIMhxlLXjjQD0NwAvBhShK27jK9tx7mECNqz8b7DelrLAa5da1SMPO+VLMlNI/Y2cbdRnGjiVeTXDTrOS9Rb81IHNFq5M+IYJ4YrsPo9nXhurHcYCnZrItO6hsEQ9sl8u9HnLamr6SP2BIlJt1oLYDKrcHiwKTHpdGGqbIHDq378QJaAqrnEc1iymFpUv9sxniAySNkJ7cxIVS7BpQrlvhHUEt9baBSoiJ/XTCr4H/ZX3I/FVjiwswIHPLJ+JhxilPgVLkgOKNPLJ6cHRVKxykSogQ2bMSQ=' + ], + [ + '+8vQQeV0DH/Z768OtXm9rKMprty/CNB25/2BI+EkjVA=', + 'yC54d1WJWDrUiO0jXtWMp0cI5AjZ+mW6', + 'pCXn8UIyvm67nY+wl4dmIZy0YN5cGG0/v6eRnxAkTC7wx+Juo93MfIkTKHv+mk7iaTWnndSs2m6tTbkbARYh0i9e/KzK5cpKzvXWZ70U8+w7wp09AAisgVDwZkJYp7igb/VzLSaNPtJ5zazyWNUfdBTSptqWsctDyeNlMekqxMxlUo/Y9eqcPJqco9CbH7OOBtgsM3D+PaVrW2cd10y5q+60WegXU9fcvTsa13F2HzRnMrsl3hPkT3CcaAKPfKtop1zS48FyPT1RTDP1Edu+PkgX7++VS4QyVKGXO3FlyJXRLjSk/2lw74dYglQbCpQCbHAb5mwH+GRJN2tFqmD9nFrwn1FDDbhFAzh5881d/Nc3tVP9rz+eZpZ/y4s8ocxsPx7uT/FmQUcSiKvL2TcQut2VEqfMxaeqfk/nnnihym5CUBGLzcGyKq+MJ4HlSMbanMM6te8ZBhwaKUXZOH4U+Y3FhsBPdHtT2N/DM/pxWMBlmRtjabSACqfxR8FHs99o+/+iRYVai/Iw/5to+QbeAg1gWgcG8tP1fF7qAk+C7sioWewWtxtGk1j/Kv4=', + 'J4WQMYu+C0+Qk+G9/hB+SYnegKxBBBE4bRwmqXBsJFaCDIMSFU5JA3BJypucTDoVCpkoaMGyXFdtVQHwkr9+BYhp8CivRFHgZmwIUhYwDMPbq8biOhWMn5qS9DfPTDtVtvrENumo+hBjq7m68/tnDuxUi8yfmF3t9fOBwdHxqXgA2qJVYdi5oWQZ2eVF9xZGR82bRDzvI3lauvz5syiWpGKtCIuB/DR3h4vRLNEFe/HeGgAs/yC+w7j6OhTOGIKE0tPiO8V+h3Afx5S54j/oMVNKmSKbhUAOegA79ZlJWMseKnAIm813aupUfJ/46ibutmpfIuW8jw+OJ8152ZY6ekVFLEfuPaFexncLrRHJAVpDb/CslumXpqgSEKu7jMUFHQu17nNyfCCpaGxJteasmyjd4wZEZOaIjoOCqpRjwLwzMpBRkD2XQ9NJ7IwU9daf5SvwM8vuMkE0/7d+crQVs4jUFtyFy/fjfTHn/j9i7uL9Vq05oiXUsjDsN6kK+aUqJce7YrN6cMhCQ3Pg3mNImXEl7Y4dB2iVUobZ4dQcpftp7snskGkFj8o6ODmjB4X9PdF9vaMCgjc3mGdL' + ], + [ + 'vuc1BIHYJbnr4tA4QvRfA1DocYCK5FbsWYhPYbcTYZo=', + 'gxm7ARZOgWXkEc1mYkJCHBNb02xOlP2b', + '3VpQdL/b6rcSiIyrBKKsoiS7xqw7s+X9eCyPoF26rNjiwWSyxnZ8ME2EJg9Kw1bixGf32K38Zv+fGIRO4MSfavmL/zON0yhzHn6IHAMRh0d6umb3m8IaiIMGu2ZWUOOG5ZGePBzas2rOYLV5wg9YMeyEzz3xMQG3MKqlJR9G4Ai8yAXzk3hhFgjWxgl8TvpCMDFw0TRbmKX1N8HKKr6NATVPsRvXR6H3vMVvkGZan81XrxIout10shrAFT73Fn3poCp3FpJciv7PgOw3ZL0JDGCM/7P9rM1mUQ3Msbn4cT09DQJRq/7uANoa7989t5KU//HadtxT5JWSqu8PVuEG6v42esDGywTwTj1Zmb4qFlbNnPeVVQxlYd8GoZH0xmRiHlYnLM1vDGbBoRD0VK0QZaNJjQyyCXyQOJOhs7vcrHDeUKl0uQAMHFRo2THLy9W8HXscZmy/I9/sbDMzPCmOvmMzqfa2WEwpsVlvACTFi/DZBuW/aT3kCoU9w/lHopaxPoc3V+oeWybeFs8XVymVAwZHp/YbLGli2548ycksGUsXFI07slNQGSostpIr', + 'IqIy4WB6xED/us9mkOUcuKrp+zLy6xRA0Vzcr8pLSOO+8Hr/EA4mfRO2RDnZkd4K8YNBKQY1J17hvkyXe3Ulc8fp8oK2Qcw5ZTETR6L5c/bGOkifG9Wyotoiziwiqog87FBz/u046gfIr7bubpK1fRieD1IyRv5jCqqNtSVCcij6CrOt4fzkA1enjl63nbKV46J8pWl5eZjuhFKyxaannavNYjCojHSreBXG1X0Hj/v2zHAZawvqnT8CAHlUn/eN5UKtETxUVG6tN8EsBXd5LZRscpqDugKEK61bQTwLeUr+N/G9aOhzHQOjPJ/tXx7PQRowsqab/feL2wTsDUmhVvtEFHStr6Xuv2BjC04ugjzKZ/qqRPYeTrvDeX5FSeIz9dQlMXHw/dzSDiqUheJsq4E2rUkUmuDuiapZR4HjQF3oLoGZ6XcwAHkTyMzghjAByTNhNIDkqX558Re+Ija6rUxVmqtTvVy/U8h7VaVcEyIk7KzYLJXkaZFDK3zF0+6ZtM8eDTeXPnhwY6wXoFBcYtydCGn8oMH3nKZbeRmulmDjqEArePBCW2kyy+pS0Gi+we+wXRC0/fIX/ntwLA==' + ], + [ + 'W2+MVok0+jiXYY+FNn153nFK2llimNfMwCz/jKAgMno=', + 'U4rJoH9dKX2h+qIe7ZYViRmnnyTTFdIG', + 'jRCJHUZob/xGp4APNUM49alPitqddfYtF5sSTkl0BpSVcC+zf+T5w6Xkm9W4kNqegW/kDTqNghNNdwrH5ZD/DuQ7kYWjym654+yR1jhr5yqe+gejgMKF8+LoWZahxi3ZQGAgTcIevJfTtymACWwP3xS1iY+RUCQcRnRAzuOD7fMQyolRwHVV9DVh+Th1y0gGmp8vcdZyOJq1FuED2a3KDEpJLTAwOcjFW0iCurv5uaitDbF+cYlf2BkwUKw4QKqvj+9vKqUB8nv1HhCXOocNOICF/7Dlq0VRECFulKAcBHiTdG+dYA7CfykQM9h7rhzxeB7RDO7CAwxUShFUDTv/wPeGLMIaRZX7PMnXNuWmRK5Baj9ZKZrvfh2qMscrhEi/L6/X7TzVXcep3lXS8zZOIxPFQF3dnLqxs8iCZvIxsGOZWXkITACdhjOcY9/zWuTW5d8iWuapGFSq1z5H554T9r4TN6RzeHuQaychnjimoMBPS5JK4JFWwe5zLxiGn3eIoaf3hoRp31pIS0iZBUMNX/AXv0b5VAwAf1f7zVWghrkhOfnk+alSOGSdJnJZgg==', + 'LZiBO8ZtH5st5e5uohIdLytWXOY95LjPJy4PG32qJ5/IB///H6plZsl/g+WCvq/N2fJVDSX6RSAbQfDbySp6e2eLrxXZuKUWnAQks+8ROkwVFG6B40wCv6T/7JxRij/BEYr/XMKSxPRUcNt0Y1pQMH0S80dXhRI57rCv/fU8C+JWw8JA9+CctUSP4v06Xd2OLv7WeZofSWIXEtjlryujkcAF5C1TfGdGOPfQ3Pat3nI8E8M640sk14TMA2KPpwBGE7EgAJjxRJIe+JcivPLyLli5rP8j1Q7nb7+7580e79QHfF8/sW8N0WWy8U4n5ctSyFXv0zts61Bh3Yo1uvYCdHI5Uth2V0/rShvcECFoQl7iJ0Cr++KOg60s6DgPTRxdVvokgIT8eLOs7vFzs506WAgAgiBPix12fedki1vaC0quP7qgDkd4BMO5mmO09cYlIqyxYXmYNOJ9yFaFCxlq34/ya1AZCOBhiQfAA+/Eh+MYj6ANwP7L94ojxfPmKx/cCKwivDdKki8ZOR4Z3/Vs7MbZXXyKtKf34biI538rn+/q3vycPgqKcRbIU48p6i4fu1OvJez+VXQHebizPPc=' + ], + [ + '2PeuCoW3hZD6QBZ6MPkm1My3vhOBWcRqLzJmo0BA8js=', + 'F45p4xumF2i2pdlYisuiPgq54YzsAs7y', + '7ibaW0FVmTOdWll7uTXZGbRshoGrSHws+XLULB5HPG6AgBt2NJJivPhJKOEDrxoVq0ELD01ma5FYQ9beHcA1gIr3Du08rMHuaZfr9nkge6ZQ9dCNg/dUJ4Ww5FBecyK/IArTGHhCohF2T1+PCnMohrZifioJJeJ2ET0p8yRbO1PkS9DcRApjr/GlEY0Yrg2NCx9kyJhogFYuWyVFA2t2YQzBgW+8OQOmcXtkTb/b+W4yqyxPTui1VP33tnHQW2/uMx1Kz//3q83LwN9WEyLtqJBYa9vxkxQIBeXatN504oiHicjtEvN1Pio92ABks/58ieqRWjs+tjf+LEbH5GtnpGAbRimTVfGwOt4RVSjzmCAso/f2FlNAwYZvQGUgUOfa000nwR1/IQhM/bjVaP4bYR8G7Z8yHgZ/G0CzxNbf6Nns4ZeYakNFx3wEw80Z50pIfwjRgBtUi/gpzjSdT363PWAs9cSi6z/FcwJh48oMPe4MPwgr+s/kOL183CxYRMTQ8IzEwosSKeM9E52Y8uF7KbmVvllLBl8iXiwX5wtIf9cyE0r1fqkxKFpcJVVNo8o=', + '3V166UV+36rYD5/jUZvRVQefQvKRJ1d2JsviXzjZW4Wr/UIVv9QuKRneTBpPWTH0x5/owRREztaA3JRi5x7otgtpmW/QvfHwKzHSzCq8g5IAEBapHAD5nUTCUVDBmgZ3ltBWjT1ZIv0B2Ka12NZXzDlkDFtNDYTQodhi2eVvBuH5aBFmdWvU5aVMQx9Av9OKT5ngdYXOVa6keP4+93bXNACn/vWmdgXsg9Gx5h484z1T8qWB08NNouUHG7Am0ixvtq161X1fZq7MPKu4fkKR8VIDY8g/ro9wHzXdc/Ml43yWYOqex6rCqNfpUgoCE+cDAbN34d+ZaGcJJKz2ksCHiRC/609tXFy9ABfQ6+E943ynQyRf7cTiWL1AYOY01KcZwSIeyBI69oWaQueLnzX9RxuE+drz62X0Q4ysTl5aAy1dlYVjr6CVIGwm3e3UPngBE5daQOBjaN+ylos/oXnDJ0GgEaILnwQ1fvKwuomMQDGGLd1qcVprJMTRFBGYQSnuAd5EkdstyIyS31J3bV06P0V203N4+SEcQl5tZaWqZAYUe6uMS+jRqvHxN1h1noMBgpSJfqZwjzIUj5tcD6QQ' + ], + [ + 'XhySv1ypGZn4oC0IzzvWCZhQqZ760JaTvR4kNchP7wc=', + 'sfiZRvy65zAd6XxzMR/N5kH8P5KyZ06+', + '1GIBJvyR3uaLdG+g704TrsIydw98vb0YfbLBSd7XRXrUvuNRZtBN7OPJM21a6X8RwcPiWOzYxVeePMiugeJB06F9M1dfaP4ms6dWy3b74WuNfBQlwUK4ojvbmTma5tFSp4VpgvVBtkExuPjXl1aUvOmuoEo8zSTEC2ZGjl6HUl6JTbx+SEfZFABbAuKcY5sckJU/G6EuXx0xEycUDAWktF/aOuXYaVdhJhK4Gs8sb0kvb6UO8ln/Kno5LQujNZeAFUQcsG4iMv8GVHZYH7ZbgsooEHALiOMbletYC3b+eROEufQdDN7f4Jr/pGhmuotkoWEk5DLHsX8cTlZgcIDM+n4424WNl8JIs7fNgnoDr/tJ0DFnMuZa7Nw2VNnrJulWY9/oLS61dZ5hpViv/4cfJJ904GCXbAkK3EOWx0auLJh2wXmCihC6q2J3NQgf3a5Iyq2rapnQsqSehCjLFN5Bf3GeIlBgdV9H2RDhzOHopF8nU3jXnkCgdPiRYlJAllFbYx9tPpxL3MNk3lYcaV56a32LHRH0PGbngiAQYktFjMcx3gHdSYwS3x+ecVvy2wfA', + 'rdOPLrdb7fhgPCDFt3y/dtQJtOipOP/vDibRsAL4cFePgQKEG772nGZ+kzbXETUKMbfprJfBXOa5ScKQ0o7dT0nRlKSvDJbrXJAs8ztrxHrtwYeBjA+BYYKKG7d0tEImTc39bwXG7VFkYrpkxziHZmuGafDWu3E0SklsM/ICWPzo0ZsBWcbvr64ZPNZg3e5UPhiwe04VYard2Pa3Qo+59sOJt1lOGpnANFSZOC9ZX26aR9DOESvaNPYVOyoKyUIBbVcL4LFEa7bGX/1oaZT3bdUQ8J3ij2ytQ/KkX38mL/zLn0XlB72girTMXNI8Dq5zy5bFB7Esnsi9cWRQMWfwf5VZDS3epj3q7Tq8nLLIHUxaypvp+tJCh/+glYhpmxadYh2E0TIIO9O5fI2RFHYk47gYQfM//jtIQHzkw9k5ailkBGsSJ8lNsb9O4rQlnKg8mvneRukAxbtGGl47l9TAlILPP3vuoQ9pdBeK0cBFkDyi8fnjAb3f30uV/MMucajBgq3HCXHDIqYBPe3vn8SXBKD6hKEZosv/CJEwOdlGFD673LD60OBHnzy6h+7fFoid4XjlhhW2Mql8bihXujA8uA==' + ], + [ + 'sFKjdrEwC2QH2wqeIsQ8gE5Y/E5Bc0FU7fOfZvAvF8c=', + 'mCpW1+nkbTjitGvl544+/FOgmtPDd+p4', + 'BQkI2URfAZLHPveXxD2nNa5cr7cgtOSYDjmnkdNDGmxDz7+msLLB6h2Vsd2WS00ojfdSHQY4LI02QJp2fr2c+1CNtgA7KbA9JZyhYm/jVlx0l6woeaa7miaLa0Ke0WXsfWY2r9HHFKCEn3e8xhkEInIsyZtqpFBXjAv1kb/cx7giTybqIt4JWW+C/uns2yJfJMDyxUT9xLKaRow9C1yRvdIj9WPcaNplEWr5FLoT8XrQiWKe5UV0gRPgAEJH3AKcCOeWCvKh46z8bJRch4N2KXnEjTZyjBkGBR7PsKE2MZMbAVZTU99ka6i+lEXQWwD5hcXUNpbFEzSAlJSTb5DmWzuW5xq4e0ALPAlq8/8ZYoZU+UZi71ytqS5L6m2Ff+iN6bEqCAByDuxDHr8/1W+/LVYvxQuezoydivWSZcMaTXWIIuiPPYCY76iJLkySqnFRRk27ttBqqgs10XluEialHsygHeazzfDd+IGb6qJ4SvVdNJjVLpd4rg6Hk/8VQYuK7Q2+WsSvoyF/RMlViB0/mG2fLn4AK3XwKWr7PV8vcORw3geAVfpm2qvQ1DcWQgr88Q==', + 'QlnWDA3X2VQUGaLcoHEmHWBY/tb3t6mvm1TpUgFC6B9yN95vMSCpFGyPpIPHR+kug1jiQuiRPR4OElj87yPN/SB/GYlD9w+isO5qkpJt1Ac/O1v9IRID7Zzj91/rAhOLAr7eIacIqGiZSJ/odVVtvO/Jm4S1VvktGQpwUqLq6XGXWATJwMRjhHW0rXUJGU4o2kjmHcItn+VXP4ciTp8PgjJLuLjgWyoz/7vJOpU9dpIR+r2k9ZhE07OFoc0oyI2fdh79PlJ4WFLrrZ5c0vHcnW4ThMrWj8dsTcNEG5JvwpLqTzopopz+vWuaEInU63vNXq5MgdDXAzxnvOJvsN1vufVm0ZF73bFNasKZr4EwA1Aq7Z9c40KyikM4MEwWPyodBaT+ZMybennLnOgqnZYl+m7gqdFkWjJn2uzw3Cv+kkcBWk1lgqbFxHumKOAvcuc4vZXzffQLZWGbm0pgIFkiooMU/7briDpwm56mkwiIKH0g/oOSaKOZJcEJxLFCSayV1iZovg0SW9dhPxQbTGWHF+30KHvud0fnFC7PxBJoQfDh+g+AA4riII0OmhYX4KhqVf8kI/hvdXxNMPWEnvdHv84=' + ], + [ + 'iY1JEOHv72noL7vQ9CT1RTf9FkPaIsSM+CURdrvUDyA=', + '1rtUjvf6O+Lhllw2Wm/QJ20AXs9lxbHC', + 'gKGg+x+zNK0rSDHA5qX4QD1r/lnxmI2pOlbvQl4+iIWkyiinfV+lrmesqCTlyUjstAw4Bqf6ZvF4ssR3oMCom67SSBScNhOd1y8oCsgAGnCEvHC08404UChUNMAE+tRzAZAE/U+bVAJrhzgovoZDreL3yKrvl9BaoU6NRZ1pcGorR71ZQhomNAw58sxskGzLvV14WlMaqjjmx/cEbozXsO1mMAYPYRJ685+mzwDxlMhHnVwej3lq/MVl0VZgk+Ec5NkeZT6yCira7VG3zBPBTmjI2OUB5BXMnyOAtlwoGxkHxFdkBQ1t1qA+VdLlC4+mCK6OEo2ckGH9Vo1+oCjOIUMpzrm9Qlk/Cf18olzzNDQhLOklk2FmIpW/ynnYZsRIF4sXoj+T0CaQanuFG9mbEl/VYvGdPw59yCKPZ3Bma4NPIjhMNQhN2/3SMtaH39o1b/W+KKSMtht0YX2Zpy+PbXHWGiAxQk65ChlJpLq3Y3JAjwBroqY0UcBF6XtwgUEFf1WwAIsbVGpJJSAgS4OejkqNjtOWmPr6AvvIoh3lTol+9R/voS2mKsLreI10t/rzUi8=', + 'TLbmEXa0zcwNpV6l9k4kyqDlfnTuro7pdDZhg2QRVaONdEfvbiWs+MiIZSMekUdU7F+eIg/yxkPyIQh/zBZCMoDCd2KKX/IXELx0trlQu6T9KAVpH3QWvMr/6IzrsL69plmpBY4WmxHp61zFBTlAkydk7/Y5BkcKk14csI8sHS+T8ITwiXYio+XohFaJAIiI6b67UETj6INBsAF2bV2xc/ZAQIfhPYyP3ZbTY1k98cdaw+E719vRL7MkuZiN7Ay6vkaQMV6lLSwLx3pOko/I9D9/cpGBbr7PJOHtWRRzLEmprOqNAQP5kK+V/SyJFY0cJkDCYhMys16l4JpJ2A/FfLfW93ahNi4EvUNYPrqxHl2nK1nP+XHcHQOS0JcdvtDEu7GpGvvK4jJJW2B6RIcqLEH8RunVJQV4O3QDQ6L6AfKujSn4YZXluA9OIlhJMYRlBq85v0G10MtEECMpF8S40LlPCQ9VpTXEoAJxA67wDOrwDQQmbZUV72TD7aOzPk/e/Xreb0tgF0FKpbqTBRM6zL02o+OnKiLeMCuFx6XFL9xSW2r8HpJEeSYrGGFkiimnvDCaxUoYMvN1B3ABBERpxTrG' + ], + [ + 'wCka2c3Z4k6uBsItPxGWR3EpFwJZm2CgIZ3LaNefBJk=', + 'MlNzQxiVlaIVWR05Xoi4fW9pyNuJjIPW', + 'mMbN1xNUzf9XuXrepjsXrLQ/5QBDENGjuq3NyMcWDpo69Y7GIs0FTOsubkJrIOiedS+7hJg9uY+5pkCKqxBVmFZltPOAq4j5eicrY4+nzvaetCwCH8ENSyeuuyXr+CXnoEGv3zMdFbtOKVZLXikG1qv1tcVkWHF5qmAp75spUc4YVlNMRplUNMWPq5XQpDUPDgAcnipoC5YyfjntKwOvSqpduB6JnMfWAbJb0RQlwdJYJLT16djJaoyjgor4s6MrXTgUGowE47KVe8WRqMXqW/8CM7u+/Gmx1MbTE2Do5uotQd/OTo6WglL6ux4VVrYYp/hqdnZxSsYeT5/aiffb5lftALKj+AExpFYZkVRp5aIqAtKVKl7Fpgn7EtEsvJOBgBM7zgwR/kM7L4jrh3+/sf5nuN+CssQep+VM0Hsv1u/9QSeadJXpthp4lxpQM0GOS4WE/L0hO+qSAYd04BpMD/SrMIzqpuLIWCkOFJ8W1ouobQW55X0WLWSmW08NaP6ajfX3y2Dt4hlnrcv9qoF6bhdrJdXAvYFLYwuKgj0FIaVOfmkr8vGS9nNB8tqBxMKE/Gdp', + '18A1iiMajPOAFRN/RKM0h0DBV3HhfElMYCL+GHAShrX1Lh2+DIb2ArjLegYX3N0LnrSd02pKDYpNcPLv1X+OFxVbvKh6Xi2l6SPLS6uAF5EyaGw7n2WlkcprYPnKSIMJZv9tLlVG0UG5U+Fc/11xbvMjXaJV1cpumkGc5I2RXcupH+159unFVsDzZ25ZRRARCwzQrgK2Mv88SolB+fXvovULLdyD2bOiED/rBQ9x3X7V8R9zEXb4J3ijnl1neZxwWk/v5KoMTf9St5CoHVsqFl45GlxQQQe1EUFpbks4wm9bdbyp0KHbwVP3M2OrpcYxU3f2Ourb2HWlJIjxtwJoffXr4E8Vj2DTUPLaLSIEzQSToIckhP5BD9XpErnZ3wX6s3r66MMRNhIP2PrXAG+70k8EkF1N1IWpPOusyfagioRldLAT0FNH+ntqwXZVF2j3BHIjnyr1C1rgfIAhxwQVfpz+FSQ2+Eh0JbxGSK1JwUN8ilmZQdUd3OrPuD62p2fpIV/rZUrusF9sMOJueJqHNZZZcriK2sXyqLD1F3CKeKrfvtG7Q0x+uVVo3G1NaSkXAh8H9QNvyZSUmM4SDVgUxaEGfQ==' + ], + [ + 'Y5ScQ9A9UUYQENywcFQPVJ5tH7fSNh3mPDw1oFUYeRc=', + 'd4oy7aGaSxoLGcSETcmwu1GTCCYS0/50', + '/a7L+n0KNvLT9vqkechLtiIacUPxBpU1YA/F7vV0+eW0P9fJCudLcS6JYb4a+ELRPCo3Ka6BwaBAdtovyfOIaJna/TOHo1cmrYBlHPu0Wd/LxzS21RQU7M87f3vXVF6A5Dwpml6Adp2G6joFHmC3JpFqMS2jTD0VsswFyc/C9vzeSK9txLBpiXdnJFA05MT+8uKiio/zmqz47euvLKrA+pz7Rl+M0WLwIHcnCUIgs0z5MhW8wi6hPfX4TtV8qS5SXm1Yu96GzuDtFs3U7IvqTabY0yz7I+36y2npEQ7NLMmWMcydw9O9p9yh0LIHuhvZWgLFAFho8xyfPn5lDJGJJ8JTmY4nVO7FnQv9/030NCTEXd8BDEhYuPmLaCGg0e5UINszHbB7QcMgzxMUZA/npu8g+rehb212Mdc2aUKj2adgzZ/Tx0LxuQEuDLW8JwO3STRTPle6XkHDL/uE8HBFQWtpha4xcoFq9DpPk2ED1Slan3rV31BQy7RBMDEXrZIXM26GzeP8P6pmMV1F5rkl8y9uIkuQuzverzYl4IUTjkERLVAqRvM15cl6vT89Ca/sDJrweg==', + 'Rz0rzURKP+pUh5D2C4SaVT6A/naLYY4pm3qxLZQ0Zs+4wSMAwAXyq4jHtc7o6HWRfuMykNsBeuBTevPe03CMU4URrSdnFOpT8QWYDsc6Yp6omzJf/+1iVwBjEzMWfPmPzLvl2OIb3YRYQ2PxsYge+Fv3BssEour9+SjdO94fR4Ah1e+v0ogylNMKlsRpJzoLgvRO6e0xwom1wDDDJ090JuLkflzORUpLTJzpXv6l1ocBvY/wIuq0QM9iFCwhE1mB/IWQcpBvWjC66yuAyszXM37l4LHPGxprwgrc0xjkKlzoEZoqLbiWatb3MLp74Z/M8OvNNTQfAW7CS5yc7aIg9kA76g/CHovOJugMxO6DPaLZcmseUVFnizD3r3eaFsZz2I6/EKycgm3jUfM7x0PS68go+XFjTAATAOQ4QEA0kZ+hT79+L7lewpAWb17zPwHvCWyIMFX0gGnvyurFQNYlD6swVZ3QEff1Ba2hcHmeOF345NCw7iWcLYCV6unqPWyGvAKabIpSVaQT3paUMPtvOoa/KIuBerOl+iqqlxykhfruYimuYhXag807ud0JHq+iAqWcSi4FX4E249KFBBdPIqyrHsA=' + ], + [ + 'jCCv667J383c554hsiAtznlc8YxvlVLz/nYgXx0u4Gk=', + 'XAjK6FbEmdyEoDKLSz43EslD2KmgYG5+', + 'puMmL4uqyckmRCvLoyFyMFqF2hrsuYOh4MGyJ+SuZQBljUVdtRFvmsLe+1HtdRtuGveimkMimu+OKB7hEA/Svl2mT2U1XyOOo2TVrcIqGqJelnEOGnvAHPxFjZmpVbxPBTLcM51ZeQ0SPR533dpo392IupdmIVOTsCeTi3RcOZFv9dwNE41dGV2jahqNftMZGghaj7l3xPaC8lgTSbt0psIKwBfnNEWCjamv9fp1vcqTKYdXnObusdqJQEVxAr9NflLelg2vixrerSYPO9mPhr0aPfgQsH7OO3kVKcgVrcwxwGM1jLRUkYiMVTi59iGfB5+rKLtqXyt1R5ysknLnYxaW6sVl7oy77t/IMx2Z8fgBozVp36Ni1RSXvCXE3+UmH/ub8RdYnMYFaRz4+H9oHhRI/el4MBjAZtWaR1DZwq7/guIx4vafxmV1PFREaiX1y0WAP60AXwyTJBeoGYpQTYp0NU5oXdIWnIqj7wDQCz80hghPQRqD531C+kFZCopGV3/jBEg95y3y2u5tRUk6mxaM5K4Rvw6HgIR8+h/49Ibr+m85k1W4Z8Xs756pidtTmFvlFDw=', + 'f9TW7GTHMtj6BlezgnS+wtv9/c+gRsGTFIeCLhWuFGheoaI2Si+pIkmW+pWtRAHg6+3CugssSDD77UeZpPwmcuP402nvt9YVXAcNmUPBaqGA4K3mIsSnrPIqkCe6R4mmpiMDLWj7//0YjUArvPtDs8yF2n1u9D0cd7PJYva5G5l9Uw814uIt3e5LK/YMx6Ml7To6WXhi7crxPGbF4SAdh6+5aBRcB60HgQdZmf7jWTl700mL2BfH04HeWyHyvlo1eo8kv6bCnJb1irmcvC2NKdLCcarbkEfmHmXQ0/IeUtDXcUhFpLs4FAQHeUCcLS+vBpVfKsaPzGgzfRKui2XujG+GBHEeTkw0kGB/036mFFbkEpKg3rWk3yEdy2Ik4YOKwM47C+NCssTiF7hyC7P2iQmlfNdgtlXSg8a2JukCvXO6yfFVmrYnCZ2lPJg8p3Al6pDLj/lgxJcHZv+Q648JzvSuGmDOlLKigfBeNFGaZlt+ICR1a6nzvOMVWBs6SUw96lO8uv7Wcgt7iv8/VkyVeCNAR06bKw+Nikq6O3BBxOEHGG2HlAzILwwbRt0U9DPsVhr0xe/BoGphNS717NwKyS6JctHa' + ], + [ + 'Dfs0S7lrWWdzyfMagEUiCJ5tFUCEh7k3h2qPW0z/L/s=', + 'YSi2pd5BAmznA/K0I2t1SNoJKsKyBtEY', + 'U4/RLUtoNrobIb92xvPRhmtYXDUXbyjDQzst3c18BX6rkMICUNXbdsRvAc0+slZxtOltY3xy59cJ4uMb8LYJ1tf8GT6nMdx1sq3YK84xTTzKwdYn1MsdukSWpGiP2aPKd6LusmiyOIOsTLgFf8dmCm90l9C/36kZgEl+0w7Ndar+SbEB67Iay/G0d1NPVCZ7ZDRd2aw4cBwRgM6i9W25SF57rOhr5nR53psnnMovKDtF+8GMSK2RQ25CYQYlzT9HbcrE6A1xOGL5r1pvnAyEPJj29lfzOABcIdekAT2GhbP4AKHvhedRmSnypaZ0iNtnwStyMIpkI7EMaSxubbrRAhtKepjNcKm9aiEeHOCh0LNdNHqbXJfx3gJUHam31cqvfsVXTEaXr/s/fZuVH9tvC4OsH8kwpmgJsnlwnml3EdhBf6ZY26SVpNordyylAg9Fr/HynvIBIp0laNgIQZCUKwMi/yd6BfOuRmep6wzFLliq3cwYr7HoKMOiUV8z/5syc8T5RcNCTrR2wDDthFbPif4LdqzsW5WCta0jalfAvky/zX/1ahBwSkVwZOmWdwsRhIjbAgg1', + 'oyHVhfdWo0AFrxnCqPRvrTaV4VlFrjOtrSp8PL3E8QZ3Vf02p78t2dn+09evg+OfjHbz6OP/hKQtWBa1K+dSD7FzdxlApTQaS51iXgIp5qWaPMyD1rObJdiA7cMF/yQf5cj0LelGPNSkHmz0SUrgiaIZ/fbYrrYCvNV6fVEIEPXwpSyH5XdmaruszLb2FGxOwfN4wuEpFsIiRIUo7HuSO+cExb+r9AThR6QK9ytsWmVoyPmOZ08EeemsSUEb+WaTJwtfUuW16TcL+FDuVz4tNnSawJ8jBQhpQfRV+cqI6BIwyPVLfafPXM2pezHudu5hIuCLQDJKDQ2z3dsAwpSWBc+kS48otR6rRbOEXX0PjJ3nJPWQq104tkNEAtIMwndEHW5kS7kCYJAIlJ1HgDz3J0qEQ/asboif1i+OpLr2Ymmx3RZcLMlAznVDVrkhpNQqINq28CfJnGGk66v/RUTD+jxexkA1Gz5NBvT9DSxnF0FQ7k3VBp4Wq99MEq4dLIbfqM8iCTX1kXH16AkgyHJ9C5tgONNT6cYoUXvnv6zq2F5gxycB94va6YUuLioVwiQ+8A74JFnjSL2VPaK0CZ6xgWiEYg54JQ==' + ], + [ + 'qrHadXt9JIAFA3WNfWSMwTQX5VcnV5I36tkC2vPd4u8=', + 'RA9XMHSOYgyh057uT3xIyxWSwt/oNpa1', + 'hhaYDdfH35ro9Tsn2V22kZ4znPml4HHuLm/wzuHqzQEtsywrZMQzj8DZqqGzQGlTxlHF+hSQKV3yASJnaUJ7S/7kzSkdrnvvPPMjThPUUIjRNrzIK0MJHEyfLOaS/sjGUHgfA+I2sAHoCyA3SryiVgNdKktwZjywie/B1Ur34ERJ6F7EXEjRwe1Hd0Mo1KmLJUK9xXzHm994ZWH42ToRrprnivUFWIdmillEOV7bYWQMV1qIi28QWpdqw6OoFEmh9hr0QS+YDnOtelC9Smhz6KhfuXbqso75hAP027U5W44iZ0xSCgVUv55cGIr0Ec53D/7RBJl5kbJOWeDQzZwdFaLyPsg4QL0V3E6qColvn2Z2ZX/ZVp6NieULFZqxxFPv9637WgqHDMUkvkTzJ7JiB0RMJ8/dGxbbQFw8SlgtMkgWvend4Kv2IfuRZMOzMvprxx63uAag84JPTJ8jxmhU7a2cPeUNA+mNsYDBdP6h8ULHi/bRWoUozlzBxZG/q4XoCnIDh+WcNtIO2DbDFu0AayoYDqBKqkdEG/epdX1J/NzGS+HWhFmtT1/e1/Dq4Gu4eW5yFEiUwA==', + 'iO4r5G99OCp0P+eDF/hUgWz4cPmCgWfvLhqHB/bNXoN1mwOZe3TzQ4wBthBR9iLQHWafyMQXLLY4t0jGfNxFTv30GU9yhJVZlQwS/7m0Jgpkh5kTy0bxhmenZAivP8Ewe//SM388o4G7DH4U0B9QCS6+xedVhgxX1AcLlpRxsW08GvhCeWS1ik9+mi9XO3SB+LwJAXPRZjXdmEu+0HBTW8nScueijVPQJTtPLukkdvYc/26M5qRJ07uQXMthrAFjUF0FM/z+DNdtaOtEPhecXQjCXq8VCnN+WsuoZ/Y/5u5UNqhFlGRjZialqM3xY6s5/m+2ezw92CQ73QWDoR8sgee2qlutRLbuxlI9dF61mrYtssHlxLIgkf+tTdiI0AHwaM08yHgWlyIOEL8HKKklDWkut6cIGRmFK14RcZ2c09uHqvtVwzG7bJgEyHUvQVHNNlblRytLSvrCaJh+fe7l3Wn/XTJTH1dwQGw9a7bC/jh/NlxFgIaEz+QlBrB3IIyOtImIwkNAVNCDe3syL3g2OUOqz9nKAYQZaEZVR19vLVSfY0Lw9zJl64hhavPWASNXJSsVIfKmxv8IaCv4VOhr1bZmgLePOfM=' + ], + [ + '2XdnMWRVd4nG1AqFG5a1175C6CC2kGK5X1YWesiWoQY=', + 'hhdmzOZS9f9uWHH6eNYJrxdYAujOdW6M', + 'MN+ONHqiqb2H/x3Yq8OF5DNKTJFE8FwtmMWp57mAIPzulrSdMe7CVhalb/HYCl3iypzHsH10A5p4Xlx/sYAND+v+Z/49VjKxvK/GHkng8znX+7tL5nbfmxIBeeWcst8kmRfShrzpQrpism4kijcYIhOKq4KHB/6d+4Qp/PYwiDzivzwYB4NoNWsSXLsFz8sLGyOBSC//hz0iymvScffJWaFlQB5zUdoNfiBqkdXUmuAfKaJWM2NuDm7UFlYIEekGuy7qdliNR9r5P8RVGUEfwgfsgehYB0vkW6NZsR7bbje+eRZPpssS+enwSKjQYB1C3qlPsoCMxCfKjtPTF7jBLw13NIkuqBAFQwvSc2OMm+FqV/K6yC5lrUeIDVdWmpsCxZEV/pQ3emVAPi7XGa+zGzIHeRH2DAzU0Z7ZxRf3Y/QfQ99Gzdv4m1CHVeAVuxkw5eYFbNd1cqcjx99DVmZ/oUs8ntMJ6kkIuCAYjsrAiJbbyoPs6pDGiAPAR9dAd88Rmi7a7SWQ6SeEXXV/T8RvbQXaQ0Z7jnJXyshDSBzzGZSVtYgutH0wAuqstgJkeE/4PDu3Su3ESdk=', + '0htyYed09ARvODPU6cQ32DPez+JBp4q7G6XQv5js9wmq0f+r05JZkMWxVbK/FgD8tAWLsNqDtwNxUsHq/YQ16853vo4lkEZQtapO/h6FavDb8FsuI8260suCb73FCEbyDrlKqJW6HB3iOJqDZn4lweIry6EkZgbG2mFr/9Xfo4U3ap/pjf0qC+JgGFZo150unaZAQ36mt/rGMEo0LmAUT4WHTwwcqUg4+LqZTcS9pt7yAoQ8FeB8V9f7F+PjgmqcefHiXpSVgDZDqSvyrd1MfJxSnS9I0/hLjceBjNHcsdR7b1qgXQZRMqEnFXj/FnARXpqC1Z0Dh0/PhSwwWcQJmn5YOsquBdp5FDtyXQ9iygd8mnl5Yb8S4xefWyr/BNx+SEBGdbWZ5jqlzUXBO/bxl1j1AXnet5w++VijPgeK/7SXRtWfb2bdPG0ZqDdzfnwai3DfCYPu3R08hvf+270WVX5nfgaR/dHi9UnU/FCIk74csVqXv2u9nM54a1FlBvs3wrwaW5C0N83ieoLRbRUexKcJ4vDk6uJRfVCtULtyVQgU2InoM2b1SdpMVmVDnG5lqUtPHXpfmZFXRRWQRxTFRGDC9cI09Bgx' + ], + [ + 'SpaNUQXJg8taQT59t+ithWhxIsjWZhjiyBofhEw1S3Y=', + 'oeSMAh1xwwdM6p1dnwoZ5HJyVuQwZzhK', + 'QwXr3g6pR2vNsZqYkZS9dJMczPEU+1/CQMM0S2FuPquPe70EdRZ/xA+IAoqv/Dm40t46ga8WWFy5vJ5nr+8hxCKG2qGeNNYJElgJrV3AZshYY0rWVu918n28npIqFdSizmoxDYutN37WiNX51lIOw4M3d48WALvzwIv3jwrTaVSX4xXzeuKkT5DjPDj0kd7thgqjRwb2c2m3UhxoM3CFm7XsleE46tJwzdA01PGAw4n4Uppq4sWrlpTchlu6DKPcVzepTbUvahDim4eU/mAXpIGOSFW2ekLKX1HwIwga15/uUW+6e7vDPPvLBvK0SrcpFAOahZ9Fu5pSYowr4yaCoCsuKjdAmaDG5s+39nyDwHx+tx7Y8TVmZa9VOyl5/xu2sqLw8EOCq6YmTdtsKvhGuqlHyCVG7bAFvNAMCcNKIl7pvWYKYjxUPrYN83JwatHZkgP71SlwhN70xSxvZdPJvDKgAIdW3ULXf+BZpAzAzmpcHlhz2SSmJNPRtzC1c2tmIxgCS9YqUXZ2pOkPOjZjozZDqrDePYkOXphvg0ILz4VAH6AFYE1+NWxkwfCJhT5xyehIvEGcbDdd', + 'h20YraqIt22auYFglDpPIdrPiQEsjSGb1/MAstxs9d6355qnyWLSmY9hs3ZTo9GhtIbQWo3XEFfKqaJ/z2kKs7C9mIZLxHME/39eUmhffL952JMs5wSvv0/z+CGlj9mv4++y61PnfkTAlH2mbOP5rjuakCAKp6NW+KtH377V8tsCBK2qA1GLBrrkkSFcjuqtVenFz4F19MoQo424R+CuH/bFdHwtnZvzOz/CxGZJj5zZ1lus6kmGoBuyGGyyRZeC89XIsUpwnSAeUmMf8ioKvC4ezhXAfrwwbPSFazTsmxoeikNJ3QJVFP04NwVrGQzMsprWYaKs80j3rms5JHSfxr3o8hTnMPYYvUp3Qb1TbCuSTUJUmhPE10X5IivVs7E+iYaJI/XpNHi3RTlrvKCVJWl7rNkGVA7NgmZurbSX8tmMJMNeJXBx4y5kEH/gbtlu0hp3gufioRdN3jqSMwmI9aDaZEx0ygj+t6aRG5vpI/M7YS5shDp9rFoTXU5nJH37KiUrncey6YCFeah0+uvutz3TV5FD6mHjqytomdC5eVheRj9B3M25CFKQ69t1RLbzS9d2CMKLJ5pVQCHxyWtZ6DOXrSRxElBF9A==' + ], + [ + 'n+GtsGToAlXtuKFQVJsa2jDQF+2ddsmgVXNXXHb3pzY=', + 'Mby++HpS8L4DhpQP6mimbnfYD1wBsm2w', + 'PPJ0YqT/IXW6m3gk7ykQ0tDx64gf33HkUJo73fU9Gl6dXi8/yKqHfIJ5JtRCDE4FLVdiVDCK/Nbikz0ZXWSbOPvyyGNfzngxud0Co4LXpilArPDGD29LpfJAseu+941feXHuOBGVDtkR532v7U2TilcQ3i+5l19W5fnzgGOMN2iMDifQh1rp48BRfI2vEHhdTw4QK+b8S0r4DbfoT5iKCpjCcdhjX6evvZ9TXQFAmwcXedD2IeK0chJDVCqX7FGPZlLMaCu996ap4AqdXrOF4RAXzIHSR11kATp2GukV+CjtD+GdBG5TMsmvyCry4qosPsgUWy3CWE1ln90Yi8M3TMM2cOYShbz32ob67ihnYE490M6OmDtLt8cKish1RhJbgWd0kNyVGKokoGgnhOFu0z82v8DuhelE52iwJgbhoGaHaum0xNCltUwx9VeGgn15LWuG9Ku82ZZ0gS3z+6yUQZ7resmBTx7+cOgss7arHiUAdzd4DuK60lAHruCEhznpotDVqd0+hlVo0yWRDP1jaJ74ugwpG5RCBPPwS3XMm/vaRBc/190KXac/PxpR960aYG6SulmhFekxQw==', + 'QY4PcHrwzyEKFMuOcA19qbELmwMGS0N6wbHG2kqlZC4U3IvQtWpm0vEnO98GbTta6YGl9aE9nHjoqXZWOCGCKehxj46WbXucR2MY8si9BXr37enq/UrrjW+IXyhXC1Hl2w3VWctqI1v1AOuH5CfY5ZH4mfbmvgKFO6s0hSOQ7r1yUR/5G8M5C6K8Kzuq1mtwf0qHhlJThvHdErPB38F1m/QgLw4zghCW3M1Pv3sMKMh9QgPmkjIbCcuk63AD/2WDbWyFYuOD535eEnWU9SH4jGz/aWm4s8s3FhlY5RL6XKtGCrVOAG8QF3qVY/c4W1CwVb8Ce4NFYpi+c7Rj1mdguBugAU7Kg/BUEDnF97dK0mMe2Lx4pDVR9YB5MhJaEJulhEkkbf2p7u9qVX3JWtWiHnPmKx/0m8Vvd5tlvznMvIGluxlZRF14q2ruDfjlTc++iTNsbUsxulA2v5VbiC17oLk2ZCle0/A1J6ao1ndiTxgdE4LSC9ByQsrJdXvQCvGX6epQNLmrRsMQxLTfCz3PRF/2SkLG6W9cNq+0YXYcwCMhhfcptVOg+1uLpGUYfKS7LWb7XCncFRDA9k2Da/Oxr1nqX93LaWJAsdM=' + ], + [ + '0IunFh71gRF06hSSYqD87q1CoSk6+yip1PVm2jSSRUM=', + 'OkKiheUW4q8N8Bciltvnb3to0m3nUsre', + 'eWZWGLbNmKn9nHL7wjRGItjlMPl+f8hVB1yD96X4uynVhlbSJUQRLc4hxoBvu7WyP2ifnunngrb/Au5JckIDiOgxq4V9I7UuD3I82Ekgzeq6WI+nKX9m/YPuIUpjfPNc3QjLsJExyVLS7xh2WJIxJOr2TA0uKGkKg9GyQvmxbhsXQIl3mGfrY3426xtBaKiJrOtSv+53wGEE2S8VUFa+2DR5fWU9tFDvMp8wMsOqw3POlvonLHcyMETL7RN9O9Ja4IUlu7l+rM/0RzLbNr2vTwXNKmUkiCM93L4CQI9OXyLF1HScoP/Tvio+nlsxogvvZI+E/QzNks0R47hZhsKDiFIl7UDYE4kmQFr4JUW9Liu/c2cV8iYb1JrDZVBFt1w3Ob0cRaXYHF1AZt2FyFRJZs9KNy0Mb+Pvy8SUXN2N9OWz4eoEFvjtjhLA3Zo1wnUY60+oc3/KtVJ4vFgJNNQb5nEGXhOSbeXxbOUdjWIgYbQDqHrhCUw3Z1+cEkD0XhNskvCT1pYjtdKpqN4bLSMuTyu9Y8z3ahMPJpK6e9Qd0jV/T+iLp+ZC7m0nQLtDl1dYp/YieSJgspNWPlo=', + '97CnuUc8mvYLrrfi/6UUxotEet66ootNlFoUd+dVqKqZNRV5aom4XyM9qYOfTU6gIoD0eidkNy4qjifDQbDHdDrNqzTEWFHh5nI2yxmVOt8oXeI5RiMjHSvPzCBmLNl0veRygST9RO2q3q959KqvdRscHbN9xYyHrIOGvPa08QZDYOeXxLtRVP7ww4+FeG8K3zSS+nNTDcA9ULKwyF4McusWnv50VUyO3DyyEA5FThSXAXgfMdHKszV0NegDnBrQLqvoG2gmuBIy8PTbFYjoUnixLLzeGANsD008jzKOHRmfm07BPtATeYfbN3ObabL8ycTxjdtNtsw7jTfgUdd8ozeqEwaxi8SElCnTqDVyjSYrE1A1SjAD2sgkvFTgU3rVKZBg73coBYlEmUtAC9uO8QHKUl/UCDhWGiDq5VkkOCXq8gF364YDCX6QCslLR9PDOQ9E8NsvKyad1qtEi1Puz68P1dPFE1i/7s26Brr+O5FyxnSCnWxIaq8oXyxrdBaLJg0Q/GeEJfEGJ7xl+SooOC/zc1nCNG/1sQXOMi05MpOj648H7j2NWQhoN1v9zimqkEZMwhpVYp69lEN0mIhOT9FNKcj1crZE6S43' + ], + [ + 'NEe4AHLdJrl3ixePILuDMX2T309IwLUN3ldz/21Pn2k=', + 'PypKSHl3pLzLuYmOymur/H2OhJnBBsqo', + 'JGLcUEnxfVBflnbi+8LocyWOPWJO9Nn9Ug8b757fluWKKerdOde5PdNykGe4mCHVNdms74qxDTi5q9pueQsozncmDncV7qbgvoAM935Nnxq88WGIlWMUYxd6cZq0ej4LkTbGj70hGLquyYtSNAkPxEDUHk0Tt6wiM4ieRYiVggQo1+Af8aRu67dpeOWBhducBv2wAE7ksy/vapIjPg0Orss34uWXng5xZ5CAue0q8C79siO4SMOcmZZ3eE9yrxNYKGi+kokqRXrroEAeSUlEqb5UP97GLC4z3qSE2cBSW+1ZhqiS68YvgfQ2+o3SERRwFCmm9yrQMeUnD5Ulmvz9ToR58ruOZ+i3BA92hBzRXoby6zLvMktJ+TUPnZ3zzC0eKsHvHWTsqkcmQEjPfUcsRUJLjcLBkBa7ZqTn0OFhAwqgVC9HFcxuWrI3ccoXSNxpnA9ktivCDEqcweELSp6NnkjVb0/KoSCzX9eCF0xCXUVe/Z1wPgJ5YuttmksLL3lWnnyWLIOV1aD6LeU3t/zV8PRuDIniXO1Pt9nurPmzxTpXDnyKua6KShoDZwxVWDVEKv93Na4Z8hApzu3U', + 'YrPjlrqLczkDU/OX+z3DdqyjmMpjBjfuztNvukw8SS99kmVxKsCBc/QfrzsHcc7yPMlBcYCD4u6lgzBXuX/FX26LcMvsfI9J4Zf5HHJi+UlCpi7hVHvPe+qhHD2phzKStHrWWFnOeaVy0fzM/MBRkR3x9sOoBIrZp4r9pi2WzVv/G0z6AF38gSWZAjc6iXbiqVa0x1Hay/JdHF9n7JqsrX/nF1ICcF+Iuoi4m01QQzeGIGTnTcHBNiKnH8hQfLjXn0+sd1VEZqE/2e5JVbuUetWyGCIodBKdZ9ZvyGK7+ldEOBzB/lytHmfNOXA5EY1oehNVvdaOZpLjo5zdpcfhEx00cOBYVjAQzDKDtSC1ktcMgLGvrn1zSMvNJZiNLU5L/XZJ6iYwduWVzaIJWcqkxVygaez/XHWe6T/iJYbIjD3wwjm4Aql9eC2kAUz5DV6bXfXPUvzGZ53YdW7xF7b0UauQz/9489jpuWlYKBA4KfzSamILIS/yUmqG4NaItQ8S9likO546ZkgKtvSitQAQvayxNFR2KQulTBqfRlllIuI3td32Hrr88xsJKxKU4AzGiu109phryHKF3qmUCzYTCzYedQUtmYTA6aSN+g==' + ], + [ + 'ASs9PZmh4VNpK6ntLXleGjj4pWt9d5fXdV3po0j82D0=', + 'AqsXOGw3VGglAEBFo+VrFbvffFpnomef', + 'Gz3d1GsUGFBv5Qb4GP6VH5Bk09t5ZtchmPzXU+eQBcsuiLHjvgWAbqz8WNos8SxpYvjBDtPM1of8OSLeMDgzkmGQGNXZIU3khMPqM3+UNf/GZDre+Ybb4eHYv+Sq6joCdjQTU4bnjxWdKu/EBIfo8o4MFK99LbWYdqCtxFBiVhJOSuSpEqrgX7pDwYA7FvhAlUDboUz3Mo5MUIXSLed1DZzBeCVKyHH593c1ko03WzP/2DblOf37q/IX5KzOkFXQrYlIumYnjXxyFbZ+lmsHAp2gztSO2EmK/rT8rDu1r5lcDIFk+e3Ev451INkJDcrz1PwbZjUjrMc9KGAT3r+45VVsVVaXa2+ZY8xh7Vnzykz9/oxSVl7mWsDNz4r0MIteb1QknN/yjdgVogKOkFr9gSXWTtCb3oL6dr6E7KNl8AnxfzUN8DsEHsjYcge35KlgKc4ITBAslR1jR7yl7q+AQxe9p8iyv2bcNq+PxZwdt7UkGbnnD5SpzQmXIVmfCjfllOSTzc3bvovk3eu0Gkp69bx0/jANvcNC1HKvP+6CE2lo/m05Y+XEiZkpcqvJawPJN+GP1mxwpcsV8x8p1w==', + '0W1uAFjVCGFryCGLXOuyNhVQjt9PtdSZFXJqV+qwFW+2IB2ryWxOQWFLaCiPEJbobVs3p66e8Ip7LgMGqmrK3TXJQVavA7dCCfYFIBDnI9yWHdtt8Sj+kenJJvuU+t/o3g7XfarReEXgQjlWUqp4NrkIqRb7N3SPTVql9rK4fJQkXawNZhqoDYmSite5gIl/AW2GQLBGc2uwlB3EfHLS8JEIV9DcvdZ8FwsUknGTQBJdI/TXO5fkv+IhtSWnX0L7ZB8t1faW8BEvz8Hstc26QIVf9xmevb1l1UY05l2bV94HkMP9m9Vs1IwZ7nW7JspbFBzqm3EYcBIW57Iv9v3qS/vygDdCjMOKzYnGcpJ4L8TJ0ou33+R3PzAyYvhHq/ljY6q+cYv6TTgRF9dSlEldfPmqG3IU9tOAdLvQ8T7Q159mEv5R8iasXrs7vPETNQ8r/Oo1GA6z/nNZ5y4REGRZC4t385qvhUxTlBlYKcB5B8B+MCxk8/XaQSUwz6nyR1s11jkkEfRRVFE37jR6GFkmTgOxNfRlNtwaILuLVvAcn+znR4GrebwLSwh6KAYVtteLQkkYnbjPMgQSweXokWeH2avMWna0WzqDOUNODSs=' + ], + [ + 'zmcHc6Si7ksYIBdBjS9YuHPpkFhNw1jKWOx5UPLRtfM=', + '7lp0/ye2zTNCyYLjn1qn/lZOA+7IylNF', + 'zIr2BDKYyZYB4FyIxf1ZGaRnl+T7OTNR7cglN0AuaaUune+xOxI7+H7qugj8W8n0iv6pgB8ZN+c+BATI82YeInlBBYAFjKmGVoZRoxBaHKs96aU+khx4OD2c9/ouEznkWaeGxVDmseLnde3R+6Qfz/hlBAA+9sEJ13DiB6EHVToNHdWCxX0yQW00/zdDqvXs1rO1wUs4UOcH6Y+xORiZHWy1pb9Fo0R9tqLLgwKHp3GZdw0phzJ46Rt7gLZx/9xcaqeiXxVNVKKZdxcFPDv2jIIPICrt2g3w3Leb8x4QNbuMpRMZYsv1C9BPKiqreFAQ+rVRhRD/j2FHYeCnJDSMDtyTIa7DlqxkxGCglB2rsvmX+3iQIjeYTivgPrTSAhZDdXY1mOSTFV6hmBi1eqKeTZtzghur7t/rZM04ialVpTGGC48mF69GQtXIHI8s9Eqahb1uwbOL4AM16tAwfhSTd467M6VFQBmniFh8p3RmuHHVOlS8uxta6HYlswydO3GRssjTV3EKtfsvum83Fz5efp8qGO/B/KQY/NWNYSzxDOimOuR/8fKisI9mQELdEQ3tGfkNr2mmPCcyeKRl/MM=', + 'XPhq3Ikz/1UfijG/IazssXPj68Z8CQPzyXl0gKVUDAL4Eud78yRgv5XUmJ3sRnoO+LPu0JrSq/B4diEuvbyxecktRV7smlLv5pgXSOU9dC7CDjcZaBbhD4yllZm0WQPDG9Zo+h+pBSSvWrKQXnkHEzD5UcQHU5gVpnFI754GF/m/jiEuXMicj2PWGuL4LObHaEzMyk+gTTw0geTz4+myr58Sgqdg0dxl+fssSoxcGGL2brK/2pckt78DYR3XkxvKC4QqSDuNCvbCCaWtM34hSZXhOFFO3GtNnuL8HxekaXpk58HfJiwQysnb6cOzhHzwhLxN+rL134CKtijJT+VNbFhTY9oOkp9aS/avXgcLXKGKwt9hyqh1atFjRtxgnrOg3CyW6ceUc3UWgFUGzmsCrQvN5Os8btT0oMyJdT3Qoq4NpVaaBJEK3mF+fZBewj3ijY5nJ5ViAHDCVMDR6CWwuME2f/n1NLF6slvjg77E1cMCdqUF04RP5KXOLUU7y8JYbKOFd95VdNZjnPQ/L7i7MwLZk5ZjrMMlk6SaBhsecR8NKmzg5XOrq6I/A2mIUwhiPITBi516rihv4n2I7saLD9e8VuLzh+cUsn2GYCm5' + ], + [ + 'Rn7yjj7BhVz+dMgAJ4i8NRt8W4E9/yLVBZAxHB44ROU=', + 'zg8RdphXLAqKIdha3EzCjSGPmL2L267b', + 'exbIZEOACJ0iqHV008jKZezTgp/VKT1s1PSnG+j02V1XabFnn8Hb5G6T75mrgJLYYxXeLogrRK/Sjm3T04ICEDTSReKMfRZ/8mUrLqPUpLiyGvX2vnCbGh2isig9ZAvxPPZgOgdrKDkLguMfm5jsLV1FF8HccArD/sIMNMoFHfbPG49eqwtUPTP+lXUWKNbqyqA6T6glhwoZ0zvvSR3X1lmTFui85AwD97Dq1FQY6P6TztDri4ytxDpuqHVhwxgh3z9OA1n7mf75Nz98wtjEMZqviniLsbyoXr/P7Lwf3bb4P/xoiuTUdSD4b7gprFYPhcxd5+qVXNMvC94pp42FatZkcTb6uQOcD05UMKTXjwxLyjDTyMde+A4Ett2Aen8QAh1tFeqwEiKT5ik4rpTABP8I6NYg2m2nmBpoYJB/m2xdvD+t1RABvbYhpN4SGwD1xBlhUH52dTLczw2hLnt1HT1lhhW3BZie2ghDOmm5IaM5tUjlj7wl4e9u+P7BS9497Ci1SJlgKnAs61CydLK0mb7ku/Ks5vADHcFm50ju1mA991OgHy2AlGeLPCtXsPcefdDwo2xnu97XANha635j', + '/nW3TXTV4IHApVPRMPITjR3YbwRENsXi9TFLsbvaqf0I8kksFWwZKyARDiACqP5ZFQslGZPhsl4hKKNEr0HCPNfMmMJg+bqnxsOOWXt7FuwLHYk1hxdO5n1+8A3VTv0Xo+mRU0dFulYCMh+Yxc/YA0mr4NAtj1Z1UZhQeXs7ssWa8IJJOa8jVD4Rs27VlE9yNrH2SIxwiijzkp+V36otDzZC1LpL3+PyWWd0M3GW9gCu4iD5VSOXcUVj5bjy5wbS/q9vyCoBkGyFp1NaRBuGSlDP3+wCZiU1sL+yg0OulJlbumxArQLc2rq9ngZ0x38NssN5hpGpWcB6p7Oi6N5jTQkFAXxRg66yzwRAPKw8pJ729N2NRkdPp7t5bppJYutwTb01pJVGCSTXPxB307GTliztzU/EzT49fsoOhNxi6TUR9/UUR6a2DtZVj2fpyROT8e1KmBjUIp2WKgRk414hjfU2tYsvp3wOYbvM+1gk5kp/Jp6GVi5SiPyWuk3fomYbFg0wyChtu3yq99YCiv2HzLjwzJ6Hl+ccXC/5EIvg+rdIVjl4s/wzaJmn4YyKjZHox8aCxIJwha+mkgQjVl8qRn7L50cYHLlMekoWMPHiMQ==' + ], + [ + 'NGUZEajccs4YfCvqKQpU7lkqbqUPQiRSBXBcpKWO3jE=', + 'g4K5xbQXDMzMfGccn2WiLhOa+zOo4hOw', + 'e/6t2h12dMwPkhDAt3U1e9j/EY/AymK0LZ8knMk/q/0Mzq9JPpf5an/F2QUnLCkE7WYIwWEIXEt23hJElC3EGLv9MbCzfAyLpqrLYOUFw2chW0wjRYlEO2ngPcegORonDJorsTntOwSaGJEg9FpfWNh4edEkR7/Dne6w/ndyNZsTyvdeuvaYqCXV/NDztVxPIzL3CcMBsYst1WNJMMrPd7Mt9fSntLtWrwtIHFEHSuB3rcy1Y+J1JuLz1ArXnmAHkFH1nZL+2OgrNgAR+1oPEXFulMHd/XHK26NNqKnfKc5aFLBbuJNzDkY1MMiFCdTgtp9kP6Ksfb3RFEqcM1P/Qa1BccofX41vMPoGw+Tkk4uArZnhQD8Yse1aoEpBWA2CAjn1N057rQJWRqWumcP1UnwyTxmQrs4yR40DQ1RtBuun2UFB54xQFrtOcPhWk0P/JETLKlzfYVEQDpi5GBY3zXoFQ9YS6aGxDEkEhZfiBlPwULgy4iJ9XRu8M+Ea1IO2LmgBB6XqaalcN1xrOIVDegPk9nHvV7tPNwlO+uuh/DcITvRiFXymiDaAAYinZIGRNi5GWV0KrPUKHpSF67diYQ==', + 'crUyq7OS18F/RQoaRSebU8nKVDhwClTDgtcEioxqvfuWW/YGKIzESPJnZVlatq5kEb134Gg+cjXjIJz+8Uu3llvELJ9K6rnaCA6AMpasGHxufi3tP8iAI9YjoHunWZ8wu+yJp2KYEYUklYSkJmpZ4xcbTNRDUK6rcbh4pWoA5PKkDgK5e/OT7NY8jEPkkfZHQQoYkeo5e5d9S9jhwGLR+VWJliqTLwoajdy51E8lPyFzGQLzLLJl1ZGpQ0Uqe1BnssA9n9CtIcP3l1qENjOib7P1FnBpDONasNxfLzCiD/scPA6SJL9KmLrn2zSy8arFrEUYe+jqJw76pyXasYAL6NJKwJedAdygjqPJ/r3Dh/fT81NtNo8irKDZP4ORw3YTxZj0s3WTlhshYxKfs9DPTp5Dc4397hbPOQ0IkaKW1XvQpdq3/LScFcPoKBBPSD3hyBY2KZYJxU7TarwCmQnkSQ7gLpuET5aA+vYa+tBczs5sAMzHZIAgIFHUOqbAIg4C/sEQflBdsvlkVj+59WgL8pPKdiyHlTCkJJeTrGTOd+OMfIK2GWTpV6e4EnRHyfErLMiFa7D4HCZ+4JGFyZZAfhfaqUzLWCtN5SxzsbCcTBc=' + ], + [ + 'BFMZ58M5DPlzRAM26TMjK+Q/5KYpyOEGfNYJq6boapg=', + '4HPmQ/J6gTza7t+RkSFZB4PBc9wFVjC2', + 'TnI0f24yWwjo5wcjvWnrttmEoqJfmgi3djwP6Zqhck1JBQwJSYl9nOdjy7i2/MJFUxVvwePv6SIGpaWduDpMci8QwciYiKVKFQQJbhHrG2duMRqHkgsEkbpR0QLedY0pCUnoiy41nIfz41N2xkunYjBqg6R/NEDxG4B9W05i9Qy+0w8b3+ie4+QlkRGjSyrNRYSVQ1PmoTP6MkGJLneod87lpHWk6DwxZqk8KecHVAJIPEY4hkKZFLVRH3UgTwgEDInozWhCQJtSk8ckAJC9Mujoxt4uEvw/HtyMAHEuvhaIIS8S9nCyKhQbpQHABWQSRR/BQlpac5pLR7HSYIwIXWhXcM5VVMfmaNw+uenKZ7ycTKRhNmuP/OOqXo9Q9kLlTZA+G117vx2O1Y7bV5c2b1kYnUUtVOg6xtSqPHPeXzC0tcXAaLxrBZDiFzta0V7zWRvXHUQ8buw/StUYkmr97s0vPjpxWzx+czTMxRzQHJ5Ajwe+E9oa21SqhIN4I5bJu+1PuDdbxWaoxzIjnQr1iJUXdSo/V4r4gZm2YC/zcNW30WSkbqpnPPWzT8H5yPC7P4c/xwLXX9pt/oKuXptp1Y0=', + '5xZX36O6bjztuZGlLSSz/6o3DAfDcQYVrxrAujiOmhvNrKWjhMxOMGnfaxsUqN9kGYZcOwK1yMidoc+vuH4tBF8bO8zA0tcbj2Bz5urfz5sW8x+BtrNF2MtK8UhxqDSV0OFWnL23v34IYCazIpoPzqcQmWMvkh5X37mgld+EfZLZzX3v4vqWeGd/bWshv3NtJ4ZACfnhXAHa9pfD4P7eSB/NFywigDYmdmZ8bWf8Oja3FPuDIr0qarLVV2QkACTo+6GKGQVPF++KM4qGVXJxAB/C2lI+I8BDFzXz/pbYwgML1lI9axm7ugcoUP0zgu4o3oOhTq//rC7FcXLvd9lBztlRt6IQpsjO4ev7yrmFTUFgpS2TCUZy7Vv31gSjqA+ks3L1QXDLWfj9nxp5XFiX2hbcwbeODOYxV470KbORq99Q3L7AxwqPeFPd3Sshscef2Uu7o5VHPxW2DwPm1YOP5wvChFN94dTdnojEQIbw2AS0QuTih/XqtHJ1JyhZxT8G0yxV7eF33TyW7RqGT7xwka+3mey16/8TZ2Q15iLMP6ol56zJghr0ZP2GcMfdL+/jL2H1jqz7SHQCaJ/SEOJB/GVayuk7P7MKAMNQZwCPzEg4' + ], + [ + 'AdHem8/ZCNAmdNNWPvdtd2Zj5pY5jgIN7SwUvHHI324=', + 'OmMl9aMRK7fNcVDSe8gmRt/IC+XmD7sB', + 'wVu7exv0s4gG1BmgT1+S0kgwG3HsTc+VzIjamKYuiQt1X8bryzzIfQmLeBjq6YIWyHLLpAT/Xix3pzVFd6miAl5nLHgYlWG0qf0Dm9u9BaXJQGsS0NApAaWQiNnj6f21LNE4mCgco0OdkXWp1gwM+pqfuqf9/UmXq3F9bwf9qHU9yfixjrv4iPasbYEIU6C0uXmgkD9SYI9/hC0xnz2WQZrwp1fKjPitSw3Bu/hh+mdlQ9JkjJPy529J5NdLmVuhJsiX/dckwrb2WNDq8+FswTKVxKg09ks/PD4DPji3Q+5d4Kox1XZqkZ/dboCj492nq8T/waYPjfBsCC6/7xcUArG6QhY7ftB3VdcIXYiehl6a6lNloKAJXSptYf/aTGOt4M3Yus65I8hGdegMDcu+dPNaXqkXXKPqtzI6sZsfnxYt8GUE3USNuKr+FHqD/Vgdu9/QqC682Fig9PPBQqxtiKmxh5a4m7giMvjMKr0gRZtNPYAwBFw6I+JOfNsQVX6PRMO48oUeBoHcXDE3ISJgX8Q7GX6OYvenmKl78efXV4ADcJAmhvJiLSztnej5tGw/jyEgPAznaRDcwdm60wthoaoK', + 'RzZH136IpsVVdc7oxKH9VYEQgApyKkNgvhz4fFfjiDUiQTBvm/lv6Aa71zWrmmIRIVxAzSNf4Bx9N64J2IT1w+HXKHaQiu8ivbjG8wTB8rTGV0RFf37It4tGqmE2oLWC13Mqbxw72nSw0qKL0/3SxSgGy5Pww9c7gIbrqKdxzl6OdxwvzQhkjvr4M1aGsPtdox64W9Q2CnlAYoOwUUEZcMnd5SYZLT0naWnWy5ah/9tscjwaFljksnpeDI9YlbW6Ui+xjAHqaIiBFqRagQH3iqfDSsHLZzxffijGwwxuXUuJzPGHmAPluA3koz5qyo9bnRpCdMN30DsvFy17kQ5SYmmjXQ2M2qsIkUH0dBF/HQw4DZIKhHe/hWnHLY4KcKx8K5/M7+HJBJe4WXlROriCxrE3pjQea0S2AWeqWU+wwKZh/tboobYMTluRaTNOSAstH1CZ9LJjCfN/CpgbBGJU9aQvMPWDiE4jRY+DPSQiFGk5mPwradGP19XQNxUCgBeCG4+Czlrd38Z6H8NxaYG5hY+s5gQuNIfh6yAogmJCIkjnOH+TL3GRNJ4SXj9nXw5RQ0n5773ypbmrCnQH7GxWXdZcsHnbbQDkDDFQlpx2yKmOug==' + ], + [ + 'NRVt1xPu9TeA0W0A0gMYr19LOW+e2Yt/bsXk26jOdhw=', + '6Fj6ZyYBprYPJUR9u1ew2uyFBfmUsPDL', + '5cj3/24fpuggZVKjLSTl4akE4QBSTWAKvI6ZLaaN9lKNZ6neWaF4I/kT9LWad/GDl91qfzayeuTlIUT6q88HOqiHYHlR2c8wo82kFyliYopOuBEuzIp78HF0wCSygQuVpLv1IHl9OAUAnhObXSBGAViiYBQC6N482iDbL/XO0+fHCHQcqTLIBPkcmjAYAo6R8yzc7QXa9lSFaik5L+zz39YbJeNfEFNkRAcDLYe9LHHyBL8xt9rOL/KHul4mWWRGcxmpubs9SA8m4SOmJRfX3LU5wU88UI21Fbb0nrpFu3hC7diD3QnF1xzifPrrjZnuUzuEwmdT1/X9LhUcf97c5wfOAKiLx3yjA170szOUcnTpEJyp7D/4h4Eh6IxC36TeWqbGycOOrp/7CylYTTInZ2nn/xtIixlkT4uqLfU2P+l5o0ZYgQbGRVlY/tPlavi6kNimzjI3eaG0AL33wcp6s/6gCoFkr2Aootsbd9LXb1u2vmaYZJs7MPtwCUsns3N7aKipw/vLQJsTlxJXlq0ZesGCaRWyMi/bL1tj7Cm3YLnTRocH4te78RA91erV+KzKdceWDh2PUcqnKWUOxx6THDPF0g==', + 'HrlbFq2VuxzwwMvSBgP8MLN6exBVroZfgqivU776QqoGlVHOEd3W30NZeiJr0odcf/Ug3MMYB/XbOtq5emng0NS506RjjILMHSB6K5j8oXPLmdIjMvpdnJKVPD3G93AjByGjeHSh3jSJI/C7v4HdtQ8QS4VPuTniQYLABjOhRLTu2WQpmdTGoerDEB4i6fHKRS6mY94lJIgE48bSSO7xgBZKx2elzGacDLBqmVZdVO7WLoiVWSJX17gBW8l1q89NbtjuA6cmWeXHHt4l0X1BXJF+mRZNfF1KllCSibfX8GguVBQET4iYcxCpOixtMsCyPW8QFF6fzh+pzAYnEentwXkMLwytzoMWsqJr0w+IdynG4T1mUbRfSj0A5dTSz/xAd5q0rluNg5kuLaJbKLltoI5auEdL8cKXUkRTvUTJYKjzVMUwljjllljyBxfMshRr5MOoEyEzWBlpoc3q2c66vieJ/sPniDZk9+dTlpZsoq0V/0CH4w69a9Ys32wPDMp/h6zTJfqBKULTT/rfLQcoQQ1YSGtkC4yXWso8Ww3Tc+VrCjn6eryNpVWrjAUcKVe10UwXtQGzrs5NWa9xQOpaTxQaZG4eSyCJz571S+zz7TsxP1M=' + ], + [ + 'UgsrUiGvAZMtQdN9s/GFBpoNqA2ng/3C7QeAE8TxST4=', + 'ImRhqPeni8bu4fAw1HoVXHF7Mfnb1kxW', + 'oPUgPIHbl2M4iEyVK25wsvvnYlrINpCB8rXV43fUW5CFnfh+1ujUKLetRwjiLLAmkIXERd0EJSTFS6St+FIvc8Hl/OUk/FYRIwjC0NCqCB6adIr+ki9fYIezf4N+urbEIZ3TXeQdiq2NvWlZJrAU0j15OMIn+Z4aHwE7SMYAqM9Py+ieA+l6+2u/QbzkYBTUyQ5Xs3+WadhFfRulwMlQIKXt9VEG3yPtTJTZCWhnJMTVQr+fgPUJgQB28scS29cuWpKynAXAQYNRrSBPDqQsGJyLE5xGe9NX5D6rVQXFlugeocDb4wHwR79hE8QHUTJs4wXt6CkhCRPiyGFDZkvpk5Y+vDuOmb9dxuX6swUoP8VsxTHFs9ryk5vyjnO8iam5ZoNf5vm4SHWlPu8+I7ukCc7IxJzxTvfFsSclUrJfr92sB/snt2VIyqtP5GiG6KMShqpZ7PgUY7ap1v/CPsNnx0ypnl9hy80B7wBTNm20t/Kow6m/PUrCkLCRm85qKcW43tbgYaF9sBD8r03wnf+ZPX/AIuJ/POFzL30JVsvkYVYFz5S4Nfi4GWw+yAZEsK4/IdkBubtQNiR8ltbq1sB9Cwyyg3A=', + 'k0xF0hnnMB0u37VX9ZKxusV0UYxF566ENAqY9VW6jEl0x1qBpUq0YBrG2eX3Eph5xV5KPsea+RqeilFH2LxjUE0dxCMxJqIPE6YtC/vMCBrYyOOO6uqQTemsX5OeTbBObg0qIf8QVg8fHRRP2uL694/PNqNAiwQhPMaBp7++Tf0/eqoYIMFfQugfBUJW9Pk0bJNcyRRkraWQAUwNSOYXOcLM8oA+V0ZKYASb3KgyZFJmmbid8WnjPWVUNIcKl2SGtqwcPePSqTGpgmpgZNT2TjMnuKmGTN+EWGH5NBd80ZoTUmIGjbcfRqiAaR+Oin0ivemakQQGx+Z8XEgDh9iXqVnXRseypNhksRv380vm/Ve7ml7qtgA5WtsUQbqKkfHzf3IOH/lLSx+Pm/kKCumqHY/BQigqtozBLgxMDXmyMiIIPw7FYGvyb2rrukxlIs+07/jP0106E6GwiErlQAeCzS2Gw1tNv7l+xXHjsrYhHTVhpFQEVty1sTase0gl0cj9Zqc2gWLl2A1WSpRCUhqB0xG1XnK+ar9R19bZ6M1H1BIXMaml0KElChd6ToVj+wLubqJ0frDYEaXnyLLAvHDc7FluEL03Gmo32iTp63Li5bZ5kBAa' + ], + [ + 'QNKnCJfKuFVtnPZ80/h6gAFq6q+fs7a/QQpF8lvAUUU=', + '1jSk2fOkRSxBcB7EhWIc5CkRggzkTnbX', + '1gOkCi09K1eHDMBFoQY++LFVDfvaf/bp19fK+gdTGR+lvltoy919T1Z0xJc1El3U3Ww4ndWufkmkwWDxU5qnDqO91kfIdzdPv2M0VZmOMA/tsUl6VSZq3BhkVUi7+h6bSEu0z6P912zBlhAW8Heg8vcevEZq/Jhkn/8sqIDvw7ls9YkZQiT2qYoQaH/RrqDtnFx5f+rDTq5w6aI/LIN2Q/y9Lj1H7e0bjdPhGxpUd/aOxJQUXB+39pRUrN20DhLCA52A2lE/x89oeggaczxWqkRopIOLemve7YRaCM3z4pgm4oSwhMKouwb2y1y+YUdsCAw9xvEVsmhA/AdhImdnil94BqgEKMulplWmN7lWtbnLKuwOxAYuMcRsR87tzjUhEQXFn+imszfTolPGHhlRUogO2gHP+J326h9h7RIjplXqR1CSsxH4+LyrhESKv5Gr9LZcq//mfu1UrdxakvFhbpT8aFBuOpKSemUcO+hOHa0VSmzvxgzSBOu7k748YAPxs19JIH0MZdrjfuoBBlWx5gePq4MOSIvQryC4684ufSXb3gcAmLZ4vBtXcfMJyWiOXWp6ft2uEaxC02EfjhcbA9Iqgd20', + 'nHXrTQWgDc4eTUSwnBactCz482NCW9JyehQh3Fdbaiai/gPnOe0grA9aeKst6lefLB+DdpRJPNcak3pb5kEWDlPuaJ0VM1JFhSAg/c0pu3tpSzd/DjA0eXq1PLGXQRa6vD5WL/M38+2A8pBbRGG0UO1/gaFvOswCNFEzlXkD+bY/3xnZVv8LPK5IvkTjuJpFLb9E5lVfc9U2GpbwAXWB94ExvlxjYFucuUnToqJcUDlDdjF6spJZJhYRKcXuaSiJhz2lXFLCeo8cOOI8SGL4N3gRGhadfHUeDdlV7T5KSTO5v2qez1OJqHphRc5rhgWQmuq0da1gE3qm4vNsUs/s7JVE7Y/+822kkPttrLCVNuF50sAK2ytPrFEDmF6pLksOvsX/HNXFv+gR7Cp48w77NRQ2Me4rGfgZNMFjmnx/ZHAZoBImoFQNgdlwR3ELpstCdc/xMC4s1xsGH1mQ0H8Oe963Xhc+b4U1liqsetMfS/bmUhFOtC57MqyCGrWvKA/GEQq2G2PqXKArYgvg8cc2zPLIssqzinkIS7Aq2aaiKBpXdM1sT7GWRK/vHTk8zx+4ala13zDbdPpVTCxw2rwrxEDrbGaGq2toUtZrzRfGR11fARwXSw==' + ], + [ + 'ZLmLgcU42ZHVHxZVawQe70hM4j2mgJ33Tnr5DVCLzEg=', + '41+iLKMFjB+kW4Z0G24MXJM5m2HzGiQU', + 'qs8MqOhD+YZ0v2Jfx5YUufFXexhKYAVeXCO9Jls2VBdJe0YgtXCPdzLlxu2sIrQc0dbHGsreqCgYykQnC1QctC9OzAqAlHl6rOFeHwJRlA+5cmKYKDTt6t1aRapvNy7q6W6PSTJ6ruAXmdi610pvbZOEMMkrdNNqh7plzilzp6Mcm8GP4O1Vv43yHUy8cx/pwGDASAdzTQ5L3eA/ocl4nMq7ZlVLc5NT0/vjy8yX6/pdHd4do+x/l96IkGiDA2ZD2FQCNWFCVJS0Do7dvWkChCp+SBgxIrMWOmxs8asql8/bRceRy+IFQS4olotIgw96WWzmIZ4/jodYwSxK0YDcBYMDCC1srJhaV5ZkzKR0ok/S74XaR+jRFUgYEAtQEmUIjzQe4uRTxrhDUBvfMBrkAZzLMwNI8CYTYJL7VKGAhBT30iWSgBi4x8hfdmqdD6qZCE7iQelvszn/ZhBQEL7rYB87REeDYafgA5dLaKZoUTXePo7IzQDa0NRbMGBk6ALIpzystVXVwovW2axm/zop28KIO98dJ0dJYV8LAw+mMKn7e7QV+eIC7J/wbLFtVaaYNYw7Cve3+uJ71EQgsKnzXnGqznT7ig==', + 'JCpzu+uCxZ6JcPxWGh8HvAjTyFBBV8GryG9ent2Uo4kughMzXW9WXcbOPuk3tuHZf5bKt6frj3K2VXT+agU3ELtXcRji0dgNLUYTvrsQ50Itiya3MkOgI7+Tst8047mGU+ECCDPuW7eCR0tfSpcJ1/9RLgrlxFwCNRbnOz05PbQgn2P/lSYns6krK00gNtLGx/hc35mrkV5CXD76Hto/ik0EagXDt1FaETo+EBAOZ8TN6l3Wj70DQj6DdZ4AxFH2+SL7/Xw1qe9KEtVQC5992yqEo9DCMO8LRGi+xRtV5iej/dMe5A6D+j+U988Y1FrgUbdlOzbqtFiOlGNqh8rUcVOg/LH/6DqmicFfzhULfBfMCDVB137OfvN2D1+lEr+Nu/zwyyBFv2atrngCqMJhwu9JY3r4YXnSk/72mqDaXyO4PlGEK0+tVHYIiovhCWbwOnCBpYnsGYukWLZw/8xAssyDQtBLymiZJub0R10S2UMCCNbVN+e1yEgCewj3BFke3swLuRG4qa2w4BclOXOGhscPXqpJngWhXXXBX0VrpNZ3LwUXhFg5YeH2aZjHr++1kwpzE0nhVnKF1rnvVwhNe5Zk2oBF/1W5qZNjGtuuBnkN2863+OA=' + ], + [ + 'VgUih5iN9/1Icp62LNOAh0YonbY4/o3t4gGf2ggJR9Q=', + '32rWVLoneYB5aI2jZp/D0202hEolpb+F', + 'hElcXVqrjmKzC9w8tTmUm1sa2oMnEGBsioImqZg8GY+ePJlsftI1J+yRrrZ0aa2wJEaw6zUoe3VdARv1/BhoeyKQP6cV/cNNAEDmnoAXWnZ8bblXEvQ/W5eklTeqD8U/gpeoA7AiHICljnImpfo1agTAeRozTA9zcJwfxlUlcJTOe96pCsQru1Ci8xqhsdOwr4pBARY6wxEjcWnYCiBtIwa3fV6nHXJ22wJM2rraEkVtC9JI3QSm7y2aSvEY6ZeqU8c8TfwUKO+K0n3UuxhGWMu7dS0A3VyDCz5e2Cn0RMMNloYZiCiOsJUp5KnjGJYM+nOXGf6VgVSp8KIht5FW9vorRxbkzmsLhiA0JtH9MC53X+ZA+2oEH2tREgmCV/GR0IIzmi8rAOa9NBwlJbbqcjXKPJcwKyg04jSdTBmeaXmJJcwEDOqDz7N5RLyvZT/6v6Rj0Zmc/OQmLdWQf3/jBl7kRcPy1YFyPGCvrPRDa7ondn9R74Ex4jZjlWjGg/wZ5upqeeuDPiBZ1Z/ifGUwGLsSt72DfgIcYkQW+JDNLCfG8NSk58WgVqlM8GbwfAaHAPoKnxyoHtAaDWCoWf8F6MNMY7NKI5w=', + 'ggpj5drBdXCV9055c2m9udG4LFzjVJslLUDFsJWAGoW7mJOmfpWtLKKhgwTuUwjYc6WnR6a4ON0QhVtdszhh5/IyElM5PVD4A+2BAB6pVSXXi4iH/jZKpMfQ6xc841HJ7bMEl+kcpO3Q6Zs+LmE7lCAtaLF+/Pn1Yrd8387JGkz9a/fnrb2gQE5ykLeDZUsrHNocLCYS44mDZHCx//dmHiqUO8qCoQs0iZFEjzXOvD+SGYp3Hcs3i8hfc7mfgb5VlqxTaoKSNLK4wY7y6i9luib1STpXLDY/C8OUhtn0Z5xjJTOYiv/9L9axnVL241vCBgvryJYGmvvA/bWN41xfOUnmgeIUoyX2i6Z2qvqjOmNWTEG3KbEwoMHAMGi3rJaQwz0IQBvVmuQJZ3b5oNx+zeG5eEOk9XWnOBfgAYlnchuOY4fr/uwHS2xMYpwK46zOJ408krdwLbu0bPTeAP3lTuFEnK/woaaDef2UrLDfqM1jnaNZyLiVV9U8md3YDKyr5nC4WxBcdR13jmYzT5C10D/TseNr6hNg7gS5NbJq16WPMgGV4VDAU6vsYn5D9e+L7s1Xjnz1jTxb+8UNM/Y31GVPCfQYGmtUcmc9oxOUXYFO6nUJmVE1' + ], + [ + '/JqKorBI71D72NVNHV1vnn0joWezThtcT0EeVDyIdDc=', + 'I+dL53zF/ANEG8KgJ7JngKslEd1zdaao', + 'q5zyE8SjiSM1PsKcLO5nIjfRHyDH5Jm8MELtk0tnbhXxdNRucaTpyc0SAAc+afCDGDyPtbO55v6qGv4Dh9lpky0AmTEz6eqrTsC5adADqGn9dBdCfK5LUtUB6jsDB3xwMfhXXC3Ch4W4S5KZu4kt0QZFbqZZ5HlEsr+2OopN+GLRG4ifmR6W68IR0vBdQan4N7Ta/6BSGxq9Gg+kS5CQ2mAd33F0702/bFX+BowFyLkRzmAsAsxhqzNsZs6XIdDghG0LdooQ6e8nu3mOI+u7m6pZlcVU0HZP8NQoUI6dbR1yxjgV6xby8hUCFuGRZoO1B0rYdqdHTgi08Y1HENTbTtP/z5Cac+wQCaVLwhZbno1W0fW8jCwGV1IsdPrsgJhpw3r66dUgEjnVW5FRXjfw+XOKqFvPITMKow7riF15S8FoOw4VfNsfJTBLidja+3ZHQrgBupj/k0/NPEP+wHK/U26D9ENrz20QABRunrbksGDHTeXphQsfhBO2I4/6PQAw+CJx2gZsihkUpbcHUD4eqDSblSn8f9ZEjziQSAA6CvWOvRGFh/ZvPKgEK/9fnazF4/rFI+u4bqKEyc77Xb51DN8YxS4uQcGH', + 'SWy7+dU+kUWYX8v6rNQ78AyBg6ML6HIBa48y9zZzJkh24WxaFFrZkjtfjum36GInszDb10BLPtEEcaxvBYeoPHC9FbpWOg/Xwl3RxOZdiZxU72G6GGQQWfq2x7fPM2fS/pOqLIEabliNorAYMOps1AlZPqNvoKd1rCB0ehosxxU0y6q/EhgnCGAlElIlokW6GeIb2kXLrAL6/wPaF17SF9vSDpluX6RhvLf+rOqOgKuZ4ICZxBa38yurNx1FqYNyAl0LAoH3jLReNdEZt2+bW0Gq03fXl4rCxXOb7LhEe6kX71d1bDQWcU53rutOFQICGkaBlDeA2dE8G1S0gX4hpybE09h0/H3X4LKCCxbpQVxgobnmfNudqc5kLpN/tY71oHM8zRUy3Gafo++ivhUl/aNnPBUiZIxB6t7b+duqfZpldE7QFDNBsgCQd/cRSQHRXfkeyanEePCHbx+rflXebo1pdCTURsZV+iWRjRdJAyCkNG5Wcey1ZmKbdjra6rd16nHmNekZwwL8om4TM9EszEmmf1x+i+r3glu5eOJXj7dyoufQKX7Xj3UwPbA41/OH/eG2ZA9h9tb32XWQmKs3dRRYkKPgMWsPR3SqtkzXp4b/jj2mRriZgQ==' + ], + [ + '8cSmIDeR+OXG4v+y/zewRctbGgjBIkqF/eIrjWjXA+E=', + 'WaEyspttSZGtbWxsiGq5AJvxJqTg4ckW', + 'xzgNTSHzM42mcdP4iTBIJZQgA1nE3+a2se73mZtVgE/cPfU1pbZ2F60nk8OzFHuP+EclJpByXFy/XSTPFSQSRlyuaVwrWhltL8OT9Yn4j10PLlTjyS/q3Q2SdNPEw8uFha6/oWRaMGXbI/eP/J1qAEtMO3zoo9FdYZe0ZWbh0s3ghpnMR6RuXCd1Wi9aM88V4x8Wkb8xbY2UWuk6bIaa737QDPn9id1C2Pg4g+3l850gANaAnoYi9Yg9wLOMqMA15M6IngjDd6DLeMfB9o7xw6CWH2GxT1X/030zrU13NI7tVRDNIvroWX3vJ2GfmgQ4QyOqOfIM1BMAzjZgyb+fSf0JkhVebhaIKaBoY58aYUNY8RFdKGXW0ej+Nyz5owJ0/44LJq5BTruUQdlTl83EzyNTF8dQ8ZmNyfSxb/ju36GPcALsmLpBSR8xQG+pyai7Sn3h39bVfb3cxcDCUE3x44qoLxzHg/nrndmdsU8CkFSmOewKq7Qcgs94tNRC1LFpoEJBsXSdR/50IpEVgVuQUIJ85RNTNWONnwy8l+RDR9rfV74Js0LInotl+HohckGL46OaBfxR9ygmhTB6GQGUPCWMW4X/BBbmIQ==', + '2273Oll2h6s/fruxSHXJKbK8cfxMv8KENXPZOp1kzSk2vf3foYH05LG174IILmNb4gsrjeXKZssdVOVw/EKILl5YnVpLxhtX+P6AiqWSpj4sPdZ8RpSw9QdjDIlbJShI1ItaQjPVf7nYXgzrUMu8SzYZ/Tl8oB8R5Md5VgGafjFkW5EnOuScW936402NB4R97zSq/VOliv2mJL8uKd/2DL6d9CFSvBrC3yWuEp3QHphB+04PXTseVyQaYUqi++ESTUXylp5nmccxw3RdTIfgc7oGxQjNCVR/ahAESTe1gdBj6KSwzWIrygxLFjV4P0MWajr4n8CVT4lph7eIAsPf7xTrglEVhz1ZRlzkBdflTmV62SFVFe+NA0W6V+kX+tZ4Ba6EwPg9ligfxdibZ04zdvlBpaY5s0QLhenNY9GqbGsle6wn4igwijO3Mb29KVdUlPlr5PhGUF3NOP4RwowJ/a08u2xoqP2oJJtBpmBDT3RJ8f1f0HzGRQ7WtN+9AUfDUCan73a3+Nk84loAf44nyT3vefiyrbFOOCEfkY29CkPDqDu1Z5zGo3qu2MFL9O827PNTsCfWN98EJ/TtYb8qbjnzJBO9dx1vULm43+KtcBKyng+wIGzlmZ8=' + ], + [ + 'nAdR9kumk9o5lRMhBy9Y11sk9VWSWxB4QwLuY18CkLw=', + 'H9Vd5fOmZBIwK6W1pvRP1eGiukDRx/SZ', + 'dKDhPB2dNSrQP5Rjg8/2XzAhyLU9UFjnP821mNzjzUoYiBKovCy/K1T724xSMYiSHOfKAc2MYJ3rao1u1YgBYG7C/ybPS4ARGWqKzOr4Y4LZOKMycAt+03/YEB6j4/qHINgysyR0Cbr9i3gorSdHTiDe53HwmlkuV7F1mdyYRcmSmxxwYfUNNZF3Y2o0z1KteFDK9+HCC7lnTXCFnG9Cq1gKfy5s9LtqQQmUfcZttsW/yBUNEA0LgIr12ra79aSlN2MFp+4OSmiCEsi9fxr7cbil6Wh29ognzURjbYZurIlqeyoh9Gaw7y0hpHF//d41XFPC+QUpo3dgrYeNDMs+gZ+ix5xokcBrVSKhoX75PfAlTIUNcrkMdLvUNRKALJCbZh1FtXauprcGsj3x9Dq3E+T3dqhv8ryCgKIewjwcVFayAl9F8IUi0MobFvElv9Bm75K1WIq5NrNTzfAP+A4cnu9a68DPbTY34a/zbWt8Bb5HQEl6TYj0yoY5zo7tm2rMz3ZlyOuFVyzCLYkCZRpNXaE1njZmmqjXqTpLnO6JZtz5otjZrS00O6VjivpEPmSgJSCEi62h47axxMobbRrA2djsz3q1uy234N0=', + '4CnlBDjAPV2E/0Z94jFx+TPnqaitA33n2f/fiGekFiSYruvlfS44nKayB7FcWwuAoxfgxzrsUiAoJ2cZLx6EXZe5vNJRJIY0nx2mIWdgNWtEM1QeVmofwDelm/COY5Sv2ygHIzRn/++Aw70lOHVTroAqWP1Y7mm/kn1/+8kKF5NDo9Ce/zcdbJzjr6R1i5MzCRbReig8N1LSFRTJ7bufp7x6leUClLqsGGP3/27MDZtRgDyv+gushAsKsUo9qVgXBF3/7C3MEu8CqQGrH9pnPecY7qnDnMgsEwyID1zurkVHIL+c+FpfmOe//f4bP0FEHjqleb2mSjQA0T8DeQzJ+5qWp7gfwod82AgTO1wHYVOjW6shkthGdgLYgrfFCY0bUQFnMnnfThVbXupzd2shV0bShDKyFPiaHLegSI5aysc9JWst2Hyz4uzCDdIedsooVGrcMaa+HiSq7ur/a/j7jX1gOG9cnKNkztJNxQKL0Kp7flqQ007jvtW5RG1jmGAxc5eb+wkXyh7XVbkdUrdALZZvgWuC6CGG5pYFtKe973n2obtJju5pfm0XRPTwxvqW2i2eRLFsbtVl+jaInvcAGag6PJwTVdI3qvWeAzP3TyOP7C4n3d7Vk9x4' + ], + [ + 'tuEZnUOzfJNmasRywI+pDF5+72APmqO9iDqx6+/jR5Q=', + 'qQe+rGeyf9+Z11Y4VE1ukDfNHC5fzlln', + 'JFTZ8YVPEt6E4Huy55SJ5CHWjZG98Mpo2hcxnkouUGV3CHG/mU6ryY+qnGTnlG9N5zVoVUvfG6Cylaupz4aDbEuppUNMben/ubLUw5OGN8mwPWdeSLUOTkAbjWRQICJk2Ch2ODsMUOE51Yryl0+FZDGqmG0NGfNi0AQO94mj/7EXmZInWCG3QH+kPcioDCv8L10A+QbiGyYkfnfwv8prQQfvKfGhYNs62qzNYdBYHKd9FbX+G3PldMvrMgSBdlOjj6ghhav3G1oY6hHeGPjKmobxF8itSdUhmiyhHzJUyP8g1sIFyHCzlT9HAuSp0090QpppIy4sz1Zded6lxCyv81sWW6t0J5L++boKMzzFfYEtZR0CrHyOhZcH/UjAIeLqEyFgo+y4zAcXnN/fIq02penOcog0SSk7Maxd1u0BXXzOcdXffCkc7Qj/DjhcdedZdrlGxiFNmCvl7bzZ9ovV04nZfLRvydhYuxBl9Umh2WvOUc4+e3DN4rtLHcmT5fSofB76GV+A4ZXBL3TzVSUshHFrqJsjsGZTd/dxF+tg50kVgZanPcYIAZjfpfCFxRKwfxgSjwuSsFa1bZoPytrN3hJID5Cxf3wS1WOU', + 'dkX/IlFN4cdjOiaAV8shJBkCbEP2OSiicLM3WKNHbsRmKy0uUhDekdHqsG4j3UAKNxNZ+P96jSMZB/fo9kvXaUlGyifM+elHsKZLD8GuedTyWgWzWsIMaU8N7V2whdjeq+1SRikE8EtWxWhLxJ9XKlNXAN+9q2yWfmWzJf2u/Vn2XnAhxv+UZBuGF6R9y1d0UuRSDTSEgjBzAr9punE/DFho8iOVegL+VumW64e7Bzu7rPKRX+3XyONsaHDal+RJLRVyfvfP6X+1WDSSOOAAuIItLgGYy6phWc+R7UmRTjOBIK5Urb1bsMBJxlUf1Yp3zMftF7KQq/XUP0m0JSa1hmjJzzvKDpKhXIxxe/ZWgPPDcVU32Ae6v+H+z1v1KZnuIQZRZ6bYi/gq6iuHEQZOWF+CjsSGPPimsCXPqQAuYCRvLfrE8krmnrkG6Z4jHl5IO1X60WUjG94GPDJ7vrNodrB8b9Ro77bh0n3uPtLAIPvKEv6ZiiRF1dkHg2JkLGiERR3x+fMB6qT6iUaiWbuYLYbx1k2CcmCNOBziMZDuywV5EUouQyAJgHEsbvxzxZZarlTwODqWvuiic6aW6zQ4rh+hzYmwcly+7YSaZQ9rQbS1f1zyGBY7Xb/7ZA==' + ], + [ + '0n4dBI9oxnm6eMyxAyfsA1xJ/1ER8zh9bswgeK+MreA=', + 'J+/RxEkvhFWXKwbvWVE//JCl9lys45iU', + '0uxUidYsL1yaZaEfYs+bTAAEfAX2PLwDMSygWJ3RA6GazAkrkM3eBitpXcZ3pTQokE1tg0T0AzxxZuafLlg/mr8fsVC8znO4TH255x83TDvEGqrIyl8UAueQQhV7pkhP7Sm+cEXggm949j5dr2xOQY3KU3IqVYUHvFMfBr4MVkDvTWUjqwzaaIA+1/ylqRQS7RjsAukudebrqenoCnJ5h9fvsMTDy6uiutavWzrrhCZpv0gMXWDFY5CU5B1TkIpBDOBAm4Pue4ZFVR5coNUDmmyONGNdLUm0ZFKl7FgjDM/vOWvOQ+2kXICmhu3PP/hq3AMof7zSdWwOOxSLfsF7ReFfmsYAwIoOq2bOX/UDaXsAjAQVYayWGlwXiG7IlxwmUE/o6Ubp+j40P2R1cPdzS2gMLM1W4e/o2y35+At/TR6vl0QOHg8lTEQw9yUVep1/AHUCHO3YZwgs22B5roF4Ng3V5tReaOXSy1VwK5ZMaYIjWKPCFTDUPlgc1wc3lRlKOvdwKslYRvCm9QlDuJZKvZI5UR51qLNjgg8xHJiqkyeVHGTWE68rLhokLNSsqWvPBO4TNPJXrKfsWqssMO+K4acDoLNSYdZuqz073Q==', + 'hnOoSorDepPquw9SafbzKQ8OqLC0hvIpXqOoj0nnYpN/bhBcKR+PZTbKfUu/b1t+Am3fSBE3LuHHEGCsi9QOlqwgND6zyJ0RIOfgihRTf2Ypn6fgIKr3EMn5dgzAjVU9CKETh3KDPa24aHzhlKG8bpAVyfNG0i7q4T0rDO9YVTXua2HgpdiVFXv8hBLJMOo9eVxDXB31yxXSNPziXw6qR1gTYNl4AgH/i4VbblvEbVTQxdg/KkY0rVFjAZ2Kq8SoK34kqygJkJWeYXDR9W8KkE8oHRUJAF/veXPYLQ62z/HxF/YKZTDKwkIjn4mYWPS/f34Mym4fUBojVvu1E2pNmyVxtJUfXosV9aoYitkl5GtrWDeSyeQ/+Ogx0jIBdWVSEwPxFzEqXPZDmTt2m8l5kJbbOWThTcfWSlfsZGCy1ZOwUFeCrZaiHSK8dLkzNfO71BfvoPxwA6vqZhlSGAltxD0OAY/IipL8sehyfYOKdi6HjVC8JoilrLzJdaULMHKinZGE8JGj26EVHaEujr/9PBmwYvHc8LKbY29YtOQxVaU4jXi6l4nE+6j34y1iOHqr7FWx0wNf/1RA1m35SQPklsJmg3zNaGYp0boU5u7w+knt8kBQ3x5qiTCJW1w=' + ], + [ + 'yO1+FJ7QKjuTCSsjp6gT0Q3WGG1uD1IrK2RKrXizNjQ=', + 'tPE9XGDEkXR0+O6b5OVf0IneWrexYQfq', + 'Aj3G9OCZ7yHiQKEGoQnKn5cogv0m6HgtY/iF2B9W6r2WN6MMuZKQmef2lImU63gI6BLRYW1Cd52tXM4yh/Jz6eUfv3HmqlXo9V6QenST6qO7ibSXRe3s9yAx1YtUpHWOC9cFnyU/4rnbdYGXhMgUW3rdUQP7SWKoWzTAY8XlbIhcmIHcUZLW94LtlUrV/D5AZPmAJREahXJE12/yhqKmTXjSyGXL03gzZ580GLNjd34230/NunuZ+JjAUPMsq9rAyrXeRbYBK/JZvl6AKz/aiFGb5WwBwy5xo5S5JASJvUi/OMjQXcWJd86uxv+XeB65Gu92LEiKGmBxRwg0XQofGI5B0bXKBG/gSHIacoodluqi6IUGlX179B3UAx0NEIe817r9GXrlKBMpg0plYstqk+Y0Sl/6W/2FF1heh5Hp8LCxuB1MGjGjpuOtFeNXCvPNWUJUppxhhcqFT5uTMP26c3Gu95jSqHDOvtsf/WUxaJRtrqrBN95iVpIE9wf39NjQhmN3dGwylhWeu7HoN3nYZlYdJkXf1/lSgVKD0i3TfY0nDUNxWU5sHy6FvQcjw0kAwLa4hfuUopqkGsjtf7UzJ/T26UREpdzWJGLx5Zk=', + 'oPOFLD6y8cj+20uyiDHjuIeNgSBTadgDRJBchJwP0Un6gyt5odB2tm2hnjsZBgk5EMT9Xn/M0ZSvizPCc05FMLi01M6w+WYMBsg2NTEjqEzbHQ/KxHigXKWNjHMLcxr7ZUwIYEvAIO3EmW5zDSOYxI6t7erwwpz2hebCnJguX0B/Vop/WzN6AzirrDc9gXAkBqyCUOGPts6w4UcuxNVkfD37+2r9AcFUWly9Eg4YFrR4WwTMHarsM9REup/2G2LldEuKr/ie28d0EVsEyMv42gDjfd7QT56ZUY93AVFkTKy9drYiM9gyTtgkOma7vxMWRTk54on1tzb/zhQT5i47+uszV2WLWKmWLogHyhBnDjfzGHDcR4pEtP3hWvMQWyb5F/UZEtAEZa8b8FA38qCJgfFxP/NNOfiJS1QzIP/aiy7n04O1SmX7Wei0P8mJY6aM5xehtFrTcgHF+BTgUKSKBrlOrNdsO7iKdFsF51Bu3vCpF+8iOzWJwtSbQYOVe0jwXt+CvjmSQudadiV3oePlLBKrLUHkJpSi9cXlP7/DGw7JfCoCNqELDbpidKYnoh1RybGDgXuNc4S3GoNKRC7yzR3rlOGr9GvplrvZiNBz/SC8Pkd4Um2ZY04QkNjV' + ], + [ + '7W0zy2tiHEjwWBHDDgeRB39hqshPiOPFbMpgXZNIDlA=', + 'IMBhx37/NxEhsD/4wE4PiWbnuHmFu1RA', + 'l/c+XXdWFWWZa3Xff4Ut39Uje+MrVUkQy5jQF/lwkAHdhJr6C7gA3rhp+JCK0xXnt3wngcFY+Ifh+GLdYwRPFRdKNjFf1sdeLHgpyJTRGbZbYvLaER4QJOfx4vepjraGl5sehx5x9KWcbAEuDwRy4oSJnaJq9Jom+fcSlH80OsdKGbcBONzn2YNAWbAEfNqVoIKogJF3TteqX65nivuXDTQ5E7JqCm/9LG2OKRGWl1BORuZrk596Gb4A+iW9NY1HYP1uoAKc21bgUavJhmyzFOlrTLV28DCSMGxA6OVJiJn8XPNBahdHYhWNYBnyniy7vRBfJKb4B6mYeDi851aP013sntcRKWLwPTHFv1XEAyyGVvKk+71RmYLlhVdzXChBxgYFFZmJv7Fu6E97IdipB3lF1kgsXPVaSv9orfLwDwCTK4DYIUiAOXg9AS6hwI80/i41tGyeNGJcd/KuW0Mc5ZkmtSLzG30ed7r8hy5OxQ3p2g3rEYNKSZrvcYNm/YZsk77WbR5+JMU56/CPfI7FNbkGDwEZK+En2YOOi9/f6Zu3lzsnh2hwYCOya4s+0j0XgNwV5OHmb0UWlmUwypVPZmoYCsm1pr9ZJ+94BXw7', + '5zxwSMd4LvSRbFNI11RI7GP36kRMpah87rNQgmoa1DSV33imvIBCZ53+jgldSnA72WQrXgHsPF0NdB7umuk4JoIrCXoQVqD7d+msDrbLns95Dq+s5bguMb4q4OxQCeOAjI3D9LIAu39/tXDhvDdIVNezmGdfHWbwCcY6YSwHq7z0p6ac8glvKRuFMNzNF9Pet2MKhQkUeQ2aFLuE5zpCyKpNgTJt+19J/9gaUsIj6ckcqKORUvm7/341yURlrxRiOf9daQf858JCmUcy4umtodG4jtFkditO2oNqdtxm6t99dftc7qeM8g0SoVRFYc84b8GwhGg4LNbLu8IBg+5J/UdqjH0Aem2hE22q7i0K/e0mU257Serj64mXyRJZvwbaIV2WEKO50DUf9Jbotf6FBjH+NKTPenHYYUVQCPBJYyLSBiBINVk1vB2trXmAJtZ36wgwASttPBwcC9YCTPL4p8yfpxjeJFw9KXX2pnI1bcr/5ydvnaE4iqtzvdjrwkd6FvmKdKNFA1owvNxmM+3FkZ4P4VhFTIQ47FElhRsR1OVvc7GbyTK27S8Q8nBAIQeBu0Luor1ZU8NB9L+6Q4DAnp9teHfXRfhXsAyQvD3irrIVFxkSMyHFg2594w/83A==' + ], + [ + 'eiGajUKr3SsxXlhy6XaGsvpPzOKidm3eb1PxnZ9XY+o=', + 'Gf/1XiDh5hirCqDKvVvCrfMFNuvYKObv', + 'ZS+TXJxupqnAop0ynj1EqaBAPP40a1FxphmvSRlUBh+Y1IsuwmYjJkzZnE2paG3d7iq+UgZDM4anyEEUiiG6FhuwrWp7SGoKZ4izfOmllbq4Gn0uR2bjhTFS6csW1izMfAe8XaWw0MXbi3AwwHWybcUnH98qZaZcEgSIi3l7z/qDWwIHFZtBYcJBEO0XVqFUJO5llQwb+iq1x2pN4jcxYIISCAuZDEMIX1azkrTek3a5RquBUxMdq895JWfR1Z91K/P6Ia9+cBUhQ1aT1bl9cCoGXStUPoShoEyRqdtDyu9mx2D1SEnAM64U/Z+AUXF9JFFFTaFJt6SQlDTorP5VJDZX0C+9FjEAB3I9CxX7179M9IrRlIa5BWwr2NnKMrk9jfKiJ3ME116zNLcuLQqDShAOouu2md44GZc1N3NElVAEsOkHjpA68iUPIDiZCboO+XwYN/OZQ2jKH5VkP1YumYh5ln0iSN0Wf328nbPnVBd2Yd+8Rn28jhD/PdDdNZo69Cj8HvLdsa0U1qQM5Qo52uJnScRv4AKnsCW+rfdcRAfpy7WwDQzxk3U3Bft5u9NmqHgI/SQ/shemBPaiDQYRkOnNmzq8zgKtYSLR1uNwhA==', + 'exRgDE5nB6RXugHa9eksDo9g54XDxuN5zc3BtzOIDX8QBdkKCKAGZUabu6mAnamvvQAiQT6/YE1jiB24Pemv/yXIjo7pOeMEpDfM0o9+NbdP9YGyk/SUZyaSM2GYVcdHqUzEkCuxh0X7tGdQrlh2qt0nMZQ37/5omN+EhCKjnevkZ9WfzE+mH0XnOScq5AvudTPB7PZTr9Tc1L970xPoury7IDiL6KekohwM0VILDGaZGsFRT7Xaca5kPsyf3oLTX17rqn4otnpz1wbIuWFieA/sX7qgFgyv9lW3z3r1KGadv26yLoyK9/4v3Sz39tqHDCkTXcZ7gsAbRQ6h5Ar6hIYG0TzyXnAceCxQzmI7OCf6GMwDfOyr/yhMQz+wZYUr49avehbeevd2x8OVbct/u0iZMhZEdOGMv4vfgsFFl5UdEw6fBZxHxQTnadFrZBf9dyDZF65HjS2ZAu4bbulfFtGnw0WZtRehKFz8fa92mPYizEz6kKEbJijU9OZ/T1iVz3TBQYTA7dEUlDFxob+/LWGlE9m+w3T65ZvZQgHUu7CGNb05LON/0q5RRllTqRGlnliJfijcEsz6p06ae6ePhMDCc/VwSUUy4LllgW7QtCcwWXj32i8neKrXuyDIC54=' + ], + [ + 'KK12FrkO/phGr+jQSn1Qw/K9BeKJoySBPtqkx/fAScQ=', + 'KZDjh92i6HU8kJzvJXa5PrqXND/aLzpD', + 'JSukYRLRsop4NOa5whPz19HskRtqj2HIBKnRq+6RWwTl6gsQA8Vvl4h61N7fGGvFQUMrEYnk2IxlUCdSIdvMOQ0NWxDofOtvr9d5d0kU8RpceJULLHBR6CGsajqPprvE5hv9slFkUZAZsuGS3i9+S2eowHeAXDtGHLizcsIH/V0x25xuTlMs2E7Fc2r7Hre6p6DUV7K71qqpBQulUpmWxjpvgsCBW3cFTHdgB56JzcTjkQWJKjxaL4G6tPtw/0pNlnGMTGPrZHQgME6M/N8FedscORZ8t84wFT3h9l8pSlsFuP5vqaQlJtDVZZhdjhZAcEuz4DqU//Rpo0VtcY9eV2hTImUXKGgMmhvZqdzVJJSjq1f+Mt5TTblkdPABlVo20g5HLWIgyzwccopqU46azTQVvZ47oJx6r5nayOGnDmcfQg6jw91fb7DviSz6BHSPqZXBsIkprft+h4Zrb3Obh+mHeyFlTRf5x/ZJ3yD1q36hDXL00ROJPGoEI/8D9za5tMDVvOjxRkZ4+CWUSumG1qUbWvnno9jqw0wZ+CMmzbUcfNRGn7Q/dlmlvc9A80wSt2/Z2Pj+NcX1DcFOKv3WHoTPb6js/KqVEo3SrXrSa8U=', + 'PM+qBKbuk96Wwil9uWqUO1ihfMs5sFQjYvE2MfUT27xV7K//vZmcKE9ZM/Dd7WIiyTzcZZcad4ukh01MULit+GchB8KCyuhPtew/iXKAfv3iRrQaRJ8ziEDGBqQ3bRgk71sV2c1JV97MbyIjZhJDe+5+ML099xtlpLPeeF4VcPY/u9ZKR6Dyf7hCcGb7xT9Tp3KDli1+UxFAY5MMi4/8GzzOsJUGNgci14hbEpd968yV/cwMrRFuR/JbBRQH6BuK8u2LF7J92i1LYWrqDgMdKPIWWcXJP/FZ/qKbrMlh0oegAPLr2p++BFe7ZqtTOqCfJD94bFQx4kKWKLz9xYAE5bV9/ZNDQUx3e9ZdPsef4EtDe6Y5oqTCER5EhGxLJesDs0qZT8mfw3e+JNe/hg26FAXLe5PTZTRm8/fxm5qRpVWUHBFcTLZZ6wVW2ZZV1fTdXurz8y84B6G++rcBWtPGlylIyRaQ7nHtp1G7sTPIeiBC7788TKJdTcx8VTBpJG4aVlpkigo486jq0Ko+qdc9IzpkoK8eb1WxzIG6pyKgayl7dKOkjsPPnu75Lp9uCQu+gPch2n8TkO7UElNVFYmieAxbCgj1YvsH6SNWzyKmpwZg9CGh9BpvdqcdnHWPnPrd' + ], + [ + 'o90z/BHM+ozcpUGJB3mue2BqvUKHRT+ChAfuzJIlVMU=', + '+GMQfzG0HZrUC1zfBoPv6WfQn6SN9Ap1', + 'rTUzh+cym6kYRhXBUzkHmjV1ToQifnYyzgCNNyc/nxpHMJVMP3wkF8ghklPc3bURTXGs+lxddhbqmW/fRXmb+0j4IzJ1cgKq9MaAM0vU4gcnbdpJTvjaCcycecdHFgctOzDLIjv2fakVQXovMi0IOvU2IWwNGUlWEbQPdnrWaW5OglVguOs3Cg1R2Ax8ggAlzfftDWB11hfUdCcBuLAMrMFYD2o5s5TSqx97zVXdSU6ZThYZinuEhvZSpQC+1ruwrMEoKE2hKmRBUyGyO77/A1ppKWUYOcRCJqhoD2Uwfn8hhDlFCNaZBByYNBTGlxoBBmu3pbLZNIq2X7KblpMfXguoXw7za0IJghCb2WWnaWSr4cDLv2yH1LvPus0KH0hLp4qSH4wa3YVd6ecdz9yz9lVlpKuW8ZXg4H5UBb8qO1+ApmCUFfPZ45VM1e9TjDGWDBgY7NFLT4uW4RvSGVcFig5DaEO5TKDeIKcyS3dPwMpPz87WfzV8l9WJMwUZ5OISR6Knh0cuhIHVEf+pPybYtX2Iu07gXBiOZ0HuRnFCy+D73wly5W3QiAzPArn44YuQQJj9MeJ4+Oac1R2lU6WYM3HqqSZgYoBcErFu0NrN6XDC', + 'K7UaUveMiFlT+YZnIJQlQtCLMTeYb6GHALQKQ2r63q7EXZjxpA+V/gRZerP2V+qdaDsvlyAKcMILBf89liWhFxksqFn1fy1m2KLbCij906HlYXOQgb5WywqYCFrjzd/S904XqbKhAngyp7tP3AE6wMFVYxL/FTfdUcOrMEkGmvIMORthYlFkeG5xM8bCycdPF6J20g53lSXF3IueXwoL3yc5JtjzZLzdYnOz6vKbLLh1ZOb9kBSBkAmI3LNbF6LAkVShwL+HEmI6pGX5NrnNPv6K/e9VcYodhw+WfZfznTfHC/6tk/B4DKbm0iAC8+CYA9OOdDWTsiwe90uIZIKdWipOGu9/O/HjFi2jzDzcMcW1QA0jY853M7/XzWXt7P5F+vhA3Pwi6wAINedNioqMxmJZh1Aqj3FMdU6FTCUJfbzfIH++lMZFLEKGfWobiEHCF67v2sC3xyt8Hn8To1am16cSd1nNx7XsppYiiurjMjTpNdSUYTHtyqJACGIh8K+xy34s+yl5fhvcBqbOtFHNU7C42kkIt9Y/dBIVKymi01gZlWs4dPyeWiCVzjBYRLWvOvMH3Pp3NKnq1ZAl1FiEjX42YDiey649iSIVKCEpsqHqEGfEOU6NfPNHRhs4lb/s9w==' + ], + [ + 'f+bgA7itdektbYtb3nxjAg/Q/+7+xtDEYKdQ9CesiOI=', + '/E2NG/PPA+3C74+1r6FLDfVc8C54T5sp', + 'LCHhFUQTalM8WZGwxcD04YdUhe1UzfNlGY3v8HthZjMOBbWfNTHz0Vo9SW6d4KdHayT+QmxjMojUa/BvAP6rm9dJGt5keycor4wthTwy2iSsRkX01h/JTEiKwryOEUzxeJQe/dNLl+1fY05ueyC7ab2y+9n/n4JPvnvQcYtrZ7cIbV9bu9Uwnz/fq0J8km+1a+aW5cKt9TUGu8w9SQ3YmNXcKpNI5rwsCGNhqTmj9SaANtIcWeWlhc5QRchEy6ztyPBoYNkBI0DjCGoZQyafA1nhMLGpF2lt5cdtXXh5vTznXlrpQtdiGIJUErPxJHvOtmkUYlhDH363Tps7l4VR1CtA6kEwG3bErG/794BO+lNSxEjhJRpRuItbXvcutnRLNaXnBwFy7wDWVc8Xgb5oEXyNDA0neENJAYhsBLf3g/8mFRR3/6FHSrfqRNQ7g1PT5/rQlKziKlZOZPQuHO/sfIi0dRVe0zVGGiKJUBlwC8ZzLMHThPjUwj/SbYUmww7H4j/BsRXBa9I91WPPz4rfOraLHjhwTb5lj3ghAgP38bkxEAyrX2pNjzJp+5ZkZEF9xlRjMGwGqJlbRsIFKOdrobDwDiFzbEdub/YSyFylLN0nlA==', + '3sgE4oJb34pGY7VPZ9X64oikNxJ2+jVaeCPINn62tgNkhX/3GJ8AEHo1bEjnJqBMFociaAofK4IEHcxyE2SryzLCuxs+liaUEoxNXCzXshCv9C/xFp1JQUq+VWTbQdZWSY67/BcsxbB4AEiEsvB38GJNTRJJFHUo8fauv1zwBNz6kCRK43/XKPyNBkO6gob1ZTPd4vrQXWH7dQR7EbToAGzxsFtPYkNwO36JoKx/3F7Ab19vvoMIAO+fEU7gLv8lDC2EHZR1qDw/HzNqnrwBBbrSEIYXWBkf4WqTTq8sVmFDTMJR2I2NqA01FhAz/AzSB30ItdFqOXYOqs+mZ5/e+RBuyQDIggae61XnIq2/97E104ulFiVgxoEQ2PdqPn/XyF/gqbB+KrNL2iMbYyA8PaP/3Gyyp5gUDtT0nQ4F5Wc7T/2Lm4hZJU5YtU9kGDCi1t4tCW8rZwd0fLg+JGnSsCy1IYBdU0oHx9zllrqX4G+PaCETgNZ3CEoCpwtScsL37nhT23iWlK+g7EQ8AB3KjBNOoZt++a8QUaN+FVE0jg5eIesvBndT+VfK7qgAgLrWgJ90G9dwFNHhKj0z+XEc5Uwf5KKxAYat06jPUpRRbotTM/a1fZ8LxBEnK77lgJpcPnI=' + ], + [ + 'DfPLQgZIBQim4uUu/LVpdCxfNQ2CO+zmotbASmcHWyw=', + 'nTCsvkNRp0Rfyi4w5B7rkysEswvcqjJM', + '4CsIP67pMPjzHyTZaanFASmVJk+alxD+V6ka48BraQUuGTCR1pFYcWC8ts11RGsmC27ZXLyXJhrE5AWULfvjAIBnYPfXYnuTy0kpgNj7Ob4xUPZWbF41tFrClPkdFhZFo/JM48JvVgMkKuBaOfzO8AfUZsO1p471E4v0/ZL0uPvD96soIxyZgT2S2edgYWLYfoNA+ifDn9/RpW4Sg/8Rle9tdIKC3wNTO2ycrm1ADSfWWXFx/BYRlZCo/RASnE+NeRI0m+y0RkDArRgc06A8qFGO19LTl87n8eaGrHnzCndaLMr2XSapRi2hBeBW75hvveoIk2+LjjRPc3NCwT5wfQe0D5mtq/dE293asfUhejHCqN1zSGpn0ZSVYRGasNgty6+fQccGykmzFvzmdXEgF82CrEsiYAXNk6/QmSNn37ocD3J0JDMsemAp0ujRNWE8AsKW0UH+5I2QUVfgDx0GJ5dTO6nA0Rc5JgNVyw8EYsyAe/13ZXaHnUKLOiSNVHutoGy8Eir3FOtiedwzJjeks0bq2L1kB8MlTsjGbf2VXdFjv2TKYD8ZPjU7yjR7zAAs4EQ6skgEpTT/urKco9fH9I1Fv09cTccmCvlqku0rOwkbCdw=', + '9LlSQSs79wpkYKkbA/PocXQp9ckIzEzgrLuUfEpmGZT9I5il6hAc6dT0Xm66DdPJ3/H4xJOKbDtgdkLuePDiWPnVVHsrv1OIJj6Y7tTYd2O5kENwu3cXVmi4uICgUucYkC3bGEv2ojwUbEkoBU8qMH9W+jCVIrMsEVIF3+HGfZM6PfE9CTVipX7tGEq/uirc2A2OZ/T28RSO/cOnZl12bE3wKJhngTXqgjVKZMzhavtQu0D70oU90WdaISLu75Z/6wkxrNa2wjILukc/eKkJ9YMzYqAv2iN7vAA0BwTaL/T1r5bgmjhetrzvZRF1LbkxVwBx5njJKYdlMvFWb0w4YdnHwmlV+fQtzmaHx3r6lFv2HPdnHbw/JMAQ/+l++PoijnDoc8m2N1mnN+PTCJGbci+QbqLrrPCz8qOnWLCdcStTKR14o5JEL5/S8FHncmgfbah//ZaqWcwUCEb+QwuXGQZhXF3XRfm1W+qSEdD+cpeBG1U7zY88Lpy8OPmlAqNN8Z2q+uVmLtfFuKDbZJKyioITnatIKv/ZvTMA0sDz+aFQrT3IkK7jbcpEZce34IPsC8VGkfTLJBGsuyXat6qTW3rT53qClddJVPL4kRgdihQ07QK5MpG2ihW0o29+yBh/zYys' + ], + [ + '0XFSdZYLWtu78chpgf0AvTOIEHmq+rq6VFLzd/g80n8=', + 'T0WEwze03lscVUwtfaw3Am18254CVf3U', + 'VENnsAK3gAgHfgNbf0LvfsGDn1WfJCQnHsQpwygVfSYMnfvsYc6mC7UdDDGGIUdxei4aQem5Dt20JjIyzQhxTI4LFTxELVw9LLz6ovhCwiaY1Y4EX5ML5ATdyBoPMh9/ZEz2yhiBzce+u6vcWNSiLpyG0IU+bpuxG6sANHVfe1vSLr7EkfNB+mPlWLgcrMY+ElCYBAtcvFyU9UmqvVtUPXxri2sNH91syPtRQelqJ75pjwtqe8XLsWdzeLhNqs6dFHhfL71qVQ9sgOvc9RoktHHvcZzyNTCCegK6hj7tvhP01TegGVzjdGgQhzOVMl2ofGqEhXm2zssVxwyILVSZJn29LBTMnrGS4qmg3IAqd4QrkP/5skxrt5e6ehaEnGoUGMQYjXAjrfL3pbsd9BD+9WjuBv3qreOSwUfOMblmaVUab7iD554vavYW9FBZD9hmzaRgLjwlWQ0WigZvPv84E6Vo6lT7p41/6iU4lUinDuxHjVsz1B6Mz2pa/FU6xfipMpBZONPrSrzF0y1kNK40MNZL0W2/+ZZ1vWf0Qua15VOidWAE7C73jdD3ado2Z++bXOm7WF+fY2xyb6KXM+xmS7yVL1tGBzJQZVNqlJ8RiqulepOW', + 'FRgV4lhYBoqeL7VvPFrMQqWIor6F1WICImFh+1INkJ2SaKSuJn9kLMFsonN+dpRiY3IdgWMz8MAhAPNA0Qgr8bwN82mimxj22idTYyOPavgMTeHopJVBBBxJy8Kx4f8T54M9sDuFOH/NkJg8VluCzlDT+985s0arzEGEVDyfZKksGD8L7hL/hASiWdajE3WZMI9fsPWBO8HudokM26TlTynJyy9L8P4PEQd4LATngASIUDdQ2Xw226+WDPZ9LhVjWyhxxSDPwae6cjpmOzf8WXz/Q7E9TRdTQBO5SWobn4o7177YrljRe8yHBCr6Ef1LZWk8TeuSsA/8zsHJgUc324Czc2OByN3EWoPDBa2xINn3G/9ckQ9DE2jVaP+OdGAF5iOdhKUSqm7BWfPEazABv3zlEYndB1jKqmJX7I5azQ+DFTOFO+EUaiFhB3UDjmcvoIeAHGxczxPOaoo3qz0lV/BahYNUjQT5p3uF+3IhebXeRThJfl3XVkpVOnuXA1k3JuaPsnCzP88TIS4yD7tIeR9XvpZPHvcovNA0rASy3zCc/XpINIvKUmJ1UXKgsTGQXqSQy8KC7UL23+TwjLpTopcu6jFmagaqMhoAncR0VsgfH+aj9RMJT228NuK2FuxPv1y3tA==' + ], + [ + 'J4oRxr/Ap0FqfP82K9wzQLt3b02qANPfb29vDP/sf8Y=', + 'Xhuvu39VhI2GnyYkshSsZgmr7MQYYZke', + 'IHwpSr+qafCh7XtaD1aho+QK73MiroGrbTZnfaxPxE1AHCJiSV2/2I7LjnKpAlK7vHGSgY7fbfcJvaSeyYdyQiJN4GeJ1kmfLn4j4BXjtoarwVL24vM7SUbOqL3zs4qKAuxO1/2/xUZNe1kG57Ld0AVyyx/SJJ2y0XV45UxrnC2OZH8DkQOoZE8TGqaUQ1LxrCLhpmr7WfL/aKCDpUIxz8dfNJovF/1yE70UOAXUKd6JvSFt5oSzoM8vWmliqQb8BTr9Zg+Hl6QvzFG4sF8z6dXUxACsKk3qRB+GlC1Vp/l32X65lHXB18cnlziLgjfa6cg1Tc3gg9yxf2o+Z9C2c0tjQ5MBZNtu/k9dtGc1pPjjxKiBcAp+rUQrsT0GPMcAk2qYUThpNMWAXOc7lEnfAibWoLgc49XqUAUHBxvd9x6+wYd6JoqnRSn9vaSE8Jr5mqagdlAzXKMCMyJ32NSn1m29ezNoZea33BKtS0pSnhUzcrEn4xtdtoEAXlwxC6g+lsm1uWweAyP1E+PA8DAsC62WDh6fnU0bQQWQ2+bpPui6M1SGdqnJvYopj3D9+DkpKRTvU/tQhA+ASdiHKBavGGSrej7pZl68vj8/lIvpmE1uTmcw+Q==', + '/jSoYwSeyEYNK8+f3FVvHGTDNO+ufh/EjtYNvzE84GuFCjsoYmrBd+Xhkzs7BuStBbpKe7OD8/Bo4Skk4nrj8SV6tIk8tVhVGP01ED75OB2MzSNbXVAms4JTF/tiydep05w5SEWPc2NPXJ9j2Dxn2IuThVVORDaeFLhBBW/Bl/e52dVdl3zSVO1RiW5frpxyX2EqHCapdHZoInkggEp0jvexTVg8IZHpX4MC9EM70LuhPnmT1ejsjPQ7rWLkZGHzVucB8BrsDS/856AIs+Zc7WDRGqOTOqvtYZht5BDUDSD+iTwTyBRev53CbWHRqCzB4/4JwUfbGlIv4xP8QzkciVA51qRXIeoMNWjn9/4pArx4+XLXd/Q9Ua2Ox/JkUs1Wkzum4dEYaufe+hsCDO8hhHyh05fPcUmqRXuRjL6hXU7HlVi8t+xl0nczBf8Jf+wKeDxt5ZXizpsI2OASIoQHZN8iv3gtA+m3s/TEiThhZ0nGhRIuesWmwIHICZ0xxF6rjkW0J48w/nrDsxEeEpDVNGD4JABWz0W8tX0sCRldvyJSLv0YKn7WbOe+cHJnsXsORkt0Sfitc86zCL9NVO0Oc1z0+h+tC/UR384KLS3rZVXRlwhggoSu94kMDEVlWYJUKnqUke8=' + ], + [ + 'vLm5S3T4BJzseJkJNx0Tk2oA6L/zEiDJb9bDw9R08qc=', + '4bVvR4yvLZu+XyAc67VbYTTC+RfftujT', + '5qk0DrJqHZjmnKIApkS4sx5CsdIA4eBkjJ4l6L+0J9Z9NZD22CEGEbjRx40MxIwX72U/4zg6s8+qTT0G/byEZM0Lx8ELn5a/oPjlO2f12sVY7wnMMNV8PvtmjUjrKAM8wUQ9NuowqeprbpAalCFjoQJEuWICsi98xrh19G8jg8u1Ng9OOZw9ClaXfhxqHHuTl6MI/PNbIuNMtNonLDaoKNQYLTHXKvBNXoAr9QYPp7bzvoHZZx2d8iEV82bL6ZiwAnuFbsgEQTdYK+t+C6qN22V9fPT5NJU5QknNDrFAdDTkDDiEMZD8ksoxlxSowpnpQ+kfM/NX/MfhSl62PzatRzu+27XAqxX0d2K9F/3bOyFfxRg767CnM3UPH/B3rzQpHtA3nwiVrOEg/zZJ+y+6/NRF3b1rNVD+NOU3gSpNAkkX+KnG1vFQxKERegDrN64wbi/PLGfJc7fTzpwBiYBCuds7N1o3+C71h2+JEgphuGFmxWrmNJwQ746qyV5EHj0t0yyS5JBKdKsfj7FvWigBq+WRMhoc4wvX5Me3+yR0DQpBzZwmdtcyVcTlDf2RHZahxy9CpUH6/1lTZoCm7wxEqSYQEeBPRFEOXaEGQpXxHlS06WaOqBY=', + 'cfcB/y8gBQdLKqWWlQzFbo4b8BQ1phXfVMtU+VYVPcY89CvbvMuljKqFTFutLt+hlugMeHFQ9/TzsQu2Sq2nQbRsdcUrqw4gVlbOiRDuP+hfcQ/xlOB1kMgM2Kd94VB81PgK7zm5U9dtb+zjUniQGAC+vR9iXUdqQ72lCVbAxR3bAhMAS9LsZQordYWmsvYMoW8wv9xymOqc29peWak9TRj8j1NkkOLJ3cYEACdk3QJm/lys5WZLLmLix7jtkikn8QRc2j1t64gbR1fsbuytu1gfalYqsEKheKuUMh0kPdtxfGBHl1Cf9jgQxvF7vu71AxPveO9G7RjFRckLvoNxyzyRVlZV9MdaUZWUulolNKPREFnG7tncEP9l0tT9SqIbLCVTOj4pxILwjU5kvn3rNo1FXRqPeZSvm8TH2RrmbNPOPJcsQfDu4FymXXIhsV400H4ThKXeUcSwYxzjarKX1fehF4fjS6Iola738SSF5mDc9/osbqW0DwioHDOpS+IOyprQRevevwdRGvO21WioHDBj85LdArT0W/XQCQLdsNuj4RsYbTvqe2olMtAROq/QGBXcwgAhnVDMmUoovz5ST4Fzl93ELRZHmdSYjkemBQeNEBHBhseKsImrH7wm218/ghtygdXu' + ], + [ + '3RdFTQjYxJlyk2JyqA+i3EC2BSwbE8TrC0tuQ5PC33Q=', + 'KFZ4EzY7HocVKi8Qpm9XpfrWdUl93Xlf', + 'yrh404/cxPMhc/o64ezPfXcOV5OroqS9VrQDLAUyiPmKDGWNIWnbou3H5s+hS6nA0ybsq2vMsYEXCN0u8YBWu0/ycAlefQkxYeYT7oQF+XRUDb5sDZQhT69TEo4dqMwMaDIHxSl+NvtmcYDOogNLKsBjP74i6TQKW3JDttsWGdCUr7l+ecja6nAmbF9Gozv6A3CfvpzBjoIXm5gUvOaWDXUXWSsMYfPlG8qLJEA/lom3VbRHNM0wWA8NfSfrXa5/qbqCRgnW0VdW3MeGYE/vjlgGM7zylm28SwUh9dc1luvn3GED2pOPZDzQN7j2JfQFExpp0QISAero6RmXBZE0EAN7H5rLlECVujYebhdj2SBEae3BI8HTpZ0oSHDVgR1SAjWAo6F5crQfRms1kn748cKD3G8aJC7xDMVpR1pkTP/27/sT3cUjb0KGymgtAmw0av77LEGyHQsjlxZtOre+7EppK2sRvbkcdzLYaCaP/m8MsjC5mXokMN/KNdVStjxIrsIb5ogTd+QyrFV7pWFNqb6lmc68xsSL8Hbzjxgw+XvJNKW2Hi/SjYUARW2ZSC0l16Q6sfKKAPJRWH4T17Zj1hBKf6JAV/O9Mf9Cotp7Xt6UQhNPRP8H', + 'EN3nLJF19qijwIlaL9ulPn35mX3KANQkCsOtjBRX4Xw6Y07xNpvqlB65aNhx/JDvxoRnfcdjUWd5H0Bfrzwnq2w4sOPi8SouXLedaBPUCgUoT0xOqTnwpISRIpmYU7MJqfjcYG+8/Xzd9ENJlBw/eGFgR3qP71q+MYB0DW+jyxDkfMrEdzl/M2FK8PcMHfbzj4GM99zaFJHRNfAwENv3psEi+a4KisyoSKOiegkEwIfVhlziRknDwEtAslfFGHfnmm8e9oQ7rfmXqGWftKCyI31IGI3NKoEmVWjFak2GrOcbFqqAPOTfE8HkxKJHYV7py6CI2PsA0S3CR7lSi7XBKv/+vy+1BnPknIcQosK+fKBSZ4Cx7RUZv6TAt/zj8j1uBlFAolLJ/OaejSuKnp5zs06K/S0edIourb4UezBa+hCKDAWwFbAtqSnEjVb+pNXeTEAWSkHhKP+oVc/AK0UgOHJLHwGs1mktkysWDsipXto1/DCbvnVhehP/I0rXMuiNyR0tb+nLfILb7/1FHrDdQwMWjPVlyRvL40HD2GKhHy9COR5LSFCJpp18fNgrJ90IRrHzl00gY70T4V/YlxrWy2rukE+u/oTRhss+301XHoxuc/neoRZv9Zlgtzqg7NU/4rd9UfVBUA==' + ], + [ + 'nyd0h8m+t1qKP+3UXESUPqpWKBVSUEeF4Bk51VWABpk=', + 'CPAwMTfcWygvFwdxCnf4m0HkWklLjzUT', + 'B/tfmmQXEPbHXIbtkjb+FH8Z6Lj2Ghb7NOFjtN9a7d5quQTeR1G/rhXQdsOr0zJZhkX5MmNwzJ4diTcaHGxVl1FB3VeJZlK0mVdwt6S54Krs7/6ndyS7+4ppQp6xhL7dMezcKYZmQmPxxsgmw4agVvxmXqjR+dGBymdEe1MigO7hHdH0YBKkHokIYBL9JH8pbXDdnOVZU7tUT9X5j0BzQeXRSxI4y1OmskFqkPbS180Pfc+ELoMx4QnjxOzjisvial5ga268bXinR5SSv72Ln1A/NZNsLRxGkbNWWzbO9cicX6hOnr++Kb/xoP0TqJcSGAEnxe90QTnm4lj3jYkFVkTK8GfQfMvxxOZO8LffRqWdwDoBSMo0AjeuBLPu47x5/ta1in5j1RizGzEdx8iNp3X4ipOwBGJuH4uncyX3n8LSQiMBAjzIXIaJ+ZAVJb7SGWvsWK9fZJaO30kuAgtsHOdslZsxAm/Zprd6naK/LnvZJdBI1hyL6GAurz3ks0gw/GsmjMBelwROuhHVMtDlpLk1+pemsmrhvfvf++ZNVFkqk5zKeuAf/q+n1uMc6czDYgA1aEF9hx5bdq19T5eJkR6W2t09KbseDvewfbdPMpEufZPFimP+vg==', + 'C2LMf/ScouDuBFH/rbx9CzINofWt3ymNN5nPu2zdluBqyPqMo3dn+oj3o9vnvjiqM9P6Nn/CJV9IOdFXlKfwS8YcQhIhw3jSRwsR3+vsyaZhS28nHp0F0eiiSv2NjL0adOt4eK5+SjVbFosKQ3MCTSBqShKPFIED9VgV47qm/3TKlS4quvOyRoqf7L60Zm8dn+i4edLXOt/AgeJj6UCCTKGWIk7X4JG89dbRq3ilvWy840vHgtoXaIZDC3P28QQM2zpqLkPwaZjfIP2kVv9Lc8XohN573DhktJnRGU8UwDihG32ew4OjC3+6ApquQOc7gi73539kzjb4MFI8zoPFW7uDbVdvEKE4docUoQQb+feC8gCCLP0B+4F0HflvKhCLazhMQRzCqLv7rhT6TO5HJU9tOuRmA9Sp29IrQObtiU3ZuIgmN41smUEt8tfHeHmV3TGyAM2OC2DiNKdnq+C3dmcaTcWp1NP9sU5MzrqHES1w0/TwYoQxLj7heriGsK6YL7nWwM3GJ8FY+K830vjp9QbFwChDj7B6jEl8PZkG3sS73LtflxQsEyBkY/n/RMeYUNQpQtQo0Jy3FuQMvPBvap97LxVkxTxLSURlK0sSSqccmZf+YVICDfI3WHcg3gXcLDQVd7hRfDQ=' + ], + [ + '3k0DM/Wjf2fHnWKkTNV7KAf7rgIm3eajyb8idVT7II0=', + '7SYeZShiOSlVjU3o1PGclgx2M82ybgJZ', + '2xQJJ7e/ZiCYmdVfVwhxVm77cCruKI1mhm3B7vyFeMoca9nIL9OQb3qNpg9IkrKgaZPCzw/Q6QTLeTEgOFG0A/XfXFs8Rbquu+moxBvqbZDHOykRySXQABl5pOsQaRtKcuSVGhNRvPn24ScaTGOAK//LNmqHj7+fKofONf8aw+zT/WI3whbDuemVj8DdrSC+UFr/iAAmd1fDYFEiMxmiXIDDlF2F9oBlWvF7cTzsw7nnKfThiGfK5M3ypySwcyaVnX6DXZTqMgCptVjvsb3SJWtfGyJ3w0kDBE5Efin6ce4baFFOTkRZXlWgpEnSnqCkAJdNr74r5RmO9fbQTdem18vzRFfXo7WKtWVYfpNj6ipJWK8ueGzZWJcZqqsaHBG0aA/RZdsT8ErWXKxmVNSMonev78kEUNCGJ7jCCWCkK7RD01jjdXAz0QSKPL1iLnGr89zhjZgSkZfJLJOsJzBmNmy7LY5bNfotfDoy8hLiYlJaTKcZSDmeR/fbQa0oHaPWLV1tlO7nkR92BKnTi+RaJmONHw6Ld/11B7aHvZku0F3pAwxWBGebTqFXkCw22Pbn2mJGfEf9bVHPhZ0zMAYZGwKlK9qWUagI42bO75Q4suJUF+Tx4ctnQ0Q=', + 'p39YVPaLn5BzqPgdCGLyZoyTzybgQZLoEfe2mvgrSYuxsXTEv2IvfEKXbSLId+YQdVla7t/t2iEgnEBTdUWPgyZl9aXhOme/Rf+6/Jid6VBS00x9h7ht+JpecAquFOxmARHOf4duZb5VueXl0kKxy6RhuEgwqWGD7oBc8ALuLf6ImNAZkMzTo7gMJcoXgyoxs63ohHRL0B8w/2RaL1CIjiph1WcmprjwFBU4Bg9PBjv6KJe9/TgnP4YhGDunq940yRXETnJ/rnrH07/gKoBbiVgsq0txA+/vtn18vhgTGYfy2iV6FAecseQuOY/AjiCCTzcuJsgYWLVkrijZfhbTce3q7DUPl9Fz1fe1qLdcRHrQXXJW/qXYyPTy3V+fYHLwQi5Fq03trFtiP7LmSml1a4KnTA8c1wFk/cYeg+66qosa1/xQ1XuUqaixbR4Uh2bHg/qqZpZjb6NgykP3jllkYXqxKquX0H+4oRQ5mCoM38sav6J1uP2EwSH4V7gVMDuaOM6tO6fWqx5E63kptwIrMQomhopursdTwxqycjAfwbZoKU+WbdYkLDhfw7Su3UJNTz4/rG0d8eDBIJ8NgT2Cpcu7mXtudhhPm4Pe9R9TsKAx7M2tElqIXqRznCAS/Hw8ILyHFAvy81fd' + ], + [ + 'v2k7PGopYsvBr7SiLHBZnFHX7FyI5kZXlOK54lYWrRQ=', + 'Sv7aYlFe828nMmDVJtH1sOjqu/MhaFyp', + 'mOO5S4o3KyyyAFmXaSIcFBAjbIUVwqG8tFooSxmGSVOnjOBcjbGyoWSWXmEmz9MNRHMkaFRivi2xqmIxkqR54NxjKQOjlLuwE9ok5oFflkEqO+dXgxvYoLMYJ7hQGTmpZFGrQ9TPPmQ8AkUqNXaczXQ9fFDPnBm/H68NcDWpuoLq9e7caIZkYS4jje1B17uTAFBpEbiMq4toFKiWulivE8dF7PSU1a1WGQ86/2h+fgEm1zMCPxKo4mUi0fqOtnwhoDtJs3xxQeW0Ec2g2klJAePzQ9nQ8XbjJcxITcvqV8NcR9Wn/h2BjPOHSOR7jVkPztgTiLXQNQKaFMiqyeaJC9MIHnCks+4oNdSv4HZvI8rnmgg3xBzBKUquu9iMnla+Bmgoc7Yghfv5NQPEHCZaGHXpDZ7SdIdZ52U94am/3IU3V9t1fpSnfIGGPmymIek84KcoFviIbbwi0ZIGYGY/AYSnkOASjCTn/dQVxG0Xon6JeXTeiPCVFKcSuBwFXObJsRizT0tl0AL6nrOGMmsjxPlQzL/9XWejnPwjrQl3T+qKWg1I6IiYpoyExwrc98iiYkE2IOvPj5I92UINiBGYcmQx9InIcx/+YApStO9WpuonzfGSnRXkF7Ku', + '7qZ4nCfWXJUTCE/6qhCpOWusOCv4E688fETzSVaCXWFWbJNWJt+FMDQL1MKtsogSgVmrHu5PaUIs5BwZUJdDOFSQc5dOHNO+4BOamXPhGNg10ELUKdtlzuZHT68sqiX/TRkRd27sMRM8nOJbcSR3RqE5fLQPjuG2CB/Qxud5IhlOoiQAh0Xenw8xrbkbYqgCPI95ZzXh6L2bFoP01Gbdqq8Y0j/M7S1XK6QQrcp/lcCHoYtrbMdUZkP4EibDgiOMi9aPq1/eN2V6COsAg5vjqvpVgKqhvKSMHLMmcrq5q5owQuz0+yAUux0X4yPuaMaSJhOlNJvAWxO5p4G6iGjAFA5JeukomrlwzDHgRfg1ZfMXdTTldvN4qUWl1gQ5d8QbM+jt+hFke0kX9XCcZ8qroUXLhbZY5Gvx86ecUoo/++LuLJwSYdK3Fhhih8FdT+Rd7iWomZ37G5Gag+SjPaPN3fS2tw//0p389Sdboq5hLbma8PPRJRXDAGRhpL/Fc940ynL0pfpfIrgcNHx47MequUMdn2hUW63KnWwul4/tg9s8ArFO3XjQwGHYtDzRduIVUKNuSifWvW4NysiivD4YqfJbkKI2tTP/wZekM4GbPFE9++eaD7Dk6oZEiLbZM972uiELBf6A+oBBng==' + ], + [ + 'yN6f9E2nogxv5h9H2rz7EAXWJmZ2UTfxEqWNI+FvUhw=', + 'LS1oTAL4pa4Ru8IzJrEx41e94/DNBrSA', + 'uLaugaqkq9gmVYUGKb5ca4gJ8DsR0e/YXEd/8V6nmxuq1lgVVqIZVa0AtteMfHRHfOYoncSzOJDf6jor/1witMPEWQsvgyW08RUwRzE6tvppIaKDcZd1320lVYOFFZOfzubjnTlkhpbF7qpkyciyNCMXz1+L3rqI/lM4bzVnLIxnpbr0oiY3n4gsqpqqrBsu1uKtLYqyIXZ/wLcasPWCzYILo5MztYt+BM3AFmw1bn2r6crQsU+g0fYw52pcdrUXN8KCWcTYZ1yr5ZVdvSkx9kQqXijgYopZ4GZDupI2lCvE0gRmoCznas/mt/Kzh02g8H7FiYCHD27W/mZQrHBcHyXq9V+1/tIaW+2mrqLh8PFPgETiLB71+cDV5BiIaKh3BbaedCVLFtki5attFmAeqmIJQEfcd8TJliLqbyaOEgZrrSN5srudDhczkPq7OqTqL/r1nmbxt0Z9/XhTEQBXRUP1qzO9ThbBITWEMIqsNiaAKfMSTKeyYxS6Sne45LT+PTUJAxwa0KD1S4/o8RpwWohyEWFsc8/hpG1w/vDX8bWiOZRAVi+gmYXD35oPoTB/TBfD8pA2cRTdA61wWzTtKWWiObKqi5vvlgV2qZVxXDx9beeZOKTz+emMOw==', + '0GCbKb3i7/HaZaxg04oMkBZtXijMJR/FxfoPHD+gFJwL9KeuvzWjIxJTjl28FrU7pv1az+as9rPDhUpp0UNuKeChBZfYCtYlzvQD32B6qSrIo48SZ4ULjsngkKTARQ1F5qchBjnk+J18Jpa6F0AlvYhKvTxGtmFCSWc6TSq/0HvfT/BcZWCHARmAti0LsSR+cPPLs8UnG0TIGZDlEPJsqnSEJkVnZ1MWQ+Jv8BzOCjCWNJ4LracfMdUaulSPKVYURdw9wC0FAMrOwlDU5IlpUivmDdr0zn/UwVeUq3tLg/E4FML1g0ErX2XjR1AQ5LpQ7v0ZDI2swXcNrjaPw8Q3AtPVvWj2tjTfaDU7gD/8Mh7XoZ4iH9Y/P7fVDzsM4tQvQUiqvE1MUixOclgBiLZsD8jA/LL0PYkRkD6Vr9znOcX0cLXRNWx/FFVkSKTMBZCZSCdhSJgn/O/WnCJbCwWk91awAe5nFM1Pp1COPuNAwPp51fh+kF9CO5I885fYIYoGzUzhEnMx17siGNgqJSnSddHyq1twUtdyfaNXthM5MtVVwec5j4vnuaOv1IKkEasH1mtx2UgagH+n5Y/0JWRu1MO99UCvxTP9OECv5UHgYnVsePM3LZTbB/IM/yiDOkUTMqFzTiP3KK0j2XY=' + ], + [ + 'swCuvEevBnVRZAH8F9Zlo26xTir6KvFrme72QUj8DjA=', + 'qyZKanBj1JmF1LSeIQ8+H4woqIinGh5i', + '/1XISTmDBRL5QESyea9AButCn0+2M1g2j2xlfZY9mt3Vu82kJS90SrFky3P2u4cqrs5muLTyex8vaC6+cUoqP9iQA+MLwYhL2rES+auWn62bNFEpLb78cVr8ZbfVsMFGiu4cmeK7nkC+WqmG1VKaqdUSkMYuwnF1Fa3WsolG5+D0CMaYo9nx7083Om5c6o42HVQqHVBaxluODiNTnDQtKqBj0kemdvXqDuMKP4HAoV04oCjjbQ5qLk3cXQOG0aEXT2qNvM4ObjNFFpcNi35w6478r3eJCCRPLfBtceKy8tTxEV872lx3+NUSY3xszJM2PxORcG4bAQ29Bn11YgHIpGXFqljdc1pFc1CrYOWGDGepS9GEWYstmS8/rRWRh3G2MAlOwn9/419PQrZid8BmMRzjxgHqDCXrrN1DPoQE46fkBdYdjvxex6+x8UEAo3ZHrZjRL4jwj9pVH4IRHjL8AGaiO3XGTVcQfLgyimDizqstN8aCnKEmyR8I3S33e6w88wekCZwvAyq9oxNmZgx3awPLTmxTLxb4jU0H+AupNriywsdXMrAcJ5hntEK+jHEZhnjD93eB4myTzqbxoLTOXlBRPzEaevZN8GbPfhbFjHRtdmy+4cvYeFXH20o=', + '24BdhZWOgbVTxg6SsmLpOXo9ked0m9xF4Ent0xX224ORIQrxoezBlGevpT4uBaKI22RUIMG66UuFJRtfByNZuGcQwmW8RsJwPPopaBWBeyGzLKQCGC5nri8/KywdZf8BtZgHin75aK5JiMnbwHryBFahGVmD7ppWWGLB58d82xbTDgsSxekONLYPA87bWh44hkdA6xOqLK8/FGebXOsRhfgEC8WLikhFMeynAH0q+EYH7h8V6nWFI3lsjIPwsFFgfE2DZW8XtFwM4nPVuPJP6v2UFYSV23fN4gKCr4TOKfJTMgowaVJrnhSPPu46xWeQIS8J1bo7cGnqstEgkQ74s3qF7Km2yFAp7gwzADTQm2xHTn+MkcCeCohV3jXCZmOcr5oLbjyI1DJamBcd70pEfKL1mh3nZABRdfEiQjmr5c1s0HCFBSuuvL8sOyID4OC+Dj8XzUxQL5Toybuwl/qV3nWO55EJUusq67iSCo/ap56MQdhx1V+tTEtZyiPvIVjnmUdERGZiM53l9MPaf96Ss7VTDqoXk+tq/j3/4MdTobKIZ265lBfoKcKSyY1FFbC3OVCt6ygQr/He3nlAVqe88sW6APyUFkvhj2H/1RFy8mI50gwO/eHut2MeVfV87XES9py6WkTg8gyx1wBD' + ], + [ + 'MBfdz9qOhvqkT15qbZVrgicNh9YLa4MJqrbhAhgUF8Y=', + 'armCwYgsg0DXn+tME+XqKF/ib0Zxj6pG', + 'f9g2PI3vTNbL6c/scoRDGdbMYgJtPHYD+7NHP3Z24197+CQ6RES+l/LnkcizroMYuK2LWVIuNI4/PXWSpCfWjOpq9FKqaQSNoecvvwDoMak9SG86HbbRkVvZzVNaorIINey7ELX8+JNnwAQFg1cqy4yn4+Hpb7A4Cost8CAXAqBU8u3gHl8KmlCQgpNFxxCA02EXgu5/61LVTovxFARIX8uxcp+iKRw51a/PFZFMTGslILQVblxMICWnjYBM7Zo+iazWPIHTuSpwRYY4gpY++7P9ds0R7FdORRUO+aAq1pE0uoCP+nONoDNguCN34u986litHGWwF6AgXGIbAhH8hSzhc9K7uPy9yqX7+oq+1jEnHEO4+yOf7bZXBsVOgMs0MpkVzAG10JzHt13DoBM3sGdPxglcvU0qj5axRMAVU8HeQ82Tc7zfVfPIsq4f6rxD7mPGUwkzmOUY5YggRH5GfLZmQK60QhlN/PDHW2yBjX+EUpLGgiCde+CsrjPkTRIhB/YXu7F5NIXvQIw3+5FUE60Vf6pihm2guVsiOtEpT690V0UVFHguXbImy6SKS4SyIx6RCirl6njAZMN4m7XwMCQPuudO3SR7oXHZPyZpw4DmblUcoxcV/hDW5ObT', + 'ltzfTvwxS3cRFhNtYB7UKAy3WU+vcqfoUD0J52NWJhGozH1QoINMkAFhyE8CGc6wlZjUgfKWjptUH9yyLcdVX7yxMewyIXTO0KO/B3Rqv/FJSdTadUhMQa+J1yXVlbuCOGKv1nScI0nbvBZX+J3hlstIEPn7U//S3zI2f8uXcsmfrShnPuusrOP1SNgBWt13Mkv8myc3o5mS1p+sOxMRP5dUest3R+wLCZkelQk7TSav/Yo/uiiWSOdFTVbR1Yf/VPzcClsbP7atozE3Gy3ra6bb+mEjYo0h559Uzog9ARsemP5d7fzcSxAMXSfOygo2vPWnPIspGPx1tbHgSgOw8xU5XIRjEWAdHIEfUu7KIrv/AIDGM1OoTvexkVXvF93d3EWJBA070NL/Bg7/PK251PcK5WNMqMxacXq6e4kv6ZQhn158su+78aqFXPfYstMZBw4PkfgLgUUIcmqTFuGG729+8GpfGRZtPhXlEkzGs0OgBWgPtIGr9b1GiCes44Lus1tU6FInzSNxbuXsgtuW8KtS11i/OXjmtWSMS4KgnUrTUgEbyKP1j7w1d5/VkxDm5d9b/lfOeKvhlOKCaFc1mnYfvt/7UbHhK+JqGyJ833dRN5NC3M0ypklOIqxT7ntnwfk3g9sqwOmAotja3Q==' + ], + [ + 'LlP9UUhweMNJB7MKZAyA5l42tDPXPP4Q1R/ahtn3ips=', + 'kAZUsyKAf0slHrYjlGEq2E8PXxq94ifB', + 'vMjFk2AanW7Uz+w07Dtq4ZDGHEM0hyWLKYNEPBJz6Lab8JGacphbfAj/fVU4JCUj5B6pvDsUa/7SSdCcoR0Kc+9e/PP8uEaKe9GOI3CAHyTkQvLMJ4WmLYmGAH+oAbMJSY0omYEx1uC7X/gz2VWTR0+2x7bsJqSsEKFp/+Oqs5gepvO6h431d7ThTGERVdLkgjDKPw530m34anxOu1onoe5t73szHAuWsK6aHBy/9ofdwsmZOEB/Elredl21EAsE8BnxZEG0NQBlzN32NlfWfdRBMEqv6KFUjzID2bzohrrIh8hY8YFaowNaiKO9z8nrjQkmnnG3i2fNwuW48nPLXwVZnAI+7WUNaW8/7DR8eUS7X29fHV/MpasZxfxeCFH04AGXoFXZZFJW8LyFAcBEwne17yC653djUaUoxoUA/rJuPcX9rWZXXFvw+YkcGdrqUz4Xr0Wtl1fCpPudgqj6GUmOgYYwkuIE52eWCuuQNYA6gcO50iNrwmsfkXX7WSho8P/M3MZU57hyo4fLrMZ+Y2I8wwG716eMTKIy2ptF+XqlEZy9r8dzbpX6Eiwb6HXMkWX6bcefeJAX+26obn0G3vlVUEMWVykeRiVNOPn9wgoKeuF+bWVHza7tEyBFDw==', + 'ck86FpB/PbFvH2RE+/sdw8itEpkHI9MWcTqbJQQ6rhi1p8GpyHqthe2MFkcEPJ0tA1QSIPPm9+5zxv4v3xBJyXWzFDKhxrihBpCYiyQ3B1BzNuP3Cl3uBzgUvdzatkf9A6buTXtXM1IwOKZDcRGluaoyraiuYX9822Nyb/zPgb6ShdwkJiTww39hJboNDQFQ7OgBttp5E98A/s9mLAqZ53ebNX0xIhFpuJx3DZS6NODR78fawVvj/6GzwHNwMMiaa7FVvD+4GeaA34mpq/nPTw3uzmKX2MGDENWHRwwV2pY6+nkynAhI5oO9AnYVdoa36dq+w3REhI3e0rcYxn579O1+5rd1tpQg7r+VtOtw5KxZoZLg1YQLzpHl6J35uorkwhyBTCmzYSg4B8Lo74h7UODmFTgwX5p16cyPuidI9A0o8/FU/IeGelG/AbPc3mHhLDCaMFMUMAiRJ5Lxis6Ag5jBn8xi/IW9LO82D4N+JRNGQuARXt3cDGNp6J3Fw62c2+j93O5389+Z/gaRhYMjQaR7SgqAGyhUnkN3bCiYdebzPeVVs2L2yIUFnJ+m2AgbveMJYmoN0hH2YYfFWNQRmtvy0TiW2+dojLn/z5s0/TqSK5YNOWrfb2gTmoRqTZuG2VE6PZTMmKim+vFv3wA=' + ], + [ + '4ZM5EnVGSb8BiRd0nwjGcK6HU8kI3AsLgzsi1cysPGg=', + 'IlO1GypNG83VevWoBA4UEl1C02loWbs6', + 'asX2003eyVRFPaeWkxMQrgjxPJCJDBG5XCXb+29DTu7pUMjPBZu7ovOGXZVsFNbqcePhQwQdZQAHjv9f05qM2vigvasZwmbw70gsqkyWisXxAAAk5iCHWLzdFZiEBT93Prsvh5mDeNUVst1Ohpvk/NnEapWsg6G6hp+X285R/eUOa22yFqYQmslbpQSqW7JTz5Af7B5Cix5PN4LJmGYPgC2YErthmfHo5QiG42ruaf1K4UMrCGS7IfpotK+xXPfg0xtlDDDA+xCbmHqt4Mf+8/1T5Rq3K+sh5uQkQJBgGe1c8L3zZgleuq5kGFlrGJ3nUPNGcErFzxt4DzDKYseTNxfA83g1h8QS003YKnvDNFWOCenQqz4mrxvf1nYEb3Wfzcm2ZDlhxxvTfwmkmocqEfV0s73LLyGCt2pyfUA+UOGnB5WRKty1thEYgH1lmnp9xbW/go3SK9C0kHn0Q/SWpwPIxy06vQlL1/Fdsqf0QUqmbjTN159tt4Nv1ORWxgcFCrLCU9nXyNzmx4CXiz1frKApiKZX5+KHVivoR1Y0aRkAc466B4peZ8WwTkrYOL610R+PGDne159RyhpEJjGVw2J7L8ydzFZ8q0C1Sm0XUXbXfc1ze3raEhRctDSnC30=', + 'P+Sf3OPfBBDHKnPCsUPsTcJa4lxYfy1RJxIVYw5ssI7/h9vTblfMh67seIpIw0LdWcIiflxcvJ6jEkFDzmy+Vc/K1uJLGKpJbps3XwoXHrpmGgch8QK0HBwL24/rG+a//v+smixqOHsXfXKyJdkRvxoecZqqEL4/6zJ/gjLjyaTJbSvkesNqLL9kYHTw6HU2uyYuPukjpgXOULpdPQYIB5ZAkph2cTIhQFZ5gYTWGZDMx8l6g5HaJHgRKJJhzTZpGm3hrCwffFPJZORMuHGV6TOyo0pAYavUUFe7QkX4cqLzb86nzAOwCIXyaWsi+dZ4jJNVq+XjQT3EkUxhLBx0Q09kSaiVevHNYmgEaviwrCtmfLZlS9MDTrk1ZEGktmfAX1RD1vAPuOqNXHmS/vk9mzDv6SNYTurVaDrCWS4MlKBfF3JgUoYUAstO0ZzmVl5TfW63bC94U07yxPRsoyjZA87kCqWSdOkGV/hyFPwWoSP2aePGLNQtis39ERjPiDtNMuMUHFW1F7TH7RHkh0uB3CM1xCVy4BKsrCDm3taaMLm8MYoJ+ruKENqGkTgtKKW9BVa6wPcmK6+SDkw4IYdgpuxfbnlpvmZncFEEQAP/1uVcbsn7grA1VnicnvCN8L5yNEdTfLf3xeNOJqevNK7C' + ], + [ + 'GHQIUNm1ZEfke26ii+d3SS5uz/T8TK9sw6MF1YUQpAM=', + 'nC3GoC+i7uUspb4/EK1yyOgAkMV1GScS', + '5KVeoyLnWBNUWox4o6wlXeQZvLR6IfRcVKXZxANG3/0wHNzEeYVhfxVLxsloZa9H5O461T54L4dRmxramC0w+Y51fCV2EgvPJvK/grKGxBUIjXfEQ/EaXDcSrqLI1LOBx9N9Yc2CZ30ra416MHw7igvkG2Xr433uybYwDyM2MBkUoyyOtk8/daE+1jn0xj2iWQli1mQEqh3gWUYmGvQHX7S/orXhTf/T/MFv1oTcd/YZGU/hC87y8iA8kA3m5tpy5xnskupRA1QLpmzWv0uw3TWT+gJrSvcxG5o3/jSel+eQ8h4hwyuCaQJ7IOYyU508zOv+VXy9738b1goJ71E8piTZJz1a2Z8dxwBb4lPvfuSEAZwfcvdtWtDDtdfb4xVpHQjV3oVH5XI24QekFgbHG5BhqxxsdeeZMUYMSVm93PLnWdh3diSZvYCMkhIZnfclbaldAggnpb7Yh6/4aF/+dlYBGvRXl+orEwWQDNZqYqlexhGnIxBOSQnWosUq3hgXSdvvQYvNPclfCdhUocjG5ZEbDdl8Oo2RyFM2cXUdLL5rO92vG+C/A2t/CGTBwWBBC8n9PgxpbctDt8PJsiY2e2XH5NsNC30WY8pbahlnvGdIBYOzJsd+B2TGy2UORJkw', + '4MwnqGbz0Gy1sBzsHoE/4BaE+XOGy6bvZ6cFibRsh5KKtb4NigEzNRf+Ju9CPdAZQmBjgbc9zSL81B5XM7G20VKMkh2b04YzK3hqc6TCoB4RX1HGJgUo7pO+Axn9PRf9fL4ImSem6oqCNuLhl2nJgUoGueA3r9ROxBSWcZ4b/sRZLOdHiwsg4oUw8Siw5okqleYVBuy3K2BjTIoUOZk7TtNcIQErU4GC70xraEUNik8rebgiYVZBRRCJsacT+E6qNJDfnIE6XbYWHkJRwb2YS4Una0tRDNMYBjXcPiWIwCcL3mS+UWOO9x13SERiJ5hu7DpxUuLZ9gPhVAUBtLvoF1N21PmjWpKO0Vs0HsFdzF/1uK8FBVueoUyWQ+gyYZlmUobWVE8b6YESsxS2H+ZBIfIyyXtxf98ATM9JLNWNqPvakRSX2yMwCgqbBSK9n/Y3/JUBsiOm+TUhSYbSr4ev7i4gYjXjIYr2ne8+HJVHaPDdpUdyAWegt/WuzFpjQkymwousg2coNSrIN/E+R2vifxaNWePOWfdtzs/cks8Ml3Dt2mc001/CGQ9/ZZY2+Z8wQ87SadgjdxUzIp5vMVhagdKgfFE0FBjh/wSMtlRBLns4HTWSQepfcFZB0WFd1dM/AqPBHmiisYNI8Ue8gZsx+w==' + ], + [ + 'rF+xMRPE2b02b/oP6GScP5mrNGi7KbYCwactn5RT4nI=', + 'mM25PAbdqtbmpeDompjpXhVEoCuT4X5K', + 'trDB8ASdkdqUcK/5Fn6ZGuAWy5UUoMC9fDqLoDDiaZEF7kwo7tuo0wIoQV/8cmFYMHsjVPi6C+HMCpYOCJDl7Gp3E6IkyeByI7h8mFz24GCquWOnCbrt1lZtDrrikcVHTdkoa8RrxjYFcKn4/UhJRzZDbfrm9eZA1ZmxgqRG8r3AzRPKn0eat66kSfp/AFeI85/bSRAnbWGDgygAUhU6HVqBohXelzqRlTDcSwLsUREtaQekkPqQhYKedPyS994QUkPCn3i80otSze8KfuHaU1X3WJCLFgHfVGTYWtO0q/q4E3BuoGF6DxhTm5mm2YyDRKy4zWJYv6O5fJoDgo1mrsrsp4abakGD+g70j2NGe1oBrUAR028Io3HBR4gcebb6J8XOEWCm3cgggg1+KoEiQ0DaNjRtTs3BoFvzdT6iUbkUQ0R6j+TU2WwBFnoeeteUqaNmD47lRuMiL9JN8hxuW1LFbn33OGGuTxxVfGA06gjT2UL6rPfJz1+2in3f8dLRE4jywAsjeXrbsHFssvS+wr2s9g9CbhOSdDLMO0RO4iOvbeSh3tctUw/jBq8wvsui9o0jFaCe0I3FAgTp9PjNyW+45HfyaEAD/seLMHn/OYvpJIqvD2RofQCLigB9aOKGoA==', + 'OoBDhGoG3N8JQDEE8JTKMyaZ2nniP7ZCRWrLtDnWMO6DQ6+nqGtxxeMW3JAFLqwGt6rqqbLD5LimMN8ZfoP5GtyLO0P0E5yix8ZxFphEDLupAcWE8D3KsOPE8qy6cJ2RBd6hL4PdcmEN/7OgfDQGUYBtRE2d2YM4ilMBB8t89zDioiVAf15625sn5Br56BFYtLvy2uEsjp1tnIawQTIxTa8kCQMIhphGdRL+PvMvEP+3998KJZLdRl8IlkU9SM8qbMmFEufZFbUOU8+qI1lkwLIvtW4oLU6+qVCE+vG+i9hbdOsBI754LlwtEjLO36WFApJfeg2Wzpu65B09yfBQj6EjE+YjBWNWgrsd8yUYYy1vhDy2fgPNHb0UTLN3el6yk0/PVlkd8e9ucnVvB8YtXBLMgbqUroe7RVzvBCuU4J9Zb8+XxbCGAniFhq3J4RDSz9gvYH2Gz9cPE30Gl3+qh9rc8WBzRBanfmSrxMMyyi6pCdwf+4HnIcWFyyuzPnwBEqX9etwIcKXmBkAnfrD8TkFtBoDiAroKzPzZwNAlw+yrr8lEZdV0z62l3sj8miGME6xGKUP204CK0v4EoY1+m4yjWUm+A9oG1PacNcBujGSRSVP3B9batP+J5qylrupNKvwyVjG6gTIpY7ML/SBfRYs=' + ], + [ + 'q6YIT8vTwwKCxcHMY4WD/zaei5BoHYlLEGM300pc+KA=', + 'rj/c6xImlzc86SS7Wq2lc+fI/8PdUEJ7', + 'gGKVmGlqo4YnuLbuIKMFHbK9IT/IF8iBov+l3gO1abOQPjw50Iiitk/p6vxyOT/2y0tnFwbdPCsC1Eftm+WKcNBdZZkSOBv3zahwL9Gxv44CgeBfJ1dgGAJXWq4zlq/1G7qbnH58WoUupv+1sj/4v1dh7EWSzFy8kHHJUpVk5rtmUjr57YJ5DQkeLq2J+uVfzkb04nrZ245/z6e5LAm66mE2AV+eGuYJv5LPyZviH6ATTnmBWp5NyjBLD3kyv4Vmmg41cCDb6/BTe/F+6fWLXIa4Zxf4x1phogQipdzrzRVU0PEjvNb6FrZuUxzWE0S4a2pbOjwxsv9wbUIDpVRG+0ElM0Nic/p/6Rj8t+vYvX9267LrizKt6XHxY1Pg4ocn2FOmG0nvn3TkZNTBkxDyiH1C3vqTvQGSUGRefOdJd//mMNrGRiG4ZCztXVKrbvyRAmch4fDXGoRFTNZsJCeH1VMd+R6Znsc/EgTJ3OrMaLJYwXCBZAFVz0mU1xnGA2GUJfFxM3a80SRpIsSa6SbdrDx6BgfxtpGbBv9kLq+0Ke5Yo4h1LX96poS6z+syBOGyia2fZgXgwmTzint3mHRYfbziNwBklL694VoyjJcL4yfbOh64/nMQcQXSi9rdD26ueI8=', + 'KYlgLGlm/q08/CDHgKcOZcOHE230eiYxO+i6nusuqVcnmnAhQWqk2Oio1sD//tmmgDG9QuX1TFWy7cuyI7kApFv/v2IIbM5D7YQ1ZbMUFR0s9A/UPOhtOx/BPY48/YkoZD13m6S6Mzab1SMhNw4Nh/ujNqoXvORZ0Wn20jXIsfD7CSKzkBSZQOXZchunY0gOKZS87jfWzYfJli0xksO2saiimJ1PMDUil6lTf5/I3bq5H192lggDmKbW2n+hJJAPY+mdnW/LFIsUXNEmFM8hlM9wTF0t/f/nCbilV0rpQixY7ScV7Pfxy9ofbECqMaZLij1KqLGv4arIl4npUYM9nOdnUXfH4XS8EMD91rfeAV9InCbBo9jQRWBT2hJwLmsU0UQq43UCMHOjVZMaoJhJe8HbwP3N2Qk0Y/MXogB7ZYL9Ny4XfVNdnscCs1yTFyuoZk/ms0KANTWxIiL1EWXt+xtmEYQ7WI5ZGUKPCdJVCxaeK/FKcJ9mUqtSsaMidSr32PE6H8ZGheP0tBsU8Hr5RCqG+7cGJ8aFWLE10hyCCCqFBG7HNB7gPlEoUsYE19xYbpI6teHCb3AVIYJd+1M/QrWJnyi1xpEZMzo0tVxRSUpkvJI3wlSKnoLXwtexAlAEXOaiZ0pi0ML1eYljmNvttnI7' + ], + [ + 'l/93fcdyQ9Ydn7PvDVdjBE4p5/MV3GPDuTfFxcTk7SM=', + 'CbifI1jo1BdG4Uvo3/SBarJmQ9m8LkEt', + 'd8ZpLUT/kC9qWrfY/LaRSFEX6sQ0A5LQwURXTJSi5yvPrHubUQf6tq0kkbe5h/kZ7MrE8jcLmVqciFruMK4bhiKXDRFKRnzhJPMLZsJtCTKdcZn12YFC6zQDi/wqcEzBfpPKxodUp2Hmaaeas6W17dRbz/uF5cFQrFjaOHIcYwh2SdlFiXPUYAvYi4o22YoScCPLq4P6T/OI273aJrzRbnBghUKF4lf9eqwkDELXnrXcY49Wh47Xu751KAmx1B0GDBwOGUfroWh/LoWXSae/CcPdDBpWQVAtHIDvSS3/Q8vUHBqr7Dhl4h59YYS3tZkYSyTVBdtrUIMKJJQrJfXRV1xFpPfBLJCJVPf1IRdcqZpDMutxn//02LxsRH/aPJ6bxgrj4KLsx+3jQDlVcrhnCw3KcPDl4PH4y5ZmS+djc9UNUP34/T3oybg15Vfcic6jMNFGD7YimhDVe7nvgrSnX2H1FJVmD/f9OM9Zow33UCHeAuz2cjqC1RyFFGIGobrxiPp+vFW2f+D7fBx0KzW63dGDnccJ5SuLbYPDOyhjJ9tR2Sez+AeNM9XO4SECNvp/VxyPXQQSWkqU543diKnqoazA0hOWlCP59RejANbh2f0av6FQ6ot89Z4W1c8i6f3jY8oz', + 'inIZju0Qo6/CtZ3SRqGpb5SBsS0QkSyl+sXQAZ5TflAtSLorV0FghXJwk2q9a9B8X/xwnM3wUXZTwss0p2li7EiMf4QQgfEO3Ww0S6/v0jH8Vt2Rv45CnyD7iLUsDFJjPeVHFj2RmucRuz7GBRp1W1SqQbC7k+bPf8uZpLAKYIMGBvOG4usaExxDIJ1EiqOG7iw/ykg88gYcSX4NKUxOOCtg+Tube10rqI9k99/LRmtJTJQuuMhDj6XRZfvaLkoDqdukGcuxGY6cfE0lR5+0zH9w6lSWAFI0x0Aq7HNhgAIgzErgwM7QfkrUnAvoeFLSy7yqLfpyBkPNlFS/H6amZ8wxlW0/SQDvFMc+BiRqUpdbgU21Cov5XRC43/S1E3qWadVGWTkAGot0VJHIg5PgL8zvwn1oXjNaTNMy60KxOPgwOWdwXANdwlNYvtOhQq/9WZFrjTEVOdVKHcdz2hZZVLlrfeicm6+z46xnblxHK0rd6ZMx/yGYVmX5FFsAlUXoOQULOmUHzJXvNro2iTIAi4rELO14ktuIL9A9doTcb3YTsBqhT8otdDiHtKe2Un1jojyfkA65KM1NId93ytW3KEqV+ag48OW8vyIUf3a2Z3CAyRZbgyVUeEujCtHxmWfVDOPOwbgO5SKYMz7NWCrwC7ppTQ==' + ], + [ + 'aYISkA6Phl9r0+rfKyj56sbsjQAdriI6astLex+4KOU=', + 'xNnOEDXnNvbGjgAOEC4L/losOTK/JJ/D', + 'nMwAlDpaZAxiQhGnbPnZjE33KkxgOW7BnKNjGdRkI/NJ+v3NYw0IfNNh1Jg4+cdlgTr2sWM1ttYkDNe+nOXu3NG7/mXxUPrvBXyNJEUgG/cJbSY5CM0I2YZNjz0z8H66EG747Yxg3TNrOwJC8o3VS2QAkRIbkJSICLVP99r7dY568p1/8mAAr+Y6kf0ZHv5tmV7zTp5/l6EJYr2k268/UdYLMSx/Mzze+NEgXwL7kJI3XsUJvwZ3ZX5PIUL2yI7R5H3Lqe5IffL+OO67mvCuUlkQi6wqkl6YN+SjR5yTF++ftz9x82OX5hPzdOVtQdlk25E5GBbndzsgR2QUVVCJ3+Ty2dVh5xVVnEjRJb7ofq1H/ucPhsr99xr0yCW86npTMsS8k1TZq0B6QfbsABcL91Zlxm4jy8a7rIZVCnd5IzbFsnJiYnsSVsBrxOJJQK7lIKmu2zsvwGiainAJ0UpUstaKIUYcTTIDAGAkROBsWB9w+DWLvSpa5ZrH10bT0+1vGZi4jwXjrPUxLZXKa6PQnX1uE4D+MyT0LNLKDzCCXLg3XN+N4kXzoqEGNAxxdZO4LDntNI3FKErksl+j6FBNeCUqU1401zal++lcUvZEgfVMxavv8AowgrQ5yTsR0TFo6qxlng==', + '4kgkB2CWxngTZmMS8O6+UUY24P1L0R4nrHIoVO3MayAI1WtUWO8cUnfMRXsEJ4wt3VXjeE/Ti4dvX8RrQdopjaVszWXzE59inIy/BVp9AbaottRzKHxfPUCzoXMCepWcLD6Qv1oIG0TIP7Crk6dHdVMEpu6WkwsPntA/pg9FWWP/yNnSurBPAZK593QqpM7YWrSsLsRtu59Ja0N5TSjxeViDVOUjATPvvoRhOXymgD4umNemlxFwCRrgGKdg9ssx0xK5N/4MwLA5iU7SpuIIQRamDQiQkOOlVS46N8LsdCsGy/bTIu1hmunfr3BVYtbxk4T6xb6MoqAZxKCkd2pNzR/c+QZVFIwqEVWJa8zDjDrd7S14WTZi05KEE8ILhyvERQ0XUZnWCsNolBz8wTNSPbemBfgoZAh+MeU7HcQTZetCBUISoNLZaQgsybqxy+JMBTQoyS/fRpYWq31gQzhhyLGnDg+YiJJqtjOKO3lGQktEhptTomNTCr3h2A+rp7NxSKBQkg9+yzsUa0ccNqYMGU89hkEDNvyB0+PlI0tYVckeb9ATGCK6w5ZM5oUGLd2m1mvIBbynkgtWx/1CPS3K5yUYtpfNX8bOHvkyGH6gWafOj942o214/q8MUz+mp4kK7Q6/DJY59P9PxPPwlsTlUMWUH/A=' + ], + [ + 'PxcNxxNGZB4ZZbR7VQX7k9+Lpvr63gW76OUO2IQrJ7w=', + '+AIO4ty01DSSA+E/CLGct0mzmZKZr0OL', + '6JJeEE/oRWf0W+ch0X+mSFkhHJi751ZA38f2feEvpdtCQRFNoGoHd4ur/QhrMh8CgbQQeV4H+p0s2JIybHfLZTEV16VvgQqPDf6w4zw+KODU7nEADzY1+YbnKyKtLda3Z/2cqXr6g9TTA/7tOuaWaWQhosHNbB9ePjNUz+WTQMxYXH2wpXxA3EGWvpNtaGrHXUJcTQjD6XUe4VtofYJAfeUjqQhpft1rN1ezffplnc6P5IJU8vtJbiiPEMCpq5AW/M2jOgrutwnZtr1CCxqmDPbm4qZUDDxNLKUgZziuBmRKuOGWEgfG4oBF/S8AwuCvGTSEdd8iPrKAnIppTLSwGwLKahHB+t6/xfvDoDZxgt6riZIiRzHy62Cg/om/96+K4iVxHfbzwq7iVvJ7Lh+TD/LVrdX8EdbEs27+gI2Gf8vR8v6IRcjS8aj7Plen6dU9xyJwY8lXfy/LcfaQ1EGL/F/wEqLfOyN0Mf0W+GGuZZCCNu6Uuvmgh8f5JvDq8X1+rflWnu/Do/QbjaJlQL3nIKq36XNJi5BKeC0WPGNDre0yiRIVbcWBbZFEjie5aKvwKP/OEz7op+UMGGD1i+MP5C1AiPzMekI3n7+qdYYFlxT7KfTete6ULkCSsuC3KO9vmt6w6oA=', + 'eaFrYEQywiB8nPay0Ip2kvUuTe9xN4uT9rT7tZYdLFOIcn+qzyEtCz9PrWO5rB5YPAvMoossHewSEX89ih6ydpZgSv2v0qXmsq8Z8/jhzPmOP12h4+1VAl9MgV0fV7r6D7RmPjNFmAqZCPjyDkaSUgQmBNo7zdWNLP9WCRGAj8XXzz15e+G1FbdmPGC86Vg3uxJBxkL/WHwC/WLY/6IaDd0wK9t+YYnkdHFIeJuIRhnely7LXdaOpwjpo4QbvIdMBaJoJPUlrpia4La0Ul6+j7Aj5MSxdvVbwBBSWOPv5nnBYTyY8rztHpnVgf7Lm8gOuztw1s4aStQW6KPvaXKYRo9XiGw11MlVYqi8oey2TOi6xK0sIVqiqcajkr8Zozy13v2Zr6LPrlI5PlfnvUgbEme55uqL4T96WVs1Crxxt5ZWllqSrKtuMDt7Y6kAjOKwQyJ9uPTI6stUgFHMvAW9k9bw5ZLQwvx5gc4sVYf6aJlud+8TxbQobZCh/qpHesxpUjtoqubods8T30XrPcSzOINtvBnxXTwygeStnqwXhlG6ngUWN4DXzT+DQ6kgblsEG1VMcrdmAAgMbzJ+RKkntTT4sK8PA3PtHcUxJt7/qpkZwSfpFWC5DS6VbdQl0Wq25OLE/1TZDNE5TAIVRIasxpoB63AK' + ], + [ + '3p3/gTIBktercR0X6F36eBxZqGZwdDAVdG4Q6kI+IR0=', + '31aOLr0njUUKqi7MmVXBUJ6NgJv12X3p', + '/D+2qwS62itT36u66Sd/bt/TDhHNCXjIJlHM8aMvE4Xz9nXOi+epJg5414mBeKhUiN0CBHP3Vm4kaMlK6gP/OjAWAkQqBmPL75fI5LBIxrMtNiNwkK43VDbJQWfDa8WHZL9n/mJ7HcujCKwh84vvA/pk+P/oYJzDGjbyGmUzz8BLNtNZd75Hl2by8y0OnUN5T1/0286SlVl7tVUpD5ez1hhQsf24AM7FjG57LTeF0a0ig5amWa6iO7B0+fbGTkldKmHcZeAVhtMOuGLV2mKxoi+nxRAxUsAw0ZEb1feZXjGubnOUfayGw+gTjhCU63/q7iynV6X7vsQTntj6sJhdyB31J9pBIEhhiQBj4ZUHWnhyNpG6awO0rCpEFAcWhf4suOh+LYLJk2u3fU5d6F2epTK9PS2kJUkbgJowatksVAeU+vF3Mv1973p4W5EG+vpmhVLIHqw4tNBTWrsP2vODBVNN3uAfKsrtRARZedr6dclETi2+RmQFypMnfQQ40qPukylbMPLI96lJlywyLsaIaC1FhVAjBlLCMBSgqhjIN8ptBxBPGq0ijcLOnfYvzl03DuWid+pQ2UV/xLpliXeGPHSkaZXtvW8Zthsj545phHajt0zCMr2FtVIFnFnRylFboA0WN4qF', + 'UYq4uOqet1qJjF3bMPWdEJQZ+fw9GGVMPRa5XXC2/ZzeFK5oaz/e4NyD78FOFnovqKcgEPtnUDh3pVXJQKnMTXgV6zevclFMxzpkO/j4Fu3sKFFEo38TKYBZAvZ0tdSh+wTjOzExJ4HZH57j22XOJuT6xgelvdvcR3yF136Ud1jkc0yBcBr2ziUNwABjCLIKEl2+KUP1CQjJPkWbdYhcunhj7nl0WtjnzPXQ1O7FQfumZhD8wk6PjxGYMniz6hm70mCb/9xoi6xoZEat+rtVhjJAAMM/CqKo+Ub0/1a2jHgOvaJC+7ZKga6P7g4l5f9JG32tAmYkj6AS9elgrlQlwIU5aKgdEGHx0Kiw1JHvrPeUMTPdK05HnztSneNIXpkLKiShM5mLyPfp/snWb0jg9xKyNAOAbDsav3A7tUDAYCIbXk6XwfWIaX9hiMiJhU4dh0oReS82TABCxVgyFNi9srvvs5wijrnKut3Ur528CV8sHUPFmMC8CBGuPfu+6TqKhCOpVbpUqQUJWyxitTyr6AOgwIlPSzKnbAURzrWg6GwneIakD0aPLhCaaN7AScsGX0cnUH0HLDBFAJCzyoWkiDf9WAuFApW3lxpl3aBwOqRu7TXlb3JDsYVazjb2gPmW9qZFTjnvh48MV8HMgb/WwqSh96yeFQ==' + ], + [ + '7D3E0rBeHJHwuwRIrZ+RD/wZqlLONorOzrFm9RK+R10=', + 'ukFcGz3nnT8QC+SxZNNT2QGTvf00CQ41', + 'nW3WS6AAe192hOMz+IDnkefSgnm+eC7sI4MhSA4luGC5nGI/xjVH8SCL5gx4+38/pzqdZLr4/oREyu8sIJnLYkU2EQzwcgcFqZ59AmawtloTA/HZYq4uRpy+1rx1vSiq19Vp8kjNF7W6Jvv385yObm5vvZGA+lUMsFD1hCtvcfFB4bz8LRZxY6tD9cGn5VmI39YU0eU3Fm2QQA98qtzl7eeorN391pROjrQCIbdlAY+G1iENUNvB+FiTNUJvupHFlZ76HX6NYUunTa+fYP2dd17GXb+kSq48TmB329wiNiEPc1eMnm+ZsStyi/q17fK6aw7pNTtyh+05eYkIH0zCetzEZWsi2FCGiOSxjp6lh4jFllJfRpSmLzc8uAndLo5PckOLq3bQouOMnfjvbOy+JHNzrosR3FBF/Tnn2uvwfeU8mifqzdMEJZxM4Cr+40FDW3ifL7aoOuZcdoHx7aTSayJW4I4LAl6OA5XKVIdS95M5mQJBUByi1o3lBK9SnmGrApcZSV+p/EyrwsHsUsuP6W/eqC5ROWTFcM0H8FAxdqEFFTBIu+zoIgrNLiHkkMxozkzoW1R8+44CIlPRlL29qTlPn1umWhMKRN0Xc3zoJ+yhjmEW30vy4QDtBkAfRBOZ65G5URoDBw==', + 'OAGfkwkmxEYzGOlpjL5NAS4Cs9OU3J0pJXdg2f7rZglwFm7jpzCcs4zOv74Kcznf6PL3UMn4Tx/YevXr7PCpfgmFEAa4fJw9swnwBcM8xOe1S7uGIVvmRbkVrsOV1a1A0b+gaK+UL9NiS8VQqImjoh0836uGoxjos3DR147gMMmbTTr8b8YtMdhRFP/d5k4BdxGWYKHzV5MD7FyDbsANgP5IuFNnojGDsmzB698nyaGmPVQacVevRoVEOIH4YNl1+baqfVdzofLmMK+a09u2XJNlZMGkTGeSLKpHK3V/tE4LWRCTpTy5RxxtvYW65yxWgOc0IPJ8wdLC3awXI61PnYRJhir3K8EMb+yvs1WtHGT2oSl2EcrZCfLfv2PmVfGfu5fnL0tq9XHJvUmHis7UBM0wseOdDrjsjWbpBuxNO2SI8BTtjThx6gpAVNS02x6ELRSrcV0T/geZNWB5f5t9eN+kopFqN3cAER6JYy2pJe0q0lA5ybAzpaXApelrj0Zx+AeBR2lh2DIy68Dey/f7+kP1vzbiA+BqlbKLw6V9/yAw4KVX5qg1902gI32GjQGbACdnjyzyDPeau6dvGnMA7tgXWaCjSxdP/G5PjRN1cEP+MvSgeWrgD1sV7o3Tt0AAkSXhZnRgVFmJhcG4pnpnrZ1UaIiN/lc=' + ], + [ + 'aPfTEolNFMmY8j+L17ZGvgmGcT9a2+C4PyioxAZoEks=', + 'FzHb7+VaGPh4fIELctEGQuC6QZraxvvP', + 'i5q66qsC6Anj44KuU6U/fjEFFunEi4nSSsodjWDNfDgHrHS7mFj/0//vkbZK9MxHa2zmNgk2bZUPL961YMonM8j9wVq04yOSttIpGBn+5peKaAYBuhfZU5D3wlzXMGu3oXgu34rzPVp7yN/7bS3DXaBs4KcVjKyxMUKDcgVCcel9PdUk+enW1hGNswY2ImbEtX9N+OKtcHFoi6/Hct2koD8AOnXNO8s1fAcFwHTbvyDTN/PqawE3Z9gypugLjA9FxL/DoyDch8dZ0HweXgoDIfPrwS61zbn6no1U47d7pPBYFniJSrsD6DAQFLjItYMA2dVEhtnnVxx4Ibqr9l+KfMr/DyQ7/blNPnGRzMFUBaM7x8qSs+Nv2hc5cwRI/i4qtAnBuTOFpwv/cEvD2YnMSHRqJLH5uIbaBC2tGf4h52cpW19qscuYAE3SXud2+sm8BaSIQNnY3luax3sq5m+tmX1tMyh2hN2WCP17ZYL3NWzYWTfndjU91kDLXSb+yLGnhtCj0CtAREnYvRrvbcDD+nW+zKFix0Of+UOl6IW8ScREpVd7ObgeKImYnqrBlxC2bsFN4p3K41ls3sMZQAlBVYPkV8oazW1re5jaA+5m92/Ip6g8OLL9Gc9onK+YtLYr5UAS3P0W+Pg=', + 'BVlxrLEnPWSKWMpmfwXTiWN2Sz8u97VsToFn3X8wMgEKkg3jvQOTF0tOiMyYfSdaYRq9H02RRTHJocp4mqJWDApVWkdafDpMKbDoVXHJGFtsafg+Fiqy8Erfd3lSEzb8gZZf0CQ0nGgAOnC1e7pnDL2pV7bi2IuZo5VOF0oW0mJ4tR3PIPPmckzQqVGI60q5VAFP8cugMj6PKumJSCOlO/W+jRlaT/4xVRS8v6enN/zj3npVijW/j4RtURyMoilDwcCYRY/Y0aTWbH9+rSYScEpYtoO2ORIY/zbdZJleEtteVUyxL5EVtu3saysGPckOcTOuzhNZz9KD9P2ZXo+999Ox8styw6VztXhyZrnd3G/peGfqGHA5y+mQOU8362Af270zZ/h5XKSO5rbW8sXvhl195c7C7wqjf3ay3dZETkHid808x/h/Ebf/a25ILjMQsu/BimNpjLf2PuuZJpA9DsP4Vl1VJSwJl2rPOd9GZqB9KKwB0nn6uchZIEzhrEK/zMf0cgdgmVP+2kH972gJ86V9K4nkyX6g6mrj0lhmtueWH2HhPqGgOTtFMM4Z4JgWD/G+FPtGJpIygeq9Y10NqPntq3WkOj+Ip8jqoJZINarjcTtsIOl5phDQPd5EITI7qjH2LzA7sOGXq2bytbT0sf2zeYasVmFa' + ], + [ + 'yFqd/mV0srjlGkfxq42qIfeio4nz50BZUH6Y2j62GUQ=', + '4JUPo3fdALmmLt97qbk9RsUOxRaF81Yh', + '5WcvzWFFjsOiumG9WhDd2voNBpwewqAGv8m1UMMroA8mjHQCF0DzF0BRpkn1YYJGIVx5Dt0oxwnrWBKRm8sZENZOl7rVaq2goZRN5fO381hLMgYXXlLDYKQh8S73FbzFyh+5z4cPbWRuEQPAJQMzzx8sVPCu5E/A25dcumt9Fk3W5ymDhDfnsQyTVm+/KBtRBEHaoztaUY0UujAzMHPVChBNuS+b+/Vhb9LTT5mHhprR3pMPLIr6ob+y5X0/GvLaXjwK/Ub6P9LYLPMzF5CdsBYcUGtd5N+rmDnA6cEja8Nzs4Qq4Qh4i7E115aT53faeH0oMkW4wFDvI0yV5804yOPRzNL9+qVi3u5Swda8Q7hBe2yv78DJpoFoSBPJqPupKYBGEByOZh9UvgJcj2M/qgdiILSk1r6vRgLl60Vrb4n+UbAQwlUnI0+3NTSa4Mg1CLM7UTdr1KL0M1e5RvCmxAUwhlBMXUqDW6GpxKq/9pyIel/QTSr6NhGEPvUIFxqqPNt0CeZoI7OwZQ0jqUWnxDH2HsNwXWHgwZCEMz2yXi4kN4xfcjMbTZ/FfvD6Dv/UlqlIo16obZMXsoZz4ER99MJYBx26JYfma4Wr+hKWoGor9EG4EanEgogybEJIIyhFHqrG8XWmK+p4', + 'YNdFybTO8Mtf72x+uN5xiiIw/lAfVq67HSKP916YUI4y0fdMvWqOrPMSSLVVnr6XxWYjJNcvcJJ9h2+ygnBOBi56zvExyLDkWwnYXGuXlDEG645nucU/NJ0mpOEg65W3fx9YmhXcT2lDuWXqWSDSDf0f5qrOMPGnQrbG2lKjYWY70TvAkQSTYDpZomdWiHmZupG0CAIKQLPJ7o6evGboQhloo8oT70FILVS/5pAfFrGTfIE0oKjNvLbGVcTvCAk2O06HEKx+LLZ8YqpqZEt9/Yw0aoDdRVl/a9QcBfVnRRuxwYdewH6svguUFXikKvstuc5sFHK/7pALPraXB7wdu/zcymuEuXFtLCQZOsnLUBoicBajFMgt1qu668sdOUrwHG1rNu9aarpVOSlrWIZjoQdQ0wsbu9rdyFtJYlrb9Mrg5B0AHGvgZskSe6cRIhe2MGfr/jNZLu2xekx9WmTzwUZ/VLP8vILfSFA13UZPTDmMcPkzmb5RiMo+ML4qlcSsQHYsNssmqKp1GEVenqmJvevYDT/WoXeEHovzDK7P4trWRonMVYjEQsfFvnCeVdt/JfL8z3PTZBqE3TE2LBBRWFgd2oY2z09kTOjf6dpDhZqTJo5MyJWbp0qg/gVLPdU5pUdZqwBy9L1PzHypXT+BZzvAV23f5kLoYQ==' + ], + [ + 'phMldlAB/HGwlge0Wekt9SZt3xlZIh4dgGPA2f7NPRI=', + 'y4Lf7E5FG0RnWBua0SrK7c1Js4pxdM8q', + '45oOqsB26XFBnWT0+R/kd8nZ+X9IvVGvxuUP/eifx88+UCMh06os5Sy5CZUTkzkDnKxOqzU0nH00dOOqyNRNsVLEhMcv3lD4OyHMJDNkvo9e4klATUQekgceAUG5e3TLTaS0LRcF2XKsMyKHPevbersPZMMiJErUqogb6roHvOdapr7pV0hpg4JXtNtz9RjViq+iaOshcbOMeZ+wK9YFlOPY5X3P5XyHGfxrIn7LOs4GOFDKy3LPul9Iqi1V3adq+8N+Mzjr2dFMfEPjvFez14rftIJ/mVxu0m4UWLsFO9jLaFUyNcY72wk2ehQa0qwaGWMLv+kdHO5IRVqHwuTI6r/5u2w4PHNhYXLp0cIuYIYysZ/rrO2WNetBnn2a4eO5KDvRnI9cqVd3hza+pFy+F7GnVVIPf8TnxSWPT4b4PIGHnCetbpgFkOX/qq1N7Y0B41cRVxvNwdULqMqeMyxBhj5f9Bhs2pIXz0Utj/dUDuM8EUyrtc1HpXSsefnzBkKs40uo6of/mDFmK+I8KON+qJkuu5MRM3GL67ny5yRg1s04VsXLwAB+FvB+PXLQdvZNBwQGPZJWHAYHC/kkQwITelOPuTULtZGlNnCfIrFc/a3//JawsYeI8XBh2GqTYgnmw9zLDQao1CLaFQ==', + '//ozgjtl2H1R5xm1Vv9CYbG5j2QTCDTzUAUKBh3rAES7aAiMdQtFw2hCpoGBBsuJDtfcsUB0LRLwUNozOwCeoNP5UcaXduUBrGniMSXPodmMKvU3TDjcLNVq2NUSvSxOxye/6YtmO1qs6l6G9COpycODSgL+QE9MEU3sEKZbMLzDFBKUULqUqPDLLZb/uobvsx3yYtECirYzwrWqx9KfxGjQjSdJ8fpteXo6GVnS4TJoK5HN6j6uEwdNrvt1hzMIVtRcjbb1gB2n3egGCdzewJ8tgCSYHgTVfsH8a1XOE6a84i5dqMBPQFjdPSjLPGnwvQj8YU8b78r4KTxK7Qq8JlvlZ239whhAsEMkqZXJnxtcdu4qdlNWxhCJpfafiesdxidoEk4QZkQfwS0Qq3TMfZ0zPG8z5ImQZLSU/YKeohNwGyPdZ8rxoguqwLFgxK86fvWHiPgv3zrhGlb3B/Uf4YtwTPPLqLgCQZM+TL0HHYR1kL1WLaO8kzIQAPwlgo2xTbeNaIVA+Mhso2QbGkpkzJ/EGNZ+mCuhxAxVQNBjjicRiT2kN++ROs2Ehv+yNdcTZQueAaiSH5JieyzIRROFDeBMrQ3n3ukhdOJmdkRCy/f2ZEBqxQdQni+MvbUHqVcvOxwsKySVpVPMyFuHJsHQWTRVgrO4QpCFzow=' + ], + [ + 'KXwcJ2vhCGRWqByYWO7ZAjRAttXxf1OPtACRSFtyMgU=', + 'fjyxpQLSuEDfb8FygqEXJFrkUS+b0yMH', + 'kgJ2XMQUeTtYKtIjrSXBfUAjfTA5Gn6lXvTfUlJlz22RouSjCl3emFXKqqsQh008DKrCfNPSpRve9HDE7CQBoaZNQJY2/mdlCPXW08T+frjVSZWJqZY+OtRvsZgeqZfeszagHvE2AB0SbDMSr8213sZWXQ3BTv07CBePLg/dvK0PeBOpheaJkQL8a75Bv6K2LweFefhrlWKQ2jevJzKJBRos+LHw+jFR3ZgQIW3iGj7dWq3S8hHuvCD9wJ27m6HDGsSkG99L1Cfygk89nX+F8DYhS+6w1/ljntUupDTi1I5Q7VTCWGzj+95AtLoWKq3GGJ65ShtXz0XWgIrdV5bJy89a6wI7Q1C+eJiFznvHZHFkKPdefzuRNzIe9vuG5lN5Lg/z6+sTgI7Hrf6dGHNsTXFWUjva+zagfEkLv7i5Lp9ThtzYJsDlroJXrJ02/jrtdrHuUObqEv1kKZVBH3vUup+CPI0E6ZBYt/mLg6mmP9eom8M6rao+cMOrGw9Wh9TL3CcQg/08eoPzU6v+My/TZaPlYjGYIwu//b7LqOKPU9RUS219lDDpRJiDJniwLMSl0oiUGaDtNBD/jDzqltzuaQFI10Orlggi5ch8BaFC25g68mZPgEy22j6kpslxR4crOCFFBAhJShokYqY=', + '0T7kO3ybI+4nTD8N0msBEKfpngQpHkaXFa2xPl3De1y+BF5+YPAiBaDMq0YUs2TkwjsmSnUCBihQjUEZ0F5TrLvvS70thXvl+X7Bm4GD7VcfOMqsVwBPBa50r6WTFswhitFLdUCizB9mZ+d/9u2LEWETir6S6sgyN3D40fSjAJ4FOOkC+NnvwMS2SbJAmjhq3XGQeLMCAFLib82r11NoHAMReilMVDL+wU92OJrWB9N/sUT6K0yzAXmoCOOYpg2LsbYvMG6ouj1JuEDbmQ1ZpSskteOkbP28u1eCYnno0F+Zi2WHfqK9BjcuX26nvXEdIjMQ0HlR6CfsjHrgH0s64x4xFR5B5WF4Uw3Zqw0LuZUx/n9AX8NxGRz3vK/DgbYwWYYYigJmM1aO4EeJXvkAeZ34lVUf0PHiRm2hQzArd6jxpKbStHqAS0HDRPO/HbA6kmaVS+HsWbVvYqq2a6JSHDbkGtf8p5tFvB8KcZPLhR2kEQay0jnD1mOvVgVnNB7ecU6vzyP+PApjpSdstzUGTP4CqDZlWTUjPap9C73TAFn6/MvxLmROXsh/zkBfm0TQpkaKLglqJ15ArxbEchtC8T11vvJFYIgaOsXHTjIjDIg22t5Kwc7c3GUiBqg9EWBNaaseT2b/O4AkO859S3g1ZmRqhtxO1uXocVfZ' + ], + [ + 'v4fDfHKF6enJ0TE47dDQKVXnLe3GjgbPy0efhI0XZXg=', + 'U7Cx2QmF8NevlC9uAsQ6UbhYhSmG10i/', + 'njsK99JzUu8ATLys4ERMVjqygLr9ohSRe/nsqrZ1fOTWUt1Ybi9H/giYuOkZG/o70Nv1+eZFuhv1j6L3uvIMHvyluoKm6NPK1LFEebO+L+n3NMqnUDTx6j8LBL3eJeIEXph6SVNiBnsIsVid6zp06vqAUbYmxBX+CktNSbBQkcj6/DHkKsjJSGhfrJAmE8JDY3IFQKnFlgIlBJ/0Y7bROAT+Rq5psoAgO5Z61DzINOH56nd4qTiZYw252Za8XQ8XuJeQw/MkV/3ZnyBntVFR8hl0gXRIjlM2MG2ub0qnWjO3Wv+TpIXiKDd1jlvTfwV0mF03SURVjeddhYhqrWACeuPGzWBZn3CoWbYV3IDRzfGfpimQM+Q4NEsoVzRtLtGkAHoL9XKAvpbIjXxLt8ae6O0ZyUKo2ZqnfvnPLea35+NVas4LNgDLq3vaayOiVATHhRnHsTqIQuhK0IJAa7sPzNbUEtLEfWQzrZXJzOeOG2fJ9JKA4OXAvMFuziZH1wcTnsmG7cQ0B8JzcVVuVezbZzkuwitkWDKeZHmCUc+pry2++bGJBXdJNSV76odaXyQZasKjhbjsOU5n+vARvI2hUJzP4bSuriajSpGroN32nnYzBchjdmeibNRYhoL3Qf9xmfDdEAxzgNHXs4A5', + 'lwtWhNIMtPUmGWkLpSWiodEVIM2xvlRcVINPA3WsjhBP162y3OefvZKVpDUl1bmCmI7EDsrQsA6DLygAh6jY8aSXIDc60LKLbYO5RbZBl6LxofoQzrpsj/13FIG93kR65dQyOzgrv21CV/zn819JFGbwqD1KHMPmvZwgQY6L5z0+v2buX1DcZvu4qrowgh9KJROzQqQjM33m0YM+DFnzVQIcEfOXRy3mSrn1+q0+U4LtMc5mvJZ1akoebNGMDbiIx7XQWwCC1RmVl3Iilv1hdbgnoNl2pLwENwe8kWsRuskkvRsQFcp5E155575Rr/f6JjCSeFW0JV7recC98BvjkN8UoBILlpLFK5V+RPF9eFX3qlgQcy/qCydfOqoaH5fgpjvqNl/LOZeOZT9Hdm35m1WvVwbQ/6jJ8J+NRsrGMrQlG414zmGQjeBhSZzF8AbTCMVN1t03pzXRfcz7JzisIWJ5m6q60srXBd9w5jssTfDmhaDXf//Pgb1gBrbajSiC3hZH2kHFTLz2YfbH8eIk/ZYB2W+ewbie+/WCw9OgWFZnOw6rp1dAoGXGkVPXRyTL+xt5bCQMZM82R5MOIi7rdVcIHC53nM+9qn41ywir/hsshg6HMHQGD3OWoe1QmyBTpVc6MOktp//4vcvi2PNAF4p7vU4yDNVGlUmnVA==' + ], + [ + 'NvTK0TaxIrSt/T+wd/lgx8U9Fsy/LIG7Qf1rP8ARXoY=', + 'isfhtSKNzI+U8kSbOxQ5LEIlYjvULqh8', + 'OUKHMR5uzwHcedL1UvT/EXRhqAF1GAx13COZPuA4A9aTK/ATj3GJRszVTjXb560Gjpu9AcBPrfUdMNiTuc3efOA1UErJaANapP67lmk3JhxTVsl0WvUMYUoUsUPflgtp223BiuzM0Ruam5SHZPH4rS/Ewtc19yixBpd3IDMnMlffQrf3JXtOepQCl6LhSjd8A1cBzaw6UT4SNIbJzx2tnbvK6EwKc2zAMhTI09/SxwLQYqMr1VYhLFK9or+2fnPYkmN1T1cvJ7g7sMsllX1l0qUMBW8FMlNLSFR8LfwTRRCGdnAr/n9ZuAl+Pa8HW2l0jNfPUpJXDDJ3kTxPkY6ngd/gF3ih5zPT17XkjgpcpfFthmc7b4x/Hsr82HTlDGn9Ufh9/yYvap5Iy0RduGRk9zkMs6wS74Eu6mt2j96seu0OGKal5qMhvCdIo6telefQDAVR2kj3cbd6zuHd6VEwXimOvWFPQPNzfJJFj9mdhtQULqUkPheN7iHtZW05oeB6d7EOIknrxsDeMI9qC2GXi9Q8XAVd1eW6awzH9fwmOe4eH3fvdq3PtPuA9wRLSk0DAdDDf4WF3AD/Ji6EO8al4LqT4L2jKqovH3opvUKJKPjZnYFlEg8Xr30m8TrtS8IeGrQlHBSRBLJSpLbaZw==', + '7xVeIaSbM3R26bF7zphB3aY0s+JKjv8r8XafFaCJ5o23Asr/RU2HKp0ZcWOCkW5MkH99cYeuoka18eJ1PZVjoILNWl2tk0r3gC2mqcfobagvSL1Ms24SHWk65ArlKfx7XeICrf39M8NGnf32VCbyoN2pPIzY09gArXJayDBCtTZe0Q7zeDGllK8aFdy//8K6gsg8+wM/k2NyGUgHJdVfp1oV3cch/PlHjhvCfPet0ou+szIp4/tQT7bQx11yqV9tx/d0dJeY502mGTXSos5ODPc6rKtJUsZDqxxS8LQlZiTRTEp1f5BA8LPw+1gvafYMgfGrDPMAcBMi8C19VFduwuUkPnTnillZvxzREbmQx5SdXMpixwrs4h0ae1CwWIfB6g1nGs+59d/GKW54zF6y2bl4G37j5Og6mXQQhwf5LzeX/XoHlQ6fQkBhv5/St4Ir4d40pv26VngRwz9gz6+4e7zH5tWsPBsv7BIHYQxAIkodTzTifYduXSUwo+iYIqM4+EQTh3zrKULrquV405EPItuxJtDq1mQqG/g+g/WWke8+agrig+EG1zinbsc8XtzNLRt8q7sjd3f6yVwXthBo5ACuD4TRgb5EbUG9aV68ZUC7ovzWcNb+7eUyJRnVC5/3gZ+bTm6C2plw4ob2r2BbiEob+LVTsa9uSmXPwLk=' + ], + [ + 'VvLLRsd0ykuUE3jT3O5ZFgYiogJBd/pgGLlRyAKP/hs=', + 'Wol4OL9MzW9FVufJrAiEKwt769Zaw775', + 'P9kn3uZOjYWyrjcnA/ueBT3wK0ltXcgY619YQ8AGP+UixPfHSub/Ab6Jihfvdukp7iBdz/vavRBGQYxMBx3IIm9/Yc9oQVptSRv+rBzBFw5ULu5eGDFfSMyj/BInci8t4axkff97+3LmCxF/pl18nTYhp0y9R76TcYwgzmQUeZcfX9nzwoA8gxtW/Nx9kcKXd3Zt+jAKkYxtRq/mV+pf90lcTubg4RdtOLXWbK1cXEgERHUAbg5EfDm6lPd/w0Zqqo9YpXQ1Df2UpQzCfgAKgoT/4+ClgxQd6IIKVmOo3jaETmz+5ypgj8KtUeupDZ2aklUonV9aHCVQQd7tZRd5H1tN2M5CM3O6Xm6KYUihklEWT5hag9VROL72sMoj/5IjEoZTUic3KrsYBB6+XtlkXSYkAg3O9hMsn8+wkRuAo9BJ5eFvkjk4P6it7+OlcKofQexVeaG1skcXKyWMGd3UxalUyiaekslZKoQpD+fzYO4yd4JHF83mc1QQ1WL+JBvGdhKp+QjAVKYIbi3NxU+YDym/4L/MeeQ203BMDFXW5MzrXL8VOTnBt8hNITpiWqjZ3bRYQBAGqkaG8OOTUoqXbDhGGJ5tlEJLLGlhe/u4KZtQUm1nYokh2IdIFm6U38qcxZXjn/2zRhQTeY4MtEo=', + 'p4kdbJiUSQlApCNC3jNkwwtcDk2dSiB0BptEjXUgpD4D4Z9pP883pJpCtHvka9SnXBrE5JjGREt2sFWN8aswyoWkyZ+DvVX0dFW5IlYXoXM/6Touaog3VmhMTeRZU4O4CuM+9tpyL+U3I4DzuxGd6doAXJKS285r77FMoheqY4p3ELEMRKw3BfGjKiWmCxae0jJA06HVJuzkbKODtpydOTUx/TwxEe3SsnCXGzFXXjPs1VEIXe77lYkBm25KwRK/45VhI/4WRxgpFl0PsX38/94llPk8QopKXkfC+SfPbZEORGlo6khepfaXdAtl26NHUSlWsPbhIdtxyMY8JY4pSqjJnh/geHnxyp3TFkhh0nXxb3V6Xc1DDkpmeP8+R0Zwjlp8xV3Wl4K7v2H9qDAgks5IPtgLwmDou2lV7K5kACHb5YTPTPR80ENiIPtjW2Hw579zNe2EsUdOB9apVkRuUGuV0lBNk+r1LFxlXSEkHBhR1nHYVjzF65zwP7FOEJPu1jBW5qtFyT7iWEFdnb2H5cTVnId35CEl0jNdMwluLIdnuYegYLrMweHMirSkY31R5IzBh6qhJfyOiFsh1VLvZuHC0QpdW1Xq0Pr6pPyO9/G20r1iy78AQPWZvGfCBGVwK36WtjCFYq/QZJR4lYGBBPmcJzu/QaUROV/msh/q' + ], + [ + 'qTnKO+lGUsup0I7hh1VzHpqocCJjEQIXabQ2monYgXY=', + '72fbgicjgDgE3bD5S1YeyaDxjFt7e0hy', + 'kDffNIVOgc/CUsvbEUz2oIjw0Sy2RoZSrMI8KkTn30dUVlvG9lHq4UmCoF4+Ev71lA6NIze4Vqb2ail7cOMW2T/c/yPVgO03Q7x3AregY4QBQYUwUaZdHua1NKhcgXraoyfNHgJn9LPGhqU4RnpxtdoWAb2AYvA3JQM0E91h16C5NU3TYhsUYSxdNAfSYvrPyY1W8YA4WIUJ6CnewSOZWjUHiYqaIah+9t1pYZtzvfM9l8qeo+vS6T0/Z7ZKWWI69om42mx4CIQ85eU/eh+rl/Y4zqgZIOIzJRJwhDCorCtd/omqqSyRXe0zD73EECsn873tCvcYBlPpegD5ELla3+FoS3hgokv+78r2PCVWGShASi36qGSe9XOk5jwdQ35yo8oFHfE+y8i93oo6aIOtUdO8t+zJqUnswe2dNYyvlFbSaUchuZAelKE8HddDJRLPFPWPGG5rrqZ/BZdT9A8hAvcM72R9J9hSYETgj0pnbh0dRIkwEBssNsdRmHxRbizT3czfDIK9n7Sa925QNeZI4x5cqJXNQsXF9vb29eJVCGGlmmBIaeYj/whlRxC02UgAoye1Cy4TAJxeBKbXGDrAUr1ECBhfO+G6TCpCv42GI+foVn/NFkGXJufaSiwYfs9x9lrtGC93maqLZyVlkpdH', + 'v4eo4XRv9hjqS8hrhF/IqYPKlVfbmMqf5syhWuFJsIBDoIKr6US8LD36r8Ff67wdd8v2MxjngNkOZJ9GRQiTAx+9KXtxWmvDlbtE5fuHah1BCW8wG+sqnOuMjBgxkYcnYvsffygZsiuecVMbpP52fma3RHdtSjk5ZKBZK1FqRxdA+2qSJzK+paO+XygqGYfQkdWEP+3NqX7YAfmkbnR8nGJWJ0Zw3O7M+O5PSEO8FD2nLvWqZNZig8wkxnSedG+fNos0uRS6Mko4M241XmBsNa9GOkjYFLKCn0YGqvCbrPPd9oyItJaSl1grTXC6PBOMw1780ZdNeFSEYtwsfij2dh2NXQ0hHYyRYFiCqOOSyYQiUYOSVd5JuQilDLWvUZPZ6aa/7VEtB7u7i/waXt2ThvRUmOztF0icSjD0+ptjQnkL3KgmpQ6rYD9SJrUSu4UCBYx4CAddxpXKgyvIUHSpCJCsR6IWkfWVNPlJ6i6CIjs7y73XT36Q6SX0M4tk7yeifye3gZ8urQvKI4WHzRifpbyTw7JfM738nhufEAn9Fp1Q6uKTGCyX72Szn5X9pB0iF7jOIOj9npwd8WMg597flE2/AS46LfsV/m5NPZzJyXwZeTBJuy27u5ru9/xxr8agLtW9bIOFFxFvmWtgKJpLZB+b/VCLWRtOpumUNys6Ig==' + ], + [ + 'whl6cA4wNLJww66AHmJxqUoq7GZtU5nMxqvS8j1IjxM=', + 'WtERhtFC6tA1SwvWXYdaS7YtLSZ1pjCc', + 'v4m+3DBdCBp+qu2+5gJGwcSMV1+0XGjZK6eobA+7+KXE4OKtjZFkUF5OB3tUua0vdm9DUkwF3U75UE9RnFlFS2tgEhExyd94oTAozWJVgFjQ0PMxG7Gtllo7YQ/POSRT3H7WayL2QlOzRTjBSyNNnqfxzIi3Vbba5j1DxDx/e/FLCskFjNfk5Grf/QZzotIO2ks1Us4nDCOCw9czZjTbSEKW3WZMMI7mF/CBsGTHaezGhY3OwO0ANzdn5El2SU9MtlYfD4u/LdpbFQDphmMj6BNnyhljHCbgjJmQJXpkdS92IsM3aPNBHU4hOAXzc2S0W95jJ0GvR19zfLSlj2wr+MW2tr6OfwsHG2csYze1/u6SnTrae2mYTnz3E2lppPF8RzIg4lsJisUcZ+j2y5RMcQzRD0pk13B/JL3o3kc8U0fBLmNB3Feu/nB70OWDY4hfz6OLp4NH/7rAP4Oi3mjMf1vj9l4ZZi8J0YBqRjK5wP6xqhnq3chsC0Ai9X6RZLEP0Z8PZGzB7APmfJwJlikcEu2EMzNQ/6m3mq4QHgT3N2MRe2En2ZlMO6dF1eDQKc6P3oWnYMn0EWWZPdMWBSzCFzF1fEVd1HLvIQAb27FjooSOYIijoD//xOOn+VqxR/RbopWqeW0WPG5XOaZkLif91w==', + 'UEUNfX6cpJqK9DsQcNDzeBdkVpwn/eDJp6tYmDihxied81Em2e9pkNIn3l0rPFQi+w5udQXuVLG3FE1L7Ln8JEQDLOQvTVBF9RMwWGBhRpUml0CmSbg4Nau1DQWBuFAzAs0Apk9f6JY0WH2Je6w7c3cnfKzI3M2ErtNUIBFFlyV1lmgLSzhs+8+BzS2TNqTNlXpjeI3Sc2dI1fSzgaxgAL85Sr5xr7QIoBAYD9oR+Qt+ZtcK6rnJojeCzOpovkQSZFjKy+/bZTLCgys3NNnA+mE514p7cug3jN2Ogy6/bYareFgNZ03kLzWr23hGOrHqPMZ7fAFINCmoYMyCicRDKertiE1QQP/bbMvvOvJMlcLDBNOACnZA7GCaS9RMKBBnAyH1JpdmPUDEBwJQXi99eqCwT320HpeQOhCBdfGadn8Zg66Jkt1DZrCHQVRHr3GtiHqyN3ozGdGlFlk/YHV/phbVl9faIn60C2W9QLD+wDMzoL4kUO/Zs0ud8zy3Toz+AjjA4HI/sAgc0bZMMRcsgS88f1ItaO45MALTvd9SDP2c2fe27NbUorAl/wX5aFDM+DDL+j8/8PTcrXZ4gSDRrqz2QaTdHalRAxOzqHTP1b3fM2tYnnXv2ZYKV+ex3Dhaypb+j2krS/JW1O+3IGN5BIuHBwo+pnkmc4x+z9A0iwU=' + ], + [ + 'fk3avkAhmihUrnCxD3rSNx6l0oSMG68p8EzP7te3HRo=', + 'OwTXx++W9F0TBNNRLkcX+cE8/Fj4zvgq', + 'QTVMkaleey7b9g/8JsFp0EQw84ushVybSTndl4OfvwCRqgq07zK+8Xcr2FFzlqIXZahiBR5PAtP+PDzVABnXUR0dW4+WJ9RmXnW8MPtPTekvNlUUvX7Lx2yPE9US5ltxazy1XwUSO3G8RF/9Nn7dWI13oygL4MISkZAcxlUbAgo/BUNwRKjCefgrgFH5bAZacgOOdLJAOwsw3sDI15mUqvzbJV0kU41yxHY9/hxCnK7bDs7WU33qH/MfkJadwatIwu4qK98rP/+X6MZEjJysG0DooWhdGasIuzn2qbrRatkJHYKgmfo1rDYdHNOTMTecPAxvYKETXOw5PiIM1agP9eJkX1hJImHTX6IpmKQe1x/8N8JMjWMP9kQkcMa+Ds5VWAcqqlNbckCM2AtQeoSIe6FmHulX6aeAPkLyIR7M5ZhCtf7uYxUdPyjUw5KGEYyPEY9ezPtQQYXIEYfKUhU7yS4P0vMZob+dnVa6z3fTaDiAl1rwtLe5Y2o47gVmoQgDPBemuxC3DpIbrlM3tx23zRl7VF/nFp7xPr7bGmE9M1Fw+V6CObN2ODTOL1zrdXUhT6rETXdux+tyy8P1WRqFG4uGrKjxrxuvQ4HmpaAokoHjcGEOkmRjP5FF8pC9veGinuZyWsOJpU+B6eplbjxRFjw=', + 'm4E/VRQZ5Wiu5iK88J0zOMEcAeQpCwoEvYeRIKbSMOvrW9stVal61KuskP7UfQxmRc9ZKhzPtHCp7ouLG/VdqVynAnvcg7sGIo5F+e1QZ0ysEDennXQ1zpAL6sLSWwdFkj2Fbm2ERjxHJcC0kpBiL+49AY6gbFMvZTf6w8xxoRYzWrE3otD6TAWFW2tZUADlyR0FkfWfW+GwSAa8uOTZIbiCcP+xSlxvkEb2oIL0plIkCzBgGEz5O/H5d5ykOg22ebBcire/RqeykNcf2wXKOwVYqjIDoKCO2HcM0oGmg99kH4peBL7N8nAeiCEtdY7V2iAajTDe4D1xMLOut6uArQS4C9vZ8oLR4N6zTY6UyTfw/UAVRGIRWgs5QQ6uimBPbQqNBTWSJtZaPouY4SMlYe+1SyQ+PDKj5qKRA5GPKWmG6yR3N7kzTRbgk7d4KiaN3ostbGlb6BqnQq0Rbyd71LOWWI42D8ax/texHC+romTX6wzpHSZDaSoVrWZlhFoLiQYJNnUc32ybZ3Mmi9xTBxXaNhYGRnKjmhGHGh9HXynQT0OCSnbu7Wn6J4dm2grgdorkeodYgBHGwI9IC2flPRqVI9jXK691pbBTpkIVyMbn6jDchOXL8ELjyNKOKp/vMi0h5YUl9OmLv84H1Wou9Ljs0gGJe6pvLkOsTuhT7pSi' + ], + [ + 'd6rDSKPdMEiVKOZ5yAl+D0XCRE7tkhxEOnGFgXfLH7k=', + 'IIeRGfWbbFkrd+ezvuBnocgotJLqG+MI', + 'QXmjsjV/oRG5gGRI6wavUeDi8TpuuCvtECWa4+TZJ+rEt5VqMZwSS0N8vwa3FuJSDl0H+CVlagaW1MZbXAlwu6yCsyB9fQ53Hgx/n6RKDZzgXmXo/6Ckqdi9wMr8J8/Eyu802dno+LrBNCzrAzjtUqSK2sViN98u3H0SjMEdQ5LS+m33xE9T8yBwnfeft9RXdCfZV4psS341ASFps0HzXu/QX6t0t5+ZoDKwJjtanuXEtlQI97w5CQ94koS1ZymYSHOuiTsLGQ8VWbTh0wPWud+JOZ9bIaS8BQLzSaV0f0QLB3o4DgJPDnt5o2iY6zLpOA+gh8W8qj5EBPuee3rmQaXtumTRezOiJoL0xyF5Vso4/i3y/tbiRF3UBylM4kEsXh5uHsE/depuZE+O7Lptc25GtmbW/lQjejeTbKSl7sYfFkqQ2s7CVyyE0BBDcU2pVKreSvkssLBrpjWCj3/d7eJQ6XMp3vpd8BJW8y/wy9GjvHT1CKatxZtZwoVrF3SA/+RaLJXcUO4hkPhtkh9LPNggLmDfXjJsBXsGem3nB3Vj5GIm8ZNLTWw1VgBQjb1DK6p+k/p5mNsYsLFqRTiydVSbmAAxqo1WhUu8lS5A6tntktPVRr/jZS+w9ZLWuAGnHRDoJ6CihsM3vRuepinFzfd2', + 'sU1FYiOmQbXLhYyEpVULLJuWw7AEWpTUqx02P6wW+1SnBQ0UAB7VJgORuUXuYXrU+x2kru2ptyHor1X10FPX5NiWvm+equqVw20mbpsPn9rmey1OppwVts3Ypx/hGbumDcv8Kzf5LIlTPJqY4zeplCeRgX7d5zbYdYA7GmfflYLXwuUlY5URzIhC52M5Qg31huweUTS6Opt24BFCyofCqozEAAbpSkJBUffe9J8GjSTgP9GChYbjQwnq1ZprKuvODtOf62JcTPN88qZOy3cK3Dwu4NXzbkWXZDCGaFtx4G2ZguvarxPpq9R1gfLYG2rETbD5+LsUSBZtBAbNqsUjoeq2ORG5q+ftQDzEu80FEig/kz5pS/MiCHWMIBC2VyTCCQ9V51mH+eUpXMEmR7gqX4g6G3DI8ronprlGy4tJr+ZPSP0Ig1/L5I3OT6RWdi8rLL4az4A6LWYC+lbVEkSt4EIpAkyBGS6AwZt/JfNU3fPRxRTCPEMoLP9ItrZbECseoyqigzkyRRZf3N4xnVhi54WYmRA3dBpG+iRcwNfw6AoyjT+fGOq+Vb18eLqgAuyqkpshXlLSffpLAOPkLzkImVOJWwC54FiwINVwHoTrlk1mCRlx7dPQdG/0vVQrq/6309/YW5cplTjhwhycJswAIIgbvHMeIhteri0vMxmm/URsJw==' + ], + [ + 'nRJzQSTZhOpyX8S4va2cVHhnUJGuGoc2uHq4jvew5v8=', + 'FbzfM93Y114xExSPV7p2Y056mQxMenvE', + 'wki9FSBojHmfqQl8I3L/UkCAQF/BLx1fTqaQ3k00EXVOwLz1recxypiCE/yW1M0LG0L3K8TxK7RxdXpOLH4QGa57QSKxlA/c0tWAJXeghR+t8DeynelF+F6pm7K81Tb8kEpGOypeh5e4hPOxnSGZH4fRE1kWwGOkHInI4on2V9CPXVToz/UCzzIUdabH6vYrk3mMxSXVbjh5pJpFAMwfe/6nTus9fehOJRs4Sg3GucMR86eucad1aJTErg0LiRHKP9ARlejg41lNRded2C2ssQGdRbAR5mL6i0ATbosyrDaa6rqs3iF5kUwu+JsXRydbVkVVrZtgH9npAA7cnwV3QFM+CvGm6xyJvF8RxfhYBDljK7QvWYmgR+/2nQyg6nHOL/XAPVSOcXiL3gXBIZJNFk+E3HNUvhe2F9Ozc5AJUlY7RHAKiN3zK2iCC0KTPjKaj9k+mrcLAm0K4JCpFG232zYBNlOIdbzLH8qIq64jEEXpWudKCZlVe0mJC4WS4eAT83O9GthfU/sTIn6ol9uNre9pxfZZtBNA1NIUOqmB+892aWC3jJtX14fYdDMFee+d01dYgLeBVOjoLzM4blC3f7pBqH0z+O+v7QyP+wVcl3iFwlQG9KJ0X9+swMV66AhmhGYIrcr8XvJSJWoIZhYd0TFVWQ==', + 'bJoek/12XAm8oj5QYyCXy8TDDw4sbRAhXn5aWeDPWWj8WWqi0sXfYCQkszMyozdBb4QLSBucuR5VP8UAUVepu8ltPyeYsyeLDfArcB2PyPH3XKeAoF5OCFKV3sNjIPUD3A2HPmOONy2w6Ej50LkUILh/i3tHeYHVWfarfa0cwE9xiw8P7d3XP7PqseYYCpjnksdZq7dAQ10nz87mjHjPslFJh7j7gDbbJiXsxuZdgOgP254AdSVAYuh5dN/OCQKyOrCDeL3bfKkD++9Q9rZjoSFNjrKCEp2nD6XTqGNW8w+UfZxFxDp7vVFlGBgPvDFq32huUCtCjizxKd1ZBMiOOBs+OiKmGsAVjI8zaUTfFjQyT+N0GiZY9YSGl9Y8DR4F4dtZ66aqpkLLF8Txl96JntN91BYyDGqwDxKuOqiqbaUT68nz7Cbtc2IoLreuywcCIZHUf221c+KzIGK+li3+Pvkj9AjLsbEM7z55vNj9zc4SbvEOS5Yeq1yY2oDTHLVDC9E9cE7q36mc3ZVKahL1zRcOC6Hh/mzkeMCgfUtRPZaXyoE54k5wPmAObk7e8vdgBNgakw0unbPeHbeIk8Q9KPLzJC2ULuKgrAqXJgDfo8VSWaU/IZZFHtC1AJGVDx54SOnXY6PjPrY8WF+gNFnbXbT3ypC6sNmijP8HiU8zkYXP3nM=' + ], + [ + 'PW9U3gZOAyJZ1FW1F6wW+6MBYZf2QTIOai7TOaBUuoc=', + 'byMXWV6xF8WP3+MS1WcLbBxNYvIuycxM', + 'y4vtuB3crCU/TXs34DrWB5hyEhCNNmI0zDrU1yho3MNoobuL2QmjH+nLT4NFJw1ObcLBkA6Tk88zDAi3GCKMYOz0+KpGryJhLNzRIw/OOMiuuGySTKvnmfzewnsX5oICtbpqUlylMxRT1qd9ZTu1VfNOGBI3uhirCcq0bmdAX9l61SdIIjWHuBknxJWYbU4Q9yjoa31KxrR5VmzLCZwsZi5AVlniQbH+AWn7NjPRYCP0Cp6X8AQt8vnLOyPNdknNXGbO8izO2kj++2g+8Kr48ODesA5F6WDq3G/W73eckavDafyuTe3+zA26CFqkdwj/PugMz0jpQJjImyYzycqeALmec6pHv57lX8eoKKs1oDQKzjmblQ5F2z1q+m6BVf9PIoikm/9fk8zSt6ePRz2Uk4FuXynb1+BZW/aeyZvWZ0JeVQJGyCEemTsLNaHfhdrlfVSSWNnX6MsAvS6cn12vqC6IIDXCOIDTnFwdXBVmQ3UM7rd5CDakhfDfcg4sOj/RaGJFYBq1Xoa/jH0I0DHV1QKGEVm5XUG0TGf8ONQuEGzyA9uZ4ctEtLWR5yY7wotw7v/qOUQfc4WBg+ewjal/oE3DYJxn6BRPnFlBBhAqJ4SbjNlKeMTkDFIREExtgz5fGQfGUHSxxSlrx3fDT5TG/vhq0T8=', + 'gUIBBbOpV3vtWhRpACkalPgsjN4HxHKPis4GbeaQQDkBL2Up43Iexn74CRZaPMa1p8IIlhkMUYcNz4FWFV2wpPbgzLzKVBOK2WhkG932pv84o1/kJT6hocqDX3l59URroQJpdYihmSnnoMbLAyFlRJXZiZNAg/euSPnfIE/BHKUjPFBXm+tM93FOwVZw5sZx87o2liWTQwyRhrND/nfbFXalgxJC3A0XpggdkATfaOuU+JTvF5Am6j1Vc2J0fTF2/uq9sV/a1vlU8OdJNoZxegVnbedT4bXjo/JdHnxA6DZoTFnwIVzho58hWLjX6v+1i86DG/aO7R2ZH4SDyO5YgF59+8FluRuDKswUPddJmgDHA4ffV87RL6LLW7K+rrw2OpdppVqT0Pf5sw0zfxOjkwR8svfouHLNqYT40q9+WYWfrMSvq0Awmev2e38kyEmCNDhTStkB7zmv/HYCjO4kG8ET6mCgAsSpa8bte+FCA0WhUiXANNhPJ283YqWkzvlxeQwiockfGdD7+CeWKBE72E4NpR2BqxmQM8oyqjRl67NJ8nau/1kVUfCqdzpC4p9EPq3ZMUY1ZhRpfiQhJwgnhdJpntKcfdwyZcR4QvnZRLbDY5xIOHDwKK7TQeKEkQ1J+rpcFBD5PinjqQ35virVPWVKYPHTassb/2Jyup0VhDk1jkPk' + ], + [ + '3k/S+FEQbpTbn4ANoBJv48NXPMfY9ft/iaLu+ADVWNk=', + 'tPPLXVSkSnQUHP0w4G9VL2ocZUm0neMv', + 'iVmx8jxaxbwjB7i+9PevXKJ4JhYSEwCcbDXpVBaHfRoJTHzWC33UvStE90wX8ovYX68levlQX2emSj/w/VdfdYRA90bSwbWX9p/1Jvd2SdMFZYTTJQjwbYOlFZrZeckKpyGtqB/mGGAGWNytk4LwR8J8mxT6MGQlrdWIgCRmjw+NsjtJ+dI9Deme/5ioMIHs5FcpX70AfjM+qvBi47fntpShcE5xQF1fRt4STBeu5asRVQu3cRO2H2sHRl927cxKRD7tgOATp14a1YaqncxY0QlQXsRGT950GXTtxflij2qYUq79tyw095PBK9f3plw6HQ8v3xRwmwBbshCO2FitzZBVao4AUJvQgH7iGpN4OJbBmcOAPOjSDi0G8rZvEBsEryzb4PnMlygjRXKS9EMNrIi3VlFrmKT/C8Gs/WVXLz5NXnkOrravx5H9XyQBGiV/NtUZmuvPMizvu+hhWnvkmlRLZ2M34cOy/yprurY5BevdbQSdt3I/PCay6jSko8JmtICIYxAH4Ir/fDCnvsUxppCtw1yldcV5PB6P3he75+B7NPlreymVwIMHnz3CoCUfbGerz9sK6FxUOVe4cgcROV/gxI4feoEuLE5oAUCBWC2mXsXzi2bukM/6hyKD/Wi2zvk4d+nCA5K6jWH+dJ7QawXMj5lb', + '2ERO7D2mzeaCID0R4kEAlisrc0wIqEaL3yT8xFiZRzKa6rUwWDU3XwWa+wQsJvhqx/DmTdumbhQmAEZH4kksSEwijQ6CVsYBVx2wNRpcvCOOvi/86Al3YXVx+gLPkaBKmq17BJMrb2yQB9K/rGZasOzShkUAg/4Ak419ZqCv/+w1m7qk/U475vOa7duhLhmSp4WPR6H6jJ3voSQbgR6UwNf1WSOHyu7hwNnon7hQ3QdtajbQTLMq6I3s5VfuDRcNDsby7Y7t/9AD1foMNyGpewY3n35PRf3GrER2pxzLA7CuQ0VnGeJgXz5mqp6qVGf41D6Tk/T1elaHIHFSpestAv9bptwnLGGoMczCFPmKaVEGjaTNJlctbYcgVxSLjXWxyGHpWzIYrB4T5B6MjF+yReGIKBpUyQK50vr23aXVku7c66Kqd36qDM+gRKycOTqXGpsGmjPDB5TkWzkgsF3vuM1Lz5I8bAdTqXEI8OT1NR30wDqTILY+ze73j7wR8QSGbULc3GI/xcrF1WRBqAKljghjQuLvagsTJfnC0QeKl0FRORfOmlHgDrB5jKEBS6gZWATd6WgWkzCxdgXsar+dP1ZVllBetJNjMx6OFkpIf4qi+ioJJCOd3FZhB6EqvOhbFpDD0Ou31aQs5uG3LXbH0ULxitH9YCEu71sa8STzZ/liMnUbdQ==' + ], + [ + 'RSYpCauTH+1PBrEubP5ufXlB/XIulkC7W8ORT4pDI1c=', + 'Rm/5WOfyfpNAcnJ/sG5Uluvu9dBi3j5a', + 'z6vSpM4G+rwHfKPfYUY9Ttdv8KoDgX85OUgFtHodCXSwu2LXP6s3wUYofREPKhokDloH4x0Ilwj4tq6AnD0YBKxC/V1yhBCHO/YSmSWyt/pAQE3JoWxq3wenZHraJ58G19+NT+vfkWq180mabTsDJP8Ct6LXOhA+TvnVQtG7Wl32TJYJ43FVJpi7MB1UkZlKGMlGxrXeKg5AFWbqPcpk1cuckz9xQiU4wPvGO9AyVAzgx+KC/Ab7SBudib3SC8vqiNQwlRnSMz6s2puT4j4M7euv3pjUcz5tlBeZ3jKl/q/i/JamQGOnVqp5MovOh3C1bdVOGJ4FlJL6LrL8yPV6InC7EY+l66PirNtIOBoQA3zAQiLOK3+U9GqXSJewaOefUSLu700mNrSFi9NcNY+Bdjebxy0ARfDKFNvPbjbD8XHPWhX2/8lIMgg9aIrQZL0f37H/SyWsSvW+GZgDV7QkcfFht6p4fqpdOyLbFLNOc8QmFG4TGgKd8BsN1osAKj5SRCxpzb73+wz2ToRFHBGxwtVaSbc9a051tdFpzl2qDCvmAE7gy+taRyJUWO2n+mg2vcPinoMtDanin7JgrhLsLbfOlu3+nuoFkU0aILgejMvfrWODAioxuwMAI+heXm4zotpZ+XIj4mDshqSwOqXyLhx5xuHOOw==', + 'TnSp7qWdrN05+LgEfb2cbX2BsRx/px8LYiPRR1F2A25QXDrjEJTcqb9aADeQDnfrb6HmgAOsHAqm+qDrGMhy40ZUNKmL2PHLDSEC6AY1sdXXOryOFwdWjbwDhX85C6HpVflHd5ZjOx16JZCZiWrINUxXrOjStHwXJ7SEqU04G2UgKxB89qB6uaZ+m2ajm1zDJEWYJoI/0buBuGkBRzLn4q7aWfliXYvIKH2mWu8UhWp5pvuaThzciB7vST76SLb2qyuzB86sbe41VGq4Dtk4k8bVON8OYSSozWLNZsrvGANxDnja/nKjt0kwd6CHSXCRKzREJZ05W/on854cSPrMhjq1S63ni10nHrdYpAJN6qqLhCjl2lPXdQ0s0002KpxRquA+DXcMeyemxn5VvjayamfA/jGLE8/G2xgVAC8w5/oaV6IR+FQsfvKMadtcLwIOyzr7dapdRx1IxzQJ6TVSYxaq/5MrrMiaTlSqYCCstt/Z0/2kgpHatY0a449gtbc05JJQXMeTxCHQfQhwYkKoHn+aGD3olJ99QwK/G9hCOI2b5X83Vl8lJAdDtfkUq3RJXlLJUeYM2UEq1uLvEbSoMHjH3phvndfXIBwITUCjJmQJBH0RLUgCVNkYNOVZ8Lz81aahPBgMjRfbqghSTSyUl+0TsyzaOod6HPIp5AIBy7gb7nRHKWA=' + ], + [ + 'YuBNdKEQ9d1mNz5zUFpPkTargONeneIPU1T50j1MdTI=', + '3x5zIUTb9S01od9b7OCICxdkOsmyXOi7', + 'hcYu94hbLHDzdZPwEPDtyLzDVjbAumP4VtUBXUeu0AvFhH3H3qa76xhwTe1ZGf5ECfm8Cvrc6Tc+3GCn7WK7sqJhXJ7F4nynqp9YlxKYJhLn9W9YUugTiNA8tGCqU5SSiJRylBcNY9uxrECMdXAoaFa7TZmvy10IyYnqxftqliNtcEUhZ0j0H0Njm4CTD2y5nBUu3z0G1kBL5qTmtKMng8hozle8b988BYXJJJQWeu0cprHCTdZ/HZN31CalssUqadgY1udhGCAz6c4n5iXBVRitCZNDf+hodjn0V7kZww9qwe5xwffH6Fw8UCqg1acMSa49peMz3BF+JIxgmWpkG8ShdQR9q8kjTvS4ST2ReBliuCfCSbPwh3fIL7yMedQA1jH0kRTZy8Qe++vNl4h1ICFrgRWebG1dknAq01TufskZd+HtsrbWiZPQVvgHgupf7aSQLXnqIALdwnud6C/2AOxgm6Xbcyn/lOpV/BL57hx9wmDWbpxNHl685Jbq1jB8/1QrIri5V4uDgbtzGENYYq7jygrP7kMYoiWMh+KmUo1ISJ+Lk7aGrW4J15krAqTSbhRuGSYzF09v+iRhm6Gjpb7xjadRA46newI5FMx97SxFYIgoCrZybs4CsGDfyQvL6N3mvkYhrE4JXirFzLAKBPtl3G/oQeI=', + 'eWbT/A92By4ifx7E4nmRnLSL21ckVBzqfDHC/0nt5vgWHos3h25wXC1PIG5uRLPfjGOIofpxpPs2qBhFGTj54ZJrVCU1RfvMkxDPpGk8hzAec16yccYl7u2H/R4AVgP9pBeFhp0h3TAL3UG/BuaQFxlbP9yBEnki5x2UNCYwBmOdCTSjYAFTliPy0qxr0mfqr2U2uFtL2Qlo3TevRAyjl4h1pLaOSh5ajjC06TysoTQ44Vyvz8Nxiuo7gfFA+DoPq5nHpEQ2nh9PrADKKCjwTGyFxpD1KXfj6t9kAUquKXWf3epJC8nNT8sWhVwbk0nTODEXs4466yUWT9rsCxlR695O99ADqEerD5DpbDCNihGMbC8Ec9WxI4Ba0r7lQTGyRSm8l8XucgjWW4k4TLkENU1+CThnBlSOYymR55+vmeeDrN+OCUMoqIuKuzLrnFwqKzLigJIQHw0501my7dHgiUgiYu3CteRkcz+IOnTGGaG08yWNDJxTo93bVxiPs0m8jI5BAuKCfzy9npgegC12FKXb53xCCcxWM26tBNLbSgXvtjIbKuSXLhaOkemCWIJczEzmR89O0XG0KGQNrv/BRaZZxoS5k/BId6D3oymSgjyYPoF89dOnPvRx2h5CObGDnXt9I3e7qyGCheLYMB4E4KFZvXQcJW+4uKAEAgo2hVXJLXesMe6+' + ], + [ + 'OFwi75Tbjc+x6iIN29L1GCYrVXU02fkK8R7KYubyAPE=', + '/d64nUbL0MgkM9oNbOb9nOv42U2Vq9P9', + 'j+qlvrQ/JtvR1vuy1LftKFMm7+E6k1vSIepa5dD/e2+dlXb+UdjshnwoUXeoRDd1zUr6lRsgJUQkkPvbEMSZwcS4+Aro8zM1KbGufN7vJQpUzMGV7qzVJzlUa3TtQNPgzGWxysfgigDsGRIn8FKSFEj5D/ZAkBRbaAjOydSX2Nl0gHjbAsd5jxLisQrAigDMUrKcFvGuW3NWZ383WhGHN6XCLh7uX7jnP8tbJ+H/eo3ryfhflkH1765lRKlGph3rjQZ35idbDbmGADRO8QWXebgL4baRfQFarFf9mSLjV6HXHDVlGqcUb32r5FCfrx9qUAQRaLCmf5b6VGiSH0SnB9FMLAt0ZWawk9zMlVTfeGQUYxYtPTYUDzG9IYplS1g0R9+RfH2trfJ/uO0RqZhE5e3dN9B7YJ2Sbga9BgKZoukjxyqgmv7G2sG4TtnLudrB+1nDnaQmaJaecuFGnuR1RZET0lypyTo/D+5+FFh1g6BE+ntYLgTgFxQILkbKrQG24YMrm7WIxRkfWpSpnNru5swbDNpvvt4Dnxfza5rpQSIVyDlKf6kIl4DrEdKhQGDfOcVTQKula7Qe8y4cZ9n3LJ+o4Kom9ujHYLfseVO/qpg0RBtFWCoWdKByzUuM+SS6kvOFZl89chN97uAFtZPsMeiQxv+GbHdM', + 'h77jDN/AwwlADQL8N6XwmB229/mRjm7IUejupQe7YjMONX1MQeptkr3YNSSMOBTCBQ0+C7HR1eOV2Ub9ulBpWyI7JDA3J0YNgkFZ0aBSkOVyWFxSSFRNxg6tcgXGhDyne0gzRW1fHkkQoXcobs3rUBXRTphNuckRGuECo0z/rgVTVl1B+KkiDuKk9Emg1yPiA1UaqkD2YXpJX8Y1feJQCHg+Qsd7PbvJkYNRDoHY1yEx5PaphwgjIWre4VLixlL1yrMdnfXYBOesh5J+wjEamRcZrn7cCwkO7d6Q/hiDWwXT1pLsNIxpI4l8HSn7sT+eJzRKstJxoOs7qxfydsCyxlpH8yJ9SVY8/JpyZOp3vKQ2wrKiNehiD8XerU+OI71NEamJDwm2e2foc1//xbu7gWzR88wJGeqKmOGa2NGBUrD3EUzlebAKfyY54TBoEhllcNGo0C3JB5B+14MMAVgnQaUoCtb52yg665GoMu0dhD4pbddlVREj9GM1zF5V8+qOaF7OPz9pOIntpvlpEEH223fOBz/1YUkGBUzdYWQ4JBXvhYPe5l9Vf3lJv1mD6soVgY59vbUZKrxnEVs0mbe00VJN1VWya5xFlNVDAyGIxY31U+kDvgRC26Ts4r6ck6MsFDfzbrwnOEKkDR9IHfLA/yJu2rLrSurkyCQfG0z1fjHf3v6hlhQkzw==' + ], + [ + 'dmqgkvY2JFtVyD2X8cOlCXmsPE4fh3Rsd1GG0iJLZI8=', + 'Jhcm5Fx9N9ix4caAyrEF0iP1tM5yE+kF', + '73DwzfcEvbm15XKIMw8KfiYuYOKvhYYX7jNfTGgBKUkjyOq/XJB8dWUUP1NiwvqfdtNns+6XHeMJHJXFAG6DVjjZg24S4FA9O+I6VlWo7SiCzzjouzZZ+R5a2WSunH1OHTDWn1ctnpMi+0w7Lj7kHsG9w087TqMktg9ZNQFy0Bq8anQR/rF+iDjQmDnD1h3foWE8930rMuZuRblTNwB1j6CUa5puYRNJ+CM8tzXJGoyISqTzXNpun3gusCCGBHkZAUThvrQHpzb1GdelC3JJkeW+WV4yLTdQwsI2Q1NodMMn/Ob82kpME0BwN1Hr9Sb5xThkRY59hTycwc1RZsq4f63HjdnXfWQHvICQSSvN1OYCmv0rS3rOEC6OGcKkHpDsna5UAL4t7nIRRi9IVdWvtaDeUAjgn+dgYbw76/SIqGcueo4E70V7vVX08a2LcloRL9x4VY4bH7vBwP9rcwkudtsy10o4fT5xJjy5558/sUY+ROQhyTknErozemOXPgydRluQwr2FSKZ65y2a1P39gRy1lCOnI70MbIqOTbj5MAvhroXzkyHF7de82snxM+syUMWx6fEQvDpJNwt7qNq56FDXmkmN/yncVUY2FeJBQrkU6J4jQDdWmsaHxHXOt8K0nJbvVMDwI/C++nu43QmjMQ8qeoEFSnK+Ag==', + '5NBejRtIrzG7BnIQAixSkd3GNbPhuo9VK/FnCkNExUybyS3NjYDgEMji+P63V8oIOKVbWwGQTAn8//cCY4H4VeyAo774lq19bORFrCmbf11qkdOIAln9W24juHq332gLFYPg3D7U8Wt8P43VjEenWDwCy5p5O3HhxeMqxlqa6pW7axsLM6IR02+h92uEv5Kmd6CX5tuRix3xtJiccpdShU4Le5EqkDFUVCKeqARHET7ZkEoxor00BQuCBvEL068v2tdpiEtC1gdoZhSfWwkAneUHVKGp6YbACTb1M159PUbIIOm111UIbHPFPXuTcpBi+k9RzS1YM865Z+bZbepuV5UPHBXjcZBOfcI6iS0PCV2+0v+Mp/Umy/Yyw78pCSegG8EsCsaea8zQtdg2G3eb5tujqHg5LGsO9bMVKp76p/AHccImNLOt3KUHIVyIpPSw4wAI9zNDZPGnNkc9jJm83iDmRccEhls3V5QhenxosGONV4/6+NTUwfJ7FinlHT+Zy0TfLUBWn6YgIGauH4672nhbGyetIzKY+FjcUtuzwD/m3q+cVHbkYFk73ubOzHtQoQs6Dp1p4G5aZ0WUycJuyjgchXls6CIAZ4UFIKgsTuPomI1T5e67OQQfLLP6PC9QA7VUM5kza4RbhkTyXnP9YgocEKGo+yW8BMcgVXELKDNB0M7SX7XekxM=' + ], + [ + 'Fc5BvpzlkA+uFB+iAmSKqEFXKoZ4h25Gp8HROeBmZ6c=', + 'Z3QCpSGzLYKEXHcBXUtWZtCyvPQyvaBZ', + '24IV6oBBxTPfAnUngeIT3VRlIpwY8SXsmBY4bvb2rxIpJXY30pL8aZNXLKWtczf2Mz/9kxPc7j4WhKTP767msD6FmUdzxZ7I5Dtg4H6deDg891L/tiR/F2QAUooXsclNA73EJ2smgF9epqjFJyFes0Lm+lybKQl8J9wQSseYiban4ZgH1MZFZbS0Yzn9gZoWSxpNgjNdCP1fsCtuq8q51qtBNUpOZPbRyU+hLvltIgLuOyy8lJX1+uvk61ZCp++gSr6Wdb+T/bYqsuXrIlAaPD0BYgmuoX5Z4hBGEGnJPVAFacnZDDmxBtcu3HiRWT6vym18W/j39cQE5s5IsY7ZvszXPcO6dTOS5usVDZI+uTXOWVkv6ZUHQX9vAIaCErawTABwM1hjoOjRPmbY9rZZ3fms6tfLO1dawQduIpkmR0e2BDjFM2pHR2VVQlO6odDX8KR0hz2iqbSA4dbzYAEus2VoEYUyjWvKgkP4MMzlfx7UbLOyukRPX89lYBvhespPbyFKgCVm8XCmtFiyZzx3tcqyj6hE/xWSvjIRKQf0f02vj/T2LQY65fpAfJGsmtUSZXbV39DYpLHNlzhz9bUtNKh2/973QZhq3hlYGjJu9bxKy77/1LS8fynL4y2AVs5K+qCkBXMhq8u5MHJ2dLIL74fYxY13/ustNzk=', + 'vrOjETF9FtSUwHKpoE8484vzvEc2YnoLwiSB7GtFWdbIMSx6y/pi5d5qwSdzt0QdI19YtsYqxHAU6oATF51Vi4s88X0PWDLp/XijxCJKiWOojvUUDOe9YVR+Zf67KcAi0vo2ue2om56S7+tl79N2HEuHteUgbNZuLZNJ71YKNUteWRbliY8RlJ12IO4+GTL4/bnk5kO2jbnpRREs/gEAiw3AwLprS6j3zdsPfeDiltvNQxIthXOlZNcREZT1yX46PEFTbYsrMI/Eib8bXUSyhFnblsnWdFNTnZMjZfWIrgjlai9XorT4bwJhswTYtgGznxbgqWs03qahBHNYuB2wJoIYBhfiON2BbXZ31vZ8AZdwSn7G9f8OpGaWLlKy+yvbdqrcYWwjhkK+3hi6ZbMlCnvljlEcQAC7UgHhzJbYTitess7WpATJkxDVc2c+vPLVrR4APPvFntYpVtH0P8qvJ0Pionn4K2V9pE6Jq4e5gH76snoibX3MQa8ZlymmG0Ev3sWwpgfTUThI+SpR3fgtw3QISEfN8/ajBnYPItW5fcqdRazPbUtPtbXYX4sMKmE3u5oJRDrdZ+1JtgqXUi4xeanKF3YwcjoXgMMR8b7TRBZx63QdGNusA+yo1XT9vSo2eMPQInFH7lEX8DgSDqeXyXxjnEXu+Sfq2RRY0TJRPllUL+VRMMfhpL7F' + ], + [ + 'nki4kHnS423ejzzM/t6MQ4NvU6xMkmQQ51aj7iPxmlM=', + 'olrg0CV/GF2NCuP/nUIu8nNRprILdgTU', + 'SLK0oeL2MTbqIvU1jfh3rZXrW2qfapmCvELkJLEAPretn/OnpNmzkT2YzY2W5olqEEWcYSuHyiXxPv47iDMPEdaIDzYEcaY9vVP+PT6inrWnP+MUWDj6z0GSgRw0trqLIpY9mU0g8jOUJfsSoSOLr334bPS3pXvbUoBBwIg9CW4GF8lPayWl+zz0x701R7AS5RJgvbX+VoVk0TAeB9zzvRbQyMdPATsJwo5zKtQTd33yVCRmSiuVlrPghpnfc8bruSJmfnYYo+Z82D8HV5xv1icRBybwOMbHSu12H6TRKRRfH6lT7NV8vzXD7triINqvRHxepcQ4fdTqUYBv5zatv6YHPoAB10xzQVUT4D6zBupK+QfQ85UDHQp2KgORaYCejd9fFaMQ4HvCq4Xp6D9V4Gj1KUPfdb4K7N5mQq5via/GpZO460DuMQF3FrKvY8deyC3qAZyaC+AcXG20fV4vrtB6pBANYFqz7NuNa502g2avBJqJnEBA14RHhgU/Q3YAjBwdYOw8icQQbzRTYm5aiqzTvP7+SsyiyHzLeJGv6hLfiAAmlLeucipAj9AvMAdz6wgQOYUEnhqu2Ox4+WQGsoX/M2t1wfUJJGST6GuNQq/yuLiZe3Ux7NGTFjHq4xzb6PCkZn9xjhAl1U99KFkSsbiRwgSD7UHA8MtG', + 'k/U9qEDrGMbk4G/ItnYTUBq2+4tKANF1Julr6IuiOqOBUMPIVPxv+/vmMH6RtCVUx+Ks5OXcgp0KB0idaCM894QFUUuwm64Qm1DhyQSoTMvr4vCxgDQQggIdds4nKcVKWOZxWyF+dOIV/Zxlyvpbn5FRqxFEuo9UhLs2/BKnx4KsV8iw5zwPw0mIaHPRtiu/eUiRIgPGYnizMjx3uqGrtP18h7iE2lasjPJuAmMwRWOn+WDJQI/Iy2KsYiOlv4WN+owX+AAp6VVqjH/RCC/zftdUfy7mh+CXUV2q8nl3tD/+TkywDxz3Gdl5/CQDTTTQ+shCBcId2sYbvbje3NsdAa8zYYQvd9jdzGGQHnyer7/arP2jX5UMTN5EzXp2oAAVTItC4g9toZ3G+lEKptJrL1nUQONmvZGj3NxzdCuwYZvJJ6NbN9B3KcnUKXIvQzPs06y5qZ7oY07+ECXiJxim+mg6V94sqsTgZofc4HzYXYTvIUV5XTikMRI3403wOH0b5TqDtH0UAKPheFukaZnA5zi3Amb1Ibo6ROPoKYyrR5aGf4H/g3dxh4iFAEVXmNW7x0SbkNz+GjQWDdgOTLXGz8enHDFiQFEqEWGBAsAGPgvRMpRzYidWlAF1Y8rK9M+4NO9R+tPCknJ7pbw+lmyjZhl81K7uo0d35+KJzMA8qlrfrUysJcYmVuB+1A==' + ], + [ + 'dFJFNPl5IBVpPVjo+6j+TAhrJFN8h85UK/OLdGd8szs=', + 'DQ0enE3i3CnaXt0F+My7tp/wT5nf8OEB', + 'IWWqLl05Tzz6BSIMZVisTITt0/F2rkoK1oz/c2P0sp+cyRgZQIuMh7XUT+5ZECWUjuOqV3ZP0zrN+8260tHAhmYzewCY29JZwJ7f0rVL9x7up7eGWf4lkUiSnprBFVq3yHLlYSyO/jMlTC3WKmBsJf0jUYwkCW7CXTN986clKdFXE9KO1ze4bHWHIONQnb5V1IoScyw+wsBz0O8QUhmb1t4ctpaEiQDj9JP/eRVgnko7fxGUY90Ww4WRnpouWGyAQw2MgGhtX/sgs+OCvpeump1VB3i1YXTRzBwDYtti9Xw6IkpbaFtDl0l9+Gn1XG5XgLStbDrTObLpXq+um8n1RDEHM3IB4imhYnRYYOmFiQEuVWIz2ApFoK8WjYd1sqOfwg7AlG3M7ef1Q7AaCTh0LNIr0ijdm7Ey5NdsEyKyb9InRUrGYxoMBhxb9Zjy+gFaB70z5VysbVe1Qe44HGxTEaIDQ3TQmUfg0cfNp6mnIvzAXREi13sZTf8Rjl23+MiPs1pDsPLJqvxm7OfxSzKRmkdwM1UyncizukPvr3Xyr22D8v+Q0eukyRLrA49j0Jq/3uP/OMD0RD8BxYk/qHf/O/oh6AESJ3Wve1qZa4w4ffZl7doiOYdD/ZIVIYPq48c4RuL7h/IUzvrnpCbG8L0rumhgaCSMXbcD79ohJA==', + 'e8IwcOLYnv05lkYLnUZMZZPjS5gOv7qqp/dVFet2ZS75UyNLpgZOA46w6p1ZlJR4nVgS1Fc1/fk9IawMMQBBalY38rCphOkLAU7AnwPXBbiZEqnGSETOalsksm2OqUC4JWdIqU1tcCoVvUQY38FLF90Rt7qr8ZkhNZx1ggEctOkeQcfxoKTYRqPpk+b5rjhMBqZfMohW9W9S8HjQBGRBABLODofs6utocx5f0Ivfu8G1bzsJGdN7o4SkB5JM1D5HXTxW6apgegkRNNHf1I+aL/beqquqOzBo61uvrp9t6zrd2xZ/fGNqjtDTVP1ASYK88Qozrgvd//0UjQ+2mJhHPNyDg4vo8hLyazat97oph4Bpjhmjc4qwrckjU3fvtTkCWLT6slV4DpYRa2MrjFNSRJ7nUi0+jNf8vVvwk87nwhLd6RP6rE5aXwFV7DuhhGwBPSKwrchDE7TNjibfNm7XRGm60hoCuBywqNPRXwTeAUvDu4fJSw5kD/rIH1S1Hkch0YHietcoXigUeth9Ba9p1YcCg4H821IeNi+ygaD/FcJthg4CPZJNhpQpln86knw77wKaReInPnYt0JZ2w3HjIAs5DaWoxzE8yK+FNkaRGmLtBS7Q8IPNcBXZWujtjkZFjDIL5xgK+r/LNt7dLG20GErALOODDkAvCropRmmKA5t7P6Ko7+/ziQDBs60=' + ], + [ + 'MG2vzvXa2zJi4soyNdfgqy6OvqjRqnJGpoGg9YcYU+g=', + '+nAL4nlzg9F2IzjCj/e6utQwOl2KVjsP', + 'z9HTJNzPgqdLClNFqKEpuR5LiO55S1GVO7Knj/m/xI315idc1ZFoODwlhi1SbNQY8hF8T9+BwWaLbDc/d24haZ02Tk6YOHQBLTq/ADhkNUvkaUe/B9GnQ5jRV5jigVG+jBhV30Eu9Msi0rJuIYnQrjylELySdSeJfFr9/nl6RoiIIMC9GhRi4y5OG6uwOmfiubNJZOVrrL+APJzPmmhcS3iYZZJMHNz0iyuhe/INWe8fqhtPiftMVTV6tt85I9WgIcIbWSMq/mHd9+RAcTnF6CA/4M5i6BdUqBrOe8Cq0uofXq/NZ0kPWCuQQjeuq0Y4tgHpP9bSNJxW4PmQOvmnSF1Ngmx96oOwVKH7/dpB9D7eIO5FDv3oD9dd0Fm3jqnP0vcfdX21b1P2RNgW8UGOSVt9Ci43iHdLXPyjdjWwZ0fMXvu783KnvIyz/zWPDZn+CWlI1AW+AR93eE0Rr/yrr4T68L2CCQbnqpetEB3xqV8VW37xbpVfetLBw4JH/N9BX/cr8MSuGeEdpBnpngDN7NKecU2rmiJ081Nt34AlrMNfoJnRxcUXUxd/1WHS6htfGSh8BtDVJA6/pz43jpsb3oudXtdo9oB6CqNUBv/y6JuFwuGkKqK4KgqqePuTlOSt3si8zCFrCq9Bf/Uqk735Joz3B8DKojKSlwtHDT0=', + '3DUReOhFiacIxly1lvylQzlSTs/o5xrAlwGVM6Acfqx+g0+4fxLteXtd/yivxs3NISau8uDRrCbDNboM4LnKxuzaP4pABIBm6QZ0N1Fa4Lt/I8pc5ZXAyESYVWQ8uxaKj246NyHtXVVn6paQpumPcMI8YxOzQnKB5PjgcV2fXIubGBAXyWxn06cMXYM51k1OU6m3uBw10Qo5jMUsTuKpjMaJtrd7iDCoXGKUdIlYzGmcGBbL1ux6o/6tj94nH6w69GwM+8UdAcDEZpZUWrKqyZJDnodDOmrG6eOwa1kW5wT5oHqxrnRPvv3Xz6roa7X+AkpSnKfPPSoagLuiJ1KBpr16aigPRSRP2Ugvz9BHDMOeIGv2/W8RD+WP0obuUix2RY+dMXaxUINV1AyfPfdIn2O/feHLqLfVfu/4a88kDdxYcksyDCqFcMv9PuOeX2K+5qd/v/TOmA1Yopt2xeKmv2nBhK7dTJKkV6TA9CJJumH44s/vIt1ycRvB9JrPs2T48+Uxl0pY3Fo4TH8WJ1zxgBgx+22f9hP0B67vPe44gmzG6+aPgoXfZvWcrCWARxn8NdiRC53Dl4OFYR/VMDKmz1NFDLDM1e7uuU8mCSySTtrqcgTlgcwx3qPZHA/BGy5moP0V44/b89sCkbmkqp42GgLahJ/CT/UXM4H2LtHI9arxbewFDpSy+b7VYKn5' + ], + [ + 'gt3QHPCuwJPZ5V2dv2BU7ey+hLah8lLpxt+36yRJA7k=', + 'Yb47VyVW6t6C14oPG+neAvQ1M5VYS3j/', + '/mFO/3ds3vAc6bjqklWFpnQtUgS7bZvwXmA07wdPDJYNoDZ2G0yGcvYWchzVYtz0B7Uuy1kiUVB6f4fvhRPwNj36WYTQT9od7VT1Dp7zQcuJQL9CuzBDdifPvZkHAy9n8uRRd3IRwH92FDUlfpuCpGDj8tS+IUVduNFpjE6+tvoyyw0fZ3AThMQDVqOq+opKqCv8nVT4gcPPwDjQ0mCpPopW7AufI19Y8Rxb0A4BWVniWQ9Tj3jqGyIRdNWRrwGF+BXv5XiEUsrCuIvf23Q59E1szOFkk1QPBIBKUf46ytZzo4I8si2p1B8ZtoGJfHf/A6kOcAPcHQYXgzUBeH+C+yzEuJal9RahqQSyj/hHFSiCF9uezP1le4N0RSew/6OgK+pBcs/s4CQ7nGTX9jrbKRDLVeJQVC1QCnQ58VNxZUyZNdXa7UERDv0TAThiduk6HM6549Se0NCVDAFAXtpHwJTbpypyRGlR1BuCEjoMSBqCr5B1rOLbUXBw/XNQYdR46jrsuu/NsGW8sD1PXIwszYk8ttH0QbL6Hn9K6NUgzKPZqO+acInFbI/+gzTqLWtRwAjOQDl+9ER3UJtIrfOADv4NFwyUa5tsIU88HY31teqj2EW8OS2D8GyoUTSb58vPHGTm+FyfWfq7sAbRDLKseQA6pb0fO9uB2X1CYNqu', + '/Zg7NaRWIcrQxefEaECSEk3tLPAuHTQ+9NY4Gp3XU4C5ovZ+rTqH9WbFjF1qreaGQGSLVufifVp+TXshNUhZRdIzW3zEUthzD64qt/mVamGwxFBKkDT4bvLNTfqf3LevZzhnhKDisCzU42pwXzQvDGYpF30XjkPd7uwF85+iZzzFFgi8MLZ0ulwT1KEbRjc4wTpAdxgyl/e0KAlnHGyruJ6iPII4zE5y8xVAW1QsS5wbKSleIE92vCZTBZVlFZxJ7/EVXc/yCCP2LaVtkTW3r2zBy5eH9da11eeWpPm4NsOsk5VUrxYBCkrRGs/RUp3dOq4OBgkTCJPyhh+PmQJREM0kc/HfTMA9W3WcejBejbxQwTmnXe0+BqTwDXkdB/tQZA4uNsYzBL8i6xwjeDjvZWAz8RZr4cWHET8gx4VrGtO4NljRftXCR4wIbWzQyfcezY5EResmJb7N9qiU1rkVI+sKxRLCI6hr3Unc+h8VKqRxbNdN1rwF7DqKYjH7de6eIBIxxacXBbOYswSZwJHbxuIuSLV10Ra9/+XyZKXoJpTuacp8/HBT26AHUb7gEFPe6pAAwJSBpBVvRHwotRfn3ea2dPPQfKUCibsF1sz7ZLr3chdK99Sg0+lqGChfxeyfbGcaa9HPKzZ05+2VRe2xXWg6W7okQ5MzqtZ9dUHjajeHkN5GQIhzPUg8Gki0ig==' + ], + [ + 'P5SoVQPiBQxOHF9r5fnSm68GiE+8jOzVQHjDSjIRIWo=', + 'FQwPuqTh0GcpSRSBGNaq9XoIU6zC7DuF', + 'O3wmPlQtN69V9zGvTpdh4RtN0m0yly96vTlFQe59lkMK/09XHV23xjsC75zX/QJgLEQSWKbh+pCtwkPmaq4j03PuMuj5CV2WuwwBsGxDPY4EFL+0vNvRG1Om7/8lRo183JwpEVKl5FifUhqS8ungJwSlBNpk43FyUdsUpAyX5QNsreZOhqvt9aMQk9rN7I6QwFLFcF8ELw75ZaL8FK36poknXwBSD+IaVKoCX9WxcYToyylz7XjdDujm8g1/g8OMrnOBrohI/Wz2klnm1mq84qCthaTRbDJeQdQq3hK36AcGXB02rddiuvfyRmuDJMkYtxfRDpEEqEUCoAUP8s+V5+7ysN1XfRVCiEmP4XawJfJC85tOnnCQuIe8JUJ/dkUD/YOXWISwi1m8fAmGCRCNHDeDTa7AhQeiNJCCoqXMJYOGYHKOzcKOCBNJt4yAEHq8i5Uy+JSFnnaEXLQOwZ23k3/8gq+JoypP5LLG8pLy6CHRRiCNeWaALdZDng708CPzXiBNXaWSP5Smb8M4xvlsS+k6BbNr0muG5IzXGKpPTxHlKQlasPyJmSP17E0p0EqzmcSlQhT6vk83YCiRRJy2mvALFsz4rRPnnxF/nc4LjH+2uk0w69bSw+hbNV9TZIHqxMC7iAvtwjiMtX7gE3qn/SGLKeuLVvseu1SUNmLdMw==', + 'mD2dl7TVYYsuP2fPC6AMD+U8tqS2QgtKEakbW9/zMHfie1FK5ySgGO9viQRE6kfdPWJkgOfbC5xbAu5IFBKoWZuT3xjN3gM839DW674EoXWaw0Q/DcjVdK4UYAhtJehMb7RiyTWtQ7y0v1EKaDypokYZqNbSkC0rDbrvAwVNHGBzNl0u02bJ15nur161Ul6pQvqHIHHkJBVyqAjgAzuTECz385SQskzsIHiCdLiZpp6nuMapNNAyorVplnddHSMwxWJlWcObztr6EMTuQgpmTW88uY35Nt6knWbD9s90YOmREcchwRC+6dYEtoDdSRWJn+lAtvu7/uy6LjfnzyAfq4A1BZaaMQhWTj/WQ6DycSIfJ4X6CpRJSi4YPqHpqDajZHq1eCU2Diy3mPJucx1vkE+IavAfx9EB86yQGTozFVNbWaZRUrgJAwkgW4mgni1vgfXdJHWJjj2SNPHmCykqi2KllFCW48HMgL/+6fogal7dUOuZsPrQVTg++FHtO+sQr4gX+uFIcb/DOK7JBiDZvojcT6DpUAMjL/bj0tCDUtm8rS8rObHQXK4KtARRofWrAF0BEjfyUjiOi+kgRhAoaMJEqlqJSEKGMwO3DbKgjPaFnRaaBe6dcmd1/F4B1mVP6OnvkxgLlRodAvunne1kjA4KoSFhMlXlSRbsbDl0fpNLP0/mTU4CdRuXCxV+0tw=' + ], + [ + '8Nt67HABJaSWfM3NQ2DHc9WstriBX04UN3wLuZRONj8=', + 'NScACXlU5tYD0nZKrEisoAkOxvDVMsPZ', + 'FQuxJD/sMvZEAai0RwA2mjtUN0t0N65unemnwpbuAdj02sp6smnzg+ar7VCoS+ONbb0dElh+lKp81Hd7W+6l93HmLSxDFRD2/vAyUqxjC+JVQVbOvG1ma6ItPvYI52J1BVMAHjvZqIGvaxsWg01SahwUu/N2VwvVvQAOghfQo+llpuzYXTeQe0xO6UQTs07WpgwuRUccoUwhSg7or83h+FQTEy346h4DkPZGdPMb3GcjAKMqUhGKAtpeR/lKKaLBBgTNMyeEOvvE9mhVcMb34h5fSm+gaQ1zYta+XVoPIkBP4ozHZJe8KMagq2Hdik6erKrw9Jexx/X/u+kzfCAgww5rSzl97JosbU88jYlI/pB5XmmnaWmHXv2EX+F3rDcBvSvtVGftkWAG0dwCwE2C13SDnGlMqjlfaqhLfT4dad6ErQN7hQRUsL4iMHi/UfM3shd4UZ+/nbkBOO/lnervC1oqp2/HCaJrIkSgvSuBEboU34OX+yW0vzH687us29k8JmJ810op/6IIKPCKm3cswO0MPLcR3X4tAuPvsPfAhwtH60Oda12+3ucahZ5ol8JpAz6uU9EtlYvAB+bhapGzcq8OgL0Lnrw8WMedQCInZ8OCpD1bPOgCtp88LvkHe+tO5WqF0rMEagHg68R5an3YHhgqruubX3W7fXBice1x60w=', + 'k65FOjgzYEBSQKXBoiaAgExE7G74X+pt7BR/b+VY0vsxwNOiLsqvEdQb73RzP1GsXhxSn3JAe9iwc2JOS+SnnY439PvVCoEy2miPt1DGxJITFbWhl29SGVwCVUwqVflmckCR5GcCTabYlrvAi9nAumd70QRxIY5WSRxP63WATwTFWFyohjRtX0ecPocq1a8RY6pPkSqyj5L97p8UIKThYKx2id6MOU1dubfH4d71f3bE2Q1/5sBplOhQSIYCWsORmA8bh0JAT6GwnxXFbpnZ4cUCPXtEJJCn5tQAn0gP07Hn1zsfcHVmsX4/psup6BUHf1Aqetd9+htKqlyPcs45KQjGipeYbzGKFK3S37ClC0pvsrNEWW55aS+4sk3Xnjq4Ans6O4iXpmmb7O0H6IX5AMundudOl2i1QrXCubn5kNvXGfPwclN5kTdgl7Mmf++hmnUL8671q4Bjn5ehFdVaJDJI5/bGtIyKQ8l03IUdymzXIInjfsyBdE/cva3WWaLBdjP2kPj00VUyT0WOJEqxsSckl1FnegqotfE8yFeh536WKSfhoBps+DymOjx23zLEpM8HU66P0vVSjjEqoxwtW9A3RYm6VZPhIVK7KrD9DcZ+HMbdfnJKo7KgVJP6C514uIszxcvyYRQe5Epl5R//WVGULDpO5NWpOvx8eSksbxFiRIrTfuqm1cSP87TwH3nT' + ], + [ + '9YVrWdes6IBiVZHXRUAy4/me0YUV05lS+wQtwOiW3NU=', + 'e7uJZyPvI2vBmjkskiGiBtWFAyBDtwQX', + 'n3+Pe6nVKtpU2bE6CrNaj/CBFnVypJ1SZVkUZ06c8zUEoQEbqiQgmw5BnnbLilvjU0uGZajRdY4IPoNbko8dvV1Xww7UX+cJ7Xp+JAg4413ri9lJ4kO67aGgBypcRIFDaifCFtg9fqWIPG/qf3jIkQp8CPxe7Hhhdv6OaLbqViVDJnUUHrdVqmKW4o+xm2ijEtJI8h1A5JWOJrXuH+2arBdF/D8LQ49XWBCPpPCYRagvVKTUT3IW8EKVnJK00Gyz9fV5AMephAxZdNhtSHd/QDzF1+YtL+zJwoMdGfqxjDTXSYoiZqj45be7poVxDjrs+y3RUUtOW/adYXciMKUaXszyjbKYsp7J9M0wrdAPikrvr1KyAXpArGU8UMhPxPzJM+Q60sFTz69zTbuJmQMZV6CpIwQph4dGZIaBnmjaps0AchjdgXUiYK4+XL+4lXFTUtEp7dWntNz0uUI9MiQxNJ7I9L+JFBu+1h4vSKoKrlQfB1YmuG3vyjatzOCbAJlBupEQZAjnYRsWsbQWkQF/QVHMzkvVrpJFbrRGHKOCQ4g4DQCYLwEKKAZ3MF1sMJgnSlB7g1mGJArVc/4tHA9AlBDnPwiPmhMGPsbpv6LTWsLMWDXCRnYnqwHJ3OvfdN2lqXtwhNtGmg3pKdGWUAWaOG5FekrwT8Q63+vOVURgHQz3', + 'IVR8pUtGHZH/vcq8Szq1amj1+1gzMzbtOreXmOOqytMtEXy8Qkzil/StXLmffPlRTaaBZZxZOgg8N0MmLXsGGlfY7NynSi5lV52rIgq8M5CFs0V0beaJ2epjR08yonWQfydTa7GALD+PC1pazwmYEagvLvVIfGZ7I1KX2cCCsqfYLlH28+Z+ZqbnZsg9vnuvq+tFNbplT3aG76ZrW9Lx5BknLXJDO15ivVsQqDzsYwFDYOzafRRJm+flHjCNH+ECa15NyK3nIjg5YoK1/ttwKy1TpzuxNwT2zLbolZdhT6gcU8mK8Ma5j/ar7UfpiFn9JgJ1zKeGhsC0m8Ax30jYQodBs4x2tYa7vbVuoKqIdZKU4BGTid8EmBgnJOcveETVFALAd9MZicBb87dmUtIICos7c65zLd1nowisvk3ANMRaIClCf8YqfQLGaFF5s4jIk2khjihvvP43jPXq5zPZDquRQlZl5dReg9OTn7ut/joP+VUx30Krst3dqk2nPKS0iBxlDwoK7hz2Gugg/fIMl/D7LwNvW+RP2v7WkWuqlD5DxT490m72k1SWsDHuIN7mRJ5KQNqXY3zznZzb2sGmo0gf+0Dp3CIhU91RN49JZYk7KkGGDBVgbDGNX4vqllTWn0QgDPNRGOy6YY+OurKOtwUYjlINwxSEwxOypJEOqcahyK5OYbmWlvjzewZeCZQhVQ==' + ], + [ + 'yqIWROIu8bBmp9Z9enybHAHW5IDKyejxuD4mfC1OKZg=', + 'Nfp1Wc5o+c+MESTk563mGmwJ9JEvG9ZV', + 'h200NLzuHjTfne1VkP0M4sRHn4IJ54okyNT5Z/QzwPxQfSqBWQhuYTBMKzKwWlGerZIdmMyGBk+qrPBTBi0sEkdJ7yz3QWKaHQOwMSTT1J0EpePQ3vt1+RnNMu9LzmYaiwle5Mew7bNZAFJIgAYK68xE+jOGftQNsGGJ5JNlt5BVBhHXkjIQLIfkHD50HZsxOsJpccj2IOU2wdsMa2yyV/QwlF+XfGd+AgeUNs3dxoIxc62ERDzPRvZKmIuQiq+MFBcum4lKN0KIOjrt5bz0dDBzpUDSb5eNfsNN71GFwnGNappdT1W1GVpXCxvrt4uBOpWi2VFf0klAUFQ7XRivVmo3av9zijHic6Y5IeuP0uJVmzH5/1ZLyp+BS2wyj7Ke+5d9Vdb+zkTZuQY+bS+48fPAXtPr6YaqDGScC3e8iWwlKxtKOfHTQwxH4FOW/iLjBfLkA2zjLncF7urTVgowzjTqizQTQ60PskFSMhqux4I9ilyS/GSdVqHLoNU/b7eMu9UFBU8qTwDtAtxeYyjb2XLMn86c9DA7y5ak+WUjSg/Qc/nRsFZyrMzYAk4+gu1h20NRjoc6wQwCi8j8ua6Lo1Uq33YhbAOloVJjld7fkPvQ45/nNqpJ8+6glYw31KBw4xSfnjAl1QGnhfy0t6MM/DbHd5m0lPvy9UtJDr/gzwiPLw==', + 'yJsXcf3wKe4N+mAigT7hJP7fulPIKM+qRvctuWiQbKgaVbKdFizDmUCRYFd8pJxQR1FM9sMWy4xLAtqfiSyeJZtV6RKepGYM45BMrw/o1CQBPgpJdBpx1uidwcLpmJyODJE/7vha/pT7JPfmv1MjCLYa34y5Y6E0cCaGU7Pm6F1+3KBgOgc+2TPiE4f9geMVHI6ebI1EqUNJsx6iRO+kz1+70vEBXu/juf+7y+HGSDHT9tKHOkfo/J3EpecTWUl8uuirbYd12mNfHrhZ6YdSN76OO+HSDglsK/S6d47iPmnqW09YOkEYBeJNknRuopj0bSiF6evi60lK9TdCOuzWqKWqLQZSo75YLs7JO4idGaeXenP9XbOBioCMdlVUhcDG3KCon2c7a4IDpcfr1ptMkT7R0KPYdxJPE+olkbjzmOjB9uiZDa7wBkI48j8g5RFE7xb6ERr6qmjrAXQoHBEISMSK7AdyYlgBharvP1UNDP0JcIDBRUBZ35ix+gB4bC01Bic3VAdP4RihcDZlwdhmq6Ql8oxSp0MwBszH7gDanbOfqC1kKoJ6W4f6hNfDErQE+QnmddlSexTwgeKIMoxSOntRNld3+HBcmsgoehAfIVyzdRMt3Ha3eehFgSi1BAt9nN97UMFJYsS/AEYROlwVZknyFnZQWM4YGFN5qvPyvD+pnQXa8VdiTHHdYxZcXwoX0Vc=' + ], + [ + 'w25rgx+hxDvfl8/v0k8hjo902b4OHWdGnCrJUzoG0lI=', + 'Fk/UBxmu2V8jVDii1juz0720CL5nycvb', + 'mR4I7+bM7qko53+aSCNS0MYuwgfksEQsCSDcvSPufZ+kmuYbYNFYbZZtiGl2rn34pOAhV4VVE2BLdnsXUl6S87SkhQkeZejgYChThWnFwBrH+fljoj2GAhfEDRshohSFG71an1lTa6c3Z5ZeoY/PJ5ghI03ZVa8XffBU8fXl61w+M7vQXL0OPRdQh/0FmMSDiAON9V6lKTWouyFpnpa0rtJdxuyHSDddV6J6vdRJ5B1Un2VMTNAMf7x7d0zTlBfdmjPMmraSXb0HVgDDD6P0uq2sTL/DNuf8coz3oUqrHpY74xEtKl8ccmGK17U69JqptZb6i/uKShWSi8BQaYUgOulQrTi14TgXI1s/Ct4zqhsT29/f+fUuwiobUasJO7IrFmw5+9luSEw6iuGSr3PJXHGhZKj1grgMpNSBIMiQ0PuBkdvRFZ4D/BdpxnzZL26UU1o9+aM0EXK2vtJ8FRHrX1BQBXS4IlqL6S4nZxcMn48X/vUtph4rT6ygRtKw0eIhv5DRpUbKBdQAywSr0WBfuSKycFUBKzWajxcP74vfOrUKp/nFl9xDxBV24162a/gL1KiJWFXz86bLlFD6yLZHWEIk4OnbJQAQ0vs7rM8TTRyLX08BeXOkcqXznNQ++w2TTATK7U6i6lDFOQQFosFtTrMxug7wF6Tt36DonF8ewYIUqDg=', + 'ilyl33iDi6xksb7I2JUPSvOgrsAX5UT9LcBMErja1a7sjgPymyw5ryhzDq2yWZ+FBztJZgpuIWnUKRvFIINmhpD9o7cBIjRy4uivkuNeU86SZk3/FjkHjEN4xG7fpO4w0kmK0x3shgT57fRDQWd9KKs2XTFQ8MuyZ2w9xMagyFcmpAADG3m1moRY01eBavFyFaq4FbVpiz/06m7Ys/rYPvxpW9lwNN0+0fKS5QXsOxUyWt5k/gXBpvPAVkDI4zIUIsZNzd3mM7Oy9yktYs+9rTT2d7uejZ9bQH+dmPakPqeyVVkHIuvTawgkonxHwyc846XmBDepNcUiDbudKV7m243coSeAHTjciATwc7xle60MBFVXWWWR0Q719FpgPr5uiJperhse1NCOWA+6ArdwndIXqf3/3x7fT3aPf4P8kHxShvrgkD5OC681r5i70WXf3XN3DHkOF69eR2GiTU8zcd1GOfMZYKuFZlGspoKjmyu016S+snbI9UcrTXc/vBb3LjbPP9eDT5vtlFp5eC5nSyj06KjZxwiWnI8c/G3nnzTv0B/VkXV8vxMtq+YmAq0tc3Ntf7Je7/UFSt4hIraj+ENv9kdjijTjn4uNeWUIsWegqYHsRaAvEsA9qLEGFivZDVte5xH9xpHkHi6SeLOUUhS+oQ8CLmG6VduPw9rJiqEXExyfNQ1HCV/HX7T/oUz3JPkg' + ], + [ + 'oI1zOI5N8szFzHU8/UHEQ8kHKube/Ueeep2VA6AH/p4=', + 'bHzRMWGb8PAf+yBpVLlzewvFj/ZUMKrr', + 'd75y3AqB3TWmuZa0ElyiYHFzbf0IQ0DeTKXk4sE4b/P12C5vvP8c+gJzS9fU6XWjRja2tGPc2GRsNh2FLNfZ6ire63Mr3zBcj2Aluc5y38hPj7GnFsAlirtlEQV7HX4spbOZJMRksMnxTV3duKBXGpU5I1W5L7KvGlMcP2SzUYHW5rzWbyYuRABZz93tMTfkRJOSpxGMaamtYzyUq+4c6UWBK+V2XgI/eBnGFR8y9LGlNd6k9K1zInGake0oiXHi02CDjx7nzD/NJ+BUQhoBdx5zNOK3dw54tBHKo4+GMMQbCGdfvCRMmEZ5yfr2KnVJYsd+6+5w260UziR8vL9wsC2KyMhG0wvY0RWuukYHf3Fc5V8lyVhpOuNuntO/p1oE1RUGDOw4dEJANxAzF2COmPv4pVXv6yFLMyBmRox0RwbkjxP01LM27r97iZbmXBX7S9powbWZmV+OIjSw+dkk9M3aTzBeCDWV8o4vU9a1D04zluWnoC677vWHQypGB7b3hG2/fummvm6qF2AUQqyt4wqeM786Lsh22jVk5Vmbw3Kim8KMh4oF5mlSHHI7ygM/id1E32Qqwj01pwH1wngbgtHRxeRHKyMm3VLV0Bc8gRGF+URzpnAmpZQ/sbWrqSSKfU8GlcAYizUA95p3DcuRBUpVcmc1uzBxOPSsvypVrr69cGiy', + 'E+4sXziVXK3VL4Eh1fNXeRisa/4QCQkRCRq+M+C5/X++uwNL/oD09trfQ0LcpNlDZR4cvj8hBKqHu1WiHlduc5TKs+1d4XVZgxK3lIH4+wVNkNR4l2qZfXARjySejiQcd9vq0mVBNzKDANtYwFUNvQKyu2ZxSpXgCGwJOYb4aq/rJ3JQ/pHLRSh8XB9CSOFH7U9Ply+sQ/P5Z80cXfhGZLLoAVcplHDVJlzaXcSvvGKvns0l3UgoWyOAJ+yAZHNdUCC20wQtwYlAI2PWglPLOd/iGJg6rjpkTegGH7fmrER/+AvY/BPapXYh/FXQ7bCUaS29C5/h2Pr9CopHFu4gv0HNPjI+TAoNygtOHrSCvkyPDh6Kbo8Pf5z97W9EdLUHiQwsG2w4eL/WjyRTOb40KDQqzo3Gkrhe4PcUJoMZW85QhztINzlfi+23Mpnyv3nmeV+lnBNxPvPwFQXUVXclslM8Ldc41FKx51aU7HG1EoRx2TTLZcTwhjAC7jAzjHN2RqLSmbqMFaWUqem2dT3oOyrnkbZlowT0y0XvDLzo8moQk/ufpd5Xxh3ncloyr4+B36y93mkEoVeqIfCGmAV4PuyedOl/j7ZWldd0Ts0P7ST38p0S5FEPD+locMZYgKqqTaqNEieNxNKxxr2/de4aldH9hPLeGbUWEShJtMdMV/ZE5f0vFYImuFGJTXi+L5Qmpf6dng==' + ], + [ + 'hfNbzETJK23Z0iHHFPH/S3HxDulvhKtA086JV61RzeQ=', + 'wGPvSluCKd4m+LcpNfX/b0fcpCUn+X52', + 'q5xv2igAqP5v4JAT8Uzv6CJTrz6Wso2YUywPxqb9k2WD7CGyAxVIRfIinrLC4OYTgQGJqwjSjIbmie8uVqnVa951ifnr84mRVfyT8OBcL+DhiAenssicfjvwH2kJ2TDwpMAWqxb6OEAdOO0r7Mh3XWSG7lc+iQ3sQDsWioVJHtbnC0rNZD1ln4rDGwruaEPJq1gtgW3YIqsYMAbCKVJnVASb8bMBjXDdwL6JVq3Bt6KIqNX+YokWYo+5+8smrLUNbfbSHLskqoLdEoymPiHYKMSns8n1Ocvjpnn5/cYc+8fbi1XhGd+uQkIMENfTjVCAtzITYICGhosghcYMGEE6QEdclgXjcQVFif3MG1JfNJ4ZYTVu0jDdoEyMUDaWVT0unLErOyTO2plyx5oD8CRWdXrCO9Xo192Y7dVfuwktcxxM5UTCZY91zgkU+fZzfErARlEEBLiHj3hfBJRQWMKXJlbV/0F6e7MsE4BgFCsno2Ycw+lWPwWohNBOD+uUro5Qnrn+r8FMywTRc4J9W7yBdQY2/hCX20kA6GmZEzJFywlWF/O7IF04FjaWyBC+xXR05Y5PZa9BiBdqoYZzZC7DUZtLfhowBJJWYbW8pogGz9hE7ATz+JJDNzl22hDU+/xvdGNoUpRrBxeyXro+6MObMWIzqsIGLnBL4LSxn2k4Yr8+lO83pw==', + 'L+SXKc1ODwrrk9f6t8WR2z5njlTSoll2bS2P9sT8e+edWitzdm3TyToXTU8PyZS31ololv8wMgVR+ki+C48IlnUeB52jQXuo1ckhidI5jBP/dzIfXHccTf0AQYr7PXoecWAIOTUj5EPJufM9UfjqhZCW4aWJxubEEuMHNGD26CcXa+gUiVT+uK8BRIiE1U2wAatJtSoxhUkgmeHblLoTdf8/HS9sf73wwjUQguN64a66LV8fOdAf0w+WXTxfMOji1zfPf0Ocjs4mqlRIUcNPlu1xr3CRfln9nVKfnyrh3N6zsNTHQXMLZCLJIDoTBa4ffVD116asPnXT9Mjvn255Egge+SAKVODtDpL2e+rvXfGzmzlS3Yjp6VTJUTO8DHRov+1gsa5DCOF3cM1c54mwN8uSnu6IOqdK7b7Td8L9o2ksOtbYBTtb+M1p5dhhNBYbvXvEe3NZRj7eX4M2Sk3PWFz2KHimiIl5/tqZ7i/Qf4xQn6/fJE9DYfKeKs8re/Khuc7QP6ybkqz2M6Nj4sxxRu8F8qYlPClhU3P42NzF+G2/ZciGEwit7EuKz0UZ2Yf20Y6gsh5IoQ2t8asTEpN359dopfzb0Ih4I9S6HIbEMBMbnSZ8VOhQp1RmtyRNmgF4qY20gPPhokahcSXqhpNI/byaH8pbPEPtl7V30TM9MTTVafHefKZ+g/OmuQRivyJLOpzqWpk=' + ], + [ + 'NeWpHdDOLJIKHNObEsehVHWJjOqpnzKMu3tLyP/G/ig=', + 'LTwd+6IcLHxnDtpn0me5RKsaZN6aS9IZ', + 'YhAcanqciu09vwT49YE71ELcyFySYuc3MJwb9GhL2t8He4eO7aS2d4qQkqLVrNtPZ497ZCdNlldbTHRdKDdRmi97SasaGGrkY9fpvU3Ixlk7Heo0vmLemfCIkc0l2bJfcOBvc3bWxCyqqNM7h/y6IcKC3YNRJEwQjhtAaq63wv9X1vols7KJkJXBlOldyvlzkwJIasavzA9XxOEvvR6Pj1R4OIa0Q1BG1JFAb3BMbbVfdp5qg/O/X40P/88Qv4URK6t2VsfMc8vsl1jnntn9CV0gD9nLP+jJO6z3l/4sdI/EDwJTLbXFmuTTp5VoR/BunADjkrRBty/yPv9ue3Lbeebbr/cl0KCb9YA8JV4KoSlYYqbb5xKJPpPRToAwKKOAZJxoPtdVnhjr9ANuBAuDaIgWSxdzt1rGzUeKaKMU1z4BjPe1dajF06RxdEgfAawklc6syYcZz7YFaVCoIZKePn5wHSxc/iwZNxvgP4ENY6EdrwiRkIxFU2q41JbLywIKALNRq5UnDnKSHznprIX53/x7u4qg9HAlZ9VuorMF2NhoIYC6UDSGpM1p06Icbq26UDd4GwSL3emNJXWCLTi/GUeq01zuvhtGU2C/6TGlfXA4I4Q1rzNzPjjRRVxYpOlySnJzqTCxk5nQhFg49SMDc6rqI7//jqsTYyVYuTEkxsqPz/Hz7mQ=', + 'YJPqVcvcTIytDyiNn9hC/qFJcmPS1YP6+6ccOTjpPM/q/dlLbXAFyh16P6MxXpjDVW6THOU3LRhav8daBBzsRNnITs5cPAbTh6DGu14VKLAxAWL0+ztzGs4MSQpGAv/Uj65hqySjrBFQ7MrAlINrLJ83IaokaUE4HYqxxSQ4116zoA9a5QMTjSzr42MI53naK2Xa8lqZn2h/7WqVsN4az5SNwEmjDQTFmgHgcGrnEAdRVr0PD7XShZ0mCZy4iMkBtcE72ovCFvSghrz+o+KwVXg74iqElpUkO1IHafOTHpMrMnFJ8yfjBwEBEVkY/FnKNGdyK7fVjSEIyWf8T5cji43UAoH2X2a1a6NPGay5TVsR5u0o0dyFtX95Vf3Tmn0dpzjp4zJP3x2phqbYZ4Ougsct0mqCk9PvWqZARHh6EXQLLlvE28ggD3UmQKGo4LpEgUHRl91SlILOde8ZX8Hw1HzvZ+YbfyAl4iQDAn5ZZidzEyzjh06MumL53eOvKxTgxRyNUyMUu1Iem3DG3e1NKdlzxGfpDhJXc5DHtr39hEYN1bJ2tmOpWmWnjS4DeAm2n3a69SXxMZcfB+ohM7qP9rdbPKOBI1ivCTqQUccrrkiV22Dv4vCbdDVNTbIq60YyXkzbJyJ/Q8l2y6vIntkHn8VU22b7EmcBwDyFW+TYsKOs+s83uHl8Cjp4x07dFZz7DmB3ZlGu' + ], + [ + 'm6uKMndGS8cLNe+Ma7uOWshvy4LhdOhopnPKyAQ/LiY=', + 'wKFA32hOl5Nbqxgrymnb9uLJyXrFTOc8', + 'RGYELjEEYJlt6ZbIt4oXChDRhEpaGglhMI/UhC+bIBK0ffRHv76vlk2mVdx4SEHbHbrPpnI233A6wLgirhYIWdaOQGxXg7eXhTNRZ+pl6lv2pd6HzhmdHSkZfgoAWgfVzPLuXt50s2EdXm3O21EBoyMX6B0JJ/etZhE5l7LzwH0gUxybtsgMj6AvvCDhsobbzZsdotRIscTqmLPNInt4PYN6AxJsZ2P+UwwV6Pc30iIL8kTQgsAAe2qsUZvDLbu/qqy1tD5XFD6X6E23K25jJoQnfEFqFS1IOymoMwldIKQ7XkSgdH43WbUqkcrplYyj8d9mDciPWb47VelPU0S+qAx1JahV9TN1LS/VZa1qbKnE/KMpqHCreioePS1u6tObThePIkhYkJX8Yx0XvQdLoaNsNVi5HSI5baVEkpwmUqGO+HBKXvt81/x0S5FySRxk0D+PtRhysfq846OXNd+EUh6jSb0ZjNChDrdACec6PNBGVmeuJz8AHPiIck5kFup1ZLqHfkhTICCuOYmpB8QQUH4nhZMyTErJnmTvy0GvNmY0UqelNwA5B9goSjrtZxBeMKy4qBCTYU8C+1rNZN4Ikq8qIkw6EaL2kd9ac95Z2+u707/VpoAjktKfzOoijemfzAUTAG6QcKi/njjOHQjBlToptbKyb8r4Gneg2MnnMfv6doMoyHAp', + 'La0f5UacjzfKY10lbDmHCRo6PefPOVkP61GAe5Aq/ncQjpZlgRkwmkihM19w+IlRFFfLUNqXoDp9I2MOTgHjSIYZZOT7e2YhNGRTaD6inklNP3OwTcJ5J5jISY2ScVke3ClmN/DiuHKFax4ry8hb7upJNyGkT3SmNCLQm3XY3e/UQt81QRx/04NkB5a71wXNiIuV/djWB8nsz30KwUS/ygusiz6FJ0X9BhnrI26e405slEoDH8svDYUKVSca7HD+LirG1zQ9cQv+HMsPm6Jp1Z6MQpRxTjTC5ftRYVI37CZjEf1DDLdcFyYaMSWTJ1OMvmW8I40hZdZF6ujd1nk05irmvGVoohecUcZHHesJwu9/DwXBOQW2TYls1Sx0q5YQHY0EDcjDxY46oDbHeJbnb7YAWREzahWCUG/JCvnr3rYPrWdFAMpIVhGyesSYKRivIZZfdVfkjZ/Nfay262wZ5i9QAOLmLFlTTevSww1LIVm7q9Crq4IJIEEp9Yv9oTuLwxG4hXvT+tPhoPjC0A6+beK8pg/XSN8XeChP1ma1bH9aMoxmsdeDOhUCjx2Ag+T7vOG7+9ooHpiaNss78xCcGCpuLsjLneNF3XbRA/wq/rYeJZJoH6XAMtqNOQFIOE2tNBfdxZy89x2Mm0JBNnzNpz8bPSygHaQ4jyuFlHyrW/yX3o+gvOgQEMpqnfP3wI5GOa3HtoKw/Q==' + ], + [ + 'PyWdv+qqv7LWzVO7bI1DOWbX7oTZSUBdqyRK2yup/pU=', + '5wS7MfrRjlAQRjaPgH3WOuyxsHlpJctJ', + 'b9ZzD0jzIpPsUIeYhSZ7nP0Hzw4QzzLV3EpWafDQjZliqd1jF5A0a+mUdKME2ZwXzWehT4hAwjsDXQvd+U1evI985tG4smiBDtsgjp5P4ALhX3P0W5/Wf0Fa4vF/vXRfEREwJgNFZNCaAX69CLqENyEGh09HWorRoVOWDfjx+SYurX7uD1R8slvGq6US/nr/QW8zCMkAyMmHS0w568MmEYVbWsUDGGuRvFsY9YWV6sFhx3VmwoK8vun5ktuDaRFazboxA8AoRKpOjI/8gPAje5LYbm+mRPwCpKR3x5oxSy98avqH6pYDI1jMlLMThQj792miExpu2FCJBU5LJkTXT1eMQsAfFJa+LogBw0mbrb15plxAr+GUoWz4sho2nyZl6okj26Rub+40ZinIGd2IdIw21kJH2oLt2BuBCSK3WjaqSVil4M3FB+xsW5j4fcH3n57AhB8bup1sXzoXiPkJp9M5p6rjBprBImSMZGVrLsNp0zi8btHgKz+A8rY9qEod1QTnQimnAUPNw7UBP0660DjqmE974gmEHQKs7MQ5wSDGZjojVddRn+Ba0FeT6yxCd/tnQaOxq3fn5GgX5GqAorTSwdHtnoOX09+7GFzvyURqr93+MA33QM1e/9D+QBda6q9+kM0u7fmYxQ9vuUBymYTrkm0GYDY5gTtVq4yXCi2oBEjXiWtV1g==', + 'tMFdXgXxXgD0wrdAOakhNORNt04VDI7miAHzPlKuc8XlaZZKlfpY96enZlGQR97ybARUeL4b/fX7Ujmwoaf+zYQSH/XtFtAetsKQsohGu37qyoxHUKoL8tXS0sP8czVJGrk2+KTKUuo1iVorK4WLFS02+3CIhhe+Yyi8G+aqpeomjlm7rdkcHIJwQDfqh0WAbvGnJXV2K2G3OhxjCuPDOjP2amYt3HQYOQgxB9bt7Y5tCdG0SYBgNor7MDiSDkgQslrgRylIJwzds38OPhBlT8ma7sqKXiuOmsBt2wlCvNoR4C6oAMvSa9c0Czk5TYfLLHXdK/0NYlYZCLkrwPXLnOpqDV/D43CBjg76NhCwLo13g3x6uLpB3X5gJMX36t8asIGRBfs0zYwmV1n/7yr62Dwg6TwHXoxOhOWSVI+ckyiSqKRP09GZcYBwMteF7W9zWtfX1+Y1V9ivRu2Lyrhkhn6s6ijpGZdFztrqYQGgfUMTuQE854MG1Ixa/YGI82H++HT8DMqoCMf4Q24KkQjo1pBWZe6YdVInTVn/DlFsNZPKY/GaQeUY3V/oafxSTj64dIK4lQSIdlrUj+lA7ikhnBIZWrX1cF4Ypv+aZbbbdHSBEgNsLzIVo/PyOo16dKoGuSJsKgfODYYleMROTi65pNMV60dnrNNT52+pDCLJrDnq0ZFQTmiNzMsa1EDWmRX3lxa1woljh8M=' + ], + [ + 'lduisuMJ0IOTrAkafb9eLy+TWGLlxVw5SlI4kNHOgS0=', + 'QaQpoJ+zyk+6+EFSpv8w4LQVNzdEqpqe', + 'evP5BwN7EbtZ/u4trTnV69KuvVmNrTxp8bD22n696OxWJIajgF2Ler9Dq05/96b/aEfKJEVuvFzQaScgn11iVRPMJsN70Pytayd3G7lDpRruHXBS+/Q/QcPH8v+RGmRgK8rCyMhGFTb1HnFANNfJ2dFgzr4uDd35G6hc23sr+3wO7IVQML/jbtTsMt/YzWRXZXXisM2IU3PeMdCohWDxpI5X/SQ/i+0EsxIfcVx2/9EmwcJRyEqr9tQ/P0jnjlsJGlRImRxwwKSJSYzxPb+Aj0GoIrSmVO5T8cVIhZL3xkFE2sJs8f2/rywf/844nMvnroRSx4HoISQsWanN/krMa85RTV0UQCz4QzbONHv4IHKb+mC5jQH2Ke3QkGsHR5bIqDfKwXi0jZ0PI/JpeI/qXs8SmgUPuAnGPti5Lp8QgTbIpa/sCY42zTpc/IoSd0X4F9PMpUJwOS0UJ2HFCsYq65HSrscocjQNfYmiIyS/DptHTHthu+QnCtdimYDC5V+jFnrKHXjPfAUsWms0e3PX71qP2UnuHpkcg2CU0XfXU5TfsCbLA0SDmLwDmAzmnx7KuOjVO1c6H3eyuFr9DAOxZTm8Psv4CY6ghQRvyHNjhEF+fTnWw4umHG1mMOgXKHpclx0o8zFXpIShwBKJ79CsIP3ACPIFuGIyc2XJLoXzSkEPbNgiOzLmVOw=', + 'dARLn4xSbM2p60f2MQSFcRcXS+8NmmH+SVoy7P4Bu0GoCGBD31Nl9R7TkWz3h4tu8OfAgRdxnpxya6OaRa6xhgx+oMR8aeNHXqT09arE6gVE9rL/CchxSkJge0grwQhYm1iXoOGEiBxrF2z4mjnLsOeeJvfK6+Xq7T+IALLOCV+lV+lu46Ccmrgn44QJW7/pyqEApRK4f/1YqliesOtpq0x+aMnAG/4yLmrrGHUkKKrmbpQXZhuiQCc/r5pFu5lfD1ONKCFZ4tTciqWoO2H80lILp47vVmqUjmkWJiGDCXPSe2jD/3Oo8ZwCmKAe10x/wXI8zAcqaKni73fPQfnBn9eEWbKyhn8fnE2fb0xSDl/MqqHv51iYVHyYCBw3MUcmwi2UK7qx+23Bx+caS2k0tfwR8dBAX+MtJSWEvih/MQ3GFm1r8udd5hx1l/8e6PYQJR8qpQTPfJB0eVEqe21NlS2vnvMS2nnNg+nOIqbdTHBW+7H8lQzx2oO3JTvjCWk7jVPXDbHKQULBX6SDhIxW2B1u+MqliCgwYvoWIDeYcpZpP7Z7GHo14iFCvRRnb4IpDbDEjULBKe+7glnOKCzJLtuSpn1jhSw9VTqqRq+r23k6VyusAcJ08iLOZL/WQN8r6eljKJ+RwZZby9Fp4Z0pP3pRLUTVCgAI9wqCA2Lxq6QJGbkm96xMp524xTG+qJCkdlrhDYcx1Xdy' + ], + [ + 'X/gY6xzaXfb7K2YaE+ARrUgImlLBBwnOrP5znt0OsBA=', + 'LL48bwesV7rl0otdIiVxy2yvKEh3HJct', + 'YaIURPYhRx7YCRux8nP9RWJbtuIPe35McbzSJG70/hdId1Ag9Kh8zjASc0t7QyaWFfg2fcISZoS/C4Ya2yF+svNxwT83l8gda8PHZTenVTAmxVACH0Aq41IXOuNftrDfzAWn4J9XNJZAB3v2yR+JuA8kZQwp7MNZB0xRMUvP5vNaDqdcJ6vrGcpdg9ochsoeAV07scJIQb/QPA33AV6aM+0tmaT7rQ0L/8HsN66dDZ9w8TzdMRpElMH8fn8/uhBvfKsktTGkGlFPxgiAiS0TsCc8uGvVmTIawyezCI9FNBPNro9rB58y7XYCkRwEDVwJaDgBJlr+JDHxCP8v3KwAdiOGP4S6RmdHcGcw6yKPNoj1IS74QjS+WNoisVJi83ESaYTtvF1miHFQgkLrd8/KiTFkzKESdmDEOYBZQpjMF1mCaG9sk2DI1S0dkir5dxnBagveiOzsicg8K4wTy4Dw+I1jbR7FjwnuEYDE1KIYjUtt+TUsoejqqjEiS8BgwzpyXWZ5rtB/WocHEzQV7QP/z51eey6AAibl8vuKRrt2B5nK8OyMgORibhYEfUgYgCVNCkYJJAdyhnJw9VdxPFe1BDLneBchvcO5VIpE/jXt0GeYWVEjaSRRsCkWi4s1GQUjzl36lqJns4evcADggvbuumg61brk5emxhnH5EMCYgns3CfWzoJAWgS/w', + '335kB46NRUHmREx86xQzcdwerH6+uXuCsgbngW7k1MABKHPk3I+Q97bDABfjEgG1Yy+4e86xUs00lnhgMfuFGAgS3GXZr/Nq75JrIIp9216oATpvAWVZONMiOZjStklG0xK5NvWrcdQDi+OXAo+sQ0wfWh80HcWIL3bSsOJ9P+QAYOONid2qU4txbzQCxfYp/COZgqnOavN1wupUMvlJdqcgmDujlaeY+X14vqC44icSfIZtNz+3mLq0vcmu0Ln1mfOmcoPr7RGNn0L/1KZjZcdmFQ4RMAVfc0FuLMPbEAxnUj3HefXp2rQ7ejItyrFNAl+Iprer/9b07+JIULKr7qY6yViDcfZ1vlMDKXrCQuMGKP2OlUUsa4hs52lI3GCRqChERYHzGO6Nhj1126TOiSoTcq0syJavlSfuwYZkSq5Yc5JgfoTuHmjyPS/CNe3dm9m5dOdTtVdgLAT6JO//rbNDKpjYBJxHxGbkv86dVWowB0LXpO59zm2plpVo10QaBJoZH6pVr3w7KkUtyMsf1ugsm4Q55bpwaDJ87TBtzommjgpS+12xu94lKAZe/LSgiFG3+jlg5IBpmp1XquKQYxL0m8dvhtICa3CG8Ob/bpSf5mZqB0mIoDcXf9R2SnZMHlg2ip9vF4fvmwTJptIxZoR/eNhYDStqkFSqtAtwbs1jArbFRvX10dqEuPdny4i5t9TcQ6U4v35njw==' + ], + [ + 'XjQSj3KSjkP0wecJifW96/nbk4dQtJI/RHI0Y9OdMDc=', + 'F8uaG2wBLasAbm53/Cv956IuN4IqVZ9U', + 'KPB9O05KYeCIovK/eygBIW2fPtL09uFq2lQRzVW3pwK1ZQKwC2nR/I1Zm4erehNCZPu/CsCYm8CZfMRhSlHcnZZOm4KY9JlLFRH4qcZbs8wPlaENQjPIEVeZ2h4hRkQme0ENPmbd2tR9re+WG/vxvRlW+RqJWJjxPx32aMJkl4ztgHP13UR59GeFj24spykJzu8U3iED5MQtZSyRujgsiQzagFZC+Jo1itveO+i9dtrc6sE/q3VQbJkOtFEJ4s9Vw48iWI7tOoXZ0cgX26PkObyMQK9yW8YAZzEtwYqiYSztoUQ+hooUOsvd4+WY8J+tdFjs7gzNguvRbRHwAJMuXoddxBWNebcwr6peWt34MOgiOVdYczMxN2pJfZa3tH7w+eknXrAZtxDOJ7eSis1gIcP/nl/Ls1nzw/IMLdoEVUmWUopINvPT4B2egoATyrSc2RAizYXtX0ovvvEXqUE5EiTg3SNnaIU9kM2qK+zP/PouKJBf2BSkaFmMt5BNxzu4tgwW/kXAPY6YLZKGbupfyUK5pi04ROwb6WDrHzMvkcFiTzw7MIrVo5ym7ky5HLk1UE1TPJElt+nDDNcMwAQEKJMnUwhK6i899YsBGQONzIDz4iwWEW4WAXHtjUy/uF8riQjbk8lHLF1M9MPn6dAWDo0Rwh+7h6I2buSddoojDQg7HzIXYexAJkpV7g==', + 'oGaEmuwZn6XAJL2i0X6/YfGeVxysWbOnv6oT97K0XdsBzeQ5g69OPhwofegtSK16ldVJZnD3EfFksziKWfpx29Te5UU8gj2eTbuPJxM8UYaXMposhO3yJrLP5XoXJ9k2VOZWxl/XFKRnnppCgXY0opy+LaPtp304dnkjvYxyS7XFMPIEeNGu+5Pt86h3zxsNt6fSsCsLLLyN3evFWGCh+DZYQD0bm0jOvDf/lm4ab2QSqDQ66ciSsZGo+Hnaxo6tYNO7DLT7neuzQmH0kqN1TxwjYkFQbymidQyQkHRQOdZpYF/HOCkIYaj/24fNM91KuoKUqI4ooEYvsy01hFgfMGDToazBWSEivEBcyo9FFBIsZsjfwSUDY/lGVCkxZGgcWnP3HfkZ79NABI22XqK0gybuUzIsaR3/dlnwC10A/jwFJeSXNHhtAA6rLsh8fKNlYdhcK0r8/4v/GdasJp9tO5HtcJMd2sm12fpOaGU6w2zH7IUEkWzLoNfveI1MireVUf3/95oTd0YCbGZGYKeL9BryB7Xs21sP0ysm6ncapLMu6BZNicus4U9638oRvUXdKCwnrM45/bFM64plG3kv/UOgsnQu6xLuJF5BBUXk+K10RNIOKOMc5KCtNOpT8gxjKMmoSE0BEDYOepz5rXrMTNLHXQ/fU1m3MdXnm0DsxoLtCgiy5E1OdcNNWldqjWU+MpHAF9TN3qHgirc=' + ], + [ + 'iWqRAPnkdSGRSPs/VU53Zrj1C1zA2oNBikdQbRc80LI=', + 'rT//QSk8v275BNVh7gqlZODtf4+ZMyVn', + 'bGMx1X1REsn31ZVD+ODNZtxg2vJM9BIrtMBBZAWnW67pQxvcvyA2SYmZIiJrtbsvGqU04CTQ+Hn3+IhmvS/jnmcFN7TiNtIX7ZX37nBZYXKTQPFgyf/7vfykO/bjd/RvRFlRq2MC/OzAj4A7b2H4ErQsRSS1Cae3NraPRjPLa9+SlwEk8JwpkH5HeGtEOUMi2cyHGN5iFb5hmkY4LlUWUtea81800rPODAHOIhJogTKYu6GM44tAIC/TCRQ33vGkBvuhCgDguF2SWvy99SMj/PT0zzFH0z8FPTXKUPvEeGTZAYVBOm5LtgZshdYnY+hkHH4JmLt7jXiDX7cO17N75dEtjHEn89mxVFUDi+HvC8G12Bn29BuOHKckT+ydOZC4d1xSWFJBD8hG9jkVJvROswha0FyS8ahoyZhTsNy+GnRHo4Xtv/o1G0MHJuZz2/Z+cAlob4wUVWANeuGA+OEQzaAtHG0cYjnfmBT06TEcPb62lsjZw1OMc+PC5kGkgyXugOXl08k/DNm24PosImxAZ+LbqxypOLiyq0yZ+xb1JZEeRvwb3xRT0Porx/j0PeMR3i5TH2Hw9iO50oGZ36ZQcKXJOJ0vvLbfGVDMFWU+jYLTdtu1pDkc8lAGCjYWrv+B9snC7J/l+PiAl3RQvwG+zXauA4cRNK40ie1U/oKUZIhBRtSfOMw7abc5LTk=', + 'cVwliqYPYc0Am/2Xf2FTJb9dLq60073oKjXSI1GllenMo1JL0VWlGqmjtKe3laHgTmku/NVupDi69rEx7QYRWZZXErTf71Yt8IsEkWHKpvu1qTwpgMHKaOJpf3GRQIxnX2pyKlR0uPQzIQzK/qePUA+LS1S/1FKX1eBjL156d1yIk1UgHyCCvn9al5Qdip28FoPWYRdhjiDFelB0HORGhp7a7gYf6BlDebhQoOmLqTNGFN5aYfEoiyhs1So0WmhsAtn3qPSoe89Ot2eDvfo3N8qCBnSUwc/0LfYBiaXczTWJikcWxGtGenZjA+jAoMgAm1sGNWb0z/w3B3zoKafBFirbkLpCsr14KgHksC9xQFrF5H1smpuluCVqVNFNJDvQ2ktsfCl9sKKWa1SRmBMpCjiE1kZk6VlYBA5RZSACNTKN5sboR/YelniaRHcf6M0q7yH5L2p9cNGauefjr6HoXVHg2+8Re9rCowaI5m2nFcX/R3viJ9McFAZU4zN14Jz+d+m5C2WNUaLghyOeanFdP8CjJMl8lJlrex+zHdXxn6MlkpGy1X46VQVmeNclttKU5YWr2GFwz4+Pp9LhNwfgY227I20huXGudnJpR5+CAQjq1rDo+1DXg0FqeYZbEVzvOKlIw+5kT9Xpvq0C1tkV44M29IShhwYR2a6sHBAnGNtg9mMnuBa/wtCgds8baRhitlVlfKA8DVaMaLqW' + ], + [ + 'ZdKthX1N5/nClsDndkveaDtpo4bFeu5rzrxB/W/Dsug=', + '9Q78EegJs9ciJWnyjYrqlbaWt2ad9YaM', + '4/e+0cYe86bNdFjSge/t/w0KDr9UNPD6kO0IKgvlLjEa1hD7Hfc/aaB7C4Du6hsiA4BgwuLyyjbHZYeYPlPaL1CKkPsovhL06rM6cMqpuwrBsuvDEsM8el/+vy3QVDw4I2eCeVCVMg4p7fLBEEL7+3tPXAjf7czAmRDo8aOWl24IgxKvqf/fMMKhfyYi1d7sZLN7tVCUzFVD9nOJMXHbXClBHhxlk7JKUR2nbXaRv51cfByC5hnCoR6xUiBiyggXQABXLB5HDcr+rieRbXJPNb85lMfXW6LQLSxF8KexdxORmpsLOib292WV7+nwPQiMDdU6bsS4mssFmWSDCFfKWVBQP8t8lqEG5g8LvnGwjQKbIy92f0/rBph4fMhtOXgiIfDtIS9ChWg6kTO2VkWDYG05e7V0y51I7PyaMN8z5mpI9Xwr6+XWhz1t/mwqe8Qi2QZaNirUMlPyb8OLFdfSjMWxO3Aol/xnq6QDAqwuJVIS685tBmbGUjKPLhPG22zB5jxb4Rw6tCv2kzuWuHBAcMAI+XRtlCdlY5ardjjTNImatMzKVRCI1+LIrIRuVFysh7WNRuSu2SFqlzSVTk4kvleBM95+/wnw5GKaHSu2SyS/k1AyxO9fGnC1QBLLeBmvwUcbKIC1ioeVl5ujtGdn9COc0xb4GjGtZu2s25xtlpfm1HVvHib9nG5dLCEW', + 'x7slXMJ7hmri/tORoKPjqwGcIla0MUo4uim4+Xo+MOk5y7fnaZpLfTFbyEccuzj59i3dAdYAfVYEB7DClVHqxwsG4tbxB8I9eFJqRSMJ57d/H0hJ22On3J115VmMfhlpjk8Tvf53I5/j0RIeC2YV5fjFedzBzRQrcw0bMRUAknhxdF0LFugdlVmfo2AU4TDs703WMb1qccOsUY9cbdFKjJZBKzEWE5an3Tt8prcqk+F4fORiAL+iOz6vIx684HpxKfDrQP4jcdhdyNoYuXxE5W529JODvKw7jCtqUwrz+aQVQqZMXrYqu0kP6gppO1D2FWASwuQHxyfbh3BdhC4HsjjAxSBheVr2ZGQlSj8B4MJu5cygrCg1anMJ9D+IuAPHPALXFOV1EsJaM2EUxySGl7ObG18dRGF/P0fTJkSEmnz455txL+vAmhaCTxxxNiAYaG97MrRuVRaTeKFNL4QkRZyv1QD58mF6tNe8m0O4Jl+GU/dNVTtgpLf/OX+7DaoEFTI0MCsAYwL4jZSd8k8NJqnSLaL3Fap5WMCEYcg6l461pzvSpgM1IJ/Tec1nTx/fsGRk2riPQqAMSLJW0MyJbFZsPYT4q8DNHdKVO0eSLMffa6EojLpi2hfiDgIQLMerKadCKCoRh7jy717D0K3+YLR+1sRN8c2qLDwHPN7aO8p/L3BEdKY4DXBHk+giv/f0teJTLPPhSSEczz1UnQ==' + ], + [ + 'UJ1KKBu1m13r4I3ihb58LpEu1MHayfX4E6hvQ0UHz/s=', + 'zxdDHri0+rR21/MebYrqdFB9ia28+FfJ', + 'PJncvnp9Bi1Co9XDTlJrOhEv+d3DPmGxvfYgtNtoC+8o0++RJd4yj5umWYFdf1ZDXNIztUoEDGWdJxTlNjx3Lnt7fZJzu2EvlXSVcIDMILbwUBU3nzuonOzB3p2K4l6BII2Kuslt5jizHXq2Rkbm/0r6OghvdhXjBgHZKDfZ1KI6vMlK2zs3FSlGPCbYykpB1fG0rIZiPyXUEyl3T7tru+IEmAJ/b67JDlWsMOuVsalJO2t28aZKLiIh1eT/IUIo7FpNaOnLnwFTEmSGfJb1uVCt8TrZDK+MhmIllqB4C1wZ8cE7/Pf5G7l0dklCwveo1AmVdnJoTNewW9fIYmSEwiurrR2ovezSgU6DISHBdBvnCAtvQjo9d/VWlBjbSI6xaKBJjVBSICtsKuhBV36UhULVeS6ESF1zkw5ppzvWUZR+/AYQ49Lf4Zl35w0zmbws6VkiUIRFNpu5U0oxMW6Q/Pr3SSFFZ/kWOIsAg5QKcewLToEXvV53wpJMw5+XLy+aY57eEcepCO5IkgOXX36epG+FvdX07lwUlwPlS9zkyalZKh72vGfLhTgO+uJZLp95e9nWsB97Uaq6tx0J6AMJEJUwrG2xVx7Lx/C2cjqPbuv8UNcz+yQdwM6MzlUo1PES7+kA+EKx0rdP/rr34PPD8gWFaEs8W8u4FwsWNPGgt1ATddUvlKhQHc79akFFOw==', + 'ybsdmnSIJUkvS1m/hPgDbfFY7zjExfDpBMc0n4R9IsfVfnXjnuHzENQ7a9aOeICX0TsGUxUWy0McD/g/XY8uh44iYqVxRtjfOOeSkDkCyIcL3v9NMRtH/PGJUaXdWTvWy1XwbiSTaFE7aELNP53lk0aF7nGJ3U+xedC2WiInlUkxIG3nj5FsnIDyck6f//KudpL3IOoQkCxYmd2Ba4/8lvuC3ifgxsb/0P/Q2C/U3xfNzzmH8UtFgDl1Rlokqv4Bb2jR0sH7n8kELM2VW28QU3u4YZo2BJwaPF5aInqrdtaAdmUj7r9mnzDAW1vsdgfd5gHC4m6ZgApR9Wrm8IlH5YImKDHiyXAiqv4xd1s/ZIeX+UDjIQDdnFWI+dTz8p49R53IYtbcjamj2OHZ3DfAInn8py2T4B5Wy4d5alX95SE+rrjcS1nnq9B6k4+UbMdXUPdyU1o/7G03fb+hE3Cxigmxfp8ZxyaDuIcs7OB8KxGWJqs3md9jGLbfgHd1y6+1Afi0yV2Qd8c7bpXtbrGnapxk6yktW5wj3vRr40kyw3z0v5CMkMSAFM8GMVWRkf1xd9ZPrJQPzYgGgnz+u419auQxui2m04IkMsCf0HCUtRRknSgl5JuRjhY6rEneQ0z3WeVDO6AAK5+igFk2UBHmtBaAhl7MeKM7cS7RNqCiJz9NAwnBqZkB5N7MSbR/oJIM/hz40F9AN1OaRx2lho8=' + ], + [ + 'F033nQpFlY1IWsvwm53/etjZdaELQwimsqPfkzbZF7M=', + 'BNe/laSdVWz28v8h+5HYWnQ7CddLYYaA', + 'exkdB5PVD07GXiVpp8iGKUCkLbFfHiIsAu/KUJt1tR7r6BOymVoad503RjCCTA7P1b1vGFDARnRPEcwPZAqRvHDWUEZnsuYmRYXdY0cDD4JTdAqc1JZLQw7qesVMD9rFgSn8gEzVtBl12GAcSMzBdPFHFdxIOy6A38nV9h4ONHA8nvx+oBx7PN++ivkwmLrelqs1CiPP7Eh8b7LxDqOOtx5EjMoUkPzlx9BEwPqWD2QVrYkkrUrj8eYOUzABPJnQC1w2db1InNwyQDhvO50J33qplXgfb8P+NloInT9XiA6EjxP8Ood0OiSY9kDTFOnsgAV8va2g6BxAhU/Tao4mL55guRjEvi+eh0zoVEVXDT0kvNs/gZG4KADzdSB8qngMKlwEsq+md5KDKcBsOjEMccKrq7bcw/MokPi37i7Ggo1oyF0LN1FJsn67UzRt0myyg7ewAgb18Zrus21wS2HStaLFfvjDTp5eY3/ehIdBA0o/nIq6Dhqbm0ghV7z+CBMTVKy7oTzLL0QbwMTMNzsw8qKPcObJ2IVOzznAUsWuLMJCVv+CQuaQAlLtyjS6nbRwVIKcY7Wa/W/dY13Tlgtf17IDha83CIkxXll7jOztvtQUpOpN11eGai/LEYCLoGiDgFdH7zlSruWdcnpRVOQ89vss/6PK7pHqnV++rHwe+z94xjLeupjYo7C0Geatfc0=', + '7mf8w2101gVkkxp4M1zoN7nRb7oM7i9UTCsmrGnVk3HC8CywEbHJERPEX56rjfqCYGnbkVSvs4Siw/CiYgMPvTkVSiiRV1yt+DzE79UGmmVoVVHkn6L32Yab0T3PWpDiH3KIjHA8JZjxsOmgFiOrJfJUhJg11Ek3gJ0qJI0dcSHpC7+sw1HcJu2OFnnUdzHJSXPVsQZxaWw4hgRULZbvCbb63fVk2NHBZAybk7HDI1/NwhQ4B41nQaNTpVP9RMFkhLwbK8IXYAQX44mQcH0j576Vhxuk2ZKXUoiyr4l9qKiB+26Kw21f4B8N9cLD8ArU/6gCzd66BAdxU8bO59EqK/DO5gjXaR9oQxpoLlglwBrZLNOa8pgmKWhoWaIyPmS5kLgUg5Y+cJlFUEtbex43URLqJNElsTG3S5PfHLj4eiuqiX68FUWGHukrIPu2JY1o5bJeAjXvl+noPMJvU/5AQZgdtK9kb/jqDQvscE73rpDnuGrHNowdtcjR9lVJE3eTCglv8gCaNc3uLKgIhuk0JjrmFfpnYaJ3Mt5bGNP8axw+Ff7PWqP053EjrzNGs6Q8qsFYhW0Q5WXuAOnR0SFueWf8u3FMquxQElZW72vMEa68SVSNkmzpIeorCu5H/C7a8m+ADRzDCYKLcPF6Auoj1crBbatlnqE0gSrnooQhI2NazKjNkVFgDRxVfwquM+DxwddRbw3KZRkJIyMVQTmy' + ], + [ + 'OKh5/fsikvmAFIJT9gYEtobdZyD3d9qk+gQWj1veL/0=', + 'WMgbk8eJwLkt1QPIv+3+kvx9dz/Skjau', + '7knWvv7Bn2kBh0fhCd0Sxre1Y7mvBnsIL/WUaa3lYUe2DpB0E7yUlpClyaG6fH/xTERNAMmgMd9kGxAPyh2LHv0doa/IuMaw9AWvbWFW3+kKMxiLhKNNg1BiZH6GcPvXHUuNHZ9+0bxSG1rL9IDFXHbqpKdIcYkMD6PufvX37BuE6oxdJ7/FhfHFKwZAvfDZ7WRf+EKbv8kfixnudPKmOBrjNCgWGNwHp3wnTLMfwbCqhJDoGdeIzz0UF6GkXciWuY9CzGgBaSY/XbkoRb7tZS8Sic42CPLJwG+ghDyvTxnezecGxQe5cxrORz9JFahI01yUcRkb4TOUuDnv9oVy2qFJTNKKOOTLsNSZdxzu8BopZl9GbiBf7WTaDOZAxIh9spRKBfOaA5xlSrvEhYl9qXG742aInNggLRHdMTcmzxL3TEHpOLhWosX3hb2Tv86jxT8aZar3LUhcupXrJe5DekezdBIggwEuZn+yuTGrDNzUQN0VUk4A/HeWNf5DfN+HKXeuZYpOqEb6eobm6+RyTqrWMPWgVgvx8Dcwp/yroQ0eGlO6MH07rBTpM+jVZGZQl3pEccfIEi/MVNFQvM6szL3mZXbKdpkLhqTx6N8zWTupjt6ltCxhCsMGU16dBbwN00yuaYA8KI1VlHC0je0GmSwia+IrowsUqmw1HCtaMWm4gCHbptxAdy+0xNM9rhnj', + 'MU4ViO/icCrpn6aQActijXW9ZSMbnREF1XQ7PJAHBuEsyxCFgJ5jYDAbVDqeucSi9ZwPjPjJUltFnLoswbrYqHQScM5zkz+Pts3p54EcbaBqESzGhzvDFYdxRVscrSpKByamzJj5Q8JEj85GgLIWUynnEx8bw54giYzsCecENW7pjTNG+hDX+iVn6A3iXYP4gc8bwY7q7q76Z0WpWa5n+xQ94MtRGgJJZfIlVtBD9an7D1/5iVcUNRIWLDpw4QbNhFstE4odTQgx/f5YWFIbzn6XeL3lEB2LRvV9O0ZUFA7e+qJGH3FzcT7n4+Fcjk/CXEtRdSIGIJtx6jk3xcFdMPD01NcNEWQsHiN6zwoJrkLJs9f0noCz/bPhqPKZ1d7u4Mv44aCuoLSdCiuqa7YAbyBNuXBlcvp7vbKeC5tltX6mYSRm8Q2PF0leBQ7irp4o3BTT369Hv8aSdLkU3WzmXEnGnhyYfRr5VoRm3s1pmAhD4JIKQz/rW36N8jbjSIheZhvNqN0WqzdWlMFf1qGVf7GsoeqgD0XZ7cFkKELqLP71Zvt2+ov3PT6VpK1QIhrtto4H9yputHqz3KbcjfDG0ouw7t/Ip1F+Fg95ZTW3w2LNFU8n4BL2A/nJ1nazXitu1StHMhBWFDjguMGxzsyYilCHBJ2/L9plvs9u3LLkDvNO066OZ8lAy1UrZ/fMgTY75natPcdvLzfcMA7inOLc/A==' + ], + [ + 'lk8rtTQhj00dWzVawkCBae7zJfwiejdpSWzRNiBYWcE=', + 'UIKauSTIxWoa3HOI0EWUKucT6R/d3Gki', + 'AfIyS2Y0JqJZoSICE0AoKKW5P/NXmRDbKBCJDNkCou/gpfWrgHagI/JbZg4+wyoNadh5iiWWd1j+Naa72gBab2BOzO2RMdsPoinV5Ei6tjdYhMbmBwmC+bsXnjqN86qK/8FSvXVf2bt7dULyXHV50EHqWV8KecXaMEhaYyqcTtrahGKy/gSpn7rruhCvohrcBW40rT0ZrcxMdS/u9e33Fse4xJ4wfsL3IYT8syhX+KiNs1AoTGy6qlAWBhCEmyXIyEwfsJtHfx9sECHfF1R7d04ciX5yVtmNyjXWaLiZ0VjRyYyNbcECBvPR0coOhx4SSLGU99aiMiFUfaWDIvRjlKXKT3zIgvjRY3vRQIcxIkdpZL5dGVHXmnfK5BL0QjvvYaUq70jNMpEJqCArslIQIsoL/UZ4w1af2E18YtW+6Rtfjf87U+V5HknfFdyoDKrdETPm2ZJjRAPF8lA4Zg0hgaRE8WRymcPDQ6DoaykFIRPSsdIdTGZK/RunkcwAmER/UK46nCBgnb1umeb1kRWjvCn/oR6lfvn6xOqExEG8/aB7PsuSyuNg/OKRNzvkUvCLz3QRjvu83CI+WcuaE91NzY9RKH80rh9VMElCXqTgaArEM3Lz+HmRVJsjUC/0+yz2BWi9GqfUEM8div10wENSDOpv4HC7wY0nyVsCMx/2lKrf2m4JRIpbChE/Ee9P88FUVQ==', + 'Wynjxboow1cOHUru+2O0N9UI21GzSnS4wJ2CXd2MT+9jq/Wgd5bIarQa+s+5JGwx8nsjRnj5/VEieX2KvT0/QSoNoh94CH08bO9QEbt0Fet8AWkJTwM4NK4JhRGjjkk/keZcghUf42NOQxhpqYpVBDnwUQotZpfgeyunWZUIf41tOLXDangkc0Rr8KKm8wckrCk0tW4SaW7HaelChzVHHvTLTRJLXyoPKGLiIAgni2coOmjTuVqa7bV2XJWwOkIWyvWU40ib6mAoMTxl38QvPizn1tIANiq2JPoLCCjc1H/awlXYkwHgCBhWbn5ArRsYhl3aFhfbt1hutQU7hjUbYpDZN1dgt4BjPDuoFAd+pqu7BkEP5sszKDTpTJ5ZLSEjQqvzNLZwpX26lNzpoI39eI7QUqAayGwhlRk7VFa7vJGRfRDastGm2+VC6UV8obW7Xv9jUUV78GUftfneb7+nkC/aNrsz/BZG91nQcdnuK5TXB8WKjsicYnxHxW1drX7O7h6XAR6MHGty/S/FVZhHXnNQ/4M6iEZ7VeWeLim9ABmE/ZujKgPJcAKe/hJ0WMBBC9/HEwEOuGLRA/ABpVPIRwES4XIxaBsgYmnpj/YeCy2n+XHCNdQrSXSLYNsFyRfL8b7Q26HJBX4g2xLOeQse9QquWHOq2ZAKLBQAxnALp1BW3oVcdH89/dsqgnvwm2jHS0L/XmVbwBU+89paQV4BacE=' + ], + [ + '4sq9GoouCE0PPLzpmKZict9mQX3t3YgF1kF6hF7xC4Q=', + 'cktXKIoQISJaq8DWpWOQ4j409W3M8XEe', + 'M0yWbRoGfxo7wxWLlv1XIINHzaxjyZGvbvDxr+8MCCN51xo3Zkll/PTY6ClIqi6iMoiTIVBRjfiiBsXvmi0KuMjW0zxHk0ZeGIrwYnbfncV+4FtLfddsWMr/0fjC8Rn3b5sn2u0D1IWRzi1E7+xkXFMMKDfhhp9PvdDuzt9avUjbRYrbaX9NlSAHRBJLDOos97Dg9DEo3YJPEu9yxe86gndbTqqV/HOliMxH9hbZnP2UdAGSbSCXZD2Op/e2f02P1ncyhMtxG77k/64TftkNDqkYQeyFyD76rLk6lrcQvMdowqNXQzxvsHbs4O62Ctb33+uWk24W3BOIzFOam4dUHxBDsw44KJ5dDUxYICEm7nhDj/ggV8e3JnqmIw9vcjnu3Gh9BXaMHJX9xBjM+3T6K/52i5QCCq2+N4m/QeItpbMLxFqp22/r8Ffmbck3ke3rF+SfV8QwUicc/9r/hQjs6bJZEyNsUZOz9q5orO3Ej80q+cOP6F5rWIYBaQ4YUvAqJvqSSjPChKvSBFjakSe+sDvOiBYJ1UjQgy9npgoDF78i3Wq8IKRCIVAXmdAU7jvzQAb5X0ovTx8UrqAUaarLsIe4OG+ILuaYl9m4gPxLDDVT8f/Y7EpeGNCW8Iq8N3iyegHCsyMmzXsXXQ0RaPqteNJ8aTSjc6bstxp0c6mj1DRnd3qOSH7iPqsd+74zTTHkJuU=', + 'QPvtrnbxrn5Nv5BtGg3kXzyPdyxn/GmKANPfM7XRwYEXzz3e4AQUF3683FAKaFRK94LoQzEP/vjd8MNalHohKVKGMxUeZZ42TgfDW8FKdelB10NRmgrIy/reKd0o08ccu5Ji7a57rMYSl5+E1bb0vwSNMa6PDDE5MUGR8vxNirZ6nDvna0dAyS9TLQP+oPWoyLGYHalK8zUaRfl5qnCgkWbtmjVYN85ZR/yHJYv8tutrejpdgamBRjPZPoDUjV+aa4neUPD8UHUpJo+1vixgXLTFDElSMfEgm0MH842fn3HeiOS3/VbaWwx2W7tGdlfQcFmmBtzG64pLUX9JjQVNQfvUHTfF8q+ZW57TD5goDai6M5acuemjkNB53HISyNX6OV3wksauhzcjc7Bc7WvazFpp7srtdxHQBZ3H7tSyRfeYbyEewoP6HVA1xh/5Cv/RY6ZIAp8ppIa2TffdmlL3cdHjDj1/91FKvEfhvFh81E39AMGzFFCCboW4lFSSFB3XZXzuEOPOmqgAHETpKIHV/6SVd29W3TBGc13TQmn6jORNJiZ6ShUWrzIj7oUXVZ+0IiTSjaFxrSmDnBoOVgKzVMmlW0MuIegprAPztoTujyYpFWb32mRSXwM/qYo/5lTI+WNQiYIwdAbwwvAAZTqZkxtv2dcqDwo4ifUlZPA9FfZ7MAZ89tiVRgilzhH5Q5guU2BIvj7NGcnBhdNlJdomfLx8' + ], + [ + '+lf3mBrc3szoo5dfTQoz3tI3CIODqB5YAMSuBIk0d4E=', + 'DUmzpB3GOxNupwfyZYHWcJUMYKMXyBbZ', + 'ftEJx0dJ3tV1hrJLgAZPoR0pFAtI/w3qQBebVJHP3c3JznlZV4sLgKUwrv1nAEFhmWb1LzWqjoQZjz4+RZCmbNH9RqMytHPI4lDbggmKUoLQkGdTpx+CL7AjBGn/IWifkAyKrp1ivpjWMiAVa1DRSjnxW6xwcu7pNH/A7buqDstpT3i1RKHYjhXWiHx136SiQpLCgZkhBMbcVzVe1GX/Lwap1vO/wFtIJw4cEL1D8NrWXL7tKoQjkKbRn3Nnos8sghuJvIW0LdqR4iwiOgzE8lXR6DCwYfIHZMVUZFA+1qFi1VKiWBL08WbEBAYMwdXdlsRysKV1qALcKVABOf1MGe9Gx/4haAOxBtrH7/3/2DaO7vMz9+tZhYtwFFXG2USdcvKc8gB+zobYnQOr7dQ+QLZIGvuf57pu2QxPDWNKXSAoTFDhJFkEuYRjycEAKgt0EC1o3Hqhg5Z0ZyzwpuK5bHwiatpbqwWEVjc/NGhKVpinM0NV/pdU7uQJ4QCZdY/pzyeNTNBPgdZxo2/iLSMUt6DW/lCgDHWVc524dJoMv65sW1G3aJi+i9ZEfjf/p+RpSlsp7cj4g1veZ1jzj+3Ite8G8cNBHDJ2h9aV45aAJWfGAfA8LJAqLiKuPC6G4fQLCmQlP/Orrg2rmXw9Qqc/A4TIvX+SyxB1Oe/IlqOje5g+o6zsL9jeBUDHaM5wPPzxCGxp', + 'MNRXL66/+SNONgTWrSc3J8o2KSpRUS02eC9ByqxyggkQBUyLESuxYSbXED2aBWexD+4xpu2R3viTHT6QslFTnTZEDqgH7yiQjNodIzJyRrybTdtxxhKqNBGXTwcSooNGUkX5eNjebmm4yHEiLH+p5q8dfD55zb3cXCEvQ3oGrmZZEkzOfl1zzMlrCmTn3jqZn9/GqihL19kxQOW443ZbWE31sc+mk6HPVwIt92xlAOquEfTr3G2oOeHQRzp6Z6pOaff20+iW3YaHFEGrEZ3elip7ILkh62jQl8LI4iodd5O/LzVw9U7EObzVzY/nEiXjejzySNaUK+qw3d2E8rL8qJiVpqsjcYmQ/yk8OLeApIKqmCAryD9DEvBJRmhW9T2rCz1P3YdKfiRqJSKeVlzkcVt/HgAd3/C16zWJSx70K9lyKT2z67DEkROlcGr24d8jyENlru7cfRnPNvWkX0bzn4VyPoq0Mrfznnjo1X6+NK/DJCMMT9uIhqueZuBCLYMhu4087sPizndecBvpNEMOrBgqpEckxwrODVTOQqnqM+vxGlooNF62t/wjt9ynwHSweEpcggmR6Rs1oNZtLnfEYHknTqJHwYYDzsgu8mhXJ1DcabjS/esCFakBjqNQ6O+e8o745zS4Wvz6QWKTIbSzzVncSQnlc8SZsmuUvGy44X4tuwJOZHYG6NJIrWdfu9LFJhnKeVnhiR+fbLF9DEfWV8cJGA==' + ], + [ + '8ixrmuAZlpQvhOcdh/v7eJVJLEHtYUXAkMY/l2KSDCU=', + 'Zy2z5n7AN++vwtg58EeJCzU5s9UdY/m8', + 'tzBwSV5kfJfLeThaLA6Igrk7xPF2+OdiR4B6XB/1Ig/nnCtytzGlPfv7fwVT4uz0xUl8Dq8XmRFqgOOwLFtazjHreOcljz6Nx4BDyXcncA6t9Td2ZiBQy2faL2Hk/NNHz7JDdelBoFijYBqlROfuqNNNHHPGv3el/rSJNV3rPS+N9fS3Fcjo75ROuNogZwsu26Hi5pKgAoiNTdFzg0ZZED+aJ455/FV7+ma2/Rl4jCCG7y9lmu47DRyDzAoclHQMMYSlrFyK68Bz8bqrNczxqVEde0qantvEqa9IvhDf7x0X5MCCzVz0fpdBO5w1kaU4I1WXNa8hBtqRK9zP+MsdnR3SWBrKrQyTkgw9QiViXypf8aEyLtCdXDXQcaJhYjejJu5JF9Pr5gJ4LTGRMptLC/VTlxHMe9rF5BZ33CYhGDQA7e2eTHVpmedYLJWBgjBQ2kxzTnVfrkzr7FWfH3Ep37Zx34VphV11cza1VHuyZuVEwr5xmPmbvxAAXx3vzy6mP/11J9pm5Obip5gYA2IYhP5Lw7UZhdhh85VPj1ORdFFMNBGD74TQaxo71KdQSNHUEdHN3UXOZJ6tsGWgSexUZstEKZ9SbuJG8hvS/qnNnXfcYEckaQEfZEs4aHbAIe6RAptPuUObkpSHiq6VCryvfLKGUe95hKy3EvsZOouBrWuBVH1sNcNbO7YpCb1jsWmWZcNgcw==', + 'C/2L37u/GZPmuKHbSpiVm88sWlSkE3yLD9BATKzIyIfMXeO06EY9TEbVHP07XlbSt2aF2kbSbEe2ccYkgo9GDmhLFm0OVhEds+lyiav0Kw7k2lxryQtcwY/MZZ/8Iudm5olorvkVGp6n+MQ5vSmrsa9FQQiBipXxSmlr3PA5kVt0e7lTDc4dU569hU0uhzq9SJDErdlfYGQoZmkxmurWMjihqYeJA9oK/dkAvCQPNHofGAbOrkVfY68wqYMjFBML3lKzOv077v14NzINJ+53cCV6UUEXXNZZj9HizTEBTvroKstfDo2bSG/TH81agESo4kBdSzVtD/PaEA+N8x71ghOohHJcgvEm+AWp52rF0d9RQgCSuEBpIgwXH8z/MnaL5cmrf4sKNQdXxkMiSgViSinXvePSW+kHEUzfE1JVPMSllSSqKc3cAmhoovbrfnp9sxtaJHuL27SnwHxELJpGCLUjMycbD+GpnZMwLKY+sccv+Iou2A/j64RrI9VsDe2h5wjcdU6P75bVrib3Ymp2PjYXndffllzzaGSs4t+4ioypb38jFsaHbC0HhX2OqrjqC/TBTTimVZcqM223EiAO42mdhvNz82+fK/Ui6zE9qWlmosFOr35wzsbyWq1gJI7hbF2FeOkWO8TWNmOPZG/rYoojYAr/fnpsjInf6Sm62kpkYMwS2MLOMjQBLfNUeKyTMp+V0TyIvDqUYZQmc4tAgBpHAD0=' + ], + [ + '+C4YXsbiMLIF1JfhMcEZa6hH6Sq41G1yUxBewPNgfPw=', + 'clQLY6OoCLWygNsY/A/h1ku38EdOOB70', + 'hh1p7b0cEmaNMXqBA8aeUGc+kqdWUleWsxcWsXk1mv0tedXA3oQM6NaOiGGiGNu+X2jZg1ZyE/NUl38krcu81hBNoWqjOjl9wDdlyUyP5NjjHoG7f2lwt32sMC0G9xA3njHSpqXdJgZZSuxLZOF0z6XRBF61YChK2jATp1BT2tQm7LLRp6IIpo7PoGK1P8K4zD65FIhNQruhjrwRZM4gHdTUimQiI1E4KLzLMSqQp4CByVvw8B6/bRnEf6Dxegiuzv1YNTJCc9yZ4MgYTh9p4can0HDVaiNmI1YMT7cFO0CqfrMSYABaRIiTGdNG2U5VmUBx+RBjZllwyKgFIT9mw96BZoU90MrDUNyP59IxIwQC6hPAvdi87ZwPZTKmePZvy1/oH2yZfwVRNFTQzdsSHXZkz7EEenQa8+dz3IrximWTmsoZY4Wg4rT+Co/+KlvvjzgDtV/6ffVWuEBqfqfqCdb860/dYAHOHnZLTpxZjlxdjBEHXOZ1K7MfCKo3wk8iSMXtycZFeuxeKHTxlLMafMq6UUGEO1KKfgE3L9RnEJbmZo8tkprvMt94oIZx3Ap4jCKBXIEwn1PUqvhLw+vDFQjPYVlMoK7904Zt0gEJClyBBCHg5yySZPJBSaP4mtYO8SfepZpD+u3Tbrm1TLwlswYfnNstscCyZm2HRm7avCZ643gr69Did0+XqfHteZdBUrGJEJI=', + 'ha76YUy609WuDrutm8jhrHQ3DMOzlGdua3uz+Wr4/X7WpS3FwBI8v4dQptF2fLuVPR9LI2QoU/GyXIoZ6PttN/mTmwsFrs78turXmRjupbMLZ7wigIDp288god1fud/aPtzgQEr1VKtiOtul+ZBbUJJJNHSGicJDmvFOoH/z49lf8wZNzizhd2CQ1LltVjzAI7WB2x9p+2ZfG1+1Z0HtYZX2DWpr/3jq9vLBNc75lKsPwyJnB5PMJusOaNIm61iyJAiYFWy/XkXDoBb/ahW8Jwmem3gsq6PGO/8PtIi0ZY/k7tfR9QrQHC6ahDnBNCiIcsNQBFloUjwS7B2It76GqUBt/2MUM2B9QmeIpwXZuugewnJLI4/UeuF7Y7Gk6LqyUDMy7OQntqbpEUNDd4+pkDq0Xp0+iAez5nDpW/DNquH8CPP/QkqichNSZxSdWoiOcWGxqJ7vm65N6ifm99zAIikQDRMfKwBLhxaF77ORrNdERgBc15JA8gzvyDPXo3rGRQQ0kJGgOlY7Uo7t/p0oc60f+ZekMA+ExSOOIRlOFXKKxeDoDCFHz5tLB4G3mi0sX9XaKY8NaZbPpl6SyR3zPSOQuIVdQzIjqCODi8Sc5Zh2mPSjf/GjOykeUxhsOfcl99Ncuz/XzCsoxG1yGVF/T6XACS+spWF4iMVf8p9m6l3EMlyjxrTHeOxz5G2Mco8p38PSJVrNV1otReIsqzjCod+8HY+F' + ], + [ + 'jHJn9zanC08bqVKeFBiKo4YY8QQM/XOdYbpi6gW2NuA=', + 'PzZxPzfOBl/pyucBGzM3vI6A6KWzgYLF', + '2XNCUDpRher/JC3/3FBlenQMG1xBvTcWIQ8nnacb6sDJ0yGDGK8Uhd0euBHRZ2bAkq1P98b8H2w/3NiOASLsW0+h3pT7eclxwBgCgWv8rvoRPQSm+ijUEm5uvsPjZzOOBf8KpxuU/3AOSHGNiOBvdgyP3HCsljN9dtsmjzKgLhcMCA4vvi0JSZ+9fgXntVc30k9cMH6gaf588ElIwhTXyvKYsWAZg/8IQ+09er+QOfwMZmtYYssv2t4++fCKzIxFNntLNVdB4CirqhvP9c+xFj/zt+4GxuXiTwRzPGBqtddPZn9jUjXUOKXImwAd1GBMr+GAEbGTzQnYeyYerGf79CrdraPtOlqcPsOkJXYFOz/oyz2z2UZR+M7gbGuIoix1vOoWVQ/d+AEpaXMGOrM12NzaSzEHqFkeoOQ22Hqpg55rXuvTrO5NXh2Y169vG6hbjYIbNi+HWQ8yssGVxnjgl7sSHKJe92F4c2m+SmiW53EC6ayaDBDNXlSCJ6ZCwYdrrtvMzw3dUZfq9swZ9mzKCPMGNqzERZe/8hjxR82szs1BJNNJpsTMJHwvbJQaU/Ff+nJpCkPP8hKsmkuPm/LXZ73xwiinl1X3EiQ1EDZnXg8TZ1PyswdEtQPKZakX4j/LQLeGnQ60VBliChO2PYaG7w8qb0myyzF9ErtHYbilzl9aMUnc4l+l+vo0faWJNkFrGSJ46W/6', + 'oBt2m0Jp4MGkcfCl20jx8tEkd/DCgJBxCopIO47qTaWdN/ZppCbPyFY04ZluU29iIaxGYlUYa88S4EADLwaI/mhL7zYsUSPZjk1Ps37HkaSMC8YwwKvNOGFxEhgnM16HLnd53ghr2xW/R1+hkwFzZD5pSTEUU4tBEz0pxxuyNXiZfIb/f57m+Jm1y5jyp9LIgFMh19DqCUnIGt/28qSCFUHz4yIUMfF0EQOjxynLFl438Y/vODbXNW3EDhJ6PGNnRla+o1wNUVOGqBL65vo28trEwZWwLd7+rvKY5ezYfgKlgW0qaqB7YqPkHt25ZSIQy+hIvWceiPxNYNLg8CZjUL0+suUAVaf+lQ4lp2Wgi1KE0Jcs1LlHJBSukhlDmDo3sghpvKmA1PHH+8UTgEVplgCDSYhZMpksmBnK780wKKDcdj9aMM2lyn3Vktu688MyCvYkFmnyO9vv1TEKsOtK/GTDs8B7k9TKuU05lG0hBpUdjoUjcUWAIDNykZbnH1LhpkuV5r8Mqhh+CK7l3Bc02zyi8VecM3YlMZX3t2RiA/oxQpng2KxHxq1pU/2wbJA/Fr0csQ3JmX9ND4Kboc5cFo1F9CYHz3U4HBR+//QzGVnBuv8doTmYSvf9Gqbhi4ZU/GwxaR6TmdPIzKHvPmRKG/qI31gUpJHCanuJONJ1KUWFA2yCL/N83SRUgfVcD9WN4rtIQ5h0gltkThOvdxhjL5ZDmoz2Tg==' + ], + [ + 'OmAxcYHEeaLhFRJKC8108wDIeoQNAe3BBA6g0dVPm9w=', + 'B+fS0NnIsLj/+jmbw/sdxamfhSPyZKTi', + 'fq3l3rzFt7IPq1XBf540vDEIJhsj0ExYU07cU9xrIkq7RUJ04ybOUVZE+vGw6KY31iMSAp4oa+PnJMwK/LdWEAPgYp52vBaN/xQmyPAZjh092192HZ75LW0wlOoPk5Iw7DXG89IXbx9KXb4WUvMaAcIt+woJdAjnNqCNTObGf8MhsXEk46MkUDUaZKfO+oyaevnSfFwiXxFLZktKDcs8Oz5+mmNIRpUyqI97pFlNbNpbUYpZZY630grESWdNpaxhlRRLR+3iXu+cibbR/nzW/2qgF0MC+loGHBapP47sjmRG00ttOga6d4ZsHExopLKtv+HNOrfG0Hq2VoZ1IY2bc0yfRO4Fux3m7gyWpDynigNF4BNzM2KFrtrYWPklGWObSQvWP64+FLAy3LUVJ97IulYUcg1c4Nf2xOjLPiawXmzTrV68ekUacNEdyoC+6hCeDPl50wuL6dYAAm/pjJtpPd2iEiYr2GCuwaLYl416UZ+FBr/BXaoz2EEIhLVVJ60zkj0qk6uACqS35lltvAbaLhI+aJVpmVINT7vi6gNnWXCJ/QjEYbLc955mzeDOlzqX+dteLkjgD5OVXPGbN5fhvPaVNfD/HZo4/KIboSsse7pqFOEo6gJO5yJvwv7jstuEqLY9JZNLewJ6EMNqEuJnrsb/y/ocyXjmCG0YDdfpknc+n1jmb6SlYKLCOc68YB/EF0Jsg/tYYQ==', + 'M9uKV4SY95dukO+pieEHTlSsnjpPs6xcdDaIVM6isqY10qSLvUoRAZ48jEdiIF67Y8xCpgzchiX1CJ8b+Ymg+O6NN6jOmGG++h+SpT9NTv2vZGPKNoODypfopvBABHwTU30nJvqzQiPKd68FCRFMzR3l/BU1BEvBOGHAz+eBuP2mvvjk7d4EmVguHGc2/tKmzsKYAi/IesOQRxLY4ACdbUqN2uo50t8gKOukwNrqCiwNU0Ul1d2VeQZ9FvcZ5geuIDIT+AA2vxLjsOPKcDpK2UaEW22vEYm6IDWh9El9d4KZBFYazITDDbAT497gW/3U112Wk/V4/oeTj/3qGSm8bqIEIlApFBlpq806c/ilk/IcYFYJ6BIhesgIvbW/96eer1pVhM8HZn3knSwByXhyxhz+ScfXmwgoULcH0dm8P7wZZRWQPj5Y2PKAKRC4seKt4RrPi+xjOIT8B61vV2i8ihCgdU2+oBjz9vxC64aRs8LgiruEg0FVMZv2ZZH8CoHUWYxxVZBHajXKah4ljQLxJg9Qf0SNaGgpZjQe5lmkRN3iLvJpPDCuTBdr5ykBh5ZrOzpmbvKGcm1+22IEe0LxMdNfnVFiUl9P7//4EbccOHzbNblO+6fyDin/UZchykzY3jwrVWz++dbVCB2idB6JJYMKvMQNMycfmYW7Dw6DdO+h7eWMJFS9V6bp9uRIKNHSsp5jbCvqHxsDrfCS0DrP/HhrQe3kbGo=' + ], + [ + 'IbWpTgxbFwQIHckvuV+QBELEoueAV3/HdF7WYnNkj74=', + 'Maf/g9cDhZM4ivz0zP01o5Mqcf9/uFxa', + 'Yi8md/0vT3oyHOaen3FprZABXV2o4qYyixNoWKJbm5TnY8cPfCcL+ZKiphFwz2tAuI+hITnqwDxKSF7IEZ5BMnnmgfj4gIyS1e9LVna1jiMCaj83c28CK9X0HnjYCs8v8oqsSOBbBsTzYZwoZm36Floo0gj/JCvmBcB4brO7HS9fj7ByS9RFu+cvsTMW7Ln6lLtfYns1If3uZhxnRgwcqucCVwKdeq5O37Ib6BzeZd747M9d0CkW6MNQWWnihL4PKt9mIR3LHz7BUDEiiBoBhrYbSmB2yFz7nxT/sSVG5NaPxHpKs9zRIWZ6KanfM0GU3Pxj0oyYfYi3DQWIb/OiL7LpLlVjwJT+8TPGXGLlFddj9o0pRvA8Yb57jBmCd8j/5vvR0j45j3ipRz1xJ26Yhrdy/PcKECGyOCvBr/xA8wdfG4bsHkBGWHQTNaNqEjQO7H03L5sG0rO3kJKSrHPVhC2Hqzdc1s1h7w3rnnGrN0NDOvRJsVkCu9CYmJOFJADbz9C3JNWj0hyNrAoPmslmSyheyLFEC/jOZtHYDitNoxe1Ooxr4s7ClTnFiYIKEXj7iQW2ZbaVfP/Wjt5YtyAzPiHW4w2W6P7zq7ky6blaK5MOZuYiAALB1x9TVxO4GQmryGhkaA1AQwgkHY24rjTskuGcUeHlrBcylHZToZvitLXT7gJ+m5ZqvAPco4UqHhRPPuxudtWC+eY=', + 'v6q/WfLm8qnX79QQtEwvASIGcQvPN0TCbytgai/jlYu05t7q7eCHM/lWvJZfKbBfjJrmJXWKljwksAE6/SvXbI37iInQpUehiftR0sDl5nyFgyb4ugPi0kygeKfMEka8NHhNFSSHTlevtbkOIPA4TFq9KrZfjpqodBFlr2l3N27wO5OHbNpkSLO5SuzuBwcat9PXkaLHitR96G5A3qo3zVoft/nA+FmoIyKUbRb/0xZbFU20s5vFuoXhmaZW0XQgj2oP/D5j+j14i0VpWkpuBSkdp68lZI9cVmioL60i8JANVc6T8PfDXqo1Gg9NSCUacx7vSItkwVEHXLz5mC2v0jKnYqgIHKZ5B3ELDUrQCM0BcezWyY6eCN8NAjL/P/LBjw9+KzatLqtJYHKBF+7a1xFo/NQ/cUS19NuepDXbLh+wIzeBU/JRbBxZuzr/eeA/IJEuj9JhgH4xt56FCu81JEtU5+o5ZlFYs6F45dTzEAjWAlFzPl/IIIPWxsd63ssbmuHJGeskedvFPqJXnZNQ9NA8e/TNQ49wi73j+196/Zpez0J1Csr0MlCZ8uYUfG4PZTlJfircSGJoXPURsQFM3npZTn0V4skmPBwE2ocWy+Ma+qhEPAvJVvbW4Vcc+xZOmRRG/2/KeclMv72c5gTH2myaYltFiIj+gls3BU8JSF+FDaBRU0AwqesiuhyQi7z1Yn8pkXV2vn22taAEzXxik/lQTs+UypgU' + ], + [ + '4qNFmLRGk1VkTpJZwNJtl1rv1Jw/S8luwxvP9nYHivE=', + 'Zhv+wwD1cp8mGu1SqECsNgSbTGUS3GSU', + 'qqt02JNOcHZijL1+odZe6wIhN/n7qkprHSpVSBUn132fsoAkKdWInEmwWUBvtXcabfoZM3NhMTj1rlnF87/Bp2b+OciCJKfpy3w4TjXbQ5RxsuBlGbXYXyBaRvT7yBNMnI7OuoV63ImdcDbGyeITbjoUQIKrMbhcJ7qGOBpzgTSg+xoXrFzxjGGd7BnzTKK0Hvdctd5wfy3SZKXuUEvk9I1rGzF2MKV433iqKsu9kYsYLSlD9QQitguW7D+Le0uQs+ocldrpD/fNgAI3sNbyACoqmxbrnvN2hY6TMOAuiz+f39La9kIf40rj/+dEe039kdF80n97ahzjf1I5hq8vDm3CBWp88KIXKil5hrPmmPh7K4zZg69NlZ9g/NZyip16KBHwWBbPMFsZrzg/GJ1K+bRQAPJ09bn9dvgBSreWjF0aVLgR2/layK0Nwml25VwVIiMlYKOXaYfrn8+VSGe/vDH+09yk/TTKdiMZ/vU4Su91oQ+ZhT/GIpO7RCziAbg5OMpyncf51eOM7pfY6j78OHx1eTZ0se78S6vVvibjVE3Fx0xK66Sj1xf7JQWYeWG+RuCsFnUYpfNYNgnZb/oaQqu7urt/6UcrHNHGh9EJvItQTFbrqyzDVUyK3P7EVp0IT6YlekCj8w05W9Co+1VJl2eRNPmml/DFf1KAJEK20XMNcQOyUq2ZTpnzNTyapmhG4dXNhefJxw02', + '5Y8buMCAnnhMUwyx+ttcn3EWs8M+j63KjOAJMq4yE9cC0i3rLGQfRrrCxm5I/vCBt9EkHl0RxyOxjv/gsWkpdqGWXZ9DnI4kLb7cg+JTctpadQ6WYxjevIk+3WeSBku6X0JU2mCnn58c9TKKG9tMEhJYa1q0ye8QzEY5OqT9uvV71qEQJXQtgFpJWXokdYl9dXI1n3Nn1xUSI82SrhMh4+n1uyPWtVdr4491TS/0DCNuqdhy+Pcd22HIGzstEPfklU46higTB1cjnTU7Mhf5bgcpqqZeOXqn4jQkFEvFhv61zj9BAi2Or9IcC98knwghrOn7hLlq3ubI2T29qtsrU9YHA6l9/2E8cs9AWkClmefMkEmWSCY4yDymuQ2D8hl5Em8VzBO0Aa6q9Nw9mU9AjeCEV6RYZPusHvuK8v51T6tqkKdtlbGDCncmEIXM8Ro7ypQMZuntYCEzWIs9fIQsGfBu2fj/Rm3cMKM8N2BC2ZbhkcyYEa7XbRgoAw6ITYZCqCImVu+XBj9numdCMMY4gYlhVikG3EEQ/6TPNoDXLNuf7EtpPr7cjYujslS6B1cA5Tlq60fTCqw44ycsXT+zxUwDHqRQ+2YcNOn+CnorI7BPj4vfbOgtsFnrRZhEwFWWU9kUEj3ClJwCCyuc00v+3MfImf73LwUAQ7vL4dGXC7sAy6mwCa+upd4Z/70AVf5hLxXTVNNQgDaXYSYOU3w4e/Yk+54uQC+/sA==' + ], + [ + 'iJuiNNcqahxOTd+zRB/xLUyxuE74J6ycxjY5mbsoUko=', + 'K1/yVCWMO2vTwv/KBpOonjzXvL+C0Lh2', + 'pXI0t3VxoEUtWI/0kFc/DKz0hiN7b7KifjmWyjH72odUDt5IiLUxkxHbyuC4z8V5l0/nQLNj52XdubSNgrDl/zEPeLs5nS9dEZ3S9j6917NUX7pPK6n7QV0L+/mCDF04R0MHs02LPTyL6o6VdHUH7m2z3d/SKCHdrxYqGA2T/JBSM/MO0O9thNSf0rsKypFUxDZn54xygwt2aYGk45dG4hgEa0PR2WE6S1UmwKZ06iYAyR2oBH7TzwFFpLiP1EnoqmFpngWIIyS9x4flWPbI3TElXhv92tQ8IVDjUhaVAMWhQkHBaMXJ3SGN/YjUndffLNoa2SAeK13rs7ghcg9j5D9HqgD64DGON2DjQzY1KTImk8te2ae2vLHglU1cXxcjoJmXZ+JqEZo9WxMP0d/hCOnmcOiT9lJEKCdeCrOs7v+9JgJ6ClSilTE4rnaR5C1LRDpwZagPjn68iMdNSzDi9fduaxeFIQHhBCxxO75hlit2WSdODbHWnReWBBWiGCaHZzhdF5Cc3IL+fA8FTxnorNgfc/ogjbXgN8bfaJxSHu6REF74htvgp1fM5/o5vS9SKzTAQX9H4Ba/bUuvGnLE4AMI3BdCFADmq5GTTRCYRHL4i6pbXB7fl/Nz71D9FgR5YN2jOZWtxsmaUQwMY0Kp0M6awUCXf9M1rTtnFjh/WqS3ttIQsmfnWowKh772PhkjmcE34mrIn7Rcfw==', + 'KUll2LJymI14sboVA4o7Q8mEyXBg/X/yOjh4ngfi8QyttiQFH6U+Ng/MNS+N4To8rWJ45nmfiUyKIdk1IVFrScC5V25NLSqzLZ+Itwv+r+WhYY6Nh+4lZ5yucs7ytQO7aLvuwwsnS0nCt10ppafJjsd0ZteG/yDEnew9rN12JS6wqm32TGmRcrMCpQYHHlx3SLad4l9Oumn/B9QcB03Y561EJbkBf0X6L5g5bnmFiOLjoKUO52RAuJwy6th3ITvmbghFpVRSWqrNvsCMSIhq18aVJH+TMX/XrNjINirG0c4q509PcazYJ6/R64rMgdHGMeUJWWmsw7UE1gY4h8TfjvJhi+t31yWr4h1sh3WHuwfOuTvaxt//gzkdkpGD9/Fr9ZTCEzv2AlhZD2j+RgyNTTgJhWitmh5f3VZUWCKd267YJdt5lqCy6jm8x3Hh2bxtLEQOz2XPrncDYSo3diMEahxQ6WRbl2rJkhvSsIj5CG+fc9PjF7zxb1KroFx1HoMNjokUIsZ7kIjZ0J4KOYGK/3WWIj/VujlHbOMi+N5inkZb3dPLQt9Ca0xN1vmOyp4gMv0x9GAbuzYzsR8bqS2VjJUJUzRcSagpTTgVNSwOnNejPSKcM5l3wT8XB7ZyuqwfeyDXziwMe/xJFI4qOz8rqwcgeQqzJWk++8ETEWp/8G1QpXDY4jPZoQ9JhqZ4T1Mi/slVWkfuzbnw3CY1pJrVqQ3NLuwXJGwvl5o=' + ], + [ + 'Opt8gGARY5JL//mxF9sLr5CVPiAOzBpQQMfnnZo8wJU=', + 'rfb6iiBqKJ4FJz9zPKTlbt9jWqZzxoun', + 'MWYn7iQU5wqD05Vyc7jb9+gLz69W4t7Vyy0nTR9yWp0YqyXFlDcptv/Rzkhl4fu0mizGQpfkZKXQBS6v+lPHXKa4koA149jWItaR0t7C3cvuS5CNqXE6DTalySw+pliGp+IJHCK9ysOFKykdDtns9WwUmtcggxrqZgMHBvYgIMhgytIuPAAx41/C853gDbtUjULG63H/4v6EsG+hLoR4pe4rZ/kh4O+zrpEeXj4jpqYjuDHYJJzISqm6cS50E0PFWkZU9lCU/mhvlPUFZ93ntFzGbF4xCIFeyLq/JIm1xsoMnhrMBpDGs+n3XV9GVwfWg2WKDGSnx9YvI3MeQF6Tue2tPqvgF338IZiBJ1qSwwt2kwmV05l64tkImClVc4PuitfU7RyVeZ4mLCPUm2tkaxPqWKi8XpGZU1nw5h8htwo0afqVc8qWB2ca7Er+UQcDWxoydXEdcJ8AeTtbVzMlOrEO2ZdvcgDFkf1g057dVU1xpgckovFCnXM3VSozbhRGU6ohuDH0vPsGeC4EgpGBTPU8PhmjNvVj/YzFNhiWUkzQ7bVQbdCkrDk4MOCRUZwm97SdMZA6PmRLwu8Bk+Dm2QzvHNkLUfFiEdpBb90xufBtALfGr5nXI8aNDZd+O+aQOXSswbBJuq1iR+uw3HsgAs6cu5fN7begnKGa5O7oqN0NELwgnYdWrFJiAcgvvHqnujQTzoWth59YScM=', + 'WKM8D8jlEbJl5/Bc/GcutXLlNMWIo+29sOisPUZ4dVgfhrGOl10M9rv34QTaNsG0Evs2wfsHY0PqOspeum598bcjjBDXJfJgoQ7+JGYyvOytEcP8tkOaFz64JKcADo7q+Xfkv3fKc4Xe8ZnUo7s2OogUEBL0klhEN3yRKvSSPMlaKP6Yn78zLPFEdmukPQ88MfyMQ7zgDkMJcn+UWisH5/EDhwL2g/MLI+WHfwexJ0qSWU5lL7mp657l/EO4bf0oo9icmU6mT+1dNWWLStKVciI5DD7m/A/ITH2+LtLuy1PW6T3CdSGG+LQ8+VVDc+0uuG9Q3qtGHbdJSQkKuT7KF8Ga7KTveVxt41VL96ReUp0nP3JB3jkt7AL1Tbw7OTyjx5aG7CLqcfXGI+pbpr/NAzoHSG3OD60k5VoR1GiCS05VVgPutDuQFc+Jhoi78x0kpSZTx7AL9UjovnvKD1SN+qR1zmJwebewtp9sv2xNslQn4JpHEgBHbACD3PgCaQiaB5bYOehBq6XeMcCwoRcAvXy4lsWNslzQHdLyrrct7He2Cx9wJwjsC7duQw372XIGw9GLTbDcDU90umbEQJ2LVnlDrnzAr+hfFTvE9eXTQwaJGvYbZ/3HUsE75lG4m84HN8XaQVgsZXeVPaICY9NpIiaJU/BibUVnhCfDNr8+eBrKM7nbEFkZByFJ7S7dvFL5EBwQ9513ETGHgTrSytExgRxE+Isw5/xwDqFC' + ], + [ + 'kTcNZFEG9DtojloiL3aWidI/KpymILS7/WaKSBe4foo=', + '9w2wreeqkv5uC5dOKRh4MY76/KkbNRtj', + 'D4O+EHTboJNynXsinkNGh4l3VNPukzynYDRaMjbopQsvY7hQhqaTRMJJivsMpHwN44bmo0xtB+RYyVX5TjGELwb7SweQsKdJL1tdIe8Ay6KQaNEfU5QVIWzWHh3/NOZ+WI6R3EF4RS8OEOnT/4KBlIdD1AgFGL993PjqV2C7Y1X6y05DHJoG56jk4BZSoftB22beEO4cxF7J5yN3Juzuejgg57EqfhxI/OBx72AFVHWkUrIPB6H9l7BGUcl9EgkrQu1i4m5pS8JYdhepGjJJ96tQLTs99dO08LmpucPYz9BVxksJfi/tIIBWSXoCS+bjJrnJVZ62wcb5N1rZr+5LQJ5AIIvn2neeLNBQT2yxn98SZlLqm6QAROxCXqsw1rEUf1KtescV+ejnhXG2ADhdC6XQ1nDj6B6jpPmNu5ITSxPcYdJs6JhYxo18+SpS/EHx5Y7YPpt06Gi05fE2g/gBtbkBwJ+Hs75h75U2C0uyB+f3rwjeWnfaAbtLovMGXMOl5q3CoSnl7KP03corI+Nzi46uRKh0FNwEGigwTNcxwl4efWjUg5jyoH2Wj04xgAkVr482HjEVXIKcGp0BQr4MnPcVN/5WuMtKZwfPp9JxHUYmxc4vo9G8936hTeMQ31jgFJ2y29o5FbS1aQg3AMQc1rFa9fq6yJlMZzzaHHgsyiOV+P41USssuQ6M6pEgaj4KZdceT0iLgob7B+Tj', + 'IOpEW8X9sJUA/BEqJ2TTEh0J/EkXJ/KjgSzyvZ/xupO58OnIGJez6KOr+Y6EELCpcN2X3Q2jyftyFxdQoujwSp7Oa++Ye8YZ3jg90wsbZQ3BisvUuz7K89DFTNoWt211y42yagvp5v2rHbFAl+L3I+3cvBpiURI+rjk+olROANGL9rG/abwLipbhzFspGdPaj7NtX0L+m+f/DKY2FJ9tx5FyZIj79rp6Pn6ptGNhbrfMK9LKArRtAeLBDJ6yl4Ria0gLtRRrNcXcZ8YJkwlef5OMq9MpvhJP1whcEh2gqvwUlxmMeMr9JT6TnjgE2V6xSK1HdZQSIlc0q+zxU7BOnN6CH8yxMi0kpSzWFmtUmeZFq9qhxk9bRnB9hXB/q4OORGte5H9XVUx1tRxON3cKgfFQsAXO4V/Zibl5GrX0l/u3UxBt1+jXDJfoJUxM+DtRP/WxlJLF0PVdRRa888PqDUdLT5iuH3784zOrsD1Nk/YbenIBizJ3ag4+KIzdcMUM5BDB6GfZbkX5sjxeRDhPNWLk/8BniRqAZ0GuLm0AEl4y/cc5cJK2/9/VLpGHgyIb74leV4QzCtkcRwo1JKBslaHDxkgbmIbg0Kjds+TsLQaYTfKwOWgAKYw1+Dz5lL1oCYOwqPFU64bnsxYHVWmVEVcpYiulCmrwrkpoD3/bXadtiEtl07vUci356r29Sgvd4X3CM+/XFI1YV8TBcMHTIVvO2jC/ciwbiB8xig==' + ], + [ + 'VzqTx4Yq+N/N6PVz/EKrv8SNVDlNHuEjUGgsyQpENtA=', + '6wJCPmxqieEK5RShlZYHIst+SdgJFbAQ', + 'ssoCg2Qzp6wTxIGeV0CCsy0moKM+0u58xJY5MZ5i52QAAT5FfjGIgetpZhC73m2iB2M2OzQqZsbHa5nNRWYDqv7v46nN+HNbyHOe5/aewllHO1w03nJ3HEqg45vjJ1TUI3O5gGE4wG2iBTgWcsUCjZdx9gRPZa1kIHnxA2s/16t0Dvj6985dg6Z3wU0Gng2qUhG9rPk9ahokUALDeMzlWol2kXaSgr7QrbnTfA2KEBLaAoLryQO1CbQAjGfG1A3Tkb2p0d79TNTPEXkKT7fJ7SOMmAQCDjlKb/vbTzWtrjUdIxnhcBXGZyfGkcL4OfXkhOxUe5JuPjXmqBzSyalSVVCZqcHc9YgBQpZeh6jtv28tukDUb7EupsLb9cIx1gJ6l6qF4RGRbAWLKweu4cRnSwZ8lbJ6ZZCcuGFhiYnQqWgVfdoB8xjIF34xEn4O4WvR7BmFBt6pBATO7EmB0UzWJOwx1l1mEcsxH2DulF987B6YVgeEVJUwWYx50iNSP2o63FvW5ufM6fFTuAUsPu58X+pU/LZUWN71fHlZSUk5neII3IcQqr0KBk+iEVm5nYQViNWb66aw9i/AQiOl3fAR4tA+rVsgluwUIg3sGQ4/pZnHpwF6VP1Ra06ONZ1EwkBvoVLHQjl2UnAAprkVneCN+JaDRo4zKqxmuRdfLPjhu6Rrm2rt2RZ2rsi3B/TaHcLOIsD+ygFmKSyt0jeegw==', + '3x1jaBB/UEYaEEAfbTT+8TOjAWvDtrBK7eV73yYhupffvzAdWpIryF19fLT0jjzuMdVe+2Nx51Xba+8pRNmFJJotgWrVC44gVy/0jc3FakeO3kxgUHglFR37mzGzh5EhuHp3jR3bxFp4ZmWdzESzNK3KfMGcgXR12uJvEP23U/8KGyy+aGRB3bZUgaSW3nDFSB28skO7Pdn/TxbCxBJTyYGaSyOemN8RrSRCLd0WTBcKqNI/7vjLP6WrKtlQ7NPIaOx8BB9JD9dFkO6jEb77JiQhzNE5gGQzmguXrjHg9E0EvYm+QA0fWQGdIc7w1ZUk2R9cKyEyLBmxeTkwrVKU1dxCams6rbl4JPSE4D0mb3APbznd6w3iYdkruCXueDgeMiyLQgkAxvtAwW9srfoy86H3VgN0qSnKdtDKeaS4887U46RTg+xx7oq8CoZ2bz9FPwYcamWqs3ngeHa4XM/uf3C+97YEb2PWviRFjlra2F/Q4J0S27Rrh5esyZw4QSanADzm0XOKCVAAxmD8bgntWWzH9Td660rXUif6kcXrM7rR3QRCv+qZ0kgDinTmNh67pSi572Bdubi4D7o1MAw5Wr/j6YOAbqIQB20Cnf+bruTbxKGrKkR3c0UB6mEPxvMgm4WKnKV7zBHEMyb+eW0Bi4tiVWqgF7XW8pKQ/EmrIe5OwyyozXi3iqnOJLrNbKFVIf/qKiaoxOtFW+CSM1YtzBqsL4snJLqFRhom5Is=' + ], + [ + 'tLuL5hPUMFe61ULQQ8pRYznHGoApmbcPK3BiAONCSC4=', + 'Tt+cMn54B/6PmXyzmSeHxSN0DFyWbuXO', + 'S5aOTjndE2iHvVY8GM8Rltp7EQ8ADof8LuE51nx8HNTt6sdimCxqrMTk0uVeJsPKeR90YQQCscGELEXtmSAiH2vGaZxV1DNhzWilMrhzD6lQIYKsYtTLHM36h/ZJsRPjRTwHxhhCreZhzAivqr2mWnGB56+9W+t69iaFIG3dDrumVqMkrKDpELj3JIMunYVbDaKQUYp48YZmBmfdliX9INE9uFvbepvpLPQT5bMnMLQ72UONvcSeiz1LgGH+fwvB7VBewKpH9LdcJpHwVYGjqpGuDRlrwod7jnWfQl8VypX9Oz84aj3f4/KQ2mvI7zqfsMtdmd/10OHFXrOKOpSu5aPRZVwxlpo0ukqVOxk+reOGEazjeSWGJm/PTwTWStoZUnwu3fdUMNs4LcSMlFJ1EbzlZO6FQRs7tr081aOGK6pYb/v+Yg5r4KdP3Nd+Wv2tIkvRz+YzQhm2JcfaVRm2H8dd8PhQ7Iyrh4a5n3MhFW1dvujuSnUUOXyvedAcLm06mEUfX1H8YmFg2MzYSLYtKGe/jpYr6mIzxdNjkiv62G1ABtCuo4voz6L7LC668zGVspF+QrSz21kq9vS335qKZAapFoRDvvTjJ0GZrbWJPg+vLQTuAgZYpvw7DCeyVR/O7uegx+9ErysXMSEY6jdWLbwfUwyvWwJ7ezZbLX/WpkpfbbhzeuW80TRddweh4OY4aJ305yMv4bL9PvM/Y0c=', + 'yUOVcp01bhDeCNHJ7BooQincMHPQpZg3Lblq4awwfgvTVTvMyvp1ZzIoY/S3LFp2gDFS+EnC5pvYSIhG1sbGCyh7dLaM4Q1kRMsEYQBTKw24hv2NQIXlfh0L8vqMuQ5ajxMDvKnxsCl/+4HWxpptMowd5WmKxL+IXFczSO12RTDLZVwI3KSbyMpTSDboDzPULDmwwe19jVslEqicjwAJHCkXnpzzg3MA0AvVS3uC0jaBPjuRzPTJOka2O30X7lTXqFKXjFvzhSu86WG+RSB4NvHWcCbt6qzRgk3UFAXoxmPxBtIx1UgK8ncmyA7bKMsCy0AbonV2hPa61gtTC4uyZXJLtmnhNtp5ZcNQDXe2WSJpbE9BaZZGcLV5NNz+Skf7+C6X3UHsU11i1RmYhfMuHVWpqyv59o+von4kRxdovRXJmVabfiYGW1WswRnc8kPRwiw0ziHgL1RoffkPswH4/0zoWJ4fW5LCEEx46i11eh8Vra0W8QBsul4lqaVHH9Jhlg9UYNW5ZDM4uB1FwAhO8kBMwVdfbj8xvP+k7EZMQldt3rgXRrdOh4jil4yS0VRvqBUIQkQTXV4cQUwSn5bDQ8wzVYSx4+Ei2xi034exxADoa9fCVOUVEc7QimGojHvC9QYj5m38a+E2mQgsaEc6QKUFH+8lz3ZgLcz8ltQ3rwO3SnkHduyIb/tAUPtU4137cXI+urBjuUH6yT45kwDit85UPodxwHunA5y7G3Kw' + ], + [ + 'KWQ3zFEW6uwEEO4bR2yeisyM1uajF5tuPpwUNvl4la0=', + 'Mx9MDjcOspDqArArtJPGAg5OGuWTIXPb', + 'uref/ZL8ofP9DsrSNjmUy7Fi1EleUxgPv4b1u4VL6SGNGsmSxR/acS8eLrfxeoNVLgqGebN/8RXdHJQvC1Dy/+iNOGJd6wE10XfPptX8mIyoVEd8dVUPG2H6aUWBCfDf4pBYiIsCRXN9LWHYcYXvfoGob92MCi+Mgc3ryIq1OTKIX7zbs9qgP14wo1IA17I/G4X68gsowGr9x99T5BzvIJFIXa0OJGMKAs9hYNB/5ATLCH+BNoz2iVjNYdmQRoRIqHpy6siBUC4vpuJ5obSmqofzHRVeKsGDRE/p12vt5NLyhqo1AzQ5mHBkI+hDvt5dykbhGwED58nbHo5Rurm+n2m1Pu2fvdIYhkhwy4NiClzV1GEi6xKxcJpPgKrDWDkpTPRw6XwBIW4TeVQbnnoUph5wxAYnQMoQ4/wsDrd12sTFCU6ejeA9RI8a5sY7C/5/nSrOouFZ2MIyyzVMH85VmBxoujvRq85TPovJH7JkrGbG7oL02jTYszV392W8wIf40FHpYbS2D8utYBaR9mqVwpPABp2UpmlXqOHq/NSIGBwXT38jiQUME+EKvrl88dv0a/YqBOwXpwpRXlW03oBaB4TdypMvdQ75m0Ac9u4ucPtWfMSgm2cruVC1WsjbVbtNl240xpVaN+pIbmjO+XQxbaGh5veofIZTe1yEC1Ed+3Hy8ELz5a1v+BtWwR8xbQUn4b71k7GQQP/edaIIGnSn', + 'WUTWgWx08oHhGOSRyurwCBaLskPDrq8aaahIcN0DzYYQ5JShu+bVYLAcXdnU9uEb5OannR9MjRD4YEraw2N9/wke/5ZqSpl9YNH1PIbaEG/BHBUC9BjDV4ypsnfdISMf4YxLKga1IyQUvAQuOYLTeHvyPs58VNSTOlZLbREWJdhzpUf1cuXHEydGyuRH2OvotNVQW42SpguG/mQ9Fq4hU8PwxB2YsdoJDC570tl+d6xYiDIRKW9TX+ttf9OnCsLn+QgrCnpHWKej/lDYVFBTTrtQA9PHVOUjHgMT0nW59wsc+TRXCGZHJj8n062lCAlE1a9tKwdE+huI8yjG4QuexZAkhllrtiMeKpfIxRKfH0kgRKuz4TraHbf9Q0WMw0JU4HpytBErbj7m2CW2d99b0vZt3SFLr+3q7ANdwjm0lrW1QCNjcBXAcPr7O0/vpcYeGDaFeEH+Qp8PvhyPWoBsVJNnjNAoWbnY/Q6Oj7yQGkGdnyGV8dP3T2mI6aEp9LNW3OePxKpOtGZmDWOC+WctrgUYqyAi0DxaAklBSVpPVLILy7m89hus0txz6W+tleENfcZg4QaQQbdwIcJJsMjpLpnUpQ30A+GTWVduBxNffP1L179blHA6BY/2/v/1I76jufotqO4iVS6nIybNnfHfm+kBS/H5BKrci4CtgTr3/T49XB5GdfrSeVqzWZgnaMbeoDCVW7iwAEr70jBu7AbOJfpKSv7KWARo06a4KwhYGQ==' + ], + [ + 'PLA3kqpB6FO2MMng7lMBaoj8MdOTjBgrNyMJ0tCLWe4=', + 'nt+8fMEiv6DIciMbfnfTlY3Bx0E6PQk9', + 'hR2Mi2yusk+CAK9BvwjPXdT8fXqxSEHum/yZa7bk5zOAh6zQGb271LeMI8AOPJtbf15ByOGdH3iKS6ke0eFWUy3uLTXISGq8GW1VsSfo7E7Ln8VeZHRwVdIh5Le2nDHZNx5cTH6G1Jpn7oDotxj0bQUzXtYkdPEplKIjbupphqB/j+e/yIonG1MaB9lad9e+ivkDDgOBUikKsEDAFHNSF5J3e/6Hf67brSgtVWGEhGBPIianU+f3C9TwacS2Qo9WopCJYSjfDTjeiXAiQLuGgZ0BTfZRjJxBO/cGlqOIF7hUDe9D/tFH9okyP3QxEhOnI5Umlqn6I9Jcbe/2GhmYp9o8DbB0r34nnwlG3ODuTdrE5y45eNiqgNPhznqcQBv1PVBaW89QJGSG48mURqZY+ikCvy3HxrzZez84qqbLkFn9iT5tlDFN5MsathCv2HZ6GCpQPgssMw6c/VbNuIewavJpDEmEpRbr9sA/COru9h3oRlsI4H6f/tJPhjP1BmwKg9IRNN++g2Ab4gUY9JO0atTnvtAWOyO6Iq7A/lOytFChph3nyRiEq0jghwlg2gMq5Gf2m7KteNkzljP6WmkJ9qqNb5vI2gCvBtSDh5YB4FMv2KG5tZblT4Y/QjF+Qu+CyjAmyRJZM/2NWg9ZcUgeoHYp+t+5hUXlOYCv8jt/20DP91AJ7C+ZZEfijy+T5Lq4ArPqGHE1Uj1WqvymmMWF9A==', + 'ut1peBByQs3dpgeTVgmieIS3mXM5gWjBciFOdlO8iTqPU/ROwtIwmACBoPuqCp7ZCGEnZWYxmoSUo96oZKGwtxD7yQuy21B7jK1THHQKsc9vP2fj0gOe2Wh2wa5Ei0HrkDbG5f0367xHB2ydCGpauRYKiEyJwc0rB+wzCzrpTQKwHVQ762iBCGcTSza/PL+LyLu+w9CE0dDxlzD0pvyDcLXRFVlrceDlIcxpbZqLowhaQ1iaXaVjD+jGs6QLK6P2WyPp4TeCkumA0ybOLxP+iJ7yYilhTQY21gShaHC1H4DJflKRMIOTdaHu2zEXTq/7ufuD7iTTOY7TMZfTejmFuIHM+fDMuMvE3BZsnvJa6sBPoI6wUywILoOwfPn0MVfqWoHQCyCyFa8XbSNCITXBReNu7jUEPU89IWEGrMWbMgh72DsfITST7D4nxkXgNjReDFquOy6Z36N+MFJKCvU94+VEM9zVCHoyi8tbtZ/jFZ6iwru8D2qbsclF0A/UXo1Y1J1T0ELNhZo9f64wWTEcpo+JYYOkD+KqJ3deUy43nqKpwO9pAd30HAsdSyFjNdSKH4y5A7yIgLjam7cOgbeaiCmUNnd+78+65BJxc/W0kTwKrVZ3+FWwWuutJZNrLHbEjSagf7oUnf0wVEqsXffwbyIMy2xdQXOjxrW3HJSqFep+T2al4CvPgTIpGF/k+x5o/4TE5kHDedErr0As8mGc5dHdiUs/HWVq31FIt5bJ3sI=' + ], + [ + 'Zx9I6QW1DBw7cr/wVQUpmekMZKTuzwshxzPklrHBG80=', + 'MvWEwzYtkU+tR30IKE2TjuLOzEsg0oif', + 'NZpteIon1/FkMft7uHPSALz+NsYk9zlNopBEJ1dksk4cUIaO3vcF3Dsr/59n56RlS8xie71v+E1u+eCsg3XZC5wu/fMv8HAKT+ghhyixuQU1z9ti0X3VOVsGLDZJ5dVp0TKQIKm7Hmi43jw+vR0aRzaGGVoWrkSuF6SW5rFDeHOJM9G7ugPXwEe/ToAmiTLMTHL7swxeGE2lLi5tnd9DbWuVU6m+c43twJ/hzS0vPsxtKekDqPnZc1TrdVKV/IhzgYcVkNsDnOAAubImtgysYY16sxdk+qEoT+hpNNtLYq17+glOxF+N6pcUtMUwacj31+ClgUSqis/EcqYoJN9majlaF5flWQ8Q70+aCvEmEsZkDqekVTxb3A78Qnq5yFNzWuDWwPr8qvjEmlJ8aJukrDvAmOJhlfr9WAhYO/0PM++houhKK4O9UNdJM5fqaT/SbPacctPTYhOI+9y5bxfUCupl4RStN1sSxEDc1H7jQOB08yockjMEb+Rf4WgGtACRjCtbbg4GKXt7OYC+4e8r7OQqGuTFPK99befvy3HlIFZTOAm+CRzwaFDB8QIvRxoowtjHYOc3mSHZZ+bRa6Hd5L5I/dek3I1catPxuYMs3XfQBIyk5WGvql185tR8kgNmtgIhVVtqrIgJlVFKjpMeTWkvrmTXmLms/QJVP2cZgvCbiAUVi6W6A6xfEZJ0WvW8bqd4TvW+0/IjXMGH2leTi5U=', + 'dg3EN3CCEQDRyiqnCnPr6kEh0h8fyZSjqHol5kQD8tiJQBuP3uRTlstmfakaao0HdmGkeK+ulWhVVyYZF8B/7hfKcjzVawiTV472aMCVXI0LttikzFwt1H/44rcouzzRZAI8JGBPS6QvYgswETKlQmB3qjabg6XxjEE6vroVEJ9U4HiLU+J9S2y7tcqbpBJ9TTiGyUCwdZ/Q+/JqQeuX4iT7Rp4RBrCKU07HIGyYLA4oAuN/Onx6lzL0+qCngubBxlq+X+HSGCKqXSuNNgGzhjy0wC/ZNTEUQgeNaQcjxvCY7NqMYCY4sls+TgPFZhl62axoeVTd+uxA6IzUSEBogbPVxXz9075qHly4z5E7tZWvSZETY92Ggwx+RTER1U+H066YGNm8IMpBUJSzEgiOtCVx3b2X0qVaMr/Mp0nJYgjS9qS0ZLNM9Ngv9yoHIS47XPAtOhAvOBa1c8/58PXzqyXi3cKmRs6hjMP7K5+19JRJfdnWDIjLpd7UPU9QkK05xfxRKHJBO75wH/smNyzGxmuwppsHLdaOyShQ0d0cCLbzJXEub4wYwQEi7Up1YdLBuHDsDDecEnC9A4685ncXRcJH5fxB1KfFjjTmQwQHpA5/A0EO18HV55j+FrxJ1kzRsZedXz3ggD6XmWCX4EAtk085P7dOycu83r3Cb2W4jW21p/r4AecvMk32aQaf8HtJLPMFNWv5wr/xbfifo5kH0on/XnJhWc17RzDpqcix3xwy' + ], + [ + '2kSfJORG+AldUfq7lzR6alRWiee2P9Cxa3PSrmeEb9A=', + 'GFBHdBc60mD4wiy95NgHLa3wTx0cFps1', + '4df4YFTU04+2UCxFVXHTsnIlN+w4NJMoDlIlExbORI1NhNaUrhuXAImzw5SGEH2Plxub3ebu2SdeVU+n4LksF89T9Nu+0fvaYxadRKMZ2/DsyZfml8aa/3s4dM/v8VLMGCYBfViQyCKrFzLfcsASp4Szd6KneL0Pvulb5wLzKVNiQZzgBMM8cCLwpboYQiVlZJMJScCacqB4ny07oFcnw3tBzWxMtdwCaWkD81crqDAOoOoxzHSm4tXQFZaFy5nvNdZWe9mYCfVRV+OTFo3Z7tYoUPKzR6qxyHC4d3gZCa3nw1XtuwVaKxkvaF3sw60TvROmRbs9Y9jNpo3zgBukOcfoicvGgOMx6XKHl0I5BEckEMezH6PMlHIndPsFlPyswdrTKPrKel+p7w0SHyOCAB+Le2vmSPCOS2BIcuGU6UxpB0JWpOWTP9cCz7FfUJ1eW4xxvupGkD0J29l3+SlSi2Y5oq/FG7goQ/Td8qTG/5xYNaP/z1u2rLcLZhGQj8SYo8wY7mzCMktEJsUe6wZqsLK15vPl/JfsxNRjzXfyqwye7sLV8vbC/M9OF5iTDKNsibb5G1MpkQH+Jfwf7YtPC0pJfIGBQJD3tpiR4v+MYAB33AEchX4b6CiMtZ2F8iil9TkBe4JoqkdGxlrfvkiQStkvHSOQVYjHMJKsYfPeL75QC3qV60ffasbFEI/K0BNEDz/9cucWslD4FhDDhvY0Ug0M', + 'caMmMDBTc4DqSdLpuxR4eRqB38benEFdeZ70q+GDSUClxAObruwDFXyFOm+eD+ELa6/HliO+vsi5vN4pHKUb8UCwSsmFcPt7M2jaYyrgMf2w2fQOyR2p51KINUS+Mncb74Vvfln0tw/GwktWhZTp3wffIuvU9w0ZWHgD11u8PYzq8gGIYLCn/a5DfeKMlt9pEvl7pYnjyHK8zGE0Q4wgua9kVHa0ZLIqNzrDhySxS0oeSCIhLqKmyXlGKhRaNF8LZpPhFiSrwEnl/VclzDQVvT/WuGDIfW8fEtsgurXwScBJv4PJCFpTZ2k0SSw9ZnYmNtWDdpoAmKOSvvl/a/BlzWS6P63S4NIID5zh2qHLnEi5BjdySHexFsjPrYhjOCkn3OAr+cEyKRQ7z50mGeQyIoTKp0wKFPdch1OEOOvf7tRVpFOeQwb4/2nQODRtmSj8ZbbBgAW2IdUIwK0QVw9xdcOUKyNBG3x4wHoXBkkhck70IzdjwE0Aim+6IMrxJTox9T1gx+5TswfX52AyGFzvvA25S5JE7vkN5VzWx0KJsFyRqK+G3a6lWCHbhO6uE7uwIWfDA4uN6PLmqXntLB/3nhEy0b8P0KIIbiHW3Ei22DxRIgA+bIzyp5dbOwfrrbhLOKrxk7htzIrzjmwu27LWAZZEjtBOfigJfNy1SzKDOCrrSNx83RlIKu4vgFimMGJx/8PSGLoq+emfES/S4ddFjC+sjGac89RJ39Kzpz3esQCSrg==' + ], + [ + 'W/lBeime8yYtkA58DHGm+x6DKDj51BGT7HPvOOnKBss=', + 'vUfRK99KDkvthS926e5wLR+sM6mVddPE', + 'wcZZI5iZcEhLLVCHD2sMgkfx7qJMXzTDwUG+HuXKGa9mNecaSOeqsCs5cOnNCB65bLP5TWrtwi352bRrfUx8qjaa4lcaw+PagpMned9qe78Rzs+qB5d2eTX0JcSJT5MetfV8VTEYNAKsb1NSPef4ir8xtdyPyafEP5is9eGD4BZe6ISSwDb6GfiWmudblXvgm0/nOSGxFpvILhah1ggCECLT1mxGFnmVZ1nc84TVFNA+N8AFIMc5G7W/rLJ9mqYj2mN0Wu6D64I+jLXL+SOTQEoLSmpCYWT4/987xKyY7WaAwwmwlcG54wqHZ7wIxKoHuCI9gzCuMp8SRQ5XkrsaftXBuwYD6MGLsBbSJ04BFAnguC/eOjKuCFYNg2sLZ3liRCynCI07mR2bkhLm3giNtoeW1x5WLF8hHJh3y0U3G+0LQOdlu1RngPYnyf+3Mk4QyaLMr+dhz5Z8t9p5noJ/Yz6WmUO4M5CX13FxQ2lUkkBgLf48KEvP5s4T+VVDm/5u1w0HKEh6rHfF5bHQyJ2mEWjcry5JliPLJ+8eSCXznbGoeCduGuayVz8BTF4K9xLAXLEQ+o6SmrdcwL8HJK3MHhGFe+DFZgf8H6I6yY8lRnPIX+fvc10t0/dh3zoZ9NIvO4jHOozI3lrCTdoAIgwvPzUslcgvZ9xVAZk53zbb/+mV84kK4WEniPt8SnukMUxGY34bbcYlBMZ8usKIadlGhKtpSg==', + 'Cfa/G31jNAsCgg5TCHzjaJW/d1QR2HC1Oztn0Jrux9SPNjiuGKqBjT390duCkxjaBdsPvMEN+kNHl6GmImvoK1trLZKLLfLJ3EHvbGl89rK3ZwnkcOA7VzGZ2niKZqdj4APIkd8L9MQR/z2YopC1j+6SpYhSqMDWpSJv2LH/uXOMv6zBF1sNzGgWz0dtVlnDU5uvgM5Eabyav7iiIGhbmSbQ8QNjTWWGqrcCKsZHzHMcN3CH9H4GJFuwpDKuiuGhykDXPojNS1SdU2B7+55zPC1sp+76mS55CpLmkmJAW4Eelv56osBiXQmtc1xv1Ez5i4ifik9P4p0FCOuBJYNLQvorS3UzGmHpBaSAH1yRiD+suOuzbypTS4Xuct5PbkkgXvXhReniKfTGdx/JsuSKCgrehjopZOGMmyldYeXCoUGUuy8DA8PgL4g/3vOrQmNyDGkyjwJU9nLVbzqBVd/7QlU0uU9PS1uddmfhZ5vp6F1qdnvym0rGEuahXHbseJ7MGlPLFVPgp/Bh+6LEOhBB+m7MtgqyhgdSLyq98p6nixnTW/p2EV3BZrNil6qHF2WqmodCalaKzJUAEiIj9wkWcWRycY5YPmJ11r1s0SQN3WBGqQVAq2iMMUB1Rej54Agdq3xHqHX6GM7jW8EsBOw6H8xDLgmiOCQg/iADLGNjHBVptIBYyHPpDnLcjs8hipGiXsdiN+hZbViRsu2dQnb1v94lZzdkBgEpL8eDTRMPGef5kA4=' + ], + [ + 'tCLm9h1xkXaBmi6fGWw3KLLVcdcUPIycir3PQpUTijY=', + '1OmpQqpJERNM1SFHO4+2VIO+qCP92XHl', + 'VBtdZV7zAKHG8R+esXjRvbcb4HT1/wjeflojpla7hr9Ysk/KvT+7Ms29iYAe9VG4RPM5uJIs4Tt5rd0AqXwXXnsGd7toRAb6H6xNTFvcGuFoh7XOK49Xy/IhTaw+4Dca7vmgWCZzMxlv631f/sODo99vHlul3RqIm6o7e0BvZqVRjXE0+P4gLY562I++2+VLXbAdQNkFS42JndZs+IsSbUXLLqrD/mIdGugcKwRh0NMAArCK+RMH9hlY1cg33cqmau4WL2XHxU6+vdXa+8kTErp84zXC9CQrjmTuZEeBrtql+WZOieaKkBHNEG/36knQmoEmmt/nl2VCqwQQv+XYxhpF0JDuXpJuR0r9oFsQlZYoFaWlBQ+zbFlaT1Xd0rtjr0A/hEP2M0c+WTWVN5tHxKqLGwSGSkEP08PgO7yipWIRaSNTBZ/cPQrfWNIAwGJ3mds41ZLXyBmfWOYCEnwGwx4IBuFd+FH2LmnnMgwmU62Soj4pchgWXCgQGxpF1IYAOZ+JtbOQp+MwMBj8IoZH2t3hv/kIG0Nrg3TeH969mlNBxzF/bDLSCZBx7PvjhIr/+63W5f4IoxbLosJOukFjbNTYxrjMUSszjpMzUl0ywpr0oG/xZhlMAHKXuqUzLxry+P563YJFGm3c8Z/i2yRk8taR6qTVF0iSHWgjPuniRSYBHDsKFbpl+87tUbfgAl+4t6POxROLktmCN4g+3ThiIFjCeJs=', + 'RmHZDOWL+90HPa5gg6dUJn76kBZ/TLmkV+K/5Zh8B5St/o3Hb6bKAnUZSMzZSmdSi7nlp23eFpkJBRebTYlew/lekUGKiGCYl8/fw4Nk+6EuMxKLpCM3D6R7jYR+7ZNAMzPOWHRWTw4FEqnFopEEueowCS6Gs+Ww7RMoNVKc/YZxTADgPQK8sxM+giMYSMJB/zajuRQ3vSLUWz+MPMXZv9StQZ424o/BXq1Dyh6sfEWq/eUk5BiMH4tYSnQNYd83EZqpkTgDFaRpav5iT6wu1kE1FRv6IdQWFRwkFFU4p2uN6H4E5PC8cCTr7pGwthg9d/JFPy3qZOuHiQYpTTs+hx4ayT9Fe1UCVXUIm3hdkMx5hE4VKlBsNr9t5lQkiJTBibAnoPUx9SBUDsdeQ9QcfuhvxJvS5iPAD+kMhfmzWwOPJi5iQ2hPeQkO4ogD3NTycoNLY2wF00RuRKsgXk6i650kwQ+9yxu6Jg3IIKZulyFGwm2cQSsRq1ltVwSjDEATKTHtX3dFX8h/RnoNfO3i/vl6rj2ik2/bRKWVJU7vtMQiWq9VMOMmaM/i2cNDOHVj1UFPwT+nnl0sJ3fMwBo2ElIpbYE4AztF1L1ISq2HtHMBXyWcdcHWo9+ScYwaH7UutKLJfDj0ctN1EUbnaECUZH1B2xLTESQwZAoE2f3zjyVjXshWwwRT3GfVchAkPBwqCXyUYYy9PMkPa3tKqHvm8UC8CydPtVxfhxQszjC3WNo4z2Jv' + ], + [ + 'WBOCI0uAB+YGqwHKAWlkUcQV30vyJl3FhUB7DoboFFc=', + 't0nD3Fr+LQwBZwabGZO6wfkQahNss0f1', + 'kOmYP2RaAhE8/dU5bqaIU+yweE91v/4dWnp9Zx575iHMhSdtwVZM+pyaucBaMiODdPrVDNjBiAMhR0XbCAm0oBrw0lvsO6NvGXsMrX5lw65sP7zHpC+unxy48ol8xV4TjEvZtDQFy86rr/UTEJGH+X1rP3/LpA5sMNftNS4ZhDlXYxcmjXvTde5PI9Tr8ZfiyTz++0+fnXPt9I44xfug2fQQRBZ1obyiieHcoWEEcoeKy9e+71pab2SuspXl3dF9UleXj7BLXrLqsQzNYyT5xBPDM0qugy4CDJbMEj1Z+cvFYR9qVafCLHEzZCmUSCgn/ZBa9+7Xk34pRJQSlqLMx6BLlK96WFubCBgc1REu4G9XJk19XO3NhRaw4t+A3WN64Zexia6bg87Nl/UvexsURtRU82izUADMfoK+0ziiTGBz3G057Xjp3iMiS3FrHd0kmyJzHtjmY3L4KnAEB9vLSII+NguMiRbqhMJbS63tpq/a6C0cVqzuYu6B37Itgoa00n5RvhXN9EbRTSds0fIaXI6/GNE/0uBp6cLODM9CtNXG0YzCRfMiCZH6Ec318tRrZPuktOyokwnb4y6eA3RrYaRKRhN+/QU5bDbbLoxf52IVScm97QsUQdvQJIOU9rxIXE4jPYPPi9ONGTMTb3++weOOkRyyLqPkzjhVHpi9yC4VfnlanEJYfZoNf7kddssYfcsChE7xOvChhEcA9H369cqM6NCZ', + 'yuyHOmZhaZhJ9y+JnJOGvf0T2rpIzSewamhZ+Wc3hCzvgWXcgAsZqxrRJcwsoK0cmXI3PP8GUgkTQdiWycqnNIO0Yv1gPYl3hnSvtf12+VH3o7gTYeieOSrx6eLwoWjlwJSRZIkjqgUWNloLWHN/gzdZIsnnSGWU52zgfmoUbxHjpPwn0E2Y37WCz2378bFcpZ4uT88okM2p+7iZUyYpt3s6AtZeANMiQZND2uZElFGepqhgmGSnrYV87F8jVCNkDexefaxzkbQ5o7SCzMVwmdYBEozyn1bLB7eiR2ySjtiHsAWHBamASVA6yZlzZK06l3gra/Ul4qcpVrtjH8TCTt0QeWGMQTXyxVssPNYQgAxecrgvbWo8EJs4FVDfUwX4MeGFkoTNc8efL6Jp6dGcPmEivk3ckxwDzFTrWN9/eYC7pVAAIe7LAEg1jnQ5O1E2pfl619oGJP+kTPIjmbBnH03FbvWcPn5mnuqtkQXlEa5464YcxebtIRe0n7mBR++Siw7uVDWRpRoT0MCSmq2OG7S8bwV021JTTXVoq6r9edM0vpskLePZ0h7WcSg8OXbRpehPYihfoJa2QTF2b21mL/KZ7h23nRwFLEn7AeTmu/HuqeQ2bXV1mdqI8y7WdWEdJE7bQJv14iZIQSIuhpdnWGQn2GGdUqM1BYdm/bflW0H4LHwANbOQBFEtivyT441XbVR1H2qbfSgbDrRggIvgenkL66AItxudGoDGewWnNWXxlVKVnA==' + ], + [ + 'HDjsLk3mt1Y1TeTFp7YtIDf1wQj4wOwXc6tAwiytatg=', + 'mtRD/AtFH7Bi1N5NsF2Oo2bLHHXsFR3O', + 'kfjWIPZLVNl/m3DroWZI0Blf1H75MT5/Jop/7g+PiYOewfagMJZeda0x7iQnueqge++9WVauuG9olfTSfjOjjKffd+J0t9qYWjWmxskbi0T7kdZ+ldlTmai12cj8RG8kflotXj539kEfYMM3CLOt61JfEHjQgDg7E56IsecnoYRhiZZocYpMqUygoz1gIwe3lxq3Y/LDduOMDnyYrVRlX3kPb0KkhIYyJRj8le5t1QKWFlfCjzKATbzHIIIzKvSnpqqB3plkQjUleknYURa8N8tbSxDecnAe9JOnokDvtEvtwh6aJf0ZfMGLu76cOLZfPYXOz8RNd7kWj4Gdn52Tf288MjmxvpJswPm9eR9qR3+rOD9yehoFQwfaS0mfj0L636x54d/zINnlokPSnQp5JIJHZsjbUVnY6bhlk8Cn6NVOA9lTYUYoy08J0Mp2GdzDbzhYBNLgwewGT7dVWNYgmYDrS132uTVCJqKi8TZ2xowAQWaJ1KbQ1RT6+CFJqvSmZDnZpFIvAW7CWelIRAlvvysa/6zoeix/CCoT8u9LvmRbVlzrkFjhvzBUyLGwrsTRgDjhJd3c4MSknE/41GZjvZnFgBARY9b1bVy2yGPRLj7tDP/+9xHcie4l/O6Ev/DOuSPw/C5vRD0vYxlHQ0r2gF4YyhJbZeO/i33fqKjZGXsB/SjDr59Z/iCFoO0TvY818m7yNLJuW33k2Ugj1moTqT3/0kC5gQ==', + '/vyjTf7UcJRksYkspw92L4WDxULI1qmOxEi5awYXfE0xQo8pkK5vWUjMJJGE3TnhWcBZ8is8ZfdiAm/xWrt9kV8k6Vx6Rgo4vDvwENyaQ69ofEpdlAarZ+4PaY2UwrKxELIEQe5oOkC59ZTtbuDamkuNhiRJNDWY31Hy6ZNfb1AgwLlH4iNzAhjXASUclWnaad/4EplMtiJ82p2SYzb/RyolVPNQq9qQkYjn+t9CwAqSnVhjtOBt1R2PNxQEtnMrpA52lOXS7dCpgNYvEQYmhSCAKmrLzOO95LG0PG5sjcU1LCNQD3vlH2YzSTwA/QxdwKYJFeOU4WEj/6YdhW7nHXySKNq51O3kEMKQbLsg0YUomwTWYPVEjcNzHNKTE/cjL5HvrVtBSB84HIt82EuAqJCxUb8SDuXztaooCcvxslUf8Dx0ROZ0PTbiGy1pFlzewFImc4oy9E2m39JKC4m29d4/VjFvp5X0+3oxeonb05TSDo8yYbUyFtNR1TnGAmrxV5mCxqN+Gmmv4cg9dw2xp0gs0vGm7B2uPhQTOJ1FvqdlzfWAWg0Vg83+e1DYN9LOn8me1Gwc2Lsl7ai6IVEqYh12KDGlai7lsdZapp/NJlkxY15Flc/cNbBUaAphj39XZam+VFSd0dQXEsp/ugHOrXrydchhZWj6Eh/Pe877YyORxb7YoITNdEi6y1Vojt/1UJGQV5hZHBynhHe6WufW4Mh4Vt7Xgm/bLZxtGnc+9u1isil2Cug=' + ], + [ + 'm6GisOQjotPEhHrWUbIOXObQGs1ipqtmtJ+lN3Na8k8=', + 'PwXsAinX7vaCc9wYR9PoEOEngYL+ePMS', + 'i0mEk2u/E5fOFy0cZBO0kPtjt+Plq5H7UWjwKsDnru1pySKODuuv/JjXMOgRNylH9Dx/TYBTlVeoW77gptNB6pSukFGXBqiqGZIg6L+mbcSLUPfEklfPSdtSW9UiVQ2vXHjPt8MDvxp9oGGarbrxC2z2hC1cdqH5w01bbGPjErqEYhsMi1wjRWTxUXzUAVMxohm4lzOsDaZiBmh6HONdbcnbifuSzKkd2Oy6N6ZK3sBfzoVrV6dweskzA4JpAoe3O96ZSmbY+6ejNTM1K5xKM+9e/yBvISJMja5zgraH3kc1AleqVUOkGFCCuL+lNM4YyYDNLi+73x1x9JqFbovjFIOyF+YuZXB81acu1oXIQe8/C5+jyo3nHHzclIc1kf6M/DuBWQRnEu8pJ8A5Cftk8OmGX8l4V1LJlAdDHuH8ylT8jwHJ3hSp2tT61I8BGObg216G0n9fcGvp++M/pxAjWuZYAVVEz0t8ovC1TH2ZMw9XoWUIBEZA6sxd/ombaLbDsOGLD1BHT/ZSm7idzt6+GhMk4r3cNxbm/tCOl0fo7ikRZSFBsD4/6Tw0ynS7qKtWhz9EY4j+xPltZjLMgDu9BRBCUNLz83817rD+puCezLQSoRpZxGW2xHtxSsTgHz72UxoD+sYq1XL8p7z6wfHynIn3eSYu9ilIdj5WsNw0fCOvNM1pAG5z1+Ac9xdXmupYjGbeuMGvvs4E//rVhmItLnKWbzHzCz4=', + 'TpisaPBvGOCmEde/huLo/WbPARPdsUBRtXyjXegW1K3kzUbKoLcI+BNzvCh01V9FhgfXpY/p1dgqpnxabcDPYzeEa0IrRz7q/XVr3awUBUKqrHtRNR3uXzNnu35y6LotWUsYTV7sAtrF/P3oE1JfWmcvLypn0vOldnJBIPQ/SJzNMDC4sVpbXqa5jNd8UcQfRQdaG1fDZmd72ey6xSaOVkvEMwRB4EEay9uXNgugufcqlUa/Gn8239p4nYUp1jMlLvaLnF1ecTPWCFQhrSjY63s12JAaPhmHWDxrJoNguRvdCvgfQlkQgF5rZarAf+BEeewU8fPLPIRZVmwoTg347BtwQVfthW/GAAhk3mvVCOOnMX+eLrazoDeB93FMUtHge7yk+84ddJU8jHiUso3CAwd7ALjl69p84q2+WOAKIFaTN693TAuIG1ULgg8A+TcpAL2+mjgs/Fp/wDvhjmOIxUdm064WwV79c1rwfqu/ZrDoEUdG8nZ6bnrjDpJt9hXWrhqm4kgOXtAXPKlFbzvahleUX8m+a3dUWvKO+Liu1rUI/zCJKHmM8M5P7j0/52GeoahFYpvrdpjQXQ5UG7nP58B6t1PJvVmd04YidVhs9siP3RHvZtlMHutwAptovMubRitywEJ/B2mDT9OAtIQf7t1T24618SVET9Bd902F4YdWPCZNQ7zSbxCejrfIrfNqUQp7xzoiGnvpinDKaEjWNWCYvn+aPdPi0TGGKAcxXHwlZepx8TGY' + ], + [ + 'Adn7B81X6CpVr1KzPGaLBkGVAs2sWEY9TTl+jKE+Nmo=', + 'pZosz6iIq01o+QepDuMcMgftxMCYRrI5', + 'tVlx+XkcepfiAMeI7ICIJijVs3t0OpDYaFwwqRt+uZSTYNa9E4Cxb3UHyouttI4RlKcDSsdtAKBPnpD+D0PLHzHaei1kHHVStQwkiHv0wdHmgcW1GGknK1TVk6lRlYB0d63SJgXnacbZyBcxc0tRInL35hk5Qdo/y5Y2FVygDqo7eKgcm8Fiytk5lbT9NT5okQp+aMgw7RGobOtoi9g0LQenyY9ZS5YAKT8bLoON9/ZX90XqPjC/Vhhqkm39VOtQzvB9Ivp8evtl92efyvpLCzCiTAuRjA9sNuOhdTnJSncMeRPegoYRW+Z22z3FVjMQZBJvQ/bebmaDELL3tD4OJFbGs2xPmRF5d1M29NS/Lzm5gQLnZQuM03fBJucC6w6HUhkZFrWuc6Q0z0lq5sD+8yrdbj/hXWdSkVX7V/7tLEMIvorE688EMJ3iQJvJjlPAdlVRuBwOq1CnjYUcn3KCGjrbI0SxMTIDS2qNvZ+3ofQgSKdhvXWnjMh2XmjvgHTb9jfw4kchPH3v4u2ELoKOfYgDUJfv0u0gJDV1KttVwEmwqvJHx3rnfBeyp45w35vh+LuFOxklrm03qlBZtpcCvIz07FgFth2yszqZFkwsD46ukw0idBjVEb9qYoWLgxqVWXouuk7GNhCBLdxzeG+3DVGecPDZGyuRW/VAUFHm9+geN0mO0Dq0AVmvJxGJKAjbP4krCU4CNZJIIrrht8AA6Y14IpCur4qg', + 'xBucXCBuLebdlwrYpPCtMkahUUl4bv2LPvx545S29X+7LDf2rhku7Jqti5DqfrbcD1jamDKJ1gmTApIIO/IhJfoUq5YzRzHtnXpe8P7/FaIDL66dNEFFpMj7lC5p2ZoRp9f512J0DYP6IfofPsPen4MJcQkerO6JptEZJcyGMYoSeCQ2ccpfSjk/VtA+KxNyX2mCv3YVg+NvEDUx9CS9PL6rmSbJSqqq51wscPstnInr+MLcnDzs/oeaT6RQAzdDNvg5SdFArK1aborO4VBPH4Jt5b/xi3sz+Cvp742m1QZHCioKs6701kNJcTA3CSgaQmy5q+EjfzopGEDsp/zeS1wlaR9d4QsSdfIhigezhwneFlsL3yyy7OnQeGT4mz+L0BcB8gkjmJTPJ2vxQhpqyUEZiyvv5kAtXI0eGtUnj83H9J01ELlFqzUCJLICvminx/vSJvUxPARxTstc9A7rdJy53D+sGabsWjqVDEtLEzu9jTWpsLAZQcZ7j1QEc2eiV4GI88212Orly2pSU69neVVNTVX05YTEprTCSnFeusdVk1gDd4N26/nE25g9gtIbNl67YNefsyB9Ms4NxZAWmlLObR1DO7ZuyAAYX+GyMdAMtZnhuqubqb3ER3aSGQhHcpq5Pol/6uMfXT5bfpbT/FA4SjGR/2cq2VPHcHBBzMwy3gr0bcSn0AgJUXNqOaof965/b2fXsibqgEaCZ5cPGasP0Md8mMOcfr2H1io37Doh2J9I44uEpA==' + ], + [ + 'uihkAzPTEfnHk+6Bn5N1UBK+zPYnDEIHcstoSzlJcJQ=', + 'AdIHgaqF2fCDODRvUEAlyq3LqEd57icE', + 'OavW2qLBGNRJ845deE+uKc4vpmTzqFXTuUk+upA6y4kvkbMjMfYWPjXd5H4RtaHe7T/ZVwcvsvWqeR43Uaek+Vz7ED/QvD2za4AUg27/UOHZfbSW72PGlmlibff/nZ5Mn59UIGUlO1Bq9EIF2SCTy2K+Key1mGIMSduj1zIUcB5kei4EvYqvusFh9yM52nyF2b27/l/gnASIpEWY+JN/sZEUiFgnRVFFyT0cyylyRCS2oI1apfxyuQcBOQjnZMqOHfomkuGuEIPb3l748Fd+uy9Kqq2UoWHdSE8D1dxtkJS7fxaV2aa/5ZkoYwB902Z3fwsoBRc33uTQTo73WOqqd6GfpdjLSTIMI50sRY6BaHd7QfCuyV5Jaz9UBPbQaFSTO3CfyJ9vN8SXAfdnIR98yMNC0lUPGjrb7wxgQIorqkqyOhH9vmHUUbMZibSg2X8vCt2E+jqsDqBXBBakmxM96g+Q5Cc2/uzp0qx3sFIpLEpqYNSOzXVMTbAAGbShITu4cywwYaLHR321SWwiU4bwfLX7g8Ei239vV8ZVm+vp+hdqNgmNy7rUdVp9F21MPI80X7ApffuXe7JLfyMh5aAve1maUwAfoveBurf0mln2Vz9KR7XBh5a1951KeQudx+WMufVKeD+wDGv7QbcIuL9UevKHzooF3/rq2H860Kdy/WJSx2Tndj32cVw4YoVWJAaqyk7XGzeQDxib5siafuqLMC33fyB4RU6NUA==', + 'u6NK1EpUID4EsBQGPJSGYe9clh0XATem6EnU+mPb5zdS+xEwXAgw3dP5tO1FwTFYxLFsoOf8QQDxghIyr+l7h5XXkKEP1XgyvYfvoGCHdWYz5a6bjLgUh5R/7gf3ZndcIYM1esmywKp988IHmEeq0gGf/VvjY7NfnynYR3bKA1aLKJK/0yTp0W4Q1ikDzLbea8IranbIWCXszGZJ43OvuzOxBhG8vyBpSewRxHR7tUYXCN7SegReQDpreGyyajyZU715MGn5aeDwUWD/12Yhu1l8JHsck0WMZTbkxi+rNui6doLgLZeJ+mqnYVOtriyyVgwYfqr6T+A5gIi58sl4SyK2mnitEg+R+XuYXfOG2qLcvKo0tnATkn9ylYqECAGy+OMtIYouyGrGuPqotPDCwUaa0OwgOYSRRavhJ2XD9URWuxJLW3dVNjyTmwbduNnC9Hb0FxGJhmbhouL9/RNfWlM2Gd3AWInZdBVCycA7ELkDjfXx4RcM9OHziGlh8gmIdrQtTK2UOeQKrGnYwNNBx0swD5uJaRWp4Xbifh8fwYY/DefAb3KbsIOD4ke1z+vnzFqM/Ydq48h+YkCpo8b+RSq46T/MfxTTlwGn9/sZfCfkaGTB3ZcEYszxnbOj4jgfmCvnfj+49ixtSNus+9oWgIJ4K/QZZp5r7R0yP2BqBiQeP0ECg/Cwwk44NZ21fgsmihYaTdDwPTvVCKcvnue60KXWa1d0eXnsGmTK88HEJAYNsG7ibtPx7xI=' + ], + [ + 'DFdXPLIpDwZzrLpbtdWST1d6hpJj3LYGlFXCwY4U7+c=', + 'GejDdXMZFV/d2VheCtwccscvyZ+Mqj5c', + 'bWn0wT/VNY5Ii6X9aqgMM200iON7xxDP1GmiK454fAtEBWdPYl4l6GMwDCg114uhug5QUEx/RZXGVlub3UI0yPV3+0/kIE5UIXwDAFrXM8f2GNjqcdgVYreVjd709dZBfa6WOna9o+b32v4EgNTHlZMzSzuiCz8SnYeCpWtPQlAu4arp7AIbRonw/ufQC/EXkmsHVHuyBzctD+qZ2nJPp3WdazFPyJsc+qdm/MggPm0OIKfcz1ih3bpzGRb4sLHPV61Z9AvWXYsoIX7p6C7SE1n1FY0237kVLuQ2fNupH2oJccqq4jAb6rakXKPwWRT1YKkv3sk2M/vKbjZWHpL4mQbm8wLYVACPVAjl7YcVp+Uy51uvUvD4GvMGVJQot535Ccx74SBAjQst0brv74opkCGPdXDX/LQV07u7hkKz3iSotiia1tv+wwKDRONIVoSYEzqSsPGUyB4rmXjBoGj52XRU9uSEOIhEGMLBpEu2UKrRVf8g8hBvntJQZbc0NbgcTuOKOAk/mDV513j1XjpFIHwLayYvk532aFRT0MCPsPwEcnb4qfoZ4Yfbx56Ye5SmhRkdqu3km8ob8xv2tcIY4kUJ0ZfxkjQfFtKQBaT3QhnYKRZ1qpebeFNltklk7k0evoANVgzbXu6IZdSdKE+IpnlkoCWTiSHaBJ9VwW79pvnt77Xgm61bB8eBlsn8pMpL9mzGY8GS1qcrWkoGhtMz0RyATI7VD1hslG4=', + 'vwwFAStlF1aL7SaUW1C7XnGAYeSFVQSesm9p891ScrvyEkEssPfyKI+Pnu4bejBT+dR8GD/T2lZ6FAXrPEzSIk4Sj7rzOZNzpvZq2fZ+tNJE0NOZD/nmo6SgrTpHQTlgEW+3NGPIt6ta6WXogkWUDsIU9wkRV6a7TiVrbhKwrrBJusSvV9EPi1lLRvkpazWP7xWyWTHipz5SJqH1bb5Ob0X19my3nN3Fd1ock9Q0XCyHeRQkpA/oMeFHKcRF6ZAeVoaDKSfiC2VPcn/y33YCGCIVaGDamtZrHK8oY0rGjz7H9hfi/OJYh4f9+0icWQyOZqQ9VsrEXbayMcvwKgZG8wo3ljVaob16ooIkSNZLQ/yyaCPspHj42i9eqjlVUs/wk/orA513HeIHsNyGa3XtPvCKRF/SHKcCtyJatAkdD2z8HfuFjZKIrin1P1kZt0sEorWvhlvItSOLp1bzcRNfFpHKNzRYuKfnpB+ECNlNtviRN116bmQN8ztQgmRjAx6bZyLCf7SbDinPwBUMgcT921e2uFaOS33aOuaYuw2zLp4JOL5BLpka2W3RPPnhk9Vg3FdUrYKLITiv1i2oyBLmY7UA/G9cQf/RLXQUiuvM4UdhLoJUMzPA4NF3EnTpGWzIhCGrbqz+c476V9U79U2FGzrp6m8o8WiZBtrt6sZyA80L8RF+p03/RkveNH2TdpExZyULUzaagsszbQwR6zaO37cBxSb6rVzyje5jMUKzqUY5zmDo7Fak19gi' + ], + [ + 'SxIbGfNguGQWM9ZpPnaDYZo0y2fX/djPZKXf258zhi8=', + '4/4qQOvnufvwf82H5GduUDgh9oOftoVp', + '1BELPSxcHI+lzIN1+DTjCOKYD+4ZBvT/odD5mXQ5UlifLEheNlhJsmVtRBa/tcaC0+3XrqP9vHGgSG134ewO+R24mILoD+UaEB/CQxsiKV4NMubqNS4/NN+tgAoX9CFH4fWf7683l1BVHkWg2O1FgLrIFiZJBpGr1ufJuQeY+Xq7poN+VvuBmh1VKzsa+I3NQVUywwu/ebe1Sojs3HKTdZ5lEufG8/8xXNwYaicAWNAqttc6XQlLwqQxwedMT1G+R02zM++qKuErrKjfJ4QzHSOanxh5l3nFrbVlHMUoPAn3vDugzu+qcbykEuwCgP3tvCUwFwTlm59ZVth+5YuhyLXjHb8B11C7F/vjlE93QY8m+t2s91SLWPZNjcr9AXmGsXqpU1pbYJwgvkHLo91l7aQ18GD6QYdT5JT4JLJTUs23dU8Wwv45uXX/T0X7aSBDlITNp2e0S+hFIVJfGkMzVwd/WpS+38zyZgtNWp1gYyYWeY2oeXsOLNyalcumxFKv55O+21qloEM7+Gzz4b7DT7jciJ3je/hYt5HxtMWzfCEAzaDjd2rDviRk9wk29kbG5AFNVbAYktU+6zDHqJQ71DtpmRYflAx5u9Zcl5dkXGVwsPk8rV+6RKz+HWrbcO9iERoRLd1yfPztvBt7dPC2fmAwMfmZLsHYyaPqIUFxkSkkQJq/ktRbQeyOdRCWBFiNNyxwdLc2X03gUJjkRYD0dCNre/kYYpXrKHov', + 'Phuz9ZFoxVuJ/KcC8vu8mwFXkqhnCum8rwalWfF9GrK1hfronxCpDn8XYqatSrElRGswGcrE2idV6KyfFHn2cjKaJl3VbVcZ90JhmINmdH1BsFrxWNgr1dicFcD3xuDoQJujRuHTIBUm/dhHTAePOVta0wVEruw8TC9HvyhKmxrOCdFBiQnxrnpI6yZ8AbEnYzs3WYVJaA4+x5STTR/UUuEI3yjpys9Z4Mvg8yV8lFXJPHR7K0DDLnHdD7UlCIgLpEKBDs3qvuH209QeVTlrF+eikRIGjMuZrQHGxu/vDygsPEGKUMEs0upTf3htTGSNiyFtYIYLzWpMKANTlHs+qmILwB39md6r2vmciBXm/cYUyCcFl/+oN1mFthuMcMa1k49XNSfISgWvhKuITfNAI1SqsSt3dvDP2Z55QCbuEih2C9L4JcNrINCdYvT72A5AeFzHnpK6AoI6DVZvZexy4l0z5sSqz9Qo1mFANU7WhN3378JSjN7W2u9nOx6CyOJXhUNKQ11cT/gVJo13PZ+pMMkZZh/Y7W7+qcWBI7teC7uk7qM3paUuB4156Yt+SMCSG+4HuX/PhcEPpM1zN2wAZLpYLkE6t8szFMtnWlwl6nj+/+UKCEKVoE04fxOQnFRTzOPJWqukoChvoJNM8vavaU5CbqN1Dl2vu1kN/g3HA12Hlua2sf3t9NB659Kt/1fFSXZWDmsfamhYF+VyheLTZUk+O7kDBvI3b4DhOnlJ3idISPPSR68U5Ib3Iw==' + ], + [ + '1AZOjjTTJKBsMNu70yqZ4Mmo+okE5X1xILQEu+JadgQ=', + 'MI52X9AKMjjHmSyKwjij6T1c0XfaHUYK', + 'UEwWCrg58gszr3B+d8XMqnDzhz7IE/WyNz9BLCQNlMRcRVFaS1Ldcz/cMK+pZdruuJoXo16SgS1ZDwJh/x3L86TjRqbxrfDZbowuX4GjUjdo9SBNBme324D/9FdZ23BwfEbwVooIL0p2b27ZRl7FV9jg2cYaewWcmAUn4ESLZCZdWt1EEGW1+m93m72IZ90p4AoGz0vzpc2QXpxib2ZkePpmzkgUT5tpZ29cOxLOIORVh2iP9j0VOjR+u9SKErSbYVH6+NLA80CkXuzhdx4qBxtK6xzHdkf6zivNqfpO8CoQkyYJz/qrhs10+UwCmt3HQc9SVAPPlDiJn93Tl7PRRSR5SVPqRfHN5hlxFR8ozsMZQjyy2AFW5kzAHsd54ZWgLc15Rb5g80mylW20zKQvfka1FXdQDcKzPCeWJyTunjTptPQcYd2+Y1xqZEsqQjFB2f4ydiWHcECPWI4JrlE0nKEJtLUdfMv7j1lXBPkI9MDr4rcJgJlojyV9VnfdfFvJvjZV45cT6TVJxWjzA6d25e0kRPbELY0Q24H8ygyBWQY6BbIuE+Xe9aj1AUbaSQ90nhwmXxfpW/V00da3TPbxX9H4KOlEIF9cJLP55CD8kOH5s85s4h2pI9B/1BGCuHAikyWJaFW9uS09EHvm9viNGM27Q7WqTvW24aDIZdHUeNNncl2XeHN7XPCOAD9TZPpk+8+uxkmTvOYevboyMrHux0FaT7cqMf3+nDiQXw==', + 'fl2HnSWWUJOQhrCXH4HMN05QiNup/LC8k4QkemXnHMheYluOk70/YT+khcTg3CRoUgWJY7ab2pB5s/biOuQ9+JJ0R0Z40CeTUGo9B+6Xdxmf/28q1JOT5O9ub08lVcLYeb3aD+cSOhwTYgUMuKOP9U1R1lULZ6owvblDCrPISbC4rdgPLzsmPTeVLXWP1Q1lzsfFpr01ySuPdLCae3mTNn04QBN5GrK3JXXZVDSbxhwzPQM1jZ9sCrTtPs1Wv0C1Cnb/jHEG1wO3NVFAHKfXIqjfEctCy/lX6kxapvcJ9Bxvy8o2X+bEiksd6AZlB1dK5yoG+PaPbQjUdD4ax1JxHmZkaGkwvGvEj4+PjBkVGA7mnHpqiU0Sp7tt9C7nVg1pkPcfWwLdjgkkydEEJ76/xXIYPn2go9AhN6WxzRBc/fLBydcszmC5BpyPhdYia8CcOplE0RrGTchCIiM2KPZoKco2k2lCf9Ykn/thWcJ2WyIeECVS2Z7lfdRL7JAMu1xrH8+B2MhhYcNDZMBWRCmNVOrCeZpj1NuFY6ZJ61Dam0eYag8N7eyM60Gr7cEvGB7JJrJNxV/Pxwdmn2XDyFznc/TrPbGE09Ez/pRBqaC759BIJJvmzPftC41SIE1G6kr/RgbNSInlsLz0NFGSnaSkIlcV/w6+iYsaG1BFncnC2C2R6W/A3b/fS+ljqh2typJwkdIFZwLDDlfqGW6MjnZ2tgM9TA9G4FqixYdJ7J4LGbYAdsdYfQdD6wSBUvA=' + ], + [ + 'WLIVYGvLcNDERUFHwYGluT75AOimcWYG3tvrh8fr3Zc=', + '7iKk7xuKNBG4POaiH7wHN1wbvI1LFysN', + 'NGGJNBz/QJdp0TCSRL85k7S1cYdiEmKNQKcLxecpZtxbTOmr1560euwPN1g+lWrkIq2HU0zKwAqgFECpnJA3RTaY/iltqbd8FHRaxHhj48GZPxgX+oKHThqo6NQ2b3sJlHorQYJgUHIyPEi7GYuvIIYJFTWg+alfOP90nGrEDknM7NFCIYXeMs8qrWW9B4h/qvNb6yDC5fjnJhqHaA4PfX6C0/lNf/HAnVcOSkjuZt2WOqiQsPg+htxzcvnPQdMNaLiGeLAL0E1dBbNmZOYawbGE68zMMqKYy0LLQVEOVutf9TrsnDZ3XLj+LfTwOMirwIWr7ZDciIGQdTdzXxNnlHBnWyHXipTupv43EYeXE280G/w1kAy3EA4cUtdihpTh3jXOa9XRQzZbZm1H4n/YIxKCkXn3CUuLf1A0mAn1/AYu7FfYVGD6mhS38A2HxA1XFS+VP0qGyKZaJxbM4AEj727mbsaVk1oxeTnkhDLJEZdRZYyLMHtVxsGgXCBK2duV6Zsu2Ixh1e62w7Mb3L+E/vuhPWt7ZcF3RTR5E3FJDtS91LIwywCeduliN1/8ZVOGt6JDTOCt/RiXW1Xr3YZrZCgbSk/14bY86pK0GuTY+fH7WGjFuxyfxjCbpKCvDkC3S2QtM06yuaDVcCc9+ymzQvEM4gNGEr64H9V+xsFn5TMu56Wpn17Q7HVkDOR2btck2l1Reb63NLcNHK7V6mzPras3pr/55zdPLQG5XMQ=', + 'DYP6ZMpG7gXrPLwVBP0lkQnTF6JVhltPoYjn8LXtbk+Y/Fy/pPVe0uhbdigrAcDs1nxas3HGoIcoxZhoaGBVOAxqPJERHbXSGBBFvrX67/CSgt8v3+3pMzbtyCB8C252z8IICtpPHP9im7XDldlCGFY7MKQBwJ/rrpkOeVc504oiGNMPdK0XrTDo2Tb0mRR2zNw082JE4al/o8dbug4ntQBZSdvgMEt/YXki42UGkCix6wK39YVr2naAPuXhvJo2budwcu7jUh7ToKqi4FhL6i+wJBcO9IrcO/TvjzocrepzW5xS0IwH1l6Isu8TirWlsnZ9CWponkt0R504YZnn/KJMJ2kWQx1XX5Gt1QLIHmhvOFHblxl2vEdsIRoT2yF7zLv5dc0JhYxkMBzoSgb5hrUxaFTYNFH3t0+0QYgEdQVc5a3BE2uKaGSqRLWqmnf0fhShgN+e7/A7xOoYdz+f/bxp2gK5gfh9dmEwLNJbE7qlXjtM+8sVFtFi8ZSHtBelLnQTS1PL+a/FBdxLHIcIjG9T19/WmuMyyG1R9i2r/FB2fi6NyhYHddnd3xVO1f5lqxOs3/a5Y+OuQxX7Jppvk/Au6y6wxHhRul5lWA9+8EX9PdpGGLFTffu0Bgl55R2OIyGBg1FoLVAaLrSKOicdmp8LYE/y4Kq949JvQi46BfeZDRKy7O8f7MmPYDKhES9B7fwHOecus0+/XxeEdJtwnvbCrIFREEtfn7HRpwSeRtgzZ80q7q5zY/QYv9e+' + ], + [ + '2omZqZcH9AKK5eoc/XDY2u9fu1foZ/tXWorzf+a0iCs=', + 'ejLlvtyAU2LZW+Lh5G7sx437mb/8QWi/', + 'VK+5zU+1ZgrUQcoeT5i8eavaP70oWWa+4f3ekYJK8Rr9+sXoOOpLdJ3bGhSxFs6da6T1rPVzS6B8fnP5Y5EAdAVw71H51mlgecGDWdQwEUEQjue95j+8qM1/+qvCVkFhdjvT3yPEsucEw9Ba8X0OI8LAeaNesjCdUHHO5qW3JJJh+bWcIZUjxYAM4Cvyt6iAEgbj5zFNnIJruArEAH9YKSN2waM7lCVZqJK87cgKbaoD7ZQMbGuVs4Pvgo1Hy71EG8689AR9sfKCE3C84lsN30COjHySlrthw5KU0e3ccqLlKem94HX2ZVLnohzC4qXrDw/tcwzhnDXfe+rB9qKV86d8PWLV4oHSFBX+PYvy6exNOx/Qhfvl9Ai1A7WJXNuS14ZehcYQX13ECbVaAOI7x7YEboSUqvRyw6johJ/KUAB7yXWiHQX0ox0CvM6Oe1x+vKu7VWA7zDT0y70LIhEGTzokPAFyg0MBMLjc4/8Wp2x9MJyEpAclKNq1J/ZAZhESDKxLz5kZiqRo/BGwVMxgC/BvHXNB7PPsWkTE1gl1Ax5mTrXOONYkXoehTQrtSfEu8l5FfBO6PeIL8fs0QhqiBURXNoh4wIgwtL9QeQxAr+TDjrKOQrd5Rm0m78oeMVFWDXhPf/1bvcSIo7uzsw/x2ZySqVMcgBMDMlixfH7iUW1QdvYoH40ehWIZQ4ZBzIEHdaGtckkH3H5nOFBn0YtCyNeIoEEw6TwA4caYRdkQ', + 'pWySZbArvA9pCb9yYS0vlEk0EFEN3qaAg4/0SKXlN9nNuogwm/Q/utQcvXgVFi6SR4dP+fgqMHk+q2ppJlxijv4BUzr/wBN14tmfkSyVmBi7CGPfrGYNyMME2R6qNK0BINkR6m4w4CgDulhmMLmAtWZyM1JxUfcv4dPtKvJIIcA+wASGS2dq9UWwBwx0KTH1fVaYjc2GHePpU6L6TfCMlBF0mcEJwyaxFH/gYKBjWBblg5YFo5h5z9cSk3j0djw+vCRHc+TcDEC26lDf2AV6nUJyg1O7iucSPezFWjLWKdn8p5b+MCWULUR/nFIUcFUrRHE0QYIhMZZspLEISddmefIEDRLyxlR7j5tjig95bWsH9yK3t8Daq9pDFJSRFbP1XkVTNTt3XQ4tDjWDfdCljvekFJ7WSIElDNKx0LEPp0Ws4hh4iP32mZulVHzGbCpDa6MI7yNCB/VrfCcTLMI+Bfy9KsX7ZQeAmQr397rcuemRyNJtEfPsTCgbqT4FsAw1gozlEFIRTrmMI3hkKVdF0vJDL3gObqF2k8xBDggXDNssi/y36sZH0zfgqa1GdXlfLv0+4kM6IZ1Hlth5jOY3q1FnWbKOnbXO3RbvH8LDjY7aUH2VOHha4dTpc4ZCw9ayDgNsgPMAodtYtk6CNC+RFsTaQ+95V1E5jnhOfrghaWcafjRX9Zs+zqe9Q8fugWgQoLBOpeqzEfGBznhD7Nn7b1upWEXnhynn7ZxZif2c7exLC7/b0eYx2EmTGwKB5w==' + ], + [ + 'J5mp1BWd3zklwSCsS3ol/YSxrMl/4OLMBCBzKjvr6PI=', + 'vPZha6bZPodrU5cK3mWE3fUc4QMvckPf', + '+tGaoXDXAEi8WQVRJhMLp8QQqBJv6hWqtoS61nNiFdraUqNxkLDMuVZW6U2ktSrDoSpj3Bt2miRDVOqd7PqO4yFgjwOdXoyLo3MKoDd3JsCDDT7+n1Mfr34usSrKTRP28QdxnDZzjT7NV8PQ2owMIcH1G0hnkSwJFJ2cSSgeORL+bZwMb6DNvfThjzBZzCD1pU57bfHwFzEKCLNsooftpmD3KduoRRw5sGhulUUXCYQ+VK/JWzcZ8odcIoZAIKs7g2gFwoW4RC97XgkNNM5oEp6kY7HPIMwOvnT41N5AqwvC1p8UwIwayHzkLNjLd5KKvUwI1m4fK6HAW6sB22oh5BkN9UffKxQWN3NtgqZsPJRqbdfdKjpz6yxwR9VbChrL+SE6hD2/JNrpa3MEWm9Z+kT7ORvAziNhHUvncdC0G5Uwv2g+BXPFLIKFqDOcbh+XS9pCAGVCnpviiVX3r6wkhBuTRxNp+VUjMXo8gNOctqIiLushohTNqFXNKzTPgdS5zr6HXi8DizQaNd0nhL5tCLZy/rSY2gScGWlFaS2pZPZNv9NIVndPkI5RtJ7Ibior/4IU6cqbxiFPcpfEpHZCzc17hU0fw6hloWs9RfTnKA0RrzrBoqAWpHxU7MritrIZRUPXWMLbtepDPFSPV4LJMJo3Jo2VpkG1el8iMv23OhvZiAUPEtCLp0ZKnY5H4WfcXcvf3TtkaYlctFNhvU0WZwm60APEMD/1ZlrHFfwhpA==', + '7lKHz8Unzd5nwMqPydkHldMqzKQPrtHsdBGBC79N0ukL8RgVmvkCWDRVvyGLq+BJEL8u2Teo9rDmYtcYK+OF18H5mjr+4g8c0iH3g5MS8bRiZnlWWRDQTxO1g5qmn1YS/dYH09ZZ61oxa0dclmYr9yzNg28GGv/rpzDQ9uZXmdiuHMJ2Zi7u+pJe/Ia+Ykr/+goEkrNykn7sZrXDkQEOGozSY7u47/2cHPy0NgniMgzZkfZlADk9wQpx/6z3cmVlanjEMJACwLsn/bCc+C8xDEvp0UU/i3mW97k6z+dOcGbmfQKNFLio8c57Xp3xwqme36BpYkyAqYShx++w5+EHronyIXgk/dBu/htekC/BD5sOfVp7rw9FfbhyqfazrOGTCjQ3t8PdzK7i+E3acWK7die/ny487t6t5oQ/slIsFU5kZD3pKNOLI1nQLvr2awhWYUm4+X9MUU0O2kozsSAvqRKo9hPhhkftbiIyck9WWkA8or2GD93gGQtw8MQbviLiBihKIyomP8gwgQJgBJhT7vjxYCjKju1IYjI5DMSwPa0wCQnVbjfY1QZ678ifk9aJcz5VbmkmOZQwn57T9YR7aVVrI6Kr0m5kuepExDe+DMFYl03FYiXEBli+TNxWl75i/Yy5JcTXMIsoAE1mqDF+bM5d0QhK74apyCdYLTUmLHQl5xM5pRcZMWrNe7qpPMmm7XpHuyQoyIU3hRFF6ydiLUVuyTcqgAeVhrfcRkdOr9zWY1RDZLaiMv1Mz5w1j2Y=' + ], + [ + 'wQBW90swNnhs77Z0jVyJ70ZuGPG1zK714bzoI0JWt9w=', + 'K5nhihv4O+anCoMAVYXQxTuCTkAdks9x', + 'oLSyqNBDUfv1HNU/5cEN3HISeGlp8UFQdIMjTksIZXQ5qfPC4NuZYKYe82OYUFUdljlpxaJoCO4aMh7FRUI5hVu5tWpu5Z2qLOscg73czXNsD9vzS07G56/vCVD8fJXlILzKJNZYZibpfjN+zYhTwL4hS80A/JKSjPVdVV/TSqKxnVtGqZURSWrha95SVh/VsGT/MZPSI3u7hiXnunnZWZ8gHDcYn1DmwPp620Ct9bDBeguM0BZaQl74ZtlvpGxB/FGuLbxwV06NJNOO+2/ZMA+BcnLvXyP3r6Sr4PuwCfgPHP63XtSVel5WI6RHNdnuWQUUBcu9HWVxkn1vqZBE58diwSh8SWsYUNum/UmyOIy2B+pupBalImZy8Rhb0rEJIg8aMa4mO1qCfPPfvdjgnlCB9yHVA2drQ7bpK56UwwNx6hir7P0OMkk+sGQ1+ufNup4IndDcZm/XMIDSvhFEwTtvCG+JjMfzf7CmQAJMwocHpsWuuya2FX4u5/2oRJ8G9J1AOwqk7EjPhSBPm6UcuKP003yFz+CDrkGfeCve/MG2x9H/Cip0KsGVSin7i64teTRty2lIpQ48VkzOMsknoTVZ1OPsugOjaxFYdMLwPWPTkIvlR3qZhRDInMd0jcgyxIFA5l6Xzsa7PxQvAhihRYuOr3vhpUDJCsmJFUnBGiJnDzjkKvRZXw2+apcDKkJko8laM66xmYpXAcPThKZLhom1EkFTrd8y/y5Y6v6wf/4=', + '3yoRreMOHRg2C+YWlJ2hBZsnuwHuqEudJxD1a6pe/D6ewq5RdOV1SOG6IyfDF808Qsck991ca9MfgK3HSWgMPAAVgV1Rsb3StbgKu8Ng/zAhf1r+YxGVhVU48F7MIS8sNKTBCD+OQRmdcEbVITUegqJLWdWKg+8zwUy8kwIEnpYn4YpT7yceQfY2+fAs+zL04Nt62kgTlAQY9Hr9czgN51zrVSCloZP6wY1UedslExNwC2VljVZVSP6m8Gu9vbNJi0I0IQLNXHt9p5OjuYXez5pnlepsDeeVJN8Gwx10Xun7WMvdrMeTAeDpBwilMntgzCp9XPyt5y+nxrETqkI8jMIC6JUZP5h8LmeD+/q+dgAptmk2tr5HMlC3c0DqXEICvGmhfI62yEz+JrZfeUQ24DvPcNZpjZZg0QasNauTYuH4QioJf/DlXEGqP+NLMg7RUEt4+UYwuyfJeppFSaZSlwd6gA84OWaCSErF/8K/AbN126ysRxQJvjkwcjopPy1fUYxe4JLb/1wK5fN936RyZzyvl8P+f97k60XBNtjmfH3OQGGa7yXuCUTIg5Wr0SFbQlA7u0af8RaUGWYsya6HHufMT7kss42ydqytfi/j9bUodDKq+g+egdKlFG5aRrxLm4vYWWh9yXUn62sYwCAnyp6t+Csk4rY4abXq5gDMKSy5ZEaX9IewT1iV5YLIL5Hz4+0AMiYN91XJsGh3XKFpixTgfb6Q47SRQxGyWT4HozRnvkWGl5Hld9FSQc7cFZIC' + ], + [ + 'YGbJ20xFlwjPifh1vPXde5DN07AkpPUmIk8iCOXfohA=', + 'KWpkzxDGjOwfsoYw7YjS2mh9OCl24v2m', + 'KdO5dWHEsnUZvrfwy3irJw1spqePcXmla8MmXG+d6nqFn15PXJLtNhptRcyEYUIoThvPg4EurNIEAEYPJxam/1Ma69/Z65d6rBpJ0BOp+80QVgfeF33g7HrqPxUjMknEOVPzPIhfixj2ohtIJ860YH56a/5EUJcq9OX8k0UURfe9dydtPWOIBU7wQzYnEZ6V8TCD4eCqEgCKMCpWNjPM5FPh0ojoXOb65sAVKJAnscJrUR/MkhVFMBgNbjiy8QThkf3CRfjKZkYLij87zGrntjzfjd+ebC52ZSQw4xmuHhlPUPGglolFHZi5QdE4zn44hul2V5MV3OM+81Zyc/PmwP5lVT2hAHEBRJF3TYY/vwCIWURXuocOtTZBPcS/nuJIVRqlSpgIIBZvA38xK0EI0moiz35TEoWzGoXX+C3lindLYTKf6iwCCqfMFr3kqX98kLXe5bbvzrHXIO9XHNonHPsYkWYh4ntKcA58c8NEqTSnk9PVFZI8IT1RiZOHkpTR1CCQ5ISVmvhaGYZQyWn7P2ABa0WanolYoKrEIQGSDzj7up1738444qiOxuEl2zAiVsckALIWlCZWU1kovs3zN1jjIDBGT719qo45mTrtb5NebO1Ccn0G6LyFzESEzl8BCDmew3/44yfF/v/dSijwfAm5IF3ILTJxiethWjPXKXOKzo7wbczpTB3HiOxwzda5EheR3Wv2M2JUQi0MhnStCiviW8eIra4UUkp2oqQGxN9K', + 'J7Ib7tYMS1wAutxncPnQXetu0q4gIoCZiWWoeM9DpKQJQpYSFCbVk7a8HzLhYqrFPLXa/BW27exF87kvY4naRmnQ2axx39xpcgEevlM7Q/0D+q3Cn8bdomW27yIUBowkvjkLeh3h+q50Zb/oRNiIQAhuXPsZmh5XKlSM+jzuyKL0nwoi5kTifvuJtJzG+RVkZMIp4i+tVJqUcgvyQ/JBLTA0nBdSZGtzUJT3tWlCAHZT6+yjFaVEopcBl++6J/MXAMWuOXDP4VbeiUyEQWMJvaJEFUCRd2W9t5WCrXmdB2fUCHq7agd/iIM5cGJZ3HNwr/51tybyR1sZ0qj0BciPn5XEpw14sWG2pGKZgFCW3zFtf2x2sRcqzt7itRBk7QE20Rz+0LzlR6+oJlorW49l4IOGGlUtmzbaT4ZuzUakjC22W4+uoqSXJ74kQiMw/dECCcmeQ77FrDBTKPStAkM7ntPwtIhh6LqmfHSGjpBjDdVcoNYiheDZZtZ1m7PIehaRR3VC+LGINtoVhLoPo/dbDc24F2GxL9u1TYivTTk34WTi/TRlE1iRpPYI2UwyGU+ac19dJOKcKbnvdepuw1EHRrlRQ2uiXRXurQlL18aJKOXD1wfljWSfrLkzWpgURiNkDpmEusY6wTzyTh30NFComKVhhMb4Dila2j3WIRKVRYCEwR8lxPObVu8AnaMEqYlYgHBSQwsOGERyCk6VOJRUn+0lxECtLNAoduadJPAxAVn/tyRP4ECk+IyPayh7pfIeFw==' + ], + [ + 'ri1IxXgTOzz+C3fquNU+n8Uf8yQ/JmsiWHoLEo0ju8I=', + 'VXKuXaKj4Fg/TKW/c14/Z13rCJ2CFnYj', + 'qBDj+tYCyfEH9hW8ydxSSBJ/oKcfvnC02Vtb86bT6kXiOH1Lu818ODShbgapUQ5kgXCEpyczU4ZrubTTKy4AV31qi8KBFu6zNlRGcZ8PtaqEBxqn2sczA82wWL+gE1N+a89EgAdE8Q9QFuurtya60T2uDNREJ3g2eBjVkw3li8787oUnm/ohw05fyp+4L1oi8+zsWBrEPkUbrHeNoq8WsgPCyp0cGzLanehSN1ARTiGFog4/fJ6hkmExVbiHpxHTspDhfcybaayOArafz6tBVHCs3xNPQooSJblchSkSbMmzsisLX0Ux6/E08WJws0a79d3mQRM09s7jwKuSTx15rHPBImUSAp45EHxBgYOfI+Q0n5VuEAmdj3KfNJKFv9a293p5Tp5jQKPeCT3hW+S988whk+BJWBc2qIaKcqrmgV6xGUDAYVTLUidY5imiJd7BY2HTWRiVD6Tr+TMr8ELg/mKnnkui5bs2mngZ1IWqRFCirwNkDXTVtVm3jeG2EvhaEm1LjuKjocwSlXhlyOKwXjLkAFZnMSf4Hz36OGwqxtO1SF3JO4uOR7HVN1icsXZpBqDdEMevKsbI1iFq/WBrR4bYT46ufv0pg4/L48Vi9MIcdm2WlY1fQVL/2HaxF31oAaP6itivFgwT7cxe0bb1JFVqxs3Q3RWW0NdyUDLuyVgLYllusGex271V8W42wSc1Uv0jlXlSek2Xe2Gjw3hlHdowweyD1nk5IhC8y0V2cIBrqQ==', + 'xrV9VRZ93OayeCSidlOsO4kEEVdyX88V4puEzGqwAgSdHu+vQgJJhHTReISPEbS/ScL3N4IX0EhVH0YBSWC80AzjHY6+8v6bCIYJ0g6R7UF2zIt9mqvR4Nw8mawh3bMicuwktEICTqaBV7hjnVf00olJONsZ3KO32oTzmmasiZZK5S00wkJxD51cHsgkaSC9oddPFo+ufXmBtSaf/yHNgYqOcOfcVTExKHeoEEgdcKWAkUO6mt627d1ErY/5HeC04rJP4wUcNYiDlEBZTpIeLMtl6WvKw6Rkyv56drfiA2MII1qNdQAXr6LITOkDlhMv4moNRZStanLrIA8OJTpnKgqih6lh364pWSgsks5ghXZOWBOPKv2Ujhew/kTzTnsOMwgsZjVtPLfmrGvWP+cX3hcKts76KhlN+eI77Pxjnis0sQQ+jTdsQmIwrVpgTwuC/FXpAn+8LW/aVjZjJqd24QArrlqu7KrbVPctG5RGgGxCS3xzXSK4WghmPM2TEnQY/bOrqsQjSfUnw8XeV6aUsJb+8H6uvnhE9noU4i8iezrL3XeF3/STH3A/rWn6RQu3scy811+yWHgC8faB+6GrL2Ysl1lcfyhe1VF/CUhz14+JdO0bMpgC/phDMzCzPoo6YCGAw31Hdy5Gj1R4Ryyo+eo2EZF70szooqLI41GOPj8qw6ECGbVTxJZQeoyWdYhxacJ6bUysL9Z8lQNPUxkS9CX5EiEg7f3Bgbf1x4TWIKrsIwr19jlLafXA4RNLmPD1vT4=' + ], + [ + '/jG5g37kaxGGqw7IrAY1pc1mU1adi8q0BN32rdAgg2s=', + 'cUBJTUg/cLo5g41w1gHSdJh8Sa6ifS/5', + 'jJ6PweLwLi64OwjNE0ktTzn7EYyhouWLhIopuAtWzhkbqqcP1dKDjBnybxKnaoy8L01xZ91xNMOgXZVqk9yHrFgTf7a7T4EG80g4BbRlHR1IAonUoqdqczA6p3TN0iyfI8K+ZqqLCHhQBJaHQr8y9Uzd3SVn+zIENdNQhNclSRxLP049qLD6wiimlzuGHsCWFLknRa3MCFv9unpgGG4CHBT8xh7CvW7Sv3UlqJK/Rw7hkTHnUsWxYZzVkXE7TGLblatzvX9jBtONgx+ZLAl1TVmeknhZpfgbjhl1+y9aF971BABv0HCHbskuplnmAqKPjsrzODDv3JPMeasjOKSiZ73GMU4PBjARg9f6KJsmqez0Dh+eofWPAWT1vJ5pbSU+rElqUx5UFVwJ/5r5hU7hS5V+i/fpVCP6wgc/6VvkwjFZSPZQM1BX4hbqWNxOGi9fI8xT4uHIyvMZvLyT4gFUTCHV51pCt/W6e1LKlrgQYsH5S1f6LbF44piUlWC6GzvoIpHkqmQyJ7HHFRJv9XYJ98E3ql1ZnHYH2P2iHJ1xbwqVQ7BW4STVCMy/v6WXs1f3lDJ8fdZKcb2/BBwYD0K8hf/QBsjK52qhsQHLpYAISyrTdYaIS21FeKo42jCxvC/24kbpGC3O9exAqxXJczhUPkfVo/BMx+bcbOltvSLAkra2pb2BmlgnJtaqrAVRRRqR30S2mcZ8sJCCW3UTU0suco1oLwNG63hwcGl40BIIOrT51HY=', + 'NISqUtka4GsHG9GWxz+wMJwFTwjS2X/1GdFO8NqigQepZpWRRxknKRe8o0b5szVvTHLQH2LL4Rz6xiMMi8SnfK+XTu3/QchMu8BzPepfXOYp55Q9Zxd6MBfKsd8ATXQhibfN9kRtPiBMM4F/eq6NaSm026wbL5p5IlG8ahAStSm1Q1BCBCD3+Xk8oBNKK+JJzw7LpfCpd+M4AjpIuYMARuGogJEOm+dNLvC3RiePhR4362HCNmlyvHMJxnyGVcddPTOrgzMT92Vfks3rf2RIgMh7uHiA711Re6shVcm+W2U8H3YG48Ps8DnfW2zsN/2OFtq5r3UmcBvd9PgcAStDaVI1XaR02qtAWKhsvfRxk6N6JZznX9FsKGz/g35dh1zm6wr+WqLj2F9E75VIi4Zw4s1WtvSFHpUjhA4HL0bZWkjS9ZIPRzHZBzpfHxStDiT8C2l9JXeTGyFbO3l8UgKr9dDSzT6+o/CKKNSqIgqsK66x/RZcVNldw2gEOz4HHNLe0DN3zC5fR4+mrFq8vn+twUQVKw7dBn7vfoc/xsOVR41KSAladdiapAggZn38OvBhW0cd1iEFIW0ef/Z+cs5BcVhVXueNA7FSHJkpxqsvZgic1tgUARX4cKV37/N69xaMhk4G1zNG50wa0ixs2N5z+n30RlcJL7Yii6WWB0Gmy79JpwIxieh+t6dcy9kxvIPdpCrf6R37/VQIjqz6roB9NOI97JqlCNeUk/wy+Lpj2NlW4OS5/IgEH/Sarf8AbOBUIHTD' + ], + [ + 'vMRG29pEjS+RZvj3hzxnf4ebuZGuxm1s2u5xNiGJJQk=', + '3WMK3qt8bYNAohI6dcPHFdJ8MRJ9YboB', + 'C4n3HuPy7nRhNOWpaFYFeExbhJwf8nfbje1XTwZREO/G5YYAsItgY/S5+NY4iMOI13q47/y3hDWGRf/aBw7sL0qifAm2sZfzreGWBjroJ0Cz6fzE6nmcQE/Y0i7XOCuA5CvljHvMzLx6atFbjnysJwrsLaS/7MVMQxiv+BLt8MC36bwzODCIAN7DOD68NJpPKmftL3juZ4u0VhUNNJ9VNtZTTL9VDGz5KkEyx5O7/6LrTULyfdVovCiVS38Z5mOAQzbDye1KUwIQIw3+yy2k6FGEWIkPQUJ676i/XcqD62K6nDUC1XNC64JSDhOBSJNOsBnzy9IgwM4gMqpqkndwpfFbmkNJ43SnTxbCFyXh4pHSMYErEuRkhvhtg2Sb58S16gx9R6Slnu2TUtkjV5losCqq+zHidiXwNfEoP0MZP1lQbae2DLZB6iMNUPV6Z1R5p1RTfY9zJl6s9CdbvTZ6ijuBKDI/LEt8hZM98637MbAGL9SsWAG5tHMONGQiiqQHrkvBc0/jcjRg9Yu+FiTRpgFF+K4fDV9HMskDGW7BL92Th3mD+SiTv3sOfdyuHKiJ19UW1omu2n4bBjJPjRjdeAcVXfteURWJG51MW88O1heKyK6MSkxNEFojuElP65FIlGSbOTWGewGKkRYkgRqd3RnhphhQw0Fos4o2+ApTLWwoCuuKoh/PQI0dqC/s47iqiMXg8HskUNQEEkbypU8QVg89ibkW/fcio4vhvGm9KiUPUXkU', + 'UAQz4/+AjJRXfiQZrhnJSqD241xD+OJts5t3WLWr3Abjm+vEMf022IzV2YYh/7UdHSFFpa4IulCoqeeg0+VnwVa+lWjTyGHsiQB5FjXBrgTOa7RhS5QMHJXEGGe6/Fx3kTqtvqKMY8LH/w/0hJViZUVlVPL5tSMr4ZC02aqoqkTJOdALmqNTR1DN1RFSRcs806JiM/3C0pNH+SiZO4DsmW5/zA0q/Zv/21mWBL5iyq1dFdFhNmb8f5yj72UMupi9L5FSnXdIv0sR+6chyC2GWK7WGMhWjDOz8HV/zHTIzn8QxU8/oOuokRGjnQvD21EPJ3IbpoK7Ql5eQ4Q9qD8Aol8jVOAfuiGy8FxyjLO5HIJkNFGmC82MFpNno2vWdMIOPgZ6MsF0uIiLnKrrLp5BWkOUCaU4lib6E4cdvhTeOXhadS15MXb2BGX8SiQ056cNNaGRzDChVzLg3huIfDZmaPzQHCoHN+VyX+ylXHdLD1pYnHX/L8rSdNgOp50P8Dc2Bj94Ceyv0N/gehocVziQF3oXuIXW5uTjb7BPRKnIZKIWMtlJY/lR4BM7cOg5rUiphir0EHJAf9ST/Eqpj1JiEdzTBRr7ogJyKIte80yHqcTQnMw16gZJwgBLx4GadB24Qwir1lw0yzN9XDVvn+fn2vHHqzwaXo7D8mvi8Wda0lRG5LBnxohGM4prKpTp9xU3/KXbaXyAvexX0px7ngL+PdFUsazWba6HEXuualPh5Czh2FU+Q5ocyBuAtEt80ZDwxIiksg==' + ], + [ + '7LihIuKfys/gHQGTIP/IWr1JcZOFQOsYPF3nIB/ssnc=', + 'LZs3tst8tlcvdzRXyNreestkg2cKLt4B', + '1zmuEZ6MzksX7yX/osBzGqqT1hM6hllR3o7jP9GeVj/DW3AKVa6txcr8l55YiB4w92dvkESiT5PPXUNkb/cIa3BSoW++3e+K80M+UNKkqrzFYUNDtwrQVgRDjKQckXP4i3ECjjBkT2xMmckCoyJVr3Umg3sq5FyvsnExyC2jIiCPZJsb4wPMjQ8GcO2Qt+8XRZNfju6ihP/1tWZ/tS/BguUQNq8a+sCwqXdirXRon0IW5bSnq43Wgwlv1F2jKbOrFxaWWuXCSKBIPNH6aKURCY/qrFahFAKoQtjhTtbsllSG4lTw9xPDZAduxgOJWPoa+Ql/rhKmJyMaAvNYKZzWrAypPJHkQ3iB6yobdqjbgv3a5FfubWC4obOWi18p7ndkANXnvY4Xq4ODgOyu3gTsyQdRVDHClW89Y+2E2XqnCrO8QCMfW1vNzdYVBpabdpYD7iZw6G++cZ6P1G8HswnWqSlBm069YFYem8ijLfRzRS3cI90GzIhMbNYDA46OgbakE2ph+vvzfn+ccTwntFhDAP2zmA4EnVT+74f/rLg5x+CCXs5Qbd8IdjD0bupYYawg4jxfIaLFGUe/HwNQ0zZZ/g9c4DLdjkhlYHwJouFDATj62OYhh7cV0D3XAFFqk/R9ittkEaOT3F4PDQELK9Orvnm3YzdDbKQZN5JNsGmoS9P/F1isC1O8E/RzkH8uD5RghKOi3HmIt/Jc0nLQ8zFmLJUUhVElmREWgoOGzNgLJ0rPMwXVTA==', + 'BBc3G+lVoFRf65KX2plG3IvTaB4d2XjMOetT5Fdon1GWbjDTWxJ6KI7CGXKNX3hRTW/EZZ51Bq439qN1sBGGPLSlVeR6zlaWPrU9/Gbp20YzwOPLlUN4JWRvIP4yKk/Z16ZIcruUY8/5XfKsxc0dTEeTveOVeEUtaCL1DlA7Qg8MbNsrPRX99wg5HrmM32Y0ozgCAtUozKtfS/pO/G2bIJS3xqjEvyFGY0KL6qJtRF+QeuBEPkXLiKYPtTgY9MgrIRx7khPnkhctNvCYg+ao7syEFYSRhPrUkplrL567VsiwHXt5ZCtO8iJPFPP9lfV9evCDzEv2CCNpL8mZDznQGsk11wjkXFLuRMJibTCTacuuLTJMel7J2NFSPrrtPMhm6mjPpmYEAyoywNoVSayjd52R9rBehOuFfMRbU4WDI/x3SgTa6kcqPRJLUtivKmgnI30S+B4p0pIlqNHpOZNKGaWEVU66hcxR9Q0uhvP0tOy/r041/W3w7Zb/qFU5Zz0LBpZ8LIFDWy7r1JfrD/uPOzyVb65otGjf0Gt4hInIVD5KIOAqCEdTw/ypa/jrMKNHB5M45cpNScfMwUU0hDI+d+nmPHtatIfEp6i/VNq863i8DPJmzfR4fO9qbCs5v7fj8nMVAJXYzmzj3UU0sOW3FhfoqyaJ0a19M/SClNEqDeC5Q+s9z3CzQ4p9XZU+rL9JkExo1k1G6zGtfVk5kpBmXrLWIrApvVIozn2NxWNY4x2y8uvxE+U9pbgWnduZBLv2chWy64I=' + ], + [ + '4Z6DZSbKwAiOV093thhWqYTMzTnBnmH0r61Mfu0DNTI=', + 'jhrU9wD1acZDvBHCnGcrQztCGt8NdqkX', + 'JyFsuS79NXqHlOMDDvVaiwZJ6iv285rTB4VYbqLTz588P9gKLQwe8LSoCKMh+Zg51MugL6xnvnORB8+lp+lYTgyIPKGIfwXLhkSWSSVkcznTypFelLD3O8FqqdeyGZIDdO5Gr9buMryYHQKe+NgLgeQoz4MZWcjzqzzqC8ejThCqZ/A5+RrSJHAZbtiW+TtF6+HCXSVv2y6+3rrPJP6w+8ybf0GtSYpQY4nwpHQfbPHuNL7o8jjceHmSh8ZtqAgi+f9QfybZ6+zGQqWJcl2krzMuO+fShkxSwDwMTvgeHwVmaJ1K56jpQr4Wt1ljtHzj4eHQJ+r/J/GDpBepY2wz5MS+DVkpKSK7yx/vL/5DeX9+/4/mTmMPL+9UDr5Kxfdf0x9aAkctFTq39TNEItdIoi7b2Qv3uW9445YsvBJBGJTtJi2IBBniSwmMXL9Julh1rI9QC9RU+FujvBORyO0AYJ2Tm7YAPqiZuRA8uTVuonxcTYfrBsOerw6wr5rbRrIz4G3jaFX/Ol25cSg8kK8DnnJh/QC0HnZ4+g2rcUYVrJ7QrzxnWj98rnzO3Be9ekLS9vEv6JtGaxKitmgV0bJ6e86l3dpuPlaHthGo0/ChEBx3KaQuTpPqwKhbf4A19JtE/2UkaBBMywhLmgCXv7V7sUdQPU+zzELC5CK24jgGocnATzPbR+q8nxUQO2JFG/o7+S6wGiG+fEJc6sqeQEB8BzapDPJ6A09ipM1SivVLmLMXas5bkZE=', + 'wlxHNReuj95+387Ew4sKTdLWKbDrLwEtCi59ftb6D+XTlVhvnbpJoxA2/n5yrFsQniEdOus+YTSb29z1/2dC7VBjiKzGo75S+zIZa0bqd9/TsjriGohQS23qs7ETi/WAtBusNK6W1z8qGIpkGb2FUFipH/p8INioyKi0i3KAoZirXuwZhYvSrzn8FMrt/axNrh90Y5Q/jrnY8aTvdUAyRy4OFnySePYkKAiLtVALFL7aNXuULs/kKfVsZnyZZ0lkld+r6mDUxG0ezZ2vi4qdJ7Q6qxEdfds/NIcYuVWsvWEAhMqKK/vaFi7wbBZ7nHXtthb2ZQ46XYxXLFMbtyoZou+sISiZQc1Cv44TCOOFPoB8q1+T6qE41Qef4QBYY5Xkc3RZFQfl3veVCs6DvDwoU4Qc0D5oWONjp0sHuyfIqTIQ2pSbYC8yd4PvlE4wUQV3RVXLP6QqFnwHV6CmlGzK+JE4Jflupi5kU9X3Xxp1pUE7OKW1WiwCYJW5kSkCJxZvugD8TIVQPRu7ipBo6rtpzf9JHKYT+7hLPq+pdRO4QUdiNN/HpJWG/N07gqGDVFLiWRXuqEr+zf1cr5or7MXk+MDw02BTlsV+nAxh3k4dLv0lE9YAU5Xl8BZQdmaYB2epAj+xKRQkxtLpDqO1li/s+O8ZDe6Qsnc0skjfz1ye8Rer6YnbHq8rVA/fGUa/Hjx1mBIfAZoSFqhHo3ywNgXpdXfUTfRHJ/vmc0ACbd3c+jwC9jZs9dILsF9DOYJoMj5Gx++4TaGy' + ], + [ + 'CI8/jXydUNZsxd/Ha8BANmrWKoSi54pBRIAzRzUArZs=', + 'A7ub3xbWX+GB6XFg3bAmsDXy6dKfKwqI', + 'RU8O6OuaMlcuQ02e8/cBJP09sGrBFb9O/1vcOCGjanNaa6V9jhOVfhk+vSfJQLDp1Bfl1hHxVkNE+sTRb52n0fZGZd1QHl3jYN9xT7/2yqPT/7ZSymh6aJPz5SgtEmH4/WQfR5qT3ru3vSxkjWq32araHvO9oo+SGawWoVItZKfUvEpe5ZvOFIkFUjyFouQcWXc4qL1zUlRPHRIKQ50Y/D6y6Rg/5+mRQXhvGyCBE5NMy+6mUTWvc2WbHggrms3h3I+ifB/OxqMQE1WoQC51+FObsEEEi7FXxCevvZzd8ZWm5bZAdPWN5rxIXPsronju7zdkKcW9tKxXj02v/6Kvg03LjhYZ9wv6sGPNaM63yyFGjfGYeKy1btAsIJkGFKVtoUrxkLYm95Om64U0MLLKEWDNG5+D2USLAjrYvifpzwHiE+erXwhfbEfQTdk4oeenJIENMdC8gGUHBbzTnHhA4kn9jn7vUgO6Hx/KrSyitCHdPxrHs66z57GXmBRf/2JVsDJX4151Vcl1oVDHD9DAQNZ43Zx/McV4idTRpF92tg3jarAj/iVZe640lUxZQTW+6NtxHxoBmMqc2txUeJhUvw0rxCywJwS3lWNaryC5v+tHbL/2GhmU0d3DqtixeIRiXYIuLqrv35X2Lu717StuOs3c8yAQh/TNy6LF55dPnSYs847HuCdCpy2UVbrPsb7IEM7KQ6z4KRB8NuOCwbZH3E7zM6MMb2JbqrSxFctgcOPR0JtXpGls', + 'P8ECm1vm439mDe1EEanveWBaFMw8al7Kg13yNEVpfCCSHm3d0EfYIzYJBaDm/wEnBg/LP/ioa4ssnF1VqJtZVDmFaFp/znaQmgb47zCiHoF4K5kDqsIZeSybwx8++/7HtwrD9WVYDOSWi5XmnyWBIp4Ueo3d6X630b5f+msMFWN82fZGwcHOkx7T6hjUEdzKYZOPOrF9qMTVnebKer0C1+B0w9cCg3D64qltmbjpjQeasZ5JKDa/QUF+kAau1DU3oss6qB5SnKRvEz+RMV4vWeiQOPv+F0Z89lk+qJvnNmu03QfLXkILNLHHdVDygkGSR1AOhw1nA3HMr5Rtfwwy2im6ZwI/VBxeZ7oJDXhQfnrCey0+r4RjNKgUvCWqK6e7aQTnO3aTjVSvUUA/ElqZOKSurpno3CzCszPCH7AnCyDY6muj797mxdoYBJgW3jCFSVhmS0jWbqZHPfpTypH+7Ar5B4k9rv6NTcg4v2ovdrpyj4MjhOJK6LRfKTSA2dgsIzayoiwbCVS6km4MVROyVG7ZWTEMqAJEH5W6JiB2sZaiHiP3qFzXcDBkVjI11ATSdj0JwT9aD9WAgmS/REsHUvIDAhR2EYP60/Y0yfUAODP+Pqa2XLsnQxJk8PlEPqGWawSFg/jjNyQSBilLbAM1thU1fyLpdZJSGJzAkrYYG6PaZbROXodXe4OPOQERJnCLyYBZmGKVhPwFpCIg4k7GSVUjRv5fHd7mu2bEODuZXcXGI6+/b1IpIPoJIDkgFzwKEiDX/kZXsA==' + ], + [ + 'nzKqeDDvNoTtT1dCbGFKNYVSVLBEiw5rweDZLcO50Kk=', + 'g/ioOTWwGyHtOxZHFA0whxQ4QbVZqRrC', + 'Esot1XNPIcxpx2qlUU/mfVgWJ9Z//YxF12TnMvhy0P0zseL5A1H7eR7YDbXtAxk7BBRRcgOsfQA2BD7wHgQFK/3LXJUYKMnEm/JJAqASNSMG/BVunW8VwiByA5ULYPZlC949fA619YMbyJX5/onTNGiiPGbAhJzL5mjDg43ZtZIQhT5U1uveLKIiQIVRHuVvM1knNYyjPUi6Pg+s1j9S8Zk+tKX3OCti0VuG/0hKEzfk8w2WKzDhAaniTvhTTrW11ORsbrgd91yfpKBcOs7Sdx4i8fnWdEMc+3RilBkyDGAy//l6cI38NDxHwNdTkJwY/57rEbeh6fN1Qltt9aVb5q0r4iUmzukrWksYCEUExgS0Gtc07EZBNsoeiunxNebhaWZJWf0PGhkiY8fJS0+rY4AvdvcNmdvQQAypHyqEaQ2WqIIXcjX/gRO+Qd2LnQ1wSJKk9D1klclIcLlfDOvEWCh9lkj1SRfyyBGYLnegDtj3G8A7Hbq/IS7Gd/++V0o97710PPuAP0HHDYkIn0pPskoKP4tEBxFQQImdhTbB8LyR2OrgN1gm1Aaz/Ea1I7UrTYUxxgAwevjiK2JvISzJY2Z4pRMahnC1bmnVc6qDjiYMv9gVkfoWqIcRWrJmc7jfxdG9U/NAzn0LUtau6tw05hwYmUHPIDHp0y1+4EzFyeO80L0IkDUYkeZkbAnFgipXS+KEi85uQf8552+9t/dzDa1lPDTs1v9pO5Q8oAU9E/Jsdf0AzlKfIA==', + 'Q/cI3PaA1k7k0PHh40/ZJu+pkZGOceKViD95Jqp6olsVxeYhuH6vHWlNtH6moA8cr8B6ynISUmM+Egmel3i8vKAZY+r19OiMaUnrabm0i8uJXjhEIYqTTG6WH2Y794EcjRuPF2c+PbX4znnMtGLWWRj5O4okZ5FXkn8UvRvn0zzP+317Zqy2PbbO3edF8v7n6dpvJEw+FOGs1OpIc1LNe01lKVT/Ba1+E8Rvr6zJADbiryUdJhj2jNwRkKlsB0OhpVAr87TOUvZAD4BZ56Skf3LkdMakmd1b4DqIfk5hINhDqd7YY/dEIxh5Kl1H4oMm89xItNfwDP+zImxEPokhKspeGW4w+xgpzlN7bQO0WJ6KYE0KiTKJawdIYAX7lc9xqJ+WHRGTzvcBHW+LoUL8ferhwUtdoY4H/z/Adja9HF4q4tjRa9xcdscN2PGRDr9smt+IwZdv/aI8nApApxNl8VJ7DoQCBBENJ7xrIbmdfHFj1lSWnnBxCpWWfSsoovT/CVIW9UZ7o+aWTb4VewBpnEYgZlud1MyBtZTceg5ueYwLGDZ/8Qx+4RjuKWeMOUg9q9c5zEBxS+m0tSBalh0MIzDUkuf6Y5HnKYlyTJvyomlze2PPoIg1+r0Q8ynSoB7LUMn5s819ygf+oY4KYfPntf5KZ5ghXnxzVb7zwXloWv3NQZouqj5AzbpS5SH+BAdIQmfBiqhMgqmjcwRWmLgFXUTWS7gxl+VeIqM5c7qcey2ovWEIt6cFwKN7Cxg6SW3zsnLWyB7Zfkk=' + ], + [ + '1ZHTOE+PzlC+mEARc6t8NdLklMzs8/PZvZ6WiVqMZMY=', + '62fyMiVlMpKJtJ16//LIpbpBYXJPMrCZ', + '8WBXFlvuQJfllZWvTNjYNaqKRXI9vQ8GGBxnv8yT4zhsUc0ju2Ebfc1fAS74RUK/vg4Inbn96jTYW+uklbrNr4CbseXw5MDcgXJDAsKQ/PLfRhX6OEnHefQUXnk9sgM4G/7iEdAbI938DgiUo7sL+WLdyq2OMxMj3eiSLJJjOJzOirn9nr80/PRHipchfUvaWuooh0k5aY/SXjr/0Deqo6P8CLIWUnL6obuQq5P+RspxZDuI2ce0uvNk2nBnSr79siSOwRQ7CpLfWV/Mn1VTrOaqlurIx8s/yd24wM0PcTYkVguljzQqVYnN2cRzBjAvqrPjQoyaBz01QoMq0qkx/euqBCTMpCyOw3B7xFS293z+mNUKEo2MJW/xbVKl3umWsjXHQXuUKHOAHpC/a3lroYo3BG746mIJdS1rJWyg4sDvyaKT92SjFazXhDiLPJiPfVEGp/jsFL0rRcYr5QhKMXMTfuUH5Ze75JG+8R/adjjWliTxsrjqEBYkdFcTucbZ/Oyt2u9nbQcHwBtH/pbRbeiQD5nycLcGqXeUQkj9JYAVXNDni2qYZQxcr+IHIiMW+YCmIiW8j4xeO6PXwO5X5vTZJyfdLociOxBZ2rgJheXW7+3N7HrTLQRK39qKXEFTi5Ov17lIM1SdrIPepHdDDGLyhWOzlBVu8s/00Lee3CjTlbfqu0iXAWiwbW169MRRdUbS9nwJZhXOP1beBppY5jC7WOW++QLkTGvPC9yrgpsX7pzmD9md4a8=', + 'tbdAWiVUvLhNdyH7GiSNyFRSyYPAsBUMWcaBl8gjxz7phoHF1AqcgbY8XZzMZX5fnnuCxLxzmXEAeADa2mCJhwlvNbP+fbfwtqLl/c2mjb3RoYqUiKn+2bjBfK1hBpClAzBWkpo72G3h3+r04N3X8w/nxkQLf9r54SPx13L45m6dHn2+9fcwdIjxI7h0/hGhmcc3TsOIKi0Tqq5Fq/qcWYlOxOiuo51tdkizuCz3ouZtG4rO0FMXvjppQ1bFLlqRPMFlxuOCNJ2sNhFZaBuEHphXvECBHkO6a2DHDwwGRkpazRjLEwpm+HBrWRm8Hm9WYQfCN5eUftMSF4QJiP+uV+qPo/CyYeJKIc32JkaKPbt7NeESRaJPWBH92j7uJodoovAbcNnu53ID0YieBsN/j9mRMwA3D8IL8LkeRPsU7lCzy3KEX2Pd52b6iBYXY37RcOvfYEaNMlPrWNRoW6G+TVc2UurhWxcfL6x7Yx78ZH/YhqzIrYXJJ/iIbXM3zEVVKN3kVqu3+e4OC05U7diKY0v2dzYFp1zBIcl8uRzw+PhqeaKoqzBL+f8TANbugZL2D7g7ed1zGORn37a0vGfTX+RPusGvijCUT86b3cEG6QADM8HlZbuhypiD5EXJvu/xM+yKPvanAyduxG/PdS8+LPviHvotSEq344Nd3rJdGK3ZUJE/kwTi5qGrf1zGrflH3wnHFPuF/5y5TphbVRWMAY6Qb0NdDWR0F/1wvopbOg667uVGcDNiuvMxD0va2rIuPGUurLofS9Ck' + ], + [ + 'ZC6e+mueBM49AxF3r3BKObtRso1O0qwY0H16j1MxXp8=', + '5DWQXiZs4V33DD7klMhw3slJEdPbFliW', + 'ENqV1SICW1+IQFEts2xLuDRBmP3aI1b9n3fr1tiF2cRGOEU0+0oirYNHy8jgcRw4uuehXzqt5hZW4wOjwZsbDtmxZuHMQALQ2vpwPEfbZp1tktru4S0E17XfQMVM+VspEQQgUGKCSUwklxmarMVP2XqOfNKj6j3Ix2DEbTTSKLzLjZRBFFhNteHWzUHqYuqQUQfXIwuzYDNFY5Fqco+bwzhDPh0R8gYCnCrjqgZaqMzS2NdO5Yc/Kb0Suyhxo8mZkm4LB8qXJGvWQa1Lt7vFhrC81l/L1rnNUd8FjceNo3S9h7tIDk5U+WnxdDJpAH1FW/s/nlHuqRLJIoIOVsdglpqLC0ED/BrsHYEAm6A2YXtJjmpt5dsOKY4QScsTRifzbsI5D8YwVI6AX/w1tel9gCRWgqj26E9ddXf1qSo0HQXTddfZjQ63PbDrHcAApT9ZBs7fhgdBAW3cbspnn1j9dNmUDAkcnJdk+Mgnx/4l9NfZq9JOJaFZdb61LNf7EVfWL9msZIqGMqPZAfiUAU2gMHwY+HWWlXF02BHBm6+N0Zp/oE7VQg/jlEIKk2tZbDIGJf/N4pIBNqRBkV+CtFzUq3gOOL6eoJIlQpjY6nmQ4mBSWfVvA7pSq76xqD9m2kv/MufTxBIiTm+s3t8Y11HZhaEqVXh9/i614xGlfdLuY8H0ig+fELXMo4JllWz9VWNhvHew6vtbkNyBnP38YfAu5Q1EX8UUikIdgxdG3rzzTShSDLyMTqrpvIQE', + 'Xu8SfITffAUFUqrR73kqU0x3Hbdufb3aImxil69N3w2K6d33m8E+QF5x3kx0eW3kvlVuDdORHK0adDzGX2SUSkzs+2ZyMaf0z0FvWXQ/uvK/JRLou8/Sxfrz5In8TzSnr8a4Ck7B+Nz31NvfK2Y/SCtX62PrWXiEzI/fNBDRHLqpVdNZYddxiZgf4+Ra48SBo6ivX4u1LYaKNtuXtcVDX5dKSl0R6O+cxNN9WGJP+pPIwnXjVDtNUBob7pWys81u+2r/WjbCzZaykYTiQkHmi2ZIn570MJNmTLyxwmr+RZnAaPM9AcVGHpz2OVwc9uH9BxYgNe7Mbdm3icgt0te1UJnjyhdgw3PJjsjBud3WMr6laoYbZ02lc9X0dZueL3OPYHQJfW7nlibbTqxsUE0Oz6SSkDUtdRM8qIb9eKoRYN0Y8jh9Zmj+J5jDehATWKxr4pJmox3Fu1mbOuLtft6a7pM7bG5XIFRgc/DLwLDQDAjiPp4M8uAfMPWOiwu86mNVhYOGL/9i+0arWKgmdscHCPjicC91by0EYXf/LAnJrJKG83BpJ2B65eAQK59PmVt2By9YCpHgSnXURJHCBQlYhYSd5x4u7XWpYsL9n4RypWDwzXTUo1k1kVRQXndLsEFMN9vTMRhZk+l+JukiX2k7ih23K2VRifNvkAokSORT9tzvYf12RaurIP3fZJCJpsZ/3Bxi0m/5Qk242IK5uo7RHnmALYZgOtaEgfu7G4i2/jVqIQZqro+XuCBlvje01mjMCCdexcl+lzmlOQ==' + ], + [ + '3zlybWJtmNtnYYeyKcPrBPfw43H4K2yUgZ8CCbSydvo=', + 'gZ4/yumTuP1qOjjJWklq5o2sKHq24XoD', + 'pI8z+2f9M/yL5R2WpX2QhtaTZYolfOENPFSIFZ+Izk6Gmh9Ef2/XTdCFe2PUn5OYNKdCLimgLOeW41Vsrco3NG7RXclPq98lrCrVDMe+1MOiDcxI3xgF1+iZXzAs1GRMlnYs3DmC17ys5YC3goHpOju5p9qADClRcFjTbUnyArQyYFE7v9Q1ZDwzZqQyCD4wqFafjnIELjKS1QliPLL9qPSqhgBrd30DczNvhxGWlcM1fdeds4S8ZdhHV4+4NLx5W09b4ZuMgTFpczCgx84dT3i0lxjzmIpfdKf5qFlAn0T/lTyw7tgkHwizp6ve6rqbvrtglSop+TZxI42rcCo1u6uLwA342DAlOV8PBMRfa5Tv8GefTPfERgNHvQHy7RcEuYvHDC+Zjf66oOG8glLIfmYffDM+8qrC51agYaPWps5mT4mr1NOjTS0ZqjeD8fexoJGOxLdtHOpefTiANRXxranC/BA7Ur/VQ/6ViMsT/Y45/TWomlwkxKclLbHOZJc8k65H+NEKqM2fASTKOVaMjsFv5qbADHJBvTJ2bD2zNmpRDmzRPjiZIqTQiEUrEX+zdkxu9Mkirslqe8Fl8F18anvAAYCJU+GxxIcM3h3B9gQcNXF7yE5aYlWbglNVi2TF0IKmkl0vW2XkeUYj/edOlwZWCy7bIAl9a9by7kM7x+ZtvvZLRbKfasa7u+0DBZel4VcQ7pzLnbDy+vSdNqcydgeq7y65UjBPvyqx9htnlt4O9weEJoYatyoeRQ==', + 'dEfCbIgWQ64ELKpXg/4OJI0AlcYoAAabZkKVHzAnci/7SA/y2V6d+9NJj/H7klOnIGuVFvpJ1fnMYg2CSkMP+sgi85XQ65pcSxvOV20N8btkwK7eNRAjuYYORiszKKDvqP9kgujQkTi1vTA7Du94ZzLNJHkbmxdzjU1NONoITfs29jsJR6A+A1SRDs3xPr78hupmwHAYKzHONU4fChqpBdbBOKyY1UebbaZPj7nA91X+soReOpEQzVKlyPEBV+fpY/6Uz6OI1IfBEPOAC/77XcyUjQTB6yo3couKvynUt2ehAFvyRL1bGKJI42Xqw1dx8XUnzpAFhkENCqgK4Adpk44lLeKkDmbSfWFN4JHxah/x001zrShSE4kqxZpRP40CsLkqees+R/Q4cIlj5Ce18ewr83BEr1TOvH+sLUmeahyN4JvOKrxYfsWlamxL6D5XF1SkkL4gA7FTzJDL9oxPpQ28POfGTLynDnSJw+gF8IBrt/9lftcLsKBdsQ2H8kyvuFcmUMEEiBWDriQ1f3C92whHPtkG9V4kl6nu6uy6IjGJzimkE+762oqw6BTEAwjCnA3TvQM1JN84Fl/qtDKGJUpg8+jSyjoJVrzi7gd+GoDx2d4z+i8HM/rttbkYDvuj4Mn5lyOIY4Xv7hGE2gLeACiEdzmRsXaUtgP8gWitWHXqIi0xC8AKvNSu9TGilMMfn32qN9a+ajTgwCxTjyx8XLblBQInmMYY8YBy244DBxAF4jSCqnGqH01dofMSlYGIilmRiMtG7AIygNA=' + ], + [ + 'wUzTo5zy5vjspbt9AFc4MKNTu3UdbK10Sr2wC9RJChI=', + 'FjVxyHjXg03YO0bnn5KFCA3zMi1bBChu', + 'SKZCy15rB/RfvVF53Q8WHYPEZDImjEyL1HVVKBzCJ8t/s5G6cv6Sk1p0BuwLmdt+wNf/xFjET5llHjzFMf8JfY2h4acu7sIQormthxQXkNxcJ2EOHy52l+cqdpz9ZA5P4yXlsT4qRQlfHUxMM/lL6CA0Un4NTrQ6+kzlSE75i4mCaL3pKEdt7GeptrENyz4plLNC74cVLtcfOmhKv1/SLOYzZou1Owmr+CgbGRTDrqBY3FVhqDsBCPPi9FYSNctUxeLstoUuTxEHIYm/hWF/S/tXOg8SCja6ADnyTfV7wIHxpPp5FvgQknL93+hCR1upU2BwkALK1AJhBM9Jcj1vl4mEcHjTrtwxX1dPKb153Bh002t62pxW5f45VCxTaW+j85rJ4zIPYZu3QUFx8dhAM8qcVHlZlzNvLijbe0OmAPWWKdW0kUYzv7nf5AunEP4hUd5UbyQsAerlOd/xeL32sgRv+jpfi1qRn/BzEQTO8nv7Vf3yf7d96OTw/V2+7M+C5vyY6ylaeW8STOswgaTAE9zZA1htfnNFpeL5qqLMPzfXr+vmwvWVCqdXPQyx+lQeZNlAJAhKI4ozCTLsrYs2NBMhGmnHNsh+StSphaGyuhwuoqQ62JEIZxaikI0QpjUGZaf1C0fJ5vAgPiAdVgaNXalQgUZ5zV/hU62CrJ63EJNwWPhL7b4apYeSETm46v+OED9+8ogv8nQ119WuY+hkJ7gsmwla0weHOfZpgpZwbVNsO5RHvw2SguxNLF4=', + '8hNFOMsSTQv1C3CDRC3+1DdPMshohiqaS3NlKj3dUMJz7xw9ql0ozewS1OeiwCSH2QOlLJkFWZkPz8D5n/QB+9Cz/yDMmIyNE6xRaQRckK+nlzA4aRwMheN/qV1lmJoMGJLpOeu4k5zgUulRu/HHZ9rXfDxbmjNrsXBXMsuPv1v4SgU2HceU9fRHN35JE0mEuuD7uU+Lv1LGP+MKCgv5tvkVtUBVWsCRFT+Qo1i/r9oe/QOsKDcnevAOzv5aY8cdpFu08FoPaatJYa5j4T8LSfgRFJQOE+KzLhJJURNIyw1IMVm2Oz1uizS20dkWxkmjoKGClJyqI9ZhPjA0vpvdsvd6eBgbNgs32rI5VB0c0j+BgNzcSCN+l7iDTYncG4mAqNtdunBQVaI3k0KnjDERYmqWMG5xF58yWQIpDfBc/fzB91P68456fFU9sQTaDgzY828+jbfUTuSdw8JfDXAToBP2VurzfRwYL0BkmfqMMbGuiSq8DL8lHj6AHjw9aN0ls7X/AdToFsrMSc+3pmePIJcKwCMVMzrOKhJ1t9re80IZNGXoQKBkNJz0iSDYQKwBPH67KonVLDSuVp2SHv/uGRIps9Exayrafsy7mjvSa6h7kslZGRi2Nc2J0ExoNU5Xal3ij7p2eBsnqbhmpZrNuN7umCq1Ej2e4gx3fn4/bqN7TtSijUkexpwribyPO0IRn1KzYijCI6TJyd+SObDPljJQSps6jsS+SYek/KxrPR9dZfpvwmKNJj5s3YzmRmsecz7FBttnfImGESpT' + ], + [ + 'q+WMf6tThbt3mkic77tsx8uMz/0YCA0dVRIf3ZlbURM=', + 'LtYExnhTGdCrTECiQJeZG9CrQrXXwTU1', + 'Zdjh5lBrXgOfRCt8FyjNU4QRHJSOuD9Th6hNNLSGq4eApO0yVLq5xymBMWNkgMVCihG4TgJj5FP2RsI+GOpmm72OwJSQiD3YvY7hWg7hRle6k7KMIWT+W1IcvTBJ3m8Jsskrk7pNuVUUVpQIS8LER3iSwdBCKy6ualD4Hibk6HJCMaNq1ftkfVibGOD4cQA9c9QpUii4Z1QcGxjIU1HsT7yl7XPoAaqCdiSoDHtA9+3d0LWMuuxKYZAwZqUY3mnNx5x2fk18r/mF81giZST1p8J44EBGAIL2i9P+GvTHAHWA5ZaOONOhINF/KwHqezjMo0ejzlK7/UJNksyjNJjPeGiC7Rtu7Xj1C5tIlPcd1mh2HlW+fHBLlej1JTxYF5FtIEwJDIQCxwupvaCHSe0YKTf7DKTIoXcbpaqtWm2JQjVUJp7sHTAee/etFJ+P2avieEsTaXyYKR/FbS7hikf+h+/u4Snrq5Ia5SY9gJ1dUxYgSXDBQHaFLQsugqN6Hx2DzptX8voGdULTMbiz5TLuyciybH+um9nnD7mxf9GlUx+/xVAsXWV9YyleYwLJbCCqjRrmkpoK8us0V6t0iv8Z37mCiLPWXFe77RzWxFyUSdS0zemSGVo9z0D2ntSdIs3QivPoJlReoe4VV6EYJhFXhvetVKuJt4m8OG5k2tkvK5OALDdiFmDui5ArGuhWVPSGEnNgsxdju3/kwGbHXmbUBuORGe1RP47KNXYwx9DpU4EOn0au5ryYeCkoCgNZ', + 'ugZjOkmmFCFvGIxLMiXvN3n/weVRRxNlsh2NUnNGgKU5LCpOH1euGTim2+eOrdbdmTQYhRbBePLe2J+bECBRpkYwMFmF180bJyEEigmxdCpykOrHzfyMjNsfwpEoQNEy+UMNeQjHHEZ4G/+criEHT9MBlPdBapLLPW5kSGI7z0qN2XiFTDOVVJN0xzyAARNwM/5sqpBKb7xQuhagGEFXKNgSrHbUVEemmom9exP9fh6GCvhqijNdKtc07rM0OX+RPiy8EsPDgvoT3J5Ckn/H3QujJ3P4WbUKpc6X49YgBqyxu4aaCuqF+fVY8bP+DdMXt1SYwy7uo8iBMmnahRDrzh+CngP3FSqdd2+HGs0yh6AkaYb69MN2t0w4Pk6ZZC/s0g14/BOcYfgEPNjX0QjJbeYStHJk/g5JB4yd+f+msiMwbOs7yKQ5Wd7CXmiSdi+qg1VD54208zCBr8nHKYco+D7c22HxELUeDxR3TtND19pZoOFqoHpZipLs5JB9kLTfOUKG8R4Q9sYO2ul/6tS0yEBNTfIEbwNiN604R3UMDJgJ6OKXa6j11k0YnElKXHurt2pJRUbk1jkH88bk38JzxHul53MMeZ5xOQXTHli7zk8EgsI/XO+HBIG5yvVVEKfAu7fZbipS+e3jGuwrztomAfymlhXfIEyzK8fo2P0l3dycjvgGQTLg9Lr79vdVHRArELUeVLVt7Haa7e8/By6H2Agyq1id5Rl7a6t5lbX4N1ALcU9B8Z6rPJGwcJH97cNeicEdlIsxnnwXS9VBRg==' + ], + [ + 'o53HQwD1AEV2hGNoPQpb4a0sws0Um9hEsP/XlQZYags=', + 'XqjHwihqlerQzaAy8+Hp4VUlLCrdpUXB', + 'vsTC3zOQkfV7pFyd2V/v3/XFHOqZj3V1uV3prvdijxSWsBcFLB/DtLY/zaK8peDfzWR9+wx1T+t/edNW1e5kwjRkfhG8GPsr7ccQ4WEabqvYGv4e90PThIPOy5pcpPINsR7DJL6C/cvAqlljPWM1E5botIC4feHJ2dGoXBP19AjvAi2fkaCCdshdvHI1ncm0vW4CO+MmGi5wsQ7ioi9qGMGcvmoFS+Z6rk80fQfbyzi1C+wIQSHAeO0zgwNDZSSghf/VaMPIoWfgJxgwivAfOK1/VWzEOiFhuTldhq38XVdzD+WhscV0m7vwzTWkqQ3+OR0uDQ6pb1tpbZYV0Gg9Vk6WJCnUPZKAZ34CuKLOSzHavRf1ibHFg77n3vbJfDYQqSmQ9jlSAivI5s9VjZmRgcmkVZkmwouWq4lxyaEdsmZaqnftzWdivYshnDvmUWG+ZPj4Lc1KzQMzGVB7CEt2blAyDoWwLmOpChOMZI5Q4J84Mz8njT0X8kjuQ7gYlA5ypRdxAYZsotazS2P8sJZ5KmIHN/zmrYVsZIlPR0z48cNd7PFUQ62Duc6KLXQL6GDZd2PsZDEY1x/fuQT/mRtD+rtuqCMKXcnddUdgZjmeUseLy+p/P9qe8iMPttiKiVco/GAtrorq23ANhagjV8lN6EgfugD3N+rrpBKMySGd6XLMII+8ETi2xq38v4qHspb9oAVqDMNY6p4zUgEYAWDgdX4HxLWyK1B11DcM4L14AdDNKI6Y8PdPOZAxmtV37Q==', + 'mL7Cx9k6IVYyJNcp9yMoYl9lsnkxLuPIUvNEuJHpK8n2w+jTMCVkZbua4JvVQm9+uTxHWPRE8MKGxLitD1yhCrwrzoxeNuOneGJjG5NX0GXet+thRkEN+XRerTVkbVgOgxd0eLUrYTuLTi5GukRkdXIK7lx4/YNYqF2c905ZNW0EWk1gMu4pycuLsDdLXZG14XaZ1p4jiJlq0L443tSUyH3ltA4eq4mwgiBeHwvXtGwutREHCoPGjnFXppk7mfCaDCppd8uAUUWFfpW1S0T3V6Aac7jRccYSrqLRNFGwTo736w8QzuVpXCXNIMg9tHIhV7kQc0KHOwNo+ONgBgNfofZGK17j9+0Qs5LwZXfIsZRHF+B4vH49OFietI7cG4JrXjaCiXHrtGgz4aWRnfrBSxW++kF7D543QQKQhXIq/C9ZCWpLFp/ax04A7uUtM6iPJKNxBFjsAQAuvFzrxgmOv35+BCV1/WAKfkWFMfWhl/WNoqspgSL9ZC9G8pN5QHsIGsUBX6vHw6hwv21CwTsJoN+GaJEgog9jpD1O2MMJ40bHQskKVc+7gPAqNZsoM4enh7ZiFBBgd/L8tGMmGwKa5I3kx28P/vFTrstK5giBVVRAH3/C5XAzo2DGlXpw34W/c7M+qsl1bEL68cpZ8ACvQWKqf9OWRe+0uUO5NOtYOfbLOmnuQ0u60bIEPtZxIr15PXTjDFT6Y3garHhPCj9Wst5z9js8/XB34duVaOZ9+mPq22kNW105zfOK11oLOlOZOsh0y074IjpKT4qqnnM=' + ], + [ + 'nFq72uHhq+pAAN2CZxFTcNXtzmAQTGvEJ+WDrNKHC8o=', + 'mcxVXCy0Fo6racHVGEmd3inbbePzvdvr', + 'wy/5zpKWamO5b0yKZasky5WM94LZ+w9cin4Zwt1uK4ywz3XeKpEq3+yr0xXsyQMiFq7WRJZ8JhI0boO5wh/ymUIOAQc6hRGXqX6qIJc0PwenBnxet+htaWA2PsuZBL1D8TTO7cY2EPC6naRub6r9lH6SH6y4Ro2l9F6RwGhe9AVAjDgg5PpN5rFUoTHIVNCKCY891r41Y6PyZ6eWFH6wK0OegRNP8cfBInU71jFBQ0zIw8KeDq8eF/wrq3JDijGVloQulSOfG0IGrgEtg3I3ZfseF4dw4qL84an5UehUh7RWHXjHxUuBeMilCnAsgC5cRwEcuAi/ehADdQXOu2VxOKwYWzfp8xYyo8/zBOdYeRQGVuu1/J9bi+MOCtttRMMSjrlmCve69VWWoPXQOncaUA3QQvZVoGhYWpVmPSLgD+8KyJCBl0eZFVMkvml0edGQUduQL14P3xM/m1JzGGH+x18+fIa6SiHVCJHORSimcc31IJ2RKG63eBODh3yEYkX/3kOi3+vBjPyQvQp+rPdJlURTvm5mEIp+LB3f1LPPv16t6LezfwwFS3XTkPjJEZSup5uA8nnaPF7Ako60HAiDtaSmLok1LoB613xRCf0LO+srRchI1QJu44CX8AJbRnTdjDOpmFZxZFl7MML31eFNFpHnOWXlaUw+bNUNXvmGxAF5Ac72JMy7NmYl73n2BAlP2tGJrH2MeI76Xo1pR4MdKgIvKwO8P23/wOUenSc5s3QE9IDxdxqCHhlmk2yBCKU=', + '8Hm1cTqVFpY0KeHxvof/wUFSNnLxIdwD/fYLDWy54f22COHx289tZvZMd/wIQL60zo6hjj9gMLG89JbkYM7jhdyBLfwtLSiml2fNbVgbYvSvaCmErofPd07ECC7m3wdaH85bEMOwSNME1rxH2gyMkZarijaZIS2PfIPshaaMIzSyCzFtKjWQ2vOkabq9IFErfLoSg7YhH9zj+2frOVjsU8pseL9NCUCZTrl5IWQEoZGjt8WtUIZ3IN14HGT95rxLWPzYAI5XF/0oMdbvRW75wD5bPgDXm1KnRG8UsGIgUetHbGHDn3Zp/o7AccKr4hDVKKOsYPp2kX1I9FDCS+1Vwqlm4i7OJ5WSZWjYf8Q7/2IB8asg/PQn63ya3Y2PrcVDLda02gYK9RPLa3MMXrj2jE+P4yj/Kxc/QinTcUEYry8j2ZzVYjVRaGlWH3FikfT4q4Ju7UeiDBhKpdGWi/qunyl2FQ68ktaiJeTAJb/d4LhP9wx91WNgxtcp5tFM/DQYCd5EEhyBCPndcHLyNUF9xpKOHn580k+TylwPrWYMSq2CLg+VQEy6hCV/cl905SgKBay/11Gc+8brl6bx09PSVMlMJCAqtWwqYN+e8p87j1G3oPxLM7nPzoY2FZbkJO3VssbOPONL7gQWq3cEtsCw59veZEpXDvA5uLk2nFamFH0DmOJCComjkkgEW6iagGOBtFp85euHkUQyYjqqc3LT49sp8j8iqvlKr6JomYA23Ih4qDNVWbzTMnMl7tyyNyfday3Z5egLDv1efIoi3/y7' + ], + [ + 'ISLVK5vG0WQsHrMX+PEKBsp/7CssMIV61Aswl2mRnec=', + 'yNK0cGEg4w7fIeWe3lTRx6oivh+tQCtq', + 'Bnz0SwOKC3uZDMc0EFyzjc2iX90NsXiXo3aO1x/UD/oZ7f3txLlXqsyT3nqMhov9xoyltUOD0QzmCjBxz9eeNUsS90hMi48ssFWHD+0wdnV7BEQLJypYNd8oVZmZURqtHVlANQWdJEZWAYK0TXulu3RN720CYK9VHcayIJJ+UReMO7Ed2FPND/SIava9RwaCT3L7iGmNawirKACjoo3cI32l+HOLPS/KEncf+wXXArJOsrd68KnvvHCTXOsjjtDq2wgqZJP+XxfIEtW0s4Xe1o1/A1jJFlA7gsFvR/iBOtP9y5b44XT+bQMVmdoV22vLfO0vz2ZdoawhkV4Qx74MnBPjC5EeJiqGdLZcGD3EyWlV/3BuKLVC7ZeXzLiPBV4GRboVaSz7D6lFQUa4NZMxxnZWw/XiB1yCzc+awVDZ5/XF6fK4l4O/o8jQscEbzgOz17BvHd4Xb3hz7FKIkYz8rTy16LTxgpA8o4Z4JX6THISBA60JqCdoVepV3nUdLo+2OYucra0iNN5Ck/96ayrpE9xNelPYD7Ye/M2tgSb2ZAcnxuGwtOd6KwjsEorfH1rRZ52IS3XVZbRylM6Kp+qdqueLZ26mCdKLLOnkI4wffSSD3fJejmYCo0ui2Db83+zZYEvp2Z0VP1y6dM2ZraQnDWTTn6gC3ZaU1TMWMqfvrrO8HZP5bvGZXZEAKAAgbmzpXtxez4hRPgb2MexdW6ypTD8oyZTZdLzs8V721t0TwvrTj7VYsezU7q8z/wtBG62y', + 'L4+5LomG5f7mD48O8HyJjMnRzZhEVeuB9Hmaw55v4n4g4i1VtHs8boleMiXk/fjWntlGYuMGbVkMfbieI9g6dG4CPUvaSuqGcJiJMlZw+h87CA65PHetZ2nsrm7fDRQeE9NwGhns0plv0I6bfoFJvGh8+F5P6SodYdgj0sglqP5U5wM6VEKcLgI+ioqwSfVdeVoMQhlFvmH1rIORKUTNHjO+PV8qtkEUmrTUv1wBCllFIXH0Rwk12+jvDlkr0tryYlRif5GJNcqHIX57e/JZebkwxP2leKHVVZLfhYhS54dnqeJhYNZZLKreSiVsCFAdWsA8P/B/eknhkACR0dd/vUmN1LxE/8YbbCdFEqwbGi1671lRVGhoVitmu0OorbQUiG8HNc9OkM/WY7d23fwuru/3UtEKH8WrAkP1aZxfMP+ij4bHhqKK9evkOndHVqW3Wk2bPn0TAmWizy76dNvA+ilBai3E6zNNfJgJ/p5bvrK0VA/VFTq08NjC/Qdk1/aKWk4MhoFqaiMzZv8Cehjo2/Jq3WXLjnYqX+4s7nuKprvswFB6O9zDeEIqhx31cL5KqYILyVotgBg53XBLmnqwZyXkFfJlEr6KM30qDLgArRQ7mcQPi1UbUO8qCeDaMuRqdqVLBUEFoBUEJEnFAiHGGom8CgxP6GuQbLar6aIO/dCfd93OrsmtTjpJgaK85C+7k9KwSgttp4ROR0paA2U66YaXcaM4l8NUv+5jZYGnB+fAgz4yo4jhgOqmR00omp0r2OUgj5dowPw3O64jpsJwaw==' + ], + [ + '8wptCFBHYeFke7EdqEtYzNi0dWwOLNSmooPPx5gaz48=', + 'eGGP8wA5b4ZHU1iQKKGX6D7kF4nD5V+c', + 'Dmt6wVSf1PFMTzjYtf+wJxbG5zRL9HB0lQiBQbf/Vx0jQ3/Jqg9B2A8gHmJKbKm5oDSkzqJ5PRUbF2+rlKBLbUE0zufIGDnJ9DsxTS8Xe+UkZsOmHg6at/69zrOvKvattSlFAwprOg8aiC8xNBFVqMMYOdwHE0dNUp7GccDa0/TvUJDWX2HlkKN2IqoYOiGPBxxv1VUHY+HL364+V61TmlfKSWjgUrXq4bBtp5uL0QsGIrAnmtsnUyq2g7vuaPHEAByLAEtncnJkNUNcHeQNUpDHX1vfpADZcOEYXhl83WD6i3J/y1mSSTHTVayl6/gAAE9390NkcvQS/XoFt8U2lxwll8nP3tX8/E050pkxLyk6wMU/kx2vhc3xkZQ57lAE6gwIi4HQimX/GbuHbfAkvqA0Rs4rwtGOWa44uZFi26Sm9J1tBhX1Ugx5Itg8BJo+HtWXAFHVmPLAECxcZtUPsumyN/XFwcisa3CgdC/fFj1qEHSzoaM8Dre6cB1M9PRGtj8zE8XPExWu5Tq95npRiNd4e9uiV4x3J+nVON5YaAKeOkhlHLR+wrUU3hSzf2gTEBrdSgm56DahYpG7lk3w25SJj1EVu69mJSOmHh4IEQic1yy3ZWNEnXE+oY0Yby2DbhScLVMQMRlqi3PGzdxfe7auYAJgDcQ187pI6bbTwE3ICFvC40NVOnAoRWsVPOXj+dAipBLeHUWE1YBxapBQXsnlKQKBCzQXI822Mt8kYKn7+OkxEqMW1fdQDbs388BbLA==', + 'sOPdce4HbB/S8Wsm63Bd93Nwv+WSi8CZYy40edS5siOkFE3lD4zE19nqETXcrOc6Eg7yZjJjgblAFrEvbvoHR+EowpltZGwJGYgwmmtInDzbXLz1Jtqvr0dU2JmhFwyc69QRIq/lPCCf+H2nbyd4siGFlWkdRCnyBB1LUFe5TyJj9mvW8WtbY2MhCNP80rpOcEjlPLb9gMa6XIthlt7YmDUhJ1oGYsioS5fkZCcPcF7IHxdD8N7F8OVQBVHz8sRe6CUXAPeNSke3S0E1hyO5SrWWGyKn9I/xVxVOfl8XSk8cUgxnLqvcHLw9p/KfelbjoWg/txEmrPWKp/5QHLZD8UfQS77J35ztfWHXH2inxQ/tGAypbYYUz9jZJeMJ9MiWj+SFHawwvOj/Il58FVqJohOimGeoNVTCJNumeFXCCJhhvH753VQIyCekSf4D8GFWXg7FhtRnXyK71bb0fBFdMsLku7Ifj6FEc7Dd9TCDOeMLimR0mjEe+xwh9Kmd62YtyP+ILHe0Cvt1ci1mbpoI6zGJoiHcBnLl63hELSdaCijw5XU/s2fH94TMT3YsgMoY0Sc4N+9pSO1Wnqf6mt8BKf2QARArjDdN2v9Zi9WXQhsNlZy/JE6JolbfbjOp/ws5bJbUBw2MwBxnN9zExw6n4vbydQAvAtkNctoaW0EhmFiettpdqUdaeACctYKMNlI8qsan2ByYOL6DxOrq8G6nv+wwYYLIZLCUOJFKlzAau8VbXKYnqCPi3KoddJINmVPljy7rKOw8MiqRIDnAxSrdLW8=' + ], + [ + '/1B1UJWw6pHtwVNF3r25zjUVb5VZEe+dTcTFo4a2UlE=', + 'KgdtNbYeRgwUB2vrbZoy0zTBqMUlUQLR', + 'wLwMPsFrOVBQC98iZdLpOQVw4FvIeHUD6QF1hI45GJUCxDyNr3YDKAda9kXotLgo+LYK+WuIuk/g5QAlEXdnIFd1t9+/vL8AqX0d70YNA/vC3/809OR4NU1VpKDxm6htqRxvdDzna391Suc9XWtbf3zxNRNlTRNPKO6pAPiO3q2+nc5uLsmXkPAHm5kOVurqnmmBNuzuVWgS3cDc66QA8Lu5vzT09Ig+5fRxku0yPf/tCB8hwIZQgexWKAAX8z/RJdcqGXC/KaGndqaf9rpbYl+FLTdONd7R0+Xk9Cco2M8SsrSxvdcjw44oErTRDpylk8hlspkJpCzmYJCZ2CT94+Zr2rbgwOa7WcH9R606JogU1pGD5h0Ck1znKTKbTDEaOIQmJR7VbCsRFRr3u+THneQj0+D2LPTOOQK+82FRpld9xFT5hcM4kJ3tNmJXFs4FFq6OtapHsCRWzfKJ/D4qcrnnOY3kSeRGrwRLyvceUhDeiyONO/4Wq0TDVF+wzMD4lQv11gI+JCTFejkJ8KAbGg0WYOPTcwmnrVb7Eilvev2hmJUjqhWu7xzKzQEOhY7BZCJOVS0QjgcwgPzZfF67MFyNiO2o1QsFz+UfMPeRppj23MNe1/OhFSpFCSw86eL6UGcl8SSWr1hPdTL5hmlRwnUTO8Rx6xQpMXLd/UCti9DD5Saj9tZ5HjKzyXRQwIpGoBkdT+Hn2NNLNylHjVA1UOrCGfT4ej7I3dXyUWTAImWWspJjMx41mQVS4ZlhAUx4nMk=', + '8IpDoWNQCzD9zR+MBFGJy84WeJDjOkK6rYtr20xUZJvPhjMnaIYMJoVyIszPWMpcH8b2/vl8Ney+HDIsm/cLRFP5nQ9HyqmJeoF3PS2UefO0cacEbsNZ10JiY1gf/YRCCgWC4LzmO0X8JdmVBMJIrDWR3uTZGcKoINUXW5yMxjA5mKCTlUyBavQ1ag8N9ap0kY+Qb31ZklLqM+u52A9H2RPIyZxxAFwmgMSVp+Gk+0Iy2ZvtCoqjF9ME/N9zk/Q/NRjHlx5zGLhdL7NTq5uIWApCDvjdJQ/RpkYSIVmVyfZMJPg0PrS+WA2ItcSL1PHK3eLliBSISbcC9IGzE15n5rJs+GNUomK4ZbHcDLdihYQwuu4XKz8syr4zXTx/ZiNfpWeZ3iavUYKW26coooKAtbtXaio1F6QT6vvdmGIBihqm+LAjvncPVV064QAHRsWePMfBdzA8CT9QynKp4PI8+eG8ZRR4Pyg8BdP04yP/u0qmS4psP8r89v0KAANGO6enBFabTCLnVRu79/UCuDeLtJQLBXKlaVtTaptZPEC6rNjeXk9Q/4jOaIqaRreegt3It/BLubD4l0P33nXYcp982wY8aJYvghEP5GOJLKeFvsMs7lcD+dn94ckqpUmdaN7ioabG6ZoDnBOR+8GW6kM7NiLil7JOMt5f6spT56LCebJiq3unSo0WGwUs/RKDl/5inyVZy++2WdVKnbRnuYEfMECXS1uCZncAu2BNm2YGAdVnFSTSmOmwaqLRyvfv55c/vyvaSutUESyy4y2oM1MKtOZO' + ], + [ + 'p78lRYUo8VYu2rqgsac6rrlYoBSggRINPm9UhgFbTJA=', + 'Xuru3n8kZRwdz5ehkfwNONcEmCiM5DeF', + 'LWoEYcCMhEEvvYsSpKxPiCPieskGTiRa+o3VEpQlZdajHKBDdgJFK8A1+52LE40Z5I/ph0KE73k+BbG4U8wOEOsr9R1sFC1uyqpRyu0eFG6wzmqumx8dN1tH3CL4C9tXna2UbCB6BIFkuHDsvGpZ/qcp85yrmRpGRs90pvhESMHytVpJxBYy2Y3OefkTo+bk+5hayN0gr/JdB1++eGPNNTmXVVSYbbJigaPflgQ9yOJ3LVBNk9w0szdZa3a1K2fnFs/QouoZlpXjQqTexiOVMMysEkDQavGNVnaGkao5gWTJx3cMWwGBAyjENNLKsOGf9iWNLj4f76/+9RbWgdifsXhoO/rOfGQtFUzPgwrQ5gBVM7pflUJEbbnVzZ51uxXzcdfHCEUt82KUBWc1tGk8ElBW39mQyy2k40SaMnqbjXaJoCFX33ccWR+AN1leQwfy80J7A9IRWKKhXNgI+hDgHgGetWyk5TJbzjGYBf53kY9BXaCcK/6bOJD/aWNVvd7CdEFwOALrz/4fFAUtxluqYPUQmIASli3QEBNuc53AeJqekG1NqV5AHnp/sCC6J1K43h2RVxlDT1qNkqtby7Y2mxF2hudILofjYlQBgiw1oEJCAWlMU0ZfDJOB+u2jQtfSMrkZXRrQ7BBF//hPtNFEANHQf1GQWaeurFc7eCg6uadx1bTXJLYoz0KMPh/+Z/EFkUoULrEKAF0vupYbp2LPjwKuS4UDgLl48XtVFaebuiRBggiBY3736+8eFfBS4mzVRZ6i', + 'Y9Q/toAH04KWHi2q7nuALNzLhEu4yX4T0YArgBkneXKJDNthYIh6gnkNMlysERKGfUjJapzuLCvo7buaQiQ8eLLYciVaCWePB4XqIGngts6qyTtKLShkUfojGuTDX8nzJCBE+NWE9tMoV5DZeaur4DmeA48+/0kmv/V9O7OaAwHwlPkn8GvT4+RXEnZZ+s9vPVLEUqPQx6sYNcWkmgmwCiGbKmTAwwvWk7lbI/TaiLxEX+BmLyECkHo7wW7k1ju7EVic8jRDl3cO6HbnoS3i1YtVHwv4mivPD+vciHLBuckuedSYytlUX20uyi17KnGTzI2rVrd3rlzQWY4hoeHZeElkk35oMu8y1UuVNPZv09K0LRZrtjzzMF+o6y+zLCBiSynu6E1vDT6nRx5leOMF5hSWbbBfmHHtyJe1jfw+fSOuE+jzhYXIeVTOJ/oRML2nccMJSljw0oKVrfPsFUy6UcImowvO6xB0ctXYgAXkV48cj3zUCMyOYeRJSLEriz3lR+hQwEl0/pam1ZbspwgNSYdQF7Qe42m9+gfcGl+mRVCbIeOhB5K0kBdX7LaAYBFvbWFk+r88GY60Oa8FV2TfRnV8jklS/gKVjvf07x8nJ4laB7y4gEmk1J0DHIlxS82UFG//aaHCl8svCUlER7GQ7Hxb/+oWRS71xf+Lb8eT4CDQ+x7vKsKNNgNf4gP6415oUq8pKUQPjQhd3/l9Vqm3X6nob96fQ9ehvOkZ2/4Ll31AHPZFp0NyKAY1QdCRYZbg07yz5d/HrNUZ8daojIYANeeNhg==' + ], + [ + 'SyWnbwpBFmU04khU+wXmGwPCh8LyUdekZGfcTDwIHHY=', + 'GfI9WZJ+VCiaxH1peLboc75hXH/6OAPT', + 'a/BA/YRf7Zir/E06CGj6QfB3ewZgEu/rgI+0TM+kHUuRwtBYu9LVwAEZP/YSc/g1kDI6m0qhbDUiRyt0J4NQ96wTZ0HubgQcOCFrgZWqUc9Ayqz9fmqmMG7AspxdOTAwnE8QG4GxG2RXrtjN0FWzksQDSr6gWxIkxf5cwNXfJjtFwtOd6lfbvhsfZLryfG/L/T2ObE0Sp4FutC8AspA/Qmcxmuhv4+fxOO+AjB2mMtkRLoG0VLHzJYvQLuQs4eyg54MZx639YUZcV0TZ4cGI1OuQ+sAOX5ln03mDMMEQUmKXhIKnqMaQGPfn9Y3Pqtm+qt3Uuc65cU1WfJUYh33/69sLTH0iAGPWyvsGsqCjkbmCxYC1svwUiYvikMaNLA5MECvwNxTKpJIo4Eo1phRSwRDsgspxuxmo+4A7YFB4C6nP3tgaq6/Uo9mIlb6aYDi2T06hKDZzckaGrEGKdpMRUtQaaafN7U3Vv0AjHQ5RquPnt3O30VjDag7j2iJ9DMDoHjnCsGK3gonJ51002op8SGBjhs3rcNqQmVtCAW8rfKNap09R0KiAUCPnKtTJ4bGi7SltF9vsoC4SncKgkVgM9e5Uzo7us345c6LjyV940somZNLj1brjP9JLXWaOn0M59cR1I1OYaYLxJNvsmL2QjxwFOgG3vROWONN+/gWJ1fZCRwO8gV75zEcQu2mOnXr6JsiIF8agoG9dOEitkVnDJO34CxdibA4kJo/kx/S+YXNuMM/uvu1B0Fwy2Aqv7Ck5ZGgK7w==', + 'y+mfhCS9nBvcVivS/ElisPV6Gddnz9s9XIeAVrdee8ADZFNObMUsJfa6yYHAxZ81HWtSIPRoa63xq+6HvKqGvTnIM8LVyadI6+ayg5j36zDr12BOepANNFcKLC51qIh1yycUTLullmUPFb/5xwh9VvAzDTdZz76X3285rLMiTa0KtB1Zo0Kr9tWwVeyObSURpAVnDngIukwz2O1jFGntNkUn6AY7tjq7lENRAVm1aZs15suAytU6ovXXakwLjfXri7QpVTCz+pb95HAl7tyw9M+b7Os/lZDa9BD76nM4xR3Q/M2O6weT55dErDeFwkF84McQt91+ERzWyPGzjvQnr/br1wtUetAvgBCo+f580cSQSf7rzaqjYCwcsd8ySXQJhClwnGwJx7Y1N4sIYVUzyX5mBTfkmrE7FSeAhOupZKCxwpWJ2L6XhJiRL3rksrJlOA1ZeVC8rdeXPbru+oCd/VYa5uGHQYV/K2WntFJE7wuqHWPgvYv7mW/7ZXAymfmao/xEjR3iU5oGgWrgGE6ktRnB8tmqdzWBO8zaA05Us5TUJ7atVjMgsFtk56ZeE1YwR62ApPt8Djn8ZQclVjWBRH5IJx0GBIgS0vHLjm3K4NdgmZVtumo0ew6YBK7swPamjp10TzC2G5PfFTqM7A/MBcd1RDdhH/CpPcxAJFnJ/uisCyLwVxX3l5hxS9yAarFRD5RvkBNLx4SsxIVbQj68rwV5V/LW0DMLvpKKFhvYMEobmH6AH+AywzVg9YS8+BDeRS7rqD/9G4+F77I6pp7ICbjf/zQ=' + ], + [ + 'UUEBOLFeLRIqkQajBeqJoceNxMJcy8XSQeaw86zWC08=', + 'RPu0E9xEqw+MdIPNPtDiVSBx3T5FWQBS', + 'qKCw/cCeY0d5vdod6RmPmw7t3v7Y23YTuDoY8zxYxrRrzayI/YkC/ivyzVsts/x1wncbxDeUMQFUttp+3IrkQaKn3ddMde7DdoXpxNSU961QkQQsDEyfwjsVD5b+Qb6J6U5M8Gp5nNvahgQUmfUFxBS2Pj1okpd22fgCqY36TGgmhX+GghT5IllpVKkreEX3zXR/gSa7tl4g0n3V/TIvst9C2H1K1O3nqsPmNj3T75mTuRtmcX/AdpJ8Pyih5/TZhDQR+ZKOP3sMaKgwDiH2pvFl6lrnF2UFi+COyigub3p0UxhNviypGr5FCwKTilJG6sP5HUqNHz799HQdR836An2tm/Ywc25S8Fb1M+hI69ikBz6wElsw6HXV3nNZ9KxmGQObiiJ5PxTCxuoclJXVi1ZuGd8nylLnAh+sCKT83+3qixUxlvi9yV5MFnSR/yqiBvLr/+f4e72Z2gGEkenTdNymOJ4z6iFYPXw0xdvitr7z/xZnJDy4itBJHWZmfLeUNV0+z70RipXpPxbLeKjMErgss8pqbFR4WxaVHTtGi2FQpzRAzOEI52olcL4M2rqqfOUICWimtiwx5PqtDQDM9/qKeBsTbi/NU3ZK11D0RpyHQQsB5ACHMN/pkDcpfGCBUFK5WH8+vV4fZHzGelsmvYR2qNKiaFmNVd/u+zYp/d1dRUhP/i75eUX9nxNU3oWnvGfGS56sFiru5E4kUTj5TjYaU+B7YZ9Hv8suYBP6Yfzs6EMQSL9MfyTNJNwzn45vpv4LN50=', + 'Ztdm5y77/di5R5tbJuCCc6KfmzUnzkH7yK3owev/ZLFLYINhKXXMSOzUmLvfobYZq5/jMy2wQWyM5eHz7oftWWKBctv2Y+aFZyp+hx3aB24ldQh6LFKl2ZS9rEsxa81EkokgSOT+fO8DJ7igOqhSPn5DF0+PHSqvfRrA74h0+F3djo4DWLQhsXY4SSYIz52SK2OvZVFr6euifubnifir8i5M5he0noQbojqVsVXhDcYrWwspnI1aOyscLr+D/J83uaHcXh0RwmB9VM6ItHau9IH7GOZR0tDRxcnWXDxCnEYl5KfVp5Mc3SvxJv0jgk1oaSUAV24H1T5LWBqzPplUVjelwHDALZgeI3cvlYDfpP43ce3cnMccoxOdYabZzEuyVvV8YYiCHQGfSmo2Fzdqfm3Ktvq8WXWe8yhRhodvn03V2KgItZQsWzKCRhLXfdipcs7SxYy1eusImkLdDYmqeeoTQlg4DehsjyujWBmCYuZ9NHDLyIOwAKuDKexSMg21FuTeqPZSrlG5W/IPfkIVCeQB/Rf2lymIFspeDyFALUiS6UvvZw+/S4y45lcwPF2Ilny8D41baXaigNvYDFH117sjdrpc93U0FOCdkCfWH7Ns/kEji8ncVzLrNRWj2tf19ZInShmE5VJGRhfP4SEge9sR2JBimkdJaAR+rAMV8gCkipvn0rpDThs1fub6hXC3w6CmhEWMMSRZlEo77JEUPnTCzG7lZNfCq85/L1ec940xgHRLuVa74pPxkqfx0FCdzkHer5Pv0oGCytOweRii613/Tlll' + ], + [ + 'c8aRh/NE7JU1p2XPEof+i0DN2i+FG1qXWVNsnjI1SZY=', + 'uZCLKJkb0fpIRkV5oVr7meCUyMUAqJ/r', + '+rpusv3dAnaFOrKu6PPGnHb/RJeonxfhLl5kF8G2HxFdAOUjyKb2pUerkikZz8fnK8ITH0yLjt0FCItLXYK6IF8jpT2uk0WOMoBVAHf9OhAhBqtwNHzMEYLw0yqJMwIIUveDD4Kc6z1Hwu7WqN0G8G9P6zUJ701yLaO1mBaPR9iCo8qRs/VFoyRZkRGtue8XuQefGGthDfzeid7w/e6gEbK3OI0b7LD0rpDoey9x/OSBIAc21/JvXMvNaw6I9vCl3VvZCQhhKqAD8NyksO6PrpNnPIGfvn5JyELBb5Bop/dcgomKK3aSRh7bVerYCbKyK5MuS84tDlbfkTAPA8WCcnHcp0/WYXpolWhYxFmTAXzJTmZ4GquJsUDm6R6uYimLXfQWzESGbjUMgsDKzQE4cDhfsisW6tB8MkYpD0KfVXS3W6IzMqL757upCHKlGTU4UTk/lGKv8d9fOsg6AcylJAL64owmMuQmWEYkbmxtcDqe409VqYWBV6mJSoGumqdI3Ph+pat3R4bsPv464ZFXN4xuobuEAUrxOwr7K+J+FJLZl/4z6+IeCDam4K9B2lh1WC26Y1mxOXf/Nk1MaV00eKlchenjME/qNYBtkzY60BK9ep+P78d07ipcH6KqY1/RyWcq9GBe6H9lQsEcVZqcaMwT3FHSYSk3fFFaJAuc/ufkgw9D8LxZ7r4QTV6bKLUNK/cbVD9WftS00Qta5vLiC5UvBbKDA2/U6jrDVGLoxzZNw+rbFgX4F1Watk3UDN/1uz3VRVaG', + 'j9Qj+uKmkGowZv8YT+0O3hYZr74HGsL3RcrzQa4lP+EouXQjaME47pnv9bDcJdIHijQFaNZ9yi3wutN86oDHbEB5bPaanzYQ/a5RIk6tHMKA17HlOavfuy/8xIlDpdx9ArZjLZ964/sii3ToBM+PsU/KmPfifigf05Tocn3LJDqxzZGrJr/b0ap6SDdM326baS5FWIEgQUztCAeAqpKxOGV/HIcy3TrB6GERVT5c877UHTPB1ajYr11RlnsnKfoxwXNVlEc3CV034eSY66zOPpBsR7JBy9TT9ZoOXcmL7CTwW1CmvJryHEpN7sfocL8vvOfj4/GHLJuYyFlEgL+VFcw+7zEbgmYnZ11/+GmEZ3rVYbqnaxd98uaptsHOH8SgMu6MH4YyABAMDeJrhtIHKgJ3T7hMFlWpVUgU4zPx1UAKgfvYXkk2Dvw1P3fXnJTKMm+15kM+izBz9rYeUXM5m12k85F8JPQl+32xhlVtrXhUmcWWtj97qFHErfkM2WoeiLwNYBTk0g5Mg77fzO6DUHncVJxsMmzK9mQskDFnw763HBL1mJb/fxzpHezNNePeb4NvGXMdQlLPazW7dtfFG4b8YNrEKXBRm1khetIDl3bG0TDdMLi3K1havAI5/P11za6j4+n+dkAUzon0aDfEGbdrCdK6PnFgTZ5pyv1Gh1bdzaiwuLPYAy+C/8czet5ipC2Tcd66dX8MllKrpfTvck7NjQxigZznZZjV1mfFB5/dVCSrMeSkm4zTaD2ITuUZfdstbBnf/i/XwRGKE4uBtmrV/y5XFA==' + ], + [ + 'lxY+mGhiYzijIjZNZ2ZkeF5jGde4NgiWkdsOwdgLrkw=', + 'QHzqs15m0QvH5XOh/ALcfrAXl3rhpnjK', + '5tHVASeVPPlgnILilMWD15khSClLCSs7vgxcliMeThrqOxAD4OVo3/YYLVSFICdJ7tvALPan70LKkdCap7Hr038uy4xKhHs7ZYl1px5c0ROgI5VbJWUtQYSsODQurfzKpRFVY0qtBFLfK7QaRbViA1B3H34jHbBudX7zThZYpxyo5fICVSNY/eUJGf+ZVWUAoiVG+01eBcZXjTAcbEvHk0mLzqRYxwAV22PCO5TJzlQlHG/W0G1Q6Td7sPGe3pItZpalVzXYZUmXS0bXHCUA9s+GMQnwsz6DE4fQ71aH5HDu7oGSyTsDZa7vJqvUPyX9ZK9F8u5/tplSEHZEtA/CLpz+FlukC6F7r2J+skkode2CFQV+fLQeD/d/rBg2GIGsrrlwWbDNMAQ59JBuST4KnoqeuYD4z1IHvqHUWG9XZ0kbrC2XqBJA+MPD45qPMR88GHINi+6MdO/cQMA3g1rfWQiixbdrYck8ut0wyYl26Uo7Q5YWoA99PX+zUKxpG2AiEo/j8+Hh8mH6Yr/MCQXxTYpSnd3XrUshgd52J9Nuh2wxIXnOckm6q6qxp3PVDpsPz8Z+zsGYHgfQe0iLR9NB4Ta8nftXWgHpflzcwBkhq+s5IrbmkLMC34ATCK2ZJweFGi7nDPcdp3nITJg/QOdorwCjdxljrMEFL7k+HqFPTx+0pVdIYDoPcK5IvVi2Qn3a8BU5QbMAUqGSkp1kL+MccBH1PsOgawqsxS+SXF7s/SkbKtwAyb6ZAvWxpDhKe8u2uSvaE6a97g==', + 'VAqi9Y23st+Ze25apkKk/Hok9wSN5gKO7w+NpRHuWehFB7tuSgOcsYr2pXA+EjiisctFctwX8NO86jNn4GfcWA/sa2h3mq9XAUTji++eadw197fJRJfd5QqeEaflhMyOkRnfMsguKUPh3NWDd4OVW831RRoZCFUAsKM/XqLSUYrJdjBEiuGMDlVNfnB7f5B7sj9TGxNVSKrhcq3Ep4PH2TfoOTYLhiBAlUerT7HGjBUFlEEwrN54WsTg2ff06RMlAAf4c3WecPd/lW3GTkc1sSt7fJUyKLG+jCWjVQzDy7ozFNaM4Ee87dGIqQ3wN4G2/A3WFMWl4XHn+ReNWj3H8EAaPYdEddRQlEFgz/VLY8W3zJ6vr5IK1AQSoAuS/plzBPNYN82uCEhjKGskGfLM2XCpur06Vb8F3RrZ/XareTJ/FSAuQ2i3GNZoDmhaZS5KCtFSMWkSXmKdnudnLrMNmvRzJxdjNbuqGmTFvySh9A0SOgOAJxzmWRSoZe4ExcN74Ig6A1spPYAbzulfrKSMWVXc/E5+Ya1gujLEqtRar1X+kONGfY9qlgV8hFWE+g5bqrotUir8JSvU3wwS1wRy0s9YFrEitfRTmOG0abrOg+xIAslwc3f0SWfuaebw/a83j0LDudaNhMZWKoqE7AaEa1Swh9hKnFoZya+B8JioCWphKa937+9l9gEWh2sanKVIApLHLsec25262ggixy0GbU14pPygLnq1G6/ChJMfuJaG+L0EY5iMqKZX7F1YDLw/sHp9bpuZb8tgQ26TZDATvkZu+OtlckM=' + ], + [ + 'fnDFd9MnwIgusDqvN2EjMR3BP811sn/KeBLpMoglSWc=', + 'm9TwfVMIT6DXQLYNndD7HN5Okgbf4r3c', + 'IjAFPBe2JRHbHvUB94yFAGZPJJsGxQ3f6PD2t+27PxzW6UoGja0Afz4sMkrSn8fvir15wDVpLcP5PbQe+9ZUn7dxQAXm6XRe5SVv0LDcZLx4jNbbm1ffOT0jYjscZ5YCXHbUD5snl8JEOokOLXkFNPSmPX4Ah1GZ/XrEIyVsgcirensXwBwtyqZAYNbbuRiUfkbD6gwksGVolxr4/Vtykn1IV7jzVNq8Gi11Eq18F6LC57Ai7Tkv5/STfreP79b+ZwsxPpYLNasQnNoyqkNqSYnbOwPZe/TFVYwPmDnMV8vhKm0hdAFeC5xOuwA8EqEWOPfZV4/jceHx5hoVA67rYh9QyGzjYiJOmEp/vzcMzj+9D7waHez41MAX4Ocb0+HZGZ5M3VOUkynq27eWDv2alpMKdyfdoyoEc5fEyRd/ffvZtp+75iCAQ/YsjlWdHO3SJZ6tQ5Uw8RDX3Zigp2c3CExQM+C1gT/BaUGNio8qBE3B1Fe3du/4NUbLR/Crd3upwT3BouXLIONAWvArVm1/e9sArxA8a0RNlQrm0/ww3l76A5OCtPhnqaDrit91Uw0ARJ3M8tx1UgyASNXwMR+YUuutdVfRzG+JqGxzWn5ZHcwjACJj9Zfd1+xQmnD/0dzLIeTL9iNreIr1X8NDWPaQblMz+2OtCpnFTZjBYp9sA+TguNbpyRxhJRm6LchrgEiohQ4HVCCNL6op3qOl8j5Geyiuv7+FFLGAT3AawFUzZpYMebpbCjuGAm7jz3Q4O0bv9V4sVG14pVA=', + 'X1LE5UW13sOavUJxO0aHJ1BH63b11cBqtV5V9EKCjttRl/tPJSqJkkk071sChG6B15U+9UkZKYHG3HbZV6S0Iee5Bom69I/2H5eSxsoGzyYIwETHYHqWHcijPUjoD+Mds/gUPaVpRpRILJIALyRJmE9nTIFZQ72TzNrH6CgqishmBN5kCjdgg28OvTMt5Jz4d6ybOxQ2SXnizazXWEM9GySbV6rDw/aV2uBCjwmpjHhwxRvHNJfIemvvv6D61g8XN9719znfuWu8+tTfQNBn2WjKPxj6HrLgZA3EjPB3GNYcuy1dKTThlx5wrpe6PQcTfR9KKIcSIikvJ7HAsCRU2vB1T6NrwcvttbueR0tu/WeuKjLhhrn60tZDxl0tEOEZ+YG3muwNeP4vpvxRMeIft0LyGFtYUN0md4LVEch2ap9n2Cn+LpLLI2Yk8uzQEN1ve7Cn4ZVslNFMyP7WKOaEhb9EBW7vceehIS+rgYhjhiulh9rN6kJPnwrfIjHNL70rh3TlCjqVokKscjjBjYqB3Fe7LemTijbm3W7OlolU1hRQXN9QZZ85jzBALCUbLb1EemEOiKv5LOROLlUrRVoTNjeRYok5gpFbAf++PSdX8hQv7PnPl2hVW424EpLvJAXmo29Cl/jbmR5SyUFnsklaeUsk1B0nki5qxJgqK3KjHH+6Kx7hGE1/MfwtINIXppAU8kpGpDXrOceMkT5Y97bcIAx8GDEydEMXMGdIVZZBS2qy7mQzYApBLIywelSKNZEQ+nnU00gQEE7P1nN0Xh2AqmUpnT4r1Yge' + ], + [ + 'XpMTK87OLur6oLarEe3Q3VpId8jkyWkuTa6R0P2ZA+4=', + 'qRe/QkCf/MSiN/wuvwaFkVgvRQggWyoc', + 'ZFOOFWjz8/Yu8FOoZ97zalhJOJ6hihzBE+iY9gPTiMMxDTLkV0madY76tUU1QkHDjRL0MT8d3y/JQLRZoNohziH7KdMzqTaQnaTMNqqtzWxTXtud+MtWBrcvU8mIkz1cBpdOfrTjjdHA2c+dE2kx4YkNEiM4GmkIFlJ7E3Hv28r361pFvmgkd2B4MbCdka/5cFQVkYtQ/nGG+jMUAyOSnlZ7BZVPS6WrUsAXYc8NKuhnjO1U3RuUZCDfGmAuxEHryCOWsWQ/djJTODZJblTdEL31Vp+RpHcy8mOvf+bxI8uCuwqQJTmycqAD/AkXQsAtgAI628dAFP6kvKrml/im4+zszbCsHOu4ADKR1h1AxXI1zRXrhRWHq9Nf+9L5R5tWnGuhBczpKwPAFhveevTWIZ2WJkyROGcnmECtp1mBSGfPgWh7/Aiwba8y84h13XGMVAtyF2VV+A1YcPZ/85/mUhxc5pJoSvkTZUc3hkj0tx5qt1X0C8IbJPuBqzcnV0hNyZjOsx+8X+k0+Jg8MoB6HNtgKNkrLjNkVerXZ67n6VH5Ke4707HUrJzSNgtDE7Fssm47jELY64O4JwdnuqbNkOdJoYN5D8g3rp0pQ+jy5dAlaDDT6eFczkF/iRakqgd23XByKQiw1+W/Xwmspq8goVxUs3wmm69H8M5QoEXq8VSysWerSP/JXynpsQruLwamW3px6OHAyWphSEaUfFm1lyg4zGTBNK7K1bU6TxcvovGcotTc42J/XMTvn+3EIiU0yoVgFq1c8QFJ', + 'vTIejQVzNzPEe+Sq/7PY9fvwAN2sTWBXjGBDqr48Q5BCqv28SeVf1E1kgKFOBCziinkgRcBHjsLnHfxxvaEfzcbIWqvcng41I9819ybz7Qb5SUDVQO6fk0mqSZ12f0x4P2f8uxd/jzkmzTz1TotJYhUDk24uRETGEpORGJomf5+F7gt2V6qHpyXT7nw15QjtUv1C3PWkFF6zm9yfcCJGDkPAztjPzJ0lQgKi4ADebM8w9E4wPABHhXlDHPyu/aKMjdwVv+uX6CdR58FR5GUq6KpxBql1ljtO8NW7Ko1zTdSCuuf7dWpWCEVG08TF15BXddpw7TguB76W2Atn8Ip+P4rAWJhBQ/b8WjP1Af8/LTbvRKm4wM6cZVP+Q01IomuvEVeOn1HpBaamFvXAah1d+UzAv7MDVLYcyiq5k3s9ifgRqRycu5d3B5MpoEbH6Uldrp7D61jbBJNloe+rOlT8Q0csYvKCa+ngICQQHhORAwdzRZC/2pzHraBv719zLGsz1R1NHopz66SLFbD1OqrkSfmdJhz+1+vp7N3HeuiXMndJln7w10H4dWfVCJ9q0blzHxQCYJnAO2dZl92M3dA4+YxdnIyM8A5BCKEfhT2t/0oQGQwbckNRm2EAc/cYcbvmGVZ7t2mKVvuyljvUizUTCDKuVWOek1NUC3DO0iCTO1s6LmUjeqpLWZf9wUHOkTyHmExiF8SXUjfRWAQaZV65TFvKwxGmUyiFpYJu7rJL6VMiXyKM+M8W0Xus+g70v0qj6znKawHhWHz/vmDo70sBeFN7SziSr67jnw==' + ], + [ + 'WYn+zyVVQV4aaIElXamsQ6GVwvxn3vEsRrLlBT04V6I=', + 'M2VpDcx0StJ2b1kuZKWg/6Qbo3pt3E34', + 'ClOt+oOtY78DpVkbEZ7ngtAlNdWSxAnQRxp9wbOuBW3TfGj60xaMXs6TgB4mpFiUfWso+zehB7hyPwMXwl2dVeM+9SZlXt83Ic7wi5EQnF8pEyaQsjLNfzU2tmRTxC+hsBg+ZhSw6jOR0QkqbGb6FqgfeReVI4Ny3zYibhx24bA+c3BARhtTAI/AwzuNj65o2mpAmgfH+KUM8pWYf8IDpTBVfS2gxJj1XDnSdxzjwWBK/+Mfc6nxrNsiG0H2uBgihWW49SVUOAyvRGNc+J2Rlz6T4lIBXl4Q+9t9Q3yFKpd4qMYTFdqhD2tDa559DPmK5h5CMm0HGR+41TnPIFVKfswa5E4q6iGeTxTzzfislRxOV7+jxgrqkArVCLXx/sWnAaJxAxxSmfHevOV5PbMLVAPiH1gPvGHlXaQqSCZ2zQHEuzYfq7vKO7XDVzwYUHPwN5LLLbHOh9CYQykcCkp1SAaKFq4uoWAsne41xKncNNW4m4+rNakjRwZa1usfOJJ+q9ZffCIIAuntC2pLnziuQSwomEEqwp2RTFp0jJHvvIfzx/meQ+HbvhqAImmTqFqhcK+sBaEPXF16Uz5qlzuaPmEiB4SPIGkGFEY/1cLAVXrFvTLt1cvGy0Bv+Jlu0oHZuDJNYvLVJ2b+Irqg8Om6WNwxg6x+DiUMbgx+Lj9Phqj9l8dEDqxv0pmFu0sgURs93lWWz+KqYgk7kKojUl7z+FV84br3MgqE6NIc5Gh/X3lofq7Xol2PA/xwjIOYXZr2+DWIw6nEqDiNJQ==', + 'HNQOFupmt9Eg9/IFnbP3MEuqbauWAzxB4vx1AluuLHSQ7hXjjVq/rprw6LocGiZ7/M53F70i7D3XK6Gw9lp4S6W91P/HfANbDpqdDJC4+E47xb5SMfoCJIH9wdOZ94pmJL/XzncBWuyskjDDIjtOJ+duqpWHlu/8b6mplcY2Lbrf5FAl3mQ/7TGOOPWLc1szdvIwo6S0lzLyoUE9ac3tltQBSQDYyEv66zyWLLyfq+WM66IF314mx9bNNMnnVpVjpubyv3N13F+9Pke9b/pln7Jki2ktuZa6HZ2HvarXobHgkQF0MwlKfHbrAKCUpWWj4sBobbZ9XriDIH7SZDK21DFj6gGPv5hquUuIPZ+2LRHOC7G8T5x9ZtOjD15Rj0b5K2gK1IqITXqD6KWUxZ2f9wXZEFQ6z3jFpjlDh9qMOvvubNP8IS/TObHOYHoOxJzKddjCQfTgNo1ThgURNE83AG18iy1OI36atuJNemQXSDI6N3EbUmklAzhLY47eoFczDJIFu31kk94S3kqOwN4a6a/dJknO3YMQrTfi+jqwaAsTKDER9aetCWEHmvafAbfFQ8eSvkIRV2WUCS84GtLnIJMbHvnSVfLCLfVMLzO04V6J50JP9kBsovCq7s0q8GyWG28WiQi/xFUliRIz2VjOZcr+9efiM1kQOPbe3kJX37Kdi8iSoWA8j6rLu15/6Pvu+PgP8K8CPomuQjMfH/Q34hNQA2IGFUir9vyeP5GetdSjfwJu+WbV0Hc7AHONA/KLt53LCSbuuTJjf93bgb4po8O5YW5lRMitbLY=' + ], + [ + 'Z2+bDxhNCA03MaQrJfMFefILgYMch62E6GdQoEvsBWY=', + 'OgHpwY3RkTtW9D85bazZqcomBlK//aMn', + 'L6JjKgk17iA/sZ0lHLb8GX+hJlvpwME+z1tfiKoKkxcwfO9tKXSz3dc6vpseTtsN6BP4Nr0cby8SfdhwNmT3XMzYFlGlubUM1gaUMJhaxg2pwWIKZYhuVXBSW2aWKEvaPTPRukP4STKqNM98SH8q/9vtdUMQw6CeemKNbYF32eQcVmTKkbT0VP2pRBIQLxX8CJomwZL2pNy5ULzCo3mOGJxS9eOSA7+Cno9NDfQnsOxebyEUTdNBDW+LxMkATcHj9jkkXjE0x4pnJHl0uEGpIG0X1BvSrV9WT9YV9BVPW1aQ0zie8DzbkBYfuun/zFEf+gMp81NQZBFQDMFFhAJNbE3ceBBIMCiTYHD0kS3RUXshi5CDX6vmucjbmW3wY9g1odvBM7fBd55f7VXJAqyMtZP5g+CXxA6xQLeQxG8PSUfv+8Gn2Pk/3hmOqolyZfNF+cmAzdLLv/AmfrxUknIkvhfE2hlcWK2nLOgK0z2sGp8ti7AEKKKty39HvPAiwJde6oiEEctHV7Uovvvlr42xz0Vv6/JRIlD+oRFEXi7OiwEb1M0r7HOa5Du/ldEiPgZZJClPCvRwcYgB1bOql3a13/+nHrHiCkLIRskN5L2bkBSKQ3yJ1bZSafLjEVS4eKblMwkVZPNsyuuABnhxvg1b5iaYqTm0DCnbv1vZK9eMUTjxAe05uGxM0SMA7Ar9xDYlfFUT4fqDSnliXkCg+xlCcGOwwf/4AEbbsVVtUirxSplFIZffMJETCPSWyuMEZwwBO6URFpRbXIqc4B4=', + 'lya0WpsGVDQR0Ht4S0/gQ6x3ok3zgqQ1kHfvUo4eRWwACm5fA7QrAkvNGAApDbNeGomq4Kr7tlv7UVyXAPzVEptnVl0FThSuOyZ5DXxBL7SdGHk/HM/0FBCtMFrdR3PZdL9GrSARCza9ekzyKAXmx6nyrB64dyMaizMDjCaKVF288MlK7nQ9asehooEJDHqvmpdY3G5Dpk10D3YDyCNuhMEb3hlmWTxW+X8j0uZo3U5G4PhwnGXzL7uL1uaZwBEUKrEe5LaogAfvnmbgRvVMR/2Hyz9wVgrjAbd0Lsx1XpEy7iYsJhc1FIeBXVNrYpMnlmiAGHoKvAXeXzmv/TPzLmsoH68TA+jiiO/6Rf2HTomNo3YgPflFmdXd22M5V2fqO3oI6ufnS09uMBwwQZNQmqOs8/MxmlHX2IczwrxBpYEWhsnosQ62JWq6UTAoeSaB3YiqAzkctzUuSRGd+I41jy4ia6kmR4X3EN0fvM9uCbfIjTQrp5h4bfp3wKBwDajG860wFSYunXVR7gvjgAc95Yfxu+Zhg0IUcGP0p8NL8sY/vlRNxDVaXCGt6u0TqFFJx/aX5p7DRjSUdd7f+2G3fzwOwSt9tRRSDD4REz6fo+HE9hyvJla9FPmc/VV4FFByEroekLLpMZECfThtSJe98sFu82hEzVhSjBLK+02fOFlJHRw3bgb+ctHoTNoKj3WbizKEmSTdI8YCXYAb0t1/8OKUcd9wgm3sP76HHU3ZzZBFtcgzO7kc/VG+j6TvMawvei8pIBIsoKr9JqVcX4IvB5hObFzcRs0OpBxh' + ], + [ + '9r5oRSwhORrG+6WybtAqHRJWP4Y0EPBfH25zx10yLLQ=', + 'VSCilTDKySwPftL5/VnizRlAvTxclmCU', + 'lGuRObl7U/vhb+zfF3hkJWVK7H/78abTTT22R7Y+Nz+TdXyzvw0h/mElbGpYcQG+0oWoM1vgUWngtZyzEVwznrpEIggj+n2X4q1CuZbIf1ukzqoIBrgyWbAi1T4e44hVki84ROrwaGS8cSBK+8NR3MbS/ej6ekDP32UEqp2g4Fjl2Dg0XRkF3HzHy9Vm1dbQUAHSnwgKbubH8uNRVyKip0e+uJ8A8dgivMgwHoVgFuXWBBvZCJA29woOe0wjQLOtcuoO8U5UMjE+uczp71MwYCF6B0V2KrfHgNcwkOCL1xsjYzzb5QkxYyAZM4yB5zO1QzIhh8Iws+gaPYP6UxoGpfKaDMsR21qSGMxcDuHMHiC+lu6lSIIGkWzNak+NHpar1z3CQXe1dG6ucY4n6mBZvaZCu0LkVt4XPOG3ZeB5w6aPQgF+XXDZdlnfaRZ/ylHZtc+HJZ2xme3PALuGxmgTu3a1wSDbQPDmfzBuo7fruWuiD40iSq3k6WIpiWY0TcE+MWYX/J0mm0yAS8fZHp+uk8tt9YIpqIF8tCvSLTKSsDD9XdMcF14P3wZadTg6En1BfCtJ4qKKW1NhrXL+YZjWAd6bg7THVIanvXvWN4bKJ7OEJlTgCqBCU7Xx7XL071fIeaIRNz8L1BIg9BmcYFvMFCKMCN3F6ItPhlueFN37wtaBf7hYlGRFWwecMdNeNN2drnm94ekYCeBFRAH0CdVMrv9VXv0LSK3i8edkiV1T/oSjF3q7dY/FJZRv51s5aaa+516/a+uJmSSRADO8', + 'UkuCKSBBALspi0b2J9ghXNDCn9+yzbSbDVfyJUHtO7r0wjqq5w35YNtEvo43hzjyCRiI3jd/6aQY2tC9kVveOCQNo5mkYkgU92TtMNRTudtN8Ulg2uXyO1DINWlayapzCym0uMqBdz3QpaMfXMvXVVEK7vmgMAFOWGtxC3vOL25ZiL8gQ7WpzCrQObaclNqj1n+WUvQPgy5HsEtWpxXkTRcfoWaFjpme9zm8sCQDk1ZyDMbLjaC1zVWX3ij2p6qfcQPMTMObIzqhkIUAhQ2LfOEqPpPNiyvd8i6thzwsYoPTA/OkZg4fivM6RGbqvVgtH3UDGoMgms7CSU/qoo3aN4Iy+h+J3b9R47mfgSeHgJ5bedJFwFVSAfQUts+wpPTFNeGNJT5TnxFkZJDHuK1kBUexIxtoBZNIo+jtxYduUjaWEaWH2SVgpeEm0UolhyjInET098DEICk6UArYaRI4Zrnd0NmqyWfx/Nfv+VRt6dx2YelrY57pr0z5oJk6x7f3sgUy5KIM10QctqOM4xhzI1BMjAoPY375AnqVztQhO4Vdc0zT6GVIl0IWzDGs6MbGZX4/GOODj9EtX7TFQ2Z0a8nJ47JKXw5NsVAi+Oe614O9B0l1JjK+9xcodxhB7HsitckyII0rhWKRaJlGbSx36qOaHj2ee5KBcnQNPxGXrmgqh5vILR16kKXiBRYWgODTimAJ2NiBH9TbDHXEN0tmhJrtvunDCJKIiXOE7yKIr26CXd0zf8RoqOMhfhm1X/5L7/DJnrJDPBmIuQQUT5F40LU8vk6MyBdfhC3Ieg==' + ], + [ + 'F6cFEgjcdVOUd6NWgXO59QKx8I64Bp1Wv96VseOHcRE=', + 'cbqIY6vYatT1ufledt08JG0PQrbjev8w', + 'JWDu7EKJ/4oAoRHPG/dJRo25u8HY5cJUnAwmIK6gmwC1lw7jfab3XPE8aGU15JsEhUgboOOlKdktEzhlUD+Lg323VPtI2HOZGu7POlcWJ8JPLESC/aAHwi1RY6rN+AFEDGnT09381bxCUzZF4tXUHNVKPhGzoEZfiAj3ThNZ5cP+Dtvz5voIWA9E7s62pyuce3/cIKuyq2JG9fR7Ua8iZ34fEPF/DbYkP3yWf6MFXghhPTSX15jzWeUfRW5sT4hJzmWA+Pn/tNuqylxzmrzL/GhEpoVG05VD4tkNwWDwZRAmtYv+mTW2yx9POGX/NUmgUqU8vQnADgldnLQ1iuAPVGux4WuO1/DN6+4EbQP0MvS2J1yhPFULvZNVce48C9aD7vm8gvSB+3MortVUvTlA7lkViGZx0aUQ7tzXfuLel2IoOUbvY21qomm/20UxXVO2JhVFKffmSREMqtDhcT7IsbTIEbTV+aCAPXLXzVcMhs0Kf7kba7JdM2cpjEELBJQrC1uvPubjYHd9LlloMY3tYol/8Znm1C0TOaA0bKs4m+J+dXFn5JCwOZdgwR17A6dDywhq9L9oT/TviBZb1/6zsJc5n27GTwOkcJCcKiNJIki8cid/QUGsG+lmsvWG0OYM1pxlxVl9jIFJTlkr+ysFrtpzdno/FrrIN2qHonj/bm57WSzgIq5LIQ3ykmBLHhjtUgCLjhKWK5xUwzHZAlMYvDTFloJUg0bwG78dT57YiSccEQ0Xe2fnMGYE5I0hcSLtdwtxaApFgXVcYGyoBw==', + 'h6tzjVYCrAXaXkQCRlt2/NS35bZ1mJP6x7HaVxOc6MTax4JjVt5GMHP/eMxqcPU/jSUbMErJ3ipaOG79kBRVmU3jF1ZdZ8OQujl60TEfTYbxszmMiMKp0ocae6M5k3hNVR9bdgSppegD1kPPkgKrSBqS5+u0yvaWIDFABFHaDimSLSvooOuxUAyFpnT9AJ2u8E98dk5ROrwU3A4sujfZWAh9THq5UUmXrKAO9JtBhlX50iOQn0IGlbzC/giSYeswRNHMkMCKMY1cctGwniwu7gst4Z73VZKt9s1ZmRCKJOQl4070N/kSSaqIn/TUhjTwnAFTf564eJNBnIQTu22JRJJjZDnp1G1296R7oNCPHPOTYXXjwaHQX6TdtB2DJq0tetqimt8WaiSs8cGZ0GbZF+9SUsTsO5JrLWN47bBk0Wc2jpkADuABGuqkxJ0qKVvGgjJFAy8cd3X3ukkMkKeDEVywUPygJQ/2fU+yf4nskjMu6KBg+oE8G7x/Xaz16VNSVJb6ulzPGfLmUnZ0vZbl05MpznXKIVhWlMWDdvgRabAt0+8Y6a9Nls0yNPrr+OURJz2m6r5L1cp4Y6C30X9kciDA2L1ZocaU+K6vxvxjmS+L4tNkxb0+gEVCYxUF6wIaq5u5co6XLC6nGizY9tAzdmoyerqjKv9/04YnhmR7tvjTHPX311XhaLA0v3JH/uZDng9/o7haSuCfs14oz5trZTtl/sSM/1gjoshhAtMKvvwl+o84lp3GvJmFUFU0sGA7bg0nimWgGyeUp/Pk0fTwdPB02jQP67Y12hGSens=' + ], + [ + 's/MJBPbvm+tYdTGnInPzXrLUpqfo8UraidZ9aOq3Vpo=', + '4PuBPVajkZdSnOxnD7KR2v3V/gk4pqVs', + 'wtBxLMQwbv7xk0HfrS/UAjMBXNFOTQgY2z/A8M4/pv/zyM1sxr/Dr1ZLj2Xmp4lro3P2uZWURDpHwsAgPKbCS1xgRn8qrZBKGcWwwf3I0syI23IS3e4wgCKPuaMzIKRzDnvHpkPiZMWThQAedg+wOjGe4ddm+vS82wQxbz3WeEhZ7YEEGJ+/ya0TcRs8iWApYLUq6ncyCtLD4n7Ez+h0uPX9j4a9Pl1awfZIH6ogRCXBMTPw3n51XGAI8Y5H+B+6U4qss4vmVdHadPfdMykIYJ4vg9dSd0lGfdUUxoiKd/sC5iiNYD2K7BsYEfqirLmVykdb9ai0ZmCQb0lbhxoF9zRkZBfCs/9cxHspJ5S5zAZ9QMJiDwe6orpiv/DGAsIxB3beICwR30T52zqhQmpqX1MUADLWBL00w5s9lPM1vHW1Ds3taeAYcBJ5UE5UmIOo9YuGbJMJHlUSPcnv38g48R2HuwoUj/zgG5/prefFj4lMwBQCP3E6Z4/XwpIB0Q4eA7Pc8QbU08Y08uMf46vXLzOsuh8Rzgf02BaYwl3oO/iGT/E/vcr4xNvdeseIqT0u7wr56yB0MR7OHtM5zgChpyjemm5TX4LA1XhlXoD76pMsfzRD0MpwVlEOCgQs7YAg2oKnQ0ZN4/Mkm4tvcc9qeTDoZ/TUw34+x/FE5u5HmUUa4khbVMtqyp+eDintI6/KDFQeEH3WarjkmqHNfnYhqN6f9x6+eXW0o5z8hrXAnhbyMsM7RyvopCVz+rNs1ZFxTDl13tCDTRCFJqUzm54=', + 'b9Brg/gsjsCamATOgctI+1N54nqt/gHYRX/S9DFY+9jUByfPSc4u2kYIxPQZWbGbT6Wo9hFB2DJW/BelZ5R35CjzMA/f//k7fzmtWEul8GT5SAUk36gYoTfi8AqG9YaA9DTBFtuux70/s+Y10IL9rB6PNX4URilSlzqL3QHTe0viKDAricQ704q2bCXGqpTcw0pEJMOhMsWTxX7G6KDtvxMfrEVeyVSAsU29UCzIPF5xRYAYZEP42tKIRoEw9oEXDxlhBsKdV6ZepjP4+fXOPX06J804OPIx/FPCpfl+nYnjv4ALCpftzqvpmCnNv2oQhjKSll4MgbO/x593eh/Frugs0MGZCBDq1/Nu94baadX2tfamRitguIUfHVU5IOw/FDxZNSUqJ61mRL4owYPNDCEonl3fPeEuBNUmLhhMLK6fkF67gP04zW+Pxspdzv+loaQYyDhmWhKYzGsOzTRgIMi+uQoI3M3CHNH75IWn7ixuU2Fo9bkG+xRCTLcYPEapCAp/uJm3gDjr9veE9IwKG5wZtz8G+4YVo+rV2LqzaBwP4HzmVocdhdOgCivxmVguKFIvk3EZebDl3Ahr8i9IuEpRImVWuFsQzlVDkkKiZzSDhAkmM6xPaXT4g54OCm5ZQLjLntIv27q8XdRokk4myD2D1XJcGsCoFIPQ/OPR/P+n3Un0/Jev/Ha/siQEQfN0v862FI4vULJZ3e7W9lNm0oWx/aBdNjm5oeJrMurL99+7JUYomZQsHktZKB2i3+CaAyfnabcEHqd2EXlnLRTXCIS89ZiAKavdozkFtA7R' + ], + [ + 'IB/JSQv5zbzt+RxXHHkNYyyOCE4OBAmo8bRAoI4wgnI=', + 'AVkH9vgUs6jK7HPHI3ZXMqHEIcUpyzVk', + 'vLOUqYYzby1EdFcZWE4A6GmPbshBMcXrVRVEFB25CeybYlFHpNcgtVol65u4aHTyap2mhY5pbyXczwwlHQvg2NpM7DVlJpEUo2ZEnIlx/TSHtnZgoxHEBIgfio6jpnPYHC3U8SabNL4sATGYDRo6msLRGkE23XSou3wJ3iN0b2g0dYRNG5que6CAGpcG/AhlJMr21Lxuh1AKN8HzpTstOfk7VpnzRf+QjkhMcZvOyeL8e6yUSYgK7SJmqDp2PRnqLJaoAoQLDVCuHV5rsY3LDP0iIMOd9kzJW8G53P7syCMuuk7hyANMNnQodeK2ncJEFnh7afsbPjf5cUq3B3EZHhpzrO0YpHLHRi5U4MVpwbLAPrEbS+pdcJIVq4QvPmu5oB4RyTvDta+k3qrgXlUjSgkdx2ksb8yCqRxeucrRk3jpEJkyVUVEJmgOpQ4FAu3VgOdxlPeVBb/fRT/qeE3WS/LD1PL+kG3TIRi9Hoeqfqc128n6gVL/ARB3I+qyHvJ0+8NCa7J0Y1rIQv0bg3Knj9TaZfF7DrVqHzwkGE6S0sJpzzHtJPbQIy2KwcSKIrnOl1LIwDjzUvrT6YjZNCfMeiPw2c/mzHrOzM7TOIye+tGIQ9+sPacR5CnQ1VEtXskrBXWk6GoGpwvhN3lzEYR2lk3B6jfggZCcYl9taIH45asl0DysTPHMOBo+BVzNQQO6+HIITFqejcDzuiz91b/0xKUbvS2kyBt0P2vPOgxgvXNoG6M3bvWpFf+8Kr0enbp1IQuaDMAS/5xLQErfqoRd', + 'KDNts8lYqcMgSZdd1EKneDaA7IW8OqMOT/AzNMREgPoMOYMTuPp5ZGrcMe6We9WM8SKjQyXs0lznJ7pz/MCiQj05IiggDASGi4QqVtmHxRjFp7OwW+BxHyd5XsFQQYRMLJW07w5JrE+D77HXgQYUs1cfy7JehnzEKgyKLMkYoIL4wjxKfBpX1qGvkCyYO2vkRAmnc57+7HGqcOmFH+Eqp21ATxifeWm67Fn+kZ3EcRGcCqDIKJ9Bh/nBSCsgHuuiRu29YdteLn9J3CCHXVM4CrRaSMetZtBC6dKVVED9KCRA0lOp7LdQeE9Rftf9rnQ/lBvTSdcSwwbK4ybAdcAMIQmJbtjiJoIFU2cVCj9IeW4lgoEm2aioobxqw52TJbwhekQ7zJo7LVPkza8h1kjqrhP4j8suyMxOmcJkZI8YhEi+7dbIKbkn80l0+hkRg9BlblYqlM8OrI/D4eNYiwH4QHwZcD5I/ZD3++XbkqQFR3W2W5+rQeGV8Ct87hGBqGFDy3xNIr1NEnkWaPxT1q7/EtBXM5db0GZxuLOI2fxhSRnCEqhOaTAKKFsdoA0bb0SBKmCvPDREXZpLoFB+IZrwbS5hI4bOk+je4AHiuML1CQvLj3e22ceBtB9ubLsZun2Z6UK3ZTLgnfwVeithK+KpoefUDiTwTWWH+elUWIPtBtCdz6kLhwBruNYKj7pPqJVmExIUT/y/qA9pbhpg9SN5WZUfky9KFDKLS/xDsMv1OaDi8LmTqU4O+hl5ay8cxLgdp0SZDomE9RDEXz1oaL7L3Bfd5PHgSQl6vyRTMfviNQ==' + ], + [ + 'WRj1xhshTDcHR+HOKWVup9vqhpk1tnc8ABfPqeuWouo=', + 'Va+xYEzsrJKkOu3ujCJhPWRzfJpyd0xL', + '72r4+KgKzIVhQexbyf4I8BQuA0pCiRYaz63+xfMrEHol9GuI6/ABuHaIY5b0aWL+DRvNBRsQ1aKftKpCcGpY16ud5V7oQALKSov86bEqNmakWV8bWPCKzYunhcm1tmTMJ9A3Ivmq5N5T8Q8XkOUYclT/zfFWUoDBbN78yDhq8zjlZE3gxEEnCiOU34jPDZOot/Ji0C1oqkBmO+7NERbL/QILvEIVlIa44AwBUnRNgslotx0g9shPrdPVCp/mUs786E9Ho+ubWf2QXu6bqPUjyPVy9FsuubJMOlTM85MkOAVIM9uoputfZ/tgDIWeJ3tB4tmYZghohZqVwMr6Fjav+3ru5J2poel4PSglr5TkGyBMy0fy04HP0UWkyRvTUxKX7WLry+rol6o4K6xKdtEW7uZZteYtmq3il1IQrvUzrsYg1uRu3eBj0uRRuGq1iyXhgG6xhZ2fb2sg8SSClmxsol4qlzrbkJoV+vwJKeXZj4ulRGdtB3h73jg2HYbw4C93fwqNNa4KOlDwLcJFrV4FzPVE9UiJvImrnuraQLx4V5J2s7bYabvRoUPXhHFhDxs7UlZQD9xwpIQ6ew7lMd9fQUZ+ZNW0B5TsoJxoqlXL91EfNBxSmrIkX5ezd1LPTYfbgH9k10sHTD1TxPrbdttX9K5O8LFWgxEg1RTmyajmvhs5+lsL+reZu/wkjqS4F7xz0c2HXFcII7iNDyOA7A2X21qrr3qk1xkVQe81NGOCnlkuPEbdSp4TTaosthGs7+MTTTYkUENQ08AXsC/MANMDag==', + 'PAMGo3vjBP2gaYavFAm8bvLfgIQM5rQ7Hf7s3KU5jlk+HQxP5NmgoXB7hJGz1q4oanj9itWFFzVUu9AjidsXSYiKTQ2ypofiY/cYUWkNFI9GY6qXLf2Q34uEkSvn+G+kRXodOAF5QbeyvQcQRCVdndtfuhkmsvhKmkjuGZmWEf93pDJXB0XdWdnhFGHm/k/iV7F4F/0RQlh+KUeRgC2Leu5ahSDoA6fOK2jrqrZ2JKzg5JffHZI9/Uss+s7QtTkFybbE9rARX2ElExbxjQE2lBd0iD2SdZlLoh5wSeCGoysjK16plnGtQKdS8adYQNX9dXyL/sf0OYmJA25kzYqZqs8+Hhmw/D05xT182fxNQe62wAe1x/hiab1xrixRmNan+cIddEo/SGaaxGBoDegUUDwM7IHguk29jb+OvfUVHqpfVR4emippjZKpm/1PI3qfdznYo4MhMR0VNuRNOJ5B9AtHqJmMRaSyap2jdK2jgJmX3FRMMv65Ppa9X67nj9IasYwmqDH9u6VYWFJvTIxkDGw9IsN+viHWKaS+L/nQfi9sHzFvw5KBQ0tqEE/sP8jxrf0By/5guZhzroLuXDQTgvrjdrwatNxF/C3imYgpnRj3R2JIoDFcFTCzjzqvmWPJe3v8Li+/CS77Cm5Vqh64FUqGzXRsYXFY7pUjGqkmCpFpgd3zIPXnpYE+7iozNJracYayAQeWYW42LHysnQp9RfgmGRBSh+siYWM2ol3Xprh+raefL0d7/5XNxy64EsFTROThZZMRWWH0q1VzM875Oysh0ESfImSbxIUv6QjJoLI=' + ], + [ + 'pmow6JHynZlgjHkbONcpMc+FQOo8Ofsx2KhO13hskn4=', + 'JH6Y/wSFikzWbD/fXiRyltY4eC5F550I', + '+GTeLQ2Xx4/R5uhCwpgKsnJLlS+oS9uq4uoqJ4JfWJ49DJnY7xfzg8NtLP9zq5hFPlVAiVsPM0y45HGqoAs2CQzp7hhmTGhK527NQB9MLEKEoA3jbqSPpb99UiusrhB9anot9PSiMovfLmmRfXdWBpx4ZfiKDJ8q6uZh5wQXhudhH1sUdVRwWzTjV/AGBXE/tkHAzuRPZ1OOGSCO2VRd4dTFY/iM1beXdMnZY+n085jNWp/HF2yy6ovEPQLGfik6fkE0D7rl2CNKRC9YKVlkq3egtPOuD8RwdO7+hnJZG80DVhddLVy8DCrQTdffcbYKdlHv1LynZy7kc6wkb/mAnM5qUWAlbiwAnhuR2PaE+SxiAEnqM5iSXEThX++GNEHqUvk0suIJkpikCzD6V13dX421w56odZoVGmHnvjTgOyOk+TJ1sCDv565nSJqdr98EBT3bjNXpbFRDhMpgtOi10zSFR/kbJd6+ER0AkoLkSSw3lvvhTFSPvXmoDNWXeyTE0U+jCrOWtMg/Ug2Brr8ncRDNOUy/wqZLYmsaPNzr1YNYRFrrtDzA88LD+4i6Y9sRkkuOBVGLCT5DOUVCTL1R2AJRjsRzGwOaLL6/pgpHmCzoX5/QrRyfQ2GtcaJg6JqfYx9TDa5Qsw5t53qnRch7nrTfAl/Rm4qmSYoERPQcBdhfjJ09mGJ8n6vKVsSA5dExjdyJjgOfhpwi371DL16EF3T8Yi6lXvVe10zvDvTUJITj6GbGHiH3ek9+TvIFwJbx80ITGhlWEWgKb/qLRCY8rF0=', + 'a+6seLm1tk9GzEly8KTvB7EHtibAiuB2KtP9kp50NebQ9v/GumpkHotp6WN2O6YeQLvJFCDzlscww7r840cDtkKl8ljxTA8tp9eT6ePP7Aze9lL9VnS3kCBCRQdrQ83oHFypZDH8Nfq2278kihTDAAbDvf6obTZetGOBtN4UNQysWoMT84c3bvj6OowKdJqDty6j0Y2SRyj+XhnV0eHgi4imHIOz0gXAK+ePnyXR7r4nE7kzJWCvYdNvL27jy8aLyZ4/amwWdJr82+M53+Qu9SB6Mr3jK4+dp1Ma/dpAhldapJT8bI9vbPz4D3fj73gl3LpmBWkcS5lmZEefk4HDbtpEE6YR6GYeitiN9szcfzjUz2n6Ua3Lw34eQLrlb2+gM3+Smb+HpGZdTjWI6YDKQvClMhM8BYeCUqrB7bxqcfvQxMo6FF8/qWAD6objrDOk5x9EDDqvkP/P7yKyxzrRZ+hBc9CzTTbP406EbvDwoKskyV7+Ys/WsWg2hS+P2S3hp0oBlOM5Wb0feTaNx8pCats8f8fENHFO3IL+qtG9Cqoq4yrzxBLsYAsMPLuPyrqt69ogUWsrBJZTFNctYKhl1ZPcvdjSnous97iXTKFqUtWBRkgHw4SxXLI3HTn+HtnfCYG37G4f6N4HXlC4ENRdwmSgsiKrJ+yhU+mer1O74Gnx+jW/RbAYg4jAPhwF22Iuml1UEV45lSGupCDZX5C8NpADH/IE1jlbn6FgGqlz6nYwsVavtC2Zd4Tg57TBCwOepw2CuJhi1pDde7zjyNBlSqwyUTVQGH+LmUHX6b4qHBBG' + ], + [ + '6ThwbB8tmAvW/IMGnuzwqah9+VIJixHGruDZApvu+uM=', + 'kMhrwHPqwABJLl9Hs6BuqU5d6nb91OKk', + 'K9TLv4VRjfzEs+OsR8FtdlU6XMVOpxabhHJ5MMyWaWsLpGrqHMMypEksly42FwY8Yx8vtX6fhBaX5KgfeNEo6+RqxkLvzx9Ajvjc2K7mrFGQQR2zobRjrxZN/unIoFNQIJwgr4PmT3cCTWuXXY8fBHJ4lJUP8tZ03eqJs4LJ0Bs5OOKgDH0DLjSYkGhTFBzsn6vnhheE7FXimImkZ/Cpcky6W9w0YZY5g40jOCfFE96lk6hNsDxtIaCJH/rlARNFh1PhV0m9p3yOaDclhIGbHkGQVnFitgwqQ0j0DqjbcTUZuhu2+hNGCDREx72tROSX7OHHAojrRgqV6MweIItkZFS2NcfFgWjRwYfEKcZ6D7nXm4P79aLSAHWWQSW7qscZo6NAVYtR3iExehuG3IMcjiPqlt8Bt/ZnjDy1Gb/US5n/OK303t9J8bR4EEs7m220W1BysxuViwF7zpSKDgC+HhOE2PQraT46lXHyXJmgMclv7vjEQwDR3jOkjNyU/DEYFzUuzTbI72YXIJV/7txvB9YbuI9E8LxocmXDydEyHQy+rmcTy4QtFi2tXFOT2y+nQl9LuwTBPvi6pDCSwaD8wfSsxh4etEwfYJdx47+p2KlIklt3NkZ7x5OHuLq5sYruUUPl/aAgt1u8qfCg4F0thRAIduxJ+jGBeJyUC4kzRRS+O26Evp6rtHrA6oP5op0w2u6Slu6j8Meu2XzSpXErbSLtI/RjI6kJCUgGnhtD76FNGpDMufl5KC97Pt8x/8ehyuGhDVA8k7qT1Q0mf9L5nF0u', + 'hQ/gv8r8GwAfjWqIDoogTUokPnS61M8Eo0V5fPaiGurgc62V6G8aVMy/q450KvGD/MORH9GTzZCzcXB0JnVBOnooa6O40Fjb39ZgWawkYlm49BQ6FrHzdjqAKmcyYUF+M2JPKiExF5W2lr67f51toSUkgDTT2DvFHrd7iDdNF184KySj1B+ibMoOpjTzCPivnuZOJMQv4sobk3a5TNWwW1qZmf8tG3s3cBcNfSoPLu9gSSZsLDA6z5gur5k84kSfPf0mwhrDHjXqFvMwaiWwu5XNfQk3wkCRZdEUTvqwvvki8G78l/L8unQGyFBuKUrMXvlsC2rMvXFujLwFc7OO+LhGlfzVXVjg2KImeuErIKE05q0GJczNEJtFEQHows/kRXT8sSNsLGSg/jcsIuLkKKca2X4Ek5KvyqsyoD6/8F7qF0NY4xFJqekN0jVjS46/P7TDstOxWs1YLsbbsM/+npCSOtofrTZnYUxIkjbvzlTo1ryDOdyIf7IPKaKidqMVOiDg2h6ooV9aAxOtasTdVqrqehkl4Sfcqf7+Pg4QzyR8Ac9MWFW29Gua/BR0uk3jj7sFK/tZ5UcbtAnFHnEAk1Xa3RX7iD6JKn8YmsvE8dW0+zru1+41qC/ZKOlNqgRao9+AA2MlKDpdGWIFLT3CgKUnPdMGGAiySGDvzUCck20+UocdS2/vsodq60/98RKuR4sqNElx4WsCCOmATEeeDvSNL345bWiTpqiw/gh1lt9Xr2BOLeYeZWtaX+/9rRfAe7ROlUhZmrhEiypQxSFSLzhpr7XmEjLOFD4gWhe0ikT0yA==' + ], + [ + 'UCmSKeMsqlw2DcHfghbA0DOva3+IjhYv5dwTXYCHAVM=', + 'QnbOO1FpvrEDMUu/ko20lneBVs0+xDDv', + 'OT8NE9b70DxarJFEjR8jIZO2SLuBv+wJQRLYZIkn8PUHDnS50zfmIYuZISOPMLJO2ltO+d4U4nX9iSBdXc69kWhdzPcUVEnftkqcm5i0aODtkH11DIs530vKmwFVX0u3MePssWdMun6S6jAIj0aiP7VAvMLv9BQbxS96WILUkc3eVMu7oVZNT2+wNPD8kp1jc4prCTWQu6pc9hiTt7CUKdj0go66asoTWcyeITiehbhuD1TGDOBd6Tr1oLv3Ye6IP7vA9UZmqMgvrkC94UR3znpFAR2460MPi+PAmraHPZEHfIX+PS+P9Ew7AEMDLD0+hFEdrwq41X2udPJ9FQMLoDvDaguQA7pVRS8aQCXPEcSulBU2wHMdEcIy74aIjQKC7ESsF/Ih8bc9d87Qpex5UpOsGZ9RPoS8GBun75bGqhFtvXJtt2jhho8Do0n9oIG9s5KBJ+/3eruN8iVguOe63JdNBjMEjfQWKpxxVSQPWKlYa/gw5S5JsIuzSdleOZU5pNVeW9Spp1KveuXYV2aAgJDMiP1nxc7YVcN7ny8rL9npo4XN5ZdLix+K8ZsczTWBD8E8zOtH1rTkSpQj9d4MHwsvOsrN10yVeKMzdbdic8YoInFYZlLO78GMnu04bRxLaXXNEO4EqLrmkU8bq+R2avs98uYLd8XogWpJ3nnrLPR5paRT38dNmIKIsWxU+XVr5xL+151agVcxSTJZfLfpT78mazNC8VQkJlFS5nwwrxMS4OX7q0tt9G55qvQXzvUGwuL0o/HyxXT6+N7IxCzJKU//xg==', + 'LWoTOOVJdH5Mvlsfzxp6olBAuKCxZzQi4ITqo1FFntfECsB5jGBYPyV6rW9o080seGj4CFwaLefb6+SUVKx5b/Y6D0IiSRTo3AsfWtuzOAiCGleARr9GbMoHQFDL6hxSrvTHkLfAO7iOjbpmOoOw82HhkGFE6lBC5DmFqouiiWN9/KXInormFgrv/DmrzZ4alqwvE2zG7ncgo8/1W4Qf2EKj1mYoes53R9wFbgYE9niurVvta3vSZuHt7ixx3UoWOJdnCyQ1piK3PYLlvvXTbuZEXZNkhHXpb04HuIFEDz+el3I44utv3UejygCLW1jSKwN+3Sd1ocGkqb/zZ0O/PwyN0S9cQR1DLNzVZBm12iu1g3v83R9CfEFndVAUgYAPSsCFNtwxhuU2kcRc4hfNPwjnuyNhc51Lxhl/OJunDR0KY0+NHMgqU6Ml5t51VYq5a0TZPhB6P59FADAJA7fB1NdQl8f4XI6Egpq599jO6IupSfdsTpJ2pEAvK37z78/8ThBFnCgfRmE3YdZuixVas6upMZQXg/aVWnqZbR479U0fpXHt79zrgMDXZYzDR9RPt8G+N7DhaJhiiWVNukyDfTIWjFp9mr2WMV3wR9trRCBYv8tnCaZjNt/85TVjMO3tbyxEgy8oSp6YnUy7JqW2nGeZN8lC8+Sjc8chSPpyy5sH/977qFEueCUjkGlZ4iunv3lhBdzUJqRuZSheq2UGjj9W6xXskNd29E5dcCA7T/BQuGeUhbvaPPIvx3vMZYKTx2jEeVozEUzmGryRmefX3VSxsX0uqcxeLqGr2PTVI6Kvuu8=' + ], + [ + 'o4eAV10hhHIpD/JQxowF0TDlLNl4l6yVlghE7Cyp3Jw=', + 'rFJ/j/GTlNXH90ya1QP6/L45mB8AFpgm', + 'C2B+0kwS7IXHG0Ne+ZAzptvIghwggu68Jah8zVpv5Rc7qWE0zLTdMrEQ9gGOtAeAyjeQMfJVeBLx93Yoyp7p4KvtthuuPiGpf7Mb/kqurBb3FkhDlup4dN30BCIK/at0kdLXP2/fBR6GzCh1pOvVb71Rc8ysTriu7t4eeohg2PPFXwrM5efM9aBojOI45tpOgKEFghiha+OAWW75QhY5Rws3KTWg1mEL0LacoAp3Z7LlBKjjg0tPkmPzs7KAGrm/SUARXxMcLutCuZBvZNf7cGeFWQxYw/yygaMy4rj5DIwhquwmmewDEfwhKnaHgisjZwjUx0JR3KYDp8guEHSjt1UV46MrfRYrvsgJQlGC/RieEc69AEmEI6Lx/x6qEo2zQQsZKps1Dm20Chvo11eWV1be8/HTReVt25/WLItPHanyiVARiUijZTniUhpNjKwSKN+VqWpWeXIA8zl6mZsgyQbMmZ0a+GulCZYr4MXglmsBbuXe44aRuR8hrNaE5i7NSRNrNZ5upddbIlcpqn5meG3T3lq68uElDnsbpBCRmmiUh9NMAxiahUsknOuCd5s5g1774zUR7Y+WIAa7ZYfBL8t/svLpvS7tiXTH6Eqfsx/o5apipG4hCI2zxqz9//n1RcCUVfZeVzHxY2FXf9EdilxmJ8BuHRBWx01H7X+v/fIqVY47m6OdwTaOECA4treC4jBWbP0yfdrboMgqJ0V7ChOAy7g00ybuGgsg6V8y5efSXi/yjpUij3Fe7tPOTJoKrZxgfDiJnjSLGFAY8KJDBm9c6AI=', + 'kgcSX8Vk9lLvuSKyUdhKNDdf9enXHOm8VGCG1eXQX4llWBdgyrveiEb8V5eJqnfluqZvWB2XIHudaPRiEqd1/Zwc55nIpMFZOBgHWyzW63s34g1Fo4tzkfuVJIqYdDnK0nofEIXz/flx8fBP8T4OIx0Qn+GTXzsCYwLWgGOZHwv8oIfLkI/8wpa9kRUwASGBwgkIbfS3pG2rBQmnG7YIcCTtZtOmMSlgaAw5eYVHLY5t6pWJlwTELjzeDg1dbMFn0StRMX6vF8Q7Y06efPG5evik8dsbBf/WPNL2YKxFGcwaHjogj2VpH90MU/JrRL1pQwEXz1j01vlw2H3Q1IpoJY5xngkWTrRFwLKUQwJFR/nxqkR0Gkbn1W2reeNMiMnkjNE7Wp6eO0gNQWKHz176A2SL4dTd6G/7gLkJ9Tvp3rjnlzVJVgtX12AgIS39OLQ9t1S41uL1QtVCOJHOP3fGFCKtxu6SVx4t40scDxyogjSnXKRh2dAg3LdU9NJX57uUhEjHWRsx37dPm8AplkNmy6QvoGw4zbOt8mLVRQr1oE4Z+giCur8vEHKwOvLt2gErLDvc2h0IenJgNTtfmAoqqivqltT2CkwNZHJwDSxfwrcIZ6kNr9iRY/ckIAMavfEOUCsWZtVnAXv44S3zyIyytrXMT1y7TZPHKB3/82bKvwnutEcVc4v0JyFCiLy49xBuVzZ5VhkaNBWw3OmmF1MTSIOEKWHF093Xh/CgHyuAduFy7s4h2Y56ZDeXs+68ZGYY7/tObJEXbGafD0J6AFTVuzyE01IIPj0RVZ2Su41c0ECdFAcP' + ], + [ + '0Ki5LqBa6Ptmj2d4hCJiGXdLfHus22jD/bz5hj6JrJk=', + 'el0n8KYUCXX9H6z6ZdgAdDgusmLMEe+G', + 'yJq3CX1OBvNndNPSEs2YFqFTIDQLOzj9ZAkuZ1FJXV9zigrhxNsSqO5YViFjhnoRxdX2yN0OZGVZch1Xzrv8FfYHbLCrll5+PzsJY7T+F13P+VnzT9pJWR2QmvahiMo8nIInIXXRqhYiO4dilCc0YXmOjTSTD0clJ+QWNxo73OThdNRWJWhu8mhvFODJu1NhyI2vIBfAGY7s+54yVcxQQAAnOO0Kdcf0hLcwo7O0xyclflpmnJRxpgCnqgMd0ULU5DmQqOtIcfRNGb6n4DUIJEd0HKlPyeWRnkdK0+v1G/JQO8JWsfsbsEFBTJrPyiDhFFU1GOlytRtbWNyQXdxVLS9O7BIdE5JsAWyr4f8CDKPANojwglIlQnvkOOBdYLnMffPW+4kwg2WAO64Arz0/vG67++KY6uJePFrea/GHQdpyOla/obMmvWLIrdcTrvgRUbGtKKw8JdficV/cLX4lXFv3xWVsg7gF0XVDIGxOt6DG3F3DOIMiZvTd6Vq/W7J8VIPRjLlv4AFuxug4UiBSy0Mlg7O3wT3T0F0hkW96RPDtKPX0tZjfeT4/lwlcbW7q5Md6dRtuwU++8GkEu6kauy4nGETbu8sIiefBHA0PJhlvu5BO5yMdA84S6V7ECQShZGS9iSSpuP7fJeAXlh8qO2nqe5eNdNVo/MzoIdDCR2Wq6YJ13c80b9xEvg/cYNjS3hVWNtTms++mjs9RmW1G9vubtzKi3qiVeGnJi5vG+hjBnDfcRX/e/GMU24gDvIjCO4Ht8EmTmavS64IBpD7eBVzkiC1U', + '5e0fY6u+nXs5+/zpvJZVoWMz/a/1+UO6P01zwdb1PA9EgOruFJzQlfOHjJmhX0duF8Ho1OXV/okkpn1KvboX8AC4xsEr8z+moFhlN/lLQkmZzaCLc83P4uDrXpKAmuuxHE9zkrC0iJYQYXiBs/p4NPl+SxNOHyGQWb9lHr++H0fd5OH8zW9y2/SL4wVnWT8pqfp3b0VjMbwkFM13Kx5s7Bmwnl0X+TR1kwSjRWRtQrvMKPYqtPj/37vf3vRd4A1EF8pY/ouX1xn4VguzxcdnmYlmo20fZORnpwdw/Z87PE+vWdY6Z38MRRtiqCECG10DTdYxUj2feZMmiOYWwWRTbPD+0jbD6i5u98j2lkTPlluq064TCvAVuDATY9iNC16qeP2gCC5xGMatngpS+TBZj6u0jWxqsU57zgrjTKGkyEfrYzSL/1xrRSopl1zpnd7Hbvo0f80R0cS/izrVB+vVV2Tpia+gcX24Drs7XrUuFCJPT8uQf3fCXiF3pc/vHtMPuSz3C2sYSyKljlvG8v8DrUTus3E4fROkNyqXJ7jkjfa/Gh9sYkq2UdmZC023ANHeHhAdhSWu/vHcyXc0b5mPkgh3A0F8gkeVkG4/7rLFfY/fH+Z2TF24M9fMf6CtgT9xKj6Av+V4D5znzKRQswMy1CuLXPm5MVsnz0TUm6jAg95xWX0gb0mG86DmLXrcFHAlFg1xu33g7DuqT9Y17hwuOyE2wHshJUK3HLx+hkdtV/NKrQmQFBQvBRS9Np8aAfqzZzK54qo7/N++/uZNfQ6Y6RLRDQ9a9a6sQIdqJt0O88PFxRxo+w==' + ], + [ + 'ditBr805o3oJAE71MXOsLnppdq8X4bgLP0mfyER+kWs=', + 'EcRhCXLZZa3bPnJUClaUBwpGTDOnfRIe', + 'HByBGtyGEv1l7n3mgaUR+K6m3dUHzFLJ5//dfaKtv3zAE6Ve9mI03l/cj9SK50TYLbRkNFmlIQrsL4xVWEr+U52bvnSiA1ciW8ILOphIYDll/ylgsYrIFwHk7Zm6G12UUgDeNUT/MHONs5tWNY+3yxzGDieK7Dm5/kgTrGMd8N7LUq524afVektdre3zLs3ycjC2VNrb0XwAfh9CuYCZ5b2LN1shNeZVB61WfKy6EI0u9tfBxxmC/p1mKVZpTqAi3srhXNg3ZiL/ouFarVTjA9ru3nYOPhYkH4FxECeVRWpEid9aL0ibhf/77yKuzX2dtk2Hq08aKi2GiU+DBsBIyKldoRQrzIbx3g5jT4UJ66L1asiShpYjFIVsr5qrVRkEJGq2EZX7rSFqEglR5EQwSRqr5/YYjIBy5CB35et9q0zhSca3VlJDw3TfuFdW31PgViUirMMNRGmFT3l2M0wmg2w5MsklXzhH4Ig2E5kW+rI6ZahLTEpgqpw/9Th0hiN+xQDFLDkHmB0bZCkJSMxqiRC8E0rzSWq5ezxrE4b6gQlw0UflolqgWtqVeAH88nt3b3qb0ro4fUGVuZ+APLqW8ThqUUTYSY0NC3TsvA0MeDjv+Eb4yifAofZJXCq3fienfQ5w570j/RzO3hyHGMISyjKhghL558jy/eTaj/Coy+thJAS+ZAoATGOolCdF4fXaaGCJn/GW40cy9YO5Cx5ldmGdmaLLicp2QNonaVrE4HRVZulyeDlv7LgXTsWU4pHmp2uz1YIWJ+Wcxwn3l/adjAwGY/c/9Q==', + '8W4D7ZIQpMknYkxqv6x5UCqMjqytVEor8vqWUMfpAtV84yOXWqaSPSs+OIIyFpCkM2409z0/DGBXw/kh5Hi3vqC25P4kHENL4ksyY4hzCAj6avyD0KUkc6iAmNeoerX9fSW7BEJyG/Hp6fa01DhOOzRynHSrggFmiYyDhtx+MhSa/gamdRJMw8yRIn5Jq1wCKObg1BSgPwdNs7xlhHhdxnKeeno6eqO1xjFCgEAMFDRugYZWloMRxQ5y/y1fHcGu3PYXtOUvHAbldl8Hwbn/+hzt0diVU9ByDdAydCYz+Fk+ojZv1ZrzYJoYz7tO42YubGsLaVoERmx2Fx0RT4cEXjadf36GzTOj2tqCqnSRRfrJHr5CHXAP1H/EbOU6U9XsEK07IJPEsWu8ddHsI4OwmnR32/FOCLxU7O5sD2fHoOMPoqQOnVo1OHsw1uUb9nwF4jfBx1q83SBNyouB9VDoEuxwwhnXUIor6LCb0RR0eS6YcUfZG4kXX/kHbVoQrrGU0mYEZlYnBTdZ/Qp/X1if1rwthwjFIX15zx/ESEHx3B7yV1cXohxW7poq/W6VBKs+YlZGx0nbZVepVJOC2IlS8NVdLbS3RSnrCdlzfIDTU+TwJnfPHsaRQ/ZnfU2W14UjhmE77iEYWi1CDv/1jqgQj4UVuHUuhn++TsKwyViIctCvQ+A87txF94f1Wl7q0+e3djaQbYBV00q8NOuISICXI7t56aDduWmqbL1IMBAC6OEYdwZnOcWr7jENRNaYyJd28c3+vCT/mfqc+ksRcEgLyR1MTNeeN/MHiiHuUrFdxrFW74GEX0g=' + ], + [ + 'vsbgWP3QH2VDLBli7OxquGRc1dWyaAXUz0l4CXAVIZE=', + 'XiW19zrQwA9VXJg4mBuEg3Ywy7zZ8xN+', + 'TLXULd1xXGOk7pC9pLJdCFYocJeOX/cunrSof4qaM6PZ4g32WV28KysB13AiNM8hIpCASmxewpFH5dz57EDhYhqqXr0ilCcQYdBHRSdjU1xQucwhI30npVqe4ga52isRBsECCb7Dojei+EnmerSnOdUh7ZsGUumgVJWTqbav3V41ZclGJ1yP5Vkn1mul8xrQFK+oYYuUCjqx2HPu0l3A1xO0bMYvaGY1V/SeIp9RlsZ15inMZH0cR0rnI3mz+dRj5C8FkIZsrz8R7BvG0HfnvhFDK7Uv9V/I2W9hlwVlgITuGG4n+XFSIEiab2BDmTenmCxOr+fWLDGUQ7q2qqJbuwNABz8tyhEPtS+3Smzj/q+oGemJkcSgc2Lt5cYMgUzHzpDLr7NTkcQspVwpg19Zff7ozy/0UZ5MJh+cn0eJqfB2oha9EQ606Ef5E500OAIYM+agJ5btEXxEH9xwPyu/wrSB+DffGDPBZSRxivON8NXinRbVjRy1uKEcGztKiG5wDuV8B/tDuG+cQW5d34d3uc/jmUdUCOeb8eWDd6eWCTdnqKpxsaDcxJYOFuPnqdeLMEagHUrbjL21hHS7pEulmesYPonlpx62vficwArUghBdPp6VheyqHHI6K1djKh47IB8+xLSv9EBzK+IoWDDQNzXPXUHl37LnDI1O2KFVjy/Yx25Q7ubms397jNoWyBnD+m2L8ZfnqgQeWunyMLsc5TF2HkvM9H3AZPJGONrqLIwQhSI8M0tS2uU+CEagnUpQFNpN7XG+tP9ilPIHimgZNOvFHuK44/s=', + 'mPkD2hgFjDsZ1af8QozdaSj/6BwggYTvIz9duY7dzJ07Qxh5ABiin/VRcdVaqzSRiYorTSLW82TyQ2/Udd/ghcCz1N3hcM/syIrwXp9mUUOz1dg37dKuu9FiCnVcM+B7hI1EYYXTnKMixgoFBoHlw/+fI2PVX9rTbfmHi+3Actrbw41BieYq/3o2vwEQ/n7qMI1pXbsLUgd1FPBdQZ4U2u8ORJ9BmGz+piYAycbuaxbel3sxTYRYE3Zn7+Z2OATs2C67rMRInrIYmqrYXHkmI23CcRrO9r2ow0DsMKpV1LhT5y0jADyFpdkFymZt2PIAK3fapnK/Yf7Xs7+YHGVb4LsFHxOkqDS6NUVSR9U4G1uZETQEwsXdNlTOpuyF4T3jkZ3CRjMUhoZgoOYrOwhaccywTcXEcR0UXCoJHMx7roXquq0HgOYwDhSX+DBXLr1HvkikBhseuLjkaFjI4ak04OZI78sgJomWVJSYy5sxtR9pgFtwSDXzi9BfQJ8P7URJurPcK5nTtllu3G+hqISF+KsV2zM59/VDMJjieFGxQhI+9T0yj6DmQyYBXgcTEl0HQfo7sZUFU4u16phnCM/9ONDtj6xFti4aVYUR9rMLD4xJV9YK9XYw2TjYjJA6V0RiQLZiW2HB8WPGFKAcc5LWneCnJNAMuSsDKNfG0RBfPMPCYn4/0d7cGDRVWB9hZ8FnNgZyp+KYAkuETO56ficyR+caafrqiokAl3Ly9uGnDEmz0ujHG7Fkffltr5+op24rYo+l97FCVfNrpnkzjTLPnuQ8onqNfhulu3CSy6OPG259n4zf9Lfg' + ], + [ + '1M63kIq3BG+pMPO/NTF+MJJqgjgsxAKoLRV0afAkgLU=', + '9zv4e58TCPNokUk0Sl/BonvApfTLkFj2', + '/S6Ryos/iHVQtFIBphK2RkXu2fuPL3+1/o22aHFUKtraIO6KvVFdPhZA1+rqjk6mFuP0uRDqRXg8IXvxavnStAKx/QVP4zpDfVqvKImiUX+at/wKYbt65aoUeid2NKYMziEItSZMy/ftsQ2LGdRYV024HV84+syPm9pcJNZZpFvdERBqUKtjggR3w/Um2lhWSNjlFtYABq72UN1ziq+W8EoEBtbVRMWQwFo+Jotz6nBQy/3OVS+rotyfmQtYMbKRjSN+wzsZh6Zk+Rf0cWg7VINFU0q9aMvg97kNTMDIOtCammu7eQCLnt/MTM7NCok3FLFTWRGUDysV9O20vI1QgT2qkkf2YLsEixEJel8Bj2nW6+DZFDhCXRZim01Kh4mVwdnE7yEeFFERdu9SCHCUkFuYGNasTtbSLtgxnA+Zr4LnxrhW3xKNZ8MLH+TvyvePovxV+2UpwxVi+J6LOTPM8e6cd1op4KkbeNe4bts/r/V/GPIqcPT1Mpf8uWxXHP2IVz5TRMB9qXJLkHnf+n6XYkeAU061Xtw5GCjQbb8M+RwM1Y2aS/yML68eYEODf7XClqJXLnLAGQ0kwTRIaor2lsSlLpZBOsIUpsWGv3cR1joE9I5Mnf2GMj1liqagEYvsgfUyRKhmaYphpjcE7vfU7AtMc7ilpnsfhFy5mibizDR1fxTId9oPnmxgye+omWp6R7ESOLV6jeQM6ae0hpAbr9HUR+n+ZDUahth0kKi8pDVNWEFamdb+lJwlPJYs9UwnV+0ysYztfIg7PSa+nbAqy/7+Odbl1NKB', + 'X3Gpg7Stzcslk9BqaulMRKbSp3NqwgTzHAAs5LRRIQgwz/JghSczPdLLUebiUZACTSi1pGPXxBWfG8fC/BSJ8s7E1FWzSQryCqFJw9VNOn37yGvKgL4XXrZgr+6bwQiDmjY/2VHPNudMIMJMEVI4gi23PsGlGgDnsxLGZnYe6a9K4uhDk9T8WcExJgmjltti9cEpTM+lWJopMajGBPWrTzd/e+xI2av4RRhXoM/KBnnox4nMLVnPhXE2L5hIWbFYoRrPEikXyrgY4lAIVw2e6+kVLbNrL8TCzkTe01q6/uGcybEs0deWAtHwN0kVUDYCarZ7/K/n5EP1cWOvUcMdqKninpUhxSmCrHkzMuDuvU2GBg2WoLYODRZeBxgxd94q9agM0d8cfDgh0x+HgYK4E30mA4USQlVeoeAm4idZLrOEGxSR2VUNNesbizXh35/K8X9wYEoiBhYht8Ocbsgq+6EZp83AsmaQnddZaL1YC/f+qtbFrJdcKC/DNkqHGguMcoD7iqJgdKJaa+2o+pkABN7SjMcDM0GG560j+906r1S+ZCiKFhCunqTjglXu7EivbsIWa5LG2ck8Dftug3Qb8ob031DnHub8DV4fzc3fHh0duTb2FDCSeGZRVlt8aBEdBs0iE7xVBpNuQ/dawFyRdin8KJRZ6w31X+Xo8RHe1FwzYlNFEbVUQxpQHT3Y1FDNSs5JrBFsnrbNoo0NZf5FQnoJhUJdJ/LJ2zATk249MYY0iDuu5Ux0nFG9BNB1a9bnDQA9sLAzA2JbDjmIsJYh2wqwYZxy+0fG8nULmj1eQBuUb+IJbwqpeQ==' + ], + [ + '39U3Ai5uhfKNyeffx65tBN1mK3ft8A1VLRcRXATg1yg=', + 'MZY2eO4bztAP+by9lpOrNfBkPEF8y05y', + 'hnqOdm9NjqT7iNlhdmUf/ghWjmnI1sm1yd2UiEbe5E5EFpvVe3JVW4UOR01TUk2oXnu7FV3xKnhOKypgmrxwqmthsrX+DHEDTJAkgu+xDBMMcUC9H/2hzbstkN0LlYWylpQVrqjR1g8OwyTlqx8sXk+uHyzAeCP0MElTnO3fFLjDygxVEKQ6xQCyNrRrsShuFBszLRQPiIEZY4v++mOolih+0Zt8jJIYGYWR9UofERxGTAubhxqNuFvp4RcaZ1SmZ2hfzUDNQX5aDAwG63DxHGO+c6jA5fJdzLK4Lyu53rh+CswQFMdOtvnAMJfssFzJKNy7MoDwiQVZxrzV7vwozKgA55Naci+RibUn9t6xWq7pTPcYiACqmEWN2onTQLwyGILdZtfv7xkqZA34QrRqMR0pnZlMTQVxvJRhEsqvExUzIX8Be9OKyMNpehlIuWcPkxu4d81BzW3OSBEUNQX67PM/CzTWvMaHI9rRm2E/wO7zesARwK7ix0UFoZsNw/AKBY3wa1m47Qsc4Prmm9CJGAWEXnCOWKEzVow4wC5R5I7LsrSqGm0wXTyT+dkPsEyfMJKsEIUGPVRH4O4uTH/jYixxV5JOmXkLf3zG/tvQGYZdMx56R3VaKs8Manj4rQtdXt/TyrUrpziii15dRn9/gvQGt+/WRCJ153LBXVbdSH5C3yoxu5i/n9Wsp6jH++kx30xJ7XwjJ73RK357/72ovOlzXbLPYrdAGwsiN3Fj6zgHtQNHDu5tTmXR3/kBhfK7d+OSY3l5jk+mZaBSyTJmTuqPFaugHsC7tg==', + 'c/M5O45B99nYLl9CsdYjGmEAESpXf/dXpWhadznbeV0aFT2+jwrYyr223sqsNWfgcOIt1SoSn71OX/fGV21QreAbkRYOAb0crC9dhWHM+oqi/GmyR8jYImr+Cth4KcZODdZtu4tfJ/+MoRbROl9Lb99bZ03lQ49+/bfat4mGxKnGdbg8sHB4N0oVVGkagx987hsKBOgTZaX1FxvBNbu4iA9uhp2f/ZGGaIWgC+tO0n9vwKblOWN3r6GFTKllDgXshdRMhDYb6r25S7adMzQwhSG0KsM54O21gOtLdKJhTloD8zV9tEqwFpTNd2o8siaTA33L7T1CzDjjGPBR5R3wRAaKXzW4cXClhZ17r2h8WCur0viwprZaB0PmC9+L3XvDzLRxsKrs4/PtmjaqJkSPv1aQei8Sk245LvdpPuLNCna14Q4vwXpxe8jEFnV/uDS60YZV2i5digS3yKCCEKvMAhSTesSPiQoCe51OacupVKBplApq6pYJg1ehKUc9Mly6unQ0jXqTCD3RZ6q7dETUrb4VXpu/h6VKAnZHhRV04DookmH/s3sYUE18fcgSF9O5eX0b1ct+W/76WvuhWlPDsa0WLUOSQR4q8UsVfSMnWJZUUgh2yjQePQ/AGW24Zhk6gGyST9gk9gRAjI7v7WB/0EUZs4Vj9JPgDWYWhlkvL2L6MhZsgrMry2fWsiAhQ9eifHZagscSv8tY8iUymx/0J++KDX3AN7Kw3xyGNMiJtyPQabxEPGyt1t1+dcFeUYtWKh//G3wY03OGflKrQaAQJqXXt+kqa2DcxFQpPs64MTHPxv+u35Cckm4=' + ], + [ + 'Y/ZSEkobQ/IcsmY3A9jebRKIcTJRGZCum76fpWxKUBs=', + 'acnwMg3UWURBKU1BwLjp9GFrISb3HvZJ', + 'B7qLY0XPpNwIQILqXnUgWrd+g/PUS5lz+9jvB2Vip4PD/Mm72JhF5y9D1JoaK5sYRr3OYg8geUQrJwCA9GT3ArI8HJ9uPIjCoiF4Wbmqd5DxEruftECvu7TmIwG5YC5T3FdOGer7aUVtGQbvFTNuk/xoNS6UkOL9PF9ogIw1E1kAp/Pckl+4T6BhfwBsY7ugqkifwF2xaJHi5n83B24oO4XhxOUBNd2xcDaAkO/IfoK+ss+sN592/aNGhJ/Q0vzVuncRvcOLQfG8Ow3pfuZkbBtcFwvItFSCtADM9gxWTDiF8qiRIFNqvD61CbNiraIrlTaBSlbxHOZb77dP9DNcTAsQ+G5nNAdLjMopA8zHIz+vDOzK0XQNH2Q24LSu2B5Z4RX/xoa1+LzfRuE5/V68aKIxE4KmWpK8suRbdS/bEOiZV3ir81PepQkh1zlJiqRshI3bqBrXuVCK43cmiyQt8nRfYIeNwZRN+3vqhEuZ6wgrKWxQ91a0wwjB+BvYfzZtvYAWwqXOr7l2kTEVrJ2m6nLOVslNmJkcw4uRcN6GeJlrR8mdVh9+LEr1hk9tqvWaMqWSAqxe1E5hWbtQwAXDhMrJPC9XAVfTZAZp8QMyOTse8mV6WcNTet3hukr9Bvb+NfJ2h9vYF3eWv9aFuPgoU8Ssa0QM/gVteR0Md3AAgbktNp2Z6p7fmZfYYz/HEn1lLqEGiY0Ikeq10570r1m5FPxskv/SkCFMCDkkigC7rLsfEaX7JY3N6Serhl4Rv6pAh08cCJOfoof3y5bNhYiceKNULmXahJI2MOY=', + 'ccenQi41Qfl79z88tSUSLI3SRg+bz/MKmcPPibEpYm4csTDSXDQoPsG/KGzQflfdCabjDoTuCH9urSjFImlRs2Pni+Kl+Ljw2/aKx+Qu4n2EKsTJa0RZDUmUknbP5WEZp/lAySsWsUOOqdOf5bwJTHqsBVVi0L4Vb8vWmti1A9QjX4fxi/ocj1yZtDunLXa4AKnHa4qzX/Uc65GCnMhjZHUa7ezsjphD1r8LVTKWbgJII7MEaqOTohAwCy2+mRW9EDkF+X611vJieJCBOzbwEfsemgn3liKcd97JLW90ifXXGQw7m/7CHt+6gMpVDtc5kpSjpZjEpLWa0B2vw/092aurK078l/ud6eNZP9MlBUl3nq7F6dZPHr0rGHhe3phwkE4d3TI377CVxlQUWUzLI9dLBCf0aZ/+61OJmKcOQpfujWcwwBOJQjqpjfVH9/m7+eg8kIB7Px0XqBGvlf36R/TQoWfIgjPPTwFpjI8bftC7LFDKZEZva5OCh5eJct+Wvj6CC4V3d7QnjxCMUpd4qdyej5/9dkLofSalNzZMZb2YkTPXkBzED6tQWrYArhWV9o/GV+NH1C7P5rsaxLzr1MQeEmsA7FBvVgo4pprgUacaAQj/2r/gKzvEhjpkWFi87iLk0pcNoCjBtKRSGtAwho0oqW1chJHqXiiHFcvdJWvFNDbxQCje1ifSlk2toykqQjj3cSrSslp6IfCfJ3GkyI0Y/sE9/Q4oHF4ezB9VU799/BHLVuzu07N1kGsC0lFjBHPB1R2cksxkaaIBfDwfUdk/ivWnR11S3GUqr0byonbOHWbhi1KbMyk4' + ], + [ + '5FkR9aAYUlA4yx9o4IhYZUE9naQjfjay2kCHJaiJUKs=', + 'lkRjEt4Nh8zjL65tUmmDgMKXE8gQV8T7', + 'VB726msRYmYFqGDfLPQY0jWflMk41laPunxSzIt34BJBmhyx/j3kRyCpYTEl6TQ7QshC8NyEASCdH1G8vbrzS5g6ubX9f3ed/iJ5ygijdQcyRuJ0suOf5MmAg/qh7ln63zD5SycGWUQEnW4OpI7+aiodQnFmB8CitaLZo6NV0NjvWBy4ZRMrNZ49GVo04smfPp1dUA8+dSf9DaUi+mW2cXEYIDm1pYBvdeqLVVGD7MeTCHySAZo/pwA3VtyST0GuOdVv7gDDor3+bFVY98xMjwbF/qpBwfQdz8iO3WbX6RiUVXaQ2KkaEo43UtEGAgp7F6JV0capw/4/wcVJHI6w5S6RWc9HVJBzNdYBzW0Hs48VQnxp/Ree2MXNNOoYzb+anKtAgKAn5oOfCLtDR8W8WRvz1w7vpIcZ7yLTlYc6tATudtnF3LBj3+LzfHjchG0geClyUv0Ce64P+xbKqYP8MOH+m56oovmtEuQlL4aIHU6yTuSCwEzkmVxtDPv5PYy/M/OT7JxoKlqvXa11NDROxdVkegLe3kFOteA+OWUhUpNJ5MkfGr/+jEVEtDQFYQLJs97elWdR7g1MPmNKYf9xNFC8lGeKxqKL4iingMVpyQZZcln0LdNNzL91jxEaCDSbn5qX6DgMDiP5aBzIRcP750nDRdSbzuMxAN4RR9rz8NLwvEnVQfOIdJfYp99uiXRO12LeMv27RSejfHYf5vN7UoFsEbs5Nt3fDVLC/6m6UH+pKvVgoGFnJCkNJaYso38BCBoxuCY5YOysFHR1kEawZIXNHHGKrZ0jL63t', + 'RfhXeuMidzEi7J9fTkVA2v9T0OfikicQviqlmIsEvSVXaBxFz/n7558gJtqBBBuDkHYnG2iVQCdyXmfcUBGwPvLPNiq1EgcFVBYmdiN0b6lAe04A1kFBLbQFGXauDt/HEtJ1zUjUj28VBFbVmArpBnIQa+cJDM8VugoNoUMhx6/w6szt8MTG2F4+2a+m2SnTlJkPNy6m6Xwo4Mh7FRzFj8ebdWtOia199UmPRth8OUDSUH0U0DkM3aQZSHz4Zgi3z8a4g1gmnAawPddphWYZKv76CPpcXk57Dn/dWG87NhFy0Q2VYy2oFmxJ+oOkEwNq/lEnDPlMOVUyBPNhlI1+3XGUT4zOAzSsSmkY6VtpBii3jL+iZaFzunBR5uXpZUt5P1wHZrEngyYpzizg2VckYDimGYDmtF5NsNZQDcs3YSyzJPOJ/tIj92ZmuZj4XqOeDQpEjf/XmopGq/bVXatW5Oi/cuWUU5IJUBuDgUUUmSx9722wP1Shvfh2c2pU4T/fE3opKZMG4HUfn33PSi4crGQVO5L5XMb5AcN6mVNZLJbOTxnRMecvlfloXGSdlJReoadaWkaarmXtvpLasBZFdVhRVPJpHEHEn+/nev3pFh1yktjeiOWNK7II6hwTflzzB8QzqvfaZ9Pjt4ZNxPfwzayxWhgf9T7yoZcow5FbtfiaoeaxhEFyhnewWzwbgZ7z97GkalwD7amcUZNjjsWwKahGH5E/8wUOHxlNuGA3T0haU1/P6vH9NC78vT5r3CTEfyDOl+c4p7TiS+r/XpaYYOvl0pOISwb85LXtMOGw6VT8l8KCh3n0Yyg8Ww==' + ], + [ + 'S1kuV6YWFrY5vPfErN3YVQWd/bG9dQ4Fy6z3qgizmoA=', + 'stEbinjbM/j8O+3zKqSwfAK4L8pYfcwq', + 'S8lo0uMCbFOGc9s2UTeze57w4O6JDSGvQG0okkrFae2STVyzlvFprKUSh/OdQHs27oNSxXK3UWDOhzYMNOTwjuXkVfrR1pQqJTXtFhkJj/ciqZhKjj6W7Gn0ULoY2bHBgGC2d1RkcfzOmQGtNyn7rDHNREO+11e3tW+4cVVUsq3jPTkQkrdbq8zvSsvv4J5JsWio19egjQcDJui4krSnGxzZExpdUNgokO1K2FJhRr7TTyHJIIiLSMNwCUvDwrU7KL7Cp3aQBzIrM4a8yOP9Gt4HOOB4/xYjczz/sjZBI2d1OccD0X8It2w7ZdyTKtNhRY4o8LykLboyaI0owbed1xfLDsnMsCpXIdj4fW+IZKjCLmDa5gL5djGNrHd13iYEhCfT1EJwYrgYyUdv6p0D6Jo9FIX97jAPlacMAuvg13KK8wYm9HZytRgFdaOhCg3TqSTnW7ExYVnnTU8IJb0F9/zTkM3+dOv9Tf6mPXpzzFu8OVXvt8BYT1/38Wop5B8hbAlMHbYcXHGfHW7xTW395OpbffaEjZ7fKfbRIe7erLmQtRP/mQQADOslVFF5qezPus1LW1stt19GcNdrmJ9+6YxOS1Is1ul8MMii0s/5NHGWpXZr0NSI0GS6lB1JYY1XjhqzZBfznZ22n5vFfdV7tPILjMxYOZlLKZkMkQBS6iJSafK9cP5ZsyDC0zKXFxouehJxYj7mZd4RS6fRFFaAPSMY4t6dKx7RQk7YYG+HVmrqnFJyjv6KuRKOVoilL4+Y0vnbVZf8xYHuOYTMvzRWYSMGfQyaEoAt36ddhg==', + 'BBvFOiRK/U/xG79FPbb5yiPvjphQ8Qygz6k3AF8Tot1RBlpD6fN9KruomJDNiEGPCACdDAnQiBsQbtUgDqQbpifXPfHFSkUF5OrxPgtGEhh0uLkWaSPSl2gpW7gZ0a548h/v09xV4dml7z4+btmxMERpWM8VxUBL1zCKBRyBKKBib9zEHeOHeRZL50tH8SpseFDuFQkO1AOraJTVbSMClCrhMKMEvmJftk91wX7GptVe446nvFJQgb0j4n+GLE67rvmU4+sWp4dRxUSjpy15YtxzP1LELMD2yImhLsL2K28oKwpg8iMokea+9nKhaB14rXQo+Fu/9fWG61kZhwlxeVrGfXHJY74EV6tAm3x/ocl8G6xIKmTfq4OxdNN9yVj5EbOvbwGZecUKD0NaIfZ711bnD9EcOzBXOgXCWEi1Bo1l6EJUNnElUeTjoAFHw/Hyptmn9IMJDmlZOltEXGlYU7rnTS1RiCSbMLqDepUAM/0pC7fWKZLWmeVrYbRWihXKFklncmHac/SlsjMwHb7qoOJ0Kfzxq0eAzp1WBbj8K5UgAR5YgTDIV0S1O4oS35d4m6gQwEPDDhQnV7EnN2c/6vmDwsj5BgVu3p5cP2UaISS/kFX+0ztWBnpGrUmpqnFsd0cG25clO6C+d1siFphEZGeKNTEfak2XThZj/kEwY+2o77sQVQIZhYgNuz2c/OlT/2n8OxH3dfIxC8Acv03wWVubFB7C0IgtA+W5EQLKyQwP+P9QapUJRr3VW3Lcq5urU0adfdliqLoqSb9sbNtUtJt5IiiGtxexClwVknzC7InJkW2cCvrMSTux47E=' + ], + [ + 'KooQe5O3US9ESe04XuULlHbD0QRUoPFNOwTyFC4BWUE=', + 'hm+YPryGhJIyRbu3qwupvXAQnLzyaN/g', + 'bZtrJMuBMcReWA6lGhnYQSpfumrbQT/cprsinzPszAWEOPiuSj7nFQEroa4TLjDgFBuAvr7cRGeoqT9IKWKLj2a7zUVn6kQncj0k35MRcJqt10GM5IwFhQ2uEGSW2jBTEjweLu7l56W1Q+P+QKGKnFSTSe222gsrFrwSnLGSucNV4UqH7UaIViUhyLR5SnTuWL4BC38PoIraXMrpxKXQ33A3H5lhJx9mWJPyV1OVMIXNh9+MsC8rLtb9eQjTkyCkT3+Q7mqS2axwu1NZLbNNizAc34DB3abLrPHpPO+DyRUz7i6YyQcLoubXyfKSzz6zdZb9KgeR0uJAu0C2mdHFVk0LfYCsnuscQwpw4Q5ZwteeboBSjqEnz2nJGeb5ckVy+XOUtIuPnL5Y0JxvEbu3sOcHqi0TK498flft5xcZNAiLn+WdT3vqxyqXPOOmZHU1F2fwj19XVcYb3ws7HlZ40L+VVDmyCZfzSmJQ2Grw4Ma7hgAJ0sHFnDIMbwlPHfRO8JSJ7ZttDFsPTRh9WUot5o3HkCJaqVHoYqbTxJDAG7n+zZ2J/fwT3YvtCCWCPk64t3u65wUxe0+FCuiPSpbhW8DlYhfc/NAIYfUsurlzbiBUZw/BFjUIsj16qIMhBrw0d8f+tWVGnSrgspm5O/poCXZZr9JCC56zRQhNbnPAs5Rrs7PfO2q+AbUOvAggeMVLxVIU0rwJ0glKwQegnADsVaop9fEmn3IxreSXD3T0yTcQ4SYIDfEtIW/CSxBRLQmsDhAtU2QLpwgxk/A/BGqcho2D5E1nr/nxT2+LZ+U=', + 'bk61NywQOj6Mret4YgZgCTrWiQQg2le11D6va0fzKL+uV8itt+VM/JeMCVonJVzdfBZoV3DHBTyNxKmNQXidmKFC42C7WvC9FsQdeAYjbyv0HSwvnJRr9WPwpt5LTYQfp/UU/P1IuBVI88W6TLONxzS4z8+7hg9BV2ezgX56LjSHOWXr7hctdHT4ez1XFVooFDzfdE3HnVf/Ltc/uiKpRX4peKGl432iBch74/mXm8N5SrO9NFh8ejGZyphgtkCYfDLUrwsC8v2sG1IBPQJvznUmj4t/Q6Sp7raVS/uJNY494ueiKb6/w1NXBi9S3HvSk3IUZ41PGdIXB+AiomUatWQsd0m3ruDG3kfJb4cVwjc914B+FyYpOhYNpOjFmRgai8HKolNI6m2Jw1ZvlC97HN+LIovudfv4wTzzqR5H0ptkacfpbj2eHPZCknleXzGi2L4TWgqPF2doEeZVsvgJsO1O3VHOVDShVfl1qjNhiz3S/7Dnpst4PNrWZF7RFlz3KzjX/xkxSEJj15ifsdPHBARbCHx9KaXJroPTcW5hwy1I4ePcCCZRIvh6tlIhhnYdCpTSnn2IdKtl4EAtFqDV7++CMdNu4flVTLpXVLa2/sPKJYLz6crZtHUbzaPkQKOL4AJJEvLZXw5Ffcb/ew4AscbpbryTUPXd0J92orXXpeRgByaovqfe2oL8OCCVp7r5Ld5pUFB69EiwPBLHwDdIX/7uNKdSvhyjEYf6WuMFvlOWh94kuEuF5qErHMu7pLN2mlzKEaetWVUSH8c6RATvvE37qo+ONcmg6ARrGuFMrZ4MkNc4m3MT2xHuFJYL' + ], + [ + '3M+jJrX286Jy2CgSfye7oiSzsCcQxqT+O89yA3kjilg=', + 'OUpbYasWacib8VOYkJWkQmdC2xtfhNV9', + 'GJHU5t1Nwx230vW1CG2W0ku0fTs3l/tFSX2238CprakfqEo1yVUtQ7Ut1OYQUUFJzkbfeewPdpO38xEhRdGO8z6pbcOiEpmtZRZ3a1+InkRA2D4Oj5/R89J4vTjXJf2jDK00pZTQzvjq9oS9MRJaeFLgxnbSQnIXlUetXjGjnlz5pYHTr/voEyC2piwj5B6rd36bw+8Uz1tRcd80xMRtglDm9XZjN8Os+f1rdfUuSnAqH6fO7W0bmHxlZRdSOt4yd9TmVjPLv9PBS5N6RQuec2NplgbjOstBE08PIhFpMJwaNvcai8VF8YsvVK5XHXeJCl2E877aD9AAHDfHpjQXlTRB2jkh/xJxC5kW+Uy/NeUc23Kt279GDYBQlXuE4EYnszUqiEnUw5+pcOEH2dB4gxI49RU/ie+UB/teyYvCLpiPicRHeygIuA7h2AZrNvRWas5NOO7aXdQl6CIVOJvtsgIO5w93JH1kbOYKbwJSRswQjKePaUHaPodtHYQ0lrp6govYFvm1tjEHWX6fwY4SH5cB+TJWa+dYM+darnJ3VMM/bvRgPTDy58bciqI5Lwx6MrS6dBDdUOqbNQXXlk8logZ/xWBr4GuIDEeVm9yB7nAmTMk9xhAGv8Wc1heMWFOnnt2JjPujOLNQVoziWWLVF2Vu/1Aqk9nlkKjCIx1JQzPTDKOTI+cASn6aY8+e2fqG1z52yE9DCWcGxAGHY5YezNbDlRT6nuVizEAGXjQqTMVq8HVFk3ANAmRcm3M494WFMvjwMmzcm3HfZcKR9DuDs8Kh7ExGhUwCL5aOSA8R', + 'wQ7/5K0L6udsxx6pZxQwTHZ5MTNIcVJj/FtVNfiZDUIt2hd/CrN11oP/lVJbvWW5jSIE6FgaAsPaWzxeQPGB5S77nc9jGfrt0cgVT8g0vdCMr6WcTm415TxyXjHIbTGVi19B875HCdw9RsUg+7urUe/q9BAwYNyQSmluUSPEOqZD/efIbOqEHj7UYS2qvCk2u/F54Dd5GR+ABPraztSQOoZTadCdV9KdKHnn5cm36y3dT82zUvrUL/Xmht0eP5MsNN/mMEeFH3IYRinKDyQh7CEZp5Eb1ZGOvBya9UDc0uIxSGcXnZYlxXd25VsKF7zQpIvJT73ooyHw3gdtTsK/2JdnAZY6kKRFYmhW4bKM3fd3xcmW4y4yBB73/4EFzLx9SYoR081kLNcw366AlVFVWohkbWKoYARPxXNFFu8zGnpKNHFY91aCgB4JiXMo2wn18Xnbm/UetmA5eKsC+sSmmfSfkFRaKrvpjSkg+Y59kHGB3Yxqa+hlbNtFO5yijr9Sgqz8Ypd/BpDEmiAuJrChbP8ngTHe3nk3H5slwvYh7psHgno25WCNZSOZwVXqy0xSHoml7jz88Nz96fi1m3xE9f1iR48+s+Lfi4pIXFVhvPGtZfLH53ZFdToV40Xt7U+gDnch4xIYcwCW4AfgwOkie1eC6iFwhSUU92zO7vsskREcp7jkn1PXbncfuNN2Ro+hQSSL8lekP5CiTCIlZ/ilDJfXSMwfTGWYk0feK3aR3o7GVVSb6vSPvms348JhYnIk/yO9p3APIsTZhcghW0FxAvkjBOLALZq/lrgkfWsd7QZart/57p6Pfjr0N077jQ==' + ], + [ + 'oedzj0/Crnr1Ji7kxUtR7Z16OqCJVvWKTq1Gl5Ot9GU=', + 'iZTUnNt0p7XMj7ObasEcv1IWrYmKYFVo', + 'xqrIsUkos7IATsDnN/03Sc2Z+XA8XZm9H/hIhz6dCSh5vKMRvXqY45sywz7+aLK8/pouY6MbKczLPVipQQj15XKuALbtpsAAUb3LY7JuqDE//TnFlZuRM0ETulXHFFnsecHh4mEflGWPaD+wf1rRuVeErm2Yn0j355A+NFjVyKGyhW88iu/7rhuy4vV1h9e3bN6UfsEzgQTfGlJcA4VANpf3O27t7i9hDWtdRcjUKM0y+Kp2OnKIHcsjlAz9iM5xQyXw5JghSWba6DANWY+ZOSiLdWznMTxSv13/kFcGdUShLm2pxgfO7XhehiWVxk407Bk4qHmkqrkyjLRmZ60p+FJAHAJmYVuGxmusIZ+9wrzYFbbBGnSrOkiNvsa7qJwCLSODQieh2znh4rUwmzQl7RVeID2oG6T3lBXM7FeFEI/96kd6X+GzvzWgqA65F95aPrH+Uo2w0tSe6IhEIdBO8F9sPq4fAvSSJ9SE5n7XNBE8u9e6pjf1YUbQDzDh27p9lhLk6rXo8NZ2RLxGwM8BU+B7xmMUhHMRfeVJROfUEE7sY0cq2lK9N5dfiI/PJNkfP6bSml8UZLJoi4a6Mgo945aS0hLDZg64IaY4QjHC/mUIzhIkLYFzjkmXfkcItB8Eky8KOYN/hjFpPwznYEAGrLjX283ODVKFYOC/ytG/9WSRJSazEQZ7urUOm3HilMCOz+Om/+2UVws5BZ6wMRIHN/SfkzswaJLcTU23xFIEf9OUWUwB7A0JG7rTk6hDHCq0IKRxhD9G8aaEI1fLgpBSsUy9TfYXgXntGK7/YBABsA==', + 'ygC97a5Xeg2o2E83NmoU1bSPKmP0Gd6Fc64HoCTt2Wfwi5bviqCNIpWtYgDZ/mba1oToBaARZKj7bk5VL03flyvTSPQJ92wEGQpiM913aYIVvNiJaEX2Lqy18Jk/wr2ugAiebJh3LqnUp+QinBq+1NCTntaVQt/5lIOy5Az6sMIsIFeEpS4dI8CS45JeDAdOUuwh+QOGNhy03luBfUhtOg01PJEW99KBuKRZzixoxUAcBnu/XdofS5wxbW35d6utD6mfnGuOMNirlnXMHRvU1AUt3OtduBMhYRcK/Z3JLJBgjtDeA5PR25v6yvWauq7kD6vGOqPreRcJGNqydk1NzHoWbfpvxmGsFuTblQmPxpqA6TWgP8m+87c8qBwY9/rnOc1j24zirWZ9tXhehgt2v4NgxG70FQH/DinSTOh5RxjVTi0yH5IJ158GPkiiB6nLR/PbBwWX3BKFS6iU3QeWguq2eKO7+Lf8fT3EMW566JHAHLPL3IfPGZDDijCTHM5oO70cpEbXCud64q/K33PmGR7SJdRqVV6O69bGkkJXPusO92IYgH8Tkq6PkYn9Utvsl9KfDzOeXn3B+IHFUV/b4maCOjSAv3YYGMskmyMyqJRAcPVTlYh0mJjzve7EilPXG4X0f9wNixQvklLySC4bma6wPhWvg44sOZkxNQVXQ8TtZXRzR5msL6YQ7eNR1QCE4MDlFsE9TQRTYTJEzFTDk84e7sE71ce7BrlYQ3R4mP60XGf1tYL0NaPSFeB2Vl2X5AdFk14P7RE+uzh4/eCjflnBIBWuFaJfZgiGl+6/cITwnqWRAJAkQTPIqKZQsxs=' + ], + [ + '1rE2xCziaV+RkLCKzyUzLWzH63Z40PW69EWCQVQ17aM=', + '/7nO4gUhXJxySs88yIrvOWqRPY2tcs16', + 'Es+NyiLZ6fTLjbOs6PUMmVfsh4L65JI+Y0xLI4jnSTJvxKcL31cWCFykKLaFI21PTPHPKIYHA08ZGhairmD7/KJ3cZGK2dIJdwRtgYjebpr1fHZv9r3aq9yKaO2mnuInra5IcfUuYdu3GMWxa9TdGatyldTEVsGp7U0r0MTUXTJtXhGWbQm78gW4FYb7Ur5BraL5BEmnz3/83QWYVi7yCQJ5jhwJFuB41l+wQEapGY0VrCKF/JMybZoT9W4xx58rT5Uiqe1Ko9589kzmUP2yCtqP5u0RenDBN45lME4NMTafWYFKNrHalg+9G1+PffsBuK15lCR+aMwEnY8fRM0S3NhBKEPUwB5cr5+2ALGUOgEejVHepI10GRMcvJD3qscreF9Z2Up4OY+f94zZfiC+qaLU5FRICKirr8IDH/2sYkdX2RSwAHktMwywYME/a0Rx+bwuOcAxD/JmoyzoVLYCQFM1GJqR+c08s8uxuOfFyWLHsmY9NNeSITcOuBdRRuhpTH/KHiZeK33AFi5/RZEhM/EE8IrutrySF8E6G10TIU02Dt5GWoZxibZ8i1XI3ssYhv9leGWLL2jrRAwx+jZkRU0bRd5pCaNHxCLBJm1ev36V15waIEUFJdgKdt7yejQ4XJCydIHm5ScBn2J63ZlZXXHgiOUaYb97giBKvKR1lkHGV3cOovKl0HEBLx0PW8BOlQU3nFAO+7yk++HKbDavi9n+Dqzr4ysUNz7LCgsVgC1VtGot9+v0SN+54K76TKMU5sAyz8gKkB7ROz3UjobZiiGy8UXpO71YPiqPapp7JFs=', + 'CvWbrbiOD6liESOQiFDOXaIFpghbl56Lrws33/TqXiSj/B+Vwy2SGWy6jo3wS52ROiIM87Wq3lK0XGtIwvBTziskZLbQmLMmEItBobB2IJ6QxPSPgCORHh7/KmeqKnUhXdrDjGbbUJyxDqnD2EhnbSlLxrtNlhPwfOuyhz7fWLo27+HQyLR3q1C2Ni63O6SirDcrido8j6FtzOA4+/BGy6qPs2c8Smjgj3ksaIqVXFP7ZSd/0UYJfYujkHJk/3iIUuaH91j+ONLYokW4XrjgXbomfnZTHLIoQ7s/6hbi5dIJNLhr+ZBkR+cO/bQ0h+WLykd3A04IfES1EsEdqcQOrb2VS+O+lQ1hpMYuGOMO0JB01OfQR4Xxn0AMAlj3Ba1TjA8nofU7L5RJIK3tx0i4CxfxK58nrTQyOc7ahVmmbpRGXDs0EtGSBPefxfYgH57w6N9eS8DhgxROtYe47Z2WO/nmSX9RT5xp4q2/L2AeVKif+mM0Fc9cBdGFxQ7CEwP1zm3UvhLlVV1yQZsJT3WUwOWuoqnvGSRr1QunLdp2qxobas/LEzenf22khxAQR2MySVzSuG5FW7+H3rCT+TQrK0hBXPBWyQ1oOPMLQKF7lx+/yD731JzO+aV0MK8V71uNNsrYiWdFGDD3sDuk7wl+/bYA6wLlGKrQek11hu1S1DalZCJ1X5jLBAc+7V3nJAXyPCvdp8Q/fHLIJt00YNzhfN+IT5e0nK1Zz3+NSvFmJ3dv0B5HVAL+VDPsTFvDd/TJgECJnYLxJk4F/B8pEIKEb2KAYC1PwM4W0Az3npkUU0oF+6I8zb/rpWwp+2UimMsn' + ], + [ + '3q8OzuBvph7ayevNKGgNEcRMxg4xp8FDxXv+wJflWLo=', + 'E75sgBZmTGu7Vzn51kqYjKyNlC+aRdvO', + 'aYf0R1aFWO3ct1BuniZh1is6Lc03f4OhjPfstl6hgoMgiueqMpvbs3I1cBdmcQZjGM+0EHHQlQLDWuaKGd0bWs1QRkx5wPaMLbHhvshgX5V1A6i3L0hPH1jHfrMey8+rshxzHAKibnG1j4YIhQn9DeZITnOHZ8bRHXhLuSlCOzWEs7XAi/cpzfQVcZpdQMhjctoLKzl9+mX4NtaoAvpv1ujHPnFfd4U2K4cMA0cN3Nm2T9bi+g3k5illFk0nBjiQZSQX2FpPG0g/UoQgHEpEgRpNE3RlHmiH3uigdKCaQWoQB6CDAPxr3C6SMKdRlsbLbBOra8rjDAIJDXLaRJEYPHOqOEElHuTZPuzENdvkRF4HYh2WzGJb1t5mXDpOYiKEBSJHM+79flL6WjZLHjiRQndHubhuWcmuAmCGEX32FAz8n0iAci0QpKmwgh1w5BjKPjJfC0htPO6wNoaWI6oZ+Y3kjqv++18Bs7Oxq/VS1KmtyKwkLevGtIeomeT+Qb1gleej0OWcYxAb2lz2uuPpWscnwp+EZaSgkY2WVnqbR7EIrSUw9eiehg87AKt6PKZSMIV9TqzosCtSWOBKzXRI9y8/k9bwGzKYCxf8XCXp6oI+bs2cL+VfY/7QWmYCBv0onfHP87MHVNwHvz5fIIleNYJ4IPSOWCER6l65HHVaVCiBiw8KTCRQxSRzV5QvzoddpDhI/dCO4f8JPkPbQWDaQJO5/wZNBQJD5jiHjEKqjh057yg3QZpK9Seir5BLY4+Ruf+g3L3OLP+hqv1R7toPh9qccIUgUsnD7l0uMfzdqHHm', + 'yavrdxIcNdQlQ7GKOtc4T8Wmtg4hefMDJN9gwnb7wu7pdMd8iFMA3BqV2gZpcPZ+0Q0motJ6geuhNvNTeaY2r2WCeaDkRa+q6AYpyXK3TFlAfnzTqwKPQWCF2rnvjLYWxiTRNb0wZM6154Vc+paScxnsPX6/19lfpKQqO6qLGh42ylPyH3FMnK27SdjBAX2KsMfhX9Xi7BcFUaKuj4+btuDpu7DHz/17p48CSZFCnwAgJOcS0/ZgBioKTcHsigKLP5pPfD/Wo/PqCI241kNcsMNOIWHoQSIT4js1D30/9Xapro/TqxyK88cqE4Bx7Mp77XyVdKIVGecEZTz2xB/rj+jWXg3AlWpNfmqQO53Lh0OVSXbWQZQaJIq4JDwT2V6k59yWuLvHXyfF/xtbMQAWs9asFSWsXoYvPoPI6TfvXNR762bJaapfH+ssipbmlYwYoPkvjeJC3RRq/wgiytJpltNW0T1RKtI7lkwlwnaJv2cQPlfHUuWsr7EgQUq67ZJtVaHNFFZ8ZcMW8Mc9LP+EKxwVnaqzGihrgDqXy/H+Cbtr6eL4mYLohzueRoL+X+w7o9cqHJwdVuoGflazi68q7vgTrVwBaRMBI4sAzW5HgwjNT6NUUms7O83RvEup4CYJ1lRk/DjX3LuXKeowXG2U/l9QjfXxxLayfejWc+ltTUFoX6qubH8FXpyq1jd35VzcBbO9XI9SoSc2Eb9sHmiOSQKvCMEq2lG2z00izx/PyludMsQPvTvZO9i4ZAWA/Z/nPsqtg7QRgtMl3UaROQJf8POjA5YyP2ZqYnWCOOAkxX9EJK2odJCFlItqm0wtkSAH3Q==' + ], + [ + '3rR/enL0kFmZN3NLKWD555DAVPlK6hBs5tcg0MCPrgc=', + 'LVaX8/VNKoMSJ5i9GJ06vmeGSEu9HgD4', + 'hsRfsvTsyegF35IRux38JFqySwHH4Tw/5qf8HuO9i/2XGvTL+/1ohgUFz3YwEGW03fu6toJfNYLQk5K6nRi4aDbrdKq+RX956Uql/OU85lDDm4ZLUBG5B9Y87Yeh684/fZ7d9b+cjobBSuN50J2i9qlrGOeuYDhmg/DrMKojFxLFSk0njHYArOJUWaSkqTLI1b0yNuGLoIcDcCzz4NMF/sNTiSZvOyEhXy3Za23mvjFY1skpPQObms2MPyrj0izrwqZ450pFP5ZnGq+AbWrDEUCRXjswwtw6YZEovZni8O7hG4dFkAJjU20XvBWuwCCpOMtg6EVOPpFTQbXebsXjubiy2qWm8St/5LjwvylkRdQYtRWL1L12inTMXVOjY0bfdkuBFNiAQUJfW1C35cOj26r628wxW7i4v5W7SekWQyoVyoVo84pqy3lieELaQWyZzRUJU1tQ804QGPYmX4k5NaLVj/0tgSeoLokTUiSPBWpZaFBSz/m2poyNfOur2a1eLLyx0O/GGyrxnGcV/3gjHR6UwvZK21rPk2oDVLROBTdS/aRHMP9im2fUGHYeivGhmB2wmibFozj31L1w0qRuZM28ouDjZ8jeM1o0g+GsWi80GeCFhEnDKJCGJLNQ0grL+YnEVNF5nvss572rVVL/eGaCP1EoxMUew1qzRZxMln4E2Qmq95+N6wz6jibP+bUzQ6SDu6Hvw+4zQwSuHlWKzkMa5YXbXTvPvfaW85hWoD0fvXut0VGxeVXWL4wOhG4HChUvLaSatEPh4xidEgn2R2XmHIQvXdHDX2p7L0xCoOb5WQ==', + '082RelEZVXQftgHeELb/gYtTcdfDvfXvK+BTZJZxwB4nThJafqnR5A03zX/L9KEuvNSzkmmCc81n2oGdZ263An37+pR8D1q1MvdCZ8+4IW6s0XURXxGQ3e97uyuJGnTDRn8LDaquxikVFBGZsJGst7hmNEF4lg9+6+vGuWqsxUIioML+BWN1Pd0tOtLCXKgb+n8IvQKlKzYSLVpNDIBKlNGzeKAcXQx34iu9NoFpG/ug8aG0vqeW5Parrlni3zZzqYMdPtQgH9ge/NxI+X1PImULBInKm5ps5f/ad0eGOferNEQnWO1uXdDHZERhNyhoclyRwRYmcVB84vnK2zPgmUb2cLcI1rFaKHfPALSN4cPU3T120ni2vdrZlBYnB6qDY92+w5sCQP1W5ful7WgaBTjXbzJ94ystdWmGRpjEmCvK0mXbCChyHJR812nXjGMewJXFOMFh8fwzWdhx9nfP+yHpNM5KQVVbxFgcI9vAeaX1VpuaoZMdzdGbLMo1lFFcKamugh32L7ocC9KxsGa4MYsgf5X7uJF02ZlQ38X/cb8JV8GvLerp+5qQVzYHQZD48snJVVPVcyKcHy6SuVdTimq3gSbqIEu04Ca7vTUegxAyWPBgCbNu21jnZIW4Jn9kgYhx5hnffW03FSgXldfZRZu/0jBKWbkM8PbVW8vzpCqCMqcFyK+sfL9NOhUuWMkej155tGAPNNCgeivjEKGLDUYjVziyznPahSV4jpbz7gR6zs3/evTLVmDOhD37U6LUP9okxYatKNWItvPlVEzsD+IUdwPBS7d4EfRnbEhIY34gruVuHscSIUMb5+fC5LhxCaM=' + ], + [ + '3PnnFb+ZNHCT1oFZOSyk35hj/iUavU7Yhg3shIenBqA=', + 'ugTzXyqi9EAvGUYiX/F5AXxBvhNfUnyI', + 'RUpKMJ3BDZegzKUtl1g5tbXREQGsOH0tJs/022U3KgqFWDvl1mDAdIE9Y9IHMDsam9XSAT1ZpCmuCZec6s4uU7fVQuLCs6ETwGzmCwz7NAkFRJg1qo74Il/cIM3NkXuxIwagHZvxsnee1uVAv5qbrDMrKnOsq+stAaYWYfI3Ujbw4Ca1P8DSSuuhZwXRCmQDrweGQrWA0sL1hgLw/ymBvbrX3d1KfGvXY7Qf/LRtnaKNTX8sLxtpj8oX5V7tCW+s4vCO5SiSL0WtjtridaPQmP+/XfKaz+UdcPCk0j3TNq3gJwxVCGXEoGOqhhTG0eNgfKQI5ugHMu1nwH/D303nqOlzFHRzkHrXUpUpXIsKNPRvA0P0qpDQ1WSEL02zb4CmDc1nAAMawVrrBxK9j7YYi586nM+C+cfHlXC9sEBn3NARDHrUXpdKBHNCG+s4KM+B8LNclC6e5jiNHAx3RrQmJP65isIuP19DS3ezsi3ziL6KxCCVzMPEzCX58Ut0ibbsuHfeOrmg0xa+u9RDkgsfvL1ZIlxDwNowpQTWz6rBIfT9Vm6UnJaKurlaHuvMhMOUovhDlSAG1TDBc9uH4ZaShCgQKyBgzNph2puEYMPKAOSSON7y6GIKPCWnw5xqlYAkhdNvFsqzkbEeCVYAjGlyQRariHatPTm2fibcVhCi2n201DySCt63xK90jsaDXp7MO6StGmsMci2sw4VikFTzNa2+qANzyKWgoA28Aa4dHmCwHhS7iNv+nPBDrp13zIbJpEyVgfAfVztzwHU2RwpRMoHeev0r1Sey26FeR9VhBxAJiJE=', + 'y/f8PYrJ+BX/Q1VkSgoQyWHC7Ea1fAsBtwgWr1G7tFw/n2IroW6RYkTAJYHXDWJxOsVMoNRfUCEJNyqHQhtTcJBIHe1oJsfI1ctYwi2Y/lB71EA29Fl0rJCVlx8q7q7z8Rnl8uqBjF8ZdP5YEedJouBIGZEAneEhZ+xKtK06DbttATW57RiMM2J1hXQ7uCe9VkfmVc3J408JRZeSzS187tL/GVLhPp3F7L1IaGkm4nparEnqj2nwW/EZKdk+Pb1JL4FBPEfJqClyJvijagfljQntZRrb+AbvbxtHNaW0g3cCorYzY4cq04Ry8upexsvPfba85hz5f7ZHXWcD3luA9ulxbV8Jfxj8c+LINd7nVQzlo7EeM44FqyGk5En2SmdVWTHwl/aYrPMYDxmqdXIefNaoCdxh2SXv7r7IL0chqT4T9pIRb4JvOnu1dL3ZO0OdJtH/5ZJZEpxoT4JyZ98WcA3SRKeqxMpVuwNDUcplz9UIjMpXBX4p1O0aTCUDOR0xBkEsNe/ov94HgHcIPN6aJuuDjIxnL52Y7dr6wYWy/kIYEWWr2lH/sgx2kyd7zNur2W0lDAHSlHmtgUPpzR06iJi9GWlzjVEcQhebJjf57QMrE0v9usZn62TErQfLDsq3T5F8olsPHQI9mQg/SRTK+OcrKTdBv8RO+uaF8WW5zMVxDWjAk2UsZDNWra8LFkA139fVaRq5gYWW8sK8D6c7/FZ7WQNVnBxn11HVJlhDrLxb/HKRibNsyo1qGxdOBrmA8K4n89mVqQGkXLr/te6nRnpggJFfubDGhiyuvrr6A2nu+01barRuyKzQbF6RNzLGqrRS' + ], + [ + 'r6y2yo2MPyJdCtWFrYJPGTOkRI35TpoJksr3OoXqqh0=', + 'YlIIDKzx1eiK21F85f21ovR2rAAdOL9M', + '+hx2JQ8E4BfwFAd3UTGULTDnOky4rxEH83dKtiT2s0Hr/6YLoB27YnTyAOOXL5bkQE6qj1xYCeh/5jd4oZe9MJXpClzrTNSjXcdic4D8VPwjiMR1BHOxsf7zC5yDOUvvpAd801qq+6c542zkuNk89L7Mr6FD7P78T5V9qesCrAApVKXvux1qpUZE1Pt7DsSJDnX7l/gyGHmGSSlFfURlmxBDs5jAzSofZPTrXvXEcVi0SeytzFHVjynSLP9gfWfpt8OUSBNSR6WtCdMXRvk28YSJ9rShaZUBFAWu89c9Q+maUOgy4vl5nGBtNsd0wepikPi1bybyWWCkA7aIO80ifPhaicu5oM12JCyI1+4AUl70F69cJMGaBUzsbUmmtVKl+3zVfVsSDyaquY4A1AFYXoBUl6KXWljpxFYLvpSlZN08oVb+1KA6bIRP77p39SsiumYkxAGxTD8bYgPJ4ILXRnM0bBuwJZ0i94RgivEQA5bVcIi+fUjR/+8BfBP/Tf/Do8Y1RbEkAcIgJIxlzl2TaGQuuHAg755LsYwVkR+XSCWlFSP9tr/mx6gALE+DNAJ5qAgqHsieogTJ1ESZx+GM2wLeG4/zCgreD4tN2l9yT0rRDBOycQ5qrBe5vnKBEzhJBfXXAedvUKL09HFExQdQjNBYgoi0XFsKiZOBdZF+WeOZ560b6B122vrG4y4ArRx936MXzPJr4ldgUF55J8M1NU5nC8GSzEMX1WUYrOvIQkNobQeUDGDs9HWO3sSo0Z9X8T6jMCwCGhu0HQnhf6fxV8/vWDq1tQJOpUZiAsZEu7IpO4ZQ', + 'ee60rWtcQGVuAczw5vv7IfcPXv2D0yC4/3S3e93gMvZ8xngIZQ1hwAxtrYcPyZ1dFtD0FAm2QCW7YpBYlyk4LeC1VcE/5CWM2CirCv87rt4oq//ts/Nlwx38U3tw+PmY00Sx/Tog4fJ827w32RWVYqZ+v512op7WAgeM+wSVzcONI2EX/wO/B6skgUBj6AvOCNa2J+bTd4yRbBc3S/BNmXEMxOBUtPtm4bbzYQ9cNPFRENBe6n+FEESX+lsn1SjnuLunTdkshpMXCokIEwGitZ31KP8riI7FxMevMYykm5M/xw56DbObZV3KH4nZ08BHAwoVatUcJoZgEsHITv0iftOUc5U3+hyxHFvDazQ8r7V/vrurn+fgSRB8Z0d5NQn53dBQtmgWg4bT369L+9vVipJcC+f8PU1zId/WkyH9wDWifTkVT5+quCDegEbgc+boaqqqLVSbJ0ut0uyqDTwUojQU9awZnzgC74JUcO0MvC5inJxDMT4/uI3kYW4reQthZ0R3BhzZOi99HtImMscmNASt4h626jdN5SuM5WrzYO22UApmwAvTokP0fEbjZbvS97EAkHxdkIqkN6DgAg2/uxLf07JPn98qHFJHwhfQE+uSLo/5FkPdGGmQvEANF2bXLKk2+IM05tToOZNnds37o5gLei6uTIDRFmEIJbvceUPHb3PC43KPFdHNvIKAikfXwNIU/2s2+hnJKFu0gjFT2QINuf0OMM1z8cjxB0c0q/VsAj4E7yJvMuzhJpR++gxGeI0Hftj7TwW68Mh0vl3EFZoFqfmSXt+s/jNK+BiYZ5dCFdgo/UKBwNgPxg64CrNMCYHVMQ==' + ], + [ + 'VE6OuiE6+u3RAyrH7XpyESOArAhFbRQmrxJRs5X36J4=', + 'ZIq3nIcUHUx73r6LchtvgLg5JGUn/IRY', + 'tAo8q5Cc68LoF2JxeFhDeBMj17QKeu4K/ZucW5H2nUGBS7lG5H4S5gn94d9LF+og88IcTqn5njBHZZW/kk/lqMGJ/Q8uMjO3iH9u+Z5xR9RTRAaqFATeTr4Xzwa1LA/dqAC+4KqNabb9y7uVJPE6ap6KiHf7IuUW0bdkXPCD47OuwPI7mowZ32X3znIGhB+dm4uis7OqOXZNZ1Ikya/0akAm7dLl+Es1qMz/9u7gQEuqHeW8Ih0KREM+ddi0+c8xziCmzdG3qMWutxYZG7Qo1POi/ffSWhSHUH8TiX5i0dgXjL7Pz2DI9/72jGzG3Obd1U7IL4rc1h/L82mhksKlCxYd2NA2cYU1lZuCIelCbtXGXwV7XmVOj0RXbv8G4H3k8HsQJoLNI5O8QSY6OVnB4bMv7YlCq6MTGrpNcJSc/EgXsCtstc01zX8Ytzty4piWhSj5x5OL2Ih+Mw2m17G0MxPma01+JZJymLQwCL9yWotRoDGdSfRfGB4VCCaPK63Z3npRB15MLmK/vhEhzUeDv+U5doSrn239m+arJM4/mBw71hPqK2PJz+ZuNG6iLgJ7jUelztqdcQ8h0c1+UwQ1frpNEGHmQw5Y2byBJZdoh+6swLoRTuEDGjIodrCV0Mq4jRDjIiE8NwXfOqyg+OS0xElzN8di7l/uNr3Pxfa88F2kO2bwBXS8DnikC/J0Pv/GHd+EyCQxS19YLMDkNtBeeRv4lXZmdEvtdvYED44p6Ia+11FJzPOfXHcBnHOX8u0cgWx/aQ+UruRzCLOrTgFUq5nBfeZCy+mjzd6kvIN6L1DNygMuCQ==', + 'BqIzeQ7RQiM2JEB70FDiPdaZqYdXaxlJqgOY/UlAElrQoG6menSvuMIbFHAmpBuahO+fJs2NXKwdbwHkCo5/kFe6penGpfg+AP8jKWhOlNv2tsqX6ho5zDgt0sTA4WtJTbBrFDvIiXNXWceGvLsB2BuPNsawLkif/SGKgUQ9o/FQkcS/CUtZUTFCoMa3/cyBOQvUI1T8t5jpak12xkBs+Rnt+jLpS1eeLnRlPoeJyb6JYXUZ4o3lU9+vOAvDEpFYNbphVxdGVRPz/vTg8+en1tAIZcSmh6tWTnII97YQqQd2fklJhnDbz9iDl/aRpMuIwWx0cSQcHB+JW86bCyZh48+rIsniLT/AUrOTz3mmuMAD4CzffjzXnmulTkd4uxvHa7peAjoiwzssFkTa9omrz1SQ1A3+QK9AD3HBJuHCm4SGpVsKXd0++ZtoLjrkwpL8VabWDknEeLGS9V1EPSEIZWQkgUA7a1RIocNtwHn+COV+uEu8aVJHOb/YdadsfjJO13bTWHDhGdiX5tXXesQPLhlsVl721YhHHMXc8I6+UKDjdjDV/TZ+cQXjtquypdo/3mwiS8MaxPfF+/9CaRPslqZJXRxEnWfiES8axQDYXowPrziZjJUINBrW7bkaxPELHD2As/nIJFtFAVoIDUr/Jv2tfp4Q6xpwK1fST5dyTFYGS4ijHSAKHySzYsrus4Qag77ILxPH4JEfxTxlDbkfsO1iiXCGKfCZfX9rZjk1jNp90t2VEhJ1DZ9Iw7r5Utd9X1a9r+hepoVBzsVWfS5BDznfF9WHG1y9aohxtVasVzYMQxw9j1nXT4S18pLpoDgvRtr9z2o=' + ], + [ + 'xvPenJpJcym17EeU1XPKprNR1au0+HVj4XruSggXtdA=', + 'qgg0v62ikv70keiRucLuhrWbMQjAu4rF', + 'SYUc/UjeENQzqzwtCdaEFYej9BGz3kE/M9WXAJKzOCTA703kELIEiQ88uEAKQw2+eAo1+NA6W5XW8Wd9ynFwYi6yZMmfS79ljY33zX+GKDonnFEID3zXAJa5N9G6s+9ku/A8SwP0gY6zbP9aTOYbtdITeZ77MF7zlvhyf8/GiifYLkuU2lI++KO+3oVYbFYvXSLF9g4kfbYh4CDoq1MrdVWZDtPBLIZVYJ7GSyGjNKn9z9NnawkebCEMFLG54YLaio3x8Lrz60+wm/L+bCgfAv0gWN/tuF474CS9l0bjQnnlwHmig5Gs2xmil22PfkIjwngnl6h3N8zOPmLCyeXTqWlN5GQ8OFHOrulKZNhuNhX2N1FPT9GfG+vkrejpXcysF3yu8LuOSNWVpPqIp3NHtglTmP/44EHChjo8zxoMazEXKfd5GoxePF9z8vg0CjKnRJhyq+ZcUU50kME4zqlT2GvaCv4dcDGnzmqVLmqr9IXzavCGbYJdClaP/A7Fl/TPHRwClMvFaXR0OIlSIJgJVSgogcuuGM2z7eEQKuz0bpdL+DLzp9UkYFJALKFX/FV/ic1BuaQTT0qL+kn9eMBV4UMSNOlG17vVILHWsDSiZPnRcptQ7DoDTQFytH9B7+vWtinZA+RP3TfrkL68m0c5GlDcYy7fEyzVjpzRugp496Gjs2MDhb1+74ViEz8jMhruUziSRpnc5zXzuQYdaRPgXxUO43waq/gENs5P+z7YD73TWaAYclIsVEALkSBaaRvbgREZVb01JpYCxG0Qz3zx9tBDzDs5tAVmxvqHaDBUqhWBcW6lffQ=', + 'oEIFi1iq1grG793+fh3TQjNxGuTMWpJBOm1yM3mwbppTKuSbf0LTrjVqUBK7DeHQ8gIrWcySkD0zbPFW/kdu1jY7fi1uZPe0Dl7MgGUOOpYG4kkCsIL3C12mJ4FTpmeJHMrAwUHxMHmcU5APk6MVE/GjTe9pP8syI+eZi6AVFlHbEcTKvZgQruTwbBftrJT4CwK/A0d9fi+Wc2RFIpufWBPKo0wP8dIye4NLrJGGmzX6dc3exbOIf8oFLOWAv69E11LOai9aAEDqqo9Wsr9zm0IEnxkXom8E3kOUFZ6MaGfifmIR9xHuBSZkerY6GGdWHHa4vfkRxoJDqTeEQhTQOkYcnVuXcPjDCT/ScVS67MRk1XENyv+WoP24vKelgpd5EFsJ/XfECcxM9BNr3dDoelfaenvbf8NyHENREzak00SO9ANLgMtjhEKzkNWpbiO51Dvhj4OM1TfXljWvh1w68nDTRx3yWo6rLasVBwx2Dn0xDKNwYNMmubmNGvuVF3gWle7Q8kGgYbH2/132j1cTxJjLDE/x1rthj0znsNvfN9tyylDo1iztElfLn1WqQ8VEaPI5kFLgw35o/GBwb9yWHm3gnzbIhfk2m2CoJ7uIsto4Jy0KzhGvWTRB9Q6MqQqL83CQO4Q2dgNQGC1LUqPqlD/YK76H2w0QC5iBpZPqwBxQyjzWFtpjjXXlCbQWyVJH5orJehyYNfHUlKJ7/qaHDta8WQ8eL7oVDZ7/4/5ZFI59XqMjB08tUlQUwq232bmOX/Qc1+oV6epwgNS0M0FYUKyJ/mIenxtsZQ5VXLGP92n00sGrRApjPHPMqRdrJSBfhwsmSKnf' + ], + [ + 'ITUXNcFutzQCBaJkP6Ao1Rd8YOoyKXwoVGdx5ogx12Y=', + 'WtMsBrjBgmea+lpbKN7k3MUVBxyAQ1dK', + 'zbjE1ceDU4SvTCIws685Wr/VsB7g0LcfV2w+Z0UuDRGqnjGhWLsQYNICkJnYjMWiVhIrdydGFyUHQcFIFYwBjouhS2PqiDqS2BG1z7YTKnibHzkzPr3+Mr+wmOuIWJsNqtwGneFuc/cz8jtoCQpNSUKLNKnEz5zvv6P4dgymmZWjHsxj0XIvFaSqCIICHj3gLIq0xE28DLjhsHUyFEu8yGLpObvKQbm5I7HQ5BXPrY6xZxYGj7q/fdnkXsDQfSMUblIaPIBW4GJPULei7JvJnG6/VMkF9mG8m65KXAHJYtJfo+uM6d6HK4enWiXB8GU6sy2PARPamb1gq2fa2uFbRpXKgmBgZc68ozFscfNCV8MP0Ui1oDW+j4mrX7wgoyCSXvO+CHRK7/Bp3KWePsm7QFmA4w1LF7ouH5HoKwud6hB6KvGB/EXjSyVkUapFe56sViJwkFPTLyT3h/Zml4fo9DztE+KGonA4iwQIr7jIl3PNF1SQg6s99sv7HK9DxoHZk2a4SVzYbnbdCfz5uP8U1AVj9w2DTHTlvalznOL2YhBETCFWeEN3MhK4anbrS+g0SfGlPOaBye3n8ZAhdrrFNV4wuQgqZSQKHBunvcnIOEeFizmcqcOYN9s8Y/2dx3vBqDUxbCtUAYjI8TbepcJwY7dSE4w6M7vNiEVYvmu37KTF/mBBqisfzg2kZLifGwlDrsWQ/hOFOrS+wkvyz/SR1HOJAvWE2cXVtlsH+znrgH/6B5KfOiCbNWE1qRFu1KLFjpvYvdYIiv/Vo85SOaToUzjN/A4smkwdgnrCWduB452lXd5rU0EN', + 'UJij+BgaG2RXJg6reX0VMDszUO+N5O3lwc1NlzJXXnBNBZ36IoVlRdf91LS4uJxog0rD/hrC4rri6iCuLnrfSzMD2oYp/jSMlhVNOmHQMqD+urKH3suZWLgOX2fcEG1R0R2YGx7oFTIxeLgUb6PhbeLd/cJCsY4dynoCW8kbj6ulOpwJyyZ1+X6AyjGULH9YAZTVbaAPxlHLexNkE5aLOiFJWkJ8+aKaTGrNnJar01SPiKJXlCx5QT3VPdIBkPMNlF/aaruWPfk9mXdjun+iDUF4dEFdr25ZAXTI7eqDsdgDTManvJXzN70eMtvoG5ZLo4nitqv0ou7qNsF1KpJ+GoyG+j95utGuAiUX73oPEq4SB598pTJzQ2kxvHi3GfYP3BDlRdxxTyVPU73v7gvlb4DRwzzHVTrIiWEcZ/ZfwPNvjRBGaURpzj69sFEcSktI3mMQjX8xuPpkppelMIf35qnY0Oj4JdCu+BWL+Pe95OlGen7A0vvyABfqLb/HYUs0ZuJ6xHpyF85UwGZmgZMHcGO4jPx/AXl3hBGrXBqZEtP8NE1HRdv5dRhYWBoVralrpJ7ARvfXivhPmYLIxhiWyFHuCWbr/uVFia2KCAPbclGIeL/X+JZMah81GBfdtAVhljLsh4DUA28CRYDHZqxkBcJldlveaKz5S/AQ19VqGfeF+jlPpAmsPqCWyGEEX7ATzctswfsAXWR0y43OPCMxteOnuqSwqlaNqIkosL5nWqIpX53faYQ7Irh5FXZxLnPzWBlLDZXTAlzO/zpY3rbsECruki7ADIwtyOZNcRoP4cD/NycFPMfK4DUPPPQcQBW+ksaV0rcECA==' + ], + [ + 'FmHVha62Vu+S2wsMXALYYPAgklqqvC7vor27edCvo1Y=', + '21vf2lXjjr+lMXr17dlnRRRjQex+gUwd', + '2CrvTmL3LMGuzszrI8av89hukdTAB9RQQPySd4FaBbw2S+FTm4eF5YPraYkrDzDfQBMHIZLzye4I9GYtFGTI6/kA3wiSQkb4Ummu5aq8NE8//Ce0DWiTnoEVUEuqa2JgAOrTNHJmXpU686TKuNV1rhAQauKfrdKl/DbSYBlfBSsVhZV1Djzjb7DTCVynrk2mSvl6nLXymm4y6rPsuAcxUJPkW4T7VoNiHUSTCYg/TLyq1HTBM2UEY7osz69+lTbFfaIto+WaSJhwRG/3D7Onjy+2zVoD9x3jYw/PNAY7bF8qlw3diqS6vYKMmMDe8F6y+LuWUb2d569/6a4g0EAO9GdL9gFR2EuBGYvahXf0UL8ZqFVCy/1y7UXLlhRx7i4htZkAqFP5ZRtTQzF0+RQJjiwUnkGu1R7eWSOSpkn/e/KxFHXbypSCSG8yQWq0UwZxrrwvXcLLo1H/XI37ZwGKrjl4fsov7H7FgV82rTlPuOYlYIroJhVD86HssgMA/F0KdcEwOK4dHcXWsjwKFuU9X9F8QF8VziOdHNe8rB3QEtj0BdZjlb64PSvAlUO9b3j5rPofttMXoDKQR+unNNLIgHgmuO5uEQx2YwBlVR4JBcCu56AJGyFLuF406WVWpW9bRqxRuXPhNXF/9v3WlSc1Yqw8RehyAchqT+hfUmw1nYozF/k/UNJrJqZABks+JyE+JVPcOHOCcrawIokjlkM+XffH7oPXPt2EO/dYgGGHQHS2oBP9NjKZmbGxhnkQTUYn+fvfERnnF/SshHOnGMJW3ULS0CxSkdWiNZmITivlaun8WMQhRVJm5Q==', + 'pgv4bOjemjXKrPKT9O1He3JvVm8Qogn8sdYkvN9PfEJNju2o+H8tiqbNUV7fQxb/61avb3we/Zp8TJK65qQOpmSHShEch6+oertZt/GCZbLeGchaF2o5vxUiTQcfjfe+ICpxfgPcaEX3LA3NEvNAm7Y2VUOWnh/SPS88faq/Nn4epAdKlpsxcGUrqAhQmaGL4RNRj4OU95kCEV349Jshq9ljzfd8CvaFH7qyfItpDcUCrY4Ok496Jz4N7bK6J+YC5tYXkhmCyr/JBsmqEzcU6p3vrpUvV94eo/FE38lSIfdZ59gc078KLxST53U7yStldyDv1V05s7qdwXTdHsNZuaWbomLXSolsNlYAexJ/BtMw8McvWjH+9UkXvFBQxN8LQIzvVRIanLe+j71YuQDgwP4wH+LAgPSKZagBfSWW37+ElOiKvjQMIBs9F/RTRRROKWs7rv691vd6vxFsOVoCqoQGj1bwWUAtaY83WCL5+g3rIfbFEhxeiLeZSDyfL2+5iMDJtSAo9z2yB8ERL8gJaLmUFWfkuLAV4nG7Uxs9TlOrlssDlMVxDqs9lkaKzgNiExukOzwBcOaxWDORLf5SZ+RJ64XK/Yh1lbo91mQwHacPfYxvjwghfKukJHdvUJOG3PPfcVx2r24l7mTqSKMl/vhBumLyn1FKQZnV4V23zrpfRWoHYYOcutCC9xRoQ0Wb0SnwV20+FmFxm2z/WzLFEmlKOZM8nQJD4e47LAFAF+MYoLyOQXF095Dsf0TbcqyNk3Tw1gGS+4oqWwo0NnxiK9skuaVY9ot5pHRS4UYqCN6OJDQGLYwZ8ENvXGuYqafsYwWjqtBFJ8s=' + ], + [ + 'pYqYeiVWSBmAwpRKl8rJQyKs5gairw0ID8VLqo8w+PE=', + 'MVKTYDaeg32JCp8ewBteeevMRf2DY9l7', + '+dsgV47p93RKZmvORXRaKcJF85pEaAs5x6XcNNnypjxY3avYWVjEanEYH0vFhStEL2m12+N7BklfyMa5q3fc3kRePvXXFT18y1per/KphDen2lZNqoX+KIHa/hDoqlHQV0QffeZRw3lVyA21NWr6K3gyvLVTAir9BQBo8jA2pHyCx5KZCtXsaRrnFTkYgOGc/P0uOZX9HRyj76W5+7BrDrAqMH3B1GD1E0Czv345yed8p2YXBnEJQ4AuK9tdxyCLSAsWmSMVFXPO6ZxAntXzJf9xCLrnZdY1L1NaYlZTwk7mj1U2gAPgt4kr4sjxhR0YtMrtt7lrkozH8vVDtBEHEXCfFn0/raX4o9sf4oj4W7Xw/4vf8K83rQllxbiV+2mZGEKrGlVk2pXPdcUbN66QfLdzs464pqrbpnlO60fmi5GtB3ZeooBQRnx516Rlp0vG9uADShasBElF1kweX3Ssw6dQBXt0uEwjqaFH8wKnxCPKQvESJJjG4BBRyd79dOPBMLtmr0yO4416M1YlJ3uRKJyTdooeo+dkoHnMhKq8CRKDnbYijxlHfkNNwnsz92hU7MPz+aO0q+Ng3WBRACZpXCcm1xoKQ8l45ss+kPAX0tfsTTxDHV52NpF6OyLbtUPImbtHWxii1pCk0IeQj6ra2bQNnjmSGDDaWQ9MMXZmDJwyXilyMlc7M35A8sFIpNO5CToCOCnMW6IKT8wMhHDos4nPuQmrjaHPltq8lTzrwnfG8KlslxNzX2ofYM7jcxp97Z70t9WLv5QiBpW1J7HvTHBHyzF9FAxxR0gJTuarLClEnQpW/hIvSLc=', + 'zEhoPUNuCl1LkoqWUOcvQZkCOfgq0pi8SPH1HsC0muL7m4kR7qp8+W1GVmKNFJnLLQD4jqRzDyLwJpWaxT53fXhxSHVgzGl9ILrerZ9b3xwSsiZJIYqjPdQoCKuzKhcDJNgjZKOIPtgiTY9qR4xpKXA+bnVFMUvAuHRziH7jMSxc+EWsQ7UOrlRN8UUWReDaTxX4COmQf43SjhQGxk2PVxGRJE8fiqV7j7PKrkHrZv8Rui3Q01AOHVjkqAOwqYaa4Ps4QezeWecfD1T8MPSEabZgGmTfIFMG9HM0Ehe51dHTxMhRPCtYietRLef+FaRVCjPdddcftTwufghZv16wcCo78aQTgVhBo53jZyQLHxLhp1sEB3XO141AJXE5mOBfVycM0Yg89rikWnt0u3a58vuylKArnzwEPXEomYAsE0VIA7jAM2WwWp1DMi7SBuMrEMfXKJMf45QUnceSzLBwgtrXrriYP6Mb63m1mM0AaO8gLALU/le0N+yjjQU/1ovDJGsuPMql1uiAgFvKDvqKrbZCgnWck9B5894T3eceuMLbNEhZ9S4SgGs6SlycgZ/HXL9+VrYTo9rPWNvT1PzPJVKRqgWGzwczg0SBYWxpkJXWnNlNvXpQxJ1uEKmHLpBs+yUye5F+FRVK5d+ylesm8xf3MYxX1GnJbweZdtamS7CmBFuYt6BvG4+ubZ063PMID5xrXJDNkqCwMltEvMXdVgJvMUbEciDAzmxNgifGdTOK3pGPFfUFpDkACbXdjiSS1MbLleABi7MLWkbHJ0CxoDz40QX0QYTL+/z+72a7hQ+GSn08mIRDbP8UXlqvRB9shKx/bOpOTGYw' + ], + [ + 'vLcDWlFE0B+LtVu9mwNK2ptL+Akzrsb9c4S2/2OsBqE=', + 'Tt/w3pr3E5sX6g2dqLuWS+UmaXOlSEx0', + 'EVyiJNByPsfY7BQnRTA27rs5k4EyKoDq9WurAczFGHXtC1oYGiKQ38hKJ0vnJ/uLVHMzN8PtVNAq6qaVUSXNOSwMg0W5dGhApjnpLeCDIxZIIrkMFqCPFmOltqyyugBXVF9VwIe+vr0bjq6nY2tKj4w3d+MsIQRRkgSKDQ2dH6dBw1RYXo9PvKOoSZXC3mlFq0DsuKAQqOLnWD6/2/wvRdNVo1ol7Gj3sqFXu+vy55MA9V046l/A7YXt7fSaANXNurdBW3oh1FpcsxF8eu+U9sCmCcUfPpRzvzYuiQ8TFDnYXA1eodC5LHN+JmMyU8u8xYRYR9FPepTjHhJN1rEP7jsbbX0ouTGxGHrophtweApH6n1wTNdIPZ644Omi1e/1utWDRQNORN7xl16Ny9LGQ6m6ERxuCUo2OiazXJnEI0Ne8DRhiE2cA0UFTtnVgYA0Xfy7X1xdYyn7Y2gN0ph3xizx/uoYkj9vaZszwXK7l2GfkDSkvFJhZ7grsOBDRb2HeiX6jUwm8c0MIxsuipdny4nvmAhhQ+na1VqbXi7ECQoRWF+H2eoQG/m24GN3I3eUXF63H4IogZvoBQ07p05PhjyYmGZY9kLS8GSmtNPoLJfUZhrBw1SSH4mHahhr6GErS0MekstmUk7v09DoFZ5U3TEvxz9Wfp2MUO6+PCzfEDuI9b8OkZkwxo0L7PkOg15ctCXfsslm9D++Y7UFoimWs58fA6ezYQ8GU5PkTac/FYXT7RNSWRJaYFMpUeglJlrxiKY+0nLtIoKCAow901L22sTB8SAIsdSSmW7ofM1N0chxUTCcASRozfLn', + 'DM22yu6tP9Cz36gMZdzpGTJTqf5y+nXsZEs7IU+mTcjc3x4wfCE1oTMqXa3/Zo66PP4J73y/pNdTwaWBAOLiX5X2L4BPUhtGezI0hFYWW1/zRSSCYBlDL/VeUtUNd66FXkUwIGguW49K+NtJnVs0e8rk2roHU3T+Z+R8IjvXphFO3QoO9p7EqTJzo//doZFZAV3+EztCSf/RwIcQ0zmubSJg/jM6SoBbZ+YI1jzDDjAEBvEbzOg6CJaZbtpeVDo069gowENuei2mBC72MpZKn/fzZRPR9QHdNs3DLFm67wU/iZv1XUNMt8UtROG4rznMvzFGxAIP63idcB13QifykLckeUN9MVP72SVNO6qdnffYalS3lCh1WN2pUmDn9Ill7e5EohjEofJbCttxuneOIId70xWicI3aLsgpdacUP83iYDpYNR8PBYlXSVQDIJOdcCM8eIpyFZQxDKk1ghI/fgRpagf3tCUqMoUC5BBd0RjQ+XoaXlNFQ20ICND3eesnfno+/gy9WW5cFWt2Y8D0QfpOUldfaCv74MAYYKe+8tuu8t1nBEAqBnmo4fBIcAzoIO0KHJcfT17FC/DRKqeNYYl6OLVosjKqVribaIw5YAm6Z+3B8gZCE0RAfOTRG2mqEvpz/2AaqfDVJi1nUWPmQgV73H3RntJ7q2PlTMus28hElc5LrdasW4KbC2Pj+n4wJOD0csa2lwZTWLbwp2ndcjxlVRomLHiyImTFLET/XTSSOY9G8LEAMaZrhl8qklIbIIphP1QdSMU0sHHSrCX2THKpTiO1uCJETJoGbsn10ZclDGRaZ2BMO8YMbnPzoEP9DtKus9Ew15aj/Q==' + ], + [ + '3ByCk+fPBAJX4i2Wlitrs+Mb8vddurBNz6lN6ayEiAI=', + 'i2aMWzXQIcR+5mkplbcW265oe9D0fZxL', + '6AXw0MxywfuMWzaCn5+9atzOP/MOjpTBuFeMiZAGPwCL4uwhVT9oGxxDDTYVMLzjQYUQB2zJX7x0eLqk60MP2Vuo4fkdRjYtsfoieyJLqrVuYkId232NsmDbbg1DB3Xg+Zk/ifMCIUYflmLOqtMz59pLnEdHabnMMCtuPugCMeM/sGYZ2C91EagArXVgjBEFxvyJsJqz5QGUNFNw/1z8v1gcVKtCRwEyrmJDhQ8elEBcY/hjMz/uZkZAFxeb0up+J/QRsyjOnvjldYOHxOGVqdoxMhCa+bUBVtrwwuTi1MM5zpYRP6hlhfAMAmWkTGifMg0OYHLecOlFvzvVWAQF7xwLoNTMmcLTG05UGJH9Hvki1vgRIYnUJntT1v/8bmYJ/He+KnNmjSsr9JTG7y642THdAbIZZ4SFFLH1MbfSAYTnD3FIvCZkY0Tl0+vd4Qa09CFVBDQ1amP0ZhRVqdeVSrQr0d7aI3FITTWp/NDtmqNvJu65sFhxkSgPKLoOXGIkl5svOkzwXISSQ/mtdeAZJDSWbIXkfqBLf9XkayjtsbhcshnMbSoxEP725SldCOPymq9Wh5e4TVzn8dBzUHgJiv7mpMzsbQmZdyV+x6ovzw8nLC0mgaKBKIByeXgl6IRfBUCl++szej1/G5E8iVWOJrx1i5dVapKcyRiYwVEZt5Vt1CuAQqQVpFIrdtd0lion96xHI+9EVf1UiuabHzFjIiDTqeP6xOjOHkGkthLctpwpbqALC2SVZcofFFozrV7Sef9l87PZzLgO+8Es7uONu6wrgXDrfty9eebxT74RJi/MQ5tlcEYIGL30nw==', + 'ouqG9Ao1wevL3bSIJD2LJ2UFUXDseDIvV9zyW0QSxal9GX4ZW/0BfzwJ5eZZWlhNb5LK/QCc3PyoRygBAiTqPBWh8wW/8ebnBOQUI45Bmzsd58CLyAlTC5ocpU39yfXxXxRtdClOfPf3wOs1HvIM1MIX/IAv+kFfe8Qv+cMp5gXI1so5ZVoTMJ5l/ndXnoM6YGiNATlGKaq3cgyHPm8f2Ggh6af4yPZrZxfBl6pL1Zy4KRN2H9OxmjXxpj5O3CrUsJO5u+w5auv/YBU9rzdLe8je8edXm0VTwppCULPxc8DalXiXSNkmh+PbdZ8I+eIEnI/kc6SSyRzshoRBXur2xlan5oQqBD009swvnMh6jY0ZKDnUKCOxF4OVNbSieBW4YOsJxQCGdmSxwGE6XjZpfo3OGWBGnzVr/DRsY4dH4UVgKEvLElIvb3A1Fu+CEsQOeRqyf0AuvKf4jZYZkCZEMAnPo33dW1BaDq/p9G2tcA0ueN+yQ/GHGqTtOQEhg3cKXTVd1qmqZMUWQYtZAKp22L9Q815EKL69wcVSdhJwoXMAnNWaYNppEBCa01ar50CpxpNg2U75jGIoGXc0SRa8xcvo6cc91CEKAnhAE2ywVzto036vWIuU3Rf22UU5iX8LX73EJ579G3+ohcIqbNrDjdrYxJ6Az+zcrjWicq9rrsY46CWrpzIBvnCjEdOaWIijAt+iFfwa1VolXSiUlJHRV0Oof51CES2CmkG4jGtx012ieabRh7knejZdpMOrxI65esBhJBnYShGIhxUL3/EJPl4P0UkFDasYE8m1GCrqo40pxcCtZzxBhDOMSeEcQJYtUQExm8PZERxRXLc=' + ], + [ + '3dhNCwek5YDyVRTOi/HiFUHLARPpeDreSMbGEXB4BhA=', + 'Ser5W67j1Itmct5v2sGQ0cDFDBP93F3A', + '3oBSfp3b1r/oJszn9Gx6lfKGy23LdD34Wzbq+Hl+F3lgxJCRlEEcYANZqI+AbCWSJgKrOjoZu2LtZ+9Nday1WvgL1c29WoyKhPXdlJzmKgyv5+tcOz2JzSRQ6AOxkTeV5tTvyss0V1Fb6LijuVw86Z8W8djF+CKBhMhWn9RQetNwq7eUIgtKjcixhWcEuQHfgPKqX4877yeKgDEMFWjXd7nh44GwurSdSjiZfY7kRssFPYCBFY/vSgJlG/uFco/F+ZCIAEE8Pc+HMSxXXCi5N/iQGtxSj67jAFV1AqwMozHCUlEEyCl6Uej4k44Y872AGi9yodyW4IXVpHqSCZQsBx+H8iTMVeq62Hk1LNLLOPD1CY9mP/PsFvEY8Eoszc8yBjVSs1MJPzQKKGgy3ZMSPUUqd+NHaiJqWvhYZCmFEPd50n6HZtPmXTIqrYO75KYha2AdNciADbfQzKt9oYSC4xBrYjx5CkWEuK9+9AVZTeZQrXDZAMvgeNAIe1gfrfCDCa2RAFvTat3ZxdqPlELK0qqCARWZJIp4m7bM/i94jpuw7P8h4gt5UGTmLwY3gPyC93hvQNTlxfeShbzR8utyf8oQRHVmVTkpD2/RWWYh5KhMOoCMWVv5cNVs1xePF99RvtJ9yxU0WD+pe83PYLfN/9DMfLeSSlygEal9M+ecteNr6AV9L94Zrpm+uIeQlr42nTKzHwgFLd/EVdCuAGawtogzkOHY51d3XLOr4ML7FD0sIOjeVfxBO7/8jYXd8VjHy/N559PaoHrBs2lFyuQYoBqfhTfHpfyFjlH8C5XNwllMu3mzNV0a2G20zxA=', + 'VlDyi9+B6bY7/ujE1fDHBSHUKQBjXdFqPqrH6q6nR1xbcIYljayKrbRFYLmims7myzke6GUyqHpJNP7zoEb3lOfWEnM/8otYKJLGczBOfNAkM9MX/cHBTyRz3v8PPRTRSBc3iTVbMrKE/k8LY98YQNvMlErh1QWtegkHGQtCzgWy/MTdQ4sUxqt/c3zba/UqTJEGgafInybioaMJ7NlmtQaIxc0KXQ6c+Nz4Z65iKSrk6GE999cBJ4bNjsl+LVjtcY3LTDXXOzgbju1G5OtfDQZgq7RtTlGmkSRFM010MSdwTc3Bkn5tBNHjyI63ncZ9W+zpXL2p5cNvi73aEtEHUHRXkCLAUYNZoD7VpxYqJ0DO6bJ04es1pl6QsIxqcuXS+sMfaRRI25d8KqXZ3121TqDhYLwKzz6m6TYH2COuBRsgP3Fx0PLrSKG7SOe5N7q+uK0ISnsaEeLpjIIK0KyIneuGhokDy+E+B7+YFqlIVTfo3NrrqBZc0KLEgFT3lSFWbRH30NuAq092s8kyvGDGyhB9KpUmJnMSKorKha9TG60iO5GupIBlnvKA7qFSBOA8Nz3x15FmEQoXleyazlrmrwDGmdIAEBn/FhfIHc0GSZcQcVXzU8Fkm8Qqo9VwDpbw8ZR/JDa8ARW1lbbAncwJ6Y3bZrpw6vhp38Bl4AhMN7QcicRq4jx6ctdikt6l9jzyEK1zu4wJQyD7MsQYlFiN0ongYi8io297pF738vWs11fibW9FXN5KIjAtUrGwAF20FCinmpPMnZ1DAgGWpSHa+Cs8i/oofFsKCrzkQE+EQ1nKZfPuiQYfVAmL4ZL+AGTw1VTgFqGJ67cVF4Lu' + ], + [ + 'c65+LZoN9VLKw3IqhxwiebiUG9jdzy4Zlf70b5sPKrU=', + 'hdyaxk4Omh5oDbhtFVpeRgqFJZ7piebP', + 'D/Lbx9yRMuVNfldpQGnjachkyBOc4sbWCaEPy1kzk+lVfbHfE/3k1AUhlP+ThGCFIWuuEQWI1I7Boe2US/WPojDJ1MR8cr6ElmCE865MEudSyzHYaUNbUKq2p5p81kSwdytx4vbfdVVQrJGjKaehT+VV/6opxvGinQyqy5se6pWyVTJuAPo7tEHxXuXqbHZRCjX+AEpwGr8FYSqie8ExdiwSl5jxygSkNPxckSIgPn0YLxuhYiY+9dPwvo3L5ATV8m9NYAWzjMddbAi2uausWMgEtHFtPpReMgBTH6p9MOoLZCo8ayyQXjY63y5LxvyEdagW9dmw70PoiGYRkriVMYTg0jTVF0/lZpgpgxmCuiaJBtUZnWaY4RT6aJdBXq3fvlwCQPjptBVsLUcsvLvtxdwi0nWr7lWiBPQfzLdvaUquX9IYEGNRVYaAmRQqycCMeoUvaywFsxA/XSqYtxHwC9ShKKX3MYUgX+vz5EeWNXqPF4YkvSIO/MivVewScIkmRjpDN3r9g01l6hJI9i3QbvBQysbbJehrFs1z0ooRqET0pN4Y5QAVDNAt2gpfZfwPAIkkzHC/PeCHHHcg7AJXv8P0cxWG29Fu3Jz0tGNIo24hgz8R6mIO232ftG2ijzvWg9Vi7CF1EDM1JDya+xqeBeUgMocTZ+HfZrR8NHURQR6bm/ZwV6ubV/Jdmzzrtk++LJlOyIs97WFXOUFA4xS6E9lCKuhIbuN6gykT6FxKfHWE42Czcwyp+mao9rz4PvFBfXBPnCA9YqBJHUE3PfCsjqOTFdTiTAtIKmbi3l7y746Uk5sUqFa15w0+kl+X', + 'YWYE2q5NfxsNcbTqDfZe4rLzNMHUgVuGStDFykG/9iiDSchFdpCLuiVsDxDNfWatvGI8PytlQ0mN70Mwxjt64ISnOp/W+4agQkgFolSc9zqmdfN5ZCQiAUnbXtJxB36iG+uCONr3ZcG5zqxsbXYNCfI3T8q3xmUT8RSxgDj0Xi/qljR+TlcKiZpLI5quQHyN54wVYuIiZ9CHvPk4Y6pqWmtMe/OPP2h5oYciq0zmzFCPplUqGvg2mONc74BeVIeHiX9cfIXsemTC1dt1I26VBRx7HLAlg2e7be26ROSXwggMmlEDaaGBrGcvihoEhtEjRW5Bi8Yj8RBhEgJJMHsYnRBrHqmJhnCizj61Hw6Z4lVTWmmpLaUBgwM5InccvvEqtuXH2d8u6jCsVqRIuldqjmEaE1qJ0SK8D8d6Irxx1msJNZRIYqJkpursHPlV3J0vTqDy0R0L7OBvScefIYh/4liO19yntxp+OHPHjVP1jdLzlEyYJFQjkimMNBlTNQhWbo0sFoVLnU+OEG2ughN1k5egadkDC76kq/SXG2Ohmvd+/o/DLWWXCeIkOivoQGmvWxk2nOaoqyQvlmN9KvIpz9NMe3Pj7X2EP07rIjBqueSD3kO81p1buSKeBn4UiQkA/DlkbwjmcUeJQs87qTsr8n34Wh5T11gT+dhAy1e5ry8HAEIQfvd2dqhaK3qU6mcDnRcsCeyflqpVKNFr7u5S5jbdSdwf8tJyoFkkAjY+BVS/2AbXmeqCt4wHX5+qScNq7Jtk96tTNBRCefT5+LAM5ErGmnfGODjzBX6UKm9DPjaE9MgPXFnpSd2Q2AED9OJaBdGiLzMClFttrldWNg==' + ], + [ + 'BirurwkYAnnataciz0JDPeFgLnId/4RwcVzfPJ/1t3g=', + 'L9VE63zb5ICTwXZdI0kmLbJ5cAMWuurp', + '6HPA2DvlLKP/2Vah2LqPZ/4+YkVpgxoAirFXLUTy8MaSiaG7zXhUXA+9LDPEawe7xhe5jsxACP3JYP7ReAfJxHwYSGDKH2DVIQQp7MTYEojFDDd5iLMm9VC/3uqIFHkme4AwHK2/jsbk8XLl21xXCOgZPLtmAxfM1dZOaZ+SloyhD3JrRmkDFnHLPt26oFJgPvW+S8ydLYOX8hFzrvE8x3RvAPGRNUVP/PC3VysPZ1LLX/eFjIeckwKtDDHwzlR/wptRcgQwzVtE6UzBprppcYuT5+LbgSZki8SwXnH4SvalopvasA/T8yxrVPAgoBjchPjm1ma/fDutISlQ+81PtqcALpz3HRo8AKLkHc7XM/Qib1qja9B6gLU4upMeN4QHvv6rYfiZb0ltvxyVYx7FiRe/1Aq7Wd+unkv6iv22XxUyV8jP4v9xnhLTKTRSNTq3zdY9WC6jSdh5C7mQ5ncy8lk83lQWYkJ/kfg6T7jodI13Kg2Rtql6aYCy4ux76sZ3nHkTQuCbQaXqYPcy8WP1w0TugXml1uKalJqYK2M6LR+9T3qXA2EeuhR+KMiPLmHKKs5sQvV5TKnVH/GXR8DM7azzFj8F+PIIZJcITCz5qxC/pAhO8CBcnpPSB2egDQm/MrHbALrKsy1gEB6Uame3id0MVtGPVRkcRnWxhgNmn2fnCwW6Fr8ojCbiGKBQSgsnsQIEkMv+2aZPhJ6CSMPc8ZJD0b7fH43VA2hhZdlz8TFgltx5Ju6sKMb3rpiZHYqACJPfWGfsy3jpb4jdcwTbn26l4gx/j4/4LTOlZcawJ8QQv0q384rEFV8cm7QN9Q==', + 'tiOAid13MQpS7kW9PbNlbXmT9bT25okbg/8BGZ4c9U4pZMeiFetNiZadCXl/PgvhSMEdewBscjCNU8aZ/MClUCYrKwuox9HDf4mjc8/as77DTTFYuGWEWbnCZHrQGYBYr+9+25gqzxwaDin0SW56ukXeBRYJ+vfQpGz3XuY8LaMcVdiF97cHRA+V1VcfvLbsShCTZ+qz2QCcP/U3e3axPEf27yoPzpxEmuNvC1enTRHBjx72tK/asQMeuEN+XrBHwPzDmmOcBUs03lVdZVrOpQagocjmbtW71yIZY3b/dIoO+ZhTT7rkUCwo20LUcZV3QIDdXO3GZrdoaXS6V2SUmIdgk7E23/sZdRC0SUuYiX+/eD+JeHSkgBHcXiyqzNuwDF+ZW2ugpRRcwvjQjg/dw9IfzlPuEU+Dc84gB1RYWcWFSxNGjlthoQ8y+0DFzhJ4vdta3Zi6xappt/iHVU1Px/tAIAkdXwPI5LNSm7JkIdgE8zkuO0VLUZQvc90JSthta7Ef+x/i0AG2EN7j0lpkw7yfitJQhJ0tys1Ivb0CZVl04DASwLo5T2TuAN3dPcwaSnbBmlsslaUYTDCGI5yXjgMfreUBzRvopl3FHdWrH8MmrtBX7p1TfYwIyp2isahs8gR9cWKg3V/tCTZ2OlrOVQkBpEZTSKD53jGTzPBW6cGaF6sU1QSC0HLe+Wsn8z1xCNWgMxckWEN0pzv82YtZst/J2vTkwI+SktuEGf6+41eAkCJcl52jXUN+GwSsHqtdTfH8Q3glevnShv7tafRye5o2XjGj73RDWV02KaA9DOiikgJ73XVpoX8oGk0B1HU3lkF2VpwQar+4pcSZZaA=' + ], + [ + 'esfL7mRe+p6uINnjlJR+htujVVRNawtnVfckl7zBC9E=', + 'cJM8W0pvbLUR35mqoYAt5Woalao24H7V', + 'tkDcpKJ5S9T8DZIxNFMpAvrkrIQpHhEXuM/1/PxTAV9cMWDWQijzlEDa/KNS8fdEsmdP4mmlx/cYpmnopAjsiLeg4A9URLjpCvvFuGxuTGFoSWf6YXNu4szflBgHsDBhpZziO5a7yJH1HbTOcDlVwTq2ReC49ssvWUD0eSs86WDWbvo1SwZZmOSNJqzpklRU2uztfa6OHtwVYctowwV5PSJk7KMj/9Jepe8smv7imeaJKeNsdlMiHO6rGg/HXLOmaS4JgMt+Ceea6e0dleFrByQetF/gP5P4JdjdQrqi5LSof3XER9D+bTSUlZCGD59uYbD401zNGr+KAc4w/laQNAChlZ1vlgBLzUNNZSu07Z7hFkcG9/jV0ojiSLk04+evl90RbbdZRtf3CEL4xTkJaOeOuQhNt9uFrBfaaUdKCjjes8ONGLLw0xAtUJ0zfR3eFaczYJFK0E1ZYM7ZLyGfdnJXTiLZ2yk+Oqi6+XU9hdCQc4e1q390GuwPw525FlyQsVrGdHkCo1zXQhNN9/go47UqYGwLNx4j9sx10YA3sgLMYif9Fg9CG4LXJ/d6wNuvC3djdQIyVU8j1fUV9KgiCM5my4jZZ+ZNbKGEsddejs+U6suKQsuN0G/PMcubFgR8dPhs4FwFi0UwaxGf9U8QTjP0dCwfyzZjZzaJ0YWVyp9dhEA/V7pDms9Jj4+6rckd4bXXSNPS+OWkqSVl2WFNLAu2WAHOGGl1gO/6ANyBe8GDY4bh599Jh8l0zndvz9Z0CvSnN/9jsf8Hs/fm0TCc/IetHd494eZJdz11ndba1yxRqcUgXggT3G1DgHcBVj4=', + 'QcAEPVpHpngpFZ8s/Hb585yo18SVTqrI1xUx+ArWY/THXN5UoxNKUqhn31kqzh6TiNB9P37v/OKFQbPw1gCPReRLNm0TmMdyb3Hslp/w7W4GoqSX1kCCPn8zCOU41IkauaLJy335IeMwxZJ8ngclivuLY1LlsckkXg23gOKU4xwcw87I1gpdLqCOGGjSDy2oqj+Pto2+a5uznn9qCzYzv4c9xnsX7MKJRupOh2a4dqLiIYNFYfbBkdge3dzmGTVSElBXnf1L5F0ffSBhQhVLkXa1qNz7qDraD4iCeUnNHBeaBItzr7yVkoyV54PPMwWNlPPs/OsiMsam+lGlf1okLmXQN7myENKGrp7K6bYg7btXPZDmYOXDhubwsw1IM3UUICXc/ZqVV+Nmsq+Yb9FoxsITQ7l/nhTF4Od/pFyg6HXyzbtsWIKPTxkVa3JCP63E+ClQZIWCtGa7T/Yzw7aCVp58p8bQTgDeR/4TLwUyFaA+HBCFJN0MQpYdMFkYrl6FAXOaNAVNMVmRJfk9ps2zfxHFRRS/mjczp3GtWxGr0b37pfB56+hjOXfEm4I/y9J11oxIffVf1CY/2CYeSfzI6cQ1TV1IMg8fFDplxShH6cGL63Rc7ljKm1gcrEx3CpYrfk6dtLuaujae34Dt+sbjiNy7yubqSL5agkIOzuUE18VX6tut+ctW/97JBFkKTM0n1I7HCGYZo2ak3cXfJD0UxvQDbMLPgOkdS78Dl29GIcCKybLm4W2WP7nXnkRNqfrlJvZkP9Ag3KwiB2Z6AIW9hgi6oKPW0RW/XhIhV8iCrJSW5wTvQtmk4WenSE8pU7oakBjPLlZRPF1EY/Evgs7L' + ], + [ + '7i7ZdZxt4P9IqExeuXWE4PvX/SPIC+qSA2HcWB283is=', + 'gtHqRcR4k+Ny9QiDjmaeGZwsHvjnGlZV', + 'sBAW/UH55nOOigG9VPjlonlYnfym7PSVdCyOEv5Iibf6LOUepdweP4yuh5Y0mOM/oRWVtNqI0b4QaIiZ5m+qapj8+EJBMhctU9nj6u1UMm1eud6nvpHAqTUqu41BQnUm7Z0Qo3h/hJwFMZZ4MPrBVvYm9PMaN0A5KYkVg7xO4t8a7rpKiKaRO+hem0h2HJV7gmcejkilq5ZfSMKbiLvSfIEzp1HJ09DlYd2PS8HstubxisYi0QS3lUAi/raSgAa2kWNYLZyI9FAh4zh1HOje7xPbZNHig3OrHdATwsbsAkWlgI8X29DFLKciqEF9z9j/nOQ3kKwDxi9Q4N8hcuqcV+gxqB1SG7ng5jphjoH2dWszcesof7YWD1jqLppI7xAhy7XPFCq7RL4B57v2NysjPlvC0O8bWYyRgnovbhxzixRZmf/c3Ee83A2w4pcp3hfg+2Ui/G0fx9bMInV/Vb5C2nxuv4gDDXTcMezCasIkWvb/Q9TuEI1BlTTwmWmbKl978g17PcszAnEKr3xr6vjmTZtCSderPOg9CKnGV3St7dW2+0yNBPkcdSHzIVHapQnbFrVZ2QcIQNr6lH6JbjaUNbniMfSJrFeUmQNNC8jGFtwPjyxWZFu1FSHej5oeuoXoPXcrDpsSLzpFaAf0ooE3IbStJwQDaIyXTekXMVVuqFIgU9lm24h4KfXpYk0e5Dtz9Ejuo2xD9viW8CS2qX5//ZiiWByGi4al186vhNpJK1DR+fajWXV74tDNUygjbSXKftvCUs7towJWDmaKZ7cYinO9Tc3VCMbwDsMPKBFd/X+yrSU00n97MkWID6ufYxaA', + 'UMc888UAAxCj781fx252VsCZUEZLnPsreeAzg2r3NiqXQS/RB0epQkbmKF1mOlhNDYhNd5Qqa0kj1egwSsNsrmxj2+O2NeadDeWGiDbY8QPaEAdv5EdIfHsda5CjDfVIOLtYyVNDx+3jBIfzNxAfrFCQXu6M9S/jMngdTGqX6/AE3O3ZR+lNsjgLZvv7jIG04s69BrsqlqTwsjoO9r9Yna9hmlkHiepMYi7Lf3A5/g967TLyLLK8ZtBa63aYOtK27PYodvBwNZ4WcgQLo4AmhX7iq7ciaMcmoWVVnwxcBd9RyLxstnbwVbp98aPnY2ti1UorNhhRjkOAq16X1M8aF2iICz77I4tW/NWGFscMPoclZ0fQwZ2Pg6uavebUHUQWxc13Qje4PS6QIxRuXOxaZbtE5mBAn3sxv0+sU7ll5KVLmozhsEq61wBc6L5f5EQiOUbAdmgXB83Y5khmh29Di9QEtHAVxVR3GYEcybtP+Gw2HXIWuRFZCAnqHnGVCLImXyDvah6xiisHgqxj/Y6SeG5BqYtcPQqodzb2syRKk/HePemxaJVDiaPN4yQqT2HHWXStbHDbHSzP5PAd5YEOT++i9x7cq6xsakG8MT+CGEE95gzeKAcA8Ggm7g0esfDrjNsql88QNLIGNDQ+WNbrp3/t3SitM5b0T8iilzbWDQN2mQbQfIUGGGBfxX/iYcVP9vqXdMSdZbar1vUqPBXmYRYJAtiuwgWUqdac9TT1vTuBx0HUzdCJ4V5/0dt1PQuAgYlx3bq03v02+qhsVDiKi6bQkzuBG7Uu1UkvUcrFNsodTssGTltuSE20B5bBjdJwU92AHtV83hosM5V06NUvDA==' + ], + [ + 'IBcdBBtRQSotV7lpHb/7xKlFwfuw23Y2aROd8ieryrg=', + 'NewbmJ4VfhjpjUv5PBEuzXTLV/ShDT61', + 'jIG6li+A4AvXUMrb5lxpCpwEqKKYZ9WdunkY09CdOhdVJ48snDUOyCSW14BCOaSwML3wAhb3O1zYEDgrC62x3+iJO6ul4e3tAV2n5aZHLu7cTOf0jsgVZrBwFHv70V441oaYav4G+JTCA7/h31SlejzhoO/RnDtLcB8Tz59L6bbMJahoeMfIttD/AsZ3jVXQB/BkbBr2ht23J2HDFdi+wNH6Gs8D4FP2LwT1k5gH3tz/6g5HGXPYe7443IbqNl2CpNaJHElKhoHx/8Cy/IeHj3FmMZQ2UEbR08wIarMl/t+92i42OXYLt8NzWmKHxTLAHI8t7kAtLTmke9Fw6SXo3zofOP17Sq06T8B+UOCq+68X1hRYD3uP5bMkIgtgqFhxkfRseElgzMuhQULpxDLT+Pf4b10dS1ElPptHIzjKTQZQuwStk8QdWynCIdsXIWUu+xE0BDIico925mHfI7mj5pmX4oJle6PXXICq24iMjHmlXfC/0naJFBp1HfoVjDCEGfG1czairpTyugwJSUc6M5YZsQabobAG+gIaPD2KeWE/LAQsM9HjJt4Ti8GMnBGWPE+XfJGxaDIAqIXw1b924NmyEi5poXhIHGoWGmQoHFLgOTxvEEA9tzkLvIAquHoaxofwp5PHu99YY7LIyPswxssY7mtJUYz1RseABU+N/8ZHLwtF80ZdF0lXsZQP9CrG9VqsE574J5ZEelGe6lS2ZO+t3Cmbg34BCrXZggUhPjDonIIwv/p6G7a5dIUXf8FWREaHME2d2ByY5sU1uPLt+IANzVNlgyDtjsH54qksWmLpXd+zDLQpFUbtbZEgGBPgJw==', + 'EfVIPF2oYf6fi2IHtNQ+1hS0qRymsklboLjrrfs3Q1E8TUUwz+q0rmAlIalrsXU55V6E0wFQptfUBDnrDPRNQZJhBO32jcgObT4zeySIn/IGvaPoOsdll8BQDuQXroF/XVP9DRQYAOnRUucQlysUMS2xi/jBguoTLm7lC/Bamp+Fardd77JT6OnPkuy2yGOT8peLpMDO7VCmjMdmebOy95UQBRAzeH3k491GKRmhWf3NseqyW7X75eyBCsF9tckhGonsjNacO18GDz+tU291PSilHZ6hLuF/Fd8v0sVtHj1OCRoLqifrCco5MNm51jOKyE4vNF/QP2Ro9hdOA9mrHurUwJtj6MKbrf0Tj1CZOIDEoMvy8PkFCRDZSa4EbdOog0P2qGBbe9qEvizVSMxzCvhH2A9YtlSeMsl3+RAml+7e5ujhk8ZZAsEg7BPckOw5RZbqAX6JZoKnLkJMsmpsrba0Y4MEifhTewNuA+lQzUdSrgGIUJ7rVOaz5Z9OuxjMz1V4b4J7VL3kxfc/1garHdxUhHmEGv20qzzWf4S7yMuPou6uy7K3FvwZh3dKrO12ZxbNF2ofvE120gLjWiZc9lCl7UZN2VNd/Ju3ot+x6MloY1Qn+lx33YVcGUddDhKmWB27gLcCFpk8JzTM5NCvVLXneYFYSrCWi1TtI8T6nOUaqbm2lLOuDRChAZa++xP4wsg3h0qCd0pWteDqoP/5/me9+cx2+yCzxIfRibjQyRJ36PnTk/Cpke8CyvUvRJl/PHi7Vlqu+x1rw2Dr4dS6lr5dL/A7GYUAE7nMuSvYAV4x2H+bCq3vttlGSuItZdN7MCqOrFzjqzKfTB9LQi5Vmhs=' + ], + [ + '7JQoc3FEMa1QTGOxCUvhG195VmvpwTd9yMm3lHXu/3g=', + 'N0VepeOrraoMgbLThQ9qmAW2ibfJE20U', + 'pNG2gAZMg5Qr6k6LNtlZRSfSZjkoLpgBUfFft9KR9ZjKLMtbHlpTQ/zC6HUc+AuKBHfHAeR+KvZc5Q09UMfiiMD9k0j+huHVZ2hJh5jjZlGP+b0XBOzs/hAPFQNVUVNicjIQhXVq2Y012lF7aXWBcg4QUSbPaAKTxnr9pGvffiL4QvfcGs//g0S80VDj8xW6rdaS52waRxob66ZT8dj6115sAXZBMz9hIKBbfdmodcAT1ZNlAR1ophOK76wO5yj1/uGbXzINzwFkBkkKs10GQJXK3XvPv2Iz/Qt9oL0v+N/EI1RXKy22eyAFs+IZsOM5oB/4+3wekGfQY6TLQ2y+g0s4sx4X47J78cXy8vBCvALl7e5+Vg4xgxy5u4q2x6FjYHgq8BwF2+YHPVHKWjx4YQu/4PzerAn9iHY2l7xg0vktZsO8eUhspROdrorl2KI+iK1j31Vvxljo4sYGR89VT0geA1/cAnLBp1Q6gjU7VYHIlbb0zlYfY7s3KW3ft3HSHn2P0xpjSDc6O4wvvfkTJQZBjcs2uH5AsyAAn6Y5IXV4clLmfCcy8Gx/5OQ5S3DvIYAmObKkXGpHEloh3GloTlSslq8hIv/ZNk6yWcjE//OciwnlFNvAhNI29r+3ewOrsMuHBMJpc38dibQU9BYBLRaxsxNEDPqVK/VoM+6r4IQbd/IM9G21PiJKpS64KS7po/U21p3JU0vbeYIB6i0UtWiKgMdql1tesNHh/QVK+BFS5Kj+znVnRoMKYKlyRXtVoGDbB34dqnEJyrXnY5FtbN2S9+4p9gY+CsFFgVAWEtTnabJuXkgbUCGYSe8MQPM8efc=', + '5RYZ5KjEdbhZBS7tAT3OzlYPvM7UEfLhrMwmNJ0sIlM71icgGCo/jceKaZzhW0LUv2dNVH9/0X3RC4cBGlLBR3eq/M0i2FNAp3ORujbe+Q5GdEs12tMCjoUNQIdD+v2LQTbO4VzRE9Y86sFw7gL0HeCUJWy4y+zJmhc/NR8FMBnaASUwXYMGNdaDwKnKsmMAKyZbdeQHd9w+Klo5mZ8XXukYK9PyuXdFuldGyqBhgnH+MmbqrZXiUamWcR7iSCqiYypkI/LFLiNx7N7lPzXtkAoYTXO2xvh+eu551kJvq4xE8jipg0hmp4JqxpbNZoCC0tyn7BZbPZviJ7f+QkUMbrTANojm4cT3USR3gX7OAuS+Oea/66iBU+YeBtHsnHUoDDV79l15vENtxFhFlIs+3UnUa29OCw1OD5lDqeIALEMhWbQldKXTWefDDCsjwZET/RzYCWgEF9hUyYw5MSMWu2/RaNIy9wxX2HPlF/iNcApCS3tEvI4xjDttKW3UExD9SMnGJFyMf231h8EEOc6D3ec6BH1WsU+jmNAnjiWV/2lrhsfesxc+IL2+SzfAlr9tyPvj0EzsBabJEQaPDpdDiF33e7ikUR9rdB++CTe0rAg4VbLlVOJLu3c5OmnPLEEKUw2WpIWm1mwuDh1snf3yd9MkbELuoxKDumd+avXW7zSvWF9WL5dUz+1kmGacdZnyxNz+ZZpeQ7eHRApPHDHeoDSpefmfZHgtba5xDz66XAmvtxXN9lIYvgAlV68KR+UyGsZwRsPhIcsNoHKRJBQdbtlJjlf87BONI6UUuat+rFmcaZpmn9gV7hju/NwhPfCqu6K7AS7ucbM3gNHywIx6rhc9' + ], + [ + 'GD0TyUgpPhj4z7ml0kb6n0ZbUNapxeQcfEc60YOd9ZM=', + 'XWBdUpNVmioKsIp6wgnzDx+dl+IVjqKi', + 'K+/G0+ATlQ9QzsoewaC9F0ZPzGhJORFrIIaMaZiuLBCTlTsDKueFRkmygpwk5+hAp4rHI2CyZrliis8JbqA8dPs6yYsNu2yFMRW+2JK/mf1/PAAoyV6d99tRxAvUM2hr88d05OK/2rQQy3/wZzfbba3c3px2eqNaccXQw1qiN0ihrbk1goOiRXZzkpiX1rOWUmAwUvIRqByAOvG3AnTkdVT1q428sUEjFK2pj4j2kC/dyeH7zBsuvLP7fpUgEpYHUFJEBIa6BxIzfB0ZEhtvafmXYcTJ5GELxbG4FAaC7h37HqoBl2vZ4pxtspeDtdxlgr69FPpXowo194zeH1Hb5ySWW/kqsbY7y7JXjruBL8cmG7sGosqg9/cao3s9VEvO0YjjH2JfvS6GUf7ZqDPW4kE4PKjn8iIC5CXFJovMMukr42SjoDjNizeUP462mm0euwX6pMAaeTLh1prdTzfnhJ5C2I8cMfUx7//Te7u8R7ntA44jARC5H1j2+AjQ72a5N5fDuRN0ikMpqqmlVJSAB0j/fs3Kvls1b9z2cyp7Xs4dzoAK+HkW4n8PZkW5arGlzxpUVrbjp9fPmw3XoQEqaUE5Ay+1PfUtW+e2xbonSitHjHAT+ICr+iSrURWmpA1KmCqu2CVvL4TOtyJ0iG58RQcibT7PNSa9XrRg2fNeyBf9dVcWcLNdsQP4BxZTC2h1giliAvwYik5zn1qN6Fc7D8+s4e2OaAH8NvE56sUKHcAycLgqknsU1/dmDpn9SlqOTA/ARR2fWYBKJ2W8DeiRQ1d/GAbVFIN/BbObXY4we7C+tmUMJPaNYeCdJcX7xyDQBLJN', + '5aPRCCfugusORHsV1yWNnoESshCfVeJzDbG05k3ubO5g5mEw5ETz/fHzETcvdm4BUMGF1JOPh63dGoGaPE125bqvHTDkLLD5jtSakD11E5anKY7cFl6QMcq1isg9VWeMPaafULC0iKN4LqLHqWw1YLXVfSo1cFcgfiLkA4NGKkNYSkczVR9UNV0omP0h+qCSiCTTVFvRnffbaR2b2yZl1vDqVtAt9+hKNgB9vNFhLgVyVy51cZPB5TcHJn9/1icGXW/SZOb8U9RWK6c8uSuKVr/K6fZdPsMGMrdA0uGE5BHStnzlksjW0LHM75Wx3cN+iozt7KAWU/ua+60EQi6PFynKxXeXaWgJtbbs5jLg6RwE7quXrTfY+A22DT7O2TITiISbqV9UMyaV7eyDLDL1h5848pmSUT0PLETe6RFxMSn+lPAcift5wVqB5bReimUOOBNXsrIEUKV8czXOHfK+IPKv6n5XjcLtALmmmEFzPKu5tXc/2BrMMgzEiekSasIkbR5I0drVWeWXmEWuQObuuD1BjYq7m+3mZ2GleOlJIPL4J7J13/DDgEiONvPxw4cbGxDPZbU17FXQqIRcMvOJp0lHGdnHH2WAN4dOMXhDznM9W/8DH96uJci5ac0ytK2aOLP5t9KG2XUh9VTP595xysqNPiBxq1xPQ2p+SvG6dHaB+SmMohpfYH4pJXupOTomCKQOoljPGawp5cuIMHRN5NrU6h2AZfPwBmLHdVZy2egw0BhkI9GiA5LsEidRGC7s1pAXbxrARvt+1kuJefvw4fetf0hiy4Rz4KzUP0H82fPUflmXTAZaW7ix3jEEjxHhLwojXR+oQ5jYJP6VsgvVqLzpgQ==' + ], + [ + '6cqCpnEXK0oiaJVyly4JJ98yloerRu17sN8I71ndJ3c=', + 'Ub8aEX/RNOPPdzb515TTEh/gzDVlE3eE', + 'f53gYe0VDKAUfbR0uQdy7A7Gp8grPmHAlu/LdsWRh9bi4v2q2NMeo3+oxJEH6q4bPPLMaApSFthD6KHCqbX6E5VHhETb0UVcOwMdFfLBLNWVA5qp7s0+WNZKqMAtDMKaaMeBlQFlAmullBt7t0ML1/tRQjeZzwoJTEVhy4hcreDAV7lcT82D+6k4jTvKAkj14YvyhivaCI9ylEonCIkC2yLWDEoGQd9sus8XZ9UkunYYxt7VoNF2oFrcriqPBvXKGRR6KtEG5968kHvf7R2vMVkeo1RtrCBcdCf6gbYTfYk20pXLVzHPWfXMJrD/ikP27lsbcR1TVaShgv9lijoS9CKrseV0kpxyJ5ZMsVbM18uTETCYDyUsuWeLvLfmtCPJugZSGkZoNvhZVWM8nLZszRGGYYIItMgXRI3+G80/aNsyDULtw0y4Svh2v448yuarHfLEfO8njuI4ObsySNu6+Xs1nPwyb/brzztB3BQH/nU6AmD5zEGumqvarCYRRv0Ga+w6DvNL06k4zD0MjqljFl7pfDEVtzj9oaBbRasHzqXKYmOxvqv1TOI/5Rl2VW/kIrqs79ks+3q4DCpsFHXHcZa0dkErPxn0+gfgRch743bNKI0C1ywy8yR441B6XuhkYpg3hVJCvOiE+LEmdpIH0TQCMgkSlt6rDT3R2m0Yht9UMnSt6nAFfMQYJaMC2m8TFR2OdryfHHChYAbNqxNu/kVDC+qne65ShBHLXe8p887YaKn3rF2To3eKZlcXGpNcqgJipZI+15dc0pkNhV/S/yehRvLHP+nJZYNoX/Sdz5g9DeCFGGWDvhnfNlX6Bu5qHlzcdA==', + 'LNMFY3zfClIJwhl+lzrdLn5JNFTvFZhQ5qf6sHnxJaX4lsqRF7iQ42UkaZdiFU5x0JqEYA1376c4JVMZcM2obn025mtGp4TjTIMc2p/94MWWvVi/GG2rsoNzYiVdD8tCKD/24RyV8LI/xba0HuxA0zrCNaPtcniFP4mc0lbMSqvGtJaNAh1MoP0mkIAxj+al/H+2ZVtzLFFXNPTLNySnwnuAtg4L4te2r7Imf3Y8Pi+nrL9zfxQ7yWnJiJPDudhiUKsC0AP800JRAZ5t37GCHWKDuuE455N1qXaPfWhY0Jql/BwSLnMIqDFn823PrJ5Bvftw0uAPr9jRIyFZzyTp1KZJE42LLZGENiVODXN9/2d8AQ9UUtnaehtUh0eWjUG/C3EQiwIos1OWDemmCsGUzm+pkCxYeNWEuvleirmtCGBoDU00rClSDg21uz6OIBmtCyBWDnf4GUydKdKrEdGKc7iE9EUcJewc3amlMLUvextr7lGLCBAGaIAMVeO4Jqp1l4NxByhJBZ6X7+HQKZV/jItS6CwRw/8YrVHCtXBr/2y5BhgulYVY2b4jVX9WBhGzAie1mU84CUecsx6K2uKg6DhaT01mdstpG21TPPe+XH7dTAsHjEhBLj30qSQf0clNdHH4exiPiUxkyTeS2OJKMhmpcNKnMArN3RpJP0iGH2Ujc4u0ZXswXOKILLuwkH4Tyf3ugvw3C5o4sD7lHbwAVPQbKJ+26p/tkHKJYNjND+HXxbEOokioMne1Z9b8d6lN18SK3YLBE6lHmDu80BQK6zBSc3ROppkHgmdVnUhqv0WLR+2XTl4M+jVnm9mLguoNivKSw1zQJ2Xs7YQ+gHDbHRCQCUw=' + ], + [ + '39yiqLms2ridTGsBbsFTJ8eLBlNFnd7q7ulp8MfPEBo=', + 'VfiJd11DRE72joMYzowxSVA/u1qCT2zi', + 'LSBxXzZ96w9W+FMtfT4Yiin1Czsy15aOFTBylE/7Uh8dRFl/gfNrMwUOS6XJI3FIeyVvmCn7A2KASL8b352CxU2Jenl9GZUhGRcOiQedOACeQq5sSK6wmN7gg4PTpIb4W4o2QoWyN6MKfBoXRHwqk5yTlW7f1xQjY8lVB6pN5dcsMQ1O7ns/KrZjBuVcLVYKTR6K1xoly6LbpP6CJCCfi1t+sFi2pbdHDh82VYh6aOwKJVTpl88ReIcbgzLi49VexJywLGErCS8fGJGbWXwA9vGzaMCGq9cqdRZPDvYoTOyxAFGOw/+5Ui4AD8Atb/KKf2TmEW2HONtHHtWZ3OxlhKZ3B13cCJOaactajpGo3Me/wxEzXHNFd6aD6CgMphj9Ipo1YajIOPuMuHhHSHybrMTT/v1HLSI5hMCTPxld+xxQCaJYDr3jjogtzSB5NAWCYe5qzbovW92SKgQTCxQXkvZCT+8ZcOz+s8ELgrBcH1kBLLDxcyQmmfMDlbHqwH9cltAM8R910N1jd1aa8lSyJ7m0LjGfE3soUzkkvrlEr1Futkx/DrFcSrutfT+NqnCEWs3PUmcEcGJEUCYBt3W3jqz1wVziBW0PrsBYdr58ohmAyKKzdQj8ks6TCNVK4C86Q5X4BaNmBqSLv3hpgJeOGvxHwD9jbYvGARev/q7GBd1x2nwJGK38UKqAu1SD2oMWdJ2XLBeYd6XYjgF26iISLLtpNorMMzjPwSnL6e+bBwaj71g1wH1ZawlwrpgZKcePmoL/7guuiZrPTBEcl0TiQ2vHDhxCMdkOwB/03L8N9BQxk8PL6LGqO/sWtLd9pcyhTpPJyjs=', + 'i6jywKXTNZG2MkH13VFwkpeJhofxJsnp0NFvD9SIcHgf0U1sAR1IsP0a/UHn7RzRB3BPaUZVTU5X1nHgBhWBeyptdTg+XpA4XaMEfDYp27M7EEdP4OiY8zV2e7xkbPax8aUlLQaYlJlujvtxWxDGq8vIiHirOqGhlem9zvTr3ewNpg1fsb+Cre4fS9TqNxzfAvZteVmhHJfUuCRVrM0V/7Uflr+Prz4NQgU6KHSnaPaZf6KUgFY5sbRyDDbA5YbOQdntDYE9JaZWNBpRvkLi2mcp5Y8+3eDTKkO4wt6PkoMxDH6yatdsQaSETIKYmCkAY5SRWOmggMqsEp7M4X3jhp+wtWLZVY7FoszH03dPG71xKBVRlP2WBDB/9ilcu/4HbQQL0Gky58liblFaFOSpBhVT60I7nL6d30O7k64nCqXRcJ+uvX0CJiGdcLuZzP5uBBtj6ZhtEdyNAhw8kJiMHnZ7d47AIu1OK4tsVm6NucVGC0FvBLprIojgObxNC5uwauHjBYZUUczJVgUlLIoG997QKn2MrEFbdUykA0sFYMsnHqz3sk/A9iC4FdcUNECY1HziGBGS6v0Z7/uK/6G3bhnNEFsaJF5jMA09vX9urJkFrVX+zV80OVSWBwNy9EXrn5ecjQj/qZnI0+KJLNyk+1MXo8i9JMDi3Cger4vI8E7IdAN3JckRNWeUgdNcqc+Q/rxsuAh8EU8AjD2JSdPQF9cN8gPKxddvMc1hpfFVupzgG4NBUUIgDdVzgx/ACSFFHEhkhrUdDrh/SCg2LGd4lCissWex/7ThOSUvPTzhJNCCz1Cas8FkngKmp8mFRQOhk8eM6HjtbNPayn1LJKAo9fT2pqal' + ], + [ + '7Cz+8nuHirOKd2TupHeSHA33X1ImzABq2ibvEIaGW+c=', + 'hVc2BKQFU0/Ff/aDi8HnusGuIxwkPdip', + 'UYT1dbLgCjQ35XjRAEMn2XkNU/3DYQaNz8qqU3kXCS2jeWtLVQif+rM4N7MOH+A2b4d1DWHOI/VfZXyOrCtxm1baYTU5UGeaDLimpIdaLRmzxFCvHzgrVPVzfG9qh5pnUHEXPxg/I00xMMHiYQnvs2uaydbxnxeM3n2Bko+6NEaGSgci8ljCJfANh9kA51+tAtYhqU3Rrg3wO1i9pD2KTLGfNsj5FRYCDbFH/TIumokc/I6MUoO+HPToDaPTzlRqTWFmbRu0S7QV6zdb28+FePHx06sxmHZ+FO37wdLib/yoXeoz4QEwlogc6t94OJ4iePHtU79xtwEN3qftUpcOlx1IaNZLDF4zMRtKH+9129YxnanRyhjUjEeSQC67bz04gAjvmrpMIsz5L67FJeaDyvizvChR6TOo0oF8aVIBzaW2h4tCGQAsubfXqvIEMym2wSWQLu45Ko5IOqc+b+jTJqM65w7GaL9R/6RMZRsKR4IE4UXRWN2nhBffOrT2HkeeTXpzT3RXbwpU0a56jdVhcFiTychMzTejXuyeXvKEw79FLAXbIQ4duGbPpFnHgEE2QSPBo7z3/6rbfuXrMoIczf1TJVrFVhDE94m3gydQbpAe5lV1PFm+3wRBbkvfG6RPtrHQmP40qMvhmHRJn09gQ3ePidBHbmrYyK0bmQseFS9p6rCHkUehtbpdOAkKcESzhkUkenWWo1ATNmLISHMpkk6Frb9cr4wfT+O4f1qNjcMdmkrYP9XkJlESqxtvZZHSSSFg5qqUqXQtZ4bcRNy+RTG98M/nBiR0Fhr3vw5zpdyort0qSYokKZnAVp8sswzNacERpGYl', + 'nIaIpcm1A6BTrm+WvwS2NNaYKxYlCJRpf6p/62JQZpGBnKwGVRKoc2FsAduq54MqDU+FkZCJS4LMIkZod0UkDFxeuu/tc6BdBpUty/ljrxxfaKk646YOK73UKbzO71pqlSdYlaBAbpspNCX6m9BLlEctnRYI19daZjGx+G3mh/fnHdkAoRV6f/VEYCKDc46AvHNfu/05qDrqtza41wdnqRHRfZYN3XwqX6c+tpp8c9q8OVZ74MUILhyTsN8756F99HAJuNkRjxOCsxiGvzgXhai4z80lFPY8QHTDfWcSXTIN1dek0K6DIQk6UBNGTRBa+27KHu8gsRkBY8lnUL8UlKMXPGj6W/V4fGXn/v6TU0GiLT+LzJeO+VuYmO1kb8uhSdRBeUQByiJFxcqSMIXK7tg/FP2YUk/nTKUVPK6//9avrGivKFcmuIqEo3QvM+K1FkLvw3ANXAhCyhncgN4U70iiLB3s3HJSvh36HN8mGiTFNHOtW7RQME0Xuak2zizUWxPmxgEqTSh4d8mNEdomCPun8xGX0+Q1KntFz0nO9G//Q6hbVn58980TO9IW/epoXIn/VxnBPRRkCbNfkESyfH11l0ivmIyWPK2HblxStP5wsYgHL8CuAYS7ZK+2cXGcOLYhU4FctwUd44Bg6ppKmZPUnit129ZQoKMNjwuCANuc+W9+kxm0KzCh+vGlRdsi0jgy1149xJ9VqIFMg+Zvyc8BHUaeMvadNjta8qqbYqOjoD7LmfUquYOaGIZhj3m3hiLfdy+tX9YTlubcl00kZXDTg+V85MxnSHUPyqc3wQx03qYwJ3Y/qZmOpVeA93zd8vmmLg4f4qYh+Bg+UjIf+0QmlpwwUw==' + ], + [ + 'kyoAm+JSpGgU+MH+qtLGmFkEYiQ/4WTpTXePNFLVkN4=', + 'EHM7c2oshfhisyFVtbmEhtoOyQEyA9cK', + 'TTb9dSr2TKU+FH6x5poK9KjwwgzbzgINhS4AHWLbpYK9BzXoX6nXUFiWCcwn5J3pDK1p8DuEz1BU3cotg2NIq6fvBhaakgt2kWJRjHeFKxc3YOxpWiVlO4cb6REk1VU2zai/QXlEN2RTrq0m5oC97LCU35RanZxbOYIcQBAvyR+qLsDzc98ZnLRk1vw9+X1i1XMlg0qOvQiXeb8PAetbLFkTe3PXfCU2fbtOJHfHOHh5MC8UdLgMtp9D2ilZI0sAe997k5l/xPg8V0IHy0/UpvKMzKUbJFNJ+75T392RONc0m29xPyxEVPt7wt59OZGMMwwv5sQKjyYGs8bwVXKAwytk5bJWToxRuQAzfpfyR/TJOBGuvZbRRB5I8ZYZB+HEBsb85xspxO/TB1JfZslD6qKyY7v1J3uc1Xg8Vj1mcNLPRNuPaceRIeMOqtIsHLxm8bBrpco9+jwqZXlaCQW/cyANhO9vtE3VvKVpNIrzcB7fUeZ/AopY0phdMN/4lFiypDCCbg6hta+tyXDOqRtyNTjxzBy/15atXYf4NcSxbKyYmqYBKEfqJ1WBwmh6FgL9Zs2JQpX2BYElqloUy08mwt1lrExD9+AB5iOg0e8iEkIbb5LClaUQkynjIqQIYJNT4W9tuGVOjLf1C9hwANKFpqxhaRQJFUeFcphuFfrRdbJDmAHOA7i5g0MjY+nAgiyRtaqmKnjhJUEdwNNAVbD/NNTQPU7FClz+a/r58ZWrM0fNSg4AetOAGHhg+3pnVgIeRB1afcklrjerDxhzM0/fntsYjaRF0wNjwYUN2r8wNbw6s3jTKNg2XtN2IR+FCHjyzJq0CdGYgg==', + 'Q3KvQ4Hbk1kq6H1/WmHDWKgbt8xHbc1FRsuIR6IDFHRbXuCmlG0yMUWXOmTWJl4lDUs68RA4IUqq3fq3uA6DEZ5UCGzyEO7rt1fDwOvGbcdNzULN4wDFLnyVtYlAi/EL+U/bh9zfZQKSm2Yn54A4rFXjr0IqM47U8q6Usq3w5AnEVOBL315PIujSNHSbyZIRQIYRJe2TrIsxQbgQApQ8h+0vfdWOCmiXYaPrXU4FYGoGVVEofi+Af4i6RsKUjCnPWb3uBPS6tOxh9OhyDuIHuDj+g1TFS7FG2o6b7eFaV8K0FEoIKN+v93Feh77cM9PtS6pKQFHRVPkl9rw/geln05CN+zXd1YDCrUEtfb9XM5ytwdaYc2tFB520XydideumC0NGdvlmN+MFCDTNYsC791n7dpumz7CXzWmtwheLV30gGgKIY9eTKeSdmNJgMneAfXRqjxwaIEfuvRMop5JOrkMEFajOE8JqsnmxgX38Qcv+GCF9pftfAYMYIBlJnNyLYcNCj0+sXBQ7UEdzuYGWmvQqN4ekvV8+jXF26gV7T3ODqvJeUZHUFuJ0I3uOonAU8uvqZYrlaCrnVxVCc4glfUvCH+m9b2vlbH3P0tguTl8DCJN5hu5AdnnfZiPAJbTrYo21fCzI+enMzpnX1lYCc83lkbYDLE2yxtOzxTTByZyUUUc8l+caU3lQvjYOof3sWZ93IBq0JWVqX2k2k7GGI+VZgcXkAYE4y/TKDsgNDz4SpsgGvA2UUFWLZA7JBMeP2wjhC+bJSFqGKf2qFN+gTwvwvrdNBeA2e7JI3ZFncunQidH02lz9J5sVbHCTVgVT6ZAg/Zzt8pf+ArUrn9vJBF5ZsEIrhEY=' + ], + [ + 'MVggn5WKsjjGbE9IV8ZlqXpQ9AcnE2qZFauxLbDsMc8=', + '64JKtR0oW6kaBJv/AYrVBUAS5qxOyvtx', + 'hfKNVrLpZGlH5GhBACFeuGFTt0JpAFFZzn4Ht3Y7uT14ZJ6ffqaVkxUcLLx9Ok4L4rCOgrvJSiw1Q6Kx/73yYutEX+poMrHqq+B6KLLKA/vwh19kXTknXitNXcI1cfUid7S41ZsO5agu3zoB9A/UPbBiKxORJmeyCsAK4nOFUpE08W5i3lpqSN3ainHluTyEJ579d/tJ2jPKr/kV6OEtNYvdshKHkOUSWvm4mBEBJAvfIIzHHxu7diazWoHyuQrb9be4mJngsQkZsWy1DTVrM0uKYb1ZAi8CzjYY7VUFufzpdYEe9rWfSW5/6gAAFAiKNnH9KcQm6aGb/15r6edu2DzhKKZAtDP3tROBnq8oxIjO5r+WvjmtUn/shH7K8iRYHHpxK5x7p/HLCePoejYz9XRssAiSQee56DYLDxhewIdgTBB2XssRO9jAgk0xqvk3O/7jUVc9/OrifWGJunLbD33vjjlD3R4dMsxf+fSVtlkn3mv9pWJOuHLd09I6W3nMaqBQSZjtfGl8a8yXgJku0Nqlaq0rIg2NnZ9oJ6uy43SY2dSTVvnrsNH9QIzH0/2Aml7hCOTRmwsFT1zEWHyDLLLKaU/Jkfe6/m30LqNmBNhU67naQ0gWl2+jllCZc4c87X8uyUvxFqu4kHS/6ua8AizNu6GHC+1Ai9c3FlAL83HtHN8HOLBi3qzLjeECK7VrbiLfb0IxRidGCLiccy/PzIHaXcI84wUpCRyFsWR1ORDPTRbqiXA87YrOrv2gN7EvzmNjX7yJ5lHHQvSDtFfkJTEBIHst/C9YO97+Yb9ndBWUNf4c7JPoieFBfKC357SO/hLeMp/SMlY=', + 'VcMT/ZGFX+ny6ImbrClUqWhT5DllNX7o2W0BHmPCDkPFwKnQ27ipCXbwFQmRIRHPs2KY/woR8dCFe2kKB6qRtMOfuZGnECyYkBXvt7pJ7iH40B6aAGfMiCcEOjJ5GM5cOnQ1/y/C23E0cW09a/3ziUNip90oaySZW7U9Q8pd3v7Ey22yerMO4k9NLZw/DTN0q7kJeCYu6A5G6yXoHLY2RFr8P4DNAJxlHwgfYmdOmFDAhel1G6cOEC5aMfxgYM8Yl8Di/G6DzIvRd5cE2TiUnLr+24r0ik07y4kBcgxD/uP5nbexQRU3g6QqoOBg3Xajrdnb42FW5Yh7ln18X1yGsjL3bwAIjZvs9R0DKf89TTrx7zDSqZaUhHcYRtOfXp3ssj7b3cScAnwJVN5Fiu/d2B6cUKe8yvkQhAGN0a4cqAOVB7k63VuCuu2PKLSOnONX9kHX1e0pVaZVWcEMB2QbC03+UULth7zNolLRGd8/RkzX0m+KrpJiPn8XWVCBSH06hB9eb39hRG+iIVuu6x4bPmuw0fFIzbxLTZ5ysg7RNUnRB+AKd3CrT8+RWA9YyfUMJ31h7DDro7LmbfHusoirg3JYhbxCT3M1cwGM1RVrxxqW/wWRT3McX4aKH05O3cg8JK9ymTr14ekJEncz9Etgs9QZu+iGUrcfzpba3uzOqh6HEq3989sMw2vl3I5KeXj18LzSpAseXPyl7Ie8aj53ROX2zWIh9SrTw0TuJvrJ9vrJy4K5+K18HLQxGqzXkOnZvA49mYBRgt0X1oGNXV+s8FzKt2S2KIH+NflJuO3wPmo3DRgtWn5ZeajAX71G8KKsFulQQEIj41CuZu0oLyZxc27sCD/qm913' + ], + [ + 'flulotkSg2G4AQOV92J00Tlyzrkp5deujQbL1PuNorY=', + 'mcy+gLIeD9Phtu55KAULwoyD365vNRDA', + '0jwQoOLPi1ZyVuK+AQD3YLuG8dzGweV6GsQ+UmcRpxJAHbfBeR+vzCV+pqUdUQossUZMnfim4oK4NWV4YtdzlZlYtxRvJtazOj7t5+AT65S25bLa1UxgY+4fVvxXe3s3+FSwrEWNhG2cZD2izKVNH+x/9ZWWwVyKlsspuVphXA32I06wMwJi0zEWu+X8S2f+cwVzWYUICu4aszLWcyp8PK5XAFVDjorpiHYnwUd15GZVbX+cKCwJTUkqfpkCKrKv8jq2qPFjmkipaYcqyDupb6j/Sm+D/9DWwQJrKHv7L1ErDA/HZZYAcP7vK2W6nmq0Mi7ghIhNS+JOCfbCddCvJ/45vJkiqZ1wIphaEjNM7mwZ7exdDBOxYEfsbRKYGi5kRiEyVvxugCFLvfzbULLPHllpfPdkOBwu33bZx7EWJjIZcwgYaU9+jVxBk45+Qk5LfbTq9YS2n6DwmrbMXwKo+Yym2wmwV5nlwlgOG2I1cKSXkzXjz59dyxpJLXsAzw4F53wG7vHlbpb0L2aQgXlLoM5dqFobUh+7cIiuwxohIOknt4pXBp5cpr2HV7nU7l3g1pF+OSh05LmD1YVRPnq8+VHdnSfVu1zBwGsaNqKkumimsJAx8M4q2ev9EnVDy+eK1+vjdRd8RO8ps4iOTloRNlDvDCvjtV3KdZ2nBsMfx3GfoBJeY8bdy+wL4mx/SVZUyHbQOhOua8m5M2DUY+znYNY49IkzfvppxRDuRJ+KmbWvHxNzfBszf+8tLm1QZLDR+AA0atNganTY05MW/uTZ4xQdOowWw7lnBP653T8ndQw2FwLvYGAlR9rFD8nCHg2TfjVVUEzrGNO1', + 'nu6gusMBVKSlqhk17txiibgVY/v6Bs6Z+jTjF9eszte8FWQSajat1C9Hy2yxbjKm6DeIlxAiYhilGNTw3aZwkK/YJBaF31H5VaWLLhSbTzM7rY5UffuW5g2sJ2gxgNCObmWRadbXr5EPuTnnk6aLhLvvCkLgHmt2XmJTcGqAEwCSyxag2Y1BLtQukeFUga5jqTXEnOCvvxAWQOiBfq0HQnioVLT4wW959KGPjtTjMBFpahLoZojnRtWaMl7E80dPBFk4N28iDQ6t5HGyBs2MDjVXtwVkHU91p4puj77Xfuj0+T3sJRCvqJ4hIFNDAgFDsKj89PTc04+LJoky5NMMIjJaVSEfMAvLagJyE7APkVuhOVxtHRU2SU1afFJ/VdaMj5ZE8+ZfbtmIbT9mbr9rrqrYtkKq8pvP/FSb1Zof4LHLSpMMaby7JeOiG8Glm/7hacn/7GWALl2i7SqsU8iGqixxsIISESBIzGMit6+B3n1tTKIjxS9Ktr/Z8Hy1im41DX2H/EjdxFgIyCHC75U3zbNSr+9x9PrHym0svYCxMCPIk++KDm0IAM58I1vcrB3vwRBFHQvpgfP5rGTgP/A/2+BW+maQBMbVMFRrrvuY8S9BpTV7CSRI9Y2V/6x/xshzTlh5fcYNzQg8ct8mmSL46kp65aT92Z50/GCDqC1s2P1s7SXYpF5F702ug0YL2hLyIeOKGpC9GwMWtgVeK+QLtqZip2I2uDiuvo437L/pJiFpH3MLUox+KYiWmzR8xpcPVVktKySK9kj0QSWd7LDQgRO3aO2IpGFSr1tyTcHxP6p3QetLCebSyD0wUDFPIgJnGFMZMyIfrbQ8y9rZi4scLQ88qGOZA8ReWg==' + ], + [ + 'n509/8Oq611tfcf4EuMF33HUtXmpiY7rllzG33srBCE=', + '2USDUGXsWSo3tf4AWANCEsPyDRUXR1dn', + 'Z5+VKjBovloLe2701NmLihYzyn59vrmADyyHZnBNQnMSaO4Nd7tv2BFQGJ9H06lKVW5WcZlVKYmO2KmfBrhF3pDwMovIjQGPXs/q7zGFmgdJLE06hmJ62yxhkHxan1UTJja49xxqoJ/eA1nHB9kPIBjWk72NWjw1eD++T/fywhrIMkwbeFSPhiJteaRST0NvKnukIEdrRm4ZRlu00VxY1ly6k3vKhEuN7JKUbKs/L8IowKjgNxzbaBg/xVroiIl3Ud3Y8VjEbNp0duOcserpa6bN9xJWBvfeEfA9VQM4apGqrKokPHWdt9Synybu/rR4BuUf6w1cSlBLG34bFYhRan22ohSTPs6j9TNehR1X2JNI6QRdOBpmwwjTaRRstTtk3ejT7A5ABySpKJBNPPrX0cLA0toWQ4U3XDQvoUDLNhZxAaKJAZDOhtmyEkABqayRnNm6qciCs2yxc5y24MwUfO0h2UY8LtPonrOFN+9HpooAuI36qu/QyMB8k3QF7VQNY4WU0ixoVc+YZmFENDoLH+A3vRsp4+q0aKzXTe4/Ibj97vjxLcoi82hzTNboYGWQ8zogV9wm4m2M8PZiBDbQ4WjjyEQCZ6IRHjzYwB38CmRTTj+aKnvN/1ueUOyO+5de7tjQkP3XVkcbzPVb50dUvhZBAkXy6vbsFCvxLYpWzGfAu47JBc4OHa3C29rI05ryzM460WWbiqtQBteeJJsnQSxtXb8RuTjO6oT1D6eL/HIujZ4HCn5Qxn++kpUg+iNnXD7zX7A7JDkEsGbHpr7Fl1/XnhAQ8JQ4e3ZknJ3vO+RrmDRHzqX1TJoHYUy3gQZevpSd9blQmZH5Og==', + 'ciE1MWbzd003fixOesHKAgMMPm7S66VYjJLruaEy8iJXo7/mQNN14FXFs2pRjAfjwmUrtrYHeqLCVmne8bcfeEZFk7PoA+DxaaF0O/0ufGqJcSbRB//5LnhULqqO0WKqOlgmguWtyMbItg68yT72a5Q1Re4un/Em5MCue7iINqrF1ysAuJrcZ9qUoe5xYjI0m9GnHKMZCmq+zl2F38SlQy4bppGC87f0dS5U5wppVDBE2L9qnhalGyoaIDiYCCKzxSZlIJpvZUZ6ss7nj3zk7Psg9laubncZU5AD4V64clnz1nftGLXrWT+OvnMXuJeLW58TjaOI8+jgRCapiSKy/kebZYehfpyijSIHmrBjduRC1CHzoW7khG3Iq6Eu3cYv8nqwU0vEGcQlZl4niO0wuwqZeR8w6LdOHZRVRMZv9YKsUbLtqLaOmCzz/J7bir7un4alANx++D4nVc1o/IAuAVYXKru+ZGGuSd9ySkK8C2f7OwDZpVVuyi/643TFoB3ColynovBc301MYvrTQ6KDsJMiEBQ06VdUjGi9eoQXoBAcQHrO8vbBylk3mskt7g6SfrjPFAG577UKTjV12afyQUilVKFzt801ZUu8aZaQoAZ75Eg1yoEqgGuFOpDaQPjueT5tRvvVJn9C6ukPET/lh1VmV9OLetla9Hm7m02qDV/Vf9XhgtQWh5jxcbDKPYzfOub8WUyJlycSIKArJOawa8OampHtxQkZSuJwo5PLRAtjqnSSQwDzqsbzLa2Jy+QVhIJ2HtX2xk97wMIsylXa0bKSXGsD1urBjVsqVFLPZJ9FdhkA8BVD7YD4eWblfEkdn9sXLqwB+9vufBv2kkwC8AscObmxb0hTylM=' + ], + [ + 'Qnyt18wWJPzl/sD+7xrQSjmGyWzk0AmDdibxNA/D5/A=', + 'prf/DAWGDfP4+r6RDCQ45M0dXIsV2t+H', + '6U/4sEE1MQbLC5apoajlsTJTvioy2h0bVuI5WmgDHqejSs4d4lEHfprHkfWvkU200cMOdtBquaHj3H7fHBFfcsxS+u1Fx6wRp1RhdMIGwJK7A7TqGs4KNShk2zu0BE8EsG/tA01xFbQ4tPIScG2nB820d3EUwARS7UzT10pOA/7pRY5wFyh3dbahJWyYvOXxoVDeXF5tyi8xWJ4eaCAYKbSyAvfUInDq/xswrT/dCwQ8LmSqhc4GKzHbO+MWRqT9RARm4QQKW9vbnw2mMC8aT9yREntn196PV/nafvCFbxo43RWek2pdUym4mNuDvig+n3O6iR+hotnxvvBrb8CfUop6B5ElseJFEVAnG4FajO1CSNszBJRjhsGn8i7IFB057pNKvOmSs+rw8mk74BPV6ZkPFZ9NqbvtrDkccI+YsHJ8mDz1Q7kMm14vWEEOZQdUP0KP0H0VsiRfdVIx026/0PIl5T+jX0nDZEd/WdNJnwENoXJ/PVsWlhutcS0yOqTcax3ysnmPZfXegLIJCfjSSUcujIx0P9UqTPL9xHndqQhxyf7JpcMXETxflYv9PrHBkHasoxGrGsSTeBqvyjZ7Lcgdw2wrh1rXO8U/uNwF12b0K4eG8WPh7NM+b2gZis8SWk77hV8GQLwfmGwA7G3dYcVTnBzZ5tATIqVwE3GxEionJ5+Yf81F4dF50uZb9eCzXSZHmtlE9hpieIhwBZkn7gkm6OWt+S/EFvMcbQjahqN2rrznu0+KhhDwq6ziLELUuSw1ihQNZBoBuIktF5Lz0v/GNG1HlXdEV+IfubdrL3qsEmyldEeLiZN0NzjQYM0bly4aTzz7B1YrdfU=', + 'uzF0YatQDpC+9K7kBDO8H6GTRA6kqab3Rx7aUMt+2RiIVMeDKjcwClY2t6CfnyK3wjQlAyFnqFF0X83hoZ4jD4y7fix0UNKn2mwpvc4NWSkskWz/mNHk6TDRruiM0MpfjM84MUquGtVlPXZoA5MVRcRs/ow2F9Ptdt6eMLggrGTADwNyVmM1tDEYjemmUYKMYe8DWV2XfUNmYxpx6hFpkzT692PEoV465zhCAlOvaMUwM46x/Q6FUaTA6NmuOEmL1d++/G7dbhDOrHMdp/x20WgBNOuUe+TX+g/IlJ4ja1rbqOYo6qpCCnNXRypS87zf3EJvOElGFtcFJTxeqagfHtSPXuXDdj0t29p7tr/fOxJMW/D25FH5+0KckiWi2Bnp+LzJooO1St1jZjIeGg9Y69viiL9CfgXuvWj4TBRflApWrCgh30+IKhlF7Ets+UAK9J8gQdcvQ9IGYqAv24LhllHYK5wUcklPfrnevVpRGFYgfVVDy7u0mwX2/8lhpF/C3LtJBZ0y1WnKuwKOIosGbe4Drg/J/7maNt/KAGW4esjMjnEfqP/ko8Y82h3TXA5yfwfEUTRHx4mDVJEvSRP99VesbwWblex8l+orFEReYNx6uJrjPA4xL7UCsiyukPn8miRKv/Lx4QAcclsH7knxulYf229XyFrflUkMf5tWd2hvSx4ghy8bnQoaiSlfXQbu7Zv1BV0nPi89Js9hzCwgsm+gGsR8sDNHdkCaZqjKe9G/626hYnNc6MR0zJvseIXrGCE2KIf3pI6vhwI+VkiKqSldaJFMYa3XCIIOwrAD2KeJki//PnHDiaQPAeb7wMEArdc+cS+2RewjQgP211iQkaYBMfj2wfw12k5+' + ], + [ + '9ztdGjRVkQdor55GAezXE5Vevd5mrw864c+RlvbDS/k=', + 'oHVJGW6pOIobmykB8+AgXCG9uX9H7s41', + 'ed8HMXiDAuu2CCSjg9Rsecp7Hvn4bzoWkLnv63Ol1U1ZkkXstfGxoSON7qaeQktVrZtwPUTqq1DJiE6OyyNdTQMITfHfZD1nh9qHHrEuJ+HEzN6a+iY+jE33kdaEn3ngjY3rSVxBMApYvHyIxteYAz65fjlRv30j8CWXtNj5j29OVcJ3yul4nm5gqON8jRsd4aN87LNVjmE/A64akz7d5toMILbvo272JDSbRfETjaE+U8W72mNgAImqkL114WEpfftbwIPhLxjIAeHh8dmPJSmyviQjQ8YsEjDvy9znjbmoWYuOL9slvPRMW3TbyrZDI9Fci+95zPG6tOcAghwmKGzrz9aTfOmQst3wYyIbR91612vY6yAxmaQCaSDZQtLtv0dCzoqXGgqxDm9WOjSCFce8vGS1WhRU/9LX5z5gTsRFV2tqFydcw9LV4r9NBQ6iJz7MkYYclwzILXVmBs3hP032hbkpUQex9Am2TlFnlvkQA0LgJN7vSE2mzOn2djSwfO4FgWa3BMIigIkjbIXW1KgE/v+HabRgJIqSn4Jc+3yMwtTfDwKiqPCUfMz/pkK54vxLkOI/+1/wMbWAXyA3OA5oSJoX+8fOp7tqFcJRxwMW6ygH3W251+xkQSlNrN3rtOEMAhuH+R0UJY1dbkC+NrEWJMYzeJdtR8wrUQHpZgY4ibjgE2sWImkmsnq5BpviVTHZbbrdsfrzS8hR4JUA++xz2jLZHXlMEc5R6hm6FOv8QRHKfM2o9TtJsNNCliQ28ZH7dQxMhVz7x+X6oi0gWzvAHnFo26IeMLTASbraF04AZX1A8fku/PT4IjCDF1lG10dDIH5dPF3+nZyl', + '5jlQvLXn7MJ8thEHRePgNSi+3arW10UuzxTxsb0Ce8Kl5mo7Zwp874Q3nj8h3FIrwsUKnHd9EJdm2fFAHLNXVVcox039nHe8k6TNaL2GEidm3aMS54QI6EhIBA2gTnxFEMJT14Hoei1uka3FVuVEmunatXLnPmNiU35tnlPO5QEpBtxEffOD8hTnfoFz284oCV1zuaJc7fo0ePTpJxGeBQCFfOba7eBd9g+FMX888kuDGZTnKowBTAnSLWgQluvFuFsKzBCwg3lKBA3keYL4uIbvoDPwpF9JFze/EnTAjaj8n3kec8bdFFRZj1vsWR7MeM/1Xv8ta76Gyq44iZ+pwU95BTl/R1h3L0khX/nTRtKzw/ITV+xCKXPnuNuYAaNakmJZ66twJzWTXCYv0N5/FNNguPtnQGcjG6gtnQDLRtmnkacSogRSpwcaEtuJXVMolFEFI7BsXcaygvNMdSBAJDHwc6YL96xLzIFg1uj1Ybmk0fPuebKUOMbEPYctJaBEDkfiDHJfNumicD87l5iY4m4nj89R2hAeDvpKS0To4h90Isr3f5PFjp4xeqzk9HHPJrkDvIKRD6v0WBvFxOlEqqExTOV6NYdX+00MiX0iZANrRBTXRHZ7ibLF0ps/i6PGg7AvsmCHDm7IRMkU+7WCsm5iaJ6LkzYn8YwnD3WBK28qIC1DmdQBcbKtuItsY/N8sgIRY7h7hrgcjkN9JvlyvYQhaAwXngrJbiPrR6s5ueklcPf+Jmt6JwDN2DvRc9l70cSuJSkDAkAOaDvXINQ+LwHIxBeOTFMKY65IBJJkycVgx89VbVNHJXYLJvs+qDPcRltK0nHMASi+gKJGyqxWSoSLjjOObf4l5sOLWA==' + ], + [ + 'UD3H76V/WmEou44ZZQM4fh1Fq9XR0ExI4rYcDLdDCJ8=', + 'RzUqlWUdhNebjSX2klLro6QpIw+kHDYD', + 'vOiGE8kcK/vNiMaHRIA0I3UHQDi91EeiVKECxZR2o1fN5E+j+6qf68BkNKRC6bFm8iWL4H2a+kD2Vo+20rde6nRhYuv6DWsMokB4HqQG75dPwS2404aHaA4UzoP9PRGgwz8puz0LPnOJfCbRFNSWMQ0jAsv+2cT/zhCH5KtmFdIe3zkpV6biDlI6+955LUddN9MZsIjyQ7ptJMqYci69lLjJiHDc9KsvjGiSrnT/m92mEo4y9r7KHlYWPKnuvqAuUhX33ijVZleZNd49Q39atb7BJOOy6xkh0Aqr8lvqG6QJ+f6MaQUbWzJF4qLSXZhuLjOavy8cGHTjngipmUmbrKv6U48erFVujmeNqYZ+nLo/kaQdPaoeqQvKunxPro8vu8ZFz53NPsP6SkYeiC8PLvj6CfBWr09yXNfbQMTjZwIqUzGdEjPEX4F2chaSeSnkGLTgDFxlCxWez7C0GQedzPQCF4MQSZhI1V8+ujxoHPJQVmS5wFaaQIE9r6dIVt9BO9KNJbNkRH1v3TSlb4wuuwWmknTmBo8UYO4PKl2IJtl0/hzh2hqLX2QUSwzobDL3+8b9fDkf/zKMZSZY4P70Zuo3Bs1lkoj3WR0TImbLx8AoB6NmZto1Ci/ZpzSFC6JXciBK8NN2lcwwuT7v3CwIafKtQQnBhAxA5ciFlO2jgieN2fIeCCbRolqDB4TOK08kVCRdbxQuXJSnwoGr6FrHfA4qnLTh1vGrzb0h438gMH44bGYayGL2Y8XgwcMpJPXp4zTNW+LM96fOfQ3dpk6XGUem0UVkDifspK+t1q6EpHRxbwnpEHC+1uQyn05rehWrfavI1ICOLeFCXN+5Jg==', + 'UetWeNMwmHBTXZOn2nBxv9QXIb9CsK8LXyNqLurOV9GXl/VVuvKwS+P4BX2cITojufyuOTirkqEYtjNNvRvTn4HWrY0imJAO/Zu9o1fa2BFt45hrvddWUCM6g4FGIc7iI6ZfJcqdoPrnNsNulM1DQW9SQ0tV/PJS5wMOZBwBDbMm7jpa+Kt4TJ51z6OtCwSvpdbNg+nE2M8gaaO43YV06apXyipItEAfQV8VAWNsHjo5u/ZLJMYMXaX6digipAChocrs/XvqhBjp3ui0fujW4ScZyPSCGfDgFNEJkXTvtAsPiNJHneGT3CEcb/GfLNOqO9ik4/mRBmxASW7rA2pqjvPuzytQi3Rhso0QZIP6evQ50oldkep2g///Wdsg4ivQyPP9CfMvkXgnsaYW8+H2jli46YVKjesxcfoCv+o7eZyA1lCZZWJ86pApcz+LnlcqteTmzdOnBEchHZZXfbDBG7tXlNqockuguxZYmI6ZrCKa0N9U3Y4Nyhw1fBKTzCksMJdEeTbBZ1+k1PCZiw8I+laDeCcd9UHqNQxVlmHzU6nF2K7awRNp/8zKrHwhQGR/QCtP2RH96qsDZphJIdBkjOhMYICrJcaBzimt0poxxFtGHSZ4eRGy6Qo69VLygK1GWl5hCZryQhiE3UzCzxFgofJajOV1B//4Ai4W1/m/dqvuE49WqST4ISd1ZAGAsw2oelIjm9HO6WvxjWNeQCKOEkF05sUY5YP1WV5HoDgzHEmtY8Qj4N0jlJkS5QmmBbyrP39A+4fPwtCrMMQJgUG2BV4nQVCg+ze1YlRFHH/0WtWELDgPMMXwZhg6vC+EPZo2CF7ts2cMoXgi20hGePrXmYQIAKMEqdvGzIydiFc=' + ], + [ + 'KUL7XrhI/CW/vclJvKiQj5kEKWmuFv0ArqGtsghKK8o=', + 'AJCUVHQfkLT1+CIx6UzZ1PfNwVasOEYo', + '1mvqfaBhaKWFkbiIX/HNXT1hsMWuvEL38JBKjQNiWKjxpT1GymLcB8MrE9AZ6a+71/jgNT22Kg4jD9YPTexPV6lu5ZmbLKjUHPK+RfcBxoZ1prgkq666G5VzBqPI4Z7Nr99P6esZIsm+jiSfz7X268mmasDHfDhHx6QB28FVwxxlHCsO7lnp9PFTgXQf8Dmh2ktnEPphbXat2d7NXGxTX/kgJt+cfPPzQ5QTCzXsVz1KS3HkaM4R50GsEispGWHcYT6MzNtcfhz9LEVepbrF5GDdFbnIJcXpLUxONFC9UGB7nOB5CTQtUjbnCCn+6EL9J5M4FD3lbCuCD02KMir9xe/nPz3WtxJhhAn0x+AZi1ityGuWjmlwLpx79/IOCSRgjSPHpPcUJhXXeMAqpWj1bZvmRN0qvnxYPh6QKdp70au4kz6XsjdFQy0TnMAWNSt3W3omcTeRbYaL/0XEvogzBTH7KbxF7Htv5dnDvvHPY/OcfAz6YlX0M7uMbX95BUy9HBjCpVAqHRqiDcwiYaZiyNie1ZgS/NQssodrK/QB8vhZbwQNQeBGzA2FoI04bUUmuAEzNccSyITL/7jk29FX1EnVnuJUBJGShsGYnxxfBqWE8bqjnicFwI6/wFQ9Nw5oGYKCfGbiFbTHGYeLCt7M7qYYjGvZauBiwgyoUN01B+sN39lzpwyTKtXxggnPFzwM7XRiTK+zsgj3jlxQMzny0CBTPw1vKl83N2Gus6aodREZUyzSNcI+PeiBvLqhgZdjk+u3epkgT46CxwLmZsJ3BT9kNRbmSpi9SQ+wMIuBbBIP27fcCaDagz1tM+JRortEg2DtwRBEid3KTWSTCMA=', + 'QLxtbZrVdtDCMxdyb4pI/Dcapy4HFbmyyeFuz8Qkrt3rxMEt0vn1KZeT2/oEoXNx82FD3lKeqefgN1RyN8NyRcxjqHpNK7p6amhx5HRi/hqTQLbWnfpabUGd/xLGXK74fIgfaSKCfw3ZXvTcIAySi9ASfL48UMb9BqSYyYU97fEllOG+HKcZuyTY5Zt88PxEMu+IGBWAXu2ZjF/ULuIeXk8ni4kSTkJvdnEk4sIiZT/MpGP37Yq6bgzQM51xARJlG3syo2m067HOaQeSs1kbi9AVxY38L/SaYRjS1mAxvV//ZipJacWhXMz/A9Ly2QrzOguzcHONB8scj/28LM4hwZU1EYOzxlj1u4HclRn5EFZIxJorNffEvK9/cDTrDvNp8ceIa3IDiRYpc+14O4w6k9zDP8NqGPMkA7pkGqRCmk/vxh9SipiSLykfB8jNjbXQIFOiVveQmBg4pgSthoroBYdMvi/xyhajctLRONNUDmtxSkosT25AuRnoOO7tXmBuKBt3hQs7TsKlnoVXEFnTzXQ0UYrBGBtvg6S6+307/zzIW/falTHs5wV9dJiuMon6axDQ8VoXLNom/dNpYFqY8vhqBZaUQqNYeDShAHDvkJqJnrJOJcjew1nNXP0EqGdKFFiOHZbYU+7FL5SBPo2TgUTFDSo5LkECi8l5EWKqjGzD27ozTDlbpHIlmYklN0QLKcDeW+3liT9NDxShK3MzphkhtlzsuT4Ins0j9YINH8XuceNQYA3ts+JRrgUiPF2+XpXaJXKGQraKp14OX4LjldC2J5ZFsMae+BizK7XWHzbxBSVaPoBX8rY5tb1Jzte1ax+1Jy5DUguwmCQPcRClf8eaxVUJ/BpxJWfUPNM+' + ], + [ + 'qtIvXIC31AfPk5Cy1Ac1icstcqMxC1nJxtSB5Y2+das=', + '7SXwdo/GPxhzvhlx9JPXuSz5VRhe2QQS', + 'EYzuygKVroDuLMF2VnP2aPOJ4HOCvDfGYDyvHbC8+rkUyMzJQlI8+Ao1NZ+V5SmEpPDLYR8dGi0HaNRDdVZcQUQMxTzjZQKk1oyJpwbfVmwIF2Oo0aAzULsXUZCEoCMm84YSGfzxSS9OMhcMcDyygv0m8PeZwrIjm+E/m1xTeLQxbEUFEIr9bIf4vPhUYWmF0NyRu5wfRKoQmATrVcpL5jztjqkledzz4a+vE6+eC1txsCNh98dglIqYa0PrXPmKgdjs4z/tHV/sMoSOF8NqD38HGqqsBEgkLcpIhgRGGlOfBfYRN8zkS7Mol6Fxc9mTG2FTAeCMg5ywP4wSBMPKFIgeO9YKINzDUh7H2/HTXsA3A/LlYXaglvYL8LnJJ1mZOTHEo0CpnDJsnrNd9x7puk2nt0vX1W3ET+RvJfE7pkDIngXaaNqqy9r16tIPA/DpzQl/UT7bQrkywrNQZAz/R5ms0nhndE4rxSpklyOTeJNo/lURLbIDemUPEwkttCZrl9DOHj9hHbGfrU1FultrO/A4cZ3tVH0KM6n3jH/kUFEio4qk/G+XUSPjKoNE6y03yTOQhh75QvqOUiefa4NDUW3xB2URpXNd5dBTR9GhcPLCy0D/j6Vuu78PxX4VB3zqvLDDS/7tkHySgNU7gCHIQqThNZAJzfDk/323cfX2914ey37QsMxspFo4TtP1sg4kUTPtrzbEtWaV3N2ljeNtFa0FvAcVCxlmmmvFFqBd5fxrX9okGQLhz8z7Yugr2nvNBHf62YnZA17ePTgvTpfDNXClo7URd1hX0fdpxv/qqy1vNcXiXTtmBg4J6mrUs3DWVYbMCP8nne6+P/4aDO68', + 'GL+2odSf0WLIAHGbtoYyIESqqamK8hYgJV2wMHP9Kw0KGQEu7Dl+OEKnTrYcsGs6hTCRTg+Zsn6zODwXG2zElbu3YoXBbpYeO3jNTEKcuT2WlAFh8ZBjrLjovE35db3QghXgR4u3hqaGOrJA49uL1qvA8tEwwMM+N8IKYphiAOHAz5tGOaUwcUoRd++wcYp3si0njE6ZSMd+lT86+AYh5OfhoIgy7B8lzXP2gspfiDDwfMjiY0Y1RBsuKFr+9x227I9GQjNZobMlk8pW2+HTtUVSOYDzIHy8dtxBEXQ/KGUE38VFcvY41t2U8sAd4TIKAIXAL4q3ckkTheYqQ6eCl0vGUTPQPiJl5K1Iy/kOd+eZA/hFwmQK7yXfb8UcYW1dF5MOzViALGTnBBUNmLFVlVtmQv3FB9hv1MYu6sokIkXZyieRbRFOyTvt18bMAVS3WbE3lmrJQ6AeRdoY0yoQavpBi9csIUqVj1DmREPdV0+L0E6GlYL7bFOKKqufd0WPiJEoafQqm1N+Gb5+AdCYrR3xRv3TCgeU8tZZ3QgBFWkAQs/mztTXR7CM+oQZWJPe430nkof7MnsKvtZpn+NmGATRrV6JuFudVzWwKublYVxxt7hJhmAkKiHK8gGHbyQVseV8N4fg/EU9KB7Na21m3eIH0rhKSPvxGZki3NWU+pjtcOfx83bsuUSB2oxkPz2psacvKYOW3sV2f7EhD+Hfnf/X9Jfzow/09qcIEHGdgP81TgQqa+07mznu4tPVIKnBi7dWoSp5hpBPZAS75Mr9y3hlOmauH+ahNntETAhAghB2ZU3ldMwm5eC2nYZPjbN9ZaJmQjHSCutmYvCdlGfQ1I6QmzlnnlNL6dIRa1EizQ==' + ], + [ + '7pcmPztVUxfWeREYDr6jE9s8BSUdMAEQyJYZscwlaqM=', + 'zjuF33nAzjv1w4upCF2gqICTnoP/zEue', + '3XuJI2qjXC0qQyWO02nDfnwlOcV4YWHM6erFTFzSGc+Qn5PcV5chkvn5w8Xme0cQ0Ne+BJhNkAYsfDw2Ich4mZc/6U1+enLciOFedXzeOLy9BkZIiTzNz+w7w1mgkwB0c+HQICHv6rf5V8198pCbqg3vtRDrgdlpFngjXSq9ojWWMB+MQlCSMVFznL3Zd6MTDJ3NA5MhVRKUKvvAICNcQ6RZD66LqOjcYU7Izg1s3JR31rJlkQSYCrRiootG/aOsOyHHPl/ASc9iHzRpvykc56ld5f5ueDTgqm/aT/VKm/zZQ8D+EoEmMT9BRQVEH0+dkWyztHsRIQH615D/zFd3m/Pai6zlc1w2qelFTVmFVAOxfKO0rYS0ti1YjnA+dd8v8yuLX9/a2rGrzYHzR/TandlcThqhMT7UE84V6c7IEPS3rbkRRjWWc76rHy3WdyjZ+VWRm1Ad2uF6JJczCCrDxCGDFvE6+mZ2Kci7ArZeHjxZcRetsMHgH5yYx23PXSwDNndMir+ncgbwrmYIlnXEaij7RQJ/WBaqkDgJLUC7YT/T62OujMtJ/AiYy4PzEs8X7so1kb/uvWvIU3/ZSPf7zIQil/g4oLgUcvBqPwwR1G9u6bYb2X7bDlncf2xBa2Tz5Z7vnchoEzJviDUkyBeIJbAJ5CSfk8/0cH8WtHRh4kuNinQV+RXWq4NRiWlM45DS8pegN08XVP3Sfs7VepAMPizrFSadR78EceWHCCbuvHdmVtzZ0fHr2Cs6PXIqndsBgZVXf9g3PIFLyKbjwkkK+9hDsJLDKbDcX9fB0RsvG2Oc+Fz9vch0URGNZvREtub3Xi+iibj13egp23eip8P5RA==', + 'R/0FBzdyvwH97VvDu2sGbVsgBn5FqU5Gb37F9l6fpsaYxjjHm2+66uxdylyIgkJPuFvOxZaS3kAF8HAOhd4fZgFyvZeFG9X1hiI6Zjbi2E7tdZO08aptIlvXQV/3o4rSQ21hhnSHMIwp+M4AyQ6YoVwdbfQoqC/lOHf0pubkKKI4JP2P1vRAmdxoJAD10fIGwnqVbFl+qBJ+mUjU8EQvP+eR4y96rF9UiZqS/Qy4BMvLXbAorPdRoow+Siv3LgLF/s46/7GCwRM67tVtvgUw0UUCX7nls/UzZXbmAWfvzq7v+gr8wJME8S2wofzRqR4+YyjC/4XC9Ioqfc4L6GChRRWvf4BlMMLQwjfWogI881NDdVzSh8+HkZC0q0OLScZVsOW1KhBjcZqxgocqr4793C4+DJiKCQ6XfR2kfAAGlLetgvG5/2Uv9UFplQg5I4vpfXNdzAsLB66TzMUigY6eN/C4733tGIqcwpF53YGl9h/qNDiopRJh9NsrbkwUc1v5sYmv57+KUcAQp2Iiudesn4CX08HZf0GLp6RGd/l9hio2FMLxMJPBgs6IWms6jdEhoi3wqke8RIVtt/JEt8nyArJ5DNdLPZtra+PH0BYKFs/dpc0Tq5PsQ81Og+GdyUCeSxbsmvX2dHrIxqcsVVHtYyvyYQ3c+wb9ooATgRVWm059mrYQ9dbyPWLu1HfMXuakkthZ5LVt1+fnCWGss/iVUWKpYkRyPQBk2X69dYnGOwYhQbSw3VWaewwPERkMy7rccz+R1B9bDSUw6wdtW5v8prK/J3hp4aFlclu9zDlCSmFk46oKXTRqUKJfgNVBgZklAZEyyiUzMQVUIHVTMz9hPOJNxwhmOvrdhxx7Kc2JmAs=' + ], + [ + '5ISz8Uerb73Hy4NjihQ+9g3p6evslpW7MZz98SQAwjw=', + 'XTrngibxPY/kaaZEHrqhygxp71j3T2jP', + 'xudclVqxESmkQXreGL3iFNrzHDNzIRipBZ8zKtnux3IQAS5c5haXLGnXmc8ubcuf1c6RNcLp0QQFRfA4rztMsoTwwD1zwm3GfzOFMT0MJzIDqfdycjz8dPhYgJCLrZV2SbD8stZLr1j8lau00szmyr1NTHSAnl6HYpGaQD9uNgjB3/VcS+6Ti8r8FnDawSuejO0oGWFnmLcidMPYPvl9PZdulj4c0IrlnxagA1EAjdPaXYkAM/Zcs/jtbmDrdrYAce46wNG+a/r/7mcNd8eWI12tyCYLEOkBV6Ac6NjFvIzUJRLzEveGQRtEzeurmFeY6yM6I4VXSS02SCT41xG+7Qou3NC0mlPIn+75Na33uo++qk5Kdky6xpofwyXzW7CdHxEqyMLn1rv1BKtaiwTgrOGoAWJgxMf2DkhQVqTWI3X0nLYcksY76E1IDzpdkeKGBms/FJdwPBTMA6Kx8o3BRikBjO7eWZf18OuqAQUvoiukAtd/pQTRbvsLMY8+2fAw37UdE9z86j1Z6TPkfCrsJipDCdmX8hNRiqB8SEDQ2miXorwZu4Eb4wWecgVRZQcS4k5Nyr4dCNKrjkbPEBHXLIp3/0fydyQfMwlaCaqW6wdQz751H4dw1NiMAte173GKQ6QLFjRSFPL3g0kYWpcmAdJncfnQoG46z204AQVpAY0ORVBx6oHS9+BT22MVkqkd2jyqg2EbnDdRHBPJuLlNdG6vrKaKpt63vNxVCT4ycOC71COmSYjoabPHx17vaIlB4macxPEUz+mfiA1sqj5mj6t+vUvOdVLmaKsqGqCOC5gzmW7mzkaKGguDje8QmTnCKWJzasWBVxr/8aldHHfcJ5o=', + '0GSZC5eOB799Cp3IvzDSX6noRQDTOVLhd2IU+gD92Zi8Rcd9quoRRSJ6SshOoSozp3gr/XRlMr6crRyq+Uu7yLaui7WAxmjvo+lPoMULpKjPt5xAGU8E7krT2IzhBDfF+PoRMN23Z9+yeG4PFSHtYVpcQEbL0xtaAvy6c2to+AKlB2yg0R51JtH9Cdf9ELAr7mKd+0cshHKRBVZqPJREkK+cQvNa8cNKz3/wdbE/cwFS+V3zseYzbFOVTnnDtVp+P8crC0tLDGN4uen0hzNRlE1XCCht6j/2Nr2s+i9xsP9Ap9eg+DQzBYJHShyOR5G/FYLX3touylD9kJuzZPJZoR7s12LHr92kK5J6Nyj9+Whzzo/Mi0ue5OkenDnM6c6CE3DUQPIlJcg21B+atCu9EvbS03p3h19Hklw1E6HGcm2Kt2ZmFHTNViiR5oFdtlSEN+jMfL0Wf5YC1MhI3O9x0/EwGJ/uco3+oAMDXUKBF6kaph8IiWLdBQgfZqin6yk6VKTkwSZP86qaeoUfjBN655sKWJW03XteWOGfTaso09Sjmi6G2MZcMLJCLXdYfEMOBjaiJzqzQEzRLsh+4a1BUIX6kfTkEqiUsmhl4F5k4ePHYo0GDgZUdwgbNmGL8gZVzTSc3Hmsx5sUEDRk5lheXU1G8iIBmPXjXL1w67C+As1w79xfxgiHKeygWuDrAl9QVjZLeAPSsPFuQmjLRCENIDLxoZLLtBD5EGvCy1cXD2WCcmM67pJrW5ED5w3cl0D0NLfVEIW+sW4QqzvE8FiUa9TL2mj66Il09wYpifpiNmk4WXblRRXOCSAJm89Z1uwBNo4YVTiSv6wBbZaxwobuUc8xYrYbK0KJ0qC7spQLSydo' + ], + [ + '4WBv5LFEh+kG5MPe2wl40aii3nP96dtPzTZi+ALRpdg=', + 'uOg5RnivvDZpFMFMyG/gCj5lTPoSRKCE', + 'lOHiXciK8rbOHq5UNWFkdxSnml0cviQQglYDJu4WTrJBMXqXZcRSdqgav/P29JFp6m47WYjBKNtJ6ViGCxv6aMGpd6CZ/AdHyyWFxnMJgYPUjRYPX8DbS8SLRPiHDI8jE+SOPsu8388KPae+v4tbO72EdvaEuXi4B1olkp82OEMDask1oTcLT4k+2QeSvQ2otr3ivRn2muRjfE/vGhCisu9v93TpqRCcaL08uQdC4BkcbfuNsgitZs/8OBSa7OoXf1z77zbaJFoooU2kDCbnpCnkL5VPWumilNCyYzrA+hWGFEa1QriRTAZJd5KQzxvYv3aZpEn7aPpGK20aEKNywSq9fQS2KTMs3TFQCPE/tyL/dlUjGQfo5EXTRH5eoKjji35vwridFIgFdMabaYLLjT3/X+CARAtNIiRF6hKfTQATMxMfTwr342P6i5ZX1mNhnaPR2IrST7eXcKlBYRVgUeHOKvQCg1PgQOzW+l7ipwGAWbXM+dbd2AHwR4pC1kkIFXUOo4PagvoDlpch0RoVNWZPJgZt9Y/dU5QM4nHtxWiIJpl70mgRjcZRs0nwOWAhtjp8le/23JDe9gLI5liPj/tNYuugKX/NxV67tMTY4CVJ7cfxmdp9Lg2lM7s0nMI2DvWuo2kWt56XWxiJC+VPA++9E2oP0cmEstnz65VC+gn1sgxpaSElzQdAGGXVN9Qhsb+uIdLgStZlQvpu2s2W4mtWAOrnsIvUcO0sS7UyHXzS8ZcII/ADwdxdjSwJyOj+JnVYO0uOrIgE/TfOEhRbh5NHQIThTuR34lMmTklr0k0M4KCwjFxq9gxbi145HiUYg+3b+MChXbVVhoRoubqTY0b8', + 'reyLrOWU95eWhZgTfGbUZBrAmScB3OGvL3mVMNQ2GIieiRb7ZNyZHZSGZTXzs7ltBALivc/y4HsCmxOD0unOWyKKJigihSOvB1kuZSVbih1jq4SpxR+95a41mxf10cz176l75xk2SXz5Doh6uYMmC3anl3VwdPEK1swlfJu/dCO9TFgXBms0lTAVHvEBluAs95RVBauZhv3JWVkWbuHPbqkbBP0Bwy7KV3sk8lbx7rVYjpa/7K4CB8k3f5lF466PxWRbh4O/1b2Uy6OqCPx8IP6ztzx9bfEUP3t9GAoftu7/cEeFhG3B1/FvgeED+XkrDR9Mx5OzoVoIbswuuwH2ffr/PgVn/Rrd7avfWYLolYXQIPotEEV0dNHCD2HCsvxh8cDD41bcV5kB7bRfBelwQCi+HPTW56Y3m7x9hbhTwTBCgLU30JHwqh7g/yit3CbapH6SOhInxjMKGKD9J/olH4l9SneXFfWbnOImheOkLBFLCHqIOyHNioN51q9PBxIT+482MtCpHTtV6cHQI+QKxrGZvPLsXedzHSJ1mXguMLMz6poHKPFmcJGwQZib35luDdgojeFyJEJv3kTPfe/VtFmWRG2NViNdmtFETGwkok+jRIXqDD9gFIQTw3hS8VZYQStHzmXuRSoJY1dW2y04uHxbt9Ds/33qIlyLnRTj+1xJRFb3t7ogJEdb84Kx9C0hWQ0IDMrRG/8nFe1YgdsZSZcqiCqI78JH3r1tiXSRFrC1X3sBFBAcZ+XBRxDbRVRijvt7QrCGUV1Y34ssVxM5gscPlpr7k3KLalrmaxj8bnZSRzQkwsr+KYRtOUIq8q7X+rDZuY7Q4Z1N71ey8EDfxuS3oB6cFimMvhe7gREHOwwr4g==' + ], + [ + 'xaLQxmzHsulrnSCpbDLuBblI4xDiFT4Gx4K/cTdztwo=', + 'Mr5796wxX4yXZNFBmATvVibE/GFKLm+H', + 'B+NGs5rcG44qn5VCjqaU96SYhA/auF9+jOgLwH6amwO0Pk5LREN0UgObUmZgS7WsVXh697fgEHpSocvyNpI5s1NaHZVXwodO+zikEcDVzuTbMvWAmbuT942Y3ln2VnhHhUMibCW8TACASmsjHUbjkZuW50zxbWDrzDrqP5qZN5auP5LV4NS+uVn+ldkGvIuaCQtT4veoJAKe87A/90JBtWHrdyZs1IvMH724cfQmPgd9g1lLKQhwTcfy0Bc7gtx4E+5CiySreotVJt4JLFhmbQ9y0Ylk50z0anRTu887luE6Pz1gdLU2JPmE5tWS9X01rNWAJwhzRjg81O3yle+LWFVyo2Sd2V7O/c4J+rJRnu/hZLjylUPqjoeoghmRpkOgcOwRxB3KS2SAtJsblnszQByjI37+yuSSn9qL/fxHmllxGmY7PbDsD6BtTkljclfndQG3SqFGRX3a0n6p7lr6Uwj0xFB1hj7lihK2wKxu9N5xmeQJTofl37ok8MdSztJJmORx/7ditfX1Fk76rKt42yy5u+5csMWLUFW2cdavlabUhNRcWAuxj9q25GnRAAjnoj18XKRYnugCoBbkxszpxs9uRXh967lcBn05063CenCOVGFfh/YTgEkRvzZOdbvOrkZa/A5949hGcNb//RmvGwBfonshhMd1078Op8MCUJUZLdmIGFOiNJxgFKnI9wl45ouorGNfiAclOUTDik4TkJhqTZGg4MFUIQq39Rm2qRwr5PhA5AKa+WLWNwzF5lee3A5CfZR6tWezKkxro1JWNIDjeYt1V2POkvD+KeJlbjdajzoTEbx2wEtwZbYCLylAi8AcKqmjcJ/pcgE/hjzZmo6LDg==', + 'Y3j6hgEaIZWuM0SgTbpzFGCC27eqstuTzWqv+zBa6SCvEEDljehNIN0OC7JIx6w2swXCNensAqK8BJI9YMpNKf9RArGeO2Nupt11fxF5GTZL8IJRnrYi+n9/Vna03L9MAClcLhdrluLqw3NSk9Cjcz12tL0OjeB0bfcmos79EiEMXNXi26DfbtzIX/muj5CqZ9KWIXamy5/vm65yEZyth3TbjwM5An7eM5sU47qdPy8n5ab+UySKlWEFmPbd0sADWxQPvEKYsMoQnwJ7qJIc0NwKcO3N6xNkvlxCniwYR3PpK/xAWgHFYNdaw13ftUnFeUqK+Y0XSBnUd/jsQMNipmhXRUIsCZaAkieQyTw875P/8zNVRhcDoFbH0Ar/09IAdZSl1cVhFZgGSaivFkgkDvrYyOzqlhGHjX2UT3hOzrL+PvYPVpDUcIRsY7W7cZddJguXMJA2xhNzWImhSPppfZXJP1sIHD3cp6w9wz6nqjTIh1b58frey+zVNUgs0YJYeJCkdaIOotHLaqQjOiTgc+4EU6UddsQHhPlR/vc+hI1ay1Fj4RkaP/89uN72+5svh3L2+iYZ+D9Y0NONzQw2MTamdMQdzDmatVxrzxyNh9A3AEu50NqZtyyHz8ZakJXOBJSTFgxWwLQ9PJrdmp2Nr7hqxm8BLaVqzTWebWPn49qyzZ8S0ktv+iO12ozxvkJ56rkqIygPhSqky4o5P47O2eGhQaEv7qWnawGpTGWccad1+s1NzHUmqyXM9FblEU27k8Am6f/k9C3BebR1LI9Q0z5uOhXFm4RHMM9KtKiL3OIuCbqbkRJyKDYszj3rZFniuE4EMkMET+3tPzd2tb87ebKJjp79aVQJyVvesDmgWVPe3vs=' + ], + [ + '4B6hItuGX7vN1F/TE3g1utJrDRGO9QREZ5qbQMu7BpY=', + 'Yoo2g3bzj/QUNPRs5HoAqNO+SErN+KSA', + 'OtBWXgor014awQxYcPCwkpO9eu5XYXZLc0YaeO38HoypDCuF9l3hyfB0KbDd1u+bPXCbnrhLFBXe1LzfEUoi8VovMlWhLmXU7BgZToqQvA4dA33THE4WophVLRHuJ9cVwGN4EA9q19FXX9z22nKbGnyFflX2E8+R7e83ep0pp6jbzjgY5yDF2spUD/ENKedIufcAlMQ+BkI2n38IDXGlxKjRLd0aOebyiy+rV6dtKZa2HWRefqpGr4MnLogKk4gYkY0YjGwysmxYPNBX5CbQnvW1/7l3PqE+3YkkFUqj6lLfTvlzx4cysuOdo7Rrj52giS6CuDDSUtpgQpN5avS4LIVWhiMN02Y4Z81FgVqYABgqN9E+OceX39TBIrZaH/4dA7Vkx2oXvf8/qFZXksskO1gQ9uAOuer87PrDaCDO78eFS+fn96KwpFrO2IBzJ/PAkuI+3jfSufoe6v/9wja/nSBZXbr6bxcknisptKA6eSsbXjEODlDSByQ3o+MECzfUk0iHaGUkNEmb1mxrVY15RQCB7Eul6DTI/FbMdevkZfhmQS49pHq0RcbFQe5cvE7PALyeUAn2xg04pjatcehrYSmlmtX6AsXN1HKnbCG8vXWlhnNAgEgcbXLrcThbOiq+SL8RSYY48usduNadNpY1IBOtcmx/W4h+MUKZoBI9ffCFEmND9dTQ/IMdiACP4ktQAHN+3KF5jmXrLGvasDeh3DgCu/2rohP5FObdRTtyeg89Jb7M/dmronPjx/fcGv/ZVJgUbkOTwQwML4h0OaoeGA7jw6RxODSgeai+ospn6q3tAmzFPFyFP1gyvb89/+DbDJp7fGD66X6Lz9C+OSDX2Ng1C2s=', + 'OP7X20zxAA7Aa2um7AmBaYZxMTGojKH/8k/QY+nfMo/oeqnvGkeqRU31KUrnMKXmwohY+bwM/bYIPWRqQ9JmWAB5c2rvt1x/iQfElFxbWazCTCSHana59uEVyCoGOp5n7mUjXEcLNf2iF6PUwyipEXPNWH8CqGH/zwZxAvYFU6xbS+MkIEnVPCYGK3jxOi+BlE0bzzLmCzBBWe1F3joWFDX91TXeMGw4ZAlwNZnaWqc4UUD72dyCfzvmajnVLaCfm9TcJq6hJi/PnS0/ZB+Wqd/VWVORmpPwYCp/UQKdMO6ziKF7LqYeErYFyV1Ggq8gY4xSePx+x/ylXv+tlGPYhzmlixSmxwWAEyoyV4IiWUXclo19e26fSODP6RPSHdoducJ1qHih9ke41ZFV87uf1rHjALHvLx4CVm1LbNmCZ+bqevoy/NqWjQ0p+ISShdKpMvd6BzQzTe8GXJ7o0ExGkWC08voD/NvBTaKAH7mh15dp1D/43uWVNbJms3k8NJK9RN3U0sJ5VpWD0JQgjjI620iAS7Yt5m2wQfZJthtVT5Wn0PbuSy3C55WnVk3SAjljHibiSWrOzladToma0AScfh2ROWmiLx8NqI0UpTu2RfVSw1tOxXaiuRLTsov3tH1AkZN8F3A9FGuynuN0RtSGmLZ4nagNwAwelsChkRgGA2wI6WEw3h1uDEGBwaebYhiXeNOeuev/ag7lyWU1Q5ZCXNOmWfQPl6np/tCwqF7CJfYi/wh9ZvAAz3TdrCFTzR1PJapgBiXre/SdsrcNlJiTjakZ0Wcribfc2Lz2Wou7zzt5GNoPAE4HI7TwWMguXC0w8GkAbBW2kB0mcnIPz4qDe1tKGWaq6+hnyqE4a7cgSRzBabJi' + ], + [ + 'jetNOesSNrU7CJYN8P4ZJcdNGRQbdEVcVsop9tRrxIU=', + '8EIIwJLC9ngM/c8OR8k2ChKO6I446Rsv', + 'Gkx+l2N0uSNHmEpIDau4dfQkli+9bMNSrTV1tSfbZrDKGPBLIY0En+6NyQpfDtD4MFNCV2UX3NzTIhapG0rWEfsuf4SDX4Zcy+snAn9CYm3gAJMuMA8tb05hb9T5/57+aT2xS9qAv0iz2pJVvL2wb8EjMxgCo9HeIdUHHs66g8A0pw0MuUYLWu95YWWlNE5DVKmhfhiZvB6bNNMN/tQIaPCZ3dvuQA+4kZCTdqJLZ8adt7S/ZLvUnkj0jyWhVzysr8lU18ml6kqyw7JMCwPOQOZr6hLY02DYutGjtbvKJFEJOTuPX6QONGGBzOIjrRSI3KBR9NI4DcpCiMNMfPer/0NPEUi5tFM/iAfjYPC9CCulHjsY3ubWU7oUucQwsSW1cNLOVgCoNWi1DfIxxwmjEt1fKXr6e8/NZ5tXe7aQca6tppZ4utv8Yi4nNoxX+aq3a/h/qHW+0SRnySFMJbO3RSR2MZcEppkRyexgk1pj40BhMitGZrfu/uXJGZLejYqOJnlYo5b+QBFD7vDlrNVc4UB2HNaoyEqEoK3p0O9ZFaCPReaOn28hmWtatz+GfdKlPnXQx3tcWBh2q8jm4C4XrmeCKtlrLlFhnRINa/GPOdN4ldUmmdSuoiYAj4VdrMqgTnn6mVG9S5LspDtwOOLxnRKiucPAkfn6xbkOMCZ7s4wmk+mI2e3d0mgYebBxV9LVkefLJsQ+ck7AMcw2OrlSBM+ROFVUBYUynN9qAS0ZTHUyli3d4U4fRaKaJ4MGEAA1tQQpgfTvAu3yeaW6JZiXXUKphgeUDr23RSIabAvr+ivmSxqN+Y6NHaKn9jSb2fPs8amx2YY7I3PMKSDxJQJUAwrEq6QG', + 'Tz+JpWAsR6ZnAcpqeqYMesr59/s5IJlnr9N35CgdVY2bZ97SXbW0vAao5LFJxfBOy6p9W/h1f2+eDihBb5Fe4Zh6jqvC3QVVU41QsFty4Vi7kevanjVALbL5cmfUBRwcodSF4siMy75lAlFGpCV29IWlWeBD4xuvNMWd/382EP+dbieQcUk410R2EwMZ+rNFtDO0dHjTwraoSIfFpPehewGVgboC3QivnHM7sZ7x1nXhykRuq1fsDRRewliMemZogIEobJqNVpa8iwZPmymt8stmeO7hrd9/goVy8IgLAMWgkbTamGxtOsut70iUwPzIB33TOQfyzrwdQYFsPSoXFRpKMF5siKerzFQutWf5vS3yHUVpYJGzaGQkIifoZT0kwpBlcYXGu8gti3sZUTt/QfSgGVfGAQYRxjRj6pgIWXSV3CRWk2Z7mazssQssAa/5uIfY0hn4w2euwT4/qenAZzYEVbMM06vP18X5J8ogOfqOMhx0UewDhemRnn1HRAnKKXpGvqWudqLJiUBZLq3SwY6nIBJ0ZC9cwvose0Bhyx9VbImu+B1NqQfHAQd2XsGBvEbdAY9nHDlQ99ok06QsslTK0in/p9yUZOKJ8vDk0ewCOG3TUd1PqZoynU7hHP7bao7OaDrHQ9Ob2+ULdQEj5iPHUuiIkVNlF+gpD+B6lVfiZNtB5LCtZy23g0/2sqR9SZDEqo95AFwgKJtPX26F7lJyatvV3kV3tONe8oko3e9X9Rp5m/Y5jkUwFghXyZJKuNQX5yAh8TIoVxeup/EFUxD0qKa/dcGxL1D0RQ3qB8BB93DhD/HiBJL96V2LHwIZwSOippwYbAqpDNddjAcZrXI4NvQ9erHH+E8R9AhARre9uKWzKw==' + ], + [ + 'FGtT5sG1x9e4+4riOY4xeWOm9s300b1bqg1DOd/+vN8=', + '5VZgUkTu+BXO0brpu7CoqEzIkr7d82ke', + 'isFnnOWXrper3sQcJpGAVGZN8XQtvsHrGacFhPNaQoq+UiHWouXT6csKnliBCLkDRZo+Xw725yxe24tMwhJwHq06OGc0cJGkZKd/xBQLnJagvDQliMTq6aPXnTnOF/62P3aK8YYZfKhD6Ooy4cLUOc9+skQL9RowJMjjTrDRGb6xDwaM/2okQK3ahCc6LwR0m+F0SDNDkL/DPl8tVNApRv8XOyYUktiZsVC+YC04jurcfkNSSeEVjO8G7ziB9hJKF5i4IMpdyor8ZZvW+LK60Q5WQEHZAcgyRMGl1+TZUCTMvVa+7iWwiGer47/Cny7Q5TtPHdGWPlxMFFkVlZjP5kZjbWr5ynDsIHIlYFhmAuK0ckPh7hzPEWQK4JwhqDlb0U8Hpclc+cpTRfr8W7iXk9jsydhcGFzcOS1ACz+FB0WbIa2RM2cnvHrJodxmKTWvXjhJP5z/HbN2RGp2CSUDO+/NHV1pvjBKmXBlXhJ4S6Rpuox1Z8HtFTXyZ+3sdpFSHRg6gt6UtBNaCt9UfhjiuVvcgEqmaq662NhAY6GHiCEn/3sux+V2+tXU19jKIHuSiU1V7IqLtAOwzPCvrs7RVsXsw4zhwChOC3oZ8m3k3r6A8hkRjxojgt//+Svd19v04qec7yj/8DpMPzxQ0E/5CujSQ+5jxnf9qkgNlNjIzGvBgbP8KSV0hTg9lkdB5DlGJx7s4cpu+kL2/1cetcj7C+9pOdHOHJ7xVyjS7YDuvsNs+qifzE/V9nrNGn2PgoiCKuZT1pLZft3muMymE9lDjLCNE8/VtwJ/tUQkgLTlHW26fRCPoZT+Mb55xorrp2Tbzc3uLFk3SqZvyttJLw872Qh5ez4VmA==', + 'n9Z8p3D3oAQOB0VunOJwwDOD3/8JtiH3+9XdW0Jj6TuU6/41gStl4kkOKFlEGHyI0wcz+Q90FUdzkW9DZUY8mvNQPEB9i0v/i9+rGElxolCsTWQ2JgiWrlK1gkmR+/xCOUz8+5RQmloc/1Up3upCKKRPxwzzczE5blW98B2nMgUqLUD5HMKW4+IJMXvI/FWk5Zai5QoAZ/hJDiAH4D5R7SCZWMSVFiuI/4zwI60dROvaNRYdFyHWMbv2OPp0chFuGdmkpJ/kZxuXMowHud1fnoK689IlJAjh0Au0L7Lewl0anUWbzcjflcJzxLDoCkZYIhFsno4uxcSTU3eyJyybUH5huO8HdebwYf91N1UmkHssJT47JA59FAPRfhn9XOYAc1KkzAzvryIz2EQkQs3AOKjJwWA2/uNAH04zklYpoKDmfHLy4z/FIAzMNwysAojVj0kWMsuyrz8P4R5axHUk32dAAo2mVkUgL13F1Pk/PuPLMsdx5pAcvd6hsHD+eZN+s4ZVYENONysvlyatEGjVs/M8EJNmgpSoozn9jEaSaXO+/Vpi4SlKjrnzxzNAoPbnbMjKK2NKMapR+br0D/Xhf2l9QPDpnJie0DmSHJvp8pFQkPukp+5ae24OkFbBk1Z7481n2sYqt2fWYUl7eu+L9OtOOTR91njhFFg2yzrJ/9v9VdKz/Aqwg6EgCZC5arWEhTsmyCCsvp/r/+x4JInq8Ngr5kjam2R0kBYMYuBO6OGfFf6rr0yTrq2YGVJyOho30XZgVEsJZXCLxkdjzv4WV8Cqm4tsZmVfEgoVxV/GEOgvDOYluQBOOBUZpKjmAZCzOTdAa0908jG4vIpA5goCVjMYfYM7nLjqVSrC0pWMUzr9qlmiPhU=' + ], + [ + 'ZUtYrNRaQ6fpmsuy20FiWyOrBLresjemKvi2y6UyrQ4=', + 'ev4I0k7dgzquvCXAyhUsNoNUp/PyB+Wj', + '3Yoy4qGBCelpL5Cw0CagrotdbbKoZgwV0ck5qV/l9tjiYia8ZJQl69MXet1lNP/DTPvmm4ZQntIUGCTX57GyckxIva44kNsW+fjq73Zf+z/qeeBM6dHoaBKgx9zyAgw/ENznyr+ehgpjES+RXHtNy1qYqyI4QvMNZBSSx3et3N97ur5yUdK6aidZ7ng4Z8da499M8dx+CJhna4y7r8Bx+gmG0VHZ48rMTe5SH3Dw0kmt5a3goAMjpxfju0uiXMfPwiKMRYChhsTlm/gBiKm5GWlM4/Q38rCB00VX6raGm0HpNomakEtRzLoU6IdTADVIhg6KS6bwVEnnEgT1AgiQdMIqCf9nXoDwpzOXAUmFAGM7E+imp4S20Yc59r5jcZxKvlnC5x5edZ6qpPbSKwrRDFbyT1EbWB+v45/9z9so43iws0wspnzsFPPtFRNl/iq77rJ/Sg0gC3ff0Y5yz/ZBKfHHdllNhxCeqdHBjVopO12k7xc1z8KjhHqTTGVQ1Yc2AFwf8VaOeHsWlV/v424v3CWBIFxAhZ/5wSDQfWUlV1In+RxP3u1o3VaCvxHsQ8wK/KdoCFUtcSxz1WWbMhcbJ0h+v5+OuGwK0024ctKMaGBoeEc6z0j2Vw+MYv/CbWH7Ily5qp6vWvKFQ4C8HHdOAszAdsikgFTL63EOw2yWcZHkNHPe8A6bsCiomEaQ15JeFT2nyK+Dnry8CL+YdEbUjivN/hbKHV3EfidQFB5z4PcB+rzf0mTk3VqJ92Dy4LbZeje/x+No/ocGepsaI3rhfChHZm7r8kuGoiGIyMJLAR5l1DBkzAvtaWBG6YeJs5E9N/Nbcfw/S6asdICgHEMYoYYAUJK6hlY=', + 'cB7Zuq04TnNdPh0PVZIwtICWZZZ45hBetaocHEoxUHMxfG21QN4jG2AVNw3U3AMPj5ds7j1eZlEXbNcKyRdQpFWmnlAHQroo7wx/Y0nrISTtmqDszK47o6IRsPrJJn+pjnY4kbPKTuxlYcODqhKe6eYX4cFwwa32iNym7Erp5mt5TdUUWvDwSDyK9vT3d5bXosbzSy+OZXuupTeOzQsONWIzlMivXenkAE5gVRxwd02e3URqxgsfiw2JkncLBLmQnWMqYqPZcwJs+/bexMBPB/fl+h4lKGs6+2zIPywyb248PjxPqFGg4eU2jCmIbA+IToPJ3lPyG18tk+TBMfE/uLGsMRryFL1GYHQ72cow1pHVnL24yzDm9QH/4PNSmfVkGsYjsk14+AHJOVc3aM4cjI0aqU7d+ekFyHmGLrZZw0W8hMdVNqXCv9xWU0R+SPub6nM9TyWWsN2OeNxxYfQwcMqH0SJ0XWIlpS5dbDOnu2pgHgXKGlM3A6NtIHdIcjw0l6ykMhQ3IKmNZnq1ayR/iKcZnvrlcFCNJP6FLEjx/SKP5bN6r1VvZKErPL/g9MLg4ejpGsYMeKps75neYoWPWErUQoGirTJIeffbfT6pugYdSvmkrqpB/DLUxYfKClFeq/UYrElN821TFet1n3rc2ywFD4/z8a6g6DZlSRhjId2x/CfWNOyD657Rpj6+OgBV7kme9RRyguyRQeUR6j1/2b6Ot8EimBStrescKbMJ4trTPokkeq41d33412hpjP4lh3m1LKAsrZR2e9SROQ0sbaL8rhRKNYo/eIPn6PxGp7C3TP2mOSmZRPdmU79hBT/Mq1CgUvpkQ9H2/kSljeCbBPF5wcKfj9zbiWvK/zdN1SDmC6jxDxU+' + ], + [ + '61Xrr/Cj861oh/2FtA55W4CTdb1wMtZZjCO73mFHm4s=', + '8NkgSOGlcCLCVaG4yLGt6HZOHeWjM+Sf', + 'to/lYqOtjNj75ZwxGxgpgnpL88bLf7Z1v+7QTwFhk4gYenglCkyvqgvHHpHjZH3nhLyhUEefUEFhd75P+4JaSB4NEIe7LdhXT/DvCUdojX5N0DPER02n6GHqCeXbGtCEcdGgU84KVTZ+X//rwh+ElUBCj/DGDZGkUtIb6M/7Uc0KibLY9xr6EX8RjfGzHdo0PTHiXuYTF6ZtzcLU9SzmO29mm7JW3SU69afwrIfoNcyaTXamiuGvXqSKbVyZvTzloXAHC7HCYcO6OLr+tFmyUX4sT5IApS1z2fps0N9tapNpgjvSUwIUuuLbi13SuMo4yFiM1PZ0Mr1fnBXmzlE0DaRdjuQkDMBRF4Skr1p40CpiK+P2bvdiLpPELAux/1vRqSgEbL1xSn9gRiyKk/A01P7AVVPNx9ZO+f+n+7StoRtHSITnS8fENkCQo1sOyrRsi2UHvIRv2MCHnJyj1CxyFhR+YO3OYeVn+U81JApY7vxzN7aQbjOjQQ8u1wsF//8PngHnmxKVBjvjdlVDMR1WCWqsKOdk+TLWdNI63gtoMw/kZxpiaB/Rip3S2eJHZcx2UwC65/iuR2jianfUeX2dLPuHMtBbRLGA3a3zXM349S2HipEpCTHsGXq5L0z8VoDDJhqpx6UtJroAvxJZZzu6DmjY0JLiFyfHiOCVwYurIP3wUO2BcJVD015+pirpSwcLMiJbV9cxyrzzkOapKpe+HODsy7sH2MOmhUYgLhDJbchU/if9SXpG9wvKpbv3eLoiz0hT/UyfmEieEEQvpW7vavyHhl+TDPb6Rh2IF5aOV04HxDadOnYQg+BAe3LVXy9/xQscrvvQLtBj7gGEbnIi2Edrb2u/lFHm', + 'V2dzq9BZJRVnUkA9NJoQiBHLLbPX7aZ+OxvR+VsBliX4Itzj6/yVewYBvuNSnqEBiz2bOXIalXO2veLOUe/nrswR+N/M09Wxeuv1NAr8O9kvx2GpplfiE/+eafG1IcVhvEQzQ/HHrzNAXg1Rhb14uc5dsFeLEZVodf1rJ1+oJvupwUPX9bKlBHmfDJNXFhtoqk0NjWnuGIrgHnPw5+ddAWI4/A9JJfMrc6BpS6lMN8JNuwuzy9TKFn6OvxHw7iWPmC/3W1WjLq23cJralruWwbfU2mKLUM6M3yOea+5mGI8hYC34LLqKZDBq8pPgcagWKBzxtG6iRAYlZDcm1zvx6EJ6UEQSXTmqNiWwwKqEDtbD8qjjYWfCOL3ZcQkyYDZMoJBC1EAiA/iRj+VQhKWXhrfNlgIXC1JckCwmTq2NmuGg9RB9Cr2pLy3d11G+QtgDFXG/fcM3VX/PU1F+vQtq32iTgQ2PgE/DcahCNKKwivaywWnYb7PoLInCTRrwsQpmZuE9D7e37UjMXV2P2YsE2C1F4kaCij7k1BsZjzqKyj28gCysS7StG7gdw/2LrxeJZuyH35Y5FWhMZpfiY20RaeN/J0uAJRk5swu4nAfz2z/rQrdbMcTB3X1oD0NEx/ZX2Ybx8PFfM9v6ApWq7U4Dm6wpp3WvXWNijID75eFzn2lKH31ZrBto89JtKQVHSl6xK4BIS2CFI3LgeCo8bQS+Cp2IqQyRF1d1+zUFpdSo00vV9iBtA5Hn/jNO8XvIn96VEGtDu8mDB3POUD6gmyAEJVG7bLEMGoLF17Rwwoi2g33NL1sXlm2cbQ+HOM62ug12qU4R61i4l6naea9tY+Vlv8OMoh+Ud2kBsSeBmy1CExo/ac/NMyVcAg==' + ], + [ + 'B0q3TlhyAXS3J0jztvG6kUXczGKKwRuSmjZX0OxIwzo=', + 'T9a1zVWyCcYCd6fk+KlZdbKZ1bHs2sYy', + 'rjKzorCG4FX9vdoH7RUISaKjvIJiwBft75zaNRvyEqFEUEDjYlSb0yaXeKNboX1Csf2qH02lcoc2bK10xOyGpgAFzaz5Ntzi/+t83JFpwupaR0C0gCmbQYlVG40TrnVszD6lMNLcmp2JRpP0amh/oZ8Y+3qpyKkPBvskszfwKm0GDZcMqi9/ffYj55/kFLix8wnA3x9cgtCNMjW1GwrfBFd8za6tLDydh3IuCmdPB+EZgPNn1eWl4QtTCi4x3UzBInTiJalpNHP/MnDb0Jk/ynIe9Zu2OQEeEKrjHndNPQtaN+4snIrnghmbRT+WrKMpSgq+YDe0l4/QLh9zQzQrPAHbwuaODI79Txam21RGwtW6R9adGguN/9A2T6SBIcSNRSpiwLifJdps6IrRr7leHPsqtzhdnqgQXWTD/mJ0ivnBD6ygfR4+KPulZiP8ctsOWsMkhuBZu4nn6qYCasl1BOkwbOLdgbFVx3ByLfZkcQCUZ8f4u9VkAS3lLCQ3y7+Zm+2O9N6SdFdHxEKbMhx/c9KHvLST84BkPP2QuQY6Q/OMu5cIhn9hlZOga/856F+GX+rtcKDNMnPNjPeyD8u7tDVKGSMcD1iyIiH+kvBeWeQBUeUmKlp2yr8Di2FVpSeqelSg4RFrKaDm8rWCAFjrT58B0g4o/jSFzkFYwWp9eG6l/YlT6sO2NmEo34FMOmq9oBM+QPWWGwrd3aIosn/D2pLeb/Rx5+mtXlUquHGEN+4VVB+AnwYEO6dRgAmx0offyfVrDaNdwpvg55Z1cxoQM+L1nrYV+XHvDSV4SZfEP86BoEZi89tPTTURkQjxmiEx/bUuepdHP4GymNfF6nuKbd9a0XJI1xg9+Q==', + 'h74BBobl+Bsp6h6xY5k6bHJj7qaY34RCl1bokKAdEWSmR7dCuTVtvZzt8RvCHmyZ+zW24XCf1I0evzKosaa7173U5q+cDcSXazR+Vx5xF0jXA92+F7KDJ8J9P7FtHvECaiHUCkc9a7qenBaQ5EBU8J0XWwkkyQXk7vabUxg/Pe20uPRkUhL+yrGJFG2vmzpsLMRkwHvrM06X1RezZH853TRT3VYUDFHNI1HsriML3gDPX9Rb/FQF4aE6wRBu5ndbukB9qEPCEYeYQFY1aFrfjs6E7YplZQ8LwleVIsunwFrtWyQJ4lWbA/z2nQIZaQKvujQ4PulghsP3ISgDpaQ5gKbrZC9hjvYjx83eVvm9Psvhqt7rG+A+V1A9XGVe5givvkC+CGe/jnRqmhNvQ8Hoh/x+wvPJkSprwdy6U/W2jdI/hs4QD6VsGk6TarVt3iF0E6OFxh65Vvk0zxNfL/exZ6h/Lc7vYNO6wDbB0L2BX+IFBJkVAWDtaT8gyMJ/8ESOGqd5Ys3PwBlloZMeEIu5ad8sklOkeN9tMa4HiA6KemkVBdG1skporFk5NgaI6m/QLbLy5pgZvtmFpbcmrKMF4iUUzf7SGvotBuzYgRfZYa6xArsuQlUsqwhgJDbDhVMOoYUK0G6fMxlHQuwIKalKnyeBd5+yfFhd22bz1lvRjzUBtkOCIrDUG3FIKq2sfYI0354raILWdy/Lk8depvMmex2eO5QjGfrqOb7AFRBruzTbJX7yldUTw7tE9ygIuGs/ji1lt+YoirYLVMDq2sF0melo/W3X4KTZWt0kR/amNP8bEc/q4dEp4QTr/sscs7uJ/OUlLtU5Pq16yV2o7Bhz6wdboWuarWZtP5JTcDa/bN2toX44h2t/7Ag=' + ], + [ + '2WIDs09Kc4qJgfstUj+K7Qlq0PH+rycPIpJ7fM/YS20=', + 'fr/Mhdbhe/EQlRDUr6FWAJ564DHqRrnZ', + 'EzecFi6D64iXgilsrE52OafP7mAQOvLPdLICAVwL3mG332/GS5R6w3AcZ2Zx4TqAilyviOhpurbFrEYWKl7VvZsYkdGsq+xjzpDRuEl3exPf60PmdFC7Q8PUGGBd+iCXZ1tmbjvCgbdfWPElXzK3OH3KRC/cCakbGQnW6LJqNh+/FImOXT5xVvT3jjEBE5YILL++2W1E7nmujTyoZWPzsTUUCJUeR285Pl4CLcdpnfssXJX2S/EiR9zOH7aCWNZuHV4mPllYp+xYn33s1XbyVABXoHvN0g4lc4VqOJ7HnNrK98R/swSHXzLwO5tjWP8tCVqoKxFWHY+4VFXRkQwHTX5VDwlBKzK8Jm6l4QlWeJr/qnqubgCUBryvD+iDsNF+g3/klcNoroGWmjl76Hgeh79jO2yCh0hXCV26Nd0oI7gzd+cvs3jy1+aULifKcbWlv4ihSM2SIqSjW96EhYo+gtFICg33VqwMCBdVi0SkCt+sZLcO+JD8pyeTThmG4K/Yqj2p/Xzq4tWqn6dPKD8pyEp9Ff8xCZfAxiPmTR3uUvfFxdsF6c32Jo6C5KIeW+rBx0Pi1w3FYrg3O2Fe5WMPr31g6AI7uzCKbn4//5IB7Hr9SKhvhFkBRhrVlCtzhV/DpHHR0uxbia5NhM1Re/mF8xqBW0pZAP9wGNJ81HxylV7cdb8SSPxMHRfy6RfS+t/i1yzg4L25aGMZeeE6Qr8oetTnGBSP7NTk5GLBAJdHtQPx48Sh6sfzuyE+ndokiJ9NHdGmLtDXDyPmJXFLxTGRf4ryUaJtJjWTBofrFvXhF69lgCw1Cxns7wA4CifOEh87sgNp7x1lgNmBqxp+Bz2HRrSAyaDSyNW6zIM=', + '/NzL2jfoHOoq7q41vZwrIfn2Er5iDMolyTe+dNSU3xE9hOo5sfxo2/XpGQoWyvsPnMCn5J6QsEy75o+SEMaLkCGclQMaFiv9XeVzGPDPTsiCc14LLhiX8xg1IO+1rCsj56fbIaVhQhC7zYs4o9sY4ZLVQbnEp8Pecjg6hzmbFq8lHmSHWaeBr4lCmU7Xg8JRbxp4uktl3Tmxj3OJz210gg5Lp5T1UEueVag6zvLUiGNtK5yWUUD1OYty+BOVP69/zY7H9077wMlzYgJhwJ2y87M9Zljhk1+WfGbVCNMBsVP2GSLLZrMhnct492Y8QmJSwGSF3zh2316fgTvdG+QAdmbpxltpGr/oKA9Ztob6HVeACBB4mKq+BeVbKj//ZbJxFo7mTAuS6xkZWvf4mPQuYCigZGXCmYUr2IAxSW9LNtTwBMMwPTQe+O18MTevB2m5iXjIflI3bLEcRZTLEyBlWpS4347frYnQ2vZZ6P22JQ1oPBcPN3gws4MEO4eG4HHiWIp5kjZSGQgawPCEUG7Nm41RrIrKrVEgnFQzoVIVPAnAyQnqCU9N4n6LHnkr9N5I27q/L/2FbhDaAd2n1mCLY0pEq0Q9BDwNWXavF+gz7QYnuH5zdlY+9S9x59y84YBWvgRwZ0zTxce53VhfTfUEA/cp7znS4URiDWsugsvbICTy7FcUzXblshJxWOPmxYSb15RPr1m/AwcW+QqZqcmP1YxXzXhAko/Ej1retKQlfV6MxyUaDmQEjOPo/7YbbREhvq1tOvFw21fGNpTZMmaW+KdOl75uOTh47GBsI9OMvuJharEW6NjYa0hCA7Qe0YVmFo2Gvi6O61az8fXLTWsbt6c4DvAXhGPhPWoV7UFKVS9t7ggclOJTpmXS' + ], + [ + 'Ndskz96qqdI9N8Kuc9Aeg34Y8MV1ZIpkxpsFkSJ3QjI=', + 'nWsoALHjvtB1rKL6H8Qs05RBrXUDPSOX', + 'E+3tzeN96F37nQtEK+t+w4usn+NgMAMCAlD0jm33exOfBJXTBi1scJaQRq/uq93/VlG6ao7SfRJJkXtQVIPuu0YJArZ5C1Ci9W5W0taEopA7wZoSYuZMc8Nhkzrjn9Rt+Yt0oSvXcO6kEkuWMDrYc8jqbj9Sjrv0Lidxrz9CAAY/EDgFtIdKvsJDxLafjeAQSKvgAfWy74ixgVD0EHP5YhLX2LrEcgUBN3LGsAZDzXnnERxx7hNvMbRsSVljlZNk0s9pz1aPaVOwIUB/gMlCL6f1K36bKmIUdkM6PcGMUe0OZ/74zw1hftjahVFp07xQOQCdjsCoLSG/16tDPyqBdi3U3+B+wlETGHwPSGQjchIyzP/UjDfvrxRoqZyxsOIChMGBcfbyE0IWOV+dg5JjQVGvk7Jfc0aPTs+RQIuCooNPkmtz9ujXbpeIgx1WsE5G4FJpxx2qnIVMDe+x7QUYbPOrET+H+SDAxWNxrMYE2CnJrmOQmUVpSsBQUmYdSc3XgKE1k49EUlnpY7qDMuSLjV+0edv3wNEZaOWT8OGjItfbyzam9PZ9U5qsZtAnoDBqwJv06IuE8aVIzuqhilPZnkIZDV2e36INtVznbiHMVpCH75rLJ1rkQ6HHMokxF5mUPW+UX1ok3axIPJq3dE6UnOCIeVo+ucrpsYdzZQHXVZzkutvAaDwholRcqEfNrQkLZEF+eO263BgHjs8iSlEDOBUNW+xUfdKJkHfKrzl6m2pHTyg2w9iBGNRkaFzvVLNnO/P4Ks5ZpnzkLCIwp9X8nkMQh7fdrOk+hXfI7mpvVemocOv9NSoCyN8b6/cAUfI6Je7AUj7k5t0seWVdq6nG45ifsrqqJTw6xHTm', + 'unAZWUGubLEsnYIFLTzVFta3xBnJvTINCEn2txvEQrtpzfqGsoqSHJuJ125Lgkx+pq5WbHLkAvZ5XdtEUldaYCSuxN377/TYE8w8CeAwnEhiRIa6zF/XqXtSV929aK1McQfzqu2sC14nK0H6bEbypUQZqHxoa4L6TNxm5DJrE5YZ3+8lW0vgjvfxaExUWJT/0CRtMhIhWR9Jizu3TGH7dqHeb8t+HNPcrr1CA9nc7rMZ6ocHUaDcUkT6xpC1NYB40rc7cXDf1kTREZbL1xB5WTc1zK1ZgusdNXIV4CGjF216D4TYh4HoqrgzIO49FmPJqP2+gQxwt/9IAUGJ7VkVHa5V5jIpuNWSIPi58i20UBXDxyA+gPyblDgdKMY58H8YCNKvrwzmFK+S3KjPVY3NZUEhNv9sUTlrzCtxCxw0AaCec/XgTz1g64vsefLRyRerpWnuRrEZCgtTBIohA92EZS+afNUpoMtwVTd9LWEb1aN91XBC20VsafrYiugsxqbzrpL3fgvo7ecmI4dtfjiVVp4+0FEY/RerRFK9G5zZqkukEt9DuWXp+h2YxOCP1rvAOb5appLcD51ttSGmdHrB1XNGSDjYCV+LpBN7LQgDFeZzw4Ftk+gyQlrgKUmlhzmSNdbZ4gKDcROetXmpRkgd/lvtcW+UWXSDsmOk7Av37Zvg8c5NjjGPYfeyiEEGtHgvDLEot/1mE8K15sEREcuCd0tR2NhW3ltfGx4yTs3/a/+PUn4vjbV2BY9wQeivZq9GY5XGINhA9ucAMG4ZmX2j5PKhSiqjHDkCljHa59V1aMHAeWKVrR3OdZ7/Yi4w7HwE4vXlPL2Bs7vIlcTemCSQventCWhkhAoeHThQYpjta0kEIsqqr6Vj10oaiQ==' + ], + [ + 'akLH/2zoE8ixJ6iSHHGoFKhvMEBIC9kZuI05Hfb+AB4=', + 'Y4hFJ7JTmT+LkBie0tG42Hs/atze6gdg', + 'ywKUewHqD2Z4pz3o171fQbegCmv9Giq/LX2dxTYHyzO8CXgJcQQEx3xmBh053u4Iyv56kgybnvL99UhXPjgGgFIHahPSR3jb2G/455C3lcQpY9SC+XRKdTiXhOtNY5WJRyEczO0Kf8/DPxTq7cHnVx+m7Sk1gj78u7qQCOHdoUrxh3G0Gb8IIeStfKHrSHTVqo13TjJifawXLx9uANKilRoZsOWe7L0c1CfUXZTB8N+xXQ2ChEhu4jd1pMlNhm+TaTcdWArNvZQpNJ2LMgMGepeweypbUNaK66cgjdoiLKTZk+oh6pPOdX3VgWn3iTMOQoDUgovo42kvYLZ2UjwtMwMUGh+8zcuQQivlc1ksFhbL5CZd7b2mG0l2Cu/1xtnIDGmWLb0CK4TSE+jkDgzRnxss1AYtnVH82HaJKhYGkeVh/2QKlylPsUk4tATs6f/sDIOulc7ukiXZSXhoHnGZl2/0P2DZUozqj3WpZudEBFdCnTmjJfQJAKq29KLJBEHwrnn3tDb/1wtmf6zSzdzvuPnJJKq7b8cd7VFrzF69M7rjHsWrkfqughE2+/3l76wRHXG69T6rxnvTTGnSRiCXO3J7juY5vNV67cKBOw+XFEDtYD+0jjnAKjZeurioXX+AZgt11T9qKEDf68F3uelronC1t/QxjePbfexcgWTKAC5S/ib3aN4eg9MeJT+eaatyCph2FfjwXxZ5FLq9GifFxTh/p6CSTK37n8mwme8jPfdf50NZgIv0FWyFATThmhkB/0RZn1kSdFNxeoeZpbyEx2wbiD84rf1vvSvbfoaGp5tbVygsTB0T7DP+0/yvTTZI2zAy1MY7FduqkA7PTxpvF7X0l0mMgvBYwLnWEw==', + 'ktM8zIGWXdVdQjfVVb6seWNTtCOEUXBsguV+AbIcKsUbeYNzO7c66mKCUjD7lp6dUwoYd+5Q3hZnEtboLFoHRLoo/WtSFDdTcaJy7Hi+HDZ1o5gci+FVvGKzQmJs/+pcxXChYNWmsHeDIUuptm6naYKRgoHmdFHPj+GULYw5w+Y9Ow9IKpq0Adp6yoAchIAx8SO+/SNDMYNtWB84zJ/y3/073sP1vWdTKxH6WsH4w+UsCyOrJHMPMMTPHgmz9quTATgjFnQ4vx8kYcmT9Pxj9PM/mzp/CyoWebeObd+CarOdxwObLmmNY/U0k8krTGPBbtdlAf9fUH8t1TKkVlQPD2Jdv3RbcoG2AfkMwM72aDJ492G8OSUsBd3G4NhvvoLyjipf9vHHcPLV91PCiso93WqcWP7wtMEs0hWQuckAbDKScvi+adr4WnSKVDO1cjMT3Yl2iWjlGmNbgm5VDpviQ0zCvjMeTs0nsaX6KzCY4U58sRnmfgHieEXNtMi2QHgkK+6fdy5na8cfhurC+xbS9Y/p9QjgauyoEsKee4+XIgm0blrKCgq7i6cnvpx4V+SOzsk54Ahk7D8mi65dLTgAkVOdUrFqyA0fDT0P+BlH8tKi/Z/lshY1d2dexIgMOXEGdZzRYKVVEEffGgfzNqF3vtwbdGuSuZv1WFRp2WoJHxtxz+a8xkA3TftlafyHRMedWMbrpxskCiS9eTq0DfK1xFsXOClQcz9kWsphEDyWH0WkgkfK/m9/R5kSb+VERmZmsA4ce9hlxayvyCqktLEcEnGi5ZbGbNyMPNGS2NAtXDxPiwl8+9T8yYv/EZPjdpnWTHXVMBWFRUtP2l3SDVeaz1eXRsaV24G0Tmpf2rAYmlJsEaw+TqHFeLO0YJc=' + ], + [ + 'Le4n1DI2wC7xniQ/7kulbXGF5fhLmZOqF/PxHXgA34E=', + '7lzDe+koksqczVyBbavP5Nbne8CvjF0F', + 'pmd0LFP0F0Ip3ETrE0fupd3lvNALCRgiqd4Db9Cajo01IAdNa410pfPxt+kUxjgztEZejYnwgctLH7JrqOP6ko1D9y+AwJoBuzjU2S5XNCd6VIhLI9MU0k/CoSJSZakwuTqKUkUXjEgy7xbOGXDwktmtJQImXdFYyya/kuKv238MB31rtqx5PoQ/gVd08JUFxHPbb/yjFgS3GfXqyl2gcopLNmaQw4BD7uvfMXcBcivVopSUBc89FbKZjAFXEpw+9KrcozcsO5WE3LkvkJ8NXpZ0oo39E+Jmv4audJZuB6WtzQRGrJP80jqV19Bf4AbAPAYCeL8U3cpDsGUKvrk1gJ3GktnMyttl9GK+Q4bmPFNc5Jv3/VE7dRUYaJJMo62c340xQ5PyGYPOGR2qzy5xsORdxA3E28Kk7HLIuTPc0GL6A4WPKsRvadGJfApwnSuEbXP5JTYhgGl8/wOvHg721W+WM91cjIisajcl/VpCFTbb28tuYJQazv26CYXOA0pyXVnt4X+0AR1aBsze2nY6MjdI0xHlrKaszXSpn5V2XA6Y9goD4n9TJqzAEnF4FfzHJq5KDBhNPOyyd7JePlDpGkSPcB2oC8oIjZ3j9++Q7r8pUhp2GtoouJ2vxJHBYEH1L0qkIpD9Yq+HKdLkXjBKX0flZSJUFpgrhFiDP8QB99QU2y0dJMrflJ1cemlGNqXjPrxCLlCfQ9MCqZcMxH8I/onbZOyuVDq5PJXoHD+soecKDHTxPnmqUbx9qatvPSlKqedCb43+h6Owfy1YOSK5L3oHyIl6Jbt81rSbU266hXtVhhl2dxHPB53825ykRRK/XNDPO2RGSMnztwTzcMu9opqZND440s+XB6ddusw=', + '5kgK5EwSccjs5hZrCwjsT8UHfKhilVKtH1ybHjziDQZapFX1NB+n6/2xfi9COuNduMlCu7mT+SO0GNsgn/oLjy0MZHK0cubEKG1zbHSZbwJ7XKJ2BI2Pjx38lwQfcpmwrmnMD6Yt9z37WDTljh7bBPU641QQq6/8sutHu5n+fGsUqbXlhruRlHmfsmanhPQ8Ezbqj2kID7/jYfTDxvjQsjE7rgR9Xae8+Pp3AiSj+D7Uw2u4IxRSD0fKd0dCLNqR8m38l2nb3Vb3DvIak0lkCynU/Pq3yQh93BzJoAi6ERMnTBafDgvAVqPr+Sgk5uPme0xGXAouS/ndRrNtB6UK1dA9HASoOFK9Hvhqxl9k4X5WjGvttp2JsNiHXzlipa/DlMS3j7g4yrgsOIU5vlqUcL2j4A28YtLXPGZIlmj2V1iNxsY5bpGX3TxLGVqH8f8d+ZWzgdrwYEE04B5poYs7GlUrHbc1a19pFYjW+t+d2MwjFZ/G11/Rq0dc5cCf38Vq+47okA+tI9yMpoxM/4EVJDLfsVAm2PNjPNKGqDj9op6EIVmV2ErhgmxdW4KNx5MCdmbjFc4Un6Ybt3OI7qsF7G3Lefeu/oI9zlOFJDekiB9N0IWt/jth6MhsgKkeZ3eKJCckuhsSrjKBHHFQPVULURwoowWp/Y9wKVO2wGd32ZkwCQf95OLO4x+mxRNTs63IMuZt11xmq670+YOfjGOPeXnDy8XhXKI4eBtJkLrLnYHsHnUj1YlGlPeBlcT2aOHBhFD7PyM+BAm0yI1ITo18zkUs17b01RAw3/Si4geMxsyTtjgwe8e5x9RVYkUJV+d3nUdNcosydl2QaZzNuTAa4LQw1gDaJ/g89hhxFZA/XcdG2AE4OQDeJJn9aZGa' + ], + [ + 'jt1ZlWfdGvBbIcPMokLjxczf1oW2heQiKTaUjgXJ6Ik=', + '0nLRnnwS2OePIID5P+ktbGQLqq/9dWVV', + 'fx6AEhy280gEHiCfasspk3offzqNJ856q2k+ww4MykBVNDRa4GxzLXiN52+iwQsXpueSkLkYpmm1wHaB8M+/quGaV9kydudt2TDU8GO5sT9WYk0rLl5hj1GDtROQkQt9+zoxW+Hrw4Oxju7RbaEdrHIox4XuXkYWHz/109c+izFnp/DVZ9h0YFuHkfP8V0Kis8w9wXq57ahQlJOFFn295LsQXhdOef/fNlw3XH+BSVTvp9CXUJCUJaK166jSdHjFLfXyACZSQyDJPg2PENqwJH1BM6nR8Dmxf+8wfsO0LpUnlIgVmHm5iofkOVE5fRbzrXqrjzUCWHeOxtTTw3B/IQp4jmufB9yTOserd2/msYYEh4ZuXFlZ8QkzIYca8jWSx1XyM9LkcBiPKitdGvLdomJLslwVl6xdd+OkS7qIaE37oQ5dCck/FxFNSlYa8KBwwtfQPZV5NslfnQP7fkfkIu6lZl9mzfYp8gPZ49cQyM9/u2rNkn4jWDKna9tMYSiNxSqJ2hUaLiKyFJOH3viGtrKpf/QGbiYVGvDPfsqBuj65JcZJeW3qnzvB/1o50HVWcUg9HF7BPc4oKMuao+yk07Ny0q+eSFTn5QWOOWp8G+s0TY7Otnjo0ZYSrTY07Co+QVYdjFvoszkMXE2utxGnd7jfCzysRFxDljqkC7aNrDhw80pqmMyVHPZX4VxvCAZyMCtGAn9QV7nf9Xm89FWm47gTSRBD8u3sJrzkMLf2T/WkwaIQXmhX/4DjuSqflkab4XJ9UuuL9Gd8d/I2Tj24C9vZLV/4izcpevnWTpCJUeBZ/g/hPgbymY9D1OsSMg8HNiCvS1vWO5QfuaSJUD9SVhZWsIv4unKeyhf57Uwx', + 'KEdYhxbBTHTWlFoRI+f6B6Y0SW26f5GXv1c8CMi3LtcA10wuBd7zNr07/KvTUiVPR7aSN1OQjpNFh3ILtyFubg3Sl+bDnKdh6JtZAHJMfmoLCzi7Qlky7F6q0yoyO3My+T/OU0+xYeI0N0Vfj76HQ6vgrGk7NGvIBVTH3z6qX2HFjonlePpzW291PoR8b4NGv4q+F44tX30mQPmPPUm6XAYHHrR6nhXodgxVXzk1YXaF7bGdCZX8ssRqmahUSQNpP18MsTmgUTZJr7QHgbjtOLSSF1jZX5Wnc1B6MaqLldMo3btozfTiUrH91dm8NJyjdUClvPZeNP4pivG2U0Hum/0NOkS/dTkWG9DNKBVi4m3ohe6i7MDpuCEOJ9czkf0/j2R6qy7iM4LQPLG/QDoe9OUN6ZC2DxS02Ax5xEi+ysmLBGsjG+w2fc8fH8aPu3FXifUBCw0qFXs8f8B5YlQnWvgARgB4CQs3bD2O7r5vVGURwZJiAiPJlVj0wKZQFUZm70Iy0i+3kUwVgW/WaOwrx0Xd937iCkQ9miyu+rkM7tMWlVKw50mK3kTM+gbD6JIL/JvGzp71hqcbwbACVGNLF5S7d544m9v50ogEFeNzOeWR6GHJzJeaOeZnKFfX96gd8XAzJiWg8C3gyMR2JM9NL/vqTcUOeZ35BMULPeJLln/F0EA+8gqQwpEGS9dgQ+VVhwQY1BRcPjiZhb6SBMJGgoy/wqQOIU76hN+1C7PRu+TfuciG0RJ5pPU87kyMJNJvyLA+P+DhHt2mnisHS3JD2W9vDfbgD9wgdves2b7I7VDPuROVVqGST4Vh6KpBRm3S2m8Y46xnbpR5IEPgkGwa/flFbd9o35AYRIMpgnTAJLilnBiFLTcSi61J79p9BQ==' + ], + [ + 'vf3dGa4x4KX/pv41xkAcwYwf2zKIAbgcsNETsiyfmxQ=', + 'POKQNh86FQWjNPvHVRylqOn7F+6GY6wH', + 'QtaSWCOV89jd+Y+2+pg/u8F8uD6JZx8aRgiOREBY+7XCETk8YBcX2An7RXr7FIMyN2hNOjrvmMeTICsg4FE4kF6eBX3fC4tQyaU1y539FCCo8W7+OPj1CkAV+FGfjg79V2m3aWos7dvF3YVMkACR6nYPSr8TsmPRFwO87c8rRNNrINrOmHx6xGLWaLaHG2dDqsCXBnnPVT6yVvP6GQWyENBn9AwENgVh0vTyD6l+zADT2ArzIB6U1A+GdQ5xINnd7x/j3G02PnXxPJmy9ri/K9WlQR/BdoODMKLDALdWBaKC2HV3vB0ubLXjtltmlECEsJtEOsPJc0ha1WB3VNBrzQv9K3YP0Eit3Qtbd19IjIkBmZZm3f3cUNmH33NKjEgj3iCbS4ts5Oh0yDf/oHsj6oCUtRxTLNzaIuN45kCnGMMf1S+8mMxbaKvkKggcEoN7gtLubZG41L1ARlP7ZWd3X6ax7ZWMfc00hRRrpMGG7Ob9OuByX8/710rOW83fx6S2wQyvJKkbrXVfhtJpQUlg3OmQntWqSvQ27GSUkET/EJ430otXD9cDdRhWb0mM4ATGmz6/1TiVAT7DBfywb8W0u4l8QvX6lLNP5Js2Y2fV3TAsQvwdAc21u2ThDE/th+1fIx4q/Sr9u0G7k/hWFBWpthOO/XTHpLx3os3hCkOimSZERUQ++Qu+UuC4toYV2fRqENgr7BgBNgd48t+BMd3i3KurIcyD+qmV2XfPYtp1GFFDxM0hZPsGhlYLpWtKAJVFca/GEd5PLFYaW0cPTx9wk6Sg7PdYvzIlYw/AngyULWfbNMre592HeXMxmmlKRy3PIqpwQSRc7NsM/fBzwZxbtKF0kEo34a5ON7rNkqUv7Q==', + '27pbZ8n9c8drYWt6XDU+ed6PPZeDZ+thFtk7weI3VbgTS6V8jviOip9pt4y12tU+HtO53rPnqw3Ij2SCW6oiDAu7VVyVKM2Xs2i43Uqyr40zMe48Ls+5CETRQvXh6JvWLrw8AgxermqlRjdHJqUw69AQD/z3KSxhmnfMpFle8bLJg/1sqz0bRC+DYotHqhvtbbWN+bmf/pKE648TK0D5vt3oJm7kJUcLtq3bDwCe3/lAJSlU3BARzgskoz1fUDkA1wjAZKI+dfRvSnzGV2BjPg+IGArYsH65yBTUaB4k7/A2nymu2vgjTJYXE4kIUnAi+kboH6XJRZt9TfrCGeRh1oZG2l5A54CEjFgfEO8+0I65pDu7ihfftCsEBkYDrYcVWBpZ1pRNyuvwv4fLF2aYMFngsJg8WosgQA1CE2m/S+yWiAWXS1mJngrdu+WlkYl8x2qr9HET/PlR15acs2V4Y1f2K7CFtgI+1nC7ZBBSDW7rF0q5XC2c0y0jdmAIY+7o3lhziovFITMNy6gi8HSSyk9dKEXqpVkMsNs2brUysrdCRwE5rf7cH5S1tUNi45WV5SByzzs/ztf8i9UNgeykSFKdGF5lrFRgcIS1JFr/oevRSetko+qGYHwJ/sH93TEJD3dTRxxh7iClnGhHB8jRMw2GMUAheiTIjGDLM36hXDY32lYjIHHyKu1NX4YHSAVVn+saafNpPOw7Paienw6y4vNz3hRRF+DH0kBgqwPgWcpN+TovzF7j70EWpsYoAyzUlNGeT/3+khzBxyn+UNj313PB2wCfa9qTPpx8db7hJJZ6XLQ25UDIFsBnNXVAByBSXMmu3PYTqd1W7ekJ+AMjLzZ0RMU/5NFcLb+mRs0RwQh2wurXvrD7O3AX6824MAI=' + ], + [ + 'yNVYLQw8JZf1hwaVIpwdcsxmz+TF37seQgVcGbvTcE0=', + 'UGB4m6bnfeb/5uli0YeDXKbCkKellOZi', + 'Xd/9FTZboblStW8QrOTRl1zje+LNqvIk2nsTLkeJtpg6Q9OeWWJDVpu3ncaWXiUbuWfKtTmZT/bald52c+otOPBA2dBgwV6bPJ5cRXjfSZpxxPwjbB/3ikftZEEkeuJoKx+EimLYe8Nc3NOh56UCZjxrN/i1XgzGDdIVIhs4xO1khTx8PMXtNyd71BczuNN6/7jF+nXbx4XmCfdxxZFuv+GJjr6KY1D8d71igc/nnOydk6IX57uTFLqa7usRLF47t56f7hsL+0NRPC3Nyup6c7u6q8FYHZ3WmTtjo5OEjl0YvelmctTKdtHvCrPhvp2zIzIOdPDE7nr0sAnfXagLbxGnoVxOZuaom1SopKXptm/0gbisYL9ApxI0qSUHGdJ6qdJc+5V2bOyGMzMtI8c/UBuEdvW++PbheCnInQKANR4kaezW63+nFAqgNWRMgC4pc2rDBdDO26yB3lhjbsiUDrp+t2pzYzDgnT18P9W1QjS1F/t+3L+k8CKxnfJQFtGlrBZvaNvG0djs9N3/b+Xyv1KaPvBXgti3WVqyAS4sal+s9Xw8YtvPHnPMEdF7RqfUVPjulNABQ3wDd3KW5tJWlhUXVofwbslrPjdw87orcpjX8kc4L45tbNdUKXFCuuGQVdGBH3e1uF6MnpMcbVy2njW16+H+dyGospM2Q0FwlR4ZZn41gJFbYUvFelJOgnpe3m5USa7++HVe5uD2RHmJ6jUY9gOH0sc1ihhuRp59q/bLKxKAPKodWNF2R8NyddIDft8lbEC4i/YVnQbzVJ8Ejc4Rt9erLEhW7oKOkELefrs1A3zUmdGbfQVf4VG+Fx2OcjJ0Y3W3OVZ6Tn3PzdQzWUXJzv4l/QMTOn3XEqIRr/o=', + 'rwGHYpCeY4Q8ZfU/PzcCECZaGZ8aYpNz9zqqjJ+N0CDJkYFtyalFg/QkjlRGkHZ5z5nzOFM/XtmUMuEVzauio3n623Xf76hOgkHzhxeA+BpxsEpXwTMETNhoEQKXws/1A/J8146Xjr9PNXCm09exhHXeAJg+pInv+u218n79YgKaONiRmHxbkdVINIkDTR1pm0akcavDPpNip+KNnqXkGVkKfRoX1SLqW1CwGM94J0RlcwJI7+dixR5JJaXE1Hm8c9udFkh/9f7It/Fw/mFge4McIZWQTViIxERWuRAapaBFmoAA7pgi5VtdV2ECvMmwdfMQn/U3il2yNJ4Gv3jf007PUyfQjud0c3oLwIhAfr8+hnitk2wA9CKXw9ptx1WDQgFEXTTQ7RXSrLqCkfX9RceSreT4+ggW4V9mY3Et7iaYR5pV0RQyGhll5/61kJb6XOH8bbdnZBccA0TO6Yx3tr3NlRFhqPydiV/JQGG/EL4d9dGhTtoNoBsH9SVjKHFVpmIsnmynR7hrsUDByWzIF1yP/GUJM+RaG493M2TOHq95l99O5fUyRAO+UikZhD2SSjBSV047BbD0SHCwTMcFO8g7yYwNgvOS0q/oUBhskAKD7tcwjfEJ+GUiRFROMRSPN4A+EsfivkKmdec9H9VcGEvw7TgROZA6lHG0uOW71R+PYMwsF84qMxN3Enw/qRMo1NfRkd80vcR3K1ufOl92aW3StUZ235EvyaF/boV51YsvWtLYRjJDLDIdVC6zt7lFq4KKVd9VOpZYUfWnv2WOxn6+tqRXyeqbp6IfPZzjNgYeER6mFtunwuZ4RlHRaVLmmTmA6qMTE8kVAUfciH866dQNmeEtcFoFYxkbhbsPnHq5rV+wkHwd/fc0HcI9p8s+' + ], + [ + 'imhUkZvyiI8DVSHWEN8ftQUXjgegxiM+rlNKIcVFyiE=', + 'WfYcvIi1ZIuoccQyGrkx0qMYwi8uDUO2', + 'El8EISfSOjaK1rSgTO92bcL0UznlaFurzYK/Q2pSi5jBe2JkayqORgHSXK58kQGrQhT3RLmuzrdMAaDrYGPZ30FNyr/YW4KCPXlKqWiG+SyY30Y1A+VPqgwtENZvfdBPWIIPDHZdRD6rzuzSwhSdDStRwIaMJc8Nfd+fhEDVrk04ndxlkA5E3hRwMzoDnThatClIdEK7+opZG2SZj7dWmzeBen7tNofSiq3YbwecRmeN8G02ZMYguZcxgLsyAHTSl5+ZxPv0LarlG1YTWPk139dnVt4f/WEUnzxxk7bCrOA+UC+oITK2lDNxZcvW24hSz1vBPxcJ6PTDINIokCrfiRQdzdFAUyF2XVh8cAVVTdrTy5i6fJVpSQl0O1uhqHWsTxPwsnN5XKMH9M3h2xiPZri0q4pkTmSeTMe1ovZQaNvVHYbtK+DtjHpKA/SZcCP6hXwLDyd5+UobIE4iIHgO0q6KQtyVJC0sq1LbsCBlZHypG8bM06/lMpRqTnfGU6VTDpMWFlkWkmAbIxHGkHtRLIPV5Yy10jQiavT+iQEfabb2avp2tFx+y7Q+LFF1Ww+xg4auIKUMP7j3qUOlfJ7rOomXBf3WmH4bJLCNlOHjWJYXlqLjjOsGNf1v8khzNeS6OSARZKYhHhFJSoX3v0xwpiUYhwOcR4Idba8VpI8yoiq56rppkby7CxNm7mIJjz3JP7sQpcK5xBM67RUZHP/8dv6u+ZWnoyHhd1idVUUvzVb8ffi83LEV2GVajCbm8ORniepZkaOJabzQoXLkhA+NfOo3xEG0FKr2AmyawCCsBx1d9LDQ6hdEEgGlSom9fcdCa8AFbQIYV2H8mjfWH6YshvbjHbJe7GdrBRoO53ptMlBf', + 'snbAmwsSsH1kDldn6sVpkywzRQ2N/FcFQHAY6L96PBSEtojgxlIKm6jIONjFkKa3heDjPqoR0N1xrRnwvp3UhUs0gdMr5Q4Qo7967/2CM55xCnpPanIzLRDZ1h7xZENI6O+2jxEkMDeLox92ZMGlbzya1JMo3UWvKTLq8dfisXDoXe3lWQlXUT2s2jep2rCytYwVfX9y9xR6nSVsAs2p6vrh27nJUMzNkuUHvQkptdznEiE4jyORqWeZFb5W3LDBrKEEEoNotvn5QMZTf0GLSbwdhjiwT+ypxDk3dECWkazaWe4L7T2KxKDh9uSiaZlvrz/4ZqRt9zjB7WU56LUZMuMcOD8BkkRVJi7FzuemZ168/zNiOJy7hRdtqtlK0TptfKOXh3l7c1vpwUm2DnHxnWbUQp3ANRgRcdRpfWbDtbro77Hk99fnvSqBi3kw8aDcnlvfsMMX5iwJHhGRyFFI+oNEWWidB8eobXpo+9hXq5K2IJLIeyhAF8Q9aGvmB/jK0JLlUcGGkeOR/C1rNwUn/yOAMuMS8y/uMipjVFiWoDVeBpyhEiO8h/CxkjqWRhNzdqU77RgRUb7j25vPhLedOZSt/DH5ootlCEnqaXwgyS9GX4UiO5cq3OYvOesa89JQ/6fgA6c9LJ2364Z3HRC0icyfDHvqGLTEJQwnPRdQy+WO/w/KKHI1bF/60hwKSNg30qu5LXbk58bJ+Qjqwl2Lou4B8MVSqaOuwSzQjl39GengFQpwWmPhn/DIEGfUUPYQ2ZYYnEVidzfa3u+9P6qkeT/g96Fn8/7wqqgJPZ0KaoQ7/Vs89x8CJs9AaPOG9XXvLmi9WeDHnqjkMmLYy1QEQmdg/SEipOxPpyNhiE4LQPfTqAGkeK9GMO5NLQnU6KxpJQ==' + ], + [ + '6ZOb0TcVNN59HFH6MsEGSD+YbqT74oJwDOfVVFkdx0E=', + 'dO9WiiBDzwhwr4QN2Md81XYWMheIy+16', + 'ZBUAvPPDbbhM4F4ddXQah2Hg2Wo+KjHUT2y4GZBtOBnU+deuUii29XrtBrExIxQxG/H0G4IsXsk/gyIQGcbk6NXKo5Kc4UaFaqaFwcl52XXrSjrqJ8T9587cNXSa64ES9bE7n9Z/Cgu8h3yia1d/JZQc2ObGjVpQMdzRfapL+/mlAGiF3X6rDEKR3BKbXyOkgak55P4Co22D34o5N6zyilA9A6sfSnAf3a1A1hluYs8sm6t6j0krKRQusfyIRrEBPkhlAqJ/hQYL3hn83tKllcWnva6O6zoFvv+LxtNnbYKuKNX46P6naiKnpzT+MFX6zzQBpdsJgWiSt6gOXH+KgRr0x8zLTfpxa2G3mJEBWvemFp65Y9x7EHm/+crzm/v8ZmYd36Wi3XXqMdMeyD9DHcDwfHLEWMjDwjK3tbk20oKrPxKmfqM32gKCqYV+P5UQ/nykHsujwZ0nlkwv+5DKVvSFlTqPg5EmtZ2jm9tk+4f5n9w2bpmOl3D+QTebuoTdrAX4k/th4vrn5kJFk7Pj14tyhAs9iE1WmlxQrh1zp/o8evPILr5I+PE8rIPNAdg7RbmvlHWRpm0xN8cE8E2tVGuyZXpppDxjJtYJJ4LdvLjLuceO3+p4NHpAELe1FIcKVcEgO71ADOkUmobf9VoVHxDQWSHUEDvtdqotUqVJvE+x/YUwiMhRFu7VAEVwB7Tz4PRneJIiRdfBDNZpIAipze24OW4l3WvG8n2bT2I2kCsccyz+/8fsur92cxJbs3itOpJhqCDWtD/7f6df9fOQiPRQBApRBl1z8NdBXialqzoP3NrQvnOMH4IlSka0uZ8/aQZ4uVt4Amj0XkGeoCh4OI0zAEoiB4xgekkQM1SxLZvAfg==', + 'ns1do7aeG2jdAYfMwMTJt6Zr6Atyw/mtWQ5m0bQc0gjzDJWPR2YKKMQnvNf7/f7B4Jy06yEeO1q6NNTVVrYg4o/1UIAumPqk/fkEGshUqnbJDJJqNgRfj070wT5CCNWI37GBbPFlNK+26KiJZ0sALRGb08XoxtAVZwXcgsfUeXqLce8Nx6fayM3t2Dfz3qYZhgIoDZSzh75FO0P0unFxSIslt+4kkyUu6uzM6ULOeF/dSS9v/bXfbxyae060vrZVRTc2jWfAknpjxCGuGtlxz1kXyjhKcJNaHQgPeZiTvavHZ4jesy00ESl8zHSkc8IRW7t4i+NyMvy/HddY3GniJ8VhMLGjnV1ak8v4voJMKuWHAeyOwJ4OO+s7m9Pu1cjlPSyQjdVw0XLxv5D8kXX71w4dbr8nlSQtnX7qzilK2mN6Mjy7Z5RMJ4t+GSQCSCxtk4sRhafIruEILKLuJW6dSoidZLCIhSbH5/7ReUuBgqtDkIdSK6qzYNPiZMZlbN082QfdrdiihfOg5a4cx6KHxPTeiE4JfcwmrvjrPr7g0AVv7pXcIRJXVZ+XW7XC3tR55nzoAkw39k9TAk9niz5pNeU3Z/C87LTczS3qqUxNlFv4LHljEu+RSGWQlDOpbmREHQhotSAsE0HMHLZkU3a5BSt0QsUK24HRV2GlS0Clqo6CgULS3JFoWSD6bnWWcod2rcSINnmrJjpMy+P4bcF2tNdYDWY4KX9MfjfZQQZutSjPvfI3LohTYQh5+9C0C1hjoSNEr4/bl6nmGsuzqxNopJAMm6qN3eYQr8Fn9kZ4q+1Mv/DW82cqHaZ7WS7wThOciqhxP/d9i4ZX2c54PCTjZ+Eb6PpZv+x/eb5MYbBvX5h5IiZoNznb/xYxI3wHb/FgxAo=' + ], + [ + 'tvk4naMfTIzZM2pESvcDjf/wyeykEpWsPwhOeacw0mc=', + 'lG7pWIOSy8/5ebB2BNcNEQCToQE6o07a', + 'H5yjDcOXqUwikABWNYxK8ubQAVWbXx54kmR/1/i5RudRhVOnww6rdLpJdQ6R1eLRWP6COo2kcQs2b8t14dmX281SCTpqwAVxqXJFnHccnNGJl5CZJ4uIK61mvmcO2QIshixeKMLTxKKfyABlo/AIut48xq+mTa1akSnOfz1FJ8lhr/QyYh5T8TlY2N6uO/ttKqEzRToyHuJSIYO61Izn2GKYaW2wRY0oYyYoFSkm5CYgaXc236VkeXjshibddHW3cFVT4ampc7wyaZaPeSzNs872rb+QfUA7Db7AWdknQcgD/oHLgb28NufulbtDmh319BZbbJCmlHouCseTQVgqt7mPQpHpf2EzYE0vdJhPFcEzGSKBU5W4skAGLmu/wpG8wtDtOynqwiI3AWmJmsCR4Cv0kWopo1rcxdaw/bNMZLX3OkZsIAaLz9pHUNBfQifl/MsI7i7rEElqc8YvEWpkd9iHGeqjQFY9gyj9Xz2m+3+GZdeJ0txKYigVU8jdxtO+oe6CyGNNjD4sXlgn+Aemggksg/ca5zn0GIkTrQncGYLP1t9HXHxK/41K3eiGMUBbmb1o8CvRpvgYwZC1wetDAGCqv84Wy0cqp+b1KykqrBcmKJR6hUHo7V91Xpukbbrsayf7FAyY6humsBuO4dHuxLZqjVgITwZXuK9I793ZrKMd3CKrBcAb17wFrrgibcVFguK7r0WhkbyzL1RnBR6fh2ut80GAQeM4shLTZNwvsoFdIt1T/eb+O5nqz9lTQ0yptEOkDDsjsJdKmA/RLLQoBqoQoFz7qE1ov318vGKf37eRH8L91Rdt6BapHrGGZ/56+NQ2ge9n3GWQauCvlDodcE25AE7Ae227VJU7OhJDmfaPCZY=', + 'Edyuw5Fj+Wbl+vQuji81czXUv/4WMBjlIxRdlBJRlcSNj2PTrmJ8T2mawjTmmm7BREpXLZg8f34rqVTLJoCdlJk8be0Mjk0wbZOzGTUv65awJfYdlBGWd6qoZRlxREi9t4ARr8FuV5D3LVZTdbT7XLOjCZuoaA25Cm6tbQo77Bhg1PkuXNbw1wb9ojBiL1uvtT7YHr0FJaoeQXXWMri1E4V36exWg8taYKEP3Ct5cHmliv1vDS39+8Jz+K4kIVQh8+s0M5UgMXXFIVolhIAfBReZaMg5Z3fBMKApZ8CsW5OKtsGpXP/ot4MnR0arzaOLb8bbS4kCBHS3B99HBnWuzufl6GGmQPoW7iIgDpFtL9NQaLx77lLf1agtHgh1eua+M9N37bWu0hwkV74zw0OufFsA9KRKV5J6QjWZlHrZXimbfy9SO5t6+lle6XH27RqsCBECtyKrbWGWxFIfh2Nz7N1pjc7gXsJfvHorBp6NcDXzjrPF+nANXOW2l3nF4mJA+dpcGJsgTgGnIJvU872t4rmPciC3aCjjsIUHJDtra4KCHLf+fCpr7/z6sidOEUyK/uJGJtRLNwkb70k1ji80NY3rjqr8pXV4eSF7033ypURX9eWo6M2Y5gCy6WSzL8BiL16yHd9AowaRii9ibDywg9dA4jkJo8EVrLhNEuiK8BFdKmd1KxaChljbYxuVUGl5wNLMscia0+VN8j2bXIUWUkU1RrtQkzcNZFhj5W9/kBZlnT0NmlHMSlXFpyRi1pk/1xBjCuVEX3sfqorhLmWVTaXvDkODu22X1cmBuaKcFVhvrIppyNsCkc1tvpsSuF2eruWKE7NVXX9SsqXSEdDIBlPfgQJ0Zj1EX0vt4zaqrHX5TCtIL1fq4BbHhDNJh1MePtG5' + ], + [ + 'imxNtth12QzX5KfAPo95tVFFl58MWHfVDSnk5IB/s7Y=', + 'acYfYktbqYAtPFlCJEpKyNDymSPfAU8Y', + 'DgcuAZbEFfTGF4VPRU1j/Ozz2Ss0EBn3HmMYwD3+/tTRQSqcJFz5CaDHvHtfsuQiNZCt7pxJezgXJ8WTDLjKZxPLbJvn7VY4y5I0guTSHrnRkRoreLWVWSk/3bYcQNFQGsm3BYHTPbOD+mM/eOlS7pbYqNMU+hPlNk22+LI5glZJeBfZ7W3fRriwhWY8CnOQkMKIXdqeTRPqSC5ocZGbviTeT5WM1UZGpVT46PMq/dsWPoElpnO/eBak7Ix1JsAVqvPBjQa0dT1VttkAXHocwUOqb/dAn1+B92m0LNWoVf5lP6QHw29jCZfYdnMH6+rk+PY3Mk8jiZ3HfXJgrOYwNaAHBhdZTx82NEMMY9AWJYM1fw66+HMbf9FjUGgxMhDHvLCP66sNFdGVTh453Fb7f4G/s37RtVg/2+G8U52NGiUCP39EuleXyuMujtCRjF4DMm7CK2ebAwAeMyllOn3QA9vq3TeFQpnhPDBzdoq0ou+tZX76RS44WSThfpiYJRs9xMh9t+PHeHV43Ux720upjytP/v/VNzHbztRq22gq4FDNCe/A0d05A0Gr3qRzTE6VkQzAj+mxgcAguTyt0t3TX/pDqOoQBPEMnIRFEY7HhM/lRfn5fJDf6Uomly4StL0xOHidlP9m8sk0Vtscb2BONa4VxQnVO6h1QAPtTK/qePE3RyJ1tc9okY3kxqxf3/wV+SCMp+2Cp+Pnbf6ISrC2NDi6yfF1ZEgz83w6hNBwgjPYaFn0FSoTVVu2iEhuAKGiWmtKjLZbJJT65nVqRGHZCE2ahizPnFGqcDuzGhFIcajTOF5HobgWSXtlI5Ajz3sMAhncVMFbAx6tkNWL7kbXEvJu21gkjLMpsET7sXMs/IgfxkeB', + 'oMFiZtmesSP1+woivc+F9RCO0eQqWZ/OCO5j/f7I+hhrtvyDX8u3sKOSrUYD61rrMLGcWjMwVkgGXtbJZ2EXZUZoL8pT+UkMevf6ih71tN1VtLv4FA8VAzvtlEAfnsnNAeOdXsxpp875MmRJAQuAhDJd3ID3oQXR9tjnjAOajVzaZEw1T7CgGXXlbMNYlAX06664nfymlOOumJzNj5qaBsa2wW6xjBKT7TVLQqVP2ltBdRG5WZjRGY4wfzumf0pjOHwp1p1o6SLVj2SIstQo60A1Lpg3WlkrMym/iqFJblAG9VmzXbI5oAaaYy5z2zkQ4C2TERu8gZI9zjmrwSmTbQGg4YnrHcp6ARb8IZSLdogNtEwU9bj6KsRaC0r+lZo1A4U09gv+60brf8lPse/FmBwSY/T4clsm0p3sZpkvAYt7dsiPmHQLc8PD0yFo/2xkqc+ytZFLexDaHZPsNBtthZkPf1rHXoIp+rJCnYXwUGVGAHa3EQuxsIEyX26XjrfmkzaG7KLjO76LiUWN0sN61cgTVo0N9vTDYyV/PSbH93jCvVFR03AgWQz3XJgaKCEx7Uciu5OWCq8emEYHS9UuVskj+79KKOo8yvzvWUUW7HMxA/Noqvp6Vtmsnft6JFDNE2YetklnSu5yCUIfB83DWCI/hTZ06HEY93d9TQCUaDtqfJQx8LGs/qsgLRzdFcE/ASC0LT+tc0JZ+J925tb8rddhesJcyaMWayPT/QmaT5x4A8fTagk6C29xkCtx1hNHKegwA5myNeEgfnemfmlk0c/kYY6F+goHdGYNfOGD40iIY0/p1Q3cHvSwiqqljxyoSKyqo6QErfOBYcp4jkj4NpWUxb0pXb/fUAXTGgoVAQIb0MkAghob6Jj9cGzx5DfkJIHogA==' + ], + [ + 'qCZD1eJlleF+OSxXmSdrqBWo+dUGgf2TVm7QKDSCA3s=', + 'PUfcXQU97OcPWQX3bPoXEB15Oqbf1kkT', + '5OtTkKbK3T/syozp1WcxpwktIbDjeVrq7EImpqcGAjXkMvWXenh8Dl7Uho+PRRBTYys1IWkYNaXJyCLikc30v9RkjN+lWuEduI6PwqEvoKceiyz2CNfOb+eEFalAc/T7xwb4QHrgjEigX4PCV4KcGfm47YGqLeHXUw06XmbNeestpiTqCRRSnh8jCqK0u5BV7k8Qn3oL62jyqZXol8/Bea8WVZzf2oGvcd5lVjJcigcbTEhuDqMj9wEw1bpHuAN+OcX2xo533YMbejSgsn4knLwr6DBuXZSYmO+a+XrEO00K8zjeVqkhmw/VCK09eWBRqLVIaC6bIO9dYZEZmO539rXuMfaRnyoOwhcS7wMG9dYCIpYvAF1ZBE9WPyGYLNRzUZJx950iedY7VCJfgwOrNhDSkIhk4YYeVwAEBG3VVMnNgtamR4bR465f4TMH55I5VSAFTi8GXwBXqy8ncO29CQYyEQsWuOAiuHoH47EZtQVm3SpKl//ZRuSD9FO51dXpBk3RPbQAFxFDKH+v0+a10rK6gQxsSxyvHo5imf5glatWw21LpfGNCc4i4kagzxKYPmdGFIXziCJELheDjCdGBTuBXwUQb8/+bGLvayJcqg3J8wY4YVasK7RVcEEQf4eZbg+8CQA9Qgy77GuaWb2QCPwbIHBHSa3P61Tg9CMT0kORl+p5rovH67fuKBvrKXQQxsmTKvlayrvjl+XAteJa23mfI6ERlP7sf/SZm3YCinTl9loCe6CaHes1HcdqHSA+INMNaZWbUWsBJ55z4DhP90rDzOY+lQdifINcaNNEFgA6hqu27P5c1541AYSK2qbkeIPJA57/NLLoI+WgRAJu7M9/ErLP1Vs05F4pAHFaKC5ZKmtUJQ==', + 'OpooyNWXOV1R6LjshRJHIQKUyhyi37A54A5y9eOnuNwJSxXvYT80S4SPlkzRm15trYZlwCeLwwC/qnIbA+6AbQmL/ed5f/j+TsqFx0kfa5QDD6Xe6vzS+wPmq/vPworr1TXgduPyGDBFivgY60aCSmZCRrVS1MrJDC8y0BGVqtpC//3uxilfLJ237xVmfSN46uuJV8UehMw0pytcbZWkqdI6i7ebzfDpMVNtL3pFRdbpGVVL6ErlC0vHAUQ3v2fsSjeFZGyUwat1CBIptt+tSjPw8IkOWeNdZCc79Ch/KJQbhHb823FzXpDux6JCi/+aBqaxgItNvKYOSGhsk9qPq+E3Scw9GPecK/4I+uT0iam5c4WDagw0a3kWWUXdgV+RmmiHuUmPBbIgD69H4BIpnMTnPTxjQWdR4FvS1jrQEAx1DPN/j4LE5aBhllWjzMC1/4dt2Ej+5ec3Sxdoup82WT3jbfn8U9wSMHY0UYzgwI+T48YU5nM2EAAepZNBGdlG5UA6obwnkKqRJsMG3BnokK+eCkE+VHnUGDVWIunyNwYK1ywOX5H48mL8NTGHQqv2GzvsVXcR6PauzUDV4hcqynvq7vi0vLTiZhJd8itb0+utoizhDxFEgS2lH4WsIOfcvzKhsJGdCyAx5sY0ghXU9hBpuOhahaitRV+2inVqOtm3+YQXCEvJvGGsnaNqwDMdC1rCniCE3jH9KX5935xY40YwWj4obQHG/G5wdqTLNxBYHVCZX3/ysq8DTyr6BY1/asXMII7L/zuNHKfOSw2AMx1EOWDMBjS9lc/tjkTF8a61yX9QLvvS0VXSa6BfBOcl+/kuqmI/y0IMgCfFDvW6qTw19XGbwbvYAl4GeLhp7ibDAGa3jzORP2rG+Gu+4r4Qig3C0m8=' + ], + [ + 'FnOIGJ4DJhWyAaXNereFs4dvGwB+gm3CAkPymKmf3Ow=', + '3RAAjDnUR99bVaw7rpA+P7RQ7g88fCqV', + '+D1XQblor0uTnIgzvKOKW6UNRvb5hwGjpfILEnikXe+OCMLrWP6UOzHkbVojurtc8AynT0pXaTJpvQXT6Xkbear6Zu4HUNAWonirQEQPT4tIZ4nx4PzSD7nxIP9pEoJGUDywxHSX2a6mhjCe85TAUIQ9UThUXQce3hDJZybEe+naah4YkQIm8St29itL3MtAoR3ULNdcqogPBQBuFBSGG3s012MxGz+jdioMKYaPAJU1lekjAeWn6X2FFaYJrT+xXZ4vsA+D1VyFX5EwegP5Sus8vUCg5V/iAqaurc9RrsCpQ7cCKhpVVovEf7rkrUnmEADNBEbgEPemUxWvLNFBTazgsLIuVFwhj595fNfY7sDYUYlZJIVep73A0Jk5jHj4dq1wPZyr57Onuzt2yYHS3jpFNZJ7JtbQvzJ9wDgHzvfX4mzmAdAzx6x5gvgmj4jLx+Iy4dX/EiadaHcFyld5qJnIz3yndf1RoazLeXNiXv0o3lyeQn424p5CeZ5TtlCxYTX3DEqDT/Agv+OZfc+tkTgFG8QjVx94FvbPa61RIVW6PpaFewruth+1Y4epX99jK4sTyLfMmQjc4KG3+b1qcb0gzcOxFnbr80MCx94w0JGtwUDjaXkgVBb4lQEfn8qVIFiDzkm7YtL2plBP0xLPxpNJRxurm9pMKar3pl7FwidKnOERXHZca7SCyU8wEX1zzZsUiWK65nn+WxW310WayX12+a6ePTOrS/I3rPiQfRRFmJgvd7at/fj3zw1n2kBVkE/heQyUCzfoXaWxDj1H6saR3P+LTcxywztnHqkKgfdyY00CAAeBggvoIGZzdh7VE4labHzpZA35vPq4ym1jps8FZALPxdwWlIkzhTSbycIj5/kJc5I=', + 'sYNnWBtttZ0gry87IxwaUT/Aa63hgwAAqBsMHiY3BgKozD9apOhlz8/pIEn6u2LJh0ybDb8gT7zC57fjbwhbFOH8OWtC7pi/mhtla9u4oTeioZQCxapRkhSB9/MHRQi5JIEymDK77dJyg1cL/EuJvp656QquU75jg+IPGezrBG64WrefXfv62csfeihbp5805Nb/hO54E+Dg53vOro3jg3P21xqMLVeXn4ZLibxUYcSZEIrlYujySksZu/GPrIm6pFa2wNnlY44VqLlva18+1N276XOHBb3HdqoFCUkwGMgUt4omo3FbGpTANKNPf0zaLZnRO55iJOnCM/3WhLhw5olcib5ovg1zw2UScbX4cQYZ7Hy4OzsWaILzV9irHFEvJkMAUxgPq+PY7twVQTbj/aHnPodtRpK1OFJ0p2kVF5MN1sMP2O9nAkNMIauBwpA5e61te+TXEBXHgX6t9pbVFh1b4c3l7CXS3xQk07KrbnXh0XGA2Pd7pnhvDTp5cJa88yWuJqgd4fPLHOVot8LjhK0eTWxNjMx6yi8TFA6evZePnHG1eQ9H8WfX430vexBu7AqGDjwp4LZtqTsqBRN60ZeYSavBiYDGsBpzPRYRdkwoEdRF4cHh8vJXxPR93LVDPL6mO5GveXWhFZ8TAEsuTII63bS2e4v5MgzTQBsgZqdpH4GwCx3jRqmulgcyuqh6RmzZfM8CiLcG7Ae7WsGpsdxXG5G52eswUCbbtT5gLcqectsNczQmrXvF5iUvBOKLtTYNer242tLnBChe0BfPrdyZQ5GiJ/tc6413YdbDqSvNW2gtdVrx5C4KmwgPfrcl/oiq28iEwIoaZPARdAKNoZMtGL0L5jTk7P8+rp/ivRtJhPTMISHa6VaLyCQAioxkh1RNDm89' + ], + [ + '4onO9hCz0fvWvpIBpcsiB4N6ZH793LafOjpMa1qt9MU=', + 'FpDEzd7XVIW7uobiZbEKk9ubC90Jg/84', + 'mhA0f6eAHj1sbGnIMt4I4dPeNNLnGnlEOUsGvg5+oSxs/sMkMcix0A9jq9qRsrsxj5DfKaCjChxOAKhNdI3Atqp2njDh9ZNL0Na4MPLPivnxXZBpoAXqxrN27UyulJKdaEK7OM1MkYe5NNnGKRwgbcs3azZh4Ckj7L5nVys2GJGd1dMTm/tz16XHmMe/jnReRBMYzQPWUAKsBvFdiXo9J7hAF5DzqCU+KL9Q4AP1Mz6IV271kjpPpWuJ7X3cpQfsLQA1MsZTSV2OXh/nD7i/8586di2WNqY/l8DDz72AXpaUSdtUL65RQ9KAwkNxYwEZEZoeZSP0dHutPTWEEyPXQmQdlnvGUVSyQnYdt9GYaDr1Yxca7LFhAreSd+uD6pTLpvGSMbTu9yEpAafev+4bu4rlIhQsSyxbdSrorNv3oRuiLmahUfK+oe4ixNyR+UKJhKb6D2xLcs0g2eTldBBdfk4vx+3S+FGsKJA97QXPuNRX+CrorZQEea6GBVzjziXFRWMHxSQr9xFOIt3pYf0EYrb2ynd5RFCD1pWv9oqrbFVdUMfLFFiKFntb+/0h/yHSQKZeC2jbhTBkI2gqNfuVUNgPoviILsHAe2lifJfxsIarjKN7dhQi9zrS/PWxyt58mSc/tsaJzQPxtlwhSGQ8QUdtRELKtmbsAE2vh01s4TUnj/2+rWWzjeAodjGxmvGhspOcjCP23vytzosZNNnGzaHJsEDPzOWhSSFyDzFhZQzi66PCR9N/YO+F1pDYKeuhQzM8W4mXLa4cEG3AW9eQSqiq5dmu+1bANvWKKuvHriapaDG1qE7cLJEn+c8WLgDNa5X6ecpulxyD7vdM6HgO2u8EDsm6evMRzNmgRkY/cmvwfoRFmmwf', + 'dMkiVIfPAu29DyI9qJP5iI99RZd4ragQsoOudFgcjIWjPO5JIapAPTAnKP99uGDHpHFhHhXiX+z7dlUd7FKdRe/NCCh+fn3JfSiZ7dkPKvpd9GYlRsanLbJE8dGAA3W/f5E/G8F4D9beXpmmb+6TjMM14UnoxKjq2RTBiT1f/eLgTGhpT/6L854bSj1vJkFbNLxQn9wdp01ozxgfC7JbmHf+yVw02tqRe1BFmu7KzV6a2PmQvUS7PouDG8nbn91R8C12cWBrwTxfpRkJ6u0aSMlo/pTz/UX+jk/REra9NUu8RtxyKLn+ZQjbL7tTQ3biqYi95VFkPjCc6DOaHMitc28rUiiF/YJ+oNoYVS0u6/iOi8j4+Yj/BGPIg3QRrgL6bx77ELC3VU8+Dlv4tc8fDSxYRgE96Bg9EVxi7ObyofRgFCNwOSLZDQ8FTDISn43h/0OWRgbcR5zJn7Bjk6uoGYyKK9TeY5DfQTJRuor6yJSVBqxY7FS5pWFNaX38osoQSIlBnkgg2TP6O853BkHVPPbhJikH7khLewBjXg2MY7UVdHQokuzJLOy4TjddONNiiwA6m2KrBW09coixq0xZmw/r7ULj0hW5TEoKg2NhnWfgPpNV/5fd2MSVm0zHVm9WzzPRjmffTqxBlOftbu1sB+AxG0f4FJJ+/CRi1hJKpihVoGRStXUaaNByFpjqJy6sVLYjRWUVxQ/ALBFPgv3dR2VtDCkY0T72qixN1x6Up1ApJFm32yTqBbTC28UaaZy8QrCI8wIrHSmPc9DSWyNbGo+YjiXRQCvyT1nqFbAypZCbafLgDEtzM82azKqFNEbOk7GZrkYxOr9AjnrmSny2SpF4yepThs7SDqEiAUZDeIgyY+ZCVATDno9puHKpJ9tpwcqvVIDoGA==' + ], + [ + 'GkwPg6EO8oSKF7nU41MMAJXZgrjgixSIAw/aGeCRYd4=', + 'AfwzNLfErmdJv36UQy6GaADiAFUqA4MS', + 'P6noE8BUZGYt54l3Wr1jxTa8eyDZiGrBfhFgw3VkSYZIncAMYQ9p72+pMj+0Xr6+qOEsdSXt8BSeToQgwesmmkN2dYUGysEcCj9G+AbC5F7AWtBrx1AuHIMhHU0o4vHZtvFdMWZvqpukIEmr4Dt4RBjpKr5gvaKTh30gtJ72vO58hZVWEGjwFrRP4XDRZh+sNkObvQ1qkUsCIUF0jMYgvzDgxL74DjJhnPds3akp4aeSzkTsjVhLogTE+m+5fVRxPmGknLCOrZQz2KUj2P9/M4HXr1YfS+rNVRvF/h8JKvXHJaY32qhxwCDW5JjwRuJ1hTqbIMXnWT2uSfvuX1xfL9yH1G9WxIxdpMZPae64j07+ErfVH0KwzjFiGvfo622cI9p1F4Co6OH9HzyzjqXPuqmtHJdrFuQmfVxlqfwHJdhnuLQ62nrML25ui8dM10fqBzzpXhb9Amn39/HEBfhQtNVpP+ZJJpe4CDPp7G21K/XUeXvjA6Qt5KyibzdV7F9FrePHpban+ekhQtGAuTgF8w/UkvosxLBjFew9suxj2M5LRJ3D6rrxxm7XDsUGeu0KOM19H+k4/F9pe/cvOj5eG6qD2+szXNJAWQV2fbXYNrIGHcIeyDrY3BZza1CnmB/L+DL8Q1K7aGP6jj4rKabPr9ssD3FQnX1S1L7+z+NeI8KEfBghNJx/5iyTLVXoYgoBy5RZYGTAHtzwXYtzfflSTjMtTwvqlhIigQ2s9Syfb7w0XTxWkmoBLPitveiBYMiOrmuqh8UlZLVoGOae5ofih5ue+rwOtOPXTuQDjNdgQDg3UEvPwdXfgO11Xl9nWb/isQCKbV1WFGoCHHiwMVV889wCKBPALd98y0goLPXe/ZcVZd6EtMJ/AQ==', + '75F6ZXrf3UTuljpsF/M65LLhGdNibZ6VE3yt2yORAUnt3ZMR0CMXOIrLLXU0BSCPucO6IOuYJ8anFls1Xggaa5tBgJ00EvD5gPSV+HGVKUXdqbDicd3l1jsSyswFDNoga+CkCI8QUIMEagDiAF8Rur3S6p6ccBYhBF10N8d1GOWvsR7Wi62+k/cyMEaBy+xIXLb/XaZioP5MMRZSnXHrA5KUeLYABKEtA4B+/V4mrNzwfwtAF4IgDjqHoLzxVxPwj7fTYQoJx5bxqWhvldSrDMr2Pq1CwNCAdFYY7tDGv0/RreNLEEO0O4vqM27z0dIb5KaL8we1Nfx3WP1hLvUS+N4TlJMf/CLed59b0lddS32Y+2PJiS0nPlC2pMIWl1UAgRRyWaQHTsINnRpfGJvnihHGNC8nuF8tEAr/GZTer70t62k3uYOT8B2qMGymfU3/NVEo/V46mbVfV2fOq6I1rdk10UT87rcKvVuna0LKV3fyS7MXCymffi5nlRd+qG5w0T85SLfZkxDWfLcgp7dIRIT9141CN/lZiBFj3AWoRdtSpw8pAVLht6+SjR4McQffoi/rRns1fzEe2ZbkJ42+AmCUriGgUrobdsQMJCaJg1WaRewuzafyQwLUd0KwcmlVrHkOuXuOt1AH032dQnOoxEBjBE/bLr1DFVzGZiMZwca43YDxDkN5QbljlK+rDxKLq9Rwn5OujJesi7dq3DoFumG2szi1HEBozB1WI4tkP5dAyjzzYCQlPpTNFZ8BKVqF6IpgmtUt47qtcbh+Lt19SchuUhIniVsKXBRynoa9dntEDYelcTLQFkT6QHBSvaSwecjv5RkFdfqFEuBqFVWZdWS3FmoXjVEjYYhUVDFEDSqxG7VvyJrcuuWvc7F6RErtfvQDok8TdgI=' + ], + [ + 'mN4ijs6lfG3c4iyUKWcfoku+bLTctlGUj22lEunYSyU=', + 'ONGaXeloVd1VePzQxY9xNk78zMu0r/A+', + 'yD49HItjqn+83lPoY+n2sHYwK+PxkntiXquL40jQeltG+h5rVqPoVmvM+srdMR/KEMk4T4I+Y84mlijTflYpq7PQG8e5zIkVyMC2olzE9itWH4SJ5+PuAK77RXx3r0vW9Wshy44E2MvrQGXWCXMp3WLKUVfCDt2u18rlZ+xWhfpW4CJpZoFw0veqpQdp2RjIOM0SCh5jrr7ecTYv9DRzNJ52EMkCkUQiB0HuFkpUl18AcJqd+thtUd7VB5OwofGGzXREFj/y26BqNl2IoXZc7vsaeJQigLJxxbAB/xSp35flbFbXeHNgRx4ofihO3aPE6CX1MzqbNz0Nn81jl39gWfsfE7oDCmqnGcuEQ9NAznTg6/O+UFEnaJXgvKlhjjYBp1ruzaETd+sjtapCpk8znfLwE4A2uXpKW/TBUioH11Pns7CcKwBQsr+O5DG3bOMD6PmdG9jUs/PvJwOP0HUl0vVnfxC8+k/df9X7XiH7GVTlkRZIiVl66aWszUfap9pkuKvN/OiqiN5b2DorOgK6t5P/Agg2r23gvA1wZFFuzs8pLsxu95aI/vrzjl/mJoyvCAJEISqOEewbRI7N9kXpApCgDys5q/7g23Gn/0pFj9xqaWztGsmxDSrCc5sQp6MI8rD2iRLSm6XZBDEZe2THzeBYouoM2hnzQPkRRMB/0rzxr7x+gKGEKCnlaudof1hRe4hj8V8RPJGowj5mYWnbfVH3BMvyNyWT4TWc+pCyI3oqwk3xgOJhvZ8NQ0Pk4/GA6jxbayGMcTJcVvdGeYCo3VACd7UH1LzigyqIzBjMEnWPFL3/r5QEdzDUo29CPUvrtCfI6Laz5xcHxqzzfIirvw3i8I9H1+bBeDp9JQlSoAjvLLd6VrsKU6A=', + 'jeIASEyoZ4dSTbkbNN1lZ/dMYe87iCkWBC4wzl/EpA6xqZKH60GkOh6++77REBEAF+ts19szDHZBzEWrSa3NqMw3e3/0co4l0RlUSdng9eLhh9NCRoLhwwoZcpij7pTv4dlfZUsFzo/8WRYchHywyXLufb9RhhwpGvdWkYONg9BYm4Xe9u2YbrevHvkNYOcuLSxHCYokebspYt7AB/Dp4o3hlt/noTnKJ06VxZxd+ctgFMhXyu7afkYSsB1D1IQrSt0Fk41xk6nmf4Gh3X/xswLLep5xGXlGoax6ivHncfv1sdVCY1tIG/Ew8cN/JOB4TU6mMK+Dsbmu1aof3eyiK2JjyLr4IxOLgddi1SCI1CEFMx2xbSjB5sKI0lfLlDWpFPRuMjNAU6w2DC0zTukGUDcfxzkgz37p4eNlh2xaOsOU5FEQeTUJxdFNSP+A9zTL5b3jtBDT80+gDY+UjlGD4lnU98hfhBhshBvN7DAe8C00i4JyHNpD2xwCLMEaBQn/y5Ttkg0txF7fxa9zTi44o65lJ2Hx3jHwwe47Ssiix7akGi66Nd8RwFsv2lBoKW+gPvY7G4KtvvcTK/R9KtnbY86M1JPn0orQyKVA/lBPM5uvkuG9wRAVmkaDybSbp+yjK62sS+mlxNadCRO0D3RUGnLVaUWDBwkIDChAgsAXvwv2yyhrdaIjUQ6KoIC1TI/UNAcpvuuLqRYiPBGF7+J6jYOiW6Xn8gOqJiv+QFjRfF6MhQcP1FpHBhhsVN36GMxUckGzjrPtFzK0cIy6P7BwRTwZzKhRzKOP9ZrCmNR/cq1ZO+Gqtn7PJXFTi6QeJ8NSs8PJEh0BaYw8jZWWSERj3rv7DY33cw70llSxvEfO6HOOdpjCiqHUEluJcAh0q4iqFLjnzuoaQL6K' + ], + [ + '4u9y6Q1djPKJXnqf2tlWTTPxtzSjBec/+OGKNPJSk0g=', + 'ITS6iFbcSIVXuL4DK2XZf/swvFbPtLuk', + 'niPih45y1y3ef2bXmjP9Fq15YuOgfIUDs9jVi8X9Rsgfr0c1Ij+ZnshiGH1a87nx4gDPO2romAQPfksdwrgly5t9LMX5V0KWnNoYxlPeV5M6kZc6o5y8vovfmh1HWKH9CkKxUsWeSbQEQy7nVJ12kRb7aamTTggeY2AIp7BSV3d23N3LtMzJACFnoz7FXQachWVYDlSojmWK/99zspcsCgBsRwCZx8D2BjjXZ1pFFqH9ICtJAhmFKH4sgsPWaZe/2I5JHzEi+f4DeaoFg/RsegnkPhu7rhi16PqUZOasCpnkhsdeK7xk1FsVHehU0Tq5nwh/1OwaavwZZ8Mr5o2b0skLrwB5AeouLCaCB1m9DRNhxIQ8mc3TTtZ7PLcLDtYxDgQzckKfvDWWDopSMP/hSBXTPe9J94kZSReOcGc5CTsEjB2+wbwDZ8dhV00kLvNmajJISk0Wi5vSi3XD6ti+sqCvsHbzraiIQsjvMeSNNHu9K6UTw9Dhy5TkTkqCGJDFdTlzRtb6E/eueGjUwe/DE7AtuoAcADEYhJqNotpMKLjNXORxjjnxtuliE5D35+z9Rc+mMTnS3pj1CyUhI/Du1cuy7elbatWDPK+ntfk5NlQfIdnOZlzHadfS8YcmZg6iAlB32zFACkZBpwdIU3WXBHNgiXS0QJ/gEJ5oBdm0jKPBGtsza2g7pmIZdHwR6A84FT1Htu97ZXokUJj/YqxeNP/krkBhMONVmNmg1HmUps0RYZWHE/7NEBSlWmJa3QKV7AwIBK6br1wIJMt5O/ZBJuhy/nucTZoa+DoUJmhVehPoJNP37O8YMMmLOdHWB2rRxYN8kfwm3TjLKdofPLuA39LuPyqrhVgZ1DQxoERjWkZKPGqqKqozVZEV', + '80pBzhlCuStsFfAM2i8ttjsymr/RcjFPXEERpGqEfasExmNsutN1CdENAsB27mUckKzGkOkgb9MYyRBoh6VSsDhQXZpOwQ3eSxlr91mXT+dvWFk0uguMIzflr9nfHgDwZqlm2mT1HXZCHwk7Uiv+oRMqnBQ9/nCk0RP5CduHuwK4Mos16Jq8ezBM2BYb8BxT1tdHUDUhs0urcKU3zitNBdcSTNALCnqG7VEnlEwwL2hKdMJ5+wYRFGxRFcSTIzaf0eZ61yjCN0VT5+C8VjTTDVyJ/aYQHUTZxUjTp57QVxnAopjDd1lknalEfVzVO3u2t0A1cgun8JQ0QcFbS2KunvQI6xmTSyFnfvCZlOIIt31kNzAh4BM77aCi3TWxAEtCDTN0RUPxN3NIbCoO51+RV2vH7KMLCp3pE5KWuPbhFWp3TNj0YacXB7NvRx6yY0b+1nDbpYiTs7d4X5yrYrwsT7GomjFLWWyamDXdHebDioo9a10n9zrM30idX9wnKbVq9SdQw4xFuSbz+Q/3lHPoOBUIp7E8Dxs3+oGuMvmb36depBLZDpQ5uck+j421CCh8WM/GKuhsXcLnfpQLv/C5nuipK2jpJMBUrqmMabulz4VpjxGJOmSdtCsFbleGufz71S9Uu5l89/un0aHoy7UdmmH7tfSTUs/MbvT2f753Paf981oJTbVbLzvxGT1XfL/tRwp2/oGrP5qhTiK6f5KNlWC+0OvPkOy9/uq7CQn55lCBBcAYlrfNRVnpeI70cqrWLp3JmmMZ3ap6zwXaYooXRvZaFYtH9Id/gei4P8CuBA9lzKjQfReU63jHpJuGy1GV0sBvjNraVmp6GOetMHJ+wQAee9VO35SIL9SfR6K97vsWPQeNpK34xj/wZUgu1j3tnaoGiBxBiMiS9Q==' + ], + [ + 'Q9sK+/82Y0mQL/T8ixtwt4MFuh6A/pwixdFuXRfdF0A=', + '5mliniuSuf7D5y0epA+nhgZSea7SdS8b', + 'geZSHIaljPnJyTxQv0f/xW0oJ/FQHV5tTZs23oNW32VF4C6Q/0YThJF5ReqefzzVd14cDy5lDHIuIVKgNZtmTqToc6aaYD+AI3AmGRgBmQPV8BUDq4RcCAThnrVqnVIw8+rXtM+1ceysaFA+AoLvcUmZQoselfevPlvZpmYR0ROFA1J2LXT8EqSjVwxtckrfc0R5Hg0GOtHzealOA1okz2Wwdp2ljsFOlhCP6aOJ8IjidU4yI3Dh8OI4mDILWdmp10upSS82Yd4mESWhtlwCeAN7NLzouOn5tLO4qtpYv7TUU4yjEXdpDRufQLmi7UeVuvc0qa49FQSf2GLq7rt+iuNPTf8QFUExV1lBs9ozGBQVooZU8qnzmga9ihHWTEKUUx4y0cwpauvfluhJXgLbiQETO1o3xCSVPXON5va4ayFEUG09ihd9dw98vdeH2ERsFgAZ9PIqjfuNvVTLXzFNRwn5e8swVQocnjFwAYV9yzVPwkQ2r8lKAhc45/mpqvveU1J1SvApwN3tFCndy9aFGyqqJUVuqUJ8TZMfWVHb0bi9p8jBJbRNusY0ugC6Qp5d+5cBxbUyUFvBFbDUaViokV+2SaLg505/iBzQdhjKQLFJcd9QOwpWsHH4CdoUXh2TYYwJpwaRjIya/VdVlDIs8JmjaG0kykmO6ZbTAgQa9HLySKBE3/Y6t1aFYbpiKfFZ5Jovn9t/hw3q/yGerhn+2PqE7N9fRXBLsCeQQBJYRjaABEi9qmdIDw8IUqFW3Vg/8YAI7C1LcNceZ/0U0Jw1Zj0BDGPXCxJ//TU9E3n+8jJiuklklSZzhilP9m9e19a9HmD2Ep3Gq0HGOI46Netk5IFRuPaTbH8d/yli4GdjzIK8643dfykEsUtupw==', + 'fi5oClCW+J9A/rPxACm0JhX9abgRR2Bec1G+UdkfG1E7d/72/v/5D3SpsdGmQHVcfrOlhVIg5eNjZfZMKyJA3o6yOw5wk3RiOajPQily+1mC17eEY+SlUBD5Pi2yc4ibjTBb1GtdKn8fHKB0bMCbnZ9A92Wnga1a3F+l42/MLuQxVy4z6klBwj/Zoc7Euf/5GTAC6dgCQRxbmLDUWw/C1VbGgSIGkALPqqwjK3pB/q7jiX65QIJ/zOmNRJapMJ2cna/veaAKJWWFfJtarC+hGgoYo2q0WsxZKh2ZcdoxqQ7aHrvOCRjR+Qwyg/FnIBXBQ4pPXBYOQQpCGoixKd0Js2lcyj0CjkXXMWbIwBkrIRLrBna+FRUfZb2FSYnEAS4BY8vE7ZFFfQrFe0oi2uc2e8G5AgaMD9gUgyAxqjxeMjf0HxESNllmfrpEHConvah7ilRL4mNx/0JBoQCrWmJPQiJBbh5XZJ3jP6jJ8DAD1JM2411DrJndW26pes8mUW43gY7kMiL6T4C8AMCeaFPQ8AiQspm3AwIhxYQXdqOevwZO+F+WDvwTNkSdgyE0/WVUe91aVKo3DTeLDX3P0YZXbj0nvljyPpCOXim9BcdShJYwNuoXkwLhYbKPwKThYOGoZbgWsIq7g+NiUbXf+boMVIw5HTjx8yXI2+onwM/GswirWaYxnT3Yu1NiAmyqNmwALmGz84pKaqNM1rFtjl8fewyizvPVmk5+mGrN413Y1YFw6uUWHyKmUERuzVika56Uau8+hNrG3BrgWbYJFgIzN77+fmBBOOeU1lbem4BqP3oeQrGfqkDGW/pGuyq5G9kwWKnoOGu26pr8FJ1cca9UTvdvyKWnLpxYJ1e9LUSF6CD6+qVw1LQ+3ZTiGmG7xRYc+rHYanKvX6EgMHA=' + ], + [ + 'uBAklerjN30MxrvQ5qBzzLmdqtt+S3KkQv5zuixZfZw=', + 'xP1b3TwiKJBsEMFim4OP1DaSivwiH3IW', + 'C7AHSFmjiFBDGGPb4vxGOBNTS/+C4FW3+4FrPgZaurxIogXTwMG8NZG/Kk5fFVPbclcaPCmELX1TtsujZ09k5yewmnd8/SQ/oLIIa/Y0N2buOdkZ0v1HltYzfgfRPxB5m+V5a0nGYZ8UqP5ZvsA2+Lp4gbx1vUCXAZjc3dPPYgXPVG7aiedefQiuDdXiqTagx/t2YQ/px+47D9abQKIQ/aCFpHOFJbaMSGyawB/rAiTeTbGwvGRO/yZWyeeSdYhMoEdTt1XVRwGHbv+of7xBnMsScbQfyoRxLRsCk+LpcERGb2u9kkbD6OuaWDksxhrTuwzKXU7oKl3rUZHkRAzPSfWkktHIFQTQjfdwc1DEdICg/GJ8FeHLrAEzw1FxP/DV+YxYFXKD9PD6ul8+An8zGlxnQ1yq/kKB9b1SIOoOGJM03clx3tYnC5d/r5eU/C7POYf8pgZS6zbz2wENp5FPypuZizuNxmeG/nc/D17KeQ/McCMqoEGQEsI+vHZsHxDYkFJteryBjueIsJStDen/ffllblMXj2TEhH0b6wb42maCvRRMC4n8/+Yj2Iq9zXlynbeaMyv2OSMUxW/Krndt0FuoZKHsIDiMqCnPR+1KlDcVFWNjSkUH7KqEzNacLDX0kRWlAfUsQQekAYtq0oN9liCEcgT+SsUscomPy8jCnvv/o4X1AV7V3tPQ5S8oLAtwJo8Hpfe8wXeaTPRL9Sh8JZzkVuH3GKx9mBHaX561H4UV4Uq5k4UbpLuRlEKbHxAWjYOCHAb8Rfo0S7vmW2anhFCqjcN6VLbDeyblyLPfWLI1Q3U7Z4QsP3KWUxFoRJYgGKMj9d0eTH34AC14+pwAHdNrukST9pZi1qCqdvZFTZIV5niyi5wL0LkywLs=', + 'InEB9LhXSMnS83HyfOzHgX4UqZnd9R7Yv8P8T8aBaeg9E1WQn/PFQG4M4XE8nYwlWOKp1ZWOpHWk/JebFj90uh1iNHyts6imfL+FwIjAXuVxhl8MXRfGYQZJMwGQFmSZ+EevYO4fcxiYvK5gDELgiuyCYlXsphOSIZYBlXWWZr3vh11a7xqfm+P1oM3YT+KlBCjcbbpBQTZpqCzchU3SG10f3veSkl/FKMY6h1s7FsAcNDbrCH9Oq7+yBYOYEWXNa6ggZrh8R/j+RXxTbMYFmQQdUhWGWtrPlwG5qUgDfVvd7mFhJ9kc5BAq7J3/4Rh7RBGWAZaOlcoNQb8Fk+Y+Vi+xTG+mNKm8l1TKFv2+za6hrn/g3ErBOURVp/5kEYvX+x/DqsFyMN+kFHsUDrDuNVMgzzvu/ytas8G4Co+g7IbJ6Qj86Wa3z1lEuLBIUvukCh9VWUqbTOSD4f5D7Blezql4BOOMcsAZKl9ERsW/ynxafvYURzHQwCKB8ERNpnnQDJpNqGn+ROylLnEwVBPJYU+WlZ3t5SNZLzzCYC0ZEAMkjoItQaVnRHwUF4PaABPMNdO7fTNHXqv0tViGbmBT+26QbLmUzwo2EFAX25iQRds4OQ+ndSUXbKyAohe4hOopSL4p/tI05KmWgZhJTYpYjggvvaoICA5blaHC6Vfa1AYm7Qd8DsY3ES7AB+YY3SqG11gHSqx0Qqqi0Tzy3AjlQvozAxLPupRBD4+rOwtm4OZ4Y0ZAfqTyknLGPNmxh2pu6O9NlUj1txIcPM1TnpUVh46pJu9ftRc7LHNPFHQc5IpRYc/Vha7QXh1POtKciDztVIJO1zHMkxq8tnDmItaZbJqbhXhgpWaSA8p0mrXvMmupjXfpXi4XXs/TSn4NsAJ+zv/26KH6VZ/bzq3C' + ], + [ + 'Q8HTbeHStZlaXdgHdi7H6YITW+9p8Mru7XawGm37P+8=', + '06GzQ+lh/E8OIaQk9QoO9CyBr+UzNgsG', + '48KOvdnnv006+FhkIKDDrFOS/ZcbMdCCrxrKyi+PDxEd0iLYqWG0oGS5UPLJDaAjqnKRl2QSSmjXovc9JiCxhSr1EwriOGWH3S7QlNKnQUZGZbcgA46TUbUswGFhFSVZKurfl4RG8OjqMgWENM+LTWBA/ed1PTuaRQ8+ySUol8ENQWVSpbr292JEdRAdo+OA3tOmf7+5IieEE4OAhtfHaNzPqxUt5AaW+4pUVKE/yOes6GyAJfmD0HOAKDoLoZ3UDeArDb7AxfcvO5GMAj0dyTiIHJhSmaFDfekZrqPHMJfUhpXn5CnFcUrVfV168fEi8BjxyGlExw2U5KhbanP6opnlhi1OKlGtESlw1SfhOT8cc+Uo0av57FktH+WA6QmEHzNEcsGlv6/qGeUrhG167VFKapY70BJZ2mx3ol+54Ut/LMY/Ogga9jHV9BAP+f7eTpyFrRzZn5drob+OQ7bDD1XbX62SdzBsrdVNo6fY5VOCPXO7gJi+TFyV5LLFLi2lEWqR6tt0vpMKG0dl7QSzbRSVCbVCZIEpxCH6e3cZnVDHZNv6ZwMeXkm4W6ofRf3PxLbTSrRCcQglsEKZ1ukQgFTig2jXCYMqdMkuesFrZ47v8Cr+xrQabtZjgNun/hQfTbtWlYLa3HuMCBSZDyFO6iBLnbLagwKglqAmZtEmgC26/WfILgfpoMB8660PXnyfGZ4kvPxS6YwW2QcaxyV2Sqb8wCxKmU1oBcJOkbxjw47b9K+8wWclCQgTikx18OR9ghlLUQbT1ZDBbNIShwD48XK1K8IOI40ycfYrG6XHp0zNLhFLGbRYefiL9etJ2vxKxjO3+6BYDVBtF+QuvQW203GOOFx+vPctuDaNOGcsv71DMVjfzeRI870Uzn4d', + 'NcceWA6/gsasJlpWx8VU2GWfsie6vkDcIjCjY4JL3K8BCR8nxOmCQAKw7M+EGu9Kob/554SjVHyOblBz8UyCNHAtYE1WQZSCJ0B9LzILirx4iYR0HOBnN8oQ9IRcpkOJYE3T3Nv8y4bK2LSHsTB5D2pJle04erhon7AWxrgIXXPoocB6ATzmKjqA2dnkiIK0vbuThJZjtsGNj9NvLw8LQdUgR8hQNTXz3Znt8g6ZUL4C70WisyP4JoL6TADL1Y7IGYafPl3A3N8k2P4y2kUWlEyVz7YtRkHfrrz/yK9PA/BCWInRBg8vg/HjXE6MDlUooQVdsdv9/oN4rltHTcPoJyv2PYBbJehx1XdS6xqAVHy181rxy42SlExBad8s4Ktbo9GuNMDlZJBZxBUua2DijhrultHksoKxXJzBczr6WVuhjQL5e00D2vPt+Opdsex5VrsnCSTOYg+8T+upaTtPCPOGc/7HjKC+hZNOGaxFLJ1X4tUd+YcucL8ik//AB6ja5a2uBIcpJSgajL0II1kOGmUJzHmmfy4cRPCutOFFGbEoG3FYjYD3DMd/5E1SKnL9ufADeR/2NfxndVp49rlD9MIbyW8jpmczNNA6WwtlbOjektY8qOy53XYPCwnN4K11x9s/D8uYDwyIY0o9tHeRcnkZCqhw8fbD0t++JgB9Ap4wUyRRCuTrznKSZwlbjhW9IJY8I3ihlF3BYS5jYCP65rFs/lwxJ4F5/b6Hm8mPS6duiHx5ZZccZuQgae0HIRJpt+WxeVF87ThP1H9zoTJVgpLFP+5EP+Je57lmR2vMVbP1dcHzAl+8xpqPWT0+wOzUqqVjyvoA24fZTSE76eFdXyqTx5T3gDmYdKOxrUn1EPMfpFaNqOSgSzHvpnIEEUafLg+xBKHvRISgmNmd2w==' + ], + [ + 'BK/M8zNvpuc4bH4GnL6DoiCgERLuQvfTYcp1tV5kvc0=', + 'WZ3ftejSpBoi8eHidvjoeLpRJzjGXFYP', + 'BkWt2nIWSHDqU+9qoZLqaE8WKSZj1qIOYfQT/AC0xKIfh4ouEc8xSnjUM8PvtOdQ6QcVOKRKOdmKuHWvcnP63vQbVmzPFHgDcmIu1/VKxcWvVW6NIb5XZjJdO0fJ83WaB6JLYaDYd+SCk8V5+zP8IKzDRI/MCf9KKNHXOJW3SUn5MEKu1zmnQ0J5ggbURKrcxxvB0+1IwGy1uEb+UNYpOBZV+YcpIE3XZw9oxjKM5rtvv65Cm29Z3RdJUt2cvDl6wF5nD3gADNMOu+4RSqn65H2BsVsoOByyCwr4VfkhvVWKf8dV8PzqNjxgjTOo1UziPtqTJ37reaM2sKfa6NI9RzgLlSoBOwI0bxSOF2ESQjZhn8uxwTQ+giZ1Mup0+rDpXwKe484ip9nQRYEGshcdE5TfcVpgl5cSJoeYVMYSblPpCbNK4fy9iRY2N+RZe4zCCRJasKF2mbk6/SQr5Y0eeFFn91q2iXuCx1bH6dUh+b83bnVay0K/klwe9gmvxZSDj2urjJ35VHaUHPBBsY8VX3gqAzLnqPQcEuBYzS7RCZKm0vxcmZReSl6vi0H/+amh66jXCiUQ5QyEcPyZolnPH0VGz/Hzuj29q+LW2ROEmLNZESDkBjxj+CMXRvDddLPlx6zQsB5HkGb2Z+aWcMjF7YOIQCX6p0J2honR77k77Nwbw9fUBLepiaZWWntIfg3UrG5S004Ta4dw8R/bXHgzt1f4Jr65rRNj5Jt5X47ovfpl9QcfWIKsYB6ni2712iERaG/JRLPdpkUFuc+CkJiBfy3F+5cLZRFtDWFZ9RjF1vS/+wkZKo908vBooATNhEybhdAAgxFsOL2x10Me7ZS4vIpDlvhNqjQlb+OavEov9GAX1XBFViItXWLOFCZpEA==', + '2XG0Wz46DLHVOVV+Y+I5WzYedgHeFjZ7tkNR12/Q+usZZSHKutBAuue4xEg/rtIpnVOIpAH4DIBDFjF8FKVX81VjX9lCDE+w+C9Wed42SfRm5+uwbTqLSv75A+4elTzTMHKjksjWJsbPG/VFchAW35IQbuReuC0o6TARrTVgCxLTApnUH4G1dGknmJ6BNvTZpgqcHfTxRMThAqSZnotDH2UhHDct3cj51o0+5e2gTakmTMhGNUxn9PcO7nyU/ns9VmTrI+Swa2vMjRN4/uPYCgRPbBUbF62E34iu/yG/c6rhdqW5Vi0b2ZxJ1wVqxGilBlw2tSQLrhgUhLFB3aDFj81BUB6gDRmIfwIfA9gZ+xuHCQc+g0r1D7ezjjOOcrzrl4qoLghgj27ihuR40bPsQs4jVrZTEWLMDbZXeNlwI3jJb+PirrxKc287TNzAC9xFF5iQXYXssDEez57aXBAeHL7WhtNwVhRarVOkb7Dp6nNJPdvmwI2SA8sDjVXPrzQbFS09YjHarC1+sC9yaNqJ9nkSTocD4Q0tqzPVeaxYP3hB1/ePXFjijMdTuKPcNu7sF9M+4ZuV9QFSSPmE+JClvN/8sgs0Km3CKbzfiMdtha82Kv5BJ1HC6vSVWCQSk7OF0iwGrFz/YiB30uXmTbvZSwaQFHwGx128cWKLWUGWHTi+GXdYUPkFm9tkhjWPW0p+je2kUqYnWiJC0+5NblnUlB0j9RRkndU9oHvxhUfNfqRQqXiS9P48aMYcFZH7SeIjbE45LB1JLdq9jHqQ8Y9Z8a2++KKwRBYSWBJi0O6DcCqJcOhl4lEv8OGx5hyH86eEtKIFe+Yn8frwAOX7sRPfOgTi0tXl5/eJtsYaw4Sd3wmrawhjIu04dOpyyPr3RfEP6cAgeU1xrWgZ8C98H1c=' + ], + [ + 'ICJJKugfCJbp3N3mmYGOR4Ox/TxEdCutRmotKaIN51M=', + 'qwEck3VlWQl/vKp75TYC0QWGn1jMKWUW', + 'kmZEtev9jtp/KwUaX8OdgHfPm9FNhI0gfKEAjVUB9L753+J9lLG7VuvnNwwwDPAksuqV2QBirrZ4jruZvcHlHhW1eBDr9W41GZ8Oc62vI4rYWdzwMVgnoTRMv3mpvLndVdCTFZQhO7vKv87Ei7VG297+fdzXsVcfTZanM4Z3Np2/Gar1PIKRq5pA+F5Z2h3pTJGEVYOmF2fKlqBip3KZkik8mHNEhJg5wC9y2h96oF11HTtpKM0EV83Uv9JeB2y7L4vKYxp4YgVKnKG003v0oAlhBIZPSUI8N9mSizHrmsUipjKBRsXbF4TDEM6IOhAnSadgxKHilN5iOHykZdoB3M76LtGxa0SwiD4V5Rj84Q1Xjs6+0eBur7tGmZUIYwqS5KskEcRLsWrht9A+MXmDpg6AjkbZ6XuyjmZOQoMLEeo6YlbYRheOhFHk/8S8HZk/pJp36KR9pc492rBrywQatFkdoYhwUvFMraqSjZMJiJ6/Oa9RHwNf+SAx5X3NXMMNV4gdWDD27io4CZzQHIT6h7POOSugXBwpdbMxr/rdEX7yGkh7ohxYKfHFCRFqKaIr/OMSgUKwsD7liu32O6gyJLjbljna3D2OxBsBALCMo1knCG6yX6tejHLZ6Kz0e9+zkHX8DBh5yP2SzM5+HjYyziLu5WLPoLDbTw21Che6lZUlhEOWGZVEHnc8CDeb5Lbi8F2bAj3yNPlkVHvhjtjPG2Yxlj+9lf8Usdq7RcmWj7iamL2/dPww4mAxclEL4qqWSPqYPum7syZ6ehy30ryOBZJ2cS9tkrtxlTdLe7j7/E4CWsZJtu6IoQpuipq+IsZY+d4tPmgakatw5rCzptBYz81k7GvvVo8cdHoCelPCDXI56wHgu9CPSk6vBZvU5G0=', + 'dljZMeRGQEnOtCy7MzCdi5VcLgxRDy1+SwrGxNP8/fgq38aMPDQb/OFob17+u4cz68/Nsy8lG02JShpy1DA3fCD/OW+toEUfYdTLuYzrURtjpZz8MefWIOmIgV6OowVgfm2ij9K+uKi5E/FcGitt3F1XHjRvirazKSgOn3uDEGZm/2fVlkJsIesopasrw4Wb+RHe6gxA/xWBjnUbdd0F4H5f3gSlIUi2DA0E3rGocfL0lQa8E6I0BRL9Pfgdy4S8thVqOKb5AbxjHuwdVk/cguXkKf5ETOzT8pTj2t9QWKz29fcuo1mZPNZAyINIgWbW1l1YVcrAgBdjlFCnhOpwGvArGHcNIflgqlHIzicSqPumDRjAvqaIoNqpHnr7/4NbJg1xL42lOBuyHdWvsKjcpg6xSjKlumWcnf/UHCUSxsJcVW6DLsKm1iF6uly5JEpRFMwOSoAhMVNsKGcQKni2wlpVWGwAB2xUAagTufVfJ8PY1XzvYSJNedgwZE5q/+Nks1kc8RhzJ3gL5QrnJbZH/2K4RRpItrNr34zBfDodL9aGLv37KVl/C8Vjz1T4JpGRooGivSJWI11y4c1unuAGzZz0xe+ekN6LdrQg5iMcqymJiBvi/HquEhh91v861+Tdn25gG0nKxU8zaqPBHPAF+m4wGmDS12ID4QlOE1sPvyMt31zx22tOfKAnNIzqa49deAtfVt+HASbKv/sPkWFiplbiJw6iyzkbCDNACq0l3jIjnFxhoXV0t1anGx+1IFwbhONUuH+CXcEUwIEk+lbEJycdr/KFfr4mpTGZTuyuwOpFQw7VULzXLYkYi6JREHoopVEMx+es/rYXqNsyZEJH1o+P0p9l8U4LKbhK5oeitfVymvNajC5Naih9Roua9wj57SXap9QhIRr+4f/KLpTA' + ], + [ + 'PvVaSDVSitN31HHyOojeiVZgBlsGBdcrqac88DPx7iA=', + '4nsUk9Rh4sVXPRD4x3dNKZr5bUwSXAf3', + 'jtZaGG/7bqgr8XvPep4xHo//WRb4EC8hEfdKCc4elH4GmsA3GTMYgF7zQN3EkduRRs7F7mO1y5TeO1+NbnoMno+5aUBr8dUUs37XfPqsYoXw1LHMCJARD395nxXiriTAN3tt3P1QwvcX172KNoEMH61BztUVi50XfJoG6wWZZbHtwPfmXyG62A7M97U5TZ23eqx611Gl/TCQRl/s2yafKZ2fzpkIp8E9nnxMoEzLRu3AQEC59pwc0gm83c62IVwmDjLdIDIgoiMXvNXrdBw5KoeeKyvmqetuB21d+PYhAXk8O/9FUAx2ZwDIwxgJ/bt3WYxTHiduTeD08fXX5vf+oEqI/bmlGRhirCr3Z7n4V6wlpM7TZywR9R1FaaHm5+6bOMl7rFZezeRbbY7Gzipl0aF3aUwNhTc0CIUvnb71x2RZI9I076nvFGcOxcyY8/GTVRx2nYOtJNLrzuPTMZCWiuN0HYBk8asHjF1L5k5kh0K/EZSGNJ+5c4MrFFW0Ne+LqAdFf1y/j9kxS4GwL553I0vAay0xtAH2Mc14jZqnQZ8Z+jpqroAS0MqPgsI2UqvY9RNZY11SB2zdsuyiGmHnKhQnmRK4uLD2WGjHfDc7QkPEtEuzvJ8Jvvzhhbat9lTd7AyWINIENxzvualg569f/rjVzr9iwfyKjmTtOCyXUfx0rFtPNBKc9ysQsH2oegsgXQOK5lOQRPVCrZHA52z3s/gTn4QfWpd6fddYs3dpUmCJFkzBEE5TEpR4vpzEG3aR0g02CN+0/JxP3mXkxaCiGC2Pj4MNLrQu5CMjFWXekybsASKnSKJBwRirZX3uFGxFw4ZnVFM/vyyq092fEBF022qxnB4Hv9BVzfKlErggW2nL+YgfmmG9l5rOyVKFvy+E', + 'XNrlrKndklHkBjnuPl0H/EdAVS+7mpDV2bSKOCYWUAeBDciHn5qpFMz5GLVsddBv7oMLVBbyVmJwzaHtQ/f9DSgvw65jIamPGqP/WAD6r8tTzPqoBG+yi1f/QttRGX5uqhTeeGcQ0+dscnaQluwJ0kgdWzNVLEy79mGOfdRMpFrXYLDOxzAH206CBiPN4oZtvxLyFZKCacy3tlCiqIspVNN7SgGGBmKXbhP2vEFEcl8Dsng4V/qAr5kqS1WxM0lwqgSEPseAm3yu1ZBjW8Ux0gtbM49qLhD7SLIfBLr96QHnMm1G+pV5R9IXft2AibxWHOmshrnTDhaTQGfIdB9PQx9UdLl8aI8d0NXBPPsDKH57fTTb4jk1+VCyxl40ibNdyiQ/YweueI2TIH0Qrwwa6OUzmmCUKvQvSyuX0Za8YkT6sUz/01znKdHXjx0tBVfH3VrdzQSFBZk1leJz0scgUz1sJiwlFtHipf1aezhURYZMaVFAbvOL3mfSTzSIt2rSXkRUW/76K3Sd7Dkyl2mVBqKPIbqk+Z02mX5a/PwBpx0+bvvJsT5HDlLJdGPZxCuThgvDD9ujnoHJ6DedMBxd2VNy9NP8zMFdoCP/sSO5ZhQyUs2LBsjDmkfT7gTZ9S7BRJz0B0yFguygLky0NQnCUSLHxwE09c+C6QbytDxWs23tlraaQ29PmN6C3KL31XarZ7Z2W32RFwIIy4CDvzkV04IUoQ+rhoqHCCv1hy+HDhoVFRT8oC4FtKJcThPFg++6LduMLFA3AiO0/1PNmkdVD6DorEE+9eP3hADQr2GAIbXRuqbqx9Hedcch3dBmjfi/nMeEJaIrZ3RiRtXUJ9MtcSSQhuqNixqEaVgrGt87nzSIXRNOabWP4KiNAwZaq5E2rsLLgUmYARBaQTpGWhRoJA==' + ], + [ + 'C10eMy0hVYe5lVl5qatMbaKrcdbb6pH/JJoZQJz0w9o=', + 'HaCik/DrFkdd0DUzX6/JXtp+7kmSmB+K', + '05oyvjnxD//lANvZrrff39bCXSVrkMarq6RN2PnSptJq2uTEVpIyP/6aHRqikyS+l0TbiX25lpHTqF6ji3DRtK9yVT7hinUou9JQ26Nk7BTWi6mXyiwblCD1yymQ3dc2aHBkWbFm6AppfR/Tl5iXcAyKeiXw9nF6juJUBlFGs+jh3DK6MN1kFaJYpPXs4J+QCaVyQwSBuu1Hz3wFwHnpZJGeojPmNYz5xLso0EoOZ9erftDXw90OiM/mrnIcfla/OXHPq6/VoT/uvhSy28/sMzyMNMUGBXxyTeXphgwnxJmW1sI+J3UKAE3b4fY4nKSgpTcUCA0r77rZ8kNuSQKb0EyZLcSRtEpKEkdge20rJnV13byzjblmTc3DWJY0FB8DuFO5KBNRoCvYag5tuejHo8mtn19CVYkbszZORkS0G8TGZyLIzgmjyKJYHFOixaRAt02dOQxgOKPNUaN8epQnKKRB/CFIXT9F1GyEGlroCOV3Wsha85eCnU2lKHSrAGwV42ahYyRQG0ilbql8Jq4Zf+v82SgVvan0vloyN1jC61ni/KlzPn3gmUdA4q9p9oOdlHk7FzauAFXkT/FW7f6clGRQEe9U5HKMiL44scmk8HBN3BAjT+AWwZ2xt2eXSVEIVemzOp7Epm9jzT2ifE6e6NMJGuh//UAxJ6oFnioUbUvLI82bBwvMpT0hPfOWCE9u5T7Df5qXFw0cvnY1+9v3RMbYWeTVckU9fLoPBHa1q4uzhy/vIKFi0UWDBEvwT7MhWgD5i6QTHtgpjrnN21xHIf7S0zIJQK2Ah1SiEr1OG2/yztgmxvMefBk4r7Qj/2eWK7UzpNv2bUvWHQnmO76Ft7i/xvTyCl/pEBuZ3Jlnuiruf/z+CkvbzbY0Xwri5O/oFA==', + 'sB2/drp8bTVUBG1US4zpaVUm0h8IXIhU9R7kQUpmG4BPF7lSInDbnD/bfzmAcUjEh8Dv3fmrFLKpvQ64TIj4oNzD3qCoFcXITsJvRCfDY9Q1oa0iIt3mbpRcyThlW/1sGj7QcB5YkSDMHY1VM05XJCVC+aiQcnsU81XuTQh4vRoKLEYaEOCcmmrO+TZhYk7/ZhpVDeIx7XLZvlORVOt58ujJD5ZmKuk/Fdacua7GroU3QAoT8rv8iLXzOeLkXFKP2uRsjvFWk/UnWzh1CFaXIoXRQtQyberqI8sbXl5drpXdU/pYTCgibPzDkky+43ib4vq9MTugoW82VfCQXm4oGTN/csu7qR61ueszt+mV2LhwXYzgcq4Zy0cNhTQM40m1FaCYDvsqGtEPbUWvPHo6hUmIEffgGBTwAhJfIvezeGnTJEkI82SwCY46PMJhEjggE8sPe+0AWnAJr5dTePrPTP9RiveoasDzw4AC4R4A8xdLXhP8NCn+eDah4C9Cr/PdJdpDy8Ec3ihAGqOEEm6zC/XpSctcDqng2JddOsWko+LPz98WzRPuDhji1yDiruinZilU4pRqEd3nrCrKGOIBd3QRaMYkNHlKWjQXvMM+kzczWA0tBOnadvOP1qOqXOudBLWpDtgbODKzAp5vxBMsNtwV7By/Gi2qbx27twPPp9S/ODRDYrQIF9b1KM7i4aKuJDwD2yGEXQhWCJNGb3VBL0+33T7f1HSg+e6iTDJuhU7qZbH8VnXPu1mVeUIwd/mgEE0nqpjbICiepM8iSrT8uPCLBSsDqAbPwKNHWgwvDLx2maxwfBYmgI1qGem0O0saqIPO0cbKnb2m9pjUiNJCXhMgZ3k4+aaBprm9xGwVwYpB5rxhXd6BrXbGfJ/Zz5DIItqOre4G8y8QKh4zc3SKG7g=' + ], + [ + 'd9OL0EIB9XqgH4bUnTIqqc0SXTaiikmc56w7yT8Tz/A=', + 'wJiLYjZKdgI14PVgGgFqIW98AjI/Sm1L', + 'c5rDtvBHwXlNuVTn2BeVLoWB+PwIzhaIfK6IgEDxRrH4e+mktPYunsXD8pJPGz+HWKN/IjVgBqNrSph/d8MmIUnpJGl49naxGBaHVa39lIN03ChCm17NIricXpGgF8Dr/TBqXZrskRtp6hmBpTUi1vZHT6dfs7f4oSlzQZcpNJOxkVmpJCRAgym0IhESfM1qfsdVK4tOy6HcKM/JRZxuW8ve9RxaxHxeyGKR6XxPy3EeZshPOAgOsfv9LrETZELMZ9uwPfbkUZTbGXeBzuK4NsshipOarqI3OOx+TrlBzzVQZ32tmjzrWV4BDmcs4NIhoGGzSCVsReGTX42VL7m72MbAqSxBnDNPRNZZM92hON/Lq3oJQ3jDR8ooK6CXtBm2xgz9CJTF88CYQzTG7sZcLQ4WoRTEX7G/VodXqPkkI9g1MRpACu7t/GNQ/qWaUvLq5sxKQ1lwyykVhGjnUitbsP+Is7qxMy7PVIoLps9YqHpt85EYpNKP/aHnjnx+wlRxmsAA/+fIEvscRn41axO/6Q/glP78GQSunqAWpHxFvs2GxPpRlsm/Dj1Fe8Mwy5ZSgUwXBKZ1cXNJI+syGG12e64WKqBPCGZdtY0SXwJl2gQMOrKWu1LzAQtxLLv6AYBjbAvYUvQ5RBsdOwyw7fBiPCbYmuQkpkSjHwtXieidB9Lbl7vg7qPbTaFITneMLLxxo0STv7Pnx6wWA1OK463QTDGJAcqW+XDkiGyfTopPyLaHiqN8u/QcArvrm1cBXFCtLowK5qcNG/IBVJQGMUMuwHdvG3NiKA2qn3U1tn/2DXPuxT227b+3iRFdOfG8A5nn097tCFkWs47S9xyCCm6hBYKxGmcc0VXU/YHBuU3rHt/aGwdo17dhvMPiDMogszHF2jQ=', + 'scpSjwT5AEmY8Wl+GhgRCMn08MEs4J8YZWMcawKS5U4gXW9Klf/OgdN9b/vvulRXHObyAvU2EBjJiRCuciGcnk5jEZ3C/8hZ1n9snZIatw+8O57wUwWhXYilM5by1mD8pUHMkLHFpUWlHV25FC38Y5DI4EdAhs3MxCV4pBeRcqtz56cbU/cRfjdkqEex7bcpKuFXBBawScDaT/+f32qrfscm3jOFVAUPPDO0yZgxlHO6tUX4TsSL+qDLgJyVuB/NZFfErzGt8w9nKFBw26Y3iTal+FwpMpmG0FbejUG7NhzDF4pkaOvLZSUAcakBP9PKG8+YipaKLKd5UsnElXlSdAZXikIuN4BLwoFWBbbDrdYrei4g4l+jmb1ffaY4RR8xBD70fQLbmrlQ4AYep8dloj6Se1DHbC/6253CslGZPmm4e6tcz2tABTvL9FDdYlXrPPXaoJKl6KD+bKtvjOCrVbZHMEiaFW71dhX7BWITMbQzMoolcwulyf4FSb+Co+mDuR2E3Pu81wDHf+FqUfURH1tz7LEa0ujPgnQvaRYEmnWgjJ90xAF+EKRzglK+m81UyRGVP2dUr6RtKn35lBQ/PnjE/U98uYxh/BljYnAg6besK8Xi9dpUPYiBsjR3q+uADlcJZW9xe+//iCigS2XzCr3GxtYC1sRHbmN/T8RUB8U3AY5ogtOQ3QlK/JQnRmimCjBHCTwIcO02q9xIJVoTqR8os6I/eChn0UY2fG9GbQvMI11Oxp5SQUf5UWRsDTaZkKbVXFizXsJPr4Nlbo+k6PdpS1Eo1aGrzHeGyPCKvvcuRq3qkEUD3h4Fxm2Wr1kBhrnJ7B63yWLX0BGY8cchtsHhwITumuFcyRo1TQd3RNSrR1acfO0Fod7pFkmDNF2c5j2tgbs6bxgvjjgRnYtbmtR0' + ], + [ + 'G8kwuHT9QmeodqmWZfAk+9CSLNFMQimkDUdoFSi1E7s=', + 'U56pV7D/0KeLaIiXSZuH4zZPNbATiHP4', + '8ZFkRXmqtQ4t06OeUkd05ZYdDboTfmPg+CF5FUv4mTscNe1YK51NELQaiYEbz+udizlkJ0RlX07TnbVBLvixWXr3trxi7OuJShQnuGAVv/cAAD8D+I6XAhnOkTx+UgaHLFx2I3TYiquf39tOSgshSbcDe/K1YUCr7yn8ChyBi+qs4QuRDzCwQqaIzqdBoHz8ANRbBeT9vE+Uyv1Y2npT6ae5z0WvWlIbZsxbET5umQiULQMIawCzH3AAnZGYlBxWDJrRl2Vo6CiCRDzsdELN4oaMaDGkRlOs/q2L0Nl65liQJoBaOrC8Qav0QObXtnMiCmIWkH3JrRt0bLOuQkc1xvzbKT3aR7ZK6L1Q8nfJELdTZKXFpyYPMV2BwxEeDQ+NKgR78Owfib/hnT1IJY+DaWuI+LPCpfoTSjvjMQHMRb7piJbECCFDuUSbqJouoVMz/QZMstMEpeS+FHuD1tqL9X+FQ7C8jDrReOldIw/anM7tky3O93niGIMXdTMhqCP5lq6N5u/z6Z6+VjnkJHiFMUZkq73YbpUMbz1Kdy+PYyJ3eRVGGDH21W9vTHxqFcIb6J3qNFy0nMLSD3Z6Z1EylibeHn6rSSeH3+dpvKD0jRTRUgqyY7zaSWyZgKnOwLmVK/ZMfWZDVsaCxMlKpgBqHXcrU7+bK1uEqJLYvivXpeOx3Ynv5IGJ1r2uyNoBL1tWNRILGNpj/P6l8BdKV8cGckDSQfthX4e3dZ/61AnAZ/PV76XZ7j0yIBD92vGIQ0Yf1P9KLUjzUSXwS+F3Gh+AV8dNbUlNvrxTo7Wq0NAbIWsuOCAYtMHTuShjS2x/AL4bUZlga/dFCM5+761kpBU0CdyDQn1dqJo3+NDjzRdSXOVGGrYsKh1tybm55fw6YfzdzAWL', + '1Feo1ov2FXaFk4TnWtwo3TfbGXdwm0eNpZBNl+l/mxIiEGfBJfwPjGbdykYejnmUDBBY6P88/jENGWHk27Rq73HuzpTaojpYoNtJo0JPkuWRuxyKTmvl2fkrUGR2z6GfXHYZY3D5/9LysAmk1HiB7f3wlQMJv+gbhy7gkrdGXVlIeBdvaMZLmBmKhkLwAVBy79k00GuFXqHKDBShqsNFqp1ldQ8V9KIedt8Vb2h7noG5nOeEyPg1x0owJm4V4b3EMKfx9q7sN2ylGNzc/JKuDe5h9yvlz5GD9z2JAYL+jVmOxSgDDW6xy8+iu43TdkH/Sd6lEN16uljThZc+MwWhVrZOGyl26zN9zPBXcPFy4oqDeXtJTGht67kTxpdlRrhFpkYYQ1uM/lUS4BnH300CnNjrJKvgu49mmxQSNAcrdV85oQzx2hUU+Sg6xd9FuE4F38cxee0WzCUnr1tKquZ1GJE4dIqDjhZ5zmld8TXP+plitgNKhqP4S8CJ94dcO5NiFEzTg59ikk9EK2mfoPMuOMWANBj6dMpk2jyZsxzblBdVbVG5rw7uyxf1vVhTM+HigLSspUJEwUPllvo3I1cZnolUmad1LTHjpoI0yJqQh/Rhqz45iXpionAsylft6lkGMAlbFZjiWwZpT0QJsRsk9mM+L6WbD1BySMWKURYC70YM0nVUlTKSN3jHmRgs9c2FVkgpu0dxe5Cud4FEPpAXr0NgfVsjn3kER65jwVNTkKfnd7HVIaWMr1ml7j00NIPLUQfXVs7fYxPRwimztHp6y+EPWw5p4yMdvCx+ZEaL1YwMxxTi/nF+WM67oRWgJFWZAetQuSr7SsI7rUcb2RWBzW4zSOlRC14mS9IZvbyWPPpAWurZIYJTCkaexv6vo3bDyjrF95LlPO4zln8n6TvkvbXPZg==' + ], + [ + 'TlOyrm0cp293U6kJ5qNq9Apo+JcALAIF1wzVpLNp2q0=', + '/0AVEIWBdKHOTh1UhCNyvdT65WZdD/OO', + 'r/UfUXcY10ATucjnB0hZWbRjAxXbxWp11W56QZYkNhWkt9JQK0pCZbJzdpWznCcvP/QuFl9nyUfr9daoaTuj6Dq4WANLvgbiVApW8hRpRZgZoARLBlsNner6ZMcEQ8GSx3/byMh6GrlmQdypwVfWJ0vQaXZgX0r+cMcLE1u7PuXGVnjWnhwY5RFr/LEbS+DTNNA5owoOfszDeJzrH6E6iZKjcfrdOoyKiDJjwnJwbUIaMYp10paRwLqFC46U9M3uWXqv6YDw2yWqKXpIYUro9fI67sq4dNWZsnSIopEDQMB7BZh5DcgDdxBxrLOVk9Tl2tRsIvd/j47xeX8Tuyq+FEsvlmJ2A1zdYmvqK7LhXxvGKNhXV3V4NP73tkvrEI9KqqEZWsFho8kUXdc02w+MhnbEmYQsjDLPCWlx5DrvBOrDUwjGmGyrUakonu/TA6Lr85tLQnWjaazvQPCtSO3F9S029ojylGXWW3nXY44fh2c4NC3PzCyyuRKSoDHSMM/B+DJHaEfLJ+iT00MDMzihVg0kePsbM1j/nTtj9XspRa44vmHgQHSNSHMM43hhp7G37E5hX5LGh+NEIhxDNM61BymZDKNBBDXTcG82fqGhtRTE6pRbj300sn5XJ1xW8oEa/GlCZ1ZFox21IVs8yTPO3mxNC3XiUtHKLjh2CZFnVQaCfaK9+AC4+/CcPWv5FfV++yKoemH0YYNzi6bI59GtdU4R362la4gukuLR0mKcKaXd9YzUc7GmCXfF5lP7tqV0tBteZ/dM5X5HySazJvNw1Pkn/RUTrSio6vbduXRAvM+9tKst/oFfoA8vavERNSVZ2LCWWvq/nWbLPyxn1lMLaci5xgTZ6Pf8iVWXJRwFWfp1Vpc4X5Qkqjj0I6NIQzkRvMRZsQ==', + 'jUpc79Ji+6KloMxBbYTQ3ZGH5/g1wqWMJhHjJoqbMBdkHR9ziYecHfj/4M90l84p9+gypjOrfs/q+Fi7B05jlAK3MNAWPeiK6GhOh8xCHVV3r6+ngXWCT/6uAPgkizhr2SrEMilZpsL6LE8dVmCsuOh825kGIYsAbsN8sAo6BpTwX1fdIq2WKorJ47GrFG4EVxZWBkMyXuDr8v3ewDhZobo64iBb4wysZGdt6yZEwvxEYUd0TaWr5oOAzaAYVj1/llpl1c0D2K+Gj//+clkwjI8WpMbIhnGnyvDNHNtpoi/Dkw4QLK7FCakalArr/kxIuZhwLsZg+Ragq9h4cDKEC1G5rURXlP7JrNpgR9SitnSPjT9tZyRltOcJNv66+VlKIxu3/rZb5U2KkhDN7q1/g9ps25ghXVTvPMXtPWJ4Erq+WXIrVdZgthnlsoNdSFit8yyLRx8I4R7xka+X0Vl3YzHoKFpS3se0fchk/+oH7trOnRYrctiT85lM+CSHNq4R5buv0B/DtYqn4tTeObkY/ybYulaJWt4gUQh07J52bFIb2x4Un4qFOEqbuRdG38oUN+bMW3WaHXoX0zVs8OdoFbhhy1w1pal7UojkmrHR844c8xjz0Pd4rxEv5w5yxGiFG7sJfWdKPbBDvgvVOCb/xx5rfaRMJmctW2M5GzNfnpc9egIszm+xfp17cATIfZOTWfRJvi5w2FtnnPAa3Pjpg3WojXyrIBN9c36J0kljxXuAXKN+AxesTtf98Nx9YTHH5NuATClh03ijw+gzOX0U/uT7quXj5F5q+Rq+muoOKUSjPbe6rROoo7/5r9UiWHKaKWj204gaJc1FMWEs4EVl5Trnc7mlspChHD/P02SqF5ffsjWxkUH3HP9CKnAm/OoBmYmtwSD6/VsDj1+CPhCO8c/3l18=' + ], + [ + '2h1V3XCVA9TDuWADiuE9Cnukcpkp4gA4+E0d/XCUm4I=', + '1g2rJs0xFOzGoc74TrS/bX7hyqBnGq8D', + 'Hurbwjgm6XDmJdqpKgK/6d6re9qNZJNuvPhGU63ms/ypp2LSvkQrTHWcjhE6MNkuDyFO2o/fc8g25EyV4YUcLHuGnbBvb+FrIjiqH7naNi4p8nNbME617+WAG58MgxKXoiIpqJGXbu18p7+fPNpuAaZm0lzKmfy/L9hjscZ2uHnF1FV480uYQC6sAURAz4IoSlK9THF0yd3UAYnELmKdWwhazto1zeq4wX6+frq8aDwMyKZ5hbv8FBxnaj8RZD3SrndQmBEYVT1h8T2KJlcQ7sjyrleaToYYDTvev+/MGQhcRKat5XpOO7n94CZExf4YihkBWFnskEG3Pl6sUmVYKxZTfZ7oiNzKvR8AhwbqTakZz3muvFEcqCCto9wuKG9jIglmWtLNGEGyEFy4TMc10fjAN0fUXhTVUMZhTWoxN4LpyaKjb1mYOxk0W4L7Y/wNCqOnpkAhji27vGNTTyxeH0mlhtP+RLYGOnctRob3/WMYed5assStfjH+xmgYOpHzpXoW2LESL9NsWYpHG2Nk85Ehx/xsDDrPC52AeXm9Wsxsih3trOHyR5bGNGMnuiSDn+q1aD3GLtSX7imRSCTAhp1oNUN05wqYHhAIuwj0ihWy49hwhmwWBvE8AdQMUy60Zxzet95ZkYJizeZdtJE1znH7agr3PEClN+Hz1lBDgoP2zZiqoXlj5EVxc3N5p/A+QYNF6SHfJi1OE0/6SBlo8gzDq3Ts7arzl7i+CQx/arrPVUs1VK9tZC/eE9xgKUZf7jtGPJcaUFqzshsXu1PSsN1veyWXBBMBkh5LEFARtoaCnCHNLiXNn5F0G7wOMA6RgOax02Hu7s+eNOpy9x3vJKRV26/f3k67QMwUFg2q+nJ2DaIQMd9AB5USmu8//KZupRNojX8=', + 'YGtrichdlldY3Jb3hRGmxOqhtIkt7DssRGZktH7UXix5HJoI87W3H6dSnzqpR34xaWDzYl+VJL6NWbr8pEvFj3EKaizYEEODfsTnZsj1l1M8RQoqah6g8pOxj3W7eJIDnMaGNxKxSnlG/8ZQ4qqkVhASfKrI27iT2/LPu9PHzTmO8PmNfv9OkqMDyGDwYjwfjVEMsd4U7ABJ8y82zaTcRd/BapeiejisaT346diOBW41pr4t+9Cr3cCoJ9l/Yb1B7/0kuNUyktD707thsBqewSDwRX/UfJr7RakOFlGYKKu/udvbfwnW0a+ab79ECUgus02teomhCgdOboaD619fO0nBQraIGQbtzmIyrJe2KuyszN3929lVvwdx0ZUA2WaqG1LfpU8OTmAKhNHzmuMXwaXPuy9bSeqprDacSKDD/AgkwthGYRNTekJK6W0GUkuqCQTS1aBSz9DNbuROjkrt3uBTXeAqzCMQUY8m8nAQlW4lWCGHPvSNcuN2KYE2YQasNuRzhUn6b3b02ROqWXZ6MR219eeZwzAWz1zPkPot6uDR3FiPG5GX+ARDDaOGZyL/UUnCsBmYwUpiIu+L4WXAq2S6Ds2oNc+EyrV0ExMbpWtierlkUiENrMIVC7k7Y/4kZWvxFAxhPj/1n+HZTMHNexrFHS5Iot/fgNpAyETTwUo53cho8PKiODNDGY+RNjsECP8qIhM6SEGxnCt4khcH98MmyRuR0PUIP6Bi2//0vJoBhLmtUk50STb5ThtmdD/d2Iyd5WLIYFXdBlKecI1G3roWGPCccOyDQMGPvoBBkFIt7v7qEnpaGfmEOUAuHM+XDkz5luS3VJvDZIVMMLZv/Min4b2x6cmrqs2BjMPmNTLo755nNy7b5RxOrFGTPKL36A9m2bXikWgn+wV8oQK4irN8bKyU' + ], + [ + 'OOafTLYtAtu9gDzkDlQ4vqs398fp/YKkHdbqBSoorbY=', + 'NR4mNLoVeo8itweW6a1N7OMXFW+hkJCy', + '9opDR6qCDX3704LHodzcrPUx+b1zwqdeWkvN9kbCn0E+Z7YkrhxlPiJ87NBHPU/l2K4+WQ/kicav3ZfC6bQFPFLLp9u4aN7wjnFua5lvDR53/zhC0l5Fy7WRus0wdGiBJxjjubEmlu7lvGBPl6s0fIH18LDvhieep7/xXx0/LFy/3nI7hKJRnhX0F80+N6OLFdshmvRS1eKDb//ez3ATwrtUYrENnzI6Tx6gytO+VhRlGukURlE4iyq37cHub0Gy699sAutrbSxUD5HzNBCvaS7fJRihjNnEiyk4jBsR1Wr7wwvJewXKFO50z2pef7c3QbuAV6Yw7shJq46fo2cKr86BOZv4kOCDnTCaTahkvXLUMV8zcI9ZT1kU/crid5HoYaLEQ8MBCfOrfN/PwnRsHzRYTqoBw9OkcSBiiTpoAjT0BSR4YuVYKBl9LHcdnaz+boAw/hv/BT4WDtj0SARExtZil4tt0ETnW3L+NuwS8lz1Qh/qvtxJPWgVioz+kd1Ae3CaU3T52U67PF1NazTQpfkuSWUcwvmnelBPz925ex02i3Yi+EM0PBywzFW/b6y8qG8qgRQMv+jR3FcTGKQZmOxvrV9UwTn9GDd/i9aEnIqypTyULC6HdfFJRMsxY4HVOEjK4weF6twwhVNu6M2L4XpZhhiexBUBZSpp+oWwVQSTiBcvwHleMHDu0B8rqQ1Afs8GBcuJEDM8G59WztMUQ3xiQnlGmnTrh281GKt3g5obR+cPFTX/ZPhMhOZcMPNQDNxoUwPqaSs/nmNWaUvdUvEU+FfZYp0HH+FFp3rShjlsYUylrTJ3miRzmg9E77VRGLxLyxZy7zgQMy6+3nqvl4d9RzfmLhHMvT58ABesQ24dhq1yFNyl6fHzZD0s4qgXUAQo7ePy', + 'O+gIOjqnzUuJd6XFkBbLO3I/B/yCHx+FB537CzdPKIw+q1k8Vg9/QsFYQtLU3tuiVPWBYZt+dp5o+n/i5aAUCYSqe7J/XMVXM+sFjXMRTr2UfNfNU9rT76DF0hdUDRZImwrbmWre3BysdERXULRgktMS9KWZcrVcgZp+ojsQ0ldst6mJ9Yow5YB/U55dZFidNlvhX5+oRyUhJG0e2kA8jGlbV1pi3v6Z0aUcJua7pQkAj3eYIvrubq2pHuMKilgVlhBSJq7B1Zs9r5omB36N8BpbMEuAhixgQ+OFvbRV+eokGak1WSBbyzVmanfNGXuD/RXmK3uxFQnlckcM2IYf1TmlKjM3Xh8zSIHTBIZ4NIc4Exi/EHQfXkDzzE9fHwvAlJ3PWGAxldwO04pmAlqWghfd6lTJs6Hi6cGrUumt15R87hM3liOAT0LRb2B5ZOyaiqWRXeOeWeB/2d/2F71tyZjF5NdMpZJH2tUfVgbOucj7EITacYqBqvlonagrLmyXsxa0GyjJmO827ueIMC78yL7Re333BS1iPE0exLuheDE57Nv3d/TAd2AWy4Xyu54D81nxgKUWOJDAx5ziHJO5KgzX8hJEl90ut9MxLszT6A8NSQSiIDrKcHeZc8rVnO4V8gT3raIhw5+9scas1cF/lq5Cwg9Oyjr58dFpb8fR7S63IVR9eANJD4mqmgdoKEJDSzF8c0wEF6kIuEWGvtXN5tKxmsr7F84laLCdULN2jwWnZUb0e2ceNAmHyEYOqhTtPDEcV1VNV3/rVaMF30BQluM/jPI/dJUNPKcEeB4AdKsU1TeBQ8pyIfymndHrPOfIdvEKS1O9Mq7WRCmjkkeMWVxDuHOtQSNIXIwciAcUT7WlKNnLO5drDmDQ86JCpM80uaMDcLZMof4CXP8Pzr6TMl6rS7mXoA==' + ], + [ + 'WBc7DjXr7ZnvoS2QdJ3KzyhtfhKPntL3YNdN2yHCG2k=', + 'HR7k+GEvAmEoqPA0b4y6+0xLCSi6OqO7', + 'NchAsn4f5sZHBvvNTHj5yODfZaitzOC2XF2oTE3gh+G0E+DhlzQHDkjmrXO8xfo4IEtJpjRZ6EXO91YXucT51b9wxR0ERKf9e+AR/LYYelvejYz8c4V7Qpa5GEvgEPNuNC3n77l0yok/9E03Jx8xiTgKw76asPAVftnYEjspr1zSUDFUc/K3xGGpdpRFf1yAA7Jycg7Qlalq2MTjQfy0PuHc1htQUhwRrE5mFqZBxK6EgUZ5yzTI8H2x2vcCStDzicZizQk/DZ2VKxi0EpaOS6DWWu4+JtxIsQl/F3lPglBhG38cPDz/ruWhtHPL1hCDup1Mc77lN/k2xLTXBcJcldUARpWOBCwKfTUNC6yHH9JftVZWsY3CI584nkJ4ZEnfqn1B0RkTNyTuNw3DkuIp0+UTQEdOl8KzpHUI9Vf16mCFBKiL6USgY4VpHfcsm+s8zq+/3g5CPsYTQNxQJVPl09Q5GsGSjkLHRG/+Arm7qu8c6/F2FB4uUyy+Zlx1vxMuuFgvXGY5mC6EnmhIRbGOJMKPEce+rRYfyBZtPlpmEk0zryDtSKDxA6rOfF0OBai22bMdxbh6zKDs93dy7iGtGW9JoScTl0z6e7TCfsrEhost7Vtk6ks53OKYkXGLRZfnSFtZWK+ohG5P9Lq+PTyR3HSwPqSeOfFOIN9J9sH0/sceLw6Bz1MTIkC9LjFuR/0FlecAnPnNlMp40cyN6hsZAh3qrrc1I9a1/o/lhkIqQ0dEXyYbFsNm6fACPIG3gcbknkj7GO80WjdTVErlA631VR9ILqpctpUgaWguWgF6eTeMiYpmLc2FgGsev4ytLaUJLsaDz01P9iRBfGJ3Ln5ObiKkP5T3V6PUhRXIajnHzrRY+kQgnfjSzAEssrUtwAknbwcLKB+GQQ==', + 'LCtOB0ixpG0bF6mkLT2vfI0zE/lhYsS5Bn37ZeyEXD4xZ3hryBiwWrVix6tdag4hidNWfR72I62A2Aa9fzFU5d38p6e/vNOg6f0xC1GQn3TG/XmsGF/sMUq3FDCWlbcABsK1dFIMOYwRmnGjtEvlUA0mvlFN1ew1V78KwI4bSqyGIwZM1Q3zvUUCpgUe8eraJaTI2idBWGTEQ9eY07hWUG8VNmxVieyrl0TKVvKEJD3ZLVhFNZcN2JiR5e5bthTRctjQ+/dCu0aXpnS6a5N0/04o6QrnlOlq5DOjf5G8ZHsZzqOMaVYb/PNzIH3KoeYoONLLEMpCUrsby7e4Urx3xw+61QADx1PWyBuNPCFLobpOv2XRu8PdzIuSQImDQBQUXjQ6bqZ1Cfkfx5daRtNHFki33Vz7OrgzccbGscfRK51IVtykJ66IGtHo9bcF4P+hdImSh+uCiKvFkr5YVfN1wYfR9P4kveRIyP7EGb93nJGCJMhqM7KiK/WEi+gZqd8SkBukgw2Dz8NDCINWEBI0KZ4ryd5JzYr+h1BDzICr2TsPYC5q6A+Mm1yB2eNhvTgCMg+qYtXSV1QU7rHz/2agwMuyxm04Jhx6xROQl5UP0gpf8Pq7FXvf5fxw16bcaZ3mG/BGtWSBEFsKhUd+t1kLp7Mms0LfbrHWAaAnpIaqNYCh5aMgOOgqlg3qyV0XtSXj38KfFJUjsk41pny9KbQ1bzm6hnSHmR76oRem875hVDpxETNLto5Dsg9t6z4rMLLfnUor2JomIoUrZSNobhMIFedXzqLUwV3b+flNwGsrKJ4HeENRdSr+0Z5Yjilz2LN7apHNZPgMqB4NXZyBnS+BGHobQ4eL6R4M8At2bso71DB9fqAKr1qfCsjDcZPyacF+Vo8gYLGGYCcdQ6x0InOV8+pA2tMPuSo=' + ], + [ + 'F4K5WYPN4krMA70oWgfk5mCHTRROyhbOBqcxFHCZ8n8=', + 'c2Cxf0TAxYFZ/oxefWENv0Lpcszhe2S9', + 'vRPTlusqsLOM9jATO9uoZ8AUpcsrmyOnvPVe0wmVvGj2VMlCS70gKigfbTW2ooG5amHtGLbdzptIdNcc42Dn34206ITk9NaUi//wcQcRPxWXB0+eAZSdwWnUaHLAQAgHt9LG31fl22l0GqKjbfWwgbTFXtP8iHu6XRVpbn7nVbYKhfS5z90emYDJxX1RLgLxSFaxdizQmH9M28QhCDbGoAm6EFEByWuAEovMAQD4nhV8xp608H09K0xOSes96MLLfWil/BpWZdMe/XXWfpvnhgrOJNZQ12PQ06a8834KP8l3vD7v7188eJ5kwnslFpMIefkp+F4QFmzanRwuVaPwnuGbl8hLj9Dbeyo40GxM5CUOLlLiGiPqsh2GdykMATJXmTIS3hUpJBZ4GT6oKbssRPFIT/MziKfhJ1iaaS3k78okbk2QMhtkSi6Is2u0PgCpFbU8RwothheP15QWMDbcqOqpRQ3EMp7Mc3AZAOmJ9Y6OKRAR7NSNxhoot5VTAAFjNwy872Rm1IdoYIrZLexZeiWS8Ra64NS4IhvtJA/qJZXPV4bQdn75QQXgQdNHALMtXA9lZALE/sHroEyHCq8gaxEnEj5Kswnh0b4T5QYCz7MqOyq484VEG9etXxfJ8tgVlf2WNdkagjmxevB28hl2ANTLSkHz94nDx9Jo2U9wBTs7dx6RdxfWin4ZHfxvd1TQJrlZ51bILJ0slxDeaxNusavN2QLV734CPB3DL1EHmiKeyTMKeGpi7tlpW1NGiD3YRJqeQtKMdKcHMhgKJ0NPzNnysN0NslfHzoWUZtuIzyFLvkuU7sfh7Z4xF/zATFgVtssI8Y8icMWhRp3sYljnT8ZEKgRYEVvCfIb7HI+YvnOeagCcsXsjnEHeipzDtluF5SVS3rciGZY=', + 'mxa2EZKxC2OEiprNykanQnghwU2QAeZn88TCQALZzgYkn52Oy0E3sx8Yn/hONK7TFN32JuL6VwGLCPMeGlyaNPiiYA6icvC8N/fYbvj6UqDvdSSnA0lO3irl4hWslQoS0WyPOCDjGiW9CaZjgNwxtSQOo/0OymL6S/mzC41AP8Xg3pAOXiAbI3GWyt+fMd+vFGZc+nho+p+UPfvVHZETC1JQaPaRyLS8rgMjRj1LE3mzMbEuGaWUn9URo0BFcl8XMwCyTwaqCDtZBUV+0WGZftmp9kLmjHzAe++h26Hs+9pbmzjuN9INa/02SBnmBOilguSL2thIAWjbUmvx7yiEUUpDVisgJS2jKCFdwthFN1pHsdPBKKqDMgekjqQTsdCSfki8PDKeGvO8uh/CnuzkoXOnF+WpyHqIqJSWVEeGeQyZlyGjcpUxm6cLLZxa5z7g+iuefJQr9Ln5exhesRdlfELOGB/cVHSdrFAzNPlmkp/9QyGyJg0blQRE8muLZbikRdTmA/wQKDbLyxtAIQZzSFEAgHSSE3T3GRw7eXM3TFDygHq9NL5ag+9fV3b4Uv6sY6tz2vKFFsRnp0kCFcVDp+fqQ8wgxQL7fJ1o6y8Au0dSq62zwC4YkuWMf3lRpaO2YGZzS9R2BHTDt+Do/wAK9qgeIecfBfMtUhgZscVACb2eXqtkJS5+/s+TwiUaLPZUzSzZmTNVyFZJ+ipIS46tM70EQWsKzTj/Oz7I2IqlOmDejXfuOQjorvlMXEOEiaLV/xVXUeXr3XxWN6o2TfcyeRttKvCS98X5nMYIodzZqcW3C+p5kHAfz3k0ddunJcWANbed+InvKyqPnj6W0rA7xuP9HaL08f6P/282Ih1evFmtjf4f+0CyzZUKrVEg2iVNdHONhfdz1tZ4M/5Tl08bB5SOsmwBAVx7' + ], + [ + 'YhO+FBtj6qfMQLiLMRJu4VLqi2MCcku7Jdp50Q6sVak=', + '1G40tgamnzLNEjJyh9wciGtrg8vk2dtv', + 'n9h8jONJIjzgdPyaF6CD7jIufuox35P4/yIPFfw3z1tHIShLy+YlTnSmun/PJwxE8DRt7GMgovR18k7KeQs7r4krIPdSYIad7sbSBFY4MieoizFrLLMhIbkqD5X4M1TBOF7d4mqfZTEIiTvWgdp4k1/9j7Oqyyuh5EzrmaFKGHGg0kReLIVCjVS/+xBM5tOxaWMq2oxdbYzh6HxA+uEnucqgsFqo1wbjSsf7Uik3hkfuAiBKUMYAG62zYB2CdJKA+2wrkuwkebA03JhRXlf0xiFf4MqRv32VZPSCpVXBYpxxZErO04EtWTlBhU/zErNabfrUeRuj6mGxpV6ReoPNlBvYQDJWXoJzsvGQ9cZVyh7mNAo3ZwikAnqIWgwR99DyrZC/ZIv+f58nsUgaW9K3l3unKAItSSli5ADzIc1PjzwGiIQ2v6EUF/sxQdKelXYHKEJ868fbuIlhzC2VWoRwwKThDim6qYdYWBOnC9jNZy1z8B9EMQMRvR+wB+r5oPxJ5kOzW2POuHShcwJLCGNT7fnYJtbGQ7bOKT86ZMgBNID4fgIwNyocwHGIUubdJIcqAO/5P92H/eCpRXgOdHXZ42RBFZZk56/XK/nf6GPB8J/k3j3wsqSuBV60allXrWTs5oyk+ly06vWEuaYA3KFbqNvojPJ4sQdzSg1LTm4yt4EOzkUgcMTySy3Pb7mXkGve3fJs03xT2e2g1gy7ZTwSXA6REeZY3t8D0TwhA+BjGAuCKwsozMIZDNTXBJIpckhnFHIr2C1QE3VV8gPdIhsaxACCl3o85hak85btMGSW6S6e2c/YZ6U++JHVxw8eNEdu6+sE/Krng1xuQS7HXxkNvG90u3o8HU8y7IEBlARSvG6aPC5knPvhYddlBICTbTU9juYULeqZKXyP', + '9LPamqB1hcmqE96EVh4QqqAerM9P/nCKtR36qDxdj866RIvIpNhkDnRpWSRHVm/CGo4iZv5hlKlfP9TEfa2QlA2SemvoBsrumIUQ9bgtDNOTxRPHv1vhv0VLvWYk/X2HXS/3hKud9LApb0Rr0yRdWrDoBkX9flOfzkyWKjkpRIV10uhYzTWznjkHBmq7f0pY+PMgUlcSggF7RSekgSqitpQMht1Svkyl2rJFqNzxhasN5yqGykRhpwnRXKIJyTNOg3+JER5Av+6M0ulFydE+2PTbSMU234TNuQnm4BVM9w9igZwkBAhfnutiye0+cbLDbR/keh0EeTksXFR41k51s3pcVX2M9pFyFg88xb5jleJaLPEuh18HxWBH32SXk+ejDBdgGSbMH9vjCLX3oJlh8KACNcIgL7nYTmin71Yvyunvq4/JszDL7ZAObgIEQnLviLpK+N2j/Db8+pxQnklo7UmFIXalgwcckyrM//37NHRQyo+Jrbba+vTyM5DoCzY7lzRSnLIv/9useIQPtDjH0tlGD1okH2e8Of+n4UhKAS+5qmllVn1XqUFQeb2V5b03Diheeu/WAn+Ayq31GQ8Yrm3ItURLxDQdmz6K19mwAww1BL39nJOXWlrEVRTHe3zEVNd47u35DIUzRUbzlqSqa+G0ff9N30uQcykMVaIYZP6CKw1CxrilYmpmbJY21dxnXHG2xy3TdRODtTVWB+NXsDSmj05DOeWeEFlTpIa+a2dm/+Ozg0cnBY7tX6qfh9NpwadGCBLZ0igkhhdIoMkf0UYKTJvJp5RnZcF0I/UuzFwVAs4ao04Yg4UI6X04LJiWUhhsA7TXtKsCXx7id8sWr2u8OaU5yK/K4Rin6aLUjfN8eh3btlg2GhRwdY7kO4VgjWtDxHAYyGm0gQ95BqJ3hiznhnPc1KyZog==' + ], + [ + '4aSyBAC+Un/DqQdFRzRkXlUG9m017Rd169cqB/zEumo=', + '/dIoFpeAQueGvKmjaR4bZbtSdDd4iLr6', + 'QFiq1Qm5tSZHYCocX9Q8y9gu6BP4Scq20Lb2D40lGYypi8Ag6ma8FJhq2kyv19JS38ZwOwNfQrYRPDvf4jvKLEMrpYUxNGqfbLUYZI1ceFzta8OkGms5iTkjL9olYLWgJhmkVmMYGevU/Hlk9sRwFuprZbkrq1wvi9966vGXt2VmGXKNNvUnNgXa2U/c4PoiDwJ0nECywbdsEDEprhaoSCArQBC5EJSdvk8l9ZLFbNlcAtfgRfW4jShC+hqhkoU+EWUvkJHH3cHJA50D6tbA4R0YFJ8snOrlqlPuYE+esKDff2EkQwInNsIPl7wpGvSE7743nm/CRmsEjOwoSOc7YoOSKkU1qaTbicohJRMdH1kxvZqpUyKrutfsy44yGO7xgmXWZq8/F9BQKIUVefqVHY0f7Gg+qCRG809DGbdXr6AM9tglrSQbiU/uR8Q7v6T+GlHG6AQQkB5Q15k+GBZBvlxuIlFNLXAqmgTRuG0nFojE/dfFaNjcQn7cq/zOucSsddaAyedO8OEadijTLMLAwyJyfXmHaK1KwdN84t/HAD/961u/qvyTuwBmlP4cCVVjo766gNkD+j/pYWPN6ixv/RHC11uEgvPnjX0Ci1tSHuIK9idV+wZmWhKPIs+FXB0/ZPhL5SHqXZkLsJvKFgfGPg/7hXElTxeCMJnNlIVaKNuPZGcYdRDlTf6gcFlPmFnJFfGtfAmp+MxrmCAqtS4AnbOzoHcDHS/iZmzXjb7uO2LE4lsSOuId3ghPzDV3D0fLLddiQzJkU2ErmuTZSwJemoSpJDuYcypffmPIRVzuX1mE4jOmWqVmTb8WDsqga8ZaHWM7xD4saHLZAfRbHN6zN25Rgd9MsKlSV5VATozZPE1My97ElygoADvyDXAqzIATKniTe293IU2Efg==', + 'JUtQBq2Z23d+s6Lsx/YscyERz3Zf69ir3Q9tWmLSke0x88oKl1nChBcYBcAsiJU6HiR+oXBx2JbgQ84IOAxWYBsHUSthtZ8ETcmxVvp3jdOmc1bsxO/TSc3Wce6uM68kvSYXlj2IWqnFa974Oxw/wMBJBajjPJNb50f4U7fmDb6LyujgW/01TtTZk6fMncRBb3nrP7GT7iWK6Vi0ncDFMztl3PTbYR4SQBwpX5Ty8ZlJHRgn1TszHtBzSJCZ4Ppe6UA1U5ocK6lzTWe0CuN5GG2Nje1npPybeQgqMpK97y9gRN2rlqTxq5LuBn3THFU8Y9JlvJP1O1yLyhZo14tcK9Tzq98AlNg5gu53bCgB9LwC0P3ID0wKQQtsbo/zWW5izQ85smQzWJjbSDEs0RsILuRzTFpF1C2/Yj+IQ1lZ8G79Q59KAH11xBD14ueKwe4vaEwUIhd7TuSy617z01OIeKQivT+4jLISp/7uJdHHSEA3rdHW8hNnaqQ3H8eG0xIvtr1FPi0M48A51oxJbUQ+X+ex2+jaANd3Csc+j7Do/U6tTggytK6njpf2hamHIsc5SYYMEkBgdct7mF53BJUslA+NlqgVSshhYhxtI+NTtsy2FznAAATf3iduuegxQ4B9XknZeB6fITXyjTmiTPd0jf5jjtTfYO188Vb5QVOXOMnzIR981Hc0mp0nOvZ85gqK6QDNVAluocjnLviydzgwDYsHrg85cFehP5B2/nKTO/R3VGIlibl8XVPUZ3VnP18h7IF9zw8oDZ/YKpyET5M6WchyNX0USK+nbojHSaKH332e2bHvKMMZKiPMqweQUWcaLkuoBx+gkHMV8qL6xz8MXz8FQnFhIGffvEisJC3O7M700YDR+rkRUKX0JLn4BqwLwZxMRUXsHIih3T0aTpTe9mj0vFDoFVmZZPU=' + ], + [ + '1daOhZ6zHMXJzwEbfsEumaKxVYGWSNVhQwTGQpYiazw=', + 'vFPcvuox0AERtxW0Ve/6lh2yJiAdFL6h', + 'l9SQ0fDj2ARKGxajnKR7s+ZPQxS2mL1zvDZ0l3xov32wiRgt52rtEL/vc1H/CPZu6x6w1VJBXiFi2WUNKhAdbhSSQBXLAKWDalDBDPHYoPXD+szIOXSRCIQDsPhBdJ3gQowgNh/xRVfDyIYsJVGmJj70cJLPTgfNsni7Czpi7MeeJ3tYalCBRdQIKkSCwqnnV4D2xLVjWloHtrQbgFK9TTQ5M+wM9oLtOcC5BEIFMhUH6eOykVtOPfI4lxP/mj+mjE3ufR0cRbLglqQUqjfRCjcWhTFPrzKZ0Ik/3tHqe6AgPZcD72dz/yWS7CQQyER+7WuVMvZ7fte/zY/xoqX+hoxhnkVaWECoGzPlWegBNnCdJNMlhE2gbVf/sUY4A/aXtTuSeKR7/cOthVftOJ8m36dKRKMoeir7nrgbOKqF3zLJEt7PvRpvtrw+tgIPtlx7CMyv01bd6PHHNxnPCht6/oFIqeCYZ57fmTVLfuQcli3s/qzSPWlpT2UdwRVRKzB90m9Q65gaSciaxrQV0eCgKayBox7FVsYCwTEpAg+tZvgUg1dFMl0PefOHP2LYIJzgXF/e0qw0dTOfwo/2nlHZyFiqwersP5w8gJbpi8ocbqq/5zY+9hr9wOiYPTwB4VzPwP5tbBFUIZ+zzD2k/Z7f2RyP1wdx1fnlCtPpOyRM1He9j6iFbncAtLI/SEdBEvNvs7vcR3cPt9EPk4ep30ym7ATEXVa7SlJ1FWJkp4iXn2rQmizJUm9dZfHboMDqVYxyLY1s8IIHEHO1DSb3hyjbY+fL+anS4DJCxWxiRPV6hrr0VkFZmMIx8pCV/blUY8aBMygea3D0fEISJiXM3cCvopeLn0UFKiSQ8yPfJxd+ITMnLSWcYhgOjGuYSA5wdbWNdO4jqJhNPrGFW4E=', + 'f+3Csx82yAatRGUulgukLEzvcnwadrkACwRdvHPFJHN12vJmf+JVoxyKNuVgFVH/rXs53OPWKTrWf6/obDrxz06+EzXK9o4JjL14i8q0YMKpLDV413c2CgAlL0hMk99SgoNrjegsEFjcNnCZgQlg/w6KTwf4XwgBrR/ioaP6pryL1B3DJXQbqkeH8F66z2rcbTUxHMWlGECyXXOzslUW6vyiN+PlkdjGWvvd6ksiFqBg14Sk8wwGCCNfMjbJ6YrR6loOd1uXgr+dLwEX/jj88vRa6oHZmkGolR0hIVrAgonf1jXKY3T/hOU9y8n5MQOBl3fn2vlaMitMue7KQd1aBwrP2siUzxNQae9dDmk8HQ3hdjNRDGlq3hVxhjLT/qOOKArFUx+HFY/lc9HEp9PzXuaMu/4v7XdBeoxHqIbcVBGGRADWTs14ghNf//fKwatREDXgP+yIcwq2rf/Otuwsah8LEQZpE2lzYeIfcISPVQZxrNP48hWrEo6twsAXmrwWQmFA4SSkT72gZttMTYmFKpwweESz0UBWFh/E9IRcGLmnY6+D2JkHsVRCjJxxR7XeHdSCrXK62zrWMazaPlK+K0yigX5izmLDDhSjl9iejnpXw7tl5B9ZqU4fKgeT//Y9qRvUb2AVtP6jpCehj2hh1+6O7dvTLLeXEhD6FoecxLYs6AHVt+ythYlrX5MoIOGk1kGgG9YrAMq5hxOdr0QgPOayV2lYfrlp8qW2QPU81gsHiy/qvk44fJ4DIA/iEa24BES4oHAJRmaF2JpPKIA3MgJ+rKCSJWKqZnfLWqaaGCmKrbyaWFVwu/6zKvy21frVypSPIOONrVoZnQv/PEXX/Tu4+mMMvTXuwvBi/hC/A3uQIMOp0O1HAFoHckd4tpU/XO9Jry5Cytfoj1Wdi+q7ogJ79o6gq+JUVjC6' + ], + [ + 'n5CAlfvRkI4lfqIN2BADaLjg+k7eOiYsAZXT2WtM5t8=', + 'XOGkr5qPd/bJ3pJ5ZjYSkEO468EQWP/B', + 'ZmP+V5xbmtuOWj4Rbcn/Q1Z/p4kgwXeQTdxYiT0X8UK0q6+/K6qYtAuRCuOtN0/836Z0hCkg6rjUatGl2iTxg8Tl6DP2rKBj9Oj4iJ3p7joNTE3oTnWzLAoeqROT3jKSBMAhiPWPksvJ0jqnN7bA3IqKeLu+ye/BxLupYwYb1SF897/juHzYkmE4xNvf67GYvJ/XUMJyvswcxH3H53Zvly+s1HRsBrGsVw/etOVp5O7G9i/bJb0nIEBVlXC5wSw5y6b284xlN3RvL3EpN8PKsHrYmpyiHTDvJuJBxLuJgx7tYJHXbTYEwM/yKOPDjxIytcWFaMkFObeJv3/+myrOROGjD7eMong82D9fKXWpcYSiyGnOZ7TfrORRW87kcRyxlXOfZ6c9ct863dd+Jc3LdONVObpI6VBy0HX2BN68qR4HHr00K/VfVsGwSVxfYRVgV9aurpDB2Klz2ZyyBC3yDp7M1w9P7uXO1JVgSetWHIE4mI+gTOzZkCjPefFF/ENbq28tph6XWl1D6iuPJUP3eUg8eb+BLd9G8pqEhu71mpv3QhG/+pW4zIYJ36kFioHnThHecOOPwN4+ewMztLoID+eR7b+YynssmuF/zEgaFOFJCH2jnGv8K+XK5uYGvprUaY2jJ5XhaAx3/OEC7oL1RvXVRX4QGPSpVgO9jKtsprvLQ4jNyF+1nbP60MDFPnFCVxECOR3ASfFgs9RFrSv5UwoYkNRrF0RP9vWDco1Nmvws2s0JPLjQLzjR3xHULCuI18diqXnDr/lSgkUrRHlmWkvedgqlHhjOazyRtPs4KIYs9Ro5DeOUGwveJrty1DZnuB7DrQqaoC79olfZ8ayt+5IrPwYg92uiwnQB7q6gcaL78V2162ihTIKfpzqafDf5L8GB82Sds6Pi3fhc', + 'DuYmhKRcNplog3XPVOiH35CHEH3iJ4ALLdt3SGEvB4c583+K5KYxTkU/nAFt9zhU0e80lB+7UNCCD+6r06Ko+YwXL95p2xqufysXuKSbVvC6pV9jJCIpe4rHpUYQaWksHN9pmFbi/IzyDdiH9njj5cSXQDPpEvYwxivN8DtNG1wNd+K6hrzPvaXab/pyrQWGJtrpxOYcpjAvInl8O9QcfulnQePdcdbyv+GWJM4Bunob9k8cdy6ilNxuHtSS4je9QQZqj3iRJLPqv0OiqiOmlqBH7tSh/dFZSlAq8cZZ9O0RoZdVcwJaSJ7/rTGmj11wpECoBBjnCfrrHiznIPxgHck/rx2QNMku865ivRnYGSfTNBJNSGsZOYH4lq97qS3pp5VUOns/ZsDd5dll9/u8OOL8zar1K6l2YisI3llwpR2vR794znS2JK7FR4kdFAH20VhkenIW0AxM/WA/3ZGjo8Y+OGmQHeGZKgtDTvtCbFNkmD1Zck3+Ld3Uk8OZwHePe/Bzt1kyMtzKpKWWtjOw+GcsPz2aXYFOytLax4LgwkVoDhqvoERo1XH/QoxcXbgsOhoZFsiLEx03Qy1zgfWTSfn/slD7JXdHTCm56lv/HCkcdSwh3vbfNtXbOdBKMyodTiTVKSS5c33+rl+YaxdI1WBt/b/rdnlLPUMiH2m9MKQC32rnUUvfufrTJfM/b0w56dMps+LYG4xbqVsTOxkW2KG5Gx21DdW9I0ObyI5B9Sjz/8pxpT39OlFlgxF156im5eYmn5PPt5LRM1LxVE6AsALUUfx2K6xa0x4U3bznPEofZQSIZ3k5s5a037KTWidxFWantxZKhObIPAE7XADRo2ObpaOX4C5XAnonrssBWj2XX66WtgXiG2gyTWrSfDb0bsYcABN9fGn5knMRQHOJlknzEMfLh81U0/sSmQ==' + ], + [ + 'yT0Dg9HVX6d/mTrhHk6GPllgomyhL6T1I6OBnfYrXB0=', + 'kSUa6d2lHZzVjCqL+8VHw/E2s22elLxm', + 'jKsp9mhY1btXsdkk8oUWgKJF/2wBd2zNKeoy8pzHCzIA9j0ImhP2tMReoi74CNJ+0hI2y8C08PlWqTFczbnSCUEJxFeQbqZ4zStPILEd+rSodtdJrdPild0Ng8GctwbvsLoUN6PuEo5vBaejGTGI8LonDb7HTm7UAMY/ZcDgITkpP/FfmYN18So4oiw4HeTjqLRYwhaB3mvIlyixEL5pll0oTPMw5wq+vDG/8baTaI85vGb6+5hWCwA/29l71t+2urTGvmOVK8UFeJNBAA5lcpl8ODZR2EWeCsZ3l1KgvlBP4ugv4CE7PzdW68EPNPYGdWCFZBplr76rCF5vEfJm5pehqP9mViZx4NRw6fbraYutZIDYG0jzgDmD0nllECVC8DA0LKf6AzPub5ydOsgN6ktOwrFNEv8EWv2ubB4ehQR0/f5n94W/8rSlSUtKyHzHdLq5NA+5W2mf3QwP14f82rjXsSHgo3Tszqhgeeb+JRz4L3OIy1JTN5qMu9aK3nvsWMQnPX2RPxN+sFfph4RxvoD4FxZWH9o9mFX0uqgu5N7FiP2oui5kQXxUL3cO87QRGCyn+6nh0fplgZjYja9d8HPqRVe/4z1vUK4thQAJHf6cT+N6ILVIk6v+ckPLdGEHJj6QVfCkwW8REB2U8s0Cn7wR5BVb3OKKOWm8K8REuXESa5Pc9mzrc6Qj5uZoJT/+vhjomnbeBKGpH4MN6uSNPM4dvfl0gBigrDwthfDvb+2jkNO8VY4M5AW3z0ASFHbUb0cqwNjvH8E+YIiae36xGmUmSQ09j8NajJNayFHdoMXsU6N6HZYcNBfpQG7vAQGCUZxpK2HDG7njHUHxwGw4p0qVUnCYOxZl4qcpaREG49eV5iQkn5iY6fWtwgfqYNsMZHmHHhjIWfMQM4PxtA==', + '4FMPoL4be2RhCybh81202Adu7jldZ1GM5ue+g642COvmf6oMUyp5yVb+l7Upc6wS8QFgh635d5LAPgTj8e53JVdlHJFk43SEP6BfZeUFWhH5TgeTv751kRZCtkP6/+W8kwbsYXr5vJ5DRLSzfAc0Ce0dfzelBXQElFany5Oz0Svd2hLqAvJmuO4OrRxxaSHlZP+n+drWqNkTg5KtMxa5mJzeVShi0jNCFJpz62h7Rf+NzBAoIzv8ARShduEkxnOtym+/6gZ4L5pg8CwEVfAUhrwkEqi8QF2NMwuizHF2a0uECEgGy7FKEA7Kttpg+YT7ddnk62a1UGXOWBwjg//NMtvmp3FStuolQwccOFQsOC0IZt6BxUnOw0fp87H2edtuncf00Gt3Q/9zWLtUh6/PrSEyWKZ6Vdp2xB/4bCemjcEkXr4gz9VMLPQuWuBsITDux+lVi49D6DJVm8sZrlFwN7u7nqYRLeDzV/RylMRl+derXDG/ouNgj3siQl6skgRpFmYjnDBG2za7mZp11gfuSiOnYSbNfLVVbKexKJXXgVv20hmd7VYrWKRosZYA6DJKHWpBnM2Ave3zZOv0KGbtiSZmCkcqwoZfR5jJTARRSvSdOeI3cZ1n7rU7jtPMKkw7EgxjhW/MihxB1Xj3TVmJ9KJKVbPX+SIaAPiwPFjEGeYjOZmuVZ+U4VkDhugj3mBp2Ew68dt/+6DKTbHqOSCUEDRv6aTFb4/BYAfIGDrYULCt02vM37bD82yZl4U6Xs4z6RlYDYvfyiVPiIExZ+vn/vryFGwgw9VnYare3LVo2POrZuMkgErALv6pNkhMzHWSA6RmiBGp4jpRkb+m+cBKT22YlNTw432jHmh5Mr5MSttI1H73xmKcubrVBjvnzFG9L8+Pf/AFFtzTH33kPRCuHH/gZ+zObg3mO0ZxVPU=' + ], + [ + 'FWmYEnGMaE192p0/oQK08AW78P2eOOlT0YB9SV/3ZKo=', + 'r80onHYKjXhPwiWd8daFHRSRa+pSUU7d', + '+XPmle8hWwoGRjdaHGPuwPZja/hlK3XHsUxhvautsjF9v6CZTWRzJlz3wNIZ4Pb1q298/5jagPJMATiU4l8APik6pn6r59+Vt6m/s61KnMxH3P8YCgk07ZUbk4lQQk/QG0+4zyXdhBNCZX2ztCikuz16cLBbzq8lijf1iFFl96POymep2TM8MT63yKYyjDWoSkTV7NpMgz7mp8NhMVH7MxLV+1/IgQ5NCfM8SHpF2hS9EoH+kKQi6Ftodblxt1J52OvBf13lSuXZ9IODW5LtzlxMvbAj89cS4mov08TCfW//5xl7yCrG3MF/1j3U/Rt3U2ChqEAKAUrNutURRHlUZG/3f56VzxHokyh+c15goWPeIiyKQED5A92GgdYwsoJ/DBIZy8kTFwDjDmQ13Pj2aBbV7U+A4h1wBaSrFxs23KEQQckiv+OLWN+yE6Q5qKdGYSeP+FGhouJn2x7dCSt6Byb+cVjXFVureAuJqlziyi5j39J9SV/hfY/fPYmOHOuNFb9l6LSL0lqAXtd76XXD4YeMWn3OUAaIo/aDookh1CSXKHGKO0lMGELrbna7FD2nL67cDZihLKHgDazgL9urk/ukazyl3ftVzs2lprPdYukS5ZeQWWAENK/D2KzqXUaIdu5nCPZX+Vg3zihuJyevz2IfzvfjsWH8d55loLU1ChLdxPRLXH8K9zBSlTv3coo9utvhN5snNtm+sS6Y0uCxKim9aNWYIpRGwTx8Q1pxMEeJI4bhqNK+53Z4fMW4XGzv5I7NKUysiMBQ2pxBQ7vqJOvM9JTneVNSGnKtn2IcKGWVxmzA6ah8hgIA4HGlPiF9M5JocsQikoC5AcjgW6O3mGdklvPv/R7lBnGlonIhAcrvwClv/FMh6gomnAtfIksci+wUnoaL0UndtKc0ZBA=', + 'MEhwJtfWTGdDRXk0/FE2X7hQxNVVqZwi+cPSb3g2dhhrT0eumCFLYNIAZXXxnqfNwJerwAN55jcn8xBrPxls6Kp4zA07jaF5RHSAVyqcQ/lIUuvCZpOjs7Y4SvdJ96vMJIQd9ZhEXSknfM/OCH3l7KiXFtfHOsnKtUkFoCHF+8RF7cKTH7kFy42fPyaFNKKLhfnw/rErmEBeq092T5U/f1ro+v8qV00zaxvyNptUglsk+mUYTQXJhrqODYXaq7UECvtIkqrMHEflcurcEvgbCXoR+/mJTP+rZQB1bNE1dIRC54iKseKZ0W7TlwOFMX3xp/BPTqkZSIZCKlHspDUxv53V471Evp8TksVhl2y47++Z5xUElfGP7D31ZE2Xmp/KLOfpjtmwUh8YhE7BGuRXQ2J1gAfNRgRfLL+0dSdjboFXon/UzLN4Hb7d1Y51ksTB/wVdyyA6nFGHfCEudet0FMUz3L9i7SbtyjGiCqkxQCiH1TvA1z+VMKwg66i8SaOCz7rjijVqyENjo5UlI+svrVsuLG2CQsQ53Nqr8tbEKnVEEbdZhw+Qeca2pEOX0nhJ4TzdwEpbyMBxgwmb5B64VNkLcWu8JqPd0RA/dizChh8GGHd4tIoowBKzRRxBSvjKBsL/Jf4KIfOJutgmpo+PjbgKVwgGZzceB7IYMIA2wzUlIjIsP3DQBMfZxGpu8uuD3P+ffoOCVbAUszE8OjRADO520+oXLnvI1me5FlMRSvM0cVkP9uxLQCFDRvH0JiB2x8MeBpH5oXFPIvJxhOPEkR0LClOyFRx574/5bnjdAfebb93Dj/V5i31sHFRQ0coIftI9hHyCROmCRC79x1gZyaYgxJkxFe/znVDhmp4+KomDxXaqUuLFbOYN8YynFLmEGHhJKrAu8bWtVePQbKdE4hgNuZc4vkcTC8CTPswM' + ], + [ + 'h2QE1vARb2C/+sgYcSXsTgePcN83ysu7HhdyzLQ5Dfs=', + 'TV7btrRIEVeLjoqXwsDeZ7m5KldGcsSh', + 'lKLZQEekNV1XeUtQPE+JKSuaB3scu1kkxX/NP5cxHIrnLY2y2nH4B/PFJ7cST2Yd88rs8oh2A9VIO2stKViVdZ2WfDM8OXCpU2d+7vCHDhSjvjylr9j0CiE2x8n8pyqcc+PjxLnw2GkwzmNarLbXyx7gBKoOkwDsPyR5t+ZuRn1IIwa63f0DKlzbPeD8L4pCnrzM+G/HeF5IALKxP7hhNY1Izm+8zKNL3NxkLPvDUquR1/ZrN2pfWKafguuyMkW14nhI8hsZuXehDNNJ2d5znBCmj+c+UqbvCrJiVPVzNvjQp/69dxmXrsLw6GrjcSN+dAp8Gb9Dif0uEUZ2tCtl7K3WvkVtxaB16ZEs0rJYtBl6vZNH3jWufUmi6URXaCEheoqxSkZ+Nc6HY0/xSCpK2jkOKVtmvxnAUidSvu04JJCCw6wStHQyLhotPEtebmxDkt6Fd3T0lrpJGA+mi5lrypiWNu4nsLiGBV1OSmmS3vXJBr1pnZNl74VVl/6Y//miFYcgxihYvr4EkH6TiQgCO5sdBXZ4/ZUIGwiuKfPki06dPIWlD1cSqJP9srJobiNl6C1SlnAk3rzwhr6vTwzhOgovNTCJI/f2wDqBs4/NL47MB3prTgcrOL+Pzd8z8wuLor8k9380wsyV7Is4IG02aCIn3+sk2+ui4ZB/aos8PcomZALv6QTZ5E0m/sSROutbk6eeEzyCty08I5NDuAt1PIWAYdc5yDIxWBOlDogY0LYEJtiBwAWOIykvYjOKEx8GGsPq+M/yMcWSPJSXOvK20MwtQMxwqgAlAYn/7OSCSsSOtvNe32vX2Qk7zbLil9ksaT9nLLisQKh/UDW7cYtZOI0f/Wt1WxzWnNjU8oNFgBWdMYHb3K1LzRRDaMR6A7nfrGZvMWznNDFM55RdLwmt', + 'njz7NQ6LVUVDKUWlvQmnQx5J+VPD4/sL0g07dWlkKC87rUen+JyLDCykHWeuLefIA0bQbapaknCWB5YSHSrd6aOBpuFeMSjc3to8x9EP0DwivcYGBu0jgqUXbqg/ngAq+goEH7SqYmwUkFC7lUY/V2x93wE4S5+i3jlJPmD2DSZW0pztBg9Nv/e838UxfgZ98P/ehl7PRxnC8Y80EPPdbQ3DwrMrg8Cs3iQuq3Vv7oNOkmOzraTOaHvD0RdjXFNpSnQdcaUzQM64UvKo5P9PNUp/TPAhurvsN5QG2Z2xjjTpVCQM1KdcFRVkMxwxBsjKhXUmjP5HAP3v3LbFnw630uyPJnjF9IZOUl5pal8cvA2Zqaru6zau7lEu4kJy4t457+K2X4CuUSQ/+Go5KznqKhxxKrBH3JMshU6MhDOwTPj2vJBg4CWA8BXn97Kk3273auUMr0sJxmmBZX65RKrtZHgiOBZjagpXQPgr+pfLr3aYKfmeSMqRrcg8gXoTd3Xgbj4CeVUwfDs0qlZWrksGnZdSMue6MUDt/ub7Y9fZqybFTApkQDpZRlkF/kdeomvfcz7l5XcK0bQVIfIcjFgzRF7QANF6TZvHCKPLGQ80GJiwlkhEDluPDRNSAcDcIm+nwnhBxzMHcpDyO2nJo5RZNHnCnkloYd8eZJqp+Mb/wDgTzku+Xyw/3bFLomL1V/dPQx5iHN3Bit3+DGHwwnI7twiL0IhNZqrd3IP/ZTO+X0+bCxCwBEKgJuyIv8kwh7YLByLySMrJfzqb7zqGlcxURGcdoN0iiS3DbA6StwHMDA8tdcqFIvEnDJprrYyEs1E+WwfkzO+gwjWBU9V6YaNfNUCEUMZU+WMYzdA2y1uqNSKIYtUPgxPZN40ouEOB78+rKO3qLb/uFYSuWf/uCZH7Sk7GlEFcjbjUfMhHKBvDBA==' + ], + [ + '1eZ66/SHd3AkBLFwDsZvxTB3el64B1bAUajFGZPOnYg=', + 'pSGKXopRW3bs3Axecf2xwsoyvM5hpfGl', + '+WrWGuP9p51rwJev9hSTPhv76BLLpbmaERU6vDj+Rev3OAMwWBGO5BkmLmapebjraSaz5PbnaCKP9pcLjw6xyWAc2h5iBp4CQeHOCT35I++zmR5TcUPA9elYKFEYPzQi+Eo95YsOu3K9rixBCy6Zvbavu0mYn17EyzQ1vyf+qegPkjMa7108xXnrHEMnY60aoMIs7TzE5+R8OQGMFc9oxIqj5QhpKEmgnhW8EdH1jKiPYLwkVXsWcUYwvYHj7yTvwvFL8BW7NImUtOgY0bxgoU7dOWXbx9cTwKucc2aGmJ6TUO+dhB/gMcnmPzjR8TH/rgmgbrd9vtNCj1YxqTfdPZFMOOYhjR36YCtJkuJyuDdTxDdJDLZc7EbOJqPtqdNUA3Hr8Kxf8ZUrpV2cXaemyGr7VUt6rr5dSKXITlI0c8+plxOd1k4GBaPT+YW7Ig46B6vcMpJysW4JsvgOMeqkZNb/VkXq0D6c0E701exI47Xck3DXVJXgLWT8NIFOHxoXiAxWq7pE176rcYW1PSm6OadmEnsQZG2iQuKPwwHicnS1kI/YX1UoTWU2W6kNwFz5ucWtddAVYfJzK0VpZwEZq65h5s46Ap2ZcKeG0cTmmN3GKoWAX6shr8CQa61QJZIFkIOTraaGUVlHFWSZ2c5dfcQGTXPYnxdNUkKJ8wUVNpHVP/kGSGhAapV5hKo41EplaF3qU6i54f4PbaeH6h31btU8agE68pj685Eqz9E0STXlCJKmhtlpf0xKELSzKLkLo2dA9qV1pkmDUEl0o5SzDzPGG95MuREk70ctrpjYHSF8bvaime8LUa64W19GC6gzycExBHBC1RccS59y3rFZ6AAj7E4EKA8sA0w7+HqyX1SFepnCq8YJ9CIou2MD20oLpvlM5PVEwIuBIqOdK9Lxog==', + 'FHnJ+QBjuOM1M52RkD4fzPqFoBeKOBJ/lVuuc/Splihuu+egVr6Qgp5Q5lBc+3+SQMMp9JkuwlxgJAfLCwSVcTKMtHeVXqAJe4eDVrClmLP2QcE+S2+1mHYPQ6hsGfH4yPs2U/amcJ0nphkjx3k6Rm3OOzUhfOEuA9Qsz68EJXHcowucojDyioyAtZVij4HQWJsAIlnnVOJhZeR0GYbddT2r0EaRWRUCWEH55XLvK9eEFZTFQdPtHU2FUJXKfun+P0rW38pIE/brsMboIgKvaQkveLwN6l32BhBtvqpYsrDkc3zxv09XZbQg3G0XZxuL990DWrO1HaDZmtgL0BhPpONP/H81EMAf2QhXwmeJ/0EXLRurb6KqMqN65S8D8CAlXwXGE0nZRmGnW6nZa+n5QMpHYqej4KK6z8ooqSVT0Fu5CyBJ1kUtNVfSC0WlRZipHrXKLHrYCnL2QtQl4LPFPvUHCV8pQJZRlMAbVGKUm70TF1BikEt1WdCQc/G4c6jyxu76U6M3J6vKDQSaEarAUxETFvN1sW4u00/2EhSUz3qFHhnBv9CzQDT8piYrKfoBLnDey6YFx9aIp8Nl9CdA05P2h9l6S6E0cVTEa4E3tenxoFcZJrjkSoyZ1SVtPaAEf65zjfrb8QYPe6aHfAFdVfkYKXnTD1S1a0g/S8BGTmYvaX+H+eyip5pRPBcyA3nLDVHLTZoz0hOoRDofoxYHDyw7/rPBXSI2ahUnx98+00I7EBtnBob6r7dBrOZfvbuYEC0r35rGmvx3vtfYFqp2NJGi4389J1K9In7lpJeZwu7ORcXmv7RWXxxh8nSsm/fHCaEzzxYWRzO469IH9NLfJw/3ziunstgPhd/+2Nika0S/C8RSzKG8SCW0ynbrS9jPQwESIl6AYKVUgb/0KnKnUeNratl+4QJWeBMKaZR/p9M=' + ], + [ + 'LuF3LpA8rg9b0v2/VmU3083tn9jjRM2c7un0JiagyuY=', + 'Y0R2DgZbJ4R79jdWI/HiB2/SyReKxcDa', + 'ZcnEd3jxR1c2czLKO60178Noy+Pn9eBTaRgjvkSTeRJP+ERCtJv5VMNe6trgVO6kNeGJK1t7c+Um+vEg7nqXSRWA+tR2C/gKvD3J2uk8sTOj1+77votn5Tm/ND2rElYRGcADTURo1P8yHodP4sVQ0goQFQZJau+s/idZSJ7zf5eyGuiiDZRc7p0XcXNJRE3/cihC0qOb8/L8hI63INJ07iPo5zIg0O68HJ+6DMhcOLZuOLKSmy59/s7K3vNhGcz28C8ZIx+8MIVW4OarEf/o286tcr6JdbHMmnWZFjEw1iC+PPi35ZHYo2x0FuKMl6rODBKVuF7ZtFJQQs0aTSxpnlDg+t/2N1NZktBkgz6QuYCmTjSBgc2VvEWGIuEjSuQCmNbjwp8POK7B7x5URA+rgmD1mGLUy9AzNbAEoUv/yLCBI9FkeTTM/lO+I8dPmeW7JYKnom4fM7Z/eu07mzDAyXn3y9ezeFcKJilgliJ4Pfe6LP/WS6kFVtXI1H5BTh9wLHdBnAFDmZg5+La6/OsKF4npDXZ9UGrGaMiTpqIi42WIejSi9VRs8zLbDz06o4LroO9kJZYwgvQ/JtqQIAwLSynPLAbSON4itsqDBKGz2pqfrmZz6stoCJlY5C7GM6uJePBgLm/5FKgUgqai5iygqGSl+5O/sLmv5z74/DwzS1TTrnEUQXDk7JPysWxqIKskSQhRHNSsVtTghA3bGJOmri9cjOxQL9M/KKL/t9D9Rl1h7w+2ghvRWe39hO//Vy/c9fe33ujpag3ylk6hinceFN9CVvDZdFPeH3DKWVLWAtpyYcJRpKWgqRNvzSm3HbEhUoQ6FNExxg6evFL+Wq1Cw1S5y7aYb4co27xf24bRTEOx+q1sp9nk9gzBnauuBoWoITDb/QX3yaoF4o03dYRk0VA=', + '7bauzn1BJM6CcTl75TGr4ccpJaousY4PY8hX0w4cY7hCE5tK8HbKws9pFoBn+pP9WpHEb7D3h1Q8LrxXPWB2MTycaSkj3oQmDiVW42BUaeuSVJBfCEymKvF4YfOrwu0qSg2kkDprFPkVQtEy27Apqg4Odf4uvhg8BpdLPMikMD8vQkqmRW1oPEH3AZ68n00jAjIYBx522/+SsQvyNJjdgXC0UnxhX5prha78tic6s6e40dcFScq1F7F02TjZsch7EkqytnruVGzV8mHoB3mXV2NA9WqHZ6HNerjkDD0yzYo4NqUUrf1mol/Mw3zD4OnEEYqXsYEXUMqumI9jw3BFpoaAnUziventw8oCeDB2on+5ZRsWp6JeKK2XZuMskZWmUCXlGkHyH1coVhg/pJwNYePcnHuIBQoTjWAge76j6XEUcttYZr290hxNm4+Yj83Rh9zVrhcwDp/qn+ujXBs1GUnXcuymVcJhk5R5iD/WlGlQ/WkLWMU7ukt9yw0cAdvdhCO+uNZ0AMiVkwNbmFTVnLXb4CGUoJKHIQ5XGYmSn3++otqLVXwj9fK8wKDoSZJTSLcEe2/ZE5gY9BzRYoHwJYN7hRTXf9v5gYUEep1MUwCyahPrxozr/U29tz/YTT8GpS/9Kpdoq/s0w9IrNcADsIBwjgJLWDzou1TFKHwo10wGi7Za6gDT3nfdE0x6DXYOEGU4Sp2ixWIkGzN1CcoaaANdvIILQl6FMhCC4K2sGKXayEd0hSS4wYlAXmXEDFkU7q9B87QFFcbcQrwEReTk0vL0+iTbUKm4a2rmuRDuwU+evGJnd2ez1EgkLutvk7WjbGPcy6XWT5Gz/3cqyNgi7BzMwgPoeVSFWEei+GYBKoo8slC+u/zQLYMhmyATdoft7Yzf9gCQuNK0J6KGmSZyKC9cIPmcQ/QNkT+1JyM0Ig+b' + ], + [ + '/Cx/SIObNffBsS/VKQ9whqWp9YRzLcAjOGf6Op8KV+w=', + 'Kuv9XgqqUlPe9M9QsNNmD54X6d1Bf94/', + 'B+wdotTLPa5OBNEr7W8d8n0VV/+n5E1xdhPERUGQc+Yt+V8K0YptKZou+3NUW+qXpa6QiTWrcDzw14mwUhjxI8iA6R+k9tjNrK00dF9rLd0otwdmMCTDaHGTtUb5p9ryPWUy+xUu+pyio0IIpye1lX4IOaw6mAzH8SYd5svElbY9fGhBucvjFxclm5TPCE+M3VelNb/wt+opbBHTDwNpYrPEYcubL8HsqVxDbWr+04t3tk/ygQt8IKx9bP1VsAtjLXIzHpEnBaxW9TueqWUnFkIZUN4zPAneX0+engHv8RQdDV1hNtFXTWTJ6a+EiGiMz3hr4kPfPStMeDnTQOFKC6tjVyGOBczD8fMqSJyfYhQ6Pp+F8uqXFw9JHuEPI0N7gVmVf2kx4g0I1UVPFSSCmpFGJoJ+0AEl0Ys3UMGbRNrlq9BZBsr0lZoES5oz+qAsdEdP1kerpIlvaP9Dn8H6DXZTUzT/wU5aPSxUXbejsike7orL6HQkrxvxO2Au+15TWOe8Ot27Y+QQp4wu73A80e4UKf4n/BXPb8+oYMmNzuOu7qxYtPM2jfrDnFPsaQz4i1HTIGMIhihMQVdFLYaxHIHIpTIbxeykB+VUFLzWdufjxvyVDnlErPa9hKSKubTedzG5PB7qxZag4fVvXAFYFubR5PCW6RBVryXUTN8Lq34axpENPbTZjIVSgzMtmypnitemEt1+YfLi83SBc7oaMcSFawQ26CbQjyy+ZtvcgpbscZr6wp0CX7Q01OhpV3+EDDuFwbJxnUkwBI5+qKLFJxPxXHQAbyfpByEw/5kocHAZE2W9E035+BNm1zNnfVH9pwClv7JBcFGmb72t5PaFAXTBViRnNVJevyc0GEqjWBX4XZePPAXymmV68i4Noy+3WK4bXSDxoF7wkH3b9LteEpj2', + 'wDVLdmK1TBmJQKfxMs8Uo902hR1Ij0OyTTbdAysc4UHggRBxRojY19q5P6Pe/SnHwX2AyzgxkF3xgG+QONYRduULhNgu8RBR5Kn4hjCFeV59BEFfGXegGbiF9ZqspokGMBQL8qiHuInEvrFiNjJZexJZ7qLZxgnTaAm39Y+bHk3Ji5JWw/+qI2wTURIg5viROmMPaPknXb1Lo++RQ92xYuomXz4UHjI/3Tx0HcjEORVxrw7wQ/C7tdBrijUUlwT0iBjSiDBwOO12IgCzlq5QGzXQwsz8U5Z6e2tSr2u9jtucAYhrNARlI3OOqFXRn8vBH5LQEDRhtyphzRKwAqkZ0ZdQvgX0kpPEIWcLqUzjfrQFpzDLYjw9cMkFoyPvM/HM3rrtICeLgMGKMyx5TjoB6Hqe53hAbp+pez4tt0d1EroR+DBTEpKK0eXW2BsVLtu4ks3DWXlWgQcP2HyWF5+hF2IP2AQM08tYa2De96lcZCGNuA3iD1QziRdpNQGJcWRC+zd0XIzUzVDlOCgMfT9/uC5Z+BV7cvGllfXGlhIDlO9+W+5kKGqVmrZt0nvnyVdY4BBxBsm5xcTRjOyWi8nsEe7MmgmmPAQi0ZVASxRbRptu4/7IaKiDGVbm4L/VuF+PnGdZ84oq7BM2I/UXlDhfCzdG+3M3o5+g4wFKE/A5JCgYtoK3Ufjw65XCYKjtqG3F6pwgr5avkHHjHJimA3yKNanoSlRw7QuCMfJ27zg4lpu8WXepmiqOzj84b17Bgu1bzETeeMgNlxnCnpKDjkP7mGzOfmlypExDiBtM0qjyl8iiYk3WpOTyuuEriWgj2885lDmTz57WUB2rOuIkaVhJc7itITjwL3RGLudWU2Lztdqk3NxcI9e6oZsNU8blU/DkNSCeGW9Jr5p1AmfdQsfKSY8vH0CQfHE356NxweTt8FkplA==' + ], + [ + 'hbJXsFvQZC9yrmur5qTgkw3jqRat74S2ZtZXZIxFH04=', + 'LMewMdblwmUGCMhw4el2r0ac4MmWYOtc', + 'T4ajUYxyT9s2CRlZPM3uSU//hHjYt0Qz+iPgTzWIGJai0u2eRVhHJDRbFcluQHXdY7EotglXC0feyfoRYnK0kkHCDg/YI934L9buuxl9k2I0sGDN2scZOscWyOn+OZ0FvIzHrpXTuEOUsY/8Z7oCjtUiSFNhxAK5VMGPVO+cVe0lyht4kkH9CWC8gRkmgacaI8KYd0os332RBZlu/3BITjfCkOLVcPA6nHLR5YYW8GeZvfQVCVlqm/czJCQUPxed+szwu6pKxx3G/c4e0EjsNT/3IeXNUggGXTNQaRg5FNGJugD+eNe5OcwcNoFwzMgaUmFNRgVkH0HBVT9Y0u7TZijsiyhVQRF3HxFIlITisX+5xyPCuGWDa9la0LADOqLndt93+gfveIPTr8sHOcPqE8oVLMhqsjWqLGSOTRzOX3w6Y0orX/yHSt2S0z7tn/qySw6KBwSgAzc4ad0vv35ETa1rVscsPGspl5fSwviBgxRp+RJgsO0xf4wdw4baV3WYOnkMXPM7tWQNjZjlV7DgXpmpOtb1Jy3TEzyZwY1OMOu4plg7eMZLoj19MIVKMmTnDiV/puBqAPevZ2ahQ//3uV1RbI2rAB2OOEZV5Fq5cfIUsk8MKOEztxS1A0fuv2sZ8S+S6JeG4LncOGXfXiQya5PJ2eNdGNLF7zpoa9W6RM51DRW+vW+N1Z2zEFyruoY3ncotxk17Sc7dUUluVgqr2QgStKuA2Zw1gehY9mtyiXfuOjEz+0PqZjr58wEuLMfqhkQZx0DRvgeoSFJVE7uxBUCiYx7jQUBPoJ+t3UMGzM97/8+VnfQoRdHFevtHILI7kdLn+GHzRqICRegV39udywpbOGvdLE7frpXXj/V26e4WC1OcWBdOeyRTwQYPFFGR4wKkCj5D4NZssDVd6HMrgYJnjA==', + 'W10okkfj/8iXJBkM4Nj1Q0yz7COs/HPBBTg8fPNoryC2okJLLo9zqvq6oexC34rT8phm4UZcV081y5p24OuJ1eIyFlsYrSV3QqWUCOtWahOON1M3Fr8tj1C4ZOPWyWzxFWG9t3+YBKLWDWxna7Ur3xp9DXR8JQJiHrkqEEuNHp/TlHbU6XCfGjBYf4sKL6LoH8JpZGwaNemm6E2XraEtgKn3tWQFJ7+yNvrowat1BetWWXPwyExJaS2Si4W6rJoXT0Q/Z2wKaHj87F0satCqxHKCh6Jm8j3c6IXhVnY9iynxRbRKXgovqCpC8j5GXglFQ0ZxNmzHv0825mxv8UDHiEPgMNoLLTXkenR9S2BZl6TtY4kEkWBwRdHEBmr2rcIfhxkWiTc0mGPJhJxmygibRDe+K7bEZdiqYKEpRMQLZ9hV3ooBifkz1Uq/xav26Amghm29kWNzzhMDEDUGlQKg6Bgl45Vhf14cFdciU8AOI4vaa8aP6T/rpij0TT3TBJOn9kWVqqUzv3nvnRZ0Upgoj/BVUL6uRVjpA01TKjY9ltwNThS+xWp2jZCO57c01daVeHrsM2snTP8kVJl71URj6z9YdVxozog7JjrRO9KOZ6NTYfgZfgKP4s0W5sqpEQryDOAnXXLeqChfY63f5Hvm8kWwHmL8s+SqTyYZ2BBtJtnXLtEXXN9I46GFyb17zlubdFQcjgQqizLZQz3I3fHpnOwCmK/We4W1l7SBQj/Ei4p/ThsVLQ5IvGsm9fcp5OfwKsjmnQ++SP/jg23RgKDKjBTzwUuwhkAud/JJMPK1OY2JojYS7/BU52W+/yaME1jNhB6pGFOnyo5C33I6ym8riMFOY0V9YFwpbqI9Wc18Kv+1nDaTD1okG24ALcuE7gc6z/MnN7TidFrEMGuzKolmUJAdTPvg1H+azMKhZwD/KHzHk4Q=' + ], + [ + 'OuafNmFZbVuX3XzPex6qmlMY0CFJ+FjniNmA35YBPdo=', + 'I01xijN2mTyMXhywQvmwiG4Njec3idma', + 'TKEuNU5pHhx3O1pBhfazZBjV9elvfqkatEImHXJN1YAiBmB6P8qeVdQw+dTUseiGtaBM4/093Uc42i0N/oEIJNfNvW8Zi1AUTSjLdCiBROZCzFCdx4up0E26U/zzPDl6yWuFG6vHinI0acq9eaS+5038s2TZA/1GW4jM+yQtCVmb4ojfsmxJbbjIK3QjgTKND+PQ7JCRf7Qq8rKHTsZ3seCW7Y4MuFHuN56LT/Jn2E8VtruZpU3vSgGb1iotOKZwIyRpv7y98/XqdqvFu41lD5Kv5BxvFoZPb7h4HuyDXbXikMVYjuFPb6UvK/Q76iLk21iufY1SFn/Tu0mnUrEXxBHqaTe6cKXI862VvWTpmMoRehQU61+cEzQQe8wthtCQrlonlcLZClWQZFR2GtnPqcW1VJW4QywhXQUrmfzwqXjhUEd+4r2sl2jpGcZG52bqKCvr1nyRfyjthqqUh3qKll4CQT13Xl5oQrKJT474zYdJRjWmHRS9ZQxWvpQcZFyTrch0kXuPVpPAWVQlR15sVVKkV3rnOvGfAYorVotC7NvZZwWo/kiIBOfCsJ6jA3Syz6RTjJmXjF7d0Ney7HYTRYIeuzlfl610yFavgY9PVVv2WMEo6N1LCX+htexVEiztFJk1DJDP2XwnwAe03S2qvJ2OzGHncGYmT4jQRjp2W8zlYOi7q61ZGkgasSlV/5pi22G8ofWURpVBfrh83kyY9HbIHrAynuGc3tK4CZdpIDDjs8zEc/nuQjGeqWLRlhi9vME59V9FzvUGT3o1WM0m2UCA/mS8/zNY19WwXqQRrGYomSZ2m6rNt4V0Y2U/Kt3jZH/R2D+2UUC4EkdjBoDbxbdsWNWBsutlPzW+o+ify6mPyrvSBzbkpLENwBEmlUEhyfRny5ABQvkoC7iTqChx3DqdBNs=', + 'gH633Zo43WvWx53YqVvp/TnfIA05K3pa4HDDdBWN1rfCSb3G5Av7b2t7qHJg8orlE8ZlYR5Gx3BOXWsPWwfZzaLUbvWkjqgD8GTdd2MV7WBYzzR0nF20lHwcG+ut+5EzKKFF60DEgQhn8trxSP76YdEcV5XcS6t5Fe2s1fUK3U8UqFCKKY/7GMINVsmv/aDvdWy6JfDEect8hmND/AFsAeGUMWP3TsJQl3sYtkxjcaaw9TmJvKMQBs+WP/sC/9CfaQw8UskOELqejYfA3kuWMSd1tTqhm8qfbFDXxnBCDOTUqLICnWGXGVfgZt13nh0L7Cd3ftMoT7lzOjo173aTvHbmrO+WrwG8xgnzuz17GDwjok3nWVZGYYtfel5D1uE8HGKokG0qN2A7WckIToxGyZ19y34UMyyS5UP3ALPCodBzy8LTKE9OibcONgvzJBn96/kaGI1STFhHi+iIbyZD4VrgRjgwe1B86A/9+KSr4gJWeQ2BBT0tuSWmK3nxXlWUBb9XnHm9K6aU8fqPatH7xLBlSd11KDNV/rJtc2J8fn5+/yPq0EjQvclozIjMqK6OydSYh6QlVfowag4oGr/sl9ezrU/ZJ7qJYWws2qtevaDh4nM8C4rh67hEFKUA/VCkKxQ5VbNTXUbX82BOxPHSw1CuzXzjnvLSuAxmhUB0XaDIobicTDRRJBM/xNfeOdsP7670M/4XR6lr5naVIzRO7A0EKrKz2cHfTaYG5p/90ONAeWGSJRRgruI5YVrWABj61GljDp2qDcLltvrmJZTCrHg+96adcNuXDi6YGJH2148ZghQ8VE1vLk0/Bx+JEl8vnSy+PfncqSo6nbvJWsc8MnwisSTGoz1sBtRr077esRpBAQmfuAadyP4zATYK80eVzfY7NMhlDdEtLSDNuv+hidRG1zod7kfiNFEdaN+T2+mm1Z1L' + ], + [ + 'NHekhUgv2vu/63x9QD2GDQTWWzh4zBE/ZYm14e4Duqk=', + 'Sd+P3jElMLzjsTgUq9cdMYwh8DYTj4Tw', + '8o9cpcBt8NMjCmQvPu1a8o4iQMvH9GTpyZvsi/akMV2cBCefybRNZWKgvvnoFDgY/kNoPhOI731m21vmcrvBYk7cmnaFWbmPXCeqB1K2OUEQyafW4N2uqbsa9LM9uEAhp+Ucv7rZK29zYmuzZJPGDv8jTBZHgArzxL3KgS9fMqk+PiTdHztEHpWQcqQzBiQSz1EWhiLSOkl30hsEdPjZF+JoAhTrVczRXthkfFEJc6ahsSh0PzKg5lQrDa3YI1V5HwmAjZrs/IFnFHNE6jpBwaBnpoAOkXqIHbucj50sPDonFYdWGCtBiGLwGlMVaPyA7O1NN6Fk3vrsOb4wMqAC3BURWf2gKtiCk+KEJsL41vSBcE6yCEWiKazCssSGSa3+iUhcpeB+u/uqQhSVGjKkByjiJvjEuXviZTprGtjLA4G4iOD5Em3O9GtDfOBd1hHnb7EyOPSayuJ2HxBNW2XAkTUgZesuBgClMXTwQ1TlSV989ZLM0OOTKd03vZzu1We0nbloppouwYWSGvtninG8TIELK3eiP6YZIfciXgWNOgeGG2m0EYutMl9qDMc92t0lGa+UJgs3UHmKpY89O7jof2MDOFPIgBVKCWDq7C8nEzeR4ouJayCi6Kaqpo9HKSiLI1FDDwjA9VuOI7kTtPlCCFUmSfwuAa4M9qVhLCeOLAkquZrY4HHa2aWwGmOboSKVQziZ2HjvAmZCWqSwmRQL6AVsVoC9DmJFBNct7WUIToFH33Mpq6EuqxZNoXlyP5tDxGLRcqSA39w3UTHTs23/cpwW5Nv/ZubGXgjhmyF4bybdGO2zNUzGLlNVo2ly19WtpiXTwDzYQsIZMCioQ6VOY3SSu+MXfh6yrFh+bh/hvz7TE8YyUL3T/3xWwfZfQo43jLAIOIHNmsQP018s61ZyDaxT9G3S', + 'zyoWR59CIWKSNLDL03pcUIOI6kauwVLLm4cjKXIO2kaRQN6OKkIYaQxexoH4czHvJxRGeIyADi+Uh5gWaOzyqrvWrzBueqh0lGh6csb1b23y09rpctmN10nFtmllJS94IympnmonE2EJF1tUbarVQ2w9DdxuMmWu/K2V4CHHUoFGt2uGRFDXkcJhy+1q+cd4uAQm3gMqM7qiufWHf0NxF8D41Xqip1ueZ0NDi+KFh+SbTNdH069dDWf47Lb2U9bEBspb/EUfmruclWfRQjvPZ8kRzwLDdXiSi8CLBqWzFJCrSXjCG8nRB725dyQ0rRUSoyKMvjy3SHWUbvXQDhmcNOn5LRI0rr21LVy3ZkFdyBWbXQNsqG4mbr4JZwimIp3iG8oU47bnhMNNLD+/W/ewsSEnUYoFJIsfJkTipVZDNv5C6QS/Tkrw/tu3yPs511jsztn++fmzCVhAZKKLFPqHx3NNMi23MqVzkG8CFSvD3fhVI87CL4VotmlEBammvsh4rWg44Jy+zbR4jvz78iZrduHKFRdzJ2FQIx7zAms0Vl/O0vkW/RX/QYnVfcPSwuWK7DRYWz9sg9IOaXV1nqU99USS8BlygU8QZC1aZVDebFsA3NxiXfgURGfiY4g0sB7nZvW0MEsatNM4Tt9EoAxL6x2v49sg9cufvcwFT7boy2DjW9vuk1AJtuy/5qr802MlHhNQd6lgVv2oqeCIDRU+k84oMxungJ8lGB3C4WsoHknkH73df8G4tdwyX17QBBUqysNBFGtRl0wjUcgaE4VwUKGax/o6Gh6eI45rJtM2Zvxaw0qmCl1tVdJyAIVDnkGzkHaTNeL9T3zBntDes0MZrNZfIIUWwcSP9vI2cyglXs/Aw5PVYuDWtKbPaFN5Eu/9u7A1AvXYIyyFnjr/SR9zgYmLHa0kRlOXx/qZHErKX2MTZ4ESdw==' + ], + [ + '1mlH+gT0Ea6bYcnWvO+6ZDCES9fGpGI1XE/dyxjh7Cw=', + 'dg3vEjY5Rh9se7iIzdKtko8cUUftKUyc', + 'aR9z+mfs5szDfGwQejZVvUscyjoW2mID/ukX77qyawQ6Rp0JN0J3h+W3bND4a2ZQabK4mRTKq58DxrqLnQjBd/0yA/Re9LBnheQ9SXhyVo+nRBP1VvR/Vx7BY9dChd8SUqz8Dx8zy++1aDlF2PlHKxeP98khcn1hLQFNmnWBnz5jKPseneWFVnuXF9NGdRIWenX1It2MW41Q3YFySH5EH9XzB+KZKzvmjO6FAyaS4CLKzjspff7W1c2OT+2RvxwYSNR9EeQJJEN4S4PfjXa0gFzy2iIHbh1me476LkHYe06r5RNLVs4tK44PT5os8ViyQUsW6UGSTqrQYehYk0kdwLuxegRyAsmOQFneMfU/i5zUoN3iJ4VN+nJCKvg/0QNJ1IHdrpdlvFXA+W6YXRuED9MvbVrW4R8P3BgQCKnU/UCozE9F5zdcC9UCxmLa8HSmHaRlIIprR9NHbbYs6d3pmmcY578ntKsSZ2duXCagWWThVUTLgvz+NXv1iczDNJGZZdBO7kMPSgi8hIi7Z/irFS45YFJ7ZXezghlBwHvswnzJ3pvmHH0SvlRrn0DNa5axXcHDJC1OPR3nDVkIhPI2oeJWRL6byb3HxIC9CxiNEufxe7IHh0IUhaKZaJtALkML6KRnEoXaJhj2Q5IG2pp69iakI+YQHolyBXGO4YiqTgRTw0DWTpJ6sO6V+/ke79+5wp1c53W8gr2gqXSvd1Log8TzpCrcDOrxX6bAoPbDNgwWwIF76/BTellko8sr384d6/Lx1SqsS6vQ7tRGgQwikZl0Hjypa5KUhIIjI8x+YXzskyuYlKBeEhnOlmwBb0gCJDmsp85daxmODOMXXmVq/nNl/++aMeZaUah0hCOvkDDE7/JGOYgLlkMm5zQrP0oR104CwqLth0ZCeWdLWKkOxlgjg8k/gg==', + '1A4KsGK0pjevLltnFkoyYBufEpgArzLZLFtNIDOVJTYSsbP1CTs1EKM+H76CslmCXhmnRjuDn4DWmugpmBfECS33TetfwkhEl5+g5aJb3VMjTlNtUJDAuxW7/zOm0Q0iM06GHSl2RR2cVX2zvQKe/bqNHLENvmzXCnwEPm5Dyj7KHrpzdTO6e2XBuVZYoH35kQ/PfKnuR7bmIkvCYQ8WCzL2Bne871i+7QizycjIOkSREZdwLEx5XGWYoIOwamTEr97JOZ/Z5HNGFVgUUvZpDKF/CPTyJVbFevLwkaG8uiru5Zff5MDPtTErKD8oX8I+kL4kWwgec4oFqgsxT4Lv5T5CyFdryPW6a0oXp4hYydUJzbYwxAfPigVOVavZUggVN6ZQKYK1ejvO+hOPLwBhmfDuY7dM0Hz9Ko5fR/PcLpgbvGP9VbHaGR3aoznCMKirRzaRbnwZBJaozGCXnxJeORPdeO0/RETzECX6KdkQZVxKDIAM4Mshzgrp3i9akusQ+q831fftogAiEqvGHoFnutunLSXJYqBJ+hSh+/yurvox/6S1lvS/fZK56citVJNMrAEIZDel5SdjvawcuqaA0Sxn0t151rjWB5fRmRMGSikRpfT78J3cuWYNFQbKHckpkI+gawo6tjj0tLdAwTJdhtc+UReLJKjBOzE7xt5dpIYLgv/IpZtBkT0wijAPj0+mPMWXIpiw/hocGQVIaUtrZ8vDyBdYe7EzTIKIqOBaS5EA6f/TtCbGZcT5gr6QGQx6BwThdQA7m29eCEfE9NA+n8g4SOJq7w59Be9kzp5TCp2hqIPb2tAE8NvScRD7ga0HcDSGMrYFCA/KbpdKINunzK0f52ouO6RICfXptAu5SuATB6nqgtujY8+Oso80GVTy96bsqhG5M3vAYmNNDgyZWWwJY26LDTiYbb5tHavtb9hrP8lBBco=' + ], + [ + 'JMLOmtRvvwjD4Ees8/jMMR0/pj4L0wQLkvdN3F0sXYk=', + '3uAP3bnEbCMzIU36NYFZNEYPUzS/FrSY', + 'w/iXIZ5QCVNcaUH7v10IblD0oIIzPgKLfFTGCM8BZtqhGKCFjgwZRpq/HbmTU/wPll58LENwjmyh/1lnANAn5q02X0z+RXc3UmDS/veN1yiqpcVQAChGTQAW3SR7P0kb/tv3ou1LB9W9UDObPYICW3+Zccf5Wz63VZVI/KbKTCiZnEYfN+godg3WuD4jEVDAe8QxJcO7wAXV8VESPTeu+wlCFHXcRVhp9VX3dZH/42uSzDNsv6fqCEpMjxEH1ePElmlydk3ArKBxTDoVW0IzcKh3zEnH5eKjha9LCgw2gzlEpyysDzm8uXaj3LyUiFhGUXnsz8hAQ5+ca/Ii0dnQFf1gxP9deJrOac+q8IJeXqtT6uEzsiMsH2Flc5cG0PBzWUWk+1SOp0pf4866yzHFnQdislkruOiM/AlBZnaPFil6atSqwLp77CcosNna+5ym4LXJFVJDm6O0f4sOh/7szqM7Ya0gcTsl0umyl3bJqLyA+vp5/bHQwBN/DwVJldN3rtIjAFtoeMlb1/398QK7Wj1qnwQGEbcO+7KKhqMiJaikvKcAodAvlNNIeAIQPUwOtCKTHbKb9o5nODgH+MGX5BS6/BW5cijBEuAYXU++UX43azesZSEXjruFHPgm9gI/Lw2Zda5KouM+APfhycM7UK8TxUqfAQVGyVG005Zy7eFxxmCrdeSBTM/5R5c2ZKchxnuWILwyvQ+cMcp9F5dffIawsI9iiUAfcZav3KZAlnJ8EDC58e87srY/6TjXnjmLIU8XrZsfVZ2iqdXlhzwBJlmuscGZxLXwFXdptRodriD9cbJrjsryz971hn2mbbdeDrsmLGyhfPyl1X9TsxhNa76vwGfPoDshbY6e0KNoGwhfG46jp57QqFX5rt84uUpWRoMH+mxQZLQaUXnwmYRTBQK5fHmuNs0=', + 'gFAdFA6xVUIsnIK8nH3Rnf6OPpjHcbtIxW8Y8VV/zEU88SDSYR+f2qssEK53BXDQJ0VQy2UkZmrN0ARCd/Wka6b5ne3XxCcPMvsUyxKyFecMOMEg4p44KvPoqD0oxAfzgqynTkKOzgcKKmC1Xbza3sUZ7FDNACNGwCTsJsgWWUewiEOjZrf6hkcdvrgTeDZ+BpjZR4eWg3kgSV9ay3UIotd8TzwQ/CFbJIB/hceg6PsRj8hIwa63mIV15tuzhpWBr6aJEcfvymoITTstxMM2l2h/uZ3/qgxlMWfcNHCIJoGWDIIkzXAoDZmv6USSHsHZ5girLCA6LFNUuUeub6zBTtWYSM+Zxqqc0zT9ICzBvJBobRcMGFMkqelSHG4DlPw43PH3z9Xl4snfUIwB9Q4VdMnPR1lWfjcCJVfZJaJV1L5h8FFwaZLbXpL3kCLx4+gI7L+ERJpsnTGxP9l4KAglIR8MBebP1LtR2QoPSsc2xVvy39dvaFToklcXhSwohTboTVylRcoH7+eqeude3Ac6OHyFpJnXeWWUCG10vcKXy3DQuLVYenaoTRdRKi/m5aBkzsLaKNPWBn1TETvLSD3ay0fRwGwRhSatHRFpO1F+Qi9UDgcS5R8j7MrzJ+G9UdeEEztsaitGToGUfRpC7hkaN/pY4HCnv1ariM8gHorAyTvbPcSMn9fsMJ6+TdiKNNxUjp+YfvSZ26kAjy/rpok2YGk45x5DtUOieUZtfDtu8sV4ZlFUGbxzbnR/vYxyumifo4W8DqjgWkJrMJIFEhzyhy2ll+SKjYj4qWYyTZU0+oy/z5ddNxRdbAW/L7NXVJrjatou4dYDvU5S8HaIw/nPMph3VKDvAV7zSSlZFlzO+HWCiTyc3sdxJ9IsaRfEz02gEd1cEPe/jtXbRGYd7TWmrjpd38ECPdQwYrxvVAuiGybRstXG/BVD' + ], + [ + 'vHj6aIZPlxdGPOp/sqpoSOTf3ENvoTOcFr1+JfKlKXA=', + 'bvQsz+3HqLJ8WDaJHybfyVprJZCqTzmU', + 'RnmSh+w63qZUbKnAOARfXIvscG2H4tqLF0YPbt35lY5AJi1+SR+Fa4Bdo5G475MxwfBMkJt8zKZA4MyHTqJBpPhGEobeuyrp17Df3MDycXk40GsgXeTYbjN6sOmv6ekaz5eAW0FeWakLUV0IZGlOlOeDlv9Eo45x2/OnGBPQKzAEJ0DCZVc44/lZz/6IEMDuGZjBsWdxJ8rfPjIGXSjpbKRS1fMhZyuvV57roKNMutRIyE43Ffm59qoPCZw/1yeEqcq7D4ukkQ7vFxmX4IUuA3tPfy1jN7TnPQ0tDbNdQJKNyRA5iybPBuGt9l3B9wmahTzXE7j8w6KcnIl9KFc4Qvnk01CK+qU7vZiNZHoun13MZBJSPvHjlvFoNCSroJAMlITbgEGepIu6Pi0T4H/snzpWAjp7PEQR7Rvx+cl7F2xMSUTRp6z1/sUl4ZEBtzeT28YDY/q62BIZ7csTKx46ev5UQuMy80JjFY1Auakgs45moLnflIWwKjbqDmZZIWpHwYumPE4c3az+Sg/jz767p8H5cfnYiPhH0r7E2yAyAFJcCmH7aGZbwrmEFqHQlLlrcfJ4A3/YBUe3gRCeiRhT3Jt7GX3wjnSIz/Z4otE67il/i6nmDHi3OR3w923GmEFiPrkhVcWNU34j1t6Vc6J3fGxk7Kzi0rIL3kBE0fNx8F4qe91A56obEUGPgG77VcPM6cWWQ5W74Py/qL6BB8QjbvV49iKrRh1gIYWLAqM530IDRD1RK/umavFYprnUXNjwtHvskHtms6jQ4Kd92yqp2JkwHyPBSw9MbKdH3vhXv3UbXy3DuL1T/DETJgXvbTc2hdjzJRi5a/IeWsp+UfZKFUURUjmW9pHTSspyZtMTmevfH30APUaq23SYfjCVuciEXTx0EI+UGIUVGljl9wN8Tx1T07aZ+vOi', + 'Dg7xf6/DoZ0hG/lokQTCoRFIKcJ+K5xy00HTcrIfSF0fOT5CAur7eMcwEvyzkpadpyvWZ0HJ3Mg8Zs1E+H1j7aEmLbKcrFV3xmDpHIq2Q8DNnulWII0Scsgt2vUyQDyjVha08e5AewqwfWw0p94TIbG+U51ELcpusu9GKns7K6QRFbfiNEZrSFL209KXturKEItJ4dC41a8J94P5T4Dg1MAO75cDKzZfJo/Wz7xwpU6HS7ftkCL8dGHMWp6VGV9Anbq7D5WKqq88KrN6QcfAxYFC7CJ5B4qxFK2TgjwBGCol8J6FWQBGMNd+TgGnSWtCQ2Xc7QeinEvN6QgNODF/xDFmOaxYdpNoAprZf+Au8lZZhvj8ZeONZIE09EKu+eFI6AbtYUHvbMeD2w06FiEOgKjtPfmYQ1+wJqzGCs28pSDhlds+KSRS6BtR6kNm4Y+lDq94PrPwqoTiup+go35AWM/xgbtUd6JQgLOKm15FE2nfaPVQkAdTjzfVxiIaV2T6ZYwfuKC1b7yESmAE4AsNkWBYysYf3K/k6DDheIwK+Z+bbSgGbe0THw8Hqn3uXWQ7lUj/kP/mivpT7m2W4DbDS/1yx+Pd36KZALZgg4S6patl6f78hZ6PkNaeQcLumMkD4gsbNDmnxfBDKJ+o52qbK1BwQNHEUVcKkUurjn3GWnOyncEK8RpunaqKU89P4JX40jJybKOCDUcGC4tKNoVOtx2jr10eXnUQOfPITzKtm0oMM4mQmBSYsvBi5qsIBG0IjjUPafeUNAD/MOqs/WJo6SRFar0Js6kfrEsDP0AQSldyrczdostv44o3MI7xabEab9kfngPVxNjO66H3/+WDSYOq1KAD0ocICev5wQvgco5t2Hu+kF/EIX9XoVgjHwLOdCCzuBxPx0XqNkBzELNpblV88B8qY2MSyAO0R6bPZ2QaeYRCTOFcpg==' + ], + [ + 'aK11M54ok7z+7NsWY1rFU+LBvhjB4glnqJpkeg2P+aU=', + 'hHsXbN0n8v5vu++hwe/MgCfR2Ae4xohq', + '86E/wpGpv01dI15ZYIyfG1mafDbrwXSztlxRqYV4MGCxCU1++rxMzetL72iIX+U2zJvME+TYTPdhSiRJD0Uu5FLUw6FRs9SsXlbV5rcedfxjW3zH82xt/6sujipAoOzEDlTMY1NNaCXjgpbaljeKOiZvuNs9A0KaSZ23GHsztMy/2/XeVcWI9CahNpKhhSFUrF83Z2gJKfsuCGYTQqFJVO2Buh2IWlI+Lp+CPoFrEFPVkFMhbyaJpqje0O/quEnmyTaBhdE5Oe+hdBufIzTtTirNCqZZcPMlT+lD9tO7vbU1nlfKW8/AaEeF/FEKWGGs/RBVz+WLHpVs34MLAYUY7fevKHGNBafOSFNFkUuALVIqgX1JTu5uIYzzqx6R3bJTMRekqVDmpu/ZUP6pUDKfnmY0DdLnfgX57uSjBpqscVbf0UQG5VP7G9X6RXNILI8UDvo2wqB81QgczPRVEL8LVRa2kbithKygt4Ncr+xGZbHYVzclomB0fG2csA2NI0T7bLwNyIEmhv1al02SaE1c4FEYXNffcbLsH2zlCGCrsvPABIuh9QKjOMLzRSCPI5chW/99mlEIMU/YUOgT7nYIufys4qsz6yO3mk1S9WWuyerEjFXJOwjh6ahEQvd0cpR/o7dcnAJD2pfOR4pdUtInFS4+GSZ3bQHiz2wr2Q83yZnet/mgT+nk4j+kWf4Cd8E90lw1mnW44nkSMZ4571wuRkcMkw0ipDyNlJ5sqZ3tBwCpFNAMvwBIGRvqU6INgI+YUCw15NmUXiV2PdbQfIKU1O9Q5dcy6SUgdvj5ziOKFWY3v/aKy7jTTrHwOw+fW3RDj3EbpaeselgoHQlkO7t1PqFnR7RAqDafrS2kIcawrmJaEs2ZeEVcDSsiJMsQdnXWXCtj8DE2skXVHsqZIaYMU8JCa8flX6KU0w==', + 'Soi4wH8sIh5eHS95PpX2eQXLRUjIHm8K2SzisW5VLjAsSCHCjnNsMCxi0K/YMkkcHseS6V/f5g7hLb+ouZbFHGAvOCvcnpPaVOUr5X8oeF8ZaaLNzxQWJ7lovd4L9pi8kS+Bll5HK7bRWKg5Tk1yO+Yg/MrIaRG0wY3JxB+NBIgHMekW5lYThAlcst1xBj3E0yxos7kVy4rZmSQAYhCN5UL2Nf7X1qlFY+duHZtH/u1XlO1/KG4oab/wnX5hGM4qnNy1LkQgCJQR6EMT1aeSXynHaYnCIm70Zm73vt2nX0TgsJ27nbMC6k58Ih7g7VRuN9gCEPLJLxjAYk8sgf6+qeM7D9uXYEdMJYgghzZMkeT7THWze3Vziw5rGqPIxc6BEflvsxLVKZBjwkMgQDa1sHEdef5HvyMsvU7OsBv/XVpSqwDNC5mcMkoREDVvtQWu0d40tYwN3qPL8aXUkAa7e+sfBGbKY6EyGYcw4ynMFtSjF4yQJqt0HAggFY/FjlrpitcoQ8QMI/TTsS9yDrf5rWGfZMw+fh/O75fxhU+yz72ZtDA5uPxPyjX4Y8DqIId7ex2mGMNnynH2tq3Tf1Pxh/2dexzzGpx3LDumzjKdMGyg1h7VAb2/HKE8kEx2wPkJ0Y+eJQ28/S1KfKS3T1Yl1FYCVP00Mc+RnFPPoJkQ6e5lzAzLMenfaGyrrL9/mKZXUeZloEMhsMW39wXsGKaBoMwqxSSnoEPM8I8rKg0lj9+8OQOjFFFdJIDWcQFm8PzeSKo7ro7PybrtYU5+gC1mp0ix8JYYVZIpnEtfjTfdUaCRoHpb0aEDk/XSvMwn2PbjjBDLnwXt+G7TPdN5sHztnrNwyXgo7dai8pOYRpEiKs6/45OfoO4DlxMZLELoRAUv6fdBkY8BCmsL/JP1itOb4Hywl5ehEIQp701O+es6Iw6a6zhsf2LTfVg=' + ], + [ + '0HjLJ9FvRj8EYt/hTD/Q6S399xTJimv8zZBVmlKn6Jo=', + 'p6kI5jkuPxXTOLmgSVwdTYfgil7tbRX+', + 't5NIU5hs5vJaTOUWGFmeCUTXfKY9VCx1cP1VOySRwQ3+MvS9kIKFqd7FI8bS4RAV3R3eXzND5HYXPW0lD/bowc+J61mVcbAyLHSRExRH0pUa1ZCjfnTe8H4fXVjzThxd9XEu++mRahYBH599n9BP0Pp9hVO6vfdkWWJICSNKhPKDsOAUVSMV2mvxaVZF5bN6lV+sKwd2zTgi6eCY4akuAMY40Y2pVUNcxJuI/CYlu3up3a8hK2Sa10c0Ww8DMTIvPC0SQkljVSJ82zhkTthdhbAsJ2tXLi+ezbas4aNXXBz493caL8HNIRrSaizsTFR9HfMp3VWbxxVs06ebgsp53JFQrFqicJTPCyHFWYdTgOvauk9Q6pkJlZe6Y1HY6nDxsW3OPvMgJN1plnWVz+j0spm0o6r9MrD3YAFtk9k3Rz7CMdDVW7T/wE8NeAYrfaSPkRN/f1Q6s0EFc4pwjJV+TWx13jSI4OAHGcuh1tV3KONzPiR5f9S/ShZUSzvbIONyhcLu32Q3Pzoxnud/j6dq2DIO7WeZf68SMz56LSsPP2c3z2LukfKBXgnnT5NMhC1/mEmGyvR7BZ04eNB2wziNap3yQmLonAoHoz9LMDVbt4BfmG/NDWIv/dbQuNvIz3V4VV1EOrC6abuO9Ov5Y/uKQQ9Zwq4bG96xbNsRGbxMWs78iishvEU/A9Av5bpbx1sQjTyU9gui7AlhERX7W70mGQFF0gavfUQi3HLqO8sSRDqX85gVJ/6uPBI2Kjxr0YNnKHDa7Oc5Bi8vMLD0F97YNSBvncFHJoF9sjADMdp6RRNxcrbuAL3EWU0akqa6R8qn3Eja7oogPQL9SOm0QgcaI7PUci1biQg8G/es/ddjOyJrbORoRe8u+vcX8U/ny2RNtK5wYQRSEvlskV0lYG2pjYJmYqz71SEBqPg=', + 'eTI3y8EVo6HTBYj0CiH4hErzA0tef0BEDrRMHwVerljt2f7TUrWobrGAQpIsjeBJdav9HavSD1S4Uv4kz9JBgIOsxTKRllAHfLwOohPofhiwRNQ3HoYhMOXU6w1XT4O9JmnzwXCtOVQd8wABeHLNH/osnXxyiYARMXbrVi3C9fSx6JkT+fTI6obdrMyK2yuaDiuWjeBMB+1+yf0Tm5Owe/1tjkQ3aG4uCFVfN1Li+xgqsL5jPryoWIVngrf5h+F/VRvQSlDhOtWnFjWCz2vbNHlvITGgSTa7OKt2LkbyYz45Plkkk8aD8z2nArB+6geoqoUJNGysDEDTVkkH1L0iDRVZD1POIZMBp8igTvalk3Z4tk2zUDnAmaGtG8Xffte9lNFEedLBRmSLD53V7Q8VYwLz0vm+PWjX/Zbw4JOkIaVZufkRMnFa8xqhqWL6AqsZG7NzdklSyvPCWFhHHr1rQwmNG9BXRteTd1KWEHvI1HamyNXU9TdHHYf0ySDBhLpCP52BTKZ5Rm1ZHGqUFiGpElDWjE6C7u1zxYpgNDf9LscOKnfD3llZtrS1fSDJof8RODFhHL0/xIdOH/I9yc8r2U91J7oIpn/v/RK/uheytZQ0DEkXHlnsGaw5j/DDjVkpyPKFEgrr1HQhh+bjxCCL/8vDcfmyL/HnotafSZbK2CNdbG943eTMzbOIKDyHR7awv2URJd3hNbZ5r3XdaroGA5ehm5wga+v/o2e/nP0HWSbDCYmfxBv+Q1UheIxpoDupg16bOpzSDE32x39r6cbMxqf4/dxIFOUVNOFTveBeHnpLhrrZicoMy7sH98iF7xMWOWp2lsAvnivkyc+oWexAtJIByOKcTlAvAleiBvcEX+cHmQep2gjEYp61yZRT3UYslRcPhneJe/ru8vNt/NIhBlqEbXXYTsK3CzRp9Tq8rE7OeoB+25zWYI8z' + ], + [ + 'sMsyZWCHRBbk3FYyf1NuzaProzLLaA2+AgXUA7TcJkg=', + '6ogyny+jA36NccsCWJfFPV8qhbCh9nlC', + 'SVUcaHguUgZFsnJBBZzRqKbG0vCQhVD/Yhte5DkgL0GTnTGU8NUPexn0JI8A6fVFIn6GBU7UrfRzFkXUfohrXHDa7GWqcXxctx6PFmgI8lv9xVE8vcRUK9RKqSQrcosnp4pKxA6OmrBzZkuwRhDAWdoZDpblCLjddyTTwAjUAGMmItuhK3BKbjvhrIQqPuZbsMd3T7MxpTTHCValLD2HG3bcGq5x6l+itJLYEvlAZYdNMBNNnKMJCCeE0jqpbCLrwvy8Oqb3TR5dJe9/P/JGw6FWYvf6mTDwZe+Pvk/k4MAJ8GKbmX186jN5eVK7JdiJma+t+pnQnJGfwVBBbQxj8SAoOYUFk6GWOJGfenLmqux76DIFDQvaQEitHttGq8rLxnFoPS8evK3d64kFBiXVXRMFel2sCIjh1L8lj5nYOWWngYhrKUuu/l7CPo88a3DEZJ1LJRxp7J00muMpvy9HYpooXIh3H10g6zprIQknBEVyZyIWgTJ6NAu5656Ns9hd7hzovZABg9VZ8JLyouFGpOjI68Dtwm1X8jhJbkvdeJYxsYYj0pSvmbIitqGCYtAlUUdGUxHs06ctFDO2Ms90/3pBkjJEcHYb1dMuxyNd+c440VtNO8fCXNXYkShYU5KLAutxANbMpRbFP8ZkRQWAHzL7RMJ/VMeXb2Pwt8Ne+aOhyN3p/79xZz/KyTsJKb5wJ8IWkOcniMsH0phZRyWRmRWSKhZh6TLPJTipfD+CzFdyEiJuSblxbaI28O/Rof6JdXZtEGUIGMmkxaXVQHNvtc2PWsvcYXuZWMaKNGeU7A0s2QK/0OQLOhC2gaCnYlv3Y6uGDKxQknezv3pwRSpphiuWgPIzOYdBU+6LfOFwEehqco4zUUu7EFz0GiJdYddhByT7pRcEXDZaMtXHVvEDYxkakL1gx1sY+vtN', + 'm3akC1/z/a0443XYGfOuaXqVI6Hucq3sGFFAhC9IQQE02t+nBqKhg+Z0M4poo2lhRvl1yJ6XI9b4U+5O7F1XkAIjtXcFJIhZcOofC3Si4LsrqMVgO/6Nv0gvzEjL90Vav7vIjrTjM7CwMOFHKt/9TzDyqMJh+eDehOrOr0YYe/fxgLVk/eVMikQO7I3YecOGCvN8J9ILH/ppiEuuNJJHKEdAqIbh6wsrBuD8WUxcdZYin+oyXz/jnXcxlukhad0+e52ourNYro7mj8mpvG+8mE10/fLiQixxQEpNmt1/cye5t7tlPZgW1fVTc2/n6XoHs/lviYjxsckuzKWYxVbdE2b4EVP/sS/07ZOe66ZsIJW5JVYx9RTAKmfv65pd7jegTR7q80vImtgJ0edznd7/ChlchsIxVP4ddGbwoZ4ZI2HE0um2UU/gOH/GcM/caNSFalyHAdoTSoKSwUSlDtSY5g/9oudmgpSz7Of+KAoVY8TCYGYZi+lblbC6sOVuQFj92OEt0JkRqnjSdhuypYzsPhm6pVfyoUTCxzWOHfIcCq6l6rugk7N4XECNAax6qv0SumFG/dd730qbX+HhwGjHtXmEU1yv81ngoOkc28QG92yZiQckf8hOotED7FlKed1Mf9a53iyQC1IVt7auFunDpYJIf9SpdqD6wo9vXbfbU3KcjfURFBdIq6cl1OfxRI0IgJVqJWKQQhmy8xh00amsZtE0GAPkq3cg1zrwfl1tCodxZgwvJFghLwfN1/WpsVsyj7XQdz6mnBmYQhiYl29rV28EeRbZT9ATrvCCkua6VIZu93HJ0fOk2vI5x0YspQCtN581RMRbb/TWyGgylAw6bLf2dIDtdkFBTbgsDTiymDcrUX8nUW6XYsOUeGxJVRsodLTmS7kqlZNtrz6+6BGa4+ehzXcRq6aSNjlogl8uX+T8FNbgN89/x8Wqew==' + ], + [ + 'bxbjWewseJKIV2yTiFFpk/t8xYfGE4kOKb8tbVZ+twM=', + 'HjPTplLWmX/9WbvnxZTGAF1Yxy0Gj1y/', + 'LGEMDR1HGH0AljMq169oGplCsU6JiNXXowUx1h71qacHZh+p+L+rEzYU+nOHe7z7pcvSaOh6VliWkcd7lm9g8tt5ePPdSVAgVCUxF4VW8uE7Rk1QG9C4lFFo9yLu2gdWG0JT0EMhPsADxopcHik2pdS7cBNvnKeTxTs7tE+0FhjCt4yZJTd7mZg64W4UsYp+ZSUyH8IJ87xaCSg47d6sJyd+Er5ST/8a0w0sN80hXLualnqMTn3st1U8+tTaQnjBYwTriE85h/gRE/Udr+dbkvGhgdb2J51PD8ye+2V50O2GNgNLpMNSsXZ8gGc5XFWbMo1Dcj2TfNUlYsvCkyTbW50kKFWKqe8isZD8Qxfn6qQppSeiYfTV6xnzgfUpaMOgaexSib4cGEIFqvpjalwleMVMIk6ZmHZwpGNKW6lFONlg9WfsATiuxwIuZTbPoArv7JiWJYY0cG0OWEW/jrDxp/s84VeBidKAjEZ24N+YeMPXRLUBfcDn0zD0NbcgtST8DlFQLKYlICoSwub1tJkxe/SeVR6PNQFtkESjT4k3BKpEXhJt04jkNrU5ZijzC+u1lwzGxtZSwaERxM65i2JBKIeTfgua5JO1YqG8CESA7K4swyrfq/EjhbI6R1pXToSj1neMSOPxxGn9XSwmKGYzmAYSn7JNv202T2KsF0u5zwtc/TxlQCJj4A/e9Br+9VwOgJPzhRAZAYQBfrT0HEEEny/svsQ5E07V5ZPLjvI7LgjzP+uKuF8oPjTP314Ip5bxQLYrGYKnpdDf40mbYF9IeJhq3w/IPVafpx2QRszWRUIFSnqMTwBHCscxHJ9wQkqfWZYyS9rIu4/63pXpyw1gGVgRql/2810Af5fMlcxSyhzowQMWARc2cJhon3EeU0nKpP5j5m8qath4XkhuF5YWJzFsfjKNJwcfc5r/6Q==', + 'h7fHD34F+xPMAF904JC+1v5Qa8bAEAbZadp6n40WB08sh2ZvDM14UbyRqZtZgc0+mYMLFwmSxM8ZveJwU1zeYtEgy1ynJ+gDfVCjTaEF5fr+ym5E6M2Wg80RriUrCk4yXSOkchRAI5w7S6fr/Hz+EnxKl3FvNRNl0/z//8NYcCFp7/8vm8cghEPN5Zo2mpNUwLCu13R5gQ5trR4ckanPtNyQ2HlExnPhjblZd3syzPgzss5uysPW22+Y59lfE2Gn4AnwDV50IN1lEJFySY8ZBklUjq6dPEZdW8NPXSnOFs7ZE107gWcK16duWIC25QDVXT6gMmdJcx5XxbIDIps5n+gNldXVagPWgeAJI81HuZg/cIE44OE+nEb9Dz3bakKwAPgSSn/xaiq6yz/omJm1lcZo/PqCCjAitW/niCIDAT5VktyESxzZIzZ+uMTxxn8BD1HmBanWEPglKlRLZIVINJWI9frLsm6+hCVYF6f+g2Y0xARDf/2owF43tGgiS3YXwYdxcsd+QdLdhVu+4rKbnZtqCQMUCnxKNWbGSxOThTrmvOZMIlfxeWfTJi67l5EbVvoKYyzeW60Qlzd1qyphzJln1ub3hbeLCUmh4TNxL/VJpOiVDYIoji2KkVorqDSKodI3fq0JEQUGu0Dzf9SuoSWvRGPOwcMV5FGJBZNR3JXLhZWU4/WIqzNun6cgxqBE59hqHsGpfmziUm+Ytb5+xMQ1ilreXuabdsjFfnxag1wE2UTTo8Bv6irkElg+mo2hsCAkXWVTzI5LQHaN4oytY+Mf1HvS4BRCI27+nnJrlexECwfm4ALRTBnpuUi6Qze4khxshCj4lo0bR2lqDzTFQ8YmuqrbNsGHR8hH+NROD+Lr3duXKa9SzXMyIV8LNSNo0TDXl4tyNje6+6C8AUftrjCAuzjY8ih6ji2PsRQ2M5cZb/aPhUbjb4FloLY=' + ], + [ + 'PsFfTUpqC4PTrKmtOemhJWMOvxhdh6qhSCH/UhrwEB8=', + 'rgs2w+nW9smUYYF1vGiDLLz7t8WgeVv2', + '5ky4o20BXQ2I1kMwtXHjW1ZXeMKugHg4BxPgoozKf0hhNzRmn9hNHzTdn+axOASrnUzMfSkiEjx7ZfzvYbY/bLIJHqYNkWHD+lb2XaU6+dod1FS4P6XIECxQ5Rmhtj6B2BQj11D8uknHbvPFHf3FUGeq/XuhfgJlBrFuL55bDR5BFc/S9B9kyf9aLzX4cieecJmgy2AI/t59tcnoT/gyX7zsI2gR13E87PC4DOdBPHNIjHuSg/vQB3uVgJ92fk/hOyo4dzCvUnELyIyvJSR0qREge2arDZ4hlORliOCqabB5unYvTeyAkA6ApGih+N/qKKrciKhNK13djT7yw0vRt7/pY0MlQ1UmLtiDEPrEr725xJ9sVeMATDyPd9ZVJkxCE4Fg7YpiO+Pyhg3bPd9x9CsaV81udS0RULa9p0vOu0igvEMfKI1NTMTG/k27STCEXzl++kt+d43dOZaIv5R43ZTkAvvozZ7od5Fp/fnqkRQzgDt/GQTHcR/3isCJbxOdsA+tiUz9dM/wNaikOUiCdr3GLpUEJF/WoAjLdsk8U2oSdkb0X0cdQ7RoMjf6ONz/4ZnGhRgGYv/00Ncw2OuypO7y1NvDZuq9jjxK02t03Ho4li56ebnU8I5UbufaGarYXx4poFgeTs5WWgXWsUR4fWUkxP0HVbC9IZhSLYaiaR+8jWIvtPXunLKFj+rTKY+cT2TxmyBqdlWfl5EauVpIfztQCRecrVRP3eT2RBql7OiuRCRPYHABYBToYBkTuUOEpPvsvDCGDf+/68f4X6UA88iChCWHfYGOJLkYZ7HpmCRF4Zgov28poJo5YnPMnJPEMxPfx5om3CSG3+H6i1J1mKNq6n1FG1VsgL6m/y+VUp092BSarsEp/IBlBRAGu093po0tTwTuVhYClQtWNUzF3PJp2/Idvbgn0R9zydE=', + 'PUoHMmDStUBMAFV5bizKUuO+IhFYHgo0fdTuSkGVj/UFwodRaZXm3QenYziBl84MRwIYwNgwrdl2u+sHmkwgVKnnvjqoGk376zpJwnJ0lGPrLAS+5FI472QIcyQDuEoPxyrkyvPduJJy3wNeUTMeVphq79M8hlRuI5ASjrkGgKEWiDzcXdd3LcbPbHkgYQbM7uJWKLrrG2bTUs9PVLbGb+avyAo3j4gaQyGH24FDreJvEGuXALTW249NOABer1pT+48psw3phL4ZUw2Zfg733bL7RzCsmCySxWIIC+JBIzVad/JXpQsqCRMioe/6jHql4DvFD7rkPfFo/Z6088Qz7wnaj+avaiWlJiVg3ADCn+vflMCG1X13RBmYMFTex9NwwL/5JEEekTJ1LbvF9mS7E5l4hIQp8gGXgnUVBEEUrIEuvXNXuFFa3QzdYuFvPMvFtLmy7PVIndOcptOFwXITz/G35SRlf8imon+PsKzCYBb3WyPibs481uKqfIonq8a3We4nIB3oJAm/OprVzJOh0zdomfKvYxnjfK1YUgUk3KxqO3pU2c2mW3bCzAbHWtjmSDvaPWghtgAEJTcN+HVRekoHGYQyIb3EdnD9bu0Jx1ADkgaALdyQuPzx6MrSngxEwzNrpmioNwgGYJNCerzZZIFRQwDyJiSVbtLqS3+aeSDWwX4pJJU26yYNZa7mREG/7xK+oq1XEkcpEnhuoE9myWj9C5nXoWHGf3PNVlyodQ5Rk6NOibN8MfQAk9XLBdY+G5YBNkB8CMIfdgmUgqmT0u0hIPPI8hLm7ouRaogj/FyxVYmMxcM6WJVq8bUylJrmbQc1vjriPr8x+0Vvsil1Q/N+3m/+vMS0h3/R7k8RSvnEwJ8oSjYOg/j75OuW47/cj9eifuwtWhMqlbpvclAj3Wm+L69tipR9bFU5+e2Y0IhCseeFMjInAZkGa7q2' + ], + [ + 'GBnikVDwHFRBBlFOAUqG/f2jdfhtHwB9SscCqX+JzFg=', + 'sxdYKyppsxu0Sy7v0wkaWF+cJ6XuqXaK', + 'cI3uXorbsCp6gODI76EcPkp9WItCmrp9Eu3wuM9DNFFfmQOYwDvsR6fLWsCE7cJ+wsA4Ok9EHnlMepLw+wm+5hd5RtlvopiVl6nh8LhDs/Yh9ehwsuTxaUXS2eK70Z9cxvS+DAY5xrL1bbGONde5iac0BMA23mhyOQR5SM1T2Dt0LE7jJQIPG3qzgKWxTtlYPzmY5qcVW3HjzAo6us67IUxi5LSl4XfQTJ5/laes9vCjTjar+T2pJrXheTHNvMoyv1bK29eVH9D5fXsYlZgZ0zDhuB/h4kBavK90bTqg8EygJtmXpuiCEkPeiwOdvgiRLa4BLPoIWRy8o5sB0j4D3uonxFXMPFJx3pZN27bFkdgLdwV6PPD5lkkVpagVqyEzST9PZ2shJ+/o3W26FlM6A3UlcldBoLTsTjYUshW0Ox/JToui9h1fFSE9dxLWd3iuN+MKJ/8n2Er/y9T/ML/AnuAk1v+Tbzw0RVo4O938rNxImBDTl/rolatklbKoBP5HykQWDVs5cSH2gtCXJ+YecKbEGTIM6TgXZIuf6sGjEJOqdBXTOopXJonulIg35Umi0XfzQhnjpqhIbuifr7DMX5ssPUUADePRRkIsia8NJbVnP7OqaoRoKHtRDa/yc1DfGebwHpo0ulSn/TZ+1CZR9itnrfMvuna2HiLrb4n26Rlgc3RawTVksxKzdDiPq8GCK0TlZa3EGnBLR21kRsjk+jhAqmDKHou5bm4p6dZeCmez9lSql8amzNelC1rCB3ZXosNYyjx70pjLXkAHMBkt7oHirUofO8jiDaE5ODiMKkauqI7inlWR83dQtRjBdwvArybmdAiDfgxNIZi3gGgFAtpOOgTU4UA0X8MEm/5GJd/h4Hfm625WyakSpZev3iIuyBOMdQXTeWp7izExpY7ilapLwnIPF3+poDzq39zU', + 'KuVHHQOq0OtG2w49Lo+nTBCQdkvj71qohlpfT6CotISYcRAfwjwM/P2y4OsMoTGsKA8PoHxKTB1q4L7xSyBYQp6t37yMqZAUb6YL3i+YvVrgcIN/+HNddaQ8tYpV/AHsSHgb0UYhoBFc/HUZAisb1y8mu8OPTdK7OllfLdi55Dmt7MpxbTcl9xGCGw0xCYwX8IZazptZTJiNxXTRA4TYXtEq2kiTpmm6cPR5OyJLj6XvWLR+VjcNP4hBtYoNVb9dU5wEQPadYdRdmvFeJa/ijhZJ9tyUZ03RVjOcwNZyAwUrNz2x/rNhx0zP3x8SW/npQkX1KLtbiRO8mmvRvkEnC8dCa02rQr/xcnEL3KlhnvAvtTaLrNa/L2ffaWP/IzXZsm6amK4KO/sBWBv8JEaLpOUaKAo5+a0/yOM484URMwIPplkGjvNmyn7bvm1u8GPkSsKARkCAhAHyfqdpmmruzOJveldEBRSSD3gcDcUXd5dfOaxfQ1yEzcEqt5AsMGnZ2D7Izb0J++c5fgupghuuH8LVi4qlJuX+WLolMAGXK9li8jmUEUBREfwpGvQPnkfSK1nYdEYX0MvRpoqfU7TH2k5F4xLGF1fxvEvilD3NsXtZbB74hk3IQMwizF1lXECTO03aQnZcDjR5o7B9VuwETh0GSgapvOeV17A8535q75941llYdzlK1C6HRTCC+3Hmg5p8AFDlVCh9MV9R5Y5aDb5rxnaIpsdvqjg0wSgICvRGzGnOPzP8rgE01knCwv7KeAKyLwsAQ7jq7Eptjue6HcJXMXWeBRe1PM/kGTW+W8mFmoYsoabpYcdRJOZUYSE/pOmchcEjI3as+ARLUPXEyatqrLG/aYQPNKkDEZfwYKkBPuBatJ1yuTHPE6DzP9wyTblQEpVeqk7EqcrhUDurMwYAmro9FUPB6Pivh3+hh4dJyyrAvRaMQ5B02Y1CVA==' + ], + [ + 'WYtYLv85PK3qDMsYBVbcZK35QMrdgJpsOQDr0MmYWJo=', + '8AFQXatj8sZbt+1fYhXdMOffFq3zbZg5', + 'ibtVg5vn2NewzdFAzZswPD8P1MnvdP2CU3hKMPyZJ/vvhrV3z/eqGvSdyd+V974xe56FobIwljsQI6Hl7bwXwNs3qg5ebynr9J9bKtXseMDxtAwWMvp4D1tM3LrFcAKfTy74GRtlithZRuPQiHr722E2H5iYr64EC9YooVySmbP+paPhTcmv3eUanlRr//2xllrNQrW7BZeoCIHUO64qeSirKHmz4Rln5le34LK+nQG44WWM2EJufBOtYb01Opgg0zwJmfAkRlyPAE8YS7UFGw1h+UYAAHW1anszhNsWc9HjC2vhyEVFTtOX6NtRXeqGeJhiOgvV0uS7qWno797jIZwD/592Tibfm8ya8eciKzd7uPHnyBvE9VtOFqv4E5seXIW3JOpPp446sK0Jd4huGUfVd0U9uPlbkCXxesfSpSa8RZP1vboii1kcWwLiA40cYuqUoeKyg4UL34AHcd2Ui+Uz/vsolGJeJrYxlw71uhYs1wshw710AEuBf38ybii/kX26gKF9g7Am4CUebYECl6vzxM2wdc4yzhmlUNzWnWqEtfP9/oIrsSRTlciMZogffZOo/MzCqOlTAHTDJx6TpXZmBrPzt3bN6aWFSJv+xk75J904X7U4IA+p8WDjzg0SY/jW1syu+VijxS+6E6hspr37jWTLoejq9Hq4zStllNWEQ4cpwC/cz4qc/fVR0euX7kHrPoxgTjQRWeAQE5qLGBP94VdNP8Djz2/wVYY6hVd/UgflaHmWNLq9+bcM5aogwMLt7sfrhBq5FTHomGM6WsJMFFdoLh2uoGMNwD7TMC4hyysOh44VyWRsxDymX258Y01VFzjwLeV2dF9a6xri38SdgQdoXP9xc0bDig2uNm5+oGN5hmd/QMLYQgRJQ3f+kLPeNPBspp/OE+zj4qILx97MMcK/+YDllTFBwPCUuA==', + '7oVvuVd75FEf78QGvwVbP5SKA9FACCJM/stI0dQT2dLimy0zMOmhN9BDXTcxG5iBHQphSjRbGzmb5sGZSDTBJV7OvkHOB4mvyymSA/P87sHCKhuDlwb0gBruilkVKh6tFk95MoAMGq37eiu/JFRRlcfoX8iGjOiIRYIHsIW5g8FRrGe/I0cGr/TxeWdybD9Z4CSzHVPe+dh/U/CR7meAj2pUHSrcYtzG7ODXNPXhh7DT9ixR8BbNiavegy10oVuyyGPFpCcmu5N4qT7zr6g2VR3CoKS5vL5ODllAo93c2sWvuma4VCHESjZqAHrGlYhqD/TrU//j7xtoONLSPU2/dAMO5PwysPeRWctAvjsyGygBnVtBmHMHlt6tENHl8sxQQCo6+YzF704KF+/TqeqVbTRdnKAq59IotaYPw3yz5OaIxxuRhTfc0O8D8SO7D8X29ll6PDnNRiOkjQQIdeXZ9Z8EJ0pAg+eyTVt70QYkkNUGA9rWs7P/ap2UVcGWHT0rS0N1Qt9/iAjx6LZL/y2YKz1UXkZS98qYVb4JIeF9XUiVi4Ku47TDgDAhElkQGiJsNIDBGMa8X1LJhyNE5zuHuY9sq29xsLPVrgJdbIUSi4NEmmwWPectZzTu8UojLRYdmkNbWOypCt8Kd81gIzCC4j6uwKsSZq7xqikIQAHQJAgyUhvIvlsOWhNAiFjbOw9mt0YlDiUuhrEWUDSo8yFTo/Blkt2+VTdsmkufviO5pWzREqvLcisq+QBFBoLTaKO7bTi4+ODxf25SgRAgvTBCX5W3lGByjLaRyfpMYNiGnEFlx91T9RutaUteFd+xgifbCzWaFR2gR1cmoA1yQaZOZskctsKbCh2Jniuw0iNjPCbgLw/aVyr/2Os75Rvbu+IusVToS3IK7c0iZHgskep2X2Ue/YjZWIYn4i7kMWDUOt9/xonxguYQWM6WN9HjbfY=' + ], + [ + 'hNcU3oZlY9XFqJrp0wlRqDjqZUHg780q8jmWjtYPPqc=', + 'EIuQp+9QTqqrsGhMzCuakNC/nxAdxp/s', + '7a3vWfc+wQhoPH96rN1g96FMS6EnenrsXBpHvAeIz+Bg4otm2S3rji039d3AsEs7K9jNPJzLUSMDSriGx90bQDjX1PEPfekGTDvHe25PtL3Z3rgSgn+B4lENXUIxAjEF418CnG/0hLaDsycRYfvhqqrymLOX/z/yiJRKuy1WNv5k7vj33XomoW7Qy8QKOfrMiYHhT9eZTyjRO9/J8GyAjGb14syCaoSdQDeAwnuIFtLhDuGE5lTpJwDRXJbSrAeEBrdvewHuFJQck9fkS2R0JHPqu+zmFa9R/0u5oJs/+DFyJMQPCX5CwKbRtMCRlRNON1J31ogpZWKUdSRzvQNyXuyMK3P3oL4ORGUMrNrIrRSNLWXfUaqVaBJjgYl+ZTHQaIwEzJm3kO33pz8WgZDW1zR1125anybXQ5e6D5iFgnMjbGMQ5uRocrola7sLtmMc6g4MbbYgYFEMdmCy48wXdCm0xb2gKTPiiCKcf9pRA9GCkWSEjAzPzAFsbn+mz/IMds0iBVjcEOYIub9kR1v8dl4KtWorI8J+3S0eu/zXud0RE+FHY/B9HdVl+eDo/85UW1dRZ85Ar60LfMRupV6MefqDDmGQ3BP56VbaVfR8XtHC0aa6jSJkdVg4yanmvhrX8gGTN7WAqGdIb/JzxR/JEhkV2CUJkohJ3glV8gze4lJt/GlHPNps8AzqtHlBDFoLAvTXV/n+n00HXVBBtw9TKw+/MxVTuP0lvHLlZkDZKTu4ft6YYV86QCR3KjbPzKfa5VUk+Dt2wpdeUpbkkKZiZs1zbxJWIYNl5vB18+MwUOopd4hQOzbkuvITfu0DOVBUff7aQyDhW1z2OChNoUcMQN2vkh+dL18fNKwBuuVCl90nSfv3Wvpq6kIa6tN94HDozyE6RdFmTwloFCASuHRt1tmZ98zzNU5LvE6PnfakPio=', + '4Y07CWr4kUFTFjqDlZHtDxuY1MxTlP6a6HtFaH5WuRqudPNeb6RKufNJn35e0Bqzm4sSlhpFOaO8sUucW8XiB7WMwS4F/s0NAwwrJqTG1OS7MDThGq1Rkj6cKciuqNQVyfZbuStxa9Wj8BwmNC5YK/457q3ZIHmdz8qy/ow5QKWrOvpo672oSUjb56OyStjtEcwHycBrUJbbFIeQ7Sxv/+qzV2EXMCPTFw9TS00mN/5ji4rD/72h+UhkozxeQ7R6amHsjcAWcjtGvW3xXfawzalbMrcDk7k08qOTY0FTiiRHvIVgrJN2a1Nem8KnRjRqlBJbFvbaIin+JJml8HzjYq5DnVzA0TrMNzCZbW9rF4ztCo7dhWuo0ZNeFWKdOk+wMWhMMMZEkDeJAx03Siqi2GknylsQ74ILk4AKoiWx48WmpubhZKSDx4V09sP0Z1vqHFjMy679hgH6Qksn+WpW58kLEZ5HFW0mP7+At46uci/O9oxkKmbSe2J6/xre0E4FvfpoVGMMPltsrdZkULT5LmH7rrkSi8cV36Vi4xdW6Wkh/GZNLiaV/yXHnxGVALNHj/eTYuxfSAQGZoMo79pIZZFNQlh82HImxgP09QQfShxXtkWtgyAWcIRe8yws/PHDVrWQMuNFNh6DveYb7zeBWxNnoe3wsyKol1S9F4RJKtwiuiBT8sABkS+t0s5QLV1Zs9MhDIyMf8AJie2X8/aIvMKIFQ+Hf0rQzIkHl1CLeM9x/7rIwno5+us0d943ngo4B3D4BIB/UINbAHkRYVqwizk2AnEW8qwLYTliA1s+ozeaUxGvbpxbIaCtTAyxoGkV/A7luVKmFtb8JmaTzAuHdyHE0sIDFkmhUnQ8bp/xviOON9F7bWdR2QXpEg7R9vm86P72PeiLm3adGQ0znHcL8URhp27/5CsgUwETmCXF7TSofgPxV7th2U02FgKly25f' + ], + [ + '6kiyminBCuo9VW+lTctkAzSKREN5tOpkPiS0oucwjYE=', + 'O9qOmAE3YZuYkQpbCs/8Nol/rnjHJ173', + '4i6O0aqEnlZAKto1sNxoU77gXm6a4XR4gBPneDY5m7d9KTrY/hk/pu7M2jfXCbQeqxMUYsQrmf7EVvQ95FgR9xwDq05sslbQd86Hg8biNHVEfrJghe8zzVO0Y9qiYV4rgNKHDXwOIDqNczimyRENzLPKCKTa1stPdu8GtB66HH6Fa44690sklGlxKQBXrscLohlPHkmpm0+K1HBmgkdxqMiwusloyCEG2TiR2B3G1HLpVrB/6VTjW1jomEKfl/N7HaLcj20fAF/q+ZiNweRj3c1xrlu2ICsFpmSzuU0FugLCQkUQCde8sEp2IXUHPR8b2QaIQQm+AskLWdOz0vtFRgHL/6ZCMJrmNiAl3MR40H4iB3erix/XM/gL68iHuo2fvq5rbZyTVJrhuyRvHpk7NVUCa0jQypqXRXDD3ANHbpi8w1A5K7X+h7IEBq01l8OD2IRHL6qIdS8zaXX0pAPY0Pvpfey86kHybhwbp6hIBtI/IENVubuTcAdAcrZXjvwShCiBhXuCOR72SHJ2Zt1BG2fnWtZ9kU2jdsp0PJF1xBRCL9D6PW7komMCP/6pwM0rEVPMCqKzmTsw5pC5q+MAgKEg3+g4qCZX2SXSWpM8g/7qx8qEJbeoXXbVA5V16OKoBJE/6SEfDOr0EFcmdDxe5EHV0dk2H9gI3efQvmQGmciPxhcI2Ns38BH61a01/lHhFky28nG3HrMXOWw6qDGdxEX8cpMU7j/UqGLNpYN1d7NFOaOdw5D7MlM62PefaY5na1O9GydwG6YeGEXUdYU0wbvsfUSbw7uTtu2OkjiTpGzsWjM/VXT80alGRjIPbbfmliFzeo7EdYlpwY35OHtaFD27Ld0LIBauoTnwYFc0DCHTIl5gb2jeRwcfs1wIvf03ap0FG4nlPHkVApjV/qGUGUtG9YFX1uq1Bcq4keYdJ1OW', + 'XFJRGmYLnVpVSNNHvyWI0Xbf4axNVpNzZf5fq0py95vzifEmUNiu+vXuPb4qrz47R/I7kiJmdDO7Z9Co1cFOGmYHjDEBRocUq8RrcH+Px/sR2iqMxErKpLkWzBpxTOOgTh1tSB+q0+HwH91T0ljebDDW1omHHVpS6+CLXmbl1uvceAMJZmaljDrR2V1LrbCVovRXlitv3xQ16RBT9bzpitF2Eh37SX45Yk2wzfx1ad05/84wisg51Y6WepTCPk/SfzzPDqVL8Jds6LdwalAuPdtfiOLn4bsOJA3JkLW40pO5TsVGVefgDrDX8Ki+rHM99c9bLMW6pu427mPBCylfjcqaTjXdbFQrO2H14F0PLlCcWM0iFbRq4T034Ubg5XJ72mtVKd0Va4lnFerrZVWjfOJrqEnzSGOV102C4x6JJs3upAewVclmuXrAs8ap/g3Q8ZgZODh0e0Nb5cau+8wmhTB5ulRXuRuKSZAu1KE/tUh/KdR8cLoZQRKtMx37nhlhzxKvQ1T1VawW1EKyGcQoiGN1KqJHyAw/llcSfGfnjGfhHQYEpkQC1UYBnlooPcxXVNZcYpsXMd/HcZm31otjDTyiRmUOo6muSxtSyySnDPSwxkcnmVOjA+2462Qn09KtM5B4/6aevf7lKlTz/EBkGOEML5czBZnh7wkBPg7//E17T3Yz9oDyP8jDhTGaFcfwwu1xaB3MvjIVuGpLlARhggOrdAt+rriAwLxbhGAueEpNbLNdnWD4iBpdVwlmWiv0yzLStkvsE4e+5GaxcVwNY0fqUUJU7q/OrxoicLGajZd1L5LhQzsHmYBfYhmL9lGnv55VAT+KvtmbF96b2cT/JstlViQcympJdY/WQRAUvb18UlP2ZOk57SNltOEB8HzAUJUyKJWKa3Y4nh2cffUCuDtGdQsaRSJhZYGxX9dBCfCy7o6vqIWcTnXD9Y9KNuMyzA==' + ], + [ + 'WwXUJBvSud4U7k3yut96Zpq1eAiGjs3Rx/Ah2qJCMrw=', + '1wcF05KCAZGtJUQPzXIOBqB7PvTNFPSr', + 'xIzZRaakShZXvWHealLrQ/5X8VGqCBQPCGeaC4aM5NpWxIX43Kde387tfarHmHuq7jbELjQBYgIejhlB7HhsVKmHTYtlw6HYh+LU+FU//0hxcxEWKgMsE96D/rRnE5Y/5rahpe3Eg79zEhdxhBodPp+nCKSLQxGWBAs0oDoM21x9lYsTBMvkKvEYbHG2TcibFVEL1rXJ2wwOG0Vpjg/U+uD5LK+iZVi9rEqTNPNDKKkYHkILMXltcs/74q2oVOV80f440r5F2o+VU/V0NDrsWxtQASwZ3DMBVGgy8ddTQAgGDymbbnBJTX7hDABXnfBDMz0wATwkvLJ5FbUXh/Tg9qeCjkCT9obhuhApoo47fzyurCO6KKhxcB0O2y5YFX4/hA4vkFZvPSl/ZQytufYWswTNOcU0l3yotww7MRBxRVMxoE7sR9Hr0tSHOfHzR+y5ITV3G44r4j8qzSTwy1S+KnYyfCozzB0Jju3Ab0I4N3NMVk2cgE2KQjLgQZw9YDNTm1hcqMc+zGHOgWa2O6ND9blY9WsBPRHS73OKQvivcNSMFJGdkEcDLmmdH5V1Nnvp2p6uBAZfOE+22fqFg8kAwEw1ea8cc/NsOFaj9V/WvfXn1Lf7RuIxJU3otBp15zZZSBCHuzeyagSSiirHajC/qvBwhm5FrUkKBlDrfFfN7bPOQ9moBlf087DsIZxVxW/XYl0RFylqfuu5HvOxo7Rxbb6Ft60mdsngtfC99hgT+PLTtBeT+STfug5Mjve1Su8F66qTDgVRsViT+PC5KjobnfQ9/iy6mUVrtJYf/tRRtbOMgjhndS65IoQGMjzvF1QsvQYCYbMo5FBMAxlxKypFS2+tLTXc+rArALJnb9P5658hjfB+gJfooax61v610cmD0Y+B4ogWGxhPzFqxm4yKSnJOwL8GILK95rHrSRDytoGqLQ==', + 'fcGsryG59EKf5aDgMGXIphZyBeQjhK91U14bDSr0hZ2QtXd+NpNTa4zQq+zEUBOK19fYOGNHSxZsU19G0DGvWBS8G7SEpoAMhpSOa2c/kWpETN1Aj3zZM6381sDhjzgow5X1qgSGGYZPkmdKj5CUvX6Ma+HKlriEh+M7S2MA4CRHvqreuaEir5ztGus+FPojpPeTK0VRyt/eqoQHWMsvChmo/jhu/WRpHiZfgRT+6WH52szHjJmH9WVV/z+bNyDwAjF66WChOtuHCFh0ncZ3ZrlWHkjSM5sRzivSJuI7EC2JU8ExsJkDJtePjzE46wO7O3DSSzspObM+qTbmfpbZ4dbeXBIiWgQ48sgMVmrzJ4/xToTpehLMvWN8qE6Zs4b7kzKBeOV2EsJtfnPPvprvc49x0IWZ4q7HqlNS8zK6ksasKdXdh9ASahVO42FrIfKea5mhHDiul52afRJbSok8J1NJReO2SMFBcUvtmJNCS7MwEenBZz7+h2wB7w2VaV45HOSCzwonJUxnuk+P09cNZeVw9aWPZPPZIabdTL0QuaK6OMZhMOq4e4zdKBWl6XbNCDCNnUps2u9KKmQEOxjJyTeAGPNUfO+fskRuWz5MQwi/7B3WWwLt5KnUjEg0XEjrCIHP3CUzXmRRavO6R91/2M9ZlHohdmNXiL/AjvR+7hV+QhsB+NFE9yU8cEAKVinT9YafkTIY1d20CKGB8qZ4eOuoR1Muifjbp6mJ4x3sCS82pqY0kKK9l/ZyYx26igklG+Ah0UY9kUnaUJ5wHxF1biQugftbH/6g3HA4VwJKmVjjxWzif4kgzJEb0qHwlQocr4pIyD/wbTFWhu+TI9ddR+NnM3ONkcsKoi9DnP+/9n0CeqJ/oPZ5bwoCiLsZLq7DbJ6m1LosOdL8HHRgDi1K8HVvvzbXuaL9rzDwqrQBN5cibemzByWlSV0SwqGvmDv090E=' + ], + [ + '5cpi+hLock5Ku01w63Qg2q46lewTid87tCOQfgN/Q68=', + 'nRE/0u+DDmBI4b0lPq0KE7+icSFu7QZq', + 'wT0nKrH3BFppCMgmOfY9YXiterONiO9J1zJmS70PiohCJDcLgXx6mEp6z/83S47OwUwjm3MvPnPPkLxDh0UDIsSKRFOMQ1y50vcosYYnzA24EoV2hEROF9pHHHPrUDfXZ4jfh9WU3TrKNuWLvYQ8Qrnse48EK3aQqA+l2tn5l3VK3ncXKHie4o0DSuja/t+v1E8p/v4/jE+o0SDv/wDdzbD2fs9FSq8sxIw+bRQ2h/baKM7maCNsG5ywFsUrvsCcovEUsLedJDwo90iyrPsw/tEe7hayICp6YaHHtMzJfmnpexBND7Ib8aT8cJafuV48BBrZ2SVeGJDmkOQ/CfZfzrA25Gx4FSFZo75w96RLH3bmPIoCWPdmXmLRBejKtBduDjv+ZUf6fr9i3oeNZTq27Qbonpdn+D89yQZv+inBxfpMOP69ytXH3JZQelY1fXgi3dj/mVbz1XlU8sHKql+Hzftgz5DqPP/sCYJuSM3ybOF2aQNwxLLr5UATvib94q4U5XYAO8Da26EblPa/yN3x4A60xJPV7HcERYpv9wKnY5mpGvkaUHb4YpyyB8jSS/4sR2RYuIgjF/7NcLHDWJVeayOXhnaJgjPQhpDgYoky7iDw+hkZiH+kXz6DpNHO60e3Bm00I7LBP2WYzIqHtgYEaRWXXho9IDl/7ZUS3aFi6kWNv4BYhf+DFoPzXMgeoNuB0a8lYbngjmOgi5JzoPt4qAsFNTPoXyvCUu5WHTP6+PEdDrQIaTEiLFAgsqqHGFe/j2ONNc8qUVslO1IfoRv/uWwHZXiyJ8w2/w492fuwhbAsBJLoR8gdWvLs8c1FzH0tTWhnXL7e/sy5khpfe+IwsCrvRe1nwLHallChKhnwYi0J8+2M5WOsQvRewAr/QEXZg6OGaCmbtWQlXxm6/QeVgujoT5zrBXDVPUmWgtcixY88IM8=', + 'P1IdMqXnfcEOuib1MyI9QML6K5zjtrmcSS2pCNaaj0NPCXS7my9TXW1JLASv8/IRSX1JeaTIj9kCZWcovzt6jZbIPigYWBXPtH+eau0O2r9A7Iwteddtp+0q8V/+2/8LHisb7jE3stZ6MvQ+X8YX9jb3zZrOX+xp3KLSnxvui+k1FW0xh0GheyQbHrbZRoZ+U/2V06xwuSm9qoTvj9d2k6XitBfoI+lwnA/YyZs3Or0kvKwQ8ocpjPFHJVCD0+lJmkcWf73KYsqY0kMF5NdauwV3oD+4gOMnchaa6ZphY7YIl4CCYo+m7GrPDQOw8GuOvSZ7Y/Hqc+NOwZxGDr83lWl/ORkrKclOM+tSc+QjP5Uqhj3yoBlH1KLK+Pb3BZP5U9XFbQkY3aQp47HnnE+VhqM+SCT3DzjTdMl+Y+QHjHq5Ek39ckunTP519bMFj9VFaj2Oqf4Eci9PMJp8SwfqtRrUu97Feh9hnFrKHL7eAkRWvGRM05bf0Har6/efYdK35+vy8OSxZuh4IXUVyXrG/xOHN+a3peDT6bfcq+aMnkcg7q0Cy0W2JAOMJcbyFsQx5yEq55dk4YpsOavKFH7WqPkYjXrj4wsCMvg4jwb0e93DuS9ULn5EmX3RYOZIanfqLNIRkt+zMY4Gx+5XEu4jw2NMkT2dzTrY3XvYu2OsR0x/2sbQyW5tGtLl/m+teHKlOmUX6h7PEE/vpH4aG5HhsZWN4dvIHYLDNjPXw/HlcF2zfEhihdOOb+8SVhdq2CmXgdfe72wwyI5fZbm6QZQ6Vg4/FLx0axdHzTCEhloxrBUv20IhmWz/YqoOO50FfHTRs279qzOoImH0xCmGy3G3cCTqcutdWAPg85oiRlCHojy8qskw01sb1LY9oiEep+cyHjW6bvoTT0dZ2nmRESVQ0gQWov51OiscMp6cryCOtDekpz8OqXBskAI+tMHy4AZHhN5v' + ], + [ + 'LfGVw9i8CAx+U7PcqryMeWDKh9UaBRxV2OiNEgwGMzg=', + 'v/cF3exheydGPtfS2Qe53BaqYZJRXFA3', + 'tG2ztJRy+Oiw8YeM52x0p7mWX1Jpp9wtLLJyFC8I4kTjvF8AX6kekEk1LL/nPG+HzQR7ltJ58H+aWa48DMAhiYExuBLLBs1W09aryu9V+vYhA96Q3SiIUuQA1XfQlkACr4mQ+b6PMAcVrnb3WuBFYEjO4AfuQsCXgTgnTRjULSYZbvwQfPccjDw1yE4SpDMLoAkaCUi7MHUCbBmeKqR+DppUyRjs/cYBhtay6f2qc/CdrcDr5GSP0CIwBgV9cFoQt3k4c5vo9oI3rpPZoiAs9VaWKzLNaVPo8dpmS7prGEFSnUePUQ6cr9TfJ03MgWZ3vN6OQR36Nzw4S0zxkM9QMRwNI4u+EhNaVl40m6pkwMEaMeSaJ5XbnJ7Ujsdkp5/tKWafN/pKWGULAGziqv84meMYmYTcHOYH7Qlv3rfNYBqu8ILMq69XyKfwsedCzOmEnPdSp+gmIcE3lHSBzfIA3jJ6IwmCeqcZKn289SjCdX6DIlfYzX6i/lAm7//4UOmDmMrLyIinq0dUwPeJme+jKNHeI18SA/VU2I9nTMd9PKD0bovnWZU6B4l17o+DiXivfASxWcq3o3Gdjwo3ZClxw3MzkxFVfC4F6QG23UzUrlK2puqHwX4HPrKAtOCyvgAnHoNjx6cSSUGbClFtgj7v6hCHJZCw2r34VsEuOAc1dl4COlgVd99j6aV48xQKN/wWc8rZSVDrX0KHa9bKnlxWzvo7Om8xANW7yo1+UQpfYlVshx/IqckWRyrMBNcCGKbw9dTkCeF9s7NfkH2lTbb0NnnqO5l0P+n1qp1KtlfP88ACSpFiyqRFyYtxixMKL23AJSOMCijmDsvodcz28h+1myOWfDSLbdMbd2wF5UeUOQZ1zHZW1gBEWUcDiGEOVfSZTnLii4cYJ0XJmsR4wKU4NsC80D+Z23KW/bjWSPMqufIOX/9D', + 'XldsRIDHIxaeay/Axn6IlGW2j880XhY37yWFqfaGo4Fo2b852Cpe8dfv9BH1IguIBm5WqjvpDwX4nO7UsA3R4osfnbhSjZuL09arBXv0HW8CcxjK01JjqonK46uCDNsVivV9JZA/i5LKgCUE6y/Bp7qf08HoyhqKJa1iyp4i+w0s1VMOgcbAl1OQmv/peh/BBTxKQ5uLVrAIzJN0a6MkbiDt4b+YhM5nx6vcHZ4VNYPd2f7yjFg5nGS0AWwNRDZw1iNV/eXQG3nVHSW29GdBv6jNvWlNPLOJ/oQ+CvZXu8SfX17GnNfZFQxlFR0dn/lYbObvLsjgNwoyyQWj6JW60qjGFgNQX6F7n6tuoYR3J2MGJkEBKS2Li6iexzXGw4Zt2t2Y+t3L1SrxsceujHGbRM/3uKyMZ7+8VSW4cWPJOH887AzgZfYk3yJe2vQazJKqEonY6lY9etGlfH5m+7w+3Er/+f0TRaRFO7WXRVB3Wmfea7u8B0QZObDQsKqswSn7/Zh6XtTB95PF1a5WRtFumtHV7lAQlDc4AU77nvjRzWfoDShQ5go5yxGp6sockAkfkTsHqutU0HftNbT1MDn/2eL9R1WNt/uxAlJDYP5ThRL3y3R3jr2fX3sUZb0lCLaPgrhexzvSuOO5F3wWgslNxGP6gJWYKB/TMzXXcWNOM6LY0D59LsUtZEtacIXEwCFVlsjQ9DnT6ZnB39Ha/BxWRXlD9FvvD72wH+dhL74GhTwkO94I0CQMrkaWjVa7O4qPcuo/lVrVhwq3YTeKTFwmkBkxtPfYdet4sbzyFBrKWf6vBov//E6gaE3C54ZvHUWDL0GYoJvhvuUij5/zV6FrD7R+ToiZgWRlMm6+rvfKo2Rj7CMHe0uu0gUfrjVbkhTq9rW841Kh6J969Y540TaI6EXHgz10QO6a+rPLzOMz5kZcpwGyEqkXo2ksgZDGTtkBWVSPag==' + ], + [ + 'pbxSqmSCqqebkTvckjLLiFia5JJ4vR8Ymj8pcxp4TQ4=', + 'UGkqjjSmXuOZlO7X4jxCgQx5c6gCjAhs', + 'XsT+CH/K72JHeGF5jGaNRr5squNAJ6Pem1d/bI5ZxfSG9i4EbkhStdZ4CzuI7Fn3ZGmCOrSmSro/IBwvQntvdzUmAG7lS7wkoLmKFv35ZT04pJ6n+IwNHlKSDqp6kj1xXgd2uE3yLr3r7zoDaUNme0s6r7AblBfQIzkqN8FSiObeR7B1EbZXgfIhJnilc/kbDajVNxt42nbx0xNhCBPDXMliWtAb4Wypxt0eH+kntNeF8bOFDPC8AygCSxYA3fyXem3C6QBzp+cIVLmMGz10iPDEVdVsPYoyvpbuepEHVrcVMJbCyL0t+6uCt4t2EcTG3YsLQbYj1+EgwJtvRMYLhBgvGrWPA8yMw5UWfjxLn8qn8L6lsJTpFJV+BxKRBK8V6sHTPFNy1AyeAUCGWt6RKPk9ua0hC6NuHQZv51bDNDkCo/xwW0BLVroOES4RrUHFbmqn7azbppUTEKeuXhVBJbVukGb3adNqY3U3rU3n9qAUp9EmoFo1ElxSfqduv/jFgn5aQajVDSFWZSee0AIN68e9rCeCB5zWZ+BTSUxNrt7LaSKo8uY45lN8lKc3b+zjcyeeRffnrfvJjOwOSav+/I1JPGbXfYfoSqAq3SkNlgkNDiTVXR6nnWuO5jUtMj4ffj15iM/6rbLFt5ywIIJII4mXQLWqydK0/ZI0Rc6Y/Ke9CUZKTKIO4Rb8EEAoIIhIFAuKcLFI+sgw+/cGRJF24rnhfh5xgWOwlkQXCkSjb6MS/PuMVItQNiZwsWEkGdHAFZWKFfk8y/chFDDqHvV8VwlB5XJtNO/90h9MhTnOyTxz4mUhBG+cdYe5gVkPo0Z2ALlB2fKy65idAacYxq9Ipmsyu02DADYnUhgJHo0QFc8hv1ibu5Nk2LlgM5Q3EnP3Skj1ziqZqpjwL5+QKqdyx1oL79xdEgIm7lNVqcVkvAHpib8djg==', + 'TcUYcAUuBhIFKaoEN1Qj+GeFdP7ml5Qr/L4L9l6oy5PKNM2SwFY5A5fovIOh/zNbBR/TA3ITVnyb5j+DsR4MI9B71H1hqusXYq3x7Ymmwp6pjPzCLKfLKLWrqGElrospVGVTnjohL0ie+0A2wiC2dBLqgj5ngRQt62BKYHK2uPHlSAr/Km3/5LFoRXKDZ7lyhtmH5ieJtek34jkvPcPDJe2JXVCcMPh1vH6Rg0ovRM+sBSji8qoG4RLgGh/UfBiL8Ey/skSlnkNDvMCKRfszwnxHJdwViAxYg+QWmvKqGzfIUW9c2vq5bdUILlhBakgh1bLMxUX7moi8sRa2mqhQtdCyO6tnNQqVbZDhTARFrN7AC56yRGSa9JpHv3uxLev77xJN7V5AiHsWxvH0vhM2AVjut5pN4/UomViHe2H/RFVkyHSUmZI+HAYRPcgDvofBPtV8fH1v3atKsAMEW58oDHMYyQuTE11BKU9K0UEmA/9WVay5jWRjZH+CPU0LRtPKwwxK7UjU8nIGXCOH4rPk5npXWHZ9gfg7a84zbfNfxq0e0Bnz0HBKvUUW6JJI1Le5pjKzAmwkC3O5+siwijVeeaGGjye6AOBHDvfRPOCuf9MwfImB1PnRb4AsLIg8VHeKFPluUjC2cw2JYlbq03xrl81rK32C0alhwnlxWA4wKbtXEqWvzAt2NTMe68HBb/bruhktB2kI/CygCDCnT4vZDTUjN+mG5NPNj7t5snvF+m0WIZHm0rkZgswaUVr8GlgbzjnAZbDI51CuQKy4GXS70Vqsqg/tqX5upvW/QQhrY+n6wnAemMvwX2sKBLtnh2XpklSzI/sj/CPI7kVcctsNzEsNX3Nre4anlX2T7VI1U5Sfg0i1KF1ktoVrLAbpYNCndUslqyzv+hfkmtOwZGZOwFnWRmfd7TJUQr8v3UPlnf/1loyCnxx/n5nU1wP7I9KQ3Fbjuzs=' + ], + [ + 'akfB+zDwoNbxgJrWJVPUzs14w8tRnECPri0a/KoEWwA=', + 'CkiN6AWmXm87AglMadGVIskcVaojtfoE', + 'uzNS9XPR6CPVtftCenNilMEeT9WpwtbqJ8/IisceO88XlQI3k9w1KoPr7LJ+5NqkL1JFJJvHTGfHeOYGxwJUXqH0AqFJYMHpzoMQNPRchOsq+tmkRgteLM4HCkM4PDs/uwFWICATzgD+8Ft4DRbuNtmEo98Vy/F+pH3e2X34rEPY4GFOz6VqNW9WDgXfpu8qIokVNJqzIDG7YkUOumGWk3FKOap4oj2SUmPS7i6EqlCnQkzhQmV93K/S2MjFCnPCxFmlvhBTt3EV8L7hO9hNXg5+cZXsjtdQSgjbxbz+tvPyhcRmCwsWINnMof4KC4cydGcrB1i2G8wMALNHve0/PfPUk7J3B7en9TyVy0LSZcm32V3EVv1mGVEG8yRDg5z88sPjVQwc2NBB/KipQrQOPUdbj/3hCqBY0wc9/kcaeJkYRNBQ5KxwrlAATx//eT3OWlS92+WpT8uIYQxzKTLrqh7TjcBWZcjgg9AnTpWiky2Znmh0R7Xyp/yJB23JsoCQGxXxPUSCyqu8Su690hqwNcaTCvejeS2OpvuMXFaCbJ6lU2Ng7o4Rs9OfdZT6Mcp4AbvSflqQHtOjequ5wM0EG6bnsKo8kKjwaKhC2UkQ+BySai7syZiBo6B36yzcET/50bgeX1SLP6RySLJrTSKeLv8klHOam3yH2m39jjbtOgAO0H8TTCdQWN9LqAVjisMcabc9ac5P8306qSNmPqdh9D7bzS3bs8Edm30Voqw47XZYuXVlCRB+T/JcRruEKD9b2I+1vcc831gVgrVavjhrHos4Vi3p2eK8Rkz/a18gS8MvkYAIsQR8yDX4BfAapI9hn+1dDyZryqurzrVwB38RJy8h/mOGy4bTRORGJvWeCFiaDqcPkT8Wk8Sre0zp2hzRvnFpuk1G2s55m7MiV1aldx3+v1ksBw1Buth46hEgVYpPHlmp84E=', + 'upfiAA/Th6JFxSmga0wtGYx009Dcaep9CntrWkM6syl+/7lq3tZQ15SdjWYLBddhddrNqkxFoJAKHDvdvJOiWphpQaWc4TBNnkBh1YtVl0++gV0Q/Uc8qQfNPdiqmyv++qeRsI4O7Erp3Nju0Jt3PyjHqizoPOE4DdQHLR3AG5NK2GG882kcHLzZIiaLK/+F+329DSZSqtGdFoMY9AGHF24F8V3CapB78oynBbafzJJpOF8U7nKr+j84cDpe8gEoc9fTrfUML3+abFhdJe+8V0j0H7Qs3ViN/r2bQIFGQ4SPIY68hONFI66T3IGH+htKAHKduj4ZbFq9Vzr/lXS6o0kVx+WjJvUy5xpg3b5IEWciPADEkyBKkt23CWB/whzcMyy/BrNuKNecePO6bYaXqKU3xLuXNAFY9v4C9JA159uCdrikJafxgnXZIDWGd4x79ZPMFT2Q9PJV2BImu69eJOz+INrpdaxq7D5YTsiryPZeqdmDA6ScjtsqMqr0oysL5DTkv2gpqJppC6j2b7WiOBZQzF2KMKKrhImGEzGx91I0l0bJIm2YQa98uM+opBsDf8qkqok0RhE/oJqGulQwrk+FqnqB09YPZSHmPV1ZeFT0w8+u71Z8GggmABa4UdJPTwX/Fp7hrdfROQNris4G0xt6Em5z4KmkuH6mVyOWjS47OtwESGOaZ+8a0H1hpOSoZ1l33it8IprRUIJFpRF6vMXsgLUEH3GjDl2lmF/AxQYW8xYHd1kIuUoEtoDl+ttnI2ffk9YQwJB87zs231CHmJOf4vgOzND95RVKiEa08U974T0xH4A2cudpVhM4jungBlOH+vUuULdaMBWs0nOodkArvNuRVQkac3vNdrV7cUI6Y46swWsWk6u7iKmEj7u+Uujqm+ACVWANfGSLLbZWKBMJ9dpi3LvyEDJ39Q/nDZy6Q5/GQ6cbZc5lgjrhZpyV0dThf8wD' + ], + [ + 'rbudNW5+c3jFfGfHEgSLmgt1W7ag2vWrr31+/w0rsM0=', + '0LwWGR9Rk33CoS2hyf2PDnnVioxXRxoP', + 'U3osEkkjE40/UczXmdDYTYjqunkhbofjJ+lD9rc6ZROJzt2E9ZrDajk167i+4vzuh8WKmg7FB7rHKgDHmhJAxVor70c5lHxmxM9tADhClkzg1uNw+RiwzE3oLFtCSfBG1vMPS2p1UebYku3sklWfRF3UmIa0AXjucjRW4kpBmFIzGSugtqXgcYsfc1BVCgk0qlG8HZM1brOC+6NBxvX92ZUmnPP41u8uUD6RWGa7DyyPTKZ21PpV389m81gQyCgtEUjFXaRHm33AorMTek4ESfRdUdnPjFYC3sIFSjLxRYW+ugaET1+KlLeGkWCqQcfSbbV/pk9Ob9Sc0GVSQXoCILTWdz6JizyufywZJgWOOsBBTm6D9GJeajT8x6y+AOOz3iRQx+oLOIAiWvty0PIWYWIkQv4pfiQ/BsuNOYNPmtY++G3AKYH+jk2xp4Z4LV+eImw2ijJvY4WeX+KsexLOo6Ltm3rj36REc2v8WAsiZXoW6MtN7J87lIl/f2M0yRT5gnQTDKVV7aBXfhOBL757kR3otVFuoADwTZeFKFS/wr4Ju2/dz+L3o9fx7x0H+Y8hzQFildXnky7bz/RO0dY39Gw4w/x2V5dIu6JKidoL7foe9BH7StRlVWdMae86SB/ce6p2nQEWr7tuQ/Y6LBsQT9Xut/GCGJf1a0ZMAvr8MrEIKDHTfAF5VwDiMHsJYNWAePlQVpK7VBvLY+r0OtWIM1xBy0Ffcp7bNudrsRocEbnr2Sc6lqHcV743tbrUfFIWr5vAXetYsdVWEXrpkrlCuz5O5aGPKyBOzUCqRzTSWUqq7u35jyZtISZIqrn/q7jbiVBnGCFAoG6to9jGtIS+HTLZRQyoFRjjW/Zze5tR0WDurvozJCovfDGBIQ4mZswVYUmaE/ikg/3wz6kFv2siDU6UaFo3IdMfS+ovpJsuHRZsS8CJO/2U', + 'FA7ynlVn8/IZV00x2MoyNco84utpHGZHRre94EIZusPfhSnHbYr14gMVGSxc1/qYQG58evJQA8FPR+HF2R1WBMUmDEc8zIAw+GoU7sPR19eZqC5ZXmVm8vUTpOrjNKBxhqK/f1Tk9bYgd1FuGCu+nhjPFj3PAFIXW8UY4GJDzVUxSkneTr0h683M86O/7Db05SI+Fb2HPv9lyDm9adAdSZsYPabkT0T8+9o+wmAT7XlLKEojw0Fm/tOTdATcZGppFGvaC1vDAYL6aP0I31efJveCn8oJo9cV6M4whPVHDT+4zNPdUkYz5+ohnqPoHZLGpB0lGAayccKRLRHqsLkOFd0ETffr/b6uOVuMMcw/qfOoXSelzl3pHq9ixuZwLMtW1ww/pUSjUGpYqHWkMDcqecFoA0moyBu9hz6cxR796KRmKCqG/2IIoF4X+RyPIdIhec/a+8YFpYCF79dfbA1N4V8MEhYF1SWTbu5OUt9x48SC4o7ETxcmRAtGSbOpJQwmi2VYFLEDqiqJAJFeFG2KTURdsSbn6i5L+waVda/M/PVjbX8nn+wObSodiKLtgQPAoHmzkCSQV0xL9TpPjrPkTdG+zGKhZV0RCLfj2+kPjPYrEx9v3av7QAxgXycgdokBnWyz5Nb2ryAJAxbbjBFmE3BqJSU2wLH1Iw02VQI30YhsCENn7elrnxfa4qGrUWQKs8HMEBSelmwWgvMY9+230dYvefZpCphBWm/UzHNijpXxy8R6Mu0ZNgJPy1FYPxnUtQ14jZM7CnGANNO71gpLX70GIA3dl3E9GJ1YefMlq5V2zXS4re9QjaO3FW+SoCz5KLM3+88vF/q9CEolX3EVBsgPp2SkmR3a+PEoph90mneXeoVEe9/MednLuYEpHzN+7TsP0uL2WFrOUjXUE5XtRjGyyAojyN/7sSSlU4ZolVX0Fx5B7BQccBivvd7qr1qsyn9OtsY5rg==' + ], + [ + 'eLMGfaFoM4hFqgNCFOFIi7TriiRP42ZWt6ndD7E+QQA=', + 'Wv86qliRlwW1ROeOL44v20XVAVIQSK1Q', + '7KS9TGuXP3HJsaseufokZn0P+3/APSWMYjktCuADf8yzqPA8MdcbhBCme50UzeyG5K7a7NsCFoOXQBQ6vzrIzrharhCO22XmMtKcca38yv9TJYLquIM6mY+AnLaNkivRrFaslOQ6xbzg9a3rypWpp85nEUAIOk6aPBPPHuSJoHi4t05h6nY1VCdsPH/vgsiByLRItUjyU+l2N0CohYI8iTlXrsLseHHu/kQEOlI9OLPtrMhsBwSOAPn4WlsOKvouFh1Z4ZEA7YEVSAwWjCZXunqcFo1zjKVdlvXjNgigujp2TOdKT2pM5X6gN3Fug3DcXyZisa2wBY5mWcDdFxFwNcjrnf+j3bSC8YPE82Ft3VTbDjC4AWOqzvtIDcENLabJaqJxnrGKiE6w4G0Go+jn0ezCXYjECqzfb9lH6x3ykVe4wKrhUYKpbcsvWQrYjafDVRQ6fCtcddYQdNpBJzW4bjLvzPuq03HEKhj2DZm0SgrIDGyNW3seoFC1ousFI9VbVam28W01+cUFdeLpWTzTjPMax/5YTYk+6UPaRHfwsk2fua/v+Ow9jlqTUM2733Y0/fx4rSitV3C5LsPsUjVrgoouEU9XnnxionRvjhZ5Fzb0U7pSqKkf80Xcm9gH2LO5ESPptr/pXsDuROgklfZVYY8JVSSMwyF9BXD7Eo0EK5CQgXSqOSayPXkiWxDr7TCKzxlwIq3rI+accEuPi2i83TJgospyUH8RZFLwObVi5MmSALw01w+trMzwPnge0dr9FCLMlWALMBlViyWmX8cxHs1gfkvcZu7KMLjqq0U5oaskiB3UbyJX0yKbXnj5YEy7MzhddftsMNRtl4z5HuKE9s9HQsIbPz0vAQ3nDdpAw7SwEaIpRH7Ut7bsIAS3UObGz51bC8Jf9bibgpc5Bjx8i9lzPz7vSLBFbFNIeB9Tph4yJOzymCuKEg==', + 'PkaypHwPKfZXvOM6JJDtwvUD4RcxWgPi8TnfCWZVUqQlZeyztbq++exyqx5WjgJc/r2/coNsFzbNDPHtczKPizq/4A+FeTIec8M4rapo5AsG3uHv+1+1DOVBGgg04cafzXEpQlBN+iBupljvvu/bHe3ppba2+TJ/jfTWGX78EcAiXLx6s586dffkvCaoCbtm5RgzQDvuNF8gv+fY0PA5O9CmJOH+Tl3TGD1RMTWy/VkGsgb8Q+tO2CjfaPHl+bZ0/68w8JiDHYpzmJKmMWX3uuvcVIsQ+qODb2uc1yNtQiz3f7MAdpGXzB97j1zjzY/n8UhMhv1hZwscAk2rmksbR3zenYbv3eLFx/+x9k8OLL/69ZA9He0cFF+DcFXvqNoIDX5RjAJfaoZCfODxqMlXX4tuw2MFcYpRgYcPwg7qnynYihQz8ukbUCByHpJJdgmj5PUk4z177wsY+hlRjjpBNAFpR8Z2p7YVkRdo57/dr86/djnzmlwW/BRKbHsFTrK3kMlDGHCzqmLdMz6j0D8vJp/oyEKdQFGum68uRrun56N85HEIKARrmmHZccWUV9EOz90fSsjbCQ1KCFu7PoKY23oaFHa5bAG5e/Qlf2KDHwMn1j62AZyoMc6ydupeN5G34vMJubXMM/GvGHq2+/ikRJCh37dyFNPVG6AwYTirnkZYzDwsLjw4+Ey1DPQjiYzfyLTspz/cMe+q8GL6+8in9teiElm7lee3JslCKCq8/TINdphleI6ninaRep5uYv7etBIdFudrcXuU+Lyaiqdj5UuXnQOlB2RsDP1nMW2xPAmusaOfkvjgOT2MU81WlcH8jbkTagPLumLHwgQGcy6iOvnL11/SgksvKokZh/Ppyx+y4JIToOjQnd+CpgT4aSNrVvXS8ofCcmMpbm0WsVM7poCfDShUm2W/IalwR5yjOOLHww/zj09gBjA8xXPqqLiUXnyGZIlduqI=' + ], + [ + 'mR/0vCQ2drMtEzSImSPj13YMVSOHmqzXw3qcNARlM7g=', + 'ynPO7T2PJ8WSR/B3qm1qVkqIfkn7IRVr', + 'N144R4bE+Hz3o6RRlZQcMZ1+YfQlZ/9dJumZirJ7Y8Ds+bG0CZ/wVDwKIdKbNtoZOLczvfsZ9xWEfeJneLkb1iUl5/6T1/OdT+JpCAZ+4GRAO3MrGe5Ty6baxEylOthPU7w9kie8ul+bmKH4EFh8YCM1X1s5YwwrdnWc+lpjemJGSWhkCB45HiH20NhaWOHFrg+WyfqsUqeT2s35ygdejCjNw42OtY7hRCH2mlYMUk2JCvcrDU8PFAWU8uijukRUioTb+lW8uztjpq9SE9FBWoMPvkUIVa0ItjyAL6Iphyjfz1SwsqnU6bK3ZtZoXwTs/zAzNaes+Lq6Ddo9sFVvc/8y3fibPGxiGpESF+pJo87dQJZwgL3g6DC64qmWdQthwP99faFipYyzeiQJpA14JuqqhBl+0+c0AKaACZe39gUFZayQLjxSeMTy6Yyi3bOGTnMkzd6Yi5KhFxoV22Sx1fXTokifrrhRdB0lJkoeNlXznfmSJOnMiL/RwJvXatISAeue4cQCElakLo0yZkCsLu1Bd8jBzZ1mIGiXmLcw3HovcFZ7N90FgQ9bTwUzXR2MHW9rV76WRx2U2cZVwzO6y2UJ18HUdb0o1BVYdXOsfFzd61MF1PlfmpTpdoDfP0hpCXRgYPbBV+LHJempD/WZImCK8g75QATPhLNiYO64Ip64iVaEprhuprJKNWp370mHZYyhWKrDZhC/KTzBXkdWj7Do59npfE6zVj1hwm08xtlCflG5XO4Lg6qrVo8iljK3V6JgXci6Xh1Z+k9TbkVZfl71y3aB5MCBQq6pLU9LQbDBJrHkvut5oaGNeR18dIp19KnyImiCf9CQBQYQSw/R0J0hz+LSY3mFd0dWRC+dUO/sXww3KCS0tdpFmg2hv3zQUOuFapMk/b6C18niwyna9dKffzdU5M+YMNtq+7MgnICW37EWA9pzE28=', + '/dEwXXEgpgA3WKGJM2uSrsH7zBdev7eTl0LXGA3r2IcQQeSK4LvTR4ydNsy8vWe/nrLl0OGcdXRF02X4D/5pFn1z76JKCmjrQUr2twaP2SGKWl/CLVo18BNRbDfovwp+v1+J9Alk53qF6hMnQRrao+GWykvLeU0EiNYg/eeTDDftDhIg5I4FPFwBBSUTKB36jYJ2LXMi4VSE7e2ZIcEMrsfGt6zM6cRMGjG4gZtsD0ctOrKCILtgL7Lv55Sg3f4gMOzWVA0zw06Zjdbv3I1YJFNdx8GomOEg0aK+qXDcag23IjYM6tkNP/w6YIlcrifv0XtOHyLCfEJxZOXbpNRCL43qXRhCW/fUEWuMJ3BXAC0QSwb4+iX0taGFo5lffnczJJ8EOPE+YFgeeHwFzD/3XYpotWYTUeDv7iYM3US22Ly3UBKEOrjetSJnUNMlyy3inNBY71Y5pySv8vqZ4X9pP+Nr9LqR9/5LvOBL4WsArRq2Sevz7YX65gxei2udm5cC7HIXpITjrAzhx+7oiBZYmjJTa+sfM0A5rlr2U2o7x140JcTsdyKpYldxp7IK37Hw/w42ByS/wkrMVukQBTJ2UYwnWABW+mV/guZaOo5Au1DSorzxqfAEppZQKxb2FFiejKuwXsB5dR5MeIBitY2oQhANKEBheweFlOlUI2vXIfxvcNs5D8hd8cdYRVhh4RnGTWTatO44izBtD8EAYlpDQmutezXjUtCDmUJYV+O3kuEIzSznuPbbyfZKNdfUxiKJXusOTd8Fw6339wdxI0Wb6mSCu+RtSy/PXK9d0Hgtd/pYto73eOzSUqgoOVpe85XALffgryuvpfstMWUzDI6wqAHM/h57GrbNbMYNjGHVvSrBkvvey9a0LymfZe0lCXTLLUurc/BSZHBlkKMPRrH3ZsUUw2Oh23EiPBPaAqWVNYUPtU783981u87b5rf+tcIBi/ADLSx0EMbI' + ], + [ + 'ajuXz3mu1AiHuYM4YGLR4dcJrznsJ8Ut3hnhHfauB28=', + 'cQUjSSbVQnzd4DjUb36nmqRmRIGX7qDb', + '8pHLWzoSOBElx9bEuHkxnI1fqUYn6RCsndpSU6UPn0ZEUl0rb1JENcEhf+Jcm/gOPeD97owA3izfWUeGdM1Np2HTwCMf+MkTch70ghaSR95N6dY/TQ8T9Fo52FhB4oTGx3/K5HMT97+SmMJzhXtKNZJzd1Zj6V5vF1znyKOirs4JNFaeAxGbHcu58SsH570dShAWuvYZeHa9nIrwsnpzGawtNw2vZM/JCFH4yUYXnSi7PJCGt9PjchCkuUJM1hxZmQP8ZzBKYsf9S95cr5t2PDLmcUSFk76VUKcUoc7HSk7iyUaFBTPWJ3VZUIrqqAg8V9kyWOZuDkGa7I/Z32QMQWIGflI/pCCNqxYclibHxzJ4QVlY2Awk+faqw2GTrYhdKD7UA7VoFUITng6XYmxHX6bHFrp+Ym+rZPqvxlPFi34VWqizFUU0dgI647hAsFI5xVO67sSRHKZ0ZQbJK1bYE1KqynUiKgvv9ihw/1/jKRad+iPG1TsFnDf/EtuvxVhplLpSCb2BAtS4Vezmu55JIz9c8CoXufkCvE2PatLYatt5oGh1WI/wYNNDTzh0WFC1E0yl0XTTgrq3r8dLB1pg5izkx0l02AyVCx5Pmk+HcK+2/TcEqCNcHnbLsl9vPzpQVJ8b92e8PYbosn9PU2iWZPJL1VJ9Sx4qrOETZGYe6H7SKTbH2sVUXPYzNAfMhdphUAPnxPqUjUH1ThP33wH54BpJS7defPE4/28KtLfb13PJ+x7eOJfz0OpGVGB1Nbqarzch4kZQ18s1RwwtcuyzfuHWKjvMkXTm6gCm8ZO3XqyrabEXuyfSPql6pfV9Wf4AQAg99OuU8LQrK+EsiaWbCPFqYxLTO8CGJLxqrF0WfIeM969NPeY2amkPycye6AYvLd/uspnIzNnt9hlOq0Qj/U0nOtQNyaCs26eiBrSgaTAYL0Sj/MKAZys8', + 'N44nDja7Iu3Am6iAg4sYodayUGlyl0r1xuVRE5xLgAU/DlXcnfmrfoyn3sh7TqqWGA/UxBDdYNV5r4P/CYqZfXiA/21l/att4/M7WjNyi/vvzvoazIlhOeVZ8L0TOwmcHLfEmOm1qfSBF7GFQOzpNXloTh+rOUUs2Cyrjf/eIg4zGcHYBSkvyv30AgDgBDWms7dMGyCGPsVZeBXKK1KUm+XEcSYXL8uKBNsYP8vZnn5aYFxr+YkeJfgFgDWSS+3rh/shvmrtarLu4r5dYkFCuuCfSTgm1TFFKMri9OgDXWmXf1QsyoZAFT+V44axaRsR/8DdaPiGchGM0R+GhHRF+yIaWBrzyQ+Q7hcg7WrMQrQRiqtvqAne4N06ZePy+Z1Br18i1ou1CXVt9C4m+CBjaiIJd1SamZYFKOKmFi2moWSTKHJrhInGD9y4kvG9tutooMfnMa0SqooSjtswKCfcIkoyo1gh37TkTFL1s1sARC1SaiBwmsKGQb5JjtYh/NENG+4SINttE1H6YUlbmz0HoiOB9jK7SdsgVpAqiYTj9RyBEU5EYWXJ4Yp2NDmJ8x37jeAUOKe4tQCGX2jTZp2uLqksY790rDYJvrlU1PNqrN28IST4jqWBR3F7n2IT4tn5/ZnTLKJJ5o836chALymA4VHhP5/J9U1jE2vdb644KPCSX1qTQTNmWZ/MMOmWjEy6D2gEti9ylvsSD1NwM5kujqBgdgX0y1hLyC2HoiwoXcCjsxJtn8K0GfRMbgoSYWYes+oXm03K92yXY8AEacTxHqc40K2xJEdDQoQGZUc5feYwcdxsFzxTdnQttnrmRQKHoaKGv9az55CoMhtISMkFDFlCU5dEmnd137CuJIfjjw1/3rMDqd3rKzVxHJnH2g3OpCi+wQfCBjakxmKozUR2wsvwRDDjDibg2+MFzZ31RPVWnO21quC+cAmmCgtGqPh0a+t+QTbwcyp3Mg==' + ], + [ + 'Z8tPdFr2XgHfvyPI+KLCqbfwayfFfv9RYdJCcPnJt0I=', + 'xBIvB3xewDOKLwllYiT/sjL6SlXoHFiP', + 'v0Kwnu9mxdCQ4iwqGAdPsHxagiO9EGNeuS5YSsa1OI8UMY9KRXb2zd5jkG+qfMRFIrJgi01yLAgTrR33/NG6v+pvWByOGIK9URfgkPPDNuBKv58EMpO8fZ5YJWU3nw5xkNmR8VzN7Yw6M0wmNUFkpmf6hhlf2kggSo07/fOeDt9hX/RBoCzYrIduRoza9qC7Ob/Gr0CTTqQMt9ZdZUyw8tRaxql4wfUAEyvlRU69qTa9hpsqFCNt4fv2kWUswBtHQCvgw4kp5/IBeaNjM6QeB7N7yTMPUkwBdMTm0e2WGxSrWa6Bv+nEeQ88s5R5rsLF6+8yuhJoRb5qh8bJhEKzhUR7AaFxQflgg+XikrVE2F5ddiIgRaAKojYOOYiIa1f3L95T6cl5osgSGhw+SVF+Ws8OZveRAduC0fp/qijMixJhGG/wCZcswTUgA9kv2CClWO3eYrQJOc43Mk03sCMJmSUl25RV2dkYCD/+He0jipFS9/aWYBGVZowwXoUK9F9O92urcbloXn/yG0VWFZ1NDy6v1mq5yHMjFZ6fNz1IuhjHZ616EnocnNNpEJfotuFxtT3of0xNw67V/zT+xdCPsiXciZkyU/BmWnKQ6SmGlMWwMd5Ug2qZEQWcnBONCbkgMhh08F13EesSsy+LFtqS87px+las184G3xJf+3H3hFUoK382W2+i/FZ8JLDsdV9iG40JnIVo2hPbOs5TrADqAopNJCp0iiqcFEFieLrMWznu04yPQw3peQgqSw6Qf84ohEGZGCqtIfwNhSTzNwEHO2jb5/6gmWEgYcjQg9kOhBDzZ83NcrRSjTHz8qP4vWyke0oL6F35oh9rl+wyF+bQrAbSTGAjjyGSMKJ0Nai38O0tbUZXhgvDuPmABbixjAL9d7f1s4mNn/lPCe22YOXsZmcdbP/MChwsr78yxPBRNrEfJYDWRJbdhbOgnw==', + 'jENnf5Z/vM0Z/TwUeikjxJW77wES3mLu0mW2/MP70HxLWFeGsOpCpc0dSXCkmw0ZQ1OWb29Cq2d0xZhE9MOgeMe2ykmsCvVum4v2NV7WpAN411I6fdQ9Bj36+KO/sKgbIV8habFBZdqb8pqKsvX+53yKL40aiELpfEGxOju7yjIsUYykHGFxhxi6IHKxRCLw6QBzDtRnz2CAs+66sWKns5qLbG91yIedvswFE4lAC/2nxiyXjJxIEuvuHk8tFoaUJBUZnovbqEy1f+Z2U20quB6ceQD3WdauPiYZnV4QRWKyUG8jhO5wHuwE7IdwvKvwjvNavztaMosMAAt7rJDvbwY2cKDcI9z2wJZm1yE4qWxPziTJH0hDgkvDlFV9AzsqAhB2SFYNRLRTqxyQmRjhUVFTiyZsYw6UWZwWh2yLTMmy9nTXf+7NwNMM+vSoMGIVqz2Zf9kaOxMUaC8XHNnXF6N+b5O/Vl41u7gaOcW3sjRRHJ6WakMcW2HAh7Ecsh5YRcMsFNc32zyFVKZKwNVhD7a33fwQJIdhwNB8Sy+KEX85O5Cx/h+jM8/Gn/A80gQz0k4BfuiB75Zm7EFd56D+Ob4ogtP5VoY6IpYm6SUYtLGNEdCOWeLSzx/tFrrbnZI//EL0FiLzvUhI/J/WNNsHOUN5RNKUbnFCdkYD+fnsstVdhxisIIrOnZDWF+12prvjrHqjVrZkV4OejJWm3oa6GEMnRQ743IO9zbvbAwNIZKQUI5WVkQtnxRox/A14Ud8PO2zA3Io9BZEuLyfSX/2kBEIWIzd97wKxkf4xQELaAHqF1mr6rifmxpljmy3cqRtXWH+F8N94QpgpXE90+Ev4VSglcW0FFXwNTb3TANY7sRUEw3f4LSMyCIJS77YgKjp6izoZpoQrVzziuWCo6nHf0jXTLPYmckYtfjeX0+2Z12bOAaSO8T2iAdiFNExwJiKclN8pPE3pHsBRkRU=' + ], + [ + '0gU9C1EklUh/sfLIgerz8MtXs9Yq/BZ8qdUMRsSpqsg=', + '0Mx4z9NDARkh/ksUZfoNj2OHhoFxhk8C', + 'B8/uwyHcuqEdS0D7IX9lZhFGeZa4vanxm4ICpvEXTdxCo9cVWVOgUJtLRWpJdHdBc8aVfO3DoeHcXudycbUJ2MuTUZoj5FFBOA9pjPpnYHYT/jpRB7Q1LoO+u8iBdR0HDCQ1okAkUYTzjCL1Rgj7ppdejs71t2hHO70QtONNmdFRe0dGFt1/A4kzk4UQ2Lqp8wCuKSziH+EEdlc0Ov6G/098TH7bZsg/HEs8RuJYa+XtGKcsp+vKHWYoVYdjX/pMQrWwsDsDOnPXJjfjnjG/oqMHEcQMHmKt1DmIs+3kXxoZUjBRVeKc6HyT13AYzDXkeqGcsW/9HOc+i9Z93BlZZpR7dQm0+81nEnL1AOhPo+u83L5pvIu8Qz1cJRx77oQMJlkMEl0NVZE8dCVq3VspOLrtPD/lH9uneZrSRZj4VsFDkbZu+0qowA++wccG597swpMWDVh11UuxVERQe0eyl5BCx0UbEhHT30p/Vh+N1qtXEWVZuedEcR3GcGg2rcoZlMJbPGiyj+hlFVA4ukcECO9crgc8H5HJd1g9XPI3MOdPdwednZUS9isZNzOaXhhf4ytnNRIv/8ZXcwWGSAnlx/qr+oC9C2jvWZXtHQYAXaHGm9DazD1Kj7ibfXqquTrcMC0VXDFWp1RzKYm8bQeGlScBZ6bsvgQsSVzrn6zLoJRmLcCg/md9w0sLLonS8k2zhO7YnKCQmy1VBlIR4Hh7HpWJdlkIkO3CSurvM88O5IIobO6Fd8E8zxODsz3Vn92/SMFNgAT6GGi23xTEBihZsWj9ZUNxNHoiSPX6hUDGdE3GsxTl1CqMhHf6Y719JiuZiUgm9aYrYpHI1pmqboKEMXNP+o15azAyke/UuJv5W7I6r/BBf8wJRAlNUkidxXqNKjDDTl1tc7NqIi8UlRQ7COZjb1j/qO/E2mfgV3VVnw+hZhkTYYE8OG3Z+KI=', + '7j6xzTlGqjnXSN3yF+Dto8HMbxXMgfHwuX1H/NYXq+x1Qm9Qed5+DYCgB1MDkQtUbMeRc6lsil+KAiRYWkKxpag6s3RTfXm0Y4sEKPGQR2AzGw6CGB2kXNzIYK3dV1FYsLtikubbS/LkOsMMuv1NvYO91733wILuKHKfd1gwwvTMrVn8593MW0CJtg5BQixJElKuxAKZDIRzOA/cS3HXOFNvurHDs1I6m2IKQJ6g1RJKtwe8aUP1LyQ404y4ycNcChaGqhelbTSmJN6jqeoWleOt6VbYDgpzqbwn//zT73cgR6cTpgxcLX0DWrRSlJE4SjlNgK5LEVCpVfZLckGtkAegwGCgmdilHEjg3GUjwI9bwKyJ1syFXwymNwLRmooWN+KOaKqZ41yA1rFKWyHk8XcsQSYx4VAUZWtff9VTEzhGKHzSDUj1Q2SjQIZKSpnAIr/JIi/1OyrUZLsNGL7FJtf0SLCZ0kblXcVIsu1Xx/VyAuANKB9sF+q2/eOcQXk3qJQKqC9OBvCjxfh08OthtOjLHpNuV6G0jsijpXdeGMx3JdhfGSK6ww1MWYJz4rPLCWRqAIYpeWQJjKg0DuBY24V/wZDbX20mPjL93lRSV5hyKC1AHLlP7OZProS63WM5fe3Igf/J7Tj68RFOeLvgzsxOs1oNGSfZ3ohENR61OBK0iqQ67POP3t63jLrkFy/I8IqQLZDdGmB0FBxN1gXDG72LqKeNnYVZzcgs+4+f7tL0MbvOI0CvM+RxED7rkBpg3UVXzLWwHc/oETgU2F3ZStHrU6bG3atCVhWeIV8/XO5eW/fnDzodOsnvmELNyvdiH5GSwjjGeZmtwNqCVn2nhs2Uf5Tlvu5FPa0C9bpVEbzGcrAsuVWNEKYTt9GbUSXP92lHIBTOaejyYppFNWMA1dtJlG2OLa3xSaoTyP5KkP53Ck998XOVUQuNLx2rMHfaK9Qgn3AATEjzNEjx' + ], + [ + 'Zvs/fxtCSbHZVI2dZU5s0DJJMh3n4QXz1Tfc41d1x5c=', + '720ZMY9psouiPVkHfKvT0IhnCUO5tQrG', + 'ROQHhP7m9KcJCgLRDX5Xngkt7YCDE8JjpfPgjOchStDa9Kjofgr3PHDCxtPJSbVBOY7Nl5+P0EPtwD1A4UWjr/Rj81gGlEl7/AhrjykCQB2K51nlrm439wyVYAiFdaAYvoPqZufZfQTBLAmUGVaNy38soP4MuQgjw4uxYdDnh4msm3IzXd1vcQKo330/+G+MSLHIrkwUSmeieqjJpW6znZZJDDB9Ej0zfwm5PqLTDO1RJJrV2cCmNUdHfZZJG2NHCu2RDGmeT/U4lxH9WX1P7s0ZAS6jydf97IBpNM94bJOdeN7o6hZr+QgeRXAo0sQ7hJlDDZGswcsQJ9qOkZU2zlOHpZIBd4Rj6A/uPtx/0yjvmxddVC0xVR1NxiSKddOdqSSQdxoQgcFQRzDWCUoysxNlwZB3qxPrrGiw1hycKw4fxT4NKmcudd/gGTla+j/nY+OP/0zrmq02iK9Y2xytIqqd938+l0MYd4SI3NlzTZT0McIimwtt6PGTE+tVuKz8GNwtomLisxC3hgcZ+Vr6T3S28JPbtsRW/V2jMz2oMDSygsBuwWpg/pgS03n9i00NkmXV3A3YfaQscHblfhuUPcsaiWGAciBkXQqoBzpe7uooi0VzPaH+Bas3LBkGuvKCPAkS8whKO1CjIbM9n4H6KFAPwGm1HqjjynyTxrCaytXSFWgbIb74jPSv+qXuK1+k586WN1t+Pukik5v/ntew8aNiuXZGX9lZO7tdJwFRRcdNiNRi5NEmy5gdt83afA3ienOvK/JBPNUJ78JSHBwHTu4qZ/n1a7XXxKVAXeHzvHEBM/3yALZcImlNM2D7jaTpfFJ5wM9pG0rPuaB3JWghqOGoDldeMe/ZiixS0F7C17IPblSKVmaqsW7khpdwKbV5hzCX/x8TsXDOQ4b+1n9bgXYQwqsBptLR4v1K8g7gOb1AFg4cbdDaV9wL69uN', + 'DGw60QxQyPNyqcoK0BoY1YRX6SGZm+utLxHAjTipCKhV/HIin+1+azmnw7iaEOooya/cHVyjy6NAgD/kWIMiFqGW9CayLxqHrZZmpbVbH6oUq34EiYFWvizKMJdvYLsAZel7hMiEwbnXujIZzwoKDcfF8tD3ZRl07WjlYKbP+QMtc8PpxgcPLKWwC/iTMSus8Wr5Rwcs+wwX4EPjtpq1YyqTB3exySrlb05e4Rj+1ZO0v1FcWbYpK1OZtmxac/VMNLWuLMyjL0z0tnCbF6cUPr7yJPvCL+yHv1/4zLLJcYNvhXGcCDOL7N43FKqOvLjykc5yL0nx2Uop4XYMlIqhJYoa80qO5kNnw7naxXvbASB2CwtZ254baFWwdjnBqid/oPGJO7/SBA6uNFolqlTMfs8b3qZE8Cd3oAnS7xykZY+vCEfgyyyo3Jqs8ESOl2JciJKurLwWq++cnW2bWmle8AEU8QXhUx7U5PYSyZlUW56gToc5V2QjgacocBat/AQZYLiBatm1fbsQ3uHhIe5+6WON23BlX4FYubiPEjnqX+NYZPODAB2QJ4Rx0S6EN1LHv5Ec3a4yTRuXZafKUR9tQ5zOH1QUkcfWeCZ/NvOmsE9dfFZlpmNNTIaIcsBkG3H1R1AszH/jwemF6Mbxea4NcAkipZIcd6gEltWjA/3JMAwZLo09ARYW5vWGAG+mPDWOFJznvZKcBmRcJ2xFVLsOBBKfJUBEQgsEH2jsw3snDm9krNlnfR/V7eqokx/Of3Bt0N1z5JWN/XMJUF0aOOsZZNRHhWB2LJJOc0Rii+DvZ96u5ThYL98Zwl689w2KQ2jJQat/u/dQ23pytAnT9H28FpI+l71YrCDemfuSjwUVgpaWw15gUlypccnpZM+dlo2i8ypKmY9ETW8E7girEmN4Mzs1XC2ruqqRFox/6iMJ2QpGJVf6CCIG5jfiYnLof9QCdVywqDxJHR2TM5tAKA==' + ], + [ + 'fSCaM7TVpSseMTbNlxdt0eFpZvK3TcgnShhnPUhLw9s=', + 'pyi06uh4pqD4/wPnka70CpLvcJEYLIa7', + 'inXsm6wZBSZGL1vpeQClr143xuUK+U7D2gA0Vs5rgaGoqiWA83MIaq3H7OwKOga0nl3NL85MSKPcddcGplhyldQKlpvhQLM27p02fEgwQaWHyoKptwSK+i9YudXZ3EUz4CbTiMozohYD9fuSYOJkjDrg2tBMjfmtW+nxWHhtc1kkP8YPhQCYJi8ModHR4b0pdUC+o4Nwlnb2hSjeLFEvZBkMgD+s7NjqGT3LZil4gUZbf4mnFHiM3rnBdTzKRWtxvyzx+Fiv15yjaDUI2JuQi405xOP4nDSr6JWAxNGnCHjUOAjRadKsFMh0k8wMGbkrPapQWzRy6zPP29wXaei5edVdW53dFKYIDjwNgyUB8wgIpfhGkRgm5U7MESCdytup3koEkenCYKwUm9zZluITu2xMctHJcPoXp0mjv7aFJWjkmRkS5XsnIZe5LdPcXIJvr+jnfZe2cb/6txBnFNFlNXATjIr8Rape/NVOMmTE/uF/YV2CMnVSCVZrFxGVjhEcKneHMIJiy4jjVeM9C3pJFYipweCjK1SO1i7nv6CbBzpw/D4EIQfmZlP0n05gpVQaGzpfhlVNaXq9dhUqA59OH85GlbRYL3GRIJueT4EuO4qG6jcGA/YbfGubhWcZiTPwXgGlY3qUiz3XuBn/whQhRPyAOYa38BNHkgxsJ+TuViiXb0FdZZ3IIghEy+DMihvFI18zkuZqnzcDOtQaXGuBpvvh7P29lGZaKr8iE3esvjV/MN1UTVpm+SLCnrzxvigMED8zVFKld23NdM5DZDfCJMLxl8S73RjZZy1SNGwHSE8/yg2tBT1wRX/BeOCDTvH+ygzFn+BoMqnCCwsf80dppQLLtM7CE5FHdpHjWabjEbfKgT7DyKIjRNo1Q+ITlYJ/exCeffP0AFchJeNs4HfZdg3gMCAC/DEyf5PNk9Ky0vZRSp4XenzDKEp4PdFIyg==', + 'F4n/FLv9NSO4B1d1dKHkJ2m4I/ME1beDnX952THT+Jg7KF7jrqPpiXZP2rIn02f0eoXTgCt0QMaEXFM6S7bS/Qs1HnCGZcLyui/OtJ9HdKdJ3rprW2rU1ZMPZK+7zgkxfnrlzz8jpg0J/bKn77OX+5ubvJgIAi5xaqur+EGIyWYm01okGEk1u6E/IQN1TDXc5rGZO061KIo9QGxCXlOG5QxsUkUgfswhj1BknKZ4w5zbNiYP2YsHT1mBAJswhjFQArmk/QTyCZCfyfYg/XmRd6gx3FsyIJCZ/ggixOfB2Qr4zMlw1PalBQkIvUOsargirGHcTmDUo/0gMqNBdOSu1gH9amVFAdjJ8SdLHxE2z/t1xYOz2t/58HLn3klBKqXqdrmsNOkHB9yeCFXdQGZS+Nyn6D+JE521Iy4nvpGL1921uydI3uAWIRboLXP6zlm45YwKnLe2nWl5+wTHNvLmWHAwZyiQCorXyHL+nnPGbTuGD7CC9eNDmTIYuwDmwQ3/VlHg2nuielkcVEDXswt26dCgT3qN3Akhg2GDSJZeTJztDfzvinkGcw7iEEyfPuKex+OxICRfJJaOxxBxPqhUyyAUIkgPLs3K3OnzgF0+lp+gs0TUdHLrS0F1tfKsuc+ZjgZEJmuHwjalOI/yzz8ynpZ9RAnw/OsgJrO8cIV3wHIVr/ANyotF09ILzW8VAa3hRqHZ6m3Zdpd9+1Eqh50BFJA00OtYxhO5PxT9emsvPH6NhcxSy2JdFma6IAfgI9mVTJiC6vn4NVvO9ZFatU6JAJwsuG5V+iGouYBDVNk71AJAk6qvdG9ihlgzNHP9lZ7xnYGuz46v3t2J6dzsYTNK4SW7lSrroHAG3fkmbIHRrRb3OIWckK9bu+e/up/QHQmanpN7zlo+4pqmGwUJyu9HaNLNqVXaqJXgQlv4owjonXWsBtERQx+WU7TInYhoHyJVBVyIKhFZA40/UQ2iA7Y=' + ], + [ + 'rcbASDI/ToDyv9m5m71Lch0A0rxsLAZaEp+0MTBmHek=', + 'CPQVeQk0eZ4jUm5u7lwebkNj631nvaeV', + 'h8Gwmgc87AmFAplI4rwtfP4Wf0991OvY7CeQIf+LzxjzD8bcOCPbLPhsdgc0gmY6jCxX6YQ5v7VfTiRjzzSCPKmrfTmLf/a4k2ZpL50t/OMn/2Reb0749Ke2aP6Wd5xMvt3SNzH36uQ5qiJlZ46I1lXJAiXq6snPk+93heL+qTkO4wuRY/560PkMTt32aM/V4Vr4X0rydsF42JMQQPdLGSsDyaQHyhF3dvvCHCXu2kkMJ3lZ6rvrBwFIKAcpUqQYocEYynLo2FX9K1kwwHQVOGud6PQlWrtQat1I58XJZsQfI25GfZQ/A9ESUBSBsRzdULsKZ9d3OloTRZeO7tGvkJNJ7iZXRdKWEq9d8hMfdNBgd4zilMPd/v2LD3URgEypxjEr4H542R/U5nO8+sr7alcLnBda0qf/K/HY4D8l4ui49GiwcfP+gIWYBCTnYkMgSW0rsiAv7l2P3H8JksU84invRJz7zk8/J4o3c0g+XkwH5J/gXzcasi4TonEa6pNcYurtLYu72Kwuoox9WT86IahoUoNpwGzkPZhzQu1PADcqjgfKrKG1oPBp/zrJ0QPa7Z3b+yeTkf24m/VRiTTTjGZfXXhIz6wFdQP/wKeP4rNSfY0xl+BGXII6eZvLHu7lHjatK/HoflHt3CGyPxUFJgyLhLIKVnmQ+Xlu6kdF+lD9kgXZqVbKe/v3MKDG9+edi1boGxJO9M4Wh+05yK8hMgDK0HA9ePx50iC23TcOTYd6LhcmoaBX9WbqebnACX7Zc/jL40vD+/nKjaGnqhNUG+OGF53s2PvgyEQoPfXk53O3RmPDkdCZyZF1bQoLVugZ1ESxVkqLQxFlRj0SwsiiTSc6iX9SSojxwureA1Q0CGXYPFbg/nn8fzlbZQzmHgXoChQjmRpexFgnZGY0JaZpAFt9LwwWaIAi3Qjwr//2FsuIBI+tGnAv3ADuax/7yik=', + '1zzgpEpglbEUgwIKSOHHaALetFq/5z1la01tWyr1hEkVim/oHlasGMWmYO7Y+7g55gCnbNCt9QYvQOd4T2Ux7gLWKS5erd0ZvjU8KK+YEsdw7VdV1xJXJDdWi3eoV8uuaq1v2sJiTCMlwSCn75y2JQgOf3hZWttYdtpmwrshxeyyhUk/B1I9vzhbejUYtGK5ME6Qt9Ce/kPvO2lW4PC4aej8J1Gv+uOIzyOhv1FFx/LApdx5zfXtKb5IVAaPk4EAj6eXm5kdIidgo7+nOFG8v1/K0kRprIuHaGITQijKER9AM8oMTo3xw+K85fHijQApJ1Tgz4c5rjNDi+pd5KNFmap9hJtTTaWIkdCUZnk0A456xN0al9kOvC+X8HxydTOCkcILB+tPcZJDAterW8op+wfSDuGjJNqF9bhQOSPKfxt3c0CQ5N6CNZluKayBlNxhiUe3bLKUCwwMZNrMtkZvL0lJqIO+7usE5rqdmCrTwiY6UkSKoJdnwiq7vTmxvshdmSS5+R9nS0beVFxlAY4Uyr2gxlCn4D8rJACf+gKIpeQJYusWl2tLfTfC8TyoTNnvdeRRIFLUXHTEOgMu2Xvei5Y4S8z7hYKuznqg0pPa1iiJf22YxmTffl1PVOr1H46GiyJ1x7Y0va4vRhutP0fWYnjKzohJY4xV1WPRQf1RP79P2LF15U7agYpKx7TJzGtVM0S1KiF98Jk48lOrrbM50jJ42DAyA4FR/oQKxuGUv8gSDhUQeQ7sgdGYaGrCRB77K6IOY/Zj2+5hbWdfqQ7mdBIzYRXBjzMM9YG0I0zmSJD1AYqGgFC4MfU+fJiuvzS7dqiPWCw9q/Lyw4hw+kjusOnI/8+83mYuoQmohajXdLtWVENuQjv5xlBA2bGbZAzt22QFezRluT34r6WhvqlF6pX6PvdmEurOYT4KdpuJvF6iAPsMLbqeXYmollLLdfE8pbi/qKxn+3g834GXxAr6' + ], + [ + 'U2ne3nrSMKMxKzg+ijTJJWnpmjrhUtEjTNwinrraBEc=', + 'Q5vJpnkLSl/UPiM7cut+6PLfWn4csG4q', + 'tGQX+FXKZD/tjywJjE0fbZ1XL3/2qLhL0A48HpWCUntTJ30jqGc5HIkagh4la2z02VRLB5iiwK4AvA8++qyiJeNhxL5pB2JC5kJWt6KdxZjuWCp+6o1ZsqK0CcnUuAZ97xIdZyML2S194HmEtgPice9RIk4jPLzDE2vaR9AiD5x9sunJvwoIYgGYbPTEchLqCLu7ux3JUOrzewv49t4mlQIIxerOa4YvIcuI3CAVkzVQSQUb+VMB31HCudNrdMDbG+QzvtYGfaDW84e4W+zyodon/njugduR4BdnnLRvMxg0qiIrvruBGHdeQJs3qjvNIhI1Pb+1GK+SwjZglZ1D9aRrf4bKvi9KwiTUUvznS0AZlBGYbnvFnEuE3pjnHfsUX8QWKTc5nbr2708hkTSgQXHVjFvJ5g2UCCHspkhXf0aNeb1N6zViJnqTlpdoktM3zq4CCuTOyIqJOQK1JlK2dlzW3vhaeXzml/Zqag5j8PCXScDjLXRYKCEXKUFbTaPaC30Qv2DmIDo9JqlGEHQKaHJ2kaW6zoqy6YsdRod+AclY7q7XI/jZDDShVywoosvukMh49fOVHM82bVtKWwnLQwDlXF2K3wZpB6c6KEx7TbYXKewARXLNVANOXUnr2nw1m1SKAVrPAVOC2mFKv/l/j8cgY4qaUNyYdVSQrX7fx3sdz2JoDFG5SKq6G/3IkjJmk5FoO2gveCcsFAffTLcxwGK/wGl1INrgsrwIFn9tVD4d207qX/1qpV786u5RQk7/q0lNH0bdbbxYu/4kAJ6vX9wxVr0qFFl4SBcdzvqWQfX+1K8micoQAva8VzYx5EiVKOag6/fFgkRT4xX2529NMtRWa6I7x+6RxsyRluDUR4JE+bdW4ZQFFnbHRURj/NMl4gWqbZ1/PolspY32oAWojCqJwONeYiMpv9OCaMjKnhbXkVWST71LzqktAW1bFglj', + 'EtDxP9Nw7Xjl1fNCxsdXjf7DKT9v3Osbfkyc2jH1UhUIMw5v+nbVJduF6HPA+BdQ+WrKEn55VsGt/X8ymoOtnoDP0Bf7XYTCap+clPGyPpNfuCzfN+1yTMMq96tmBtHoo8kfrylQWqjXmhhWjOauIycPG3uX0XDfn+FPp2MV7OJuYVDgstqjqSysXpzdKEnm2WQVlldqLiKFnSj0ZfodYc4b+IHgKuohz3EtfB1mW/9B1AVBU1CpG+M89d36x2VLp36m+FEs/vDmhoA6HiaoEcN4Tb1ZB55deUQwt0HeJoIt8ZsyQMIGembDsewsRc3z0Xlqa9E/kZhJAVnKSNylcbiASyXIPX7irwNEIn54gJwgHxQLYpGzpcS8qEBoJA4unxZVDX1cuwNDDsjsEdvu7wh+ymRfu++4MGW15aWgsm8hR53OdokHFGrwo7a+gqOSBY8iH/FpB/2Hp/raDMDSyxdQN92nIAwIlYoz4MFkUxgGofMqPQdFs1T4foQadcHP4QjCBkG62IeGetW7qWPdBCvAOoekHBTwKBBXGVHV3ae0T+qRLwcpWmjazen+r6mwrE+9YhAq2rOpiQOXtii188vYbItkuTgY9EzyXv/GXccfVArcHKoAvRTU+g4ZPhVTA0rrdyUJk15frI5U1NH/I/+PnISHPEYslX+fnCbVAkmsq2MEYB3Cr28hRKoJjU7Zd7/VL7HuLCc8VdGYet1S8j+9PmZKNfMqYc0VhQQeTgthqi3iI4dFL2XS6sv9tw0HlxkhPFdUDxLVx/8mSCrpw108O73jCB9x8rvdMHu5AJxdgoIK56+J8ltjaoFgTfOaKc0YEUhTcM09tSghGQOrjd4ily1CBEUAA1vreCee2QmOaKlG3n3M9jJqaGGueyZMALSBTFByYZqvdYecre7gwOjiNeXZBix/wIuO67kOnduz6w5yaHvp7LEOd2Sl/AUn4Bdfl1gNUFMV1FGBgqINCQ==' + ], + [ + 'V6rYO09c4s0U4woSKAGu5gzRq15VusDVNgpnjKurfVE=', + 'fV716OSyebnPsVLLNPi5Ys4sCjd48Is9', + 'rov+K8nL60OU7GtGJ7CIUNSwVWt5JhsB5ISvfpyzSzEQqU6zgwd8o+KRCF6aH+KZHnaStwh8NmVR5cyl36EXdTFCjwqpW6mP0TQN6EnxxtWY5j7tAHM8iSOA4LzDAI02mKmfqNYh7PyqcsdTYYj7/0+dDOCV/CTVFolAHNg0kS/FQfDmAQYp4qD14riRED12pr++lktVVdGQTudb3Od9gv/vxE05incLOkq58DDR2xVrwRorlp+c6m0BMC3PBJoQcBK2Y8TMOsK64rZBQRiNMNWDFzYA4JLrY/49RyyG0a+cV3e3tKLT2HMqykROmHhqUroSaDbDAqv+4vJmsU3RotCbv0FDcrFKHKmyYAjFH0jJXsIpdZEhkeY5Xhm15oa6yNF1qaCLmzPr99wfKscBQSvn1neR83J8RGqNv5Zok8OQ6cfnnApA8eDS/1401+31hf7kIu9cQsVA0HH3by/dfM8FlkMPLcmX4xtzgNq493zxOLNuk1AngFj5EGriwl5FNPToppirTqyoVVPjrXCfsI6fZw7u4FRz8el2LX6nrEsPZGpnwrjtwiKTB7GxXjgAwNMmaWurOOWU0oCFLH0CDkyCQzGuMj+tXnzEjgeLVGBaF1j8d3p7/noIDqOMtCtm5XBhCY94tKu0/sfzF+Q4Io5jh0S2ZqCMyolH2cIiNT9bT/aRKzAZCe8JgbHw0fMO88nEMCO3tSJ0YYMB+F37vxz6bS/7Q9xephV8sHA3yvmZS0Z2purXVfj51sIzAgHi773P2JsGgqlnOfObo6kdoIE2dXnu4xEZTugXs3wfMiTy6zqKJVPIS7sPxlj4ev2wkQJ5XvMMVxw8De4L1ftgvyg5koqvwF+QKK5qVIrI6zdR48jpg7aKR8bvjewyQHfInjYWdJcQeZJHCOQZTMrGYkSxaakg2H0KFc0SD+NOitjRm0uFmf2iOnjKeGj+gxRVrA==', + '4kFtNSifKlUralv0Ki+u/n6aYu2rIrDfjyxfSJrgYwI0edPBjwQOsEYfsf2lf+lmn+g6tCA3Svvs9+BA7F45qLjKbhzVWTbfAqA7wpJwxJnr2+aEuF697C3D1jAkksy543LORk9pDsr92U5a+y8AZ2KRJfA46lQ83gNRZmWkmYkYi1hzlgRb1tquX08twV5Wzri3RpjVvflakbAC6FcIOxps8PtR9c5NtcSammtmP0DMOxcYqsRgEnVODw+dxO5saDqp1BBTRy21oNOirG66dc9w812/b1kpTYIQR1zFEYTuperJaMkamhugr4JrjJjGtuCO2+2FEurEkQ88P+Bv7JJrqsdUriobrIybjiByq7t4lnBRbRZGsL8faPKIlDoPzRTQZLUfK+oZpPbhqcTwjo1LWuuoLWZROf0BypQsy6092bp+SPxkLIhCoPVe8p+KIRZD1V3Un5LqMSg+0ntEk163JGWmQGvF9SrZ98EVmcyV78vxDjpvdetlCul4yt6zTdEFZL5koiwFp2dsdwtKN2DCiH/3AtErpM5NaTZqQRS218NFgAGQCnbeiSkFgPwATqPzi/VqtaN1Ne01SVw/BcfguI8ibIHDhb6JSxo3ts4k3rD581mMCJCDzYF6hU75XY0Sd2c2phMa8K06MjVc2YKmSHnJLG38X7+8QnZ+sEREWNYQWmFVNysLkrZOnvspvXqwUK9zTiDqS8c2AUl/gtuULKBUMAZsPKXB3F3fVVs9DREBEZG8VUF4eKQaKQ3WeVULjoHoZS6oqrbauzOLnWKUP8YEOWb6pIck9/aKYXV1Jv5tkTBtXzvN7zfquEhrsn+oDZpa7p+dZrEARSBlkJ+4AfJhPzwF/bvFZExNAUtjR/iy3wG9vOUluOtwIsqj5XSXPcnVQ9rQvymPXQdSYil8+mNN4Wn3qJprq3P6dw6pjahWOK6ToVWVH9FkYXse31VsAtf6JSOVm2vsNu0ZRPA=' + ], + [ + 'qmVbcOz71uCBhC0y9iVA72uwZExKkl/Wlh4uHLM+/HY=', + 'mQswFS7EY/eLOIJSM3LOVqe+/+ghAOPR', + 'SBbmk3hZWPIo0aDxDo7ByFT8FbWipZaGXB7MYGBbXx2OAjxprIx9oTHLpJC1DkLAVhfKMEjwgU8bi/25gEmNVtuh6e1afwEdUe32QvjG+Rddsrv5/SrbVV3lRNaHzT8APQ9rZalrvlWFlJieoyyrOYPvhbIAzjRNKU+2RRRjwmR/N/wv49enTBn1shtUtCpY30slGXRAsOrBSHzSERyd1Cpr+ebM/wm09FGvHJM68a1nO6BWwUZ9GpFzrBDGEu6KO0+QOGyuxN/ajYvD8965x7S0zcjS1KL2KWmJ9+L0dCT+67InQHPt0CDYUR2UjtvTHjmiSIQW+doFYx+e4CvrDJ/WrrahbklUZMAccN2hZQ0LQ+7B4RrhkSO35/z+uc+Ohs4SAv2EC96jQRUHXOeuATmJlMpMY+ixnmBlnheC6//cTp7+/FckmIiiI66RH/b8y9GehwS89Pfnyn8qQXrETpq0/IdyVMfUacaPp8caBs9XUdAHKWVjfRG8ShMMV3OmIGxCBca7fVIBoHWeUVONqIcZWU5ZoduetDYbdqYwnAgF2fZHtFiYSZvSK5U2wB80/PKoDrtCMDHgc7pD/ELgSFHTqAljNOWfkBzJisGQSXfEZIxM1L5br+sQ+sEGU574osKIiu5oMRrQxOvtw8nGq/n3OwzWLdYw9ISbkvYsr7Ltng4uv24wCyjulutmmipgJJ8RUgqqXOmWL6F70OgB1Qxsw17RAiaZj2OkXEI553X6mUi5xzQs3bWvYTn33416glr3YYhF0wCeP79eRlFaAV34fS9usXArxSkyUvU2PYTPALDSJfZvadrjSGyCfqwdv4CUR/mL9pKXyGneBs1lnvYN0GhzWt2vbhA53vgqR4kBb6FeMfEJ44zTEbTfvlbzXQOOUksZycmNZwTeM1S8W37vfWyng9Jhfos/MhhzWcXf91p5Pr+DXB8kpXYfOCxnvLs=', + 'd4wueszt7u2dCQEmlDJctZ6s8z7+zLaBeOMU3X0F0pMijVco7V6J4gc1SCt+Ixdmbh53B3uNAlz0SC5ehM8sYHoSI+0mz/pOVbXVwi70nbS5VkYP4DEmJXsF/9YRszdy+LeDuD30JCnfnwO6NBKpUaGThCi446ulXHhZTSgZKQ4LhYwU1K4czCWjArLtvzHXcWzaMWtZT2FczaNPWh6JcqKKrNd5JwY0gPaup4wssCVrBRgw2BNKKe0s11NfKmlF3ND8WFhx9D5pOkJORxEraBPXAAvUjqc12wv72o5IBz55C5z80AiAcCtUhbdoa6kkFXc7Ys1sTZ35RVyJQ9cj9aIQpU0tsrBeNkjxHvzoz/Z1vVKMiSans3TYCE0kmLC7jjz6ZDMVKZUr2wZBtO3n4kYLKXkv+O9ZfZ6ELI/nQJWa0dtsRlZAu1QlHmWYfvZgYP75v7L+DsNMq3zk8NEQxplSeily+iy/2KJC7hKX0O5HrMI3GA+0ie/Rditxwhr7HucpKl8DiOQHJKIVZbwCpZS9e9BAJFaj4BbRJo9mkQCTs1ddC7EUZZAHnxCkGalnxSgEb+FUeGBsfBMiO6TjmqNQ4IQ0RqVDEW9hdvXFiG19N/YmrDjMzRmkPnFT45eT/YpM0/eSeRCdCl+niuQgytDP1r3JrHgrIPj+tZ4BQBXcI/e+bC75BFkbWbZu2j3TYhhEN6Z8jeL2TJtU2yQrFwnvoGwrVQnuwGHtpOx2GXpsKJZCJBW285kg9E452hlijO9JoUr3CZh3V+ntWSNggcyGNIZUpcWmRE/PIHeqp1g98IMKujbxp5/OW2Oii6e75T/czgTfx9KN+6twB1SGHnmm1FxKqEiAy1w32g0oaJZyi4D7ziYShP6fKDhadqzfepoasc4+vuwVQTOBthGcVsTAN8fIXmizqLEOvqUfxJw/VmRZWFC5HRT9iM0q52TMwG08gsJK9C2zxQBJ9QfPKNwu' + ], + [ + 'W8vkQDpjw/LkaBYPrPLF/hs8nxBOl1cARxTSfDCsyvw=', + 'JTpsQe5h4XPUEJGXeLwnOqte/wQlskNV', + 'IH6fJLJgkFL6LUloByATgE4SyANdnjB1RrLJ+bS6UzBwQICAmwUIIYSLFBZUB6vCLxsdObhAYz1cdsiiY4KJx9307depuPDOOGLfBP0e32Mmm1CaMme0zFTJ9dGV4PI7H26Gl/eoHL+Z9N7/JaTsJIs1m9rBid6gBRvDIPr/dDAJlIu3TJQPmdShw7ktkrEaN1X9q1JYvjFhcAAxWPsZBgrW5AAq2EiA7tvJl3/qQs7LBd2lKNCV9+T7kXSr5Ufp7Yl7ADAy5MMvoeFm8/pRgmNvDmuaqwGLGmrL/GibJJLagfVJfzYWaXTiGG3rWmYWf5z7QLwkt9p5lqKVwiXGZ3c2T8S08kTFqfaLeWI6Hb9gu2/pRo9OhaVivSLtCCHjJzxxWUh7ciBLUXFgkYSHzFNQOgYCuuG8VPfqPyJd70sO03ZLwsp+V2OTkRHr2LjofZEzRLjZxuhEVhOzHp8SycB0mxSvD08G7ebYLESSKdr2WcmB/xbpB+6EUpG/u+KjVr5ag1tDYMK45DopwEVOpiUXuFad6PhkBP7IT+GhbzzRDu7aAqjb65URxEC+7rz7Xo5yCjol0u9Ag9NRvF1X3mWeWthXRHjo8CPBJI08zr8LaMp7c9T9ZIH7EVNUVAmrWvpZ6Pl1vKBUc9LDT86DDQrS/Zekzy+xd+Y/0jHxhDLc+f5TygZah/hC5mXrqxLZYDnnGTOoxFQjuQWr875QNDta4PRrIYVdf+yjSqIQZ3hqA+9uwQ8YNIY1MnGsKQz51+9XiZ4ammiY6H+mYiFpMdgclJ2RTiBGYcNgFa6OH+TWbgojyQ6v/dlNK2mFQEYV08pezgDzpmU63zr7X9ow0JnLYpY0zzr2A765eunSNPa39HSALS2imCVJHDTBZuSxnMVxkpGUh7ZxKHcV4v8RFEsrU+E6gxVSyrt3a3ocblyN/sDjTQReUScouy1K4xm9l0lz', + 'sm3a0XcdWyA0o77lIXNwhvv/zi50Ed9/1DOs8v9gNGKCsQTxAF8wj4BJdmFeQ/8GoYc44noU+rf208Ym/iQxJ1sMgEAgV+4h/dEvqJqnDjoauX1SVJ5VlFvFpkOm9X72diUpeIbDHFvKsfNUu+jDmZgPPsw54sGO0zZgPjsj0n/VYkmUjS81xPC/lKhR27cvEPnScKeegpBH2uvIY923I5pdlrInHbTe4RCDpvFN30evqRY8Zy3ouurarnFGNqSjv8zdsI7rcMwPpY2geAPARzXIp5jIWlMt6Z+Wlv5cNWkteOVdwSx3TCozHPwYmkxjtsQkamYdl2ddHqDLGki5BsgP/iNOYQ+DXhSFrc7uvMnw6e/9dnca2T89Na9zQtAnpLNw5KqlZMMXyzNk63vl320uVOwgFCqGJMvCH7rPr2mHhsdPmbRCjzPO2BfGQkf1wCsIFQiPs03P3MZhxUwICpc1wygQcHVx64X1lFVHNluQWRbWBGKfFR7sw07OxX2E6HDsHJpArZNPawQ+PA6P6RA+0/blhDmCikPNRhb3wrRzL9nNb/kyupAXllz2A5pLW6MjYlNWI9IB01+jeI0kXQkmSeTcHlTneNy4MkU1PgpCd0mIKkL1FQPhNtbMs1EZiHetxIbhbNCVvukxsv3jExLjMa2HGvbQfUlu0dlH2KY5jdNw0gYRm2Twx4Z34AE7xpzQ0oE8WKcZTCYFj92SzV3PDKzv5FdgIQxrkof3LBszqkUT4IjpsyMXQXVD6yR3VhX+jjogoqaujtP9r+Nk/+dWCjCvCuS7q3dTKWnzs4SkVGVSK4115/KvRBEJassSGtFkhTTCCrLrQ4/PANVrvdf5173f3J2pFf4dDuEYYiqVdK93U3IK1aNZdWx1yEaY794O1ZlgBmNGFVpDyVmHSPVHIfRRPgZQGG0Mf6pE3Sq9PzApFJxgu17VmzAR+s4tbyLZagK6tNE+bfVF4e7IoFwbkg==' + ], + [ + 'ZDn4jMa8W7XVif7W+cE3jPahS/2oaYH/T6lNgqLT5HA=', + 'YSBPqGfq0KTD93Din8g9RPMvQ9Id5Dsq', + '355vE2KEwJ052HvDAt8dLFQ9/AYli5HaShoKPJ48vQ7OS61CLJ8nHT66gzuJie42apY1kN+gZPYCHqIlgPI4moUnjwL6Fi1wtAN2+sP++8C7Ehuc5RLbnmkSKuTWEv11pTf7oxMDsh4Mx88bnM0f51orBmTrRiO9SVdz2KILs3eJhPqMCcpb7QS720xafMvuHNCmrHTr5qb2EtN4h/9kj1gXb6UcOkd42Uh521YnuYWTfuZ0KL+c9+MIKRWNsCt9cqu5twdrHYr0WCAuQDfRmb3Zq9obtTwJcYeFpHEYBnBob4fTcYmMhxCCTaielMaf6qie2o0rKoat5px3bNhy0lBM+1H9FH+RgLdbBELTZadXXGVxSg/EEC13eHm+ZAmmRDvLPWrxDA4/BIt1JA2fpPCTUgWvn/ZzVNvKUXPyxeg4sMVRcxe/vddzxpMYSN+PnJuq09GedIgUXthSIp/7wkesAfrqV5x3iPfzQFYgC5AYFmpk6LOatsgRRppWxHdi8oYKHxTP9mjDSKkuMrXiT16c9VlFsor735uYAILg4ZkKlH4h9+/z1XDBMUpdZMkiH/Fcg1cWy795k+pr7rbVl+ONf5P7ill4PcH2TUvk98dd/LVwqNHNLIHPjF+A8YOgEuQC4tWXxstDcyNlEIWOTqx60A+/KhCxE78rdcq5zmzy3xKTd3+4zHNpgzG8uc81v82NQJOzpJU+obbI6VN8gm8nbXyzmfMWFyQMRAvZ5xNNdnbhicMfRQYvVQJ16Z3JEpKIbt+7y4islQ3QiP8tsifmUMvdYkGstpmjACZFBu4yo3ogdlhR0z9sC58J8JIP+o9udSEgvDXlcbNXjLB9c2ATlieHnDqKxGz8UyhcJv4pBxmu3namkDSNCUeuzvBWgP2o0Guy6qZD7vg2mJ450K+DMMkeA/IZlLUSfoQw6P0DY4mJHlmFczbQrCpdlZnFJp837A==', + 'IvJbyLMU2rf1F7inwtB5yeW1O//T9fCgzAUjJdgQCmvq0RsHhI10x5mH2VeILDR7YtM+ii9lWRHMnwHUl7q7DPVnhr1vqgeSH5fy1SLG2QPeUt1h7BHGXfqq0D0JFbBCqZGXW5e52ZV7Adc0mjED9BLk4+NreFfwp1yY4UeW7LfX15HSAFiXMJMgr27dZ8SGqlQKmelxAcQs8DG6YqTQjuU1KvwpL1vCOHFuvuZcENejJNp79BCDiVwxqI+9rs3uCsFC6KVqBWIquBkR6SMv3HMDKzUt3AJftpLbv8wNfDs6Ru4Kz59rWgD9AHGwj3cEERJujAedtsJuwIv0DG4I1lBxoeU14CXSVSkZOJcz7F0LRHyNH4v6lkPWOF6dEpOqoR+Wv3fax9D9J92tN053+37/z18I0zeCzhH9bO8d8yYziHg1uHmuBK2hhFxC8W/Y2U5zDpDymSDPAsHgbzAzl+YhYCfRm+KeXfGcAPhT584bB6tWiDHfEe7hhdejnntGK2cbtHr1gJiStGLKgPkFbUcShvWtiSUsy6BL4aYsTclm20+I3w43VrsdXj0/dPfiOxzYVjn+5bR3Owaq8K5q3fmmq8ysgzmy/SUHnA6sJBNI2vOZn/Zu3exn76gIuc0d4AzX1WavVm3UN1uBZtaGl7wDB+dtYZZ8X3OEE8YqNf7Z6/tiqCR5QhIBDI1JqECipVUAYW++dqBzD2baUAmjNlUJY6zHRdz+MDWx+ghN56mOciegafGab2h1ZOGisLdUHYiaYHE6xWiFiOsN6cXB9kAiy6ah1ge0EyCsc05PQWozA39RfMy+gGfzDsTduhv95ExADfaa0elkO43yYyHp8eXh53WzvVaYV0MD3x0mjovMfrHX7T2eOD4G5eM50B9CctYcmxxykq80gUW4zC64kNxTROGWbxyO2ag5Jv1mdvTI6r4KCLimd9nFwXO5wNFUc2H/U587gbhmMds1JXmcIhj9ois=' + ], + [ + 'xxrCAoqggnXpxS/hXTHjyIuwHJ+btJ5qTIsmPfWKw0A=', + 'Y9aMjYgDDG1dqhnJo9t9iwWn9rAiuECA', + '6tJNa464TLE40JEy+GQBkN65LLquK73l64kAlCjziQHocFxni3kGC9Nq5yQ9Oaps3QgdgaiYwZIejjgpTg1d1x2i+hmF4qY1gNVJwSda2OMqP0mNouItw6cw2ixWGQDoIenOMywMFm8dD6WCJ1543nlHzEYmrtr+uZIxMeYlxBVdfvOk1/bfBjYJrwOmgzt/wLRy2/6e8LUjSjpWGFSPQX2jYAEXmY3esnWAFHs2O6P8um6GosBaOW7p9HRIMjcVFvnbNjiaia/7Haz1gTaaAEGwpzAjYuzqRqgKhmteZj8YN1Lq3EZgxOodu1IxLw4YdPwybVbVWlxanLtFBvU2UVnBkp8TGB2uLB5pcycFDRlXO/R3+iDz5SPnxc8brdhsQ1yNAn7Jql0RC+MiZ6E1phTSGRCY1jacJ8cayc3FojbaUTVQ9Zfrp3qOYFjeRzV2baI4vRPIylxYAsFjr/7fBmIes5kBt9ujaq3RdIS9rR7GZpwCFEoksOA/MCrJ+xf8L20xjiC/rGqtK/NfSVdAP1X/71s8yeM4sPdPuMxvQBUIV96F+r/002grOQVlJ4Fw1uyDST7GsWuo0HBr0+JzdxNHAaZVxtLdKQl2kkscMkTh6BCIbFnm2FRItVRurzrOutRIkv19v6phjMsW7m3+lOB5Ue5CEx8inu7CF9dvQ44ZX9WJYVZ4itJHIICx01/X5sC6EzbZhHsM/0fDEZ2+07Ntlm9YdqHDN9UpXfyGRyfYbGeAU89Eyb9qNjYVkV/8/cVwarGGTXXMYOJciMHL9krKZ7g03aNdj4MhyZ+7M3MghRABU/taSRC/pa3FWb0VvxAJBQBFPCzY21xahFcWK2T5rM7OR9EWOPyhnM8h8SHT3UwHBrNuhaw8TCBlLdezeotUhpuX4jIqR1ebl/GxwuM531LTxepawO7xWmR5x0oc99RDpz8cSJa/Zn2z1UcYR38o5iY=', + 'cgxb9mWdkoOdjUFVzFPIZcjup4M2j+rnJziQHzsCWtG8HMWpSx9I5+p6sIq5/DZHyuHpCX/1mN346Okc2wihkgYlQ0d1+oel/soY4qQJtNDjga3SmIW22vw/h3R47xBGCaB1lot3RzFPGVXxpUG72Zm+0ZALJI/P/rWcaQuRn4MB57i35x5G0b1mpIkNepSNsJfYTxkHgbN078jQ9wmNidAShQcaPOm9/0W4yu4ElJBE92AaRJi6OJ454BMxaiSt57SfMTc8MK8LUmPA2/MG/svXMnp0qMlS9AJOJAsu8ll2e3EsfhfMa0/041X6YvhimFSLdcFLajAAk+VVYQj8MH5mwT2DpdvFGGOl+gwl5UIC3V1050dwbS96jl9Op7xVVX7k4zxBxAV6BxIaJ8B3j8/PvGEwq5S+tXLIU984sEAvjuGzJAbQw0zit6tjzEpFg7IOTWNol4KHPa4u9OCgrKL45Y9V2WgqNR42ckvE3LYPAgTVtsJiICvQdWypXte0qPM1aBCrheC6PSHz/zo61CNuO11eimMNzrRPduG6bjtk3b0Qb0wett5+m98e7GTrwmGonwQRFrPClBJWUmwVxss3Kk+lAsk8mraXuK80pp2KDh1O7Q3Y5Qebeg4gul05vefo9HWF8ajMjF/rHcee0TDQ99GVFCCo0TDm3aLlW51d/Nk8dD9ijmdyIRcj3qN4xvDLKmgtk3L0I9wasRgQ2Y0XLn/edEdsfx3tWYZi0YCgzNeACjsD8YlY4J7bvzIKTOklZvt91dxrIWvBw0yVHRFByLoDSz1hSIr2s8kTkmW8ey++4WmNL+wMJ1YltBdd5718FRhKhUu9YpkP6u8DQ6Ns2NdSnTCcFVHkBuAO8uR9ajPjWD9pZ0Yce/89Uz4OTX3dCkcTYdDD5kRcFemKp0+KMcbBo0bc3Ed406K5DcFHtNPaobfVPe0Qw2HMy4IQ945X3b+5I9cQ9qJSubDVYHUi+4aW' + ], + [ + 'jKVg3kj2kkLJP07KNy1XmmPHCmyGDRMWACY7ACkpYic=', + 'YMLfBLl2UAHFBC70rCoXQlxpHmYw1S6/', + 'yhEHB+DI+TOJZvdzZnKieBK6XBO6Xqrs5rkowjbR5iY8Dy4OIrp4zkD8Z3RHmh6uOtwkY77BSKZK6GvIRcCc3T8UT7fouzEbisqYnstxcH4yZu9ug10wBjmoo1egSueBCDTe/ExvjSZhWBOCOmM8VRGDrwqIsyNwdTVDjakqn1xwTXeAo+4otg9PZvA2wA7BJi06wU0l858iJ7750U6fl4CUIWyOfn+nmDX8u3YsVriElSElHoYZJDwl7fCyNEKvQslNLKucwRvkZ5Qja97C7z/uSPKHKGXHbQGuUY73vW5hbBdOqXeoF9lR3La6Wh2NUYvhAqHffCRR+Lzhv6Kg/91fP9XfXr+BCanzLnlpBU1Jci/lcGCpevISx2HGN0gLeG2wCeZGSf97jVKez3voG4oYOB5BS4Hb7Nb7ytp0tR8ARED6pSz+rTsknF7In7mOGnzl7vGchEWZ2gfBguMZxPClb+/6YflGubYLem01/ZfoF7ouI4o/I9Qa1x8OmkaznmBsTAQNRPmLlHT63IATptroITbtz9ecjBI5viHhH0zrTuuaspJK+/XqGvYZ1IH7nmP1ztdDsJhthyyQEsjU/Uf3uF33MMNry5ca1z4SPr1LikhgW8guhuTvglwkQwLKiZFAV5Fq+Tnl1HE0pULQNAG49wjl/uSF/OHwyO/MF4jwSaTuowdaro9MsOEVuGs3v9XdA3VOKtNAFir4LPfT5X3rhZh06IOOdAUqOxu6tub13QIdgEBroi191/QjaksmcfESJ5oH4pPdBHPtcqrJRuNNg5nwMMHzN+sQYZGYcinVM+XoSL/6kdowP+4g+jEzYJcX7vXcPRt5E757FB8hvBHeWnAMaL2JC55Et39l1jZOkRLRdEyQKRJFeSVNEkqrW3yDZ/EVaEF9GwSvZnur7VuPGgWvnyGK7zVX0/DsVNPN6Fyoq76TXRjxo/SfwiLYIg12hT89', + 'gxTutUDZR1H4nRaU9O8IBDoE0wm/oBjczXN521YxbV2bWjaAsQvg1wZ5VOXCvTpPnUYvo0GZP7F1TWAlsjUw2B4eVsRM4Z8pxEfOiKP6txnkpOugDLN+YnnojUvCpBqN4S0jgoCJysBQEV62spsM1MvcGy2nuMSdTEjV+QBBc91L1/P8u20wpKpQmRi625+93WNHYfKg3ly+q0uYHq24ZLQaJj+s4hsQ9tpEop5a7OOEEv2UejMxiFY3RBLhPYqyhHBS/5b4D4qO7Z240z/URtHPyu25P/FAlwPqYrcmcwPvVurOY0Qq2Ss32peaJEtb1dzZVdPz9xlVAMu6h/DLqyERG8eRS/XQcG67A71xPMsbLfJbv+X0Ijq09dxeNOjfF018sCZUxUeKfOcWZ+BU5ro+xc3U/5lArnipllYCv0oyCOJZIdeiwb8Hq2lu1O7gNaFmwwsFMOyPBbCtwSPpHPnWY/6m1r4Wi4BihdVasxTL1K1JpaLd0NN1DkwY+zPYbLQDubBxPttdZjIkkjrjBQRmrvcCBOwPvD8xvymOMYdJsE8V80Tl+05AgenkB19AwZUaGap0Okh4wzt63k6OPYeuKs0bZmBk/QCOs3AX/RgGTv1rHcqW4pb41vXQcXCgcN/L0b4KS6VYWfIbzrrCaGcf+cM5o8duleoh07dvxzVLsZ4vamlGj4gBS+af3TnvLzR4G+eppstvJjNbmtXXJ4469gpbIZZtVyu86rjVFLmTyiRFxljlt2YoET6+uqNMVIiJGKkRvb6KPRCwse2Q22uBZrByX0utHW5Mr3iTMo0+djKYsRhkUyHNDWSPv9sFHKMqM0VfITI1wR1JwEtlacLoWwsJXb0lVwXR53JEz2/53w3/NpMM1IMePUx2bHaln/X8pGYIAxMZUKq96jMPDhZGcefLdiTXra40S/JXhAWmHotROUi+jBG6finZ9BFHyuYQV/AdtTyrZl6+3eRw6heRI5ahng==' + ], + [ + 'c8520Ybb/gg3Vdd892xq4WKizC3A+FqOl91piyG6MR8=', + '5pFIATaQJ2ECD4ky4lMGSCWYsCKh+AOX', + 'Ngi6t2chvByK5WoGLb4GWIf7qFSAi/93ZdVINidGi+vrB5eAs5eJ7qZ3GQ55F7w5OQX+CBKlWLRkBXg1IGu/mEXMMtT6ZKTk3Z2yWiBafaF/0E8UYrZ24ZDd1GoqLWXuevZ/easz2PBL7NaQyM5suKGzyEPzTzZgzrQFnOqfzH91pHjx9Qs0tk/LdAeqJbfXD0Bu5MkMntI/MocxhJlYMIehi64zDzWYoKwgyaS+747BBuwxMcvx16YdfYLGbc/4zLeFN3gO4QrUL1ddJDdHQZ5E3S2+k52WAzpiK9P9BJtLZGHUD+TKsxr5o8GE20kE8i2RBPWoJcgZVxgHIT1zDz9X43wKJQ8yZWy59OgGCQAMfI7DIV5oL0OFfQAOu1jSPfucS0MuyxCr439YT8LzncjV+SLFL00Za0SFQq5NoKscWM703/jANia//kNa1WkQ0IRj6zerV3GQ1rWButU4RlEbcu6ucKqrZIfRipXzJCXdwUICZqkzWaXU+gZtmmgHI8YDT+vwlKvZfcB3VqHb8g63Q9ApKunGrRqK79Cqe6gPMnoS8VEq9KYdS8aCrwOjfBP8xL6lISxp32yGf19tTNtb2XaDglX7ElVV0Ra/kjLrprA85XtLNr32IVKflPCLhvI3Wu3lDEeTeTCp3bx5qKZ1sKIGMgn161atxeOIwHm5Vx7spmHYrD9xPDpHa/gazpGs7ygRXqz1s4ZKp11CCYi9wY+4JDnqqC+CuBCGSteFfbnpGK1+K0eQZM/40lS0W++c7mxZxSatyb51FzRIN0cuTKlhmLPTID+8HiiJ6B2ZPKl0NPULKW6OUjPUr1K2wAyyD0v3rm6oNMvzLx2yv38eChmlo8hbXqPwOc/IlYocXKkARJD/BFYQSTk/OtWYAu+wYtZ7o1Tnh6xs7CnnNZB4I55VYoq76fR0XOO1d4TVRgpaWlkpf0yCoIQd3H6S1SIlwqy5iQ==', + 'FOAYjQrA8Swu+Psy+8pp5nNsQznPF/lrRdf/RMQC2YL388DMGsVczpjY2RQi7JITw3JgO+R9APTmYhr0dZVxELbdw8/kPpTxkScsDyilMDEAffdbxlP+o9CoiJXZIpH3R1YNjQkiSUXeeLb+GQIc53/xpfef3J0HbwID65jcBrVgElXG98BIWZMdHmJ0hwd67Nc+jc5/oRbtpDDafMf358WPs4VYc6V+Ya+FyJ9KtufDdc7jYojgWD03NwqJuuAxjjBe76r7YnoMJsVoJzlhcExz6MtUOy8Brgc9w3FvHa4L5n7wsfI6SVjwrMWf8uDww5/fAO1+3jG7TpAE4KBC3g+Nf/cRXg+4HNbxvLcebbCt6GMmfgIyZ1uBRC0MZTJ6+BvBIhmuYBqy79h7OmmrQiAxlnhuiS5t0yUx7OJhvZKr06UJqXwy35Lf/1eQIs8xlNHljZiweBEkLA4lwL+kI83gXH1tHGTeD4rZs7BDHZWZHmz1Bqai1no9x6Ni9kuN/KiOmmWvt4fZQEc+ja07Z2gIEKpOip+FaFNwTD8TFMZ1flDJ/jFUchON5Las5bsIJrE75PvzPPRN//7eDgaDLzb5lx6gUd3qha7Ohr2NMLGkstA6n4h85EVj01T81zzhw0RcrnrMMAg3+vgyzS9agknFOZ4SPsAI/YMNaW9W2BsgBdVTCJx39HpLToGZQc9nq0WEy7n9e6tXu4GxaZrg7pdjzpLQO5rokLYhv0P4JczSvEHjJwkgVogUikuouRp0qVS9S8GoBwB4k+/06oCrDqnJ7CCgjWGpMlcJyGPwJ7qa4KwWHeZkFuLQe1oY4xnrwB/NOc9nu2qqW2Xl1ApqDTby8F6WDWfzkJdVUbxICIN3HldUZ9V0AbWNfuL07RUPNiS9MqzwoWOCMPqjTJNokxLzXesE9kfj1dzBIwZ3SoaiGaoa8WPetyCcGHl/xXXKhi1GguaxtpVutUCgTfmejj3uWLas+bY=' + ], + [ + 'KwVD7w0VMfUGwWPCeeP+00jFb3+DjsmKtbcSJ20i1eY=', + 'egXA/HVcNI/v+HcbNCHQQILBd4Ifl8bT', + 'rz7tdeR5eIM6nx7HfrianmWHYoIQOk5h1cr5xTpUw5wCt6HW9c+wLnKb1ie7lt6o/ywV3z6eNuqwgjAe60oQPzHAzXzf6FOWo2l62a0LvZvPbRpJVFwqLUvGe5SSv+L/FmlymbJD455Csw10oI+W025V6rxnd9i7RPCe0y3n2xKOHMyiDgCsWK1Z+Q4pCC5ft4lkL0kMbzKtYOXEal3tUb3+wi8/rPJVx18MRms0nbBW/RjxtPaSCkQToo/7pp/eM3xrD/QyVt8dOkuMlY0mjI0/Jftr4hb8h6P2fg0GeSi/E4n6FfVu98JY4KYTJZbGl1jY8pVJ+G9OwCjmhpXFAqeVB1cgUTYrJJuUijLUv/O83Vswr041BYZhzgIuSI9cagWX5ue41KQEW4j47PeNt6A6J6iM03c5X9Wy/Wgr3d5TLJqpexAl/PrXAzdP5Rpkrg2CQoh3fZdonvIMq56JTkQT9RkZFc0+aVPCPmLi/bBTdAGIEx1GGPdid9EqnF+NGyr40AxaPA3BU/ccrzi03+6jMXlIWI/cUP2KT4Q+XUUAA0/Ryvq5baKFfaYmyLB1oSX5XHgT1ZkgmR/ehcsOuxnQnvUrPcH1yQEncLeqfAvK1oEIF/OH+5DKDITmW1c7VfnQsjxiEAyv+Y1AF0c2YQPOWeVLIwomlNx9kSFU3BU6bPX8+inSyuqvIKo8dlFHnfRng4e3+Csm4IyvJIGIDufa0q9fruwFNrC661viclMC6o+naKjFWE66xpf/D0xry4HjFKWZ72lJB2bk6yQVqwiuOE0LJVuQwWGO59JJNa+uMv0D51a+DPxlfWWuyLFTUC8fymeegfaCJTcEh4rbJACOWIdJwmu7jjCjkXDb3c/22MgYJA/5vkbIStAe4jFTfFKNZLMt60OKP8gxA6jBY53vQ+N0n1YtrRVt7DSI1cHMii7FU+13TT3vl/hcBZXVaBsh2QvwLeA=', + 'Wf+u9wIUE5aUfUpC8iRLTDeUGYBCrKqVrREbTHBebcv6XFTMf9gede+C1XO5eRG/LOBclU3skRdt+41Xnix0e5ig95swfMmYQmPaPp6YXGFRa1dFCtU4+0Pe6fW2VmldwYD839tSYq4iAWjU7O9flPlDmZGsEIAtqsJhAXc8Jy5LfBCJGZahK/l9eogtYZy9XE1T/AQ1Ldah7nvd7oAMTsL+bt9iByoixLxW19IqfvXzdDfRDXKpFDCD/NXnkOIjl6BXTfvJTTmn8KHa4amS9WxHeMGporxPOaUnhnOztIV2jECDAgixRJshTYUZb1srH71M6etRhFspryqfwaSSJ7yeYD7ORWSLapu8C324AIGxT0e4ZcVaTMwP0sEPIzjDoHOY4JZJC88i7j4T/cN5MOx+6TmzkrrgqdlxhGSuDdxk30t1HCovNtWNsIHt7X8Jk5G2g1rD069nABLi0P8taF+9pdPAfnXETuLve2hoAW6BfMlpQ1g7WMS8RFDFs4lFI9R+vhjOroDNRM0j87YwHIVRZi4Kh9o/DdsQ46LFuQ5UFu/RDMm6T6IzTyjIXu27bRFzcKDv67YTuoJg9b7t1j4ACRfcwWlm3QcBKQ08foqzEr5oSHoM4izLw6oy2ZtlHDJ71aZTZH5GlX4y0APKwweSM6tV3KWKt8hzM3R0IenDJdi9XGDKuD7tZYLPoKbYErFqNDSGojHz00oz7q/LwF9zwJklPUc8hNrA1+O9ZBqCKQqrX/ckYAHLWxxYzonuXT+8qYKbxrb3GaiW7WQyEAB55tv3d0KE0963+EBOeqPA65A7OzvDGOMfGA3eZTeTTpX9wuqEyBZ7Oa0RHhEjzhHDqGOy83wjRRhIU/7Sw9KpOilgvd3pn6a9KdbIfDsoERJh17D7rFpn3lWodRkeq9PRQnELj96RYe1VzPHyDEKFbaSENJG01uLxWfBFIFKGdNy2Yq9e0UGCgXnQJEZg2u0UO0lkqfT5' + ], + [ + 'hTaS6s21Y3FDWKciSiy6sXHIw6n2UIXxWVAFD3tMyOs=', + 'dRqhK71LUEdaTnPUD4OPEFB1CvoEd+D6', + 'UuZeIPtgcQDgqBpYlo7eK5AOj7VzzJZpl2PnoeC1e7aGsHGtx77vUfAQlfO9iK9KVMQAYOtpHqf6cE7D7rI8ROy4fMwtOTuDVghPFrLE+f2p4/k6Jfeu35WABT0VOp9GV3Zuod0fJtrjphBXRDnUXuGP+KkInxU0YIDecRP8nUnDDMnwbkuHSWUTtZJq1R61PW6JRuzkYCBRQV7V9MIfW4jDKE4uFsSEFQczlOdVlsewxrsWYoIW/27ROf1kn5cgSjdIx9WE2QFNbHweXqayNK1GbnW+sGrYJt5fLSlEo4cGdDd42QRhRI9Rg33S4rjvJX509VDEcOIRMIWQ/2RRQyTouIwWGbiEAeYhXGFbpwao+24Su1Ht3dEXF6LfGuxitoD0HD2cMUAi5VzIpxuDveKmeGeYPGde0+ygsXaQ3vrNwiWqFZMiqKE5fP3PW+2Mka/UCdS9EzqUQV+rX8dvOya6eLODJiuKNVgRXtKmI6FoMakPVHZGvYlwIMhiIIFonlgNrZf+1vU3afO2HIjCNp/B+BBIc5frLnGrtpE1ySuL4sO8Fdl5Q7XpeiYHL9bjV/QhElcDA2z9Fm0WkwkKPx7fTWyS1hJl22tcMP0+7wx+zgmeZRkSJgumKObigpnZB/QK4pakSM56n0hqwwRTaXCP63csChmU6AYRKCD9jKO23SpkaHgHFUti7s9XzvyLikQjoSiyfY+/ZveRyL6zp64VEmS5gdjiniLyF5XJcx/m9KBYw9weDlxLjA4bBOTUJPyu4/VY29Vx1yvjwJCE4PLHvBqsQoWeU4myWfb1Gwn2ETaVKikIZibcP5JsGIlAaQL6MF1A4gg+726UKClvFu0f1vMRFHz6U5c0fdIjpFc/8Z9VCpP6sBnCDn6GxL0c/AD1rCv6t34LwkdvvOcHgcAACAJdHv7YYvIqfk4i8tkjpfe7A88bmqeXjJ6jJm9SwFbD/91iI1Uf', + 'prDOijeySvCLHHsz4BXEkQIBegQu/uO4bmyyy8lwKN7geJ9IzzzYAvX7TvVjk250voX16oGhgUy9ejVB1ipELJ1ljO7qbb7CfVsP1Tofl4/AQdY8cNa6QDdZ2donFpG55wSklp6Cskd16IgqGuRhTdBJO5QMxBjMYaXBWrMFpbBXCvyE5pwCqbXIbQ+S9sKAaGLaH3ySzAWVoZRHYlq1EKwtg3D9iIf2GqXcUd+18Nehpb9ZKV+XHwCYa8Hcj8WZnMW5jwBEd+nfGhRY2eKDq+tCOiJ5ZAYQ0Q82RyiHJgKrfMFlHtMhoHMy4BwKIbCM6uh4vKawg7TupVtWvsDLpS9oSTFN5TXYLFZyDzfYvNGCq5sK7AHEHQj7zH89zRQLpJI+MKL82/gI+ZafvM5evFE6faw1ZWnpgu6bi1ylAaRjsOot+jLumioIKU+IZK9tEq1SP+3IyUaouRyWSxzYhZbYUMzY8UJomWpUrHDfKWwDr4GDMJUsUCdx3eTkrUC27RClb5NuUi60YujWFUeo8NMiLU8RB6UixMS0lglHwUVliBKn/EP1G6lbBZPEgdC41kcPDD3qHh6t3qlS24v6FBE2e92HjtC75c8G76iioiGGZng+iyRIWePCRKbuEI2LYz1wCK64gARq/1LzR7ntY5No7ka1xjUk5UC0sLmzl2O/HToT3NxCe+GgV9wQKYxFfbj52OdaEjmMT2xfyaTjI/2RD4G0zrbSH5EJiVjfy6lNptrGFwkyHLmNda8CAATik1Tu8RzDT+aclkZkSACp9XOJ3V7HdVz3EF1vm5GnTkbl/Xv1fjPLZSQIJlq49xNfv67d/byBhGERtHnGrGniotzWV87vsm9JkrI0kxYqZpGJ5yo+liNfZ0ZRGMAXhk93B7n755bI7ru7RaZTTJIienJb1eELGe6eY1bBIg07U+wbMyp9mKGEzk00Za+U7YKdNSQ747i81sX5vw2NbmesB2QUSnk9pVi67A==' + ], + [ + 'IKLtMOamVSv7MyUGmVECTBYHueRgTj8VZA1QqH/cUTk=', + '3FKySHh/Li8rANWwRbsjOYZzjTRgCK7I', + 'P5jpv6r5JRHqX28QAf6PRX6sSKiK75l8WijqOcLbtHy7V4HSkPcmGiPcHgnwPp8B4WcM63h3SZRFBQThgGrp16bgo2co12awKies6wtOMwQFoMfjuCJ9UY2UIMT8WJILqn+NeXzFjjK+EYNnjYW3bdRZymD2d6MFY7zo6hLBClEhQF6FInNxxoj20B8AWC28orCHoSb4imaaiKQotQhU8Z4H8lc00uIDcmEo+qtmJxcCWNnpkmEMENIZgx1GHkxQrJ0hqUrGOcQ2d1f+o0CyHR6bKby0v7AHhZM9NdbNSe3LYeQ2hf7A3rakzKx4XcTkGc1NyOpit6YVGVuTzRak20qT4tjtifTwIHZvd8VlgZ9y18UeczzMd9Vfir3MdkhWLi855yVkRKzg/jgP7kVv8raiVo1h5LmqklZloa7OzvlmF5NhRZfO6L0a3QvAisbsICJc+I5/vn/Ok0JTmOm+IyaTvkaREgTkS55LCbCk7gC+LeYNf7XnnqOJgW3eT+s9ht5OxsIR/tGWYLawOS3+DMKP6xXnv99ObJipXBpS+a5Rfcu7xwImQVQnOPLpfzT2IJ0QatRxJAM9CXX82azA2gNBjsWCsvDh8oq2cplzgUJHR+xLDFpPqiDM+Su1q6+4fX+14dw8pUfTVhj/1i/kBLWR1s9c8SNeHgQh6PDoaQ1KHPmHYI8MlJ5DE9JdTyA9jb43WORzd9UjFTEzjmlUaSf0nhHYpnvKKf/Vz6kMcgr/pJuzuJm8a25yuUlmJAaofRrnQWVGCZeznuTBoiAH6dhIaDg86hufOrv3xuPHDCgiP9/zwRBdhrGgrczqu93vWvNBQnW+bDpZaqMox0oJqmvberJz1LA8WnZWfIZJ+pERsYhE0k+JW/LvbthgBkGouHMcZsiqd2A5RQm1BMIF3E+zhgrjCi4FgOOUGsV0b+qD+8+R6WyOYJxvrHo2sLZKdNkvOWyOv2/z7Q==', + 'vRpqXfPugbK6LRjxgIO3+GWCM/oq250PuK5lpK3jiKbCbENH+EppblVLbusItYEX2y3QOUy/qVjOpLjZrUWs5kDpuE6kRy8aWSg9zNUdI34f657t0u6WZ8OkP60r2OzhzdVibMosoLYWuD1QxXpl0MUrMOuOSgjOpCSu5U0DVlewhyY9blrssjeiw2LKhhURk+1o0/steiBtmDv6fuSi9hNuJcNfomq7HWoyX3VQyBSuitXScv6jkMgJQkP7n103L9Mj7hguc7HQPjanRZyOOH6rSBqwb6lQ6JvKJixOhCSCYiecLq0S7vGXm+lfJIEWrZ9m+F42J5Ao2KQPioOITyAKh6baU7JixjwSR1s93uEjyN34NjTeXJEnHPw2434sgtAr07fcp6XyiHpe+B4xLJVro+vJW2W/HAkNySPF0/RcdkqlTIpf2qOMDlKMbdou9ll9S2rhUuBAKpeIqa/63sP//zkK2O1eaJ5RT5q4qNAYai9WRnaH2oAosQ6dai6RhwGbML9nmBRIR4jKbbv+NkDlku07EJPL/f8voi+/rBOqH79uWNsx94k/RADrfMru/DncOFjngVJEjwgnEKNArohVztq5PEE66yPmL0/z176U1F1k6cTamH1XRCYDi0kd04JL0VO9b6x8LBIAqvFJqqgYkdVdl39lycjUA55fC4G2UXfG//Fx/I9arcUhgSbx+WZZPa8KNyxpQMCsUhTnn2IzL5SyYuAUd5ReKn1XJdtdZJb2mjPXFVVe84kwMglQ4ogwrPHWNPCDYgt1aYMWCydIlgpgTxRueJ/7G0TkvsZhTb43NKF4voj+2Jlb5mudkmMxemcT4btq2vlAiPmur42saAvjh6/NzhOPW3Zpr2u9fv2zIYPtHe17sov/RseWm3VbrB2KDjaWkwblJwfoRD1drVmGEF2gib6Zj1A53E7lUNMw1z8ee/pfhAnXmdMqfJHDmYyj9xpb6XgVVJ4hBp/A4luuju26lUI=' + ], + [ + 'zfINqa98vfVRkA1RqrCplv9hvO3Pc+NeUMCnj/v9eZw=', + '6qwNrYOGjhsTRcwgtFcMfgDJ19x6vDoT', + 'bE4YK+5FXZi6RbIQlonlVE9HDXRqYXzk4mquXTAOB4/waGB4DbkLrDm+yk3NtD903VlQvAYsHFxw57XRZTnJ1NbLkC1b/sdUGYc+1DgigLff9y7AJdtOQVBVe2iNM/HtEaPR29vb+gQ1mFhoYPc2bb2jug3vw0wNqtjLifyTV0B0qBFI/3Tgykk6D/yrvAzHwFb/qcgfnqvdrlnRdp3rKMtAivjF3u7Me0Jwo31QUocCI1f5+BRnA8g0ibBorgyxuEkij3W7FJxMHLzhkKRCqY+E9AWeHnj0gRHniRC3sN09W7FCDs9+0P7E4oAsqhHhsJSj9mtYAA6FWLrM12xVsbL7mpsQ3Tktc/V038QaL1uwihC7gxQ1xGQC8c9Ps8EifSGFfSbZsXpiw7gmWBNZ/xH14PwZlHSdIfSnModD/ElJ3Wa/iuoWuAAsrd6UhZjimDf3Y5j69lsC/LXX6NGinLHFX4tf//1X41B/aQ9v7iE+jN1SInPPUIKBeUq74ERd0KqMCyuqPGbrDQSFjOKqtopGKBxZvgLmh11YXecuH92zS0UtRTByj91FfvVuvYYyp7TiVD0H45CHEcsH/3oiYXooxdigj+1lsxhoNVZtiZjKfDNsLaHu6xQ4+FgYlJH3UXL42/vN+4hv4PXj9GMcODexk3+BuqxqEJCUTN+b31fuDUFNGwPQE3pg8pUVCazBIwJDaGCerK2EXCe9vC+XGYibot26wfS4Z91W3JQ42Ph/OJmgFgW2g38NxQzk47mS9o7TWhYtjS7c+jFRbQGzYxMjhBBMMU6H20q245bHe12yGw4Z9AgvR4KnE6eiYw4F2aChoSA/URbYKfUzKTcUn4etbElKl8JKrcEp8I8kCpGEJJCwJ4iFiSkJi/b0KThd5PY8jm4NDjvKQ+8+xwwMutYKTLBrd5JOERFjA/LP64hLjGJlq+Y6pKNQrd+Qg7RLegmeCmOXCBs9P8o=', + 'FmR0uXd9X5g0DP/mv57NyoxI0x7hKBW8SKokcnkwSCEhUw2z626Se/L2V9yBciLNUAoqrxnOaqp3S3DIP6Y0/mMt8MGqyo8R6Wfh+JxODLfihLXsK+hoiCxTPzioM7jadLUy7mCIUhWqu+bYxEeab1a7tcHpCGWcVq7zxEfRM/EF5D26J5/DIkbGUbZxfZWBHq3lF1Vk18qxGbfu/io3UMucdguvurfgmoR11GueHbNaa2fp/PAEoV0XGfXkl3H5SaXTKQ37NgSk8MfbSB28maTjqMoDZK/S23o7QJB5KNIud5AxvSJExb3v4MnooAq2qnBMiPS7P+km3G2pzvnrQhWgodmZCctLP33jVamn3hwzee7eFZsO2BWAjayM8Rh1yXjiDwQZo7kYDRPVwEWAkUpTXYtdxnxybG74RSnQHAPOvA6++nEuZZqVcp89XfjkS6FkPhpwy5f4wfLAUXnDNHLwK9imA2dmplcZIqssxep5psW2HWN7y+lTisUZSOm2oFcTSU+aoLY0SP5qE/fhtPd61ixSeahovhGjKgZoK4PdsmXI24mrLROqJfgPxCDfvA3zCKkX7HTPzm9k7VyMQK6B94qJIIa9d/TvbeheJtQsVCWGGH1wGhokmeuBO238EdwxCgJyCkyB2zameB4he+TltBS9LBAqjxqs9Wu2nwoaosYlnYT7aFd8z5joMdjqCLZ5L/MEhHMh0nAX4RDGPhiHC9nFd/m8+3HNXlvSAo1xmYzHCkSZUeSRKLdPTksseLwQcjAH7/3fLC88qh/A/X4/Fsi9m4oKwXl2aUUMCfSbMeUuE3l4y2xhakELMztRwHXJpLw8rRBxYfEomvs9RkP6KioXQUXjQrX9fcj+NzYCUu11rxcy/szRmlkE6tuz2WMfvGY0EMdiFKiCeWQNQNUD2HeHf2qXr6/GCIgGhrnQlM2PDztitwc8Ay+GJz0pVFYrTSy5kW1FFt7L6AMYRYp22H7vysGL5+QA' + ], + [ + 'vv4rPCpIOl5a32H9+0fCCyZsKA4ZPNQTeykNXPN2XLQ=', + '/8C/PDQ4Gpk2YVW/zkWxmqypYEDgBB7J', + 'KU4L7wE2tODxy4zEJCh/oYrS2OM+mqSUkbdbYw+KBUM9CDSIQtEBrkP8MPIIEzqjS7nUcsUrTQNGquB8pAP59oDImQ01p9jS+XgiBEM39S+yDi9hfjsslkV6IlbxNRKRO4C2XHrp/ydKL0V0j+2/RkeIUabohkvs9XHMmcj2URmKEAdXqSea6RKnx2aDVZhLx1uoZ4DNW6QIJx4CY6Nd9Ar+aBuI+9XhW9eEKCIyWMn0+u9RAaCuPARikFgLmZNdD+EP/yVLI3g0QdIy5fYJllykWixkaiZebDmwslH6FY+Y6jjHUAYAz5ctW0GGe+oylQdV7NOMCtL2DFrBBFy8p9Fjiiv87p+P5tpvSUlscd9SjUKy7ej1aXCgDbsZ07ESMBZ+TXaZAtDYwIaUyKgzBncEIKm7IHJOIIcYilA4DBdjgeXCkw6v0xsDkeV147gQyY/tViZ+zBvv0ywKFTvwwcA4XcOquZsSS4TOrZ5HSWy2GlM9XiI+sdYyMRCSvzqr154nQg70eya0OPNyJMaSsSsCOzte+89mwJ4+18GPMsb4CEg0tlu8MP3U7ETjP08Jucx1TBALliRzsDn5IMLr9R5VbQweEujDXFv082qBzA5NA3heidStDW08upCCRSBjz4ZlKZsFvbzb3w/ELrwh53BzRujV/X2ELf/aNNwj/Hkud71lArAUjruJ+KFu4vs9LQCIdvpEvC7FfP58AlzVOC/5a3i3hklh5nDo8y5KRc1QXD1mLbOBuoWMHmhdaaHjiTSmFTWO5KYktIE2O/z6E1eYebDTwkMVQvnJkotNmqkHo0KJ7vCS7Dcw4IMRReeFF0q3OE8SI/GpUMcuufjpFNqBR9IdUQzkjWOsfddCfT8nmOnyNoE89RMAQAj1sg/ncToT/waSqp6Vgaku1Ij69WpxaEYnn9mcPnAUdEh2oT3c+3hiBVy1+ZvvzvAjObwlkuUNhg9pcM7Qg2UO', + 'zYQJm/TLQzRDnBDI0DFuciqzzRrwHPhpdhbwVqju5emU1zJEaHCMTuEah/248JErPa9+U4nknnyBBUfHyr1/yFQu+7HRuMxUsadn8Tdlws5XSch+JoyNjtUymjmdOd61MahFv+eHmtQiCG/vte2nYgzvnsi3yqj45hjvF2UX9Te/UloSvsfi76H+4ObeCbWgdODm+8fx7rDLOvL48su+InuIXA3zV90Auw1WuMY7w89gZYf7IPjecHUQcP38mqhyHQXHadcPuOoATmqnM7lh6nU338yy8F0+lsObi2AvkoYLh/izSwShy4dpncBdm80WsYeduuqcDbXvD11MpZFjux5MXav8cPUwVkaPWHTZ9wFiqxKTcqUb3Q5GL1nT4jV1GZV8/T+Z56M6VtuQ9Xyizb7ElNnIVSn4CAUo7L24RcH3rcZS8/zvDSKmRaD7UEgarf32i6PlPgnNpGrxYuORM63OEjDhIQuASjyLoJWvqs3vE/zJOJE3Jbis+CwFAHJLXS8w0VJW7TgfDYdDoS23bW868X61m4acRWIcmt/zRH8I2qQUZgcc94Lt3uu4ETNh7h1Wz7ovS6LZP1kjWvVDrprqY6I3eWK3vdEsoVWgT/9Lr5JyDLoQVLyTv/UXGDzTSJXmWhJ20pjGA+OkX4LX9DZopstlw76kzUuZ25o7CcI85WlST45KjI52MvPTcf+YGRZW7hxrrm6THsYnx/Itcbbk20voBMbs6lirjTbFTkqEgAENMqaP74HZCAZmRJALAIhT7RzAQn7u2Tky0i15VuMaBj9srTCzxdgPAebeo8E52F+EWQwTQoKi/N9tA9xAxhj/cUEhLqn9Q+K+NBosvY+zx9KmARMoTNarNX833J1dmV70t4U0W3cYM8PC3bia8XXF7X4f3p4Sw3ANrZB5AaDfNDP+YNP80M5G15XhtLxVd6sxUebohaGPB2XWhNlefsdO+9YCRUO0oQkuM8a4UjhzMHC7FtHgGZzqDg==' + ], + [ + 'sQeBsVksOz7vt/S7rgCczBQG3uX8S2QU5oBTUrnGT1o=', + '/pShDxgqnQ96Me6L9YjK19fTqRbjHnC0', + 'SiKAe8FAczSpOh6YsLOiYQMLR/BhWRM3K/ACKZ0Py7LktjAWDVwwHPMJ4Ua/gnbPS2Fn99Rn+ciiYIJHgc82x3XW6ZKNheVxgMnTTe1UdB2MXf4a2n+2Nvpz0u8mQE3q/xPqNsv4Z9B+PQtJXUh/PqrxI8IT4YVVyejxzsHKsBUAHm+HazdVZVGhlEUCO1Ml8MPLmWm6Qh2szX1IJ8Ok2EY2ggZQ44QYM+P09bcC//KJZG3TbR+a4dRJErksOCawVes7w1E2LLKSBmNosT6COc7ynR3LtNIvS0Dv2PmFNbeVo/aiUbFgx2650WTYnmB8CALDGKouuKbdbZtCumw/i4CZwhGSXwA4Y6fKwong1UBZjnu3KlO3qkyW13hAu23iu4kDhNFfVyi+EzpV9jW74ceP7mp6ifv19Rfgrahf8XvXMq7osXpqFTBGrePUK23KoYlkm9AZb+NOS2YFhjCgrXGkDvqNHOD1oz+sQ4CHJho0McG358WwnaY2clcmrpglUeNU8+kDHpHG47G3sDb8SCMRkGoyUkbzHy+ga2PwBnU0WdGactsYpC1CH5M/B5uKGo1YaqLYlNChog420P+5riLwD8bckVkERBMIf0soYt7OTbp8ZVylo9ENcmT3okp8kK6Ja2zppmoFTXV22nZkwp9RIONSItDi2KBCV0Yf81b/GvheG1AagASkSpXTdXjNvu/W4hdTaCUz9mAug9GIIQs6D3CstCHdnbX57VQFROBS+eeueTtWBx+VEVSbyNLDMXlNm+snbalSXiMKUseRE6QrWRrCc+ZnuOYxDf3S3QmT+YAtT3g9FixjC2/UJaX1t+iuqooIFsioBfHGuV281YPMgjv01Z11DKWpWNcQeBUYkbwK2z1UCawB1F95FJpwQQwZuL8TRDOLILY7znBdAPgGm4X1AdDmTieQbPenJh2lgPlHO5GXklGl1s5En+VTCAlgSPFiq3ZEAsFjgw==', + 'du4vKXF2H7AwBZI86WwfxOVvcbDdK7AUNya6BStDE5iAEzlkNqWSw3FN5cRitNu4rXZfUZpoJz72fzJlvnppLwn7PB44jAUT4E68ThVzi+dTi0b11yHok6cSZg5rxSFAcgnl7cODJd4NlfLdUaLXWxm5JmVKy6aTCIR38yy6iH9Zf46QWsIuX0kh1Nz7dDyw5vnVa9CUqpI1icFTu+/21sw3yWKK9AN+rBeaorVu765o5RcifbD2UK/YehaU3bcLjgjMLyHfNFclzBkERQOLLuyP8UL/5dHQ+IKBs677SOe+kTtWSDkTKo7O7u2I0KD302YG2Vrj1RzpooIiSgKE2i0h1NkeA0heErtoDT1jPVdKESz+LfnR83ryqKn/Dqj+iS9ekiatl7rdndnAxe7FgBrJw/ANehyb0/3+XCCB7Mp4vzWq7HRIf4JMnG3W44DTsO3ZmYBBeFuyGr2OXyixrnL+pDi2UyODMbwkt4DEb4Jl3TYHw+rJ3JyD+R2wO2ZgMRHqfvrlHye0VtHCqmEvSQjJUOybwKbe5khT/BSpM9TOqU8k6zq0i4ohCW/67XjWu3KmDQ+CDcwrj8+jhDD0+VqZqp1D+FG/RPb3O2qLs2vc6IGt/yAiM/QhTXOZty/8gkVH/q5qEUllLF2+nV2ghXVY9VL5cFl64DeL8vyHAc3eKKPpeV/iFcw03/4VbAVbGT0EP2BYDN16hh4mqoOiG8GPZq9MqFpZhfD05Qysv7l0Th0p4JcFpeBJjwWMUaUYdzJIkJbJAm+ZREXiUHZbZv5Fw9ahxq7LXb+hzfNut5ZejFXFy8R0JOh22VhFhnna6JESb8jnfG8dRR6YqGW7Edu8uCJ3VSCscsRnwpLEmaFxdCRdM9q7Uw9XUJ2GARrz57lqQcN/vHrNIn/hfU+wEnJB2ePglBSe6sL3ufBGnz2TTS6bVCOrCXe6KCQA0A73DnTCJWC05vq2SeHHQl2r8KMg+9bGK0x4X3CvU3A=' + ], + [ + 'G8FNeuQ73ayStDN64TyDUIwaP2mmLI6WZMk4CsBCQTU=', + '0/J7YWDnWcfZHyPWPrAHAmuLt1jsnCy+', + 'bpBov1/8ItNhQZUK8HQxP47UmaXO4ra+oVHu8IdsBbKeP73Qfn+A8p65oZxgM8ozXtVD/KaUrwaNF5Xeepjgb9YhlHOvWWzLUC+Ge0yqVk5a3H2j79ICUV12wjJi3ne9vj5ojn+2EyloagE12aYQx8COEu4ao9+hgr/1ctU7uTcmAEw3U3sCUrwERfQSGd2Vwj0ghSekgRHGOaSaGWqWho/YVxGUzum3arSwiAtz/2teWiSt0X3pWPFA8HPNpStZlUohbtJ127E+CiJiFoe31fGJgTYe0Q6f49ByjG383EXXj57yWMpIT5mK1ijxVxfUhoE7qRmFwYbLXDVI0vjMIOYs52cz7A+TKVvaPurNbpidBanxjOEmGzx5873cneNLwKVqt0yaEvriL4NpCfJEboYVLX673GRtE5UH5QiiuzvKi9IRGmxdPlpsEvRSBLMn1iTCzLj8Pq0/pFvfhec5p4Gf31Mg3YraDgG4SO++V6htklMpEldMUMCVUBc4QSrxt6lqoJ8m/uwySwzexgWkYN1VUoyK86oVB1ofKVYkdl2SAMLt3kYofoVlmfIdDPRf2F6Go17X4QHkDhUhOPFJdQJutcffwaEY8vT2ehjTCe6Gr0jr0ZYW+55tI130b9g7YokkwiJTyy9D+sDD/gfNkNqIdutJFV5LwSTRSF/l/7K1RR1V1lY0xY6py1fbLFBQE6IEABHWtDQRqqU8kLV+e0ZlNMUuaXfP255ZFX4Yf7/HxoT73mz6M/gSdfT6GCNC1a65IF8se+0xnVEk1Dkyfx/mfFAxVcKclOLuXnvVYUwVaR3CjKFLQ5ktvkcxO7QoTY9YKswKQiXFHehtQBhnissD5hHX74E0hFipAIgzNBdmIJo9rIvVAvXItEda667zPRO/Hs2K0o99IcIZzUX87nUni6lM76eGjjtxqJcAPmolmNWYV7/XTIx6//r3er0MyzlC1H3ydySqd4fxz9w=', + 'g1Yq7w7qWWLSCCSSSa1mU3LGtcU98CDDVLqKjDrvH9yY/+u05SgdzWkzC6nkoz8Cg5MgOEQMH86Cy7JPAGFM5XidL4H5ax3QpFWd9SVaH8h9bm9lW53/1K55I68DirZA7rmBhS93VQdS/KjdAa+2FBIgCUx7whKccDHXuI5zXeF9KKWgq4aEAL56rYyGTHb616okjy9zT3wTgGa2vGpgWOuq9CS6dRx6fN2fBzDyz0fe8BAxjEXv+YXrjwUDH2OMtNJnW4kMWOSSMg4gLJXB1R6nkiojnJM8PtNQcO1TocDYyJUdD1rBq3KQBnI0lsXszCbwoD1z3IEbnq6egM3ruXjIbED4cAUajeiApot/WqpJasnaCAJjZ93AXwvCdDlXacX7rsXWJy8MQNy95WdcG/OvOj6GgIEeOGafG1buPkoNosHOEQsSmzg/rxqLbmZfT0YqhDR0ED9HeQm8JEH+4A4x3G2t2YNlOM/8Zw09iiyrAkR2HhoMszbYi8KA/zJHBEu+AwW8tZquiHvtMVB9fBwVafRhot65FlJOjyTD7RKE4hARkS/RSbiz7jmOXUI/qCx0exh27l64WTbkII9jAY48rbM5AtaGA8VJXNwsapJkeUaZ20e15qBschIbrJKzk82qmQyKooCvu9x8mL6zRpFaBFv+gjIFC2XPaUF6nOG24jpvXG8L74Rh1E3H2bMDGBDHsZnhPsLyau8rSiYnQDz1hX6Jb5Ec9zqauHYfYZAw23NtJNO2bKfXOP0cWCkgibRhkEQOqnei2frkmow9rwj5PKgPaAx2x9VPXnDQ3FfvEw/aAyptMjmXNEtuz70B/2IRqHeMuKhcY80jYCAacgf4ZJqX2ZxaniGcPlsOZpy33OUXTrWvwQZm/DiU4wBwEMtO5dRbUVGV/v3XgzgHQCyAl+zneTQ82eLdnDi3E5rpPbGuY72sk0rnGWVRsIDA4LQQhETwqJsiQCyhgxDrf/O+BVr5zSRn3NTlS7Be' + ], + [ + '7O9jLDVr8VyN3N15xRzE159momPPVPuji5x71p4xZmE=', + '/ZwzoZMLhm2HYEfg5pVuTgfHWYgiasc8', + '0CgA4ljlRQaMD6GawkIL/1QLYhbgv3H1xVkbRUvgXPRApRCF0MCp2P8P355Nll8knX2Ne9BZHE2YvHP2KN1Wg9QyiBnAsJLgZNP5Ov9LBpqjI7PJmgEKUJyrGmCm5GpRudtQAD2B9O0ShRCYebtOn6I8oGEF3BDY1S1vWcN+oIhFVRxZxQL2EHcvM/HbGdbjhRYtVpLs5m6VCXVEauXpYc9sVlmUN1wqBglMZfUMYZnuatBWKqXzixRSDEfNQot+igCy+K+26h9XRWOLJw6OarjeT66wyPzAQE6dAyZPAKpJqIV2rGhKnH36fGogmjPtl+fTufiVPFSXqQhQrggvAOuFn6AmSroRWzReh2Gqf8erLNncIv8ZFiWKdlTkupJ328vF43QWmz3OqY/SqbKOvDmByKpeCKw6xF9ieKE/p/ojGY6XLbekFuHK7v+ioqQ7jY7sNDjK2ba9RoYtr+hAHDMhnTV82VKqlAA3k1DAIg1vJM1vL/zvhARY6OUPDOmmrdqmWFM2bo0QYM30esHQWHSn6SqYTplvlN4F+hH2fbVdmuNU3uIiYcW9dWSl0QuYqE2zmMvieIwRvewQDx0uFAaQzIGLMbjGtyR7S6IPwc9paoclKBvA/2RreiUCeDLPTULr/x/X7tVd52Qs5+CEe2wQHWVWXNPtbPghFvO2GRz3mOEBeCss2BqDYp86DPw1FNqZWSg7f4Lqyrl8kpecL2U7MbmecWrb1ySaLsR/vFOsZq9A9h3YCGdtLZBZvt6tLAK5VroVhaoEWCxCcVWiVnqWmCrpNewHG5nKwruwqt5NEFfZd1mElfJR140JkgCmOgmgmyDi9cVY8/OpcPk+tJfClbYiecIn4tgMKvO0qjXAbpE2dQC61RfL15tD9XPRfJAhGHMohk4ypRxw2GUYVfOPGGxIt4A5nSYFs/3PfKRLvdB820Yw/dPzF6dUfk86UWQUHb6DiwMBxfc0dLj/', + 'z7pmSquwJoxR7zPb2gl12pQbqKQGOXstkDr2GgnSnt+9Jmd3i34phN03wbh5gMG+Gm74Gh6JP+23HAN6ZvcPdcReJkB1+w3YpDUsR3pSMkC4LUOvrcNA1zbzZ0Ar2Fqdgu2+Wj1cGVth/ofEDQD6W8mMwk+qGtIUdxbA6w6cJ8TB7oJhXE3eJ0yUuxviylcqUHoNPdFeTuTe5CgIjPEdQO5BHJl5XZSkGp1QbP8PLy28uWCCv53XrpmZEuSwfLLE4urFL7No4NDqnEh3GS75ZduU8xgnIlvsW/1O/y+I1FQy+MRvDgr2NZRBMVvsAArP4qsw4XJX7Pet5NYwX+PJJYHvE9WN1oqYNFpU+JYqrLe0keakP7CUehq4HHF+ehuZb19J9bOca/pp2ObnhHGn5toyAErNRkBzBvmI+c8uBTEzI5MW6MuW7Jze0NK6TusAESBYHKAbQMwJD3tqYyNVfJELX0TI5WRBu3jy08fY2WIKBGGn2Q8G30rw0Th47YBNCEExTr+zfrVOFZXRLcN8j0BzVAVxAbd6eDkVyEQc+ktQgDiP6Mo1UE4acvggQnkur0YDcKSEoI1f+X3GpiHBdlvZgONPIXKxelVbh1NiK0CHl466tViio9MTp9OOEBgUlwTeAyX6GKB8tDO0xGSsTSd3SsSDx65xYbtwolAEG0mEdonMTagG2K0e8FM9kuL4E80lHX21pDHsr7GK6IfzimYT4IiWXRExydiCf97D5DAKloJo9ABgbfyqWh6dtHH4gFIU+3My0vaoyo5gPBs+J1+XB+D4cuq05GXLNGsMY2x+rsXP52/jDkrE4132qsWHhKrK1nbC7pXBuR+V8uxltX3KV4ayRu70D5dKfxkTy1MMriXG4BPmjxU+Y8d25AfGwdUS1z6mQxqXEzbOKN5Okn/pjk4Ax0xU02vvl1wdUFjNR5ADF5BvCYRP7lnnn8p/AAlS0YV6Qe+KR4/6KnpUvaU/+qYsWyiwxSON7zzwGg==' + ], + [ + 'Tyy4/XGgDGbNEt8dPnvpTvAbrG8qzCrDdBajkoEmErs=', + 'R0HbTcrbbfi/o/n6IdLPOBE74Q0O6Szu', + 'fV3XPOYik5XSe9Uve7jBJM7cnLgOu5dwsoFlUeRIqNabh/nvoAFprTx3mrPpkuz+LuGABDxNGyBS4fpQATrYfPGg88opgObT/q5qIsVfXVHPrKnDkN+qcZ1AizeiFifBQKMUEWRs21orJSV3pvmAPeApQsiDfPMsEk2do0ES2+1VMYskkdb4QkVofstZ+OfMWXhn47jzy7PimokYraVwPeR5uBr41VrUc3ZOhXjhQfflj+iGmJB6iHJlZU2stvlmoGa3HPS0VPkQk/U8h4JCYElNV5/AB88jVqabuECs0Ktw2FrRCQWGnp9wuFBmq2bexLAlqyOPh2hav1PALqICRy1wS7ypAjKGt6D7VWg9FnwiNM5AQy+GfcK7cA8KePTxmycw4Mw7ftxXuDfNHGwkLSUovalwqbNxARilQkUfj1ilzIDKNQtDvM+Hj01hduQek+t3ad+UZDjRjO4GaS0vkeSPnbsI5xqgnwnipL5oplbMwMlLTECo2lWjsmbwZKomdxgJazDc45IWDI4mWO8xaHJ3a/tAIkYWryTVRkRwdQo4l3yUkK7++NehzbQANNs9b3PY1n5+SBFj9MQDsn/yOi1IIQdzIddtCfJwwhSeaZtO7bJnmxyO4FS0cyUmYgAyuh0OtwIQrGb7N5HGcj8gSaimld/Y05i9ch0dEMWFPJWJcz1G7KsQbB2oAbd94pIc5QAbaZ/n2TQsh+lPCrfZ3dvXBRoccNa8CfuEii2WJCqM3hhWQfO6rYbYIgYKVH4XIl+yOgdCORuGr6M363t5I8qfF+AYdhYSE3DjTSyTYlpVfNn2V+jtW7gZBeVtGvVCWn22pftIzWWTtmEE3bvcDOL7cUcrm3QStqc34b5PJguqNyZSyl2sS9dNi8/So6YUk248hiIEsSKZciXbyS4qAbjvs+M3VpGqLNsMDuq7mbHO9trvuLOzNM8vub86L59w6yf7js17Xx8j/fLUeoD1+A==', + 'Ewz1bnuFjRHosMbrnle6Xpogcxk+lFQiq7ZjdV6MZ8RPhynXIB5uedtJhmFHyddOY1jxC/h2gl13nV8ps+/VCUeynXxrkQVFjpRRTESli2Z+KEjpGFNmt5dZfILZZxQxLVndUrRt9SY/+2aTzHos0mQRlNuo9O6xqmuK89HTpkS6NsI+lhTsDPPoIMnRBN1Fp7kXF1lfyyep/dS9/aKPf/ytV8pdxDoYqMdfzZ/VhDjqYJJtrIQQzG0iYHMLhT51Qf6XWPws8Mi3x9bnIpE/VhJN1rnmZ9Dxl0I7dvVw6ZouCORG20NS/80TzZGn7fL+sArhQ3mx7T9N8fPHD42I5xfobiMvMXn4wdyuOmeAThdFyPgYS823rio0Bt2N0aEF2N+Gvep1B/7chfpOSlu+iInanWnTcSXjcq55vIexbs9Z6rjRuTQNi6ksmSonypLBVecCbaFr5rWPRq4J2cPFnhLHgPyCJc0U6nV3rBTj962zqdxtvEZZkv2N4zpXPbPI27pjJ68vr9KRZ40fx8DGl+NAJ5nrqOMNU4TWI4iLURfA0PCJOjtl/HRb49QperoFmDjfafz0hgHZ8N9VMh+qMo8Eln7COTH37cEgs5y+G5KICfvWbGBNZqJQkVieFTmAHaAs4Rdxkn7OtXOmv0Seotoma/RE1UQbcQ7V4hgjN8xE/9wEQFC5dVpW75Y+dc8N8RtsaoHqhcb2r4+Naa7vs6yxvXZ/rpoLKZdHyPtJdZbYjS99rTcvHzWvC9mRneVV2NFcLf99260RaXhTcwdmLej0CUy2sSh4P0CPJ7sW2wpMQU+Txi1PGXNkeBqawRo5AurUOIwJxYgDqwO6AP6MxbndvAjQ2r2/FLD0KqA5oyNZgm5Z4p4Q/y7/bGSDX6De5n8jApzm96hRM5kf2Dj5oMBIXLEgftpjta1RpFzbXt6Ht2nZfNpVdIUZqUVTTnPedvizDxo9BXQqPuYnU6zQebWLNFJLMrQXN+FSAKAWCmk=' + ], + [ + 'zKhmIawFPOoyseCeVsyfDpdlCBD8Gki52p5+50GZH1Q=', + 'cJNGuYLp5d29EIComY3e+iLKurom664S', + '/N8X4y6f64rAxpziOwhUFZl9DWGM1SJXgn2XE+Hv+jl75kgDW1PS4gVEXxxdpmhqD5+DXUSKLY97QtzxARjzcLTIWAAyblgG2V+uYvh98KyRF9/CKHh7O7oPwOo89ar/zTO9flsvfmZMVo34C2lWC6chXx7r3W/doL7R01PHoPu2ZaLh9XR89JNvy1L8wANRdE6C9atsgiIdlIFMufi2aHjbl0Q6iNpimztBt9dnZFHXVaP08UHzlrPDcE1i+PIBqtq6H5UIfESCDPqc7iPRv+9gWDkAW2wHdOM28Aqmr+uAkZCHFQ20rlnNHXwjIV0+Nnf/r+OD+GLe8JjKKwd6lZrkXdtUBhE7lcN/T6Zxa/iZhbfeHkUS6Ppo+dWFuv3fjdnsmt94tMIqn7n+78IxFS1eSlFNkSC6J7dktB4/dDPKTZAd0wdjv5tbCFfCC4tqWYDf44fQmKLrLNc4Ymh9HBXH36bZWkDnhRNIqPXgMozGMEs+ljyVT6la9y4QrVH7ltdM1l5HdEFqvwgwhQVUl63g/RVnrfi/cPnETZxi6qASTvCa9qsIhkN22jWb+VhEXJvy7DWmf3rj05fR11Tgx5pv8A9Ylh0LDAUi74rLaM8eluX6aX93W8nlBg4Uwx3jbbJvgTfzw5Zx8Jo+jSc0h9tt51G0UnBNLChIFQcCdYYWI/M+IIEB9fXQFMA0CZv/V9Tb+zy4A8ha9y7m0cSqJ+S38Rn8nvVCFhC6KzVtwFknvSnyTEi19wY7qCcK7ehMGq8UT+P1bG214OJoOulV98W4fuj/+d4/lTaJs1cfKcY2fVp8/4X5kmVqW6AakA/NM7+1RQydd3kzAWO8kyyL8N7TEajZqqRDexoS+9qazNGEL1gkdWo522BxRcf4GQbXQwXDLm8+7gyTFQHGj8hwHJO68STZNjniT7AXULjWybgKzxt62cwaS2B3BTE6wGpT8Du8C0pVzP0lzitRXtMpYIE=', + 'GGxm74IFIdCfeGsMDaqE2rn/hzqDZtXWrtWe4DW0CpyArBfFqT/gVUpGkw7cmNYrcyuuXbhqkCxAaaGBo2M4vY2pEj5RSiNdGhIMureVgJYytdDY9fzWgDS9+ZxYFFGzUSNobzK8yjC2Wpc3efl8BGhoiXPrpPkeQczJYM75v5D5WGcXvmHNDm4na0rLRUD+v2gtCf0Cu7YHdagQ6sIlbOE32mhFKxfBWspfv1xGV6AEeqsdjLMJs6lIsKS6k14+cRUWqy4uLkxF7NvYto4e5XCMoMxajWbDLzPdZdYKFq5yfdvjYNbtlCg1IS7DOua/1OUo2wWXk+1M8l4W7V0MpSdIAOJSiIlIp7eJ+AASeGBPUigDgIFBHQ20rR2XV11CFLM+eyWHhDKyYtsKhvOUx9IRl78Gg50Ti7Dl/FhRn+22rdax/zJdud5tAJ4l2qvoNP/6xcRwprIa3kZh6601qArCkHbZwY7mwiLsi7NHzwXGloRGgrFqoxobF0YwMeOmXyq3Yhqywf5l9/nsnuLmc+PZm9XW5PGzeASUqxUGQ9AW27QYqLLY5fnxvIrtCWCwrl2aU2QQueUi45qKy62+xUpKD2rTF0eCMR9xJSRUzc9KAsyMcnF2hQFANhRvrfs9cFjmAZQDKgKWcI5h50ovWEcvKZDKWB5makm0DSQDmEDuGDxYOcE4qhC3mearlLEZgBqGdTFYH4W8uysGl6T6WxJKYnKoAay3Zf6BAOlfszVgC7ZTPo8hzcYvkBMEEAEyr/UO5MSjopw07cpgXRBI3DJHn32YCsrzesrNqyofC1g1GuccsnmKI1pAgeNf5SoofJroX2hlBMzRn6MdeCBY06O6x2AajkD9GI6L2zEdR/9hCQBSKn42kPbAgHDYmRzJ9WLowQYJdFcMUKXs/VbrQ60+sNPekTWlIdImkwNPi/SPvdG2wndwLdRrPdt6YGw1TPb6hkkzwDugpQecW6p3OmfPgVqYCle+nXDYZTvX5nQI' + ], + [ + 'Zc3Nhg3ib4Dc7vp0IXBCKMk91n+4PC4+wZvlilXKNMY=', + 'OLxgRJt+evyX8T1ZsD9nELXMbc31KuQe', + 'V8l/nZ0iWHcTGC9gUiUGWlEV+7QGwg6MHVCPUwdyx3W0xEzcrK6Lq+1K5TsYsXq9XpRa1wTFp/sbSfn8cu61XlcQGwJVSCvcsZEz4chxzSWcB1Ov9TZYhgwcjtRME/7aFfEN6ltx0e609KTkogZQAVgRAdpEO/iW5ej0keUelf5G+WRlvkTeqcHNrCq5PyBzwBrQSA2xIGvwUe9Eos5gjYU+5ylUtJ/RJIOl2JrAyrcBseE8mPLTQ344wAXkALRcl8KVkUQkk/2UH5G3v2u8HMl/IwT34rvygtH9dyHfvyl+Tmh+cM3tKZMqA8GlqHSCA35Xeoij1kzlXpzwnGc1diiNdjYupmi0sC2F3/IVvAqO8IlDO0bUHHIGncXUycauCw0BA3KN73GN3/YDfoSQSVEjTHWyHsw4CIR3/yxVns47y7phlJpoOK1SywM5VTXazFbp8wPr8XotD0hbjFfbLAHEuh31bWZtpj5CFSD4g87s0TzuhudBrEPIcnLel4EqmSmExYc6+XJxG+pcQhXHa5IOAf7VxmnwjXwwKInCBy4a9AO0A3VMU+RFJuvsN93m0wL9EMvKabtvf0mLjsnYv6SIC2v1NzCEJ39mASw9GGCN+EP5v3JGD+4+HDy5ikzftByaYTILd6Hob33X9LM2WSFMASKfRFmEAXzcyBmrCcJivm/Sl8krlb4JJjS4eE4FTEVB7FzymohExSoj5OJOKCF7dg/v0rACnrLzWY55WHRU4xK1GtvrdcmpI46U6pPUU48Zeq6VDHmpxeKNwiAL302b0JT+mzhdz0N3bO3HeS8skkwMSCr9UVwOa/kQndlDDKOBJnrD70prdqfLSXfrfgqPnrpgv2EK+cjQtV5VjjM2yToKpOjO4DyfLAsM5YojKuC4p6JasHxz+hYnEpoxPVOjeHcniSMBg5jXoJ2UVOBNrwQ+ypyST5LE57URPbBkMiSPMEMDopxnHVQvURGxa0zS', + 'kGYsSj5GpX4/KmIIOilHd3kGpI2wbID7ZGlctlw0/mM6vRNW8M/jOzzPhImMWrfJy0sAjXgW1dalCGi7008R1S5BhuwBXDvPS4iX23IuW7AJGqfSCTkPzvABPQ49JmAkM8m8GDttvZUi1RH3gN5/TwkYcW8WVQjpVa/iQR2aXGNn0s7cYAHdeSxzIKrlmSMgPP4vFs9kon4V3ppELygBtkYEiTilssTrcKQUFc+kaVNf/Qz57GW+xcFrISUWdNkxYWz69Xa7qNSyg44P8DnjgV5L8SgDnkN47c8omP5WOn3UUuvFvmJQQQuuLX0cEIB7c3Wv6mtnEHBQADOteldok0LRF6bcD31T0gYClJZbBUVZwEC8b4oET/ill2h3NxTcb8lhtiL0pMoyeUon1mAzIdIIcdidd8pJQ2bYHOHq3LnW41+6pwyCYCgJeKYOKlNFO8WVuB31xvG0JudcZxJxhjbuVsXq7x6E6tZMY1k0d+2Plt/pfdjPrJg+chzv7TEV7Mck1LU4gdJ3QiBAaN3V8H61RXA5+O82iXU3Gy0KcX7XJb1k7jEC+9Ky1wpqFFZ4h6C0RK8H5VCYWDD1KpOY6w97RaWJmyqG5xnBaaGJ9OuOIJ8USxoNLJqyaGEUcy4jdSMCH4VhGKcAMlB4F8QfGgE4O8nnKnhcs++uF0vBfz4WbJH7WgLEOoxLtci5dPAK5PFc9XspFwDpgkGUTaec490y53S0cfOMEhkXs/kgW5ZwYxQbR+59/HOp5NUhlqRN68/LqwhkkvEF/HJznuh0Siv8nIs3fyUz+OCZU0013M1YO7qSR5YOJe9AtB1eiVHodWBB1moG8zv9fRIi7FnzgCs4pddW+RlCUSaWmR0yDE5SZK+M4F/6geyg9ujTplOo5TdGyhO33k9mDcGv4mXTOQOOx4NxDtqeG/ZZDGiSquD4mpSiPHp25GqIqPnSZjpdUUjjlQrqEodPe/3w6KV4qbZ7cYN4laWOOEjnIlhh1EttfA==' + ], + [ + 'wbIxknCdvLufd7X/4vTsM72uTw7+IsDa+Tr5WyWBXV4=', + 'scgvAI0P3yWB1fQMkyJIbvWQNha4tNQp', + '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' + ], + [ + 'izM38WR+2gC9uwXXL4QTpb72X5d2/b2aFH5pMAIIQcc=', + 'i5qt4ttSEq+InUtegvQA77gdOXJqKE+T', + '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' + ], + [ + 'URp0CIcGQhmp7CJjt8tyJnhZ1iuuhgqpPS6Fg2DRRpk=', + 'xzFPAcKYPrAES9+Z9La69Of8eG5JrwOM', + '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' + ], + [ + 'DyDLOJBuKtxIxbHSJ2EKBEZqrdvqRClB1xG6gmz8BKQ=', + 'mqMoi6mZHlPzb1RcDSxUwVlMr7qzzi2t', + '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' + ], + [ + 'f8jK//ypEUDPT7hPYhbhXeUs0PztBPZJQGxVCxWYQtE=', + 'qtag/v25/xMQcJbS7YJDsAiTdmDaPbDb', + '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' + ], + [ + 'oHDBAgCqj0/g7bOmQ0wyc46nLumxtF1vf9PW6KBPCjo=', + 'l+XRxXHbUHWBhfhuygzO68qS8W+NUcHv', + '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' + ], + [ + 'AqAQSvFVwoijdQBQKR7d5/golMcJfMXdgEzFCpanZz4=', + 'DbmLhFBKlwCUjHrKYZCsl8HNBZaFE96P', + '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' + ], + [ + 'C2GU4Qv8Jchd8w0TkfeHRSKgIzxMxNxuP6ZSfhW8y7k=', + 'ref/qTMTksb2RJSXUMx8oVfWG3wpTPjf', + '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' + ], + [ + 'XZC7wc5/25lOoMIEFxs3i+SBPhoIfB9eLu6l8mezdtI=', + '0+chPi1Eqqq7g+tqIGBmNmM849+BMbg8', + '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' + ], + [ + '6O6IHbqQ6ENj0Fjo/xxAMu0z7d3BVKB1GjafuStIjgw=', + 'bEksAV9OtIIiobhJkUbNLTFGa+vBHf0z', + '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' + ], + [ + 'RdYN22iNss7sLyQMSqGc55z9L6PQGax89+30ZT9xmTI=', + 'lzHWub2nafWztbN+FVF9hk/pSWy2AXav', + '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' + ], + [ + 'o2b9VcN1mHaEq1bGwvAZ6JwTf4D6v0XpV3+kme1pTYU=', + 'MRbFG1bdimNjRFux38/97i6u8HpLBPrN', + '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' + ], + [ + 'E6lolU19Tz99xzjZGQ0FN3QtfiKSy53dlaiPQSE9VPY=', + 'p1TV44vP7X6jAYoBjRD7ioZIS7idAYV9', + 'ho9sF0XZU1oZOHcG4mtggyDNFbLa3A+QYWKLue4J5kO+d7lL/pSSyRV29Lv9KQQP3OY3fcq8p9crrmyrRNIQjDG07BhZEc9rITd0YaNyybPCJYVHUaoVN375vUiFBR6vw/pyKdGa5oUrmKvdhKICKYUQqgq9luoWff8PQ7M7vMbVkJELkrxXQm7KB9utyqUwNDl1VT8jKuNoFwCcVQmxRw1JZSIr7xqaEN3vc+y7Y4ttopGIxmu67yX4iIq6pg3gc68nGEt0IqMGv+i1zE1XCtrI2LcjQcUOB2nGeVWqQVB4dbcoVTfBsnrlnSN5manKq0QFhyn8+LxPDfhBwDI1To51hWllwlLBkWw8tzg/yXYY7fWnFXzOyrgDSZO966gpQHNA9wU4Khs/5FRVeEyQUBRik4SX29WXaMyDQV2TkcZTZoNOWfiTbiibqqfiGeLQM+6fBNz+8rzTHkarG+bMD8BEYKkApTBVXfO2YYl9rQsYPhhVU7KlLVZzi85zT63C5sOR95Mj9NU8/aHiWn9mBRHHjDYD0JawpjTjVKvPgWElV9uhM7wv8sc7OtB8nRrZ961VNl349hkoZuuHp/UhAUPmuvufy9wVKgbKcRpO8zTjuJSVjUqMGkfTM7Mc51YJIXdaueVkfAh8stQyEEEEYb6m2n8zRl8fk1S4dhxUzVA/BoQTSSFxSqVtSyfVqMVmx6wak13bg/uXhqmWGYyMlHXHJTlAHU2eyLV3LfHxDJEvL7LUtYfJD+f/rTLspVj9vL0uPWqYkjpyo72kQ3THhgIJUV+NOknn1miZCs+YHCMWl6rKklTePtdav+a5ONoHHaQlPp1Wu4IZhyGppthLWHsR18IraK0RDJcLSh5SS4NKqVcWanzQ403wGZN/rFQP/nFPHVP1wCVo7/ZyjpQKfwj0xoH6OqwtgkmvMXzBIh3V3PftiyH8+3wxrd4xq6UnsKSiJ9PsjsHmlacgCSRwEzKL6SsYoOoSss595UO3Pg==', + 'XPtrMiDyE98XoSrz9fH3AlSxYZqtzUIuhO//zm9junypGWmxQray9eBEZOMJz1ZOGSHI49YgpN3ZHZmJGGWbw7pJMj0YxX4w/sPbWBWC2ZhUxqfCjUBWjpm79MI1BT6PdgFGcNVjDAsvpdi5NCMuPycb/Ik0Vt2v2V4E7/TQTPV71ZxUmc7gA34jqkoXYJCjdLFBk5fpYdpEdzNL4oEaBpK9q+0zdcMvhl3vZHLDGTbMEDFhBd8dJPttHbT96CFIDELihqBM+E3UXuPlQE3e8rdclvWvwgVahedDMzN/HSjsMRxz1gxk0Ol34Xp1UF+3IS4+Sc3t5bd7V4txt8BFS2vQk1Asq7/lfSy7Csn+B6hJPBMu+v1qdqNkVmc4Y/zZxPmaNK5/TmWDbcCpSJiZWZnSaSrJouhUgrsMggyFiE1t4jxQQzQL5zbaif2pFIHI0awW+Mcn8ElgNz/4MWf4JbNSxt4laTqBqJxknz07411fgTHXbKbn/2FU12v6RQvTOwiHbL1XUplJhOR93D2XBMlXseHTBu4au1v3pzDDDsOw7xRUk3dv//FtiQG1a+W+PZNpUvU/QIT/wyI/2DTfMpU23Bhp9F9qyBye2vpzwPivOvk/xF2c/eLo6JHEaTFkacH5YSHpg9WVnOaOidEA4ahDr4yXekXOptkZAMmtE1xLivf76WMXVSEf33xfUeMaPvxCGG5lffnO41vSARAPsdGPfEPs835qXbkqXMFy0KQOCafdNnVnP6nGNDyNm3PIEMfV2jNx2dSS9fbCWgc2NES8fPVDSaxWVwSVbtd39JkX7pioymy1LDFBW5k+NGNvEppXgnk+tCPtYCCFnC672dKPw46RoMPyVdq7TGlzSXLMZS2ScU7wQJ8wYBPWuzjIQNsdlMYIy1E7WpbZblXs8miwL/XDEo/+f2f6GTGfbTrglRaO0WVRJ5PZdFP+j0PpzwEh711H5MkJmde+E3uq30HCKmkL845WhFS8TAQcGONUEnsbo2RuYKkazrEuYCw=' + ], + [ + '901MxqKAb222u/w0N+DvJ4+FYT/tRHUy84c6c8kFcNE=', + 'WNdNWswQOzr6zDJH48AdPYcp++uJOVDe', + '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' + ], + [ + 'dZ0fw+4MSPOfIEOBqhSBe/NENf+VhGMEnW0ZiV9aaEo=', + 'hxwKjJt0MFRuplBIrx6CQcFPIR2VcK3K', + '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' + ], + [ + 'CmJM6/K+wusCpO9euKOgNH40Anpv/LXg3lw0I6zI9xo=', + 'PBBFT9FEtnMQHkCsBfxHhuJlCeVBiDvu', + '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' + ], + [ + 'mC9q+SPlxl2F9p/Uj9e6N0EPFFPRnf+CJyaYQz8OU3E=', + '0eHNPlc8pj1n+SROwjC57hiubKpskSbb', + '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' + ], + [ + '3xMBLYi4R/tBmYdH4kUmE4ND8mZREFf2l/9h8FJftYc=', + 'h8EUcTkV6Evqu6P3SyQQg4I6crLB5AoE', + 'K8YXjO5uILbOBowuvZOGlaA+hWhbE7LLLUi7ZUj78sH+bG6kKaCSZ3OjA9v7Vvn3aVmBV2sTfyjfMkIpdWu6H6HmD2h1/XvYGAkq9ETw1pCUZsWq9rVcWLiw7wPgfB5UekS97TQbQzj85z3EFtQI7/BqR0Fv+a4igq1o5KZFN/+764L3BhdpX32jesI7xr+SDr5QKXydjLGeuBrztAdyCrhFrYeG6up4bw/9xQhq1boW7P00/KJoSEdCnv8bb503LEtjglkrX6XQwwqmsdNNOYOtsI3QfRdLSlrI/mwI9UQ7tKPGK4TJces+YHHBQez7CGrD41YTCnM0vrF8XETeIhgzJGI3umcP9n8eQz8OTaW9LGFqa23mQMLKAWhDIfUa+emx0JXpvjPojGBzmTHKIF5P74XNhOtROp+olixIUBQ9wltHEas5VPzLQSep5pxnpqdcQiKxTTAWjye9R7Z+qFy8TjLBHFaz/FIs+XoN8gVNFKFxFjHUEBP761X5a8ZUZa8E9IUyw0+WItioMEqLjo2In6EQDRaZTnqypMFcJSmlPMr93Hbgcz3RycDEsYeC01jeoA29DGFJwR1QrRw6F93hONK/DZynMK/m+LmE2FsoyVHlID/WOOIEW7DxqiOm7/aOrA/iRv2zOkhfEjb5tXvpGQkp3CLIDR3SAQFbmck35bzXxGsI8m0jomCKj9q3OWvk3cxb+Rdh1A0w+4eLvZ8maAGWp8LXVHRZTkfYbIcfVJLnWRQYyEfoBPNOEmuXVpDj/3nPbmiIFWEIzoCYYPFRuQXk8bXvmRmUvhZgm0xKYVIZhlvWNCLberIaxVVX+d96UFf8I0f6kobsSPE46tG9il8cyVewWVKvqTr0nYgV+j1+jWF6l4Dm1wkiuESC/e6rOKkwRf4Sgi8yBGreT5oa/ZKwVlc4/tgTsgWKTf8jgYOmtu8GuAf9J/6u0UNlw8Yox/zz7z6hB9L3+n1Hyk3UEBCpcj0/fWuhEMBARfHuaJie', + 'R0JL+bXiXUjI4r0NzgpBYM9Gt4+DWxbf2xrRD+VIKVlDql72DJZCWB5ctB7v5eEjZ/MkFG187l+44rtJECZGORrKbdJ1+NHPkLcwULCMxVhX4uifN1FU+lEuGrPmYNeZQiZl/WBvh4z5xchbYA/oDV0QMJ98DnmposeeXP2NvfdIGNC/GPEc3O1Un4ifsc1qdo9GhwRUMY/EIdKlWfl1auYhHN8a0+LA/KmhnaQZp6Eyj9nOaplpiprWL7zKaqvqa0m/KsRXTw9Z1sz7SY9ijBi4m6XH1O3RNSS/KNK3Gnnf5FG9gnOapQGA/ityTIyuMTMF0tV/lDMzyW9HgA+vDzIs5DEJ9IPBbMmmcMM6amQvhvxwOVe42FkREN9dblq8L2LZ38Tckz7wlR3t7lCOumIpgqDYu408AgqXPqd5sJMWtVzj++DpRZjzh5+6mT31Ahci2oZwka/5ajVKsOiJFLmjz1l5d4gOQ4ZEMVVrnuwY2GnZ3ZMCidkp7KQ9tUQqLA1d+Aet6DkClFtSj6g8hDz7s2ISJmw+iRAqiJepzi6DqK1XVlcAKS7CBC6Q1iu2kj57MotacWpfB11bCDLwd4tSW0xWOPhGLzN73rCUVxgWBKz421XnptbTqATe6k83lZz+w3xWU1Nn/ibZlF9Hp37+HMnlwdLhdPBRhBQjtPM7Zbv6H4WOasMMlaaIofJP2fOWHDBJMDYuKAOWYhGtFqWQeWqrdm7tN6r7c06XRm0cwfemJFnkA+ANDOSfIX0RlLI0hugOpNlz/+w7dxd4fc1LhAKC+2Sa0lVL+OeBnNZiS/zMkINu+Pn7m4KB7NYEFYCY/AMZPLBvZQXRb1z8kv/LEjIHQ290YJDkU9oi2PK3v30PKquIgT2HbrxUa6kkpge2wFeqaMMa4bwebWIMIUdeTsvTyzuX6V44cawVxPTcl/LLs4wbu/Oj6vhlQbsgNXz2BZWsw0uqXLxeIhhLJZgvQwvF4Fx1dSHbpPGIVI2YgHnTx5VaCaqkMqSB3/fJmWbkfA==' + ], + [ + 'FP8nUvxuyzdmtNiBUGNGa/fc+nAhO+r0d3zLk0BhWq0=', + '//2J+bbXBe7P8MCuarm3NCPQ5Ohqygp0', + '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' + ], + [ + 'JRsuFSeJvaAfcbEiLXTzds0pvd6xxDIct+FPXgVPw0Q=', + 'KQOm3CnHZZVGsn8lDDarkNjjnNIoAMWk', + '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' + ], + [ + 'ZeSeGGmfHxKiLl2hv9yMM880isU1AAd8CNfyfEQp3cc=', + 'E2dONFaiCD0bg95pHfYlegOa/WYe9ujl', + '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' + ], + [ + 'SYKtOA9PjTi14bfAE8COppwi9GfhzxpnHS7gTNPK4sc=', + 'ScHEczKqCy8OZo1IrYKgzB/G58oB/Wmd', + '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' + ], + [ + 'V7LYvg/U1sj8qI221mNURQEi6h6QvapRBZeFnzqTAWQ=', + 'uqLmbZ/BLM9c+dM0cjKmGVRQMHwAFi4A', + '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' + ], + [ + '+gMoZ6c7miiqK3BNsndPBx/D86YN94Cb6Hxt1tPH7o4=', + 'Il3hA+/NzQyYh+nsjTcD2w6++cWtM/YF', + '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' + ], + [ + 'CQbyig9aqPYg3swX/6ZhLS5DPDljtK2+EhlkD4zc2vI=', + 'xwll7k17l4p0X3mFGbBTUZqOOgzS37/M', + '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' + ], + [ + 'O0DlcNLjGZIMaYFXtwb92DM1Sldij8BjMMnqLjSGxT0=', + 'giZXcQocVlCqiV0aZ+GtYGXFAzE/q52W', + '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' + ], + [ + 'FDt4TT0aIn8/k2ko+PHnanu5mBGdTjFOkT5p6thhZ10=', + 'x1pPa0FnoEQNejzFvD9rabbSvyPSG042', + 'dlBFEF9LNhjeyH9ZFTmqe7nwPWGistRudQ5E8tzmuE3e3SFxmHMj4jU+Zll2xAF8Q7W1SKHy3lhzkm9OlUETutYKo2/Us3OhsK7+aXAScaRPYTfn/0dcgTS007xMjA67qAlPhH/BPgVknoYtvf+ik0TE74QHjwy8ZH6kCuQ5YO9bRmNn8WHn41/Gbuq4O2lAbE2UAYOcx2WTQr9bvMSHWHLBaiAOKYF/Inp7jeqFx0qe3v45o6p216stiXbI6EI37jq8d4hSyC0PoBRJHzoQ7TPGif9fFrFTNLgUg6JXJkwIvSz2SrvgDXSrTNa+c4u9KhlhNq4rEgO2kW0Rv2zlhdIEvFQMkQ1eZT1kHAE5Gk7ZvKNdz9ntkBkNmz4HJT7cZvFVjRKCZXuzOv1v8cu5EG1fD0khsx2rXGUI/XcqgX3HcT1UeLfD6fN86cS8mP7aACxD7LWKA2wI4Bc6JRD+KpKYpdGJhmQI4OYeyYAkBTqmTXhtNLmUJDMV5knze3tjHA6nGDxPG95yjM3oIr1TCAtx0V6OAdrrFDwMz92ZxGHCAjWTq0VXz2kSbB9GBZAxrdFKB1+tUTBJoHaKZPL4/5g4+TM/a1MXbffjSpU3WdWSHBoUdScURHmq+yoSMj1lnMUrK+bMMp5ivpNli5X4tTpCHNPnLsKiYxjtgkDnaiL9gY19mprfOrljzNCQz4QNNTYB7vL1pXlATs63Tvk4RsoDO4nNs9itVqmSDL83sFKRKsllwOKcGpAW1M3MJ28IEsbykDtGr2YnmhRGmJhF15FBcSXhq38nk9mEjMIx1J2ka20918FFBD8tLGMkf5IqsTLKDQ9piUfvKwFLqSPpNCNqZhtArGpkRDmRQtBX0/Xl39YnML0/DFD5bCv1U4N0DJjJRW7GTzXl93K2JiSqHbHYAuDMUA3HlEoDrmSkro8FcJpSir5ufa8cqkMCY2ZZmOcfu+b2Mkc24vxw1uyhH60l2jL3Uz+/KOn7KTJmBRKJjl4LNcV9ROTeTNNZ', + 'tDOVCHcnxMCjCHswF8YyfTzxaWasM4d6oYYJoCGVw7wUqgAYtR8Fx7azjG7/SE6+/VurAPZTJrmo7PyLpoLebfZZJ0AbWF1xDzn5rUh/ggbesN2J4KmYL9dgzhIfnoBkHPaC5VpJKwAy3sSEdLEWBVp304xop4S9TFdqD6go6x5oReirWPQmLh/Ikkdn1bcAIu7xZbGWAU/r75kkoQBDMYx9cvRVp3JBlPYG9crGItgrM0RWadlrcG4Dg1uNDVL+zAqnscxEhymFlUWvSxFiPA5YuFJDtNB+PnaS2J3AvJBZzNHprlWooCioAM4tUJoYR3qTpJrzDclXWO6nV1LEJnKXyCE1Gg/N7d5Tmrb0kYTnlSGdJN7KHRe840VV6BqXmZkCBtsGWVLWnZILm7pcEW7GPKWHa/ggQB3wWdHUkwD1EO//2ed6UUGgmrgFUAQ4y18+ybBU4MvcvzSE/kJQ5fHLgFMByzxjvWd7kB9mHWvGD/ZJUr5iP2tuRnm8f8t3gVrRr1+b3du8xYSpwKR0jdWzzxT0jT6EwUIv6RkUCoPI9uQbmyNbhL2ugWHEh3I8O3iL/Mwf15r2XA6jyBgVCPxkUXuoNA7CACbCIEwy14BS3Tvtnd7z8681RR/bNTYCh3GYj5Wb07lmOEsEHe6onO5Z9zSsUGPddbPPYMvtr/2WjhK715XEThMYB9qIACxx/UjbSdOFnZRpaIjhp+wDsgLsr476o/OWF57U/o9zdogjG37SQraY0RLKmOksSPDfnkuILri28cUQIa3LqA0Um9PIEfsX4QiNqA4ftBfzM5yBNYCJThevR1+ZJ+/Mv5DQG5uICl8ryfcTDN/85OCXfsDK0/YBMBndh6KJGF4dLha4MxdVlImFyxhECI3MnJPXYtomvLf4eE8iyz5SUASMy7iH8rfOZCspaDZSRsQ71k3Nhs4VXIDSfVks967SKIu+2mPDMlLuCOCVPUeCMdpQDORn1uSh+Qg/q40CqOdIJoO1gZe2UnrsVgAKOSRAUs1djzCCKyNUWKd9Wp/ZyA==' + ], + [ + '3WQcm+Hcb1ZoZFHSWG+zlsSYC+SM7C7coMUYDwrPIXI=', + 'iAd+OnsNsDbObkoPFujJ68b+uEScMKXy', + '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' + ], + [ + 'S9JdMUgxsyVEjyu25dQazMwHEbWECabrya8zEElq6Wg=', + '5cxrib6FjMp+L1Co7UG+CUurLM353sk8', + '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' + ] +]; diff --git a/packages/util-crypto/src/nacl/tweetnacl-secretbox.spec.ts b/packages/util-crypto/src/nacl/tweetnacl-secretbox.spec.ts new file mode 100644 index 0000000..8d924d0 --- /dev/null +++ b/packages/util-crypto/src/nacl/tweetnacl-secretbox.spec.ts @@ -0,0 +1,161 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +// Adapted from https://github.com/dchest/tweetnacl-js/blob/6a9594a35a27f9c723c5f1c107e376d1c65c23b3/test/04-secretbox.quick.js +// Adapted from https://github.com/dchest/tweetnacl-js/blob/6a9594a35a27f9c723c5f1c107e376d1c65c23b3/test/04-secretbox.js +// +// Changes made: +// - Jest-like test environment (not tape) +// - Combine "quick" and "random" tests into single file +// +// Original headers: +// +// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri. +// Public domain. +// +// Implementation derived from TweetNaCl version 20140427. +// See for details: http://tweetnacl.cr.yp.to/ + +import { stringToU8a, u8aEq } from '@pezkuwi/util'; + +import { base64Decode } from '../base64/index.js'; +import { naclSecretbox, naclSecretboxOpen } from './tweetnacl.js'; +import { TEST_DATA } from './tweetnacl-secretbox-data.spec.js'; + +describe('tweetnacl/secretbox', (): void => { + describe('tweetnacl/test/04-secretbox.quick.js', (): void => { + it('naclSecretbox and naclSecretboxOpen', (): void => { + const key = new Uint8Array(32); + const nonce = new Uint8Array(24); + + for (let i = 0; i < key.length; i++) { + key[i] = i & 0xff; + } + + for (let i = 0; i < nonce.length; i++) { + nonce[i] = (32 + i) & 0xff; + } + + const msg = stringToU8a('message to encrypt'); + const box = naclSecretbox(msg, nonce, key); + const openedMsg = naclSecretboxOpen(box, nonce, key); + + expect( + !!openedMsg && u8aEq(openedMsg, msg) + ).toEqual(true); + }); + + it('naclSecretbox.open with invalid box', (): void => { + const key = new Uint8Array(32); + const nonce = new Uint8Array(24); + + expect( + naclSecretboxOpen(new Uint8Array(0), nonce, key) + ).toBe(null); + + expect( + naclSecretboxOpen(new Uint8Array(10), nonce, key) + ).toBe(null); + + expect( + naclSecretboxOpen(new Uint8Array(100), nonce, key) + ).toBe(null); + }); + + it('naclSecretbox.open with invalid nonce', (): void => { + const key = new Uint8Array(32); + const nonce = new Uint8Array(24); + + for (let i = 0; i < nonce.length; i++) { + nonce[i] = i & 0xff; + } + + const msg = stringToU8a('message to encrypt'); + const box = naclSecretbox(msg, nonce, key); + const unbox = naclSecretboxOpen(box, nonce, key); + + expect( + !!unbox && u8aEq(unbox, msg) + ).toBe(true); + + nonce[0] = 255; + + expect( + naclSecretboxOpen(box, nonce, key) + ).toBe(null); + }); + + it('naclSecretbox.open with invalid key', (): void => { + const key = new Uint8Array(32); + + for (let i = 0; i < key.length; i++) { + key[i] = i & 0xff; + } + + const nonce = new Uint8Array(24); + const msg = stringToU8a('message to encrypt'); + const box = naclSecretbox(msg, nonce, key); + const unbox = naclSecretboxOpen(box, nonce, key); + + expect( + !!unbox && u8aEq(unbox, msg) + ).toBe(true); + + key[0] = 255; + + expect( + naclSecretboxOpen(box, nonce, key) + ).toBe(null); + }); + + it('naclSecretbox with message lengths of 0 to 1024', (): void => { + const key = new Uint8Array(32); + const nonce = new Uint8Array(24); + const fullMsg = new Uint8Array(1024); + + for (let i = 0; i < key.length; i++) { + key[i] = i & 0xff; + } + + for (let i = 0; i < fullMsg.length; i++) { + fullMsg[i] = i & 0xff; + } + + for (let i = 0; i < fullMsg.length; i++) { + const msg = fullMsg.subarray(0, i); + const box = naclSecretbox(msg, nonce, key); + const unbox = naclSecretboxOpen(box, nonce, key); + + expect( + !!unbox && u8aEq(unbox, msg) + ).toBe(true); + } + }); + }); + + describe('tweetnacl/test/04-secretbox.js', (): void => { + for (let i = 0, count = TEST_DATA.length; i < count; i++) { + const [keyBase64, nonceBase64, msgBase64, expBase64] = TEST_DATA[i]; + + it(`is ok on "${msgBase64}"`, (): void => { + const key = base64Decode(keyBase64); + const nonce = base64Decode(nonceBase64); + const msg = base64Decode(msgBase64); + const goodBox = base64Decode(expBase64); + const box = naclSecretbox(msg, nonce, key); + + expect( + u8aEq(box, goodBox) + ).toBe(true); + + const unbox = naclSecretboxOpen(goodBox, nonce, key); + + expect( + !!unbox && u8aEq(unbox, msg) + ).toBe(true); + }); + } + }); +}); diff --git a/packages/util-crypto/src/nacl/tweetnacl.ts b/packages/util-crypto/src/nacl/tweetnacl.ts new file mode 100644 index 0000000..79c2dbe --- /dev/null +++ b/packages/util-crypto/src/nacl/tweetnacl.ts @@ -0,0 +1,1159 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/* eslint-disable brace-style,camelcase,comma-spacing,curly,one-var,padding-line-between-statements,space-infix-ops */ + +// Adapted from https://github.com/dchest/tweetnacl-js/blob/6a9594a35a27f9c723c5f1c107e376d1c65c23b3/nacl.js +// +// Changes made: +// +// - Added TS types +// - Change var to let/const +// - Comment out unused functions +// - export the only box/secretbox create/open functions (these are camelCase) +// - Linting style is mostly disabled below (apart form the changes above), so should be verifyable against original +// - Inline some calls (flatten, reduce call tree) +// - Some inline let definitions on loop variables +// - It is _messy_ the unused code is commented out, not removed +// +// Original headers: +// +// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri. +// Public domain. +// +// Implementation derived from TweetNaCl version 20140427. +// See for details: http://tweetnacl.cr.yp.to/ + +// var u64 = function(h, l) { this.hi = h|0 >>> 0; this.lo = l|0 >>> 0; }; +// var gf = function(init) { +// var i, r = new Float64Array(16); +// if (init) for (i = 0; i < init.length; i++) r[i] = init[i]; +// return r; +// }; + +// // Pluggable, initialized in high-level API below. +// var randombytes = function(/* x, n */) { throw new Error('no PRNG'); }; + +// var _0 = new Uint8Array(16); +// var _9 = new Uint8Array(32); _9[0] = 9; + +// var gf0 = gf(), +// gf1 = gf([1]), +// _121665 = gf([0xdb41, 1]), +// D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]), +// D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]), +// X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]), +// Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]), +// I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]); + +function L32 (x: number, c: number): number { return (x << c) | (x >>> (32 - c)); } + +function ld32 (x: Uint8Array, i: number): number { + let u = x[i+3] & 0xff; + u = (u<<8)|(x[i+2] & 0xff); + u = (u<<8)|(x[i+1] & 0xff); + return (u<<8)|(x[i+0] & 0xff); +} + +// function dl64(x, i) { +// var h = (x[i] << 24) | (x[i+1] << 16) | (x[i+2] << 8) | x[i+3]; +// var l = (x[i+4] << 24) | (x[i+5] << 16) | (x[i+6] << 8) | x[i+7]; +// return new u64(h, l); +// } + +function st32 (x: Uint8Array, j: number, u: number): void { + for (let i = 0; i < 4; i++) { x[j+i] = u & 255; u >>>= 8; } +} + +// function ts64(x, i, u) { +// x[i] = (u.hi >> 24) & 0xff; +// x[i+1] = (u.hi >> 16) & 0xff; +// x[i+2] = (u.hi >> 8) & 0xff; +// x[i+3] = u.hi & 0xff; +// x[i+4] = (u.lo >> 24) & 0xff; +// x[i+5] = (u.lo >> 16) & 0xff; +// x[i+6] = (u.lo >> 8) & 0xff; +// x[i+7] = u.lo & 0xff; +// } + +function vn (x: Uint8Array, xi: number, y: Uint8Array, yi: number, n: number): number { + let d = 0; + for (let i = 0; i < n; i++) d |= x[xi+i]^y[yi+i]; + return (1 & ((d - 1) >>> 8)) - 1; +} + +// function crypto_verify_16 (x: Uint8Array, xi: number, y: Uint8Array, yi: number): number { +// return vn(x,xi,y,yi,16); +// } + +// function crypto_verify_32(x, xi, y, yi) { +// return vn(x,xi,y,yi,32); +// } + +function core (out: Uint8Array, inp: Uint8Array, k: Uint8Array, c: Uint8Array, h: boolean): void { + const w = new Uint32Array(16), x = new Uint32Array(16), y = new Uint32Array(16), t = new Uint32Array(4); + let i, j, m; + + for (i = 0; i < 4; i++) { + x[5*i] = ld32(c, 4*i); + x[1+i] = ld32(k, 4*i); + x[6+i] = ld32(inp, 4*i); + x[11+i] = ld32(k, 16+4*i); + } + + for (i = 0; i < 16; i++) y[i] = x[i]; + + for (i = 0; i < 20; i++) { + for (j = 0; j < 4; j++) { + for (m = 0; m < 4; m++) t[m] = x[(5*j+4*m)%16]; + t[1] ^= L32((t[0]+t[3])|0, 7); + t[2] ^= L32((t[1]+t[0])|0, 9); + t[3] ^= L32((t[2]+t[1])|0,13); + t[0] ^= L32((t[3]+t[2])|0,18); + for (m = 0; m < 4; m++) w[4*j+(j+m)%4] = t[m]; + } + for (m = 0; m < 16; m++) x[m] = w[m]; + } + + if (h) { + for (i = 0; i < 16; i++) x[i] = (x[i] + y[i]) | 0; + for (i = 0; i < 4; i++) { + x[5*i] = (x[5*i] - ld32(c, 4*i)) | 0; + x[6+i] = (x[6+i] - ld32(inp, 4*i)) | 0; + } + for (i = 0; i < 4; i++) { + st32(out,4*i,x[5*i]); + st32(out,16+4*i,x[6+i]); + } + } else { + for (i = 0; i < 16; i++) st32(out, 4 * i, (x[i] + y[i]) | 0); + } +} + +// function crypto_core_salsa20 (out: Uint8Array, inp: Uint8Array, k: Uint8Array, c: Uint8Array): number { +// core(out,inp,k,c,false); +// return 0; +// } + +// function crypto_core_hsalsa20 (out: Uint8Array, inp: Uint8Array, k: Uint8Array, c: Uint8Array): number { +// core(out,inp,k,c,true); +// return 0; +// } + +const sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]); +// "expand 32-byte k" + +function crypto_stream_salsa20_xor (c: Uint8Array, cpos: number, m: Uint8Array | null, mpos: number, b: number, n: Uint8Array, k: Uint8Array): number { + const z = new Uint8Array(16), x = new Uint8Array(64); + let u, i; + if (!b) return 0; + for (i = 0; i < 16; i++) z[i] = 0; + for (i = 0; i < 8; i++) z[i] = n[i]; + while (b >= 64) { + core(x, z, k, sigma, false); + for (i = 0; i < 64; i++) c[cpos+i] = (m?m[mpos+i]:0) ^ x[i]; + u = 1; + for (i = 8; i < 16; i++) { + u = u + (z[i] & 0xff) | 0; + z[i] = u & 0xff; + u >>>= 8; + } + b -= 64; + cpos += 64; + if (m) mpos += 64; + } + if (b > 0) { + core(x, z, k, sigma, false); + for (i = 0; i < b; i++) c[cpos+i] = (m?m[mpos+i]:0) ^ x[i]; + } + return 0; +} + +// function crypto_stream_salsa20 (c: Uint8Array, cpos: number, d: number, n: Uint8Array, k: Uint8Array): number { +// return crypto_stream_salsa20_xor(c, cpos, null, 0, d, n, k); +// } + +// function crypto_stream (c: Uint8Array, cpos: number, d: number, n: Uint8Array, k: Uint8Array): number { +// const s = new Uint8Array(32); +// crypto_core_hsalsa20(s,n,k,sigma); +// return crypto_stream_salsa20(c,cpos,d,n.subarray(16),s); +// } + +function crypto_stream_xor (c: Uint8Array, cpos: number, m: Uint8Array | null, mpos: number, d: number, n: Uint8Array, k: Uint8Array): number { + const s = new Uint8Array(32); + core(s, n, k, sigma, true); + return crypto_stream_salsa20_xor(c, cpos, m, mpos, d, n.subarray(16), s); +} + +function add1305 (h: Uint32Array, c: Uint32Array): void { + let u = 0; + for (let j = 0; j < 17; j++) { + u = (u + ((h[j] + c[j]) | 0)) | 0; + h[j] = u & 255; + u >>>= 8; + } +} + +const minusp = new Uint32Array([5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 252]); + +function crypto_onetimeauth (out: Uint8Array, outpos: number, m: Uint8Array, mpos: number, n: number, k: Uint8Array): number { + let i, j, u; + const x = new Uint32Array(17), r = new Uint32Array(17), h = new Uint32Array(17), c = new Uint32Array(17), g = new Uint32Array(17); + for (j = 0; j < 17; j++) r[j]=h[j]=0; + for (j = 0; j < 16; j++) r[j]=k[j]; + r[3]&=15; + r[4]&=252; + r[7]&=15; + r[8]&=252; + r[11]&=15; + r[12]&=252; + r[15]&=15; + + while (n > 0) { + for (j = 0; j < 17; j++) c[j] = 0; + for (j = 0; (j < 16) && (j < n); ++j) c[j] = m[mpos+j]; + c[j] = 1; + mpos += j; n -= j; + add1305(h,c); + for (i = 0; i < 17; i++) { + x[i] = 0; + for (j = 0; j < 17; j++) x[i] = (x[i] + (h[j] * ((j <= i) ? r[i - j] : ((320 * r[i + 17 - j])|0))) | 0) | 0; + } + for (i = 0; i < 17; i++) h[i] = x[i]; + u = 0; + for (j = 0; j < 16; j++) { + u = (u + h[j]) | 0; + h[j] = u & 255; + u >>>= 8; + } + u = (u + h[16]) | 0; h[16] = u & 3; + u = (5 * (u >>> 2)) | 0; + for (j = 0; j < 16; j++) { + u = (u + h[j]) | 0; + h[j] = u & 255; + u >>>= 8; + } + u = (u + h[16]) | 0; h[16] = u; + } + + for (j = 0; j < 17; j++) g[j] = h[j]; + add1305(h,minusp); + const s = (-(h[16] >>> 7) | 0); + for (j = 0; j < 17; j++) h[j] ^= s & (g[j] ^ h[j]); + + for (j = 0; j < 16; j++) c[j] = k[j + 16]; + c[16] = 0; + add1305(h,c); + for (j = 0; j < 16; j++) out[outpos+j] = h[j]; + return 0; +} + +function crypto_onetimeauth_verify (h: Uint8Array, hpos: number, m: Uint8Array, mpos: number, n: number, k: Uint8Array) { + const x = new Uint8Array(16); + crypto_onetimeauth(x,0,m,mpos,n,k); + return vn(h, hpos, x, 0, 16); +} + +function crypto_secretbox (c: Uint8Array, m: Uint8Array, d: number, n: Uint8Array, k: Uint8Array) { + if (d < 32) return -1; + crypto_stream_xor(c,0,m,0,d,n,k); + crypto_onetimeauth(c, 16, c, 32, d - 32, c); + for (let i = 0; i < 16; i++) c[i] = 0; + return 0; +} + +function crypto_secretbox_open (m: Uint8Array, c: Uint8Array, d: number, n: Uint8Array, k: Uint8Array): number { + const x = new Uint8Array(32); + if (d < 32) return -1; + crypto_stream_xor(x, 0, null, 0, 32, n, k); + if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1; + crypto_stream_xor(m,0,c,0,d,n,k); + for (let i = 0; i < 32; i++) m[i] = 0; + return 0; +} + +// function set25519(r, a) { +// var i; +// for (i = 0; i < 16; i++) r[i] = a[i]|0; +// } + +// function car25519 (o: Float64Array): void { +// let c; +// let i; +// for (i = 0; i < 16; i++) { +// o[i] += 65536; +// c = Math.floor(o[i] / 65536); +// o[(i+1)*(i<15?1:0)] += c - 1 + 37 * (c-1) * (i===15?1:0); +// o[i] -= (c * 65536); +// } +// } + +// function sel25519 (p: Float64Array, q: Float64Array, b: number): void { +// let t; +// const c = ~(b-1); +// for (let i = 0; i < 16; i++) { +// t = c & (p[i] ^ q[i]); +// p[i] ^= t; +// q[i] ^= t; +// } +// } + +// function pack25519 (o: Uint8Array, n: Float64Array): void { +// let i, j, b; +// const m = gf(), t = gf(); +// for (i = 0; i < 16; i++) t[i] = n[i]; +// car25519(t); +// car25519(t); +// car25519(t); +// for (j = 0; j < 2; j++) { +// m[0] = t[0] - 0xffed; +// for (i = 1; i < 15; i++) { +// m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1); +// m[i-1] &= 0xffff; +// } +// m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1); +// b = (m[15]>>16) & 1; +// m[14] &= 0xffff; +// sel25519(t, m, 1-b); +// } +// for (i = 0; i < 16; i++) { +// o[2*i] = t[i] & 0xff; +// o[2*i+1] = t[i]>>8; +// } +// } + +// function neq25519(a, b) { +// var c = new Uint8Array(32), d = new Uint8Array(32); +// pack25519(c, a); +// pack25519(d, b); +// return crypto_verify_32(c, 0, d, 0); +// } + +// function par25519(a) { +// var d = new Uint8Array(32); +// pack25519(d, a); +// return d[0] & 1; +// } + +// function unpack25519 (o: Float64Array, n: Uint8Array): void { +// let i; +// for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8); +// o[15] &= 0x7fff; +// } + +// function A (o: Float64Array, a: Float64Array, b: Float64Array): void { +// let i; +// for (i = 0; i < 16; i++) o[i] = (a[i] + b[i])|0; +// } + +// function Z (o: Float64Array, a: Float64Array, b: Float64Array): void { +// let i; +// for (i = 0; i < 16; i++) o[i] = (a[i] - b[i])|0; +// } + +// function M (o: Float64Array, a: Float64Array, b: Float64Array): void { +// let i, j; +// const t = new Float64Array(31); +// for (i = 0; i < 31; i++) t[i] = 0; +// for (i = 0; i < 16; i++) { +// for (j = 0; j < 16; j++) { +// t[i+j] += a[i] * b[j]; +// } +// } +// for (i = 0; i < 15; i++) { +// t[i] += 38 * t[i+16]; +// } +// for (i = 0; i < 16; i++) o[i] = t[i]; +// car25519(o); +// car25519(o); +// } + +// function S (o: Float64Array, a: Float64Array): void { +// M(o, a, a); +// } + +// function inv25519 (o: Float64Array, i: Float64Array): void { +// const c = gf(); +// let a; +// for (a = 0; a < 16; a++) c[a] = i[a]; +// for (a = 253; a >= 0; a--) { +// S(c, c); +// if (a !== 2 && a !== 4) M(c, c, i); +// } +// for (a = 0; a < 16; a++) o[a] = c[a]; +// } + +// function pow2523(o, i) { +// var c = gf(); +// var a; +// for (a = 0; a < 16; a++) c[a] = i[a]; +// for (a = 250; a >= 0; a--) { +// S(c, c); +// if(a !== 1) M(c, c, i); +// } +// for (a = 0; a < 16; a++) o[a] = c[a]; +// } + +// function crypto_scalarmult (q: Uint8Array, n: Uint8Array, p: Uint8Array): number { +// const z = new Uint8Array(32); +// const x = new Float64Array(80); +// let r, i; +// const a = gf(), b = gf(), c = gf(), d = gf(), e = gf(), f = gf(); +// for (i = 0; i < 31; i++) z[i] = n[i]; +// z[31]=(n[31]&127)|64; +// z[0]&=248; +// unpack25519(x,p); +// for (i = 0; i < 16; i++) { +// b[i]=x[i]; +// d[i]=a[i]=c[i]=0; +// } +// a[0]=d[0]=1; +// for (i=254; i>=0; --i) { +// r=(z[i>>>3]>>>(i&7))&1; +// sel25519(a,b,r); +// sel25519(c,d,r); +// A(e,a,c); +// Z(a,a,c); +// A(c,b,d); +// Z(b,b,d); +// S(d,e); +// S(f,a); +// M(a,c,a); +// M(c,b,e); +// A(e,a,c); +// Z(a,a,c); +// S(b,a); +// Z(c,d,f); +// M(a,c,_121665); +// A(a,a,d); +// M(c,c,a); +// M(a,d,f); +// M(d,b,x); +// S(b,e); +// sel25519(a,b,r); +// sel25519(c,d,r); +// } +// for (i = 0; i < 16; i++) { +// x[i+16]=a[i]; +// x[i+32]=c[i]; +// x[i+48]=b[i]; +// x[i+64]=d[i]; +// } +// const x32 = x.subarray(32); +// const x16 = x.subarray(16); +// inv25519(x32,x32); +// M(x16,x16,x32); +// pack25519(q,x16); +// return 0; +// } + +// function crypto_scalarmult_base(q, n) { +// return crypto_scalarmult(q, n, _9); +// } + +// function crypto_box_keypair(y, x) { +// randombytes(x, 32); +// return crypto_scalarmult_base(y, x); +// } + +// function crypto_box_beforenm (k: Uint8Array, y: Uint8Array, x: Uint8Array): number { +// const s = new Uint8Array(32); +// crypto_scalarmult(s, x, y); +// return crypto_core_hsalsa20(k, _0, s, sigma); +// } + +// var crypto_box_afternm = crypto_secretbox; +// var crypto_box_open_afternm = crypto_secretbox_open; + +// function crypto_box(c, m, d, n, y, x) { +// var k = new Uint8Array(32); +// crypto_box_beforenm(k, y, x); +// return crypto_box_afternm(c, m, d, n, k); +// } + +// function crypto_box_open(m, c, d, n, y, x) { +// var k = new Uint8Array(32); +// crypto_box_beforenm(k, y, x); +// return crypto_box_open_afternm(m, c, d, n, k); +// } + +// function add64() { +// var a = 0, b = 0, c = 0, d = 0, m16 = 65535, l, h, i; +// for (i = 0; i < arguments.length; i++) { +// l = arguments[i].lo; +// h = arguments[i].hi; +// a += (l & m16); b += (l >>> 16); +// c += (h & m16); d += (h >>> 16); +// } + +// b += (a >>> 16); +// c += (b >>> 16); +// d += (c >>> 16); + +// return new u64((c & m16) | (d << 16), (a & m16) | (b << 16)); +// } + +// function shr64(x, c) { +// return new u64((x.hi >>> c), (x.lo >>> c) | (x.hi << (32 - c))); +// } + +// function xor64() { +// var l = 0, h = 0, i; +// for (i = 0; i < arguments.length; i++) { +// l ^= arguments[i].lo; +// h ^= arguments[i].hi; +// } +// return new u64(h, l); +// } + +// function R(x, c) { +// var h, l, c1 = 32 - c; +// if (c < 32) { +// h = (x.hi >>> c) | (x.lo << c1); +// l = (x.lo >>> c) | (x.hi << c1); +// } else if (c < 64) { +// h = (x.lo >>> c) | (x.hi << c1); +// l = (x.hi >>> c) | (x.lo << c1); +// } +// return new u64(h, l); +// } + +// function Ch(x, y, z) { +// var h = (x.hi & y.hi) ^ (~x.hi & z.hi), +// l = (x.lo & y.lo) ^ (~x.lo & z.lo); +// return new u64(h, l); +// } + +// function Maj(x, y, z) { +// var h = (x.hi & y.hi) ^ (x.hi & z.hi) ^ (y.hi & z.hi), +// l = (x.lo & y.lo) ^ (x.lo & z.lo) ^ (y.lo & z.lo); +// return new u64(h, l); +// } + +// function Sigma0(x) { return xor64(R(x,28), R(x,34), R(x,39)); } +// function Sigma1(x) { return xor64(R(x,14), R(x,18), R(x,41)); } +// function sigma0(x) { return xor64(R(x, 1), R(x, 8), shr64(x,7)); } +// function sigma1(x) { return xor64(R(x,19), R(x,61), shr64(x,6)); } + +// var K = [ +// new u64(0x428a2f98, 0xd728ae22), new u64(0x71374491, 0x23ef65cd), +// new u64(0xb5c0fbcf, 0xec4d3b2f), new u64(0xe9b5dba5, 0x8189dbbc), +// new u64(0x3956c25b, 0xf348b538), new u64(0x59f111f1, 0xb605d019), +// new u64(0x923f82a4, 0xaf194f9b), new u64(0xab1c5ed5, 0xda6d8118), +// new u64(0xd807aa98, 0xa3030242), new u64(0x12835b01, 0x45706fbe), +// new u64(0x243185be, 0x4ee4b28c), new u64(0x550c7dc3, 0xd5ffb4e2), +// new u64(0x72be5d74, 0xf27b896f), new u64(0x80deb1fe, 0x3b1696b1), +// new u64(0x9bdc06a7, 0x25c71235), new u64(0xc19bf174, 0xcf692694), +// new u64(0xe49b69c1, 0x9ef14ad2), new u64(0xefbe4786, 0x384f25e3), +// new u64(0x0fc19dc6, 0x8b8cd5b5), new u64(0x240ca1cc, 0x77ac9c65), +// new u64(0x2de92c6f, 0x592b0275), new u64(0x4a7484aa, 0x6ea6e483), +// new u64(0x5cb0a9dc, 0xbd41fbd4), new u64(0x76f988da, 0x831153b5), +// new u64(0x983e5152, 0xee66dfab), new u64(0xa831c66d, 0x2db43210), +// new u64(0xb00327c8, 0x98fb213f), new u64(0xbf597fc7, 0xbeef0ee4), +// new u64(0xc6e00bf3, 0x3da88fc2), new u64(0xd5a79147, 0x930aa725), +// new u64(0x06ca6351, 0xe003826f), new u64(0x14292967, 0x0a0e6e70), +// new u64(0x27b70a85, 0x46d22ffc), new u64(0x2e1b2138, 0x5c26c926), +// new u64(0x4d2c6dfc, 0x5ac42aed), new u64(0x53380d13, 0x9d95b3df), +// new u64(0x650a7354, 0x8baf63de), new u64(0x766a0abb, 0x3c77b2a8), +// new u64(0x81c2c92e, 0x47edaee6), new u64(0x92722c85, 0x1482353b), +// new u64(0xa2bfe8a1, 0x4cf10364), new u64(0xa81a664b, 0xbc423001), +// new u64(0xc24b8b70, 0xd0f89791), new u64(0xc76c51a3, 0x0654be30), +// new u64(0xd192e819, 0xd6ef5218), new u64(0xd6990624, 0x5565a910), +// new u64(0xf40e3585, 0x5771202a), new u64(0x106aa070, 0x32bbd1b8), +// new u64(0x19a4c116, 0xb8d2d0c8), new u64(0x1e376c08, 0x5141ab53), +// new u64(0x2748774c, 0xdf8eeb99), new u64(0x34b0bcb5, 0xe19b48a8), +// new u64(0x391c0cb3, 0xc5c95a63), new u64(0x4ed8aa4a, 0xe3418acb), +// new u64(0x5b9cca4f, 0x7763e373), new u64(0x682e6ff3, 0xd6b2b8a3), +// new u64(0x748f82ee, 0x5defb2fc), new u64(0x78a5636f, 0x43172f60), +// new u64(0x84c87814, 0xa1f0ab72), new u64(0x8cc70208, 0x1a6439ec), +// new u64(0x90befffa, 0x23631e28), new u64(0xa4506ceb, 0xde82bde9), +// new u64(0xbef9a3f7, 0xb2c67915), new u64(0xc67178f2, 0xe372532b), +// new u64(0xca273ece, 0xea26619c), new u64(0xd186b8c7, 0x21c0c207), +// new u64(0xeada7dd6, 0xcde0eb1e), new u64(0xf57d4f7f, 0xee6ed178), +// new u64(0x06f067aa, 0x72176fba), new u64(0x0a637dc5, 0xa2c898a6), +// new u64(0x113f9804, 0xbef90dae), new u64(0x1b710b35, 0x131c471b), +// new u64(0x28db77f5, 0x23047d84), new u64(0x32caab7b, 0x40c72493), +// new u64(0x3c9ebe0a, 0x15c9bebc), new u64(0x431d67c4, 0x9c100d4c), +// new u64(0x4cc5d4be, 0xcb3e42b6), new u64(0x597f299c, 0xfc657e2a), +// new u64(0x5fcb6fab, 0x3ad6faec), new u64(0x6c44198c, 0x4a475817) +// ]; + +// function crypto_hashblocks(x, m, n) { +// var z = [], b = [], a = [], w = [], t, i, j; + +// for (i = 0; i < 8; i++) z[i] = a[i] = dl64(x, 8*i); + +// var pos = 0; +// while (n >= 128) { +// for (i = 0; i < 16; i++) w[i] = dl64(m, 8*i+pos); +// for (i = 0; i < 80; i++) { +// for (j = 0; j < 8; j++) b[j] = a[j]; +// t = add64(a[7], Sigma1(a[4]), Ch(a[4], a[5], a[6]), K[i], w[i%16]); +// b[7] = add64(t, Sigma0(a[0]), Maj(a[0], a[1], a[2])); +// b[3] = add64(b[3], t); +// for (j = 0; j < 8; j++) a[(j+1)%8] = b[j]; +// if (i%16 === 15) { +// for (j = 0; j < 16; j++) { +// w[j] = add64(w[j], w[(j+9)%16], sigma0(w[(j+1)%16]), sigma1(w[(j+14)%16])); +// } +// } +// } + +// for (i = 0; i < 8; i++) { +// a[i] = add64(a[i], z[i]); +// z[i] = a[i]; +// } + +// pos += 128; +// n -= 128; +// } + +// for (i = 0; i < 8; i++) ts64(x, 8*i, z[i]); +// return n; +// } + +// var iv = new Uint8Array([ +// 0x6a,0x09,0xe6,0x67,0xf3,0xbc,0xc9,0x08, +// 0xbb,0x67,0xae,0x85,0x84,0xca,0xa7,0x3b, +// 0x3c,0x6e,0xf3,0x72,0xfe,0x94,0xf8,0x2b, +// 0xa5,0x4f,0xf5,0x3a,0x5f,0x1d,0x36,0xf1, +// 0x51,0x0e,0x52,0x7f,0xad,0xe6,0x82,0xd1, +// 0x9b,0x05,0x68,0x8c,0x2b,0x3e,0x6c,0x1f, +// 0x1f,0x83,0xd9,0xab,0xfb,0x41,0xbd,0x6b, +// 0x5b,0xe0,0xcd,0x19,0x13,0x7e,0x21,0x79 +// ]); + +// function crypto_hash(out, m, n) { +// var h = new Uint8Array(64), x = new Uint8Array(256); +// var i, b = n; + +// for (i = 0; i < 64; i++) h[i] = iv[i]; + +// crypto_hashblocks(h, m, n); +// n %= 128; + +// for (i = 0; i < 256; i++) x[i] = 0; +// for (i = 0; i < n; i++) x[i] = m[b-n+i]; +// x[n] = 128; + +// n = 256-128*(n<112?1:0); +// x[n-9] = 0; +// ts64(x, n-8, new u64((b / 0x20000000) | 0, b << 3)); +// crypto_hashblocks(h, x, n); + +// for (i = 0; i < 64; i++) out[i] = h[i]; + +// return 0; +// } + +// function add(p, q) { +// var a = gf(), b = gf(), c = gf(), +// d = gf(), e = gf(), f = gf(), +// g = gf(), h = gf(), t = gf(); + +// Z(a, p[1], p[0]); +// Z(t, q[1], q[0]); +// M(a, a, t); +// A(b, p[0], p[1]); +// A(t, q[0], q[1]); +// M(b, b, t); +// M(c, p[3], q[3]); +// M(c, c, D2); +// M(d, p[2], q[2]); +// A(d, d, d); +// Z(e, b, a); +// Z(f, d, c); +// A(g, d, c); +// A(h, b, a); + +// M(p[0], e, f); +// M(p[1], h, g); +// M(p[2], g, f); +// M(p[3], e, h); +// } + +// function cswap(p, q, b) { +// var i; +// for (i = 0; i < 4; i++) { +// sel25519(p[i], q[i], b); +// } +// } + +// function pack(r, p) { +// var tx = gf(), ty = gf(), zi = gf(); +// inv25519(zi, p[2]); +// M(tx, p[0], zi); +// M(ty, p[1], zi); +// pack25519(r, ty); +// r[31] ^= par25519(tx) << 7; +// } + +// function scalarmult(p, q, s) { +// var b, i; +// set25519(p[0], gf0); +// set25519(p[1], gf1); +// set25519(p[2], gf1); +// set25519(p[3], gf0); +// for (i = 255; i >= 0; --i) { +// b = (s[(i/8)|0] >> (i&7)) & 1; +// cswap(p, q, b); +// add(q, p); +// add(p, p); +// cswap(p, q, b); +// } +// } + +// function scalarbase(p, s) { +// var q = [gf(), gf(), gf(), gf()]; +// set25519(q[0], X); +// set25519(q[1], Y); +// set25519(q[2], gf1); +// M(q[3], X, Y); +// scalarmult(p, q, s); +// } + +// function crypto_sign_keypair(pk, sk, seeded) { +// var d = new Uint8Array(64); +// var p = [gf(), gf(), gf(), gf()]; +// var i; + +// if (!seeded) randombytes(sk, 32); +// crypto_hash(d, sk, 32); +// d[0] &= 248; +// d[31] &= 127; +// d[31] |= 64; + +// scalarbase(p, d); +// pack(pk, p); + +// for (i = 0; i < 32; i++) sk[i+32] = pk[i]; +// return 0; +// } + +// var L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]); + +// function modL(r, x) { +// var carry, i, j, k; +// for (i = 63; i >= 32; --i) { +// carry = 0; +// for (j = i - 32, k = i - 12; j < k; ++j) { +// x[j] += carry - 16 * x[i] * L[j - (i - 32)]; +// carry = Math.floor((x[j] + 128) / 256); +// x[j] -= carry * 256; +// } +// x[j] += carry; +// x[i] = 0; +// } +// carry = 0; +// for (j = 0; j < 32; j++) { +// x[j] += carry - (x[31] >> 4) * L[j]; +// carry = x[j] >> 8; +// x[j] &= 255; +// } +// for (j = 0; j < 32; j++) x[j] -= carry * L[j]; +// for (i = 0; i < 32; i++) { +// x[i+1] += x[i] >> 8; +// r[i] = x[i] & 255; +// } +// } + +// function reduce(r) { +// var x = new Float64Array(64), i; +// for (i = 0; i < 64; i++) x[i] = r[i]; +// for (i = 0; i < 64; i++) r[i] = 0; +// modL(r, x); +// } + +// // Note: difference from C - smlen returned, not passed as argument. +// function crypto_sign(sm, m, n, sk) { +// var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64); +// var i, j, x = new Float64Array(64); +// var p = [gf(), gf(), gf(), gf()]; + +// crypto_hash(d, sk, 32); +// d[0] &= 248; +// d[31] &= 127; +// d[31] |= 64; + +// var smlen = n + 64; +// for (i = 0; i < n; i++) sm[64 + i] = m[i]; +// for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i]; + +// crypto_hash(r, sm.subarray(32), n+32); +// reduce(r); +// scalarbase(p, r); +// pack(sm, p); + +// for (i = 32; i < 64; i++) sm[i] = sk[i]; +// crypto_hash(h, sm, n + 64); +// reduce(h); + +// for (i = 0; i < 64; i++) x[i] = 0; +// for (i = 0; i < 32; i++) x[i] = r[i]; +// for (i = 0; i < 32; i++) { +// for (j = 0; j < 32; j++) { +// x[i+j] += h[i] * d[j]; +// } +// } + +// modL(sm.subarray(32), x); +// return smlen; +// } + +// function unpackneg(r, p) { +// var t = gf(), chk = gf(), num = gf(), +// den = gf(), den2 = gf(), den4 = gf(), +// den6 = gf(); + +// set25519(r[2], gf1); +// unpack25519(r[1], p); +// S(num, r[1]); +// M(den, num, D); +// Z(num, num, r[2]); +// A(den, r[2], den); + +// S(den2, den); +// S(den4, den2); +// M(den6, den4, den2); +// M(t, den6, num); +// M(t, t, den); + +// pow2523(t, t); +// M(t, t, num); +// M(t, t, den); +// M(t, t, den); +// M(r[0], t, den); + +// S(chk, r[0]); +// M(chk, chk, den); +// if (neq25519(chk, num)) M(r[0], r[0], I); + +// S(chk, r[0]); +// M(chk, chk, den); +// if (neq25519(chk, num)) return -1; + +// if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]); + +// M(r[3], r[0], r[1]); +// return 0; +// } + +// function crypto_sign_open(m, sm, n, pk) { +// var i; +// var t = new Uint8Array(32), h = new Uint8Array(64); +// var p = [gf(), gf(), gf(), gf()], +// q = [gf(), gf(), gf(), gf()]; + +// if (n < 64) return -1; + +// if (unpackneg(q, pk)) return -1; + +// for (i = 0; i < n; i++) m[i] = sm[i]; +// for (i = 0; i < 32; i++) m[i+32] = pk[i]; +// crypto_hash(h, m, n); +// reduce(h); +// scalarmult(p, q, h); + +// scalarbase(q, sm.subarray(32)); +// add(p, q); +// pack(t, p); + +// n -= 64; +// if (crypto_verify_32(sm, 0, t, 0)) { +// for (i = 0; i < n; i++) m[i] = 0; +// return -1; +// } + +// for (i = 0; i < n; i++) m[i] = sm[i + 64]; +// return n; +// } + +const crypto_secretbox_KEYBYTES = 32; +const crypto_secretbox_NONCEBYTES = 24; +const crypto_secretbox_ZEROBYTES = 32; +const crypto_secretbox_BOXZEROBYTES = 16; +// const crypto_scalarmult_BYTES = 32; +// const crypto_scalarmult_SCALARBYTES = 32; +// const crypto_box_PUBLICKEYBYTES = 32; +// const crypto_box_SECRETKEYBYTES = 32; +// const crypto_box_BEFORENMBYTES = 32; +// const crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES; +// const crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES; +// const crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES; +// const crypto_sign_BYTES = 64; +// const crypto_sign_PUBLICKEYBYTES = 32; +// const crypto_sign_SECRETKEYBYTES = 64; +// const crypto_sign_SEEDBYTES = 32; +// const crypto_hash_BYTES = 64; + +// nacl.lowlevel = { +// crypto_core_hsalsa20: crypto_core_hsalsa20, +// crypto_stream_xor: crypto_stream_xor, +// crypto_stream: crypto_stream, +// crypto_stream_salsa20_xor: crypto_stream_salsa20_xor, +// crypto_stream_salsa20: crypto_stream_salsa20, +// crypto_onetimeauth: crypto_onetimeauth, +// crypto_onetimeauth_verify: crypto_onetimeauth_verify, +// crypto_verify_16: crypto_verify_16, +// crypto_verify_32: crypto_verify_32, +// crypto_secretbox: crypto_secretbox, +// crypto_secretbox_open: crypto_secretbox_open, +// crypto_scalarmult: crypto_scalarmult, +// crypto_scalarmult_base: crypto_scalarmult_base, +// crypto_box_beforenm: crypto_box_beforenm, +// crypto_box_afternm: crypto_box_afternm, +// crypto_box: crypto_box, +// crypto_box_open: crypto_box_open, +// crypto_box_keypair: crypto_box_keypair, +// crypto_hash: crypto_hash, +// crypto_sign: crypto_sign, +// crypto_sign_keypair: crypto_sign_keypair, +// crypto_sign_open: crypto_sign_open, + +// crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES, +// crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES, +// crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES, +// crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES, +// crypto_scalarmult_BYTES: crypto_scalarmult_BYTES, +// crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES, +// crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES, +// crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES, +// crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES, +// crypto_box_NONCEBYTES: crypto_box_NONCEBYTES, +// crypto_box_ZEROBYTES: crypto_box_ZEROBYTES, +// crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES, +// crypto_sign_BYTES: crypto_sign_BYTES, +// crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES, +// crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES, +// crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES, +// crypto_hash_BYTES: crypto_hash_BYTES, + +// gf: gf, +// D: D, +// L: L, +// pack25519: pack25519, +// unpack25519: unpack25519, +// M: M, +// A: A, +// S: S, +// Z: Z, +// pow2523: pow2523, +// add: add, +// set25519: set25519, +// modL: modL, +// scalarmult: scalarmult, +// scalarbase: scalarbase, +// }; + +// /* High-level API */ + +function checkLengths (k: Uint8Array, n: Uint8Array): void { + if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size'); + if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size'); +} + +// function checkBoxLengths (pk: Uint8Array, sk: Uint8Array): void { +// if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size'); +// if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size'); +// } + +function checkArrayTypes (...args: unknown[]): void { + for (let i = 0, count = args.length; i < count; i++) { + if (!(args[i] instanceof Uint8Array)) + throw new TypeError('unexpected type, use Uint8Array'); + } +} + +// function cleanup(arr) { +// for (var i = 0; i < arr.length; i++) arr[i] = 0; +// } + +// nacl.randomBytes = function(n) { +// var b = new Uint8Array(n); +// randombytes(b, n); +// return b; +// }; + +export function naclSecretbox (msg: Uint8Array, nonce: Uint8Array, key: Uint8Array): Uint8Array { + checkArrayTypes(msg, nonce, key); + checkLengths(key, nonce); + const m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length); + const c = new Uint8Array(m.length); + for (let i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i]; + crypto_secretbox(c, m, m.length, nonce, key); + return c.subarray(crypto_secretbox_BOXZEROBYTES); +} + +export function naclSecretboxOpen (box: Uint8Array, nonce: Uint8Array, key: Uint8Array): Uint8Array | null { + checkArrayTypes(box, nonce, key); + checkLengths(key, nonce); + const c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length); + const m = new Uint8Array(c.length); + for (let i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i]; + if (c.length < 32) return null; + if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return null; + return m.subarray(crypto_secretbox_ZEROBYTES); +} + +// nacl.secretbox.keyLength = crypto_secretbox_KEYBYTES; +// nacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES; +// nacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES; + +// nacl.scalarMult = function(n, p) { +// checkArrayTypes(n, p); +// if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size'); +// if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size'); +// var q = new Uint8Array(crypto_scalarmult_BYTES); +// crypto_scalarmult(q, n, p); +// return q; +// }; + +// nacl.scalarMult.base = function(n) { +// checkArrayTypes(n); +// if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size'); +// var q = new Uint8Array(crypto_scalarmult_BYTES); +// crypto_scalarmult_base(q, n); +// return q; +// }; + +// nacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES; +// nacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES; + +// nacl.box = function (msg, nonce, publicKey, secretKey) { +// var k = nacl.box.before(publicKey, secretKey); +// return nacl.secretbox(msg, nonce, k); +// }; + +// nacl.box.before = function(publicKey, secretKey) { +// checkArrayTypes(publicKey, secretKey); +// checkBoxLengths(publicKey, secretKey); +// var k = new Uint8Array(crypto_box_BEFORENMBYTES); +// crypto_box_beforenm(k, publicKey, secretKey); +// return k; +// }; + +// nacl.box.after = nacl.secretbox; + +// nacl.box.open = function (msg, nonce, publicKey, secretKey) { +// var k = nacl.box.before(publicKey, secretKey); +// return nacl.secretbox.open(msg, nonce, k); +// }; + +// nacl.box.open.after = nacl.secretbox.open; + +// nacl.box.keyPair = function() { +// var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES); +// var sk = new Uint8Array(crypto_box_SECRETKEYBYTES); +// crypto_box_keypair(pk, sk); +// return {publicKey: pk, secretKey: sk}; +// }; + +// nacl.box.keyPair.fromSecretKey = function(secretKey) { +// checkArrayTypes(secretKey); +// if (secretKey.length !== crypto_box_SECRETKEYBYTES) +// throw new Error('bad secret key size'); +// var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES); +// crypto_scalarmult_base(pk, secretKey); +// return {publicKey: pk, secretKey: new Uint8Array(secretKey)}; +// }; + +// nacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES; +// nacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES; +// nacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES; +// nacl.box.nonceLength = crypto_box_NONCEBYTES; +// nacl.box.overheadLength = nacl.secretbox.overheadLength; + +// nacl.sign = function(msg, secretKey) { +// checkArrayTypes(msg, secretKey); +// if (secretKey.length !== crypto_sign_SECRETKEYBYTES) +// throw new Error('bad secret key size'); +// var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length); +// crypto_sign(signedMsg, msg, msg.length, secretKey); +// return signedMsg; +// }; + +// nacl.sign.open = function(signedMsg, publicKey) { +// checkArrayTypes(signedMsg, publicKey); +// if (publicKey.length !== crypto_sign_PUBLICKEYBYTES) +// throw new Error('bad public key size'); +// var tmp = new Uint8Array(signedMsg.length); +// var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey); +// if (mlen < 0) return null; +// var m = new Uint8Array(mlen); +// for (var i = 0; i < m.length; i++) m[i] = tmp[i]; +// return m; +// }; + +// nacl.sign.detached = function(msg, secretKey) { +// var signedMsg = nacl.sign(msg, secretKey); +// var sig = new Uint8Array(crypto_sign_BYTES); +// for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i]; +// return sig; +// }; + +// nacl.sign.detached.verify = function(msg, sig, publicKey) { +// checkArrayTypes(msg, sig, publicKey); +// if (sig.length !== crypto_sign_BYTES) +// throw new Error('bad signature size'); +// if (publicKey.length !== crypto_sign_PUBLICKEYBYTES) +// throw new Error('bad public key size'); +// var sm = new Uint8Array(crypto_sign_BYTES + msg.length); +// var m = new Uint8Array(crypto_sign_BYTES + msg.length); +// var i; +// for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i]; +// for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i]; +// return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0); +// }; + +// nacl.sign.keyPair = function() { +// var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES); +// var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES); +// crypto_sign_keypair(pk, sk); +// return {publicKey: pk, secretKey: sk}; +// }; + +// nacl.sign.keyPair.fromSecretKey = function(secretKey) { +// checkArrayTypes(secretKey); +// if (secretKey.length !== crypto_sign_SECRETKEYBYTES) +// throw new Error('bad secret key size'); +// var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES); +// for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i]; +// return {publicKey: pk, secretKey: new Uint8Array(secretKey)}; +// }; + +// nacl.sign.keyPair.fromSeed = function(seed) { +// checkArrayTypes(seed); +// if (seed.length !== crypto_sign_SEEDBYTES) +// throw new Error('bad seed size'); +// var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES); +// var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES); +// for (var i = 0; i < 32; i++) sk[i] = seed[i]; +// crypto_sign_keypair(pk, sk, true); +// return {publicKey: pk, secretKey: sk}; +// }; + +// nacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES; +// nacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES; +// nacl.sign.seedLength = crypto_sign_SEEDBYTES; +// nacl.sign.signatureLength = crypto_sign_BYTES; + +// nacl.hash = function(msg) { +// checkArrayTypes(msg); +// var h = new Uint8Array(crypto_hash_BYTES); +// crypto_hash(h, msg, msg.length); +// return h; +// }; + +// nacl.hash.hashLength = crypto_hash_BYTES; + +// nacl.verify = function(x, y) { +// checkArrayTypes(x, y); +// // Zero length arguments are considered not equal. +// if (x.length === 0 || y.length === 0) return false; +// if (x.length !== y.length) return false; +// return (vn(x, 0, y, 0, x.length) === 0) ? true : false; +// }; + +// nacl.setPRNG = function(fn) { +// randombytes = fn; +// }; diff --git a/packages/util-crypto/src/networks.ts b/packages/util-crypto/src/networks.ts new file mode 100644 index 0000000..ffe4df5 --- /dev/null +++ b/packages/util-crypto/src/networks.ts @@ -0,0 +1,5 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +// Don't use a export * since we don't want to duplicate packageInfo +export { allNetworks, availableNetworks, selectableNetworks } from '@pezkuwi/networks'; diff --git a/packages/util-crypto/src/packageDetect.ts b/packages/util-crypto/src/packageDetect.ts new file mode 100644 index 0000000..b49f67e --- /dev/null +++ b/packages/util-crypto/src/packageDetect.ts @@ -0,0 +1,14 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +// Do not edit, auto-generated by @polkadot/dev +// (packageInfo imports will be kept as-is, user-editable) + +import { packageInfo as netInfo } from '@pezkuwi/networks/packageInfo'; +import { detectPackage } from '@pezkuwi/util'; +import { packageInfo as utilInfo } from '@pezkuwi/util/packageInfo'; +import { packageInfo as randomInfo } from '@pezkuwi/x-randomvalues'; + +import { packageInfo } from './packageInfo.js'; + +detectPackage(packageInfo, null, [netInfo, randomInfo, utilInfo]); diff --git a/packages/util-crypto/src/packageInfo.ts b/packages/util-crypto/src/packageInfo.ts new file mode 100644 index 0000000..0cbe82a --- /dev/null +++ b/packages/util-crypto/src/packageInfo.ts @@ -0,0 +1,6 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +// Do not edit, auto-generated by @polkadot/dev + +export const packageInfo = { name: '@polkadot/util-crypto', path: 'auto', type: 'auto', version: '14.0.1' }; diff --git a/packages/util-crypto/src/pbkdf2/encode.spec.ts b/packages/util-crypto/src/pbkdf2/encode.spec.ts new file mode 100644 index 0000000..f3fb3ab --- /dev/null +++ b/packages/util-crypto/src/pbkdf2/encode.spec.ts @@ -0,0 +1,54 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { u8aEq, u8aToHex } from '@pezkuwi/util'; +import { waitReady } from '@pezkuwi/wasm-crypto'; + +import { randomAsU8a } from '../random/asU8a.js'; +import { perfWasm } from '../test/index.js'; +import { pbkdf2Encode } from './index.js'; + +const KNOWN_SALT = new Uint8Array([ + 1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32 +]); +const TEST_PASSWORD = 'test password'; + +describe('pbkdf2Encode', (): void => { + beforeEach(async (): Promise => { + await waitReady(); + }); + + for (const rounds of [256, 1024, 2048] as const) { + it(`has equivalent Wasm & JS results (${rounds} rounds)`, (): void => { + const salt = randomAsU8a(); + + expect( + u8aEq( + pbkdf2Encode(TEST_PASSWORD, salt, rounds, false).password, + pbkdf2Encode(TEST_PASSWORD, salt, rounds, true).password + ) + ).toBe(true); + }); + } + + for (const onlyJs of [false, true]) { + describe(`onlyJs=${(onlyJs && 'true') || 'false'}`, (): void => { + it('creates known iterations', (): void => { + expect( + u8aToHex(pbkdf2Encode(TEST_PASSWORD, KNOWN_SALT, 2048, onlyJs).password) + ).toEqual( + '0x600ba9ad65e4294d112e028fdad5dd8fce0a6a6e6b89fb36ed006785ccc3b3aec46831b3105c24237293e6cfa1a0ef6717c113f87ff9237a3f73d210adfa6634' + ); + }); + }); + } + + perfWasm('pbkdf2Encode', 8, (input, onlyJs) => + pbkdf2Encode(input, input, undefined, onlyJs) + ); +}); diff --git a/packages/util-crypto/src/pbkdf2/encode.ts b/packages/util-crypto/src/pbkdf2/encode.ts new file mode 100644 index 0000000..e59f42e --- /dev/null +++ b/packages/util-crypto/src/pbkdf2/encode.ts @@ -0,0 +1,29 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import { pbkdf2 as pbkdf2Js } from '@noble/hashes/pbkdf2'; +import { sha512 } from '@noble/hashes/sha512'; + +import { hasBigInt, u8aToU8a } from '@pezkuwi/util'; +import { isReady, pbkdf2 } from '@pezkuwi/wasm-crypto'; + +import { randomAsU8a } from '../random/asU8a.js'; + +interface Result { + password: Uint8Array; + rounds: number; + salt: Uint8Array; +} + +export function pbkdf2Encode (passphrase?: string | Uint8Array, salt: Uint8Array = randomAsU8a(), rounds = 2048, onlyJs?: boolean): Result { + const u8aPass = u8aToU8a(passphrase); + const u8aSalt = u8aToU8a(salt); + + return { + password: !hasBigInt || (!onlyJs && isReady()) + ? pbkdf2(u8aPass, u8aSalt, rounds) + : pbkdf2Js(sha512, u8aPass, u8aSalt, { c: rounds, dkLen: 64 }), + rounds, + salt + }; +} diff --git a/packages/util-crypto/src/pbkdf2/index.ts b/packages/util-crypto/src/pbkdf2/index.ts new file mode 100644 index 0000000..5409aeb --- /dev/null +++ b/packages/util-crypto/src/pbkdf2/index.ts @@ -0,0 +1,4 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +export { pbkdf2Encode } from './encode.js'; diff --git a/packages/util-crypto/src/random/asHex.spec.ts b/packages/util-crypto/src/random/asHex.spec.ts new file mode 100644 index 0000000..66a0aa2 --- /dev/null +++ b/packages/util-crypto/src/random/asHex.spec.ts @@ -0,0 +1,38 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { isHex } from '@pezkuwi/util'; + +import { randomAsHex } from './index.js'; + +describe('randomAsBuffer', (): void => { + it('generated results does not match', (): void => { + expect( + randomAsHex() + ).not.toEqual( + randomAsHex() + ); + }); + + it('is a valid hex number', (): void => { + expect( + isHex( + randomAsHex() + ) + ).toEqual(true); + }); + + it('generates 32 bytes by default', (): void => { + expect( + randomAsHex() + ).toHaveLength(32 * 2 + 2); + }); + + it('generates with the supplied length', (): void => { + expect( + randomAsHex(66) + ).toHaveLength(66 * 2 + 2); + }); +}); diff --git a/packages/util-crypto/src/random/asNumber.spec.ts b/packages/util-crypto/src/random/asNumber.spec.ts new file mode 100644 index 0000000..6e4525a --- /dev/null +++ b/packages/util-crypto/src/random/asNumber.spec.ts @@ -0,0 +1,16 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { randomAsNumber } from './index.js'; + +describe('randomAsNumber', (): void => { + it('generates subsequent non-matching numbers', (): void => { + expect( + randomAsNumber() + ).not.toEqual( + randomAsNumber() + ); + }); +}); diff --git a/packages/util-crypto/src/random/asNumber.ts b/packages/util-crypto/src/random/asNumber.ts new file mode 100644 index 0000000..a078eda --- /dev/null +++ b/packages/util-crypto/src/random/asNumber.ts @@ -0,0 +1,28 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import { BN, hexToBn } from '@pezkuwi/util'; + +import { randomAsHex } from './asU8a.js'; + +const BN_53 = new BN(0b11111111111111111111111111111111111111111111111111111); + +/** + * @name randomAsNumber + * @summary Creates a random number from random bytes. + * @description + * Returns a random number generated from the secure bytes. + * @example + *
+ * + * ```javascript + * import { randomAsNumber } from '@pezkuwi/util-crypto'; + * + * randomAsNumber(); // => + * ``` + */ +export function randomAsNumber (): number { + return hexToBn( + randomAsHex(8) + ).and(BN_53).toNumber(); +} diff --git a/packages/util-crypto/src/random/asU8a.spec.ts b/packages/util-crypto/src/random/asU8a.spec.ts new file mode 100644 index 0000000..a9f4bde --- /dev/null +++ b/packages/util-crypto/src/random/asU8a.spec.ts @@ -0,0 +1,36 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { isU8a } from '@pezkuwi/util'; + +import { randomAsU8a } from './index.js'; + +describe('randomAsU8a', (): void => { + it('generates a Uint8Array', (): void => { + expect( + isU8a(randomAsU8a()) + ).toEqual(true); + }); + + it('generated results does not match', (): void => { + expect( + randomAsU8a() + ).not.toEqual( + randomAsU8a() + ); + }); + + it('generates 32 bytes by default', (): void => { + expect( + randomAsU8a() + ).toHaveLength(32); + }); + + it('generates with the suuplied length', (): void => { + expect( + randomAsU8a(66) + ).toHaveLength(66); + }); +}); diff --git a/packages/util-crypto/src/random/asU8a.ts b/packages/util-crypto/src/random/asU8a.ts new file mode 100644 index 0000000..bd8337f --- /dev/null +++ b/packages/util-crypto/src/random/asU8a.ts @@ -0,0 +1,30 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import { getRandomValues } from '@pezkuwi/x-randomvalues'; + +import { createAsHex } from '../helpers.js'; + +/** + * @name randomAsU8a + * @summary Creates a Uint8Array filled with random bytes. + * @description + * Returns a `Uint8Array` with the specified (optional) length filled with random bytes. + * @example + *
+ * + * ```javascript + * import { randomAsU8a } from '@pezkuwi/util-crypto'; + * + * randomAsU8a(); // => Uint8Array([...]) + * ``` + */ +export function randomAsU8a (length = 32): Uint8Array { + return getRandomValues(new Uint8Array(length)); +} + +/** + * @name randomAsHex + * @description Creates a hex string filled with random bytes. + */ +export const randomAsHex = /*#__PURE__*/ createAsHex(randomAsU8a); diff --git a/packages/util-crypto/src/random/index.ts b/packages/util-crypto/src/random/index.ts new file mode 100644 index 0000000..71be66f --- /dev/null +++ b/packages/util-crypto/src/random/index.ts @@ -0,0 +1,9 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/** + * @summary Returns a sequence of secure random bytes in a variety of formats + */ + +export { randomAsNumber } from './asNumber.js'; +export { randomAsHex, randomAsU8a } from './asU8a.js'; diff --git a/packages/util-crypto/src/scrypt/defaults.ts b/packages/util-crypto/src/scrypt/defaults.ts new file mode 100644 index 0000000..fbe250b --- /dev/null +++ b/packages/util-crypto/src/scrypt/defaults.ts @@ -0,0 +1,19 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { ScryptParams } from './types.js'; + +export const ALLOWED_PARAMS: ScryptParams[] = [ + { N: 1 << 13, p: 10, r: 8 }, + { N: 1 << 14, p: 5, r: 8 }, + { N: 1 << 15, p: 3, r: 8 }, + { N: 1 << 15, p: 1, r: 8 }, + { N: 1 << 16, p: 2, r: 8 }, + { N: 1 << 17, p: 1, r: 8 } +]; + +export const DEFAULT_PARAMS: ScryptParams = { + N: 1 << 17, + p: 1, + r: 8 +}; diff --git a/packages/util-crypto/src/scrypt/encode.spec.ts b/packages/util-crypto/src/scrypt/encode.spec.ts new file mode 100644 index 0000000..fd60619 --- /dev/null +++ b/packages/util-crypto/src/scrypt/encode.spec.ts @@ -0,0 +1,43 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { waitReady } from '@pezkuwi/wasm-crypto'; + +import { perfWasm } from '../test/index.js'; +import { DEFAULT_PARAMS } from './defaults.js'; +import { scryptEncode } from './index.js'; + +// eslint-disable-next-line jest/no-export +export const KNOWN_TEST = 'testing, 123'; + +// eslint-disable-next-line jest/no-export +export const KNOWN_PASS = new Uint8Array([225, 18, 85, 30, 46, 178, 200, 63, 147, 225, 37, 46, 88, 224, 151, 132, 48, 206, 104, 234, 120, 112, 243, 198, 92, 52, 101, 127, 242, 22, 116, 55, 74, 29, 17, 197, 38, 191, 128, 39, 255, 119, 175, 113, 180, 252, 171, 10, 78, 93, 226, 7, 166, 120, 99, 198, 225, 158, 107, 132, 226, 73, 129, 35]); + +// eslint-disable-next-line jest/no-export +export const KNOWN_SALT = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8]); + +describe('scryptEncode', (): void => { + beforeEach(async (): Promise => { + await waitReady(); + }); + + for (const onlyJs of [false, true]) { + describe(`onlyJs=${(onlyJs && 'true') || 'false'}`, (): void => { + it('generates a known output', (): void => { + expect( + scryptEncode(KNOWN_TEST, KNOWN_SALT, undefined, onlyJs) + ).toEqual({ + params: DEFAULT_PARAMS, + password: KNOWN_PASS, + salt: KNOWN_SALT + }); + }); + }); + } + + perfWasm('scryptEncode', 4, (input, onlyJs) => + scryptEncode(input, input, undefined, onlyJs) + ); +}); diff --git a/packages/util-crypto/src/scrypt/encode.ts b/packages/util-crypto/src/scrypt/encode.ts new file mode 100644 index 0000000..d6b6faf --- /dev/null +++ b/packages/util-crypto/src/scrypt/encode.ts @@ -0,0 +1,30 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { ScryptParams } from './types.js'; + +import { scrypt as scryptJs } from '@noble/hashes/scrypt'; + +import { hasBigInt, objectSpread, u8aToU8a } from '@pezkuwi/util'; +import { isReady, scrypt } from '@pezkuwi/wasm-crypto'; + +import { randomAsU8a } from '../random/asU8a.js'; +import { DEFAULT_PARAMS } from './defaults.js'; + +interface Result { + params: ScryptParams, + password: Uint8Array; + salt: Uint8Array; +} + +export function scryptEncode (passphrase?: string | Uint8Array, salt = randomAsU8a(), params = DEFAULT_PARAMS, onlyJs?: boolean): Result { + const u8a = u8aToU8a(passphrase); + + return { + params, + password: !hasBigInt || (!onlyJs && isReady()) + ? scrypt(u8a, salt, Math.log2(params.N), params.r, params.p) + : scryptJs(u8a, salt, objectSpread({ dkLen: 64 }, params)), + salt + }; +} diff --git a/packages/util-crypto/src/scrypt/fromU8a.ts b/packages/util-crypto/src/scrypt/fromU8a.ts new file mode 100644 index 0000000..dc49014 --- /dev/null +++ b/packages/util-crypto/src/scrypt/fromU8a.ts @@ -0,0 +1,44 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { ScryptParams } from './types.js'; + +import { u8aToBn } from '@pezkuwi/util'; + +import { BN_LE_OPTS } from '../bn.js'; +import { ALLOWED_PARAMS } from './defaults.js'; + +interface Result { + params: ScryptParams, + salt: Uint8Array; +} + +export function scryptFromU8a (data: Uint8Array): Result { + if (!(data instanceof Uint8Array)) { + throw new Error('Expected input to be a Uint8Array'); + } + + // Ensure the input is exactly 44 bytes: 32 for salt + 3 * 4 for N, p, r + if (data.length < 32 + 12) { + throw new Error(`Invalid input length: expected 44 bytes, found ${data.length}`); + } + + const salt = data.subarray(0, 32); + const N = u8aToBn(data.subarray(32, 36), BN_LE_OPTS).toNumber(); + const p = u8aToBn(data.subarray(36, 40), BN_LE_OPTS).toNumber(); + const r = u8aToBn(data.subarray(40, 44), BN_LE_OPTS).toNumber(); + + if (N > (1 << 20) || p > 4 || r > 16) { + throw new Error('Scrypt parameters exceed safe limits'); + } + + const isAllowed = ALLOWED_PARAMS.some((preset) => + preset.N === N && preset.p === p && preset.r === r + ); + + if (!isAllowed) { + throw new Error('Invalid injected scrypt params found'); + } + + return { params: { N, p, r }, salt }; +} diff --git a/packages/util-crypto/src/scrypt/index.ts b/packages/util-crypto/src/scrypt/index.ts new file mode 100644 index 0000000..982f463 --- /dev/null +++ b/packages/util-crypto/src/scrypt/index.ts @@ -0,0 +1,6 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +export { scryptEncode } from './encode.js'; +export { scryptFromU8a } from './fromU8a.js'; +export { scryptToU8a } from './toU8a.js'; diff --git a/packages/util-crypto/src/scrypt/toU8a.ts b/packages/util-crypto/src/scrypt/toU8a.ts new file mode 100644 index 0000000..5fb2bff --- /dev/null +++ b/packages/util-crypto/src/scrypt/toU8a.ts @@ -0,0 +1,17 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { ScryptParams } from './types.js'; + +import { bnToU8a, u8aConcat } from '@pezkuwi/util'; + +import { BN_LE_32_OPTS } from '../bn.js'; + +export function scryptToU8a (salt: Uint8Array, { N, p, r }: ScryptParams): Uint8Array { + return u8aConcat( + salt, + bnToU8a(N, BN_LE_32_OPTS), + bnToU8a(p, BN_LE_32_OPTS), + bnToU8a(r, BN_LE_32_OPTS) + ); +} diff --git a/packages/util-crypto/src/scrypt/types.ts b/packages/util-crypto/src/scrypt/types.ts new file mode 100644 index 0000000..6de57cd --- /dev/null +++ b/packages/util-crypto/src/scrypt/types.ts @@ -0,0 +1,9 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/** The params that control scrypt generation */ +export interface ScryptParams { + N: number; + p: number; + r: number; +} diff --git a/packages/util-crypto/src/secp256k1/compress.spec.ts b/packages/util-crypto/src/secp256k1/compress.spec.ts new file mode 100644 index 0000000..a1d6af0 --- /dev/null +++ b/packages/util-crypto/src/secp256k1/compress.spec.ts @@ -0,0 +1,47 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { hexToU8a } from '@pezkuwi/util'; +import { waitReady } from '@pezkuwi/wasm-crypto'; + +import { perfWasm } from '../test/index.js'; +import { secp256k1Compress } from './index.js'; + +describe('secp256k1Compress', (): void => { + beforeEach(async (): Promise => { + await waitReady(); + }); + + for (const onlyJs of [false, true]) { + describe(`onlyJs=${(onlyJs && 'true') || 'false'}`, (): void => { + it('returns a compressed key as-is', (): void => { + expect( + secp256k1Compress( + hexToU8a('0x03b9dc646dd71118e5f7fda681ad9eca36eb3ee96f344f582fbe7b5bcdebb13077'), + onlyJs + ) + ).toEqual( + hexToU8a('0x03b9dc646dd71118e5f7fda681ad9eca36eb3ee96f344f582fbe7b5bcdebb13077') + ); + }); + + it('compresses a known key', (): void => { + expect( + secp256k1Compress( + hexToU8a('0x04b9dc646dd71118e5f7fda681ad9eca36eb3ee96f344f582fbe7b5bcdebb1307763fe926c273235fd979a134076d00fd1683cbd35868cb485d4a3a640e52184af'), + onlyJs + ) + ).toEqual( + hexToU8a('0x03b9dc646dd71118e5f7fda681ad9eca36eb3ee96f344f582fbe7b5bcdebb13077') + ); + }); + }); + } + + perfWasm('secp256k1Compress', 100000, (input, onlyJs) => secp256k1Compress(input, onlyJs), [[ + hexToU8a('0x04b9dc646dd71118e5f7fda681ad9eca36eb3ee96f344f582fbe7b5bcdebb1307763fe926c273235fd979a134076d00fd1683cbd35868cb485d4a3a640e52184af') + ]] + ); +}); diff --git a/packages/util-crypto/src/secp256k1/compress.ts b/packages/util-crypto/src/secp256k1/compress.ts new file mode 100644 index 0000000..996612d --- /dev/null +++ b/packages/util-crypto/src/secp256k1/compress.ts @@ -0,0 +1,21 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import { secp256k1 } from '@noble/curves/secp256k1'; + +import { hasBigInt } from '@pezkuwi/util'; +import { isReady, secp256k1Compress as wasm } from '@pezkuwi/wasm-crypto'; + +export function secp256k1Compress (publicKey: Uint8Array, onlyJs?: boolean): Uint8Array { + if (![33, 65].includes(publicKey.length)) { + throw new Error(`Invalid publicKey provided, received ${publicKey.length} bytes input`); + } + + if (publicKey.length === 33) { + return publicKey; + } + + return !hasBigInt || (!onlyJs && isReady()) + ? wasm(publicKey) + : secp256k1.ProjectivePoint.fromHex(publicKey).toRawBytes(true); +} diff --git a/packages/util-crypto/src/secp256k1/deriveHard.ts b/packages/util-crypto/src/secp256k1/deriveHard.ts new file mode 100644 index 0000000..97a8a1d --- /dev/null +++ b/packages/util-crypto/src/secp256k1/deriveHard.ts @@ -0,0 +1,17 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import { compactAddLength, isU8a, stringToU8a, u8aConcat } from '@pezkuwi/util'; + +import { blake2AsU8a } from '../blake2/asU8a.js'; + +const HDKD = compactAddLength(stringToU8a('Secp256k1HDKD')); + +export function secp256k1DeriveHard (seed: Uint8Array, chainCode: Uint8Array): Uint8Array { + if (!isU8a(chainCode) || chainCode.length !== 32) { + throw new Error('Invalid chainCode passed to derive'); + } + + // NOTE This is specific to the Substrate HDD derivation, so always use the blake2 hasher + return blake2AsU8a(u8aConcat(HDKD, seed, chainCode), 256); +} diff --git a/packages/util-crypto/src/secp256k1/expand.spec.ts b/packages/util-crypto/src/secp256k1/expand.spec.ts new file mode 100644 index 0000000..69248c3 --- /dev/null +++ b/packages/util-crypto/src/secp256k1/expand.spec.ts @@ -0,0 +1,47 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { hexToU8a } from '@pezkuwi/util'; +import { waitReady } from '@pezkuwi/wasm-crypto'; + +import { perfWasm } from '../test/index.js'; +import { secp256k1Expand } from './index.js'; + +describe('secp256k1Expand', (): void => { + beforeEach(async (): Promise => { + await waitReady(); + }); + + for (const onlyJs of [false, true]) { + describe(`onlyJs=${(onlyJs && 'true') || 'false'}`, (): void => { + it('expands a known key', (): void => { + expect( + secp256k1Expand( + hexToU8a('0x03b9dc646dd71118e5f7fda681ad9eca36eb3ee96f344f582fbe7b5bcdebb13077'), + onlyJs + ) + ).toEqual( + hexToU8a('0xb9dc646dd71118e5f7fda681ad9eca36eb3ee96f344f582fbe7b5bcdebb1307763fe926c273235fd979a134076d00fd1683cbd35868cb485d4a3a640e52184af') + ); + }); + + it('expands a known full key', (): void => { + expect( + secp256k1Expand( + hexToU8a('0x04b9dc646dd71118e5f7fda681ad9eca36eb3ee96f344f582fbe7b5bcdebb1307763fe926c273235fd979a134076d00fd1683cbd35868cb485d4a3a640e52184af'), + onlyJs + ) + ).toEqual( + hexToU8a('0xb9dc646dd71118e5f7fda681ad9eca36eb3ee96f344f582fbe7b5bcdebb1307763fe926c273235fd979a134076d00fd1683cbd35868cb485d4a3a640e52184af') + ); + }); + }); + } + + perfWasm('secp256k1Expand', 2000, (input, onlyJs) => secp256k1Expand(input, onlyJs), [[ + hexToU8a('0x03b9dc646dd71118e5f7fda681ad9eca36eb3ee96f344f582fbe7b5bcdebb13077') + ]] + ); +}); diff --git a/packages/util-crypto/src/secp256k1/expand.ts b/packages/util-crypto/src/secp256k1/expand.ts new file mode 100644 index 0000000..f5f66cb --- /dev/null +++ b/packages/util-crypto/src/secp256k1/expand.ts @@ -0,0 +1,30 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import { secp256k1 } from '@noble/curves/secp256k1'; + +import { bnToU8a, hasBigInt, u8aConcat } from '@pezkuwi/util'; +import { isReady, secp256k1Expand as wasm } from '@pezkuwi/wasm-crypto'; + +import { BN_BE_256_OPTS } from '../bn.js'; + +export function secp256k1Expand (publicKey: Uint8Array, onlyJs?: boolean): Uint8Array { + if (![33, 65].includes(publicKey.length)) { + throw new Error(`Invalid publicKey provided, received ${publicKey.length} bytes input`); + } + + if (publicKey.length === 65) { + return publicKey.subarray(1); + } + + if (!hasBigInt || (!onlyJs && isReady())) { + return wasm(publicKey).subarray(1); + } + + const { px, py } = secp256k1.ProjectivePoint.fromHex(publicKey); + + return u8aConcat( + bnToU8a(px, BN_BE_256_OPTS), + bnToU8a(py, BN_BE_256_OPTS) + ); +} diff --git a/packages/util-crypto/src/secp256k1/hasher.spec.ts b/packages/util-crypto/src/secp256k1/hasher.spec.ts new file mode 100644 index 0000000..873eb68 --- /dev/null +++ b/packages/util-crypto/src/secp256k1/hasher.spec.ts @@ -0,0 +1,24 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { hasher } from './hasher.js'; + +describe('hasher', (): void => { + it('creates a blake2 hash', (): void => { + expect( + hasher('blake2', 'abc') + ).toEqual( + new Uint8Array([189, 221, 129, 60, 99, 66, 57, 114, 49, 113, 239, 63, 238, 152, 87, 155, 148, 150, 78, 59, 177, 203, 62, 66, 114, 98, 200, 192, 104, 213, 35, 25]) + ); + }); + + it('creates a keccak hash', (): void => { + expect( + hasher('keccak', 'abc') + ).toEqual( + new Uint8Array([78, 3, 101, 122, 234, 69, 169, 79, 199, 212, 123, 168, 38, 200, 214, 103, 192, 209, 230, 227, 58, 100, 160, 54, 236, 68, 245, 143, 161, 45, 108, 69]) + ); + }); +}); diff --git a/packages/util-crypto/src/secp256k1/hasher.ts b/packages/util-crypto/src/secp256k1/hasher.ts new file mode 100644 index 0000000..8e738bd --- /dev/null +++ b/packages/util-crypto/src/secp256k1/hasher.ts @@ -0,0 +1,13 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { HashType } from './types.js'; + +import { blake2AsU8a } from '../blake2/index.js'; +import { keccakAsU8a } from '../keccak/index.js'; + +export function hasher (hashType: HashType, data: Uint8Array | string, onlyJs?: boolean): Uint8Array { + return hashType === 'keccak' + ? keccakAsU8a(data, undefined, onlyJs) + : blake2AsU8a(data, undefined, undefined, onlyJs); +} diff --git a/packages/util-crypto/src/secp256k1/index.ts b/packages/util-crypto/src/secp256k1/index.ts new file mode 100644 index 0000000..9751584 --- /dev/null +++ b/packages/util-crypto/src/secp256k1/index.ts @@ -0,0 +1,10 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +export { secp256k1Compress } from './compress.js'; +export { secp256k1Expand } from './expand.js'; +export { secp256k1PairFromSeed } from './pair/fromSeed.js'; +export { secp256k1Recover } from './recover.js'; +export { secp256k1Sign } from './sign.js'; +export { secp256k1PrivateKeyTweakAdd } from './tweakAdd.js'; +export { secp256k1Verify } from './verify.js'; diff --git a/packages/util-crypto/src/secp256k1/pair/fromSeed.spec.ts b/packages/util-crypto/src/secp256k1/pair/fromSeed.spec.ts new file mode 100644 index 0000000..78e1dd0 --- /dev/null +++ b/packages/util-crypto/src/secp256k1/pair/fromSeed.spec.ts @@ -0,0 +1,75 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { hexToU8a, u8aToHex } from '@pezkuwi/util'; +import { waitReady } from '@pezkuwi/wasm-crypto'; + +import { mnemonicToMiniSecret } from '../../mnemonic/index.js'; +import { perfWasm } from '../../test/index.js'; +import { secp256k1PairFromSeed } from '../index.js'; + +// mnemonic, secret, public, account_id +type Test = [string, string, string, string]; + +const tests: Test[] = [ + [ + 'life fee table ahead modify maximum dumb such tobacco boss dry nurse', + '0xf2360e871c830d397fe221382b503f07ddd8763df81a94bb2504390a2fb91f59', + '0x036b0aa6beab469dd2b748a0ff5ddbe3d13df1e15c9d28a2aa057212994e127bea', + '0xae8e8fcacbaeb607bcdf0bbd7e615f2b4ef484ee54f19d68a7393fb6db2dd9cd' + ], + [ + 'tide survey cradle cover column ugly author wait eye state elder blame', + '0x5385355a5118ec732b9dbcf1668ba21db38b07cf79082dafa9a7cc4b52e4abb0', + '0x03929e4f93cdad265751ad8f6365185d8e937610d19b510400f5867d542d60a313', + '0xf80ea815da66c42f870b687e1530770d5a7936ae81a147b009506d85bd6d621c' + ], + [ + 'laugh fish flee cake approve butter april dynamic myth license ticket lobster', + '0x83ec65cf9a8a7442d808aef6f8987599f1ba3be880769bb3a20621b13adbd476', + '0x0388299e4cfaa33d180a026bd54a46ad98df129a131320a9d2fd6f80e64bc3db39', + '0x35036238dd195f4c2169379354bda6cba5746f67bde03ef59a77a4cea80729bc' + ], + [ + 'animal thing fork recipe exotic pilot inquiry pledge obey slab obtain reveal', + '0x0fd50580eb5a58b0eee60c77656dffa50094b539262366f1227d3babfd7343e5', + '0x036edc954685ad89f0a23b0fb1eb2b9c3a8600eee9091c758426dfb2bc7889a7c3', + '0x2a94b10d1f28810dc4628e7e424b2d08bd3d17fb08f9416d112f17e86c8fa77c' + ] +]; + +describe('secp256k1PairFromSeed', (): void => { + beforeEach(async (): Promise => { + await waitReady(); + }); + + const TEST = hexToU8a('0x4380de832af797688026ce24f85204d508243f201650c1a134929e5458b7fbae'); + const RESULT = { + publicKey: hexToU8a('0x03fd8c74f795ced92064b86191cb2772b1e3a0947740aa0a5a6e379592471fd85b'), + secretKey: hexToU8a('0x4380de832af797688026ce24f85204d508243f201650c1a134929e5458b7fbae') + }; + + for (const onlyJs of [false, true]) { + describe(`onlyJs=${(onlyJs && 'true') || 'false'}`, (): void => { + it('generates a valid publicKey/secretKey pair (u8a)', (): void => { + expect(secp256k1PairFromSeed(TEST, onlyJs)).toEqual(RESULT); + }); + + tests.forEach(([mnemonic, secretKey, publicKey], index): void => { + it(`creates valid against known (${index})`, (): void => { + const seed = mnemonicToMiniSecret(mnemonic); + const pair = secp256k1PairFromSeed(seed, onlyJs); + + expect(u8aToHex(pair.secretKey)).toEqual(secretKey); + expect(u8aToHex(pair.publicKey)).toEqual(publicKey); + }); + }); + }); + } + + perfWasm('secp256k1PairFromSeed', 500, (input, onlyJs) => + secp256k1PairFromSeed(input, onlyJs) + ); +}); diff --git a/packages/util-crypto/src/secp256k1/pair/fromSeed.ts b/packages/util-crypto/src/secp256k1/pair/fromSeed.ts new file mode 100644 index 0000000..584adf4 --- /dev/null +++ b/packages/util-crypto/src/secp256k1/pair/fromSeed.ts @@ -0,0 +1,42 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { Keypair } from '../../types.js'; + +import { secp256k1 } from '@noble/curves/secp256k1'; + +import { hasBigInt, u8aEmpty } from '@pezkuwi/util'; +import { isReady, secp256k1FromSeed } from '@pezkuwi/wasm-crypto'; + +/** + * @name secp256k1PairFromSeed + * @description Returns a object containing a `publicKey` & `secretKey` generated from the supplied seed. + */ +export function secp256k1PairFromSeed (seed: Uint8Array, onlyJs?: boolean): Keypair { + if (seed.length !== 32) { + throw new Error('Expected valid 32-byte private key as a seed'); + } + + if (!hasBigInt || (!onlyJs && isReady())) { + const full = secp256k1FromSeed(seed); + const publicKey = full.slice(32); + + // There is an issue with the secp256k1 when running in an ASM.js environment where + // it seems that the lazy static section yields invalid results on the _first_ run. + // If this happens, fail outright, we cannot allow invalid return values + // https://github.com/polkadot-js/wasm/issues/307 + if (u8aEmpty(publicKey)) { + throw new Error('Invalid publicKey generated from WASM interface'); + } + + return { + publicKey, + secretKey: full.slice(0, 32) + }; + } + + return { + publicKey: secp256k1.getPublicKey(seed, true), + secretKey: seed + }; +} diff --git a/packages/util-crypto/src/secp256k1/recover.spec.ts b/packages/util-crypto/src/secp256k1/recover.spec.ts new file mode 100644 index 0000000..8dc2f8d --- /dev/null +++ b/packages/util-crypto/src/secp256k1/recover.spec.ts @@ -0,0 +1,35 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { u8aToHex, u8aToU8a } from '@pezkuwi/util'; +import { waitReady } from '@pezkuwi/wasm-crypto'; + +import { keccakAsU8a } from '../keccak/index.js'; +import { perfWasm } from '../test/index.js'; +import { secp256k1Recover } from './index.js'; + +const sig = u8aToU8a('0x7505f2880114da51b3f5d535f8687953c0ab9af4ab81e592eaebebf53b728d2b6dfd9b5bcd70fee412b1f31360e7c2774009305cb84fc50c1d0ff8034dfa5fff'); +const msg = u8aToU8a('0xa30b64ce1eedf409c8afb801d72c05234e64849ea538c15dd3c8cf4ffcf166c9'); + +describe('secp256k1Recover', (): void => { + beforeEach(async (): Promise => { + await waitReady(); + }); + + for (const onlyJs of [false, true]) { + describe(`onlyJs=${(onlyJs && 'true') || 'false'}`, (): void => { + it('recovers a publicKey', (): void => { + const pubKey = '0x93a9fc7154c6da3c826415df01eb0e37fb4da4b0'; + const res = keccakAsU8a(secp256k1Recover(msg, sig, 0, undefined, onlyJs)); + + expect(u8aToHex(res.subarray(-20))).toEqual(pubKey); + }); + }); + } + + perfWasm('secp256k1Recover', 200, (_, onlyJs) => + secp256k1Recover(msg, sig, 0, undefined, onlyJs) + ); +}); diff --git a/packages/util-crypto/src/secp256k1/recover.ts b/packages/util-crypto/src/secp256k1/recover.ts new file mode 100644 index 0000000..cc042eb --- /dev/null +++ b/packages/util-crypto/src/secp256k1/recover.ts @@ -0,0 +1,36 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { HashType } from './types.js'; + +import { secp256k1 } from '@noble/curves/secp256k1'; + +import { hasBigInt, u8aToU8a } from '@pezkuwi/util'; +import { isReady, secp256k1Recover as wasm } from '@pezkuwi/wasm-crypto'; + +import { secp256k1Compress } from './compress.js'; +import { secp256k1Expand } from './expand.js'; + +/** + * @name secp256k1Recover + * @description Recovers a publicKey from the supplied signature + */ +export function secp256k1Recover (msgHash: string | Uint8Array, signature: string | Uint8Array, recovery: number, hashType: HashType = 'blake2', onlyJs?: boolean): Uint8Array { + const sig = u8aToU8a(signature).subarray(0, 64); + const msg = u8aToU8a(msgHash); + const publicKey = !hasBigInt || (!onlyJs && isReady()) + ? wasm(msg, sig, recovery) + : secp256k1.Signature + .fromCompact(sig) + .addRecoveryBit(recovery) + .recoverPublicKey(msg) + .toRawBytes(); + + if (!publicKey) { + throw new Error('Unable to recover publicKey from signature'); + } + + return hashType === 'keccak' + ? secp256k1Expand(publicKey, onlyJs) + : secp256k1Compress(publicKey, onlyJs); +} diff --git a/packages/util-crypto/src/secp256k1/sign.spec.ts b/packages/util-crypto/src/secp256k1/sign.spec.ts new file mode 100644 index 0000000..7f57c6a --- /dev/null +++ b/packages/util-crypto/src/secp256k1/sign.spec.ts @@ -0,0 +1,39 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { hexToU8a } from '@pezkuwi/util'; +import { waitReady } from '@pezkuwi/wasm-crypto'; + +import { perfWasm } from '../test/index.js'; +import { secp256k1PairFromSeed, secp256k1Sign } from './index.js'; + +const pair = secp256k1PairFromSeed(hexToU8a('0x4380de832af797688026ce24f85204d508243f201650c1a134929e5458b7fbae')); +const msg = hexToU8a('0xa30b64ce1eedf409c8afb801d72c05234e64849ea538c15dd3c8cf4ffcf166c9'); + +describe('sign', (): void => { + beforeEach(async (): Promise => { + await waitReady(); + }); + + for (const onlyJs of [false, true]) { + describe(`onlyJs=${(onlyJs && 'true') || 'false'}`, (): void => { + it('generates a known signature', (): void => { + expect( + secp256k1Sign(msg, pair, undefined, onlyJs) + ).toEqual(hexToU8a( + // from elliptic, this is - 0xdf92f73d9f060cefacf187b5414491cb992998ace017fa48839b5cda3e264ba8c4efa521361678d9b8582744d77aa4b8d886d7380b7808a683174afad9c4700300 + // libsecp256k1 & @noble/hashes do agree here... + '0xdf92f73d9f060cefacf187b5414491cb992998ace017fa48839b5cda3e264ba83b105adec9e9872647a7d8bb28855b45e22805aea3d097953cbb1391f671d13e01' + )); + }); + }); + } + + // since the libsecp256k1 signatures don't match (but can be verified), we + // do both signing and verification here (checking the extracted key) + perfWasm('secp256k1Sign', 1000, (_, onlyJs) => + secp256k1Sign(msg, pair, undefined, onlyJs) + ); +}); diff --git a/packages/util-crypto/src/secp256k1/sign.ts b/packages/util-crypto/src/secp256k1/sign.ts new file mode 100644 index 0000000..c70d607 --- /dev/null +++ b/packages/util-crypto/src/secp256k1/sign.ts @@ -0,0 +1,37 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { Keypair } from '../types.js'; +import type { HashType } from './types.js'; + +import { secp256k1 } from '@noble/curves/secp256k1'; + +import { bnToU8a, hasBigInt, u8aConcat } from '@pezkuwi/util'; +import { isReady, secp256k1Sign as wasm } from '@pezkuwi/wasm-crypto'; + +import { BN_BE_256_OPTS } from '../bn.js'; +import { hasher } from './hasher.js'; + +/** + * @name secp256k1Sign + * @description Returns message signature of `message`, using the supplied pair + */ +export function secp256k1Sign (message: Uint8Array | string, { secretKey }: Partial, hashType: HashType = 'blake2', onlyJs?: boolean): Uint8Array { + if (secretKey?.length !== 32) { + throw new Error('Expected valid secp256k1 secretKey, 32-bytes'); + } + + const data = hasher(hashType, message, onlyJs); + + if (!hasBigInt || (!onlyJs && isReady())) { + return wasm(data, secretKey); + } + + const signature = secp256k1.sign(data, secretKey, { lowS: true }); + + return u8aConcat( + bnToU8a(signature.r, BN_BE_256_OPTS), + bnToU8a(signature.s, BN_BE_256_OPTS), + new Uint8Array([signature.recovery || 0]) + ); +} diff --git a/packages/util-crypto/src/secp256k1/signVerify.spec.ts b/packages/util-crypto/src/secp256k1/signVerify.spec.ts new file mode 100644 index 0000000..1a7478d --- /dev/null +++ b/packages/util-crypto/src/secp256k1/signVerify.spec.ts @@ -0,0 +1,94 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import '../bundleInit.js'; + +import { stringToU8a } from '@pezkuwi/util'; + +import { randomAsU8a } from '../random/asU8a.js'; +import { hasher } from './hasher.js'; +import { secp256k1Expand, secp256k1PairFromSeed, secp256k1Sign, secp256k1Verify } from './index.js'; + +const MESSAGE = stringToU8a('this is a message'); + +describe('sign and verify', (): void => { + it('verify message signature', (): void => { + const address = '0x59f587c045d4d4e9aa1016eae43770fc0551df8a385027723342753a876aeef0'; + const sig = '0x92fcacf0946bbd10b31dfe16d567ed1d3014e81007dd9e5256e19c0f07eacc1643b151ca29e449a765e16a7ce59b88d800467d6b3412d30ea8ad22307a59664b00'; + const msg = stringToU8a('secp256k1'); + + expect(secp256k1Verify(msg, sig, address)).toEqual(true); + }); + + it('has 65-byte signatures', (): void => { + const pair = secp256k1PairFromSeed(randomAsU8a()); + + expect(secp256k1Sign(MESSAGE, pair)).toHaveLength(65); + }); + + it('signs/verifies a message by random key (blake2)', (): void => { + const pair = secp256k1PairFromSeed(randomAsU8a()); + const signature = secp256k1Sign(MESSAGE, pair); + const address = hasher('blake2', pair.publicKey); + + expect(secp256k1Verify(MESSAGE, signature, address)).toEqual(true); + }); + + it('signs/verifies a message by random key (keccak)', (): void => { + const pair = secp256k1PairFromSeed(randomAsU8a()); + const signature = secp256k1Sign(MESSAGE, pair, 'keccak'); + const address = hasher('keccak', secp256k1Expand(pair.publicKey)); + + expect(secp256k1Verify(MESSAGE, signature, address, 'keccak')).toEqual(true); + }); + + it('fails verification on hasher mismatches', (): void => { + const pair = secp256k1PairFromSeed(randomAsU8a()); + const signature = secp256k1Sign(MESSAGE, pair, 'keccak'); + const address = hasher('keccak', secp256k1Expand(pair.publicKey)); + + expect(secp256k1Verify(MESSAGE, signature, address, 'blake2')).toEqual(false); + }); + + it('works over a range of random keys (blake2)', (): void => { + for (let i = 0; i < 256; i++) { + const pair = secp256k1PairFromSeed(randomAsU8a()); + + try { + expect( + secp256k1Verify( + MESSAGE, + secp256k1Sign(MESSAGE, pair, 'blake2'), + hasher('blake2', pair.publicKey), + 'blake2' + ) + ).toEqual(true); + } catch (error) { + console.error(`blake2 failed on #${i}`); + throw error; + } + } + }, 120000); + + it('works over a range of random keys (keccak)', (): void => { + for (let i = 0; i < 256; i++) { + const pair = secp256k1PairFromSeed(randomAsU8a()); + + try { + expect( + secp256k1Verify( + MESSAGE, + secp256k1Sign(MESSAGE, pair, 'keccak'), + hasher('keccak', secp256k1Expand(pair.publicKey)), + 'keccak' + ) + ).toEqual(true); + } catch (error) { + console.error(`keccak failed on #${i}`); + throw error; + } + } + }, 120000); +}); diff --git a/packages/util-crypto/src/secp256k1/tweakAdd.spec.ts b/packages/util-crypto/src/secp256k1/tweakAdd.spec.ts new file mode 100644 index 0000000..a55610a --- /dev/null +++ b/packages/util-crypto/src/secp256k1/tweakAdd.spec.ts @@ -0,0 +1,35 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { secp256k1PrivateKeyTweakAdd } from './tweakAdd.js'; + +describe('TweakAdd', (): void => { + it('fails for wrong array length', (): void => { + const A = new Uint8Array([0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1]); + const B = new Uint8Array([3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3]); + + expect( + () => secp256k1PrivateKeyTweakAdd(A, B) + ).toThrow(/Expected tweak to be an Uint8Array/); + }); + + for (const onlyBn of [false, true]) { + describe(`onlyBn=${(onlyBn && 'true') || 'false'}`, (): void => { + it('succeeds for a simple case', (): void => { + const A = new Uint8Array([0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1]); + const B = new Uint8Array([3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3]); + + expect( + secp256k1PrivateKeyTweakAdd(A, B, onlyBn) + ).toEqual(new Uint8Array([ + 3, 4, 3, 4, 3, 4, 3, 4, 3, + 4, 3, 4, 3, 4, 3, 4, 3, 4, + 3, 4, 3, 4, 3, 4, 3, 4, 3, + 4, 3, 4, 3, 4 + ])); + }); + }); + } +}); diff --git a/packages/util-crypto/src/secp256k1/tweakAdd.ts b/packages/util-crypto/src/secp256k1/tweakAdd.ts new file mode 100644 index 0000000..2615508 --- /dev/null +++ b/packages/util-crypto/src/secp256k1/tweakAdd.ts @@ -0,0 +1,65 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import { _0n, BN, bnToU8a, hasBigInt, isU8a, nToU8a, u8aToBigInt } from '@pezkuwi/util'; +import { BigInt } from '@pezkuwi/x-bigint'; + +import { BN_BE_256_OPTS, BN_BE_OPTS } from '../bn.js'; + +// pre-defined curve param as lifted form elliptic +// https://github.com/indutny/elliptic/blob/e71b2d9359c5fe9437fbf46f1f05096de447de57/lib/elliptic/curves.js#L182 +const N = 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141'.replace(/ /g, ''); +const N_BI = BigInt(`0x${N}`); +const N_BN = new BN(N, 'hex'); + +function addBi (seckey: Uint8Array, tweak: Uint8Array): Uint8Array { + let res = u8aToBigInt(tweak, BN_BE_OPTS); + + if (res >= N_BI) { + throw new Error('Tweak parameter is out of range'); + } + + res += u8aToBigInt(seckey, BN_BE_OPTS); + + if (res >= N_BI) { + res -= N_BI; + } + + if (res === _0n) { + throw new Error('Invalid resulting private key'); + } + + return nToU8a(res, BN_BE_256_OPTS); +} + +function addBn (seckey: Uint8Array, tweak: Uint8Array): Uint8Array { + const res = new BN(tweak); + + if (res.cmp(N_BN) >= 0) { + throw new Error('Tweak parameter is out of range'); + } + + res.iadd(new BN(seckey)); + + if (res.cmp(N_BN) >= 0) { + res.isub(N_BN); + } + + if (res.isZero()) { + throw new Error('Invalid resulting private key'); + } + + return bnToU8a(res, BN_BE_256_OPTS); +} + +export function secp256k1PrivateKeyTweakAdd (seckey: Uint8Array, tweak: Uint8Array, onlyBn?: boolean): Uint8Array { + if (!isU8a(seckey) || seckey.length !== 32) { + throw new Error('Expected seckey to be an Uint8Array with length 32'); + } else if (!isU8a(tweak) || tweak.length !== 32) { + throw new Error('Expected tweak to be an Uint8Array with length 32'); + } + + return !hasBigInt || onlyBn + ? addBn(seckey, tweak) + : addBi(seckey, tweak); +} diff --git a/packages/util-crypto/src/secp256k1/types.ts b/packages/util-crypto/src/secp256k1/types.ts new file mode 100644 index 0000000..1861f34 --- /dev/null +++ b/packages/util-crypto/src/secp256k1/types.ts @@ -0,0 +1,4 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +export type HashType = 'blake2' | 'keccak'; diff --git a/packages/util-crypto/src/secp256k1/verify.spec.ts b/packages/util-crypto/src/secp256k1/verify.spec.ts new file mode 100644 index 0000000..ac0b7f2 --- /dev/null +++ b/packages/util-crypto/src/secp256k1/verify.spec.ts @@ -0,0 +1,81 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import '../bundleInit.js'; + +import { hexToU8a } from '@pezkuwi/util'; +import { waitReady } from '@pezkuwi/wasm-crypto'; + +import { perfWasm } from '../test/index.js'; +import { hasher } from './hasher.js'; +import { secp256k1PairFromSeed, secp256k1Verify } from './index.js'; + +const message = 'Pay KSMs to the Kusama account:88dc3417d5058ec4b4503e0c12ea1a0a89be200fe98922423d4334014fa6b0ee'; + +describe('secp256k1Verify', (): void => { + beforeEach(async (): Promise => { + await waitReady(); + }); + + for (const onlyJs of [true]) { + describe(`onlyJs=${(onlyJs && 'true') || 'false'}`, (): void => { + it('validates known ETH against address', (): void => { + expect( + secp256k1Verify( + `\x19Ethereum Signed Message:\n${message.length.toString()}${message}`, + '0x55bd020bdbbdc02de34e915effc9b18a99002f4c29f64e22e8dcbb69e722ea6c28e1bb53b9484063fbbfd205e49dcc1f620929f520c9c4c3695150f05a28f52a01', + '0x002309df96687e44280bb72c3818358faeeb699c', + 'keccak', + onlyJs + ) + ).toEqual(true); + }); + + for (const isPublic of [false, true]) { + describe(`validation against known, isPublic=${(isPublic && 'true') || 'false'}`, (): void => { + const pair = secp256k1PairFromSeed(hexToU8a('0x4380de832af797688026ce24f85204d508243f201650c1a134929e5458b7fbae')); + const msg = hexToU8a('0xa30b64ce1eedf409c8afb801d72c05234e64849ea538c15dd3c8cf4ffcf166c9'); + const addr = isPublic + ? pair.publicKey + : hasher('blake2', pair.publicKey, onlyJs); + + it('signature from JS', (): void => { + expect( + secp256k1Verify( + msg, + '0xdf92f73d9f060cefacf187b5414491cb992998ace017fa48839b5cda3e264ba8c4efa521361678d9b8582744d77aa4b8d886d7380b7808a683174afad9c4700300', + addr, + 'blake2', + onlyJs + ) + ).toEqual(true); + }); + + it('signature from wasm', (): void => { + expect( + secp256k1Verify( + msg, + '0xdf92f73d9f060cefacf187b5414491cb992998ace017fa48839b5cda3e264ba83b105adec9e9872647a7d8bb28855b45e22805aea3d097953cbb1391f671d13e01', + addr, + 'blake2', + onlyJs + ) + ).toEqual(true); + }); + }); + } + }); + } + + perfWasm('secp256k1Verify', 100, (_, onlyJs) => + secp256k1Verify( + `\x19Ethereum Signed Message:\n${message.length.toString()}${message}`, + '0x55bd020bdbbdc02de34e915effc9b18a99002f4c29f64e22e8dcbb69e722ea6c28e1bb53b9484063fbbfd205e49dcc1f620929f520c9c4c3695150f05a28f52a01', + '0x002309df96687e44280bb72c3818358faeeb699c', + 'keccak', + onlyJs + ) + ); +}); diff --git a/packages/util-crypto/src/secp256k1/verify.ts b/packages/util-crypto/src/secp256k1/verify.ts new file mode 100644 index 0000000..a6802b4 --- /dev/null +++ b/packages/util-crypto/src/secp256k1/verify.ts @@ -0,0 +1,32 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { HashType } from './types.js'; + +import { u8aEq, u8aToU8a } from '@pezkuwi/util'; + +import { hasher } from './hasher.js'; +import { secp256k1Recover } from './recover.js'; + +/** + * @name secp256k1Verify + * @description Verifies the signature of `message`, using the supplied pair + */ +export function secp256k1Verify (msgHash: string | Uint8Array, signature: string | Uint8Array, address: string | Uint8Array, hashType: HashType = 'blake2', onlyJs?: boolean): boolean { + const sig = u8aToU8a(signature); + + if (sig.length !== 65) { + throw new Error(`Expected signature with 65 bytes, ${sig.length} found instead`); + } + + const publicKey = secp256k1Recover(hasher(hashType, msgHash), sig, sig[64], hashType, onlyJs); + const signerAddr = hasher(hashType, publicKey, onlyJs); + const inputAddr = u8aToU8a(address); + + // for Ethereum (keccak) the last 20 bytes is the address + return u8aEq(publicKey, inputAddr) || ( + hashType === 'keccak' + ? u8aEq(signerAddr.slice(-20), inputAddr.slice(-20)) + : u8aEq(signerAddr, inputAddr) + ); +} diff --git a/packages/util-crypto/src/sha/asU8a.ts b/packages/util-crypto/src/sha/asU8a.ts new file mode 100644 index 0000000..eaea3f0 --- /dev/null +++ b/packages/util-crypto/src/sha/asU8a.ts @@ -0,0 +1,30 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import { sha256 as sha256Js } from '@noble/hashes/sha256'; +import { sha512 as sha512Js } from '@noble/hashes/sha512'; + +import { sha256, sha512 } from '@pezkuwi/wasm-crypto'; + +import { createBitHasher, createDualHasher } from '../helpers.js'; + +/** + * @name shaAsU8a + * @summary Creates a sha Uint8Array from the input. + */ +export const shaAsU8a = /*#__PURE__*/ createDualHasher( + { 256: sha256, 512: sha512 }, + { 256: sha256Js, 512: sha512Js } +); + +/** + * @name sha256AsU8a + * @summary Creates a sha256 Uint8Array from the input. + */ +export const sha256AsU8a = /*#__PURE__*/ createBitHasher(256, shaAsU8a); + +/** + * @name sha512AsU8a + * @summary Creates a sha512 Uint8Array from the input. + */ +export const sha512AsU8a = /*#__PURE__*/ createBitHasher(512, shaAsU8a); diff --git a/packages/util-crypto/src/sha/asU8a256.spec.ts b/packages/util-crypto/src/sha/asU8a256.spec.ts new file mode 100644 index 0000000..3a0cd38 --- /dev/null +++ b/packages/util-crypto/src/sha/asU8a256.spec.ts @@ -0,0 +1,55 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { hexToU8a } from '@pezkuwi/util'; +import { waitReady } from '@pezkuwi/wasm-crypto'; + +import { perfWasm } from '../test/index.js'; +import { sha256AsU8a } from './index.js'; + +const TESTS = [ + { + input: '0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', + output: '0x5df6e0e2761359d30a8275058e299fcc0381534545f55cf43e41983f5d4c9456' + }, + { + input: '0x7941cb07924fdc7b710e11d98d82850e89566e1c3cb980517ffe4b430f86dfd5', + output: '0xe668668fa102ccd4d3cf50e4472be8426e7dc52d6d355bee8c5e2177d1de81f7' + }, + { + input: '0x5d9a905bc3ca7c153623af0a05231960eb3f5bdd5b8b7b55ede8b2deac689d65', + output: '0x6721bc38e80d03f4f45f1544819d17e0c33674eb6efcddf6c6192cd78194dd9f' + }, + { + input: '0xb0cd6528ae4d5baf7c6f0d202e7f372b6488d22b2a5bd72f794f8f1e6031b31f', + output: '0x353f5a030af27885aed3571cd9e2cac9f4331c51d31cef496a586496aec32256' + }, + { + input: '0x841267bd4110e1b634e17cd019abc6ae4f9a6dd097fb063000c1615a643b5463', + output: '0x8174a30d921978e7055516189872cca737b49468c6bcf7fdfe59d4a54c489a1f' + } +]; + +describe('sha256AsU8a', (): void => { + beforeEach(async (): Promise => { + await waitReady(); + }); + + for (const onlyJs of [false, true]) { + describe(`onlyJs=${(onlyJs && 'true') || 'false'}`, (): void => { + for (const { input, output } of TESTS) { + it(`creates known sha-256 hash, ${output}`, (): void => { + expect( + sha256AsU8a(hexToU8a(input), onlyJs) + ).toEqual(hexToU8a(output)); + }); + } + }); + } + + perfWasm('sha256AsU8a', 128000, (input, onlyJs) => + sha256AsU8a(input, onlyJs) + ); +}); diff --git a/packages/util-crypto/src/sha/asU8a512.spec.ts b/packages/util-crypto/src/sha/asU8a512.spec.ts new file mode 100644 index 0000000..2638375 --- /dev/null +++ b/packages/util-crypto/src/sha/asU8a512.spec.ts @@ -0,0 +1,33 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { waitReady } from '@pezkuwi/wasm-crypto'; + +import { perfWasm } from '../test/index.js'; +import { sha512AsU8a } from './index.js'; + +describe('sha512AsU8a', (): void => { + beforeEach(async (): Promise => { + await waitReady(); + }); + + for (const onlyJs of [false, true]) { + describe(`onlyJs=${(onlyJs && 'true') || 'false'}`, (): void => { + it('creates a sha-512 hash', (): void => { + expect( + sha512AsU8a(Uint8Array.from([0x61, 0x62, 0x63, 0x64]), onlyJs) + ).toEqual( + Uint8Array.from([ + 216, 2, 47, 32, 96, 173, 110, 253, 41, 122, 183, 61, 204, 83, 85, 201, 178, 20, 5, 75, 13, 23, 118, 161, 54, 166, 105, 210, 106, 125, 59, 20, 247, 58, 160, 208, 235, 255, 25, 238, 51, 51, 104, 240, 22, 75, 100, 25, 169, 109, 164, 158, 62, 72, 23, 83, 231, 233, 107, 113, 107, 220, 203, 111 + ]) + ); + }); + }); + } + + perfWasm('sha512AsU8a', 64000, (input, onlyJs) => + sha512AsU8a(input, onlyJs) + ); +}); diff --git a/packages/util-crypto/src/sha/index.ts b/packages/util-crypto/src/sha/index.ts new file mode 100644 index 0000000..4569e45 --- /dev/null +++ b/packages/util-crypto/src/sha/index.ts @@ -0,0 +1,8 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/** + * @summary Implements Sha-256/512 hashing functions for a variety of input and outputs + */ + +export { sha256AsU8a, sha512AsU8a, shaAsU8a } from './asU8a.js'; diff --git a/packages/util-crypto/src/signature/index.ts b/packages/util-crypto/src/signature/index.ts new file mode 100644 index 0000000..a36aef0 --- /dev/null +++ b/packages/util-crypto/src/signature/index.ts @@ -0,0 +1,8 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/** + * @summary Utilities for working with signatures + */ + +export { signatureVerify } from './verify.js'; diff --git a/packages/util-crypto/src/signature/verify.spec.ts b/packages/util-crypto/src/signature/verify.spec.ts new file mode 100644 index 0000000..e80b463 --- /dev/null +++ b/packages/util-crypto/src/signature/verify.spec.ts @@ -0,0 +1,230 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { hexToU8a, stringToU8a, u8aConcat, u8aToHex, u8aWrapBytes } from '@pezkuwi/util'; +import { waitReady } from '@pezkuwi/wasm-crypto'; + +import { decodeAddress } from '../address/index.js'; +import { secp256k1Sign } from '../secp256k1/sign.js'; +import { signatureVerify } from './index.js'; + +const ADDR_ED = 'DxN4uvzwPzJLtn17yew6jEffPhXQfdKHTp2brufb98vGbPN'; +const ADDR_SR = 'EK1bFgKm2FsghcttHT7TB7rNyXApFgs9fCbijMGQNyFGBQm'; +const ADDR_SR_WRAP = 'J9nD3s7zssCX7bion1xctAF6xcVexcpy2uwy4jTm9JL8yuK'; +const ADDR_EC = 'XyFVXiGaHxoBhXZkSh6NS2rjFyVaVNUo5UiZDqZbuSfUdji'; +const ADDR_ET = '0x54Dab85EE2c7b9F7421100d7134eFb5DfA4239bF'; +const MESSAGE = 'hello world'; +const SIG_ED = '0x299d3bf4c8bb51af732f8067b3a3015c0862a5ff34721749d8ed6577ea2708365d1c5f76bd519009971e41156f12c70abc2533837ceb3bad9a05a99ab923de06'; +const SIG_SR = '0xca01419b5a17219f7b78335658cab3b126db523a5df7be4bfc2bef76c2eb3b1dcf4ca86eb877d0a6cf6df12db5995c51d13b00e005d053b892bd09c594434288'; +const SIG_SR_WRAP = '0x84b6afb1c8e54bbcb3f4872baf172580e21310e9387a53742627d6652d121447fa406b82805ed3184fb7bd519175cc9f99f283f97954d95cf966ee164df85489'; +const SIG_EC = '0x994638ee586d2c5dbd9bacacbc35d9b7e9018de8f7892f00c900db63bc57b1283e2ee7bc51a9b1c1dae121ac4f4b9e2a41cd1d6bf4bb3e24d7fed6faf6d85e0501'; +const SIG_ET = '0x4e35aad35793b71f08566615661c9b741d7c605bc8935ac08608dff685324d71b5704fbd14c9297d2f584ea0735f015dcf0def66b802b3f555e1db916eda4b7700'; +const MUL_ED = u8aToHex(u8aConcat(new Uint8Array([0]), hexToU8a(SIG_ED))); +const MUL_SR = u8aToHex(u8aConcat(new Uint8Array([1]), hexToU8a(SIG_SR))); +const MUL_EC = u8aToHex(u8aConcat(new Uint8Array([2]), hexToU8a(SIG_EC))); +const MUL_ET = u8aToHex(u8aConcat(new Uint8Array([2]), hexToU8a(SIG_ET))); + +describe('signatureVerify', (): void => { + beforeEach(async (): Promise => { + await waitReady(); + }); + + it('throws on invalid signature length', (): void => { + expect( + () => signatureVerify(MESSAGE, new Uint8Array(32), ADDR_ED) + ).toThrow('Invalid signature length, expected [64..66] bytes, found 32'); + }); + + describe('verifyDetect', (): void => { + it('verifies ed25519 signature', (): void => { + expect(signatureVerify(MESSAGE, SIG_ED, ADDR_ED)).toEqual({ + crypto: 'ed25519', + isValid: true, + isWrapped: false, + publicKey: decodeAddress(ADDR_ED) + }); + }); + + it('verifies ecdsa signatures', (): void => { + expect(signatureVerify(MESSAGE, SIG_EC, ADDR_EC)).toEqual({ + crypto: 'ecdsa', + isValid: true, + isWrapped: false, + publicKey: decodeAddress(ADDR_EC) + }); + }); + + it('verifies an ethereum signature', (): void => { + expect(signatureVerify(MESSAGE, SIG_ET, ADDR_ET)).toEqual({ + crypto: 'ethereum', + isValid: true, + isWrapped: false, + publicKey: hexToU8a(ADDR_ET) + }); + }); + + it('verifies an ethereum signature (known)', (): void => { + const message = 'Pay KSMs to the Kusama account:88dc3417d5058ec4b4503e0c12ea1a0a89be200fe98922423d4334014fa6b0ee'; + + expect(signatureVerify( + `\x19Ethereum Signed Message:\n${message.length.toString()}${message}`, + '0x55bd020bdbbdc02de34e915effc9b18a99002f4c29f64e22e8dcbb69e722ea6c28e1bb53b9484063fbbfd205e49dcc1f620929f520c9c4c3695150f05a28f52a01', + '0x002309df96687e44280bb72c3818358faeeb699c' + )).toEqual({ + crypto: 'ethereum', + isValid: true, + isWrapped: true, + publicKey: hexToU8a('0x002309df96687e44280bb72c3818358faeeb699c') + }); + }); + + it('fails on invalid ethereum signature', (): void => { + expect(signatureVerify(MESSAGE, SIG_EC, ADDR_ET)).toEqual({ + crypto: 'none', + isValid: false, + isWrapped: false, + publicKey: hexToU8a(ADDR_ET) + }); + }); + + it('verifies an sr25519 signature', (): void => { + expect(signatureVerify(MESSAGE, SIG_SR, ADDR_SR)).toEqual({ + crypto: 'sr25519', + isValid: true, + isWrapped: false, + publicKey: decodeAddress(ADDR_SR) + }); + }); + + it('verifies an sr25519 signature (with msg wrapper, without wrapped sig)', (): void => { + expect(signatureVerify(u8aWrapBytes(MESSAGE), SIG_SR_WRAP, ADDR_SR_WRAP)).toEqual({ + crypto: 'sr25519', + isValid: true, + isWrapped: true, + publicKey: decodeAddress(ADDR_SR_WRAP) + }); + }); + + it('verifies an sr25519 signature (without msg wrapper, with wrapped sig)', (): void => { + expect(signatureVerify(MESSAGE, SIG_SR_WRAP, ADDR_SR_WRAP)).toEqual({ + crypto: 'sr25519', + isValid: true, + isWrapped: false, + publicKey: decodeAddress(ADDR_SR_WRAP) + }); + }); + + it('allows various inputs', (): void => { + expect(signatureVerify(stringToU8a(MESSAGE), hexToU8a(SIG_ED), decodeAddress(ADDR_ED))).toEqual({ + crypto: 'ed25519', + isValid: true, + isWrapped: false, + publicKey: decodeAddress(ADDR_ED) + }); + }); + + it('fails on an invalid signature', (): void => { + expect(signatureVerify(MESSAGE, SIG_SR, ADDR_ED)).toEqual({ + crypto: 'none', + isValid: false, + isWrapped: false, + publicKey: decodeAddress(ADDR_ED) + }); + }); + }); + + describe('verifyMultisig', (): void => { + it('verifies an ed25519 signature', (): void => { + expect(signatureVerify(MESSAGE, MUL_ED, ADDR_ED)).toEqual({ + crypto: 'ed25519', + isValid: true, + isWrapped: false, + publicKey: decodeAddress(ADDR_ED) + }); + }); + + it('verifies an ecdsa signature', (): void => { + expect(signatureVerify(MESSAGE, MUL_EC, ADDR_EC)).toEqual({ + crypto: 'ecdsa', + isValid: true, + isWrapped: false, + publicKey: decodeAddress(ADDR_EC) + }); + }); + + it('verifies an ethereum signature', (): void => { + expect(signatureVerify(MESSAGE, MUL_ET, ADDR_ET)).toEqual({ + crypto: 'ethereum', + isValid: true, + isWrapped: false, + publicKey: hexToU8a(ADDR_ET) + }); + }); + + it('verifies an sr25519 signature', (): void => { + expect(signatureVerify(MESSAGE, MUL_SR, ADDR_SR)).toEqual({ + crypto: 'sr25519', + isValid: true, + isWrapped: false, + publicKey: decodeAddress(ADDR_SR) + }); + }); + + it('fails on an invalid signature', (): void => { + expect(signatureVerify(MESSAGE, MUL_SR, ADDR_ED)).toEqual({ + crypto: 'none', + isValid: false, + isWrapped: false, + publicKey: new Uint8Array([61, 12, 55, 211, 0, 211, 97, 199, 4, 37, 17, 213, 81, 175, 166, 23, 251, 199, 144, 210, 19, 83, 186, 1, 196, 231, 14, 156, 171, 46, 141, 146]) + }); + }); + /** + * ref: https://github.com/polkadot-js/common/issues/1898 + * + * The following test ensures that we cover a reproduction that showed + * an inherent issue with verifying ecdsa signatures which is fixed in + * https://github.com/polkadot-js/common/pull/1973. + * + * It uses a random secretKey, and publicKey pair along with `secp256k1Sign` + * as the signer which is used for `ecdsa`. + */ + it('Ensure ecdsa can sign and verify 1000 messages', (): void => { + const verifyThousandMessages = () => { + const secretKey = new Uint8Array([ + 103, 97, 114, 98, 97, 103, 101, 32, 114, 105, 100, + 103, 101, 32, 107, 105, 99, 107, 32, 114, 111, 115, + 101, 32, 101, 110, 100, 32, 115, 113, 117, 101 + ]); + const publicKey = new Uint8Array([ + 2, 179, 102, 92, 246, 50, 172, 88, + 81, 116, 8, 211, 192, 131, 154, 184, + 122, 83, 180, 104, 4, 227, 214, 195, + 140, 11, 82, 229, 49, 211, 185, 176, + 63 + ]); + + for (let i = 0; i < 1000; i++) { + const message = `message ${i}`; + const encodedMessage = stringToU8a(message); + const signature = secp256k1Sign(encodedMessage, { secretKey }); + + const { isValid: valid } = signatureVerify( + message, + signature, + publicKey + ); + + if (!valid) { + return false; + } + } + + return true; + }; + + expect(verifyThousandMessages()).toEqual(true); + }); + }); +}); diff --git a/packages/util-crypto/src/signature/verify.ts b/packages/util-crypto/src/signature/verify.ts new file mode 100644 index 0000000..2333704 --- /dev/null +++ b/packages/util-crypto/src/signature/verify.ts @@ -0,0 +1,114 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { KeypairType, VerifyResult } from '../types.js'; + +import { u8aIsWrapped, u8aToU8a, u8aUnwrapBytes, u8aWrapBytes } from '@pezkuwi/util'; + +import { decodeAddress } from '../address/decode.js'; +import { ed25519Verify } from '../ed25519/verify.js'; +import { secp256k1Verify } from '../secp256k1/verify.js'; +import { sr25519Verify } from '../sr25519/verify.js'; + +interface VerifyInput { + message: Uint8Array; + publicKey: Uint8Array; + signature: Uint8Array; +} + +type Verifier = [KeypairType, (message: Uint8Array | string, signature: Uint8Array, publicKey: Uint8Array) => boolean]; + +type VerifyFn = (result: VerifyResult, input: VerifyInput) => VerifyResult; + +const secp256k1VerifyHasher = (hashType: 'blake2' | 'keccak') => + (message: Uint8Array | string, signature: Uint8Array, publicKey: Uint8Array) => + secp256k1Verify(message, signature, publicKey, hashType, true); + +const VERIFIERS_ECDSA: Verifier[] = [ + ['ecdsa', secp256k1VerifyHasher('blake2')], + ['ethereum', secp256k1VerifyHasher('keccak')] +]; + +const VERIFIERS: Verifier[] = [ + ['ed25519', ed25519Verify], + ['sr25519', sr25519Verify] +]; + +function verifyDetect (result: VerifyResult, { message, publicKey, signature }: VerifyInput, verifiers = [...VERIFIERS, ...VERIFIERS_ECDSA]): VerifyResult { + result.isValid = verifiers.some(([crypto, verify]): boolean => { + try { + if (verify(message, signature, publicKey)) { + result.crypto = crypto; + + return true; + } + } catch { + // do nothing, result.isValid still set to false + } + + return false; + }); + + return result; +} + +function verifyMultisig (result: VerifyResult, { message, publicKey, signature }: VerifyInput): VerifyResult { + if (![0, 1, 2].includes(signature[0]) || ![65, 66].includes(signature.length)) { + throw new Error(`Unknown crypto type, expected signature prefix [0..2], found ${signature[0]}`); + } + + // If the signature is 66 bytes it must be an ecdsa signature + // containing: prefix [1 byte] + signature [65] bytes. + // Remove the and then verify + if (signature.length === 66) { + result = verifyDetect(result, { message, publicKey, signature: signature.subarray(1) }, VERIFIERS_ECDSA); + } else { + // The signature contains 65 bytes which is either + // - A ed25519 or sr25519 signature [1 byte prefix + 64 bytes] + // - An ecdsa signature [65 bytes] + result = verifyDetect(result, { message, publicKey, signature: signature.subarray(1) }, VERIFIERS); + + if (!result.isValid) { + result = verifyDetect(result, { message, publicKey, signature }, VERIFIERS_ECDSA); + } + + // If both failed, explicitly set crypto to 'none' + if (!result.isValid) { + result.crypto = 'none'; + } + } + + return result; +} + +function getVerifyFn (signature: Uint8Array): VerifyFn { + return [0, 1, 2].includes(signature[0]) && [65, 66].includes(signature.length) + ? verifyMultisig + : verifyDetect; +} + +export function signatureVerify (message: string | Uint8Array, signature: string | Uint8Array, addressOrPublicKey: string | Uint8Array): VerifyResult { + const signatureU8a = u8aToU8a(signature); + + if (![64, 65, 66].includes(signatureU8a.length)) { + throw new Error(`Invalid signature length, expected [64..66] bytes, found ${signatureU8a.length}`); + } + + const publicKey = decodeAddress(addressOrPublicKey); + const input = { message: u8aToU8a(message), publicKey, signature: signatureU8a }; + const result: VerifyResult = { crypto: 'none', isValid: false, isWrapped: u8aIsWrapped(input.message, true), publicKey }; + const isWrappedBytes = u8aIsWrapped(input.message, false); + const verifyFn = getVerifyFn(signatureU8a); + + verifyFn(result, input); + + if (result.crypto !== 'none' || (result.isWrapped && !isWrappedBytes)) { + return result; + } + + input.message = isWrappedBytes + ? u8aUnwrapBytes(input.message) + : u8aWrapBytes(input.message); + + return verifyFn(result, input); +} diff --git a/packages/util-crypto/src/sr25519/agreement.spec.ts b/packages/util-crypto/src/sr25519/agreement.spec.ts new file mode 100644 index 0000000..f1a106c --- /dev/null +++ b/packages/util-crypto/src/sr25519/agreement.spec.ts @@ -0,0 +1,31 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import type { Keypair } from '../types.js'; + +import { u8aToHex } from '@pezkuwi/util'; + +import { sr25519Agreement, sr25519PairFromSeed } from './index.js'; + +describe('agreement', (): void => { + let pairA: Keypair; + let pairB: Keypair; + + beforeEach((): void => { + pairA = sr25519PairFromSeed('0x98b3d305d5a5eace562387e47e59badd4d77e3f72cabfb10a60f8a197059f0a8'); + pairB = sr25519PairFromSeed('0x9732eea001851ff862d949a1699c9971f3a26edbede2ad7922cbbe9a0701f366'); + }); + + it('matches a known agreement (both ways)', (): void => { + const TEST = '0xb03a0b198c34c16f35cae933d88b16341b4cef3e84e851f20e664c6a30527f4e'; + + expect( + u8aToHex(sr25519Agreement(pairA.secretKey, pairB.publicKey)) + ).toEqual(TEST); + expect( + u8aToHex(sr25519Agreement(pairB.secretKey, pairA.publicKey)) + ).toEqual(TEST); + }); +}); diff --git a/packages/util-crypto/src/sr25519/agreement.ts b/packages/util-crypto/src/sr25519/agreement.ts new file mode 100644 index 0000000..70d4b2c --- /dev/null +++ b/packages/util-crypto/src/sr25519/agreement.ts @@ -0,0 +1,23 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import { getSharedSecret } from '@scure/sr25519'; + +import { u8aToU8a } from '@pezkuwi/util'; + +/** + * @name sr25519Agreement + * @description Key agreement between other's public key and self secret key + */ +export function sr25519Agreement (secretKey: string | Uint8Array, publicKey: string | Uint8Array): Uint8Array { + const secretKeyU8a = u8aToU8a(secretKey); + const publicKeyU8a = u8aToU8a(publicKey); + + if (publicKeyU8a.length !== 32) { + throw new Error(`Invalid publicKey, received ${publicKeyU8a.length} bytes, expected 32`); + } else if (secretKeyU8a.length !== 64) { + throw new Error(`Invalid secretKey, received ${secretKeyU8a.length} bytes, expected 64`); + } + + return getSharedSecret(secretKeyU8a, publicKeyU8a); +} diff --git a/packages/util-crypto/src/sr25519/derive.ts b/packages/util-crypto/src/sr25519/derive.ts new file mode 100644 index 0000000..6a73b80 --- /dev/null +++ b/packages/util-crypto/src/sr25519/derive.ts @@ -0,0 +1,21 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { Keypair } from '../types.js'; + +import * as sr25519 from '@scure/sr25519'; + +import { isU8a } from '@pezkuwi/util'; + +export function createDeriveFn (derive: (pair: Uint8Array, cc: Uint8Array) => Uint8Array): (keypair: Keypair, chainCode: Uint8Array) => Keypair { + return (keypair: Keypair, chainCode: Uint8Array): Keypair => { + if (!isU8a(chainCode) || chainCode.length !== 32) { + throw new Error('Invalid chainCode passed to derive'); + } + + const secretKey = derive(keypair.secretKey, chainCode); + const publicKey = sr25519.getPublicKey(secretKey); + + return { publicKey, secretKey }; + }; +} diff --git a/packages/util-crypto/src/sr25519/deriveHard.ts b/packages/util-crypto/src/sr25519/deriveHard.ts new file mode 100644 index 0000000..17ac637 --- /dev/null +++ b/packages/util-crypto/src/sr25519/deriveHard.ts @@ -0,0 +1,9 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import * as sr25519 from '@scure/sr25519'; + +import { createDeriveFn } from './derive.js'; + +// eslint-disable-next-line @typescript-eslint/unbound-method +export const sr25519DeriveHard = /*#__PURE__*/ createDeriveFn(sr25519.HDKD.secretHard); diff --git a/packages/util-crypto/src/sr25519/derivePublic.ts b/packages/util-crypto/src/sr25519/derivePublic.ts new file mode 100644 index 0000000..4653e6b --- /dev/null +++ b/packages/util-crypto/src/sr25519/derivePublic.ts @@ -0,0 +1,18 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import * as sr25519 from '@scure/sr25519'; + +import { isU8a, u8aToU8a } from '@pezkuwi/util'; + +export function sr25519DerivePublic (publicKey: string | Uint8Array, chainCode: Uint8Array): Uint8Array { + const publicKeyU8a = u8aToU8a(publicKey); + + if (!isU8a(chainCode) || chainCode.length !== 32) { + throw new Error('Invalid chainCode passed to derive'); + } else if (publicKeyU8a.length !== 32) { + throw new Error(`Invalid publicKey, received ${publicKeyU8a.length} bytes, expected 32`); + } + + return sr25519.HDKD.publicSoft(publicKeyU8a, chainCode); +} diff --git a/packages/util-crypto/src/sr25519/deriveSoft.ts b/packages/util-crypto/src/sr25519/deriveSoft.ts new file mode 100644 index 0000000..6d40428 --- /dev/null +++ b/packages/util-crypto/src/sr25519/deriveSoft.ts @@ -0,0 +1,9 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import * as sr25519 from '@scure/sr25519'; + +import { createDeriveFn } from './derive.js'; + +// eslint-disable-next-line @typescript-eslint/unbound-method +export const sr25519DeriveSoft = /*#__PURE__*/ createDeriveFn(sr25519.HDKD.secretSoft); diff --git a/packages/util-crypto/src/sr25519/index.ts b/packages/util-crypto/src/sr25519/index.ts new file mode 100644 index 0000000..795db67 --- /dev/null +++ b/packages/util-crypto/src/sr25519/index.ts @@ -0,0 +1,12 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +export { sr25519Agreement } from './agreement.js'; +export { sr25519DeriveHard } from './deriveHard.js'; +export { sr25519DerivePublic } from './derivePublic.js'; +export { sr25519DeriveSoft } from './deriveSoft.js'; +export { sr25519PairFromSeed } from './pair/fromSeed.js'; +export { sr25519Sign } from './sign.js'; +export { sr25519Verify } from './verify.js'; +export { sr25519VrfSign } from './vrfSign.js'; +export { sr25519VrfVerify } from './vrfVerify.js'; diff --git a/packages/util-crypto/src/sr25519/pair/fromSeed.spec.ts b/packages/util-crypto/src/sr25519/pair/fromSeed.spec.ts new file mode 100644 index 0000000..96ead99 --- /dev/null +++ b/packages/util-crypto/src/sr25519/pair/fromSeed.spec.ts @@ -0,0 +1,35 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { stringToU8a, u8aToHex } from '@pezkuwi/util'; + +import { mnemonicToMiniSecret } from '../../mnemonic/index.js'; +import { sr25519PairFromSeed } from '../index.js'; +import tests from './testing.spec.js'; + +describe('sr25519PairFromSeed', (): void => { + const TEST = stringToU8a('12345678901234567890123456789012'); + const RESULT = { + publicKey: new Uint8Array([116, 28, 8, 160, 111, 65, 197, 150, 96, 143, 103, 116, 37, 155, 217, 4, 51, 4, 173, 250, 93, 62, 234, 98, 118, 11, 217, 190, 151, 99, 77, 99]), + secretKey: new Uint8Array([240, 16, 102, 96, 195, 221, 162, 63, 22, 218, 169, 172, 91, 129, 27, 150, 48, 119, 245, 188, 10, 248, 159, 133, 128, 79, 13, 232, 228, 36, 240, 80, 249, 141, 102, 243, 148, 66, 80, 111, 249, 71, 253, 145, 31, 24, 199, 167, 165, 218, 99, 154, 99, 232, 211, 180, 226, 51, 247, 65, 67, 217, 81, 193]) + }; + + it('generates a valid publicKey/secretKey pair (u8a)', (): void => { + expect( + sr25519PairFromSeed(TEST) + ).toEqual(RESULT); + }); + + tests.forEach(([mnemonic, , , secret], index): void => { + it(`creates valid against known (${index})`, (): void => { + const seed = mnemonicToMiniSecret(mnemonic, 'Substrate'); + const pair = sr25519PairFromSeed(seed); + + expect( + u8aToHex(pair.secretKey) + ).toEqual(secret); + }); + }); +}); diff --git a/packages/util-crypto/src/sr25519/pair/fromSeed.ts b/packages/util-crypto/src/sr25519/pair/fromSeed.ts new file mode 100644 index 0000000..3942624 --- /dev/null +++ b/packages/util-crypto/src/sr25519/pair/fromSeed.ts @@ -0,0 +1,28 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { Keypair } from '../../types.js'; + +import * as sr25519 from '@scure/sr25519'; + +import { u8aToU8a } from '@pezkuwi/util'; + +/** + * @name sr25519PairFromSeed + * @description Returns a object containing a `publicKey` & `secretKey` generated from the supplied seed. + */ +export function sr25519PairFromSeed (seed: string | Uint8Array): Keypair { + const seedU8a = u8aToU8a(seed); + + if (seedU8a.length !== 32) { + throw new Error(`Expected a seed matching 32 bytes, found ${seedU8a.length}`); + } + + const sec = sr25519.secretFromSeed(seedU8a); + const pub = sr25519.getPublicKey(sec); + + return { + publicKey: pub, + secretKey: sec + }; +} diff --git a/packages/util-crypto/src/sr25519/pair/fromU8a.ts b/packages/util-crypto/src/sr25519/pair/fromU8a.ts new file mode 100644 index 0000000..6a003b6 --- /dev/null +++ b/packages/util-crypto/src/sr25519/pair/fromU8a.ts @@ -0,0 +1,23 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { Keypair } from '../../types.js'; + +import { u8aToU8a } from '@pezkuwi/util'; + +const SEC_LEN = 64; +const PUB_LEN = 32; +const TOT_LEN = SEC_LEN + PUB_LEN; + +export function sr25519PairFromU8a (full: string | Uint8Array): Keypair { + const fullU8a = u8aToU8a(full); + + if (fullU8a.length !== TOT_LEN) { + throw new Error(`Expected keypair with ${TOT_LEN} bytes, found ${fullU8a.length}`); + } + + return { + publicKey: fullU8a.slice(SEC_LEN, TOT_LEN), + secretKey: fullU8a.slice(0, SEC_LEN) + }; +} diff --git a/packages/util-crypto/src/sr25519/pair/testing.spec.ts b/packages/util-crypto/src/sr25519/pair/testing.spec.ts new file mode 100644 index 0000000..d208b29 --- /dev/null +++ b/packages/util-crypto/src/sr25519/pair/testing.spec.ts @@ -0,0 +1,161 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +// mnemonic, entropy, seed, secret (expanded) +type Test = [string, string, string, string]; + +const tests: Test[] = [ + [ + 'abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about', + '0x00000000000000000000000000000000', + '0x44e9d125f037ac1d51f0a7d3649689d422c2af8b1ec8e00d71db4d7bf6d127e33f50c3d5c84fa3e5399c72d6cbbbbc4a49bf76f76d952f479d74655a2ef2d453', + '0xb0b3174fe43c15938bb0d0cc5b6f7ac7295f557ee1e6fdeb24fb73f4e0cb2b6ec40ffb9da4af6d411eae8e292750fd105ff70fe93f337b5b590f5a9d9030c750' + ], + [ + 'legal winner thank year wave sausage worth useful legal winner thank yellow', + '0x7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f', + '0x4313249608fe8ac10fd5886c92c4579007272cb77c21551ee5b8d60b780416850f1e26c1f4b8d88ece681cb058ab66d6182bc2ce5a03181f7b74c27576b5c8bf', + '0x20666c9dd63c5b04a6a14377579af14aba60707752d134726304d0804992e26f9092c47fbb9e14c02fd53c702c8a3cfca4735638599da5c4362e0d0560dceb58' + ], + [ + 'letter advice cage absurd amount doctor acoustic avoid letter advice cage above', + '0x80808080808080808080808080808080', + '0x27f3eb595928c60d5bc91a4d747da40ed236328183046892ed6cd5aa9ae38122acd1183adf09a89839acb1e6eaa7fb563cc958a3f9161248d5a036e0d0af533d', + '0x709e8254d0a9543c6b35b145dd23349e6369d487a1d10b0cfe09c05ff521f4691ad8bb8221339af38fc48510ec2dfc3104bb94d38f1fa241ceb252943df7b6b5' + ], + [ + 'zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo wrong', + '0xffffffffffffffffffffffffffffffff', + '0x227d6256fd4f9ccaf06c45eaa4b2345969640462bbb00c5f51f43cb43418c7a753265f9b1e0c0822c155a9cabc769413ecc14553e135fe140fc50b6722c6b9df', + '0x88206f4b4102ad30ee40b4b5943c5259db77fd576d95d79eeea00160197e406308821814dea9442675a5d3fa375b3bd65ffe92be43e07dbf6bb4ab84e9d4449d' + ], + [ + 'abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon agent', + '0x000000000000000000000000000000000000000000000000', + '0x44e9d125f037ac1d51f0a7d3649689d422c2af8b1ec8e00d71db4d7bf6d127e33f50c3d5c84fa3e5399c72d6cbbbbc4a49bf76f76d952f479d74655a2ef2d453', + '0xb0b3174fe43c15938bb0d0cc5b6f7ac7295f557ee1e6fdeb24fb73f4e0cb2b6ec40ffb9da4af6d411eae8e292750fd105ff70fe93f337b5b590f5a9d9030c750' + ], + [ + 'legal winner thank year wave sausage worth useful legal winner thank year wave sausage worth useful legal will', + '0x7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f', + '0xcb1d50e14101024a88905a098feb1553d4306d072d7460e167a60ccb3439a6817a0afc59060f45d999ddebc05308714733c9e1e84f30feccddd4ad6f95c8a445', + '0x50dcb74f223740d6a256000a2f1ccdb60044b39ce3aad71a3bd7761848d5f55d5a34f96e0b96ecb45d7a142e07ddfde734f9525f9f88310ab50e347da5789d3e' + ], + [ + 'letter advice cage absurd amount doctor acoustic avoid letter advice cage absurd amount doctor acoustic avoid letter always', + '0x808080808080808080808080808080808080808080808080', + '0x9ddecf32ce6bee77f867f3c4bb842d1f0151826a145cb4489598fe71ac29e3551b724f01052d1bc3f6d9514d6df6aa6d0291cfdf997a5afdb7b6a614c88ab36a', + '0x88112947a30e864b511838b6daf6e1e13801ae003d6d9b73eb5892c355f7e37ab3bb71200092d004467b06fe67bc153ee4e2bb7af2f544815b0dde276d2dae75' + ], + [ + 'zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo when', + '0xffffffffffffffffffffffffffffffffffffffffffffffff', + '0x8971cb290e7117c64b63379c97ed3b5c6da488841bd9f95cdc2a5651ac89571e2c64d391d46e2475e8b043911885457cd23e99a28b5a18535fe53294dc8e1693', + '0x4859cdeda3f957b7ffcd2d59257c30e43996796f38e1be5c6136c9bf3744e047ce9a52c11793c98d0dc8caee927576ce46ef2e5f4b3f1d5e4b1344b2c31ebe8e' + ], + [ + 'abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon art', + '0x0000000000000000000000000000000000000000000000000000000000000000', + '0x44e9d125f037ac1d51f0a7d3649689d422c2af8b1ec8e00d71db4d7bf6d127e33f50c3d5c84fa3e5399c72d6cbbbbc4a49bf76f76d952f479d74655a2ef2d453', + '0xb0b3174fe43c15938bb0d0cc5b6f7ac7295f557ee1e6fdeb24fb73f4e0cb2b6ec40ffb9da4af6d411eae8e292750fd105ff70fe93f337b5b590f5a9d9030c750' + ], + [ + 'legal winner thank year wave sausage worth useful legal winner thank year wave sausage worth useful legal winner thank year wave sausage worth title', + '0x7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f', + '0x3037276a5d05fcd7edf51869eb841bdde27c574dae01ac8cfb1ea476f6bea6ef57ab9afe14aea1df8a48f97ae25b37d7c8326e49289efb25af92ba5a25d09ed3', + '0xe8962ace15478f69fa42ddd004aad2c285c9f5a02e0712860e83fbec041f89489046aa57b21db2314d93aeb4a2d7cbdab21d4856e8e151894abd17fb04ae65e1' + ], + [ + 'letter advice cage absurd amount doctor acoustic avoid letter advice cage absurd amount doctor acoustic avoid letter advice cage absurd amount doctor acoustic bless', + '0x8080808080808080808080808080808080808080808080808080808080808080', + '0x2c9c6144a06ae5a855453d98c3dea470e2a8ffb78179c2e9eb15208ccca7d831c97ddafe844ab933131e6eb895f675ede2f4e39837bb5769d4e2bc11df58ac42', + '0x78667314bf1e52e38d29792cdf294efcaddadc4fa9ce48c5f2bef4daad7ed95d1db960d6f6f895c1a9d2a3ddcc0398ba6578580ea1f03f65ea9a68e97cf3f840' + ], + [ + 'zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo vote', + '0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', + '0x047e89ef7739cbfe30da0ad32eb1720d8f62441dd4f139b981b8e2d0bd412ed4eb14b89b5098c49db2301d4e7df4e89c21e53f345138e56a5e7d63fae21c5939', + '0xe09f4ae0d4e22f6c9bbc4251c880e73d93d10fdf7f152c393ce36e4e942b3155a6f4b48e6c6ebce902a10d4ab46ef59cd154c15aeb8f7fcd4e1e26342d40806d' + ], + [ + 'ozone drill grab fiber curtain grace pudding thank cruise elder eight picnic', + '0x9e885d952ad362caeb4efe34a8e91bd2', + '0xf4956be6960bc145cdab782e649a5056598fd07cd3f32ceb73421c3da27833241324dc2c8b0a4d847eee457e6d4c5429f5e625ece22abaa6a976e82f1ec5531d', + '0xb0eb046f48eacb7ad6c4da3ff92bfc29c9ad471bae3e554d5d63e58827160c70c7e5165598761f96b5659ab28c474f50e89ee13c67e30bca40fdcf4335835649' + ], + [ + 'gravity machine north sort system female filter attitude volume fold club stay feature office ecology stable narrow fog', + '0x6610b25967cdcca9d59875f5cb50b0ea75433311869e930b', + '0xfbcc5229ade0c0ff018cb7a329c5459f91876e4dde2a97ddf03c832eab7f26124366a543f1485479c31a9db0d421bda82d7e1fe562e57f3533cb1733b001d84d', + '0xd8da734285a13967647dd906288e1ac871e1945d0c6b72fa259de4051a9b75431be0c4eb40b1ca38c780f445e3e2809282b9efef4dcc3538355e68094f1e79fa' + ], + [ + 'hamster diagram private dutch cause delay private meat slide toddler razor book happy fancy gospel tennis maple dilemma loan word shrug inflict delay length', + '0x68a79eaca2324873eacc50cb9c6eca8cc68ea5d936f98787c60c7ebc74e6ce7c', + '0x7c60c555126c297deddddd59f8cdcdc9e3608944455824dd604897984b5cc369cad749803bb36eb8b786b570c9cdc8db275dbe841486676a6adf389f3be3f076', + '0x883b72fa7fb06b6abd0fc2cdb0018b3578e086e93074256bbbb8c68e53c04a56391bc0d19d7b2fa22a8148ccbe191d969c4323faca1935a576cc1b24301f203a' + ], + [ + 'scheme spot photo card baby mountain device kick cradle pact join borrow', + '0xc0ba5a8e914111210f2bd131f3d5e08d', + '0xc12157bf2506526c4bd1b79a056453b071361538e9e2c19c28ba2cfa39b5f23034b974e0164a1e8acd30f5b4c4de7d424fdb52c0116bfc6a965ba8205e6cc121', + '0x7039a64150089f8d43188af964c7b8e2b8c9ba20aede085baca5672e978a47576c7193c3e557f37cdeeee5e5131b854e4309efc55259b050474e1f0884a7a621' + ], + [ + 'horn tenant knee talent sponsor spell gate clip pulse soap slush warm silver nephew swap uncle crack brave', + '0x6d9be1ee6ebd27a258115aad99b7317b9c8d28b6d76431c3', + '0x23766723e970e6b79dec4d5e4fdd627fd27d1ee026eb898feb9f653af01ad22080c6f306d1061656d01c4fe9a14c05f991d2c7d8af8730780de4f94cd99bd819', + '0xe07a1f3073edad5b63585cdf1d5e6f8e50e3145de550fc8eb1fb430cce62d76d251904272c5d25fd634615d413bb31a2bc7b5d6eeb2f6ddc68a2b95ac6bd49bc' + ], + [ + 'panda eyebrow bullet gorilla call smoke muffin taste mesh discover soft ostrich alcohol speed nation flash devote level hobby quick inner drive ghost inside', + '0x9f6a2878b2520799a44ef18bc7df394e7061a224d2c33cd015b157d746869863', + '0xf4c83c86617cb014d35cd87d38b5ef1c5d5c3d58a73ab779114438a7b358f457e0462c92bddab5a406fe0e6b97c71905cf19f925f356bc673ceb0e49792f4340', + '0x607f8595266ac0d4aa91bf4fddbd2a868889317f40099979be9743c46c418976e6ff3717bd11b94b418f91c8b88eae142cecb19104820997ddf5a379dd9da5ae' + ], + [ + 'cat swing flag economy stadium alone churn speed unique patch report train', + '0x23db8160a31d3e0dca3688ed941adbf3', + '0x719d4d4de0638a1705bf5237262458983da76933e718b2d64eb592c470f3c5d222e345cc795337bb3da393b94375ff4a56cfcd68d5ea25b577ee9384d35f4246', + '0xd078b66bb357f1f06e897a6fdfa2f3dfb0da05836ded1fd0793373068b7e854e783a548a6d194f142e1ba78bf42a49fa58e3673b363ba6f6494efffa28f168df' + ], + [ + 'light rule cinnamon wrap drastic word pride squirrel upgrade then income fatal apart sustain crack supply proud access', + '0x8197a4a47f0425faeaa69deebc05ca29c0a5b5cc76ceacc0', + '0x7ae1291db32d16457c248567f2b101e62c5549d2a64cd2b7605d503ec876d58707a8d663641e99663bc4f6cc9746f4852e75e7e54de5bc1bd3c299c9a113409e', + '0x5095fe4d0144b06e82aa4753d595fd10de9bba3733eba8ce0784417182317e725fac31b2fb53f4856a5e38866501425b485f4d2eaf2666a9f20ae68f4331ed2c' + ], + [ + 'all hour make first leader extend hole alien behind guard gospel lava path output census museum junior mass reopen famous sing advance salt reform', + '0x066dca1a2bb7e8a1db2832148ce9933eea0f3ac9548d793112d9a95c9407efad', + '0xa911a5f4db0940b17ecb79c4dcf9392bf47dd18acaebdd4ef48799909ebb49672947cc15f4ef7e8ef47103a1a91a6732b821bda2c667e5b1d491c54788c69391', + '0x8844cb50f3ba8030ab61afee623534836d4ea3677d42bae470fc5e251ea0ca7ec9ea65c8c40be191c7c8683165848279ced81f3a121c9450078a496b6c59f610' + ], + [ + 'vessel ladder alter error federal sibling chat ability sun glass valve picture', + '0xf30f8c1da665478f49b001d94c5fc452', + '0x4e2314ca7d9eebac6fe5a05a5a8d3546bc891785414d82207ac987926380411e559c885190d641ff7e686ace8c57db6f6e4333c1081e3d88d7141a74cf339c8f', + '0x18917f0c7480c95cd4d98bdc7df773c366d33590252707da1358eb58b43a7b765e3c513878541bfbfb466bb4206f581edf9bf601409c72afac130bcc8b5661b5' + ], + [ + 'scissors invite lock maple supreme raw rapid void congress muscle digital elegant little brisk hair mango congress clump', + '0xc10ec20dc3cd9f652c7fac2f1230f7a3c828389a14392f05', + '0x7a83851102849edc5d2a3ca9d8044d0d4f00e5c4a292753ed3952e40808593251b0af1dd3c9ed9932d46e8608eb0b928216a6160bd4fc775a6e6fbd493d7c6b2', + '0xb0bf86b0955413fc95144bab124e82042d0cce9c292c1bfd0874ae5a95412977e7bc109aeef33c7c90be952a83f3fe528419776520de721ef6ec9e814749c3fc' + ], + [ + 'void come effort suffer camp survey warrior heavy shoot primary clutch crush open amazing screen patrol group space point ten exist slush involve unfold', + '0xf585c11aec520db57dd353c69554b21a89b20fb0650966fa0a9d6f74fd989d8f', + '0x938ba18c3f521f19bd4a399c8425b02c716844325b1a65106b9d1593fbafe5e0b85448f523f91c48e331995ff24ae406757cff47d11f240847352b348ff436ed', + '0xc07ba4a979657576f4f7446e3bd2672c87131fa0f472a8bc1f2e9b28c11fb04c66da12cd280662196a5888d8a77178dab8034ed42b11d1654a31db6e1ff4d4c5' + ] +]; + +// eslint-disable-next-line jest/no-export +export default tests; + +it('has a test', (): void => { + expect(true).toEqual(true); +}); diff --git a/packages/util-crypto/src/sr25519/pair/toU8a.ts b/packages/util-crypto/src/sr25519/pair/toU8a.ts new file mode 100644 index 0000000..92c4364 --- /dev/null +++ b/packages/util-crypto/src/sr25519/pair/toU8a.ts @@ -0,0 +1,10 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { Keypair } from '../../types.js'; + +import { u8aConcat } from '@pezkuwi/util'; + +export function sr25519KeypairToU8a ({ publicKey, secretKey }: Keypair): Uint8Array { + return u8aConcat(secretKey, publicKey).slice(); +} diff --git a/packages/util-crypto/src/sr25519/sign.spec.ts b/packages/util-crypto/src/sr25519/sign.spec.ts new file mode 100644 index 0000000..72b86a0 --- /dev/null +++ b/packages/util-crypto/src/sr25519/sign.spec.ts @@ -0,0 +1,28 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { stringToU8a } from '@pezkuwi/util'; + +import { randomAsU8a } from '../random/asU8a.js'; +import { sr25519PairFromSeed } from './pair/fromSeed.js'; +import { sr25519Sign } from './sign.js'; + +const MESSAGE = stringToU8a('this is a message'); + +describe('sign', (): void => { + it('has 64-byte signatures', (): void => { + const pair = sr25519PairFromSeed(randomAsU8a()); + + expect(sr25519Sign(MESSAGE, pair)).toHaveLength(64); + }); + + it('has non-deterministic signatures', (): void => { + const pair = sr25519PairFromSeed(randomAsU8a()); + const a = sr25519Sign(MESSAGE, pair); + const b = sr25519Sign(MESSAGE, pair); + + expect(a).not.toEqual(b); + }); +}); diff --git a/packages/util-crypto/src/sr25519/sign.ts b/packages/util-crypto/src/sr25519/sign.ts new file mode 100644 index 0000000..869547c --- /dev/null +++ b/packages/util-crypto/src/sr25519/sign.ts @@ -0,0 +1,22 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { Keypair } from '../types.js'; + +import * as sr25519 from '@scure/sr25519'; + +import { u8aToU8a } from '@pezkuwi/util'; + +/** + * @name sr25519Sign + * @description Returns message signature of `message`, using the supplied pair + */ +export function sr25519Sign (message: string | Uint8Array, { publicKey, secretKey }: Partial): Uint8Array { + if (publicKey?.length !== 32) { + throw new Error('Expected a valid publicKey, 32-bytes'); + } else if (secretKey?.length !== 64) { + throw new Error('Expected a valid secretKey, 64-bytes'); + } + + return sr25519.sign(secretKey, u8aToU8a(message)); +} diff --git a/packages/util-crypto/src/sr25519/verify.spec.ts b/packages/util-crypto/src/sr25519/verify.spec.ts new file mode 100644 index 0000000..a9a4dd6 --- /dev/null +++ b/packages/util-crypto/src/sr25519/verify.spec.ts @@ -0,0 +1,42 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { stringToU8a } from '@pezkuwi/util'; + +import { randomAsU8a } from '../random/asU8a.js'; +import { sr25519PairFromSeed } from './pair/fromSeed.js'; +import { sr25519Sign } from './sign.js'; +import { sr25519Verify } from './verify.js'; + +const MESSAGE = stringToU8a('this is a message'); + +describe('verify', (): void => { + it('can sign and verify a message', (): void => { + const pair = sr25519PairFromSeed(randomAsU8a()); + const signature = sr25519Sign(MESSAGE, pair); + + expect(sr25519Verify(MESSAGE, signature, pair.publicKey)).toBe(true); + }); + + it('throws error when publicKey lengths do not match', (): void => { + expect( + () => sr25519Verify( + new Uint8Array([0x61, 0x62, 0x63, 0x64]), + new Uint8Array(64), + new Uint8Array(31) + ) + ).toThrow(/Invalid publicKey/); + }); + + it('throws error when signature lengths do not match', (): void => { + expect( + () => sr25519Verify( + new Uint8Array([0x61, 0x62, 0x63, 0x64]), + new Uint8Array(65), + new Uint8Array(32) + ) + ).toThrow(/Invalid signature/); + }); +}); diff --git a/packages/util-crypto/src/sr25519/verify.ts b/packages/util-crypto/src/sr25519/verify.ts new file mode 100644 index 0000000..6d53994 --- /dev/null +++ b/packages/util-crypto/src/sr25519/verify.ts @@ -0,0 +1,23 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import * as sr25519 from '@scure/sr25519'; + +import { u8aToU8a } from '@pezkuwi/util'; + +/** + * @name sr25519Verify + * @description Verifies the signature of `message`, using the supplied pair + */ +export function sr25519Verify (message: string | Uint8Array, signature: string | Uint8Array, publicKey: string | Uint8Array): boolean { + const publicKeyU8a = u8aToU8a(publicKey); + const signatureU8a = u8aToU8a(signature); + + if (publicKeyU8a.length !== 32) { + throw new Error(`Invalid publicKey, received ${publicKeyU8a.length} bytes, expected 32`); + } else if (signatureU8a.length !== 64) { + throw new Error(`Invalid signature, received ${signatureU8a.length} bytes, expected 64`); + } + + return sr25519.verify(u8aToU8a(message), signatureU8a, publicKeyU8a); +} diff --git a/packages/util-crypto/src/sr25519/vrfSign.ts b/packages/util-crypto/src/sr25519/vrfSign.ts new file mode 100644 index 0000000..86e2e25 --- /dev/null +++ b/packages/util-crypto/src/sr25519/vrfSign.ts @@ -0,0 +1,24 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { Keypair } from '../types.js'; + +import { randomBytes } from '@noble/hashes/utils'; +import * as sr25519 from '@scure/sr25519'; + +import { u8aToU8a } from '@pezkuwi/util'; + +const EMPTY_U8A = new Uint8Array(); + +/** + * @name sr25519VrfSign + * @description Sign with sr25519 vrf signing (deterministic) + */ +export function sr25519VrfSign (message: string | Uint8Array, { secretKey }: Partial, context: string | Uint8Array = EMPTY_U8A, extra: string | Uint8Array = EMPTY_U8A): Uint8Array { + if (secretKey?.length !== 64) { + throw new Error('Invalid secretKey, expected 64-bytes'); + } + + return sr25519.vrf.sign(u8aToU8a(message), secretKey, u8aToU8a(context), u8aToU8a(extra), randomBytes); + // return vrfSign(secretKey, u8aToU8a(context), u8aToU8a(message), u8aToU8a(extra)); +} diff --git a/packages/util-crypto/src/sr25519/vrfSignVerify.spec.ts b/packages/util-crypto/src/sr25519/vrfSignVerify.spec.ts new file mode 100644 index 0000000..e544bdb --- /dev/null +++ b/packages/util-crypto/src/sr25519/vrfSignVerify.spec.ts @@ -0,0 +1,73 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { stringToU8a, u8aEq } from '@pezkuwi/util'; + +import { randomAsU8a } from '../random/asU8a.js'; +import { sr25519PairFromSeed } from './pair/fromSeed.js'; +import { sr25519VrfSign } from './vrfSign.js'; +import { sr25519VrfVerify } from './vrfVerify.js'; + +const MESSAGE = stringToU8a('this is a message'); + +describe('vrf sign and verify', (): void => { + it('has 96-byte proofs', (): void => { + const pair = sr25519PairFromSeed(randomAsU8a()); + + expect(sr25519VrfSign(MESSAGE, pair)).toHaveLength(96); + }); + + it('signing is deterministic', (): void => { + const pair = sr25519PairFromSeed(randomAsU8a()); + const proof1 = sr25519VrfSign(MESSAGE, pair); + const proof2 = sr25519VrfSign(MESSAGE, pair); + + expect(u8aEq(proof1.subarray(0, 32), proof2.subarray(0, 32))).toBe(true); + }); + + it('can sign and verify a message', (): void => { + const pair = sr25519PairFromSeed(randomAsU8a()); + const proof = sr25519VrfSign(MESSAGE, pair); + + expect(sr25519VrfVerify(MESSAGE, proof, pair.publicKey)).toBe(true); + }); + + it('can sign and verify a message (with context)', (): void => { + const context = 'my context'; + const pair = sr25519PairFromSeed(randomAsU8a()); + const proof = sr25519VrfSign(MESSAGE, pair, context); + + expect(sr25519VrfVerify(MESSAGE, proof, pair.publicKey, context)).toBe(true); + }); + + it('can sign and verify a message (with context & extra)', (): void => { + const context = 'my context'; + const extra = 'some extra transcript data'; + const pair = sr25519PairFromSeed(randomAsU8a()); + const proof = sr25519VrfSign(MESSAGE, pair, context, extra); + + expect(sr25519VrfVerify(MESSAGE, proof, pair.publicKey, context, extra)).toBe(true); + }); + + it('throws error when publicKey lengths do not match', (): void => { + expect( + () => sr25519VrfVerify( + new Uint8Array([0x61, 0x62, 0x63, 0x64]), + new Uint8Array(96), + new Uint8Array(31) + ) + ).toThrow(/Invalid publicKey/); + }); + + it('throws error when proof lengths do not match', (): void => { + expect( + () => sr25519VrfVerify( + new Uint8Array([0x61, 0x62, 0x63, 0x64]), + new Uint8Array(99), + new Uint8Array(32) + ) + ).toThrow(/Invalid vrfSign/); + }); +}); diff --git a/packages/util-crypto/src/sr25519/vrfVerify.ts b/packages/util-crypto/src/sr25519/vrfVerify.ts new file mode 100644 index 0000000..4011d00 --- /dev/null +++ b/packages/util-crypto/src/sr25519/vrfVerify.ts @@ -0,0 +1,25 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import * as sr25519 from '@scure/sr25519'; + +import { u8aToU8a } from '@pezkuwi/util'; + +const EMPTY_U8A = new Uint8Array(); + +/** + * @name sr25519VrfVerify + * @description Verify with sr25519 vrf verification + */ +export function sr25519VrfVerify (message: string | Uint8Array, signOutput: string | Uint8Array, publicKey: string | Uint8Array, context: string | Uint8Array = EMPTY_U8A, extra: string | Uint8Array = EMPTY_U8A): boolean { + const publicKeyU8a = u8aToU8a(publicKey); + const proofU8a = u8aToU8a(signOutput); + + if (publicKeyU8a.length !== 32) { + throw new Error('Invalid publicKey, expected 32-bytes'); + } else if (proofU8a.length !== 96) { + throw new Error('Invalid vrfSign output, expected 96 bytes'); + } + + return sr25519.vrf.verify(u8aToU8a(message), proofU8a, publicKeyU8a, u8aToU8a(context), u8aToU8a(extra)); +} diff --git a/packages/util-crypto/src/test/index.ts b/packages/util-crypto/src/test/index.ts new file mode 100644 index 0000000..f011bb5 --- /dev/null +++ b/packages/util-crypto/src/test/index.ts @@ -0,0 +1,8 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +// all external +export { perf, perfCmp } from '@pezkuwi/util/test'; + +// all local +export { perfWasm } from './performance.js'; diff --git a/packages/util-crypto/src/test/performance.ts b/packages/util-crypto/src/test/performance.ts new file mode 100644 index 0000000..0d7b488 --- /dev/null +++ b/packages/util-crypto/src/test/performance.ts @@ -0,0 +1,17 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import { arrayRange } from '@pezkuwi/util'; +import { perf, perfCmp } from '@pezkuwi/util/test'; + +import { randomAsU8a } from '../index.js'; + +type ExecFn = (input: Uint8Array, onlyJs: boolean) => unknown; + +const GENERATED = arrayRange(256).map(() => [randomAsU8a()]); + +export function perfWasm (name: string, count: number, exec: ExecFn, inputs = GENERATED): void { + perfCmp(name, ['WebAssembly', 'JavaScript'], count, inputs, exec); +} + +export { perf, perfCmp }; diff --git a/packages/util-crypto/src/types.ts b/packages/util-crypto/src/types.ts new file mode 100644 index 0000000..23e98e4 --- /dev/null +++ b/packages/util-crypto/src/types.ts @@ -0,0 +1,33 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +export * from './address/types.js'; +export * from './json/types.js'; + +export interface Keypair { + /** The publicKey for this pair */ + publicKey: Uint8Array; + /** The secretKey for this pair */ + secretKey: Uint8Array; +} + +export interface Seedpair { + /** The publicKey for this pair */ + publicKey: Uint8Array; + /** The seed used to construct the pair */ + seed: Uint8Array; +} + +/** The supported types of pairs */ +export type KeypairType = 'ed25519' | 'sr25519' | 'ecdsa' | 'ethereum'; + +export interface VerifyResult { + /** The detected crypto interface, or 'none' if not detected */ + crypto: 'none' | KeypairType; + /** The validity for this result, false if invalid */ + isValid: boolean; + /** Flag to indicate if the passed data was wrapped in ... */ + isWrapped: boolean; + /** The extracted publicKey */ + publicKey: Uint8Array; +} diff --git a/packages/util-crypto/src/xxhash/asHex.spec.ts b/packages/util-crypto/src/xxhash/asHex.spec.ts new file mode 100644 index 0000000..7588805 --- /dev/null +++ b/packages/util-crypto/src/xxhash/asHex.spec.ts @@ -0,0 +1,36 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { waitReady } from '@pezkuwi/wasm-crypto'; + +import { xxhashAsHex } from './index.js'; + +describe('xxhashAsHex', (): void => { + beforeEach(async (): Promise => { + await waitReady(); + }); + + for (const onlyJs of [false, true]) { + describe(`onlyJs=${(onlyJs && 'true') || 'false'}`, (): void => { + it('returns a 64-bit value by default', (): void => { + expect( + xxhashAsHex('abc', undefined, onlyJs) + ).toEqual('0x990977adf52cbc44'); + }); + + it('returns a 128-bit value (as specified)', (): void => { + expect( + xxhashAsHex('abc', 128, onlyJs) + ).toEqual('0x990977adf52cbc440889329981caa9be'); + }); + + it('returns a 256-bit value (as specified)', (): void => { + expect( + xxhashAsHex('abc', 256, onlyJs) + ).toEqual('0x990977adf52cbc440889329981caa9bef7da5770b2b8a05303b75d95360dd62b'); + }); + }); + } +}); diff --git a/packages/util-crypto/src/xxhash/asU8a.spec.ts b/packages/util-crypto/src/xxhash/asU8a.spec.ts new file mode 100644 index 0000000..8e9d0e2 --- /dev/null +++ b/packages/util-crypto/src/xxhash/asU8a.spec.ts @@ -0,0 +1,48 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { hexToU8a } from '@pezkuwi/util'; +import { waitReady } from '@pezkuwi/wasm-crypto'; + +import { perfWasm } from '../test/index.js'; +import { xxhashAsU8a } from './index.js'; + +describe('xxhashAsU8a', (): void => { + beforeEach(async (): Promise => { + await waitReady(); + }); + + for (const onlyJs of [false, true]) { + describe(`onlyJs=${(onlyJs && 'true') || 'false'}`, (): void => { + it('returns a 64-bit value by default', (): void => { + expect( + xxhashAsU8a('abc', undefined, onlyJs) + ).toEqual( + hexToU8a('0x990977adf52cbc44') + ); + }); + + it('returns a 128-bit value (as specified', (): void => { + expect( + xxhashAsU8a('abc', 128, onlyJs) + ).toEqual( + hexToU8a('0x990977adf52cbc440889329981caa9be') + ); + }); + + it('returns a 256-bit value (as specified)', (): void => { + expect( + xxhashAsU8a('abc', 256, onlyJs) + ).toEqual( + hexToU8a('0x990977adf52cbc440889329981caa9bef7da5770b2b8a05303b75d95360dd62b') + ); + }); + }); + } + + perfWasm('xxhashAsU8a', 8000, (input, onlyJs) => + xxhashAsU8a(input, 128, onlyJs) + ); +}); diff --git a/packages/util-crypto/src/xxhash/asU8a.ts b/packages/util-crypto/src/xxhash/asU8a.ts new file mode 100644 index 0000000..3768065 --- /dev/null +++ b/packages/util-crypto/src/xxhash/asU8a.ts @@ -0,0 +1,45 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import { hasBigInt, u8aToU8a } from '@pezkuwi/util'; +import { isReady, twox } from '@pezkuwi/wasm-crypto'; + +import { createAsHex } from '../helpers.js'; +import { xxhash64 } from './xxhash64.js'; + +/** + * @name xxhashAsU8a + * @summary Creates a xxhash64 u8a from the input. + * @description + * From either a `string`, `Uint8Array` or a `Buffer` input, create the xxhash64 and return the result as a `Uint8Array` with the specified `bitLength`. + * @example + *
+ * + * ```javascript + * import { xxhashAsU8a } from '@pezkuwi/util-crypto'; + * + * xxhashAsU8a('abc'); // => 0x44bc2cf5ad770999 + * ``` + */ +export function xxhashAsU8a (data: string | Uint8Array, bitLength: 64 | 128 | 192 | 256 | 320 | 384 | 448 | 512 = 64, onlyJs?: boolean): Uint8Array { + const rounds = Math.ceil(bitLength / 64); + const u8a = u8aToU8a(data); + + if (!hasBigInt || (!onlyJs && isReady())) { + return twox(u8a, rounds); + } + + const result = new Uint8Array(rounds * 8); + + for (let seed = 0; seed < rounds; seed++) { + result.set(xxhash64(u8a, seed).reverse(), seed * 8); + } + + return result; +} + +/** + * @name xxhashAsHex + * @description Creates a xxhash64 hex from the input. + */ +export const xxhashAsHex = /*#__PURE__*/ createAsHex(xxhashAsU8a); diff --git a/packages/util-crypto/src/xxhash/index.ts b/packages/util-crypto/src/xxhash/index.ts new file mode 100644 index 0000000..6dcf780 --- /dev/null +++ b/packages/util-crypto/src/xxhash/index.ts @@ -0,0 +1,8 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/** + * @summary Create xxhash64 values with specified bitlengths + */ + +export { xxhashAsHex, xxhashAsU8a } from './asU8a.js'; diff --git a/packages/util-crypto/src/xxhash/xxhash64.ts b/packages/util-crypto/src/xxhash/xxhash64.ts new file mode 100644 index 0000000..801e3de --- /dev/null +++ b/packages/util-crypto/src/xxhash/xxhash64.ts @@ -0,0 +1,155 @@ +// Copyright 2017-2025 @polkadot/util-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import { _0n, _1n } from '@pezkuwi/util'; +import { BigInt } from '@pezkuwi/x-bigint'; + +// Adapted from https://github.com/pierrec/js-xxhash/blob/0504e76f3d31a21ae8528a7f590c7289c9e431d2/lib/xxhash64.js +// +// xxHash64 implementation in pure Javascript +// Copyright (C) 2016, Pierre Curto +// MIT license +// +// Changes made: +// - converted to TypeScript +// - uses native JS BigInt (no external dependencies) +// - support only for Uint8Array inputs +// - no constructor function, straight fill & digest +// - update code removed, only called once, no streams +// - inline single-use functions + +interface State { + seed: bigint; + u8a: Uint8Array; + u8asize: number; + v1: bigint; + v2: bigint; + v3: bigint; + v4: bigint; +} + +const P64_1 = BigInt('11400714785074694791'); +const P64_2 = BigInt('14029467366897019727'); +const P64_3 = BigInt('1609587929392839161'); +const P64_4 = BigInt('9650029242287828579'); +const P64_5 = BigInt('2870177450012600261'); + +// mask for a u64, all bits set +const U64 = BigInt('0xffffffffffffffff'); + +// various constants +const _7n = BigInt(7); +const _11n = BigInt(11); +const _12n = BigInt(12); +const _16n = BigInt(16); +const _18n = BigInt(18); +const _23n = BigInt(23); +const _27n = BigInt(27); +const _29n = BigInt(29); +const _31n = BigInt(31); +const _32n = BigInt(32); +const _33n = BigInt(33); +const _64n = BigInt(64); +const _256n = BigInt(256); + +function rotl (a: bigint, b: bigint): bigint { + const c = a & U64; + + return ((c << b) | (c >> (_64n - b))) & U64; +} + +function fromU8a (u8a: Uint8Array, p: number, count: 2 | 4): bigint { + const bigints = new Array(count); + let offset = 0; + + for (let i = 0; i < count; i++, offset += 2) { + bigints[i] = BigInt(u8a[p + offset] | (u8a[p + 1 + offset] << 8)); + } + + let result = _0n; + + for (let i = count - 1; i >= 0; i--) { + result = (result << _16n) + bigints[i]; + } + + return result; +} + +function init (seed: bigint, input: Uint8Array): State { + const state = { + seed, + u8a: new Uint8Array(32), + u8asize: 0, + v1: seed + P64_1 + P64_2, + v2: seed + P64_2, + v3: seed, + v4: seed - P64_1 + }; + + if (input.length < 32) { + state.u8a.set(input); + state.u8asize = input.length; + + return state; + } + + const limit = input.length - 32; + let p = 0; + + if (limit >= 0) { + const adjustV = (v: bigint) => + P64_1 * rotl(v + P64_2 * fromU8a(input, p, 4), _31n); + + do { + state.v1 = adjustV(state.v1); p += 8; + state.v2 = adjustV(state.v2); p += 8; + state.v3 = adjustV(state.v3); p += 8; + state.v4 = adjustV(state.v4); p += 8; + } while (p <= limit); + } + + if (p < input.length) { + state.u8a.set(input.subarray(p, input.length)); + state.u8asize = input.length - p; + } + + return state; +} + +export function xxhash64 (input: Uint8Array, initSeed: bigint | number): Uint8Array { + const { seed, u8a, u8asize, v1, v2, v3, v4 } = init(BigInt(initSeed), input); + let p = 0; + let h64 = U64 & (BigInt(input.length) + ( + input.length >= 32 + ? (((((((((rotl(v1, _1n) + rotl(v2, _7n) + rotl(v3, _12n) + rotl(v4, _18n)) ^ (P64_1 * rotl(v1 * P64_2, _31n))) * P64_1 + P64_4) ^ (P64_1 * rotl(v2 * P64_2, _31n))) * P64_1 + P64_4) ^ (P64_1 * rotl(v3 * P64_2, _31n))) * P64_1 + P64_4) ^ (P64_1 * rotl(v4 * P64_2, _31n))) * P64_1 + P64_4) + : (seed + P64_5) + )); + + while (p <= (u8asize - 8)) { + h64 = U64 & (P64_4 + P64_1 * rotl(h64 ^ (P64_1 * rotl(P64_2 * fromU8a(u8a, p, 4), _31n)), _27n)); + p += 8; + } + + if ((p + 4) <= u8asize) { + h64 = U64 & (P64_3 + P64_2 * rotl(h64 ^ (P64_1 * fromU8a(u8a, p, 2)), _23n)); + p += 4; + } + + while (p < u8asize) { + h64 = U64 & (P64_1 * rotl(h64 ^ (P64_5 * BigInt(u8a[p++])), _11n)); + } + + h64 = U64 & (P64_2 * (h64 ^ (h64 >> _33n))); + h64 = U64 & (P64_3 * (h64 ^ (h64 >> _29n))); + h64 = U64 & (h64 ^ (h64 >> _32n)); + + const result = new Uint8Array(8); + + for (let i = 7; i >= 0; i--) { + result[i] = Number(h64 % _256n); + + h64 = h64 / _256n; + } + + return result; +} diff --git a/packages/util-crypto/tsconfig.build.json b/packages/util-crypto/tsconfig.build.json new file mode 100644 index 0000000..e433461 --- /dev/null +++ b/packages/util-crypto/tsconfig.build.json @@ -0,0 +1,18 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "baseUrl": "..", + "outDir": "./build", + "rootDir": "./src" + }, + "exclude": [ + "**/mod.ts", + "**/*.spec.ts" + ], + "references": [ + { "path": "../networks/tsconfig.build.json" }, + { "path": "../util/tsconfig.build.json" }, + { "path": "../x-bigint/tsconfig.build.json" }, + { "path": "../x-randomvalues/tsconfig.build.json" } + ] +} diff --git a/packages/util-crypto/tsconfig.spec.json b/packages/util-crypto/tsconfig.spec.json new file mode 100644 index 0000000..b76daa1 --- /dev/null +++ b/packages/util-crypto/tsconfig.spec.json @@ -0,0 +1,20 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "baseUrl": "..", + "outDir": "./build", + "rootDir": "./src", + "emitDeclarationOnly": false, + "noEmit": true + }, + "include": [ + "**/*.spec.ts" + ], + "references": [ + { "path": "../networks/tsconfig.build.json" }, + { "path": "../util/tsconfig.build.json" }, + { "path": "../util-crypto/tsconfig.build.json" }, + { "path": "../x-bigint/tsconfig.build.json" }, + { "path": "../x-randomvalues/tsconfig.build.json" } + ] +} diff --git a/packages/util/README.md b/packages/util/README.md new file mode 100644 index 0000000..cc8c8ca --- /dev/null +++ b/packages/util/README.md @@ -0,0 +1,17 @@ +# @pezkuwi/util + +Various useful utility functions that are used across all projects in the [@pezkuwi](https://pezkuwi.js.org) namespace. It provides utility functions with additional safety checks, allowing not only for consistent coding, but also reducing the general boilerplate. + +## Usage + +Installation - + +``` +yarn add @pezkuwi/util +``` + +Functions can be imported directly from the package, e.g. + +```js +import { isHex } from '@pezkuwi/util'; +``` diff --git a/packages/util/package.json b/packages/util/package.json new file mode 100644 index 0000000..a2a5973 --- /dev/null +++ b/packages/util/package.json @@ -0,0 +1,49 @@ +{ + "author": "Jaco Greeff ", + "bugs": "https://github.com/pezkuwichain/pezkuwi-common/issues", + "description": "A collection of useful utilities for @pezkuwi", + "engines": { + "node": ">=18" + }, + "homepage": "https://github.com/pezkuwichain/pezkuwi-common/tree/master/packages/util#readme", + "license": "Apache-2.0", + "name": "@pezkuwi/util", + "repository": { + "directory": "packages/util", + "type": "git", + "url": "https://github.com/pezkuwichain/pezkuwi-common.git" + }, + "sideEffects": [ + "./packageDetect.js", + "./packageDetect.cjs" + ], + "type": "module", + "version": "14.0.1", + "main": "index.js", + "exports": { + "./hex/toU8a": { + "node": { + "require": "./cjs/hex/toU8aBuffer.js", + "default": "./hex/toU8aBuffer.js" + } + }, + "./u8a/toHex": { + "node": { + "require": "./cjs/u8a/toHexBuffer.js", + "default": "./u8a/toHexBuffer.js" + } + } + }, + "dependencies": { + "@pezkuwi/x-bigint": "14.0.1", + "@pezkuwi/x-global": "14.0.1", + "@pezkuwi/x-textdecoder": "14.0.1", + "@pezkuwi/x-textencoder": "14.0.1", + "@types/bn.js": "^5.1.6", + "bn.js": "^5.2.1", + "tslib": "^2.8.0" + }, + "devDependencies": { + "@pezkuwi/x-randomvalues": "14.0.1" + } +} diff --git a/packages/util/src/array/chunk.spec.ts b/packages/util/src/array/chunk.spec.ts new file mode 100644 index 0000000..74bb899 --- /dev/null +++ b/packages/util/src/array/chunk.spec.ts @@ -0,0 +1,29 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { arrayChunk, arrayRange } from '../index.js'; +import { perf } from '../test/index.js'; + +describe('arrayChunk', (): void => { + it('chunks with exact', (): void => { + expect( + arrayChunk([1, 2, 3, 4, 5, 6, 7, 8], 8) + ).toEqual([[1, 2, 3, 4, 5, 6, 7, 8]]); + }); + + it('chunks with unequal', (): void => { + expect( + arrayChunk([1, 2, 3, 4, 5, 6, 7], 3) + ).toEqual([[1, 2, 3], [4, 5, 6], [7]]); + }); + + it('chunks with non-empty results', (): void => { + expect( + arrayChunk([[1, 2], [3, 4], [5, 6], [7, 8]], 2) + ).toEqual([[[1, 2], [3, 4]], [[5, 6], [7, 8]]]); + }); + + perf('arrayChunk', 200_000, [[arrayRange(500), 50]], arrayChunk); +}); diff --git a/packages/util/src/array/chunk.ts b/packages/util/src/array/chunk.ts new file mode 100644 index 0000000..6d1ac09 --- /dev/null +++ b/packages/util/src/array/chunk.ts @@ -0,0 +1,35 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/** + * @name arrayChunk + * @summary Split T[] into T[][] based on the defind size + * @description + * Returns a set ao arrays based on the chunksize + * @example + *
+ * + * ```javascript + * import { arrayChunk } from '@pezkuwi/util'; + * + * arrayChunk([1, 2, 3, 4, 5]); // [[1, 2], [3, 4], [5]] + * ``` + */ +export function arrayChunk (array: T[], chunkSize: number): T[][] { + const outputSize = Math.ceil(array.length / chunkSize); + + // shortcut for the single-split case + if (outputSize === 1) { + return [array]; + } + + const output = Array(outputSize); + + for (let i = 0; i < outputSize; i++) { + const offset = i * chunkSize; + + output[i] = array.slice(offset, offset + chunkSize); + } + + return output; +} diff --git a/packages/util/src/array/filter.spec.ts b/packages/util/src/array/filter.spec.ts new file mode 100644 index 0000000..f6c187d --- /dev/null +++ b/packages/util/src/array/filter.spec.ts @@ -0,0 +1,20 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { arrayFilter } from './index.js'; + +describe('filterArray', (): void => { + it('filters arrays, removing undefined', (): void => { + expect( + arrayFilter([0, '', null, false, undefined, NaN]) + ).toEqual([0, '', null, false, NaN]); + }); + + it('filters arrays, removing undefined & null (allowNull = false)', (): void => { + expect( + arrayFilter([0, '', null, false, undefined, NaN], false) + ).toEqual([0, '', false, NaN]); + }); +}); diff --git a/packages/util/src/array/filter.ts b/packages/util/src/array/filter.ts new file mode 100644 index 0000000..d8fd58a --- /dev/null +++ b/packages/util/src/array/filter.ts @@ -0,0 +1,24 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/** + * @name arrayFilter + * @summary Filters undefined and (optionally) null values from an array + * @description + * Returns a new array with all `undefined` values removed. Optionally, when `allowNulls = false`, it removes the `null` values as well + * @example + *
+ * + * ```javascript + * import { arrayFilter } from '@pezkuwi/util'; + * + * arrayFilter([0, void 0, true, null, false, '']); // [0, true, null, false, ''] + * arrayFilter([0, void 0, true, null, false, ''], false); // [0, true, false, ''] + * ``` + */ +export function arrayFilter (array: readonly (T | null | undefined)[], allowNulls = true): T[] { + return array.filter((v): v is T => + v !== undefined && + (allowNulls || v !== null) + ); +} diff --git a/packages/util/src/array/flatten.spec.ts b/packages/util/src/array/flatten.spec.ts new file mode 100644 index 0000000..e352700 --- /dev/null +++ b/packages/util/src/array/flatten.spec.ts @@ -0,0 +1,33 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { perf } from '../test/index.js'; +import { arrayFlatten } from './index.js'; + +const PERF_ONE = [[1, 2, 3, 4, 5]]; +const PERF_MUL = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]; + +describe('arrayFlatten', (): void => { + it('flattens arrays', (): void => { + expect( + arrayFlatten([[0], [1, 2, 3], [4, 5], [6], [], [7, 8]]) + ).toEqual([0, 1, 2, 3, 4, 5, 6, 7, 8]); + }); + + it('flattens a single entry', (): void => { + expect( + arrayFlatten([[1, 2, 3, 4, 5]]) + ).toEqual([1, 2, 3, 4, 5]); + }); + + it('flattens an empty', (): void => { + expect( + arrayFlatten([]) + ).toEqual([]); + }); + + perf('arrayFlatten (single)', 10_000_000, [[PERF_ONE]], arrayFlatten); + perf('arrayFlatten (multi)', 700_000, [[PERF_MUL]], arrayFlatten); +}); diff --git a/packages/util/src/array/flatten.ts b/packages/util/src/array/flatten.ts new file mode 100644 index 0000000..ff18a1c --- /dev/null +++ b/packages/util/src/array/flatten.ts @@ -0,0 +1,51 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +// This is supposed to be a faster concat... +// https://dev.to/uilicious/javascript-array-push-is-945x-faster-than-array-concat-1oki + +/** + * @name arrayFlatten + * @summary Merge T[][] into T[] + * @description + * Returns a new array with all arrays merged into one + * @example + *
+ * + * ```javascript + * import { arrayFlatten } from '@pezkuwi/util'; + * + * arrayFlatten([[1, 2], [3, 4], [5]]); // [1, 2, 3, 4, 5] + * ``` + */ +export function arrayFlatten (arrays: readonly T[][]): T[] { + const num = arrays.length; + + // shortcuts for the empty & single-entry case + if (num === 0) { + return []; + } else if (num === 1) { + return arrays[0]; + } + + // pre-allocate based on the combined size + let size = 0; + + for (let i = 0; i < num; i++) { + size += arrays[i].length; + } + + const output = new Array(size); + let i = -1; + + for (let j = 0; j < num; j++) { + const a = arrays[j]; + + // instead of pushing, we just set the entries + for (let e = 0, count = a.length; e < count; e++) { + output[++i] = a[e]; + } + } + + return output; +} diff --git a/packages/util/src/array/index.ts b/packages/util/src/array/index.ts new file mode 100644 index 0000000..803a727 --- /dev/null +++ b/packages/util/src/array/index.ts @@ -0,0 +1,14 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/** + * @summary Utility methods that operates on arrays + */ + +export { arrayChunk } from './chunk.js'; +export { arrayFilter } from './filter.js'; +export { arrayFlatten } from './flatten.js'; +export { arrayRange } from './range.js'; +export { arrayShuffle } from './shuffle.js'; +export { arrayUnzip } from './unzip.js'; +export { arrayZip } from './zip.js'; diff --git a/packages/util/src/array/range.spec.ts b/packages/util/src/array/range.spec.ts new file mode 100644 index 0000000..ed56946 --- /dev/null +++ b/packages/util/src/array/range.spec.ts @@ -0,0 +1,29 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { perf } from '../test/index.js'; +import { arrayRange } from './index.js'; + +describe('arrayRange', (): void => { + it('does not allow 0 values', (): void => { + expect( + () => arrayRange(0) + ).toThrow(/Expected non-zero, positive number as a range size/); + }); + + it('creates a range of the specified length', (): void => { + expect( + arrayRange(10) + ).toEqual([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]); + }); + + it('creates a range of the specified length, with offset', (): void => { + expect( + arrayRange(7, 3) + ).toEqual([3, 4, 5, 6, 7, 8, 9]); + }); + + perf('arrayRange (100 entries)', 1_000_000, [[100]], arrayRange); +}); diff --git a/packages/util/src/array/range.ts b/packages/util/src/array/range.ts new file mode 100644 index 0000000..4341f79 --- /dev/null +++ b/packages/util/src/array/range.ts @@ -0,0 +1,31 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/** + * @name arrayRange + * @summary Returns a range of numbers ith the size and the specified offset + * @description + * Returns a new array of numbers with the specific size. Optionally, when `startAt`, is provided, it generates the range to start at a specific value. + * @example + *
+ * + * ```javascript + * import { arrayRange } from '@pezkuwi/util'; + * + * arrayRange(5); // [0, 1, 2, 3, 4] + * arrayRange(3, 5); // [5, 6, 7] + * ``` + */ +export function arrayRange (size: number, startAt = 0): number[] { + if (size <= 0) { + throw new Error('Expected non-zero, positive number as a range size'); + } + + const result = new Array(size); + + for (let i = 0; i < size; i++) { + result[i] = i + startAt; + } + + return result; +} diff --git a/packages/util/src/array/shuffle.spec.ts b/packages/util/src/array/shuffle.spec.ts new file mode 100644 index 0000000..d05206c --- /dev/null +++ b/packages/util/src/array/shuffle.spec.ts @@ -0,0 +1,39 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { stringify } from '../stringify.js'; +import { perf } from '../test/index.js'; +import { arrayRange, arrayShuffle } from './index.js'; + +const ptest = arrayRange(16284); + +describe('arrayShuffle', (): void => { + it('returns an empty array as-is', (): void => { + expect( + arrayShuffle([]) + ).toEqual([]); + }); + + it('returns a single array as-is', (): void => { + expect( + arrayShuffle([100]) + ).toEqual([100]); + }); + + it('shuffles an array', (): void => { + const inp = arrayRange(100); + const out = arrayShuffle(inp); + + expect(inp).toHaveLength(out.length); + expect( + inp.filter((v) => !out.includes(v)) + ).toEqual([]); + expect( + stringify(inp) + ).not.toEqual(stringify(out)); + }); + + perf('arrayShuffle', 1000, [[ptest]], arrayShuffle); +}); diff --git a/packages/util/src/array/shuffle.ts b/packages/util/src/array/shuffle.ts new file mode 100644 index 0000000..8fa381a --- /dev/null +++ b/packages/util/src/array/shuffle.ts @@ -0,0 +1,27 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/** + * @name arrayShuffle + * @description Shuffles the input array (unlike sort, this is not done in-place) + */ +export function arrayShuffle (input: readonly T[]): T[] { + const result = input.slice(); + let curr = result.length; + + // noop for the single entry + if (curr === 1) { + return result; + } + + while (curr !== 0) { + // ~~ is more performant than Math.floor + const rand = ~~(Math.random() * curr); + + curr--; + + [result[curr], result[rand]] = [result[rand], result[curr]]; + } + + return result; +} diff --git a/packages/util/src/array/unzip.spec.ts b/packages/util/src/array/unzip.spec.ts new file mode 100644 index 0000000..0d865e4 --- /dev/null +++ b/packages/util/src/array/unzip.spec.ts @@ -0,0 +1,14 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { arrayUnzip } from './index.js'; + +describe('arrayUnzip', (): void => { + it('unzips entries', (): void => { + expect( + arrayUnzip([['a', 1], ['b', 2], ['c', 3]]) + ).toEqual([['a', 'b', 'c'], [1, 2, 3]]); + }); +}); diff --git a/packages/util/src/array/unzip.ts b/packages/util/src/array/unzip.ts new file mode 100644 index 0000000..b512768 --- /dev/null +++ b/packages/util/src/array/unzip.ts @@ -0,0 +1,18 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/** + * @name arrayUnzip + * @description Splits a single [K, V][] into [K[], V[]] + */ +export function arrayUnzip (entries: readonly [K, V][]): [K[], V[]] { + const count = entries.length; + const keys = new Array(count); + const values = new Array(count); + + for (let i = 0; i < count; i++) { + [keys[i], values[i]] = entries[i]; + } + + return [keys, values]; +} diff --git a/packages/util/src/array/zip.spec.ts b/packages/util/src/array/zip.spec.ts new file mode 100644 index 0000000..ab8a735 --- /dev/null +++ b/packages/util/src/array/zip.spec.ts @@ -0,0 +1,26 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { arrayZip } from './index.js'; + +describe('arrayZip', (): void => { + it('zips a simple one', (): void => { + expect( + arrayZip(['a', 'b', 'c'], [1, 2, 3]) + ).toEqual([['a', 1], ['b', 2], ['c', 3]]); + }); + + it('zips where values > keys', (): void => { + expect( + arrayZip(['a', 'b', 'c'], [1, 2, 3, 4]) + ).toEqual([['a', 1], ['b', 2], ['c', 3]]); + }); + + it('zips where values < keys', (): void => { + expect( + arrayZip(['a', 'b', 'c'], [1, 2]) + ).toEqual([['a', 1], ['b', 2], ['c', undefined]]); + }); +}); diff --git a/packages/util/src/array/zip.ts b/packages/util/src/array/zip.ts new file mode 100644 index 0000000..5b2494a --- /dev/null +++ b/packages/util/src/array/zip.ts @@ -0,0 +1,17 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/** + * @name arrayZip + * @description Combines 2 distinct key/value arrays into a single [K, V] array + */ +export function arrayZip (keys: readonly K[], values: readonly V[]): [K, V][] { + const count = keys.length; + const result = new Array<[K, V]>(count); + + for (let i = 0; i < count; i++) { + result[i] = [keys[i], values[i]]; + } + + return result; +} diff --git a/packages/util/src/assert.spec.ts b/packages/util/src/assert.spec.ts new file mode 100644 index 0000000..4cffea6 --- /dev/null +++ b/packages/util/src/assert.spec.ts @@ -0,0 +1,40 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { assert, assertReturn } from './index.js'; + +describe('assert', (): void => { + it('should not throw an error when test is true', (): void => { + assert(true, 'nothing should be thrown'); + }); + + it('should throw an error when test is not true', (): void => { + expect( + () => assert(false, 'error thrown') + ).toThrow(/error thrown/); + }); + + it('should throw an error when message: () => string', (): void => { + expect( + () => assert(false, (): string => 'message from function') + ).toThrow(/message from function/); + }); +}); + +describe('assertReturn', (): void => { + it('should not throw an error when result is true', (): void => { + expect(assertReturn(true, 'nothing should be thrown')).toEqual(true); + }); + + it('should not throw an error when result is false', (): void => { + expect(assertReturn(false, 'nothing should be thrown')).toEqual(false); + }); + + it('should throw an error when result is undefined', (): void => { + expect( + () => assertReturn(undefined, 'something thrown') + ).toThrow(/something thrown/); + }); +}); diff --git a/packages/util/src/assert.ts b/packages/util/src/assert.ts new file mode 100644 index 0000000..7c6e463 --- /dev/null +++ b/packages/util/src/assert.ts @@ -0,0 +1,50 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import { isFunction } from './is/function.js'; + +type MessageFn = () => string; + +/** + * @name assert + * @summary Checks for a valid test, if not Error is thrown. + * @description + * Checks that `test` is a truthy value. If value is falsy (`null`, `undefined`, `false`, ...), it throws an Error with the supplied `message`. When `test` passes, `true` is returned. + * @example + *
+ * + * ```javascript + * const { assert } from '@pezkuwi/util'; + * + * assert(true, 'True should be true'); // passes + * assert(false, 'False should not be true'); // Error thrown + * assert(false, () => 'message'); // Error with 'message' + * ``` + */ +export function assert (condition: unknown, message: string | MessageFn): asserts condition { + if (!condition) { + throw new Error( + isFunction(message) + ? message() + : message + ); + } +} + +/** + * @name assertReturn + * @description Returns when the value is not undefined/null, otherwise throws assertion error + */ +export function assertReturn (value: T | undefined | null, message: string | MessageFn): T { + assert(value !== undefined && value !== null, message); + + return value; +} + +/** + * @name assertUnreachable + * @description An assertion helper that ensures all codepaths are followed + */ +export function assertUnreachable (x: never): never { + throw new Error(`This codepath should be unreachable. Unhandled input: ${x as unknown as string}`); +} diff --git a/packages/util/src/bi/consts.ts b/packages/util/src/bi/consts.ts new file mode 100644 index 0000000..905d950 --- /dev/null +++ b/packages/util/src/bi/consts.ts @@ -0,0 +1,112 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import { BigInt } from '@pezkuwi/x-bigint'; + +/** + * @name _0n + * @summary BigInt constant for 0. + */ +export const _0n = /*#__PURE__*/ BigInt(0); + +/** + * @name _1n + * @summary BigInt constant for 1. + */ +export const _1n = /*#__PURE__*/ BigInt(1); + +/** + * @name _2n + * @summary BigInt constant for 2. + */ +export const _2n = /*#__PURE__*/ BigInt(2); + +/** + * @name _3n + * @summary BigInt constant for 3. + */ +export const _3n = /*#__PURE__*/ BigInt(3); + +/** + * @name _4n + * @summary BigInt constant for 4. + */ +export const _4n = /*#__PURE__*/ BigInt(4); + +/** + * @name _5n + * @summary BigInt constant for 5. + */ +export const _5n = /*#__PURE__*/ BigInt(5); + +/** + * @name _6n + * @summary BigInt constant for 6. + */ +export const _6n = /*#__PURE__*/ BigInt(6); + +/** + * @name _7n + * @summary BigInt constant for 7. + */ +export const _7n = /*#__PURE__*/ BigInt(7); + +/** + * @name _8n + * @summary BigInt constant for 8. + */ +export const _8n = /*#__PURE__*/ BigInt(8); + +/** + * @name _9n + * @summary BigInt constant for 9. + */ +export const _9n = /*#__PURE__*/ BigInt(9); + +/** + * @name _10n + * @summary BigInt constant for 10. + */ +export const _10n = /*#__PURE__*/ BigInt(10); + +/** + * @name _100n + * @summary BigInt constant for 100. + */ +export const _100n = /*#__PURE__*/ BigInt(100); + +/** + * @name _1000n + * @summary BigInt constant for 1000. + */ +export const _1000n = /*#__PURE__*/ BigInt(1_000); + +/** + * @name _1Mn + * @summary BigInt constant for 1,000,000 (million). + */ +export const _1Mn = /*#__PURE__*/ BigInt(1_000_000); + +/** +* @name _1Bn +* @summary BigInt constant for 1,000,000,000 (billion). +*/ +export const _1Bn = /*#__PURE__*/ BigInt(1_000_000_000); + +/** +* @name _1Qn +* @summary BigInt constant for 1,000,000,000,000,000,000 (quitillion). +*/ +export const _1Qn = _1Bn * _1Bn; + +/** +* @name _2pow53n +* @summary BigInt constant for MAX_SAFE_INTEGER +*/ +export const _2pow53n = /*#__PURE__*/ BigInt(Number.MAX_SAFE_INTEGER); + +/** + * @name _sqrt2pow53n + * @summary BigInt constant for Math.sqrt(MAX_SAFE_INTEGER) + */ +export const _sqrt2pow53n = /*#__PURE__*/ BigInt(94906265); diff --git a/packages/util/src/bi/helpers.ts b/packages/util/src/bi/helpers.ts new file mode 100644 index 0000000..bf0576c --- /dev/null +++ b/packages/util/src/bi/helpers.ts @@ -0,0 +1,23 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/** @internal */ +export function createCmp (cmp: (a: T, b: T) => boolean): (...items: T[]) => T { + return (...items: T[]): T => { + const count = items.length; + + if (count === 0) { + throw new Error('Must provide one or more arguments'); + } + + let result = items[0]; + + for (let i = 1; i < count; i++) { + if (cmp(items[i], result)) { + result = items[i]; + } + } + + return result; + }; +} diff --git a/packages/util/src/bi/index.ts b/packages/util/src/bi/index.ts new file mode 100644 index 0000000..95d4ad2 --- /dev/null +++ b/packages/util/src/bi/index.ts @@ -0,0 +1,16 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/** + * @summary Utility methods to convert to and from `bigint` objects + */ + +// all named +export { nMax, nMin } from './min.js'; +export { nSqrt } from './sqrt.js'; +export { nToBigInt } from './toBigInt.js'; +export { nToHex } from './toHex.js'; +export { nToU8a } from './toU8a.js'; + +// all starred +export * from './consts.js'; diff --git a/packages/util/src/bi/max.spec.ts b/packages/util/src/bi/max.spec.ts new file mode 100644 index 0000000..172d007 --- /dev/null +++ b/packages/util/src/bi/max.spec.ts @@ -0,0 +1,32 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { nMax } from './index.js'; + +describe('nMax', (): void => { + it('finds maximum (sorted)', (): void => { + expect( + nMax(1n, 2n, 3n) + ).toEqual(3n); + }); + + it('finds maximum (unsorted)', (): void => { + expect( + nMax(2n, 3n, 1n) + ).toEqual(3n); + }); + + it('returns a single item', (): void => { + expect( + nMax(1n) + ).toEqual(1n); + }); + + it('fails when no items are available', (): void => { + expect( + () => nMax() + ).toThrow(/Must provide one or more arguments/); + }); +}); diff --git a/packages/util/src/bi/min.spec.ts b/packages/util/src/bi/min.spec.ts new file mode 100644 index 0000000..9204b1c --- /dev/null +++ b/packages/util/src/bi/min.spec.ts @@ -0,0 +1,26 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { nMin } from './index.js'; + +describe('nMin', (): void => { + it('finds BN minimum', (): void => { + expect( + nMin(2n, 1n, 3n) + ).toEqual(1n); + }); + + it('returns a single item', (): void => { + expect( + nMin(1n) + ).toEqual(1n); + }); + + it('fails when no items are available', (): void => { + expect( + () => nMin() + ).toThrow(/Must provide one or more arguments/); + }); +}); diff --git a/packages/util/src/bi/min.ts b/packages/util/src/bi/min.ts new file mode 100644 index 0000000..4a05257 --- /dev/null +++ b/packages/util/src/bi/min.ts @@ -0,0 +1,16 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import { createCmp } from './helpers.js'; + +/** + * @name nMax + * @summary Finds and returns the highest value in an array of bigint. + */ +export const nMax = /*#__PURE__*/ createCmp((a, b) => a > b); + +/** + * @name nMin + * @summary Finds and returns the lowest value in an array of bigint. + */ +export const nMin = /*#__PURE__*/ createCmp((a, b) => a < b); diff --git a/packages/util/src/bi/sqrt.spec.ts b/packages/util/src/bi/sqrt.spec.ts new file mode 100644 index 0000000..ae32ec2 --- /dev/null +++ b/packages/util/src/bi/sqrt.spec.ts @@ -0,0 +1,59 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { BN } from '../bn/index.js'; +import { _sqrt2pow53n, nSqrt } from './index.js'; + +// eslint-disable-next-line jest/no-export +export const TESTS: [value: string | number | BN | bigint, expected: string | number][] = [ + [0, 0], + [1, 1], + [4, 2], + [256 * 256, 256], + [Number.MAX_SAFE_INTEGER, 94906265], + [new BN(Number.MAX_SAFE_INTEGER).iaddn(256), 94906265], + [12345678n * 12345679n, 12345678], + // test cases below from https://github.com/Aisse-258/bigint-isqrt/blob/f5254b9750841959022461c1353437a07a08f501/test/sqrt-test.js + [ + '54866395443885995655625', + '234235768925' + ], + [ + '82120471531550314555681345949499512621827274120673745141541602816614526075010755373654280259022317599142038423759320355177481886719814621305828811322920076213800348341464996337890625', + '9062034624274524065844376014975805577107171799890766992670739972241112960081909332275390625' + ], + [ + '2068290204957779940494571454815902632050207752627007664813877111611972735314294907791993008455381265730624848057015476004143868408297250386512042711005577373327434315310235583583151773358353534031397385969275475421659036494173765903706963544628565027679444680637920371210258368358706248446698622704138943704561842220533563976838506992543814273403403362954987589637283890281226038798503294069403370486523697009383229578343444337394508531937972775639593763364402389410142290440075517598007930025487176173228232153685095699851764630884360483051570513804913157899314303269924424908606245851172031453725690942288677622973423417902662711606364188470325930406288190754356367655606430407552275285889968860367977288564364154999338284288438279464648663835830140826171534470717958048887869721791862539529444820484648908879364324577951008050851801647916673254009490596379549192296404841454780884358889449367135382779230574781333008561195244620152128505091883408484094800737142399855337799331037607433934520934135669364954550499058123797911762228642423567268540444910163468496805547450495819213412636594319148417857753712526066272727725420886898680432958409892237191284583904066400736417812258327303739879128916456683685232170600928808798462776174857486589598776587550843543720784829419478239563366491666155716208452087857080883906200829769222868347286071365156305396955420561718593130305703074908891135467193627721682044757187980688062367562451981939375400543212890625', + '45478458691536369397924851088318871329614555665525810477032568598360481742967756704524034986984134271202405190906906195123751965012732122548540879928668891416468847696038707003466943811913626146981446753434347552196868717612248915137033581428310504778371173112125038060138252719589122657221314190626986951627417768579641354255445988772645883238873672997347648890137913979299598785628581961589739331483895853398160785485300758458294999124984266041998145956341386549681176624661615465976970855592467853824812945820721933491609237311130118125761849911376495970746282571994312288380577879004620824004760109618074670810797544446334767103935754106103208789391060008291027361311679876439695844637933763721093782805837690830230712890625' + ] +]; + +describe('nSqrt', (): void => { + it('fails on < 0 roots', (): void => { + expect( + () => nSqrt(-1n) + ).toThrow(/negative numbers is not supported/); + }); + + it('has the correct constant for sqrt(Number.MAX_SAFE_INTEGER)', (): void => { + expect( + BigInt( + ~~Math.sqrt( + Number.MAX_SAFE_INTEGER + ) + ) === _sqrt2pow53n + ).toEqual(true); + }); + + describe('conversion tests', (): void => { + TESTS.forEach(([value, expected], i): void => { + it(`#${i}: calcs ${expected}`, (): void => { + expect( + nSqrt(value) === BigInt(expected) + ).toEqual(true); + }); + }); + }); +}); diff --git a/packages/util/src/bi/sqrt.ts b/packages/util/src/bi/sqrt.ts new file mode 100644 index 0000000..ff627e3 --- /dev/null +++ b/packages/util/src/bi/sqrt.ts @@ -0,0 +1,43 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { BN } from '../bn/index.js'; +import type { ToBigInt, ToBn } from '../types.js'; + +import { BigInt } from '@pezkuwi/x-bigint'; + +import { _0n, _1n, _2pow53n, _sqrt2pow53n } from './consts.js'; +import { nToBigInt } from './toBigInt.js'; + +/** + * @name nSqrt + * @summary Calculates the integer square root of a bigint + */ +export function nSqrt (value: ExtToBn | BN | bigint | string | number | null): bigint { + const n = nToBigInt(value); + + if (n < _0n) { + throw new Error('square root of negative numbers is not supported'); + } + + // https://stackoverflow.com/questions/53683995/javascript-big-integer-square-root/ + // shortcut <= 2^53 - 1 to use the JS utils + if (n <= _2pow53n) { + // ~~ is more performant that Math.floor + return BigInt(~~Math.sqrt(Number(n))); + } + + // Use sqrt(MAX_SAFE_INTEGER) as starting point. since we already know the + // output will be larger than this, we expect this to be a safe start + let x0 = _sqrt2pow53n; + + while (true) { + const x1 = ((n / x0) + x0) >> _1n; + + if (x0 === x1 || (x0 === (x1 - _1n))) { + return x0; + } + + x0 = x1; + } +} diff --git a/packages/util/src/bi/toBigInt.spec.ts b/packages/util/src/bi/toBigInt.spec.ts new file mode 100644 index 0000000..1df2805 --- /dev/null +++ b/packages/util/src/bi/toBigInt.spec.ts @@ -0,0 +1,69 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { BN } from '../bn/index.js'; +import { nToBigInt } from './index.js'; + +describe('nToBigInt', (): void => { + it('converts null values to 0x00', (): void => { + expect( + nToBigInt(null) + ).toEqual(0n); + }); + + it('converts 0x values to 0x00', (): void => { + expect( + nToBigInt('0x') + ).toEqual(0n); + }); + + it('converts BN values to bigint', (): void => { + expect( + nToBigInt(new BN(128)) + ).toEqual(128n); + }); + + it('converts BigInt values to bigint', (): void => { + expect( + nToBigInt(128821n) + ).toEqual(128821n); + }); + + it('converts number values to bigint', (): void => { + expect( + nToBigInt(128) + ).toEqual(128n); + }); + + it('converts string to bigint', (): void => { + expect( + nToBigInt('123') + ).toEqual(123n); + }); + + it('converts hex to bigint', (): void => { + expect( + nToBigInt('0x0123') + ).toEqual(0x123n); + }); + + it('converts Compact to bigint (via toBn)', (): void => { + expect( + nToBigInt({ + something: 'test', + toBn: () => new BN(1234) + }) + ).toEqual(1234n); + }); + + it('converts Compact to bigint (via toBigInt)', (): void => { + expect( + nToBigInt({ + something: 'test', + toBigInt: () => 1234n + }) + ).toEqual(1234n); + }); +}); diff --git a/packages/util/src/bi/toBigInt.ts b/packages/util/src/bi/toBigInt.ts new file mode 100644 index 0000000..62f71b3 --- /dev/null +++ b/packages/util/src/bi/toBigInt.ts @@ -0,0 +1,33 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { BN } from '../bn/bn.js'; +import type { ToBigInt, ToBn } from '../types.js'; + +import { BigInt } from '@pezkuwi/x-bigint'; + +import { hexToBigInt } from '../hex/toBigInt.js'; +import { isBn } from '../is/bn.js'; +import { isHex } from '../is/hex.js'; +import { isToBigInt } from '../is/toBigInt.js'; +import { isToBn } from '../is/toBn.js'; + +/** + * @name nToBigInt + * @summary Creates a bigInt value from a BN, bigint, string (base 10 or hex) or number input. + */ +export function nToBigInt (value?: ExtToBn | BN | bigint | string | number | null): bigint { + return typeof value === 'bigint' + ? value + : !value + ? BigInt(0) + : isHex(value) + ? hexToBigInt(value.toString()) + : isBn(value) + ? BigInt(value.toString()) + : isToBigInt(value) + ? value.toBigInt() + : isToBn(value) + ? BigInt(value.toBn().toString()) + : BigInt(value); +} diff --git a/packages/util/src/bi/toHex.spec.ts b/packages/util/src/bi/toHex.spec.ts new file mode 100644 index 0000000..4c5317d --- /dev/null +++ b/packages/util/src/bi/toHex.spec.ts @@ -0,0 +1,56 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { nToHex } from './index.js'; + +describe('nToHex', (): void => { + it('converts null values to 0x00', (): void => { + expect( + nToHex(null) + ).toBe('0x00'); + }); + + it('converts null values to 0x00000000 (with bitLength)', (): void => { + expect( + nToHex(null, { bitLength: 32 }) + ).toBe('0x00000000'); + }); + + it('converts values to a prefixed hex representation', (): void => { + expect( + nToHex(128) + ).toBe('0x80'); + }); + + it('converts values to a prefixed hex representation (bitLength)', (): void => { + expect( + nToHex(128n, { bitLength: 16 }) + ).toBe('0x0080'); + }); + + it('converts values to a prefixed hex representation (bitLength + le)', (): void => { + expect( + nToHex(128, { bitLength: 16, isLe: true }) + ).toBe('0x8000'); + }); + + it('converts values to a prefixed hex representation (LE)', (): void => { + expect( + nToHex(128, { bitLength: 16, isLe: true }) + ).toBe('0x8000'); + }); + + it('handles negative numbers', (): void => { + expect( + nToHex(-1234, { isNegative: true }) + ).toBe('0xfb2e'); + }); + + it('handles negative numbers (with bitLength)', (): void => { + expect( + nToHex(-1234, { bitLength: 32, isNegative: true }) + ).toBe('0xfffffb2e'); + }); +}); diff --git a/packages/util/src/bi/toHex.ts b/packages/util/src/bi/toHex.ts new file mode 100644 index 0000000..3bc2368 --- /dev/null +++ b/packages/util/src/bi/toHex.ts @@ -0,0 +1,16 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { BN } from '../bn/bn.js'; +import type { HexString, NumberOptions, ToBigInt, ToBn } from '../types.js'; + +import { u8aToHex } from '../u8a/index.js'; +import { nToU8a } from './toU8a.js'; + +/** + * @name nToHex + * @summary Creates a hex value from a bigint object. + */ +export function nToHex (value?: ExtToBn | BN | bigint | number | null, { bitLength = -1, isLe = false, isNegative = false }: NumberOptions = {}): HexString { + return u8aToHex(nToU8a(value || 0, { bitLength, isLe, isNegative })); +} diff --git a/packages/util/src/bi/toU8a.spec.ts b/packages/util/src/bi/toU8a.spec.ts new file mode 100644 index 0000000..1b3c2bd --- /dev/null +++ b/packages/util/src/bi/toU8a.spec.ts @@ -0,0 +1,99 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { arrayRange } from '../array/index.js'; +import { perf } from '../test/index.js'; +import { nToU8a } from './index.js'; + +// eslint-disable-next-line jest/no-export +export const TESTS: [isLe: boolean, isNegative: boolean, numarr: number[], strval: string][] = [ + // LE, positive numbers + [true, false, [0x12], '18'], + [true, false, [0x12, 0x34], '13330'], + [true, false, [0x12, 0x34, 0x56], '5649426'], + [true, false, [0x12, 0x34, 0x56, 0x78], '2018915346'], + [true, false, [0x12, 0x34, 0x56, 0x78, 0x9a], '663443878930'], + [true, false, [0x12, 0x34, 0x56, 0x78, 0x9a, 0xbc], '207371629900818'], + [true, false, [0x12, 0x34, 0x56, 0x78, 0x12, 0x34, 0x56, 0x78, 0x12, 0x34, 0x56, 0x78, 0x12, 0x34, 0x56, 0x78], '159954953172672629770948536149615195154'], + // LE, positive numbers (w/ signed flag) + [true, true, [12], '12'], + [true, true, [210, 4], '1234'], + [true, true, [64, 226, 1], '123456'], + [true, true, [21, 205, 91, 7], '123456789'], + [true, true, [203, 36, 104, 12, 8], '34567890123'], + [true, true, [255, 159, 114, 78, 24, 9], '9999999999999'], + // LE, negative numbers + [true, true, [244], '-12'], + [true, true, [46, 251], '-1234'], + [true, true, [192, 29, 254], '-123456'], + [true, true, [255, 255, 255, 255], '-1'], + [true, true, [254, 255, 255, 255], '-2'], + [true, true, [235, 50, 164, 248], '-123456789'], + [true, true, [0, 0, 0, 128], '-2147483648'], + [true, true, [0, 0, 0, 240], '-268435456'], + [true, true, [65, 86, 129, 173, 254], '-5678999999'], + [true, true, [1, 96, 141, 177, 231, 246], '-9999999999999'], + [true, true, [1, 0, 156, 88, 76, 73, 31, 242], '-999999999999999999'], + // BE + [false, false, [0x12], '18'], + [false, false, [0x12, 0x34], '4660'], + [false, false, [0x12, 0x34, 0x56], '1193046'], + [false, false, [0x12, 0x34, 0x56, 0x78], '305419896'], + [false, true, [0xf2, 0x34, 0x56, 0x78], '-231451016'], + [false, false, [0x12, 0x34, 0x56, 0x78, 0x9a], '78187493530'], + [false, false, [0x12, 0x34, 0x56, 0x78, 0x9a, 0xbc], '20015998343868'], + [false, false, [0x12, 0x34, 0x56, 0x78, 0x12, 0x34, 0x56, 0x78, 0x12, 0x34, 0x56, 0x78, 0x12, 0x34, 0x56, 0x78], '24197857161011715162171839636988778104'] +]; + +const ptest = arrayRange(65536).map((v) => [v]); + +describe('nToU8a', (): void => { + describe('conversion tests', (): void => { + TESTS.forEach(([isLe, isNegative, numarr, strval], i): void => { + const bitLength = numarr.length * 8; + + it(`#${i}: converts from ${strval} (bitLength=${bitLength}, isLe=${isLe}, isNegative=${isNegative})`, (): void => { + expect( + nToU8a( + BigInt(strval), + { bitLength, isLe, isNegative } + ) + ).toEqual(new Uint8Array(numarr)); + }); + }); + }); + + it('converts null values to 0x00', (): void => { + expect( + nToU8a(null) + ).toEqual(new Uint8Array(1)); + }); + + it('converts null values to 0x00000000 (bitLength)', (): void => { + expect( + nToU8a(null, { bitLength: 32 }) + ).toEqual(new Uint8Array([0, 0, 0, 0])); + }); + + it('converts values to a prefixed hex representation', (): void => { + expect( + nToU8a(0x123456n, { isLe: false }) + ).toEqual(new Uint8Array([0x12, 0x34, 0x56])); + }); + + it('converts values to a prefixed hex representation (bitLength)', (): void => { + expect( + nToU8a(0x123456n, { bitLength: 32, isLe: false }) + ).toEqual(new Uint8Array([0x00, 0x12, 0x34, 0x56])); + }); + + it('converts using little endian (as set)', (): void => { + expect( + nToU8a(0x123456n, { bitLength: 32, isLe: true }) + ).toEqual(new Uint8Array([0x56, 0x34, 0x12, 0x00])); + }); + + perf('nToU8a', 250000, ptest, nToU8a); +}); diff --git a/packages/util/src/bi/toU8a.ts b/packages/util/src/bi/toU8a.ts new file mode 100644 index 0000000..7b23f81 --- /dev/null +++ b/packages/util/src/bi/toU8a.ts @@ -0,0 +1,72 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { BN } from '../bn/bn.js'; +import type { NumberOptions, ToBigInt, ToBn } from '../types.js'; + +import { BigInt } from '@pezkuwi/x-bigint'; + +import { _0n, _1n } from './consts.js'; +import { nToBigInt } from './toBigInt.js'; + +const DIV = BigInt(256); +const NEG_MASK = BigInt(0xff); + +function toU8a (value: bigint, isLe: boolean, isNegative: boolean): Uint8Array { + const arr: number[] = []; + const withSigned = isNegative && (value < _0n); + + if (withSigned) { + value = (value + _1n) * -_1n; + } + + while (value !== _0n) { + const mod = value % DIV; + const val = Number( + withSigned + ? mod ^ NEG_MASK + : mod + ); + + if (isLe) { + arr.push(val); + } else { + arr.unshift(val); + } + + value = (value - mod) / DIV; + } + + return Uint8Array.from(arr); +} + +/** + * @name nToU8a + * @summary Creates a Uint8Array object from a bigint. + */ +export function nToU8a (value?: ExtToBn | BN | bigint | number | null, { bitLength = -1, isLe = true, isNegative = false }: NumberOptions = {}): Uint8Array { + const valueBi = nToBigInt(value); + + if (valueBi === _0n) { + return bitLength === -1 + ? new Uint8Array(1) + : new Uint8Array(Math.ceil((bitLength || 0) / 8)); + } + + const u8a = toU8a(valueBi, isLe, isNegative); + + if (bitLength === -1) { + return u8a; + } + + const byteLength = Math.ceil((bitLength || 0) / 8); + const output = new Uint8Array(byteLength); + + if (isNegative) { + output.fill(0xff); + } + + output.set(u8a, isLe ? 0 : byteLength - u8a.length); + + return output; +} diff --git a/packages/util/src/bn/bn.ts b/packages/util/src/bn/bn.ts new file mode 100644 index 0000000..e553ebb --- /dev/null +++ b/packages/util/src/bn/bn.ts @@ -0,0 +1,6 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import BN from 'bn.js'; + +export { BN }; diff --git a/packages/util/src/bn/consts.spec.ts b/packages/util/src/bn/consts.spec.ts new file mode 100644 index 0000000..b80d7d8 --- /dev/null +++ b/packages/util/src/bn/consts.spec.ts @@ -0,0 +1,38 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { BN, BN_HUNDRED, BN_ONE, BN_TEN, BN_THOUSAND, BN_ZERO } from './index.js'; + +describe('consts', (): void => { + it('BN_ZERO equals 0', (): void => { + expect( + BN_ZERO + ).toEqual(new BN(0)); + }); + + it('BN_ONE equals 1', (): void => { + expect( + BN_ONE + ).toEqual(new BN(1)); + }); + + it('BN_TEN equals 10', (): void => { + expect( + BN_TEN + ).toEqual(new BN(10)); + }); + + it('BN_HUNDRED equals 100', (): void => { + expect( + BN_HUNDRED + ).toEqual(new BN(100)); + }); + + it('BN_THOUSAND equals 1000', (): void => { + expect( + BN_THOUSAND + ).toEqual(new BN(1000)); + }); +}); diff --git a/packages/util/src/bn/consts.ts b/packages/util/src/bn/consts.ts new file mode 100644 index 0000000..95fe953 --- /dev/null +++ b/packages/util/src/bn/consts.ts @@ -0,0 +1,112 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import { BN } from './bn.js'; + +/** + * @name BN_ZERO + * @summary BN constant for 0. + */ +export const BN_ZERO: BN = /*#__PURE__*/ new BN(0); + +/** + * @name BN_ONE + * @summary BN constant for 1. + */ +export const BN_ONE: BN = /*#__PURE__*/ new BN(1); + +/** + * @name BN_TWO + * @summary BN constant for 2. + */ +export const BN_TWO: BN = /*#__PURE__*/ new BN(2); + +/** + * @name BN_THREE + * @summary BN constant for 3. + */ +export const BN_THREE: BN = /*#__PURE__*/ new BN(3); + +/** + * @name BN_FOUR + * @summary BN constant for 4. + */ +export const BN_FOUR: BN = /*#__PURE__*/ new BN(4); + +/** + * @name BN_FIVE + * @summary BN constant for 5. + */ +export const BN_FIVE: BN = /*#__PURE__*/ new BN(5); + +/** + * @name BN_SIX + * @summary BN constant for 6. + */ +export const BN_SIX: BN = /*#__PURE__*/ new BN(6); + +/** + * @name BN_SEVEN + * @summary BN constant for 7. + */ +export const BN_SEVEN: BN = /*#__PURE__*/ new BN(7); + +/** + * @name BN_EIGHT + * @summary BN constant for 8. + */ +export const BN_EIGHT: BN = /*#__PURE__*/ new BN(8); + +/** + * @name BN_NINE + * @summary BN constant for 9. + */ +export const BN_NINE: BN = /*#__PURE__*/ new BN(9); + +/** + * @name BN_TEN + * @summary BN constant for 10. + */ +export const BN_TEN: BN = /*#__PURE__*/ new BN(10); + +/** + * @name BN_HUNDRED + * @summary BN constant for 100. + */ +export const BN_HUNDRED: BN = /*#__PURE__*/ new BN(100); + +/** + * @name BN_THOUSAND + * @summary BN constant for 1,000. + */ +export const BN_THOUSAND: BN = /*#__PURE__*/ new BN(1_000); + +/** + * @name BN_MILLION + * @summary BN constant for 1,000,000. + */ +export const BN_MILLION: BN = /*#__PURE__*/ new BN(1_000_000); + +/** + * @name BN_BILLION + * @summary BN constant for 1,000,000,000. + */ +export const BN_BILLION: BN = /*#__PURE__*/ new BN(1_000_000_000); + +/** + * @name BN_QUINTILL + * @summary BN constant for 1,000,000,000,000,000,000. + */ +export const BN_QUINTILL: BN = BN_BILLION.mul(BN_BILLION); + +/** + * @name BN_MAX_INTEGER + * @summary BN constant for MAX_SAFE_INTEGER + */ +export const BN_MAX_INTEGER: BN = /*#__PURE__*/ new BN(Number.MAX_SAFE_INTEGER); + +/** + * @name BN_SQRT_MAX_INTEGER + * @summary BN constant for Math.sqrt(MAX_SAFE_INTEGER) + */ +export const BN_SQRT_MAX_INTEGER: BN = /*#__PURE__*/ new BN(94906265); diff --git a/packages/util/src/bn/fromHex.spec.ts b/packages/util/src/bn/fromHex.spec.ts new file mode 100644 index 0000000..9300914 --- /dev/null +++ b/packages/util/src/bn/fromHex.spec.ts @@ -0,0 +1,15 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { isFunction } from '../is/function.js'; +import { bnFromHex } from './index.js'; + +describe('bnFromHex', (): void => { + it('exists as a function', (): void => { + expect( + isFunction(bnFromHex) + ).toEqual(true); + }); +}); diff --git a/packages/util/src/bn/fromHex.ts b/packages/util/src/bn/fromHex.ts new file mode 100644 index 0000000..fc0ed29 --- /dev/null +++ b/packages/util/src/bn/fromHex.ts @@ -0,0 +1,4 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +export { hexToBn as bnFromHex } from '../hex/toBn.js'; diff --git a/packages/util/src/bn/index.ts b/packages/util/src/bn/index.ts new file mode 100644 index 0000000..62a0f56 --- /dev/null +++ b/packages/util/src/bn/index.ts @@ -0,0 +1,18 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/** + * @summary Utility methods to convert to and from `BN` objects + */ + +// all named +export { BN } from './bn.js'; +export { bnFromHex } from './fromHex.js'; +export { bnMax, bnMin } from './min.js'; +export { bnSqrt } from './sqrt.js'; +export { bnToBn } from './toBn.js'; +export { bnToHex } from './toHex.js'; +export { bnToU8a } from './toU8a.js'; + +// all starred +export * from './consts.js'; diff --git a/packages/util/src/bn/max.spec.ts b/packages/util/src/bn/max.spec.ts new file mode 100644 index 0000000..0fdc39f --- /dev/null +++ b/packages/util/src/bn/max.spec.ts @@ -0,0 +1,32 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { BN, bnMax } from './index.js'; + +describe('bnMax', (): void => { + it('finds BN maximum (sorted)', (): void => { + expect( + bnMax(new BN(1), new BN(2), new BN(3)) + ).toEqual(new BN(3)); + }); + + it('finds BN maximum (unsorted)', (): void => { + expect( + bnMax(new BN(2), new BN(3), new BN(1)) + ).toEqual(new BN(3)); + }); + + it('returns a single item', (): void => { + expect( + bnMax(new BN(1)) + ).toEqual(new BN(1)); + }); + + it('fails when no items are available', (): void => { + expect( + () => bnMax() + ).toThrow(/Must provide one or more arguments/); + }); +}); diff --git a/packages/util/src/bn/min.spec.ts b/packages/util/src/bn/min.spec.ts new file mode 100644 index 0000000..5782498 --- /dev/null +++ b/packages/util/src/bn/min.spec.ts @@ -0,0 +1,26 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { BN, bnMin } from './index.js'; + +describe('bnMin', (): void => { + it('finds BN minimum', (): void => { + expect( + bnMin(new BN(2), new BN(1), new BN(3)) + ).toEqual(new BN(1)); + }); + + it('returns a single item', (): void => { + expect( + bnMin(new BN(1)) + ).toEqual(new BN(1)); + }); + + it('fails when no items are available', (): void => { + expect( + () => bnMin() + ).toThrow(/Must provide one or more arguments/); + }); +}); diff --git a/packages/util/src/bn/min.ts b/packages/util/src/bn/min.ts new file mode 100644 index 0000000..9f559f1 --- /dev/null +++ b/packages/util/src/bn/min.ts @@ -0,0 +1,36 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { BN } from './bn.js'; + +import { createCmp } from '../bi/helpers.js'; + +/** + * @name bnMax + * @summary Finds and returns the highest value in an array of BNs. + * @example + *
+ * + * ```javascript + * import BN from 'bn.js'; + * import { bnMax } from '@pezkuwi/util'; + * + * bnMax([new BN(1), new BN(3), new BN(2)]).toString(); // => '3' + * ``` + */ +export const bnMax = /*#__PURE__*/ createCmp((a, b) => a.gt(b)); + +/** + * @name bnMin + * @summary Finds and returns the smallest value in an array of BNs. + * @example + *
+ * + * ```javascript + * import BN from 'bn.js'; + * import { bnMin } from '@pezkuwi/util'; + * + * bnMin([new BN(1), new BN(3), new BN(2)]).toString(); // => '1' + * ``` + */ +export const bnMin = /*#__PURE__*/ createCmp((a, b) => a.lt(b)); diff --git a/packages/util/src/bn/sqrt.spec.ts b/packages/util/src/bn/sqrt.spec.ts new file mode 100644 index 0000000..e080a51 --- /dev/null +++ b/packages/util/src/bn/sqrt.spec.ts @@ -0,0 +1,37 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { TESTS } from '../bi/sqrt.spec.js'; +import { BN, BN_SQRT_MAX_INTEGER, bnSqrt } from './index.js'; + +describe('bnSqrt', (): void => { + it('fails on < 0 roots', (): void => { + expect( + () => bnSqrt(new BN(-1)) + ).toThrow(/negative numbers is not supported/); + }); + + it('has the correct constant for sqrt(Number.MAX_SAFE_INTEGER)', (): void => { + expect( + BN_SQRT_MAX_INTEGER.eq( + new BN( + ~~Math.sqrt( + Number.MAX_SAFE_INTEGER + ) + ) + ) + ).toEqual(true); + }); + + describe('conversion tests', (): void => { + TESTS.forEach(([value, expected], i): void => { + it(`#${i}: calcs ${expected}`, (): void => { + expect( + bnSqrt(value).eq(new BN(expected)) + ).toEqual(true); + }); + }); + }); +}); diff --git a/packages/util/src/bn/sqrt.ts b/packages/util/src/bn/sqrt.ts new file mode 100644 index 0000000..04908b5 --- /dev/null +++ b/packages/util/src/bn/sqrt.ts @@ -0,0 +1,50 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { ToBn } from '../types.js'; + +import { BN } from './bn.js'; +import { BN_MAX_INTEGER, BN_ONE, BN_SQRT_MAX_INTEGER } from './consts.js'; +import { bnToBn } from './toBn.js'; + +/** + * @name bnSqrt + * @summary Calculates the integer square root of a BN + * @example + *
+ * + * ```javascript + * import BN from 'bn.js'; + * import { bnSqrt } from '@pezkuwi/util'; + * + * bnSqrt(new BN(16)).toString(); // => '4' + * ``` + */ +export function bnSqrt (value: ExtToBn | BN | bigint | string | number | null): BN { + const n = bnToBn(value); + + if (n.isNeg()) { + throw new Error('square root of negative numbers is not supported'); + } + + // https://stackoverflow.com/questions/53683995/javascript-big-integer-square-root/ + // shortcut <= 2^53 - 1 to use the JS utils + if (n.lte(BN_MAX_INTEGER)) { + // ~~ More performant version of Math.floor + return new BN(~~Math.sqrt(n.toNumber())); + } + + // Use sqrt(MAX_SAFE_INTEGER) as starting point. since we already know the + // output will be larger than this, we expect this to be a safe start + let x0 = BN_SQRT_MAX_INTEGER.clone(); + + while (true) { + const x1 = n.div(x0).iadd(x0).ishrn(1); + + if (x0.eq(x1) || x0.eq(x1.sub(BN_ONE))) { + return x0; + } + + x0 = x1; + } +} diff --git a/packages/util/src/bn/toBn.spec.ts b/packages/util/src/bn/toBn.spec.ts new file mode 100644 index 0000000..d9df1c7 --- /dev/null +++ b/packages/util/src/bn/toBn.spec.ts @@ -0,0 +1,53 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { BN, bnToBn } from './index.js'; + +describe('bnToBn', (): void => { + it('converts null values to 0x00', (): void => { + expect( + bnToBn(null).toNumber() + ).toEqual(0); + }); + + it('converts BN values to BN', (): void => { + expect( + bnToBn(new BN(128)).toNumber() + ).toEqual(128); + }); + + it('converts BigInt values to BN', (): void => { + expect( + bnToBn(128821n).toNumber() + ).toEqual(128821); + }); + + it('converts number values to BN', (): void => { + expect( + bnToBn(128).toNumber() + ).toEqual(128); + }); + + it('converts string to BN', (): void => { + expect( + bnToBn('123').toNumber() + ).toEqual(123); + }); + + it('converts hex to BN', (): void => { + expect( + bnToBn('0x0123').toNumber() + ).toEqual(0x123); + }); + + it('converts Compact to BN', (): void => { + expect( + bnToBn({ + something: 'test', + toBn: (): BN => new BN(1234) + }).toNumber() + ).toEqual(1234); + }); +}); diff --git a/packages/util/src/bn/toBn.ts b/packages/util/src/bn/toBn.ts new file mode 100644 index 0000000..488e47e --- /dev/null +++ b/packages/util/src/bn/toBn.ts @@ -0,0 +1,43 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { ToBigInt, ToBn } from '../types.js'; + +import { hexToBn } from '../hex/toBn.js'; +import { isBigInt } from '../is/bigInt.js'; +import { isHex } from '../is/hex.js'; +import { isToBigInt } from '../is/toBigInt.js'; +import { isToBn } from '../is/toBn.js'; +import { BN } from './bn.js'; + +/** + * @name bnToBn + * @summary Creates a BN value from a BN, bigint, string (base 10 or hex) or number input. + * @description + * `null` inputs returns a `0x0` result, BN values returns the value, numbers returns a BN representation. + * @example + *
+ * + * ```javascript + * import BN from 'bn.js'; + * import { bnToBn } from '@pezkuwi/util'; + * + * bnToBn(0x1234); // => BN(0x1234) + * bnToBn(new BN(0x1234)); // => BN(0x1234) + * ``` + */ +export function bnToBn (value?: ExtToBn | BN | bigint | string | number | null): BN { + return value + ? BN.isBN(value) + ? value + : isHex(value) + ? hexToBn(value.toString()) + : isBigInt(value) + ? new BN(value.toString()) + : isToBn(value) + ? value.toBn() + : isToBigInt(value) + ? new BN(value.toBigInt().toString()) + : new BN(value) + : new BN(0); +} diff --git a/packages/util/src/bn/toHex.spec.ts b/packages/util/src/bn/toHex.spec.ts new file mode 100644 index 0000000..e986de9 --- /dev/null +++ b/packages/util/src/bn/toHex.spec.ts @@ -0,0 +1,50 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { BN, bnToHex } from './index.js'; + +describe('bnToHex', (): void => { + it('converts null values to 0x00', (): void => { + expect( + bnToHex(null) + ).toBe('0x00'); + }); + + it('converts null values to 0x00000000 (with bitLength)', (): void => { + expect( + bnToHex(null, { bitLength: 32 }) + ).toBe('0x00000000'); + }); + + it('converts BN values to a prefixed hex representation', (): void => { + expect( + bnToHex(new BN(128)) + ).toBe('0x80'); + }); + + it('converts BN values to a prefixed hex representation (bitLength)', (): void => { + expect( + bnToHex(new BN(128), { bitLength: 16 }) + ).toBe('0x0080'); + }); + + it('converts BN values to a prefixed hex representation (LE)', (): void => { + expect( + bnToHex(new BN(128), { bitLength: 16, isLe: true }) + ).toBe('0x8000'); + }); + + it('handles negative numbers', (): void => { + expect( + bnToHex(new BN(-1234), { isNegative: true }) + ).toBe('0xfb2e'); + }); + + it('handles negative numbers (with bitLength)', (): void => { + expect( + bnToHex(new BN(-1234), { bitLength: 32, isNegative: true }) + ).toBe('0xfffffb2e'); + }); +}); diff --git a/packages/util/src/bn/toHex.ts b/packages/util/src/bn/toHex.ts new file mode 100644 index 0000000..6576a4f --- /dev/null +++ b/packages/util/src/bn/toHex.ts @@ -0,0 +1,27 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { HexString, NumberOptions, ToBn } from '../types.js'; +import type { BN } from './bn.js'; + +import { u8aToHex } from '../u8a/index.js'; +import { bnToU8a } from './toU8a.js'; + +/** + * @name bnToHex + * @summary Creates a hex value from a BN.js bignumber object. + * @description + * `null` inputs returns a `0x` result, BN values return the actual value as a `0x` prefixed hex value. Anything that is not a BN object throws an error. With `bitLength` set, it fixes the number to the specified length. + * @example + *
+ * + * ```javascript + * import BN from 'bn.js'; + * import { bnToHex } from '@pezkuwi/util'; + * + * bnToHex(new BN(0x123456)); // => '0x123456' + * ``` + */ +export function bnToHex (value?: ExtToBn | BN | bigint | number | null, { bitLength = -1, isLe = false, isNegative = false }: NumberOptions = {}): HexString { + return u8aToHex(bnToU8a(value, { bitLength, isLe, isNegative })); +} diff --git a/packages/util/src/bn/toU8a.spec.ts b/packages/util/src/bn/toU8a.spec.ts new file mode 100644 index 0000000..9aa24dc --- /dev/null +++ b/packages/util/src/bn/toU8a.spec.ts @@ -0,0 +1,60 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { arrayRange } from '../array/index.js'; +import { TESTS } from '../bi/toU8a.spec.js'; +import { perf } from '../test/index.js'; +import { BN, bnToU8a } from './index.js'; + +const ptest = arrayRange(65536).map((v) => [v]); + +describe('bnToU8a', (): void => { + it('converts null values to 0x00', (): void => { + expect( + bnToU8a(null) + ).toEqual(new Uint8Array(1)); + }); + + it('converts null values to 0x00000000 (bitLength)', (): void => { + expect( + bnToU8a(null, { bitLength: 32 }) + ).toEqual(new Uint8Array([0, 0, 0, 0])); + }); + + it('converts BN values to a prefixed hex representation', (): void => { + expect( + bnToU8a(new BN(0x123456), { isLe: false }) + ).toEqual(new Uint8Array([0x12, 0x34, 0x56])); + }); + + it('converts BN values to a prefixed hex representation (bitLength)', (): void => { + expect( + bnToU8a(new BN(0x123456), { bitLength: 32, isLe: false }) + ).toEqual(new Uint8Array([0x00, 0x12, 0x34, 0x56])); + }); + + it('converts using little endian (as set)', (): void => { + expect( + bnToU8a(new BN(0x123456), { bitLength: 32, isLe: true }) + ).toEqual(new Uint8Array([0x56, 0x34, 0x12, 0x00])); + }); + + describe('conversion tests', (): void => { + TESTS.forEach(([isLe, isNegative, numarr, strval], i): void => { + const bitLength = numarr.length * 8; + + it(`#${i}: converts from ${strval} (bitLength=${bitLength}, isLe=${isLe}, isNegative=${isNegative})`, (): void => { + expect( + bnToU8a( + new BN(strval), + { bitLength, isLe, isNegative } + ) + ).toEqual(new Uint8Array(numarr)); + }); + }); + }); + + perf('bnToU8a', 250000, ptest, bnToU8a); +}); diff --git a/packages/util/src/bn/toU8a.ts b/packages/util/src/bn/toU8a.ts new file mode 100644 index 0000000..4ad9c6f --- /dev/null +++ b/packages/util/src/bn/toU8a.ts @@ -0,0 +1,45 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { NumberOptions, ToBn } from '../types.js'; +import type { BN } from './bn.js'; + +import { bnToBn } from './toBn.js'; + +const DEFAULT_OPTS: NumberOptions = { bitLength: -1, isLe: true, isNegative: false }; + +/** + * @name bnToU8a + * @summary Creates a Uint8Array object from a BN. + * @description + * `null`/`undefined`/`NaN` inputs returns an empty `Uint8Array` result. `BN` input values return the actual bytes value converted to a `Uint8Array`. Optionally convert using little-endian format if `isLE` is set. + * @example + *
+ * + * ```javascript + * import { bnToU8a } from '@pezkuwi/util'; + * + * bnToU8a(new BN(0x1234)); // => [0x12, 0x34] + * ``` + */ +export function bnToU8a (value?: ExtToBn | BN | bigint | number | null, { bitLength = -1, isLe = true, isNegative = false } = DEFAULT_OPTS): Uint8Array { + const valueBn = bnToBn(value); + const byteLength = bitLength === -1 + ? Math.ceil(valueBn.bitLength() / 8) + : Math.ceil((bitLength || 0) / 8); + + if (!value) { + return bitLength === -1 + ? new Uint8Array(1) + : new Uint8Array(byteLength); + } + + const output = new Uint8Array(byteLength); + const bn = isNegative + ? valueBn.toTwos(byteLength * 8) + : valueBn; + + output.set(bn.toArray(isLe ? 'le' : 'be', byteLength), 0); + + return output; +} diff --git a/packages/util/src/buffer/index.ts b/packages/util/src/buffer/index.ts new file mode 100644 index 0000000..8516690 --- /dev/null +++ b/packages/util/src/buffer/index.ts @@ -0,0 +1,8 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/** + * @summary Utility methods to convert to and from `Buffer` objects + */ + +export { bufferToU8a } from './toU8a.js'; diff --git a/packages/util/src/buffer/toU8a.spec.ts b/packages/util/src/buffer/toU8a.spec.ts new file mode 100644 index 0000000..5534f95 --- /dev/null +++ b/packages/util/src/buffer/toU8a.spec.ts @@ -0,0 +1,20 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { bufferToU8a } from './index.js'; + +describe('bufferToU8a', (): void => { + it('returns an empty buffer when null provided', (): void => { + expect( + bufferToU8a(null) + ).toEqual(new Uint8Array()); + }); + + it('returns a Uint8Buffer with the correct values', (): void => { + expect( + bufferToU8a(Buffer.from([128, 0, 10])) + ).toEqual(new Uint8Array([128, 0, 10])); + }); +}); diff --git a/packages/util/src/buffer/toU8a.ts b/packages/util/src/buffer/toU8a.ts new file mode 100644 index 0000000..69e7b54 --- /dev/null +++ b/packages/util/src/buffer/toU8a.ts @@ -0,0 +1,20 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/** + * @name bufferToU8a + * @summary Creates a Uint8Array value from a Buffer object. + * @description + * `null` inputs returns an empty result, `Buffer` values return the actual value as a `Uint8Array`. Anything that is not a `Buffer` object throws an error. + * @example + *
+ * + * ```javascript + * import { bufferToU8a } from '@pezkuwi/util'; + * + * bufferToU8a(Buffer.from([1, 2, 3])); + * ``` + */ +export function bufferToU8a (buffer?: Uint8Array | number[] | null): Uint8Array { + return new Uint8Array(buffer || []); +} diff --git a/packages/util/src/bundle.ts b/packages/util/src/bundle.ts new file mode 100644 index 0000000..9b2f4c4 --- /dev/null +++ b/packages/util/src/bundle.ts @@ -0,0 +1,35 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/** + * @summary Utility methods for this package are split into groups + */ + +// all named +export { packageInfo } from './packageInfo.js'; + +// all starred +export * from './array/index.js'; +export * from './assert.js'; +export * from './bi/index.js'; +export * from './bn/index.js'; +export * from './buffer/index.js'; +export * from './compact/index.js'; +export * from './detectPackage.js'; +export * from './extractTime.js'; +export * from './float/index.js'; +export * from './format/index.js'; +export * from './has.js'; +export * from './hex/index.js'; +export * from './is/index.js'; +export * from './lazy.js'; +export * from './logger.js'; +export * from './memoize.js'; +export * from './nextTick.js'; +export * from './noop.js'; +export * from './number/index.js'; +export * from './object/index.js'; +export * from './promisify.js'; +export * from './string/index.js'; +export * from './stringify.js'; +export * from './u8a/index.js'; diff --git a/packages/util/src/compact/addLength.spec.ts b/packages/util/src/compact/addLength.spec.ts new file mode 100644 index 0000000..0824372 --- /dev/null +++ b/packages/util/src/compact/addLength.spec.ts @@ -0,0 +1,14 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { compactAddLength } from './index.js'; + +describe('compactAddLength', (): void => { + it('correctly adds the length prefix', (): void => { + expect( + compactAddLength(Uint8Array.from([12, 13])) + ).toEqual(Uint8Array.from([2 << 2, 12, 13])); + }); +}); diff --git a/packages/util/src/compact/addLength.ts b/packages/util/src/compact/addLength.ts new file mode 100644 index 0000000..c4faf37 --- /dev/null +++ b/packages/util/src/compact/addLength.ts @@ -0,0 +1,24 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import { u8aConcatStrict } from '../u8a/index.js'; +import { compactToU8a } from './toU8a.js'; + +/** + * @name compactAddLength + * @description Adds a length prefix to the input value + * @example + *
+ * + * ```javascript + * import { compactAddLength } from '@pezkuwi/util'; + * + * console.log(compactAddLength(new Uint8Array([0xde, 0xad, 0xbe, 0xef]))); // Uint8Array([4 << 2, 0xde, 0xad, 0xbe, 0xef]) + * ``` + */ +export function compactAddLength (input: Uint8Array): Uint8Array { + return u8aConcatStrict([ + compactToU8a(input.length), + input + ]); +} diff --git a/packages/util/src/compact/defaults.ts b/packages/util/src/compact/defaults.ts new file mode 100644 index 0000000..c29b269 --- /dev/null +++ b/packages/util/src/compact/defaults.ts @@ -0,0 +1,7 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { BitLength } from './types.js'; + +/** @internal */ +export const DEFAULT_BITLENGTH: BitLength = 32; diff --git a/packages/util/src/compact/fromU8a.spec.ts b/packages/util/src/compact/fromU8a.spec.ts new file mode 100644 index 0000000..d2db42e --- /dev/null +++ b/packages/util/src/compact/fromU8a.spec.ts @@ -0,0 +1,84 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { BN } from '../bn/bn.js'; +import { hexToU8a } from '../hex/toU8a.js'; +import { perf } from '../test/index.js'; +import { compactFromU8a, compactFromU8aLim } from './index.js'; + +describe('compactFromU8a', (): void => { + it('decoded u8 value', (): void => { + expect( + compactFromU8a(new Uint8Array([0b11111100])) + ).toEqual([1, new BN(63)]); + }); + + it('decodes from same u16 encoded value', (): void => { + expect( + compactFromU8a(new Uint8Array([0b11111101, 0b00000111])).toString() + ).toEqual( + [2, new BN(511)].toString() + ); + }); + + it('decodes from same u32 encoded value (short)', (): void => { + expect( + compactFromU8a(new Uint8Array([254, 255, 3, 0])).toString() + ).toEqual( + [4, new BN(0xffff)].toString() + ); + }); + + it('decodes from same u32 encoded value (short, max)', (): void => { + expect( + compactFromU8a(new Uint8Array([254, 255, 255, 255])).toString() + ).toEqual( + [4, new BN(1073741823)].toString() + ); + }); + + it('decodes from same u32 encoded value (full)', (): void => { + expect( + compactFromU8a(new Uint8Array([3, 249, 255, 255, 255])) + ).toEqual([5, new BN(0xfffffff9)]); + }); + + it('decodes from same u32 as u64 encoded value (full, default)', (): void => { + expect( + compactFromU8a(new Uint8Array([3 + ((4 - 4) << 2), 249, 255, 255, 255])) + ).toEqual([5, new BN(0xfffffff9)]); + }); + + it('decodes an actual value', (): void => { + expect( + compactFromU8a( + hexToU8a('0x0b00407a10f35a') + ) + ).toEqual([7, new BN('5af3107a4000', 16)]); + }); + + it('decodes an actual value (Buffer)', (): void => { + expect( + compactFromU8a( + Buffer.from('0b00407a10f35a', 'hex') + ) + ).toEqual([7, new BN('5af3107a4000', 16)]); + }); + + it('decodes an actual value (100000000)', (): void => { + expect( + compactFromU8a( + hexToU8a('0x0284d717') + )[1].toString() + ).toEqual('100000000'); + }); + + perf('compactFromU8a (u8)', 1_000_000, [[new Uint8Array([63 << 2])]], compactFromU8a); + perf('compactFromU8a (u16)', 1_000_000, [[new Uint8Array([0b11111101, 0b00000111])]], compactFromU8a); + perf('compactFromU8a (u32)', 1_000_000, [[new Uint8Array([254, 255, 3, 0])]], compactFromU8a); + perf('compactFromU8aLim (u32)', 1_000_000, [[new Uint8Array([254, 255, 3, 0])]], compactFromU8aLim); + perf('compactFromU8a (u48)', 1_000_000, [[hexToU8a('0x0b00407a10f35a')]], compactFromU8a); + perf('compactFromU8a (u96)', 250_000, [[new Uint8Array([23, 52, 0x40, 0x7a, 0x10, 0xf3, 0x5a, 0, 0, 18])]], compactFromU8a); +}); diff --git a/packages/util/src/compact/fromU8a.ts b/packages/util/src/compact/fromU8a.ts new file mode 100644 index 0000000..267db3b --- /dev/null +++ b/packages/util/src/compact/fromU8a.ts @@ -0,0 +1,109 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { U8aLike } from '../types.js'; + +import { BN } from '../bn/index.js'; +import { u8aToBn, u8aToU8a } from '../u8a/index.js'; + +/** + * @name compactFromU8a + * @description Retrives the offset and encoded length from a compact-prefixed value + * @example + *
+ * + * ```javascript + * import { compactFromU8a } from '@pezkuwi/util'; + * + * const [offset, length] = compactFromU8a(new Uint8Array([254, 255, 3, 0])); + * + * console.log('value offset=', offset, 'length=', length); // 4, 0xffff + * ``` + */ +export function compactFromU8a (input: U8aLike): [number, BN] { + const u8a = u8aToU8a(input); + + // The u8a is manually converted here for 1, 2 & 4 lengths, it is 2x faster + // than doing an additional call to u8aToBn (as with variable length) + switch (u8a[0] & 0b11) { + case 0b00: + return [1, new BN(u8a[0] >>> 2)]; + + case 0b01: + return [2, new BN((u8a[0] + (u8a[1] << 8)) >>> 2)]; + + case 0b10: + // for the 3rd byte, we don't << 24 - since JS converts all bitwise operators to + // 32-bit, in the case where the top-most bit is set this yields a negative value + return [4, new BN((u8a[0] + (u8a[1] << 8) + (u8a[2] << 16) + (u8a[3] * 0x1_00_00_00)) >>> 2)]; + + // 0b11 + default: { + // add 5 to shifted (4 for base length, 1 for this byte) + const offset = (u8a[0] >>> 2) + 5; + + // we unroll the loop + switch (offset) { + // there still could be 4 bytes data, similar to 0b10 above (with offsets) + case 5: + // for the 3rd byte, we don't << 24 - since JS converts all bitwise operators to + // 32-bit, in the case where the top-most bit is set this yields a negative value + return [5, new BN(u8a[1] + (u8a[2] << 8) + (u8a[3] << 16) + (u8a[4] * 0x1_00_00_00))]; + + case 6: + return [6, new BN(u8a[1] + (u8a[2] << 8) + (u8a[3] << 16) + ((u8a[4] + (u8a[5] << 8)) * 0x1_00_00_00))]; + + // 6 bytes data is the maximum, 48 bits (56 would overflow) + case 7: + return [7, new BN(u8a[1] + (u8a[2] << 8) + (u8a[3] << 16) + ((u8a[4] + (u8a[5] << 8) + (u8a[6] << 16)) * 0x1_00_00_00))]; + + // for anything else, use the non-unrolled version + default: + return [offset, u8aToBn(u8a.subarray(1, offset))]; + } + } + } +} + +/** + * @name compactFromU8aLim + * @description A limited version of [[compactFromU8a]], accepting only Uint8Array inputs for values <= 48 bits + */ +export function compactFromU8aLim (u8a: Uint8Array): [number, number] { + // The u8a is manually converted here for 1, 2 & 4 lengths, it is 2x faster + // than doing an additional call to u8aToBn (as with variable length) + switch (u8a[0] & 0b11) { + case 0b00: + return [1, u8a[0] >>> 2]; + + case 0b01: + return [2, (u8a[0] + (u8a[1] << 8)) >>> 2]; + + case 0b10: + // for the 3rd byte, we don't << 24 - since JS converts all bitwise operators to + // 32-bit, in the case where the top-most bit is set this yields a negative value + return [4, (u8a[0] + (u8a[1] << 8) + (u8a[2] << 16) + (u8a[3] * 0x1_00_00_00)) >>> 2]; + + // 0b11 + default: { + // add 5 to shifted (4 for base length, 1 for this byte) + // we unroll the loop + switch ((u8a[0] >>> 2) + 5) { + // there still could be 4 bytes data, similar to 0b10 above (with offsets) + case 5: + return [5, u8a[1] + (u8a[2] << 8) + (u8a[3] << 16) + (u8a[4] * 0x1_00_00_00)]; + + case 6: + return [6, u8a[1] + (u8a[2] << 8) + (u8a[3] << 16) + ((u8a[4] + (u8a[5] << 8)) * 0x1_00_00_00)]; + + // 6 bytes data is the maximum, 48 bits (56 would overflow) + case 7: + return [7, u8a[1] + (u8a[2] << 8) + (u8a[3] << 16) + ((u8a[4] + (u8a[5] << 8) + (u8a[6] << 16)) * 0x1_00_00_00)]; + + // for anything else, we are above the actual MAX_SAFE_INTEGER - bail out + default: + throw new Error('Compact input is > Number.MAX_SAFE_INTEGER'); + } + } + } +} diff --git a/packages/util/src/compact/index.ts b/packages/util/src/compact/index.ts new file mode 100644 index 0000000..d2d0a22 --- /dev/null +++ b/packages/util/src/compact/index.ts @@ -0,0 +1,28 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/** + * @description + * Encoding and decoding of parity-codec compact numbers. The codec is created + * to take up the least amount of space for a specific number. It performs the + * same function as Length, however differs in that it uses a variable number of + * bytes to do the actual encoding. From the Rust implementation for compact + * encoding: + * + * 0b00 00 00 00 / 00 00 00 00 / 00 00 00 00 / 00 00 00 00 + * (0 ... 2**6 - 1) (u8) + * xx xx xx 00 + * (2**6 ... 2**14 - 1) (u8, u16) low LH high + * yL yL yL 01 / yH yH yH yL + * (2**14 ... 2**30 - 1) (u16, u32) low LMMH high + * zL zL zL 10 / zM zM zM zL / zM zM zM zM / zH zH zH zM + * (2**30 ... 2**536 - 1) (u32, u64, u128, U256, U512, U520) straight LE-encoded + * nn nn nn 11 [ / zz zz zz zz ]{4 + n} + * + * Note: we use *LOW BITS* of the LSB in LE encoding to encode the 2 bit key. + */ + +export { compactAddLength } from './addLength.js'; +export { compactFromU8a, compactFromU8aLim } from './fromU8a.js'; +export { compactStripLength } from './stripLength.js'; +export { compactToU8a } from './toU8a.js'; diff --git a/packages/util/src/compact/stripLength.spec.ts b/packages/util/src/compact/stripLength.spec.ts new file mode 100644 index 0000000..7d39816 --- /dev/null +++ b/packages/util/src/compact/stripLength.spec.ts @@ -0,0 +1,17 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { compactStripLength } from './index.js'; + +describe('compactStripLength', (): void => { + it('correctly removes the length prefix', (): void => { + expect( + compactStripLength(Uint8Array.from([2 << 2, 12, 13])) + ).toEqual([ + 3, + Uint8Array.from([12, 13]) + ]); + }); +}); diff --git a/packages/util/src/compact/stripLength.ts b/packages/util/src/compact/stripLength.ts new file mode 100644 index 0000000..65cd3bf --- /dev/null +++ b/packages/util/src/compact/stripLength.ts @@ -0,0 +1,26 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import { compactFromU8a } from './fromU8a.js'; + +/** + * @name compactStripLength + * @description Removes the length prefix, returning both the total length (including the value + compact encoding) and the decoded value with the correct length + * @example + *
+ * + * ```javascript + * import { compactStripLength } from '@pezkuwi/util'; + * + * console.log(compactStripLength(new Uint8Array([2 << 2, 0xde, 0xad]))); // [2, Uint8Array[0xde, 0xad]] + * ``` + */ +export function compactStripLength (input: Uint8Array): [number, Uint8Array] { + const [offset, length] = compactFromU8a(input); + const total = offset + length.toNumber(); + + return [ + total, + input.subarray(offset, total) + ]; +} diff --git a/packages/util/src/compact/toU8a.spec.ts b/packages/util/src/compact/toU8a.spec.ts new file mode 100644 index 0000000..3edddc9 --- /dev/null +++ b/packages/util/src/compact/toU8a.spec.ts @@ -0,0 +1,59 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { BN } from '../bn/index.js'; +import { compactToU8a } from './index.js'; + +const TESTS: [output: string | Uint8Array, input: BN | number][] = [ + // Rust tests + // Copied from https://github.com/paritytech/parity-codec/blob/master/src/codec.rs + ['00', new BN('0')], + ['fc', new BN('63')], + ['01 01', new BN('64')], + ['fd ff', new BN('16383')], + ['02 00 01 00', new BN('16384')], + ['fe ff ff ff', new BN('1073741823')], + ['03 00 00 00 40', new BN('1073741824')], + ['03 ff ff ff ff', new BN(`${1}${'0'.repeat(32)}`, 2).subn(1)], + ['07 00 00 00 00 01', new BN(`${1}${'0'.repeat(32)}`, 2)], + ['0b 00 00 00 00 00 01', new BN(`${1}${'0'.repeat(40)}`, 2)], + ['0f 00 00 00 00 00 00 01', new BN(`${1}${'0'.repeat(48)}`, 2)], + ['0f ff ff ff ff ff ff ff', new BN(`${1}${'0'.repeat(56)}`, 2).subn(1)], + ['13 00 00 00 00 00 00 00 01', new BN(`${1}${'0'.repeat(56)}`, 2)], + ['13 ff ff ff ff ff ff ff ff', new BN(`${1}${'0'.repeat(64)}`, 2).subn(1)], + // own tests + [new Uint8Array([18 << 2]), 18], + [new Uint8Array([0b11111100]), 63], + [new Uint8Array([0xbd, 0x01]), 111], + [new Uint8Array([0b11111101, 0b00000111]), 511], + [new Uint8Array([253, 127]), 0x1fff], + [new Uint8Array([254, 255, 3, 0]), 0xffff], + [new Uint8Array([3 + ((4 - 4) << 2), 249, 255, 255, 255]), 0xfffffff9], + [new Uint8Array([3 + ((6 - 4) << 2), 0x00, 0x40, 0x7a, 0x10, 0xf3, 0x5a]), new BN('00005af3107a4000', 16)], + [new Uint8Array([23, 52, 0x40, 0x7a, 0x10, 0xf3, 0x5a, 0, 0, 18]), new BN('1200005af3107a4034', 16)] +]; + +describe('encode', (): void => { + it('does not modify the original', (): void => { + const original = new BN(123456); + + expect(compactToU8a(original)).toEqual(new Uint8Array([2, 137, 7, 0])); + expect(original.toString()).toEqual('123456'); + }); + + describe('conversion tests', (): void => { + TESTS.forEach(([output, input], i): void => { + it(`#${i}: encodes ${input.toString()}`, (): void => { + expect( + compactToU8a(input) + ).toEqual( + output instanceof Uint8Array + ? output + : Uint8Array.from(output.split(' ').map((s) => parseInt(s, 16))) + ); + }); + }); + }); +}); diff --git a/packages/util/src/compact/toU8a.ts b/packages/util/src/compact/toU8a.ts new file mode 100644 index 0000000..eac4fab --- /dev/null +++ b/packages/util/src/compact/toU8a.ts @@ -0,0 +1,53 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import { BN, BN_ONE, BN_TWO, bnToBn, bnToU8a } from '../bn/index.js'; +import { u8aConcatStrict } from '../u8a/index.js'; + +const MAX_U8 = BN_TWO.pow(new BN(8 - 2)).isub(BN_ONE); +const MAX_U16 = BN_TWO.pow(new BN(16 - 2)).isub(BN_ONE); +const MAX_U32 = BN_TWO.pow(new BN(32 - 2)).isub(BN_ONE); +const BL_16 = { bitLength: 16 }; +const BL_32 = { bitLength: 32 }; + +/** + * @name compactToU8a + * @description Encodes a number into a compact representation + * @example + *
+ * + * ```javascript + * import { compactToU8a } from '@pezkuwi/util'; + * + * console.log(compactToU8a(511, 32)); // Uint8Array([0b11111101, 0b00000111]) + * ``` + */ +export function compactToU8a (value: BN | bigint | number): Uint8Array { + const bn = bnToBn(value); + + if (bn.lte(MAX_U8)) { + return new Uint8Array([bn.toNumber() << 2]); + } else if (bn.lte(MAX_U16)) { + return bnToU8a(bn.shln(2).iadd(BN_ONE), BL_16); + } else if (bn.lte(MAX_U32)) { + return bnToU8a(bn.shln(2).iadd(BN_TWO), BL_32); + } + + const u8a = bnToU8a(bn); + let length = u8a.length; + + // adjust to the minimum number of bytes + while (u8a[length - 1] === 0) { + length--; + } + + if (length < 4) { + throw new Error('Invalid length, previous checks match anything less than 2^30'); + } + + return u8aConcatStrict([ + // subtract 4 as minimum (also catered for in decoding) + new Uint8Array([((length - 4) << 2) + 0b11]), + u8a.subarray(0, length) + ]); +} diff --git a/packages/util/src/compact/types.ts b/packages/util/src/compact/types.ts new file mode 100644 index 0000000..7a37af8 --- /dev/null +++ b/packages/util/src/compact/types.ts @@ -0,0 +1,4 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +export type BitLength = 8 | 16 | 32 | 64 | 128 | 256; diff --git a/packages/util/src/detectPackage.spec.ts b/packages/util/src/detectPackage.spec.ts new file mode 100644 index 0000000..7e758b1 --- /dev/null +++ b/packages/util/src/detectPackage.spec.ts @@ -0,0 +1,110 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { detectPackage, POLKADOTJS_DISABLE_ESM_CJS_WARNING_FLAG } from './detectPackage.js'; + +describe('detectPackage', (): void => { + const PKG = '@polkadot/util'; + const VER1 = '9.8.0-beta.45'; + const VER2 = '9.7.1'; + const VER3 = '9.6.1'; + const PATH = '/Users/jaco/Projects/polkadot-js/api/node_modules/@polkadot/util'; + + const MISMATCH = `@polkadot/util has multiple versions, ensure that there is only one installed. +Either remove and explicitly install matching versions or dedupe using your package manager. +The following conflicting packages were found: +\tesm ${VER1}\t +\tesm ${VER2} \tnode_modules/@polkadot/api/node_modules/@polkadot/util`; + + it('should not log the first time', (): void => { + const spy = jest.spyOn(console, 'warn'); + + detectPackage({ name: PKG, path: 'auto', type: 'esm', version: VER1 }, PATH); + expect(spy).not.toHaveBeenCalled(); + spy.mockRestore(); + }); + + it('should log the second time', (): void => { + const spy = jest.spyOn(console, 'warn'); + + detectPackage({ name: PKG, path: '/Users/jaco/Projects/polkadot-js/api/node_modules/@polkadot/api/node_modules/@polkadot/util', type: 'esm', version: VER2 }); + expect(spy).toHaveBeenCalledWith(MISMATCH); + spy.mockRestore(); + }); + + it('should allow for function use', (): void => { + const spy = jest.spyOn(console, 'warn'); + + detectPackage({ name: PKG, path: 'node_modules/@polkadot/util', type: 'cjs', version: VER3 }, () => PATH); + expect(spy).toHaveBeenCalledWith(`${MISMATCH} +\tcjs ${VER3} \tnode_modules/@polkadot/util`); + spy.mockRestore(); + }); +}); + +describe('detectPackageDeps', (): void => { + const DEP0 = { name: '@polkadot/keyring', path: 'auto', type: 'esm', version: '1.1.1' }; + const DEP1 = { name: '@polkadot/util', path: 'auto', type: 'esm', version: '1.1.2' }; + const DEP2 = { name: '@polkadot/util-crypto', path: 'auto', type: 'esm', version: '1.1.3' }; + const DEP3 = { name: '@polkadot/networks', path: 'auto', type: 'esm', version: '1.1.1' }; + + it('should not log when no mismatches are found', (): void => { + const spy = jest.spyOn(console, 'warn'); + + detectPackage({ name: '@polkadot/one', path: 'auto', type: 'esm', version: '1.1.1' }, false, [DEP0, DEP3]); + expect(spy).not.toHaveBeenCalled(); + spy.mockRestore(); + }); + + it('should log when mismatches are found', (): void => { + const spy = jest.spyOn(console, 'warn'); + + detectPackage({ name: '@polkadot/two', path: 'auto', type: 'esm', version: '1.1.1' }, false, [DEP0, DEP1, DEP2, DEP3]); + expect(spy).toHaveBeenCalledWith(`@polkadot/two requires direct dependencies exactly matching version 1.1.1. +Either remove and explicitly install matching versions or dedupe using your package manager. +The following conflicting packages were found: +\t1.1.2\t@polkadot/util +\t1.1.3\t@polkadot/util-crypto`); + spy.mockRestore(); + }); +}); + +describe('detectPackageEsmCjsNoWarnings', (): void => { + const PKG = '@polkadot/wasm-crypto'; + const VER1 = '9.8.0-beta.45'; + const PATH = '/Users/jaco/Projects/polkadot-js/api/node_modules/@polkadot/api/node_modules/@polkadot/wasm-crypto'; + + it('should not log when there are concurrent esm and cjs versions of the same package with the same version number and warnings are disabled', (): void => { + const spy = jest.spyOn(console, 'warn'); + const pkgEsm = { name: PKG, path: PATH, type: 'esm', version: VER1 }; + const pkgCjs = { name: PKG, path: `${PATH}/cjs`, type: 'cjs', version: VER1 }; + + process.env[POLKADOTJS_DISABLE_ESM_CJS_WARNING_FLAG] = '1'; + detectPackage(pkgEsm, false, []); + detectPackage(pkgCjs, false, []); + + expect(spy).not.toHaveBeenCalled(); + spy.mockRestore(); + }); +}); + +describe('detectPackageEsmCjs', (): void => { + const PKG = '@polkadot/wasm-crypto-wasm'; + const VER1 = '9.8.0-beta.45'; + const PATH = '/Users/jaco/Projects/polkadot-js/api/node_modules/@polkadot/api/node_modules/@polkadot/wasm-crypto-wasm'; + + it('should log when there are concurrent esm and cjs versions of the same package with the same version number and warnings are not disabled', (): void => { + const spy = jest.spyOn(console, 'warn'); + const pkgEsm = { name: PKG, path: PATH, type: 'esm', version: VER1 }; + const pkgCjs = { name: PKG, path: `${PATH}/cjs`, type: 'cjs', version: VER1 }; + + process.env[POLKADOTJS_DISABLE_ESM_CJS_WARNING_FLAG] = undefined; + detectPackage(pkgEsm, false, []); + detectPackage(pkgCjs, false, []); + + expect(spy).toHaveBeenCalled(); + spy.mockRestore(); + }); +}); diff --git a/packages/util/src/detectPackage.ts b/packages/util/src/detectPackage.ts new file mode 100644 index 0000000..0325697 --- /dev/null +++ b/packages/util/src/detectPackage.ts @@ -0,0 +1,138 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import { xglobal } from '@pezkuwi/x-global'; + +import { isFunction } from './is/function.js'; + +type This = typeof globalThis; + +interface VersionPath { + path: string; + type: string; + version: string; +} + +interface PackageInfo extends VersionPath { + name: string; +} + +interface PjsChecks extends This { + __polkadotjs: Record; +} + +type PjsGlobal = This & PjsChecks & Record; +type FnString = () => string | undefined; + +const DEDUPE = 'Either remove and explicitly install matching versions or dedupe using your package manager.\nThe following conflicting packages were found:'; + +export const POLKADOTJS_DISABLE_ESM_CJS_WARNING_FLAG = 'POLKADOTJS_DISABLE_ESM_CJS_WARNING'; + +/** @internal */ +function getEntry (name: string): VersionPath[] { + const _global = xglobal as PjsGlobal; + + if (!_global.__polkadotjs) { + _global.__polkadotjs = {}; + } + + if (!_global.__polkadotjs[name]) { + _global.__polkadotjs[name] = []; + } + + return _global.__polkadotjs[name]; +} + +/** @internal */ +function formatDisplay (all: T[], fmt: (version: string, data: T) => string[]): string { + let max = 0; + + for (let i = 0, count = all.length; i < count; i++) { + max = Math.max(max, all[i].version.length); + } + + return all + .map((d) => `\t${fmt(d.version.padEnd(max), d).join('\t')}`) + .join('\n'); +} + +/** @internal */ +function formatInfo (version: string, { name }: PackageInfo): string[] { + return [ + version, + name + ]; +} + +/** @internal */ +function formatVersion (version: string, { path, type }: VersionPath): string[] { + let extracted: string; + + if (path && path.length >= 5) { + const nmIndex = path.indexOf('node_modules'); + + extracted = nmIndex === -1 + ? path + : path.substring(nmIndex); + } else { + extracted = ''; + } + + return [ + `${`${type || ''}`.padStart(3)} ${version}`, + extracted + ]; +} + +/** @internal */ +function getPath (infoPath?: string, pathOrFn?: FnString | string | false | null): string { + if (infoPath) { + return infoPath; + } else if (isFunction(pathOrFn)) { + try { + return pathOrFn() || ''; + } catch { + return ''; + } + } + + return pathOrFn || ''; +} + +/** @internal */ +function warn (pre: string, all: T[], fmt: (version: string, data: T) => string[]): void { + console.warn(`${pre}\n${DEDUPE}\n${formatDisplay(all, fmt)}`); +} + +/** + * @name detectPackage + * @summary Checks that a specific package is only imported once + * @description A `@polkadot/*` version detection utility, checking for one occurrence of a package in addition to checking for dependency versions. + */ +export function detectPackage ({ name, path, type, version }: PackageInfo, pathOrFn?: FnString | string | false | null, deps: PackageInfo[] = []): void { + if (!name.startsWith('@polkadot')) { + throw new Error(`Invalid package descriptor ${name}`); + } + + const entry = getEntry(name); + + entry.push({ path: getPath(path, pathOrFn), type, version }); + + // if we have more than one entry at DIFFERENT version types then warn. If there is + // more than one entry at the same version and ESM/CJS dual warnings are disabled, + // then do not display warnings + const entriesSameVersion = entry.every((e) => e.version === version); + const esmCjsWarningDisabled = xglobal.process?.env?.[POLKADOTJS_DISABLE_ESM_CJS_WARNING_FLAG] === '1'; + const multipleEntries = entry.length !== 1; + const disableWarnings = esmCjsWarningDisabled && entriesSameVersion; + + if (multipleEntries && !disableWarnings) { + warn(`${name} has multiple versions, ensure that there is only one installed.`, entry, formatVersion); + } else { + const mismatches = deps.filter((d) => d && d.version !== version); + + if (mismatches.length) { + warn(`${name} requires direct dependencies exactly matching version ${version}.`, mismatches, formatInfo); + } + } +} diff --git a/packages/util/src/extractTime.spec.ts b/packages/util/src/extractTime.spec.ts new file mode 100644 index 0000000..c791f41 --- /dev/null +++ b/packages/util/src/extractTime.spec.ts @@ -0,0 +1,21 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { extractTime } from './index.js'; + +describe('extractTime', (): void => { + const milliseconds = 1e9 + 123; + + it('extracts time components correctly', (): void => { + expect(extractTime(milliseconds)) + .toEqual({ + days: 11, + hours: 13, + milliseconds: 123, + minutes: 46, + seconds: 40 + }); + }); +}); diff --git a/packages/util/src/extractTime.ts b/packages/util/src/extractTime.ts new file mode 100644 index 0000000..54533df --- /dev/null +++ b/packages/util/src/extractTime.ts @@ -0,0 +1,71 @@ +// Copyright 2017-2025 @polkadot/util authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { Time } from './types.js'; + +const MIN_MS = 60 * 1000; +const HR_MS = MIN_MS * 60; +const DAY_MS = HR_MS * 24; +const ZERO: Time = { days: 0, hours: 0, milliseconds: 0, minutes: 0, seconds: 0 }; + +/** @internal */ +function add (a: Partial