{"version":3,"sources":["../../src/generated/types/accountState.ts","../../src/generated/types/authorityType.ts","../../src/generated/types/decryptableBalance.ts","../../src/generated/types/encryptedBalance.ts","../../src/generated/types/extension.ts","../../src/generated/types/extensionType.ts","../../src/generated/types/tokenMetadataField.ts","../../src/generated/types/transferFee.ts","../../src/generated/accounts/mint.ts","../../src/generated/accounts/multisig.ts","../../src/generated/accounts/token.ts","../../src/generated/shared/index.ts","../../src/generated/instructions/amountToUiAmount.ts","../../src/generated/instructions/applyConfidentialPendingBalance.ts","../../src/generated/instructions/approve.ts","../../src/generated/instructions/approveChecked.ts","../../src/generated/instructions/approveConfidentialTransferAccount.ts","../../src/generated/instructions/burn.ts","../../src/generated/instructions/burnChecked.ts","../../src/generated/instructions/closeAccount.ts","../../src/generated/instructions/confidentialDeposit.ts","../../src/generated/instructions/confidentialTransfer.ts","../../src/generated/instructions/confidentialTransferWithFee.ts","../../src/generated/instructions/confidentialWithdraw.ts","../../src/generated/instructions/configureConfidentialTransferAccount.ts","../../src/generated/pdas/associatedToken.ts","../../src/generated/instructions/createAssociatedToken.ts","../../src/generated/instructions/createAssociatedTokenIdempotent.ts","../../src/generated/instructions/createNativeMint.ts","../../src/generated/instructions/disableConfidentialCredits.ts","../../src/generated/instructions/disableCpiGuard.ts","../../src/generated/instructions/disableHarvestToMint.ts","../../src/generated/instructions/disableMemoTransfers.ts","../../src/generated/instructions/disableNonConfidentialCredits.ts","../../src/generated/instructions/emitTokenMetadata.ts","../../src/generated/instructions/emptyConfidentialTransferAccount.ts","../../src/generated/instructions/enableConfidentialCredits.ts","../../src/generated/instructions/enableCpiGuard.ts","../../src/generated/instructions/enableHarvestToMint.ts","../../src/generated/instructions/enableMemoTransfers.ts","../../src/generated/instructions/enableNonConfidentialCredits.ts","../../src/generated/instructions/freezeAccount.ts","../../src/generated/instructions/getAccountDataSize.ts","../../src/generated/instructions/harvestWithheldTokensToMint.ts","../../src/generated/instructions/harvestWithheldTokensToMintForConfidentialTransferFee.ts","../../src/generated/instructions/initializeAccount.ts","../../src/generated/instructions/initializeAccount2.ts","../../src/generated/instructions/initializeAccount3.ts","../../src/generated/instructions/initializeConfidentialTransferFee.ts","../../src/generated/instructions/initializeConfidentialTransferMint.ts","../../src/generated/instructions/initializeDefaultAccountState.ts","../../src/generated/instructions/initializeGroupMemberPointer.ts","../../src/generated/instructions/initializeGroupPointer.ts","../../src/generated/instructions/initializeImmutableOwner.ts","../../src/generated/instructions/initializeInterestBearingMint.ts","../../src/generated/instructions/initializeMetadataPointer.ts","../../src/generated/instructions/initializeMint.ts","../../src/generated/instructions/initializeMint2.ts","../../src/generated/instructions/initializeMintCloseAuthority.ts","../../src/generated/instructions/initializeMultisig.ts","../../src/generated/instructions/initializeMultisig2.ts","../../src/generated/instructions/initializeNonTransferableMint.ts","../../src/generated/instructions/initializePausableConfig.ts","../../src/generated/instructions/initializePermanentDelegate.ts","../../src/generated/instructions/initializePermissionedBurn.ts","../../src/generated/instructions/initializeScaledUiAmountMint.ts","../../src/generated/instructions/initializeTokenGroup.ts","../../src/generated/instructions/initializeTokenGroupMember.ts","../../src/generated/instructions/initializeTokenMetadata.ts","../../src/generated/instructions/initializeTransferFeeConfig.ts","../../src/generated/instructions/initializeTransferHook.ts","../../src/generated/instructions/mintTo.ts","../../src/generated/instructions/mintToChecked.ts","../../src/generated/instructions/pause.ts","../../src/generated/instructions/permissionedBurn.ts","../../src/generated/instructions/permissionedBurnChecked.ts","../../src/generated/instructions/reallocate.ts","../../src/generated/instructions/recoverNestedAssociatedToken.ts","../../src/generated/instructions/removeTokenMetadataKey.ts","../../src/generated/instructions/resume.ts","../../src/generated/instructions/revoke.ts","../../src/generated/instructions/setAuthority.ts","../../src/generated/instructions/setTransferFee.ts","../../src/generated/instructions/syncNative.ts","../../src/generated/instructions/thawAccount.ts","../../src/generated/instructions/transfer.ts","../../src/generated/instructions/transferChecked.ts","../../src/generated/instructions/transferCheckedWithFee.ts","../../src/generated/instructions/uiAmountToAmount.ts","../../src/generated/instructions/unwrapLamports.ts","../../src/generated/instructions/updateConfidentialTransferMint.ts","../../src/generated/instructions/updateDefaultAccountState.ts","../../src/generated/instructions/updateGroupMemberPointer.ts","../../src/generated/instructions/updateGroupPointer.ts","../../src/generated/instructions/updateMetadataPointer.ts","../../src/generated/instructions/updateMultiplierScaledUiMint.ts","../../src/generated/instructions/updateRateInterestBearingMint.ts","../../src/generated/instructions/updateTokenGroupMaxSize.ts","../../src/generated/instructions/updateTokenGroupUpdateAuthority.ts","../../src/generated/instructions/updateTokenMetadataField.ts","../../src/generated/instructions/updateTokenMetadataUpdateAuthority.ts","../../src/generated/instructions/updateTransferHook.ts","../../src/generated/instructions/withdrawExcessLamports.ts","../../src/generated/instructions/withdrawWithheldTokensFromAccounts.ts","../../src/generated/instructions/withdrawWithheldTokensFromAccountsForConfidentialTransferFee.ts","../../src/generated/instructions/withdrawWithheldTokensFromMint.ts","../../src/generated/instructions/withdrawWithheldTokensFromMintForConfidentialTransferFee.ts","../../src/generated/programs/associatedToken.ts","../../src/generated/programs/token2022.ts","../../src/generated/errors/associatedToken.ts","../../src/generated/errors/token2022.ts","../../src/amountToUiAmount.ts","../../src/getInitializeInstructionsForExtensions.ts","../../src/getTokenSize.ts","../../src/getMintSize.ts"],"names":["AccountState","AuthorityType","getEnumEncoder","getEnumDecoder","combineCodec","fixEncoderSize","getBytesEncoder","fixDecoderSize","getBytesDecoder","ExtensionType","getU16Encoder","getU16Decoder","getDiscriminatedUnionEncoder","getUnitEncoder","getStructEncoder","addEncoderSizePrefix","getUtf8Encoder","getU32Encoder","getDiscriminatedUnionDecoder","getUnitDecoder","getStructDecoder","addDecoderSizePrefix","getUtf8Decoder","getU32Decoder","getU64Encoder","getU64Decoder","getOptionEncoder","getAddressEncoder","getBooleanEncoder","getOptionDecoder","getAddressDecoder","getBooleanDecoder","getU8Encoder","getArrayEncoder","getU8Decoder","getArrayDecoder","decodeAccount","assertAccountExists","fetchEncodedAccount","assertAccountsExist","fetchEncodedAccounts","getHiddenPrefixEncoder","getConstantEncoder","getHiddenPrefixDecoder","getConstantDecoder","kitIsTransactionSigner","transformEncoder","AccountRole","getI8Encoder","getI8Decoder","getI16Encoder","getI16Decoder","none","getF64Encoder","getF64Decoder","AssociatedTokenInstruction","Token2022Account","Token2022Instruction","containsBytes","assertIsInstructionWithAccounts","isProgramError","extension","padLeftEncoder"],"mappings":";;;;AAiBO,IAAK,YAAA,qBAAAA,aAAAA,KAAL;AACH,EAAAA,aAAAA,CAAAA,aAAAA,CAAA,eAAA,CAAA,GAAA,CAAA,CAAA,GAAA,eAAA;AACA,EAAAA,aAAAA,CAAAA,aAAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,GAAA,aAAA;AACA,EAAAA,aAAAA,CAAAA,aAAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAA;AAHQ,EAAA,OAAAA,aAAAA;AAAA,CAAA,EAAA,YAAA,IAAA,EAAA;AAQL,SAAS,sBAAA,GAA6D;AACzE,EAAA,OAAO,eAAe,YAAY,CAAA;AACtC;AAEO,SAAS,sBAAA,GAAyD;AACrE,EAAA,OAAO,eAAe,YAAY,CAAA;AACtC;AAEO,SAAS,oBAAA,GAAuE;AACnF,EAAA,OAAO,YAAA,CAAa,sBAAA,EAAuB,EAAG,sBAAA,EAAwB,CAAA;AAC1E;AClBO,IAAK,aAAA,qBAAAC,cAAAA,KAAL;AACH,EAAAA,cAAAA,CAAAA,cAAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAA;AACA,EAAAA,cAAAA,CAAAA,cAAAA,CAAA,eAAA,CAAA,GAAA,CAAA,CAAA,GAAA,eAAA;AACA,EAAAA,cAAAA,CAAAA,cAAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAA;AACA,EAAAA,cAAAA,CAAAA,cAAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAA;AACA,EAAAA,cAAAA,CAAAA,cAAAA,CAAA,mBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,mBAAA;AACA,EAAAA,cAAAA,CAAAA,cAAAA,CAAA,kBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,kBAAA;AACA,EAAAA,cAAAA,CAAAA,cAAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAA;AACA,EAAAA,cAAAA,CAAAA,cAAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAA;AACA,EAAAA,cAAAA,CAAAA,cAAAA,CAAA,mBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,mBAAA;AACA,EAAAA,cAAAA,CAAAA,cAAAA,CAAA,0BAAA,CAAA,GAAA,CAAA,CAAA,GAAA,0BAAA;AACA,EAAAA,cAAAA,CAAAA,cAAAA,CAAA,uBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,uBAAA;AACA,EAAAA,cAAAA,CAAAA,cAAAA,CAAA,+BAAA,CAAA,GAAA,EAAA,CAAA,GAAA,+BAAA;AACA,EAAAA,cAAAA,CAAAA,cAAAA,CAAA,iBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,iBAAA;AACA,EAAAA,cAAAA,CAAAA,cAAAA,CAAA,cAAA,CAAA,GAAA,EAAA,CAAA,GAAA,cAAA;AACA,EAAAA,cAAAA,CAAAA,cAAAA,CAAA,oBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,oBAAA;AACA,EAAAA,cAAAA,CAAAA,cAAAA,CAAA,gBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,gBAAA;AACA,EAAAA,cAAAA,CAAAA,cAAAA,CAAA,OAAA,CAAA,GAAA,EAAA,CAAA,GAAA,OAAA;AACA,EAAAA,cAAAA,CAAAA,cAAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,kBAAA;AAlBQ,EAAA,OAAAA,cAAAA;AAAA,CAAA,EAAA,aAAA,IAAA,EAAA;AAuBL,SAAS,uBAAA,GAA+D;AAC3E,EAAA,OAAOC,eAAe,aAAa,CAAA;AACvC;AAEO,SAAS,uBAAA,GAA2D;AACvE,EAAA,OAAOC,eAAe,aAAa,CAAA;AACvC;AAEO,SAAS,qBAAA,GAA0E;AACtF,EAAA,OAAOC,YAAAA,CAAa,uBAAA,EAAwB,EAAG,uBAAA,EAAyB,CAAA;AAC5E;ACzBO,SAAS,4BAAA,GAAyE;AACrF,EAAA,OAAO,cAAA,CAAe,eAAA,EAAgB,EAAG,EAAE,CAAA;AAC/C;AAEO,SAAS,4BAAA,GAAqE;AACjF,EAAA,OAAO,cAAA,CAAe,eAAA,EAAgB,EAAG,EAAE,CAAA;AAC/C;AAEO,SAAS,0BAAA,GAAyF;AACrG,EAAA,OAAOA,YAAAA,CAAa,4BAAA,EAA6B,EAAG,4BAAA,EAA8B,CAAA;AACtF;ACVO,SAAS,0BAAA,GAAqE;AACjF,EAAA,OAAOC,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAA;AAC/C;AAEO,SAAS,0BAAA,GAAiE;AAC7E,EAAA,OAAOC,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAA;AAC/C;AAEO,SAAS,wBAAA,GAAmF;AAC/F,EAAA,OAAOJ,YAAAA,CAAa,0BAAA,EAA2B,EAAG,0BAAA,EAA4B,CAAA;AAClF;ACmdO,SAAS,mBAAA,GAA8C;AAC1D,EAAA,OAAO,4BAAA;AAAA,IACH;AAAA,MACI,CAAC,eAAA,EAAiB,cAAA,EAAgB,CAAA;AAAA,MAClC;AAAA,QACI,mBAAA;AAAA,QACA,oBAAA;AAAA,UACI,gBAAA,CAAiB;AAAA,YACb,CAAC,4BAAA,EAA8B,iBAAA,EAAmB,CAAA;AAAA,YAClD,CAAC,2BAAA,EAA6B,iBAAA,EAAmB,CAAA;AAAA,YACjD,CAAC,gBAAA,EAAkB,aAAA,EAAe,CAAA;AAAA,YAClC,CAAC,kBAAA,EAAoB,qBAAA,EAAuB,CAAA;AAAA,YAC5C,CAAC,kBAAA,EAAoB,qBAAA,EAAuB;AAAA,WAC/C,CAAA;AAAA,UACD,aAAA;AAAc;AAClB,OACJ;AAAA,MACA;AAAA,QACI,mBAAA;AAAA,QACA,oBAAA,CAAqB,gBAAA,CAAiB,CAAC,CAAC,gBAAA,EAAkB,aAAA,EAAe,CAAC,CAAC,CAAA,EAAG,aAAA,EAAe;AAAA,OACjG;AAAA,MACA;AAAA,QACI,oBAAA;AAAA,QACA,oBAAA,CAAqB,gBAAA,CAAiB,CAAC,CAAC,gBAAA,EAAkB,iBAAA,EAAmB,CAAC,CAAC,CAAA,EAAG,aAAA,EAAe;AAAA,OACrG;AAAA,MACA;AAAA,QACI,0BAAA;AAAA,QACA,oBAAA;AAAA,UACI,gBAAA,CAAiB;AAAA,YACb,CAAC,WAAA,EAAa,gBAAA,CAAiB,iBAAA,EAAkB,EAAG,EAAE,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,CAAC,CAAA;AAAA,YAC1F,CAAC,wBAAA,EAA0B,iBAAA,EAAmB,CAAA;AAAA,YAC9C;AAAA,cACI,sBAAA;AAAA,cACA,gBAAA,CAAiB,mBAAkB,EAAG,EAAE,QAAQ,IAAA,EAAM,SAAA,EAAW,UAAU;AAAA;AAC/E,WACH,CAAA;AAAA,UACD,aAAA;AAAc;AAClB,OACJ;AAAA,MACA;AAAA,QACI,6BAAA;AAAA,QACA,oBAAA;AAAA,UACI,gBAAA,CAAiB;AAAA,YACb,CAAC,UAAA,EAAY,iBAAA,EAAmB,CAAA;AAAA,YAChC,CAAC,eAAA,EAAiB,iBAAA,EAAmB,CAAA;AAAA,YACrC,CAAC,mBAAA,EAAqB,0BAAA,EAA4B,CAAA;AAAA,YAClD,CAAC,oBAAA,EAAsB,0BAAA,EAA4B,CAAA;AAAA,YACnD,CAAC,kBAAA,EAAoB,0BAAA,EAA4B,CAAA;AAAA,YACjD,CAAC,6BAAA,EAA+B,4BAAA,EAA8B,CAAA;AAAA,YAC9D,CAAC,0BAAA,EAA4B,iBAAA,EAAmB,CAAA;AAAA,YAChD,CAAC,6BAAA,EAA+B,iBAAA,EAAmB,CAAA;AAAA,YACnD,CAAC,6BAAA,EAA+B,aAAA,EAAe,CAAA;AAAA,YAC/C,CAAC,oCAAA,EAAsC,aAAA,EAAe,CAAA;AAAA,YACtD,CAAC,qCAAA,EAAuC,aAAA,EAAe,CAAA;AAAA,YACvD,CAAC,mCAAA,EAAqC,aAAA,EAAe;AAAA,WACxD,CAAA;AAAA,UACD,aAAA;AAAc;AAClB,OACJ;AAAA,MACA;AAAA,QACI,qBAAA;AAAA,QACA,oBAAA,CAAqB,gBAAA,CAAiB,CAAC,CAAC,OAAA,EAAS,sBAAA,EAAwB,CAAC,CAAC,CAAA,EAAG,aAAA,EAAe;AAAA,OACjG;AAAA,MACA,CAAC,kBAAkB,oBAAA,CAAqB,gBAAA,CAAiB,EAAE,CAAA,EAAG,aAAA,EAAe,CAAC,CAAA;AAAA,MAC9E;AAAA,QACI,cAAA;AAAA,QACA,oBAAA;AAAA,UACI,iBAAiB,CAAC,CAAC,gCAAgC,iBAAA,EAAmB,CAAC,CAAC,CAAA;AAAA,UACxE,aAAA;AAAc;AAClB,OACJ;AAAA,MACA,CAAC,mBAAmB,oBAAA,CAAqB,gBAAA,CAAiB,EAAE,CAAA,EAAG,aAAA,EAAe,CAAC,CAAA;AAAA,MAC/E;AAAA,QACI,uBAAA;AAAA,QACA,oBAAA;AAAA,UACI,gBAAA,CAAiB;AAAA,YACb,CAAC,eAAA,EAAiB,iBAAA,EAAmB,CAAA;AAAA,YACrC,CAAC,yBAAA,EAA2B,aAAA,EAAe,CAAA;AAAA,YAC3C,CAAC,sBAAA,EAAwB,aAAA,EAAe,CAAA;AAAA,YACxC,CAAC,qBAAA,EAAuB,aAAA,EAAe,CAAA;AAAA,YACvC,CAAC,aAAA,EAAe,aAAA,EAAe;AAAA,WAClC,CAAA;AAAA,UACD,aAAA;AAAc;AAClB,OACJ;AAAA,MACA,CAAC,UAAA,EAAY,oBAAA,CAAqB,gBAAA,CAAiB,CAAC,CAAC,SAAA,EAAW,iBAAA,EAAmB,CAAC,CAAC,CAAA,EAAG,aAAA,EAAe,CAAC,CAAA;AAAA,MACxG;AAAA,QACI,mBAAA;AAAA,QACA,oBAAA,CAAqB,gBAAA,CAAiB,CAAC,CAAC,UAAA,EAAY,iBAAA,EAAmB,CAAC,CAAC,CAAA,EAAG,aAAA,EAAe;AAAA,OAC/F;AAAA,MACA,CAAC,0BAA0B,oBAAA,CAAqB,gBAAA,CAAiB,EAAE,CAAA,EAAG,aAAA,EAAe,CAAC,CAAA;AAAA,MACtF;AAAA,QACI,cAAA;AAAA,QACA,oBAAA;AAAA,UACI,gBAAA,CAAiB;AAAA,YACb,CAAC,WAAA,EAAa,iBAAA,EAAmB,CAAA;AAAA,YACjC,CAAC,WAAA,EAAa,iBAAA,EAAmB;AAAA,WACpC,CAAA;AAAA,UACD,aAAA;AAAc;AAClB,OACJ;AAAA,MACA;AAAA,QACI,qBAAA;AAAA,QACA,oBAAA,CAAqB,gBAAA,CAAiB,CAAC,CAAC,cAAA,EAAgB,iBAAA,EAAmB,CAAC,CAAC,CAAA,EAAG,aAAA,EAAe;AAAA,OACnG;AAAA,MACA;AAAA,QACI,yBAAA;AAAA,QACA,oBAAA;AAAA,UACI,gBAAA,CAAiB;AAAA,YACb,CAAC,WAAA,EAAa,gBAAA,CAAiB,iBAAA,EAAkB,EAAG,EAAE,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,CAAC,CAAA;AAAA,YAC1F,CAAC,eAAA,EAAiB,iBAAA,EAAmB,CAAA;AAAA,YACrC,CAAC,sBAAA,EAAwB,iBAAA,EAAmB,CAAA;AAAA,YAC5C,CAAC,gBAAA,EAAkB,0BAAA,EAA4B;AAAA,WAClD,CAAA;AAAA,UACD,aAAA;AAAc;AAClB,OACJ;AAAA,MACA;AAAA,QACI,+BAAA;AAAA,QACA,oBAAA;AAAA,UACI,iBAAiB,CAAC,CAAC,kBAAkB,0BAAA,EAA4B,CAAC,CAAC,CAAA;AAAA,UACnE,aAAA;AAAc;AAClB,OACJ;AAAA,MACA;AAAA,QACI,iBAAA;AAAA,QACA,oBAAA;AAAA,UACI,gBAAA,CAAiB;AAAA,YACb,CAAC,WAAA,EAAa,gBAAA,CAAiB,iBAAA,EAAkB,EAAG,EAAE,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,CAAC,CAAA;AAAA,YAC1F;AAAA,cACI,iBAAA;AAAA,cACA,gBAAA,CAAiB,mBAAkB,EAAG,EAAE,QAAQ,IAAA,EAAM,SAAA,EAAW,UAAU;AAAA;AAC/E,WACH,CAAA;AAAA,UACD,aAAA;AAAc;AAClB,OACJ;AAAA,MACA;AAAA,QACI,eAAA;AAAA,QACA,oBAAA;AAAA,UACI,gBAAA,CAAiB;AAAA,YACb;AAAA,cACI,iBAAA;AAAA,cACA,gBAAA,CAAiB,mBAAkB,EAAG,EAAE,QAAQ,IAAA,EAAM,SAAA,EAAW,UAAU;AAAA,aAC/E;AAAA,YACA,CAAC,MAAA,EAAQ,iBAAA,EAAmB,CAAA;AAAA,YAC5B,CAAC,MAAA,EAAQ,oBAAA,CAAqB,gBAAe,EAAG,aAAA,EAAe,CAAC,CAAA;AAAA,YAChE,CAAC,QAAA,EAAU,oBAAA,CAAqB,gBAAe,EAAG,aAAA,EAAe,CAAC,CAAA;AAAA,YAClE,CAAC,KAAA,EAAO,oBAAA,CAAqB,gBAAe,EAAG,aAAA,EAAe,CAAC,CAAA;AAAA,YAC/D;AAAA,cACI,oBAAA;AAAA,cACA,aAAA;AAAA,gBACI,oBAAA,CAAqB,cAAA,EAAe,EAAG,aAAA,EAAe,CAAA;AAAA,gBACtD,oBAAA,CAAqB,cAAA,EAAe,EAAG,aAAA,EAAe;AAAA;AAC1D;AACJ,WACH,CAAA;AAAA,UACD,aAAA;AAAc;AAClB,OACJ;AAAA,MACA;AAAA,QACI,cAAA;AAAA,QACA,oBAAA;AAAA,UACI,gBAAA,CAAiB;AAAA,YACb,CAAC,WAAA,EAAa,gBAAA,CAAiB,iBAAA,EAAkB,EAAG,EAAE,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,CAAC,CAAA;AAAA,YAC1F,CAAC,cAAA,EAAgB,gBAAA,CAAiB,iBAAA,EAAkB,EAAG,EAAE,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,CAAC;AAAA,WAChG,CAAA;AAAA,UACD,aAAA;AAAc;AAClB,OACJ;AAAA,MACA;AAAA,QACI,YAAA;AAAA,QACA,oBAAA;AAAA,UACI,gBAAA,CAAiB;AAAA,YACb;AAAA,cACI,iBAAA;AAAA,cACA,gBAAA,CAAiB,mBAAkB,EAAG,EAAE,QAAQ,IAAA,EAAM,SAAA,EAAW,UAAU;AAAA,aAC/E;AAAA,YACA,CAAC,MAAA,EAAQ,iBAAA,EAAmB,CAAA;AAAA,YAC5B,CAAC,MAAA,EAAQ,aAAA,EAAe,CAAA;AAAA,YACxB,CAAC,SAAA,EAAW,aAAA,EAAe;AAAA,WAC9B,CAAA;AAAA,UACD,aAAA;AAAc;AAClB,OACJ;AAAA,MACA;AAAA,QACI,oBAAA;AAAA,QACA,oBAAA;AAAA,UACI,gBAAA,CAAiB;AAAA,YACb,CAAC,WAAA,EAAa,gBAAA,CAAiB,iBAAA,EAAkB,EAAG,EAAE,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,CAAC,CAAA;AAAA,YAC1F,CAAC,eAAA,EAAiB,gBAAA,CAAiB,iBAAA,EAAkB,EAAG,EAAE,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,CAAC;AAAA,WACjG,CAAA;AAAA,UACD,aAAA;AAAc;AAClB,OACJ;AAAA,MACA;AAAA,QACI,kBAAA;AAAA,QACA,oBAAA;AAAA,UACI,gBAAA,CAAiB;AAAA,YACb,CAAC,MAAA,EAAQ,iBAAA,EAAmB,CAAA;AAAA,YAC5B,CAAC,OAAA,EAAS,iBAAA,EAAmB,CAAA;AAAA,YAC7B,CAAC,cAAA,EAAgB,aAAA,EAAe;AAAA,WACnC,CAAA;AAAA,UACD,aAAA;AAAc;AAClB,OACJ;AAAA,MACA,CAAC,wBAAwB,oBAAA,CAAqB,gBAAA,CAAiB,EAAE,CAAA,EAAG,aAAA,EAAe,CAAC,CAAA;AAAA,MACpF;AAAA,QACI,sBAAA;AAAA,QACA,oBAAA;AAAA,UACI,gBAAA,CAAiB;AAAA,YACb,CAAC,WAAA,EAAa,iBAAA,EAAmB,CAAA;AAAA,YACjC,CAAC,YAAA,EAAc,aAAA,EAAe,CAAA;AAAA,YAC9B,CAAC,iCAAA,EAAmC,aAAA,EAAe,CAAA;AAAA,YACnD,CAAC,eAAA,EAAiB,aAAA,EAAe;AAAA,WACpC,CAAA;AAAA,UACD,aAAA;AAAc;AAClB,OACJ;AAAA,MACA;AAAA,QACI,gBAAA;AAAA,QACA,oBAAA;AAAA,UACI,gBAAA,CAAiB;AAAA,YACb,CAAC,WAAA,EAAa,gBAAA,CAAiB,iBAAA,EAAkB,EAAG,EAAE,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,CAAC,CAAA;AAAA,YAC1F,CAAC,QAAA,EAAU,iBAAA,EAAmB;AAAA,WACjC,CAAA;AAAA,UACD,aAAA;AAAc;AAClB,OACJ;AAAA,MACA,CAAC,mBAAmB,oBAAA,CAAqB,gBAAA,CAAiB,EAAE,CAAA,EAAG,aAAA,EAAe,CAAC,CAAA;AAAA,MAC/E;AAAA,QACI,kBAAA;AAAA,QACA,oBAAA;AAAA,UACI,gBAAA,CAAiB;AAAA,YACb,CAAC,WAAA,EAAa,gBAAA,CAAiB,iBAAA,EAAkB,EAAG,EAAE,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,CAAC;AAAA,WAC7F,CAAA;AAAA,UACD,aAAA;AAAc;AAClB;AACJ,KACJ;AAAA,IACA,EAAE,IAAA,EAAM,aAAA,EAAc;AAAE,GAC5B;AACJ;AAEO,SAAS,mBAAA,GAA0C;AACtD,EAAA,OAAO,4BAAA;AAAA,IACH;AAAA,MACI,CAAC,eAAA,EAAiB,cAAA,EAAgB,CAAA;AAAA,MAClC;AAAA,QACI,mBAAA;AAAA,QACA,oBAAA;AAAA,UACI,gBAAA,CAAiB;AAAA,YACb,CAAC,4BAAA,EAA8B,iBAAA,EAAmB,CAAA;AAAA,YAClD,CAAC,2BAAA,EAA6B,iBAAA,EAAmB,CAAA;AAAA,YACjD,CAAC,gBAAA,EAAkB,aAAA,EAAe,CAAA;AAAA,YAClC,CAAC,kBAAA,EAAoB,qBAAA,EAAuB,CAAA;AAAA,YAC5C,CAAC,kBAAA,EAAoB,qBAAA,EAAuB;AAAA,WAC/C,CAAA;AAAA,UACD,aAAA;AAAc;AAClB,OACJ;AAAA,MACA;AAAA,QACI,mBAAA;AAAA,QACA,oBAAA,CAAqB,gBAAA,CAAiB,CAAC,CAAC,gBAAA,EAAkB,aAAA,EAAe,CAAC,CAAC,CAAA,EAAG,aAAA,EAAe;AAAA,OACjG;AAAA,MACA;AAAA,QACI,oBAAA;AAAA,QACA,oBAAA,CAAqB,gBAAA,CAAiB,CAAC,CAAC,gBAAA,EAAkB,iBAAA,EAAmB,CAAC,CAAC,CAAA,EAAG,aAAA,EAAe;AAAA,OACrG;AAAA,MACA;AAAA,QACI,0BAAA;AAAA,QACA,oBAAA;AAAA,UACI,gBAAA,CAAiB;AAAA,YACb,CAAC,WAAA,EAAa,gBAAA,CAAiB,iBAAA,EAAkB,EAAG,EAAE,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,CAAC,CAAA;AAAA,YAC1F,CAAC,wBAAA,EAA0B,iBAAA,EAAmB,CAAA;AAAA,YAC9C;AAAA,cACI,sBAAA;AAAA,cACA,gBAAA,CAAiB,mBAAkB,EAAG,EAAE,QAAQ,IAAA,EAAM,SAAA,EAAW,UAAU;AAAA;AAC/E,WACH,CAAA;AAAA,UACD,aAAA;AAAc;AAClB,OACJ;AAAA,MACA;AAAA,QACI,6BAAA;AAAA,QACA,oBAAA;AAAA,UACI,gBAAA,CAAiB;AAAA,YACb,CAAC,UAAA,EAAY,iBAAA,EAAmB,CAAA;AAAA,YAChC,CAAC,eAAA,EAAiB,iBAAA,EAAmB,CAAA;AAAA,YACrC,CAAC,mBAAA,EAAqB,0BAAA,EAA4B,CAAA;AAAA,YAClD,CAAC,oBAAA,EAAsB,0BAAA,EAA4B,CAAA;AAAA,YACnD,CAAC,kBAAA,EAAoB,0BAAA,EAA4B,CAAA;AAAA,YACjD,CAAC,6BAAA,EAA+B,4BAAA,EAA8B,CAAA;AAAA,YAC9D,CAAC,0BAAA,EAA4B,iBAAA,EAAmB,CAAA;AAAA,YAChD,CAAC,6BAAA,EAA+B,iBAAA,EAAmB,CAAA;AAAA,YACnD,CAAC,6BAAA,EAA+B,aAAA,EAAe,CAAA;AAAA,YAC/C,CAAC,oCAAA,EAAsC,aAAA,EAAe,CAAA;AAAA,YACtD,CAAC,qCAAA,EAAuC,aAAA,EAAe,CAAA;AAAA,YACvD,CAAC,mCAAA,EAAqC,aAAA,EAAe;AAAA,WACxD,CAAA;AAAA,UACD,aAAA;AAAc;AAClB,OACJ;AAAA,MACA;AAAA,QACI,qBAAA;AAAA,QACA,oBAAA,CAAqB,gBAAA,CAAiB,CAAC,CAAC,OAAA,EAAS,sBAAA,EAAwB,CAAC,CAAC,CAAA,EAAG,aAAA,EAAe;AAAA,OACjG;AAAA,MACA,CAAC,kBAAkB,oBAAA,CAAqB,gBAAA,CAAiB,EAAE,CAAA,EAAG,aAAA,EAAe,CAAC,CAAA;AAAA,MAC9E;AAAA,QACI,cAAA;AAAA,QACA,oBAAA;AAAA,UACI,iBAAiB,CAAC,CAAC,gCAAgC,iBAAA,EAAmB,CAAC,CAAC,CAAA;AAAA,UACxE,aAAA;AAAc;AAClB,OACJ;AAAA,MACA,CAAC,mBAAmB,oBAAA,CAAqB,gBAAA,CAAiB,EAAE,CAAA,EAAG,aAAA,EAAe,CAAC,CAAA;AAAA,MAC/E;AAAA,QACI,uBAAA;AAAA,QACA,oBAAA;AAAA,UACI,gBAAA,CAAiB;AAAA,YACb,CAAC,eAAA,EAAiB,iBAAA,EAAmB,CAAA;AAAA,YACrC,CAAC,yBAAA,EAA2B,aAAA,EAAe,CAAA;AAAA,YAC3C,CAAC,sBAAA,EAAwB,aAAA,EAAe,CAAA;AAAA,YACxC,CAAC,qBAAA,EAAuB,aAAA,EAAe,CAAA;AAAA,YACvC,CAAC,aAAA,EAAe,aAAA,EAAe;AAAA,WAClC,CAAA;AAAA,UACD,aAAA;AAAc;AAClB,OACJ;AAAA,MACA,CAAC,UAAA,EAAY,oBAAA,CAAqB,gBAAA,CAAiB,CAAC,CAAC,SAAA,EAAW,iBAAA,EAAmB,CAAC,CAAC,CAAA,EAAG,aAAA,EAAe,CAAC,CAAA;AAAA,MACxG;AAAA,QACI,mBAAA;AAAA,QACA,oBAAA,CAAqB,gBAAA,CAAiB,CAAC,CAAC,UAAA,EAAY,iBAAA,EAAmB,CAAC,CAAC,CAAA,EAAG,aAAA,EAAe;AAAA,OAC/F;AAAA,MACA,CAAC,0BAA0B,oBAAA,CAAqB,gBAAA,CAAiB,EAAE,CAAA,EAAG,aAAA,EAAe,CAAC,CAAA;AAAA,MACtF;AAAA,QACI,cAAA;AAAA,QACA,oBAAA;AAAA,UACI,gBAAA,CAAiB;AAAA,YACb,CAAC,WAAA,EAAa,iBAAA,EAAmB,CAAA;AAAA,YACjC,CAAC,WAAA,EAAa,iBAAA,EAAmB;AAAA,WACpC,CAAA;AAAA,UACD,aAAA;AAAc;AAClB,OACJ;AAAA,MACA;AAAA,QACI,qBAAA;AAAA,QACA,oBAAA,CAAqB,gBAAA,CAAiB,CAAC,CAAC,cAAA,EAAgB,iBAAA,EAAmB,CAAC,CAAC,CAAA,EAAG,aAAA,EAAe;AAAA,OACnG;AAAA,MACA;AAAA,QACI,yBAAA;AAAA,QACA,oBAAA;AAAA,UACI,gBAAA,CAAiB;AAAA,YACb,CAAC,WAAA,EAAa,gBAAA,CAAiB,iBAAA,EAAkB,EAAG,EAAE,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,CAAC,CAAA;AAAA,YAC1F,CAAC,eAAA,EAAiB,iBAAA,EAAmB,CAAA;AAAA,YACrC,CAAC,sBAAA,EAAwB,iBAAA,EAAmB,CAAA;AAAA,YAC5C,CAAC,gBAAA,EAAkB,0BAAA,EAA4B;AAAA,WAClD,CAAA;AAAA,UACD,aAAA;AAAc;AAClB,OACJ;AAAA,MACA;AAAA,QACI,+BAAA;AAAA,QACA,oBAAA;AAAA,UACI,iBAAiB,CAAC,CAAC,kBAAkB,0BAAA,EAA4B,CAAC,CAAC,CAAA;AAAA,UACnE,aAAA;AAAc;AAClB,OACJ;AAAA,MACA;AAAA,QACI,iBAAA;AAAA,QACA,oBAAA;AAAA,UACI,gBAAA,CAAiB;AAAA,YACb,CAAC,WAAA,EAAa,gBAAA,CAAiB,iBAAA,EAAkB,EAAG,EAAE,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,CAAC,CAAA;AAAA,YAC1F;AAAA,cACI,iBAAA;AAAA,cACA,gBAAA,CAAiB,mBAAkB,EAAG,EAAE,QAAQ,IAAA,EAAM,SAAA,EAAW,UAAU;AAAA;AAC/E,WACH,CAAA;AAAA,UACD,aAAA;AAAc;AAClB,OACJ;AAAA,MACA;AAAA,QACI,eAAA;AAAA,QACA,oBAAA;AAAA,UACI,gBAAA,CAAiB;AAAA,YACb;AAAA,cACI,iBAAA;AAAA,cACA,gBAAA,CAAiB,mBAAkB,EAAG,EAAE,QAAQ,IAAA,EAAM,SAAA,EAAW,UAAU;AAAA,aAC/E;AAAA,YACA,CAAC,MAAA,EAAQ,iBAAA,EAAmB,CAAA;AAAA,YAC5B,CAAC,MAAA,EAAQ,oBAAA,CAAqB,gBAAe,EAAG,aAAA,EAAe,CAAC,CAAA;AAAA,YAChE,CAAC,QAAA,EAAU,oBAAA,CAAqB,gBAAe,EAAG,aAAA,EAAe,CAAC,CAAA;AAAA,YAClE,CAAC,KAAA,EAAO,oBAAA,CAAqB,gBAAe,EAAG,aAAA,EAAe,CAAC,CAAA;AAAA,YAC/D;AAAA,cACI,oBAAA;AAAA,cACA,aAAA;AAAA,gBACI,oBAAA,CAAqB,cAAA,EAAe,EAAG,aAAA,EAAe,CAAA;AAAA,gBACtD,oBAAA,CAAqB,cAAA,EAAe,EAAG,aAAA,EAAe;AAAA;AAC1D;AACJ,WACH,CAAA;AAAA,UACD,aAAA;AAAc;AAClB,OACJ;AAAA,MACA;AAAA,QACI,cAAA;AAAA,QACA,oBAAA;AAAA,UACI,gBAAA,CAAiB;AAAA,YACb,CAAC,WAAA,EAAa,gBAAA,CAAiB,iBAAA,EAAkB,EAAG,EAAE,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,CAAC,CAAA;AAAA,YAC1F,CAAC,cAAA,EAAgB,gBAAA,CAAiB,iBAAA,EAAkB,EAAG,EAAE,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,CAAC;AAAA,WAChG,CAAA;AAAA,UACD,aAAA;AAAc;AAClB,OACJ;AAAA,MACA;AAAA,QACI,YAAA;AAAA,QACA,oBAAA;AAAA,UACI,gBAAA,CAAiB;AAAA,YACb;AAAA,cACI,iBAAA;AAAA,cACA,gBAAA,CAAiB,mBAAkB,EAAG,EAAE,QAAQ,IAAA,EAAM,SAAA,EAAW,UAAU;AAAA,aAC/E;AAAA,YACA,CAAC,MAAA,EAAQ,iBAAA,EAAmB,CAAA;AAAA,YAC5B,CAAC,MAAA,EAAQ,aAAA,EAAe,CAAA;AAAA,YACxB,CAAC,SAAA,EAAW,aAAA,EAAe;AAAA,WAC9B,CAAA;AAAA,UACD,aAAA;AAAc;AAClB,OACJ;AAAA,MACA;AAAA,QACI,oBAAA;AAAA,QACA,oBAAA;AAAA,UACI,gBAAA,CAAiB;AAAA,YACb,CAAC,WAAA,EAAa,gBAAA,CAAiB,iBAAA,EAAkB,EAAG,EAAE,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,CAAC,CAAA;AAAA,YAC1F,CAAC,eAAA,EAAiB,gBAAA,CAAiB,iBAAA,EAAkB,EAAG,EAAE,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,CAAC;AAAA,WACjG,CAAA;AAAA,UACD,aAAA;AAAc;AAClB,OACJ;AAAA,MACA;AAAA,QACI,kBAAA;AAAA,QACA,oBAAA;AAAA,UACI,gBAAA,CAAiB;AAAA,YACb,CAAC,MAAA,EAAQ,iBAAA,EAAmB,CAAA;AAAA,YAC5B,CAAC,OAAA,EAAS,iBAAA,EAAmB,CAAA;AAAA,YAC7B,CAAC,cAAA,EAAgB,aAAA,EAAe;AAAA,WACnC,CAAA;AAAA,UACD,aAAA;AAAc;AAClB,OACJ;AAAA,MACA,CAAC,wBAAwB,oBAAA,CAAqB,gBAAA,CAAiB,EAAE,CAAA,EAAG,aAAA,EAAe,CAAC,CAAA;AAAA,MACpF;AAAA,QACI,sBAAA;AAAA,QACA,oBAAA;AAAA,UACI,gBAAA,CAAiB;AAAA,YACb,CAAC,WAAA,EAAa,iBAAA,EAAmB,CAAA;AAAA,YACjC,CAAC,YAAA,EAAc,aAAA,EAAe,CAAA;AAAA,YAC9B,CAAC,iCAAA,EAAmC,aAAA,EAAe,CAAA;AAAA,YACnD,CAAC,eAAA,EAAiB,aAAA,EAAe;AAAA,WACpC,CAAA;AAAA,UACD,aAAA;AAAc;AAClB,OACJ;AAAA,MACA;AAAA,QACI,gBAAA;AAAA,QACA,oBAAA;AAAA,UACI,gBAAA,CAAiB;AAAA,YACb,CAAC,WAAA,EAAa,gBAAA,CAAiB,iBAAA,EAAkB,EAAG,EAAE,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,CAAC,CAAA;AAAA,YAC1F,CAAC,QAAA,EAAU,iBAAA,EAAmB;AAAA,WACjC,CAAA;AAAA,UACD,aAAA;AAAc;AAClB,OACJ;AAAA,MACA,CAAC,mBAAmB,oBAAA,CAAqB,gBAAA,CAAiB,EAAE,CAAA,EAAG,aAAA,EAAe,CAAC,CAAA;AAAA,MAC/E;AAAA,QACI,kBAAA;AAAA,QACA,oBAAA;AAAA,UACI,gBAAA,CAAiB;AAAA,YACb,CAAC,WAAA,EAAa,gBAAA,CAAiB,iBAAA,EAAkB,EAAG,EAAE,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,CAAC;AAAA,WAC7F,CAAA;AAAA,UACD,aAAA;AAAc;AAClB;AACJ,KACJ;AAAA,IACA,EAAE,IAAA,EAAM,aAAA,EAAc;AAAE,GAC5B;AACJ;AAEO,SAAS,iBAAA,GAAqD;AACjE,EAAA,OAAOA,YAAAA,CAAa,mBAAA,EAAoB,EAAG,mBAAA,EAAqB,CAAA;AACpE;AAsHO,SAAS,SAAA,CAAmD,MAAS,IAAA,EAAa;AACrF,EAAA,OAAO,MAAM,OAAA,CAAQ,IAAI,CAAA,GAAI,EAAE,QAAQ,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAK,GAAI,EAAE,MAAA,EAAQ,IAAA,EAAM,GAAI,IAAA,IAAQ,EAAC,EAAG;AAClG;AAEO,SAAS,WAAA,CACZ,MACA,KAAA,EACkC;AAClC,EAAA,OAAO,MAAM,MAAA,KAAW,IAAA;AAC5B;ACvkCO,IAAK,aAAA,qBAAAK,cAAAA,KAAL;AACH,EAAAA,cAAAA,CAAAA,cAAAA,CAAA,eAAA,CAAA,GAAA,CAAA,CAAA,GAAA,eAAA;AACA,EAAAA,cAAAA,CAAAA,cAAAA,CAAA,mBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,mBAAA;AACA,EAAAA,cAAAA,CAAAA,cAAAA,CAAA,mBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,mBAAA;AACA,EAAAA,cAAAA,CAAAA,cAAAA,CAAA,oBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,oBAAA;AACA,EAAAA,cAAAA,CAAAA,cAAAA,CAAA,0BAAA,CAAA,GAAA,CAAA,CAAA,GAAA,0BAAA;AACA,EAAAA,cAAAA,CAAAA,cAAAA,CAAA,6BAAA,CAAA,GAAA,CAAA,CAAA,GAAA,6BAAA;AACA,EAAAA,cAAAA,CAAAA,cAAAA,CAAA,qBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,qBAAA;AACA,EAAAA,cAAAA,CAAAA,cAAAA,CAAA,gBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,gBAAA;AACA,EAAAA,cAAAA,CAAAA,cAAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAA;AACA,EAAAA,cAAAA,CAAAA,cAAAA,CAAA,iBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,iBAAA;AACA,EAAAA,cAAAA,CAAAA,cAAAA,CAAA,uBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,uBAAA;AACA,EAAAA,cAAAA,CAAAA,cAAAA,CAAA,UAAA,CAAA,GAAA,EAAA,CAAA,GAAA,UAAA;AACA,EAAAA,cAAAA,CAAAA,cAAAA,CAAA,mBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,mBAAA;AACA,EAAAA,cAAAA,CAAAA,cAAAA,CAAA,wBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,wBAAA;AACA,EAAAA,cAAAA,CAAAA,cAAAA,CAAA,cAAA,CAAA,GAAA,EAAA,CAAA,GAAA,cAAA;AACA,EAAAA,cAAAA,CAAAA,cAAAA,CAAA,qBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,qBAAA;AACA,EAAAA,cAAAA,CAAAA,cAAAA,CAAA,yBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,yBAAA;AACA,EAAAA,cAAAA,CAAAA,cAAAA,CAAA,+BAAA,CAAA,GAAA,EAAA,CAAA,GAAA,+BAAA;AACA,EAAAA,cAAAA,CAAAA,cAAAA,CAAA,sBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,sBAAA;AACA,EAAAA,cAAAA,CAAAA,cAAAA,CAAA,gBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,gBAAA;AACA,EAAAA,cAAAA,CAAAA,cAAAA,CAAA,iBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,iBAAA;AACA,EAAAA,cAAAA,CAAAA,cAAAA,CAAA,iBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,iBAAA;AACA,EAAAA,cAAAA,CAAAA,cAAAA,CAAA,eAAA,CAAA,GAAA,EAAA,CAAA,GAAA,eAAA;AACA,EAAAA,cAAAA,CAAAA,cAAAA,CAAA,cAAA,CAAA,GAAA,EAAA,CAAA,GAAA,cAAA;AACA,EAAAA,cAAAA,CAAAA,cAAAA,CAAA,YAAA,CAAA,GAAA,EAAA,CAAA,GAAA,YAAA;AACA,EAAAA,cAAAA,CAAAA,cAAAA,CAAA,oBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,oBAAA;AACA,EAAAA,cAAAA,CAAAA,cAAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,kBAAA;AA3BQ,EAAA,OAAAA,cAAAA;AAAA,CAAA,EAAA,aAAA,IAAA,EAAA;AAgCL,SAAS,uBAAA,GAA+D;AAC3E,EAAA,OAAOP,eAAe,aAAA,EAAe,EAAE,IAAA,EAAMQ,aAAAA,IAAiB,CAAA;AAClE;AAEO,SAAS,uBAAA,GAA2D;AACvE,EAAA,OAAOP,eAAe,aAAA,EAAe,EAAE,IAAA,EAAMQ,aAAAA,IAAiB,CAAA;AAClE;AAEO,SAAS,qBAAA,GAA0E;AACtF,EAAA,OAAOP,YAAAA,CAAa,uBAAA,EAAwB,EAAG,uBAAA,EAAyB,CAAA;AAC5E;AC1BO,SAAS,4BAAA,GAAgE;AAC5E,EAAA,OAAOQ,4BAAAA,CAA6B;AAAA,IAChC,CAAC,MAAA,EAAQC,cAAAA,EAAgB,CAAA;AAAA,IACzB,CAAC,QAAA,EAAUA,cAAAA,EAAgB,CAAA;AAAA,IAC3B,CAAC,KAAA,EAAOA,cAAAA,EAAgB,CAAA;AAAA,IACxB;AAAA,MACI,KAAA;AAAA,MACAC,gBAAAA,CAAiB,CAAC,CAAC,QAAA,EAAU,gBAAgB,CAACC,oBAAAA,CAAqBC,cAAAA,EAAe,EAAGC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;AAAA;AAC7G,GACH,CAAA;AACL;AAEO,SAAS,4BAAA,GAA4D;AACxE,EAAA,OAAOC,4BAAAA,CAA6B;AAAA,IAChC,CAAC,MAAA,EAAQC,cAAAA,EAAgB,CAAA;AAAA,IACzB,CAAC,QAAA,EAAUA,cAAAA,EAAgB,CAAA;AAAA,IAC3B,CAAC,KAAA,EAAOA,cAAAA,EAAgB,CAAA;AAAA,IACxB;AAAA,MACI,KAAA;AAAA,MACAC,gBAAAA,CAAiB,CAAC,CAAC,QAAA,EAAU,gBAAgB,CAACC,oBAAAA,CAAqBC,cAAAA,EAAe,EAAGC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;AAAA;AAC7G,GACH,CAAA;AACL;AAEO,SAAS,0BAAA,GAAgF;AAC5F,EAAA,OAAOnB,YAAAA,CAAa,4BAAA,EAA6B,EAAG,4BAAA,EAA8B,CAAA;AACtF;AAcO,SAAS,kBAAA,CAAqE,MAAS,IAAA,EAAa;AACvG,EAAA,OAAO,MAAM,OAAA,CAAQ,IAAI,CAAA,GAAI,EAAE,QAAQ,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAK,GAAI,EAAE,MAAA,EAAQ,IAAA,EAAM,GAAI,IAAA,IAAQ,EAAC,EAAG;AAClG;AAEO,SAAS,oBAAA,CACZ,MACA,KAAA,EAC2C;AAC3C,EAAA,OAAO,MAAM,MAAA,KAAW,IAAA;AAC5B;AC5CO,SAAS,qBAAA,GAA2D;AACvE,EAAA,OAAOU,gBAAAA,CAAiB;AAAA,IACpB,CAAC,OAAA,EAASU,aAAAA,EAAe,CAAA;AAAA,IACzB,CAAC,YAAA,EAAcA,aAAAA,EAAe,CAAA;AAAA,IAC9B,CAAC,wBAAA,EAA0Bd,aAAAA,EAAe;AAAA,GAC7C,CAAA;AACL;AAEO,SAAS,qBAAA,GAAuD;AACnE,EAAA,OAAOU,gBAAAA,CAAiB;AAAA,IACpB,CAAC,OAAA,EAASK,aAAAA,EAAe,CAAA;AAAA,IACzB,CAAC,YAAA,EAAcA,aAAAA,EAAe,CAAA;AAAA,IAC9B,CAAC,wBAAA,EAA0Bd,aAAAA,EAAe;AAAA,GAC7C,CAAA;AACL;AAEO,SAAS,mBAAA,GAAoE;AAChF,EAAA,OAAOP,YAAAA,CAAa,qBAAA,EAAsB,EAAG,qBAAA,EAAuB,CAAA;AACxE;;;AC2BO,SAAS,cAAA,GAAoC;AAChD,EAAA,OAAOU,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBY,gBAAAA,CAAiBC,iBAAAA,EAAkB,EAAG,EAAE,MAAA,EAAQV,aAAAA,EAAc,EAAG,SAAA,EAAW,QAAA,EAAU,CAAC,CAAA;AAAA,IACzG,CAAC,QAAA,EAAUO,aAAAA,EAAe,CAAA;AAAA,IAC1B,CAAC,UAAA,EAAY,YAAA,EAAc,CAAA;AAAA,IAC3B,CAAC,eAAA,EAAiBI,iBAAAA,EAAmB,CAAA;AAAA,IACrC,CAAC,iBAAA,EAAmBF,gBAAAA,CAAiBC,iBAAAA,EAAkB,EAAG,EAAE,MAAA,EAAQV,aAAAA,EAAc,EAAG,SAAA,EAAW,QAAA,EAAU,CAAC,CAAA;AAAA,IAC3G;AAAA,MACI,YAAA;AAAA,MACAS,gBAAAA;AAAA,QACI,sBAAA,CAAuB,gBAAgB,mBAAA,EAAoB,EAAG,EAAE,IAAA,EAAM,WAAA,EAAa,CAAA,EAAG;AAAA,UAClF,kBAAA,CAAmB,eAAe,YAAA,EAAa,EAAG,EAAE,CAAA,CAAE,MAAA,CAAO,CAAC,CAAC;AAAA,SAClE,CAAA;AAAA,QACD,EAAE,QAAQ,IAAA;AAAK;AACnB;AACJ,GACH,CAAA;AACL;AAGO,SAAS,cAAA,GAAgC;AAC5C,EAAA,OAAON,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBS,gBAAAA,CAAiBC,iBAAAA,EAAkB,EAAG,EAAE,MAAA,EAAQP,aAAAA,EAAc,EAAG,SAAA,EAAW,QAAA,EAAU,CAAC,CAAA;AAAA,IACzG,CAAC,QAAA,EAAUE,aAAAA,EAAe,CAAA;AAAA,IAC1B,CAAC,UAAA,EAAY,YAAA,EAAc,CAAA;AAAA,IAC3B,CAAC,eAAA,EAAiBM,iBAAAA,EAAmB,CAAA;AAAA,IACrC,CAAC,iBAAA,EAAmBF,gBAAAA,CAAiBC,iBAAAA,EAAkB,EAAG,EAAE,MAAA,EAAQP,aAAAA,EAAc,EAAG,SAAA,EAAW,QAAA,EAAU,CAAC,CAAA;AAAA,IAC3G;AAAA,MACI,YAAA;AAAA,MACAM,gBAAAA;AAAA,QACI,sBAAA,CAAuB,gBAAgB,mBAAA,EAAoB,EAAG,EAAE,IAAA,EAAM,WAAA,EAAa,CAAA,EAAG;AAAA,UAClF,kBAAA,CAAmB,eAAe,YAAA,EAAa,EAAG,EAAE,CAAA,CAAE,MAAA,CAAO,CAAC,CAAC;AAAA,SAClE,CAAA;AAAA,QACD,EAAE,QAAQ,IAAA;AAAK;AACnB;AACJ,GACH,CAAA;AACL;AAGO,SAAS,YAAA,GAAsC;AAClD,EAAA,OAAOzB,YAAAA,CAAa,cAAA,EAAe,EAAG,cAAA,EAAgB,CAAA;AAC1D;AAQO,SAAS,WACZ,cAAA,EACsD;AACtD,EAAA,OAAO,aAAA,CAAc,cAAA,EAAiD,cAAA,EAAgB,CAAA;AAC1F;AAEA,eAAsB,SAAA,CAClB,GAAA,EACA,OAAA,EACA,MAAA,EACgC;AAChC,EAAA,MAAM,YAAA,GAAe,MAAM,cAAA,CAAe,GAAA,EAAK,SAAS,MAAM,CAAA;AAC9D,EAAA,mBAAA,CAAoB,YAAY,CAAA;AAChC,EAAA,OAAO,YAAA;AACX;AAEA,eAAsB,cAAA,CAClB,GAAA,EACA,OAAA,EACA,MAAA,EACqC;AACrC,EAAA,MAAM,YAAA,GAAe,MAAM,mBAAA,CAAoB,GAAA,EAAK,SAAS,MAAM,CAAA;AACnE,EAAA,OAAO,WAAW,YAAY,CAAA;AAClC;AAEA,eAAsB,YAAA,CAClB,GAAA,EACA,SAAA,EACA,MAAA,EACwB;AACxB,EAAA,MAAM,aAAA,GAAgB,MAAM,iBAAA,CAAkB,GAAA,EAAK,WAAW,MAAM,CAAA;AACpE,EAAA,mBAAA,CAAoB,aAAa,CAAA;AACjC,EAAA,OAAO,aAAA;AACX;AAEA,eAAsB,iBAAA,CAClB,GAAA,EACA,SAAA,EACA,MAAA,EAC6B;AAC7B,EAAA,MAAM,aAAA,GAAgB,MAAM,oBAAA,CAAqB,GAAA,EAAK,WAAW,MAAM,CAAA;AACvE,EAAA,OAAO,aAAA,CAAc,GAAA,CAAI,CAAA,YAAA,KAAgB,UAAA,CAAW,YAAY,CAAC,CAAA;AACrE;ACnIO,SAAS,kBAAA,GAAqD;AACjE,EAAA,OAAOU,gBAAAA,CAAiB;AAAA,IACpB,CAAC,GAAA,EAAKkB,YAAAA,EAAc,CAAA;AAAA,IACpB,CAAC,GAAA,EAAKA,YAAAA,EAAc,CAAA;AAAA,IACpB,CAAC,eAAA,EAAiBJ,iBAAAA,EAAmB,CAAA;AAAA,IACrC,CAAC,WAAWK,eAAAA,CAAgBN,iBAAAA,IAAqB,EAAE,IAAA,EAAM,EAAA,EAAI,CAAC;AAAA,GACjE,CAAA;AACL;AAGO,SAAS,kBAAA,GAAiD;AAC7D,EAAA,OAAOP,gBAAAA,CAAiB;AAAA,IACpB,CAAC,GAAA,EAAKc,YAAAA,EAAc,CAAA;AAAA,IACpB,CAAC,GAAA,EAAKA,YAAAA,EAAc,CAAA;AAAA,IACpB,CAAC,eAAA,EAAiBH,iBAAAA,EAAmB,CAAA;AAAA,IACrC,CAAC,WAAWI,eAAAA,CAAgBL,iBAAAA,IAAqB,EAAE,IAAA,EAAM,EAAA,EAAI,CAAC;AAAA,GACjE,CAAA;AACL;AAGO,SAAS,gBAAA,GAA2D;AACvE,EAAA,OAAO1B,YAAAA,CAAa,kBAAA,EAAmB,EAAG,kBAAA,EAAoB,CAAA;AAClE;AAQO,SAAS,eACZ,cAAA,EAC8D;AAC9D,EAAA,OAAOgC,aAAAA,CAAc,cAAA,EAAiD,kBAAA,EAAoB,CAAA;AAC9F;AAEA,eAAsB,aAAA,CAClB,GAAA,EACA,OAAA,EACA,MAAA,EACoC;AACpC,EAAA,MAAM,YAAA,GAAe,MAAM,kBAAA,CAAmB,GAAA,EAAK,SAAS,MAAM,CAAA;AAClE,EAAAC,oBAAoB,YAAY,CAAA;AAChC,EAAA,OAAO,YAAA;AACX;AAEA,eAAsB,kBAAA,CAClB,GAAA,EACA,OAAA,EACA,MAAA,EACyC;AACzC,EAAA,MAAM,YAAA,GAAe,MAAMC,mBAAAA,CAAoB,GAAA,EAAK,SAAS,MAAM,CAAA;AACnE,EAAA,OAAO,eAAe,YAAY,CAAA;AACtC;AAEA,eAAsB,gBAAA,CAClB,GAAA,EACA,SAAA,EACA,MAAA,EAC4B;AAC5B,EAAA,MAAM,aAAA,GAAgB,MAAM,qBAAA,CAAsB,GAAA,EAAK,WAAW,MAAM,CAAA;AACxE,EAAAC,oBAAoB,aAAa,CAAA;AACjC,EAAA,OAAO,aAAA;AACX;AAEA,eAAsB,qBAAA,CAClB,GAAA,EACA,SAAA,EACA,MAAA,EACiC;AACjC,EAAA,MAAM,aAAA,GAAgB,MAAMC,oBAAAA,CAAqB,GAAA,EAAK,WAAW,MAAM,CAAA;AACvE,EAAA,OAAO,aAAA,CAAc,GAAA,CAAI,CAAA,YAAA,KAAgB,cAAA,CAAe,YAAY,CAAC,CAAA;AACzE;AAEO,SAAS,eAAA,GAA0B;AACtC,EAAA,OAAO,GAAA;AACX;ACZO,SAAS,eAAA,GAAsC;AAClD,EAAA,OAAO1B,gBAAAA,CAAiB;AAAA,IACpB,CAAC,MAAA,EAAQa,iBAAAA,EAAmB,CAAA;AAAA,IAC5B,CAAC,OAAA,EAASA,iBAAAA,EAAmB,CAAA;AAAA,IAC7B,CAAC,QAAA,EAAUH,aAAAA,EAAe,CAAA;AAAA,IAC1B,CAAC,UAAA,EAAYE,gBAAAA,CAAiBC,iBAAAA,EAAkB,EAAG,EAAE,MAAA,EAAQV,aAAAA,EAAc,EAAG,SAAA,EAAW,QAAA,EAAU,CAAC,CAAA;AAAA,IACpG,CAAC,OAAA,EAAS,sBAAA,EAAwB,CAAA;AAAA,IAClC,CAAC,UAAA,EAAYS,gBAAAA,CAAiBF,aAAAA,EAAc,EAAG,EAAE,MAAA,EAAQP,aAAAA,EAAc,EAAG,SAAA,EAAW,QAAA,EAAU,CAAC,CAAA;AAAA,IAChG,CAAC,iBAAA,EAAmBO,aAAAA,EAAe,CAAA;AAAA,IACnC,CAAC,gBAAA,EAAkBE,gBAAAA,CAAiBC,iBAAAA,EAAkB,EAAG,EAAE,MAAA,EAAQV,aAAAA,EAAc,EAAG,SAAA,EAAW,QAAA,EAAU,CAAC,CAAA;AAAA,IAC1G;AAAA,MACI,YAAA;AAAA,MACAS,gBAAAA;AAAA,QACIe,sBAAAA,CAAuBR,gBAAgB,mBAAA,EAAoB,EAAG,EAAE,IAAA,EAAM,WAAA,EAAa,CAAA,EAAG;AAAA,UAClFS,kBAAAA,CAAmBV,YAAAA,EAAa,CAAE,MAAA,CAAO,CAAC,CAAC;AAAA,SAC9C,CAAA;AAAA,QACD,EAAE,QAAQ,IAAA;AAAK;AACnB;AACJ,GACH,CAAA;AACL;AAGO,SAAS,eAAA,GAAkC;AAC9C,EAAA,OAAOZ,gBAAAA,CAAiB;AAAA,IACpB,CAAC,MAAA,EAAQU,iBAAAA,EAAmB,CAAA;AAAA,IAC5B,CAAC,OAAA,EAASA,iBAAAA,EAAmB,CAAA;AAAA,IAC7B,CAAC,QAAA,EAAUL,aAAAA,EAAe,CAAA;AAAA,IAC1B,CAAC,UAAA,EAAYI,gBAAAA,CAAiBC,iBAAAA,EAAkB,EAAG,EAAE,MAAA,EAAQP,aAAAA,EAAc,EAAG,SAAA,EAAW,QAAA,EAAU,CAAC,CAAA;AAAA,IACpG,CAAC,OAAA,EAAS,sBAAA,EAAwB,CAAA;AAAA,IAClC,CAAC,UAAA,EAAYM,gBAAAA,CAAiBJ,aAAAA,EAAc,EAAG,EAAE,MAAA,EAAQF,aAAAA,EAAc,EAAG,SAAA,EAAW,QAAA,EAAU,CAAC,CAAA;AAAA,IAChG,CAAC,iBAAA,EAAmBE,aAAAA,EAAe,CAAA;AAAA,IACnC,CAAC,gBAAA,EAAkBI,gBAAAA,CAAiBC,iBAAAA,EAAkB,EAAG,EAAE,MAAA,EAAQP,aAAAA,EAAc,EAAG,SAAA,EAAW,QAAA,EAAU,CAAC,CAAA;AAAA,IAC1G;AAAA,MACI,YAAA;AAAA,MACAM,gBAAAA;AAAA,QACIc,sBAAAA,CAAuBR,gBAAgB,mBAAA,EAAoB,EAAG,EAAE,IAAA,EAAM,WAAA,EAAa,CAAA,EAAG;AAAA,UAClFS,kBAAAA,CAAmBZ,YAAAA,EAAa,CAAE,MAAA,CAAO,CAAC,CAAC;AAAA,SAC9C,CAAA;AAAA,QACD,EAAE,QAAQ,IAAA;AAAK;AACnB;AACJ,GACH,CAAA;AACL;AAGO,SAAS,aAAA,GAAyC;AACrD,EAAA,OAAO5B,YAAAA,CAAa,eAAA,EAAgB,EAAG,eAAA,EAAiB,CAAA;AAC5D;AAQO,SAAS,YACZ,cAAA,EACwD;AACxD,EAAA,OAAOgC,aAAAA,CAAc,cAAA,EAAiD,eAAA,EAAiB,CAAA;AAC3F;AAEA,eAAsB,UAAA,CAClB,GAAA,EACA,OAAA,EACA,MAAA,EACiC;AACjC,EAAA,MAAM,YAAA,GAAe,MAAM,eAAA,CAAgB,GAAA,EAAK,SAAS,MAAM,CAAA;AAC/D,EAAAC,oBAAoB,YAAY,CAAA;AAChC,EAAA,OAAO,YAAA;AACX;AAEA,eAAsB,eAAA,CAClB,GAAA,EACA,OAAA,EACA,MAAA,EACsC;AACtC,EAAA,MAAM,YAAA,GAAe,MAAMC,mBAAAA,CAAoB,GAAA,EAAK,SAAS,MAAM,CAAA;AACnE,EAAA,OAAO,YAAY,YAAY,CAAA;AACnC;AAEA,eAAsB,aAAA,CAClB,GAAA,EACA,SAAA,EACA,MAAA,EACyB;AACzB,EAAA,MAAM,aAAA,GAAgB,MAAM,kBAAA,CAAmB,GAAA,EAAK,WAAW,MAAM,CAAA;AACrE,EAAAC,oBAAoB,aAAa,CAAA;AACjC,EAAA,OAAO,aAAA;AACX;AAEA,eAAsB,kBAAA,CAClB,GAAA,EACA,SAAA,EACA,MAAA,EAC8B;AAC9B,EAAA,MAAM,aAAA,GAAgB,MAAMC,oBAAAA,CAAqB,GAAA,EAAK,WAAW,MAAM,CAAA;AACvE,EAAA,OAAO,aAAA,CAAc,GAAA,CAAI,CAAA,YAAA,KAAgB,WAAA,CAAY,YAAY,CAAC,CAAA;AACtE;AClLO,SAAS,cACZ,KAAA,EACU;AACV,EAAA,IAAI,CAAC,KAAA,EAAO;AACR,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,IAAY,SAAA,IAAa,KAAA,EAAO;AACjD,IAAA,OAAO,KAAA,CAAM,OAAA;AAAA,EACjB;AACA,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACtB,IAAA,OAAO,MAAM,CAAC,CAAA;AAAA,EAClB;AACA,EAAA,OAAO,KAAA;AACX;AAwDO,SAAS,qBAAA,CAAsB,gBAAyB,uBAAA,EAAkD;AAC7G,EAAA,OAAO,CAAC,OAAA,KAA0E;AAC9E,IAAA,IAAI,CAAC,QAAQ,KAAA,EAAO;AAEhB,MAAA,OAAO,MAAA,CAAO,OAAO,EAAE,OAAA,EAAS,gBAAgB,IAAA,EAAM,WAAA,CAAY,UAAU,CAAA;AAAA,IAChF;AAEA,IAAA,MAAM,YAAA,GAAe,OAAA,CAAQ,UAAA,GAAa,WAAA,CAAY,WAAW,WAAA,CAAY,QAAA;AAC7E,IAAA,OAAO,OAAO,MAAA,CAAO;AAAA,MACjB,OAAA,EAAS,aAAA,CAAc,OAAA,CAAQ,KAAK,CAAA;AAAA,MACpC,MAAM,mBAAA,CAAoB,OAAA,CAAQ,KAAK,CAAA,GAAI,mBAAA,CAAoB,YAAY,CAAA,GAAI,YAAA;AAAA,MAC/E,GAAI,mBAAA,CAAoB,OAAA,CAAQ,KAAK,CAAA,GAAI,EAAE,MAAA,EAAQ,OAAA,CAAQ,KAAA,EAAM,GAAI;AAAC,KACzE,CAAA;AAAA,EACL,CAAA;AACJ;AAEO,SAAS,oBACZ,KAAA,EACoC;AACpC,EAAA,OAAO,CAAC,CAAC,KAAA,IAAS,OAAO,UAAU,QAAA,IAAY,SAAA,IAAa,KAAA,IAASK,qBAAA,CAAuB,KAAK,CAAA;AACrG;;;AC7FO,IAAM,iCAAA,GAAoC;AAE1C,SAAS,qCAAA,GAAwC;AACpD,EAAA,OAAOb,YAAAA,EAAa,CAAE,MAAA,CAAO,iCAAiC,CAAA;AAClE;AAuBO,SAAS,yCAAA,GAAmG;AAC/G,EAAA,OAAO,gBAAA;AAAA,IACHlB,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,QAAA,EAAUR,aAAAA,EAAe;AAAA,KAC7B,CAAA;AAAA,IACD,CAAA,KAAA,MAAU,EAAE,GAAG,KAAA,EAAO,eAAe,iCAAA,EAAkC;AAAA,GAC3E;AACJ;AAEO,SAAS,yCAAA,GAA+F;AAC3G,EAAA,OAAOJ,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,QAAA,EAAUT,aAAAA,EAAe;AAAA,GAC7B,CAAA;AACL;AAEO,SAAS,uCAAA,GAGd;AACE,EAAA,OAAOrB,YAAAA,CAAa,yCAAA,EAA0C,EAAG,yCAAA,EAA2C,CAAA;AAChH;AAQO,SAAS,8BAAA,CAIZ,OACA,MAAA,EAC0D;AAE1D,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB,EAAE,IAAA,EAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,UAAA,EAAY,KAAA,EAAM,EAAE;AAClF,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAExB,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU,CAAC,cAAA,CAAe,QAAA,CAAS,IAAI,CAAC,CAAA;AAAA,IACxC,IAAA,EAAM,yCAAA,EAA0C,CAAE,MAAA,CAAO,IAA2C,CAAA;AAAA,IACpG;AAAA,GAC2D,CAAA;AACnE;AAcO,SAAS,iCACZ,WAAA,EAG0D;AAC1D,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU,EAAE,IAAA,EAAM,cAAA,EAAe,EAAE;AAAA,IACnC,IAAA,EAAM,yCAAA,EAA0C,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GAC7E;AACJ;ACvGO,IAAM,gDAAA,GAAmD;AAEzD,SAAS,oDAAA,GAAuD;AACnE,EAAA,OAAO4B,YAAAA,EAAa,CAAE,MAAA,CAAO,gDAAgD,CAAA;AACjF;AAEO,IAAM,sEAAA,GAAyE;AAE/E,SAAS,wEAAA,GAA2E;AACvF,EAAA,OAAOA,YAAAA,EAAa,CAAE,MAAA,CAAO,sEAAsE,CAAA;AACvG;AA6CO,SAAS,wDAAA,GAAiI;AAC7I,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,mCAAA,EAAqCA,YAAAA,EAAc,CAAA;AAAA,MACpD,CAAC,qCAAA,EAAuCR,aAAAA,EAAe,CAAA;AAAA,MACvD,CAAC,gCAAA,EAAkC,4BAAA,EAA8B;AAAA,KACpE,CAAA;AAAA,IACD,CAAA,KAAA,MAAU;AAAA,MACN,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,gDAAA;AAAA,MACf,iCAAA,EAAmC;AAAA,KACvC;AAAA,GACJ;AACJ;AAEO,SAAS,wDAAA,GAA6H;AACzI,EAAA,OAAOJ,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,mCAAA,EAAqCA,YAAAA,EAAc,CAAA;AAAA,IACpD,CAAC,qCAAA,EAAuCT,aAAAA,EAAe,CAAA;AAAA,IACvD,CAAC,gCAAA,EAAkC,4BAAA,EAA8B;AAAA,GACpE,CAAA;AACL;AAEO,SAAS,sDAAA,GAGd;AACE,EAAA,OAAOrB,YAAAA;AAAA,IACH,wDAAA,EAAyD;AAAA,IACzD,wDAAA;AAAyD,GAC7D;AACJ;AAeO,SAAS,6CAAA,CAKZ,OACA,MAAA,EAOF;AAEE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACtD,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA;AAAM,GACnE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,MAAM,qBAAoC,IAAA,CAAK,YAAA,IAAgB,EAAC,EAAG,IAAI,CAAA,MAAA,MAAW;AAAA,IAC9E,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,MAAM2C,WAAAA,CAAY,eAAA;AAAA,IAClB;AAAA,GACJ,CAAE,CAAA;AAEF,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU,CAAC,cAAA,CAAe,QAAA,CAAS,KAAK,CAAA,EAAG,cAAA,CAAe,QAAA,CAAS,SAAS,CAAA,EAAG,GAAG,iBAAiB,CAAA;AAAA,IACnG,IAAA,EAAM,0DAAyD,CAAE,MAAA;AAAA,MAC7D;AAAA,KACJ;AAAA,IACA;AAAA,GAOH,CAAA;AACL;AAgBO,SAAS,gDAIZ,WAAA,EAGyE;AACzE,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,UAAU,EAAE,KAAA,EAAO,gBAAe,EAAG,SAAA,EAAW,gBAAe,EAAE;AAAA,IACjE,IAAA,EAAM,wDAAA,EAAyD,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GAC5F;AACJ;ACpMO,IAAM,qBAAA,GAAwB;AAE9B,SAAS,4BAAA,GAA+B;AAC3C,EAAA,OAAOf,YAAAA,EAAa,CAAE,MAAA,CAAO,qBAAqB,CAAA;AACtD;AA8BO,SAAS,gCAAA,GAAiF;AAC7F,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,QAAA,EAAUR,aAAAA,EAAe;AAAA,KAC7B,CAAA;AAAA,IACD,CAAA,KAAA,MAAU,EAAE,GAAG,KAAA,EAAO,eAAe,qBAAA,EAAsB;AAAA,GAC/D;AACJ;AAEO,SAAS,gCAAA,GAA6E;AACzF,EAAA,OAAOJ,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,QAAA,EAAUT,aAAAA,EAAe;AAAA,GAC7B,CAAA;AACL;AAEO,SAAS,8BAAA,GAAqG;AACjH,EAAA,OAAOrB,YAAAA,CAAa,gCAAA,EAAiC,EAAG,gCAAA,EAAkC,CAAA;AAC9F;AAiBO,SAAS,qBAAA,CAMZ,OACA,MAAA,EAQF;AAEE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,QAAQ,EAAE,KAAA,EAAO,MAAM,MAAA,IAAU,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACxD,UAAU,EAAE,KAAA,EAAO,MAAM,QAAA,IAAY,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC7D,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,KAAA;AAAM,GAC3D;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,MAAM,qBAAoC,IAAA,CAAK,YAAA,IAAgB,EAAC,EAAG,IAAI,CAAA,MAAA,MAAW;AAAA,IAC9E,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,MAAM2C,WAAAA,CAAY,eAAA;AAAA,IAClB;AAAA,GACJ,CAAE,CAAA;AAEF,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU;AAAA,MACN,cAAA,CAAe,SAAS,MAAM,CAAA;AAAA,MAC9B,cAAA,CAAe,SAAS,QAAQ,CAAA;AAAA,MAChC,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,GAAG;AAAA,KACP;AAAA,IACA,IAAA,EAAM,gCAAA,EAAiC,CAAE,MAAA,CAAO,IAAkC,CAAA;AAAA,IAClF;AAAA,GAQH,CAAA;AACL;AAkBO,SAAS,wBACZ,WAAA,EAGiD;AACjD,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU,EAAE,MAAA,EAAQ,cAAA,EAAe,EAAG,UAAU,cAAA,EAAe,EAAG,KAAA,EAAO,cAAA,EAAe,EAAE;AAAA,IAC1F,IAAA,EAAM,gCAAA,EAAiC,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GACpE;AACJ;ACnKO,IAAM,6BAAA,GAAgC;AAEtC,SAAS,mCAAA,GAAsC;AAClD,EAAA,OAAOf,YAAAA,EAAa,CAAE,MAAA,CAAO,6BAA6B,CAAA;AAC9D;AAoCO,SAAS,uCAAA,GAA+F;AAC3G,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,QAAA,EAAUR,aAAAA,EAAe,CAAA;AAAA,MAC1B,CAAC,UAAA,EAAYQ,YAAAA,EAAc;AAAA,KAC9B,CAAA;AAAA,IACD,CAAA,KAAA,MAAU,EAAE,GAAG,KAAA,EAAO,eAAe,6BAAA,EAA8B;AAAA,GACvE;AACJ;AAEO,SAAS,uCAAA,GAA2F;AACvG,EAAA,OAAOZ,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,QAAA,EAAUT,aAAAA,EAAe,CAAA;AAAA,IAC1B,CAAC,UAAA,EAAYS,YAAAA,EAAc;AAAA,GAC9B,CAAA;AACL;AAEO,SAAS,qCAAA,GAGd;AACE,EAAA,OAAO9B,YAAAA,CAAa,uCAAA,EAAwC,EAAG,uCAAA,EAAyC,CAAA;AAC5G;AAqBO,SAAS,4BAAA,CAOZ,OACA,MAAA,EASF;AAEE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,QAAQ,EAAE,KAAA,EAAO,MAAM,MAAA,IAAU,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACxD,MAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrD,UAAU,EAAE,KAAA,EAAO,MAAM,QAAA,IAAY,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC7D,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,KAAA;AAAM,GAC3D;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,MAAM,qBAAoC,IAAA,CAAK,YAAA,IAAgB,EAAC,EAAG,IAAI,CAAA,MAAA,MAAW;AAAA,IAC9E,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,MAAM2C,WAAAA,CAAY,eAAA;AAAA,IAClB;AAAA,GACJ,CAAE,CAAA;AAEF,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU;AAAA,MACN,cAAA,CAAe,SAAS,MAAM,CAAA;AAAA,MAC9B,cAAA,CAAe,SAAS,IAAI,CAAA;AAAA,MAC5B,cAAA,CAAe,SAAS,QAAQ,CAAA;AAAA,MAChC,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,GAAG;AAAA,KACP;AAAA,IACA,IAAA,EAAM,uCAAA,EAAwC,CAAE,MAAA,CAAO,IAAyC,CAAA;AAAA,IAChG;AAAA,GASH,CAAA;AACL;AAoBO,SAAS,+BACZ,WAAA,EAGwD;AACxD,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU;AAAA,MACN,QAAQ,cAAA,EAAe;AAAA,MACvB,MAAM,cAAA,EAAe;AAAA,MACrB,UAAU,cAAA,EAAe;AAAA,MACzB,OAAO,cAAA;AAAe,KAC1B;AAAA,IACA,IAAA,EAAM,uCAAA,EAAwC,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GAC3E;AACJ;ACjMO,IAAM,mDAAA,GAAsD;AAE5D,SAAS,uDAAA,GAA0D;AACtE,EAAA,OAAOf,YAAAA,EAAa,CAAE,MAAA,CAAO,mDAAmD,CAAA;AACpF;AAEO,IAAM,yEAAA,GAA4E;AAElF,SAAS,2EAAA,GAA8E;AAC1F,EAAA,OAAOA,YAAAA,EAAa,CAAE,MAAA,CAAO,yEAAyE,CAAA;AAC1G;AA4BO,SAAS,2DAAA,GAAuI;AACnJ,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,mCAAA,EAAqCA,YAAAA,EAAc;AAAA,KACvD,CAAA;AAAA,IACD,CAAA,KAAA,MAAU;AAAA,MACN,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,mDAAA;AAAA,MACf,iCAAA,EACI;AAAA,KACR;AAAA,GACJ;AACJ;AAEO,SAAS,2DAAA,GAAmI;AAC/I,EAAA,OAAOZ,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,mCAAA,EAAqCA,YAAAA,EAAc;AAAA,GACvD,CAAA;AACL;AAEO,SAAS,yDAAA,GAGd;AACE,EAAA,OAAO9B,YAAAA;AAAA,IACH,2DAAA,EAA4D;AAAA,IAC5D,2DAAA;AAA4D,GAChE;AACJ;AAeO,SAAS,gDAAA,CAMZ,OACA,MAAA,EAC8G;AAE9G,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACtD,MAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrD,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA;AAAM,GACnE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAEjB,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU,CAAC,cAAA,CAAe,QAAA,CAAS,KAAK,CAAA,EAAG,cAAA,CAAe,QAAA,CAAS,IAAI,CAAA,EAAG,cAAA,CAAe,QAAA,CAAS,SAAS,CAAC,CAAA;AAAA,IAC5G,IAAA,EAAM,2DAAA,EAA4D,CAAE,MAAA,CAAO,EAAE,CAAA;AAAA,IAC7E;AAAA,GAMH,CAAA;AACL;AAkBO,SAAS,mDAIZ,WAAA,EAG4E;AAC5E,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU,EAAE,KAAA,EAAO,cAAA,EAAe,EAAG,MAAM,cAAA,EAAe,EAAG,SAAA,EAAW,cAAA,EAAe,EAAE;AAAA,IACzF,IAAA,EAAM,2DAAA,EAA4D,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GAC/F;AACJ;ACxJO,IAAM,kBAAA,GAAqB;AAE3B,SAAS,yBAAA,GAA4B;AACxC,EAAA,OAAO4B,YAAAA,EAAa,CAAE,MAAA,CAAO,kBAAkB,CAAA;AACnD;AA2BO,SAAS,6BAAA,GAA2E;AACvF,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,QAAA,EAAUR,aAAAA,EAAe;AAAA,KAC7B,CAAA;AAAA,IACD,CAAA,KAAA,MAAU,EAAE,GAAG,KAAA,EAAO,eAAe,kBAAA,EAAmB;AAAA,GAC5D;AACJ;AAEO,SAAS,6BAAA,GAAuE;AACnF,EAAA,OAAOJ,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,QAAA,EAAUT,aAAAA,EAAe;AAAA,GAC7B,CAAA;AACL;AAEO,SAAS,2BAAA,GAA4F;AACxG,EAAA,OAAOrB,YAAAA,CAAa,6BAAA,EAA8B,EAAG,6BAAA,EAA+B,CAAA;AACxF;AAiBO,SAAS,kBAAA,CAMZ,OACA,MAAA,EAQF;AAEE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,SAAS,EAAE,KAAA,EAAO,MAAM,OAAA,IAAW,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAC1D,MAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACpD,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA;AAAM,GACnE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,MAAM,qBAAoC,IAAA,CAAK,YAAA,IAAgB,EAAC,EAAG,IAAI,CAAA,MAAA,MAAW;AAAA,IAC9E,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,MAAM2C,WAAAA,CAAY,eAAA;AAAA,IAClB;AAAA,GACJ,CAAE,CAAA;AAEF,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU;AAAA,MACN,cAAA,CAAe,SAAS,OAAO,CAAA;AAAA,MAC/B,cAAA,CAAe,SAAS,IAAI,CAAA;AAAA,MAC5B,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,GAAG;AAAA,KACP;AAAA,IACA,IAAA,EAAM,6BAAA,EAA8B,CAAE,MAAA,CAAO,IAA+B,CAAA;AAAA,IAC5E;AAAA,GAQH,CAAA;AACL;AAkBO,SAAS,qBACZ,WAAA,EAG8C;AAC9C,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU,EAAE,OAAA,EAAS,cAAA,EAAe,EAAG,MAAM,cAAA,EAAe,EAAG,SAAA,EAAW,cAAA,EAAe,EAAE;AAAA,IAC3F,IAAA,EAAM,6BAAA,EAA8B,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GACjE;AACJ;AChKO,IAAM,0BAAA,GAA6B;AAEnC,SAAS,gCAAA,GAAmC;AAC/C,EAAA,OAAOf,YAAAA,EAAa,CAAE,MAAA,CAAO,0BAA0B,CAAA;AAC3D;AAkCO,SAAS,oCAAA,GAAyF;AACrG,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,QAAA,EAAUR,aAAAA,EAAe,CAAA;AAAA,MAC1B,CAAC,UAAA,EAAYQ,YAAAA,EAAc;AAAA,KAC9B,CAAA;AAAA,IACD,CAAA,KAAA,MAAU,EAAE,GAAG,KAAA,EAAO,eAAe,0BAAA,EAA2B;AAAA,GACpE;AACJ;AAEO,SAAS,oCAAA,GAAqF;AACjG,EAAA,OAAOZ,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,QAAA,EAAUT,aAAAA,EAAe,CAAA;AAAA,IAC1B,CAAC,UAAA,EAAYS,YAAAA,EAAc;AAAA,GAC9B,CAAA;AACL;AAEO,SAAS,kCAAA,GAGd;AACE,EAAA,OAAO9B,YAAAA,CAAa,oCAAA,EAAqC,EAAG,oCAAA,EAAsC,CAAA;AACtG;AAkBO,SAAS,yBAAA,CAMZ,OACA,MAAA,EAQF;AAEE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,SAAS,EAAE,KAAA,EAAO,MAAM,OAAA,IAAW,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAC1D,MAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACpD,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA;AAAM,GACnE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,MAAM,qBAAoC,IAAA,CAAK,YAAA,IAAgB,EAAC,EAAG,IAAI,CAAA,MAAA,MAAW;AAAA,IAC9E,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,MAAM2C,WAAAA,CAAY,eAAA;AAAA,IAClB;AAAA,GACJ,CAAE,CAAA;AAEF,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU;AAAA,MACN,cAAA,CAAe,SAAS,OAAO,CAAA;AAAA,MAC/B,cAAA,CAAe,SAAS,IAAI,CAAA;AAAA,MAC5B,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,GAAG;AAAA,KACP;AAAA,IACA,IAAA,EAAM,oCAAA,EAAqC,CAAE,MAAA,CAAO,IAAsC,CAAA;AAAA,IAC1F;AAAA,GAQH,CAAA;AACL;AAkBO,SAAS,4BACZ,WAAA,EAGqD;AACrD,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU,EAAE,OAAA,EAAS,cAAA,EAAe,EAAG,MAAM,cAAA,EAAe,EAAG,SAAA,EAAW,cAAA,EAAe,EAAE;AAAA,IAC3F,IAAA,EAAM,oCAAA,EAAqC,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GACxE;AACJ;AC/KO,IAAM,2BAAA,GAA8B;AAEpC,SAAS,iCAAA,GAAoC;AAChD,EAAA,OAAOf,YAAAA,EAAa,CAAE,MAAA,CAAO,2BAA2B,CAAA;AAC5D;AAuBO,SAAS,qCAAA,GAA2F;AACvG,EAAA,OAAOc,gBAAAA,CAAiBhC,gBAAAA,CAAiB,CAAC,CAAC,eAAA,EAAiBkB,cAAc,CAAC,CAAC,CAAA,EAAG,CAAA,KAAA,MAAU;AAAA,IACrF,GAAG,KAAA;AAAA,IACH,aAAA,EAAe;AAAA,GACnB,CAAE,CAAA;AACN;AAEO,SAAS,qCAAA,GAAuF;AACnG,EAAA,OAAOZ,iBAAiB,CAAC,CAAC,iBAAiBc,YAAAA,EAAc,CAAC,CAAC,CAAA;AAC/D;AAEO,SAAS,mCAAA,GAGd;AACE,EAAA,OAAO9B,YAAAA,CAAa,qCAAA,EAAsC,EAAG,qCAAA,EAAuC,CAAA;AACxG;AAgBO,SAAS,0BAAA,CAMZ,OACA,MAAA,EAQF;AAEE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,SAAS,EAAE,KAAA,EAAO,MAAM,OAAA,IAAW,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAC1D,aAAa,EAAE,KAAA,EAAO,MAAM,WAAA,IAAe,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAClE,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,KAAA;AAAM,GAC3D;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,MAAM,qBAAoC,IAAA,CAAK,YAAA,IAAgB,EAAC,EAAG,IAAI,CAAA,MAAA,MAAW;AAAA,IAC9E,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,MAAM2C,WAAAA,CAAY,eAAA;AAAA,IAClB;AAAA,GACJ,CAAE,CAAA;AAEF,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU;AAAA,MACN,cAAA,CAAe,SAAS,OAAO,CAAA;AAAA,MAC/B,cAAA,CAAe,SAAS,WAAW,CAAA;AAAA,MACnC,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,GAAG;AAAA,KACP;AAAA,IACA,IAAA,EAAM,qCAAA,EAAsC,CAAE,MAAA,CAAO,EAAE,CAAA;AAAA,IACvD;AAAA,GAQH,CAAA;AACL;AAkBO,SAAS,6BACZ,WAAA,EAGsD;AACtD,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU,EAAE,OAAA,EAAS,cAAA,EAAe,EAAG,aAAa,cAAA,EAAe,EAAG,KAAA,EAAO,cAAA,EAAe,EAAE;AAAA,IAC9F,IAAA,EAAM,qCAAA,EAAsC,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GACzE;AACJ;ACtJO,IAAM,kCAAA,GAAqC;AAE3C,SAAS,wCAAA,GAA2C;AACvD,EAAA,OAAOf,YAAAA,EAAa,CAAE,MAAA,CAAO,kCAAkC,CAAA;AACnE;AAEO,IAAM,wDAAA,GAA2D;AAEjE,SAAS,4DAAA,GAA+D;AAC3E,EAAA,OAAOA,YAAAA,EAAa,CAAE,MAAA,CAAO,wDAAwD,CAAA;AACzF;AAmCO,SAAS,4CAAA,GAAyG;AACrH,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,mCAAA,EAAqCA,YAAAA,EAAc,CAAA;AAAA,MACpD,CAAC,QAAA,EAAUR,aAAAA,EAAe,CAAA;AAAA,MAC1B,CAAC,UAAA,EAAYQ,YAAAA,EAAc;AAAA,KAC9B,CAAA;AAAA,IACD,CAAA,KAAA,MAAU;AAAA,MACN,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,kCAAA;AAAA,MACf,iCAAA,EAAmC;AAAA,KACvC;AAAA,GACJ;AACJ;AAEO,SAAS,4CAAA,GAAqG;AACjH,EAAA,OAAOZ,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,mCAAA,EAAqCA,YAAAA,EAAc,CAAA;AAAA,IACpD,CAAC,QAAA,EAAUT,aAAAA,EAAe,CAAA;AAAA,IAC1B,CAAC,UAAA,EAAYS,YAAAA,EAAc;AAAA,GAC9B,CAAA;AACL;AAEO,SAAS,0CAAA,GAGd;AACE,EAAA,OAAO9B,YAAAA,CAAa,4CAAA,EAA6C,EAAG,4CAAA,EAA8C,CAAA;AACtH;AAkBO,SAAS,iCAAA,CAMZ,OACA,MAAA,EAQF;AAEE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACtD,MAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrD,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA;AAAM,GACnE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,MAAM,qBAAoC,IAAA,CAAK,YAAA,IAAgB,EAAC,EAAG,IAAI,CAAA,MAAA,MAAW;AAAA,IAC9E,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,MAAM2C,WAAAA,CAAY,eAAA;AAAA,IAClB;AAAA,GACJ,CAAE,CAAA;AAEF,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU;AAAA,MACN,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,cAAA,CAAe,SAAS,IAAI,CAAA;AAAA,MAC5B,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,GAAG;AAAA,KACP;AAAA,IACA,IAAA,EAAM,4CAAA,EAA6C,CAAE,MAAA,CAAO,IAA8C,CAAA;AAAA,IAC1G;AAAA,GAQH,CAAA;AACL;AAkBO,SAAS,oCAIZ,WAAA,EAG6D;AAC7D,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU,EAAE,KAAA,EAAO,cAAA,EAAe,EAAG,MAAM,cAAA,EAAe,EAAG,SAAA,EAAW,cAAA,EAAe,EAAE;AAAA,IACzF,IAAA,EAAM,4CAAA,EAA6C,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GAChF;AACJ;ACvLO,IAAM,mCAAA,GAAsC;AAE5C,SAAS,yCAAA,GAA4C;AACxD,EAAA,OAAOf,YAAAA,EAAa,CAAE,MAAA,CAAO,mCAAmC,CAAA;AACpE;AAEO,IAAM,yDAAA,GAA4D;AAElE,SAAS,6DAAA,GAAgE;AAC5E,EAAA,OAAOA,YAAAA,EAAa,CAAE,MAAA,CAAO,yDAAyD,CAAA;AAC1F;AAuFO,SAAS,6CAAA,GAA2G;AACvH,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,mCAAA,EAAqCA,YAAAA,EAAc,CAAA;AAAA,MACpD,CAAC,sCAAA,EAAwC,4BAAA,EAA8B,CAAA;AAAA,MACvE,CAAC,gCAAA,EAAkC,YAAA,EAAc,CAAA;AAAA,MACjD,CAAC,0CAAA,EAA4C,YAAA,EAAc,CAAA;AAAA,MAC3D,CAAC,6BAAA,EAA+B,YAAA,EAAc;AAAA,KACjD,CAAA;AAAA,IACD,CAAA,KAAA,MAAU;AAAA,MACN,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,mCAAA;AAAA,MACf,iCAAA,EAAmC;AAAA,KACvC;AAAA,GACJ;AACJ;AAEO,SAAS,6CAAA,GAAuG;AACnH,EAAA,OAAOZ,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,mCAAA,EAAqCA,YAAAA,EAAc,CAAA;AAAA,IACpD,CAAC,sCAAA,EAAwC,4BAAA,EAA8B,CAAA;AAAA,IACvE,CAAC,gCAAA,EAAkC,YAAA,EAAc,CAAA;AAAA,IACjD,CAAC,0CAAA,EAA4C,YAAA,EAAc,CAAA;AAAA,IAC3D,CAAC,6BAAA,EAA+B,YAAA,EAAc;AAAA,GACjD,CAAA;AACL;AAEO,SAAS,2CAAA,GAGd;AACE,EAAA,OAAO9B,YAAAA;AAAA,IACH,6CAAA,EAA8C;AAAA,IAC9C,6CAAA;AAA8C,GAClD;AACJ;AAuCO,SAAS,kCAAA,CAWZ,OAUA,MAAA,EAaF;AAEE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,aAAa,EAAE,KAAA,EAAO,MAAM,WAAA,IAAe,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAClE,MAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrD,kBAAkB,EAAE,KAAA,EAAO,MAAM,gBAAA,IAAoB,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAC5E,oBAAoB,EAAE,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjF,gBAAgB,EAAE,KAAA,EAAO,MAAM,cAAA,IAAkB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACzE,0BAA0B,EAAE,KAAA,EAAO,MAAM,wBAAA,IAA4B,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC7F,aAAa,EAAE,KAAA,EAAO,MAAM,WAAA,IAAe,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACnE,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA;AAAM,GACnE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,MAAM,qBAAoC,IAAA,CAAK,YAAA,IAAgB,EAAC,EAAG,IAAI,CAAA,MAAA,MAAW;AAAA,IAC9E,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,MAAM2C,WAAAA,CAAY,eAAA;AAAA,IAClB;AAAA,GACJ,CAAE,CAAA;AAEF,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU;AAAA,MACN,cAAA,CAAe,SAAS,WAAW,CAAA;AAAA,MACnC,cAAA,CAAe,SAAS,IAAI,CAAA;AAAA,MAC5B,cAAA,CAAe,SAAS,gBAAgB,CAAA;AAAA,MACxC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,cAAc,CAAA;AAAA,MACtC,cAAA,CAAe,SAAS,wBAAwB,CAAA;AAAA,MAChD,cAAA,CAAe,SAAS,WAAW,CAAA;AAAA,MACnC,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,GAAG;AAAA,KACP;AAAA,IACA,IAAA,EAAM,6CAAA,EAA8C,CAAE,MAAA,CAAO,IAA+C,CAAA;AAAA,IAC5G;AAAA,GAaH,CAAA;AACL;AAgCO,SAAS,qCAIZ,WAAA,EAG8D;AAC9D,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,MAAM,yBAAyB,MAAM;AACjC,IAAA,MAAM,cAAc,cAAA,EAAe;AACnC,IAAA,OAAO,WAAA,CAAY,OAAA,KAAY,0BAAA,GAA6B,MAAA,GAAY,WAAA;AAAA,EAC5E,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU;AAAA,MACN,aAAa,cAAA,EAAe;AAAA,MAC5B,MAAM,cAAA,EAAe;AAAA,MACrB,kBAAkB,cAAA,EAAe;AAAA,MACjC,oBAAoB,sBAAA,EAAuB;AAAA,MAC3C,gBAAgB,sBAAA,EAAuB;AAAA,MACvC,0BAA0B,sBAAA,EAAuB;AAAA,MACjD,aAAa,sBAAA,EAAuB;AAAA,MACpC,WAAW,cAAA;AAAe,KAC9B;AAAA,IACA,IAAA,EAAM,6CAAA,EAA8C,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GACjF;AACJ;AC1UO,IAAM,4CAAA,GAA+C;AAErD,SAAS,gDAAA,GAAmD;AAC/D,EAAA,OAAOf,YAAAA,EAAa,CAAE,MAAA,CAAO,4CAA4C,CAAA;AAC7E;AAEO,IAAM,kEAAA,GAAqE;AAE3E,SAAS,oEAAA,GAAuE;AACnF,EAAA,OAAOA,YAAAA,EAAa,CAAE,MAAA,CAAO,kEAAkE,CAAA;AACnG;AA+HO,SAAS,oDAAA,GAAyH;AACrI,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,mCAAA,EAAqCA,YAAAA,EAAc,CAAA;AAAA,MACpD,CAAC,sCAAA,EAAwC,4BAAA,EAA8B,CAAA;AAAA,MACvE,CAAC,gCAAA,EAAkCgB,YAAAA,EAAc,CAAA;AAAA,MACjD,CAAC,wDAAA,EAA0DA,YAAAA,EAAc,CAAA;AAAA,MACzE,CAAC,gCAAA,EAAkCA,YAAAA,EAAc,CAAA;AAAA,MACjD,CAAC,6CAAA,EAA+CA,YAAAA,EAAc,CAAA;AAAA,MAC9D,CAAC,6BAAA,EAA+BA,YAAAA,EAAc;AAAA,KACjD,CAAA;AAAA,IACD,CAAA,KAAA,MAAU;AAAA,MACN,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,4CAAA;AAAA,MACf,iCAAA,EAAmC;AAAA,KACvC;AAAA,GACJ;AACJ;AAEO,SAAS,oDAAA,GAAqH;AACjI,EAAA,OAAO5B,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,mCAAA,EAAqCA,YAAAA,EAAc,CAAA;AAAA,IACpD,CAAC,sCAAA,EAAwC,4BAAA,EAA8B,CAAA;AAAA,IACvE,CAAC,gCAAA,EAAkCe,YAAAA,EAAc,CAAA;AAAA,IACjD,CAAC,wDAAA,EAA0DA,YAAAA,EAAc,CAAA;AAAA,IACzE,CAAC,gCAAA,EAAkCA,YAAAA,EAAc,CAAA;AAAA,IACjD,CAAC,6CAAA,EAA+CA,YAAAA,EAAc,CAAA;AAAA,IAC9D,CAAC,6BAAA,EAA+BA,YAAAA,EAAc;AAAA,GACjD,CAAA;AACL;AAEO,SAAS,kDAAA,GAGd;AACE,EAAA,OAAO7C,YAAAA;AAAA,IACH,oDAAA,EAAqD;AAAA,IACrD,oDAAA;AAAqD,GACzD;AACJ;AAkDO,SAAS,yCAAA,CAaZ,OAYA,MAAA,EAeF;AAEE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,aAAa,EAAE,KAAA,EAAO,MAAM,WAAA,IAAe,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAClE,MAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrD,kBAAkB,EAAE,KAAA,EAAO,MAAM,gBAAA,IAAoB,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAC5E,oBAAoB,EAAE,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjF,gBAAgB,EAAE,KAAA,EAAO,MAAM,cAAA,IAAkB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACzE,sCAAA,EAAwC;AAAA,MACpC,KAAA,EAAO,MAAM,sCAAA,IAA0C,IAAA;AAAA,MACvD,UAAA,EAAY;AAAA,KAChB;AAAA,IACA,gBAAgB,EAAE,KAAA,EAAO,MAAM,cAAA,IAAkB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACzE,6BAA6B,EAAE,KAAA,EAAO,MAAM,2BAAA,IAA+B,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACnG,aAAa,EAAE,KAAA,EAAO,MAAM,WAAA,IAAe,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACnE,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA;AAAM,GACnE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,MAAM,qBAAoC,IAAA,CAAK,YAAA,IAAgB,EAAC,EAAG,IAAI,CAAA,MAAA,MAAW;AAAA,IAC9E,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,MAAM2C,WAAAA,CAAY,eAAA;AAAA,IAClB;AAAA,GACJ,CAAE,CAAA;AAEF,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU;AAAA,MACN,cAAA,CAAe,SAAS,WAAW,CAAA;AAAA,MACnC,cAAA,CAAe,SAAS,IAAI,CAAA;AAAA,MAC5B,cAAA,CAAe,SAAS,gBAAgB,CAAA;AAAA,MACxC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,cAAc,CAAA;AAAA,MACtC,cAAA,CAAe,SAAS,sCAAsC,CAAA;AAAA,MAC9D,cAAA,CAAe,SAAS,cAAc,CAAA;AAAA,MACtC,cAAA,CAAe,SAAS,2BAA2B,CAAA;AAAA,MACnD,cAAA,CAAe,SAAS,WAAW,CAAA;AAAA,MACnC,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,GAAG;AAAA,KACP;AAAA,IACA,IAAA,EAAM,sDAAqD,CAAE,MAAA;AAAA,MACzD;AAAA,KACJ;AAAA,IACA;AAAA,GAeH,CAAA;AACL;AAuCO,SAAS,4CAIZ,WAAA,EAGqE;AACrE,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,EAAA,EAAI;AAElC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,MAAM,yBAAyB,MAAM;AACjC,IAAA,MAAM,cAAc,cAAA,EAAe;AACnC,IAAA,OAAO,WAAA,CAAY,OAAA,KAAY,0BAAA,GAA6B,MAAA,GAAY,WAAA;AAAA,EAC5E,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU;AAAA,MACN,aAAa,cAAA,EAAe;AAAA,MAC5B,MAAM,cAAA,EAAe;AAAA,MACrB,kBAAkB,cAAA,EAAe;AAAA,MACjC,oBAAoB,sBAAA,EAAuB;AAAA,MAC3C,gBAAgB,sBAAA,EAAuB;AAAA,MACvC,wCAAwC,sBAAA,EAAuB;AAAA,MAC/D,gBAAgB,sBAAA,EAAuB;AAAA,MACvC,6BAA6B,sBAAA,EAAuB;AAAA,MACpD,aAAa,sBAAA,EAAuB;AAAA,MACpC,WAAW,cAAA;AAAe,KAC9B;AAAA,IACA,IAAA,EAAM,oDAAA,EAAqD,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GACxF;AACJ;ACzZO,IAAM,mCAAA,GAAsC;AAE5C,SAAS,yCAAA,GAA4C;AACxD,EAAA,OAAOf,YAAAA,EAAa,CAAE,MAAA,CAAO,mCAAmC,CAAA;AACpE;AAEO,IAAM,yDAAA,GAA4D;AAElE,SAAS,6DAAA,GAAgE;AAC5E,EAAA,OAAOA,YAAAA,EAAa,CAAE,MAAA,CAAO,yDAAyD,CAAA;AAC1F;AAyEO,SAAS,6CAAA,GAA2G;AACvH,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,mCAAA,EAAqCA,YAAAA,EAAc,CAAA;AAAA,MACpD,CAAC,QAAA,EAAUR,aAAAA,EAAe,CAAA;AAAA,MAC1B,CAAC,UAAA,EAAYQ,YAAAA,EAAc,CAAA;AAAA,MAC3B,CAAC,gCAAA,EAAkC,4BAAA,EAA8B,CAAA;AAAA,MACjE,CAAC,gCAAA,EAAkCgB,YAAAA,EAAc,CAAA;AAAA,MACjD,CAAC,6BAAA,EAA+BA,YAAAA,EAAc;AAAA,KACjD,CAAA;AAAA,IACD,CAAA,KAAA,MAAU;AAAA,MACN,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,mCAAA;AAAA,MACf,iCAAA,EAAmC;AAAA,KACvC;AAAA,GACJ;AACJ;AAEO,SAAS,6CAAA,GAAuG;AACnH,EAAA,OAAO5B,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,mCAAA,EAAqCA,YAAAA,EAAc,CAAA;AAAA,IACpD,CAAC,QAAA,EAAUT,aAAAA,EAAe,CAAA;AAAA,IAC1B,CAAC,UAAA,EAAYS,YAAAA,EAAc,CAAA;AAAA,IAC3B,CAAC,gCAAA,EAAkC,4BAAA,EAA8B,CAAA;AAAA,IACjE,CAAC,gCAAA,EAAkCe,YAAAA,EAAc,CAAA;AAAA,IACjD,CAAC,6BAAA,EAA+BA,YAAAA,EAAc;AAAA,GACjD,CAAA;AACL;AAEO,SAAS,2CAAA,GAGd;AACE,EAAA,OAAO7C,YAAAA;AAAA,IACH,6CAAA,EAA8C;AAAA,IAC9C,6CAAA;AAA8C,GAClD;AACJ;AAkCO,SAAS,kCAAA,CASZ,OAQA,MAAA,EAWF;AAEE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACtD,MAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrD,oBAAoB,EAAE,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjF,gBAAgB,EAAE,KAAA,EAAO,MAAM,cAAA,IAAkB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACzE,aAAa,EAAE,KAAA,EAAO,MAAM,WAAA,IAAe,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACnE,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA;AAAM,GACnE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,MAAM,qBAAoC,IAAA,CAAK,YAAA,IAAgB,EAAC,EAAG,IAAI,CAAA,MAAA,MAAW;AAAA,IAC9E,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,MAAM2C,WAAAA,CAAY,eAAA;AAAA,IAClB;AAAA,GACJ,CAAE,CAAA;AAEF,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU;AAAA,MACN,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,cAAA,CAAe,SAAS,IAAI,CAAA;AAAA,MAC5B,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,cAAc,CAAA;AAAA,MACtC,cAAA,CAAe,SAAS,WAAW,CAAA;AAAA,MACnC,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,GAAG;AAAA,KACP;AAAA,IACA,IAAA,EAAM,6CAAA,EAA8C,CAAE,MAAA,CAAO,IAA+C,CAAA;AAAA,IAC5G;AAAA,GAWH,CAAA;AACL;AA4BO,SAAS,qCAIZ,WAAA,EAG8D;AAC9D,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,MAAM,yBAAyB,MAAM;AACjC,IAAA,MAAM,cAAc,cAAA,EAAe;AACnC,IAAA,OAAO,WAAA,CAAY,OAAA,KAAY,0BAAA,GAA6B,MAAA,GAAY,WAAA;AAAA,EAC5E,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU;AAAA,MACN,OAAO,cAAA,EAAe;AAAA,MACtB,MAAM,cAAA,EAAe;AAAA,MACrB,oBAAoB,sBAAA,EAAuB;AAAA,MAC3C,gBAAgB,sBAAA,EAAuB;AAAA,MACvC,aAAa,sBAAA,EAAuB;AAAA,MACpC,WAAW,cAAA;AAAe,KAC9B;AAAA,IACA,IAAA,EAAM,6CAAA,EAA8C,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GACjF;AACJ;ACvSO,IAAM,qDAAA,GAAwD;AAE9D,SAAS,yDAAA,GAA4D;AACxE,EAAA,OAAOf,YAAAA,EAAa,CAAE,MAAA,CAAO,qDAAqD,CAAA;AACtF;AAEO,IAAM,2EAAA,GAA8E;AAEpF,SAAS,6EAAA,GAAgF;AAC5F,EAAA,OAAOA,YAAAA,EAAa,CAAE,MAAA,CAAO,2EAA2E,CAAA;AAC5G;AA8DO,SAAS,6DAAA,GAA2I;AACvJ,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,mCAAA,EAAqCA,YAAAA,EAAc,CAAA;AAAA,MACpD,CAAC,wBAAA,EAA0B,4BAAA,EAA8B,CAAA;AAAA,MACzD,CAAC,oCAAA,EAAsCR,aAAAA,EAAe,CAAA;AAAA,MACtD,CAAC,wBAAA,EAA0BwB,YAAAA,EAAc;AAAA,KAC5C,CAAA;AAAA,IACD,CAAA,KAAA,MAAU;AAAA,MACN,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,qDAAA;AAAA,MACf,iCAAA,EACI;AAAA,KACR;AAAA,GACJ;AACJ;AAEO,SAAS,6DAAA,GAAuI;AACnJ,EAAA,OAAO5B,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,mCAAA,EAAqCA,YAAAA,EAAc,CAAA;AAAA,IACpD,CAAC,wBAAA,EAA0B,4BAAA,EAA8B,CAAA;AAAA,IACzD,CAAC,oCAAA,EAAsCT,aAAAA,EAAe,CAAA;AAAA,IACtD,CAAC,wBAAA,EAA0BwB,YAAAA,EAAc;AAAA,GAC5C,CAAA;AACL;AAEO,SAAS,2DAAA,GAGd;AACE,EAAA,OAAO7C,YAAAA;AAAA,IACH,6DAAA,EAA8D;AAAA,IAC9D,6DAAA;AAA8D,GAClE;AACJ;AA8BO,SAAS,kDAAA,CAQZ,OAOA,MAAA,EAUF;AAEE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACtD,MAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrD,kCAAkC,EAAE,KAAA,EAAO,MAAM,gCAAA,IAAoC,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC7G,QAAQ,EAAE,KAAA,EAAO,MAAM,MAAA,IAAU,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACzD,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA;AAAM,GACnE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,IAAI,CAAC,QAAA,CAAS,gCAAA,CAAiC,KAAA,EAAO;AAClD,IAAA,QAAA,CAAS,iCAAiC,KAAA,GACtC,6CAAA;AAAA,EACR;AAGA,EAAA,MAAM,qBAAoC,IAAA,CAAK,YAAA,IAAgB,EAAC,EAAG,IAAI,CAAA,MAAA,MAAW;AAAA,IAC9E,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,MAAM2C,WAAAA,CAAY,eAAA;AAAA,IAClB;AAAA,GACJ,CAAE,CAAA;AAEF,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU;AAAA,MACN,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,cAAA,CAAe,SAAS,IAAI,CAAA;AAAA,MAC5B,cAAA,CAAe,SAAS,gCAAgC,CAAA;AAAA,MACxD,cAAA,CAAe,SAAS,MAAM,CAAA;AAAA,MAC9B,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,GAAG;AAAA,KACP;AAAA,IACA,IAAA,EAAM,+DAA8D,CAAE,MAAA;AAAA,MAClE;AAAA,KACJ;AAAA,IACA;AAAA,GAUH,CAAA;AACL;AA2BO,SAAS,qDAIZ,WAAA,EAG8E;AAC9E,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,MAAM,yBAAyB,MAAM;AACjC,IAAA,MAAM,cAAc,cAAA,EAAe;AACnC,IAAA,OAAO,WAAA,CAAY,OAAA,KAAY,0BAAA,GAA6B,MAAA,GAAY,WAAA;AAAA,EAC5E,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU;AAAA,MACN,OAAO,cAAA,EAAe;AAAA,MACtB,MAAM,cAAA,EAAe;AAAA,MACrB,kCAAkC,cAAA,EAAe;AAAA,MACjD,QAAQ,sBAAA,EAAuB;AAAA,MAC/B,WAAW,cAAA;AAAe,KAC9B;AAAA,IACA,IAAA,EAAM,6DAAA,EAA8D,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GACjG;AACJ;AC9SA,eAAsB,sBAAA,CAClB,KAAA,EACA,MAAA,GAAmD,EAAC,EACtB;AAC9B,EAAA,MAAM;AAAA,IACF,cAAA,GAAiB;AAAA,GACrB,GAAI,MAAA;AACJ,EAAA,OAAO,MAAM,wBAAA,CAAyB;AAAA,IAClC,cAAA;AAAA,IACA,KAAA,EAAO;AAAA,MACHpB,iBAAAA,EAAkB,CAAE,MAAA,CAAO,KAAA,CAAM,KAAK,CAAA;AAAA,MACtCA,iBAAAA,EAAkB,CAAE,MAAA,CAAO,KAAA,CAAM,YAAY,CAAA;AAAA,MAC7CA,iBAAAA,EAAkB,CAAE,MAAA,CAAO,KAAA,CAAM,IAAI;AAAA;AACzC,GACH,CAAA;AACL;;;ACAO,IAAM,qCAAA,GAAwC;AAE9C,SAAS,0CAAA,GAA6C;AACzD,EAAA,OAAOK,YAAAA,EAAa,CAAE,MAAA,CAAO,qCAAqC,CAAA;AACtE;AA+BO,SAAS,8CAAA,GAA6G;AACzH,EAAA,OAAOc,gBAAAA,CAAiBhC,gBAAAA,CAAiB,CAAC,CAAC,eAAA,EAAiBkB,cAAc,CAAC,CAAC,CAAA,EAAG,CAAA,KAAA,MAAU;AAAA,IACrF,GAAG,KAAA;AAAA,IACH,aAAA,EAAe;AAAA,GACnB,CAAE,CAAA;AACN;AAEO,SAAS,8CAAA,GAAyG;AACrH,EAAA,OAAOZ,iBAAiB,CAAC,CAAC,iBAAiBc,YAAAA,EAAc,CAAC,CAAC,CAAA;AAC/D;AAEO,SAAS,4CAAA,GAGd;AACE,EAAA,OAAO9B,YAAAA;AAAA,IACH,8CAAA,EAA+C;AAAA,IAC/C,8CAAA;AAA+C,GACnD;AACJ;AAwBA,eAAsB,wCAAA,CASlB,OAQA,MAAA,EAWF;AAEE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,gCAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACtD,KAAK,EAAE,KAAA,EAAO,MAAM,GAAA,IAAO,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAClD,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACvD,MAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrD,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACvE,cAAc,EAAE,KAAA,EAAO,MAAM,YAAA,IAAgB,IAAA,EAAM,YAAY,KAAA;AAAM,GACzE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,IAAI,CAAC,QAAA,CAAS,YAAA,CAAa,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,aAAa,KAAA,GAClB,6CAAA;AAAA,EACR;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,GAAA,CAAI,KAAA,EAAO;AACrB,IAAA,QAAA,CAAS,GAAA,CAAI,KAAA,GAAQ,MAAM,sBAAA,CAAuB;AAAA,MAC9C,KAAA,EAAO,aAAA,CAAc,QAAA,CAAS,KAAA,CAAM,KAAK,CAAA;AAAA,MACzC,YAAA,EAAc,aAAA,CAAc,QAAA,CAAS,YAAA,CAAa,KAAK,CAAA;AAAA,MACvD,IAAA,EAAM,aAAA,CAAc,QAAA,CAAS,IAAA,CAAK,KAAK;AAAA,KAC1C,CAAA;AAAA,EACL;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AAC/B,IAAA,QAAA,CAAS,cAAc,KAAA,GACnB,kCAAA;AAAA,EACR;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU;AAAA,MACN,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,cAAA,CAAe,SAAS,GAAG,CAAA;AAAA,MAC3B,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,cAAA,CAAe,SAAS,IAAI,CAAA;AAAA,MAC5B,cAAA,CAAe,SAAS,aAAa,CAAA;AAAA,MACrC,cAAA,CAAe,SAAS,YAAY;AAAA,KACxC;AAAA,IACA,IAAA,EAAM,8CAAA,EAA+C,CAAE,MAAA,CAAO,EAAE,CAAA;AAAA,IAChE;AAAA,GASH,CAAA;AACL;AAwBO,SAAS,mCAAA,CASZ,OAQA,MAAA,EASF;AAEE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,gCAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACtD,KAAK,EAAE,KAAA,EAAO,MAAM,GAAA,IAAO,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAClD,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACvD,MAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrD,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACvE,cAAc,EAAE,KAAA,EAAO,MAAM,YAAA,IAAgB,IAAA,EAAM,YAAY,KAAA;AAAM,GACzE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,IAAI,CAAC,QAAA,CAAS,YAAA,CAAa,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,aAAa,KAAA,GAClB,6CAAA;AAAA,EACR;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AAC/B,IAAA,QAAA,CAAS,cAAc,KAAA,GACnB,kCAAA;AAAA,EACR;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU;AAAA,MACN,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,cAAA,CAAe,SAAS,GAAG,CAAA;AAAA,MAC3B,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,cAAA,CAAe,SAAS,IAAI,CAAA;AAAA,MAC5B,cAAA,CAAe,SAAS,aAAa,CAAA;AAAA,MACrC,cAAA,CAAe,SAAS,YAAY;AAAA,KACxC;AAAA,IACA,IAAA,EAAM,8CAAA,EAA+C,CAAE,MAAA,CAAO,EAAE,CAAA;AAAA,IAChE;AAAA,GASH,CAAA;AACL;AAwBO,SAAS,sCAIZ,WAAA,EAG+D;AAC/D,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU;AAAA,MACN,OAAO,cAAA,EAAe;AAAA,MACtB,KAAK,cAAA,EAAe;AAAA,MACpB,OAAO,cAAA,EAAe;AAAA,MACtB,MAAM,cAAA,EAAe;AAAA,MACrB,eAAe,cAAA,EAAe;AAAA,MAC9B,cAAc,cAAA;AAAe,KACjC;AAAA,IACA,IAAA,EAAM,8CAAA,EAA+C,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GAClF;AACJ;ACrTO,IAAM,gDAAA,GAAmD;AAEzD,SAAS,oDAAA,GAAuD;AACnE,EAAA,OAAO4B,YAAAA,EAAa,CAAE,MAAA,CAAO,gDAAgD,CAAA;AACjF;AA+BO,SAAS,wDAAA,GAAiI;AAC7I,EAAA,OAAOc,gBAAAA,CAAiBhC,gBAAAA,CAAiB,CAAC,CAAC,eAAA,EAAiBkB,cAAc,CAAC,CAAC,CAAA,EAAG,CAAA,KAAA,MAAU;AAAA,IACrF,GAAG,KAAA;AAAA,IACH,aAAA,EAAe;AAAA,GACnB,CAAE,CAAA;AACN;AAEO,SAAS,wDAAA,GAA6H;AACzI,EAAA,OAAOZ,iBAAiB,CAAC,CAAC,iBAAiBc,YAAAA,EAAc,CAAC,CAAC,CAAA;AAC/D;AAEO,SAAS,sDAAA,GAGd;AACE,EAAA,OAAO9B,YAAAA;AAAA,IACH,wDAAA,EAAyD;AAAA,IACzD,wDAAA;AAAyD,GAC7D;AACJ;AAwBA,eAAsB,kDAAA,CASlB,OAQA,MAAA,EAWF;AAEE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,gCAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACtD,KAAK,EAAE,KAAA,EAAO,MAAM,GAAA,IAAO,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAClD,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACvD,MAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrD,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACvE,cAAc,EAAE,KAAA,EAAO,MAAM,YAAA,IAAgB,IAAA,EAAM,YAAY,KAAA;AAAM,GACzE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,IAAI,CAAC,QAAA,CAAS,YAAA,CAAa,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,aAAa,KAAA,GAClB,6CAAA;AAAA,EACR;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,GAAA,CAAI,KAAA,EAAO;AACrB,IAAA,QAAA,CAAS,GAAA,CAAI,KAAA,GAAQ,MAAM,sBAAA,CAAuB;AAAA,MAC9C,KAAA,EAAO,aAAA,CAAc,QAAA,CAAS,KAAA,CAAM,KAAK,CAAA;AAAA,MACzC,YAAA,EAAc,aAAA,CAAc,QAAA,CAAS,YAAA,CAAa,KAAK,CAAA;AAAA,MACvD,IAAA,EAAM,aAAA,CAAc,QAAA,CAAS,IAAA,CAAK,KAAK;AAAA,KAC1C,CAAA;AAAA,EACL;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AAC/B,IAAA,QAAA,CAAS,cAAc,KAAA,GACnB,kCAAA;AAAA,EACR;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU;AAAA,MACN,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,cAAA,CAAe,SAAS,GAAG,CAAA;AAAA,MAC3B,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,cAAA,CAAe,SAAS,IAAI,CAAA;AAAA,MAC5B,cAAA,CAAe,SAAS,aAAa,CAAA;AAAA,MACrC,cAAA,CAAe,SAAS,YAAY;AAAA,KACxC;AAAA,IACA,IAAA,EAAM,wDAAA,EAAyD,CAAE,MAAA,CAAO,EAAE,CAAA;AAAA,IAC1E;AAAA,GASH,CAAA;AACL;AAwBO,SAAS,6CAAA,CASZ,OAQA,MAAA,EASF;AAEE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,gCAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACtD,KAAK,EAAE,KAAA,EAAO,MAAM,GAAA,IAAO,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAClD,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACvD,MAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrD,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACvE,cAAc,EAAE,KAAA,EAAO,MAAM,YAAA,IAAgB,IAAA,EAAM,YAAY,KAAA;AAAM,GACzE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,IAAI,CAAC,QAAA,CAAS,YAAA,CAAa,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,aAAa,KAAA,GAClB,6CAAA;AAAA,EACR;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AAC/B,IAAA,QAAA,CAAS,cAAc,KAAA,GACnB,kCAAA;AAAA,EACR;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU;AAAA,MACN,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,cAAA,CAAe,SAAS,GAAG,CAAA;AAAA,MAC3B,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,cAAA,CAAe,SAAS,IAAI,CAAA;AAAA,MAC5B,cAAA,CAAe,SAAS,aAAa,CAAA;AAAA,MACrC,cAAA,CAAe,SAAS,YAAY;AAAA,KACxC;AAAA,IACA,IAAA,EAAM,wDAAA,EAAyD,CAAE,MAAA,CAAO,EAAE,CAAA;AAAA,IAC1E;AAAA,GASH,CAAA;AACL;AAwBO,SAAS,gDAIZ,WAAA,EAGyE;AACzE,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU;AAAA,MACN,OAAO,cAAA,EAAe;AAAA,MACtB,KAAK,cAAA,EAAe;AAAA,MACpB,OAAO,cAAA,EAAe;AAAA,MACtB,MAAM,cAAA,EAAe;AAAA,MACrB,eAAe,cAAA,EAAe;AAAA,MAC9B,cAAc,cAAA;AAAe,KACjC;AAAA,IACA,IAAA,EAAM,wDAAA,EAAyD,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GAC5F;AACJ;ACtTO,IAAM,gCAAA,GAAmC;AAEzC,SAAS,qCAAA,GAAwC;AACpD,EAAA,OAAO4B,YAAAA,EAAa,CAAE,MAAA,CAAO,gCAAgC,CAAA;AACjE;AAyBO,SAAS,yCAAA,GAAmG;AAC/G,EAAA,OAAOc,gBAAAA,CAAiBhC,gBAAAA,CAAiB,CAAC,CAAC,eAAA,EAAiBkB,cAAc,CAAC,CAAC,CAAA,EAAG,CAAA,KAAA,MAAU;AAAA,IACrF,GAAG,KAAA;AAAA,IACH,aAAA,EAAe;AAAA,GACnB,CAAE,CAAA;AACN;AAEO,SAAS,yCAAA,GAA+F;AAC3G,EAAA,OAAOZ,iBAAiB,CAAC,CAAC,iBAAiBc,YAAAA,EAAc,CAAC,CAAC,CAAA;AAC/D;AAEO,SAAS,uCAAA,GAGd;AACE,EAAA,OAAO9B,YAAAA,CAAa,yCAAA,EAA0C,EAAG,yCAAA,EAA2C,CAAA;AAChH;AAeO,SAAS,8BAAA,CAMZ,OACA,MAAA,EACsG;AAEtG,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACtD,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA;AAAM,GAC3E;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AAC/B,IAAA,QAAA,CAAS,cAAc,KAAA,GACnB,kCAAA;AAAA,EACR;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU;AAAA,MACN,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,aAAa;AAAA,KACzC;AAAA,IACA,IAAA,EAAM,yCAAA,EAA0C,CAAE,MAAA,CAAO,EAAE,CAAA;AAAA,IAC3D;AAAA,GACuG,CAAA;AAC/G;AAkBO,SAAS,iCACZ,WAAA,EAG0D;AAC1D,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU,EAAE,KAAA,EAAO,cAAA,EAAe,EAAG,YAAY,cAAA,EAAe,EAAG,aAAA,EAAe,cAAA,EAAe,EAAE;AAAA,IACnG,IAAA,EAAM,yCAAA,EAA0C,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GAC7E;AACJ;ACrIO,IAAM,0CAAA,GAA6C;AAEnD,SAAS,+CAAA,GAAkD;AAC9D,EAAA,OAAO4B,YAAAA,EAAa,CAAE,MAAA,CAAO,0CAA0C,CAAA;AAC3E;AAEO,IAAM,gEAAA,GAAmE;AAEzE,SAAS,mEAAA,GAAsE;AAClF,EAAA,OAAOA,YAAAA,EAAa,CAAE,MAAA,CAAO,gEAAgE,CAAA;AACjG;AAwBO,SAAS,mDAAA,GAAuH;AACnI,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,mCAAA,EAAqCA,YAAAA,EAAc;AAAA,KACvD,CAAA;AAAA,IACD,CAAA,KAAA,MAAU;AAAA,MACN,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,0CAAA;AAAA,MACf,iCAAA,EAAmC;AAAA,KACvC;AAAA,GACJ;AACJ;AAEO,SAAS,mDAAA,GAAmH;AAC/H,EAAA,OAAOZ,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,mCAAA,EAAqCA,YAAAA,EAAc;AAAA,GACvD,CAAA;AACL;AAEO,SAAS,iDAAA,GAGd;AACE,EAAA,OAAO9B,YAAAA;AAAA,IACH,mDAAA,EAAoD;AAAA,IACpD,mDAAA;AAAoD,GACxD;AACJ;AAaO,SAAS,wCAAA,CAKZ,OACA,MAAA,EAOF;AAEE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACtD,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA;AAAM,GACnE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,MAAM,qBAAoC,IAAA,CAAK,YAAA,IAAgB,EAAC,EAAG,IAAI,CAAA,MAAA,MAAW;AAAA,IAC9E,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,MAAM2C,WAAAA,CAAY,eAAA;AAAA,IAClB;AAAA,GACJ,CAAE,CAAA;AAEF,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU,CAAC,cAAA,CAAe,QAAA,CAAS,KAAK,CAAA,EAAG,cAAA,CAAe,QAAA,CAAS,SAAS,CAAA,EAAG,GAAG,iBAAiB,CAAA;AAAA,IACnG,IAAA,EAAM,mDAAA,EAAoD,CAAE,MAAA,CAAO,EAAE,CAAA;AAAA,IACrE;AAAA,GAOH,CAAA;AACL;AAgBO,SAAS,2CAIZ,WAAA,EAGoE;AACpE,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,UAAU,EAAE,KAAA,EAAO,gBAAe,EAAG,SAAA,EAAW,gBAAe,EAAE;AAAA,IACjE,IAAA,EAAM,mDAAA,EAAoD,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GACvF;AACJ;ACjKO,IAAM,+BAAA,GAAkC;AAExC,SAAS,oCAAA,GAAuC;AACnD,EAAA,OAAOf,YAAAA,EAAa,CAAE,MAAA,CAAO,+BAA+B,CAAA;AAChE;AAEO,IAAM,yCAAA,GAA4C;AAElD,SAAS,4CAAA,GAA+C;AAC3D,EAAA,OAAOA,YAAAA,EAAa,CAAE,MAAA,CAAO,yCAAyC,CAAA;AAC1E;AAqBO,SAAS,wCAAA,GAAiG;AAC7G,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,uBAAA,EAAyBA,YAAAA,EAAc;AAAA,KAC3C,CAAA;AAAA,IACD,CAAA,KAAA,MAAU;AAAA,MACN,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,+BAAA;AAAA,MACf,qBAAA,EAAuB;AAAA,KAC3B;AAAA,GACJ;AACJ;AAEO,SAAS,wCAAA,GAA6F;AACzG,EAAA,OAAOZ,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,uBAAA,EAAyBA,YAAAA,EAAc;AAAA,GAC3C,CAAA;AACL;AAEO,SAAS,sCAAA,GAGd;AACE,EAAA,OAAO9B,YAAAA,CAAa,wCAAA,EAAyC,EAAG,wCAAA,EAA0C,CAAA;AAC9G;AAUO,SAAS,6BAAA,CAKZ,OACA,MAAA,EAOF;AAEE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACtD,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,KAAA;AAAM,GAC3D;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,MAAM,qBAAoC,IAAA,CAAK,YAAA,IAAgB,EAAC,EAAG,IAAI,CAAA,MAAA,MAAW;AAAA,IAC9E,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,MAAM2C,WAAAA,CAAY,eAAA;AAAA,IAClB;AAAA,GACJ,CAAE,CAAA;AAEF,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU,CAAC,cAAA,CAAe,QAAA,CAAS,KAAK,CAAA,EAAG,cAAA,CAAe,QAAA,CAAS,KAAK,CAAA,EAAG,GAAG,iBAAiB,CAAA;AAAA,IAC/F,IAAA,EAAM,wCAAA,EAAyC,CAAE,MAAA,CAAO,EAAE,CAAA;AAAA,IAC1D;AAAA,GAOH,CAAA;AACL;AAgBO,SAAS,gCACZ,WAAA,EAGyD;AACzD,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,UAAU,EAAE,KAAA,EAAO,gBAAe,EAAG,KAAA,EAAO,gBAAe,EAAE;AAAA,IAC7D,IAAA,EAAM,wCAAA,EAAyC,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GAC5E;AACJ;ACrJO,IAAM,qCAAA,GAAwC;AAE9C,SAAS,yCAAA,GAA4C;AACxD,EAAA,OAAOf,YAAAA,EAAa,CAAE,MAAA,CAAO,qCAAqC,CAAA;AACtE;AAEO,IAAM,+DAAA,GAAkE;AAExE,SAAS,gEAAA,GAAmE;AAC/E,EAAA,OAAOA,YAAAA,EAAa,CAAE,MAAA,CAAO,+DAA+D,CAAA;AAChG;AAwBO,SAAS,6CAAA,GAA2G;AACvH,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,sCAAA,EAAwCA,YAAAA,EAAc;AAAA,KAC1D,CAAA;AAAA,IACD,CAAA,KAAA,MAAU;AAAA,MACN,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,qCAAA;AAAA,MACf,oCAAA,EAAsC;AAAA,KAC1C;AAAA,GACJ;AACJ;AAEO,SAAS,6CAAA,GAAuG;AACnH,EAAA,OAAOZ,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,sCAAA,EAAwCA,YAAAA,EAAc;AAAA,GAC1D,CAAA;AACL;AAEO,SAAS,2CAAA,GAGd;AACE,EAAA,OAAO9B,YAAAA;AAAA,IACH,6CAAA,EAA8C;AAAA,IAC9C,6CAAA;AAA8C,GAClD;AACJ;AAaO,SAAS,kCAAA,CAKZ,OACA,MAAA,EAOF;AAEE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,MAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACpD,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA;AAAM,GACnE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,MAAM,qBAAoC,IAAA,CAAK,YAAA,IAAgB,EAAC,EAAG,IAAI,CAAA,MAAA,MAAW;AAAA,IAC9E,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,MAAM2C,WAAAA,CAAY,eAAA;AAAA,IAClB;AAAA,GACJ,CAAE,CAAA;AAEF,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU,CAAC,cAAA,CAAe,QAAA,CAAS,IAAI,CAAA,EAAG,cAAA,CAAe,QAAA,CAAS,SAAS,CAAA,EAAG,GAAG,iBAAiB,CAAA;AAAA,IAClG,IAAA,EAAM,6CAAA,EAA8C,CAAE,MAAA,CAAO,EAAE,CAAA;AAAA,IAC/D;AAAA,GAOH,CAAA;AACL;AAgBO,SAAS,qCAIZ,WAAA,EAG8D;AAC9D,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,UAAU,EAAE,IAAA,EAAM,gBAAe,EAAG,SAAA,EAAW,gBAAe,EAAE;AAAA,IAChE,IAAA,EAAM,6CAAA,EAA8C,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GACjF;AACJ;ACjKO,IAAM,oCAAA,GAAuC;AAE7C,SAAS,yCAAA,GAA4C;AACxD,EAAA,OAAOf,YAAAA,EAAa,CAAE,MAAA,CAAO,oCAAoC,CAAA;AACrE;AAEO,IAAM,mDAAA,GAAsD;AAE5D,SAAS,sDAAA,GAAyD;AACrE,EAAA,OAAOA,YAAAA,EAAa,CAAE,MAAA,CAAO,mDAAmD,CAAA;AACpF;AAqBO,SAAS,6CAAA,GAA2G;AACvH,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,4BAAA,EAA8BA,YAAAA,EAAc;AAAA,KAChD,CAAA;AAAA,IACD,CAAA,KAAA,MAAU;AAAA,MACN,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,oCAAA;AAAA,MACf,0BAAA,EAA4B;AAAA,KAChC;AAAA,GACJ;AACJ;AAEO,SAAS,6CAAA,GAAuG;AACnH,EAAA,OAAOZ,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,4BAAA,EAA8BA,YAAAA,EAAc;AAAA,GAChD,CAAA;AACL;AAEO,SAAS,2CAAA,GAGd;AACE,EAAA,OAAO9B,YAAAA;AAAA,IACH,6CAAA,EAA8C;AAAA,IAC9C,6CAAA;AAA8C,GAClD;AACJ;AAUO,SAAS,kCAAA,CAKZ,OACA,MAAA,EAOF;AAEE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACtD,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,KAAA;AAAM,GAC3D;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,MAAM,qBAAoC,IAAA,CAAK,YAAA,IAAgB,EAAC,EAAG,IAAI,CAAA,MAAA,MAAW;AAAA,IAC9E,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,MAAM2C,WAAAA,CAAY,eAAA;AAAA,IAClB;AAAA,GACJ,CAAE,CAAA;AAEF,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU,CAAC,cAAA,CAAe,QAAA,CAAS,KAAK,CAAA,EAAG,cAAA,CAAe,QAAA,CAAS,KAAK,CAAA,EAAG,GAAG,iBAAiB,CAAA;AAAA,IAC/F,IAAA,EAAM,6CAAA,EAA8C,CAAE,MAAA,CAAO,EAAE,CAAA;AAAA,IAC/D;AAAA,GAOH,CAAA;AACL;AAgBO,SAAS,qCAIZ,WAAA,EAG8D;AAC9D,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,UAAU,EAAE,KAAA,EAAO,gBAAe,EAAG,KAAA,EAAO,gBAAe,EAAE;AAAA,IAC7D,IAAA,EAAM,6CAAA,EAA8C,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GACjF;AACJ;AC3JO,IAAM,8CAAA,GAAiD;AAEvD,SAAS,kDAAA,GAAqD;AACjE,EAAA,OAAOf,YAAAA,EAAa,CAAE,MAAA,CAAO,8CAA8C,CAAA;AAC/E;AAEO,IAAM,oEAAA,GAAuE;AAE7E,SAAS,sEAAA,GAAyE;AACrF,EAAA,OAAOA,YAAAA,EAAa,CAAE,MAAA,CAAO,oEAAoE,CAAA;AACrG;AAwBO,SAAS,sDAAA,GAA6H;AACzI,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,mCAAA,EAAqCA,YAAAA,EAAc;AAAA,KACvD,CAAA;AAAA,IACD,CAAA,KAAA,MAAU;AAAA,MACN,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,8CAAA;AAAA,MACf,iCAAA,EAAmC;AAAA,KACvC;AAAA,GACJ;AACJ;AAEO,SAAS,sDAAA,GAAyH;AACrI,EAAA,OAAOZ,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,mCAAA,EAAqCA,YAAAA,EAAc;AAAA,GACvD,CAAA;AACL;AAEO,SAAS,oDAAA,GAGd;AACE,EAAA,OAAO9B,YAAAA;AAAA,IACH,sDAAA,EAAuD;AAAA,IACvD,sDAAA;AAAuD,GAC3D;AACJ;AAaO,SAAS,2CAAA,CAKZ,OACA,MAAA,EAOF;AAEE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACtD,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA;AAAM,GACnE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,MAAM,qBAAoC,IAAA,CAAK,YAAA,IAAgB,EAAC,EAAG,IAAI,CAAA,MAAA,MAAW;AAAA,IAC9E,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,MAAM2C,WAAAA,CAAY,eAAA;AAAA,IAClB;AAAA,GACJ,CAAE,CAAA;AAEF,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU,CAAC,cAAA,CAAe,QAAA,CAAS,KAAK,CAAA,EAAG,cAAA,CAAe,QAAA,CAAS,SAAS,CAAA,EAAG,GAAG,iBAAiB,CAAA;AAAA,IACnG,IAAA,EAAM,sDAAA,EAAuD,CAAE,MAAA,CAAO,EAAE,CAAA;AAAA,IACxE;AAAA,GAOH,CAAA;AACL;AAgBO,SAAS,8CAIZ,WAAA,EAGuE;AACvE,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,UAAU,EAAE,KAAA,EAAO,gBAAe,EAAG,SAAA,EAAW,gBAAe,EAAE;AAAA,IACjE,IAAA,EAAM,sDAAA,EAAuD,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GAC1F;AACJ;AC/JO,IAAM,iCAAA,GAAoC,IAAI,UAAA,CAAW,CAAC,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,EAAA,EAAI,EAAA,EAAI,GAAA,EAAK,EAAE,CAAC;AAE9F,SAAS,sCAAA,GAAyC;AACrD,EAAA,OAAOzC,eAAAA,EAAgB,CAAE,MAAA,CAAO,iCAAiC,CAAA;AACrE;AA2BO,SAAS,0CAAA,GAA4F;AACxG,EAAA,OAAOwC,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBR,eAAAA,EAAiB,CAAA;AAAA,MACnC,CAAC,OAAA,EAASoB,gBAAAA,CAAiBF,aAAAA,EAAe,CAAC,CAAA;AAAA,MAC3C,CAAC,KAAA,EAAOE,gBAAAA,CAAiBF,aAAAA,EAAe,CAAC;AAAA,KAC5C,CAAA;AAAA,IACD,CAAA,KAAA,MAAU;AAAA,MACN,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,iCAAA;AAAA,MACf,KAAA,EAAO,KAAA,CAAM,KAAA,IAAS,IAAA,EAAK;AAAA,MAC3B,GAAA,EAAK,KAAA,CAAM,GAAA,IAAO,IAAA;AAAK,KAC3B;AAAA,GACJ;AACJ;AAEO,SAAS,0CAAA,GAAwF;AACpG,EAAA,OAAOJ,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBZ,eAAAA,EAAiB,CAAA;AAAA,IACnC,CAAC,OAAA,EAASqB,gBAAAA,CAAiBJ,aAAAA,EAAe,CAAC,CAAA;AAAA,IAC3C,CAAC,KAAA,EAAOI,gBAAAA,CAAiBJ,aAAAA,EAAe,CAAC;AAAA,GAC5C,CAAA;AACL;AAEO,SAAS,wCAAA,GAGd;AACE,EAAA,OAAOrB,YAAAA,CAAa,0CAAA,EAA2C,EAAG,0CAAA,EAA4C,CAAA;AAClH;AAQO,SAAS,+BAAA,CAIZ,OACA,MAAA,EAC+D;AAE/D,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB,EAAE,QAAA,EAAU,EAAE,KAAA,EAAO,MAAM,QAAA,IAAY,IAAA,EAAM,UAAA,EAAY,KAAA,EAAM,EAAE;AAC1F,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAExB,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU,CAAC,cAAA,CAAe,QAAA,CAAS,QAAQ,CAAC,CAAA;AAAA,IAC5C,IAAA,EAAM,0CAAA,EAA2C,CAAE,MAAA,CAAO,IAA4C,CAAA;AAAA,IACtG;AAAA,GACgE,CAAA;AACxE;AAaO,SAAS,kCAIZ,WAAA,EAG2D;AAC3D,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU,EAAE,QAAA,EAAU,cAAA,EAAe,EAAE;AAAA,IACvC,IAAA,EAAM,0CAAA,EAA2C,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GAC9E;AACJ;AC/HO,IAAM,iDAAA,GAAoD;AAE1D,SAAS,qDAAA,GAAwD;AACpE,EAAA,OAAO4B,YAAAA,EAAa,CAAE,MAAA,CAAO,iDAAiD,CAAA;AAClF;AAEO,IAAM,uEAAA,GAA0E;AAEhF,SAAS,yEAAA,GAA4E;AACxF,EAAA,OAAOA,YAAAA,EAAa,CAAE,MAAA,CAAO,uEAAuE,CAAA;AACxG;AA4CO,SAAS,yDAAA,GAAmI;AAC/I,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,mCAAA,EAAqCA,YAAAA,EAAc,CAAA;AAAA,MACpD,CAAC,wBAAA,EAA0BgB,YAAAA,EAAc;AAAA,KAC5C,CAAA;AAAA,IACD,CAAA,KAAA,MAAU;AAAA,MACN,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,iDAAA;AAAA,MACf,iCAAA,EAAmC;AAAA,KACvC;AAAA,GACJ;AACJ;AAEO,SAAS,yDAAA,GAA+H;AAC3I,EAAA,OAAO5B,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,mCAAA,EAAqCA,YAAAA,EAAc,CAAA;AAAA,IACpD,CAAC,wBAAA,EAA0Be,YAAAA,EAAc;AAAA,GAC5C,CAAA;AACL;AAEO,SAAS,uDAAA,GAGd;AACE,EAAA,OAAO7C,YAAAA;AAAA,IACH,yDAAA,EAA0D;AAAA,IAC1D,yDAAA;AAA0D,GAC9D;AACJ;AAyBO,SAAS,8CAAA,CAOZ,OAMA,MAAA,EASF;AAEE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACtD,kCAAkC,EAAE,KAAA,EAAO,MAAM,gCAAA,IAAoC,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC7G,QAAQ,EAAE,KAAA,EAAO,MAAM,MAAA,IAAU,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACzD,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA;AAAM,GACnE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,IAAI,CAAC,QAAA,CAAS,gCAAA,CAAiC,KAAA,EAAO;AAClD,IAAA,QAAA,CAAS,iCAAiC,KAAA,GACtC,6CAAA;AAAA,EACR;AAGA,EAAA,MAAM,qBAAoC,IAAA,CAAK,YAAA,IAAgB,EAAC,EAAG,IAAI,CAAA,MAAA,MAAW;AAAA,IAC9E,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,MAAM2C,WAAAA,CAAY,eAAA;AAAA,IAClB;AAAA,GACJ,CAAE,CAAA;AAEF,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU;AAAA,MACN,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,cAAA,CAAe,SAAS,gCAAgC,CAAA;AAAA,MACxD,cAAA,CAAe,SAAS,MAAM,CAAA;AAAA,MAC9B,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,GAAG;AAAA,KACP;AAAA,IACA,IAAA,EAAM,2DAA0D,CAAE,MAAA;AAAA,MAC9D;AAAA,KACJ;AAAA,IACA;AAAA,GASH,CAAA;AACL;AAyBO,SAAS,iDAIZ,WAAA,EAG0E;AAC1E,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,MAAM,yBAAyB,MAAM;AACjC,IAAA,MAAM,cAAc,cAAA,EAAe;AACnC,IAAA,OAAO,WAAA,CAAY,OAAA,KAAY,0BAAA,GAA6B,MAAA,GAAY,WAAA;AAAA,EAC5E,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU;AAAA,MACN,OAAO,cAAA,EAAe;AAAA,MACtB,kCAAkC,cAAA,EAAe;AAAA,MACjD,QAAQ,sBAAA,EAAuB;AAAA,MAC/B,WAAW,cAAA;AAAe,KAC9B;AAAA,IACA,IAAA,EAAM,yDAAA,EAA0D,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GAC7F;AACJ;AClPO,IAAM,yCAAA,GAA4C;AAElD,SAAS,8CAAA,GAAiD;AAC7D,EAAA,OAAOf,YAAAA,EAAa,CAAE,MAAA,CAAO,yCAAyC,CAAA;AAC1E;AAEO,IAAM,+DAAA,GAAkE;AAExE,SAAS,kEAAA,GAAqE;AACjF,EAAA,OAAOA,YAAAA,EAAa,CAAE,MAAA,CAAO,+DAA+D,CAAA;AAChG;AAwBO,SAAS,kDAAA,GAAqH;AACjI,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,mCAAA,EAAqCA,YAAAA,EAAc;AAAA,KACvD,CAAA;AAAA,IACD,CAAA,KAAA,MAAU;AAAA,MACN,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,yCAAA;AAAA,MACf,iCAAA,EAAmC;AAAA,KACvC;AAAA,GACJ;AACJ;AAEO,SAAS,kDAAA,GAAiH;AAC7H,EAAA,OAAOZ,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,mCAAA,EAAqCA,YAAAA,EAAc;AAAA,GACvD,CAAA;AACL;AAEO,SAAS,gDAAA,GAGd;AACE,EAAA,OAAO9B,YAAAA;AAAA,IACH,kDAAA,EAAmD;AAAA,IACnD,kDAAA;AAAmD,GACvD;AACJ;AAaO,SAAS,uCAAA,CAKZ,OACA,MAAA,EAOF;AAEE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACtD,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA;AAAM,GACnE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,MAAM,qBAAoC,IAAA,CAAK,YAAA,IAAgB,EAAC,EAAG,IAAI,CAAA,MAAA,MAAW;AAAA,IAC9E,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,MAAM2C,WAAAA,CAAY,eAAA;AAAA,IAClB;AAAA,GACJ,CAAE,CAAA;AAEF,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU,CAAC,cAAA,CAAe,QAAA,CAAS,KAAK,CAAA,EAAG,cAAA,CAAe,QAAA,CAAS,SAAS,CAAA,EAAG,GAAG,iBAAiB,CAAA;AAAA,IACnG,IAAA,EAAM,kDAAA,EAAmD,CAAE,MAAA,CAAO,EAAE,CAAA;AAAA,IACpE;AAAA,GAOH,CAAA;AACL;AAgBO,SAAS,0CAIZ,WAAA,EAGmE;AACnE,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,UAAU,EAAE,KAAA,EAAO,gBAAe,EAAG,SAAA,EAAW,gBAAe,EAAE;AAAA,IACjE,IAAA,EAAM,kDAAA,EAAmD,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GACtF;AACJ;ACjKO,IAAM,8BAAA,GAAiC;AAEvC,SAAS,mCAAA,GAAsC;AAClD,EAAA,OAAOf,YAAAA,EAAa,CAAE,MAAA,CAAO,8BAA8B,CAAA;AAC/D;AAEO,IAAM,wCAAA,GAA2C;AAEjD,SAAS,2CAAA,GAA8C;AAC1D,EAAA,OAAOA,YAAAA,EAAa,CAAE,MAAA,CAAO,wCAAwC,CAAA;AACzE;AAqBO,SAAS,uCAAA,GAA+F;AAC3G,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,uBAAA,EAAyBA,YAAAA,EAAc;AAAA,KAC3C,CAAA;AAAA,IACD,CAAA,KAAA,MAAU;AAAA,MACN,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,8BAAA;AAAA,MACf,qBAAA,EAAuB;AAAA,KAC3B;AAAA,GACJ;AACJ;AAEO,SAAS,uCAAA,GAA2F;AACvG,EAAA,OAAOZ,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,uBAAA,EAAyBA,YAAAA,EAAc;AAAA,GAC3C,CAAA;AACL;AAEO,SAAS,qCAAA,GAGd;AACE,EAAA,OAAO9B,YAAAA,CAAa,uCAAA,EAAwC,EAAG,uCAAA,EAAyC,CAAA;AAC5G;AAUO,SAAS,4BAAA,CAKZ,OACA,MAAA,EAOF;AAEE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACtD,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,KAAA;AAAM,GAC3D;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,MAAM,qBAAoC,IAAA,CAAK,YAAA,IAAgB,EAAC,EAAG,IAAI,CAAA,MAAA,MAAW;AAAA,IAC9E,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,MAAM2C,WAAAA,CAAY,eAAA;AAAA,IAClB;AAAA,GACJ,CAAE,CAAA;AAEF,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU,CAAC,cAAA,CAAe,QAAA,CAAS,KAAK,CAAA,EAAG,cAAA,CAAe,QAAA,CAAS,KAAK,CAAA,EAAG,GAAG,iBAAiB,CAAA;AAAA,IAC/F,IAAA,EAAM,uCAAA,EAAwC,CAAE,MAAA,CAAO,EAAE,CAAA;AAAA,IACzD;AAAA,GAOH,CAAA;AACL;AAgBO,SAAS,+BACZ,WAAA,EAGwD;AACxD,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,UAAU,EAAE,KAAA,EAAO,gBAAe,EAAG,KAAA,EAAO,gBAAe,EAAE;AAAA,IAC7D,IAAA,EAAM,uCAAA,EAAwC,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GAC3E;AACJ;ACrJO,IAAM,oCAAA,GAAuC;AAE7C,SAAS,wCAAA,GAA2C;AACvD,EAAA,OAAOf,YAAAA,EAAa,CAAE,MAAA,CAAO,oCAAoC,CAAA;AACrE;AAEO,IAAM,8DAAA,GAAiE;AAEvE,SAAS,+DAAA,GAAkE;AAC9E,EAAA,OAAOA,YAAAA,EAAa,CAAE,MAAA,CAAO,8DAA8D,CAAA;AAC/F;AAwBO,SAAS,4CAAA,GAAyG;AACrH,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,sCAAA,EAAwCA,YAAAA,EAAc;AAAA,KAC1D,CAAA;AAAA,IACD,CAAA,KAAA,MAAU;AAAA,MACN,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,oCAAA;AAAA,MACf,oCAAA,EAAsC;AAAA,KAC1C;AAAA,GACJ;AACJ;AAEO,SAAS,4CAAA,GAAqG;AACjH,EAAA,OAAOZ,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,sCAAA,EAAwCA,YAAAA,EAAc;AAAA,GAC1D,CAAA;AACL;AAEO,SAAS,0CAAA,GAGd;AACE,EAAA,OAAO9B,YAAAA,CAAa,4CAAA,EAA6C,EAAG,4CAAA,EAA8C,CAAA;AACtH;AAaO,SAAS,iCAAA,CAKZ,OACA,MAAA,EAOF;AAEE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,MAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACpD,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA;AAAM,GACnE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,MAAM,qBAAoC,IAAA,CAAK,YAAA,IAAgB,EAAC,EAAG,IAAI,CAAA,MAAA,MAAW;AAAA,IAC9E,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,MAAM2C,WAAAA,CAAY,eAAA;AAAA,IAClB;AAAA,GACJ,CAAE,CAAA;AAEF,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU,CAAC,cAAA,CAAe,QAAA,CAAS,IAAI,CAAA,EAAG,cAAA,CAAe,QAAA,CAAS,SAAS,CAAA,EAAG,GAAG,iBAAiB,CAAA;AAAA,IAClG,IAAA,EAAM,4CAAA,EAA6C,CAAE,MAAA,CAAO,EAAE,CAAA;AAAA,IAC9D;AAAA,GAOH,CAAA;AACL;AAgBO,SAAS,oCAIZ,WAAA,EAG6D;AAC7D,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,UAAU,EAAE,IAAA,EAAM,gBAAe,EAAG,SAAA,EAAW,gBAAe,EAAE;AAAA,IAChE,IAAA,EAAM,4CAAA,EAA6C,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GAChF;AACJ;AC9JO,IAAM,mCAAA,GAAsC;AAE5C,SAAS,wCAAA,GAA2C;AACvD,EAAA,OAAOf,YAAAA,EAAa,CAAE,MAAA,CAAO,mCAAmC,CAAA;AACpE;AAEO,IAAM,kDAAA,GAAqD;AAE3D,SAAS,qDAAA,GAAwD;AACpE,EAAA,OAAOA,YAAAA,EAAa,CAAE,MAAA,CAAO,kDAAkD,CAAA;AACnF;AAqBO,SAAS,4CAAA,GAAyG;AACrH,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,4BAAA,EAA8BA,YAAAA,EAAc;AAAA,KAChD,CAAA;AAAA,IACD,CAAA,KAAA,MAAU;AAAA,MACN,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,mCAAA;AAAA,MACf,0BAAA,EAA4B;AAAA,KAChC;AAAA,GACJ;AACJ;AAEO,SAAS,4CAAA,GAAqG;AACjH,EAAA,OAAOZ,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,4BAAA,EAA8BA,YAAAA,EAAc;AAAA,GAChD,CAAA;AACL;AAEO,SAAS,0CAAA,GAGd;AACE,EAAA,OAAO9B,YAAAA,CAAa,4CAAA,EAA6C,EAAG,4CAAA,EAA8C,CAAA;AACtH;AAUO,SAAS,iCAAA,CAKZ,OACA,MAAA,EAOF;AAEE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACtD,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,KAAA;AAAM,GAC3D;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,MAAM,qBAAoC,IAAA,CAAK,YAAA,IAAgB,EAAC,EAAG,IAAI,CAAA,MAAA,MAAW;AAAA,IAC9E,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,MAAM2C,WAAAA,CAAY,eAAA;AAAA,IAClB;AAAA,GACJ,CAAE,CAAA;AAEF,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU,CAAC,cAAA,CAAe,QAAA,CAAS,KAAK,CAAA,EAAG,cAAA,CAAe,QAAA,CAAS,KAAK,CAAA,EAAG,GAAG,iBAAiB,CAAA;AAAA,IAC/F,IAAA,EAAM,4CAAA,EAA6C,CAAE,MAAA,CAAO,EAAE,CAAA;AAAA,IAC9D;AAAA,GAOH,CAAA;AACL;AAgBO,SAAS,oCAIZ,WAAA,EAG6D;AAC7D,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,UAAU,EAAE,KAAA,EAAO,gBAAe,EAAG,KAAA,EAAO,gBAAe,EAAE;AAAA,IAC7D,IAAA,EAAM,4CAAA,EAA6C,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GAChF;AACJ;ACxJO,IAAM,6CAAA,GAAgD;AAEtD,SAAS,iDAAA,GAAoD;AAChE,EAAA,OAAOf,YAAAA,EAAa,CAAE,MAAA,CAAO,6CAA6C,CAAA;AAC9E;AAEO,IAAM,mEAAA,GAAsE;AAE5E,SAAS,qEAAA,GAAwE;AACpF,EAAA,OAAOA,YAAAA,EAAa,CAAE,MAAA,CAAO,mEAAmE,CAAA;AACpG;AAwBO,SAAS,qDAAA,GAA2H;AACvI,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,mCAAA,EAAqCA,YAAAA,EAAc;AAAA,KACvD,CAAA;AAAA,IACD,CAAA,KAAA,MAAU;AAAA,MACN,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,6CAAA;AAAA,MACf,iCAAA,EAAmC;AAAA,KACvC;AAAA,GACJ;AACJ;AAEO,SAAS,qDAAA,GAAuH;AACnI,EAAA,OAAOZ,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,mCAAA,EAAqCA,YAAAA,EAAc;AAAA,GACvD,CAAA;AACL;AAEO,SAAS,mDAAA,GAGd;AACE,EAAA,OAAO9B,YAAAA;AAAA,IACH,qDAAA,EAAsD;AAAA,IACtD,qDAAA;AAAsD,GAC1D;AACJ;AAaO,SAAS,0CAAA,CAKZ,OACA,MAAA,EAOF;AAEE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACtD,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA;AAAM,GACnE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,MAAM,qBAAoC,IAAA,CAAK,YAAA,IAAgB,EAAC,EAAG,IAAI,CAAA,MAAA,MAAW;AAAA,IAC9E,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,MAAM2C,WAAAA,CAAY,eAAA;AAAA,IAClB;AAAA,GACJ,CAAE,CAAA;AAEF,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU,CAAC,cAAA,CAAe,QAAA,CAAS,KAAK,CAAA,EAAG,cAAA,CAAe,QAAA,CAAS,SAAS,CAAA,EAAG,GAAG,iBAAiB,CAAA;AAAA,IACnG,IAAA,EAAM,qDAAA,EAAsD,CAAE,MAAA,CAAO,EAAE,CAAA;AAAA,IACvE;AAAA,GAOH,CAAA;AACL;AAgBO,SAAS,6CAIZ,WAAA,EAGsE;AACtE,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,UAAU,EAAE,KAAA,EAAO,gBAAe,EAAG,SAAA,EAAW,gBAAe,EAAE;AAAA,IACjE,IAAA,EAAM,qDAAA,EAAsD,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GACzF;AACJ;ACjKO,IAAM,4BAAA,GAA+B;AAErC,SAAS,kCAAA,GAAqC;AACjD,EAAA,OAAOf,YAAAA,EAAa,CAAE,MAAA,CAAO,4BAA4B,CAAA;AAC7D;AAuBO,SAAS,sCAAA,GAA6F;AACzG,EAAA,OAAOc,gBAAAA,CAAiBhC,gBAAAA,CAAiB,CAAC,CAAC,eAAA,EAAiBkB,cAAc,CAAC,CAAC,CAAA,EAAG,CAAA,KAAA,MAAU;AAAA,IACrF,GAAG,KAAA;AAAA,IACH,aAAA,EAAe;AAAA,GACnB,CAAE,CAAA;AACN;AAEO,SAAS,sCAAA,GAAyF;AACrG,EAAA,OAAOZ,iBAAiB,CAAC,CAAC,iBAAiBc,YAAAA,EAAc,CAAC,CAAC,CAAA;AAC/D;AAEO,SAAS,oCAAA,GAGd;AACE,EAAA,OAAO9B,YAAAA,CAAa,sCAAA,EAAuC,EAAG,sCAAA,EAAwC,CAAA;AAC1G;AAgBO,SAAS,2BAAA,CAMZ,OACA,MAAA,EAQF;AAEE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,SAAS,EAAE,KAAA,EAAO,MAAM,OAAA,IAAW,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAC1D,MAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrD,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,KAAA;AAAM,GAC3D;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,MAAM,qBAAoC,IAAA,CAAK,YAAA,IAAgB,EAAC,EAAG,IAAI,CAAA,MAAA,MAAW;AAAA,IAC9E,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,MAAM2C,WAAAA,CAAY,eAAA;AAAA,IAClB;AAAA,GACJ,CAAE,CAAA;AAEF,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU;AAAA,MACN,cAAA,CAAe,SAAS,OAAO,CAAA;AAAA,MAC/B,cAAA,CAAe,SAAS,IAAI,CAAA;AAAA,MAC5B,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,GAAG;AAAA,KACP;AAAA,IACA,IAAA,EAAM,sCAAA,EAAuC,CAAE,MAAA,CAAO,EAAE,CAAA;AAAA,IACxD;AAAA,GAQH,CAAA;AACL;AAkBO,SAAS,8BACZ,WAAA,EAGuD;AACvD,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU,EAAE,OAAA,EAAS,cAAA,EAAe,EAAG,MAAM,cAAA,EAAe,EAAG,KAAA,EAAO,cAAA,EAAe,EAAE;AAAA,IACvF,IAAA,EAAM,sCAAA,EAAuC,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GAC1E;AACJ;AC7JO,IAAM,mCAAA,GAAsC;AAE5C,SAAS,uCAAA,GAA0C;AACtD,EAAA,OAAOf,YAAAA,EAAa,CAAE,MAAA,CAAO,mCAAmC,CAAA;AACpE;AAgBO,SAAS,2CAAA,GAAuG;AACnH,EAAA,OAAOc,gBAAAA,CAAiBhC,gBAAAA,CAAiB,CAAC,CAAC,eAAA,EAAiBkB,cAAc,CAAC,CAAC,CAAA,EAAG,CAAA,KAAA,MAAU;AAAA,IACrF,GAAG,KAAA;AAAA,IACH,aAAA,EAAe;AAAA,GACnB,CAAE,CAAA;AACN;AAEO,SAAS,2CAAA,GAAmG;AAC/G,EAAA,OAAOZ,iBAAiB,CAAC,CAAC,iBAAiBc,YAAAA,EAAc,CAAC,CAAC,CAAA;AAC/D;AAEO,SAAS,yCAAA,GAGd;AACE,EAAA,OAAO9B,YAAAA,CAAa,2CAAA,EAA4C,EAAG,2CAAA,EAA6C,CAAA;AACpH;AAOO,SAAS,gCAAA,CAIZ,OACA,MAAA,EAC4D;AAE5D,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB,EAAE,IAAA,EAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,UAAA,EAAY,KAAA,EAAM,EAAE;AAClF,EAAA,MAAM,QAAA,GAAW,gBAAA;AAEjB,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU,CAAC,cAAA,CAAe,QAAA,CAAS,IAAI,CAAC,CAAA;AAAA,IACxC,IAAA,EAAM,2CAAA,EAA4C,CAAE,MAAA,CAAO,EAAE,CAAA;AAAA,IAC7D;AAAA,GAC6D,CAAA;AACrE;AAcO,SAAS,mCAIZ,WAAA,EAG4D;AAC5D,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU,EAAE,IAAA,EAAM,cAAA,EAAe,EAAE;AAAA,IACnC,IAAA,EAAM,2CAAA,EAA4C,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GAC/E;AACJ;ACnGO,IAAM,6CAAA,GAAgD;AAEtD,SAAS,gDAAA,GAAmD;AAC/D,EAAA,OAAO4B,YAAAA,EAAa,CAAE,MAAA,CAAO,6CAA6C,CAAA;AAC9E;AAEO,IAAM,0DAAA,GAA6D;AAEnE,SAAS,2DAAA,GAA8D;AAC1E,EAAA,OAAOA,YAAAA,EAAa,CAAE,MAAA,CAAO,0DAA0D,CAAA;AAC3F;AAgBO,SAAS,oDAAA,GAAyH;AACrI,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,0BAAA,EAA4BA,YAAAA,EAAc;AAAA,KAC9C,CAAA;AAAA,IACD,CAAA,KAAA,MAAU;AAAA,MACN,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,6CAAA;AAAA,MACf,wBAAA,EAA0B;AAAA,KAC9B;AAAA,GACJ;AACJ;AAEO,SAAS,oDAAA,GAAqH;AACjI,EAAA,OAAOZ,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,0BAAA,EAA4BA,YAAAA,EAAc;AAAA,GAC9C,CAAA;AACL;AAEO,SAAS,kDAAA,GAGd;AACE,EAAA,OAAO9B,YAAAA;AAAA,IACH,oDAAA,EAAqD;AAAA,IACrD,oDAAA;AAAqD,GACzD;AACJ;AAQO,SAAS,yCAAA,CAIZ,OACA,MAAA,EACqE;AAErE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB,EAAE,IAAA,EAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,UAAA,EAAY,IAAA,EAAK,EAAE;AACjF,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,MAAM,iBAAA,GAAmC,IAAA,CAAK,OAAA,CAAQ,GAAA,CAAI,CAAA,OAAA,MAAY,EAAE,OAAA,EAAS,IAAA,EAAM2C,WAAAA,CAAY,QAAA,EAAS,CAAE,CAAA;AAE9G,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,UAAU,CAAC,cAAA,CAAe,SAAS,IAAI,CAAA,EAAG,GAAG,iBAAiB,CAAA;AAAA,IAC9D,IAAA,EAAM,oDAAA,EAAqD,CAAE,MAAA,CAAO,EAAE,CAAA;AAAA,IACtE;AAAA,GACsE,CAAA;AAC9E;AAcO,SAAS,4CAIZ,WAAA,EAGqE;AACrE,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU,EAAE,IAAA,EAAM,cAAA,EAAe,EAAE;AAAA,IACnC,IAAA,EAAM,oDAAA,EAAqD,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GACxF;AACJ;AC9HO,IAAM,2EAAA,GAA8E;AAEpF,SAAS,0EAAA,GAA6E;AACzF,EAAA,OAAOf,YAAAA,EAAa,CAAE,MAAA,CAAO,2EAA2E,CAAA;AAC5G;AAEO,IAAM,qGAAA,GAAwG;AAE9G,SAAS,iGAAA,GAAoG;AAChH,EAAA,OAAOA,cAAa,CAAE,MAAA;AAAA,IAClB;AAAA,GACJ;AACJ;AAmBO,SAAS,8EAAA,GAA6K;AACzL,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,sCAAA,EAAwCA,YAAAA,EAAc;AAAA,KAC1D,CAAA;AAAA,IACD,CAAA,KAAA,MAAU;AAAA,MACN,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,2EAAA;AAAA,MACf,oCAAA,EACI;AAAA,KACR;AAAA,GACJ;AACJ;AAEO,SAAS,8EAAA,GAAyK;AACrL,EAAA,OAAOZ,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,sCAAA,EAAwCA,YAAAA,EAAc;AAAA,GAC1D,CAAA;AACL;AAEO,SAAS,4EAAA,GAGd;AACE,EAAA,OAAO9B,YAAAA;AAAA,IACH,8EAAA,EAA+E;AAAA,IAC/E,8EAAA;AAA+E,GACnF;AACJ;AAQO,SAAS,mEAAA,CAIZ,OACA,MAAA,EAC+F;AAE/F,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB,EAAE,IAAA,EAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,UAAA,EAAY,IAAA,EAAK,EAAE;AACjF,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,MAAM,qBAAoC,IAAA,CAAK,OAAA,IAAW,EAAC,EAAG,IAAI,CAAA,OAAA,MAAY;AAAA,IAC1E,OAAA;AAAA,IACA,MAAM2C,WAAAA,CAAY;AAAA,GACtB,CAAE,CAAA;AAEF,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,UAAU,CAAC,cAAA,CAAe,SAAS,IAAI,CAAA,EAAG,GAAG,iBAAiB,CAAA;AAAA,IAC9D,IAAA,EAAM,8EAAA,EAA+E,CAAE,MAAA,CAAO,EAAE,CAAA;AAAA,IAChG;AAAA,GACgG,CAAA;AACxG;AAcO,SAAS,sEAIZ,WAAA,EAG+F;AAC/F,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU,EAAE,IAAA,EAAM,cAAA,EAAe,EAAE;AAAA,IACnC,IAAA,EAAM,8EAAA,EAA+E,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GAClH;AACJ;ACvIO,IAAM,gCAAA,GAAmC;AAEzC,SAAS,sCAAA,GAAyC;AACrD,EAAA,OAAOf,YAAAA,EAAa,CAAE,MAAA,CAAO,gCAAgC,CAAA;AACjE;AAyBO,SAAS,0CAAA,GAAqG;AACjH,EAAA,OAAOc,gBAAAA,CAAiBhC,gBAAAA,CAAiB,CAAC,CAAC,eAAA,EAAiBkB,cAAc,CAAC,CAAC,CAAA,EAAG,CAAA,KAAA,MAAU;AAAA,IACrF,GAAG,KAAA;AAAA,IACH,aAAA,EAAe;AAAA,GACnB,CAAE,CAAA;AACN;AAEO,SAAS,0CAAA,GAAiG;AAC7G,EAAA,OAAOZ,iBAAiB,CAAC,CAAC,iBAAiBc,YAAAA,EAAc,CAAC,CAAC,CAAA;AAC/D;AAEO,SAAS,wCAAA,GAGd;AACE,EAAA,OAAO9B,YAAAA,CAAa,0CAAA,EAA2C,EAAG,0CAAA,EAA4C,CAAA;AAClH;AAkBO,SAAS,+BAAA,CAOZ,OACA,MAAA,EACyG;AAEzG,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,SAAS,EAAE,KAAA,EAAO,MAAM,OAAA,IAAW,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAC1D,MAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrD,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACvD,MAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,YAAY,KAAA;AAAM,GACzD;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,IAAI,CAAC,QAAA,CAAS,IAAA,CAAK,KAAA,EAAO;AACtB,IAAA,QAAA,CAAS,KAAK,KAAA,GACV,6CAAA;AAAA,EACR;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU;AAAA,MACN,cAAA,CAAe,SAAS,OAAO,CAAA;AAAA,MAC/B,cAAA,CAAe,SAAS,IAAI,CAAA;AAAA,MAC5B,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,cAAA,CAAe,SAAS,IAAI;AAAA,KAChC;AAAA,IACA,IAAA,EAAM,0CAAA,EAA2C,CAAE,MAAA,CAAO,EAAE,CAAA;AAAA,IAC5D;AAAA,GAC0G,CAAA;AAClH;AAoBO,SAAS,kCAIZ,WAAA,EAG2D;AAC3D,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU;AAAA,MACN,SAAS,cAAA,EAAe;AAAA,MACxB,MAAM,cAAA,EAAe;AAAA,MACrB,OAAO,cAAA,EAAe;AAAA,MACtB,MAAM,cAAA;AAAe,KACzB;AAAA,IACA,IAAA,EAAM,0CAAA,EAA2C,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GAC9E;AACJ;ACpJO,IAAM,iCAAA,GAAoC;AAE1C,SAAS,uCAAA,GAA0C;AACtD,EAAA,OAAO4B,YAAAA,EAAa,CAAE,MAAA,CAAO,iCAAiC,CAAA;AAClE;AA8BO,SAAS,2CAAA,GAAuG;AACnH,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,OAAA,EAASL,iBAAAA,EAAmB;AAAA,KAChC,CAAA;AAAA,IACD,CAAA,KAAA,MAAU,EAAE,GAAG,KAAA,EAAO,eAAe,iCAAA,EAAkC;AAAA,GAC3E;AACJ;AAEO,SAAS,2CAAA,GAAmG;AAC/G,EAAA,OAAOP,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,OAAA,EAASJ,iBAAAA,EAAmB;AAAA,GAChC,CAAA;AACL;AAEO,SAAS,yCAAA,GAGd;AACE,EAAA,OAAO1B,YAAAA,CAAa,2CAAA,EAA4C,EAAG,2CAAA,EAA6C,CAAA;AACpH;AAgBO,SAAS,gCAAA,CAMZ,OACA,MAAA,EAC2F;AAE3F,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,SAAS,EAAE,KAAA,EAAO,MAAM,OAAA,IAAW,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAC1D,MAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrD,MAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,YAAY,KAAA;AAAM,GACzD;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,IAAI,CAAC,QAAA,CAAS,IAAA,CAAK,KAAA,EAAO;AACtB,IAAA,QAAA,CAAS,KAAK,KAAA,GACV,6CAAA;AAAA,EACR;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU,CAAC,cAAA,CAAe,QAAA,CAAS,OAAO,CAAA,EAAG,cAAA,CAAe,QAAA,CAAS,IAAI,CAAA,EAAG,cAAA,CAAe,QAAA,CAAS,IAAI,CAAC,CAAA;AAAA,IACzG,IAAA,EAAM,2CAAA,EAA4C,CAAE,MAAA,CAAO,IAA6C,CAAA;AAAA,IACxG;AAAA,GAC4F,CAAA;AACpG;AAkBO,SAAS,mCAIZ,WAAA,EAG4D;AAC5D,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU,EAAE,OAAA,EAAS,cAAA,EAAe,EAAG,MAAM,cAAA,EAAe,EAAG,IAAA,EAAM,cAAA,EAAe,EAAE;AAAA,IACtF,IAAA,EAAM,2CAAA,EAA4C,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GAC/E;AACJ;ACpJO,IAAM,iCAAA,GAAoC;AAE1C,SAAS,uCAAA,GAA0C;AACtD,EAAA,OAAO4B,YAAAA,EAAa,CAAE,MAAA,CAAO,iCAAiC,CAAA;AAClE;AA4BO,SAAS,2CAAA,GAAuG;AACnH,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,OAAA,EAASL,iBAAAA,EAAmB;AAAA,KAChC,CAAA;AAAA,IACD,CAAA,KAAA,MAAU,EAAE,GAAG,KAAA,EAAO,eAAe,iCAAA,EAAkC;AAAA,GAC3E;AACJ;AAEO,SAAS,2CAAA,GAAmG;AAC/G,EAAA,OAAOP,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,OAAA,EAASJ,iBAAAA,EAAmB;AAAA,GAChC,CAAA;AACL;AAEO,SAAS,yCAAA,GAGd;AACE,EAAA,OAAO1B,YAAAA,CAAa,2CAAA,EAA4C,EAAG,2CAAA,EAA6C,CAAA;AACpH;AAUO,SAAS,gCAAA,CAKZ,OACA,MAAA,EAC6E;AAE7E,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,SAAS,EAAE,KAAA,EAAO,MAAM,OAAA,IAAW,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAC1D,MAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,YAAY,KAAA;AAAM,GACzD;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAExB,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU,CAAC,cAAA,CAAe,QAAA,CAAS,OAAO,CAAA,EAAG,cAAA,CAAe,QAAA,CAAS,IAAI,CAAC,CAAA;AAAA,IAC1E,IAAA,EAAM,2CAAA,EAA4C,CAAE,MAAA,CAAO,IAA6C,CAAA;AAAA,IACxG;AAAA,GAC8E,CAAA;AACtF;AAgBO,SAAS,mCAIZ,WAAA,EAG4D;AAC5D,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,UAAU,EAAE,OAAA,EAAS,gBAAe,EAAG,IAAA,EAAM,gBAAe,EAAE;AAAA,IAC9D,IAAA,EAAM,2CAAA,EAA4C,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GAC/E;AACJ;AC/HO,IAAM,kDAAA,GAAqD;AAE3D,SAAS,sDAAA,GAAyD;AACrE,EAAA,OAAO4B,YAAAA,EAAa,CAAE,MAAA,CAAO,kDAAkD,CAAA;AACnF;AAEO,IAAM,4EAAA,GAA+E;AAErF,SAAS,6EAAA,GAAgF;AAC5F,EAAA,OAAOA,YAAAA,EAAa,CAAE,MAAA,CAAO,4EAA4E,CAAA;AAC7G;AA4BO,SAAS,0DAAA,GAAqI;AACjJ,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,sCAAA,EAAwCA,YAAAA,EAAc,CAAA;AAAA,MACvD,CAAC,WAAA,EAAaN,gBAAAA,CAAiBC,iBAAAA,EAAkB,EAAG,EAAE,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,CAAC,CAAA;AAAA,MAC1F;AAAA,QACI,wCAAA;AAAA,QACAD,gBAAAA,CAAiBC,mBAAkB,EAAG,EAAE,QAAQ,IAAA,EAAM,SAAA,EAAW,UAAU;AAAA;AAC/E,KACH,CAAA;AAAA,IACD,CAAA,KAAA,MAAU;AAAA,MACN,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,kDAAA;AAAA,MACf,oCAAA,EACI;AAAA,KACR;AAAA,GACJ;AACJ;AAEO,SAAS,0DAAA,GAAiI;AAC7I,EAAA,OAAOP,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,sCAAA,EAAwCA,YAAAA,EAAc,CAAA;AAAA,IACvD,CAAC,WAAA,EAAaL,gBAAAA,CAAiBC,iBAAAA,EAAkB,EAAG,EAAE,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,CAAC,CAAA;AAAA,IAC1F;AAAA,MACI,wCAAA;AAAA,MACAD,gBAAAA,CAAiBC,mBAAkB,EAAG,EAAE,QAAQ,IAAA,EAAM,SAAA,EAAW,UAAU;AAAA;AAC/E,GACH,CAAA;AACL;AAEO,SAAS,wDAAA,GAGd;AACE,EAAA,OAAO1B,YAAAA;AAAA,IACH,0DAAA,EAA2D;AAAA,IAC3D,0DAAA;AAA2D,GAC/D;AACJ;AASO,SAAS,+CAAA,CAIZ,OACA,MAAA,EAC2E;AAE3E,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB,EAAE,IAAA,EAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,UAAA,EAAY,IAAA,EAAK,EAAE;AACjF,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAExB,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU,CAAC,cAAA,CAAe,QAAA,CAAS,IAAI,CAAC,CAAA;AAAA,IACxC,IAAA,EAAM,4DAA2D,CAAE,MAAA;AAAA,MAC/D;AAAA,KACJ;AAAA,IACA;AAAA,GAC4E,CAAA;AACpF;AAcO,SAAS,kDAIZ,WAAA,EAG2E;AAC3E,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU,EAAE,IAAA,EAAM,cAAA,EAAe,EAAE;AAAA,IACnC,IAAA,EAAM,0DAAA,EAA2D,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GAC9F;AACJ;ACnJO,IAAM,mDAAA,GAAsD;AAE5D,SAAS,uDAAA,GAA0D;AACtE,EAAA,OAAO4B,YAAAA,EAAa,CAAE,MAAA,CAAO,mDAAmD,CAAA;AACpF;AAEO,IAAM,yEAAA,GAA4E;AAElF,SAAS,2EAAA,GAA8E;AAC1F,EAAA,OAAOA,YAAAA,EAAa,CAAE,MAAA,CAAO,yEAAyE,CAAA;AAC1G;AA4CO,SAAS,2DAAA,GAAuI;AACnJ,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,mCAAA,EAAqCA,YAAAA,EAAc,CAAA;AAAA,MACpD,CAAC,WAAA,EAAaN,gBAAAA,CAAiBC,iBAAAA,EAAkB,EAAG,EAAE,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,CAAC,CAAA;AAAA,MAC1F,CAAC,wBAAA,EAA0BC,iBAAAA,EAAmB,CAAA;AAAA,MAC9C,CAAC,sBAAA,EAAwBF,gBAAAA,CAAiBC,iBAAAA,EAAkB,EAAG,EAAE,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,CAAC;AAAA,KACxG,CAAA;AAAA,IACD,CAAA,KAAA,MAAU;AAAA,MACN,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,mDAAA;AAAA,MACf,iCAAA,EACI;AAAA,KACR;AAAA,GACJ;AACJ;AAEO,SAAS,2DAAA,GAAmI;AAC/I,EAAA,OAAOP,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,mCAAA,EAAqCA,YAAAA,EAAc,CAAA;AAAA,IACpD,CAAC,WAAA,EAAaL,gBAAAA,CAAiBC,iBAAAA,EAAkB,EAAG,EAAE,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,CAAC,CAAA;AAAA,IAC1F,CAAC,wBAAA,EAA0BC,iBAAAA,EAAmB,CAAA;AAAA,IAC9C,CAAC,sBAAA,EAAwBF,gBAAAA,CAAiBC,iBAAAA,EAAkB,EAAG,EAAE,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,CAAC;AAAA,GACxG,CAAA;AACL;AAEO,SAAS,yDAAA,GAGd;AACE,EAAA,OAAO1B,YAAAA;AAAA,IACH,2DAAA,EAA4D;AAAA,IAC5D,2DAAA;AAA4D,GAChE;AACJ;AAUO,SAAS,gDAAA,CAIZ,OACA,MAAA,EAC4E;AAE5E,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB,EAAE,IAAA,EAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,UAAA,EAAY,IAAA,EAAK,EAAE;AACjF,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAExB,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU,CAAC,cAAA,CAAe,QAAA,CAAS,IAAI,CAAC,CAAA;AAAA,IACxC,IAAA,EAAM,6DAA4D,CAAE,MAAA;AAAA,MAChE;AAAA,KACJ;AAAA,IACA;AAAA,GAC6E,CAAA;AACrF;AAcO,SAAS,mDAIZ,WAAA,EAG4E;AAC5E,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU,EAAE,IAAA,EAAM,cAAA,EAAe,EAAE;AAAA,IACnC,IAAA,EAAM,2DAAA,EAA4D,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GAC/F;AACJ;ACzKO,IAAM,8CAAA,GAAiD;AAEvD,SAAS,kDAAA,GAAqD;AACjE,EAAA,OAAO4B,YAAAA,EAAa,CAAE,MAAA,CAAO,8CAA8C,CAAA;AAC/E;AAEO,IAAM,oEAAA,GAAuE;AAE7E,SAAS,qEAAA,GAAwE;AACpF,EAAA,OAAOA,YAAAA,EAAa,CAAE,MAAA,CAAO,oEAAoE,CAAA;AACrG;AAwBO,SAAS,sDAAA,GAA6H;AACzI,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,kCAAA,EAAoCA,YAAAA,EAAc,CAAA;AAAA,MACnD,CAAC,OAAA,EAAS,sBAAA,EAAwB;AAAA,KACrC,CAAA;AAAA,IACD,CAAA,KAAA,MAAU;AAAA,MACN,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,8CAAA;AAAA,MACf,gCAAA,EAAkC;AAAA,KACtC;AAAA,GACJ;AACJ;AAEO,SAAS,sDAAA,GAAyH;AACrI,EAAA,OAAOZ,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,kCAAA,EAAoCA,YAAAA,EAAc,CAAA;AAAA,IACnD,CAAC,OAAA,EAAS,sBAAA,EAAwB;AAAA,GACrC,CAAA;AACL;AAEO,SAAS,oDAAA,GAGd;AACE,EAAA,OAAO9B,YAAAA;AAAA,IACH,sDAAA,EAAuD;AAAA,IACvD,sDAAA;AAAuD,GAC3D;AACJ;AAQO,SAAS,2CAAA,CAIZ,OACA,MAAA,EACuE;AAEvE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB,EAAE,IAAA,EAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,UAAA,EAAY,IAAA,EAAK,EAAE;AACjF,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAExB,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU,CAAC,cAAA,CAAe,QAAA,CAAS,IAAI,CAAC,CAAA;AAAA,IACxC,IAAA,EAAM,wDAAuD,CAAE,MAAA;AAAA,MAC3D;AAAA,KACJ;AAAA,IACA;AAAA,GACwE,CAAA;AAChF;AAcO,SAAS,8CAIZ,WAAA,EAGuE;AACvE,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU,EAAE,IAAA,EAAM,cAAA,EAAe,EAAE;AAAA,IACnC,IAAA,EAAM,sDAAA,EAAuD,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GAC1F;AACJ;AClIO,IAAM,6CAAA,GAAgD;AAEtD,SAAS,iDAAA,GAAoD;AAChE,EAAA,OAAO4B,YAAAA,EAAa,CAAE,MAAA,CAAO,6CAA6C,CAAA;AAC9E;AAEO,IAAM,kEAAA,GAAqE;AAE3E,SAAS,mEAAA,GAAsE;AAClF,EAAA,OAAOA,YAAAA,EAAa,CAAE,MAAA,CAAO,kEAAkE,CAAA;AACnG;AA4BO,SAAS,qDAAA,GAA2H;AACvI,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,iCAAA,EAAmCA,YAAAA,EAAc,CAAA;AAAA,MAClD,CAAC,WAAA,EAAaN,gBAAAA,CAAiBC,iBAAAA,EAAkB,EAAG,EAAE,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,CAAC,CAAA;AAAA,MAC1F,CAAC,eAAA,EAAiBD,gBAAAA,CAAiBC,iBAAAA,EAAkB,EAAG,EAAE,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,CAAC;AAAA,KACjG,CAAA;AAAA,IACD,CAAA,KAAA,MAAU;AAAA,MACN,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,6CAAA;AAAA,MACf,+BAAA,EAAiC;AAAA,KACrC;AAAA,GACJ;AACJ;AAEO,SAAS,qDAAA,GAAuH;AACnI,EAAA,OAAOP,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,iCAAA,EAAmCA,YAAAA,EAAc,CAAA;AAAA,IAClD,CAAC,WAAA,EAAaL,gBAAAA,CAAiBC,iBAAAA,EAAkB,EAAG,EAAE,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,CAAC,CAAA;AAAA,IAC1F,CAAC,eAAA,EAAiBD,gBAAAA,CAAiBC,iBAAAA,EAAkB,EAAG,EAAE,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,CAAC;AAAA,GACjG,CAAA;AACL;AAEO,SAAS,mDAAA,GAGd;AACE,EAAA,OAAO1B,YAAAA;AAAA,IACH,qDAAA,EAAsD;AAAA,IACtD,qDAAA;AAAsD,GAC1D;AACJ;AASO,SAAS,0CAAA,CAIZ,OACA,MAAA,EACsE;AAEtE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB,EAAE,IAAA,EAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,UAAA,EAAY,IAAA,EAAK,EAAE;AACjF,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAExB,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU,CAAC,cAAA,CAAe,QAAA,CAAS,IAAI,CAAC,CAAA;AAAA,IACxC,IAAA,EAAM,uDAAsD,CAAE,MAAA;AAAA,MAC1D;AAAA,KACJ;AAAA,IACA;AAAA,GACuE,CAAA;AAC/E;AAcO,SAAS,6CAIZ,WAAA,EAGsE;AACtE,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU,EAAE,IAAA,EAAM,cAAA,EAAe,EAAE;AAAA,IACnC,IAAA,EAAM,qDAAA,EAAsD,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GACzF;AACJ;AC9IO,IAAM,sCAAA,GAAyC;AAE/C,SAAS,2CAAA,GAA8C;AAC1D,EAAA,OAAO4B,YAAAA,EAAa,CAAE,MAAA,CAAO,sCAAsC,CAAA;AACvE;AAEO,IAAM,oDAAA,GAAuD;AAE7D,SAAS,uDAAA,GAA0D;AACtE,EAAA,OAAOA,YAAAA,EAAa,CAAE,MAAA,CAAO,oDAAoD,CAAA;AACrF;AA4BO,SAAS,+CAAA,GAA+G;AAC3H,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,2BAAA,EAA6BA,YAAAA,EAAc,CAAA;AAAA,MAC5C,CAAC,WAAA,EAAaN,gBAAAA,CAAiBC,iBAAAA,EAAkB,EAAG,EAAE,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,CAAC,CAAA;AAAA,MAC1F,CAAC,cAAA,EAAgBD,gBAAAA,CAAiBC,iBAAAA,EAAkB,EAAG,EAAE,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,CAAC;AAAA,KAChG,CAAA;AAAA,IACD,CAAA,KAAA,MAAU;AAAA,MACN,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,sCAAA;AAAA,MACf,yBAAA,EAA2B;AAAA,KAC/B;AAAA,GACJ;AACJ;AAEO,SAAS,+CAAA,GAA2G;AACvH,EAAA,OAAOP,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,2BAAA,EAA6BA,YAAAA,EAAc,CAAA;AAAA,IAC5C,CAAC,WAAA,EAAaL,gBAAAA,CAAiBC,iBAAAA,EAAkB,EAAG,EAAE,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,CAAC,CAAA;AAAA,IAC1F,CAAC,cAAA,EAAgBD,gBAAAA,CAAiBC,iBAAAA,EAAkB,EAAG,EAAE,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,CAAC;AAAA,GAChG,CAAA;AACL;AAEO,SAAS,6CAAA,GAGd;AACE,EAAA,OAAO1B,YAAAA;AAAA,IACH,+CAAA,EAAgD;AAAA,IAChD,+CAAA;AAAgD,GACpD;AACJ;AASO,SAAS,oCAAA,CAIZ,OACA,MAAA,EACgE;AAEhE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB,EAAE,IAAA,EAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,UAAA,EAAY,IAAA,EAAK,EAAE;AACjF,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAExB,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU,CAAC,cAAA,CAAe,QAAA,CAAS,IAAI,CAAC,CAAA;AAAA,IACxC,IAAA,EAAM,iDAAgD,CAAE,MAAA;AAAA,MACpD;AAAA,KACJ;AAAA,IACA;AAAA,GACiE,CAAA;AACzE;AAcO,SAAS,uCAIZ,WAAA,EAGgE;AAChE,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU,EAAE,IAAA,EAAM,cAAA,EAAe,EAAE;AAAA,IACnC,IAAA,EAAM,+CAAA,EAAgD,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GACnF;AACJ;ACpJO,IAAM,wCAAA,GAA2C;AAEjD,SAAS,6CAAA,GAAgD;AAC5D,EAAA,OAAO4B,YAAAA,EAAa,CAAE,MAAA,CAAO,wCAAwC,CAAA;AACzE;AAgBO,SAAS,iDAAA,GAAmH;AAC/H,EAAA,OAAOc,gBAAAA,CAAiBhC,gBAAAA,CAAiB,CAAC,CAAC,eAAA,EAAiBkB,cAAc,CAAC,CAAC,CAAA,EAAG,CAAA,KAAA,MAAU;AAAA,IACrF,GAAG,KAAA;AAAA,IACH,aAAA,EAAe;AAAA,GACnB,CAAE,CAAA;AACN;AAEO,SAAS,iDAAA,GAA+G;AAC3H,EAAA,OAAOZ,iBAAiB,CAAC,CAAC,iBAAiBc,YAAAA,EAAc,CAAC,CAAC,CAAA;AAC/D;AAEO,SAAS,+CAAA,GAGd;AACE,EAAA,OAAO9B,YAAAA;AAAA,IACH,iDAAA,EAAkD;AAAA,IAClD,iDAAA;AAAkD,GACtD;AACJ;AAOO,SAAS,sCAAA,CAIZ,OACA,MAAA,EACqE;AAErE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB,EAAE,OAAA,EAAS,EAAE,KAAA,EAAO,MAAM,OAAA,IAAW,IAAA,EAAM,UAAA,EAAY,IAAA,EAAK,EAAE;AACvF,EAAA,MAAM,QAAA,GAAW,gBAAA;AAEjB,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU,CAAC,cAAA,CAAe,QAAA,CAAS,OAAO,CAAC,CAAA;AAAA,IAC3C,IAAA,EAAM,iDAAA,EAAkD,CAAE,MAAA,CAAO,EAAE,CAAA;AAAA,IACnE;AAAA,GACsE,CAAA;AAC9E;AAcO,SAAS,yCAIZ,WAAA,EAGkE;AAClE,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU,EAAE,OAAA,EAAS,cAAA,EAAe,EAAE;AAAA,IACtC,IAAA,EAAM,iDAAA,EAAkD,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GACrF;AACJ;AC/FO,IAAM,8CAAA,GAAiD;AAEvD,SAAS,kDAAA,GAAqD;AACjE,EAAA,OAAO4B,YAAAA,EAAa,CAAE,MAAA,CAAO,8CAA8C,CAAA;AAC/E;AAEO,IAAM,oEAAA,GAAuE;AAE7E,SAAS,qEAAA,GAAwE;AACpF,EAAA,OAAOA,YAAAA,EAAa,CAAE,MAAA,CAAO,oEAAoE,CAAA;AACrG;AA4BO,SAAS,sDAAA,GAA6H;AACzI,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,kCAAA,EAAoCA,YAAAA,EAAc,CAAA;AAAA,MACnD,CAAC,eAAA,EAAiBN,gBAAAA,CAAiBC,iBAAAA,EAAkB,EAAG,EAAE,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,CAAC,CAAA;AAAA,MAC9F,CAAC,MAAA,EAAQuB,aAAAA,EAAe;AAAA,KAC3B,CAAA;AAAA,IACD,CAAA,KAAA,MAAU;AAAA,MACN,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,8CAAA;AAAA,MACf,gCAAA,EAAkC;AAAA,KACtC;AAAA,GACJ;AACJ;AAEO,SAAS,sDAAA,GAAyH;AACrI,EAAA,OAAO9B,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,kCAAA,EAAoCA,YAAAA,EAAc,CAAA;AAAA,IACnD,CAAC,eAAA,EAAiBL,gBAAAA,CAAiBC,iBAAAA,EAAkB,EAAG,EAAE,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,CAAC,CAAA;AAAA,IAC9F,CAAC,MAAA,EAAQqB,aAAAA,EAAe;AAAA,GAC3B,CAAA;AACL;AAEO,SAAS,oDAAA,GAGd;AACE,EAAA,OAAO/C,YAAAA;AAAA,IACH,sDAAA,EAAuD;AAAA,IACvD,sDAAA;AAAuD,GAC3D;AACJ;AASO,SAAS,2CAAA,CAIZ,OACA,MAAA,EACuE;AAEvE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB,EAAE,IAAA,EAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,UAAA,EAAY,IAAA,EAAK,EAAE;AACjF,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAExB,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU,CAAC,cAAA,CAAe,QAAA,CAAS,IAAI,CAAC,CAAA;AAAA,IACxC,IAAA,EAAM,wDAAuD,CAAE,MAAA;AAAA,MAC3D;AAAA,KACJ;AAAA,IACA;AAAA,GACwE,CAAA;AAChF;AAcO,SAAS,8CAIZ,WAAA,EAGuE;AACvE,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU,EAAE,IAAA,EAAM,cAAA,EAAe,EAAE;AAAA,IACnC,IAAA,EAAM,sDAAA,EAAuD,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GAC1F;AACJ;AChJO,IAAM,yCAAA,GAA4C;AAElD,SAAS,8CAAA,GAAiD;AAC7D,EAAA,OAAO4B,YAAAA,EAAa,CAAE,MAAA,CAAO,yCAAyC,CAAA;AAC1E;AAEO,IAAM,0DAAA,GAA6D;AAEnE,SAAS,6DAAA,GAAgE;AAC5E,EAAA,OAAOA,YAAAA,EAAa,CAAE,MAAA,CAAO,0DAA0D,CAAA;AAC3F;AA4BO,SAAS,kDAAA,GAAqH;AACjI,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,8BAAA,EAAgCA,YAAAA,EAAc,CAAA;AAAA,MAC/C,CAAC,WAAA,EAAaN,gBAAAA,CAAiBC,iBAAAA,EAAkB,EAAG,EAAE,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,CAAC,CAAA;AAAA,MAC1F,CAAC,iBAAA,EAAmBD,gBAAAA,CAAiBC,iBAAAA,EAAkB,EAAG,EAAE,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,CAAC;AAAA,KACnG,CAAA;AAAA,IACD,CAAA,KAAA,MAAU;AAAA,MACN,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,yCAAA;AAAA,MACf,4BAAA,EAA8B;AAAA,KAClC;AAAA,GACJ;AACJ;AAEO,SAAS,kDAAA,GAAiH;AAC7H,EAAA,OAAOP,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,8BAAA,EAAgCA,YAAAA,EAAc,CAAA;AAAA,IAC/C,CAAC,WAAA,EAAaL,gBAAAA,CAAiBC,iBAAAA,EAAkB,EAAG,EAAE,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,CAAC,CAAA;AAAA,IAC1F,CAAC,iBAAA,EAAmBD,gBAAAA,CAAiBC,iBAAAA,EAAkB,EAAG,EAAE,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,CAAC;AAAA,GACnG,CAAA;AACL;AAEO,SAAS,gDAAA,GAGd;AACE,EAAA,OAAO1B,YAAAA;AAAA,IACH,kDAAA,EAAmD;AAAA,IACnD,kDAAA;AAAmD,GACvD;AACJ;AASO,SAAS,uCAAA,CAIZ,OACA,MAAA,EACmE;AAEnE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB,EAAE,IAAA,EAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,UAAA,EAAY,IAAA,EAAK,EAAE;AACjF,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAExB,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU,CAAC,cAAA,CAAe,QAAA,CAAS,IAAI,CAAC,CAAA;AAAA,IACxC,IAAA,EAAM,oDAAmD,CAAE,MAAA;AAAA,MACvD;AAAA,KACJ;AAAA,IACA;AAAA,GACoE,CAAA;AAC5E;AAcO,SAAS,0CAIZ,WAAA,EAGmE;AACnE,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU,EAAE,IAAA,EAAM,cAAA,EAAe,EAAE;AAAA,IACnC,IAAA,EAAM,kDAAA,EAAmD,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GACtF;AACJ;AC5IO,IAAM,6BAAA,GAAgC;AAEtC,SAAS,mCAAA,GAAsC;AAClD,EAAA,OAAO4B,YAAAA,EAAa,CAAE,MAAA,CAAO,6BAA6B,CAAA;AAC9D;AAoCO,SAAS,uCAAA,GAAsF;AAClG,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,UAAA,EAAYA,YAAAA,EAAc,CAAA;AAAA,MAC3B,CAAC,eAAA,EAAiBL,iBAAAA,EAAmB,CAAA;AAAA,MACrC,CAAC,iBAAA,EAAmBD,gBAAAA,CAAiBC,iBAAAA,EAAmB,CAAC;AAAA,KAC5D,CAAA;AAAA,IACD,CAAA,KAAA,MAAU;AAAA,MACN,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,6BAAA;AAAA,MACf,eAAA,EAAiB,KAAA,CAAM,eAAA,IAAmByB,IAAAA;AAAK,KACnD;AAAA,GACJ;AACJ;AAEO,SAAS,uCAAA,GAAkF;AAC9F,EAAA,OAAOhC,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,UAAA,EAAYA,YAAAA,EAAc,CAAA;AAAA,IAC3B,CAAC,eAAA,EAAiBJ,iBAAAA,EAAmB,CAAA;AAAA,IACrC,CAAC,iBAAA,EAAmBD,gBAAAA,CAAiBC,iBAAAA,EAAmB,CAAC;AAAA,GAC5D,CAAA;AACL;AAEO,SAAS,qCAAA,GAGd;AACE,EAAA,OAAO1B,YAAAA,CAAa,uCAAA,EAAwC,EAAG,uCAAA,EAAyC,CAAA;AAC5G;AAYO,SAAS,4BAAA,CAKZ,OACA,MAAA,EACsE;AAEtE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,MAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACpD,MAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,YAAY,KAAA;AAAM,GACzD;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,IAAI,CAAC,QAAA,CAAS,IAAA,CAAK,KAAA,EAAO;AACtB,IAAA,QAAA,CAAS,KAAK,KAAA,GACV,6CAAA;AAAA,EACR;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU,CAAC,cAAA,CAAe,QAAA,CAAS,IAAI,CAAA,EAAG,cAAA,CAAe,QAAA,CAAS,IAAI,CAAC,CAAA;AAAA,IACvE,IAAA,EAAM,uCAAA,EAAwC,CAAE,MAAA,CAAO,IAAyC,CAAA;AAAA,IAChG;AAAA,GACuE,CAAA;AAC/E;AAgBO,SAAS,+BACZ,WAAA,EAGwD;AACxD,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,UAAU,EAAE,IAAA,EAAM,gBAAe,EAAG,IAAA,EAAM,gBAAe,EAAE;AAAA,IAC3D,IAAA,EAAM,uCAAA,EAAwC,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GAC3E;AACJ;ACxJO,IAAM,8BAAA,GAAiC;AAEvC,SAAS,oCAAA,GAAuC;AACnD,EAAA,OAAO4B,YAAAA,EAAa,CAAE,MAAA,CAAO,8BAA8B,CAAA;AAC/D;AA+BO,SAAS,wCAAA,GAAwF;AACpG,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,UAAA,EAAYA,YAAAA,EAAc,CAAA;AAAA,MAC3B,CAAC,eAAA,EAAiBL,iBAAAA,EAAmB,CAAA;AAAA,MACrC,CAAC,iBAAA,EAAmBD,gBAAAA,CAAiBC,iBAAAA,EAAmB,CAAC;AAAA,KAC5D,CAAA;AAAA,IACD,CAAA,KAAA,MAAU;AAAA,MACN,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,8BAAA;AAAA,MACf,eAAA,EAAiB,KAAA,CAAM,eAAA,IAAmByB,IAAAA;AAAK,KACnD;AAAA,GACJ;AACJ;AAEO,SAAS,wCAAA,GAAoF;AAChG,EAAA,OAAOhC,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,UAAA,EAAYA,YAAAA,EAAc,CAAA;AAAA,IAC3B,CAAC,eAAA,EAAiBJ,iBAAAA,EAAmB,CAAA;AAAA,IACrC,CAAC,iBAAA,EAAmBD,gBAAAA,CAAiBC,iBAAAA,EAAmB,CAAC;AAAA,GAC5D,CAAA;AACL;AAEO,SAAS,sCAAA,GAGd;AACE,EAAA,OAAO1B,YAAAA,CAAa,wCAAA,EAAyC,EAAG,wCAAA,EAA0C,CAAA;AAC9G;AAUO,SAAS,6BAAA,CAIZ,OACA,MAAA,EACyD;AAEzD,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB,EAAE,IAAA,EAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,UAAA,EAAY,IAAA,EAAK,EAAE;AACjF,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAExB,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU,CAAC,cAAA,CAAe,QAAA,CAAS,IAAI,CAAC,CAAA;AAAA,IACxC,IAAA,EAAM,wCAAA,EAAyC,CAAE,MAAA,CAAO,IAA0C,CAAA;AAAA,IAClG;AAAA,GAC0D,CAAA;AAClE;AAcO,SAAS,gCACZ,WAAA,EAGyD;AACzD,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU,EAAE,IAAA,EAAM,cAAA,EAAe,EAAE;AAAA,IACnC,IAAA,EAAM,wCAAA,EAAyC,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GAC5E;AACJ;ACrIO,IAAM,6CAAA,GAAgD;AAEtD,SAAS,iDAAA,GAAoD;AAChE,EAAA,OAAO4B,YAAAA,EAAa,CAAE,MAAA,CAAO,6CAA6C,CAAA;AAC9E;AAuBO,SAAS,qDAAA,GAAkH;AAC9H,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,gBAAA,EAAkBN,gBAAAA,CAAiBC,iBAAAA,EAAmB,CAAC;AAAA,KAC3D,CAAA;AAAA,IACD,CAAA,KAAA,MAAU,EAAE,GAAG,KAAA,EAAO,eAAe,6CAAA,EAA8C;AAAA,GACvF;AACJ;AAEO,SAAS,qDAAA,GAA8G;AAC1H,EAAA,OAAOP,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,gBAAA,EAAkBL,gBAAAA,CAAiBC,iBAAAA,EAAmB,CAAC;AAAA,GAC3D,CAAA;AACL;AAEO,SAAS,mDAAA,GAGd;AACE,EAAA,OAAO1B,YAAAA;AAAA,IACH,qDAAA,EAAsD;AAAA,IACtD,qDAAA;AAAsD,GAC1D;AACJ;AAQO,SAAS,0CAAA,CAIZ,OACA,MAAA,EACsE;AAEtE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB,EAAE,IAAA,EAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,UAAA,EAAY,IAAA,EAAK,EAAE;AACjF,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAExB,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU,CAAC,cAAA,CAAe,QAAA,CAAS,IAAI,CAAC,CAAA;AAAA,IACxC,IAAA,EAAM,uDAAsD,CAAE,MAAA;AAAA,MAC1D;AAAA,KACJ;AAAA,IACA;AAAA,GACuE,CAAA;AAC/E;AAcO,SAAS,6CAIZ,WAAA,EAGsE;AACtE,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU,EAAE,IAAA,EAAM,cAAA,EAAe,EAAE;AAAA,IACnC,IAAA,EAAM,qDAAA,EAAsD,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GACzF;AACJ;AC9HO,IAAM,iCAAA,GAAoC;AAE1C,SAAS,uCAAA,GAA0C;AACtD,EAAA,OAAO4B,YAAAA,EAAa,CAAE,MAAA,CAAO,iCAAiC,CAAA;AAClE;AA4BO,SAAS,2CAAA,GAAuG;AACnH,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,GAAA,EAAKA,YAAAA,EAAc;AAAA,KACvB,CAAA;AAAA,IACD,CAAA,KAAA,MAAU,EAAE,GAAG,KAAA,EAAO,eAAe,iCAAA,EAAkC;AAAA,GAC3E;AACJ;AAEO,SAAS,2CAAA,GAAmG;AAC/G,EAAA,OAAOZ,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,GAAA,EAAKA,YAAAA,EAAc;AAAA,GACvB,CAAA;AACL;AAEO,SAAS,yCAAA,GAGd;AACE,EAAA,OAAO9B,YAAAA,CAAa,2CAAA,EAA4C,EAAG,2CAAA,EAA6C,CAAA;AACpH;AAWO,SAAS,gCAAA,CAKZ,OACA,MAAA,EAC8E;AAE9E,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,UAAU,EAAE,KAAA,EAAO,MAAM,QAAA,IAAY,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAC5D,MAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,YAAY,KAAA;AAAM,GACzD;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,IAAI,CAAC,QAAA,CAAS,IAAA,CAAK,KAAA,EAAO;AACtB,IAAA,QAAA,CAAS,KAAK,KAAA,GACV,6CAAA;AAAA,EACR;AAGA,EAAA,MAAM,iBAAA,GAAmC,IAAA,CAAK,OAAA,CAAQ,GAAA,CAAI,CAAA,OAAA,MAAY,EAAE,OAAA,EAAS,IAAA,EAAM2C,WAAAA,CAAY,QAAA,EAAS,CAAE,CAAA;AAE9G,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU,CAAC,cAAA,CAAe,QAAA,CAAS,QAAQ,CAAA,EAAG,cAAA,CAAe,QAAA,CAAS,IAAI,CAAA,EAAG,GAAG,iBAAiB,CAAA;AAAA,IACjG,IAAA,EAAM,2CAAA,EAA4C,CAAE,MAAA,CAAO,IAA6C,CAAA;AAAA,IACxG;AAAA,GAC+E,CAAA;AACvF;AAgBO,SAAS,mCAIZ,WAAA,EAG4D;AAC5D,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,UAAU,EAAE,QAAA,EAAU,gBAAe,EAAG,IAAA,EAAM,gBAAe,EAAE;AAAA,IAC/D,IAAA,EAAM,2CAAA,EAA4C,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GAC/E;AACJ;AC7IO,IAAM,kCAAA,GAAqC;AAE3C,SAAS,wCAAA,GAA2C;AACvD,EAAA,OAAOf,YAAAA,EAAa,CAAE,MAAA,CAAO,kCAAkC,CAAA;AACnE;AAuBO,SAAS,4CAAA,GAAyG;AACrH,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,GAAA,EAAKA,YAAAA,EAAc;AAAA,KACvB,CAAA;AAAA,IACD,CAAA,KAAA,MAAU,EAAE,GAAG,KAAA,EAAO,eAAe,kCAAA,EAAmC;AAAA,GAC5E;AACJ;AAEO,SAAS,4CAAA,GAAqG;AACjH,EAAA,OAAOZ,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,GAAA,EAAKA,YAAAA,EAAc;AAAA,GACvB,CAAA;AACL;AAEO,SAAS,0CAAA,GAGd;AACE,EAAA,OAAO9B,YAAAA,CAAa,4CAAA,EAA6C,EAAG,4CAAA,EAA8C,CAAA;AACtH;AASO,SAAS,iCAAA,CAIZ,OACA,MAAA,EACiE;AAEjE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB,EAAE,QAAA,EAAU,EAAE,KAAA,EAAO,MAAM,QAAA,IAAY,IAAA,EAAM,UAAA,EAAY,IAAA,EAAK,EAAE;AACzF,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,MAAM,iBAAA,GAAmC,IAAA,CAAK,OAAA,CAAQ,GAAA,CAAI,CAAA,OAAA,MAAY,EAAE,OAAA,EAAS,IAAA,EAAM2C,WAAAA,CAAY,QAAA,EAAS,CAAE,CAAA;AAE9G,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,UAAU,CAAC,cAAA,CAAe,SAAS,QAAQ,CAAA,EAAG,GAAG,iBAAiB,CAAA;AAAA,IAClE,IAAA,EAAM,4CAAA,EAA6C,CAAE,MAAA,CAAO,IAA8C,CAAA;AAAA,IAC1G;AAAA,GACkE,CAAA;AAC1E;AAcO,SAAS,oCAIZ,WAAA,EAG6D;AAC7D,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU,EAAE,QAAA,EAAU,cAAA,EAAe,EAAE;AAAA,IACvC,IAAA,EAAM,4CAAA,EAA6C,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GAChF;AACJ;AC1HO,IAAM,8CAAA,GAAiD;AAEvD,SAAS,kDAAA,GAAqD;AACjE,EAAA,OAAOf,YAAAA,EAAa,CAAE,MAAA,CAAO,8CAA8C,CAAA;AAC/E;AAgBO,SAAS,sDAAA,GAA6H;AACzI,EAAA,OAAOc,gBAAAA,CAAiBhC,gBAAAA,CAAiB,CAAC,CAAC,eAAA,EAAiBkB,cAAc,CAAC,CAAC,CAAA,EAAG,CAAA,KAAA,MAAU;AAAA,IACrF,GAAG,KAAA;AAAA,IACH,aAAA,EAAe;AAAA,GACnB,CAAE,CAAA;AACN;AAEO,SAAS,sDAAA,GAAyH;AACrI,EAAA,OAAOZ,iBAAiB,CAAC,CAAC,iBAAiBc,YAAAA,EAAc,CAAC,CAAC,CAAA;AAC/D;AAEO,SAAS,oDAAA,GAGd;AACE,EAAA,OAAO9B,YAAAA;AAAA,IACH,sDAAA,EAAuD;AAAA,IACvD,sDAAA;AAAuD,GAC3D;AACJ;AAOO,SAAS,2CAAA,CAIZ,OACA,MAAA,EACuE;AAEvE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB,EAAE,IAAA,EAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,UAAA,EAAY,IAAA,EAAK,EAAE;AACjF,EAAA,MAAM,QAAA,GAAW,gBAAA;AAEjB,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU,CAAC,cAAA,CAAe,QAAA,CAAS,IAAI,CAAC,CAAA;AAAA,IACxC,IAAA,EAAM,sDAAA,EAAuD,CAAE,MAAA,CAAO,EAAE,CAAA;AAAA,IACxE;AAAA,GACwE,CAAA;AAChF;AAcO,SAAS,8CAIZ,WAAA,EAGuE;AACvE,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU,EAAE,IAAA,EAAM,cAAA,EAAe,EAAE;AAAA,IACnC,IAAA,EAAM,sDAAA,EAAuD,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GAC1F;AACJ;ACjGO,IAAM,wCAAA,GAA2C;AAEjD,SAAS,6CAAA,GAAgD;AAC5D,EAAA,OAAO4B,YAAAA,EAAa,CAAE,MAAA,CAAO,wCAAwC,CAAA;AACzE;AAEO,IAAM,iDAAA,GAAoD;AAE1D,SAAS,qDAAA,GAAwD;AACpE,EAAA,OAAOA,YAAAA,EAAa,CAAE,MAAA,CAAO,iDAAiD,CAAA;AAClF;AAwBO,SAAS,iDAAA,GAAmH;AAC/H,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,uBAAA,EAAyBA,YAAAA,EAAc,CAAA;AAAA,MACxC,CAAC,WAAA,EAAaN,gBAAAA,CAAiBC,iBAAAA,EAAkB,EAAG,EAAE,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,CAAC;AAAA,KAC7F,CAAA;AAAA,IACD,CAAA,KAAA,MAAU;AAAA,MACN,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,wCAAA;AAAA,MACf,qBAAA,EAAuB;AAAA,KAC3B;AAAA,GACJ;AACJ;AAEO,SAAS,iDAAA,GAA+G;AAC3H,EAAA,OAAOP,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,uBAAA,EAAyBA,YAAAA,EAAc,CAAA;AAAA,IACxC,CAAC,WAAA,EAAaL,gBAAAA,CAAiBC,iBAAAA,EAAkB,EAAG,EAAE,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,CAAC;AAAA,GAC7F,CAAA;AACL;AAEO,SAAS,+CAAA,GAGd;AACE,EAAA,OAAO1B,YAAAA;AAAA,IACH,iDAAA,EAAkD;AAAA,IAClD,iDAAA;AAAkD,GACtD;AACJ;AAQO,SAAS,sCAAA,CAIZ,OACA,MAAA,EACkE;AAElE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB,EAAE,IAAA,EAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,UAAA,EAAY,IAAA,EAAK,EAAE;AACjF,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAExB,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU,CAAC,cAAA,CAAe,QAAA,CAAS,IAAI,CAAC,CAAA;AAAA,IACxC,IAAA,EAAM,mDAAkD,CAAE,MAAA;AAAA,MACtD;AAAA,KACJ;AAAA,IACA;AAAA,GACmE,CAAA;AAC3E;AAcO,SAAS,yCAIZ,WAAA,EAGkE;AAClE,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU,EAAE,IAAA,EAAM,cAAA,EAAe,EAAE;AAAA,IACnC,IAAA,EAAM,iDAAA,EAAkD,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GACrF;AACJ;AC3IO,IAAM,2CAAA,GAA8C;AAEpD,SAAS,gDAAA,GAAmD;AAC/D,EAAA,OAAO4B,YAAAA,EAAa,CAAE,MAAA,CAAO,2CAA2C,CAAA;AAC5E;AAuBO,SAAS,oDAAA,GAAyH;AACrI,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,UAAA,EAAYL,iBAAAA,EAAmB;AAAA,KACnC,CAAA;AAAA,IACD,CAAA,KAAA,MAAU,EAAE,GAAG,KAAA,EAAO,eAAe,2CAAA,EAA4C;AAAA,GACrF;AACJ;AAEO,SAAS,oDAAA,GAAqH;AACjI,EAAA,OAAOP,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,UAAA,EAAYJ,iBAAAA,EAAmB;AAAA,GACnC,CAAA;AACL;AAEO,SAAS,kDAAA,GAGd;AACE,EAAA,OAAO1B,YAAAA;AAAA,IACH,oDAAA,EAAqD;AAAA,IACrD,oDAAA;AAAqD,GACzD;AACJ;AAQO,SAAS,yCAAA,CAIZ,OACA,MAAA,EACqE;AAErE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB,EAAE,IAAA,EAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,UAAA,EAAY,IAAA,EAAK,EAAE;AACjF,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAExB,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU,CAAC,cAAA,CAAe,QAAA,CAAS,IAAI,CAAC,CAAA;AAAA,IACxC,IAAA,EAAM,sDAAqD,CAAE,MAAA;AAAA,MACzD;AAAA,KACJ;AAAA,IACA;AAAA,GACsE,CAAA;AAC9E;AAcO,SAAS,4CAIZ,WAAA,EAGqE;AACrE,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU,EAAE,IAAA,EAAM,cAAA,EAAe,EAAE;AAAA,IACnC,IAAA,EAAM,oDAAA,EAAqD,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GACxF;AACJ;AC1HO,IAAM,0CAAA,GAA6C;AAEnD,SAAS,+CAAA,GAAkD;AAC9D,EAAA,OAAO4B,YAAAA,EAAa,CAAE,MAAA,CAAO,0CAA0C,CAAA;AAC3E;AAEO,IAAM,4DAAA,GAA+D;AAErE,SAAS,+DAAA,GAAkE;AAC9E,EAAA,OAAOA,YAAAA,EAAa,CAAE,MAAA,CAAO,4DAA4D,CAAA;AAC7F;AAwBO,SAAS,mDAAA,GAAuH;AACnI,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,+BAAA,EAAiCA,YAAAA,EAAc,CAAA;AAAA,MAChD,CAAC,WAAA,EAAaL,iBAAAA,EAAmB;AAAA,KACpC,CAAA;AAAA,IACD,CAAA,KAAA,MAAU;AAAA,MACN,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,0CAAA;AAAA,MACf,6BAAA,EAA+B;AAAA,KACnC;AAAA,GACJ;AACJ;AAEO,SAAS,mDAAA,GAAmH;AAC/H,EAAA,OAAOP,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,+BAAA,EAAiCA,YAAAA,EAAc,CAAA;AAAA,IAChD,CAAC,WAAA,EAAaJ,iBAAAA,EAAmB;AAAA,GACpC,CAAA;AACL;AAEO,SAAS,iDAAA,GAGd;AACE,EAAA,OAAO1B,YAAAA;AAAA,IACH,mDAAA,EAAoD;AAAA,IACpD,mDAAA;AAAoD,GACxD;AACJ;AAQO,SAAS,wCAAA,CAIZ,OACA,MAAA,EACoE;AAEpE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB,EAAE,IAAA,EAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,UAAA,EAAY,IAAA,EAAK,EAAE;AACjF,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAExB,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU,CAAC,cAAA,CAAe,QAAA,CAAS,IAAI,CAAC,CAAA;AAAA,IACxC,IAAA,EAAM,qDAAoD,CAAE,MAAA;AAAA,MACxD;AAAA,KACJ;AAAA,IACA;AAAA,GACqE,CAAA;AAC7E;AAcO,SAAS,2CAIZ,WAAA,EAGoE;AACpE,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU,EAAE,IAAA,EAAM,cAAA,EAAe,EAAE;AAAA,IACnC,IAAA,EAAM,mDAAA,EAAoD,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GACvF;AACJ;ACjIO,IAAM,8CAAA,GAAiD;AAEvD,SAAS,iDAAA,GAAoD;AAChE,EAAA,OAAO4B,YAAAA,EAAa,CAAE,MAAA,CAAO,8CAA8C,CAAA;AAC/E;AAEO,IAAM,oEAAA,GAAuE;AAE7E,SAAS,mEAAA,GAAsE;AAClF,EAAA,OAAOA,YAAAA,EAAa,CAAE,MAAA,CAAO,oEAAoE,CAAA;AACrG;AA4BO,SAAS,qDAAA,GAA2H;AACvI,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,iCAAA,EAAmCA,YAAAA,EAAc,CAAA;AAAA,MAClD,CAAC,WAAA,EAAaN,gBAAAA,CAAiBC,iBAAAA,EAAkB,EAAG,EAAE,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,CAAC,CAAA;AAAA,MAC1F,CAAC,YAAA,EAAc0B,aAAAA,EAAe;AAAA,KACjC,CAAA;AAAA,IACD,CAAA,KAAA,MAAU;AAAA,MACN,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,8CAAA;AAAA,MACf,+BAAA,EAAiC;AAAA,KACrC;AAAA,GACJ;AACJ;AAEO,SAAS,qDAAA,GAAuH;AACnI,EAAA,OAAOjC,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,iCAAA,EAAmCA,YAAAA,EAAc,CAAA;AAAA,IAClD,CAAC,WAAA,EAAaL,gBAAAA,CAAiBC,iBAAAA,EAAkB,EAAG,EAAE,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,CAAC,CAAA;AAAA,IAC1F,CAAC,YAAA,EAAcwB,aAAAA,EAAe;AAAA,GACjC,CAAA;AACL;AAEO,SAAS,mDAAA,GAGd;AACE,EAAA,OAAOlD,YAAAA;AAAA,IACH,qDAAA,EAAsD;AAAA,IACtD,qDAAA;AAAsD,GAC1D;AACJ;AASO,SAAS,0CAAA,CAIZ,OACA,MAAA,EACsE;AAEtE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB,EAAE,IAAA,EAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,UAAA,EAAY,IAAA,EAAK,EAAE;AACjF,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAExB,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU,CAAC,cAAA,CAAe,QAAA,CAAS,IAAI,CAAC,CAAA;AAAA,IACxC,IAAA,EAAM,uDAAsD,CAAE,MAAA;AAAA,MAC1D;AAAA,KACJ;AAAA,IACA;AAAA,GACuE,CAAA;AAC/E;AAcO,SAAS,6CAIZ,WAAA,EAGsE;AACtE,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU,EAAE,IAAA,EAAM,cAAA,EAAe,EAAE;AAAA,IACnC,IAAA,EAAM,qDAAA,EAAsD,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GACzF;AACJ;AC1IO,IAAM,oCAAA,GAAuC,IAAI,UAAA,CAAW,CAAC,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,CAAA,EAAG,CAAC,CAAC;AAE7F,SAAS,yCAAA,GAA4C;AACxD,EAAA,OAAOE,eAAAA,EAAgB,CAAE,MAAA,CAAO,oCAAoC,CAAA;AACxE;AAoCO,SAAS,6CAAA,GAAkG;AAC9G,EAAA,OAAOwC,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBR,eAAAA,EAAiB,CAAA;AAAA,MACnC,CAAC,iBAAA,EAAmBoB,gBAAAA,CAAiBC,iBAAAA,EAAkB,EAAG,EAAE,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,CAAC,CAAA;AAAA,MAChG,CAAC,SAAA,EAAWH,aAAAA,EAAe;AAAA,KAC9B,CAAA;AAAA,IACD,CAAA,KAAA,MAAU,EAAE,GAAG,KAAA,EAAO,eAAe,oCAAA,EAAqC;AAAA,GAC9E;AACJ;AAEO,SAAS,6CAAA,GAA8F;AAC1G,EAAA,OAAOJ,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBZ,eAAAA,EAAiB,CAAA;AAAA,IACnC,CAAC,iBAAA,EAAmBqB,gBAAAA,CAAiBC,iBAAAA,EAAkB,EAAG,EAAE,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,CAAC,CAAA;AAAA,IAChG,CAAC,SAAA,EAAWL,aAAAA,EAAe;AAAA,GAC9B,CAAA;AACL;AAEO,SAAS,2CAAA,GAGd;AACE,EAAA,OAAOrB,YAAAA;AAAA,IACH,6CAAA,EAA8C;AAAA,IAC9C,6CAAA;AAA8C,GAClD;AACJ;AAcO,SAAS,kCAAA,CAMZ,OACA,MAAA,EACoG;AAEpG,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACtD,MAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrD,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA;AAAM,GAC3E;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAExB,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU;AAAA,MACN,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,cAAA,CAAe,SAAS,IAAI,CAAA;AAAA,MAC5B,cAAA,CAAe,SAAS,aAAa;AAAA,KACzC;AAAA,IACA,IAAA,EAAM,6CAAA,EAA8C,CAAE,MAAA,CAAO,IAA+C,CAAA;AAAA,IAC5G;AAAA,GACqG,CAAA;AAC7G;AAeO,SAAS,qCAIZ,WAAA,EAG8D;AAC9D,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU,EAAE,KAAA,EAAO,cAAA,EAAe,EAAG,MAAM,cAAA,EAAe,EAAG,aAAA,EAAe,cAAA,EAAe,EAAE;AAAA,IAC7F,IAAA,EAAM,6CAAA,EAA8C,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GACjF;AACJ;AChKO,IAAM,2CAAA,GAA8C,IAAI,UAAA,CAAW,CAAC,GAAA,EAAK,EAAA,EAAI,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAG,CAAC;AAE1G,SAAS,+CAAA,GAAkD;AAC9D,EAAA,OAAOE,eAAAA,EAAgB,CAAE,MAAA,CAAO,2CAA2C,CAAA;AAC/E;AA+BO,SAAS,mDAAA,GAA8G;AAC1H,EAAA,OAAOwC,gBAAAA,CAAiBhC,gBAAAA,CAAiB,CAAC,CAAC,eAAA,EAAiBR,iBAAiB,CAAC,CAAC,CAAA,EAAG,CAAA,KAAA,MAAU;AAAA,IACxF,GAAG,KAAA;AAAA,IACH,aAAA,EAAe;AAAA,GACnB,CAAE,CAAA;AACN;AAEO,SAAS,mDAAA,GAA0G;AACtH,EAAA,OAAOc,iBAAiB,CAAC,CAAC,iBAAiBZ,eAAAA,EAAiB,CAAC,CAAC,CAAA;AAClE;AAEO,SAAS,iDAAA,GAGd;AACE,EAAA,OAAOJ,YAAAA;AAAA,IACH,mDAAA,EAAoD;AAAA,IACpD,mDAAA;AAAoD,GACxD;AACJ;AAgBO,SAAS,wCAAA,CAQZ,OAOA,MAAA,EAQF;AAEE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,QAAQ,EAAE,KAAA,EAAO,MAAM,MAAA,IAAU,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACxD,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,qBAAqB,EAAE,KAAA,EAAO,MAAM,mBAAA,IAAuB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACnF,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACtD,sBAAsB,EAAE,KAAA,EAAO,MAAM,oBAAA,IAAwB,IAAA,EAAM,YAAY,KAAA;AAAM,GACzF;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAEjB,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU;AAAA,MACN,cAAA,CAAe,SAAS,MAAM,CAAA;AAAA,MAC9B,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,mBAAmB,CAAA;AAAA,MAC3C,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,cAAA,CAAe,SAAS,oBAAoB;AAAA,KAChD;AAAA,IACA,IAAA,EAAM,mDAAA,EAAoD,CAAE,MAAA,CAAO,EAAE,CAAA;AAAA,IACrE;AAAA,GAQH,CAAA;AACL;AAiBO,SAAS,2CAIZ,WAAA,EAGoE;AACpE,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU;AAAA,MACN,QAAQ,cAAA,EAAe;AAAA,MACvB,YAAY,cAAA,EAAe;AAAA,MAC3B,qBAAqB,cAAA,EAAe;AAAA,MACpC,OAAO,cAAA,EAAe;AAAA,MACtB,sBAAsB,cAAA;AAAe,KACzC;AAAA,IACA,IAAA,EAAM,mDAAA,EAAoD,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GACvF;AACJ;ACtKO,IAAM,uCAAA,GAA0C,IAAI,UAAA,CAAW,CAAC,GAAA,EAAK,GAAA,EAAK,EAAA,EAAI,GAAA,EAAK,EAAA,EAAI,GAAA,EAAK,EAAA,EAAI,GAAG,CAAC;AAEpG,SAAS,4CAAA,GAA+C;AAC3D,EAAA,OAAOE,eAAAA,EAAgB,CAAE,MAAA,CAAO,uCAAuC,CAAA;AAC3E;AA0CO,SAAS,gDAAA,GAAwG;AACpH,EAAA,OAAOwC,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBR,eAAAA,EAAiB,CAAA;AAAA,MACnC,CAAC,MAAA,EAAQS,oBAAAA,CAAqBC,gBAAe,EAAGC,aAAAA,EAAe,CAAC,CAAA;AAAA,MAChE,CAAC,QAAA,EAAUF,oBAAAA,CAAqBC,gBAAe,EAAGC,aAAAA,EAAe,CAAC,CAAA;AAAA,MAClE,CAAC,KAAA,EAAOF,oBAAAA,CAAqBC,gBAAe,EAAGC,aAAAA,EAAe,CAAC;AAAA,KAClE,CAAA;AAAA,IACD,CAAA,KAAA,MAAU,EAAE,GAAG,KAAA,EAAO,eAAe,uCAAA,EAAwC;AAAA,GACjF;AACJ;AAEO,SAAS,gDAAA,GAAoG;AAChH,EAAA,OAAOG,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBZ,eAAAA,EAAiB,CAAA;AAAA,IACnC,CAAC,MAAA,EAAQa,oBAAAA,CAAqBC,gBAAe,EAAGC,aAAAA,EAAe,CAAC,CAAA;AAAA,IAChE,CAAC,QAAA,EAAUF,oBAAAA,CAAqBC,gBAAe,EAAGC,aAAAA,EAAe,CAAC,CAAA;AAAA,IAClE,CAAC,KAAA,EAAOF,oBAAAA,CAAqBC,gBAAe,EAAGC,aAAAA,EAAe,CAAC;AAAA,GAClE,CAAA;AACL;AAEO,SAAS,8CAAA,GAGd;AACE,EAAA,OAAOnB,YAAAA;AAAA,IACH,gDAAA,EAAiD;AAAA,IACjD,gDAAA;AAAiD,GACrD;AACJ;AAiBO,SAAS,qCAAA,CAOZ,OACA,MAAA,EAOF;AAEE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,UAAU,EAAE,KAAA,EAAO,MAAM,QAAA,IAAY,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAC5D,iBAAiB,EAAE,KAAA,EAAO,MAAM,eAAA,IAAmB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC3E,MAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrD,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA;AAAM,GAC3E;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAExB,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU;AAAA,MACN,cAAA,CAAe,SAAS,QAAQ,CAAA;AAAA,MAChC,cAAA,CAAe,SAAS,eAAe,CAAA;AAAA,MACvC,cAAA,CAAe,SAAS,IAAI,CAAA;AAAA,MAC5B,cAAA,CAAe,SAAS,aAAa;AAAA,KACzC;AAAA,IACA,IAAA,EAAM,kDAAiD,CAAE,MAAA;AAAA,MACrD;AAAA,KACJ;AAAA,IACA;AAAA,GAOH,CAAA;AACL;AAgBO,SAAS,wCAIZ,WAAA,EAGiE;AACjE,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU;AAAA,MACN,UAAU,cAAA,EAAe;AAAA,MACzB,iBAAiB,cAAA,EAAe;AAAA,MAChC,MAAM,cAAA,EAAe;AAAA,MACrB,eAAe,cAAA;AAAe,KAClC;AAAA,IACA,IAAA,EAAM,gDAAA,EAAiD,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GACpF;AACJ;AC1LO,IAAM,4CAAA,GAA+C;AAErD,SAAS,gDAAA,GAAmD;AAC/D,EAAA,OAAO4B,YAAAA,EAAa,CAAE,MAAA,CAAO,4CAA4C,CAAA;AAC7E;AAEO,IAAM,yDAAA,GAA4D;AAElE,SAAS,2DAAA,GAA8D;AAC1E,EAAA,OAAOA,YAAAA,EAAa,CAAE,MAAA,CAAO,yDAAyD,CAAA;AAC1F;AAoCO,SAAS,oDAAA,GAAgH;AAC5H,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,0BAAA,EAA4BA,YAAAA,EAAc,CAAA;AAAA,MAC3C,CAAC,4BAAA,EAA8BN,gBAAAA,CAAiBC,iBAAAA,EAAmB,CAAC,CAAA;AAAA,MACpE,CAAC,2BAAA,EAA6BD,gBAAAA,CAAiBC,iBAAAA,EAAmB,CAAC,CAAA;AAAA,MACnE,CAAC,wBAAA,EAA0BjB,aAAAA,EAAe,CAAA;AAAA,MAC1C,CAAC,YAAA,EAAcc,aAAAA,EAAe;AAAA,KACjC,CAAA;AAAA,IACD,CAAA,KAAA,MAAU;AAAA,MACN,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,4CAAA;AAAA,MACf,wBAAA,EAA0B;AAAA,KAC9B;AAAA,GACJ;AACJ;AAEO,SAAS,oDAAA,GAA4G;AACxH,EAAA,OAAOJ,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,0BAAA,EAA4BA,YAAAA,EAAc,CAAA;AAAA,IAC3C,CAAC,4BAAA,EAA8BL,gBAAAA,CAAiBC,iBAAAA,EAAmB,CAAC,CAAA;AAAA,IACpE,CAAC,2BAAA,EAA6BD,gBAAAA,CAAiBC,iBAAAA,EAAmB,CAAC,CAAA;AAAA,IACnE,CAAC,wBAAA,EAA0BnB,aAAAA,EAAe,CAAA;AAAA,IAC1C,CAAC,YAAA,EAAcc,aAAAA,EAAe;AAAA,GACjC,CAAA;AACL;AAEO,SAAS,kDAAA,GAGd;AACE,EAAA,OAAOrB,YAAAA;AAAA,IACH,oDAAA,EAAqD;AAAA,IACrD,oDAAA;AAAqD,GACzD;AACJ;AAWO,SAAS,yCAAA,CAIZ,OACA,MAAA,EACqE;AAErE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB,EAAE,IAAA,EAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,UAAA,EAAY,IAAA,EAAK,EAAE;AACjF,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAExB,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU,CAAC,cAAA,CAAe,QAAA,CAAS,IAAI,CAAC,CAAA;AAAA,IACxC,IAAA,EAAM,sDAAqD,CAAE,MAAA;AAAA,MACzD;AAAA,KACJ;AAAA,IACA;AAAA,GACsE,CAAA;AAC9E;AAcO,SAAS,4CAIZ,WAAA,EAGqE;AACrE,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU,EAAE,IAAA,EAAM,cAAA,EAAe,EAAE;AAAA,IACnC,IAAA,EAAM,oDAAA,EAAqD,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GACxF;AACJ;AChKO,IAAM,sCAAA,GAAyC;AAE/C,SAAS,2CAAA,GAA8C;AAC1D,EAAA,OAAO4B,YAAAA,EAAa,CAAE,MAAA,CAAO,sCAAsC,CAAA;AACvE;AAEO,IAAM,oDAAA,GAAuD;AAE7D,SAAS,uDAAA,GAA0D;AACtE,EAAA,OAAOA,YAAAA,EAAa,CAAE,MAAA,CAAO,oDAAoD,CAAA;AACrF;AA4BO,SAAS,+CAAA,GAA+G;AAC3H,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,2BAAA,EAA6BA,YAAAA,EAAc,CAAA;AAAA,MAC5C,CAAC,WAAA,EAAaN,gBAAAA,CAAiBC,iBAAAA,EAAkB,EAAG,EAAE,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,CAAC,CAAA;AAAA,MAC1F,CAAC,WAAA,EAAaD,gBAAAA,CAAiBC,iBAAAA,EAAkB,EAAG,EAAE,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,CAAC;AAAA,KAC7F,CAAA;AAAA,IACD,CAAA,KAAA,MAAU;AAAA,MACN,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,sCAAA;AAAA,MACf,yBAAA,EAA2B;AAAA,KAC/B;AAAA,GACJ;AACJ;AAEO,SAAS,+CAAA,GAA2G;AACvH,EAAA,OAAOP,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,2BAAA,EAA6BA,YAAAA,EAAc,CAAA;AAAA,IAC5C,CAAC,WAAA,EAAaL,gBAAAA,CAAiBC,iBAAAA,EAAkB,EAAG,EAAE,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,CAAC,CAAA;AAAA,IAC1F,CAAC,WAAA,EAAaD,gBAAAA,CAAiBC,iBAAAA,EAAkB,EAAG,EAAE,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,CAAC;AAAA,GAC7F,CAAA;AACL;AAEO,SAAS,6CAAA,GAGd;AACE,EAAA,OAAO1B,YAAAA;AAAA,IACH,+CAAA,EAAgD;AAAA,IAChD,+CAAA;AAAgD,GACpD;AACJ;AASO,SAAS,oCAAA,CAIZ,OACA,MAAA,EACgE;AAEhE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB,EAAE,IAAA,EAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,UAAA,EAAY,IAAA,EAAK,EAAE;AACjF,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAExB,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU,CAAC,cAAA,CAAe,QAAA,CAAS,IAAI,CAAC,CAAA;AAAA,IACxC,IAAA,EAAM,iDAAgD,CAAE,MAAA;AAAA,MACpD;AAAA,KACJ;AAAA,IACA;AAAA,GACiE,CAAA;AACzE;AAcO,SAAS,uCAIZ,WAAA,EAGgE;AAChE,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU,EAAE,IAAA,EAAM,cAAA,EAAe,EAAE;AAAA,IACnC,IAAA,EAAM,+CAAA,EAAgD,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GACnF;AACJ;AC7IO,IAAM,qBAAA,GAAwB;AAE9B,SAAS,2BAAA,GAA8B;AAC1C,EAAA,OAAO4B,YAAAA,EAAa,CAAE,MAAA,CAAO,qBAAqB,CAAA;AACtD;AA8BO,SAAS,+BAAA,GAA+E;AAC3F,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,QAAA,EAAUR,aAAAA,EAAe;AAAA,KAC7B,CAAA;AAAA,IACD,CAAA,KAAA,MAAU,EAAE,GAAG,KAAA,EAAO,eAAe,qBAAA,EAAsB;AAAA,GAC/D;AACJ;AAEO,SAAS,+BAAA,GAA2E;AACvF,EAAA,OAAOJ,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,QAAA,EAAUT,aAAAA,EAAe;AAAA,GAC7B,CAAA;AACL;AAEO,SAAS,6BAAA,GAAkG;AAC9G,EAAA,OAAOrB,YAAAA,CAAa,+BAAA,EAAgC,EAAG,+BAAA,EAAiC,CAAA;AAC5F;AAiBO,SAAS,oBAAA,CAMZ,OACA,MAAA,EAQF;AAEE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,MAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACpD,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACtD,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA;AAAM,GAC3E;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,MAAM,qBAAoC,IAAA,CAAK,YAAA,IAAgB,EAAC,EAAG,IAAI,CAAA,MAAA,MAAW;AAAA,IAC9E,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,MAAM2C,WAAAA,CAAY,eAAA;AAAA,IAClB;AAAA,GACJ,CAAE,CAAA;AAEF,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU;AAAA,MACN,cAAA,CAAe,SAAS,IAAI,CAAA;AAAA,MAC5B,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,cAAA,CAAe,SAAS,aAAa,CAAA;AAAA,MACrC,GAAG;AAAA,KACP;AAAA,IACA,IAAA,EAAM,+BAAA,EAAgC,CAAE,MAAA,CAAO,IAAiC,CAAA;AAAA,IAChF;AAAA,GAQH,CAAA;AACL;AAkBO,SAAS,uBACZ,WAAA,EAGgD;AAChD,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU,EAAE,IAAA,EAAM,cAAA,EAAe,EAAG,OAAO,cAAA,EAAe,EAAG,aAAA,EAAe,cAAA,EAAe,EAAE;AAAA,IAC7F,IAAA,EAAM,+BAAA,EAAgC,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GACnE;AACJ;ACnKO,IAAM,6BAAA,GAAgC;AAEtC,SAAS,kCAAA,GAAqC;AACjD,EAAA,OAAOf,YAAAA,EAAa,CAAE,MAAA,CAAO,6BAA6B,CAAA;AAC9D;AAkCO,SAAS,sCAAA,GAA6F;AACzG,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,QAAA,EAAUR,aAAAA,EAAe,CAAA;AAAA,MAC1B,CAAC,UAAA,EAAYQ,YAAAA,EAAc;AAAA,KAC9B,CAAA;AAAA,IACD,CAAA,KAAA,MAAU,EAAE,GAAG,KAAA,EAAO,eAAe,6BAAA,EAA8B;AAAA,GACvE;AACJ;AAEO,SAAS,sCAAA,GAAyF;AACrG,EAAA,OAAOZ,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,QAAA,EAAUT,aAAAA,EAAe,CAAA;AAAA,IAC1B,CAAC,UAAA,EAAYS,YAAAA,EAAc;AAAA,GAC9B,CAAA;AACL;AAEO,SAAS,oCAAA,GAGd;AACE,EAAA,OAAO9B,YAAAA,CAAa,sCAAA,EAAuC,EAAG,sCAAA,EAAwC,CAAA;AAC1G;AAkBO,SAAS,2BAAA,CAMZ,OACA,MAAA,EAQF;AAEE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,MAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACpD,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACtD,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA;AAAM,GAC3E;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,MAAM,qBAAoC,IAAA,CAAK,YAAA,IAAgB,EAAC,EAAG,IAAI,CAAA,MAAA,MAAW;AAAA,IAC9E,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,MAAM2C,WAAAA,CAAY,eAAA;AAAA,IAClB;AAAA,GACJ,CAAE,CAAA;AAEF,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU;AAAA,MACN,cAAA,CAAe,SAAS,IAAI,CAAA;AAAA,MAC5B,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,cAAA,CAAe,SAAS,aAAa,CAAA;AAAA,MACrC,GAAG;AAAA,KACP;AAAA,IACA,IAAA,EAAM,sCAAA,EAAuC,CAAE,MAAA,CAAO,IAAwC,CAAA;AAAA,IAC9F;AAAA,GAQH,CAAA;AACL;AAkBO,SAAS,8BACZ,WAAA,EAGuD;AACvD,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU,EAAE,IAAA,EAAM,cAAA,EAAe,EAAG,OAAO,cAAA,EAAe,EAAG,aAAA,EAAe,cAAA,EAAe,EAAE;AAAA,IAC7F,IAAA,EAAM,sCAAA,EAAuC,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GAC1E;AACJ;AChLO,IAAM,mBAAA,GAAsB;AAE5B,SAAS,0BAAA,GAA6B;AACzC,EAAA,OAAOf,YAAAA,EAAa,CAAE,MAAA,CAAO,mBAAmB,CAAA;AACpD;AAEO,IAAM,4BAAA,GAA+B;AAErC,SAAS,kCAAA,GAAqC;AACjD,EAAA,OAAOA,YAAAA,EAAa,CAAE,MAAA,CAAO,4BAA4B,CAAA;AAC7D;AAqBO,SAAS,8BAAA,GAA6E;AACzF,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,uBAAA,EAAyBA,YAAAA,EAAc;AAAA,KAC3C,CAAA;AAAA,IACD,CAAA,KAAA,MAAU;AAAA,MACN,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,mBAAA;AAAA,MACf,qBAAA,EAAuB;AAAA,KAC3B;AAAA,GACJ;AACJ;AAEO,SAAS,8BAAA,GAAyE;AACrF,EAAA,OAAOZ,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,uBAAA,EAAyBA,YAAAA,EAAc;AAAA,GAC3C,CAAA;AACL;AAEO,SAAS,4BAAA,GAA+F;AAC3G,EAAA,OAAO9B,YAAAA,CAAa,8BAAA,EAA+B,EAAG,8BAAA,EAAgC,CAAA;AAC1F;AASO,SAAS,mBAAA,CAKZ,OACA,MAAA,EAOF;AAEE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,MAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACpD,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA;AAAM,GACnE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAEjB,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU,CAAC,cAAA,CAAe,QAAA,CAAS,IAAI,CAAA,EAAG,cAAA,CAAe,QAAA,CAAS,SAAS,CAAC,CAAA;AAAA,IAC5E,IAAA,EAAM,8BAAA,EAA+B,CAAE,MAAA,CAAO,EAAE,CAAA;AAAA,IAChD;AAAA,GAOH,CAAA;AACL;AAgBO,SAAS,sBACZ,WAAA,EAG+C;AAC/C,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,UAAU,EAAE,IAAA,EAAM,gBAAe,EAAG,SAAA,EAAW,gBAAe,EAAE;AAAA,IAChE,IAAA,EAAM,8BAAA,EAA+B,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GAClE;AACJ;ACpIO,IAAM,+BAAA,GAAkC;AAExC,SAAS,qCAAA,GAAwC;AACpD,EAAA,OAAO4B,YAAAA,EAAa,CAAE,MAAA,CAAO,+BAA+B,CAAA;AAChE;AAEO,IAAM,iDAAA,GAAoD;AAE1D,SAAS,qDAAA,GAAwD;AACpE,EAAA,OAAOA,YAAAA,EAAa,CAAE,MAAA,CAAO,iDAAiD,CAAA;AAClF;AAoCO,SAAS,yCAAA,GAAmG;AAC/G,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,+BAAA,EAAiCA,YAAAA,EAAc,CAAA;AAAA,MAChD,CAAC,QAAA,EAAUR,aAAAA,EAAe;AAAA,KAC7B,CAAA;AAAA,IACD,CAAA,KAAA,MAAU;AAAA,MACN,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,+BAAA;AAAA,MACf,6BAAA,EAA+B;AAAA,KACnC;AAAA,GACJ;AACJ;AAEO,SAAS,yCAAA,GAA+F;AAC3G,EAAA,OAAOJ,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,+BAAA,EAAiCA,YAAAA,EAAc,CAAA;AAAA,IAChD,CAAC,QAAA,EAAUT,aAAAA,EAAe;AAAA,GAC7B,CAAA;AACL;AAEO,SAAS,uCAAA,GAGd;AACE,EAAA,OAAOrB,YAAAA,CAAa,yCAAA,EAA0C,EAAG,yCAAA,EAA2C,CAAA;AAChH;AAoBO,SAAS,8BAAA,CAOZ,OACA,MAAA,EASF;AAEE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,SAAS,EAAE,KAAA,EAAO,MAAM,OAAA,IAAW,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAC1D,MAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACpD,2BAA2B,EAAE,KAAA,EAAO,MAAM,yBAAA,IAA6B,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/F,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA;AAAM,GACnE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,MAAM,qBAAoC,IAAA,CAAK,YAAA,IAAgB,EAAC,EAAG,IAAI,CAAA,MAAA,MAAW;AAAA,IAC9E,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,MAAM2C,WAAAA,CAAY,eAAA;AAAA,IAClB;AAAA,GACJ,CAAE,CAAA;AAEF,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU;AAAA,MACN,cAAA,CAAe,SAAS,OAAO,CAAA;AAAA,MAC/B,cAAA,CAAe,SAAS,IAAI,CAAA;AAAA,MAC5B,cAAA,CAAe,SAAS,yBAAyB,CAAA;AAAA,MACjD,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,GAAG;AAAA,KACP;AAAA,IACA,IAAA,EAAM,yCAAA,EAA0C,CAAE,MAAA,CAAO,IAA2C,CAAA;AAAA,IACpG;AAAA,GASH,CAAA;AACL;AAoBO,SAAS,iCACZ,WAAA,EAG0D;AAC1D,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU;AAAA,MACN,SAAS,cAAA,EAAe;AAAA,MACxB,MAAM,cAAA,EAAe;AAAA,MACrB,2BAA2B,cAAA,EAAe;AAAA,MAC1C,WAAW,cAAA;AAAe,KAC9B;AAAA,IACA,IAAA,EAAM,yCAAA,EAA0C,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GAC7E;AACJ;ACvMO,IAAM,uCAAA,GAA0C;AAEhD,SAAS,4CAAA,GAA+C;AAC3D,EAAA,OAAOf,YAAAA,EAAa,CAAE,MAAA,CAAO,uCAAuC,CAAA;AACxE;AAEO,IAAM,yDAAA,GAA4D;AAElE,SAAS,4DAAA,GAA+D;AAC3E,EAAA,OAAOA,YAAAA,EAAa,CAAE,MAAA,CAAO,yDAAyD,CAAA;AAC1F;AAwCO,SAAS,gDAAA,GAAiH;AAC7H,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,+BAAA,EAAiCA,YAAAA,EAAc,CAAA;AAAA,MAChD,CAAC,QAAA,EAAUR,aAAAA,EAAe,CAAA;AAAA,MAC1B,CAAC,UAAA,EAAYQ,YAAAA,EAAc;AAAA,KAC9B,CAAA;AAAA,IACD,CAAA,KAAA,MAAU;AAAA,MACN,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,uCAAA;AAAA,MACf,6BAAA,EAA+B;AAAA,KACnC;AAAA,GACJ;AACJ;AAEO,SAAS,gDAAA,GAA6G;AACzH,EAAA,OAAOZ,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,+BAAA,EAAiCA,YAAAA,EAAc,CAAA;AAAA,IAChD,CAAC,QAAA,EAAUT,aAAAA,EAAe,CAAA;AAAA,IAC1B,CAAC,UAAA,EAAYS,YAAAA,EAAc;AAAA,GAC9B,CAAA;AACL;AAEO,SAAS,8CAAA,GAGd;AACE,EAAA,OAAO9B,YAAAA;AAAA,IACH,gDAAA,EAAiD;AAAA,IACjD,gDAAA;AAAiD,GACrD;AACJ;AAqBO,SAAS,qCAAA,CAOZ,OAMA,MAAA,EASF;AAEE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,SAAS,EAAE,KAAA,EAAO,MAAM,OAAA,IAAW,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAC1D,MAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACpD,2BAA2B,EAAE,KAAA,EAAO,MAAM,yBAAA,IAA6B,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/F,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA;AAAM,GACnE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,MAAM,qBAAoC,IAAA,CAAK,YAAA,IAAgB,EAAC,EAAG,IAAI,CAAA,MAAA,MAAW;AAAA,IAC9E,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,MAAM2C,WAAAA,CAAY,eAAA;AAAA,IAClB;AAAA,GACJ,CAAE,CAAA;AAEF,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU;AAAA,MACN,cAAA,CAAe,SAAS,OAAO,CAAA;AAAA,MAC/B,cAAA,CAAe,SAAS,IAAI,CAAA;AAAA,MAC5B,cAAA,CAAe,SAAS,yBAAyB,CAAA;AAAA,MACjD,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,GAAG;AAAA,KACP;AAAA,IACA,IAAA,EAAM,kDAAiD,CAAE,MAAA;AAAA,MACrD;AAAA,KACJ;AAAA,IACA;AAAA,GASH,CAAA;AACL;AAoBO,SAAS,wCAIZ,WAAA,EAGiE;AACjE,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU;AAAA,MACN,SAAS,cAAA,EAAe;AAAA,MACxB,MAAM,cAAA,EAAe;AAAA,MACrB,2BAA2B,cAAA,EAAe;AAAA,MAC1C,WAAW,cAAA;AAAe,KAC9B;AAAA,IACA,IAAA,EAAM,gDAAA,EAAiD,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GACpF;AACJ;ACzNO,IAAM,wBAAA,GAA2B;AAEjC,SAAS,+BAAA,GAAkC;AAC9C,EAAA,OAAOf,YAAAA,EAAa,CAAE,MAAA,CAAO,wBAAwB,CAAA;AACzD;AAkCO,SAAS,mCAAA,GAA8E;AAC1F,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,qBAAqBC,eAAAA,CAAgB,uBAAA,IAA2B,EAAE,IAAA,EAAM,WAAA,EAAa,CAAC;AAAA,KAC1F,CAAA;AAAA,IACD,CAAA,KAAA,MAAU,EAAE,GAAG,KAAA,EAAO,eAAe,wBAAA,EAAyB;AAAA,GAClE;AACJ;AAEO,SAAS,mCAAA,GAA0E;AACtF,EAAA,OAAOb,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,qBAAqBC,eAAAA,CAAgB,uBAAA,IAA2B,EAAE,IAAA,EAAM,WAAA,EAAa,CAAC;AAAA,GAC1F,CAAA;AACL;AAEO,SAAS,iCAAA,GAAqG;AACjH,EAAA,OAAO/B,YAAAA,CAAa,mCAAA,EAAoC,EAAG,mCAAA,EAAqC,CAAA;AACpG;AAoBO,SAAS,wBAAA,CAOZ,OACA,MAAA,EASF;AAEE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACtD,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACtD,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACvE,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,KAAA;AAAM,GAC3D;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AAC/B,IAAA,QAAA,CAAS,cAAc,KAAA,GACnB,kCAAA;AAAA,EACR;AAGA,EAAA,MAAM,qBAAoC,IAAA,CAAK,YAAA,IAAgB,EAAC,EAAG,IAAI,CAAA,MAAA,MAAW;AAAA,IAC9E,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,MAAM2C,WAAAA,CAAY,eAAA;AAAA,IAClB;AAAA,GACJ,CAAE,CAAA;AAEF,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU;AAAA,MACN,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,cAAA,CAAe,SAAS,aAAa,CAAA;AAAA,MACrC,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,GAAG;AAAA,KACP;AAAA,IACA,IAAA,EAAM,mCAAA,EAAoC,CAAE,MAAA,CAAO,IAAqC,CAAA;AAAA,IACxF;AAAA,GASH,CAAA;AACL;AAoBO,SAAS,2BACZ,WAAA,EAGoD;AACpD,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU;AAAA,MACN,OAAO,cAAA,EAAe;AAAA,MACtB,OAAO,cAAA,EAAe;AAAA,MACtB,eAAe,cAAA,EAAe;AAAA,MAC9B,OAAO,cAAA;AAAe,KAC1B;AAAA,IACA,IAAA,EAAM,mCAAA,EAAoC,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GACvE;AACJ;AChMO,IAAM,6CAAA,GAAgD;AAEtD,SAAS,iDAAA,GAAoD;AAChE,EAAA,OAAOf,YAAAA,EAAa,CAAE,MAAA,CAAO,6CAA6C,CAAA;AAC9E;AA2CO,SAAS,qDAAA,GAA2H;AACvI,EAAA,OAAOc,gBAAAA,CAAiBhC,gBAAAA,CAAiB,CAAC,CAAC,eAAA,EAAiBkB,cAAc,CAAC,CAAC,CAAA,EAAG,CAAA,KAAA,MAAU;AAAA,IACrF,GAAG,KAAA;AAAA,IACH,aAAA,EAAe;AAAA,GACnB,CAAE,CAAA;AACN;AAEO,SAAS,qDAAA,GAAuH;AACnI,EAAA,OAAOZ,iBAAiB,CAAC,CAAC,iBAAiBc,YAAAA,EAAc,CAAC,CAAC,CAAA;AAC/D;AAEO,SAAS,mDAAA,GAGd;AACE,EAAA,OAAO9B,YAAAA;AAAA,IACH,qDAAA,EAAsD;AAAA,IACtD,qDAAA;AAAsD,GAC1D;AACJ;AA2BA,eAAsB,+CAAA,CAUlB,OASA,MAAA,EAYF;AAEE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,gCAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,gCAAgC,EAAE,KAAA,EAAO,MAAM,8BAAA,IAAkC,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACxG,wBAAwB,EAAE,KAAA,EAAO,MAAM,sBAAA,IAA0B,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACzF,mCAAA,EAAqC;AAAA,MACjC,KAAA,EAAO,MAAM,mCAAA,IAAuC,IAAA;AAAA,MACpD,UAAA,EAAY;AAAA,KAChB;AAAA,IACA,+BAA+B,EAAE,KAAA,EAAO,MAAM,6BAAA,IAAiC,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACvG,uBAAuB,EAAE,KAAA,EAAO,MAAM,qBAAA,IAAyB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACvF,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACtE,cAAc,EAAE,KAAA,EAAO,MAAM,YAAA,IAAgB,IAAA,EAAM,YAAY,KAAA;AAAM,GACzE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,IAAI,CAAC,QAAA,CAAS,YAAA,CAAa,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,aAAa,KAAA,GAClB,6CAAA;AAAA,EACR;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,6BAAA,CAA8B,KAAA,EAAO;AAC/C,IAAA,QAAA,CAAS,6BAAA,CAA8B,KAAA,GAAQ,MAAM,sBAAA,CAAuB;AAAA,MACxE,KAAA,EAAO,aAAA,CAAc,QAAA,CAAS,aAAA,CAAc,KAAK,CAAA;AAAA,MACjD,YAAA,EAAc,aAAA,CAAc,QAAA,CAAS,YAAA,CAAa,KAAK,CAAA;AAAA,MACvD,IAAA,EAAM,aAAA,CAAc,QAAA,CAAS,qBAAA,CAAsB,KAAK;AAAA,KAC3D,CAAA;AAAA,EACL;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,8BAAA,CAA+B,KAAA,EAAO;AAChD,IAAA,QAAA,CAAS,8BAAA,CAA+B,KAAA,GAAQ,MAAM,sBAAA,CAAuB;AAAA,MACzE,KAAA,EAAO,aAAA,CAAc,QAAA,CAAS,6BAAA,CAA8B,KAAK,CAAA;AAAA,MACjE,YAAA,EAAc,aAAA,CAAc,QAAA,CAAS,YAAA,CAAa,KAAK,CAAA;AAAA,MACvD,IAAA,EAAM,aAAA,CAAc,QAAA,CAAS,sBAAA,CAAuB,KAAK;AAAA,KAC5D,CAAA;AAAA,EACL;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,mCAAA,CAAoC,KAAA,EAAO;AACrD,IAAA,QAAA,CAAS,mCAAA,CAAoC,KAAA,GAAQ,MAAM,sBAAA,CAAuB;AAAA,MAC9E,KAAA,EAAO,aAAA,CAAc,QAAA,CAAS,aAAA,CAAc,KAAK,CAAA;AAAA,MACjD,YAAA,EAAc,aAAA,CAAc,QAAA,CAAS,YAAA,CAAa,KAAK,CAAA;AAAA,MACvD,IAAA,EAAM,aAAA,CAAc,QAAA,CAAS,sBAAA,CAAuB,KAAK;AAAA,KAC5D,CAAA;AAAA,EACL;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU;AAAA,MACN,cAAA,CAAe,SAAS,8BAA8B,CAAA;AAAA,MACtD,cAAA,CAAe,SAAS,sBAAsB,CAAA;AAAA,MAC9C,cAAA,CAAe,SAAS,mCAAmC,CAAA;AAAA,MAC3D,cAAA,CAAe,SAAS,6BAA6B,CAAA;AAAA,MACrD,cAAA,CAAe,SAAS,qBAAqB,CAAA;AAAA,MAC7C,cAAA,CAAe,SAAS,aAAa,CAAA;AAAA,MACrC,cAAA,CAAe,SAAS,YAAY;AAAA,KACxC;AAAA,IACA,IAAA,EAAM,qDAAA,EAAsD,CAAE,MAAA,CAAO,EAAE,CAAA;AAAA,IACvE;AAAA,GAUH,CAAA;AACL;AA2BO,SAAS,0CAAA,CAUZ,OASA,MAAA,EAUF;AAEE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,gCAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,gCAAgC,EAAE,KAAA,EAAO,MAAM,8BAAA,IAAkC,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACxG,wBAAwB,EAAE,KAAA,EAAO,MAAM,sBAAA,IAA0B,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACzF,mCAAA,EAAqC;AAAA,MACjC,KAAA,EAAO,MAAM,mCAAA,IAAuC,IAAA;AAAA,MACpD,UAAA,EAAY;AAAA,KAChB;AAAA,IACA,+BAA+B,EAAE,KAAA,EAAO,MAAM,6BAAA,IAAiC,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACvG,uBAAuB,EAAE,KAAA,EAAO,MAAM,qBAAA,IAAyB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACvF,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACtE,cAAc,EAAE,KAAA,EAAO,MAAM,YAAA,IAAgB,IAAA,EAAM,YAAY,KAAA;AAAM,GACzE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,IAAI,CAAC,QAAA,CAAS,YAAA,CAAa,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,aAAa,KAAA,GAClB,6CAAA;AAAA,EACR;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU;AAAA,MACN,cAAA,CAAe,SAAS,8BAA8B,CAAA;AAAA,MACtD,cAAA,CAAe,SAAS,sBAAsB,CAAA;AAAA,MAC9C,cAAA,CAAe,SAAS,mCAAmC,CAAA;AAAA,MAC3D,cAAA,CAAe,SAAS,6BAA6B,CAAA;AAAA,MACrD,cAAA,CAAe,SAAS,qBAAqB,CAAA;AAAA,MAC7C,cAAA,CAAe,SAAS,aAAa,CAAA;AAAA,MACrC,cAAA,CAAe,SAAS,YAAY;AAAA,KACxC;AAAA,IACA,IAAA,EAAM,qDAAA,EAAsD,CAAE,MAAA,CAAO,EAAE,CAAA;AAAA,IACvE;AAAA,GAUH,CAAA;AACL;AA0BO,SAAS,6CAIZ,WAAA,EAGsE;AACtE,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU;AAAA,MACN,gCAAgC,cAAA,EAAe;AAAA,MAC/C,wBAAwB,cAAA,EAAe;AAAA,MACvC,qCAAqC,cAAA,EAAe;AAAA,MACpD,+BAA+B,cAAA,EAAe;AAAA,MAC9C,uBAAuB,cAAA,EAAe;AAAA,MACtC,eAAe,cAAA,EAAe;AAAA,MAC9B,cAAc,cAAA;AAAe,KACjC;AAAA,IACA,IAAA,EAAM,qDAAA,EAAsD,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GACzF;AACJ;AC5VO,IAAM,uCAAA,GAA0C,IAAI,UAAA,CAAW,CAAC,GAAA,EAAK,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,GAAA,EAAK,EAAA,EAAI,GAAG,CAAC;AAElG,SAAS,2CAAA,GAA8C;AAC1D,EAAA,OAAOE,eAAAA,EAAgB,CAAE,MAAA,CAAO,uCAAuC,CAAA;AAC3E;AAwCO,SAAS,+CAAA,GAAsG;AAClH,EAAA,OAAOwC,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBR,eAAAA,EAAiB,CAAA;AAAA,MACnC,CAAC,YAAA,EAAcsB,iBAAAA,EAAmB,CAAA;AAAA,MAClC,CAAC,KAAA,EAAOb,oBAAAA,CAAqBC,gBAAe,EAAGC,aAAAA,EAAe,CAAC;AAAA,KAClE,CAAA;AAAA,IACD,CAAA,KAAA,MAAU;AAAA,MACN,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,uCAAA;AAAA,MACf,UAAA,EAAY,MAAM,UAAA,IAAc;AAAA,KACpC;AAAA,GACJ;AACJ;AAEO,SAAS,+CAAA,GAAkG;AAC9G,EAAA,OAAOG,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBZ,eAAAA,EAAiB,CAAA;AAAA,IACnC,CAAC,YAAA,EAAcuB,iBAAAA,EAAmB,CAAA;AAAA,IAClC,CAAC,KAAA,EAAOV,oBAAAA,CAAqBC,gBAAe,EAAGC,aAAAA,EAAe,CAAC;AAAA,GAClE,CAAA;AACL;AAEO,SAAS,6CAAA,GAGd;AACE,EAAA,OAAOnB,YAAAA;AAAA,IACH,+CAAA,EAAgD;AAAA,IAChD,+CAAA;AAAgD,GACpD;AACJ;AAYO,SAAS,oCAAA,CAKZ,OACA,MAAA,EAC6F;AAE7F,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,UAAU,EAAE,KAAA,EAAO,MAAM,QAAA,IAAY,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAC5D,iBAAiB,EAAE,KAAA,EAAO,MAAM,eAAA,IAAmB,IAAA,EAAM,YAAY,KAAA;AAAM,GAC/E;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAExB,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU,CAAC,cAAA,CAAe,QAAA,CAAS,QAAQ,CAAA,EAAG,cAAA,CAAe,QAAA,CAAS,eAAe,CAAC,CAAA;AAAA,IACtF,IAAA,EAAM,iDAAgD,CAAE,MAAA;AAAA,MACpD;AAAA,KACJ;AAAA,IACA;AAAA,GAC8F,CAAA;AACtG;AAcO,SAAS,uCAIZ,WAAA,EAGgE;AAChE,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,UAAU,EAAE,QAAA,EAAU,gBAAe,EAAG,eAAA,EAAiB,gBAAe,EAAE;AAAA,IAC1E,IAAA,EAAM,+CAAA,EAAgD,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GACnF;AACJ;AChKO,IAAM,oBAAA,GAAuB;AAE7B,SAAS,2BAAA,GAA8B;AAC1C,EAAA,OAAO4B,YAAAA,EAAa,CAAE,MAAA,CAAO,oBAAoB,CAAA;AACrD;AAEO,IAAM,6BAAA,GAAgC;AAEtC,SAAS,mCAAA,GAAsC;AAClD,EAAA,OAAOA,YAAAA,EAAa,CAAE,MAAA,CAAO,6BAA6B,CAAA;AAC9D;AAqBO,SAAS,+BAAA,GAA+E;AAC3F,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,uBAAA,EAAyBA,YAAAA,EAAc;AAAA,KAC3C,CAAA;AAAA,IACD,CAAA,KAAA,MAAU;AAAA,MACN,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,oBAAA;AAAA,MACf,qBAAA,EAAuB;AAAA,KAC3B;AAAA,GACJ;AACJ;AAEO,SAAS,+BAAA,GAA2E;AACvF,EAAA,OAAOZ,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,uBAAA,EAAyBA,YAAAA,EAAc;AAAA,GAC3C,CAAA;AACL;AAEO,SAAS,6BAAA,GAAkG;AAC9G,EAAA,OAAO9B,YAAAA,CAAa,+BAAA,EAAgC,EAAG,+BAAA,EAAiC,CAAA;AAC5F;AASO,SAAS,oBAAA,CAKZ,OACA,MAAA,EAOF;AAEE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,MAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACpD,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA;AAAM,GACnE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAEjB,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU,CAAC,cAAA,CAAe,QAAA,CAAS,IAAI,CAAA,EAAG,cAAA,CAAe,QAAA,CAAS,SAAS,CAAC,CAAA;AAAA,IAC5E,IAAA,EAAM,+BAAA,EAAgC,CAAE,MAAA,CAAO,EAAE,CAAA;AAAA,IACjD;AAAA,GAOH,CAAA;AACL;AAgBO,SAAS,uBACZ,WAAA,EAGgD;AAChD,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,UAAU,EAAE,IAAA,EAAM,gBAAe,EAAG,SAAA,EAAW,gBAAe,EAAE;AAAA,IAChE,IAAA,EAAM,+BAAA,EAAgC,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GACnE;AACJ;ACtIO,IAAM,oBAAA,GAAuB;AAE7B,SAAS,2BAAA,GAA8B;AAC1C,EAAA,OAAO4B,YAAAA,EAAa,CAAE,MAAA,CAAO,oBAAoB,CAAA;AACrD;AAqBO,SAAS,+BAAA,GAA+E;AAC3F,EAAA,OAAOc,gBAAAA,CAAiBhC,gBAAAA,CAAiB,CAAC,CAAC,eAAA,EAAiBkB,cAAc,CAAC,CAAC,CAAA,EAAG,CAAA,KAAA,MAAU;AAAA,IACrF,GAAG,KAAA;AAAA,IACH,aAAA,EAAe;AAAA,GACnB,CAAE,CAAA;AACN;AAEO,SAAS,+BAAA,GAA2E;AACvF,EAAA,OAAOZ,iBAAiB,CAAC,CAAC,iBAAiBc,YAAAA,EAAc,CAAC,CAAC,CAAA;AAC/D;AAEO,SAAS,6BAAA,GAAkG;AAC9G,EAAA,OAAO9B,YAAAA,CAAa,+BAAA,EAAgC,EAAG,+BAAA,EAAiC,CAAA;AAC5F;AAUO,SAAS,oBAAA,CAKZ,OACA,MAAA,EAOF;AAEE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,QAAQ,EAAE,KAAA,EAAO,MAAM,MAAA,IAAU,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACxD,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,KAAA;AAAM,GAC3D;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,MAAM,qBAAoC,IAAA,CAAK,YAAA,IAAgB,EAAC,EAAG,IAAI,CAAA,MAAA,MAAW;AAAA,IAC9E,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,MAAM2C,WAAAA,CAAY,eAAA;AAAA,IAClB;AAAA,GACJ,CAAE,CAAA;AAEF,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU,CAAC,cAAA,CAAe,QAAA,CAAS,MAAM,CAAA,EAAG,cAAA,CAAe,QAAA,CAAS,KAAK,CAAA,EAAG,GAAG,iBAAiB,CAAA;AAAA,IAChG,IAAA,EAAM,+BAAA,EAAgC,CAAE,MAAA,CAAO,EAAE,CAAA;AAAA,IACjD;AAAA,GAOH,CAAA;AACL;AAgBO,SAAS,uBACZ,WAAA,EAGgD;AAChD,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,UAAU,EAAE,MAAA,EAAQ,gBAAe,EAAG,KAAA,EAAO,gBAAe,EAAE;AAAA,IAC9D,IAAA,EAAM,+BAAA,EAAgC,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GACnE;AACJ;AC3HO,IAAM,2BAAA,GAA8B;AAEpC,SAAS,iCAAA,GAAoC;AAChD,EAAA,OAAOf,YAAAA,EAAa,CAAE,MAAA,CAAO,2BAA2B,CAAA;AAC5D;AAgCO,SAAS,qCAAA,GAAkF;AAC9F,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,eAAA,EAAiB,uBAAA,EAAyB,CAAA;AAAA,MAC3C,CAAC,cAAA,EAAgBN,gBAAAA,CAAiBC,iBAAAA,EAAmB,CAAC;AAAA,KACzD,CAAA;AAAA,IACD,CAAA,KAAA,MAAU,EAAE,GAAG,KAAA,EAAO,eAAe,2BAAA,EAA4B;AAAA,GACrE;AACJ;AAEO,SAAS,qCAAA,GAA8E;AAC1F,EAAA,OAAOP,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,eAAA,EAAiB,uBAAA,EAAyB,CAAA;AAAA,IAC3C,CAAC,cAAA,EAAgBL,gBAAAA,CAAiBC,iBAAAA,EAAmB,CAAC;AAAA,GACzD,CAAA;AACL;AAEO,SAAS,mCAAA,GAGd;AACE,EAAA,OAAO1B,YAAAA,CAAa,qCAAA,EAAsC,EAAG,qCAAA,EAAuC,CAAA;AACxG;AAYO,SAAS,0BAAA,CAKZ,OACA,MAAA,EAOF;AAEE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACtD,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,KAAA;AAAM,GAC3D;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,MAAM,qBAAoC,IAAA,CAAK,YAAA,IAAgB,EAAC,EAAG,IAAI,CAAA,MAAA,MAAW;AAAA,IAC9E,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,MAAM2C,WAAAA,CAAY,eAAA;AAAA,IAClB;AAAA,GACJ,CAAE,CAAA;AAEF,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU,CAAC,cAAA,CAAe,QAAA,CAAS,KAAK,CAAA,EAAG,cAAA,CAAe,QAAA,CAAS,KAAK,CAAA,EAAG,GAAG,iBAAiB,CAAA;AAAA,IAC/F,IAAA,EAAM,qCAAA,EAAsC,CAAE,MAAA,CAAO,IAAuC,CAAA;AAAA,IAC5F;AAAA,GAOH,CAAA;AACL;AAgBO,SAAS,6BACZ,WAAA,EAGsD;AACtD,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,UAAU,EAAE,KAAA,EAAO,gBAAe,EAAG,KAAA,EAAO,gBAAe,EAAE;AAAA,IAC7D,IAAA,EAAM,qCAAA,EAAsC,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GACzE;AACJ;AC7JO,IAAM,8BAAA,GAAiC;AAEvC,SAAS,mCAAA,GAAsC;AAClD,EAAA,OAAOf,YAAAA,EAAa,CAAE,MAAA,CAAO,8BAA8B,CAAA;AAC/D;AAEO,IAAM,2CAAA,GAA8C;AAEpD,SAAS,8CAAA,GAAiD;AAC7D,EAAA,OAAOA,YAAAA,EAAa,CAAE,MAAA,CAAO,2CAA2C,CAAA;AAC5E;AAmCO,SAAS,uCAAA,GAA+F;AAC3G,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,0BAAA,EAA4BA,YAAAA,EAAc,CAAA;AAAA,MAC3C,CAAC,wBAAA,EAA0BtB,aAAAA,EAAe,CAAA;AAAA,MAC1C,CAAC,YAAA,EAAcc,aAAAA,EAAe;AAAA,KACjC,CAAA;AAAA,IACD,CAAA,KAAA,MAAU;AAAA,MACN,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,8BAAA;AAAA,MACf,wBAAA,EAA0B;AAAA,KAC9B;AAAA,GACJ;AACJ;AAEO,SAAS,uCAAA,GAA2F;AACvG,EAAA,OAAOJ,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,0BAAA,EAA4BA,YAAAA,EAAc,CAAA;AAAA,IAC3C,CAAC,wBAAA,EAA0BvB,aAAAA,EAAe,CAAA;AAAA,IAC1C,CAAC,YAAA,EAAcc,aAAAA,EAAe;AAAA,GACjC,CAAA;AACL;AAEO,SAAS,qCAAA,GAGd;AACE,EAAA,OAAOrB,YAAAA,CAAa,uCAAA,EAAwC,EAAG,uCAAA,EAAyC,CAAA;AAC5G;AAiBO,SAAS,4BAAA,CAKZ,OACA,MAAA,EAQF;AAEE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,MAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACpD,4BAA4B,EAAE,KAAA,EAAO,MAAM,0BAAA,IAA8B,IAAA,EAAM,YAAY,KAAA;AAAM,GACrG;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,MAAM,qBAAoC,IAAA,CAAK,YAAA,IAAgB,EAAC,EAAG,IAAI,CAAA,MAAA,MAAW;AAAA,IAC9E,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,MAAM2C,WAAAA,CAAY,eAAA;AAAA,IAClB;AAAA,GACJ,CAAE,CAAA;AAEF,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU;AAAA,MACN,cAAA,CAAe,SAAS,IAAI,CAAA;AAAA,MAC5B,cAAA,CAAe,SAAS,0BAA0B,CAAA;AAAA,MAClD,GAAG;AAAA,KACP;AAAA,IACA,IAAA,EAAM,uCAAA,EAAwC,CAAE,MAAA,CAAO,IAAyC,CAAA;AAAA,IAChG;AAAA,GAQH,CAAA;AACL;AAgBO,SAAS,+BACZ,WAAA,EAGwD;AACxD,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,UAAU,EAAE,IAAA,EAAM,gBAAe,EAAG,0BAAA,EAA4B,gBAAe,EAAE;AAAA,IACjF,IAAA,EAAM,uCAAA,EAAwC,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GAC3E;AACJ;AC7LO,IAAM,yBAAA,GAA4B;AAElC,SAAS,+BAAA,GAAkC;AAC9C,EAAA,OAAOf,YAAAA,EAAa,CAAE,MAAA,CAAO,yBAAyB,CAAA;AAC1D;AAgBO,SAAS,mCAAA,GAAuF;AACnG,EAAA,OAAOc,gBAAAA,CAAiBhC,gBAAAA,CAAiB,CAAC,CAAC,eAAA,EAAiBkB,cAAc,CAAC,CAAC,CAAA,EAAG,CAAA,KAAA,MAAU;AAAA,IACrF,GAAG,KAAA;AAAA,IACH,aAAA,EAAe;AAAA,GACnB,CAAE,CAAA;AACN;AAEO,SAAS,mCAAA,GAAmF;AAC/F,EAAA,OAAOZ,iBAAiB,CAAC,CAAC,iBAAiBc,YAAAA,EAAc,CAAC,CAAC,CAAA;AAC/D;AAEO,SAAS,iCAAA,GAGd;AACE,EAAA,OAAO9B,YAAAA,CAAa,mCAAA,EAAoC,EAAG,mCAAA,EAAqC,CAAA;AACpG;AAOO,SAAS,wBAAA,CAIZ,OACA,MAAA,EACuD;AAEvD,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB,EAAE,OAAA,EAAS,EAAE,KAAA,EAAO,MAAM,OAAA,IAAW,IAAA,EAAM,UAAA,EAAY,IAAA,EAAK,EAAE;AACvF,EAAA,MAAM,QAAA,GAAW,gBAAA;AAEjB,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU,CAAC,cAAA,CAAe,QAAA,CAAS,OAAO,CAAC,CAAA;AAAA,IAC3C,IAAA,EAAM,mCAAA,EAAoC,CAAE,MAAA,CAAO,EAAE,CAAA;AAAA,IACrD;AAAA,GACwD,CAAA;AAChE;AAcO,SAAS,2BACZ,WAAA,EAGoD;AACpD,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU,EAAE,OAAA,EAAS,cAAA,EAAe,EAAE;AAAA,IACtC,IAAA,EAAM,mCAAA,EAAoC,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GACvE;AACJ;AC5FO,IAAM,0BAAA,GAA6B;AAEnC,SAAS,gCAAA,GAAmC;AAC/C,EAAA,OAAO4B,YAAAA,EAAa,CAAE,MAAA,CAAO,0BAA0B,CAAA;AAC3D;AAuBO,SAAS,oCAAA,GAAyF;AACrG,EAAA,OAAOc,gBAAAA,CAAiBhC,gBAAAA,CAAiB,CAAC,CAAC,eAAA,EAAiBkB,cAAc,CAAC,CAAC,CAAA,EAAG,CAAA,KAAA,MAAU;AAAA,IACrF,GAAG,KAAA;AAAA,IACH,aAAA,EAAe;AAAA,GACnB,CAAE,CAAA;AACN;AAEO,SAAS,oCAAA,GAAqF;AACjG,EAAA,OAAOZ,iBAAiB,CAAC,CAAC,iBAAiBc,YAAAA,EAAc,CAAC,CAAC,CAAA;AAC/D;AAEO,SAAS,kCAAA,GAGd;AACE,EAAA,OAAO9B,YAAAA,CAAa,oCAAA,EAAqC,EAAG,oCAAA,EAAsC,CAAA;AACtG;AAgBO,SAAS,yBAAA,CAMZ,OACA,MAAA,EAQF;AAEE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,SAAS,EAAE,KAAA,EAAO,MAAM,OAAA,IAAW,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAC1D,MAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrD,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,KAAA;AAAM,GAC3D;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,MAAM,qBAAoC,IAAA,CAAK,YAAA,IAAgB,EAAC,EAAG,IAAI,CAAA,MAAA,MAAW;AAAA,IAC9E,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,MAAM2C,WAAAA,CAAY,eAAA;AAAA,IAClB;AAAA,GACJ,CAAE,CAAA;AAEF,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU;AAAA,MACN,cAAA,CAAe,SAAS,OAAO,CAAA;AAAA,MAC/B,cAAA,CAAe,SAAS,IAAI,CAAA;AAAA,MAC5B,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,GAAG;AAAA,KACP;AAAA,IACA,IAAA,EAAM,oCAAA,EAAqC,CAAE,MAAA,CAAO,EAAE,CAAA;AAAA,IACtD;AAAA,GAQH,CAAA;AACL;AAkBO,SAAS,4BACZ,WAAA,EAGqD;AACrD,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU,EAAE,OAAA,EAAS,cAAA,EAAe,EAAG,MAAM,cAAA,EAAe,EAAG,KAAA,EAAO,cAAA,EAAe,EAAE;AAAA,IACvF,IAAA,EAAM,oCAAA,EAAqC,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GACxE;AACJ;ACtJO,IAAM,sBAAA,GAAyB;AAE/B,SAAS,6BAAA,GAAgC;AAC5C,EAAA,OAAOf,YAAAA,EAAa,CAAE,MAAA,CAAO,sBAAsB,CAAA;AACvD;AA8BO,SAAS,iCAAA,GAAmF;AAC/F,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,QAAA,EAAUR,aAAAA,EAAe;AAAA,KAC7B,CAAA;AAAA,IACD,CAAA,KAAA,MAAU,EAAE,GAAG,KAAA,EAAO,eAAe,sBAAA,EAAuB;AAAA,GAChE;AACJ;AAEO,SAAS,iCAAA,GAA+E;AAC3F,EAAA,OAAOJ,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,QAAA,EAAUT,aAAAA,EAAe;AAAA,GAC7B,CAAA;AACL;AAEO,SAAS,+BAAA,GAGd;AACE,EAAA,OAAOrB,YAAAA,CAAa,iCAAA,EAAkC,EAAG,iCAAA,EAAmC,CAAA;AAChG;AAiBO,SAAS,sBAAA,CAMZ,OACA,MAAA,EAQF;AAEE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,QAAQ,EAAE,KAAA,EAAO,MAAM,MAAA,IAAU,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACxD,aAAa,EAAE,KAAA,EAAO,MAAM,WAAA,IAAe,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAClE,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA;AAAM,GACnE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,MAAM,qBAAoC,IAAA,CAAK,YAAA,IAAgB,EAAC,EAAG,IAAI,CAAA,MAAA,MAAW;AAAA,IAC9E,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,MAAM2C,WAAAA,CAAY,eAAA;AAAA,IAClB;AAAA,GACJ,CAAE,CAAA;AAEF,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU;AAAA,MACN,cAAA,CAAe,SAAS,MAAM,CAAA;AAAA,MAC9B,cAAA,CAAe,SAAS,WAAW,CAAA;AAAA,MACnC,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,GAAG;AAAA,KACP;AAAA,IACA,IAAA,EAAM,iCAAA,EAAkC,CAAE,MAAA,CAAO,IAAmC,CAAA;AAAA,IACpF;AAAA,GAQH,CAAA;AACL;AAkBO,SAAS,yBACZ,WAAA,EAGkD;AAClD,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU,EAAE,MAAA,EAAQ,cAAA,EAAe,EAAG,aAAa,cAAA,EAAe,EAAG,SAAA,EAAW,cAAA,EAAe,EAAE;AAAA,IACjG,IAAA,EAAM,iCAAA,EAAkC,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GACrE;AACJ;ACtKO,IAAM,8BAAA,GAAiC;AAEvC,SAAS,oCAAA,GAAuC;AACnD,EAAA,OAAOf,YAAAA,EAAa,CAAE,MAAA,CAAO,8BAA8B,CAAA;AAC/D;AAoCO,SAAS,wCAAA,GAAiG;AAC7G,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,QAAA,EAAUR,aAAAA,EAAe,CAAA;AAAA,MAC1B,CAAC,UAAA,EAAYQ,YAAAA,EAAc;AAAA,KAC9B,CAAA;AAAA,IACD,CAAA,KAAA,MAAU,EAAE,GAAG,KAAA,EAAO,eAAe,8BAAA,EAA+B;AAAA,GACxE;AACJ;AAEO,SAAS,wCAAA,GAA6F;AACzG,EAAA,OAAOZ,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,QAAA,EAAUT,aAAAA,EAAe,CAAA;AAAA,IAC1B,CAAC,UAAA,EAAYS,YAAAA,EAAc;AAAA,GAC9B,CAAA;AACL;AAEO,SAAS,sCAAA,GAGd;AACE,EAAA,OAAO9B,YAAAA,CAAa,wCAAA,EAAyC,EAAG,wCAAA,EAA0C,CAAA;AAC9G;AAqBO,SAAS,6BAAA,CAOZ,OACA,MAAA,EASF;AAEE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,QAAQ,EAAE,KAAA,EAAO,MAAM,MAAA,IAAU,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACxD,MAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrD,aAAa,EAAE,KAAA,EAAO,MAAM,WAAA,IAAe,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAClE,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA;AAAM,GACnE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,MAAM,qBAAoC,IAAA,CAAK,YAAA,IAAgB,EAAC,EAAG,IAAI,CAAA,MAAA,MAAW;AAAA,IAC9E,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,MAAM2C,WAAAA,CAAY,eAAA;AAAA,IAClB;AAAA,GACJ,CAAE,CAAA;AAEF,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU;AAAA,MACN,cAAA,CAAe,SAAS,MAAM,CAAA;AAAA,MAC9B,cAAA,CAAe,SAAS,IAAI,CAAA;AAAA,MAC5B,cAAA,CAAe,SAAS,WAAW,CAAA;AAAA,MACnC,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,GAAG;AAAA,KACP;AAAA,IACA,IAAA,EAAM,wCAAA,EAAyC,CAAE,MAAA,CAAO,IAA0C,CAAA;AAAA,IAClG;AAAA,GASH,CAAA;AACL;AAoBO,SAAS,gCACZ,WAAA,EAGyD;AACzD,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU;AAAA,MACN,QAAQ,cAAA,EAAe;AAAA,MACvB,MAAM,cAAA,EAAe;AAAA,MACrB,aAAa,cAAA,EAAe;AAAA,MAC5B,WAAW,cAAA;AAAe,KAC9B;AAAA,IACA,IAAA,EAAM,wCAAA,EAAyC,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GAC5E;AACJ;AC9LO,IAAM,uCAAA,GAA0C;AAEhD,SAAS,2CAAA,GAA8C;AAC1D,EAAA,OAAOf,YAAAA,EAAa,CAAE,MAAA,CAAO,uCAAuC,CAAA;AACxE;AAEO,IAAM,oDAAA,GAAuD;AAE7D,SAAS,sDAAA,GAAyD;AACrE,EAAA,OAAOA,YAAAA,EAAa,CAAE,MAAA,CAAO,oDAAoD,CAAA;AACrF;AAiDO,SAAS,+CAAA,GAA+G;AAC3H,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,0BAAA,EAA4BA,YAAAA,EAAc,CAAA;AAAA,MAC3C,CAAC,QAAA,EAAUR,aAAAA,EAAe,CAAA;AAAA,MAC1B,CAAC,UAAA,EAAYQ,YAAAA,EAAc,CAAA;AAAA,MAC3B,CAAC,KAAA,EAAOR,aAAAA,EAAe;AAAA,KAC1B,CAAA;AAAA,IACD,CAAA,KAAA,MAAU;AAAA,MACN,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,uCAAA;AAAA,MACf,wBAAA,EAA0B;AAAA,KAC9B;AAAA,GACJ;AACJ;AAEO,SAAS,+CAAA,GAA2G;AACvH,EAAA,OAAOJ,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,0BAAA,EAA4BA,YAAAA,EAAc,CAAA;AAAA,IAC3C,CAAC,QAAA,EAAUT,aAAAA,EAAe,CAAA;AAAA,IAC1B,CAAC,UAAA,EAAYS,YAAAA,EAAc,CAAA;AAAA,IAC3B,CAAC,KAAA,EAAOT,aAAAA,EAAe;AAAA,GAC1B,CAAA;AACL;AAEO,SAAS,6CAAA,GAGd;AACE,EAAA,OAAOrB,YAAAA;AAAA,IACH,+CAAA,EAAgD;AAAA,IAChD,+CAAA;AAAgD,GACpD;AACJ;AAsBO,SAAS,oCAAA,CAOZ,OACA,MAAA,EASF;AAEE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,QAAQ,EAAE,KAAA,EAAO,MAAM,MAAA,IAAU,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACxD,MAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrD,aAAa,EAAE,KAAA,EAAO,MAAM,WAAA,IAAe,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAClE,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA;AAAM,GACnE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,MAAM,qBAAoC,IAAA,CAAK,YAAA,IAAgB,EAAC,EAAG,IAAI,CAAA,MAAA,MAAW;AAAA,IAC9E,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,MAAM2C,WAAAA,CAAY,eAAA;AAAA,IAClB;AAAA,GACJ,CAAE,CAAA;AAEF,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU;AAAA,MACN,cAAA,CAAe,SAAS,MAAM,CAAA;AAAA,MAC9B,cAAA,CAAe,SAAS,IAAI,CAAA;AAAA,MAC5B,cAAA,CAAe,SAAS,WAAW,CAAA;AAAA,MACnC,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,GAAG;AAAA,KACP;AAAA,IACA,IAAA,EAAM,iDAAgD,CAAE,MAAA;AAAA,MACpD;AAAA,KACJ;AAAA,IACA;AAAA,GASH,CAAA;AACL;AAoBO,SAAS,uCAIZ,WAAA,EAGgE;AAChE,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU;AAAA,MACN,QAAQ,cAAA,EAAe;AAAA,MACvB,MAAM,cAAA,EAAe;AAAA,MACrB,aAAa,cAAA,EAAe;AAAA,MAC5B,WAAW,cAAA;AAAe,KAC9B;AAAA,IACA,IAAA,EAAM,+CAAA,EAAgD,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GACnF;AACJ;ACvOO,IAAM,iCAAA,GAAoC;AAE1C,SAAS,qCAAA,GAAwC;AACpD,EAAA,OAAOf,YAAAA,EAAa,CAAE,MAAA,CAAO,iCAAiC,CAAA;AAClE;AAuBO,SAAS,yCAAA,GAA0F;AACtG,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,UAAA,EAAYhB,cAAAA,EAAgB;AAAA,KAChC,CAAA;AAAA,IACD,CAAA,KAAA,MAAU,EAAE,GAAG,KAAA,EAAO,eAAe,iCAAA,EAAkC;AAAA,GAC3E;AACJ;AAEO,SAAS,yCAAA,GAAsF;AAClG,EAAA,OAAOI,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,UAAA,EAAYZ,cAAAA,EAAgB;AAAA,GAChC,CAAA;AACL;AAEO,SAAS,uCAAA,GAGd;AACE,EAAA,OAAOlB,YAAAA,CAAa,yCAAA,EAA0C,EAAG,yCAAA,EAA2C,CAAA;AAChH;AAQO,SAAS,8BAAA,CAIZ,OACA,MAAA,EAC0D;AAE1D,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB,EAAE,IAAA,EAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,UAAA,EAAY,KAAA,EAAM,EAAE;AAClF,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAExB,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU,CAAC,cAAA,CAAe,QAAA,CAAS,IAAI,CAAC,CAAA;AAAA,IACxC,IAAA,EAAM,yCAAA,EAA0C,CAAE,MAAA,CAAO,IAA2C,CAAA;AAAA,IACpG;AAAA,GAC2D,CAAA;AACnE;AAcO,SAAS,iCACZ,WAAA,EAG0D;AAC1D,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU,EAAE,IAAA,EAAM,cAAA,EAAe,EAAE;AAAA,IACnC,IAAA,EAAM,yCAAA,EAA0C,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GAC7E;AACJ;ACzGO,IAAM,6BAAA,GAAgC;AAEtC,SAAS,mCAAA,GAAsC;AAClD,EAAA,OAAO4B,YAAAA,EAAa,CAAE,MAAA,CAAO,6BAA6B,CAAA;AAC9D;AA8BO,SAAS,uCAAA,GAAsF;AAClG,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,QAAA,EAAUN,gBAAAA,CAAiBF,aAAAA,EAAe,CAAC;AAAA,KAC/C,CAAA;AAAA,IACD,CAAA,KAAA,MAAU,EAAE,GAAG,KAAA,EAAO,eAAe,6BAAA,EAA8B;AAAA,GACvE;AACJ;AAEO,SAAS,uCAAA,GAAkF;AAC9F,EAAA,OAAOJ,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,QAAA,EAAUL,gBAAAA,CAAiBJ,aAAAA,EAAe,CAAC;AAAA,GAC/C,CAAA;AACL;AAEO,SAAS,qCAAA,GAGd;AACE,EAAA,OAAOrB,YAAAA,CAAa,uCAAA,EAAwC,EAAG,uCAAA,EAAyC,CAAA;AAC5G;AAiBO,SAAS,4BAAA,CAMZ,OACA,MAAA,EAQF;AAEE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,QAAQ,EAAE,KAAA,EAAO,MAAM,MAAA,IAAU,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACxD,aAAa,EAAE,KAAA,EAAO,MAAM,WAAA,IAAe,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAClE,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA;AAAM,GACnE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,MAAM,qBAAoC,IAAA,CAAK,YAAA,IAAgB,EAAC,EAAG,IAAI,CAAA,MAAA,MAAW;AAAA,IAC9E,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,MAAM2C,WAAAA,CAAY,eAAA;AAAA,IAClB;AAAA,GACJ,CAAE,CAAA;AAEF,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU;AAAA,MACN,cAAA,CAAe,SAAS,MAAM,CAAA;AAAA,MAC9B,cAAA,CAAe,SAAS,WAAW,CAAA;AAAA,MACnC,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,GAAG;AAAA,KACP;AAAA,IACA,IAAA,EAAM,uCAAA,EAAwC,CAAE,MAAA,CAAO,IAAyC,CAAA;AAAA,IAChG;AAAA,GAQH,CAAA;AACL;AAkBO,SAAS,+BACZ,WAAA,EAGwD;AACxD,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU,EAAE,MAAA,EAAQ,cAAA,EAAe,EAAG,aAAa,cAAA,EAAe,EAAG,SAAA,EAAW,cAAA,EAAe,EAAE;AAAA,IACjG,IAAA,EAAM,uCAAA,EAAwC,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GAC3E;AACJ;ACtKO,IAAM,+CAAA,GAAkD;AAExD,SAAS,mDAAA,GAAsD;AAClE,EAAA,OAAOf,YAAAA,EAAa,CAAE,MAAA,CAAO,+CAA+C,CAAA;AAChF;AAEO,IAAM,qEAAA,GAAwE;AAE9E,SAAS,uEAAA,GAA0E;AACtF,EAAA,OAAOA,YAAAA,EAAa,CAAE,MAAA,CAAO,qEAAqE,CAAA;AACtG;AAyCO,SAAS,uDAAA,GAA+H;AAC3I,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,mCAAA,EAAqCA,YAAAA,EAAc,CAAA;AAAA,MACpD,CAAC,wBAAA,EAA0BJ,iBAAAA,EAAmB,CAAA;AAAA,MAC9C,CAAC,sBAAA,EAAwBF,gBAAAA,CAAiBC,iBAAAA,EAAkB,EAAG,EAAE,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,CAAC;AAAA,KACxG,CAAA;AAAA,IACD,CAAA,KAAA,MAAU;AAAA,MACN,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,+CAAA;AAAA,MACf,iCAAA,EAAmC;AAAA,KACvC;AAAA,GACJ;AACJ;AAEO,SAAS,uDAAA,GAA2H;AACvI,EAAA,OAAOP,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,mCAAA,EAAqCA,YAAAA,EAAc,CAAA;AAAA,IACpD,CAAC,wBAAA,EAA0BH,iBAAAA,EAAmB,CAAA;AAAA,IAC9C,CAAC,sBAAA,EAAwBF,gBAAAA,CAAiBC,iBAAAA,EAAkB,EAAG,EAAE,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,CAAC;AAAA,GACxG,CAAA;AACL;AAEO,SAAS,qDAAA,GAGd;AACE,EAAA,OAAO1B,YAAAA;AAAA,IACH,uDAAA,EAAwD;AAAA,IACxD,uDAAA;AAAwD,GAC5D;AACJ;AAcO,SAAS,4CAAA,CAKZ,OACA,MAAA,EAC2F;AAE3F,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,MAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACpD,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA;AAAM,GACnE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAExB,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU,CAAC,cAAA,CAAe,QAAA,CAAS,IAAI,CAAA,EAAG,cAAA,CAAe,QAAA,CAAS,SAAS,CAAC,CAAA;AAAA,IAC5E,IAAA,EAAM,yDAAwD,CAAE,MAAA;AAAA,MAC5D;AAAA,KACJ;AAAA,IACA;AAAA,GAC4F,CAAA;AACpG;AAgBO,SAAS,+CAIZ,WAAA,EAGwE;AACxE,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,UAAU,EAAE,IAAA,EAAM,gBAAe,EAAG,SAAA,EAAW,gBAAe,EAAE;AAAA,IAChE,IAAA,EAAM,uDAAA,EAAwD,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GAC3F;AACJ;AC3KO,IAAM,0CAAA,GAA6C;AAEnD,SAAS,8CAAA,GAAiD;AAC7D,EAAA,OAAO4B,YAAAA,EAAa,CAAE,MAAA,CAAO,0CAA0C,CAAA;AAC3E;AAEO,IAAM,gEAAA,GAAmE;AAEzE,SAAS,iEAAA,GAAoE;AAChF,EAAA,OAAOA,YAAAA,EAAa,CAAE,MAAA,CAAO,gEAAgE,CAAA;AACjG;AA6BO,SAAS,kDAAA,GAAqH;AACjI,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,kCAAA,EAAoCA,YAAAA,EAAc,CAAA;AAAA,MACnD,CAAC,OAAA,EAAS,sBAAA,EAAwB;AAAA,KACrC,CAAA;AAAA,IACD,CAAA,KAAA,MAAU;AAAA,MACN,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,0CAAA;AAAA,MACf,gCAAA,EAAkC;AAAA,KACtC;AAAA,GACJ;AACJ;AAEO,SAAS,kDAAA,GAAiH;AAC7H,EAAA,OAAOZ,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,kCAAA,EAAoCA,YAAAA,EAAc,CAAA;AAAA,IACnD,CAAC,OAAA,EAAS,sBAAA,EAAwB;AAAA,GACrC,CAAA;AACL;AAEO,SAAS,gDAAA,GAGd;AACE,EAAA,OAAO9B,YAAAA;AAAA,IACH,kDAAA,EAAmD;AAAA,IACnD,kDAAA;AAAmD,GACvD;AACJ;AAcO,SAAS,uCAAA,CAKZ,OACA,MAAA,EAOF;AAEE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,MAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACpD,iBAAiB,EAAE,KAAA,EAAO,MAAM,eAAA,IAAmB,IAAA,EAAM,YAAY,KAAA;AAAM,GAC/E;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,MAAM,qBAAoC,IAAA,CAAK,YAAA,IAAgB,EAAC,EAAG,IAAI,CAAA,MAAA,MAAW;AAAA,IAC9E,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,MAAM2C,WAAAA,CAAY,eAAA;AAAA,IAClB;AAAA,GACJ,CAAE,CAAA;AAEF,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU,CAAC,cAAA,CAAe,QAAA,CAAS,IAAI,CAAA,EAAG,cAAA,CAAe,QAAA,CAAS,eAAe,CAAA,EAAG,GAAG,iBAAiB,CAAA;AAAA,IACxG,IAAA,EAAM,oDAAmD,CAAE,MAAA;AAAA,MACvD;AAAA,KACJ;AAAA,IACA;AAAA,GAOH,CAAA;AACL;AAgBO,SAAS,0CAIZ,WAAA,EAGmE;AACnE,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,UAAU,EAAE,IAAA,EAAM,gBAAe,EAAG,eAAA,EAAiB,gBAAe,EAAE;AAAA,IACtE,IAAA,EAAM,kDAAA,EAAmD,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GACtF;AACJ;ACtKO,IAAM,yCAAA,GAA4C;AAElD,SAAS,6CAAA,GAAgD;AAC5D,EAAA,OAAOf,YAAAA,EAAa,CAAE,MAAA,CAAO,yCAAyC,CAAA;AAC1E;AAEO,IAAM,8DAAA,GAAiE;AAEvE,SAAS,+DAAA,GAAkE;AAC9E,EAAA,OAAOA,YAAAA,EAAa,CAAE,MAAA,CAAO,8DAA8D,CAAA;AAC/F;AA+BO,SAAS,iDAAA,GAAmH;AAC/H,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,iCAAA,EAAmCA,YAAAA,EAAc,CAAA;AAAA,MAClD,CAAC,eAAA,EAAiBN,gBAAAA,CAAiBC,iBAAAA,EAAkB,EAAG,EAAE,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,CAAC;AAAA,KACjG,CAAA;AAAA,IACD,CAAA,KAAA,MAAU;AAAA,MACN,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,yCAAA;AAAA,MACf,+BAAA,EAAiC;AAAA,KACrC;AAAA,GACJ;AACJ;AAEO,SAAS,iDAAA,GAA+G;AAC3H,EAAA,OAAOP,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,iCAAA,EAAmCA,YAAAA,EAAc,CAAA;AAAA,IAClD,CAAC,eAAA,EAAiBL,gBAAAA,CAAiBC,iBAAAA,EAAkB,EAAG,EAAE,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,CAAC;AAAA,GACjG,CAAA;AACL;AAEO,SAAS,+CAAA,GAGd;AACE,EAAA,OAAO1B,YAAAA;AAAA,IACH,iDAAA,EAAkD;AAAA,IAClD,iDAAA;AAAkD,GACtD;AACJ;AAgBO,SAAS,sCAAA,CAKZ,OACA,MAAA,EAQF;AAEE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,MAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACpD,6BAA6B,EAAE,KAAA,EAAO,MAAM,2BAAA,IAA+B,IAAA,EAAM,YAAY,KAAA;AAAM,GACvG;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,MAAM,qBAAoC,IAAA,CAAK,YAAA,IAAgB,EAAC,EAAG,IAAI,CAAA,MAAA,MAAW;AAAA,IAC9E,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,MAAM2C,WAAAA,CAAY,eAAA;AAAA,IAClB;AAAA,GACJ,CAAE,CAAA;AAEF,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU;AAAA,MACN,cAAA,CAAe,SAAS,IAAI,CAAA;AAAA,MAC5B,cAAA,CAAe,SAAS,2BAA2B,CAAA;AAAA,MACnD,GAAG;AAAA,KACP;AAAA,IACA,IAAA,EAAM,mDAAkD,CAAE,MAAA;AAAA,MACtD;AAAA,KACJ;AAAA,IACA;AAAA,GAQH,CAAA;AACL;AAgBO,SAAS,yCAIZ,WAAA,EAGkE;AAClE,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,UAAU,EAAE,IAAA,EAAM,gBAAe,EAAG,2BAAA,EAA6B,gBAAe,EAAE;AAAA,IAClF,IAAA,EAAM,iDAAA,EAAkD,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GACrF;AACJ;ACrLO,IAAM,kCAAA,GAAqC;AAE3C,SAAS,uCAAA,GAA0C;AACtD,EAAA,OAAOf,YAAAA,EAAa,CAAE,MAAA,CAAO,kCAAkC,CAAA;AACnE;AAEO,IAAM,gDAAA,GAAmD;AAEzD,SAAS,mDAAA,GAAsD;AAClE,EAAA,OAAOA,YAAAA,EAAa,CAAE,MAAA,CAAO,gDAAgD,CAAA;AACjF;AA+BO,SAAS,2CAAA,GAAuG;AACnH,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,2BAAA,EAA6BA,YAAAA,EAAc,CAAA;AAAA,MAC5C,CAAC,cAAA,EAAgBN,gBAAAA,CAAiBC,iBAAAA,EAAkB,EAAG,EAAE,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,CAAC;AAAA,KAChG,CAAA;AAAA,IACD,CAAA,KAAA,MAAU;AAAA,MACN,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,kCAAA;AAAA,MACf,yBAAA,EAA2B;AAAA,KAC/B;AAAA,GACJ;AACJ;AAEO,SAAS,2CAAA,GAAmG;AAC/G,EAAA,OAAOP,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,2BAAA,EAA6BA,YAAAA,EAAc,CAAA;AAAA,IAC5C,CAAC,cAAA,EAAgBL,gBAAAA,CAAiBC,iBAAAA,EAAkB,EAAG,EAAE,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,CAAC;AAAA,GAChG,CAAA;AACL;AAEO,SAAS,yCAAA,GAGd;AACE,EAAA,OAAO1B,YAAAA,CAAa,2CAAA,EAA4C,EAAG,2CAAA,EAA6C,CAAA;AACpH;AAcO,SAAS,gCAAA,CAKZ,OACA,MAAA,EAOF;AAEE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,MAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACpD,uBAAuB,EAAE,KAAA,EAAO,MAAM,qBAAA,IAAyB,IAAA,EAAM,YAAY,KAAA;AAAM,GAC3F;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,MAAM,qBAAoC,IAAA,CAAK,YAAA,IAAgB,EAAC,EAAG,IAAI,CAAA,MAAA,MAAW;AAAA,IAC9E,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,MAAM2C,WAAAA,CAAY,eAAA;AAAA,IAClB;AAAA,GACJ,CAAE,CAAA;AAEF,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU,CAAC,cAAA,CAAe,QAAA,CAAS,IAAI,CAAA,EAAG,cAAA,CAAe,QAAA,CAAS,qBAAqB,CAAA,EAAG,GAAG,iBAAiB,CAAA;AAAA,IAC9G,IAAA,EAAM,2CAAA,EAA4C,CAAE,MAAA,CAAO,IAA6C,CAAA;AAAA,IACxG;AAAA,GAOH,CAAA;AACL;AAgBO,SAAS,mCAIZ,WAAA,EAG4D;AAC5D,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,UAAU,EAAE,IAAA,EAAM,gBAAe,EAAG,qBAAA,EAAuB,gBAAe,EAAE;AAAA,IAC5E,IAAA,EAAM,2CAAA,EAA4C,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GAC/E;AACJ;ACxKO,IAAM,qCAAA,GAAwC;AAE9C,SAAS,0CAAA,GAA6C;AACzD,EAAA,OAAOf,YAAAA,EAAa,CAAE,MAAA,CAAO,qCAAqC,CAAA;AACtE;AAEO,IAAM,sDAAA,GAAyD;AAE/D,SAAS,yDAAA,GAA4D;AACxE,EAAA,OAAOA,YAAAA,EAAa,CAAE,MAAA,CAAO,sDAAsD,CAAA;AACvF;AA+BO,SAAS,8CAAA,GAA6G;AACzH,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,8BAAA,EAAgCA,YAAAA,EAAc,CAAA;AAAA,MAC/C,CAAC,iBAAA,EAAmBN,gBAAAA,CAAiBC,iBAAAA,EAAkB,EAAG,EAAE,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,CAAC;AAAA,KACnG,CAAA;AAAA,IACD,CAAA,KAAA,MAAU;AAAA,MACN,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,qCAAA;AAAA,MACf,4BAAA,EAA8B;AAAA,KAClC;AAAA,GACJ;AACJ;AAEO,SAAS,8CAAA,GAAyG;AACrH,EAAA,OAAOP,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,8BAAA,EAAgCA,YAAAA,EAAc,CAAA;AAAA,IAC/C,CAAC,iBAAA,EAAmBL,gBAAAA,CAAiBC,iBAAAA,EAAkB,EAAG,EAAE,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,CAAC;AAAA,GACnG,CAAA;AACL;AAEO,SAAS,4CAAA,GAGd;AACE,EAAA,OAAO1B,YAAAA;AAAA,IACH,8CAAA,EAA+C;AAAA,IAC/C,8CAAA;AAA+C,GACnD;AACJ;AAgBO,SAAS,mCAAA,CAKZ,OACA,MAAA,EAOF;AAEE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,MAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACpD,0BAA0B,EAAE,KAAA,EAAO,MAAM,wBAAA,IAA4B,IAAA,EAAM,YAAY,KAAA;AAAM,GACjG;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,MAAM,qBAAoC,IAAA,CAAK,YAAA,IAAgB,EAAC,EAAG,IAAI,CAAA,MAAA,MAAW;AAAA,IAC9E,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,MAAM2C,WAAAA,CAAY,eAAA;AAAA,IAClB;AAAA,GACJ,CAAE,CAAA;AAEF,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU;AAAA,MACN,cAAA,CAAe,SAAS,IAAI,CAAA;AAAA,MAC5B,cAAA,CAAe,SAAS,wBAAwB,CAAA;AAAA,MAChD,GAAG;AAAA,KACP;AAAA,IACA,IAAA,EAAM,8CAAA,EAA+C,CAAE,MAAA,CAAO,IAAgD,CAAA;AAAA,IAC9G;AAAA,GAQH,CAAA;AACL;AAgBO,SAAS,sCAIZ,WAAA,EAG+D;AAC/D,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,UAAU,EAAE,IAAA,EAAM,gBAAe,EAAG,wBAAA,EAA0B,gBAAe,EAAE;AAAA,IAC/E,IAAA,EAAM,8CAAA,EAA+C,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GAClF;AACJ;ACrLO,IAAM,8CAAA,GAAiD;AAEvD,SAAS,iDAAA,GAAoD;AAChE,EAAA,OAAOf,YAAAA,EAAa,CAAE,MAAA,CAAO,8CAA8C,CAAA;AAC/E;AAEO,IAAM,oEAAA,GAAuE;AAE7E,SAAS,mEAAA,GAAsE;AAClF,EAAA,OAAOA,YAAAA,EAAa,CAAE,MAAA,CAAO,oEAAoE,CAAA;AACrG;AAiCO,SAAS,qDAAA,GAA2H;AACvI,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,iCAAA,EAAmCA,YAAAA,EAAc,CAAA;AAAA,MAClD,CAAC,YAAA,EAAcqB,aAAAA,EAAe,CAAA;AAAA,MAC9B,CAAC,oBAAA,EAAsB,aAAA,EAAe;AAAA,KACzC,CAAA;AAAA,IACD,CAAA,KAAA,MAAU;AAAA,MACN,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,8CAAA;AAAA,MACf,+BAAA,EAAiC;AAAA,KACrC;AAAA,GACJ;AACJ;AAEO,SAAS,qDAAA,GAAuH;AACnI,EAAA,OAAOjC,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,iCAAA,EAAmCA,YAAAA,EAAc,CAAA;AAAA,IAClD,CAAC,YAAA,EAAcoB,aAAAA,EAAe,CAAA;AAAA,IAC9B,CAAC,oBAAA,EAAsB,aAAA,EAAe;AAAA,GACzC,CAAA;AACL;AAEO,SAAS,mDAAA,GAGd;AACE,EAAA,OAAOlD,YAAAA;AAAA,IACH,qDAAA,EAAsD;AAAA,IACtD,qDAAA;AAAsD,GAC1D;AACJ;AAeO,SAAS,0CAAA,CAKZ,OACA,MAAA,EAOF;AAEE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,MAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACpD,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,IAAA;AAAK,GAClE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,MAAM,qBAAoC,IAAA,CAAK,YAAA,IAAgB,EAAC,EAAG,IAAI,CAAA,MAAA,MAAW;AAAA,IAC9E,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,MAAM2C,WAAAA,CAAY,eAAA;AAAA,IAClB;AAAA,GACJ,CAAE,CAAA;AAEF,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU,CAAC,cAAA,CAAe,QAAA,CAAS,IAAI,CAAA,EAAG,cAAA,CAAe,QAAA,CAAS,SAAS,CAAA,EAAG,GAAG,iBAAiB,CAAA;AAAA,IAClG,IAAA,EAAM,uDAAsD,CAAE,MAAA;AAAA,MAC1D;AAAA,KACJ;AAAA,IACA;AAAA,GAOH,CAAA;AACL;AAgBO,SAAS,6CAIZ,WAAA,EAGsE;AACtE,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,UAAU,EAAE,IAAA,EAAM,gBAAe,EAAG,SAAA,EAAW,gBAAe,EAAE;AAAA,IAChE,IAAA,EAAM,qDAAA,EAAsD,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GACzF;AACJ;ACpLO,IAAM,+CAAA,GAAkD;AAExD,SAAS,kDAAA,GAAqD;AACjE,EAAA,OAAOf,YAAAA,EAAa,CAAE,MAAA,CAAO,+CAA+C,CAAA;AAChF;AAEO,IAAM,qEAAA,GAAwE;AAE9E,SAAS,qEAAA,GAAwE;AACpF,EAAA,OAAOA,YAAAA,EAAa,CAAE,MAAA,CAAO,qEAAqE,CAAA;AACtG;AA6BO,SAAS,sDAAA,GAA6H;AACzI,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,kCAAA,EAAoCA,YAAAA,EAAc,CAAA;AAAA,MACnD,CAAC,MAAA,EAAQkB,aAAAA,EAAe;AAAA,KAC3B,CAAA;AAAA,IACD,CAAA,KAAA,MAAU;AAAA,MACN,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,+CAAA;AAAA,MACf,gCAAA,EAAkC;AAAA,KACtC;AAAA,GACJ;AACJ;AAEO,SAAS,sDAAA,GAAyH;AACrI,EAAA,OAAO9B,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,kCAAA,EAAoCA,YAAAA,EAAc,CAAA;AAAA,IACnD,CAAC,MAAA,EAAQiB,aAAAA,EAAe;AAAA,GAC3B,CAAA;AACL;AAEO,SAAS,oDAAA,GAGd;AACE,EAAA,OAAO/C,YAAAA;AAAA,IACH,sDAAA,EAAuD;AAAA,IACvD,sDAAA;AAAuD,GAC3D;AACJ;AAcO,SAAS,2CAAA,CAKZ,OACA,MAAA,EAOF;AAEE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,MAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACpD,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,IAAA;AAAK,GAC1E;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,MAAM,qBAAoC,IAAA,CAAK,YAAA,IAAgB,EAAC,EAAG,IAAI,CAAA,MAAA,MAAW;AAAA,IAC9E,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,MAAM2C,WAAAA,CAAY,eAAA;AAAA,IAClB;AAAA,GACJ,CAAE,CAAA;AAEF,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU,CAAC,cAAA,CAAe,QAAA,CAAS,IAAI,CAAA,EAAG,cAAA,CAAe,QAAA,CAAS,aAAa,CAAA,EAAG,GAAG,iBAAiB,CAAA;AAAA,IACtG,IAAA,EAAM,wDAAuD,CAAE,MAAA;AAAA,MAC3D;AAAA,KACJ;AAAA,IACA;AAAA,GAOH,CAAA;AACL;AAgBO,SAAS,8CAIZ,WAAA,EAGuE;AACvE,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,UAAU,EAAE,IAAA,EAAM,gBAAe,EAAG,aAAA,EAAe,gBAAe,EAAE;AAAA,IACpE,IAAA,EAAM,sDAAA,EAAuD,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GAC1F;AACJ;AC5KO,IAAM,yCAAA,GAA4C,IAAI,UAAA,CAAW,CAAC,GAAA,EAAK,EAAA,EAAI,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,EAAA,EAAI,EAAA,EAAI,GAAG,CAAC;AAEtG,SAAS,4CAAA,GAA+C;AAC3D,EAAA,OAAOzC,eAAAA,EAAgB,CAAE,MAAA,CAAO,yCAAyC,CAAA;AAC7E;AA8BO,SAAS,gDAAA,GAAwG;AACpH,EAAA,OAAOwC,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBR,eAAAA,EAAiB,CAAA;AAAA,MACnC,CAAC,SAAA,EAAWkB,aAAAA,EAAe;AAAA,KAC9B,CAAA;AAAA,IACD,CAAA,KAAA,MAAU,EAAE,GAAG,KAAA,EAAO,eAAe,yCAAA,EAA0C;AAAA,GACnF;AACJ;AAEO,SAAS,gDAAA,GAAoG;AAChH,EAAA,OAAOJ,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBZ,eAAAA,EAAiB,CAAA;AAAA,IACnC,CAAC,SAAA,EAAWiB,aAAAA,EAAe;AAAA,GAC9B,CAAA;AACL;AAEO,SAAS,8CAAA,GAGd;AACE,EAAA,OAAOrB,YAAAA;AAAA,IACH,gDAAA,EAAiD;AAAA,IACjD,gDAAA;AAAiD,GACrD;AACJ;AAWO,SAAS,qCAAA,CAKZ,OACA,MAAA,EAC2F;AAE3F,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACtD,iBAAiB,EAAE,KAAA,EAAO,MAAM,eAAA,IAAmB,IAAA,EAAM,YAAY,KAAA;AAAM,GAC/E;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAExB,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU,CAAC,cAAA,CAAe,QAAA,CAAS,KAAK,CAAA,EAAG,cAAA,CAAe,QAAA,CAAS,eAAe,CAAC,CAAA;AAAA,IACnF,IAAA,EAAM,kDAAiD,CAAE,MAAA;AAAA,MACrD;AAAA,KACJ;AAAA,IACA;AAAA,GAC4F,CAAA;AACpG;AAcO,SAAS,wCAIZ,WAAA,EAGiE;AACjE,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,UAAU,EAAE,KAAA,EAAO,gBAAe,EAAG,eAAA,EAAiB,gBAAe,EAAE;AAAA,IACvE,IAAA,EAAM,gDAAA,EAAiD,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GACpF;AACJ;ACpIO,IAAM,iDAAA,GAAoD,IAAI,UAAA,CAAW,CAAC,GAAA,EAAK,GAAA,EAAK,EAAA,EAAI,CAAA,EAAG,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAG,CAAC;AAE9G,SAAS,oDAAA,GAAuD;AACnE,EAAA,OAAOE,eAAAA,EAAgB,CAAE,MAAA,CAAO,iDAAiD,CAAA;AACrF;AA8BO,SAAS,wDAAA,GAAwH;AACpI,EAAA,OAAOwC,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBR,eAAAA,EAAiB,CAAA;AAAA,MACnC,CAAC,oBAAA,EAAsBoB,gBAAAA,CAAiBC,iBAAAA,EAAkB,EAAG,EAAE,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,CAAC;AAAA,KACtG,CAAA;AAAA,IACD,CAAA,KAAA,MAAU,EAAE,GAAG,KAAA,EAAO,eAAe,iDAAA,EAAkD;AAAA,GAC3F;AACJ;AAEO,SAAS,wDAAA,GAAoH;AAChI,EAAA,OAAOP,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBZ,eAAAA,EAAiB,CAAA;AAAA,IACnC,CAAC,oBAAA,EAAsBqB,gBAAAA,CAAiBC,iBAAAA,EAAkB,EAAG,EAAE,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,CAAC;AAAA,GACtG,CAAA;AACL;AAEO,SAAS,sDAAA,GAGd;AACE,EAAA,OAAO1B,YAAAA;AAAA,IACH,wDAAA,EAAyD;AAAA,IACzD,wDAAA;AAAyD,GAC7D;AACJ;AAYO,SAAS,6CAAA,CAKZ,OACA,MAAA,EACmG;AAEnG,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACtD,iBAAiB,EAAE,KAAA,EAAO,MAAM,eAAA,IAAmB,IAAA,EAAM,YAAY,KAAA;AAAM,GAC/E;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAExB,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU,CAAC,cAAA,CAAe,QAAA,CAAS,KAAK,CAAA,EAAG,cAAA,CAAe,QAAA,CAAS,eAAe,CAAC,CAAA;AAAA,IACnF,IAAA,EAAM,0DAAyD,CAAE,MAAA;AAAA,MAC7D;AAAA,KACJ;AAAA,IACA;AAAA,GACoG,CAAA;AAC5G;AAeO,SAAS,gDAIZ,WAAA,EAGyE;AACzE,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,UAAU,EAAE,KAAA,EAAO,gBAAe,EAAG,eAAA,EAAiB,gBAAe,EAAE;AAAA,IACvE,IAAA,EAAM,wDAAA,EAAyD,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GAC5F;AACJ;ACpIO,IAAM,yCAAA,GAA4C,IAAI,UAAA,CAAW,CAAC,GAAA,EAAK,GAAA,EAAK,EAAA,EAAI,EAAA,EAAI,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAG,CAAC;AAEvG,SAAS,6CAAA,GAAgD;AAC5D,EAAA,OAAOE,eAAAA,EAAgB,CAAE,MAAA,CAAO,yCAAyC,CAAA;AAC7E;AAkCO,SAAS,iDAAA,GAA0G;AACtH,EAAA,OAAOwC,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBR,eAAAA,EAAiB,CAAA;AAAA,MACnC,CAAC,OAAA,EAAS,4BAAA,EAA8B,CAAA;AAAA,MACxC,CAAC,OAAA,EAASS,oBAAAA,CAAqBC,gBAAe,EAAGC,aAAAA,EAAe,CAAC;AAAA,KACpE,CAAA;AAAA,IACD,CAAA,KAAA,MAAU,EAAE,GAAG,KAAA,EAAO,eAAe,yCAAA,EAA0C;AAAA,GACnF;AACJ;AAEO,SAAS,iDAAA,GAAsG;AAClH,EAAA,OAAOG,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBZ,eAAAA,EAAiB,CAAA;AAAA,IACnC,CAAC,OAAA,EAAS,4BAAA,EAA8B,CAAA;AAAA,IACxC,CAAC,OAAA,EAASa,oBAAAA,CAAqBC,gBAAe,EAAGC,aAAAA,EAAe,CAAC;AAAA,GACpE,CAAA;AACL;AAEO,SAAS,+CAAA,GAGd;AACE,EAAA,OAAOnB,YAAAA;AAAA,IACH,iDAAA,EAAkD;AAAA,IAClD,iDAAA;AAAkD,GACtD;AACJ;AAYO,SAAS,sCAAA,CAKZ,OACA,MAAA,EAC+F;AAE/F,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,UAAU,EAAE,KAAA,EAAO,MAAM,QAAA,IAAY,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAC5D,iBAAiB,EAAE,KAAA,EAAO,MAAM,eAAA,IAAmB,IAAA,EAAM,YAAY,KAAA;AAAM,GAC/E;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAExB,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU,CAAC,cAAA,CAAe,QAAA,CAAS,QAAQ,CAAA,EAAG,cAAA,CAAe,QAAA,CAAS,eAAe,CAAC,CAAA;AAAA,IACtF,IAAA,EAAM,mDAAkD,CAAE,MAAA;AAAA,MACtD;AAAA,KACJ;AAAA,IACA;AAAA,GACgG,CAAA;AACxG;AAcO,SAAS,yCAIZ,WAAA,EAGkE;AAClE,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,UAAU,EAAE,QAAA,EAAU,gBAAe,EAAG,eAAA,EAAiB,gBAAe,EAAE;AAAA,IAC1E,IAAA,EAAM,iDAAA,EAAkD,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GACrF;AACJ;ACrJO,IAAM,oDAAA,GAAuD,IAAI,UAAA,CAAW;AAAA,EAC/E,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI;AACrC,CAAC;AAEM,SAAS,uDAAA,GAA0D;AACtE,EAAA,OAAOE,eAAAA,EAAgB,CAAE,MAAA,CAAO,oDAAoD,CAAA;AACxF;AA8BO,SAAS,2DAAA,GAA8H;AAC1I,EAAA,OAAOwC,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBR,eAAAA,EAAiB,CAAA;AAAA,MACnC,CAAC,oBAAA,EAAsBoB,gBAAAA,CAAiBC,iBAAAA,EAAkB,EAAG,EAAE,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,CAAC;AAAA,KACtG,CAAA;AAAA,IACD,CAAA,KAAA,MAAU,EAAE,GAAG,KAAA,EAAO,eAAe,oDAAA,EAAqD;AAAA,GAC9F;AACJ;AAEO,SAAS,2DAAA,GAA0H;AACtI,EAAA,OAAOP,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBZ,eAAAA,EAAiB,CAAA;AAAA,IACnC,CAAC,oBAAA,EAAsBqB,gBAAAA,CAAiBC,iBAAAA,EAAkB,EAAG,EAAE,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,CAAC;AAAA,GACtG,CAAA;AACL;AAEO,SAAS,yDAAA,GAGd;AACE,EAAA,OAAO1B,YAAAA;AAAA,IACH,2DAAA,EAA4D;AAAA,IAC5D,2DAAA;AAA4D,GAChE;AACJ;AAWO,SAAS,gDAAA,CAKZ,OACA,MAAA,EACyG;AAEzG,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,UAAU,EAAE,KAAA,EAAO,MAAM,QAAA,IAAY,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAC5D,iBAAiB,EAAE,KAAA,EAAO,MAAM,eAAA,IAAmB,IAAA,EAAM,YAAY,KAAA;AAAM,GAC/E;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAExB,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU,CAAC,cAAA,CAAe,QAAA,CAAS,QAAQ,CAAA,EAAG,cAAA,CAAe,QAAA,CAAS,eAAe,CAAC,CAAA;AAAA,IACtF,IAAA,EAAM,6DAA4D,CAAE,MAAA;AAAA,MAChE;AAAA,KACJ;AAAA,IACA;AAAA,GAC0G,CAAA;AAClH;AAcO,SAAS,mDAIZ,WAAA,EAG4E;AAC5E,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,UAAU,EAAE,QAAA,EAAU,gBAAe,EAAG,eAAA,EAAiB,gBAAe,EAAE;AAAA,IAC1E,IAAA,EAAM,2DAAA,EAA4D,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GAC/F;AACJ;ACxIO,IAAM,kCAAA,GAAqC;AAE3C,SAAS,uCAAA,GAA0C;AACtD,EAAA,OAAO4B,YAAAA,EAAa,CAAE,MAAA,CAAO,kCAAkC,CAAA;AACnE;AAEO,IAAM,gDAAA,GAAmD;AAEzD,SAAS,mDAAA,GAAsD;AAClE,EAAA,OAAOA,YAAAA,EAAa,CAAE,MAAA,CAAO,gDAAgD,CAAA;AACjF;AA6BO,SAAS,2CAAA,GAAuG;AACnH,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,2BAAA,EAA6BA,YAAAA,EAAc,CAAA;AAAA,MAC5C,CAAC,WAAA,EAAaN,gBAAAA,CAAiBC,iBAAAA,EAAkB,EAAG,EAAE,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,CAAC;AAAA,KAC7F,CAAA;AAAA,IACD,CAAA,KAAA,MAAU;AAAA,MACN,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,kCAAA;AAAA,MACf,yBAAA,EAA2B;AAAA,KAC/B;AAAA,GACJ;AACJ;AAEO,SAAS,2CAAA,GAAmG;AAC/G,EAAA,OAAOP,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,2BAAA,EAA6BA,YAAAA,EAAc,CAAA;AAAA,IAC5C,CAAC,WAAA,EAAaL,gBAAAA,CAAiBC,iBAAAA,EAAkB,EAAG,EAAE,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,CAAC;AAAA,GAC7F,CAAA;AACL;AAEO,SAAS,yCAAA,GAGd;AACE,EAAA,OAAO1B,YAAAA,CAAa,2CAAA,EAA4C,EAAG,2CAAA,EAA6C,CAAA;AACpH;AAWO,SAAS,gCAAA,CAKZ,OACA,MAAA,EAOF;AAEE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,MAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACpD,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA;AAAM,GACnE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,MAAM,qBAAoC,IAAA,CAAK,YAAA,IAAgB,EAAC,EAAG,IAAI,CAAA,MAAA,MAAW;AAAA,IAC9E,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,MAAM2C,WAAAA,CAAY,eAAA;AAAA,IAClB;AAAA,GACJ,CAAE,CAAA;AAEF,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU,CAAC,cAAA,CAAe,QAAA,CAAS,IAAI,CAAA,EAAG,cAAA,CAAe,QAAA,CAAS,SAAS,CAAA,EAAG,GAAG,iBAAiB,CAAA;AAAA,IAClG,IAAA,EAAM,2CAAA,EAA4C,CAAE,MAAA,CAAO,IAA6C,CAAA;AAAA,IACxG;AAAA,GAOH,CAAA;AACL;AAgBO,SAAS,mCAIZ,WAAA,EAG4D;AAC5D,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,UAAU,EAAE,IAAA,EAAM,gBAAe,EAAG,SAAA,EAAW,gBAAe,EAAE;AAAA,IAChE,IAAA,EAAM,2CAAA,EAA4C,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GAC/E;AACJ;ACzKO,IAAM,sCAAA,GAAyC;AAE/C,SAAS,2CAAA,GAA8C;AAC1D,EAAA,OAAOf,YAAAA,EAAa,CAAE,MAAA,CAAO,sCAAsC,CAAA;AACvE;AAyBO,SAAS,+CAAA,GAA+G;AAC3H,EAAA,OAAOc,gBAAAA,CAAiBhC,gBAAAA,CAAiB,CAAC,CAAC,eAAA,EAAiBkB,cAAc,CAAC,CAAC,CAAA,EAAG,CAAA,KAAA,MAAU;AAAA,IACrF,GAAG,KAAA;AAAA,IACH,aAAA,EAAe;AAAA,GACnB,CAAE,CAAA;AACN;AAEO,SAAS,+CAAA,GAA2G;AACvH,EAAA,OAAOZ,iBAAiB,CAAC,CAAC,iBAAiBc,YAAAA,EAAc,CAAC,CAAC,CAAA;AAC/D;AAEO,SAAS,6CAAA,GAGd;AACE,EAAA,OAAO9B,YAAAA;AAAA,IACH,+CAAA,EAAgD;AAAA,IAChD,+CAAA;AAAgD,GACpD;AACJ;AAgBO,SAAS,oCAAA,CAMZ,OACA,MAAA,EAQF;AAEE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACtE,oBAAoB,EAAE,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChF,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA;AAAM,GACnE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,MAAM,qBAAoC,IAAA,CAAK,YAAA,IAAgB,EAAC,EAAG,IAAI,CAAA,MAAA,MAAW;AAAA,IAC9E,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,MAAM2C,WAAAA,CAAY,eAAA;AAAA,IAClB;AAAA,GACJ,CAAE,CAAA;AAEF,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU;AAAA,MACN,cAAA,CAAe,SAAS,aAAa,CAAA;AAAA,MACrC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,GAAG;AAAA,KACP;AAAA,IACA,IAAA,EAAM,+CAAA,EAAgD,CAAE,MAAA,CAAO,EAAE,CAAA;AAAA,IACjE;AAAA,GAQH,CAAA;AACL;AAkBO,SAAS,uCAIZ,WAAA,EAGgE;AAChE,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU;AAAA,MACN,eAAe,cAAA,EAAe;AAAA,MAC9B,oBAAoB,cAAA,EAAe;AAAA,MACnC,WAAW,cAAA;AAAe,KAC9B;AAAA,IACA,IAAA,EAAM,+CAAA,EAAgD,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GACnF;AACJ;ACpKO,IAAM,oDAAA,GAAuD;AAE7D,SAAS,uDAAA,GAA0D;AACtE,EAAA,OAAOf,YAAAA,EAAa,CAAE,MAAA,CAAO,oDAAoD,CAAA;AACrF;AAEO,IAAM,iEAAA,GAAoE;AAE1E,SAAS,kEAAA,GAAqE;AACjF,EAAA,OAAOA,YAAAA,EAAa,CAAE,MAAA,CAAO,iEAAiE,CAAA;AAClG;AAiCO,SAAS,2DAAA,GAAuI;AACnJ,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,0BAAA,EAA4BA,YAAAA,EAAc,CAAA;AAAA,MAC3C,CAAC,kBAAA,EAAoBA,YAAAA,EAAc;AAAA,KACtC,CAAA;AAAA,IACD,CAAA,KAAA,MAAU;AAAA,MACN,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,oDAAA;AAAA,MACf,wBAAA,EAA0B;AAAA,KAC9B;AAAA,GACJ;AACJ;AAEO,SAAS,2DAAA,GAAmI;AAC/I,EAAA,OAAOZ,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,0BAAA,EAA4BA,YAAAA,EAAc,CAAA;AAAA,IAC3C,CAAC,kBAAA,EAAoBA,YAAAA,EAAc;AAAA,GACtC,CAAA;AACL;AAEO,SAAS,yDAAA,GAGd;AACE,EAAA,OAAO9B,YAAAA;AAAA,IACH,2DAAA,EAA4D;AAAA,IAC5D,2DAAA;AAA4D,GAChE;AACJ;AAuBO,SAAS,gDAAA,CAMZ,OAKA,MAAA,EASF;AAEE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,MAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrD,aAAa,EAAE,KAAA,EAAO,MAAM,WAAA,IAAe,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAClE,2BAA2B,EAAE,KAAA,EAAO,MAAM,yBAAA,IAA6B,IAAA,EAAM,YAAY,KAAA;AAAM,GACnG;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,MAAM,iBAAA,GAAmC;AAAA,IACrC,IAAI,IAAA,CAAK,YAAA,IAAgB,EAAC,EAAG,IAAI,CAAA,MAAA,MAAW;AAAA,MACxC,SAAS,MAAA,CAAO,OAAA;AAAA,MAChB,MAAM2C,WAAAA,CAAY,eAAA;AAAA,MAClB;AAAA,KACJ,CAAE,CAAA;AAAA,IACF,GAAG,IAAA,CAAK,OAAA,CAAQ,GAAA,CAAI,CAAA,OAAA,MAAY,EAAE,OAAA,EAAS,IAAA,EAAMA,WAAAA,CAAY,QAAA,EAAS,CAAE;AAAA,GAC5E;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU;AAAA,MACN,cAAA,CAAe,SAAS,IAAI,CAAA;AAAA,MAC5B,cAAA,CAAe,SAAS,WAAW,CAAA;AAAA,MACnC,cAAA,CAAe,SAAS,yBAAyB,CAAA;AAAA,MACjD,GAAG;AAAA,KACP;AAAA,IACA,IAAA,EAAM,6DAA4D,CAAE,MAAA;AAAA,MAChE;AAAA,KACJ;AAAA,IACA;AAAA,GASH,CAAA;AACL;AAqBO,SAAS,mDAIZ,WAAA,EAG4E;AAC5E,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU;AAAA,MACN,MAAM,cAAA,EAAe;AAAA,MACrB,aAAa,cAAA,EAAe;AAAA,MAC5B,2BAA2B,cAAA;AAAe,KAC9C;AAAA,IACA,IAAA,EAAM,2DAAA,EAA4D,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GAC/F;AACJ;AC3MO,IAAM,kFAAA,GAAqF;AAE3F,SAAS,iFAAA,GAAoF;AAChG,EAAA,OAAOf,YAAAA,EAAa,CAAE,MAAA,CAAO,kFAAkF,CAAA;AACnH;AAEO,IAAM,4GAAA,GAA+G;AAErH,SAAS,wGAAA,GAA2G;AACvH,EAAA,OAAOA,cAAa,CAAE,MAAA;AAAA,IAClB;AAAA,GACJ;AACJ;AA6CO,SAAS,qFAAA,GAA2L;AACvM,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,sCAAA,EAAwCA,YAAAA,EAAc,CAAA;AAAA,MACvD,CAAC,kBAAA,EAAoBA,YAAAA,EAAc,CAAA;AAAA,MACnC,CAAC,wBAAA,EAA0BgB,YAAAA,EAAc,CAAA;AAAA,MACzC,CAAC,gCAAA,EAAkC,4BAAA,EAA8B;AAAA,KACpE,CAAA;AAAA,IACD,CAAA,KAAA,MAAU;AAAA,MACN,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,kFAAA;AAAA,MACf,oCAAA,EACI;AAAA,KACR;AAAA,GACJ;AACJ;AAEO,SAAS,qFAAA,GAAuL;AACnM,EAAA,OAAO5B,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,sCAAA,EAAwCA,YAAAA,EAAc,CAAA;AAAA,IACvD,CAAC,kBAAA,EAAoBA,YAAAA,EAAc,CAAA;AAAA,IACnC,CAAC,wBAAA,EAA0Be,YAAAA,EAAc,CAAA;AAAA,IACzC,CAAC,gCAAA,EAAkC,4BAAA,EAA8B;AAAA,GACpE,CAAA;AACL;AAEO,SAAS,mFAAA,GAGd;AACE,EAAA,OAAO7C,YAAAA;AAAA,IACH,qFAAA,EAAsF;AAAA,IACtF,qFAAA;AAAsF,GAC1F;AACJ;AAyBO,SAAS,0EAAA,CAQZ,OAOA,MAAA,EAUF;AAEE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,MAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrD,aAAa,EAAE,KAAA,EAAO,MAAM,WAAA,IAAe,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAClE,kCAAkC,EAAE,KAAA,EAAO,MAAM,gCAAA,IAAoC,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC7G,QAAQ,EAAE,KAAA,EAAO,MAAM,MAAA,IAAU,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACzD,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA;AAAM,GACnE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,MAAM,qBAAoC,IAAA,CAAK,YAAA,IAAgB,EAAC,EAAG,IAAI,CAAA,MAAA,MAAW;AAAA,IAC9E,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,MAAM2C,WAAAA,CAAY,eAAA;AAAA,IAClB;AAAA,GACJ,CAAE,CAAA;AAEF,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU;AAAA,MACN,cAAA,CAAe,SAAS,IAAI,CAAA;AAAA,MAC5B,cAAA,CAAe,SAAS,WAAW,CAAA;AAAA,MACnC,cAAA,CAAe,SAAS,gCAAgC,CAAA;AAAA,MACxD,cAAA,CAAe,SAAS,MAAM,CAAA;AAAA,MAC9B,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,GAAG;AAAA,KACP;AAAA,IACA,IAAA,EAAM,uFAAsF,CAAE,MAAA;AAAA,MAC1F;AAAA,KACJ;AAAA,IACA;AAAA,GAUH,CAAA;AACL;AAsBO,SAAS,6EAIZ,WAAA,EAGsG;AACtG,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,MAAM,yBAAyB,MAAM;AACjC,IAAA,MAAM,cAAc,cAAA,EAAe;AACnC,IAAA,OAAO,WAAA,CAAY,OAAA,KAAY,0BAAA,GAA6B,MAAA,GAAY,WAAA;AAAA,EAC5E,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU;AAAA,MACN,MAAM,cAAA,EAAe;AAAA,MACrB,aAAa,cAAA,EAAe;AAAA,MAC5B,kCAAkC,cAAA,EAAe;AAAA,MACjD,QAAQ,sBAAA,EAAuB;AAAA,MAC/B,WAAW,cAAA;AAAe,KAC9B;AAAA,IACA,IAAA,EAAM,uFAAsF,CAAE,MAAA;AAAA,MAC1F,WAAA,CAAY;AAAA;AAChB,GACJ;AACJ;AChQO,IAAM,gDAAA,GAAmD;AAEzD,SAAS,mDAAA,GAAsD;AAClE,EAAA,OAAOf,YAAAA,EAAa,CAAE,MAAA,CAAO,gDAAgD,CAAA;AACjF;AAEO,IAAM,6DAAA,GAAgE;AAEtE,SAAS,8DAAA,GAAiE;AAC7E,EAAA,OAAOA,YAAAA,EAAa,CAAE,MAAA,CAAO,6DAA6D,CAAA;AAC9F;AAyBO,SAAS,uDAAA,GAA+H;AAC3I,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,0BAAA,EAA4BA,YAAAA,EAAc;AAAA,KAC9C,CAAA;AAAA,IACD,CAAA,KAAA,MAAU;AAAA,MACN,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,gDAAA;AAAA,MACf,wBAAA,EAA0B;AAAA,KAC9B;AAAA,GACJ;AACJ;AAEO,SAAS,uDAAA,GAA2H;AACvI,EAAA,OAAOZ,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,0BAAA,EAA4BA,YAAAA,EAAc;AAAA,GAC9C,CAAA;AACL;AAEO,SAAS,qDAAA,GAGd;AACE,EAAA,OAAO9B,YAAAA;AAAA,IACH,uDAAA,EAAwD;AAAA,IACxD,uDAAA;AAAwD,GAC5D;AACJ;AAqBO,SAAS,4CAAA,CAMZ,OACA,MAAA,EASF;AAEE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,MAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACpD,aAAa,EAAE,KAAA,EAAO,MAAM,WAAA,IAAe,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAClE,2BAA2B,EAAE,KAAA,EAAO,MAAM,yBAAA,IAA6B,IAAA,EAAM,YAAY,KAAA;AAAM,GACnG;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,MAAM,qBAAoC,IAAA,CAAK,YAAA,IAAgB,EAAC,EAAG,IAAI,CAAA,MAAA,MAAW;AAAA,IAC9E,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,MAAM2C,WAAAA,CAAY,eAAA;AAAA,IAClB;AAAA,GACJ,CAAE,CAAA;AAEF,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU;AAAA,MACN,cAAA,CAAe,SAAS,IAAI,CAAA;AAAA,MAC5B,cAAA,CAAe,SAAS,WAAW,CAAA;AAAA,MACnC,cAAA,CAAe,SAAS,yBAAyB,CAAA;AAAA,MACjD,GAAG;AAAA,KACP;AAAA,IACA,IAAA,EAAM,uDAAA,EAAwD,CAAE,MAAA,CAAO,EAAE,CAAA;AAAA,IACzE;AAAA,GASH,CAAA;AACL;AAqBO,SAAS,+CAIZ,WAAA,EAGwE;AACxE,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU;AAAA,MACN,MAAM,cAAA,EAAe;AAAA,MACrB,aAAa,cAAA,EAAe;AAAA,MAC5B,2BAA2B,cAAA;AAAe,KAC9C;AAAA,IACA,IAAA,EAAM,uDAAA,EAAwD,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GAC3F;AACJ;ACtLO,IAAM,8EAAA,GAAiF;AAEvF,SAAS,6EAAA,GAAgF;AAC5F,EAAA,OAAOf,YAAAA,EAAa,CAAE,MAAA,CAAO,8EAA8E,CAAA;AAC/G;AAEO,IAAM,wGAAA,GAA2G;AAEjH,SAAS,oGAAA,GAAuG;AACnH,EAAA,OAAOA,cAAa,CAAE,MAAA;AAAA,IAClB;AAAA,GACJ;AACJ;AAyCO,SAAS,iFAAA,GAAmL;AAC/L,EAAA,OAAOc,gBAAAA;AAAA,IACHhC,gBAAAA,CAAiB;AAAA,MACb,CAAC,eAAA,EAAiBkB,YAAAA,EAAc,CAAA;AAAA,MAChC,CAAC,sCAAA,EAAwCA,YAAAA,EAAc,CAAA;AAAA,MACvD,CAAC,wBAAA,EAA0BgB,YAAAA,EAAc,CAAA;AAAA,MACzC,CAAC,gCAAA,EAAkC,4BAAA,EAA8B;AAAA,KACpE,CAAA;AAAA,IACD,CAAA,KAAA,MAAU;AAAA,MACN,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,8EAAA;AAAA,MACf,oCAAA,EACI;AAAA,KACR;AAAA,GACJ;AACJ;AAEO,SAAS,iFAAA,GAA+K;AAC3L,EAAA,OAAO5B,gBAAAA,CAAiB;AAAA,IACpB,CAAC,eAAA,EAAiBc,YAAAA,EAAc,CAAA;AAAA,IAChC,CAAC,sCAAA,EAAwCA,YAAAA,EAAc,CAAA;AAAA,IACvD,CAAC,wBAAA,EAA0Be,YAAAA,EAAc,CAAA;AAAA,IACzC,CAAC,gCAAA,EAAkC,4BAAA,EAA8B;AAAA,GACpE,CAAA;AACL;AAEO,SAAS,+EAAA,GAGd;AACE,EAAA,OAAO7C,YAAAA;AAAA,IACH,iFAAA,EAAkF;AAAA,IAClF,iFAAA;AAAkF,GACtF;AACJ;AAwBO,SAAS,sEAAA,CAQZ,OAOA,MAAA,EAUF;AAEE,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,0BAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACrB,MAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACpD,aAAa,EAAE,KAAA,EAAO,MAAM,WAAA,IAAe,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAClE,kCAAkC,EAAE,KAAA,EAAO,MAAM,gCAAA,IAAoC,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC7G,QAAQ,EAAE,KAAA,EAAO,MAAM,MAAA,IAAU,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACzD,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA;AAAM,GACnE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAGjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,MAAM,qBAAoC,IAAA,CAAK,YAAA,IAAgB,EAAC,EAAG,IAAI,CAAA,MAAA,MAAW;AAAA,IAC9E,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,MAAM2C,WAAAA,CAAY,eAAA;AAAA,IAClB;AAAA,GACJ,CAAE,CAAA;AAEF,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACjB,QAAA,EAAU;AAAA,MACN,cAAA,CAAe,SAAS,IAAI,CAAA;AAAA,MAC5B,cAAA,CAAe,SAAS,WAAW,CAAA;AAAA,MACnC,cAAA,CAAe,SAAS,gCAAgC,CAAA;AAAA,MACxD,cAAA,CAAe,SAAS,MAAM,CAAA;AAAA,MAC9B,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,GAAG;AAAA,KACP;AAAA,IACA,IAAA,EAAM,mFAAkF,CAAE,MAAA;AAAA,MACtF;AAAA,KACJ;AAAA,IACA;AAAA,GAUH,CAAA;AACL;AAsBO,SAAS,yEAIZ,WAAA,EAGkG;AAClG,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AACzB,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACX,CAAA;AACA,EAAA,MAAM,yBAAyB,MAAM;AACjC,IAAA,MAAM,cAAc,cAAA,EAAe;AACnC,IAAA,OAAO,WAAA,CAAY,OAAA,KAAY,0BAAA,GAA6B,MAAA,GAAY,WAAA;AAAA,EAC5E,CAAA;AACA,EAAA,OAAO;AAAA,IACH,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU;AAAA,MACN,MAAM,cAAA,EAAe;AAAA,MACrB,aAAa,cAAA,EAAe;AAAA,MAC5B,kCAAkC,cAAA,EAAe;AAAA,MACjD,QAAQ,sBAAA,EAAuB;AAAA,MAC/B,WAAW,cAAA;AAAe,KAC9B;AAAA,IACA,IAAA,EAAM,mFAAkF,CAAE,MAAA;AAAA,MACtF,WAAA,CAAY;AAAA;AAChB,GACJ;AACJ;;;ACjQO,IAAM,gCAAA,GACT;AAEG,IAAK,0BAAA,qBAAAQ,2BAAAA,KAAL;AACH,EAAAA,2BAAAA,CAAAA,2BAAAA,CAAA,uBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,uBAAA;AACA,EAAAA,2BAAAA,CAAAA,2BAAAA,CAAA,iCAAA,CAAA,GAAA,CAAA,CAAA,GAAA,iCAAA;AACA,EAAAA,2BAAAA,CAAAA,2BAAAA,CAAA,8BAAA,CAAA,GAAA,CAAA,CAAA,GAAA,8BAAA;AAHQ,EAAA,OAAAA,2BAAAA;AAAA,CAAA,EAAA,0BAAA,IAAA,EAAA;AAML,SAAS,mCACZ,WAAA,EAC0B;AAC1B,EAAA,MAAM,IAAA,GAAO,MAAA,IAAU,WAAA,GAAc,WAAA,CAAY,IAAA,GAAO,WAAA;AACxD,EAAA,IAAI,aAAA,CAAc,MAAMvB,YAAAA,EAAa,CAAE,OAAO,CAAC,CAAA,EAAG,CAAC,CAAA,EAAG;AAClD,IAAA,OAAO,CAAA;AAAA,EACX;AACA,EAAA,IAAI,aAAA,CAAc,MAAMA,YAAAA,EAAa,CAAE,OAAO,CAAC,CAAA,EAAG,CAAC,CAAA,EAAG;AAClD,IAAA,OAAO,CAAA;AAAA,EACX;AACA,EAAA,IAAI,aAAA,CAAc,MAAMA,YAAAA,EAAa,CAAE,OAAO,CAAC,CAAA,EAAG,CAAC,CAAA,EAAG;AAClD,IAAA,OAAO,CAAA;AAAA,EACX;AACA,EAAA,MAAM,IAAI,MAAM,oFAAoF,CAAA;AACxG;AAaO,SAAS,gCACZ,WAAA,EAC0C;AAC1C,EAAA,MAAM,eAAA,GAAkB,mCAAmC,WAAW,CAAA;AACtE,EAAA,QAAQ,eAAA;AAAiB,IACrB,KAAK,CAAA,8BAAkD;AACnD,MAAA,+BAAA,CAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,CAAA;AAAA,QACjB,GAAG,sCAAsC,WAAW;AAAA,OACxD;AAAA,IACJ;AAAA,IACA,KAAK,CAAA,wCAA4D;AAC7D,MAAA,+BAAA,CAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,CAAA;AAAA,QACjB,GAAG,gDAAgD,WAAW;AAAA,OAClE;AAAA,IACJ;AAAA,IACA,KAAK,CAAA,qCAAyD;AAC1D,MAAA,+BAAA,CAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,CAAA;AAAA,QACjB,GAAG,6CAA6C,WAAW;AAAA,OAC/D;AAAA,IACJ;AAAA,IACA;AACI,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,+BAAA,EAAkC,eAAyB,CAAA,CAAE,CAAA;AAAA;AAEzF;AC+GO,IAAM,0BAAA,GACT;AAEG,IAAK,gBAAA,qBAAAwB,iBAAAA,KAAL;AACH,EAAAA,iBAAAA,CAAAA,iBAAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAA;AACA,EAAAA,iBAAAA,CAAAA,iBAAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAA;AACA,EAAAA,iBAAAA,CAAAA,iBAAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAA;AAHQ,EAAA,OAAAA,iBAAAA;AAAA,CAAA,EAAA,gBAAA,IAAA,EAAA;AAML,SAAS,yBAAyB,OAAA,EAA8E;AACnH,EAAA,MAAM,IAAA,GAAO,MAAA,IAAU,OAAA,GAAU,OAAA,CAAQ,IAAA,GAAO,OAAA;AAChD,EAAA,IAAI,IAAA,CAAK,WAAW,EAAA,EAAI;AACpB,IAAA,OAAO,CAAA;AAAA,EACX;AACA,EAAA,IAAI,IAAA,CAAK,WAAW,GAAA,EAAK;AACrB,IAAA,OAAO,CAAA;AAAA,EACX;AACA,EAAA,IAAI,IAAA,CAAK,WAAW,GAAA,EAAK;AACrB,IAAA,OAAO,CAAA;AAAA,EACX;AACA,EAAA,MAAM,IAAI,MAAM,uEAAuE,CAAA;AAC3F;AAEO,IAAK,oBAAA,qBAAAC,qBAAAA,KAAL;AACH,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,gBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,gBAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,mBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,mBAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,oBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,oBAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,eAAA,CAAA,GAAA,EAAA,CAAA,GAAA,eAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,aAAA,CAAA,GAAA,EAAA,CAAA,GAAA,aAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,iBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,iBAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,gBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,gBAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,eAAA,CAAA,GAAA,EAAA,CAAA,GAAA,eAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,aAAA,CAAA,GAAA,EAAA,CAAA,GAAA,aAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,oBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,oBAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,YAAA,CAAA,GAAA,EAAA,CAAA,GAAA,YAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,oBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,oBAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,qBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,qBAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,iBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,iBAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,oBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,oBAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,0BAAA,CAAA,GAAA,EAAA,CAAA,GAAA,0BAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,kBAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,kBAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,8BAAA,CAAA,GAAA,EAAA,CAAA,GAAA,8BAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,6BAAA,CAAA,GAAA,EAAA,CAAA,GAAA,6BAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,wBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,wBAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,gCAAA,CAAA,GAAA,EAAA,CAAA,GAAA,gCAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,oCAAA,CAAA,GAAA,EAAA,CAAA,GAAA,oCAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,6BAAA,CAAA,GAAA,EAAA,CAAA,GAAA,6BAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,gBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,gBAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,oCAAA,CAAA,GAAA,EAAA,CAAA,GAAA,oCAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,gCAAA,CAAA,GAAA,EAAA,CAAA,GAAA,gCAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,sCAAA,CAAA,GAAA,EAAA,CAAA,GAAA,sCAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,oCAAA,CAAA,GAAA,EAAA,CAAA,GAAA,oCAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,kCAAA,CAAA,GAAA,EAAA,CAAA,GAAA,kCAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,qBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,qBAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,sBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,sBAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,sBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,sBAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,iCAAA,CAAA,GAAA,EAAA,CAAA,GAAA,iCAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,2BAAA,CAAA,GAAA,EAAA,CAAA,GAAA,2BAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,4BAAA,CAAA,GAAA,EAAA,CAAA,GAAA,4BAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,8BAAA,CAAA,GAAA,EAAA,CAAA,GAAA,8BAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,+BAAA,CAAA,GAAA,EAAA,CAAA,GAAA,+BAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,6BAAA,CAAA,GAAA,EAAA,CAAA,GAAA,6BAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,+BAAA,CAAA,GAAA,EAAA,CAAA,GAAA,+BAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,2BAAA,CAAA,GAAA,EAAA,CAAA,GAAA,2BAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,YAAA,CAAA,GAAA,EAAA,CAAA,GAAA,YAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,qBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,qBAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,sBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,sBAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,kBAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,+BAAA,CAAA,GAAA,EAAA,CAAA,GAAA,+BAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,+BAAA,CAAA,GAAA,EAAA,CAAA,GAAA,+BAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,+BAAA,CAAA,GAAA,EAAA,CAAA,GAAA,+BAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,gBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,gBAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,iBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,iBAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,6BAAA,CAAA,GAAA,EAAA,CAAA,GAAA,6BAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,wBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,wBAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,oBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,oBAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,mCAAA,CAAA,GAAA,EAAA,CAAA,GAAA,mCAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,0DAAA,CAAA,GAAA,EAAA,CAAA,GAAA,0DAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,8DAAA,CAAA,GAAA,EAAA,CAAA,GAAA,8DAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,uDAAA,CAAA,GAAA,EAAA,CAAA,GAAA,uDAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,qBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,qBAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,sBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,sBAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,wBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,wBAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,2BAAA,CAAA,GAAA,EAAA,CAAA,GAAA,2BAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,uBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,uBAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,wBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,wBAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,oBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,oBAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,8BAAA,CAAA,GAAA,EAAA,CAAA,GAAA,8BAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,0BAAA,CAAA,GAAA,EAAA,CAAA,GAAA,0BAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,8BAAA,CAAA,GAAA,EAAA,CAAA,GAAA,8BAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,8BAAA,CAAA,GAAA,EAAA,CAAA,GAAA,8BAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,0BAAA,CAAA,GAAA,EAAA,CAAA,GAAA,0BAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,OAAA,CAAA,GAAA,EAAA,CAAA,GAAA,OAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,QAAA,CAAA,GAAA,EAAA,CAAA,GAAA,QAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,yBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,yBAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,0BAAA,CAAA,GAAA,EAAA,CAAA,GAAA,0BAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,wBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,wBAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,oCAAA,CAAA,GAAA,EAAA,CAAA,GAAA,oCAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,mBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,mBAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,sBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,sBAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,yBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,yBAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,iCAAA,CAAA,GAAA,EAAA,CAAA,GAAA,iCAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,4BAAA,CAAA,GAAA,EAAA,CAAA,GAAA,4BAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,gBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,gBAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,4BAAA,CAAA,GAAA,EAAA,CAAA,GAAA,4BAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,kBAAA;AACA,EAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,yBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,yBAAA;AA3FQ,EAAA,OAAAA,qBAAAA;AAAA,CAAA,EAAA,oBAAA,IAAA,EAAA;AA8FL,SAAS,6BACZ,WAAA,EACoB;AACpB,EAAA,MAAM,IAAA,GAAO,MAAA,IAAU,WAAA,GAAc,WAAA,CAAY,IAAA,GAAO,WAAA;AACxD,EAAA,IAAIC,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,CAAC,CAAA,EAAG,CAAC,CAAA,EAAG;AAClD,IAAA,OAAO,CAAA;AAAA,EACX;AACA,EAAA,IAAI0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,CAAC,CAAA,EAAG,CAAC,CAAA,EAAG;AAClD,IAAA,OAAO,CAAA;AAAA,EACX;AACA,EAAA,IAAI0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,CAAC,CAAA,EAAG,CAAC,CAAA,EAAG;AAClD,IAAA,OAAO,CAAA;AAAA,EACX;AACA,EAAA,IAAI0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,CAAC,CAAA,EAAG,CAAC,CAAA,EAAG;AAClD,IAAA,OAAO,CAAA;AAAA,EACX;AACA,EAAA,IAAI0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,CAAC,CAAA,EAAG,CAAC,CAAA,EAAG;AAClD,IAAA,OAAO,CAAA;AAAA,EACX;AACA,EAAA,IAAI0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,CAAC,CAAA,EAAG,CAAC,CAAA,EAAG;AAClD,IAAA,OAAO,CAAA;AAAA,EACX;AACA,EAAA,IAAI0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,CAAC,CAAA,EAAG,CAAC,CAAA,EAAG;AAClD,IAAA,OAAO,CAAA;AAAA,EACX;AACA,EAAA,IAAI0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,CAAC,CAAA,EAAG,CAAC,CAAA,EAAG;AAClD,IAAA,OAAO,CAAA;AAAA,EACX;AACA,EAAA,IAAI0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,CAAC,CAAA,EAAG,CAAC,CAAA,EAAG;AAClD,IAAA,OAAO,CAAA;AAAA,EACX;AACA,EAAA,IAAI0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,CAAC,CAAA,EAAG,CAAC,CAAA,EAAG;AAClD,IAAA,OAAO,CAAA;AAAA,EACX;AACA,EAAA,IAAI0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,EAAE,CAAA,EAAG,CAAC,CAAA,EAAG;AACnD,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,EAAE,CAAA,EAAG,CAAC,CAAA,EAAG;AACnD,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,EAAE,CAAA,EAAG,CAAC,CAAA,EAAG;AACnD,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,EAAE,CAAA,EAAG,CAAC,CAAA,EAAG;AACnD,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,EAAE,CAAA,EAAG,CAAC,CAAA,EAAG;AACnD,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,EAAE,CAAA,EAAG,CAAC,CAAA,EAAG;AACnD,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,EAAE,CAAA,EAAG,CAAC,CAAA,EAAG;AACnD,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,EAAE,CAAA,EAAG,CAAC,CAAA,EAAG;AACnD,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,EAAE,CAAA,EAAG,CAAC,CAAA,EAAG;AACnD,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,EAAE,CAAA,EAAG,CAAC,CAAA,EAAG;AACnD,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,EAAE,CAAA,EAAG,CAAC,CAAA,EAAG;AACnD,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,EAAE,CAAA,EAAG,CAAC,CAAA,EAAG;AACnD,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,EAAE,CAAA,EAAG,CAAC,CAAA,EAAG;AACnD,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,EAAE,CAAA,EAAG,CAAC,CAAA,EAAG;AACnD,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,EAAE,CAAA,EAAG,CAAC,CAAA,EAAG;AACnD,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,EAAE,CAAA,EAAG,CAAC,CAAA,EAAG;AACnD,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,cAAc,IAAA,EAAM1B,YAAAA,EAAa,CAAE,MAAA,CAAO,EAAE,CAAA,EAAG,CAAC,CAAA,IAAK0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,CAAC,CAAA,EAAG,CAAC,CAAA,EAAG;AACvG,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,cAAc,IAAA,EAAM1B,YAAAA,EAAa,CAAE,MAAA,CAAO,EAAE,CAAA,EAAG,CAAC,CAAA,IAAK0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,CAAC,CAAA,EAAG,CAAC,CAAA,EAAG;AACvG,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,cAAc,IAAA,EAAM1B,YAAAA,EAAa,CAAE,MAAA,CAAO,EAAE,CAAA,EAAG,CAAC,CAAA,IAAK0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,CAAC,CAAA,EAAG,CAAC,CAAA,EAAG;AACvG,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,cAAc,IAAA,EAAM1B,YAAAA,EAAa,CAAE,MAAA,CAAO,EAAE,CAAA,EAAG,CAAC,CAAA,IAAK0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,CAAC,CAAA,EAAG,CAAC,CAAA,EAAG;AACvG,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,cAAc,IAAA,EAAM1B,YAAAA,EAAa,CAAE,MAAA,CAAO,EAAE,CAAA,EAAG,CAAC,CAAA,IAAK0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,CAAC,CAAA,EAAG,CAAC,CAAA,EAAG;AACvG,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,cAAc,IAAA,EAAM1B,YAAAA,EAAa,CAAE,MAAA,CAAO,EAAE,CAAA,EAAG,CAAC,CAAA,IAAK0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,CAAC,CAAA,EAAG,CAAC,CAAA,EAAG;AACvG,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,cAAc,IAAA,EAAM1B,YAAAA,EAAa,CAAE,MAAA,CAAO,EAAE,CAAA,EAAG,CAAC,CAAA,IAAK0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,CAAC,CAAA,EAAG,CAAC,CAAA,EAAG;AACvG,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,cAAc,IAAA,EAAM1B,YAAAA,EAAa,CAAE,MAAA,CAAO,EAAE,CAAA,EAAG,CAAC,CAAA,IAAK0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,CAAC,CAAA,EAAG,CAAC,CAAA,EAAG;AACvG,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,cAAc,IAAA,EAAM1B,YAAAA,EAAa,CAAE,MAAA,CAAO,EAAE,CAAA,EAAG,CAAC,CAAA,IAAK0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,CAAC,CAAA,EAAG,CAAC,CAAA,EAAG;AACvG,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,cAAc,IAAA,EAAM1B,YAAAA,EAAa,CAAE,MAAA,CAAO,EAAE,CAAA,EAAG,CAAC,CAAA,IAAK0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,CAAC,CAAA,EAAG,CAAC,CAAA,EAAG;AACvG,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,cAAc,IAAA,EAAM1B,YAAAA,EAAa,CAAE,MAAA,CAAO,EAAE,CAAA,EAAG,CAAC,CAAA,IAAK0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,CAAC,CAAA,EAAG,CAAC,CAAA,EAAG;AACvG,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,cAAc,IAAA,EAAM1B,YAAAA,EAAa,CAAE,MAAA,CAAO,EAAE,CAAA,EAAG,CAAC,CAAA,IAAK0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,CAAC,CAAA,EAAG,CAAC,CAAA,EAAG;AACvG,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,cAAc,IAAA,EAAM1B,YAAAA,EAAa,CAAE,MAAA,CAAO,EAAE,CAAA,EAAG,CAAC,CAAA,IAAK0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,CAAC,CAAA,EAAG,CAAC,CAAA,EAAG;AACvG,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,cAAc,IAAA,EAAM1B,YAAAA,EAAa,CAAE,MAAA,CAAO,EAAE,CAAA,EAAG,CAAC,CAAA,IAAK0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,CAAC,CAAA,EAAG,CAAC,CAAA,EAAG;AACvG,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,cAAc,IAAA,EAAM1B,YAAAA,EAAa,CAAE,MAAA,CAAO,EAAE,CAAA,EAAG,CAAC,CAAA,IAAK0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,CAAC,CAAA,EAAG,CAAC,CAAA,EAAG;AACvG,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,cAAc,IAAA,EAAM1B,YAAAA,EAAa,CAAE,MAAA,CAAO,EAAE,CAAA,EAAG,CAAC,CAAA,IAAK0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,CAAC,CAAA,EAAG,CAAC,CAAA,EAAG;AACvG,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,cAAc,IAAA,EAAM1B,YAAAA,EAAa,CAAE,MAAA,CAAO,EAAE,CAAA,EAAG,CAAC,CAAA,IAAK0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,EAAE,CAAA,EAAG,CAAC,CAAA,EAAG;AACxG,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,cAAc,IAAA,EAAM1B,YAAAA,EAAa,CAAE,MAAA,CAAO,EAAE,CAAA,EAAG,CAAC,CAAA,IAAK0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,EAAE,CAAA,EAAG,CAAC,CAAA,EAAG;AACxG,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,cAAc,IAAA,EAAM1B,YAAAA,EAAa,CAAE,MAAA,CAAO,EAAE,CAAA,EAAG,CAAC,CAAA,IAAK0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,EAAE,CAAA,EAAG,CAAC,CAAA,EAAG;AACxG,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,cAAc,IAAA,EAAM1B,YAAAA,EAAa,CAAE,MAAA,CAAO,EAAE,CAAA,EAAG,CAAC,CAAA,IAAK0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,EAAE,CAAA,EAAG,CAAC,CAAA,EAAG;AACxG,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,cAAc,IAAA,EAAM1B,YAAAA,EAAa,CAAE,MAAA,CAAO,EAAE,CAAA,EAAG,CAAC,CAAA,IAAK0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,CAAC,CAAA,EAAG,CAAC,CAAA,EAAG;AACvG,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,cAAc,IAAA,EAAM1B,YAAAA,EAAa,CAAE,MAAA,CAAO,EAAE,CAAA,EAAG,CAAC,CAAA,IAAK0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,CAAC,CAAA,EAAG,CAAC,CAAA,EAAG;AACvG,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,EAAE,CAAA,EAAG,CAAC,CAAA,EAAG;AACnD,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,cAAc,IAAA,EAAM1B,YAAAA,EAAa,CAAE,MAAA,CAAO,EAAE,CAAA,EAAG,CAAC,CAAA,IAAK0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,CAAC,CAAA,EAAG,CAAC,CAAA,EAAG;AACvG,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,cAAc,IAAA,EAAM1B,YAAAA,EAAa,CAAE,MAAA,CAAO,EAAE,CAAA,EAAG,CAAC,CAAA,IAAK0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,CAAC,CAAA,EAAG,CAAC,CAAA,EAAG;AACvG,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,EAAE,CAAA,EAAG,CAAC,CAAA,EAAG;AACnD,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,EAAE,CAAA,EAAG,CAAC,CAAA,EAAG;AACnD,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,cAAc,IAAA,EAAM1B,YAAAA,EAAa,CAAE,MAAA,CAAO,EAAE,CAAA,EAAG,CAAC,CAAA,IAAK0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,CAAC,CAAA,EAAG,CAAC,CAAA,EAAG;AACvG,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,cAAc,IAAA,EAAM1B,YAAAA,EAAa,CAAE,MAAA,CAAO,EAAE,CAAA,EAAG,CAAC,CAAA,IAAK0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,CAAC,CAAA,EAAG,CAAC,CAAA,EAAG;AACvG,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,cAAc,IAAA,EAAM1B,YAAAA,EAAa,CAAE,MAAA,CAAO,EAAE,CAAA,EAAG,CAAC,CAAA,IAAK0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,CAAC,CAAA,EAAG,CAAC,CAAA,EAAG;AACvG,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,cAAc,IAAA,EAAM1B,YAAAA,EAAa,CAAE,MAAA,CAAO,EAAE,CAAA,EAAG,CAAC,CAAA,IAAK0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,CAAC,CAAA,EAAG,CAAC,CAAA,EAAG;AACvG,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,EAAE,CAAA,EAAG,CAAC,CAAA,EAAG;AACnD,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,cAAc,IAAA,EAAM1B,YAAAA,EAAa,CAAE,MAAA,CAAO,EAAE,CAAA,EAAG,CAAC,CAAA,IAAK0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,CAAC,CAAA,EAAG,CAAC,CAAA,EAAG;AACvG,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,cAAc,IAAA,EAAM1B,YAAAA,EAAa,CAAE,MAAA,CAAO,EAAE,CAAA,EAAG,CAAC,CAAA,IAAK0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,CAAC,CAAA,EAAG,CAAC,CAAA,EAAG;AACvG,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,cAAc,IAAA,EAAM1B,YAAAA,EAAa,CAAE,MAAA,CAAO,EAAE,CAAA,EAAG,CAAC,CAAA,IAAK0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,CAAC,CAAA,EAAG,CAAC,CAAA,EAAG;AACvG,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,cAAc,IAAA,EAAM1B,YAAAA,EAAa,CAAE,MAAA,CAAO,EAAE,CAAA,EAAG,CAAC,CAAA,IAAK0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,CAAC,CAAA,EAAG,CAAC,CAAA,EAAG;AACvG,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,cAAc,IAAA,EAAM1B,YAAAA,EAAa,CAAE,MAAA,CAAO,EAAE,CAAA,EAAG,CAAC,CAAA,IAAK0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,CAAC,CAAA,EAAG,CAAC,CAAA,EAAG;AACvG,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,cAAc,IAAA,EAAM1B,YAAAA,EAAa,CAAE,MAAA,CAAO,EAAE,CAAA,EAAG,CAAC,CAAA,IAAK0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,CAAC,CAAA,EAAG,CAAC,CAAA,EAAG;AACvG,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,cAAc,IAAA,EAAM1B,YAAAA,EAAa,CAAE,MAAA,CAAO,EAAE,CAAA,EAAG,CAAC,CAAA,IAAK0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,CAAC,CAAA,EAAG,CAAC,CAAA,EAAG;AACvG,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,cAAc,IAAA,EAAM1B,YAAAA,EAAa,CAAE,MAAA,CAAO,EAAE,CAAA,EAAG,CAAC,CAAA,IAAK0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,CAAC,CAAA,EAAG,CAAC,CAAA,EAAG;AACvG,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,EAAE,CAAA,EAAG,CAAC,CAAA,EAAG;AACnD,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,cAAc,IAAA,EAAM1B,YAAAA,EAAa,CAAE,MAAA,CAAO,EAAE,CAAA,EAAG,CAAC,CAAA,IAAK0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,CAAC,CAAA,EAAG,CAAC,CAAA,EAAG;AACvG,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,cAAc,IAAA,EAAM1B,YAAAA,EAAa,CAAE,MAAA,CAAO,EAAE,CAAA,EAAG,CAAC,CAAA,IAAK0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,CAAC,CAAA,EAAG,CAAC,CAAA,EAAG;AACvG,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,cAAc,IAAA,EAAM1B,YAAAA,EAAa,CAAE,MAAA,CAAO,EAAE,CAAA,EAAG,CAAC,CAAA,IAAK0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,CAAC,CAAA,EAAG,CAAC,CAAA,EAAG;AACvG,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,cAAc,IAAA,EAAM1B,YAAAA,EAAa,CAAE,MAAA,CAAO,EAAE,CAAA,EAAG,CAAC,CAAA,IAAK0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,CAAC,CAAA,EAAG,CAAC,CAAA,EAAG;AACvG,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,cAAc,IAAA,EAAM1B,YAAAA,EAAa,CAAE,MAAA,CAAO,EAAE,CAAA,EAAG,CAAC,CAAA,IAAK0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,CAAC,CAAA,EAAG,CAAC,CAAA,EAAG;AACvG,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,cAAc,IAAA,EAAM1B,YAAAA,EAAa,CAAE,MAAA,CAAO,EAAE,CAAA,EAAG,CAAC,CAAA,IAAK0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,CAAC,CAAA,EAAG,CAAC,CAAA,EAAG;AACvG,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,cAAc,IAAA,EAAM1B,YAAAA,EAAa,CAAE,MAAA,CAAO,EAAE,CAAA,EAAG,CAAC,CAAA,IAAK0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,CAAC,CAAA,EAAG,CAAC,CAAA,EAAG;AACvG,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,cAAc,IAAA,EAAM1B,YAAAA,EAAa,CAAE,MAAA,CAAO,EAAE,CAAA,EAAG,CAAC,CAAA,IAAK0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,CAAC,CAAA,EAAG,CAAC,CAAA,EAAG;AACvG,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,cAAc,IAAA,EAAM1B,YAAAA,EAAa,CAAE,MAAA,CAAO,EAAE,CAAA,EAAG,CAAC,CAAA,IAAK0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,CAAC,CAAA,EAAG,CAAC,CAAA,EAAG;AACvG,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,cAAc,IAAA,EAAM1B,YAAAA,EAAa,CAAE,MAAA,CAAO,EAAE,CAAA,EAAG,CAAC,CAAA,IAAK0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,CAAC,CAAA,EAAG,CAAC,CAAA,EAAG;AACvG,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,cAAc,IAAA,EAAM1B,YAAAA,EAAa,CAAE,MAAA,CAAO,EAAE,CAAA,EAAG,CAAC,CAAA,IAAK0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,CAAC,CAAA,EAAG,CAAC,CAAA,EAAG;AACvG,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,cAAc,IAAA,EAAM,IAAI,UAAA,CAAW,CAAC,KAAK,GAAA,EAAK,EAAA,EAAI,GAAA,EAAK,EAAA,EAAI,KAAK,EAAA,EAAI,GAAG,CAAC,CAAA,EAAG,CAAC,CAAA,EAAG;AAC/E,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAIA,cAAc,IAAA,EAAM,IAAI,UAAA,CAAW,CAAC,KAAK,GAAA,EAAK,EAAA,EAAI,EAAA,EAAI,GAAA,EAAK,KAAK,GAAA,EAAK,GAAG,CAAC,CAAA,EAAG,CAAC,CAAA,EAAG;AAChF,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAIA,cAAc,IAAA,EAAM,IAAI,UAAA,CAAW,CAAC,KAAK,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,KAAK,EAAA,EAAI,GAAG,CAAC,CAAA,EAAG,CAAC,CAAA,EAAG;AAC7E,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAIA,cAAc,IAAA,EAAM,IAAI,UAAA,CAAW,CAAC,KAAK,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,EAAA,EAAI,KAAK,EAAA,EAAI,GAAG,CAAC,CAAA,EAAG,CAAC,CAAA,EAAG;AAChF,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAIA,cAAc,IAAA,EAAM,IAAI,UAAA,CAAW,CAAC,KAAK,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,EAAA,EAAI,IAAI,GAAA,EAAK,EAAE,CAAC,CAAA,EAAG,CAAC,CAAA,EAAG;AAC/E,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAIA,cAAc,IAAA,EAAM,IAAI,UAAA,CAAW,CAAC,KAAK,GAAA,EAAK,GAAA,EAAK,EAAA,EAAI,EAAA,EAAI,IAAI,CAAA,EAAG,CAAC,CAAC,CAAA,EAAG,CAAC,CAAA,EAAG;AAC3E,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAIA,cAAc,IAAA,EAAM,IAAI,UAAA,CAAW,CAAC,KAAK,EAAA,EAAI,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,IAAI,EAAA,EAAI,GAAG,CAAC,CAAA,EAAG,CAAC,CAAA,EAAG;AAC/E,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAIA,cAAc,IAAA,EAAM,IAAI,UAAA,CAAW,CAAC,KAAK,GAAA,EAAK,EAAA,EAAI,CAAA,EAAG,GAAA,EAAK,KAAK,GAAA,EAAK,GAAG,CAAC,CAAA,EAAG,CAAC,CAAA,EAAG;AAC/E,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAIA,cAAc,IAAA,EAAM,IAAI,UAAA,CAAW,CAAC,KAAK,EAAA,EAAI,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,KAAK,GAAA,EAAK,GAAG,CAAC,CAAA,EAAG,CAAC,CAAA,EAAG;AACjF,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAIA,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,EAAE,CAAA,EAAG,CAAC,CAAA,EAAG;AACnD,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,cAAc,IAAA,EAAM1B,YAAAA,EAAa,CAAE,MAAA,CAAO,EAAE,CAAA,EAAG,CAAC,CAAA,IAAK0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,CAAC,CAAA,EAAG,CAAC,CAAA,EAAG;AACvG,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,cAAc,IAAA,EAAM1B,YAAAA,EAAa,CAAE,MAAA,CAAO,EAAE,CAAA,EAAG,CAAC,CAAA,IAAK0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,CAAC,CAAA,EAAG,CAAC,CAAA,EAAG;AACvG,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,IAAI0B,cAAc,IAAA,EAAM1B,YAAAA,EAAa,CAAE,MAAA,CAAO,EAAE,CAAA,EAAG,CAAC,CAAA,IAAK0B,aAAAA,CAAc,MAAM1B,YAAAA,EAAa,CAAE,OAAO,CAAC,CAAA,EAAG,CAAC,CAAA,EAAG;AACvG,IAAA,OAAO,EAAA;AAAA,EACX;AACA,EAAA,MAAM,IAAI,MAAM,+EAA+E,CAAA;AACnG;AA6LO,SAAS,0BACZ,WAAA,EACoC;AACpC,EAAA,MAAM,eAAA,GAAkB,6BAA6B,WAAW,CAAA;AAChE,EAAA,QAAQ,eAAA;AAAiB,IACrB,KAAK,CAAA,uBAAqC;AACtC,MAAA2B,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,CAAA;AAAA,QACjB,GAAG,+BAA+B,WAAW;AAAA,OACjD;AAAA,IACJ;AAAA,IACA,KAAK,CAAA,0BAAwC;AACzC,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,CAAA;AAAA,QACjB,GAAG,kCAAkC,WAAW;AAAA,OACpD;AAAA,IACJ;AAAA,IACA,KAAK,CAAA,2BAAyC;AAC1C,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,CAAA;AAAA,QACjB,GAAG,mCAAmC,WAAW;AAAA,OACrD;AAAA,IACJ;AAAA,IACA,KAAK,CAAA,iBAA+B;AAChC,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO,EAAE,eAAA,EAAiB,CAAA,iBAA+B,GAAG,wBAAA,CAAyB,WAAW,CAAA,EAAE;AAAA,IACtG;AAAA,IACA,KAAK,CAAA,gBAA8B;AAC/B,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO,EAAE,eAAA,EAAiB,CAAA,gBAA8B,GAAG,uBAAA,CAAwB,WAAW,CAAA,EAAE;AAAA,IACpG;AAAA,IACA,KAAK,CAAA,eAA6B;AAC9B,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO,EAAE,eAAA,EAAiB,CAAA,eAA6B,GAAG,sBAAA,CAAuB,WAAW,CAAA,EAAE;AAAA,IAClG;AAAA,IACA,KAAK,CAAA,qBAAmC;AACpC,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO,EAAE,eAAA,EAAiB,CAAA,qBAAmC,GAAG,4BAAA,CAA6B,WAAW,CAAA,EAAE;AAAA,IAC9G;AAAA,IACA,KAAK,CAAA,eAA6B;AAC9B,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO,EAAE,eAAA,EAAiB,CAAA,eAA6B,GAAG,sBAAA,CAAuB,WAAW,CAAA,EAAE;AAAA,IAClG;AAAA,IACA,KAAK,CAAA,aAA2B;AAC5B,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO,EAAE,eAAA,EAAiB,CAAA,aAA2B,GAAG,oBAAA,CAAqB,WAAW,CAAA,EAAE;AAAA,IAC9F;AAAA,IACA,KAAK,CAAA,qBAAmC;AACpC,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO,EAAE,eAAA,EAAiB,CAAA,qBAAmC,GAAG,4BAAA,CAA6B,WAAW,CAAA,EAAE;AAAA,IAC9G;AAAA,IACA,KAAK,EAAA,sBAAoC;AACrC,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,8BAA8B,WAAW;AAAA,OAChD;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,oBAAkC;AACnC,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO,EAAE,eAAA,EAAiB,EAAA,oBAAkC,GAAG,2BAAA,CAA4B,WAAW,CAAA,EAAE;AAAA,IAC5G;AAAA,IACA,KAAK,EAAA,wBAAsC;AACvC,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,gCAAgC,WAAW;AAAA,OAClD;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,uBAAqC;AACtC,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,+BAA+B,WAAW;AAAA,OACjD;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,sBAAoC;AACrC,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,8BAA8B,WAAW;AAAA,OAChD;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,oBAAkC;AACnC,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO,EAAE,eAAA,EAAiB,EAAA,oBAAkC,GAAG,2BAAA,CAA4B,WAAW,CAAA,EAAE;AAAA,IAC5G;AAAA,IACA,KAAK,EAAA,2BAAyC;AAC1C,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,mCAAmC,WAAW;AAAA,OACrD;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,mBAAiC;AAClC,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO,EAAE,eAAA,EAAiB,EAAA,mBAAiC,GAAG,0BAAA,CAA2B,WAAW,CAAA,EAAE;AAAA,IAC1G;AAAA,IACA,KAAK,EAAA,2BAAyC;AAC1C,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,mCAAmC,WAAW;AAAA,OACrD;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,4BAA0C;AAC3C,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,oCAAoC,WAAW;AAAA,OACtD;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,wBAAsC;AACvC,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,gCAAgC,WAAW;AAAA,OAClD;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,2BAAyC;AAC1C,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,mCAAmC,WAAW;AAAA,OACrD;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,iCAA+C;AAChD,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,yCAAyC,WAAW;AAAA,OAC3D;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,yBAAuC;AACxC,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,iCAAiC,WAAW;AAAA,OACnD;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,yBAAuC;AACxC,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,iCAAiC,WAAW;AAAA,OACnD;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,qCAAmD;AACpD,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,6CAA6C,WAAW;AAAA,OAC/D;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,oCAAkD;AACnD,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,4CAA4C,WAAW;AAAA,OAC9D;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,+BAA6C;AAC9C,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,uCAAuC,WAAW;AAAA,OACzD;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,uCAAqD;AACtD,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,+CAA+C,WAAW;AAAA,OACjE;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,2CAAyD;AAC1D,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,mDAAmD,WAAW;AAAA,OACrE;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,oCAAkD;AACnD,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,4CAA4C,WAAW;AAAA,OAC9D;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,uBAAqC;AACtC,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,+BAA+B,WAAW;AAAA,OACjD;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,2CAAyD;AAC1D,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,mDAAmD,WAAW;AAAA,OACrE;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,uCAAqD;AACtD,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,+CAA+C,WAAW;AAAA,OACjE;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,6CAA2D;AAC5D,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,qDAAqD,WAAW;AAAA,OACvE;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,2CAAyD;AAC1D,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,mDAAmD,WAAW;AAAA,OACrE;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,yCAAuD;AACxD,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,iDAAiD,WAAW;AAAA,OACnE;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,4BAA0C;AAC3C,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,oCAAoC,WAAW;AAAA,OACtD;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,6BAA2C;AAC5C,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,qCAAqC,WAAW;AAAA,OACvD;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,6BAA2C;AAC5C,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,qCAAqC,WAAW;AAAA,OACvD;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,wCAAsD;AACvD,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,gDAAgD,WAAW;AAAA,OAClE;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,kCAAgD;AACjD,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,0CAA0C,WAAW;AAAA,OAC5D;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,mCAAiD;AAClD,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,2CAA2C,WAAW;AAAA,OAC7D;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,qCAAmD;AACpD,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,6CAA6C,WAAW;AAAA,OAC/D;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,sCAAoD;AACrD,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,8CAA8C,WAAW;AAAA,OAChE;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,oCAAkD;AACnD,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,4CAA4C,WAAW;AAAA,OAC9D;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,sCAAoD;AACrD,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,8CAA8C,WAAW;AAAA,OAChE;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,kCAAgD;AACjD,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,0CAA0C,WAAW;AAAA,OAC5D;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,mBAAiC;AAClC,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO,EAAE,eAAA,EAAiB,EAAA,mBAAiC,GAAG,0BAAA,CAA2B,WAAW,CAAA,EAAE;AAAA,IAC1G;AAAA,IACA,KAAK,EAAA,4BAA0C;AAC3C,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,oCAAoC,WAAW;AAAA,OACtD;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,6BAA2C;AAC5C,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,qCAAqC,WAAW;AAAA,OACvD;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,yBAAuC;AACxC,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,iCAAiC,WAAW;AAAA,OACnD;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,sCAAoD;AACrD,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,8CAA8C,WAAW;AAAA,OAChE;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,sCAAoD;AACrD,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,8CAA8C,WAAW;AAAA,OAChE;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,sCAAoD;AACrD,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,8CAA8C,WAAW;AAAA,OAChE;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,uBAAqC;AACtC,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,+BAA+B,WAAW;AAAA,OACjD;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,wBAAsC;AACvC,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,gCAAgC,WAAW;AAAA,OAClD;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,oCAAkD;AACnD,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,4CAA4C,WAAW;AAAA,OAC9D;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,+BAA6C;AAC9C,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,uCAAuC,WAAW;AAAA,OACzD;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,2BAAyC;AAC1C,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,mCAAmC,WAAW;AAAA,OACrD;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,0CAAwD;AACzD,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,kDAAkD,WAAW;AAAA,OACpE;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,iEAA+E;AAChF,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,yEAAyE,WAAW;AAAA,OAC3F;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,qEAAmF;AACpF,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,6EAA6E,WAAW;AAAA,OAC/F;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,8DAA4E;AAC7E,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,sEAAsE,WAAW;AAAA,OACxF;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,4BAA0C;AAC3C,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,oCAAoC,WAAW;AAAA,OACtD;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,6BAA2C;AAC5C,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,qCAAqC,WAAW;AAAA,OACvD;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,+BAA6C;AAC9C,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,uCAAuC,WAAW;AAAA,OACzD;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,kCAAgD;AACjD,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,0CAA0C,WAAW;AAAA,OAC5D;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,8BAA4C;AAC7C,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,sCAAsC,WAAW;AAAA,OACxD;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,+BAA6C;AAC9C,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,uCAAuC,WAAW;AAAA,OACzD;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,2BAAyC;AAC1C,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,mCAAmC,WAAW;AAAA,OACrD;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,qCAAmD;AACpD,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,6CAA6C,WAAW;AAAA,OAC/D;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,iCAA+C;AAChD,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,yCAAyC,WAAW;AAAA,OAC3D;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,qCAAmD;AACpD,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,6CAA6C,WAAW;AAAA,OAC/D;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,qCAAmD;AACpD,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,6CAA6C,WAAW;AAAA,OAC/D;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,iCAA+C;AAChD,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,yCAAyC,WAAW;AAAA,OAC3D;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,cAA4B;AAC7B,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO,EAAE,eAAA,EAAiB,EAAA,cAA4B,GAAG,qBAAA,CAAsB,WAAW,CAAA,EAAE;AAAA,IAChG;AAAA,IACA,KAAK,EAAA,eAA6B;AAC9B,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO,EAAE,eAAA,EAAiB,EAAA,eAA6B,GAAG,sBAAA,CAAuB,WAAW,CAAA,EAAE;AAAA,IAClG;AAAA,IACA,KAAK,EAAA,gCAA8C;AAC/C,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,wCAAwC,WAAW;AAAA,OAC1D;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,iCAA+C;AAChD,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,yCAAyC,WAAW;AAAA,OAC3D;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,+BAA6C;AAC9C,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,uCAAuC,WAAW;AAAA,OACzD;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,2CAAyD;AAC1D,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,mDAAmD,WAAW;AAAA,OACrE;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,0BAAwC;AACzC,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,kCAAkC,WAAW;AAAA,OACpD;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,6BAA2C;AAC5C,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,qCAAqC,WAAW;AAAA,OACvD;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,gCAA8C;AAC/C,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,wCAAwC,WAAW;AAAA,OAC1D;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,wCAAsD;AACvD,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,gDAAgD,WAAW;AAAA,OAClE;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,mCAAiD;AAClD,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,2CAA2C,WAAW;AAAA,OAC7D;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,uBAAqC;AACtC,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,+BAA+B,WAAW;AAAA,OACjD;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,mCAAiD;AAClD,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,2CAA2C,WAAW;AAAA,OAC7D;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,yBAAuC;AACxC,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,iCAAiC,WAAW;AAAA,OACnD;AAAA,IACJ;AAAA,IACA,KAAK,EAAA,gCAA8C;AAC/C,MAAAA,gCAAgC,WAAW,CAAA;AAC3C,MAAA,OAAO;AAAA,QACH,eAAA,EAAiB,EAAA;AAAA,QACjB,GAAG,wCAAwC,WAAW;AAAA,OAC1D;AAAA,IACJ;AAAA,IACA;AACI,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,+BAAA,EAAkC,eAAyB,CAAA,CAAE,CAAA;AAAA;AAEzF;;;AC/1CO,IAAM,qCAAA,GAAwC;AAIrD,IAAI,4BAAA;AACJ,IAAI,OAAA,CAAQ,GAAA,CAAI,QAAA,KAAa,YAAA,EAAc;AACvC,EAAA,4BAAA,GAA+B;AAAA,IAC3B,CAAC,qCAAqC,GAAG,CAAA,gEAAA;AAAA,GAC7C;AACJ;AAEO,SAAS,+BAA+B,IAAA,EAAoC;AAC/E,EAAA,IAAI,OAAA,CAAQ,GAAA,CAAI,QAAA,KAAa,YAAA,EAAc;AACvC,IAAA,OAAQ,6BAAsE,IAAI,CAAA;AAAA,EACtF;AAEA,EAAA,OAAO,oDAAA;AACX;AAEO,SAAS,sBAAA,CACZ,KAAA,EACA,kBAAA,EACA,IAAA,EAE6D;AAC7D,EAAA,OAAO,cAAA,CAAkC,KAAA,EAAO,kBAAA,EAAoB,gCAAA,EAAkC,IAAI,CAAA;AAC9G;AC1BO,IAAM,iCAAA,GAAoC;AAE1C,IAAM,oCAAA,GAAuC;AAE7C,IAAM,8BAAA,GAAiC;AAEvC,IAAM,+BAAA,GAAkC;AAExC,IAAM,gCAAA,GAAmC;AAEzC,IAAM,8BAAA,GAAiC;AAEvC,IAAM,gCAAA,GAAmC;AAEzC,IAAM,oDAAA,GAAuD;AAE7D,IAAM,oDAAA,GAAuD;AAE7D,IAAM,qCAAA,GAAwC;AAE9C,IAAM,sCAAA,GAAyC;AAE/C,IAAM,wCAAA,GAA2C;AAEjD,IAAM,qCAAA,GAAwC;AAE9C,IAAM,+BAAA,GAAkC;AAExC,IAAM,0BAAA,GAA6B;AAEnC,IAAM,8CAAA,GAAiD;AAEvD,IAAM,oCAAA,GAAuC;AAE7C,IAAM,gCAAA,GAAmC;AAEzC,IAAM,wCAAA,GAA2C;AAEjD,IAAM,0CAAA,GAA6C;AAwB1D,IAAI,sBAAA;AACJ,IAAI,OAAA,CAAQ,GAAA,CAAI,QAAA,KAAa,YAAA,EAAc;AACvC,EAAA,sBAAA,GAAyB;AAAA,IACrB,CAAC,gCAAgC,GAAG,CAAA,iBAAA,CAAA;AAAA,IACpC,CAAC,gCAAgC,GAAG,CAAA,cAAA,CAAA;AAAA,IACpC,CAAC,8CAA8C,GAAG,CAAA,iDAAA,CAAA;AAAA,IAClD,CAAC,8BAA8B,GAAG,CAAA,YAAA,CAAA;AAAA,IAClC,CAAC,oCAAoC,GAAG,CAAA,kBAAA,CAAA;AAAA,IACxC,CAAC,qCAAqC,GAAG,CAAA,mBAAA,CAAA;AAAA,IACzC,CAAC,8BAA8B,GAAG,CAAA,YAAA,CAAA;AAAA,IAClC,CAAC,oDAAoD,GAAG,CAAA,kCAAA,CAAA;AAAA,IACxD,CAAC,oDAAoD,GAAG,CAAA,kCAAA,CAAA;AAAA,IACxD,CAAC,+BAA+B,GAAG,CAAA,wCAAA,CAAA;AAAA,IACnC,CAAC,oCAAoC,GAAG,CAAA,sCAAA,CAAA;AAAA,IACxC,CAAC,wCAAwC,GAAG,CAAA,4DAAA,CAAA;AAAA,IAC5C,CAAC,+BAA+B,GAAG,CAAA,qCAAA,CAAA;AAAA,IACnC,CAAC,sCAAsC,GAAG,CAAA,0CAAA,CAAA;AAAA,IAC1C,CAAC,wCAAwC,GAAG,CAAA,4DAAA,CAAA;AAAA,IAC5C,CAAC,0CAA0C,GAAG,CAAA,8CAAA,CAAA;AAAA,IAC9C,CAAC,iCAAiC,GAAG,CAAA,2CAAA,CAAA;AAAA,IACrC,CAAC,0BAA0B,GAAG,CAAA,oBAAA,CAAA;AAAA,IAC9B,CAAC,gCAAgC,GAAG,CAAA,oBAAA,CAAA;AAAA,IACpC,CAAC,qCAAqC,GAAG,CAAA,sBAAA;AAAA,GAC7C;AACJ;AAEO,SAAS,yBAAyB,IAAA,EAA8B;AACnE,EAAA,IAAI,OAAA,CAAQ,GAAA,CAAI,QAAA,KAAa,YAAA,EAAc;AACvC,IAAA,OAAQ,uBAA0D,IAAI,CAAA;AAAA,EAC1E;AAEA,EAAA,OAAO,oDAAA;AACX;AAEO,SAAS,gBAAA,CACZ,KAAA,EACA,kBAAA,EACA,IAAA,EAE6D;AAC7D,EAAA,OAAOC,cAAAA,CAAkC,KAAA,EAAO,kBAAA,EAAoB,0BAAA,EAA4B,IAAI,CAAA;AACxG;ACnHA,IAAM,mBAAA,GAAsB,GAAA;AAC5B,IAAM,gBAAA,GAAmB,EAAA,GAAK,EAAA,GAAK,EAAA,GAAK,MAAA;AAUxC,SAAS,gCAAA,CAAiC,EAAA,EAAY,EAAA,EAAY,CAAA,EAAW;AACzE,EAAA,MAAM,WAAW,EAAA,GAAK,EAAA;AACtB,EAAA,IAAI,WAAW,CAAA,EAAG;AACd,IAAA,MAAM,IAAI,MAAM,8CAA8C,CAAA;AAAA,EAClE;AAEA,EAAA,MAAM,YAAY,CAAA,GAAI,QAAA;AACtB,EAAA,MAAM,QAAA,GAAW,aAAa,gBAAA,GAAmB,mBAAA,CAAA;AACjD,EAAA,OAAO,IAAA,CAAK,IAAI,QAAQ,CAAA;AAC5B;AAeA,SAAS,mBAAA,CAAoB;AAAA,EACzB,gBAAA;AAAA,EACA,mBAAA;AAAA,EACA,uBAAA;AAAA,EACA,oBAAA;AAAA,EACA;AACJ,CAAA,EAMW;AAEP,EAAA,MAAM,YAAA,GAAe,gCAAA;AAAA,IACjB,uBAAA;AAAA,IACA,mBAAA;AAAA,IACA;AAAA,GACJ;AAGA,EAAA,MAAM,aAAA,GAAgB,gCAAA,CAAiC,mBAAA,EAAqB,gBAAA,EAAkB,WAAW,CAAA;AAEzG,EAAA,OAAO,YAAA,GAAe,aAAA;AAC1B;AAOA,SAAS,iBAAiB,QAAA,EAA0B;AAChD,EAAA,OAAO,IAAA,CAAK,GAAA,CAAI,EAAA,EAAI,QAAQ,CAAA;AAChC;AAQA,eAAe,wBAAwB,GAAA,EAAqD;AACxF,EAAA,MAAM,IAAA,GAAO,MAAM,gBAAA,CAAiB,GAAG,CAAA;AACvC,EAAA,IAAI,CAAC,IAAA,EAAM;AACP,IAAA,MAAM,IAAI,MAAM,8BAA8B,CAAA;AAAA,EAClD;AACA,EAAA,OAAO,IAAA,CAAK,aAAA;AAChB;AA8BO,SAAS,wDACZ,MAAA,EACA,QAAA,EACA,kBACA,mBAAA,EACA,uBAAA,EACA,sBACA,WAAA,EACM;AACN,EAAA,MAAM,aAAa,mBAAA,CAAoB;AAAA,IACnC,gBAAA;AAAA,IACA,mBAAA;AAAA,IACA,uBAAA;AAAA,IACA,oBAAA;AAAA,IACA;AAAA,GACH,CAAA;AAGD,EAAA,MAAM,YAAA,GAAe,MAAA,CAAO,MAAM,CAAA,GAAI,UAAA;AACtC,EAAA,MAAM,aAAA,GAAgB,iBAAiB,QAAQ,CAAA;AAE/C,EAAA,OAAA,CAAQ,IAAA,CAAK,KAAA,CAAM,YAAY,CAAA,GAAI,eAAe,QAAA,EAAS;AAC/D;AA8BO,SAAS,wDACZ,QAAA,EACA,QAAA,EACA,kBACA,mBAAA,EACA,uBAAA,EACA,sBACA,WAAA,EACM;AACN,EAAA,MAAM,cAAA,GAAiB,WAAW,QAAQ,CAAA;AAC1C,EAAA,MAAM,cAAA,GAAiB,iBAAiB,QAAQ,CAAA;AAChD,EAAA,MAAM,iBAAiB,cAAA,GAAiB,cAAA;AAExC,EAAA,MAAM,aAAa,mBAAA,CAAoB;AAAA,IACnC,gBAAA;AAAA,IACA,mBAAA;AAAA,IACA,uBAAA;AAAA,IACA,oBAAA;AAAA,IACA;AAAA,GACH,CAAA;AAGD,EAAA,MAAM,oBAAoB,cAAA,GAAiB,UAAA;AAC3C,EAAA,OAAO,MAAA,CAAO,IAAA,CAAK,KAAA,CAAM,iBAAiB,CAAC,CAAA;AAC/C;AAWO,SAAS,sDAAA,CACZ,MAAA,EACA,QAAA,EACA,UAAA,EACM;AACN,EAAA,MAAM,YAAA,GAAe,MAAA,CAAO,MAAM,CAAA,GAAI,UAAA;AACtC,EAAA,MAAM,aAAA,GAAgB,iBAAiB,QAAQ,CAAA;AAC/C,EAAA,OAAA,CAAQ,IAAA,CAAK,KAAA,CAAM,YAAY,CAAA,GAAI,eAAe,QAAA,EAAS;AAC/D;AAUO,SAAS,sDAAA,CACZ,QAAA,EACA,QAAA,EACA,UAAA,EACM;AACN,EAAA,MAAM,cAAA,GAAiB,WAAW,QAAQ,CAAA;AAC1C,EAAA,MAAM,cAAA,GAAiB,iBAAiB,QAAQ,CAAA;AAChD,EAAA,MAAM,iBAAiB,cAAA,GAAiB,cAAA;AACxC,EAAA,MAAM,YAAY,cAAA,GAAiB,UAAA;AACnC,EAAA,OAAO,MAAA,CAAO,IAAA,CAAK,KAAA,CAAM,SAAS,CAAC,CAAA;AACvC;AAgBA,eAAsB,wCAAA,CAClB,GAAA,EACA,IAAA,EACA,MAAA,EACe;AACf,EAAA,MAAM,WAAA,GAAc,MAAM,SAAA,CAAU,GAAA,EAAK,IAAI,CAAA;AAC7C,EAAA,MAAM,UAAA,GAAa,YAAA,CAAa,WAAA,CAAY,IAAA,CAAK,UAAU,CAAA;AAG3D,EAAA,MAAM,iCAAiC,UAAA,EAAY,IAAA,CAAK,CAAA,GAAA,KAAO,GAAA,CAAI,WAAW,uBAAuB,CAAA;AAGrG,EAAA,MAAM,uBAAuB,UAAA,EAAY,IAAA,CAAK,CAAA,GAAA,KAAO,GAAA,CAAI,WAAW,sBAAsB,CAAA;AAG1F,EAAA,IAAI,CAAC,8BAAA,IAAkC,CAAC,oBAAA,EAAsB;AAC1D,IAAA,MAAM,YAAA,GAAe,OAAO,MAAM,CAAA;AAClC,IAAA,MAAM,cAAA,GAAiB,gBAAA,CAAiB,WAAA,CAAY,IAAA,CAAK,QAAQ,CAAA;AACjE,IAAA,OAAA,CAAQ,YAAA,GAAe,gBAAgB,QAAA,EAAS;AAAA,EACpD;AAGA,EAAA,MAAM,SAAA,GAAY,MAAM,uBAAA,CAAwB,GAAG,CAAA;AAGnD,EAAA,IAAI,8BAAA,EAAgC;AAChC,IAAA,OAAO,uDAAA;AAAA,MACH,MAAA;AAAA,MACA,YAAY,IAAA,CAAK,QAAA;AAAA,MACjB,OAAO,SAAS,CAAA;AAAA,MAChB,MAAA,CAAO,+BAA+B,mBAAmB,CAAA;AAAA,MACzD,MAAA,CAAO,+BAA+B,uBAAuB,CAAA;AAAA,MAC7D,8BAAA,CAA+B,oBAAA;AAAA,MAC/B,8BAAA,CAA+B;AAAA,KACnC;AAAA,EACJ;AAGA,EAAA,IAAI,oBAAA,EAAsB;AACtB,IAAA,IAAI,aAAa,oBAAA,CAAqB,UAAA;AAEtC,IAAA,IAAI,SAAA,IAAa,qBAAqB,+BAAA,EAAiC;AACnE,MAAA,UAAA,GAAa,oBAAA,CAAqB,aAAA;AAAA,IACtC;AACA,IAAA,OAAO,sDAAA,CAAuD,MAAA,EAAQ,WAAA,CAAY,IAAA,CAAK,UAAU,UAAU,CAAA;AAAA,EAC/G;AAGA,EAAA,MAAM,IAAI,MAAM,6BAA6B,CAAA;AACjD;AAWA,eAAsB,wCAAA,CAClB,GAAA,EACA,IAAA,EACA,QAAA,EACe;AACf,EAAA,MAAM,WAAA,GAAc,MAAM,SAAA,CAAU,GAAA,EAAK,IAAI,CAAA;AAC7C,EAAA,MAAM,UAAA,GAAa,YAAA,CAAa,WAAA,CAAY,IAAA,CAAK,UAAU,CAAA;AAG3D,EAAA,MAAM,iCAAiC,UAAA,EAAY,IAAA,CAAK,CAAA,GAAA,KAAO,GAAA,CAAI,WAAW,uBAAuB,CAAA;AAGrG,EAAA,MAAM,uBAAuB,UAAA,EAAY,IAAA,CAAK,CAAA,GAAA,KAAO,GAAA,CAAI,WAAW,sBAAsB,CAAA;AAG1F,EAAA,IAAI,CAAC,8BAAA,IAAkC,CAAC,oBAAA,EAAsB;AAC1D,IAAA,MAAM,iBAAiB,UAAA,CAAW,QAAQ,IAAI,gBAAA,CAAiB,WAAA,CAAY,KAAK,QAAQ,CAAA;AACxF,IAAA,OAAO,MAAA,CAAO,IAAA,CAAK,KAAA,CAAM,cAAc,CAAC,CAAA;AAAA,EAC5C;AAGA,EAAA,MAAM,SAAA,GAAY,MAAM,uBAAA,CAAwB,GAAG,CAAA;AAGnD,EAAA,IAAI,8BAAA,EAAgC;AAChC,IAAA,OAAO,uDAAA;AAAA,MACH,QAAA;AAAA,MACA,YAAY,IAAA,CAAK,QAAA;AAAA,MACjB,OAAO,SAAS,CAAA;AAAA,MAChB,MAAA,CAAO,+BAA+B,mBAAmB,CAAA;AAAA,MACzD,MAAA,CAAO,+BAA+B,uBAAuB,CAAA;AAAA,MAC7D,8BAAA,CAA+B,oBAAA;AAAA,MAC/B,8BAAA,CAA+B;AAAA,KACnC;AAAA,EACJ;AAGA,EAAA,IAAI,oBAAA,EAAsB;AACtB,IAAA,IAAI,aAAa,oBAAA,CAAqB,UAAA;AAEtC,IAAA,IAAI,SAAA,IAAa,qBAAqB,+BAAA,EAAiC;AACnE,MAAA,UAAA,GAAa,oBAAA,CAAqB,aAAA;AAAA,IACtC;AACA,IAAA,OAAO,sDAAA,CAAuD,QAAA,EAAU,WAAA,CAAY,IAAA,CAAK,UAAU,UAAU,CAAA;AAAA,EACjH;AAGA,EAAA,MAAM,IAAI,MAAM,6BAA6B,CAAA;AACjD;ACrUO,SAAS,6CAAA,CACZ,MACA,UAAA,EACa;AACb,EAAA,OAAO,UAAA,CAAW,OAAA,CAAQ,CAAAC,UAAAA,KAAa;AACnC,IAAA,QAAQA,WAAU,MAAA;AAAQ,MACtB,KAAK,0BAAA;AACD,QAAA,OAAO;AAAA,UACH,gDAAA,CAAiD;AAAA,YAC7C,IAAA;AAAA,YACA,GAAGA;AAAA,WACN;AAAA,SACL;AAAA,MACJ,KAAK,qBAAA;AACD,QAAA,OAAO;AAAA,UACH,2CAAA,CAA4C;AAAA,YACxC,IAAA;AAAA,YACA,OAAOA,UAAAA,CAAU;AAAA,WACpB;AAAA,SACL;AAAA,MACJ,KAAK,mBAAA;AACD,QAAA,OAAO;AAAA,UACH,yCAAA,CAA0C;AAAA,YACtC,IAAA;AAAA,YACA,4BAA4BA,UAAAA,CAAU,0BAAA;AAAA,YACtC,2BAA2BA,UAAAA,CAAU,yBAAA;AAAA,YACrC,sBAAA,EAAwBA,WAAU,gBAAA,CAAiB,sBAAA;AAAA,YACnD,UAAA,EAAYA,WAAU,gBAAA,CAAiB;AAAA,WAC1C;AAAA,SACL;AAAA,MACJ,KAAK,iBAAA;AACD,QAAA,OAAO;AAAA,UACH,uCAAA,CAAwC;AAAA,YACpC,IAAA;AAAA,YACA,WAAWA,UAAAA,CAAU,SAAA;AAAA,YACrB,iBAAiBA,UAAAA,CAAU;AAAA,WAC9B;AAAA,SACL;AAAA,MACJ,KAAK,uBAAA;AACD,QAAA,OAAO;AAAA,UACH,2CAAA,CAA4C;AAAA,YACxC,IAAA;AAAA,YACA,eAAeA,UAAAA,CAAU,aAAA;AAAA,YACzB,MAAMA,UAAAA,CAAU;AAAA,WACnB;AAAA,SACL;AAAA,MACJ,KAAK,sBAAA;AACD,QAAA,OAAO;AAAA,UACH,0CAAA,CAA2C;AAAA,YACvC,IAAA;AAAA,YACA,WAAWA,UAAAA,CAAU,SAAA;AAAA,YACrB,YAAYA,UAAAA,CAAU;AAAA,WACzB;AAAA,SACL;AAAA,MACJ,KAAK,gBAAA;AACD,QAAA,OAAO;AAAA,UACH,sCAAA,CAAuC;AAAA,YACnC,IAAA;AAAA,YACA,WAAWA,UAAAA,CAAU;AAAA,WACxB;AAAA,SACL;AAAA,MACJ,KAAK,kBAAA,EAAoB;AACrB,QAAA,MAAM,SAAA,GAAY,SAASA,UAAAA,CAAU,SAAS,IACxCA,UAAAA,CAAU,SAAA,GACV,YAAA,CAAaA,UAAAA,CAAU,SAAS,CAAA;AACtC,QAAA,IAAI,MAAA,CAAO,SAAS,CAAA,EAAG;AACnB,UAAA,MAAM,IAAI,MAAM,mEAAmE,CAAA;AAAA,QACvF;AACA,QAAA,OAAO;AAAA,UACH,wCAAA,CAAyC;AAAA,YACrC,IAAA;AAAA,YACA,WAAW,SAAA,CAAU;AAAA,WACxB;AAAA,SACL;AAAA,MACJ;AAAA,MACA,KAAK,cAAA;AACD,QAAA,OAAO;AAAA,UACH,oCAAA,CAAqC;AAAA,YACjC,IAAA;AAAA,YACA,WAAWA,UAAAA,CAAU,SAAA;AAAA,YACrB,cAAcA,UAAAA,CAAU;AAAA,WAC3B;AAAA,SACL;AAAA,MACJ,KAAK,oBAAA;AACD,QAAA,OAAO;AAAA,UACH,0CAAA,CAA2C;AAAA,YACvC,IAAA;AAAA,YACA,WAAWA,UAAAA,CAAU,SAAA;AAAA,YACrB,eAAeA,UAAAA,CAAU;AAAA,WAC5B;AAAA,SACL;AAAA,MACJ,KAAK,iBAAA;AACD,QAAA,OAAO,2CAAA,CAA4C,EAAE,IAAA,EAAM,CAAA;AAAA,MAC/D,KAAK,cAAA;AACD,QAAA,OAAO;AAAA,UACH,oCAAA,CAAqC;AAAA,YACjC,IAAA;AAAA,YACA,WAAWA,UAAAA,CAAU,SAAA;AAAA,YACrB,WAAWA,UAAAA,CAAU;AAAA,WACxB;AAAA,SACL;AAAA,MACJ,KAAK,mBAAA;AACD,QAAA,OAAO,yCAAA,CAA0C;AAAA,UAC7C,IAAA;AAAA,UACA,UAAUA,UAAAA,CAAU;AAAA,SACvB,CAAA;AAAA,MACL,KAAK,yBAAA;AACD,QAAA,OAAO;AAAA,UACH,+CAAA,CAAgD;AAAA,YAC5C,IAAA;AAAA,YACA,WAAWA,UAAAA,CAAU,SAAA;AAAA,YACrB,wCAAwCA,UAAAA,CAAU;AAAA,WACrD;AAAA,SACL;AAAA,MACJ,KAAK,oBAAA;AACD,QAAA,OAAO,0CAAA,CAA2C;AAAA,UAC9C,gBAAgBA,UAAAA,CAAU,cAAA;AAAA,UAC1B;AAAA,SACH,CAAA;AAAA,MACL;AACI,QAAA,OAAO,EAAC;AAAA;AAChB,EACJ,CAAC,CAAA;AACL;AAOO,SAAS,8CAAA,CACZ,IAAA,EACA,SAAA,EACA,UAAA,EACa;AACb,EAAA,OAAO,UAAA,CAAW,OAAA,CAAQ,CAACA,UAAAA,KAA6B;AACpD,IAAA,QAAQA,WAAU,MAAA;AAAQ,MACtB,KAAK,eAAA;AAED,QAAA,MAAM,4BAAA,GAA+B,SAASA,UAAAA,CAAU,eAAe,IACjEA,UAAAA,CAAU,eAAA,GACV,YAAA,CAAaA,UAAAA,CAAU,eAAe,CAAA;AAC5C,QAAA,IAAI,MAAA,CAAO,4BAA4B,CAAA,EAAG;AACtC,UAAA,OAAO,EAAC;AAAA,QACZ;AACA,QAAA,OAAO;AAAA,UACH,qCAAA,CAAsC;AAAA,YAClC,QAAA,EAAU,IAAA;AAAA,YACV,iBAAiB,4BAAA,CAA6B,KAAA;AAAA,YAC9C,IAAA;AAAA,YACA,aAAA,EAAe,SAAA;AAAA,YACf,MAAMA,UAAAA,CAAU,IAAA;AAAA,YAChB,QAAQA,UAAAA,CAAU,MAAA;AAAA,YAClB,KAAKA,UAAAA,CAAU;AAAA,WAClB;AAAA,SACL;AAAA,MACJ,KAAK,YAAA;AACD,QAAA,OAAO;AAAA,UACH,kCAAA,CAAmC;AAAA,YAC/B,KAAA,EAAO,IAAA;AAAA,YACP,eAAA,EAAiB,SAASA,UAAAA,CAAU,eAAe,IAC7CA,UAAAA,CAAU,eAAA,GACV,YAAA,CAAaA,UAAAA,CAAU,eAAe,CAAA;AAAA,YAC5C,IAAA;AAAA,YACA,aAAA,EAAe,SAAA;AAAA,YACf,SAASA,UAAAA,CAAU;AAAA,WACtB;AAAA,SACL;AAAA,MACJ;AACI,QAAA,OAAO,EAAC;AAAA;AAChB,EACJ,CAAC,CAAA;AACL;AAOO,SAAS,+CAAA,CACZ,KAAA,EACA,KAAA,EACA,UAAA,EACA,YAAA,EACa;AACb,EAAA,OAAO,UAAA,CAAW,OAAA,CAAQ,CAAAA,UAAAA,KAAa;AACnC,IAAA,QAAQA,WAAU,MAAA;AAAQ,MACtB,KAAK,cAAA;AACD,QAAA,OAAO;AAAA,UACHA,UAAAA,CAAU,+BACJ,iCAAA,CAAkC,EAAE,OAAO,KAAA,EAAO,YAAA,EAAc,CAAA,GAChE,kCAAA,CAAmC;AAAA,YAC/B,KAAA;AAAA,YACA,KAAA;AAAA,YACA;AAAA,WACH;AAAA,SACX;AAAA,MACJ,KAAK,UAAA;AACD,QAAA,OAAO;AAAA,UACHA,UAAAA,CAAU,UACJ,4BAAA,CAA6B,EAAE,OAAO,KAAA,EAAO,YAAA,EAAc,CAAA,GAC3D,6BAAA,CAA8B;AAAA,YAC1B,KAAA;AAAA,YACA,KAAA;AAAA,YACA;AAAA,WACH;AAAA,SACX;AAAA,MACJ;AACI,QAAA,OAAO,EAAC;AAAA;AAChB,EACJ,CAAC,CAAA;AACL;AC/OA,IAAM,eAAA,GAAkB,GAAA;AAEjB,SAAS,aAAa,UAAA,EAAsC;AAC/D,EAAA,IAAI,UAAA,IAAc,MAAM,OAAO,eAAA;AAC/B,EAAA,MAAM,UAAA,GAAapB,uBAAuBR,eAAAA,CAAgB,mBAAA,IAAuB,EAAE,IAAA,EAAM,WAAA,EAAa,CAAA,EAAG;AAAA,IACrGS,kBAAAA,CAAmBV,YAAAA,EAAa,CAAE,MAAA,CAAO,CAAC,CAAC;AAAA,GAC9C,CAAA;AACD,EAAA,OAAO,eAAA,GAAkB,UAAA,CAAW,MAAA,CAAO,UAAU,CAAA,CAAE,MAAA;AAC3D;ACRA,IAAM,cAAA,GAAiB,EAAA;AAEhB,SAAS,YAAY,UAAA,EAAsC;AAC9D,EAAA,IAAI,UAAA,IAAc,MAAM,OAAO,cAAA;AAC/B,EAAA,MAAM,UAAA,GAAaS,uBAAuBR,eAAAA,CAAgB,mBAAA,IAAuB,EAAE,IAAA,EAAM,WAAA,EAAa,CAAA,EAAG;AAAA,IACrGS,kBAAAA,CAAmBoB,eAAe9B,YAAAA,EAAa,EAAG,EAAE,CAAA,CAAE,MAAA,CAAO,CAAC,CAAC;AAAA,GAClE,CAAA;AACD,EAAA,OAAO,cAAA,GAAiB,UAAA,CAAW,MAAA,CAAO,UAAU,CAAA,CAAE,MAAA;AAC1D","file":"index.mjs","sourcesContent":["/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    combineCodec,\n    getEnumDecoder,\n    getEnumEncoder,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport enum AccountState {\n    Uninitialized,\n    Initialized,\n    Frozen,\n}\n\nexport type AccountStateArgs = AccountState;\n\nexport function getAccountStateEncoder(): FixedSizeEncoder<AccountStateArgs> {\n    return getEnumEncoder(AccountState);\n}\n\nexport function getAccountStateDecoder(): FixedSizeDecoder<AccountState> {\n    return getEnumDecoder(AccountState);\n}\n\nexport function getAccountStateCodec(): FixedSizeCodec<AccountStateArgs, AccountState> {\n    return combineCodec(getAccountStateEncoder(), getAccountStateDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    combineCodec,\n    getEnumDecoder,\n    getEnumEncoder,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport enum AuthorityType {\n    MintTokens,\n    FreezeAccount,\n    AccountOwner,\n    CloseAccount,\n    TransferFeeConfig,\n    WithheldWithdraw,\n    CloseMint,\n    InterestRate,\n    PermanentDelegate,\n    ConfidentialTransferMint,\n    TransferHookProgramId,\n    ConfidentialTransferFeeConfig,\n    MetadataPointer,\n    GroupPointer,\n    GroupMemberPointer,\n    ScaledUiAmount,\n    Pause,\n    PermissionedBurn,\n}\n\nexport type AuthorityTypeArgs = AuthorityType;\n\nexport function getAuthorityTypeEncoder(): FixedSizeEncoder<AuthorityTypeArgs> {\n    return getEnumEncoder(AuthorityType);\n}\n\nexport function getAuthorityTypeDecoder(): FixedSizeDecoder<AuthorityType> {\n    return getEnumDecoder(AuthorityType);\n}\n\nexport function getAuthorityTypeCodec(): FixedSizeCodec<AuthorityTypeArgs, AuthorityType> {\n    return combineCodec(getAuthorityTypeEncoder(), getAuthorityTypeDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    combineCodec,\n    fixDecoderSize,\n    fixEncoderSize,\n    getBytesDecoder,\n    getBytesEncoder,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type ReadonlyUint8Array,\n} from '@solana/kit';\n\n/** Authenticated encryption containing an account balance. */\nexport type DecryptableBalance = ReadonlyUint8Array;\n\nexport type DecryptableBalanceArgs = DecryptableBalance;\n\nexport function getDecryptableBalanceEncoder(): FixedSizeEncoder<DecryptableBalanceArgs> {\n    return fixEncoderSize(getBytesEncoder(), 36);\n}\n\nexport function getDecryptableBalanceDecoder(): FixedSizeDecoder<DecryptableBalance> {\n    return fixDecoderSize(getBytesDecoder(), 36);\n}\n\nexport function getDecryptableBalanceCodec(): FixedSizeCodec<DecryptableBalanceArgs, DecryptableBalance> {\n    return combineCodec(getDecryptableBalanceEncoder(), getDecryptableBalanceDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    combineCodec,\n    fixDecoderSize,\n    fixEncoderSize,\n    getBytesDecoder,\n    getBytesEncoder,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type ReadonlyUint8Array,\n} from '@solana/kit';\n\n/** ElGamal ciphertext containing an account balance. */\nexport type EncryptedBalance = ReadonlyUint8Array;\n\nexport type EncryptedBalanceArgs = EncryptedBalance;\n\nexport function getEncryptedBalanceEncoder(): FixedSizeEncoder<EncryptedBalanceArgs> {\n    return fixEncoderSize(getBytesEncoder(), 64);\n}\n\nexport function getEncryptedBalanceDecoder(): FixedSizeDecoder<EncryptedBalance> {\n    return fixDecoderSize(getBytesDecoder(), 64);\n}\n\nexport function getEncryptedBalanceCodec(): FixedSizeCodec<EncryptedBalanceArgs, EncryptedBalance> {\n    return combineCodec(getEncryptedBalanceEncoder(), getEncryptedBalanceDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    addDecoderSizePrefix,\n    addEncoderSizePrefix,\n    combineCodec,\n    getAddressDecoder,\n    getAddressEncoder,\n    getBooleanDecoder,\n    getBooleanEncoder,\n    getDiscriminatedUnionDecoder,\n    getDiscriminatedUnionEncoder,\n    getF64Decoder,\n    getF64Encoder,\n    getI16Decoder,\n    getI16Encoder,\n    getMapDecoder,\n    getMapEncoder,\n    getOptionDecoder,\n    getOptionEncoder,\n    getStructDecoder,\n    getStructEncoder,\n    getU16Decoder,\n    getU16Encoder,\n    getU32Decoder,\n    getU32Encoder,\n    getU64Decoder,\n    getU64Encoder,\n    getUnitDecoder,\n    getUnitEncoder,\n    getUtf8Decoder,\n    getUtf8Encoder,\n    type Address,\n    type Codec,\n    type Decoder,\n    type Encoder,\n    type GetDiscriminatedUnionVariant,\n    type GetDiscriminatedUnionVariantContent,\n    type Option,\n    type OptionOrNullable,\n} from '@solana/kit';\nimport {\n    getAccountStateDecoder,\n    getAccountStateEncoder,\n    getDecryptableBalanceDecoder,\n    getDecryptableBalanceEncoder,\n    getEncryptedBalanceDecoder,\n    getEncryptedBalanceEncoder,\n    getTransferFeeDecoder,\n    getTransferFeeEncoder,\n    type AccountState,\n    type AccountStateArgs,\n    type DecryptableBalance,\n    type DecryptableBalanceArgs,\n    type EncryptedBalance,\n    type EncryptedBalanceArgs,\n    type TransferFee,\n    type TransferFeeArgs,\n} from '.';\n\nexport type Extension =\n    | { __kind: 'Uninitialized' }\n    | {\n          __kind: 'TransferFeeConfig';\n          /** Optional authority to set the fee. */\n          transferFeeConfigAuthority: Address;\n          /** Withdraw from mint instructions must be signed by this key. */\n          withdrawWithheldAuthority: Address;\n          /** Withheld transfer fee tokens that have been moved to the mint for withdrawal. */\n          withheldAmount: bigint;\n          /** Older transfer fee, used if the current epoch < newerTransferFee.epoch. */\n          olderTransferFee: TransferFee;\n          /** Newer transfer fee, used if the current epoch >= newerTransferFee.epoch. */\n          newerTransferFee: TransferFee;\n      }\n    | {\n          __kind: 'TransferFeeAmount';\n          /** Withheld transfer fee tokens that can be claimed by the fee authority. */\n          withheldAmount: bigint;\n      }\n    | { __kind: 'MintCloseAuthority'; closeAuthority: Address }\n    | {\n          __kind: 'ConfidentialTransferMint';\n          /**\n           * Authority to modify the `ConfidentialTransferMint` configuration and to\n           * approve new accounts (if `auto_approve_new_accounts` is true).\n           *\n           * The legacy Token Multisig account is not supported as the authority.\n           */\n          authority: Option<Address>;\n          /**\n           * Indicate if newly configured accounts must be approved by the\n           * `authority` before they may be used by the user.\n           *\n           * * If `true`, no approval is required and new accounts may be used immediately.\n           * * If `false`, the authority must approve newly configured accounts (see\n           *   `ConfidentialTransferInstruction::ConfigureAccount`).\n           */\n          autoApproveNewAccounts: boolean;\n          /** Authority to decode any transfer amount in a confidential transfer. */\n          auditorElgamalPubkey: Option<Address>;\n      }\n    | {\n          __kind: 'ConfidentialTransferAccount';\n          /**\n           * `true` if this account has been approved for use. All confidential\n           * transfer operations for the account will fail until approval is granted.\n           */\n          approved: boolean;\n          /** The public key associated with ElGamal encryption. */\n          elgamalPubkey: Address;\n          /** The low 16 bits of the pending balance (encrypted by `elgamal_pubkey`). */\n          pendingBalanceLow: EncryptedBalance;\n          /** The high 32 bits of the pending balance (encrypted by `elgamal_pubkey`). */\n          pendingBalanceHigh: EncryptedBalance;\n          /** The available balance (encrypted by `encrypiton_pubkey`). */\n          availableBalance: EncryptedBalance;\n          /** The decryptable available balance. */\n          decryptableAvailableBalance: DecryptableBalance;\n          /** If `false`, the extended account rejects any incoming confidential transfers. */\n          allowConfidentialCredits: boolean;\n          /** If `false`, the base account rejects any incoming transfers. */\n          allowNonConfidentialCredits: boolean;\n          /** The total number of `Deposit` and `Transfer` instructions that have credited `pending_balance`. */\n          pendingBalanceCreditCounter: bigint;\n          /**\n           * The maximum number of `Deposit` and `Transfer` instructions that can\n           * credit `pending_balance` before the `ApplyPendingBalance`\n           * instruction is executed.\n           */\n          maximumPendingBalanceCreditCounter: bigint;\n          /**\n           * The `expected_pending_balance_credit_counter` value that was included in\n           * the last `ApplyPendingBalance` instruction.\n           */\n          expectedPendingBalanceCreditCounter: bigint;\n          /**\n           * The actual `pending_balance_credit_counter` when the last\n           * `ApplyPendingBalance` instruction was executed.\n           */\n          actualPendingBalanceCreditCounter: bigint;\n      }\n    | { __kind: 'DefaultAccountState'; state: AccountState }\n    | { __kind: 'ImmutableOwner' }\n    | {\n          __kind: 'MemoTransfer';\n          /** Require transfers into this account to be accompanied by a memo. */\n          requireIncomingTransferMemos: boolean;\n      }\n    | { __kind: 'NonTransferable' }\n    | {\n          __kind: 'InterestBearingConfig';\n          rateAuthority: Address;\n          initializationTimestamp: bigint;\n          preUpdateAverageRate: number;\n          lastUpdateTimestamp: bigint;\n          currentRate: number;\n      }\n    | {\n          __kind: 'CpiGuard';\n          /** Lock certain token operations from taking place within CPI for this account. */\n          lockCpi: boolean;\n      }\n    | { __kind: 'PermanentDelegate'; delegate: Address }\n    | { __kind: 'NonTransferableAccount' }\n    | {\n          __kind: 'TransferHook';\n          /** The transfer hook update authority. */\n          authority: Address;\n          /** The transfer hook program account. */\n          programId: Address;\n      }\n    | {\n          __kind: 'TransferHookAccount';\n          /**\n           * Whether or not this account is currently transferring tokens\n           * True during the transfer hook cpi, otherwise false.\n           */\n          transferring: boolean;\n      }\n    | {\n          __kind: 'ConfidentialTransferFee';\n          /** Optional authority to set the withdraw withheld authority ElGamal key. */\n          authority: Option<Address>;\n          /**\n           * Withheld fees from accounts must be encrypted with this ElGamal key.\n           *\n           * Note that whoever holds the ElGamal private key for this ElGamal public\n           * key has the ability to decode any withheld fee amount that are\n           * associated with accounts. When combined with the fee parameters, the\n           * withheld fee amounts can reveal information about transfer amounts.\n           */\n          elgamalPubkey: Address;\n          /** If `false`, the harvest of withheld tokens to mint is rejected. */\n          harvestToMintEnabled: boolean;\n          /**\n           * Withheld confidential transfer fee tokens that have been moved to the\n           * mint for withdrawal.\n           */\n          withheldAmount: EncryptedBalance;\n      }\n    | {\n          __kind: 'ConfidentialTransferFeeAmount';\n          /** Amount withheld during confidential transfers, to be harvest to the mint. */\n          withheldAmount: EncryptedBalance;\n      }\n    | {\n          __kind: 'MetadataPointer';\n          /** Optional authority that can set the metadata address. */\n          authority: Option<Address>;\n          /** Optional Account Address that holds the metadata. */\n          metadataAddress: Option<Address>;\n      }\n    | {\n          __kind: 'TokenMetadata';\n          /** The authority that can sign to update the metadata. */\n          updateAuthority: Option<Address>;\n          /** The associated mint, used to counter spoofing to be sure that metadata belongs to a particular mint. */\n          mint: Address;\n          /** The longer name of the token. */\n          name: string;\n          /** The shortened symbol for the token. */\n          symbol: string;\n          /** The URI pointing to richer metadata. */\n          uri: string;\n          /** Any additional metadata about the token as key-value pairs. */\n          additionalMetadata: Map<string, string>;\n      }\n    | {\n          __kind: 'GroupPointer';\n          /** Optional authority that can set the group address. */\n          authority: Option<Address>;\n          /** Optional account address that holds the group. */\n          groupAddress: Option<Address>;\n      }\n    | {\n          __kind: 'TokenGroup';\n          /** The authority that can sign to update the group. */\n          updateAuthority: Option<Address>;\n          /** The associated mint, used to counter spoofing to be sure that group belongs to a particular mint. */\n          mint: Address;\n          /** The current number of group members. */\n          size: bigint;\n          /** The maximum number of group members. */\n          maxSize: bigint;\n      }\n    | {\n          __kind: 'GroupMemberPointer';\n          /** Optional authority that can set the member address. */\n          authority: Option<Address>;\n          /** Optional account address that holds the member. */\n          memberAddress: Option<Address>;\n      }\n    | {\n          __kind: 'TokenGroupMember';\n          /** The associated mint, used to counter spoofing to be sure that member belongs to a particular mint. */\n          mint: Address;\n          /** The pubkey of the `TokenGroup`. */\n          group: Address;\n          /** The member number. */\n          memberNumber: bigint;\n      }\n    | { __kind: 'ConfidentialMintBurn' }\n    | {\n          __kind: 'ScaledUiAmountConfig';\n          authority: Address;\n          multiplier: number;\n          newMultiplierEffectiveTimestamp: bigint;\n          newMultiplier: number;\n      }\n    | { __kind: 'PausableConfig'; authority: Option<Address>; paused: boolean }\n    | { __kind: 'PausableAccount' }\n    | {\n          __kind: 'PermissionedBurn';\n          /** Authority that is required for burning */\n          authority: Option<Address>;\n      };\n\nexport type ExtensionArgs =\n    | { __kind: 'Uninitialized' }\n    | {\n          __kind: 'TransferFeeConfig';\n          /** Optional authority to set the fee. */\n          transferFeeConfigAuthority: Address;\n          /** Withdraw from mint instructions must be signed by this key. */\n          withdrawWithheldAuthority: Address;\n          /** Withheld transfer fee tokens that have been moved to the mint for withdrawal. */\n          withheldAmount: number | bigint;\n          /** Older transfer fee, used if the current epoch < newerTransferFee.epoch. */\n          olderTransferFee: TransferFeeArgs;\n          /** Newer transfer fee, used if the current epoch >= newerTransferFee.epoch. */\n          newerTransferFee: TransferFeeArgs;\n      }\n    | {\n          __kind: 'TransferFeeAmount';\n          /** Withheld transfer fee tokens that can be claimed by the fee authority. */\n          withheldAmount: number | bigint;\n      }\n    | { __kind: 'MintCloseAuthority'; closeAuthority: Address }\n    | {\n          __kind: 'ConfidentialTransferMint';\n          /**\n           * Authority to modify the `ConfidentialTransferMint` configuration and to\n           * approve new accounts (if `auto_approve_new_accounts` is true).\n           *\n           * The legacy Token Multisig account is not supported as the authority.\n           */\n          authority: OptionOrNullable<Address>;\n          /**\n           * Indicate if newly configured accounts must be approved by the\n           * `authority` before they may be used by the user.\n           *\n           * * If `true`, no approval is required and new accounts may be used immediately.\n           * * If `false`, the authority must approve newly configured accounts (see\n           *   `ConfidentialTransferInstruction::ConfigureAccount`).\n           */\n          autoApproveNewAccounts: boolean;\n          /** Authority to decode any transfer amount in a confidential transfer. */\n          auditorElgamalPubkey: OptionOrNullable<Address>;\n      }\n    | {\n          __kind: 'ConfidentialTransferAccount';\n          /**\n           * `true` if this account has been approved for use. All confidential\n           * transfer operations for the account will fail until approval is granted.\n           */\n          approved: boolean;\n          /** The public key associated with ElGamal encryption. */\n          elgamalPubkey: Address;\n          /** The low 16 bits of the pending balance (encrypted by `elgamal_pubkey`). */\n          pendingBalanceLow: EncryptedBalanceArgs;\n          /** The high 32 bits of the pending balance (encrypted by `elgamal_pubkey`). */\n          pendingBalanceHigh: EncryptedBalanceArgs;\n          /** The available balance (encrypted by `encrypiton_pubkey`). */\n          availableBalance: EncryptedBalanceArgs;\n          /** The decryptable available balance. */\n          decryptableAvailableBalance: DecryptableBalanceArgs;\n          /** If `false`, the extended account rejects any incoming confidential transfers. */\n          allowConfidentialCredits: boolean;\n          /** If `false`, the base account rejects any incoming transfers. */\n          allowNonConfidentialCredits: boolean;\n          /** The total number of `Deposit` and `Transfer` instructions that have credited `pending_balance`. */\n          pendingBalanceCreditCounter: number | bigint;\n          /**\n           * The maximum number of `Deposit` and `Transfer` instructions that can\n           * credit `pending_balance` before the `ApplyPendingBalance`\n           * instruction is executed.\n           */\n          maximumPendingBalanceCreditCounter: number | bigint;\n          /**\n           * The `expected_pending_balance_credit_counter` value that was included in\n           * the last `ApplyPendingBalance` instruction.\n           */\n          expectedPendingBalanceCreditCounter: number | bigint;\n          /**\n           * The actual `pending_balance_credit_counter` when the last\n           * `ApplyPendingBalance` instruction was executed.\n           */\n          actualPendingBalanceCreditCounter: number | bigint;\n      }\n    | { __kind: 'DefaultAccountState'; state: AccountStateArgs }\n    | { __kind: 'ImmutableOwner' }\n    | {\n          __kind: 'MemoTransfer';\n          /** Require transfers into this account to be accompanied by a memo. */\n          requireIncomingTransferMemos: boolean;\n      }\n    | { __kind: 'NonTransferable' }\n    | {\n          __kind: 'InterestBearingConfig';\n          rateAuthority: Address;\n          initializationTimestamp: number | bigint;\n          preUpdateAverageRate: number;\n          lastUpdateTimestamp: number | bigint;\n          currentRate: number;\n      }\n    | {\n          __kind: 'CpiGuard';\n          /** Lock certain token operations from taking place within CPI for this account. */\n          lockCpi: boolean;\n      }\n    | { __kind: 'PermanentDelegate'; delegate: Address }\n    | { __kind: 'NonTransferableAccount' }\n    | {\n          __kind: 'TransferHook';\n          /** The transfer hook update authority. */\n          authority: Address;\n          /** The transfer hook program account. */\n          programId: Address;\n      }\n    | {\n          __kind: 'TransferHookAccount';\n          /**\n           * Whether or not this account is currently transferring tokens\n           * True during the transfer hook cpi, otherwise false.\n           */\n          transferring: boolean;\n      }\n    | {\n          __kind: 'ConfidentialTransferFee';\n          /** Optional authority to set the withdraw withheld authority ElGamal key. */\n          authority: OptionOrNullable<Address>;\n          /**\n           * Withheld fees from accounts must be encrypted with this ElGamal key.\n           *\n           * Note that whoever holds the ElGamal private key for this ElGamal public\n           * key has the ability to decode any withheld fee amount that are\n           * associated with accounts. When combined with the fee parameters, the\n           * withheld fee amounts can reveal information about transfer amounts.\n           */\n          elgamalPubkey: Address;\n          /** If `false`, the harvest of withheld tokens to mint is rejected. */\n          harvestToMintEnabled: boolean;\n          /**\n           * Withheld confidential transfer fee tokens that have been moved to the\n           * mint for withdrawal.\n           */\n          withheldAmount: EncryptedBalanceArgs;\n      }\n    | {\n          __kind: 'ConfidentialTransferFeeAmount';\n          /** Amount withheld during confidential transfers, to be harvest to the mint. */\n          withheldAmount: EncryptedBalanceArgs;\n      }\n    | {\n          __kind: 'MetadataPointer';\n          /** Optional authority that can set the metadata address. */\n          authority: OptionOrNullable<Address>;\n          /** Optional Account Address that holds the metadata. */\n          metadataAddress: OptionOrNullable<Address>;\n      }\n    | {\n          __kind: 'TokenMetadata';\n          /** The authority that can sign to update the metadata. */\n          updateAuthority: OptionOrNullable<Address>;\n          /** The associated mint, used to counter spoofing to be sure that metadata belongs to a particular mint. */\n          mint: Address;\n          /** The longer name of the token. */\n          name: string;\n          /** The shortened symbol for the token. */\n          symbol: string;\n          /** The URI pointing to richer metadata. */\n          uri: string;\n          /** Any additional metadata about the token as key-value pairs. */\n          additionalMetadata: Map<string, string>;\n      }\n    | {\n          __kind: 'GroupPointer';\n          /** Optional authority that can set the group address. */\n          authority: OptionOrNullable<Address>;\n          /** Optional account address that holds the group. */\n          groupAddress: OptionOrNullable<Address>;\n      }\n    | {\n          __kind: 'TokenGroup';\n          /** The authority that can sign to update the group. */\n          updateAuthority: OptionOrNullable<Address>;\n          /** The associated mint, used to counter spoofing to be sure that group belongs to a particular mint. */\n          mint: Address;\n          /** The current number of group members. */\n          size: number | bigint;\n          /** The maximum number of group members. */\n          maxSize: number | bigint;\n      }\n    | {\n          __kind: 'GroupMemberPointer';\n          /** Optional authority that can set the member address. */\n          authority: OptionOrNullable<Address>;\n          /** Optional account address that holds the member. */\n          memberAddress: OptionOrNullable<Address>;\n      }\n    | {\n          __kind: 'TokenGroupMember';\n          /** The associated mint, used to counter spoofing to be sure that member belongs to a particular mint. */\n          mint: Address;\n          /** The pubkey of the `TokenGroup`. */\n          group: Address;\n          /** The member number. */\n          memberNumber: number | bigint;\n      }\n    | { __kind: 'ConfidentialMintBurn' }\n    | {\n          __kind: 'ScaledUiAmountConfig';\n          authority: Address;\n          multiplier: number;\n          newMultiplierEffectiveTimestamp: number | bigint;\n          newMultiplier: number;\n      }\n    | { __kind: 'PausableConfig'; authority: OptionOrNullable<Address>; paused: boolean }\n    | { __kind: 'PausableAccount' }\n    | {\n          __kind: 'PermissionedBurn';\n          /** Authority that is required for burning */\n          authority: OptionOrNullable<Address>;\n      };\n\nexport function getExtensionEncoder(): Encoder<ExtensionArgs> {\n    return getDiscriminatedUnionEncoder(\n        [\n            ['Uninitialized', getUnitEncoder()],\n            [\n                'TransferFeeConfig',\n                addEncoderSizePrefix(\n                    getStructEncoder([\n                        ['transferFeeConfigAuthority', getAddressEncoder()],\n                        ['withdrawWithheldAuthority', getAddressEncoder()],\n                        ['withheldAmount', getU64Encoder()],\n                        ['olderTransferFee', getTransferFeeEncoder()],\n                        ['newerTransferFee', getTransferFeeEncoder()],\n                    ]),\n                    getU16Encoder(),\n                ),\n            ],\n            [\n                'TransferFeeAmount',\n                addEncoderSizePrefix(getStructEncoder([['withheldAmount', getU64Encoder()]]), getU16Encoder()),\n            ],\n            [\n                'MintCloseAuthority',\n                addEncoderSizePrefix(getStructEncoder([['closeAuthority', getAddressEncoder()]]), getU16Encoder()),\n            ],\n            [\n                'ConfidentialTransferMint',\n                addEncoderSizePrefix(\n                    getStructEncoder([\n                        ['authority', getOptionEncoder(getAddressEncoder(), { prefix: null, noneValue: 'zeroes' })],\n                        ['autoApproveNewAccounts', getBooleanEncoder()],\n                        [\n                            'auditorElgamalPubkey',\n                            getOptionEncoder(getAddressEncoder(), { prefix: null, noneValue: 'zeroes' }),\n                        ],\n                    ]),\n                    getU16Encoder(),\n                ),\n            ],\n            [\n                'ConfidentialTransferAccount',\n                addEncoderSizePrefix(\n                    getStructEncoder([\n                        ['approved', getBooleanEncoder()],\n                        ['elgamalPubkey', getAddressEncoder()],\n                        ['pendingBalanceLow', getEncryptedBalanceEncoder()],\n                        ['pendingBalanceHigh', getEncryptedBalanceEncoder()],\n                        ['availableBalance', getEncryptedBalanceEncoder()],\n                        ['decryptableAvailableBalance', getDecryptableBalanceEncoder()],\n                        ['allowConfidentialCredits', getBooleanEncoder()],\n                        ['allowNonConfidentialCredits', getBooleanEncoder()],\n                        ['pendingBalanceCreditCounter', getU64Encoder()],\n                        ['maximumPendingBalanceCreditCounter', getU64Encoder()],\n                        ['expectedPendingBalanceCreditCounter', getU64Encoder()],\n                        ['actualPendingBalanceCreditCounter', getU64Encoder()],\n                    ]),\n                    getU16Encoder(),\n                ),\n            ],\n            [\n                'DefaultAccountState',\n                addEncoderSizePrefix(getStructEncoder([['state', getAccountStateEncoder()]]), getU16Encoder()),\n            ],\n            ['ImmutableOwner', addEncoderSizePrefix(getStructEncoder([]), getU16Encoder())],\n            [\n                'MemoTransfer',\n                addEncoderSizePrefix(\n                    getStructEncoder([['requireIncomingTransferMemos', getBooleanEncoder()]]),\n                    getU16Encoder(),\n                ),\n            ],\n            ['NonTransferable', addEncoderSizePrefix(getStructEncoder([]), getU16Encoder())],\n            [\n                'InterestBearingConfig',\n                addEncoderSizePrefix(\n                    getStructEncoder([\n                        ['rateAuthority', getAddressEncoder()],\n                        ['initializationTimestamp', getU64Encoder()],\n                        ['preUpdateAverageRate', getI16Encoder()],\n                        ['lastUpdateTimestamp', getU64Encoder()],\n                        ['currentRate', getI16Encoder()],\n                    ]),\n                    getU16Encoder(),\n                ),\n            ],\n            ['CpiGuard', addEncoderSizePrefix(getStructEncoder([['lockCpi', getBooleanEncoder()]]), getU16Encoder())],\n            [\n                'PermanentDelegate',\n                addEncoderSizePrefix(getStructEncoder([['delegate', getAddressEncoder()]]), getU16Encoder()),\n            ],\n            ['NonTransferableAccount', addEncoderSizePrefix(getStructEncoder([]), getU16Encoder())],\n            [\n                'TransferHook',\n                addEncoderSizePrefix(\n                    getStructEncoder([\n                        ['authority', getAddressEncoder()],\n                        ['programId', getAddressEncoder()],\n                    ]),\n                    getU16Encoder(),\n                ),\n            ],\n            [\n                'TransferHookAccount',\n                addEncoderSizePrefix(getStructEncoder([['transferring', getBooleanEncoder()]]), getU16Encoder()),\n            ],\n            [\n                'ConfidentialTransferFee',\n                addEncoderSizePrefix(\n                    getStructEncoder([\n                        ['authority', getOptionEncoder(getAddressEncoder(), { prefix: null, noneValue: 'zeroes' })],\n                        ['elgamalPubkey', getAddressEncoder()],\n                        ['harvestToMintEnabled', getBooleanEncoder()],\n                        ['withheldAmount', getEncryptedBalanceEncoder()],\n                    ]),\n                    getU16Encoder(),\n                ),\n            ],\n            [\n                'ConfidentialTransferFeeAmount',\n                addEncoderSizePrefix(\n                    getStructEncoder([['withheldAmount', getEncryptedBalanceEncoder()]]),\n                    getU16Encoder(),\n                ),\n            ],\n            [\n                'MetadataPointer',\n                addEncoderSizePrefix(\n                    getStructEncoder([\n                        ['authority', getOptionEncoder(getAddressEncoder(), { prefix: null, noneValue: 'zeroes' })],\n                        [\n                            'metadataAddress',\n                            getOptionEncoder(getAddressEncoder(), { prefix: null, noneValue: 'zeroes' }),\n                        ],\n                    ]),\n                    getU16Encoder(),\n                ),\n            ],\n            [\n                'TokenMetadata',\n                addEncoderSizePrefix(\n                    getStructEncoder([\n                        [\n                            'updateAuthority',\n                            getOptionEncoder(getAddressEncoder(), { prefix: null, noneValue: 'zeroes' }),\n                        ],\n                        ['mint', getAddressEncoder()],\n                        ['name', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())],\n                        ['symbol', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())],\n                        ['uri', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())],\n                        [\n                            'additionalMetadata',\n                            getMapEncoder(\n                                addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder()),\n                                addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder()),\n                            ),\n                        ],\n                    ]),\n                    getU16Encoder(),\n                ),\n            ],\n            [\n                'GroupPointer',\n                addEncoderSizePrefix(\n                    getStructEncoder([\n                        ['authority', getOptionEncoder(getAddressEncoder(), { prefix: null, noneValue: 'zeroes' })],\n                        ['groupAddress', getOptionEncoder(getAddressEncoder(), { prefix: null, noneValue: 'zeroes' })],\n                    ]),\n                    getU16Encoder(),\n                ),\n            ],\n            [\n                'TokenGroup',\n                addEncoderSizePrefix(\n                    getStructEncoder([\n                        [\n                            'updateAuthority',\n                            getOptionEncoder(getAddressEncoder(), { prefix: null, noneValue: 'zeroes' }),\n                        ],\n                        ['mint', getAddressEncoder()],\n                        ['size', getU64Encoder()],\n                        ['maxSize', getU64Encoder()],\n                    ]),\n                    getU16Encoder(),\n                ),\n            ],\n            [\n                'GroupMemberPointer',\n                addEncoderSizePrefix(\n                    getStructEncoder([\n                        ['authority', getOptionEncoder(getAddressEncoder(), { prefix: null, noneValue: 'zeroes' })],\n                        ['memberAddress', getOptionEncoder(getAddressEncoder(), { prefix: null, noneValue: 'zeroes' })],\n                    ]),\n                    getU16Encoder(),\n                ),\n            ],\n            [\n                'TokenGroupMember',\n                addEncoderSizePrefix(\n                    getStructEncoder([\n                        ['mint', getAddressEncoder()],\n                        ['group', getAddressEncoder()],\n                        ['memberNumber', getU64Encoder()],\n                    ]),\n                    getU16Encoder(),\n                ),\n            ],\n            ['ConfidentialMintBurn', addEncoderSizePrefix(getStructEncoder([]), getU16Encoder())],\n            [\n                'ScaledUiAmountConfig',\n                addEncoderSizePrefix(\n                    getStructEncoder([\n                        ['authority', getAddressEncoder()],\n                        ['multiplier', getF64Encoder()],\n                        ['newMultiplierEffectiveTimestamp', getU64Encoder()],\n                        ['newMultiplier', getF64Encoder()],\n                    ]),\n                    getU16Encoder(),\n                ),\n            ],\n            [\n                'PausableConfig',\n                addEncoderSizePrefix(\n                    getStructEncoder([\n                        ['authority', getOptionEncoder(getAddressEncoder(), { prefix: null, noneValue: 'zeroes' })],\n                        ['paused', getBooleanEncoder()],\n                    ]),\n                    getU16Encoder(),\n                ),\n            ],\n            ['PausableAccount', addEncoderSizePrefix(getStructEncoder([]), getU16Encoder())],\n            [\n                'PermissionedBurn',\n                addEncoderSizePrefix(\n                    getStructEncoder([\n                        ['authority', getOptionEncoder(getAddressEncoder(), { prefix: null, noneValue: 'zeroes' })],\n                    ]),\n                    getU16Encoder(),\n                ),\n            ],\n        ],\n        { size: getU16Encoder() },\n    );\n}\n\nexport function getExtensionDecoder(): Decoder<Extension> {\n    return getDiscriminatedUnionDecoder(\n        [\n            ['Uninitialized', getUnitDecoder()],\n            [\n                'TransferFeeConfig',\n                addDecoderSizePrefix(\n                    getStructDecoder([\n                        ['transferFeeConfigAuthority', getAddressDecoder()],\n                        ['withdrawWithheldAuthority', getAddressDecoder()],\n                        ['withheldAmount', getU64Decoder()],\n                        ['olderTransferFee', getTransferFeeDecoder()],\n                        ['newerTransferFee', getTransferFeeDecoder()],\n                    ]),\n                    getU16Decoder(),\n                ),\n            ],\n            [\n                'TransferFeeAmount',\n                addDecoderSizePrefix(getStructDecoder([['withheldAmount', getU64Decoder()]]), getU16Decoder()),\n            ],\n            [\n                'MintCloseAuthority',\n                addDecoderSizePrefix(getStructDecoder([['closeAuthority', getAddressDecoder()]]), getU16Decoder()),\n            ],\n            [\n                'ConfidentialTransferMint',\n                addDecoderSizePrefix(\n                    getStructDecoder([\n                        ['authority', getOptionDecoder(getAddressDecoder(), { prefix: null, noneValue: 'zeroes' })],\n                        ['autoApproveNewAccounts', getBooleanDecoder()],\n                        [\n                            'auditorElgamalPubkey',\n                            getOptionDecoder(getAddressDecoder(), { prefix: null, noneValue: 'zeroes' }),\n                        ],\n                    ]),\n                    getU16Decoder(),\n                ),\n            ],\n            [\n                'ConfidentialTransferAccount',\n                addDecoderSizePrefix(\n                    getStructDecoder([\n                        ['approved', getBooleanDecoder()],\n                        ['elgamalPubkey', getAddressDecoder()],\n                        ['pendingBalanceLow', getEncryptedBalanceDecoder()],\n                        ['pendingBalanceHigh', getEncryptedBalanceDecoder()],\n                        ['availableBalance', getEncryptedBalanceDecoder()],\n                        ['decryptableAvailableBalance', getDecryptableBalanceDecoder()],\n                        ['allowConfidentialCredits', getBooleanDecoder()],\n                        ['allowNonConfidentialCredits', getBooleanDecoder()],\n                        ['pendingBalanceCreditCounter', getU64Decoder()],\n                        ['maximumPendingBalanceCreditCounter', getU64Decoder()],\n                        ['expectedPendingBalanceCreditCounter', getU64Decoder()],\n                        ['actualPendingBalanceCreditCounter', getU64Decoder()],\n                    ]),\n                    getU16Decoder(),\n                ),\n            ],\n            [\n                'DefaultAccountState',\n                addDecoderSizePrefix(getStructDecoder([['state', getAccountStateDecoder()]]), getU16Decoder()),\n            ],\n            ['ImmutableOwner', addDecoderSizePrefix(getStructDecoder([]), getU16Decoder())],\n            [\n                'MemoTransfer',\n                addDecoderSizePrefix(\n                    getStructDecoder([['requireIncomingTransferMemos', getBooleanDecoder()]]),\n                    getU16Decoder(),\n                ),\n            ],\n            ['NonTransferable', addDecoderSizePrefix(getStructDecoder([]), getU16Decoder())],\n            [\n                'InterestBearingConfig',\n                addDecoderSizePrefix(\n                    getStructDecoder([\n                        ['rateAuthority', getAddressDecoder()],\n                        ['initializationTimestamp', getU64Decoder()],\n                        ['preUpdateAverageRate', getI16Decoder()],\n                        ['lastUpdateTimestamp', getU64Decoder()],\n                        ['currentRate', getI16Decoder()],\n                    ]),\n                    getU16Decoder(),\n                ),\n            ],\n            ['CpiGuard', addDecoderSizePrefix(getStructDecoder([['lockCpi', getBooleanDecoder()]]), getU16Decoder())],\n            [\n                'PermanentDelegate',\n                addDecoderSizePrefix(getStructDecoder([['delegate', getAddressDecoder()]]), getU16Decoder()),\n            ],\n            ['NonTransferableAccount', addDecoderSizePrefix(getStructDecoder([]), getU16Decoder())],\n            [\n                'TransferHook',\n                addDecoderSizePrefix(\n                    getStructDecoder([\n                        ['authority', getAddressDecoder()],\n                        ['programId', getAddressDecoder()],\n                    ]),\n                    getU16Decoder(),\n                ),\n            ],\n            [\n                'TransferHookAccount',\n                addDecoderSizePrefix(getStructDecoder([['transferring', getBooleanDecoder()]]), getU16Decoder()),\n            ],\n            [\n                'ConfidentialTransferFee',\n                addDecoderSizePrefix(\n                    getStructDecoder([\n                        ['authority', getOptionDecoder(getAddressDecoder(), { prefix: null, noneValue: 'zeroes' })],\n                        ['elgamalPubkey', getAddressDecoder()],\n                        ['harvestToMintEnabled', getBooleanDecoder()],\n                        ['withheldAmount', getEncryptedBalanceDecoder()],\n                    ]),\n                    getU16Decoder(),\n                ),\n            ],\n            [\n                'ConfidentialTransferFeeAmount',\n                addDecoderSizePrefix(\n                    getStructDecoder([['withheldAmount', getEncryptedBalanceDecoder()]]),\n                    getU16Decoder(),\n                ),\n            ],\n            [\n                'MetadataPointer',\n                addDecoderSizePrefix(\n                    getStructDecoder([\n                        ['authority', getOptionDecoder(getAddressDecoder(), { prefix: null, noneValue: 'zeroes' })],\n                        [\n                            'metadataAddress',\n                            getOptionDecoder(getAddressDecoder(), { prefix: null, noneValue: 'zeroes' }),\n                        ],\n                    ]),\n                    getU16Decoder(),\n                ),\n            ],\n            [\n                'TokenMetadata',\n                addDecoderSizePrefix(\n                    getStructDecoder([\n                        [\n                            'updateAuthority',\n                            getOptionDecoder(getAddressDecoder(), { prefix: null, noneValue: 'zeroes' }),\n                        ],\n                        ['mint', getAddressDecoder()],\n                        ['name', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],\n                        ['symbol', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],\n                        ['uri', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],\n                        [\n                            'additionalMetadata',\n                            getMapDecoder(\n                                addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder()),\n                                addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder()),\n                            ),\n                        ],\n                    ]),\n                    getU16Decoder(),\n                ),\n            ],\n            [\n                'GroupPointer',\n                addDecoderSizePrefix(\n                    getStructDecoder([\n                        ['authority', getOptionDecoder(getAddressDecoder(), { prefix: null, noneValue: 'zeroes' })],\n                        ['groupAddress', getOptionDecoder(getAddressDecoder(), { prefix: null, noneValue: 'zeroes' })],\n                    ]),\n                    getU16Decoder(),\n                ),\n            ],\n            [\n                'TokenGroup',\n                addDecoderSizePrefix(\n                    getStructDecoder([\n                        [\n                            'updateAuthority',\n                            getOptionDecoder(getAddressDecoder(), { prefix: null, noneValue: 'zeroes' }),\n                        ],\n                        ['mint', getAddressDecoder()],\n                        ['size', getU64Decoder()],\n                        ['maxSize', getU64Decoder()],\n                    ]),\n                    getU16Decoder(),\n                ),\n            ],\n            [\n                'GroupMemberPointer',\n                addDecoderSizePrefix(\n                    getStructDecoder([\n                        ['authority', getOptionDecoder(getAddressDecoder(), { prefix: null, noneValue: 'zeroes' })],\n                        ['memberAddress', getOptionDecoder(getAddressDecoder(), { prefix: null, noneValue: 'zeroes' })],\n                    ]),\n                    getU16Decoder(),\n                ),\n            ],\n            [\n                'TokenGroupMember',\n                addDecoderSizePrefix(\n                    getStructDecoder([\n                        ['mint', getAddressDecoder()],\n                        ['group', getAddressDecoder()],\n                        ['memberNumber', getU64Decoder()],\n                    ]),\n                    getU16Decoder(),\n                ),\n            ],\n            ['ConfidentialMintBurn', addDecoderSizePrefix(getStructDecoder([]), getU16Decoder())],\n            [\n                'ScaledUiAmountConfig',\n                addDecoderSizePrefix(\n                    getStructDecoder([\n                        ['authority', getAddressDecoder()],\n                        ['multiplier', getF64Decoder()],\n                        ['newMultiplierEffectiveTimestamp', getU64Decoder()],\n                        ['newMultiplier', getF64Decoder()],\n                    ]),\n                    getU16Decoder(),\n                ),\n            ],\n            [\n                'PausableConfig',\n                addDecoderSizePrefix(\n                    getStructDecoder([\n                        ['authority', getOptionDecoder(getAddressDecoder(), { prefix: null, noneValue: 'zeroes' })],\n                        ['paused', getBooleanDecoder()],\n                    ]),\n                    getU16Decoder(),\n                ),\n            ],\n            ['PausableAccount', addDecoderSizePrefix(getStructDecoder([]), getU16Decoder())],\n            [\n                'PermissionedBurn',\n                addDecoderSizePrefix(\n                    getStructDecoder([\n                        ['authority', getOptionDecoder(getAddressDecoder(), { prefix: null, noneValue: 'zeroes' })],\n                    ]),\n                    getU16Decoder(),\n                ),\n            ],\n        ],\n        { size: getU16Decoder() },\n    );\n}\n\nexport function getExtensionCodec(): Codec<ExtensionArgs, Extension> {\n    return combineCodec(getExtensionEncoder(), getExtensionDecoder());\n}\n\n// Data Enum Helpers.\nexport function extension(\n    kind: 'Uninitialized',\n): GetDiscriminatedUnionVariant<ExtensionArgs, '__kind', 'Uninitialized'>;\nexport function extension(\n    kind: 'TransferFeeConfig',\n    data: GetDiscriminatedUnionVariantContent<ExtensionArgs, '__kind', 'TransferFeeConfig'>,\n): GetDiscriminatedUnionVariant<ExtensionArgs, '__kind', 'TransferFeeConfig'>;\nexport function extension(\n    kind: 'TransferFeeAmount',\n    data: GetDiscriminatedUnionVariantContent<ExtensionArgs, '__kind', 'TransferFeeAmount'>,\n): GetDiscriminatedUnionVariant<ExtensionArgs, '__kind', 'TransferFeeAmount'>;\nexport function extension(\n    kind: 'MintCloseAuthority',\n    data: GetDiscriminatedUnionVariantContent<ExtensionArgs, '__kind', 'MintCloseAuthority'>,\n): GetDiscriminatedUnionVariant<ExtensionArgs, '__kind', 'MintCloseAuthority'>;\nexport function extension(\n    kind: 'ConfidentialTransferMint',\n    data: GetDiscriminatedUnionVariantContent<ExtensionArgs, '__kind', 'ConfidentialTransferMint'>,\n): GetDiscriminatedUnionVariant<ExtensionArgs, '__kind', 'ConfidentialTransferMint'>;\nexport function extension(\n    kind: 'ConfidentialTransferAccount',\n    data: GetDiscriminatedUnionVariantContent<ExtensionArgs, '__kind', 'ConfidentialTransferAccount'>,\n): GetDiscriminatedUnionVariant<ExtensionArgs, '__kind', 'ConfidentialTransferAccount'>;\nexport function extension(\n    kind: 'DefaultAccountState',\n    data: GetDiscriminatedUnionVariantContent<ExtensionArgs, '__kind', 'DefaultAccountState'>,\n): GetDiscriminatedUnionVariant<ExtensionArgs, '__kind', 'DefaultAccountState'>;\nexport function extension(\n    kind: 'ImmutableOwner',\n    data: GetDiscriminatedUnionVariantContent<ExtensionArgs, '__kind', 'ImmutableOwner'>,\n): GetDiscriminatedUnionVariant<ExtensionArgs, '__kind', 'ImmutableOwner'>;\nexport function extension(\n    kind: 'MemoTransfer',\n    data: GetDiscriminatedUnionVariantContent<ExtensionArgs, '__kind', 'MemoTransfer'>,\n): GetDiscriminatedUnionVariant<ExtensionArgs, '__kind', 'MemoTransfer'>;\nexport function extension(\n    kind: 'NonTransferable',\n    data: GetDiscriminatedUnionVariantContent<ExtensionArgs, '__kind', 'NonTransferable'>,\n): GetDiscriminatedUnionVariant<ExtensionArgs, '__kind', 'NonTransferable'>;\nexport function extension(\n    kind: 'InterestBearingConfig',\n    data: GetDiscriminatedUnionVariantContent<ExtensionArgs, '__kind', 'InterestBearingConfig'>,\n): GetDiscriminatedUnionVariant<ExtensionArgs, '__kind', 'InterestBearingConfig'>;\nexport function extension(\n    kind: 'CpiGuard',\n    data: GetDiscriminatedUnionVariantContent<ExtensionArgs, '__kind', 'CpiGuard'>,\n): GetDiscriminatedUnionVariant<ExtensionArgs, '__kind', 'CpiGuard'>;\nexport function extension(\n    kind: 'PermanentDelegate',\n    data: GetDiscriminatedUnionVariantContent<ExtensionArgs, '__kind', 'PermanentDelegate'>,\n): GetDiscriminatedUnionVariant<ExtensionArgs, '__kind', 'PermanentDelegate'>;\nexport function extension(\n    kind: 'NonTransferableAccount',\n    data: GetDiscriminatedUnionVariantContent<ExtensionArgs, '__kind', 'NonTransferableAccount'>,\n): GetDiscriminatedUnionVariant<ExtensionArgs, '__kind', 'NonTransferableAccount'>;\nexport function extension(\n    kind: 'TransferHook',\n    data: GetDiscriminatedUnionVariantContent<ExtensionArgs, '__kind', 'TransferHook'>,\n): GetDiscriminatedUnionVariant<ExtensionArgs, '__kind', 'TransferHook'>;\nexport function extension(\n    kind: 'TransferHookAccount',\n    data: GetDiscriminatedUnionVariantContent<ExtensionArgs, '__kind', 'TransferHookAccount'>,\n): GetDiscriminatedUnionVariant<ExtensionArgs, '__kind', 'TransferHookAccount'>;\nexport function extension(\n    kind: 'ConfidentialTransferFee',\n    data: GetDiscriminatedUnionVariantContent<ExtensionArgs, '__kind', 'ConfidentialTransferFee'>,\n): GetDiscriminatedUnionVariant<ExtensionArgs, '__kind', 'ConfidentialTransferFee'>;\nexport function extension(\n    kind: 'ConfidentialTransferFeeAmount',\n    data: GetDiscriminatedUnionVariantContent<ExtensionArgs, '__kind', 'ConfidentialTransferFeeAmount'>,\n): GetDiscriminatedUnionVariant<ExtensionArgs, '__kind', 'ConfidentialTransferFeeAmount'>;\nexport function extension(\n    kind: 'MetadataPointer',\n    data: GetDiscriminatedUnionVariantContent<ExtensionArgs, '__kind', 'MetadataPointer'>,\n): GetDiscriminatedUnionVariant<ExtensionArgs, '__kind', 'MetadataPointer'>;\nexport function extension(\n    kind: 'TokenMetadata',\n    data: GetDiscriminatedUnionVariantContent<ExtensionArgs, '__kind', 'TokenMetadata'>,\n): GetDiscriminatedUnionVariant<ExtensionArgs, '__kind', 'TokenMetadata'>;\nexport function extension(\n    kind: 'GroupPointer',\n    data: GetDiscriminatedUnionVariantContent<ExtensionArgs, '__kind', 'GroupPointer'>,\n): GetDiscriminatedUnionVariant<ExtensionArgs, '__kind', 'GroupPointer'>;\nexport function extension(\n    kind: 'TokenGroup',\n    data: GetDiscriminatedUnionVariantContent<ExtensionArgs, '__kind', 'TokenGroup'>,\n): GetDiscriminatedUnionVariant<ExtensionArgs, '__kind', 'TokenGroup'>;\nexport function extension(\n    kind: 'GroupMemberPointer',\n    data: GetDiscriminatedUnionVariantContent<ExtensionArgs, '__kind', 'GroupMemberPointer'>,\n): GetDiscriminatedUnionVariant<ExtensionArgs, '__kind', 'GroupMemberPointer'>;\nexport function extension(\n    kind: 'TokenGroupMember',\n    data: GetDiscriminatedUnionVariantContent<ExtensionArgs, '__kind', 'TokenGroupMember'>,\n): GetDiscriminatedUnionVariant<ExtensionArgs, '__kind', 'TokenGroupMember'>;\nexport function extension(\n    kind: 'ConfidentialMintBurn',\n    data: GetDiscriminatedUnionVariantContent<ExtensionArgs, '__kind', 'ConfidentialMintBurn'>,\n): GetDiscriminatedUnionVariant<ExtensionArgs, '__kind', 'ConfidentialMintBurn'>;\nexport function extension(\n    kind: 'ScaledUiAmountConfig',\n    data: GetDiscriminatedUnionVariantContent<ExtensionArgs, '__kind', 'ScaledUiAmountConfig'>,\n): GetDiscriminatedUnionVariant<ExtensionArgs, '__kind', 'ScaledUiAmountConfig'>;\nexport function extension(\n    kind: 'PausableConfig',\n    data: GetDiscriminatedUnionVariantContent<ExtensionArgs, '__kind', 'PausableConfig'>,\n): GetDiscriminatedUnionVariant<ExtensionArgs, '__kind', 'PausableConfig'>;\nexport function extension(\n    kind: 'PausableAccount',\n    data: GetDiscriminatedUnionVariantContent<ExtensionArgs, '__kind', 'PausableAccount'>,\n): GetDiscriminatedUnionVariant<ExtensionArgs, '__kind', 'PausableAccount'>;\nexport function extension(\n    kind: 'PermissionedBurn',\n    data: GetDiscriminatedUnionVariantContent<ExtensionArgs, '__kind', 'PermissionedBurn'>,\n): GetDiscriminatedUnionVariant<ExtensionArgs, '__kind', 'PermissionedBurn'>;\nexport function extension<K extends ExtensionArgs['__kind'], Data>(kind: K, data?: Data) {\n    return Array.isArray(data) ? { __kind: kind, fields: data } : { __kind: kind, ...(data ?? {}) };\n}\n\nexport function isExtension<K extends Extension['__kind']>(\n    kind: K,\n    value: Extension,\n): value is Extension & { __kind: K } {\n    return value.__kind === kind;\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    combineCodec,\n    getEnumDecoder,\n    getEnumEncoder,\n    getU16Decoder,\n    getU16Encoder,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n} from '@solana/kit';\n\n/**\n * Extensions that can be applied to mints or accounts.  Mint extensions must\n * only be applied to mint accounts, and account extensions must only be\n * applied to token holding accounts.\n */\nexport enum ExtensionType {\n    Uninitialized,\n    TransferFeeConfig,\n    TransferFeeAmount,\n    MintCloseAuthority,\n    ConfidentialTransferMint,\n    ConfidentialTransferAccount,\n    DefaultAccountState,\n    ImmutableOwner,\n    MemoTransfer,\n    NonTransferable,\n    InterestBearingConfig,\n    CpiGuard,\n    PermanentDelegate,\n    NonTransferableAccount,\n    TransferHook,\n    TransferHookAccount,\n    ConfidentialTransferFee,\n    ConfidentialTransferFeeAmount,\n    ScaledUiAmountConfig,\n    PausableConfig,\n    PausableAccount,\n    MetadataPointer,\n    TokenMetadata,\n    GroupPointer,\n    TokenGroup,\n    GroupMemberPointer,\n    TokenGroupMember,\n}\n\nexport type ExtensionTypeArgs = ExtensionType;\n\nexport function getExtensionTypeEncoder(): FixedSizeEncoder<ExtensionTypeArgs> {\n    return getEnumEncoder(ExtensionType, { size: getU16Encoder() });\n}\n\nexport function getExtensionTypeDecoder(): FixedSizeDecoder<ExtensionType> {\n    return getEnumDecoder(ExtensionType, { size: getU16Decoder() });\n}\n\nexport function getExtensionTypeCodec(): FixedSizeCodec<ExtensionTypeArgs, ExtensionType> {\n    return combineCodec(getExtensionTypeEncoder(), getExtensionTypeDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    addDecoderSizePrefix,\n    addEncoderSizePrefix,\n    combineCodec,\n    getDiscriminatedUnionDecoder,\n    getDiscriminatedUnionEncoder,\n    getStructDecoder,\n    getStructEncoder,\n    getTupleDecoder,\n    getTupleEncoder,\n    getU32Decoder,\n    getU32Encoder,\n    getUnitDecoder,\n    getUnitEncoder,\n    getUtf8Decoder,\n    getUtf8Encoder,\n    type Codec,\n    type Decoder,\n    type Encoder,\n    type GetDiscriminatedUnionVariant,\n    type GetDiscriminatedUnionVariantContent,\n} from '@solana/kit';\n\n/** Fields in the metadata account, used for updating. */\nexport type TokenMetadataField =\n    | { __kind: 'Name' }\n    | { __kind: 'Symbol' }\n    | { __kind: 'Uri' }\n    | { __kind: 'Key'; fields: readonly [string] };\n\nexport type TokenMetadataFieldArgs = TokenMetadataField;\n\nexport function getTokenMetadataFieldEncoder(): Encoder<TokenMetadataFieldArgs> {\n    return getDiscriminatedUnionEncoder([\n        ['Name', getUnitEncoder()],\n        ['Symbol', getUnitEncoder()],\n        ['Uri', getUnitEncoder()],\n        [\n            'Key',\n            getStructEncoder([['fields', getTupleEncoder([addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())])]]),\n        ],\n    ]);\n}\n\nexport function getTokenMetadataFieldDecoder(): Decoder<TokenMetadataField> {\n    return getDiscriminatedUnionDecoder([\n        ['Name', getUnitDecoder()],\n        ['Symbol', getUnitDecoder()],\n        ['Uri', getUnitDecoder()],\n        [\n            'Key',\n            getStructDecoder([['fields', getTupleDecoder([addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())])]]),\n        ],\n    ]);\n}\n\nexport function getTokenMetadataFieldCodec(): Codec<TokenMetadataFieldArgs, TokenMetadataField> {\n    return combineCodec(getTokenMetadataFieldEncoder(), getTokenMetadataFieldDecoder());\n}\n\n// Data Enum Helpers.\nexport function tokenMetadataField(\n    kind: 'Name',\n): GetDiscriminatedUnionVariant<TokenMetadataFieldArgs, '__kind', 'Name'>;\nexport function tokenMetadataField(\n    kind: 'Symbol',\n): GetDiscriminatedUnionVariant<TokenMetadataFieldArgs, '__kind', 'Symbol'>;\nexport function tokenMetadataField(kind: 'Uri'): GetDiscriminatedUnionVariant<TokenMetadataFieldArgs, '__kind', 'Uri'>;\nexport function tokenMetadataField(\n    kind: 'Key',\n    data: GetDiscriminatedUnionVariantContent<TokenMetadataFieldArgs, '__kind', 'Key'>['fields'],\n): GetDiscriminatedUnionVariant<TokenMetadataFieldArgs, '__kind', 'Key'>;\nexport function tokenMetadataField<K extends TokenMetadataFieldArgs['__kind'], Data>(kind: K, data?: Data) {\n    return Array.isArray(data) ? { __kind: kind, fields: data } : { __kind: kind, ...(data ?? {}) };\n}\n\nexport function isTokenMetadataField<K extends TokenMetadataField['__kind']>(\n    kind: K,\n    value: TokenMetadataField,\n): value is TokenMetadataField & { __kind: K } {\n    return value.__kind === kind;\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    combineCodec,\n    getStructDecoder,\n    getStructEncoder,\n    getU16Decoder,\n    getU16Encoder,\n    getU64Decoder,\n    getU64Encoder,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type TransferFee = {\n    /** First epoch where the transfer fee takes effect. */\n    epoch: bigint;\n    /** Maximum fee assessed on transfers, expressed as an amount of tokens. */\n    maximumFee: bigint;\n    /**\n     * Amount of transfer collected as fees, expressed as basis points of the\n     * transfer amount, ie. increments of 0.01%.\n     */\n    transferFeeBasisPoints: number;\n};\n\nexport type TransferFeeArgs = {\n    /** First epoch where the transfer fee takes effect. */\n    epoch: number | bigint;\n    /** Maximum fee assessed on transfers, expressed as an amount of tokens. */\n    maximumFee: number | bigint;\n    /**\n     * Amount of transfer collected as fees, expressed as basis points of the\n     * transfer amount, ie. increments of 0.01%.\n     */\n    transferFeeBasisPoints: number;\n};\n\nexport function getTransferFeeEncoder(): FixedSizeEncoder<TransferFeeArgs> {\n    return getStructEncoder([\n        ['epoch', getU64Encoder()],\n        ['maximumFee', getU64Encoder()],\n        ['transferFeeBasisPoints', getU16Encoder()],\n    ]);\n}\n\nexport function getTransferFeeDecoder(): FixedSizeDecoder<TransferFee> {\n    return getStructDecoder([\n        ['epoch', getU64Decoder()],\n        ['maximumFee', getU64Decoder()],\n        ['transferFeeBasisPoints', getU16Decoder()],\n    ]);\n}\n\nexport function getTransferFeeCodec(): FixedSizeCodec<TransferFeeArgs, TransferFee> {\n    return combineCodec(getTransferFeeEncoder(), getTransferFeeDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    assertAccountExists,\n    assertAccountsExist,\n    combineCodec,\n    decodeAccount,\n    fetchEncodedAccount,\n    fetchEncodedAccounts,\n    getAddressDecoder,\n    getAddressEncoder,\n    getArrayDecoder,\n    getArrayEncoder,\n    getBooleanDecoder,\n    getBooleanEncoder,\n    getConstantDecoder,\n    getConstantEncoder,\n    getHiddenPrefixDecoder,\n    getHiddenPrefixEncoder,\n    getOptionDecoder,\n    getOptionEncoder,\n    getStructDecoder,\n    getStructEncoder,\n    getU32Decoder,\n    getU32Encoder,\n    getU64Decoder,\n    getU64Encoder,\n    getU8Decoder,\n    getU8Encoder,\n    padLeftEncoder,\n    type Account,\n    type Address,\n    type Codec,\n    type Decoder,\n    type EncodedAccount,\n    type Encoder,\n    type FetchAccountConfig,\n    type FetchAccountsConfig,\n    type MaybeAccount,\n    type MaybeEncodedAccount,\n    type Option,\n    type OptionOrNullable,\n} from '@solana/kit';\nimport { getExtensionDecoder, getExtensionEncoder, type Extension, type ExtensionArgs } from '../types';\n\nexport type Mint = {\n    /**\n     * Optional authority used to mint new tokens. The mint authority may only\n     * be provided during mint creation. If no mint authority is present\n     * then the mint has a fixed supply and no further tokens may be minted.\n     */\n    mintAuthority: Option<Address>;\n    /** Total supply of tokens. */\n    supply: bigint;\n    /** Number of base 10 digits to the right of the decimal place. */\n    decimals: number;\n    /** Is `true` if this structure has been initialized. */\n    isInitialized: boolean;\n    /** Optional authority to freeze token accounts. */\n    freezeAuthority: Option<Address>;\n    /** The extensions activated on the mint account. */\n    extensions: Option<Array<Extension>>;\n};\n\nexport type MintArgs = {\n    /**\n     * Optional authority used to mint new tokens. The mint authority may only\n     * be provided during mint creation. If no mint authority is present\n     * then the mint has a fixed supply and no further tokens may be minted.\n     */\n    mintAuthority: OptionOrNullable<Address>;\n    /** Total supply of tokens. */\n    supply: number | bigint;\n    /** Number of base 10 digits to the right of the decimal place. */\n    decimals: number;\n    /** Is `true` if this structure has been initialized. */\n    isInitialized: boolean;\n    /** Optional authority to freeze token accounts. */\n    freezeAuthority: OptionOrNullable<Address>;\n    /** The extensions activated on the mint account. */\n    extensions: OptionOrNullable<Array<ExtensionArgs>>;\n};\n\n/** Gets the encoder for {@link MintArgs} account data. */\nexport function getMintEncoder(): Encoder<MintArgs> {\n    return getStructEncoder([\n        ['mintAuthority', getOptionEncoder(getAddressEncoder(), { prefix: getU32Encoder(), noneValue: 'zeroes' })],\n        ['supply', getU64Encoder()],\n        ['decimals', getU8Encoder()],\n        ['isInitialized', getBooleanEncoder()],\n        ['freezeAuthority', getOptionEncoder(getAddressEncoder(), { prefix: getU32Encoder(), noneValue: 'zeroes' })],\n        [\n            'extensions',\n            getOptionEncoder(\n                getHiddenPrefixEncoder(getArrayEncoder(getExtensionEncoder(), { size: 'remainder' }), [\n                    getConstantEncoder(padLeftEncoder(getU8Encoder(), 83).encode(1)),\n                ]),\n                { prefix: null },\n            ),\n        ],\n    ]);\n}\n\n/** Gets the decoder for {@link Mint} account data. */\nexport function getMintDecoder(): Decoder<Mint> {\n    return getStructDecoder([\n        ['mintAuthority', getOptionDecoder(getAddressDecoder(), { prefix: getU32Decoder(), noneValue: 'zeroes' })],\n        ['supply', getU64Decoder()],\n        ['decimals', getU8Decoder()],\n        ['isInitialized', getBooleanDecoder()],\n        ['freezeAuthority', getOptionDecoder(getAddressDecoder(), { prefix: getU32Decoder(), noneValue: 'zeroes' })],\n        [\n            'extensions',\n            getOptionDecoder(\n                getHiddenPrefixDecoder(getArrayDecoder(getExtensionDecoder(), { size: 'remainder' }), [\n                    getConstantDecoder(padLeftEncoder(getU8Encoder(), 83).encode(1)),\n                ]),\n                { prefix: null },\n            ),\n        ],\n    ]);\n}\n\n/** Gets the codec for {@link Mint} account data. */\nexport function getMintCodec(): Codec<MintArgs, Mint> {\n    return combineCodec(getMintEncoder(), getMintDecoder());\n}\n\nexport function decodeMint<TAddress extends string = string>(\n    encodedAccount: EncodedAccount<TAddress>,\n): Account<Mint, TAddress>;\nexport function decodeMint<TAddress extends string = string>(\n    encodedAccount: MaybeEncodedAccount<TAddress>,\n): MaybeAccount<Mint, TAddress>;\nexport function decodeMint<TAddress extends string = string>(\n    encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>,\n): Account<Mint, TAddress> | MaybeAccount<Mint, TAddress> {\n    return decodeAccount(encodedAccount as MaybeEncodedAccount<TAddress>, getMintDecoder());\n}\n\nexport async function fetchMint<TAddress extends string = string>(\n    rpc: Parameters<typeof fetchEncodedAccount>[0],\n    address: Address<TAddress>,\n    config?: FetchAccountConfig,\n): Promise<Account<Mint, TAddress>> {\n    const maybeAccount = await fetchMaybeMint(rpc, address, config);\n    assertAccountExists(maybeAccount);\n    return maybeAccount;\n}\n\nexport async function fetchMaybeMint<TAddress extends string = string>(\n    rpc: Parameters<typeof fetchEncodedAccount>[0],\n    address: Address<TAddress>,\n    config?: FetchAccountConfig,\n): Promise<MaybeAccount<Mint, TAddress>> {\n    const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n    return decodeMint(maybeAccount);\n}\n\nexport async function fetchAllMint(\n    rpc: Parameters<typeof fetchEncodedAccounts>[0],\n    addresses: Array<Address>,\n    config?: FetchAccountsConfig,\n): Promise<Account<Mint>[]> {\n    const maybeAccounts = await fetchAllMaybeMint(rpc, addresses, config);\n    assertAccountsExist(maybeAccounts);\n    return maybeAccounts;\n}\n\nexport async function fetchAllMaybeMint(\n    rpc: Parameters<typeof fetchEncodedAccounts>[0],\n    addresses: Array<Address>,\n    config?: FetchAccountsConfig,\n): Promise<MaybeAccount<Mint>[]> {\n    const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n    return maybeAccounts.map(maybeAccount => decodeMint(maybeAccount));\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    assertAccountExists,\n    assertAccountsExist,\n    combineCodec,\n    decodeAccount,\n    fetchEncodedAccount,\n    fetchEncodedAccounts,\n    getAddressDecoder,\n    getAddressEncoder,\n    getArrayDecoder,\n    getArrayEncoder,\n    getBooleanDecoder,\n    getBooleanEncoder,\n    getStructDecoder,\n    getStructEncoder,\n    getU8Decoder,\n    getU8Encoder,\n    type Account,\n    type Address,\n    type EncodedAccount,\n    type FetchAccountConfig,\n    type FetchAccountsConfig,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type MaybeAccount,\n    type MaybeEncodedAccount,\n} from '@solana/kit';\n\nexport type Multisig = {\n    /** Number of signers required. */\n    m: number;\n    /** Number of valid signers. */\n    n: number;\n    /** Is `true` if this structure has been initialized. */\n    isInitialized: boolean;\n    /** Signer public keys. */\n    signers: Array<Address>;\n};\n\nexport type MultisigArgs = Multisig;\n\n/** Gets the encoder for {@link MultisigArgs} account data. */\nexport function getMultisigEncoder(): FixedSizeEncoder<MultisigArgs> {\n    return getStructEncoder([\n        ['m', getU8Encoder()],\n        ['n', getU8Encoder()],\n        ['isInitialized', getBooleanEncoder()],\n        ['signers', getArrayEncoder(getAddressEncoder(), { size: 11 })],\n    ]);\n}\n\n/** Gets the decoder for {@link Multisig} account data. */\nexport function getMultisigDecoder(): FixedSizeDecoder<Multisig> {\n    return getStructDecoder([\n        ['m', getU8Decoder()],\n        ['n', getU8Decoder()],\n        ['isInitialized', getBooleanDecoder()],\n        ['signers', getArrayDecoder(getAddressDecoder(), { size: 11 })],\n    ]);\n}\n\n/** Gets the codec for {@link Multisig} account data. */\nexport function getMultisigCodec(): FixedSizeCodec<MultisigArgs, Multisig> {\n    return combineCodec(getMultisigEncoder(), getMultisigDecoder());\n}\n\nexport function decodeMultisig<TAddress extends string = string>(\n    encodedAccount: EncodedAccount<TAddress>,\n): Account<Multisig, TAddress>;\nexport function decodeMultisig<TAddress extends string = string>(\n    encodedAccount: MaybeEncodedAccount<TAddress>,\n): MaybeAccount<Multisig, TAddress>;\nexport function decodeMultisig<TAddress extends string = string>(\n    encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>,\n): Account<Multisig, TAddress> | MaybeAccount<Multisig, TAddress> {\n    return decodeAccount(encodedAccount as MaybeEncodedAccount<TAddress>, getMultisigDecoder());\n}\n\nexport async function fetchMultisig<TAddress extends string = string>(\n    rpc: Parameters<typeof fetchEncodedAccount>[0],\n    address: Address<TAddress>,\n    config?: FetchAccountConfig,\n): Promise<Account<Multisig, TAddress>> {\n    const maybeAccount = await fetchMaybeMultisig(rpc, address, config);\n    assertAccountExists(maybeAccount);\n    return maybeAccount;\n}\n\nexport async function fetchMaybeMultisig<TAddress extends string = string>(\n    rpc: Parameters<typeof fetchEncodedAccount>[0],\n    address: Address<TAddress>,\n    config?: FetchAccountConfig,\n): Promise<MaybeAccount<Multisig, TAddress>> {\n    const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n    return decodeMultisig(maybeAccount);\n}\n\nexport async function fetchAllMultisig(\n    rpc: Parameters<typeof fetchEncodedAccounts>[0],\n    addresses: Array<Address>,\n    config?: FetchAccountsConfig,\n): Promise<Account<Multisig>[]> {\n    const maybeAccounts = await fetchAllMaybeMultisig(rpc, addresses, config);\n    assertAccountsExist(maybeAccounts);\n    return maybeAccounts;\n}\n\nexport async function fetchAllMaybeMultisig(\n    rpc: Parameters<typeof fetchEncodedAccounts>[0],\n    addresses: Array<Address>,\n    config?: FetchAccountsConfig,\n): Promise<MaybeAccount<Multisig>[]> {\n    const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n    return maybeAccounts.map(maybeAccount => decodeMultisig(maybeAccount));\n}\n\nexport function getMultisigSize(): number {\n    return 355;\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    assertAccountExists,\n    assertAccountsExist,\n    combineCodec,\n    decodeAccount,\n    fetchEncodedAccount,\n    fetchEncodedAccounts,\n    getAddressDecoder,\n    getAddressEncoder,\n    getArrayDecoder,\n    getArrayEncoder,\n    getConstantDecoder,\n    getConstantEncoder,\n    getHiddenPrefixDecoder,\n    getHiddenPrefixEncoder,\n    getOptionDecoder,\n    getOptionEncoder,\n    getStructDecoder,\n    getStructEncoder,\n    getU32Decoder,\n    getU32Encoder,\n    getU64Decoder,\n    getU64Encoder,\n    getU8Encoder,\n    type Account,\n    type Address,\n    type Codec,\n    type Decoder,\n    type EncodedAccount,\n    type Encoder,\n    type FetchAccountConfig,\n    type FetchAccountsConfig,\n    type MaybeAccount,\n    type MaybeEncodedAccount,\n    type Option,\n    type OptionOrNullable,\n} from '@solana/kit';\nimport {\n    getAccountStateDecoder,\n    getAccountStateEncoder,\n    getExtensionDecoder,\n    getExtensionEncoder,\n    type AccountState,\n    type AccountStateArgs,\n    type Extension,\n    type ExtensionArgs,\n} from '../types';\n\nexport type Token = {\n    /** The mint associated with this account. */\n    mint: Address;\n    /** The owner of this account. */\n    owner: Address;\n    /** The amount of tokens this account holds. */\n    amount: bigint;\n    /**\n     * If `delegate` is `Some` then `delegated_amount` represents\n     * the amount authorized by the delegate.\n     */\n    delegate: Option<Address>;\n    /** The account's state. */\n    state: AccountState;\n    /**\n     * If is_native.is_some, this is a native token, and the value logs the\n     * rent-exempt reserve. An Account is required to be rent-exempt, so\n     * the value is used by the Processor to ensure that wrapped SOL\n     * accounts do not drop below this threshold.\n     */\n    isNative: Option<bigint>;\n    /** The amount delegated. */\n    delegatedAmount: bigint;\n    /** Optional authority to close the account. */\n    closeAuthority: Option<Address>;\n    /** The extensions activated on the token account. */\n    extensions: Option<Array<Extension>>;\n};\n\nexport type TokenArgs = {\n    /** The mint associated with this account. */\n    mint: Address;\n    /** The owner of this account. */\n    owner: Address;\n    /** The amount of tokens this account holds. */\n    amount: number | bigint;\n    /**\n     * If `delegate` is `Some` then `delegated_amount` represents\n     * the amount authorized by the delegate.\n     */\n    delegate: OptionOrNullable<Address>;\n    /** The account's state. */\n    state: AccountStateArgs;\n    /**\n     * If is_native.is_some, this is a native token, and the value logs the\n     * rent-exempt reserve. An Account is required to be rent-exempt, so\n     * the value is used by the Processor to ensure that wrapped SOL\n     * accounts do not drop below this threshold.\n     */\n    isNative: OptionOrNullable<number | bigint>;\n    /** The amount delegated. */\n    delegatedAmount: number | bigint;\n    /** Optional authority to close the account. */\n    closeAuthority: OptionOrNullable<Address>;\n    /** The extensions activated on the token account. */\n    extensions: OptionOrNullable<Array<ExtensionArgs>>;\n};\n\n/** Gets the encoder for {@link TokenArgs} account data. */\nexport function getTokenEncoder(): Encoder<TokenArgs> {\n    return getStructEncoder([\n        ['mint', getAddressEncoder()],\n        ['owner', getAddressEncoder()],\n        ['amount', getU64Encoder()],\n        ['delegate', getOptionEncoder(getAddressEncoder(), { prefix: getU32Encoder(), noneValue: 'zeroes' })],\n        ['state', getAccountStateEncoder()],\n        ['isNative', getOptionEncoder(getU64Encoder(), { prefix: getU32Encoder(), noneValue: 'zeroes' })],\n        ['delegatedAmount', getU64Encoder()],\n        ['closeAuthority', getOptionEncoder(getAddressEncoder(), { prefix: getU32Encoder(), noneValue: 'zeroes' })],\n        [\n            'extensions',\n            getOptionEncoder(\n                getHiddenPrefixEncoder(getArrayEncoder(getExtensionEncoder(), { size: 'remainder' }), [\n                    getConstantEncoder(getU8Encoder().encode(2)),\n                ]),\n                { prefix: null },\n            ),\n        ],\n    ]);\n}\n\n/** Gets the decoder for {@link Token} account data. */\nexport function getTokenDecoder(): Decoder<Token> {\n    return getStructDecoder([\n        ['mint', getAddressDecoder()],\n        ['owner', getAddressDecoder()],\n        ['amount', getU64Decoder()],\n        ['delegate', getOptionDecoder(getAddressDecoder(), { prefix: getU32Decoder(), noneValue: 'zeroes' })],\n        ['state', getAccountStateDecoder()],\n        ['isNative', getOptionDecoder(getU64Decoder(), { prefix: getU32Decoder(), noneValue: 'zeroes' })],\n        ['delegatedAmount', getU64Decoder()],\n        ['closeAuthority', getOptionDecoder(getAddressDecoder(), { prefix: getU32Decoder(), noneValue: 'zeroes' })],\n        [\n            'extensions',\n            getOptionDecoder(\n                getHiddenPrefixDecoder(getArrayDecoder(getExtensionDecoder(), { size: 'remainder' }), [\n                    getConstantDecoder(getU8Encoder().encode(2)),\n                ]),\n                { prefix: null },\n            ),\n        ],\n    ]);\n}\n\n/** Gets the codec for {@link Token} account data. */\nexport function getTokenCodec(): Codec<TokenArgs, Token> {\n    return combineCodec(getTokenEncoder(), getTokenDecoder());\n}\n\nexport function decodeToken<TAddress extends string = string>(\n    encodedAccount: EncodedAccount<TAddress>,\n): Account<Token, TAddress>;\nexport function decodeToken<TAddress extends string = string>(\n    encodedAccount: MaybeEncodedAccount<TAddress>,\n): MaybeAccount<Token, TAddress>;\nexport function decodeToken<TAddress extends string = string>(\n    encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>,\n): Account<Token, TAddress> | MaybeAccount<Token, TAddress> {\n    return decodeAccount(encodedAccount as MaybeEncodedAccount<TAddress>, getTokenDecoder());\n}\n\nexport async function fetchToken<TAddress extends string = string>(\n    rpc: Parameters<typeof fetchEncodedAccount>[0],\n    address: Address<TAddress>,\n    config?: FetchAccountConfig,\n): Promise<Account<Token, TAddress>> {\n    const maybeAccount = await fetchMaybeToken(rpc, address, config);\n    assertAccountExists(maybeAccount);\n    return maybeAccount;\n}\n\nexport async function fetchMaybeToken<TAddress extends string = string>(\n    rpc: Parameters<typeof fetchEncodedAccount>[0],\n    address: Address<TAddress>,\n    config?: FetchAccountConfig,\n): Promise<MaybeAccount<Token, TAddress>> {\n    const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n    return decodeToken(maybeAccount);\n}\n\nexport async function fetchAllToken(\n    rpc: Parameters<typeof fetchEncodedAccounts>[0],\n    addresses: Array<Address>,\n    config?: FetchAccountsConfig,\n): Promise<Account<Token>[]> {\n    const maybeAccounts = await fetchAllMaybeToken(rpc, addresses, config);\n    assertAccountsExist(maybeAccounts);\n    return maybeAccounts;\n}\n\nexport async function fetchAllMaybeToken(\n    rpc: Parameters<typeof fetchEncodedAccounts>[0],\n    addresses: Array<Address>,\n    config?: FetchAccountsConfig,\n): Promise<MaybeAccount<Token>[]> {\n    const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n    return maybeAccounts.map(maybeAccount => decodeToken(maybeAccount));\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    AccountRole,\n    isProgramDerivedAddress,\n    isTransactionSigner as kitIsTransactionSigner,\n    type AccountMeta,\n    type AccountSignerMeta,\n    type Address,\n    type ProgramDerivedAddress,\n    type TransactionSigner,\n    upgradeRoleToSigner,\n} from '@solana/kit';\n\n/**\n * Asserts that the given value is not null or undefined.\n * @internal\n */\nexport function expectSome<T>(value: T | null | undefined): T {\n    if (value === null || value === undefined) {\n        throw new Error('Expected a value but received null or undefined.');\n    }\n    return value;\n}\n\n/**\n * Asserts that the given value is a PublicKey.\n * @internal\n */\nexport function expectAddress<T extends string = string>(\n    value: Address<T> | ProgramDerivedAddress<T> | TransactionSigner<T> | null | undefined,\n): Address<T> {\n    if (!value) {\n        throw new Error('Expected a Address.');\n    }\n    if (typeof value === 'object' && 'address' in value) {\n        return value.address;\n    }\n    if (Array.isArray(value)) {\n        return value[0] as Address<T>;\n    }\n    return value as Address<T>;\n}\n\n/**\n * Asserts that the given value is a PDA.\n * @internal\n */\nexport function expectProgramDerivedAddress<T extends string = string>(\n    value: Address<T> | ProgramDerivedAddress<T> | TransactionSigner<T> | null | undefined,\n): ProgramDerivedAddress<T> {\n    if (!value || !Array.isArray(value) || !isProgramDerivedAddress(value)) {\n        throw new Error('Expected a ProgramDerivedAddress.');\n    }\n    return value;\n}\n\n/**\n * Asserts that the given value is a TransactionSigner.\n * @internal\n */\nexport function expectTransactionSigner<T extends string = string>(\n    value: Address<T> | ProgramDerivedAddress<T> | TransactionSigner<T> | null | undefined,\n): TransactionSigner<T> {\n    if (!value || !isTransactionSigner(value)) {\n        throw new Error('Expected a TransactionSigner.');\n    }\n    return value;\n}\n\n/**\n * Defines an instruction account to resolve.\n * @internal\n */\nexport type ResolvedAccount<\n    T extends string = string,\n    U extends Address<T> | ProgramDerivedAddress<T> | TransactionSigner<T> | null =\n        | Address<T>\n        | ProgramDerivedAddress<T>\n        | TransactionSigner<T>\n        | null,\n> = {\n    isWritable: boolean;\n    value: U;\n};\n\n/**\n * Defines an instruction that stores additional bytes on-chain.\n * @internal\n */\nexport type InstructionWithByteDelta = {\n    byteDelta: number;\n};\n\n/**\n * Get account metas and signers from resolved accounts.\n * @internal\n */\nexport function getAccountMetaFactory(programAddress: Address, optionalAccountStrategy: 'omitted' | 'programId') {\n    return (account: ResolvedAccount): AccountMeta | AccountSignerMeta | undefined => {\n        if (!account.value) {\n            if (optionalAccountStrategy === 'omitted') return;\n            return Object.freeze({ address: programAddress, role: AccountRole.READONLY });\n        }\n\n        const writableRole = account.isWritable ? AccountRole.WRITABLE : AccountRole.READONLY;\n        return Object.freeze({\n            address: expectAddress(account.value),\n            role: isTransactionSigner(account.value) ? upgradeRoleToSigner(writableRole) : writableRole,\n            ...(isTransactionSigner(account.value) ? { signer: account.value } : {}),\n        });\n    };\n}\n\nexport function isTransactionSigner<TAddress extends string = string>(\n    value: Address<TAddress> | ProgramDerivedAddress<TAddress> | TransactionSigner<TAddress>,\n): value is TransactionSigner<TAddress> {\n    return !!value && typeof value === 'object' && 'address' in value && kitIsTransactionSigner(value);\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    combineCodec,\n    getStructDecoder,\n    getStructEncoder,\n    getU64Decoder,\n    getU64Encoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlyAccount,\n    type ReadonlyUint8Array,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const AMOUNT_TO_UI_AMOUNT_DISCRIMINATOR = 23;\n\nexport function getAmountToUiAmountDiscriminatorBytes() {\n    return getU8Encoder().encode(AMOUNT_TO_UI_AMOUNT_DISCRIMINATOR);\n}\n\nexport type AmountToUiAmountInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMint extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [TAccountMint extends string ? ReadonlyAccount<TAccountMint> : TAccountMint, ...TRemainingAccounts]\n    >;\n\nexport type AmountToUiAmountInstructionData = {\n    discriminator: number;\n    /** The amount of tokens to reformat. */\n    amount: bigint;\n};\n\nexport type AmountToUiAmountInstructionDataArgs = {\n    /** The amount of tokens to reformat. */\n    amount: number | bigint;\n};\n\nexport function getAmountToUiAmountInstructionDataEncoder(): FixedSizeEncoder<AmountToUiAmountInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['amount', getU64Encoder()],\n        ]),\n        value => ({ ...value, discriminator: AMOUNT_TO_UI_AMOUNT_DISCRIMINATOR }),\n    );\n}\n\nexport function getAmountToUiAmountInstructionDataDecoder(): FixedSizeDecoder<AmountToUiAmountInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['amount', getU64Decoder()],\n    ]);\n}\n\nexport function getAmountToUiAmountInstructionDataCodec(): FixedSizeCodec<\n    AmountToUiAmountInstructionDataArgs,\n    AmountToUiAmountInstructionData\n> {\n    return combineCodec(getAmountToUiAmountInstructionDataEncoder(), getAmountToUiAmountInstructionDataDecoder());\n}\n\nexport type AmountToUiAmountInput<TAccountMint extends string = string> = {\n    /** The mint to calculate for. */\n    mint: Address<TAccountMint>;\n    amount: AmountToUiAmountInstructionDataArgs['amount'];\n};\n\nexport function getAmountToUiAmountInstruction<\n    TAccountMint extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: AmountToUiAmountInput<TAccountMint>,\n    config?: { programAddress?: TProgramAddress },\n): AmountToUiAmountInstruction<TProgramAddress, TAccountMint> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = { mint: { value: input.mint ?? null, isWritable: false } };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [getAccountMeta(accounts.mint)],\n        data: getAmountToUiAmountInstructionDataEncoder().encode(args as AmountToUiAmountInstructionDataArgs),\n        programAddress,\n    } as AmountToUiAmountInstruction<TProgramAddress, TAccountMint>);\n}\n\nexport type ParsedAmountToUiAmountInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The mint to calculate for. */\n        mint: TAccountMetas[0];\n    };\n    data: AmountToUiAmountInstructionData;\n};\n\nexport function parseAmountToUiAmountInstruction<TProgram extends string, TAccountMetas extends readonly AccountMeta[]>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedAmountToUiAmountInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 1) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { mint: getNextAccount() },\n        data: getAmountToUiAmountInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    AccountRole,\n    combineCodec,\n    getStructDecoder,\n    getStructEncoder,\n    getU64Decoder,\n    getU64Encoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type AccountSignerMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlyAccount,\n    type ReadonlySignerAccount,\n    type ReadonlyUint8Array,\n    type TransactionSigner,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\nimport {\n    getDecryptableBalanceDecoder,\n    getDecryptableBalanceEncoder,\n    type DecryptableBalance,\n    type DecryptableBalanceArgs,\n} from '../types';\n\nexport const APPLY_CONFIDENTIAL_PENDING_BALANCE_DISCRIMINATOR = 27;\n\nexport function getApplyConfidentialPendingBalanceDiscriminatorBytes() {\n    return getU8Encoder().encode(APPLY_CONFIDENTIAL_PENDING_BALANCE_DISCRIMINATOR);\n}\n\nexport const APPLY_CONFIDENTIAL_PENDING_BALANCE_CONFIDENTIAL_TRANSFER_DISCRIMINATOR = 8;\n\nexport function getApplyConfidentialPendingBalanceConfidentialTransferDiscriminatorBytes() {\n    return getU8Encoder().encode(APPLY_CONFIDENTIAL_PENDING_BALANCE_CONFIDENTIAL_TRANSFER_DISCRIMINATOR);\n}\n\nexport type ApplyConfidentialPendingBalanceInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountToken extends string | AccountMeta<string> = string,\n    TAccountAuthority extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [\n            TAccountToken extends string ? WritableAccount<TAccountToken> : TAccountToken,\n            TAccountAuthority extends string ? ReadonlyAccount<TAccountAuthority> : TAccountAuthority,\n            ...TRemainingAccounts,\n        ]\n    >;\n\nexport type ApplyConfidentialPendingBalanceInstructionData = {\n    discriminator: number;\n    confidentialTransferDiscriminator: number;\n    /**\n     * The expected number of pending balance credits since the last successful\n     * `ApplyPendingBalance` instruction\n     */\n    expectedPendingBalanceCreditCounter: bigint;\n    /**\n     * The new decryptable balance if the pending balance is applied\n     * successfully\n     */\n    newDecryptableAvailableBalance: DecryptableBalance;\n};\n\nexport type ApplyConfidentialPendingBalanceInstructionDataArgs = {\n    /**\n     * The expected number of pending balance credits since the last successful\n     * `ApplyPendingBalance` instruction\n     */\n    expectedPendingBalanceCreditCounter: number | bigint;\n    /**\n     * The new decryptable balance if the pending balance is applied\n     * successfully\n     */\n    newDecryptableAvailableBalance: DecryptableBalanceArgs;\n};\n\nexport function getApplyConfidentialPendingBalanceInstructionDataEncoder(): FixedSizeEncoder<ApplyConfidentialPendingBalanceInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['confidentialTransferDiscriminator', getU8Encoder()],\n            ['expectedPendingBalanceCreditCounter', getU64Encoder()],\n            ['newDecryptableAvailableBalance', getDecryptableBalanceEncoder()],\n        ]),\n        value => ({\n            ...value,\n            discriminator: APPLY_CONFIDENTIAL_PENDING_BALANCE_DISCRIMINATOR,\n            confidentialTransferDiscriminator: APPLY_CONFIDENTIAL_PENDING_BALANCE_CONFIDENTIAL_TRANSFER_DISCRIMINATOR,\n        }),\n    );\n}\n\nexport function getApplyConfidentialPendingBalanceInstructionDataDecoder(): FixedSizeDecoder<ApplyConfidentialPendingBalanceInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['confidentialTransferDiscriminator', getU8Decoder()],\n        ['expectedPendingBalanceCreditCounter', getU64Decoder()],\n        ['newDecryptableAvailableBalance', getDecryptableBalanceDecoder()],\n    ]);\n}\n\nexport function getApplyConfidentialPendingBalanceInstructionDataCodec(): FixedSizeCodec<\n    ApplyConfidentialPendingBalanceInstructionDataArgs,\n    ApplyConfidentialPendingBalanceInstructionData\n> {\n    return combineCodec(\n        getApplyConfidentialPendingBalanceInstructionDataEncoder(),\n        getApplyConfidentialPendingBalanceInstructionDataDecoder(),\n    );\n}\n\nexport type ApplyConfidentialPendingBalanceInput<\n    TAccountToken extends string = string,\n    TAccountAuthority extends string = string,\n> = {\n    /** The SPL Token account. */\n    token: Address<TAccountToken>;\n    /** The source account's owner/delegate or its multisignature account. */\n    authority: Address<TAccountAuthority> | TransactionSigner<TAccountAuthority>;\n    expectedPendingBalanceCreditCounter: ApplyConfidentialPendingBalanceInstructionDataArgs['expectedPendingBalanceCreditCounter'];\n    newDecryptableAvailableBalance: ApplyConfidentialPendingBalanceInstructionDataArgs['newDecryptableAvailableBalance'];\n    multiSigners?: Array<TransactionSigner>;\n};\n\nexport function getApplyConfidentialPendingBalanceInstruction<\n    TAccountToken extends string,\n    TAccountAuthority extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: ApplyConfidentialPendingBalanceInput<TAccountToken, TAccountAuthority>,\n    config?: { programAddress?: TProgramAddress },\n): ApplyConfidentialPendingBalanceInstruction<\n    TProgramAddress,\n    TAccountToken,\n    (typeof input)['authority'] extends TransactionSigner<TAccountAuthority>\n        ? ReadonlySignerAccount<TAccountAuthority> & AccountSignerMeta<TAccountAuthority>\n        : TAccountAuthority\n> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        token: { value: input.token ?? null, isWritable: true },\n        authority: { value: input.authority ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    // Remaining accounts.\n    const remainingAccounts: AccountMeta[] = (args.multiSigners ?? []).map(signer => ({\n        address: signer.address,\n        role: AccountRole.READONLY_SIGNER,\n        signer,\n    }));\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [getAccountMeta(accounts.token), getAccountMeta(accounts.authority), ...remainingAccounts],\n        data: getApplyConfidentialPendingBalanceInstructionDataEncoder().encode(\n            args as ApplyConfidentialPendingBalanceInstructionDataArgs,\n        ),\n        programAddress,\n    } as ApplyConfidentialPendingBalanceInstruction<\n        TProgramAddress,\n        TAccountToken,\n        (typeof input)['authority'] extends TransactionSigner<TAccountAuthority>\n            ? ReadonlySignerAccount<TAccountAuthority> & AccountSignerMeta<TAccountAuthority>\n            : TAccountAuthority\n    >);\n}\n\nexport type ParsedApplyConfidentialPendingBalanceInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The SPL Token account. */\n        token: TAccountMetas[0];\n        /** The source account's owner/delegate or its multisignature account. */\n        authority: TAccountMetas[1];\n    };\n    data: ApplyConfidentialPendingBalanceInstructionData;\n};\n\nexport function parseApplyConfidentialPendingBalanceInstruction<\n    TProgram extends string,\n    TAccountMetas extends readonly AccountMeta[],\n>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedApplyConfidentialPendingBalanceInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 2) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { token: getNextAccount(), authority: getNextAccount() },\n        data: getApplyConfidentialPendingBalanceInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    AccountRole,\n    combineCodec,\n    getStructDecoder,\n    getStructEncoder,\n    getU64Decoder,\n    getU64Encoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type AccountSignerMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlyAccount,\n    type ReadonlySignerAccount,\n    type ReadonlyUint8Array,\n    type TransactionSigner,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const APPROVE_DISCRIMINATOR = 4;\n\nexport function getApproveDiscriminatorBytes() {\n    return getU8Encoder().encode(APPROVE_DISCRIMINATOR);\n}\n\nexport type ApproveInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountSource extends string | AccountMeta<string> = string,\n    TAccountDelegate extends string | AccountMeta<string> = string,\n    TAccountOwner extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [\n            TAccountSource extends string ? WritableAccount<TAccountSource> : TAccountSource,\n            TAccountDelegate extends string ? ReadonlyAccount<TAccountDelegate> : TAccountDelegate,\n            TAccountOwner extends string ? ReadonlyAccount<TAccountOwner> : TAccountOwner,\n            ...TRemainingAccounts,\n        ]\n    >;\n\nexport type ApproveInstructionData = {\n    discriminator: number;\n    /** The amount of tokens the delegate is approved for. */\n    amount: bigint;\n};\n\nexport type ApproveInstructionDataArgs = {\n    /** The amount of tokens the delegate is approved for. */\n    amount: number | bigint;\n};\n\nexport function getApproveInstructionDataEncoder(): FixedSizeEncoder<ApproveInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['amount', getU64Encoder()],\n        ]),\n        value => ({ ...value, discriminator: APPROVE_DISCRIMINATOR }),\n    );\n}\n\nexport function getApproveInstructionDataDecoder(): FixedSizeDecoder<ApproveInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['amount', getU64Decoder()],\n    ]);\n}\n\nexport function getApproveInstructionDataCodec(): FixedSizeCodec<ApproveInstructionDataArgs, ApproveInstructionData> {\n    return combineCodec(getApproveInstructionDataEncoder(), getApproveInstructionDataDecoder());\n}\n\nexport type ApproveInput<\n    TAccountSource extends string = string,\n    TAccountDelegate extends string = string,\n    TAccountOwner extends string = string,\n> = {\n    /** The source account. */\n    source: Address<TAccountSource>;\n    /** The delegate. */\n    delegate: Address<TAccountDelegate>;\n    /** The source account owner or its multisignature account. */\n    owner: Address<TAccountOwner> | TransactionSigner<TAccountOwner>;\n    amount: ApproveInstructionDataArgs['amount'];\n    multiSigners?: Array<TransactionSigner>;\n};\n\nexport function getApproveInstruction<\n    TAccountSource extends string,\n    TAccountDelegate extends string,\n    TAccountOwner extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: ApproveInput<TAccountSource, TAccountDelegate, TAccountOwner>,\n    config?: { programAddress?: TProgramAddress },\n): ApproveInstruction<\n    TProgramAddress,\n    TAccountSource,\n    TAccountDelegate,\n    (typeof input)['owner'] extends TransactionSigner<TAccountOwner>\n        ? ReadonlySignerAccount<TAccountOwner> & AccountSignerMeta<TAccountOwner>\n        : TAccountOwner\n> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        source: { value: input.source ?? null, isWritable: true },\n        delegate: { value: input.delegate ?? null, isWritable: false },\n        owner: { value: input.owner ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    // Remaining accounts.\n    const remainingAccounts: AccountMeta[] = (args.multiSigners ?? []).map(signer => ({\n        address: signer.address,\n        role: AccountRole.READONLY_SIGNER,\n        signer,\n    }));\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [\n            getAccountMeta(accounts.source),\n            getAccountMeta(accounts.delegate),\n            getAccountMeta(accounts.owner),\n            ...remainingAccounts,\n        ],\n        data: getApproveInstructionDataEncoder().encode(args as ApproveInstructionDataArgs),\n        programAddress,\n    } as ApproveInstruction<\n        TProgramAddress,\n        TAccountSource,\n        TAccountDelegate,\n        (typeof input)['owner'] extends TransactionSigner<TAccountOwner>\n            ? ReadonlySignerAccount<TAccountOwner> & AccountSignerMeta<TAccountOwner>\n            : TAccountOwner\n    >);\n}\n\nexport type ParsedApproveInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The source account. */\n        source: TAccountMetas[0];\n        /** The delegate. */\n        delegate: TAccountMetas[1];\n        /** The source account owner or its multisignature account. */\n        owner: TAccountMetas[2];\n    };\n    data: ApproveInstructionData;\n};\n\nexport function parseApproveInstruction<TProgram extends string, TAccountMetas extends readonly AccountMeta[]>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedApproveInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 3) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { source: getNextAccount(), delegate: getNextAccount(), owner: getNextAccount() },\n        data: getApproveInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    AccountRole,\n    combineCodec,\n    getStructDecoder,\n    getStructEncoder,\n    getU64Decoder,\n    getU64Encoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type AccountSignerMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlyAccount,\n    type ReadonlySignerAccount,\n    type ReadonlyUint8Array,\n    type TransactionSigner,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const APPROVE_CHECKED_DISCRIMINATOR = 13;\n\nexport function getApproveCheckedDiscriminatorBytes() {\n    return getU8Encoder().encode(APPROVE_CHECKED_DISCRIMINATOR);\n}\n\nexport type ApproveCheckedInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountSource extends string | AccountMeta<string> = string,\n    TAccountMint extends string | AccountMeta<string> = string,\n    TAccountDelegate extends string | AccountMeta<string> = string,\n    TAccountOwner extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [\n            TAccountSource extends string ? WritableAccount<TAccountSource> : TAccountSource,\n            TAccountMint extends string ? ReadonlyAccount<TAccountMint> : TAccountMint,\n            TAccountDelegate extends string ? ReadonlyAccount<TAccountDelegate> : TAccountDelegate,\n            TAccountOwner extends string ? ReadonlyAccount<TAccountOwner> : TAccountOwner,\n            ...TRemainingAccounts,\n        ]\n    >;\n\nexport type ApproveCheckedInstructionData = {\n    discriminator: number;\n    /** The amount of tokens the delegate is approved for. */\n    amount: bigint;\n    /** Expected number of base 10 digits to the right of the decimal place. */\n    decimals: number;\n};\n\nexport type ApproveCheckedInstructionDataArgs = {\n    /** The amount of tokens the delegate is approved for. */\n    amount: number | bigint;\n    /** Expected number of base 10 digits to the right of the decimal place. */\n    decimals: number;\n};\n\nexport function getApproveCheckedInstructionDataEncoder(): FixedSizeEncoder<ApproveCheckedInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['amount', getU64Encoder()],\n            ['decimals', getU8Encoder()],\n        ]),\n        value => ({ ...value, discriminator: APPROVE_CHECKED_DISCRIMINATOR }),\n    );\n}\n\nexport function getApproveCheckedInstructionDataDecoder(): FixedSizeDecoder<ApproveCheckedInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['amount', getU64Decoder()],\n        ['decimals', getU8Decoder()],\n    ]);\n}\n\nexport function getApproveCheckedInstructionDataCodec(): FixedSizeCodec<\n    ApproveCheckedInstructionDataArgs,\n    ApproveCheckedInstructionData\n> {\n    return combineCodec(getApproveCheckedInstructionDataEncoder(), getApproveCheckedInstructionDataDecoder());\n}\n\nexport type ApproveCheckedInput<\n    TAccountSource extends string = string,\n    TAccountMint extends string = string,\n    TAccountDelegate extends string = string,\n    TAccountOwner extends string = string,\n> = {\n    /** The source account. */\n    source: Address<TAccountSource>;\n    /** The token mint. */\n    mint: Address<TAccountMint>;\n    /** The delegate. */\n    delegate: Address<TAccountDelegate>;\n    /** The source account owner or its multisignature account. */\n    owner: Address<TAccountOwner> | TransactionSigner<TAccountOwner>;\n    amount: ApproveCheckedInstructionDataArgs['amount'];\n    decimals: ApproveCheckedInstructionDataArgs['decimals'];\n    multiSigners?: Array<TransactionSigner>;\n};\n\nexport function getApproveCheckedInstruction<\n    TAccountSource extends string,\n    TAccountMint extends string,\n    TAccountDelegate extends string,\n    TAccountOwner extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: ApproveCheckedInput<TAccountSource, TAccountMint, TAccountDelegate, TAccountOwner>,\n    config?: { programAddress?: TProgramAddress },\n): ApproveCheckedInstruction<\n    TProgramAddress,\n    TAccountSource,\n    TAccountMint,\n    TAccountDelegate,\n    (typeof input)['owner'] extends TransactionSigner<TAccountOwner>\n        ? ReadonlySignerAccount<TAccountOwner> & AccountSignerMeta<TAccountOwner>\n        : TAccountOwner\n> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        source: { value: input.source ?? null, isWritable: true },\n        mint: { value: input.mint ?? null, isWritable: false },\n        delegate: { value: input.delegate ?? null, isWritable: false },\n        owner: { value: input.owner ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    // Remaining accounts.\n    const remainingAccounts: AccountMeta[] = (args.multiSigners ?? []).map(signer => ({\n        address: signer.address,\n        role: AccountRole.READONLY_SIGNER,\n        signer,\n    }));\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [\n            getAccountMeta(accounts.source),\n            getAccountMeta(accounts.mint),\n            getAccountMeta(accounts.delegate),\n            getAccountMeta(accounts.owner),\n            ...remainingAccounts,\n        ],\n        data: getApproveCheckedInstructionDataEncoder().encode(args as ApproveCheckedInstructionDataArgs),\n        programAddress,\n    } as ApproveCheckedInstruction<\n        TProgramAddress,\n        TAccountSource,\n        TAccountMint,\n        TAccountDelegate,\n        (typeof input)['owner'] extends TransactionSigner<TAccountOwner>\n            ? ReadonlySignerAccount<TAccountOwner> & AccountSignerMeta<TAccountOwner>\n            : TAccountOwner\n    >);\n}\n\nexport type ParsedApproveCheckedInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The source account. */\n        source: TAccountMetas[0];\n        /** The token mint. */\n        mint: TAccountMetas[1];\n        /** The delegate. */\n        delegate: TAccountMetas[2];\n        /** The source account owner or its multisignature account. */\n        owner: TAccountMetas[3];\n    };\n    data: ApproveCheckedInstructionData;\n};\n\nexport function parseApproveCheckedInstruction<TProgram extends string, TAccountMetas extends readonly AccountMeta[]>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedApproveCheckedInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 4) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: {\n            source: getNextAccount(),\n            mint: getNextAccount(),\n            delegate: getNextAccount(),\n            owner: getNextAccount(),\n        },\n        data: getApproveCheckedInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    combineCodec,\n    getStructDecoder,\n    getStructEncoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type AccountSignerMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlyAccount,\n    type ReadonlySignerAccount,\n    type ReadonlyUint8Array,\n    type TransactionSigner,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const APPROVE_CONFIDENTIAL_TRANSFER_ACCOUNT_DISCRIMINATOR = 27;\n\nexport function getApproveConfidentialTransferAccountDiscriminatorBytes() {\n    return getU8Encoder().encode(APPROVE_CONFIDENTIAL_TRANSFER_ACCOUNT_DISCRIMINATOR);\n}\n\nexport const APPROVE_CONFIDENTIAL_TRANSFER_ACCOUNT_CONFIDENTIAL_TRANSFER_DISCRIMINATOR = 3;\n\nexport function getApproveConfidentialTransferAccountConfidentialTransferDiscriminatorBytes() {\n    return getU8Encoder().encode(APPROVE_CONFIDENTIAL_TRANSFER_ACCOUNT_CONFIDENTIAL_TRANSFER_DISCRIMINATOR);\n}\n\nexport type ApproveConfidentialTransferAccountInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountToken extends string | AccountMeta<string> = string,\n    TAccountMint extends string | AccountMeta<string> = string,\n    TAccountAuthority extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [\n            TAccountToken extends string ? WritableAccount<TAccountToken> : TAccountToken,\n            TAccountMint extends string ? ReadonlyAccount<TAccountMint> : TAccountMint,\n            TAccountAuthority extends string\n                ? ReadonlySignerAccount<TAccountAuthority> & AccountSignerMeta<TAccountAuthority>\n                : TAccountAuthority,\n            ...TRemainingAccounts,\n        ]\n    >;\n\nexport type ApproveConfidentialTransferAccountInstructionData = {\n    discriminator: number;\n    confidentialTransferDiscriminator: number;\n};\n\nexport type ApproveConfidentialTransferAccountInstructionDataArgs = {};\n\nexport function getApproveConfidentialTransferAccountInstructionDataEncoder(): FixedSizeEncoder<ApproveConfidentialTransferAccountInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['confidentialTransferDiscriminator', getU8Encoder()],\n        ]),\n        value => ({\n            ...value,\n            discriminator: APPROVE_CONFIDENTIAL_TRANSFER_ACCOUNT_DISCRIMINATOR,\n            confidentialTransferDiscriminator:\n                APPROVE_CONFIDENTIAL_TRANSFER_ACCOUNT_CONFIDENTIAL_TRANSFER_DISCRIMINATOR,\n        }),\n    );\n}\n\nexport function getApproveConfidentialTransferAccountInstructionDataDecoder(): FixedSizeDecoder<ApproveConfidentialTransferAccountInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['confidentialTransferDiscriminator', getU8Decoder()],\n    ]);\n}\n\nexport function getApproveConfidentialTransferAccountInstructionDataCodec(): FixedSizeCodec<\n    ApproveConfidentialTransferAccountInstructionDataArgs,\n    ApproveConfidentialTransferAccountInstructionData\n> {\n    return combineCodec(\n        getApproveConfidentialTransferAccountInstructionDataEncoder(),\n        getApproveConfidentialTransferAccountInstructionDataDecoder(),\n    );\n}\n\nexport type ApproveConfidentialTransferAccountInput<\n    TAccountToken extends string = string,\n    TAccountMint extends string = string,\n    TAccountAuthority extends string = string,\n> = {\n    /** The SPL Token account to approve. */\n    token: Address<TAccountToken>;\n    /** The corresponding SPL Token mint. */\n    mint: Address<TAccountMint>;\n    /** Confidential transfer mint authority. */\n    authority: TransactionSigner<TAccountAuthority>;\n};\n\nexport function getApproveConfidentialTransferAccountInstruction<\n    TAccountToken extends string,\n    TAccountMint extends string,\n    TAccountAuthority extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: ApproveConfidentialTransferAccountInput<TAccountToken, TAccountMint, TAccountAuthority>,\n    config?: { programAddress?: TProgramAddress },\n): ApproveConfidentialTransferAccountInstruction<TProgramAddress, TAccountToken, TAccountMint, TAccountAuthority> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        token: { value: input.token ?? null, isWritable: true },\n        mint: { value: input.mint ?? null, isWritable: false },\n        authority: { value: input.authority ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [getAccountMeta(accounts.token), getAccountMeta(accounts.mint), getAccountMeta(accounts.authority)],\n        data: getApproveConfidentialTransferAccountInstructionDataEncoder().encode({}),\n        programAddress,\n    } as ApproveConfidentialTransferAccountInstruction<\n        TProgramAddress,\n        TAccountToken,\n        TAccountMint,\n        TAccountAuthority\n    >);\n}\n\nexport type ParsedApproveConfidentialTransferAccountInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The SPL Token account to approve. */\n        token: TAccountMetas[0];\n        /** The corresponding SPL Token mint. */\n        mint: TAccountMetas[1];\n        /** Confidential transfer mint authority. */\n        authority: TAccountMetas[2];\n    };\n    data: ApproveConfidentialTransferAccountInstructionData;\n};\n\nexport function parseApproveConfidentialTransferAccountInstruction<\n    TProgram extends string,\n    TAccountMetas extends readonly AccountMeta[],\n>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedApproveConfidentialTransferAccountInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 3) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { token: getNextAccount(), mint: getNextAccount(), authority: getNextAccount() },\n        data: getApproveConfidentialTransferAccountInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    AccountRole,\n    combineCodec,\n    getStructDecoder,\n    getStructEncoder,\n    getU64Decoder,\n    getU64Encoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type AccountSignerMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlyAccount,\n    type ReadonlySignerAccount,\n    type ReadonlyUint8Array,\n    type TransactionSigner,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const BURN_DISCRIMINATOR = 8;\n\nexport function getBurnDiscriminatorBytes() {\n    return getU8Encoder().encode(BURN_DISCRIMINATOR);\n}\n\nexport type BurnInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountAccount extends string | AccountMeta<string> = string,\n    TAccountMint extends string | AccountMeta<string> = string,\n    TAccountAuthority extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [\n            TAccountAccount extends string ? WritableAccount<TAccountAccount> : TAccountAccount,\n            TAccountMint extends string ? WritableAccount<TAccountMint> : TAccountMint,\n            TAccountAuthority extends string ? ReadonlyAccount<TAccountAuthority> : TAccountAuthority,\n            ...TRemainingAccounts,\n        ]\n    >;\n\nexport type BurnInstructionData = {\n    /** The amount of tokens to burn. */\n    discriminator: number;\n    amount: bigint;\n};\n\nexport type BurnInstructionDataArgs = { amount: number | bigint };\n\nexport function getBurnInstructionDataEncoder(): FixedSizeEncoder<BurnInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['amount', getU64Encoder()],\n        ]),\n        value => ({ ...value, discriminator: BURN_DISCRIMINATOR }),\n    );\n}\n\nexport function getBurnInstructionDataDecoder(): FixedSizeDecoder<BurnInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['amount', getU64Decoder()],\n    ]);\n}\n\nexport function getBurnInstructionDataCodec(): FixedSizeCodec<BurnInstructionDataArgs, BurnInstructionData> {\n    return combineCodec(getBurnInstructionDataEncoder(), getBurnInstructionDataDecoder());\n}\n\nexport type BurnInput<\n    TAccountAccount extends string = string,\n    TAccountMint extends string = string,\n    TAccountAuthority extends string = string,\n> = {\n    /** The account to burn from. */\n    account: Address<TAccountAccount>;\n    /** The token mint. */\n    mint: Address<TAccountMint>;\n    /** The account's owner/delegate or its multisignature account. */\n    authority: Address<TAccountAuthority> | TransactionSigner<TAccountAuthority>;\n    amount: BurnInstructionDataArgs['amount'];\n    multiSigners?: Array<TransactionSigner>;\n};\n\nexport function getBurnInstruction<\n    TAccountAccount extends string,\n    TAccountMint extends string,\n    TAccountAuthority extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: BurnInput<TAccountAccount, TAccountMint, TAccountAuthority>,\n    config?: { programAddress?: TProgramAddress },\n): BurnInstruction<\n    TProgramAddress,\n    TAccountAccount,\n    TAccountMint,\n    (typeof input)['authority'] extends TransactionSigner<TAccountAuthority>\n        ? ReadonlySignerAccount<TAccountAuthority> & AccountSignerMeta<TAccountAuthority>\n        : TAccountAuthority\n> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        account: { value: input.account ?? null, isWritable: true },\n        mint: { value: input.mint ?? null, isWritable: true },\n        authority: { value: input.authority ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    // Remaining accounts.\n    const remainingAccounts: AccountMeta[] = (args.multiSigners ?? []).map(signer => ({\n        address: signer.address,\n        role: AccountRole.READONLY_SIGNER,\n        signer,\n    }));\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [\n            getAccountMeta(accounts.account),\n            getAccountMeta(accounts.mint),\n            getAccountMeta(accounts.authority),\n            ...remainingAccounts,\n        ],\n        data: getBurnInstructionDataEncoder().encode(args as BurnInstructionDataArgs),\n        programAddress,\n    } as BurnInstruction<\n        TProgramAddress,\n        TAccountAccount,\n        TAccountMint,\n        (typeof input)['authority'] extends TransactionSigner<TAccountAuthority>\n            ? ReadonlySignerAccount<TAccountAuthority> & AccountSignerMeta<TAccountAuthority>\n            : TAccountAuthority\n    >);\n}\n\nexport type ParsedBurnInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The account to burn from. */\n        account: TAccountMetas[0];\n        /** The token mint. */\n        mint: TAccountMetas[1];\n        /** The account's owner/delegate or its multisignature account. */\n        authority: TAccountMetas[2];\n    };\n    data: BurnInstructionData;\n};\n\nexport function parseBurnInstruction<TProgram extends string, TAccountMetas extends readonly AccountMeta[]>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedBurnInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 3) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { account: getNextAccount(), mint: getNextAccount(), authority: getNextAccount() },\n        data: getBurnInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    AccountRole,\n    combineCodec,\n    getStructDecoder,\n    getStructEncoder,\n    getU64Decoder,\n    getU64Encoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type AccountSignerMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlyAccount,\n    type ReadonlySignerAccount,\n    type ReadonlyUint8Array,\n    type TransactionSigner,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const BURN_CHECKED_DISCRIMINATOR = 15;\n\nexport function getBurnCheckedDiscriminatorBytes() {\n    return getU8Encoder().encode(BURN_CHECKED_DISCRIMINATOR);\n}\n\nexport type BurnCheckedInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountAccount extends string | AccountMeta<string> = string,\n    TAccountMint extends string | AccountMeta<string> = string,\n    TAccountAuthority extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [\n            TAccountAccount extends string ? WritableAccount<TAccountAccount> : TAccountAccount,\n            TAccountMint extends string ? WritableAccount<TAccountMint> : TAccountMint,\n            TAccountAuthority extends string ? ReadonlyAccount<TAccountAuthority> : TAccountAuthority,\n            ...TRemainingAccounts,\n        ]\n    >;\n\nexport type BurnCheckedInstructionData = {\n    discriminator: number;\n    /** The amount of tokens to burn. */\n    amount: bigint;\n    /** Expected number of base 10 digits to the right of the decimal place. */\n    decimals: number;\n};\n\nexport type BurnCheckedInstructionDataArgs = {\n    /** The amount of tokens to burn. */\n    amount: number | bigint;\n    /** Expected number of base 10 digits to the right of the decimal place. */\n    decimals: number;\n};\n\nexport function getBurnCheckedInstructionDataEncoder(): FixedSizeEncoder<BurnCheckedInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['amount', getU64Encoder()],\n            ['decimals', getU8Encoder()],\n        ]),\n        value => ({ ...value, discriminator: BURN_CHECKED_DISCRIMINATOR }),\n    );\n}\n\nexport function getBurnCheckedInstructionDataDecoder(): FixedSizeDecoder<BurnCheckedInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['amount', getU64Decoder()],\n        ['decimals', getU8Decoder()],\n    ]);\n}\n\nexport function getBurnCheckedInstructionDataCodec(): FixedSizeCodec<\n    BurnCheckedInstructionDataArgs,\n    BurnCheckedInstructionData\n> {\n    return combineCodec(getBurnCheckedInstructionDataEncoder(), getBurnCheckedInstructionDataDecoder());\n}\n\nexport type BurnCheckedInput<\n    TAccountAccount extends string = string,\n    TAccountMint extends string = string,\n    TAccountAuthority extends string = string,\n> = {\n    /** The account to burn from. */\n    account: Address<TAccountAccount>;\n    /** The token mint. */\n    mint: Address<TAccountMint>;\n    /** The account's owner/delegate or its multisignature account. */\n    authority: Address<TAccountAuthority> | TransactionSigner<TAccountAuthority>;\n    amount: BurnCheckedInstructionDataArgs['amount'];\n    decimals: BurnCheckedInstructionDataArgs['decimals'];\n    multiSigners?: Array<TransactionSigner>;\n};\n\nexport function getBurnCheckedInstruction<\n    TAccountAccount extends string,\n    TAccountMint extends string,\n    TAccountAuthority extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: BurnCheckedInput<TAccountAccount, TAccountMint, TAccountAuthority>,\n    config?: { programAddress?: TProgramAddress },\n): BurnCheckedInstruction<\n    TProgramAddress,\n    TAccountAccount,\n    TAccountMint,\n    (typeof input)['authority'] extends TransactionSigner<TAccountAuthority>\n        ? ReadonlySignerAccount<TAccountAuthority> & AccountSignerMeta<TAccountAuthority>\n        : TAccountAuthority\n> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        account: { value: input.account ?? null, isWritable: true },\n        mint: { value: input.mint ?? null, isWritable: true },\n        authority: { value: input.authority ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    // Remaining accounts.\n    const remainingAccounts: AccountMeta[] = (args.multiSigners ?? []).map(signer => ({\n        address: signer.address,\n        role: AccountRole.READONLY_SIGNER,\n        signer,\n    }));\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [\n            getAccountMeta(accounts.account),\n            getAccountMeta(accounts.mint),\n            getAccountMeta(accounts.authority),\n            ...remainingAccounts,\n        ],\n        data: getBurnCheckedInstructionDataEncoder().encode(args as BurnCheckedInstructionDataArgs),\n        programAddress,\n    } as BurnCheckedInstruction<\n        TProgramAddress,\n        TAccountAccount,\n        TAccountMint,\n        (typeof input)['authority'] extends TransactionSigner<TAccountAuthority>\n            ? ReadonlySignerAccount<TAccountAuthority> & AccountSignerMeta<TAccountAuthority>\n            : TAccountAuthority\n    >);\n}\n\nexport type ParsedBurnCheckedInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The account to burn from. */\n        account: TAccountMetas[0];\n        /** The token mint. */\n        mint: TAccountMetas[1];\n        /** The account's owner/delegate or its multisignature account. */\n        authority: TAccountMetas[2];\n    };\n    data: BurnCheckedInstructionData;\n};\n\nexport function parseBurnCheckedInstruction<TProgram extends string, TAccountMetas extends readonly AccountMeta[]>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedBurnCheckedInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 3) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { account: getNextAccount(), mint: getNextAccount(), authority: getNextAccount() },\n        data: getBurnCheckedInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    AccountRole,\n    combineCodec,\n    getStructDecoder,\n    getStructEncoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type AccountSignerMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlyAccount,\n    type ReadonlySignerAccount,\n    type ReadonlyUint8Array,\n    type TransactionSigner,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const CLOSE_ACCOUNT_DISCRIMINATOR = 9;\n\nexport function getCloseAccountDiscriminatorBytes() {\n    return getU8Encoder().encode(CLOSE_ACCOUNT_DISCRIMINATOR);\n}\n\nexport type CloseAccountInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountAccount extends string | AccountMeta<string> = string,\n    TAccountDestination extends string | AccountMeta<string> = string,\n    TAccountOwner extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [\n            TAccountAccount extends string ? WritableAccount<TAccountAccount> : TAccountAccount,\n            TAccountDestination extends string ? WritableAccount<TAccountDestination> : TAccountDestination,\n            TAccountOwner extends string ? ReadonlyAccount<TAccountOwner> : TAccountOwner,\n            ...TRemainingAccounts,\n        ]\n    >;\n\nexport type CloseAccountInstructionData = { discriminator: number };\n\nexport type CloseAccountInstructionDataArgs = {};\n\nexport function getCloseAccountInstructionDataEncoder(): FixedSizeEncoder<CloseAccountInstructionDataArgs> {\n    return transformEncoder(getStructEncoder([['discriminator', getU8Encoder()]]), value => ({\n        ...value,\n        discriminator: CLOSE_ACCOUNT_DISCRIMINATOR,\n    }));\n}\n\nexport function getCloseAccountInstructionDataDecoder(): FixedSizeDecoder<CloseAccountInstructionData> {\n    return getStructDecoder([['discriminator', getU8Decoder()]]);\n}\n\nexport function getCloseAccountInstructionDataCodec(): FixedSizeCodec<\n    CloseAccountInstructionDataArgs,\n    CloseAccountInstructionData\n> {\n    return combineCodec(getCloseAccountInstructionDataEncoder(), getCloseAccountInstructionDataDecoder());\n}\n\nexport type CloseAccountInput<\n    TAccountAccount extends string = string,\n    TAccountDestination extends string = string,\n    TAccountOwner extends string = string,\n> = {\n    /** The account to close. */\n    account: Address<TAccountAccount>;\n    /** The destination account. */\n    destination: Address<TAccountDestination>;\n    /** The account's owner or its multisignature account. */\n    owner: Address<TAccountOwner> | TransactionSigner<TAccountOwner>;\n    multiSigners?: Array<TransactionSigner>;\n};\n\nexport function getCloseAccountInstruction<\n    TAccountAccount extends string,\n    TAccountDestination extends string,\n    TAccountOwner extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: CloseAccountInput<TAccountAccount, TAccountDestination, TAccountOwner>,\n    config?: { programAddress?: TProgramAddress },\n): CloseAccountInstruction<\n    TProgramAddress,\n    TAccountAccount,\n    TAccountDestination,\n    (typeof input)['owner'] extends TransactionSigner<TAccountOwner>\n        ? ReadonlySignerAccount<TAccountOwner> & AccountSignerMeta<TAccountOwner>\n        : TAccountOwner\n> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        account: { value: input.account ?? null, isWritable: true },\n        destination: { value: input.destination ?? null, isWritable: true },\n        owner: { value: input.owner ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    // Remaining accounts.\n    const remainingAccounts: AccountMeta[] = (args.multiSigners ?? []).map(signer => ({\n        address: signer.address,\n        role: AccountRole.READONLY_SIGNER,\n        signer,\n    }));\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [\n            getAccountMeta(accounts.account),\n            getAccountMeta(accounts.destination),\n            getAccountMeta(accounts.owner),\n            ...remainingAccounts,\n        ],\n        data: getCloseAccountInstructionDataEncoder().encode({}),\n        programAddress,\n    } as CloseAccountInstruction<\n        TProgramAddress,\n        TAccountAccount,\n        TAccountDestination,\n        (typeof input)['owner'] extends TransactionSigner<TAccountOwner>\n            ? ReadonlySignerAccount<TAccountOwner> & AccountSignerMeta<TAccountOwner>\n            : TAccountOwner\n    >);\n}\n\nexport type ParsedCloseAccountInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The account to close. */\n        account: TAccountMetas[0];\n        /** The destination account. */\n        destination: TAccountMetas[1];\n        /** The account's owner or its multisignature account. */\n        owner: TAccountMetas[2];\n    };\n    data: CloseAccountInstructionData;\n};\n\nexport function parseCloseAccountInstruction<TProgram extends string, TAccountMetas extends readonly AccountMeta[]>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedCloseAccountInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 3) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { account: getNextAccount(), destination: getNextAccount(), owner: getNextAccount() },\n        data: getCloseAccountInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    AccountRole,\n    combineCodec,\n    getStructDecoder,\n    getStructEncoder,\n    getU64Decoder,\n    getU64Encoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type AccountSignerMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlyAccount,\n    type ReadonlySignerAccount,\n    type ReadonlyUint8Array,\n    type TransactionSigner,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const CONFIDENTIAL_DEPOSIT_DISCRIMINATOR = 27;\n\nexport function getConfidentialDepositDiscriminatorBytes() {\n    return getU8Encoder().encode(CONFIDENTIAL_DEPOSIT_DISCRIMINATOR);\n}\n\nexport const CONFIDENTIAL_DEPOSIT_CONFIDENTIAL_TRANSFER_DISCRIMINATOR = 5;\n\nexport function getConfidentialDepositConfidentialTransferDiscriminatorBytes() {\n    return getU8Encoder().encode(CONFIDENTIAL_DEPOSIT_CONFIDENTIAL_TRANSFER_DISCRIMINATOR);\n}\n\nexport type ConfidentialDepositInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountToken extends string | AccountMeta<string> = string,\n    TAccountMint extends string | AccountMeta<string> = string,\n    TAccountAuthority extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [\n            TAccountToken extends string ? WritableAccount<TAccountToken> : TAccountToken,\n            TAccountMint extends string ? ReadonlyAccount<TAccountMint> : TAccountMint,\n            TAccountAuthority extends string ? ReadonlyAccount<TAccountAuthority> : TAccountAuthority,\n            ...TRemainingAccounts,\n        ]\n    >;\n\nexport type ConfidentialDepositInstructionData = {\n    discriminator: number;\n    confidentialTransferDiscriminator: number;\n    /** The amount of tokens to deposit. */\n    amount: bigint;\n    /** Expected number of base 10 digits to the right of the decimal place. */\n    decimals: number;\n};\n\nexport type ConfidentialDepositInstructionDataArgs = {\n    /** The amount of tokens to deposit. */\n    amount: number | bigint;\n    /** Expected number of base 10 digits to the right of the decimal place. */\n    decimals: number;\n};\n\nexport function getConfidentialDepositInstructionDataEncoder(): FixedSizeEncoder<ConfidentialDepositInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['confidentialTransferDiscriminator', getU8Encoder()],\n            ['amount', getU64Encoder()],\n            ['decimals', getU8Encoder()],\n        ]),\n        value => ({\n            ...value,\n            discriminator: CONFIDENTIAL_DEPOSIT_DISCRIMINATOR,\n            confidentialTransferDiscriminator: CONFIDENTIAL_DEPOSIT_CONFIDENTIAL_TRANSFER_DISCRIMINATOR,\n        }),\n    );\n}\n\nexport function getConfidentialDepositInstructionDataDecoder(): FixedSizeDecoder<ConfidentialDepositInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['confidentialTransferDiscriminator', getU8Decoder()],\n        ['amount', getU64Decoder()],\n        ['decimals', getU8Decoder()],\n    ]);\n}\n\nexport function getConfidentialDepositInstructionDataCodec(): FixedSizeCodec<\n    ConfidentialDepositInstructionDataArgs,\n    ConfidentialDepositInstructionData\n> {\n    return combineCodec(getConfidentialDepositInstructionDataEncoder(), getConfidentialDepositInstructionDataDecoder());\n}\n\nexport type ConfidentialDepositInput<\n    TAccountToken extends string = string,\n    TAccountMint extends string = string,\n    TAccountAuthority extends string = string,\n> = {\n    /** The SPL Token account. */\n    token: Address<TAccountToken>;\n    /** The corresponding SPL Token mint. */\n    mint: Address<TAccountMint>;\n    /** The source account's owner/delegate or its multisignature account. */\n    authority: Address<TAccountAuthority> | TransactionSigner<TAccountAuthority>;\n    amount: ConfidentialDepositInstructionDataArgs['amount'];\n    decimals: ConfidentialDepositInstructionDataArgs['decimals'];\n    multiSigners?: Array<TransactionSigner>;\n};\n\nexport function getConfidentialDepositInstruction<\n    TAccountToken extends string,\n    TAccountMint extends string,\n    TAccountAuthority extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: ConfidentialDepositInput<TAccountToken, TAccountMint, TAccountAuthority>,\n    config?: { programAddress?: TProgramAddress },\n): ConfidentialDepositInstruction<\n    TProgramAddress,\n    TAccountToken,\n    TAccountMint,\n    (typeof input)['authority'] extends TransactionSigner<TAccountAuthority>\n        ? ReadonlySignerAccount<TAccountAuthority> & AccountSignerMeta<TAccountAuthority>\n        : TAccountAuthority\n> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        token: { value: input.token ?? null, isWritable: true },\n        mint: { value: input.mint ?? null, isWritable: false },\n        authority: { value: input.authority ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    // Remaining accounts.\n    const remainingAccounts: AccountMeta[] = (args.multiSigners ?? []).map(signer => ({\n        address: signer.address,\n        role: AccountRole.READONLY_SIGNER,\n        signer,\n    }));\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [\n            getAccountMeta(accounts.token),\n            getAccountMeta(accounts.mint),\n            getAccountMeta(accounts.authority),\n            ...remainingAccounts,\n        ],\n        data: getConfidentialDepositInstructionDataEncoder().encode(args as ConfidentialDepositInstructionDataArgs),\n        programAddress,\n    } as ConfidentialDepositInstruction<\n        TProgramAddress,\n        TAccountToken,\n        TAccountMint,\n        (typeof input)['authority'] extends TransactionSigner<TAccountAuthority>\n            ? ReadonlySignerAccount<TAccountAuthority> & AccountSignerMeta<TAccountAuthority>\n            : TAccountAuthority\n    >);\n}\n\nexport type ParsedConfidentialDepositInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The SPL Token account. */\n        token: TAccountMetas[0];\n        /** The corresponding SPL Token mint. */\n        mint: TAccountMetas[1];\n        /** The source account's owner/delegate or its multisignature account. */\n        authority: TAccountMetas[2];\n    };\n    data: ConfidentialDepositInstructionData;\n};\n\nexport function parseConfidentialDepositInstruction<\n    TProgram extends string,\n    TAccountMetas extends readonly AccountMeta[],\n>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedConfidentialDepositInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 3) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { token: getNextAccount(), mint: getNextAccount(), authority: getNextAccount() },\n        data: getConfidentialDepositInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    AccountRole,\n    combineCodec,\n    getI8Decoder,\n    getI8Encoder,\n    getStructDecoder,\n    getStructEncoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type AccountSignerMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlyAccount,\n    type ReadonlySignerAccount,\n    type ReadonlyUint8Array,\n    type TransactionSigner,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\nimport {\n    getDecryptableBalanceDecoder,\n    getDecryptableBalanceEncoder,\n    type DecryptableBalance,\n    type DecryptableBalanceArgs,\n} from '../types';\n\nexport const CONFIDENTIAL_TRANSFER_DISCRIMINATOR = 27;\n\nexport function getConfidentialTransferDiscriminatorBytes() {\n    return getU8Encoder().encode(CONFIDENTIAL_TRANSFER_DISCRIMINATOR);\n}\n\nexport const CONFIDENTIAL_TRANSFER_CONFIDENTIAL_TRANSFER_DISCRIMINATOR = 7;\n\nexport function getConfidentialTransferConfidentialTransferDiscriminatorBytes() {\n    return getU8Encoder().encode(CONFIDENTIAL_TRANSFER_CONFIDENTIAL_TRANSFER_DISCRIMINATOR);\n}\n\nexport type ConfidentialTransferInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountSourceToken extends string | AccountMeta<string> = string,\n    TAccountMint extends string | AccountMeta<string> = string,\n    TAccountDestinationToken extends string | AccountMeta<string> = string,\n    TAccountInstructionsSysvar extends string | AccountMeta<string> = string,\n    TAccountEqualityRecord extends string | AccountMeta<string> = string,\n    TAccountCiphertextValidityRecord extends string | AccountMeta<string> = string,\n    TAccountRangeRecord extends string | AccountMeta<string> = string,\n    TAccountAuthority extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [\n            TAccountSourceToken extends string ? WritableAccount<TAccountSourceToken> : TAccountSourceToken,\n            TAccountMint extends string ? ReadonlyAccount<TAccountMint> : TAccountMint,\n            TAccountDestinationToken extends string\n                ? WritableAccount<TAccountDestinationToken>\n                : TAccountDestinationToken,\n            TAccountInstructionsSysvar extends string\n                ? ReadonlyAccount<TAccountInstructionsSysvar>\n                : TAccountInstructionsSysvar,\n            TAccountEqualityRecord extends string ? ReadonlyAccount<TAccountEqualityRecord> : TAccountEqualityRecord,\n            TAccountCiphertextValidityRecord extends string\n                ? ReadonlyAccount<TAccountCiphertextValidityRecord>\n                : TAccountCiphertextValidityRecord,\n            TAccountRangeRecord extends string ? ReadonlyAccount<TAccountRangeRecord> : TAccountRangeRecord,\n            TAccountAuthority extends string ? ReadonlyAccount<TAccountAuthority> : TAccountAuthority,\n            ...TRemainingAccounts,\n        ]\n    >;\n\nexport type ConfidentialTransferInstructionData = {\n    discriminator: number;\n    confidentialTransferDiscriminator: number;\n    /** The new source decryptable balance if the transfer succeeds. */\n    newSourceDecryptableAvailableBalance: DecryptableBalance;\n    /**\n     * Relative location of the\n     * `ProofInstruction::VerifyCiphertextCommitmentEquality` instruction\n     * to the `Transfer` instruction in the transaction. If the offset is\n     * `0`, then use a context state account for the proof.\n     */\n    equalityProofInstructionOffset: number;\n    /**\n     * Relative location of the\n     * `ProofInstruction::VerifyBatchedGroupedCiphertext3HandlesValidity`\n     * instruction to the `Transfer` instruction in the transaction. If the\n     * offset is `0`, then use a context state account for the proof.\n     */\n    ciphertextValidityProofInstructionOffset: number;\n    /**\n     * Relative location of the `ProofInstruction::BatchedRangeProofU128Data`\n     * instruction to the `Transfer` instruction in the transaction. If the\n     * offset is `0`, then use a context state account for the proof.\n     */\n    rangeProofInstructionOffset: number;\n};\n\nexport type ConfidentialTransferInstructionDataArgs = {\n    /** The new source decryptable balance if the transfer succeeds. */\n    newSourceDecryptableAvailableBalance: DecryptableBalanceArgs;\n    /**\n     * Relative location of the\n     * `ProofInstruction::VerifyCiphertextCommitmentEquality` instruction\n     * to the `Transfer` instruction in the transaction. If the offset is\n     * `0`, then use a context state account for the proof.\n     */\n    equalityProofInstructionOffset: number;\n    /**\n     * Relative location of the\n     * `ProofInstruction::VerifyBatchedGroupedCiphertext3HandlesValidity`\n     * instruction to the `Transfer` instruction in the transaction. If the\n     * offset is `0`, then use a context state account for the proof.\n     */\n    ciphertextValidityProofInstructionOffset: number;\n    /**\n     * Relative location of the `ProofInstruction::BatchedRangeProofU128Data`\n     * instruction to the `Transfer` instruction in the transaction. If the\n     * offset is `0`, then use a context state account for the proof.\n     */\n    rangeProofInstructionOffset: number;\n};\n\nexport function getConfidentialTransferInstructionDataEncoder(): FixedSizeEncoder<ConfidentialTransferInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['confidentialTransferDiscriminator', getU8Encoder()],\n            ['newSourceDecryptableAvailableBalance', getDecryptableBalanceEncoder()],\n            ['equalityProofInstructionOffset', getI8Encoder()],\n            ['ciphertextValidityProofInstructionOffset', getI8Encoder()],\n            ['rangeProofInstructionOffset', getI8Encoder()],\n        ]),\n        value => ({\n            ...value,\n            discriminator: CONFIDENTIAL_TRANSFER_DISCRIMINATOR,\n            confidentialTransferDiscriminator: CONFIDENTIAL_TRANSFER_CONFIDENTIAL_TRANSFER_DISCRIMINATOR,\n        }),\n    );\n}\n\nexport function getConfidentialTransferInstructionDataDecoder(): FixedSizeDecoder<ConfidentialTransferInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['confidentialTransferDiscriminator', getU8Decoder()],\n        ['newSourceDecryptableAvailableBalance', getDecryptableBalanceDecoder()],\n        ['equalityProofInstructionOffset', getI8Decoder()],\n        ['ciphertextValidityProofInstructionOffset', getI8Decoder()],\n        ['rangeProofInstructionOffset', getI8Decoder()],\n    ]);\n}\n\nexport function getConfidentialTransferInstructionDataCodec(): FixedSizeCodec<\n    ConfidentialTransferInstructionDataArgs,\n    ConfidentialTransferInstructionData\n> {\n    return combineCodec(\n        getConfidentialTransferInstructionDataEncoder(),\n        getConfidentialTransferInstructionDataDecoder(),\n    );\n}\n\nexport type ConfidentialTransferInput<\n    TAccountSourceToken extends string = string,\n    TAccountMint extends string = string,\n    TAccountDestinationToken extends string = string,\n    TAccountInstructionsSysvar extends string = string,\n    TAccountEqualityRecord extends string = string,\n    TAccountCiphertextValidityRecord extends string = string,\n    TAccountRangeRecord extends string = string,\n    TAccountAuthority extends string = string,\n> = {\n    /** The source SPL Token account. */\n    sourceToken: Address<TAccountSourceToken>;\n    /** The corresponding SPL Token mint. */\n    mint: Address<TAccountMint>;\n    /** The destination SPL Token account. */\n    destinationToken: Address<TAccountDestinationToken>;\n    /**\n     * (Optional) Instructions sysvar if at least one of the\n     * `zk_elgamal_proof` instructions are included in the same\n     * transaction.\n     */\n    instructionsSysvar?: Address<TAccountInstructionsSysvar>;\n    /** (Optional) Equality proof record account or context state account. */\n    equalityRecord?: Address<TAccountEqualityRecord>;\n    /** (Optional) Ciphertext validity proof record account or context state account. */\n    ciphertextValidityRecord?: Address<TAccountCiphertextValidityRecord>;\n    /** (Optional) Range proof record account or context state account. */\n    rangeRecord?: Address<TAccountRangeRecord>;\n    /** The source account's owner/delegate or its multisignature account. */\n    authority: Address<TAccountAuthority> | TransactionSigner<TAccountAuthority>;\n    newSourceDecryptableAvailableBalance: ConfidentialTransferInstructionDataArgs['newSourceDecryptableAvailableBalance'];\n    equalityProofInstructionOffset: ConfidentialTransferInstructionDataArgs['equalityProofInstructionOffset'];\n    ciphertextValidityProofInstructionOffset: ConfidentialTransferInstructionDataArgs['ciphertextValidityProofInstructionOffset'];\n    rangeProofInstructionOffset: ConfidentialTransferInstructionDataArgs['rangeProofInstructionOffset'];\n    multiSigners?: Array<TransactionSigner>;\n};\n\nexport function getConfidentialTransferInstruction<\n    TAccountSourceToken extends string,\n    TAccountMint extends string,\n    TAccountDestinationToken extends string,\n    TAccountInstructionsSysvar extends string,\n    TAccountEqualityRecord extends string,\n    TAccountCiphertextValidityRecord extends string,\n    TAccountRangeRecord extends string,\n    TAccountAuthority extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: ConfidentialTransferInput<\n        TAccountSourceToken,\n        TAccountMint,\n        TAccountDestinationToken,\n        TAccountInstructionsSysvar,\n        TAccountEqualityRecord,\n        TAccountCiphertextValidityRecord,\n        TAccountRangeRecord,\n        TAccountAuthority\n    >,\n    config?: { programAddress?: TProgramAddress },\n): ConfidentialTransferInstruction<\n    TProgramAddress,\n    TAccountSourceToken,\n    TAccountMint,\n    TAccountDestinationToken,\n    TAccountInstructionsSysvar,\n    TAccountEqualityRecord,\n    TAccountCiphertextValidityRecord,\n    TAccountRangeRecord,\n    (typeof input)['authority'] extends TransactionSigner<TAccountAuthority>\n        ? ReadonlySignerAccount<TAccountAuthority> & AccountSignerMeta<TAccountAuthority>\n        : TAccountAuthority\n> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        sourceToken: { value: input.sourceToken ?? null, isWritable: true },\n        mint: { value: input.mint ?? null, isWritable: false },\n        destinationToken: { value: input.destinationToken ?? null, isWritable: true },\n        instructionsSysvar: { value: input.instructionsSysvar ?? null, isWritable: false },\n        equalityRecord: { value: input.equalityRecord ?? null, isWritable: false },\n        ciphertextValidityRecord: { value: input.ciphertextValidityRecord ?? null, isWritable: false },\n        rangeRecord: { value: input.rangeRecord ?? null, isWritable: false },\n        authority: { value: input.authority ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    // Remaining accounts.\n    const remainingAccounts: AccountMeta[] = (args.multiSigners ?? []).map(signer => ({\n        address: signer.address,\n        role: AccountRole.READONLY_SIGNER,\n        signer,\n    }));\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [\n            getAccountMeta(accounts.sourceToken),\n            getAccountMeta(accounts.mint),\n            getAccountMeta(accounts.destinationToken),\n            getAccountMeta(accounts.instructionsSysvar),\n            getAccountMeta(accounts.equalityRecord),\n            getAccountMeta(accounts.ciphertextValidityRecord),\n            getAccountMeta(accounts.rangeRecord),\n            getAccountMeta(accounts.authority),\n            ...remainingAccounts,\n        ],\n        data: getConfidentialTransferInstructionDataEncoder().encode(args as ConfidentialTransferInstructionDataArgs),\n        programAddress,\n    } as ConfidentialTransferInstruction<\n        TProgramAddress,\n        TAccountSourceToken,\n        TAccountMint,\n        TAccountDestinationToken,\n        TAccountInstructionsSysvar,\n        TAccountEqualityRecord,\n        TAccountCiphertextValidityRecord,\n        TAccountRangeRecord,\n        (typeof input)['authority'] extends TransactionSigner<TAccountAuthority>\n            ? ReadonlySignerAccount<TAccountAuthority> & AccountSignerMeta<TAccountAuthority>\n            : TAccountAuthority\n    >);\n}\n\nexport type ParsedConfidentialTransferInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The source SPL Token account. */\n        sourceToken: TAccountMetas[0];\n        /** The corresponding SPL Token mint. */\n        mint: TAccountMetas[1];\n        /** The destination SPL Token account. */\n        destinationToken: TAccountMetas[2];\n        /**\n         * (Optional) Instructions sysvar if at least one of the\n         * `zk_elgamal_proof` instructions are included in the same\n         * transaction.\n         */\n        instructionsSysvar?: TAccountMetas[3] | undefined;\n        /** (Optional) Equality proof record account or context state account. */\n        equalityRecord?: TAccountMetas[4] | undefined;\n        /** (Optional) Ciphertext validity proof record account or context state account. */\n        ciphertextValidityRecord?: TAccountMetas[5] | undefined;\n        /** (Optional) Range proof record account or context state account. */\n        rangeRecord?: TAccountMetas[6] | undefined;\n        /** The source account's owner/delegate or its multisignature account. */\n        authority: TAccountMetas[7];\n    };\n    data: ConfidentialTransferInstructionData;\n};\n\nexport function parseConfidentialTransferInstruction<\n    TProgram extends string,\n    TAccountMetas extends readonly AccountMeta[],\n>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedConfidentialTransferInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 8) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    const getNextOptionalAccount = () => {\n        const accountMeta = getNextAccount();\n        return accountMeta.address === TOKEN_2022_PROGRAM_ADDRESS ? undefined : accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: {\n            sourceToken: getNextAccount(),\n            mint: getNextAccount(),\n            destinationToken: getNextAccount(),\n            instructionsSysvar: getNextOptionalAccount(),\n            equalityRecord: getNextOptionalAccount(),\n            ciphertextValidityRecord: getNextOptionalAccount(),\n            rangeRecord: getNextOptionalAccount(),\n            authority: getNextAccount(),\n        },\n        data: getConfidentialTransferInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    AccountRole,\n    combineCodec,\n    getI8Decoder,\n    getI8Encoder,\n    getStructDecoder,\n    getStructEncoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type AccountSignerMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlyAccount,\n    type ReadonlySignerAccount,\n    type ReadonlyUint8Array,\n    type TransactionSigner,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\nimport {\n    getDecryptableBalanceDecoder,\n    getDecryptableBalanceEncoder,\n    type DecryptableBalance,\n    type DecryptableBalanceArgs,\n} from '../types';\n\nexport const CONFIDENTIAL_TRANSFER_WITH_FEE_DISCRIMINATOR = 27;\n\nexport function getConfidentialTransferWithFeeDiscriminatorBytes() {\n    return getU8Encoder().encode(CONFIDENTIAL_TRANSFER_WITH_FEE_DISCRIMINATOR);\n}\n\nexport const CONFIDENTIAL_TRANSFER_WITH_FEE_CONFIDENTIAL_TRANSFER_DISCRIMINATOR = 13;\n\nexport function getConfidentialTransferWithFeeConfidentialTransferDiscriminatorBytes() {\n    return getU8Encoder().encode(CONFIDENTIAL_TRANSFER_WITH_FEE_CONFIDENTIAL_TRANSFER_DISCRIMINATOR);\n}\n\nexport type ConfidentialTransferWithFeeInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountSourceToken extends string | AccountMeta<string> = string,\n    TAccountMint extends string | AccountMeta<string> = string,\n    TAccountDestinationToken extends string | AccountMeta<string> = string,\n    TAccountInstructionsSysvar extends string | AccountMeta<string> = string,\n    TAccountEqualityRecord extends string | AccountMeta<string> = string,\n    TAccountTransferAmountCiphertextValidityRecord extends string | AccountMeta<string> = string,\n    TAccountFeeSigmaRecord extends string | AccountMeta<string> = string,\n    TAccountFeeCiphertextValidityRecord extends string | AccountMeta<string> = string,\n    TAccountRangeRecord extends string | AccountMeta<string> = string,\n    TAccountAuthority extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [\n            TAccountSourceToken extends string ? WritableAccount<TAccountSourceToken> : TAccountSourceToken,\n            TAccountMint extends string ? ReadonlyAccount<TAccountMint> : TAccountMint,\n            TAccountDestinationToken extends string\n                ? WritableAccount<TAccountDestinationToken>\n                : TAccountDestinationToken,\n            TAccountInstructionsSysvar extends string\n                ? ReadonlyAccount<TAccountInstructionsSysvar>\n                : TAccountInstructionsSysvar,\n            TAccountEqualityRecord extends string ? ReadonlyAccount<TAccountEqualityRecord> : TAccountEqualityRecord,\n            TAccountTransferAmountCiphertextValidityRecord extends string\n                ? ReadonlyAccount<TAccountTransferAmountCiphertextValidityRecord>\n                : TAccountTransferAmountCiphertextValidityRecord,\n            TAccountFeeSigmaRecord extends string ? ReadonlyAccount<TAccountFeeSigmaRecord> : TAccountFeeSigmaRecord,\n            TAccountFeeCiphertextValidityRecord extends string\n                ? ReadonlyAccount<TAccountFeeCiphertextValidityRecord>\n                : TAccountFeeCiphertextValidityRecord,\n            TAccountRangeRecord extends string ? ReadonlyAccount<TAccountRangeRecord> : TAccountRangeRecord,\n            TAccountAuthority extends string ? ReadonlyAccount<TAccountAuthority> : TAccountAuthority,\n            ...TRemainingAccounts,\n        ]\n    >;\n\nexport type ConfidentialTransferWithFeeInstructionData = {\n    discriminator: number;\n    confidentialTransferDiscriminator: number;\n    /** The new source decryptable balance if the transfer succeeds. */\n    newSourceDecryptableAvailableBalance: DecryptableBalance;\n    /**\n     * Relative location of the\n     * `ProofInstruction::VerifyCiphertextCommitmentEquality` instruction\n     * to the `TransferWithFee` instruction in the transaction. If the offset\n     * is `0`, then use a context state account for the proof.\n     */\n    equalityProofInstructionOffset: number;\n    /**\n     * Relative location of the\n     * `ProofInstruction::VerifyBatchedGroupedCiphertext3HandlesValidity`\n     * instruction to the `TransferWithFee` instruction in the transaction.\n     * If the offset is `0`, then use a context state account for the\n     * proof.\n     */\n    transferAmountCiphertextValidityProofInstructionOffset: number;\n    /**\n     * Relative location of the `ProofInstruction::VerifyPercentageWithFee`\n     * instruction to the `TransferWithFee` instruction in the transaction.\n     * If the offset is `0`, then use a context state account for the\n     * proof.\n     */\n    feeSigmaProofInstructionOffset: number;\n    /**\n     * Relative location of the\n     * `ProofInstruction::VerifyBatchedGroupedCiphertext2HandlesValidity`\n     * instruction to the `TransferWithFee` instruction in the transaction.\n     * If the offset is `0`, then use a context state account for the\n     * proof.\n     */\n    feeCiphertextValidityProofInstructionOffset: number;\n    /**\n     * Relative location of the `ProofInstruction::BatchedRangeProofU256Data`\n     * instruction to the `TransferWithFee` instruction in the transaction.\n     * If the offset is `0`, then use a context state account for the\n     * proof.\n     */\n    rangeProofInstructionOffset: number;\n};\n\nexport type ConfidentialTransferWithFeeInstructionDataArgs = {\n    /** The new source decryptable balance if the transfer succeeds. */\n    newSourceDecryptableAvailableBalance: DecryptableBalanceArgs;\n    /**\n     * Relative location of the\n     * `ProofInstruction::VerifyCiphertextCommitmentEquality` instruction\n     * to the `TransferWithFee` instruction in the transaction. If the offset\n     * is `0`, then use a context state account for the proof.\n     */\n    equalityProofInstructionOffset: number;\n    /**\n     * Relative location of the\n     * `ProofInstruction::VerifyBatchedGroupedCiphertext3HandlesValidity`\n     * instruction to the `TransferWithFee` instruction in the transaction.\n     * If the offset is `0`, then use a context state account for the\n     * proof.\n     */\n    transferAmountCiphertextValidityProofInstructionOffset: number;\n    /**\n     * Relative location of the `ProofInstruction::VerifyPercentageWithFee`\n     * instruction to the `TransferWithFee` instruction in the transaction.\n     * If the offset is `0`, then use a context state account for the\n     * proof.\n     */\n    feeSigmaProofInstructionOffset: number;\n    /**\n     * Relative location of the\n     * `ProofInstruction::VerifyBatchedGroupedCiphertext2HandlesValidity`\n     * instruction to the `TransferWithFee` instruction in the transaction.\n     * If the offset is `0`, then use a context state account for the\n     * proof.\n     */\n    feeCiphertextValidityProofInstructionOffset: number;\n    /**\n     * Relative location of the `ProofInstruction::BatchedRangeProofU256Data`\n     * instruction to the `TransferWithFee` instruction in the transaction.\n     * If the offset is `0`, then use a context state account for the\n     * proof.\n     */\n    rangeProofInstructionOffset: number;\n};\n\nexport function getConfidentialTransferWithFeeInstructionDataEncoder(): FixedSizeEncoder<ConfidentialTransferWithFeeInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['confidentialTransferDiscriminator', getU8Encoder()],\n            ['newSourceDecryptableAvailableBalance', getDecryptableBalanceEncoder()],\n            ['equalityProofInstructionOffset', getI8Encoder()],\n            ['transferAmountCiphertextValidityProofInstructionOffset', getI8Encoder()],\n            ['feeSigmaProofInstructionOffset', getI8Encoder()],\n            ['feeCiphertextValidityProofInstructionOffset', getI8Encoder()],\n            ['rangeProofInstructionOffset', getI8Encoder()],\n        ]),\n        value => ({\n            ...value,\n            discriminator: CONFIDENTIAL_TRANSFER_WITH_FEE_DISCRIMINATOR,\n            confidentialTransferDiscriminator: CONFIDENTIAL_TRANSFER_WITH_FEE_CONFIDENTIAL_TRANSFER_DISCRIMINATOR,\n        }),\n    );\n}\n\nexport function getConfidentialTransferWithFeeInstructionDataDecoder(): FixedSizeDecoder<ConfidentialTransferWithFeeInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['confidentialTransferDiscriminator', getU8Decoder()],\n        ['newSourceDecryptableAvailableBalance', getDecryptableBalanceDecoder()],\n        ['equalityProofInstructionOffset', getI8Decoder()],\n        ['transferAmountCiphertextValidityProofInstructionOffset', getI8Decoder()],\n        ['feeSigmaProofInstructionOffset', getI8Decoder()],\n        ['feeCiphertextValidityProofInstructionOffset', getI8Decoder()],\n        ['rangeProofInstructionOffset', getI8Decoder()],\n    ]);\n}\n\nexport function getConfidentialTransferWithFeeInstructionDataCodec(): FixedSizeCodec<\n    ConfidentialTransferWithFeeInstructionDataArgs,\n    ConfidentialTransferWithFeeInstructionData\n> {\n    return combineCodec(\n        getConfidentialTransferWithFeeInstructionDataEncoder(),\n        getConfidentialTransferWithFeeInstructionDataDecoder(),\n    );\n}\n\nexport type ConfidentialTransferWithFeeInput<\n    TAccountSourceToken extends string = string,\n    TAccountMint extends string = string,\n    TAccountDestinationToken extends string = string,\n    TAccountInstructionsSysvar extends string = string,\n    TAccountEqualityRecord extends string = string,\n    TAccountTransferAmountCiphertextValidityRecord extends string = string,\n    TAccountFeeSigmaRecord extends string = string,\n    TAccountFeeCiphertextValidityRecord extends string = string,\n    TAccountRangeRecord extends string = string,\n    TAccountAuthority extends string = string,\n> = {\n    /** The source SPL Token account. */\n    sourceToken: Address<TAccountSourceToken>;\n    /** The corresponding SPL Token mint. */\n    mint: Address<TAccountMint>;\n    /** The destination SPL Token account. */\n    destinationToken: Address<TAccountDestinationToken>;\n    /**\n     * (Optional) Instructions sysvar if at least one of the\n     * `zk_elgamal_proof` instructions are included in the same\n     * transaction.\n     */\n    instructionsSysvar?: Address<TAccountInstructionsSysvar>;\n    /** (Optional) Equality proof record account or context state account. */\n    equalityRecord?: Address<TAccountEqualityRecord>;\n    /**\n     * (Optional) Transfer amount ciphertext validity proof record\n     * account or context state account.\n     */\n    transferAmountCiphertextValidityRecord?: Address<TAccountTransferAmountCiphertextValidityRecord>;\n    /** (Optional) Fee sigma proof record account or context state account. */\n    feeSigmaRecord?: Address<TAccountFeeSigmaRecord>;\n    /** (Optional) Fee ciphertext validity proof record account or context state account. */\n    feeCiphertextValidityRecord?: Address<TAccountFeeCiphertextValidityRecord>;\n    /** (Optional) Range proof record account or context state account. */\n    rangeRecord?: Address<TAccountRangeRecord>;\n    /** The source account's owner/delegate or its multisignature account. */\n    authority: Address<TAccountAuthority> | TransactionSigner<TAccountAuthority>;\n    newSourceDecryptableAvailableBalance: ConfidentialTransferWithFeeInstructionDataArgs['newSourceDecryptableAvailableBalance'];\n    equalityProofInstructionOffset: ConfidentialTransferWithFeeInstructionDataArgs['equalityProofInstructionOffset'];\n    transferAmountCiphertextValidityProofInstructionOffset: ConfidentialTransferWithFeeInstructionDataArgs['transferAmountCiphertextValidityProofInstructionOffset'];\n    feeSigmaProofInstructionOffset: ConfidentialTransferWithFeeInstructionDataArgs['feeSigmaProofInstructionOffset'];\n    feeCiphertextValidityProofInstructionOffset: ConfidentialTransferWithFeeInstructionDataArgs['feeCiphertextValidityProofInstructionOffset'];\n    rangeProofInstructionOffset: ConfidentialTransferWithFeeInstructionDataArgs['rangeProofInstructionOffset'];\n    multiSigners?: Array<TransactionSigner>;\n};\n\nexport function getConfidentialTransferWithFeeInstruction<\n    TAccountSourceToken extends string,\n    TAccountMint extends string,\n    TAccountDestinationToken extends string,\n    TAccountInstructionsSysvar extends string,\n    TAccountEqualityRecord extends string,\n    TAccountTransferAmountCiphertextValidityRecord extends string,\n    TAccountFeeSigmaRecord extends string,\n    TAccountFeeCiphertextValidityRecord extends string,\n    TAccountRangeRecord extends string,\n    TAccountAuthority extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: ConfidentialTransferWithFeeInput<\n        TAccountSourceToken,\n        TAccountMint,\n        TAccountDestinationToken,\n        TAccountInstructionsSysvar,\n        TAccountEqualityRecord,\n        TAccountTransferAmountCiphertextValidityRecord,\n        TAccountFeeSigmaRecord,\n        TAccountFeeCiphertextValidityRecord,\n        TAccountRangeRecord,\n        TAccountAuthority\n    >,\n    config?: { programAddress?: TProgramAddress },\n): ConfidentialTransferWithFeeInstruction<\n    TProgramAddress,\n    TAccountSourceToken,\n    TAccountMint,\n    TAccountDestinationToken,\n    TAccountInstructionsSysvar,\n    TAccountEqualityRecord,\n    TAccountTransferAmountCiphertextValidityRecord,\n    TAccountFeeSigmaRecord,\n    TAccountFeeCiphertextValidityRecord,\n    TAccountRangeRecord,\n    (typeof input)['authority'] extends TransactionSigner<TAccountAuthority>\n        ? ReadonlySignerAccount<TAccountAuthority> & AccountSignerMeta<TAccountAuthority>\n        : TAccountAuthority\n> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        sourceToken: { value: input.sourceToken ?? null, isWritable: true },\n        mint: { value: input.mint ?? null, isWritable: false },\n        destinationToken: { value: input.destinationToken ?? null, isWritable: true },\n        instructionsSysvar: { value: input.instructionsSysvar ?? null, isWritable: false },\n        equalityRecord: { value: input.equalityRecord ?? null, isWritable: false },\n        transferAmountCiphertextValidityRecord: {\n            value: input.transferAmountCiphertextValidityRecord ?? null,\n            isWritable: false,\n        },\n        feeSigmaRecord: { value: input.feeSigmaRecord ?? null, isWritable: false },\n        feeCiphertextValidityRecord: { value: input.feeCiphertextValidityRecord ?? null, isWritable: false },\n        rangeRecord: { value: input.rangeRecord ?? null, isWritable: false },\n        authority: { value: input.authority ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    // Remaining accounts.\n    const remainingAccounts: AccountMeta[] = (args.multiSigners ?? []).map(signer => ({\n        address: signer.address,\n        role: AccountRole.READONLY_SIGNER,\n        signer,\n    }));\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [\n            getAccountMeta(accounts.sourceToken),\n            getAccountMeta(accounts.mint),\n            getAccountMeta(accounts.destinationToken),\n            getAccountMeta(accounts.instructionsSysvar),\n            getAccountMeta(accounts.equalityRecord),\n            getAccountMeta(accounts.transferAmountCiphertextValidityRecord),\n            getAccountMeta(accounts.feeSigmaRecord),\n            getAccountMeta(accounts.feeCiphertextValidityRecord),\n            getAccountMeta(accounts.rangeRecord),\n            getAccountMeta(accounts.authority),\n            ...remainingAccounts,\n        ],\n        data: getConfidentialTransferWithFeeInstructionDataEncoder().encode(\n            args as ConfidentialTransferWithFeeInstructionDataArgs,\n        ),\n        programAddress,\n    } as ConfidentialTransferWithFeeInstruction<\n        TProgramAddress,\n        TAccountSourceToken,\n        TAccountMint,\n        TAccountDestinationToken,\n        TAccountInstructionsSysvar,\n        TAccountEqualityRecord,\n        TAccountTransferAmountCiphertextValidityRecord,\n        TAccountFeeSigmaRecord,\n        TAccountFeeCiphertextValidityRecord,\n        TAccountRangeRecord,\n        (typeof input)['authority'] extends TransactionSigner<TAccountAuthority>\n            ? ReadonlySignerAccount<TAccountAuthority> & AccountSignerMeta<TAccountAuthority>\n            : TAccountAuthority\n    >);\n}\n\nexport type ParsedConfidentialTransferWithFeeInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The source SPL Token account. */\n        sourceToken: TAccountMetas[0];\n        /** The corresponding SPL Token mint. */\n        mint: TAccountMetas[1];\n        /** The destination SPL Token account. */\n        destinationToken: TAccountMetas[2];\n        /**\n         * (Optional) Instructions sysvar if at least one of the\n         * `zk_elgamal_proof` instructions are included in the same\n         * transaction.\n         */\n        instructionsSysvar?: TAccountMetas[3] | undefined;\n        /** (Optional) Equality proof record account or context state account. */\n        equalityRecord?: TAccountMetas[4] | undefined;\n        /**\n         * (Optional) Transfer amount ciphertext validity proof record\n         * account or context state account.\n         */\n        transferAmountCiphertextValidityRecord?: TAccountMetas[5] | undefined;\n        /** (Optional) Fee sigma proof record account or context state account. */\n        feeSigmaRecord?: TAccountMetas[6] | undefined;\n        /** (Optional) Fee ciphertext validity proof record account or context state account. */\n        feeCiphertextValidityRecord?: TAccountMetas[7] | undefined;\n        /** (Optional) Range proof record account or context state account. */\n        rangeRecord?: TAccountMetas[8] | undefined;\n        /** The source account's owner/delegate or its multisignature account. */\n        authority: TAccountMetas[9];\n    };\n    data: ConfidentialTransferWithFeeInstructionData;\n};\n\nexport function parseConfidentialTransferWithFeeInstruction<\n    TProgram extends string,\n    TAccountMetas extends readonly AccountMeta[],\n>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedConfidentialTransferWithFeeInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 10) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    const getNextOptionalAccount = () => {\n        const accountMeta = getNextAccount();\n        return accountMeta.address === TOKEN_2022_PROGRAM_ADDRESS ? undefined : accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: {\n            sourceToken: getNextAccount(),\n            mint: getNextAccount(),\n            destinationToken: getNextAccount(),\n            instructionsSysvar: getNextOptionalAccount(),\n            equalityRecord: getNextOptionalAccount(),\n            transferAmountCiphertextValidityRecord: getNextOptionalAccount(),\n            feeSigmaRecord: getNextOptionalAccount(),\n            feeCiphertextValidityRecord: getNextOptionalAccount(),\n            rangeRecord: getNextOptionalAccount(),\n            authority: getNextAccount(),\n        },\n        data: getConfidentialTransferWithFeeInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    AccountRole,\n    combineCodec,\n    getI8Decoder,\n    getI8Encoder,\n    getStructDecoder,\n    getStructEncoder,\n    getU64Decoder,\n    getU64Encoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type AccountSignerMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlyAccount,\n    type ReadonlySignerAccount,\n    type ReadonlyUint8Array,\n    type TransactionSigner,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\nimport {\n    getDecryptableBalanceDecoder,\n    getDecryptableBalanceEncoder,\n    type DecryptableBalance,\n    type DecryptableBalanceArgs,\n} from '../types';\n\nexport const CONFIDENTIAL_WITHDRAW_DISCRIMINATOR = 27;\n\nexport function getConfidentialWithdrawDiscriminatorBytes() {\n    return getU8Encoder().encode(CONFIDENTIAL_WITHDRAW_DISCRIMINATOR);\n}\n\nexport const CONFIDENTIAL_WITHDRAW_CONFIDENTIAL_TRANSFER_DISCRIMINATOR = 6;\n\nexport function getConfidentialWithdrawConfidentialTransferDiscriminatorBytes() {\n    return getU8Encoder().encode(CONFIDENTIAL_WITHDRAW_CONFIDENTIAL_TRANSFER_DISCRIMINATOR);\n}\n\nexport type ConfidentialWithdrawInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountToken extends string | AccountMeta<string> = string,\n    TAccountMint extends string | AccountMeta<string> = string,\n    TAccountInstructionsSysvar extends string | AccountMeta<string> = string,\n    TAccountEqualityRecord extends string | AccountMeta<string> = string,\n    TAccountRangeRecord extends string | AccountMeta<string> = string,\n    TAccountAuthority extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [\n            TAccountToken extends string ? WritableAccount<TAccountToken> : TAccountToken,\n            TAccountMint extends string ? ReadonlyAccount<TAccountMint> : TAccountMint,\n            TAccountInstructionsSysvar extends string\n                ? ReadonlyAccount<TAccountInstructionsSysvar>\n                : TAccountInstructionsSysvar,\n            TAccountEqualityRecord extends string ? ReadonlyAccount<TAccountEqualityRecord> : TAccountEqualityRecord,\n            TAccountRangeRecord extends string ? ReadonlyAccount<TAccountRangeRecord> : TAccountRangeRecord,\n            TAccountAuthority extends string ? ReadonlyAccount<TAccountAuthority> : TAccountAuthority,\n            ...TRemainingAccounts,\n        ]\n    >;\n\nexport type ConfidentialWithdrawInstructionData = {\n    discriminator: number;\n    confidentialTransferDiscriminator: number;\n    /** The amount of tokens to withdraw. */\n    amount: bigint;\n    /** Expected number of base 10 digits to the right of the decimal place. */\n    decimals: number;\n    /** The new decryptable balance if the withdrawal succeeds. */\n    newDecryptableAvailableBalance: DecryptableBalance;\n    /**\n     * Relative location of the\n     * `ProofInstruction::VerifyCiphertextCommitmentEquality` instruction\n     * to the `Withdraw` instruction in the transaction. If the offset is\n     * `0`, then use a context state account for the proof.\n     */\n    equalityProofInstructionOffset: number;\n    /**\n     * Relative location of the `ProofInstruction::BatchedRangeProofU64`\n     * instruction to the `Withdraw` instruction in the transaction. If the\n     * offset is `0`, then use a context state account for the proof.\n     */\n    rangeProofInstructionOffset: number;\n};\n\nexport type ConfidentialWithdrawInstructionDataArgs = {\n    /** The amount of tokens to withdraw. */\n    amount: number | bigint;\n    /** Expected number of base 10 digits to the right of the decimal place. */\n    decimals: number;\n    /** The new decryptable balance if the withdrawal succeeds. */\n    newDecryptableAvailableBalance: DecryptableBalanceArgs;\n    /**\n     * Relative location of the\n     * `ProofInstruction::VerifyCiphertextCommitmentEquality` instruction\n     * to the `Withdraw` instruction in the transaction. If the offset is\n     * `0`, then use a context state account for the proof.\n     */\n    equalityProofInstructionOffset: number;\n    /**\n     * Relative location of the `ProofInstruction::BatchedRangeProofU64`\n     * instruction to the `Withdraw` instruction in the transaction. If the\n     * offset is `0`, then use a context state account for the proof.\n     */\n    rangeProofInstructionOffset: number;\n};\n\nexport function getConfidentialWithdrawInstructionDataEncoder(): FixedSizeEncoder<ConfidentialWithdrawInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['confidentialTransferDiscriminator', getU8Encoder()],\n            ['amount', getU64Encoder()],\n            ['decimals', getU8Encoder()],\n            ['newDecryptableAvailableBalance', getDecryptableBalanceEncoder()],\n            ['equalityProofInstructionOffset', getI8Encoder()],\n            ['rangeProofInstructionOffset', getI8Encoder()],\n        ]),\n        value => ({\n            ...value,\n            discriminator: CONFIDENTIAL_WITHDRAW_DISCRIMINATOR,\n            confidentialTransferDiscriminator: CONFIDENTIAL_WITHDRAW_CONFIDENTIAL_TRANSFER_DISCRIMINATOR,\n        }),\n    );\n}\n\nexport function getConfidentialWithdrawInstructionDataDecoder(): FixedSizeDecoder<ConfidentialWithdrawInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['confidentialTransferDiscriminator', getU8Decoder()],\n        ['amount', getU64Decoder()],\n        ['decimals', getU8Decoder()],\n        ['newDecryptableAvailableBalance', getDecryptableBalanceDecoder()],\n        ['equalityProofInstructionOffset', getI8Decoder()],\n        ['rangeProofInstructionOffset', getI8Decoder()],\n    ]);\n}\n\nexport function getConfidentialWithdrawInstructionDataCodec(): FixedSizeCodec<\n    ConfidentialWithdrawInstructionDataArgs,\n    ConfidentialWithdrawInstructionData\n> {\n    return combineCodec(\n        getConfidentialWithdrawInstructionDataEncoder(),\n        getConfidentialWithdrawInstructionDataDecoder(),\n    );\n}\n\nexport type ConfidentialWithdrawInput<\n    TAccountToken extends string = string,\n    TAccountMint extends string = string,\n    TAccountInstructionsSysvar extends string = string,\n    TAccountEqualityRecord extends string = string,\n    TAccountRangeRecord extends string = string,\n    TAccountAuthority extends string = string,\n> = {\n    /** The SPL Token account. */\n    token: Address<TAccountToken>;\n    /** The corresponding SPL Token mint. */\n    mint: Address<TAccountMint>;\n    /**\n     * Instructions sysvar if at least one of the\n     * `zk_elgamal_proof` instructions are included in the same\n     * transaction.\n     */\n    instructionsSysvar?: Address<TAccountInstructionsSysvar>;\n    /** (Optional) Equality proof record account or context state account. */\n    equalityRecord?: Address<TAccountEqualityRecord>;\n    /** (Optional) Range proof record account or context state account. */\n    rangeRecord?: Address<TAccountRangeRecord>;\n    /** The source account's owner/delegate or its multisignature account. */\n    authority: Address<TAccountAuthority> | TransactionSigner<TAccountAuthority>;\n    amount: ConfidentialWithdrawInstructionDataArgs['amount'];\n    decimals: ConfidentialWithdrawInstructionDataArgs['decimals'];\n    newDecryptableAvailableBalance: ConfidentialWithdrawInstructionDataArgs['newDecryptableAvailableBalance'];\n    equalityProofInstructionOffset: ConfidentialWithdrawInstructionDataArgs['equalityProofInstructionOffset'];\n    rangeProofInstructionOffset: ConfidentialWithdrawInstructionDataArgs['rangeProofInstructionOffset'];\n    multiSigners?: Array<TransactionSigner>;\n};\n\nexport function getConfidentialWithdrawInstruction<\n    TAccountToken extends string,\n    TAccountMint extends string,\n    TAccountInstructionsSysvar extends string,\n    TAccountEqualityRecord extends string,\n    TAccountRangeRecord extends string,\n    TAccountAuthority extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: ConfidentialWithdrawInput<\n        TAccountToken,\n        TAccountMint,\n        TAccountInstructionsSysvar,\n        TAccountEqualityRecord,\n        TAccountRangeRecord,\n        TAccountAuthority\n    >,\n    config?: { programAddress?: TProgramAddress },\n): ConfidentialWithdrawInstruction<\n    TProgramAddress,\n    TAccountToken,\n    TAccountMint,\n    TAccountInstructionsSysvar,\n    TAccountEqualityRecord,\n    TAccountRangeRecord,\n    (typeof input)['authority'] extends TransactionSigner<TAccountAuthority>\n        ? ReadonlySignerAccount<TAccountAuthority> & AccountSignerMeta<TAccountAuthority>\n        : TAccountAuthority\n> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        token: { value: input.token ?? null, isWritable: true },\n        mint: { value: input.mint ?? null, isWritable: false },\n        instructionsSysvar: { value: input.instructionsSysvar ?? null, isWritable: false },\n        equalityRecord: { value: input.equalityRecord ?? null, isWritable: false },\n        rangeRecord: { value: input.rangeRecord ?? null, isWritable: false },\n        authority: { value: input.authority ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    // Remaining accounts.\n    const remainingAccounts: AccountMeta[] = (args.multiSigners ?? []).map(signer => ({\n        address: signer.address,\n        role: AccountRole.READONLY_SIGNER,\n        signer,\n    }));\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [\n            getAccountMeta(accounts.token),\n            getAccountMeta(accounts.mint),\n            getAccountMeta(accounts.instructionsSysvar),\n            getAccountMeta(accounts.equalityRecord),\n            getAccountMeta(accounts.rangeRecord),\n            getAccountMeta(accounts.authority),\n            ...remainingAccounts,\n        ],\n        data: getConfidentialWithdrawInstructionDataEncoder().encode(args as ConfidentialWithdrawInstructionDataArgs),\n        programAddress,\n    } as ConfidentialWithdrawInstruction<\n        TProgramAddress,\n        TAccountToken,\n        TAccountMint,\n        TAccountInstructionsSysvar,\n        TAccountEqualityRecord,\n        TAccountRangeRecord,\n        (typeof input)['authority'] extends TransactionSigner<TAccountAuthority>\n            ? ReadonlySignerAccount<TAccountAuthority> & AccountSignerMeta<TAccountAuthority>\n            : TAccountAuthority\n    >);\n}\n\nexport type ParsedConfidentialWithdrawInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The SPL Token account. */\n        token: TAccountMetas[0];\n        /** The corresponding SPL Token mint. */\n        mint: TAccountMetas[1];\n        /**\n         * Instructions sysvar if at least one of the\n         * `zk_elgamal_proof` instructions are included in the same\n         * transaction.\n         */\n        instructionsSysvar?: TAccountMetas[2] | undefined;\n        /** (Optional) Equality proof record account or context state account. */\n        equalityRecord?: TAccountMetas[3] | undefined;\n        /** (Optional) Range proof record account or context state account. */\n        rangeRecord?: TAccountMetas[4] | undefined;\n        /** The source account's owner/delegate or its multisignature account. */\n        authority: TAccountMetas[5];\n    };\n    data: ConfidentialWithdrawInstructionData;\n};\n\nexport function parseConfidentialWithdrawInstruction<\n    TProgram extends string,\n    TAccountMetas extends readonly AccountMeta[],\n>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedConfidentialWithdrawInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 6) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    const getNextOptionalAccount = () => {\n        const accountMeta = getNextAccount();\n        return accountMeta.address === TOKEN_2022_PROGRAM_ADDRESS ? undefined : accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: {\n            token: getNextAccount(),\n            mint: getNextAccount(),\n            instructionsSysvar: getNextOptionalAccount(),\n            equalityRecord: getNextOptionalAccount(),\n            rangeRecord: getNextOptionalAccount(),\n            authority: getNextAccount(),\n        },\n        data: getConfidentialWithdrawInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    AccountRole,\n    combineCodec,\n    getI8Decoder,\n    getI8Encoder,\n    getStructDecoder,\n    getStructEncoder,\n    getU64Decoder,\n    getU64Encoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type AccountSignerMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlyAccount,\n    type ReadonlySignerAccount,\n    type ReadonlyUint8Array,\n    type TransactionSigner,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\nimport {\n    getDecryptableBalanceDecoder,\n    getDecryptableBalanceEncoder,\n    type DecryptableBalance,\n    type DecryptableBalanceArgs,\n} from '../types';\n\nexport const CONFIGURE_CONFIDENTIAL_TRANSFER_ACCOUNT_DISCRIMINATOR = 27;\n\nexport function getConfigureConfidentialTransferAccountDiscriminatorBytes() {\n    return getU8Encoder().encode(CONFIGURE_CONFIDENTIAL_TRANSFER_ACCOUNT_DISCRIMINATOR);\n}\n\nexport const CONFIGURE_CONFIDENTIAL_TRANSFER_ACCOUNT_CONFIDENTIAL_TRANSFER_DISCRIMINATOR = 2;\n\nexport function getConfigureConfidentialTransferAccountConfidentialTransferDiscriminatorBytes() {\n    return getU8Encoder().encode(CONFIGURE_CONFIDENTIAL_TRANSFER_ACCOUNT_CONFIDENTIAL_TRANSFER_DISCRIMINATOR);\n}\n\nexport type ConfigureConfidentialTransferAccountInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountToken extends string | AccountMeta<string> = string,\n    TAccountMint extends string | AccountMeta<string> = string,\n    TAccountInstructionsSysvarOrContextState extends string | AccountMeta<string> =\n        'Sysvar1nstructions1111111111111111111111111',\n    TAccountRecord extends string | AccountMeta<string> = string,\n    TAccountAuthority extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [\n            TAccountToken extends string ? WritableAccount<TAccountToken> : TAccountToken,\n            TAccountMint extends string ? ReadonlyAccount<TAccountMint> : TAccountMint,\n            TAccountInstructionsSysvarOrContextState extends string\n                ? ReadonlyAccount<TAccountInstructionsSysvarOrContextState>\n                : TAccountInstructionsSysvarOrContextState,\n            TAccountRecord extends string ? ReadonlyAccount<TAccountRecord> : TAccountRecord,\n            TAccountAuthority extends string ? ReadonlyAccount<TAccountAuthority> : TAccountAuthority,\n            ...TRemainingAccounts,\n        ]\n    >;\n\nexport type ConfigureConfidentialTransferAccountInstructionData = {\n    discriminator: number;\n    confidentialTransferDiscriminator: number;\n    /** The decryptable balance (always 0) once the configure account succeeds. */\n    decryptableZeroBalance: DecryptableBalance;\n    /**\n     * The maximum number of despots and transfers that an account can receiver\n     * before the `ApplyPendingBalance` is executed\n     */\n    maximumPendingBalanceCreditCounter: bigint;\n    /**\n     * Relative location of the `ProofInstruction::ZeroCiphertextProof`\n     * instruction to the `ConfigureAccount` instruction in the\n     * transaction. If the offset is `0`, then use a context state account\n     * for the proof.\n     */\n    proofInstructionOffset: number;\n};\n\nexport type ConfigureConfidentialTransferAccountInstructionDataArgs = {\n    /** The decryptable balance (always 0) once the configure account succeeds. */\n    decryptableZeroBalance: DecryptableBalanceArgs;\n    /**\n     * The maximum number of despots and transfers that an account can receiver\n     * before the `ApplyPendingBalance` is executed\n     */\n    maximumPendingBalanceCreditCounter: number | bigint;\n    /**\n     * Relative location of the `ProofInstruction::ZeroCiphertextProof`\n     * instruction to the `ConfigureAccount` instruction in the\n     * transaction. If the offset is `0`, then use a context state account\n     * for the proof.\n     */\n    proofInstructionOffset: number;\n};\n\nexport function getConfigureConfidentialTransferAccountInstructionDataEncoder(): FixedSizeEncoder<ConfigureConfidentialTransferAccountInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['confidentialTransferDiscriminator', getU8Encoder()],\n            ['decryptableZeroBalance', getDecryptableBalanceEncoder()],\n            ['maximumPendingBalanceCreditCounter', getU64Encoder()],\n            ['proofInstructionOffset', getI8Encoder()],\n        ]),\n        value => ({\n            ...value,\n            discriminator: CONFIGURE_CONFIDENTIAL_TRANSFER_ACCOUNT_DISCRIMINATOR,\n            confidentialTransferDiscriminator:\n                CONFIGURE_CONFIDENTIAL_TRANSFER_ACCOUNT_CONFIDENTIAL_TRANSFER_DISCRIMINATOR,\n        }),\n    );\n}\n\nexport function getConfigureConfidentialTransferAccountInstructionDataDecoder(): FixedSizeDecoder<ConfigureConfidentialTransferAccountInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['confidentialTransferDiscriminator', getU8Decoder()],\n        ['decryptableZeroBalance', getDecryptableBalanceDecoder()],\n        ['maximumPendingBalanceCreditCounter', getU64Decoder()],\n        ['proofInstructionOffset', getI8Decoder()],\n    ]);\n}\n\nexport function getConfigureConfidentialTransferAccountInstructionDataCodec(): FixedSizeCodec<\n    ConfigureConfidentialTransferAccountInstructionDataArgs,\n    ConfigureConfidentialTransferAccountInstructionData\n> {\n    return combineCodec(\n        getConfigureConfidentialTransferAccountInstructionDataEncoder(),\n        getConfigureConfidentialTransferAccountInstructionDataDecoder(),\n    );\n}\n\nexport type ConfigureConfidentialTransferAccountInput<\n    TAccountToken extends string = string,\n    TAccountMint extends string = string,\n    TAccountInstructionsSysvarOrContextState extends string = string,\n    TAccountRecord extends string = string,\n    TAccountAuthority extends string = string,\n> = {\n    /** The SPL Token account. */\n    token: Address<TAccountToken>;\n    /** The corresponding SPL Token mint. */\n    mint: Address<TAccountMint>;\n    /**\n     * Instructions sysvar if `VerifyPubkeyValidity` is included in\n     * the same transaction or context state account if\n     * `VerifyPubkeyValidity` is pre-verified into a context state\n     * account.\n     */\n    instructionsSysvarOrContextState?: Address<TAccountInstructionsSysvarOrContextState>;\n    /** (Optional) Record account if the accompanying proof is to be read from a record account. */\n    record?: Address<TAccountRecord>;\n    /** The source account's owner/delegate or its multisignature account. */\n    authority: Address<TAccountAuthority> | TransactionSigner<TAccountAuthority>;\n    decryptableZeroBalance: ConfigureConfidentialTransferAccountInstructionDataArgs['decryptableZeroBalance'];\n    maximumPendingBalanceCreditCounter: ConfigureConfidentialTransferAccountInstructionDataArgs['maximumPendingBalanceCreditCounter'];\n    proofInstructionOffset: ConfigureConfidentialTransferAccountInstructionDataArgs['proofInstructionOffset'];\n    multiSigners?: Array<TransactionSigner>;\n};\n\nexport function getConfigureConfidentialTransferAccountInstruction<\n    TAccountToken extends string,\n    TAccountMint extends string,\n    TAccountInstructionsSysvarOrContextState extends string,\n    TAccountRecord extends string,\n    TAccountAuthority extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: ConfigureConfidentialTransferAccountInput<\n        TAccountToken,\n        TAccountMint,\n        TAccountInstructionsSysvarOrContextState,\n        TAccountRecord,\n        TAccountAuthority\n    >,\n    config?: { programAddress?: TProgramAddress },\n): ConfigureConfidentialTransferAccountInstruction<\n    TProgramAddress,\n    TAccountToken,\n    TAccountMint,\n    TAccountInstructionsSysvarOrContextState,\n    TAccountRecord,\n    (typeof input)['authority'] extends TransactionSigner<TAccountAuthority>\n        ? ReadonlySignerAccount<TAccountAuthority> & AccountSignerMeta<TAccountAuthority>\n        : TAccountAuthority\n> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        token: { value: input.token ?? null, isWritable: true },\n        mint: { value: input.mint ?? null, isWritable: false },\n        instructionsSysvarOrContextState: { value: input.instructionsSysvarOrContextState ?? null, isWritable: false },\n        record: { value: input.record ?? null, isWritable: false },\n        authority: { value: input.authority ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    // Resolve default values.\n    if (!accounts.instructionsSysvarOrContextState.value) {\n        accounts.instructionsSysvarOrContextState.value =\n            'Sysvar1nstructions1111111111111111111111111' as Address<'Sysvar1nstructions1111111111111111111111111'>;\n    }\n\n    // Remaining accounts.\n    const remainingAccounts: AccountMeta[] = (args.multiSigners ?? []).map(signer => ({\n        address: signer.address,\n        role: AccountRole.READONLY_SIGNER,\n        signer,\n    }));\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [\n            getAccountMeta(accounts.token),\n            getAccountMeta(accounts.mint),\n            getAccountMeta(accounts.instructionsSysvarOrContextState),\n            getAccountMeta(accounts.record),\n            getAccountMeta(accounts.authority),\n            ...remainingAccounts,\n        ],\n        data: getConfigureConfidentialTransferAccountInstructionDataEncoder().encode(\n            args as ConfigureConfidentialTransferAccountInstructionDataArgs,\n        ),\n        programAddress,\n    } as ConfigureConfidentialTransferAccountInstruction<\n        TProgramAddress,\n        TAccountToken,\n        TAccountMint,\n        TAccountInstructionsSysvarOrContextState,\n        TAccountRecord,\n        (typeof input)['authority'] extends TransactionSigner<TAccountAuthority>\n            ? ReadonlySignerAccount<TAccountAuthority> & AccountSignerMeta<TAccountAuthority>\n            : TAccountAuthority\n    >);\n}\n\nexport type ParsedConfigureConfidentialTransferAccountInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The SPL Token account. */\n        token: TAccountMetas[0];\n        /** The corresponding SPL Token mint. */\n        mint: TAccountMetas[1];\n        /**\n         * Instructions sysvar if `VerifyPubkeyValidity` is included in\n         * the same transaction or context state account if\n         * `VerifyPubkeyValidity` is pre-verified into a context state\n         * account.\n         */\n        instructionsSysvarOrContextState: TAccountMetas[2];\n        /** (Optional) Record account if the accompanying proof is to be read from a record account. */\n        record?: TAccountMetas[3] | undefined;\n        /** The source account's owner/delegate or its multisignature account. */\n        authority: TAccountMetas[4];\n    };\n    data: ConfigureConfidentialTransferAccountInstructionData;\n};\n\nexport function parseConfigureConfidentialTransferAccountInstruction<\n    TProgram extends string,\n    TAccountMetas extends readonly AccountMeta[],\n>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedConfigureConfidentialTransferAccountInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 5) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    const getNextOptionalAccount = () => {\n        const accountMeta = getNextAccount();\n        return accountMeta.address === TOKEN_2022_PROGRAM_ADDRESS ? undefined : accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: {\n            token: getNextAccount(),\n            mint: getNextAccount(),\n            instructionsSysvarOrContextState: getNextAccount(),\n            record: getNextOptionalAccount(),\n            authority: getNextAccount(),\n        },\n        data: getConfigureConfidentialTransferAccountInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport { getAddressEncoder, getProgramDerivedAddress, type Address, type ProgramDerivedAddress } from '@solana/kit';\n\nexport type AssociatedTokenSeeds = {\n    /** The wallet address of the associated token account. */\n    owner: Address;\n    /** The address of the token program to use. */\n    tokenProgram: Address;\n    /** The mint address of the associated token account. */\n    mint: Address;\n};\n\nexport async function findAssociatedTokenPda(\n    seeds: AssociatedTokenSeeds,\n    config: { programAddress?: Address | undefined } = {},\n): Promise<ProgramDerivedAddress> {\n    const {\n        programAddress = 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>,\n    } = config;\n    return await getProgramDerivedAddress({\n        programAddress,\n        seeds: [\n            getAddressEncoder().encode(seeds.owner),\n            getAddressEncoder().encode(seeds.tokenProgram),\n            getAddressEncoder().encode(seeds.mint),\n        ],\n    });\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    combineCodec,\n    getStructDecoder,\n    getStructEncoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type AccountSignerMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlyAccount,\n    type ReadonlyUint8Array,\n    type TransactionSigner,\n    type WritableAccount,\n    type WritableSignerAccount,\n} from '@solana/kit';\nimport { findAssociatedTokenPda } from '../pdas';\nimport { ASSOCIATED_TOKEN_PROGRAM_ADDRESS } from '../programs';\nimport { expectAddress, getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const CREATE_ASSOCIATED_TOKEN_DISCRIMINATOR = 0;\n\nexport function getCreateAssociatedTokenDiscriminatorBytes() {\n    return getU8Encoder().encode(CREATE_ASSOCIATED_TOKEN_DISCRIMINATOR);\n}\n\nexport type CreateAssociatedTokenInstruction<\n    TProgram extends string = typeof ASSOCIATED_TOKEN_PROGRAM_ADDRESS,\n    TAccountPayer extends string | AccountMeta<string> = string,\n    TAccountAta extends string | AccountMeta<string> = string,\n    TAccountOwner extends string | AccountMeta<string> = string,\n    TAccountMint extends string | AccountMeta<string> = string,\n    TAccountSystemProgram extends string | AccountMeta<string> = '11111111111111111111111111111111',\n    TAccountTokenProgram extends string | AccountMeta<string> = 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb',\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [\n            TAccountPayer extends string\n                ? WritableSignerAccount<TAccountPayer> & AccountSignerMeta<TAccountPayer>\n                : TAccountPayer,\n            TAccountAta extends string ? WritableAccount<TAccountAta> : TAccountAta,\n            TAccountOwner extends string ? ReadonlyAccount<TAccountOwner> : TAccountOwner,\n            TAccountMint extends string ? ReadonlyAccount<TAccountMint> : TAccountMint,\n            TAccountSystemProgram extends string ? ReadonlyAccount<TAccountSystemProgram> : TAccountSystemProgram,\n            TAccountTokenProgram extends string ? ReadonlyAccount<TAccountTokenProgram> : TAccountTokenProgram,\n            ...TRemainingAccounts,\n        ]\n    >;\n\nexport type CreateAssociatedTokenInstructionData = { discriminator: number };\n\nexport type CreateAssociatedTokenInstructionDataArgs = {};\n\nexport function getCreateAssociatedTokenInstructionDataEncoder(): FixedSizeEncoder<CreateAssociatedTokenInstructionDataArgs> {\n    return transformEncoder(getStructEncoder([['discriminator', getU8Encoder()]]), value => ({\n        ...value,\n        discriminator: CREATE_ASSOCIATED_TOKEN_DISCRIMINATOR,\n    }));\n}\n\nexport function getCreateAssociatedTokenInstructionDataDecoder(): FixedSizeDecoder<CreateAssociatedTokenInstructionData> {\n    return getStructDecoder([['discriminator', getU8Decoder()]]);\n}\n\nexport function getCreateAssociatedTokenInstructionDataCodec(): FixedSizeCodec<\n    CreateAssociatedTokenInstructionDataArgs,\n    CreateAssociatedTokenInstructionData\n> {\n    return combineCodec(\n        getCreateAssociatedTokenInstructionDataEncoder(),\n        getCreateAssociatedTokenInstructionDataDecoder(),\n    );\n}\n\nexport type CreateAssociatedTokenAsyncInput<\n    TAccountPayer extends string = string,\n    TAccountAta extends string = string,\n    TAccountOwner extends string = string,\n    TAccountMint extends string = string,\n    TAccountSystemProgram extends string = string,\n    TAccountTokenProgram extends string = string,\n> = {\n    /** Funding account (must be a system account). */\n    payer: TransactionSigner<TAccountPayer>;\n    /** Associated token account address to be created. */\n    ata?: Address<TAccountAta>;\n    /** Wallet address for the new associated token account. */\n    owner: Address<TAccountOwner>;\n    /** The token mint for the new associated token account. */\n    mint: Address<TAccountMint>;\n    /** System program. */\n    systemProgram?: Address<TAccountSystemProgram>;\n    /** SPL Token program. */\n    tokenProgram?: Address<TAccountTokenProgram>;\n};\n\nexport async function getCreateAssociatedTokenInstructionAsync<\n    TAccountPayer extends string,\n    TAccountAta extends string,\n    TAccountOwner extends string,\n    TAccountMint extends string,\n    TAccountSystemProgram extends string,\n    TAccountTokenProgram extends string,\n    TProgramAddress extends Address = typeof ASSOCIATED_TOKEN_PROGRAM_ADDRESS,\n>(\n    input: CreateAssociatedTokenAsyncInput<\n        TAccountPayer,\n        TAccountAta,\n        TAccountOwner,\n        TAccountMint,\n        TAccountSystemProgram,\n        TAccountTokenProgram\n    >,\n    config?: { programAddress?: TProgramAddress },\n): Promise<\n    CreateAssociatedTokenInstruction<\n        TProgramAddress,\n        TAccountPayer,\n        TAccountAta,\n        TAccountOwner,\n        TAccountMint,\n        TAccountSystemProgram,\n        TAccountTokenProgram\n    >\n> {\n    // Program address.\n    const programAddress = config?.programAddress ?? ASSOCIATED_TOKEN_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        payer: { value: input.payer ?? null, isWritable: true },\n        ata: { value: input.ata ?? null, isWritable: true },\n        owner: { value: input.owner ?? null, isWritable: false },\n        mint: { value: input.mint ?? null, isWritable: false },\n        systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n        tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Resolve default values.\n    if (!accounts.tokenProgram.value) {\n        accounts.tokenProgram.value =\n            'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb' as Address<'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb'>;\n    }\n    if (!accounts.ata.value) {\n        accounts.ata.value = await findAssociatedTokenPda({\n            owner: expectAddress(accounts.owner.value),\n            tokenProgram: expectAddress(accounts.tokenProgram.value),\n            mint: expectAddress(accounts.mint.value),\n        });\n    }\n    if (!accounts.systemProgram.value) {\n        accounts.systemProgram.value =\n            '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n    }\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [\n            getAccountMeta(accounts.payer),\n            getAccountMeta(accounts.ata),\n            getAccountMeta(accounts.owner),\n            getAccountMeta(accounts.mint),\n            getAccountMeta(accounts.systemProgram),\n            getAccountMeta(accounts.tokenProgram),\n        ],\n        data: getCreateAssociatedTokenInstructionDataEncoder().encode({}),\n        programAddress,\n    } as CreateAssociatedTokenInstruction<\n        TProgramAddress,\n        TAccountPayer,\n        TAccountAta,\n        TAccountOwner,\n        TAccountMint,\n        TAccountSystemProgram,\n        TAccountTokenProgram\n    >);\n}\n\nexport type CreateAssociatedTokenInput<\n    TAccountPayer extends string = string,\n    TAccountAta extends string = string,\n    TAccountOwner extends string = string,\n    TAccountMint extends string = string,\n    TAccountSystemProgram extends string = string,\n    TAccountTokenProgram extends string = string,\n> = {\n    /** Funding account (must be a system account). */\n    payer: TransactionSigner<TAccountPayer>;\n    /** Associated token account address to be created. */\n    ata: Address<TAccountAta>;\n    /** Wallet address for the new associated token account. */\n    owner: Address<TAccountOwner>;\n    /** The token mint for the new associated token account. */\n    mint: Address<TAccountMint>;\n    /** System program. */\n    systemProgram?: Address<TAccountSystemProgram>;\n    /** SPL Token program. */\n    tokenProgram?: Address<TAccountTokenProgram>;\n};\n\nexport function getCreateAssociatedTokenInstruction<\n    TAccountPayer extends string,\n    TAccountAta extends string,\n    TAccountOwner extends string,\n    TAccountMint extends string,\n    TAccountSystemProgram extends string,\n    TAccountTokenProgram extends string,\n    TProgramAddress extends Address = typeof ASSOCIATED_TOKEN_PROGRAM_ADDRESS,\n>(\n    input: CreateAssociatedTokenInput<\n        TAccountPayer,\n        TAccountAta,\n        TAccountOwner,\n        TAccountMint,\n        TAccountSystemProgram,\n        TAccountTokenProgram\n    >,\n    config?: { programAddress?: TProgramAddress },\n): CreateAssociatedTokenInstruction<\n    TProgramAddress,\n    TAccountPayer,\n    TAccountAta,\n    TAccountOwner,\n    TAccountMint,\n    TAccountSystemProgram,\n    TAccountTokenProgram\n> {\n    // Program address.\n    const programAddress = config?.programAddress ?? ASSOCIATED_TOKEN_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        payer: { value: input.payer ?? null, isWritable: true },\n        ata: { value: input.ata ?? null, isWritable: true },\n        owner: { value: input.owner ?? null, isWritable: false },\n        mint: { value: input.mint ?? null, isWritable: false },\n        systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n        tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Resolve default values.\n    if (!accounts.tokenProgram.value) {\n        accounts.tokenProgram.value =\n            'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb' as Address<'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb'>;\n    }\n    if (!accounts.systemProgram.value) {\n        accounts.systemProgram.value =\n            '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n    }\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [\n            getAccountMeta(accounts.payer),\n            getAccountMeta(accounts.ata),\n            getAccountMeta(accounts.owner),\n            getAccountMeta(accounts.mint),\n            getAccountMeta(accounts.systemProgram),\n            getAccountMeta(accounts.tokenProgram),\n        ],\n        data: getCreateAssociatedTokenInstructionDataEncoder().encode({}),\n        programAddress,\n    } as CreateAssociatedTokenInstruction<\n        TProgramAddress,\n        TAccountPayer,\n        TAccountAta,\n        TAccountOwner,\n        TAccountMint,\n        TAccountSystemProgram,\n        TAccountTokenProgram\n    >);\n}\n\nexport type ParsedCreateAssociatedTokenInstruction<\n    TProgram extends string = typeof ASSOCIATED_TOKEN_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** Funding account (must be a system account). */\n        payer: TAccountMetas[0];\n        /** Associated token account address to be created. */\n        ata: TAccountMetas[1];\n        /** Wallet address for the new associated token account. */\n        owner: TAccountMetas[2];\n        /** The token mint for the new associated token account. */\n        mint: TAccountMetas[3];\n        /** System program. */\n        systemProgram: TAccountMetas[4];\n        /** SPL Token program. */\n        tokenProgram: TAccountMetas[5];\n    };\n    data: CreateAssociatedTokenInstructionData;\n};\n\nexport function parseCreateAssociatedTokenInstruction<\n    TProgram extends string,\n    TAccountMetas extends readonly AccountMeta[],\n>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedCreateAssociatedTokenInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 6) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: {\n            payer: getNextAccount(),\n            ata: getNextAccount(),\n            owner: getNextAccount(),\n            mint: getNextAccount(),\n            systemProgram: getNextAccount(),\n            tokenProgram: getNextAccount(),\n        },\n        data: getCreateAssociatedTokenInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    combineCodec,\n    getStructDecoder,\n    getStructEncoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type AccountSignerMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlyAccount,\n    type ReadonlyUint8Array,\n    type TransactionSigner,\n    type WritableAccount,\n    type WritableSignerAccount,\n} from '@solana/kit';\nimport { findAssociatedTokenPda } from '../pdas';\nimport { ASSOCIATED_TOKEN_PROGRAM_ADDRESS } from '../programs';\nimport { expectAddress, getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const CREATE_ASSOCIATED_TOKEN_IDEMPOTENT_DISCRIMINATOR = 1;\n\nexport function getCreateAssociatedTokenIdempotentDiscriminatorBytes() {\n    return getU8Encoder().encode(CREATE_ASSOCIATED_TOKEN_IDEMPOTENT_DISCRIMINATOR);\n}\n\nexport type CreateAssociatedTokenIdempotentInstruction<\n    TProgram extends string = typeof ASSOCIATED_TOKEN_PROGRAM_ADDRESS,\n    TAccountPayer extends string | AccountMeta<string> = string,\n    TAccountAta extends string | AccountMeta<string> = string,\n    TAccountOwner extends string | AccountMeta<string> = string,\n    TAccountMint extends string | AccountMeta<string> = string,\n    TAccountSystemProgram extends string | AccountMeta<string> = '11111111111111111111111111111111',\n    TAccountTokenProgram extends string | AccountMeta<string> = 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb',\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [\n            TAccountPayer extends string\n                ? WritableSignerAccount<TAccountPayer> & AccountSignerMeta<TAccountPayer>\n                : TAccountPayer,\n            TAccountAta extends string ? WritableAccount<TAccountAta> : TAccountAta,\n            TAccountOwner extends string ? ReadonlyAccount<TAccountOwner> : TAccountOwner,\n            TAccountMint extends string ? ReadonlyAccount<TAccountMint> : TAccountMint,\n            TAccountSystemProgram extends string ? ReadonlyAccount<TAccountSystemProgram> : TAccountSystemProgram,\n            TAccountTokenProgram extends string ? ReadonlyAccount<TAccountTokenProgram> : TAccountTokenProgram,\n            ...TRemainingAccounts,\n        ]\n    >;\n\nexport type CreateAssociatedTokenIdempotentInstructionData = { discriminator: number };\n\nexport type CreateAssociatedTokenIdempotentInstructionDataArgs = {};\n\nexport function getCreateAssociatedTokenIdempotentInstructionDataEncoder(): FixedSizeEncoder<CreateAssociatedTokenIdempotentInstructionDataArgs> {\n    return transformEncoder(getStructEncoder([['discriminator', getU8Encoder()]]), value => ({\n        ...value,\n        discriminator: CREATE_ASSOCIATED_TOKEN_IDEMPOTENT_DISCRIMINATOR,\n    }));\n}\n\nexport function getCreateAssociatedTokenIdempotentInstructionDataDecoder(): FixedSizeDecoder<CreateAssociatedTokenIdempotentInstructionData> {\n    return getStructDecoder([['discriminator', getU8Decoder()]]);\n}\n\nexport function getCreateAssociatedTokenIdempotentInstructionDataCodec(): FixedSizeCodec<\n    CreateAssociatedTokenIdempotentInstructionDataArgs,\n    CreateAssociatedTokenIdempotentInstructionData\n> {\n    return combineCodec(\n        getCreateAssociatedTokenIdempotentInstructionDataEncoder(),\n        getCreateAssociatedTokenIdempotentInstructionDataDecoder(),\n    );\n}\n\nexport type CreateAssociatedTokenIdempotentAsyncInput<\n    TAccountPayer extends string = string,\n    TAccountAta extends string = string,\n    TAccountOwner extends string = string,\n    TAccountMint extends string = string,\n    TAccountSystemProgram extends string = string,\n    TAccountTokenProgram extends string = string,\n> = {\n    /** Funding account (must be a system account). */\n    payer: TransactionSigner<TAccountPayer>;\n    /** Associated token account address to be created. */\n    ata?: Address<TAccountAta>;\n    /** Wallet address for the new associated token account. */\n    owner: Address<TAccountOwner>;\n    /** The token mint for the new associated token account. */\n    mint: Address<TAccountMint>;\n    /** System program. */\n    systemProgram?: Address<TAccountSystemProgram>;\n    /** SPL Token program. */\n    tokenProgram?: Address<TAccountTokenProgram>;\n};\n\nexport async function getCreateAssociatedTokenIdempotentInstructionAsync<\n    TAccountPayer extends string,\n    TAccountAta extends string,\n    TAccountOwner extends string,\n    TAccountMint extends string,\n    TAccountSystemProgram extends string,\n    TAccountTokenProgram extends string,\n    TProgramAddress extends Address = typeof ASSOCIATED_TOKEN_PROGRAM_ADDRESS,\n>(\n    input: CreateAssociatedTokenIdempotentAsyncInput<\n        TAccountPayer,\n        TAccountAta,\n        TAccountOwner,\n        TAccountMint,\n        TAccountSystemProgram,\n        TAccountTokenProgram\n    >,\n    config?: { programAddress?: TProgramAddress },\n): Promise<\n    CreateAssociatedTokenIdempotentInstruction<\n        TProgramAddress,\n        TAccountPayer,\n        TAccountAta,\n        TAccountOwner,\n        TAccountMint,\n        TAccountSystemProgram,\n        TAccountTokenProgram\n    >\n> {\n    // Program address.\n    const programAddress = config?.programAddress ?? ASSOCIATED_TOKEN_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        payer: { value: input.payer ?? null, isWritable: true },\n        ata: { value: input.ata ?? null, isWritable: true },\n        owner: { value: input.owner ?? null, isWritable: false },\n        mint: { value: input.mint ?? null, isWritable: false },\n        systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n        tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Resolve default values.\n    if (!accounts.tokenProgram.value) {\n        accounts.tokenProgram.value =\n            'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb' as Address<'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb'>;\n    }\n    if (!accounts.ata.value) {\n        accounts.ata.value = await findAssociatedTokenPda({\n            owner: expectAddress(accounts.owner.value),\n            tokenProgram: expectAddress(accounts.tokenProgram.value),\n            mint: expectAddress(accounts.mint.value),\n        });\n    }\n    if (!accounts.systemProgram.value) {\n        accounts.systemProgram.value =\n            '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n    }\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [\n            getAccountMeta(accounts.payer),\n            getAccountMeta(accounts.ata),\n            getAccountMeta(accounts.owner),\n            getAccountMeta(accounts.mint),\n            getAccountMeta(accounts.systemProgram),\n            getAccountMeta(accounts.tokenProgram),\n        ],\n        data: getCreateAssociatedTokenIdempotentInstructionDataEncoder().encode({}),\n        programAddress,\n    } as CreateAssociatedTokenIdempotentInstruction<\n        TProgramAddress,\n        TAccountPayer,\n        TAccountAta,\n        TAccountOwner,\n        TAccountMint,\n        TAccountSystemProgram,\n        TAccountTokenProgram\n    >);\n}\n\nexport type CreateAssociatedTokenIdempotentInput<\n    TAccountPayer extends string = string,\n    TAccountAta extends string = string,\n    TAccountOwner extends string = string,\n    TAccountMint extends string = string,\n    TAccountSystemProgram extends string = string,\n    TAccountTokenProgram extends string = string,\n> = {\n    /** Funding account (must be a system account). */\n    payer: TransactionSigner<TAccountPayer>;\n    /** Associated token account address to be created. */\n    ata: Address<TAccountAta>;\n    /** Wallet address for the new associated token account. */\n    owner: Address<TAccountOwner>;\n    /** The token mint for the new associated token account. */\n    mint: Address<TAccountMint>;\n    /** System program. */\n    systemProgram?: Address<TAccountSystemProgram>;\n    /** SPL Token program. */\n    tokenProgram?: Address<TAccountTokenProgram>;\n};\n\nexport function getCreateAssociatedTokenIdempotentInstruction<\n    TAccountPayer extends string,\n    TAccountAta extends string,\n    TAccountOwner extends string,\n    TAccountMint extends string,\n    TAccountSystemProgram extends string,\n    TAccountTokenProgram extends string,\n    TProgramAddress extends Address = typeof ASSOCIATED_TOKEN_PROGRAM_ADDRESS,\n>(\n    input: CreateAssociatedTokenIdempotentInput<\n        TAccountPayer,\n        TAccountAta,\n        TAccountOwner,\n        TAccountMint,\n        TAccountSystemProgram,\n        TAccountTokenProgram\n    >,\n    config?: { programAddress?: TProgramAddress },\n): CreateAssociatedTokenIdempotentInstruction<\n    TProgramAddress,\n    TAccountPayer,\n    TAccountAta,\n    TAccountOwner,\n    TAccountMint,\n    TAccountSystemProgram,\n    TAccountTokenProgram\n> {\n    // Program address.\n    const programAddress = config?.programAddress ?? ASSOCIATED_TOKEN_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        payer: { value: input.payer ?? null, isWritable: true },\n        ata: { value: input.ata ?? null, isWritable: true },\n        owner: { value: input.owner ?? null, isWritable: false },\n        mint: { value: input.mint ?? null, isWritable: false },\n        systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n        tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Resolve default values.\n    if (!accounts.tokenProgram.value) {\n        accounts.tokenProgram.value =\n            'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb' as Address<'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb'>;\n    }\n    if (!accounts.systemProgram.value) {\n        accounts.systemProgram.value =\n            '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n    }\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [\n            getAccountMeta(accounts.payer),\n            getAccountMeta(accounts.ata),\n            getAccountMeta(accounts.owner),\n            getAccountMeta(accounts.mint),\n            getAccountMeta(accounts.systemProgram),\n            getAccountMeta(accounts.tokenProgram),\n        ],\n        data: getCreateAssociatedTokenIdempotentInstructionDataEncoder().encode({}),\n        programAddress,\n    } as CreateAssociatedTokenIdempotentInstruction<\n        TProgramAddress,\n        TAccountPayer,\n        TAccountAta,\n        TAccountOwner,\n        TAccountMint,\n        TAccountSystemProgram,\n        TAccountTokenProgram\n    >);\n}\n\nexport type ParsedCreateAssociatedTokenIdempotentInstruction<\n    TProgram extends string = typeof ASSOCIATED_TOKEN_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** Funding account (must be a system account). */\n        payer: TAccountMetas[0];\n        /** Associated token account address to be created. */\n        ata: TAccountMetas[1];\n        /** Wallet address for the new associated token account. */\n        owner: TAccountMetas[2];\n        /** The token mint for the new associated token account. */\n        mint: TAccountMetas[3];\n        /** System program. */\n        systemProgram: TAccountMetas[4];\n        /** SPL Token program. */\n        tokenProgram: TAccountMetas[5];\n    };\n    data: CreateAssociatedTokenIdempotentInstructionData;\n};\n\nexport function parseCreateAssociatedTokenIdempotentInstruction<\n    TProgram extends string,\n    TAccountMetas extends readonly AccountMeta[],\n>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedCreateAssociatedTokenIdempotentInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 6) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: {\n            payer: getNextAccount(),\n            ata: getNextAccount(),\n            owner: getNextAccount(),\n            mint: getNextAccount(),\n            systemProgram: getNextAccount(),\n            tokenProgram: getNextAccount(),\n        },\n        data: getCreateAssociatedTokenIdempotentInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    combineCodec,\n    getStructDecoder,\n    getStructEncoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type AccountSignerMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlyAccount,\n    type ReadonlyUint8Array,\n    type TransactionSigner,\n    type WritableAccount,\n    type WritableSignerAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const CREATE_NATIVE_MINT_DISCRIMINATOR = 31;\n\nexport function getCreateNativeMintDiscriminatorBytes() {\n    return getU8Encoder().encode(CREATE_NATIVE_MINT_DISCRIMINATOR);\n}\n\nexport type CreateNativeMintInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountPayer extends string | AccountMeta<string> = string,\n    TAccountNativeMint extends string | AccountMeta<string> = string,\n    TAccountSystemProgram extends string | AccountMeta<string> = '11111111111111111111111111111111',\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [\n            TAccountPayer extends string\n                ? WritableSignerAccount<TAccountPayer> & AccountSignerMeta<TAccountPayer>\n                : TAccountPayer,\n            TAccountNativeMint extends string ? WritableAccount<TAccountNativeMint> : TAccountNativeMint,\n            TAccountSystemProgram extends string ? ReadonlyAccount<TAccountSystemProgram> : TAccountSystemProgram,\n            ...TRemainingAccounts,\n        ]\n    >;\n\nexport type CreateNativeMintInstructionData = { discriminator: number };\n\nexport type CreateNativeMintInstructionDataArgs = {};\n\nexport function getCreateNativeMintInstructionDataEncoder(): FixedSizeEncoder<CreateNativeMintInstructionDataArgs> {\n    return transformEncoder(getStructEncoder([['discriminator', getU8Encoder()]]), value => ({\n        ...value,\n        discriminator: CREATE_NATIVE_MINT_DISCRIMINATOR,\n    }));\n}\n\nexport function getCreateNativeMintInstructionDataDecoder(): FixedSizeDecoder<CreateNativeMintInstructionData> {\n    return getStructDecoder([['discriminator', getU8Decoder()]]);\n}\n\nexport function getCreateNativeMintInstructionDataCodec(): FixedSizeCodec<\n    CreateNativeMintInstructionDataArgs,\n    CreateNativeMintInstructionData\n> {\n    return combineCodec(getCreateNativeMintInstructionDataEncoder(), getCreateNativeMintInstructionDataDecoder());\n}\n\nexport type CreateNativeMintInput<\n    TAccountPayer extends string = string,\n    TAccountNativeMint extends string = string,\n    TAccountSystemProgram extends string = string,\n> = {\n    /** Funding account (must be a system account) */\n    payer: TransactionSigner<TAccountPayer>;\n    /** The native mint address */\n    nativeMint: Address<TAccountNativeMint>;\n    /** System program for mint account funding */\n    systemProgram?: Address<TAccountSystemProgram>;\n};\n\nexport function getCreateNativeMintInstruction<\n    TAccountPayer extends string,\n    TAccountNativeMint extends string,\n    TAccountSystemProgram extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: CreateNativeMintInput<TAccountPayer, TAccountNativeMint, TAccountSystemProgram>,\n    config?: { programAddress?: TProgramAddress },\n): CreateNativeMintInstruction<TProgramAddress, TAccountPayer, TAccountNativeMint, TAccountSystemProgram> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        payer: { value: input.payer ?? null, isWritable: true },\n        nativeMint: { value: input.nativeMint ?? null, isWritable: true },\n        systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Resolve default values.\n    if (!accounts.systemProgram.value) {\n        accounts.systemProgram.value =\n            '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n    }\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [\n            getAccountMeta(accounts.payer),\n            getAccountMeta(accounts.nativeMint),\n            getAccountMeta(accounts.systemProgram),\n        ],\n        data: getCreateNativeMintInstructionDataEncoder().encode({}),\n        programAddress,\n    } as CreateNativeMintInstruction<TProgramAddress, TAccountPayer, TAccountNativeMint, TAccountSystemProgram>);\n}\n\nexport type ParsedCreateNativeMintInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** Funding account (must be a system account) */\n        payer: TAccountMetas[0];\n        /** The native mint address */\n        nativeMint: TAccountMetas[1];\n        /** System program for mint account funding */\n        systemProgram: TAccountMetas[2];\n    };\n    data: CreateNativeMintInstructionData;\n};\n\nexport function parseCreateNativeMintInstruction<TProgram extends string, TAccountMetas extends readonly AccountMeta[]>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedCreateNativeMintInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 3) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { payer: getNextAccount(), nativeMint: getNextAccount(), systemProgram: getNextAccount() },\n        data: getCreateNativeMintInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    AccountRole,\n    combineCodec,\n    getStructDecoder,\n    getStructEncoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type AccountSignerMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlyAccount,\n    type ReadonlySignerAccount,\n    type ReadonlyUint8Array,\n    type TransactionSigner,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const DISABLE_CONFIDENTIAL_CREDITS_DISCRIMINATOR = 27;\n\nexport function getDisableConfidentialCreditsDiscriminatorBytes() {\n    return getU8Encoder().encode(DISABLE_CONFIDENTIAL_CREDITS_DISCRIMINATOR);\n}\n\nexport const DISABLE_CONFIDENTIAL_CREDITS_CONFIDENTIAL_TRANSFER_DISCRIMINATOR = 10;\n\nexport function getDisableConfidentialCreditsConfidentialTransferDiscriminatorBytes() {\n    return getU8Encoder().encode(DISABLE_CONFIDENTIAL_CREDITS_CONFIDENTIAL_TRANSFER_DISCRIMINATOR);\n}\n\nexport type DisableConfidentialCreditsInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountToken extends string | AccountMeta<string> = string,\n    TAccountAuthority extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [\n            TAccountToken extends string ? WritableAccount<TAccountToken> : TAccountToken,\n            TAccountAuthority extends string ? ReadonlyAccount<TAccountAuthority> : TAccountAuthority,\n            ...TRemainingAccounts,\n        ]\n    >;\n\nexport type DisableConfidentialCreditsInstructionData = {\n    discriminator: number;\n    confidentialTransferDiscriminator: number;\n};\n\nexport type DisableConfidentialCreditsInstructionDataArgs = {};\n\nexport function getDisableConfidentialCreditsInstructionDataEncoder(): FixedSizeEncoder<DisableConfidentialCreditsInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['confidentialTransferDiscriminator', getU8Encoder()],\n        ]),\n        value => ({\n            ...value,\n            discriminator: DISABLE_CONFIDENTIAL_CREDITS_DISCRIMINATOR,\n            confidentialTransferDiscriminator: DISABLE_CONFIDENTIAL_CREDITS_CONFIDENTIAL_TRANSFER_DISCRIMINATOR,\n        }),\n    );\n}\n\nexport function getDisableConfidentialCreditsInstructionDataDecoder(): FixedSizeDecoder<DisableConfidentialCreditsInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['confidentialTransferDiscriminator', getU8Decoder()],\n    ]);\n}\n\nexport function getDisableConfidentialCreditsInstructionDataCodec(): FixedSizeCodec<\n    DisableConfidentialCreditsInstructionDataArgs,\n    DisableConfidentialCreditsInstructionData\n> {\n    return combineCodec(\n        getDisableConfidentialCreditsInstructionDataEncoder(),\n        getDisableConfidentialCreditsInstructionDataDecoder(),\n    );\n}\n\nexport type DisableConfidentialCreditsInput<\n    TAccountToken extends string = string,\n    TAccountAuthority extends string = string,\n> = {\n    /** The SPL Token account. */\n    token: Address<TAccountToken>;\n    /** The source account's owner/delegate or its multisignature account. */\n    authority: Address<TAccountAuthority> | TransactionSigner<TAccountAuthority>;\n    multiSigners?: Array<TransactionSigner>;\n};\n\nexport function getDisableConfidentialCreditsInstruction<\n    TAccountToken extends string,\n    TAccountAuthority extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: DisableConfidentialCreditsInput<TAccountToken, TAccountAuthority>,\n    config?: { programAddress?: TProgramAddress },\n): DisableConfidentialCreditsInstruction<\n    TProgramAddress,\n    TAccountToken,\n    (typeof input)['authority'] extends TransactionSigner<TAccountAuthority>\n        ? ReadonlySignerAccount<TAccountAuthority> & AccountSignerMeta<TAccountAuthority>\n        : TAccountAuthority\n> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        token: { value: input.token ?? null, isWritable: true },\n        authority: { value: input.authority ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    // Remaining accounts.\n    const remainingAccounts: AccountMeta[] = (args.multiSigners ?? []).map(signer => ({\n        address: signer.address,\n        role: AccountRole.READONLY_SIGNER,\n        signer,\n    }));\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [getAccountMeta(accounts.token), getAccountMeta(accounts.authority), ...remainingAccounts],\n        data: getDisableConfidentialCreditsInstructionDataEncoder().encode({}),\n        programAddress,\n    } as DisableConfidentialCreditsInstruction<\n        TProgramAddress,\n        TAccountToken,\n        (typeof input)['authority'] extends TransactionSigner<TAccountAuthority>\n            ? ReadonlySignerAccount<TAccountAuthority> & AccountSignerMeta<TAccountAuthority>\n            : TAccountAuthority\n    >);\n}\n\nexport type ParsedDisableConfidentialCreditsInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The SPL Token account. */\n        token: TAccountMetas[0];\n        /** The source account's owner/delegate or its multisignature account. */\n        authority: TAccountMetas[1];\n    };\n    data: DisableConfidentialCreditsInstructionData;\n};\n\nexport function parseDisableConfidentialCreditsInstruction<\n    TProgram extends string,\n    TAccountMetas extends readonly AccountMeta[],\n>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedDisableConfidentialCreditsInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 2) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { token: getNextAccount(), authority: getNextAccount() },\n        data: getDisableConfidentialCreditsInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    AccountRole,\n    combineCodec,\n    getStructDecoder,\n    getStructEncoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type AccountSignerMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlyAccount,\n    type ReadonlySignerAccount,\n    type ReadonlyUint8Array,\n    type TransactionSigner,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const DISABLE_CPI_GUARD_DISCRIMINATOR = 34;\n\nexport function getDisableCpiGuardDiscriminatorBytes() {\n    return getU8Encoder().encode(DISABLE_CPI_GUARD_DISCRIMINATOR);\n}\n\nexport const DISABLE_CPI_GUARD_CPI_GUARD_DISCRIMINATOR = 1;\n\nexport function getDisableCpiGuardCpiGuardDiscriminatorBytes() {\n    return getU8Encoder().encode(DISABLE_CPI_GUARD_CPI_GUARD_DISCRIMINATOR);\n}\n\nexport type DisableCpiGuardInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountToken extends string | AccountMeta<string> = string,\n    TAccountOwner extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [\n            TAccountToken extends string ? WritableAccount<TAccountToken> : TAccountToken,\n            TAccountOwner extends string ? ReadonlyAccount<TAccountOwner> : TAccountOwner,\n            ...TRemainingAccounts,\n        ]\n    >;\n\nexport type DisableCpiGuardInstructionData = { discriminator: number; cpiGuardDiscriminator: number };\n\nexport type DisableCpiGuardInstructionDataArgs = {};\n\nexport function getDisableCpiGuardInstructionDataEncoder(): FixedSizeEncoder<DisableCpiGuardInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['cpiGuardDiscriminator', getU8Encoder()],\n        ]),\n        value => ({\n            ...value,\n            discriminator: DISABLE_CPI_GUARD_DISCRIMINATOR,\n            cpiGuardDiscriminator: DISABLE_CPI_GUARD_CPI_GUARD_DISCRIMINATOR,\n        }),\n    );\n}\n\nexport function getDisableCpiGuardInstructionDataDecoder(): FixedSizeDecoder<DisableCpiGuardInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['cpiGuardDiscriminator', getU8Decoder()],\n    ]);\n}\n\nexport function getDisableCpiGuardInstructionDataCodec(): FixedSizeCodec<\n    DisableCpiGuardInstructionDataArgs,\n    DisableCpiGuardInstructionData\n> {\n    return combineCodec(getDisableCpiGuardInstructionDataEncoder(), getDisableCpiGuardInstructionDataDecoder());\n}\n\nexport type DisableCpiGuardInput<TAccountToken extends string = string, TAccountOwner extends string = string> = {\n    /** The token account to update. */\n    token: Address<TAccountToken>;\n    /** The account's owner/delegate or its multisignature account. */\n    owner: Address<TAccountOwner> | TransactionSigner<TAccountOwner>;\n    multiSigners?: Array<TransactionSigner>;\n};\n\nexport function getDisableCpiGuardInstruction<\n    TAccountToken extends string,\n    TAccountOwner extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: DisableCpiGuardInput<TAccountToken, TAccountOwner>,\n    config?: { programAddress?: TProgramAddress },\n): DisableCpiGuardInstruction<\n    TProgramAddress,\n    TAccountToken,\n    (typeof input)['owner'] extends TransactionSigner<TAccountOwner>\n        ? ReadonlySignerAccount<TAccountOwner> & AccountSignerMeta<TAccountOwner>\n        : TAccountOwner\n> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        token: { value: input.token ?? null, isWritable: true },\n        owner: { value: input.owner ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    // Remaining accounts.\n    const remainingAccounts: AccountMeta[] = (args.multiSigners ?? []).map(signer => ({\n        address: signer.address,\n        role: AccountRole.READONLY_SIGNER,\n        signer,\n    }));\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [getAccountMeta(accounts.token), getAccountMeta(accounts.owner), ...remainingAccounts],\n        data: getDisableCpiGuardInstructionDataEncoder().encode({}),\n        programAddress,\n    } as DisableCpiGuardInstruction<\n        TProgramAddress,\n        TAccountToken,\n        (typeof input)['owner'] extends TransactionSigner<TAccountOwner>\n            ? ReadonlySignerAccount<TAccountOwner> & AccountSignerMeta<TAccountOwner>\n            : TAccountOwner\n    >);\n}\n\nexport type ParsedDisableCpiGuardInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The token account to update. */\n        token: TAccountMetas[0];\n        /** The account's owner/delegate or its multisignature account. */\n        owner: TAccountMetas[1];\n    };\n    data: DisableCpiGuardInstructionData;\n};\n\nexport function parseDisableCpiGuardInstruction<TProgram extends string, TAccountMetas extends readonly AccountMeta[]>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedDisableCpiGuardInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 2) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { token: getNextAccount(), owner: getNextAccount() },\n        data: getDisableCpiGuardInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    AccountRole,\n    combineCodec,\n    getStructDecoder,\n    getStructEncoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type AccountSignerMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlyAccount,\n    type ReadonlySignerAccount,\n    type ReadonlyUint8Array,\n    type TransactionSigner,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const DISABLE_HARVEST_TO_MINT_DISCRIMINATOR = 37;\n\nexport function getDisableHarvestToMintDiscriminatorBytes() {\n    return getU8Encoder().encode(DISABLE_HARVEST_TO_MINT_DISCRIMINATOR);\n}\n\nexport const DISABLE_HARVEST_TO_MINT_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR = 5;\n\nexport function getDisableHarvestToMintConfidentialTransferFeeDiscriminatorBytes() {\n    return getU8Encoder().encode(DISABLE_HARVEST_TO_MINT_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR);\n}\n\nexport type DisableHarvestToMintInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMint extends string | AccountMeta<string> = string,\n    TAccountAuthority extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [\n            TAccountMint extends string ? WritableAccount<TAccountMint> : TAccountMint,\n            TAccountAuthority extends string ? ReadonlyAccount<TAccountAuthority> : TAccountAuthority,\n            ...TRemainingAccounts,\n        ]\n    >;\n\nexport type DisableHarvestToMintInstructionData = {\n    discriminator: number;\n    confidentialTransferFeeDiscriminator: number;\n};\n\nexport type DisableHarvestToMintInstructionDataArgs = {};\n\nexport function getDisableHarvestToMintInstructionDataEncoder(): FixedSizeEncoder<DisableHarvestToMintInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['confidentialTransferFeeDiscriminator', getU8Encoder()],\n        ]),\n        value => ({\n            ...value,\n            discriminator: DISABLE_HARVEST_TO_MINT_DISCRIMINATOR,\n            confidentialTransferFeeDiscriminator: DISABLE_HARVEST_TO_MINT_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR,\n        }),\n    );\n}\n\nexport function getDisableHarvestToMintInstructionDataDecoder(): FixedSizeDecoder<DisableHarvestToMintInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['confidentialTransferFeeDiscriminator', getU8Decoder()],\n    ]);\n}\n\nexport function getDisableHarvestToMintInstructionDataCodec(): FixedSizeCodec<\n    DisableHarvestToMintInstructionDataArgs,\n    DisableHarvestToMintInstructionData\n> {\n    return combineCodec(\n        getDisableHarvestToMintInstructionDataEncoder(),\n        getDisableHarvestToMintInstructionDataDecoder(),\n    );\n}\n\nexport type DisableHarvestToMintInput<\n    TAccountMint extends string = string,\n    TAccountAuthority extends string = string,\n> = {\n    /** The token mint. */\n    mint: Address<TAccountMint>;\n    /** The confidential transfer fee authority */\n    authority: Address<TAccountAuthority> | TransactionSigner<TAccountAuthority>;\n    multiSigners?: Array<TransactionSigner>;\n};\n\nexport function getDisableHarvestToMintInstruction<\n    TAccountMint extends string,\n    TAccountAuthority extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: DisableHarvestToMintInput<TAccountMint, TAccountAuthority>,\n    config?: { programAddress?: TProgramAddress },\n): DisableHarvestToMintInstruction<\n    TProgramAddress,\n    TAccountMint,\n    (typeof input)['authority'] extends TransactionSigner<TAccountAuthority>\n        ? ReadonlySignerAccount<TAccountAuthority> & AccountSignerMeta<TAccountAuthority>\n        : TAccountAuthority\n> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        mint: { value: input.mint ?? null, isWritable: true },\n        authority: { value: input.authority ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    // Remaining accounts.\n    const remainingAccounts: AccountMeta[] = (args.multiSigners ?? []).map(signer => ({\n        address: signer.address,\n        role: AccountRole.READONLY_SIGNER,\n        signer,\n    }));\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [getAccountMeta(accounts.mint), getAccountMeta(accounts.authority), ...remainingAccounts],\n        data: getDisableHarvestToMintInstructionDataEncoder().encode({}),\n        programAddress,\n    } as DisableHarvestToMintInstruction<\n        TProgramAddress,\n        TAccountMint,\n        (typeof input)['authority'] extends TransactionSigner<TAccountAuthority>\n            ? ReadonlySignerAccount<TAccountAuthority> & AccountSignerMeta<TAccountAuthority>\n            : TAccountAuthority\n    >);\n}\n\nexport type ParsedDisableHarvestToMintInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The token mint. */\n        mint: TAccountMetas[0];\n        /** The confidential transfer fee authority */\n        authority: TAccountMetas[1];\n    };\n    data: DisableHarvestToMintInstructionData;\n};\n\nexport function parseDisableHarvestToMintInstruction<\n    TProgram extends string,\n    TAccountMetas extends readonly AccountMeta[],\n>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedDisableHarvestToMintInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 2) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { mint: getNextAccount(), authority: getNextAccount() },\n        data: getDisableHarvestToMintInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    AccountRole,\n    combineCodec,\n    getStructDecoder,\n    getStructEncoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type AccountSignerMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlyAccount,\n    type ReadonlySignerAccount,\n    type ReadonlyUint8Array,\n    type TransactionSigner,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const DISABLE_MEMO_TRANSFERS_DISCRIMINATOR = 30;\n\nexport function getDisableMemoTransfersDiscriminatorBytes() {\n    return getU8Encoder().encode(DISABLE_MEMO_TRANSFERS_DISCRIMINATOR);\n}\n\nexport const DISABLE_MEMO_TRANSFERS_MEMO_TRANSFERS_DISCRIMINATOR = 1;\n\nexport function getDisableMemoTransfersMemoTransfersDiscriminatorBytes() {\n    return getU8Encoder().encode(DISABLE_MEMO_TRANSFERS_MEMO_TRANSFERS_DISCRIMINATOR);\n}\n\nexport type DisableMemoTransfersInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountToken extends string | AccountMeta<string> = string,\n    TAccountOwner extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [\n            TAccountToken extends string ? WritableAccount<TAccountToken> : TAccountToken,\n            TAccountOwner extends string ? ReadonlyAccount<TAccountOwner> : TAccountOwner,\n            ...TRemainingAccounts,\n        ]\n    >;\n\nexport type DisableMemoTransfersInstructionData = { discriminator: number; memoTransfersDiscriminator: number };\n\nexport type DisableMemoTransfersInstructionDataArgs = {};\n\nexport function getDisableMemoTransfersInstructionDataEncoder(): FixedSizeEncoder<DisableMemoTransfersInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['memoTransfersDiscriminator', getU8Encoder()],\n        ]),\n        value => ({\n            ...value,\n            discriminator: DISABLE_MEMO_TRANSFERS_DISCRIMINATOR,\n            memoTransfersDiscriminator: DISABLE_MEMO_TRANSFERS_MEMO_TRANSFERS_DISCRIMINATOR,\n        }),\n    );\n}\n\nexport function getDisableMemoTransfersInstructionDataDecoder(): FixedSizeDecoder<DisableMemoTransfersInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['memoTransfersDiscriminator', getU8Decoder()],\n    ]);\n}\n\nexport function getDisableMemoTransfersInstructionDataCodec(): FixedSizeCodec<\n    DisableMemoTransfersInstructionDataArgs,\n    DisableMemoTransfersInstructionData\n> {\n    return combineCodec(\n        getDisableMemoTransfersInstructionDataEncoder(),\n        getDisableMemoTransfersInstructionDataDecoder(),\n    );\n}\n\nexport type DisableMemoTransfersInput<TAccountToken extends string = string, TAccountOwner extends string = string> = {\n    /** The token account to update. */\n    token: Address<TAccountToken>;\n    /** The account's owner or its multisignature account. */\n    owner: Address<TAccountOwner> | TransactionSigner<TAccountOwner>;\n    multiSigners?: Array<TransactionSigner>;\n};\n\nexport function getDisableMemoTransfersInstruction<\n    TAccountToken extends string,\n    TAccountOwner extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: DisableMemoTransfersInput<TAccountToken, TAccountOwner>,\n    config?: { programAddress?: TProgramAddress },\n): DisableMemoTransfersInstruction<\n    TProgramAddress,\n    TAccountToken,\n    (typeof input)['owner'] extends TransactionSigner<TAccountOwner>\n        ? ReadonlySignerAccount<TAccountOwner> & AccountSignerMeta<TAccountOwner>\n        : TAccountOwner\n> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        token: { value: input.token ?? null, isWritable: true },\n        owner: { value: input.owner ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    // Remaining accounts.\n    const remainingAccounts: AccountMeta[] = (args.multiSigners ?? []).map(signer => ({\n        address: signer.address,\n        role: AccountRole.READONLY_SIGNER,\n        signer,\n    }));\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [getAccountMeta(accounts.token), getAccountMeta(accounts.owner), ...remainingAccounts],\n        data: getDisableMemoTransfersInstructionDataEncoder().encode({}),\n        programAddress,\n    } as DisableMemoTransfersInstruction<\n        TProgramAddress,\n        TAccountToken,\n        (typeof input)['owner'] extends TransactionSigner<TAccountOwner>\n            ? ReadonlySignerAccount<TAccountOwner> & AccountSignerMeta<TAccountOwner>\n            : TAccountOwner\n    >);\n}\n\nexport type ParsedDisableMemoTransfersInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The token account to update. */\n        token: TAccountMetas[0];\n        /** The account's owner or its multisignature account. */\n        owner: TAccountMetas[1];\n    };\n    data: DisableMemoTransfersInstructionData;\n};\n\nexport function parseDisableMemoTransfersInstruction<\n    TProgram extends string,\n    TAccountMetas extends readonly AccountMeta[],\n>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedDisableMemoTransfersInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 2) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { token: getNextAccount(), owner: getNextAccount() },\n        data: getDisableMemoTransfersInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    AccountRole,\n    combineCodec,\n    getStructDecoder,\n    getStructEncoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type AccountSignerMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlyAccount,\n    type ReadonlySignerAccount,\n    type ReadonlyUint8Array,\n    type TransactionSigner,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const DISABLE_NON_CONFIDENTIAL_CREDITS_DISCRIMINATOR = 27;\n\nexport function getDisableNonConfidentialCreditsDiscriminatorBytes() {\n    return getU8Encoder().encode(DISABLE_NON_CONFIDENTIAL_CREDITS_DISCRIMINATOR);\n}\n\nexport const DISABLE_NON_CONFIDENTIAL_CREDITS_CONFIDENTIAL_TRANSFER_DISCRIMINATOR = 12;\n\nexport function getDisableNonConfidentialCreditsConfidentialTransferDiscriminatorBytes() {\n    return getU8Encoder().encode(DISABLE_NON_CONFIDENTIAL_CREDITS_CONFIDENTIAL_TRANSFER_DISCRIMINATOR);\n}\n\nexport type DisableNonConfidentialCreditsInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountToken extends string | AccountMeta<string> = string,\n    TAccountAuthority extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [\n            TAccountToken extends string ? WritableAccount<TAccountToken> : TAccountToken,\n            TAccountAuthority extends string ? ReadonlyAccount<TAccountAuthority> : TAccountAuthority,\n            ...TRemainingAccounts,\n        ]\n    >;\n\nexport type DisableNonConfidentialCreditsInstructionData = {\n    discriminator: number;\n    confidentialTransferDiscriminator: number;\n};\n\nexport type DisableNonConfidentialCreditsInstructionDataArgs = {};\n\nexport function getDisableNonConfidentialCreditsInstructionDataEncoder(): FixedSizeEncoder<DisableNonConfidentialCreditsInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['confidentialTransferDiscriminator', getU8Encoder()],\n        ]),\n        value => ({\n            ...value,\n            discriminator: DISABLE_NON_CONFIDENTIAL_CREDITS_DISCRIMINATOR,\n            confidentialTransferDiscriminator: DISABLE_NON_CONFIDENTIAL_CREDITS_CONFIDENTIAL_TRANSFER_DISCRIMINATOR,\n        }),\n    );\n}\n\nexport function getDisableNonConfidentialCreditsInstructionDataDecoder(): FixedSizeDecoder<DisableNonConfidentialCreditsInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['confidentialTransferDiscriminator', getU8Decoder()],\n    ]);\n}\n\nexport function getDisableNonConfidentialCreditsInstructionDataCodec(): FixedSizeCodec<\n    DisableNonConfidentialCreditsInstructionDataArgs,\n    DisableNonConfidentialCreditsInstructionData\n> {\n    return combineCodec(\n        getDisableNonConfidentialCreditsInstructionDataEncoder(),\n        getDisableNonConfidentialCreditsInstructionDataDecoder(),\n    );\n}\n\nexport type DisableNonConfidentialCreditsInput<\n    TAccountToken extends string = string,\n    TAccountAuthority extends string = string,\n> = {\n    /** The SPL Token account. */\n    token: Address<TAccountToken>;\n    /** The source account's owner/delegate or its multisignature account. */\n    authority: Address<TAccountAuthority> | TransactionSigner<TAccountAuthority>;\n    multiSigners?: Array<TransactionSigner>;\n};\n\nexport function getDisableNonConfidentialCreditsInstruction<\n    TAccountToken extends string,\n    TAccountAuthority extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: DisableNonConfidentialCreditsInput<TAccountToken, TAccountAuthority>,\n    config?: { programAddress?: TProgramAddress },\n): DisableNonConfidentialCreditsInstruction<\n    TProgramAddress,\n    TAccountToken,\n    (typeof input)['authority'] extends TransactionSigner<TAccountAuthority>\n        ? ReadonlySignerAccount<TAccountAuthority> & AccountSignerMeta<TAccountAuthority>\n        : TAccountAuthority\n> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        token: { value: input.token ?? null, isWritable: true },\n        authority: { value: input.authority ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    // Remaining accounts.\n    const remainingAccounts: AccountMeta[] = (args.multiSigners ?? []).map(signer => ({\n        address: signer.address,\n        role: AccountRole.READONLY_SIGNER,\n        signer,\n    }));\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [getAccountMeta(accounts.token), getAccountMeta(accounts.authority), ...remainingAccounts],\n        data: getDisableNonConfidentialCreditsInstructionDataEncoder().encode({}),\n        programAddress,\n    } as DisableNonConfidentialCreditsInstruction<\n        TProgramAddress,\n        TAccountToken,\n        (typeof input)['authority'] extends TransactionSigner<TAccountAuthority>\n            ? ReadonlySignerAccount<TAccountAuthority> & AccountSignerMeta<TAccountAuthority>\n            : TAccountAuthority\n    >);\n}\n\nexport type ParsedDisableNonConfidentialCreditsInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The SPL Token account. */\n        token: TAccountMetas[0];\n        /** The source account's owner/delegate or its multisignature account. */\n        authority: TAccountMetas[1];\n    };\n    data: DisableNonConfidentialCreditsInstructionData;\n};\n\nexport function parseDisableNonConfidentialCreditsInstruction<\n    TProgram extends string,\n    TAccountMetas extends readonly AccountMeta[],\n>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedDisableNonConfidentialCreditsInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 2) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { token: getNextAccount(), authority: getNextAccount() },\n        data: getDisableNonConfidentialCreditsInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    combineCodec,\n    getBytesDecoder,\n    getBytesEncoder,\n    getOptionDecoder,\n    getOptionEncoder,\n    getStructDecoder,\n    getStructEncoder,\n    getU64Decoder,\n    getU64Encoder,\n    none,\n    transformEncoder,\n    type AccountMeta,\n    type Address,\n    type Codec,\n    type Decoder,\n    type Encoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type Option,\n    type OptionOrNullable,\n    type ReadonlyAccount,\n    type ReadonlyUint8Array,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const EMIT_TOKEN_METADATA_DISCRIMINATOR = new Uint8Array([250, 166, 180, 250, 13, 12, 184, 70]);\n\nexport function getEmitTokenMetadataDiscriminatorBytes() {\n    return getBytesEncoder().encode(EMIT_TOKEN_METADATA_DISCRIMINATOR);\n}\n\nexport type EmitTokenMetadataInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetadata extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [TAccountMetadata extends string ? ReadonlyAccount<TAccountMetadata> : TAccountMetadata, ...TRemainingAccounts]\n    >;\n\nexport type EmitTokenMetadataInstructionData = {\n    discriminator: ReadonlyUint8Array;\n    /** Start of range of data to emit */\n    start: Option<bigint>;\n    /** End of range of data to emit */\n    end: Option<bigint>;\n};\n\nexport type EmitTokenMetadataInstructionDataArgs = {\n    /** Start of range of data to emit */\n    start?: OptionOrNullable<number | bigint>;\n    /** End of range of data to emit */\n    end?: OptionOrNullable<number | bigint>;\n};\n\nexport function getEmitTokenMetadataInstructionDataEncoder(): Encoder<EmitTokenMetadataInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getBytesEncoder()],\n            ['start', getOptionEncoder(getU64Encoder())],\n            ['end', getOptionEncoder(getU64Encoder())],\n        ]),\n        value => ({\n            ...value,\n            discriminator: EMIT_TOKEN_METADATA_DISCRIMINATOR,\n            start: value.start ?? none(),\n            end: value.end ?? none(),\n        }),\n    );\n}\n\nexport function getEmitTokenMetadataInstructionDataDecoder(): Decoder<EmitTokenMetadataInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getBytesDecoder()],\n        ['start', getOptionDecoder(getU64Decoder())],\n        ['end', getOptionDecoder(getU64Decoder())],\n    ]);\n}\n\nexport function getEmitTokenMetadataInstructionDataCodec(): Codec<\n    EmitTokenMetadataInstructionDataArgs,\n    EmitTokenMetadataInstructionData\n> {\n    return combineCodec(getEmitTokenMetadataInstructionDataEncoder(), getEmitTokenMetadataInstructionDataDecoder());\n}\n\nexport type EmitTokenMetadataInput<TAccountMetadata extends string = string> = {\n    metadata: Address<TAccountMetadata>;\n    start?: EmitTokenMetadataInstructionDataArgs['start'];\n    end?: EmitTokenMetadataInstructionDataArgs['end'];\n};\n\nexport function getEmitTokenMetadataInstruction<\n    TAccountMetadata extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: EmitTokenMetadataInput<TAccountMetadata>,\n    config?: { programAddress?: TProgramAddress },\n): EmitTokenMetadataInstruction<TProgramAddress, TAccountMetadata> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = { metadata: { value: input.metadata ?? null, isWritable: false } };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [getAccountMeta(accounts.metadata)],\n        data: getEmitTokenMetadataInstructionDataEncoder().encode(args as EmitTokenMetadataInstructionDataArgs),\n        programAddress,\n    } as EmitTokenMetadataInstruction<TProgramAddress, TAccountMetadata>);\n}\n\nexport type ParsedEmitTokenMetadataInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        metadata: TAccountMetas[0];\n    };\n    data: EmitTokenMetadataInstructionData;\n};\n\nexport function parseEmitTokenMetadataInstruction<\n    TProgram extends string,\n    TAccountMetas extends readonly AccountMeta[],\n>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedEmitTokenMetadataInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 1) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { metadata: getNextAccount() },\n        data: getEmitTokenMetadataInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    AccountRole,\n    combineCodec,\n    getI8Decoder,\n    getI8Encoder,\n    getStructDecoder,\n    getStructEncoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type AccountSignerMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlyAccount,\n    type ReadonlySignerAccount,\n    type ReadonlyUint8Array,\n    type TransactionSigner,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const EMPTY_CONFIDENTIAL_TRANSFER_ACCOUNT_DISCRIMINATOR = 27;\n\nexport function getEmptyConfidentialTransferAccountDiscriminatorBytes() {\n    return getU8Encoder().encode(EMPTY_CONFIDENTIAL_TRANSFER_ACCOUNT_DISCRIMINATOR);\n}\n\nexport const EMPTY_CONFIDENTIAL_TRANSFER_ACCOUNT_CONFIDENTIAL_TRANSFER_DISCRIMINATOR = 4;\n\nexport function getEmptyConfidentialTransferAccountConfidentialTransferDiscriminatorBytes() {\n    return getU8Encoder().encode(EMPTY_CONFIDENTIAL_TRANSFER_ACCOUNT_CONFIDENTIAL_TRANSFER_DISCRIMINATOR);\n}\n\nexport type EmptyConfidentialTransferAccountInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountToken extends string | AccountMeta<string> = string,\n    TAccountInstructionsSysvarOrContextState extends string | AccountMeta<string> =\n        'Sysvar1nstructions1111111111111111111111111',\n    TAccountRecord extends string | AccountMeta<string> = string,\n    TAccountAuthority extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [\n            TAccountToken extends string ? WritableAccount<TAccountToken> : TAccountToken,\n            TAccountInstructionsSysvarOrContextState extends string\n                ? ReadonlyAccount<TAccountInstructionsSysvarOrContextState>\n                : TAccountInstructionsSysvarOrContextState,\n            TAccountRecord extends string ? ReadonlyAccount<TAccountRecord> : TAccountRecord,\n            TAccountAuthority extends string ? ReadonlyAccount<TAccountAuthority> : TAccountAuthority,\n            ...TRemainingAccounts,\n        ]\n    >;\n\nexport type EmptyConfidentialTransferAccountInstructionData = {\n    discriminator: number;\n    confidentialTransferDiscriminator: number;\n    /**\n     * Relative location of the `ProofInstruction::VerifyCloseAccount`\n     * instruction to the `EmptyAccount` instruction in the transaction. If\n     * the offset is `0`, then use a context state account for the proof.\n     */\n    proofInstructionOffset: number;\n};\n\nexport type EmptyConfidentialTransferAccountInstructionDataArgs = {\n    /**\n     * Relative location of the `ProofInstruction::VerifyCloseAccount`\n     * instruction to the `EmptyAccount` instruction in the transaction. If\n     * the offset is `0`, then use a context state account for the proof.\n     */\n    proofInstructionOffset: number;\n};\n\nexport function getEmptyConfidentialTransferAccountInstructionDataEncoder(): FixedSizeEncoder<EmptyConfidentialTransferAccountInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['confidentialTransferDiscriminator', getU8Encoder()],\n            ['proofInstructionOffset', getI8Encoder()],\n        ]),\n        value => ({\n            ...value,\n            discriminator: EMPTY_CONFIDENTIAL_TRANSFER_ACCOUNT_DISCRIMINATOR,\n            confidentialTransferDiscriminator: EMPTY_CONFIDENTIAL_TRANSFER_ACCOUNT_CONFIDENTIAL_TRANSFER_DISCRIMINATOR,\n        }),\n    );\n}\n\nexport function getEmptyConfidentialTransferAccountInstructionDataDecoder(): FixedSizeDecoder<EmptyConfidentialTransferAccountInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['confidentialTransferDiscriminator', getU8Decoder()],\n        ['proofInstructionOffset', getI8Decoder()],\n    ]);\n}\n\nexport function getEmptyConfidentialTransferAccountInstructionDataCodec(): FixedSizeCodec<\n    EmptyConfidentialTransferAccountInstructionDataArgs,\n    EmptyConfidentialTransferAccountInstructionData\n> {\n    return combineCodec(\n        getEmptyConfidentialTransferAccountInstructionDataEncoder(),\n        getEmptyConfidentialTransferAccountInstructionDataDecoder(),\n    );\n}\n\nexport type EmptyConfidentialTransferAccountInput<\n    TAccountToken extends string = string,\n    TAccountInstructionsSysvarOrContextState extends string = string,\n    TAccountRecord extends string = string,\n    TAccountAuthority extends string = string,\n> = {\n    /** The SPL Token account. */\n    token: Address<TAccountToken>;\n    /**\n     * Instructions sysvar if `VerifyZeroCiphertext` is included in\n     * the same transaction or context state account if\n     * `VerifyZeroCiphertext` is pre-verified into a context state\n     * account.\n     */\n    instructionsSysvarOrContextState?: Address<TAccountInstructionsSysvarOrContextState>;\n    /** (Optional) Record account if the accompanying proof is to be read from a record account. */\n    record?: Address<TAccountRecord>;\n    /** The source account's owner/delegate or its multisignature account. */\n    authority: Address<TAccountAuthority> | TransactionSigner<TAccountAuthority>;\n    proofInstructionOffset: EmptyConfidentialTransferAccountInstructionDataArgs['proofInstructionOffset'];\n    multiSigners?: Array<TransactionSigner>;\n};\n\nexport function getEmptyConfidentialTransferAccountInstruction<\n    TAccountToken extends string,\n    TAccountInstructionsSysvarOrContextState extends string,\n    TAccountRecord extends string,\n    TAccountAuthority extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: EmptyConfidentialTransferAccountInput<\n        TAccountToken,\n        TAccountInstructionsSysvarOrContextState,\n        TAccountRecord,\n        TAccountAuthority\n    >,\n    config?: { programAddress?: TProgramAddress },\n): EmptyConfidentialTransferAccountInstruction<\n    TProgramAddress,\n    TAccountToken,\n    TAccountInstructionsSysvarOrContextState,\n    TAccountRecord,\n    (typeof input)['authority'] extends TransactionSigner<TAccountAuthority>\n        ? ReadonlySignerAccount<TAccountAuthority> & AccountSignerMeta<TAccountAuthority>\n        : TAccountAuthority\n> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        token: { value: input.token ?? null, isWritable: true },\n        instructionsSysvarOrContextState: { value: input.instructionsSysvarOrContextState ?? null, isWritable: false },\n        record: { value: input.record ?? null, isWritable: false },\n        authority: { value: input.authority ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    // Resolve default values.\n    if (!accounts.instructionsSysvarOrContextState.value) {\n        accounts.instructionsSysvarOrContextState.value =\n            'Sysvar1nstructions1111111111111111111111111' as Address<'Sysvar1nstructions1111111111111111111111111'>;\n    }\n\n    // Remaining accounts.\n    const remainingAccounts: AccountMeta[] = (args.multiSigners ?? []).map(signer => ({\n        address: signer.address,\n        role: AccountRole.READONLY_SIGNER,\n        signer,\n    }));\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [\n            getAccountMeta(accounts.token),\n            getAccountMeta(accounts.instructionsSysvarOrContextState),\n            getAccountMeta(accounts.record),\n            getAccountMeta(accounts.authority),\n            ...remainingAccounts,\n        ],\n        data: getEmptyConfidentialTransferAccountInstructionDataEncoder().encode(\n            args as EmptyConfidentialTransferAccountInstructionDataArgs,\n        ),\n        programAddress,\n    } as EmptyConfidentialTransferAccountInstruction<\n        TProgramAddress,\n        TAccountToken,\n        TAccountInstructionsSysvarOrContextState,\n        TAccountRecord,\n        (typeof input)['authority'] extends TransactionSigner<TAccountAuthority>\n            ? ReadonlySignerAccount<TAccountAuthority> & AccountSignerMeta<TAccountAuthority>\n            : TAccountAuthority\n    >);\n}\n\nexport type ParsedEmptyConfidentialTransferAccountInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The SPL Token account. */\n        token: TAccountMetas[0];\n        /**\n         * Instructions sysvar if `VerifyZeroCiphertext` is included in\n         * the same transaction or context state account if\n         * `VerifyZeroCiphertext` is pre-verified into a context state\n         * account.\n         */\n        instructionsSysvarOrContextState: TAccountMetas[1];\n        /** (Optional) Record account if the accompanying proof is to be read from a record account. */\n        record?: TAccountMetas[2] | undefined;\n        /** The source account's owner/delegate or its multisignature account. */\n        authority: TAccountMetas[3];\n    };\n    data: EmptyConfidentialTransferAccountInstructionData;\n};\n\nexport function parseEmptyConfidentialTransferAccountInstruction<\n    TProgram extends string,\n    TAccountMetas extends readonly AccountMeta[],\n>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedEmptyConfidentialTransferAccountInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 4) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    const getNextOptionalAccount = () => {\n        const accountMeta = getNextAccount();\n        return accountMeta.address === TOKEN_2022_PROGRAM_ADDRESS ? undefined : accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: {\n            token: getNextAccount(),\n            instructionsSysvarOrContextState: getNextAccount(),\n            record: getNextOptionalAccount(),\n            authority: getNextAccount(),\n        },\n        data: getEmptyConfidentialTransferAccountInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    AccountRole,\n    combineCodec,\n    getStructDecoder,\n    getStructEncoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type AccountSignerMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlyAccount,\n    type ReadonlySignerAccount,\n    type ReadonlyUint8Array,\n    type TransactionSigner,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const ENABLE_CONFIDENTIAL_CREDITS_DISCRIMINATOR = 27;\n\nexport function getEnableConfidentialCreditsDiscriminatorBytes() {\n    return getU8Encoder().encode(ENABLE_CONFIDENTIAL_CREDITS_DISCRIMINATOR);\n}\n\nexport const ENABLE_CONFIDENTIAL_CREDITS_CONFIDENTIAL_TRANSFER_DISCRIMINATOR = 9;\n\nexport function getEnableConfidentialCreditsConfidentialTransferDiscriminatorBytes() {\n    return getU8Encoder().encode(ENABLE_CONFIDENTIAL_CREDITS_CONFIDENTIAL_TRANSFER_DISCRIMINATOR);\n}\n\nexport type EnableConfidentialCreditsInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountToken extends string | AccountMeta<string> = string,\n    TAccountAuthority extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [\n            TAccountToken extends string ? WritableAccount<TAccountToken> : TAccountToken,\n            TAccountAuthority extends string ? ReadonlyAccount<TAccountAuthority> : TAccountAuthority,\n            ...TRemainingAccounts,\n        ]\n    >;\n\nexport type EnableConfidentialCreditsInstructionData = {\n    discriminator: number;\n    confidentialTransferDiscriminator: number;\n};\n\nexport type EnableConfidentialCreditsInstructionDataArgs = {};\n\nexport function getEnableConfidentialCreditsInstructionDataEncoder(): FixedSizeEncoder<EnableConfidentialCreditsInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['confidentialTransferDiscriminator', getU8Encoder()],\n        ]),\n        value => ({\n            ...value,\n            discriminator: ENABLE_CONFIDENTIAL_CREDITS_DISCRIMINATOR,\n            confidentialTransferDiscriminator: ENABLE_CONFIDENTIAL_CREDITS_CONFIDENTIAL_TRANSFER_DISCRIMINATOR,\n        }),\n    );\n}\n\nexport function getEnableConfidentialCreditsInstructionDataDecoder(): FixedSizeDecoder<EnableConfidentialCreditsInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['confidentialTransferDiscriminator', getU8Decoder()],\n    ]);\n}\n\nexport function getEnableConfidentialCreditsInstructionDataCodec(): FixedSizeCodec<\n    EnableConfidentialCreditsInstructionDataArgs,\n    EnableConfidentialCreditsInstructionData\n> {\n    return combineCodec(\n        getEnableConfidentialCreditsInstructionDataEncoder(),\n        getEnableConfidentialCreditsInstructionDataDecoder(),\n    );\n}\n\nexport type EnableConfidentialCreditsInput<\n    TAccountToken extends string = string,\n    TAccountAuthority extends string = string,\n> = {\n    /** The SPL Token account. */\n    token: Address<TAccountToken>;\n    /** The source account's owner/delegate or its multisignature account. */\n    authority: Address<TAccountAuthority> | TransactionSigner<TAccountAuthority>;\n    multiSigners?: Array<TransactionSigner>;\n};\n\nexport function getEnableConfidentialCreditsInstruction<\n    TAccountToken extends string,\n    TAccountAuthority extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: EnableConfidentialCreditsInput<TAccountToken, TAccountAuthority>,\n    config?: { programAddress?: TProgramAddress },\n): EnableConfidentialCreditsInstruction<\n    TProgramAddress,\n    TAccountToken,\n    (typeof input)['authority'] extends TransactionSigner<TAccountAuthority>\n        ? ReadonlySignerAccount<TAccountAuthority> & AccountSignerMeta<TAccountAuthority>\n        : TAccountAuthority\n> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        token: { value: input.token ?? null, isWritable: true },\n        authority: { value: input.authority ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    // Remaining accounts.\n    const remainingAccounts: AccountMeta[] = (args.multiSigners ?? []).map(signer => ({\n        address: signer.address,\n        role: AccountRole.READONLY_SIGNER,\n        signer,\n    }));\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [getAccountMeta(accounts.token), getAccountMeta(accounts.authority), ...remainingAccounts],\n        data: getEnableConfidentialCreditsInstructionDataEncoder().encode({}),\n        programAddress,\n    } as EnableConfidentialCreditsInstruction<\n        TProgramAddress,\n        TAccountToken,\n        (typeof input)['authority'] extends TransactionSigner<TAccountAuthority>\n            ? ReadonlySignerAccount<TAccountAuthority> & AccountSignerMeta<TAccountAuthority>\n            : TAccountAuthority\n    >);\n}\n\nexport type ParsedEnableConfidentialCreditsInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The SPL Token account. */\n        token: TAccountMetas[0];\n        /** The source account's owner/delegate or its multisignature account. */\n        authority: TAccountMetas[1];\n    };\n    data: EnableConfidentialCreditsInstructionData;\n};\n\nexport function parseEnableConfidentialCreditsInstruction<\n    TProgram extends string,\n    TAccountMetas extends readonly AccountMeta[],\n>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedEnableConfidentialCreditsInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 2) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { token: getNextAccount(), authority: getNextAccount() },\n        data: getEnableConfidentialCreditsInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    AccountRole,\n    combineCodec,\n    getStructDecoder,\n    getStructEncoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type AccountSignerMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlyAccount,\n    type ReadonlySignerAccount,\n    type ReadonlyUint8Array,\n    type TransactionSigner,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const ENABLE_CPI_GUARD_DISCRIMINATOR = 34;\n\nexport function getEnableCpiGuardDiscriminatorBytes() {\n    return getU8Encoder().encode(ENABLE_CPI_GUARD_DISCRIMINATOR);\n}\n\nexport const ENABLE_CPI_GUARD_CPI_GUARD_DISCRIMINATOR = 0;\n\nexport function getEnableCpiGuardCpiGuardDiscriminatorBytes() {\n    return getU8Encoder().encode(ENABLE_CPI_GUARD_CPI_GUARD_DISCRIMINATOR);\n}\n\nexport type EnableCpiGuardInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountToken extends string | AccountMeta<string> = string,\n    TAccountOwner extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [\n            TAccountToken extends string ? WritableAccount<TAccountToken> : TAccountToken,\n            TAccountOwner extends string ? ReadonlyAccount<TAccountOwner> : TAccountOwner,\n            ...TRemainingAccounts,\n        ]\n    >;\n\nexport type EnableCpiGuardInstructionData = { discriminator: number; cpiGuardDiscriminator: number };\n\nexport type EnableCpiGuardInstructionDataArgs = {};\n\nexport function getEnableCpiGuardInstructionDataEncoder(): FixedSizeEncoder<EnableCpiGuardInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['cpiGuardDiscriminator', getU8Encoder()],\n        ]),\n        value => ({\n            ...value,\n            discriminator: ENABLE_CPI_GUARD_DISCRIMINATOR,\n            cpiGuardDiscriminator: ENABLE_CPI_GUARD_CPI_GUARD_DISCRIMINATOR,\n        }),\n    );\n}\n\nexport function getEnableCpiGuardInstructionDataDecoder(): FixedSizeDecoder<EnableCpiGuardInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['cpiGuardDiscriminator', getU8Decoder()],\n    ]);\n}\n\nexport function getEnableCpiGuardInstructionDataCodec(): FixedSizeCodec<\n    EnableCpiGuardInstructionDataArgs,\n    EnableCpiGuardInstructionData\n> {\n    return combineCodec(getEnableCpiGuardInstructionDataEncoder(), getEnableCpiGuardInstructionDataDecoder());\n}\n\nexport type EnableCpiGuardInput<TAccountToken extends string = string, TAccountOwner extends string = string> = {\n    /** The token account to update. */\n    token: Address<TAccountToken>;\n    /** The account's owner/delegate or its multisignature account. */\n    owner: Address<TAccountOwner> | TransactionSigner<TAccountOwner>;\n    multiSigners?: Array<TransactionSigner>;\n};\n\nexport function getEnableCpiGuardInstruction<\n    TAccountToken extends string,\n    TAccountOwner extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: EnableCpiGuardInput<TAccountToken, TAccountOwner>,\n    config?: { programAddress?: TProgramAddress },\n): EnableCpiGuardInstruction<\n    TProgramAddress,\n    TAccountToken,\n    (typeof input)['owner'] extends TransactionSigner<TAccountOwner>\n        ? ReadonlySignerAccount<TAccountOwner> & AccountSignerMeta<TAccountOwner>\n        : TAccountOwner\n> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        token: { value: input.token ?? null, isWritable: true },\n        owner: { value: input.owner ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    // Remaining accounts.\n    const remainingAccounts: AccountMeta[] = (args.multiSigners ?? []).map(signer => ({\n        address: signer.address,\n        role: AccountRole.READONLY_SIGNER,\n        signer,\n    }));\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [getAccountMeta(accounts.token), getAccountMeta(accounts.owner), ...remainingAccounts],\n        data: getEnableCpiGuardInstructionDataEncoder().encode({}),\n        programAddress,\n    } as EnableCpiGuardInstruction<\n        TProgramAddress,\n        TAccountToken,\n        (typeof input)['owner'] extends TransactionSigner<TAccountOwner>\n            ? ReadonlySignerAccount<TAccountOwner> & AccountSignerMeta<TAccountOwner>\n            : TAccountOwner\n    >);\n}\n\nexport type ParsedEnableCpiGuardInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The token account to update. */\n        token: TAccountMetas[0];\n        /** The account's owner/delegate or its multisignature account. */\n        owner: TAccountMetas[1];\n    };\n    data: EnableCpiGuardInstructionData;\n};\n\nexport function parseEnableCpiGuardInstruction<TProgram extends string, TAccountMetas extends readonly AccountMeta[]>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedEnableCpiGuardInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 2) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { token: getNextAccount(), owner: getNextAccount() },\n        data: getEnableCpiGuardInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    AccountRole,\n    combineCodec,\n    getStructDecoder,\n    getStructEncoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type AccountSignerMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlyAccount,\n    type ReadonlySignerAccount,\n    type ReadonlyUint8Array,\n    type TransactionSigner,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const ENABLE_HARVEST_TO_MINT_DISCRIMINATOR = 37;\n\nexport function getEnableHarvestToMintDiscriminatorBytes() {\n    return getU8Encoder().encode(ENABLE_HARVEST_TO_MINT_DISCRIMINATOR);\n}\n\nexport const ENABLE_HARVEST_TO_MINT_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR = 4;\n\nexport function getEnableHarvestToMintConfidentialTransferFeeDiscriminatorBytes() {\n    return getU8Encoder().encode(ENABLE_HARVEST_TO_MINT_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR);\n}\n\nexport type EnableHarvestToMintInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMint extends string | AccountMeta<string> = string,\n    TAccountAuthority extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [\n            TAccountMint extends string ? WritableAccount<TAccountMint> : TAccountMint,\n            TAccountAuthority extends string ? ReadonlyAccount<TAccountAuthority> : TAccountAuthority,\n            ...TRemainingAccounts,\n        ]\n    >;\n\nexport type EnableHarvestToMintInstructionData = {\n    discriminator: number;\n    confidentialTransferFeeDiscriminator: number;\n};\n\nexport type EnableHarvestToMintInstructionDataArgs = {};\n\nexport function getEnableHarvestToMintInstructionDataEncoder(): FixedSizeEncoder<EnableHarvestToMintInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['confidentialTransferFeeDiscriminator', getU8Encoder()],\n        ]),\n        value => ({\n            ...value,\n            discriminator: ENABLE_HARVEST_TO_MINT_DISCRIMINATOR,\n            confidentialTransferFeeDiscriminator: ENABLE_HARVEST_TO_MINT_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR,\n        }),\n    );\n}\n\nexport function getEnableHarvestToMintInstructionDataDecoder(): FixedSizeDecoder<EnableHarvestToMintInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['confidentialTransferFeeDiscriminator', getU8Decoder()],\n    ]);\n}\n\nexport function getEnableHarvestToMintInstructionDataCodec(): FixedSizeCodec<\n    EnableHarvestToMintInstructionDataArgs,\n    EnableHarvestToMintInstructionData\n> {\n    return combineCodec(getEnableHarvestToMintInstructionDataEncoder(), getEnableHarvestToMintInstructionDataDecoder());\n}\n\nexport type EnableHarvestToMintInput<\n    TAccountMint extends string = string,\n    TAccountAuthority extends string = string,\n> = {\n    /** The token mint. */\n    mint: Address<TAccountMint>;\n    /** The confidential transfer fee authority */\n    authority: Address<TAccountAuthority> | TransactionSigner<TAccountAuthority>;\n    multiSigners?: Array<TransactionSigner>;\n};\n\nexport function getEnableHarvestToMintInstruction<\n    TAccountMint extends string,\n    TAccountAuthority extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: EnableHarvestToMintInput<TAccountMint, TAccountAuthority>,\n    config?: { programAddress?: TProgramAddress },\n): EnableHarvestToMintInstruction<\n    TProgramAddress,\n    TAccountMint,\n    (typeof input)['authority'] extends TransactionSigner<TAccountAuthority>\n        ? ReadonlySignerAccount<TAccountAuthority> & AccountSignerMeta<TAccountAuthority>\n        : TAccountAuthority\n> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        mint: { value: input.mint ?? null, isWritable: true },\n        authority: { value: input.authority ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    // Remaining accounts.\n    const remainingAccounts: AccountMeta[] = (args.multiSigners ?? []).map(signer => ({\n        address: signer.address,\n        role: AccountRole.READONLY_SIGNER,\n        signer,\n    }));\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [getAccountMeta(accounts.mint), getAccountMeta(accounts.authority), ...remainingAccounts],\n        data: getEnableHarvestToMintInstructionDataEncoder().encode({}),\n        programAddress,\n    } as EnableHarvestToMintInstruction<\n        TProgramAddress,\n        TAccountMint,\n        (typeof input)['authority'] extends TransactionSigner<TAccountAuthority>\n            ? ReadonlySignerAccount<TAccountAuthority> & AccountSignerMeta<TAccountAuthority>\n            : TAccountAuthority\n    >);\n}\n\nexport type ParsedEnableHarvestToMintInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The token mint. */\n        mint: TAccountMetas[0];\n        /** The confidential transfer fee authority */\n        authority: TAccountMetas[1];\n    };\n    data: EnableHarvestToMintInstructionData;\n};\n\nexport function parseEnableHarvestToMintInstruction<\n    TProgram extends string,\n    TAccountMetas extends readonly AccountMeta[],\n>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedEnableHarvestToMintInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 2) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { mint: getNextAccount(), authority: getNextAccount() },\n        data: getEnableHarvestToMintInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    AccountRole,\n    combineCodec,\n    getStructDecoder,\n    getStructEncoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type AccountSignerMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlyAccount,\n    type ReadonlySignerAccount,\n    type ReadonlyUint8Array,\n    type TransactionSigner,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const ENABLE_MEMO_TRANSFERS_DISCRIMINATOR = 30;\n\nexport function getEnableMemoTransfersDiscriminatorBytes() {\n    return getU8Encoder().encode(ENABLE_MEMO_TRANSFERS_DISCRIMINATOR);\n}\n\nexport const ENABLE_MEMO_TRANSFERS_MEMO_TRANSFERS_DISCRIMINATOR = 0;\n\nexport function getEnableMemoTransfersMemoTransfersDiscriminatorBytes() {\n    return getU8Encoder().encode(ENABLE_MEMO_TRANSFERS_MEMO_TRANSFERS_DISCRIMINATOR);\n}\n\nexport type EnableMemoTransfersInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountToken extends string | AccountMeta<string> = string,\n    TAccountOwner extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [\n            TAccountToken extends string ? WritableAccount<TAccountToken> : TAccountToken,\n            TAccountOwner extends string ? ReadonlyAccount<TAccountOwner> : TAccountOwner,\n            ...TRemainingAccounts,\n        ]\n    >;\n\nexport type EnableMemoTransfersInstructionData = { discriminator: number; memoTransfersDiscriminator: number };\n\nexport type EnableMemoTransfersInstructionDataArgs = {};\n\nexport function getEnableMemoTransfersInstructionDataEncoder(): FixedSizeEncoder<EnableMemoTransfersInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['memoTransfersDiscriminator', getU8Encoder()],\n        ]),\n        value => ({\n            ...value,\n            discriminator: ENABLE_MEMO_TRANSFERS_DISCRIMINATOR,\n            memoTransfersDiscriminator: ENABLE_MEMO_TRANSFERS_MEMO_TRANSFERS_DISCRIMINATOR,\n        }),\n    );\n}\n\nexport function getEnableMemoTransfersInstructionDataDecoder(): FixedSizeDecoder<EnableMemoTransfersInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['memoTransfersDiscriminator', getU8Decoder()],\n    ]);\n}\n\nexport function getEnableMemoTransfersInstructionDataCodec(): FixedSizeCodec<\n    EnableMemoTransfersInstructionDataArgs,\n    EnableMemoTransfersInstructionData\n> {\n    return combineCodec(getEnableMemoTransfersInstructionDataEncoder(), getEnableMemoTransfersInstructionDataDecoder());\n}\n\nexport type EnableMemoTransfersInput<TAccountToken extends string = string, TAccountOwner extends string = string> = {\n    /** The token account to update. */\n    token: Address<TAccountToken>;\n    /** The account's owner or its multisignature account. */\n    owner: Address<TAccountOwner> | TransactionSigner<TAccountOwner>;\n    multiSigners?: Array<TransactionSigner>;\n};\n\nexport function getEnableMemoTransfersInstruction<\n    TAccountToken extends string,\n    TAccountOwner extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: EnableMemoTransfersInput<TAccountToken, TAccountOwner>,\n    config?: { programAddress?: TProgramAddress },\n): EnableMemoTransfersInstruction<\n    TProgramAddress,\n    TAccountToken,\n    (typeof input)['owner'] extends TransactionSigner<TAccountOwner>\n        ? ReadonlySignerAccount<TAccountOwner> & AccountSignerMeta<TAccountOwner>\n        : TAccountOwner\n> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        token: { value: input.token ?? null, isWritable: true },\n        owner: { value: input.owner ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    // Remaining accounts.\n    const remainingAccounts: AccountMeta[] = (args.multiSigners ?? []).map(signer => ({\n        address: signer.address,\n        role: AccountRole.READONLY_SIGNER,\n        signer,\n    }));\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [getAccountMeta(accounts.token), getAccountMeta(accounts.owner), ...remainingAccounts],\n        data: getEnableMemoTransfersInstructionDataEncoder().encode({}),\n        programAddress,\n    } as EnableMemoTransfersInstruction<\n        TProgramAddress,\n        TAccountToken,\n        (typeof input)['owner'] extends TransactionSigner<TAccountOwner>\n            ? ReadonlySignerAccount<TAccountOwner> & AccountSignerMeta<TAccountOwner>\n            : TAccountOwner\n    >);\n}\n\nexport type ParsedEnableMemoTransfersInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The token account to update. */\n        token: TAccountMetas[0];\n        /** The account's owner or its multisignature account. */\n        owner: TAccountMetas[1];\n    };\n    data: EnableMemoTransfersInstructionData;\n};\n\nexport function parseEnableMemoTransfersInstruction<\n    TProgram extends string,\n    TAccountMetas extends readonly AccountMeta[],\n>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedEnableMemoTransfersInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 2) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { token: getNextAccount(), owner: getNextAccount() },\n        data: getEnableMemoTransfersInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    AccountRole,\n    combineCodec,\n    getStructDecoder,\n    getStructEncoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type AccountSignerMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlyAccount,\n    type ReadonlySignerAccount,\n    type ReadonlyUint8Array,\n    type TransactionSigner,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const ENABLE_NON_CONFIDENTIAL_CREDITS_DISCRIMINATOR = 27;\n\nexport function getEnableNonConfidentialCreditsDiscriminatorBytes() {\n    return getU8Encoder().encode(ENABLE_NON_CONFIDENTIAL_CREDITS_DISCRIMINATOR);\n}\n\nexport const ENABLE_NON_CONFIDENTIAL_CREDITS_CONFIDENTIAL_TRANSFER_DISCRIMINATOR = 11;\n\nexport function getEnableNonConfidentialCreditsConfidentialTransferDiscriminatorBytes() {\n    return getU8Encoder().encode(ENABLE_NON_CONFIDENTIAL_CREDITS_CONFIDENTIAL_TRANSFER_DISCRIMINATOR);\n}\n\nexport type EnableNonConfidentialCreditsInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountToken extends string | AccountMeta<string> = string,\n    TAccountAuthority extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [\n            TAccountToken extends string ? WritableAccount<TAccountToken> : TAccountToken,\n            TAccountAuthority extends string ? ReadonlyAccount<TAccountAuthority> : TAccountAuthority,\n            ...TRemainingAccounts,\n        ]\n    >;\n\nexport type EnableNonConfidentialCreditsInstructionData = {\n    discriminator: number;\n    confidentialTransferDiscriminator: number;\n};\n\nexport type EnableNonConfidentialCreditsInstructionDataArgs = {};\n\nexport function getEnableNonConfidentialCreditsInstructionDataEncoder(): FixedSizeEncoder<EnableNonConfidentialCreditsInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['confidentialTransferDiscriminator', getU8Encoder()],\n        ]),\n        value => ({\n            ...value,\n            discriminator: ENABLE_NON_CONFIDENTIAL_CREDITS_DISCRIMINATOR,\n            confidentialTransferDiscriminator: ENABLE_NON_CONFIDENTIAL_CREDITS_CONFIDENTIAL_TRANSFER_DISCRIMINATOR,\n        }),\n    );\n}\n\nexport function getEnableNonConfidentialCreditsInstructionDataDecoder(): FixedSizeDecoder<EnableNonConfidentialCreditsInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['confidentialTransferDiscriminator', getU8Decoder()],\n    ]);\n}\n\nexport function getEnableNonConfidentialCreditsInstructionDataCodec(): FixedSizeCodec<\n    EnableNonConfidentialCreditsInstructionDataArgs,\n    EnableNonConfidentialCreditsInstructionData\n> {\n    return combineCodec(\n        getEnableNonConfidentialCreditsInstructionDataEncoder(),\n        getEnableNonConfidentialCreditsInstructionDataDecoder(),\n    );\n}\n\nexport type EnableNonConfidentialCreditsInput<\n    TAccountToken extends string = string,\n    TAccountAuthority extends string = string,\n> = {\n    /** The SPL Token account. */\n    token: Address<TAccountToken>;\n    /** The source account's owner/delegate or its multisignature account. */\n    authority: Address<TAccountAuthority> | TransactionSigner<TAccountAuthority>;\n    multiSigners?: Array<TransactionSigner>;\n};\n\nexport function getEnableNonConfidentialCreditsInstruction<\n    TAccountToken extends string,\n    TAccountAuthority extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: EnableNonConfidentialCreditsInput<TAccountToken, TAccountAuthority>,\n    config?: { programAddress?: TProgramAddress },\n): EnableNonConfidentialCreditsInstruction<\n    TProgramAddress,\n    TAccountToken,\n    (typeof input)['authority'] extends TransactionSigner<TAccountAuthority>\n        ? ReadonlySignerAccount<TAccountAuthority> & AccountSignerMeta<TAccountAuthority>\n        : TAccountAuthority\n> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        token: { value: input.token ?? null, isWritable: true },\n        authority: { value: input.authority ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    // Remaining accounts.\n    const remainingAccounts: AccountMeta[] = (args.multiSigners ?? []).map(signer => ({\n        address: signer.address,\n        role: AccountRole.READONLY_SIGNER,\n        signer,\n    }));\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [getAccountMeta(accounts.token), getAccountMeta(accounts.authority), ...remainingAccounts],\n        data: getEnableNonConfidentialCreditsInstructionDataEncoder().encode({}),\n        programAddress,\n    } as EnableNonConfidentialCreditsInstruction<\n        TProgramAddress,\n        TAccountToken,\n        (typeof input)['authority'] extends TransactionSigner<TAccountAuthority>\n            ? ReadonlySignerAccount<TAccountAuthority> & AccountSignerMeta<TAccountAuthority>\n            : TAccountAuthority\n    >);\n}\n\nexport type ParsedEnableNonConfidentialCreditsInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The SPL Token account. */\n        token: TAccountMetas[0];\n        /** The source account's owner/delegate or its multisignature account. */\n        authority: TAccountMetas[1];\n    };\n    data: EnableNonConfidentialCreditsInstructionData;\n};\n\nexport function parseEnableNonConfidentialCreditsInstruction<\n    TProgram extends string,\n    TAccountMetas extends readonly AccountMeta[],\n>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedEnableNonConfidentialCreditsInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 2) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { token: getNextAccount(), authority: getNextAccount() },\n        data: getEnableNonConfidentialCreditsInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    AccountRole,\n    combineCodec,\n    getStructDecoder,\n    getStructEncoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type AccountSignerMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlyAccount,\n    type ReadonlySignerAccount,\n    type ReadonlyUint8Array,\n    type TransactionSigner,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const FREEZE_ACCOUNT_DISCRIMINATOR = 10;\n\nexport function getFreezeAccountDiscriminatorBytes() {\n    return getU8Encoder().encode(FREEZE_ACCOUNT_DISCRIMINATOR);\n}\n\nexport type FreezeAccountInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountAccount extends string | AccountMeta<string> = string,\n    TAccountMint extends string | AccountMeta<string> = string,\n    TAccountOwner extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [\n            TAccountAccount extends string ? WritableAccount<TAccountAccount> : TAccountAccount,\n            TAccountMint extends string ? ReadonlyAccount<TAccountMint> : TAccountMint,\n            TAccountOwner extends string ? ReadonlyAccount<TAccountOwner> : TAccountOwner,\n            ...TRemainingAccounts,\n        ]\n    >;\n\nexport type FreezeAccountInstructionData = { discriminator: number };\n\nexport type FreezeAccountInstructionDataArgs = {};\n\nexport function getFreezeAccountInstructionDataEncoder(): FixedSizeEncoder<FreezeAccountInstructionDataArgs> {\n    return transformEncoder(getStructEncoder([['discriminator', getU8Encoder()]]), value => ({\n        ...value,\n        discriminator: FREEZE_ACCOUNT_DISCRIMINATOR,\n    }));\n}\n\nexport function getFreezeAccountInstructionDataDecoder(): FixedSizeDecoder<FreezeAccountInstructionData> {\n    return getStructDecoder([['discriminator', getU8Decoder()]]);\n}\n\nexport function getFreezeAccountInstructionDataCodec(): FixedSizeCodec<\n    FreezeAccountInstructionDataArgs,\n    FreezeAccountInstructionData\n> {\n    return combineCodec(getFreezeAccountInstructionDataEncoder(), getFreezeAccountInstructionDataDecoder());\n}\n\nexport type FreezeAccountInput<\n    TAccountAccount extends string = string,\n    TAccountMint extends string = string,\n    TAccountOwner extends string = string,\n> = {\n    /** The account to freeze. */\n    account: Address<TAccountAccount>;\n    /** The token mint. */\n    mint: Address<TAccountMint>;\n    /** The mint freeze authority or its multisignature account. */\n    owner: Address<TAccountOwner> | TransactionSigner<TAccountOwner>;\n    multiSigners?: Array<TransactionSigner>;\n};\n\nexport function getFreezeAccountInstruction<\n    TAccountAccount extends string,\n    TAccountMint extends string,\n    TAccountOwner extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: FreezeAccountInput<TAccountAccount, TAccountMint, TAccountOwner>,\n    config?: { programAddress?: TProgramAddress },\n): FreezeAccountInstruction<\n    TProgramAddress,\n    TAccountAccount,\n    TAccountMint,\n    (typeof input)['owner'] extends TransactionSigner<TAccountOwner>\n        ? ReadonlySignerAccount<TAccountOwner> & AccountSignerMeta<TAccountOwner>\n        : TAccountOwner\n> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        account: { value: input.account ?? null, isWritable: true },\n        mint: { value: input.mint ?? null, isWritable: false },\n        owner: { value: input.owner ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    // Remaining accounts.\n    const remainingAccounts: AccountMeta[] = (args.multiSigners ?? []).map(signer => ({\n        address: signer.address,\n        role: AccountRole.READONLY_SIGNER,\n        signer,\n    }));\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [\n            getAccountMeta(accounts.account),\n            getAccountMeta(accounts.mint),\n            getAccountMeta(accounts.owner),\n            ...remainingAccounts,\n        ],\n        data: getFreezeAccountInstructionDataEncoder().encode({}),\n        programAddress,\n    } as FreezeAccountInstruction<\n        TProgramAddress,\n        TAccountAccount,\n        TAccountMint,\n        (typeof input)['owner'] extends TransactionSigner<TAccountOwner>\n            ? ReadonlySignerAccount<TAccountOwner> & AccountSignerMeta<TAccountOwner>\n            : TAccountOwner\n    >);\n}\n\nexport type ParsedFreezeAccountInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The account to freeze. */\n        account: TAccountMetas[0];\n        /** The token mint. */\n        mint: TAccountMetas[1];\n        /** The mint freeze authority or its multisignature account. */\n        owner: TAccountMetas[2];\n    };\n    data: FreezeAccountInstructionData;\n};\n\nexport function parseFreezeAccountInstruction<TProgram extends string, TAccountMetas extends readonly AccountMeta[]>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedFreezeAccountInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 3) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { account: getNextAccount(), mint: getNextAccount(), owner: getNextAccount() },\n        data: getFreezeAccountInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    combineCodec,\n    getStructDecoder,\n    getStructEncoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlyAccount,\n    type ReadonlyUint8Array,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const GET_ACCOUNT_DATA_SIZE_DISCRIMINATOR = 21;\n\nexport function getGetAccountDataSizeDiscriminatorBytes() {\n    return getU8Encoder().encode(GET_ACCOUNT_DATA_SIZE_DISCRIMINATOR);\n}\n\nexport type GetAccountDataSizeInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMint extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [TAccountMint extends string ? ReadonlyAccount<TAccountMint> : TAccountMint, ...TRemainingAccounts]\n    >;\n\nexport type GetAccountDataSizeInstructionData = { discriminator: number };\n\nexport type GetAccountDataSizeInstructionDataArgs = {};\n\nexport function getGetAccountDataSizeInstructionDataEncoder(): FixedSizeEncoder<GetAccountDataSizeInstructionDataArgs> {\n    return transformEncoder(getStructEncoder([['discriminator', getU8Encoder()]]), value => ({\n        ...value,\n        discriminator: GET_ACCOUNT_DATA_SIZE_DISCRIMINATOR,\n    }));\n}\n\nexport function getGetAccountDataSizeInstructionDataDecoder(): FixedSizeDecoder<GetAccountDataSizeInstructionData> {\n    return getStructDecoder([['discriminator', getU8Decoder()]]);\n}\n\nexport function getGetAccountDataSizeInstructionDataCodec(): FixedSizeCodec<\n    GetAccountDataSizeInstructionDataArgs,\n    GetAccountDataSizeInstructionData\n> {\n    return combineCodec(getGetAccountDataSizeInstructionDataEncoder(), getGetAccountDataSizeInstructionDataDecoder());\n}\n\nexport type GetAccountDataSizeInput<TAccountMint extends string = string> = {\n    /** The mint to calculate for. */\n    mint: Address<TAccountMint>;\n};\n\nexport function getGetAccountDataSizeInstruction<\n    TAccountMint extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: GetAccountDataSizeInput<TAccountMint>,\n    config?: { programAddress?: TProgramAddress },\n): GetAccountDataSizeInstruction<TProgramAddress, TAccountMint> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = { mint: { value: input.mint ?? null, isWritable: false } };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [getAccountMeta(accounts.mint)],\n        data: getGetAccountDataSizeInstructionDataEncoder().encode({}),\n        programAddress,\n    } as GetAccountDataSizeInstruction<TProgramAddress, TAccountMint>);\n}\n\nexport type ParsedGetAccountDataSizeInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The mint to calculate for. */\n        mint: TAccountMetas[0];\n    };\n    data: GetAccountDataSizeInstructionData;\n};\n\nexport function parseGetAccountDataSizeInstruction<\n    TProgram extends string,\n    TAccountMetas extends readonly AccountMeta[],\n>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedGetAccountDataSizeInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 1) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { mint: getNextAccount() },\n        data: getGetAccountDataSizeInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    AccountRole,\n    combineCodec,\n    getStructDecoder,\n    getStructEncoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlyUint8Array,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const HARVEST_WITHHELD_TOKENS_TO_MINT_DISCRIMINATOR = 26;\n\nexport function getHarvestWithheldTokensToMintDiscriminatorBytes() {\n    return getU8Encoder().encode(HARVEST_WITHHELD_TOKENS_TO_MINT_DISCRIMINATOR);\n}\n\nexport const HARVEST_WITHHELD_TOKENS_TO_MINT_TRANSFER_FEE_DISCRIMINATOR = 4;\n\nexport function getHarvestWithheldTokensToMintTransferFeeDiscriminatorBytes() {\n    return getU8Encoder().encode(HARVEST_WITHHELD_TOKENS_TO_MINT_TRANSFER_FEE_DISCRIMINATOR);\n}\n\nexport type HarvestWithheldTokensToMintInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMint extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [TAccountMint extends string ? WritableAccount<TAccountMint> : TAccountMint, ...TRemainingAccounts]\n    >;\n\nexport type HarvestWithheldTokensToMintInstructionData = { discriminator: number; transferFeeDiscriminator: number };\n\nexport type HarvestWithheldTokensToMintInstructionDataArgs = {};\n\nexport function getHarvestWithheldTokensToMintInstructionDataEncoder(): FixedSizeEncoder<HarvestWithheldTokensToMintInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['transferFeeDiscriminator', getU8Encoder()],\n        ]),\n        value => ({\n            ...value,\n            discriminator: HARVEST_WITHHELD_TOKENS_TO_MINT_DISCRIMINATOR,\n            transferFeeDiscriminator: HARVEST_WITHHELD_TOKENS_TO_MINT_TRANSFER_FEE_DISCRIMINATOR,\n        }),\n    );\n}\n\nexport function getHarvestWithheldTokensToMintInstructionDataDecoder(): FixedSizeDecoder<HarvestWithheldTokensToMintInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['transferFeeDiscriminator', getU8Decoder()],\n    ]);\n}\n\nexport function getHarvestWithheldTokensToMintInstructionDataCodec(): FixedSizeCodec<\n    HarvestWithheldTokensToMintInstructionDataArgs,\n    HarvestWithheldTokensToMintInstructionData\n> {\n    return combineCodec(\n        getHarvestWithheldTokensToMintInstructionDataEncoder(),\n        getHarvestWithheldTokensToMintInstructionDataDecoder(),\n    );\n}\n\nexport type HarvestWithheldTokensToMintInput<TAccountMint extends string = string> = {\n    /** The token mint. */\n    mint: Address<TAccountMint>;\n    sources: Array<Address>;\n};\n\nexport function getHarvestWithheldTokensToMintInstruction<\n    TAccountMint extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: HarvestWithheldTokensToMintInput<TAccountMint>,\n    config?: { programAddress?: TProgramAddress },\n): HarvestWithheldTokensToMintInstruction<TProgramAddress, TAccountMint> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = { mint: { value: input.mint ?? null, isWritable: true } };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    // Remaining accounts.\n    const remainingAccounts: AccountMeta[] = args.sources.map(address => ({ address, role: AccountRole.WRITABLE }));\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [getAccountMeta(accounts.mint), ...remainingAccounts],\n        data: getHarvestWithheldTokensToMintInstructionDataEncoder().encode({}),\n        programAddress,\n    } as HarvestWithheldTokensToMintInstruction<TProgramAddress, TAccountMint>);\n}\n\nexport type ParsedHarvestWithheldTokensToMintInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The token mint. */\n        mint: TAccountMetas[0];\n    };\n    data: HarvestWithheldTokensToMintInstructionData;\n};\n\nexport function parseHarvestWithheldTokensToMintInstruction<\n    TProgram extends string,\n    TAccountMetas extends readonly AccountMeta[],\n>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedHarvestWithheldTokensToMintInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 1) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { mint: getNextAccount() },\n        data: getHarvestWithheldTokensToMintInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    AccountRole,\n    combineCodec,\n    getStructDecoder,\n    getStructEncoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlyUint8Array,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const HARVEST_WITHHELD_TOKENS_TO_MINT_FOR_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR = 37;\n\nexport function getHarvestWithheldTokensToMintForConfidentialTransferFeeDiscriminatorBytes() {\n    return getU8Encoder().encode(HARVEST_WITHHELD_TOKENS_TO_MINT_FOR_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR);\n}\n\nexport const HARVEST_WITHHELD_TOKENS_TO_MINT_FOR_CONFIDENTIAL_TRANSFER_FEE_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR = 3;\n\nexport function getHarvestWithheldTokensToMintForConfidentialTransferFeeConfidentialTransferFeeDiscriminatorBytes() {\n    return getU8Encoder().encode(\n        HARVEST_WITHHELD_TOKENS_TO_MINT_FOR_CONFIDENTIAL_TRANSFER_FEE_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR,\n    );\n}\n\nexport type HarvestWithheldTokensToMintForConfidentialTransferFeeInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMint extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [TAccountMint extends string ? WritableAccount<TAccountMint> : TAccountMint, ...TRemainingAccounts]\n    >;\n\nexport type HarvestWithheldTokensToMintForConfidentialTransferFeeInstructionData = {\n    discriminator: number;\n    confidentialTransferFeeDiscriminator: number;\n};\n\nexport type HarvestWithheldTokensToMintForConfidentialTransferFeeInstructionDataArgs = {};\n\nexport function getHarvestWithheldTokensToMintForConfidentialTransferFeeInstructionDataEncoder(): FixedSizeEncoder<HarvestWithheldTokensToMintForConfidentialTransferFeeInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['confidentialTransferFeeDiscriminator', getU8Encoder()],\n        ]),\n        value => ({\n            ...value,\n            discriminator: HARVEST_WITHHELD_TOKENS_TO_MINT_FOR_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR,\n            confidentialTransferFeeDiscriminator:\n                HARVEST_WITHHELD_TOKENS_TO_MINT_FOR_CONFIDENTIAL_TRANSFER_FEE_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR,\n        }),\n    );\n}\n\nexport function getHarvestWithheldTokensToMintForConfidentialTransferFeeInstructionDataDecoder(): FixedSizeDecoder<HarvestWithheldTokensToMintForConfidentialTransferFeeInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['confidentialTransferFeeDiscriminator', getU8Decoder()],\n    ]);\n}\n\nexport function getHarvestWithheldTokensToMintForConfidentialTransferFeeInstructionDataCodec(): FixedSizeCodec<\n    HarvestWithheldTokensToMintForConfidentialTransferFeeInstructionDataArgs,\n    HarvestWithheldTokensToMintForConfidentialTransferFeeInstructionData\n> {\n    return combineCodec(\n        getHarvestWithheldTokensToMintForConfidentialTransferFeeInstructionDataEncoder(),\n        getHarvestWithheldTokensToMintForConfidentialTransferFeeInstructionDataDecoder(),\n    );\n}\n\nexport type HarvestWithheldTokensToMintForConfidentialTransferFeeInput<TAccountMint extends string = string> = {\n    /** The mint. */\n    mint: Address<TAccountMint>;\n    sources?: Array<Address>;\n};\n\nexport function getHarvestWithheldTokensToMintForConfidentialTransferFeeInstruction<\n    TAccountMint extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: HarvestWithheldTokensToMintForConfidentialTransferFeeInput<TAccountMint>,\n    config?: { programAddress?: TProgramAddress },\n): HarvestWithheldTokensToMintForConfidentialTransferFeeInstruction<TProgramAddress, TAccountMint> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = { mint: { value: input.mint ?? null, isWritable: true } };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    // Remaining accounts.\n    const remainingAccounts: AccountMeta[] = (args.sources ?? []).map(address => ({\n        address,\n        role: AccountRole.WRITABLE,\n    }));\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [getAccountMeta(accounts.mint), ...remainingAccounts],\n        data: getHarvestWithheldTokensToMintForConfidentialTransferFeeInstructionDataEncoder().encode({}),\n        programAddress,\n    } as HarvestWithheldTokensToMintForConfidentialTransferFeeInstruction<TProgramAddress, TAccountMint>);\n}\n\nexport type ParsedHarvestWithheldTokensToMintForConfidentialTransferFeeInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The mint. */\n        mint: TAccountMetas[0];\n    };\n    data: HarvestWithheldTokensToMintForConfidentialTransferFeeInstructionData;\n};\n\nexport function parseHarvestWithheldTokensToMintForConfidentialTransferFeeInstruction<\n    TProgram extends string,\n    TAccountMetas extends readonly AccountMeta[],\n>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedHarvestWithheldTokensToMintForConfidentialTransferFeeInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 1) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { mint: getNextAccount() },\n        data: getHarvestWithheldTokensToMintForConfidentialTransferFeeInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    combineCodec,\n    getStructDecoder,\n    getStructEncoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlyAccount,\n    type ReadonlyUint8Array,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const INITIALIZE_ACCOUNT_DISCRIMINATOR = 1;\n\nexport function getInitializeAccountDiscriminatorBytes() {\n    return getU8Encoder().encode(INITIALIZE_ACCOUNT_DISCRIMINATOR);\n}\n\nexport type InitializeAccountInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountAccount extends string | AccountMeta<string> = string,\n    TAccountMint extends string | AccountMeta<string> = string,\n    TAccountOwner extends string | AccountMeta<string> = string,\n    TAccountRent extends string | AccountMeta<string> = 'SysvarRent111111111111111111111111111111111',\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [\n            TAccountAccount extends string ? WritableAccount<TAccountAccount> : TAccountAccount,\n            TAccountMint extends string ? ReadonlyAccount<TAccountMint> : TAccountMint,\n            TAccountOwner extends string ? ReadonlyAccount<TAccountOwner> : TAccountOwner,\n            TAccountRent extends string ? ReadonlyAccount<TAccountRent> : TAccountRent,\n            ...TRemainingAccounts,\n        ]\n    >;\n\nexport type InitializeAccountInstructionData = { discriminator: number };\n\nexport type InitializeAccountInstructionDataArgs = {};\n\nexport function getInitializeAccountInstructionDataEncoder(): FixedSizeEncoder<InitializeAccountInstructionDataArgs> {\n    return transformEncoder(getStructEncoder([['discriminator', getU8Encoder()]]), value => ({\n        ...value,\n        discriminator: INITIALIZE_ACCOUNT_DISCRIMINATOR,\n    }));\n}\n\nexport function getInitializeAccountInstructionDataDecoder(): FixedSizeDecoder<InitializeAccountInstructionData> {\n    return getStructDecoder([['discriminator', getU8Decoder()]]);\n}\n\nexport function getInitializeAccountInstructionDataCodec(): FixedSizeCodec<\n    InitializeAccountInstructionDataArgs,\n    InitializeAccountInstructionData\n> {\n    return combineCodec(getInitializeAccountInstructionDataEncoder(), getInitializeAccountInstructionDataDecoder());\n}\n\nexport type InitializeAccountInput<\n    TAccountAccount extends string = string,\n    TAccountMint extends string = string,\n    TAccountOwner extends string = string,\n    TAccountRent extends string = string,\n> = {\n    /** The account to initialize. */\n    account: Address<TAccountAccount>;\n    /** The mint this account will be associated with. */\n    mint: Address<TAccountMint>;\n    /** The new account's owner/multisignature. */\n    owner: Address<TAccountOwner>;\n    /** Rent sysvar. */\n    rent?: Address<TAccountRent>;\n};\n\nexport function getInitializeAccountInstruction<\n    TAccountAccount extends string,\n    TAccountMint extends string,\n    TAccountOwner extends string,\n    TAccountRent extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: InitializeAccountInput<TAccountAccount, TAccountMint, TAccountOwner, TAccountRent>,\n    config?: { programAddress?: TProgramAddress },\n): InitializeAccountInstruction<TProgramAddress, TAccountAccount, TAccountMint, TAccountOwner, TAccountRent> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        account: { value: input.account ?? null, isWritable: true },\n        mint: { value: input.mint ?? null, isWritable: false },\n        owner: { value: input.owner ?? null, isWritable: false },\n        rent: { value: input.rent ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Resolve default values.\n    if (!accounts.rent.value) {\n        accounts.rent.value =\n            'SysvarRent111111111111111111111111111111111' as Address<'SysvarRent111111111111111111111111111111111'>;\n    }\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [\n            getAccountMeta(accounts.account),\n            getAccountMeta(accounts.mint),\n            getAccountMeta(accounts.owner),\n            getAccountMeta(accounts.rent),\n        ],\n        data: getInitializeAccountInstructionDataEncoder().encode({}),\n        programAddress,\n    } as InitializeAccountInstruction<TProgramAddress, TAccountAccount, TAccountMint, TAccountOwner, TAccountRent>);\n}\n\nexport type ParsedInitializeAccountInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The account to initialize. */\n        account: TAccountMetas[0];\n        /** The mint this account will be associated with. */\n        mint: TAccountMetas[1];\n        /** The new account's owner/multisignature. */\n        owner: TAccountMetas[2];\n        /** Rent sysvar. */\n        rent: TAccountMetas[3];\n    };\n    data: InitializeAccountInstructionData;\n};\n\nexport function parseInitializeAccountInstruction<\n    TProgram extends string,\n    TAccountMetas extends readonly AccountMeta[],\n>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedInitializeAccountInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 4) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: {\n            account: getNextAccount(),\n            mint: getNextAccount(),\n            owner: getNextAccount(),\n            rent: getNextAccount(),\n        },\n        data: getInitializeAccountInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    combineCodec,\n    getAddressDecoder,\n    getAddressEncoder,\n    getStructDecoder,\n    getStructEncoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlyAccount,\n    type ReadonlyUint8Array,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const INITIALIZE_ACCOUNT2_DISCRIMINATOR = 16;\n\nexport function getInitializeAccount2DiscriminatorBytes() {\n    return getU8Encoder().encode(INITIALIZE_ACCOUNT2_DISCRIMINATOR);\n}\n\nexport type InitializeAccount2Instruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountAccount extends string | AccountMeta<string> = string,\n    TAccountMint extends string | AccountMeta<string> = string,\n    TAccountRent extends string | AccountMeta<string> = 'SysvarRent111111111111111111111111111111111',\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [\n            TAccountAccount extends string ? WritableAccount<TAccountAccount> : TAccountAccount,\n            TAccountMint extends string ? ReadonlyAccount<TAccountMint> : TAccountMint,\n            TAccountRent extends string ? ReadonlyAccount<TAccountRent> : TAccountRent,\n            ...TRemainingAccounts,\n        ]\n    >;\n\nexport type InitializeAccount2InstructionData = {\n    discriminator: number;\n    /** The new account's owner/multisignature. */\n    owner: Address;\n};\n\nexport type InitializeAccount2InstructionDataArgs = {\n    /** The new account's owner/multisignature. */\n    owner: Address;\n};\n\nexport function getInitializeAccount2InstructionDataEncoder(): FixedSizeEncoder<InitializeAccount2InstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['owner', getAddressEncoder()],\n        ]),\n        value => ({ ...value, discriminator: INITIALIZE_ACCOUNT2_DISCRIMINATOR }),\n    );\n}\n\nexport function getInitializeAccount2InstructionDataDecoder(): FixedSizeDecoder<InitializeAccount2InstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['owner', getAddressDecoder()],\n    ]);\n}\n\nexport function getInitializeAccount2InstructionDataCodec(): FixedSizeCodec<\n    InitializeAccount2InstructionDataArgs,\n    InitializeAccount2InstructionData\n> {\n    return combineCodec(getInitializeAccount2InstructionDataEncoder(), getInitializeAccount2InstructionDataDecoder());\n}\n\nexport type InitializeAccount2Input<\n    TAccountAccount extends string = string,\n    TAccountMint extends string = string,\n    TAccountRent extends string = string,\n> = {\n    /** The account to initialize. */\n    account: Address<TAccountAccount>;\n    /** The mint this account will be associated with. */\n    mint: Address<TAccountMint>;\n    /** Rent sysvar. */\n    rent?: Address<TAccountRent>;\n    owner: InitializeAccount2InstructionDataArgs['owner'];\n};\n\nexport function getInitializeAccount2Instruction<\n    TAccountAccount extends string,\n    TAccountMint extends string,\n    TAccountRent extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: InitializeAccount2Input<TAccountAccount, TAccountMint, TAccountRent>,\n    config?: { programAddress?: TProgramAddress },\n): InitializeAccount2Instruction<TProgramAddress, TAccountAccount, TAccountMint, TAccountRent> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        account: { value: input.account ?? null, isWritable: true },\n        mint: { value: input.mint ?? null, isWritable: false },\n        rent: { value: input.rent ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    // Resolve default values.\n    if (!accounts.rent.value) {\n        accounts.rent.value =\n            'SysvarRent111111111111111111111111111111111' as Address<'SysvarRent111111111111111111111111111111111'>;\n    }\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [getAccountMeta(accounts.account), getAccountMeta(accounts.mint), getAccountMeta(accounts.rent)],\n        data: getInitializeAccount2InstructionDataEncoder().encode(args as InitializeAccount2InstructionDataArgs),\n        programAddress,\n    } as InitializeAccount2Instruction<TProgramAddress, TAccountAccount, TAccountMint, TAccountRent>);\n}\n\nexport type ParsedInitializeAccount2Instruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The account to initialize. */\n        account: TAccountMetas[0];\n        /** The mint this account will be associated with. */\n        mint: TAccountMetas[1];\n        /** Rent sysvar. */\n        rent: TAccountMetas[2];\n    };\n    data: InitializeAccount2InstructionData;\n};\n\nexport function parseInitializeAccount2Instruction<\n    TProgram extends string,\n    TAccountMetas extends readonly AccountMeta[],\n>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedInitializeAccount2Instruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 3) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { account: getNextAccount(), mint: getNextAccount(), rent: getNextAccount() },\n        data: getInitializeAccount2InstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    combineCodec,\n    getAddressDecoder,\n    getAddressEncoder,\n    getStructDecoder,\n    getStructEncoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlyAccount,\n    type ReadonlyUint8Array,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const INITIALIZE_ACCOUNT3_DISCRIMINATOR = 18;\n\nexport function getInitializeAccount3DiscriminatorBytes() {\n    return getU8Encoder().encode(INITIALIZE_ACCOUNT3_DISCRIMINATOR);\n}\n\nexport type InitializeAccount3Instruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountAccount extends string | AccountMeta<string> = string,\n    TAccountMint extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [\n            TAccountAccount extends string ? WritableAccount<TAccountAccount> : TAccountAccount,\n            TAccountMint extends string ? ReadonlyAccount<TAccountMint> : TAccountMint,\n            ...TRemainingAccounts,\n        ]\n    >;\n\nexport type InitializeAccount3InstructionData = {\n    discriminator: number;\n    /** The new account's owner/multisignature. */\n    owner: Address;\n};\n\nexport type InitializeAccount3InstructionDataArgs = {\n    /** The new account's owner/multisignature. */\n    owner: Address;\n};\n\nexport function getInitializeAccount3InstructionDataEncoder(): FixedSizeEncoder<InitializeAccount3InstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['owner', getAddressEncoder()],\n        ]),\n        value => ({ ...value, discriminator: INITIALIZE_ACCOUNT3_DISCRIMINATOR }),\n    );\n}\n\nexport function getInitializeAccount3InstructionDataDecoder(): FixedSizeDecoder<InitializeAccount3InstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['owner', getAddressDecoder()],\n    ]);\n}\n\nexport function getInitializeAccount3InstructionDataCodec(): FixedSizeCodec<\n    InitializeAccount3InstructionDataArgs,\n    InitializeAccount3InstructionData\n> {\n    return combineCodec(getInitializeAccount3InstructionDataEncoder(), getInitializeAccount3InstructionDataDecoder());\n}\n\nexport type InitializeAccount3Input<TAccountAccount extends string = string, TAccountMint extends string = string> = {\n    /** The account to initialize. */\n    account: Address<TAccountAccount>;\n    /** The mint this account will be associated with. */\n    mint: Address<TAccountMint>;\n    owner: InitializeAccount3InstructionDataArgs['owner'];\n};\n\nexport function getInitializeAccount3Instruction<\n    TAccountAccount extends string,\n    TAccountMint extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: InitializeAccount3Input<TAccountAccount, TAccountMint>,\n    config?: { programAddress?: TProgramAddress },\n): InitializeAccount3Instruction<TProgramAddress, TAccountAccount, TAccountMint> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        account: { value: input.account ?? null, isWritable: true },\n        mint: { value: input.mint ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [getAccountMeta(accounts.account), getAccountMeta(accounts.mint)],\n        data: getInitializeAccount3InstructionDataEncoder().encode(args as InitializeAccount3InstructionDataArgs),\n        programAddress,\n    } as InitializeAccount3Instruction<TProgramAddress, TAccountAccount, TAccountMint>);\n}\n\nexport type ParsedInitializeAccount3Instruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The account to initialize. */\n        account: TAccountMetas[0];\n        /** The mint this account will be associated with. */\n        mint: TAccountMetas[1];\n    };\n    data: InitializeAccount3InstructionData;\n};\n\nexport function parseInitializeAccount3Instruction<\n    TProgram extends string,\n    TAccountMetas extends readonly AccountMeta[],\n>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedInitializeAccount3Instruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 2) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { account: getNextAccount(), mint: getNextAccount() },\n        data: getInitializeAccount3InstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    combineCodec,\n    getAddressDecoder,\n    getAddressEncoder,\n    getOptionDecoder,\n    getOptionEncoder,\n    getStructDecoder,\n    getStructEncoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type Option,\n    type OptionOrNullable,\n    type ReadonlyUint8Array,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const INITIALIZE_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR = 37;\n\nexport function getInitializeConfidentialTransferFeeDiscriminatorBytes() {\n    return getU8Encoder().encode(INITIALIZE_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR);\n}\n\nexport const INITIALIZE_CONFIDENTIAL_TRANSFER_FEE_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR = 0;\n\nexport function getInitializeConfidentialTransferFeeConfidentialTransferFeeDiscriminatorBytes() {\n    return getU8Encoder().encode(INITIALIZE_CONFIDENTIAL_TRANSFER_FEE_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR);\n}\n\nexport type InitializeConfidentialTransferFeeInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMint extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [TAccountMint extends string ? WritableAccount<TAccountMint> : TAccountMint, ...TRemainingAccounts]\n    >;\n\nexport type InitializeConfidentialTransferFeeInstructionData = {\n    discriminator: number;\n    confidentialTransferFeeDiscriminator: number;\n    /** Optional authority to set the withdraw withheld authority ElGamal key */\n    authority: Option<Address>;\n    /** Withheld fees from accounts must be encrypted with this ElGamal key */\n    withdrawWithheldAuthorityElGamalPubkey: Option<Address>;\n};\n\nexport type InitializeConfidentialTransferFeeInstructionDataArgs = {\n    /** Optional authority to set the withdraw withheld authority ElGamal key */\n    authority: OptionOrNullable<Address>;\n    /** Withheld fees from accounts must be encrypted with this ElGamal key */\n    withdrawWithheldAuthorityElGamalPubkey: OptionOrNullable<Address>;\n};\n\nexport function getInitializeConfidentialTransferFeeInstructionDataEncoder(): FixedSizeEncoder<InitializeConfidentialTransferFeeInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['confidentialTransferFeeDiscriminator', getU8Encoder()],\n            ['authority', getOptionEncoder(getAddressEncoder(), { prefix: null, noneValue: 'zeroes' })],\n            [\n                'withdrawWithheldAuthorityElGamalPubkey',\n                getOptionEncoder(getAddressEncoder(), { prefix: null, noneValue: 'zeroes' }),\n            ],\n        ]),\n        value => ({\n            ...value,\n            discriminator: INITIALIZE_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR,\n            confidentialTransferFeeDiscriminator:\n                INITIALIZE_CONFIDENTIAL_TRANSFER_FEE_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR,\n        }),\n    );\n}\n\nexport function getInitializeConfidentialTransferFeeInstructionDataDecoder(): FixedSizeDecoder<InitializeConfidentialTransferFeeInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['confidentialTransferFeeDiscriminator', getU8Decoder()],\n        ['authority', getOptionDecoder(getAddressDecoder(), { prefix: null, noneValue: 'zeroes' })],\n        [\n            'withdrawWithheldAuthorityElGamalPubkey',\n            getOptionDecoder(getAddressDecoder(), { prefix: null, noneValue: 'zeroes' }),\n        ],\n    ]);\n}\n\nexport function getInitializeConfidentialTransferFeeInstructionDataCodec(): FixedSizeCodec<\n    InitializeConfidentialTransferFeeInstructionDataArgs,\n    InitializeConfidentialTransferFeeInstructionData\n> {\n    return combineCodec(\n        getInitializeConfidentialTransferFeeInstructionDataEncoder(),\n        getInitializeConfidentialTransferFeeInstructionDataDecoder(),\n    );\n}\n\nexport type InitializeConfidentialTransferFeeInput<TAccountMint extends string = string> = {\n    /** The SPL Token mint. */\n    mint: Address<TAccountMint>;\n    authority: InitializeConfidentialTransferFeeInstructionDataArgs['authority'];\n    withdrawWithheldAuthorityElGamalPubkey: InitializeConfidentialTransferFeeInstructionDataArgs['withdrawWithheldAuthorityElGamalPubkey'];\n};\n\nexport function getInitializeConfidentialTransferFeeInstruction<\n    TAccountMint extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: InitializeConfidentialTransferFeeInput<TAccountMint>,\n    config?: { programAddress?: TProgramAddress },\n): InitializeConfidentialTransferFeeInstruction<TProgramAddress, TAccountMint> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = { mint: { value: input.mint ?? null, isWritable: true } };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [getAccountMeta(accounts.mint)],\n        data: getInitializeConfidentialTransferFeeInstructionDataEncoder().encode(\n            args as InitializeConfidentialTransferFeeInstructionDataArgs,\n        ),\n        programAddress,\n    } as InitializeConfidentialTransferFeeInstruction<TProgramAddress, TAccountMint>);\n}\n\nexport type ParsedInitializeConfidentialTransferFeeInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The SPL Token mint. */\n        mint: TAccountMetas[0];\n    };\n    data: InitializeConfidentialTransferFeeInstructionData;\n};\n\nexport function parseInitializeConfidentialTransferFeeInstruction<\n    TProgram extends string,\n    TAccountMetas extends readonly AccountMeta[],\n>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedInitializeConfidentialTransferFeeInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 1) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { mint: getNextAccount() },\n        data: getInitializeConfidentialTransferFeeInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    combineCodec,\n    getAddressDecoder,\n    getAddressEncoder,\n    getBooleanDecoder,\n    getBooleanEncoder,\n    getOptionDecoder,\n    getOptionEncoder,\n    getStructDecoder,\n    getStructEncoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type Option,\n    type OptionOrNullable,\n    type ReadonlyUint8Array,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const INITIALIZE_CONFIDENTIAL_TRANSFER_MINT_DISCRIMINATOR = 27;\n\nexport function getInitializeConfidentialTransferMintDiscriminatorBytes() {\n    return getU8Encoder().encode(INITIALIZE_CONFIDENTIAL_TRANSFER_MINT_DISCRIMINATOR);\n}\n\nexport const INITIALIZE_CONFIDENTIAL_TRANSFER_MINT_CONFIDENTIAL_TRANSFER_DISCRIMINATOR = 0;\n\nexport function getInitializeConfidentialTransferMintConfidentialTransferDiscriminatorBytes() {\n    return getU8Encoder().encode(INITIALIZE_CONFIDENTIAL_TRANSFER_MINT_CONFIDENTIAL_TRANSFER_DISCRIMINATOR);\n}\n\nexport type InitializeConfidentialTransferMintInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMint extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [TAccountMint extends string ? WritableAccount<TAccountMint> : TAccountMint, ...TRemainingAccounts]\n    >;\n\nexport type InitializeConfidentialTransferMintInstructionData = {\n    discriminator: number;\n    confidentialTransferDiscriminator: number;\n    /**\n     * Authority to modify the `ConfidentialTransferMint` configuration and to\n     * approve new accounts.\n     */\n    authority: Option<Address>;\n    /**\n     * Determines if newly configured accounts must be approved by the\n     * `authority` before they may be used by the user.\n     */\n    autoApproveNewAccounts: boolean;\n    /** New authority to decode any transfer amount in a confidential transfer. */\n    auditorElgamalPubkey: Option<Address>;\n};\n\nexport type InitializeConfidentialTransferMintInstructionDataArgs = {\n    /**\n     * Authority to modify the `ConfidentialTransferMint` configuration and to\n     * approve new accounts.\n     */\n    authority: OptionOrNullable<Address>;\n    /**\n     * Determines if newly configured accounts must be approved by the\n     * `authority` before they may be used by the user.\n     */\n    autoApproveNewAccounts: boolean;\n    /** New authority to decode any transfer amount in a confidential transfer. */\n    auditorElgamalPubkey: OptionOrNullable<Address>;\n};\n\nexport function getInitializeConfidentialTransferMintInstructionDataEncoder(): FixedSizeEncoder<InitializeConfidentialTransferMintInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['confidentialTransferDiscriminator', getU8Encoder()],\n            ['authority', getOptionEncoder(getAddressEncoder(), { prefix: null, noneValue: 'zeroes' })],\n            ['autoApproveNewAccounts', getBooleanEncoder()],\n            ['auditorElgamalPubkey', getOptionEncoder(getAddressEncoder(), { prefix: null, noneValue: 'zeroes' })],\n        ]),\n        value => ({\n            ...value,\n            discriminator: INITIALIZE_CONFIDENTIAL_TRANSFER_MINT_DISCRIMINATOR,\n            confidentialTransferDiscriminator:\n                INITIALIZE_CONFIDENTIAL_TRANSFER_MINT_CONFIDENTIAL_TRANSFER_DISCRIMINATOR,\n        }),\n    );\n}\n\nexport function getInitializeConfidentialTransferMintInstructionDataDecoder(): FixedSizeDecoder<InitializeConfidentialTransferMintInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['confidentialTransferDiscriminator', getU8Decoder()],\n        ['authority', getOptionDecoder(getAddressDecoder(), { prefix: null, noneValue: 'zeroes' })],\n        ['autoApproveNewAccounts', getBooleanDecoder()],\n        ['auditorElgamalPubkey', getOptionDecoder(getAddressDecoder(), { prefix: null, noneValue: 'zeroes' })],\n    ]);\n}\n\nexport function getInitializeConfidentialTransferMintInstructionDataCodec(): FixedSizeCodec<\n    InitializeConfidentialTransferMintInstructionDataArgs,\n    InitializeConfidentialTransferMintInstructionData\n> {\n    return combineCodec(\n        getInitializeConfidentialTransferMintInstructionDataEncoder(),\n        getInitializeConfidentialTransferMintInstructionDataDecoder(),\n    );\n}\n\nexport type InitializeConfidentialTransferMintInput<TAccountMint extends string = string> = {\n    /** The SPL Token mint. */\n    mint: Address<TAccountMint>;\n    authority: InitializeConfidentialTransferMintInstructionDataArgs['authority'];\n    autoApproveNewAccounts: InitializeConfidentialTransferMintInstructionDataArgs['autoApproveNewAccounts'];\n    auditorElgamalPubkey: InitializeConfidentialTransferMintInstructionDataArgs['auditorElgamalPubkey'];\n};\n\nexport function getInitializeConfidentialTransferMintInstruction<\n    TAccountMint extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: InitializeConfidentialTransferMintInput<TAccountMint>,\n    config?: { programAddress?: TProgramAddress },\n): InitializeConfidentialTransferMintInstruction<TProgramAddress, TAccountMint> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = { mint: { value: input.mint ?? null, isWritable: true } };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [getAccountMeta(accounts.mint)],\n        data: getInitializeConfidentialTransferMintInstructionDataEncoder().encode(\n            args as InitializeConfidentialTransferMintInstructionDataArgs,\n        ),\n        programAddress,\n    } as InitializeConfidentialTransferMintInstruction<TProgramAddress, TAccountMint>);\n}\n\nexport type ParsedInitializeConfidentialTransferMintInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The SPL Token mint. */\n        mint: TAccountMetas[0];\n    };\n    data: InitializeConfidentialTransferMintInstructionData;\n};\n\nexport function parseInitializeConfidentialTransferMintInstruction<\n    TProgram extends string,\n    TAccountMetas extends readonly AccountMeta[],\n>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedInitializeConfidentialTransferMintInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 1) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { mint: getNextAccount() },\n        data: getInitializeConfidentialTransferMintInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    combineCodec,\n    getStructDecoder,\n    getStructEncoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlyUint8Array,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\nimport { getAccountStateDecoder, getAccountStateEncoder, type AccountState, type AccountStateArgs } from '../types';\n\nexport const INITIALIZE_DEFAULT_ACCOUNT_STATE_DISCRIMINATOR = 28;\n\nexport function getInitializeDefaultAccountStateDiscriminatorBytes() {\n    return getU8Encoder().encode(INITIALIZE_DEFAULT_ACCOUNT_STATE_DISCRIMINATOR);\n}\n\nexport const INITIALIZE_DEFAULT_ACCOUNT_STATE_DEFAULT_ACCOUNT_STATE_DISCRIMINATOR = 0;\n\nexport function getInitializeDefaultAccountStateDefaultAccountStateDiscriminatorBytes() {\n    return getU8Encoder().encode(INITIALIZE_DEFAULT_ACCOUNT_STATE_DEFAULT_ACCOUNT_STATE_DISCRIMINATOR);\n}\n\nexport type InitializeDefaultAccountStateInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMint extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [TAccountMint extends string ? WritableAccount<TAccountMint> : TAccountMint, ...TRemainingAccounts]\n    >;\n\nexport type InitializeDefaultAccountStateInstructionData = {\n    discriminator: number;\n    defaultAccountStateDiscriminator: number;\n    /** The state each new token account should start with. */\n    state: AccountState;\n};\n\nexport type InitializeDefaultAccountStateInstructionDataArgs = {\n    /** The state each new token account should start with. */\n    state: AccountStateArgs;\n};\n\nexport function getInitializeDefaultAccountStateInstructionDataEncoder(): FixedSizeEncoder<InitializeDefaultAccountStateInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['defaultAccountStateDiscriminator', getU8Encoder()],\n            ['state', getAccountStateEncoder()],\n        ]),\n        value => ({\n            ...value,\n            discriminator: INITIALIZE_DEFAULT_ACCOUNT_STATE_DISCRIMINATOR,\n            defaultAccountStateDiscriminator: INITIALIZE_DEFAULT_ACCOUNT_STATE_DEFAULT_ACCOUNT_STATE_DISCRIMINATOR,\n        }),\n    );\n}\n\nexport function getInitializeDefaultAccountStateInstructionDataDecoder(): FixedSizeDecoder<InitializeDefaultAccountStateInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['defaultAccountStateDiscriminator', getU8Decoder()],\n        ['state', getAccountStateDecoder()],\n    ]);\n}\n\nexport function getInitializeDefaultAccountStateInstructionDataCodec(): FixedSizeCodec<\n    InitializeDefaultAccountStateInstructionDataArgs,\n    InitializeDefaultAccountStateInstructionData\n> {\n    return combineCodec(\n        getInitializeDefaultAccountStateInstructionDataEncoder(),\n        getInitializeDefaultAccountStateInstructionDataDecoder(),\n    );\n}\n\nexport type InitializeDefaultAccountStateInput<TAccountMint extends string = string> = {\n    /** The mint. */\n    mint: Address<TAccountMint>;\n    state: InitializeDefaultAccountStateInstructionDataArgs['state'];\n};\n\nexport function getInitializeDefaultAccountStateInstruction<\n    TAccountMint extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: InitializeDefaultAccountStateInput<TAccountMint>,\n    config?: { programAddress?: TProgramAddress },\n): InitializeDefaultAccountStateInstruction<TProgramAddress, TAccountMint> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = { mint: { value: input.mint ?? null, isWritable: true } };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [getAccountMeta(accounts.mint)],\n        data: getInitializeDefaultAccountStateInstructionDataEncoder().encode(\n            args as InitializeDefaultAccountStateInstructionDataArgs,\n        ),\n        programAddress,\n    } as InitializeDefaultAccountStateInstruction<TProgramAddress, TAccountMint>);\n}\n\nexport type ParsedInitializeDefaultAccountStateInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The mint. */\n        mint: TAccountMetas[0];\n    };\n    data: InitializeDefaultAccountStateInstructionData;\n};\n\nexport function parseInitializeDefaultAccountStateInstruction<\n    TProgram extends string,\n    TAccountMetas extends readonly AccountMeta[],\n>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedInitializeDefaultAccountStateInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 1) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { mint: getNextAccount() },\n        data: getInitializeDefaultAccountStateInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    combineCodec,\n    getAddressDecoder,\n    getAddressEncoder,\n    getOptionDecoder,\n    getOptionEncoder,\n    getStructDecoder,\n    getStructEncoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type Option,\n    type OptionOrNullable,\n    type ReadonlyUint8Array,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const INITIALIZE_GROUP_MEMBER_POINTER_DISCRIMINATOR = 41;\n\nexport function getInitializeGroupMemberPointerDiscriminatorBytes() {\n    return getU8Encoder().encode(INITIALIZE_GROUP_MEMBER_POINTER_DISCRIMINATOR);\n}\n\nexport const INITIALIZE_GROUP_MEMBER_POINTER_GROUP_MEMBER_POINTER_DISCRIMINATOR = 0;\n\nexport function getInitializeGroupMemberPointerGroupMemberPointerDiscriminatorBytes() {\n    return getU8Encoder().encode(INITIALIZE_GROUP_MEMBER_POINTER_GROUP_MEMBER_POINTER_DISCRIMINATOR);\n}\n\nexport type InitializeGroupMemberPointerInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMint extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [TAccountMint extends string ? WritableAccount<TAccountMint> : TAccountMint, ...TRemainingAccounts]\n    >;\n\nexport type InitializeGroupMemberPointerInstructionData = {\n    discriminator: number;\n    groupMemberPointerDiscriminator: number;\n    /** The public key for the account that can update the group member address. */\n    authority: Option<Address>;\n    /** The account address that holds the member. */\n    memberAddress: Option<Address>;\n};\n\nexport type InitializeGroupMemberPointerInstructionDataArgs = {\n    /** The public key for the account that can update the group member address. */\n    authority: OptionOrNullable<Address>;\n    /** The account address that holds the member. */\n    memberAddress: OptionOrNullable<Address>;\n};\n\nexport function getInitializeGroupMemberPointerInstructionDataEncoder(): FixedSizeEncoder<InitializeGroupMemberPointerInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['groupMemberPointerDiscriminator', getU8Encoder()],\n            ['authority', getOptionEncoder(getAddressEncoder(), { prefix: null, noneValue: 'zeroes' })],\n            ['memberAddress', getOptionEncoder(getAddressEncoder(), { prefix: null, noneValue: 'zeroes' })],\n        ]),\n        value => ({\n            ...value,\n            discriminator: INITIALIZE_GROUP_MEMBER_POINTER_DISCRIMINATOR,\n            groupMemberPointerDiscriminator: INITIALIZE_GROUP_MEMBER_POINTER_GROUP_MEMBER_POINTER_DISCRIMINATOR,\n        }),\n    );\n}\n\nexport function getInitializeGroupMemberPointerInstructionDataDecoder(): FixedSizeDecoder<InitializeGroupMemberPointerInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['groupMemberPointerDiscriminator', getU8Decoder()],\n        ['authority', getOptionDecoder(getAddressDecoder(), { prefix: null, noneValue: 'zeroes' })],\n        ['memberAddress', getOptionDecoder(getAddressDecoder(), { prefix: null, noneValue: 'zeroes' })],\n    ]);\n}\n\nexport function getInitializeGroupMemberPointerInstructionDataCodec(): FixedSizeCodec<\n    InitializeGroupMemberPointerInstructionDataArgs,\n    InitializeGroupMemberPointerInstructionData\n> {\n    return combineCodec(\n        getInitializeGroupMemberPointerInstructionDataEncoder(),\n        getInitializeGroupMemberPointerInstructionDataDecoder(),\n    );\n}\n\nexport type InitializeGroupMemberPointerInput<TAccountMint extends string = string> = {\n    /** The mint to initialize. */\n    mint: Address<TAccountMint>;\n    authority: InitializeGroupMemberPointerInstructionDataArgs['authority'];\n    memberAddress: InitializeGroupMemberPointerInstructionDataArgs['memberAddress'];\n};\n\nexport function getInitializeGroupMemberPointerInstruction<\n    TAccountMint extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: InitializeGroupMemberPointerInput<TAccountMint>,\n    config?: { programAddress?: TProgramAddress },\n): InitializeGroupMemberPointerInstruction<TProgramAddress, TAccountMint> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = { mint: { value: input.mint ?? null, isWritable: true } };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [getAccountMeta(accounts.mint)],\n        data: getInitializeGroupMemberPointerInstructionDataEncoder().encode(\n            args as InitializeGroupMemberPointerInstructionDataArgs,\n        ),\n        programAddress,\n    } as InitializeGroupMemberPointerInstruction<TProgramAddress, TAccountMint>);\n}\n\nexport type ParsedInitializeGroupMemberPointerInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The mint to initialize. */\n        mint: TAccountMetas[0];\n    };\n    data: InitializeGroupMemberPointerInstructionData;\n};\n\nexport function parseInitializeGroupMemberPointerInstruction<\n    TProgram extends string,\n    TAccountMetas extends readonly AccountMeta[],\n>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedInitializeGroupMemberPointerInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 1) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { mint: getNextAccount() },\n        data: getInitializeGroupMemberPointerInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    combineCodec,\n    getAddressDecoder,\n    getAddressEncoder,\n    getOptionDecoder,\n    getOptionEncoder,\n    getStructDecoder,\n    getStructEncoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type Option,\n    type OptionOrNullable,\n    type ReadonlyUint8Array,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const INITIALIZE_GROUP_POINTER_DISCRIMINATOR = 40;\n\nexport function getInitializeGroupPointerDiscriminatorBytes() {\n    return getU8Encoder().encode(INITIALIZE_GROUP_POINTER_DISCRIMINATOR);\n}\n\nexport const INITIALIZE_GROUP_POINTER_GROUP_POINTER_DISCRIMINATOR = 0;\n\nexport function getInitializeGroupPointerGroupPointerDiscriminatorBytes() {\n    return getU8Encoder().encode(INITIALIZE_GROUP_POINTER_GROUP_POINTER_DISCRIMINATOR);\n}\n\nexport type InitializeGroupPointerInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMint extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [TAccountMint extends string ? WritableAccount<TAccountMint> : TAccountMint, ...TRemainingAccounts]\n    >;\n\nexport type InitializeGroupPointerInstructionData = {\n    discriminator: number;\n    groupPointerDiscriminator: number;\n    /** The public key for the account that can update the group address. */\n    authority: Option<Address>;\n    /** The account address that holds the group. */\n    groupAddress: Option<Address>;\n};\n\nexport type InitializeGroupPointerInstructionDataArgs = {\n    /** The public key for the account that can update the group address. */\n    authority: OptionOrNullable<Address>;\n    /** The account address that holds the group. */\n    groupAddress: OptionOrNullable<Address>;\n};\n\nexport function getInitializeGroupPointerInstructionDataEncoder(): FixedSizeEncoder<InitializeGroupPointerInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['groupPointerDiscriminator', getU8Encoder()],\n            ['authority', getOptionEncoder(getAddressEncoder(), { prefix: null, noneValue: 'zeroes' })],\n            ['groupAddress', getOptionEncoder(getAddressEncoder(), { prefix: null, noneValue: 'zeroes' })],\n        ]),\n        value => ({\n            ...value,\n            discriminator: INITIALIZE_GROUP_POINTER_DISCRIMINATOR,\n            groupPointerDiscriminator: INITIALIZE_GROUP_POINTER_GROUP_POINTER_DISCRIMINATOR,\n        }),\n    );\n}\n\nexport function getInitializeGroupPointerInstructionDataDecoder(): FixedSizeDecoder<InitializeGroupPointerInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['groupPointerDiscriminator', getU8Decoder()],\n        ['authority', getOptionDecoder(getAddressDecoder(), { prefix: null, noneValue: 'zeroes' })],\n        ['groupAddress', getOptionDecoder(getAddressDecoder(), { prefix: null, noneValue: 'zeroes' })],\n    ]);\n}\n\nexport function getInitializeGroupPointerInstructionDataCodec(): FixedSizeCodec<\n    InitializeGroupPointerInstructionDataArgs,\n    InitializeGroupPointerInstructionData\n> {\n    return combineCodec(\n        getInitializeGroupPointerInstructionDataEncoder(),\n        getInitializeGroupPointerInstructionDataDecoder(),\n    );\n}\n\nexport type InitializeGroupPointerInput<TAccountMint extends string = string> = {\n    /** The mint to initialize. */\n    mint: Address<TAccountMint>;\n    authority: InitializeGroupPointerInstructionDataArgs['authority'];\n    groupAddress: InitializeGroupPointerInstructionDataArgs['groupAddress'];\n};\n\nexport function getInitializeGroupPointerInstruction<\n    TAccountMint extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: InitializeGroupPointerInput<TAccountMint>,\n    config?: { programAddress?: TProgramAddress },\n): InitializeGroupPointerInstruction<TProgramAddress, TAccountMint> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = { mint: { value: input.mint ?? null, isWritable: true } };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [getAccountMeta(accounts.mint)],\n        data: getInitializeGroupPointerInstructionDataEncoder().encode(\n            args as InitializeGroupPointerInstructionDataArgs,\n        ),\n        programAddress,\n    } as InitializeGroupPointerInstruction<TProgramAddress, TAccountMint>);\n}\n\nexport type ParsedInitializeGroupPointerInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The mint to initialize. */\n        mint: TAccountMetas[0];\n    };\n    data: InitializeGroupPointerInstructionData;\n};\n\nexport function parseInitializeGroupPointerInstruction<\n    TProgram extends string,\n    TAccountMetas extends readonly AccountMeta[],\n>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedInitializeGroupPointerInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 1) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { mint: getNextAccount() },\n        data: getInitializeGroupPointerInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    combineCodec,\n    getStructDecoder,\n    getStructEncoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlyUint8Array,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const INITIALIZE_IMMUTABLE_OWNER_DISCRIMINATOR = 22;\n\nexport function getInitializeImmutableOwnerDiscriminatorBytes() {\n    return getU8Encoder().encode(INITIALIZE_IMMUTABLE_OWNER_DISCRIMINATOR);\n}\n\nexport type InitializeImmutableOwnerInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountAccount extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [TAccountAccount extends string ? WritableAccount<TAccountAccount> : TAccountAccount, ...TRemainingAccounts]\n    >;\n\nexport type InitializeImmutableOwnerInstructionData = { discriminator: number };\n\nexport type InitializeImmutableOwnerInstructionDataArgs = {};\n\nexport function getInitializeImmutableOwnerInstructionDataEncoder(): FixedSizeEncoder<InitializeImmutableOwnerInstructionDataArgs> {\n    return transformEncoder(getStructEncoder([['discriminator', getU8Encoder()]]), value => ({\n        ...value,\n        discriminator: INITIALIZE_IMMUTABLE_OWNER_DISCRIMINATOR,\n    }));\n}\n\nexport function getInitializeImmutableOwnerInstructionDataDecoder(): FixedSizeDecoder<InitializeImmutableOwnerInstructionData> {\n    return getStructDecoder([['discriminator', getU8Decoder()]]);\n}\n\nexport function getInitializeImmutableOwnerInstructionDataCodec(): FixedSizeCodec<\n    InitializeImmutableOwnerInstructionDataArgs,\n    InitializeImmutableOwnerInstructionData\n> {\n    return combineCodec(\n        getInitializeImmutableOwnerInstructionDataEncoder(),\n        getInitializeImmutableOwnerInstructionDataDecoder(),\n    );\n}\n\nexport type InitializeImmutableOwnerInput<TAccountAccount extends string = string> = {\n    /** The account to initialize. */\n    account: Address<TAccountAccount>;\n};\n\nexport function getInitializeImmutableOwnerInstruction<\n    TAccountAccount extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: InitializeImmutableOwnerInput<TAccountAccount>,\n    config?: { programAddress?: TProgramAddress },\n): InitializeImmutableOwnerInstruction<TProgramAddress, TAccountAccount> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = { account: { value: input.account ?? null, isWritable: true } };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [getAccountMeta(accounts.account)],\n        data: getInitializeImmutableOwnerInstructionDataEncoder().encode({}),\n        programAddress,\n    } as InitializeImmutableOwnerInstruction<TProgramAddress, TAccountAccount>);\n}\n\nexport type ParsedInitializeImmutableOwnerInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The account to initialize. */\n        account: TAccountMetas[0];\n    };\n    data: InitializeImmutableOwnerInstructionData;\n};\n\nexport function parseInitializeImmutableOwnerInstruction<\n    TProgram extends string,\n    TAccountMetas extends readonly AccountMeta[],\n>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedInitializeImmutableOwnerInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 1) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { account: getNextAccount() },\n        data: getInitializeImmutableOwnerInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    combineCodec,\n    getAddressDecoder,\n    getAddressEncoder,\n    getI16Decoder,\n    getI16Encoder,\n    getOptionDecoder,\n    getOptionEncoder,\n    getStructDecoder,\n    getStructEncoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type Option,\n    type OptionOrNullable,\n    type ReadonlyUint8Array,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const INITIALIZE_INTEREST_BEARING_MINT_DISCRIMINATOR = 33;\n\nexport function getInitializeInterestBearingMintDiscriminatorBytes() {\n    return getU8Encoder().encode(INITIALIZE_INTEREST_BEARING_MINT_DISCRIMINATOR);\n}\n\nexport const INITIALIZE_INTEREST_BEARING_MINT_INTEREST_BEARING_MINT_DISCRIMINATOR = 0;\n\nexport function getInitializeInterestBearingMintInterestBearingMintDiscriminatorBytes() {\n    return getU8Encoder().encode(INITIALIZE_INTEREST_BEARING_MINT_INTEREST_BEARING_MINT_DISCRIMINATOR);\n}\n\nexport type InitializeInterestBearingMintInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMint extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [TAccountMint extends string ? WritableAccount<TAccountMint> : TAccountMint, ...TRemainingAccounts]\n    >;\n\nexport type InitializeInterestBearingMintInstructionData = {\n    discriminator: number;\n    interestBearingMintDiscriminator: number;\n    /** The public key for the account that can update the rate */\n    rateAuthority: Option<Address>;\n    /** The initial interest rate */\n    rate: number;\n};\n\nexport type InitializeInterestBearingMintInstructionDataArgs = {\n    /** The public key for the account that can update the rate */\n    rateAuthority: OptionOrNullable<Address>;\n    /** The initial interest rate */\n    rate: number;\n};\n\nexport function getInitializeInterestBearingMintInstructionDataEncoder(): FixedSizeEncoder<InitializeInterestBearingMintInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['interestBearingMintDiscriminator', getU8Encoder()],\n            ['rateAuthority', getOptionEncoder(getAddressEncoder(), { prefix: null, noneValue: 'zeroes' })],\n            ['rate', getI16Encoder()],\n        ]),\n        value => ({\n            ...value,\n            discriminator: INITIALIZE_INTEREST_BEARING_MINT_DISCRIMINATOR,\n            interestBearingMintDiscriminator: INITIALIZE_INTEREST_BEARING_MINT_INTEREST_BEARING_MINT_DISCRIMINATOR,\n        }),\n    );\n}\n\nexport function getInitializeInterestBearingMintInstructionDataDecoder(): FixedSizeDecoder<InitializeInterestBearingMintInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['interestBearingMintDiscriminator', getU8Decoder()],\n        ['rateAuthority', getOptionDecoder(getAddressDecoder(), { prefix: null, noneValue: 'zeroes' })],\n        ['rate', getI16Decoder()],\n    ]);\n}\n\nexport function getInitializeInterestBearingMintInstructionDataCodec(): FixedSizeCodec<\n    InitializeInterestBearingMintInstructionDataArgs,\n    InitializeInterestBearingMintInstructionData\n> {\n    return combineCodec(\n        getInitializeInterestBearingMintInstructionDataEncoder(),\n        getInitializeInterestBearingMintInstructionDataDecoder(),\n    );\n}\n\nexport type InitializeInterestBearingMintInput<TAccountMint extends string = string> = {\n    /** The mint to initialize. */\n    mint: Address<TAccountMint>;\n    rateAuthority: InitializeInterestBearingMintInstructionDataArgs['rateAuthority'];\n    rate: InitializeInterestBearingMintInstructionDataArgs['rate'];\n};\n\nexport function getInitializeInterestBearingMintInstruction<\n    TAccountMint extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: InitializeInterestBearingMintInput<TAccountMint>,\n    config?: { programAddress?: TProgramAddress },\n): InitializeInterestBearingMintInstruction<TProgramAddress, TAccountMint> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = { mint: { value: input.mint ?? null, isWritable: true } };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [getAccountMeta(accounts.mint)],\n        data: getInitializeInterestBearingMintInstructionDataEncoder().encode(\n            args as InitializeInterestBearingMintInstructionDataArgs,\n        ),\n        programAddress,\n    } as InitializeInterestBearingMintInstruction<TProgramAddress, TAccountMint>);\n}\n\nexport type ParsedInitializeInterestBearingMintInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The mint to initialize. */\n        mint: TAccountMetas[0];\n    };\n    data: InitializeInterestBearingMintInstructionData;\n};\n\nexport function parseInitializeInterestBearingMintInstruction<\n    TProgram extends string,\n    TAccountMetas extends readonly AccountMeta[],\n>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedInitializeInterestBearingMintInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 1) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { mint: getNextAccount() },\n        data: getInitializeInterestBearingMintInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    combineCodec,\n    getAddressDecoder,\n    getAddressEncoder,\n    getOptionDecoder,\n    getOptionEncoder,\n    getStructDecoder,\n    getStructEncoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type Option,\n    type OptionOrNullable,\n    type ReadonlyUint8Array,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const INITIALIZE_METADATA_POINTER_DISCRIMINATOR = 39;\n\nexport function getInitializeMetadataPointerDiscriminatorBytes() {\n    return getU8Encoder().encode(INITIALIZE_METADATA_POINTER_DISCRIMINATOR);\n}\n\nexport const INITIALIZE_METADATA_POINTER_METADATA_POINTER_DISCRIMINATOR = 0;\n\nexport function getInitializeMetadataPointerMetadataPointerDiscriminatorBytes() {\n    return getU8Encoder().encode(INITIALIZE_METADATA_POINTER_METADATA_POINTER_DISCRIMINATOR);\n}\n\nexport type InitializeMetadataPointerInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMint extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [TAccountMint extends string ? WritableAccount<TAccountMint> : TAccountMint, ...TRemainingAccounts]\n    >;\n\nexport type InitializeMetadataPointerInstructionData = {\n    discriminator: number;\n    metadataPointerDiscriminator: number;\n    /** The public key for the account that can update the metadata address. */\n    authority: Option<Address>;\n    /** The account address that holds the metadata. */\n    metadataAddress: Option<Address>;\n};\n\nexport type InitializeMetadataPointerInstructionDataArgs = {\n    /** The public key for the account that can update the metadata address. */\n    authority: OptionOrNullable<Address>;\n    /** The account address that holds the metadata. */\n    metadataAddress: OptionOrNullable<Address>;\n};\n\nexport function getInitializeMetadataPointerInstructionDataEncoder(): FixedSizeEncoder<InitializeMetadataPointerInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['metadataPointerDiscriminator', getU8Encoder()],\n            ['authority', getOptionEncoder(getAddressEncoder(), { prefix: null, noneValue: 'zeroes' })],\n            ['metadataAddress', getOptionEncoder(getAddressEncoder(), { prefix: null, noneValue: 'zeroes' })],\n        ]),\n        value => ({\n            ...value,\n            discriminator: INITIALIZE_METADATA_POINTER_DISCRIMINATOR,\n            metadataPointerDiscriminator: INITIALIZE_METADATA_POINTER_METADATA_POINTER_DISCRIMINATOR,\n        }),\n    );\n}\n\nexport function getInitializeMetadataPointerInstructionDataDecoder(): FixedSizeDecoder<InitializeMetadataPointerInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['metadataPointerDiscriminator', getU8Decoder()],\n        ['authority', getOptionDecoder(getAddressDecoder(), { prefix: null, noneValue: 'zeroes' })],\n        ['metadataAddress', getOptionDecoder(getAddressDecoder(), { prefix: null, noneValue: 'zeroes' })],\n    ]);\n}\n\nexport function getInitializeMetadataPointerInstructionDataCodec(): FixedSizeCodec<\n    InitializeMetadataPointerInstructionDataArgs,\n    InitializeMetadataPointerInstructionData\n> {\n    return combineCodec(\n        getInitializeMetadataPointerInstructionDataEncoder(),\n        getInitializeMetadataPointerInstructionDataDecoder(),\n    );\n}\n\nexport type InitializeMetadataPointerInput<TAccountMint extends string = string> = {\n    /** The mint to initialize. */\n    mint: Address<TAccountMint>;\n    authority: InitializeMetadataPointerInstructionDataArgs['authority'];\n    metadataAddress: InitializeMetadataPointerInstructionDataArgs['metadataAddress'];\n};\n\nexport function getInitializeMetadataPointerInstruction<\n    TAccountMint extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: InitializeMetadataPointerInput<TAccountMint>,\n    config?: { programAddress?: TProgramAddress },\n): InitializeMetadataPointerInstruction<TProgramAddress, TAccountMint> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = { mint: { value: input.mint ?? null, isWritable: true } };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [getAccountMeta(accounts.mint)],\n        data: getInitializeMetadataPointerInstructionDataEncoder().encode(\n            args as InitializeMetadataPointerInstructionDataArgs,\n        ),\n        programAddress,\n    } as InitializeMetadataPointerInstruction<TProgramAddress, TAccountMint>);\n}\n\nexport type ParsedInitializeMetadataPointerInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The mint to initialize. */\n        mint: TAccountMetas[0];\n    };\n    data: InitializeMetadataPointerInstructionData;\n};\n\nexport function parseInitializeMetadataPointerInstruction<\n    TProgram extends string,\n    TAccountMetas extends readonly AccountMeta[],\n>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedInitializeMetadataPointerInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 1) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { mint: getNextAccount() },\n        data: getInitializeMetadataPointerInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    combineCodec,\n    getAddressDecoder,\n    getAddressEncoder,\n    getOptionDecoder,\n    getOptionEncoder,\n    getStructDecoder,\n    getStructEncoder,\n    getU8Decoder,\n    getU8Encoder,\n    none,\n    transformEncoder,\n    type AccountMeta,\n    type Address,\n    type Codec,\n    type Decoder,\n    type Encoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type Option,\n    type OptionOrNullable,\n    type ReadonlyAccount,\n    type ReadonlyUint8Array,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const INITIALIZE_MINT_DISCRIMINATOR = 0;\n\nexport function getInitializeMintDiscriminatorBytes() {\n    return getU8Encoder().encode(INITIALIZE_MINT_DISCRIMINATOR);\n}\n\nexport type InitializeMintInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMint extends string | AccountMeta<string> = string,\n    TAccountRent extends string | AccountMeta<string> = 'SysvarRent111111111111111111111111111111111',\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [\n            TAccountMint extends string ? WritableAccount<TAccountMint> : TAccountMint,\n            TAccountRent extends string ? ReadonlyAccount<TAccountRent> : TAccountRent,\n            ...TRemainingAccounts,\n        ]\n    >;\n\nexport type InitializeMintInstructionData = {\n    discriminator: number;\n    /** Number of decimals in token account amounts. */\n    decimals: number;\n    /** Minting authority. */\n    mintAuthority: Address;\n    /** Optional authority that can freeze token accounts. */\n    freezeAuthority: Option<Address>;\n};\n\nexport type InitializeMintInstructionDataArgs = {\n    /** Number of decimals in token account amounts. */\n    decimals: number;\n    /** Minting authority. */\n    mintAuthority: Address;\n    /** Optional authority that can freeze token accounts. */\n    freezeAuthority?: OptionOrNullable<Address>;\n};\n\nexport function getInitializeMintInstructionDataEncoder(): Encoder<InitializeMintInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['decimals', getU8Encoder()],\n            ['mintAuthority', getAddressEncoder()],\n            ['freezeAuthority', getOptionEncoder(getAddressEncoder())],\n        ]),\n        value => ({\n            ...value,\n            discriminator: INITIALIZE_MINT_DISCRIMINATOR,\n            freezeAuthority: value.freezeAuthority ?? none(),\n        }),\n    );\n}\n\nexport function getInitializeMintInstructionDataDecoder(): Decoder<InitializeMintInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['decimals', getU8Decoder()],\n        ['mintAuthority', getAddressDecoder()],\n        ['freezeAuthority', getOptionDecoder(getAddressDecoder())],\n    ]);\n}\n\nexport function getInitializeMintInstructionDataCodec(): Codec<\n    InitializeMintInstructionDataArgs,\n    InitializeMintInstructionData\n> {\n    return combineCodec(getInitializeMintInstructionDataEncoder(), getInitializeMintInstructionDataDecoder());\n}\n\nexport type InitializeMintInput<TAccountMint extends string = string, TAccountRent extends string = string> = {\n    /** Token mint account. */\n    mint: Address<TAccountMint>;\n    /** Rent sysvar. */\n    rent?: Address<TAccountRent>;\n    decimals: InitializeMintInstructionDataArgs['decimals'];\n    mintAuthority: InitializeMintInstructionDataArgs['mintAuthority'];\n    freezeAuthority?: InitializeMintInstructionDataArgs['freezeAuthority'];\n};\n\nexport function getInitializeMintInstruction<\n    TAccountMint extends string,\n    TAccountRent extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: InitializeMintInput<TAccountMint, TAccountRent>,\n    config?: { programAddress?: TProgramAddress },\n): InitializeMintInstruction<TProgramAddress, TAccountMint, TAccountRent> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        mint: { value: input.mint ?? null, isWritable: true },\n        rent: { value: input.rent ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    // Resolve default values.\n    if (!accounts.rent.value) {\n        accounts.rent.value =\n            'SysvarRent111111111111111111111111111111111' as Address<'SysvarRent111111111111111111111111111111111'>;\n    }\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [getAccountMeta(accounts.mint), getAccountMeta(accounts.rent)],\n        data: getInitializeMintInstructionDataEncoder().encode(args as InitializeMintInstructionDataArgs),\n        programAddress,\n    } as InitializeMintInstruction<TProgramAddress, TAccountMint, TAccountRent>);\n}\n\nexport type ParsedInitializeMintInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** Token mint account. */\n        mint: TAccountMetas[0];\n        /** Rent sysvar. */\n        rent: TAccountMetas[1];\n    };\n    data: InitializeMintInstructionData;\n};\n\nexport function parseInitializeMintInstruction<TProgram extends string, TAccountMetas extends readonly AccountMeta[]>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedInitializeMintInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 2) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { mint: getNextAccount(), rent: getNextAccount() },\n        data: getInitializeMintInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    combineCodec,\n    getAddressDecoder,\n    getAddressEncoder,\n    getOptionDecoder,\n    getOptionEncoder,\n    getStructDecoder,\n    getStructEncoder,\n    getU8Decoder,\n    getU8Encoder,\n    none,\n    transformEncoder,\n    type AccountMeta,\n    type Address,\n    type Codec,\n    type Decoder,\n    type Encoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type Option,\n    type OptionOrNullable,\n    type ReadonlyUint8Array,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const INITIALIZE_MINT2_DISCRIMINATOR = 20;\n\nexport function getInitializeMint2DiscriminatorBytes() {\n    return getU8Encoder().encode(INITIALIZE_MINT2_DISCRIMINATOR);\n}\n\nexport type InitializeMint2Instruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMint extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [TAccountMint extends string ? WritableAccount<TAccountMint> : TAccountMint, ...TRemainingAccounts]\n    >;\n\nexport type InitializeMint2InstructionData = {\n    discriminator: number;\n    /** Number of base 10 digits to the right of the decimal place. */\n    decimals: number;\n    /** The authority/multisignature to mint tokens. */\n    mintAuthority: Address;\n    /** The optional freeze authority/multisignature of the mint. */\n    freezeAuthority: Option<Address>;\n};\n\nexport type InitializeMint2InstructionDataArgs = {\n    /** Number of base 10 digits to the right of the decimal place. */\n    decimals: number;\n    /** The authority/multisignature to mint tokens. */\n    mintAuthority: Address;\n    /** The optional freeze authority/multisignature of the mint. */\n    freezeAuthority?: OptionOrNullable<Address>;\n};\n\nexport function getInitializeMint2InstructionDataEncoder(): Encoder<InitializeMint2InstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['decimals', getU8Encoder()],\n            ['mintAuthority', getAddressEncoder()],\n            ['freezeAuthority', getOptionEncoder(getAddressEncoder())],\n        ]),\n        value => ({\n            ...value,\n            discriminator: INITIALIZE_MINT2_DISCRIMINATOR,\n            freezeAuthority: value.freezeAuthority ?? none(),\n        }),\n    );\n}\n\nexport function getInitializeMint2InstructionDataDecoder(): Decoder<InitializeMint2InstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['decimals', getU8Decoder()],\n        ['mintAuthority', getAddressDecoder()],\n        ['freezeAuthority', getOptionDecoder(getAddressDecoder())],\n    ]);\n}\n\nexport function getInitializeMint2InstructionDataCodec(): Codec<\n    InitializeMint2InstructionDataArgs,\n    InitializeMint2InstructionData\n> {\n    return combineCodec(getInitializeMint2InstructionDataEncoder(), getInitializeMint2InstructionDataDecoder());\n}\n\nexport type InitializeMint2Input<TAccountMint extends string = string> = {\n    /** The mint to initialize. */\n    mint: Address<TAccountMint>;\n    decimals: InitializeMint2InstructionDataArgs['decimals'];\n    mintAuthority: InitializeMint2InstructionDataArgs['mintAuthority'];\n    freezeAuthority?: InitializeMint2InstructionDataArgs['freezeAuthority'];\n};\n\nexport function getInitializeMint2Instruction<\n    TAccountMint extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: InitializeMint2Input<TAccountMint>,\n    config?: { programAddress?: TProgramAddress },\n): InitializeMint2Instruction<TProgramAddress, TAccountMint> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = { mint: { value: input.mint ?? null, isWritable: true } };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [getAccountMeta(accounts.mint)],\n        data: getInitializeMint2InstructionDataEncoder().encode(args as InitializeMint2InstructionDataArgs),\n        programAddress,\n    } as InitializeMint2Instruction<TProgramAddress, TAccountMint>);\n}\n\nexport type ParsedInitializeMint2Instruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The mint to initialize. */\n        mint: TAccountMetas[0];\n    };\n    data: InitializeMint2InstructionData;\n};\n\nexport function parseInitializeMint2Instruction<TProgram extends string, TAccountMetas extends readonly AccountMeta[]>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedInitializeMint2Instruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 1) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { mint: getNextAccount() },\n        data: getInitializeMint2InstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    combineCodec,\n    getAddressDecoder,\n    getAddressEncoder,\n    getOptionDecoder,\n    getOptionEncoder,\n    getStructDecoder,\n    getStructEncoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type Address,\n    type Codec,\n    type Decoder,\n    type Encoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type Option,\n    type OptionOrNullable,\n    type ReadonlyUint8Array,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const INITIALIZE_MINT_CLOSE_AUTHORITY_DISCRIMINATOR = 25;\n\nexport function getInitializeMintCloseAuthorityDiscriminatorBytes() {\n    return getU8Encoder().encode(INITIALIZE_MINT_CLOSE_AUTHORITY_DISCRIMINATOR);\n}\n\nexport type InitializeMintCloseAuthorityInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMint extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [TAccountMint extends string ? WritableAccount<TAccountMint> : TAccountMint, ...TRemainingAccounts]\n    >;\n\nexport type InitializeMintCloseAuthorityInstructionData = {\n    discriminator: number;\n    /** Authority that must sign the `CloseAccount` instruction on a mint. */\n    closeAuthority: Option<Address>;\n};\n\nexport type InitializeMintCloseAuthorityInstructionDataArgs = {\n    /** Authority that must sign the `CloseAccount` instruction on a mint. */\n    closeAuthority: OptionOrNullable<Address>;\n};\n\nexport function getInitializeMintCloseAuthorityInstructionDataEncoder(): Encoder<InitializeMintCloseAuthorityInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['closeAuthority', getOptionEncoder(getAddressEncoder())],\n        ]),\n        value => ({ ...value, discriminator: INITIALIZE_MINT_CLOSE_AUTHORITY_DISCRIMINATOR }),\n    );\n}\n\nexport function getInitializeMintCloseAuthorityInstructionDataDecoder(): Decoder<InitializeMintCloseAuthorityInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['closeAuthority', getOptionDecoder(getAddressDecoder())],\n    ]);\n}\n\nexport function getInitializeMintCloseAuthorityInstructionDataCodec(): Codec<\n    InitializeMintCloseAuthorityInstructionDataArgs,\n    InitializeMintCloseAuthorityInstructionData\n> {\n    return combineCodec(\n        getInitializeMintCloseAuthorityInstructionDataEncoder(),\n        getInitializeMintCloseAuthorityInstructionDataDecoder(),\n    );\n}\n\nexport type InitializeMintCloseAuthorityInput<TAccountMint extends string = string> = {\n    /** The mint to initialize. */\n    mint: Address<TAccountMint>;\n    closeAuthority: InitializeMintCloseAuthorityInstructionDataArgs['closeAuthority'];\n};\n\nexport function getInitializeMintCloseAuthorityInstruction<\n    TAccountMint extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: InitializeMintCloseAuthorityInput<TAccountMint>,\n    config?: { programAddress?: TProgramAddress },\n): InitializeMintCloseAuthorityInstruction<TProgramAddress, TAccountMint> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = { mint: { value: input.mint ?? null, isWritable: true } };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [getAccountMeta(accounts.mint)],\n        data: getInitializeMintCloseAuthorityInstructionDataEncoder().encode(\n            args as InitializeMintCloseAuthorityInstructionDataArgs,\n        ),\n        programAddress,\n    } as InitializeMintCloseAuthorityInstruction<TProgramAddress, TAccountMint>);\n}\n\nexport type ParsedInitializeMintCloseAuthorityInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The mint to initialize. */\n        mint: TAccountMetas[0];\n    };\n    data: InitializeMintCloseAuthorityInstructionData;\n};\n\nexport function parseInitializeMintCloseAuthorityInstruction<\n    TProgram extends string,\n    TAccountMetas extends readonly AccountMeta[],\n>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedInitializeMintCloseAuthorityInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 1) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { mint: getNextAccount() },\n        data: getInitializeMintCloseAuthorityInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    AccountRole,\n    combineCodec,\n    getStructDecoder,\n    getStructEncoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlyAccount,\n    type ReadonlyUint8Array,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const INITIALIZE_MULTISIG_DISCRIMINATOR = 2;\n\nexport function getInitializeMultisigDiscriminatorBytes() {\n    return getU8Encoder().encode(INITIALIZE_MULTISIG_DISCRIMINATOR);\n}\n\nexport type InitializeMultisigInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMultisig extends string | AccountMeta<string> = string,\n    TAccountRent extends string | AccountMeta<string> = 'SysvarRent111111111111111111111111111111111',\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [\n            TAccountMultisig extends string ? WritableAccount<TAccountMultisig> : TAccountMultisig,\n            TAccountRent extends string ? ReadonlyAccount<TAccountRent> : TAccountRent,\n            ...TRemainingAccounts,\n        ]\n    >;\n\nexport type InitializeMultisigInstructionData = {\n    discriminator: number;\n    /** The number of signers (M) required to validate this multisignature account. */\n    m: number;\n};\n\nexport type InitializeMultisigInstructionDataArgs = {\n    /** The number of signers (M) required to validate this multisignature account. */\n    m: number;\n};\n\nexport function getInitializeMultisigInstructionDataEncoder(): FixedSizeEncoder<InitializeMultisigInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['m', getU8Encoder()],\n        ]),\n        value => ({ ...value, discriminator: INITIALIZE_MULTISIG_DISCRIMINATOR }),\n    );\n}\n\nexport function getInitializeMultisigInstructionDataDecoder(): FixedSizeDecoder<InitializeMultisigInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['m', getU8Decoder()],\n    ]);\n}\n\nexport function getInitializeMultisigInstructionDataCodec(): FixedSizeCodec<\n    InitializeMultisigInstructionDataArgs,\n    InitializeMultisigInstructionData\n> {\n    return combineCodec(getInitializeMultisigInstructionDataEncoder(), getInitializeMultisigInstructionDataDecoder());\n}\n\nexport type InitializeMultisigInput<TAccountMultisig extends string = string, TAccountRent extends string = string> = {\n    /** The multisignature account to initialize. */\n    multisig: Address<TAccountMultisig>;\n    /** Rent sysvar. */\n    rent?: Address<TAccountRent>;\n    m: InitializeMultisigInstructionDataArgs['m'];\n    signers: Array<Address>;\n};\n\nexport function getInitializeMultisigInstruction<\n    TAccountMultisig extends string,\n    TAccountRent extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: InitializeMultisigInput<TAccountMultisig, TAccountRent>,\n    config?: { programAddress?: TProgramAddress },\n): InitializeMultisigInstruction<TProgramAddress, TAccountMultisig, TAccountRent> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        multisig: { value: input.multisig ?? null, isWritable: true },\n        rent: { value: input.rent ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    // Resolve default values.\n    if (!accounts.rent.value) {\n        accounts.rent.value =\n            'SysvarRent111111111111111111111111111111111' as Address<'SysvarRent111111111111111111111111111111111'>;\n    }\n\n    // Remaining accounts.\n    const remainingAccounts: AccountMeta[] = args.signers.map(address => ({ address, role: AccountRole.READONLY }));\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [getAccountMeta(accounts.multisig), getAccountMeta(accounts.rent), ...remainingAccounts],\n        data: getInitializeMultisigInstructionDataEncoder().encode(args as InitializeMultisigInstructionDataArgs),\n        programAddress,\n    } as InitializeMultisigInstruction<TProgramAddress, TAccountMultisig, TAccountRent>);\n}\n\nexport type ParsedInitializeMultisigInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The multisignature account to initialize. */\n        multisig: TAccountMetas[0];\n        /** Rent sysvar. */\n        rent: TAccountMetas[1];\n    };\n    data: InitializeMultisigInstructionData;\n};\n\nexport function parseInitializeMultisigInstruction<\n    TProgram extends string,\n    TAccountMetas extends readonly AccountMeta[],\n>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedInitializeMultisigInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 2) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { multisig: getNextAccount(), rent: getNextAccount() },\n        data: getInitializeMultisigInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    AccountRole,\n    combineCodec,\n    getStructDecoder,\n    getStructEncoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlyUint8Array,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const INITIALIZE_MULTISIG2_DISCRIMINATOR = 19;\n\nexport function getInitializeMultisig2DiscriminatorBytes() {\n    return getU8Encoder().encode(INITIALIZE_MULTISIG2_DISCRIMINATOR);\n}\n\nexport type InitializeMultisig2Instruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMultisig extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [TAccountMultisig extends string ? WritableAccount<TAccountMultisig> : TAccountMultisig, ...TRemainingAccounts]\n    >;\n\nexport type InitializeMultisig2InstructionData = {\n    discriminator: number;\n    /** The number of signers (M) required to validate this multisignature account. */\n    m: number;\n};\n\nexport type InitializeMultisig2InstructionDataArgs = {\n    /** The number of signers (M) required to validate this multisignature account. */\n    m: number;\n};\n\nexport function getInitializeMultisig2InstructionDataEncoder(): FixedSizeEncoder<InitializeMultisig2InstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['m', getU8Encoder()],\n        ]),\n        value => ({ ...value, discriminator: INITIALIZE_MULTISIG2_DISCRIMINATOR }),\n    );\n}\n\nexport function getInitializeMultisig2InstructionDataDecoder(): FixedSizeDecoder<InitializeMultisig2InstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['m', getU8Decoder()],\n    ]);\n}\n\nexport function getInitializeMultisig2InstructionDataCodec(): FixedSizeCodec<\n    InitializeMultisig2InstructionDataArgs,\n    InitializeMultisig2InstructionData\n> {\n    return combineCodec(getInitializeMultisig2InstructionDataEncoder(), getInitializeMultisig2InstructionDataDecoder());\n}\n\nexport type InitializeMultisig2Input<TAccountMultisig extends string = string> = {\n    /** The multisignature account to initialize. */\n    multisig: Address<TAccountMultisig>;\n    m: InitializeMultisig2InstructionDataArgs['m'];\n    signers: Array<Address>;\n};\n\nexport function getInitializeMultisig2Instruction<\n    TAccountMultisig extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: InitializeMultisig2Input<TAccountMultisig>,\n    config?: { programAddress?: TProgramAddress },\n): InitializeMultisig2Instruction<TProgramAddress, TAccountMultisig> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = { multisig: { value: input.multisig ?? null, isWritable: true } };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    // Remaining accounts.\n    const remainingAccounts: AccountMeta[] = args.signers.map(address => ({ address, role: AccountRole.READONLY }));\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [getAccountMeta(accounts.multisig), ...remainingAccounts],\n        data: getInitializeMultisig2InstructionDataEncoder().encode(args as InitializeMultisig2InstructionDataArgs),\n        programAddress,\n    } as InitializeMultisig2Instruction<TProgramAddress, TAccountMultisig>);\n}\n\nexport type ParsedInitializeMultisig2Instruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The multisignature account to initialize. */\n        multisig: TAccountMetas[0];\n    };\n    data: InitializeMultisig2InstructionData;\n};\n\nexport function parseInitializeMultisig2Instruction<\n    TProgram extends string,\n    TAccountMetas extends readonly AccountMeta[],\n>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedInitializeMultisig2Instruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 1) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { multisig: getNextAccount() },\n        data: getInitializeMultisig2InstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    combineCodec,\n    getStructDecoder,\n    getStructEncoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlyUint8Array,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const INITIALIZE_NON_TRANSFERABLE_MINT_DISCRIMINATOR = 32;\n\nexport function getInitializeNonTransferableMintDiscriminatorBytes() {\n    return getU8Encoder().encode(INITIALIZE_NON_TRANSFERABLE_MINT_DISCRIMINATOR);\n}\n\nexport type InitializeNonTransferableMintInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMint extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [TAccountMint extends string ? WritableAccount<TAccountMint> : TAccountMint, ...TRemainingAccounts]\n    >;\n\nexport type InitializeNonTransferableMintInstructionData = { discriminator: number };\n\nexport type InitializeNonTransferableMintInstructionDataArgs = {};\n\nexport function getInitializeNonTransferableMintInstructionDataEncoder(): FixedSizeEncoder<InitializeNonTransferableMintInstructionDataArgs> {\n    return transformEncoder(getStructEncoder([['discriminator', getU8Encoder()]]), value => ({\n        ...value,\n        discriminator: INITIALIZE_NON_TRANSFERABLE_MINT_DISCRIMINATOR,\n    }));\n}\n\nexport function getInitializeNonTransferableMintInstructionDataDecoder(): FixedSizeDecoder<InitializeNonTransferableMintInstructionData> {\n    return getStructDecoder([['discriminator', getU8Decoder()]]);\n}\n\nexport function getInitializeNonTransferableMintInstructionDataCodec(): FixedSizeCodec<\n    InitializeNonTransferableMintInstructionDataArgs,\n    InitializeNonTransferableMintInstructionData\n> {\n    return combineCodec(\n        getInitializeNonTransferableMintInstructionDataEncoder(),\n        getInitializeNonTransferableMintInstructionDataDecoder(),\n    );\n}\n\nexport type InitializeNonTransferableMintInput<TAccountMint extends string = string> = {\n    /** The mint account to initialize. */\n    mint: Address<TAccountMint>;\n};\n\nexport function getInitializeNonTransferableMintInstruction<\n    TAccountMint extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: InitializeNonTransferableMintInput<TAccountMint>,\n    config?: { programAddress?: TProgramAddress },\n): InitializeNonTransferableMintInstruction<TProgramAddress, TAccountMint> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = { mint: { value: input.mint ?? null, isWritable: true } };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [getAccountMeta(accounts.mint)],\n        data: getInitializeNonTransferableMintInstructionDataEncoder().encode({}),\n        programAddress,\n    } as InitializeNonTransferableMintInstruction<TProgramAddress, TAccountMint>);\n}\n\nexport type ParsedInitializeNonTransferableMintInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The mint account to initialize. */\n        mint: TAccountMetas[0];\n    };\n    data: InitializeNonTransferableMintInstructionData;\n};\n\nexport function parseInitializeNonTransferableMintInstruction<\n    TProgram extends string,\n    TAccountMetas extends readonly AccountMeta[],\n>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedInitializeNonTransferableMintInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 1) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { mint: getNextAccount() },\n        data: getInitializeNonTransferableMintInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    combineCodec,\n    getAddressDecoder,\n    getAddressEncoder,\n    getOptionDecoder,\n    getOptionEncoder,\n    getStructDecoder,\n    getStructEncoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type Option,\n    type OptionOrNullable,\n    type ReadonlyUint8Array,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const INITIALIZE_PAUSABLE_CONFIG_DISCRIMINATOR = 44;\n\nexport function getInitializePausableConfigDiscriminatorBytes() {\n    return getU8Encoder().encode(INITIALIZE_PAUSABLE_CONFIG_DISCRIMINATOR);\n}\n\nexport const INITIALIZE_PAUSABLE_CONFIG_PAUSABLE_DISCRIMINATOR = 0;\n\nexport function getInitializePausableConfigPausableDiscriminatorBytes() {\n    return getU8Encoder().encode(INITIALIZE_PAUSABLE_CONFIG_PAUSABLE_DISCRIMINATOR);\n}\n\nexport type InitializePausableConfigInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMint extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [TAccountMint extends string ? WritableAccount<TAccountMint> : TAccountMint, ...TRemainingAccounts]\n    >;\n\nexport type InitializePausableConfigInstructionData = {\n    discriminator: number;\n    pausableDiscriminator: number;\n    /** The authority that can pause and resume the mint. */\n    authority: Option<Address>;\n};\n\nexport type InitializePausableConfigInstructionDataArgs = {\n    /** The authority that can pause and resume the mint. */\n    authority: OptionOrNullable<Address>;\n};\n\nexport function getInitializePausableConfigInstructionDataEncoder(): FixedSizeEncoder<InitializePausableConfigInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['pausableDiscriminator', getU8Encoder()],\n            ['authority', getOptionEncoder(getAddressEncoder(), { prefix: null, noneValue: 'zeroes' })],\n        ]),\n        value => ({\n            ...value,\n            discriminator: INITIALIZE_PAUSABLE_CONFIG_DISCRIMINATOR,\n            pausableDiscriminator: INITIALIZE_PAUSABLE_CONFIG_PAUSABLE_DISCRIMINATOR,\n        }),\n    );\n}\n\nexport function getInitializePausableConfigInstructionDataDecoder(): FixedSizeDecoder<InitializePausableConfigInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['pausableDiscriminator', getU8Decoder()],\n        ['authority', getOptionDecoder(getAddressDecoder(), { prefix: null, noneValue: 'zeroes' })],\n    ]);\n}\n\nexport function getInitializePausableConfigInstructionDataCodec(): FixedSizeCodec<\n    InitializePausableConfigInstructionDataArgs,\n    InitializePausableConfigInstructionData\n> {\n    return combineCodec(\n        getInitializePausableConfigInstructionDataEncoder(),\n        getInitializePausableConfigInstructionDataDecoder(),\n    );\n}\n\nexport type InitializePausableConfigInput<TAccountMint extends string = string> = {\n    /** The mint. */\n    mint: Address<TAccountMint>;\n    authority: InitializePausableConfigInstructionDataArgs['authority'];\n};\n\nexport function getInitializePausableConfigInstruction<\n    TAccountMint extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: InitializePausableConfigInput<TAccountMint>,\n    config?: { programAddress?: TProgramAddress },\n): InitializePausableConfigInstruction<TProgramAddress, TAccountMint> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = { mint: { value: input.mint ?? null, isWritable: true } };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [getAccountMeta(accounts.mint)],\n        data: getInitializePausableConfigInstructionDataEncoder().encode(\n            args as InitializePausableConfigInstructionDataArgs,\n        ),\n        programAddress,\n    } as InitializePausableConfigInstruction<TProgramAddress, TAccountMint>);\n}\n\nexport type ParsedInitializePausableConfigInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The mint. */\n        mint: TAccountMetas[0];\n    };\n    data: InitializePausableConfigInstructionData;\n};\n\nexport function parseInitializePausableConfigInstruction<\n    TProgram extends string,\n    TAccountMetas extends readonly AccountMeta[],\n>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedInitializePausableConfigInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 1) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { mint: getNextAccount() },\n        data: getInitializePausableConfigInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    combineCodec,\n    getAddressDecoder,\n    getAddressEncoder,\n    getStructDecoder,\n    getStructEncoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlyUint8Array,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const INITIALIZE_PERMANENT_DELEGATE_DISCRIMINATOR = 35;\n\nexport function getInitializePermanentDelegateDiscriminatorBytes() {\n    return getU8Encoder().encode(INITIALIZE_PERMANENT_DELEGATE_DISCRIMINATOR);\n}\n\nexport type InitializePermanentDelegateInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMint extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [TAccountMint extends string ? WritableAccount<TAccountMint> : TAccountMint, ...TRemainingAccounts]\n    >;\n\nexport type InitializePermanentDelegateInstructionData = {\n    discriminator: number;\n    /** Authority that may sign for `Transfer`s and `Burn`s on any account */\n    delegate: Address;\n};\n\nexport type InitializePermanentDelegateInstructionDataArgs = {\n    /** Authority that may sign for `Transfer`s and `Burn`s on any account */\n    delegate: Address;\n};\n\nexport function getInitializePermanentDelegateInstructionDataEncoder(): FixedSizeEncoder<InitializePermanentDelegateInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['delegate', getAddressEncoder()],\n        ]),\n        value => ({ ...value, discriminator: INITIALIZE_PERMANENT_DELEGATE_DISCRIMINATOR }),\n    );\n}\n\nexport function getInitializePermanentDelegateInstructionDataDecoder(): FixedSizeDecoder<InitializePermanentDelegateInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['delegate', getAddressDecoder()],\n    ]);\n}\n\nexport function getInitializePermanentDelegateInstructionDataCodec(): FixedSizeCodec<\n    InitializePermanentDelegateInstructionDataArgs,\n    InitializePermanentDelegateInstructionData\n> {\n    return combineCodec(\n        getInitializePermanentDelegateInstructionDataEncoder(),\n        getInitializePermanentDelegateInstructionDataDecoder(),\n    );\n}\n\nexport type InitializePermanentDelegateInput<TAccountMint extends string = string> = {\n    /** The mint to initialize. */\n    mint: Address<TAccountMint>;\n    delegate: InitializePermanentDelegateInstructionDataArgs['delegate'];\n};\n\nexport function getInitializePermanentDelegateInstruction<\n    TAccountMint extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: InitializePermanentDelegateInput<TAccountMint>,\n    config?: { programAddress?: TProgramAddress },\n): InitializePermanentDelegateInstruction<TProgramAddress, TAccountMint> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = { mint: { value: input.mint ?? null, isWritable: true } };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [getAccountMeta(accounts.mint)],\n        data: getInitializePermanentDelegateInstructionDataEncoder().encode(\n            args as InitializePermanentDelegateInstructionDataArgs,\n        ),\n        programAddress,\n    } as InitializePermanentDelegateInstruction<TProgramAddress, TAccountMint>);\n}\n\nexport type ParsedInitializePermanentDelegateInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The mint to initialize. */\n        mint: TAccountMetas[0];\n    };\n    data: InitializePermanentDelegateInstructionData;\n};\n\nexport function parseInitializePermanentDelegateInstruction<\n    TProgram extends string,\n    TAccountMetas extends readonly AccountMeta[],\n>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedInitializePermanentDelegateInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 1) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { mint: getNextAccount() },\n        data: getInitializePermanentDelegateInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    combineCodec,\n    getAddressDecoder,\n    getAddressEncoder,\n    getStructDecoder,\n    getStructEncoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlyUint8Array,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const INITIALIZE_PERMISSIONED_BURN_DISCRIMINATOR = 46;\n\nexport function getInitializePermissionedBurnDiscriminatorBytes() {\n    return getU8Encoder().encode(INITIALIZE_PERMISSIONED_BURN_DISCRIMINATOR);\n}\n\nexport const INITIALIZE_PERMISSIONED_BURN_PERMISSIONED_BURN_DISCRIMINATOR = 0;\n\nexport function getInitializePermissionedBurnPermissionedBurnDiscriminatorBytes() {\n    return getU8Encoder().encode(INITIALIZE_PERMISSIONED_BURN_PERMISSIONED_BURN_DISCRIMINATOR);\n}\n\nexport type InitializePermissionedBurnInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMint extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [TAccountMint extends string ? WritableAccount<TAccountMint> : TAccountMint, ...TRemainingAccounts]\n    >;\n\nexport type InitializePermissionedBurnInstructionData = {\n    discriminator: number;\n    permissionedBurnDiscriminator: number;\n    /** The public key for the account that is required for token burning. */\n    authority: Address;\n};\n\nexport type InitializePermissionedBurnInstructionDataArgs = {\n    /** The public key for the account that is required for token burning. */\n    authority: Address;\n};\n\nexport function getInitializePermissionedBurnInstructionDataEncoder(): FixedSizeEncoder<InitializePermissionedBurnInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['permissionedBurnDiscriminator', getU8Encoder()],\n            ['authority', getAddressEncoder()],\n        ]),\n        value => ({\n            ...value,\n            discriminator: INITIALIZE_PERMISSIONED_BURN_DISCRIMINATOR,\n            permissionedBurnDiscriminator: INITIALIZE_PERMISSIONED_BURN_PERMISSIONED_BURN_DISCRIMINATOR,\n        }),\n    );\n}\n\nexport function getInitializePermissionedBurnInstructionDataDecoder(): FixedSizeDecoder<InitializePermissionedBurnInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['permissionedBurnDiscriminator', getU8Decoder()],\n        ['authority', getAddressDecoder()],\n    ]);\n}\n\nexport function getInitializePermissionedBurnInstructionDataCodec(): FixedSizeCodec<\n    InitializePermissionedBurnInstructionDataArgs,\n    InitializePermissionedBurnInstructionData\n> {\n    return combineCodec(\n        getInitializePermissionedBurnInstructionDataEncoder(),\n        getInitializePermissionedBurnInstructionDataDecoder(),\n    );\n}\n\nexport type InitializePermissionedBurnInput<TAccountMint extends string = string> = {\n    /** The mint account to initialize. */\n    mint: Address<TAccountMint>;\n    authority: InitializePermissionedBurnInstructionDataArgs['authority'];\n};\n\nexport function getInitializePermissionedBurnInstruction<\n    TAccountMint extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: InitializePermissionedBurnInput<TAccountMint>,\n    config?: { programAddress?: TProgramAddress },\n): InitializePermissionedBurnInstruction<TProgramAddress, TAccountMint> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = { mint: { value: input.mint ?? null, isWritable: true } };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [getAccountMeta(accounts.mint)],\n        data: getInitializePermissionedBurnInstructionDataEncoder().encode(\n            args as InitializePermissionedBurnInstructionDataArgs,\n        ),\n        programAddress,\n    } as InitializePermissionedBurnInstruction<TProgramAddress, TAccountMint>);\n}\n\nexport type ParsedInitializePermissionedBurnInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The mint account to initialize. */\n        mint: TAccountMetas[0];\n    };\n    data: InitializePermissionedBurnInstructionData;\n};\n\nexport function parseInitializePermissionedBurnInstruction<\n    TProgram extends string,\n    TAccountMetas extends readonly AccountMeta[],\n>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedInitializePermissionedBurnInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 1) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { mint: getNextAccount() },\n        data: getInitializePermissionedBurnInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    combineCodec,\n    getAddressDecoder,\n    getAddressEncoder,\n    getF64Decoder,\n    getF64Encoder,\n    getOptionDecoder,\n    getOptionEncoder,\n    getStructDecoder,\n    getStructEncoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type Option,\n    type OptionOrNullable,\n    type ReadonlyUint8Array,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const INITIALIZE_SCALED_UI_AMOUNT_MINT_DISCRIMINATOR = 43;\n\nexport function getInitializeScaledUiAmountMintDiscriminatorBytes() {\n    return getU8Encoder().encode(INITIALIZE_SCALED_UI_AMOUNT_MINT_DISCRIMINATOR);\n}\n\nexport const INITIALIZE_SCALED_UI_AMOUNT_MINT_SCALED_UI_AMOUNT_MINT_DISCRIMINATOR = 0;\n\nexport function getInitializeScaledUiAmountMintScaledUiAmountMintDiscriminatorBytes() {\n    return getU8Encoder().encode(INITIALIZE_SCALED_UI_AMOUNT_MINT_SCALED_UI_AMOUNT_MINT_DISCRIMINATOR);\n}\n\nexport type InitializeScaledUiAmountMintInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMint extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [TAccountMint extends string ? WritableAccount<TAccountMint> : TAccountMint, ...TRemainingAccounts]\n    >;\n\nexport type InitializeScaledUiAmountMintInstructionData = {\n    discriminator: number;\n    scaledUiAmountMintDiscriminator: number;\n    /** The authority that can update the multiplier */\n    authority: Option<Address>;\n    /** The initial multiplier for the scaled UI extension */\n    multiplier: number;\n};\n\nexport type InitializeScaledUiAmountMintInstructionDataArgs = {\n    /** The authority that can update the multiplier */\n    authority: OptionOrNullable<Address>;\n    /** The initial multiplier for the scaled UI extension */\n    multiplier: number;\n};\n\nexport function getInitializeScaledUiAmountMintInstructionDataEncoder(): FixedSizeEncoder<InitializeScaledUiAmountMintInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['scaledUiAmountMintDiscriminator', getU8Encoder()],\n            ['authority', getOptionEncoder(getAddressEncoder(), { prefix: null, noneValue: 'zeroes' })],\n            ['multiplier', getF64Encoder()],\n        ]),\n        value => ({\n            ...value,\n            discriminator: INITIALIZE_SCALED_UI_AMOUNT_MINT_DISCRIMINATOR,\n            scaledUiAmountMintDiscriminator: INITIALIZE_SCALED_UI_AMOUNT_MINT_SCALED_UI_AMOUNT_MINT_DISCRIMINATOR,\n        }),\n    );\n}\n\nexport function getInitializeScaledUiAmountMintInstructionDataDecoder(): FixedSizeDecoder<InitializeScaledUiAmountMintInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['scaledUiAmountMintDiscriminator', getU8Decoder()],\n        ['authority', getOptionDecoder(getAddressDecoder(), { prefix: null, noneValue: 'zeroes' })],\n        ['multiplier', getF64Decoder()],\n    ]);\n}\n\nexport function getInitializeScaledUiAmountMintInstructionDataCodec(): FixedSizeCodec<\n    InitializeScaledUiAmountMintInstructionDataArgs,\n    InitializeScaledUiAmountMintInstructionData\n> {\n    return combineCodec(\n        getInitializeScaledUiAmountMintInstructionDataEncoder(),\n        getInitializeScaledUiAmountMintInstructionDataDecoder(),\n    );\n}\n\nexport type InitializeScaledUiAmountMintInput<TAccountMint extends string = string> = {\n    /** The mint to initialize. */\n    mint: Address<TAccountMint>;\n    authority: InitializeScaledUiAmountMintInstructionDataArgs['authority'];\n    multiplier: InitializeScaledUiAmountMintInstructionDataArgs['multiplier'];\n};\n\nexport function getInitializeScaledUiAmountMintInstruction<\n    TAccountMint extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: InitializeScaledUiAmountMintInput<TAccountMint>,\n    config?: { programAddress?: TProgramAddress },\n): InitializeScaledUiAmountMintInstruction<TProgramAddress, TAccountMint> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = { mint: { value: input.mint ?? null, isWritable: true } };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [getAccountMeta(accounts.mint)],\n        data: getInitializeScaledUiAmountMintInstructionDataEncoder().encode(\n            args as InitializeScaledUiAmountMintInstructionDataArgs,\n        ),\n        programAddress,\n    } as InitializeScaledUiAmountMintInstruction<TProgramAddress, TAccountMint>);\n}\n\nexport type ParsedInitializeScaledUiAmountMintInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The mint to initialize. */\n        mint: TAccountMetas[0];\n    };\n    data: InitializeScaledUiAmountMintInstructionData;\n};\n\nexport function parseInitializeScaledUiAmountMintInstruction<\n    TProgram extends string,\n    TAccountMetas extends readonly AccountMeta[],\n>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedInitializeScaledUiAmountMintInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 1) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { mint: getNextAccount() },\n        data: getInitializeScaledUiAmountMintInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    combineCodec,\n    getAddressDecoder,\n    getAddressEncoder,\n    getBytesDecoder,\n    getBytesEncoder,\n    getOptionDecoder,\n    getOptionEncoder,\n    getStructDecoder,\n    getStructEncoder,\n    getU64Decoder,\n    getU64Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type AccountSignerMeta,\n    type Address,\n    type Codec,\n    type Decoder,\n    type Encoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type Option,\n    type OptionOrNullable,\n    type ReadonlyAccount,\n    type ReadonlySignerAccount,\n    type ReadonlyUint8Array,\n    type TransactionSigner,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const INITIALIZE_TOKEN_GROUP_DISCRIMINATOR = new Uint8Array([121, 113, 108, 39, 54, 51, 0, 4]);\n\nexport function getInitializeTokenGroupDiscriminatorBytes() {\n    return getBytesEncoder().encode(INITIALIZE_TOKEN_GROUP_DISCRIMINATOR);\n}\n\nexport type InitializeTokenGroupInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountGroup extends string | AccountMeta<string> = string,\n    TAccountMint extends string | AccountMeta<string> = string,\n    TAccountMintAuthority extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [\n            TAccountGroup extends string ? WritableAccount<TAccountGroup> : TAccountGroup,\n            TAccountMint extends string ? ReadonlyAccount<TAccountMint> : TAccountMint,\n            TAccountMintAuthority extends string\n                ? ReadonlySignerAccount<TAccountMintAuthority> & AccountSignerMeta<TAccountMintAuthority>\n                : TAccountMintAuthority,\n            ...TRemainingAccounts,\n        ]\n    >;\n\nexport type InitializeTokenGroupInstructionData = {\n    discriminator: ReadonlyUint8Array;\n    /** Update authority for the group */\n    updateAuthority: Option<Address>;\n    /** The maximum number of group members */\n    maxSize: bigint;\n};\n\nexport type InitializeTokenGroupInstructionDataArgs = {\n    /** Update authority for the group */\n    updateAuthority: OptionOrNullable<Address>;\n    /** The maximum number of group members */\n    maxSize: number | bigint;\n};\n\nexport function getInitializeTokenGroupInstructionDataEncoder(): Encoder<InitializeTokenGroupInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getBytesEncoder()],\n            ['updateAuthority', getOptionEncoder(getAddressEncoder(), { prefix: null, noneValue: 'zeroes' })],\n            ['maxSize', getU64Encoder()],\n        ]),\n        value => ({ ...value, discriminator: INITIALIZE_TOKEN_GROUP_DISCRIMINATOR }),\n    );\n}\n\nexport function getInitializeTokenGroupInstructionDataDecoder(): Decoder<InitializeTokenGroupInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getBytesDecoder()],\n        ['updateAuthority', getOptionDecoder(getAddressDecoder(), { prefix: null, noneValue: 'zeroes' })],\n        ['maxSize', getU64Decoder()],\n    ]);\n}\n\nexport function getInitializeTokenGroupInstructionDataCodec(): Codec<\n    InitializeTokenGroupInstructionDataArgs,\n    InitializeTokenGroupInstructionData\n> {\n    return combineCodec(\n        getInitializeTokenGroupInstructionDataEncoder(),\n        getInitializeTokenGroupInstructionDataDecoder(),\n    );\n}\n\nexport type InitializeTokenGroupInput<\n    TAccountGroup extends string = string,\n    TAccountMint extends string = string,\n    TAccountMintAuthority extends string = string,\n> = {\n    group: Address<TAccountGroup>;\n    mint: Address<TAccountMint>;\n    mintAuthority: TransactionSigner<TAccountMintAuthority>;\n    updateAuthority: InitializeTokenGroupInstructionDataArgs['updateAuthority'];\n    maxSize: InitializeTokenGroupInstructionDataArgs['maxSize'];\n};\n\nexport function getInitializeTokenGroupInstruction<\n    TAccountGroup extends string,\n    TAccountMint extends string,\n    TAccountMintAuthority extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: InitializeTokenGroupInput<TAccountGroup, TAccountMint, TAccountMintAuthority>,\n    config?: { programAddress?: TProgramAddress },\n): InitializeTokenGroupInstruction<TProgramAddress, TAccountGroup, TAccountMint, TAccountMintAuthority> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        group: { value: input.group ?? null, isWritable: true },\n        mint: { value: input.mint ?? null, isWritable: false },\n        mintAuthority: { value: input.mintAuthority ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [\n            getAccountMeta(accounts.group),\n            getAccountMeta(accounts.mint),\n            getAccountMeta(accounts.mintAuthority),\n        ],\n        data: getInitializeTokenGroupInstructionDataEncoder().encode(args as InitializeTokenGroupInstructionDataArgs),\n        programAddress,\n    } as InitializeTokenGroupInstruction<TProgramAddress, TAccountGroup, TAccountMint, TAccountMintAuthority>);\n}\n\nexport type ParsedInitializeTokenGroupInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        group: TAccountMetas[0];\n        mint: TAccountMetas[1];\n        mintAuthority: TAccountMetas[2];\n    };\n    data: InitializeTokenGroupInstructionData;\n};\n\nexport function parseInitializeTokenGroupInstruction<\n    TProgram extends string,\n    TAccountMetas extends readonly AccountMeta[],\n>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedInitializeTokenGroupInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 3) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { group: getNextAccount(), mint: getNextAccount(), mintAuthority: getNextAccount() },\n        data: getInitializeTokenGroupInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    combineCodec,\n    getBytesDecoder,\n    getBytesEncoder,\n    getStructDecoder,\n    getStructEncoder,\n    transformEncoder,\n    type AccountMeta,\n    type AccountSignerMeta,\n    type Address,\n    type Codec,\n    type Decoder,\n    type Encoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlyAccount,\n    type ReadonlySignerAccount,\n    type ReadonlyUint8Array,\n    type TransactionSigner,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const INITIALIZE_TOKEN_GROUP_MEMBER_DISCRIMINATOR = new Uint8Array([152, 32, 222, 176, 223, 237, 116, 134]);\n\nexport function getInitializeTokenGroupMemberDiscriminatorBytes() {\n    return getBytesEncoder().encode(INITIALIZE_TOKEN_GROUP_MEMBER_DISCRIMINATOR);\n}\n\nexport type InitializeTokenGroupMemberInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMember extends string | AccountMeta<string> = string,\n    TAccountMemberMint extends string | AccountMeta<string> = string,\n    TAccountMemberMintAuthority extends string | AccountMeta<string> = string,\n    TAccountGroup extends string | AccountMeta<string> = string,\n    TAccountGroupUpdateAuthority extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [\n            TAccountMember extends string ? WritableAccount<TAccountMember> : TAccountMember,\n            TAccountMemberMint extends string ? ReadonlyAccount<TAccountMemberMint> : TAccountMemberMint,\n            TAccountMemberMintAuthority extends string\n                ? ReadonlySignerAccount<TAccountMemberMintAuthority> & AccountSignerMeta<TAccountMemberMintAuthority>\n                : TAccountMemberMintAuthority,\n            TAccountGroup extends string ? WritableAccount<TAccountGroup> : TAccountGroup,\n            TAccountGroupUpdateAuthority extends string\n                ? ReadonlySignerAccount<TAccountGroupUpdateAuthority> & AccountSignerMeta<TAccountGroupUpdateAuthority>\n                : TAccountGroupUpdateAuthority,\n            ...TRemainingAccounts,\n        ]\n    >;\n\nexport type InitializeTokenGroupMemberInstructionData = { discriminator: ReadonlyUint8Array };\n\nexport type InitializeTokenGroupMemberInstructionDataArgs = {};\n\nexport function getInitializeTokenGroupMemberInstructionDataEncoder(): Encoder<InitializeTokenGroupMemberInstructionDataArgs> {\n    return transformEncoder(getStructEncoder([['discriminator', getBytesEncoder()]]), value => ({\n        ...value,\n        discriminator: INITIALIZE_TOKEN_GROUP_MEMBER_DISCRIMINATOR,\n    }));\n}\n\nexport function getInitializeTokenGroupMemberInstructionDataDecoder(): Decoder<InitializeTokenGroupMemberInstructionData> {\n    return getStructDecoder([['discriminator', getBytesDecoder()]]);\n}\n\nexport function getInitializeTokenGroupMemberInstructionDataCodec(): Codec<\n    InitializeTokenGroupMemberInstructionDataArgs,\n    InitializeTokenGroupMemberInstructionData\n> {\n    return combineCodec(\n        getInitializeTokenGroupMemberInstructionDataEncoder(),\n        getInitializeTokenGroupMemberInstructionDataDecoder(),\n    );\n}\n\nexport type InitializeTokenGroupMemberInput<\n    TAccountMember extends string = string,\n    TAccountMemberMint extends string = string,\n    TAccountMemberMintAuthority extends string = string,\n    TAccountGroup extends string = string,\n    TAccountGroupUpdateAuthority extends string = string,\n> = {\n    member: Address<TAccountMember>;\n    memberMint: Address<TAccountMemberMint>;\n    memberMintAuthority: TransactionSigner<TAccountMemberMintAuthority>;\n    group: Address<TAccountGroup>;\n    groupUpdateAuthority: TransactionSigner<TAccountGroupUpdateAuthority>;\n};\n\nexport function getInitializeTokenGroupMemberInstruction<\n    TAccountMember extends string,\n    TAccountMemberMint extends string,\n    TAccountMemberMintAuthority extends string,\n    TAccountGroup extends string,\n    TAccountGroupUpdateAuthority extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: InitializeTokenGroupMemberInput<\n        TAccountMember,\n        TAccountMemberMint,\n        TAccountMemberMintAuthority,\n        TAccountGroup,\n        TAccountGroupUpdateAuthority\n    >,\n    config?: { programAddress?: TProgramAddress },\n): InitializeTokenGroupMemberInstruction<\n    TProgramAddress,\n    TAccountMember,\n    TAccountMemberMint,\n    TAccountMemberMintAuthority,\n    TAccountGroup,\n    TAccountGroupUpdateAuthority\n> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        member: { value: input.member ?? null, isWritable: true },\n        memberMint: { value: input.memberMint ?? null, isWritable: false },\n        memberMintAuthority: { value: input.memberMintAuthority ?? null, isWritable: false },\n        group: { value: input.group ?? null, isWritable: true },\n        groupUpdateAuthority: { value: input.groupUpdateAuthority ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [\n            getAccountMeta(accounts.member),\n            getAccountMeta(accounts.memberMint),\n            getAccountMeta(accounts.memberMintAuthority),\n            getAccountMeta(accounts.group),\n            getAccountMeta(accounts.groupUpdateAuthority),\n        ],\n        data: getInitializeTokenGroupMemberInstructionDataEncoder().encode({}),\n        programAddress,\n    } as InitializeTokenGroupMemberInstruction<\n        TProgramAddress,\n        TAccountMember,\n        TAccountMemberMint,\n        TAccountMemberMintAuthority,\n        TAccountGroup,\n        TAccountGroupUpdateAuthority\n    >);\n}\n\nexport type ParsedInitializeTokenGroupMemberInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        member: TAccountMetas[0];\n        memberMint: TAccountMetas[1];\n        memberMintAuthority: TAccountMetas[2];\n        group: TAccountMetas[3];\n        groupUpdateAuthority: TAccountMetas[4];\n    };\n    data: InitializeTokenGroupMemberInstructionData;\n};\n\nexport function parseInitializeTokenGroupMemberInstruction<\n    TProgram extends string,\n    TAccountMetas extends readonly AccountMeta[],\n>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedInitializeTokenGroupMemberInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 5) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: {\n            member: getNextAccount(),\n            memberMint: getNextAccount(),\n            memberMintAuthority: getNextAccount(),\n            group: getNextAccount(),\n            groupUpdateAuthority: getNextAccount(),\n        },\n        data: getInitializeTokenGroupMemberInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    addDecoderSizePrefix,\n    addEncoderSizePrefix,\n    combineCodec,\n    getBytesDecoder,\n    getBytesEncoder,\n    getStructDecoder,\n    getStructEncoder,\n    getU32Decoder,\n    getU32Encoder,\n    getUtf8Decoder,\n    getUtf8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type AccountSignerMeta,\n    type Address,\n    type Codec,\n    type Decoder,\n    type Encoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlyAccount,\n    type ReadonlySignerAccount,\n    type ReadonlyUint8Array,\n    type TransactionSigner,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const INITIALIZE_TOKEN_METADATA_DISCRIMINATOR = new Uint8Array([210, 225, 30, 162, 88, 184, 77, 141]);\n\nexport function getInitializeTokenMetadataDiscriminatorBytes() {\n    return getBytesEncoder().encode(INITIALIZE_TOKEN_METADATA_DISCRIMINATOR);\n}\n\nexport type InitializeTokenMetadataInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetadata extends string | AccountMeta<string> = string,\n    TAccountUpdateAuthority extends string | AccountMeta<string> = string,\n    TAccountMint extends string | AccountMeta<string> = string,\n    TAccountMintAuthority extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [\n            TAccountMetadata extends string ? WritableAccount<TAccountMetadata> : TAccountMetadata,\n            TAccountUpdateAuthority extends string ? ReadonlyAccount<TAccountUpdateAuthority> : TAccountUpdateAuthority,\n            TAccountMint extends string ? ReadonlyAccount<TAccountMint> : TAccountMint,\n            TAccountMintAuthority extends string\n                ? ReadonlySignerAccount<TAccountMintAuthority> & AccountSignerMeta<TAccountMintAuthority>\n                : TAccountMintAuthority,\n            ...TRemainingAccounts,\n        ]\n    >;\n\nexport type InitializeTokenMetadataInstructionData = {\n    discriminator: ReadonlyUint8Array;\n    /** Longer name of the token. */\n    name: string;\n    /** Shortened symbol of the token. */\n    symbol: string;\n    /** URI pointing to more metadata (image, video, etc.). */\n    uri: string;\n};\n\nexport type InitializeTokenMetadataInstructionDataArgs = {\n    /** Longer name of the token. */\n    name: string;\n    /** Shortened symbol of the token. */\n    symbol: string;\n    /** URI pointing to more metadata (image, video, etc.). */\n    uri: string;\n};\n\nexport function getInitializeTokenMetadataInstructionDataEncoder(): Encoder<InitializeTokenMetadataInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getBytesEncoder()],\n            ['name', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())],\n            ['symbol', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())],\n            ['uri', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())],\n        ]),\n        value => ({ ...value, discriminator: INITIALIZE_TOKEN_METADATA_DISCRIMINATOR }),\n    );\n}\n\nexport function getInitializeTokenMetadataInstructionDataDecoder(): Decoder<InitializeTokenMetadataInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getBytesDecoder()],\n        ['name', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],\n        ['symbol', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],\n        ['uri', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],\n    ]);\n}\n\nexport function getInitializeTokenMetadataInstructionDataCodec(): Codec<\n    InitializeTokenMetadataInstructionDataArgs,\n    InitializeTokenMetadataInstructionData\n> {\n    return combineCodec(\n        getInitializeTokenMetadataInstructionDataEncoder(),\n        getInitializeTokenMetadataInstructionDataDecoder(),\n    );\n}\n\nexport type InitializeTokenMetadataInput<\n    TAccountMetadata extends string = string,\n    TAccountUpdateAuthority extends string = string,\n    TAccountMint extends string = string,\n    TAccountMintAuthority extends string = string,\n> = {\n    metadata: Address<TAccountMetadata>;\n    updateAuthority: Address<TAccountUpdateAuthority>;\n    mint: Address<TAccountMint>;\n    mintAuthority: TransactionSigner<TAccountMintAuthority>;\n    name: InitializeTokenMetadataInstructionDataArgs['name'];\n    symbol: InitializeTokenMetadataInstructionDataArgs['symbol'];\n    uri: InitializeTokenMetadataInstructionDataArgs['uri'];\n};\n\nexport function getInitializeTokenMetadataInstruction<\n    TAccountMetadata extends string,\n    TAccountUpdateAuthority extends string,\n    TAccountMint extends string,\n    TAccountMintAuthority extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: InitializeTokenMetadataInput<TAccountMetadata, TAccountUpdateAuthority, TAccountMint, TAccountMintAuthority>,\n    config?: { programAddress?: TProgramAddress },\n): InitializeTokenMetadataInstruction<\n    TProgramAddress,\n    TAccountMetadata,\n    TAccountUpdateAuthority,\n    TAccountMint,\n    TAccountMintAuthority\n> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        metadata: { value: input.metadata ?? null, isWritable: true },\n        updateAuthority: { value: input.updateAuthority ?? null, isWritable: false },\n        mint: { value: input.mint ?? null, isWritable: false },\n        mintAuthority: { value: input.mintAuthority ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [\n            getAccountMeta(accounts.metadata),\n            getAccountMeta(accounts.updateAuthority),\n            getAccountMeta(accounts.mint),\n            getAccountMeta(accounts.mintAuthority),\n        ],\n        data: getInitializeTokenMetadataInstructionDataEncoder().encode(\n            args as InitializeTokenMetadataInstructionDataArgs,\n        ),\n        programAddress,\n    } as InitializeTokenMetadataInstruction<\n        TProgramAddress,\n        TAccountMetadata,\n        TAccountUpdateAuthority,\n        TAccountMint,\n        TAccountMintAuthority\n    >);\n}\n\nexport type ParsedInitializeTokenMetadataInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        metadata: TAccountMetas[0];\n        updateAuthority: TAccountMetas[1];\n        mint: TAccountMetas[2];\n        mintAuthority: TAccountMetas[3];\n    };\n    data: InitializeTokenMetadataInstructionData;\n};\n\nexport function parseInitializeTokenMetadataInstruction<\n    TProgram extends string,\n    TAccountMetas extends readonly AccountMeta[],\n>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedInitializeTokenMetadataInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 4) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: {\n            metadata: getNextAccount(),\n            updateAuthority: getNextAccount(),\n            mint: getNextAccount(),\n            mintAuthority: getNextAccount(),\n        },\n        data: getInitializeTokenMetadataInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    combineCodec,\n    getAddressDecoder,\n    getAddressEncoder,\n    getOptionDecoder,\n    getOptionEncoder,\n    getStructDecoder,\n    getStructEncoder,\n    getU16Decoder,\n    getU16Encoder,\n    getU64Decoder,\n    getU64Encoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type Address,\n    type Codec,\n    type Decoder,\n    type Encoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type Option,\n    type OptionOrNullable,\n    type ReadonlyUint8Array,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const INITIALIZE_TRANSFER_FEE_CONFIG_DISCRIMINATOR = 26;\n\nexport function getInitializeTransferFeeConfigDiscriminatorBytes() {\n    return getU8Encoder().encode(INITIALIZE_TRANSFER_FEE_CONFIG_DISCRIMINATOR);\n}\n\nexport const INITIALIZE_TRANSFER_FEE_CONFIG_TRANSFER_FEE_DISCRIMINATOR = 0;\n\nexport function getInitializeTransferFeeConfigTransferFeeDiscriminatorBytes() {\n    return getU8Encoder().encode(INITIALIZE_TRANSFER_FEE_CONFIG_TRANSFER_FEE_DISCRIMINATOR);\n}\n\nexport type InitializeTransferFeeConfigInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMint extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [TAccountMint extends string ? WritableAccount<TAccountMint> : TAccountMint, ...TRemainingAccounts]\n    >;\n\nexport type InitializeTransferFeeConfigInstructionData = {\n    discriminator: number;\n    transferFeeDiscriminator: number;\n    /** Pubkey that may update the fees. */\n    transferFeeConfigAuthority: Option<Address>;\n    /** Withdraw instructions must be signed by this key. */\n    withdrawWithheldAuthority: Option<Address>;\n    /** Amount of transfer collected as fees, expressed as basis points of the transfer amount. */\n    transferFeeBasisPoints: number;\n    /** Maximum fee assessed on transfers. */\n    maximumFee: bigint;\n};\n\nexport type InitializeTransferFeeConfigInstructionDataArgs = {\n    /** Pubkey that may update the fees. */\n    transferFeeConfigAuthority: OptionOrNullable<Address>;\n    /** Withdraw instructions must be signed by this key. */\n    withdrawWithheldAuthority: OptionOrNullable<Address>;\n    /** Amount of transfer collected as fees, expressed as basis points of the transfer amount. */\n    transferFeeBasisPoints: number;\n    /** Maximum fee assessed on transfers. */\n    maximumFee: number | bigint;\n};\n\nexport function getInitializeTransferFeeConfigInstructionDataEncoder(): Encoder<InitializeTransferFeeConfigInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['transferFeeDiscriminator', getU8Encoder()],\n            ['transferFeeConfigAuthority', getOptionEncoder(getAddressEncoder())],\n            ['withdrawWithheldAuthority', getOptionEncoder(getAddressEncoder())],\n            ['transferFeeBasisPoints', getU16Encoder()],\n            ['maximumFee', getU64Encoder()],\n        ]),\n        value => ({\n            ...value,\n            discriminator: INITIALIZE_TRANSFER_FEE_CONFIG_DISCRIMINATOR,\n            transferFeeDiscriminator: INITIALIZE_TRANSFER_FEE_CONFIG_TRANSFER_FEE_DISCRIMINATOR,\n        }),\n    );\n}\n\nexport function getInitializeTransferFeeConfigInstructionDataDecoder(): Decoder<InitializeTransferFeeConfigInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['transferFeeDiscriminator', getU8Decoder()],\n        ['transferFeeConfigAuthority', getOptionDecoder(getAddressDecoder())],\n        ['withdrawWithheldAuthority', getOptionDecoder(getAddressDecoder())],\n        ['transferFeeBasisPoints', getU16Decoder()],\n        ['maximumFee', getU64Decoder()],\n    ]);\n}\n\nexport function getInitializeTransferFeeConfigInstructionDataCodec(): Codec<\n    InitializeTransferFeeConfigInstructionDataArgs,\n    InitializeTransferFeeConfigInstructionData\n> {\n    return combineCodec(\n        getInitializeTransferFeeConfigInstructionDataEncoder(),\n        getInitializeTransferFeeConfigInstructionDataDecoder(),\n    );\n}\n\nexport type InitializeTransferFeeConfigInput<TAccountMint extends string = string> = {\n    /** The mint to initialize. */\n    mint: Address<TAccountMint>;\n    transferFeeConfigAuthority: InitializeTransferFeeConfigInstructionDataArgs['transferFeeConfigAuthority'];\n    withdrawWithheldAuthority: InitializeTransferFeeConfigInstructionDataArgs['withdrawWithheldAuthority'];\n    transferFeeBasisPoints: InitializeTransferFeeConfigInstructionDataArgs['transferFeeBasisPoints'];\n    maximumFee: InitializeTransferFeeConfigInstructionDataArgs['maximumFee'];\n};\n\nexport function getInitializeTransferFeeConfigInstruction<\n    TAccountMint extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: InitializeTransferFeeConfigInput<TAccountMint>,\n    config?: { programAddress?: TProgramAddress },\n): InitializeTransferFeeConfigInstruction<TProgramAddress, TAccountMint> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = { mint: { value: input.mint ?? null, isWritable: true } };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [getAccountMeta(accounts.mint)],\n        data: getInitializeTransferFeeConfigInstructionDataEncoder().encode(\n            args as InitializeTransferFeeConfigInstructionDataArgs,\n        ),\n        programAddress,\n    } as InitializeTransferFeeConfigInstruction<TProgramAddress, TAccountMint>);\n}\n\nexport type ParsedInitializeTransferFeeConfigInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The mint to initialize. */\n        mint: TAccountMetas[0];\n    };\n    data: InitializeTransferFeeConfigInstructionData;\n};\n\nexport function parseInitializeTransferFeeConfigInstruction<\n    TProgram extends string,\n    TAccountMetas extends readonly AccountMeta[],\n>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedInitializeTransferFeeConfigInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 1) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { mint: getNextAccount() },\n        data: getInitializeTransferFeeConfigInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    combineCodec,\n    getAddressDecoder,\n    getAddressEncoder,\n    getOptionDecoder,\n    getOptionEncoder,\n    getStructDecoder,\n    getStructEncoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type Option,\n    type OptionOrNullable,\n    type ReadonlyUint8Array,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const INITIALIZE_TRANSFER_HOOK_DISCRIMINATOR = 36;\n\nexport function getInitializeTransferHookDiscriminatorBytes() {\n    return getU8Encoder().encode(INITIALIZE_TRANSFER_HOOK_DISCRIMINATOR);\n}\n\nexport const INITIALIZE_TRANSFER_HOOK_TRANSFER_HOOK_DISCRIMINATOR = 0;\n\nexport function getInitializeTransferHookTransferHookDiscriminatorBytes() {\n    return getU8Encoder().encode(INITIALIZE_TRANSFER_HOOK_TRANSFER_HOOK_DISCRIMINATOR);\n}\n\nexport type InitializeTransferHookInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMint extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [TAccountMint extends string ? WritableAccount<TAccountMint> : TAccountMint, ...TRemainingAccounts]\n    >;\n\nexport type InitializeTransferHookInstructionData = {\n    discriminator: number;\n    transferHookDiscriminator: number;\n    /** The public key for the account that can update the program id */\n    authority: Option<Address>;\n    /** The program id that performs logic during transfers */\n    programId: Option<Address>;\n};\n\nexport type InitializeTransferHookInstructionDataArgs = {\n    /** The public key for the account that can update the program id */\n    authority: OptionOrNullable<Address>;\n    /** The program id that performs logic during transfers */\n    programId: OptionOrNullable<Address>;\n};\n\nexport function getInitializeTransferHookInstructionDataEncoder(): FixedSizeEncoder<InitializeTransferHookInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['transferHookDiscriminator', getU8Encoder()],\n            ['authority', getOptionEncoder(getAddressEncoder(), { prefix: null, noneValue: 'zeroes' })],\n            ['programId', getOptionEncoder(getAddressEncoder(), { prefix: null, noneValue: 'zeroes' })],\n        ]),\n        value => ({\n            ...value,\n            discriminator: INITIALIZE_TRANSFER_HOOK_DISCRIMINATOR,\n            transferHookDiscriminator: INITIALIZE_TRANSFER_HOOK_TRANSFER_HOOK_DISCRIMINATOR,\n        }),\n    );\n}\n\nexport function getInitializeTransferHookInstructionDataDecoder(): FixedSizeDecoder<InitializeTransferHookInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['transferHookDiscriminator', getU8Decoder()],\n        ['authority', getOptionDecoder(getAddressDecoder(), { prefix: null, noneValue: 'zeroes' })],\n        ['programId', getOptionDecoder(getAddressDecoder(), { prefix: null, noneValue: 'zeroes' })],\n    ]);\n}\n\nexport function getInitializeTransferHookInstructionDataCodec(): FixedSizeCodec<\n    InitializeTransferHookInstructionDataArgs,\n    InitializeTransferHookInstructionData\n> {\n    return combineCodec(\n        getInitializeTransferHookInstructionDataEncoder(),\n        getInitializeTransferHookInstructionDataDecoder(),\n    );\n}\n\nexport type InitializeTransferHookInput<TAccountMint extends string = string> = {\n    /** The mint to initialize. */\n    mint: Address<TAccountMint>;\n    authority: InitializeTransferHookInstructionDataArgs['authority'];\n    programId: InitializeTransferHookInstructionDataArgs['programId'];\n};\n\nexport function getInitializeTransferHookInstruction<\n    TAccountMint extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: InitializeTransferHookInput<TAccountMint>,\n    config?: { programAddress?: TProgramAddress },\n): InitializeTransferHookInstruction<TProgramAddress, TAccountMint> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = { mint: { value: input.mint ?? null, isWritable: true } };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [getAccountMeta(accounts.mint)],\n        data: getInitializeTransferHookInstructionDataEncoder().encode(\n            args as InitializeTransferHookInstructionDataArgs,\n        ),\n        programAddress,\n    } as InitializeTransferHookInstruction<TProgramAddress, TAccountMint>);\n}\n\nexport type ParsedInitializeTransferHookInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The mint to initialize. */\n        mint: TAccountMetas[0];\n    };\n    data: InitializeTransferHookInstructionData;\n};\n\nexport function parseInitializeTransferHookInstruction<\n    TProgram extends string,\n    TAccountMetas extends readonly AccountMeta[],\n>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedInitializeTransferHookInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 1) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { mint: getNextAccount() },\n        data: getInitializeTransferHookInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    AccountRole,\n    combineCodec,\n    getStructDecoder,\n    getStructEncoder,\n    getU64Decoder,\n    getU64Encoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type AccountSignerMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlyAccount,\n    type ReadonlySignerAccount,\n    type ReadonlyUint8Array,\n    type TransactionSigner,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const MINT_TO_DISCRIMINATOR = 7;\n\nexport function getMintToDiscriminatorBytes() {\n    return getU8Encoder().encode(MINT_TO_DISCRIMINATOR);\n}\n\nexport type MintToInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMint extends string | AccountMeta<string> = string,\n    TAccountToken extends string | AccountMeta<string> = string,\n    TAccountMintAuthority extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [\n            TAccountMint extends string ? WritableAccount<TAccountMint> : TAccountMint,\n            TAccountToken extends string ? WritableAccount<TAccountToken> : TAccountToken,\n            TAccountMintAuthority extends string ? ReadonlyAccount<TAccountMintAuthority> : TAccountMintAuthority,\n            ...TRemainingAccounts,\n        ]\n    >;\n\nexport type MintToInstructionData = {\n    discriminator: number;\n    /** The amount of new tokens to mint. */\n    amount: bigint;\n};\n\nexport type MintToInstructionDataArgs = {\n    /** The amount of new tokens to mint. */\n    amount: number | bigint;\n};\n\nexport function getMintToInstructionDataEncoder(): FixedSizeEncoder<MintToInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['amount', getU64Encoder()],\n        ]),\n        value => ({ ...value, discriminator: MINT_TO_DISCRIMINATOR }),\n    );\n}\n\nexport function getMintToInstructionDataDecoder(): FixedSizeDecoder<MintToInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['amount', getU64Decoder()],\n    ]);\n}\n\nexport function getMintToInstructionDataCodec(): FixedSizeCodec<MintToInstructionDataArgs, MintToInstructionData> {\n    return combineCodec(getMintToInstructionDataEncoder(), getMintToInstructionDataDecoder());\n}\n\nexport type MintToInput<\n    TAccountMint extends string = string,\n    TAccountToken extends string = string,\n    TAccountMintAuthority extends string = string,\n> = {\n    /** The mint account. */\n    mint: Address<TAccountMint>;\n    /** The account to mint tokens to. */\n    token: Address<TAccountToken>;\n    /** The mint's minting authority or its multisignature account. */\n    mintAuthority: Address<TAccountMintAuthority> | TransactionSigner<TAccountMintAuthority>;\n    amount: MintToInstructionDataArgs['amount'];\n    multiSigners?: Array<TransactionSigner>;\n};\n\nexport function getMintToInstruction<\n    TAccountMint extends string,\n    TAccountToken extends string,\n    TAccountMintAuthority extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: MintToInput<TAccountMint, TAccountToken, TAccountMintAuthority>,\n    config?: { programAddress?: TProgramAddress },\n): MintToInstruction<\n    TProgramAddress,\n    TAccountMint,\n    TAccountToken,\n    (typeof input)['mintAuthority'] extends TransactionSigner<TAccountMintAuthority>\n        ? ReadonlySignerAccount<TAccountMintAuthority> & AccountSignerMeta<TAccountMintAuthority>\n        : TAccountMintAuthority\n> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        mint: { value: input.mint ?? null, isWritable: true },\n        token: { value: input.token ?? null, isWritable: true },\n        mintAuthority: { value: input.mintAuthority ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    // Remaining accounts.\n    const remainingAccounts: AccountMeta[] = (args.multiSigners ?? []).map(signer => ({\n        address: signer.address,\n        role: AccountRole.READONLY_SIGNER,\n        signer,\n    }));\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [\n            getAccountMeta(accounts.mint),\n            getAccountMeta(accounts.token),\n            getAccountMeta(accounts.mintAuthority),\n            ...remainingAccounts,\n        ],\n        data: getMintToInstructionDataEncoder().encode(args as MintToInstructionDataArgs),\n        programAddress,\n    } as MintToInstruction<\n        TProgramAddress,\n        TAccountMint,\n        TAccountToken,\n        (typeof input)['mintAuthority'] extends TransactionSigner<TAccountMintAuthority>\n            ? ReadonlySignerAccount<TAccountMintAuthority> & AccountSignerMeta<TAccountMintAuthority>\n            : TAccountMintAuthority\n    >);\n}\n\nexport type ParsedMintToInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The mint account. */\n        mint: TAccountMetas[0];\n        /** The account to mint tokens to. */\n        token: TAccountMetas[1];\n        /** The mint's minting authority or its multisignature account. */\n        mintAuthority: TAccountMetas[2];\n    };\n    data: MintToInstructionData;\n};\n\nexport function parseMintToInstruction<TProgram extends string, TAccountMetas extends readonly AccountMeta[]>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedMintToInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 3) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { mint: getNextAccount(), token: getNextAccount(), mintAuthority: getNextAccount() },\n        data: getMintToInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    AccountRole,\n    combineCodec,\n    getStructDecoder,\n    getStructEncoder,\n    getU64Decoder,\n    getU64Encoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type AccountSignerMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlyAccount,\n    type ReadonlySignerAccount,\n    type ReadonlyUint8Array,\n    type TransactionSigner,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const MINT_TO_CHECKED_DISCRIMINATOR = 14;\n\nexport function getMintToCheckedDiscriminatorBytes() {\n    return getU8Encoder().encode(MINT_TO_CHECKED_DISCRIMINATOR);\n}\n\nexport type MintToCheckedInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMint extends string | AccountMeta<string> = string,\n    TAccountToken extends string | AccountMeta<string> = string,\n    TAccountMintAuthority extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [\n            TAccountMint extends string ? WritableAccount<TAccountMint> : TAccountMint,\n            TAccountToken extends string ? WritableAccount<TAccountToken> : TAccountToken,\n            TAccountMintAuthority extends string ? ReadonlyAccount<TAccountMintAuthority> : TAccountMintAuthority,\n            ...TRemainingAccounts,\n        ]\n    >;\n\nexport type MintToCheckedInstructionData = {\n    discriminator: number;\n    /** The amount of new tokens to mint. */\n    amount: bigint;\n    /** Expected number of base 10 digits to the right of the decimal place. */\n    decimals: number;\n};\n\nexport type MintToCheckedInstructionDataArgs = {\n    /** The amount of new tokens to mint. */\n    amount: number | bigint;\n    /** Expected number of base 10 digits to the right of the decimal place. */\n    decimals: number;\n};\n\nexport function getMintToCheckedInstructionDataEncoder(): FixedSizeEncoder<MintToCheckedInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['amount', getU64Encoder()],\n            ['decimals', getU8Encoder()],\n        ]),\n        value => ({ ...value, discriminator: MINT_TO_CHECKED_DISCRIMINATOR }),\n    );\n}\n\nexport function getMintToCheckedInstructionDataDecoder(): FixedSizeDecoder<MintToCheckedInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['amount', getU64Decoder()],\n        ['decimals', getU8Decoder()],\n    ]);\n}\n\nexport function getMintToCheckedInstructionDataCodec(): FixedSizeCodec<\n    MintToCheckedInstructionDataArgs,\n    MintToCheckedInstructionData\n> {\n    return combineCodec(getMintToCheckedInstructionDataEncoder(), getMintToCheckedInstructionDataDecoder());\n}\n\nexport type MintToCheckedInput<\n    TAccountMint extends string = string,\n    TAccountToken extends string = string,\n    TAccountMintAuthority extends string = string,\n> = {\n    /** The mint. */\n    mint: Address<TAccountMint>;\n    /** The account to mint tokens to. */\n    token: Address<TAccountToken>;\n    /** The mint's minting authority or its multisignature account. */\n    mintAuthority: Address<TAccountMintAuthority> | TransactionSigner<TAccountMintAuthority>;\n    amount: MintToCheckedInstructionDataArgs['amount'];\n    decimals: MintToCheckedInstructionDataArgs['decimals'];\n    multiSigners?: Array<TransactionSigner>;\n};\n\nexport function getMintToCheckedInstruction<\n    TAccountMint extends string,\n    TAccountToken extends string,\n    TAccountMintAuthority extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: MintToCheckedInput<TAccountMint, TAccountToken, TAccountMintAuthority>,\n    config?: { programAddress?: TProgramAddress },\n): MintToCheckedInstruction<\n    TProgramAddress,\n    TAccountMint,\n    TAccountToken,\n    (typeof input)['mintAuthority'] extends TransactionSigner<TAccountMintAuthority>\n        ? ReadonlySignerAccount<TAccountMintAuthority> & AccountSignerMeta<TAccountMintAuthority>\n        : TAccountMintAuthority\n> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        mint: { value: input.mint ?? null, isWritable: true },\n        token: { value: input.token ?? null, isWritable: true },\n        mintAuthority: { value: input.mintAuthority ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    // Remaining accounts.\n    const remainingAccounts: AccountMeta[] = (args.multiSigners ?? []).map(signer => ({\n        address: signer.address,\n        role: AccountRole.READONLY_SIGNER,\n        signer,\n    }));\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [\n            getAccountMeta(accounts.mint),\n            getAccountMeta(accounts.token),\n            getAccountMeta(accounts.mintAuthority),\n            ...remainingAccounts,\n        ],\n        data: getMintToCheckedInstructionDataEncoder().encode(args as MintToCheckedInstructionDataArgs),\n        programAddress,\n    } as MintToCheckedInstruction<\n        TProgramAddress,\n        TAccountMint,\n        TAccountToken,\n        (typeof input)['mintAuthority'] extends TransactionSigner<TAccountMintAuthority>\n            ? ReadonlySignerAccount<TAccountMintAuthority> & AccountSignerMeta<TAccountMintAuthority>\n            : TAccountMintAuthority\n    >);\n}\n\nexport type ParsedMintToCheckedInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The mint. */\n        mint: TAccountMetas[0];\n        /** The account to mint tokens to. */\n        token: TAccountMetas[1];\n        /** The mint's minting authority or its multisignature account. */\n        mintAuthority: TAccountMetas[2];\n    };\n    data: MintToCheckedInstructionData;\n};\n\nexport function parseMintToCheckedInstruction<TProgram extends string, TAccountMetas extends readonly AccountMeta[]>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedMintToCheckedInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 3) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { mint: getNextAccount(), token: getNextAccount(), mintAuthority: getNextAccount() },\n        data: getMintToCheckedInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    combineCodec,\n    getStructDecoder,\n    getStructEncoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type AccountSignerMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlyAccount,\n    type ReadonlySignerAccount,\n    type ReadonlyUint8Array,\n    type TransactionSigner,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const PAUSE_DISCRIMINATOR = 44;\n\nexport function getPauseDiscriminatorBytes() {\n    return getU8Encoder().encode(PAUSE_DISCRIMINATOR);\n}\n\nexport const PAUSE_PAUSABLE_DISCRIMINATOR = 1;\n\nexport function getPausePausableDiscriminatorBytes() {\n    return getU8Encoder().encode(PAUSE_PAUSABLE_DISCRIMINATOR);\n}\n\nexport type PauseInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMint extends string | AccountMeta<string> = string,\n    TAccountAuthority extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [\n            TAccountMint extends string ? WritableAccount<TAccountMint> : TAccountMint,\n            TAccountAuthority extends string ? ReadonlyAccount<TAccountAuthority> : TAccountAuthority,\n            ...TRemainingAccounts,\n        ]\n    >;\n\nexport type PauseInstructionData = { discriminator: number; pausableDiscriminator: number };\n\nexport type PauseInstructionDataArgs = {};\n\nexport function getPauseInstructionDataEncoder(): FixedSizeEncoder<PauseInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['pausableDiscriminator', getU8Encoder()],\n        ]),\n        value => ({\n            ...value,\n            discriminator: PAUSE_DISCRIMINATOR,\n            pausableDiscriminator: PAUSE_PAUSABLE_DISCRIMINATOR,\n        }),\n    );\n}\n\nexport function getPauseInstructionDataDecoder(): FixedSizeDecoder<PauseInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['pausableDiscriminator', getU8Decoder()],\n    ]);\n}\n\nexport function getPauseInstructionDataCodec(): FixedSizeCodec<PauseInstructionDataArgs, PauseInstructionData> {\n    return combineCodec(getPauseInstructionDataEncoder(), getPauseInstructionDataDecoder());\n}\n\nexport type PauseInput<TAccountMint extends string = string, TAccountAuthority extends string = string> = {\n    /** The mint. */\n    mint: Address<TAccountMint>;\n    /** The pausable authority that can pause the mint. */\n    authority: Address<TAccountAuthority> | TransactionSigner<TAccountAuthority>;\n};\n\nexport function getPauseInstruction<\n    TAccountMint extends string,\n    TAccountAuthority extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: PauseInput<TAccountMint, TAccountAuthority>,\n    config?: { programAddress?: TProgramAddress },\n): PauseInstruction<\n    TProgramAddress,\n    TAccountMint,\n    (typeof input)['authority'] extends TransactionSigner<TAccountAuthority>\n        ? ReadonlySignerAccount<TAccountAuthority> & AccountSignerMeta<TAccountAuthority>\n        : TAccountAuthority\n> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        mint: { value: input.mint ?? null, isWritable: true },\n        authority: { value: input.authority ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [getAccountMeta(accounts.mint), getAccountMeta(accounts.authority)],\n        data: getPauseInstructionDataEncoder().encode({}),\n        programAddress,\n    } as PauseInstruction<\n        TProgramAddress,\n        TAccountMint,\n        (typeof input)['authority'] extends TransactionSigner<TAccountAuthority>\n            ? ReadonlySignerAccount<TAccountAuthority> & AccountSignerMeta<TAccountAuthority>\n            : TAccountAuthority\n    >);\n}\n\nexport type ParsedPauseInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The mint. */\n        mint: TAccountMetas[0];\n        /** The pausable authority that can pause the mint. */\n        authority: TAccountMetas[1];\n    };\n    data: PauseInstructionData;\n};\n\nexport function parsePauseInstruction<TProgram extends string, TAccountMetas extends readonly AccountMeta[]>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedPauseInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 2) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { mint: getNextAccount(), authority: getNextAccount() },\n        data: getPauseInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    AccountRole,\n    combineCodec,\n    getStructDecoder,\n    getStructEncoder,\n    getU64Decoder,\n    getU64Encoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type AccountSignerMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlyAccount,\n    type ReadonlySignerAccount,\n    type ReadonlyUint8Array,\n    type TransactionSigner,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const PERMISSIONED_BURN_DISCRIMINATOR = 46;\n\nexport function getPermissionedBurnDiscriminatorBytes() {\n    return getU8Encoder().encode(PERMISSIONED_BURN_DISCRIMINATOR);\n}\n\nexport const PERMISSIONED_BURN_PERMISSIONED_BURN_DISCRIMINATOR = 1;\n\nexport function getPermissionedBurnPermissionedBurnDiscriminatorBytes() {\n    return getU8Encoder().encode(PERMISSIONED_BURN_PERMISSIONED_BURN_DISCRIMINATOR);\n}\n\nexport type PermissionedBurnInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountAccount extends string | AccountMeta<string> = string,\n    TAccountMint extends string | AccountMeta<string> = string,\n    TAccountPermissionedBurnAuthority extends string | AccountMeta<string> = string,\n    TAccountAuthority extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [\n            TAccountAccount extends string ? WritableAccount<TAccountAccount> : TAccountAccount,\n            TAccountMint extends string ? WritableAccount<TAccountMint> : TAccountMint,\n            TAccountPermissionedBurnAuthority extends string\n                ? ReadonlySignerAccount<TAccountPermissionedBurnAuthority> &\n                      AccountSignerMeta<TAccountPermissionedBurnAuthority>\n                : TAccountPermissionedBurnAuthority,\n            TAccountAuthority extends string ? ReadonlyAccount<TAccountAuthority> : TAccountAuthority,\n            ...TRemainingAccounts,\n        ]\n    >;\n\nexport type PermissionedBurnInstructionData = {\n    discriminator: number;\n    permissionedBurnDiscriminator: number;\n    /** The amount of tokens to burn. */\n    amount: bigint;\n};\n\nexport type PermissionedBurnInstructionDataArgs = {\n    /** The amount of tokens to burn. */\n    amount: number | bigint;\n};\n\nexport function getPermissionedBurnInstructionDataEncoder(): FixedSizeEncoder<PermissionedBurnInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['permissionedBurnDiscriminator', getU8Encoder()],\n            ['amount', getU64Encoder()],\n        ]),\n        value => ({\n            ...value,\n            discriminator: PERMISSIONED_BURN_DISCRIMINATOR,\n            permissionedBurnDiscriminator: PERMISSIONED_BURN_PERMISSIONED_BURN_DISCRIMINATOR,\n        }),\n    );\n}\n\nexport function getPermissionedBurnInstructionDataDecoder(): FixedSizeDecoder<PermissionedBurnInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['permissionedBurnDiscriminator', getU8Decoder()],\n        ['amount', getU64Decoder()],\n    ]);\n}\n\nexport function getPermissionedBurnInstructionDataCodec(): FixedSizeCodec<\n    PermissionedBurnInstructionDataArgs,\n    PermissionedBurnInstructionData\n> {\n    return combineCodec(getPermissionedBurnInstructionDataEncoder(), getPermissionedBurnInstructionDataDecoder());\n}\n\nexport type PermissionedBurnInput<\n    TAccountAccount extends string = string,\n    TAccountMint extends string = string,\n    TAccountPermissionedBurnAuthority extends string = string,\n    TAccountAuthority extends string = string,\n> = {\n    /** The source account to burn from. */\n    account: Address<TAccountAccount>;\n    /** The token mint. */\n    mint: Address<TAccountMint>;\n    /** Authority configured on the mint that must sign any permissioned burn instruction. */\n    permissionedBurnAuthority: TransactionSigner<TAccountPermissionedBurnAuthority>;\n    /** The account's owner/delegate or its multisignature account. */\n    authority: Address<TAccountAuthority> | TransactionSigner<TAccountAuthority>;\n    amount: PermissionedBurnInstructionDataArgs['amount'];\n    multiSigners?: Array<TransactionSigner>;\n};\n\nexport function getPermissionedBurnInstruction<\n    TAccountAccount extends string,\n    TAccountMint extends string,\n    TAccountPermissionedBurnAuthority extends string,\n    TAccountAuthority extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: PermissionedBurnInput<TAccountAccount, TAccountMint, TAccountPermissionedBurnAuthority, TAccountAuthority>,\n    config?: { programAddress?: TProgramAddress },\n): PermissionedBurnInstruction<\n    TProgramAddress,\n    TAccountAccount,\n    TAccountMint,\n    TAccountPermissionedBurnAuthority,\n    (typeof input)['authority'] extends TransactionSigner<TAccountAuthority>\n        ? ReadonlySignerAccount<TAccountAuthority> & AccountSignerMeta<TAccountAuthority>\n        : TAccountAuthority\n> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        account: { value: input.account ?? null, isWritable: true },\n        mint: { value: input.mint ?? null, isWritable: true },\n        permissionedBurnAuthority: { value: input.permissionedBurnAuthority ?? null, isWritable: false },\n        authority: { value: input.authority ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    // Remaining accounts.\n    const remainingAccounts: AccountMeta[] = (args.multiSigners ?? []).map(signer => ({\n        address: signer.address,\n        role: AccountRole.READONLY_SIGNER,\n        signer,\n    }));\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [\n            getAccountMeta(accounts.account),\n            getAccountMeta(accounts.mint),\n            getAccountMeta(accounts.permissionedBurnAuthority),\n            getAccountMeta(accounts.authority),\n            ...remainingAccounts,\n        ],\n        data: getPermissionedBurnInstructionDataEncoder().encode(args as PermissionedBurnInstructionDataArgs),\n        programAddress,\n    } as PermissionedBurnInstruction<\n        TProgramAddress,\n        TAccountAccount,\n        TAccountMint,\n        TAccountPermissionedBurnAuthority,\n        (typeof input)['authority'] extends TransactionSigner<TAccountAuthority>\n            ? ReadonlySignerAccount<TAccountAuthority> & AccountSignerMeta<TAccountAuthority>\n            : TAccountAuthority\n    >);\n}\n\nexport type ParsedPermissionedBurnInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The source account to burn from. */\n        account: TAccountMetas[0];\n        /** The token mint. */\n        mint: TAccountMetas[1];\n        /** Authority configured on the mint that must sign any permissioned burn instruction. */\n        permissionedBurnAuthority: TAccountMetas[2];\n        /** The account's owner/delegate or its multisignature account. */\n        authority: TAccountMetas[3];\n    };\n    data: PermissionedBurnInstructionData;\n};\n\nexport function parsePermissionedBurnInstruction<TProgram extends string, TAccountMetas extends readonly AccountMeta[]>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedPermissionedBurnInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 4) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: {\n            account: getNextAccount(),\n            mint: getNextAccount(),\n            permissionedBurnAuthority: getNextAccount(),\n            authority: getNextAccount(),\n        },\n        data: getPermissionedBurnInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    AccountRole,\n    combineCodec,\n    getStructDecoder,\n    getStructEncoder,\n    getU64Decoder,\n    getU64Encoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type AccountSignerMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlyAccount,\n    type ReadonlySignerAccount,\n    type ReadonlyUint8Array,\n    type TransactionSigner,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const PERMISSIONED_BURN_CHECKED_DISCRIMINATOR = 46;\n\nexport function getPermissionedBurnCheckedDiscriminatorBytes() {\n    return getU8Encoder().encode(PERMISSIONED_BURN_CHECKED_DISCRIMINATOR);\n}\n\nexport const PERMISSIONED_BURN_CHECKED_PERMISSIONED_BURN_DISCRIMINATOR = 2;\n\nexport function getPermissionedBurnCheckedPermissionedBurnDiscriminatorBytes() {\n    return getU8Encoder().encode(PERMISSIONED_BURN_CHECKED_PERMISSIONED_BURN_DISCRIMINATOR);\n}\n\nexport type PermissionedBurnCheckedInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountAccount extends string | AccountMeta<string> = string,\n    TAccountMint extends string | AccountMeta<string> = string,\n    TAccountPermissionedBurnAuthority extends string | AccountMeta<string> = string,\n    TAccountAuthority extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [\n            TAccountAccount extends string ? WritableAccount<TAccountAccount> : TAccountAccount,\n            TAccountMint extends string ? WritableAccount<TAccountMint> : TAccountMint,\n            TAccountPermissionedBurnAuthority extends string\n                ? ReadonlySignerAccount<TAccountPermissionedBurnAuthority> &\n                      AccountSignerMeta<TAccountPermissionedBurnAuthority>\n                : TAccountPermissionedBurnAuthority,\n            TAccountAuthority extends string ? ReadonlyAccount<TAccountAuthority> : TAccountAuthority,\n            ...TRemainingAccounts,\n        ]\n    >;\n\nexport type PermissionedBurnCheckedInstructionData = {\n    discriminator: number;\n    permissionedBurnDiscriminator: number;\n    /** The amount of tokens to burn. */\n    amount: bigint;\n    /** Expected number of base 10 digits to the right of the decimal place. */\n    decimals: number;\n};\n\nexport type PermissionedBurnCheckedInstructionDataArgs = {\n    /** The amount of tokens to burn. */\n    amount: number | bigint;\n    /** Expected number of base 10 digits to the right of the decimal place. */\n    decimals: number;\n};\n\nexport function getPermissionedBurnCheckedInstructionDataEncoder(): FixedSizeEncoder<PermissionedBurnCheckedInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['permissionedBurnDiscriminator', getU8Encoder()],\n            ['amount', getU64Encoder()],\n            ['decimals', getU8Encoder()],\n        ]),\n        value => ({\n            ...value,\n            discriminator: PERMISSIONED_BURN_CHECKED_DISCRIMINATOR,\n            permissionedBurnDiscriminator: PERMISSIONED_BURN_CHECKED_PERMISSIONED_BURN_DISCRIMINATOR,\n        }),\n    );\n}\n\nexport function getPermissionedBurnCheckedInstructionDataDecoder(): FixedSizeDecoder<PermissionedBurnCheckedInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['permissionedBurnDiscriminator', getU8Decoder()],\n        ['amount', getU64Decoder()],\n        ['decimals', getU8Decoder()],\n    ]);\n}\n\nexport function getPermissionedBurnCheckedInstructionDataCodec(): FixedSizeCodec<\n    PermissionedBurnCheckedInstructionDataArgs,\n    PermissionedBurnCheckedInstructionData\n> {\n    return combineCodec(\n        getPermissionedBurnCheckedInstructionDataEncoder(),\n        getPermissionedBurnCheckedInstructionDataDecoder(),\n    );\n}\n\nexport type PermissionedBurnCheckedInput<\n    TAccountAccount extends string = string,\n    TAccountMint extends string = string,\n    TAccountPermissionedBurnAuthority extends string = string,\n    TAccountAuthority extends string = string,\n> = {\n    /** The source account to burn from. */\n    account: Address<TAccountAccount>;\n    /** The token mint. */\n    mint: Address<TAccountMint>;\n    /** Authority configured on the mint that must sign any permissioned burn instruction. */\n    permissionedBurnAuthority: TransactionSigner<TAccountPermissionedBurnAuthority>;\n    /** The account's owner/delegate or its multisignature account. */\n    authority: Address<TAccountAuthority> | TransactionSigner<TAccountAuthority>;\n    amount: PermissionedBurnCheckedInstructionDataArgs['amount'];\n    decimals: PermissionedBurnCheckedInstructionDataArgs['decimals'];\n    multiSigners?: Array<TransactionSigner>;\n};\n\nexport function getPermissionedBurnCheckedInstruction<\n    TAccountAccount extends string,\n    TAccountMint extends string,\n    TAccountPermissionedBurnAuthority extends string,\n    TAccountAuthority extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: PermissionedBurnCheckedInput<\n        TAccountAccount,\n        TAccountMint,\n        TAccountPermissionedBurnAuthority,\n        TAccountAuthority\n    >,\n    config?: { programAddress?: TProgramAddress },\n): PermissionedBurnCheckedInstruction<\n    TProgramAddress,\n    TAccountAccount,\n    TAccountMint,\n    TAccountPermissionedBurnAuthority,\n    (typeof input)['authority'] extends TransactionSigner<TAccountAuthority>\n        ? ReadonlySignerAccount<TAccountAuthority> & AccountSignerMeta<TAccountAuthority>\n        : TAccountAuthority\n> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        account: { value: input.account ?? null, isWritable: true },\n        mint: { value: input.mint ?? null, isWritable: true },\n        permissionedBurnAuthority: { value: input.permissionedBurnAuthority ?? null, isWritable: false },\n        authority: { value: input.authority ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    // Remaining accounts.\n    const remainingAccounts: AccountMeta[] = (args.multiSigners ?? []).map(signer => ({\n        address: signer.address,\n        role: AccountRole.READONLY_SIGNER,\n        signer,\n    }));\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [\n            getAccountMeta(accounts.account),\n            getAccountMeta(accounts.mint),\n            getAccountMeta(accounts.permissionedBurnAuthority),\n            getAccountMeta(accounts.authority),\n            ...remainingAccounts,\n        ],\n        data: getPermissionedBurnCheckedInstructionDataEncoder().encode(\n            args as PermissionedBurnCheckedInstructionDataArgs,\n        ),\n        programAddress,\n    } as PermissionedBurnCheckedInstruction<\n        TProgramAddress,\n        TAccountAccount,\n        TAccountMint,\n        TAccountPermissionedBurnAuthority,\n        (typeof input)['authority'] extends TransactionSigner<TAccountAuthority>\n            ? ReadonlySignerAccount<TAccountAuthority> & AccountSignerMeta<TAccountAuthority>\n            : TAccountAuthority\n    >);\n}\n\nexport type ParsedPermissionedBurnCheckedInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The source account to burn from. */\n        account: TAccountMetas[0];\n        /** The token mint. */\n        mint: TAccountMetas[1];\n        /** Authority configured on the mint that must sign any permissioned burn instruction. */\n        permissionedBurnAuthority: TAccountMetas[2];\n        /** The account's owner/delegate or its multisignature account. */\n        authority: TAccountMetas[3];\n    };\n    data: PermissionedBurnCheckedInstructionData;\n};\n\nexport function parsePermissionedBurnCheckedInstruction<\n    TProgram extends string,\n    TAccountMetas extends readonly AccountMeta[],\n>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedPermissionedBurnCheckedInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 4) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: {\n            account: getNextAccount(),\n            mint: getNextAccount(),\n            permissionedBurnAuthority: getNextAccount(),\n            authority: getNextAccount(),\n        },\n        data: getPermissionedBurnCheckedInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    AccountRole,\n    combineCodec,\n    getArrayDecoder,\n    getArrayEncoder,\n    getStructDecoder,\n    getStructEncoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type AccountSignerMeta,\n    type Address,\n    type Codec,\n    type Decoder,\n    type Encoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlyAccount,\n    type ReadonlySignerAccount,\n    type ReadonlyUint8Array,\n    type TransactionSigner,\n    type WritableAccount,\n    type WritableSignerAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\nimport { getExtensionTypeDecoder, getExtensionTypeEncoder, type ExtensionType, type ExtensionTypeArgs } from '../types';\n\nexport const REALLOCATE_DISCRIMINATOR = 29;\n\nexport function getReallocateDiscriminatorBytes() {\n    return getU8Encoder().encode(REALLOCATE_DISCRIMINATOR);\n}\n\nexport type ReallocateInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountToken extends string | AccountMeta<string> = string,\n    TAccountPayer extends string | AccountMeta<string> = string,\n    TAccountSystemProgram extends string | AccountMeta<string> = '11111111111111111111111111111111',\n    TAccountOwner extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [\n            TAccountToken extends string ? WritableAccount<TAccountToken> : TAccountToken,\n            TAccountPayer extends string\n                ? WritableSignerAccount<TAccountPayer> & AccountSignerMeta<TAccountPayer>\n                : TAccountPayer,\n            TAccountSystemProgram extends string ? ReadonlyAccount<TAccountSystemProgram> : TAccountSystemProgram,\n            TAccountOwner extends string ? ReadonlyAccount<TAccountOwner> : TAccountOwner,\n            ...TRemainingAccounts,\n        ]\n    >;\n\nexport type ReallocateInstructionData = {\n    discriminator: number;\n    /** New extension types to include in the reallocated account. */\n    newExtensionTypes: Array<ExtensionType>;\n};\n\nexport type ReallocateInstructionDataArgs = {\n    /** New extension types to include in the reallocated account. */\n    newExtensionTypes: Array<ExtensionTypeArgs>;\n};\n\nexport function getReallocateInstructionDataEncoder(): Encoder<ReallocateInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['newExtensionTypes', getArrayEncoder(getExtensionTypeEncoder(), { size: 'remainder' })],\n        ]),\n        value => ({ ...value, discriminator: REALLOCATE_DISCRIMINATOR }),\n    );\n}\n\nexport function getReallocateInstructionDataDecoder(): Decoder<ReallocateInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['newExtensionTypes', getArrayDecoder(getExtensionTypeDecoder(), { size: 'remainder' })],\n    ]);\n}\n\nexport function getReallocateInstructionDataCodec(): Codec<ReallocateInstructionDataArgs, ReallocateInstructionData> {\n    return combineCodec(getReallocateInstructionDataEncoder(), getReallocateInstructionDataDecoder());\n}\n\nexport type ReallocateInput<\n    TAccountToken extends string = string,\n    TAccountPayer extends string = string,\n    TAccountSystemProgram extends string = string,\n    TAccountOwner extends string = string,\n> = {\n    /** The token account to reallocate. */\n    token: Address<TAccountToken>;\n    /** The payer account to fund reallocation. */\n    payer: TransactionSigner<TAccountPayer>;\n    /** System program for reallocation funding. */\n    systemProgram?: Address<TAccountSystemProgram>;\n    /** The account's owner or its multisignature account. */\n    owner: Address<TAccountOwner> | TransactionSigner<TAccountOwner>;\n    newExtensionTypes: ReallocateInstructionDataArgs['newExtensionTypes'];\n    multiSigners?: Array<TransactionSigner>;\n};\n\nexport function getReallocateInstruction<\n    TAccountToken extends string,\n    TAccountPayer extends string,\n    TAccountSystemProgram extends string,\n    TAccountOwner extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: ReallocateInput<TAccountToken, TAccountPayer, TAccountSystemProgram, TAccountOwner>,\n    config?: { programAddress?: TProgramAddress },\n): ReallocateInstruction<\n    TProgramAddress,\n    TAccountToken,\n    TAccountPayer,\n    TAccountSystemProgram,\n    (typeof input)['owner'] extends TransactionSigner<TAccountOwner>\n        ? ReadonlySignerAccount<TAccountOwner> & AccountSignerMeta<TAccountOwner>\n        : TAccountOwner\n> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        token: { value: input.token ?? null, isWritable: true },\n        payer: { value: input.payer ?? null, isWritable: true },\n        systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n        owner: { value: input.owner ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    // Resolve default values.\n    if (!accounts.systemProgram.value) {\n        accounts.systemProgram.value =\n            '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n    }\n\n    // Remaining accounts.\n    const remainingAccounts: AccountMeta[] = (args.multiSigners ?? []).map(signer => ({\n        address: signer.address,\n        role: AccountRole.READONLY_SIGNER,\n        signer,\n    }));\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [\n            getAccountMeta(accounts.token),\n            getAccountMeta(accounts.payer),\n            getAccountMeta(accounts.systemProgram),\n            getAccountMeta(accounts.owner),\n            ...remainingAccounts,\n        ],\n        data: getReallocateInstructionDataEncoder().encode(args as ReallocateInstructionDataArgs),\n        programAddress,\n    } as ReallocateInstruction<\n        TProgramAddress,\n        TAccountToken,\n        TAccountPayer,\n        TAccountSystemProgram,\n        (typeof input)['owner'] extends TransactionSigner<TAccountOwner>\n            ? ReadonlySignerAccount<TAccountOwner> & AccountSignerMeta<TAccountOwner>\n            : TAccountOwner\n    >);\n}\n\nexport type ParsedReallocateInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The token account to reallocate. */\n        token: TAccountMetas[0];\n        /** The payer account to fund reallocation. */\n        payer: TAccountMetas[1];\n        /** System program for reallocation funding. */\n        systemProgram: TAccountMetas[2];\n        /** The account's owner or its multisignature account. */\n        owner: TAccountMetas[3];\n    };\n    data: ReallocateInstructionData;\n};\n\nexport function parseReallocateInstruction<TProgram extends string, TAccountMetas extends readonly AccountMeta[]>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedReallocateInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 4) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: {\n            token: getNextAccount(),\n            payer: getNextAccount(),\n            systemProgram: getNextAccount(),\n            owner: getNextAccount(),\n        },\n        data: getReallocateInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    combineCodec,\n    getStructDecoder,\n    getStructEncoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type AccountSignerMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlyAccount,\n    type ReadonlyUint8Array,\n    type TransactionSigner,\n    type WritableAccount,\n    type WritableSignerAccount,\n} from '@solana/kit';\nimport { findAssociatedTokenPda } from '../pdas';\nimport { ASSOCIATED_TOKEN_PROGRAM_ADDRESS } from '../programs';\nimport { expectAddress, getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const RECOVER_NESTED_ASSOCIATED_TOKEN_DISCRIMINATOR = 2;\n\nexport function getRecoverNestedAssociatedTokenDiscriminatorBytes() {\n    return getU8Encoder().encode(RECOVER_NESTED_ASSOCIATED_TOKEN_DISCRIMINATOR);\n}\n\nexport type RecoverNestedAssociatedTokenInstruction<\n    TProgram extends string = typeof ASSOCIATED_TOKEN_PROGRAM_ADDRESS,\n    TAccountNestedAssociatedAccountAddress extends string | AccountMeta<string> = string,\n    TAccountNestedTokenMintAddress extends string | AccountMeta<string> = string,\n    TAccountDestinationAssociatedAccountAddress extends string | AccountMeta<string> = string,\n    TAccountOwnerAssociatedAccountAddress extends string | AccountMeta<string> = string,\n    TAccountOwnerTokenMintAddress extends string | AccountMeta<string> = string,\n    TAccountWalletAddress extends string | AccountMeta<string> = string,\n    TAccountTokenProgram extends string | AccountMeta<string> = 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb',\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [\n            TAccountNestedAssociatedAccountAddress extends string\n                ? WritableAccount<TAccountNestedAssociatedAccountAddress>\n                : TAccountNestedAssociatedAccountAddress,\n            TAccountNestedTokenMintAddress extends string\n                ? ReadonlyAccount<TAccountNestedTokenMintAddress>\n                : TAccountNestedTokenMintAddress,\n            TAccountDestinationAssociatedAccountAddress extends string\n                ? WritableAccount<TAccountDestinationAssociatedAccountAddress>\n                : TAccountDestinationAssociatedAccountAddress,\n            TAccountOwnerAssociatedAccountAddress extends string\n                ? ReadonlyAccount<TAccountOwnerAssociatedAccountAddress>\n                : TAccountOwnerAssociatedAccountAddress,\n            TAccountOwnerTokenMintAddress extends string\n                ? ReadonlyAccount<TAccountOwnerTokenMintAddress>\n                : TAccountOwnerTokenMintAddress,\n            TAccountWalletAddress extends string\n                ? WritableSignerAccount<TAccountWalletAddress> & AccountSignerMeta<TAccountWalletAddress>\n                : TAccountWalletAddress,\n            TAccountTokenProgram extends string ? ReadonlyAccount<TAccountTokenProgram> : TAccountTokenProgram,\n            ...TRemainingAccounts,\n        ]\n    >;\n\nexport type RecoverNestedAssociatedTokenInstructionData = { discriminator: number };\n\nexport type RecoverNestedAssociatedTokenInstructionDataArgs = {};\n\nexport function getRecoverNestedAssociatedTokenInstructionDataEncoder(): FixedSizeEncoder<RecoverNestedAssociatedTokenInstructionDataArgs> {\n    return transformEncoder(getStructEncoder([['discriminator', getU8Encoder()]]), value => ({\n        ...value,\n        discriminator: RECOVER_NESTED_ASSOCIATED_TOKEN_DISCRIMINATOR,\n    }));\n}\n\nexport function getRecoverNestedAssociatedTokenInstructionDataDecoder(): FixedSizeDecoder<RecoverNestedAssociatedTokenInstructionData> {\n    return getStructDecoder([['discriminator', getU8Decoder()]]);\n}\n\nexport function getRecoverNestedAssociatedTokenInstructionDataCodec(): FixedSizeCodec<\n    RecoverNestedAssociatedTokenInstructionDataArgs,\n    RecoverNestedAssociatedTokenInstructionData\n> {\n    return combineCodec(\n        getRecoverNestedAssociatedTokenInstructionDataEncoder(),\n        getRecoverNestedAssociatedTokenInstructionDataDecoder(),\n    );\n}\n\nexport type RecoverNestedAssociatedTokenAsyncInput<\n    TAccountNestedAssociatedAccountAddress extends string = string,\n    TAccountNestedTokenMintAddress extends string = string,\n    TAccountDestinationAssociatedAccountAddress extends string = string,\n    TAccountOwnerAssociatedAccountAddress extends string = string,\n    TAccountOwnerTokenMintAddress extends string = string,\n    TAccountWalletAddress extends string = string,\n    TAccountTokenProgram extends string = string,\n> = {\n    /** Nested associated token account, must be owned by `ownerAssociatedAccountAddress`. */\n    nestedAssociatedAccountAddress?: Address<TAccountNestedAssociatedAccountAddress>;\n    /** Token mint for the nested associated token account. */\n    nestedTokenMintAddress: Address<TAccountNestedTokenMintAddress>;\n    /** Wallet's associated token account. */\n    destinationAssociatedAccountAddress?: Address<TAccountDestinationAssociatedAccountAddress>;\n    /** Owner associated token account address, must be owned by `walletAddress`. */\n    ownerAssociatedAccountAddress?: Address<TAccountOwnerAssociatedAccountAddress>;\n    /** Token mint for the owner associated token account. */\n    ownerTokenMintAddress: Address<TAccountOwnerTokenMintAddress>;\n    /** Wallet address for the owner associated token account. */\n    walletAddress: TransactionSigner<TAccountWalletAddress>;\n    /** SPL Token program. */\n    tokenProgram?: Address<TAccountTokenProgram>;\n};\n\nexport async function getRecoverNestedAssociatedTokenInstructionAsync<\n    TAccountNestedAssociatedAccountAddress extends string,\n    TAccountNestedTokenMintAddress extends string,\n    TAccountDestinationAssociatedAccountAddress extends string,\n    TAccountOwnerAssociatedAccountAddress extends string,\n    TAccountOwnerTokenMintAddress extends string,\n    TAccountWalletAddress extends string,\n    TAccountTokenProgram extends string,\n    TProgramAddress extends Address = typeof ASSOCIATED_TOKEN_PROGRAM_ADDRESS,\n>(\n    input: RecoverNestedAssociatedTokenAsyncInput<\n        TAccountNestedAssociatedAccountAddress,\n        TAccountNestedTokenMintAddress,\n        TAccountDestinationAssociatedAccountAddress,\n        TAccountOwnerAssociatedAccountAddress,\n        TAccountOwnerTokenMintAddress,\n        TAccountWalletAddress,\n        TAccountTokenProgram\n    >,\n    config?: { programAddress?: TProgramAddress },\n): Promise<\n    RecoverNestedAssociatedTokenInstruction<\n        TProgramAddress,\n        TAccountNestedAssociatedAccountAddress,\n        TAccountNestedTokenMintAddress,\n        TAccountDestinationAssociatedAccountAddress,\n        TAccountOwnerAssociatedAccountAddress,\n        TAccountOwnerTokenMintAddress,\n        TAccountWalletAddress,\n        TAccountTokenProgram\n    >\n> {\n    // Program address.\n    const programAddress = config?.programAddress ?? ASSOCIATED_TOKEN_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        nestedAssociatedAccountAddress: { value: input.nestedAssociatedAccountAddress ?? null, isWritable: true },\n        nestedTokenMintAddress: { value: input.nestedTokenMintAddress ?? null, isWritable: false },\n        destinationAssociatedAccountAddress: {\n            value: input.destinationAssociatedAccountAddress ?? null,\n            isWritable: true,\n        },\n        ownerAssociatedAccountAddress: { value: input.ownerAssociatedAccountAddress ?? null, isWritable: false },\n        ownerTokenMintAddress: { value: input.ownerTokenMintAddress ?? null, isWritable: false },\n        walletAddress: { value: input.walletAddress ?? null, isWritable: true },\n        tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Resolve default values.\n    if (!accounts.tokenProgram.value) {\n        accounts.tokenProgram.value =\n            'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb' as Address<'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb'>;\n    }\n    if (!accounts.ownerAssociatedAccountAddress.value) {\n        accounts.ownerAssociatedAccountAddress.value = await findAssociatedTokenPda({\n            owner: expectAddress(accounts.walletAddress.value),\n            tokenProgram: expectAddress(accounts.tokenProgram.value),\n            mint: expectAddress(accounts.ownerTokenMintAddress.value),\n        });\n    }\n    if (!accounts.nestedAssociatedAccountAddress.value) {\n        accounts.nestedAssociatedAccountAddress.value = await findAssociatedTokenPda({\n            owner: expectAddress(accounts.ownerAssociatedAccountAddress.value),\n            tokenProgram: expectAddress(accounts.tokenProgram.value),\n            mint: expectAddress(accounts.nestedTokenMintAddress.value),\n        });\n    }\n    if (!accounts.destinationAssociatedAccountAddress.value) {\n        accounts.destinationAssociatedAccountAddress.value = await findAssociatedTokenPda({\n            owner: expectAddress(accounts.walletAddress.value),\n            tokenProgram: expectAddress(accounts.tokenProgram.value),\n            mint: expectAddress(accounts.nestedTokenMintAddress.value),\n        });\n    }\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [\n            getAccountMeta(accounts.nestedAssociatedAccountAddress),\n            getAccountMeta(accounts.nestedTokenMintAddress),\n            getAccountMeta(accounts.destinationAssociatedAccountAddress),\n            getAccountMeta(accounts.ownerAssociatedAccountAddress),\n            getAccountMeta(accounts.ownerTokenMintAddress),\n            getAccountMeta(accounts.walletAddress),\n            getAccountMeta(accounts.tokenProgram),\n        ],\n        data: getRecoverNestedAssociatedTokenInstructionDataEncoder().encode({}),\n        programAddress,\n    } as RecoverNestedAssociatedTokenInstruction<\n        TProgramAddress,\n        TAccountNestedAssociatedAccountAddress,\n        TAccountNestedTokenMintAddress,\n        TAccountDestinationAssociatedAccountAddress,\n        TAccountOwnerAssociatedAccountAddress,\n        TAccountOwnerTokenMintAddress,\n        TAccountWalletAddress,\n        TAccountTokenProgram\n    >);\n}\n\nexport type RecoverNestedAssociatedTokenInput<\n    TAccountNestedAssociatedAccountAddress extends string = string,\n    TAccountNestedTokenMintAddress extends string = string,\n    TAccountDestinationAssociatedAccountAddress extends string = string,\n    TAccountOwnerAssociatedAccountAddress extends string = string,\n    TAccountOwnerTokenMintAddress extends string = string,\n    TAccountWalletAddress extends string = string,\n    TAccountTokenProgram extends string = string,\n> = {\n    /** Nested associated token account, must be owned by `ownerAssociatedAccountAddress`. */\n    nestedAssociatedAccountAddress: Address<TAccountNestedAssociatedAccountAddress>;\n    /** Token mint for the nested associated token account. */\n    nestedTokenMintAddress: Address<TAccountNestedTokenMintAddress>;\n    /** Wallet's associated token account. */\n    destinationAssociatedAccountAddress: Address<TAccountDestinationAssociatedAccountAddress>;\n    /** Owner associated token account address, must be owned by `walletAddress`. */\n    ownerAssociatedAccountAddress: Address<TAccountOwnerAssociatedAccountAddress>;\n    /** Token mint for the owner associated token account. */\n    ownerTokenMintAddress: Address<TAccountOwnerTokenMintAddress>;\n    /** Wallet address for the owner associated token account. */\n    walletAddress: TransactionSigner<TAccountWalletAddress>;\n    /** SPL Token program. */\n    tokenProgram?: Address<TAccountTokenProgram>;\n};\n\nexport function getRecoverNestedAssociatedTokenInstruction<\n    TAccountNestedAssociatedAccountAddress extends string,\n    TAccountNestedTokenMintAddress extends string,\n    TAccountDestinationAssociatedAccountAddress extends string,\n    TAccountOwnerAssociatedAccountAddress extends string,\n    TAccountOwnerTokenMintAddress extends string,\n    TAccountWalletAddress extends string,\n    TAccountTokenProgram extends string,\n    TProgramAddress extends Address = typeof ASSOCIATED_TOKEN_PROGRAM_ADDRESS,\n>(\n    input: RecoverNestedAssociatedTokenInput<\n        TAccountNestedAssociatedAccountAddress,\n        TAccountNestedTokenMintAddress,\n        TAccountDestinationAssociatedAccountAddress,\n        TAccountOwnerAssociatedAccountAddress,\n        TAccountOwnerTokenMintAddress,\n        TAccountWalletAddress,\n        TAccountTokenProgram\n    >,\n    config?: { programAddress?: TProgramAddress },\n): RecoverNestedAssociatedTokenInstruction<\n    TProgramAddress,\n    TAccountNestedAssociatedAccountAddress,\n    TAccountNestedTokenMintAddress,\n    TAccountDestinationAssociatedAccountAddress,\n    TAccountOwnerAssociatedAccountAddress,\n    TAccountOwnerTokenMintAddress,\n    TAccountWalletAddress,\n    TAccountTokenProgram\n> {\n    // Program address.\n    const programAddress = config?.programAddress ?? ASSOCIATED_TOKEN_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        nestedAssociatedAccountAddress: { value: input.nestedAssociatedAccountAddress ?? null, isWritable: true },\n        nestedTokenMintAddress: { value: input.nestedTokenMintAddress ?? null, isWritable: false },\n        destinationAssociatedAccountAddress: {\n            value: input.destinationAssociatedAccountAddress ?? null,\n            isWritable: true,\n        },\n        ownerAssociatedAccountAddress: { value: input.ownerAssociatedAccountAddress ?? null, isWritable: false },\n        ownerTokenMintAddress: { value: input.ownerTokenMintAddress ?? null, isWritable: false },\n        walletAddress: { value: input.walletAddress ?? null, isWritable: true },\n        tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Resolve default values.\n    if (!accounts.tokenProgram.value) {\n        accounts.tokenProgram.value =\n            'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb' as Address<'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb'>;\n    }\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [\n            getAccountMeta(accounts.nestedAssociatedAccountAddress),\n            getAccountMeta(accounts.nestedTokenMintAddress),\n            getAccountMeta(accounts.destinationAssociatedAccountAddress),\n            getAccountMeta(accounts.ownerAssociatedAccountAddress),\n            getAccountMeta(accounts.ownerTokenMintAddress),\n            getAccountMeta(accounts.walletAddress),\n            getAccountMeta(accounts.tokenProgram),\n        ],\n        data: getRecoverNestedAssociatedTokenInstructionDataEncoder().encode({}),\n        programAddress,\n    } as RecoverNestedAssociatedTokenInstruction<\n        TProgramAddress,\n        TAccountNestedAssociatedAccountAddress,\n        TAccountNestedTokenMintAddress,\n        TAccountDestinationAssociatedAccountAddress,\n        TAccountOwnerAssociatedAccountAddress,\n        TAccountOwnerTokenMintAddress,\n        TAccountWalletAddress,\n        TAccountTokenProgram\n    >);\n}\n\nexport type ParsedRecoverNestedAssociatedTokenInstruction<\n    TProgram extends string = typeof ASSOCIATED_TOKEN_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** Nested associated token account, must be owned by `ownerAssociatedAccountAddress`. */\n        nestedAssociatedAccountAddress: TAccountMetas[0];\n        /** Token mint for the nested associated token account. */\n        nestedTokenMintAddress: TAccountMetas[1];\n        /** Wallet's associated token account. */\n        destinationAssociatedAccountAddress: TAccountMetas[2];\n        /** Owner associated token account address, must be owned by `walletAddress`. */\n        ownerAssociatedAccountAddress: TAccountMetas[3];\n        /** Token mint for the owner associated token account. */\n        ownerTokenMintAddress: TAccountMetas[4];\n        /** Wallet address for the owner associated token account. */\n        walletAddress: TAccountMetas[5];\n        /** SPL Token program. */\n        tokenProgram: TAccountMetas[6];\n    };\n    data: RecoverNestedAssociatedTokenInstructionData;\n};\n\nexport function parseRecoverNestedAssociatedTokenInstruction<\n    TProgram extends string,\n    TAccountMetas extends readonly AccountMeta[],\n>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedRecoverNestedAssociatedTokenInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 7) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: {\n            nestedAssociatedAccountAddress: getNextAccount(),\n            nestedTokenMintAddress: getNextAccount(),\n            destinationAssociatedAccountAddress: getNextAccount(),\n            ownerAssociatedAccountAddress: getNextAccount(),\n            ownerTokenMintAddress: getNextAccount(),\n            walletAddress: getNextAccount(),\n            tokenProgram: getNextAccount(),\n        },\n        data: getRecoverNestedAssociatedTokenInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    addDecoderSizePrefix,\n    addEncoderSizePrefix,\n    combineCodec,\n    getBooleanDecoder,\n    getBooleanEncoder,\n    getBytesDecoder,\n    getBytesEncoder,\n    getStructDecoder,\n    getStructEncoder,\n    getU32Decoder,\n    getU32Encoder,\n    getUtf8Decoder,\n    getUtf8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type AccountSignerMeta,\n    type Address,\n    type Codec,\n    type Decoder,\n    type Encoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlySignerAccount,\n    type ReadonlyUint8Array,\n    type TransactionSigner,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const REMOVE_TOKEN_METADATA_KEY_DISCRIMINATOR = new Uint8Array([234, 18, 32, 56, 89, 141, 37, 181]);\n\nexport function getRemoveTokenMetadataKeyDiscriminatorBytes() {\n    return getBytesEncoder().encode(REMOVE_TOKEN_METADATA_KEY_DISCRIMINATOR);\n}\n\nexport type RemoveTokenMetadataKeyInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetadata extends string | AccountMeta<string> = string,\n    TAccountUpdateAuthority extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [\n            TAccountMetadata extends string ? WritableAccount<TAccountMetadata> : TAccountMetadata,\n            TAccountUpdateAuthority extends string\n                ? ReadonlySignerAccount<TAccountUpdateAuthority> & AccountSignerMeta<TAccountUpdateAuthority>\n                : TAccountUpdateAuthority,\n            ...TRemainingAccounts,\n        ]\n    >;\n\nexport type RemoveTokenMetadataKeyInstructionData = {\n    discriminator: ReadonlyUint8Array;\n    /**\n     * If the idempotent flag is set to true, then the instruction will not\n     * error if the key does not exist\n     */\n    idempotent: boolean;\n    /** Key to remove in the additional metadata portion. */\n    key: string;\n};\n\nexport type RemoveTokenMetadataKeyInstructionDataArgs = {\n    /**\n     * If the idempotent flag is set to true, then the instruction will not\n     * error if the key does not exist\n     */\n    idempotent?: boolean;\n    /** Key to remove in the additional metadata portion. */\n    key: string;\n};\n\nexport function getRemoveTokenMetadataKeyInstructionDataEncoder(): Encoder<RemoveTokenMetadataKeyInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getBytesEncoder()],\n            ['idempotent', getBooleanEncoder()],\n            ['key', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())],\n        ]),\n        value => ({\n            ...value,\n            discriminator: REMOVE_TOKEN_METADATA_KEY_DISCRIMINATOR,\n            idempotent: value.idempotent ?? false,\n        }),\n    );\n}\n\nexport function getRemoveTokenMetadataKeyInstructionDataDecoder(): Decoder<RemoveTokenMetadataKeyInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getBytesDecoder()],\n        ['idempotent', getBooleanDecoder()],\n        ['key', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],\n    ]);\n}\n\nexport function getRemoveTokenMetadataKeyInstructionDataCodec(): Codec<\n    RemoveTokenMetadataKeyInstructionDataArgs,\n    RemoveTokenMetadataKeyInstructionData\n> {\n    return combineCodec(\n        getRemoveTokenMetadataKeyInstructionDataEncoder(),\n        getRemoveTokenMetadataKeyInstructionDataDecoder(),\n    );\n}\n\nexport type RemoveTokenMetadataKeyInput<\n    TAccountMetadata extends string = string,\n    TAccountUpdateAuthority extends string = string,\n> = {\n    metadata: Address<TAccountMetadata>;\n    updateAuthority: TransactionSigner<TAccountUpdateAuthority>;\n    idempotent?: RemoveTokenMetadataKeyInstructionDataArgs['idempotent'];\n    key: RemoveTokenMetadataKeyInstructionDataArgs['key'];\n};\n\nexport function getRemoveTokenMetadataKeyInstruction<\n    TAccountMetadata extends string,\n    TAccountUpdateAuthority extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: RemoveTokenMetadataKeyInput<TAccountMetadata, TAccountUpdateAuthority>,\n    config?: { programAddress?: TProgramAddress },\n): RemoveTokenMetadataKeyInstruction<TProgramAddress, TAccountMetadata, TAccountUpdateAuthority> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        metadata: { value: input.metadata ?? null, isWritable: true },\n        updateAuthority: { value: input.updateAuthority ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [getAccountMeta(accounts.metadata), getAccountMeta(accounts.updateAuthority)],\n        data: getRemoveTokenMetadataKeyInstructionDataEncoder().encode(\n            args as RemoveTokenMetadataKeyInstructionDataArgs,\n        ),\n        programAddress,\n    } as RemoveTokenMetadataKeyInstruction<TProgramAddress, TAccountMetadata, TAccountUpdateAuthority>);\n}\n\nexport type ParsedRemoveTokenMetadataKeyInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        metadata: TAccountMetas[0];\n        updateAuthority: TAccountMetas[1];\n    };\n    data: RemoveTokenMetadataKeyInstructionData;\n};\n\nexport function parseRemoveTokenMetadataKeyInstruction<\n    TProgram extends string,\n    TAccountMetas extends readonly AccountMeta[],\n>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedRemoveTokenMetadataKeyInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 2) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { metadata: getNextAccount(), updateAuthority: getNextAccount() },\n        data: getRemoveTokenMetadataKeyInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    combineCodec,\n    getStructDecoder,\n    getStructEncoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type AccountSignerMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlyAccount,\n    type ReadonlySignerAccount,\n    type ReadonlyUint8Array,\n    type TransactionSigner,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const RESUME_DISCRIMINATOR = 44;\n\nexport function getResumeDiscriminatorBytes() {\n    return getU8Encoder().encode(RESUME_DISCRIMINATOR);\n}\n\nexport const RESUME_PAUSABLE_DISCRIMINATOR = 2;\n\nexport function getResumePausableDiscriminatorBytes() {\n    return getU8Encoder().encode(RESUME_PAUSABLE_DISCRIMINATOR);\n}\n\nexport type ResumeInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMint extends string | AccountMeta<string> = string,\n    TAccountAuthority extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [\n            TAccountMint extends string ? WritableAccount<TAccountMint> : TAccountMint,\n            TAccountAuthority extends string ? ReadonlyAccount<TAccountAuthority> : TAccountAuthority,\n            ...TRemainingAccounts,\n        ]\n    >;\n\nexport type ResumeInstructionData = { discriminator: number; pausableDiscriminator: number };\n\nexport type ResumeInstructionDataArgs = {};\n\nexport function getResumeInstructionDataEncoder(): FixedSizeEncoder<ResumeInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['pausableDiscriminator', getU8Encoder()],\n        ]),\n        value => ({\n            ...value,\n            discriminator: RESUME_DISCRIMINATOR,\n            pausableDiscriminator: RESUME_PAUSABLE_DISCRIMINATOR,\n        }),\n    );\n}\n\nexport function getResumeInstructionDataDecoder(): FixedSizeDecoder<ResumeInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['pausableDiscriminator', getU8Decoder()],\n    ]);\n}\n\nexport function getResumeInstructionDataCodec(): FixedSizeCodec<ResumeInstructionDataArgs, ResumeInstructionData> {\n    return combineCodec(getResumeInstructionDataEncoder(), getResumeInstructionDataDecoder());\n}\n\nexport type ResumeInput<TAccountMint extends string = string, TAccountAuthority extends string = string> = {\n    /** The mint. */\n    mint: Address<TAccountMint>;\n    /** The pausable authority that can resume the mint. */\n    authority: Address<TAccountAuthority> | TransactionSigner<TAccountAuthority>;\n};\n\nexport function getResumeInstruction<\n    TAccountMint extends string,\n    TAccountAuthority extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: ResumeInput<TAccountMint, TAccountAuthority>,\n    config?: { programAddress?: TProgramAddress },\n): ResumeInstruction<\n    TProgramAddress,\n    TAccountMint,\n    (typeof input)['authority'] extends TransactionSigner<TAccountAuthority>\n        ? ReadonlySignerAccount<TAccountAuthority> & AccountSignerMeta<TAccountAuthority>\n        : TAccountAuthority\n> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        mint: { value: input.mint ?? null, isWritable: true },\n        authority: { value: input.authority ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [getAccountMeta(accounts.mint), getAccountMeta(accounts.authority)],\n        data: getResumeInstructionDataEncoder().encode({}),\n        programAddress,\n    } as ResumeInstruction<\n        TProgramAddress,\n        TAccountMint,\n        (typeof input)['authority'] extends TransactionSigner<TAccountAuthority>\n            ? ReadonlySignerAccount<TAccountAuthority> & AccountSignerMeta<TAccountAuthority>\n            : TAccountAuthority\n    >);\n}\n\nexport type ParsedResumeInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The mint. */\n        mint: TAccountMetas[0];\n        /** The pausable authority that can resume the mint. */\n        authority: TAccountMetas[1];\n    };\n    data: ResumeInstructionData;\n};\n\nexport function parseResumeInstruction<TProgram extends string, TAccountMetas extends readonly AccountMeta[]>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedResumeInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 2) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { mint: getNextAccount(), authority: getNextAccount() },\n        data: getResumeInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    AccountRole,\n    combineCodec,\n    getStructDecoder,\n    getStructEncoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type AccountSignerMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlyAccount,\n    type ReadonlySignerAccount,\n    type ReadonlyUint8Array,\n    type TransactionSigner,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const REVOKE_DISCRIMINATOR = 5;\n\nexport function getRevokeDiscriminatorBytes() {\n    return getU8Encoder().encode(REVOKE_DISCRIMINATOR);\n}\n\nexport type RevokeInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountSource extends string | AccountMeta<string> = string,\n    TAccountOwner extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [\n            TAccountSource extends string ? WritableAccount<TAccountSource> : TAccountSource,\n            TAccountOwner extends string ? ReadonlyAccount<TAccountOwner> : TAccountOwner,\n            ...TRemainingAccounts,\n        ]\n    >;\n\nexport type RevokeInstructionData = { discriminator: number };\n\nexport type RevokeInstructionDataArgs = {};\n\nexport function getRevokeInstructionDataEncoder(): FixedSizeEncoder<RevokeInstructionDataArgs> {\n    return transformEncoder(getStructEncoder([['discriminator', getU8Encoder()]]), value => ({\n        ...value,\n        discriminator: REVOKE_DISCRIMINATOR,\n    }));\n}\n\nexport function getRevokeInstructionDataDecoder(): FixedSizeDecoder<RevokeInstructionData> {\n    return getStructDecoder([['discriminator', getU8Decoder()]]);\n}\n\nexport function getRevokeInstructionDataCodec(): FixedSizeCodec<RevokeInstructionDataArgs, RevokeInstructionData> {\n    return combineCodec(getRevokeInstructionDataEncoder(), getRevokeInstructionDataDecoder());\n}\n\nexport type RevokeInput<TAccountSource extends string = string, TAccountOwner extends string = string> = {\n    /** The source account. */\n    source: Address<TAccountSource>;\n    /** The source account owner or its multisignature. */\n    owner: Address<TAccountOwner> | TransactionSigner<TAccountOwner>;\n    multiSigners?: Array<TransactionSigner>;\n};\n\nexport function getRevokeInstruction<\n    TAccountSource extends string,\n    TAccountOwner extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: RevokeInput<TAccountSource, TAccountOwner>,\n    config?: { programAddress?: TProgramAddress },\n): RevokeInstruction<\n    TProgramAddress,\n    TAccountSource,\n    (typeof input)['owner'] extends TransactionSigner<TAccountOwner>\n        ? ReadonlySignerAccount<TAccountOwner> & AccountSignerMeta<TAccountOwner>\n        : TAccountOwner\n> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        source: { value: input.source ?? null, isWritable: true },\n        owner: { value: input.owner ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    // Remaining accounts.\n    const remainingAccounts: AccountMeta[] = (args.multiSigners ?? []).map(signer => ({\n        address: signer.address,\n        role: AccountRole.READONLY_SIGNER,\n        signer,\n    }));\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [getAccountMeta(accounts.source), getAccountMeta(accounts.owner), ...remainingAccounts],\n        data: getRevokeInstructionDataEncoder().encode({}),\n        programAddress,\n    } as RevokeInstruction<\n        TProgramAddress,\n        TAccountSource,\n        (typeof input)['owner'] extends TransactionSigner<TAccountOwner>\n            ? ReadonlySignerAccount<TAccountOwner> & AccountSignerMeta<TAccountOwner>\n            : TAccountOwner\n    >);\n}\n\nexport type ParsedRevokeInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The source account. */\n        source: TAccountMetas[0];\n        /** The source account owner or its multisignature. */\n        owner: TAccountMetas[1];\n    };\n    data: RevokeInstructionData;\n};\n\nexport function parseRevokeInstruction<TProgram extends string, TAccountMetas extends readonly AccountMeta[]>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedRevokeInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 2) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { source: getNextAccount(), owner: getNextAccount() },\n        data: getRevokeInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    AccountRole,\n    combineCodec,\n    getAddressDecoder,\n    getAddressEncoder,\n    getOptionDecoder,\n    getOptionEncoder,\n    getStructDecoder,\n    getStructEncoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type AccountSignerMeta,\n    type Address,\n    type Codec,\n    type Decoder,\n    type Encoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type Option,\n    type OptionOrNullable,\n    type ReadonlyAccount,\n    type ReadonlySignerAccount,\n    type ReadonlyUint8Array,\n    type TransactionSigner,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\nimport { getAuthorityTypeDecoder, getAuthorityTypeEncoder, type AuthorityType, type AuthorityTypeArgs } from '../types';\n\nexport const SET_AUTHORITY_DISCRIMINATOR = 6;\n\nexport function getSetAuthorityDiscriminatorBytes() {\n    return getU8Encoder().encode(SET_AUTHORITY_DISCRIMINATOR);\n}\n\nexport type SetAuthorityInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountOwned extends string | AccountMeta<string> = string,\n    TAccountOwner extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [\n            TAccountOwned extends string ? WritableAccount<TAccountOwned> : TAccountOwned,\n            TAccountOwner extends string ? ReadonlyAccount<TAccountOwner> : TAccountOwner,\n            ...TRemainingAccounts,\n        ]\n    >;\n\nexport type SetAuthorityInstructionData = {\n    discriminator: number;\n    /** The type of authority to update. */\n    authorityType: AuthorityType;\n    /** The new authority */\n    newAuthority: Option<Address>;\n};\n\nexport type SetAuthorityInstructionDataArgs = {\n    /** The type of authority to update. */\n    authorityType: AuthorityTypeArgs;\n    /** The new authority */\n    newAuthority: OptionOrNullable<Address>;\n};\n\nexport function getSetAuthorityInstructionDataEncoder(): Encoder<SetAuthorityInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['authorityType', getAuthorityTypeEncoder()],\n            ['newAuthority', getOptionEncoder(getAddressEncoder())],\n        ]),\n        value => ({ ...value, discriminator: SET_AUTHORITY_DISCRIMINATOR }),\n    );\n}\n\nexport function getSetAuthorityInstructionDataDecoder(): Decoder<SetAuthorityInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['authorityType', getAuthorityTypeDecoder()],\n        ['newAuthority', getOptionDecoder(getAddressDecoder())],\n    ]);\n}\n\nexport function getSetAuthorityInstructionDataCodec(): Codec<\n    SetAuthorityInstructionDataArgs,\n    SetAuthorityInstructionData\n> {\n    return combineCodec(getSetAuthorityInstructionDataEncoder(), getSetAuthorityInstructionDataDecoder());\n}\n\nexport type SetAuthorityInput<TAccountOwned extends string = string, TAccountOwner extends string = string> = {\n    /** The mint or account to change the authority of. */\n    owned: Address<TAccountOwned>;\n    /** The current authority or the multisignature account of the mint or account to update. */\n    owner: Address<TAccountOwner> | TransactionSigner<TAccountOwner>;\n    authorityType: SetAuthorityInstructionDataArgs['authorityType'];\n    newAuthority: SetAuthorityInstructionDataArgs['newAuthority'];\n    multiSigners?: Array<TransactionSigner>;\n};\n\nexport function getSetAuthorityInstruction<\n    TAccountOwned extends string,\n    TAccountOwner extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: SetAuthorityInput<TAccountOwned, TAccountOwner>,\n    config?: { programAddress?: TProgramAddress },\n): SetAuthorityInstruction<\n    TProgramAddress,\n    TAccountOwned,\n    (typeof input)['owner'] extends TransactionSigner<TAccountOwner>\n        ? ReadonlySignerAccount<TAccountOwner> & AccountSignerMeta<TAccountOwner>\n        : TAccountOwner\n> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        owned: { value: input.owned ?? null, isWritable: true },\n        owner: { value: input.owner ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    // Remaining accounts.\n    const remainingAccounts: AccountMeta[] = (args.multiSigners ?? []).map(signer => ({\n        address: signer.address,\n        role: AccountRole.READONLY_SIGNER,\n        signer,\n    }));\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [getAccountMeta(accounts.owned), getAccountMeta(accounts.owner), ...remainingAccounts],\n        data: getSetAuthorityInstructionDataEncoder().encode(args as SetAuthorityInstructionDataArgs),\n        programAddress,\n    } as SetAuthorityInstruction<\n        TProgramAddress,\n        TAccountOwned,\n        (typeof input)['owner'] extends TransactionSigner<TAccountOwner>\n            ? ReadonlySignerAccount<TAccountOwner> & AccountSignerMeta<TAccountOwner>\n            : TAccountOwner\n    >);\n}\n\nexport type ParsedSetAuthorityInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The mint or account to change the authority of. */\n        owned: TAccountMetas[0];\n        /** The current authority or the multisignature account of the mint or account to update. */\n        owner: TAccountMetas[1];\n    };\n    data: SetAuthorityInstructionData;\n};\n\nexport function parseSetAuthorityInstruction<TProgram extends string, TAccountMetas extends readonly AccountMeta[]>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedSetAuthorityInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 2) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { owned: getNextAccount(), owner: getNextAccount() },\n        data: getSetAuthorityInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    AccountRole,\n    combineCodec,\n    getStructDecoder,\n    getStructEncoder,\n    getU16Decoder,\n    getU16Encoder,\n    getU64Decoder,\n    getU64Encoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type AccountSignerMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlyAccount,\n    type ReadonlySignerAccount,\n    type ReadonlyUint8Array,\n    type TransactionSigner,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const SET_TRANSFER_FEE_DISCRIMINATOR = 26;\n\nexport function getSetTransferFeeDiscriminatorBytes() {\n    return getU8Encoder().encode(SET_TRANSFER_FEE_DISCRIMINATOR);\n}\n\nexport const SET_TRANSFER_FEE_TRANSFER_FEE_DISCRIMINATOR = 5;\n\nexport function getSetTransferFeeTransferFeeDiscriminatorBytes() {\n    return getU8Encoder().encode(SET_TRANSFER_FEE_TRANSFER_FEE_DISCRIMINATOR);\n}\n\nexport type SetTransferFeeInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMint extends string | AccountMeta<string> = string,\n    TAccountTransferFeeConfigAuthority extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [\n            TAccountMint extends string ? WritableAccount<TAccountMint> : TAccountMint,\n            TAccountTransferFeeConfigAuthority extends string\n                ? ReadonlyAccount<TAccountTransferFeeConfigAuthority>\n                : TAccountTransferFeeConfigAuthority,\n            ...TRemainingAccounts,\n        ]\n    >;\n\nexport type SetTransferFeeInstructionData = {\n    discriminator: number;\n    transferFeeDiscriminator: number;\n    /** Amount of transfer collected as fees, expressed as basis points of the transfer amount. */\n    transferFeeBasisPoints: number;\n    /** Maximum fee assessed on transfers. */\n    maximumFee: bigint;\n};\n\nexport type SetTransferFeeInstructionDataArgs = {\n    /** Amount of transfer collected as fees, expressed as basis points of the transfer amount. */\n    transferFeeBasisPoints: number;\n    /** Maximum fee assessed on transfers. */\n    maximumFee: number | bigint;\n};\n\nexport function getSetTransferFeeInstructionDataEncoder(): FixedSizeEncoder<SetTransferFeeInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['transferFeeDiscriminator', getU8Encoder()],\n            ['transferFeeBasisPoints', getU16Encoder()],\n            ['maximumFee', getU64Encoder()],\n        ]),\n        value => ({\n            ...value,\n            discriminator: SET_TRANSFER_FEE_DISCRIMINATOR,\n            transferFeeDiscriminator: SET_TRANSFER_FEE_TRANSFER_FEE_DISCRIMINATOR,\n        }),\n    );\n}\n\nexport function getSetTransferFeeInstructionDataDecoder(): FixedSizeDecoder<SetTransferFeeInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['transferFeeDiscriminator', getU8Decoder()],\n        ['transferFeeBasisPoints', getU16Decoder()],\n        ['maximumFee', getU64Decoder()],\n    ]);\n}\n\nexport function getSetTransferFeeInstructionDataCodec(): FixedSizeCodec<\n    SetTransferFeeInstructionDataArgs,\n    SetTransferFeeInstructionData\n> {\n    return combineCodec(getSetTransferFeeInstructionDataEncoder(), getSetTransferFeeInstructionDataDecoder());\n}\n\nexport type SetTransferFeeInput<\n    TAccountMint extends string = string,\n    TAccountTransferFeeConfigAuthority extends string = string,\n> = {\n    /** The mint. */\n    mint: Address<TAccountMint>;\n    /** The mint's fee account owner or its multisignature account. */\n    transferFeeConfigAuthority:\n        | Address<TAccountTransferFeeConfigAuthority>\n        | TransactionSigner<TAccountTransferFeeConfigAuthority>;\n    transferFeeBasisPoints: SetTransferFeeInstructionDataArgs['transferFeeBasisPoints'];\n    maximumFee: SetTransferFeeInstructionDataArgs['maximumFee'];\n    multiSigners?: Array<TransactionSigner>;\n};\n\nexport function getSetTransferFeeInstruction<\n    TAccountMint extends string,\n    TAccountTransferFeeConfigAuthority extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: SetTransferFeeInput<TAccountMint, TAccountTransferFeeConfigAuthority>,\n    config?: { programAddress?: TProgramAddress },\n): SetTransferFeeInstruction<\n    TProgramAddress,\n    TAccountMint,\n    (typeof input)['transferFeeConfigAuthority'] extends TransactionSigner<TAccountTransferFeeConfigAuthority>\n        ? ReadonlySignerAccount<TAccountTransferFeeConfigAuthority> &\n              AccountSignerMeta<TAccountTransferFeeConfigAuthority>\n        : TAccountTransferFeeConfigAuthority\n> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        mint: { value: input.mint ?? null, isWritable: true },\n        transferFeeConfigAuthority: { value: input.transferFeeConfigAuthority ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    // Remaining accounts.\n    const remainingAccounts: AccountMeta[] = (args.multiSigners ?? []).map(signer => ({\n        address: signer.address,\n        role: AccountRole.READONLY_SIGNER,\n        signer,\n    }));\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [\n            getAccountMeta(accounts.mint),\n            getAccountMeta(accounts.transferFeeConfigAuthority),\n            ...remainingAccounts,\n        ],\n        data: getSetTransferFeeInstructionDataEncoder().encode(args as SetTransferFeeInstructionDataArgs),\n        programAddress,\n    } as SetTransferFeeInstruction<\n        TProgramAddress,\n        TAccountMint,\n        (typeof input)['transferFeeConfigAuthority'] extends TransactionSigner<TAccountTransferFeeConfigAuthority>\n            ? ReadonlySignerAccount<TAccountTransferFeeConfigAuthority> &\n                  AccountSignerMeta<TAccountTransferFeeConfigAuthority>\n            : TAccountTransferFeeConfigAuthority\n    >);\n}\n\nexport type ParsedSetTransferFeeInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The mint. */\n        mint: TAccountMetas[0];\n        /** The mint's fee account owner or its multisignature account. */\n        transferFeeConfigAuthority: TAccountMetas[1];\n    };\n    data: SetTransferFeeInstructionData;\n};\n\nexport function parseSetTransferFeeInstruction<TProgram extends string, TAccountMetas extends readonly AccountMeta[]>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedSetTransferFeeInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 2) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { mint: getNextAccount(), transferFeeConfigAuthority: getNextAccount() },\n        data: getSetTransferFeeInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    combineCodec,\n    getStructDecoder,\n    getStructEncoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlyUint8Array,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const SYNC_NATIVE_DISCRIMINATOR = 17;\n\nexport function getSyncNativeDiscriminatorBytes() {\n    return getU8Encoder().encode(SYNC_NATIVE_DISCRIMINATOR);\n}\n\nexport type SyncNativeInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountAccount extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [TAccountAccount extends string ? WritableAccount<TAccountAccount> : TAccountAccount, ...TRemainingAccounts]\n    >;\n\nexport type SyncNativeInstructionData = { discriminator: number };\n\nexport type SyncNativeInstructionDataArgs = {};\n\nexport function getSyncNativeInstructionDataEncoder(): FixedSizeEncoder<SyncNativeInstructionDataArgs> {\n    return transformEncoder(getStructEncoder([['discriminator', getU8Encoder()]]), value => ({\n        ...value,\n        discriminator: SYNC_NATIVE_DISCRIMINATOR,\n    }));\n}\n\nexport function getSyncNativeInstructionDataDecoder(): FixedSizeDecoder<SyncNativeInstructionData> {\n    return getStructDecoder([['discriminator', getU8Decoder()]]);\n}\n\nexport function getSyncNativeInstructionDataCodec(): FixedSizeCodec<\n    SyncNativeInstructionDataArgs,\n    SyncNativeInstructionData\n> {\n    return combineCodec(getSyncNativeInstructionDataEncoder(), getSyncNativeInstructionDataDecoder());\n}\n\nexport type SyncNativeInput<TAccountAccount extends string = string> = {\n    /** The native token account to sync with its underlying lamports. */\n    account: Address<TAccountAccount>;\n};\n\nexport function getSyncNativeInstruction<\n    TAccountAccount extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: SyncNativeInput<TAccountAccount>,\n    config?: { programAddress?: TProgramAddress },\n): SyncNativeInstruction<TProgramAddress, TAccountAccount> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = { account: { value: input.account ?? null, isWritable: true } };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [getAccountMeta(accounts.account)],\n        data: getSyncNativeInstructionDataEncoder().encode({}),\n        programAddress,\n    } as SyncNativeInstruction<TProgramAddress, TAccountAccount>);\n}\n\nexport type ParsedSyncNativeInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The native token account to sync with its underlying lamports. */\n        account: TAccountMetas[0];\n    };\n    data: SyncNativeInstructionData;\n};\n\nexport function parseSyncNativeInstruction<TProgram extends string, TAccountMetas extends readonly AccountMeta[]>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedSyncNativeInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 1) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { account: getNextAccount() },\n        data: getSyncNativeInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    AccountRole,\n    combineCodec,\n    getStructDecoder,\n    getStructEncoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type AccountSignerMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlyAccount,\n    type ReadonlySignerAccount,\n    type ReadonlyUint8Array,\n    type TransactionSigner,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const THAW_ACCOUNT_DISCRIMINATOR = 11;\n\nexport function getThawAccountDiscriminatorBytes() {\n    return getU8Encoder().encode(THAW_ACCOUNT_DISCRIMINATOR);\n}\n\nexport type ThawAccountInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountAccount extends string | AccountMeta<string> = string,\n    TAccountMint extends string | AccountMeta<string> = string,\n    TAccountOwner extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [\n            TAccountAccount extends string ? WritableAccount<TAccountAccount> : TAccountAccount,\n            TAccountMint extends string ? ReadonlyAccount<TAccountMint> : TAccountMint,\n            TAccountOwner extends string ? ReadonlyAccount<TAccountOwner> : TAccountOwner,\n            ...TRemainingAccounts,\n        ]\n    >;\n\nexport type ThawAccountInstructionData = { discriminator: number };\n\nexport type ThawAccountInstructionDataArgs = {};\n\nexport function getThawAccountInstructionDataEncoder(): FixedSizeEncoder<ThawAccountInstructionDataArgs> {\n    return transformEncoder(getStructEncoder([['discriminator', getU8Encoder()]]), value => ({\n        ...value,\n        discriminator: THAW_ACCOUNT_DISCRIMINATOR,\n    }));\n}\n\nexport function getThawAccountInstructionDataDecoder(): FixedSizeDecoder<ThawAccountInstructionData> {\n    return getStructDecoder([['discriminator', getU8Decoder()]]);\n}\n\nexport function getThawAccountInstructionDataCodec(): FixedSizeCodec<\n    ThawAccountInstructionDataArgs,\n    ThawAccountInstructionData\n> {\n    return combineCodec(getThawAccountInstructionDataEncoder(), getThawAccountInstructionDataDecoder());\n}\n\nexport type ThawAccountInput<\n    TAccountAccount extends string = string,\n    TAccountMint extends string = string,\n    TAccountOwner extends string = string,\n> = {\n    /** The account to thaw. */\n    account: Address<TAccountAccount>;\n    /** The token mint. */\n    mint: Address<TAccountMint>;\n    /** The mint freeze authority or its multisignature account. */\n    owner: Address<TAccountOwner> | TransactionSigner<TAccountOwner>;\n    multiSigners?: Array<TransactionSigner>;\n};\n\nexport function getThawAccountInstruction<\n    TAccountAccount extends string,\n    TAccountMint extends string,\n    TAccountOwner extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: ThawAccountInput<TAccountAccount, TAccountMint, TAccountOwner>,\n    config?: { programAddress?: TProgramAddress },\n): ThawAccountInstruction<\n    TProgramAddress,\n    TAccountAccount,\n    TAccountMint,\n    (typeof input)['owner'] extends TransactionSigner<TAccountOwner>\n        ? ReadonlySignerAccount<TAccountOwner> & AccountSignerMeta<TAccountOwner>\n        : TAccountOwner\n> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        account: { value: input.account ?? null, isWritable: true },\n        mint: { value: input.mint ?? null, isWritable: false },\n        owner: { value: input.owner ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    // Remaining accounts.\n    const remainingAccounts: AccountMeta[] = (args.multiSigners ?? []).map(signer => ({\n        address: signer.address,\n        role: AccountRole.READONLY_SIGNER,\n        signer,\n    }));\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [\n            getAccountMeta(accounts.account),\n            getAccountMeta(accounts.mint),\n            getAccountMeta(accounts.owner),\n            ...remainingAccounts,\n        ],\n        data: getThawAccountInstructionDataEncoder().encode({}),\n        programAddress,\n    } as ThawAccountInstruction<\n        TProgramAddress,\n        TAccountAccount,\n        TAccountMint,\n        (typeof input)['owner'] extends TransactionSigner<TAccountOwner>\n            ? ReadonlySignerAccount<TAccountOwner> & AccountSignerMeta<TAccountOwner>\n            : TAccountOwner\n    >);\n}\n\nexport type ParsedThawAccountInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The account to thaw. */\n        account: TAccountMetas[0];\n        /** The token mint. */\n        mint: TAccountMetas[1];\n        /** The mint freeze authority or its multisignature account. */\n        owner: TAccountMetas[2];\n    };\n    data: ThawAccountInstructionData;\n};\n\nexport function parseThawAccountInstruction<TProgram extends string, TAccountMetas extends readonly AccountMeta[]>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedThawAccountInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 3) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { account: getNextAccount(), mint: getNextAccount(), owner: getNextAccount() },\n        data: getThawAccountInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    AccountRole,\n    combineCodec,\n    getStructDecoder,\n    getStructEncoder,\n    getU64Decoder,\n    getU64Encoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type AccountSignerMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlyAccount,\n    type ReadonlySignerAccount,\n    type ReadonlyUint8Array,\n    type TransactionSigner,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const TRANSFER_DISCRIMINATOR = 3;\n\nexport function getTransferDiscriminatorBytes() {\n    return getU8Encoder().encode(TRANSFER_DISCRIMINATOR);\n}\n\nexport type TransferInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountSource extends string | AccountMeta<string> = string,\n    TAccountDestination extends string | AccountMeta<string> = string,\n    TAccountAuthority extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [\n            TAccountSource extends string ? WritableAccount<TAccountSource> : TAccountSource,\n            TAccountDestination extends string ? WritableAccount<TAccountDestination> : TAccountDestination,\n            TAccountAuthority extends string ? ReadonlyAccount<TAccountAuthority> : TAccountAuthority,\n            ...TRemainingAccounts,\n        ]\n    >;\n\nexport type TransferInstructionData = {\n    discriminator: number;\n    /** The amount of tokens to transfer. */\n    amount: bigint;\n};\n\nexport type TransferInstructionDataArgs = {\n    /** The amount of tokens to transfer. */\n    amount: number | bigint;\n};\n\nexport function getTransferInstructionDataEncoder(): FixedSizeEncoder<TransferInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['amount', getU64Encoder()],\n        ]),\n        value => ({ ...value, discriminator: TRANSFER_DISCRIMINATOR }),\n    );\n}\n\nexport function getTransferInstructionDataDecoder(): FixedSizeDecoder<TransferInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['amount', getU64Decoder()],\n    ]);\n}\n\nexport function getTransferInstructionDataCodec(): FixedSizeCodec<\n    TransferInstructionDataArgs,\n    TransferInstructionData\n> {\n    return combineCodec(getTransferInstructionDataEncoder(), getTransferInstructionDataDecoder());\n}\n\nexport type TransferInput<\n    TAccountSource extends string = string,\n    TAccountDestination extends string = string,\n    TAccountAuthority extends string = string,\n> = {\n    /** The source account. */\n    source: Address<TAccountSource>;\n    /** The destination account. */\n    destination: Address<TAccountDestination>;\n    /** The source account's owner/delegate or its multisignature account. */\n    authority: Address<TAccountAuthority> | TransactionSigner<TAccountAuthority>;\n    amount: TransferInstructionDataArgs['amount'];\n    multiSigners?: Array<TransactionSigner>;\n};\n\nexport function getTransferInstruction<\n    TAccountSource extends string,\n    TAccountDestination extends string,\n    TAccountAuthority extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: TransferInput<TAccountSource, TAccountDestination, TAccountAuthority>,\n    config?: { programAddress?: TProgramAddress },\n): TransferInstruction<\n    TProgramAddress,\n    TAccountSource,\n    TAccountDestination,\n    (typeof input)['authority'] extends TransactionSigner<TAccountAuthority>\n        ? ReadonlySignerAccount<TAccountAuthority> & AccountSignerMeta<TAccountAuthority>\n        : TAccountAuthority\n> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        source: { value: input.source ?? null, isWritable: true },\n        destination: { value: input.destination ?? null, isWritable: true },\n        authority: { value: input.authority ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    // Remaining accounts.\n    const remainingAccounts: AccountMeta[] = (args.multiSigners ?? []).map(signer => ({\n        address: signer.address,\n        role: AccountRole.READONLY_SIGNER,\n        signer,\n    }));\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [\n            getAccountMeta(accounts.source),\n            getAccountMeta(accounts.destination),\n            getAccountMeta(accounts.authority),\n            ...remainingAccounts,\n        ],\n        data: getTransferInstructionDataEncoder().encode(args as TransferInstructionDataArgs),\n        programAddress,\n    } as TransferInstruction<\n        TProgramAddress,\n        TAccountSource,\n        TAccountDestination,\n        (typeof input)['authority'] extends TransactionSigner<TAccountAuthority>\n            ? ReadonlySignerAccount<TAccountAuthority> & AccountSignerMeta<TAccountAuthority>\n            : TAccountAuthority\n    >);\n}\n\nexport type ParsedTransferInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The source account. */\n        source: TAccountMetas[0];\n        /** The destination account. */\n        destination: TAccountMetas[1];\n        /** The source account's owner/delegate or its multisignature account. */\n        authority: TAccountMetas[2];\n    };\n    data: TransferInstructionData;\n};\n\nexport function parseTransferInstruction<TProgram extends string, TAccountMetas extends readonly AccountMeta[]>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedTransferInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 3) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { source: getNextAccount(), destination: getNextAccount(), authority: getNextAccount() },\n        data: getTransferInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    AccountRole,\n    combineCodec,\n    getStructDecoder,\n    getStructEncoder,\n    getU64Decoder,\n    getU64Encoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type AccountSignerMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlyAccount,\n    type ReadonlySignerAccount,\n    type ReadonlyUint8Array,\n    type TransactionSigner,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const TRANSFER_CHECKED_DISCRIMINATOR = 12;\n\nexport function getTransferCheckedDiscriminatorBytes() {\n    return getU8Encoder().encode(TRANSFER_CHECKED_DISCRIMINATOR);\n}\n\nexport type TransferCheckedInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountSource extends string | AccountMeta<string> = string,\n    TAccountMint extends string | AccountMeta<string> = string,\n    TAccountDestination extends string | AccountMeta<string> = string,\n    TAccountAuthority extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [\n            TAccountSource extends string ? WritableAccount<TAccountSource> : TAccountSource,\n            TAccountMint extends string ? ReadonlyAccount<TAccountMint> : TAccountMint,\n            TAccountDestination extends string ? WritableAccount<TAccountDestination> : TAccountDestination,\n            TAccountAuthority extends string ? ReadonlyAccount<TAccountAuthority> : TAccountAuthority,\n            ...TRemainingAccounts,\n        ]\n    >;\n\nexport type TransferCheckedInstructionData = {\n    discriminator: number;\n    /** The amount of tokens to transfer. */\n    amount: bigint;\n    /** Expected number of base 10 digits to the right of the decimal place. */\n    decimals: number;\n};\n\nexport type TransferCheckedInstructionDataArgs = {\n    /** The amount of tokens to transfer. */\n    amount: number | bigint;\n    /** Expected number of base 10 digits to the right of the decimal place. */\n    decimals: number;\n};\n\nexport function getTransferCheckedInstructionDataEncoder(): FixedSizeEncoder<TransferCheckedInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['amount', getU64Encoder()],\n            ['decimals', getU8Encoder()],\n        ]),\n        value => ({ ...value, discriminator: TRANSFER_CHECKED_DISCRIMINATOR }),\n    );\n}\n\nexport function getTransferCheckedInstructionDataDecoder(): FixedSizeDecoder<TransferCheckedInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['amount', getU64Decoder()],\n        ['decimals', getU8Decoder()],\n    ]);\n}\n\nexport function getTransferCheckedInstructionDataCodec(): FixedSizeCodec<\n    TransferCheckedInstructionDataArgs,\n    TransferCheckedInstructionData\n> {\n    return combineCodec(getTransferCheckedInstructionDataEncoder(), getTransferCheckedInstructionDataDecoder());\n}\n\nexport type TransferCheckedInput<\n    TAccountSource extends string = string,\n    TAccountMint extends string = string,\n    TAccountDestination extends string = string,\n    TAccountAuthority extends string = string,\n> = {\n    /** The source account. */\n    source: Address<TAccountSource>;\n    /** The token mint. */\n    mint: Address<TAccountMint>;\n    /** The destination account. */\n    destination: Address<TAccountDestination>;\n    /** The source account's owner/delegate or its multisignature account. */\n    authority: Address<TAccountAuthority> | TransactionSigner<TAccountAuthority>;\n    amount: TransferCheckedInstructionDataArgs['amount'];\n    decimals: TransferCheckedInstructionDataArgs['decimals'];\n    multiSigners?: Array<TransactionSigner>;\n};\n\nexport function getTransferCheckedInstruction<\n    TAccountSource extends string,\n    TAccountMint extends string,\n    TAccountDestination extends string,\n    TAccountAuthority extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: TransferCheckedInput<TAccountSource, TAccountMint, TAccountDestination, TAccountAuthority>,\n    config?: { programAddress?: TProgramAddress },\n): TransferCheckedInstruction<\n    TProgramAddress,\n    TAccountSource,\n    TAccountMint,\n    TAccountDestination,\n    (typeof input)['authority'] extends TransactionSigner<TAccountAuthority>\n        ? ReadonlySignerAccount<TAccountAuthority> & AccountSignerMeta<TAccountAuthority>\n        : TAccountAuthority\n> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        source: { value: input.source ?? null, isWritable: true },\n        mint: { value: input.mint ?? null, isWritable: false },\n        destination: { value: input.destination ?? null, isWritable: true },\n        authority: { value: input.authority ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    // Remaining accounts.\n    const remainingAccounts: AccountMeta[] = (args.multiSigners ?? []).map(signer => ({\n        address: signer.address,\n        role: AccountRole.READONLY_SIGNER,\n        signer,\n    }));\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [\n            getAccountMeta(accounts.source),\n            getAccountMeta(accounts.mint),\n            getAccountMeta(accounts.destination),\n            getAccountMeta(accounts.authority),\n            ...remainingAccounts,\n        ],\n        data: getTransferCheckedInstructionDataEncoder().encode(args as TransferCheckedInstructionDataArgs),\n        programAddress,\n    } as TransferCheckedInstruction<\n        TProgramAddress,\n        TAccountSource,\n        TAccountMint,\n        TAccountDestination,\n        (typeof input)['authority'] extends TransactionSigner<TAccountAuthority>\n            ? ReadonlySignerAccount<TAccountAuthority> & AccountSignerMeta<TAccountAuthority>\n            : TAccountAuthority\n    >);\n}\n\nexport type ParsedTransferCheckedInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The source account. */\n        source: TAccountMetas[0];\n        /** The token mint. */\n        mint: TAccountMetas[1];\n        /** The destination account. */\n        destination: TAccountMetas[2];\n        /** The source account's owner/delegate or its multisignature account. */\n        authority: TAccountMetas[3];\n    };\n    data: TransferCheckedInstructionData;\n};\n\nexport function parseTransferCheckedInstruction<TProgram extends string, TAccountMetas extends readonly AccountMeta[]>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedTransferCheckedInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 4) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: {\n            source: getNextAccount(),\n            mint: getNextAccount(),\n            destination: getNextAccount(),\n            authority: getNextAccount(),\n        },\n        data: getTransferCheckedInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    AccountRole,\n    combineCodec,\n    getStructDecoder,\n    getStructEncoder,\n    getU64Decoder,\n    getU64Encoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type AccountSignerMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlyAccount,\n    type ReadonlySignerAccount,\n    type ReadonlyUint8Array,\n    type TransactionSigner,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const TRANSFER_CHECKED_WITH_FEE_DISCRIMINATOR = 26;\n\nexport function getTransferCheckedWithFeeDiscriminatorBytes() {\n    return getU8Encoder().encode(TRANSFER_CHECKED_WITH_FEE_DISCRIMINATOR);\n}\n\nexport const TRANSFER_CHECKED_WITH_FEE_TRANSFER_FEE_DISCRIMINATOR = 1;\n\nexport function getTransferCheckedWithFeeTransferFeeDiscriminatorBytes() {\n    return getU8Encoder().encode(TRANSFER_CHECKED_WITH_FEE_TRANSFER_FEE_DISCRIMINATOR);\n}\n\nexport type TransferCheckedWithFeeInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountSource extends string | AccountMeta<string> = string,\n    TAccountMint extends string | AccountMeta<string> = string,\n    TAccountDestination extends string | AccountMeta<string> = string,\n    TAccountAuthority extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [\n            TAccountSource extends string ? WritableAccount<TAccountSource> : TAccountSource,\n            TAccountMint extends string ? ReadonlyAccount<TAccountMint> : TAccountMint,\n            TAccountDestination extends string ? WritableAccount<TAccountDestination> : TAccountDestination,\n            TAccountAuthority extends string ? ReadonlyAccount<TAccountAuthority> : TAccountAuthority,\n            ...TRemainingAccounts,\n        ]\n    >;\n\nexport type TransferCheckedWithFeeInstructionData = {\n    discriminator: number;\n    transferFeeDiscriminator: number;\n    /** The amount of tokens to transfer. */\n    amount: bigint;\n    /** Expected number of base 10 digits to the right of the decimal place. */\n    decimals: number;\n    /**\n     * Expected fee assessed on this transfer, calculated off-chain based\n     * on the transfer_fee_basis_points and maximum_fee of the mint. May\n     * be 0 for a mint without a configured transfer fee.\n     */\n    fee: bigint;\n};\n\nexport type TransferCheckedWithFeeInstructionDataArgs = {\n    /** The amount of tokens to transfer. */\n    amount: number | bigint;\n    /** Expected number of base 10 digits to the right of the decimal place. */\n    decimals: number;\n    /**\n     * Expected fee assessed on this transfer, calculated off-chain based\n     * on the transfer_fee_basis_points and maximum_fee of the mint. May\n     * be 0 for a mint without a configured transfer fee.\n     */\n    fee: number | bigint;\n};\n\nexport function getTransferCheckedWithFeeInstructionDataEncoder(): FixedSizeEncoder<TransferCheckedWithFeeInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['transferFeeDiscriminator', getU8Encoder()],\n            ['amount', getU64Encoder()],\n            ['decimals', getU8Encoder()],\n            ['fee', getU64Encoder()],\n        ]),\n        value => ({\n            ...value,\n            discriminator: TRANSFER_CHECKED_WITH_FEE_DISCRIMINATOR,\n            transferFeeDiscriminator: TRANSFER_CHECKED_WITH_FEE_TRANSFER_FEE_DISCRIMINATOR,\n        }),\n    );\n}\n\nexport function getTransferCheckedWithFeeInstructionDataDecoder(): FixedSizeDecoder<TransferCheckedWithFeeInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['transferFeeDiscriminator', getU8Decoder()],\n        ['amount', getU64Decoder()],\n        ['decimals', getU8Decoder()],\n        ['fee', getU64Decoder()],\n    ]);\n}\n\nexport function getTransferCheckedWithFeeInstructionDataCodec(): FixedSizeCodec<\n    TransferCheckedWithFeeInstructionDataArgs,\n    TransferCheckedWithFeeInstructionData\n> {\n    return combineCodec(\n        getTransferCheckedWithFeeInstructionDataEncoder(),\n        getTransferCheckedWithFeeInstructionDataDecoder(),\n    );\n}\n\nexport type TransferCheckedWithFeeInput<\n    TAccountSource extends string = string,\n    TAccountMint extends string = string,\n    TAccountDestination extends string = string,\n    TAccountAuthority extends string = string,\n> = {\n    /** The source account. May include the `TransferFeeAmount` extension. */\n    source: Address<TAccountSource>;\n    /** The token mint. May include the `TransferFeeConfig` extension. */\n    mint: Address<TAccountMint>;\n    /** The destination account. May include the `TransferFeeAmount` extension. */\n    destination: Address<TAccountDestination>;\n    /** The source account's owner/delegate or its multisignature account. */\n    authority: Address<TAccountAuthority> | TransactionSigner<TAccountAuthority>;\n    amount: TransferCheckedWithFeeInstructionDataArgs['amount'];\n    decimals: TransferCheckedWithFeeInstructionDataArgs['decimals'];\n    fee: TransferCheckedWithFeeInstructionDataArgs['fee'];\n    multiSigners?: Array<TransactionSigner>;\n};\n\nexport function getTransferCheckedWithFeeInstruction<\n    TAccountSource extends string,\n    TAccountMint extends string,\n    TAccountDestination extends string,\n    TAccountAuthority extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: TransferCheckedWithFeeInput<TAccountSource, TAccountMint, TAccountDestination, TAccountAuthority>,\n    config?: { programAddress?: TProgramAddress },\n): TransferCheckedWithFeeInstruction<\n    TProgramAddress,\n    TAccountSource,\n    TAccountMint,\n    TAccountDestination,\n    (typeof input)['authority'] extends TransactionSigner<TAccountAuthority>\n        ? ReadonlySignerAccount<TAccountAuthority> & AccountSignerMeta<TAccountAuthority>\n        : TAccountAuthority\n> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        source: { value: input.source ?? null, isWritable: true },\n        mint: { value: input.mint ?? null, isWritable: false },\n        destination: { value: input.destination ?? null, isWritable: true },\n        authority: { value: input.authority ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    // Remaining accounts.\n    const remainingAccounts: AccountMeta[] = (args.multiSigners ?? []).map(signer => ({\n        address: signer.address,\n        role: AccountRole.READONLY_SIGNER,\n        signer,\n    }));\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [\n            getAccountMeta(accounts.source),\n            getAccountMeta(accounts.mint),\n            getAccountMeta(accounts.destination),\n            getAccountMeta(accounts.authority),\n            ...remainingAccounts,\n        ],\n        data: getTransferCheckedWithFeeInstructionDataEncoder().encode(\n            args as TransferCheckedWithFeeInstructionDataArgs,\n        ),\n        programAddress,\n    } as TransferCheckedWithFeeInstruction<\n        TProgramAddress,\n        TAccountSource,\n        TAccountMint,\n        TAccountDestination,\n        (typeof input)['authority'] extends TransactionSigner<TAccountAuthority>\n            ? ReadonlySignerAccount<TAccountAuthority> & AccountSignerMeta<TAccountAuthority>\n            : TAccountAuthority\n    >);\n}\n\nexport type ParsedTransferCheckedWithFeeInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The source account. May include the `TransferFeeAmount` extension. */\n        source: TAccountMetas[0];\n        /** The token mint. May include the `TransferFeeConfig` extension. */\n        mint: TAccountMetas[1];\n        /** The destination account. May include the `TransferFeeAmount` extension. */\n        destination: TAccountMetas[2];\n        /** The source account's owner/delegate or its multisignature account. */\n        authority: TAccountMetas[3];\n    };\n    data: TransferCheckedWithFeeInstructionData;\n};\n\nexport function parseTransferCheckedWithFeeInstruction<\n    TProgram extends string,\n    TAccountMetas extends readonly AccountMeta[],\n>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedTransferCheckedWithFeeInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 4) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: {\n            source: getNextAccount(),\n            mint: getNextAccount(),\n            destination: getNextAccount(),\n            authority: getNextAccount(),\n        },\n        data: getTransferCheckedWithFeeInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    combineCodec,\n    getStructDecoder,\n    getStructEncoder,\n    getU8Decoder,\n    getU8Encoder,\n    getUtf8Decoder,\n    getUtf8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type Address,\n    type Codec,\n    type Decoder,\n    type Encoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlyAccount,\n    type ReadonlyUint8Array,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const UI_AMOUNT_TO_AMOUNT_DISCRIMINATOR = 24;\n\nexport function getUiAmountToAmountDiscriminatorBytes() {\n    return getU8Encoder().encode(UI_AMOUNT_TO_AMOUNT_DISCRIMINATOR);\n}\n\nexport type UiAmountToAmountInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMint extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [TAccountMint extends string ? ReadonlyAccount<TAccountMint> : TAccountMint, ...TRemainingAccounts]\n    >;\n\nexport type UiAmountToAmountInstructionData = {\n    discriminator: number;\n    /** The ui_amount of tokens to reformat. */\n    uiAmount: string;\n};\n\nexport type UiAmountToAmountInstructionDataArgs = {\n    /** The ui_amount of tokens to reformat. */\n    uiAmount: string;\n};\n\nexport function getUiAmountToAmountInstructionDataEncoder(): Encoder<UiAmountToAmountInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['uiAmount', getUtf8Encoder()],\n        ]),\n        value => ({ ...value, discriminator: UI_AMOUNT_TO_AMOUNT_DISCRIMINATOR }),\n    );\n}\n\nexport function getUiAmountToAmountInstructionDataDecoder(): Decoder<UiAmountToAmountInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['uiAmount', getUtf8Decoder()],\n    ]);\n}\n\nexport function getUiAmountToAmountInstructionDataCodec(): Codec<\n    UiAmountToAmountInstructionDataArgs,\n    UiAmountToAmountInstructionData\n> {\n    return combineCodec(getUiAmountToAmountInstructionDataEncoder(), getUiAmountToAmountInstructionDataDecoder());\n}\n\nexport type UiAmountToAmountInput<TAccountMint extends string = string> = {\n    /** The mint to calculate for. */\n    mint: Address<TAccountMint>;\n    uiAmount: UiAmountToAmountInstructionDataArgs['uiAmount'];\n};\n\nexport function getUiAmountToAmountInstruction<\n    TAccountMint extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: UiAmountToAmountInput<TAccountMint>,\n    config?: { programAddress?: TProgramAddress },\n): UiAmountToAmountInstruction<TProgramAddress, TAccountMint> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = { mint: { value: input.mint ?? null, isWritable: false } };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [getAccountMeta(accounts.mint)],\n        data: getUiAmountToAmountInstructionDataEncoder().encode(args as UiAmountToAmountInstructionDataArgs),\n        programAddress,\n    } as UiAmountToAmountInstruction<TProgramAddress, TAccountMint>);\n}\n\nexport type ParsedUiAmountToAmountInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The mint to calculate for. */\n        mint: TAccountMetas[0];\n    };\n    data: UiAmountToAmountInstructionData;\n};\n\nexport function parseUiAmountToAmountInstruction<TProgram extends string, TAccountMetas extends readonly AccountMeta[]>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedUiAmountToAmountInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 1) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { mint: getNextAccount() },\n        data: getUiAmountToAmountInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    AccountRole,\n    combineCodec,\n    getOptionDecoder,\n    getOptionEncoder,\n    getStructDecoder,\n    getStructEncoder,\n    getU64Decoder,\n    getU64Encoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type AccountSignerMeta,\n    type Address,\n    type Codec,\n    type Decoder,\n    type Encoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type Option,\n    type OptionOrNullable,\n    type ReadonlyAccount,\n    type ReadonlySignerAccount,\n    type ReadonlyUint8Array,\n    type TransactionSigner,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const UNWRAP_LAMPORTS_DISCRIMINATOR = 45;\n\nexport function getUnwrapLamportsDiscriminatorBytes() {\n    return getU8Encoder().encode(UNWRAP_LAMPORTS_DISCRIMINATOR);\n}\n\nexport type UnwrapLamportsInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountSource extends string | AccountMeta<string> = string,\n    TAccountDestination extends string | AccountMeta<string> = string,\n    TAccountAuthority extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [\n            TAccountSource extends string ? WritableAccount<TAccountSource> : TAccountSource,\n            TAccountDestination extends string ? WritableAccount<TAccountDestination> : TAccountDestination,\n            TAccountAuthority extends string ? ReadonlyAccount<TAccountAuthority> : TAccountAuthority,\n            ...TRemainingAccounts,\n        ]\n    >;\n\nexport type UnwrapLamportsInstructionData = {\n    discriminator: number;\n    /** The amount of lamports to transfer. */\n    amount: Option<bigint>;\n};\n\nexport type UnwrapLamportsInstructionDataArgs = {\n    /** The amount of lamports to transfer. */\n    amount: OptionOrNullable<number | bigint>;\n};\n\nexport function getUnwrapLamportsInstructionDataEncoder(): Encoder<UnwrapLamportsInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['amount', getOptionEncoder(getU64Encoder())],\n        ]),\n        value => ({ ...value, discriminator: UNWRAP_LAMPORTS_DISCRIMINATOR }),\n    );\n}\n\nexport function getUnwrapLamportsInstructionDataDecoder(): Decoder<UnwrapLamportsInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['amount', getOptionDecoder(getU64Decoder())],\n    ]);\n}\n\nexport function getUnwrapLamportsInstructionDataCodec(): Codec<\n    UnwrapLamportsInstructionDataArgs,\n    UnwrapLamportsInstructionData\n> {\n    return combineCodec(getUnwrapLamportsInstructionDataEncoder(), getUnwrapLamportsInstructionDataDecoder());\n}\n\nexport type UnwrapLamportsInput<\n    TAccountSource extends string = string,\n    TAccountDestination extends string = string,\n    TAccountAuthority extends string = string,\n> = {\n    /** The source account. */\n    source: Address<TAccountSource>;\n    /** The destination account. */\n    destination: Address<TAccountDestination>;\n    /** The source account's owner or its multisignature account. */\n    authority: Address<TAccountAuthority> | TransactionSigner<TAccountAuthority>;\n    amount: UnwrapLamportsInstructionDataArgs['amount'];\n    multiSigners?: Array<TransactionSigner>;\n};\n\nexport function getUnwrapLamportsInstruction<\n    TAccountSource extends string,\n    TAccountDestination extends string,\n    TAccountAuthority extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: UnwrapLamportsInput<TAccountSource, TAccountDestination, TAccountAuthority>,\n    config?: { programAddress?: TProgramAddress },\n): UnwrapLamportsInstruction<\n    TProgramAddress,\n    TAccountSource,\n    TAccountDestination,\n    (typeof input)['authority'] extends TransactionSigner<TAccountAuthority>\n        ? ReadonlySignerAccount<TAccountAuthority> & AccountSignerMeta<TAccountAuthority>\n        : TAccountAuthority\n> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        source: { value: input.source ?? null, isWritable: true },\n        destination: { value: input.destination ?? null, isWritable: true },\n        authority: { value: input.authority ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    // Remaining accounts.\n    const remainingAccounts: AccountMeta[] = (args.multiSigners ?? []).map(signer => ({\n        address: signer.address,\n        role: AccountRole.READONLY_SIGNER,\n        signer,\n    }));\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [\n            getAccountMeta(accounts.source),\n            getAccountMeta(accounts.destination),\n            getAccountMeta(accounts.authority),\n            ...remainingAccounts,\n        ],\n        data: getUnwrapLamportsInstructionDataEncoder().encode(args as UnwrapLamportsInstructionDataArgs),\n        programAddress,\n    } as UnwrapLamportsInstruction<\n        TProgramAddress,\n        TAccountSource,\n        TAccountDestination,\n        (typeof input)['authority'] extends TransactionSigner<TAccountAuthority>\n            ? ReadonlySignerAccount<TAccountAuthority> & AccountSignerMeta<TAccountAuthority>\n            : TAccountAuthority\n    >);\n}\n\nexport type ParsedUnwrapLamportsInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The source account. */\n        source: TAccountMetas[0];\n        /** The destination account. */\n        destination: TAccountMetas[1];\n        /** The source account's owner or its multisignature account. */\n        authority: TAccountMetas[2];\n    };\n    data: UnwrapLamportsInstructionData;\n};\n\nexport function parseUnwrapLamportsInstruction<TProgram extends string, TAccountMetas extends readonly AccountMeta[]>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedUnwrapLamportsInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 3) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { source: getNextAccount(), destination: getNextAccount(), authority: getNextAccount() },\n        data: getUnwrapLamportsInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    combineCodec,\n    getAddressDecoder,\n    getAddressEncoder,\n    getBooleanDecoder,\n    getBooleanEncoder,\n    getOptionDecoder,\n    getOptionEncoder,\n    getStructDecoder,\n    getStructEncoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type AccountSignerMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type Option,\n    type OptionOrNullable,\n    type ReadonlySignerAccount,\n    type ReadonlyUint8Array,\n    type TransactionSigner,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const UPDATE_CONFIDENTIAL_TRANSFER_MINT_DISCRIMINATOR = 27;\n\nexport function getUpdateConfidentialTransferMintDiscriminatorBytes() {\n    return getU8Encoder().encode(UPDATE_CONFIDENTIAL_TRANSFER_MINT_DISCRIMINATOR);\n}\n\nexport const UPDATE_CONFIDENTIAL_TRANSFER_MINT_CONFIDENTIAL_TRANSFER_DISCRIMINATOR = 1;\n\nexport function getUpdateConfidentialTransferMintConfidentialTransferDiscriminatorBytes() {\n    return getU8Encoder().encode(UPDATE_CONFIDENTIAL_TRANSFER_MINT_CONFIDENTIAL_TRANSFER_DISCRIMINATOR);\n}\n\nexport type UpdateConfidentialTransferMintInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMint extends string | AccountMeta<string> = string,\n    TAccountAuthority extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [\n            TAccountMint extends string ? WritableAccount<TAccountMint> : TAccountMint,\n            TAccountAuthority extends string\n                ? ReadonlySignerAccount<TAccountAuthority> & AccountSignerMeta<TAccountAuthority>\n                : TAccountAuthority,\n            ...TRemainingAccounts,\n        ]\n    >;\n\nexport type UpdateConfidentialTransferMintInstructionData = {\n    discriminator: number;\n    confidentialTransferDiscriminator: number;\n    /**\n     * Determines if newly configured accounts must be approved by the\n     * `authority` before they may be used by the user.\n     */\n    autoApproveNewAccounts: boolean;\n    /** New authority to decode any transfer amount in a confidential transfer. */\n    auditorElgamalPubkey: Option<Address>;\n};\n\nexport type UpdateConfidentialTransferMintInstructionDataArgs = {\n    /**\n     * Determines if newly configured accounts must be approved by the\n     * `authority` before they may be used by the user.\n     */\n    autoApproveNewAccounts: boolean;\n    /** New authority to decode any transfer amount in a confidential transfer. */\n    auditorElgamalPubkey: OptionOrNullable<Address>;\n};\n\nexport function getUpdateConfidentialTransferMintInstructionDataEncoder(): FixedSizeEncoder<UpdateConfidentialTransferMintInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['confidentialTransferDiscriminator', getU8Encoder()],\n            ['autoApproveNewAccounts', getBooleanEncoder()],\n            ['auditorElgamalPubkey', getOptionEncoder(getAddressEncoder(), { prefix: null, noneValue: 'zeroes' })],\n        ]),\n        value => ({\n            ...value,\n            discriminator: UPDATE_CONFIDENTIAL_TRANSFER_MINT_DISCRIMINATOR,\n            confidentialTransferDiscriminator: UPDATE_CONFIDENTIAL_TRANSFER_MINT_CONFIDENTIAL_TRANSFER_DISCRIMINATOR,\n        }),\n    );\n}\n\nexport function getUpdateConfidentialTransferMintInstructionDataDecoder(): FixedSizeDecoder<UpdateConfidentialTransferMintInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['confidentialTransferDiscriminator', getU8Decoder()],\n        ['autoApproveNewAccounts', getBooleanDecoder()],\n        ['auditorElgamalPubkey', getOptionDecoder(getAddressDecoder(), { prefix: null, noneValue: 'zeroes' })],\n    ]);\n}\n\nexport function getUpdateConfidentialTransferMintInstructionDataCodec(): FixedSizeCodec<\n    UpdateConfidentialTransferMintInstructionDataArgs,\n    UpdateConfidentialTransferMintInstructionData\n> {\n    return combineCodec(\n        getUpdateConfidentialTransferMintInstructionDataEncoder(),\n        getUpdateConfidentialTransferMintInstructionDataDecoder(),\n    );\n}\n\nexport type UpdateConfidentialTransferMintInput<\n    TAccountMint extends string = string,\n    TAccountAuthority extends string = string,\n> = {\n    /** The SPL Token mint. */\n    mint: Address<TAccountMint>;\n    /** Confidential transfer mint authority. */\n    authority: TransactionSigner<TAccountAuthority>;\n    autoApproveNewAccounts: UpdateConfidentialTransferMintInstructionDataArgs['autoApproveNewAccounts'];\n    auditorElgamalPubkey: UpdateConfidentialTransferMintInstructionDataArgs['auditorElgamalPubkey'];\n};\n\nexport function getUpdateConfidentialTransferMintInstruction<\n    TAccountMint extends string,\n    TAccountAuthority extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: UpdateConfidentialTransferMintInput<TAccountMint, TAccountAuthority>,\n    config?: { programAddress?: TProgramAddress },\n): UpdateConfidentialTransferMintInstruction<TProgramAddress, TAccountMint, TAccountAuthority> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        mint: { value: input.mint ?? null, isWritable: true },\n        authority: { value: input.authority ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [getAccountMeta(accounts.mint), getAccountMeta(accounts.authority)],\n        data: getUpdateConfidentialTransferMintInstructionDataEncoder().encode(\n            args as UpdateConfidentialTransferMintInstructionDataArgs,\n        ),\n        programAddress,\n    } as UpdateConfidentialTransferMintInstruction<TProgramAddress, TAccountMint, TAccountAuthority>);\n}\n\nexport type ParsedUpdateConfidentialTransferMintInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The SPL Token mint. */\n        mint: TAccountMetas[0];\n        /** Confidential transfer mint authority. */\n        authority: TAccountMetas[1];\n    };\n    data: UpdateConfidentialTransferMintInstructionData;\n};\n\nexport function parseUpdateConfidentialTransferMintInstruction<\n    TProgram extends string,\n    TAccountMetas extends readonly AccountMeta[],\n>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedUpdateConfidentialTransferMintInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 2) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { mint: getNextAccount(), authority: getNextAccount() },\n        data: getUpdateConfidentialTransferMintInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    AccountRole,\n    combineCodec,\n    getStructDecoder,\n    getStructEncoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type AccountSignerMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlyAccount,\n    type ReadonlySignerAccount,\n    type ReadonlyUint8Array,\n    type TransactionSigner,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\nimport { getAccountStateDecoder, getAccountStateEncoder, type AccountState, type AccountStateArgs } from '../types';\n\nexport const UPDATE_DEFAULT_ACCOUNT_STATE_DISCRIMINATOR = 28;\n\nexport function getUpdateDefaultAccountStateDiscriminatorBytes() {\n    return getU8Encoder().encode(UPDATE_DEFAULT_ACCOUNT_STATE_DISCRIMINATOR);\n}\n\nexport const UPDATE_DEFAULT_ACCOUNT_STATE_DEFAULT_ACCOUNT_STATE_DISCRIMINATOR = 1;\n\nexport function getUpdateDefaultAccountStateDefaultAccountStateDiscriminatorBytes() {\n    return getU8Encoder().encode(UPDATE_DEFAULT_ACCOUNT_STATE_DEFAULT_ACCOUNT_STATE_DISCRIMINATOR);\n}\n\nexport type UpdateDefaultAccountStateInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMint extends string | AccountMeta<string> = string,\n    TAccountFreezeAuthority extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [\n            TAccountMint extends string ? WritableAccount<TAccountMint> : TAccountMint,\n            TAccountFreezeAuthority extends string ? ReadonlyAccount<TAccountFreezeAuthority> : TAccountFreezeAuthority,\n            ...TRemainingAccounts,\n        ]\n    >;\n\nexport type UpdateDefaultAccountStateInstructionData = {\n    discriminator: number;\n    defaultAccountStateDiscriminator: number;\n    /** The state each new token account should start with. */\n    state: AccountState;\n};\n\nexport type UpdateDefaultAccountStateInstructionDataArgs = {\n    /** The state each new token account should start with. */\n    state: AccountStateArgs;\n};\n\nexport function getUpdateDefaultAccountStateInstructionDataEncoder(): FixedSizeEncoder<UpdateDefaultAccountStateInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['defaultAccountStateDiscriminator', getU8Encoder()],\n            ['state', getAccountStateEncoder()],\n        ]),\n        value => ({\n            ...value,\n            discriminator: UPDATE_DEFAULT_ACCOUNT_STATE_DISCRIMINATOR,\n            defaultAccountStateDiscriminator: UPDATE_DEFAULT_ACCOUNT_STATE_DEFAULT_ACCOUNT_STATE_DISCRIMINATOR,\n        }),\n    );\n}\n\nexport function getUpdateDefaultAccountStateInstructionDataDecoder(): FixedSizeDecoder<UpdateDefaultAccountStateInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['defaultAccountStateDiscriminator', getU8Decoder()],\n        ['state', getAccountStateDecoder()],\n    ]);\n}\n\nexport function getUpdateDefaultAccountStateInstructionDataCodec(): FixedSizeCodec<\n    UpdateDefaultAccountStateInstructionDataArgs,\n    UpdateDefaultAccountStateInstructionData\n> {\n    return combineCodec(\n        getUpdateDefaultAccountStateInstructionDataEncoder(),\n        getUpdateDefaultAccountStateInstructionDataDecoder(),\n    );\n}\n\nexport type UpdateDefaultAccountStateInput<\n    TAccountMint extends string = string,\n    TAccountFreezeAuthority extends string = string,\n> = {\n    /** The mint. */\n    mint: Address<TAccountMint>;\n    /** The mint freeze authority or its multisignature account. */\n    freezeAuthority: Address<TAccountFreezeAuthority> | TransactionSigner<TAccountFreezeAuthority>;\n    state: UpdateDefaultAccountStateInstructionDataArgs['state'];\n    multiSigners?: Array<TransactionSigner>;\n};\n\nexport function getUpdateDefaultAccountStateInstruction<\n    TAccountMint extends string,\n    TAccountFreezeAuthority extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: UpdateDefaultAccountStateInput<TAccountMint, TAccountFreezeAuthority>,\n    config?: { programAddress?: TProgramAddress },\n): UpdateDefaultAccountStateInstruction<\n    TProgramAddress,\n    TAccountMint,\n    (typeof input)['freezeAuthority'] extends TransactionSigner<TAccountFreezeAuthority>\n        ? ReadonlySignerAccount<TAccountFreezeAuthority> & AccountSignerMeta<TAccountFreezeAuthority>\n        : TAccountFreezeAuthority\n> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        mint: { value: input.mint ?? null, isWritable: true },\n        freezeAuthority: { value: input.freezeAuthority ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    // Remaining accounts.\n    const remainingAccounts: AccountMeta[] = (args.multiSigners ?? []).map(signer => ({\n        address: signer.address,\n        role: AccountRole.READONLY_SIGNER,\n        signer,\n    }));\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [getAccountMeta(accounts.mint), getAccountMeta(accounts.freezeAuthority), ...remainingAccounts],\n        data: getUpdateDefaultAccountStateInstructionDataEncoder().encode(\n            args as UpdateDefaultAccountStateInstructionDataArgs,\n        ),\n        programAddress,\n    } as UpdateDefaultAccountStateInstruction<\n        TProgramAddress,\n        TAccountMint,\n        (typeof input)['freezeAuthority'] extends TransactionSigner<TAccountFreezeAuthority>\n            ? ReadonlySignerAccount<TAccountFreezeAuthority> & AccountSignerMeta<TAccountFreezeAuthority>\n            : TAccountFreezeAuthority\n    >);\n}\n\nexport type ParsedUpdateDefaultAccountStateInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The mint. */\n        mint: TAccountMetas[0];\n        /** The mint freeze authority or its multisignature account. */\n        freezeAuthority: TAccountMetas[1];\n    };\n    data: UpdateDefaultAccountStateInstructionData;\n};\n\nexport function parseUpdateDefaultAccountStateInstruction<\n    TProgram extends string,\n    TAccountMetas extends readonly AccountMeta[],\n>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedUpdateDefaultAccountStateInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 2) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { mint: getNextAccount(), freezeAuthority: getNextAccount() },\n        data: getUpdateDefaultAccountStateInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    AccountRole,\n    combineCodec,\n    getAddressDecoder,\n    getAddressEncoder,\n    getOptionDecoder,\n    getOptionEncoder,\n    getStructDecoder,\n    getStructEncoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type AccountSignerMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type Option,\n    type OptionOrNullable,\n    type ReadonlyAccount,\n    type ReadonlySignerAccount,\n    type ReadonlyUint8Array,\n    type TransactionSigner,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const UPDATE_GROUP_MEMBER_POINTER_DISCRIMINATOR = 41;\n\nexport function getUpdateGroupMemberPointerDiscriminatorBytes() {\n    return getU8Encoder().encode(UPDATE_GROUP_MEMBER_POINTER_DISCRIMINATOR);\n}\n\nexport const UPDATE_GROUP_MEMBER_POINTER_GROUP_MEMBER_POINTER_DISCRIMINATOR = 1;\n\nexport function getUpdateGroupMemberPointerGroupMemberPointerDiscriminatorBytes() {\n    return getU8Encoder().encode(UPDATE_GROUP_MEMBER_POINTER_GROUP_MEMBER_POINTER_DISCRIMINATOR);\n}\n\nexport type UpdateGroupMemberPointerInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMint extends string | AccountMeta<string> = string,\n    TAccountGroupMemberPointerAuthority extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [\n            TAccountMint extends string ? WritableAccount<TAccountMint> : TAccountMint,\n            TAccountGroupMemberPointerAuthority extends string\n                ? ReadonlyAccount<TAccountGroupMemberPointerAuthority>\n                : TAccountGroupMemberPointerAuthority,\n            ...TRemainingAccounts,\n        ]\n    >;\n\nexport type UpdateGroupMemberPointerInstructionData = {\n    discriminator: number;\n    groupMemberPointerDiscriminator: number;\n    /** The new account address that holds the member. */\n    memberAddress: Option<Address>;\n};\n\nexport type UpdateGroupMemberPointerInstructionDataArgs = {\n    /** The new account address that holds the member. */\n    memberAddress: OptionOrNullable<Address>;\n};\n\nexport function getUpdateGroupMemberPointerInstructionDataEncoder(): FixedSizeEncoder<UpdateGroupMemberPointerInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['groupMemberPointerDiscriminator', getU8Encoder()],\n            ['memberAddress', getOptionEncoder(getAddressEncoder(), { prefix: null, noneValue: 'zeroes' })],\n        ]),\n        value => ({\n            ...value,\n            discriminator: UPDATE_GROUP_MEMBER_POINTER_DISCRIMINATOR,\n            groupMemberPointerDiscriminator: UPDATE_GROUP_MEMBER_POINTER_GROUP_MEMBER_POINTER_DISCRIMINATOR,\n        }),\n    );\n}\n\nexport function getUpdateGroupMemberPointerInstructionDataDecoder(): FixedSizeDecoder<UpdateGroupMemberPointerInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['groupMemberPointerDiscriminator', getU8Decoder()],\n        ['memberAddress', getOptionDecoder(getAddressDecoder(), { prefix: null, noneValue: 'zeroes' })],\n    ]);\n}\n\nexport function getUpdateGroupMemberPointerInstructionDataCodec(): FixedSizeCodec<\n    UpdateGroupMemberPointerInstructionDataArgs,\n    UpdateGroupMemberPointerInstructionData\n> {\n    return combineCodec(\n        getUpdateGroupMemberPointerInstructionDataEncoder(),\n        getUpdateGroupMemberPointerInstructionDataDecoder(),\n    );\n}\n\nexport type UpdateGroupMemberPointerInput<\n    TAccountMint extends string = string,\n    TAccountGroupMemberPointerAuthority extends string = string,\n> = {\n    /** The mint to initialize. */\n    mint: Address<TAccountMint>;\n    /** The group member pointer authority or its multisignature account. */\n    groupMemberPointerAuthority:\n        | Address<TAccountGroupMemberPointerAuthority>\n        | TransactionSigner<TAccountGroupMemberPointerAuthority>;\n    memberAddress: UpdateGroupMemberPointerInstructionDataArgs['memberAddress'];\n    multiSigners?: Array<TransactionSigner>;\n};\n\nexport function getUpdateGroupMemberPointerInstruction<\n    TAccountMint extends string,\n    TAccountGroupMemberPointerAuthority extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: UpdateGroupMemberPointerInput<TAccountMint, TAccountGroupMemberPointerAuthority>,\n    config?: { programAddress?: TProgramAddress },\n): UpdateGroupMemberPointerInstruction<\n    TProgramAddress,\n    TAccountMint,\n    (typeof input)['groupMemberPointerAuthority'] extends TransactionSigner<TAccountGroupMemberPointerAuthority>\n        ? ReadonlySignerAccount<TAccountGroupMemberPointerAuthority> &\n              AccountSignerMeta<TAccountGroupMemberPointerAuthority>\n        : TAccountGroupMemberPointerAuthority\n> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        mint: { value: input.mint ?? null, isWritable: true },\n        groupMemberPointerAuthority: { value: input.groupMemberPointerAuthority ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    // Remaining accounts.\n    const remainingAccounts: AccountMeta[] = (args.multiSigners ?? []).map(signer => ({\n        address: signer.address,\n        role: AccountRole.READONLY_SIGNER,\n        signer,\n    }));\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [\n            getAccountMeta(accounts.mint),\n            getAccountMeta(accounts.groupMemberPointerAuthority),\n            ...remainingAccounts,\n        ],\n        data: getUpdateGroupMemberPointerInstructionDataEncoder().encode(\n            args as UpdateGroupMemberPointerInstructionDataArgs,\n        ),\n        programAddress,\n    } as UpdateGroupMemberPointerInstruction<\n        TProgramAddress,\n        TAccountMint,\n        (typeof input)['groupMemberPointerAuthority'] extends TransactionSigner<TAccountGroupMemberPointerAuthority>\n            ? ReadonlySignerAccount<TAccountGroupMemberPointerAuthority> &\n                  AccountSignerMeta<TAccountGroupMemberPointerAuthority>\n            : TAccountGroupMemberPointerAuthority\n    >);\n}\n\nexport type ParsedUpdateGroupMemberPointerInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The mint to initialize. */\n        mint: TAccountMetas[0];\n        /** The group member pointer authority or its multisignature account. */\n        groupMemberPointerAuthority: TAccountMetas[1];\n    };\n    data: UpdateGroupMemberPointerInstructionData;\n};\n\nexport function parseUpdateGroupMemberPointerInstruction<\n    TProgram extends string,\n    TAccountMetas extends readonly AccountMeta[],\n>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedUpdateGroupMemberPointerInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 2) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { mint: getNextAccount(), groupMemberPointerAuthority: getNextAccount() },\n        data: getUpdateGroupMemberPointerInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    AccountRole,\n    combineCodec,\n    getAddressDecoder,\n    getAddressEncoder,\n    getOptionDecoder,\n    getOptionEncoder,\n    getStructDecoder,\n    getStructEncoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type AccountSignerMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type Option,\n    type OptionOrNullable,\n    type ReadonlyAccount,\n    type ReadonlySignerAccount,\n    type ReadonlyUint8Array,\n    type TransactionSigner,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const UPDATE_GROUP_POINTER_DISCRIMINATOR = 40;\n\nexport function getUpdateGroupPointerDiscriminatorBytes() {\n    return getU8Encoder().encode(UPDATE_GROUP_POINTER_DISCRIMINATOR);\n}\n\nexport const UPDATE_GROUP_POINTER_GROUP_POINTER_DISCRIMINATOR = 1;\n\nexport function getUpdateGroupPointerGroupPointerDiscriminatorBytes() {\n    return getU8Encoder().encode(UPDATE_GROUP_POINTER_GROUP_POINTER_DISCRIMINATOR);\n}\n\nexport type UpdateGroupPointerInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMint extends string | AccountMeta<string> = string,\n    TAccountGroupPointerAuthority extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [\n            TAccountMint extends string ? WritableAccount<TAccountMint> : TAccountMint,\n            TAccountGroupPointerAuthority extends string\n                ? ReadonlyAccount<TAccountGroupPointerAuthority>\n                : TAccountGroupPointerAuthority,\n            ...TRemainingAccounts,\n        ]\n    >;\n\nexport type UpdateGroupPointerInstructionData = {\n    discriminator: number;\n    groupPointerDiscriminator: number;\n    /** The new account address that holds the group configurations. */\n    groupAddress: Option<Address>;\n};\n\nexport type UpdateGroupPointerInstructionDataArgs = {\n    /** The new account address that holds the group configurations. */\n    groupAddress: OptionOrNullable<Address>;\n};\n\nexport function getUpdateGroupPointerInstructionDataEncoder(): FixedSizeEncoder<UpdateGroupPointerInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['groupPointerDiscriminator', getU8Encoder()],\n            ['groupAddress', getOptionEncoder(getAddressEncoder(), { prefix: null, noneValue: 'zeroes' })],\n        ]),\n        value => ({\n            ...value,\n            discriminator: UPDATE_GROUP_POINTER_DISCRIMINATOR,\n            groupPointerDiscriminator: UPDATE_GROUP_POINTER_GROUP_POINTER_DISCRIMINATOR,\n        }),\n    );\n}\n\nexport function getUpdateGroupPointerInstructionDataDecoder(): FixedSizeDecoder<UpdateGroupPointerInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['groupPointerDiscriminator', getU8Decoder()],\n        ['groupAddress', getOptionDecoder(getAddressDecoder(), { prefix: null, noneValue: 'zeroes' })],\n    ]);\n}\n\nexport function getUpdateGroupPointerInstructionDataCodec(): FixedSizeCodec<\n    UpdateGroupPointerInstructionDataArgs,\n    UpdateGroupPointerInstructionData\n> {\n    return combineCodec(getUpdateGroupPointerInstructionDataEncoder(), getUpdateGroupPointerInstructionDataDecoder());\n}\n\nexport type UpdateGroupPointerInput<\n    TAccountMint extends string = string,\n    TAccountGroupPointerAuthority extends string = string,\n> = {\n    /** The mint to initialize. */\n    mint: Address<TAccountMint>;\n    /** The group pointer authority or its multisignature account. */\n    groupPointerAuthority: Address<TAccountGroupPointerAuthority> | TransactionSigner<TAccountGroupPointerAuthority>;\n    groupAddress: UpdateGroupPointerInstructionDataArgs['groupAddress'];\n    multiSigners?: Array<TransactionSigner>;\n};\n\nexport function getUpdateGroupPointerInstruction<\n    TAccountMint extends string,\n    TAccountGroupPointerAuthority extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: UpdateGroupPointerInput<TAccountMint, TAccountGroupPointerAuthority>,\n    config?: { programAddress?: TProgramAddress },\n): UpdateGroupPointerInstruction<\n    TProgramAddress,\n    TAccountMint,\n    (typeof input)['groupPointerAuthority'] extends TransactionSigner<TAccountGroupPointerAuthority>\n        ? ReadonlySignerAccount<TAccountGroupPointerAuthority> & AccountSignerMeta<TAccountGroupPointerAuthority>\n        : TAccountGroupPointerAuthority\n> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        mint: { value: input.mint ?? null, isWritable: true },\n        groupPointerAuthority: { value: input.groupPointerAuthority ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    // Remaining accounts.\n    const remainingAccounts: AccountMeta[] = (args.multiSigners ?? []).map(signer => ({\n        address: signer.address,\n        role: AccountRole.READONLY_SIGNER,\n        signer,\n    }));\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [getAccountMeta(accounts.mint), getAccountMeta(accounts.groupPointerAuthority), ...remainingAccounts],\n        data: getUpdateGroupPointerInstructionDataEncoder().encode(args as UpdateGroupPointerInstructionDataArgs),\n        programAddress,\n    } as UpdateGroupPointerInstruction<\n        TProgramAddress,\n        TAccountMint,\n        (typeof input)['groupPointerAuthority'] extends TransactionSigner<TAccountGroupPointerAuthority>\n            ? ReadonlySignerAccount<TAccountGroupPointerAuthority> & AccountSignerMeta<TAccountGroupPointerAuthority>\n            : TAccountGroupPointerAuthority\n    >);\n}\n\nexport type ParsedUpdateGroupPointerInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The mint to initialize. */\n        mint: TAccountMetas[0];\n        /** The group pointer authority or its multisignature account. */\n        groupPointerAuthority: TAccountMetas[1];\n    };\n    data: UpdateGroupPointerInstructionData;\n};\n\nexport function parseUpdateGroupPointerInstruction<\n    TProgram extends string,\n    TAccountMetas extends readonly AccountMeta[],\n>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedUpdateGroupPointerInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 2) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { mint: getNextAccount(), groupPointerAuthority: getNextAccount() },\n        data: getUpdateGroupPointerInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    AccountRole,\n    combineCodec,\n    getAddressDecoder,\n    getAddressEncoder,\n    getOptionDecoder,\n    getOptionEncoder,\n    getStructDecoder,\n    getStructEncoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type AccountSignerMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type Option,\n    type OptionOrNullable,\n    type ReadonlyAccount,\n    type ReadonlySignerAccount,\n    type ReadonlyUint8Array,\n    type TransactionSigner,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const UPDATE_METADATA_POINTER_DISCRIMINATOR = 39;\n\nexport function getUpdateMetadataPointerDiscriminatorBytes() {\n    return getU8Encoder().encode(UPDATE_METADATA_POINTER_DISCRIMINATOR);\n}\n\nexport const UPDATE_METADATA_POINTER_METADATA_POINTER_DISCRIMINATOR = 1;\n\nexport function getUpdateMetadataPointerMetadataPointerDiscriminatorBytes() {\n    return getU8Encoder().encode(UPDATE_METADATA_POINTER_METADATA_POINTER_DISCRIMINATOR);\n}\n\nexport type UpdateMetadataPointerInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMint extends string | AccountMeta<string> = string,\n    TAccountMetadataPointerAuthority extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [\n            TAccountMint extends string ? WritableAccount<TAccountMint> : TAccountMint,\n            TAccountMetadataPointerAuthority extends string\n                ? ReadonlyAccount<TAccountMetadataPointerAuthority>\n                : TAccountMetadataPointerAuthority,\n            ...TRemainingAccounts,\n        ]\n    >;\n\nexport type UpdateMetadataPointerInstructionData = {\n    discriminator: number;\n    metadataPointerDiscriminator: number;\n    /** The new account address that holds the metadata. */\n    metadataAddress: Option<Address>;\n};\n\nexport type UpdateMetadataPointerInstructionDataArgs = {\n    /** The new account address that holds the metadata. */\n    metadataAddress: OptionOrNullable<Address>;\n};\n\nexport function getUpdateMetadataPointerInstructionDataEncoder(): FixedSizeEncoder<UpdateMetadataPointerInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['metadataPointerDiscriminator', getU8Encoder()],\n            ['metadataAddress', getOptionEncoder(getAddressEncoder(), { prefix: null, noneValue: 'zeroes' })],\n        ]),\n        value => ({\n            ...value,\n            discriminator: UPDATE_METADATA_POINTER_DISCRIMINATOR,\n            metadataPointerDiscriminator: UPDATE_METADATA_POINTER_METADATA_POINTER_DISCRIMINATOR,\n        }),\n    );\n}\n\nexport function getUpdateMetadataPointerInstructionDataDecoder(): FixedSizeDecoder<UpdateMetadataPointerInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['metadataPointerDiscriminator', getU8Decoder()],\n        ['metadataAddress', getOptionDecoder(getAddressDecoder(), { prefix: null, noneValue: 'zeroes' })],\n    ]);\n}\n\nexport function getUpdateMetadataPointerInstructionDataCodec(): FixedSizeCodec<\n    UpdateMetadataPointerInstructionDataArgs,\n    UpdateMetadataPointerInstructionData\n> {\n    return combineCodec(\n        getUpdateMetadataPointerInstructionDataEncoder(),\n        getUpdateMetadataPointerInstructionDataDecoder(),\n    );\n}\n\nexport type UpdateMetadataPointerInput<\n    TAccountMint extends string = string,\n    TAccountMetadataPointerAuthority extends string = string,\n> = {\n    /** The mint to initialize. */\n    mint: Address<TAccountMint>;\n    /** The metadata pointer authority or its multisignature account. */\n    metadataPointerAuthority:\n        | Address<TAccountMetadataPointerAuthority>\n        | TransactionSigner<TAccountMetadataPointerAuthority>;\n    metadataAddress: UpdateMetadataPointerInstructionDataArgs['metadataAddress'];\n    multiSigners?: Array<TransactionSigner>;\n};\n\nexport function getUpdateMetadataPointerInstruction<\n    TAccountMint extends string,\n    TAccountMetadataPointerAuthority extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: UpdateMetadataPointerInput<TAccountMint, TAccountMetadataPointerAuthority>,\n    config?: { programAddress?: TProgramAddress },\n): UpdateMetadataPointerInstruction<\n    TProgramAddress,\n    TAccountMint,\n    (typeof input)['metadataPointerAuthority'] extends TransactionSigner<TAccountMetadataPointerAuthority>\n        ? ReadonlySignerAccount<TAccountMetadataPointerAuthority> & AccountSignerMeta<TAccountMetadataPointerAuthority>\n        : TAccountMetadataPointerAuthority\n> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        mint: { value: input.mint ?? null, isWritable: true },\n        metadataPointerAuthority: { value: input.metadataPointerAuthority ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    // Remaining accounts.\n    const remainingAccounts: AccountMeta[] = (args.multiSigners ?? []).map(signer => ({\n        address: signer.address,\n        role: AccountRole.READONLY_SIGNER,\n        signer,\n    }));\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [\n            getAccountMeta(accounts.mint),\n            getAccountMeta(accounts.metadataPointerAuthority),\n            ...remainingAccounts,\n        ],\n        data: getUpdateMetadataPointerInstructionDataEncoder().encode(args as UpdateMetadataPointerInstructionDataArgs),\n        programAddress,\n    } as UpdateMetadataPointerInstruction<\n        TProgramAddress,\n        TAccountMint,\n        (typeof input)['metadataPointerAuthority'] extends TransactionSigner<TAccountMetadataPointerAuthority>\n            ? ReadonlySignerAccount<TAccountMetadataPointerAuthority> &\n                  AccountSignerMeta<TAccountMetadataPointerAuthority>\n            : TAccountMetadataPointerAuthority\n    >);\n}\n\nexport type ParsedUpdateMetadataPointerInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The mint to initialize. */\n        mint: TAccountMetas[0];\n        /** The metadata pointer authority or its multisignature account. */\n        metadataPointerAuthority: TAccountMetas[1];\n    };\n    data: UpdateMetadataPointerInstructionData;\n};\n\nexport function parseUpdateMetadataPointerInstruction<\n    TProgram extends string,\n    TAccountMetas extends readonly AccountMeta[],\n>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedUpdateMetadataPointerInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 2) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { mint: getNextAccount(), metadataPointerAuthority: getNextAccount() },\n        data: getUpdateMetadataPointerInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    AccountRole,\n    combineCodec,\n    getF64Decoder,\n    getF64Encoder,\n    getI64Decoder,\n    getI64Encoder,\n    getStructDecoder,\n    getStructEncoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type AccountSignerMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlyUint8Array,\n    type TransactionSigner,\n    type WritableAccount,\n    type WritableSignerAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const UPDATE_MULTIPLIER_SCALED_UI_MINT_DISCRIMINATOR = 43;\n\nexport function getUpdateMultiplierScaledUiMintDiscriminatorBytes() {\n    return getU8Encoder().encode(UPDATE_MULTIPLIER_SCALED_UI_MINT_DISCRIMINATOR);\n}\n\nexport const UPDATE_MULTIPLIER_SCALED_UI_MINT_SCALED_UI_AMOUNT_MINT_DISCRIMINATOR = 1;\n\nexport function getUpdateMultiplierScaledUiMintScaledUiAmountMintDiscriminatorBytes() {\n    return getU8Encoder().encode(UPDATE_MULTIPLIER_SCALED_UI_MINT_SCALED_UI_AMOUNT_MINT_DISCRIMINATOR);\n}\n\nexport type UpdateMultiplierScaledUiMintInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMint extends string | AccountMeta<string> = string,\n    TAccountAuthority extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [\n            TAccountMint extends string ? WritableAccount<TAccountMint> : TAccountMint,\n            TAccountAuthority extends string ? WritableAccount<TAccountAuthority> : TAccountAuthority,\n            ...TRemainingAccounts,\n        ]\n    >;\n\nexport type UpdateMultiplierScaledUiMintInstructionData = {\n    discriminator: number;\n    scaledUiAmountMintDiscriminator: number;\n    /** The new multiplier for the scaled UI extension */\n    multiplier: number;\n    /** The timestamp at which the new multiplier will take effect */\n    effectiveTimestamp: bigint;\n};\n\nexport type UpdateMultiplierScaledUiMintInstructionDataArgs = {\n    /** The new multiplier for the scaled UI extension */\n    multiplier: number;\n    /** The timestamp at which the new multiplier will take effect */\n    effectiveTimestamp: number | bigint;\n};\n\nexport function getUpdateMultiplierScaledUiMintInstructionDataEncoder(): FixedSizeEncoder<UpdateMultiplierScaledUiMintInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['scaledUiAmountMintDiscriminator', getU8Encoder()],\n            ['multiplier', getF64Encoder()],\n            ['effectiveTimestamp', getI64Encoder()],\n        ]),\n        value => ({\n            ...value,\n            discriminator: UPDATE_MULTIPLIER_SCALED_UI_MINT_DISCRIMINATOR,\n            scaledUiAmountMintDiscriminator: UPDATE_MULTIPLIER_SCALED_UI_MINT_SCALED_UI_AMOUNT_MINT_DISCRIMINATOR,\n        }),\n    );\n}\n\nexport function getUpdateMultiplierScaledUiMintInstructionDataDecoder(): FixedSizeDecoder<UpdateMultiplierScaledUiMintInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['scaledUiAmountMintDiscriminator', getU8Decoder()],\n        ['multiplier', getF64Decoder()],\n        ['effectiveTimestamp', getI64Decoder()],\n    ]);\n}\n\nexport function getUpdateMultiplierScaledUiMintInstructionDataCodec(): FixedSizeCodec<\n    UpdateMultiplierScaledUiMintInstructionDataArgs,\n    UpdateMultiplierScaledUiMintInstructionData\n> {\n    return combineCodec(\n        getUpdateMultiplierScaledUiMintInstructionDataEncoder(),\n        getUpdateMultiplierScaledUiMintInstructionDataDecoder(),\n    );\n}\n\nexport type UpdateMultiplierScaledUiMintInput<\n    TAccountMint extends string = string,\n    TAccountAuthority extends string = string,\n> = {\n    /** The mint. */\n    mint: Address<TAccountMint>;\n    /** The multiplier authority. */\n    authority: Address<TAccountAuthority> | TransactionSigner<TAccountAuthority>;\n    multiplier: UpdateMultiplierScaledUiMintInstructionDataArgs['multiplier'];\n    effectiveTimestamp: UpdateMultiplierScaledUiMintInstructionDataArgs['effectiveTimestamp'];\n    multiSigners?: Array<TransactionSigner>;\n};\n\nexport function getUpdateMultiplierScaledUiMintInstruction<\n    TAccountMint extends string,\n    TAccountAuthority extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: UpdateMultiplierScaledUiMintInput<TAccountMint, TAccountAuthority>,\n    config?: { programAddress?: TProgramAddress },\n): UpdateMultiplierScaledUiMintInstruction<\n    TProgramAddress,\n    TAccountMint,\n    (typeof input)['authority'] extends TransactionSigner<TAccountAuthority>\n        ? WritableSignerAccount<TAccountAuthority> & AccountSignerMeta<TAccountAuthority>\n        : TAccountAuthority\n> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        mint: { value: input.mint ?? null, isWritable: true },\n        authority: { value: input.authority ?? null, isWritable: true },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    // Remaining accounts.\n    const remainingAccounts: AccountMeta[] = (args.multiSigners ?? []).map(signer => ({\n        address: signer.address,\n        role: AccountRole.READONLY_SIGNER,\n        signer,\n    }));\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [getAccountMeta(accounts.mint), getAccountMeta(accounts.authority), ...remainingAccounts],\n        data: getUpdateMultiplierScaledUiMintInstructionDataEncoder().encode(\n            args as UpdateMultiplierScaledUiMintInstructionDataArgs,\n        ),\n        programAddress,\n    } as UpdateMultiplierScaledUiMintInstruction<\n        TProgramAddress,\n        TAccountMint,\n        (typeof input)['authority'] extends TransactionSigner<TAccountAuthority>\n            ? WritableSignerAccount<TAccountAuthority> & AccountSignerMeta<TAccountAuthority>\n            : TAccountAuthority\n    >);\n}\n\nexport type ParsedUpdateMultiplierScaledUiMintInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The mint. */\n        mint: TAccountMetas[0];\n        /** The multiplier authority. */\n        authority: TAccountMetas[1];\n    };\n    data: UpdateMultiplierScaledUiMintInstructionData;\n};\n\nexport function parseUpdateMultiplierScaledUiMintInstruction<\n    TProgram extends string,\n    TAccountMetas extends readonly AccountMeta[],\n>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedUpdateMultiplierScaledUiMintInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 2) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { mint: getNextAccount(), authority: getNextAccount() },\n        data: getUpdateMultiplierScaledUiMintInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    AccountRole,\n    combineCodec,\n    getI16Decoder,\n    getI16Encoder,\n    getStructDecoder,\n    getStructEncoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type AccountSignerMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlyUint8Array,\n    type TransactionSigner,\n    type WritableAccount,\n    type WritableSignerAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const UPDATE_RATE_INTEREST_BEARING_MINT_DISCRIMINATOR = 33;\n\nexport function getUpdateRateInterestBearingMintDiscriminatorBytes() {\n    return getU8Encoder().encode(UPDATE_RATE_INTEREST_BEARING_MINT_DISCRIMINATOR);\n}\n\nexport const UPDATE_RATE_INTEREST_BEARING_MINT_INTEREST_BEARING_MINT_DISCRIMINATOR = 1;\n\nexport function getUpdateRateInterestBearingMintInterestBearingMintDiscriminatorBytes() {\n    return getU8Encoder().encode(UPDATE_RATE_INTEREST_BEARING_MINT_INTEREST_BEARING_MINT_DISCRIMINATOR);\n}\n\nexport type UpdateRateInterestBearingMintInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMint extends string | AccountMeta<string> = string,\n    TAccountRateAuthority extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [\n            TAccountMint extends string ? WritableAccount<TAccountMint> : TAccountMint,\n            TAccountRateAuthority extends string ? WritableAccount<TAccountRateAuthority> : TAccountRateAuthority,\n            ...TRemainingAccounts,\n        ]\n    >;\n\nexport type UpdateRateInterestBearingMintInstructionData = {\n    discriminator: number;\n    interestBearingMintDiscriminator: number;\n    /** The interest rate to update. */\n    rate: number;\n};\n\nexport type UpdateRateInterestBearingMintInstructionDataArgs = {\n    /** The interest rate to update. */\n    rate: number;\n};\n\nexport function getUpdateRateInterestBearingMintInstructionDataEncoder(): FixedSizeEncoder<UpdateRateInterestBearingMintInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['interestBearingMintDiscriminator', getU8Encoder()],\n            ['rate', getI16Encoder()],\n        ]),\n        value => ({\n            ...value,\n            discriminator: UPDATE_RATE_INTEREST_BEARING_MINT_DISCRIMINATOR,\n            interestBearingMintDiscriminator: UPDATE_RATE_INTEREST_BEARING_MINT_INTEREST_BEARING_MINT_DISCRIMINATOR,\n        }),\n    );\n}\n\nexport function getUpdateRateInterestBearingMintInstructionDataDecoder(): FixedSizeDecoder<UpdateRateInterestBearingMintInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['interestBearingMintDiscriminator', getU8Decoder()],\n        ['rate', getI16Decoder()],\n    ]);\n}\n\nexport function getUpdateRateInterestBearingMintInstructionDataCodec(): FixedSizeCodec<\n    UpdateRateInterestBearingMintInstructionDataArgs,\n    UpdateRateInterestBearingMintInstructionData\n> {\n    return combineCodec(\n        getUpdateRateInterestBearingMintInstructionDataEncoder(),\n        getUpdateRateInterestBearingMintInstructionDataDecoder(),\n    );\n}\n\nexport type UpdateRateInterestBearingMintInput<\n    TAccountMint extends string = string,\n    TAccountRateAuthority extends string = string,\n> = {\n    /** The mint. */\n    mint: Address<TAccountMint>;\n    /** The mint rate authority. */\n    rateAuthority: Address<TAccountRateAuthority> | TransactionSigner<TAccountRateAuthority>;\n    rate: UpdateRateInterestBearingMintInstructionDataArgs['rate'];\n    multiSigners?: Array<TransactionSigner>;\n};\n\nexport function getUpdateRateInterestBearingMintInstruction<\n    TAccountMint extends string,\n    TAccountRateAuthority extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: UpdateRateInterestBearingMintInput<TAccountMint, TAccountRateAuthority>,\n    config?: { programAddress?: TProgramAddress },\n): UpdateRateInterestBearingMintInstruction<\n    TProgramAddress,\n    TAccountMint,\n    (typeof input)['rateAuthority'] extends TransactionSigner<TAccountRateAuthority>\n        ? WritableSignerAccount<TAccountRateAuthority> & AccountSignerMeta<TAccountRateAuthority>\n        : TAccountRateAuthority\n> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        mint: { value: input.mint ?? null, isWritable: true },\n        rateAuthority: { value: input.rateAuthority ?? null, isWritable: true },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    // Remaining accounts.\n    const remainingAccounts: AccountMeta[] = (args.multiSigners ?? []).map(signer => ({\n        address: signer.address,\n        role: AccountRole.READONLY_SIGNER,\n        signer,\n    }));\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [getAccountMeta(accounts.mint), getAccountMeta(accounts.rateAuthority), ...remainingAccounts],\n        data: getUpdateRateInterestBearingMintInstructionDataEncoder().encode(\n            args as UpdateRateInterestBearingMintInstructionDataArgs,\n        ),\n        programAddress,\n    } as UpdateRateInterestBearingMintInstruction<\n        TProgramAddress,\n        TAccountMint,\n        (typeof input)['rateAuthority'] extends TransactionSigner<TAccountRateAuthority>\n            ? WritableSignerAccount<TAccountRateAuthority> & AccountSignerMeta<TAccountRateAuthority>\n            : TAccountRateAuthority\n    >);\n}\n\nexport type ParsedUpdateRateInterestBearingMintInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The mint. */\n        mint: TAccountMetas[0];\n        /** The mint rate authority. */\n        rateAuthority: TAccountMetas[1];\n    };\n    data: UpdateRateInterestBearingMintInstructionData;\n};\n\nexport function parseUpdateRateInterestBearingMintInstruction<\n    TProgram extends string,\n    TAccountMetas extends readonly AccountMeta[],\n>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedUpdateRateInterestBearingMintInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 2) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { mint: getNextAccount(), rateAuthority: getNextAccount() },\n        data: getUpdateRateInterestBearingMintInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    combineCodec,\n    getBytesDecoder,\n    getBytesEncoder,\n    getStructDecoder,\n    getStructEncoder,\n    getU64Decoder,\n    getU64Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type AccountSignerMeta,\n    type Address,\n    type Codec,\n    type Decoder,\n    type Encoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlySignerAccount,\n    type ReadonlyUint8Array,\n    type TransactionSigner,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const UPDATE_TOKEN_GROUP_MAX_SIZE_DISCRIMINATOR = new Uint8Array([108, 37, 171, 143, 248, 30, 18, 110]);\n\nexport function getUpdateTokenGroupMaxSizeDiscriminatorBytes() {\n    return getBytesEncoder().encode(UPDATE_TOKEN_GROUP_MAX_SIZE_DISCRIMINATOR);\n}\n\nexport type UpdateTokenGroupMaxSizeInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountGroup extends string | AccountMeta<string> = string,\n    TAccountUpdateAuthority extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [\n            TAccountGroup extends string ? WritableAccount<TAccountGroup> : TAccountGroup,\n            TAccountUpdateAuthority extends string\n                ? ReadonlySignerAccount<TAccountUpdateAuthority> & AccountSignerMeta<TAccountUpdateAuthority>\n                : TAccountUpdateAuthority,\n            ...TRemainingAccounts,\n        ]\n    >;\n\nexport type UpdateTokenGroupMaxSizeInstructionData = {\n    discriminator: ReadonlyUint8Array;\n    /** New max size for the group */\n    maxSize: bigint;\n};\n\nexport type UpdateTokenGroupMaxSizeInstructionDataArgs = {\n    /** New max size for the group */\n    maxSize: number | bigint;\n};\n\nexport function getUpdateTokenGroupMaxSizeInstructionDataEncoder(): Encoder<UpdateTokenGroupMaxSizeInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getBytesEncoder()],\n            ['maxSize', getU64Encoder()],\n        ]),\n        value => ({ ...value, discriminator: UPDATE_TOKEN_GROUP_MAX_SIZE_DISCRIMINATOR }),\n    );\n}\n\nexport function getUpdateTokenGroupMaxSizeInstructionDataDecoder(): Decoder<UpdateTokenGroupMaxSizeInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getBytesDecoder()],\n        ['maxSize', getU64Decoder()],\n    ]);\n}\n\nexport function getUpdateTokenGroupMaxSizeInstructionDataCodec(): Codec<\n    UpdateTokenGroupMaxSizeInstructionDataArgs,\n    UpdateTokenGroupMaxSizeInstructionData\n> {\n    return combineCodec(\n        getUpdateTokenGroupMaxSizeInstructionDataEncoder(),\n        getUpdateTokenGroupMaxSizeInstructionDataDecoder(),\n    );\n}\n\nexport type UpdateTokenGroupMaxSizeInput<\n    TAccountGroup extends string = string,\n    TAccountUpdateAuthority extends string = string,\n> = {\n    group: Address<TAccountGroup>;\n    updateAuthority: TransactionSigner<TAccountUpdateAuthority>;\n    maxSize: UpdateTokenGroupMaxSizeInstructionDataArgs['maxSize'];\n};\n\nexport function getUpdateTokenGroupMaxSizeInstruction<\n    TAccountGroup extends string,\n    TAccountUpdateAuthority extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: UpdateTokenGroupMaxSizeInput<TAccountGroup, TAccountUpdateAuthority>,\n    config?: { programAddress?: TProgramAddress },\n): UpdateTokenGroupMaxSizeInstruction<TProgramAddress, TAccountGroup, TAccountUpdateAuthority> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        group: { value: input.group ?? null, isWritable: true },\n        updateAuthority: { value: input.updateAuthority ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [getAccountMeta(accounts.group), getAccountMeta(accounts.updateAuthority)],\n        data: getUpdateTokenGroupMaxSizeInstructionDataEncoder().encode(\n            args as UpdateTokenGroupMaxSizeInstructionDataArgs,\n        ),\n        programAddress,\n    } as UpdateTokenGroupMaxSizeInstruction<TProgramAddress, TAccountGroup, TAccountUpdateAuthority>);\n}\n\nexport type ParsedUpdateTokenGroupMaxSizeInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        group: TAccountMetas[0];\n        updateAuthority: TAccountMetas[1];\n    };\n    data: UpdateTokenGroupMaxSizeInstructionData;\n};\n\nexport function parseUpdateTokenGroupMaxSizeInstruction<\n    TProgram extends string,\n    TAccountMetas extends readonly AccountMeta[],\n>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedUpdateTokenGroupMaxSizeInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 2) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { group: getNextAccount(), updateAuthority: getNextAccount() },\n        data: getUpdateTokenGroupMaxSizeInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    combineCodec,\n    getAddressDecoder,\n    getAddressEncoder,\n    getBytesDecoder,\n    getBytesEncoder,\n    getOptionDecoder,\n    getOptionEncoder,\n    getStructDecoder,\n    getStructEncoder,\n    transformEncoder,\n    type AccountMeta,\n    type AccountSignerMeta,\n    type Address,\n    type Codec,\n    type Decoder,\n    type Encoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type Option,\n    type OptionOrNullable,\n    type ReadonlySignerAccount,\n    type ReadonlyUint8Array,\n    type TransactionSigner,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const UPDATE_TOKEN_GROUP_UPDATE_AUTHORITY_DISCRIMINATOR = new Uint8Array([161, 105, 88, 1, 237, 221, 216, 203]);\n\nexport function getUpdateTokenGroupUpdateAuthorityDiscriminatorBytes() {\n    return getBytesEncoder().encode(UPDATE_TOKEN_GROUP_UPDATE_AUTHORITY_DISCRIMINATOR);\n}\n\nexport type UpdateTokenGroupUpdateAuthorityInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountGroup extends string | AccountMeta<string> = string,\n    TAccountUpdateAuthority extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [\n            TAccountGroup extends string ? WritableAccount<TAccountGroup> : TAccountGroup,\n            TAccountUpdateAuthority extends string\n                ? ReadonlySignerAccount<TAccountUpdateAuthority> & AccountSignerMeta<TAccountUpdateAuthority>\n                : TAccountUpdateAuthority,\n            ...TRemainingAccounts,\n        ]\n    >;\n\nexport type UpdateTokenGroupUpdateAuthorityInstructionData = {\n    discriminator: ReadonlyUint8Array;\n    /** New authority for the group, or unset if `None` */\n    newUpdateAuthority: Option<Address>;\n};\n\nexport type UpdateTokenGroupUpdateAuthorityInstructionDataArgs = {\n    /** New authority for the group, or unset if `None` */\n    newUpdateAuthority: OptionOrNullable<Address>;\n};\n\nexport function getUpdateTokenGroupUpdateAuthorityInstructionDataEncoder(): Encoder<UpdateTokenGroupUpdateAuthorityInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getBytesEncoder()],\n            ['newUpdateAuthority', getOptionEncoder(getAddressEncoder(), { prefix: null, noneValue: 'zeroes' })],\n        ]),\n        value => ({ ...value, discriminator: UPDATE_TOKEN_GROUP_UPDATE_AUTHORITY_DISCRIMINATOR }),\n    );\n}\n\nexport function getUpdateTokenGroupUpdateAuthorityInstructionDataDecoder(): Decoder<UpdateTokenGroupUpdateAuthorityInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getBytesDecoder()],\n        ['newUpdateAuthority', getOptionDecoder(getAddressDecoder(), { prefix: null, noneValue: 'zeroes' })],\n    ]);\n}\n\nexport function getUpdateTokenGroupUpdateAuthorityInstructionDataCodec(): Codec<\n    UpdateTokenGroupUpdateAuthorityInstructionDataArgs,\n    UpdateTokenGroupUpdateAuthorityInstructionData\n> {\n    return combineCodec(\n        getUpdateTokenGroupUpdateAuthorityInstructionDataEncoder(),\n        getUpdateTokenGroupUpdateAuthorityInstructionDataDecoder(),\n    );\n}\n\nexport type UpdateTokenGroupUpdateAuthorityInput<\n    TAccountGroup extends string = string,\n    TAccountUpdateAuthority extends string = string,\n> = {\n    group: Address<TAccountGroup>;\n    /** Current update authority */\n    updateAuthority: TransactionSigner<TAccountUpdateAuthority>;\n    newUpdateAuthority: UpdateTokenGroupUpdateAuthorityInstructionDataArgs['newUpdateAuthority'];\n};\n\nexport function getUpdateTokenGroupUpdateAuthorityInstruction<\n    TAccountGroup extends string,\n    TAccountUpdateAuthority extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: UpdateTokenGroupUpdateAuthorityInput<TAccountGroup, TAccountUpdateAuthority>,\n    config?: { programAddress?: TProgramAddress },\n): UpdateTokenGroupUpdateAuthorityInstruction<TProgramAddress, TAccountGroup, TAccountUpdateAuthority> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        group: { value: input.group ?? null, isWritable: true },\n        updateAuthority: { value: input.updateAuthority ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [getAccountMeta(accounts.group), getAccountMeta(accounts.updateAuthority)],\n        data: getUpdateTokenGroupUpdateAuthorityInstructionDataEncoder().encode(\n            args as UpdateTokenGroupUpdateAuthorityInstructionDataArgs,\n        ),\n        programAddress,\n    } as UpdateTokenGroupUpdateAuthorityInstruction<TProgramAddress, TAccountGroup, TAccountUpdateAuthority>);\n}\n\nexport type ParsedUpdateTokenGroupUpdateAuthorityInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        group: TAccountMetas[0];\n        /** Current update authority */\n        updateAuthority: TAccountMetas[1];\n    };\n    data: UpdateTokenGroupUpdateAuthorityInstructionData;\n};\n\nexport function parseUpdateTokenGroupUpdateAuthorityInstruction<\n    TProgram extends string,\n    TAccountMetas extends readonly AccountMeta[],\n>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedUpdateTokenGroupUpdateAuthorityInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 2) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { group: getNextAccount(), updateAuthority: getNextAccount() },\n        data: getUpdateTokenGroupUpdateAuthorityInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    addDecoderSizePrefix,\n    addEncoderSizePrefix,\n    combineCodec,\n    getBytesDecoder,\n    getBytesEncoder,\n    getStructDecoder,\n    getStructEncoder,\n    getU32Decoder,\n    getU32Encoder,\n    getUtf8Decoder,\n    getUtf8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type AccountSignerMeta,\n    type Address,\n    type Codec,\n    type Decoder,\n    type Encoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlySignerAccount,\n    type ReadonlyUint8Array,\n    type TransactionSigner,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\nimport {\n    getTokenMetadataFieldDecoder,\n    getTokenMetadataFieldEncoder,\n    type TokenMetadataField,\n    type TokenMetadataFieldArgs,\n} from '../types';\n\nexport const UPDATE_TOKEN_METADATA_FIELD_DISCRIMINATOR = new Uint8Array([221, 233, 49, 45, 181, 202, 220, 200]);\n\nexport function getUpdateTokenMetadataFieldDiscriminatorBytes() {\n    return getBytesEncoder().encode(UPDATE_TOKEN_METADATA_FIELD_DISCRIMINATOR);\n}\n\nexport type UpdateTokenMetadataFieldInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetadata extends string | AccountMeta<string> = string,\n    TAccountUpdateAuthority extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [\n            TAccountMetadata extends string ? WritableAccount<TAccountMetadata> : TAccountMetadata,\n            TAccountUpdateAuthority extends string\n                ? ReadonlySignerAccount<TAccountUpdateAuthority> & AccountSignerMeta<TAccountUpdateAuthority>\n                : TAccountUpdateAuthority,\n            ...TRemainingAccounts,\n        ]\n    >;\n\nexport type UpdateTokenMetadataFieldInstructionData = {\n    discriminator: ReadonlyUint8Array;\n    /** Field to update in the metadata. */\n    field: TokenMetadataField;\n    /** Value to write for the field. */\n    value: string;\n};\n\nexport type UpdateTokenMetadataFieldInstructionDataArgs = {\n    /** Field to update in the metadata. */\n    field: TokenMetadataFieldArgs;\n    /** Value to write for the field. */\n    value: string;\n};\n\nexport function getUpdateTokenMetadataFieldInstructionDataEncoder(): Encoder<UpdateTokenMetadataFieldInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getBytesEncoder()],\n            ['field', getTokenMetadataFieldEncoder()],\n            ['value', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())],\n        ]),\n        value => ({ ...value, discriminator: UPDATE_TOKEN_METADATA_FIELD_DISCRIMINATOR }),\n    );\n}\n\nexport function getUpdateTokenMetadataFieldInstructionDataDecoder(): Decoder<UpdateTokenMetadataFieldInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getBytesDecoder()],\n        ['field', getTokenMetadataFieldDecoder()],\n        ['value', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],\n    ]);\n}\n\nexport function getUpdateTokenMetadataFieldInstructionDataCodec(): Codec<\n    UpdateTokenMetadataFieldInstructionDataArgs,\n    UpdateTokenMetadataFieldInstructionData\n> {\n    return combineCodec(\n        getUpdateTokenMetadataFieldInstructionDataEncoder(),\n        getUpdateTokenMetadataFieldInstructionDataDecoder(),\n    );\n}\n\nexport type UpdateTokenMetadataFieldInput<\n    TAccountMetadata extends string = string,\n    TAccountUpdateAuthority extends string = string,\n> = {\n    metadata: Address<TAccountMetadata>;\n    updateAuthority: TransactionSigner<TAccountUpdateAuthority>;\n    field: UpdateTokenMetadataFieldInstructionDataArgs['field'];\n    value: UpdateTokenMetadataFieldInstructionDataArgs['value'];\n};\n\nexport function getUpdateTokenMetadataFieldInstruction<\n    TAccountMetadata extends string,\n    TAccountUpdateAuthority extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: UpdateTokenMetadataFieldInput<TAccountMetadata, TAccountUpdateAuthority>,\n    config?: { programAddress?: TProgramAddress },\n): UpdateTokenMetadataFieldInstruction<TProgramAddress, TAccountMetadata, TAccountUpdateAuthority> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        metadata: { value: input.metadata ?? null, isWritable: true },\n        updateAuthority: { value: input.updateAuthority ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [getAccountMeta(accounts.metadata), getAccountMeta(accounts.updateAuthority)],\n        data: getUpdateTokenMetadataFieldInstructionDataEncoder().encode(\n            args as UpdateTokenMetadataFieldInstructionDataArgs,\n        ),\n        programAddress,\n    } as UpdateTokenMetadataFieldInstruction<TProgramAddress, TAccountMetadata, TAccountUpdateAuthority>);\n}\n\nexport type ParsedUpdateTokenMetadataFieldInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        metadata: TAccountMetas[0];\n        updateAuthority: TAccountMetas[1];\n    };\n    data: UpdateTokenMetadataFieldInstructionData;\n};\n\nexport function parseUpdateTokenMetadataFieldInstruction<\n    TProgram extends string,\n    TAccountMetas extends readonly AccountMeta[],\n>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedUpdateTokenMetadataFieldInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 2) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { metadata: getNextAccount(), updateAuthority: getNextAccount() },\n        data: getUpdateTokenMetadataFieldInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    combineCodec,\n    getAddressDecoder,\n    getAddressEncoder,\n    getBytesDecoder,\n    getBytesEncoder,\n    getOptionDecoder,\n    getOptionEncoder,\n    getStructDecoder,\n    getStructEncoder,\n    transformEncoder,\n    type AccountMeta,\n    type AccountSignerMeta,\n    type Address,\n    type Codec,\n    type Decoder,\n    type Encoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type Option,\n    type OptionOrNullable,\n    type ReadonlySignerAccount,\n    type ReadonlyUint8Array,\n    type TransactionSigner,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const UPDATE_TOKEN_METADATA_UPDATE_AUTHORITY_DISCRIMINATOR = new Uint8Array([\n    215, 228, 166, 228, 84, 100, 86, 123,\n]);\n\nexport function getUpdateTokenMetadataUpdateAuthorityDiscriminatorBytes() {\n    return getBytesEncoder().encode(UPDATE_TOKEN_METADATA_UPDATE_AUTHORITY_DISCRIMINATOR);\n}\n\nexport type UpdateTokenMetadataUpdateAuthorityInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetadata extends string | AccountMeta<string> = string,\n    TAccountUpdateAuthority extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [\n            TAccountMetadata extends string ? WritableAccount<TAccountMetadata> : TAccountMetadata,\n            TAccountUpdateAuthority extends string\n                ? ReadonlySignerAccount<TAccountUpdateAuthority> & AccountSignerMeta<TAccountUpdateAuthority>\n                : TAccountUpdateAuthority,\n            ...TRemainingAccounts,\n        ]\n    >;\n\nexport type UpdateTokenMetadataUpdateAuthorityInstructionData = {\n    discriminator: ReadonlyUint8Array;\n    /** New authority for the token metadata, or unset if `None` */\n    newUpdateAuthority: Option<Address>;\n};\n\nexport type UpdateTokenMetadataUpdateAuthorityInstructionDataArgs = {\n    /** New authority for the token metadata, or unset if `None` */\n    newUpdateAuthority: OptionOrNullable<Address>;\n};\n\nexport function getUpdateTokenMetadataUpdateAuthorityInstructionDataEncoder(): Encoder<UpdateTokenMetadataUpdateAuthorityInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getBytesEncoder()],\n            ['newUpdateAuthority', getOptionEncoder(getAddressEncoder(), { prefix: null, noneValue: 'zeroes' })],\n        ]),\n        value => ({ ...value, discriminator: UPDATE_TOKEN_METADATA_UPDATE_AUTHORITY_DISCRIMINATOR }),\n    );\n}\n\nexport function getUpdateTokenMetadataUpdateAuthorityInstructionDataDecoder(): Decoder<UpdateTokenMetadataUpdateAuthorityInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getBytesDecoder()],\n        ['newUpdateAuthority', getOptionDecoder(getAddressDecoder(), { prefix: null, noneValue: 'zeroes' })],\n    ]);\n}\n\nexport function getUpdateTokenMetadataUpdateAuthorityInstructionDataCodec(): Codec<\n    UpdateTokenMetadataUpdateAuthorityInstructionDataArgs,\n    UpdateTokenMetadataUpdateAuthorityInstructionData\n> {\n    return combineCodec(\n        getUpdateTokenMetadataUpdateAuthorityInstructionDataEncoder(),\n        getUpdateTokenMetadataUpdateAuthorityInstructionDataDecoder(),\n    );\n}\n\nexport type UpdateTokenMetadataUpdateAuthorityInput<\n    TAccountMetadata extends string = string,\n    TAccountUpdateAuthority extends string = string,\n> = {\n    metadata: Address<TAccountMetadata>;\n    updateAuthority: TransactionSigner<TAccountUpdateAuthority>;\n    newUpdateAuthority: UpdateTokenMetadataUpdateAuthorityInstructionDataArgs['newUpdateAuthority'];\n};\n\nexport function getUpdateTokenMetadataUpdateAuthorityInstruction<\n    TAccountMetadata extends string,\n    TAccountUpdateAuthority extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: UpdateTokenMetadataUpdateAuthorityInput<TAccountMetadata, TAccountUpdateAuthority>,\n    config?: { programAddress?: TProgramAddress },\n): UpdateTokenMetadataUpdateAuthorityInstruction<TProgramAddress, TAccountMetadata, TAccountUpdateAuthority> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        metadata: { value: input.metadata ?? null, isWritable: true },\n        updateAuthority: { value: input.updateAuthority ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [getAccountMeta(accounts.metadata), getAccountMeta(accounts.updateAuthority)],\n        data: getUpdateTokenMetadataUpdateAuthorityInstructionDataEncoder().encode(\n            args as UpdateTokenMetadataUpdateAuthorityInstructionDataArgs,\n        ),\n        programAddress,\n    } as UpdateTokenMetadataUpdateAuthorityInstruction<TProgramAddress, TAccountMetadata, TAccountUpdateAuthority>);\n}\n\nexport type ParsedUpdateTokenMetadataUpdateAuthorityInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        metadata: TAccountMetas[0];\n        updateAuthority: TAccountMetas[1];\n    };\n    data: UpdateTokenMetadataUpdateAuthorityInstructionData;\n};\n\nexport function parseUpdateTokenMetadataUpdateAuthorityInstruction<\n    TProgram extends string,\n    TAccountMetas extends readonly AccountMeta[],\n>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedUpdateTokenMetadataUpdateAuthorityInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 2) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { metadata: getNextAccount(), updateAuthority: getNextAccount() },\n        data: getUpdateTokenMetadataUpdateAuthorityInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    AccountRole,\n    combineCodec,\n    getAddressDecoder,\n    getAddressEncoder,\n    getOptionDecoder,\n    getOptionEncoder,\n    getStructDecoder,\n    getStructEncoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type AccountSignerMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type Option,\n    type OptionOrNullable,\n    type ReadonlyAccount,\n    type ReadonlySignerAccount,\n    type ReadonlyUint8Array,\n    type TransactionSigner,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const UPDATE_TRANSFER_HOOK_DISCRIMINATOR = 36;\n\nexport function getUpdateTransferHookDiscriminatorBytes() {\n    return getU8Encoder().encode(UPDATE_TRANSFER_HOOK_DISCRIMINATOR);\n}\n\nexport const UPDATE_TRANSFER_HOOK_TRANSFER_HOOK_DISCRIMINATOR = 1;\n\nexport function getUpdateTransferHookTransferHookDiscriminatorBytes() {\n    return getU8Encoder().encode(UPDATE_TRANSFER_HOOK_TRANSFER_HOOK_DISCRIMINATOR);\n}\n\nexport type UpdateTransferHookInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMint extends string | AccountMeta<string> = string,\n    TAccountAuthority extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [\n            TAccountMint extends string ? WritableAccount<TAccountMint> : TAccountMint,\n            TAccountAuthority extends string ? ReadonlyAccount<TAccountAuthority> : TAccountAuthority,\n            ...TRemainingAccounts,\n        ]\n    >;\n\nexport type UpdateTransferHookInstructionData = {\n    discriminator: number;\n    transferHookDiscriminator: number;\n    /** The program id that performs logic during transfers */\n    programId: Option<Address>;\n};\n\nexport type UpdateTransferHookInstructionDataArgs = {\n    /** The program id that performs logic during transfers */\n    programId: OptionOrNullable<Address>;\n};\n\nexport function getUpdateTransferHookInstructionDataEncoder(): FixedSizeEncoder<UpdateTransferHookInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['transferHookDiscriminator', getU8Encoder()],\n            ['programId', getOptionEncoder(getAddressEncoder(), { prefix: null, noneValue: 'zeroes' })],\n        ]),\n        value => ({\n            ...value,\n            discriminator: UPDATE_TRANSFER_HOOK_DISCRIMINATOR,\n            transferHookDiscriminator: UPDATE_TRANSFER_HOOK_TRANSFER_HOOK_DISCRIMINATOR,\n        }),\n    );\n}\n\nexport function getUpdateTransferHookInstructionDataDecoder(): FixedSizeDecoder<UpdateTransferHookInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['transferHookDiscriminator', getU8Decoder()],\n        ['programId', getOptionDecoder(getAddressDecoder(), { prefix: null, noneValue: 'zeroes' })],\n    ]);\n}\n\nexport function getUpdateTransferHookInstructionDataCodec(): FixedSizeCodec<\n    UpdateTransferHookInstructionDataArgs,\n    UpdateTransferHookInstructionData\n> {\n    return combineCodec(getUpdateTransferHookInstructionDataEncoder(), getUpdateTransferHookInstructionDataDecoder());\n}\n\nexport type UpdateTransferHookInput<TAccountMint extends string = string, TAccountAuthority extends string = string> = {\n    /** The mint. */\n    mint: Address<TAccountMint>;\n    /** The transfer hook authority. */\n    authority: Address<TAccountAuthority> | TransactionSigner<TAccountAuthority>;\n    programId: UpdateTransferHookInstructionDataArgs['programId'];\n    multiSigners?: Array<TransactionSigner>;\n};\n\nexport function getUpdateTransferHookInstruction<\n    TAccountMint extends string,\n    TAccountAuthority extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: UpdateTransferHookInput<TAccountMint, TAccountAuthority>,\n    config?: { programAddress?: TProgramAddress },\n): UpdateTransferHookInstruction<\n    TProgramAddress,\n    TAccountMint,\n    (typeof input)['authority'] extends TransactionSigner<TAccountAuthority>\n        ? ReadonlySignerAccount<TAccountAuthority> & AccountSignerMeta<TAccountAuthority>\n        : TAccountAuthority\n> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        mint: { value: input.mint ?? null, isWritable: true },\n        authority: { value: input.authority ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    // Remaining accounts.\n    const remainingAccounts: AccountMeta[] = (args.multiSigners ?? []).map(signer => ({\n        address: signer.address,\n        role: AccountRole.READONLY_SIGNER,\n        signer,\n    }));\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [getAccountMeta(accounts.mint), getAccountMeta(accounts.authority), ...remainingAccounts],\n        data: getUpdateTransferHookInstructionDataEncoder().encode(args as UpdateTransferHookInstructionDataArgs),\n        programAddress,\n    } as UpdateTransferHookInstruction<\n        TProgramAddress,\n        TAccountMint,\n        (typeof input)['authority'] extends TransactionSigner<TAccountAuthority>\n            ? ReadonlySignerAccount<TAccountAuthority> & AccountSignerMeta<TAccountAuthority>\n            : TAccountAuthority\n    >);\n}\n\nexport type ParsedUpdateTransferHookInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The mint. */\n        mint: TAccountMetas[0];\n        /** The transfer hook authority. */\n        authority: TAccountMetas[1];\n    };\n    data: UpdateTransferHookInstructionData;\n};\n\nexport function parseUpdateTransferHookInstruction<\n    TProgram extends string,\n    TAccountMetas extends readonly AccountMeta[],\n>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedUpdateTransferHookInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 2) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: { mint: getNextAccount(), authority: getNextAccount() },\n        data: getUpdateTransferHookInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    AccountRole,\n    combineCodec,\n    getStructDecoder,\n    getStructEncoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type AccountSignerMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlyAccount,\n    type ReadonlySignerAccount,\n    type ReadonlyUint8Array,\n    type TransactionSigner,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const WITHDRAW_EXCESS_LAMPORTS_DISCRIMINATOR = 38;\n\nexport function getWithdrawExcessLamportsDiscriminatorBytes() {\n    return getU8Encoder().encode(WITHDRAW_EXCESS_LAMPORTS_DISCRIMINATOR);\n}\n\nexport type WithdrawExcessLamportsInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountSourceAccount extends string | AccountMeta<string> = string,\n    TAccountDestinationAccount extends string | AccountMeta<string> = string,\n    TAccountAuthority extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [\n            TAccountSourceAccount extends string ? WritableAccount<TAccountSourceAccount> : TAccountSourceAccount,\n            TAccountDestinationAccount extends string\n                ? WritableAccount<TAccountDestinationAccount>\n                : TAccountDestinationAccount,\n            TAccountAuthority extends string ? ReadonlyAccount<TAccountAuthority> : TAccountAuthority,\n            ...TRemainingAccounts,\n        ]\n    >;\n\nexport type WithdrawExcessLamportsInstructionData = { discriminator: number };\n\nexport type WithdrawExcessLamportsInstructionDataArgs = {};\n\nexport function getWithdrawExcessLamportsInstructionDataEncoder(): FixedSizeEncoder<WithdrawExcessLamportsInstructionDataArgs> {\n    return transformEncoder(getStructEncoder([['discriminator', getU8Encoder()]]), value => ({\n        ...value,\n        discriminator: WITHDRAW_EXCESS_LAMPORTS_DISCRIMINATOR,\n    }));\n}\n\nexport function getWithdrawExcessLamportsInstructionDataDecoder(): FixedSizeDecoder<WithdrawExcessLamportsInstructionData> {\n    return getStructDecoder([['discriminator', getU8Decoder()]]);\n}\n\nexport function getWithdrawExcessLamportsInstructionDataCodec(): FixedSizeCodec<\n    WithdrawExcessLamportsInstructionDataArgs,\n    WithdrawExcessLamportsInstructionData\n> {\n    return combineCodec(\n        getWithdrawExcessLamportsInstructionDataEncoder(),\n        getWithdrawExcessLamportsInstructionDataDecoder(),\n    );\n}\n\nexport type WithdrawExcessLamportsInput<\n    TAccountSourceAccount extends string = string,\n    TAccountDestinationAccount extends string = string,\n    TAccountAuthority extends string = string,\n> = {\n    /** Account holding excess lamports. */\n    sourceAccount: Address<TAccountSourceAccount>;\n    /** Destination account for withdrawn lamports. */\n    destinationAccount: Address<TAccountDestinationAccount>;\n    /** The source account's owner/delegate or its multisignature account. */\n    authority: Address<TAccountAuthority> | TransactionSigner<TAccountAuthority>;\n    multiSigners?: Array<TransactionSigner>;\n};\n\nexport function getWithdrawExcessLamportsInstruction<\n    TAccountSourceAccount extends string,\n    TAccountDestinationAccount extends string,\n    TAccountAuthority extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: WithdrawExcessLamportsInput<TAccountSourceAccount, TAccountDestinationAccount, TAccountAuthority>,\n    config?: { programAddress?: TProgramAddress },\n): WithdrawExcessLamportsInstruction<\n    TProgramAddress,\n    TAccountSourceAccount,\n    TAccountDestinationAccount,\n    (typeof input)['authority'] extends TransactionSigner<TAccountAuthority>\n        ? ReadonlySignerAccount<TAccountAuthority> & AccountSignerMeta<TAccountAuthority>\n        : TAccountAuthority\n> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        sourceAccount: { value: input.sourceAccount ?? null, isWritable: true },\n        destinationAccount: { value: input.destinationAccount ?? null, isWritable: true },\n        authority: { value: input.authority ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    // Remaining accounts.\n    const remainingAccounts: AccountMeta[] = (args.multiSigners ?? []).map(signer => ({\n        address: signer.address,\n        role: AccountRole.READONLY_SIGNER,\n        signer,\n    }));\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [\n            getAccountMeta(accounts.sourceAccount),\n            getAccountMeta(accounts.destinationAccount),\n            getAccountMeta(accounts.authority),\n            ...remainingAccounts,\n        ],\n        data: getWithdrawExcessLamportsInstructionDataEncoder().encode({}),\n        programAddress,\n    } as WithdrawExcessLamportsInstruction<\n        TProgramAddress,\n        TAccountSourceAccount,\n        TAccountDestinationAccount,\n        (typeof input)['authority'] extends TransactionSigner<TAccountAuthority>\n            ? ReadonlySignerAccount<TAccountAuthority> & AccountSignerMeta<TAccountAuthority>\n            : TAccountAuthority\n    >);\n}\n\nexport type ParsedWithdrawExcessLamportsInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** Account holding excess lamports. */\n        sourceAccount: TAccountMetas[0];\n        /** Destination account for withdrawn lamports. */\n        destinationAccount: TAccountMetas[1];\n        /** The source account's owner/delegate or its multisignature account. */\n        authority: TAccountMetas[2];\n    };\n    data: WithdrawExcessLamportsInstructionData;\n};\n\nexport function parseWithdrawExcessLamportsInstruction<\n    TProgram extends string,\n    TAccountMetas extends readonly AccountMeta[],\n>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedWithdrawExcessLamportsInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 3) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: {\n            sourceAccount: getNextAccount(),\n            destinationAccount: getNextAccount(),\n            authority: getNextAccount(),\n        },\n        data: getWithdrawExcessLamportsInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    AccountRole,\n    combineCodec,\n    getStructDecoder,\n    getStructEncoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type AccountSignerMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlyAccount,\n    type ReadonlySignerAccount,\n    type ReadonlyUint8Array,\n    type TransactionSigner,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const WITHDRAW_WITHHELD_TOKENS_FROM_ACCOUNTS_DISCRIMINATOR = 26;\n\nexport function getWithdrawWithheldTokensFromAccountsDiscriminatorBytes() {\n    return getU8Encoder().encode(WITHDRAW_WITHHELD_TOKENS_FROM_ACCOUNTS_DISCRIMINATOR);\n}\n\nexport const WITHDRAW_WITHHELD_TOKENS_FROM_ACCOUNTS_TRANSFER_FEE_DISCRIMINATOR = 3;\n\nexport function getWithdrawWithheldTokensFromAccountsTransferFeeDiscriminatorBytes() {\n    return getU8Encoder().encode(WITHDRAW_WITHHELD_TOKENS_FROM_ACCOUNTS_TRANSFER_FEE_DISCRIMINATOR);\n}\n\nexport type WithdrawWithheldTokensFromAccountsInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMint extends string | AccountMeta<string> = string,\n    TAccountFeeReceiver extends string | AccountMeta<string> = string,\n    TAccountWithdrawWithheldAuthority extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [\n            TAccountMint extends string ? ReadonlyAccount<TAccountMint> : TAccountMint,\n            TAccountFeeReceiver extends string ? WritableAccount<TAccountFeeReceiver> : TAccountFeeReceiver,\n            TAccountWithdrawWithheldAuthority extends string\n                ? ReadonlyAccount<TAccountWithdrawWithheldAuthority>\n                : TAccountWithdrawWithheldAuthority,\n            ...TRemainingAccounts,\n        ]\n    >;\n\nexport type WithdrawWithheldTokensFromAccountsInstructionData = {\n    discriminator: number;\n    transferFeeDiscriminator: number;\n    /** Number of token accounts harvested. */\n    numTokenAccounts: number;\n};\n\nexport type WithdrawWithheldTokensFromAccountsInstructionDataArgs = {\n    /** Number of token accounts harvested. */\n    numTokenAccounts: number;\n};\n\nexport function getWithdrawWithheldTokensFromAccountsInstructionDataEncoder(): FixedSizeEncoder<WithdrawWithheldTokensFromAccountsInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['transferFeeDiscriminator', getU8Encoder()],\n            ['numTokenAccounts', getU8Encoder()],\n        ]),\n        value => ({\n            ...value,\n            discriminator: WITHDRAW_WITHHELD_TOKENS_FROM_ACCOUNTS_DISCRIMINATOR,\n            transferFeeDiscriminator: WITHDRAW_WITHHELD_TOKENS_FROM_ACCOUNTS_TRANSFER_FEE_DISCRIMINATOR,\n        }),\n    );\n}\n\nexport function getWithdrawWithheldTokensFromAccountsInstructionDataDecoder(): FixedSizeDecoder<WithdrawWithheldTokensFromAccountsInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['transferFeeDiscriminator', getU8Decoder()],\n        ['numTokenAccounts', getU8Decoder()],\n    ]);\n}\n\nexport function getWithdrawWithheldTokensFromAccountsInstructionDataCodec(): FixedSizeCodec<\n    WithdrawWithheldTokensFromAccountsInstructionDataArgs,\n    WithdrawWithheldTokensFromAccountsInstructionData\n> {\n    return combineCodec(\n        getWithdrawWithheldTokensFromAccountsInstructionDataEncoder(),\n        getWithdrawWithheldTokensFromAccountsInstructionDataDecoder(),\n    );\n}\n\nexport type WithdrawWithheldTokensFromAccountsInput<\n    TAccountMint extends string = string,\n    TAccountFeeReceiver extends string = string,\n    TAccountWithdrawWithheldAuthority extends string = string,\n> = {\n    /** The token mint. Must include the `TransferFeeConfig` extension. */\n    mint: Address<TAccountMint>;\n    /**\n     * The fee receiver account. Must include the `TransferFeeAmount`\n     * extension associated with the provided mint.\n     */\n    feeReceiver: Address<TAccountFeeReceiver>;\n    /** The mint's `withdraw_withheld_authority` or its multisignature account. */\n    withdrawWithheldAuthority:\n        | Address<TAccountWithdrawWithheldAuthority>\n        | TransactionSigner<TAccountWithdrawWithheldAuthority>;\n    numTokenAccounts: WithdrawWithheldTokensFromAccountsInstructionDataArgs['numTokenAccounts'];\n    multiSigners?: Array<TransactionSigner>;\n    sources: Array<Address>;\n};\n\nexport function getWithdrawWithheldTokensFromAccountsInstruction<\n    TAccountMint extends string,\n    TAccountFeeReceiver extends string,\n    TAccountWithdrawWithheldAuthority extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: WithdrawWithheldTokensFromAccountsInput<\n        TAccountMint,\n        TAccountFeeReceiver,\n        TAccountWithdrawWithheldAuthority\n    >,\n    config?: { programAddress?: TProgramAddress },\n): WithdrawWithheldTokensFromAccountsInstruction<\n    TProgramAddress,\n    TAccountMint,\n    TAccountFeeReceiver,\n    (typeof input)['withdrawWithheldAuthority'] extends TransactionSigner<TAccountWithdrawWithheldAuthority>\n        ? ReadonlySignerAccount<TAccountWithdrawWithheldAuthority> &\n              AccountSignerMeta<TAccountWithdrawWithheldAuthority>\n        : TAccountWithdrawWithheldAuthority\n> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        mint: { value: input.mint ?? null, isWritable: false },\n        feeReceiver: { value: input.feeReceiver ?? null, isWritable: true },\n        withdrawWithheldAuthority: { value: input.withdrawWithheldAuthority ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    // Remaining accounts.\n    const remainingAccounts: AccountMeta[] = [\n        ...(args.multiSigners ?? []).map(signer => ({\n            address: signer.address,\n            role: AccountRole.READONLY_SIGNER,\n            signer,\n        })),\n        ...args.sources.map(address => ({ address, role: AccountRole.WRITABLE })),\n    ];\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [\n            getAccountMeta(accounts.mint),\n            getAccountMeta(accounts.feeReceiver),\n            getAccountMeta(accounts.withdrawWithheldAuthority),\n            ...remainingAccounts,\n        ],\n        data: getWithdrawWithheldTokensFromAccountsInstructionDataEncoder().encode(\n            args as WithdrawWithheldTokensFromAccountsInstructionDataArgs,\n        ),\n        programAddress,\n    } as WithdrawWithheldTokensFromAccountsInstruction<\n        TProgramAddress,\n        TAccountMint,\n        TAccountFeeReceiver,\n        (typeof input)['withdrawWithheldAuthority'] extends TransactionSigner<TAccountWithdrawWithheldAuthority>\n            ? ReadonlySignerAccount<TAccountWithdrawWithheldAuthority> &\n                  AccountSignerMeta<TAccountWithdrawWithheldAuthority>\n            : TAccountWithdrawWithheldAuthority\n    >);\n}\n\nexport type ParsedWithdrawWithheldTokensFromAccountsInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The token mint. Must include the `TransferFeeConfig` extension. */\n        mint: TAccountMetas[0];\n        /**\n         * The fee receiver account. Must include the `TransferFeeAmount`\n         * extension associated with the provided mint.\n         */\n        feeReceiver: TAccountMetas[1];\n        /** The mint's `withdraw_withheld_authority` or its multisignature account. */\n        withdrawWithheldAuthority: TAccountMetas[2];\n    };\n    data: WithdrawWithheldTokensFromAccountsInstructionData;\n};\n\nexport function parseWithdrawWithheldTokensFromAccountsInstruction<\n    TProgram extends string,\n    TAccountMetas extends readonly AccountMeta[],\n>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedWithdrawWithheldTokensFromAccountsInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 3) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: {\n            mint: getNextAccount(),\n            feeReceiver: getNextAccount(),\n            withdrawWithheldAuthority: getNextAccount(),\n        },\n        data: getWithdrawWithheldTokensFromAccountsInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    AccountRole,\n    combineCodec,\n    getI8Decoder,\n    getI8Encoder,\n    getStructDecoder,\n    getStructEncoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type AccountSignerMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlyAccount,\n    type ReadonlySignerAccount,\n    type ReadonlyUint8Array,\n    type TransactionSigner,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\nimport {\n    getDecryptableBalanceDecoder,\n    getDecryptableBalanceEncoder,\n    type DecryptableBalance,\n    type DecryptableBalanceArgs,\n} from '../types';\n\nexport const WITHDRAW_WITHHELD_TOKENS_FROM_ACCOUNTS_FOR_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR = 37;\n\nexport function getWithdrawWithheldTokensFromAccountsForConfidentialTransferFeeDiscriminatorBytes() {\n    return getU8Encoder().encode(WITHDRAW_WITHHELD_TOKENS_FROM_ACCOUNTS_FOR_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR);\n}\n\nexport const WITHDRAW_WITHHELD_TOKENS_FROM_ACCOUNTS_FOR_CONFIDENTIAL_TRANSFER_FEE_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR = 2;\n\nexport function getWithdrawWithheldTokensFromAccountsForConfidentialTransferFeeConfidentialTransferFeeDiscriminatorBytes() {\n    return getU8Encoder().encode(\n        WITHDRAW_WITHHELD_TOKENS_FROM_ACCOUNTS_FOR_CONFIDENTIAL_TRANSFER_FEE_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR,\n    );\n}\n\nexport type WithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMint extends string | AccountMeta<string> = string,\n    TAccountDestination extends string | AccountMeta<string> = string,\n    TAccountInstructionsSysvarOrContextState extends string | AccountMeta<string> = string,\n    TAccountRecord extends string | AccountMeta<string> = string,\n    TAccountAuthority extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [\n            TAccountMint extends string ? ReadonlyAccount<TAccountMint> : TAccountMint,\n            TAccountDestination extends string ? WritableAccount<TAccountDestination> : TAccountDestination,\n            TAccountInstructionsSysvarOrContextState extends string\n                ? ReadonlyAccount<TAccountInstructionsSysvarOrContextState>\n                : TAccountInstructionsSysvarOrContextState,\n            TAccountRecord extends string ? ReadonlyAccount<TAccountRecord> : TAccountRecord,\n            TAccountAuthority extends string ? ReadonlyAccount<TAccountAuthority> : TAccountAuthority,\n            ...TRemainingAccounts,\n        ]\n    >;\n\nexport type WithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstructionData = {\n    discriminator: number;\n    confidentialTransferFeeDiscriminator: number;\n    /** Number of token accounts harvested */\n    numTokenAccounts: number;\n    /** Proof instruction offset */\n    proofInstructionOffset: number;\n    /** The new decryptable balance in the destination token account */\n    newDecryptableAvailableBalance: DecryptableBalance;\n};\n\nexport type WithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstructionDataArgs = {\n    /** Number of token accounts harvested */\n    numTokenAccounts: number;\n    /** Proof instruction offset */\n    proofInstructionOffset: number;\n    /** The new decryptable balance in the destination token account */\n    newDecryptableAvailableBalance: DecryptableBalanceArgs;\n};\n\nexport function getWithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstructionDataEncoder(): FixedSizeEncoder<WithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['confidentialTransferFeeDiscriminator', getU8Encoder()],\n            ['numTokenAccounts', getU8Encoder()],\n            ['proofInstructionOffset', getI8Encoder()],\n            ['newDecryptableAvailableBalance', getDecryptableBalanceEncoder()],\n        ]),\n        value => ({\n            ...value,\n            discriminator: WITHDRAW_WITHHELD_TOKENS_FROM_ACCOUNTS_FOR_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR,\n            confidentialTransferFeeDiscriminator:\n                WITHDRAW_WITHHELD_TOKENS_FROM_ACCOUNTS_FOR_CONFIDENTIAL_TRANSFER_FEE_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR,\n        }),\n    );\n}\n\nexport function getWithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstructionDataDecoder(): FixedSizeDecoder<WithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['confidentialTransferFeeDiscriminator', getU8Decoder()],\n        ['numTokenAccounts', getU8Decoder()],\n        ['proofInstructionOffset', getI8Decoder()],\n        ['newDecryptableAvailableBalance', getDecryptableBalanceDecoder()],\n    ]);\n}\n\nexport function getWithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstructionDataCodec(): FixedSizeCodec<\n    WithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstructionDataArgs,\n    WithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstructionData\n> {\n    return combineCodec(\n        getWithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstructionDataEncoder(),\n        getWithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstructionDataDecoder(),\n    );\n}\n\nexport type WithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInput<\n    TAccountMint extends string = string,\n    TAccountDestination extends string = string,\n    TAccountInstructionsSysvarOrContextState extends string = string,\n    TAccountRecord extends string = string,\n    TAccountAuthority extends string = string,\n> = {\n    /** The token mint. */\n    mint: Address<TAccountMint>;\n    /** The fee receiver account. */\n    destination: Address<TAccountDestination>;\n    /** Instructions sysvar or context state account */\n    instructionsSysvarOrContextState: Address<TAccountInstructionsSysvarOrContextState>;\n    /** Optional record account */\n    record?: Address<TAccountRecord>;\n    /** The mint's withdraw_withheld_authority */\n    authority: Address<TAccountAuthority> | TransactionSigner<TAccountAuthority>;\n    numTokenAccounts: WithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstructionDataArgs['numTokenAccounts'];\n    proofInstructionOffset: WithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstructionDataArgs['proofInstructionOffset'];\n    newDecryptableAvailableBalance: WithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstructionDataArgs['newDecryptableAvailableBalance'];\n    multiSigners?: Array<TransactionSigner>;\n};\n\nexport function getWithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstruction<\n    TAccountMint extends string,\n    TAccountDestination extends string,\n    TAccountInstructionsSysvarOrContextState extends string,\n    TAccountRecord extends string,\n    TAccountAuthority extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: WithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInput<\n        TAccountMint,\n        TAccountDestination,\n        TAccountInstructionsSysvarOrContextState,\n        TAccountRecord,\n        TAccountAuthority\n    >,\n    config?: { programAddress?: TProgramAddress },\n): WithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstruction<\n    TProgramAddress,\n    TAccountMint,\n    TAccountDestination,\n    TAccountInstructionsSysvarOrContextState,\n    TAccountRecord,\n    (typeof input)['authority'] extends TransactionSigner<TAccountAuthority>\n        ? ReadonlySignerAccount<TAccountAuthority> & AccountSignerMeta<TAccountAuthority>\n        : TAccountAuthority\n> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        mint: { value: input.mint ?? null, isWritable: false },\n        destination: { value: input.destination ?? null, isWritable: true },\n        instructionsSysvarOrContextState: { value: input.instructionsSysvarOrContextState ?? null, isWritable: false },\n        record: { value: input.record ?? null, isWritable: false },\n        authority: { value: input.authority ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    // Remaining accounts.\n    const remainingAccounts: AccountMeta[] = (args.multiSigners ?? []).map(signer => ({\n        address: signer.address,\n        role: AccountRole.READONLY_SIGNER,\n        signer,\n    }));\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [\n            getAccountMeta(accounts.mint),\n            getAccountMeta(accounts.destination),\n            getAccountMeta(accounts.instructionsSysvarOrContextState),\n            getAccountMeta(accounts.record),\n            getAccountMeta(accounts.authority),\n            ...remainingAccounts,\n        ],\n        data: getWithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstructionDataEncoder().encode(\n            args as WithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstructionDataArgs,\n        ),\n        programAddress,\n    } as WithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstruction<\n        TProgramAddress,\n        TAccountMint,\n        TAccountDestination,\n        TAccountInstructionsSysvarOrContextState,\n        TAccountRecord,\n        (typeof input)['authority'] extends TransactionSigner<TAccountAuthority>\n            ? ReadonlySignerAccount<TAccountAuthority> & AccountSignerMeta<TAccountAuthority>\n            : TAccountAuthority\n    >);\n}\n\nexport type ParsedWithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The token mint. */\n        mint: TAccountMetas[0];\n        /** The fee receiver account. */\n        destination: TAccountMetas[1];\n        /** Instructions sysvar or context state account */\n        instructionsSysvarOrContextState: TAccountMetas[2];\n        /** Optional record account */\n        record?: TAccountMetas[3] | undefined;\n        /** The mint's withdraw_withheld_authority */\n        authority: TAccountMetas[4];\n    };\n    data: WithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstructionData;\n};\n\nexport function parseWithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstruction<\n    TProgram extends string,\n    TAccountMetas extends readonly AccountMeta[],\n>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedWithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 5) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    const getNextOptionalAccount = () => {\n        const accountMeta = getNextAccount();\n        return accountMeta.address === TOKEN_2022_PROGRAM_ADDRESS ? undefined : accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: {\n            mint: getNextAccount(),\n            destination: getNextAccount(),\n            instructionsSysvarOrContextState: getNextAccount(),\n            record: getNextOptionalAccount(),\n            authority: getNextAccount(),\n        },\n        data: getWithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstructionDataDecoder().decode(\n            instruction.data,\n        ),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    AccountRole,\n    combineCodec,\n    getStructDecoder,\n    getStructEncoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type AccountSignerMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlyAccount,\n    type ReadonlySignerAccount,\n    type ReadonlyUint8Array,\n    type TransactionSigner,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const WITHDRAW_WITHHELD_TOKENS_FROM_MINT_DISCRIMINATOR = 26;\n\nexport function getWithdrawWithheldTokensFromMintDiscriminatorBytes() {\n    return getU8Encoder().encode(WITHDRAW_WITHHELD_TOKENS_FROM_MINT_DISCRIMINATOR);\n}\n\nexport const WITHDRAW_WITHHELD_TOKENS_FROM_MINT_TRANSFER_FEE_DISCRIMINATOR = 2;\n\nexport function getWithdrawWithheldTokensFromMintTransferFeeDiscriminatorBytes() {\n    return getU8Encoder().encode(WITHDRAW_WITHHELD_TOKENS_FROM_MINT_TRANSFER_FEE_DISCRIMINATOR);\n}\n\nexport type WithdrawWithheldTokensFromMintInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMint extends string | AccountMeta<string> = string,\n    TAccountFeeReceiver extends string | AccountMeta<string> = string,\n    TAccountWithdrawWithheldAuthority extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [\n            TAccountMint extends string ? WritableAccount<TAccountMint> : TAccountMint,\n            TAccountFeeReceiver extends string ? WritableAccount<TAccountFeeReceiver> : TAccountFeeReceiver,\n            TAccountWithdrawWithheldAuthority extends string\n                ? ReadonlyAccount<TAccountWithdrawWithheldAuthority>\n                : TAccountWithdrawWithheldAuthority,\n            ...TRemainingAccounts,\n        ]\n    >;\n\nexport type WithdrawWithheldTokensFromMintInstructionData = { discriminator: number; transferFeeDiscriminator: number };\n\nexport type WithdrawWithheldTokensFromMintInstructionDataArgs = {};\n\nexport function getWithdrawWithheldTokensFromMintInstructionDataEncoder(): FixedSizeEncoder<WithdrawWithheldTokensFromMintInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['transferFeeDiscriminator', getU8Encoder()],\n        ]),\n        value => ({\n            ...value,\n            discriminator: WITHDRAW_WITHHELD_TOKENS_FROM_MINT_DISCRIMINATOR,\n            transferFeeDiscriminator: WITHDRAW_WITHHELD_TOKENS_FROM_MINT_TRANSFER_FEE_DISCRIMINATOR,\n        }),\n    );\n}\n\nexport function getWithdrawWithheldTokensFromMintInstructionDataDecoder(): FixedSizeDecoder<WithdrawWithheldTokensFromMintInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['transferFeeDiscriminator', getU8Decoder()],\n    ]);\n}\n\nexport function getWithdrawWithheldTokensFromMintInstructionDataCodec(): FixedSizeCodec<\n    WithdrawWithheldTokensFromMintInstructionDataArgs,\n    WithdrawWithheldTokensFromMintInstructionData\n> {\n    return combineCodec(\n        getWithdrawWithheldTokensFromMintInstructionDataEncoder(),\n        getWithdrawWithheldTokensFromMintInstructionDataDecoder(),\n    );\n}\n\nexport type WithdrawWithheldTokensFromMintInput<\n    TAccountMint extends string = string,\n    TAccountFeeReceiver extends string = string,\n    TAccountWithdrawWithheldAuthority extends string = string,\n> = {\n    /** The token mint. Must include the `TransferFeeConfig` extension. */\n    mint: Address<TAccountMint>;\n    /**\n     * The fee receiver account. Must include the `TransferFeeAmount`\n     * extension associated with the provided mint.\n     */\n    feeReceiver: Address<TAccountFeeReceiver>;\n    /** The mint's `withdraw_withheld_authority` or its multisignature account. */\n    withdrawWithheldAuthority:\n        | Address<TAccountWithdrawWithheldAuthority>\n        | TransactionSigner<TAccountWithdrawWithheldAuthority>;\n    multiSigners?: Array<TransactionSigner>;\n};\n\nexport function getWithdrawWithheldTokensFromMintInstruction<\n    TAccountMint extends string,\n    TAccountFeeReceiver extends string,\n    TAccountWithdrawWithheldAuthority extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: WithdrawWithheldTokensFromMintInput<TAccountMint, TAccountFeeReceiver, TAccountWithdrawWithheldAuthority>,\n    config?: { programAddress?: TProgramAddress },\n): WithdrawWithheldTokensFromMintInstruction<\n    TProgramAddress,\n    TAccountMint,\n    TAccountFeeReceiver,\n    (typeof input)['withdrawWithheldAuthority'] extends TransactionSigner<TAccountWithdrawWithheldAuthority>\n        ? ReadonlySignerAccount<TAccountWithdrawWithheldAuthority> &\n              AccountSignerMeta<TAccountWithdrawWithheldAuthority>\n        : TAccountWithdrawWithheldAuthority\n> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        mint: { value: input.mint ?? null, isWritable: true },\n        feeReceiver: { value: input.feeReceiver ?? null, isWritable: true },\n        withdrawWithheldAuthority: { value: input.withdrawWithheldAuthority ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    // Remaining accounts.\n    const remainingAccounts: AccountMeta[] = (args.multiSigners ?? []).map(signer => ({\n        address: signer.address,\n        role: AccountRole.READONLY_SIGNER,\n        signer,\n    }));\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [\n            getAccountMeta(accounts.mint),\n            getAccountMeta(accounts.feeReceiver),\n            getAccountMeta(accounts.withdrawWithheldAuthority),\n            ...remainingAccounts,\n        ],\n        data: getWithdrawWithheldTokensFromMintInstructionDataEncoder().encode({}),\n        programAddress,\n    } as WithdrawWithheldTokensFromMintInstruction<\n        TProgramAddress,\n        TAccountMint,\n        TAccountFeeReceiver,\n        (typeof input)['withdrawWithheldAuthority'] extends TransactionSigner<TAccountWithdrawWithheldAuthority>\n            ? ReadonlySignerAccount<TAccountWithdrawWithheldAuthority> &\n                  AccountSignerMeta<TAccountWithdrawWithheldAuthority>\n            : TAccountWithdrawWithheldAuthority\n    >);\n}\n\nexport type ParsedWithdrawWithheldTokensFromMintInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The token mint. Must include the `TransferFeeConfig` extension. */\n        mint: TAccountMetas[0];\n        /**\n         * The fee receiver account. Must include the `TransferFeeAmount`\n         * extension associated with the provided mint.\n         */\n        feeReceiver: TAccountMetas[1];\n        /** The mint's `withdraw_withheld_authority` or its multisignature account. */\n        withdrawWithheldAuthority: TAccountMetas[2];\n    };\n    data: WithdrawWithheldTokensFromMintInstructionData;\n};\n\nexport function parseWithdrawWithheldTokensFromMintInstruction<\n    TProgram extends string,\n    TAccountMetas extends readonly AccountMeta[],\n>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedWithdrawWithheldTokensFromMintInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 3) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: {\n            mint: getNextAccount(),\n            feeReceiver: getNextAccount(),\n            withdrawWithheldAuthority: getNextAccount(),\n        },\n        data: getWithdrawWithheldTokensFromMintInstructionDataDecoder().decode(instruction.data),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    AccountRole,\n    combineCodec,\n    getI8Decoder,\n    getI8Encoder,\n    getStructDecoder,\n    getStructEncoder,\n    getU8Decoder,\n    getU8Encoder,\n    transformEncoder,\n    type AccountMeta,\n    type AccountSignerMeta,\n    type Address,\n    type FixedSizeCodec,\n    type FixedSizeDecoder,\n    type FixedSizeEncoder,\n    type Instruction,\n    type InstructionWithAccounts,\n    type InstructionWithData,\n    type ReadonlyAccount,\n    type ReadonlySignerAccount,\n    type ReadonlyUint8Array,\n    type TransactionSigner,\n    type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\nimport {\n    getDecryptableBalanceDecoder,\n    getDecryptableBalanceEncoder,\n    type DecryptableBalance,\n    type DecryptableBalanceArgs,\n} from '../types';\n\nexport const WITHDRAW_WITHHELD_TOKENS_FROM_MINT_FOR_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR = 37;\n\nexport function getWithdrawWithheldTokensFromMintForConfidentialTransferFeeDiscriminatorBytes() {\n    return getU8Encoder().encode(WITHDRAW_WITHHELD_TOKENS_FROM_MINT_FOR_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR);\n}\n\nexport const WITHDRAW_WITHHELD_TOKENS_FROM_MINT_FOR_CONFIDENTIAL_TRANSFER_FEE_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR = 1;\n\nexport function getWithdrawWithheldTokensFromMintForConfidentialTransferFeeConfidentialTransferFeeDiscriminatorBytes() {\n    return getU8Encoder().encode(\n        WITHDRAW_WITHHELD_TOKENS_FROM_MINT_FOR_CONFIDENTIAL_TRANSFER_FEE_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR,\n    );\n}\n\nexport type WithdrawWithheldTokensFromMintForConfidentialTransferFeeInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMint extends string | AccountMeta<string> = string,\n    TAccountDestination extends string | AccountMeta<string> = string,\n    TAccountInstructionsSysvarOrContextState extends string | AccountMeta<string> = string,\n    TAccountRecord extends string | AccountMeta<string> = string,\n    TAccountAuthority extends string | AccountMeta<string> = string,\n    TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n    InstructionWithData<ReadonlyUint8Array> &\n    InstructionWithAccounts<\n        [\n            TAccountMint extends string ? WritableAccount<TAccountMint> : TAccountMint,\n            TAccountDestination extends string ? WritableAccount<TAccountDestination> : TAccountDestination,\n            TAccountInstructionsSysvarOrContextState extends string\n                ? ReadonlyAccount<TAccountInstructionsSysvarOrContextState>\n                : TAccountInstructionsSysvarOrContextState,\n            TAccountRecord extends string ? ReadonlyAccount<TAccountRecord> : TAccountRecord,\n            TAccountAuthority extends string ? ReadonlyAccount<TAccountAuthority> : TAccountAuthority,\n            ...TRemainingAccounts,\n        ]\n    >;\n\nexport type WithdrawWithheldTokensFromMintForConfidentialTransferFeeInstructionData = {\n    discriminator: number;\n    confidentialTransferFeeDiscriminator: number;\n    /** Proof instruction offset */\n    proofInstructionOffset: number;\n    /** The new decryptable balance in the destination token account */\n    newDecryptableAvailableBalance: DecryptableBalance;\n};\n\nexport type WithdrawWithheldTokensFromMintForConfidentialTransferFeeInstructionDataArgs = {\n    /** Proof instruction offset */\n    proofInstructionOffset: number;\n    /** The new decryptable balance in the destination token account */\n    newDecryptableAvailableBalance: DecryptableBalanceArgs;\n};\n\nexport function getWithdrawWithheldTokensFromMintForConfidentialTransferFeeInstructionDataEncoder(): FixedSizeEncoder<WithdrawWithheldTokensFromMintForConfidentialTransferFeeInstructionDataArgs> {\n    return transformEncoder(\n        getStructEncoder([\n            ['discriminator', getU8Encoder()],\n            ['confidentialTransferFeeDiscriminator', getU8Encoder()],\n            ['proofInstructionOffset', getI8Encoder()],\n            ['newDecryptableAvailableBalance', getDecryptableBalanceEncoder()],\n        ]),\n        value => ({\n            ...value,\n            discriminator: WITHDRAW_WITHHELD_TOKENS_FROM_MINT_FOR_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR,\n            confidentialTransferFeeDiscriminator:\n                WITHDRAW_WITHHELD_TOKENS_FROM_MINT_FOR_CONFIDENTIAL_TRANSFER_FEE_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR,\n        }),\n    );\n}\n\nexport function getWithdrawWithheldTokensFromMintForConfidentialTransferFeeInstructionDataDecoder(): FixedSizeDecoder<WithdrawWithheldTokensFromMintForConfidentialTransferFeeInstructionData> {\n    return getStructDecoder([\n        ['discriminator', getU8Decoder()],\n        ['confidentialTransferFeeDiscriminator', getU8Decoder()],\n        ['proofInstructionOffset', getI8Decoder()],\n        ['newDecryptableAvailableBalance', getDecryptableBalanceDecoder()],\n    ]);\n}\n\nexport function getWithdrawWithheldTokensFromMintForConfidentialTransferFeeInstructionDataCodec(): FixedSizeCodec<\n    WithdrawWithheldTokensFromMintForConfidentialTransferFeeInstructionDataArgs,\n    WithdrawWithheldTokensFromMintForConfidentialTransferFeeInstructionData\n> {\n    return combineCodec(\n        getWithdrawWithheldTokensFromMintForConfidentialTransferFeeInstructionDataEncoder(),\n        getWithdrawWithheldTokensFromMintForConfidentialTransferFeeInstructionDataDecoder(),\n    );\n}\n\nexport type WithdrawWithheldTokensFromMintForConfidentialTransferFeeInput<\n    TAccountMint extends string = string,\n    TAccountDestination extends string = string,\n    TAccountInstructionsSysvarOrContextState extends string = string,\n    TAccountRecord extends string = string,\n    TAccountAuthority extends string = string,\n> = {\n    /** The token mint. */\n    mint: Address<TAccountMint>;\n    /** The fee receiver account. */\n    destination: Address<TAccountDestination>;\n    /** Instructions sysvar or context state account */\n    instructionsSysvarOrContextState: Address<TAccountInstructionsSysvarOrContextState>;\n    /** Optional record account if proof is read from record */\n    record?: Address<TAccountRecord>;\n    /** The mint's withdraw_withheld_authority */\n    authority: Address<TAccountAuthority> | TransactionSigner<TAccountAuthority>;\n    proofInstructionOffset: WithdrawWithheldTokensFromMintForConfidentialTransferFeeInstructionDataArgs['proofInstructionOffset'];\n    newDecryptableAvailableBalance: WithdrawWithheldTokensFromMintForConfidentialTransferFeeInstructionDataArgs['newDecryptableAvailableBalance'];\n    multiSigners?: Array<TransactionSigner>;\n};\n\nexport function getWithdrawWithheldTokensFromMintForConfidentialTransferFeeInstruction<\n    TAccountMint extends string,\n    TAccountDestination extends string,\n    TAccountInstructionsSysvarOrContextState extends string,\n    TAccountRecord extends string,\n    TAccountAuthority extends string,\n    TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n    input: WithdrawWithheldTokensFromMintForConfidentialTransferFeeInput<\n        TAccountMint,\n        TAccountDestination,\n        TAccountInstructionsSysvarOrContextState,\n        TAccountRecord,\n        TAccountAuthority\n    >,\n    config?: { programAddress?: TProgramAddress },\n): WithdrawWithheldTokensFromMintForConfidentialTransferFeeInstruction<\n    TProgramAddress,\n    TAccountMint,\n    TAccountDestination,\n    TAccountInstructionsSysvarOrContextState,\n    TAccountRecord,\n    (typeof input)['authority'] extends TransactionSigner<TAccountAuthority>\n        ? ReadonlySignerAccount<TAccountAuthority> & AccountSignerMeta<TAccountAuthority>\n        : TAccountAuthority\n> {\n    // Program address.\n    const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n    // Original accounts.\n    const originalAccounts = {\n        mint: { value: input.mint ?? null, isWritable: true },\n        destination: { value: input.destination ?? null, isWritable: true },\n        instructionsSysvarOrContextState: { value: input.instructionsSysvarOrContextState ?? null, isWritable: false },\n        record: { value: input.record ?? null, isWritable: false },\n        authority: { value: input.authority ?? null, isWritable: false },\n    };\n    const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n    // Original args.\n    const args = { ...input };\n\n    // Remaining accounts.\n    const remainingAccounts: AccountMeta[] = (args.multiSigners ?? []).map(signer => ({\n        address: signer.address,\n        role: AccountRole.READONLY_SIGNER,\n        signer,\n    }));\n\n    const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n    return Object.freeze({\n        accounts: [\n            getAccountMeta(accounts.mint),\n            getAccountMeta(accounts.destination),\n            getAccountMeta(accounts.instructionsSysvarOrContextState),\n            getAccountMeta(accounts.record),\n            getAccountMeta(accounts.authority),\n            ...remainingAccounts,\n        ],\n        data: getWithdrawWithheldTokensFromMintForConfidentialTransferFeeInstructionDataEncoder().encode(\n            args as WithdrawWithheldTokensFromMintForConfidentialTransferFeeInstructionDataArgs,\n        ),\n        programAddress,\n    } as WithdrawWithheldTokensFromMintForConfidentialTransferFeeInstruction<\n        TProgramAddress,\n        TAccountMint,\n        TAccountDestination,\n        TAccountInstructionsSysvarOrContextState,\n        TAccountRecord,\n        (typeof input)['authority'] extends TransactionSigner<TAccountAuthority>\n            ? ReadonlySignerAccount<TAccountAuthority> & AccountSignerMeta<TAccountAuthority>\n            : TAccountAuthority\n    >);\n}\n\nexport type ParsedWithdrawWithheldTokensFromMintForConfidentialTransferFeeInstruction<\n    TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n    TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n    programAddress: Address<TProgram>;\n    accounts: {\n        /** The token mint. */\n        mint: TAccountMetas[0];\n        /** The fee receiver account. */\n        destination: TAccountMetas[1];\n        /** Instructions sysvar or context state account */\n        instructionsSysvarOrContextState: TAccountMetas[2];\n        /** Optional record account if proof is read from record */\n        record?: TAccountMetas[3] | undefined;\n        /** The mint's withdraw_withheld_authority */\n        authority: TAccountMetas[4];\n    };\n    data: WithdrawWithheldTokensFromMintForConfidentialTransferFeeInstructionData;\n};\n\nexport function parseWithdrawWithheldTokensFromMintForConfidentialTransferFeeInstruction<\n    TProgram extends string,\n    TAccountMetas extends readonly AccountMeta[],\n>(\n    instruction: Instruction<TProgram> &\n        InstructionWithAccounts<TAccountMetas> &\n        InstructionWithData<ReadonlyUint8Array>,\n): ParsedWithdrawWithheldTokensFromMintForConfidentialTransferFeeInstruction<TProgram, TAccountMetas> {\n    if (instruction.accounts.length < 5) {\n        // TODO: Coded error.\n        throw new Error('Not enough accounts');\n    }\n    let accountIndex = 0;\n    const getNextAccount = () => {\n        const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n        accountIndex += 1;\n        return accountMeta;\n    };\n    const getNextOptionalAccount = () => {\n        const accountMeta = getNextAccount();\n        return accountMeta.address === TOKEN_2022_PROGRAM_ADDRESS ? undefined : accountMeta;\n    };\n    return {\n        programAddress: instruction.programAddress,\n        accounts: {\n            mint: getNextAccount(),\n            destination: getNextAccount(),\n            instructionsSysvarOrContextState: getNextAccount(),\n            record: getNextOptionalAccount(),\n            authority: getNextAccount(),\n        },\n        data: getWithdrawWithheldTokensFromMintForConfidentialTransferFeeInstructionDataDecoder().decode(\n            instruction.data,\n        ),\n    };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    assertIsInstructionWithAccounts,\n    containsBytes,\n    getU8Encoder,\n    type Address,\n    type Instruction,\n    type InstructionWithData,\n    type ReadonlyUint8Array,\n} from '@solana/kit';\nimport {\n    parseCreateAssociatedTokenIdempotentInstruction,\n    parseCreateAssociatedTokenInstruction,\n    parseRecoverNestedAssociatedTokenInstruction,\n    type ParsedCreateAssociatedTokenIdempotentInstruction,\n    type ParsedCreateAssociatedTokenInstruction,\n    type ParsedRecoverNestedAssociatedTokenInstruction,\n} from '../instructions';\n\nexport const ASSOCIATED_TOKEN_PROGRAM_ADDRESS =\n    'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>;\n\nexport enum AssociatedTokenInstruction {\n    CreateAssociatedToken,\n    CreateAssociatedTokenIdempotent,\n    RecoverNestedAssociatedToken,\n}\n\nexport function identifyAssociatedTokenInstruction(\n    instruction: { data: ReadonlyUint8Array } | ReadonlyUint8Array,\n): AssociatedTokenInstruction {\n    const data = 'data' in instruction ? instruction.data : instruction;\n    if (containsBytes(data, getU8Encoder().encode(0), 0)) {\n        return AssociatedTokenInstruction.CreateAssociatedToken;\n    }\n    if (containsBytes(data, getU8Encoder().encode(1), 0)) {\n        return AssociatedTokenInstruction.CreateAssociatedTokenIdempotent;\n    }\n    if (containsBytes(data, getU8Encoder().encode(2), 0)) {\n        return AssociatedTokenInstruction.RecoverNestedAssociatedToken;\n    }\n    throw new Error('The provided instruction could not be identified as a associatedToken instruction.');\n}\n\nexport type ParsedAssociatedTokenInstruction<TProgram extends string = 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'> =\n    | ({\n          instructionType: AssociatedTokenInstruction.CreateAssociatedToken;\n      } & ParsedCreateAssociatedTokenInstruction<TProgram>)\n    | ({\n          instructionType: AssociatedTokenInstruction.CreateAssociatedTokenIdempotent;\n      } & ParsedCreateAssociatedTokenIdempotentInstruction<TProgram>)\n    | ({\n          instructionType: AssociatedTokenInstruction.RecoverNestedAssociatedToken;\n      } & ParsedRecoverNestedAssociatedTokenInstruction<TProgram>);\n\nexport function parseAssociatedTokenInstruction<TProgram extends string>(\n    instruction: Instruction<TProgram> & InstructionWithData<ReadonlyUint8Array>,\n): ParsedAssociatedTokenInstruction<TProgram> {\n    const instructionType = identifyAssociatedTokenInstruction(instruction);\n    switch (instructionType) {\n        case AssociatedTokenInstruction.CreateAssociatedToken: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: AssociatedTokenInstruction.CreateAssociatedToken,\n                ...parseCreateAssociatedTokenInstruction(instruction),\n            };\n        }\n        case AssociatedTokenInstruction.CreateAssociatedTokenIdempotent: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: AssociatedTokenInstruction.CreateAssociatedTokenIdempotent,\n                ...parseCreateAssociatedTokenIdempotentInstruction(instruction),\n            };\n        }\n        case AssociatedTokenInstruction.RecoverNestedAssociatedToken: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: AssociatedTokenInstruction.RecoverNestedAssociatedToken,\n                ...parseRecoverNestedAssociatedTokenInstruction(instruction),\n            };\n        }\n        default:\n            throw new Error(`Unrecognized instruction type: ${instructionType as string}`);\n    }\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    assertIsInstructionWithAccounts,\n    containsBytes,\n    getU8Encoder,\n    type Address,\n    type Instruction,\n    type InstructionWithData,\n    type ReadonlyUint8Array,\n} from '@solana/kit';\nimport {\n    parseAmountToUiAmountInstruction,\n    parseApplyConfidentialPendingBalanceInstruction,\n    parseApproveCheckedInstruction,\n    parseApproveConfidentialTransferAccountInstruction,\n    parseApproveInstruction,\n    parseBurnCheckedInstruction,\n    parseBurnInstruction,\n    parseCloseAccountInstruction,\n    parseConfidentialDepositInstruction,\n    parseConfidentialTransferInstruction,\n    parseConfidentialTransferWithFeeInstruction,\n    parseConfidentialWithdrawInstruction,\n    parseConfigureConfidentialTransferAccountInstruction,\n    parseCreateNativeMintInstruction,\n    parseDisableConfidentialCreditsInstruction,\n    parseDisableCpiGuardInstruction,\n    parseDisableHarvestToMintInstruction,\n    parseDisableMemoTransfersInstruction,\n    parseDisableNonConfidentialCreditsInstruction,\n    parseEmitTokenMetadataInstruction,\n    parseEmptyConfidentialTransferAccountInstruction,\n    parseEnableConfidentialCreditsInstruction,\n    parseEnableCpiGuardInstruction,\n    parseEnableHarvestToMintInstruction,\n    parseEnableMemoTransfersInstruction,\n    parseEnableNonConfidentialCreditsInstruction,\n    parseFreezeAccountInstruction,\n    parseGetAccountDataSizeInstruction,\n    parseHarvestWithheldTokensToMintForConfidentialTransferFeeInstruction,\n    parseHarvestWithheldTokensToMintInstruction,\n    parseInitializeAccount2Instruction,\n    parseInitializeAccount3Instruction,\n    parseInitializeAccountInstruction,\n    parseInitializeConfidentialTransferFeeInstruction,\n    parseInitializeConfidentialTransferMintInstruction,\n    parseInitializeDefaultAccountStateInstruction,\n    parseInitializeGroupMemberPointerInstruction,\n    parseInitializeGroupPointerInstruction,\n    parseInitializeImmutableOwnerInstruction,\n    parseInitializeInterestBearingMintInstruction,\n    parseInitializeMetadataPointerInstruction,\n    parseInitializeMint2Instruction,\n    parseInitializeMintCloseAuthorityInstruction,\n    parseInitializeMintInstruction,\n    parseInitializeMultisig2Instruction,\n    parseInitializeMultisigInstruction,\n    parseInitializeNonTransferableMintInstruction,\n    parseInitializePausableConfigInstruction,\n    parseInitializePermanentDelegateInstruction,\n    parseInitializePermissionedBurnInstruction,\n    parseInitializeScaledUiAmountMintInstruction,\n    parseInitializeTokenGroupInstruction,\n    parseInitializeTokenGroupMemberInstruction,\n    parseInitializeTokenMetadataInstruction,\n    parseInitializeTransferFeeConfigInstruction,\n    parseInitializeTransferHookInstruction,\n    parseMintToCheckedInstruction,\n    parseMintToInstruction,\n    parsePauseInstruction,\n    parsePermissionedBurnCheckedInstruction,\n    parsePermissionedBurnInstruction,\n    parseReallocateInstruction,\n    parseRemoveTokenMetadataKeyInstruction,\n    parseResumeInstruction,\n    parseRevokeInstruction,\n    parseSetAuthorityInstruction,\n    parseSetTransferFeeInstruction,\n    parseSyncNativeInstruction,\n    parseThawAccountInstruction,\n    parseTransferCheckedInstruction,\n    parseTransferCheckedWithFeeInstruction,\n    parseTransferInstruction,\n    parseUiAmountToAmountInstruction,\n    parseUnwrapLamportsInstruction,\n    parseUpdateConfidentialTransferMintInstruction,\n    parseUpdateDefaultAccountStateInstruction,\n    parseUpdateGroupMemberPointerInstruction,\n    parseUpdateGroupPointerInstruction,\n    parseUpdateMetadataPointerInstruction,\n    parseUpdateMultiplierScaledUiMintInstruction,\n    parseUpdateRateInterestBearingMintInstruction,\n    parseUpdateTokenGroupMaxSizeInstruction,\n    parseUpdateTokenGroupUpdateAuthorityInstruction,\n    parseUpdateTokenMetadataFieldInstruction,\n    parseUpdateTokenMetadataUpdateAuthorityInstruction,\n    parseUpdateTransferHookInstruction,\n    parseWithdrawExcessLamportsInstruction,\n    parseWithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstruction,\n    parseWithdrawWithheldTokensFromAccountsInstruction,\n    parseWithdrawWithheldTokensFromMintForConfidentialTransferFeeInstruction,\n    parseWithdrawWithheldTokensFromMintInstruction,\n    type ParsedAmountToUiAmountInstruction,\n    type ParsedApplyConfidentialPendingBalanceInstruction,\n    type ParsedApproveCheckedInstruction,\n    type ParsedApproveConfidentialTransferAccountInstruction,\n    type ParsedApproveInstruction,\n    type ParsedBurnCheckedInstruction,\n    type ParsedBurnInstruction,\n    type ParsedCloseAccountInstruction,\n    type ParsedConfidentialDepositInstruction,\n    type ParsedConfidentialTransferInstruction,\n    type ParsedConfidentialTransferWithFeeInstruction,\n    type ParsedConfidentialWithdrawInstruction,\n    type ParsedConfigureConfidentialTransferAccountInstruction,\n    type ParsedCreateNativeMintInstruction,\n    type ParsedDisableConfidentialCreditsInstruction,\n    type ParsedDisableCpiGuardInstruction,\n    type ParsedDisableHarvestToMintInstruction,\n    type ParsedDisableMemoTransfersInstruction,\n    type ParsedDisableNonConfidentialCreditsInstruction,\n    type ParsedEmitTokenMetadataInstruction,\n    type ParsedEmptyConfidentialTransferAccountInstruction,\n    type ParsedEnableConfidentialCreditsInstruction,\n    type ParsedEnableCpiGuardInstruction,\n    type ParsedEnableHarvestToMintInstruction,\n    type ParsedEnableMemoTransfersInstruction,\n    type ParsedEnableNonConfidentialCreditsInstruction,\n    type ParsedFreezeAccountInstruction,\n    type ParsedGetAccountDataSizeInstruction,\n    type ParsedHarvestWithheldTokensToMintForConfidentialTransferFeeInstruction,\n    type ParsedHarvestWithheldTokensToMintInstruction,\n    type ParsedInitializeAccount2Instruction,\n    type ParsedInitializeAccount3Instruction,\n    type ParsedInitializeAccountInstruction,\n    type ParsedInitializeConfidentialTransferFeeInstruction,\n    type ParsedInitializeConfidentialTransferMintInstruction,\n    type ParsedInitializeDefaultAccountStateInstruction,\n    type ParsedInitializeGroupMemberPointerInstruction,\n    type ParsedInitializeGroupPointerInstruction,\n    type ParsedInitializeImmutableOwnerInstruction,\n    type ParsedInitializeInterestBearingMintInstruction,\n    type ParsedInitializeMetadataPointerInstruction,\n    type ParsedInitializeMint2Instruction,\n    type ParsedInitializeMintCloseAuthorityInstruction,\n    type ParsedInitializeMintInstruction,\n    type ParsedInitializeMultisig2Instruction,\n    type ParsedInitializeMultisigInstruction,\n    type ParsedInitializeNonTransferableMintInstruction,\n    type ParsedInitializePausableConfigInstruction,\n    type ParsedInitializePermanentDelegateInstruction,\n    type ParsedInitializePermissionedBurnInstruction,\n    type ParsedInitializeScaledUiAmountMintInstruction,\n    type ParsedInitializeTokenGroupInstruction,\n    type ParsedInitializeTokenGroupMemberInstruction,\n    type ParsedInitializeTokenMetadataInstruction,\n    type ParsedInitializeTransferFeeConfigInstruction,\n    type ParsedInitializeTransferHookInstruction,\n    type ParsedMintToCheckedInstruction,\n    type ParsedMintToInstruction,\n    type ParsedPauseInstruction,\n    type ParsedPermissionedBurnCheckedInstruction,\n    type ParsedPermissionedBurnInstruction,\n    type ParsedReallocateInstruction,\n    type ParsedRemoveTokenMetadataKeyInstruction,\n    type ParsedResumeInstruction,\n    type ParsedRevokeInstruction,\n    type ParsedSetAuthorityInstruction,\n    type ParsedSetTransferFeeInstruction,\n    type ParsedSyncNativeInstruction,\n    type ParsedThawAccountInstruction,\n    type ParsedTransferCheckedInstruction,\n    type ParsedTransferCheckedWithFeeInstruction,\n    type ParsedTransferInstruction,\n    type ParsedUiAmountToAmountInstruction,\n    type ParsedUnwrapLamportsInstruction,\n    type ParsedUpdateConfidentialTransferMintInstruction,\n    type ParsedUpdateDefaultAccountStateInstruction,\n    type ParsedUpdateGroupMemberPointerInstruction,\n    type ParsedUpdateGroupPointerInstruction,\n    type ParsedUpdateMetadataPointerInstruction,\n    type ParsedUpdateMultiplierScaledUiMintInstruction,\n    type ParsedUpdateRateInterestBearingMintInstruction,\n    type ParsedUpdateTokenGroupMaxSizeInstruction,\n    type ParsedUpdateTokenGroupUpdateAuthorityInstruction,\n    type ParsedUpdateTokenMetadataFieldInstruction,\n    type ParsedUpdateTokenMetadataUpdateAuthorityInstruction,\n    type ParsedUpdateTransferHookInstruction,\n    type ParsedWithdrawExcessLamportsInstruction,\n    type ParsedWithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstruction,\n    type ParsedWithdrawWithheldTokensFromAccountsInstruction,\n    type ParsedWithdrawWithheldTokensFromMintForConfidentialTransferFeeInstruction,\n    type ParsedWithdrawWithheldTokensFromMintInstruction,\n} from '../instructions';\n\nexport const TOKEN_2022_PROGRAM_ADDRESS =\n    'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb' as Address<'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb'>;\n\nexport enum Token2022Account {\n    Mint,\n    Token,\n    Multisig,\n}\n\nexport function identifyToken2022Account(account: { data: ReadonlyUint8Array } | ReadonlyUint8Array): Token2022Account {\n    const data = 'data' in account ? account.data : account;\n    if (data.length === 82) {\n        return Token2022Account.Mint;\n    }\n    if (data.length === 165) {\n        return Token2022Account.Token;\n    }\n    if (data.length === 355) {\n        return Token2022Account.Multisig;\n    }\n    throw new Error('The provided account could not be identified as a token-2022 account.');\n}\n\nexport enum Token2022Instruction {\n    InitializeMint,\n    InitializeAccount,\n    InitializeMultisig,\n    Transfer,\n    Approve,\n    Revoke,\n    SetAuthority,\n    MintTo,\n    Burn,\n    CloseAccount,\n    FreezeAccount,\n    ThawAccount,\n    TransferChecked,\n    ApproveChecked,\n    MintToChecked,\n    BurnChecked,\n    InitializeAccount2,\n    SyncNative,\n    InitializeAccount3,\n    InitializeMultisig2,\n    InitializeMint2,\n    GetAccountDataSize,\n    InitializeImmutableOwner,\n    AmountToUiAmount,\n    UiAmountToAmount,\n    InitializeMintCloseAuthority,\n    InitializeTransferFeeConfig,\n    TransferCheckedWithFee,\n    WithdrawWithheldTokensFromMint,\n    WithdrawWithheldTokensFromAccounts,\n    HarvestWithheldTokensToMint,\n    SetTransferFee,\n    InitializeConfidentialTransferMint,\n    UpdateConfidentialTransferMint,\n    ConfigureConfidentialTransferAccount,\n    ApproveConfidentialTransferAccount,\n    EmptyConfidentialTransferAccount,\n    ConfidentialDeposit,\n    ConfidentialWithdraw,\n    ConfidentialTransfer,\n    ApplyConfidentialPendingBalance,\n    EnableConfidentialCredits,\n    DisableConfidentialCredits,\n    EnableNonConfidentialCredits,\n    DisableNonConfidentialCredits,\n    ConfidentialTransferWithFee,\n    InitializeDefaultAccountState,\n    UpdateDefaultAccountState,\n    Reallocate,\n    EnableMemoTransfers,\n    DisableMemoTransfers,\n    CreateNativeMint,\n    InitializeNonTransferableMint,\n    InitializeInterestBearingMint,\n    UpdateRateInterestBearingMint,\n    EnableCpiGuard,\n    DisableCpiGuard,\n    InitializePermanentDelegate,\n    InitializeTransferHook,\n    UpdateTransferHook,\n    InitializeConfidentialTransferFee,\n    WithdrawWithheldTokensFromMintForConfidentialTransferFee,\n    WithdrawWithheldTokensFromAccountsForConfidentialTransferFee,\n    HarvestWithheldTokensToMintForConfidentialTransferFee,\n    EnableHarvestToMint,\n    DisableHarvestToMint,\n    WithdrawExcessLamports,\n    InitializeMetadataPointer,\n    UpdateMetadataPointer,\n    InitializeGroupPointer,\n    UpdateGroupPointer,\n    InitializeGroupMemberPointer,\n    UpdateGroupMemberPointer,\n    InitializeScaledUiAmountMint,\n    UpdateMultiplierScaledUiMint,\n    InitializePausableConfig,\n    Pause,\n    Resume,\n    InitializeTokenMetadata,\n    UpdateTokenMetadataField,\n    RemoveTokenMetadataKey,\n    UpdateTokenMetadataUpdateAuthority,\n    EmitTokenMetadata,\n    InitializeTokenGroup,\n    UpdateTokenGroupMaxSize,\n    UpdateTokenGroupUpdateAuthority,\n    InitializeTokenGroupMember,\n    UnwrapLamports,\n    InitializePermissionedBurn,\n    PermissionedBurn,\n    PermissionedBurnChecked,\n}\n\nexport function identifyToken2022Instruction(\n    instruction: { data: ReadonlyUint8Array } | ReadonlyUint8Array,\n): Token2022Instruction {\n    const data = 'data' in instruction ? instruction.data : instruction;\n    if (containsBytes(data, getU8Encoder().encode(0), 0)) {\n        return Token2022Instruction.InitializeMint;\n    }\n    if (containsBytes(data, getU8Encoder().encode(1), 0)) {\n        return Token2022Instruction.InitializeAccount;\n    }\n    if (containsBytes(data, getU8Encoder().encode(2), 0)) {\n        return Token2022Instruction.InitializeMultisig;\n    }\n    if (containsBytes(data, getU8Encoder().encode(3), 0)) {\n        return Token2022Instruction.Transfer;\n    }\n    if (containsBytes(data, getU8Encoder().encode(4), 0)) {\n        return Token2022Instruction.Approve;\n    }\n    if (containsBytes(data, getU8Encoder().encode(5), 0)) {\n        return Token2022Instruction.Revoke;\n    }\n    if (containsBytes(data, getU8Encoder().encode(6), 0)) {\n        return Token2022Instruction.SetAuthority;\n    }\n    if (containsBytes(data, getU8Encoder().encode(7), 0)) {\n        return Token2022Instruction.MintTo;\n    }\n    if (containsBytes(data, getU8Encoder().encode(8), 0)) {\n        return Token2022Instruction.Burn;\n    }\n    if (containsBytes(data, getU8Encoder().encode(9), 0)) {\n        return Token2022Instruction.CloseAccount;\n    }\n    if (containsBytes(data, getU8Encoder().encode(10), 0)) {\n        return Token2022Instruction.FreezeAccount;\n    }\n    if (containsBytes(data, getU8Encoder().encode(11), 0)) {\n        return Token2022Instruction.ThawAccount;\n    }\n    if (containsBytes(data, getU8Encoder().encode(12), 0)) {\n        return Token2022Instruction.TransferChecked;\n    }\n    if (containsBytes(data, getU8Encoder().encode(13), 0)) {\n        return Token2022Instruction.ApproveChecked;\n    }\n    if (containsBytes(data, getU8Encoder().encode(14), 0)) {\n        return Token2022Instruction.MintToChecked;\n    }\n    if (containsBytes(data, getU8Encoder().encode(15), 0)) {\n        return Token2022Instruction.BurnChecked;\n    }\n    if (containsBytes(data, getU8Encoder().encode(16), 0)) {\n        return Token2022Instruction.InitializeAccount2;\n    }\n    if (containsBytes(data, getU8Encoder().encode(17), 0)) {\n        return Token2022Instruction.SyncNative;\n    }\n    if (containsBytes(data, getU8Encoder().encode(18), 0)) {\n        return Token2022Instruction.InitializeAccount3;\n    }\n    if (containsBytes(data, getU8Encoder().encode(19), 0)) {\n        return Token2022Instruction.InitializeMultisig2;\n    }\n    if (containsBytes(data, getU8Encoder().encode(20), 0)) {\n        return Token2022Instruction.InitializeMint2;\n    }\n    if (containsBytes(data, getU8Encoder().encode(21), 0)) {\n        return Token2022Instruction.GetAccountDataSize;\n    }\n    if (containsBytes(data, getU8Encoder().encode(22), 0)) {\n        return Token2022Instruction.InitializeImmutableOwner;\n    }\n    if (containsBytes(data, getU8Encoder().encode(23), 0)) {\n        return Token2022Instruction.AmountToUiAmount;\n    }\n    if (containsBytes(data, getU8Encoder().encode(24), 0)) {\n        return Token2022Instruction.UiAmountToAmount;\n    }\n    if (containsBytes(data, getU8Encoder().encode(25), 0)) {\n        return Token2022Instruction.InitializeMintCloseAuthority;\n    }\n    if (containsBytes(data, getU8Encoder().encode(26), 0) && containsBytes(data, getU8Encoder().encode(0), 1)) {\n        return Token2022Instruction.InitializeTransferFeeConfig;\n    }\n    if (containsBytes(data, getU8Encoder().encode(26), 0) && containsBytes(data, getU8Encoder().encode(1), 1)) {\n        return Token2022Instruction.TransferCheckedWithFee;\n    }\n    if (containsBytes(data, getU8Encoder().encode(26), 0) && containsBytes(data, getU8Encoder().encode(2), 1)) {\n        return Token2022Instruction.WithdrawWithheldTokensFromMint;\n    }\n    if (containsBytes(data, getU8Encoder().encode(26), 0) && containsBytes(data, getU8Encoder().encode(3), 1)) {\n        return Token2022Instruction.WithdrawWithheldTokensFromAccounts;\n    }\n    if (containsBytes(data, getU8Encoder().encode(26), 0) && containsBytes(data, getU8Encoder().encode(4), 1)) {\n        return Token2022Instruction.HarvestWithheldTokensToMint;\n    }\n    if (containsBytes(data, getU8Encoder().encode(26), 0) && containsBytes(data, getU8Encoder().encode(5), 1)) {\n        return Token2022Instruction.SetTransferFee;\n    }\n    if (containsBytes(data, getU8Encoder().encode(27), 0) && containsBytes(data, getU8Encoder().encode(0), 1)) {\n        return Token2022Instruction.InitializeConfidentialTransferMint;\n    }\n    if (containsBytes(data, getU8Encoder().encode(27), 0) && containsBytes(data, getU8Encoder().encode(1), 1)) {\n        return Token2022Instruction.UpdateConfidentialTransferMint;\n    }\n    if (containsBytes(data, getU8Encoder().encode(27), 0) && containsBytes(data, getU8Encoder().encode(2), 1)) {\n        return Token2022Instruction.ConfigureConfidentialTransferAccount;\n    }\n    if (containsBytes(data, getU8Encoder().encode(27), 0) && containsBytes(data, getU8Encoder().encode(3), 1)) {\n        return Token2022Instruction.ApproveConfidentialTransferAccount;\n    }\n    if (containsBytes(data, getU8Encoder().encode(27), 0) && containsBytes(data, getU8Encoder().encode(4), 1)) {\n        return Token2022Instruction.EmptyConfidentialTransferAccount;\n    }\n    if (containsBytes(data, getU8Encoder().encode(27), 0) && containsBytes(data, getU8Encoder().encode(5), 1)) {\n        return Token2022Instruction.ConfidentialDeposit;\n    }\n    if (containsBytes(data, getU8Encoder().encode(27), 0) && containsBytes(data, getU8Encoder().encode(6), 1)) {\n        return Token2022Instruction.ConfidentialWithdraw;\n    }\n    if (containsBytes(data, getU8Encoder().encode(27), 0) && containsBytes(data, getU8Encoder().encode(7), 1)) {\n        return Token2022Instruction.ConfidentialTransfer;\n    }\n    if (containsBytes(data, getU8Encoder().encode(27), 0) && containsBytes(data, getU8Encoder().encode(8), 1)) {\n        return Token2022Instruction.ApplyConfidentialPendingBalance;\n    }\n    if (containsBytes(data, getU8Encoder().encode(27), 0) && containsBytes(data, getU8Encoder().encode(9), 1)) {\n        return Token2022Instruction.EnableConfidentialCredits;\n    }\n    if (containsBytes(data, getU8Encoder().encode(27), 0) && containsBytes(data, getU8Encoder().encode(10), 1)) {\n        return Token2022Instruction.DisableConfidentialCredits;\n    }\n    if (containsBytes(data, getU8Encoder().encode(27), 0) && containsBytes(data, getU8Encoder().encode(11), 1)) {\n        return Token2022Instruction.EnableNonConfidentialCredits;\n    }\n    if (containsBytes(data, getU8Encoder().encode(27), 0) && containsBytes(data, getU8Encoder().encode(12), 1)) {\n        return Token2022Instruction.DisableNonConfidentialCredits;\n    }\n    if (containsBytes(data, getU8Encoder().encode(27), 0) && containsBytes(data, getU8Encoder().encode(13), 1)) {\n        return Token2022Instruction.ConfidentialTransferWithFee;\n    }\n    if (containsBytes(data, getU8Encoder().encode(28), 0) && containsBytes(data, getU8Encoder().encode(0), 1)) {\n        return Token2022Instruction.InitializeDefaultAccountState;\n    }\n    if (containsBytes(data, getU8Encoder().encode(28), 0) && containsBytes(data, getU8Encoder().encode(1), 1)) {\n        return Token2022Instruction.UpdateDefaultAccountState;\n    }\n    if (containsBytes(data, getU8Encoder().encode(29), 0)) {\n        return Token2022Instruction.Reallocate;\n    }\n    if (containsBytes(data, getU8Encoder().encode(30), 0) && containsBytes(data, getU8Encoder().encode(0), 1)) {\n        return Token2022Instruction.EnableMemoTransfers;\n    }\n    if (containsBytes(data, getU8Encoder().encode(30), 0) && containsBytes(data, getU8Encoder().encode(1), 1)) {\n        return Token2022Instruction.DisableMemoTransfers;\n    }\n    if (containsBytes(data, getU8Encoder().encode(31), 0)) {\n        return Token2022Instruction.CreateNativeMint;\n    }\n    if (containsBytes(data, getU8Encoder().encode(32), 0)) {\n        return Token2022Instruction.InitializeNonTransferableMint;\n    }\n    if (containsBytes(data, getU8Encoder().encode(33), 0) && containsBytes(data, getU8Encoder().encode(0), 1)) {\n        return Token2022Instruction.InitializeInterestBearingMint;\n    }\n    if (containsBytes(data, getU8Encoder().encode(33), 0) && containsBytes(data, getU8Encoder().encode(1), 1)) {\n        return Token2022Instruction.UpdateRateInterestBearingMint;\n    }\n    if (containsBytes(data, getU8Encoder().encode(34), 0) && containsBytes(data, getU8Encoder().encode(0), 1)) {\n        return Token2022Instruction.EnableCpiGuard;\n    }\n    if (containsBytes(data, getU8Encoder().encode(34), 0) && containsBytes(data, getU8Encoder().encode(1), 1)) {\n        return Token2022Instruction.DisableCpiGuard;\n    }\n    if (containsBytes(data, getU8Encoder().encode(35), 0)) {\n        return Token2022Instruction.InitializePermanentDelegate;\n    }\n    if (containsBytes(data, getU8Encoder().encode(36), 0) && containsBytes(data, getU8Encoder().encode(0), 1)) {\n        return Token2022Instruction.InitializeTransferHook;\n    }\n    if (containsBytes(data, getU8Encoder().encode(36), 0) && containsBytes(data, getU8Encoder().encode(1), 1)) {\n        return Token2022Instruction.UpdateTransferHook;\n    }\n    if (containsBytes(data, getU8Encoder().encode(37), 0) && containsBytes(data, getU8Encoder().encode(0), 1)) {\n        return Token2022Instruction.InitializeConfidentialTransferFee;\n    }\n    if (containsBytes(data, getU8Encoder().encode(37), 0) && containsBytes(data, getU8Encoder().encode(1), 1)) {\n        return Token2022Instruction.WithdrawWithheldTokensFromMintForConfidentialTransferFee;\n    }\n    if (containsBytes(data, getU8Encoder().encode(37), 0) && containsBytes(data, getU8Encoder().encode(2), 1)) {\n        return Token2022Instruction.WithdrawWithheldTokensFromAccountsForConfidentialTransferFee;\n    }\n    if (containsBytes(data, getU8Encoder().encode(37), 0) && containsBytes(data, getU8Encoder().encode(3), 1)) {\n        return Token2022Instruction.HarvestWithheldTokensToMintForConfidentialTransferFee;\n    }\n    if (containsBytes(data, getU8Encoder().encode(37), 0) && containsBytes(data, getU8Encoder().encode(4), 1)) {\n        return Token2022Instruction.EnableHarvestToMint;\n    }\n    if (containsBytes(data, getU8Encoder().encode(37), 0) && containsBytes(data, getU8Encoder().encode(5), 1)) {\n        return Token2022Instruction.DisableHarvestToMint;\n    }\n    if (containsBytes(data, getU8Encoder().encode(38), 0)) {\n        return Token2022Instruction.WithdrawExcessLamports;\n    }\n    if (containsBytes(data, getU8Encoder().encode(39), 0) && containsBytes(data, getU8Encoder().encode(0), 1)) {\n        return Token2022Instruction.InitializeMetadataPointer;\n    }\n    if (containsBytes(data, getU8Encoder().encode(39), 0) && containsBytes(data, getU8Encoder().encode(1), 1)) {\n        return Token2022Instruction.UpdateMetadataPointer;\n    }\n    if (containsBytes(data, getU8Encoder().encode(40), 0) && containsBytes(data, getU8Encoder().encode(0), 1)) {\n        return Token2022Instruction.InitializeGroupPointer;\n    }\n    if (containsBytes(data, getU8Encoder().encode(40), 0) && containsBytes(data, getU8Encoder().encode(1), 1)) {\n        return Token2022Instruction.UpdateGroupPointer;\n    }\n    if (containsBytes(data, getU8Encoder().encode(41), 0) && containsBytes(data, getU8Encoder().encode(0), 1)) {\n        return Token2022Instruction.InitializeGroupMemberPointer;\n    }\n    if (containsBytes(data, getU8Encoder().encode(41), 0) && containsBytes(data, getU8Encoder().encode(1), 1)) {\n        return Token2022Instruction.UpdateGroupMemberPointer;\n    }\n    if (containsBytes(data, getU8Encoder().encode(43), 0) && containsBytes(data, getU8Encoder().encode(0), 1)) {\n        return Token2022Instruction.InitializeScaledUiAmountMint;\n    }\n    if (containsBytes(data, getU8Encoder().encode(43), 0) && containsBytes(data, getU8Encoder().encode(1), 1)) {\n        return Token2022Instruction.UpdateMultiplierScaledUiMint;\n    }\n    if (containsBytes(data, getU8Encoder().encode(44), 0) && containsBytes(data, getU8Encoder().encode(0), 1)) {\n        return Token2022Instruction.InitializePausableConfig;\n    }\n    if (containsBytes(data, getU8Encoder().encode(44), 0) && containsBytes(data, getU8Encoder().encode(1), 1)) {\n        return Token2022Instruction.Pause;\n    }\n    if (containsBytes(data, getU8Encoder().encode(44), 0) && containsBytes(data, getU8Encoder().encode(2), 1)) {\n        return Token2022Instruction.Resume;\n    }\n    if (containsBytes(data, new Uint8Array([210, 225, 30, 162, 88, 184, 77, 141]), 0)) {\n        return Token2022Instruction.InitializeTokenMetadata;\n    }\n    if (containsBytes(data, new Uint8Array([221, 233, 49, 45, 181, 202, 220, 200]), 0)) {\n        return Token2022Instruction.UpdateTokenMetadataField;\n    }\n    if (containsBytes(data, new Uint8Array([234, 18, 32, 56, 89, 141, 37, 181]), 0)) {\n        return Token2022Instruction.RemoveTokenMetadataKey;\n    }\n    if (containsBytes(data, new Uint8Array([215, 228, 166, 228, 84, 100, 86, 123]), 0)) {\n        return Token2022Instruction.UpdateTokenMetadataUpdateAuthority;\n    }\n    if (containsBytes(data, new Uint8Array([250, 166, 180, 250, 13, 12, 184, 70]), 0)) {\n        return Token2022Instruction.EmitTokenMetadata;\n    }\n    if (containsBytes(data, new Uint8Array([121, 113, 108, 39, 54, 51, 0, 4]), 0)) {\n        return Token2022Instruction.InitializeTokenGroup;\n    }\n    if (containsBytes(data, new Uint8Array([108, 37, 171, 143, 248, 30, 18, 110]), 0)) {\n        return Token2022Instruction.UpdateTokenGroupMaxSize;\n    }\n    if (containsBytes(data, new Uint8Array([161, 105, 88, 1, 237, 221, 216, 203]), 0)) {\n        return Token2022Instruction.UpdateTokenGroupUpdateAuthority;\n    }\n    if (containsBytes(data, new Uint8Array([152, 32, 222, 176, 223, 237, 116, 134]), 0)) {\n        return Token2022Instruction.InitializeTokenGroupMember;\n    }\n    if (containsBytes(data, getU8Encoder().encode(45), 0)) {\n        return Token2022Instruction.UnwrapLamports;\n    }\n    if (containsBytes(data, getU8Encoder().encode(46), 0) && containsBytes(data, getU8Encoder().encode(0), 1)) {\n        return Token2022Instruction.InitializePermissionedBurn;\n    }\n    if (containsBytes(data, getU8Encoder().encode(46), 0) && containsBytes(data, getU8Encoder().encode(1), 1)) {\n        return Token2022Instruction.PermissionedBurn;\n    }\n    if (containsBytes(data, getU8Encoder().encode(46), 0) && containsBytes(data, getU8Encoder().encode(2), 1)) {\n        return Token2022Instruction.PermissionedBurnChecked;\n    }\n    throw new Error('The provided instruction could not be identified as a token-2022 instruction.');\n}\n\nexport type ParsedToken2022Instruction<TProgram extends string = 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb'> =\n    | ({ instructionType: Token2022Instruction.InitializeMint } & ParsedInitializeMintInstruction<TProgram>)\n    | ({ instructionType: Token2022Instruction.InitializeAccount } & ParsedInitializeAccountInstruction<TProgram>)\n    | ({ instructionType: Token2022Instruction.InitializeMultisig } & ParsedInitializeMultisigInstruction<TProgram>)\n    | ({ instructionType: Token2022Instruction.Transfer } & ParsedTransferInstruction<TProgram>)\n    | ({ instructionType: Token2022Instruction.Approve } & ParsedApproveInstruction<TProgram>)\n    | ({ instructionType: Token2022Instruction.Revoke } & ParsedRevokeInstruction<TProgram>)\n    | ({ instructionType: Token2022Instruction.SetAuthority } & ParsedSetAuthorityInstruction<TProgram>)\n    | ({ instructionType: Token2022Instruction.MintTo } & ParsedMintToInstruction<TProgram>)\n    | ({ instructionType: Token2022Instruction.Burn } & ParsedBurnInstruction<TProgram>)\n    | ({ instructionType: Token2022Instruction.CloseAccount } & ParsedCloseAccountInstruction<TProgram>)\n    | ({ instructionType: Token2022Instruction.FreezeAccount } & ParsedFreezeAccountInstruction<TProgram>)\n    | ({ instructionType: Token2022Instruction.ThawAccount } & ParsedThawAccountInstruction<TProgram>)\n    | ({ instructionType: Token2022Instruction.TransferChecked } & ParsedTransferCheckedInstruction<TProgram>)\n    | ({ instructionType: Token2022Instruction.ApproveChecked } & ParsedApproveCheckedInstruction<TProgram>)\n    | ({ instructionType: Token2022Instruction.MintToChecked } & ParsedMintToCheckedInstruction<TProgram>)\n    | ({ instructionType: Token2022Instruction.BurnChecked } & ParsedBurnCheckedInstruction<TProgram>)\n    | ({ instructionType: Token2022Instruction.InitializeAccount2 } & ParsedInitializeAccount2Instruction<TProgram>)\n    | ({ instructionType: Token2022Instruction.SyncNative } & ParsedSyncNativeInstruction<TProgram>)\n    | ({ instructionType: Token2022Instruction.InitializeAccount3 } & ParsedInitializeAccount3Instruction<TProgram>)\n    | ({ instructionType: Token2022Instruction.InitializeMultisig2 } & ParsedInitializeMultisig2Instruction<TProgram>)\n    | ({ instructionType: Token2022Instruction.InitializeMint2 } & ParsedInitializeMint2Instruction<TProgram>)\n    | ({ instructionType: Token2022Instruction.GetAccountDataSize } & ParsedGetAccountDataSizeInstruction<TProgram>)\n    | ({\n          instructionType: Token2022Instruction.InitializeImmutableOwner;\n      } & ParsedInitializeImmutableOwnerInstruction<TProgram>)\n    | ({ instructionType: Token2022Instruction.AmountToUiAmount } & ParsedAmountToUiAmountInstruction<TProgram>)\n    | ({ instructionType: Token2022Instruction.UiAmountToAmount } & ParsedUiAmountToAmountInstruction<TProgram>)\n    | ({\n          instructionType: Token2022Instruction.InitializeMintCloseAuthority;\n      } & ParsedInitializeMintCloseAuthorityInstruction<TProgram>)\n    | ({\n          instructionType: Token2022Instruction.InitializeTransferFeeConfig;\n      } & ParsedInitializeTransferFeeConfigInstruction<TProgram>)\n    | ({\n          instructionType: Token2022Instruction.TransferCheckedWithFee;\n      } & ParsedTransferCheckedWithFeeInstruction<TProgram>)\n    | ({\n          instructionType: Token2022Instruction.WithdrawWithheldTokensFromMint;\n      } & ParsedWithdrawWithheldTokensFromMintInstruction<TProgram>)\n    | ({\n          instructionType: Token2022Instruction.WithdrawWithheldTokensFromAccounts;\n      } & ParsedWithdrawWithheldTokensFromAccountsInstruction<TProgram>)\n    | ({\n          instructionType: Token2022Instruction.HarvestWithheldTokensToMint;\n      } & ParsedHarvestWithheldTokensToMintInstruction<TProgram>)\n    | ({ instructionType: Token2022Instruction.SetTransferFee } & ParsedSetTransferFeeInstruction<TProgram>)\n    | ({\n          instructionType: Token2022Instruction.InitializeConfidentialTransferMint;\n      } & ParsedInitializeConfidentialTransferMintInstruction<TProgram>)\n    | ({\n          instructionType: Token2022Instruction.UpdateConfidentialTransferMint;\n      } & ParsedUpdateConfidentialTransferMintInstruction<TProgram>)\n    | ({\n          instructionType: Token2022Instruction.ConfigureConfidentialTransferAccount;\n      } & ParsedConfigureConfidentialTransferAccountInstruction<TProgram>)\n    | ({\n          instructionType: Token2022Instruction.ApproveConfidentialTransferAccount;\n      } & ParsedApproveConfidentialTransferAccountInstruction<TProgram>)\n    | ({\n          instructionType: Token2022Instruction.EmptyConfidentialTransferAccount;\n      } & ParsedEmptyConfidentialTransferAccountInstruction<TProgram>)\n    | ({ instructionType: Token2022Instruction.ConfidentialDeposit } & ParsedConfidentialDepositInstruction<TProgram>)\n    | ({ instructionType: Token2022Instruction.ConfidentialWithdraw } & ParsedConfidentialWithdrawInstruction<TProgram>)\n    | ({ instructionType: Token2022Instruction.ConfidentialTransfer } & ParsedConfidentialTransferInstruction<TProgram>)\n    | ({\n          instructionType: Token2022Instruction.ApplyConfidentialPendingBalance;\n      } & ParsedApplyConfidentialPendingBalanceInstruction<TProgram>)\n    | ({\n          instructionType: Token2022Instruction.EnableConfidentialCredits;\n      } & ParsedEnableConfidentialCreditsInstruction<TProgram>)\n    | ({\n          instructionType: Token2022Instruction.DisableConfidentialCredits;\n      } & ParsedDisableConfidentialCreditsInstruction<TProgram>)\n    | ({\n          instructionType: Token2022Instruction.EnableNonConfidentialCredits;\n      } & ParsedEnableNonConfidentialCreditsInstruction<TProgram>)\n    | ({\n          instructionType: Token2022Instruction.DisableNonConfidentialCredits;\n      } & ParsedDisableNonConfidentialCreditsInstruction<TProgram>)\n    | ({\n          instructionType: Token2022Instruction.ConfidentialTransferWithFee;\n      } & ParsedConfidentialTransferWithFeeInstruction<TProgram>)\n    | ({\n          instructionType: Token2022Instruction.InitializeDefaultAccountState;\n      } & ParsedInitializeDefaultAccountStateInstruction<TProgram>)\n    | ({\n          instructionType: Token2022Instruction.UpdateDefaultAccountState;\n      } & ParsedUpdateDefaultAccountStateInstruction<TProgram>)\n    | ({ instructionType: Token2022Instruction.Reallocate } & ParsedReallocateInstruction<TProgram>)\n    | ({ instructionType: Token2022Instruction.EnableMemoTransfers } & ParsedEnableMemoTransfersInstruction<TProgram>)\n    | ({ instructionType: Token2022Instruction.DisableMemoTransfers } & ParsedDisableMemoTransfersInstruction<TProgram>)\n    | ({ instructionType: Token2022Instruction.CreateNativeMint } & ParsedCreateNativeMintInstruction<TProgram>)\n    | ({\n          instructionType: Token2022Instruction.InitializeNonTransferableMint;\n      } & ParsedInitializeNonTransferableMintInstruction<TProgram>)\n    | ({\n          instructionType: Token2022Instruction.InitializeInterestBearingMint;\n      } & ParsedInitializeInterestBearingMintInstruction<TProgram>)\n    | ({\n          instructionType: Token2022Instruction.UpdateRateInterestBearingMint;\n      } & ParsedUpdateRateInterestBearingMintInstruction<TProgram>)\n    | ({ instructionType: Token2022Instruction.EnableCpiGuard } & ParsedEnableCpiGuardInstruction<TProgram>)\n    | ({ instructionType: Token2022Instruction.DisableCpiGuard } & ParsedDisableCpiGuardInstruction<TProgram>)\n    | ({\n          instructionType: Token2022Instruction.InitializePermanentDelegate;\n      } & ParsedInitializePermanentDelegateInstruction<TProgram>)\n    | ({\n          instructionType: Token2022Instruction.InitializeTransferHook;\n      } & ParsedInitializeTransferHookInstruction<TProgram>)\n    | ({ instructionType: Token2022Instruction.UpdateTransferHook } & ParsedUpdateTransferHookInstruction<TProgram>)\n    | ({\n          instructionType: Token2022Instruction.InitializeConfidentialTransferFee;\n      } & ParsedInitializeConfidentialTransferFeeInstruction<TProgram>)\n    | ({\n          instructionType: Token2022Instruction.WithdrawWithheldTokensFromMintForConfidentialTransferFee;\n      } & ParsedWithdrawWithheldTokensFromMintForConfidentialTransferFeeInstruction<TProgram>)\n    | ({\n          instructionType: Token2022Instruction.WithdrawWithheldTokensFromAccountsForConfidentialTransferFee;\n      } & ParsedWithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstruction<TProgram>)\n    | ({\n          instructionType: Token2022Instruction.HarvestWithheldTokensToMintForConfidentialTransferFee;\n      } & ParsedHarvestWithheldTokensToMintForConfidentialTransferFeeInstruction<TProgram>)\n    | ({ instructionType: Token2022Instruction.EnableHarvestToMint } & ParsedEnableHarvestToMintInstruction<TProgram>)\n    | ({ instructionType: Token2022Instruction.DisableHarvestToMint } & ParsedDisableHarvestToMintInstruction<TProgram>)\n    | ({\n          instructionType: Token2022Instruction.WithdrawExcessLamports;\n      } & ParsedWithdrawExcessLamportsInstruction<TProgram>)\n    | ({\n          instructionType: Token2022Instruction.InitializeMetadataPointer;\n      } & ParsedInitializeMetadataPointerInstruction<TProgram>)\n    | ({\n          instructionType: Token2022Instruction.UpdateMetadataPointer;\n      } & ParsedUpdateMetadataPointerInstruction<TProgram>)\n    | ({\n          instructionType: Token2022Instruction.InitializeGroupPointer;\n      } & ParsedInitializeGroupPointerInstruction<TProgram>)\n    | ({ instructionType: Token2022Instruction.UpdateGroupPointer } & ParsedUpdateGroupPointerInstruction<TProgram>)\n    | ({\n          instructionType: Token2022Instruction.InitializeGroupMemberPointer;\n      } & ParsedInitializeGroupMemberPointerInstruction<TProgram>)\n    | ({\n          instructionType: Token2022Instruction.UpdateGroupMemberPointer;\n      } & ParsedUpdateGroupMemberPointerInstruction<TProgram>)\n    | ({\n          instructionType: Token2022Instruction.InitializeScaledUiAmountMint;\n      } & ParsedInitializeScaledUiAmountMintInstruction<TProgram>)\n    | ({\n          instructionType: Token2022Instruction.UpdateMultiplierScaledUiMint;\n      } & ParsedUpdateMultiplierScaledUiMintInstruction<TProgram>)\n    | ({\n          instructionType: Token2022Instruction.InitializePausableConfig;\n      } & ParsedInitializePausableConfigInstruction<TProgram>)\n    | ({ instructionType: Token2022Instruction.Pause } & ParsedPauseInstruction<TProgram>)\n    | ({ instructionType: Token2022Instruction.Resume } & ParsedResumeInstruction<TProgram>)\n    | ({\n          instructionType: Token2022Instruction.InitializeTokenMetadata;\n      } & ParsedInitializeTokenMetadataInstruction<TProgram>)\n    | ({\n          instructionType: Token2022Instruction.UpdateTokenMetadataField;\n      } & ParsedUpdateTokenMetadataFieldInstruction<TProgram>)\n    | ({\n          instructionType: Token2022Instruction.RemoveTokenMetadataKey;\n      } & ParsedRemoveTokenMetadataKeyInstruction<TProgram>)\n    | ({\n          instructionType: Token2022Instruction.UpdateTokenMetadataUpdateAuthority;\n      } & ParsedUpdateTokenMetadataUpdateAuthorityInstruction<TProgram>)\n    | ({ instructionType: Token2022Instruction.EmitTokenMetadata } & ParsedEmitTokenMetadataInstruction<TProgram>)\n    | ({ instructionType: Token2022Instruction.InitializeTokenGroup } & ParsedInitializeTokenGroupInstruction<TProgram>)\n    | ({\n          instructionType: Token2022Instruction.UpdateTokenGroupMaxSize;\n      } & ParsedUpdateTokenGroupMaxSizeInstruction<TProgram>)\n    | ({\n          instructionType: Token2022Instruction.UpdateTokenGroupUpdateAuthority;\n      } & ParsedUpdateTokenGroupUpdateAuthorityInstruction<TProgram>)\n    | ({\n          instructionType: Token2022Instruction.InitializeTokenGroupMember;\n      } & ParsedInitializeTokenGroupMemberInstruction<TProgram>)\n    | ({ instructionType: Token2022Instruction.UnwrapLamports } & ParsedUnwrapLamportsInstruction<TProgram>)\n    | ({\n          instructionType: Token2022Instruction.InitializePermissionedBurn;\n      } & ParsedInitializePermissionedBurnInstruction<TProgram>)\n    | ({ instructionType: Token2022Instruction.PermissionedBurn } & ParsedPermissionedBurnInstruction<TProgram>)\n    | ({\n          instructionType: Token2022Instruction.PermissionedBurnChecked;\n      } & ParsedPermissionedBurnCheckedInstruction<TProgram>);\n\nexport function parseToken2022Instruction<TProgram extends string>(\n    instruction: Instruction<TProgram> & InstructionWithData<ReadonlyUint8Array>,\n): ParsedToken2022Instruction<TProgram> {\n    const instructionType = identifyToken2022Instruction(instruction);\n    switch (instructionType) {\n        case Token2022Instruction.InitializeMint: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.InitializeMint,\n                ...parseInitializeMintInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.InitializeAccount: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.InitializeAccount,\n                ...parseInitializeAccountInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.InitializeMultisig: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.InitializeMultisig,\n                ...parseInitializeMultisigInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.Transfer: {\n            assertIsInstructionWithAccounts(instruction);\n            return { instructionType: Token2022Instruction.Transfer, ...parseTransferInstruction(instruction) };\n        }\n        case Token2022Instruction.Approve: {\n            assertIsInstructionWithAccounts(instruction);\n            return { instructionType: Token2022Instruction.Approve, ...parseApproveInstruction(instruction) };\n        }\n        case Token2022Instruction.Revoke: {\n            assertIsInstructionWithAccounts(instruction);\n            return { instructionType: Token2022Instruction.Revoke, ...parseRevokeInstruction(instruction) };\n        }\n        case Token2022Instruction.SetAuthority: {\n            assertIsInstructionWithAccounts(instruction);\n            return { instructionType: Token2022Instruction.SetAuthority, ...parseSetAuthorityInstruction(instruction) };\n        }\n        case Token2022Instruction.MintTo: {\n            assertIsInstructionWithAccounts(instruction);\n            return { instructionType: Token2022Instruction.MintTo, ...parseMintToInstruction(instruction) };\n        }\n        case Token2022Instruction.Burn: {\n            assertIsInstructionWithAccounts(instruction);\n            return { instructionType: Token2022Instruction.Burn, ...parseBurnInstruction(instruction) };\n        }\n        case Token2022Instruction.CloseAccount: {\n            assertIsInstructionWithAccounts(instruction);\n            return { instructionType: Token2022Instruction.CloseAccount, ...parseCloseAccountInstruction(instruction) };\n        }\n        case Token2022Instruction.FreezeAccount: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.FreezeAccount,\n                ...parseFreezeAccountInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.ThawAccount: {\n            assertIsInstructionWithAccounts(instruction);\n            return { instructionType: Token2022Instruction.ThawAccount, ...parseThawAccountInstruction(instruction) };\n        }\n        case Token2022Instruction.TransferChecked: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.TransferChecked,\n                ...parseTransferCheckedInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.ApproveChecked: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.ApproveChecked,\n                ...parseApproveCheckedInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.MintToChecked: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.MintToChecked,\n                ...parseMintToCheckedInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.BurnChecked: {\n            assertIsInstructionWithAccounts(instruction);\n            return { instructionType: Token2022Instruction.BurnChecked, ...parseBurnCheckedInstruction(instruction) };\n        }\n        case Token2022Instruction.InitializeAccount2: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.InitializeAccount2,\n                ...parseInitializeAccount2Instruction(instruction),\n            };\n        }\n        case Token2022Instruction.SyncNative: {\n            assertIsInstructionWithAccounts(instruction);\n            return { instructionType: Token2022Instruction.SyncNative, ...parseSyncNativeInstruction(instruction) };\n        }\n        case Token2022Instruction.InitializeAccount3: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.InitializeAccount3,\n                ...parseInitializeAccount3Instruction(instruction),\n            };\n        }\n        case Token2022Instruction.InitializeMultisig2: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.InitializeMultisig2,\n                ...parseInitializeMultisig2Instruction(instruction),\n            };\n        }\n        case Token2022Instruction.InitializeMint2: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.InitializeMint2,\n                ...parseInitializeMint2Instruction(instruction),\n            };\n        }\n        case Token2022Instruction.GetAccountDataSize: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.GetAccountDataSize,\n                ...parseGetAccountDataSizeInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.InitializeImmutableOwner: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.InitializeImmutableOwner,\n                ...parseInitializeImmutableOwnerInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.AmountToUiAmount: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.AmountToUiAmount,\n                ...parseAmountToUiAmountInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.UiAmountToAmount: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.UiAmountToAmount,\n                ...parseUiAmountToAmountInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.InitializeMintCloseAuthority: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.InitializeMintCloseAuthority,\n                ...parseInitializeMintCloseAuthorityInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.InitializeTransferFeeConfig: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.InitializeTransferFeeConfig,\n                ...parseInitializeTransferFeeConfigInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.TransferCheckedWithFee: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.TransferCheckedWithFee,\n                ...parseTransferCheckedWithFeeInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.WithdrawWithheldTokensFromMint: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.WithdrawWithheldTokensFromMint,\n                ...parseWithdrawWithheldTokensFromMintInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.WithdrawWithheldTokensFromAccounts: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.WithdrawWithheldTokensFromAccounts,\n                ...parseWithdrawWithheldTokensFromAccountsInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.HarvestWithheldTokensToMint: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.HarvestWithheldTokensToMint,\n                ...parseHarvestWithheldTokensToMintInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.SetTransferFee: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.SetTransferFee,\n                ...parseSetTransferFeeInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.InitializeConfidentialTransferMint: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.InitializeConfidentialTransferMint,\n                ...parseInitializeConfidentialTransferMintInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.UpdateConfidentialTransferMint: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.UpdateConfidentialTransferMint,\n                ...parseUpdateConfidentialTransferMintInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.ConfigureConfidentialTransferAccount: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.ConfigureConfidentialTransferAccount,\n                ...parseConfigureConfidentialTransferAccountInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.ApproveConfidentialTransferAccount: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.ApproveConfidentialTransferAccount,\n                ...parseApproveConfidentialTransferAccountInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.EmptyConfidentialTransferAccount: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.EmptyConfidentialTransferAccount,\n                ...parseEmptyConfidentialTransferAccountInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.ConfidentialDeposit: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.ConfidentialDeposit,\n                ...parseConfidentialDepositInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.ConfidentialWithdraw: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.ConfidentialWithdraw,\n                ...parseConfidentialWithdrawInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.ConfidentialTransfer: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.ConfidentialTransfer,\n                ...parseConfidentialTransferInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.ApplyConfidentialPendingBalance: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.ApplyConfidentialPendingBalance,\n                ...parseApplyConfidentialPendingBalanceInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.EnableConfidentialCredits: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.EnableConfidentialCredits,\n                ...parseEnableConfidentialCreditsInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.DisableConfidentialCredits: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.DisableConfidentialCredits,\n                ...parseDisableConfidentialCreditsInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.EnableNonConfidentialCredits: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.EnableNonConfidentialCredits,\n                ...parseEnableNonConfidentialCreditsInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.DisableNonConfidentialCredits: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.DisableNonConfidentialCredits,\n                ...parseDisableNonConfidentialCreditsInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.ConfidentialTransferWithFee: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.ConfidentialTransferWithFee,\n                ...parseConfidentialTransferWithFeeInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.InitializeDefaultAccountState: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.InitializeDefaultAccountState,\n                ...parseInitializeDefaultAccountStateInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.UpdateDefaultAccountState: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.UpdateDefaultAccountState,\n                ...parseUpdateDefaultAccountStateInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.Reallocate: {\n            assertIsInstructionWithAccounts(instruction);\n            return { instructionType: Token2022Instruction.Reallocate, ...parseReallocateInstruction(instruction) };\n        }\n        case Token2022Instruction.EnableMemoTransfers: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.EnableMemoTransfers,\n                ...parseEnableMemoTransfersInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.DisableMemoTransfers: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.DisableMemoTransfers,\n                ...parseDisableMemoTransfersInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.CreateNativeMint: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.CreateNativeMint,\n                ...parseCreateNativeMintInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.InitializeNonTransferableMint: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.InitializeNonTransferableMint,\n                ...parseInitializeNonTransferableMintInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.InitializeInterestBearingMint: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.InitializeInterestBearingMint,\n                ...parseInitializeInterestBearingMintInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.UpdateRateInterestBearingMint: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.UpdateRateInterestBearingMint,\n                ...parseUpdateRateInterestBearingMintInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.EnableCpiGuard: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.EnableCpiGuard,\n                ...parseEnableCpiGuardInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.DisableCpiGuard: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.DisableCpiGuard,\n                ...parseDisableCpiGuardInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.InitializePermanentDelegate: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.InitializePermanentDelegate,\n                ...parseInitializePermanentDelegateInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.InitializeTransferHook: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.InitializeTransferHook,\n                ...parseInitializeTransferHookInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.UpdateTransferHook: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.UpdateTransferHook,\n                ...parseUpdateTransferHookInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.InitializeConfidentialTransferFee: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.InitializeConfidentialTransferFee,\n                ...parseInitializeConfidentialTransferFeeInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.WithdrawWithheldTokensFromMintForConfidentialTransferFee: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.WithdrawWithheldTokensFromMintForConfidentialTransferFee,\n                ...parseWithdrawWithheldTokensFromMintForConfidentialTransferFeeInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.WithdrawWithheldTokensFromAccountsForConfidentialTransferFee: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.WithdrawWithheldTokensFromAccountsForConfidentialTransferFee,\n                ...parseWithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.HarvestWithheldTokensToMintForConfidentialTransferFee: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.HarvestWithheldTokensToMintForConfidentialTransferFee,\n                ...parseHarvestWithheldTokensToMintForConfidentialTransferFeeInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.EnableHarvestToMint: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.EnableHarvestToMint,\n                ...parseEnableHarvestToMintInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.DisableHarvestToMint: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.DisableHarvestToMint,\n                ...parseDisableHarvestToMintInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.WithdrawExcessLamports: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.WithdrawExcessLamports,\n                ...parseWithdrawExcessLamportsInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.InitializeMetadataPointer: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.InitializeMetadataPointer,\n                ...parseInitializeMetadataPointerInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.UpdateMetadataPointer: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.UpdateMetadataPointer,\n                ...parseUpdateMetadataPointerInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.InitializeGroupPointer: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.InitializeGroupPointer,\n                ...parseInitializeGroupPointerInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.UpdateGroupPointer: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.UpdateGroupPointer,\n                ...parseUpdateGroupPointerInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.InitializeGroupMemberPointer: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.InitializeGroupMemberPointer,\n                ...parseInitializeGroupMemberPointerInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.UpdateGroupMemberPointer: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.UpdateGroupMemberPointer,\n                ...parseUpdateGroupMemberPointerInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.InitializeScaledUiAmountMint: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.InitializeScaledUiAmountMint,\n                ...parseInitializeScaledUiAmountMintInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.UpdateMultiplierScaledUiMint: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.UpdateMultiplierScaledUiMint,\n                ...parseUpdateMultiplierScaledUiMintInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.InitializePausableConfig: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.InitializePausableConfig,\n                ...parseInitializePausableConfigInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.Pause: {\n            assertIsInstructionWithAccounts(instruction);\n            return { instructionType: Token2022Instruction.Pause, ...parsePauseInstruction(instruction) };\n        }\n        case Token2022Instruction.Resume: {\n            assertIsInstructionWithAccounts(instruction);\n            return { instructionType: Token2022Instruction.Resume, ...parseResumeInstruction(instruction) };\n        }\n        case Token2022Instruction.InitializeTokenMetadata: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.InitializeTokenMetadata,\n                ...parseInitializeTokenMetadataInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.UpdateTokenMetadataField: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.UpdateTokenMetadataField,\n                ...parseUpdateTokenMetadataFieldInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.RemoveTokenMetadataKey: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.RemoveTokenMetadataKey,\n                ...parseRemoveTokenMetadataKeyInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.UpdateTokenMetadataUpdateAuthority: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.UpdateTokenMetadataUpdateAuthority,\n                ...parseUpdateTokenMetadataUpdateAuthorityInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.EmitTokenMetadata: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.EmitTokenMetadata,\n                ...parseEmitTokenMetadataInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.InitializeTokenGroup: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.InitializeTokenGroup,\n                ...parseInitializeTokenGroupInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.UpdateTokenGroupMaxSize: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.UpdateTokenGroupMaxSize,\n                ...parseUpdateTokenGroupMaxSizeInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.UpdateTokenGroupUpdateAuthority: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.UpdateTokenGroupUpdateAuthority,\n                ...parseUpdateTokenGroupUpdateAuthorityInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.InitializeTokenGroupMember: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.InitializeTokenGroupMember,\n                ...parseInitializeTokenGroupMemberInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.UnwrapLamports: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.UnwrapLamports,\n                ...parseUnwrapLamportsInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.InitializePermissionedBurn: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.InitializePermissionedBurn,\n                ...parseInitializePermissionedBurnInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.PermissionedBurn: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.PermissionedBurn,\n                ...parsePermissionedBurnInstruction(instruction),\n            };\n        }\n        case Token2022Instruction.PermissionedBurnChecked: {\n            assertIsInstructionWithAccounts(instruction);\n            return {\n                instructionType: Token2022Instruction.PermissionedBurnChecked,\n                ...parsePermissionedBurnCheckedInstruction(instruction),\n            };\n        }\n        default:\n            throw new Error(`Unrecognized instruction type: ${instructionType as string}`);\n    }\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    isProgramError,\n    type Address,\n    type SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM,\n    type SolanaError,\n} from '@solana/kit';\nimport { ASSOCIATED_TOKEN_PROGRAM_ADDRESS } from '../programs';\n\n/** InvalidOwner: Associated token account owner does not match address derivation */\nexport const ASSOCIATED_TOKEN_ERROR__INVALID_OWNER = 0x0; // 0\n\nexport type AssociatedTokenError = typeof ASSOCIATED_TOKEN_ERROR__INVALID_OWNER;\n\nlet associatedTokenErrorMessages: Record<AssociatedTokenError, string> | undefined;\nif (process.env.NODE_ENV !== 'production') {\n    associatedTokenErrorMessages = {\n        [ASSOCIATED_TOKEN_ERROR__INVALID_OWNER]: `Associated token account owner does not match address derivation`,\n    };\n}\n\nexport function getAssociatedTokenErrorMessage(code: AssociatedTokenError): string {\n    if (process.env.NODE_ENV !== 'production') {\n        return (associatedTokenErrorMessages as Record<AssociatedTokenError, string>)[code];\n    }\n\n    return 'Error message not available in production bundles.';\n}\n\nexport function isAssociatedTokenError<TProgramErrorCode extends AssociatedTokenError>(\n    error: unknown,\n    transactionMessage: { instructions: Record<number, { programAddress: Address }> },\n    code?: TProgramErrorCode,\n): error is SolanaError<typeof SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM> &\n    Readonly<{ context: Readonly<{ code: TProgramErrorCode }> }> {\n    return isProgramError<TProgramErrorCode>(error, transactionMessage, ASSOCIATED_TOKEN_PROGRAM_ADDRESS, code);\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n    isProgramError,\n    type Address,\n    type SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM,\n    type SolanaError,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\n\n/** NotRentExempt: Lamport balance below rent-exempt threshold */\nexport const TOKEN_2022_ERROR__NOT_RENT_EXEMPT = 0x0; // 0\n/** InsufficientFunds: Insufficient funds */\nexport const TOKEN_2022_ERROR__INSUFFICIENT_FUNDS = 0x1; // 1\n/** InvalidMint: Invalid Mint */\nexport const TOKEN_2022_ERROR__INVALID_MINT = 0x2; // 2\n/** MintMismatch: Account not associated with this Mint */\nexport const TOKEN_2022_ERROR__MINT_MISMATCH = 0x3; // 3\n/** OwnerMismatch: Owner does not match */\nexport const TOKEN_2022_ERROR__OWNER_MISMATCH = 0x4; // 4\n/** FixedSupply: Fixed supply */\nexport const TOKEN_2022_ERROR__FIXED_SUPPLY = 0x5; // 5\n/** AlreadyInUse: Already in use */\nexport const TOKEN_2022_ERROR__ALREADY_IN_USE = 0x6; // 6\n/** InvalidNumberOfProvidedSigners: Invalid number of provided signers */\nexport const TOKEN_2022_ERROR__INVALID_NUMBER_OF_PROVIDED_SIGNERS = 0x7; // 7\n/** InvalidNumberOfRequiredSigners: Invalid number of required signers */\nexport const TOKEN_2022_ERROR__INVALID_NUMBER_OF_REQUIRED_SIGNERS = 0x8; // 8\n/** UninitializedState: State is unititialized */\nexport const TOKEN_2022_ERROR__UNINITIALIZED_STATE = 0x9; // 9\n/** NativeNotSupported: Instruction does not support native tokens */\nexport const TOKEN_2022_ERROR__NATIVE_NOT_SUPPORTED = 0xa; // 10\n/** NonNativeHasBalance: Non-native account can only be closed if its balance is zero */\nexport const TOKEN_2022_ERROR__NON_NATIVE_HAS_BALANCE = 0xb; // 11\n/** InvalidInstruction: Invalid instruction */\nexport const TOKEN_2022_ERROR__INVALID_INSTRUCTION = 0xc; // 12\n/** InvalidState: State is invalid for requested operation */\nexport const TOKEN_2022_ERROR__INVALID_STATE = 0xd; // 13\n/** Overflow: Operation overflowed */\nexport const TOKEN_2022_ERROR__OVERFLOW = 0xe; // 14\n/** AuthorityTypeNotSupported: Account does not support specified authority type */\nexport const TOKEN_2022_ERROR__AUTHORITY_TYPE_NOT_SUPPORTED = 0xf; // 15\n/** MintCannotFreeze: This token mint cannot freeze accounts */\nexport const TOKEN_2022_ERROR__MINT_CANNOT_FREEZE = 0x10; // 16\n/** AccountFrozen: Account is frozen */\nexport const TOKEN_2022_ERROR__ACCOUNT_FROZEN = 0x11; // 17\n/** MintDecimalsMismatch: The provided decimals value different from the Mint decimals */\nexport const TOKEN_2022_ERROR__MINT_DECIMALS_MISMATCH = 0x12; // 18\n/** NonNativeNotSupported: Instruction does not support non-native tokens */\nexport const TOKEN_2022_ERROR__NON_NATIVE_NOT_SUPPORTED = 0x13; // 19\n\nexport type Token2022Error =\n    | typeof TOKEN_2022_ERROR__ACCOUNT_FROZEN\n    | typeof TOKEN_2022_ERROR__ALREADY_IN_USE\n    | typeof TOKEN_2022_ERROR__AUTHORITY_TYPE_NOT_SUPPORTED\n    | typeof TOKEN_2022_ERROR__FIXED_SUPPLY\n    | typeof TOKEN_2022_ERROR__INSUFFICIENT_FUNDS\n    | typeof TOKEN_2022_ERROR__INVALID_INSTRUCTION\n    | typeof TOKEN_2022_ERROR__INVALID_MINT\n    | typeof TOKEN_2022_ERROR__INVALID_NUMBER_OF_PROVIDED_SIGNERS\n    | typeof TOKEN_2022_ERROR__INVALID_NUMBER_OF_REQUIRED_SIGNERS\n    | typeof TOKEN_2022_ERROR__INVALID_STATE\n    | typeof TOKEN_2022_ERROR__MINT_CANNOT_FREEZE\n    | typeof TOKEN_2022_ERROR__MINT_DECIMALS_MISMATCH\n    | typeof TOKEN_2022_ERROR__MINT_MISMATCH\n    | typeof TOKEN_2022_ERROR__NATIVE_NOT_SUPPORTED\n    | typeof TOKEN_2022_ERROR__NON_NATIVE_HAS_BALANCE\n    | typeof TOKEN_2022_ERROR__NON_NATIVE_NOT_SUPPORTED\n    | typeof TOKEN_2022_ERROR__NOT_RENT_EXEMPT\n    | typeof TOKEN_2022_ERROR__OVERFLOW\n    | typeof TOKEN_2022_ERROR__OWNER_MISMATCH\n    | typeof TOKEN_2022_ERROR__UNINITIALIZED_STATE;\n\nlet token2022ErrorMessages: Record<Token2022Error, string> | undefined;\nif (process.env.NODE_ENV !== 'production') {\n    token2022ErrorMessages = {\n        [TOKEN_2022_ERROR__ACCOUNT_FROZEN]: `Account is frozen`,\n        [TOKEN_2022_ERROR__ALREADY_IN_USE]: `Already in use`,\n        [TOKEN_2022_ERROR__AUTHORITY_TYPE_NOT_SUPPORTED]: `Account does not support specified authority type`,\n        [TOKEN_2022_ERROR__FIXED_SUPPLY]: `Fixed supply`,\n        [TOKEN_2022_ERROR__INSUFFICIENT_FUNDS]: `Insufficient funds`,\n        [TOKEN_2022_ERROR__INVALID_INSTRUCTION]: `Invalid instruction`,\n        [TOKEN_2022_ERROR__INVALID_MINT]: `Invalid Mint`,\n        [TOKEN_2022_ERROR__INVALID_NUMBER_OF_PROVIDED_SIGNERS]: `Invalid number of provided signers`,\n        [TOKEN_2022_ERROR__INVALID_NUMBER_OF_REQUIRED_SIGNERS]: `Invalid number of required signers`,\n        [TOKEN_2022_ERROR__INVALID_STATE]: `State is invalid for requested operation`,\n        [TOKEN_2022_ERROR__MINT_CANNOT_FREEZE]: `This token mint cannot freeze accounts`,\n        [TOKEN_2022_ERROR__MINT_DECIMALS_MISMATCH]: `The provided decimals value different from the Mint decimals`,\n        [TOKEN_2022_ERROR__MINT_MISMATCH]: `Account not associated with this Mint`,\n        [TOKEN_2022_ERROR__NATIVE_NOT_SUPPORTED]: `Instruction does not support native tokens`,\n        [TOKEN_2022_ERROR__NON_NATIVE_HAS_BALANCE]: `Non-native account can only be closed if its balance is zero`,\n        [TOKEN_2022_ERROR__NON_NATIVE_NOT_SUPPORTED]: `Instruction does not support non-native tokens`,\n        [TOKEN_2022_ERROR__NOT_RENT_EXEMPT]: `Lamport balance below rent-exempt threshold`,\n        [TOKEN_2022_ERROR__OVERFLOW]: `Operation overflowed`,\n        [TOKEN_2022_ERROR__OWNER_MISMATCH]: `Owner does not match`,\n        [TOKEN_2022_ERROR__UNINITIALIZED_STATE]: `State is unititialized`,\n    };\n}\n\nexport function getToken2022ErrorMessage(code: Token2022Error): string {\n    if (process.env.NODE_ENV !== 'production') {\n        return (token2022ErrorMessages as Record<Token2022Error, string>)[code];\n    }\n\n    return 'Error message not available in production bundles.';\n}\n\nexport function isToken2022Error<TProgramErrorCode extends Token2022Error>(\n    error: unknown,\n    transactionMessage: { instructions: Record<number, { programAddress: Address }> },\n    code?: TProgramErrorCode,\n): error is SolanaError<typeof SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM> &\n    Readonly<{ context: Readonly<{ code: TProgramErrorCode }> }> {\n    return isProgramError<TProgramErrorCode>(error, transactionMessage, TOKEN_2022_PROGRAM_ADDRESS, code);\n}\n","import { type GetAccountInfoApi, type Rpc, Address, UnixTimestamp, unwrapOption } from '@solana/kit';\nimport { fetchSysvarClock } from '@solana/sysvars';\nimport { fetchMint } from './generated';\n\n// Constants\nconst ONE_IN_BASIS_POINTS = 10000;\nconst SECONDS_PER_YEAR = 60 * 60 * 24 * 365.24;\n\n/**\n * Calculates the exponent for the interest rate formula.\n * @param t1 - The start time in seconds.\n * @param t2 - The end time in seconds.\n * @param r  - The interest rate in basis points.\n *\n * @returns The calculated exponent.\n */\nfunction calculateExponentForTimesAndRate(t1: number, t2: number, r: number) {\n    const timespan = t2 - t1;\n    if (timespan < 0) {\n        throw new Error('Invalid timespan: end time before start time');\n    }\n\n    const numerator = r * timespan;\n    const exponent = numerator / (SECONDS_PER_YEAR * ONE_IN_BASIS_POINTS);\n    return Math.exp(exponent);\n}\n\n/**\n * Calculates the total scale factor for an interest bearing token by combining two exponential functions:\n * One for the period between initialization and last update using the pre-update average rate,\n * and another for the period between last update and current time using the current rate.\n *\n * @param currentTimestamp         Current timestamp in seconds\n * @param lastUpdateTimestamp      Last time the interest rate was updated in seconds\n * @param initializationTimestamp  Time the interest bearing extension was initialized in seconds\n * @param preUpdateAverageRate     Interest rate in basis points before last update\n * @param currentRate              Current interest rate in basis points\n *\n * @returns The total scale factor as a product of the two exponential functions\n */\nfunction calculateTotalScale({\n    currentTimestamp,\n    lastUpdateTimestamp,\n    initializationTimestamp,\n    preUpdateAverageRate,\n    currentRate,\n}: {\n    currentTimestamp: number;\n    lastUpdateTimestamp: number;\n    initializationTimestamp: number;\n    preUpdateAverageRate: number;\n    currentRate: number;\n}): number {\n    // Calculate pre-update exponent\n    const preUpdateExp = calculateExponentForTimesAndRate(\n        initializationTimestamp,\n        lastUpdateTimestamp,\n        preUpdateAverageRate,\n    );\n\n    // Calculate post-update exponent\n    const postUpdateExp = calculateExponentForTimesAndRate(lastUpdateTimestamp, currentTimestamp, currentRate);\n\n    return preUpdateExp * postUpdateExp;\n}\n\n/**\n * Calculates the decimal factor for a given number of decimals\n * @param decimals - Number of decimals\n * @returns The decimal factor (e.g., 100 for 2 decimals)\n */\nfunction getDecimalFactor(decimals: number): number {\n    return Math.pow(10, decimals);\n}\n\n/**\n * Retrieves the current timestamp from the Solana clock sysvar.\n * @param rpc - The Solana rpc object.\n * @returns A promise that resolves to the current timestamp in seconds.\n * @throws An error if the sysvar clock cannot be fetched or parsed.\n */\nasync function getSysvarClockTimestamp(rpc: Rpc<GetAccountInfoApi>): Promise<UnixTimestamp> {\n    const info = await fetchSysvarClock(rpc);\n    if (!info) {\n        throw new Error('Failed to fetch sysvar clock');\n    }\n    return info.unixTimestamp;\n}\n\n// ========== INTEREST BEARING MINT FUNCTIONS ==========\n\n/**\n * Convert amount to UiAmount for a mint with interest bearing extension without simulating a transaction\n * This implements the same logic as the CPI instruction available in /token/program-2022/src/extension/interest_bearing_mint/mod.rs\n * In general to calculate compounding interest over a period of time, the formula is:\n * A = P * e^(r * t) where\n * A = final amount after interest\n * P = principal amount (initial investment)\n * r = annual interest rate (as a decimal, e.g., 5% = 0.05)\n * t = time in years\n * e = mathematical constant (~2.718)\n *\n * In this case, we are calculating the total scale factor for the interest bearing extension which is the product of two exponential functions:\n * totalScale = e^(r1 * t1) * e^(r2 * t2)\n * where r1 and r2 are the interest rates before and after the last update, and t1 and t2 are the times in years between\n * the initialization timestamp and the last update timestamp, and between the last update timestamp and the current timestamp.\n *\n * @param amount                   Amount of tokens to be converted\n * @param decimals                 Number of decimals of the mint\n * @param currentTimestamp         Current timestamp in seconds\n * @param lastUpdateTimestamp      Last time the interest rate was updated in seconds\n * @param initializationTimestamp  Time the interest bearing extension was initialized in seconds\n * @param preUpdateAverageRate     Interest rate in basis points (1 basis point = 0.01%) before last update\n * @param currentRate              Current interest rate in basis points\n *\n * @return Amount scaled by accrued interest as a string with appropriate decimal places\n */\nexport function amountToUiAmountForInterestBearingMintWithoutSimulation(\n    amount: bigint,\n    decimals: number,\n    currentTimestamp: number,\n    lastUpdateTimestamp: number,\n    initializationTimestamp: number,\n    preUpdateAverageRate: number,\n    currentRate: number,\n): string {\n    const totalScale = calculateTotalScale({\n        currentTimestamp,\n        lastUpdateTimestamp,\n        initializationTimestamp,\n        preUpdateAverageRate,\n        currentRate,\n    });\n\n    // Scale the amount by the total interest factor\n    const scaledAmount = Number(amount) * totalScale;\n    const decimalFactor = getDecimalFactor(decimals);\n\n    return (Math.trunc(scaledAmount) / decimalFactor).toString();\n}\n\n/**\n * Convert an amount with interest back to the original amount without interest\n * This implements the same logic as the CPI instruction available in /token/program-2022/src/extension/interest_bearing_mint/mod.rs\n *\n * @param uiAmount                  UI Amount (principal plus continuously compounding interest) to be converted back to original principal\n * @param decimals                  Number of decimals for the mint\n * @param currentTimestamp          Current timestamp in seconds\n * @param lastUpdateTimestamp       Last time the interest rate was updated in seconds\n * @param initializationTimestamp   Time the interest bearing extension was initialized in seconds\n * @param preUpdateAverageRate      Interest rate in basis points (hundredths of a percent) before the last update\n * @param currentRate              Current interest rate in basis points\n *\n * In general to calculate the principal from the UI amount, the formula is:\n * P = A / (e^(r * t)) where\n * P = principal\n * A = UI amount\n * r = annual interest rate (as a decimal, e.g., 5% = 0.05)\n * t = time in years\n *\n * In this case, we are calculating the principal by dividing the UI amount by the total scale factor which is the product of two exponential functions:\n * totalScale = e^(r1 * t1) * e^(r2 * t2)\n * where r1 is the pre-update average rate, r2 is the current rate, t1 is the time in years between the initialization timestamp and the last update timestamp,\n * and t2 is the time in years between the last update timestamp and the current timestamp.\n * then to calculate the principal, we divide the UI amount by the total scale factor:\n * P = A / totalScale\n *\n * @return Original amount (principal) without interest\n */\nexport function uiAmountToAmountForInterestBearingMintWithoutSimulation(\n    uiAmount: string,\n    decimals: number,\n    currentTimestamp: number,\n    lastUpdateTimestamp: number,\n    initializationTimestamp: number,\n    preUpdateAverageRate: number,\n    currentRate: number,\n): bigint {\n    const uiAmountNumber = parseFloat(uiAmount);\n    const decimalsFactor = getDecimalFactor(decimals);\n    const uiAmountScaled = uiAmountNumber * decimalsFactor;\n\n    const totalScale = calculateTotalScale({\n        currentTimestamp,\n        lastUpdateTimestamp,\n        initializationTimestamp,\n        preUpdateAverageRate,\n        currentRate,\n    });\n\n    // Calculate original principal by dividing the UI amount by the total scale\n    const originalPrincipal = uiAmountScaled / totalScale;\n    return BigInt(Math.trunc(originalPrincipal));\n}\n\n// ========== SCALED UI AMOUNT MINT FUNCTIONS ==========\n\n/**\n * Convert amount to UiAmount for a mint with scaled UI amount extension\n * @param amount     Amount of tokens to be converted\n * @param decimals   Number of decimals of the mint\n * @param multiplier Multiplier to scale the amount\n * @return Scaled UI amount as a string\n */\nexport function amountToUiAmountForScaledUiAmountMintWithoutSimulation(\n    amount: bigint,\n    decimals: number,\n    multiplier: number,\n): string {\n    const scaledAmount = Number(amount) * multiplier;\n    const decimalFactor = getDecimalFactor(decimals);\n    return (Math.trunc(scaledAmount) / decimalFactor).toString();\n}\n\n/**\n * Convert a UI amount back to the raw amount for a mint with a scaled UI amount extension\n * @param uiAmount       UI Amount to be converted back to raw amount\n * @param decimals       Number of decimals for the mint\n * @param multiplier     Multiplier for the scaled UI amount\n *\n * @return Raw amount\n */\nexport function uiAmountToAmountForScaledUiAmountMintWithoutSimulation(\n    uiAmount: string,\n    decimals: number,\n    multiplier: number,\n): bigint {\n    const uiAmountNumber = parseFloat(uiAmount);\n    const decimalsFactor = getDecimalFactor(decimals);\n    const uiAmountScaled = uiAmountNumber * decimalsFactor;\n    const rawAmount = uiAmountScaled / multiplier;\n    return BigInt(Math.trunc(rawAmount));\n}\n\n// ========== MAIN ENTRY POINT FUNCTIONS ==========\n\n/**\n * Convert amount to UiAmount for a mint without simulating a transaction\n * This implements the same logic as `process_amount_to_ui_amount` in\n * solana-labs/solana-program-library/token/program-2022/src/processor.rs\n * and `process_amount_to_ui_amount` in solana-labs/solana-program-library/token/program/src/processor.rs\n *\n * @param rpc     Rpc to use\n * @param mint    Mint to use for calculations\n * @param amount  Amount of tokens to be converted to Ui Amount\n *\n * @return Ui Amount generated\n */\nexport async function amountToUiAmountForMintWithoutSimulation(\n    rpc: Rpc<GetAccountInfoApi>,\n    mint: Address,\n    amount: bigint,\n): Promise<string> {\n    const accountInfo = await fetchMint(rpc, mint);\n    const extensions = unwrapOption(accountInfo.data.extensions);\n\n    // Check for interest bearing mint extension\n    const interestBearingMintConfigState = extensions?.find(ext => ext.__kind === 'InterestBearingConfig');\n\n    // Check for scaled UI amount extension\n    const scaledUiAmountConfig = extensions?.find(ext => ext.__kind === 'ScaledUiAmountConfig');\n\n    // If no special extension, do standard conversion\n    if (!interestBearingMintConfigState && !scaledUiAmountConfig) {\n        const amountNumber = Number(amount);\n        const decimalsFactor = getDecimalFactor(accountInfo.data.decimals);\n        return (amountNumber / decimalsFactor).toString();\n    }\n\n    // Get timestamp if needed for special mint types\n    const timestamp = await getSysvarClockTimestamp(rpc);\n\n    // Handle interest bearing mint\n    if (interestBearingMintConfigState) {\n        return amountToUiAmountForInterestBearingMintWithoutSimulation(\n            amount,\n            accountInfo.data.decimals,\n            Number(timestamp),\n            Number(interestBearingMintConfigState.lastUpdateTimestamp),\n            Number(interestBearingMintConfigState.initializationTimestamp),\n            interestBearingMintConfigState.preUpdateAverageRate,\n            interestBearingMintConfigState.currentRate,\n        );\n    }\n\n    // At this point, we know it must be a scaled UI amount mint\n    if (scaledUiAmountConfig) {\n        let multiplier = scaledUiAmountConfig.multiplier;\n        // Use new multiplier if it's effective\n        if (timestamp >= scaledUiAmountConfig.newMultiplierEffectiveTimestamp) {\n            multiplier = scaledUiAmountConfig.newMultiplier;\n        }\n        return amountToUiAmountForScaledUiAmountMintWithoutSimulation(amount, accountInfo.data.decimals, multiplier);\n    }\n\n    // This should never happen due to the conditions above\n    throw new Error('Unknown mint extension type');\n}\n\n/**\n * Convert a UI amount back to the raw amount\n *\n * @param rpc      Rpc to use\n * @param mint     Mint to use for calculations\n * @param uiAmount UI Amount to be converted back to raw amount\n *\n * @return Raw amount\n */\nexport async function uiAmountToAmountForMintWithoutSimulation(\n    rpc: Rpc<GetAccountInfoApi>,\n    mint: Address,\n    uiAmount: string,\n): Promise<bigint> {\n    const accountInfo = await fetchMint(rpc, mint);\n    const extensions = unwrapOption(accountInfo.data.extensions);\n\n    // Check for interest bearing mint extension\n    const interestBearingMintConfigState = extensions?.find(ext => ext.__kind === 'InterestBearingConfig');\n\n    // Check for scaled UI amount extension\n    const scaledUiAmountConfig = extensions?.find(ext => ext.__kind === 'ScaledUiAmountConfig');\n\n    // If no special extension, do standard conversion\n    if (!interestBearingMintConfigState && !scaledUiAmountConfig) {\n        const uiAmountScaled = parseFloat(uiAmount) * getDecimalFactor(accountInfo.data.decimals);\n        return BigInt(Math.trunc(uiAmountScaled));\n    }\n\n    // Get timestamp if needed for special mint types\n    const timestamp = await getSysvarClockTimestamp(rpc);\n\n    // Handle interest bearing mint\n    if (interestBearingMintConfigState) {\n        return uiAmountToAmountForInterestBearingMintWithoutSimulation(\n            uiAmount,\n            accountInfo.data.decimals,\n            Number(timestamp),\n            Number(interestBearingMintConfigState.lastUpdateTimestamp),\n            Number(interestBearingMintConfigState.initializationTimestamp),\n            interestBearingMintConfigState.preUpdateAverageRate,\n            interestBearingMintConfigState.currentRate,\n        );\n    }\n\n    // At this point, we know it must be a scaled UI amount mint\n    if (scaledUiAmountConfig) {\n        let multiplier = scaledUiAmountConfig.multiplier;\n        // Use new multiplier if it's effective\n        if (timestamp >= scaledUiAmountConfig.newMultiplierEffectiveTimestamp) {\n            multiplier = scaledUiAmountConfig.newMultiplier;\n        }\n        return uiAmountToAmountForScaledUiAmountMintWithoutSimulation(uiAmount, accountInfo.data.decimals, multiplier);\n    }\n\n    // This should never happen due to the conditions above\n    throw new Error('Unknown mint extension type');\n}\n","import { Address, Instruction, isNone, isOption, TransactionSigner, wrapNullable } from '@solana/kit';\nimport {\n    ExtensionArgs,\n    getDisableMemoTransfersInstruction,\n    getEnableMemoTransfersInstruction,\n    getEnableCpiGuardInstruction,\n    getDisableCpiGuardInstruction,\n    getInitializeConfidentialTransferMintInstruction,\n    getInitializeDefaultAccountStateInstruction,\n    getInitializeGroupMemberPointerInstruction,\n    getInitializeGroupPointerInstruction,\n    getInitializeInterestBearingMintInstruction,\n    getInitializeMetadataPointerInstruction,\n    getInitializeMintCloseAuthorityInstruction,\n    getInitializeTokenGroupInstruction,\n    getInitializeTokenMetadataInstruction,\n    getInitializeTransferFeeConfigInstruction,\n    getInitializeNonTransferableMintInstruction,\n    getInitializeTransferHookInstruction,\n    getInitializePermanentDelegateInstruction,\n    getInitializeScaledUiAmountMintInstruction,\n    getInitializeConfidentialTransferFeeInstruction,\n    getInitializePausableConfigInstruction,\n    getInitializePermissionedBurnInstruction,\n} from './generated';\n\n/**\n * Given a mint address and a list of mint extensions, returns a list of\n * instructions that MUST be run _before_ the `initializeMint` instruction\n * to properly initialize the given extensions on the mint account.\n */\nexport function getPreInitializeInstructionsForMintExtensions(\n    mint: Address,\n    extensions: ExtensionArgs[],\n): Instruction[] {\n    return extensions.flatMap(extension => {\n        switch (extension.__kind) {\n            case 'ConfidentialTransferMint':\n                return [\n                    getInitializeConfidentialTransferMintInstruction({\n                        mint,\n                        ...extension,\n                    }),\n                ];\n            case 'DefaultAccountState':\n                return [\n                    getInitializeDefaultAccountStateInstruction({\n                        mint,\n                        state: extension.state,\n                    }),\n                ];\n            case 'TransferFeeConfig':\n                return [\n                    getInitializeTransferFeeConfigInstruction({\n                        mint,\n                        transferFeeConfigAuthority: extension.transferFeeConfigAuthority,\n                        withdrawWithheldAuthority: extension.withdrawWithheldAuthority,\n                        transferFeeBasisPoints: extension.newerTransferFee.transferFeeBasisPoints,\n                        maximumFee: extension.newerTransferFee.maximumFee,\n                    }),\n                ];\n            case 'MetadataPointer':\n                return [\n                    getInitializeMetadataPointerInstruction({\n                        mint,\n                        authority: extension.authority,\n                        metadataAddress: extension.metadataAddress,\n                    }),\n                ];\n            case 'InterestBearingConfig':\n                return [\n                    getInitializeInterestBearingMintInstruction({\n                        mint,\n                        rateAuthority: extension.rateAuthority,\n                        rate: extension.currentRate,\n                    }),\n                ];\n            case 'ScaledUiAmountConfig':\n                return [\n                    getInitializeScaledUiAmountMintInstruction({\n                        mint,\n                        authority: extension.authority,\n                        multiplier: extension.multiplier,\n                    }),\n                ];\n            case 'PausableConfig':\n                return [\n                    getInitializePausableConfigInstruction({\n                        mint,\n                        authority: extension.authority,\n                    }),\n                ];\n            case 'PermissionedBurn': {\n                const authority = isOption(extension.authority)\n                    ? extension.authority\n                    : wrapNullable(extension.authority);\n                if (isNone(authority)) {\n                    throw new Error('PermissionedBurn extension requires a permissioned burn authority');\n                }\n                return [\n                    getInitializePermissionedBurnInstruction({\n                        mint,\n                        authority: authority.value,\n                    }),\n                ];\n            }\n            case 'GroupPointer':\n                return [\n                    getInitializeGroupPointerInstruction({\n                        mint,\n                        authority: extension.authority,\n                        groupAddress: extension.groupAddress,\n                    }),\n                ];\n            case 'GroupMemberPointer':\n                return [\n                    getInitializeGroupMemberPointerInstruction({\n                        mint,\n                        authority: extension.authority,\n                        memberAddress: extension.memberAddress,\n                    }),\n                ];\n            case 'NonTransferable':\n                return getInitializeNonTransferableMintInstruction({ mint });\n            case 'TransferHook':\n                return [\n                    getInitializeTransferHookInstruction({\n                        mint,\n                        authority: extension.authority,\n                        programId: extension.programId,\n                    }),\n                ];\n            case 'PermanentDelegate':\n                return getInitializePermanentDelegateInstruction({\n                    mint,\n                    delegate: extension.delegate,\n                });\n            case 'ConfidentialTransferFee':\n                return [\n                    getInitializeConfidentialTransferFeeInstruction({\n                        mint,\n                        authority: extension.authority,\n                        withdrawWithheldAuthorityElGamalPubkey: extension.elgamalPubkey,\n                    }),\n                ];\n            case 'MintCloseAuthority':\n                return getInitializeMintCloseAuthorityInstruction({\n                    closeAuthority: extension.closeAuthority,\n                    mint,\n                });\n            default:\n                return [];\n        }\n    });\n}\n\n/**\n * Given a mint address and a list of mint extensions, returns a list of\n * instructions that MUST be run _after_ the `initializeMint` instruction\n * to properly initialize the given extensions on the mint account.\n */\nexport function getPostInitializeInstructionsForMintExtensions(\n    mint: Address,\n    authority: TransactionSigner,\n    extensions: ExtensionArgs[],\n): Instruction[] {\n    return extensions.flatMap((extension): Instruction[] => {\n        switch (extension.__kind) {\n            case 'TokenMetadata':\n                // eslint-disable-next-line no-case-declarations\n                const tokenMetadataUpdateAuthority = isOption(extension.updateAuthority)\n                    ? extension.updateAuthority\n                    : wrapNullable(extension.updateAuthority);\n                if (isNone(tokenMetadataUpdateAuthority)) {\n                    return [];\n                }\n                return [\n                    getInitializeTokenMetadataInstruction({\n                        metadata: mint,\n                        updateAuthority: tokenMetadataUpdateAuthority.value,\n                        mint,\n                        mintAuthority: authority,\n                        name: extension.name,\n                        symbol: extension.symbol,\n                        uri: extension.uri,\n                    }),\n                ];\n            case 'TokenGroup':\n                return [\n                    getInitializeTokenGroupInstruction({\n                        group: mint,\n                        updateAuthority: isOption(extension.updateAuthority)\n                            ? extension.updateAuthority\n                            : wrapNullable(extension.updateAuthority),\n                        mint,\n                        mintAuthority: authority,\n                        maxSize: extension.maxSize,\n                    }),\n                ];\n            default:\n                return [];\n        }\n    });\n}\n\n/**\n * Given a token address, its owner and a list of token extensions, returns a list\n * of instructions that MUST be run _after_ the `initializeAccount` instruction\n * to properly initialize the given extensions on the token account.\n */\nexport function getPostInitializeInstructionsForTokenExtensions(\n    token: Address,\n    owner: TransactionSigner | Address,\n    extensions: ExtensionArgs[],\n    multiSigners?: TransactionSigner[],\n): Instruction[] {\n    return extensions.flatMap(extension => {\n        switch (extension.__kind) {\n            case 'MemoTransfer':\n                return [\n                    extension.requireIncomingTransferMemos\n                        ? getEnableMemoTransfersInstruction({ owner, token, multiSigners })\n                        : getDisableMemoTransfersInstruction({\n                              owner,\n                              token,\n                              multiSigners,\n                          }),\n                ];\n            case 'CpiGuard':\n                return [\n                    extension.lockCpi\n                        ? getEnableCpiGuardInstruction({ owner, token, multiSigners })\n                        : getDisableCpiGuardInstruction({\n                              owner,\n                              token,\n                              multiSigners,\n                          }),\n                ];\n            default:\n                return [];\n        }\n    });\n}\n","import { getArrayEncoder, getConstantEncoder, getHiddenPrefixEncoder, getU8Encoder } from '@solana/kit';\nimport { ExtensionArgs, getExtensionEncoder } from './generated';\n\nconst TOKEN_BASE_SIZE = 165;\n\nexport function getTokenSize(extensions?: ExtensionArgs[]): number {\n    if (extensions == null) return TOKEN_BASE_SIZE;\n    const tvlEncoder = getHiddenPrefixEncoder(getArrayEncoder(getExtensionEncoder(), { size: 'remainder' }), [\n        getConstantEncoder(getU8Encoder().encode(2)),\n    ]);\n    return TOKEN_BASE_SIZE + tvlEncoder.encode(extensions).length;\n}\n","import { getArrayEncoder, getConstantEncoder, getHiddenPrefixEncoder, getU8Encoder, padLeftEncoder } from '@solana/kit';\nimport { ExtensionArgs, getExtensionEncoder } from './generated';\n\nconst MINT_BASE_SIZE = 82;\n\nexport function getMintSize(extensions?: ExtensionArgs[]): number {\n    if (extensions == null) return MINT_BASE_SIZE;\n    const tvlEncoder = getHiddenPrefixEncoder(getArrayEncoder(getExtensionEncoder(), { size: 'remainder' }), [\n        getConstantEncoder(padLeftEncoder(getU8Encoder(), 83).encode(1)),\n    ]);\n    return MINT_BASE_SIZE + tvlEncoder.encode(extensions).length;\n}\n"]}