@pancakeswap/pools 5.1.48 → 5.1.49

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/constants/index.ts","../src/constants/supportedChains.ts","../src/utils/isPoolsSupported.ts","../src/constants/config/endpoint.ts","../src/constants/pools/index.ts","../src/constants/boostedPools/index.ts","../src/constants/boostedPools/arb.ts","../src/constants/boostedPools/opBNB.ts","../src/constants/contracts.ts","../src/types.ts","../../utils/bigNumber.ts","../src/queries/fetchPools.ts","../src/abis/ISmartChef.ts","../src/abis/ISousChef.ts","../src/abis/ISousChefV2.ts","../src/abis/ISousChefV3.ts","../src/utils/getContractAddress.ts","../src/utils/isLegacyPool.ts","../src/utils/apr.ts","../src/utils/getPoolContractBySousId.ts","../src/abis/ISousChefBNB.ts","../src/utils/boosted/checkIsBoostedPool.ts","../src/utils/boosted/apr/fetchAlpBoostedPoolApr.ts","../src/utils/boosted/apr/getBoostedPoolApr.ts","../src/queries/fetchUserPoolsData.ts","../src/queries/fetchVaultPublic.ts","../src/abis/ICakeVaultV2.ts","../src/queries/getAddresses.ts","../src/queries/fetchVaultUser.ts","../src/abis/ICakeFlexibleSideVaultV2.ts","../src/abis/ICakeVaultV1.ts"],"names":["ChainId","PoolCategory","VaultKey","BigNumber","fromPairs","erc20Abi"],"mappings":";AAAA,SAAS,2BAA2B,WAAAA,gBAAe;;;ACAnD,SAAS,eAAe;AAEjB,IAAM,sBAAsB;AAAA,EACjC,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,QAAQ;AACV;AAIO,IAAM,8BAA8B,CAAC,QAAQ,KAAK,QAAQ,WAAW;;;ACXrE,SAAS,iBAAiB,SAA8C;AAC7E,SAAO,oBAAoB,SAAS,OAAO;AAC7C;AAEO,SAAS,qBAAqB,SAAyD;AAC5F,SAAO,CAAC,CAAC,WAAY,4BAAmD,SAAS,OAAO;AAC1F;;;ACfO,IAAM,YAAY;;;ACKzB,IAAM,YAA0D,CAAC;AACjE,IAAM,gBAAuE,CAAC;AAEvE,IAAM,iBAAiB,OAAO,YAAqB;AACxD,MAAI,CAAC,iBAAiB,OAAO,GAAG;AAC9B,WAAO;AAAA,EACT;AAGA,MAAI,UAAU,OAAO,GAAG;AACtB,WAAO,UAAU,OAAO;AAAA,EAC1B;AAGA,MAAI,cAAc,OAAO,GAAG;AAC1B,WAAO,cAAc,OAAO;AAAA,EAC9B;AAEA,QAAM,kBAAkB,YAAY;AAClC,QAAI;AACF,YAAM,WAAW,MAAM,MAAM,GAAG,qBAAqB,WAAW;AAAA,QAC9D,QAAQ,YAAY,QAAQ,GAAI;AAAA,MAClC,CAAC;AACD,UAAI,SAAS,IAAI;AACf,cAAM,QAAQ,MAAM,SAAS,KAAK;AAClC,YAAI,CAAC,OAAO;AACV,gBAAM,IAAI,MAAM,6CAA6C,OAAO;AAAA,QACtE;AAGA,kBAAU,OAAO,IAAI;AACrB,eAAO;AAAA,MACT;AACA,YAAM,IAAI,MAAM,6BAA6B,SAAS,QAAQ;AAAA,IAChE,SAAS,GAAP;AACA,UAAI,aAAa,OAAO;AACtB,cAAM,IAAI,MAAM,iBAAiB,EAAE,SAAS;AAAA,MAC9C,OAAO;AACL,cAAM,IAAI,MAAM,iBAAiB,GAAG;AAAA,MACtC;AAAA,IACF,UAAE;AAEA,oBAAc,OAAO,IAAI;AAAA,IAC3B;AAAA,EACF;AAGA,gBAAc,OAAO,IAAI,gBAAgB;AACzC,SAAO,cAAc,OAAO;AAC9B;AAEO,IAAM,qBAAqB,OAAO,YAAqB;AAC5D,MAAI,CAAC,iBAAiB,OAAO,GAAG;AAC9B,WAAO;AAAA,EACT;AAEA,MAAI;AACF,UAAM,WAAW,MAAM,MAAM,GAAG,qBAAqB,0BAA0B;AAC/E,UAAM,SAA2B,MAAM,SAAS,KAAK;AACrD,WAAO;AAAA,EACT,SAAS,OAAP;AACA,YAAQ,MAAM,0CAA0C,KAAK;AAC7D,WAAO,CAAC;AAAA,EACV;AACF;AAEO,IAAM,oBAAoB;AAC1B,IAAM,uBAAuB;AAC7B,IAAM,mBAAmB;AACzB,IAAM,eAAe;AACrB,IAAM,kBAAkB;;;AC3E/B,SAAS,WAAAA,gBAAe;;;ACEjB,IAAM,kBAAmC;AAAA,EAC9C;AAAA,IACE;AAAA,IACA,iBAAiB;AAAA,IACjB,cACE;AAAA,EACJ;AAAA,EACA;AAAA,IACE;AAAA,IACA,iBAAiB;AAAA,IACjB,cACE;AAAA,EACJ;AACF;;;ACbO,IAAM,oBAAqC;AAAA,EAChD;AAAA,IACE;AAAA,IACA,iBAAiB;AAAA,IACjB,cACE;AAAA,EACJ;AACF;;;AFAO,IAAM,gCAAgC;AAAA,EAC3C,CAACA,SAAQ,YAAY,GAAG;AAAA,EACxB,CAACA,SAAQ,KAAK,GAAG;AACnB;AAEO,IAAM,wBAAwB,CAAC,YAAqB;AACzD,SAAO,8BAA8B,OAAO;AAC9C;AAEO,IAAM,uBAAuB,CAAC,SAAkB,oBAAuD;AAC5G,QAAM,OAAO,sBAAsB,OAAO;AAC1C,SAAO,MAAM,KAAK,CAAC,MAAM,GAAG,iBAAiB,YAAY,MAAM,gBAAgB,YAAY,CAAC;AAC9F;;;AGrBA,SAAS,WAAAA,gBAAe;AASjB,IAAM,QAAQ;AAAA,EACnB,CAACA,SAAQ,GAAG,GAAG;AAAA,EACf,CAACA,SAAQ,WAAW,GAAG;AAAA,EACvB,CAACA,SAAQ,QAAQ,GAAG;AAAA,EACpB,CAACA,SAAQ,YAAY,GAAG;AAAA,EACxB,CAACA,SAAQ,eAAe,GAAG;AAAA,EAC3B,CAACA,SAAQ,MAAM,GAAG;AAAA,EAClB,CAACA,SAAQ,cAAc,GAAG;AAAA,EAC1B,CAACA,SAAQ,YAAY,GAAG;AAAA,EACxB,CAACA,SAAQ,aAAa,GAAG;AAAA,EACzB,CAACA,SAAQ,qBAAqB,GAAG;AAAA,EACjC,CAACA,SAAQ,KAAK,GAAG;AAAA,EACjB,CAACA,SAAQ,IAAI,GAAG;AAClB;AAEO,IAAM,aAAa;AAAA,EACxB,CAACA,SAAQ,GAAG,GAAG;AAAA,EACf,CAACA,SAAQ,WAAW,GAAG;AAAA,EACvB,CAACA,SAAQ,QAAQ,GAAG;AAAA,EACpB,CAACA,SAAQ,YAAY,GAAG;AAAA,EACxB,CAACA,SAAQ,eAAe,GAAG;AAAA,EAC3B,CAACA,SAAQ,MAAM,GAAG;AAAA,EAClB,CAACA,SAAQ,cAAc,GAAG;AAAA,EAC1B,CAACA,SAAQ,YAAY,GAAG;AAAA,EACxB,CAACA,SAAQ,aAAa,GAAG;AAAA,EACzB,CAACA,SAAQ,qBAAqB,GAAG;AAAA,EACjC,CAACA,SAAQ,KAAK,GAAG;AAAA,EACjB,CAACA,SAAQ,IAAI,GAAG;AAClB;AAEO,IAAM,2BAA2B;AAAA,EACtC,CAACA,SAAQ,GAAG,GAAG;AAAA,EACf,CAACA,SAAQ,WAAW,GAAG;AAAA,EACvB,CAACA,SAAQ,QAAQ,GAAG;AAAA,EACpB,CAACA,SAAQ,YAAY,GAAG;AAAA,EACxB,CAACA,SAAQ,eAAe,GAAG;AAAA,EAC3B,CAACA,SAAQ,MAAM,GAAG;AAAA,EAClB,CAACA,SAAQ,cAAc,GAAG;AAAA,EAC1B,CAACA,SAAQ,YAAY,GAAG;AAAA,EACxB,CAACA,SAAQ,aAAa,GAAG;AAAA,EACzB,CAACA,SAAQ,qBAAqB,GAAG;AAAA,EACjC,CAACA,SAAQ,KAAK,GAAG;AAAA,EACjB,CAACA,SAAQ,IAAI,GAAG;AAClB;;;AR5CO,IAAM,iBAAiB,0BAA0BA,SAAQ,GAAG;AAE5D,IAAM,iBAAkB,KAAK,iBAAkB,KAAK;AACpD,IAAM,kBAAkB,iBAAiB;AAEzC,IAAM,kBAAkB;;;ASAxB,IAAK,eAAL,kBAAKC,kBAAL;AACL,EAAAA,cAAA,eAAc;AACd,EAAAA,cAAA,UAAS;AACT,EAAAA,cAAA,aAAY;AACZ,EAAAA,cAAA,UAAS;AAJC,SAAAA;AAAA,GAAA;AAkLL,IAAK,WAAL,kBAAKC,cAAL;AACL,EAAAA,UAAA,iBAAc;AACd,EAAAA,UAAA,eAAY;AACZ,EAAAA,UAAA,2BAAwB;AACxB,EAAAA,UAAA,aAAU;AAJA,SAAAA;AAAA,GAAA;;;AC/LZ,OAAO,eAAe;AAEf,IAAM,WAAW,IAAI,UAAU,CAAC;AAChC,IAAM,UAAU,IAAI,UAAU,CAAC;AAC/B,IAAM,UAAU,IAAI,UAAU,CAAC;AAC/B,IAAM,WAAW,IAAI,UAAU,CAAC;AAChC,IAAM,UAAU,IAAI,UAAU,EAAE;AAChC,IAAM,kBAAkB,IAAI,UAAU,GAAG;;;ACLhD,OAAOC,gBAAe;AACtB,OAAO,WAAW;AAClB,OAAO,eAAe;AACtB,SAAS,gBAAgB;;;ACLlB,IAAM,eAAe;AAAA,EAC1B;AAAA,IACE,QAAQ;AAAA,MACN,EAAE,cAAc,WAAW,MAAM,mBAAmB,MAAM,UAAU;AAAA,MACpE,EAAE,cAAc,QAAQ,MAAM,8BAA8B,MAAM,OAAO;AAAA,MACzE,EAAE,cAAc,WAAW,MAAM,kCAAkC,MAAM,UAAU;AAAA,IACrF;AAAA,IACA,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,QAAQ;AAAA,MACN,EAAE,SAAS,MAAM,cAAc,WAAW,MAAM,QAAQ,MAAM,UAAU;AAAA,MACxE,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,IAC7E;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,QAAQ;AAAA,MACN,EAAE,SAAS,MAAM,cAAc,WAAW,MAAM,QAAQ,MAAM,UAAU;AAAA,MACxE,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,IAC7E;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,QAAQ,CAAC,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,oBAAoB,MAAM,UAAU,CAAC;AAAA,IAC/F,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,QAAQ,CAAC,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,mBAAmB,MAAM,UAAU,CAAC;AAAA,IAC9F,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,QAAQ;AAAA,MACN,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,kBAAkB,MAAM,UAAU;AAAA,MACnF,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,gBAAgB,MAAM,UAAU;AAAA,IACnF;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,QAAQ;AAAA,MACN,EAAE,SAAS,MAAM,cAAc,WAAW,MAAM,iBAAiB,MAAM,UAAU;AAAA,MACjF,EAAE,SAAS,MAAM,cAAc,WAAW,MAAM,YAAY,MAAM,UAAU;AAAA,IAC9E;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,QAAQ,CAAC,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,eAAe,MAAM,UAAU,CAAC;AAAA,IAC1F,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,QAAQ;AAAA,MACN,EAAE,SAAS,MAAM,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,MACzE,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,IAC7E;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,QAAQ;AAAA,MACN,EAAE,SAAS,OAAO,cAAc,QAAQ,MAAM,sBAAsB,MAAM,OAAO;AAAA,MACjF,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,mBAAmB,MAAM,UAAU;AAAA,IACtF;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,QAAQ;AAAA,MACN,EAAE,SAAS,MAAM,cAAc,WAAW,MAAM,QAAQ,MAAM,UAAU;AAAA,MACxE,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,IAC7E;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC,EAAE,cAAc,WAAW,MAAM,WAAW,MAAM,UAAU,CAAC;AAAA,IACtE,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC,EAAE,cAAc,WAAW,MAAM,WAAW,MAAM,UAAU,CAAC;AAAA,IACtE,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA,EAAE,QAAQ,CAAC,GAAG,MAAM,qBAAqB,SAAS,CAAC,GAAG,iBAAiB,cAAc,MAAM,WAAW;AAAA,EACtG;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,QAAQ,MAAM,IAAI,MAAM,OAAO,CAAC;AAAA,IAC1D,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN,EAAE,cAAc,2BAA2B,MAAM,gBAAgB,MAAM,UAAU;AAAA,MACjF,EAAE,cAAc,2BAA2B,MAAM,gBAAgB,MAAM,UAAU;AAAA,MACjF,EAAE,cAAc,WAAW,MAAM,oBAAoB,MAAM,UAAU;AAAA,MACrE,EAAE,cAAc,WAAW,MAAM,mBAAmB,MAAM,UAAU;AAAA,MACpE,EAAE,cAAc,WAAW,MAAM,iBAAiB,MAAM,UAAU;AAAA,MAClE,EAAE,cAAc,WAAW,MAAM,qBAAqB,MAAM,UAAU;AAAA,MACtE,EAAE,cAAc,WAAW,MAAM,8BAA8B,MAAM,UAAU;AAAA,MAC/E,EAAE,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,IAC7D;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,QAAQ,MAAM,IAAI,MAAM,OAAO,CAAC;AAAA,IAC1D,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,QAAQ,MAAM,IAAI,MAAM,OAAO,CAAC;AAAA,IAC1D,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC,EAAE,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU,CAAC;AAAA,IACpE,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC,EAAE,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU,CAAC;AAAA,IACrE,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA,EAAE,QAAQ,CAAC,GAAG,MAAM,qBAAqB,SAAS,CAAC,GAAG,iBAAiB,cAAc,MAAM,WAAW;AAAA,EACtG;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,2BAA2B,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChF,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,2BAA2B,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChF,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA,EAAE,QAAQ,CAAC,GAAG,MAAM,cAAc,SAAS,CAAC,GAAG,iBAAiB,cAAc,MAAM,WAAW;AAAA,EAC/F;AAAA,IACE,QAAQ,CAAC,EAAE,cAAc,WAAW,MAAM,YAAY,MAAM,UAAU,CAAC;AAAA,IACvE,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN,EAAE,cAAc,QAAQ,MAAM,cAAc,MAAM,OAAO;AAAA,MACzD,EAAE,cAAc,WAAW,MAAM,qBAAqB,MAAM,UAAU;AAAA,IACxE;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN,EAAE,cAAc,QAAQ,MAAM,gBAAgB,MAAM,OAAO;AAAA,MAC3D,EAAE,cAAc,WAAW,MAAM,oBAAoB,MAAM,UAAU;AAAA,IACvE;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC,EAAE,cAAc,WAAW,MAAM,oBAAoB,MAAM,UAAU,CAAC;AAAA,IAC/E,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN,EAAE,cAAc,WAAW,MAAM,mBAAmB,MAAM,UAAU;AAAA,MACpE,EAAE,cAAc,WAAW,MAAM,iBAAiB,MAAM,UAAU;AAAA,IACpE;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAC/D,MAAM;AAAA,IACN,SAAS;AAAA,MACP,EAAE,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,MAC3D,EAAE,cAAc,WAAW,MAAM,cAAc,MAAM,UAAU;AAAA,IACjE;AAAA,IACA,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,QAAQ,MAAM,IAAI,MAAM,OAAO,CAAC;AAAA,IAC1D,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC,EAAE,cAAc,WAAW,MAAM,WAAW,MAAM,UAAU,CAAC;AAAA,IACtE,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AACF;;;ACrUO,IAAM,cAAc;AAAA,EACzB;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC,EAAE,cAAc,WAAW,MAAM,WAAW,MAAM,UAAU,CAAC;AAAA,IACtE,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC,EAAE,cAAc,WAAW,MAAM,WAAW,MAAM,UAAU,CAAC;AAAA,IACtE,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA,EAAE,QAAQ,CAAC,GAAG,MAAM,qBAAqB,SAAS,CAAC,GAAG,iBAAiB,cAAc,MAAM,WAAW;AAAA,EACtG;AAAA,IACE,QAAQ;AAAA,MACN,EAAE,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,MAC1D,EAAE,cAAc,WAAW,MAAM,OAAO,MAAM,UAAU;AAAA,IAC1D;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA,EAAE,QAAQ,CAAC,GAAG,MAAM,mBAAmB,SAAS,CAAC,GAAG,iBAAiB,cAAc,MAAM,WAAW;AAAA,EACpG;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC,EAAE,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU,CAAC;AAAA,IACpE,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAC/D,MAAM;AAAA,IACN,SAAS;AAAA,MACP,EAAE,cAAc,mBAAmB,MAAM,WAAW,MAAM,UAAU;AAAA,MACpE,EAAE,cAAc,WAAW,MAAM,cAAc,MAAM,UAAU;AAAA,MAC/D,EAAE,cAAc,WAAW,MAAM,mBAAmB,MAAM,UAAU;AAAA,MACpE,EAAE,cAAc,WAAW,MAAM,mBAAmB,MAAM,UAAU;AAAA,IACtE;AAAA,IACA,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA,EAAE,QAAQ,CAAC,GAAG,MAAM,qBAAqB,SAAS,CAAC,GAAG,iBAAiB,cAAc,MAAM,WAAW;AAAA,EACtG;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,mBAAmB,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IACxE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA,EAAE,QAAQ,CAAC,GAAG,MAAM,cAAc,SAAS,CAAC,GAAG,iBAAiB,cAAc,MAAM,WAAW;AAAA,EAC/F;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,mBAAmB,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IACxE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC,EAAE,cAAc,WAAW,MAAM,YAAY,MAAM,UAAU,CAAC;AAAA,IACvE,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC,EAAE,cAAc,WAAW,MAAM,QAAQ,MAAM,UAAU,CAAC;AAAA,IACnE,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAC/D,MAAM;AAAA,IACN,SAAS;AAAA,MACP,EAAE,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,MAC3D,EAAE,cAAc,WAAW,MAAM,cAAc,MAAM,UAAU;AAAA,IACjE;AAAA,IACA,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC,EAAE,cAAc,WAAW,MAAM,WAAW,MAAM,UAAU,CAAC;AAAA,IACtE,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AACF;;;ACzHO,IAAM,gBAAgB;AAAA,EAC3B;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS;AAAA,MACP;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS;AAAA,MACP;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS;AAAA,MACP;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS;AAAA,MACP;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS;AAAA,MACP;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS;AAAA,MACP;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS;AAAA,MACP;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,MAAM;AAAA,IACN,SAAS;AAAA,MACP;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS;AAAA,MACP;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,MACA;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS;AAAA,MACP;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS;AAAA,MACP;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS;AAAA,MACP;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS;AAAA,MACP;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,MACA;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,MACA;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,MAAM;AAAA,IACN,SAAS;AAAA,MACP;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,MACA;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AACF;;;ACpVO,IAAM,gBAAgB;AAAA,EAC3B;AAAA,IACE,QAAQ;AAAA,MACN,EAAE,cAAc,WAAW,MAAM,mBAAmB,MAAM,UAAU;AAAA,MACpE,EAAE,cAAc,QAAQ,MAAM,8BAA8B,MAAM,OAAO;AAAA,MACzE,EAAE,cAAc,WAAW,MAAM,kCAAkC,MAAM,UAAU;AAAA,IACrF;AAAA,IACA,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,QAAQ;AAAA,MACN,EAAE,SAAS,MAAM,cAAc,WAAW,MAAM,QAAQ,MAAM,UAAU;AAAA,MACxE,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,IAC7E;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,QAAQ;AAAA,MACN,EAAE,SAAS,MAAM,cAAc,WAAW,MAAM,QAAQ,MAAM,UAAU;AAAA,MACxE,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,IAC7E;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,QAAQ,CAAC,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,oBAAoB,MAAM,UAAU,CAAC;AAAA,IAC/F,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,QAAQ,CAAC,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,kBAAkB,MAAM,UAAU,CAAC;AAAA,IAC7F,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,QAAQ;AAAA,MACN,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,cAAc,MAAM,UAAU;AAAA,MAC/E,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,YAAY,MAAM,UAAU;AAAA,IAC/E;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,QAAQ;AAAA,MACN,EAAE,SAAS,MAAM,cAAc,WAAW,MAAM,iBAAiB,MAAM,UAAU;AAAA,MACjF,EAAE,SAAS,MAAM,cAAc,WAAW,MAAM,YAAY,MAAM,UAAU;AAAA,IAC9E;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,QAAQ,CAAC,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,eAAe,MAAM,UAAU,CAAC;AAAA,IAC1F,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,QAAQ;AAAA,MACN,EAAE,SAAS,MAAM,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,MACzE,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,IAC7E;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,QAAQ;AAAA,MACN,EAAE,SAAS,OAAO,cAAc,QAAQ,MAAM,sBAAsB,MAAM,OAAO;AAAA,MACjF,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,mBAAmB,MAAM,UAAU;AAAA,IACtF;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,QAAQ;AAAA,MACN,EAAE,SAAS,MAAM,cAAc,WAAW,MAAM,QAAQ,MAAM,UAAU;AAAA,MACxE,EAAE,SAAS,OAAO,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,IAC7E;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC,EAAE,cAAc,WAAW,MAAM,WAAW,MAAM,UAAU,CAAC;AAAA,IACtE,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC,EAAE,cAAc,WAAW,MAAM,WAAW,MAAM,UAAU,CAAC;AAAA,IACtE,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA,EAAE,QAAQ,CAAC,GAAG,MAAM,qBAAqB,SAAS,CAAC,GAAG,iBAAiB,cAAc,MAAM,WAAW;AAAA,EACtG;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,QAAQ,MAAM,IAAI,MAAM,OAAO,CAAC;AAAA,IAC1D,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN,EAAE,cAAc,2BAA2B,MAAM,gBAAgB,MAAM,UAAU;AAAA,MACjF,EAAE,cAAc,2BAA2B,MAAM,gBAAgB,MAAM,UAAU;AAAA,MACjF,EAAE,cAAc,WAAW,MAAM,mBAAmB,MAAM,UAAU;AAAA,MACpE,EAAE,cAAc,WAAW,MAAM,eAAe,MAAM,UAAU;AAAA,MAChE,EAAE,cAAc,WAAW,MAAM,kBAAkB,MAAM,UAAU;AAAA,MACnE,EAAE,cAAc,WAAW,MAAM,qBAAqB,MAAM,UAAU;AAAA,MACtE,EAAE,cAAc,WAAW,MAAM,6BAA6B,MAAM,UAAU;AAAA,MAC9E,EAAE,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,IAC7D;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,QAAQ,MAAM,IAAI,MAAM,OAAO,CAAC;AAAA,IAC1D,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,4BAA4B,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IACjF,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,QAAQ,MAAM,IAAI,MAAM,OAAO,CAAC;AAAA,IAC1D,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC,EAAE,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU,CAAC;AAAA,IACpE,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC,EAAE,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU,CAAC;AAAA,IACrE,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA,EAAE,QAAQ,CAAC,GAAG,MAAM,qBAAqB,SAAS,CAAC,GAAG,iBAAiB,cAAc,MAAM,WAAW;AAAA,EACtG;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,2BAA2B,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChF,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,2BAA2B,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChF,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA,EAAE,QAAQ,CAAC,GAAG,MAAM,cAAc,SAAS,CAAC,GAAG,iBAAiB,cAAc,MAAM,WAAW;AAAA,EAC/F;AAAA,IACE,QAAQ,CAAC,EAAE,cAAc,WAAW,MAAM,YAAY,MAAM,UAAU,CAAC;AAAA,IACvE,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN,EAAE,cAAc,QAAQ,MAAM,cAAc,MAAM,OAAO;AAAA,MACzD,EAAE,cAAc,WAAW,MAAM,qBAAqB,MAAM,UAAU;AAAA,IACxE;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN,EAAE,cAAc,QAAQ,MAAM,gBAAgB,MAAM,OAAO;AAAA,MAC3D,EAAE,cAAc,WAAW,MAAM,oBAAoB,MAAM,UAAU;AAAA,IACvE;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC,EAAE,cAAc,WAAW,MAAM,mBAAmB,MAAM,UAAU,CAAC;AAAA,IAC9E,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN,EAAE,cAAc,WAAW,MAAM,eAAe,MAAM,UAAU;AAAA,MAChE,EAAE,cAAc,WAAW,MAAM,kBAAkB,MAAM,UAAU;AAAA,IACrE;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAC/D,MAAM;AAAA,IACN,SAAS;AAAA,MACP,EAAE,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,MAC3D,EAAE,cAAc,WAAW,MAAM,cAAc,MAAM,UAAU;AAAA,IACjE;AAAA,IACA,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,QAAQ,MAAM,IAAI,MAAM,OAAO,CAAC;AAAA,IAC1D,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC,EAAE,cAAc,WAAW,MAAM,WAAW,MAAM,UAAU,CAAC;AAAA,IACtE,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AACF;;;AChUO,SAAS,mBAAmB,WAA8B,SAAkB;AACjF,MAAI,CAAC,iBAAiB,OAAO,GAAG;AAC9B,UAAM,IAAI,MAAM,kDAAkD,SAAS;AAAA,EAC7E;AACA,SAAO,UAAU,OAAO;AAC1B;;;ACRO,SAAS,aAAa,MAAoD;AAC/E,MAAK,KAAa,eAAe;AAC/B,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAEO,SAAS,eAAe,MAAsD;AACnF,MAAK,KAAa,gBAAgB;AAChC,WAAO;AAAA,EACT;AACA,SAAO;AACT;;;ACdA,OAAOA,gBAAe;AAYf,IAAM,4BAA4B,CACvC,mBACA,kBACA,aACA,kBACkB;AAClB,QAAM,0BAA0B,IAAIA,WAAU,gBAAgB,EAAE,MAAM,aAAa,EAAE,MAAM,eAAe;AAC1G,QAAM,0BAA0B,IAAIA,WAAU,iBAAiB,EAAE,MAAM,WAAW;AAClF,QAAM,MAAM,wBAAwB,IAAI,uBAAuB,EAAE,MAAM,GAAG;AAC1E,SAAO,IAAI,MAAM,KAAK,CAAC,IAAI,SAAS,IAAI,OAAO,IAAI,SAAS;AAC9D;AAEO,IAAM,6BAA6B,CACxC,mBACA,kBACA,aACA,mBACkB;AAClB,QAAM,0BAA0B,IAAIA,WAAU,gBAAgB,EAAE,MAAM,cAAc,EAAE,MAAM,eAAe;AAC3G,QAAM,0BAA0B,IAAIA,WAAU,iBAAiB,EAAE,MAAM,WAAW;AAClF,QAAM,MAAM,wBAAwB,IAAI,uBAAuB,EAAE,MAAM,GAAG;AAC1E,SAAO,IAAI,MAAM,KAAK,CAAC,IAAI,SAAS,IAAI,OAAO,IAAI,SAAS;AAC9D;;;ACjCA,SAAqF,mBAAmB;;;ACDjG,IAAM,iBAAiB;AAAA,EAC5B;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA,EAAE,QAAQ,CAAC,GAAG,MAAM,WAAW,SAAS,CAAC,GAAG,iBAAiB,WAAW,MAAM,WAAW;AAAA,EACzF;AAAA,IACE,QAAQ,CAAC,EAAE,cAAc,WAAW,MAAM,WAAW,MAAM,UAAU,CAAC;AAAA,IACtE,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA,EAAE,QAAQ,CAAC,GAAG,MAAM,qBAAqB,SAAS,CAAC,GAAG,iBAAiB,cAAc,MAAM,WAAW;AAAA,EACtG;AAAA,IACE,QAAQ;AAAA,MACN,EAAE,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,MAC1D,EAAE,cAAc,WAAW,MAAM,OAAO,MAAM,UAAU;AAAA,IAC1D;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA,EAAE,QAAQ,CAAC,GAAG,MAAM,mBAAmB,SAAS,CAAC,GAAG,iBAAiB,cAAc,MAAM,WAAW;AAAA,EACpG;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC,EAAE,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU,CAAC;AAAA,IACpE,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAC/D,MAAM;AAAA,IACN,SAAS;AAAA,MACP,EAAE,cAAc,mBAAmB,MAAM,WAAW,MAAM,UAAU;AAAA,MACpE,EAAE,cAAc,WAAW,MAAM,cAAc,MAAM,UAAU;AAAA,MAC/D,EAAE,cAAc,WAAW,MAAM,mBAAmB,MAAM,UAAU;AAAA,MACpE,EAAE,cAAc,WAAW,MAAM,mBAAmB,MAAM,UAAU;AAAA,IACtE;AAAA,IACA,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC,EAAE,cAAc,WAAW,MAAM,qBAAqB,MAAM,UAAU,CAAC;AAAA,IAChF,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA,EAAE,QAAQ,CAAC,GAAG,MAAM,qBAAqB,SAAS,CAAC,GAAG,iBAAiB,cAAc,MAAM,WAAW;AAAA,EACtG;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,mBAAmB,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IACxE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC,EAAE,cAAc,WAAW,MAAM,iBAAiB,MAAM,UAAU,CAAC;AAAA,IAC5E,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC,EAAE,cAAc,WAAW,MAAM,qBAAqB,MAAM,UAAU,CAAC;AAAA,IAChF,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC,EAAE,cAAc,WAAW,MAAM,WAAW,MAAM,UAAU,CAAC;AAAA,IACtE,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC,EAAE,cAAc,WAAW,MAAM,YAAY,MAAM,UAAU,CAAC;AAAA,IACvE,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC,EAAE,cAAc,WAAW,MAAM,QAAQ,MAAM,UAAU,CAAC;AAAA,IACnE,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAC/D,MAAM;AAAA,IACN,SAAS;AAAA,MACP,EAAE,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,MAC3D,EAAE,cAAc,WAAW,MAAM,cAAc,MAAM,UAAU;AAAA,MAC/D,EAAE,cAAc,QAAQ,MAAM,eAAe,MAAM,OAAO;AAAA,IAC5D;AAAA,IACA,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC,EAAE,cAAc,WAAW,MAAM,WAAW,MAAM,UAAU,CAAC;AAAA,IACtE,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA,EAAE,iBAAiB,WAAW,MAAM,UAAU;AAChD;;;AD7IO,SAAS,uBAAuB;AAAA,EACrC;AAAA,EACA;AAAA,EACA;AACF,GAIkD;AAChD,SAAO;AAAA,IACL,GAAG,YAAY;AAAA,MACb,KAAK;AAAA,MACL;AAAA,MACA,QAAQ;AAAA,QACN,QAAQ;AAAA,QACR,QAAQ;AAAA,MACV;AAAA,IACF,CAAC;AAAA,IACD,KAAK;AAAA,IACL;AAAA,IACA,SAAS,QAAQ;AAAA,IACjB,OAAO,QAAQ;AAAA,EACjB;AACF;AAEO,SAAS,sBAAsB;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AACF,GAIiD;AAC/C,SAAO;AAAA,IACL,GAAG,YAAY;AAAA,MACb,KAAK;AAAA,MACL;AAAA,MACA,QAAQ;AAAA,QACN,QAAQ;AAAA,QACR,QAAQ;AAAA,MACV;AAAA,IACF,CAAC;AAAA,IACD,KAAK;AAAA,IACL;AAAA,IACA,SAAS,QAAQ;AAAA,IACjB,OAAO,QAAQ;AAAA,EACjB;AACF;AAEO,SAAS,2BAA2B;AAAA,EACzC;AAAA,EACA;AAAA,EACA;AACF,GAIgD;AAC9C,SAAO;AAAA,IACL,GAAG,YAAY;AAAA,MACb,KAAK;AAAA,MACL;AAAA,MACA,QAAQ;AAAA,QACN,QAAQ;AAAA,QACR,QAAQ;AAAA,MACV;AAAA,IACF,CAAC;AAAA,IACD,KAAK;AAAA,IACL;AAAA,IACA,SAAS,QAAQ;AAAA,IACjB,OAAO,QAAQ;AAAA,EACjB;AACF;AAEA,eAAsB,wBAAwB,EAAE,SAAS,QAAQ,QAAQ,aAAa,GAAgC;AACpH,MAAI,CAAC,SAAS;AACZ,WAAO;AAAA,EACT;AACA,QAAM,QAAQ,MAAM,eAAe,OAAO;AAC1C,QAAM,OAAO,OAAO,KAAK,CAAC,MAAM,EAAE,WAAW,OAAO,MAAM,CAAC;AAC3D,MAAI,CAAC,MAAM;AACT,WAAO;AAAA,EACT;AACA,QAAM,EAAE,gBAAgB,IAAI;AAC5B,MAAI,aAAa,IAAI,GAAG;AACtB,QAAI,KAAK,0CAAuC;AAC9C,aAAO,uBAAuB,EAAE,SAAS,iBAAiB,QAAQ,aAAa,CAAC;AAAA,IAClF;AACA,WAAO,sBAAsB,EAAE,SAAS,iBAAiB,QAAQ,aAAa,CAAC;AAAA,EACjF;AACA,SAAO,2BAA2B,EAAE,SAAS,iBAAiB,QAAQ,aAAa,CAAC;AACtF;;;AEjHO,IAAM,qBAAqB,CAAC,UAAkB,YAA8B;AACjF,QAAM,OAAO,sBAAsB,OAAO;AAC1C,QAAM,YAAY,MAAM,KAAK,CAAC,MAAM,GAAG,iBAAiB,YAAY,MAAM,SAAS,YAAY,CAAC;AAEhG,SAAO,cAAc;AACvB;;;ACRA,SAAS,WAAAH,gBAAe;AACxB,OAAOG,gBAAe;AAGtB,IAAM,OAAO;AACb,IAAM,OAAO;AACb,IAAM,UAAU;AAEhB,IAAM,mBAA4C;AAAA,EAChD,CAACH,SAAQ,KAAK,GAAG;AAAA,EACjB,CAACA,SAAQ,YAAY,GAAG;AAC1B;AAEA,IAAM,iBAAyC;AAAA,EAC7C,CAACA,SAAQ,KAAK,GAAG;AAAA,EACjB,CAACA,SAAQ,YAAY,GAAG;AAC1B;AAEO,IAAM,yBAAyB,OAAO,QAAsB,YAAqB;AACtF,MAAI;AACF,UAAM,CAAC,UAAU,IAAI,MAAM,OAAO,UAAU;AAAA,MAC1C,WAAW;AAAA,QACT;AAAA,UACE,KAAK;AAAA,YACH;AAAA,cACE,QAAQ,CAAC;AAAA,cACT,MAAM;AAAA,cACN,SAAS;AAAA,gBACP;AAAA,kBACE,YAAY;AAAA,oBACV,EAAE,cAAc,WAAW,MAAM,gBAAgB,MAAM,UAAU;AAAA,oBACjE,EAAE,cAAc,UAAU,MAAM,SAAS,MAAM,SAAS;AAAA,oBACxD,EAAE,cAAc,SAAS,MAAM,YAAY,MAAM,QAAQ;AAAA,oBACzD,EAAE,cAAc,UAAU,MAAM,YAAY,MAAM,SAAS;AAAA,oBAC3D,EAAE,cAAc,UAAU,MAAM,gBAAgB,MAAM,SAAS;AAAA,oBAC/D,EAAE,cAAc,UAAU,MAAM,kBAAkB,MAAM,SAAS;AAAA,oBACjE,EAAE,cAAc,UAAU,MAAM,kBAAkB,MAAM,SAAS;AAAA,oBACjE,EAAE,cAAc,QAAQ,MAAM,cAAc,MAAM,OAAO;AAAA,kBAC3D;AAAA,kBACA,cAAc;AAAA,kBACd,MAAM;AAAA,kBACN,MAAM;AAAA,gBACR;AAAA,cACF;AAAA,cACA,iBAAiB;AAAA,cACjB,MAAM;AAAA,YACR;AAAA,UACF;AAAA,UACA,SAAS,mBAAmB,OAAO;AAAA,UACnC,cAAc;AAAA,QAChB;AAAA,MACF;AAAA,MACA,cAAc;AAAA,IAChB,CAAC;AAED,UAAM,gBAAgB,WACnB,IAAI,CAAC,MAAM,IAAIG,WAAU,EAAE,SAAS,SAAS,CAAC,EAAE,IAAI,IAAI,EAAE,SAAS,CAAC,EACpE,OAAO,CAAC,GAAG,MAAM,IAAI,GAAG,CAAC;AAE5B,UAAM,WAAW,MAAM,MAAM,GAAG,UAAU,eAAe,OAAO,GAAG;AACnE,UAAM,SAAS,MAAM,SAAS,KAAK;AAEnC,UAAM,EAAE,eAAe,eAAe,UAAU,IAAI,OAAO;AAC3D,UAAM,MAAM,IAAIA,WAAU,aAAa,EAAE,KAAK,aAAa,EAAE,KAAK,SAAS;AAC3E,UAAM,WAAW,IAAI,IAAI,cAAc,SAAS,CAAC,EAAE,IAAI,IAAI;AAE3D,UAAM,MAAM,SAAS,KAAK,CAAC,EAAE,gBAAgB,IAAI,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG;AACrE,WAAO,IAAI,SAAS;AAAA,EACtB,SAAS,OAAP;AACA,YAAQ,KAAK,iCAAiC,KAAK;AACnD,WAAO;AAAA,EACT;AACF;;;AC7DO,IAAM,oBAAoB,OAAO,EAAE,QAAQ,iBAAiB,QAAQ,MAA0C;AACnH,QAAM,OAAO,WAAW,qBAAqB,SAAS,eAAe;AAErE,MAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,MAAM;AACzC,WAAO;AAAA,EACT;AAGA,MAAI,MAAM,6BAAiC;AACzC,UAAM,SAAS,MAAM,uBAAuB,QAAQ,OAAO;AAC3D,WAAO;AAAA,EACT;AAEA,SAAO;AACT;;;AZVA,IAAM,sBAAsB,OAAO,YAAqB;AACtD,QAAM,cAAc,MAAM,eAAe,OAAO;AAChD,MAAI,CAAC,aAAa;AAChB,WAAO;AAAA,EACT;AACA,SAAO,YAAY,OAAO,CAAC,MAAM,EAAE,WAAW,KAAK,CAAC,EAAE,UAAU;AAClE;AAEA,eAAe,6BACb,OACA,SACA,UACA;AACA,MAAI,CAAC,MAAM,QAAQ;AACjB,WAAO,CAAC;AAAA,EACV;AAEA,QAAM,QAAQ,MAAM,QAAQ,CAAC,EAAE,gBAAgB,MAAM;AACnD,WAAO;AAAA,MACL;AAAA,QACE,KAAK;AAAA,QACL,SAAS;AAAA,QACT,cAAc;AAAA,MAChB;AAAA,MACA;AAAA,QACE,KAAK;AAAA,QACL,SAAS;AAAA,QACT,cAAc;AAAA,MAChB;AAAA,IACF;AAAA,EACF,CAAC;AAED,QAAM,SAAS,SAAS,EAAE,QAAQ,CAAC;AACnC,QAAM,cAAc,MAAM,OAAO,UAAU;AAAA,IACzC,WAAW;AAAA,IACX,cAAc;AAAA,EAChB,CAAC;AAED,QAAM,iBAAiB,YAAY,OAAmB,CAAC,aAAa,MAAM,UAAU;AAClF,UAAM,aAAa,KAAK,MAAM,QAAQ,CAAC;AAEvC,QAAI,CAAC,YAAY,UAAU,GAAG;AAE5B,kBAAY,UAAU,IAAI,CAAC;AAAA,IAC7B;AAEA,gBAAY,UAAU,EAAE,KAAK,IAAI;AAEjC,WAAO;AAAA,EACT,GAAG,CAAC,CAAC;AAEL,SAAO,MAAM,IAAI,CAAC,gBAAgB,UAAU;AAC1C,UAAM,CAAC,gBAAgB,YAAY,IAAI,eAAe,KAAK;AAC3D,WAAO;AAAA,MACL,QAAQ,eAAe;AAAA,MACvB,gBAAgB,OAAO,cAAc;AAAA,MACrC,cAAc,OAAO,YAAY;AAAA,IACnC;AAAA,EACF,CAAC;AACH;AAEA,IAAM,8BAA8B,OAClC,OACA,SACA,aACG;AACH,MAAI,CAAC,MAAM,QAAQ;AACjB,WAAO,CAAC;AAAA,EACV;AACA,QAAM,qBAAqB,MAAM,QAAQ,CAAC,EAAE,gBAAgB,MAAM;AAChE,WAAO;AAAA,MACL;AAAA,QACE,KAAK;AAAA,QACL,SAAS;AAAA,QACT,cAAc;AAAA,MAChB;AAAA,MACA;AAAA,QACE,KAAK;AAAA,QACL,SAAS;AAAA,QACT,cAAc;AAAA,MAChB;AAAA,IACF;AAAA,EACF,CAAC;AAED,QAAM,SAAS,SAAS,EAAE,QAAQ,CAAC;AAEnC,QAAM,CAAC,OAAO,gBAAgB,IAAI,MAAM,QAAQ,IAAI;AAAA,IAClD,OAAO,SAAS,EAAE,UAAU,SAAS,CAAC;AAAA,IACtC,OAAO,UAAU;AAAA,MACf,WAAW;AAAA,MACX,cAAc;AAAA,IAChB,CAAC;AAAA,EACH,CAAC;AAED,QAAM,sBAAsB,iBAAiB,OAAmB,CAAC,aAAa,MAAM,UAAU;AAC5F,UAAM,aAAa,KAAK,MAAM,QAAQ,CAAC;AAEvC,QAAI,CAAC,YAAY,UAAU,GAAG;AAE5B,kBAAY,UAAU,IAAI,CAAC;AAAA,IAC7B;AAEA,gBAAY,UAAU,EAAE,KAAK,IAAI;AAEjC,WAAO;AAAA,EACT,GAAG,CAAC,CAAC;AAEL,QAAM,wBAAwB,CAAC,gBAAwB;AACrD,WAAO,OAAO,MAAM,SAAS,KAAK,cAAc,OAAO,MAAM,MAAM,KAAK;AAAA,EAC1E;AACA,SAAO,MAAM,IAAI,CAAC,gBAAgB,UAAU;AAC1C,UAAM,CAAC,YAAY,QAAQ,IAAI,oBAAoB,KAAK;AACxD,WAAO;AAAA,MACL,QAAQ,eAAe;AAAA,MACvB,gBAAgB,sBAAsB,OAAO,UAAU,CAAC;AAAA,MACxD,cAAc,sBAAsB,OAAO,QAAQ,CAAC;AAAA,IACtD;AAAA,EACF,CAAC;AACH;AAEO,IAAM,uBAAuB,OAAO,SAAkB,aAA8B;AACzF,QAAM,aAAa,MAAM,oBAAoB,OAAO;AACpD,MAAI,CAAC,YAAY;AACf,WAAO;AAAA,EACT;AACA,QAAM,gBAAgB,WAAW,OAAO,cAAc;AACtD,QAAM,cAAc,WAAW,OAAO,YAAY;AAClD,QAAM,CAAC,mBAAmB,gBAAgB,IAAI,MAAM,QAAQ,IAAI;AAAA,IAC9D,6BAA6B,eAAe,SAAS,QAAQ;AAAA,IAC7D,4BAA4B,aAAa,SAAS,QAAQ;AAAA,EAC5D,CAAC;AACD,SAAO,CAAC,GAAG,mBAAmB,GAAG,gBAAgB;AACnD;AAEO,IAAM,yBAAyB,OAAO,SAAkB,aAA8B;AAC3F,QAAM,cAAc,MAAM,eAAe,OAAO;AAChD,MAAI,CAAC,aAAa;AAChB,WAAO;AAAA,EACT;AACA,QAAM,iBAAiB,YAAY,IAAI,CAAC,EAAE,iBAAiB,aAAa,MAAM;AAC5E,WAAO;AAAA,MACL,KAAK;AAAA,MACL,SAAS,aAAa;AAAA,MACtB,cAAc;AAAA,MACd,MAAM,CAAC,eAAe;AAAA,IACxB;AAAA,EACF,CAAC;AAED,QAAM,SAAS,SAAS,EAAE,QAAQ,CAAC;AACnC,QAAM,mBAAmB,MAAM,OAAO,UAAU;AAAA,IAC9C,WAAW;AAAA,IACX,cAAc;AAAA,EAChB,CAAC;AAED,SAAO,YAAY,IAAI,CAAC,GAAG,WAAW;AAAA,IACpC,QAAQ,EAAE;AAAA,IACV,aAAa,IAAIA,WAAU,iBAAiB,KAAK,EAAE,SAAS,CAAC,EAAE,OAAO;AAAA,EACxE,EAAE;AACJ;AAQO,IAAM,iCAAiC,OAAO;AAAA,EACnD;AAAA,EACA;AAAA,EACA;AACF,MAEM;AACJ,QAAM,cAAc,MAAM,eAAe,OAAO;AAChD,MAAI,CAAC,aAAa;AAChB,UAAM,IAAI,MAAM,2BAA2B,SAAS;AAAA,EACtD;AAEA,QAAM,aAAa,YAChB,OAAO,YAAY,EACnB,OAAO,CAAC,MAAM,EAAE,aAAa,WAAW,SAAS,CAAC,EAAE,UAAU,EAC9D,OAAO,CAAC,MAAM,CAAC,sBAAsB,SAAS,EAAE,MAAM,CAAC;AAG1D,QAAM,mBAAmB,WACtB,IAAI,CAAC,EAAE,gBAAgB,MAAM;AAC5B,WAAQ,CAAC,gBAAgB,oBAAoB,0BAA0B,EAAY;AAAA,MACjF,CAAC,YACE;AAAA,QACC,SAAS;AAAA,QACT,cAAc;AAAA,QACd,KAAK;AAAA,MACP;AAAA,IACJ;AAAA,EACF,CAAC,EACA,KAAK;AAER,QAAM,SAAS,SAAS,EAAE,QAAQ,CAAC;AAEnC,QAAM,uBAAuB,MAAM,OAAO,UAAU;AAAA,IAClD,WAAW;AAAA,IACX,cAAc;AAAA,EAChB,CAAC;AAED,QAAM,YAAY,iBAAiB,SAAS,WAAW;AACvD,QAAM,8BAA8B,MAAM,qBAAqB,KAAK,GAAG,SAAS;AAChF,SAAO;AAAA,IACL,4BAA4B,IAAI,CAAC,iBAAiB,UAAU;AAC1D,YAAM,eAAe,gBAAgB,CAAC,GAAG;AACzC,YAAM,eACJ,gBAAgB,gBAAgB,CAAC,EAAE,SAAS,IAAIA,WAAU,gBAAgB,CAAC,EAAE,OAAO,SAAS,CAAC,IAAI;AACpG,YAAM,2BAA2B,gBAAgB,CAAC,EAAE,SAAS,OAAO,gBAAgB,CAAC,EAAE,MAAM,IAAI;AACjG,YAAM,4BAA4B,2BAA2B;AAC7D,aAAO,CAAC,WAAW,KAAK,EAAE,QAAQ,EAAE,cAAc,0BAA0B,CAAC;AAAA,IAC/E,CAAC;AAAA,EACH;AACF;AAEA,IAAM,gCAAgC,OAAO;AAAA,EAC3C;AAAA,EACA;AAAA,EACA;AACF,MAEM;AACJ,QAAM,cAAc,MAAM,eAAe,OAAO;AAChD,MAAI,CAAC,aAAa;AAChB,UAAM,IAAI,MAAM,2BAA2B,SAAS;AAAA,EACtD;AAEA,QAAM,aAAa,YAChB,OAAO,cAAc,EACrB,OAAO,CAAC,MAAM,EAAE,aAAa,WAAW,SAAS,CAAC,EAAE,UAAU,EAC9D,OAAO,CAAC,MAAM,CAAC,sBAAsB,SAAS,EAAE,MAAM,CAAC;AAG1D,QAAM,mBAAmB,WACtB,IAAI,CAAC,EAAE,gBAAgB,MAAM;AAC5B,WAAQ,CAAC,gBAAgB,oBAAoB,2BAA2B,EAAY;AAAA,MAClF,CAAC,YACE;AAAA,QACC,KAAK;AAAA,QACL,SAAS;AAAA,QACT,cAAc;AAAA,MAChB;AAAA,IACJ;AAAA,EACF,CAAC,EACA,KAAK;AAER,QAAM,SAAS,SAAS,EAAE,QAAQ,CAAC;AACnC,QAAM,uBAAuB,MAAM,OAAO,UAAU;AAAA,IAClD,WAAW;AAAA,IACX,cAAc;AAAA,EAChB,CAAC;AACD,QAAM,YAAY,iBAAiB,SAAS,WAAW;AACvD,QAAM,8BAA8B,MAAM,qBAAqB,KAAK,GAAG,SAAS;AAChF,SAAO;AAAA,IACL,4BAA4B,IAAI,CAAC,iBAAiB,UAAU;AAC1D,YAAM,eAAe,gBAAgB,CAAC,EAAE;AACxC,YAAM,eACJ,gBAAgB,gBAAgB,CAAC,EAAE,SAAS,IAAIA,WAAU,gBAAgB,CAAC,EAAE,OAAO,SAAS,CAAC,IAAI;AACpG,YAAM,4BAA4B,gBAAgB,CAAC,EAAE,SAAS,OAAO,gBAAgB,CAAC,EAAE,MAAM,IAAI;AAClG,aAAO,CAAC,WAAW,KAAK,EAAE,QAAQ,EAAE,cAAc,0BAA0B,CAAC;AAAA,IAC/E,CAAC;AAAA,EACH;AACF;AAEO,IAAM,0BAA0B,OACrC,WAGI;AACJ,QAAM,CAAC,cAAc,aAAa,IAAI,MAAM,QAAQ,IAAI;AAAA,IACtD,8BAA8B,MAAM;AAAA,IACpC,+BAA+B,MAAM;AAAA,EACvC,CAAC;AACD,SAAO;AAAA,IACL,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AACF;AAEO,IAAM,+BAA+B,OAC1C,SACA,aAMI;AACJ,QAAM,cAAc,MAAM,eAAe,OAAO;AAChD,MAAI,CAAC,aAAa;AAChB,UAAM,IAAI,MAAM,2BAA2B,SAAS;AAAA,EACtD;AAEA,QAAM,kBAAkB,YAAY;AAAA,IAClC,CAAC,UAAU,eAAe,IAAI,KAAM,aAAa,IAAI,KAAK,MAAM,YAAY,MAAO,CAAC,MAAM;AAAA,EAC5F;AACA,QAAM,0BAA0B,gBAC7B,IAAI,CAAC,EAAE,gBAAgB,MAAM;AAC5B,WAAQ,CAAC,6BAA6B,+BAA+B,EAAY;AAAA,MAC/E,CAAC,YACE;AAAA,QACC,KAAK;AAAA,QACL,SAAS;AAAA,QACT,cAAc;AAAA,MAChB;AAAA,IACJ;AAAA,EACF,CAAC,EACA,KAAK;AAER,QAAM,SAAS,SAAS,EAAE,QAAQ,CAAC;AACnC,QAAM,8BAA8B,MAAM,OAAO,UAAU;AAAA,IACzD,WAAW;AAAA,EACb,CAAC;AAED,QAAM,YAAY,wBAAwB,SAAS,gBAAgB;AACnE,QAAM,8BAA8B,MAAM,4BAA4B,KAAK,GAAG,SAAS;AACvF,SAAO;AAAA,IACL,4BAA4B,IAAI,CAAC,uBAAuB,UAAU;AAChE,YAAM,qBAAqB,sBAAsB,CAAC,EAAE;AACpD,YAAM,yBAAyB,sBAAsB,CAAC,EAAE,SACpD,IAAIA,WAAU,sBAAsB,CAAC,EAAE,OAAO,SAAS,CAAC,IACxD;AACJ,aAAO;AAAA,QACL,gBAAgB,KAAK,EAAE;AAAA,QACvB;AAAA,UACE,UAAU,CAAC,CAAC;AAAA,UACZ,iBAAiB,uBAAuB,OAAO;AAAA,QACjD;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AACF;;;Aa5VA,OAAOA,gBAAe;AACtB,OAAOC,gBAAe;AACtB,OAAO,UAAU;AACjB,SAAkB,YAAAC,iBAAgB;AAOlC,IAAM,kBAAkB,CAAC,WAA8C,OAAO,YAAqB;AACjG,QAAM,cAAc,MAAM,eAAe,OAAO;AAChD,MAAI,CAAC,aAAa;AAChB,UAAM,IAAI,MAAM,uCAAuC,SAAS;AAAA,EAClE;AACA,SAAO,YAAY,OAAO,MAAM;AAClC;AACA,IAAM,iBAAiB,gBAAgB,CAAC,SAAS,KAAK,aAAa,WAAW,KAAK;AACnF,IAAM,cAAc,gBAAgB,CAAC,SAAS,KAAK,aAAa,WAAW,KAAK;AAChF,IAAM,oBAAoB,gBAAgB,CAAC,SAAS,KAAK,WAAW,CAAC;AAQ9D,IAAM,sBAAsB,OAAO,EAAE,SAAS,SAAS,SAAS,MAA2B;AAChG,QAAM,cAAc,MAAM,eAAe,OAAO;AAEhD,QAAM,SAAS,SAAS,EAAE,QAAQ,CAAC;AACnC,QAAM,aAAa,MAAM,OAAO,UAAU;AAAA,IACxC,WAAW,YAAY;AAAA,MACrB,CAAC,EAAE,iBAAiB,aAAa,OAC9B;AAAA,QACC,SAAS,aAAa;AAAA,QACtB,KAAKA;AAAA,QACL,cAAc;AAAA,QACd,MAAM,CAAC,SAAoB,eAAe;AAAA,MAC5C;AAAA,IACJ;AAAA,IACA,cAAc;AAAA,EAChB,CAAC;AACD,SAAOD;AAAA,IACL,YAAY,IAAI,CAAC,MAAM,UAAU,CAAC,KAAK,QAAQ,IAAID,WAAU,WAAW,KAAK,EAAE,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC;AAAA,EACtG;AACF;AAEO,IAAM,oBAAoB,OAAO,EAAE,SAAS,SAAS,SAAS,MAA2B;AAC9F,QAAM,cAAc,MAAM,eAAe,OAAO;AAChD,QAAM,WAAW,MAAM,YAAY,OAAO;AAE1C,QAAM,SAAS,KAAK,YAAY,IAAI,CAAC,SAAS,KAAK,aAAa,OAAO,CAAC;AACxE,QAAM,SAAS,SAAS,EAAE,QAAQ,CAAC;AAEnC,QAAM,eAAe,MAAM,OAAO,UAAU;AAAA,IAC1C,WAAW;AAAA,MACT;AAAA,QACE,KAAK;AAAA,UACH;AAAA,YACE,QAAQ,CAAC,EAAE,cAAc,WAAW,MAAM,QAAQ,MAAM,UAAU,CAAC;AAAA,YACnE,MAAM;AAAA,YACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,WAAW,MAAM,UAAU,CAAC;AAAA,YACvE,iBAAiB;AAAA,YACjB,MAAM;AAAA,UACR;AAAA,QACF;AAAA,QACA,SAAS;AAAA;AAAA,QACT,cAAc;AAAA,QACd,MAAM,CAAC,OAAkB;AAAA,MAC3B;AAAA,MACA,GAAG,OAAO;AAAA,QACR,CAAC,WACE;AAAA,UACC,KAAKE;AAAA,UACL,SAAS;AAAA,UACT,cAAc;AAAA,UACd,MAAM,CAAC,OAAO;AAAA,QAChB;AAAA,MACJ;AAAA,IACF;AAAA,EACF,CAAC;AACD,QAAM,CAAC,YAAY,GAAG,oBAAoB,IAAI;AAE9C,QAAM,gBAAgBD,WAAU,OAAO,IAAI,CAAC,OAAO,UAAU,CAAC,OAAO,qBAAqB,KAAK,EAAE,MAAgB,CAAC,CAAC;AAEnH,QAAM,oBAAoBA;AAAA,IACxB,YACG,IAA6B,CAAC,SAAS;AACtC,UAAI,CAAC,cAAc,KAAK,aAAa,OAAO;AAAG,eAAO;AACtD,aAAO,CAAC,KAAK,QAAQ,IAAID,WAAU,cAAc,KAAK,aAAa,OAAO,EAAE,SAAS,CAAC,EAAE,OAAO,CAAC;AAAA,IAClG,CAAC,EACA,OAAO,CAAC,MAA6B,QAAQ,CAAC,CAAC;AAAA,EACpD;AAGA,QAAM,iBAAiB,IAAIA,WAAW,WAAW,QAAmB,SAAS,CAAC,EAAE,OAAO;AACvF,QAAM,cAAcC,WAAU,SAAS,IAAI,CAAC,SAAS,CAAC,KAAK,QAAQ,cAAc,CAAC,CAAC;AAEnF,SAAO,EAAE,GAAG,mBAAmB,GAAG,YAAY;AAChD;AAEO,IAAM,yBAAyB,OAAO,EAAE,SAAS,SAAS,SAAS,MAA2B;AACnG,QAAM,iBAAiB,MAAM,kBAAkB,OAAO;AAEtD,QAAM,SAAS,SAAS,EAAE,QAAQ,CAAC;AACnC,QAAM,WAAW,MAAM,OAAO,UAAU;AAAA,IACtC,WAAW,eAAe;AAAA,MACxB,CAAC,EAAE,gBAAgB,OAChB;AAAA,QACC,KAAK,YAAY,OAAO,CAAC,MAAM,EAAE,SAAS,UAAU;AAAA,QACpD,SAAS;AAAA,QACT,cAAc;AAAA,QACd,MAAM,CAAC,OAAkB;AAAA,MAC3B;AAAA,IACJ;AAAA,IACA,cAAc;AAAA,EAChB,CAAC;AAED,SAAOA;AAAA,IACL,eAAe,IAAI,CAAC,MAAM,UAAU,CAAC,KAAK,QAAQ,IAAID,WAAU,SAAS,KAAK,EAAE,CAAC,EAAE,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC;AAAA,EAC1G;AACF;AAEO,IAAM,0BAA0B,OAAO,EAAE,SAAS,SAAS,SAAS,MAA2B;AACpG,QAAM,iBAAiB,MAAM,kBAAkB,OAAO;AAEtD,QAAM,SAAS,SAAS,EAAE,QAAQ,CAAC;AACnC,QAAM,MAAM,MAAM,OAAO,UAAU;AAAA,IACjC,WAAW,eAAe;AAAA,MACxB,CAAC,EAAE,gBAAgB,OAChB;AAAA,QACC,KAAK,YAAY,OAAO,CAAC,MAAM,EAAE,SAAS,eAAe;AAAA,QACzD,SAAS;AAAA,QACT,cAAc;AAAA,QACd,MAAM,CAAC,OAAkB;AAAA,MAC3B;AAAA,IACJ;AAAA,IACA,cAAc;AAAA,EAChB,CAAC;AACD,SAAOC,WAAU,eAAe,IAAI,CAAC,MAAM,UAAU,CAAC,KAAK,QAAQ,IAAID,WAAU,IAAI,KAAK,EAAE,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AACpH;;;AC9IA,OAAOA,gBAAe;AAEtB,SAAS,WAAAH,gBAAe;AACxB,SAAS,YAAY;;;ACHd,IAAM,iBAAiB;AAAA,EAC5B;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC,EAAE,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU,CAAC;AAAA,IACpE,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC,EAAE,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU,CAAC;AAAA,IACpE,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN,EAAE,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,MAC1D,EAAE,cAAc,WAAW,MAAM,WAAW,MAAM,UAAU;AAAA,IAC9D;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN,EAAE,cAAc,WAAW,MAAM,WAAW,MAAM,UAAU;AAAA,MAC5D,EAAE,cAAc,WAAW,MAAM,iBAAiB,MAAM,UAAU;AAAA,IACpE;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAC/D,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,QAAQ,MAAM,IAAI,MAAM,OAAO,CAAC;AAAA,IAC1D,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC,EAAE,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU,CAAC;AAAA,IACrE,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC,EAAE,cAAc,mBAAmB,MAAM,cAAc,MAAM,UAAU,CAAC;AAAA,IACjF,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,0BAA0B,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAC/E,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA,EAAE,QAAQ,CAAC,GAAG,MAAM,SAAS,SAAS,CAAC,GAAG,iBAAiB,cAAc,MAAM,WAAW;AAAA,EAC1F;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,QAAQ,MAAM,IAAI,MAAM,OAAO,CAAC;AAAA,IAC1D,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA,EAAE,QAAQ,CAAC,GAAG,MAAM,qBAAqB,SAAS,CAAC,GAAG,iBAAiB,cAAc,MAAM,WAAW;AAAA,EACtG;AAAA,IACE,QAAQ,CAAC,EAAE,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU,CAAC;AAAA,IACrE,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC,EAAE,cAAc,WAAW,MAAM,kBAAkB,MAAM,UAAU,CAAC;AAAA,IAC7E,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC,EAAE,cAAc,WAAW,MAAM,gBAAgB,MAAM,UAAU,CAAC;AAAA,IAC3E,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC,EAAE,cAAc,WAAW,MAAM,mBAAmB,MAAM,UAAU,CAAC;AAAA,IAC9E,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC,EAAE,cAAc,WAAW,MAAM,0BAA0B,MAAM,UAAU,CAAC;AAAA,IACrF,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN,EAAE,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU;AAAA,MAC1D,EAAE,cAAc,QAAQ,MAAM,SAAS,MAAM,OAAO;AAAA,IACtD;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC,EAAE,cAAc,WAAW,MAAM,oBAAoB,MAAM,UAAU,CAAC;AAAA,IAC/E,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC,EAAE,cAAc,WAAW,MAAM,aAAa,MAAM,UAAU,CAAC;AAAA,IACxE,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC,EAAE,cAAc,WAAW,MAAM,mBAAmB,MAAM,UAAU,CAAC;AAAA,IAC9E,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC,EAAE,cAAc,WAAW,MAAM,2BAA2B,MAAM,UAAU,CAAC;AAAA,IACtF,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC,EAAE,cAAc,WAAW,MAAM,aAAa,MAAM,UAAU,CAAC;AAAA,IACxE,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC,EAAE,cAAc,WAAW,MAAM,uBAAuB,MAAM,UAAU,CAAC;AAAA,IAClF,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC,EAAE,cAAc,WAAW,MAAM,gBAAgB,MAAM,UAAU,CAAC;AAAA,IAC3E,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC,EAAE,cAAc,WAAW,MAAM,wBAAwB,MAAM,UAAU,CAAC;AAAA,IACnF,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC,EAAE,cAAc,WAAW,MAAM,sBAAsB,MAAM,UAAU,CAAC;AAAA,IACjF,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,mBAAmB,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IACxE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC,EAAE,cAAc,WAAW,MAAM,YAAY,MAAM,UAAU,CAAC;AAAA,IACvE,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC,EAAE,cAAc,WAAW,MAAM,SAAS,MAAM,UAAU,CAAC;AAAA,IACpE,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA,EAAE,QAAQ,CAAC,GAAG,MAAM,WAAW,SAAS,CAAC,GAAG,iBAAiB,cAAc,MAAM,WAAW;AAAA,EAC5F;AAAA,IACE,QAAQ,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAC/D,MAAM;AAAA,IACN,SAAS;AAAA,MACP,EAAE,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,MAC3D,EAAE,cAAc,WAAW,MAAM,qBAAqB,MAAM,UAAU;AAAA,MACtE,EAAE,cAAc,WAAW,MAAM,wBAAwB,MAAM,UAAU;AAAA,MACzE,EAAE,cAAc,WAAW,MAAM,sBAAsB,MAAM,UAAU;AAAA,MACvE,EAAE,cAAc,WAAW,MAAM,iBAAiB,MAAM,UAAU;AAAA,MAClE,EAAE,cAAc,WAAW,MAAM,eAAe,MAAM,UAAU;AAAA,MAChE,EAAE,cAAc,WAAW,MAAM,oBAAoB,MAAM,UAAU;AAAA,MACrE,EAAE,cAAc,QAAQ,MAAM,UAAU,MAAM,OAAO;AAAA,MACrD,EAAE,cAAc,WAAW,MAAM,gBAAgB,MAAM,UAAU;AAAA,IACnE;AAAA,IACA,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC,EAAE,cAAc,WAAW,MAAM,WAAW,MAAM,UAAU,CAAC;AAAA,IACtE,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA,EAAE,QAAQ,CAAC,GAAG,MAAM,eAAe,SAAS,CAAC,GAAG,iBAAiB,cAAc,MAAM,WAAW;AAAA,EAChG;AAAA,IACE,QAAQ,CAAC,EAAE,cAAc,WAAW,MAAM,WAAW,MAAM,UAAU,CAAC;AAAA,IACtE,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AACF;;;ACjeO,SAAS,gCAAgC,SAAkB;AAChE,SAAO,mBAAmB,0BAA0B,OAAO;AAC7D;AAEO,SAAS,oBAAoB,SAAkB;AACpD,SAAO,mBAAmB,YAAY,OAAO;AAC/C;;;AFKA,IAAM,eAAe;AAAA,EACnB;AAAA,IACE,QAAQ,CAAC,EAAE,cAAc,WAAW,MAAM,WAAW,MAAM,UAAU,CAAC;AAAA,IACtE,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AACF;AAEO,IAAM,uBAAuB,OAAO;AAAA,EACzC;AAAA,EACA,mBAAmB,oBAAoB,OAAO;AAAA,EAC9C;AACF,MAAc;AACZ,MAAI;AACF,UAAM,SAAS,SAAS,EAAE,QAAQ,CAAC;AAEnC,UAAM,CAAC,YAAY,QAAQ,mBAAmB,gBAAgB,IAAI,MAAM,OAAO,UAAU;AAAA,MACvF,WAAW;AAAA,QACT;AAAA,UACE,KAAK;AAAA,UACL,SAAS;AAAA,UACT,cAAc;AAAA,QAChB;AAAA,QACA;AAAA,UACE,KAAK;AAAA,UACL,SAAS;AAAA,UACT,cAAc;AAAA,QAChB;AAAA,QACA;AAAA,UACE,KAAK;AAAA,UACL,SAAS;AAAA,UACT,cAAc;AAAA,QAChB;AAAA,QACA;AAAA,UACE,KAAK;AAAA,UACL,SAAS,KAAKA,SAAQ,GAAG,EAAE;AAAA,UAC3B,cAAc;AAAA,UACd,MAAM,CAAC,gBAAgB;AAAA,QACzB;AAAA,MACF;AAAA,MACA,cAAc;AAAA,IAChB,CAAC;AAED,UAAM,yBACJ,OAAO,WAAW,aAAa,OAAO,SAAS,IAAIG,WAAU,OAAO,OAAO,SAAS,CAAC,IAAI;AAC3F,UAAM,+BACJ,kBAAkB,WAAW,aAAa,kBAAkB,SACxD,IAAIA,WAAU,kBAAkB,OAAO,SAAS,CAAC,IACjD;AACN,UAAM,wBACJ,WAAW,WAAW,aAAa,WAAW,SAAS,IAAIA,WAAU,WAAW,OAAO,SAAS,CAAC,IAAI;AAEvG,WAAO;AAAA,MACL,aAAa,uBAAuB,OAAO;AAAA,MAC3C,mBAAmB,6BAA6B,OAAO;AAAA,MACvD,mBAAmB,sBAAsB,OAAO;AAAA,MAChD,kBAAkB,iBAAiB,SAAS,IAAIA,WAAU,iBAAiB,OAAO,SAAS,CAAC,EAAE,OAAO,IAAI;AAAA,IAC3G;AAAA,EACF,SAAS,OAAP;AACA,WAAO;AAAA,MACL,aAAa;AAAA,MACb,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,kBAAkB;AAAA,IACpB;AAAA,EACF;AACF;AAEO,IAAM,mCAAmC,OAAO;AAAA,EACrD;AAAA,EACA,mBAAmB,gCAAgC,OAAO;AAAA,EAC1D;AACF,MAAc;AACZ,MAAI;AACF,UAAM,SAAS,SAAS,EAAE,QAAQ,CAAC;AAEnC,UAAM,CAAC,YAAY,QAAQ,gBAAgB,IAAI,MAAM,OAAO,UAAU;AAAA,MACpE,WAAW;AAAA,QACT;AAAA,UACE,KAAK;AAAA,UACL,SAAS;AAAA,UACT,cAAc;AAAA,QAChB;AAAA,QACA;AAAA,UACE,KAAK;AAAA,UACL,SAAS;AAAA,UACT,cAAc;AAAA,QAChB;AAAA,QACA;AAAA,UACE,KAAK;AAAA,UACL,SAAS,KAAKH,SAAQ,GAAG,EAAE;AAAA,UAC3B,cAAc;AAAA,UACd,MAAM,CAAC,gBAAgB;AAAA,QACzB;AAAA,MACF;AAAA,MACA,cAAc;AAAA,IAChB,CAAC;AAED,UAAM,yBAAyB,OAAO,WAAW,YAAY,IAAIG,WAAU,OAAO,OAAO,SAAS,CAAC,IAAI;AACvG,UAAM,wBACJ,WAAW,WAAW,YAAY,IAAIA,WAAU,WAAW,OAAO,SAAS,CAAC,IAAI;AAClF,WAAO;AAAA,MACL,aAAa,uBAAuB,OAAO;AAAA,MAC3C,mBAAmB,sBAAsB,OAAO;AAAA,MAChD,kBAAkB,IAAIA,YAAW,iBAAiB,UAAU,KAAK,SAAS,CAAC,EAAE,OAAO;AAAA,IACtF;AAAA,EACF,SAAS,OAAP;AACA,WAAO;AAAA,MACL,aAAa;AAAA,MACb,mBAAmB;AAAA,MACnB,kBAAkB;AAAA,IACpB;AAAA,EACF;AACF;AAEO,IAAM,iBAAiB,OAAO;AAAA,EACnC;AAAA,EACA,mBAAmB,oBAAoB,OAAO;AAAA,EAC9C;AACF,MAAc;AACZ,MAAI;AACF,UAAM,SAAS,SAAS,EAAE,QAAQ,CAAC;AAEnC,UAAM,CAAC,gBAAgB,eAAe,mBAAmB,IAAI,MAAM,OAAO,UAAU;AAAA,MAClF,WAAW;AAAA,QACT;AAAA,UACE,KAAK;AAAA,UACL,SAAS;AAAA,UACT,cAAc;AAAA,QAChB;AAAA,QACA;AAAA,UACE,KAAK;AAAA,UACL,SAAS;AAAA,UACT,cAAc;AAAA,QAChB;AAAA,QACA;AAAA,UACE,KAAK;AAAA,UACL,SAAS;AAAA,UACT,cAAc;AAAA,QAChB;AAAA,MACF;AAAA,MACA,cAAc;AAAA,IAChB,CAAC;AAED,WAAO;AAAA,MACL,gBAAgB,OAAO,cAAc;AAAA,MACrC,eAAe,OAAO,aAAa;AAAA,MACnC,qBAAqB,OAAO,mBAAmB;AAAA,IACjD;AAAA,EACF,SAAS,OAAP;AACA,WAAO;AAAA,MACL,gBAAgB;AAAA,MAChB,eAAe;AAAA,MACf,qBAAqB;AAAA,IACvB;AAAA,EACF;AACF;;;AG9KA,OAAOA,gBAAe;;;ACAf,IAAM,6BAA6B;AAAA,EACxC;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS;AAAA,MACP;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS;AAAA,MACP;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS;AAAA,MACP;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS;AAAA,MACP;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS;AAAA,MACP;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS;AAAA,MACP;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS;AAAA,MACP;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS;AAAA,MACP;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS;AAAA,MACP;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS;AAAA,MACP;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS;AAAA,MACP;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS;AAAA,MACP;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS;AAAA,MACP;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS;AAAA,MACP;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS;AAAA,MACP;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS;AAAA,MACP;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS;AAAA,MACP;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS;AAAA,MACP;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS;AAAA,MACP;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,MAAM;AAAA,IACN,SAAS;AAAA,MACP;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,MACA;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,MACA;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,MACA;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS;AAAA,MACP;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS;AAAA,MACP;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS;AAAA,MACP;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AACF;;;ADvdO,IAAM,iBAAiB,OAAO,EAAE,SAAS,SAAS,SAAS,MAAkD;AAClH,MAAI;AACF,UAAM,mBAAmB,oBAAoB,OAAO;AAEpD,UAAM,SAAS,SAAS,EAAE,QAAQ,CAAC;AAEnC,UAAM,CAAC,sBAAsB,uBAAuB,iBAAiB,IAAI,MAAM,OAAO,UAAU;AAAA,MAC9F,WAAW;AAAA,QACT;AAAA,UACE,KAAK;AAAA,UACL,SAAS;AAAA,UACT,cAAc;AAAA,UACd,MAAM,CAAC,OAAO;AAAA,QAChB;AAAA,QACA;AAAA,UACE,KAAK;AAAA,UACL,SAAS;AAAA,UACT,cAAc;AAAA,UACd,MAAM,CAAC,OAAO;AAAA,QAChB;AAAA,QACA;AAAA,UACE,KAAK;AAAA,UACL,SAAS;AAAA,UACT,cAAc;AAAA,UACd,MAAM,CAAC,OAAO;AAAA,QAChB;AAAA,MACF;AAAA,MACA,cAAc;AAAA,IAChB,CAAC;AAED,WAAO;AAAA,MACL,WAAW;AAAA,MACX,YAAY,IAAIA,WAAU,qBAAqB,CAAC,EAAE,SAAS,CAAC,EAAE,OAAO;AAAA,MACrE,mBAAmB,qBAAqB,CAAC,EAAE,SAAS;AAAA,MACpD,oBAAoB,qBAAqB,CAAC,EAAE,SAAS;AAAA,MACrD,sBAAsB,IAAIA,WAAU,qBAAqB,CAAC,EAAE,SAAS,CAAC,EAAE,OAAO;AAAA,MAC/E,kBAAkB,IAAIA,WAAU,qBAAqB,CAAC,EAAE,SAAS,CAAC,EAAE,OAAO;AAAA,MAC3E,QAAQ,qBAAqB,CAAC;AAAA,MAC9B,aAAa,qBAAqB,CAAC,EAAE,SAAS;AAAA,MAC9C,eAAe,qBAAqB,CAAC,EAAE,SAAS;AAAA,MAChD,cAAc,IAAIA,WAAU,qBAAqB,CAAC,EAAE,SAAS,CAAC,EAAE,OAAO;AAAA,MACvE,uBAAuB,IAAIA,WAAU,sBAAsB,SAAS,CAAC,EAAE,OAAO;AAAA,MAC9E,mBAAmB,IAAIA,WAAU,kBAAkB,SAAS,CAAC,EAAE,OAAO;AAAA,IACxE;AAAA,EACF,SAAS,OAAP;AACA,WAAO;AAAA,MACL,WAAW;AAAA,MACX,YAAY;AAAA,MACZ,mBAAmB;AAAA,MACnB,oBAAoB;AAAA,MACpB,sBAAsB;AAAA,MACtB,kBAAkB;AAAA,MAClB,aAAa;AAAA,MACb,eAAe;AAAA,MACf,QAAQ;AAAA,MACR,cAAc;AAAA,MACd,uBAAuB;AAAA,MACvB,mBAAmB;AAAA,IACrB;AAAA,EACF;AACF;AAEO,IAAM,6BAA6B,OAAO;AAAA,EAC/C;AAAA,EACA;AAAA,EACA;AACF,MAA4C;AAC1C,MAAI;AACF,UAAM,uBAAuB,MAAM,MAAM,SAAS,EAAE,QAAQ,CAAC,EAAE,aAAa;AAAA,MAC1E,KAAK;AAAA,MACL,SAAS,gCAAgC,OAAO;AAAA,MAChD,cAAc;AAAA,MACd,MAAM,CAAC,OAAO;AAAA,IAChB,CAAC;AACD,WAAO;AAAA,MACL,WAAW;AAAA,MACX,YAAY,IAAIA,WAAU,qBAAqB,CAAC,EAAE,SAAS,CAAC,EAAE,OAAO;AAAA,MACrE,mBAAmB,qBAAqB,CAAC,EAAE,SAAS;AAAA,MACpD,oBAAoB,qBAAqB,CAAC,EAAE,SAAS;AAAA,MACrD,sBAAsB,IAAIA,WAAU,qBAAqB,CAAC,EAAE,SAAS,CAAC,EAAE,OAAO;AAAA,IACjF;AAAA,EACF,SAAS,OAAP;AACA,WAAO;AAAA,MACL,WAAW;AAAA,MACX,YAAY;AAAA,MACZ,mBAAmB;AAAA,MACnB,oBAAoB;AAAA,MACpB,sBAAsB;AAAA,IACxB;AAAA,EACF;AACF;;;AEzGO,IAAM,iBAAiB;AAAA,EAC5B;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAC/D,MAAM;AAAA,IACN,SAAS;AAAA,MACP,EAAE,cAAc,WAAW,MAAM,UAAU,MAAM,UAAU;AAAA,MAC3D;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,MACA,EAAE,cAAc,WAAW,MAAM,wBAAwB,MAAM,UAAU;AAAA,MACzE;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,cAAc,WAAW,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAChE,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AACF","sourcesContent":["import { AVERAGE_CHAIN_BLOCK_TIMES, ChainId } from '@pancakeswap/chains'\n\nexport * from './pools'\nexport * from './boostedPools'\nexport * from './contracts'\nexport * from './supportedChains'\n\n// BNB Chain Maxwell upgrade reduces block time from 1.5s to 0.75s\nexport const BSC_BLOCK_TIME = AVERAGE_CHAIN_BLOCK_TIMES[ChainId.BSC]\n\nexport const BLOCKS_PER_DAY = (60 / BSC_BLOCK_TIME) * 60 * 24\nexport const BLOCKS_PER_YEAR = BLOCKS_PER_DAY * 365 // 42048000\n\nexport const SECONDS_IN_YEAR = 31536000 // 365 * 24 * 60 * 60\n","import { ChainId } from '@pancakeswap/chains'\n\nexport const SUPPORTED_CHAIN_IDS = [\n ChainId.BSC,\n ChainId.BSC_TESTNET,\n ChainId.ETHEREUM,\n ChainId.ARBITRUM_ONE,\n ChainId.ARBITRUM_GOERLI,\n ChainId.ZKSYNC,\n ChainId.ZKSYNC_TESTNET,\n ChainId.BASE,\n ChainId.LINEA_TESTNET,\n ChainId.BASE_TESTNET,\n ChainId.POLYGON_ZKEVM_TESTNET,\n ChainId.OPBNB,\n ChainId.BASE,\n] as const\n\nexport type SupportedChainId = (typeof SUPPORTED_CHAIN_IDS)[number]\n\nexport const CAKE_VAULT_SUPPORTED_CHAINS = [ChainId.BSC, ChainId.BSC_TESTNET] as const\n\nexport type CakeVaultSupportedChainId = (typeof CAKE_VAULT_SUPPORTED_CHAINS)[number]\n","import { ChainId } from '@pancakeswap/chains'\n\nimport {\n SupportedChainId,\n SUPPORTED_CHAIN_IDS,\n CakeVaultSupportedChainId,\n CAKE_VAULT_SUPPORTED_CHAINS,\n} from '../constants/supportedChains'\n\nexport function isPoolsSupported(chainId: number): chainId is SupportedChainId {\n return SUPPORTED_CHAIN_IDS.includes(chainId)\n}\n\nexport function isCakeVaultSupported(chainId?: ChainId): chainId is CakeVaultSupportedChainId {\n return !!chainId && (CAKE_VAULT_SUPPORTED_CHAINS as readonly ChainId[]).includes(chainId)\n}\n","export const POOLS_API = 'https://configs.pancakeswap.com/api/data/cached/syrup-pools'\n","import { ChainId } from '@pancakeswap/chains'\nimport { SerializedPool } from '../../types'\nimport { isPoolsSupported } from '../../utils/isPoolsSupported'\nimport { POOLS_API } from '../config/endpoint'\n\nconst poolCache: Record<string, SerializedPool[] | undefined> = {}\nconst fetchRequests: Record<string, Promise<SerializedPool[]> | undefined> = {}\n\nexport const getPoolsConfig = async (chainId: ChainId) => {\n if (!isPoolsSupported(chainId)) {\n return undefined\n }\n\n // Check if the pools are already cached\n if (poolCache[chainId]) {\n return poolCache[chainId]\n }\n\n // Check if a fetch request is already in progress for this chainId\n if (fetchRequests[chainId]) {\n return fetchRequests[chainId]\n }\n\n const fetchPoolConfig = async () => {\n try {\n const response = await fetch(`${POOLS_API}?chainId=${chainId}`, {\n signal: AbortSignal.timeout(3000),\n })\n if (response.ok) {\n const pools = await response.json()\n if (!pools) {\n throw new Error(`Unexpected empty pool fetched from remote ${pools}`)\n }\n\n // Cache the result before returning\n poolCache[chainId] = pools\n return pools\n }\n throw new Error(`Fetch failed with status: ${response.status}`)\n } catch (e) {\n if (e instanceof Error) {\n throw new Error(`Fetch failed: ${e.message}`)\n } else {\n throw new Error(`Fetch failed: ${e}`)\n }\n } finally {\n // Clear the ongoing fetch request after completion or failure\n fetchRequests[chainId] = undefined\n }\n }\n\n // Store the ongoing fetch request in the cache\n fetchRequests[chainId] = fetchPoolConfig()\n return fetchRequests[chainId]\n}\n\nexport const getLivePoolsConfig = async (chainId: ChainId) => {\n if (!isPoolsSupported(chainId)) {\n return undefined\n }\n\n try {\n const response = await fetch(`${POOLS_API}?chainId=${chainId}&isFinished=false`)\n const result: SerializedPool[] = await response.json()\n return result\n } catch (error) {\n console.error('Get live pools by chain config error: ', error)\n return []\n }\n}\n\nexport const MAX_LOCK_DURATION = 31536000\nexport const UNLOCK_FREE_DURATION = 604800\nexport const ONE_WEEK_DEFAULT = 604800\nexport const BOOST_WEIGHT = 20000000000000n\nexport const DURATION_FACTOR = 31536000n\n","import { ChainId } from '@pancakeswap/chains'\nimport { BoosterConfig } from '../../utils/boosted/types'\nimport { arbBoostedPools } from './arb'\nimport { opBnbBoostedPools } from './opBNB'\n\nexport type BoostedPoolsConfigByChain<TChainId extends ChainId> = {\n [chainId in TChainId]?: BoosterConfig[]\n}\n\nexport const BOOSTED_POOLS_CONFIG_BY_CHAIN = {\n [ChainId.ARBITRUM_ONE]: arbBoostedPools,\n [ChainId.OPBNB]: opBnbBoostedPools,\n} as BoostedPoolsConfigByChain<ChainId>\n\nexport const getBoostedPoolsConfig = (chainId: ChainId) => {\n return BOOSTED_POOLS_CONFIG_BY_CHAIN[chainId]\n}\n\nexport const getBoostedPoolConfig = (chainId: ChainId, contractAddress: string): BoosterConfig | undefined => {\n const pool = getBoostedPoolsConfig(chainId)\n return pool?.find((i) => i?.contractAddress?.toLowerCase() === contractAddress.toLowerCase())\n}\n","import { BoosterConfig, BoosterType } from '../../utils/boosted/types'\n\nexport const arbBoostedPools: BoosterConfig[] = [\n {\n boosterType: BoosterType.ALP,\n contractAddress: '0x85146C0c5968d9640121eebd13030c99298f87b3',\n tooltipsText:\n 'Fee APY include the transaction fees shared in the ALP pool, funding rates for positions held, and liquidation income, and will be reflected in the growth of the ALP price. Stake APY is the return for staking ALP. Both Annualized using compound interest, for reference purposes only.',\n },\n {\n boosterType: BoosterType.ALP,\n contractAddress: '0xCe10072E051DA9B8e297AC439B3d7c5C45A32c8f',\n tooltipsText:\n 'Fee APY include the transaction fees shared in the ALP pool, funding rates for positions held, and liquidation income, and will be reflected in the growth of the ALP price. Stake APY is the return for staking ALP. Both Annualized using compound interest, for reference purposes only.',\n },\n]\n","import { BoosterConfig, BoosterType } from '../../utils/boosted/types'\n\nexport const opBnbBoostedPools: BoosterConfig[] = [\n {\n boosterType: BoosterType.ALP,\n contractAddress: '0xa1B46Cb13b43fb8Ae5dC7222e3294fcd10024168',\n tooltipsText:\n 'Fee APY include the transaction fees shared in the ALP pool, funding rates for positions held, and liquidation income, and will be reflected in the growth of the ALP price. Stake APY is the return for staking ALP. Both Annualized using compound interest, for reference purposes only.',\n },\n]\n","import { ChainId } from '@pancakeswap/chains'\nimport { Address } from 'viem'\n\nimport { SupportedChainId } from './supportedChains'\n\nexport type ContractAddresses<T extends ChainId = SupportedChainId> = {\n [chainId in T]: Address\n}\n\nexport const ICAKE = {\n [ChainId.BSC]: '0x3C458828D1622F5f4d526eb0d24Da8C4Eb8F07b1',\n [ChainId.BSC_TESTNET]: '0x5FB0b7a782c2f192493d86922dD3873b6392C8e8',\n [ChainId.ETHEREUM]: '0x',\n [ChainId.ARBITRUM_ONE]: '0x',\n [ChainId.ARBITRUM_GOERLI]: '0x',\n [ChainId.ZKSYNC]: '0x',\n [ChainId.ZKSYNC_TESTNET]: '0x',\n [ChainId.BASE_TESTNET]: '0x',\n [ChainId.LINEA_TESTNET]: '0x',\n [ChainId.POLYGON_ZKEVM_TESTNET]: '0x',\n [ChainId.OPBNB]: '0x',\n [ChainId.BASE]: '0x',\n} as const satisfies ContractAddresses<SupportedChainId>\n\nexport const CAKE_VAULT = {\n [ChainId.BSC]: '0x45c54210128a065de780C4B0Df3d16664f7f859e',\n [ChainId.BSC_TESTNET]: '0x1088Fb24053F03802F673b84d16AE1A7023E400b',\n [ChainId.ETHEREUM]: '0x',\n [ChainId.ARBITRUM_ONE]: '0x',\n [ChainId.ARBITRUM_GOERLI]: '0x',\n [ChainId.ZKSYNC]: '0x',\n [ChainId.ZKSYNC_TESTNET]: '0x',\n [ChainId.BASE_TESTNET]: '0x',\n [ChainId.LINEA_TESTNET]: '0x',\n [ChainId.POLYGON_ZKEVM_TESTNET]: '0x',\n [ChainId.OPBNB]: '0x',\n [ChainId.BASE]: '0x',\n} as const satisfies ContractAddresses<SupportedChainId>\n\nexport const CAKE_FLEXIBLE_SIDE_VAULT = {\n [ChainId.BSC]: '0x615e896A8C2CA8470A2e9dc2E9552998f8658Ea0',\n [ChainId.BSC_TESTNET]: '0x1088Fb24053F03802F673b84d16AE1A7023E400b',\n [ChainId.ETHEREUM]: '0x',\n [ChainId.ARBITRUM_ONE]: '0x',\n [ChainId.ARBITRUM_GOERLI]: '0x',\n [ChainId.ZKSYNC]: '0x',\n [ChainId.ZKSYNC_TESTNET]: '0x',\n [ChainId.BASE_TESTNET]: '0x',\n [ChainId.LINEA_TESTNET]: '0x',\n [ChainId.POLYGON_ZKEVM_TESTNET]: '0x',\n [ChainId.OPBNB]: '0x',\n [ChainId.BASE]: '0x',\n} as const satisfies ContractAddresses<SupportedChainId>\n","import { ChainId } from '@pancakeswap/chains'\nimport { PublicClient, Address } from 'viem'\nimport type { SerializedWrappedToken } from '@pancakeswap/token-lists'\nimport BigNumber from 'bignumber.js'\n\nexport type OnChainProvider = ({ chainId }: { chainId?: ChainId }) => PublicClient\n\nexport type SerializedBigNumber = string\n\nexport interface Addresses {\n [chainId: number]: string\n}\n\nexport enum PoolCategory {\n 'COMMUNITY' = 'Community',\n 'CORE' = 'Core',\n 'BINANCE' = 'Binance', // Pools using native BNB behave differently than pools using a token\n 'AUTO' = 'Auto',\n}\n\n// @deprecated\nexport interface LegacyPoolConfigBaseProps {\n sousId: number\n contractAddress: Address\n poolCategory: PoolCategory\n tokenPerBlock: string\n isFinished?: boolean\n enableEmergencyWithdraw?: boolean\n version?: number\n}\n\nexport interface PoolConfigBaseProps {\n sousId: number\n contractAddress: Address\n poolCategory: PoolCategory\n tokenPerSecond: string\n isFinished?: boolean\n enableEmergencyWithdraw?: boolean\n}\n\ninterface GenericToken {\n decimals: number\n symbol: string\n address: string\n}\n\nexport interface LegacySerializedPoolConfig<T> extends LegacyPoolConfigBaseProps {\n earningToken: T & GenericToken\n stakingToken: T & GenericToken\n}\n\nexport interface SerializedPoolConfig<T> extends PoolConfigBaseProps {\n earningToken: T & GenericToken\n stakingToken: T & GenericToken\n}\n\nexport type LegacySerializedPool = LegacySerializedPoolConfig<SerializedWrappedToken>\n\nexport type UpgradedSerializedPool = SerializedPoolConfig<SerializedWrappedToken>\n\nexport type SerializedPool = LegacySerializedPool | UpgradedSerializedPool\n\nexport type UpgradedSerializedPoolWithInfo = UpgradedSerializedPool & SerializedPoolInfo\n\nexport type LegacySerializedPoolWithInfo = LegacySerializedPool & SerializedPoolInfo\n\nexport type SerializedPoolWithInfo = LegacySerializedPoolWithInfo | UpgradedSerializedPoolWithInfo\n\nexport interface SerializedVaultUser {\n isLoading: boolean\n userShares: SerializedBigNumber\n cakeAtLastUserAction: SerializedBigNumber\n lastDepositedTime: string\n lastUserActionTime: string\n}\n\nexport interface SerializedLockedVaultUser extends SerializedVaultUser {\n lockStartTime: string\n lockEndTime: string\n userBoostedShare: SerializedBigNumber\n locked: boolean\n lockedAmount: SerializedBigNumber\n currentPerformanceFee: SerializedBigNumber\n currentOverdueFee: SerializedBigNumber\n}\n\nexport interface LegacyDeserializedPoolConfig<T> extends LegacyPoolConfigBaseProps {\n earningToken: T & GenericToken\n stakingToken: T & GenericToken\n}\n\nexport interface UpgradedDeserializedPoolConfig<T> extends PoolConfigBaseProps {\n earningToken: T & GenericToken\n stakingToken: T & GenericToken\n}\n\nexport type DeserializedPoolConfig<T> = LegacyDeserializedPoolConfig<T> | UpgradedDeserializedPoolConfig<T>\n\ninterface SerializedPoolInfo extends CorePoolProps {\n totalStaked?: string\n stakingLimit?: string\n stakingLimitEndTimestamp?: number\n profileRequirement?: {\n required: boolean\n thresholdPoints: string\n }\n userDataLoaded?: boolean\n userData?: {\n allowance: string\n stakingTokenBalance: string\n stakedBalance: string\n pendingReward: string\n }\n}\n\ninterface PoolInfo extends CorePoolProps {\n totalStaked?: BigNumber\n stakingLimit?: BigNumber\n stakingLimitEndTimestamp?: number\n profileRequirement?: {\n required: boolean\n thresholdPoints: BigNumber\n }\n userDataLoaded?: boolean\n userData?: {\n allowance: BigNumber\n stakingTokenBalance: BigNumber\n stakedBalance: BigNumber\n pendingReward: BigNumber\n }\n}\n\nexport type UpgradedDeserializedPool<T> = UpgradedDeserializedPoolConfig<T> & PoolInfo\n\nexport type LegacyDeserializedPool<T> = LegacyDeserializedPoolConfig<T> & PoolInfo\n\nexport type DeserializedPool<T> = UpgradedDeserializedPool<T> | LegacyDeserializedPool<T>\n\nexport type DeserializedPoolVault<T> = DeserializedPool<T> & DeserializedCakeVault\nexport type DeserializedPoolLockedVault<T> = DeserializedPool<T> & DeserializedLockedCakeVault\n\nexport interface DeserializedLockedVaultUser extends DeserializedVaultUser {\n lastDepositedTime: string\n lastUserActionTime: string\n lockStartTime: string\n lockEndTime: string\n burnStartTime: string\n userBoostedShare: BigNumber\n locked: boolean\n lockedAmount: BigNumber\n currentPerformanceFee: BigNumber\n currentOverdueFee: BigNumber\n}\n\nexport interface DeserializedLockedCakeVault extends Omit<DeserializedCakeVault, 'userData'> {\n totalLockedAmount?: BigNumber\n userData?: DeserializedLockedVaultUser\n}\n\nexport interface SerializedVaultFees {\n performanceFee: number\n withdrawalFee: number\n withdrawalFeePeriod: number\n}\n\nexport interface DeserializedVaultFees extends SerializedVaultFees {\n performanceFeeAsDecimal: number\n}\n\nexport interface DeserializedVaultUser {\n isLoading: boolean\n userShares: BigNumber\n cakeAtLastUserAction: BigNumber\n lastDepositedTime: string\n lastUserActionTime: string\n balance: {\n cakeAsNumberBalance: number\n cakeAsBigNumber: BigNumber\n cakeAsDisplayBalance: string\n }\n}\n\nexport interface DeserializedCakeVault {\n totalShares?: BigNumber\n totalLockedAmount?: BigNumber\n pricePerFullShare: BigNumber\n totalCakeInVault?: BigNumber\n fees?: DeserializedVaultFees\n userData?: DeserializedVaultUser\n}\n\nexport enum VaultKey {\n CakeVaultV1 = 'cakeVaultV1',\n CakeVault = 'cakeVault',\n CakeFlexibleSideVault = 'cakeFlexibleSideVault',\n IfoPool = 'ifoPool',\n}\n\ninterface CorePoolProps {\n startTimestamp?: number\n endTimestamp?: number\n apr?: number\n rawApr?: number\n stakingTokenPrice?: number\n earningTokenPrice?: number\n vaultKey?: VaultKey\n}\n","import BigNumber from 'bignumber.js'\n\nexport const BIG_ZERO = new BigNumber(0)\nexport const BIG_ONE = new BigNumber(1)\nexport const BIG_TWO = new BigNumber(2)\nexport const BIG_NINE = new BigNumber(9)\nexport const BIG_TEN = new BigNumber(10)\nexport const BIG_ONE_HUNDRED = new BigNumber(100)\n\nexport const bigIntToSerializedBigNumber = (bigint: bigint): string => bigIntToBigNumber(bigint).toJSON()\n\nexport const bigIntToBigNumber = (bigint: bigint): BigNumber => new BigNumber(bigint.toString())\n","import { ChainId } from '@pancakeswap/chains'\nimport { BIG_ZERO } from '@pancakeswap/utils/bigNumber'\nimport BigNumber from 'bignumber.js'\nimport chunk from 'lodash/chunk'\nimport fromPairs from 'lodash/fromPairs'\nimport { erc20Abi } from 'viem'\n\nimport { smartChefABI } from '../abis/ISmartChef'\nimport { sousChefABI } from '../abis/ISousChef'\nimport { sousChefV2ABI } from '../abis/ISousChefV2'\nimport { sousChefV3ABI } from '../abis/ISousChefV3'\nimport { BSC_BLOCK_TIME, getPoolsConfig } from '../constants'\nimport { LegacySerializedPool, OnChainProvider, UpgradedSerializedPool } from '../types'\nimport { isLegacyPool, isUpgradedPool } from '../utils'\n\nconst getLivePoolsWithEnd = async (chainId: ChainId) => {\n const poolsConfig = await getPoolsConfig(chainId)\n if (!poolsConfig) {\n return null\n }\n return poolsConfig.filter((p) => p.sousId !== 0 && !p.isFinished)\n}\n\nasync function fetchUpgradedPoolsTimeLimits(\n pools: UpgradedSerializedPool[],\n chainId: ChainId,\n provider: OnChainProvider,\n) {\n if (!pools.length) {\n return []\n }\n\n const calls = pools.flatMap(({ contractAddress }) => {\n return [\n {\n abi: smartChefABI,\n address: contractAddress,\n functionName: 'startTimestamp',\n },\n {\n abi: smartChefABI,\n address: contractAddress,\n functionName: 'endTimestamp',\n },\n ] as const\n })\n\n const client = provider({ chainId })\n const startEndRaw = await client.multicall({\n contracts: calls,\n allowFailure: false,\n })\n\n const startEndResult = startEndRaw.reduce<bigint[][]>((resultArray, item, index) => {\n const chunkIndex = Math.floor(index / 2)\n\n if (!resultArray[chunkIndex]) {\n // eslint-disable-next-line no-param-reassign\n resultArray[chunkIndex] = [] // start a new chunk\n }\n\n resultArray[chunkIndex].push(item)\n\n return resultArray\n }, [])\n\n return pools.map((cakePoolConfig, index) => {\n const [startTimestamp, endTimestamp] = startEndResult[index]\n return {\n sousId: cakePoolConfig.sousId,\n startTimestamp: Number(startTimestamp),\n endTimestamp: Number(endTimestamp),\n }\n })\n}\n\nconst fetchLegacyPoolsBlockLimits = async (\n pools: LegacySerializedPool[],\n chainId: ChainId,\n provider: OnChainProvider,\n) => {\n if (!pools.length) {\n return []\n }\n const startEndBlockCalls = pools.flatMap(({ contractAddress }) => {\n return [\n {\n abi: sousChefABI,\n address: contractAddress,\n functionName: 'startBlock',\n },\n {\n abi: sousChefABI,\n address: contractAddress,\n functionName: 'bonusEndBlock',\n },\n ] as const\n })\n\n const client = provider({ chainId })\n\n const [block, startEndBlockRaw] = await Promise.all([\n client.getBlock({ blockTag: 'latest' }),\n client.multicall({\n contracts: startEndBlockCalls,\n allowFailure: false,\n }),\n ])\n\n const startEndBlockResult = startEndBlockRaw.reduce<bigint[][]>((resultArray, item, index) => {\n const chunkIndex = Math.floor(index / 2)\n\n if (!resultArray[chunkIndex]) {\n // eslint-disable-next-line no-param-reassign\n resultArray[chunkIndex] = [] // start a new chunk\n }\n\n resultArray[chunkIndex].push(item)\n\n return resultArray\n }, [])\n\n const getTimestampFromBlock = (targetBlock: number) => {\n return Number(block.timestamp) + (targetBlock - Number(block.number)) * BSC_BLOCK_TIME\n }\n return pools.map((cakePoolConfig, index) => {\n const [startBlock, endBlock] = startEndBlockResult[index]\n return {\n sousId: cakePoolConfig.sousId,\n startTimestamp: getTimestampFromBlock(Number(startBlock)),\n endTimestamp: getTimestampFromBlock(Number(endBlock)),\n }\n })\n}\n\nexport const fetchPoolsTimeLimits = async (chainId: ChainId, provider: OnChainProvider) => {\n const livedPools = await getLivePoolsWithEnd(chainId)\n if (!livedPools) {\n return null\n }\n const upgradedPools = livedPools.filter(isUpgradedPool)\n const legacyPools = livedPools.filter(isLegacyPool)\n const [upgradePoolLimits, legacyPoolLimits] = await Promise.all([\n fetchUpgradedPoolsTimeLimits(upgradedPools, chainId, provider),\n fetchLegacyPoolsBlockLimits(legacyPools, chainId, provider),\n ])\n return [...upgradePoolLimits, ...legacyPoolLimits]\n}\n\nexport const fetchPoolsTotalStaking = async (chainId: ChainId, provider: OnChainProvider) => {\n const poolsConfig = await getPoolsConfig(chainId)\n if (!poolsConfig) {\n return null\n }\n const poolsBalanceOf = poolsConfig.map(({ contractAddress, stakingToken }) => {\n return {\n abi: erc20Abi,\n address: stakingToken.address,\n functionName: 'balanceOf',\n args: [contractAddress],\n } as const\n })\n\n const client = provider({ chainId })\n const poolsTotalStaked = await client.multicall({\n contracts: poolsBalanceOf,\n allowFailure: false,\n })\n\n return poolsConfig.map((p, index) => ({\n sousId: p.sousId,\n totalStaked: new BigNumber(poolsTotalStaked[index].toString()).toJSON(),\n }))\n}\n\ninterface FetchingPoolsStakingLimitsParams {\n poolsWithStakingLimit: number[]\n chainId: ChainId\n provider: OnChainProvider\n}\n\nexport const fetchPoolsStakingLimitsByBlock = async ({\n poolsWithStakingLimit,\n chainId,\n provider,\n}: FetchingPoolsStakingLimitsParams): Promise<{\n [key: string]: { stakingLimit: BigNumber; numberSecondsForUserLimit: number }\n}> => {\n const poolsConfig = await getPoolsConfig(chainId)\n if (!poolsConfig) {\n throw new Error(`No pools found on chain ${chainId}`)\n }\n\n const validPools = poolsConfig\n .filter(isLegacyPool)\n .filter((p) => p.stakingToken.symbol !== 'BNB' && !p.isFinished)\n .filter((p) => !poolsWithStakingLimit.includes(p.sousId))\n\n // Get the staking limit for each valid pool\n const poolStakingCalls = validPools\n .map(({ contractAddress }) => {\n return (['hasUserLimit', 'poolLimitPerUser', 'numberBlocksForUserLimit'] as const).map(\n (method) =>\n ({\n address: contractAddress,\n functionName: method,\n abi: sousChefV2ABI,\n } as const),\n )\n })\n .flat()\n\n const client = provider({ chainId })\n\n const poolStakingResultRaw = await client.multicall({\n contracts: poolStakingCalls,\n allowFailure: true,\n })\n\n const chunkSize = poolStakingCalls.length / validPools.length\n const poolStakingChunkedResultRaw = chunk(poolStakingResultRaw.flat(), chunkSize)\n return fromPairs(\n poolStakingChunkedResultRaw.map((stakingLimitRaw, index) => {\n const hasUserLimit = stakingLimitRaw[0]?.result as boolean\n const stakingLimit =\n hasUserLimit && stakingLimitRaw[1].result ? new BigNumber(stakingLimitRaw[1].result.toString()) : BIG_ZERO\n const numberBlocksForUserLimit = stakingLimitRaw[2].result ? Number(stakingLimitRaw[2].result) : 0\n const numberSecondsForUserLimit = numberBlocksForUserLimit * BSC_BLOCK_TIME\n return [validPools[index].sousId, { stakingLimit, numberSecondsForUserLimit }]\n }),\n )\n}\n\nconst fetchPoolsStakingLimitsByTime = async ({\n poolsWithStakingLimit,\n chainId,\n provider,\n}: FetchingPoolsStakingLimitsParams): Promise<{\n [key: string]: { stakingLimit: BigNumber; numberSecondsForUserLimit: number }\n}> => {\n const poolsConfig = await getPoolsConfig(chainId)\n if (!poolsConfig) {\n throw new Error(`No pools found on chain ${chainId}`)\n }\n\n const validPools = poolsConfig\n .filter(isUpgradedPool)\n .filter((p) => p.stakingToken.symbol !== 'BNB' && !p.isFinished)\n .filter((p) => !poolsWithStakingLimit.includes(p.sousId))\n\n // Get the staking limit for each valid pool\n const poolStakingCalls = validPools\n .map(({ contractAddress }) => {\n return (['hasUserLimit', 'poolLimitPerUser', 'numberSecondsForUserLimit'] as const).map(\n (method) =>\n ({\n abi: smartChefABI,\n address: contractAddress,\n functionName: method,\n } as const),\n )\n })\n .flat()\n\n const client = provider({ chainId })\n const poolStakingResultRaw = await client.multicall({\n contracts: poolStakingCalls,\n allowFailure: true,\n })\n const chunkSize = poolStakingCalls.length / validPools.length\n const poolStakingChunkedResultRaw = chunk(poolStakingResultRaw.flat(), chunkSize)\n return fromPairs(\n poolStakingChunkedResultRaw.map((stakingLimitRaw, index) => {\n const hasUserLimit = stakingLimitRaw[0].result\n const stakingLimit =\n hasUserLimit && stakingLimitRaw[1].result ? new BigNumber(stakingLimitRaw[1].result.toString()) : BIG_ZERO\n const numberSecondsForUserLimit = stakingLimitRaw[2].result ? Number(stakingLimitRaw[2].result) : 0\n return [validPools[index].sousId, { stakingLimit, numberSecondsForUserLimit }]\n }),\n )\n}\n\nexport const fetchPoolsStakingLimits = async (\n params: FetchingPoolsStakingLimitsParams,\n): Promise<{\n [key: string]: { stakingLimit: BigNumber; numberSecondsForUserLimit: number }\n}> => {\n const [limitsByTime, limitsByBlock] = await Promise.all([\n fetchPoolsStakingLimitsByTime(params),\n fetchPoolsStakingLimitsByBlock(params),\n ])\n return {\n ...limitsByTime,\n ...limitsByBlock,\n }\n}\n\nexport const fetchPoolsProfileRequirement = async (\n chainId: ChainId,\n provider: OnChainProvider,\n): Promise<{\n [key: string]: {\n required: boolean\n thresholdPoints: string\n }\n}> => {\n const poolsConfig = await getPoolsConfig(chainId)\n if (!poolsConfig) {\n throw new Error(`No pools found on chain ${chainId}`)\n }\n\n const livePoolsWithV3 = poolsConfig.filter(\n (pool) => (isUpgradedPool(pool) || (isLegacyPool(pool) && pool?.version === 3)) && !pool?.isFinished,\n )\n const poolProfileRequireCalls = livePoolsWithV3\n .map(({ contractAddress }) => {\n return (['pancakeProfileIsRequested', 'pancakeProfileThresholdPoints'] as const).map(\n (method) =>\n ({\n abi: sousChefV3ABI,\n address: contractAddress,\n functionName: method,\n } as const),\n )\n })\n .flat()\n\n const client = provider({ chainId })\n const poolProfileRequireResultRaw = await client.multicall({\n contracts: poolProfileRequireCalls,\n })\n\n const chunkSize = poolProfileRequireCalls.length / livePoolsWithV3.length\n const poolStakingChunkedResultRaw = chunk(poolProfileRequireResultRaw.flat(), chunkSize)\n return fromPairs(\n poolStakingChunkedResultRaw.map((poolProfileRequireRaw, index) => {\n const hasProfileRequired = poolProfileRequireRaw[0].result\n const profileThresholdPoints = poolProfileRequireRaw[1].result\n ? new BigNumber(poolProfileRequireRaw[1].result.toString())\n : BIG_ZERO\n return [\n livePoolsWithV3[index].sousId,\n {\n required: !!hasProfileRequired,\n thresholdPoints: profileThresholdPoints.toJSON(),\n },\n ]\n }),\n )\n}\n","export const smartChefABI = [\n {\n inputs: [\n { internalType: 'address', name: '_pancakeProfile', type: 'address' },\n { internalType: 'bool', name: '_pancakeProfileIsRequested', type: 'bool' },\n { internalType: 'uint256', name: '_pancakeProfileThresholdPoints', type: 'uint256' },\n ],\n stateMutability: 'nonpayable',\n type: 'constructor',\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: 'address', name: 'user', type: 'address' },\n { indexed: false, internalType: 'uint256', name: 'amount', type: 'uint256' },\n ],\n name: 'Deposit',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: 'address', name: 'user', type: 'address' },\n { indexed: false, internalType: 'uint256', name: 'amount', type: 'uint256' },\n ],\n name: 'EmergencyWithdraw',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [{ indexed: false, internalType: 'uint256', name: 'poolLimitPerUser', type: 'uint256' }],\n name: 'NewPoolLimit',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [{ indexed: false, internalType: 'uint256', name: 'rewardPerSecond', type: 'uint256' }],\n name: 'NewRewardPerSecond',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n { indexed: false, internalType: 'uint256', name: 'startTimestamp', type: 'uint256' },\n { indexed: false, internalType: 'uint256', name: 'endTimestamp', type: 'uint256' },\n ],\n name: 'NewStartAndEndTimestamp',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: 'address', name: 'previousOwner', type: 'address' },\n { indexed: true, internalType: 'address', name: 'newOwner', type: 'address' },\n ],\n name: 'OwnershipTransferred',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [{ indexed: false, internalType: 'uint256', name: 'blockNumber', type: 'uint256' }],\n name: 'RewardsStop',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: 'address', name: 'token', type: 'address' },\n { indexed: false, internalType: 'uint256', name: 'amount', type: 'uint256' },\n ],\n name: 'TokenRecovery',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n { indexed: false, internalType: 'bool', name: 'isProfileRequested', type: 'bool' },\n { indexed: false, internalType: 'uint256', name: 'thresholdPoints', type: 'uint256' },\n ],\n name: 'UpdateProfileAndThresholdPointsRequirement',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: 'address', name: 'user', type: 'address' },\n { indexed: false, internalType: 'uint256', name: 'amount', type: 'uint256' },\n ],\n name: 'Withdraw',\n type: 'event',\n },\n {\n inputs: [],\n name: 'PRECISION_FACTOR',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'SMART_CHEF_FACTORY',\n outputs: [{ internalType: 'address', name: '', type: 'address' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'accTokenPerShare',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'uint256', name: '_amount', type: 'uint256' }],\n name: 'deposit',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'uint256', name: '_amount', type: 'uint256' }],\n name: 'emergencyRewardWithdraw',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n { inputs: [], name: 'emergencyWithdraw', outputs: [], stateMutability: 'nonpayable', type: 'function' },\n {\n inputs: [],\n name: 'endTimestamp',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'hasUserLimit',\n outputs: [{ internalType: 'bool', name: '', type: 'bool' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'contract IERC20Metadata', name: '_stakedToken', type: 'address' },\n { internalType: 'contract IERC20Metadata', name: '_rewardToken', type: 'address' },\n { internalType: 'uint256', name: '_rewardPerSecond', type: 'uint256' },\n { internalType: 'uint256', name: '_startTimestamp', type: 'uint256' },\n { internalType: 'uint256', name: '_endTimestamp', type: 'uint256' },\n { internalType: 'uint256', name: '_poolLimitPerUser', type: 'uint256' },\n { internalType: 'uint256', name: '_numberSecondsForUserLimit', type: 'uint256' },\n { internalType: 'address', name: '_admin', type: 'address' },\n ],\n name: 'initialize',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'isInitialized',\n outputs: [{ internalType: 'bool', name: '', type: 'bool' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'lastRewardTimestamp',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'numberSecondsForUserLimit',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'owner',\n outputs: [{ internalType: 'address', name: '', type: 'address' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'pancakeProfile',\n outputs: [{ internalType: 'address', name: '', type: 'address' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'pancakeProfileIsRequested',\n outputs: [{ internalType: 'bool', name: '', type: 'bool' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'pancakeProfileThresholdPoints',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'address', name: '_user', type: 'address' }],\n name: 'pendingReward',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'poolLimitPerUser',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'address', name: '_token', type: 'address' }],\n name: 'recoverToken',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n { inputs: [], name: 'renounceOwnership', outputs: [], stateMutability: 'nonpayable', type: 'function' },\n {\n inputs: [],\n name: 'rewardPerSecond',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'rewardToken',\n outputs: [{ internalType: 'contract IERC20Metadata', name: '', type: 'address' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'stakedToken',\n outputs: [{ internalType: 'contract IERC20Metadata', name: '', type: 'address' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'startTimestamp',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n { inputs: [], name: 'stopReward', outputs: [], stateMutability: 'nonpayable', type: 'function' },\n {\n inputs: [{ internalType: 'address', name: 'newOwner', type: 'address' }],\n name: 'transferOwnership',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'bool', name: '_userLimit', type: 'bool' },\n { internalType: 'uint256', name: '_poolLimitPerUser', type: 'uint256' },\n ],\n name: 'updatePoolLimitPerUser',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'bool', name: '_isRequested', type: 'bool' },\n { internalType: 'uint256', name: '_thresholdPoints', type: 'uint256' },\n ],\n name: 'updateProfileAndThresholdPointsRequirement',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'uint256', name: '_rewardPerSecond', type: 'uint256' }],\n name: 'updateRewardPerSecond',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'uint256', name: '_startTimestamp', type: 'uint256' },\n { internalType: 'uint256', name: '_endTimestamp', type: 'uint256' },\n ],\n name: 'updateStartAndEndTimestamp',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'address', name: '', type: 'address' }],\n name: 'userInfo',\n outputs: [\n { internalType: 'uint256', name: 'amount', type: 'uint256' },\n { internalType: 'uint256', name: 'rewardDebt', type: 'uint256' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'userLimit',\n outputs: [{ internalType: 'bool', name: '', type: 'bool' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'uint256', name: '_amount', type: 'uint256' }],\n name: 'withdraw',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n] as const\n","export const sousChefABI = [\n {\n inputs: [],\n name: 'bonusEndBlock',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'uint256', name: '_amount', type: 'uint256' }],\n name: 'deposit',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'uint256', name: '_amount', type: 'uint256' }],\n name: 'emergencyRewardWithdraw',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n { inputs: [], name: 'emergencyWithdraw', outputs: [], stateMutability: 'nonpayable', type: 'function' },\n {\n inputs: [\n { internalType: 'uint256', name: '_from', type: 'uint256' },\n { internalType: 'uint256', name: '_to', type: 'uint256' },\n ],\n name: 'getMultiplier',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n { inputs: [], name: 'massUpdatePools', outputs: [], stateMutability: 'nonpayable', type: 'function' },\n {\n inputs: [],\n name: 'owner',\n outputs: [{ internalType: 'address', name: '', type: 'address' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'address', name: '_user', type: 'address' }],\n name: 'pendingReward',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n name: 'poolInfo',\n outputs: [\n { internalType: 'contract IBEP20', name: 'lpToken', type: 'address' },\n { internalType: 'uint256', name: 'allocPoint', type: 'uint256' },\n { internalType: 'uint256', name: 'lastRewardBlock', type: 'uint256' },\n { internalType: 'uint256', name: 'accCakePerShare', type: 'uint256' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n { inputs: [], name: 'renounceOwnership', outputs: [], stateMutability: 'nonpayable', type: 'function' },\n {\n inputs: [],\n name: 'rewardPerBlock',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'rewardToken',\n outputs: [{ internalType: 'contract IBEP20', name: '', type: 'address' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'startBlock',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n { inputs: [], name: 'stopReward', outputs: [], stateMutability: 'nonpayable', type: 'function' },\n {\n inputs: [],\n name: 'syrup',\n outputs: [{ internalType: 'contract IBEP20', name: '', type: 'address' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'address', name: 'newOwner', type: 'address' }],\n name: 'transferOwnership',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'uint256', name: '_pid', type: 'uint256' }],\n name: 'updatePool',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'address', name: '', type: 'address' }],\n name: 'userInfo',\n outputs: [\n { internalType: 'uint256', name: 'amount', type: 'uint256' },\n { internalType: 'uint256', name: 'rewardDebt', type: 'uint256' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'uint256', name: '_amount', type: 'uint256' }],\n name: 'withdraw',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n] as const\n","export const sousChefV2ABI = [\n {\n inputs: [],\n name: 'PRECISION_FACTOR',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'accTokenPerShare',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'bonusEndBlock',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint256',\n name: '_amount',\n type: 'uint256',\n },\n ],\n name: 'deposit',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint256',\n name: '_amount',\n type: 'uint256',\n },\n ],\n name: 'emergencyRewardWithdraw',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'emergencyWithdraw',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'hasUserLimit',\n outputs: [\n {\n internalType: 'bool',\n name: '',\n type: 'bool',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'lastRewardBlock',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'numberBlocksForUserLimit',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'owner',\n outputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: '_user',\n type: 'address',\n },\n ],\n name: 'pendingReward',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'poolLimitPerUser',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: '_tokenAddress',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: '_tokenAmount',\n type: 'uint256',\n },\n ],\n name: 'recoverWrongTokens',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'renounceOwnership',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'rewardPerBlock',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'rewardToken',\n outputs: [\n {\n internalType: 'contract IBEP20',\n name: '',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'stakedToken',\n outputs: [\n {\n internalType: 'contract IBEP20',\n name: '',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'startBlock',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'stopReward',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'newOwner',\n type: 'address',\n },\n ],\n name: 'transferOwnership',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'bool',\n name: '_hasUserLimit',\n type: 'bool',\n },\n {\n internalType: 'uint256',\n name: '_poolLimitPerUser',\n type: 'uint256',\n },\n ],\n name: 'updatePoolLimitPerUser',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint256',\n name: '_rewardPerBlock',\n type: 'uint256',\n },\n ],\n name: 'updateRewardPerBlock',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint256',\n name: '_startBlock',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: '_bonusEndBlock',\n type: 'uint256',\n },\n ],\n name: 'updateStartAndEndBlocks',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n name: 'userInfo',\n outputs: [\n {\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'rewardDebt',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint256',\n name: '_amount',\n type: 'uint256',\n },\n ],\n name: 'withdraw',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n] as const\n","export const sousChefV3ABI = [\n {\n inputs: [\n { internalType: 'address', name: '_pancakeProfile', type: 'address' },\n { internalType: 'bool', name: '_pancakeProfileIsRequested', type: 'bool' },\n { internalType: 'uint256', name: '_pancakeProfileThresholdPoints', type: 'uint256' },\n ],\n stateMutability: 'nonpayable',\n type: 'constructor',\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: 'address', name: 'user', type: 'address' },\n { indexed: false, internalType: 'uint256', name: 'amount', type: 'uint256' },\n ],\n name: 'Deposit',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: 'address', name: 'user', type: 'address' },\n { indexed: false, internalType: 'uint256', name: 'amount', type: 'uint256' },\n ],\n name: 'EmergencyWithdraw',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [{ indexed: false, internalType: 'uint256', name: 'poolLimitPerUser', type: 'uint256' }],\n name: 'NewPoolLimit',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [{ indexed: false, internalType: 'uint256', name: 'rewardPerBlock', type: 'uint256' }],\n name: 'NewRewardPerBlock',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n { indexed: false, internalType: 'uint256', name: 'startBlock', type: 'uint256' },\n { indexed: false, internalType: 'uint256', name: 'endBlock', type: 'uint256' },\n ],\n name: 'NewStartAndEndBlocks',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: 'address', name: 'previousOwner', type: 'address' },\n { indexed: true, internalType: 'address', name: 'newOwner', type: 'address' },\n ],\n name: 'OwnershipTransferred',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [{ indexed: false, internalType: 'uint256', name: 'blockNumber', type: 'uint256' }],\n name: 'RewardsStop',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: 'address', name: 'token', type: 'address' },\n { indexed: false, internalType: 'uint256', name: 'amount', type: 'uint256' },\n ],\n name: 'TokenRecovery',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n { indexed: false, internalType: 'bool', name: 'isProfileRequested', type: 'bool' },\n { indexed: false, internalType: 'uint256', name: 'thresholdPoints', type: 'uint256' },\n ],\n name: 'UpdateProfileAndThresholdPointsRequirement',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: 'address', name: 'user', type: 'address' },\n { indexed: false, internalType: 'uint256', name: 'amount', type: 'uint256' },\n ],\n name: 'Withdraw',\n type: 'event',\n },\n {\n inputs: [],\n name: 'PRECISION_FACTOR',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'SMART_CHEF_FACTORY',\n outputs: [{ internalType: 'address', name: '', type: 'address' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'accTokenPerShare',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'bonusEndBlock',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'uint256', name: '_amount', type: 'uint256' }],\n name: 'deposit',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'uint256', name: '_amount', type: 'uint256' }],\n name: 'emergencyRewardWithdraw',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n { inputs: [], name: 'emergencyWithdraw', outputs: [], stateMutability: 'nonpayable', type: 'function' },\n {\n inputs: [],\n name: 'hasUserLimit',\n outputs: [{ internalType: 'bool', name: '', type: 'bool' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'contract IERC20Metadata', name: '_stakedToken', type: 'address' },\n { internalType: 'contract IERC20Metadata', name: '_rewardToken', type: 'address' },\n { internalType: 'uint256', name: '_rewardPerBlock', type: 'uint256' },\n { internalType: 'uint256', name: '_startBlock', type: 'uint256' },\n { internalType: 'uint256', name: '_bonusEndBlock', type: 'uint256' },\n { internalType: 'uint256', name: '_poolLimitPerUser', type: 'uint256' },\n { internalType: 'uint256', name: '_numberBlocksForUserLimit', type: 'uint256' },\n { internalType: 'address', name: '_admin', type: 'address' },\n ],\n name: 'initialize',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'isInitialized',\n outputs: [{ internalType: 'bool', name: '', type: 'bool' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'lastRewardBlock',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'numberBlocksForUserLimit',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'owner',\n outputs: [{ internalType: 'address', name: '', type: 'address' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'pancakeProfile',\n outputs: [{ internalType: 'contract IPancakeProfile', name: '', type: 'address' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'pancakeProfileIsRequested',\n outputs: [{ internalType: 'bool', name: '', type: 'bool' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'pancakeProfileThresholdPoints',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'address', name: '_user', type: 'address' }],\n name: 'pendingReward',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'poolLimitPerUser',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'address', name: '_token', type: 'address' }],\n name: 'recoverToken',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n { inputs: [], name: 'renounceOwnership', outputs: [], stateMutability: 'nonpayable', type: 'function' },\n {\n inputs: [],\n name: 'rewardPerBlock',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'rewardToken',\n outputs: [{ internalType: 'contract IERC20Metadata', name: '', type: 'address' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'stakedToken',\n outputs: [{ internalType: 'contract IERC20Metadata', name: '', type: 'address' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'startBlock',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n { inputs: [], name: 'stopReward', outputs: [], stateMutability: 'nonpayable', type: 'function' },\n {\n inputs: [{ internalType: 'address', name: 'newOwner', type: 'address' }],\n name: 'transferOwnership',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'bool', name: '_userLimit', type: 'bool' },\n { internalType: 'uint256', name: '_poolLimitPerUser', type: 'uint256' },\n ],\n name: 'updatePoolLimitPerUser',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'bool', name: '_isRequested', type: 'bool' },\n { internalType: 'uint256', name: '_thresholdPoints', type: 'uint256' },\n ],\n name: 'updateProfileAndThresholdPointsRequirement',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'uint256', name: '_rewardPerBlock', type: 'uint256' }],\n name: 'updateRewardPerBlock',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'uint256', name: '_startBlock', type: 'uint256' },\n { internalType: 'uint256', name: '_bonusEndBlock', type: 'uint256' },\n ],\n name: 'updateStartAndEndBlocks',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'address', name: '', type: 'address' }],\n name: 'userInfo',\n outputs: [\n { internalType: 'uint256', name: 'amount', type: 'uint256' },\n { internalType: 'uint256', name: 'rewardDebt', type: 'uint256' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'userLimit',\n outputs: [{ internalType: 'bool', name: '', type: 'bool' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'uint256', name: '_amount', type: 'uint256' }],\n name: 'withdraw',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n] as const\n","import { ChainId } from '@pancakeswap/chains'\n\nimport { ContractAddresses } from '../constants/contracts'\nimport { isPoolsSupported } from './isPoolsSupported'\n\nexport function getContractAddress(addresses: ContractAddresses, chainId: ChainId) {\n if (!isPoolsSupported(chainId)) {\n throw new Error(`Cannot get contract address. Unsupported chain ${chainId}`)\n }\n return addresses[chainId]\n}\n","import { LegacySerializedPool, SerializedPool, UpgradedSerializedPool } from '../types'\n\nexport function isLegacyPool(pool: SerializedPool): pool is LegacySerializedPool {\n if ((pool as any).tokenPerBlock) {\n return true\n }\n return false\n}\n\nexport function isUpgradedPool(pool: SerializedPool): pool is UpgradedSerializedPool {\n if ((pool as any).tokenPerSecond) {\n return true\n }\n return false\n}\n","import BigNumber from 'bignumber.js'\n\nimport { BLOCKS_PER_YEAR, SECONDS_IN_YEAR } from '../constants'\n\n/**\n * Get the APR value in %\n * @param stakingTokenPrice Token price in the same quote currency\n * @param rewardTokenPrice Token price in the same quote currency\n * @param totalStaked Total amount of stakingToken in the pool\n * @param tokenPerBlock Amount of new cake allocated to the pool for each new block\n * @returns Null if the APR is NaN or infinite.\n */\nexport const getPoolAprByTokenPerBlock = (\n stakingTokenPrice: number,\n rewardTokenPrice: number,\n totalStaked: number,\n tokenPerBlock: number,\n): number | null => {\n const totalRewardPricePerYear = new BigNumber(rewardTokenPrice).times(tokenPerBlock).times(BLOCKS_PER_YEAR)\n const totalStakingTokenInPool = new BigNumber(stakingTokenPrice).times(totalStaked)\n const apr = totalRewardPricePerYear.div(totalStakingTokenInPool).times(100)\n return apr.isNaN() || !apr.isFinite() ? null : apr.toNumber()\n}\n\nexport const getPoolAprByTokenPerSecond = (\n stakingTokenPrice: number,\n rewardTokenPrice: number,\n totalStaked: number,\n tokenPerSecond: number,\n): number | null => {\n const totalRewardPricePerYear = new BigNumber(rewardTokenPrice).times(tokenPerSecond).times(SECONDS_IN_YEAR)\n const totalStakingTokenInPool = new BigNumber(stakingTokenPrice).times(totalStaked)\n const apr = totalRewardPricePerYear.div(totalStakingTokenInPool).times(100)\n return apr.isNaN() || !apr.isFinite() ? null : apr.toNumber()\n}\n","import { ChainId } from '@pancakeswap/chains'\nimport { Account, Address, Chain, GetContractReturnType, PublicClient, WalletClient, getContract } from 'viem'\n\nimport { smartChefABI } from '../abis/ISmartChef'\nimport { sousChefBnbABI } from '../abis/ISousChefBNB'\nimport { sousChefV2ABI } from '../abis/ISousChefV2'\nimport { getPoolsConfig } from '../constants'\nimport { PoolCategory } from '../types'\nimport { isLegacyPool } from './isLegacyPool'\n\ninterface Params {\n chainId?: ChainId\n sousId: number\n signer?: any\n publicClient?: any\n}\n\ntype GetContractReturnType_<TAbi extends readonly unknown[]> = GetContractReturnType<TAbi, any, any> & {\n abi: TAbi\n address: Address\n account?: Account\n chain?: Chain\n}\n\nexport function getSousChefBNBContract({\n address,\n signer,\n publicClient,\n}: {\n address: Address\n signer?: WalletClient\n publicClient?: PublicClient\n}): GetContractReturnType_<typeof sousChefBnbABI> {\n return {\n ...getContract({\n abi: sousChefBnbABI,\n address,\n client: {\n public: publicClient as PublicClient,\n wallet: signer,\n },\n }),\n abi: sousChefBnbABI,\n address,\n account: signer?.account,\n chain: signer?.chain,\n }\n}\n\nexport function getSousChefV2Contract({\n address,\n signer,\n publicClient,\n}: {\n address: Address\n signer?: WalletClient\n publicClient?: PublicClient\n}): GetContractReturnType_<typeof sousChefV2ABI> {\n return {\n ...getContract({\n abi: sousChefV2ABI,\n address,\n client: {\n public: publicClient as PublicClient,\n wallet: signer,\n },\n }),\n abi: sousChefV2ABI,\n address,\n account: signer?.account,\n chain: signer?.chain,\n }\n}\n\nexport function getSmartChefChefV2Contract({\n address,\n signer,\n publicClient,\n}: {\n address: Address\n signer?: WalletClient\n publicClient?: PublicClient\n}): GetContractReturnType_<typeof smartChefABI> {\n return {\n ...getContract({\n abi: smartChefABI,\n address,\n client: {\n public: publicClient as PublicClient,\n wallet: signer,\n },\n }),\n abi: smartChefABI,\n address,\n account: signer?.account,\n chain: signer?.chain,\n }\n}\n\nexport async function getPoolContractBySousId({ chainId, sousId, signer, publicClient }: Params): Promise<any | null> {\n if (!chainId) {\n return null\n }\n const pools = await getPoolsConfig(chainId)\n const pool = pools?.find((p) => p.sousId === Number(sousId))\n if (!pool) {\n return null\n }\n const { contractAddress } = pool\n if (isLegacyPool(pool)) {\n if (pool.poolCategory === PoolCategory.BINANCE) {\n return getSousChefBNBContract({ address: contractAddress, signer, publicClient })\n }\n return getSousChefV2Contract({ address: contractAddress, signer, publicClient })\n }\n return getSmartChefChefV2Contract({ address: contractAddress, signer, publicClient })\n}\n","export const sousChefBnbABI = [\n {\n inputs: [],\n name: 'WBNB',\n outputs: [{ internalType: 'address', name: '', type: 'address' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'adminAddress',\n outputs: [{ internalType: 'address', name: '', type: 'address' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'bonusEndBlock',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n { inputs: [], name: 'deposit', outputs: [], stateMutability: 'payable', type: 'function' },\n {\n inputs: [{ internalType: 'uint256', name: '_amount', type: 'uint256' }],\n name: 'emergencyRewardWithdraw',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n { inputs: [], name: 'emergencyWithdraw', outputs: [], stateMutability: 'nonpayable', type: 'function' },\n {\n inputs: [\n { internalType: 'uint256', name: '_from', type: 'uint256' },\n { internalType: 'uint256', name: '_to', type: 'uint256' },\n ],\n name: 'getMultiplier',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'limitAmount',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n { inputs: [], name: 'massUpdatePools', outputs: [], stateMutability: 'nonpayable', type: 'function' },\n {\n inputs: [],\n name: 'owner',\n outputs: [{ internalType: 'address', name: '', type: 'address' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'address', name: '_user', type: 'address' }],\n name: 'pendingReward',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n name: 'poolInfo',\n outputs: [\n { internalType: 'contract IBEP20', name: 'lpToken', type: 'address' },\n { internalType: 'uint256', name: 'allocPoint', type: 'uint256' },\n { internalType: 'uint256', name: 'lastRewardBlock', type: 'uint256' },\n { internalType: 'uint256', name: 'accCakePerShare', type: 'uint256' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'address', name: '_blacklistAddress', type: 'address' }],\n name: 'removeBlackList',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n { inputs: [], name: 'renounceOwnership', outputs: [], stateMutability: 'nonpayable', type: 'function' },\n {\n inputs: [],\n name: 'rewardPerBlock',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'rewardToken',\n outputs: [{ internalType: 'contract IBEP20', name: '', type: 'address' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'address', name: '_adminAddress', type: 'address' }],\n name: 'setAdmin',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'address', name: '_blacklistAddress', type: 'address' }],\n name: 'setBlackList',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'uint256', name: '_amount', type: 'uint256' }],\n name: 'setLimitAmount',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'startBlock',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'totalAllocPoint',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'address', name: 'newOwner', type: 'address' }],\n name: 'transferOwnership',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'uint256', name: '_pid', type: 'uint256' }],\n name: 'updatePool',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'address', name: '', type: 'address' }],\n name: 'userInfo',\n outputs: [\n { internalType: 'uint256', name: 'amount', type: 'uint256' },\n { internalType: 'uint256', name: 'rewardDebt', type: 'uint256' },\n { internalType: 'bool', name: 'inBlackList', type: 'bool' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'uint256', name: '_amount', type: 'uint256' }],\n name: 'withdraw',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n { stateMutability: 'payable', type: 'receive' },\n] as const\n","import { ChainId } from '@pancakeswap/chains'\nimport { getBoostedPoolsConfig } from '../../constants/boostedPools'\n\nexport const checkIsBoostedPool = (contract: string, chainId: ChainId): boolean => {\n const list = getBoostedPoolsConfig(chainId)\n const isBoosted = list?.find((i) => i?.contractAddress?.toLowerCase() === contract.toLowerCase())\n\n return isBoosted !== undefined\n}\n","import { ChainId } from '@pancakeswap/chains'\nimport BigNumber from 'bignumber.js'\nimport { Address, PublicClient } from 'viem'\n\nconst WEEK = 7\nconst YEAR = 365\nconst API_URL = 'https://perp.pancakeswap.finance/bapi/futures/v1/public/future/apx/fee/info?chain='\n\nconst CONTRACT_ADDRESS: Record<number, Address> = {\n [ChainId.OPBNB]: '0x5A5454A6030FB50ceb3eb78977D140198A27be5e',\n [ChainId.ARBITRUM_ONE]: '0xB3879E95a4B8e3eE570c232B19d520821F540E48',\n}\n\nconst CHAIN_NAME_MAP: Record<number, string> = {\n [ChainId.OPBNB]: 'OPBNB',\n [ChainId.ARBITRUM_ONE]: 'ARB',\n}\n\nexport const fetchAlpBoostedPoolApr = async (client: PublicClient, chainId: ChainId) => {\n try {\n const [totalValue] = await client.multicall({\n contracts: [\n {\n abi: [\n {\n inputs: [],\n name: 'totalValue',\n outputs: [\n {\n components: [\n { internalType: 'address', name: 'tokenAddress', type: 'address' },\n { internalType: 'int256', name: 'value', type: 'int256' },\n { internalType: 'uint8', name: 'decimals', type: 'uint8' },\n { internalType: 'int256', name: 'valueUsd', type: 'int256' },\n { internalType: 'uint16', name: 'targetWeight', type: 'uint16' },\n { internalType: 'uint16', name: 'feeBasisPoints', type: 'uint16' },\n { internalType: 'uint16', name: 'taxBasisPoints', type: 'uint16' },\n { internalType: 'bool', name: 'dynamicFee', type: 'bool' },\n ],\n internalType: 'struct IVault.LpItem[]',\n name: 'lpItems',\n type: 'tuple[]',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n ] as const,\n address: CONTRACT_ADDRESS?.[chainId],\n functionName: 'totalValue',\n },\n ],\n allowFailure: false,\n })\n\n const totalValueUsd = totalValue\n .map((i) => new BigNumber(i.valueUsd.toString()).div(1e18).toNumber())\n .reduce((a, b) => a + b, 0)\n\n const response = await fetch(`${API_URL}${CHAIN_NAME_MAP[chainId]}`)\n const result = await response.json()\n\n const { alpFundingFee, alpTradingFee, alpLipFee } = result.data\n const apr = new BigNumber(alpFundingFee).plus(alpTradingFee).plus(alpLipFee)\n const totalApr = apr.div(totalValueUsd.toString()).div(WEEK)\n\n const apy = totalApr.plus(1).exponentiatedBy(YEAR).minus(1).times(100)\n return apy.toNumber()\n } catch (error) {\n console.info('Fetch ALP boosted fee error: ', error)\n return 0\n }\n}\n","import { Address, PublicClient } from 'viem'\nimport { getBoostedPoolConfig } from '../../../constants/boostedPools'\nimport { BoosterType } from '../types'\nimport { fetchAlpBoostedPoolApr } from './fetchAlpBoostedPoolApr'\n\ninterface GetBoostedPoolApr {\n client: PublicClient\n contractAddress: Address\n chainId: number | undefined\n}\n\nexport const getBoostedPoolApr = async ({ client, contractAddress, chainId }: GetBoostedPoolApr): Promise<number> => {\n const pool = chainId && getBoostedPoolConfig(chainId, contractAddress)\n\n if (!contractAddress || !chainId || !pool) {\n return 0\n }\n\n // ALP pools\n if (pool?.boosterType === BoosterType.ALP) {\n const result = await fetchAlpBoostedPoolApr(client, chainId)\n return result\n }\n\n return 0\n}\n","import { ChainId } from '@pancakeswap/chains'\nimport BigNumber from 'bignumber.js'\nimport fromPairs from 'lodash/fromPairs'\nimport uniq from 'lodash/uniq'\nimport { Address, erc20Abi } from 'viem'\nimport { sousChefABI } from '../abis/ISousChef'\nimport { getPoolsConfig } from '../constants'\nimport { OnChainProvider, SerializedPool } from '../types'\n\n// Pool 0, Cake / Cake is a different kind of contract (master chef)\n// BNB pools use the native BNB token (wrapping ? unwrapping is done at the contract level)\nconst getPoolsFactory = (filter: (pool: SerializedPool) => boolean) => async (chainId: ChainId) => {\n const poolsConfig = await getPoolsConfig(chainId)\n if (!poolsConfig) {\n throw new Error(`Unable to get pools config on chain ${chainId}`)\n }\n return poolsConfig.filter(filter)\n}\nconst getNonBnbPools = getPoolsFactory((pool) => pool.stakingToken.symbol !== 'BNB')\nconst getBnbPools = getPoolsFactory((pool) => pool.stakingToken.symbol === 'BNB')\nconst getNonMasterPools = getPoolsFactory((pool) => pool.sousId !== 0)\n\ninterface FetchUserDataParams {\n account: string\n chainId: ChainId\n provider: OnChainProvider\n}\n\nexport const fetchPoolsAllowance = async ({ account, chainId, provider }: FetchUserDataParams) => {\n const nonBnbPools = await getNonBnbPools(chainId)\n\n const client = provider({ chainId })\n const allowances = await client.multicall({\n contracts: nonBnbPools.map(\n ({ contractAddress, stakingToken }) =>\n ({\n address: stakingToken.address,\n abi: erc20Abi,\n functionName: 'allowance',\n args: [account as Address, contractAddress] as const,\n } as const),\n ),\n allowFailure: false,\n })\n return fromPairs(\n nonBnbPools.map((pool, index) => [pool.sousId, new BigNumber(allowances[index].toString()).toJSON()]),\n )\n}\n\nexport const fetchUserBalances = async ({ account, chainId, provider }: FetchUserDataParams) => {\n const nonBnbPools = await getNonBnbPools(chainId)\n const bnbPools = await getBnbPools(chainId)\n // Non BNB pools\n const tokens = uniq(nonBnbPools.map((pool) => pool.stakingToken.address))\n const client = provider({ chainId })\n\n const tokenBalance = await client.multicall({\n contracts: [\n {\n abi: [\n {\n inputs: [{ internalType: 'address', name: 'addr', type: 'address' }],\n name: 'getEthBalance',\n outputs: [{ internalType: 'uint256', name: 'balance', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n ] as const,\n address: '0xcA11bde05977b3631167028862bE2a173976CA11', // TODO: Here is multicall address, should extract addresses to a package for multi chain\n functionName: 'getEthBalance',\n args: [account as Address] as const,\n } as any,\n ...tokens.map(\n (token) =>\n ({\n abi: erc20Abi,\n address: token,\n functionName: 'balanceOf',\n args: [account] as const,\n } as const),\n ),\n ],\n })\n const [bnbBalance, ...tokenBalancesResults] = tokenBalance\n\n const tokenBalances = fromPairs(tokens.map((token, index) => [token, tokenBalancesResults[index].result as bigint]))\n\n const poolTokenBalances = fromPairs(\n nonBnbPools\n .map<[number, string] | null>((pool) => {\n if (!tokenBalances[pool.stakingToken.address]) return null\n return [pool.sousId, new BigNumber(tokenBalances[pool.stakingToken.address].toString()).toJSON()]\n })\n .filter((p): p is [number, string] => Boolean(p)),\n )\n\n // BNB pools\n const bnbBalanceJson = new BigNumber((bnbBalance.result as bigint)?.toString()).toJSON()\n const bnbBalances = fromPairs(bnbPools.map((pool) => [pool.sousId, bnbBalanceJson]))\n\n return { ...poolTokenBalances, ...bnbBalances }\n}\n\nexport const fetchUserStakeBalances = async ({ account, chainId, provider }: FetchUserDataParams) => {\n const nonMasterPools = await getNonMasterPools(chainId)\n\n const client = provider({ chainId })\n const userInfo = await client.multicall({\n contracts: nonMasterPools.map(\n ({ contractAddress }) =>\n ({\n abi: sousChefABI.filter((r) => r.name === 'userInfo'),\n address: contractAddress,\n functionName: 'userInfo',\n args: [account as Address] as const,\n } as const),\n ),\n allowFailure: false,\n })\n\n return fromPairs(\n nonMasterPools.map((pool, index) => [pool.sousId, new BigNumber(userInfo[index][0].toString()).toJSON()]),\n )\n}\n\nexport const fetchUserPendingRewards = async ({ account, chainId, provider }: FetchUserDataParams) => {\n const nonMasterPools = await getNonMasterPools(chainId)\n\n const client = provider({ chainId })\n const res = await client.multicall({\n contracts: nonMasterPools.map(\n ({ contractAddress }) =>\n ({\n abi: sousChefABI.filter((r) => r.name === 'pendingReward'),\n address: contractAddress,\n functionName: 'pendingReward',\n args: [account as Address] as const,\n } as const),\n ),\n allowFailure: false,\n })\n return fromPairs(nonMasterPools.map((pool, index) => [pool.sousId, new BigNumber(res[index].toString()).toJSON()]))\n}\n","import BigNumber from 'bignumber.js'\nimport { BIG_ZERO } from '@pancakeswap/utils/bigNumber'\nimport { ChainId } from '@pancakeswap/chains'\nimport { CAKE } from '@pancakeswap/tokens'\nimport { Address } from 'viem'\n\nimport { cakeVaultV2ABI } from '../abis/ICakeVaultV2'\nimport { OnChainProvider } from '../types'\nimport { getCakeFlexibleSideVaultAddress, getCakeVaultAddress } from './getAddresses'\n\ninterface Params {\n cakeVaultAddress?: Address\n chainId: ChainId\n provider: OnChainProvider\n}\n\nconst balanceOfAbi = [\n {\n inputs: [{ internalType: 'address', name: 'account', type: 'address' }],\n name: 'balanceOf',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n] as const\n\nexport const fetchPublicVaultData = async ({\n chainId,\n cakeVaultAddress = getCakeVaultAddress(chainId),\n provider,\n}: Params) => {\n try {\n const client = provider({ chainId })\n\n const [sharePrice, shares, totalLockedAmount, totalCakeInVault] = await client.multicall({\n contracts: [\n {\n abi: cakeVaultV2ABI,\n address: cakeVaultAddress,\n functionName: 'getPricePerFullShare',\n },\n {\n abi: cakeVaultV2ABI,\n address: cakeVaultAddress,\n functionName: 'totalShares',\n },\n {\n abi: cakeVaultV2ABI,\n address: cakeVaultAddress,\n functionName: 'totalLockedAmount',\n },\n {\n abi: balanceOfAbi,\n address: CAKE[ChainId.BSC].address,\n functionName: 'balanceOf',\n args: [cakeVaultAddress],\n },\n ],\n allowFailure: true,\n })\n\n const totalSharesAsBigNumber =\n shares.status === 'success' && shares.result ? new BigNumber(shares.result.toString()) : BIG_ZERO\n const totalLockedAmountAsBigNumber =\n totalLockedAmount.status === 'success' && totalLockedAmount.result\n ? new BigNumber(totalLockedAmount.result.toString())\n : BIG_ZERO\n const sharePriceAsBigNumber =\n sharePrice.status === 'success' && sharePrice.result ? new BigNumber(sharePrice.result.toString()) : BIG_ZERO\n\n return {\n totalShares: totalSharesAsBigNumber.toJSON(),\n totalLockedAmount: totalLockedAmountAsBigNumber.toJSON(),\n pricePerFullShare: sharePriceAsBigNumber.toJSON(),\n totalCakeInVault: totalCakeInVault.result ? new BigNumber(totalCakeInVault.result.toString()).toJSON() : '0',\n }\n } catch (error) {\n return {\n totalShares: null,\n totalLockedAmount: null,\n pricePerFullShare: null,\n totalCakeInVault: null,\n }\n }\n}\n\nexport const fetchPublicFlexibleSideVaultData = async ({\n chainId,\n cakeVaultAddress = getCakeFlexibleSideVaultAddress(chainId),\n provider,\n}: Params) => {\n try {\n const client = provider({ chainId })\n\n const [sharePrice, shares, totalCakeInVault] = await client.multicall({\n contracts: [\n {\n abi: cakeVaultV2ABI,\n address: cakeVaultAddress,\n functionName: 'getPricePerFullShare',\n },\n {\n abi: cakeVaultV2ABI,\n address: cakeVaultAddress,\n functionName: 'totalShares',\n },\n {\n abi: balanceOfAbi,\n address: CAKE[ChainId.BSC].address,\n functionName: 'balanceOf',\n args: [cakeVaultAddress],\n },\n ],\n allowFailure: true,\n })\n\n const totalSharesAsBigNumber = shares.status === 'success' ? new BigNumber(shares.result.toString()) : BIG_ZERO\n const sharePriceAsBigNumber =\n sharePrice.status === 'success' ? new BigNumber(sharePrice.result.toString()) : BIG_ZERO\n return {\n totalShares: totalSharesAsBigNumber.toJSON(),\n pricePerFullShare: sharePriceAsBigNumber.toJSON(),\n totalCakeInVault: new BigNumber((totalCakeInVault.result || '0').toString()).toJSON(),\n }\n } catch (error) {\n return {\n totalShares: null,\n pricePerFullShare: null,\n totalCakeInVault: null,\n }\n }\n}\n\nexport const fetchVaultFees = async ({\n chainId,\n cakeVaultAddress = getCakeVaultAddress(chainId),\n provider,\n}: Params) => {\n try {\n const client = provider({ chainId })\n\n const [performanceFee, withdrawalFee, withdrawalFeePeriod] = await client.multicall({\n contracts: [\n {\n abi: cakeVaultV2ABI,\n address: cakeVaultAddress,\n functionName: 'performanceFee',\n },\n {\n abi: cakeVaultV2ABI,\n address: cakeVaultAddress,\n functionName: 'withdrawFee',\n },\n {\n abi: cakeVaultV2ABI,\n address: cakeVaultAddress,\n functionName: 'withdrawFeePeriod',\n },\n ],\n allowFailure: false,\n })\n\n return {\n performanceFee: Number(performanceFee),\n withdrawalFee: Number(withdrawalFee),\n withdrawalFeePeriod: Number(withdrawalFeePeriod),\n }\n } catch (error) {\n return {\n performanceFee: null,\n withdrawalFee: null,\n withdrawalFeePeriod: null,\n }\n }\n}\n","export const cakeVaultV2ABI = [\n {\n inputs: [],\n name: 'BOOST_WEIGHT',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'BOOST_WEIGHT_LIMIT',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'DURATION_FACTOR',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'DURATION_FACTOR_OVERDUE',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'MAX_CALL_FEE',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'MAX_LOCK_DURATION',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'MAX_LOCK_DURATION_LIMIT',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'MAX_PERFORMANCE_FEE',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'MAX_WITHDRAW_FEE',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'MAX_WITHDRAW_FEE_PERIOD',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'MIN_DEPOSIT_AMOUNT',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'MIN_LOCK_DURATION',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'MIN_WITHDRAW_AMOUNT',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'PRECISION_FACTOR',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'PRECISION_FACTOR_SHARE',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'UNLOCK_FREE_DURATION',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'admin',\n outputs: [{ internalType: 'address', name: '', type: 'address' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'available',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'balanceOf',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'boostContract',\n outputs: [{ internalType: 'address', name: '', type: 'address' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'cakePoolPID',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'address', name: '_user', type: 'address' }],\n name: 'calculateOverdueFee',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'address', name: '_user', type: 'address' }],\n name: 'calculatePerformanceFee',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'calculateTotalPendingCakeRewards',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'address', name: '_user', type: 'address' },\n { internalType: 'uint256', name: '_shares', type: 'uint256' },\n ],\n name: 'calculateWithdrawFee',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'uint256', name: '_amount', type: 'uint256' },\n { internalType: 'uint256', name: '_lockDuration', type: 'uint256' },\n ],\n name: 'deposit',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'address', name: '', type: 'address' }],\n name: 'freeFeeUsers',\n outputs: [{ internalType: 'bool', name: '', type: 'bool' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'getPricePerFullShare',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'address', name: '_token', type: 'address' }],\n name: 'inCaseTokensGetStuck',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'contract IERC20', name: 'dummyToken', type: 'address' }],\n name: 'init',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'lastHarvestedTime',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'masterchefV2',\n outputs: [{ internalType: 'contract IMasterChefV2', name: '', type: 'address' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'operator',\n outputs: [{ internalType: 'address', name: '', type: 'address' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'overdueFee',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'owner',\n outputs: [{ internalType: 'address', name: '', type: 'address' }],\n stateMutability: 'view',\n type: 'function',\n },\n { inputs: [], name: 'pause', outputs: [], stateMutability: 'nonpayable', type: 'function' },\n {\n inputs: [],\n name: 'paused',\n outputs: [{ internalType: 'bool', name: '', type: 'bool' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'performanceFee',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'performanceFeeContract',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n { inputs: [], name: 'renounceOwnership', outputs: [], stateMutability: 'nonpayable', type: 'function' },\n {\n inputs: [{ internalType: 'address', name: '_admin', type: 'address' }],\n name: 'setAdmin',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'address', name: '_boostContract', type: 'address' }],\n name: 'setBoostContract',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'uint256', name: '_boostWeight', type: 'uint256' }],\n name: 'setBoostWeight',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'uint256', name: '_durationFactor', type: 'uint256' }],\n name: 'setDurationFactor',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'uint256', name: '_durationFactorOverdue', type: 'uint256' }],\n name: 'setDurationFactorOverdue',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'address', name: '_user', type: 'address' },\n { internalType: 'bool', name: '_free', type: 'bool' },\n ],\n name: 'setFreeFeeUser',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'uint256', name: '_maxLockDuration', type: 'uint256' }],\n name: 'setMaxLockDuration',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'address', name: '_operator', type: 'address' }],\n name: 'setOperator',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'uint256', name: '_performanceFee', type: 'uint256' }],\n name: 'setPerformanceFee',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'uint256', name: '_performanceFeeContract', type: 'uint256' }],\n name: 'setPerformanceFeeContract',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'address', name: '_treasury', type: 'address' }],\n name: 'setTreasury',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'uint256', name: '_unlockFreeDuration', type: 'uint256' }],\n name: 'setUnlockFreeDuration',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'uint256', name: '_withdrawFee', type: 'uint256' }],\n name: 'setWithdrawFee',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'uint256', name: '_withdrawFeeContract', type: 'uint256' }],\n name: 'setWithdrawFeeContract',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'uint256', name: '_withdrawFeePeriod', type: 'uint256' }],\n name: 'setWithdrawFeePeriod',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'token',\n outputs: [{ internalType: 'contract IERC20', name: '', type: 'address' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'totalBoostDebt',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'totalLockedAmount',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'totalShares',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'address', name: 'newOwner', type: 'address' }],\n name: 'transferOwnership',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'treasury',\n outputs: [{ internalType: 'address', name: '', type: 'address' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'address', name: '_user', type: 'address' }],\n name: 'unlock',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n { inputs: [], name: 'unpause', outputs: [], stateMutability: 'nonpayable', type: 'function' },\n {\n inputs: [{ internalType: 'address', name: '', type: 'address' }],\n name: 'userInfo',\n outputs: [\n { internalType: 'uint256', name: 'shares', type: 'uint256' },\n { internalType: 'uint256', name: 'lastDepositedTime', type: 'uint256' },\n { internalType: 'uint256', name: 'cakeAtLastUserAction', type: 'uint256' },\n { internalType: 'uint256', name: 'lastUserActionTime', type: 'uint256' },\n { internalType: 'uint256', name: 'lockStartTime', type: 'uint256' },\n { internalType: 'uint256', name: 'lockEndTime', type: 'uint256' },\n { internalType: 'uint256', name: 'userBoostedShare', type: 'uint256' },\n { internalType: 'bool', name: 'locked', type: 'bool' },\n { internalType: 'uint256', name: 'lockedAmount', type: 'uint256' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'uint256', name: '_shares', type: 'uint256' }],\n name: 'withdraw',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n { inputs: [], name: 'withdrawAll', outputs: [], stateMutability: 'nonpayable', type: 'function' },\n {\n inputs: [{ internalType: 'uint256', name: '_amount', type: 'uint256' }],\n name: 'withdrawByAmount',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'withdrawFee',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'withdrawFeeContract',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'withdrawFeePeriod',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n] as const\n","import { ChainId } from '@pancakeswap/chains'\n\nimport { CAKE_FLEXIBLE_SIDE_VAULT, CAKE_VAULT } from '../constants/contracts'\nimport { getContractAddress } from '../utils'\n\nexport function getCakeFlexibleSideVaultAddress(chainId: ChainId) {\n return getContractAddress(CAKE_FLEXIBLE_SIDE_VAULT, chainId)\n}\n\nexport function getCakeVaultAddress(chainId: ChainId) {\n return getContractAddress(CAKE_VAULT, chainId)\n}\n","import BigNumber from 'bignumber.js'\nimport { ChainId } from '@pancakeswap/chains'\nimport { Address } from 'viem'\n\nimport { OnChainProvider, SerializedLockedVaultUser, SerializedVaultUser } from '../types'\nimport { cakeVaultV2ABI } from '../abis/ICakeVaultV2'\nimport { getCakeFlexibleSideVaultAddress, getCakeVaultAddress } from './getAddresses'\nimport { cakeFlexibleSideVaultV2ABI } from '../abis/ICakeFlexibleSideVaultV2'\n\ninterface Params {\n account: Address\n chainId: ChainId\n provider: OnChainProvider\n}\n\nexport const fetchVaultUser = async ({ account, chainId, provider }: Params): Promise<SerializedLockedVaultUser> => {\n try {\n const cakeVaultAddress = getCakeVaultAddress(chainId)\n\n const client = provider({ chainId })\n\n const [userContractResponse, currentPerformanceFee, currentOverdueFee] = await client.multicall({\n contracts: [\n {\n abi: cakeVaultV2ABI,\n address: cakeVaultAddress,\n functionName: 'userInfo',\n args: [account],\n },\n {\n abi: cakeVaultV2ABI,\n address: cakeVaultAddress,\n functionName: 'calculatePerformanceFee',\n args: [account],\n },\n {\n abi: cakeVaultV2ABI,\n address: cakeVaultAddress,\n functionName: 'calculateOverdueFee',\n args: [account],\n },\n ],\n allowFailure: false,\n })\n\n return {\n isLoading: false,\n userShares: new BigNumber(userContractResponse[0].toString()).toJSON(),\n lastDepositedTime: userContractResponse[1].toString(),\n lastUserActionTime: userContractResponse[3].toString(),\n cakeAtLastUserAction: new BigNumber(userContractResponse[2].toString()).toJSON(),\n userBoostedShare: new BigNumber(userContractResponse[6].toString()).toJSON(),\n locked: userContractResponse[7],\n lockEndTime: userContractResponse[5].toString(),\n lockStartTime: userContractResponse[4].toString(),\n lockedAmount: new BigNumber(userContractResponse[8].toString()).toJSON(),\n currentPerformanceFee: new BigNumber(currentPerformanceFee.toString()).toJSON(),\n currentOverdueFee: new BigNumber(currentOverdueFee.toString()).toJSON(),\n }\n } catch (error) {\n return {\n isLoading: true,\n userShares: '',\n lastDepositedTime: '',\n lastUserActionTime: '',\n cakeAtLastUserAction: '',\n userBoostedShare: '',\n lockEndTime: '',\n lockStartTime: '',\n locked: false,\n lockedAmount: '',\n currentPerformanceFee: '',\n currentOverdueFee: '',\n }\n }\n}\n\nexport const fetchFlexibleSideVaultUser = async ({\n account,\n chainId,\n provider,\n}: Params): Promise<SerializedVaultUser> => {\n try {\n const userContractResponse = await await provider({ chainId }).readContract({\n abi: cakeFlexibleSideVaultV2ABI,\n address: getCakeFlexibleSideVaultAddress(chainId),\n functionName: 'userInfo',\n args: [account],\n })\n return {\n isLoading: false,\n userShares: new BigNumber(userContractResponse[0].toString()).toJSON(),\n lastDepositedTime: userContractResponse[1].toString(),\n lastUserActionTime: userContractResponse[3].toString(),\n cakeAtLastUserAction: new BigNumber(userContractResponse[2].toString()).toJSON(),\n }\n } catch (error) {\n return {\n isLoading: true,\n userShares: '',\n lastDepositedTime: '',\n lastUserActionTime: '',\n cakeAtLastUserAction: '',\n }\n }\n}\n","export const cakeFlexibleSideVaultV2ABI = [\n {\n inputs: [],\n name: 'MAX_PERFORMANCE_FEE',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'MAX_WITHDRAW_AMOUNT_BOOSTER',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'MAX_WITHDRAW_FEE',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'MAX_WITHDRAW_FEE_PERIOD',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'MIN_DEPOSIT_AMOUNT',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'MIN_WITHDRAW_AMOUNT',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'MIN_WITHDRAW_AMOUNT_BOOSTER',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'admin',\n outputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'available',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'balanceOf',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'cakePool',\n outputs: [\n {\n internalType: 'contract ICakePool',\n name: '',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint256',\n name: '_amount',\n type: 'uint256',\n },\n ],\n name: 'deposit',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'emergencyWithdraw',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'getPricePerFullShare',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: '_token',\n type: 'address',\n },\n ],\n name: 'inCaseTokensGetStuck',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'owner',\n outputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'pause',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'paused',\n outputs: [\n {\n internalType: 'bool',\n name: '',\n type: 'bool',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'performanceFee',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'renounceOwnership',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: '_admin',\n type: 'address',\n },\n ],\n name: 'setAdmin',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint256',\n name: '_performanceFee',\n type: 'uint256',\n },\n ],\n name: 'setPerformanceFee',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: '_treasury',\n type: 'address',\n },\n ],\n name: 'setTreasury',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint256',\n name: '_withdrawAmountBooster',\n type: 'uint256',\n },\n ],\n name: 'setWithdrawAmountBooster',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint256',\n name: '_withdrawFee',\n type: 'uint256',\n },\n ],\n name: 'setWithdrawFee',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint256',\n name: '_withdrawFeePeriod',\n type: 'uint256',\n },\n ],\n name: 'setWithdrawFeePeriod',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'staking',\n outputs: [\n {\n internalType: 'bool',\n name: '',\n type: 'bool',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'token',\n outputs: [\n {\n internalType: 'contract IERC20',\n name: '',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'totalShares',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'newOwner',\n type: 'address',\n },\n ],\n name: 'transferOwnership',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'treasury',\n outputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'unpause',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n name: 'userInfo',\n outputs: [\n {\n internalType: 'uint256',\n name: 'shares',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'lastDepositedTime',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'cakeAtLastUserAction',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'lastUserActionTime',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint256',\n name: '_shares',\n type: 'uint256',\n },\n ],\n name: 'withdraw',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'withdrawAll',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'withdrawAmountBooster',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'withdrawFee',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'withdrawFeePeriod',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n] as const\n","export const cakeVaultV1ABI = [\n {\n inputs: [],\n name: 'withdrawAll',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'getPricePerFullShare',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'address', name: '', type: 'address' }],\n name: 'userInfo',\n outputs: [\n { internalType: 'uint256', name: 'shares', type: 'uint256' },\n {\n internalType: 'uint256',\n name: 'lastDepositedTime',\n type: 'uint256',\n },\n { internalType: 'uint256', name: 'cakeAtLastUserAction', type: 'uint256' },\n {\n internalType: 'uint256',\n name: 'lastUserActionTime',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'performanceFee',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n] as const\n"]}
1
+ {"version":3,"sources":["../src/constants/index.ts","../src/constants/supportedChains.ts","../src/utils/isPoolsSupported.ts","../src/constants/config/endpoint.ts","../src/constants/pools/index.ts","../src/constants/boostedPools/index.ts","../src/constants/boostedPools/arb.ts","../src/constants/boostedPools/opBNB.ts","../src/constants/contracts.ts","../src/types.ts","../../utils/bigNumber.ts","../src/queries/fetchPools.ts","../src/abis/ISmartChef.ts","../src/abis/ISousChef.ts","../src/abis/ISousChefV2.ts","../src/abis/ISousChefV3.ts","../src/utils/getContractAddress.ts","../src/utils/isLegacyPool.ts","../src/utils/apr.ts","../src/utils/getPoolContractBySousId.ts","../src/abis/ISousChefBNB.ts","../src/utils/boosted/checkIsBoostedPool.ts","../src/utils/boosted/apr/fetchAlpBoostedPoolApr.ts","../src/utils/boosted/apr/getBoostedPoolApr.ts","../src/queries/fetchUserPoolsData.ts","../src/queries/fetchVaultPublic.ts","../src/abis/ICakeVaultV2.ts","../src/queries/getAddresses.ts","../src/queries/fetchVaultUser.ts","../src/abis/ICakeFlexibleSideVaultV2.ts","../src/abis/ICakeVaultV1.ts"],"names":["ChainId","PoolCategory","VaultKey","BigNumber","fromPairs","erc20Abi"],"mappings":"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","sourcesContent":["import { AVERAGE_CHAIN_BLOCK_TIMES, ChainId } from '@pancakeswap/chains'\n\nexport * from './pools'\nexport * from './boostedPools'\nexport * from './contracts'\nexport * from './supportedChains'\n\n// BNB Chain Fermi hard fork reduces block time from 0.75s to 0.45s\nexport const BSC_BLOCK_TIME = AVERAGE_CHAIN_BLOCK_TIMES[ChainId.BSC]\n\n// Round to avoid float precision drift from BSC_BLOCK_TIME (0.45s).\nexport const BLOCKS_PER_DAY = Math.round((60 / BSC_BLOCK_TIME) * 60 * 24)\nexport const BLOCKS_PER_YEAR = BLOCKS_PER_DAY * 365 // 70080000\n\nexport const SECONDS_IN_YEAR = 31536000 // 365 * 24 * 60 * 60\n","import { ChainId } from '@pancakeswap/chains'\n\nexport const SUPPORTED_CHAIN_IDS = [\n ChainId.BSC,\n ChainId.BSC_TESTNET,\n ChainId.ETHEREUM,\n ChainId.ARBITRUM_ONE,\n ChainId.ARBITRUM_GOERLI,\n ChainId.ZKSYNC,\n ChainId.ZKSYNC_TESTNET,\n ChainId.BASE,\n ChainId.LINEA_TESTNET,\n ChainId.BASE_TESTNET,\n ChainId.OPBNB,\n ChainId.BASE,\n] as const\n\nexport type SupportedChainId = (typeof SUPPORTED_CHAIN_IDS)[number]\n\nexport const CAKE_VAULT_SUPPORTED_CHAINS = [ChainId.BSC, ChainId.BSC_TESTNET] as const\n\nexport type CakeVaultSupportedChainId = (typeof CAKE_VAULT_SUPPORTED_CHAINS)[number]\n","import { ChainId } from '@pancakeswap/chains'\n\nimport {\n SupportedChainId,\n SUPPORTED_CHAIN_IDS,\n CakeVaultSupportedChainId,\n CAKE_VAULT_SUPPORTED_CHAINS,\n} from '../constants/supportedChains'\n\nexport function isPoolsSupported(chainId: number): chainId is SupportedChainId {\n return SUPPORTED_CHAIN_IDS.includes(chainId)\n}\n\nexport function isCakeVaultSupported(chainId?: ChainId): chainId is CakeVaultSupportedChainId {\n return !!chainId && (CAKE_VAULT_SUPPORTED_CHAINS as readonly ChainId[]).includes(chainId)\n}\n","export const POOLS_API = 'https://configs.pancakeswap.com/api/data/cached/syrup-pools'\n","import { ChainId } from '@pancakeswap/chains'\nimport { SerializedPool } from '../../types'\nimport { isPoolsSupported } from '../../utils/isPoolsSupported'\nimport { POOLS_API } from '../config/endpoint'\n\nconst poolCache: Record<string, SerializedPool[] | undefined> = {}\nconst fetchRequests: Record<string, Promise<SerializedPool[]> | undefined> = {}\n\nexport const getPoolsConfig = async (chainId: ChainId) => {\n if (!isPoolsSupported(chainId)) {\n return undefined\n }\n\n // Check if the pools are already cached\n if (poolCache[chainId]) {\n return poolCache[chainId]\n }\n\n // Check if a fetch request is already in progress for this chainId\n if (fetchRequests[chainId]) {\n return fetchRequests[chainId]\n }\n\n const fetchPoolConfig = async () => {\n try {\n const response = await fetch(`${POOLS_API}?chainId=${chainId}`, {\n signal: AbortSignal.timeout(3000),\n })\n if (response.ok) {\n const pools = await response.json()\n if (!pools) {\n throw new Error(`Unexpected empty pool fetched from remote ${pools}`)\n }\n\n // Cache the result before returning\n poolCache[chainId] = pools\n return pools\n }\n throw new Error(`Fetch failed with status: ${response.status}`)\n } catch (e) {\n if (e instanceof Error) {\n throw new Error(`Fetch failed: ${e.message}`)\n } else {\n throw new Error(`Fetch failed: ${e}`)\n }\n } finally {\n // Clear the ongoing fetch request after completion or failure\n fetchRequests[chainId] = undefined\n }\n }\n\n // Store the ongoing fetch request in the cache\n fetchRequests[chainId] = fetchPoolConfig()\n return fetchRequests[chainId]\n}\n\nexport const getLivePoolsConfig = async (chainId: ChainId) => {\n if (!isPoolsSupported(chainId)) {\n return undefined\n }\n\n try {\n const response = await fetch(`${POOLS_API}?chainId=${chainId}&isFinished=false`)\n const result: SerializedPool[] = await response.json()\n return result\n } catch (error) {\n console.error('Get live pools by chain config error: ', error)\n return []\n }\n}\n\nexport const MAX_LOCK_DURATION = 31536000\nexport const UNLOCK_FREE_DURATION = 604800\nexport const ONE_WEEK_DEFAULT = 604800\nexport const BOOST_WEIGHT = 20000000000000n\nexport const DURATION_FACTOR = 31536000n\n","import { ChainId } from '@pancakeswap/chains'\nimport { BoosterConfig } from '../../utils/boosted/types'\nimport { arbBoostedPools } from './arb'\nimport { opBnbBoostedPools } from './opBNB'\n\nexport type BoostedPoolsConfigByChain<TChainId extends ChainId> = {\n [chainId in TChainId]?: BoosterConfig[]\n}\n\nexport const BOOSTED_POOLS_CONFIG_BY_CHAIN = {\n [ChainId.ARBITRUM_ONE]: arbBoostedPools,\n [ChainId.OPBNB]: opBnbBoostedPools,\n} as BoostedPoolsConfigByChain<ChainId>\n\nexport const getBoostedPoolsConfig = (chainId: ChainId) => {\n return BOOSTED_POOLS_CONFIG_BY_CHAIN[chainId]\n}\n\nexport const getBoostedPoolConfig = (chainId: ChainId, contractAddress: string): BoosterConfig | undefined => {\n const pool = getBoostedPoolsConfig(chainId)\n return pool?.find((i) => i?.contractAddress?.toLowerCase() === contractAddress.toLowerCase())\n}\n","import { BoosterConfig, BoosterType } from '../../utils/boosted/types'\n\nexport const arbBoostedPools: BoosterConfig[] = [\n {\n boosterType: BoosterType.ALP,\n contractAddress: '0x85146C0c5968d9640121eebd13030c99298f87b3',\n tooltipsText:\n 'Fee APY include the transaction fees shared in the ALP pool, funding rates for positions held, and liquidation income, and will be reflected in the growth of the ALP price. Stake APY is the return for staking ALP. Both Annualized using compound interest, for reference purposes only.',\n },\n {\n boosterType: BoosterType.ALP,\n contractAddress: '0xCe10072E051DA9B8e297AC439B3d7c5C45A32c8f',\n tooltipsText:\n 'Fee APY include the transaction fees shared in the ALP pool, funding rates for positions held, and liquidation income, and will be reflected in the growth of the ALP price. Stake APY is the return for staking ALP. Both Annualized using compound interest, for reference purposes only.',\n },\n]\n","import { BoosterConfig, BoosterType } from '../../utils/boosted/types'\n\nexport const opBnbBoostedPools: BoosterConfig[] = [\n {\n boosterType: BoosterType.ALP,\n contractAddress: '0xa1B46Cb13b43fb8Ae5dC7222e3294fcd10024168',\n tooltipsText:\n 'Fee APY include the transaction fees shared in the ALP pool, funding rates for positions held, and liquidation income, and will be reflected in the growth of the ALP price. Stake APY is the return for staking ALP. Both Annualized using compound interest, for reference purposes only.',\n },\n]\n","import { ChainId } from '@pancakeswap/chains'\nimport { Address } from 'viem'\n\nimport { SupportedChainId } from './supportedChains'\n\nexport type ContractAddresses<T extends ChainId = SupportedChainId> = {\n [chainId in T]: Address\n}\n\nexport const ICAKE = {\n [ChainId.BSC]: '0x3C458828D1622F5f4d526eb0d24Da8C4Eb8F07b1',\n [ChainId.BSC_TESTNET]: '0x5FB0b7a782c2f192493d86922dD3873b6392C8e8',\n [ChainId.ETHEREUM]: '0x',\n [ChainId.ARBITRUM_ONE]: '0x',\n [ChainId.ARBITRUM_GOERLI]: '0x',\n [ChainId.ZKSYNC]: '0x',\n [ChainId.ZKSYNC_TESTNET]: '0x',\n [ChainId.BASE_TESTNET]: '0x',\n [ChainId.LINEA_TESTNET]: '0x',\n [ChainId.OPBNB]: '0x',\n [ChainId.BASE]: '0x',\n} as const satisfies ContractAddresses<SupportedChainId>\n\nexport const CAKE_VAULT = {\n [ChainId.BSC]: '0x45c54210128a065de780C4B0Df3d16664f7f859e',\n [ChainId.BSC_TESTNET]: '0x1088Fb24053F03802F673b84d16AE1A7023E400b',\n [ChainId.ETHEREUM]: '0x',\n [ChainId.ARBITRUM_ONE]: '0x',\n [ChainId.ARBITRUM_GOERLI]: '0x',\n [ChainId.ZKSYNC]: '0x',\n [ChainId.ZKSYNC_TESTNET]: '0x',\n [ChainId.BASE_TESTNET]: '0x',\n [ChainId.LINEA_TESTNET]: '0x',\n [ChainId.OPBNB]: '0x',\n [ChainId.BASE]: '0x',\n} as const satisfies ContractAddresses<SupportedChainId>\n\nexport const CAKE_FLEXIBLE_SIDE_VAULT = {\n [ChainId.BSC]: '0x615e896A8C2CA8470A2e9dc2E9552998f8658Ea0',\n [ChainId.BSC_TESTNET]: '0x1088Fb24053F03802F673b84d16AE1A7023E400b',\n [ChainId.ETHEREUM]: '0x',\n [ChainId.ARBITRUM_ONE]: '0x',\n [ChainId.ARBITRUM_GOERLI]: '0x',\n [ChainId.ZKSYNC]: '0x',\n [ChainId.ZKSYNC_TESTNET]: '0x',\n [ChainId.BASE_TESTNET]: '0x',\n [ChainId.LINEA_TESTNET]: '0x',\n [ChainId.OPBNB]: '0x',\n [ChainId.BASE]: '0x',\n} as const satisfies ContractAddresses<SupportedChainId>\n","import { ChainId } from '@pancakeswap/chains'\nimport { PublicClient, Address } from 'viem'\nimport type { SerializedWrappedToken } from '@pancakeswap/token-lists'\nimport BigNumber from 'bignumber.js'\n\nexport type OnChainProvider = ({ chainId }: { chainId?: ChainId }) => PublicClient\n\nexport type SerializedBigNumber = string\n\nexport interface Addresses {\n [chainId: number]: string\n}\n\nexport enum PoolCategory {\n 'COMMUNITY' = 'Community',\n 'CORE' = 'Core',\n 'BINANCE' = 'Binance', // Pools using native BNB behave differently than pools using a token\n 'AUTO' = 'Auto',\n}\n\n// @deprecated\nexport interface LegacyPoolConfigBaseProps {\n sousId: number\n contractAddress: Address\n poolCategory: PoolCategory\n tokenPerBlock: string\n isFinished?: boolean\n enableEmergencyWithdraw?: boolean\n version?: number\n}\n\nexport interface PoolConfigBaseProps {\n sousId: number\n contractAddress: Address\n poolCategory: PoolCategory\n tokenPerSecond: string\n isFinished?: boolean\n enableEmergencyWithdraw?: boolean\n}\n\ninterface GenericToken {\n decimals: number\n symbol: string\n address: string\n}\n\nexport interface LegacySerializedPoolConfig<T> extends LegacyPoolConfigBaseProps {\n earningToken: T & GenericToken\n stakingToken: T & GenericToken\n}\n\nexport interface SerializedPoolConfig<T> extends PoolConfigBaseProps {\n earningToken: T & GenericToken\n stakingToken: T & GenericToken\n}\n\nexport type LegacySerializedPool = LegacySerializedPoolConfig<SerializedWrappedToken>\n\nexport type UpgradedSerializedPool = SerializedPoolConfig<SerializedWrappedToken>\n\nexport type SerializedPool = LegacySerializedPool | UpgradedSerializedPool\n\nexport type UpgradedSerializedPoolWithInfo = UpgradedSerializedPool & SerializedPoolInfo\n\nexport type LegacySerializedPoolWithInfo = LegacySerializedPool & SerializedPoolInfo\n\nexport type SerializedPoolWithInfo = LegacySerializedPoolWithInfo | UpgradedSerializedPoolWithInfo\n\nexport interface SerializedVaultUser {\n isLoading: boolean\n userShares: SerializedBigNumber\n cakeAtLastUserAction: SerializedBigNumber\n lastDepositedTime: string\n lastUserActionTime: string\n}\n\nexport interface SerializedLockedVaultUser extends SerializedVaultUser {\n lockStartTime: string\n lockEndTime: string\n userBoostedShare: SerializedBigNumber\n locked: boolean\n lockedAmount: SerializedBigNumber\n currentPerformanceFee: SerializedBigNumber\n currentOverdueFee: SerializedBigNumber\n}\n\nexport interface LegacyDeserializedPoolConfig<T> extends LegacyPoolConfigBaseProps {\n earningToken: T & GenericToken\n stakingToken: T & GenericToken\n}\n\nexport interface UpgradedDeserializedPoolConfig<T> extends PoolConfigBaseProps {\n earningToken: T & GenericToken\n stakingToken: T & GenericToken\n}\n\nexport type DeserializedPoolConfig<T> = LegacyDeserializedPoolConfig<T> | UpgradedDeserializedPoolConfig<T>\n\ninterface SerializedPoolInfo extends CorePoolProps {\n totalStaked?: string\n stakingLimit?: string\n stakingLimitEndTimestamp?: number\n profileRequirement?: {\n required: boolean\n thresholdPoints: string\n }\n userDataLoaded?: boolean\n userData?: {\n allowance: string\n stakingTokenBalance: string\n stakedBalance: string\n pendingReward: string\n }\n}\n\ninterface PoolInfo extends CorePoolProps {\n totalStaked?: BigNumber\n stakingLimit?: BigNumber\n stakingLimitEndTimestamp?: number\n profileRequirement?: {\n required: boolean\n thresholdPoints: BigNumber\n }\n userDataLoaded?: boolean\n userData?: {\n allowance: BigNumber\n stakingTokenBalance: BigNumber\n stakedBalance: BigNumber\n pendingReward: BigNumber\n }\n}\n\nexport type UpgradedDeserializedPool<T> = UpgradedDeserializedPoolConfig<T> & PoolInfo\n\nexport type LegacyDeserializedPool<T> = LegacyDeserializedPoolConfig<T> & PoolInfo\n\nexport type DeserializedPool<T> = UpgradedDeserializedPool<T> | LegacyDeserializedPool<T>\n\nexport type DeserializedPoolVault<T> = DeserializedPool<T> & DeserializedCakeVault\nexport type DeserializedPoolLockedVault<T> = DeserializedPool<T> & DeserializedLockedCakeVault\n\nexport interface DeserializedLockedVaultUser extends DeserializedVaultUser {\n lastDepositedTime: string\n lastUserActionTime: string\n lockStartTime: string\n lockEndTime: string\n burnStartTime: string\n userBoostedShare: BigNumber\n locked: boolean\n lockedAmount: BigNumber\n currentPerformanceFee: BigNumber\n currentOverdueFee: BigNumber\n}\n\nexport interface DeserializedLockedCakeVault extends Omit<DeserializedCakeVault, 'userData'> {\n totalLockedAmount?: BigNumber\n userData?: DeserializedLockedVaultUser\n}\n\nexport interface SerializedVaultFees {\n performanceFee: number\n withdrawalFee: number\n withdrawalFeePeriod: number\n}\n\nexport interface DeserializedVaultFees extends SerializedVaultFees {\n performanceFeeAsDecimal: number\n}\n\nexport interface DeserializedVaultUser {\n isLoading: boolean\n userShares: BigNumber\n cakeAtLastUserAction: BigNumber\n lastDepositedTime: string\n lastUserActionTime: string\n balance: {\n cakeAsNumberBalance: number\n cakeAsBigNumber: BigNumber\n cakeAsDisplayBalance: string\n }\n}\n\nexport interface DeserializedCakeVault {\n totalShares?: BigNumber\n totalLockedAmount?: BigNumber\n pricePerFullShare: BigNumber\n totalCakeInVault?: BigNumber\n fees?: DeserializedVaultFees\n userData?: DeserializedVaultUser\n}\n\nexport enum VaultKey {\n CakeVaultV1 = 'cakeVaultV1',\n CakeVault = 'cakeVault',\n CakeFlexibleSideVault = 'cakeFlexibleSideVault',\n IfoPool = 'ifoPool',\n}\n\ninterface CorePoolProps {\n startTimestamp?: number\n endTimestamp?: number\n apr?: number\n rawApr?: number\n stakingTokenPrice?: number\n earningTokenPrice?: number\n vaultKey?: VaultKey\n}\n","import BigNumber from 'bignumber.js'\n\nexport const BIG_ZERO = new BigNumber(0)\nexport const BIG_ONE = new BigNumber(1)\nexport const BIG_TWO = new BigNumber(2)\nexport const BIG_NINE = new BigNumber(9)\nexport const BIG_TEN = new BigNumber(10)\nexport const BIG_ONE_HUNDRED = new BigNumber(100)\n\nexport const bigIntToSerializedBigNumber = (bigint: bigint): string => bigIntToBigNumber(bigint).toJSON()\n\nexport const bigIntToBigNumber = (bigint: bigint): BigNumber => new BigNumber(bigint.toString())\n","import { ChainId } from '@pancakeswap/chains'\nimport { BIG_ZERO } from '@pancakeswap/utils/bigNumber'\nimport BigNumber from 'bignumber.js'\nimport chunk from 'lodash/chunk'\nimport fromPairs from 'lodash/fromPairs'\nimport { erc20Abi } from 'viem'\n\nimport { smartChefABI } from '../abis/ISmartChef'\nimport { sousChefABI } from '../abis/ISousChef'\nimport { sousChefV2ABI } from '../abis/ISousChefV2'\nimport { sousChefV3ABI } from '../abis/ISousChefV3'\nimport { BSC_BLOCK_TIME, getPoolsConfig } from '../constants'\nimport { LegacySerializedPool, OnChainProvider, UpgradedSerializedPool } from '../types'\nimport { isLegacyPool, isUpgradedPool } from '../utils'\n\nconst getLivePoolsWithEnd = async (chainId: ChainId) => {\n const poolsConfig = await getPoolsConfig(chainId)\n if (!poolsConfig) {\n return null\n }\n return poolsConfig.filter((p) => p.sousId !== 0 && !p.isFinished)\n}\n\nasync function fetchUpgradedPoolsTimeLimits(\n pools: UpgradedSerializedPool[],\n chainId: ChainId,\n provider: OnChainProvider,\n) {\n if (!pools.length) {\n return []\n }\n\n const calls = pools.flatMap(({ contractAddress }) => {\n return [\n {\n abi: smartChefABI,\n address: contractAddress,\n functionName: 'startTimestamp',\n },\n {\n abi: smartChefABI,\n address: contractAddress,\n functionName: 'endTimestamp',\n },\n ] as const\n })\n\n const client = provider({ chainId })\n const startEndRaw = await client.multicall({\n contracts: calls,\n allowFailure: false,\n })\n\n const startEndResult = startEndRaw.reduce<bigint[][]>((resultArray, item, index) => {\n const chunkIndex = Math.floor(index / 2)\n\n if (!resultArray[chunkIndex]) {\n // eslint-disable-next-line no-param-reassign\n resultArray[chunkIndex] = [] // start a new chunk\n }\n\n resultArray[chunkIndex].push(item)\n\n return resultArray\n }, [])\n\n return pools.map((cakePoolConfig, index) => {\n const [startTimestamp, endTimestamp] = startEndResult[index]\n return {\n sousId: cakePoolConfig.sousId,\n startTimestamp: Number(startTimestamp),\n endTimestamp: Number(endTimestamp),\n }\n })\n}\n\nconst fetchLegacyPoolsBlockLimits = async (\n pools: LegacySerializedPool[],\n chainId: ChainId,\n provider: OnChainProvider,\n) => {\n if (!pools.length) {\n return []\n }\n const startEndBlockCalls = pools.flatMap(({ contractAddress }) => {\n return [\n {\n abi: sousChefABI,\n address: contractAddress,\n functionName: 'startBlock',\n },\n {\n abi: sousChefABI,\n address: contractAddress,\n functionName: 'bonusEndBlock',\n },\n ] as const\n })\n\n const client = provider({ chainId })\n\n const [block, startEndBlockRaw] = await Promise.all([\n client.getBlock({ blockTag: 'latest' }),\n client.multicall({\n contracts: startEndBlockCalls,\n allowFailure: false,\n }),\n ])\n\n const startEndBlockResult = startEndBlockRaw.reduce<bigint[][]>((resultArray, item, index) => {\n const chunkIndex = Math.floor(index / 2)\n\n if (!resultArray[chunkIndex]) {\n // eslint-disable-next-line no-param-reassign\n resultArray[chunkIndex] = [] // start a new chunk\n }\n\n resultArray[chunkIndex].push(item)\n\n return resultArray\n }, [])\n\n const getTimestampFromBlock = (targetBlock: number) => {\n return Number(block.timestamp) + (targetBlock - Number(block.number)) * BSC_BLOCK_TIME\n }\n return pools.map((cakePoolConfig, index) => {\n const [startBlock, endBlock] = startEndBlockResult[index]\n return {\n sousId: cakePoolConfig.sousId,\n startTimestamp: getTimestampFromBlock(Number(startBlock)),\n endTimestamp: getTimestampFromBlock(Number(endBlock)),\n }\n })\n}\n\nexport const fetchPoolsTimeLimits = async (chainId: ChainId, provider: OnChainProvider) => {\n const livedPools = await getLivePoolsWithEnd(chainId)\n if (!livedPools) {\n return null\n }\n const upgradedPools = livedPools.filter(isUpgradedPool)\n const legacyPools = livedPools.filter(isLegacyPool)\n const [upgradePoolLimits, legacyPoolLimits] = await Promise.all([\n fetchUpgradedPoolsTimeLimits(upgradedPools, chainId, provider),\n fetchLegacyPoolsBlockLimits(legacyPools, chainId, provider),\n ])\n return [...upgradePoolLimits, ...legacyPoolLimits]\n}\n\nexport const fetchPoolsTotalStaking = async (chainId: ChainId, provider: OnChainProvider) => {\n const poolsConfig = await getPoolsConfig(chainId)\n if (!poolsConfig) {\n return null\n }\n const poolsBalanceOf = poolsConfig.map(({ contractAddress, stakingToken }) => {\n return {\n abi: erc20Abi,\n address: stakingToken.address,\n functionName: 'balanceOf',\n args: [contractAddress],\n } as const\n })\n\n const client = provider({ chainId })\n const poolsTotalStaked = await client.multicall({\n contracts: poolsBalanceOf,\n allowFailure: false,\n })\n\n return poolsConfig.map((p, index) => ({\n sousId: p.sousId,\n totalStaked: new BigNumber(poolsTotalStaked[index].toString()).toJSON(),\n }))\n}\n\ninterface FetchingPoolsStakingLimitsParams {\n poolsWithStakingLimit: number[]\n chainId: ChainId\n provider: OnChainProvider\n}\n\nexport const fetchPoolsStakingLimitsByBlock = async ({\n poolsWithStakingLimit,\n chainId,\n provider,\n}: FetchingPoolsStakingLimitsParams): Promise<{\n [key: string]: { stakingLimit: BigNumber; numberSecondsForUserLimit: number }\n}> => {\n const poolsConfig = await getPoolsConfig(chainId)\n if (!poolsConfig) {\n throw new Error(`No pools found on chain ${chainId}`)\n }\n\n const validPools = poolsConfig\n .filter(isLegacyPool)\n .filter((p) => p.stakingToken.symbol !== 'BNB' && !p.isFinished)\n .filter((p) => !poolsWithStakingLimit.includes(p.sousId))\n\n // Get the staking limit for each valid pool\n const poolStakingCalls = validPools\n .map(({ contractAddress }) => {\n return (['hasUserLimit', 'poolLimitPerUser', 'numberBlocksForUserLimit'] as const).map(\n (method) =>\n ({\n address: contractAddress,\n functionName: method,\n abi: sousChefV2ABI,\n } as const),\n )\n })\n .flat()\n\n const client = provider({ chainId })\n\n const poolStakingResultRaw = await client.multicall({\n contracts: poolStakingCalls,\n allowFailure: true,\n })\n\n const chunkSize = poolStakingCalls.length / validPools.length\n const poolStakingChunkedResultRaw = chunk(poolStakingResultRaw.flat(), chunkSize)\n return fromPairs(\n poolStakingChunkedResultRaw.map((stakingLimitRaw, index) => {\n const hasUserLimit = stakingLimitRaw[0]?.result as boolean\n const stakingLimit =\n hasUserLimit && stakingLimitRaw[1].result ? new BigNumber(stakingLimitRaw[1].result.toString()) : BIG_ZERO\n const numberBlocksForUserLimit = stakingLimitRaw[2].result ? Number(stakingLimitRaw[2].result) : 0\n const numberSecondsForUserLimit = numberBlocksForUserLimit * BSC_BLOCK_TIME\n return [validPools[index].sousId, { stakingLimit, numberSecondsForUserLimit }]\n }),\n )\n}\n\nconst fetchPoolsStakingLimitsByTime = async ({\n poolsWithStakingLimit,\n chainId,\n provider,\n}: FetchingPoolsStakingLimitsParams): Promise<{\n [key: string]: { stakingLimit: BigNumber; numberSecondsForUserLimit: number }\n}> => {\n const poolsConfig = await getPoolsConfig(chainId)\n if (!poolsConfig) {\n throw new Error(`No pools found on chain ${chainId}`)\n }\n\n const validPools = poolsConfig\n .filter(isUpgradedPool)\n .filter((p) => p.stakingToken.symbol !== 'BNB' && !p.isFinished)\n .filter((p) => !poolsWithStakingLimit.includes(p.sousId))\n\n // Get the staking limit for each valid pool\n const poolStakingCalls = validPools\n .map(({ contractAddress }) => {\n return (['hasUserLimit', 'poolLimitPerUser', 'numberSecondsForUserLimit'] as const).map(\n (method) =>\n ({\n abi: smartChefABI,\n address: contractAddress,\n functionName: method,\n } as const),\n )\n })\n .flat()\n\n const client = provider({ chainId })\n const poolStakingResultRaw = await client.multicall({\n contracts: poolStakingCalls,\n allowFailure: true,\n })\n const chunkSize = poolStakingCalls.length / validPools.length\n const poolStakingChunkedResultRaw = chunk(poolStakingResultRaw.flat(), chunkSize)\n return fromPairs(\n poolStakingChunkedResultRaw.map((stakingLimitRaw, index) => {\n const hasUserLimit = stakingLimitRaw[0].result\n const stakingLimit =\n hasUserLimit && stakingLimitRaw[1].result ? new BigNumber(stakingLimitRaw[1].result.toString()) : BIG_ZERO\n const numberSecondsForUserLimit = stakingLimitRaw[2].result ? Number(stakingLimitRaw[2].result) : 0\n return [validPools[index].sousId, { stakingLimit, numberSecondsForUserLimit }]\n }),\n )\n}\n\nexport const fetchPoolsStakingLimits = async (\n params: FetchingPoolsStakingLimitsParams,\n): Promise<{\n [key: string]: { stakingLimit: BigNumber; numberSecondsForUserLimit: number }\n}> => {\n const [limitsByTime, limitsByBlock] = await Promise.all([\n fetchPoolsStakingLimitsByTime(params),\n fetchPoolsStakingLimitsByBlock(params),\n ])\n return {\n ...limitsByTime,\n ...limitsByBlock,\n }\n}\n\nexport const fetchPoolsProfileRequirement = async (\n chainId: ChainId,\n provider: OnChainProvider,\n): Promise<{\n [key: string]: {\n required: boolean\n thresholdPoints: string\n }\n}> => {\n const poolsConfig = await getPoolsConfig(chainId)\n if (!poolsConfig) {\n throw new Error(`No pools found on chain ${chainId}`)\n }\n\n const livePoolsWithV3 = poolsConfig.filter(\n (pool) => (isUpgradedPool(pool) || (isLegacyPool(pool) && pool?.version === 3)) && !pool?.isFinished,\n )\n const poolProfileRequireCalls = livePoolsWithV3\n .map(({ contractAddress }) => {\n return (['pancakeProfileIsRequested', 'pancakeProfileThresholdPoints'] as const).map(\n (method) =>\n ({\n abi: sousChefV3ABI,\n address: contractAddress,\n functionName: method,\n } as const),\n )\n })\n .flat()\n\n const client = provider({ chainId })\n const poolProfileRequireResultRaw = await client.multicall({\n contracts: poolProfileRequireCalls,\n })\n\n const chunkSize = poolProfileRequireCalls.length / livePoolsWithV3.length\n const poolStakingChunkedResultRaw = chunk(poolProfileRequireResultRaw.flat(), chunkSize)\n return fromPairs(\n poolStakingChunkedResultRaw.map((poolProfileRequireRaw, index) => {\n const hasProfileRequired = poolProfileRequireRaw[0].result\n const profileThresholdPoints = poolProfileRequireRaw[1].result\n ? new BigNumber(poolProfileRequireRaw[1].result.toString())\n : BIG_ZERO\n return [\n livePoolsWithV3[index].sousId,\n {\n required: !!hasProfileRequired,\n thresholdPoints: profileThresholdPoints.toJSON(),\n },\n ]\n }),\n )\n}\n","export const smartChefABI = [\n {\n inputs: [\n { internalType: 'address', name: '_pancakeProfile', type: 'address' },\n { internalType: 'bool', name: '_pancakeProfileIsRequested', type: 'bool' },\n { internalType: 'uint256', name: '_pancakeProfileThresholdPoints', type: 'uint256' },\n ],\n stateMutability: 'nonpayable',\n type: 'constructor',\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: 'address', name: 'user', type: 'address' },\n { indexed: false, internalType: 'uint256', name: 'amount', type: 'uint256' },\n ],\n name: 'Deposit',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: 'address', name: 'user', type: 'address' },\n { indexed: false, internalType: 'uint256', name: 'amount', type: 'uint256' },\n ],\n name: 'EmergencyWithdraw',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [{ indexed: false, internalType: 'uint256', name: 'poolLimitPerUser', type: 'uint256' }],\n name: 'NewPoolLimit',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [{ indexed: false, internalType: 'uint256', name: 'rewardPerSecond', type: 'uint256' }],\n name: 'NewRewardPerSecond',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n { indexed: false, internalType: 'uint256', name: 'startTimestamp', type: 'uint256' },\n { indexed: false, internalType: 'uint256', name: 'endTimestamp', type: 'uint256' },\n ],\n name: 'NewStartAndEndTimestamp',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: 'address', name: 'previousOwner', type: 'address' },\n { indexed: true, internalType: 'address', name: 'newOwner', type: 'address' },\n ],\n name: 'OwnershipTransferred',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [{ indexed: false, internalType: 'uint256', name: 'blockNumber', type: 'uint256' }],\n name: 'RewardsStop',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: 'address', name: 'token', type: 'address' },\n { indexed: false, internalType: 'uint256', name: 'amount', type: 'uint256' },\n ],\n name: 'TokenRecovery',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n { indexed: false, internalType: 'bool', name: 'isProfileRequested', type: 'bool' },\n { indexed: false, internalType: 'uint256', name: 'thresholdPoints', type: 'uint256' },\n ],\n name: 'UpdateProfileAndThresholdPointsRequirement',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: 'address', name: 'user', type: 'address' },\n { indexed: false, internalType: 'uint256', name: 'amount', type: 'uint256' },\n ],\n name: 'Withdraw',\n type: 'event',\n },\n {\n inputs: [],\n name: 'PRECISION_FACTOR',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'SMART_CHEF_FACTORY',\n outputs: [{ internalType: 'address', name: '', type: 'address' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'accTokenPerShare',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'uint256', name: '_amount', type: 'uint256' }],\n name: 'deposit',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'uint256', name: '_amount', type: 'uint256' }],\n name: 'emergencyRewardWithdraw',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n { inputs: [], name: 'emergencyWithdraw', outputs: [], stateMutability: 'nonpayable', type: 'function' },\n {\n inputs: [],\n name: 'endTimestamp',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'hasUserLimit',\n outputs: [{ internalType: 'bool', name: '', type: 'bool' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'contract IERC20Metadata', name: '_stakedToken', type: 'address' },\n { internalType: 'contract IERC20Metadata', name: '_rewardToken', type: 'address' },\n { internalType: 'uint256', name: '_rewardPerSecond', type: 'uint256' },\n { internalType: 'uint256', name: '_startTimestamp', type: 'uint256' },\n { internalType: 'uint256', name: '_endTimestamp', type: 'uint256' },\n { internalType: 'uint256', name: '_poolLimitPerUser', type: 'uint256' },\n { internalType: 'uint256', name: '_numberSecondsForUserLimit', type: 'uint256' },\n { internalType: 'address', name: '_admin', type: 'address' },\n ],\n name: 'initialize',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'isInitialized',\n outputs: [{ internalType: 'bool', name: '', type: 'bool' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'lastRewardTimestamp',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'numberSecondsForUserLimit',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'owner',\n outputs: [{ internalType: 'address', name: '', type: 'address' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'pancakeProfile',\n outputs: [{ internalType: 'address', name: '', type: 'address' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'pancakeProfileIsRequested',\n outputs: [{ internalType: 'bool', name: '', type: 'bool' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'pancakeProfileThresholdPoints',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'address', name: '_user', type: 'address' }],\n name: 'pendingReward',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'poolLimitPerUser',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'address', name: '_token', type: 'address' }],\n name: 'recoverToken',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n { inputs: [], name: 'renounceOwnership', outputs: [], stateMutability: 'nonpayable', type: 'function' },\n {\n inputs: [],\n name: 'rewardPerSecond',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'rewardToken',\n outputs: [{ internalType: 'contract IERC20Metadata', name: '', type: 'address' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'stakedToken',\n outputs: [{ internalType: 'contract IERC20Metadata', name: '', type: 'address' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'startTimestamp',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n { inputs: [], name: 'stopReward', outputs: [], stateMutability: 'nonpayable', type: 'function' },\n {\n inputs: [{ internalType: 'address', name: 'newOwner', type: 'address' }],\n name: 'transferOwnership',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'bool', name: '_userLimit', type: 'bool' },\n { internalType: 'uint256', name: '_poolLimitPerUser', type: 'uint256' },\n ],\n name: 'updatePoolLimitPerUser',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'bool', name: '_isRequested', type: 'bool' },\n { internalType: 'uint256', name: '_thresholdPoints', type: 'uint256' },\n ],\n name: 'updateProfileAndThresholdPointsRequirement',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'uint256', name: '_rewardPerSecond', type: 'uint256' }],\n name: 'updateRewardPerSecond',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'uint256', name: '_startTimestamp', type: 'uint256' },\n { internalType: 'uint256', name: '_endTimestamp', type: 'uint256' },\n ],\n name: 'updateStartAndEndTimestamp',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'address', name: '', type: 'address' }],\n name: 'userInfo',\n outputs: [\n { internalType: 'uint256', name: 'amount', type: 'uint256' },\n { internalType: 'uint256', name: 'rewardDebt', type: 'uint256' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'userLimit',\n outputs: [{ internalType: 'bool', name: '', type: 'bool' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'uint256', name: '_amount', type: 'uint256' }],\n name: 'withdraw',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n] as const\n","export const sousChefABI = [\n {\n inputs: [],\n name: 'bonusEndBlock',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'uint256', name: '_amount', type: 'uint256' }],\n name: 'deposit',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'uint256', name: '_amount', type: 'uint256' }],\n name: 'emergencyRewardWithdraw',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n { inputs: [], name: 'emergencyWithdraw', outputs: [], stateMutability: 'nonpayable', type: 'function' },\n {\n inputs: [\n { internalType: 'uint256', name: '_from', type: 'uint256' },\n { internalType: 'uint256', name: '_to', type: 'uint256' },\n ],\n name: 'getMultiplier',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n { inputs: [], name: 'massUpdatePools', outputs: [], stateMutability: 'nonpayable', type: 'function' },\n {\n inputs: [],\n name: 'owner',\n outputs: [{ internalType: 'address', name: '', type: 'address' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'address', name: '_user', type: 'address' }],\n name: 'pendingReward',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n name: 'poolInfo',\n outputs: [\n { internalType: 'contract IBEP20', name: 'lpToken', type: 'address' },\n { internalType: 'uint256', name: 'allocPoint', type: 'uint256' },\n { internalType: 'uint256', name: 'lastRewardBlock', type: 'uint256' },\n { internalType: 'uint256', name: 'accCakePerShare', type: 'uint256' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n { inputs: [], name: 'renounceOwnership', outputs: [], stateMutability: 'nonpayable', type: 'function' },\n {\n inputs: [],\n name: 'rewardPerBlock',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'rewardToken',\n outputs: [{ internalType: 'contract IBEP20', name: '', type: 'address' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'startBlock',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n { inputs: [], name: 'stopReward', outputs: [], stateMutability: 'nonpayable', type: 'function' },\n {\n inputs: [],\n name: 'syrup',\n outputs: [{ internalType: 'contract IBEP20', name: '', type: 'address' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'address', name: 'newOwner', type: 'address' }],\n name: 'transferOwnership',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'uint256', name: '_pid', type: 'uint256' }],\n name: 'updatePool',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'address', name: '', type: 'address' }],\n name: 'userInfo',\n outputs: [\n { internalType: 'uint256', name: 'amount', type: 'uint256' },\n { internalType: 'uint256', name: 'rewardDebt', type: 'uint256' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'uint256', name: '_amount', type: 'uint256' }],\n name: 'withdraw',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n] as const\n","export const sousChefV2ABI = [\n {\n inputs: [],\n name: 'PRECISION_FACTOR',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'accTokenPerShare',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'bonusEndBlock',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint256',\n name: '_amount',\n type: 'uint256',\n },\n ],\n name: 'deposit',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint256',\n name: '_amount',\n type: 'uint256',\n },\n ],\n name: 'emergencyRewardWithdraw',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'emergencyWithdraw',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'hasUserLimit',\n outputs: [\n {\n internalType: 'bool',\n name: '',\n type: 'bool',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'lastRewardBlock',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'numberBlocksForUserLimit',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'owner',\n outputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: '_user',\n type: 'address',\n },\n ],\n name: 'pendingReward',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'poolLimitPerUser',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: '_tokenAddress',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: '_tokenAmount',\n type: 'uint256',\n },\n ],\n name: 'recoverWrongTokens',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'renounceOwnership',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'rewardPerBlock',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'rewardToken',\n outputs: [\n {\n internalType: 'contract IBEP20',\n name: '',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'stakedToken',\n outputs: [\n {\n internalType: 'contract IBEP20',\n name: '',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'startBlock',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'stopReward',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'newOwner',\n type: 'address',\n },\n ],\n name: 'transferOwnership',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'bool',\n name: '_hasUserLimit',\n type: 'bool',\n },\n {\n internalType: 'uint256',\n name: '_poolLimitPerUser',\n type: 'uint256',\n },\n ],\n name: 'updatePoolLimitPerUser',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint256',\n name: '_rewardPerBlock',\n type: 'uint256',\n },\n ],\n name: 'updateRewardPerBlock',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint256',\n name: '_startBlock',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: '_bonusEndBlock',\n type: 'uint256',\n },\n ],\n name: 'updateStartAndEndBlocks',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n name: 'userInfo',\n outputs: [\n {\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'rewardDebt',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint256',\n name: '_amount',\n type: 'uint256',\n },\n ],\n name: 'withdraw',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n] as const\n","export const sousChefV3ABI = [\n {\n inputs: [\n { internalType: 'address', name: '_pancakeProfile', type: 'address' },\n { internalType: 'bool', name: '_pancakeProfileIsRequested', type: 'bool' },\n { internalType: 'uint256', name: '_pancakeProfileThresholdPoints', type: 'uint256' },\n ],\n stateMutability: 'nonpayable',\n type: 'constructor',\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: 'address', name: 'user', type: 'address' },\n { indexed: false, internalType: 'uint256', name: 'amount', type: 'uint256' },\n ],\n name: 'Deposit',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: 'address', name: 'user', type: 'address' },\n { indexed: false, internalType: 'uint256', name: 'amount', type: 'uint256' },\n ],\n name: 'EmergencyWithdraw',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [{ indexed: false, internalType: 'uint256', name: 'poolLimitPerUser', type: 'uint256' }],\n name: 'NewPoolLimit',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [{ indexed: false, internalType: 'uint256', name: 'rewardPerBlock', type: 'uint256' }],\n name: 'NewRewardPerBlock',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n { indexed: false, internalType: 'uint256', name: 'startBlock', type: 'uint256' },\n { indexed: false, internalType: 'uint256', name: 'endBlock', type: 'uint256' },\n ],\n name: 'NewStartAndEndBlocks',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: 'address', name: 'previousOwner', type: 'address' },\n { indexed: true, internalType: 'address', name: 'newOwner', type: 'address' },\n ],\n name: 'OwnershipTransferred',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [{ indexed: false, internalType: 'uint256', name: 'blockNumber', type: 'uint256' }],\n name: 'RewardsStop',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: 'address', name: 'token', type: 'address' },\n { indexed: false, internalType: 'uint256', name: 'amount', type: 'uint256' },\n ],\n name: 'TokenRecovery',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n { indexed: false, internalType: 'bool', name: 'isProfileRequested', type: 'bool' },\n { indexed: false, internalType: 'uint256', name: 'thresholdPoints', type: 'uint256' },\n ],\n name: 'UpdateProfileAndThresholdPointsRequirement',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: 'address', name: 'user', type: 'address' },\n { indexed: false, internalType: 'uint256', name: 'amount', type: 'uint256' },\n ],\n name: 'Withdraw',\n type: 'event',\n },\n {\n inputs: [],\n name: 'PRECISION_FACTOR',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'SMART_CHEF_FACTORY',\n outputs: [{ internalType: 'address', name: '', type: 'address' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'accTokenPerShare',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'bonusEndBlock',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'uint256', name: '_amount', type: 'uint256' }],\n name: 'deposit',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'uint256', name: '_amount', type: 'uint256' }],\n name: 'emergencyRewardWithdraw',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n { inputs: [], name: 'emergencyWithdraw', outputs: [], stateMutability: 'nonpayable', type: 'function' },\n {\n inputs: [],\n name: 'hasUserLimit',\n outputs: [{ internalType: 'bool', name: '', type: 'bool' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'contract IERC20Metadata', name: '_stakedToken', type: 'address' },\n { internalType: 'contract IERC20Metadata', name: '_rewardToken', type: 'address' },\n { internalType: 'uint256', name: '_rewardPerBlock', type: 'uint256' },\n { internalType: 'uint256', name: '_startBlock', type: 'uint256' },\n { internalType: 'uint256', name: '_bonusEndBlock', type: 'uint256' },\n { internalType: 'uint256', name: '_poolLimitPerUser', type: 'uint256' },\n { internalType: 'uint256', name: '_numberBlocksForUserLimit', type: 'uint256' },\n { internalType: 'address', name: '_admin', type: 'address' },\n ],\n name: 'initialize',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'isInitialized',\n outputs: [{ internalType: 'bool', name: '', type: 'bool' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'lastRewardBlock',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'numberBlocksForUserLimit',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'owner',\n outputs: [{ internalType: 'address', name: '', type: 'address' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'pancakeProfile',\n outputs: [{ internalType: 'contract IPancakeProfile', name: '', type: 'address' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'pancakeProfileIsRequested',\n outputs: [{ internalType: 'bool', name: '', type: 'bool' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'pancakeProfileThresholdPoints',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'address', name: '_user', type: 'address' }],\n name: 'pendingReward',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'poolLimitPerUser',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'address', name: '_token', type: 'address' }],\n name: 'recoverToken',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n { inputs: [], name: 'renounceOwnership', outputs: [], stateMutability: 'nonpayable', type: 'function' },\n {\n inputs: [],\n name: 'rewardPerBlock',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'rewardToken',\n outputs: [{ internalType: 'contract IERC20Metadata', name: '', type: 'address' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'stakedToken',\n outputs: [{ internalType: 'contract IERC20Metadata', name: '', type: 'address' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'startBlock',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n { inputs: [], name: 'stopReward', outputs: [], stateMutability: 'nonpayable', type: 'function' },\n {\n inputs: [{ internalType: 'address', name: 'newOwner', type: 'address' }],\n name: 'transferOwnership',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'bool', name: '_userLimit', type: 'bool' },\n { internalType: 'uint256', name: '_poolLimitPerUser', type: 'uint256' },\n ],\n name: 'updatePoolLimitPerUser',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'bool', name: '_isRequested', type: 'bool' },\n { internalType: 'uint256', name: '_thresholdPoints', type: 'uint256' },\n ],\n name: 'updateProfileAndThresholdPointsRequirement',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'uint256', name: '_rewardPerBlock', type: 'uint256' }],\n name: 'updateRewardPerBlock',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'uint256', name: '_startBlock', type: 'uint256' },\n { internalType: 'uint256', name: '_bonusEndBlock', type: 'uint256' },\n ],\n name: 'updateStartAndEndBlocks',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'address', name: '', type: 'address' }],\n name: 'userInfo',\n outputs: [\n { internalType: 'uint256', name: 'amount', type: 'uint256' },\n { internalType: 'uint256', name: 'rewardDebt', type: 'uint256' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'userLimit',\n outputs: [{ internalType: 'bool', name: '', type: 'bool' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'uint256', name: '_amount', type: 'uint256' }],\n name: 'withdraw',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n] as const\n","import { ChainId } from '@pancakeswap/chains'\n\nimport { ContractAddresses } from '../constants/contracts'\nimport { isPoolsSupported } from './isPoolsSupported'\n\nexport function getContractAddress(addresses: ContractAddresses, chainId: ChainId) {\n if (!isPoolsSupported(chainId)) {\n throw new Error(`Cannot get contract address. Unsupported chain ${chainId}`)\n }\n return addresses[chainId]\n}\n","import { LegacySerializedPool, SerializedPool, UpgradedSerializedPool } from '../types'\n\nexport function isLegacyPool(pool: SerializedPool): pool is LegacySerializedPool {\n if ((pool as any).tokenPerBlock) {\n return true\n }\n return false\n}\n\nexport function isUpgradedPool(pool: SerializedPool): pool is UpgradedSerializedPool {\n if ((pool as any).tokenPerSecond) {\n return true\n }\n return false\n}\n","import BigNumber from 'bignumber.js'\n\nimport { BLOCKS_PER_YEAR, SECONDS_IN_YEAR } from '../constants'\n\n/**\n * Get the APR value in %\n * @param stakingTokenPrice Token price in the same quote currency\n * @param rewardTokenPrice Token price in the same quote currency\n * @param totalStaked Total amount of stakingToken in the pool\n * @param tokenPerBlock Amount of new cake allocated to the pool for each new block\n * @returns Null if the APR is NaN or infinite.\n */\nexport const getPoolAprByTokenPerBlock = (\n stakingTokenPrice: number,\n rewardTokenPrice: number,\n totalStaked: number,\n tokenPerBlock: number,\n): number | null => {\n const totalRewardPricePerYear = new BigNumber(rewardTokenPrice).times(tokenPerBlock).times(BLOCKS_PER_YEAR)\n const totalStakingTokenInPool = new BigNumber(stakingTokenPrice).times(totalStaked)\n const apr = totalRewardPricePerYear.div(totalStakingTokenInPool).times(100)\n return apr.isNaN() || !apr.isFinite() ? null : apr.toNumber()\n}\n\nexport const getPoolAprByTokenPerSecond = (\n stakingTokenPrice: number,\n rewardTokenPrice: number,\n totalStaked: number,\n tokenPerSecond: number,\n): number | null => {\n const totalRewardPricePerYear = new BigNumber(rewardTokenPrice).times(tokenPerSecond).times(SECONDS_IN_YEAR)\n const totalStakingTokenInPool = new BigNumber(stakingTokenPrice).times(totalStaked)\n const apr = totalRewardPricePerYear.div(totalStakingTokenInPool).times(100)\n return apr.isNaN() || !apr.isFinite() ? null : apr.toNumber()\n}\n","import { ChainId } from '@pancakeswap/chains'\nimport { Account, Address, Chain, GetContractReturnType, PublicClient, WalletClient, getContract } from 'viem'\n\nimport { smartChefABI } from '../abis/ISmartChef'\nimport { sousChefBnbABI } from '../abis/ISousChefBNB'\nimport { sousChefV2ABI } from '../abis/ISousChefV2'\nimport { getPoolsConfig } from '../constants'\nimport { PoolCategory } from '../types'\nimport { isLegacyPool } from './isLegacyPool'\n\ninterface Params {\n chainId?: ChainId\n sousId: number\n signer?: any\n publicClient?: any\n}\n\ntype GetContractReturnType_<TAbi extends readonly unknown[]> = GetContractReturnType<TAbi, any, any> & {\n abi: TAbi\n address: Address\n account?: Account\n chain?: Chain\n}\n\nexport function getSousChefBNBContract({\n address,\n signer,\n publicClient,\n}: {\n address: Address\n signer?: WalletClient\n publicClient?: PublicClient\n}): GetContractReturnType_<typeof sousChefBnbABI> {\n return {\n ...getContract({\n abi: sousChefBnbABI,\n address,\n client: {\n public: publicClient as PublicClient,\n wallet: signer,\n },\n }),\n abi: sousChefBnbABI,\n address,\n account: signer?.account,\n chain: signer?.chain,\n }\n}\n\nexport function getSousChefV2Contract({\n address,\n signer,\n publicClient,\n}: {\n address: Address\n signer?: WalletClient\n publicClient?: PublicClient\n}): GetContractReturnType_<typeof sousChefV2ABI> {\n return {\n ...getContract({\n abi: sousChefV2ABI,\n address,\n client: {\n public: publicClient as PublicClient,\n wallet: signer,\n },\n }),\n abi: sousChefV2ABI,\n address,\n account: signer?.account,\n chain: signer?.chain,\n }\n}\n\nexport function getSmartChefChefV2Contract({\n address,\n signer,\n publicClient,\n}: {\n address: Address\n signer?: WalletClient\n publicClient?: PublicClient\n}): GetContractReturnType_<typeof smartChefABI> {\n return {\n ...getContract({\n abi: smartChefABI,\n address,\n client: {\n public: publicClient as PublicClient,\n wallet: signer,\n },\n }),\n abi: smartChefABI,\n address,\n account: signer?.account,\n chain: signer?.chain,\n }\n}\n\nexport async function getPoolContractBySousId({ chainId, sousId, signer, publicClient }: Params): Promise<any | null> {\n if (!chainId) {\n return null\n }\n const pools = await getPoolsConfig(chainId)\n const pool = pools?.find((p) => p.sousId === Number(sousId))\n if (!pool) {\n return null\n }\n const { contractAddress } = pool\n if (isLegacyPool(pool)) {\n if (pool.poolCategory === PoolCategory.BINANCE) {\n return getSousChefBNBContract({ address: contractAddress, signer, publicClient })\n }\n return getSousChefV2Contract({ address: contractAddress, signer, publicClient })\n }\n return getSmartChefChefV2Contract({ address: contractAddress, signer, publicClient })\n}\n","export const sousChefBnbABI = [\n {\n inputs: [],\n name: 'WBNB',\n outputs: [{ internalType: 'address', name: '', type: 'address' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'adminAddress',\n outputs: [{ internalType: 'address', name: '', type: 'address' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'bonusEndBlock',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n { inputs: [], name: 'deposit', outputs: [], stateMutability: 'payable', type: 'function' },\n {\n inputs: [{ internalType: 'uint256', name: '_amount', type: 'uint256' }],\n name: 'emergencyRewardWithdraw',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n { inputs: [], name: 'emergencyWithdraw', outputs: [], stateMutability: 'nonpayable', type: 'function' },\n {\n inputs: [\n { internalType: 'uint256', name: '_from', type: 'uint256' },\n { internalType: 'uint256', name: '_to', type: 'uint256' },\n ],\n name: 'getMultiplier',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'limitAmount',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n { inputs: [], name: 'massUpdatePools', outputs: [], stateMutability: 'nonpayable', type: 'function' },\n {\n inputs: [],\n name: 'owner',\n outputs: [{ internalType: 'address', name: '', type: 'address' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'address', name: '_user', type: 'address' }],\n name: 'pendingReward',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n name: 'poolInfo',\n outputs: [\n { internalType: 'contract IBEP20', name: 'lpToken', type: 'address' },\n { internalType: 'uint256', name: 'allocPoint', type: 'uint256' },\n { internalType: 'uint256', name: 'lastRewardBlock', type: 'uint256' },\n { internalType: 'uint256', name: 'accCakePerShare', type: 'uint256' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'address', name: '_blacklistAddress', type: 'address' }],\n name: 'removeBlackList',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n { inputs: [], name: 'renounceOwnership', outputs: [], stateMutability: 'nonpayable', type: 'function' },\n {\n inputs: [],\n name: 'rewardPerBlock',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'rewardToken',\n outputs: [{ internalType: 'contract IBEP20', name: '', type: 'address' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'address', name: '_adminAddress', type: 'address' }],\n name: 'setAdmin',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'address', name: '_blacklistAddress', type: 'address' }],\n name: 'setBlackList',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'uint256', name: '_amount', type: 'uint256' }],\n name: 'setLimitAmount',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'startBlock',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'totalAllocPoint',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'address', name: 'newOwner', type: 'address' }],\n name: 'transferOwnership',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'uint256', name: '_pid', type: 'uint256' }],\n name: 'updatePool',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'address', name: '', type: 'address' }],\n name: 'userInfo',\n outputs: [\n { internalType: 'uint256', name: 'amount', type: 'uint256' },\n { internalType: 'uint256', name: 'rewardDebt', type: 'uint256' },\n { internalType: 'bool', name: 'inBlackList', type: 'bool' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'uint256', name: '_amount', type: 'uint256' }],\n name: 'withdraw',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n { stateMutability: 'payable', type: 'receive' },\n] as const\n","import { ChainId } from '@pancakeswap/chains'\nimport { getBoostedPoolsConfig } from '../../constants/boostedPools'\n\nexport const checkIsBoostedPool = (contract: string, chainId: ChainId): boolean => {\n const list = getBoostedPoolsConfig(chainId)\n const isBoosted = list?.find((i) => i?.contractAddress?.toLowerCase() === contract.toLowerCase())\n\n return isBoosted !== undefined\n}\n","import { ChainId } from '@pancakeswap/chains'\nimport BigNumber from 'bignumber.js'\nimport { Address, PublicClient } from 'viem'\n\nconst WEEK = 7\nconst YEAR = 365\nconst API_URL = 'https://perp.pancakeswap.finance/bapi/futures/v1/public/future/apx/fee/info?chain='\n\nconst CONTRACT_ADDRESS: Record<number, Address> = {\n [ChainId.OPBNB]: '0x5A5454A6030FB50ceb3eb78977D140198A27be5e',\n [ChainId.ARBITRUM_ONE]: '0xB3879E95a4B8e3eE570c232B19d520821F540E48',\n}\n\nconst CHAIN_NAME_MAP: Record<number, string> = {\n [ChainId.OPBNB]: 'OPBNB',\n [ChainId.ARBITRUM_ONE]: 'ARB',\n}\n\nexport const fetchAlpBoostedPoolApr = async (client: PublicClient, chainId: ChainId) => {\n try {\n const [totalValue] = await client.multicall({\n contracts: [\n {\n abi: [\n {\n inputs: [],\n name: 'totalValue',\n outputs: [\n {\n components: [\n { internalType: 'address', name: 'tokenAddress', type: 'address' },\n { internalType: 'int256', name: 'value', type: 'int256' },\n { internalType: 'uint8', name: 'decimals', type: 'uint8' },\n { internalType: 'int256', name: 'valueUsd', type: 'int256' },\n { internalType: 'uint16', name: 'targetWeight', type: 'uint16' },\n { internalType: 'uint16', name: 'feeBasisPoints', type: 'uint16' },\n { internalType: 'uint16', name: 'taxBasisPoints', type: 'uint16' },\n { internalType: 'bool', name: 'dynamicFee', type: 'bool' },\n ],\n internalType: 'struct IVault.LpItem[]',\n name: 'lpItems',\n type: 'tuple[]',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n ] as const,\n address: CONTRACT_ADDRESS?.[chainId],\n functionName: 'totalValue',\n },\n ],\n allowFailure: false,\n })\n\n const totalValueUsd = totalValue\n .map((i) => new BigNumber(i.valueUsd.toString()).div(1e18).toNumber())\n .reduce((a, b) => a + b, 0)\n\n const response = await fetch(`${API_URL}${CHAIN_NAME_MAP[chainId]}`)\n const result = await response.json()\n\n const { alpFundingFee, alpTradingFee, alpLipFee } = result.data\n const apr = new BigNumber(alpFundingFee).plus(alpTradingFee).plus(alpLipFee)\n const totalApr = apr.div(totalValueUsd.toString()).div(WEEK)\n\n const apy = totalApr.plus(1).exponentiatedBy(YEAR).minus(1).times(100)\n return apy.toNumber()\n } catch (error) {\n console.info('Fetch ALP boosted fee error: ', error)\n return 0\n }\n}\n","import { Address, PublicClient } from 'viem'\nimport { getBoostedPoolConfig } from '../../../constants/boostedPools'\nimport { BoosterType } from '../types'\nimport { fetchAlpBoostedPoolApr } from './fetchAlpBoostedPoolApr'\n\ninterface GetBoostedPoolApr {\n client: PublicClient\n contractAddress: Address\n chainId: number | undefined\n}\n\nexport const getBoostedPoolApr = async ({ client, contractAddress, chainId }: GetBoostedPoolApr): Promise<number> => {\n const pool = chainId && getBoostedPoolConfig(chainId, contractAddress)\n\n if (!contractAddress || !chainId || !pool) {\n return 0\n }\n\n // ALP pools\n if (pool?.boosterType === BoosterType.ALP) {\n const result = await fetchAlpBoostedPoolApr(client, chainId)\n return result\n }\n\n return 0\n}\n","import { ChainId } from '@pancakeswap/chains'\nimport BigNumber from 'bignumber.js'\nimport fromPairs from 'lodash/fromPairs'\nimport uniq from 'lodash/uniq'\nimport { Address, erc20Abi } from 'viem'\nimport { sousChefABI } from '../abis/ISousChef'\nimport { getPoolsConfig } from '../constants'\nimport { OnChainProvider, SerializedPool } from '../types'\n\n// Pool 0, Cake / Cake is a different kind of contract (master chef)\n// BNB pools use the native BNB token (wrapping ? unwrapping is done at the contract level)\nconst getPoolsFactory = (filter: (pool: SerializedPool) => boolean) => async (chainId: ChainId) => {\n const poolsConfig = await getPoolsConfig(chainId)\n if (!poolsConfig) {\n throw new Error(`Unable to get pools config on chain ${chainId}`)\n }\n return poolsConfig.filter(filter)\n}\nconst getNonBnbPools = getPoolsFactory((pool) => pool.stakingToken.symbol !== 'BNB')\nconst getBnbPools = getPoolsFactory((pool) => pool.stakingToken.symbol === 'BNB')\nconst getNonMasterPools = getPoolsFactory((pool) => pool.sousId !== 0)\n\ninterface FetchUserDataParams {\n account: string\n chainId: ChainId\n provider: OnChainProvider\n}\n\nexport const fetchPoolsAllowance = async ({ account, chainId, provider }: FetchUserDataParams) => {\n const nonBnbPools = await getNonBnbPools(chainId)\n\n const client = provider({ chainId })\n const allowances = await client.multicall({\n contracts: nonBnbPools.map(\n ({ contractAddress, stakingToken }) =>\n ({\n address: stakingToken.address,\n abi: erc20Abi,\n functionName: 'allowance',\n args: [account as Address, contractAddress] as const,\n } as const),\n ),\n allowFailure: false,\n })\n return fromPairs(\n nonBnbPools.map((pool, index) => [pool.sousId, new BigNumber(allowances[index].toString()).toJSON()]),\n )\n}\n\nexport const fetchUserBalances = async ({ account, chainId, provider }: FetchUserDataParams) => {\n const nonBnbPools = await getNonBnbPools(chainId)\n const bnbPools = await getBnbPools(chainId)\n // Non BNB pools\n const tokens = uniq(nonBnbPools.map((pool) => pool.stakingToken.address))\n const client = provider({ chainId })\n\n const tokenBalance = await client.multicall({\n contracts: [\n {\n abi: [\n {\n inputs: [{ internalType: 'address', name: 'addr', type: 'address' }],\n name: 'getEthBalance',\n outputs: [{ internalType: 'uint256', name: 'balance', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n ] as const,\n address: '0xcA11bde05977b3631167028862bE2a173976CA11', // TODO: Here is multicall address, should extract addresses to a package for multi chain\n functionName: 'getEthBalance',\n args: [account as Address] as const,\n } as any,\n ...tokens.map(\n (token) =>\n ({\n abi: erc20Abi,\n address: token,\n functionName: 'balanceOf',\n args: [account] as const,\n } as const),\n ),\n ],\n })\n const [bnbBalance, ...tokenBalancesResults] = tokenBalance\n\n const tokenBalances = fromPairs(tokens.map((token, index) => [token, tokenBalancesResults[index].result as bigint]))\n\n const poolTokenBalances = fromPairs(\n nonBnbPools\n .map<[number, string] | null>((pool) => {\n if (!tokenBalances[pool.stakingToken.address]) return null\n return [pool.sousId, new BigNumber(tokenBalances[pool.stakingToken.address].toString()).toJSON()]\n })\n .filter((p): p is [number, string] => Boolean(p)),\n )\n\n // BNB pools\n const bnbBalanceJson = new BigNumber((bnbBalance.result as bigint)?.toString()).toJSON()\n const bnbBalances = fromPairs(bnbPools.map((pool) => [pool.sousId, bnbBalanceJson]))\n\n return { ...poolTokenBalances, ...bnbBalances }\n}\n\nexport const fetchUserStakeBalances = async ({ account, chainId, provider }: FetchUserDataParams) => {\n const nonMasterPools = await getNonMasterPools(chainId)\n\n const client = provider({ chainId })\n const userInfo = await client.multicall({\n contracts: nonMasterPools.map(\n ({ contractAddress }) =>\n ({\n abi: sousChefABI.filter((r) => r.name === 'userInfo'),\n address: contractAddress,\n functionName: 'userInfo',\n args: [account as Address] as const,\n } as const),\n ),\n allowFailure: false,\n })\n\n return fromPairs(\n nonMasterPools.map((pool, index) => [pool.sousId, new BigNumber(userInfo[index][0].toString()).toJSON()]),\n )\n}\n\nexport const fetchUserPendingRewards = async ({ account, chainId, provider }: FetchUserDataParams) => {\n const nonMasterPools = await getNonMasterPools(chainId)\n\n const client = provider({ chainId })\n const res = await client.multicall({\n contracts: nonMasterPools.map(\n ({ contractAddress }) =>\n ({\n abi: sousChefABI.filter((r) => r.name === 'pendingReward'),\n address: contractAddress,\n functionName: 'pendingReward',\n args: [account as Address] as const,\n } as const),\n ),\n allowFailure: false,\n })\n return fromPairs(nonMasterPools.map((pool, index) => [pool.sousId, new BigNumber(res[index].toString()).toJSON()]))\n}\n","import BigNumber from 'bignumber.js'\nimport { BIG_ZERO } from '@pancakeswap/utils/bigNumber'\nimport { ChainId } from '@pancakeswap/chains'\nimport { CAKE } from '@pancakeswap/tokens'\nimport { Address } from 'viem'\n\nimport { cakeVaultV2ABI } from '../abis/ICakeVaultV2'\nimport { OnChainProvider } from '../types'\nimport { getCakeFlexibleSideVaultAddress, getCakeVaultAddress } from './getAddresses'\n\ninterface Params {\n cakeVaultAddress?: Address\n chainId: ChainId\n provider: OnChainProvider\n}\n\nconst balanceOfAbi = [\n {\n inputs: [{ internalType: 'address', name: 'account', type: 'address' }],\n name: 'balanceOf',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n] as const\n\nexport const fetchPublicVaultData = async ({\n chainId,\n cakeVaultAddress = getCakeVaultAddress(chainId),\n provider,\n}: Params) => {\n try {\n const client = provider({ chainId })\n\n const [sharePrice, shares, totalLockedAmount, totalCakeInVault] = await client.multicall({\n contracts: [\n {\n abi: cakeVaultV2ABI,\n address: cakeVaultAddress,\n functionName: 'getPricePerFullShare',\n },\n {\n abi: cakeVaultV2ABI,\n address: cakeVaultAddress,\n functionName: 'totalShares',\n },\n {\n abi: cakeVaultV2ABI,\n address: cakeVaultAddress,\n functionName: 'totalLockedAmount',\n },\n {\n abi: balanceOfAbi,\n address: CAKE[ChainId.BSC].address,\n functionName: 'balanceOf',\n args: [cakeVaultAddress],\n },\n ],\n allowFailure: true,\n })\n\n const totalSharesAsBigNumber =\n shares.status === 'success' && shares.result ? new BigNumber(shares.result.toString()) : BIG_ZERO\n const totalLockedAmountAsBigNumber =\n totalLockedAmount.status === 'success' && totalLockedAmount.result\n ? new BigNumber(totalLockedAmount.result.toString())\n : BIG_ZERO\n const sharePriceAsBigNumber =\n sharePrice.status === 'success' && sharePrice.result ? new BigNumber(sharePrice.result.toString()) : BIG_ZERO\n\n return {\n totalShares: totalSharesAsBigNumber.toJSON(),\n totalLockedAmount: totalLockedAmountAsBigNumber.toJSON(),\n pricePerFullShare: sharePriceAsBigNumber.toJSON(),\n totalCakeInVault: totalCakeInVault.result ? new BigNumber(totalCakeInVault.result.toString()).toJSON() : '0',\n }\n } catch (error) {\n return {\n totalShares: null,\n totalLockedAmount: null,\n pricePerFullShare: null,\n totalCakeInVault: null,\n }\n }\n}\n\nexport const fetchPublicFlexibleSideVaultData = async ({\n chainId,\n cakeVaultAddress = getCakeFlexibleSideVaultAddress(chainId),\n provider,\n}: Params) => {\n try {\n const client = provider({ chainId })\n\n const [sharePrice, shares, totalCakeInVault] = await client.multicall({\n contracts: [\n {\n abi: cakeVaultV2ABI,\n address: cakeVaultAddress,\n functionName: 'getPricePerFullShare',\n },\n {\n abi: cakeVaultV2ABI,\n address: cakeVaultAddress,\n functionName: 'totalShares',\n },\n {\n abi: balanceOfAbi,\n address: CAKE[ChainId.BSC].address,\n functionName: 'balanceOf',\n args: [cakeVaultAddress],\n },\n ],\n allowFailure: true,\n })\n\n const totalSharesAsBigNumber = shares.status === 'success' ? new BigNumber(shares.result.toString()) : BIG_ZERO\n const sharePriceAsBigNumber =\n sharePrice.status === 'success' ? new BigNumber(sharePrice.result.toString()) : BIG_ZERO\n return {\n totalShares: totalSharesAsBigNumber.toJSON(),\n pricePerFullShare: sharePriceAsBigNumber.toJSON(),\n totalCakeInVault: new BigNumber((totalCakeInVault.result || '0').toString()).toJSON(),\n }\n } catch (error) {\n return {\n totalShares: null,\n pricePerFullShare: null,\n totalCakeInVault: null,\n }\n }\n}\n\nexport const fetchVaultFees = async ({\n chainId,\n cakeVaultAddress = getCakeVaultAddress(chainId),\n provider,\n}: Params) => {\n try {\n const client = provider({ chainId })\n\n const [performanceFee, withdrawalFee, withdrawalFeePeriod] = await client.multicall({\n contracts: [\n {\n abi: cakeVaultV2ABI,\n address: cakeVaultAddress,\n functionName: 'performanceFee',\n },\n {\n abi: cakeVaultV2ABI,\n address: cakeVaultAddress,\n functionName: 'withdrawFee',\n },\n {\n abi: cakeVaultV2ABI,\n address: cakeVaultAddress,\n functionName: 'withdrawFeePeriod',\n },\n ],\n allowFailure: false,\n })\n\n return {\n performanceFee: Number(performanceFee),\n withdrawalFee: Number(withdrawalFee),\n withdrawalFeePeriod: Number(withdrawalFeePeriod),\n }\n } catch (error) {\n return {\n performanceFee: null,\n withdrawalFee: null,\n withdrawalFeePeriod: null,\n }\n }\n}\n","export const cakeVaultV2ABI = [\n {\n inputs: [],\n name: 'BOOST_WEIGHT',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'BOOST_WEIGHT_LIMIT',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'DURATION_FACTOR',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'DURATION_FACTOR_OVERDUE',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'MAX_CALL_FEE',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'MAX_LOCK_DURATION',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'MAX_LOCK_DURATION_LIMIT',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'MAX_PERFORMANCE_FEE',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'MAX_WITHDRAW_FEE',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'MAX_WITHDRAW_FEE_PERIOD',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'MIN_DEPOSIT_AMOUNT',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'MIN_LOCK_DURATION',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'MIN_WITHDRAW_AMOUNT',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'PRECISION_FACTOR',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'PRECISION_FACTOR_SHARE',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'UNLOCK_FREE_DURATION',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'admin',\n outputs: [{ internalType: 'address', name: '', type: 'address' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'available',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'balanceOf',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'boostContract',\n outputs: [{ internalType: 'address', name: '', type: 'address' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'cakePoolPID',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'address', name: '_user', type: 'address' }],\n name: 'calculateOverdueFee',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'address', name: '_user', type: 'address' }],\n name: 'calculatePerformanceFee',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'calculateTotalPendingCakeRewards',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'address', name: '_user', type: 'address' },\n { internalType: 'uint256', name: '_shares', type: 'uint256' },\n ],\n name: 'calculateWithdrawFee',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'uint256', name: '_amount', type: 'uint256' },\n { internalType: 'uint256', name: '_lockDuration', type: 'uint256' },\n ],\n name: 'deposit',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'address', name: '', type: 'address' }],\n name: 'freeFeeUsers',\n outputs: [{ internalType: 'bool', name: '', type: 'bool' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'getPricePerFullShare',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'address', name: '_token', type: 'address' }],\n name: 'inCaseTokensGetStuck',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'contract IERC20', name: 'dummyToken', type: 'address' }],\n name: 'init',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'lastHarvestedTime',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'masterchefV2',\n outputs: [{ internalType: 'contract IMasterChefV2', name: '', type: 'address' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'operator',\n outputs: [{ internalType: 'address', name: '', type: 'address' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'overdueFee',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'owner',\n outputs: [{ internalType: 'address', name: '', type: 'address' }],\n stateMutability: 'view',\n type: 'function',\n },\n { inputs: [], name: 'pause', outputs: [], stateMutability: 'nonpayable', type: 'function' },\n {\n inputs: [],\n name: 'paused',\n outputs: [{ internalType: 'bool', name: '', type: 'bool' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'performanceFee',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'performanceFeeContract',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n { inputs: [], name: 'renounceOwnership', outputs: [], stateMutability: 'nonpayable', type: 'function' },\n {\n inputs: [{ internalType: 'address', name: '_admin', type: 'address' }],\n name: 'setAdmin',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'address', name: '_boostContract', type: 'address' }],\n name: 'setBoostContract',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'uint256', name: '_boostWeight', type: 'uint256' }],\n name: 'setBoostWeight',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'uint256', name: '_durationFactor', type: 'uint256' }],\n name: 'setDurationFactor',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'uint256', name: '_durationFactorOverdue', type: 'uint256' }],\n name: 'setDurationFactorOverdue',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'address', name: '_user', type: 'address' },\n { internalType: 'bool', name: '_free', type: 'bool' },\n ],\n name: 'setFreeFeeUser',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'uint256', name: '_maxLockDuration', type: 'uint256' }],\n name: 'setMaxLockDuration',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'address', name: '_operator', type: 'address' }],\n name: 'setOperator',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'uint256', name: '_performanceFee', type: 'uint256' }],\n name: 'setPerformanceFee',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'uint256', name: '_performanceFeeContract', type: 'uint256' }],\n name: 'setPerformanceFeeContract',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'address', name: '_treasury', type: 'address' }],\n name: 'setTreasury',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'uint256', name: '_unlockFreeDuration', type: 'uint256' }],\n name: 'setUnlockFreeDuration',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'uint256', name: '_withdrawFee', type: 'uint256' }],\n name: 'setWithdrawFee',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'uint256', name: '_withdrawFeeContract', type: 'uint256' }],\n name: 'setWithdrawFeeContract',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'uint256', name: '_withdrawFeePeriod', type: 'uint256' }],\n name: 'setWithdrawFeePeriod',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'token',\n outputs: [{ internalType: 'contract IERC20', name: '', type: 'address' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'totalBoostDebt',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'totalLockedAmount',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'totalShares',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'address', name: 'newOwner', type: 'address' }],\n name: 'transferOwnership',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'treasury',\n outputs: [{ internalType: 'address', name: '', type: 'address' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'address', name: '_user', type: 'address' }],\n name: 'unlock',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n { inputs: [], name: 'unpause', outputs: [], stateMutability: 'nonpayable', type: 'function' },\n {\n inputs: [{ internalType: 'address', name: '', type: 'address' }],\n name: 'userInfo',\n outputs: [\n { internalType: 'uint256', name: 'shares', type: 'uint256' },\n { internalType: 'uint256', name: 'lastDepositedTime', type: 'uint256' },\n { internalType: 'uint256', name: 'cakeAtLastUserAction', type: 'uint256' },\n { internalType: 'uint256', name: 'lastUserActionTime', type: 'uint256' },\n { internalType: 'uint256', name: 'lockStartTime', type: 'uint256' },\n { internalType: 'uint256', name: 'lockEndTime', type: 'uint256' },\n { internalType: 'uint256', name: 'userBoostedShare', type: 'uint256' },\n { internalType: 'bool', name: 'locked', type: 'bool' },\n { internalType: 'uint256', name: 'lockedAmount', type: 'uint256' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'uint256', name: '_shares', type: 'uint256' }],\n name: 'withdraw',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n { inputs: [], name: 'withdrawAll', outputs: [], stateMutability: 'nonpayable', type: 'function' },\n {\n inputs: [{ internalType: 'uint256', name: '_amount', type: 'uint256' }],\n name: 'withdrawByAmount',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'withdrawFee',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'withdrawFeeContract',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'withdrawFeePeriod',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n] as const\n","import { ChainId } from '@pancakeswap/chains'\n\nimport { CAKE_FLEXIBLE_SIDE_VAULT, CAKE_VAULT } from '../constants/contracts'\nimport { getContractAddress } from '../utils'\n\nexport function getCakeFlexibleSideVaultAddress(chainId: ChainId) {\n return getContractAddress(CAKE_FLEXIBLE_SIDE_VAULT, chainId)\n}\n\nexport function getCakeVaultAddress(chainId: ChainId) {\n return getContractAddress(CAKE_VAULT, chainId)\n}\n","import BigNumber from 'bignumber.js'\nimport { ChainId } from '@pancakeswap/chains'\nimport { Address } from 'viem'\n\nimport { OnChainProvider, SerializedLockedVaultUser, SerializedVaultUser } from '../types'\nimport { cakeVaultV2ABI } from '../abis/ICakeVaultV2'\nimport { getCakeFlexibleSideVaultAddress, getCakeVaultAddress } from './getAddresses'\nimport { cakeFlexibleSideVaultV2ABI } from '../abis/ICakeFlexibleSideVaultV2'\n\ninterface Params {\n account: Address\n chainId: ChainId\n provider: OnChainProvider\n}\n\nexport const fetchVaultUser = async ({ account, chainId, provider }: Params): Promise<SerializedLockedVaultUser> => {\n try {\n const cakeVaultAddress = getCakeVaultAddress(chainId)\n\n const client = provider({ chainId })\n\n const [userContractResponse, currentPerformanceFee, currentOverdueFee] = await client.multicall({\n contracts: [\n {\n abi: cakeVaultV2ABI,\n address: cakeVaultAddress,\n functionName: 'userInfo',\n args: [account],\n },\n {\n abi: cakeVaultV2ABI,\n address: cakeVaultAddress,\n functionName: 'calculatePerformanceFee',\n args: [account],\n },\n {\n abi: cakeVaultV2ABI,\n address: cakeVaultAddress,\n functionName: 'calculateOverdueFee',\n args: [account],\n },\n ],\n allowFailure: false,\n })\n\n return {\n isLoading: false,\n userShares: new BigNumber(userContractResponse[0].toString()).toJSON(),\n lastDepositedTime: userContractResponse[1].toString(),\n lastUserActionTime: userContractResponse[3].toString(),\n cakeAtLastUserAction: new BigNumber(userContractResponse[2].toString()).toJSON(),\n userBoostedShare: new BigNumber(userContractResponse[6].toString()).toJSON(),\n locked: userContractResponse[7],\n lockEndTime: userContractResponse[5].toString(),\n lockStartTime: userContractResponse[4].toString(),\n lockedAmount: new BigNumber(userContractResponse[8].toString()).toJSON(),\n currentPerformanceFee: new BigNumber(currentPerformanceFee.toString()).toJSON(),\n currentOverdueFee: new BigNumber(currentOverdueFee.toString()).toJSON(),\n }\n } catch (error) {\n return {\n isLoading: true,\n userShares: '',\n lastDepositedTime: '',\n lastUserActionTime: '',\n cakeAtLastUserAction: '',\n userBoostedShare: '',\n lockEndTime: '',\n lockStartTime: '',\n locked: false,\n lockedAmount: '',\n currentPerformanceFee: '',\n currentOverdueFee: '',\n }\n }\n}\n\nexport const fetchFlexibleSideVaultUser = async ({\n account,\n chainId,\n provider,\n}: Params): Promise<SerializedVaultUser> => {\n try {\n const userContractResponse = await await provider({ chainId }).readContract({\n abi: cakeFlexibleSideVaultV2ABI,\n address: getCakeFlexibleSideVaultAddress(chainId),\n functionName: 'userInfo',\n args: [account],\n })\n return {\n isLoading: false,\n userShares: new BigNumber(userContractResponse[0].toString()).toJSON(),\n lastDepositedTime: userContractResponse[1].toString(),\n lastUserActionTime: userContractResponse[3].toString(),\n cakeAtLastUserAction: new BigNumber(userContractResponse[2].toString()).toJSON(),\n }\n } catch (error) {\n return {\n isLoading: true,\n userShares: '',\n lastDepositedTime: '',\n lastUserActionTime: '',\n cakeAtLastUserAction: '',\n }\n }\n}\n","export const cakeFlexibleSideVaultV2ABI = [\n {\n inputs: [],\n name: 'MAX_PERFORMANCE_FEE',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'MAX_WITHDRAW_AMOUNT_BOOSTER',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'MAX_WITHDRAW_FEE',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'MAX_WITHDRAW_FEE_PERIOD',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'MIN_DEPOSIT_AMOUNT',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'MIN_WITHDRAW_AMOUNT',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'MIN_WITHDRAW_AMOUNT_BOOSTER',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'admin',\n outputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'available',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'balanceOf',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'cakePool',\n outputs: [\n {\n internalType: 'contract ICakePool',\n name: '',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint256',\n name: '_amount',\n type: 'uint256',\n },\n ],\n name: 'deposit',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'emergencyWithdraw',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'getPricePerFullShare',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: '_token',\n type: 'address',\n },\n ],\n name: 'inCaseTokensGetStuck',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'owner',\n outputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'pause',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'paused',\n outputs: [\n {\n internalType: 'bool',\n name: '',\n type: 'bool',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'performanceFee',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'renounceOwnership',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: '_admin',\n type: 'address',\n },\n ],\n name: 'setAdmin',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint256',\n name: '_performanceFee',\n type: 'uint256',\n },\n ],\n name: 'setPerformanceFee',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: '_treasury',\n type: 'address',\n },\n ],\n name: 'setTreasury',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint256',\n name: '_withdrawAmountBooster',\n type: 'uint256',\n },\n ],\n name: 'setWithdrawAmountBooster',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint256',\n name: '_withdrawFee',\n type: 'uint256',\n },\n ],\n name: 'setWithdrawFee',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint256',\n name: '_withdrawFeePeriod',\n type: 'uint256',\n },\n ],\n name: 'setWithdrawFeePeriod',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'staking',\n outputs: [\n {\n internalType: 'bool',\n name: '',\n type: 'bool',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'token',\n outputs: [\n {\n internalType: 'contract IERC20',\n name: '',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'totalShares',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'newOwner',\n type: 'address',\n },\n ],\n name: 'transferOwnership',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'treasury',\n outputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'unpause',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n name: 'userInfo',\n outputs: [\n {\n internalType: 'uint256',\n name: 'shares',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'lastDepositedTime',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'cakeAtLastUserAction',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'lastUserActionTime',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint256',\n name: '_shares',\n type: 'uint256',\n },\n ],\n name: 'withdraw',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'withdrawAll',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'withdrawAmountBooster',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'withdrawFee',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'withdrawFeePeriod',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n] as const\n","export const cakeVaultV1ABI = [\n {\n inputs: [],\n name: 'withdrawAll',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'getPricePerFullShare',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'address', name: '', type: 'address' }],\n name: 'userInfo',\n outputs: [\n { internalType: 'uint256', name: 'shares', type: 'uint256' },\n {\n internalType: 'uint256',\n name: 'lastDepositedTime',\n type: 'uint256',\n },\n { internalType: 'uint256', name: 'cakeAtLastUserAction', type: 'uint256' },\n {\n internalType: 'uint256',\n name: 'lastUserActionTime',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'performanceFee',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n] as const\n"]}