diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index fe608e5c..468c1e39 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1 +1 @@ -* @joshuahannan \ No newline at end of file +*.cdc @dapperlabs/flow-smart-contracts diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2195baf5..0f69fdb5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -9,5 +9,5 @@ jobs: - uses: actions/checkout@v2 - uses: actions/setup-go@v1 with: - go-version: '1.16' + go-version: '1.18' - run: make ci \ No newline at end of file diff --git a/.gitignore b/.gitignore index fb8ed475..6c622679 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ .idea -flow.json \ No newline at end of file +flow.json +/imports +.vscode \ No newline at end of file diff --git a/README.md b/README.md index 4f636c70..9a15d24a 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ smart contract programming language designed for the Flow Blockchain. ### What is NBA Top Shot -NBA Top Shot is the official digital collecitibles +NBA Top Shot is the official digital collectibles game for the National Basketball Association. Players collect and trade digital collectibles that represent highlights from the best players in the world. See more at nbatopshot.com @@ -89,11 +89,11 @@ The directories here are organized into contracts, scripts, and transactions. Contracts contain the source code for the Top Shot contracts that are deployed to Flow. Scripts contain read-only transactions to get information about -the state of someones Collection or about the state of the TopShot contract. +the state of someone's Collection or about the state of the TopShot contract. Transactions contain the transactions that various admins and users can use to perform actions in the smart contract like creating plays and sets, -minting Moments, and transfering Moments. +minting Moments, and transferring Moments. - `contracts/` : Where the Top Shot related smart contracts live. - `transactions/` : This directory contains all the transactions and scripts @@ -137,7 +137,7 @@ pub resource Moment { pub let playID: UInt32 // the place in the edition that this Moment was minted - // Otherwise know as the serial number + // Otherwise known as the serial number pub let serialNumber: UInt32 } ``` @@ -162,7 +162,7 @@ The other types that are defined in `TopShot` are as follows: withdraw and deposit from this collection and get information about the contained Moments. - `Admin`: This is a resource type that can be used by admins to perform - various acitions in the smart contract like starting a new series, + various actions in the smart contract like starting a new series, creating a new play or set, and getting a reference to an existing set. - `QuerySetData`: A struct that contains the metadata associated with a set. This is currently the only way to access the metadata of a set. diff --git a/contracts/TopShot.cdc b/contracts/TopShot.cdc index 2a369960..011eae87 100644 --- a/contracts/TopShot.cdc +++ b/contracts/TopShot.cdc @@ -43,11 +43,25 @@ */ +import FungibleToken from 0xFUNGIBLETOKENADDRESS import NonFungibleToken from 0xNFTADDRESS import MetadataViews from 0xMETADATAVIEWSADDRESS import TopShotLocking from 0xTOPSHOTLOCKINGADDRESS pub contract TopShot: NonFungibleToken { + // ----------------------------------------------------------------------- + // TopShot deployment variables + // ----------------------------------------------------------------------- + + // The network the contract is deployed on + pub fun Network() : String { return ${NETWORK} } + + // The address to which royalties should be deposited + pub fun RoyaltyAddress() : Address { return 0xTOPSHOTROYALTYADDRESS } + + // The path to the Subedition Admin resource belonging to the Account + // which the contract is deployed on + pub fun SubeditionAdminStoragePath() : StoragePath { return /storage/TopShotSubeditionAdmin} // ----------------------------------------------------------------------- // TopShot contract Events @@ -72,7 +86,7 @@ pub contract TopShot: NonFungibleToken { // Emitted when a Set is locked, meaning Plays cannot be added pub event SetLocked(setID: UInt32) // Emitted when a Moment is minted from a Set - pub event MomentMinted(momentID: UInt64, playID: UInt32, setID: UInt32, serialNumber: UInt32) + pub event MomentMinted(momentID: UInt64, playID: UInt32, setID: UInt32, serialNumber: UInt32, subeditionID: UInt32) // Events for Collection-related actions // @@ -84,6 +98,12 @@ pub contract TopShot: NonFungibleToken { // Emitted when a Moment is destroyed pub event MomentDestroyed(id: UInt64) + // Emitted when a Subedition is created + pub event SubeditionCreated(subeditionID: UInt32, name: String, metadata: {String:String}) + + // Emitted when a Subedition is linked to the specific Moment + pub event SubeditionAddedToMoment(momentID: UInt64, subeditionID: UInt32, setID: UInt32, playID: UInt32) + // ----------------------------------------------------------------------- // TopShot contract-level fields. // These contain actual values that are stored in the smart contract. @@ -154,6 +174,16 @@ pub contract TopShot: NonFungibleToken { self.playID = TopShot.nextPlayID self.metadata = metadata } + + /// This function is intended to backfill the Play on blockchain with a more detailed + /// description of the Play. The benefit of having the description is that anyone would + /// be able to know the story of the Play directly from Flow + access(contract) fun updateTagline(tagline: String): UInt32 { + self.metadata["Tagline"] = tagline + + TopShot.playDatas[self.playID] = self + return self.playID + } } // A Set is a grouping of Plays that have occured in the real world @@ -352,7 +382,8 @@ pub contract TopShot: NonFungibleToken { // Mint the new moment let newMoment: @NFT <- create NFT(serialNumber: numInPlay + UInt32(1), playID: playID, - setID: self.setID) + setID: self.setID, + subeditionID: 0) // Increment the count of Moments minted for this Play self.numberMintedPerPlay[playID] = numInPlay + UInt32(1) @@ -380,6 +411,71 @@ pub contract TopShot: NonFungibleToken { return <-newCollection } + // mintMomentWithSubedition mints a new Moment with subedition and returns the newly minted Moment + // + // Parameters: playID: The ID of the Play that the Moment references + // subeditionID: The ID of the subedition within Edition that the Moment references + // + // Pre-Conditions: + // The Play must exist in the Set and be allowed to mint new Moments + // + // Returns: The NFT that was minted + // + pub fun mintMomentWithSubedition(playID: UInt32, subeditionID: UInt32): @NFT { + pre { + self.retired[playID] != nil: "Cannot mint the moment: This play doesn't exist." + !self.retired[playID]!: "Cannot mint the moment from this play: This play has been retired." + } + + // Gets the number of Moments that have been minted for this subedition + // to use as this Moment's serial number + let subeditionRef = TopShot.account.borrow<&SubeditionAdmin>(from: TopShot.SubeditionAdminStoragePath()) + ?? panic("No subedition admin resource in storage") + + let numInSubedition = subeditionRef.getNumberMintedPerSubedition(setID: self.setID, + playID: playID, + subeditionID: subeditionID) + + // Mint the new moment + let newMoment: @NFT <- create NFT(serialNumber: numInSubedition + UInt32(1), + playID: playID, + setID: self.setID, + subeditionID: subeditionID) + + // Increment the count of Moments minted for this subedition + subeditionRef.addToNumberMintedPerSubedition(setID: self.setID, + playID: playID, + subeditionID: subeditionID) + + subeditionRef.setMomentsSubedition(nftID: newMoment.id, subeditionID: subeditionID, setID: self.setID, playID: playID) + + self.numberMintedPerPlay[playID] = self.numberMintedPerPlay[playID]! + UInt32(1) + + return <-newMoment + } + + // batchMintMomentWithSubedition mints an arbitrary quantity of Moments with subedition + // and returns them as a Collection + // + // Parameters: playID: the ID of the Play that the Moments are minted for + // quantity: The quantity of Moments to be minted + // subeditionID: The ID of the subedition within Edition that the Moments references + // + // Returns: Collection object that contains all the Moments that were minted + // + pub fun batchMintMomentWithSubedition(playID: UInt32, quantity: UInt64, subeditionID: UInt32): @Collection { + let newCollection <- create Collection() + + var i: UInt64 = 0 + while i < quantity { + newCollection.deposit(token: <-self.mintMomentWithSubedition(playID: playID, + subeditionID: subeditionID)) + i = i + UInt64(1) + } + + return <-newCollection + } + pub fun getPlays(): [UInt32] { return self.plays } @@ -568,7 +664,7 @@ pub contract TopShot: NonFungibleToken { // Struct of Moment metadata pub let data: MomentData - init(serialNumber: UInt32, playID: UInt32, setID: UInt32) { + init(serialNumber: UInt32, playID: UInt32, setID: UInt32, subeditionID: UInt32) { // Increment the global Moment IDs TopShot.totalSupply = TopShot.totalSupply + UInt64(1) @@ -577,11 +673,15 @@ pub contract TopShot: NonFungibleToken { // Set the metadata struct self.data = MomentData(setID: setID, playID: playID, serialNumber: serialNumber) - emit MomentMinted(momentID: self.id, playID: playID, setID: self.data.setID, serialNumber: self.data.serialNumber) + emit MomentMinted(momentID: self.id, + playID: playID, + setID: self.data.setID, + serialNumber: self.data.serialNumber, + subeditionID: subeditionID) } // If the Moment is destroyed, emit an event to indicate - // to outside ovbservers that it has been destroyed + // to outside observers that it has been destroyed destroy() { emit MomentDestroyed(id: self.id) } @@ -593,8 +693,8 @@ pub contract TopShot: NonFungibleToken { .concat(" ") .concat(playType) } - - pub fun description(): String { + + access(self) fun buildDescString(): String { let setName: String = TopShot.getSetName(setID: self.data.setID) ?? "" let serialNumber: String = self.data.serialNumber.toString() let seriesNumber: String = TopShot.getSetSeries(setID: self.data.setID)?.toString() ?? "" @@ -606,21 +706,41 @@ pub contract TopShot: NonFungibleToken { .concat(serialNumber) } + /// The description of the Moment. If Tagline property of the play is empty, compose it using the buildDescString function + /// If the Tagline property is not empty, use that as the description + pub fun description(): String { + let playDesc: String = TopShot.getPlayMetaDataByField(playID: self.data.playID, field: "Tagline") ?? "" + + return playDesc.length > 0 ? playDesc : self.buildDescString() + } + + // All supported metadata views for the Moment including the Core NFT Views pub fun getViews(): [Type] { return [ Type(), - Type() + Type(), + Type(), + Type(), + Type(), + Type(), + Type(), + Type(), + Type(), + Type() ] } + + pub fun resolveView(_ view: Type): AnyStruct? { switch view { case Type(): return MetadataViews.Display( name: self.name(), description: self.description(), - thumbnail: MetadataViews.HTTPFile(url:"https://ipfs.dapperlabs.com/ipfs/Qmbdj1agtbzpPWZ81wCGaDiMKRFaRN3TU6cfztVCu6nh4o") + thumbnail: MetadataViews.HTTPFile(url: self.thumbnail()) ) + // Custom metadata view unique to TopShot Moments case Type(): return TopShotMomentMetadataView( fullName: TopShot.getPlayMetaDataByField(playID: self.data.playID, field: "FullName"), @@ -654,10 +774,161 @@ pub contract TopShot: NonFungibleToken { setID: self.data.setID, numMomentsInEdition: TopShot.getNumMomentsInEdition(setID: self.data.setID, playID: self.data.playID) ) + case Type(): + let name = self.getEditionName() + let max = TopShot.getNumMomentsInEdition(setID: self.data.setID, playID: self.data.playID) ?? 0 + let editionInfo = MetadataViews.Edition(name: name, number: UInt64(self.data.serialNumber), max: max > 0 ? UInt64(max) : nil) + let editionList: [MetadataViews.Edition] = [editionInfo] + return MetadataViews.Editions( + editionList + ) + case Type(): + return MetadataViews.Serial( + UInt64(self.data.serialNumber) + ) + case Type(): + let royaltyReceiver: Capability<&{FungibleToken.Receiver}> = + getAccount(TopShot.RoyaltyAddress()).getCapability<&AnyResource{FungibleToken.Receiver}>(MetadataViews.getRoyaltyReceiverPublicPath()) + return MetadataViews.Royalties( + royalties: [ + MetadataViews.Royalty( + receiver: royaltyReceiver, + cut: 0.05, + description: "NBATopShot marketplace royalty" + ) + ] + ) + case Type(): + return MetadataViews.ExternalURL(self.getMomentURL()) + case Type(): + return MetadataViews.NFTCollectionData( + storagePath: /storage/MomentCollection, + publicPath: /public/MomentCollection, + providerPath: /private/MomentCollection, + publicCollection: Type<&TopShot.Collection{TopShot.MomentCollectionPublic}>(), + publicLinkedType: Type<&TopShot.Collection{TopShot.MomentCollectionPublic,NonFungibleToken.Receiver,NonFungibleToken.CollectionPublic,MetadataViews.ResolverCollection}>(), + providerLinkedType: Type<&TopShot.Collection{NonFungibleToken.Provider,TopShot.MomentCollectionPublic,NonFungibleToken.Receiver,NonFungibleToken.CollectionPublic,MetadataViews.ResolverCollection}>(), + createEmptyCollectionFunction: (fun (): @NonFungibleToken.Collection { + return <-TopShot.createEmptyCollection() + }) + ) + case Type(): + let bannerImage = MetadataViews.Media( + file: MetadataViews.HTTPFile( + url: "https://nbatopshot.com/static/img/top-shot-logo-horizontal-white.svg" + ), + mediaType: "image/svg+xml" + ) + let squareImage = MetadataViews.Media( + file: MetadataViews.HTTPFile( + url: "https://nbatopshot.com/static/img/og/og.png" + ), + mediaType: "image/png" + ) + return MetadataViews.NFTCollectionDisplay( + name: "NBA-Top-Shot", + description: "NBA Top Shot is your chance to own, sell, and trade official digital collectibles of the NBA and WNBA's greatest plays and players", + externalURL: MetadataViews.ExternalURL("https://nbatopshot.com"), + squareImage: squareImage, + bannerImage: bannerImage, + socials: { + "twitter": MetadataViews.ExternalURL("https://twitter.com/nbatopshot"), + "discord": MetadataViews.ExternalURL("https://discord.com/invite/nbatopshot"), + "instagram": MetadataViews.ExternalURL("https://www.instagram.com/nbatopshot") + } + ) + case Type(): + // sports radar team id + let excludedNames: [String] = ["TeamAtMomentNBAID"] + // non play specific traits + let traitDictionary: {String: AnyStruct} = { + "SeriesNumber": TopShot.getSetSeries(setID: self.data.setID), + "SetName": TopShot.getSetName(setID: self.data.setID), + "SerialNumber": self.data.serialNumber, + "Locked": TopShotLocking.isLocked(nftRef: &self as! &NonFungibleToken.NFT) + } + // add play specific data + let fullDictionary = self.mapPlayData(dict: traitDictionary) + return MetadataViews.dictToTraits(dict: fullDictionary, excludedNames: excludedNames) + case Type(): + return MetadataViews.Medias( + items: [ + MetadataViews.Media( + file: MetadataViews.HTTPFile( + url: self.mediumimage() + ), + mediaType: "image/jpeg" + ), + MetadataViews.Media( + file: MetadataViews.HTTPFile( + url: self.video() + ), + mediaType: "video/mp4" + ) + ] + ) } return nil } + + // Functions used for computing MetadataViews + + // mapPlayData helps build our trait map from play metadata + // Returns: The trait map with all non-empty fields from play data added + pub fun mapPlayData(dict: {String: AnyStruct}) : {String: AnyStruct} { + let playMetadata = TopShot.getPlayMetaData(playID: self.data.playID) ?? {} + for name in playMetadata.keys { + let value = playMetadata[name] ?? "" + if value != "" { + dict.insert(key: name, value) + } + } + return dict + } + + // getMomentURL + // Returns: The computed external url of the moment + pub fun getMomentURL(): String { + return "https://nbatopshot.com/moment/".concat(self.id.toString()) + } + // getEditionName Moment's edition name is a combination of the Moment's setName and playID + // `setName: #playID` + pub fun getEditionName() : String { + let setName: String = TopShot.getSetName(setID: self.data.setID) ?? "" + let editionName = setName.concat(": #").concat(self.data.playID.toString()) + return editionName + } + + pub fun assetPath(): String { + return "https://assets.nbatopshot.com/media/".concat(self.id.toString()) + } + + // returns a url to display an medium sized image + pub fun mediumimage(): String { + let url = self.assetPath().concat("?width=512") + return self.appendOptionalParams(url: url, firstDelim: "&") + } + + // a url to display a thumbnail associated with the moment + pub fun thumbnail(): String { + let url = self.assetPath().concat("?width=256") + return self.appendOptionalParams(url: url, firstDelim: "&") + } + + // a url to display a video associated with the moment + pub fun video(): String { + let url = self.assetPath().concat("/video") + return self.appendOptionalParams(url: url, firstDelim: "?") + } + + // appends and optional network param needed to resolve the media + pub fun appendOptionalParams(url: String, firstDelim: String): String { + if (TopShot.Network() == "testnet") { + return url.concat(firstDelim).concat("testnet") + } + return url + } } // Admin is a special authorization resource that @@ -691,6 +962,16 @@ pub contract TopShot: NonFungibleToken { return newID } + /// Temporarily enabled so the description of the play can be backfilled + /// Parameters: playID: The ID of the play to update + /// tagline: A string to be used as the tagline for the play + /// Returns: The ID of the play + pub fun updatePlayTagline(playID: UInt32, tagline: String): UInt32 { + let tmpPlay = TopShot.playDatas[playID] ?? panic("playID does not exist") + tmpPlay.updateTagline(tagline: tagline) + return playID + } + // createSet creates a new Set resource and stores it // in the sets mapping in the TopShot contract // @@ -750,6 +1031,41 @@ pub contract TopShot: NonFungibleToken { return TopShot.currentSeries } + // createSubeditionResource creates new SubeditionMap resource that + // will be used to mint Moments with Subeditions + pub fun createSubeditionAdminResource() { + TopShot.account.save<@SubeditionAdmin>(<- create SubeditionAdmin(), to: TopShot.SubeditionAdminStoragePath()) + } + + // setMomentsSubedition saves which Subedition the Moment belongs to + // + // Parameters: nftID: The ID of the NFT + // subeditionID: The ID of the Subedition the Moment belongs to + // setID: The ID of the Set that the Moment references + // playID: The ID of the Play that the Moment references + // + pub fun setMomentsSubedition(nftID: UInt64, subeditionID: UInt32, setID: UInt32, playID: UInt32) { + let subeditionAdmin = TopShot.account.borrow<&SubeditionAdmin>(from: TopShot.SubeditionAdminStoragePath()) + ?? panic("No subedition admin resource in storage") + + subeditionAdmin.setMomentsSubedition(nftID: nftID, subeditionID: subeditionID, setID: setID, playID: playID) + } + + // createSubedition creates a new Subedition struct + // and stores it in the Subeditions dictionary in the SubeditionAdmin resource + // + // Parameters: name: The name of the Subedition + // metadata: A dictionary mapping metadata titles to their data + // + // Returns: the ID of the new Subedition object + // + pub fun createSubedition(name:String, metadata:{String:String}): UInt32 { + let subeditionAdmin = TopShot.account.borrow<&SubeditionAdmin>(from: TopShot.SubeditionAdminStoragePath()) + ?? panic("No subedition admin resource in storage") + + return subeditionAdmin.createSubedition(name:name, metadata:metadata) + } + // createNewAdmin creates a new Admin resource // pub fun createNewAdmin(): @Admin { @@ -802,11 +1118,11 @@ pub contract TopShot: NonFungibleToken { } // Remove the nft from the Collection - let token <- self.ownedNFTs.remove(key: withdrawID) + let token <- self.ownedNFTs.remove(key: withdrawID) ?? panic("Cannot withdraw: Moment does not exist in the collection") emit Withdraw(id: token.id, from: self.owner?.address) - + // Return the withdrawn token return <-token } @@ -919,6 +1235,27 @@ pub contract TopShot: NonFungibleToken { } } + // destroyMoments destroys moments in this collection + // unlocks the moments if they are locked + // + // Parameters: ids: An array of NFT IDs + // to be destroyed from the Collection + pub fun destroyMoments(ids: [UInt64]) { + let topShotLockingAdmin = TopShot.account.borrow<&TopShotLocking.Admin>(from: TopShotLocking.AdminStoragePath()) + ?? panic("No TopShotLocking admin resource in storage") + + for id in ids { + // Remove the nft from the Collection + let token <- self.ownedNFTs.remove(key: id) + ?? panic("Cannot destroy: Moment does not exist in collection: ".concat(id.toString())) + + // does nothing if the moment is not locked + topShotLockingAdmin.unlockByID(id: id) + + destroy token + } + } + // getIDs returns an array of the IDs that are in the Collection pub fun getIDs(): [UInt64] { return self.ownedNFTs.keys @@ -939,6 +1276,19 @@ pub contract TopShot: NonFungibleToken { return (&self.ownedNFTs[id] as &NonFungibleToken.NFT?)! } + // Safe way to borrow a reference to an NFT that does not panic + // Also now part of the NonFungibleToken.PublicCollection interface + // + // Parameters: id: The ID of the NFT to get the reference for + // + // Returns: An optional reference to the desired NFT, will be nil if the passed ID does not exist + pub fun borrowNFTSafe(id: UInt64): &NonFungibleToken.NFT? { + if let nftRef = &self.ownedNFTs[id] as &NonFungibleToken.NFT? { + return nftRef + } + return nil + } + // borrowMoment returns a borrowed reference to a Moment // so that the caller can read data and call methods from it. // They can use this to read its setID, playID, serialNumber, @@ -1152,6 +1502,184 @@ pub contract TopShot: NonFungibleToken { } } + // getMomentsSubedition returns the Subedition the Moment belongs to + // + // Parameters: nftID: The ID of the NFT + // + // returns: UInt32? Subedition's ID if exists + // + pub fun getMomentsSubedition(nftID: UInt64):UInt32? { + let subeditionAdmin = self.account.borrow<&SubeditionAdmin>(from: TopShot.SubeditionAdminStoragePath()) + ?? panic("No subedition admin resource in storage") + + return subeditionAdmin.getMomentsSubedition(nftID: nftID) + } + + // getAllSubeditions returns all the subeditions in topshot subeditionAdmin resource + // + // Returns: An array of all the subeditions that have been created + pub fun getAllSubeditions():[TopShot.Subedition] { + let subeditionAdmin = self.account.borrow<&SubeditionAdmin>(from: TopShot.SubeditionAdminStoragePath()) + ?? panic("No subedition admin resource in storage") + return subeditionAdmin.subeditionDatas.values + } + + // getSubeditionByID returns the subedition struct entity + // + // Parameters: subeditionID: The id of the Subedition that is being searched + // + // Returns: The Subedition struct + pub fun getSubeditionByID(subeditionID: UInt32):TopShot.Subedition { + let subeditionAdmin = self.account.borrow<&SubeditionAdmin>(from: TopShot.SubeditionAdminStoragePath()) + ?? panic("No subedition admin resource in storage") + return subeditionAdmin.subeditionDatas[subeditionID]! + } + + // This script reads the public nextSubeditionID from the SubeditionAdmin resource and + // returns that number to the caller + // + // Returns: UInt32 + // the next number in nextSubeditionID from the SubeditionAdmin resource + pub fun getNextSubeditionID():UInt32 { + let subeditionAdmin = self.account.borrow<&SubeditionAdmin>(from: TopShot.SubeditionAdminStoragePath()) + ?? panic("No subedition admin resource in storage") + return subeditionAdmin.nextSubeditionID + } + // SubeditionAdmin is a resource that allows Set to mint Moments with Subeditions + // + pub struct Subedition { + pub let subeditionID: UInt32 + + pub let name: String + + pub let metadata: {String: String} + + init(subeditionID: UInt32, name: String, metadata: {String: String}) { + pre { + name.length != 0: "New Subedition name cannot be empty" + } + self.subeditionID = subeditionID + self.name = name + self.metadata = metadata + } + } + + pub resource SubeditionAdmin { + + // Map of number of already minted Moments using Subedition. + // When a new Moment with Subedition is minted, 1 is added to the + // number in this map by the key, formed by concatinating of + // SetID, PlayID and SubeditionID + access(contract) let numberMintedPerSubedition: {String:UInt32} + + // Map of Subedition which the Moment belongs to. + // This map updates after each minting. + access(contract) let momentsSubedition: {UInt64:UInt32} + + // The ID that is used to create Subeditions. + // Every time a Subeditions is created, subeditionID is assigned + // to the new Subedition's ID and then is incremented by 1. + access(contract) var nextSubeditionID: UInt32 + + // Variable size dictionary of Subedition structs + access(contract) let subeditionDatas: {UInt32: Subedition} + + // createSubedition creates a new Subedition struct + // and stores it in the Subeditions dictionary in the SubeditionAdmin resource + // + // Parameters: name: The name of the Subedition + // metadata: A dictionary mapping metadata titles to their data + // + // Returns: the ID of the new Subedition object + // + pub fun createSubedition(name:String, metadata:{String:String}): UInt32 { + + let newID = self.nextSubeditionID + + var newSubedition = Subedition(subeditionID: newID, name: name, metadata: metadata) + + self.nextSubeditionID = self.nextSubeditionID + UInt32(1) + + self.subeditionDatas[newID] = newSubedition + + emit SubeditionCreated(subeditionID: newID, name: name, metadata: metadata) + + return newID + } + + // getMomentsSubedition function that return's wich Subedition the Moment belongs to + // + // Parameters: nftID: The ID of the NFT + // + // returns: UInt32? Subedition's ID if exists + // + pub fun getMomentsSubedition(nftID: UInt64):UInt32? { + return self.momentsSubedition[nftID] + } + + // getNumberMintedPerSubedition function that return's + // the number of Moments that have been minted for this subedition + // to use as this Moment's serial number + // + // Parameters: setID: The ID of the Set Moment will be minted from + // playID: The ID of the Play Moment will be minted from + // subeditionID: The ID of the Subedition using which moment will be minted + // + // returns: UInt32 Number of Moments, already minted for this Subedition + // + pub fun getNumberMintedPerSubedition(setID: UInt32, playID: UInt32, subeditionID: UInt32): UInt32 { + let setPlaySubedition = setID.toString().concat(playID.toString()).concat(subeditionID.toString()) + if !self.numberMintedPerSubedition.containsKey(setPlaySubedition) { + self.numberMintedPerSubedition.insert(key: setPlaySubedition,UInt32(0)) + return UInt32(0) + } + return self.numberMintedPerSubedition[setPlaySubedition]! + } + + // addToNumberMintedPerSubedition function that increments 1 to the + // number of Moments that have been minted for this subedition + // + // Parameters: setID: The ID of the Set Moment will be minted from + // playID: The ID of the Play Moment will be minted from + // subeditionID: The ID of the Subedition using which moment will be minted + // + // + pub fun addToNumberMintedPerSubedition(setID: UInt32, playID: UInt32, subeditionID: UInt32) { + let setPlaySubedition = setID.toString().concat(playID.toString()).concat(subeditionID.toString()) + + if !self.numberMintedPerSubedition.containsKey(setPlaySubedition) { + panic("Could not find specified Subedition!") + } + self.numberMintedPerSubedition[setPlaySubedition] = self.numberMintedPerSubedition[setPlaySubedition]! + UInt32(1) + } + + + // setMomentsSubedition saves which Subedition the Moment belongs to + // + // Parameters: nftID: The ID of the NFT + // subeditionID: The ID of the Subedition the Moment belongs to + // setID: The ID of the Set that the Moment references + // playID: The ID of the Play that the Moment references + // + pub fun setMomentsSubedition(nftID: UInt64, subeditionID: UInt32, setID: UInt32, playID: UInt32){ + pre { + !self.momentsSubedition.containsKey(nftID) : "Subedition for this moment already exists!" + } + + self.momentsSubedition.insert(key: nftID, subeditionID) + + emit SubeditionAddedToMoment(momentID: nftID, subeditionID: subeditionID, setID: setID, playID: playID) + } + + init() { + self.momentsSubedition = {} + self.numberMintedPerSubedition = {} + self.subeditionDatas = {} + self.nextSubeditionID = 1 + } + } + + // ----------------------------------------------------------------------- // TopShot initialization function // ----------------------------------------------------------------------- diff --git a/contracts/TopShotLocking.cdc b/contracts/TopShotLocking.cdc index 4ace7184..423ad0ae 100644 --- a/contracts/TopShotLocking.cdc +++ b/contracts/TopShotLocking.cdc @@ -123,6 +123,10 @@ pub contract TopShotLocking { return self.lockedNFTs.length } + // The path to the TopShotLocking Admin resource belonging to the Account + // which the contract is deployed on + pub fun AdminStoragePath() : StoragePath { return /storage/TopShotLockingAdmin} + // Admin is a special authorization resource that // allows the owner to override the lock on a moment // @@ -141,6 +145,28 @@ pub contract TopShotLocking { TopShotLocking.unlockableNFTs[nftRef.id] = true } + pub fun unlockByID(id: UInt64) { + if !TopShotLocking.lockedNFTs.containsKey(id) { + // nft is not locked, do nothing + return + } + TopShotLocking.lockedNFTs.remove(key: id) + emit MomentUnlocked(id: id) + } + + // admin may alter the expiry of a lock on an NFT + pub fun setLockExpiryByID(id: UInt64, expiryTimestamp: UFix64) { + if expiryTimestamp < getCurrentBlock().timestamp { + panic("cannot set expiry in the past") + } + + let duration = expiryTimestamp - getCurrentBlock().timestamp + + TopShotLocking.lockedNFTs[id] = expiryTimestamp + + emit MomentLocked(id: id, duration: duration, expiryTimestamp: expiryTimestamp) + } + // unlocks all NFTs pub fun unlockAll() { TopShotLocking.lockedNFTs = {} @@ -160,6 +186,6 @@ pub contract TopShotLocking { let admin <- create Admin() // Store it in private account storage in `init` so only the admin can use it - self.account.save(<-admin, to: /storage/TopShotLockingAdmin) + self.account.save(<-admin, to: TopShotLocking.AdminStoragePath()) } } diff --git a/contracts/TopShotMarketV3.cdc b/contracts/TopShotMarketV3.cdc index 0c08b827..c9b59389 100644 --- a/contracts/TopShotMarketV3.cdc +++ b/contracts/TopShotMarketV3.cdc @@ -41,6 +41,7 @@ import TopShot from 0xTOPSHOTADDRESS import Market from 0xMARKETADDRESS import DapperUtilityCoin from 0xDUCADDRESS import TopShotLocking from 0xTOPSHOTLOCKINGADDRESS +import MetadataViews from 0xMETADATAVIEWSADDRESS pub contract TopShotMarketV3 { @@ -53,7 +54,7 @@ pub contract TopShotMarketV3 { /// emitted when the price of a listed moment has changed pub event MomentPriceChanged(id: UInt64, newPrice: UFix64, seller: Address?) /// emitted when a token is purchased from the market - pub event MomentPurchased(id: UInt64, price: UFix64, seller: Address?) + pub event MomentPurchased(id: UInt64, price: UFix64, seller: Address?, momentName: String, momentDescription: String, momentThumbnailURL: String) /// emitted when a moment has been withdrawn from the sale pub event MomentWithdrawn(id: UInt64, owner: Address?) @@ -218,26 +219,25 @@ pub contract TopShotMarketV3 { self.ownerCapability.borrow()! .deposit(from: <-buyTokens) - emit MomentPurchased(id: tokenID, price: price, seller: self.owner?.address) - // Return the purchased token let boughtMoment <- self.ownerCollection.borrow()!.withdraw(withdrawID: tokenID) as! @TopShot.NFT + let momentDisplay = boughtMoment.resolveView(Type())! as! MetadataViews.Display + emit MomentPurchased(id: tokenID, price: price, seller: self.owner?.address, momentName: momentDisplay.name, momentDescription: momentDisplay.description, momentThumbnailURL: momentDisplay.thumbnail.uri()) + return <-boughtMoment // If not found in this SaleCollection, check V1 - } else { - if let v1Market = self.marketV1Capability { - let v1MarketRef = v1Market.borrow()! + } else if let v1Market = self.marketV1Capability { + let v1MarketRef = v1Market.borrow()! - return <-v1MarketRef.purchase(tokenID: tokenID, buyTokens: <-buyTokens) - } else { - panic("No token matching this ID for sale!") - } - } + return <-v1MarketRef.purchase(tokenID: tokenID, buyTokens: <-buyTokens) + } - destroy buyTokens // This line can be removed when this issue is released: https://github.com/onflow/cadence/pull/1000 + // Refactored to avoid dead code to resolve + // https://github.com/dapperlabs/nba-smart-contracts/issues/165 panic("No token matching this ID for sale!") + } /// changeOwnerReceiver updates the capability for the sellers fungible token Vault @@ -333,3 +333,4 @@ pub contract TopShotMarketV3 { self.marketPublicPath = /public/topshotSalev3Collection } } + \ No newline at end of file diff --git a/contracts/TopShotShardedCollection.cdc b/contracts/TopShotShardedCollection.cdc index 8a0b6838..a9ea19ec 100644 --- a/contracts/TopShotShardedCollection.cdc +++ b/contracts/TopShotShardedCollection.cdc @@ -133,6 +133,21 @@ pub contract TopShotShardedCollection { return ids } + // Safe way to borrow a reference to an NFT that does not panic + // Also now part of the NonFungibleToken.CollectionPublic interface + // + // Parameters: id: The ID of the NFT to get the reference for + // + // Returns: An optional reference to the desired NFT, will be nil if the passed ID does not exist + pub fun borrowNFTSafe(id: UInt64): &NonFungibleToken.NFT? { + + // Get the bucket of the nft to be borrowed + let bucket = id % self.numBuckets + + // Find NFT in the collections and borrow a reference + return self.collections[bucket]?.borrowNFTSafe(id: id) ?? nil + } + // borrowNFT Returns a borrowed reference to a Moment in the Collection // so that the caller can read data and call methods from it pub fun borrowNFT(id: UInt64): &NonFungibleToken.NFT { diff --git a/lib/go/contracts/contracts.go b/lib/go/contracts/contracts.go index e7b06ae9..669a452e 100644 --- a/lib/go/contracts/contracts.go +++ b/lib/go/contracts/contracts.go @@ -25,21 +25,29 @@ const ( defaultMarketAddress = "MARKETADDRESS" defaultMetadataviewsAddress = "METADATAVIEWSADDRESS" defaultTopShotLockingAddress = "TOPSHOTLOCKINGADDRESS" + defaultTopShotRoyaltyAddress = "TOPSHOTROYALTYADDRESS" + defaultNetwork = "${NETWORK}" ) // GenerateTopShotContract returns a copy // of the topshot contract with the import addresses updated -func GenerateTopShotContract(nftAddr string, metadataViewsAddr string, topShotLockingAddr string) []byte { +func GenerateTopShotContract(ftAddr string, nftAddr string, metadataViewsAddr string, topShotLockingAddr string, royaltyAddr string, network string) []byte { topShotCode := assets.MustAssetString(topshotFile) - codeWithNFTAddr := strings.ReplaceAll(topShotCode, defaultNonFungibleTokenAddress, nftAddr) + codeWithFTAddr := strings.ReplaceAll(topShotCode, defaultFungibleTokenAddress, ftAddr) + + codeWithNFTAddr := strings.ReplaceAll(codeWithFTAddr, defaultNonFungibleTokenAddress, nftAddr) codeWithMetadataViewsAddr := strings.ReplaceAll(codeWithNFTAddr, defaultMetadataviewsAddress, metadataViewsAddr) codeWithTopShotLockingAddr := strings.ReplaceAll(codeWithMetadataViewsAddr, defaultTopShotLockingAddress, topShotLockingAddr) - return []byte(codeWithTopShotLockingAddr) + codeWithTopShotRoyaltyAddr := strings.ReplaceAll(codeWithTopShotLockingAddr, defaultTopShotRoyaltyAddress, royaltyAddr) + + codeWithNetwork := strings.ReplaceAll(codeWithTopShotRoyaltyAddr, defaultNetwork, network) + + return []byte(codeWithNetwork) } // GenerateTopShotShardedCollectionContract returns a copy @@ -79,7 +87,7 @@ func GenerateTopShotMarketContract(ftAddr, nftAddr, topshotAddr, ducTokenAddr st // GenerateTopShotMarketV3Contract returns a copy // of the third version TopShotMarketContract with the import addresses updated -func GenerateTopShotMarketV3Contract(ftAddr, nftAddr, topshotAddr, marketAddr, ducTokenAddr string, topShotLockingAddr string) []byte { +func GenerateTopShotMarketV3Contract(ftAddr, nftAddr, topshotAddr, marketAddr, ducTokenAddr, topShotLockingAddr, metadataViewsAddr string) []byte { marketCode := assets.MustAssetString(marketV3File) codeWithNFTAddr := strings.ReplaceAll(marketCode, defaultNonFungibleTokenAddress, nftAddr) @@ -88,8 +96,9 @@ func GenerateTopShotMarketV3Contract(ftAddr, nftAddr, topshotAddr, marketAddr, d codeWithMarketV3Addr := strings.ReplaceAll(codeWithFTAddr, defaultMarketAddress, marketAddr) codeWithTokenAddr := strings.ReplaceAll(codeWithMarketV3Addr, "DUCADDRESS", ducTokenAddr) codeWithTopShotLockingAddr := strings.ReplaceAll(codeWithTokenAddr, defaultTopShotLockingAddress, topShotLockingAddr) + codeWithMetadataViewAddr := strings.ReplaceAll(codeWithTopShotLockingAddr, defaultMetadataviewsAddress, metadataViewsAddr) - return []byte(codeWithTopShotLockingAddr) + return []byte(codeWithMetadataViewAddr) } // GenerateTopShotLockingContract returns a copy diff --git a/lib/go/contracts/contracts_test.go b/lib/go/contracts/contracts_test.go index 00e8a583..4c98d11b 100644 --- a/lib/go/contracts/contracts_test.go +++ b/lib/go/contracts/contracts_test.go @@ -14,9 +14,11 @@ var addrC = "0C" var addrD = "0D" var addrE = "0E" var addrF = "0F" +var addrG = "0G" +var network = "mainnet" func TestTopShotContract(t *testing.T) { - contract := contracts.GenerateTopShotContract(addrA, addrA, addrA) + contract := contracts.GenerateTopShotContract(addrA, addrA, addrA, addrA, addrA, network) assert.NotNil(t, contract) } @@ -39,7 +41,7 @@ func TestTopShotMarketContract(t *testing.T) { } func TestTopShotMarketV3Contract(t *testing.T) { - contract := contracts.GenerateTopShotMarketV3Contract(addrA, addrB, addrC, addrD, addrE, addrF) + contract := contracts.GenerateTopShotMarketV3Contract(addrA, addrB, addrC, addrD, addrE, addrF, addrG) assert.NotNil(t, contract) assert.Contains(t, string(contract), addrA) } diff --git a/lib/go/contracts/go.mod b/lib/go/contracts/go.mod index 07e7bbce..7defa9d1 100644 --- a/lib/go/contracts/go.mod +++ b/lib/go/contracts/go.mod @@ -1,16 +1,19 @@ module github.com/dapperlabs/nba-smart-contracts/lib/go/contracts -go 1.16 +go 1.18 require ( - github.com/davecgh/go-spew v1.1.1 // indirect github.com/kevinburke/go-bindata v3.22.0+incompatible + github.com/stretchr/testify v1.7.1 +) + +require ( + github.com/davecgh/go-spew v1.1.1 // indirect github.com/kr/pretty v0.3.0 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect github.com/rogpeppe/go-internal v1.8.0 // indirect - github.com/stretchr/testify v1.7.1 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect - ) replace github.com/dapperlabs/nba-smart-contracts/lib/go/contracts => ../contracts diff --git a/lib/go/contracts/internal/assets/assets.go b/lib/go/contracts/internal/assets/assets.go index a28c3417..4b14f236 100644 --- a/lib/go/contracts/internal/assets/assets.go +++ b/lib/go/contracts/internal/assets/assets.go @@ -2,11 +2,11 @@ // sources: // ../../../contracts/MarketTopShot.cdc (12.958kB) // ../../../contracts/MarketTopShotOldVersion.cdc (11.029kB) -// ../../../contracts/TopShot.cdc (46.894kB) -// ../../../contracts/TopShotLocking.cdc (5.506kB) +// ../../../contracts/TopShot.cdc (72.606kB) +// ../../../contracts/TopShotLocking.cdc (6.509kB) // ../../../contracts/TopShotMarketV2.cdc (13.008kB) -// ../../../contracts/TopShotMarketV3.cdc (14.918kB) -// ../../../contracts/TopShotShardedCollection.cdc (6.957kB) +// ../../../contracts/TopShotMarketV3.cdc (15.16kB) +// ../../../contracts/TopShotShardedCollection.cdc (7.626kB) // ../../../contracts/TopshotAdminReceiver.cdc (1.169kB) package assets @@ -117,7 +117,7 @@ func markettopshotoldversionCdc() (*asset, error) { return a, nil } -var _topshotCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xdc\x7d\x5d\x73\x5b\x37\xb2\xe0\xbb\x7f\x05\xac\x87\x84\x9a\x95\xa9\xe4\x26\xe5\xdd\x65\x59\x71\x14\xcb\x4e\x74\x27\x56\x7c\x2d\x25\xa9\xdd\x54\x6a\x07\xe4\x01\x49\x8c\x0e\x0f\x38\x00\x28\x86\xf1\xcd\x7f\xdf\x42\x37\xbe\x81\x73\x48\x59\xca\xdc\x9d\xd5\x83\x2d\x91\x40\x03\x68\x74\x37\xfa\x03\xe8\x3e\xfd\xcb\x13\x42\x08\xb9\x60\x6a\x26\xf9\x5a\x73\xd1\x4d\xc8\x2b\xd6\x69\x49\x5b\x72\xbd\xa2\x52\x93\x57\xc2\xfc\x35\xd3\x64\x2e\x24\xb9\xfa\xe6\x9c\xdc\x88\xf5\xf5\x52\xe8\x27\xd0\xf1\x66\xc9\x15\x51\xd0\x70\xe6\x1a\x9a\x5f\x28\xef\x14\xd1\x4b\x46\x66\x42\x32\x32\xdf\x74\x33\x03\x9b\xb6\x5c\xef\x00\x10\x74\xb6\xd0\x88\x01\x77\x42\x66\x92\x51\xcd\x1a\x32\xdd\x91\x0b\xba\x5e\x33\x49\xbe\xa7\x53\xe5\x86\x61\x01\xfe\x8a\x76\x74\xc1\x10\x7c\x43\x35\x25\x54\x29\x31\xe3\xd0\x79\xcb\xf5\x92\xd0\xb6\x85\x2f\xd7\x2d\xdd\x29\x42\xbb\x86\x28\xa6\x15\x00\xd2\x4b\xaa\x09\x95\x8c\x6c\x14\x6b\x08\x55\x44\xb3\xd5\xba\xa5\x9a\x29\x98\x96\xe9\xf5\x56\xac\x58\xa7\xc9\xd5\x9b\x1b\x3b\xf8\xcf\x4b\xd6\x11\x4a\x3a\xb6\x25\xef\x5a\xba\x23\x5b\xda\x69\x45\xb4\x20\x53\x46\x68\xd3\xb0\xc6\xfc\x6e\x7a\x4a\x36\x13\xb2\x51\x27\x84\x76\xe4\xbc\x59\xf1\xce\xae\x09\x87\x8e\x20\x28\x2d\x37\x33\x8d\x93\x31\xf8\xd3\x42\xb2\x86\xf0\x0e\xa0\xa4\xd8\x1c\x7b\x04\x74\x11\x58\xea\x40\x03\xcc\x6b\xa6\xd5\x18\xfe\x35\xdd\x14\x57\x9a\x88\x39\xa1\x64\xbd\x99\xb6\x7c\x96\x8c\x06\xc0\xfc\x06\xd9\x06\xbc\x9b\x0b\xb9\xa2\x66\x87\x08\x9d\x8a\x8d\x26\xd4\x60\xec\x04\x50\x47\xc9\x5a\xf2\x3b\x33\x94\x64\x4a\x6c\xe4\x0c\x71\x87\xd8\x14\x64\xc5\x3b\x0d\x93\x58\x01\xda\x14\x99\x52\x83\x59\x31\x9f\x9b\x39\xe0\x0e\xc0\xc8\x4b\x7a\xc7\xc8\x94\xb1\x8e\xb4\xbc\xbb\x0d\x48\xbb\x66\xd1\x1a\x09\x85\xf5\xf9\x91\x96\x14\xb7\x79\x2d\xb6\x4c\x9a\x1e\x8d\x80\xdd\x15\x73\xf8\x98\xaf\xd6\x42\x6a\xda\x69\x42\x81\xbe\x10\xd1\x75\x3c\xda\x6d\x34\xf0\x15\x6c\xa1\x01\x37\x33\xc0\x1c\x75\x2a\xd3\x13\x57\x6e\x69\x85\xed\xb0\x85\x5e\x32\x2e\xc9\x54\x48\x29\xb6\xd7\x4c\xfb\x1e\x06\xc4\x82\x19\x74\x49\x36\x67\x92\x75\x33\x46\x1c\x62\x00\x90\x9b\x4b\x98\x85\xd9\xc8\x13\x07\xba\xcb\x27\x20\xec\xd4\x99\x26\x1b\xc5\xbb\x05\xa2\xce\x03\xb7\x88\xba\x34\xad\xb8\x59\xc5\xee\xa4\xb2\x54\xd8\x36\xae\x15\x69\xd8\x9c\x77\xac\xf1\xe8\x34\x0b\xd4\x0c\x9a\x00\x1c\x60\x96\x85\xa1\x23\xa2\x19\x5d\x6d\x85\xbc\x3d\x21\x7f\xdf\x28\x4d\x5a\x7e\xcb\x00\xf2\x65\xd7\x70\xda\x51\xf2\x8e\xce\x98\x54\x38\xda\x02\x89\x5a\x03\xff\x9a\x8e\x00\xcc\x50\x9c\x41\x15\x5f\xb1\x31\x7c\x10\x78\xc7\x91\x86\xe1\x3b\x43\x2f\xac\xb1\x18\x30\x1f\xf0\x8e\x6b\x4e\x5b\xfe\xbb\xe7\x5e\xcb\x81\x17\x86\xb5\x2d\xed\xd2\x0e\x09\xce\x74\x90\x4c\x6f\x64\x87\x82\xc2\x4c\x07\x20\xca\x71\x45\x50\xd0\x56\x09\x8b\x04\x45\x28\x79\x25\xda\x96\xe1\xbe\x39\x8c\x8c\x51\x80\x71\x23\x25\x88\x98\xfe\x9d\x25\x7c\xc2\xee\x98\xdc\x39\x79\x67\x04\x02\x11\xdb\x8e\x49\xb2\xe5\x6d\x8b\x4c\x6b\xf7\x97\x4b\x42\x67\x33\xb1\xe9\xb4\x67\x0b\x90\x51\xf6\x3b\xd3\x73\xe6\x07\x8f\x66\xba\xa2\xbc\xf3\x12\xd0\x81\x40\xf0\x30\x77\xe0\x19\xb3\x93\x62\xdb\x39\xb9\x14\x00\x59\x6a\xd7\x40\x48\x1b\xc5\xcc\xb8\x4b\xd1\x36\xbe\x87\xc3\x7b\xe0\xbf\x4e\x68\xb2\x63\x1a\xf9\x50\x31\x64\x02\x6a\x3a\x3b\x04\x5e\x09\xcd\x26\xe4\x1c\x16\x68\x98\x7e\xb6\xa4\xdd\xc2\x50\x62\x20\x52\x98\xdf\x9a\x76\x46\x72\xcc\x0d\xe2\x78\x77\x47\x5b\xde\x10\x2a\x17\x1b\x98\x23\xc7\xa9\xad\xa5\xb8\xe3\x46\x3e\x0a\x49\x44\xc7\x0c\x89\x98\xa9\xad\x25\x7b\x36\x13\x5d\xc3\x2d\xcd\x4b\xb2\x16\x0a\xc8\xd7\x7d\x44\x25\xeb\x3e\xd5\x64\x65\x44\x83\x01\xf4\xc6\x8f\x0d\x4b\x69\x04\x7c\x2b\x1a\x3e\xdf\xd9\x69\xe2\x96\xf0\xd5\xba\xdd\x59\x02\x21\x9f\x19\xc8\x1d\x6f\x71\x2f\x0d\x4f\xe8\xa5\x50\x8c\xcc\xa8\x62\x8a\x74\x0c\x45\xd0\xd4\x08\x99\xae\x69\x03\x3d\x19\x96\xf4\xe8\xb8\x04\x01\x0d\x9b\x11\x84\x8d\x16\x44\xb2\x15\x5b\x4d\x8d\x4c\xf2\xd4\x62\x36\xf4\x5b\xd1\x36\xac\x23\xd7\x30\xa7\x9f\xa9\x94\x5c\x48\x45\xa6\x2d\xdb\x12\x4a\xbe\x78\xf6\x39\x69\x19\xf5\x82\xfe\xdf\x3e\xfb\xfc\x39\xf0\xd0\x9c\x77\xb4\x55\xe3\x27\x4f\xfe\x72\xfa\xe4\x09\x0e\x43\xae\x44\xf7\x66\xd3\x2d\xf8\xb4\x65\x37\xe2\x96\x75\x64\x2e\xc5\x8a\x7c\xf6\xdb\xd5\x9b\x9b\xf3\x8b\x8b\xf7\xaf\xaf\xaf\x5d\xcb\xb7\x4c\x53\x73\x0c\xfe\xc4\xd9\x56\xb9\x66\x6f\x5f\xdf\x9c\x5f\x9c\xdf\x9c\xff\x74\xf9\xfa\xe7\xeb\xac\x83\x25\xe8\xef\xc5\xec\x16\x36\x16\x7b\xdc\xfc\xf0\xee\xfa\xbb\x1f\x6e\xbe\xff\xe1\xd5\x5f\x2f\xaf\xbe\x75\x5d\x9e\xac\x37\xd3\xc0\x50\xb6\xe7\xa4\x9c\xdd\x07\x44\xd7\xe9\x29\x79\xf6\x38\x3f\x0e\x9c\xe3\x3e\x3f\x87\xd7\x77\x86\xa6\x1f\x7b\x34\x07\xef\xf5\x8a\x6b\xd0\x23\x8c\xdc\x32\x9b\x54\x8c\xcf\x95\xd3\x54\x90\xc6\x37\x53\x23\x27\xba\xa0\x28\x5d\x06\x81\x36\x3a\xae\x03\x2e\x55\x81\x5e\xa8\xa6\xd1\x2b\xfc\x66\xc4\x9b\x09\xf9\xf1\xb2\xd3\x5f\xfc\xdb\x89\xe1\x0d\xd8\xf5\x09\xf9\x70\xad\x25\xef\x16\x13\xfc\xef\x8f\xe3\x81\x11\x15\x93\x9c\x29\x38\x55\x41\x02\x68\xc9\x17\x0b\x26\x91\xf6\xa9\x3d\x1d\xb3\x09\x5c\xb1\xed\x35\x74\xbb\xd6\x54\x9a\x59\x74\x6c\xfb\x6a\x23\x25\xeb\x34\x7e\xee\xe6\x14\xad\x15\xb6\x08\x14\xaa\x6b\xa6\x9f\xbd\x67\x2d\xe8\x66\xf1\x19\x7d\x7a\x3a\x30\x4d\x73\xc4\xf6\x22\xe4\x9a\x69\x87\x0f\xc5\xf4\xe5\x45\x40\x89\xca\xa6\xb3\x07\xf3\x86\xaf\x9d\xf6\x46\x0d\xd8\x0a\xe6\xcf\x4d\x83\x1b\x71\xcd\x74\x3e\x98\xd1\x6c\xc2\xdf\x7d\x83\xb9\x81\x24\xd3\xdc\xa0\x19\x78\x0d\x06\x03\x81\x34\xa3\x9d\x91\xc8\x53\xab\x8e\x5a\x75\xaa\x32\x8f\xf7\xd8\xff\x8d\x14\xab\xbd\x73\x39\x21\xdd\x66\x85\x87\xc5\x5e\x64\x58\x4c\xb7\x62\x76\x6b\x0e\xe5\x15\xa3\x9d\x11\x09\xef\x40\x6d\x0b\xb3\x03\x3c\x95\xfb\xf0\x3d\x74\x4b\x67\xd3\x37\x92\x3d\xbd\xb8\xb2\x1a\x40\x84\x8a\x0c\x30\xb6\x7c\x0b\xad\x46\x78\x84\x39\xf0\xcf\xbf\x2c\x17\x5b\x21\x02\xda\x5e\x6d\x8c\x70\x1e\xa4\xcc\xa0\x0d\x3c\x93\xf7\x21\xd0\x95\x5f\x88\xd1\x56\x1a\x49\xb7\x9d\x5b\x4b\x00\x99\x2d\xe9\x67\xdb\xd2\x73\xb0\x59\x88\xe9\x34\x21\xe7\x4d\x23\x99\x52\x2f\xfb\xf0\x16\x86\x6b\xd8\x5a\x28\xae\xc1\x50\x00\x92\xed\x1d\xee\x02\x5b\x26\xa3\x69\x11\x8f\xb5\x77\x93\x1a\xa6\xb4\x14\xbb\x62\xd7\xad\x6a\xe6\xbe\x8d\x86\x38\xfe\x67\x9d\x00\xcf\x5a\x76\xc7\x5a\x32\xe7\xac\x6d\xd4\xd8\xb7\x5a\x32\xc5\x9c\x65\x63\x76\x72\x43\x5b\x72\x47\xdb\x0d\x53\xc1\xe8\x1b\x36\xb4\xfe\xa4\x23\x05\xa5\x24\x4e\x02\xd4\xf6\x6b\x50\xc0\x5a\xd1\x2d\x8c\x15\x39\xce\xda\x19\xb1\x64\x26\x35\x63\x6b\x67\x21\x76\x0d\x9f\x81\x89\x4a\xc9\x42\x8a\xcd\xda\x28\x52\x60\xed\xe9\xa5\x14\x9b\xc5\x32\x52\xba\x4f\x4f\xc9\x5b\xda\xed\xac\x31\x48\x3b\xc2\x7e\x33\xe6\xa0\x59\x3f\xb4\x3a\x21\xd3\x8d\x26\xa2\x6b\x77\xa0\x91\xa1\xc8\x1c\xfb\x4d\xbe\xa3\x92\xcc\x6a\xc2\xdd\xaf\xe6\x27\x2a\x39\x9d\xb6\x8c\x28\xfe\x3b\x23\x0d\x47\xbb\x5e\xee\xcc\x9c\xa2\x03\xcd\x9a\xbc\xb3\x19\x53\x6a\xa4\x58\x3b\x3f\x06\xd8\x86\x79\x8d\x5e\xaf\x26\xe4\x03\x02\x9e\x40\xaf\x3f\x0e\x82\x7f\xcd\x62\xa3\xa0\x67\x08\x85\x8d\xe2\x11\x6c\xbf\x83\x07\x09\x06\x53\xef\x10\x6a\x42\xbe\x8e\xe1\x07\xd8\x46\x0d\xbc\xbc\xf0\xb6\xbd\x13\xec\xd6\x5c\x07\xc9\x3a\x26\x91\x3c\x92\x3b\xd8\x98\xe8\xb0\xb0\xe7\x9e\x13\x75\x40\x11\x4a\xf1\x85\xb1\x79\x5c\x47\x6b\x3c\xbb\xc3\xec\x53\x65\xc6\x44\x1d\x97\x75\xa6\x07\xef\x66\x46\x47\xed\xac\x47\xe5\xf3\x74\x8f\x3b\xf6\x9b\x7e\x97\x08\xd2\x03\xe7\x8f\xae\x86\x64\xda\x95\xd3\xfa\xf4\x14\xc5\x72\x32\xf5\x68\xca\x8a\xe9\x8f\x99\xf1\x75\x2c\xea\x93\x09\x6b\xa1\x69\x6b\xce\x3d\xa3\x92\x8b\x39\xd8\x54\xca\x08\x8d\xc8\x99\x93\xbb\x21\xb2\x09\x7f\xc3\x66\xd4\x18\x51\xd0\xd4\x70\xce\x94\x05\x29\x78\x62\xcc\xac\x46\x30\x65\x0c\x8f\x8e\x19\x7a\xa0\x92\xb7\x3b\x38\x31\x03\x6b\x3b\x58\x92\xcd\x8d\x64\x46\xdf\x45\x3e\x37\x18\x80\x5b\xce\x34\x56\xbd\xb5\xb9\x01\x39\x1b\x6f\x54\x38\x58\x61\xc2\xf6\xe0\xd4\x82\x34\x54\xb3\x31\x39\x37\x56\x89\xf3\x63\x2d\x5a\x31\xa5\xad\x3b\x2e\x2e\x2f\xf0\x90\x33\x5d\x78\xb7\x48\x51\x09\x13\xba\xde\xac\xd7\xed\xce\x09\xef\x7f\xb2\xec\x7e\x25\x56\x78\x96\x91\x9b\xdd\x9a\xa1\x89\xce\xe3\xb3\xf7\xd1\xe7\x01\xa7\x83\x39\x02\x00\xd5\x7f\x89\x46\xfc\x0b\x20\xca\xcc\x23\x96\xd1\x6e\xc2\x0e\x80\x21\x54\xa1\x97\xcc\x1b\xfa\xca\x59\xdd\x63\x0b\x3c\x02\x49\x1a\x01\x96\xb6\x3d\x8d\x3c\x0c\x3c\x94\xec\x21\x84\x67\x13\xca\x63\xb0\xa1\x95\xa6\xdd\x8c\x91\x91\x31\x96\xc1\x13\x71\x6c\xa8\xc5\xda\xcd\x1a\xc6\x80\x59\x3a\x70\x96\x46\x23\xb7\x69\x32\x73\x5c\x8c\x77\xf5\x25\xa3\xfe\x69\x67\x9d\x57\xac\xc9\x75\xe4\x74\x5c\x8a\xb6\x51\xde\x62\x89\xdd\xb5\xae\x9f\x75\xfc\xa8\x35\x9b\xf1\x39\x9f\x81\x55\x6c\xa4\xdf\x49\xf0\x44\xb5\x6c\xc1\xba\xc6\x08\x69\x4b\xe3\xa0\xb3\x38\x00\xef\xe9\x8e\x9c\xb7\x2d\xeb\xc8\x92\x23\x2b\x7d\x01\x02\x87\x63\xe7\xef\x18\x45\x8d\xfb\x7a\xbd\x91\x2a\x32\xc0\xbf\xb0\xc6\x37\x59\xd0\x15\x23\xcf\x1d\x38\x21\x11\xfc\xf7\xb0\x25\xd7\x9a\xad\x97\xac\x53\xa2\x43\x53\xde\x76\x67\x14\xf8\xf9\x7b\x36\x95\xa2\x23\xff\x4e\x57\x01\xb1\xfe\x2c\x8e\xc4\x8f\x75\xeb\xb4\x91\xaf\x90\x12\xc5\xbb\x45\x8b\x9e\x6a\x62\x7d\x9d\xe8\x63\x12\x73\x07\x83\xeb\x80\x3b\x20\x36\xe7\xd7\x96\xcc\x3a\x70\xdb\x9d\x3d\xa3\x8c\x3d\x7e\x42\x94\x20\xb4\xdb\x19\xc2\x99\xd1\x2e\x88\x24\xda\xa0\xbb\xac\xb2\x0d\x39\xfa\x61\x3a\x97\x17\xf1\x62\x8c\xf0\xb0\xb6\x2a\x6c\xb2\x35\xf8\x23\x19\xbc\xe9\xf8\x3f\x36\x70\x76\x38\x4f\xba\x69\xe8\x5b\x19\x00\x2d\xd3\x99\xfe\x9e\x40\xb9\x36\x34\xaa\xbc\xfb\x3e\xcc\x14\x7c\xd2\xce\xa3\x6f\xf0\x04\x3a\x80\xb1\x54\x56\x74\xbd\xe6\xdd\x22\x9d\x0b\x7a\xf4\x0c\x07\x02\xe1\x88\x6e\x41\x34\x93\x2b\xb2\xa5\x3b\xf0\xc5\x79\xc0\xb0\x25\x53\xa7\x17\x8e\xc9\xa5\x39\x96\x28\xc4\x04\x84\xa4\x72\x17\x83\x9d\x89\xce\xae\x7f\xbb\xe4\x2d\x23\x5b\x46\xe6\x7c\xb1\x91\x8c\xa0\xc3\x7c\xca\xb4\x66\x12\xc6\x40\x3f\xb5\xdf\xb3\x08\x4a\x81\x8d\xd2\x8c\x27\xd6\x8e\x0f\x98\x31\x62\x65\xd4\xdf\xf0\x98\x7c\xf0\x4d\xd1\xeb\xc6\xb2\x4f\xcc\x8f\x9f\x4d\xcb\xba\x85\x5e\x92\xa7\x67\xe4\xb3\x09\x39\xba\x72\xd6\xb0\xc7\x49\xb0\xfa\xd8\x6a\xad\x77\x47\x09\xa4\x3f\x92\xbf\x8c\x46\x34\xb6\x4a\xca\x99\x93\xf5\xe3\xa0\x5b\x94\x8d\xfd\x28\x67\x7e\xc0\x27\x29\xec\xa0\x48\x9d\x3b\xcd\xc2\x6a\xbd\x66\xbb\xad\x92\x19\x9f\xe5\x62\x36\xdb\x44\x4a\xbd\x64\xb4\x25\x5b\x21\x5b\x7f\xb0\x43\xd3\x15\xbd\x65\x64\xb3\x06\x4f\x3d\x1a\x7b\x5e\x93\x76\x0e\xd5\x69\x6b\xc4\x31\xc8\x1b\xa3\xe0\x99\xaf\xa6\x54\xb1\x29\x6d\xdb\x48\x2c\xbc\xa5\x0b\x3e\x23\x33\x2a\x1b\x35\x26\xe7\x88\xbb\xa0\x67\xf3\x8e\xac\x36\xad\xe6\xeb\xd6\xa8\x95\x73\xe0\x73\x0d\xe0\xbc\xc8\x0d\xea\x3e\x2a\xb3\xdc\x52\x73\x3d\x20\x44\xd1\xce\x71\x01\x8f\xc2\x58\x39\xf7\x8c\x4e\xfe\xb1\x01\xa5\x0c\x5b\x29\x70\x54\x46\x81\x1d\x7f\x08\x85\xf8\x8e\x39\x32\x66\xb4\x6d\x0d\x62\xef\xa8\xe4\x62\xa3\xc8\x02\xa8\x18\x3c\x02\x89\x80\xa6\xc8\x4b\xac\x2b\xa7\x42\x7e\x30\xd6\x84\xf6\xc1\x1b\x17\xb3\xa1\x53\x0e\xe1\xbe\x48\x65\xb5\x2e\x5b\x63\xa0\x00\x15\xd8\x3d\x73\x01\xa6\x58\xf5\x1e\xf7\x08\x1f\x87\xb6\x54\xfe\xfc\x58\xc8\x1e\xe7\x57\x88\x99\x4d\x95\xfa\xa3\xed\x7f\x65\xa4\xbf\x5d\x58\xdc\xf3\xf4\x94\xb0\xdf\xc6\xe4\xe8\x86\xaf\x98\x8a\x9d\x82\x52\x18\x1b\xfc\x3d\x5d\x6b\x21\x15\x99\x2d\xc5\x6d\x20\x41\xc3\x11\x62\x3e\x57\x47\xc5\x04\x3a\xba\x62\x8e\x6f\x53\xc9\x77\x88\x8d\x48\x1e\xd1\x4e\x24\x0f\xb3\x15\x53\xac\x96\x86\xa2\x17\x5b\xf1\x8a\x0f\x13\x54\xa6\x87\x13\x52\x5f\x79\x19\x75\x6d\xb1\x77\x6f\xf1\x84\x76\x48\x2a\x9d\xc0\x8e\x28\x9b\x02\xfc\x33\x18\xa6\x06\x07\xb0\x1e\x00\x25\x66\x72\xaf\x10\xf3\x22\xcc\x87\x34\xb5\xd1\x78\x53\xdd\xcc\x10\x4d\x08\xaf\x68\x41\x68\xd3\x80\xb6\x22\xd9\x4a\xdc\xb1\x58\xb9\x52\xce\xd7\xa4\xac\x0b\x11\xe2\xaf\xd6\xdb\x97\x6b\x1f\x97\x85\x30\x71\x9c\x86\x42\x25\x0b\x4e\x1a\xc5\x21\xb6\x3c\x74\x19\x8f\xf5\x21\x4b\xab\x94\x2c\x45\x53\x8c\x1a\xc2\xb8\x33\x70\x29\x37\x4e\x64\x5b\x37\xab\x1b\xc6\x47\x3a\x4d\xb3\x78\x19\x89\xe0\x0e\xca\x12\xfc\x69\x78\x2b\x1c\xaa\x76\xb4\xb7\x71\x9c\x2b\x04\x19\xc1\xa9\x0d\x23\xba\x73\xbe\x35\x16\x17\x98\x4b\xc8\x5b\x10\x61\x15\xf1\x7a\x4d\x6b\x3c\x30\x10\x04\xd7\x27\xa6\xf9\x96\x19\xdd\x4d\x79\xad\xc6\x98\x83\x7e\x66\xa5\x6c\x0f\x51\x7a\x88\x1c\xa1\xf7\x37\xde\x3f\x3b\x54\xf0\xb8\x7a\x84\x58\x4f\x71\xa2\x50\x1b\x40\x9d\x00\x45\x86\x49\x3c\xf5\xdc\x92\x63\x67\x2a\xd7\x05\x01\xcc\xa3\x4d\x6c\xc5\xec\x56\x85\x91\x3b\x23\x8e\xfd\xac\xac\x31\xe1\x1d\xe2\x66\xdd\x86\xfb\x53\x45\x16\xdb\x29\x6d\xd1\x89\x83\x57\x06\xc5\x45\x9c\xb7\xed\xe8\x18\x88\xd4\x0c\x6d\x7e\x95\x36\xba\xd6\x90\x29\x9d\xdd\x3e\xd3\xe2\x99\xf9\xff\x84\xe4\x3b\x60\xcc\x98\x56\xb8\x7b\x04\x73\x21\xd9\x9d\xb1\xbc\xba\xc6\x28\x75\x4b\xd0\xfb\x84\x64\xde\x4a\x37\xd2\x09\x54\x58\x87\x01\x23\x9a\x3c\xcd\x1a\x80\xfb\x4e\x0b\x75\xaf\xd3\xe2\x5c\x4a\xba\xcb\xae\x37\x98\xb5\x51\xb2\xa6\x52\xe3\x39\x62\x18\xcf\x85\x2f\x6d\x37\x7b\x8f\x64\x9d\x07\x1f\xec\x04\x4e\x80\xa9\x2e\x2f\xcc\x19\xac\x08\x5d\xaf\x59\x67\x1a\x2c\x99\x4c\x65\xb6\x75\xd0\x34\x82\xa1\x8e\xbb\x80\x53\xd3\x08\x8a\xc6\x11\x97\x81\x0e\x73\xac\x87\x21\x02\x38\xeb\xda\x72\x12\x20\x38\xe9\xd4\x84\xfc\x82\x2b\xff\xf5\x49\x7a\x60\xac\xbd\xa7\xef\xf2\xc2\xae\xfd\xd2\x1f\x3c\x7c\xee\x47\xeb\xc2\x41\x66\xf7\x29\x26\x97\x14\x25\xf5\x78\x0c\x38\x5d\xb8\x02\x1d\x1f\x3f\x9e\xd3\x56\x31\x32\x32\xab\xb6\x4b\x39\x1e\x02\x67\xdb\x9c\xe0\x4c\x70\x47\x00\xe1\x72\xc3\xb2\xf8\x0b\x84\xb9\xf7\x62\xc6\x02\x8c\x5c\x8b\xdf\x08\xd1\xfe\x91\x60\x28\x41\x46\x4c\xd0\x78\x5e\xb4\x3b\x1b\x6d\xa9\x4d\x3c\x75\xa5\xb9\xf5\x6f\x3a\xec\x41\xe2\x1e\x66\xfa\xef\xbc\x1d\x48\xdb\x56\x6c\x7d\x40\x3b\xe2\xe2\xda\x28\x2a\x0d\xfa\x54\x83\x3d\x49\xbf\x73\xbf\x8b\x1d\x30\x62\xc0\x17\x12\x9c\x9d\x9e\x16\x7e\xaa\x27\x71\x77\xb8\xa7\xc5\x66\x5c\xd9\x1b\x33\xa6\x89\x5b\x2c\xcc\x04\x4c\xf0\x64\xc4\xcb\x79\x19\x9c\xaa\xce\x13\xa4\x54\x42\xa0\xfd\x82\x0a\x27\x0b\x60\xd2\xe9\x51\x1d\xd4\x77\x7f\x25\x29\x16\x07\x66\xef\x71\x1a\xb8\xe3\x39\x4b\xc4\xb6\x49\x60\x8b\xa0\x8f\x45\xae\x3d\x31\xf7\x53\x2c\x26\x51\xb8\xfa\x8c\x78\xf2\x46\x39\xae\x3f\xe2\xab\xda\xde\xe6\x61\x36\x4b\xfb\xe0\xf6\x29\xaf\x9a\xd9\xd6\xf6\x08\xb4\x90\xd4\x52\x6c\xf1\x9e\x46\x4b\x67\x2c\xc2\xc9\x09\x61\x8b\x31\xf9\xfc\x0b\xb3\x86\xe7\x9f\xed\x61\x15\x5c\x2e\x46\xf1\xde\x31\x69\x26\x1f\xb1\x0d\xfe\x9f\xdb\xb8\x43\xca\xe2\x7d\x95\x39\x14\xcd\x67\xe4\x97\x5f\xcb\xef\x5c\x34\xf6\x8c\x7c\xa8\x68\x8c\x96\x9a\xcf\x50\xda\x54\xd4\xc4\x72\x65\x08\x29\x69\x7a\x7a\x4a\x30\x4c\x1d\x62\xda\x60\xb7\xe0\x89\x63\x05\x23\x5c\x4d\xc4\x7b\x44\x40\x7c\x41\x13\xd3\x42\xd2\x45\x3a\xb8\x5b\xb4\x0b\x70\xfc\x12\x50\xf2\x2b\x39\x73\x03\x58\x24\x9a\x7f\x8f\x23\xad\x34\x11\x1d\x4d\x03\x93\xa6\x4d\xa3\xdc\x79\x14\x8e\xa1\x9a\xb7\xc2\x28\x22\x54\xd2\x15\x33\xb6\xe1\xc4\xbb\x70\xec\x49\x64\xed\x26\x80\xe9\x2c\xd8\x29\x33\x2c\x11\xe2\xc6\x15\x80\x92\x3d\x7b\xe5\xaf\xfc\x4c\xf2\x13\x0e\xa0\x75\x8c\x35\xfe\xa6\xa5\xb5\x4f\x0c\xdc\x75\xec\x58\xb2\x1d\xc0\x42\x88\xda\x1b\x29\x81\x5b\x59\x05\x3d\xa3\xdd\xa7\x96\xe3\x68\x2b\x19\x6d\x76\xc8\x79\xc9\xa9\x7c\x5d\x47\x87\x11\x09\xf3\x4d\xe7\x10\x39\xca\xee\x02\x1c\x64\xe6\xb8\xdd\xf4\x11\xb1\x5f\x10\xca\xaf\xe4\xe9\x19\xe9\x78\x3b\x21\x47\xaf\x50\xd4\x19\x0d\x3a\xe0\x57\x98\x49\x61\xd0\xcc\x07\x24\x00\x2f\xe3\xa3\x62\x8c\xa7\x11\x3d\x97\xf0\xe2\x7d\x07\x62\x9c\x6b\xe6\xb5\xa1\x70\x47\xc4\x9e\x56\x25\xf4\x3e\x66\xf0\x0b\x39\x73\x0b\x71\x3e\x4b\x00\x1a\x61\xbb\x29\x74\xa0\x71\x6e\xcf\xe5\x3c\x75\x9e\x21\x03\xd4\x5b\xa7\x8e\xa5\xa2\x9d\x24\xa2\x60\x8c\x0a\x95\xdd\xab\xe3\x02\xf0\x0f\x6b\x6b\xdb\x03\xe4\xcd\x3a\x0e\x9f\xf4\x4a\x90\xb0\x54\x2b\x2c\x72\xa8\xe1\x2e\x50\x2c\x6f\xf1\x9a\x9f\x16\xe4\x77\x26\xc5\x41\x02\x26\x1a\xe8\xb3\x74\x10\xb6\xe2\x7d\x57\x55\x82\x7c\x08\xb7\x26\xdc\xf2\x2b\x18\x0e\x92\x41\xa1\x68\xf0\x9e\x2c\x6f\xbf\x0d\xf0\x44\x55\x44\x28\x27\x23\x54\x2c\x24\x22\x8d\xb9\x2e\x26\x72\x4a\xc3\x1f\x0a\x97\x34\x61\xb3\x0f\x60\x4a\x35\xf2\x53\x70\x8a\x6c\xce\x98\x66\x87\xd7\x56\x57\xb5\x8d\x2b\x8c\x0a\x58\xcc\x39\xdd\xfc\x7f\xdc\xe3\x7a\x48\x51\x8a\x94\x02\x44\x85\xbf\x2a\xa7\xa0\xc6\x86\xa0\xb7\x89\xf1\x36\xe7\xa7\x3a\xdc\xab\x8e\x8d\xe2\x43\x70\x7e\x80\x58\x8e\x6d\xcc\x0a\xc8\x03\x04\x33\x57\x91\xa9\xc3\xfc\x59\x16\x29\xe6\x64\x44\xef\x28\x6f\x21\xca\x1e\xb1\x52\xaa\xaf\x17\x9b\x17\xb0\xf5\x51\x42\xb5\xca\x9b\xb9\x3c\xb5\xd6\xb8\xc3\x4d\x4d\x96\x7a\x2d\x4b\x31\xfd\x74\x50\x24\xf1\xb9\x95\xb2\xd9\xa8\x4f\x0f\x9d\xdd\x19\x58\x23\x4f\x8a\xc6\x9e\xaf\xeb\x57\xbf\xfa\x79\x3b\xbd\xfe\xb5\x4f\xa0\x3c\xbd\x0f\x15\x9f\x43\xf0\xca\x12\x71\xf2\xc6\x22\x28\x89\x89\xdd\x60\x4e\x94\x2d\x85\x27\x11\x5d\x08\x64\x7a\x12\x41\x61\xe0\x9c\x33\x40\x2a\xf1\x8b\x82\x01\xca\x4f\xe9\x05\x1d\x0d\xfd\xcc\x1d\x29\x84\x83\xbb\xf2\x91\x2c\x6e\xbd\x1b\x89\x7f\xc5\x33\xf4\x3e\x37\xcb\xc7\x31\x21\x8c\xb0\x14\x9b\x16\x79\x6e\xca\x72\x55\xc7\x21\xc8\xce\xed\x43\x9d\x68\xad\xaa\xdb\x83\x14\xaf\x08\x03\x85\xe6\x4d\x80\x40\x8b\x4b\x80\x81\x2e\x0f\xc3\x9d\xd9\x6c\x7b\x2a\x9a\x5f\x95\xd5\x96\xed\x47\xe8\x03\xd5\x1b\x69\x9d\xa4\x1d\xdb\xb6\x3b\x67\x1c\x61\x9b\xaa\x38\xb9\xa7\x60\x8c\x8e\xe6\xe0\xd4\x7b\x80\x74\x5c\x6d\x54\x69\x51\xc2\x62\xa6\x89\xa9\x7e\xa0\x8c\x7f\x8f\x18\xc0\xf9\x5f\xbd\xb9\xc1\x49\x6f\xa9\xb3\xf1\x06\x25\x6a\x40\x70\x2e\x51\x27\xe4\x6b\x03\xec\xd1\xe4\x2a\xac\x06\xe2\xb6\x30\xdc\x04\x03\xb1\xeb\xc3\x15\xd5\x5c\x84\xf6\x82\x8e\xdc\x5c\x6b\x90\xe0\x61\x24\xaf\xb6\x3a\x57\xd7\x3e\x85\xf2\x5b\xa6\xfb\xec\xf3\x7e\x9b\x1c\x86\x4e\xa2\xdb\xc4\xc7\xb8\x36\x8a\xa1\xa7\x98\x2b\x0b\xe9\x53\x65\x6f\xa5\xda\x31\x92\x4e\x10\x16\xda\xac\x2e\x3b\x6b\x47\xee\x15\xd8\xc5\x0a\xde\x3a\xe4\x84\x57\x58\xe5\x08\x6c\xfb\xd6\xee\x0a\x6c\xfa\x8b\x67\xee\x42\xd7\xd5\x9b\x9b\x51\x7a\x67\x36\xcc\xe6\xbf\x59\x52\x19\x7d\x7e\x7c\x52\xec\xd9\xf0\x4f\x76\x26\xdd\xb3\x77\x45\x98\x94\x9a\xb5\xbd\x2d\x66\x43\x18\x46\xa3\x8e\xf6\x6e\xef\x66\x1d\xa0\x69\x57\x11\x91\x4e\xc4\x3e\x35\x79\xf1\xcc\x23\xb8\x47\xce\x4d\xa9\x9e\x2d\xdf\x16\xc2\xce\xe8\xb3\x53\xae\x25\x95\x3b\xf2\x8f\x0d\xed\x34\xd7\xbb\x3e\x17\x51\x26\x0c\x57\x78\x0f\x22\xbb\x04\x4c\x0e\xd2\x10\xf5\x5e\x41\x18\x3f\xd6\x32\x58\xec\xd3\xce\xdd\xa4\x51\x38\xd5\x96\x80\xd6\x78\x21\xa9\xaa\x02\x2e\x7a\xa1\x15\x3f\xc6\xf2\x81\x32\xa7\x74\x24\x1c\xba\x65\x72\x08\xbe\x13\x84\xd9\x0e\x8c\xf2\x7b\xe4\x61\x25\xf6\x3e\xf3\x84\x7c\x1d\xcd\xe7\x43\x8d\xa7\xa2\xef\x03\x47\x85\x0f\x47\x19\xb5\xdc\x51\x49\xb8\x83\x0f\xa6\x5c\xfc\x2d\x5e\x2b\xe1\xe4\x45\x40\x63\x25\x3a\x1a\x0f\x3a\xb6\x57\xc2\x47\x5a\xdc\xb2\x6e\x42\x5e\x3c\xc3\x4b\x16\xe5\x22\xad\xd9\x77\x5c\xc0\xe3\xe4\x8c\x70\x4b\xdf\xcf\xbf\x34\xf4\x1d\x7f\xfb\x47\x3f\xb5\x57\xe8\x2e\x6a\xed\x90\xbe\x60\x1a\x8d\xb1\xe3\x60\x86\x65\xab\xb2\x40\x83\x8e\xb6\x07\x9e\xd5\x87\x0d\xc4\xd4\x0b\x3f\x00\x37\x37\x78\xea\x90\xaf\x36\xab\x44\x14\x24\x43\x58\x8f\xe5\xc0\x20\x15\x61\x12\x0d\x48\xd2\xb0\x70\x74\xdf\x23\xa1\xee\xe2\x61\x6b\x74\x01\x8a\x7a\xf7\xdc\xe9\x29\x79\x85\x9a\x24\xa3\x8a\xb7\x3b\xb8\xfb\xc1\x31\xe2\x89\x17\x09\x35\xa7\x1a\xe3\x8a\x8c\xfc\xed\x3f\x36\x4c\xee\xac\x7f\xf0\x6f\x96\xb3\x1c\x1c\x88\x9b\xa1\x87\x5e\x81\x52\xae\x98\x0e\x57\xbf\x5c\x20\xec\x02\xef\xec\x38\xa7\x55\x0c\xd0\x69\x7e\x9f\xfb\xa7\x1f\x4f\x48\x7a\x65\x23\x6e\x1d\xe1\xaf\x1e\x67\xcb\xbf\x4d\xae\x4c\x94\x5d\x93\xab\x07\xee\xeb\xea\xb5\xf3\x38\xa2\xd5\xdb\xb0\x2f\xc0\x13\x0f\x5c\x04\x03\x7a\xa1\x7d\x8c\x0f\x3c\x7d\x4c\x73\x2f\x57\xa2\x62\x5a\xfd\x62\xfd\xc1\x4f\x63\xdf\x9b\x82\x10\xb8\xdd\x67\xff\x28\x33\x8e\x21\x82\x62\x36\xa8\x2a\xd9\x9d\x22\x67\x64\xf4\x49\x6d\x40\xaa\xc8\x27\xd7\x4c\xbf\x3c\x7e\x5a\xeb\x96\xd1\x4f\xe4\xc2\xd6\xa5\x4e\x93\xb8\xfa\xd5\xe0\x5d\x0d\x0b\x68\xbc\xe7\xce\x86\x6b\xa6\xd2\xcb\x1a\x24\x0f\x16\x28\xa6\x33\x19\x44\xca\x98\x81\x69\x94\x0b\x14\x52\xd8\x4c\xa6\x55\x66\x93\x91\xe1\x08\x82\xe9\x31\x2c\x43\xfe\xe5\xc5\x6b\xbe\xb6\x3f\x4b\xc2\x46\xc2\x27\x7a\x4b\x5e\x5e\x59\x0d\x3a\x90\xbf\xf7\x91\xb8\x69\x57\x0c\xef\x6b\xec\x91\x59\xfd\x60\x0f\xb5\x31\x0f\xb8\x1c\x6b\x9d\xe8\x21\x22\xc7\xd0\x06\x8d\x2e\x8d\x59\xf8\x75\xcb\xf0\x07\xbd\x64\x72\xcb\x15\x23\xb7\x9d\xd8\xba\xcb\x2c\x75\xc3\x24\x96\xaf\xf9\x63\xba\x21\x79\x55\x7b\x9d\x57\x79\x8e\x37\x14\xda\xeb\xe1\x77\x7f\xcb\x74\xdd\x73\xb3\x34\x1e\x08\xc0\x84\x3f\x73\xba\x8c\xdf\xea\xf8\xc7\xff\x7c\xb5\x6e\xc1\x9e\xc0\x34\x18\x90\x3f\x63\xb6\x51\x5a\xac\xc2\xd5\xd8\x3b\xce\xb6\xf8\x5a\xc0\x3e\xd9\x1f\x27\x80\xe0\xeb\xe4\x52\xd7\x3a\xbe\x59\xdb\x77\xa3\xd1\x0a\x45\xfb\xec\x31\x7a\xcc\x1d\x13\xac\xdb\x91\xf9\xa6\x6d\xaf\xa2\x23\xf1\x65\xd9\x82\x4b\xa5\x87\x9b\xb4\x74\x5f\x8b\x29\x97\x7a\xd9\x50\xbd\xaf\x09\x10\x64\x7f\x9b\xbf\x33\xa9\xd8\xce\xed\x7e\x5f\xab\x46\xd2\xb9\xbe\x61\x74\xb5\xa7\xc9\xff\x62\x74\x1f\x94\x6b\x66\x95\xd2\x3d\xed\xde\x8b\x4d\xd7\xf4\xb7\xd1\x8c\xae\xce\xed\x8e\x5c\x7d\x73\x6e\x08\xfa\x90\xa6\xfd\xad\xd6\x92\xaf\xa8\xdc\xbd\x33\xda\xfa\xe0\xec\x96\x8c\x2f\x96\x03\x80\xb6\x7b\xbe\x87\xb7\x3d\x06\x51\xea\xf5\x6f\x6b\x73\xda\x75\x43\xfb\xd3\x4d\xe9\x35\xa3\x6a\x10\x5d\x54\xb3\x1f\xe6\x7b\xd7\xd7\xd2\xdd\x2b\xaa\xd9\x42\xc8\xdd\x70\xab\x9b\xdd\x7a\x60\x42\x4b\xb1\x62\x86\x12\x86\xa9\x93\x6e\xe9\x6e\x7f\x2b\x07\xeb\x7a\x26\xe4\x01\xc0\xf6\x34\x43\xd5\x21\x15\x64\xb5\x56\x7b\x18\xab\x2a\x51\x6b\x78\x1a\x50\x89\xf7\x28\xcc\xde\xfb\x7f\xd9\xbd\x6e\x2c\xb9\xb9\xf9\xa6\xb2\x3b\x91\xa2\x85\x64\x49\x9d\x36\xa5\x58\x49\xbf\x2f\x64\x4a\xfa\x75\x29\x50\x2a\xdf\xa7\xd2\x24\x6d\x50\x15\x25\x69\x93\x52\x8e\x54\xbe\x4f\x84\x48\xe5\xfb\x52\x82\x54\x1a\xa5\xe2\x23\x6d\xd0\x2f\x3b\xfa\xdb\xf5\x34\xe9\x93\x1a\x69\xab\x4c\x64\xa4\x5f\x6e\x87\xbe\x1c\x14\x16\x69\xd3\x52\x52\x64\x68\xa9\x89\x89\x6c\x35\x35\x19\x51\x36\x49\x04\x44\xb6\xd2\x9a\x74\x48\x9b\x54\x45\x43\x1d\x4a\xca\xf0\x75\x30\x43\x6d\xaa\x12\x21\x6f\x32\xc4\x13\x35\x59\x50\xe2\x23\xd2\xa6\x72\xd8\x7d\x5f\x0d\x8a\x00\xd7\xa8\xaa\x85\x39\x21\x40\xce\xbc\x3c\xa8\x34\x72\xa2\xc0\xb4\x72\xbf\x57\x4c\x21\xea\x5b\xb9\x5f\xcb\x46\x5e\x2e\x90\xb3\x20\x23\x7a\x9a\xa1\xf6\x7b\x16\xc9\x8a\xb2\x61\x2c\x26\xc8\x59\x22\x35\xca\xc6\x5e\x60\x90\xb3\x20\x3c\x7a\x9a\x19\x36\x71\xcd\xcc\xef\x3d\xcd\xbc\xf8\x70\x6d\xfd\x07\x3d\x1d\x40\x94\xb8\xc6\xf0\x47\xd9\xb0\x10\x29\xe4\xac\x14\x33\xc3\xdd\xb2\x1e\x15\x05\x3b\x95\x35\x46\xd3\x4e\x3f\x29\xbb\xa0\xe0\x21\x67\x56\x02\x95\x0d\xb6\xae\xc1\xb6\xa7\x41\x4d\x00\x99\x99\x56\x3e\xae\x58\xd1\x4e\x24\x91\xb3\x20\x9e\x2a\x58\x8e\x24\xd3\x59\x22\xa7\xea\x56\x86\x13\x51\xd6\xd6\x70\x7f\xd6\x1b\xc3\xf3\xe5\x33\x2f\xb7\x2a\x38\x8a\x44\x96\xc1\x54\xf4\x67\xd9\x38\x16\x5e\xe4\x2c\x91\x65\xfd\x90\x41\x44\x45\xa0\xe1\xef\x7e\xd8\xae\x79\xf2\x77\x9f\xeb\x24\x31\xa7\xdc\x9f\x55\xdb\xed\xca\xfb\x63\xea\xb3\x3d\xc4\x3c\x23\xf7\x30\xf6\x86\x9d\x43\xa5\xfc\xc3\x70\x4e\xfe\x69\xdd\x7b\x60\x8d\xed\xf0\x62\x07\xdf\xa1\xac\x25\x53\x36\xea\x90\x26\x89\x24\xa9\x59\xe7\xfb\x5d\xbd\xb9\x29\x33\x65\x8d\x2f\xaf\xde\xdc\x9c\xa4\x49\xbb\xc6\xef\x99\x12\xed\x1d\x93\x99\x8b\xe2\x5b\x7c\xd3\x6f\x1f\xd6\xfa\xa7\xfd\x85\xca\x17\x92\xb0\xf8\xaf\x62\x30\xd6\xd9\xec\x63\x32\xe5\xd3\xcb\x48\xd9\xa7\x93\xc8\x65\x52\xd8\xfa\x95\x03\x6b\x38\x21\x4f\x7e\xca\x14\x91\x3b\x9b\xb7\xe0\xad\xcf\x5b\x90\x34\x77\x0e\xc3\x28\x65\x41\xe4\x46\x8c\x3f\x8d\x43\x18\x25\x45\xf0\xa6\xde\xad\x08\x2b\xa2\x1f\x28\x7a\x7b\x8c\x46\x7a\x55\xac\x50\x72\x16\xe1\x2a\xdc\x80\xa8\x5e\xca\x49\x71\x17\xff\x75\x5c\xb9\xd0\xd7\x93\x03\xc9\xae\xa5\x06\x3d\x7c\xdf\xa0\xa7\x53\xd7\x46\x0d\x5f\xc7\xe3\x07\x2e\x88\xc9\xc6\x3e\x1e\xaa\xe4\x04\x3a\xc1\x49\xd2\xce\x26\x05\xd2\xc2\xdf\x75\x4f\x2f\xb5\x0b\x22\x36\x5a\xf1\x86\x11\x71\x37\x55\x4c\xde\x31\xa9\xfc\x3d\x37\x1f\xaa\x4f\x73\x0d\x99\x1f\xfb\x49\x71\x71\x25\xc2\x4d\x9a\x82\xc8\x22\xa6\xba\x14\xe7\x82\xec\xe8\x8a\x8d\x8e\x9d\x2e\x56\x09\xe8\xe5\x16\x50\x44\x32\xd6\xd1\x6a\xb8\xd6\xec\xf5\x37\xbb\x37\x9c\xb5\x8d\x0f\xaf\x05\xc4\xba\x0d\x81\x07\x76\x13\x72\xf4\xc6\xc2\x3c\x3a\x26\x2f\x5f\x92\xa3\xa3\x62\xd0\x5c\xe5\x7d\x8c\x41\xdf\x59\x98\xd5\x41\xad\x43\xb5\xaa\xde\x99\x9f\xf1\x4c\x74\x33\xaa\x47\x47\xe4\xa8\x0c\x17\xba\x2f\xdd\xac\x07\x11\xde\x84\xa4\xc2\x83\x78\xcf\xb4\xe4\x14\x03\xd7\xf8\xe5\xa8\x4e\xe1\x7d\x58\x4d\xe9\xde\xc3\xad\x33\xc0\x58\x0b\x6c\x31\x3a\xae\x02\x0a\x4a\x7e\xcf\x04\xf1\x0d\x68\xdf\x14\x5f\x46\xf0\xfb\xf7\xe3\xe8\xdc\x65\xe7\x2b\xaf\xc7\x38\xac\xc7\x93\xe9\xdf\x9b\xc1\x8d\xb3\xb8\x1e\xea\xed\xd2\x6b\x70\xbd\x4c\xdd\xc3\xc3\x70\xf7\x08\x94\x28\x10\x00\x67\x1e\x84\x2c\x0c\x09\xf5\x04\x2c\x7e\x29\x86\x32\x8d\x5f\xa4\xe7\xe6\x05\x57\x86\x12\xbf\x1a\x55\xee\xa7\x40\xf3\x5e\xdf\xea\x57\xd9\x5e\xff\x3a\x34\x67\x89\xc7\xb3\xe9\x37\xfa\x3f\xe0\xe6\x9d\x00\xf8\xe3\x09\x39\xef\x76\x78\xbc\xbe\xcc\xcd\xa9\x2d\xd7\xb3\x25\xfa\x84\xcb\x90\xdd\x8c\xda\x6c\x2e\xbd\x0b\x9a\x14\x7d\x22\xe4\x54\x3b\x8d\xaa\x3d\x88\x7d\x52\x3d\x09\x71\xb3\x1a\xb6\xdc\x4f\x13\x27\x02\x47\x4a\x8e\xb9\xb8\xbf\xa3\x5e\x6e\x56\xd3\x8e\xf2\x76\x92\xcd\xee\xbb\x9b\x9b\x77\x6f\x78\xcb\x46\x1b\xd9\x4e\x8e\x96\x5a\xaf\xd5\xe4\xf4\x94\xaf\xe7\x6a\xdc\x40\x9a\xef\x96\x4e\xd5\x78\x26\x56\xf0\xd9\xe9\x7f\xac\xa6\xcd\xdf\x3f\xa7\x0b\x3d\xfd\x7d\xfd\xee\xe7\xff\xfd\x3f\x3e\xdf\xbe\xfa\x96\x5e\xf0\xb7\x7f\x7d\xff\x86\xbe\xbf\xfa\xe2\xe6\xc7\xe7\xb3\xf9\xef\xfa\xa7\x57\x9b\xe7\xdd\xf2\x4b\x51\xa1\x48\xf3\x53\x7e\x1a\x10\x3e\x44\x12\x83\x48\xef\xed\xd8\x8f\xf8\x70\xa2\x3c\xe2\x41\xd2\xbf\x07\x91\x8f\xee\xe1\xe3\x39\x58\x43\x03\x06\xa7\xdf\x83\xc7\xfb\x9e\xee\x1f\x2e\x72\x22\x3e\x78\xbc\x6f\x1c\xac\xbd\x03\x5a\xaf\xe4\xe3\x8c\x08\xc0\x86\x86\x4c\xfd\x9c\x0f\x1e\xf4\xdf\x23\x70\x43\xc3\x46\xbe\xd3\x07\x8f\x79\xe1\x60\xed\x1d\x10\x9d\xb1\x8f\x33\xa0\x81\xb5\x77\xc0\xc8\xbb\xfb\x38\xa3\x7a\x80\x7b\x87\xb6\x3e\xe3\xc7\x19\x16\x80\x0d\x0d\x59\xf1\x42\x3f\x78\xe4\x9b\x1c\xe6\xa1\x13\x78\xe4\xb1\x87\x86\x2d\x5c\xe6\x0f\x57\xa6\x53\x88\x43\x83\x3b\x4f\xfc\x83\xc7\xfc\x0e\x00\x0d\x0d\xb5\x7d\xac\xa1\x7e\xde\x3b\x54\x3d\x4a\xf0\xf0\x1d\xad\x80\x1d\x9a\x46\x14\x81\x78\xf0\xd8\x57\x0e\xd6\x20\xd7\x26\x21\x8d\x87\xf3\x6d\x04\x6e\x90\x82\x93\x30\xc9\xa3\xd8\x82\x0e\xdc\xbe\x61\xd1\x0e\x7d\x44\xf3\x73\x80\x55\x92\x50\xce\xc3\x19\x26\x02\x37\x34\x6c\x1a\x1e\x7a\xf0\xb0\xe7\x11\xb8\x43\x56\x6b\xc3\x49\x8f\xb6\x5c\x80\x77\xc8\x7a\x1f\x6b\xe0\xf3\x18\xde\xd0\xc0\xa9\xdd\x7c\x1f\x73\x79\x08\x66\xa9\x6c\xee\x71\x0f\x0c\x4f\x70\x9f\x67\x6c\x98\x5b\xaa\x98\x1a\x9a\x7c\xcd\x43\xd7\x2f\xee\x6a\x31\xbc\x68\xe1\x57\xe5\xf7\x3d\x48\x38\xe9\x9d\xed\x21\xc6\x53\xfd\x0a\x78\xc7\xc3\xb5\xd7\x3f\x9c\xbb\x39\x4a\xdd\x07\x09\x87\x30\xb3\xdd\x9a\xcd\x38\x6d\x09\xdd\xe8\xa5\x90\xfc\x77\x9a\xd4\x5f\x89\xca\x67\x9c\x9e\xe2\xd3\xa8\x38\x09\xa6\x16\x64\xcd\xe4\x5c\xc8\x55\x74\x23\x3a\xc9\x94\x65\x33\xca\x99\x2e\x0e\x8a\x4b\x65\x47\xcd\xd0\x3a\x7d\x79\x7c\x02\xc9\xce\xb0\xb0\x51\x9a\x6d\xaa\x74\xdf\xe3\x22\x52\x8f\x3c\x5e\xf1\xc7\x04\x02\x58\x05\xa7\x52\xcb\x21\xee\xe0\x33\x3c\x28\x9b\xe2\x21\x3c\x82\x8e\xd2\x4e\xf3\xb4\xd6\x44\x9a\x98\x3c\x02\x17\x43\x8e\xdf\x75\x84\xe4\x90\xe7\x31\x58\x9b\x1c\x33\x38\xb3\x35\xd7\x2d\x73\x2f\xb9\xb9\x24\x49\x10\xa0\xef\xdd\x35\x61\xbf\xd1\xd5\xba\x65\x13\xf2\x01\x44\x3b\x93\x90\x2e\xef\x68\x42\x8e\xfe\xca\xee\x78\x47\x2e\x36\x92\x76\xfa\xe8\xc4\xeb\x2d\x13\x72\xf4\xdf\xc9\x9c\x31\x7d\xf4\xc7\x7e\xe8\xee\x67\x34\xb5\x09\x98\xb7\xf0\x46\x0e\x6f\x29\xc6\x03\xb8\x9c\x9e\xcf\x3f\xfd\x9f\x91\xd9\xdf\xf3\x92\x24\x7d\xe1\xe2\x77\x28\xba\xfb\x4e\xea\xcf\x44\xc2\x0e\x0f\xa5\xdc\x74\xe1\x8d\x32\xba\x61\x93\x7e\xc4\xa3\x26\x4d\x30\x97\xf5\xd6\xde\xf9\xcd\xc6\x71\xbf\x95\x7e\xc8\x8e\x6d\x21\xe2\x65\xbb\x5a\x06\xde\xf3\x2a\xea\xf2\x22\x7e\x57\xce\xe1\x09\x1e\xe6\x8b\x5e\xb8\xb4\xc4\xee\xa7\x4c\xde\x59\xcd\xe8\xd9\xff\x12\xca\xbf\x57\x8e\x8b\x95\xa4\xb3\x8d\x8b\x96\x84\x95\x16\x11\x98\x28\x1f\x4a\x9a\x9d\x6e\x20\x27\xca\xda\x67\xd1\x00\x44\xfd\x1a\x30\x55\x17\x5f\xa6\x51\x4f\xd8\x03\x09\x00\x12\x1e\x25\x1c\x1e\x27\xa7\x4c\xd9\x3a\xee\xcd\x7d\x01\x2f\xe5\xd9\x8f\xd7\x2b\xc9\x1c\xc0\xd7\xe8\xb8\xbb\x31\xb4\xd4\x9b\xa0\xb2\x4a\xfe\xe9\x2d\x64\x97\x22\x3a\xcf\x72\x16\xe8\xfd\x9a\x65\xd9\x77\x22\x02\xdf\x43\xe1\xf1\x6c\x22\x02\x37\xe8\x0a\x6f\xa2\x02\x7c\x4c\x4c\x33\x4c\xb7\x18\xde\xfd\x18\xd2\xbd\xee\x4b\x10\xd4\x4f\xb8\x19\x77\x5d\x33\x8d\xc7\x66\x85\xbc\xcb\xd2\x33\x71\x87\x50\x80\xa6\x9a\x22\x72\x3f\xa5\x27\x44\x03\x1a\x57\x75\x9d\xf0\xea\xc2\x92\xf9\x8b\x67\x4f\xed\x1c\xee\x4d\xe7\xa1\x9a\x9d\x7b\x54\x18\x57\xb1\xcb\x0b\xd8\xb9\xa2\x8f\x31\xa3\x64\x69\x23\xa3\x54\x83\x3e\x4d\xa4\x4d\x11\x49\x44\x37\xf0\xd4\x3d\x22\x78\x8b\xd6\x9e\xbb\xf9\x3b\xb1\x71\x95\xfb\x62\x00\x79\x05\xbe\xe4\xdb\x2a\x7b\x9c\xa7\x2b\x75\x83\xf8\xe2\x91\x76\x60\x2c\x31\x92\x1f\xe7\x6e\x4d\xec\xb7\xb5\x50\x7b\xde\x1c\x3a\x1c\x67\xcf\x7a\x26\xf0\x56\xe6\xe1\x8f\x7b\xec\xf3\x68\x1c\x06\x13\x03\xb9\xec\x00\xc9\x93\xeb\xa1\x2c\xa9\x39\x55\x7e\x5b\x60\x33\x79\xc1\x6e\x29\x8b\xeb\xbc\x9f\x39\xba\xff\xf6\xc9\xdf\x92\x60\x30\x26\x7b\xc8\x20\xd9\x97\x9d\x50\xfa\x21\xbf\x33\x63\xa1\x1f\xfc\xc4\x28\x25\x69\xa5\xa9\xd4\xbe\x5e\x15\x61\x5d\x63\x6b\x90\x22\x1f\xba\x00\x1b\x3c\x92\xb3\xf2\x26\xcb\x1d\xee\x9e\x44\x30\x65\x63\x5e\x59\x86\xce\xec\x79\xb1\x4b\x99\xc4\x13\x22\x81\x84\x16\x50\x8f\xcf\x97\xbb\x88\x20\x1e\x22\xba\x0f\xea\xe4\x88\x2c\x5d\xf5\x68\x40\x37\x79\x8d\xd5\x36\x72\x7c\xe0\x61\x66\x54\x4e\x3c\xe9\x44\xc7\xf2\x9e\x19\xca\x52\x6d\xb5\x3a\xd1\x98\x76\x13\x39\xd8\x97\x42\x77\x8f\x6a\x71\x40\x19\xb2\x43\xc4\x6e\x1a\xcb\xe9\x4d\xe2\x5b\x2a\x04\x57\x6c\x9b\x94\x74\xb5\xb8\x3a\x4f\xf2\xe3\xee\x57\x2c\x1d\x18\xb3\x4d\x5f\x3b\x0b\xa3\x32\xc1\x17\xcf\xec\xc9\x69\x5b\x47\x73\x23\xd5\x27\x2c\xf0\x6a\xb4\xd3\x4c\xce\xa9\x33\xab\x36\x8a\x49\x65\x65\x31\xd6\x17\xe1\xd2\x5d\xe7\x88\x5e\x2e\xd3\x90\x70\x57\xa0\x09\x86\x95\x2e\xc0\x4e\xb0\x2f\x8c\x3d\xe1\x43\xe9\x29\x84\x14\xbd\x43\x26\x97\xb6\xd8\xa6\xb5\xe0\xe6\x42\x42\xc1\x01\xc7\x5d\x96\xb3\x6c\x1e\xa8\x00\x0b\x3e\x8d\xe0\x94\x46\x58\x58\x12\xf6\x0a\x8d\xdf\x61\xed\xda\x0f\x05\xa2\xb3\x47\xd1\x5f\x17\x37\xb0\xae\xde\xdc\x1c\x97\xa2\x9a\xea\xd9\xf2\x22\xee\xaa\x6a\x7d\xc3\xf8\x25\x88\x85\x11\x53\xe1\x2d\xde\xf3\x2f\x7f\xed\x39\x10\xae\xde\xdc\xc4\x85\xb3\x26\xe4\x93\xda\x1c\x7b\x3a\xdb\x97\xdd\x69\x7f\x47\xcf\x57\x6f\x6e\xf2\x40\x74\xb8\xc9\x23\x99\xda\xb4\x4e\x99\xea\x78\x8b\xd5\x5c\x79\x13\xa5\xe5\xc1\xc2\xaa\x5e\x64\xe7\x80\x6c\xca\x99\x29\x8a\x36\x65\x74\x52\x97\xec\xdd\x95\xfe\xb4\x42\xde\x19\xe9\xe9\x09\x27\x54\x7e\xe8\x99\x9f\x91\x9d\x18\xe6\x8b\x3b\x26\xff\xf9\x9f\xee\xa3\x97\x70\x71\xeb\x8c\xf0\xe6\x78\x42\xaa\xce\x8a\xec\x08\xcc\x5f\xd8\xe5\xaa\x44\xb9\x44\x5b\x79\x48\x48\xc9\x66\xbd\xe7\x64\xce\x74\x11\xf7\x64\xc9\xbd\x21\x97\x28\x54\x47\x32\xdc\x47\xb6\x4b\x41\xc4\xb6\x53\x58\x01\xc4\x75\x1f\xa8\x1f\x5b\xab\x1d\x7b\xdd\xeb\xa2\x08\xf3\x98\xf4\xf0\xc7\x49\x79\x01\xf1\x1d\x3e\x00\x96\x95\xaf\xde\xb3\x19\xe3\x77\xd5\xaf\x4a\xc0\xf5\x2b\x8c\x71\xca\x84\xc4\x13\x72\x91\x54\xd9\xf2\x4f\x2c\xa1\x42\x01\xe6\xe1\x36\x3c\x17\xf7\xb8\x7a\x73\x53\xcb\x9d\x6e\x8b\x95\xd8\x2c\x0a\x97\x17\x99\xaa\xec\x9e\x68\x8b\x6d\xc7\x1a\x83\x76\x57\xa9\xeb\xf9\x97\x95\xdb\x98\x57\x6f\x6e\xf2\x17\xd8\xd5\x8b\xf1\x1e\x9a\x31\x6a\x3e\xf4\x65\x33\x72\x15\x01\x6d\x3e\x66\x78\x58\xf8\x36\x49\x59\xc3\x12\xc9\x6b\xb4\x49\x68\xc7\x3d\xe3\x60\xf5\xd9\x03\x54\x65\x37\x56\xa9\x2f\x1b\xbc\xa5\x4a\x0d\x26\x7f\xc3\x4c\x1c\x59\xaa\x68\xb6\x3f\x83\x88\x74\xaa\x49\x55\x94\x02\x0c\xd8\xbc\x90\x97\xc8\x57\x46\x2c\x64\x98\xfb\x66\x14\x4f\x3f\x24\xdc\xa8\x0e\x50\x9a\xa0\xdf\x20\xb7\x77\x73\x5b\x46\x73\xc9\x66\xb7\x84\xcf\xf3\x24\x58\xc4\x99\x77\x73\xed\x2e\x7f\xa5\x02\x38\x4c\x22\xf5\xb8\xf0\x79\x56\x24\x77\xcc\x95\xcd\x73\xd5\xcd\xf5\x7b\x36\x9f\x18\x98\x39\xa1\xc0\x3a\x69\xc7\x67\x23\x27\x95\x1c\xfc\x49\x74\x8b\x12\xe7\x78\x34\xe8\x65\x05\x7d\xd0\x6c\x13\xaa\x90\xf3\x2a\xf9\x14\xcb\xc4\x4d\x78\xf1\x2c\xa3\xd8\x31\xee\xf8\xe8\x96\xed\x92\x15\x97\x02\xf5\xe5\xcb\x7d\xf3\x4f\x13\x06\x04\x17\x4d\xeb\xa3\xe0\x15\xd5\x2d\xa9\x7e\x09\x93\x84\x3b\xac\x58\xff\xd2\xcf\x55\xbe\x1c\x53\xac\x4f\x79\x3c\x68\x9f\xa0\xa2\x0c\xe3\x86\x02\x9c\x00\xb5\xae\x47\xa5\x5f\x55\xb2\xf2\xb8\xe9\x79\x70\x51\xe6\x4b\x14\x4a\x8f\x91\x7a\x87\x37\xc6\xee\xec\x42\xb2\x52\x48\x13\x2d\xfc\xa0\xfb\xcc\x82\x21\x55\xc4\x18\xb4\x61\x0f\xd2\xac\x22\x87\x3b\x60\xfd\x4f\x8a\xda\xd5\xfe\x2c\x7c\x09\x1a\x47\xb0\x52\xa7\x01\x55\x99\xba\x37\xad\x4e\x9e\x34\x19\x4a\x7c\xf4\x91\xbc\x11\xf2\x30\xf2\xfe\x2c\x3c\x43\xf4\x74\xa9\x99\x44\x5b\xd5\xd6\x48\x01\x9d\x08\xf7\xdc\xcb\x73\xd8\xf4\x7d\x3c\x68\xb4\x5e\x0e\xb9\xb5\x4d\xff\x52\x36\x64\x93\xed\xc9\xde\x53\x95\x90\xbc\x39\xee\xcb\xa7\x57\x5b\x53\x3f\x8f\xa8\x3a\x93\x64\x53\xeb\x61\x17\x67\x0c\x68\x7a\x0b\x06\x50\x94\xa5\x0f\x12\xc6\x86\x53\x2c\x80\x8a\xe3\x1c\x43\x6c\x82\x5c\x62\x51\xe1\x4e\x31\x3c\xb1\xe2\xc2\xb7\x99\xbc\x19\xa2\xca\x83\xec\x80\x6c\x9b\x0a\x6a\xb4\x86\x53\x34\x07\x94\xb2\x20\x00\x9c\x05\x6c\xa7\x0a\x35\xa6\xd4\x46\x16\x6a\x33\x66\xb9\xc7\x99\x83\x9e\x59\x3a\x3e\x12\xf9\xed\x86\x78\x4a\xbe\x8e\x14\xfb\x5a\xea\xba\x70\xf8\x42\x3d\xcd\x02\x24\xbc\x7b\x70\x22\xb7\x37\x99\xb2\x61\x35\x7b\x82\xe3\xf6\x55\xb6\xcc\x41\x14\x6d\x73\x53\x3f\x67\x7e\xe1\xcd\xaf\x7e\xf6\x65\x7e\xe5\xae\xdd\xd9\x67\x03\x9e\x8e\xf0\xf5\x80\x2d\x93\x10\x71\x71\x81\x3f\xb0\x15\x69\xe7\x94\xe4\x4f\x55\x35\x18\xc0\xe7\xb5\xd3\xc4\x7a\xcb\x2a\xfc\x08\xb3\x89\x6b\x25\x9b\x53\x49\x8b\x03\xce\xa4\xf2\xb8\xb6\xcf\x11\x30\x31\x07\x48\x2d\xd1\x36\xb9\x5a\x74\x64\x75\xaf\xd4\xcc\xb0\x8f\x1d\x3c\x66\x87\xce\xaa\x8b\x8c\x03\xcb\x84\x69\x2e\x4b\x32\x9a\x63\xb9\xef\xd2\x62\x5e\x11\x46\x67\x4b\x77\x46\xb0\x06\x55\x6d\x34\xed\xb9\xaa\xc9\xb7\x8f\x37\x93\x2b\xea\x1b\xb8\x18\xa3\xa3\xd0\xf9\x06\x32\x76\x2f\x68\xef\x96\x41\x96\x1e\x1c\x76\xec\xcc\xed\x32\x98\x50\x91\xe8\xd0\xb5\x10\x1f\x31\x4e\x10\x25\xb9\xef\xcb\xc8\xf4\x5b\x06\x11\x5a\x00\xd1\x93\x1b\xb3\x10\xe5\x76\x8e\x55\x61\x7e\xcb\x76\x85\x34\xdf\x4f\x4f\x3d\x87\x8e\xa3\x9e\x4c\xba\x97\x19\x6a\x3d\xcd\x20\x51\x72\xac\x30\x45\x49\xb3\x91\x18\x93\x87\x44\xb9\x33\xd1\xd9\xb3\x0f\xd2\xd9\xe6\xbe\x51\x97\x7f\x53\x60\x8d\x5a\xdf\xb9\xa0\x13\xc8\x3b\x1b\xd7\x1f\x77\x2d\x27\xe4\xc7\x37\xfc\xb7\xe7\x5f\x56\x1e\x86\xfd\x49\x2a\x2f\x6f\x0e\x51\x75\xcd\x84\x3f\x5a\xcd\x3d\x3d\x25\x6b\xaa\x54\x6c\x0a\xa1\x20\x6d\xd1\x7c\x28\x63\x7e\xc4\x79\xac\x6d\x08\x08\xc2\x5a\xd6\x9f\xcc\x5d\xea\xa1\x29\x9d\xdd\x7e\x84\x00\xce\x4c\x17\x33\x07\x63\xf0\x74\x73\x3d\xf1\xf2\x39\xde\x10\xf7\x5b\xb6\xa8\xfb\xc8\xa5\xef\x23\x02\x8b\x19\xdb\x92\x9a\xea\xa7\xb5\x18\x94\x39\x27\x91\x77\x55\x55\x1d\xc3\x0c\xcb\xc0\xa7\xbe\x70\x13\x56\x47\x61\x4d\x3f\x29\xfa\x09\xa6\x9a\xe9\x41\x24\x39\xa4\x1c\x22\x53\x2d\xd9\xea\x5e\x4a\xa0\xcf\x12\xe6\x4f\x9c\xda\x46\xc4\x3d\xfa\x9c\x0d\x58\x6b\xa7\x87\xad\xb5\x36\x52\x43\x85\x9a\x3c\x59\x9c\x3a\xa3\x11\x6c\x63\x4e\x01\x9f\xbf\x68\xba\x51\xbc\x33\xe7\x67\x2b\x16\x7c\x46\xa8\x84\x87\xea\x16\x18\x6b\xf9\x82\x63\x7d\xc7\x02\xdf\xd8\x24\x76\x50\xfe\x7f\xc6\xea\xef\xaa\xac\x9e\x62\x34\x2e\xc3\xcc\xc0\x35\x6c\xa8\xbb\x60\xe8\x38\x0a\x6c\xbe\xf4\x31\x32\xef\x6e\x7a\x90\x2a\xd6\xb7\xcb\xa9\x2c\x78\x00\xdf\xff\x98\xd0\x60\x8d\xf3\xef\xc3\xdf\x38\x3f\xcb\xe1\xa8\x16\xee\x20\x0f\x2d\x92\x5b\xcb\xea\xbc\xfd\xa3\x23\xb8\xd8\xee\xbc\x1f\x2f\xbb\x91\x3f\x8e\x9d\x23\x8a\x8f\xdf\xa0\x92\x01\xe6\x45\xe5\x25\x84\xde\x6b\xda\x90\x2b\x92\x51\xc4\x49\x0a\x34\x94\x91\x87\x81\x2c\x7a\x81\x75\x8c\x46\xd3\xb7\xbb\xce\x4f\xe6\x3c\x10\x84\xda\xcf\x12\xe7\x39\x5c\x13\x70\xbe\xad\xde\x69\x9a\x83\x2e\xba\x23\x80\x2e\x4e\x08\x4c\x41\x55\x6a\x2c\x7b\x77\x90\x0f\xa5\xe6\xea\xd4\x02\xd8\x2b\x8d\x35\xa7\x29\x8b\xab\x1e\x95\xca\x25\x80\x38\xea\x92\xf6\xba\x12\xf0\xea\xc8\x68\xc7\x50\x10\x35\xba\xaa\x68\x97\xa3\x45\xa8\xb1\x9d\x4c\x30\xa9\x85\x06\x05\x78\x3a\xa3\xae\xad\x15\x04\x4f\x5d\x75\x2f\xac\xee\xfd\xae\x65\x54\x31\x08\x1e\xc7\xd1\x1e\x03\x3c\xf5\xc8\xd2\xc6\x0b\xb0\xa1\x12\xd3\xf7\x8d\x39\xd5\xc9\x66\xf4\x49\x45\xbc\x50\x55\x07\xd1\x1f\x9e\x4f\x56\x24\x0f\x24\xab\x43\x89\x08\xf3\xe4\x42\x4d\xbf\xe8\xde\x49\x52\x17\x93\xb8\x88\x29\xdb\xb9\xe2\xfd\x68\xef\xb8\xad\x33\x84\x98\x5c\x99\x4d\x1f\xd0\x27\x1b\x29\x24\xec\xa3\xdd\x66\x97\xe2\x54\x48\x5b\x4d\xa4\x56\x60\xdd\xc8\xf8\x5d\x26\x04\x7c\x34\x1d\xef\x3c\xd9\xa2\x15\x97\x17\xd6\xe5\x08\x21\x54\xa2\x97\x42\xb9\xdb\x28\x69\x3e\x4a\x77\x65\x21\xb9\x30\x5a\xa5\x86\xff\x4a\x56\x7a\x58\x00\x33\x36\xeb\x03\xf9\xf5\x5a\xf5\x2d\xdc\x68\x9a\x43\xa2\xda\x3a\xd9\xd2\x8d\x5e\xee\xa7\xdd\x8c\x07\x0c\x48\xaa\x9e\x26\x33\x4d\x25\x3d\x61\xad\xaa\xdd\xe0\xa9\x5c\x99\x26\x7d\x27\x43\x8a\xa9\x9f\x38\xdb\xba\xb8\x5a\x86\xaf\xf3\x6e\xf7\xde\x46\xc5\x3e\xd4\x03\x71\x79\x22\xd5\x10\x08\xf9\x28\xbc\x90\x8a\x42\x06\x88\x30\x74\x73\x86\xa1\x98\x21\xf4\x58\x2c\x44\x9d\x8c\x00\x39\x60\x19\x3d\xc2\x04\x2a\x44\x6a\x49\x3b\x45\xd1\x94\xb7\x6a\x8b\xca\x9d\x49\xe8\x17\x49\x78\xf7\xdc\xa6\x91\x07\x05\x2b\x38\x41\x0c\x93\x1a\x23\x0c\xea\x69\x2a\x11\xf2\x52\x3c\x8d\x3b\xbf\xdd\xcc\x96\x58\x25\x1e\x8a\xab\x5e\xd0\x15\xa7\x1d\xf9\x9e\xb7\x2d\x95\x4d\x3a\x8b\xa5\x58\xe3\xf5\x9a\xc4\x89\x2a\x19\x5d\xf9\x5b\xe9\xac\x83\x62\x44\x33\x9b\x34\xff\x3b\xb1\x51\xda\x5d\x84\x20\x29\xc3\xf5\x25\xc5\x70\xfa\x5a\xba\xa9\x4f\x52\x3a\x0b\xb1\xeb\x67\x8f\xf3\xe3\xc0\xe5\xb7\x5a\x9f\xb5\xec\x8e\xb5\x3e\xfe\x4f\x1a\x36\xe7\x1d\x16\x4b\x79\xec\x19\x38\x78\xe8\xf1\x7f\xbd\x5a\xeb\x5d\xb4\xef\xc9\x3d\x9d\x93\xc2\x89\xe2\xfc\x65\x59\xcd\x6b\x8a\x71\x7b\xac\x1e\x9a\x5c\xcf\x8c\x62\xf4\xd6\xf9\xe8\xb3\xbf\xfe\x80\xe5\xa9\xd9\xce\xd6\x13\x4c\xee\x07\xb8\xce\xb6\xd3\x49\xd0\x6a\x5d\xc1\x23\x89\x51\x77\x07\x2d\xbe\x1e\x13\xe8\x5b\x15\xe9\x63\xc3\xa5\xa2\x6c\xe9\xa3\xc3\x83\x2e\xf9\x6d\x23\xc7\xbd\x45\xf4\x24\xd0\xcf\x82\xe9\xf3\xb6\xc5\x27\x0c\xfe\x10\x2f\x8a\x41\xa1\x7a\x13\x4f\x39\x39\x2f\x22\x75\x37\xed\x9b\xd5\x5c\xb1\x37\x97\x93\x35\x47\x13\xc0\x24\x12\x76\xce\xe6\x93\x5f\xcb\xb5\x15\x57\xc4\xc7\x50\x0c\x55\x95\xcb\x8a\x9f\x44\x15\x4b\xf3\x6f\x28\xf2\x53\x9d\xa6\x15\x5a\x1d\x3c\xf7\x7f\x5f\x1d\xa2\x70\xed\xa6\x52\xa0\x4d\x31\x2a\x67\x4b\x5f\x05\xbc\xc0\xdf\x4d\x3a\x21\x42\x5d\x66\x12\x2d\xdc\x6f\xee\x1e\xb1\x80\xcc\x0d\xb4\xcd\x51\x18\x2f\xb6\xac\x0c\x94\x3f\x78\x78\x59\xe2\xd5\x67\xea\x4a\xaa\x57\xbe\x1c\x27\xc9\xa5\x7a\xf1\x6b\x9f\x9c\x25\xd5\x9d\x06\x50\xec\xa0\xf4\xfc\xf8\x1d\xc0\xba\xf6\x16\xb1\xc9\x4c\xfa\x3b\xbf\xfe\x6d\x92\x3c\x33\x3e\xc2\xfb\x39\x6e\x99\xc2\xe8\x92\xd1\x45\xb6\x9e\x1f\x38\x11\x8e\xde\xb2\xd5\xda\x68\x94\xdf\x4a\xfe\xfb\xef\x2d\x67\xea\xe8\xcf\xa0\x87\x64\x60\x3b\xf5\x1b\x77\x5f\xd9\xd0\x00\xb6\xf7\x9a\xdb\x3e\x0a\xc2\x7e\x31\x1d\xfd\x70\x00\xd5\xe4\xaf\x06\x5d\xfe\x2f\x3b\x21\xff\x90\xc0\xe6\xbe\x8c\x28\xe8\xf4\x94\x5c\x88\xee\x53\xf0\x23\xcf\x18\x5c\xf0\xb9\x63\xd2\x47\x82\xac\x06\x2c\xa4\x9d\x18\x84\x7f\xee\x68\xcb\xc3\x39\xca\xe7\x3e\x79\x52\x74\x9f\xb4\xa0\xc6\xba\x39\x63\xbe\xf4\x64\xfa\x0b\x8c\x11\xa5\x7f\xa9\xa9\x71\xb5\x57\x6f\x25\x7d\xbb\x12\x17\x31\x4d\xe3\xb3\x2b\x67\xb4\x04\x6f\xe5\x75\xa8\xe4\x11\xfd\x70\x95\xd3\xfe\x78\x88\x7e\xa2\xdb\xf2\x81\x7c\xfc\x6d\xf9\x7b\x49\x93\xa4\x46\x87\x8a\xaa\x93\x60\xc9\x56\x94\x81\xe1\x0d\x1e\x87\x6b\x5b\xe8\xcb\xc5\xe2\x24\x3a\xaa\x1e\x1c\x11\x4c\x56\x24\xc4\x0b\x98\x78\xbc\x98\x34\xc2\xcd\x9b\xe4\xea\xf7\x59\x4d\xdb\xaf\xbe\x45\xec\xdf\xbd\x5a\xd1\x92\xac\x52\x5d\x7d\x53\x21\xb7\x61\x52\x86\xce\x7c\xf0\x2f\xb0\xa9\xb5\x47\x43\xe9\xde\xc4\x6f\x67\xfd\xde\xdc\x9b\x61\xd1\x76\xad\xb0\x69\x76\x04\x67\x65\x3f\x5e\x86\xb2\x1d\x39\xca\xed\x95\xf0\x18\xe9\xf6\x9a\xf9\xc1\x68\xff\xaf\x44\x7c\x3e\x57\x03\x65\xca\x5a\xd1\x2d\x94\x7b\x9d\x92\xee\x43\xfa\x24\xda\xef\x84\xcd\xd9\xfb\x4f\xd8\x89\xa8\x32\x4a\xbe\x17\x97\x17\xea\x9b\x5d\xc1\x03\xde\x43\x59\xec\x05\xf1\xbb\x5a\x39\x2d\xef\xbf\x27\x57\x7d\x6f\xe0\xee\xb9\x2f\xe7\x15\x17\x6b\x04\x8c\xcf\x8d\xaa\x0f\x41\x00\x75\x62\xce\x1e\x23\x6f\xf8\xdc\xbd\xa3\xa9\xec\x99\xc7\xcb\x28\x4b\x60\x17\x15\x63\x89\xb7\xee\x8e\x4a\xdc\x9f\xa8\x12\x11\x16\xa8\x4f\xec\xda\xcc\x4b\xed\x64\xaf\xdb\x31\x7c\xad\xe1\xcf\x77\x2f\x8f\x3c\x0c\xf3\xa1\x73\x47\xf1\x72\xc7\xad\xf6\x5b\xf3\xb1\xd8\x24\xae\x69\x55\x9d\x8a\x43\x23\xdc\x28\x87\x06\x5c\x91\xb9\xd8\x74\xcd\x89\xb7\xf1\x01\xbb\x45\x37\x5c\xbb\xab\xc3\x1d\x4a\xf2\x1c\x5c\x2b\x34\x1d\x14\x99\x20\x1e\x37\x3e\x08\xf6\xf3\xc9\x95\x9d\x7b\x45\xb5\xb0\x33\x6d\x59\xb7\xd0\x4b\x83\x90\xcf\x1e\x76\xf2\x20\xbc\xa1\x53\x06\xac\x99\xcb\x2e\x7e\x8d\x07\xe1\x63\xae\xb4\x2b\x6c\x5e\x8d\x09\x44\xa2\xef\x4f\x14\x69\x31\xeb\xb8\xa9\xd4\x34\x43\x5c\x41\x21\xc5\x6a\xcc\xf0\x78\x72\x2c\xc8\xb0\x50\xde\x28\xe0\x96\x2b\x9b\x1c\xc1\xd6\x35\x4a\xfc\xce\xa2\x65\xd4\x5e\xcf\x71\x4f\xd6\x94\x99\x01\x35\x38\x3a\xc5\x57\xfe\x62\x35\x15\xbd\xaa\xff\x48\x24\x45\x75\x3a\x7b\xfb\xc6\x56\xe6\x39\x36\x0b\x70\x75\x48\x7b\x61\x5c\xce\xa3\x2e\x51\x8f\x13\x23\x8f\x94\x46\x53\x64\x05\x21\xd9\xb0\xe9\x27\xbd\xe0\xa6\x9b\xf0\x58\x67\x46\x3b\xd2\x09\x62\xce\x1d\x26\x43\x15\xc6\xd4\x2b\xfe\xa8\xa4\x93\x4c\xe5\xd1\xcc\xdd\x6f\xec\x4e\xd9\x4d\x82\x37\xd5\xd6\x7d\x56\xa0\x0d\x44\xb7\x48\xe5\x75\x4e\x04\xc3\x45\x8b\x8e\x71\xc0\x97\xf1\xc5\x25\x6b\x6f\x28\xa6\x6d\xde\x5f\xb0\x7e\x4b\xfd\xd6\x26\x25\x2d\xaf\x3c\x5d\x33\xe6\xe6\xec\x0a\xa8\xbb\x09\x87\x62\xb6\xf9\x53\x6a\x74\x65\x47\x75\xc7\x20\xd6\x13\x17\xe9\x72\x86\x4e\xe5\xfa\xb8\x17\xc5\x0e\x82\xd2\x54\x6f\xaa\xf7\x3f\x8b\xfa\x5d\x4e\x96\xe5\x50\x2f\x03\x19\x6c\xe9\x1e\x09\x4c\x0e\xb3\x9b\xb8\xf2\x35\xa4\x0f\xe7\xcd\x1a\xb5\xf9\xab\xf5\x63\x33\x4d\xae\x3f\x75\x7f\x9f\x54\xbd\x07\x2e\x39\x43\x85\x4b\xa2\xea\xdc\x55\x3e\xcb\x59\x0c\x99\x34\x63\xaf\x77\xd6\x9d\x85\xd5\xf7\xdc\xad\x8a\x7f\x86\x02\xda\xcf\x2d\xa0\xe7\x38\xb4\xd4\x19\xa5\x28\xe8\x5d\xf0\x44\x44\x0e\x8f\x2e\xc1\xa3\xf7\x1b\xc9\xf1\x58\x49\x76\x13\x2b\x1b\x7b\x4b\x37\xef\xf1\xdd\xc4\xfb\x46\xc9\x8c\x49\xb3\x57\x4e\xb6\x8c\x33\x3c\xff\xbf\x2a\x24\x6f\xe0\x42\x8a\x0e\xd9\x7a\xf3\x32\xc2\xf1\xc0\x3d\xa5\xad\x01\x01\x7e\xe5\xf9\x11\x3f\x90\x72\xa8\x57\x92\x96\x16\xcc\x83\x45\xe9\x7b\x17\x65\xef\xb2\x7a\xad\x85\xec\xa4\x2b\x70\xd7\x27\xa2\xb3\x5a\x85\xb0\x2e\x46\x2d\x85\x21\x94\x61\x45\x2f\xc8\x46\x95\xc9\xc6\x07\x88\xc6\xc7\x8a\x93\x90\x34\x52\x03\xe1\x18\xda\xba\x54\x4c\xc9\x4b\xcd\x47\x1f\x15\xfe\x2b\x9e\xd5\x41\xc6\x0f\x3b\x8b\x28\xc3\x4b\x96\x6f\x01\x08\x23\x7f\x3b\xfe\x59\xfa\xb5\x77\xf9\x91\xb3\xf8\x59\x9e\xab\x12\x31\xf0\x55\xfe\x92\x0f\xd3\x23\xc7\xe9\x6f\x3e\x2f\xbf\x73\xf9\x45\xb2\xaf\xd2\xf2\x04\x9f\x25\x56\xcb\xbb\x8d\x7b\x57\x9f\x46\x85\xf2\x1b\xec\x58\xa5\x03\x23\x4c\x63\x45\xef\xd8\x8b\xa8\xfc\xf4\x57\xa3\xfa\xcb\x16\xbc\xaf\x7e\x6a\x61\x9d\xe6\x6f\x40\x8f\x93\x99\xf8\xa7\x35\x6b\x7c\x3a\x3d\xa3\x6b\x8a\x77\xf8\xbc\x25\x59\xb9\xbc\x93\xcc\xab\xe5\xdd\xed\x8b\x4f\x3e\xd4\xdf\x9a\xfe\xf1\xd5\xe8\x14\x41\x17\x13\x39\x21\x9a\xca\x05\xd3\x07\xcf\xf5\x9d\x75\x29\x02\xa3\xca\x03\xf1\x05\x6f\xe5\x63\x54\xd9\xc7\xf3\x19\x96\x2c\x23\xc0\x97\xd1\xa8\xf0\x1c\xe0\x95\xa5\xc5\x40\x9e\x8d\x8f\x80\xfd\xf1\xe4\xff\x06\x00\x00\xff\xff\xb1\x42\x95\x4b\x2e\xb7\x00\x00" +var _topshotCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xbd\x7d\x73\x1b\xb9\x91\x30\xfe\xbf\x3f\x05\xac\xfb\xd5\x2e\x95\xa3\x49\x6f\x36\xb7\xbf\x7a\x58\x56\x1c\xd9\xb2\x36\xba\xd8\xb2\xcf\x52\xb2\x75\xe5\x72\x3d\x01\x39\x20\x89\x78\x38\x60\x06\xa0\x68\xae\xcf\xdf\xfd\x29\x74\xe3\x1d\x98\x21\x65\xc9\x9b\xcb\x56\x54\xa9\xac\x49\x02\x0d\xa0\xd1\x68\xf4\x1b\xba\xc7\xbf\x79\x40\x08\x21\x67\x4c\xce\x5a\xbe\x56\x5c\x34\x13\xf2\x9c\x35\xaa\xa5\x35\xb9\x5a\xd1\x56\x91\xe7\x42\x7f\x9a\x29\x32\x17\x2d\xb9\x7c\x76\x4a\xae\xc5\xfa\x6a\x29\xd4\x03\xe8\x78\xbd\xe4\x92\x48\x68\x38\xb3\x0d\xf5\x3f\x28\x6f\x24\x51\x4b\x46\x66\xa2\x65\x64\xbe\x69\x66\x1a\x36\xad\xb9\xda\x01\x20\xe8\x6c\xa0\x11\x0d\x6e\x48\x66\x2d\xa3\x8a\x55\x64\xba\x23\x67\x74\xbd\x66\x2d\x79\x49\xa7\xd2\x0e\xc3\x3c\xfc\x15\x6d\xe8\x82\x21\xf8\x8a\x2a\x4a\xa8\x94\x62\xc6\xa1\xf3\x96\xab\x25\xa1\x75\x0d\x3f\xae\x6b\xba\x93\x84\x36\x15\x91\x4c\x49\x00\xa4\x96\x54\x11\xda\x32\xb2\x91\xac\x22\x54\x12\xc5\x56\xeb\x9a\x2a\x26\x61\x5a\xba\xd7\x2b\xb1\x62\x8d\x22\x97\xe7\xd7\x66\xf0\x9f\x96\xac\x21\x94\x34\x6c\x4b\xde\xd4\x74\x47\xb6\xb4\x51\x92\x28\x41\xa6\x8c\xd0\xaa\x62\x95\xfe\xb7\xee\xd9\xb2\x99\x68\x2b\x39\x24\xb4\x21\xa7\xd5\x8a\x37\x66\x4d\x38\x74\x00\x41\xaa\x76\x33\x53\x38\x19\x8d\x3f\x25\x5a\x56\x11\xde\x00\x94\x18\x9b\x23\x87\x80\x26\x00\x4b\x2d\x68\x80\x79\xc5\x94\x1c\xc1\xff\xeb\x6e\x92\x4b\x45\xc4\x9c\x50\xb2\xde\x4c\x6b\x3e\x8b\x46\x03\x60\x6e\x83\x4c\x03\xde\xcc\x45\xbb\xa2\x7a\x87\x08\x9d\x8a\x8d\x22\x54\x63\x6c\x08\xa8\xa3\x64\xdd\xf2\x1b\x3d\x54\xcb\xa4\xd8\xb4\x33\xc4\x1d\x62\x53\x90\x15\x6f\x14\x4c\x62\x05\x68\x93\x64\x4a\x35\x66\xc5\x7c\xae\xe7\x80\x3b\x00\x23\x2f\xe9\x0d\x23\x53\xc6\x1a\x52\xf3\xe6\x83\x47\xda\x15\x0b\xd6\x48\x28\xac\xcf\x8d\xb4\xa4\xb8\xcd\x6b\xb1\x65\xad\xee\x51\x09\xd8\x5d\x31\x87\xaf\xf9\x6a\x2d\x5a\x45\x1b\x45\x28\xd0\x17\x22\xba\x8c\x47\xb3\x8d\x1a\xbe\x84\x2d\xd4\xe0\x66\x1a\x98\xa5\x4e\xa9\x7b\xe2\xca\x0d\xad\xb0\x1d\xb6\x50\x4b\xc6\x5b\x32\x15\x6d\x2b\xb6\x57\x4c\xb9\x1e\x1a\xc4\x82\x69\x74\xb5\x6c\xce\x5a\xd6\xcc\x18\xb1\x88\x01\x40\x76\x2e\x7e\x16\x7a\x23\x87\x16\x74\x93\x4e\x40\x98\xa9\x33\x45\x36\x92\x37\x0b\x44\x9d\x03\x6e\x10\x75\xa1\x5b\x71\xbd\x8a\xdd\xb0\xb0\x54\xd8\x36\xae\x24\xa9\xd8\x9c\x37\xac\x72\xe8\xd4\x0b\x54\x0c\x9a\x00\x1c\x38\x2c\x0b\x4d\x47\x44\x31\xba\xda\x8a\xf6\xc3\x90\xfc\x6d\x23\x15\xa9\xf9\x07\x06\x90\x2f\x9a\x8a\xd3\x86\x92\x37\x74\xc6\x5a\x89\xa3\x2d\x90\xa8\x15\x9c\x5f\xdd\x11\x80\x69\x8a\xd3\xa8\xe2\x2b\x36\x82\x2f\xfc\xd9\xb1\xa4\xa1\xcf\x9d\xa6\x17\x56\x19\x0c\xe8\x2f\x78\xc3\x15\xa7\x35\xff\xd9\x9d\x5e\x73\x02\xcf\xf4\xd1\x36\xb4\x4b\x1b\x24\x38\xdd\xa1\x65\x6a\xd3\x36\xc8\x28\xf4\x74\x00\x62\x3b\x2a\x30\x0a\x5a\x4b\x61\x90\x20\x09\x25\xcf\x45\x5d\x33\xdc\x37\x8b\x91\x11\x32\x30\xae\xb9\x04\x11\xd3\xbf\xb1\xe8\x9c\xb0\x1b\xd6\xee\x2c\xbf\xd3\x0c\x81\x88\x6d\xc3\x5a\xb2\xe5\x75\x8d\x87\xd6\xec\x2f\x6f\x09\x9d\xcd\xc4\xa6\x51\xee\x58\x00\x8f\x32\xbf\xe9\x9e\x33\x37\x78\x30\xd3\x15\xe5\x8d\xe3\x80\x16\x04\x82\x87\xb9\xc3\x99\xd1\x3b\x29\xb6\x8d\xe5\x4b\x1e\x90\xa1\x76\x05\x84\xb4\x91\x4c\x8f\xbb\x14\x75\xe5\x7a\x58\xbc\xfb\xf3\xd7\x08\x45\x76\x4c\xe1\x39\x94\x0c\x0f\x01\xd5\x9d\x2d\x02\x2f\x85\x62\x13\x72\x0a\x0b\xd4\x87\x7e\xb6\xa4\xcd\x42\x53\xa2\x27\x52\x98\xdf\x9a\x36\x9a\x73\xcc\x35\xe2\x78\x73\x43\x6b\x5e\x11\xda\x2e\x36\x30\x47\x8e\x53\x5b\xb7\xe2\x86\x6b\xfe\x28\x5a\x22\x1a\xa6\x49\x44\x4f\x6d\xdd\xb2\x47\x33\xd1\x54\xdc\xd0\x7c\x4b\xd6\x42\x02\xf9\xda\xaf\x68\xcb\x9a\x6f\x15\x59\x69\xd6\xa0\x01\x9d\xbb\xb1\x61\x29\x95\x80\x5f\x45\xc5\xe7\x3b\x33\x4d\xdc\x12\xbe\x5a\xd7\x3b\x43\x20\xe4\xb1\x86\xdc\xf0\x1a\xf7\x52\x9f\x09\xb5\x14\x92\x91\x19\x95\x4c\x92\x86\x21\x0b\x9a\x6a\x26\xd3\x54\xb5\xa7\x27\x7d\x24\x1d\x3a\x2e\x80\x41\xc3\x66\x78\x66\xa3\x04\x69\xd9\x8a\xad\xa6\x9a\x27\x39\x6a\xd1\x1b\xfa\xa3\xa8\x2b\xd6\x90\x2b\x98\xd3\x4f\xb4\x6d\xb9\x68\x25\x99\xd6\x6c\x4b\x28\xf9\xfe\xd1\x77\xa4\x66\xd4\x31\xfa\xdf\x3e\xfe\xee\x07\x38\x43\x73\xde\xd0\x5a\x8e\x1e\x3c\xf8\xcd\xf8\xc1\x03\x1c\x46\x2f\x79\xc1\xa7\x35\xbb\x16\x1f\x58\x43\xe6\xad\x58\x91\xc7\x1f\xcf\xff\x7c\xf9\xe3\xc5\xb3\x97\x2f\xae\x5f\xff\xe9\xc5\xe5\xe9\xd9\xd9\xdb\x17\x57\x57\xb6\xc3\xa5\x68\x8a\x7d\x2e\xcf\xaf\x93\x96\xaf\x98\xa2\xfa\xde\xfc\x0b\x67\x5b\x69\x9b\xbd\x7a\x71\x7d\x7a\x76\x7a\x7d\xfa\x97\x8b\x17\x3f\x5d\x25\x1d\xcc\x09\x78\x29\x66\x1f\x80\x12\xb0\xc7\xf5\xeb\x37\x57\x7f\x7c\x7d\xfd\xf2\xf5\xf3\x3f\x5d\x5c\xfe\x68\xbb\x3c\x58\x6f\xa6\xfe\x04\x9a\x9e\x93\x7c\x76\x9f\x00\x67\xe3\x31\x79\x74\x3f\x7f\x16\x9c\x3d\xad\x15\x5b\xd7\x62\x07\xd4\x78\x43\x5b\x4e\xa7\xb5\xb9\x86\xef\x71\x48\x37\xe6\x52\xdf\xc3\x4a\xf3\xcf\x88\xdb\x6b\xd2\xc1\x79\xe8\x33\xd0\xe0\x99\xd8\x4c\xf5\x51\x22\x97\xd8\x7e\x70\x4c\x26\xe4\x4a\xb5\x1a\xaf\x9f\x2c\xe5\xfe\x7f\x9f\x2e\x5f\x5c\xff\xf4\xfa\xed\x9f\x3e\x93\xcf\xd1\x20\xb4\xaa\x5a\x26\x41\xf6\xd8\x2e\xf9\x6c\x49\x5a\xb1\xa3\xb5\xe2\x4c\x12\xb9\x14\x9b\xba\xd2\xe4\x5c\xb1\xb5\x90\x5c\x99\x2b\xda\x8e\xf7\x16\x5a\xee\x4e\x11\x02\x0c\x6b\xfe\xed\xc7\x75\x7b\xfa\xf6\xf5\x7f\x9f\xbe\xbc\xfe\x6f\xb3\xa7\xc9\x24\xd6\x54\x2d\xdd\xe5\xbd\x99\x32\x3c\xb4\x46\x32\x71\x37\xf7\x94\xd5\x02\x19\x87\x69\x7a\x1a\x30\xc8\xf1\xd8\xcc\xff\x50\x6c\xf9\x71\x60\x98\x2b\x25\x5a\xba\x60\x6f\xa8\x5a\x1a\x04\xba\xcf\x7e\x35\x63\x89\xdf\x8e\x0d\x49\x24\x30\xfc\xa2\xee\x8b\x1c\x12\x0a\x74\xeb\x7a\x71\xa3\xb9\xf0\xd7\x22\xbe\x17\x2b\xae\x40\xf2\xd5\x37\xad\xc6\x67\x36\x3e\x97\x56\xb6\x76\x38\x65\x7a\x4a\x4e\xb4\xbf\xf0\x57\xf0\xe0\xb8\x0c\x38\x17\x5e\x3b\xa1\xea\x46\xcf\xf1\x97\x01\xaf\x26\xe4\xcf\x17\x8d\xfa\xfe\xb7\x43\xcd\xcd\x81\xed\x4c\xc8\x27\x24\xf8\x09\xfe\xe7\xf3\x71\xcf\x88\x92\xb5\x9a\xba\xb5\x1c\x08\x77\x96\x6a\xf9\x62\xc1\x5a\xe4\xd6\xd4\xc8\x73\xc9\x04\x2e\xd9\xf6\x0a\xba\x5d\x29\xda\xea\x59\x34\x6c\xfb\x7c\xd3\xb6\xac\x51\xf8\xbd\x9d\x53\xb0\x56\xd8\x22\x50\x01\xae\x98\x7a\xf4\x96\xd5\xa0\x4d\x84\x52\xe5\x78\xdc\x33\x4d\x2d\x14\x76\x22\xe4\x8a\x29\x8b\x0f\xc9\xd4\xc5\x99\x47\x89\x4c\xa6\xb3\x07\xf3\xfa\x26\xb2\xfa\x06\xd5\x60\x0b\x98\x3f\xd5\x0d\xae\xc5\x15\x53\xe9\x60\x5a\x16\xf7\x9f\xbb\x06\xb3\x03\xb5\x4c\x71\x8d\x66\x60\xf6\x30\x18\x5c\xa1\x33\xda\x68\x19\x62\x6a\x14\x28\xa3\x00\x14\xe6\xf1\x16\xfb\x9f\xb7\x62\xb5\x77\x2e\x43\xd2\x6c\x56\x28\xde\xec\x45\x86\xc1\x74\x2d\x66\x1f\xb4\x18\xb9\x62\xb4\xd1\x4c\xe6\x0d\x28\x1a\x7e\x76\x80\xa7\x7c\x1f\x5e\x42\xb7\x78\x36\x5d\x23\x19\x79\x8b\x4b\x23\xb3\x06\xa8\x48\x00\x63\xcb\x57\xd0\x6a\x80\x42\x97\x05\xff\xc3\xef\xf2\xc5\x16\x88\x80\xd6\x97\x1b\x2d\x4e\x04\xdf\x3a\x6e\x15\xce\xb4\x40\xaf\x5e\xaa\x7d\xd4\xde\x86\x6c\x57\x6e\x79\x5a\xea\xae\x5a\xba\x6d\xec\x0a\x3d\xc8\x64\xa1\x3f\x99\x96\xee\x5c\xeb\xe5\xe9\x4e\xee\x32\x79\xda\x85\x4d\x3f\x9c\xbb\x9f\xb4\x36\x22\xfa\x86\x3b\xc3\x96\xd1\x68\x4a\x84\x63\xed\xdd\xba\x8a\x49\xd5\xea\x1b\xa5\xb8\x65\x67\xf6\xd7\x60\x88\x4e\xa0\xc1\x5d\xd7\x7d\xd4\x5d\x1b\x77\xe2\x0b\xfb\x38\x24\x0d\x5d\x31\x7b\xef\xf7\x72\xc6\x83\xe6\x12\x2b\xd4\x72\xcd\x66\x7c\xce\x67\x66\x8d\x9d\x33\x34\x9c\x02\x5b\x15\xc8\xb6\x3c\xf3\x3d\x4c\xe5\x17\xba\x53\x1f\xd5\xec\x86\xd5\x64\xce\x59\x5d\xc9\x51\x20\x9d\x48\x66\xad\x1b\xfa\x14\x6c\x68\x4d\x6e\x68\xbd\x61\xd2\x1b\x7e\xfa\x8d\x2d\x5f\xe9\x92\xc6\x7b\x07\x27\x01\xaa\xfb\x15\x28\x61\x5a\x44\xd2\xd2\xdc\x28\x69\xa7\x19\xbd\x9e\xd4\x8c\xad\xad\x95\xa8\xa9\xf8\x0c\xcc\x54\x94\x2c\x5a\xb1\x59\x6b\x65\x0a\x2c\x3e\x6a\xd9\x8a\xcd\x62\x19\x28\xde\xe3\x31\x79\x45\x9b\x9d\x31\x08\xd1\x86\xb0\x8f\x5c\x2a\xa2\xd7\x0f\xad\x86\x64\xba\x51\x44\x34\xf5\x0e\xb4\x32\xbc\x84\x46\x8e\x4e\x6e\x68\x4b\x66\xa5\xeb\xd2\xad\xe6\x2f\x46\xa0\x26\x92\xff\xcc\x48\xc5\xd1\xb6\xd7\xee\xf4\x9c\x02\x11\xc1\x98\xbd\x66\x33\x2d\x70\x4a\x56\xcf\x8f\x01\xb6\x26\x19\xad\xdb\xcb\x09\xf9\x84\x80\x27\xd0\xeb\xf3\x41\xf0\xaf\x58\x68\x18\xe8\x18\x42\x62\xa3\x70\x04\xd3\xef\xe0\x41\xbc\xd1\xa4\x73\x08\x39\x21\x7f\x08\xe1\xc7\x62\xf2\xc5\x99\xb3\xef\xd9\xab\xd2\x98\xec\xe0\xae\x1a\x91\x80\x97\xb7\x3b\xd8\x98\xe0\xfa\x35\xec\xc5\x1e\x30\xa0\x08\x29\xf9\xa2\x61\x95\xeb\x68\xce\xbb\x15\x0f\xbe\x95\x7a\x4c\xd4\x73\x19\xf0\x05\xde\xcc\xb4\x9e\xda\x18\xab\xea\x77\xf1\x1e\x37\xec\xa3\x7a\x13\x1d\xdf\x03\xe7\x8f\xe6\xc6\x68\xda\x05\xf9\x67\x3c\x46\x5e\x11\x4d\x3d\x98\xb2\x64\xea\x4b\x66\x7c\x15\xf2\x9f\x68\xc2\x4a\x28\x5a\x6b\x49\x42\xab\xe5\x62\x0e\x76\x15\xa9\x99\x46\x60\xd0\x4d\x4d\x91\xc9\x84\x9f\xb1\x19\xdd\x48\x86\x4d\xf5\xc9\x01\x75\xca\xdc\x11\x43\xc2\x15\xa9\x04\x93\xcd\xb7\x8a\x34\x4c\xd3\x03\x6d\x79\xbd\x03\x19\xc4\x1f\x6d\x0b\xab\x65\x73\x7d\xab\xa1\xfd\x32\x9d\x1b\x0c\xc0\xcd\xc9\x64\xcd\x8c\x19\xbb\x1b\x20\x67\xe3\x0c\x0b\x16\x96\x9f\xb0\x11\x45\x94\x20\x15\x55\x6c\x44\x4e\x6b\x29\x9c\x2d\x7b\x51\x8b\x29\xad\xed\x55\x7b\x71\x86\x02\x82\xee\xc2\x9b\x45\x8c\x4a\x98\xd0\xd5\x66\xbd\xae\x77\x96\xe3\xff\xc2\xbc\xfb\xb9\x58\xa1\x1c\x40\xae\x77\x6b\x86\x66\x3a\x1e\xca\x2d\xf7\x3e\x0f\xb8\x1d\xf4\x15\x00\xa8\xfe\x4d\x30\xe2\x6f\x00\x51\x7a\x1e\x21\x8f\xb6\x13\xb6\x00\x34\xa1\x0a\xb5\x64\xce\xd8\x27\xad\xe5\x6d\x64\x80\x07\x20\x49\x25\xc0\xda\x66\x6e\x23\x07\x03\x2f\x25\x73\x09\xe1\xdd\x84\xfc\x18\xec\x68\x52\xd1\x66\xc6\xc8\x40\xb4\xc6\x1a\x79\xac\xa9\xc5\xd8\xce\x14\x8c\x01\xb3\xb4\xe0\x0c\x8d\x06\xae\x93\x68\xe6\xb8\x18\x67\xee\x8f\x46\xfd\x6a\x77\x9d\x53\x55\xb4\x7c\xe3\x1c\x0f\x4b\x51\x57\xd2\x49\x3a\xa1\xcb\xc6\x59\x04\xd0\xf8\xeb\xc4\x97\xcb\x67\xa7\xc0\xfd\x86\xde\x1a\x5d\xb3\x05\x6b\x2a\xcd\xa4\x0d\x8d\x83\x38\x64\x01\xbc\xa5\x3b\x72\x5a\xd7\xac\x21\x4b\x8e\x47\xe9\x7b\x60\x38\x1c\x3b\xff\x91\x51\xd4\x61\xae\xd6\x9b\x56\x06\x46\xb8\xef\x8d\x01\x8e\x2c\xe8\x8a\x91\x1f\x2c\x38\xd1\x22\xf8\x97\xb0\x25\x57\x8a\xad\x97\xac\x91\xa2\x41\x73\x9e\xe9\xce\x28\x9c\xe7\x97\x6c\xda\x8a\x86\xfc\x27\x5d\x79\xc4\xba\xbb\x38\x60\x3f\xc6\xb4\x5b\x07\xfe\x02\x4a\x24\x6f\x16\x35\x7a\xab\x88\xf1\x77\xa0\x9d\x59\xcc\x2d\x0c\xae\x3c\xee\x46\x68\x85\x41\xdf\x56\xcb\x8c\x13\xa7\xde\x99\x3b\x8a\x4f\x6b\x36\x24\x52\x10\xda\xec\x34\xe1\xcc\x68\xe3\x59\x12\xad\xd0\x64\x5e\xd8\x86\x14\xfd\x30\x9d\x8b\xb3\x70\x31\x9a\x79\x18\xed\x1f\x36\xf9\x13\xee\x79\xc0\x83\x37\x0d\xff\xfb\x06\xee\x0e\xeb\x4d\xd3\x0d\x5d\x2b\x0d\xa0\x66\x2a\x91\x1a\x23\x28\x57\x9a\x46\xa5\x73\xe1\xf9\x99\x82\x5f\xca\x7a\xf5\x34\x9e\x40\x06\xd0\xba\xdf\x8a\xae\xd7\xbc\x59\xc4\x73\x41\xab\xbe\x3e\x81\x40\x38\xa2\x59\x10\xc5\xda\x15\xd9\xd2\x1d\xd8\xe3\x1d\x60\xd8\x92\xa9\x95\x0b\x47\xe4\x42\x5f\x4b\x14\xfc\x82\xa2\xa5\xed\x2e\x04\x3b\x13\x8d\x59\xff\x76\xc9\x6b\x46\xb6\x8c\xcc\xf9\x62\xd3\x32\x82\x4e\xb3\x29\x53\x8a\xb5\x30\x06\xfa\xaa\xdc\x9e\x05\x50\x32\x6c\xe4\xe2\xbf\xd1\x0c\x3e\x7b\xcc\x68\xb6\x32\xe8\x6e\x78\x6c\xec\xa9\x0e\x74\xcb\x92\x6f\xf4\x9f\x9b\x4d\xcd\x9a\x85\x5a\x92\x87\x27\xe4\xf1\x84\x1c\x5d\x5a\xfb\x82\xc3\x89\xd7\xa3\xd9\x6a\xad\x76\x47\x11\xa4\xcf\xd1\x27\x2d\x11\x8d\x8c\x90\x72\x62\x79\xfd\xc8\xcb\x16\x79\x63\x37\xca\x89\x1b\xf0\x81\x87\x1d\x20\xca\x6c\xa3\x73\xb6\x71\xf4\x5f\x35\xc6\x02\x32\xa5\xb3\x0f\x73\x6e\xe8\x04\xe6\x0f\x67\x53\xcc\x3e\xcc\x96\x5a\xfe\x37\x04\xbd\x12\xad\x66\xcc\x8a\xf2\xda\x5c\xf4\x16\x7a\xe5\x9d\xde\xd6\xa1\xa8\xc1\xe0\xf9\x9a\xb2\x86\xcd\x39\x38\x52\x97\xf4\x06\x5d\x71\x2c\xea\xc2\xad\x52\x81\xe7\x6c\x2b\x36\x75\x0c\x7f\xca\x08\x08\x98\x4a\x90\x0f\x8d\xd8\xa2\xbe\xa1\x04\x8a\x98\x6e\xd2\x15\x6f\xd9\x4c\xd5\x3b\x54\xbe\xcf\x6b\xb1\x75\x40\x8c\xd0\x69\xb9\xf9\x31\x98\x42\x37\x6b\x7d\xf3\x5f\xd3\x45\xcd\x1b\x36\x50\xf8\x5f\x4b\x08\xc7\xf6\x4c\x25\xbb\x1f\x21\xfe\xdd\x91\xe9\x7d\xf4\x9e\x9c\x10\x03\xe1\x41\xd4\xde\xee\xa3\x93\xd5\xdf\x05\xfb\xac\x7b\xe9\x8f\x51\x0f\x63\x74\x0d\x9a\x3d\x88\x09\xc6\x4b\xc7\xa7\x56\x5c\x34\xaa\x8c\x46\xae\xd1\x1c\x42\x01\x4d\xcc\x66\x9b\x40\x53\x6b\x19\xad\xc9\x56\xb4\xb5\x93\xd6\xa0\xe9\x8a\x7e\x60\x64\xb3\x06\x17\x2c\x5a\x3f\x9c\x7a\x64\x3d\x65\xd3\x5a\xdf\xb1\x70\x89\x68\xa9\x5d\xff\x34\xa5\x92\x4d\x69\x5d\x07\xbc\xfe\x15\x5d\xf0\x19\x99\xd1\xb6\x92\x23\x72\x8a\x7b\xe3\x95\x27\xde\x90\xd5\xa6\x56\x7c\x5d\x6b\x5d\x61\x0e\xcc\x5b\x01\x38\x77\x8f\x7a\x1d\x0e\x35\x14\x6e\x58\x54\xd9\xd3\x4f\x51\x79\xb5\xa4\x90\x69\xa0\xa7\x8e\x7b\x93\xbf\x6f\x40\xd2\xc6\x56\x12\x3c\x50\x81\xc7\xde\x49\x16\xde\x71\xaf\xe5\x80\x19\xad\x6b\x8d\xd8\x1b\xda\x72\xb1\x91\x64\x01\xac\x09\x0c\x67\xd1\xad\x4b\x91\x41\xb2\x26\x9f\x0a\x79\xad\x55\x44\xe5\xbc\xf2\xd6\x19\x4f\xa7\x1c\xe2\x38\x02\x3d\xc4\xf8\xe2\xb4\xd6\x09\x47\xdb\xec\x99\x8d\x1c\x08\xf5\xa9\x51\xc7\x8d\x62\xd1\x16\x5f\x2a\x7f\xce\x2e\x14\x6b\x7e\x23\x01\x07\x95\xb9\x52\x60\xfa\x5f\xea\x2b\xdd\x2c\x2c\xec\x39\x1e\x13\xf6\x71\x44\x8e\xae\xf9\x8a\xc9\xd0\x76\xde\x8a\x46\x09\xf2\x96\xae\x95\x68\x25\x99\x2d\xc5\x07\x4f\x82\x9a\xae\xc5\x7c\x2e\x8f\xb2\x09\x84\xf6\x9c\xf8\x3a\x3b\x44\xf1\x27\xf7\xa8\xfc\x93\xbb\x19\x00\x62\xac\xe6\xda\x3f\xb1\x77\x51\xb8\xe2\xc3\x6e\x1f\xdd\xc3\xde\x3c\xbf\x77\x17\xcf\x95\xc1\xde\xad\xef\x1c\x54\x2e\xe3\x2b\x07\x94\xc3\xbc\x29\xc0\x3f\x81\x61\x4a\x70\x00\xeb\x1e\x50\x64\xfb\xe8\x64\x62\x8e\x85\x39\x8f\x97\xd2\x6a\x4c\x2c\x70\x6b\xa2\xf1\x7e\x73\x25\x08\xad\x2a\x10\x41\x5b\xb6\x12\x37\x2c\x94\x98\xa5\x35\xbe\x4a\x63\x69\x87\xc0\x1a\x63\x14\x4f\x45\xca\x8b\x8c\x99\xd8\x93\x86\x4c\x25\x89\x3a\xd1\xd2\x60\xa8\x4e\xaa\x3c\xd0\xc6\xc5\xa2\x18\x49\x73\x29\xaa\x6c\x54\x1f\x9f\x33\x03\xcf\x4b\x65\x59\xb6\xf1\x46\xd8\x61\x5c\x08\x8b\x6e\x16\x2e\x23\x62\xdc\x5e\x02\x86\x8f\xfa\x6c\x79\x49\xc9\x8c\xf6\x2a\x0c\x60\xf0\xd1\x23\xe0\xfb\x81\x11\xad\xf0\x56\x6b\x35\x1a\x74\xe0\xd0\xef\x18\xae\x57\xb7\xc6\x0b\x03\x41\x70\x35\xd4\xcd\xb7\x4c\x0b\xe4\xd2\x5f\xc7\x3c\x98\x59\xce\xdb\x7d\xf8\x15\x84\x04\xa0\x93\x24\xdc\x3f\x33\x94\x77\x4c\x38\x84\x18\x87\x4a\xa4\x25\x69\x40\x8d\x00\xe9\x94\xb5\x78\xeb\xd9\x25\x87\x3e\x07\xae\x32\x02\x98\x07\x9b\xa8\x45\x1e\xe9\x47\x6e\x04\xca\x3c\xce\x25\x12\xc5\xa9\xe9\x75\xeb\xd3\x1f\x6b\x27\xd8\x4e\x2a\x83\x4e\x1c\xbc\x30\x28\x2e\xe2\xb4\xae\x07\xc7\x40\xa4\x7a\x68\xfd\xcf\xd6\x84\x4d\x54\x20\x95\x3d\x52\xe2\x91\xfe\xef\x90\xa4\x3b\xa0\x75\xd3\x5a\xd8\x00\xb1\xb9\x68\xd9\x8d\x56\xa7\x9b\x4a\x4b\xea\x4b\x10\xe6\x45\xcb\x9c\xe9\x05\xe4\x2a\x2d\xc6\x59\x0c\x68\xd6\xe4\x68\x56\x03\xdc\x77\x5b\xc8\x5b\xdd\x16\xa7\x6d\x4b\x77\x49\xdc\x9a\x5e\x1b\x25\x6b\xda\x2a\xbc\x47\xf4\xc1\xb3\x71\x29\xa6\x9b\x09\x10\x5c\xa7\x3e\x3a\x33\x81\x21\x1c\xaa\x8b\x33\x7d\x07\x4b\x42\xd7\x6b\x14\x61\x97\xac\x8d\x79\xb6\xb1\xba\x55\x82\xa1\xe2\xb2\x80\x5b\x53\x33\x8a\xca\x12\x97\x86\x0e\x73\x2c\x7b\xeb\x46\xdd\xa2\xa3\xb5\xbc\xca\x09\x79\x87\x2b\x7f\xff\x20\xbe\x30\xd6\xce\x7c\x7b\x71\x66\xd6\x7e\xe1\x2e\x1e\x3e\x77\xa3\x35\xfe\x22\x33\xfb\x14\x92\x4b\x8c\x92\xb2\xdb\x12\x2c\x69\x5c\x82\xe2\x86\x5f\xcf\x69\x2d\x19\x19\xe8\x55\x9b\xa5\x1c\xf7\x81\x33\x6d\x86\x38\x13\xdc\x11\x40\x78\xbb\x61\x89\x9b\x12\xe2\x97\xf6\x62\xc6\x00\x0c\xec\xc5\xcf\x84\xa8\x23\x6d\x24\x46\x46\x48\xd0\x78\x5f\xd4\x3b\xe3\x94\x2c\x4d\x3c\xb6\x8f\xda\xf5\x6f\x1a\xec\x41\xc2\x1e\x7a\xfa\x6f\x9c\x72\x4f\xeb\x5a\x6c\x5d\xa4\x52\x70\x8a\x4b\xa3\xc8\xd8\x37\x5a\xf4\x89\x46\xfd\x4e\xdd\x2e\x36\x70\x10\x3d\xbe\x90\xe0\xcc\xf4\x94\x70\x53\x1d\x86\xdd\x51\x23\x9a\x71\x69\x42\x21\x75\x13\xbb\x58\x98\x09\xd8\x55\xa2\x11\x2f\xe6\xb9\x0f\xb7\x38\x4f\xe0\x52\x11\x81\x76\x33\x2a\x9c\x2c\x80\x89\xa7\x47\x95\x17\xdf\x5d\xac\x69\xc8\x0e\xf4\xde\xe3\x34\x70\xc7\xd3\x23\x11\xea\x26\xfe\x58\x78\x79\x2c\xb0\xd7\x8a\xb9\x9b\x62\x36\x89\xcc\x7e\xab\xd9\x93\xb3\xb4\xe0\xfa\x83\x73\x55\xda\xdb\xd4\x1b\x6d\x68\x1f\x6c\x79\x79\x0c\xb1\x69\x6d\xae\x40\x03\x49\x2e\xc5\x16\x03\xf0\x6a\x3a\x63\x01\x4e\x86\x84\x2d\x46\xe4\xbb\xef\xf5\x1a\x7e\x78\xbc\xe7\xa8\xe0\x72\xd1\xd9\xfd\x86\xb5\x7a\xf2\xc1\xb1\xc1\xff\xa6\x86\x8b\x3e\x61\xf1\xb6\xc2\x1c\xb2\xe6\x13\xf2\xee\x7d\xfe\x9b\x0d\x5a\x38\x21\x9f\x0a\x12\xa3\xa1\xe6\x13\xe4\x36\x05\x31\x31\x5f\x19\x42\x8a\x9a\x8e\xc7\x04\x7d\xbb\x3e\xf4\x03\xf4\x16\xbc\x71\x0c\x63\x84\x98\x73\x0c\x10\x05\xe2\xf3\x92\x18\xc6\x24\x15\x95\x6d\xeb\xb5\x7a\xe7\x51\xa2\x55\x6d\x33\x80\x41\xa2\xfe\xff\xe3\xb2\xbd\x44\x1f\x1c\x98\x34\xad\x2a\x69\xef\x23\x7f\x0d\x95\x4c\x50\x5a\x10\xa1\x2d\x5d\x31\xad\x1b\x4e\x9c\x5d\xce\xdc\x44\xa1\x99\xc2\x6a\xb0\x53\xa6\x8f\x84\x0f\xaf\x28\x00\x6c\xd9\xa3\xe7\x2e\x96\x73\x92\xde\x70\x00\xad\x61\xac\x72\x21\xf4\x46\x3f\xd1\x70\xd7\xa1\xb5\xd0\x74\x00\x0d\x21\x68\xaf\xb9\x04\x6e\x65\x11\xf4\x8c\x36\xdf\x9a\x13\x47\xeb\x96\xd1\x6a\x87\x27\x2f\xba\x95\xaf\xca\xe8\xb0\xe1\x66\x06\x91\x83\xc4\xbb\x7d\x90\x9a\x93\x9b\x4e\xac\xd5\xe4\xe1\x09\x69\x78\x3d\x21\x47\xcf\x91\xd5\x69\x09\xda\xe3\x57\xe8\x49\x4d\x8c\x4d\xc8\x78\x99\x00\x2f\xa3\xa3\x6c\x8c\x87\x01\x3d\xe7\xf0\xc2\x7d\x07\x62\x9c\x2b\xe6\xa4\x21\x1f\x4a\x65\x6e\xab\x1c\x7a\xd7\x61\x70\x0b\x39\xb1\x0b\xb1\x86\x68\x00\x1a\x60\xbb\xca\x64\xa0\x51\xaa\xcf\xa5\x67\xea\x34\x41\x06\x88\xb7\x56\x1c\x8b\x59\x3b\x89\x58\xc1\x08\x05\x2a\xb3\x57\xc7\x19\xe0\xd7\x6b\xa3\xdb\x03\xe4\xcd\x3a\xf4\x89\x75\x72\x10\xbf\x54\xc3\x2c\x52\xa8\x3e\x64\x2e\xe4\xb7\x18\xbf\xad\x04\xf9\x99\xb5\xe2\x20\x06\x13\x0c\xf4\x38\x1e\x84\xad\x78\x57\x44\x97\xe7\x0f\x3e\x00\xc3\x2e\xbf\x80\x61\xcf\x19\x24\xb2\x06\x67\xc9\x72\xfa\x5b\xcf\x99\x28\xb2\x08\x69\x79\x84\x0c\x99\x44\x20\x31\x97\xd9\x44\x4a\x69\xf8\x47\x21\xfa\x1e\x36\xfb\x80\x43\x29\x07\x6e\x0a\x56\x90\x4d\x0f\xa6\xde\xe1\xb5\x91\x55\x4d\xe3\xc2\x41\x05\x2c\xa6\x27\x5d\xff\xf7\xb8\xc3\xf4\x10\xa3\x14\x29\x05\x88\x0a\xff\x29\xad\x80\x1a\x2a\x82\x4e\x27\xc6\x30\xfd\x6f\x95\x7f\x30\x13\x2a\xc5\x87\xe0\xfc\x00\xb6\x1c\xea\x98\x05\x90\x07\x30\x66\x2e\x03\x55\x87\xb9\xbb\x2c\x10\xcc\xc9\x80\xde\x50\x5e\x83\x65\x3b\x38\x4a\xb1\xbc\x9e\x6d\x9e\xc7\xd6\x17\x31\xd5\xe2\xd9\x4c\xf9\xa9\xd1\xc6\x2d\x6e\x4a\xbc\xd4\x49\x59\x92\xa9\x87\xbd\x2c\x89\xcf\x0d\x97\x4d\x46\x7d\x78\xe8\xec\x4e\x40\x1b\x79\x90\x35\x76\xe7\xba\x1c\x21\xd9\x7d\xb6\xe3\x28\xc9\x7d\x0c\xe5\xe1\x6d\xa8\xf8\x14\x3c\x92\x86\x88\xa3\xc7\x73\x5e\x48\x8c\xf4\x06\x7d\xa3\x6c\x29\xbc\x75\x6b\xbc\x77\xda\x91\x08\x32\x03\x6b\x9c\xb1\x4e\x90\x43\x28\x3f\xa6\x17\x34\x34\x74\x1f\xee\x40\x20\xec\xdd\x95\x2f\x3c\xe2\xc6\xba\x11\xd9\x57\xdc\x81\xde\x67\x66\xf9\xb2\x43\x08\x23\x60\x28\xbf\xd1\x86\x12\x51\xc7\x22\xc8\xcc\xed\x53\x99\x68\x8d\xa8\xdb\x81\x14\x27\x08\x03\x85\xa6\x4d\x80\x40\xb3\x58\x59\x4f\x97\x87\xe1\x4e\x6f\xb6\xb9\x15\xf5\x3f\xa5\x91\x96\xcd\x57\x68\x03\x55\x9b\xd6\x18\x49\x1b\xb6\xad\x77\x56\x39\x0a\xe2\x16\x49\xc2\x4e\x6e\xc9\x18\x83\xab\xd9\x1b\xf5\xee\xc0\x1d\x57\x1b\x99\x6b\x94\xb0\x98\x69\xa4\xaa\x1f\xc8\xe3\xdf\x22\x06\x70\xfe\x97\xe7\xd7\x38\xe9\x2d\xb5\x3a\x5e\x2f\x47\xf5\x08\x4e\x39\xea\x84\xfc\x41\x03\xbb\x37\xbe\x0a\xab\x01\x67\x3c\x0c\x37\x41\xb7\xec\xfa\x70\x41\x35\x65\xa1\x9d\xa0\x03\x33\xd7\x1a\x38\xb8\x1f\xc9\x89\xad\xd6\xd4\xb5\x4f\xa0\xfc\x91\xa9\x2e\xfd\xbc\x5b\x27\x87\xa1\xa3\x90\x05\xe2\x7c\x5c\x1b\xc9\xd0\x52\xcc\xa5\x81\xf4\xad\x34\xc1\xdb\x66\x8c\xa8\x13\xb8\x85\x36\xab\x8b\xc6\xe8\x91\x7b\x19\x76\xb6\x82\x57\x16\x39\xfe\x79\x6d\x3e\x02\xdb\xbe\x32\xbb\x02\x9b\xfe\xe4\x91\x8d\xd2\xbb\x3c\xbf\x1e\xc4\xa1\xe5\x7e\x36\xff\x6e\x48\x65\xf0\xdd\xf1\x30\xdb\xb3\xfe\xbf\xe4\x4e\xba\x65\xef\xfc\x92\xbb\x2d\x80\x28\x28\xf9\x71\x2e\xee\x5f\xd8\x08\x42\xe3\x01\xd1\x02\x79\xb0\xf5\x7b\xf7\xfa\x00\x41\xbd\x88\xc7\x78\x22\xc6\x1b\xfe\xe4\x91\xdb\x9f\x0e\x36\x39\xa5\x6a\xb6\x7c\x95\xf1\x4a\x2d\x0e\x4f\xb9\x6a\x69\xbb\x23\x7f\xdf\xd0\x46\x71\xb5\xeb\xb2\x30\x25\xbc\x74\x85\xb1\x31\x49\x50\x3d\x39\x48\xc0\x54\x7b\xf9\x68\xf8\x88\x57\x63\xb1\x4b\xb8\xb7\x93\x46\xde\x56\x5a\x02\x2a\xf3\x19\xa3\x2b\xf2\xc7\xe0\xe5\x6e\xf8\x48\xd7\xf9\xd9\xac\xcc\x12\x1d\xf0\x2d\x6b\xfb\xe0\x5b\x3e\x9a\xec\xc0\x20\x7d\xad\xe1\x57\x62\xde\x07\x4c\xc8\x1f\x82\xf9\x7c\x2a\x1d\xc9\xe0\x77\x7f\x20\xfd\x97\x83\x84\x5a\x6e\x68\x4b\xb8\x85\x0f\x9a\x60\xf8\x2b\x86\x1a\x71\xf2\xc4\xa3\xb1\xe0\x5c\x0d\x07\x1d\x99\x27\x16\x03\x25\x3e\xb0\x66\x42\x9e\x3c\xc2\xf8\x8f\x7c\x91\x46\x6b\x3c\xce\xe0\x71\x72\x42\xb8\xa1\xef\x1f\x7e\xa7\xe9\x3b\xfc\xf5\x73\x37\xb5\x17\xe8\xae\x4b\x30\xf8\x89\xab\x65\xf0\x90\xa1\x20\x26\x80\xef\xc7\x1f\xf9\x5b\x8a\x0d\x5f\x4b\x6a\x88\x10\x15\x33\xa4\x18\x64\x30\x73\xbd\x12\xde\x90\x17\xe6\xe3\xaf\x4c\x3a\xe9\x11\x4e\xe2\x4d\xce\x4e\x57\xf1\x99\xd3\xbf\x04\x98\xbb\x09\x30\x1e\xa9\xf7\x23\xc6\x78\x78\x6f\xd9\x3c\xb0\xd2\x9b\x30\xe8\x11\x26\xc6\x78\xf2\x4d\xf2\xc2\xf6\xf7\x03\x7c\x1a\x66\x9b\xf7\x3d\xe2\x8d\xf9\xcb\xd3\xa7\x98\x5f\x60\x70\x74\x29\xa2\xf3\x1f\x07\x2d\x68\x0d\x10\x81\x1c\x25\x1c\xd5\x09\x5f\x01\x7f\x39\x89\xd7\x31\x5a\x30\x75\x19\xdf\xf3\x01\x9d\xde\x59\x50\xd9\xf3\x77\x37\x31\x6a\xcf\x5f\x7c\xa8\xc2\x4f\xb9\xbc\xf4\x55\x84\xcc\x00\xeb\xbf\x16\x51\xb3\x1f\x8b\xb7\x94\x3a\x3b\x0e\x68\x4c\x9f\xb4\xaa\xae\xc5\x2f\x43\xa1\xf7\x46\x8d\x07\xe3\x2c\x5e\xaa\x64\xe6\xb6\x90\xc1\x02\x9b\x39\x2c\xd0\x11\xdf\x88\x57\xe9\x7d\x11\x7e\x1a\x16\x76\x3c\xb3\x8e\xdf\x56\xd4\xdf\xab\xb4\xdd\xbf\x0a\x50\x96\x8a\xf6\x29\x04\x89\xa4\xf4\xeb\xd5\x0f\x7a\xc8\xed\x0b\x85\x2f\xb9\x5f\xfa\xfa\xaa\x8a\x48\x97\x26\xb2\x47\x72\x4a\xf5\x92\x6e\x59\xea\x9f\x5d\x5b\xe9\x40\xc4\x2f\x7d\x75\xfe\x62\x4a\x92\xa5\x87\x05\x53\xe8\xf0\x3a\xf6\xae\xae\x04\x99\x69\xd4\xbd\xdc\x03\xcf\xf8\x1c\x34\xc4\x38\xd2\xa9\x07\x6e\xea\x54\x2a\x43\xbe\xdc\xac\x22\x0e\x19\x0d\x61\xa2\x42\x7a\x06\x29\xf0\xd8\x60\x40\x12\x87\xde\x06\x31\xf5\xd1\xc9\xcb\xb2\xc2\x05\x2f\x87\xa8\x0b\x81\x18\x8f\xc9\x73\xb4\xd6\x33\x2a\x79\xbd\x83\xf8\x7a\x8e\x51\xa5\xf8\x02\x4f\x71\xaa\xec\x8b\x8f\xbf\xfe\xd7\x86\xb5\x3b\x13\x83\xf1\x57\x73\xea\x2d\x1c\xe0\xba\xe6\x5d\x08\x38\x3e\x24\x53\xfe\xcd\x94\x0d\x36\x3c\xc3\xc7\x2e\x56\x0c\x0e\x01\xda\x5b\xfc\x3b\x97\x85\xe2\x01\x89\xc3\xe2\xc3\xd6\x01\xfe\xca\xb1\x8c\xe9\xaf\x51\x58\x7a\xde\x35\x0a\xef\xb6\x3f\x17\xdf\x6b\x87\x51\x83\x9d\x0d\xbb\x82\xe8\xc2\x81\xb3\x80\xab\x4e\x68\x5f\x12\x67\x14\xe7\xf5\xb8\x55\xb8\x86\x64\x4a\xbe\x33\x31\x37\x0f\xc3\xf8\x06\xc9\x94\xdf\x67\x97\xd1\x2c\x8c\xd3\x04\xdd\xb1\x57\x9b\x33\x3b\x45\x4e\xc8\xe0\x9b\xd2\x80\x54\x92\x6f\xae\x98\x7a\x7a\xfc\xb0\xd4\x2d\xa1\x9f\x20\x4c\x48\xe5\x76\xe3\x28\x9c\x4a\xf6\xc6\xc3\x1b\x40\xa3\x3d\x71\xf1\xb6\x99\x8c\x03\xe2\x49\x1a\x90\x25\x99\x4a\x78\x10\xc9\xe3\xb2\x74\xa3\x94\xa1\x90\xcc\x2f\xa5\x5b\x25\x7e\x2f\xd2\x1f\xa5\xa5\x7b\xf4\xf3\x90\x7f\x7a\xf6\x9a\xae\xed\x6b\x71\xd8\x80\xf9\x04\x89\x18\xf3\xb7\x9e\x5e\xd4\x72\xb1\xf5\x51\x28\xcc\x8a\x61\x4c\xfc\x1e\x9e\xd5\x0d\xf6\x50\x8b\xdc\x01\xaf\x4a\x4d\xa0\x92\x8f\x7a\x64\xb1\x2c\xe8\x6c\x21\x1d\xde\xb7\xd7\x6a\xc9\xda\x2d\x97\x0c\x5f\xf2\x99\x07\x03\x65\xab\x49\xc8\x5f\xd3\xbc\x3e\x7d\xfc\xaa\x94\x28\x28\x87\xd0\x1b\x3e\xd9\x71\xde\xdd\xf3\xcc\x75\xc7\x93\xcc\x70\x20\x00\xe3\x3f\xa6\x74\x19\x26\xb9\x70\x99\x33\xf9\x6a\x5d\x83\xfa\x4b\xed\x63\x4a\x4a\x66\x1b\xa9\xc4\xca\xbf\x29\xbd\xe1\x6c\x8b\xcf\xec\x4d\xbe\xcb\x51\x04\x08\x7e\x8e\x1e\xce\xac\xc3\x27\xa9\x5d\xaf\xc6\x0c\x53\x34\x19\x98\x82\xc4\x86\x21\xc1\xda\x1d\x99\x6f\xea\xfa\x32\xb8\x12\x9f\xe6\x2d\x78\x2b\x55\x7f\x93\x9a\xee\x6b\x31\xe5\xad\x5a\x56\x54\xed\x6b\x02\x04\xd9\xdd\xe6\x6f\xac\x95\x6c\x67\x77\xbf\xab\x55\xd5\xd2\xb9\xba\x66\x74\xb5\xa7\xc9\x7f\x33\xba\x0f\xca\x15\x33\x42\xe9\x9e\x76\x6f\xc5\xa6\xa9\xba\xdb\x28\x46\x57\xa7\x66\x47\x2e\x9f\x9d\x6a\x82\x3e\xa4\x69\x77\xab\x75\xcb\x57\xb4\xdd\xbd\xd1\x4a\x42\xef\xec\x96\x8c\x2f\x96\x3d\x80\xb6\x7b\x7e\x87\xa4\x18\x1a\x51\xf2\xc5\xc7\xb5\xbe\xed\x9a\xbe\xfd\x69\xa6\xf4\x8a\x51\xd9\x8b\x2e\xaa\xd8\xeb\xf9\xde\xf5\xd5\x74\xf7\x9c\x2a\xb6\x10\xed\xae\xbf\xd5\xf5\x6e\xdd\x33\xa1\xa5\x58\x31\x4d\x09\xfd\xd4\x49\xb7\x74\xb7\xbf\x95\x85\x75\x35\x13\xed\x01\xc0\xf6\x34\x43\xd1\x21\x66\x64\xa5\x56\x7b\x0e\x56\x91\xa3\x96\xf0\xd4\x23\x12\xef\x11\x98\x5d\x84\xd5\x45\x63\xcc\x05\x7e\xbe\x31\xef\x8e\xb8\x68\xc6\x59\x62\xb5\x34\x67\x2b\xf1\xef\x19\x4f\x89\x7f\xce\x19\x4a\xe1\xf7\x98\x9b\xc4\x0d\x8a\xac\x24\x6e\x92\xf3\x91\xc2\xef\x11\x13\x29\xfc\x9e\x73\x90\x42\xa3\x98\x7d\xc4\x0d\xba\x79\x47\x77\xbb\x8e\x26\x5d\x5c\x23\x6e\x95\xb0\x8c\xf8\xc7\x6d\xdf\x8f\xbd\xcc\x22\x6e\x9a\x73\x8a\x04\x2d\x25\x36\x91\xac\xa6\xc4\x23\xf2\x26\x11\x83\x48\x56\x5a\xe2\x0e\x71\x93\x22\x6b\x28\x43\x89\x0f\x7c\x19\x4c\x5f\x9b\x22\x47\x48\x9b\xf4\x9d\x89\x62\xd6\xc4\x0c\x1f\x81\x34\x95\xc2\xee\xfa\xa9\x97\x05\xd8\x46\x45\x29\xcc\x32\x01\x72\xe2\xf8\x41\xa1\x91\x65\x05\xba\x95\xfd\x77\x41\x15\xa2\xae\x95\xfd\x67\xde\xc8\xf1\x05\x72\xe2\x79\x44\x47\x33\x94\x7e\x4f\x02\x5e\x91\x37\x0c\xd9\x04\x39\x89\xb8\x46\xde\xd8\x31\x0c\x72\xe2\x99\x47\x47\x33\x7d\x4c\x6c\x33\xfd\xef\x8e\x66\x8e\x7d\xd8\xb6\xee\x8b\x8e\x0e\xc0\x4a\x6c\x63\xf8\x90\x37\xcc\x58\x0a\x39\xc9\xd9\x4c\x7f\xb7\xa4\x47\x41\xc0\x8e\x79\x8d\x96\xb4\xe3\x6f\xf2\x2e\xc8\x78\xc8\x89\xe1\x40\x79\x83\xad\x6d\xb0\xed\x68\x50\x62\x40\x7a\xa6\x85\xaf\x0b\x5a\xb4\x65\x49\xe4\xc4\xb3\xa7\x02\x96\x03\xce\x74\x12\xf1\xa9\xb2\x96\x61\x59\x94\xd1\x35\xec\xc7\x72\x63\xc8\xfb\x75\xe2\xf8\x56\x01\x47\x01\xcb\xd2\x98\x0a\x3e\xe6\x8d\x43\xe6\x45\x4e\x22\x5e\xd6\x0d\x19\x58\x54\x00\x1a\x3e\x77\xc3\xb6\xcd\xa3\xcf\x5d\xa6\x93\x48\x9d\xb2\x1f\x8b\xba\xdb\xa5\xb3\xc7\x94\x67\x7b\x88\x7a\x46\x6e\xa1\xec\xf5\x1b\x87\x72\xfe\x87\x31\x6f\xe9\xb7\x65\xeb\x81\x51\xb6\x7d\x56\x04\x7c\xeb\xbf\x6e\x99\x34\x1e\x91\xb8\xc2\x0a\x89\xd5\x3a\xd7\xef\xf2\xfc\x3a\xcf\x1a\x3f\xba\xb8\x3c\xbf\x1e\xc6\x09\xec\x47\x6f\x99\x14\xf5\x0d\x6b\x13\x13\xc5\x8f\x98\x0c\xcf\x64\xa4\x72\x39\xf1\x32\x91\xcf\x67\x7e\x75\x3f\x85\x60\x8c\xb1\xd9\x39\xa6\xf2\x9c\x45\x81\xb0\x4f\x27\x81\xc9\x24\xd3\xf5\x4b\x69\x7e\xf7\xe5\x06\x2e\xb9\x74\x92\xbb\x27\x73\x3f\x9b\x34\x80\xaf\x5c\x1a\xc0\xa8\xb9\x35\x23\x06\x19\x00\x03\xe3\x62\xf8\x6d\xe8\xd8\xc8\xe9\x84\x57\xe5\x6e\x99\x6f\x1c\xad\x43\x41\x2a\x2f\x54\xdd\x8b\xcc\x86\x92\x93\x00\x83\xde\xc7\x5d\x7c\x0e\x11\x63\x34\xfc\x74\x5c\x78\x4a\xd5\x91\xa4\xd9\xac\x65\x9f\x1b\xe9\x76\x4e\xa7\xd0\x13\x5d\xa1\xed\xf4\x00\x07\x7d\xba\x1e\xdf\xd9\x7f\xbf\x17\x46\x8f\x03\xde\xb6\x49\x9e\xb5\xcf\xc3\x33\x19\xa6\x4c\x1e\x22\xe2\x68\x63\x52\x07\x2b\xe1\x5e\x3e\xc7\x4f\x9c\x05\x11\x1b\x25\x79\xc5\x88\x98\x4a\xd6\xde\xb0\x56\xba\x47\x4f\x2e\xec\x29\xce\xc4\xac\xff\xcc\x37\xd9\x2b\x86\x60\xbb\xe2\x04\xcd\x66\xaf\x8a\x2b\xb1\xb6\xd2\x86\xae\xd8\xe0\xd8\xd7\x54\x88\xf5\xac\x82\x11\x28\xa0\x62\x63\x11\xd6\xec\x45\x93\xdf\xb3\xdd\x39\x67\x75\xe5\x1c\x8e\x7e\x47\x2c\x05\x42\xb6\x95\x09\x39\x3a\x37\x30\x8f\x8e\xc9\xd3\xa7\xe4\xe8\x28\x1b\x34\x95\xcd\xef\x63\xd0\x37\x06\x66\x71\x50\x63\xf9\x2d\xca\xa1\xfa\x6f\x34\x13\xcd\x8c\xaa\xc1\x11\x39\xca\xfd\x9a\xf6\x47\x3b\xeb\xe3\x84\xd5\x93\x90\x47\x46\x8e\x1b\x70\x63\x6f\x78\x5d\x9d\x31\x39\xc3\xa5\xf6\x6e\x46\x22\xe3\xc7\x68\xb9\xc2\x1f\x07\xe5\xd3\xd4\x85\xea\xf8\x14\x39\xb8\xe5\xe3\x34\x52\xc2\xce\xb2\x08\xc8\xab\x28\x1d\x13\xc4\x2c\x41\x5d\x53\x7c\x1a\xc0\xef\xde\xa4\xa3\x53\x5b\xe6\x20\x8f\x3f\xb4\x5b\x11\x4e\xa6\x7b\xc3\x7a\x77\xd3\xe0\xba\xaf\xf7\x2a\x0c\xbb\x0d\x8d\xdb\xfd\x70\x43\xc6\xeb\x29\x25\x60\x11\x28\x13\x14\xf2\xed\x99\xc8\x1e\xcd\x84\x4c\x4e\x3a\xb2\x6e\xc5\x9a\xb5\xca\x25\xc9\xb3\x59\x55\x20\x2b\xd4\x90\xcc\x20\x6d\x2c\xbc\xab\xb7\x15\xb2\x58\x4a\x72\x2e\xe7\x52\x34\x05\xc3\xe8\xb2\x71\x4c\x9a\x48\x03\x1f\xea\x28\xc1\x2b\x56\x99\x66\xfc\xcb\x78\x4d\xf0\x5b\x2f\x95\xc3\x53\x70\x26\x67\xf7\x79\xfa\x6d\x0a\xbf\x12\x5d\x95\x88\xcc\xce\x21\xc8\xc0\x45\x9e\xba\x6f\x89\x19\x2a\x3b\xbb\x1d\x97\x06\xd4\x87\xda\xac\xd7\xa2\x55\xac\x8a\x6d\xfc\x59\x21\x3d\xde\xcc\xea\x4d\x65\xb7\xea\xb9\x96\xa0\x2f\xcf\xaf\x09\x08\x6f\x19\x4a\x17\x4c\xc1\x0f\xe0\x94\xd3\xbc\xa7\xc3\x25\xf7\x2e\x23\x47\xdd\xf8\x49\x2c\x19\x9e\x71\xa9\x17\xf8\xfb\x41\x21\xf4\x10\x9a\x77\x7a\x0f\xba\xbb\x24\xb2\xa7\xad\xbf\x73\x68\x07\x23\x3b\x1f\xde\xfe\xa3\x62\x6d\x43\xeb\x3f\xbf\x7d\x79\x68\x97\xcb\xf3\x6b\x1f\x5f\xa2\x89\xea\xcb\x3a\xee\xc3\x5d\xdc\xf7\x0a\x98\xc0\xa1\xad\xaf\x5b\xca\xd5\xc1\x38\x78\xc5\x2a\x4e\x75\xeb\xa8\xf1\xfb\x02\x69\xe6\xe2\x40\x8b\xca\x81\x06\x34\xf8\xbf\x40\x9f\x13\x18\xe2\x78\x42\x4e\x9b\x1d\x0a\xf7\x4f\x53\x63\xce\x96\xab\xd9\x12\x3d\x52\x79\xc0\xc0\x8c\x9a\x24\xcc\x9d\xc4\x36\x29\xca\x68\x86\x70\x8b\x9d\x06\x9d\x52\x1d\x46\x70\x38\xaf\x7d\x09\x63\xf6\xaf\x0a\x6b\x78\x22\xe3\x08\xf9\x53\x77\x47\xb5\xdc\xac\xa6\x0d\xe5\xf5\x24\x99\xdd\x1f\xaf\xaf\xdf\x9c\xf3\x9a\x0d\x36\x6d\x6d\x40\xba\xb6\x69\xc8\xb6\xfd\xcb\xbf\x1d\x8f\xc9\xf3\x92\x2f\xd0\x68\x66\x4a\xb8\x0c\xe1\xe9\x7b\x84\x1c\xe5\x7d\x07\xb6\x17\xed\x9d\x1d\xbb\x51\xef\x05\xc5\x7b\x94\x0f\xbb\x77\x21\xf0\x11\xdc\x7d\x3c\x0b\xab\x6f\x40\xef\x74\xb8\xf3\x78\x2f\xe9\xfe\xe1\x02\x27\xc6\x9d\xc7\x7b\x66\x61\xed\x1d\xd0\x78\x45\xee\x67\x44\x00\xd6\x37\x64\xec\x67\xb9\xf3\xa0\xff\x19\x80\xeb\x1b\x36\xf0\xdd\xdc\x79\xcc\x33\x0b\x6b\xef\x80\xe8\x0c\xba\x9f\x01\x35\xac\xbd\x03\x06\xde\xa5\xfb\x19\xd5\x01\xdc\x3b\xb4\xf1\x59\xdd\xcf\xb0\x00\xac\x6f\xc8\x82\x17\xec\xee\xf2\x62\x0a\xf3\xd0\x09\xdc\xf3\xd8\x7d\xc3\x66\x2e\xbb\xbb\xeb\xc8\x31\xc4\xbe\xc1\xad\x27\xf0\xce\x63\xfe\x11\x00\xf5\x0d\xb5\xbd\xaf\xa1\x7e\xda\x3b\x54\xd9\x4b\x79\xf7\x1d\x2d\x80\xed\x9b\x46\xe0\x01\xbd\xf3\xd8\x97\x16\x56\xef\xa9\x8d\x5c\xaa\x77\x3f\xb7\x01\xb8\x5e\x0a\x8e\xdc\xb4\xf7\x62\xe2\xb1\xe0\xf6\x0d\x8b\xe6\xa5\x7b\xb4\x2a\xf5\x1c\x95\xc8\x95\x7c\xf7\x03\x13\x80\xeb\x1b\x36\x76\x4f\xdf\x79\xd8\xd3\x00\xdc\x21\xab\x35\xee\xec\x7b\x5b\x2e\xc0\x3b\x64\xbd\xf7\x35\xf0\x69\x08\xaf\x6f\xe0\xd8\xf2\x75\x1b\x83\x57\x1f\xcc\x5c\xd8\xdc\x63\xe0\xeb\x9f\xe0\x97\x5b\xca\x3b\x31\xd5\x37\xf9\x5b\xd9\xf3\x8b\x31\x04\xc1\xc2\x2f\xf3\xdf\x3b\x90\x30\xec\x9c\xed\xa1\xea\x57\x97\xbe\x1a\x58\x22\xca\x9a\x93\x7d\x40\x60\x8d\xa7\x0b\xa6\x4c\x1f\xd8\xb4\xf2\xf8\x50\xcf\x84\x7e\x8c\x2d\x5c\xf7\xb2\x5c\xf2\xf4\x69\xf2\xd4\x28\x1c\xd3\xba\x39\x9a\xb9\x20\x27\xa4\xb8\xd2\x20\x81\xe6\xd0\x98\x35\xad\xe7\x6f\x50\x26\xa1\xe3\xa1\x5e\xcb\x04\x16\x84\xf6\x32\xd3\x7c\x45\x3f\x1e\x93\x09\x69\x78\xdd\x8d\x05\x33\xa3\x97\x5c\xaa\x09\x79\x57\x9c\xd1\x7b\x72\x42\xde\x05\x33\x7f\x7f\xb8\xe1\xc0\xee\x5e\xb7\xfa\x1a\x8c\x7f\x47\x4a\x71\xb6\x9d\x5b\x18\x36\xb0\x4f\xf7\xec\xfa\xf1\x7e\xc7\x09\x87\x56\xb9\x6e\xda\xc6\xda\xd9\xbb\xb7\x6c\xc6\xf8\x8d\xa6\x85\xe7\x74\x6d\x4a\x5b\x3c\xf9\xe6\x53\xec\x77\xb6\x8d\x3e\xff\x9e\x9c\x74\xae\x69\xc1\x94\x29\x72\x3d\xb0\xc4\x9f\x56\xdd\x3e\xd6\xc7\x21\x1c\xe7\xb4\xd9\xbd\x35\x2e\xef\xce\x21\x07\xf1\xea\x16\x4c\xbd\x8d\xa7\xfe\x06\x2a\x40\x95\x1e\xd2\xf7\xee\x91\x43\x53\xf7\x36\xb9\xfa\xe2\x93\x82\xc5\x35\xfc\x2b\x41\xee\x31\x6b\xf9\x79\x59\xe4\x27\xbb\xb1\xff\x59\xdf\x6c\xa3\x26\xe4\xf1\xe8\xf1\x7f\xec\x6f\x1a\x59\xc6\x8e\x2e\x9f\x9d\x5a\x83\xd3\x8a\xb6\x1f\x98\xc2\xd0\x28\x33\x81\xdc\x05\x13\xfe\x95\xb1\x4b\x22\x73\x64\x7f\xfb\x4e\x76\x1c\x19\x7a\x6f\x71\xd2\x82\x8e\x03\xcb\xa7\x91\xdb\xea\x6f\x0a\xf4\xd0\x35\x83\x92\xdd\xf8\x16\xf3\xc8\xba\x77\xef\xbe\xf4\x99\x1f\x26\xbe\x4c\x3b\x4e\xda\xc3\xe8\xb9\xc0\x1d\xbd\x4f\xc8\x18\x3f\xdc\xa6\x37\xbe\xe1\x6a\x6d\x7f\xac\x9c\x71\xeb\xe1\x7d\x4b\xb4\x28\x3f\x71\x2f\xbb\xfc\x2f\x9f\xec\x57\x29\x70\x3c\xb1\x9f\x8b\x16\xf0\x78\x98\x97\x50\xdb\xd7\x08\xf7\x5f\x36\xcc\x30\x0b\xa3\x71\xa7\x2c\xfb\x25\xeb\x5b\x8e\xb5\xf1\xcd\xf6\xac\xc1\xe0\xfa\xa0\x55\x64\x93\x79\x63\x7a\x0f\xff\xd7\xae\x0f\x1f\x4b\xbf\x58\xad\xd5\xce\x77\x39\x37\xde\xc7\x09\x19\xcc\x37\x0d\x19\x40\x3e\x9b\xee\x89\x14\x7c\x0c\xe1\x9f\x7b\x37\xec\xea\xd3\x94\xc6\xec\x10\xc7\xf4\xdf\xe7\xbb\x5e\xa7\x1d\x7e\xa1\xee\x9b\x75\x4a\x9b\x86\xb5\x17\x2b\xba\x60\x99\x30\x06\xce\x9c\x1e\xa3\x3b\xaf\x59\xa7\x1b\xa2\x17\x4f\xe0\xa3\x38\x5a\x2a\xb5\x96\x93\xf1\xb8\x99\x52\x25\xd6\x12\xf0\x25\x56\x63\xa9\xa8\xe2\xb3\x31\x5f\x2d\xc6\x4a\xac\x1f\xe9\xef\x1f\xd5\x62\x21\x1e\x2d\x45\xcb\x7f\x16\x8d\xa2\xf5\xa3\xed\x92\x2b\x36\x92\x37\x8b\xee\x2b\xa0\x87\x12\x56\x7a\x5d\x48\xe0\x47\x5c\xaf\x7c\x2c\x6f\x16\xff\xfe\x71\x55\x97\xa1\x75\xcb\x8d\xf2\xef\x1b\xda\xb2\xff\xa5\xc8\x13\xfa\x7f\xa3\x75\x73\x5f\x38\xea\x84\x74\x0b\x31\xa6\x44\x9e\xfb\x1c\x6a\x5a\x08\xd0\x07\xea\x91\x3e\x51\x47\x07\xfa\xd4\x74\x27\xf7\x7a\x8d\x70\x49\x76\x62\xd3\x42\xc1\x8c\x19\xb8\xb1\xc4\xb6\x19\x6a\xbd\xa5\x1e\x62\x4d\xe3\x96\x56\x8c\x88\xf9\x9c\xcf\x38\xad\x49\xc5\x17\x5c\xd1\x3a\xaa\x4a\x67\x63\x1c\x34\x60\xdd\xe5\xa7\xcb\x67\xa7\xdf\x4a\xb2\x80\x13\x2e\x95\x2d\xf2\xd9\x54\xf0\x2f\xd6\xca\x9e\xa9\x32\x2f\x07\xa4\x34\x10\x8a\x08\x1d\x9b\xdc\x6b\x0e\xf0\x14\x39\x09\x3f\xf4\xb8\x5e\x3c\x03\x98\x84\x1f\x7a\xc6\x10\x1a\x49\x72\xb2\x87\x19\x1e\xa9\x2d\x57\x8a\xb5\x47\x07\x2d\xd1\x34\x06\x22\xf6\xcb\xed\x5b\x2a\x8c\x51\x71\x39\x13\x6d\x75\xd8\x18\xa6\x31\x8c\xc1\x9b\x1b\xae\xd8\x6d\x86\x82\x7c\x03\x8b\x96\xae\x0e\x1b\x6c\xbb\xdd\x8e\x5c\x97\x6c\x59\xdd\x37\xc0\x1d\x2f\x00\xe7\xae\x2f\xb3\xfc\xf1\x98\xc8\xb5\x68\x95\x24\x2d\xad\x68\x0b\xde\x03\xc2\xab\x6e\xcd\xf8\xe3\xac\xde\x54\xac\xba\xa4\x2b\x50\x2c\x30\xd6\x04\x94\xe1\x82\x9b\xa2\x2c\x58\x8f\xc7\xa4\x11\x18\xd5\xe2\x0b\xa9\x28\x98\x67\xe7\xb8\xf0\xf3\x99\x2b\xf4\x1e\x54\x51\x75\xa1\x00\x9f\xc9\x49\x0f\x05\x1e\x5d\x05\x86\xb1\xa3\xfb\xb2\x8c\x1d\x19\x33\x58\x06\xf0\xcb\x6c\x63\x47\x57\x81\x26\x7d\x74\x7b\xeb\xd8\x11\xe6\x7d\xf6\xb3\xd1\x9f\x79\xb3\x18\x71\x69\x32\x42\x37\x73\xf5\x96\xcd\x27\xe4\x1b\x0d\x9a\x50\xf9\x90\x7c\x93\x89\x37\x97\xe7\xd7\x65\x7a\x2c\xd3\x22\x96\x28\x48\xb6\x33\x8a\xb2\x0e\xff\x6c\x18\xa7\xdf\x4b\x6b\xa3\x5a\xd1\xf5\x1b\x53\x77\x63\x50\xf1\x99\x9a\xa4\x9b\x7e\x8b\x7b\x45\xf7\xbf\x16\x48\xfb\x06\x58\x3c\xe8\x30\xa5\xe4\xe8\xe3\xe1\xc7\xcb\xc5\xb7\xdc\x42\xdb\xc2\x3e\xdd\xd7\x1c\x57\x6c\x75\x4b\xa5\x7d\x8f\x70\x61\xff\xbe\x5c\xc8\xb0\x7f\x3e\x9a\x44\x0b\x04\x9b\x15\x88\x02\x3d\x02\xac\xfd\x3b\x20\x81\x5c\x2e\x61\xfc\x6d\xcd\x7a\x84\x95\x03\xc0\xfe\xc3\x91\xa4\x55\x20\x71\xff\xe8\x01\xb0\xe3\xd5\xfa\x77\x5f\xd3\xe2\x51\xce\x81\xd4\x70\x9f\xf7\xe5\x73\x14\xb6\x35\x1e\x93\x73\x57\x2f\x73\x23\x4d\xce\xbc\x99\x58\xad\x37\x90\x91\x27\xc2\x68\xdc\x2f\x38\xfa\x64\xc9\xea\xb5\xc4\xa8\x50\xa2\x65\x34\x60\x02\xba\x05\xe6\xe7\x8c\x32\x0b\x84\x30\xa2\x94\xa7\xbe\x13\x56\x92\xae\x6b\x7d\xe5\x3c\x82\x38\x51\xf4\xa9\xc8\x00\x1c\xa6\x1a\x8a\xea\x9d\xb8\x64\xa8\x19\x53\x2a\x5c\x3c\xc7\xa4\x7c\x1f\x7d\x42\x58\x11\x1a\x6d\x4c\xe9\x2b\x5f\x49\xbb\xc3\x39\xd4\xe9\x15\x02\x73\x7a\x52\x24\x4b\xa3\x1a\x0c\xfe\xa6\x6c\x8a\x05\x3f\xfa\xc0\x8a\x05\x16\xf4\x34\xb0\xfe\xd8\x49\xd4\xfe\x9d\x06\xf2\xbe\x10\x97\x4a\xb0\x44\x01\xf6\x79\x78\x42\x8e\x8e\x3a\x2e\x5b\x8d\x25\x2d\xe8\xb0\x56\x0d\x3e\xb0\x9d\x35\xda\x43\xc7\x9c\x20\x3f\x3f\xe8\xfe\x64\x28\x4e\x03\xf4\x24\x17\xd1\x4d\x68\x2e\x23\x9d\xc4\x80\x24\xc8\x2a\x27\x66\xeb\x03\x6a\xc5\xf7\x24\x6d\x66\x10\xcb\x1a\x18\xe2\x3a\xe2\x83\x6d\x0c\x78\x87\xee\x85\xa0\xc7\x47\x3e\xd8\x1a\x9e\x40\x04\x71\xe5\xa5\xe0\x7c\x5c\x56\xe0\xad\xf1\x99\x5e\x6d\xe2\x13\xdc\x68\x2c\x35\xbc\x9a\xf2\x86\xe6\x61\xd9\x90\x17\x16\x1f\xa7\x59\x15\x24\x78\x3f\x35\x1e\x93\xbf\x3a\xa7\xde\xbf\xe1\x8f\x7f\x2d\xe1\x20\x72\x1a\x91\x5f\xf6\x31\x00\x0b\x50\xe0\x1e\xd8\xb9\x78\xf7\x09\xf9\xb7\xa3\xe3\x08\xb3\xc1\x09\x29\xa2\x38\xd8\xb1\x00\x74\x89\xb2\x5c\xd5\x22\x29\x99\x42\xd3\xfc\x81\x14\x00\x3d\xe4\x28\x25\x04\xcd\xba\x0f\xa5\x83\x70\x93\x6c\xea\x47\x0a\x14\xab\x04\xa9\x50\x45\x26\xb4\x21\x78\xff\x12\xc9\x7f\x66\x15\x81\xfb\x32\x67\x5e\xe1\x15\xdd\xb3\x79\x1a\xb8\x11\xc2\x82\x25\x3b\x54\x3f\xdd\xf2\x4a\x2d\x4f\xfe\xe3\xbb\xdf\x1e\x15\xb1\x89\x1d\xa1\x92\xd7\x6b\x50\xb7\x69\x0d\x09\x28\x25\xc6\x9e\x6e\xda\x7a\x88\x11\x92\x67\xac\xe6\xab\x09\x39\xfa\xe6\xa8\xb3\xd6\x55\xb6\x50\x1f\xe1\xaa\xb7\x43\x6b\x9a\xfa\x24\xbb\xa4\x5e\x1d\xc7\x37\x08\x75\xbd\xf3\xba\x7f\xfb\x1f\x3f\xfc\x23\xd6\x0d\x77\xfc\x6d\xd6\x6c\x64\x8d\x2f\x5f\xef\x18\x20\xdc\xd3\x5a\x9f\x76\xaf\x15\xa0\xa0\x69\x44\x18\x58\xa4\x61\x6a\x2b\xda\x0f\x64\xad\x81\x42\xc9\x40\xcc\x77\x6e\x62\xc0\xcd\x23\xc4\x8a\xd3\xfc\x90\x76\x4e\x0a\xf1\x10\xcf\xcb\xd4\xb1\xec\x40\x12\x9f\x13\xe7\xfe\xbb\xc4\x19\x0d\x8e\xc9\xc9\x09\x39\x52\x4c\xaa\x86\xa9\xa3\xf4\xbd\x5b\x80\xa2\x4d\x5b\x5b\x54\xfa\x11\x3d\x76\x1d\x84\xfd\x37\xde\xa6\xad\x93\x8b\xc1\x3f\xd0\xc5\x2a\xd6\xc0\xfc\x41\xd9\xa2\x35\xa1\x1b\x05\xa6\x50\xbc\x06\xe2\xd7\xbb\xb6\x1b\xa4\x90\xc7\x57\x31\x62\xdb\xb0\x56\xe3\x76\xcd\xda\xb9\x68\x57\x41\xce\xc5\xa8\xde\xf9\x4a\x54\x7c\xbe\x83\x2e\x16\xca\x0d\x6d\xb9\xd8\x48\x42\xf5\xd0\x2a\xae\x1f\x37\x84\x92\xf5\x68\x3e\x8b\x6b\x86\x3f\x20\xe9\x03\x61\x5c\x44\xfc\xe6\x17\x4d\xe3\x58\x06\x12\x6d\x68\xa6\x9e\x00\x7c\x65\x52\x46\x45\x74\x64\xeb\x74\x4a\x53\xa8\xd3\x97\xb2\xab\xbc\x72\x69\xbe\xb7\x5e\x43\xb9\xa2\xad\x72\x25\x3d\x03\x70\x21\xe4\x30\x7d\xae\x15\x35\x27\xe4\x34\x04\xbb\x32\xf5\x65\x5d\x58\xbc\xe2\xaa\x66\xb6\x1e\x1f\x6f\x49\x2a\x9e\x96\xff\xd8\x47\xba\x5a\x6b\x75\xe3\x13\x04\x6f\xb1\x96\x18\x6b\xc2\xd1\x9f\xd8\x0d\x6f\xc8\xd9\xa6\xa5\x8d\x3a\x1a\xba\xc8\xc4\x09\x39\xfa\xff\xc9\x9c\x31\x75\xf4\x79\x3f\x74\xfb\x37\x98\xb2\x19\xdd\x48\x46\xb6\x50\x4b\x00\xf3\xa0\x85\x03\xd8\x77\x54\x3f\x7c\xfb\x7f\x02\xfa\xec\xc8\xa3\x1b\x27\x12\x76\x3b\x14\x64\xd7\x24\xe5\xc2\x02\x7e\x87\x07\x1e\xab\x4e\x6e\xc6\xff\x7e\x3e\xb6\x4f\xa5\xf3\x97\xd2\xa6\x74\x6b\x38\x6a\xd4\x04\x32\x4f\xb2\xad\xc9\x2a\x98\x8c\x63\xff\x95\xbf\x15\x6c\xd8\x16\xde\xd4\x9b\xae\x46\x84\xd8\x93\x26\xfc\xe2\x2c\xac\x0e\xc8\xa1\x0e\x01\xe8\x3c\x74\x41\x79\x9c\x8c\x21\xac\x8b\xfb\xc6\x3e\xf0\x2f\x7c\xd9\x99\x8d\xda\x55\x9d\x43\x04\xe0\x7b\xda\x78\xb6\x43\x52\x5a\x69\xba\x84\xab\xa0\xaa\x2d\xe6\x3a\x3f\xa0\xb2\xed\xda\xd5\x42\x05\x44\xbd\xf7\x98\x2a\xeb\x87\xba\x51\x99\xf3\x8f\xc9\x35\xd3\xac\x86\xb6\xbc\xde\x11\xd6\xd0\x69\xcd\x2a\x44\x63\xf1\x81\xe1\xda\x96\xd9\x9f\x32\x28\x4d\x3f\xe7\x75\x1d\xa5\xf6\x3b\xa4\x34\xc8\xda\xd4\x24\xdd\xac\xa3\x04\x2b\xe3\xe4\xd0\x28\x7c\x92\xa7\x4f\xb9\xc4\x9b\x01\x73\x58\xe3\x9e\x22\xe3\x34\x6d\xdc\x1b\xb9\x75\x5c\xf0\x36\xd1\x3a\xe2\x29\x64\x87\x01\xe7\x03\x11\x9b\x08\x36\x4b\x12\xed\xa6\xe4\xee\xac\xe2\xc1\x00\xeb\xe8\x6a\x6d\xa8\xbe\xbb\x82\xad\xaf\xcb\x60\xb2\x4c\x24\x39\x50\xe3\x83\x61\x20\x8e\x70\x9a\x76\x8a\x6e\x4a\xe6\x1f\x45\x51\x21\xd1\x35\x3e\x17\xb8\x3c\x54\x2e\x8f\x98\xfc\x15\xd4\xcb\x37\xd7\x43\xc4\xd9\xc3\xde\x86\x6e\xb5\x8c\xed\x38\x70\xc2\xe0\x6f\xc1\xda\xd1\x9d\xa4\xf7\x0a\x14\x2a\x9f\x10\x73\x1f\x07\x8c\xb7\xd7\x14\x86\x8f\xca\x34\xc7\x2c\xef\x8a\x25\x65\xb4\x83\xad\xdc\xc3\xe4\xc2\xd9\x10\xcf\xe3\x34\xba\x7c\xbe\x6f\x0f\x1f\x2b\x4c\xf7\xb3\x2e\xcc\x21\xf2\x25\xdc\xeb\xaa\xab\xd2\x77\x37\xef\x4a\x18\xec\x15\x53\xa8\xf4\x15\x38\xdc\x15\x53\x96\xc1\x19\x45\x31\xec\x30\x74\x39\x8f\x9d\x2f\x1d\x6b\xf7\xa3\xe9\x7e\x3f\xb3\x8b\x88\x06\x4c\x40\xc5\x75\x42\x6a\x5f\xc3\xe9\x9e\x3c\x7a\x68\xe6\x70\x5b\x56\x47\xb0\xac\x0a\x52\xb5\xd5\xe1\x5c\xfa\x53\xcd\x5b\x4c\xc5\xff\x88\x78\xa3\x83\xe2\x78\xb3\xf0\x79\x54\xb1\x86\x8a\x66\x89\x33\x7d\x8f\xaf\x98\x5a\x8a\x4a\x12\xd1\xf4\xd4\xac\x0c\x08\xde\xa0\xb5\x23\x01\xec\x4e\x6c\xc8\x96\x66\x95\xe7\x17\x4c\x25\x73\xdf\x77\x3c\x4e\xe3\x95\xda\x41\x9c\x25\xce\x0c\x8c\x66\xb8\x54\xa2\xb3\x6b\x62\x1f\xd7\x42\xee\xa9\xfe\x65\x71\x9c\xe4\x8e\x9e\x40\x42\xe6\xbb\x67\x90\x36\x65\x82\x70\x18\xac\xf0\x6d\xcb\x7c\x46\xa5\x87\xd2\xf4\xd1\xe1\xa7\x94\x2a\x7f\xcc\xb0\x19\x15\x7b\x32\x94\xc5\x55\xda\x4f\x4b\x6f\x7f\xfd\xe6\xaf\x51\x1e\x0f\xac\xda\x9a\x40\x32\xa5\x0d\xc0\x89\x9d\x26\x66\x32\xd0\x0f\xce\x63\x1d\x93\xb4\x54\xb4\x55\x97\xfa\x38\x40\xbe\x03\xd0\xe1\x80\xff\xe1\x39\xb4\x79\x10\x20\x13\xbb\xe1\x37\x61\xea\xf2\xf1\xd8\xe5\xdd\xd5\xf7\x0e\x7a\xb2\xc8\x8a\xd1\x06\x9f\x97\x53\x95\x96\x5c\xb1\xb5\xcf\x79\x44\x24\x50\x99\x16\x5f\xfa\x23\x8b\x8c\x20\x1e\xc2\xba\x0f\xea\x64\x89\x2c\x5e\xf5\xa0\x47\x3c\x7d\xd1\x54\x25\x7c\xe0\x65\xa6\xb5\x0e\xbc\xe9\x44\xc3\xd2\x9e\x09\xca\x62\x85\xa5\x38\xd1\x90\x76\x23\x3e\x18\x70\xe7\xf8\xfb\x7e\xe9\xd2\x2d\xf0\x4a\xcf\x94\x55\x83\x86\x6d\x9f\x87\xfd\x0f\x63\xbb\xf1\x83\xdd\xb8\x69\xbf\x40\x10\x94\x94\x31\x42\x80\x95\x0f\xe0\x16\x74\x3f\xbf\xa2\xeb\x58\xc3\xcd\x48\xc3\x0a\x6d\xb6\x58\x5a\x54\x65\xc5\x03\xca\xd3\x17\xa4\x33\x01\x25\xd5\x4e\x27\x4b\x74\x93\xd6\xd1\x92\xf4\x86\x3d\xf9\x43\x56\x45\x2b\xb8\xa4\xe3\x9f\x06\xc7\x43\xa2\xc4\x6d\x0b\x6c\x25\x27\xb2\x50\x7a\x87\xe8\x89\x48\xb2\x5d\xf2\x59\xb8\xdc\x30\xa9\xc3\x94\xd5\xa2\x59\xc8\x6e\x4e\x1e\x09\x49\xf3\xc2\x9d\x71\x79\x7e\xdd\xa5\x7d\xf6\x95\x75\xb9\xc5\x74\x62\x98\xbd\xf7\xd6\xad\x4a\xfe\x95\x95\x84\x2f\xa8\x3a\xec\xf8\x43\x4f\xf9\xa3\xbe\xe2\x2e\x59\xba\xb0\x75\x6f\x69\xf5\xb8\x94\x1b\xda\x4f\x7e\x81\x62\x6e\xe4\x3e\x0a\xba\x25\xf3\xee\xaf\x18\x35\x47\x59\xef\x90\x52\x51\xc5\x2a\x51\xe5\x93\x92\x9e\xed\x54\xfb\x08\x8e\x4f\x9c\xe0\xac\xcb\xce\x14\x30\x92\x82\xb5\x29\x41\xb0\x43\xd2\x97\x2b\x25\xc5\xea\x50\xe1\xdf\x3d\xd9\xa9\x0e\xb4\xf8\x04\x08\x3b\xd4\xee\x13\xee\xb5\x5e\xa3\xb5\xce\xba\x89\x5b\x4b\xd0\x1e\x43\xd0\x3f\xf3\x49\xb0\xc6\xf4\xe4\x40\x94\x11\x84\x7e\x53\x87\x9e\xdc\x80\x55\x22\xf1\x4b\xb6\x45\x94\xc4\x04\xbe\x9f\x0c\xe3\xcd\xb2\x60\x20\xfe\xd9\x5a\x6b\x0b\x2b\x79\xf2\xc8\xdc\x6e\xa6\x75\xa7\xd9\xda\x16\x1c\x80\x1a\x3f\x8d\x62\xed\x9c\x5a\x13\xf5\x46\xb2\x56\x1a\xa5\x46\x2a\x43\x96\x86\x07\x07\x91\xd6\xd4\x9a\x93\x41\x7b\xaa\x6b\xb1\x25\x42\x2d\x21\x5d\x9d\x20\xa6\x0c\x95\xbb\xec\x79\xe3\x08\x3c\x28\x56\x45\x2e\x14\xa1\xb5\x14\xd6\x1a\x3e\x17\x2d\x69\x19\xad\xac\x98\x6a\x44\xd4\x8b\x33\x19\x16\x33\x33\x67\x3a\x80\x93\x1b\xb4\xfd\x92\xca\x61\xee\x49\xf5\x1f\x4c\x40\x15\x55\xce\xca\xa3\xcc\xa3\x30\xac\xa8\xce\xd8\x59\xd8\x55\xf6\x47\xa8\xe7\x20\x16\x9a\x71\xfa\xca\x29\x3f\xfc\xee\x7d\x87\x66\x75\x79\x7e\x3d\xf0\x19\x36\xb5\x5a\x55\x9a\x63\x47\x67\x53\xac\x38\xee\xef\x7c\x2b\xe7\xd7\x69\xe2\x1e\x9f\xe4\xab\x65\x72\x53\x5b\xab\x44\xc3\xeb\x21\x12\x4d\x65\xf9\x0f\x92\x1e\xab\xfc\x05\x9d\x02\x92\x4b\xb1\xa9\xa1\x72\x2e\x68\x1c\xe0\x04\x47\xd2\xa3\xed\x62\xb3\x32\xf9\x10\x41\x07\x4d\x93\x8d\xc1\x42\x84\x4c\xb5\x47\xfd\x37\x30\x13\x3b\x01\xfd\xf0\x98\xfc\xcf\xff\xd8\xaf\x9e\x42\x42\xcd\x13\xc2\xab\xe3\x09\xc9\xfa\xe9\xbf\x44\x97\x4c\x25\x8c\x54\x1e\xc9\x97\xa8\xcf\x0e\x6f\x66\xa2\x6d\xd9\xac\x53\xe1\x4c\x0f\x5d\x70\x7a\x38\x1a\x20\x42\xd7\x10\xbb\x61\xed\x0e\x4e\x1f\xd9\x2e\x21\x02\x5a\x42\x5a\x57\xe7\xed\x01\x71\x5a\xa2\x19\xa5\x31\xa7\xc9\xf0\x57\x90\xae\x69\x43\x17\xcc\x7c\x7f\x79\x7e\x7d\xf5\x80\x74\xb8\x7b\xc2\xe7\x36\x1d\xcf\x40\xf2\x74\xb1\xee\x01\x49\xfe\x93\x7b\x22\x92\xff\x94\x03\xde\xf7\x48\x84\x7c\x8a\xbc\x4a\x41\x5c\xa2\xcf\x1b\x3b\x13\xcd\x5c\xb4\x2b\x34\x0b\xeb\x33\x17\xf6\xb8\x3c\xbf\x4e\xd1\xbb\x5b\x33\x63\xee\xb0\xa5\xf6\x2e\xce\x12\x9b\x93\x2d\xa8\x25\xb6\x0d\xab\x34\xda\x27\xe4\x0f\x9f\xb0\x71\x21\x77\xee\xe5\xf9\x75\x5a\x2f\xab\x98\xc6\xdc\x41\x23\x4f\x1e\x85\x21\x42\xf1\x55\xa1\xa7\x56\xb5\x74\x4b\x5a\xb6\x12\x37\xa0\xa3\xda\x95\x9a\x1a\xc8\x2c\xe2\xbc\x4d\x45\xb0\x1d\x77\x07\x67\x46\xeb\xba\x53\xdb\x0e\xe5\x19\x3b\x56\x51\x89\x88\x53\x91\x82\x39\xd2\x16\x8f\xc4\xa9\x55\xa5\x09\x75\x8c\xda\x5a\x71\xa5\xc8\x4a\xd1\x82\xaf\x3f\xf9\x5a\xd8\x76\x6e\x79\x76\x40\xfb\xcb\x20\x9c\xbe\xaf\x21\x5f\x1c\x20\xb7\xe5\x3e\xc3\xd3\xde\xcc\xd1\x1e\x33\x5b\xb2\xd9\x07\xc2\xe7\xa4\x50\x1e\x0b\xec\xa4\x73\x65\xdd\xf3\x31\x03\xf6\x93\x88\x65\x12\x3e\xdf\x1b\xe7\xdb\xcc\x55\xc9\x65\x6d\xc4\x18\xc3\x95\x2c\xfc\x49\x90\x49\x16\xe7\x98\x79\xab\xd3\x25\xbe\x85\x6d\x42\xb9\x70\x5e\x24\x9f\xdc\x59\x01\x9b\xf0\xe4\x51\x42\xb1\x23\xdc\x71\x8c\x19\xeb\x5a\x31\x89\xa4\xb0\xae\xe9\xc7\x9e\x0d\xef\xed\xaa\x5d\xca\xa0\x82\x09\xe4\x27\xbb\xe5\x1a\xe3\x30\x47\x28\x5a\x8b\xf2\xa2\x9b\x6a\xfb\x74\x44\xf1\x41\x70\x6e\x71\x46\x79\x19\xc6\x72\x94\x85\x90\xca\xa2\x53\xfc\x53\xa1\xb0\xac\x9d\x92\x03\x27\xc9\x6a\x53\x2b\xbe\xae\x0d\x29\xcb\xfb\x28\x10\xcb\x2b\x39\x21\xa7\x0d\xa1\x6d\x4b\x81\xe9\x69\xf9\x47\x09\x37\xe8\x3e\xed\xa0\x4f\xfa\xd0\xda\x88\xc7\x7b\x5c\xf6\xb1\x4b\x93\xe9\xf9\x8b\x51\xbb\xea\x2e\x81\x1f\x89\x4b\xc1\xce\x4a\x2f\xf4\xdc\xee\x65\x9f\xf7\xcc\xa0\x40\x8d\x91\xa4\x1d\x54\xae\xf9\x3a\x8c\xbc\xbf\x3a\x6b\xd8\x2d\x93\x87\x14\x6b\xd1\xce\xdb\x8a\xcd\x62\x69\xc4\x20\xdc\x73\xc7\xc2\x61\xd3\xf7\x1d\x3b\x2d\xe8\xf2\x4a\x1f\x04\xdd\x3f\x67\x07\xc9\x64\x3b\xaa\xba\x16\x99\x22\xaf\x8e\xfb\x22\x5a\x0e\x3f\x23\xb2\x7c\x48\x92\xa9\x75\x1c\x17\x2b\xff\x2b\xfa\x01\x74\x1e\xc3\x08\x34\xa6\x68\x55\x85\x17\x97\x07\x15\x2a\xee\x7d\xc7\x04\x4f\x89\x41\x85\xbd\xb8\xf0\x92\x32\xc3\xb2\x2a\xe7\x31\x7d\x54\x79\x90\xe8\x9f\x6c\x53\x46\x8d\x46\x57\x0a\xe6\x80\x8c\x15\x18\x80\xb5\x1e\x9b\xa9\xae\xe8\x07\x46\xe4\xa6\xcd\x24\x65\xae\xac\x52\x66\x44\xcb\xdc\x69\x10\xb1\x6c\x3b\xc4\x43\xf2\x87\x40\x96\xcf\x38\xe1\x8f\x26\x6d\x3c\x34\xff\x56\x92\xa4\x56\x01\xa6\xee\x87\x7a\x17\xc8\x66\x33\x00\xa7\x55\xe5\x6c\x0d\xe6\xd2\x36\x61\x02\xf9\x96\x59\x88\xa2\xae\xae\xcb\x57\xcb\x3b\x5e\xbd\x77\xb3\xcf\xc6\x7a\xdd\xd4\x3b\x93\x2d\xdd\xd1\x11\x26\x4d\xe7\xf3\x54\x14\xca\xf0\x07\xea\x21\x6d\xac\x5c\xfc\xad\x2c\xc6\x52\xf0\x79\xe9\x06\x31\x9e\xa6\xc2\x79\x84\xd9\x58\x2d\x4f\xdf\x47\xfa\x26\x52\xa2\xe3\x1e\x0a\x7b\xe6\x37\xb4\x49\xc3\x8e\x95\x13\x81\x6b\x89\xba\x4a\x25\xa1\x23\x23\x6e\xc5\x9a\x85\x49\xf2\xee\x30\xdb\x77\x57\x9d\x25\x27\x30\xaf\xb6\x4d\x4d\x29\x74\xd4\xc0\x52\x0b\x9b\xc1\xbc\x24\x8c\xce\x96\xf6\x8e\x60\x15\x4a\xd7\xa8\xcd\x73\x59\xe2\x6f\x5f\xae\x19\x17\x24\x36\x70\xcf\x05\x57\xa1\x35\x07\x24\xc7\x3d\xa3\x3d\x88\xb2\x37\xf4\x0c\x59\x3e\x40\xc3\xce\x1d\xf1\x05\x8e\x0e\x5d\x33\xf6\x11\xe2\x04\x51\x92\xfa\x8d\x34\x4f\xff\xc0\xc0\xe4\xd8\x11\xe3\x6f\xf2\xc8\x26\xac\xdc\xcc\xb1\xc8\xcc\x3f\xb0\x5d\xc6\xcd\xf7\xd3\x53\xc7\xa5\x63\xa9\x27\xe1\xee\x31\xed\x68\x31\xd3\xd1\x0c\x12\x25\xaf\x90\x6f\x93\x6a\xd3\x62\x48\x23\x6f\x88\x64\x33\x61\x83\x46\x75\x1f\x19\x6b\x0e\xae\x48\x08\xc6\xe6\x50\xe5\x3a\x67\x74\xa2\x7b\x07\x66\x89\xa1\x6b\x39\x21\x7f\x3e\xe7\x1f\x7f\xf8\x5d\xa1\x46\xc7\x57\x92\x72\x79\x75\x9c\x9b\x0b\x32\xf1\x56\x4f\xf8\x8b\x45\xdb\xf1\x98\xac\xa9\x94\xa1\xf6\x83\x8c\xb4\x46\x8d\x21\x8f\x97\x21\xd6\xdb\x6b\xc2\x27\x20\x24\xc4\xf8\x62\xb9\xad\x0d\x3b\xa5\xb3\x0f\x5f\xc0\x80\x13\x6d\x45\xcf\x41\xeb\x38\xcd\x5c\x4d\x1c\x7f\x0e\x37\xc4\xfe\x2b\x59\xd4\x6d\xf8\xd2\xcb\x80\xc0\xc2\x83\x6d\x48\x4d\x76\xd3\x5a\x08\x4a\xdf\x93\x78\x76\x65\x51\x1c\x03\x92\xc4\x73\x6a\xa3\xc3\xcc\x53\x48\x56\x75\x93\xa2\x9b\x60\x2c\x99\x1e\x44\x92\x7d\xc2\x21\x1e\xaa\x25\x5b\xdd\x4a\x08\x74\x65\x9c\xdd\x8d\x53\xda\x88\xb0\x47\x97\x7d\x61\xd3\xf4\x1c\x6b\xa5\x34\xd7\x00\x96\x6a\xda\xc5\x31\x5e\x09\x8d\x60\x1b\x7d\x0b\xb8\x02\xb3\xd3\x8d\xe4\x8d\xbe\x3f\x6b\xb1\xe0\x33\x42\x5b\xa8\x24\x66\x80\xb1\x9a\x2f\x38\x66\x68\xca\xf0\x8d\x4d\x42\x9b\xe4\xaf\xec\xa8\xbf\x29\x1e\xf5\x18\xa3\x3e\xb2\x48\x2d\x19\x58\x83\x35\x75\x67\x07\x3a\x8c\xa0\xd2\x3f\xba\xf8\x12\x67\x61\xba\x93\x28\xd6\xb5\xcb\x31\x2f\xb8\xc3\xb9\xff\x73\x44\x83\xa5\x93\x7f\x9b\xf3\x8d\xf3\x33\x27\x1c\xc5\xc2\x1d\xa1\x2d\x33\xe4\x56\xe7\x6f\x6f\x82\x49\x24\x7a\xe7\xed\xce\xb2\x1d\xf9\xcb\x8e\x73\x40\xf1\x61\xed\x1d\xd2\x73\x78\x0d\x92\xad\xf7\xc3\x7c\x94\x56\xdb\x46\x3a\xe4\xb2\xac\xea\x84\xd3\xf5\x3d\x02\x7c\x25\xa6\xaf\x5b\x58\x25\x34\x0b\x08\xeb\x61\xa1\x23\x08\xa4\x32\x53\x67\xa8\xf7\xb0\x06\x75\x3f\x82\xe5\xf5\x6f\x0d\x1e\xee\x90\x50\xf7\xb9\x1b\x13\xb2\x2e\xf9\x1c\xa3\xdf\x6e\xe3\x70\x4c\x8e\xf1\xc1\x4e\xc7\x7d\x84\x72\x7b\xa6\x47\x6e\xc7\xf8\xb2\xbe\xa4\xc4\xfb\xcc\xc6\xf4\xb0\xbf\x59\x60\x56\x72\x8f\xe9\xe2\x77\x74\xc9\xd2\x2d\x49\x1b\x50\x4b\x88\x17\x0e\xdf\x7d\xda\x87\x0f\x05\x8b\x2c\x81\x0c\xcc\xd9\xe6\x9b\x23\xf5\x6c\x77\x71\xe6\x8e\x55\xd6\x2f\x12\x7d\x0f\x3a\x75\xa8\x32\xf8\x60\xd1\x92\x0e\x02\x95\x6d\x9c\x33\xa6\x8f\xc8\x73\x17\x5f\xd9\x7d\x9b\xec\x9b\xd6\x23\xba\x78\xaa\x35\x48\x5b\xbb\x1f\xa1\xe6\xbb\xc8\x4b\x05\x81\xad\xae\x76\x4c\xb7\xdd\x3e\x8a\x6a\x45\x5f\x02\x78\x80\x5b\x46\x2b\xa2\xb5\xc0\xe8\xb1\x6a\x37\x8f\x28\xf9\x14\x94\x80\x4b\x2d\x8e\x8e\x9c\x8b\xbd\xa1\x81\x85\xb0\xd5\x38\xce\x29\xec\x75\x29\xa0\x18\x82\x66\x84\xa2\xa9\x77\xe1\xfb\x2a\xb3\x1c\x78\xbc\x46\xab\x24\x78\xe2\xf2\xfc\x7a\x18\xc2\xd1\xc4\x47\x1b\x4d\x29\xf0\x5c\x34\x4e\xa0\x31\x22\x6f\x6a\x46\x25\x04\xb4\x45\x6e\x55\x0d\x3c\x84\x02\x03\xd9\x73\xe3\x2a\xee\x93\xbe\xb0\xd9\xc3\x9c\xbb\x65\xb2\x19\x7c\x53\xb8\xd4\xa9\x2c\x83\xe8\x0e\x28\xbd\xa2\x73\x46\xb6\xf8\x3c\xc3\x38\x46\xd3\x20\xe9\x06\x77\x14\x14\x3a\xcb\x0f\x80\x6d\x84\x70\x4e\x6b\x29\x48\x23\xb6\x64\x4d\x5b\xe5\x10\x9d\xf9\x13\x93\xcc\x7f\xde\x67\xff\xcb\x53\x5a\xe3\x1f\x3e\x66\x34\x57\x31\xc9\x5b\x34\x7c\x0c\x5d\x44\x63\xc3\x6b\xcb\xb8\xb4\x3a\xc7\x2a\x92\x3d\xe0\xe8\xde\x67\x8d\xe7\x03\xf6\x3a\xf5\xc8\xf3\xb9\xf5\x4a\xbd\x65\x73\x72\x42\x6e\xb5\xe9\xdd\xcf\x24\x11\x5e\x8f\xc9\xb8\x94\x68\xa2\xc0\x8b\x9c\x0f\xfd\x30\x76\x74\x28\xf3\xc1\x5c\x10\x4d\x15\x47\xd8\xc3\x8d\xc8\xd5\x28\x52\x54\xb4\x4c\xa3\xfb\x61\x30\x32\x7a\x2e\x1d\x03\x8b\xc2\xd3\xe2\x7a\x97\x11\x03\x10\x2d\x9c\x7f\x43\x55\x92\x41\xf1\x4c\xfd\xed\x1b\x9f\x99\x22\x79\x03\xac\x25\xf2\x5d\x72\x79\xb8\xb8\x61\x7c\xdd\x21\x5a\x33\xb2\x71\x10\x51\x53\xc3\x4b\x48\x16\xa6\xbf\x48\x8d\x28\xf1\xeb\xc8\x22\x17\xf9\x47\xb2\xe0\xbb\x45\x98\x84\x46\x58\x4f\xc1\x9d\x36\x58\x48\x33\x0c\x84\xdf\xc5\xee\xe8\x46\x2d\xf7\xf3\xbc\x84\xac\x35\x48\x48\xbb\x14\xda\xcf\xa3\xc3\x40\x58\x2d\x4b\x6f\x15\x0a\xe7\x82\x74\x49\x14\x31\xa6\xfe\xc2\xd9\xd6\x06\x3e\x24\xf8\x0a\x73\x18\x97\x23\x25\x3e\x17\x84\x62\xf4\x54\x7f\x11\x5e\xf2\x6c\x28\x46\xc8\xd2\x74\x73\x82\xbe\xf2\x3e\xf4\x18\x2c\x04\x9d\x34\x0f\x3a\x60\x19\x1d\xcc\xe4\x62\x4e\x28\x51\x2d\x6d\x24\xc5\x6b\xc1\x29\x3c\x89\xe9\x1f\xad\xd8\xc3\xf8\xe2\xa9\x2d\x8d\xca\xc0\x64\xad\x0f\x29\x6f\x40\x54\x83\x68\x33\xa7\xa0\x3c\x0c\x3b\xbf\xda\xcc\x96\xa4\xe6\x1f\x18\xd9\x6a\x3d\xfc\x8c\xae\x38\x6d\xc8\x4b\x5e\xd7\xb4\xad\xe2\x59\x2c\xc5\x1a\x1f\x12\x44\x7a\x5a\xcb\xe8\xca\x3d\xc1\x66\x8d\xe2\x2d\x23\x33\x8e\xc5\x17\xff\x28\x36\x52\xd9\x48\x35\x12\x1f\xb8\xae\xd2\xad\x56\x68\x8d\x37\xf5\x41\x4c\x67\x3e\xb8\xe8\xd1\xfd\xfc\x59\x70\xe9\xfb\xbd\x47\x35\xbb\x61\xb5\x0b\xd0\x22\x15\x9b\xf3\x26\x88\xdc\xbf\xc7\x19\x58\x78\xc5\xe4\xac\x71\x20\xe5\x30\x33\x79\x5b\xef\x86\xb9\x53\x2c\x2c\x8a\x81\x55\xfa\x7a\x90\xf1\x43\xb4\x20\x88\xca\x28\x6c\x23\xdb\xe9\x35\xf0\x3d\x7d\xad\x2c\xe9\x0d\x8b\x9d\x28\xae\xb3\xe9\x34\xf4\x3a\x35\x9d\x42\x3c\x80\x4d\xc8\x6d\xa1\x85\xf1\x8b\x9e\xbe\xa5\x1d\xed\x01\xc9\xa2\x3e\xb3\xbc\xb4\x07\xbb\xc8\xd3\x70\xd0\x3c\x43\xb0\xf1\x75\x7b\xfa\x59\x30\x75\x5a\xd7\xf8\x5e\xdf\x5d\xe2\xe6\x40\x61\xee\x4c\xde\x58\xb1\x38\x9c\x72\x22\x48\x39\x35\x29\xee\x0b\xf7\x3b\x60\x11\x0a\x18\x9b\x37\x9a\xd1\x9a\x83\x09\x60\xc5\x4a\x33\x67\xfd\xcd\xfb\x7c\x6d\xd9\xcb\xda\x11\xa4\x34\x92\xf9\xb2\xc2\x24\x4e\xd9\xd2\x5c\x20\x76\x7a\xab\x53\x2f\xfb\xbb\x97\xed\xe3\xb1\x0b\xc6\xeb\x7a\xe9\xec\xe3\x22\xfd\x23\x06\x2e\xc9\x94\xe9\x0b\x5f\x32\xda\xce\x96\x66\xdd\x05\xfc\x5d\xc7\x13\x22\xd4\xa6\xc5\x50\xc2\xfe\xcb\x06\x90\x5b\x81\x35\x45\x61\x31\x63\x95\x7b\x88\x97\xbe\xee\x7f\x9a\xe3\xd5\x15\xbe\x8f\x9e\x2b\x3f\x1d\x45\x39\xbe\x3a\xf1\x6b\x2a\xa8\x84\x31\x30\x7d\x28\xb6\x50\x3a\xfe\xdc\x0e\x80\x8c\xe4\x52\x44\x85\x33\xe9\xee\xfc\xe2\xe3\x24\xaa\x9a\x75\x84\xd2\xbb\x5d\xa6\xd0\xb2\x64\x10\x69\xdc\xf1\x07\x37\xc2\xd1\x2b\xb6\x5a\x6b\x89\xf2\xc7\x96\xff\xfc\x73\xcd\x99\x3c\xfa\x1a\xf4\x10\x0d\x6c\xa6\x7e\x6d\x5f\x66\x6a\x1a\xc0\xf6\x4e\x72\xdb\x47\x41\xd8\x2f\xa4\xa3\xd7\x07\x50\x4d\x5a\x04\xc7\x3e\x88\x31\x13\x4a\x32\xb6\x84\x14\x34\x1e\x93\x33\xd1\x7c\x0b\x5e\xbf\x19\x03\xe5\xf1\x86\xb5\xce\x6f\x6f\x24\x60\xd1\x9a\x89\x81\xb3\xfe\x86\xd6\x41\x7a\x53\xa3\xe3\xac\xf7\x3d\x9e\x2f\xaa\xc1\xfa\x47\x47\xa6\xef\x60\x8c\xa0\xb0\x69\x49\x8c\x2b\xaa\x36\x19\x7d\x5f\x19\x25\x20\xa4\x69\x7c\xbb\x61\x95\x16\xef\x5b\xb2\xef\xc3\xe3\xcd\xe4\x32\xa5\xfd\x51\x1f\xfd\x04\xef\xab\x3c\xf9\xb8\xf7\x55\xb7\xe2\x26\xff\xb5\x61\xed\xce\x2e\xc0\x24\x6d\x31\xbc\xd8\xf3\x40\x9f\x70\x86\x43\x5c\x2d\x7a\xde\xe8\x54\x6c\xdc\x0b\xf5\x94\x60\x0c\xc8\xec\xa5\x6f\x38\x5e\x48\x1a\x3e\x34\x32\x7a\xe4\x7a\x52\x92\xf6\x8b\x99\x0d\xbb\x77\x2f\x1c\x72\x10\x3e\x46\xea\x7e\xfd\xe0\x73\xa0\x45\x9b\x0a\x2f\x7c\xfe\x09\x36\xb5\x94\x1e\x21\xde\x9b\x30\xbd\x9b\xdb\x9b\x5b\x1f\x58\xd4\x5d\x0b\xc7\x34\xb9\x82\x8d\x96\x6c\x77\xf5\x29\x94\xd7\x2d\xa2\xdc\x3c\x7e\x0d\x91\x6e\x1e\xd4\x1e\x8c\xf6\x7f\x24\xe2\xd3\xb9\x6a\x28\xc9\x73\xc9\x78\x1f\xe2\x3c\xc6\x6e\x27\xf0\x1f\xbf\xc4\x4e\x48\xff\xd6\x37\xdd\x8b\x8b\x33\xf9\x6c\x97\x9d\x01\x67\xd9\xce\xf6\x82\xb8\x5d\x2d\xdc\x96\xb7\xdf\x93\xcb\xae\x6c\x1f\xb7\xdc\x97\xd3\x82\x69\x3e\x00\xc6\xe7\x5a\xd4\x07\x8b\x9c\x1c\xea\xbb\xc7\x98\xee\x4c\xc6\x80\xc2\x9e\x39\xbc\x0c\x92\x24\x8a\xd6\x7c\xff\xfd\x6f\xdf\x87\x5b\x77\x43\x5b\xdc\x1f\xe9\x7f\x27\x27\xe4\xdd\xfb\x58\xaf\x4d\x7c\x8a\x96\xf7\xda\x1d\xc3\x67\x8d\xee\x7e\x77\xfc\xc8\xc1\xd0\x5f\x5a\x73\x14\xcf\x77\xdc\x48\xbf\x25\x1b\x0b\x32\xba\x93\x13\xdb\x1d\x8e\x67\xd9\xf1\x64\x9e\xfc\xd8\x84\x96\x73\xb1\x69\xaa\xa1\xd3\xf1\x01\xbb\x59\x37\x5c\xbb\x49\x46\x37\xb0\x63\x24\x1c\x98\xf4\xf8\x5a\xe2\x41\xf1\x10\x84\xe3\x86\x17\xc1\xfe\x73\x72\x69\xe6\x5e\x10\x2d\xcc\x4c\x4d\xd5\xfe\x93\x13\xf2\xf8\x6e\x37\x0f\xc2\xeb\xbb\x65\x40\x9b\xb9\x68\xc2\xbc\x23\x10\xec\xc3\x25\x18\xc6\x41\x24\x2c\xf9\x92\x02\xd6\xf7\x15\x59\x5a\x78\x74\xec\x54\x4a\x92\x21\xae\x20\xe3\x62\xa5\xc3\x70\x7f\x7c\xcc\xf3\x30\xd0\x20\x13\xdc\x72\xf9\xc2\xe6\x27\x50\x60\x9e\x0f\xed\xce\xa2\x66\xd4\x04\x53\xda\xe4\x1c\xe0\xf5\xa6\x1a\x47\x63\x4c\x69\x27\x56\x53\xd1\x29\xfa\x0f\xe0\x25\xe3\x96\x4b\x06\xb9\xd9\x1a\x13\x2b\x69\x9e\x83\x1e\xeb\x05\xb4\x38\xee\xa8\x13\xc6\xc5\x3c\xe8\x12\xf4\x18\x6a\x7e\x24\x15\xaa\x22\x2b\x08\xa0\xf1\x9b\x3e\xec\x04\x37\xdd\xf8\xd7\x94\x33\xda\x90\x46\x10\x7d\xef\xb0\x96\x4c\x99\x4d\xd0\x11\x59\xc5\xef\x95\x74\xa2\xa9\xdc\x9b\xba\xfb\xcc\xec\x94\xd9\xa4\xc0\x1b\x9c\xa3\x0d\x58\xb7\x88\xf9\x75\x4a\x04\x83\xfe\x27\xfc\x38\xe0\xd3\x30\xcc\xd4\xe8\x1b\x92\x29\x93\xfb\xd9\x56\xfd\x2a\xca\x93\x85\x00\xd5\x2b\xc6\xec\x9c\x01\x01\xc1\x84\x8d\xd7\x9e\xcb\x2c\x69\x14\x9a\xb2\xb1\xd5\x89\x1d\x1c\x6a\xd1\x99\x75\x1c\x5b\x45\xa7\xef\x4d\x8b\x85\x20\x15\x55\x9b\x62\xb4\xbe\x69\x91\xf3\xb2\x14\xea\x85\x27\x83\x2d\xdd\xc3\x81\xc9\x61\x7a\x13\x97\x57\x4c\xe1\xe3\xa7\xc3\xcf\x66\x89\xda\xdc\xdb\xa7\x91\x9e\x26\x57\xdf\xda\xcf\xc3\xa2\xf5\xc0\x66\x22\x2c\x9c\x12\xc8\x28\x0e\x19\x7b\xca\xe7\x2c\x3d\x62\x78\x48\x93\xe3\xf5\xc6\x98\xb3\x80\x97\xb9\x18\xb8\x5f\x42\x00\xed\x3e\x2d\x20\xe7\x58\xb4\x94\x0f\x8a\xdb\x8c\x8c\x8b\xdb\x33\x11\x90\xc3\xbd\x73\xf0\x20\x9c\x23\xba\x1e\x0b\xc5\x4c\x43\x61\x03\x93\xec\x84\x6f\xbf\x13\x33\xe2\x1e\xdb\x4d\xb8\x6f\x94\xcc\x58\xab\xf7\xca\xf2\x96\x51\x82\xe7\xff\xad\x4c\x12\xd2\xe7\x0b\x45\xeb\x02\x3a\xb2\x81\x13\xfc\x44\x08\x70\x2b\x4f\xaf\xf8\x9e\x92\xb2\x9d\x9c\x34\xd7\x60\xee\xcc\x4a\xdf\xda\xe8\x8c\x66\xb3\x7a\x05\x13\x7f\xc3\xda\x2c\xa9\xa8\x1e\x83\xae\xc0\x5c\x1f\xb1\x4e\x74\xe5\x46\xfd\xba\xd8\xa8\xa1\x30\x84\xd2\x2f\xe8\x79\xde\x28\x13\xde\x78\x07\xd6\xb8\x28\xa5\x09\x0a\xc5\xc3\x83\xf2\xf2\x94\x29\xb7\x37\x3d\x90\xef\xe2\xde\xe6\xda\x7d\xf4\x43\xc2\xf3\x20\xbd\x9b\xa8\x33\x85\x1d\xb3\x64\xfc\x9d\x39\x76\x8e\x27\x39\x81\x94\x13\x85\x60\x22\xeb\xaf\x95\x25\xe4\x4e\x19\x42\x3a\xb2\x83\xf4\xad\x1e\xfe\x53\xf6\xac\x84\x19\x6a\x52\x27\x84\x0c\x7e\xf3\x5e\x96\x0c\x5b\x51\xbe\x90\x03\xdd\x2f\x21\xe8\x83\x9d\x30\xc1\x5c\x07\xc7\x93\x77\x39\xde\xdf\xff\x13\xee\xeb\x9e\x6d\xf5\x9f\xfb\xbd\x49\x7e\x92\xcf\x76\x17\x67\xb1\x29\x2b\x4d\x5b\x04\x6e\x60\xb5\xeb\xbb\x69\xb2\xf4\x5c\xc1\x85\x13\xb2\x81\xdb\x5e\x19\xe5\x14\x4a\xa1\xa5\x23\x5a\xc7\xa0\x94\x13\xeb\x78\x92\xef\xcc\xaf\x7e\xe3\xdf\x85\x98\x78\xff\x30\x21\x00\x88\x30\xc4\xcc\xc8\x10\xc6\x83\x1b\x8f\xe5\x65\x09\xe4\x5f\x0d\x7a\xfb\xc0\xdd\xae\x04\x54\x2e\x88\x20\x28\x2e\x01\x7b\x6d\xee\xfa\x3c\xbb\x43\x61\xbb\x71\xb3\xec\xd7\xf8\x4c\xf3\xa3\x03\xc1\x9b\x2f\x98\x57\x26\x22\x24\x10\x06\x96\xc1\xff\xfa\xc8\x21\x45\xd6\x03\x7f\x85\x6b\x7d\x2f\x59\x60\x21\x8f\x8b\x09\x3d\x05\x71\xf1\x90\x9c\x87\xc1\xe5\x6a\xb8\x46\xf1\xb4\xe9\xdf\x63\x14\xfb\x83\xfa\x20\x6b\x15\xa6\x37\xce\x7f\xed\x4e\xf7\x9e\x24\x35\x29\x67\xca\x0b\x81\x0f\x7b\x80\xa5\x11\x2d\xe5\x9c\xaf\x1a\x9a\xb5\xc9\x3d\x3c\x21\x8f\x27\xe4\xe8\x32\x4e\x69\x06\x96\xc1\x99\xc9\xd8\x63\x5e\x39\xf6\x25\x79\x05\x9a\x0b\xa7\xae\xe9\x30\xdd\xd2\xa8\x71\x83\x45\x6d\x22\x83\xab\xfb\x71\xe5\x4b\x43\x65\x85\xae\x22\xd9\x2e\x4a\xb2\x93\x52\x4a\x5c\x5d\xe1\x15\x5d\x6b\x36\xef\x45\x7a\x5a\x6b\x76\xb2\xb3\x22\xbb\xa5\x98\x8d\xd4\x0c\xdf\xc3\x8a\x22\x1e\x7f\x5a\xb2\xc6\xe4\x3f\x30\x32\x62\x42\x60\x9a\x3c\x11\xe0\x90\x7c\x07\xb4\x6a\x55\x60\xb5\x0c\xc3\x6c\x03\x5e\x01\x06\x8b\x15\x5d\x93\xe9\xce\x3e\x87\x1d\x6a\x55\x70\xc5\x2a\xfd\x15\x46\xf9\x43\x89\xa3\x66\x41\xc4\x3c\x04\x72\x85\x21\x96\x6f\x7c\xa0\x63\x76\x8e\xf4\x1f\x9d\xcd\x98\x94\x03\x1b\x58\x74\x8c\xf4\x1a\x8b\xef\xbe\xa3\xa7\x2a\xa4\xbe\xcf\x25\x34\x06\x2b\xc6\x44\x9b\x45\xb1\x39\x89\x16\x35\xeb\xc4\x8c\xea\xd2\xbc\xa8\x84\x07\x45\x1a\x65\xbc\x59\x8c\xfa\xa7\xbc\x4a\x85\xc0\x09\xb1\x09\x83\x4a\x53\x35\x22\xb9\xbd\xc9\x6d\x4e\xd4\x2c\x1b\xa9\x8c\xa6\xf9\x02\x92\x42\x29\xbe\xd2\x9a\x78\x28\x42\x72\x69\xe5\xb7\x38\x3b\xa3\xf1\xc4\xf0\x45\x13\x3d\xeb\xb1\x37\x49\x9c\x2c\x10\x65\x7d\x8a\x89\x72\x1b\x93\xd3\x0a\xf3\xde\xe2\x76\x7f\xd7\x83\x03\x4c\x7d\x1e\x33\xcb\x9c\x21\x8d\xc7\xe4\x2f\xb4\xe5\x10\x13\x25\xf9\xcf\x61\xc6\x80\x64\xe7\x90\xf9\xc9\x7e\xa4\x27\x97\xb5\x41\xf9\xf7\xbf\x9d\x04\x90\xfe\x95\x6a\xf2\x57\x94\x6a\x32\x53\xfe\x6d\xf6\x7a\xe4\xdb\xe9\x65\x1d\x35\xb7\xc9\xf9\xfd\x8c\x4f\x82\xe9\x27\x97\x1b\xc0\xb5\x77\x5b\x92\xeb\xb1\xab\x86\x47\x71\x0e\x5d\x73\xeb\x4e\xf9\x9c\xdc\x57\x79\x75\x8f\x80\x06\xa2\x8e\x98\xa7\xdf\xfd\xe8\xd2\xf5\xdf\x79\x61\x07\x64\xd4\x2f\x5a\x31\x5c\x78\x28\xb0\x39\x84\xf2\xad\x96\x7b\x7e\xb1\xe4\xc7\x61\xd7\x5b\x5a\x39\x3a\x68\xf8\xcb\xac\x1d\x49\x40\x5d\x76\x59\xbc\x03\x08\xef\xbb\x91\x7b\xd9\x75\x23\x76\x20\x39\x62\xf6\x87\x18\x4f\xad\x71\x50\x60\x4e\xf7\x80\xb5\x26\xf7\xc6\x46\x9a\x7c\x8d\x5c\x86\xd5\x0c\x5b\xee\x6c\x92\x07\x6c\x5d\x67\xce\x68\x27\xb9\x64\xb6\xf6\x2e\x7e\xd7\x93\x33\xfa\xf6\xc0\x0e\xcc\x8f\x8d\x72\x18\x0a\x17\xab\xd2\x20\x87\x91\x20\xb9\x4c\x77\x65\x98\x4a\x7e\x6e\x3f\x8a\x8c\xbf\x44\x9d\x9d\x94\xd2\x6f\xc5\x2d\xe7\xc1\xee\x48\xf3\x6b\x4c\xbb\x1a\xc9\x11\x3b\x85\x11\x82\x17\x9f\xf6\x19\x68\x5e\xf7\xd1\x55\x5b\x0c\x06\xed\xaa\x0b\xc9\xe7\xe4\x21\xf2\xd0\xae\xa5\x8d\xac\xe7\xe5\x4f\x6c\x37\xc8\x26\x56\x4a\xb1\xb7\x07\x5e\x58\x21\x35\x83\x37\x34\x8c\xfb\x71\xe1\x4d\xb0\x39\xe5\xae\x45\xd8\xe0\x73\x17\x3b\xe8\x9c\xc7\xbb\x6c\xec\xf7\x5d\xcf\xf5\x68\x55\x5d\x8b\x43\xb9\x84\x93\xeb\x24\xf9\xae\x5b\xfe\xbf\x23\xb3\xf8\xd7\xd9\x1f\xf7\x1d\xd5\xfe\x0d\xfb\xa2\xc3\xfa\x8b\x1f\xd2\xaf\x7a\x4a\xed\x03\x74\xc8\x16\xac\x95\xfd\x39\xd7\x02\xb8\x0f\x42\x73\x5d\x1f\x1e\x75\x9f\xb3\x5b\x1f\x30\x27\xb0\xdd\xe6\x50\x46\xd2\x5c\x70\x40\x43\x5a\xfb\x57\x3d\x88\x5f\x6f\x3d\x88\x43\x2c\x5b\x0f\xcb\xa2\x5f\x74\x2a\xd0\x63\x44\x26\xe4\x28\xe4\xdd\x96\xcd\x1a\x76\x63\x45\x04\x14\x56\x1f\xa6\xb6\xaf\x82\xc9\x2a\x1b\x33\xaa\x00\x9e\x17\x75\x28\x65\x60\x0d\x55\xd9\x8a\x55\xd7\xc2\xbc\xf0\x44\xe0\x5f\xab\x3a\x44\x77\x32\xe5\x6c\x51\xe4\x24\x2d\xbb\xde\x7f\x8e\x3b\xda\x27\x9a\x57\x17\xd4\x5c\xcd\xfb\x2e\x37\x03\x5a\x3b\xf1\x7d\xbd\x85\x33\xe0\xec\x6b\x3c\x78\x72\x47\x6b\x5b\x5b\x36\x4a\x97\x7e\xef\xa3\x3e\x28\x6e\x07\xd4\xaf\x33\xb3\x08\x4a\x56\x26\xd5\xc3\x00\x65\x69\x25\xa4\xc7\xf1\xcf\xee\x59\x47\x8c\x71\xdc\x13\x1b\x16\x5b\xfc\x29\x4d\xa7\xed\x36\xc8\xd5\xf3\xfc\x2e\xff\xcd\x56\xcb\x4b\x7e\x82\xd8\x8a\xab\xcd\x7a\x5d\xef\x60\x8a\x11\xa3\xdd\xd8\x2a\x51\xf1\xcb\xbf\x34\xa7\x64\xe4\xe4\xc0\xca\x43\xbe\x43\x58\x74\x28\x7c\x7f\x87\x19\x24\xc7\x06\xd6\x38\x4d\xc4\x7e\x1c\xcd\xc4\x25\xbb\x35\xae\xa6\x19\x5d\x53\xcc\xaa\xe5\xa2\x85\x0b\x89\x3d\xa2\x79\xd5\xbc\xf9\xf0\xe4\x9b\x4f\xe5\x84\xef\x9f\x7f\x3f\x18\x23\xe8\x6c\x22\x43\xa2\x68\xbb\x60\xea\xe0\xb9\xbe\x31\xcf\x46\xe0\x04\xb6\x07\xe2\x2b\xab\xcf\x14\x55\x65\x72\x23\x9b\x83\x00\x3f\x06\xa3\x02\xbf\x7a\x6e\x68\xd1\x93\x67\xe5\x5e\x39\x7e\x7e\xf0\xff\x02\x00\x00\xff\xff\x61\x7c\x8a\xc6\x9e\x1b\x01\x00" func topshotCdcBytes() ([]byte, error) { return bindataRead( @@ -133,11 +133,11 @@ func topshotCdc() (*asset, error) { } info := bindataFileInfo{name: "TopShot.cdc", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xaa, 0x2f, 0x92, 0x1b, 0xa4, 0xb3, 0xd0, 0x3e, 0x31, 0x30, 0x1a, 0xe0, 0x1a, 0x45, 0x7d, 0xcb, 0x84, 0xaa, 0x26, 0xee, 0x99, 0x8b, 0x75, 0x70, 0xd7, 0x47, 0x15, 0xfc, 0x2c, 0x43, 0xdd, 0x1c}} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf3, 0xcc, 0xf8, 0x86, 0x90, 0x2e, 0x36, 0x1b, 0xde, 0x9c, 0x2f, 0x88, 0xda, 0xa1, 0x7e, 0x3a, 0xc9, 0xe1, 0xe1, 0x12, 0x4e, 0x2, 0x8e, 0x7, 0xe7, 0x24, 0xb7, 0x51, 0x5e, 0x4a, 0x20, 0xe2}} return a, nil } -var _topshotlockingCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x58\x4b\x6f\x1b\x37\x10\xbe\xeb\x57\x8c\x7d\x28\x76\x51\x5b\xea\xa1\xe8\x41\x88\xda\x38\xb1\x85\x1a\x4d\x95\x20\x96\x4f\x41\x80\x50\xbb\xb3\x12\xa1\x5d\x52\x25\xb9\xb2\x55\xc7\xff\xbd\x18\x3e\xf6\xa5\x95\x64\x14\x8e\x0f\x4e\x2c\x0e\xe7\xf1\xcd\x7c\x33\x43\xf1\x62\x23\x95\x81\x99\x14\xd3\x52\x2c\xf9\x22\xc7\xb9\x5c\xa3\x80\x4c\xc9\x02\x7e\x79\x9c\x4d\xe7\x57\xd7\xd7\x9f\x6f\xee\xee\x06\x83\x4d\xb9\x80\x44\x0a\xa3\x58\x62\x60\x2e\x37\x77\x2b\x69\x3e\xc8\x64\xcd\xc5\x12\x9e\x06\x03\x00\x80\xd1\x08\x2e\x5f\xe7\x27\xa8\xeb\xd8\xa9\xec\xdf\x6c\x51\x18\xfd\xda\x46\x83\xbe\x9b\x82\x1b\x83\x29\x3c\xac\x50\x00\x83\xbf\x65\x81\xc2\x00\xd7\x90\xcb\x64\x8d\xa9\x15\x23\x38\x90\xbc\xf0\xc7\x1f\xec\x51\xc4\xd3\x31\xdc\xdf\x0a\xf3\xdb\xaf\x17\x90\x96\x8a\x19\x2e\xc5\x18\xee\xa7\xfc\x91\x3e\xc1\xc7\x0d\x57\xbb\x39\x2f\x50\x1b\x56\x6c\xc2\x41\x7c\xda\x72\x29\x8e\xd8\xbe\xf7\x87\x0d\xeb\xb5\xca\x6b\x9e\x90\x13\x4c\xed\x40\x66\x3e\x02\x98\x4d\xe7\xba\x83\x31\x88\xcc\x80\x42\x2d\x4b\x95\x20\xf0\x94\xac\x9a\x15\xc2\x1a\x77\x41\xd2\x5f\x2e\x85\xe1\x39\x98\x10\x45\x10\xdc\xb2\xbc\x44\x2b\xca\x92\x04\xb5\x8e\x34\xe6\x59\x0c\x5b\xa6\xfc\x45\x32\x3a\x86\x27\xe7\x60\x88\xfd\xf9\x80\xa3\x24\x0c\x72\x8b\x4a\xf1\x34\x45\x01\x46\xc2\x02\xdb\x30\xec\x99\x71\xa7\x6c\x91\x63\xc7\xd4\x3b\x29\xf3\x67\xb2\x71\x24\xc6\xe0\x06\xd7\x2e\x95\xf0\x19\x4d\xa9\x84\x06\x06\x0b\x29\x73\x64\x02\xb8\x48\x79\xc2\x0c\x55\x22\xcf\x80\x09\xab\x0e\x1f\xb9\x36\x1a\xb8\xb0\x9a\xea\x48\x21\xad\xe2\xf1\xaa\x83\x85\x4f\x4c\xb1\x02\x0d\x2a\x3d\x26\x0d\x9f\x31\x1b\xc3\x15\x28\xcc\x50\xa1\x48\x90\x42\x25\x55\xb3\xe9\xbc\xf2\xb5\xa3\xc1\xbb\x36\x06\xa3\x4a\x24\x5f\x48\x76\xbf\x3e\xb3\x52\x54\xe1\x44\xc1\xd2\x4f\x5d\xb2\x0f\x67\xd3\x79\xec\x30\x82\x27\x7b\x97\x7e\x94\x35\x01\x04\xee\xb0\x0e\x6a\x48\x0c\x64\x5c\xe8\xbf\x70\xe7\x35\x0e\x79\x1a\xdb\x5b\x75\x26\x97\x68\xe9\x70\x63\xab\xbd\xc2\x91\x62\x2a\x05\x7f\x6c\x54\x8e\x2b\x73\x87\x63\x55\xe4\x94\xbf\x1f\x87\x58\xdb\x83\x16\x54\x2d\xb7\x4f\xe2\xe5\xca\xb7\x81\x18\xcf\xe0\xec\x65\x70\x35\x2e\x59\xfb\x4c\xf0\x24\x3a\xf7\x39\x14\xd2\xf8\x3c\x9e\xc7\x95\xd8\xf3\x89\xbc\x7c\xa9\x94\x7f\x3d\xeb\x24\x83\x84\x48\xf5\x9c\xad\x51\x13\xd8\x4d\x94\x80\x89\x14\x58\x9a\x6a\xe0\x86\xf0\xe7\xff\x50\x3d\xa5\x28\x0c\xcf\x38\xaa\x00\xec\xff\xa8\xea\x71\x5f\x36\x9a\x51\x37\xda\xa3\x28\x8b\x05\x2a\x62\xbd\xc6\x44\x8a\x54\x57\xd9\x7c\xe0\x79\x4e\xbc\xf7\x9d\x27\x93\xea\x20\x13\xfa\xf2\x1f\x32\xeb\x31\x88\xac\x5f\x6f\xfb\x12\xba\xdf\xad\xe3\x03\x92\x8d\xe4\xe5\x58\x4d\xc2\xd9\x74\x3e\xdf\x6d\x70\x0c\xf4\x1b\x26\xf0\x5e\x16\x1b\xa9\xb9\x41\xfa\x3b\x3a\xbf\x1a\xce\x3f\x7e\xba\xfb\xf3\x63\x18\xa7\x43\x7f\x8d\x14\x9e\xc7\x67\xad\x1a\x12\x99\x19\x72\x7d\x2b\xb4\x61\x22\xc1\xa8\x6d\xe0\x74\xed\xb0\xaa\xa1\x5b\xdd\x8d\x12\x6a\x5a\x39\x51\xa8\x3d\x55\x3a\x1a\x01\xcb\x15\xb2\x74\x17\xb2\x71\x09\x7a\x45\xdb\x43\xc2\x55\x52\x72\x63\x6b\xc9\x97\x27\x65\x43\x64\xa6\xa5\xc0\x1f\xbd\xb9\x6c\x9d\x34\xdc\x22\x38\x3b\x13\x12\x26\xc4\xca\xf7\xa5\x52\x28\xcc\x3b\xb2\x1b\xc5\xc3\xba\x7f\xfc\x5c\x65\xad\xd6\xd2\xc3\x0c\xa2\x05\x4c\xba\xba\xeb\x2b\x58\xf0\x9e\x31\xee\x2e\x36\x0b\x23\xfc\xaf\x67\x90\x77\x3e\x88\x07\x5d\xc2\x36\xc2\xae\xb9\xe9\x1a\xde\x71\x76\x2a\x2c\xe4\x16\x89\xa0\x6e\x2b\x7b\x4d\x3e\xbe\x8c\x45\xb5\x1c\x1d\x15\xa5\x36\x44\x49\xcc\xb9\x25\x06\x91\xd2\x07\x42\x83\x71\xb1\xa3\x28\x58\x5a\x70\xd1\xa2\x60\x15\xea\x11\x12\xbe\x80\x72\x2f\x68\xb2\xfd\xb5\xeb\x47\x4c\xdd\x5d\x2f\x7e\x40\xf5\xe6\xd5\xf8\xd8\xdb\xf1\x60\x72\xa8\x32\xcf\x5a\x2a\xb8\xfe\xc4\xb4\x71\x4a\xfc\x50\x3e\xce\x81\xdf\x27\x7d\x66\x07\x1d\xa5\xf7\xd5\x68\xfd\x58\xed\x54\x95\x7a\xeb\x58\x7b\x79\xea\x03\xb5\xd5\x40\xce\xa2\xa6\xa7\xf0\xfd\xfb\x01\x23\xa7\x1b\x56\x55\x48\xed\x15\xcf\x93\x8c\x58\x61\xe0\x9c\xfc\x49\x98\x89\x7a\x42\x1d\x1a\x79\x67\x14\x17\xcb\x28\x8e\x7b\xdb\x5d\x5f\x78\x8e\x55\xd1\x1a\x77\x81\xe8\xf1\xa1\x0e\xd2\x2b\xdb\xd7\x3b\x5a\x6b\xf8\x9e\xe0\xb1\x3e\xb0\x44\x73\x7b\xad\x5b\x9b\x12\x4f\x35\x0d\x44\x96\xe7\xa1\xdd\xce\xe5\x06\x42\x5f\x07\x43\xdc\xd0\x87\x68\xcc\x94\x62\x76\x8b\xe6\x69\x4b\xa6\xb1\xe9\xdc\x5e\xeb\x28\x1e\xc3\x17\xb7\x22\x7f\x3d\xbd\xf9\xad\x71\xa7\xf7\xdd\xee\xd9\xf1\xba\xeb\x5d\xf0\xdf\xba\x4c\x49\xef\xe9\x1c\x47\x7a\x97\xbd\x76\x7b\x3d\x0e\xac\xa4\xb5\x5d\x66\x8d\x36\xe8\x24\x0e\x42\xd1\xdd\x39\xb9\x08\x5b\xc6\x01\x64\xfc\xfe\x57\xd9\xf5\x0f\xaa\x40\xe4\x3f\x4e\x42\xf5\xc5\x5f\xfd\xda\xbf\x16\x3b\xa1\x0f\x28\x96\x66\xd5\x02\x2e\x91\xa5\x30\x8d\x47\xda\x89\x1c\xd3\x7b\xc4\xe0\x12\x15\x78\xae\x52\xfb\xb5\x20\x55\xeb\xd4\x41\x45\x9d\x95\xb7\xe9\x12\x55\xc5\xad\x30\xa7\x0b\x22\xb7\xe2\x9d\x18\xaf\xa8\xf1\x53\x92\x19\xe8\x0d\x26\x9c\xe5\xc0\x4a\xb3\x92\x8a\xff\x6b\x47\x67\x3d\xdb\xcc\x8a\x19\x08\xd7\x58\x9e\xcb\x07\x87\x82\x7c\x10\x6e\xf1\xf4\x8f\x3f\xac\x52\x0d\x92\xaa\xa9\xb0\x5c\xeb\x06\x53\xa9\x75\x0e\xd4\xce\x8f\x46\x90\x28\x64\x06\x67\xf8\xe0\xce\xdc\x9f\xe4\xa1\xc0\x07\x2f\xdf\x9a\x77\x0d\xd5\x4d\xac\xda\x6a\x08\xa6\xb7\x5d\x63\x2d\x9e\x3b\x79\xf0\xd2\x7d\x8d\x69\x34\x82\x82\x29\x1a\x8a\x75\xe7\xb4\x9f\x90\x73\x4b\xbe\x45\xf7\x32\x62\x1a\x16\xc8\xc5\xb2\x79\xaf\x6e\x67\x17\xd5\x2b\x39\xe4\xdf\xed\x22\x9d\x47\x8e\xbf\x17\x48\xe4\x50\xb6\xeb\xb5\x36\xf4\x5b\xa0\x2d\x14\xd0\x48\x2f\x82\x30\xaf\xc1\x28\x26\x34\xb3\x2b\x06\x9d\x36\xd8\x7a\x00\xa5\xbd\x80\x4e\x3c\xa4\x3a\xe8\xb5\xbf\xf0\xe9\x74\xed\xc6\x2b\x07\x26\xf6\xed\x7b\x00\x55\x77\x4d\xdb\xee\x59\x7d\xd5\x01\x7b\xdb\xc8\x55\x9e\x47\x27\x1c\x68\x6c\x5a\x13\x78\x7a\x7e\xb9\xaf\x6d\xf1\xe7\x0e\x4d\x5e\xeb\x1b\x2b\xe8\xfd\x9a\x8c\x0b\x6e\x38\xcb\x03\xe5\xb2\x52\xd8\x04\xfe\x18\xe3\xf6\x1f\xb2\xd8\x82\xb2\xd3\x2c\xda\x68\xf4\x0c\x64\x27\xd0\xcc\xe1\x7b\x47\x1f\x06\x9a\x8b\x65\x8e\x6e\xa5\xdc\x27\x2a\xad\x37\xee\xe8\xcd\x25\x74\x28\xd7\x54\x77\x67\xa4\x42\x5a\xa2\xb9\x80\x8d\xe2\x5b\xab\x3b\x71\x2d\x57\x1b\xa9\xd8\x12\xe9\xe8\x1b\x45\xf2\x0d\xb4\x04\x29\xf2\x9d\xa5\x8b\xd3\x9e\x10\x27\x34\x69\x68\x87\xe1\x75\x0c\x35\xdb\x62\xf4\xe6\xd2\x0a\x5f\x80\x91\x63\x18\x79\xb5\xa3\x76\x76\xac\x73\xe1\x1b\x93\xe7\xc1\x7f\x01\x00\x00\xff\xff\x83\xa5\x58\x6c\x82\x15\x00\x00" +var _topshotlockingCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x58\x5b\x4f\xe3\xce\x15\x7f\xcf\xa7\x38\xf0\x50\x25\x2a\x24\x7d\xa8\xfa\x10\x41\xfb\x67\x17\x50\x51\xb7\x2c\x5a\xc2\x13\x5a\x69\x27\xf6\x49\x32\xc2\x9e\x49\x67\xc6\x81\x94\xe5\xbb\xff\x75\xe6\x62\x7b\x26\x76\x82\x56\x2c\x0f\x80\x3d\x67\xce\xfd\xf2\x3b\xe6\xe5\x5a\x2a\x03\xb7\x52\x5c\x57\x62\xc9\xe7\x05\xce\xe4\x13\x0a\x58\x28\x59\xc2\xdf\x5e\x6e\xaf\x67\x17\x97\x97\xdf\xae\xee\xef\x07\x83\x75\x35\x87\x4c\x0a\xa3\x58\x66\x60\x26\xd7\xf7\x2b\x69\xbe\xc8\xec\x89\x8b\x25\xbc\x0e\x06\x00\x00\x93\x09\x9c\x7e\xcc\x4f\x60\x97\xc8\xa9\xe5\x5f\x6d\x50\x18\xfd\xd1\x42\x03\xbf\xab\x92\x1b\x83\x39\x3c\xaf\x50\x00\x83\xff\xca\x12\x85\x01\xae\xa1\x90\xd9\x13\xe6\x96\x8c\xdc\x81\xa4\x85\x3f\xfe\x62\x8f\x86\x3c\x9f\xc2\xc3\x8d\x30\xff\xf8\xfb\x09\xe4\x95\x62\x86\x4b\x31\x85\x87\x6b\xfe\x42\x6f\xf0\x65\xcd\xd5\x76\xc6\x4b\xd4\x86\x95\xeb\x70\x30\x3a\x2c\xb9\x12\x7b\x64\x3f\xf8\xc3\x96\xf4\x86\xe5\x25\xcf\x48\x09\xa6\xb6\x20\x17\xde\x02\xb8\xbd\x9e\xe9\xc4\xc7\x20\x16\x06\x14\x6a\x59\xa9\x0c\x81\xe7\x24\xd5\xac\x10\x9e\x70\x1b\x28\xfd\xe5\x4a\x18\x5e\x80\x09\x56\x04\xc2\x0d\x2b\x2a\xb4\xa4\x2c\xcb\x50\xeb\xa1\xc6\x62\x31\x82\x0d\x53\xfe\x22\x09\x9d\xc2\xab\x53\x30\xd8\xfe\xd6\xa3\x28\x11\x83\xdc\xa0\x52\x3c\xcf\x51\x80\x91\x30\xc7\xd8\x0d\x3b\x62\xdc\x29\x9b\x17\x98\x88\xfa\x24\x65\xf1\x46\x32\xf6\xd8\x18\xd4\xe0\xda\x85\x12\xbe\xa1\xa9\x94\xd0\xc0\x60\x2e\x65\x81\x4c\x00\x17\x39\xcf\x98\xa1\x4c\xe4\x0b\x60\xc2\xb2\xc3\x17\xae\x8d\x06\x2e\x2c\xa7\xc6\x52\xc8\x6b\x7b\x3c\xeb\x20\xe1\x8e\x29\x56\xa2\x41\xa5\xa7\xc4\xe1\x1b\x2e\xa6\x70\x01\x0a\x17\xa8\x50\x64\x48\xa6\x12\xab\xdb\xeb\x59\xad\x6b\xc2\xc1\xab\x36\x05\xa3\x2a\x24\x5d\x88\x76\x37\x3f\x17\x95\xa8\xcd\x19\x06\x49\x7f\x49\x8b\x7d\x7c\x7b\x3d\x1b\x39\x1f\xc1\xab\xbd\x4b\x3f\xca\x8a\x00\x72\xee\xb8\x31\x6a\x4c\x15\xc8\xb8\xd0\xff\xc1\xad\xe7\x38\xe6\xf9\xc8\xde\x6a\x22\xb9\x44\x5b\x0e\x57\x36\xdb\x6b\x3f\x92\x4d\x95\xe0\x2f\xad\xcc\x71\x69\xee\xfc\x58\x27\x39\xc5\xef\xf7\x79\x2c\xd6\x20\x72\x55\xa4\xf6\x41\x7f\xb9\xf4\x6d\x79\x8c\x2f\xe0\xe8\x7d\xee\x6a\x5d\xb2\xf2\x99\xe0\xd9\xf0\xd8\xc7\x50\x48\xe3\xe3\x78\x3c\xaa\xc9\xde\x0e\xc4\xe5\xb1\x66\xfe\xfd\x28\x09\x06\x11\x11\xeb\x19\x7b\x42\x4d\xce\x6e\x7b\x09\x98\xc8\x81\xe5\xb9\x06\x6e\xc8\xff\xfc\x7f\x94\x4f\x39\x0a\xc3\x17\x1c\x55\x70\xec\x2f\x64\xf5\xb4\x2b\x1a\x6d\xab\x5b\xed\x51\x54\xe5\x1c\x15\x55\xbd\xc6\x4c\x8a\x5c\xd7\xd1\x7c\xe6\x45\x41\x75\xef\x3b\xcf\x42\xaa\xde\x4a\xe8\x8a\x7f\x88\xac\xf7\xc1\xd0\xea\xf5\x47\x57\x40\x77\xbb\xf5\xa8\x87\xb2\x15\xbc\x02\xeb\x49\x78\x7b\x3d\x9b\x6d\xd7\x38\x05\xfa\x0d\xe7\xf0\x59\x96\x6b\xa9\xb9\x41\x7a\x1e\x1e\x5f\x8c\x67\x5f\xef\xee\xff\xfd\x35\x8c\xd3\xb1\xbf\x46\x0c\x8f\x47\x47\x51\x0e\x89\x85\x19\x73\x7d\x23\xb4\x61\x22\xc3\x61\x2c\xe0\x70\xee\xb0\xba\xa1\x5b\xde\xad\x14\x6a\x4b\x39\x90\xa8\x1d\x59\x3a\x99\x00\x2b\x14\xb2\x7c\x1b\xa2\x71\x0a\x7a\x45\xe8\x21\xe3\x2a\xab\xb8\xb1\xb9\xe4\xd3\x93\xa2\x21\x16\x26\x62\xe0\x8f\xce\x4e\xa3\x93\x96\x5a\xe4\xce\x64\x42\xc2\x39\x55\xe5\xe7\x4a\x29\x14\xe6\x13\xc9\x1d\x8e\xc6\x4d\xff\xf8\x6b\x1d\xb5\x86\x4b\x47\x65\x50\x59\xc0\x79\xca\xbb\xb9\x82\x25\xef\x18\xe3\xee\x62\x3b\x31\xc2\x7f\x1d\x83\x3c\x79\x31\x1a\xa4\x05\xdb\x32\xbb\xa9\x4d\xd7\xf0\xf6\x57\xa7\xc2\x52\x6e\x90\x0a\xd4\xa1\xb2\x8f\xac\xc7\xf7\x55\x51\x43\x47\x47\x65\xa5\x0d\x95\x24\x16\xdc\x16\x06\x15\xa5\x37\x84\x06\xe3\x7c\x4b\x56\xb0\xbc\xe4\x22\x2a\xc1\xda\xd4\x3d\x45\xf8\x8e\x92\x7b\x47\x93\xed\xce\x5d\x3f\x62\x9a\xee\x7a\xf2\x1b\xb2\xb7\xa8\xc7\xc7\x0e\xc6\x83\xf3\xbe\xcc\x3c\x8a\x58\x70\x7d\xc7\xb4\x71\x4c\xfc\x50\xde\x5f\x03\xff\x3c\xef\x12\x3b\x48\x98\x3e\xd4\xa3\xf5\x6b\x8d\xa9\x6a\xf6\x56\xb1\x18\x3c\x75\x39\x35\x6a\x20\x47\xc3\xb6\xa6\xf0\xf3\x67\x8f\x90\xc3\x0d\xab\x4e\xa4\x18\xe2\xf9\x22\xa3\xaa\x30\x70\x4c\xfa\x64\xcc\x0c\x3b\x4c\x1d\x1b\x79\x6f\x14\x17\xcb\xe1\x68\xd4\xd9\xee\xba\xcc\x73\x55\x35\x7c\xc2\x6d\x28\xf4\x51\x5f\x07\xe9\xa4\xed\xea\x1d\x11\x0c\xdf\x21\xdc\xd7\x07\x96\x68\x6e\x2e\x75\x84\x94\x78\xae\x69\x20\xb2\xa2\x08\xed\x76\x26\xd7\x10\xfa\x3a\x18\xaa\x0d\xdd\x57\xc6\x4c\x29\x66\x51\x34\xcf\x23\x9a\x16\xd2\xb9\xb9\xd4\xc3\xd1\x14\x1e\x1d\x44\xfe\x7e\x18\xf9\x3d\xe1\x56\xef\xaa\xdd\x81\xf1\x52\x78\x17\xf4\xb7\x2a\x53\xd0\x3b\x3a\xc7\x9e\xde\x65\xaf\xdd\x5c\x4e\x43\x55\x12\x6c\x97\x8b\x56\x1b\x74\x14\xbd\xae\x48\x31\x27\x17\x01\x65\xf4\x78\xc6\xe3\xbf\x5a\xae\x5f\xa8\x42\x21\xff\xeb\xa0\xab\x1e\xfd\xd5\xef\xdd\xb0\xd8\x11\x7d\x41\xb1\x34\xab\xc8\x71\x99\xac\x84\x69\x2d\x69\x07\x62\x4c\xfb\x88\xc1\x25\x2a\xf0\xb5\x4a\xed\xd7\x3a\xa9\x86\x53\xbd\x8c\x12\xc8\xdb\x56\x89\xb2\xe2\x46\x98\xc3\x09\x51\x58\xf2\xc4\xc6\xd9\x0a\x61\xcd\xcc\x2a\x20\xc7\x64\x81\xbf\xa0\xb9\xd0\xcc\xb7\x39\x16\x52\x2c\xad\xde\x8e\xfc\x22\xb3\x4e\x08\xdc\x9e\x57\x3c\x5b\x79\xdf\xf8\xcd\x9f\x6b\xc8\x71\x5d\xc8\x2d\xe6\x20\xe3\x11\x63\x99\xdf\x1b\xa9\xd8\x12\xef\x18\x59\x02\x53\x68\x3d\xc3\x6b\x30\x65\xa2\xdd\xdb\x49\xac\x9e\x65\xd0\xd8\xe2\x94\xe5\xb4\x01\xea\x35\x66\x9c\x15\xc0\x2a\xb3\x92\x8a\xff\xdf\xc2\x80\xc6\x0e\xb3\x62\x06\xc2\x35\x56\x14\xf2\xd9\x45\x54\x3e\x0b\x07\xa2\xfd\x22\x8b\x75\xda\x82\xa4\xca\x28\x6d\xdf\x48\x03\x53\xb3\x75\x0a\x34\x81\x98\x4c\x20\x53\xc8\x0c\xde\xe2\xb3\x3b\x73\x8f\xa4\xa1\xc0\xe7\xc4\xbb\xad\x6b\xf5\xbf\xc1\x55\x31\x1b\x0a\xf9\x1f\xa9\xb0\xa8\x67\x39\x7a\xf0\xd4\x5d\x4d\x76\x32\x81\x92\x29\x1a\xf0\xcd\x14\xb0\x6f\x48\xb9\x25\xdf\xa0\xdb\xf2\x98\x86\x39\x72\xb1\x6c\xdf\x6b\x5a\xf3\x49\xbd\xf1\x87\x5c\x76\xb8\x2a\x59\xd8\xfc\xbd\xd0\x10\x9c\x97\xed\xaa\xa0\x0d\xfd\x16\x68\x93\x1e\x34\xd2\x76\x13\xb0\x07\x18\xc5\x84\x66\x16\x2e\xd1\x69\xab\xf3\xf4\x78\x69\xc7\xa0\x03\x4b\x61\xe2\xbd\x38\xb9\x92\x09\xd4\xda\xd8\xe0\xdc\xee\xf1\x5d\x5e\x8d\xd1\xd3\xa7\xed\xcd\x65\xfb\x1b\x4f\x22\x8f\xa6\x72\x22\xb3\x07\x25\xed\x22\x24\xe8\x45\x49\xb9\xa4\xc7\x55\x3b\x66\x71\x7a\x44\xaf\xdf\xf6\x79\xa0\x67\xa6\xb6\x67\x2f\xec\x19\xa9\x6d\xba\x38\xf3\x2c\xdc\x84\x92\x6d\x81\x15\x86\x2a\xae\xc9\x1c\x9a\xa1\x4d\xc5\x59\x7c\xbd\xe3\x5d\xdd\x5e\xfc\x13\x27\xf7\x7f\xb4\xdb\xf5\x7e\xba\xbc\x9c\xed\x05\x6e\xbb\x01\xf0\xd8\x28\x63\x82\x02\xa0\xeb\x75\x28\x7c\x5c\x5a\x33\x6d\x8e\x47\x89\xbf\xa3\x47\x02\x7b\x61\x4b\xd9\xdd\x78\xe0\x74\x9f\x42\x83\xf7\x85\xee\xf1\xc0\x32\x05\xbd\x0b\xd5\xaf\x2f\x53\xdd\x51\x77\x45\xa1\x2d\x46\xaa\x3f\x68\xc2\x4e\xd5\x5c\x14\xc5\xf0\x40\x69\xb6\xf6\xa9\x73\x78\xdd\x9b\xc3\x71\x15\xc7\xe4\x6f\xc9\x30\xfc\xa8\xef\xd2\xd0\xf9\x31\x9c\x0b\x6e\x38\x2b\xc2\x30\x5a\x54\xc2\xb6\xb6\xdf\x23\xdc\xfe\x21\x89\x91\x2b\x13\x48\x10\x7b\xa3\x03\x76\x3b\x82\x76\x0c\x3f\xbb\xc1\xc2\x40\x73\xb1\x2c\xd0\x57\xf2\xce\x08\xa3\xbc\x76\x47\x67\xa7\x90\x0c\xa3\x36\x3b\x9a\xf6\x48\xab\x32\x17\xb0\x56\x7c\x63\x79\x3b\x4c\x01\x7e\xe6\xd3\xd1\x0f\xb2\xe4\x07\x68\x09\x52\x14\x5b\x5b\x5b\x8e\x7b\x46\xd3\x42\x13\x87\xd8\x0c\xcf\x63\xac\xd9\x06\x87\x67\xa7\x96\xf8\x04\x8c\x9c\xa6\xe9\xb1\x8b\x41\xc2\xc7\xd1\xb7\xc1\x9f\x01\x00\x00\xff\xff\x92\x16\xb7\xdb\x6d\x19\x00\x00" func topshotlockingCdcBytes() ([]byte, error) { return bindataRead( @@ -153,7 +153,7 @@ func topshotlockingCdc() (*asset, error) { } info := bindataFileInfo{name: "TopShotLocking.cdc", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc2, 0x2a, 0x52, 0xd8, 0x41, 0x32, 0xbe, 0x25, 0x85, 0xe9, 0x5b, 0xa4, 0x22, 0xf2, 0x42, 0x8e, 0x96, 0x0, 0xbd, 0x5c, 0x35, 0xa3, 0x17, 0x31, 0x5d, 0xc2, 0xbd, 0x93, 0x8f, 0xa0, 0xa0, 0x3f}} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x7d, 0x4c, 0x9e, 0xad, 0x41, 0xd1, 0x4c, 0x7b, 0x1c, 0x96, 0x6a, 0x19, 0x91, 0xb4, 0x6f, 0x22, 0x6f, 0x7c, 0xc0, 0x70, 0x3a, 0xf3, 0xfc, 0x35, 0x67, 0x57, 0x91, 0x3d, 0x2a, 0x7, 0xa1, 0xe3}} return a, nil } @@ -177,7 +177,7 @@ func topshotmarketv2Cdc() (*asset, error) { return a, nil } -var _topshotmarketv3Cdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\x1b\x6d\x4f\x1c\x37\xfa\x3b\xbf\xe2\x21\xd2\x35\x10\x91\x25\xa8\xd7\xfb\xb0\x0a\x4d\x53\x08\x3d\x94\x84\x44\x40\xd2\x0f\xd5\xe9\xea\x9d\x79\x96\xb1\x98\xb5\xf7\x6c\x0f\x9b\x6d\xca\x7f\x3f\xf9\x75\x6c\x8f\x07\x36\x84\x91\xa2\xec\xce\xda\xcf\xfb\xbb\xcd\xfe\xb3\x67\x5b\x5b\x00\x00\x97\x7c\x79\xd1\x70\xf5\x9e\x88\x6b\x54\x9f\x7f\x9c\x54\x75\x65\x7f\x38\x46\x59\x09\xba\x54\x94\xb3\x29\x1c\x71\xa6\x04\xa9\x14\xd4\x38\xa7\x8c\xea\x97\x12\xe6\x5c\x40\x27\x51\x48\x50\x1c\x24\xb6\x2d\xa8\x06\xa9\x80\x05\x5f\x20\x53\xd2\x82\xb1\x80\x97\x2d\xa9\x10\xa8\x84\x55\x83\x02\xdd\xae\x8a\x30\xa8\x04\x12\x85\x40\x40\x92\x16\xa1\xe2\x6d\x8b\x95\x86\x0e\xaa\x21\x4a\xc3\x5b\x1b\x28\x52\x71\x81\x40\x99\xc3\x40\xaa\x8a\x77\x4c\x99\xd7\xe4\x0a\x27\x70\x6a\x7e\xc9\x81\xec\x81\xd9\xac\xa1\x18\x64\xcb\x4e\x39\x00\x67\x27\x97\x12\xba\xa5\x61\xc1\x6c\x5a\x51\xd5\x00\x81\xa5\xa0\x15\x02\x61\x35\x2c\xbb\x59\x4b\xa5\x7e\x67\x60\x08\x9c\xa3\x40\x56\x21\x48\x6e\x69\xe3\xaa\xf1\x4c\x48\xc4\x80\x7e\x62\xd9\x3e\x9d\x03\x61\x66\x89\x61\x56\x2f\x91\x40\x98\x46\xdc\xb3\x06\x2b\xc2\x94\x16\xde\xac\x5b\xef\xa5\xa4\x4a\x64\x35\xcc\x3b\x76\x45\x67\x2d\x82\xe2\xd7\xc8\xa4\xdd\x88\xff\xeb\x88\x91\xb4\xde\x65\x09\xb6\x5b\x0d\x18\xf3\xc3\xd9\xc9\xe5\x04\xe0\xd2\x7e\xd2\x52\x57\x82\x30\x39\x47\x21\xb0\xd6\xeb\x54\x83\x0b\xad\x09\xd6\xe3\x5c\x90\x6b\xcb\xc3\xb2\x13\x55\x43\xa4\xe7\xe3\x0d\xa9\x1a\xcb\xc1\xaa\xe1\x86\xde\x48\xdb\x96\xaa\x15\x6d\x5b\x68\xc8\x4d\x49\x8b\x06\x06\x65\x52\x11\x2d\xba\x81\xfe\x0c\x43\x15\x67\x8a\x50\x26\x9d\xf0\x29\x9b\x73\xb1\x20\xfd\x76\xad\x23\xd4\x64\x30\x5e\x47\x30\x7a\x2c\x13\xc3\xaa\x41\xdd\xf0\xb6\x96\x40\xa0\x22\x4b\x32\xa3\x2d\x55\x6b\x8b\xc3\x00\x6a\x29\xbb\x96\x8e\x7f\x6d\xa6\x84\x32\x67\xab\x31\x30\xe7\x16\x5e\x11\x57\xd4\x30\xd6\xeb\xdf\xec\xa7\x32\xb1\x55\xae\x51\xa2\x76\x91\xd6\xb0\xa3\x5d\xc5\xda\xad\x33\x16\xaa\x0c\xb0\x96\x4a\x15\x2c\x45\x6a\x5e\xfa\x7d\xc6\x45\x2c\xf2\xdf\x1b\xd4\xbf\x18\xb1\x5b\x07\x91\x4e\xb6\x7b\xce\x6e\xb4\xc8\x65\xb7\x5c\xb6\x6b\x98\xf3\x4e\x00\x11\x57\x9d\x71\xba\xa9\x01\xf0\x1c\x5e\x7b\xc7\x9e\x1c\xf5\x74\xe6\x52\x21\x6d\xcb\x57\xd2\x89\xc3\xc8\x4f\x71\xe3\x09\xb5\x20\x2b\x03\x08\x80\x78\x11\x69\x7b\xd1\x7c\x50\x19\x6c\xa4\x9e\x04\x6c\x27\xce\x54\x2f\xb5\x4d\x4c\xce\xb1\x42\x7a\xa3\xa9\xef\x31\x12\x69\xed\xcb\x44\x02\x1b\x06\xcc\x77\xb2\x36\xe0\xb5\x96\xf5\x77\x63\x54\x70\xc5\x51\x7e\x0b\x70\xb9\xc4\x8a\xce\xd7\x94\x5d\x01\x81\x19\x32\x9c\xd3\x8a\x12\xb1\xde\x73\x98\x08\x54\x9d\x02\x3e\x4f\x4c\x1c\xae\x50\x49\xed\x69\x6a\x02\x01\x97\x5e\xb7\x44\xa1\xb5\x42\xae\x70\x2f\x86\xdc\xf0\x15\x2c\xba\xaa\xb1\xce\xd7\x23\xb1\xea\x10\x58\x51\xbc\x41\x4b\xb5\xb7\xa1\x0c\x9c\x31\x82\x19\x82\x44\xe3\xf6\x7f\xa1\xe0\x40\x2d\x51\x46\xd9\x35\x4a\x2a\x4c\xa0\xa8\xad\xa2\x0d\x1c\x0f\x5e\x73\x6d\xd6\x22\x53\x54\xa0\x5a\xe7\x0c\x4d\xbc\xd2\xed\x16\x13\xa8\x49\x4b\xff\xf2\xf6\x16\xdc\xc9\xc6\x5f\x13\xf3\xf4\x7e\xbf\x8b\xd4\x0b\xca\xe0\x86\x74\xad\xf2\xea\xb2\x5f\xac\x10\xab\x4e\x49\x2d\x33\x0b\xa7\xc6\x25\x97\x54\x99\x88\x32\xd9\x7a\xf6\x6c\x7f\x6b\x8b\x2e\x96\x5c\xa8\x54\x5d\x30\x17\x7c\x01\x2f\xbe\x9c\x7c\x3a\xfb\xed\xf4\xd7\x77\x6f\x2e\x3f\xbc\x7d\x73\xf6\xfa\xf8\xf8\xfc\xcd\xc5\x85\xdf\x70\xc6\x59\x71\xcf\xd9\xc9\x65\xb6\xd2\x53\xea\x16\x5c\x7e\xf8\x78\xf1\xef\x0f\xf9\x22\x9b\x72\xfc\x9a\xf7\xaf\xcf\xdf\xbe\xc9\x97\x1c\x93\xe5\x12\xc5\x27\x65\xac\xe7\x88\xd3\x80\xf2\xf8\xd3\x51\x19\xe5\x3b\x5e\x5d\x6b\x23\x48\x31\xbf\xfb\x70\xf4\xf6\xf4\xec\x37\xbf\x65\x6b\xd9\xcd\x42\x00\xc8\x53\x2b\x7c\xb5\xde\xbd\xbf\x0f\xcf\x1f\xe7\xf1\xe0\xbc\x54\x1c\xe3\x81\x80\x37\x37\xda\xb3\xa2\x94\xfd\xd8\xf8\x1d\xbc\x7d\xc0\x05\x55\xda\x14\x56\x36\x72\x79\x82\x5c\xe8\xa0\xd2\x44\x3e\xac\x43\xbe\x35\x1b\xb5\xb0\xd0\x90\xf8\xde\xac\x7b\x67\xd6\xec\xd0\x7a\x0a\x9f\x4e\x99\xfa\xd7\x3f\xf7\x6c\x4a\x98\xc2\xa7\x13\xfa\x45\x7f\xd5\x69\x07\xc5\x14\x5e\xd7\xb5\x40\x29\x5f\xed\x96\x09\x30\x3e\x61\x92\x09\x9f\x03\xf1\xb8\x1d\x31\x0d\x91\x50\x35\x84\x5d\x61\x5d\xa4\xe2\xa3\xde\x78\x64\x17\x24\xb4\x30\x5c\x7d\x7c\x10\x39\xc4\x05\xb5\x38\x72\x5a\x3b\xd2\x84\x2e\x8c\xd2\xca\xa4\xf8\xd5\x8f\x20\x13\x12\xf3\x3f\x43\x64\x21\xd0\xb3\x9e\x96\x51\xd5\xfc\xee\xd7\x26\x94\xf0\x15\x4b\x31\x07\xd4\x1f\x89\x6a\xa2\x20\xff\xe7\x05\x69\xb1\x4f\x44\x7f\x6a\x51\x98\x92\xae\x57\x41\x8b\xca\x89\xe2\xc2\x16\x75\x1a\xc4\x14\xa2\x2f\xa3\xd0\x4d\xa9\x56\xc5\xe9\xc0\x27\x93\x02\xde\x02\xc2\x8f\x66\xbf\xc5\xd7\x7f\xee\xd1\xa5\x40\xfc\xeb\xf0\xf3\xa5\xae\x06\xa8\x74\xca\xa4\x0c\x04\x4a\xde\x09\x5d\x2a\x98\x42\xcf\xe8\xde\x6a\xc9\x15\x4b\xe5\x6a\x36\x00\x54\x1c\x16\x84\xe9\x74\xe1\x8a\x39\x19\x95\x8c\x44\xa0\x01\x46\xd9\x95\xad\x7b\xca\xd4\x85\x4a\xc8\xbb\x62\x54\x06\xf4\xf4\x71\x47\x8a\x21\xdd\x56\xed\xae\x32\x10\x18\x7c\x75\x12\x71\x9a\xa3\x03\xd2\x4a\x0e\xd7\x88\x4b\x53\x64\x56\xd7\x21\x25\x79\xf7\x33\x95\x9b\x91\x41\x0f\x27\x7c\xf8\x7d\xcc\x3d\xf6\x5c\xc6\xd6\x62\x25\x21\x23\x84\xfa\x40\x06\x08\x3a\x53\xea\x0c\xee\xca\xba\x34\xf7\x2b\x1f\x0c\x04\x4a\xe5\x24\xd7\x2f\xb5\x2a\x99\x14\xf4\xe9\x7f\x83\xaa\xe1\x5c\xa2\x34\xb5\x6f\x9e\xf4\xa9\x4d\xd3\x2b\x2d\xae\x3e\xc3\x07\x28\x4e\x0e\xae\x46\x36\x95\x46\xc6\x89\x67\x36\x58\x64\xd0\x4b\x2a\xe3\xa9\x8b\xeb\x13\xfd\xda\xda\xa7\x4f\x25\x1e\xd9\xeb\xb8\x1a\x75\x98\x13\x7d\x86\x0a\x43\x7b\x7f\x12\x84\x4d\x8d\x57\x55\x28\xe5\x8e\xc4\x76\xbe\x0b\x37\x44\x58\xc7\x8e\x29\x38\x0a\xbe\xf5\xf2\x87\x61\x61\xf9\x73\x4a\xcd\x51\x54\x66\x72\x58\x72\xca\x14\x38\x1a\x3e\x1f\xe4\x2d\xc2\x38\x11\xd6\x39\x3f\x1f\xf4\xe0\x52\x3a\x22\xa9\x44\xa4\xbc\x4a\x69\x39\xa6\xe6\xb5\x56\x98\x93\x4b\xcb\x57\xe6\x9f\xb1\x50\xd9\x77\x17\xba\x55\x9a\xad\xe1\xf4\x78\x9c\x22\xbb\x65\x0a\x5f\x6d\x00\xf4\x31\xf8\x36\x45\xa9\xed\x27\xed\xdc\x5c\x15\xe5\x08\xb0\xb6\x95\x6c\xf1\x6d\x82\x89\xd4\x92\x2f\x90\x33\xd3\xde\x49\xef\x1c\x7b\xb1\x31\x69\x43\x0e\xd5\x57\x02\xc7\xf7\x26\x9f\x35\xbe\xfb\xd4\x3b\x22\xd6\xaf\xe5\x6a\xfb\xf6\xe7\x21\x97\x79\x3f\x41\xa5\x36\x32\x9b\xe5\x1d\x81\xba\x64\x4a\x49\x4c\xdd\xe8\xa9\xf4\x95\x39\xde\xa0\x58\xdf\x63\x97\xd1\xc6\x47\x20\x3f\xaa\xcb\x3d\xf9\x91\x8b\x5a\x7a\x42\xaf\xe0\x53\x4a\x44\x42\x02\xf0\x44\xdb\xd1\x17\xb2\x58\xea\x26\xcd\xd5\xf4\x11\x02\x2a\xe1\xe0\xa7\x7f\xec\x69\x66\x3f\xf6\x6f\x0f\xe1\xc5\xe4\xe0\xa7\x00\x47\x07\x01\xcd\x66\xb2\xc8\x5b\x59\x4f\xbf\xae\xe6\x60\xe7\x5b\x7d\x74\x2f\xec\xb7\xcf\xc3\x8c\x20\x87\xf2\x3d\x1a\xc9\x61\x15\xd9\xce\x17\x3d\x30\x2a\xec\xc2\xd7\x04\xd0\x52\x60\xf6\xc6\x2a\x12\x8e\x1a\xac\xae\xfb\xa0\x69\xa4\xf4\x54\x0e\xe7\x04\xb1\xf1\x9b\x69\x80\x10\x58\xa9\x01\xc4\x4c\x4b\x93\x4a\x83\xdf\xd9\x9d\xc2\x60\xa5\x7e\x9e\x7c\x70\xe8\x6c\xd5\x15\x27\xed\xa3\x04\x1d\x65\x37\xa4\xa5\xf5\xf6\x93\xad\x7b\x78\x98\x71\xd5\xf4\xa4\x52\x94\x21\xb5\x67\x21\xca\x84\x0c\xdf\x65\x0a\x39\xc2\x48\x20\x62\x53\x46\x42\xb3\x3e\x46\x7f\xbe\xb3\x68\x50\xf7\x61\xfb\x35\x09\x28\xf7\xe1\x84\xa2\xd0\xde\x93\x6b\x04\xd9\xb9\x6a\x68\x98\xa8\x32\x85\x1b\x58\x03\x38\x43\xeb\x84\xc3\x43\x60\xb4\x85\xbf\xff\x2e\xfc\xb8\x1d\x18\x2b\xf3\xf5\xf9\xc0\xf7\x74\x45\x56\x52\xe9\xdd\x26\xdf\xb6\x32\xf6\xfc\xa0\x95\x01\x2e\x96\x6a\x9d\x8d\xaf\x36\x28\x03\x13\x80\x3a\x24\x4f\x32\xdb\x86\xc3\xdc\xda\xc7\xb6\x44\xc2\xc9\xed\x6a\xb8\xa5\x68\x10\x70\x58\x36\x94\x9c\x6b\x97\xe4\x89\x29\xb7\xcd\x34\xa4\x5d\x3b\x01\xcc\xb0\x22\x9d\x34\x4c\x0b\x34\x2b\x18\x0f\xdc\x8f\x33\xed\x20\x1e\xc2\xd7\xdb\xe1\x8f\x79\x74\x4f\xbe\x0f\x97\x97\xac\xa5\x60\x25\x5b\xbd\x86\x93\x94\xa3\xfb\xda\x13\x2e\x74\xa8\x33\x9f\xc3\x80\x39\x4c\xb5\x4d\x8b\xa1\x7b\xad\x91\x9a\xcb\x54\xd0\x6e\x22\x69\xe6\x5c\x14\xeb\x68\xa4\x0c\x51\x65\x0c\xa1\xf7\x12\x64\x81\x0a\x85\x9c\xda\xc8\x71\x7a\x3c\x35\xd9\x94\xd6\xbe\xc0\x31\x33\x6e\x0e\x33\x34\x03\xf7\x68\xca\x9e\x00\x8a\x1f\xd7\xd2\x5e\xc6\x8d\x83\x83\x94\x24\xc7\x79\xc7\x62\xae\x77\x02\x01\xc5\xde\x78\xb3\x98\x5f\x32\xe5\xc9\x8c\x0b\xc1\x57\x3b\xbb\xdb\xee\x93\x8d\xc7\xa6\xf9\x75\x38\x77\x61\xdb\x38\xf6\x88\xe7\xba\x00\x5e\x73\x94\xc0\xb8\x02\xfc\x42\xa5\x72\x2d\x5f\x48\x2a\xbd\x46\x0a\x71\x7c\x3b\x1d\x3c\x4d\xa8\xd4\x9f\xb0\xde\x61\x73\x75\x8e\xf3\xe9\x66\x84\x9f\x9d\x5c\x26\x54\x8f\x45\x9a\xf7\xfd\xa4\xc6\x60\xc9\x43\x4b\xee\x58\x17\xa8\xfa\x92\xf4\xa9\xcc\x8c\x06\x52\x6f\xf9\xc3\x61\xff\x0f\x1c\xba\x85\xc9\x4a\x5c\xd0\xc2\x08\xc8\xed\x09\x3a\x35\xff\xf5\xe3\x8e\x9e\xfb\x57\x13\x62\x07\x10\xbb\x63\x8e\x52\x11\x56\x61\x6b\xfc\xc4\x7e\x94\xfd\x38\xc4\xb8\x86\x6e\xe4\xaa\x16\x89\x90\x40\x55\xce\xcc\x46\x1e\xa0\x65\x71\x7a\x9c\x74\x7d\xf1\x30\xbd\x30\x62\xc9\x41\x7b\xfb\xee\x89\xcd\xcd\x3b\xb7\xe7\x5c\x27\x27\x54\x48\x05\x95\x4b\xfe\x3a\x47\xa1\x90\x51\x47\x38\x08\x68\x74\x5e\xd6\x92\xb5\xec\x72\x7d\x74\x8e\x0b\xee\xc6\xd0\xd6\x55\xfb\x7e\xd6\x46\xc6\x3a\x74\x5c\x65\x57\xb3\xcb\x26\xc2\xc0\xd9\xb9\xc6\x75\x6f\x9c\xc5\xbc\xac\x2d\xcd\x81\x56\xdc\xd0\xe5\x4b\xf1\x7e\x80\x15\x35\x6d\xf7\x98\x1f\xa3\xed\x60\x69\x09\xeb\x1b\x6d\x93\x66\xd6\x7e\xe3\x4f\x27\x3c\x3a\x7b\xc8\xe0\xcc\x27\x70\x7f\x91\x0b\x17\x52\xcb\x4e\x27\x68\xc1\xb8\xdd\x08\xad\x68\xcd\xb9\x7e\x4f\xe7\x26\x94\xcc\x79\xc7\xea\x10\xda\xd3\x42\x77\xcf\xa9\xff\xf3\x41\xea\xbf\x80\xad\x44\xad\xef\x16\x15\xdc\x1c\xb8\xa2\xe2\x70\x34\x0d\x0d\x55\x1f\x6f\x3c\xc7\x39\x1c\x86\x6f\x7d\xcc\x19\xea\x8f\xce\xe3\x4d\x93\x2b\xb4\xe3\xd5\xde\xb2\xb3\x68\x5a\x40\xec\x98\x0f\x9e\xd4\x17\x29\xbd\xf0\x6f\x0e\x4a\xd9\x2d\x27\xdf\x7a\xe5\xcb\xe7\x09\x49\x1e\xee\x90\xa4\x21\x37\x8e\x14\xcb\xef\xf0\x50\xd0\x8d\xff\x14\x5f\x82\x6c\xb8\xda\x84\xa4\x2c\x7c\x5b\xc1\xde\x19\xd8\x8b\xa0\xf4\xf3\xea\x15\x2c\x09\xa3\xd5\xce\x93\x23\xde\xb5\xb5\x31\x15\x47\xa9\x81\x15\x57\x7c\x81\xf0\x27\xe3\x5c\xba\x06\x3e\xf3\x34\x3f\xd1\x67\x31\xc7\xf7\x30\x3a\x64\x72\xe2\x80\x5b\xa1\x4f\xe1\xe5\x73\xf3\x61\xc8\xdc\xed\x48\x85\x9b\x05\xf8\xd0\xa5\xb7\xa8\xab\x20\x7f\xe4\xce\xea\x70\x72\xce\xfb\x35\xf1\x29\x3c\x2d\x94\x7a\x7e\x4a\xd1\xcf\xea\xdd\x29\xba\x40\xd5\x09\x16\x8e\xd0\xed\xa9\x3a\x71\xcd\x01\x67\x0a\xbf\xf8\x13\x6d\xd2\xb6\x58\x03\x55\xdf\x93\x43\x5c\x15\x95\x4c\x09\xa1\x50\x3b\xcd\xba\xb5\x69\xac\xa5\x05\x50\xbc\x33\x40\xec\x9d\x8b\x3a\xbb\x24\x30\x4a\xde\xb9\xe1\x54\x4e\xe1\x17\x3f\x48\x38\x3b\xb9\x9c\x0e\xa5\x32\x48\x5e\xfe\xd7\x61\x65\x16\x91\xf9\xcb\xe0\xf4\x6d\x62\xba\xcf\xdd\x14\x5f\x3c\xe4\x84\x91\x0c\x97\xf7\x68\x3e\x35\xc4\xb4\xc1\x43\x32\x1d\x91\x12\x85\xda\x29\xda\x73\x60\x65\x32\x23\xad\xb9\xd8\x70\x78\x58\x04\xbf\x9d\x0f\x2f\xec\xb3\x40\x29\xcd\x84\xe3\xc9\x99\xae\x0c\x19\xef\xae\x9a\xc8\x50\x23\x05\x15\xfa\xe3\x72\x92\x3c\x47\x52\xc7\x39\x39\x3e\x4c\x2f\x86\x72\xbb\x6e\x84\xec\xd1\x3c\x3c\x82\xc1\x25\xe6\x6f\xc9\xc1\x25\x0c\x97\xfe\x0e\x4a\x74\x56\x1f\x5b\x71\x3e\x81\x37\x43\xf5\xbe\xb0\xb2\xa3\xfd\x70\x3a\x90\x73\x1c\xf7\x8b\x9d\xd2\x69\xa0\xd7\x63\x48\x02\x64\xc1\x3b\xa6\x5c\xb1\xf9\x6c\xd8\xd3\x95\xa5\x7f\xec\x42\x25\x8d\x02\x63\x3a\xe3\x4c\x07\xb2\x89\x7c\xca\x03\x8f\x3e\xa7\xe6\x9b\xf4\x13\xe2\xa7\xe6\x5e\x87\xcf\x94\xb9\x61\x1c\xbd\x8b\x6a\x7b\x40\xa2\x03\xb9\xae\x6c\x9c\xc0\x03\x1f\x26\x78\x4b\x3b\xc1\xbe\xab\x77\x7a\x38\xe9\x5e\x0b\x05\xd9\x46\xf5\x53\x7a\x16\xfa\x90\xe6\xa0\xec\x37\x3a\xd0\x65\x81\x6d\xdc\x6b\x66\xda\x55\x95\xeb\x95\x5e\x3e\xbf\xaf\x05\x0b\x66\xe5\x3f\x24\x15\x0f\x91\xdb\x49\xbc\x1b\x12\x68\x13\x8e\x96\x51\x84\xf7\xf1\xcb\xc2\x61\xf4\xfb\x9e\x42\x11\x1e\x5c\x2c\x26\x2c\xc7\x35\xda\x30\xab\x04\xfd\x47\x69\x25\x31\xa5\x1c\xee\x28\xab\xfa\x71\x75\xd3\x19\x77\xe1\x6c\x41\x54\xd5\x18\x67\xd0\xa2\x3c\x3d\x0e\x35\xc2\xf6\x93\xcd\x4b\x14\xc8\xdd\xae\x46\xa9\x04\x5f\xf7\x24\x83\x3f\x3c\x6e\x29\x0b\x57\x83\x6c\x5f\x14\x2e\x32\x98\xa3\x65\xd9\xa1\xad\x3f\x5a\xd4\x06\x3a\x85\x46\xa9\xa5\x9c\xee\xef\x5f\x51\xd5\x74\xb3\x49\xc5\x17\xfb\x9c\xcd\x5b\xbe\xda\xaf\x48\xad\xeb\xba\xfd\x65\xd7\xb6\xfb\x07\x2f\x5e\xbc\xd8\xfa\x6e\x46\xf3\x66\xda\x5c\x8d\x30\xf3\xdd\x30\x68\xed\x96\xb5\xb9\xa4\xa6\xd2\x43\x21\x9f\x24\xfc\xe1\x77\x69\xe4\xbc\x51\x89\xc4\x70\xf5\x21\x3f\xae\xb8\x6c\x50\xbf\xcf\x81\x16\xd0\xfb\xdb\x86\xa3\x25\x54\xe9\x59\x35\xdc\x4f\xc3\x43\x15\xa9\x01\x7a\x5b\x94\xc3\xc6\x7d\x28\x98\x9d\xff\x16\x49\xdf\xe8\x74\x64\xb3\xe9\xd5\x10\x7c\xf0\x30\x3f\xa0\x7a\xcc\x09\x7d\x61\xe6\x39\x1c\xe9\x0e\x69\xba\xdb\x96\xa2\xe9\xfd\xa6\x16\x15\x97\x01\xae\x52\x88\x8a\x86\xd1\x19\x4b\xc1\xae\x7e\x2d\x8e\x97\x95\x33\xae\xc7\x43\x9d\x5a\x49\x81\x65\x6b\x2b\x45\x72\x1e\xdb\x62\x8a\x48\x36\xb5\x9b\x6f\x3d\x6b\xb9\xc7\x7c\xc6\xc6\xfb\x63\x64\x8e\x99\x92\x1f\x2d\xb8\x0c\x22\xf3\x4b\x60\x6e\xbe\x5d\xf9\xcb\x26\xac\xa8\x2e\xd8\x6c\xd6\x9d\x76\x69\xab\x86\x4b\x8f\x4b\x71\x4d\xc9\xfd\x8d\x95\x9d\x50\x17\x46\xde\x69\xf1\xe1\xad\x66\x38\x38\x71\x23\x41\x0f\xe9\x55\xa6\x69\x97\xc1\xef\x2a\xf3\x0b\xb6\xe1\xb2\xef\x70\x98\x9b\x0e\x90\x7c\x1d\xf0\x4d\x75\x81\x83\xed\xd7\x46\x65\xd2\xf8\x54\xe8\x0e\xe3\x71\xe0\xe2\xb6\x63\x68\x11\xa7\xc7\x32\xd8\x03\x61\x40\x84\x20\xd6\x69\x8d\x0d\xe8\x5f\xc7\x8f\xb9\x22\xd1\x9f\x1e\xcb\x9d\xdd\x29\xfc\x61\x65\x9e\x0b\xce\x14\x3b\x3f\xbe\xc5\xb5\x4c\x05\x3d\xb9\xc6\xb5\x1c\x54\x6b\xaf\xeb\x1a\x08\x5b\xc3\xe7\x83\xfc\x2a\x95\x26\xc7\x5e\x1c\x58\xdb\xe3\x82\x92\x42\x1f\x24\x7a\x5b\x8e\x39\x0a\xcb\x0a\x30\x2c\x8e\xe9\xcc\xee\x9d\x54\x9c\x55\x44\xed\x58\x5e\x77\x37\xab\x24\x3d\x04\xb3\x67\xb3\x61\x4e\x7c\xe2\xe2\x1d\x06\x88\x7b\x8d\x75\x3a\x75\x23\xfe\xa8\xbc\x38\xc6\xf1\xf7\x6a\x6c\x16\xb1\x57\xba\x08\x03\xa1\xbb\xe5\x9a\x28\x62\xbb\xc7\x0d\xe7\x34\xba\xef\x48\x9d\xdf\x0d\xc3\x74\xcf\x5e\x1a\x09\xde\x1f\x05\x7e\x88\xca\xff\x57\xf0\xc1\xfc\xb1\x0d\x69\x73\x0e\x17\x29\x87\x1b\xd5\x31\x77\x71\x4e\x95\x34\xdc\xdf\x99\xa7\x06\xe7\x5e\x21\xe0\xa4\x44\x7f\xcd\x0d\x7c\x9e\xcf\x68\x46\xa6\x83\xd9\x48\x86\xd6\x77\x4c\x63\xb4\x01\x8b\xfb\x67\xa3\x85\xd3\x3a\x5a\x8f\x5a\xb5\xc0\xf9\x66\x36\x6c\x7b\x2c\xaa\x60\x45\x24\x7b\xea\x3b\xad\x06\x05\xee\x05\x3e\x71\xe8\xd0\x63\x5d\xd5\x83\x5c\x18\xee\x8c\xa0\x1b\xb1\x7d\x3b\x26\x88\x7c\x74\x13\x7b\x26\xf4\xfe\xb9\x1f\x6e\x11\x24\x77\x49\xbd\x7f\x9a\x72\xa9\x7c\xc9\xb4\x37\x42\x03\x28\x94\x42\x06\x58\x2a\xb4\xef\xbe\xd6\x54\x78\x1e\xe7\xa6\x53\xe1\x79\xcc\xcb\x4f\x85\x67\xa3\xfb\x50\x85\xe7\xa1\x57\xa4\xa6\xf0\x4b\x96\x92\xa2\x09\x6c\x68\xcc\xfd\x4d\x92\xfb\xf4\x96\xbd\xd8\x80\x6e\xf7\x0c\xd4\x95\xbd\xd8\x1c\xd2\x88\x7e\x8a\xaf\x37\x87\x9a\xa9\x25\xf9\xba\x39\x94\x92\x92\x86\xef\x76\x63\x07\xa4\x8c\xaa\x9d\xb8\xc8\x8f\xc2\x47\x74\x4f\x1e\x0e\x61\xdf\xfd\x61\xe4\xbe\xe2\x4b\xd9\x70\xa5\x75\xf5\x63\x21\x32\x45\x00\xfa\x8b\xef\x7a\xbf\xbd\x52\x1f\x6f\xbf\xc9\xf7\xdf\x6e\xdd\x6e\xfd\x3f\x00\x00\xff\xff\x81\xff\xa1\x99\x46\x3a\x00\x00" +var _topshotmarketv3Cdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xdc\x3b\xdb\x6e\x1b\x39\x96\xef\xfe\x8a\xe3\x00\x3b\x2d\x07\x8e\x3c\x46\x6f\xcf\x83\x10\x77\x3a\x6d\xc7\xb3\x46\x27\x4e\x60\x2b\xce\xc3\x60\xb1\x43\x55\x1d\xb9\x08\x97\x48\x2d\xc9\xb2\xa2\xc9\xe4\xdf\x17\xbc\x16\xc9\x62\xd9\x8a\xdb\x4f\x5b\x40\xa3\xad\x2a\xf2\xdc\xef\x64\x8e\x5e\xbe\xdc\xdb\x03\x00\x98\xf3\xf5\x75\xc3\xd5\x07\x22\xee\x50\xdd\xfc\x3c\xad\xea\xca\x7e\x38\x43\x59\x09\xba\x56\x94\xb3\x19\x9c\x72\xa6\x04\xa9\x14\xd4\xb8\xa4\x8c\xea\x97\x12\x96\x5c\x40\x27\x51\x48\x50\x1c\x24\xb6\x2d\xa8\x06\xa9\x80\x15\x5f\x21\x53\xd2\x82\xb1\x80\xd7\x2d\xa9\x10\xa8\x84\x4d\x83\x02\xdd\xae\x8a\x30\xa8\x04\x12\x85\x40\x40\x92\x16\xa1\xe2\x6d\x8b\x95\x86\x0e\xaa\x21\x4a\xc3\xdb\x1a\x28\x52\x71\x81\x40\x99\xc3\x40\xaa\x8a\x77\x4c\x99\xd7\xe4\x16\xa7\x70\x61\xbe\xe4\x40\x0e\xc1\x6c\xd6\x50\x0c\xb2\x75\xa7\x1c\x80\xcb\xf3\xb9\x84\x6e\x6d\x58\x30\x9b\x36\x54\x35\x40\x60\x2d\x68\x85\x40\x58\x0d\xeb\x6e\xd1\x52\xa9\xdf\x19\x18\x02\x97\x28\x90\x55\x08\x92\x5b\xda\xb8\x6a\x3c\x13\x12\x31\xa0\x9f\x5a\xb6\x2f\x96\x40\x98\x59\x62\x98\xd5\x4b\x24\x10\xa6\x11\xf7\xac\xc1\x86\x30\xa5\x85\xb7\xe8\xb6\x87\x29\xa9\x12\x59\x0d\xcb\x8e\xdd\xd2\x45\x8b\xa0\xf8\x1d\x32\x69\x37\xe2\xff\x76\xc4\x48\x5a\xef\xb2\x04\xdb\xad\x06\x8c\xf9\x70\x79\x3e\x9f\x02\xcc\xed\x5f\x5a\xea\x4a\x10\x26\x97\x28\x04\xd6\x7a\x9d\x6a\x70\xa5\x35\xc1\x7a\x9c\x2b\x72\x67\x79\x58\x77\xa2\x6a\x88\xf4\x7c\xbc\x23\x55\x63\x39\xd8\x34\xdc\xd0\x1b\x69\xdb\x52\xb5\xa1\x6d\x0b\x0d\xb9\x2f\x69\xd1\xc0\xa0\x4c\x2a\xa2\x45\x37\xd0\x9f\x61\xa8\xe2\x4c\x11\xca\xa4\x13\x3e\x65\x4b\x2e\x56\xa4\xdf\xae\x75\x84\x9a\x0c\xc6\xeb\x08\x46\x8f\x65\x6a\x58\x35\xa8\x1b\xde\xd6\x12\x08\x54\x64\x4d\x16\xb4\xa5\x6a\x6b\x71\x18\x40\x2d\x65\x77\xd2\xf1\xaf\xcd\x94\x50\xe6\x6c\x35\x06\xe6\xdc\xc2\x2b\xe2\x96\x1a\xc6\x7a\xfd\x9b\xfd\x54\x26\xb6\xca\x35\x4a\xd4\x2e\xd2\x1a\x76\xb4\xab\x58\xbb\x75\xc6\x42\x95\x01\xd6\x52\xa9\x82\xa5\x48\xcd\x4b\xbf\xcf\xb8\x88\x45\xfe\xa5\x41\xfd\xc5\x88\xdd\x3a\x88\x74\xb2\x3d\x74\x76\xa3\x45\x2e\xbb\xf5\xba\xdd\xc2\x92\x77\x02\x88\xb8\xed\x8c\xd3\xcd\x0c\x80\x57\xf0\xd6\x3b\xf6\xf4\xb4\xa7\x33\x97\x0a\x69\x5b\xbe\x91\x4e\x1c\x46\x7e\x8a\x1b\x4f\xa8\x05\xd9\x18\x40\x00\xc4\x8b\x48\xdb\x8b\xe6\x83\xca\x60\x23\xf5\x34\x60\x3b\x77\xa6\x3a\xd7\x36\x31\xbd\xc2\x0a\xe9\xbd\xa6\xbe\xc7\x48\xa4\xb5\x2f\x13\x09\x6c\x18\x30\xbf\xc9\xd6\x80\xd7\x5a\xd6\xbf\x8d\x51\xc1\x2d\x47\xf9\x23\xc0\xe5\x1a\x2b\xba\xdc\x52\x76\x0b\x04\x16\xc8\x70\x49\x2b\x4a\xc4\xf6\xd0\x61\x22\x50\x75\x0a\xf8\x32\x31\x71\xb8\x45\x25\xb5\xa7\xa9\x29\x04\x5c\x7a\xdd\x1a\x85\xd6\x0a\xb9\xc5\xc3\x18\x72\xc3\x37\xb0\xea\xaa\xc6\x3a\x5f\x8f\xc4\xaa\x43\x60\x45\xf1\x1e\x2d\xd5\xde\x86\x32\x70\xc6\x08\x16\x08\x12\x8d\xdb\xff\x0b\x05\x07\x6a\x89\x32\xca\xae\x51\x52\x61\x02\x45\x6d\x15\x6d\xe0\x78\xf0\x9a\x6b\xb3\x16\x99\xa2\x02\xd5\x36\x67\x68\xea\x95\x6e\xb7\x98\x40\x4d\x5a\xfa\x2f\x6f\x6f\xc1\x9d\x6c\xfc\x35\x31\x4f\xef\xf7\xbb\x48\xbd\xa2\x0c\xee\x49\xd7\x2a\xaf\x2e\xfb\xc3\x0a\xb1\xea\x94\xd4\x32\xb3\x70\x6a\x5c\x73\x49\x95\x89\x28\xd3\xbd\x97\x2f\x8f\xf6\xf6\xe8\x6a\xcd\x85\x4a\xd5\x05\x4b\xc1\x57\xf0\xd7\xaf\xe7\x9f\x2f\xff\x7e\xf1\xfb\xfb\x77\xf3\x8f\x7f\xbc\xbb\x7c\x7b\x76\x76\xf5\xee\xfa\xda\x6f\xb8\xe4\xac\xb8\xe7\xf2\x7c\x9e\xad\xf4\x94\xba\x05\xf3\x8f\x9f\xae\xff\xeb\x63\xbe\xc8\xa6\x1c\xbf\xe6\xc3\xdb\xab\x3f\xde\xe5\x4b\xce\xc8\x7a\x8d\xe2\xb3\x32\xd6\x73\xca\x69\x40\x79\xf6\xf9\xb4\x8c\xf2\x3d\xaf\xee\xb4\x11\xa4\x98\xdf\x7f\x3c\xfd\xe3\xe2\xf2\xef\x39\x01\xa8\x48\x4d\x14\xb9\xa1\xb8\x91\x81\x0e\x4d\xc4\xdb\xf9\xdb\x9b\x8b\x77\x5f\xae\xfd\x86\xbd\x75\xb7\x08\x11\x23\xcf\xc5\xf0\xcd\x86\x83\xa3\x23\x78\xf5\x3c\x8f\x07\xe7\xc5\xe8\x24\x15\x08\x78\x77\xaf\x5d\x31\xca\xf1\xcf\x8d\xdf\xc1\x3b\x02\x5c\x51\xa5\x6d\x67\x63\x43\x9d\x27\xc8\xc5\x1a\x2a\x4d\xa8\xc4\x3a\x24\x68\xb3\x51\x0b\x0b\x0d\x89\x1f\xcc\xba\xf7\x66\xcd\x84\xd6\x33\xf8\x7c\xc1\xd4\xdf\xfe\xf3\xd0\xe6\x90\x19\x7c\x3e\xa7\x5f\xf5\x4f\x9d\xa7\x50\xcc\xe0\x6d\x5d\x0b\x94\xf2\xcd\x41\x99\x00\xe3\x44\x26\xfb\xf0\x25\x10\x8f\xdb\x11\xd3\x10\x09\x55\x43\xd8\x2d\xd6\x45\x2a\x3e\xe9\x8d\xa7\x76\x41\x42\x0b\xc3\xcd\xa7\x27\x91\x43\x5c\x14\x8c\x43\xad\x35\x23\x4d\xe8\xca\x28\xad\x4c\x8a\x5f\xfd\x23\x32\x39\x74\x8c\x5e\x92\x15\xce\xe0\x5a\x09\xca\x6e\xfd\xbb\xa4\x08\x4c\x3f\xcd\x9b\x6e\xb5\x60\x84\xb6\x9f\xaf\xde\xfb\x6f\xa3\xfc\x44\xa2\x5c\x20\xb2\x90\x64\x58\xcf\xd6\xa8\x96\xbf\xf8\xb5\x09\x53\x7c\xc3\x52\x49\x06\xd4\x9f\x88\x6a\xa2\x04\xf3\xcf\x6b\xd2\x62\x9f\x04\xff\xa9\xa5\x6a\xca\xc9\x5e\x9b\x2d\x2a\x27\xd5\x6b\x5b\x50\x6a\x10\x9a\xa7\xf0\x63\x14\xba\x29\x13\xab\x38\x15\xf9\x44\x56\xc0\x5b\x40\xf8\xc9\xec\xb7\xf8\xfa\xbf\x7b\x74\x29\x10\xff\x3a\x7c\x9e\xeb\x4a\x84\x4a\x67\x17\x94\x81\x40\xc9\x3b\xa1\xcb\x14\x53\x64\x1a\x33\xb2\x0a\x77\x85\x5a\xb9\x92\x0e\x00\x15\x87\x15\x61\x3a\x55\xb9\x42\x52\x46\xe5\x2a\x11\x68\x80\x51\x76\x6b\x6b\xae\x32\x75\xa1\x0a\xf3\x5e\x1d\x95\x20\x3d\x7d\xdc\x91\x62\x48\xb7\x1d\x83\xab\x4a\x04\x06\xb7\x9f\x46\x9c\xe6\xe8\x80\xb4\x92\xc3\x1d\xe2\xda\x14\xb8\xd5\x5d\x48\x87\xde\x93\x4d\xd5\x68\x64\xd0\xc3\x09\x7f\x7c\x19\xf3\xb4\x43\x57\x2d\x68\xb1\x92\x90\x8d\x42\x6d\x22\x03\x04\x9d\xa5\x75\xf5\xe0\x4a\xca\xb4\xee\x50\x3e\xae\x08\x94\xca\x49\xae\x5f\x6a\x55\x32\x2d\xe8\xd3\x7f\x83\xaa\xe1\x5c\xa2\x34\x75\x77\x5e\x70\x50\x5b\x22\x6c\xb4\xb8\xfa\xea\x22\x40\x71\x72\x70\xf5\xb9\xa9\x72\x32\x4e\x3c\xb3\xc1\x22\x83\x5e\x52\x19\xcf\x5c\x8a\x98\xea\xd7\xd6\x3e\x7d\x56\xf2\xc8\xde\xc6\x95\xb0\xc3\x9c\xe8\x33\x54\x37\xda\xfb\x93\x78\x6e\xea\xcb\xaa\x42\x29\x27\x12\xdb\xe5\x01\xdc\x13\x61\x1d\x3b\xa6\xe0\x34\xf8\xd6\xeb\xbf\x0c\x8b\xda\x5f\x53\x6a\x4e\xa3\x12\x97\xc3\x9a\x53\xa6\xc0\xd1\x70\x73\x9c\xb7\x27\xe3\x44\x58\xe7\xbc\x39\xee\xc1\xa5\x74\x44\x52\x89\x48\x79\x93\xd2\x72\x46\xcd\x6b\xad\x30\x27\x97\x96\x6f\xcc\x7f\xc6\x42\x65\xdf\xd9\xe8\x36\x6d\xb1\x85\x8b\xb3\x71\x8a\xec\x96\x19\x7c\xb3\x01\xd0\x87\xf3\xef\x29\x4a\x6d\x3f\x69\xd7\xe8\x2a\x38\x47\x80\xb5\xad\x64\x8b\x6f\x51\x4c\xa4\x96\x7c\x85\x9c\x99\xd6\x52\x7a\xe7\x38\x8c\x8d\x49\x1b\x72\xa8\xfc\x12\x38\xbe\x2f\xba\xd1\xf8\x1e\x53\xef\x88\x58\xbf\x95\x2b\xfd\xef\xbf\x0e\xb9\xcc\x7b\x19\x2a\xb5\x91\xd9\x82\xc1\x11\xa8\xcb\xb5\x94\xc4\xd4\x8d\x7e\x92\xbe\x2b\xc0\x7b\x14\xdb\x47\xec\x32\xda\xf8\x0c\xe4\x47\x3d\x81\x27\x3f\x72\x51\x4b\x4f\xe8\x53\x7c\x4a\x89\x48\x48\x00\x9e\x6b\x3b\xfa\x4a\x56\x6b\xdd\x20\xba\x7e\x22\x42\x40\x25\x1c\xff\xf2\x1f\x87\x9a\xd9\x4f\xfd\xdb\x13\xf8\xeb\xf4\xf8\x97\x00\x47\x07\x01\xcd\x66\xb2\xc8\x5b\x59\x4f\xbf\x2e\x0c\x61\xf2\xa3\x3e\x7a\x18\xf6\xdb\xe7\x69\x46\x90\x43\xf9\x33\x1a\xc9\x61\x15\xd9\xce\x17\x3d\x31\x2a\x1c\xc0\xb7\x04\xd0\x5a\x60\xf6\xc6\x2a\x12\x4e\x1b\xac\xee\xfa\xa0\x69\xa4\xf4\x93\x1c\xce\x28\x62\xe3\x37\x93\x08\x21\xb0\x52\x03\x88\x99\x96\xa6\x95\x06\x3f\x39\x98\xc1\x60\xa5\x7e\x5e\x7c\x74\xe8\x6c\xd5\x15\x27\xed\xd3\x04\x1d\x65\xf7\xa4\xa5\xf5\xfe\x8b\xbd\x47\x78\x58\x70\xd5\xf4\xa4\x52\x94\x21\xb5\x67\x21\xca\x84\x0c\xdf\xe1\x0a\x39\xc2\x48\x20\x62\x57\x46\xc2\xa0\x60\x8c\xfe\x7c\x67\xd1\xa0\x1e\xc3\xf6\x7b\x12\x50\x1e\xc3\x09\x45\xa1\x7d\x20\x77\x08\xb2\x73\xd5\xd0\x30\x51\x65\x0a\x37\xb0\x06\x70\x86\xd6\x09\x27\x27\xc0\x68\x0b\xff\xfe\x77\xe1\xe3\x7e\x60\xac\xcc\xd7\xcd\xb1\x6f\x0f\x8b\xac\xa4\xd2\xfb\x9e\xfc\xda\xcb\xd8\xf3\x43\x5e\x06\xb8\x5a\xab\x6d\x36\x3a\xdb\xa1\x0c\x4c\x00\xea\x90\x3c\xcd\x6c\x1b\x4e\x72\x6b\x1f\xdb\x12\x09\x27\xb7\xab\xe1\x96\xa2\x41\xc0\x49\xd9\x50\x72\xae\x5d\x92\x27\xa6\xdc\x36\x93\x98\x76\xeb\x04\xb0\xc0\x8a\x74\xd2\x30\x2d\xd0\xac\x60\x3c\x70\x3f\xce\xb4\x83\x78\x02\xdf\xbe\x0f\x3f\xe6\xd1\x3d\xf9\x3d\x5c\x5e\xb2\x96\x82\x95\xec\xf5\x1a\x4e\x52\x8e\x6e\x91\xcf\xb9\xd0\xa1\xce\xfc\x1d\x86\xdb\x61\xa2\x6e\x5a\x0c\xdd\x6b\x8d\xd4\x5c\xa6\x82\x76\xd3\x50\x33\x63\xa3\x58\x47\xe3\x6c\x88\x2a\x63\x08\xbd\x97\x20\x2b\x54\x28\xe4\xcc\x46\x8e\x8b\xb3\x99\xc9\xa6\xb4\xf6\x05\x8e\x99\xaf\x73\x58\xa0\x19\xf6\x47\x13\xfe\x04\x50\xfc\xb8\xee\x78\x1e\x37\x0e\x0e\x52\x92\x1c\x97\x1d\x8b\xb9\x9e\x04\x02\x8a\x6d\xf6\x6e\x31\xbf\x64\xca\xd3\x05\x17\x82\x6f\x26\x07\xfb\xee\x2f\x1b\x8f\x4d\xf3\xeb\x70\x1e\xc0\xbe\x71\xec\x11\xcf\x75\x01\xbc\xe6\x28\x81\x71\x05\xf8\x95\x4a\xe5\x5a\xbe\x90\x54\x7a\x8d\x14\xe2\xf8\x7e\x3a\xf4\x9a\x52\xa9\xff\xc2\x7a\xc2\x96\xea\x0a\x97\xb3\xdd\x08\xbf\x3c\x9f\x27\x54\x8f\x45\x9a\x0f\xfd\xd0\xc7\x60\xc9\x43\x4b\xee\x58\xd7\xa8\xfa\x92\xf4\x27\x99\x19\x0d\xa4\xde\xf2\x0f\x87\xfd\xbf\xe1\xc4\x2d\x4c\x56\xe2\x8a\x16\xa6\x49\x6e\x4f\xd0\xa9\xf9\x5f\x3f\x39\xe9\xb9\x7f\x33\x25\x76\x00\x71\x30\xe6\x28\x15\x61\x15\xb6\xc6\x4f\xec\x9f\xb2\x1f\x87\x18\xd7\xd0\x8d\x5c\xd5\x22\x11\x12\xa8\xca\x99\xd9\xc9\x03\xb4\x2c\x2e\xce\x92\xae\x2f\x1e\xe4\x17\x46\x2c\x39\x68\x6f\xdf\x3d\xb1\xb9\x79\xe7\xf6\x9c\xeb\xe4\x9c\x0a\xa9\xa0\x72\xc9\x5f\xe7\x28\x14\x32\xea\x08\x07\x01\x8d\x2e\xcb\x5a\xb2\x96\x5d\xae\x8f\xae\x70\xc5\xdd\x08\xdc\xba\x6a\xdf\xcf\xda\xc8\x58\x87\x8e\xab\xec\x6a\x76\xd9\x54\x18\x38\x93\x3b\xdc\xf6\xc6\x59\xcc\xcb\xda\xd2\x1c\x68\xc5\x0d\x5d\xbe\x14\xef\x07\x58\x51\xd3\xf6\x88\xf9\x31\xda\x0e\x96\x96\xb0\xbe\xd3\x36\x69\xe6\xfc\xf7\xfe\x64\xc4\xa3\xb3\x07\x1c\xce\x7c\x02\xf7\xd7\xb9\x70\x21\xb5\xec\x74\x82\x16\x8c\xdb\x8d\xd0\x8a\xd6\x9c\xeb\xf7\x62\x69\x42\xc9\x92\x77\xac\x0e\xa1\x3d\x2d\x74\x0f\x9d\xfa\x6f\x8e\x53\xff\x05\x6c\x25\x6a\x7d\xb7\xa8\xe0\xfe\xd8\x15\x15\x27\xa3\x69\x68\xa8\xfa\x78\xe3\x15\x2e\xe1\x24\xfc\xea\x63\xce\x50\x7f\x74\x19\x6f\x9a\xde\xa2\x9d\xd4\xf6\x96\x9d\x45\xd3\x02\x62\xc7\x7c\xf0\xa4\xbe\x48\xe9\x85\x7f\x7f\x5c\xca\x6e\x39\xf9\xd6\x2b\x5f\xbf\x4a\x48\xf2\x70\x87\x24\x0d\xb9\x71\xa4\x58\x7e\x87\x07\x92\x6e\xfc\xa7\xf8\x1a\x64\xc3\xd5\x2e\x24\x65\xe1\xdb\x0a\xf6\xc1\xc0\x5e\x04\xa5\x9f\x37\x6f\x60\x4d\x18\xad\x26\x2f\x4e\x79\xd7\xd6\xc6\x54\x1c\xa5\x06\x56\x5c\xf1\x05\xc2\x5f\x8c\x73\xe9\x1a\xf8\xcc\xd3\xfc\xe1\x00\x8b\x39\x7e\x84\xd1\x21\x93\x53\x07\xdc\x0a\x7d\x06\xaf\x5f\x99\x3f\x86\xcc\x7d\x1f\xa9\x70\xb3\x00\x1f\xba\xf4\x16\x75\x15\xe4\x8f\xfb\x59\x1d\x4e\xed\x79\xbf\x26\xbe\x01\x40\x0b\xa5\x9e\x9f\x52\xf4\x63\x7f\x77\x82\x2f\x50\x75\x82\x85\xe3\x7b\x7b\xa2\x4f\x5c\x73\xc0\x99\xc2\xaf\xfe\x34\x9d\xb4\x2d\xd6\x40\xd5\x9f\xc9\x21\xae\x8a\x4a\xa6\x84\x50\xa8\x9d\x16\xdd\xd6\x34\xd6\xd2\x02\x28\xde\x57\x20\xf6\xbe\x47\x9d\x5d\x50\x18\x25\xef\xca\x70\x2a\x67\xf0\x9b\x1f\x24\x5c\x9e\xcf\x67\x43\xa9\x0c\x92\x97\xff\x3a\xac\xcc\x22\x32\x7f\x1b\x9c\xfc\x4d\x4d\xf7\x79\x90\xe2\x8b\x87\x9c\x30\x92\xe1\xf2\x1e\xcd\xa7\x86\x98\x36\x78\x4a\xa6\x23\x52\xa2\x50\x93\xa2\x3d\x07\x56\xa6\x0b\xd2\x9a\x4b\x15\x27\x27\x45\xf0\xfb\xf9\xf0\xc2\x3e\x2b\x94\xd2\x4c\x38\x5e\x5c\xea\xca\x90\xf1\xee\xb6\x89\x0c\x35\x52\x50\xa1\x3f\x2e\x27\xc9\x2b\x24\x75\x9c\x93\xe3\x83\xfc\x62\x28\xb7\xeb\x46\xc8\x1e\xcd\xc3\x23\x18\x5c\x62\xfe\x91\x1c\x5c\xc2\x30\xf7\xf7\x5f\xa2\x7b\x02\xb1\x15\xe7\x13\x78\x33\x54\xef\x0b\x2b\x3b\xda\x0f\xa7\x03\x39\xc7\x71\xbf\xd8\x29\x9d\x06\x7a\x3d\x86\x24\x40\x56\xbc\x63\xca\x15\x9b\x2f\x87\x3d\x5d\x59\xfa\x67\x2e\x54\xd2\x28\x30\xa6\x33\xce\x74\x20\x9b\xc8\xa7\x3c\xf0\xe8\x73\x6a\xbe\x49\x3f\x21\x7e\x6a\xee\x75\xf8\x4c\x99\x1b\xc6\xd1\x87\xa8\xb6\x07\x24\x3a\x90\xeb\xca\xc6\x09\x3c\xf0\x61\x82\xb7\xb4\x13\xec\x87\x7a\xa7\xa7\x93\xee\xb5\x30\x66\xd9\x3a\x14\x65\xa1\x67\xdc\xae\x17\xda\x99\x94\xeb\x66\x5e\xbf\x7a\xac\x49\x0a\x8a\xf7\x7f\x24\x35\x09\x91\xfb\x49\x44\x1a\x12\x68\x0e\x11\xed\x29\x2d\x95\xeb\x96\x98\xc1\x44\x44\xc2\x54\xa0\xe4\xed\x3d\xde\x50\xdc\x4c\xe6\xdb\x35\xbe\x4e\xee\x25\x4c\xdd\xae\x5f\x27\x07\x07\xfb\x06\x5d\xf1\xf3\x43\x75\x65\x7a\xdc\xfc\xe3\x4d\x53\x7a\xf2\x9c\xf0\x32\x65\x64\x85\xc5\x53\xe8\x74\x59\xdd\x7f\x2a\x1f\x4c\xa7\xcb\x95\xff\x36\xed\x04\x9d\x1c\x14\xd4\x6e\x13\xad\xb6\x8d\x48\x94\xff\x1f\xca\xe1\xc0\x58\x5c\x81\x0e\x73\x66\xd0\x62\x94\x34\x13\x47\x49\x99\x79\xb0\x29\xbc\xc2\x25\xa9\xcc\x51\xbb\xb9\x22\x77\xcf\x69\x0d\xb5\xce\x16\x15\xaf\x4d\xdd\xea\x2c\x34\xdf\xd7\x28\xb5\x96\xb3\xa3\xa3\x5b\xaa\x9a\x6e\x31\xad\xf8\xea\xa8\x36\x69\xbb\x25\x0b\x79\xc4\x16\xe4\x95\x5c\x11\xa1\x5e\xf9\x7b\x2b\xf2\x88\x4a\xd9\xa1\x3c\x3a\xfe\xdb\x2f\xe9\xd4\xc5\x16\xa5\x97\xdc\xe5\x8a\x15\x51\x55\x63\x22\x8d\xd6\xd7\xc5\x59\x28\xc0\xf6\xe3\x62\x34\xef\xe0\xcd\xd5\x0e\x33\x54\x0e\xd3\xdd\x6e\x5d\x9b\x5b\x79\x2a\x3d\x89\xf2\x99\xc9\x9f\xb8\x97\xe6\xdc\x3b\xd5\x65\x0c\x37\x1f\xf3\x33\x92\x79\x83\xfa\x7d\x0e\xb4\x80\xde\x5f\xaf\x1c\xad\xdb\x4a\xcf\xa6\xe1\x7e\x04\x1f\x4a\x57\x0d\xd0\x9b\x88\x1c\x4e\x0b\x86\x82\x99\xfc\x4f\x91\xf4\x9d\x8e\x64\x76\x1b\x99\x0d\xc1\x07\xa3\xf7\x53\xb1\xe7\x3c\x16\x28\x0c\x5a\x87\x73\xe4\x21\x4d\x0f\xdb\x52\x74\x64\xb0\xab\x45\xc5\xb5\x87\x2b\x4f\xa2\x4a\x65\x74\xb0\x53\xb0\xab\xdf\x8b\x33\x6d\xe5\x8c\xeb\xf9\x50\xa7\x56\x52\x60\xd9\xda\x4a\x91\x9c\xe7\xb6\x98\x22\x92\x5d\xed\xe6\x47\x0f\x78\x1e\x31\x9f\xb1\x33\x85\x31\x32\xc7\x4c\xc9\xcf\x33\x5c\x60\x97\xf9\x25\x36\x37\x54\xaf\xfc\x0d\x17\x56\x54\x17\xec\x36\x60\x4f\x5b\xc3\x4d\xc3\xa5\xc7\xa5\xb8\xa6\xe4\xf1\x6e\xce\x8e\xc5\x0b\x73\xf6\xb4\x9e\xf2\x56\x33\x9c\xd6\xb8\x39\xa4\x87\xf4\x26\xd3\xb4\x4b\xa8\x0f\xf5\x16\x05\xdb\x70\x49\x71\x38\x41\x4e\xd3\xb4\x4f\xcb\x3f\x94\xa6\x1d\x6c\xbf\x36\xaa\xfc\xc6\x47\x51\x0f\x18\x8f\x03\x17\xf7\x3a\x43\x8b\xb8\x38\x93\xc1\x1e\x08\x03\x22\x04\xb1\x4e\x6b\x6c\x40\x7f\x1d\x3f\x5b\x8b\x44\x7f\x71\x26\x27\x07\x33\xf8\x87\x95\x79\x2e\x38\x53\x7f\xfc\xfc\x07\x6e\x65\x2a\xe8\xe9\x1d\x6e\xe5\xa0\x54\x7a\x5b\xd7\x40\xd8\x16\x6e\x8e\xf3\xfb\x5b\x9a\x1c\x7b\x5b\x61\x6b\xcf\x28\x4a\x0a\x7d\x92\xe8\x6d\x85\xe4\x28\x2c\x2b\xc0\xb0\x38\xa6\x33\xbb\x77\x5a\x71\x56\x11\x35\xb1\xbc\xe6\x95\x8f\xb1\x8f\x51\xad\xdb\x3d\xbb\x4d\x90\xe2\x63\x1e\xef\x30\x40\xdc\x6b\xac\xd3\x51\x1f\xf1\xe7\xf3\xc5\xd9\x91\xbf\xcc\x63\xb3\x88\xbd\x47\x46\x18\x08\x5d\x74\xe9\xd2\xde\xb6\xac\x3b\x0e\x87\x74\x51\x9f\x3a\xbf\x9b\xc0\x29\x5e\x9e\x43\x3e\x1e\x05\xfe\x12\x75\x34\x6f\xe0\xa3\xa9\xdb\x49\x9b\x73\xb8\x4a\x39\xdc\xa9\x8e\x79\x88\x73\xaa\xa4\xe1\xfe\xc1\x3c\x35\x38\x6c\x0b\x01\x27\x25\xfa\x5b\x6e\xe0\xcb\x7c\x30\x34\x32\x92\xcc\xe6\x40\xb4\x7e\x60\x04\xa4\x0d\x58\x3c\x3e\x90\x2d\x1c\x11\xd2\x7a\xd4\xaa\x05\x2e\x77\xb3\x61\xdb\xe0\x50\x05\x1b\x22\xd9\x4f\xbe\xcd\x69\x50\xe0\x61\xe0\x13\x87\x0e\x5d\x9a\xc0\x3f\xd9\x85\xe1\xc1\x08\xba\x13\xdb\xdf\xc7\x04\x91\xcf\x8b\x62\xcf\x84\xde\x3f\x8f\xc2\xd5\x85\xe4\x02\xab\xf7\x4f\x53\x2e\x95\x6f\xb6\xf6\x46\x68\x00\x85\x52\xc8\x00\x4b\x85\xf6\xa7\xef\x52\x15\x9e\xe7\xb9\x5e\x55\x78\x9e\xf3\xc6\x55\xe1\xd9\xe9\x12\x56\xe1\x79\xea\xbd\xac\x19\xfc\x96\xa5\xa4\x68\xec\x1b\xfa\x65\x7f\x7d\xe5\x31\xbd\x65\x2f\x76\xa0\xdb\x3d\x03\x75\x65\x2f\x76\x87\x34\xa2\x9f\xe2\xeb\xdd\xa1\x66\x6a\x49\x7e\xee\x0e\xa5\xa4\xa4\xe1\xbb\x83\xd8\x01\x29\xa3\x6a\x12\x17\xf9\x51\xf8\x88\x2e\xe7\xc3\x09\x1c\xb9\x7f\x09\x7a\xa4\xf8\x5a\x36\x5c\x69\x5d\xfd\x5c\x88\x4c\x11\x80\xfe\xb6\xbd\xde\x6f\xef\xf1\xc7\xdb\xef\xf3\xfd\xdf\xf7\xbe\xef\xc1\xff\x05\x00\x00\xff\xff\xf3\x01\x67\xa7\x38\x3b\x00\x00" func topshotmarketv3CdcBytes() ([]byte, error) { return bindataRead( @@ -193,11 +193,11 @@ func topshotmarketv3Cdc() (*asset, error) { } info := bindataFileInfo{name: "TopShotMarketV3.cdc", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x26, 0x8e, 0x51, 0xb0, 0x57, 0xc3, 0x88, 0x94, 0x58, 0xf5, 0x48, 0xbb, 0xee, 0x74, 0x20, 0x8e, 0x56, 0x76, 0x6, 0x41, 0x13, 0x86, 0xab, 0x0, 0x3, 0x8a, 0xd2, 0x4a, 0x6, 0x3c, 0xf9, 0x25}} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x8e, 0x40, 0xe6, 0x76, 0xe9, 0xa5, 0x2f, 0xd6, 0xa9, 0xe1, 0xc1, 0xe4, 0x62, 0xfd, 0x37, 0x27, 0x36, 0x61, 0x48, 0xfc, 0x74, 0x3b, 0x7e, 0x67, 0xee, 0x5, 0x16, 0x3d, 0x6f, 0xd9, 0xd8, 0x42}} return a, nil } -var _topshotshardedcollectionCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xcc\x58\xdd\x6e\x1b\xb9\x15\xbe\xf7\x53\x1c\x2f\xb0\x81\xb4\xb5\x25\x1b\x28\x7a\x61\xd8\x75\xb2\x51\xdc\xb8\x40\x9c\x20\xf6\x62\x2f\x02\x5f\x50\xc3\x33\x1a\xae\x38\xe4\x94\xe4\x58\x11\x8c\x2c\xfa\x1a\x7d\xbd\x3e\x49\x71\x48\xce\x0c\xe7\x47\xce\x5e\x14\x45\x75\x61\x8f\x34\xe4\xf9\xfd\xce\x77\x0e\xb9\xfc\xe9\x08\x00\x60\x85\x36\x33\xa2\x72\x42\xab\x0b\x78\x8b\xca\x19\x26\xe1\xad\x96\x12\x33\xfa\x0d\x72\x6d\x80\x81\x64\x66\x83\xa0\xea\x72\x8d\x06\x74\x0e\x0f\xba\xba\x2f\xb4\xf3\x12\x7a\x9f\xbb\x9b\x07\x7b\xe4\x7f\x66\xb5\x2b\xb4\xb1\x17\xf0\x77\x6d\x8b\x9a\xc1\x7b\xa6\x14\x53\xf0\x9b\xff\xb6\x28\xfc\xb7\xd7\x9c\x55\x15\x1a\xc9\xd6\x76\x91\xe9\xb2\x2f\xee\x67\x66\x9d\x60\x0a\x3e\xd4\x52\xa2\x81\x75\xf8\x3a\xdc\xe2\xf7\x3c\x14\xc2\x82\x41\xab\x6b\x93\x21\xe8\xf5\x6f\x98\x39\x90\x5a\x6f\x2d\x30\xc5\x81\x65\xce\x02\x7e\x65\x99\x93\x7b\x90\x62\x8b\xc0\x1a\x0f\xe0\x83\x2e\x51\xb9\xce\xe1\x60\xbb\xe2\x30\x13\x0a\x18\x58\x54\x16\xe7\x60\x0b\x5d\x4b\xae\xfe\xfd\xcf\x7f\x39\x28\xd8\x13\x82\xd3\x80\x5f\x85\x75\xc7\xd0\x58\x80\x50\x19\xbd\x96\x58\x82\xb0\xe0\x0a\xe6\xe0\x2d\xe3\xa8\x32\x84\xac\x36\x06\x15\xe9\x2e\x98\xa5\x60\x8a\x52\x38\xe6\xa3\xbb\x2b\xd0\x20\x78\x09\xd6\x69\x23\xd4\x06\x4a\x6d\x90\xf6\x2b\xf8\xfd\xfc\xec\x6c\x1b\xbd\xb1\x10\xcc\x11\x6a\x23\x11\xb8\xf0\xb6\x32\xb3\x07\x4a\x8f\x31\x6c\x0f\x19\x53\x90\x33\x21\x17\xc1\xa0\x0f\xda\x8e\x9d\xb3\xc0\x0c\xfa\x08\xc8\x3d\xb9\xb0\x46\x28\xeb\xac\x38\xf1\x7f\xc1\x96\xcc\x47\xda\x2b\x77\x85\xb0\x27\xd0\x46\xc3\x3b\x94\x1a\x2e\xa4\xa4\xed\x06\x4b\xfd\x84\x3c\x58\x97\xd7\xae\x36\x08\xc2\xa1\x09\xab\x74\xde\x04\x21\x8a\xb2\x1a\x4a\x32\xac\x42\x5d\x49\x0c\x52\x14\x3e\xa1\x01\x85\xc8\xc9\xa4\x9d\x36\x66\x0f\x6c\xad\x6b\x07\xc2\x45\x67\xde\xeb\x1d\x2d\x3a\xf6\x61\x2e\x99\x50\x6d\xfa\x18\x2f\x85\x12\xd6\x45\x85\x2c\xcb\x74\xad\x1c\xac\x3e\xbe\xbb\x3f\x20\xd2\x0b\x5c\x63\xc6\x6a\x4b\xa6\x42\x6e\xf0\x1f\x75\x48\x0f\x6d\xb0\xb4\xa3\x14\xca\xc1\x5f\xcf\xcf\xb6\x31\x82\xd6\x97\x81\x65\x12\x93\x90\x64\x04\x09\x40\x66\x85\xdc\x03\x2a\x0e\x75\xe5\x25\x50\x12\x9d\x86\x42\x4b\x9e\x24\xd3\xe7\xb2\x91\xc6\x1c\x68\x85\xe0\x44\x89\x0b\x2f\xcf\xff\xf9\x45\x39\x21\x5b\xd4\x6c\x90\x16\x2a\xa8\x2b\xce\x1c\x9e\xc4\x0c\x20\x7b\x42\x0b\x75\x84\xc3\x5a\x38\x8a\x31\x83\x4a\x64\x5b\x89\xc7\x49\x35\x64\x9a\x4a\x39\x73\xb0\xae\x15\x97\x48\x6e\x6d\xd0\x15\x48\xd5\xbc\xae\x55\x56\xd0\xc6\x21\x3e\x5a\xb0\x79\x39\x5e\x45\x07\xb5\x93\x08\x04\x54\xc0\x29\xe2\x62\x5d\x3b\x92\x5b\x20\x08\xc5\xc5\x93\xe0\x35\x93\xad\x8b\x6b\x74\x3b\x44\xc2\x11\x96\x41\xdc\xae\x10\x12\x41\x94\x95\x44\x5a\xe2\xc3\x54\x20\x58\x56\x22\x54\xf5\x5a\x8a\x0c\x84\x72\x68\x72\x96\xc5\x92\x60\x41\x3a\xc7\x9c\xd5\x72\x8c\xe6\x4e\x96\x4f\xfe\x22\x96\xe2\x6d\x0e\x3b\x04\x66\x6d\x5d\x62\x88\x5a\xd8\x08\xb7\xab\x80\xff\x5a\x89\x5c\x9b\x52\xee\x13\x3f\x78\x93\x58\xb8\x2f\x98\xe1\xc8\x13\x35\x3b\xe1\x0a\x38\x3f\x03\xa1\x14\x1a\x48\xab\x29\xd0\x02\xd5\x01\x5b\xcb\x68\xb4\xd3\xbe\x94\x11\xce\xcf\xbe\x92\x07\x25\x53\xfb\x36\x2a\x33\x6d\xe0\xf7\xf3\x0f\xf3\x88\xeb\x5f\x29\x98\x4d\xc2\x85\x8d\xb9\xf6\xa0\x65\x52\xea\x5d\xe0\x5d\xd3\x25\x41\x60\x53\x94\x3e\x0f\xae\x97\x69\x62\x00\x5f\x92\x4e\x18\xe4\x8b\xa3\xa3\x9f\x96\x47\x47\xa2\xac\xb4\x71\x70\xa7\xd5\x4d\xad\x36\x62\x2d\xf1\x41\x6f\x51\x41\x6e\x74\x09\x67\x5f\xef\x6e\x1e\xde\xac\x56\x9f\xdf\xdd\xdf\x37\x2b\x9b\xca\x8a\x0b\x1e\x3e\x7e\xba\x7f\xff\xb1\x5d\x74\x54\xd5\xeb\x4e\x63\x5c\x3b\x0e\xd9\x73\xf0\x6f\xb9\x9c\x08\xa7\x8f\x8e\xed\x41\x2b\x69\x29\x69\x7c\x1b\x19\x6f\x9a\x0c\x0a\x1b\x76\x7b\xbe\x21\x68\xe4\x02\x65\x24\xa7\x4c\x1b\x83\xb6\xd2\x2a\x94\xb0\x20\xca\xe4\xf0\x23\x35\xad\x9f\xeb\x6c\x8b\x2e\x88\x23\xfb\xdb\x4e\x31\x32\xee\xa2\x31\x63\x31\x04\xdb\x27\x8f\xd0\x93\x51\x20\x17\x9f\x8c\x7e\x12\x1c\xcd\xc4\xab\xcf\x98\xa1\x78\x9a\x7c\x35\x14\x0c\xcf\xd0\x76\xbf\xf6\x61\xb9\x84\x55\x2f\x46\x4e\x57\x96\x62\x94\x0d\x62\xd4\x38\xf6\xc4\x4c\xfa\xee\x02\x5e\x3f\xff\x72\xab\xdc\x5f\xfe\xdc\xf9\xd5\x29\xfe\x76\x94\x2a\x22\x66\xed\xfa\xfb\x3a\x44\xcc\x83\xb9\x92\xc2\xb5\x00\x16\xca\xe9\xfe\x36\x41\x10\xdf\x62\xc8\x0c\xdb\x60\xe0\x3c\xcc\x73\x91\x09\xca\x19\x91\x46\x85\x86\x2a\x8e\x29\xd7\x33\x57\xa2\x4b\xd2\x73\x01\xc1\xd6\xce\x2c\xa1\x84\x9b\x8d\x17\xcc\xe1\xb9\x37\x29\x58\x94\xf9\x22\x71\x1b\x2e\x4f\xe1\xf9\xdb\x78\x49\x27\x09\xae\x52\x58\xf4\x56\x2e\x97\xf0\xd6\x20\x73\x34\x23\x28\xdc\x01\x96\x95\xdb\x27\x41\xf5\x9d\x00\x59\x56\xc4\x18\xf5\x36\x53\xfc\x45\x63\x26\x5c\xc1\x59\xef\x6d\x24\x40\xb8\x4c\x94\x37\x95\xf2\x92\x3f\x5f\xc4\x23\x5c\x9e\x1e\xb7\x29\xcc\xbc\x7d\xef\xc8\xb0\x2e\x9b\xb3\x39\x30\x7b\x0c\xaf\xc7\x79\x1e\x2b\x10\x70\x05\x02\xfe\x14\xed\x9c\x9d\xcf\x7b\x2b\xba\xc8\xf5\x11\x42\x34\xc8\x0d\xdb\xc5\x9e\x4f\x15\x1c\xcb\xd2\x53\x05\x35\x34\x82\x68\x81\x3d\x8a\x4c\x25\x10\x14\xc2\x56\xe1\x08\x5a\xb4\x36\xf3\x33\x47\x0f\x16\x79\xad\x5a\x65\xb3\xe6\xe1\x76\xd5\xa6\xff\x02\x5e\x8f\xea\xe9\xee\xe6\x61\x80\x8a\x8a\xe6\x8c\xe7\x91\xef\x06\x6d\x2d\xdd\x42\x70\xb8\xba\x82\x54\xf8\x0f\x54\x01\xb7\xab\xc6\x87\xe6\x95\xa2\x91\x96\x88\x47\x28\xcf\x30\x99\xfb\xe1\x40\xb4\xa2\x93\x37\x22\x74\xc9\x88\x0f\x72\xb5\x6b\x13\x9d\x54\x8a\x59\x6f\x2b\x15\x43\xdc\x92\x1a\x06\x3f\x0e\xc1\x3b\xc2\xeb\xaf\x4d\x62\x48\x6b\xe9\x53\x32\x92\xec\x3c\xe9\x5f\x9e\x8e\xc1\x15\x74\x3e\x5e\x2f\x26\x43\xde\x3d\xcf\x8f\x7b\x42\x8f\xfa\x41\x75\xb5\x21\xf1\x5e\xcd\x01\xfc\xac\x99\xcb\x8a\xd6\xd6\x46\xb0\x85\xb2\x96\x4e\xd0\x34\xe8\x37\x87\x89\x3d\x08\xb4\x61\x7a\xf0\x43\xf3\x60\x42\x0f\x32\x53\xf1\x9f\x98\x61\x25\x3a\xa4\x23\x87\xe0\xf6\x82\x66\xa7\x30\x19\xc7\x8c\x52\xfb\x0f\x33\x6f\x3f\x0b\x03\xc8\x1e\x10\xff\x39\x58\x34\x85\xbd\xa4\xb7\xa5\x76\xfa\x36\xc9\x84\x6a\x06\x9d\x90\x19\x9b\x0a\x6d\x3f\xbe\x83\xed\xe8\x2c\xd0\xda\x36\x2a\x89\x5e\xfc\x66\xde\xc5\x2f\xa1\x22\x1e\x27\x4b\xa2\xd7\x8e\xd3\x6c\x11\x4b\x79\x61\xc9\x8a\xcb\xd3\xef\xd1\xcb\xe1\xec\x2f\x97\x70\xeb\x47\x7e\x1a\xb7\x8c\xae\x37\x45\x18\x0a\x79\xc8\xe5\x2e\x81\x67\xf9\x62\xc4\xe9\x43\xf4\x2a\x7c\x7f\xa7\xfd\xe3\xfa\x1d\x18\xbe\xe0\x58\x69\x2b\xdc\xcc\x83\xe7\x02\x2e\x4f\x3d\xc0\x27\xb1\x2c\xf8\xfc\x10\xd3\xf5\x40\x3c\x50\x71\x00\xce\x51\x31\x38\xdf\xfc\x5a\x2e\xf4\xe7\x4d\xce\x53\x8a\x4b\xe9\xb0\x9b\x79\x46\xf9\x1d\x78\x32\xc9\x71\xf3\x61\xbf\x98\x20\x9c\x38\x14\xa6\xd3\xd0\x61\xa2\xf1\xca\x16\x7e\x50\x7a\x91\x66\x68\x53\xc7\x1a\x9f\x31\x87\x2b\x98\xbd\x3a\x44\x26\x54\xb2\xaf\xc6\x9d\xe8\x7a\x7e\x3c\xb2\x7e\xd5\x84\x91\xe6\x8f\xdc\xf9\x01\x23\xf1\xa6\xb7\xbc\x67\xc0\x38\xf3\xfe\x61\xfe\x12\xfb\xac\x06\x39\x1b\x9d\x7c\x3c\xd7\x10\x6f\x6c\xea\x1e\x8d\xc6\xe6\x15\x55\xda\x30\x00\xc4\xfa\x46\x1e\x5a\x44\x30\x5c\xd8\x29\x64\xf7\x6a\x78\x95\x1a\xfe\x1d\x46\x19\xce\x3a\x94\x87\x2d\xee\x6d\x93\x3a\xbb\xd8\xa0\xbb\x5d\xd9\xd9\x7c\x14\xd9\xa9\x9a\xf4\x5b\xe3\xec\x9c\xd2\x56\xe7\x5b\x70\x4d\x2b\x1c\x55\xe5\x16\xf7\xb4\xd5\x8b\x18\xd7\xa5\x87\xc2\x74\x4a\xec\x74\x39\x6e\x71\xff\x62\x3d\x72\xb4\xce\xe8\x7d\xf4\xf3\x40\x5a\x83\xf7\x6d\xbf\x98\xe4\x7c\xe2\x56\x3a\xf7\x8d\xfc\x1e\xa5\xa7\x89\x65\xc7\xac\xc3\x7a\xf3\x13\x5e\x4a\xbd\x70\x05\x5f\x1e\x47\x13\xa4\x56\x19\x73\xa8\x28\xfc\x64\x02\x9d\xa4\xa5\x1c\x92\xc1\xa1\x08\x0f\xab\x6a\x71\x20\xe4\x1d\x55\x8e\xea\x70\x8b\xfb\xc7\xeb\x16\x1a\x70\x7d\x0d\x5f\x1e\x27\x24\xd0\x47\x70\xbb\x60\x55\x85\x8a\xcf\x04\x9f\x8f\x96\x7c\xfb\x3e\x63\x0a\x7e\x28\x3b\x6b\x6d\x8c\xde\x51\x75\x7c\x6e\x12\x14\x7f\x43\xea\xf1\x39\x1a\x7f\xf2\xa5\xe3\x6e\x7b\xc4\x3b\x98\xa4\xe5\x12\xac\x0e\xd9\xec\x06\x47\x7f\xe8\x35\xc8\x38\x70\xe6\x58\xb8\x97\xa1\x50\x97\xe8\x0a\xcd\x6d\x68\x37\xc2\x8d\x0b\xb1\xb1\x6c\x26\x78\x32\x58\xbe\xfa\x2f\x0d\x96\x24\x74\x30\x50\x76\xee\xbe\x34\x4c\x0e\x91\xf4\x37\x74\x29\xb7\x47\x59\x44\x94\x61\x94\x69\xa2\x79\x98\xe1\xbf\xcf\xed\x4d\x0f\x09\x2c\x16\x82\x9b\x5e\x19\x2a\x1e\xd5\x00\xeb\xbc\x98\x02\xc2\xe1\xd9\xb2\x1f\x6e\xc1\x93\x61\x72\x0a\x31\x11\x0b\xff\x2f\xa0\x09\xc7\xe3\x70\xc5\x5a\x5b\x0c\x2c\xef\x74\x10\x41\xed\xc0\x52\xa1\x9d\x40\x25\xd9\x9e\xfe\x5b\x34\x82\xc9\x3b\x7f\x9a\x3e\x49\xa5\x68\x03\x4c\xb5\xe4\x64\xd1\xad\x48\xbf\x36\xf0\x49\xb2\x3d\xf8\x2f\xcc\x5a\x9d\x09\x7f\x0b\xe4\xef\x9d\x84\x83\xf5\x7e\xc0\x78\xdd\xdd\x19\xe9\xa5\xfd\x41\x73\x1c\x9d\x59\xb8\x82\x2c\xb4\x8d\x17\x24\xb6\x7f\xda\x58\x2e\xc3\xe6\x92\x19\xd7\xde\xe5\xfc\xa1\xa9\xfa\x02\xfa\x98\x26\xc4\x38\x4d\x26\x0d\x20\x9e\x6b\xf3\xbd\x39\xfa\x4d\x3f\x97\x51\xdc\x81\x42\x0d\x79\x1e\xd4\x6a\x33\x60\xdc\xdd\x3c\x5c\x4f\xcc\x45\xff\x8b\xd2\xf9\x83\xc0\x4f\xcc\x17\xdc\xd3\xb1\x12\xf2\x40\x05\xdc\xe6\xc0\xc0\x19\xa6\x2c\x0b\xcd\x39\xf6\x41\x3b\x6c\xda\x61\x62\xe9\xe1\xeb\x4d\x6c\x32\x77\x37\x0f\x36\x19\x4f\x08\x48\xd4\x82\x0c\x02\x93\x56\x37\x12\x13\xd7\xe3\x2f\xb3\xe1\xb8\xd1\xf4\xe0\xa1\x83\x89\xed\x89\x07\xed\xdd\x89\x6f\xc4\xe1\xe6\x64\x7c\xff\x97\x9e\xef\x26\xef\x01\x9a\xd4\x4f\x1f\x44\x26\xee\x83\x2e\xe0\xf5\xd4\x15\xe4\x20\x49\x97\xa7\x41\xe0\xd8\xa4\x9e\xcc\xee\x79\x1e\x7d\xfb\x76\x04\xff\x09\x00\x00\xff\xff\x25\x63\x8f\xfe\x2d\x1b\x00\x00" +var _topshotshardedcollectionCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xdc\x58\xcd\x6e\x1c\xb9\x11\xbe\xeb\x29\x4a\x0b\xac\x31\xb3\x91\x66\x24\x20\xc8\x41\x90\x22\x7b\x3d\x56\xac\x00\x96\x0d\x4b\x8b\x3d\x18\x3a\x70\x9a\xd5\x6a\xee\xb0\xc9\x0e\xc9\xd6\x78\x20\x78\x91\xd7\xc8\xeb\xe5\x49\x82\x22\xd9\xdd\xec\x9f\x91\x8c\x1c\x92\x20\x73\x90\xa6\xa7\xc9\x62\xfd\x7c\xf5\x55\xb1\x96\x3f\x1d\x00\x00\xac\xd0\x66\x46\x54\x4e\x68\x75\x06\x6f\x51\x39\xc3\x24\xbc\xd5\x52\x62\x46\xbf\x41\xae\x0d\x30\x90\xcc\x3c\x20\xa8\xba\x5c\xa3\x01\x9d\xc3\x9d\xae\x6e\x0b\xed\xbc\x84\xde\xe7\xe6\xea\xce\x1e\xf8\x9f\x59\xed\x0a\x6d\xec\x19\xfc\x55\xdb\xa2\x66\xf0\x9e\x29\xc5\x14\xfc\xe6\x9f\x16\x85\x7f\x7a\xcd\x59\x55\xa1\x91\x6c\x6d\x17\x99\x2e\xfb\xe2\x7e\x66\xd6\x09\xa6\xe0\x43\x2d\x25\x1a\x58\x87\xc7\xe1\x16\xbf\xe7\xae\x10\x16\x0c\x5a\x5d\x9b\x0c\x41\xaf\x7f\xc3\xcc\x81\xd4\x7a\x63\x81\x29\x0e\x2c\x73\x16\xf0\x2b\xcb\x9c\xdc\x81\x14\x1b\x04\xd6\x58\x00\x1f\x74\x89\xca\x75\x06\x07\xdd\x15\x87\x99\x50\xc0\xc0\xa2\xb2\x38\x07\x5b\xe8\x5a\x72\xf5\xcf\xbf\xff\xc3\x41\xc1\x1e\x11\x9c\x06\xfc\x2a\xac\x3b\x84\x46\x03\x84\xca\xe8\xb5\xc4\x12\x84\x05\x57\x30\x07\x6f\x19\x47\x95\x21\x64\xb5\x31\xa8\xe8\xec\x82\x59\x72\xa6\x28\x85\x63\xde\xbb\xdb\x02\x0d\x82\x97\x60\x9d\x36\x42\x3d\x40\xa9\x0d\xd2\x7e\x05\xbf\x9f\x9e\x9c\x6c\xa2\x35\x16\x82\x3a\x42\x3d\x48\x04\x2e\xbc\xae\xcc\xec\x80\xc2\x63\x0c\xdb\x41\xc6\x14\xe4\x4c\xc8\x45\x50\xe8\x83\xb6\x63\xe3\x2c\x30\x83\xde\x03\x72\x47\x26\xac\x11\xca\x3a\x2b\x8e\xfc\x5f\xb0\x25\xf3\x9e\xf6\x87\xbb\x42\xd8\x23\x68\xbd\xe1\x0d\x4a\x15\x17\x52\xd2\x76\x83\xa5\x7e\x44\x1e\xb4\xcb\x6b\x57\x1b\x04\xe1\xd0\x84\x55\x3a\x6f\x9c\x10\x45\x59\x0d\x25\x29\x56\xa1\xae\x24\x06\x29\x0a\x1f\xd1\x80\x42\xe4\xa4\xd2\x56\x1b\xb3\x03\xb6\xd6\xb5\x03\xe1\xa2\x31\xef\xf5\x96\x16\x1d\x7a\x37\x97\x4c\xa8\x36\x7c\x8c\x97\x42\x09\xeb\xe2\x81\x2c\xcb\x74\xad\x1c\xac\x3e\xbe\xbb\xdd\x23\xd2\x0b\x5c\x63\xc6\x6a\x4b\xaa\x42\x6e\xf0\x6f\x75\x08\x0f\x6d\xb0\xb4\xa3\x14\xca\xc1\x9f\x4f\x4f\x36\xd1\x83\xd6\xa7\x81\x65\x12\x13\x97\x64\x04\x09\x40\x66\x85\xdc\x01\x2a\x0e\x75\xe5\x25\x50\x10\x9d\x86\x42\x4b\x9e\x04\xd3\xc7\xb2\x91\xc6\x1c\x68\x85\xe0\x44\x89\x0b\x2f\xcf\xff\xf9\x45\x39\x21\x5b\xd4\x3c\x20\x2d\x54\x50\x57\x9c\x39\x3c\x8a\x11\x40\xf6\x88\x16\xea\x08\x87\xb5\x70\xe4\x63\x06\x95\xc8\x36\x12\x0f\x93\x6c\xc8\x34\xa5\x72\xe6\x60\x5d\x2b\x2e\x91\xcc\x7a\x40\x57\x20\x65\xf3\xba\x56\x59\x41\x1b\x87\xf8\x68\xc1\xe6\xe5\xf8\x23\x3a\xa8\x1d\x45\x20\xa0\x02\x4e\x1e\x17\xeb\xda\x91\xdc\x02\x41\x28\x2e\x1e\x05\xaf\x99\x6c\x4d\x5c\xa3\xdb\x22\x12\x8e\xb0\x0c\xe2\xb6\x85\x90\x08\xa2\xac\x24\xd2\x12\xef\xa6\x02\xc1\xb2\x12\xa1\xaa\xd7\x52\x64\x20\x94\x43\x93\xb3\x2c\xa6\x04\x0b\xd2\x39\xe6\xac\x96\x63\x34\x77\xb2\x7c\xf0\x17\x31\x15\xaf\x73\xd8\x22\x30\x6b\xeb\x12\x83\xd7\xc2\x46\xb8\x5e\x05\xfc\xd7\x4a\xe4\xda\x94\x72\x97\xd8\xc1\x9b\xc0\xc2\x6d\xc1\x0c\x47\x9e\x1c\xb3\x15\xae\x80\xd3\x13\x10\x4a\xa1\x81\x34\x9b\x02\x2d\x50\x1e\xb0\xb5\x8c\x4a\x3b\xed\x53\x19\xe1\xf4\xe4\x2b\x59\x50\x32\xb5\x6b\xbd\x32\xd3\x06\x7e\x3f\xfd\x30\x8f\xb8\xfe\x95\x9c\xd9\x04\x5c\xd8\x18\x6b\x0f\x5a\x26\xa5\xde\x06\xde\x35\x5d\x10\x04\x36\x49\xe9\xe3\xe0\x7a\x91\x26\x06\xf0\x29\xe9\x84\x41\xbe\x38\x38\xf8\x69\x79\x70\x20\xca\x4a\x1b\x07\x37\x5a\x5d\xd5\xea\x41\xac\x25\xde\xe9\x0d\x2a\xc8\x8d\x2e\xe1\xe4\xeb\xcd\xd5\xdd\x9b\xd5\xea\xf3\xbb\xdb\xdb\x66\x65\x93\x59\x71\xc1\xdd\xc7\x4f\xb7\xef\x3f\xb6\x8b\x0e\xaa\x7a\xdd\x9d\x18\xd7\x8e\x5d\xf6\x14\xec\x5b\x2e\x27\xdc\xe9\xbd\x63\x7b\xd0\x4a\x4a\x4a\xea\xdf\x46\xc6\x9b\x26\x82\xc2\x86\xdd\x9e\x6f\x08\x1a\xb9\x40\x19\xc9\x29\xd3\xc6\xa0\xad\xb4\x0a\x29\x2c\x88\x32\x39\xfc\x48\x45\xeb\xe7\x3a\xdb\xa0\x0b\xe2\x48\xff\xb6\x52\x8c\x94\x3b\x6b\xd4\x58\x0c\xc1\xf6\xc9\x23\xf4\x68\xe4\xc8\xc5\x27\xa3\x1f\x05\x47\x33\xf1\xea\x33\x66\x28\x1e\x27\x5f\x0d\x05\xc3\x13\xb4\xd5\xaf\xfd\xb2\x5c\xc2\xaa\xe7\x23\xa7\x2b\x4b\x3e\xca\x06\x3e\x6a\x0c\x7b\x64\x26\x7d\x77\x06\xaf\x9f\x7e\xb9\x56\xee\x4f\x7f\xec\xec\xea\x0e\xfe\x76\x90\x1e\x44\xcc\xda\xd5\xf7\x75\xf0\x98\x07\x73\x25\x85\x6b\x01\x2c\x94\xd3\xfd\x6d\x82\x20\xbe\xc1\x10\x19\xf6\x80\x81\xf3\x30\xcf\x45\x26\x28\x66\x44\x1a\x15\x1a\xca\x38\xa6\x5c\x4f\x5d\x89\x2e\x09\xcf\x19\x04\x5d\x3b\xb5\x84\x12\x6e\x36\x5e\x30\x87\xa7\x5e\xa7\x60\x51\xe6\x8b\xc4\x6c\x38\x3f\x86\xa7\x6f\xe3\x25\x9d\x24\xb8\x48\x61\xd1\x5b\xb9\x5c\xc2\x5b\x83\xcc\x51\x8f\xa0\x70\x0b\x58\x56\x6e\x97\x38\xd5\x57\x02\x64\x59\x11\x7d\xd4\xdb\x4c\xfe\x17\x8d\x9a\x70\x01\x27\xbd\xb7\x91\x00\xe1\x3c\x39\xbc\xc9\x94\xe7\xec\xf9\x22\xee\xe1\xfc\xf8\xb0\x0d\x61\xe6\xf5\x7b\x47\x8a\x75\xd1\x9c\xcd\x81\xd9\x43\x78\x3d\x8e\xf3\xf8\x00\x01\x17\x20\xe0\x0f\x51\xcf\xd9\xe9\xbc\xb7\xa2\xf3\x5c\x1f\x21\x44\x83\xdc\xb0\x6d\xac\xf9\x94\xc1\x31\x2d\x3d\x55\x50\x41\x23\x88\x16\xd8\xa3\xc8\x54\x02\x41\x21\x6c\x15\x8e\xa0\x45\x6b\x33\xdf\x73\xf4\x60\x91\xd7\xaa\x3d\x6c\xd6\x7c\xb9\x5e\xb5\xe1\x3f\x83\xd7\xa3\x7c\xba\xb9\xba\x1b\xa0\xa2\xa2\x3e\xe3\x69\x64\xbb\x41\x5b\x4b\xb7\x10\x1c\x2e\x2e\x20\x15\xfe\x03\x65\xc0\xf5\xaa\xb1\xa1\x79\xa5\xa8\xa5\x25\xe2\x11\xca\x33\x4c\xe6\x7e\xd8\xe3\xad\x68\xe4\x95\x08\x55\x32\xe2\x83\x4c\xed\xca\x44\x27\x95\x7c\xd6\xdb\x4a\xc9\x10\xb7\xa4\x8a\xc1\x8f\x43\xf0\x8e\xf0\xfa\x6b\x13\x18\x3a\xb5\xf4\x21\x19\x49\x76\x9e\xf4\xcf\x8f\xc7\xe0\x0a\x67\xde\x5f\x2e\x26\x5d\xde\x7d\x9f\x1f\xf6\x84\x1e\xf4\x9d\xea\x6a\x43\xe2\xfd\x31\x7b\xf0\xb3\x66\x2e\x2b\x5a\x5d\x1b\xc1\x16\xca\x5a\x3a\x41\xdd\xa0\xdf\x1c\x3a\xf6\x20\xd0\x86\xee\xc1\x37\xcd\x83\x0e\x3d\xc8\x4c\xc5\x7f\x62\x86\x95\xe8\x90\xae\x1c\x82\xdb\x33\xea\x9d\x42\x67\x1c\x23\x4a\xe5\x3f\xf4\xbc\xfd\x28\x0c\x20\xbb\x47\xfc\xe7\xa0\xd1\x14\xf6\x92\xda\x96\xea\xe9\xcb\x24\x13\xaa\x69\x74\x42\x64\x6c\x2a\xb4\xfd\xf8\x0a\xb6\xa5\xbb\x40\xab\xdb\x28\x25\x7a\xfe\x9b\x79\x13\xbf\x84\x8c\xb8\x9f\x4c\x89\x5e\x39\x4e\xa3\x45\x2c\xe5\x85\x25\x2b\xce\x8f\x5f\xa2\x97\xfd\xd1\x5f\x2e\xe1\xda\xb7\xfc\xd4\x6e\x19\x5d\x3f\x14\xa1\x29\xe4\x21\x96\xdb\x04\x9e\xe5\xb3\x1e\xa7\x0f\xd1\xab\xf0\xf5\x9d\xf6\x8f\xf3\x77\xa0\xf8\x82\x63\xa5\xad\x70\x33\x0f\x9e\x33\x38\x3f\xf6\x00\x9f\xc4\xb2\xe0\xf3\x7d\x4c\xd7\x03\xf1\xe0\x88\x3d\x70\x8e\x07\x83\xf3\xc5\xaf\xe5\x42\x7f\xdf\xe4\x3c\xa5\xb8\x94\x0e\xbb\x9e\x67\x14\xdf\x81\x25\x93\x1c\x37\x1f\xd6\x8b\x09\xc2\x89\x4d\x61\xda\x0d\xed\x27\x1a\x7f\xd8\xc2\x37\x4a\xcf\xd2\x0c\x6d\xea\x58\xe3\x33\xe6\x70\x01\xb3\x57\xfb\xc8\x84\x52\xf6\xd5\xb8\x12\x5d\xce\x0f\x47\xda\xaf\x1a\x37\x52\xff\x91\x3b\xdf\x60\x24\xd6\xf4\x96\xf7\x14\x18\x47\xde\x7f\x99\x3f\xc7\x3e\xab\x41\xcc\x46\x37\x1f\xcf\x35\xc4\x1b\x0f\x75\x8f\x46\x63\xf1\x8a\x47\xda\xd0\x00\xc4\xfc\x46\x1e\x4a\x44\x50\x5c\xd8\x29\x64\xf7\x72\x78\x95\x2a\xfe\x02\xa3\x0c\x7b\x1d\x8a\xc3\x06\x77\xb6\x09\x9d\x5d\x3c\xa0\xbb\x5e\xd9\xd9\x7c\xe4\xd9\xa9\x9c\xf4\x5b\x63\xef\x9c\xd2\x56\x67\x5b\x30\x4d\x2b\x1c\x65\xe5\x06\x77\xb4\xd5\x8b\x18\xe7\xa5\x87\xc2\x74\x48\xec\x74\x3a\x6e\x70\xf7\x6c\x3e\x72\xb4\xce\xe8\x5d\xb4\x73\x4f\x58\x83\xf5\x6d\xbd\x98\xe4\x7c\xe2\x56\xba\xf7\x8d\xec\x1e\x85\xa7\xf1\x65\xc7\xac\xc3\x7c\xf3\x1d\x5e\x4a\xbd\x70\x01\x5f\xee\x47\x1d\xa4\x56\x19\x73\xa8\xc8\xfd\xa4\x02\xdd\xa4\xa5\x1c\x92\xc1\x3e\x0f\x0f\xb3\x6a\xb1\xc7\xe5\x1d\x55\x8e\xf2\x70\x83\xbb\xfb\xcb\x16\x1a\x70\x79\x09\x5f\xee\x27\x24\xd0\x47\x70\xbb\x60\x55\x85\x8a\xcf\x04\x9f\x8f\x96\x7c\x7b\x99\x31\x05\xdf\x17\x9d\x5b\x96\x23\x6c\x59\x98\x35\x69\x63\xf4\x16\x18\x18\xcc\xd1\xf8\x1b\x2f\x5d\x73\x43\x7f\xe5\x63\xc4\x35\x5a\x50\xda\x41\xc5\x94\xc8\x52\x39\x6f\xa4\xd5\xa0\xf4\x16\x2a\x66\x5c\x13\xdb\x97\xef\x54\xed\x38\xe1\xbb\x5a\x86\x33\xe8\x77\x80\x5e\x2f\x4d\x98\xf0\x8f\x9d\xda\xb9\x36\x2f\x35\x09\x6f\x14\x68\x3f\x53\x65\xb2\x6f\x6f\x98\x67\x58\xba\xa0\xd3\x01\x47\xed\x20\x4d\x09\x09\x22\x1c\x5c\x31\x6b\x91\x93\x26\xad\x47\xfc\xac\x71\xcc\x26\xde\xa5\x37\x57\x77\xe4\xe7\x19\x59\xd0\x76\xc8\xaf\xa6\xaa\xc7\xe5\x44\xf5\xf8\x4b\x34\x2f\x56\x84\x68\x3b\x31\x71\xe8\x95\xc2\x19\xc8\xf7\x97\x90\x97\x8b\x47\x53\xa4\x02\x4d\x86\xb6\x3f\x9d\x49\x2a\x3e\x81\x8e\x29\xa4\xed\x6f\x5e\xc7\xae\x10\xdc\xe3\x5e\x09\xb9\xaf\x22\x34\x5b\x9a\xb0\x01\x6b\xad\x1d\x80\xb4\x9d\x3f\xec\x65\x90\xe5\x12\xac\x0e\x30\xee\x6e\x35\x7e\x22\x63\x90\x71\xe0\xcc\xb1\x30\x34\x24\x1e\x28\xd1\x15\x9a\xdb\xd0\x0b\x89\x67\xe2\xfa\x1d\x31\xfd\x37\x6e\x3d\x24\x74\x70\xdb\xe9\xcc\x7d\xee\xa6\xf3\xff\x8e\x9d\x06\x37\x87\xcf\x22\x26\x62\xe1\x7f\x05\x34\x61\x76\x13\xe6\xff\xb5\xc5\xd0\x82\x38\x1d\x44\x50\xaf\x62\xa9\x0a\x1c\x41\x25\xd9\x8e\xfe\x5b\x34\x82\xc9\x1b\x3f\xea\x39\x4a\xa5\x68\x03\x4c\xb5\x95\xd3\xa2\x5b\xd1\xf9\xda\xc0\x27\xc9\x76\xe0\x1f\x98\xb5\x3a\x13\x7e\x44\xe9\x87\xa2\xc2\xc1\x7a\x37\x28\xc7\xdd\x60\x97\xce\xa5\xfd\xe1\xe4\x78\xaf\x63\x61\x3e\x5e\x68\x1b\xa7\x77\xb6\x7f\x15\x5e\x2e\xc3\xe6\x92\x98\xbe\x19\x34\xfe\xe7\xf9\x7b\xcc\xda\x37\x57\x77\x7b\x12\x35\xc4\x79\x90\xab\x4d\xf7\xfb\x5f\xa4\xdd\xef\x04\x7e\xa2\xfe\x8b\x9c\x79\x9d\x03\x03\x67\x98\xb2\x2c\x74\x8e\xb1\x49\xb3\xc3\x8e\x32\xb4\xd3\x47\xfd\x22\x2e\x1b\x47\xda\xa4\x77\x26\x20\x51\x7f\x64\x10\x18\x95\xf9\x28\x31\x31\x3d\xfe\x32\x1b\xf6\xc2\x4d\x83\x38\x34\x30\xd1\x3d\xb1\xa0\x1d\xec\xf9\x2e\x31\x8c\xf5\xc6\xc3\xe9\x74\xf8\x30\x39\xa4\x6a\x42\x3f\x7d\x4b\x9e\x18\x56\x9e\xc1\xeb\xa9\xf9\xf8\x20\x48\xe7\xc7\x41\xe0\x58\xa5\x9e\xcc\xee\xfb\x3c\xda\xf6\xed\x00\xfe\x15\x00\x00\xff\xff\x00\x14\x87\xa1\xca\x1d\x00\x00" func topshotshardedcollectionCdcBytes() ([]byte, error) { return bindataRead( @@ -213,7 +213,7 @@ func topshotshardedcollectionCdc() (*asset, error) { } info := bindataFileInfo{name: "TopShotShardedCollection.cdc", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x8e, 0xe9, 0xd1, 0x85, 0x21, 0x8b, 0x14, 0xbe, 0xdc, 0xd4, 0x11, 0x98, 0x69, 0xce, 0x67, 0x48, 0xe2, 0xeb, 0x2e, 0xb, 0xc9, 0x7c, 0x65, 0x53, 0xeb, 0x8f, 0xb7, 0x7a, 0xdd, 0x6f, 0x6f, 0x78}} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd0, 0x29, 0xe0, 0x1d, 0x24, 0x15, 0x82, 0xfa, 0x92, 0xb8, 0x33, 0x3e, 0xc5, 0x3c, 0xeb, 0x7, 0xb, 0x8c, 0xd3, 0x5c, 0x53, 0xc5, 0xba, 0xc2, 0xbd, 0xbd, 0xdc, 0x1b, 0x96, 0x8, 0x9f, 0x43}} return a, nil } diff --git a/lib/go/events/moment.go b/lib/go/events/moment.go index 5696b40b..d0ee980b 100644 --- a/lib/go/events/moment.go +++ b/lib/go/events/moment.go @@ -17,6 +17,7 @@ type MomentMintedEvent interface { PlayId() uint32 SetId() uint32 SerialNumber() uint32 + SubeditionId() uint32 } type momentMintedEvent cadence.Event @@ -37,6 +38,13 @@ func (evt momentMintedEvent) SerialNumber() uint32 { return uint32(evt.Fields[3].(cadence.UInt32)) } +func (evt momentMintedEvent) SubeditionId() uint32 { + if len(evt.Fields) < 5 { + return 0 + } + return uint32(evt.Fields[4].(cadence.UInt32)) +} + func (evt momentMintedEvent) validate() error { if evt.EventType.QualifiedIdentifier != EventMomentMinted { return fmt.Errorf("error validating event: event is not a valid moment minted event, expected type %s, got %s", diff --git a/lib/go/events/moment_locked.go b/lib/go/events/moment_locked.go new file mode 100644 index 00000000..7cb7f0f3 --- /dev/null +++ b/lib/go/events/moment_locked.go @@ -0,0 +1,55 @@ +package events + +import ( + "fmt" + "github.com/onflow/cadence" + jsoncdc "github.com/onflow/cadence/encoding/json" +) + +var ( + MomentLocked = "TopShotLocking.MomentLocked" +) + +type MomentLockedEvent interface { + FlowID() uint64 + Duration() cadence.UFix64 + ExpiryTimestamp() cadence.UFix64 +} + +type momentLockedEvent cadence.Event + +func (evt momentLockedEvent) FlowID() uint64 { + return uint64(evt.Fields[0].(cadence.UInt64)) +} + +func (evt momentLockedEvent) Duration() cadence.UFix64 { + return evt.Fields[1].(cadence.UFix64) +} + +func (evt momentLockedEvent) ExpiryTimestamp() cadence.UFix64 { + return evt.Fields[2].(cadence.UFix64) +} + +func (evt momentLockedEvent) validate() error { + if evt.EventType.QualifiedIdentifier != MomentLocked { + return fmt.Errorf("error validating event: event is not a valid moment locked event, expected type %s, got %s", + MomentLocked, evt.EventType.QualifiedIdentifier) + } + return nil +} + +var _ MomentLockedEvent = (*momentLockedEvent)(nil) + +func DecodeMomentLockedEvent(b []byte) (MomentLockedEvent, error) { + value, err := jsoncdc.Decode(nil, b) + if err != nil { + return nil, err + } + + event := momentLockedEvent(value.(cadence.Event)) + if err := event.validate(); err != nil { + return nil, fmt.Errorf("error decoding event: %w", err) + } + + return event, nil +} diff --git a/lib/go/events/moment_test.go b/lib/go/events/moment_test.go index de67e688..09187d08 100644 --- a/lib/go/events/moment_test.go +++ b/lib/go/events/moment_test.go @@ -15,6 +15,7 @@ func TestCadenceEvents_MomentMinted(t *testing.T) { playID := uint32(1234) setID := uint32(1234) serialNumber := uint32(1234) + subeditionID := uint32(1234) momentMintedEventType := cadence.EventType{ Location: utils.TestLocation, @@ -36,6 +37,10 @@ func TestCadenceEvents_MomentMinted(t *testing.T) { Identifier: "serialNumber", Type: cadence.UInt32Type{}, }, + { + Identifier: "subeditionId", + Type: cadence.UInt32Type{}, + }, }, Initializer: []cadence.Parameter{}, } @@ -45,6 +50,7 @@ func TestCadenceEvents_MomentMinted(t *testing.T) { cadence.NewUInt32(playID), cadence.NewUInt32(setID), cadence.NewUInt32(serialNumber), + cadence.NewUInt32(subeditionID), }).WithType(&momentMintedEventType) payload, err := jsoncdc.Encode(momentMintedEvent) @@ -57,4 +63,6 @@ func TestCadenceEvents_MomentMinted(t *testing.T) { assert.Equal(t, playID, decodedMomentMintedEventType.PlayId()) assert.Equal(t, setID, decodedMomentMintedEventType.SetId()) assert.Equal(t, serialNumber, decodedMomentMintedEventType.SerialNumber()) + assert.Equal(t, subeditionID, decodedMomentMintedEventType.SubeditionId()) + } diff --git a/lib/go/events/moment_unlocked.go b/lib/go/events/moment_unlocked.go new file mode 100644 index 00000000..4c82a457 --- /dev/null +++ b/lib/go/events/moment_unlocked.go @@ -0,0 +1,45 @@ +package events + +import ( + "fmt" + "github.com/onflow/cadence" + jsoncdc "github.com/onflow/cadence/encoding/json" +) + +var ( + MomentUnlocked = "TopShotLocking.MomentUnlocked" +) + +type MomentUnlockedEvent interface { + FlowID() uint64 +} + +type momentUnlockedEvent cadence.Event + +func (evt momentUnlockedEvent) FlowID() uint64 { + return uint64(evt.Fields[0].(cadence.UInt64)) +} + +func (evt momentUnlockedEvent) validate() error { + if evt.EventType.QualifiedIdentifier != MomentUnlocked { + return fmt.Errorf("error validating event: event is not a valid moment unlocked event, expected type %s, got %s", + MomentUnlocked, evt.EventType.QualifiedIdentifier) + } + return nil +} + +var _ MomentUnlockedEvent = (*momentUnlockedEvent)(nil) + +func DecodeMomentUnlockedEvent(b []byte) (MomentUnlockedEvent, error) { + value, err := jsoncdc.Decode(nil, b) + if err != nil { + return nil, err + } + + event := momentUnlockedEvent(value.(cadence.Event)) + if err := event.validate(); err != nil { + return nil, fmt.Errorf("error decoding event: %w", err) + } + + return event, nil +} diff --git a/lib/go/events/subedition.go b/lib/go/events/subedition.go new file mode 100644 index 00000000..95da089e --- /dev/null +++ b/lib/go/events/subedition.go @@ -0,0 +1,52 @@ +package events + +import ( + "fmt" + + "github.com/onflow/cadence" + jsoncdc "github.com/onflow/cadence/encoding/json" +) + +var ( + EventSubeditionCreated = "TopShot.SubeditionCreated" +) + +type SubeditionCreatedEvent interface { + SubeditionId() uint32 + Name() string + MetaData() map[interface{}]interface{} +} + +type subeditionCreatedEvent cadence.Event + +func (evt subeditionCreatedEvent) SubeditionId() uint32 { + return evt.Fields[0].(cadence.UInt32).ToGoValue().(uint32) +} + +func (evt subeditionCreatedEvent) Name() string { + return evt.Fields[1].(cadence.String).ToGoValue().(string) +} + +func (evt subeditionCreatedEvent) MetaData() map[interface{}]interface{} { + return evt.Fields[2].(cadence.Dictionary).ToGoValue().(map[interface{}]interface{}) +} + +func (evt subeditionCreatedEvent) validate() error { + if evt.EventType.QualifiedIdentifier != EventSubeditionCreated { + return fmt.Errorf("error validating event: event is not a valid subedition created event, expected type %s, got %s", + EventSubeditionCreated, evt.EventType.QualifiedIdentifier) + } + return nil +} + +func DecodeSubeditionCreatedEvent(b []byte) (SubeditionCreatedEvent, error) { + value, err := jsoncdc.Decode(nil, b) + if err != nil { + return nil, err + } + event := subeditionCreatedEvent(value.(cadence.Event)) + if err := event.validate(); err != nil { + return nil, fmt.Errorf("error decoding event: %w", err) + } + return event, nil +} diff --git a/lib/go/events/subedition_added_to_moment.go b/lib/go/events/subedition_added_to_moment.go new file mode 100644 index 00000000..aec6ad26 --- /dev/null +++ b/lib/go/events/subedition_added_to_moment.go @@ -0,0 +1,47 @@ +package events + +import ( + "fmt" + + "github.com/onflow/cadence" + jsoncdc "github.com/onflow/cadence/encoding/json" +) + +var ( + EventSubeditionAddedToMoment = "TopShot.SubeditionAddedToMoment" +) + +type SubeditionAddedToMomentEvent interface { + MomentID() uint64 + SubeditionID() uint32 +} + +type subeditionAddedToMomentEvent cadence.Event + +func (evt subeditionAddedToMomentEvent) MomentID() uint64 { + return evt.Fields[0].(cadence.UInt64).ToGoValue().(uint64) +} + +func (evt subeditionAddedToMomentEvent) SubeditionID() uint32 { + return evt.Fields[1].(cadence.UInt32).ToGoValue().(uint32) +} + +func (evt subeditionAddedToMomentEvent) validate() error { + if evt.EventType.QualifiedIdentifier != EventSubeditionAddedToMoment { + return fmt.Errorf("error validating event: event is not a valid subedition added to moment event, expected type %s, got %s", + EventSubeditionAddedToMoment, evt.EventType.QualifiedIdentifier) + } + return nil +} + +func DecodeSubeditionAddedToMomentEvent(b []byte) (SubeditionAddedToMomentEvent, error) { + value, err := jsoncdc.Decode(nil, b) + if err != nil { + return nil, err + } + event := subeditionAddedToMomentEvent(value.(cadence.Event)) + if err := event.validate(); err != nil { + return nil, fmt.Errorf("error decoding event: %w", err) + } + return event, nil +} diff --git a/lib/go/events/subedition_added_to_moment_test.go b/lib/go/events/subedition_added_to_moment_test.go new file mode 100644 index 00000000..ced9aae8 --- /dev/null +++ b/lib/go/events/subedition_added_to_moment_test.go @@ -0,0 +1,49 @@ +package events + +import ( + "testing" + + "github.com/stretchr/testify/require" + + "github.com/onflow/cadence" + jsoncdc "github.com/onflow/cadence/encoding/json" + "github.com/onflow/cadence/runtime/tests/utils" + "github.com/stretchr/testify/assert" +) + +func TestCadenceEvents_SubeditionAddedToMoment(t *testing.T) { + var ( + subeditionID = uint32(1234) + momentID = uint64(1234) + ) + + playCreatedEventType := cadence.EventType{ + Location: utils.TestLocation, + QualifiedIdentifier: "TopShot.SubeditionAddedToMoment", + Fields: []cadence.Field{ + { + Identifier: "momentID", + Type: cadence.UInt64Type{}, + }, + { + Identifier: "subeditionID", + Type: cadence.UInt32Type{}, + }, + }, + Initializer: []cadence.Parameter{}, + } + + subeditionAddedToMomentEvent := cadence.NewEvent([]cadence.Value{ + cadence.NewUInt64(momentID), + cadence.NewUInt32(subeditionID), + }).WithType(&playCreatedEventType) + + payload, err := jsoncdc.Encode(subeditionAddedToMomentEvent) + require.NoError(t, err, "failed to encode subedition added to moment cadence event") + + decodedPlayCreatedEventType, err := DecodeSubeditionAddedToMomentEvent(payload) + require.NoError(t, err, "failed to decode subedition added to moment cadence event") + + assert.Equal(t, momentID, decodedPlayCreatedEventType.MomentID()) + assert.Equal(t, subeditionID, decodedPlayCreatedEventType.SubeditionID()) +} diff --git a/lib/go/events/subedition_test.go b/lib/go/events/subedition_test.go new file mode 100644 index 00000000..743bb443 --- /dev/null +++ b/lib/go/events/subedition_test.go @@ -0,0 +1,65 @@ +package events + +import ( + "testing" + + "github.com/stretchr/testify/require" + + "github.com/onflow/cadence" + jsoncdc "github.com/onflow/cadence/encoding/json" + "github.com/onflow/cadence/runtime/tests/utils" + "github.com/stretchr/testify/assert" +) + +func TestCadenceEvents_SubeditionCreated(t *testing.T) { + var ( + id = uint32(1234) + name = "Subedition #1" + setKey = "setID" + setValue = "1234" + playKey = "playID" + playValue = "1234" + ) + + playCreatedEventType := cadence.EventType{ + Location: utils.TestLocation, + QualifiedIdentifier: "TopShot.SubeditionCreated", + Fields: []cadence.Field{ + { + Identifier: "subeditionId", + Type: cadence.UInt32Type{}, + }, + { + Identifier: "name", + Type: cadence.StringType{}, + }, + { + Identifier: "metadata", + Type: cadence.DictionaryType{}, + }, + }, + Initializer: []cadence.Parameter{}, + } + + subeditionCreatedEvent := cadence.NewEvent([]cadence.Value{ + cadence.NewUInt32(id), + NewCadenceString(name), + cadence.NewDictionary([]cadence.KeyValuePair{ + {Key: NewCadenceString(setKey), Value: NewCadenceString(setValue)}, + {Key: NewCadenceString(playKey), Value: NewCadenceString(playValue)}, + }), + }).WithType(&playCreatedEventType) + + payload, err := jsoncdc.Encode(subeditionCreatedEvent) + require.NoError(t, err, "failed to encode play created cadence event") + + decodedSubeditionCreatedEventType, err := DecodeSubeditionCreatedEvent(payload) + require.NoError(t, err, "failed to decode play created cadence event") + + assert.Equal(t, id, decodedSubeditionCreatedEventType.SubeditionId()) + assert.Equal(t, name, decodedSubeditionCreatedEventType.Name()) + assert.Equal(t, map[interface{}]interface{}{ + setKey: setValue, + playKey: playValue, + }, decodedSubeditionCreatedEventType.MetaData()) +} diff --git a/lib/go/templates/data/play_metadata.go b/lib/go/templates/data/play_metadata.go index 9d18b87d..5a47895d 100644 --- a/lib/go/templates/data/play_metadata.go +++ b/lib/go/templates/data/play_metadata.go @@ -4,24 +4,24 @@ package data // It also does not allow for null values, so we will be omitting them if empty // Reference: https://docs.google.com/spreadsheets/d/1muUZowii0pqoyi6OPK1VPNJi7keSc8_5zI9vu_QvfOY/edit#gid=375111836 type PlayMetadata struct { - FullName string - FirstName string - LastName string - Birthdate string - Birthplace string - JerseyNumber string + FullName string `json:",omitempty"` // Not all plays have player information. Can be blank + FirstName string `json:",omitempty"` // Not all plays have player information. Can be blank + LastName string `json:",omitempty"` // Not all plays have player information. Can be blank + Birthdate string `json:",omitempty"` // Not all plays have player information. Can be blank + Birthplace string `json:",omitempty"` // Not all plays have player information. Can be blank + JerseyNumber string `json:",omitempty"` // Not all plays have player information. Can be blank DraftTeam string `json:",omitempty"` // Not all plays have draft information. Can be blank DraftYear *int32 `json:",omitempty,string"` // Not all plays have draft information. Can be blank DraftSelection string `json:",omitempty"` // Not all plays have draft information. Can be blank DraftRound string `json:",omitempty"` // Not all plays have draft information. Can be blank TeamAtMomentNBAID string TeamAtMoment string - PrimaryPosition string - PlayerPosition string - Height *int32 `json:",string"` - Weight *int32 `json:",string"` - TotalYearsExperience string - NbaSeason string + PrimaryPosition string `json:",omitempty"` // Not all plays have player information. Can be blank + PlayerPosition string `json:",omitempty"` // Not all plays have player information. Can be blank + Height *int32 `json:",omitempty,string"` // Not all plays have player information. Can be blank + Weight *int32 `json:",omitempty,string"` // Not all plays have player information. Can be blank + TotalYearsExperience string `json:",omitempty"` // Not all plays have player information. Can be blank + NbaSeason string `json:",omitempty"` // Not all plays have player information. Can be blank DateOfMoment string PlayCategory string PlayType string @@ -33,6 +33,7 @@ type PlayMetadata struct { PlayerAutographDate string `json:",omitempty"` PlayerAutographSigner string `json:",omitempty"` OverrideHeadline string `json:",omitempty"` + Tagline string } // GenerateEmptyPlay generates a play with all its fields @@ -64,5 +65,6 @@ func GenerateEmptyPlay(fullName string) PlayMetadata { PlayerAutographDate: "", PlayerAutographSigner: "", OverrideHeadline: "", + Tagline: "", } } diff --git a/lib/go/templates/internal/assets/assets.go b/lib/go/templates/internal/assets/assets.go index b2c8587b..8e1ddced 100644 --- a/lib/go/templates/internal/assets/assets.go +++ b/lib/go/templates/internal/assets/assets.go @@ -3,19 +3,27 @@ // ../../../transactions/admin/add_play_to_set.cdc (972B) // ../../../transactions/admin/add_plays_to_set.cdc (759B) // ../../../transactions/admin/batch_mint_moment.cdc (1.534kB) +// ../../../transactions/admin/batch_mint_moment_with_subedition.cdc (1.64kB) +// ../../../transactions/admin/create_new_subedition_admin_resource.cdc (602B) // ../../../transactions/admin/create_play.cdc (1.026kB) // ../../../transactions/admin/create_set.cdc (929B) // ../../../transactions/admin/create_set_and_play_struct.cdc (296B) +// ../../../transactions/admin/create_subedition.cdc (1.026kB) // ../../../transactions/admin/fulfill_pack.cdc (1.502kB) +// ../../../transactions/admin/grant_topshot_locking_admin.cdc (561B) // ../../../transactions/admin/lock_set.cdc (795B) // ../../../transactions/admin/mark_moment_unlockable.cdc (925B) // ../../../transactions/admin/mint_moment.cdc (1.399kB) +// ../../../transactions/admin/mint_moment_with_subedition.cdc (1.524kB) // ../../../transactions/admin/retireAll_plays_from_set.cdc (756B) // ../../../transactions/admin/retire_all.cdc (807B) // ../../../transactions/admin/retire_play_from_set.cdc (1.02kB) +// ../../../transactions/admin/set_nft_subedition.cdc (769B) +// ../../../transactions/admin/set_nfts_lock_expiry.cdc (546B) // ../../../transactions/admin/start_new_series.cdc (763B) // ../../../transactions/admin/transfer_admin.cdc (606B) // ../../../transactions/admin/unlock_all_moments.cdc (422B) +// ../../../transactions/admin/update_tagline.cdc (1.243kB) // ../../../transactions/market/change_percentage.cdc (942B) // ../../../transactions/market/change_price.cdc (879B) // ../../../transactions/market/change_receiver.cdc (810B) @@ -43,6 +51,7 @@ // ../../../transactions/marketV3/start_sale.cdc (829B) // ../../../transactions/marketV3/stop_sale.cdc (1.34kB) // ../../../transactions/marketV3/upgrade_sale.cdc (1.463kB) +// ../../../transactions/scripts/collections/borrow_nft_safe.cdc (1.027kB) // ../../../transactions/scripts/collections/get_collection_ids.cdc (742B) // ../../../transactions/scripts/collections/get_id_in_Collection.cdc (690B) // ../../../transactions/scripts/collections/get_locked_nfts_length.cdc (255B) @@ -57,7 +66,7 @@ // ../../../transactions/scripts/collections/get_moment_setName.cdc (1.027kB) // ../../../transactions/scripts/collections/get_setplays_are_owned.cdc (1.685kB) // ../../../transactions/scripts/get_currentSeries.cdc (270B) -// ../../../transactions/scripts/get_nft_metadata.cdc (1.289kB) +// ../../../transactions/scripts/get_nft_metadata.cdc (3.92kB) // ../../../transactions/scripts/get_topshot_metadata.cdc (628B) // ../../../transactions/scripts/get_totalSupply.cdc (307B) // ../../../transactions/scripts/plays/get_all_plays.cdc (271B) @@ -73,16 +82,21 @@ // ../../../transactions/scripts/sets/get_setSeries.cdc (397B) // ../../../transactions/scripts/sets/get_set_data.cdc (403B) // ../../../transactions/scripts/sets/get_set_locked.cdc (458B) +// ../../../transactions/scripts/subeditions/get_all_subeditions.cdc (282B) +// ../../../transactions/scripts/subeditions/get_nextSubeditionID.cdc (317B) +// ../../../transactions/scripts/subeditions/get_nft_subedition.cdc (228B) +// ../../../transactions/scripts/subeditions/get_subedition_by_id.cdc (436B) // ../../../transactions/shardedCollection/batch_from_sharded.cdc (1.086kB) -// ../../../transactions/shardedCollection/setup_sharded_collection.cdc (1.271kB) +// ../../../transactions/shardedCollection/setup_sharded_collection.cdc (1.375kB) // ../../../transactions/shardedCollection/transfer_from_sharded.cdc (1.042kB) // ../../../transactions/user/batch_lock_moments.cdc (852B) // ../../../transactions/user/batch_transfer.cdc (1.111kB) // ../../../transactions/user/batch_unlock_moments.cdc (432B) // ../../../transactions/user/destroy_moments.cdc (1.23kB) +// ../../../transactions/user/destroy_moments_v2.cdc (1.167kB) // ../../../transactions/user/lock_fake_nft.cdc (851B) // ../../../transactions/user/lock_moment.cdc (785B) -// ../../../transactions/user/setup_account.cdc (990B) +// ../../../transactions/user/setup_account.cdc (1.018kB) // ../../../transactions/user/transfer_moment.cdc (1.509kB) // ../../../transactions/user/transfer_moment_v3_sale.cdc (1.529kB) // ../../../transactions/user/unlock_moment.cdc (525B) @@ -215,6 +229,46 @@ func TransactionsAdminBatch_mint_momentCdc() (*asset, error) { return a, nil } +var _TransactionsAdminBatch_mint_moment_with_subeditionCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x53\xcd\x6e\xdb\x3c\x10\xbc\xfb\x29\xf6\xcb\xe1\x8b\x0c\x24\x56\xd1\x16\x3d\x18\xf9\x81\x11\x37\x6d\x80\x26\x31\x62\x17\x3d\x53\xd4\xca\x62\x4b\x91\x2a\xb9\x8a\x63\x04\x7e\xf7\x82\xa4\xa8\x1f\xb7\x28\xea\x8b\xa5\xd5\xee\xcc\x70\x76\x28\xaa\x5a\x1b\x82\x8d\xae\xd7\xa5\x26\x28\x8c\xae\xe0\xcd\xcb\xe6\x71\xb5\xfe\xfc\xb8\x59\x2c\x97\x4f\x1f\xd7\xeb\xc9\x24\x4d\x61\x53\x0a\x0b\x64\x98\xb2\x8c\x93\xd0\x0a\x2a\xa1\xc8\x42\xd5\x48\x12\xb5\x44\xa8\x74\x85\x8a\xac\x6b\xf5\x20\x0c\xac\x50\x5b\x89\x60\x91\xd2\x5a\xb2\x7d\x6a\x9b\x0c\x73\xe1\x67\xb9\xae\x32\xa1\x98\x7b\xf6\xe0\x2b\x66\x58\x85\x84\xc6\xce\x27\x69\xea\x2a\x16\xe9\x6e\x39\x07\x2a\x11\xee\x96\xa0\x0b\xff\x64\x91\x80\x34\x64\xe8\xc9\x31\xf7\x4c\xae\xdb\xe1\xff\xde\xbe\x92\x6c\x1f\xc4\xec\x4a\xc1\x4b\x5f\xbb\x0f\x32\x81\x99\x08\xe2\xd9\x3a\x69\x63\x14\x87\x7b\x6a\x07\x9f\x5d\xf3\xcf\x86\x29\x12\xb4\x0f\x8d\xf1\xcd\xb5\x47\xf0\xa1\x46\x37\x61\x90\x8b\x5a\xa0\xa2\x45\x9e\x9b\x30\x76\x2b\xf5\x0e\x58\x9e\x1b\xb4\x36\xea\x65\x9c\xeb\x46\x91\x6b\x47\xf1\x2c\xd4\xd6\x57\xb9\x96\x12\x83\xe5\xba\x88\x07\x8f\x6e\x4f\x06\x1b\x49\x5a\xcf\xbe\xde\x29\x7a\xf7\xf6\xac\x33\x25\xbe\xf7\xba\x5d\xe5\xc3\xfb\xb3\xa3\x63\xc7\xbe\x23\xb5\x8b\x20\x72\x0a\xaf\x93\x09\x00\x40\x9a\xc2\x17\xcd\x99\x84\x67\x66\x04\xcb\x24\x42\xa1\x8d\x57\x4a\xba\xb6\x2e\x44\x8b\xbc\x12\x0a\x74\xf6\x1d\x39\xf9\x11\x89\x04\xcc\x15\x9f\xb0\x98\xc3\xff\x6d\xd8\x66\xbe\x2f\x80\xd6\x06\x6b\x66\x30\x61\x9c\xd3\x1c\x16\x0d\x95\x8b\x60\x46\x47\xdb\x52\x67\xda\x18\xe7\x1c\x18\x2c\xd0\xa0\xe2\x8e\xd6\xb3\x07\x56\x83\x56\x37\x86\x23\x08\x05\x96\xb4\x61\x5b\xec\xc6\x2d\xca\x62\x16\x75\xc0\xa5\xf3\x9b\x66\x01\xf0\x62\x2c\xea\x2a\x71\xb1\x99\x43\xda\x42\xa4\xed\x57\xff\x71\xfa\x9f\x47\x3c\x04\x5d\xf8\x82\xbc\x21\xfc\x67\x99\x7f\xce\x70\x1c\x75\x4e\x59\xa4\xa0\x6f\xa4\xb7\x15\xba\x46\x8a\x7b\xf6\x7f\xd3\x11\xed\xbd\x50\x04\x4c\x4a\xcf\xa4\x70\x07\x0f\xb7\x1b\x0b\x3b\x41\x25\xac\xbb\x5d\xdb\x11\xdb\x20\x5e\x17\xe7\x2d\xf7\x2c\x63\xc4\x4b\x07\x16\x12\xfd\x4d\x50\xd9\xcf\x27\x31\x58\xe1\x7f\x18\xac\xf8\x74\x1c\xad\xe1\xdb\x58\xf1\x27\x67\xc7\x20\xfb\x21\x35\x5d\xa4\xba\x2c\xc6\x3b\xd2\x9a\x46\xfa\x07\x1e\x1d\xa4\x6f\xbd\x84\x2d\x52\x9b\x9f\x64\x94\xe6\x31\xf7\xb6\xe5\xbe\xe9\x2d\xe8\xd7\x35\x50\x80\xe2\x19\xcd\x31\x97\x2f\x86\x3d\x75\x14\xb3\x2d\xd2\x0d\xab\x59\x26\xa4\xa0\x7d\x92\xd6\x4d\x26\x05\x4f\x83\x89\x3d\xcb\xb4\x0b\xdd\x6b\x4c\xdd\x71\xcb\xca\x4f\x1e\xae\x92\x69\xc7\xeb\x7e\xd7\xd7\x50\x33\x25\x78\x72\x72\xc3\x94\xd2\xf4\x97\x9c\x75\xa2\x4e\xed\x60\xc7\x27\x63\x07\x72\xac\xb5\x15\xc1\x85\x87\xdb\x8d\xbb\x34\xc3\x33\x0f\x27\xbb\xb1\xc1\xd9\x43\x4e\x96\x01\x24\x09\x3b\x99\xc3\xc5\x79\x3f\x35\x6d\xaf\xca\xe1\x57\x00\x00\x00\xff\xff\x4e\x72\x93\x68\x68\x06\x00\x00" + +func TransactionsAdminBatch_mint_moment_with_subeditionCdcBytes() ([]byte, error) { + return bindataRead( + _TransactionsAdminBatch_mint_moment_with_subeditionCdc, + "../../../transactions/admin/batch_mint_moment_with_subedition.cdc", + ) +} + +func TransactionsAdminBatch_mint_moment_with_subeditionCdc() (*asset, error) { + bytes, err := TransactionsAdminBatch_mint_moment_with_subeditionCdcBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "../../../transactions/admin/batch_mint_moment_with_subedition.cdc", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa1, 0x86, 0x52, 0x23, 0x91, 0x8d, 0xa5, 0xbe, 0xc2, 0x14, 0x95, 0x79, 0x17, 0x65, 0xba, 0x95, 0x8, 0xca, 0xbe, 0x65, 0x45, 0xc2, 0x9b, 0x78, 0x97, 0xb5, 0x7e, 0xb9, 0x39, 0x21, 0x7e, 0x18}} + return a, nil +} + +var _TransactionsAdminCreate_new_subedition_admin_resourceCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x91\x41\x6b\x9e\x40\x10\x86\xef\xfe\x8a\x97\x1c\x8a\xb9\x68\xcf\x1f\x6d\x83\x34\x85\x1e\x0a\x29\xd1\x3f\x30\xae\x63\xdd\xa2\x3b\x32\x3b\x36\x81\x90\xff\x5e\xd6\x35\xd2\x0f\x7a\xc8\x5e\x77\xe6\x79\x9f\x97\xf1\xcb\x2a\x6a\xe8\x64\x6d\x27\x31\x8c\x2a\x0b\x3e\x3e\x77\x0f\x3f\xdb\xef\x0f\x5d\x73\x7f\xff\xf8\xad\x6d\x8b\xa2\xae\xd1\x4d\x3e\xc2\x94\x42\x24\x67\x5e\x02\x7c\xc4\x28\x0a\x9b\x18\x34\x2c\x3e\xc0\x04\x4e\x99\x8c\x41\x08\xfc\x84\xb8\xf5\x3c\xf8\x7d\x36\x0f\x28\x47\xd9\xd4\x71\xc2\x51\x18\x10\x4d\x94\xe1\x0d\x69\x79\x62\x98\xac\x88\xc9\x22\x2e\xa4\x06\x27\xc1\x94\x9c\x15\xc5\x3f\xb1\xe5\x2d\x5e\x8a\x02\x00\xea\x1a\x3f\xc4\xd1\x8c\x3f\xa4\x9e\xfa\x99\x4f\x1d\x93\x75\xc7\x34\x7b\xaa\xf4\xbf\xd9\xd9\xbe\x32\xb3\x65\x95\x47\x1e\x2f\xf8\x70\x94\xae\xf6\xb9\x0c\x5d\x95\x57\x52\x2e\xc9\x39\xbb\xa0\xd9\x6c\x6a\x9c\x93\x2d\xd8\x19\x7b\x44\xf7\xa2\x2a\x4f\x20\x28\x8f\xac\x1c\x5c\x8a\xdd\xd3\x9b\xab\xae\xa9\x5b\xea\x49\xbf\xf8\x5c\x8f\x3c\x8f\xd5\x9b\x07\x3e\x23\x85\x55\x19\xf8\xe9\x5a\xea\x4b\x99\x0e\x72\x41\x7d\x20\xea\xe3\x77\xff\xbc\x3d\x81\xe9\xdd\xdd\x61\xa5\xe0\x5d\x79\xf3\x55\xb6\x79\x40\x10\x7b\xb7\xe4\x4d\x46\xbd\xe6\x86\xfc\xcc\x6e\x33\xc6\xcb\xff\x85\xab\x7c\xe4\xf6\xbc\x6e\x93\x3f\x32\xaa\x7c\x43\xbd\xfe\x0d\x00\x00\xff\xff\x93\x89\xfa\x70\x5a\x02\x00\x00" + +func TransactionsAdminCreate_new_subedition_admin_resourceCdcBytes() ([]byte, error) { + return bindataRead( + _TransactionsAdminCreate_new_subedition_admin_resourceCdc, + "../../../transactions/admin/create_new_subedition_admin_resource.cdc", + ) +} + +func TransactionsAdminCreate_new_subedition_admin_resourceCdc() (*asset, error) { + bytes, err := TransactionsAdminCreate_new_subedition_admin_resourceCdcBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "../../../transactions/admin/create_new_subedition_admin_resource.cdc", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x8d, 0x2b, 0xbd, 0xa7, 0xd6, 0x48, 0x5e, 0x15, 0xbd, 0xf5, 0x72, 0x94, 0xf9, 0xd, 0x59, 0xed, 0xb0, 0x22, 0x5e, 0x3a, 0xbe, 0x8f, 0xf, 0xc1, 0xff, 0x9a, 0x38, 0x7e, 0xd8, 0x7b, 0xfd, 0x6b}} + return a, nil +} + var _TransactionsAdminCreate_playCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x6c\x53\x4d\x8b\xdb\x3c\x10\xbe\xfb\x57\x3c\x6f\x0e\x2f\x59\x28\x71\x69\x6f\x6e\xb7\x4b\x68\x0a\x5d\x68\xbb\xcb\x26\xa5\xe7\x89\x3c\x4e\x54\x6c\xc9\x8c\xc6\x4d\xc2\x92\xff\x5e\x24\x3b\xce\x07\xcd\x25\x42\x9a\xe7\x6b\x66\x6c\x9b\xd6\x8b\x62\xe5\xdb\xe5\xd6\x2b\x2a\xf1\x0d\xde\xee\x57\x4f\xcf\xcb\xaf\x4f\xab\xf9\x62\xf1\xf2\x65\xb9\xcc\xb2\x3c\xc7\x6a\x6b\x03\x54\xc8\x05\x32\x6a\xbd\x83\x11\x26\xe5\x00\x82\xe3\x1d\xda\x9a\x0e\x08\x2a\x9d\x51\xc4\x72\x72\x25\x82\x7a\xe1\x00\xab\xb0\x0e\xba\xe5\xa8\x82\x24\x13\x1a\x12\x85\xf1\x4e\x85\x8c\xc6\xfa\x5f\x0c\xd3\x89\xb0\xd3\x3a\xf1\x58\xb7\xb1\xd5\x21\xa1\x1a\x56\x2a\x49\x29\x71\x5a\x17\x58\xb4\xe7\x54\x9f\xde\x23\xfc\xd2\x58\x8f\x7e\x83\x75\xa7\xd8\x91\x53\xa8\x47\x17\xf8\xaa\x86\x64\xd3\x35\xec\x34\x20\x78\xef\x52\xc0\x67\x12\x6a\x58\x59\x42\x91\xe5\x79\xbc\x39\x09\x17\x98\xa3\xb4\x09\x48\x72\x80\xaf\x40\x75\x9d\xa4\x53\xea\xb3\xbf\x10\xbc\xb1\xa4\x5c\x66\xd9\x85\xd8\xf4\xcc\xf3\xba\x4c\xde\x0a\xf4\xff\xc7\x3b\xbc\x66\x19\x00\xe4\x39\xbe\x79\x43\x35\xfe\x90\x58\x5a\xd7\x8c\xca\x4b\x92\x50\xdf\x86\xd8\xb2\x79\xd9\x58\x07\xbf\xfe\xcd\x46\x13\xa4\x66\x05\xc5\xcb\x17\xae\x0a\xfc\x3f\x4c\x70\x96\xea\xc6\x82\xd8\xd3\xe7\x9a\x0e\x8f\x8b\x02\x3f\x1f\x9d\xbe\x7f\xd7\xeb\xb5\xc2\x2d\x09\x4f\xc9\x18\x2d\x30\xef\x74\x3b\x37\xc6\x77\x4e\x47\x47\x83\xab\xb5\x17\xf1\x3b\x10\x84\x2b\x16\x76\x26\x3a\x4a\xc6\x92\x36\x84\x83\xef\xc4\xf0\x88\x09\x5c\x57\xb3\xb3\x2c\xee\x4f\xbb\x35\x73\xbc\xd7\xfe\xf2\xc3\x75\xf5\x29\x05\xee\x11\xfd\xcc\x7a\xcd\x8f\xd7\x91\x3e\x4d\xe3\x6e\x16\xc8\xe3\x56\xd1\x86\xf3\xe1\x35\x3d\xde\x8d\x84\xf1\xf7\xf0\x80\x96\x9c\x35\xd3\xc9\x0f\x7f\x63\x33\x6e\xe2\x40\x30\xe9\x41\xc7\x3e\x2e\xef\xd9\x74\xca\x37\xe9\x3f\xa7\x1d\x07\xf5\x83\xde\x59\xdd\xa6\xe8\xa1\x65\x63\x2b\xcb\xe5\x38\xfb\x7f\x07\x9a\xf5\xdf\x48\x0c\x7d\xb1\x04\xa7\xd3\x95\x7e\xeb\x83\xe2\x75\xa4\x19\x0f\xa7\x1e\x6c\x38\xf5\xee\x3b\x2b\x2d\x48\x69\xda\x0e\x43\xbd\x69\xf7\x1d\xfe\xbb\x87\xb3\x75\x71\xd5\x90\x49\x5f\x8d\xd2\x73\x70\x0a\xde\xdb\xa0\x93\x41\xfd\xf8\x37\x00\x00\xff\xff\x12\x5d\x9c\x74\x02\x04\x00\x00" func TransactionsAdminCreate_playCdcBytes() ([]byte, error) { @@ -275,6 +329,26 @@ func TransactionsAdminCreate_set_and_play_structCdc() (*asset, error) { return a, nil } +var _TransactionsAdminCreate_subeditionCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x6c\x52\xd1\x6a\xdb\x40\x10\x7c\xf7\x57\x4c\xfd\x50\x64\x28\x56\x69\xdf\xd4\xa6\xc1\xad\x0b\x0d\x94\x24\x44\xee\x07\xac\x4f\xab\xf8\x8a\x74\x27\xf6\x56\x8d\x43\xc8\xbf\x97\x3b\x29\xb2\x1c\xa2\x27\x71\xbb\xb3\x33\xb3\x3b\xb6\xed\xbc\x28\x76\xbe\x2b\x0f\x5e\x51\x8b\x6f\xf1\xf1\xb8\xbb\xb9\x2d\x7f\xdd\xec\x36\xdb\xed\xdd\xcf\xb2\x5c\x2c\xf2\x1c\xbb\x83\x0d\x50\x21\x17\xc8\xa8\xf5\x0e\x46\x98\x94\x03\x08\x8e\x1f\x10\xfa\x3d\x57\x36\x15\x82\x4a\x6f\x34\x62\xc8\x55\x08\xea\x85\x03\xac\xc2\x3a\xe8\x81\x23\x15\x12\x57\x68\x49\x14\xc6\x3b\x15\x32\x9a\x48\x6e\x49\xa8\x65\x65\x09\xc5\x22\xcf\xe3\x8b\xa3\x96\x0b\x24\x60\xfc\x85\xaf\x47\xc2\xf2\x44\xa8\x1e\x7b\x1e\xf5\x54\x11\xd4\xb2\x52\x45\x4a\x05\x36\xa8\x6c\x92\x4b\xf2\x98\xb0\x4d\x93\x66\x75\x0d\x3d\x4e\x6d\xa0\x10\xbc\xb1\x09\xbd\x98\x59\xcc\x12\x79\xa9\x62\xdd\xfd\x87\xd3\xd0\xa7\xe1\x65\x2c\x3c\xaf\xf0\xb4\x58\x00\x40\x9e\xe3\xb7\x37\xd4\xe0\x1f\x89\xa5\x7d\xc3\xa8\xbd\x24\x36\xf5\x5d\x88\x8e\x37\x55\x6b\x1d\xfc\xfe\x2f\x1b\x4d\x90\x86\x15\x14\x1f\xef\xb8\x2e\xf0\x7e\xbc\xc2\x3a\xf5\x4d\x0d\xa6\x17\x39\xb9\xbd\xda\x16\xf8\x73\xe5\xf4\xf3\xa7\x81\xb5\x13\xee\x48\x38\x23\x63\xb4\xc0\xa6\xd7\xc3\xc6\x18\xdf\x3b\x9d\x74\x8d\xda\xf6\x5e\xc4\x3f\x80\x20\x5c\xb3\xb0\x33\x51\x57\x92\x97\x14\x40\x38\xf8\x5e\x0c\x4f\x98\xc0\x4d\xbd\x7e\x4d\x8e\x8b\x97\xac\xac\xef\x59\xaf\xf9\xa8\xf3\x6a\xb6\xfa\x72\x0e\x7f\x31\x87\x0b\x44\x81\xeb\x41\xc4\xd7\x73\xa7\xdf\xb2\x18\xbb\x02\x79\xcc\x0a\xdd\x73\x3e\x56\x53\x71\x35\x0d\x8c\xdf\xe5\x25\x3a\x72\xd6\x64\xcb\x6b\xff\x4a\x77\xcc\xd7\x38\x60\x39\x80\x9e\x07\xff\x7c\x64\xd3\x2b\xbf\x5a\xc7\x8f\x14\x17\xd0\x3c\xb9\x0f\x56\x0f\x69\x23\xa1\x63\x63\x6b\xcb\xd5\x74\xf5\xb7\x6d\xad\x87\xd0\x9d\x56\x30\x44\x26\x45\x75\x96\x98\xe9\xef\x4c\x57\xe7\x83\xce\x45\xcd\xf6\x7a\x1a\xf8\xfd\xf1\x6a\x9b\x85\xb3\xeb\xbf\x79\x97\x15\xde\x5d\xc0\xd9\xa6\x38\x5b\xd7\xf2\xa5\x45\xd3\xed\x2a\xcf\xc1\x29\xf8\x68\x83\x2e\x47\x29\xcf\xff\x03\x00\x00\xff\xff\x41\x20\x7a\xa8\x02\x04\x00\x00" + +func TransactionsAdminCreate_subeditionCdcBytes() ([]byte, error) { + return bindataRead( + _TransactionsAdminCreate_subeditionCdc, + "../../../transactions/admin/create_subedition.cdc", + ) +} + +func TransactionsAdminCreate_subeditionCdc() (*asset, error) { + bytes, err := TransactionsAdminCreate_subeditionCdcBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "../../../transactions/admin/create_subedition.cdc", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc1, 0x4b, 0xac, 0xfc, 0x4a, 0x90, 0x16, 0x9f, 0x40, 0xc9, 0xbe, 0xf1, 0x62, 0xf0, 0xa3, 0x9, 0xbf, 0xa0, 0x3, 0xbd, 0xf2, 0xc5, 0xb, 0xe3, 0x1f, 0xb8, 0x2f, 0xc6, 0x44, 0x5d, 0x4, 0x83}} + return a, nil +} + var _TransactionsAdminFulfill_packCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\x54\xcd\x6e\xdb\x3c\x10\xbc\xeb\x29\xf6\xf3\xe1\x8b\x0c\xb4\x66\x0f\x45\x0f\x42\x7e\x60\x44\x09\x92\x43\x93\x20\x72\xd1\x43\xd1\x03\x45\xad\x2d\x36\x32\x29\x90\xab\xb8\x41\x90\x77\x2f\x48\x51\x7f\x76\xd2\xf6\x50\x1e\x04\x81\x9a\xdd\x99\x1d\x8e\x28\xb7\xb5\x36\x04\x37\x5a\x5d\x36\x6a\x23\xf3\x0a\x57\xfa\x01\x15\xac\x8d\xde\xc2\x87\x9f\x37\x97\xab\x65\x9a\xde\x5f\x64\x59\x14\x90\x2b\x5d\x67\xa5\xa6\x0e\xb0\xba\xbd\xcb\xae\x6e\xdf\x00\x65\x25\x37\x05\x16\xe7\xba\xaa\x50\x90\xd4\x7d\xdb\xec\x6a\x79\x9f\x5e\xa4\x5d\x55\xc4\x18\xac\x4a\x69\x81\x0c\x57\x96\xb7\x50\x69\x61\x57\x72\xdf\x0b\x3c\x63\x63\xd1\x02\x69\xb0\xa8\x0a\xa0\x12\x61\xab\xb7\xa8\xc8\x82\x54\xc0\x61\x56\x73\xf1\x30\x03\xd2\xae\x19\x77\x60\x73\x64\x41\xf4\xd4\x9e\xe4\x8e\x1b\xbe\x45\x42\x63\x93\x88\x31\xb7\x63\x50\xc8\x5a\xa2\xa2\x65\x51\x98\xc4\xb7\xbd\xac\xf4\x0e\x78\x51\x18\xb4\x16\xf4\xda\xef\x71\x21\x74\xa3\xc8\xc1\x51\x3e\x4a\xb5\x01\x0e\x8e\xd0\x7d\x0f\x32\x5c\xb7\xf0\x7a\x9d\xda\x04\xb8\x02\x6e\x0c\x7f\x1a\x20\x70\x9d\xfa\x01\x72\x84\x9d\xa4\xb2\x30\x7c\x17\x1c\x71\x14\x7a\xa7\xbc\xe4\x80\x1d\x2b\x1f\xd9\x12\xef\x09\x5e\xb6\x3a\xdf\x85\x32\xcf\xfc\xed\xcb\xb5\xa2\x4f\x1f\xbf\xcf\xe1\x39\x8a\x00\x00\x6a\x83\x35\x37\x18\x73\x21\x28\x81\x65\x43\xe5\xb2\x9d\xc7\x21\x20\xac\xfe\x85\x31\xd8\x20\x79\x4d\x3d\xd9\x91\x85\xba\xc9\x2b\x29\x7a\x27\x74\xfe\x03\x05\xf5\x45\x15\xd2\x80\x86\x13\xd7\x21\x70\x4c\x15\xcf\xa3\x31\x4f\xae\x8d\x71\x66\x83\xc1\x35\x1a\x54\x02\x9d\x3f\xfb\xcc\x87\x8e\xec\xb1\xa2\x7c\x44\x73\x8f\x6b\x38\x19\xea\x16\x1b\xa4\x73\x5e\xf3\x5c\x56\x92\x9e\x62\xd6\xca\x67\x9f\x7d\xaf\x21\x91\xf3\xbe\x97\x5b\x8b\x56\xd0\xf1\xff\xcf\x21\xc1\x8b\x7d\xfc\x9d\x6f\xf3\x72\x1a\x4f\x0b\xcf\xce\xa0\xe6\x4a\x8a\x78\x76\xae\x9b\xaa\x00\xa5\xa9\x1b\x6e\x32\x5a\x27\x76\x12\xcd\xd9\xc8\x94\xbf\xb4\xe7\xed\xb0\x74\xe5\x72\xed\xdd\x19\xbe\xc0\x89\x3b\x3b\xea\x47\x7c\xeb\x1f\x5d\x1c\xec\x9c\xc6\x2e\xa4\x09\x30\x4b\xda\xf0\x0d\xb2\x80\x38\xf0\x72\x94\xa6\x49\xa2\xdc\x1a\x1d\xd3\x22\xe7\x24\xca\x14\x6b\x6d\x25\xc5\xe4\xee\x1b\x9b\xc0\xf1\xfb\x41\x6b\x8b\xf8\x1a\x7e\x92\x58\x16\x36\x19\x02\x3e\x1f\xac\x7f\x01\xac\x2c\x76\x31\x1f\xa7\xe2\x8f\x73\x2f\x7e\x33\xdf\xc1\x60\xff\xc1\x94\x81\x31\x08\xf2\xfd\x69\xec\xdd\x04\xaf\x65\xf8\x95\x13\xfa\xe7\xae\x0c\xb6\x44\xed\xf3\xe5\x57\x00\x00\x00\xff\xff\x82\x7a\xdd\x18\xde\x05\x00\x00" func TransactionsAdminFulfill_packCdcBytes() ([]byte, error) { @@ -295,6 +369,26 @@ func TransactionsAdminFulfill_packCdc() (*asset, error) { return a, nil } +var _TransactionsAdminGrant_topshot_locking_adminCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x90\xcf\x6e\xda\x40\x10\xc6\xef\xfb\x14\x9f\x38\x54\xb6\x44\x4d\xd5\x23\xa2\x45\x56\xa9\xda\x28\x08\x50\xcc\x0b\x4c\xd6\x03\x5e\x01\x3b\xd6\x7a\x1c\xa2\x44\xbc\x7b\x64\x1b\x10\x8e\x38\xc4\x37\xcf\xce\x6f\xbe\x3f\xee\x50\x4a\x50\xac\xa5\xcc\x0a\x51\x6c\x82\x1c\xf0\xe3\x75\xbd\x5c\x65\xff\x97\xeb\x74\x36\x7b\xfa\x9b\x65\xa6\xbf\x34\x17\xbb\x73\x7e\xfb\x69\x77\xbe\xfc\xf3\xf8\xb0\xf8\x77\x41\xcc\x68\x04\x2d\x5c\x05\x0d\xe4\x2b\xb2\xea\xc4\x43\x69\xc7\x15\xe8\xaa\x76\xb9\x94\xe6\x07\xe7\x11\xb8\x92\x3a\x58\x06\xf9\xbc\xc1\x2b\x7a\xe1\x0a\x4e\xa1\x02\x2d\x18\x64\xad\xd4\x5e\x51\xa9\x04\xda\x32\x64\xd3\x1f\xb3\x15\x9f\x83\x6a\x2d\x24\xb8\x37\x0e\xc6\xdc\x6a\xbf\x1b\x00\x28\x03\x97\x14\x38\x22\x6b\x75\x8c\xb4\xd6\x22\xed\xf0\x61\x73\x47\x7f\xf6\x66\xf1\x19\x6a\xbe\x3d\x37\x3e\x6e\xf3\x77\xa6\x7f\xb5\x5c\xf2\x2c\x21\xc8\x71\xf2\xad\x5f\x51\xd2\xee\xfc\x8e\x9a\xa6\xc6\xb8\xf7\x96\x75\x59\x56\xa4\x45\x14\xc7\x57\x35\x60\x3a\x45\x49\xde\xd9\x68\x60\xa5\xde\xe7\xf0\xa2\xe8\x44\x40\xe7\xb6\x36\x1c\xd8\x5b\x1e\xc4\xe6\xca\xb5\x19\x92\xa6\xb8\x68\xf2\xfd\x9e\xdf\xc4\x06\x26\xe5\x05\x1f\xdb\xdf\x28\x1e\x42\xe5\xcb\xd6\x4e\xe6\x64\x3e\x02\x00\x00\xff\xff\xf2\x0f\x90\x66\x31\x02\x00\x00" + +func TransactionsAdminGrant_topshot_locking_adminCdcBytes() ([]byte, error) { + return bindataRead( + _TransactionsAdminGrant_topshot_locking_adminCdc, + "../../../transactions/admin/grant_topshot_locking_admin.cdc", + ) +} + +func TransactionsAdminGrant_topshot_locking_adminCdc() (*asset, error) { + bytes, err := TransactionsAdminGrant_topshot_locking_adminCdcBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "../../../transactions/admin/grant_topshot_locking_admin.cdc", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x20, 0xfe, 0x6e, 0xf0, 0x19, 0x43, 0x8f, 0x26, 0xad, 0xb0, 0x9c, 0x97, 0x81, 0xe3, 0x33, 0x62, 0xba, 0xb9, 0xf8, 0xee, 0xf7, 0xec, 0xb7, 0x6b, 0xf0, 0x3e, 0xd2, 0x39, 0x4f, 0x70, 0x91, 0x7b}} + return a, nil +} + var _TransactionsAdminLock_setCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x52\xcd\x6a\xdb\x40\x10\xbe\xeb\x29\xbe\xfa\x50\x9c\x8b\xb7\xb4\x37\xd1\x36\x18\x5c\xa8\xa1\x34\x21\x72\x1f\x60\xbc\x1a\x45\x4b\xa5\x1d\x31\x3b\x6e\x12\x4a\xde\xbd\xac\x24\x1b\xab\x50\xe8\x5c\xb4\xcc\xce\x7e\x7f\xa3\xd0\x0f\xa2\x86\x83\x0c\x55\x2b\x86\x46\xa5\xc7\xbb\xe7\xc3\xdd\x7d\xf5\xf5\xee\xb0\xdd\xed\x1e\xbe\x54\x55\x51\x38\x87\x43\x1b\x12\x4c\x29\x26\xf2\x16\x24\xa2\x13\xff\x33\x81\x90\xd8\x90\x04\xd6\x92\x21\xf2\x13\x86\x8e\x5e\x12\x3c\x45\x44\x41\x27\xf1\x91\x15\x47\x06\xd5\x35\xd7\x30\x41\xb0\x11\xef\x9e\x94\x7a\x36\xd6\x54\x16\xce\xe5\x4e\x62\xdb\xef\x4a\x58\xcb\xd8\xef\x20\xcd\x78\xca\xe8\x26\x19\x20\xf3\x71\x5d\x14\x57\x1a\xd6\xf3\x93\x1f\xfb\x68\x1f\xde\xdf\xe0\x77\x51\x00\x80\x73\x79\x98\x3a\xfc\x22\x0d\x74\xec\x18\x8d\xe8\x88\x46\x75\x1f\x22\x94\x93\x9c\xd4\xf3\x38\xdc\xb1\x4d\xed\x07\x6e\x4a\xbc\x9d\x83\xd8\x6c\x73\x6b\x82\x1b\x94\x07\x52\x5e\x93\xf7\x56\x62\x7b\xb2\x76\xeb\xbd\x9c\xa2\x65\x42\xcc\xe5\x1c\x8e\xa2\x2a\x4f\x20\x28\x37\xac\x1c\x3d\x67\xe5\xff\xa0\xcd\x95\xb8\x6b\x36\x67\x6e\x7c\x42\x26\xd8\x4c\x28\x1f\x97\x42\x3e\xaf\xf3\x62\x4a\xb8\x64\xa2\xf4\xc8\x6e\xbe\x1d\x2f\x6f\x2e\x80\xb9\x6e\x6f\x31\x50\x0c\x7e\xbd\xfa\x2e\x7f\x11\x23\x44\xcc\x00\xab\xe9\xd1\xeb\xe4\x90\x9f\xd9\x9f\x8c\xff\xd7\x4e\xc5\x76\x19\xcc\xf1\x25\xb6\xc9\xc0\xc2\xd0\xec\xa4\x62\x3b\xaf\x69\xfc\xdc\x14\xd7\x24\x79\xa9\x97\x3d\x0f\xac\x3d\x45\x8e\xd6\xbd\x5c\x65\x94\xb1\x37\x79\x6e\xbd\xd0\x3c\x48\xb2\x2b\xc1\x97\xc3\x39\xb7\x90\x2a\xb6\x6f\xe3\x3f\xb3\xe4\x7f\x53\x2e\xf2\x5a\x55\x6c\xa8\x43\x8d\x28\x36\xca\x59\xcd\x2c\xaf\x7f\x02\x00\x00\xff\xff\xb6\x73\xdc\x30\x1b\x03\x00\x00" func TransactionsAdminLock_setCdcBytes() ([]byte, error) { @@ -355,6 +449,26 @@ func TransactionsAdminMint_momentCdc() (*asset, error) { return a, nil } +var _TransactionsAdminMint_moment_with_subeditionCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x7c\x54\xdd\x6e\xdb\x3c\x0c\xbd\xf7\x53\xf0\xeb\xc5\x57\x07\x58\xe3\xfd\xdc\x05\xfd\x81\xd7\xac\x58\x2f\xba\x16\x4d\x86\x5d\x2b\x32\x1d\x6b\x93\x25\x43\xa2\xeb\x16\x45\xdf\x7d\xa0\x25\x3b\x76\xb0\x2d\x08\x60\x98\xe2\xe1\x39\xa4\x8e\xa9\xea\xc6\x3a\x82\xad\x6d\x36\x95\x25\x28\x9d\xad\xe1\xfd\xf3\xf6\xfe\x61\xf3\xf5\x7e\x9b\xaf\xd7\x8f\x5f\x36\x9b\x24\xc9\x32\xd8\x56\xca\x03\x39\x61\xbc\x90\xa4\xac\x01\xe5\xa1\xab\x04\x81\x30\x20\x8a\x5a\x19\xe8\x6c\xab\x0b\x68\x3d\x02\x59\xa8\x95\x21\x10\xe0\x95\xd9\x6b\x04\x83\x1d\xd4\xb6\x46\x43\x5c\x4a\x98\x02\x0a\x6c\xac\x57\x04\xfc\x37\x20\x18\xe6\x4e\x3d\x48\xab\x35\xf6\xf5\x7b\xd2\x07\xe1\x44\x8d\x84\xce\xaf\x92\x2c\xe3\x88\x47\xba\x5d\xaf\x80\x2a\x84\xdb\x35\xd8\x92\x39\x90\x40\x5a\x43\x42\x19\x65\xf6\xfd\x11\x09\xb7\x47\x82\x46\x8b\x17\x06\xf1\xf3\x18\xc5\xb1\xd0\x6e\x57\x29\x59\x81\x98\x88\xe4\xde\xb8\x01\x2c\x7a\xca\x76\x87\x85\x62\x4d\xf3\x1a\x5c\xe1\xd4\x4f\x8e\x39\xd9\xa1\x54\x8d\x42\x43\x79\x51\xb8\x90\x7d\xa3\x6d\x07\xa2\x28\x1c\x7a\xcf\x38\x8e\x09\x29\x6d\x6b\x88\xd3\x51\x3d\x0d\xb2\x0d\x76\xfa\x25\x32\x0f\xf3\x4a\x26\x33\x4f\x63\xf7\xdf\x6f\x0d\x7d\xfa\xf8\x6e\xec\x6b\x78\x9f\x2b\x1d\xa2\x47\x92\xf2\xa0\x64\x01\xaf\x09\x00\x40\x96\x81\xb6\x52\x68\x78\x12\x4e\x89\x9d\x46\x28\xad\x0b\x1a\xfb\x5b\x75\x58\xa2\x43\x23\xb1\xcf\xd6\x48\x21\xfe\x88\xe5\x0a\xfe\x8f\xb6\x59\xe6\x1c\x4a\xfa\x8c\xc6\x61\x23\x1c\xa6\x42\x4a\x5a\x41\xde\x52\x95\x87\x5e\x07\xc2\x48\xba\xb3\xce\xf1\x5c\x0e\x04\x6c\x1b\xe6\xcd\x23\xaf\xb7\xad\x93\xc8\xf6\xf0\x64\x9d\xd8\xe3\x08\xf7\xa8\xcb\xe5\x20\x03\x2e\x78\x9a\xb4\x0c\x05\xcf\xe7\x9a\x2e\x53\xbe\xe2\x15\x64\xb1\x44\x16\x4f\xfb\xc3\xc5\x7f\x7d\xc5\xb7\x20\x1c\x9f\x51\xb6\x84\x73\x95\x9f\xff\xaa\xd2\x37\x28\x55\xa9\xb0\x60\xff\x8d\x10\x9e\x8f\x47\x0a\xb2\x66\x32\xa3\xbe\x0d\xd2\x70\x8b\xfd\x63\x91\x4c\xe9\xee\xc2\x57\xc3\x4e\xfc\x76\xb3\x85\x4e\x51\x05\x9b\x83\xbf\xa6\x2c\xc1\x1e\x1f\xe0\xfc\x2c\x12\x2e\xd9\x37\x77\x7d\xf4\x87\xa2\xea\x00\x4b\x07\x9b\x84\xe7\xb1\x4d\xa6\x6f\x73\x35\xfc\x09\x71\xab\x4d\xbb\xd3\x4a\x8e\x9e\xb5\xbb\x9f\x28\x69\xb4\xc9\x68\xaf\x99\xbc\x31\x0a\x17\x5c\x27\x7a\x20\x9d\x79\xf1\xcf\x6c\xd7\xe3\x0a\x98\x0c\x7d\x42\x86\xea\x09\xdd\x31\x57\x1f\x0c\x53\x1f\x29\x96\x7b\xa4\x6b\xd1\x88\x9d\xd2\x8a\x5e\xd2\x2c\xb4\x91\x85\x11\x1d\x58\x16\xa3\x73\x5e\x07\xeb\x1c\xa7\x3c\xf4\xc8\xb7\xcb\x74\x31\xf2\xf2\xef\xea\x0a\x1a\x61\x94\x4c\x4f\xae\x85\x31\x96\xfe\xe1\xe9\x51\xd4\xa9\x1f\x76\xcc\x61\xd5\x9d\xcc\x07\x31\xac\x46\xc6\xb1\x0b\x94\x99\xb5\x3e\x5b\x92\x03\x6c\x32\x82\x65\xc4\xa7\x64\x7f\xa1\x59\xc1\xf9\x59\xb4\xca\x22\xba\xfd\xed\x77\x00\x00\x00\xff\xff\x4f\xa0\xcd\x64\xf4\x05\x00\x00" + +func TransactionsAdminMint_moment_with_subeditionCdcBytes() ([]byte, error) { + return bindataRead( + _TransactionsAdminMint_moment_with_subeditionCdc, + "../../../transactions/admin/mint_moment_with_subedition.cdc", + ) +} + +func TransactionsAdminMint_moment_with_subeditionCdc() (*asset, error) { + bytes, err := TransactionsAdminMint_moment_with_subeditionCdcBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "../../../transactions/admin/mint_moment_with_subedition.cdc", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf3, 0xf, 0x56, 0xe, 0xcc, 0x60, 0x76, 0x2, 0x18, 0x25, 0xad, 0x8d, 0x77, 0x9d, 0xc9, 0xf5, 0x65, 0x9a, 0x2f, 0x89, 0xa1, 0xff, 0xff, 0x45, 0x89, 0x19, 0xac, 0x44, 0xe9, 0xa8, 0x4, 0x89}} + return a, nil +} + var _TransactionsAdminRetireall_plays_from_setCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x52\x51\x8b\xdb\x3c\x10\x7c\xf7\xaf\x18\xee\xe1\xc3\x81\x8f\xb8\xb4\x6f\xa6\xed\x61\x48\xa1\x79\xe9\x1d\xe7\xf4\x07\xe8\xe4\x75\x2c\x2a\x4b\x66\x77\x43\xee\x28\xf7\xdf\x8b\x24\x27\x5c\xa0\x50\xbd\x48\x48\x3b\xb3\x33\xb3\x72\xf3\x12\x59\x71\x88\x4b\x3f\x45\xc5\xc8\x71\xc6\x87\x97\xc3\xc3\x63\xff\xfd\xe1\xd0\xed\x76\x4f\xdf\xfa\xbe\xaa\x9a\x06\x87\xc9\x09\x94\x4d\x10\x63\xd5\xc5\x00\x27\x18\x23\x83\x49\x1d\xbb\x70\x84\xf1\x1e\x8b\x37\xaf\x52\x48\x0c\x84\xf4\x7f\x9c\x27\x67\xa7\x84\x9f\xcd\x2f\x12\x38\x85\x44\xe8\x64\x14\x73\x9c\x29\xa8\xc0\x9a\x80\x10\xe1\x63\x38\x12\xe3\x99\x30\xbb\xa0\x34\x24\x4c\x21\xf2\x1e\x3a\x11\x68\x70\xa9\xaf\xe0\xec\x74\x2a\x14\x42\x9a\xb5\x3d\x1a\x36\x33\x29\xb1\xb4\x55\xd3\xa4\x1b\x21\xdd\xef\xda\x8c\xdb\xef\x10\xc7\x7c\x12\x52\x68\x4c\x2d\xb2\x68\x1a\x40\x21\xed\xfe\xb5\xaa\xde\x39\xab\x57\xf0\xcf\x7d\xd0\x4f\x1f\x37\xf8\x5d\x01\x80\x27\x85\x19\x66\x17\x9e\x68\x6c\xf1\xdf\x1a\xd8\xb6\x4b\x57\x55\xae\x58\x98\x16\xc3\x54\x1b\x6b\xb5\x45\x77\xd2\xa9\xb3\x36\x9e\x82\x26\x8a\x5c\x91\x56\xd3\xe0\x39\x32\xc7\x33\x0c\x98\x46\x62\x0a\x96\x92\xac\xa4\x30\xb3\x81\x49\xe2\x89\x2d\xc1\x05\x88\x46\x36\x47\xba\xc2\x85\xfc\xb8\xbd\xe8\xc0\x17\xa4\x66\xdb\x42\xf8\xf9\x56\xd4\xd7\x3a\xc5\xd7\xa2\x59\x29\x9a\xf5\x35\x3f\x6e\xae\x84\x69\xdd\xdf\x63\x31\xc1\xd9\xfa\xee\x47\x2c\x26\xff\xa6\xe1\xae\x80\xde\x8a\x17\x7a\x21\x7b\x52\x5a\xd3\xf9\xa7\x33\x59\xc8\xba\xd1\xd1\x90\x87\x76\x81\xa4\x50\x85\xb4\x58\xb9\xb1\xb6\x7a\xea\x49\x2f\xe3\xc8\xdb\xe6\x26\xc8\x32\xc6\xeb\x0f\xc9\xbf\xef\x5d\x52\x89\x77\x5b\x6a\x3a\xef\xeb\x8b\xfc\xb7\x3f\x01\x00\x00\xff\xff\x36\xab\xa5\xa4\xf4\x02\x00\x00" func TransactionsAdminRetireall_plays_from_setCdcBytes() ([]byte, error) { @@ -415,6 +529,46 @@ func TransactionsAdminRetire_play_from_setCdc() (*asset, error) { return a, nil } +var _TransactionsAdminSet_nft_subeditionCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x6c\x51\x5d\x6f\x13\x31\x10\x7c\xbf\x5f\x31\xea\x03\x4a\xa5\x2a\x46\x80\x78\x88\x80\x2a\x22\x48\x44\x02\x5a\xf5\xc2\x0f\xd8\x38\x6b\xce\x70\xe7\x3d\xec\x3d\x5a\x84\xfa\xdf\x91\x7d\x97\x8f\x06\xfc\xb2\xda\xaf\x99\x1d\x8f\xef\x7a\x89\x8a\x8d\xf4\x75\x23\x0a\x17\xa5\xc3\xf3\x87\xcd\xcd\x6d\xfd\xf1\x66\xb3\x5c\xad\xee\x3e\xd4\x75\x55\x19\x83\x4d\xe3\x13\x34\x52\x48\x64\xd5\x4b\x40\xeb\xc3\x8f\x84\xe0\x14\x2a\x48\xc3\x96\x77\x5e\xbd\x4a\x28\xd3\xb7\x14\xa9\x63\xe5\x98\x16\x95\x31\xb9\x12\x9c\xae\x57\x0b\x40\x1b\xc6\x10\xfc\xcf\x81\xb1\x5e\x41\x5c\x6e\xe4\xfe\x1e\x41\x42\x1e\xfb\x67\xea\xd8\xae\xaa\x93\x2b\x66\x13\xec\xd7\x75\xd0\xd7\xaf\xae\xce\x50\x72\xf5\xe5\x8b\x2b\x24\xd6\xd3\xb4\x6f\xe9\xf7\x31\xbf\xc4\x9f\xaa\x02\x00\x63\xf0\x49\x2c\xb5\xf8\x45\xd1\xd3\xb6\x65\x38\x89\xe5\x12\x95\x3e\xe5\xdf\x59\xee\x3a\x1f\x20\xdb\xef\x6c\xb5\xac\xb4\xac\xa0\x5c\xbc\x63\xb7\xc0\xb3\xe9\x17\xe7\x65\x6e\x04\xed\x23\xf7\x14\x79\x46\xd6\xea\x02\xcb\x41\x9b\xa5\xb5\x32\x04\xcd\xb4\x98\x9e\x31\xd8\x4a\x8c\x72\x0f\x42\x64\xc7\x91\x83\xcd\xac\x85\xbc\xe0\x23\x72\x92\x21\x5a\x3e\xec\x24\x6e\xdd\x7c\xcf\x8d\xb7\xc8\x04\xf3\x11\xe5\xcd\xd3\x43\xde\xcd\xb2\xab\x0b\x98\xa4\x12\xe9\x1b\x9b\xa9\x5b\x9a\x97\x07\xc0\xfc\xae\xaf\xd1\x53\xf0\x76\x76\xf1\x45\xce\x88\xe1\x03\x26\x80\x8b\x71\xe9\x71\x54\xc8\x0f\x6c\x07\xe5\xa7\x72\xde\x47\x26\x65\xd0\x89\x21\xb8\xf7\xda\x14\x45\xa9\x67\xeb\x9d\xe7\x1d\x3a\x56\xda\x91\xd2\xff\x55\xcd\x13\xeb\x67\xe9\x38\x68\xaa\x0f\x30\x7b\xc7\x4b\x38\x37\xfc\x34\x3b\xd8\x5e\xc2\xd1\xf5\x31\xee\x25\x3c\xfe\x0d\x00\x00\xff\xff\x27\x34\xcb\xa3\x01\x03\x00\x00" + +func TransactionsAdminSet_nft_subeditionCdcBytes() ([]byte, error) { + return bindataRead( + _TransactionsAdminSet_nft_subeditionCdc, + "../../../transactions/admin/set_nft_subedition.cdc", + ) +} + +func TransactionsAdminSet_nft_subeditionCdc() (*asset, error) { + bytes, err := TransactionsAdminSet_nft_subeditionCdcBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "../../../transactions/admin/set_nft_subedition.cdc", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa2, 0x7a, 0xd3, 0x31, 0x19, 0xcd, 0xa, 0x3e, 0x60, 0xe6, 0x99, 0x31, 0x7b, 0xe1, 0x6c, 0x7e, 0x76, 0x84, 0x4c, 0x9, 0x1f, 0x88, 0x39, 0x28, 0xa3, 0x49, 0x73, 0x66, 0x45, 0x8c, 0x93, 0xe2}} + return a, nil +} + +var _TransactionsAdminSet_nfts_lock_expiryCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x6c\x91\x4f\x6f\xe2\x30\x10\xc5\xef\xf9\x14\x23\x0e\xab\x20\xad\x92\x3d\x20\x0e\xd1\xee\xa2\x14\x68\x8b\x8a\x4a\x45\xc2\xa9\xea\xc1\xb5\x27\x30\x2a\xf1\x58\xb6\xa3\x06\x55\x7c\xf7\x2a\xe1\x4f\xf9\xe7\xe3\xf8\xe9\xbd\xdf\x9b\xa1\xd2\xb0\xf5\x90\xb3\xc9\x56\xec\xa7\x2c\x3f\x48\x2f\xa1\xb0\x5c\xc2\x9f\x3a\x9f\xbd\x64\x8f\xb3\x7c\x3a\x1b\x3e\x4d\x9e\x1f\xd2\xd1\x68\x3e\xce\xb2\x20\xf0\x56\x68\x27\xa4\x27\xd6\x21\x29\x97\xc0\xeb\x62\xa2\x7d\xbf\xf7\xf6\x1b\xb0\x36\x64\x37\x39\x95\xe8\xbc\x28\x4d\x02\x8b\x7b\xaa\xfb\xbd\x2e\x7c\x05\x00\x00\x6b\xf4\x20\x54\x49\x7a\x8e\x45\x02\xbf\xce\x53\xa3\xb4\xf9\x09\x5a\xa1\xb1\x68\x84\xc5\x50\x48\xe9\x13\x48\x2b\xbf\x4a\xa5\xe4\x4a\xfb\x83\x53\xf3\xe2\x18\x32\xbc\x62\x6f\xfd\xc1\x62\x71\xd4\x39\x5c\x17\xd1\x21\x16\xfe\x41\x63\x1a\xbd\xb3\xb5\xfc\xf9\xf7\x26\xc3\xff\xb0\x59\x40\x02\xb1\xf3\x6c\xc5\x12\xe3\x73\x51\xab\xe9\x1e\xed\x9b\x37\x18\x80\x11\x9a\x64\xd8\x19\x72\xb5\x56\xa0\xd9\x43\x41\x5a\x35\x1c\x68\x51\x4b\x04\xcf\x97\xa4\xe9\x9e\xd4\x71\x65\x25\x76\x76\x8e\xdb\xdd\x02\xb0\x46\x59\x79\x3c\x69\x5b\xb0\x05\x52\x40\x1a\x48\xb9\x93\xf9\x55\xc3\xc8\x61\x1b\x31\x6e\x6f\x71\xb7\x99\x8c\x42\x52\x09\x90\xba\x71\x9e\x8b\xc1\x4f\xa9\xed\x1e\x66\x1b\x7c\x07\x00\x00\xff\xff\x3b\x2b\xa5\x7d\x22\x02\x00\x00" + +func TransactionsAdminSet_nfts_lock_expiryCdcBytes() ([]byte, error) { + return bindataRead( + _TransactionsAdminSet_nfts_lock_expiryCdc, + "../../../transactions/admin/set_nfts_lock_expiry.cdc", + ) +} + +func TransactionsAdminSet_nfts_lock_expiryCdc() (*asset, error) { + bytes, err := TransactionsAdminSet_nfts_lock_expiryCdcBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "../../../transactions/admin/set_nfts_lock_expiry.cdc", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x94, 0x7a, 0x38, 0x3f, 0x96, 0x1e, 0x8b, 0xce, 0x11, 0x2f, 0xee, 0x4e, 0xce, 0x1a, 0x9f, 0xe3, 0x64, 0xc5, 0x38, 0x95, 0xf7, 0x6f, 0x70, 0xc9, 0x2d, 0x1c, 0xdb, 0x6b, 0x58, 0x46, 0x7c, 0xbe}} + return a, nil +} + var _TransactionsAdminStart_new_seriesCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x6c\x92\x5f\x8b\xdb\x30\x10\xc4\xdf\xf5\x29\x86\x3c\x94\x84\x42\xdc\x3f\x6f\xa6\xe9\x11\xb8\x42\x0f\xca\x5d\x39\xa7\x1f\x40\xd1\xad\x1b\x95\x58\x6b\x56\xeb\xe6\xe0\xc8\x77\x3f\x24\x39\x26\x86\xf8\xd1\xd2\xcc\xfc\x34\xbb\xbe\xeb\x59\x14\x3b\xee\x9b\x03\x2b\x5a\xe1\x0e\x9f\x5e\x77\x4f\xbf\x9b\x9f\x4f\xbb\xed\xfd\xfd\xf3\x8f\xa6\x31\xa6\xaa\xb0\x3b\xf8\x08\x15\x1b\xa2\x75\xea\x39\xc0\x47\xb4\x2c\xb0\x01\xdb\x97\xce\x07\x28\x23\xaa\x15\x85\x45\xa0\x53\x72\x44\xb6\x8c\x24\x9e\xa2\x31\xd7\xda\x37\x63\x00\xa0\xaa\xf0\x8b\x9d\x3d\xe2\xbf\x15\x6f\xf7\x47\xca\x8e\x7a\x20\x28\xf7\x31\x89\x8b\x35\xef\xff\x91\xd3\x2c\x39\x92\xc2\xa6\x9f\xcf\xd4\xd6\xf8\x30\x72\xaf\xf3\xbd\xe9\x82\x1b\x44\x28\x68\x93\x93\x6b\xfc\x79\x08\xfa\xf5\x4b\x89\xec\x85\x7a\x2b\xb4\xb4\xce\x69\x8d\xed\xa0\x87\xad\x73\x3c\x04\x5d\x5d\xa0\x46\xb0\x3d\x8b\xf0\x09\x16\x42\x2d\x09\x05\x97\xa0\x32\x5b\x61\x12\x8a\x3c\x88\x23\xf8\x80\xa8\x2c\xf6\x2f\x4d\xf2\x48\xc7\x76\x7d\xa1\xc4\x06\x29\x6c\x5d\x0c\xbf\xcd\x91\xbf\x2f\x53\xe3\x35\xaa\xd1\xa2\x1a\x4f\xf3\xe1\x6a\x32\x4c\xdf\xdd\x1d\x7a\x1b\xbc\x5b\x2e\x1e\xb9\x54\x70\x8b\x61\xb1\x32\x73\x8c\x59\x17\xd8\x5c\x26\x3d\xff\x9f\x25\xe7\xa2\xa4\x57\x72\x83\x12\xde\x26\x9f\xeb\x5a\x1e\x82\x13\xea\x28\x68\xae\xa2\xcc\x16\x61\xe8\xf6\x24\xb7\x9f\xbf\xce\x4b\xf1\x48\xa7\x92\xb4\x5c\x5d\x67\xf5\x1c\x75\x0c\x9a\xd4\x37\x01\xb1\xd9\xdc\x7a\xce\x47\x7c\x86\x8d\xe3\x80\xeb\x59\x5d\x8b\xb4\x84\x17\xbe\xb4\x86\x09\x83\x5e\x16\x63\xfc\xd9\xe0\x3d\x00\x00\xff\xff\xf3\xd8\x80\x23\xfb\x02\x00\x00" func TransactionsAdminStart_new_seriesCdcBytes() ([]byte, error) { @@ -475,6 +629,26 @@ func TransactionsAdminUnlock_all_momentsCdc() (*asset, error) { return a, nil } +var _TransactionsAdminUpdate_taglineCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x9c\x93\x4f\x6f\xda\x4a\x14\xc5\xf7\xfe\x14\xe7\xb1\x78\x01\x29\x0f\xe7\xbd\xb7\xb3\x9a\x46\x54\x34\x6a\xd4\xb4\x89\x02\x5d\x45\x59\xdc\x8c\xaf\x61\x8a\x3d\x63\xcd\x5c\x9a\x58\x88\xef\x5e\xcd\xd8\x18\xdc\x6e\xa2\xb2\x01\xdd\x7f\xe7\x37\xe7\x5e\x74\x55\x5b\x27\x58\xda\x7a\xb1\xb6\x82\xc2\xd9\x0a\x17\xaf\xcb\xbb\xfb\xc5\xa7\xbb\xe5\x6c\x3e\x7f\xf8\xb8\x58\x24\x49\x9a\x62\xb9\xd6\x1e\xe2\xc8\x78\x52\xa2\xad\xc1\xb6\xce\x49\xd8\xa3\xda\x96\xa2\xeb\x92\xc1\xaf\xda\x8b\x36\x2b\xd4\x25\x35\xfe\x0c\x42\xab\x52\x1b\xf6\xa1\x9b\x4c\x0e\x2f\xd6\xb1\x87\xac\xb9\x82\x36\xe1\x3b\xc8\x22\xea\xfa\x8a\x9c\x40\x59\x23\x8e\x94\x44\xc1\x7b\x72\x54\xb1\xb0\xf3\x59\x92\xa6\x21\x12\xe7\x66\x98\x21\xd7\x11\x81\x5c\x03\x5b\x60\x17\xe2\x37\xf3\xec\x20\xb8\x47\x4d\xda\xf9\x24\x39\xa1\x1d\x77\xbd\xbb\x6f\x37\x46\xfe\xff\x2f\xc3\x42\x9c\x36\xab\xfd\x04\xbb\x24\x01\x80\x34\xc5\xad\x55\x54\xe2\x07\x39\x4d\xcf\x25\xa3\xb0\x2e\x32\x8a\xad\x7d\x40\x9c\xe5\x95\x36\xb0\xcf\xdf\x59\x49\x6c\x29\x59\x40\x21\xf8\xc0\x45\x86\xbf\x3b\x0b\xa7\xb1\xae\x2f\x28\xb4\xf3\xf2\x99\x9b\x0c\xad\x72\x9f\x28\x69\x18\x8f\x89\xda\x71\x4d\x8e\xc7\xa4\x94\x64\x98\x6d\x65\x3d\x53\xca\x6e\x8d\xf4\x9c\x1d\xeb\xb3\x75\xce\xbe\x80\xe0\xb8\x60\xc7\x46\x05\xce\x88\x1b\x89\xe0\xd8\xdb\xad\x53\xdc\xf7\x78\x2e\x8b\xe9\x81\x16\x97\x08\x0a\xd3\x76\xca\xbb\x21\xfa\xfb\x71\x38\x82\x0c\x69\xd8\x17\xad\x38\xed\xb2\x31\x39\xe9\x07\x86\xcf\xd5\x15\x6a\x32\x5a\x8d\x47\x5f\xed\x2f\xc2\x61\xc3\xdd\x80\xd1\x64\x48\x71\xb0\x04\x97\xed\x46\xa7\x1b\x6e\xfc\xe3\xc5\xd3\xb0\xaa\xf3\x67\x58\x74\xfc\x39\x2d\xd9\xac\x64\x8d\x7f\xf0\x6f\xdb\xb8\x6f\xfd\xe1\x57\x56\x5b\x61\xec\x4e\xdd\x6a\x4f\xf5\x78\xa9\x71\x0c\x5e\xb4\xac\xa3\x65\xbe\x66\xa5\x0b\xcd\x39\x2a\x16\xca\x49\xa8\x6f\x0e\x47\xb0\xe1\x26\xbc\xe6\xa8\x7d\x32\xfc\x37\x6b\xa7\xad\xd6\x7d\x49\xcd\xb2\x3d\xc7\xf1\xe1\x3c\x37\xdc\x9c\x1f\x6e\x34\x6b\xc7\x3d\x6e\xb8\x79\x1a\xda\xd8\x15\x44\xe5\x50\x33\x9a\x1c\xed\xdb\x9f\xbe\xb4\xb6\x5e\x4e\x48\x0e\x3b\x5c\xb1\x04\xf1\x2f\x2c\x34\x27\xa1\x0f\xcd\xb5\xe6\x32\xef\x21\x06\x1b\x38\x47\x11\x92\x19\x46\x1d\xeb\x68\x82\xbf\x2e\x61\x74\x99\x0d\x5e\x38\xba\x0e\x0d\x11\xe7\xcc\xf7\x84\xb9\x65\x0f\x63\xa5\xfd\xe3\x8f\xfe\x88\xa4\xdb\xf2\x9b\x41\x6e\xe9\x6d\x1c\xfb\x64\x9f\xfc\x0c\x00\x00\xff\xff\xfe\xe5\xa8\xfa\xdb\x04\x00\x00" + +func TransactionsAdminUpdate_taglineCdcBytes() ([]byte, error) { + return bindataRead( + _TransactionsAdminUpdate_taglineCdc, + "../../../transactions/admin/update_tagline.cdc", + ) +} + +func TransactionsAdminUpdate_taglineCdc() (*asset, error) { + bytes, err := TransactionsAdminUpdate_taglineCdcBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "../../../transactions/admin/update_tagline.cdc", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf5, 0xb4, 0x41, 0x41, 0xce, 0xa6, 0xfd, 0x9a, 0x8f, 0xbb, 0xde, 0x56, 0x22, 0xdf, 0xc3, 0x47, 0x8a, 0x7f, 0xc1, 0xa6, 0xce, 0x6, 0xe5, 0x53, 0x6e, 0xff, 0x44, 0x3c, 0x82, 0x23, 0x59, 0x44}} + return a, nil +} + var _TransactionsMarketChange_percentageCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x92\xc1\x6e\xdb\x30\x10\x44\xef\xfa\x8a\xad\x0f\xad\x73\xb1\x7a\x28\x7a\x10\xea\x06\x86\x93\x5e\xda\x00\x81\x9d\x7e\xc0\x9a\x59\x59\x44\x28\xae\xb0\x5c\xd9\x2e\x8a\xfc\x7b\x41\xd2\x76\x2c\xc1\x45\xcb\x83\x00\x89\xe4\xec\x9b\xd1\xd8\xb6\x63\x51\x78\x40\x79\x21\x85\x5a\xb8\x85\x8f\x87\x87\xc5\xea\xfb\xfd\xd3\xe2\xee\x6e\x75\xbf\x5e\x17\x45\x59\xc2\x53\x63\x03\xa8\xa0\x0f\x68\xd4\xb2\x07\xd3\xa0\xdf\x52\x00\x6d\x08\x3a\x12\x43\x5e\x71\x4b\x60\x7a\x05\xae\x01\xa1\xe5\x96\xbc\x7e\x08\x10\xd0\x11\x6c\xed\x8e\x3c\x28\xc3\x86\x3c\xd5\xd6\x58\x94\x5f\x49\xf7\x11\x05\x5b\x52\x92\x50\x15\x65\x19\xbf\x78\xda\x3f\x9e\xf5\xaa\xf8\x7a\xa9\xcf\x35\x28\xbf\x90\xcf\x83\x2f\xd4\x60\x6f\x9d\x03\x21\x43\x76\x47\xd9\x47\x3c\x11\xa7\x17\xc5\x05\xf8\x74\xa4\xff\xf3\x9b\x3d\x7c\xfe\x74\x03\xbf\x8b\x02\x00\xa0\x2c\xe1\x07\x1b\x74\xb0\x43\xb1\xb8\x71\x04\x35\x4b\x52\x42\x63\xb8\x4f\x8e\x94\xbb\xd0\xb0\x66\x67\x86\x9d\xa3\xa4\x9c\xee\x3b\xd2\xd3\xfe\x1a\x1d\x2d\xcf\xbb\x2b\xaa\x2b\x78\x9f\x63\x9e\x0d\xb7\xf2\xe4\x4e\xa8\x43\xa1\x29\x1a\xa3\x15\x2c\x7a\x6d\x16\x79\xe2\x99\xed\xc8\xb7\x61\x11\xde\x03\x82\x50\x4d\x42\xde\x50\x0c\x36\x22\xf2\xde\x93\x9c\x22\x1f\x81\xc5\x15\xc8\xd5\xb3\xbf\xd1\xc1\x3c\x5a\xd4\x59\x96\xff\x72\x1d\xf5\xeb\x34\x26\x5b\x41\x19\x94\x05\xb7\x54\x5e\x55\xbb\x39\x4f\x8c\xeb\xf6\x16\x3a\xf4\xd6\x4c\x27\x4b\xee\xdd\x33\x78\xd6\x93\x87\xf4\x9b\x12\xad\xf5\x70\x94\x9c\xe4\xdb\xaf\xd9\x33\x1d\xc8\xf4\x4a\xa3\x08\x96\xa9\x7c\xe3\xee\xc5\x6e\x34\x74\x6c\xde\xff\x99\x9e\xe5\x1a\xbf\x15\x62\x58\x8f\x01\x4a\xc7\x41\x2f\x39\xfe\x21\xdc\xeb\x9b\xce\x3b\x98\xcf\xc7\xc5\x1e\x64\x34\x19\x1c\x4f\x11\x65\xb2\xe7\xc9\x11\x21\x3e\x8b\xd7\x3f\x01\x00\x00\xff\xff\x5a\x89\x61\xf6\xae\x03\x00\x00" func TransactionsMarketChange_percentageCdcBytes() ([]byte, error) { @@ -1015,6 +1189,26 @@ func TransactionsMarketv3Upgrade_saleCdc() (*asset, error) { return a, nil } +var _TransactionsScriptsCollectionsBorrow_nft_safeCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x74\x92\xc1\x6e\xdb\x3c\x10\x84\xef\x7a\x8a\xf9\x2f\x3f\x6c\x20\xb0\x7a\x28\x7a\x30\x9a\x02\x69\x5c\xa3\x39\xd4\x09\x62\x15\xbd\x66\x45\xad\x24\xa2\xf4\x52\x20\x29\x2b\x46\x90\x77\x2f\x48\xc9\x76\x9d\xa0\xbe\x58\x58\x2e\xbf\x99\x9d\xa5\xde\x75\xd6\x05\x14\xb6\xdb\xb6\x36\xa0\x76\x76\x87\x0f\xcf\xc5\xfd\xc3\xf6\xfb\x7d\x71\xb3\x5a\x3d\x7e\xdb\x6e\xb3\xa9\x69\x63\x65\xdd\x4b\xa3\x4b\xc3\x85\xfd\xcd\x72\xec\xde\xac\x4f\x9d\x59\x9e\xa3\x68\xb5\x87\xf6\x20\x78\xe5\x74\x17\x10\x2c\x1a\x0e\x20\x94\xd6\x1a\x26\xc1\x9e\x4c\xcf\xf0\x54\xb3\x39\xc4\x53\xcf\x0c\x5d\x83\xb0\xb3\x3b\x96\x00\x7e\xd6\x3e\x78\x68\x01\x41\x59\x63\x58\x05\x6d\x25\xb2\x7f\x31\xf8\xb9\x63\x15\x10\xa2\xca\xa0\x8d\x81\xd8\x80\x8e\x44\xab\xc8\x08\x2d\x63\xb3\x2e\xa2\x7e\xac\x6b\x49\x95\x4b\xc8\x6d\x4b\xd2\x70\x3a\x78\x22\xa5\x6c\x2f\xe1\x29\xda\x18\x5a\x0a\xbc\x67\x87\xa9\x88\x83\xed\x31\x90\x84\x78\x89\xa4\x02\x79\x18\x2b\x4d\xfc\x0f\x2d\x1f\xd0\xd2\x9e\x41\xe8\xfa\xd2\x68\xdf\x72\x85\xdb\x93\x0e\x1c\x2b\xd6\x7b\x76\x57\x89\xa2\x48\x10\x29\x31\x07\xc7\x35\x3b\x16\xc5\x51\x73\xf2\x3b\x01\xed\x20\x8b\x94\xe1\x03\x39\xda\x71\x60\xe7\x97\x59\x9e\x27\xfd\xd1\xd3\x12\x45\xcb\x58\x1b\x3b\xe0\xa6\xaa\x1c\x7b\x0f\x3b\x4e\x7d\x34\x3d\xb4\xd6\xf3\x31\xc9\x8a\x02\x41\x98\x2b\x1f\xc5\x4a\x86\x63\xaa\x22\x4e\xea\x70\xb7\x1a\x61\x77\xab\x23\x22\x06\x17\x2c\x1c\x87\xde\x49\xf2\xf1\x98\x3e\xfd\x12\x5f\x2f\x56\xa7\xa5\xd2\x8a\x82\x96\xe6\x4d\xe6\xef\xf3\xce\xba\xbe\x44\xdd\x0b\x76\xa4\x65\x76\x9a\x62\x32\x7f\x75\x34\xf2\xf3\x4e\xc2\xa7\x8f\x98\x8f\x4a\x78\xc9\x32\x00\x30\xf1\xd9\x28\x15\x70\x1d\x93\xbb\x19\x2f\x1f\x21\xf3\x73\xcf\x59\xef\x91\x6b\x5c\xa7\x3b\x8b\x86\xc3\x2d\x75\x54\x6a\xa3\xc3\x61\x96\xa7\x2d\xa9\xfc\x47\x0a\xe6\xbc\xa8\x79\x82\xfc\xeb\xb7\x28\xad\x73\x76\xf8\xfc\xff\xcb\xdb\xc7\xbf\x38\x23\x1e\x12\xf9\xf5\xcb\x6c\xfe\xdf\xd9\x92\xed\xe2\x11\x99\x18\xcc\xf5\xa5\xc1\x09\xba\x59\x17\x5b\xaa\x79\xa6\xab\xe5\x98\xc2\x34\x50\x9e\x9f\x2e\xa3\x8c\x49\x4b\x93\xea\xba\x4e\x60\xa9\x63\x1c\x7f\xe3\x5f\x4e\x23\x8c\x9b\x43\x70\x3d\xa7\xda\x2b\xd8\x78\x7e\xdf\x50\x93\xf1\x53\x47\xf6\xfa\x27\x00\x00\xff\xff\xfb\x21\xd9\xc0\x03\x04\x00\x00" + +func TransactionsScriptsCollectionsBorrow_nft_safeCdcBytes() ([]byte, error) { + return bindataRead( + _TransactionsScriptsCollectionsBorrow_nft_safeCdc, + "../../../transactions/scripts/collections/borrow_nft_safe.cdc", + ) +} + +func TransactionsScriptsCollectionsBorrow_nft_safeCdc() (*asset, error) { + bytes, err := TransactionsScriptsCollectionsBorrow_nft_safeCdcBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "../../../transactions/scripts/collections/borrow_nft_safe.cdc", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x89, 0xe2, 0x5f, 0x10, 0x65, 0xde, 0x2b, 0xd, 0x78, 0xbf, 0x92, 0x4c, 0x8b, 0x2d, 0x7f, 0x29, 0x39, 0x4a, 0xca, 0xdf, 0x7f, 0x4b, 0x96, 0xf2, 0xd2, 0xd2, 0x7c, 0x95, 0x71, 0x49, 0x72, 0x67}} + return a, nil +} + var _TransactionsScriptsCollectionsGet_collection_idsCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x7c\x92\x51\x8b\xd3\x40\x10\xc7\xdf\xf3\x29\xfe\xbe\x68\x03\xd2\xf8\x20\x3e\x1c\x9e\x50\xae\x8a\x27\xc8\x95\x36\x3e\x89\x70\x93\xcd\x34\xbb\xb0\xd9\x0d\xbb\x93\xc6\x72\xdc\x77\x97\xdd\xe6\xda\x53\xd4\xbc\x84\x24\x33\xbf\xf9\xcd\x3f\x6b\xfa\xc1\x07\x41\xed\x87\x9d\xf6\x82\x7d\xf0\x3d\xde\xfc\xac\xef\x36\xbb\xcf\x77\xf5\x6a\xbd\xde\x7e\xdc\xed\x8a\xa2\xaa\x50\x6b\x13\x61\x22\x44\x33\xa2\x0a\x66\x10\x88\x47\xc7\x02\x82\x35\x51\xe0\xf7\x20\x6b\xf3\xf7\xde\xf7\xec\x24\xbe\x82\x69\x23\xc8\x81\x94\xf2\xa3\x13\xf8\xc9\xc5\xc4\xfa\x32\x46\x81\xd2\xe4\x3a\xce\xf5\x14\xba\x31\x75\x24\xe2\x7d\xc7\xb2\x3a\xd5\xdf\xa7\xe7\x49\x93\xf0\x81\xc3\x19\x72\xf4\x23\x26\x72\x92\x40\xe4\x5a\x50\x84\xf5\xae\x4b\x77\xd1\x7c\x84\xa6\x03\x83\x30\x8c\x8d\x35\x51\x73\x8b\x1b\x6f\x2d\x2b\x31\xde\x21\xb0\x62\x73\xe0\xf0\x3a\x53\x14\x39\x44\xe6\x04\x7a\x66\x7d\xa2\xf8\xc9\x2d\xf3\xde\x1b\x0a\xd4\xb3\x70\x88\x57\x45\x55\xe5\xa1\x27\x91\x2b\xd4\x9a\xf1\xc9\xfa\x09\xab\xb6\x0d\x1c\x63\x8a\x20\xaf\x33\x9b\x4e\xda\xc7\x27\x2c\x5a\x12\x82\x63\x6e\x63\xda\xaa\x61\x04\xa6\x36\x4f\xd8\xb2\x8c\xc1\xc5\x2b\x7c\xff\x76\xeb\xe4\xdd\xdb\x1f\xe9\xe5\xf3\x48\xff\x1b\x67\x31\x8c\x0d\xf6\xa3\x43\x4f\xc6\x2d\xce\x6e\xb3\x52\x79\xa1\xe2\xa1\x28\x00\xc0\xa6\x5f\xa6\x94\xe0\x1a\x97\xa8\x9f\x1a\xcb\x4b\x8d\x3a\xc7\xb6\xe5\x3d\xae\x73\xcf\xb2\x63\xb9\xa1\x81\x1a\x63\x8d\x1c\x17\x55\x0e\x59\x55\x5f\xb3\xe0\x25\xe7\x32\x43\xfe\x75\x2d\x1b\x1f\x82\x9f\xde\xbf\x7c\x98\x4f\xdd\xf2\xcf\xfe\x4d\xc6\x3e\x7e\x58\x94\x2f\x66\x1f\xdf\x2d\x7e\xf3\x49\x22\xb7\xeb\xb8\x28\x67\xe1\x90\x33\xc4\xdf\x6b\x8a\xc7\x5f\x01\x00\x00\xff\xff\x84\xa0\xfd\x5c\xe6\x02\x00\x00" func TransactionsScriptsCollectionsGet_collection_idsCdcBytes() ([]byte, error) { @@ -1295,7 +1489,7 @@ func TransactionsScriptsGet_currentseriesCdc() (*asset, error) { return a, nil } -var _TransactionsScriptsGet_nft_metadataCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x74\x93\xcd\x8e\x9b\x30\x10\x80\xef\x3c\xc5\x70\xa9\x40\xaa\x48\x0f\x55\x0f\xd1\xb2\x12\xda\x6c\xdb\x3d\xa4\xbb\x5a\xe8\xf6\x6c\xc0\x24\x23\x81\x8d\xec\x61\xd3\x68\x95\x77\xaf\x6c\xf3\x9b\x50\x1f\x12\x3c\xbf\xdf\xcc\x78\xb0\x69\xa5\x22\xc8\x64\x9b\x1e\x25\x41\xa5\x64\x03\x5f\xfe\x66\xcf\x2f\xe9\xcf\xe7\x2c\xd9\xed\x5e\x1f\xd3\xd4\xeb\x8d\xf6\x9c\x58\xc9\x88\xbd\x21\x3f\xe9\xc1\x74\xff\x98\x25\xbb\x24\x4b\xde\x9e\x1e\xff\xa4\x83\x83\xd7\x76\x39\x68\x52\x5d\x41\xf0\xeb\x7b\x06\x1f\x1e\x00\x80\x11\xd6\x9c\x40\xb0\x86\x6f\x21\x25\x85\xe2\xb0\x50\x94\x5c\x17\x0a\x5b\x42\x29\x56\xf5\x74\xec\x9a\x5c\x30\xac\x57\xb5\xf2\x24\xb8\xda\x42\x52\x96\x8a\x6b\xbd\x74\x3c\xb7\x53\x46\xab\x41\x81\x14\xd8\x2f\x73\xe6\x44\x9f\x47\xe9\x0a\xce\xa4\xbc\x61\x99\x54\x4b\x90\x49\x2e\x2a\xca\x66\x20\x4e\x11\xf6\xcd\x31\x47\xf3\xba\x8a\x0c\x0b\xc4\x16\x69\xa9\x98\xe1\x40\x3c\x87\x5b\x9a\x8d\x60\x10\x4f\x90\x4b\x13\x0b\x08\xb1\x03\xbd\xf2\x3e\xb7\x36\xbb\x43\xb5\xba\x8b\x77\x71\x03\xad\x3a\x01\x0d\x43\x11\x30\x57\xd9\x54\x22\x60\xb9\x85\xdf\x4f\x82\xbe\x7d\x0d\xb7\xb3\x89\x9b\xde\xb3\xa2\x90\x9d\x20\x88\xe1\xc0\x29\x71\x97\x21\x42\xe8\x8d\x66\x85\xac\x6b\x5e\x98\x72\x5e\x79\x05\xf1\xe0\x16\x1d\x38\x3d\xb0\x96\xe5\x58\x23\x9d\x83\x4d\xdb\xe5\x35\x16\x9b\xbd\x6c\xb8\xa0\x87\xd1\x27\x1c\xab\x58\x3b\x51\x2e\x95\x92\xa7\xbb\x4f\x1f\xfd\x3b\x8f\xae\xfd\x5f\x6c\xd8\xcb\x7d\x10\xfa\x13\x92\xa8\x0c\xf5\x02\xac\x8f\xe4\xdc\x03\x53\x35\x96\xa1\x6f\x3d\xec\xcf\x66\x03\x3f\xec\x43\xe5\x90\x33\x8d\x05\x94\xa8\xdb\x9a\x9d\x01\x45\x25\x55\xc3\xec\xf0\x2a\xa9\x80\x8e\xa8\x4d\xa3\xc6\x64\xef\xc8\x4f\xae\xf1\x91\xe2\x5a\xd6\xef\xdc\xac\x59\x60\xa6\x70\xb7\x58\xbc\x68\xe7\x42\xde\x07\xe1\x1c\x76\x48\x14\xbb\x48\x4c\xfb\xb0\xea\x36\xb1\xde\xee\x4c\x9f\xdf\x0a\xfd\xa8\x9f\x91\x3f\xef\x47\x36\x3e\x0f\x33\x18\x73\x0b\xfa\x19\x2a\x4e\x9d\x12\xa6\xa4\xeb\xb5\xea\xc9\xec\xc3\xfe\xcf\x72\x0d\x26\x33\xe1\xea\xa6\x0d\x76\xa3\x28\xea\x14\x06\xe1\xcd\xea\xd9\xbf\x95\xc5\xeb\x3f\x22\x2c\xb9\x20\xac\x70\x30\x0a\xbd\xcb\xbf\x00\x00\x00\xff\xff\x77\xf5\x7d\xc1\x09\x05\x00\x00" +var _TransactionsScriptsGet_nft_metadataCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x9c\x56\x4d\x6f\xe3\x36\x10\xbd\xfb\x57\xd0\x97\x42\x02\x0a\xa5\x5f\xe8\x21\x58\x2d\xe0\xc6\x49\x1b\xa0\xc9\x06\xb6\x76\x7b\x28\x7a\xa0\xa5\x91\x4d\x40\x22\x55\x6a\xe4\xac\xb1\xc8\x7f\x2f\x28\xc9\x22\x47\x26\xb3\xd9\xfa\x10\x45\x9c\xf7\x66\x44\xf2\x71\xf8\x44\xdd\x28\x8d\x2c\x53\xcd\xf6\xa0\x90\x95\x5a\xd5\xec\x87\xcf\xd9\x87\xa7\xed\x1f\x1f\xb2\xd5\x7a\xbd\xb9\xdd\x6e\x17\x23\xe8\x01\x90\x17\x1c\xf9\x27\x01\xcf\xed\x19\xfa\x70\x9b\xad\xd6\xab\x6c\xf5\xe9\xfe\xf6\xaf\xed\x99\xb0\x68\xba\x1d\x6b\x51\x77\x39\xb2\xc7\xbb\x8c\x7d\x59\x30\xc6\x98\x19\xac\x00\x99\xe4\x35\x5c\xb3\x2d\x6a\x21\xf7\x24\x50\x40\x9b\x6b\xd1\xa0\x50\xd2\x1b\xc7\x43\x57\xef\x24\x17\x95\x37\xaa\x9e\x25\xe8\x6b\xb6\x2a\x0a\x0d\x6d\x4b\x89\xa7\xc6\x5f\x11\x3e\x23\x68\xc9\xab\x8f\x9b\x3f\xbd\xf1\x16\x95\xe6\x7b\x78\xe2\x78\xf0\xc6\x9b\x6e\x57\x89\x3c\x1c\xd6\xe2\xc8\x31\x4c\xcf\x55\x55\x41\x6e\xe6\xfb\x18\x5a\x13\x0b\x59\x7f\x65\x75\x2c\x72\xfb\x6f\xc7\x35\xdc\xd7\x7c\xff\xb5\x9c\xbf\x71\x29\x41\x87\x91\x5a\x9d\x78\x85\xa7\x0d\xe4\x20\x8e\xa0\xdb\x1b\xd5\x49\xbc\x66\x1f\xef\x25\xfe\xfc\x13\x5d\x62\xcd\x05\xbe\x12\x3f\x8a\x02\x94\xbb\xcc\x7d\x54\x48\x81\x51\xff\xdf\xf9\xe7\x8a\xe3\x7b\x12\xf1\xa8\x83\x02\x2e\xe4\x41\xc3\x54\x1f\x33\xaa\x23\x10\x1a\xf1\x28\x84\x02\x3c\x12\xa1\x80\x4b\x8d\xcc\xe2\x97\x22\xa1\x00\xbf\x4a\x42\x18\x8f\x4c\x42\x50\x8f\x4e\x42\x50\x8f\x50\x28\xf4\x55\xa5\xcc\x16\xfb\x52\x2a\x14\x70\xa1\x15\x33\x18\x8f\x5d\xa4\x5f\x73\xa8\xca\xc4\x28\x85\xa5\xbd\x60\x68\xc0\x11\x0a\x4b\x5d\xd9\x50\xd8\x24\x17\x96\x5a\xe9\x50\x48\x2f\x19\x96\x0e\xd2\x99\xb1\x4f\x8d\xa9\x6e\x1e\x34\xe0\x08\x86\xa5\xae\x7c\x28\xcc\x91\x0d\x4b\x5d\x11\x51\x98\x15\x0f\x4b\x1d\x25\xcd\x40\x56\x41\x06\x65\xdf\x28\x8c\xea\x88\xa5\x33\x61\x85\xc0\x6b\xb2\x9c\xde\xf1\x10\xd5\x11\x18\xa1\x3a\xe3\x21\xaa\x23\x38\x42\x75\xc6\x29\xd5\x2b\x40\x96\xfa\x85\x39\xdb\x4b\x2b\x48\xb3\xa5\xf6\x8d\xc2\xce\xb2\x64\xe9\xa4\xd0\x1e\xf0\xb2\x78\x19\x6e\xbc\xb2\x93\xac\xe6\x42\x46\x7c\xe8\x31\xb6\xd9\x30\x51\x0c\x52\xff\xf5\x97\xf8\xda\xb9\x12\x4d\x67\xe4\x79\x3e\x56\xde\x03\xae\x86\x97\x73\x86\x78\x31\xc1\xec\x12\x6c\xa0\x64\xe9\x99\x96\xec\x01\x6f\x78\xc3\x77\xa2\x12\x78\x8a\xae\x06\x8d\x5c\x3d\xa8\x1a\x24\xde\x4c\x9c\x98\x1c\xb0\xf9\x2f\xd9\x29\xad\xd5\xf3\xbb\xef\xbe\x8c\x46\x20\x99\xf3\x9f\xfa\xb4\x2f\xef\xa3\x78\x69\x3f\x49\x96\x48\xf6\x66\x03\xe5\x98\x69\xa0\x47\x66\xd6\xa2\x88\x97\x3d\xa3\xff\x73\x75\xc5\x7e\x37\x73\xae\x2a\x96\x2b\x0d\xec\x38\x78\x09\xa5\x19\x1e\x44\x3b\xf9\x90\xc7\xbb\x6c\xaa\x52\x88\xb6\xa9\xf8\xc9\xb8\x0e\x73\xdc\x4b\x4c\x34\xb4\xaa\x3a\x82\x19\x89\xb2\x53\x03\xef\x88\x33\x49\xd6\x03\xe1\x7d\x14\xc7\x4b\xc6\xdb\x25\xf3\x86\x3d\x0b\xbb\xfe\xd6\x4a\x8f\x77\xd9\xcd\x9c\x1d\x2a\xeb\xc3\xfa\xbe\x61\x24\xfc\x9f\x0f\xe0\xc8\xdf\x56\x9d\x23\x9f\x4a\x0f\xe7\x43\x40\xfb\xf6\xaa\x9b\x33\x25\x54\x6d\x02\x4c\x55\x9c\x3e\xf8\xf6\x3a\xb7\x96\x14\xaa\x74\x3b\xeb\xaf\xd6\x8a\xbc\xbd\x4c\xd6\xe3\x43\x15\x86\xe8\x94\xbc\x86\x42\xf0\x6f\x48\xfe\xd0\xe3\x43\xc9\x87\xa8\x3d\x51\xd4\xa3\x8c\x15\xfa\xc1\x65\x32\xb6\x84\xa5\x7b\xfc\xb2\xe1\x16\x32\xa8\x3d\xf4\x6f\xd1\xd8\x32\x34\x60\xa7\xa5\x39\x48\xd6\x5f\x0d\xde\xca\x39\x4f\xfd\x1d\x6a\xef\x5e\xe2\xb0\x5c\x98\x13\xb0\x68\xc7\x6e\xb9\xd8\x69\x38\xe9\xb4\x88\x62\x8b\x1f\xe7\xd6\x3f\x9c\x2c\xbd\xf3\x1a\xa7\x92\x88\x02\x24\x8a\x52\xb8\x08\xe2\xc0\x66\x3a\x4a\x3a\x5d\x59\x24\xb1\x62\x97\x47\xca\xbd\x73\x13\x54\x83\xb7\x70\xbf\xd0\x75\x6a\x1e\xba\x0d\xfb\xd9\xae\x8f\xf3\xd1\xb5\x32\xd7\x86\x0e\x26\x98\xfb\x3c\x6f\x63\x9a\x6d\x59\xc0\xf7\xf9\xa9\xde\x6d\x0c\xd8\x41\x7f\x86\xd6\x42\x92\x52\x54\x30\xdf\xe3\x80\x61\xf4\x27\xdb\x59\x88\x37\xd9\xab\x96\x32\x22\x7d\xcb\xa8\x7f\x6a\x3a\x51\x9c\x54\x20\xf7\x78\x70\x72\x79\x3c\x67\x64\xfb\xc4\xe8\x00\x2e\x69\xd6\x89\xda\x73\x9f\x08\x84\xba\xfd\xfb\xc7\x7f\x9c\x8f\x1e\x1c\xea\xe2\x65\xf1\x5f\x00\x00\x00\xff\xff\x7c\xbd\x67\x38\x50\x0f\x00\x00" func TransactionsScriptsGet_nft_metadataCdcBytes() ([]byte, error) { return bindataRead( @@ -1311,7 +1505,7 @@ func TransactionsScriptsGet_nft_metadataCdc() (*asset, error) { } info := bindataFileInfo{name: "../../../transactions/scripts/get_nft_metadata.cdc", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa4, 0x62, 0xe7, 0x25, 0xb7, 0x99, 0x5d, 0x77, 0xa4, 0x8b, 0xd8, 0x47, 0x9d, 0xf9, 0xd0, 0x3b, 0x68, 0xd7, 0x8b, 0xfb, 0xd0, 0x3c, 0xa, 0xe1, 0xb1, 0xc, 0x71, 0x12, 0x4d, 0xa1, 0xdb, 0xbb}} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe0, 0x6, 0x14, 0x66, 0x1c, 0xfc, 0x2a, 0xe9, 0x6f, 0x84, 0xe4, 0x91, 0xf7, 0xe9, 0xbc, 0xae, 0x2d, 0x81, 0x2c, 0x63, 0xc9, 0xe1, 0x5d, 0x5b, 0x19, 0x43, 0xe1, 0xa0, 0x44, 0xec, 0xbf, 0x86}} return a, nil } @@ -1615,6 +1809,86 @@ func TransactionsScriptsSetsGet_set_lockedCdc() (*asset, error) { return a, nil } +var _TransactionsScriptsSubeditionsGet_all_subeditionsCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x5c\xcf\x3f\x6f\x02\x31\x0c\x05\xf0\x3d\x9f\xe2\x8d\xb0\x40\xe7\x6e\x48\x54\xea\x06\x22\xb7\x55\x0c\x3e\x70\x9a\x48\xb9\x24\x72\x1c\xd4\x53\xd5\xef\x5e\xe5\x4a\xd5\x3f\xb3\xed\xdf\xf3\x0b\x53\xc9\xa2\x18\x72\xb1\x3e\x2b\x9c\xe4\x09\x0f\x6f\xc3\xe1\x68\x9f\x0f\xc3\x6e\xbf\x3f\x3d\x59\x6b\xcc\x76\x8b\xc1\x87\x8a\x7a\x91\x50\x14\xc2\xda\x24\x55\x50\x02\x89\xd0\x8c\xec\x40\x31\x42\x3d\xa3\x44\x9a\x6b\x3f\x50\x4f\x0a\x4f\x37\x06\xdf\x58\x30\x32\x27\x5c\x84\x49\xf9\x0a\x97\xa5\x47\xa2\x67\x2e\xfa\xe9\x4b\x7c\xc4\xcb\xfd\x93\xcd\x31\xd2\x7c\xee\xa3\x3f\x09\x8b\xfe\x9f\xa9\x8b\x52\xda\x08\xd7\x12\x26\x0a\x69\xb5\xfe\x25\xd9\x36\xf2\x35\x68\xc8\xe9\x8c\x77\x63\x00\xdc\x0b\x7c\xb7\xde\xbc\xb2\xee\x62\xfc\xd9\xab\xab\xb5\xf9\xf8\x0c\x00\x00\xff\xff\x51\x69\xa2\xef\x1a\x01\x00\x00" + +func TransactionsScriptsSubeditionsGet_all_subeditionsCdcBytes() ([]byte, error) { + return bindataRead( + _TransactionsScriptsSubeditionsGet_all_subeditionsCdc, + "../../../transactions/scripts/subeditions/get_all_subeditions.cdc", + ) +} + +func TransactionsScriptsSubeditionsGet_all_subeditionsCdc() (*asset, error) { + bytes, err := TransactionsScriptsSubeditionsGet_all_subeditionsCdcBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "../../../transactions/scripts/subeditions/get_all_subeditions.cdc", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xad, 0xda, 0x11, 0x5a, 0x5b, 0xee, 0xbf, 0xe2, 0x97, 0xca, 0x74, 0xba, 0x81, 0x68, 0x30, 0xc3, 0xfd, 0xc3, 0xd6, 0x71, 0xaf, 0xc9, 0x2c, 0x5d, 0xdc, 0xaf, 0x75, 0x13, 0x10, 0x5, 0xc8, 0xe5}} + return a, nil +} + +var _TransactionsScriptsSubeditionsGet_nextsubeditionidCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x9c\x90\x41\x4b\x03\x31\x10\x85\xef\xf9\x15\xef\xd8\x5e\xac\xe8\xcd\x5b\x61\x05\x7b\xb1\xd2\xac\x3f\x20\xbb\x3b\x75\x07\x9a\xc9\x32\x99\x40\x41\xfc\xef\x92\xae\x41\xf0\xe8\xf5\x25\xef\xfb\x1e\xc3\x71\x49\x6a\xe8\xd3\xe2\xe7\x64\x38\x6b\x8a\xb8\xbf\xf6\xc7\x37\xff\x72\xec\xf7\x5d\x77\x7a\xf6\xde\xb9\xdd\x0e\xfd\xcc\x19\x79\x54\x5e\x0c\x4a\x61\xca\xb0\x99\x20\x74\x35\x5f\x06\x9a\xd8\x38\xc9\xa1\x5b\x01\xf5\xe5\x37\xdd\x4f\x91\x05\x4a\x39\x15\x1d\x09\x41\xa6\xca\x53\xb2\xa2\x52\x29\xc1\x20\x25\x0e\xa4\xb0\x74\xab\x8e\xe1\x72\x21\xbd\x59\x4f\xeb\xaf\x27\xbc\x1f\xc4\x1e\x1f\x6a\xd4\xb4\xad\xc4\xf2\x8f\x15\xce\x2d\x65\xc0\xb9\x08\x62\x60\xd9\x6c\x9b\x00\x9f\xce\x01\xf8\x59\xd7\xce\x72\xf7\x41\xf6\xfa\xc7\xb1\xd9\xba\xaf\xef\x00\x00\x00\xff\xff\x82\xc4\x6a\x49\x3d\x01\x00\x00" + +func TransactionsScriptsSubeditionsGet_nextsubeditionidCdcBytes() ([]byte, error) { + return bindataRead( + _TransactionsScriptsSubeditionsGet_nextsubeditionidCdc, + "../../../transactions/scripts/subeditions/get_nextSubeditionID.cdc", + ) +} + +func TransactionsScriptsSubeditionsGet_nextsubeditionidCdc() (*asset, error) { + bytes, err := TransactionsScriptsSubeditionsGet_nextsubeditionidCdcBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "../../../transactions/scripts/subeditions/get_nextSubeditionID.cdc", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x71, 0xc5, 0x1d, 0x11, 0xb5, 0xbe, 0xae, 0x66, 0xf4, 0x51, 0x8b, 0x6, 0x55, 0x50, 0x80, 0x85, 0xd2, 0x56, 0x47, 0xad, 0x31, 0x52, 0xb, 0xbe, 0x39, 0x57, 0x99, 0x4a, 0x93, 0x8f, 0xd2, 0x96}} + return a, nil +} + +var _TransactionsScriptsSubeditionsGet_nft_subeditionCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x4c\x8e\xc1\x4a\xc4\x30\x10\x86\xef\x79\x8a\x9f\x3d\xed\x5e\x44\x54\x3c\x08\xb2\x88\x15\xec\x41\x2a\xa6\x3e\x40\xdb\x4c\xec\x40\x33\x09\xe9\x04\x04\xf1\xdd\xc5\x96\x2e\x9d\xcb\x0c\x0c\xdf\xc7\xc7\x21\xc5\xac\x68\x63\xb2\x63\x54\xf8\x1c\x03\xae\xbf\xdb\xe6\xdd\xbe\x36\xed\x53\x55\x7d\xbc\x58\x6b\x4c\x2a\x3d\x7c\x11\x84\x8e\xe5\x28\x5e\xeb\xea\x01\x9f\xb5\xe8\xfd\xdd\x69\x3d\x6e\x6f\xf0\x63\x0c\x00\x4c\xa4\x98\x4b\x4f\x8e\x95\xa3\xe0\x71\x53\x5f\x7d\x91\xbe\xc5\x40\xa2\xb3\xbd\xbc\x37\xd7\xb2\x4e\x0b\xbf\x9f\xf3\x19\xa9\x13\x1e\x8e\x87\xe7\x58\x26\x07\xf9\x2f\x64\x71\xd0\x91\x30\x27\x1a\xd8\x33\x39\x84\x45\x7b\x58\xf9\x4c\x5a\xb2\xec\x12\xcc\xef\x5f\x00\x00\x00\xff\xff\xb2\x46\x89\x55\xe4\x00\x00\x00" + +func TransactionsScriptsSubeditionsGet_nft_subeditionCdcBytes() ([]byte, error) { + return bindataRead( + _TransactionsScriptsSubeditionsGet_nft_subeditionCdc, + "../../../transactions/scripts/subeditions/get_nft_subedition.cdc", + ) +} + +func TransactionsScriptsSubeditionsGet_nft_subeditionCdc() (*asset, error) { + bytes, err := TransactionsScriptsSubeditionsGet_nft_subeditionCdcBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "../../../transactions/scripts/subeditions/get_nft_subedition.cdc", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc3, 0x2c, 0x69, 0x26, 0xff, 0x94, 0x4d, 0x4c, 0x84, 0x9, 0xce, 0xe9, 0x1d, 0x3d, 0x8e, 0x4a, 0x9, 0x9a, 0x19, 0xd2, 0x55, 0x64, 0x2, 0xd3, 0xb4, 0x83, 0xe7, 0x4e, 0xdd, 0x5, 0xb9, 0x88}} + return a, nil +} + +var _TransactionsScriptsSubeditionsGet_subedition_by_idCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x5c\x90\xcf\x4e\x84\x30\x10\xc6\xef\x7d\x8a\xef\xe8\x5e\xc4\xe8\x8d\xc4\x83\x06\x13\x39\xed\x66\xc1\x07\x28\x30\x48\x13\x68\x71\x3a\x8d\x6e\x8c\xef\x6e\x28\xf2\xc7\x3d\xb6\xf9\xe6\x37\xbf\x6f\xcc\x30\x3a\x16\x94\x6e\x2c\x3a\x27\x68\xd9\x0d\xb8\xfb\x2a\x8f\xa7\xe2\xf5\x58\x3e\x65\xd9\xf9\xa5\x28\x94\x4a\x12\x94\x9d\xf1\xf0\x35\x9b\x51\xc0\x24\x81\xad\x87\x74\x84\x36\xf4\x3d\x8a\x50\x51\x63\xc4\x38\x0b\xb2\x62\xe4\x12\x41\xd3\xd8\x14\x59\xe0\x7e\xd0\x2c\xa8\x9d\x15\xd6\xb5\x44\xea\x49\xb3\x1e\x48\x88\x7d\xaa\x92\x64\xfa\xf1\x2b\x2a\xcf\x52\x94\x1d\x21\x58\xf3\x11\x08\x79\x86\xd6\x71\x04\x6e\x19\x7c\x76\xce\x13\x1a\x2d\x1a\x96\xa8\xf1\x10\x87\x8a\xc0\xa4\x9b\xb8\xe0\x3c\xab\xa6\x3b\xc5\xb8\x45\x38\xd4\x7f\x75\x17\xbd\x4d\x6c\x0c\x15\xda\x60\x31\x68\x63\x6f\xfe\x0b\xbd\xe5\x56\x1e\xee\x0f\xe9\x32\x75\xbb\xab\xfe\xad\x14\x00\xf4\x24\xab\xa1\x38\x8b\xc7\x35\xfb\x4e\xb2\xc5\x9f\x2f\x79\x76\x05\xdf\xbf\x0e\x33\x6c\x3e\xf5\x9e\xa7\x7e\x7e\x03\x00\x00\xff\xff\x3a\x91\x6a\x6a\xb4\x01\x00\x00" + +func TransactionsScriptsSubeditionsGet_subedition_by_idCdcBytes() ([]byte, error) { + return bindataRead( + _TransactionsScriptsSubeditionsGet_subedition_by_idCdc, + "../../../transactions/scripts/subeditions/get_subedition_by_id.cdc", + ) +} + +func TransactionsScriptsSubeditionsGet_subedition_by_idCdc() (*asset, error) { + bytes, err := TransactionsScriptsSubeditionsGet_subedition_by_idCdcBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "../../../transactions/scripts/subeditions/get_subedition_by_id.cdc", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xee, 0x61, 0x5, 0x12, 0x2b, 0xc6, 0xf3, 0x5, 0x9f, 0xf, 0xd4, 0x56, 0x30, 0x4b, 0xde, 0xef, 0x90, 0x1d, 0x1f, 0x3f, 0x59, 0x8d, 0xe3, 0xf9, 0x3b, 0x98, 0xfd, 0x56, 0x0, 0x31, 0xed, 0x3e}} + return a, nil +} + var _TransactionsShardedcollectionBatch_from_shardedCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x74\x53\x4d\x6f\x9b\x40\x10\xbd\xf3\x2b\x26\x97\x16\x4b\x0d\xf4\x50\xf5\x60\x39\x51\xad\x10\x2b\x3e\xd4\xb1\x0c\x55\x0f\x55\x0f\xcb\x32\x98\x6d\x61\x17\xcd\x0e\x75\xa2\xc8\xff\xbd\x5a\x3e\x8c\x71\x92\x3d\x20\x34\xbc\x99\xf7\xf6\xbd\x41\x55\xb5\x21\x86\x8d\xd1\xab\x46\xef\x55\x5a\x62\x62\xfe\xa2\x86\x9c\x4c\x05\x9f\x9f\x36\xab\x64\x19\x45\xbb\xfb\x38\xf6\x7a\x64\x62\xea\xb8\x30\x3c\x00\x92\xc7\x6d\xfc\xf0\xf8\x0e\x28\x2e\x04\x65\x98\xdd\x99\xb2\x44\xc9\xca\x9c\xc6\xc6\x0f\xcb\x5d\x74\x1f\x0d\x5d\x5e\x18\x42\x52\x28\x0b\x4c\x42\x5b\xd1\x41\x33\xac\x8d\x55\x6c\x41\x80\x6e\xaa\x14\x09\x4c\x0e\x9b\x55\x62\x81\x0d\x08\x20\x94\xaa\x56\xa8\xb9\xed\xde\x0a\x12\x15\x32\x92\xf5\xc2\xd0\x15\x4e\x9f\xe7\xc0\x05\xc2\xaa\x34\x07\x10\x59\x46\x68\x2d\x1c\x0a\x03\x07\x55\x96\x0e\x84\xea\x1f\xb6\x08\x37\xd9\x35\x56\xa6\x42\xcd\xeb\xc8\xce\x41\x68\x10\x44\xe2\xd9\x11\x77\x65\x58\x47\x76\x94\x51\x08\x1e\x79\x26\x13\x3d\xef\xec\x26\xfe\x99\x96\x65\x27\xe1\xd3\x39\xcd\xaf\x1f\x6b\xcd\x5f\xbf\xfc\x9e\xc1\x8b\xe7\x01\x00\x94\xc8\x9d\x13\x39\x52\x9b\x86\x9d\xc3\xb7\xcb\x84\x82\xd1\xd5\xb6\xa9\x7d\xd4\x84\xb5\x20\xf4\x85\x94\x8e\xac\xe1\x62\x29\xa5\x69\x34\xbb\xd9\xd0\x9f\xd3\x8b\xc5\x32\x0f\xa6\x44\xb0\xb8\x06\xd7\x1c\xa4\x86\xc8\x1c\x16\x1f\xde\x4b\x32\x78\x55\xb9\xf5\x5d\xb8\x73\x08\x2d\x1b\x12\x7b\x0c\x7b\xc4\xf7\xf6\xa6\x23\x6e\x76\x15\xa4\x82\x65\xf1\x53\x71\x91\x91\x38\xf8\x2a\xb3\xf3\xd1\x8f\x59\x2b\xef\xd8\x39\x81\x4f\x28\x1b\xc6\xc1\x18\x77\xc2\x10\xf6\xce\x9f\x02\x47\xef\x3f\x5a\xa8\x9b\xb4\x54\xd2\x69\x77\xd7\x05\x93\xfe\x41\xc9\xa7\x26\xe7\xe8\x98\xd4\x8d\x9b\xd0\x1b\x33\x86\x33\x7b\x93\xe3\x6c\x77\x09\x73\x24\xd4\x12\x21\x37\x34\x08\x70\x69\xd3\x25\x4f\x5b\xdc\x61\x0e\x37\x23\x6b\xb0\x47\xbe\x13\xb5\x48\x55\xa9\xf8\xd9\x0f\x3b\xc1\xe1\x2b\x77\x4e\xce\xbf\xf4\xd6\x07\x97\x90\x6d\xdb\x79\xbc\xf5\x67\x57\x13\xc9\xfd\x0f\x33\x6c\x33\x28\x3d\x11\x69\x41\x4e\x37\xc6\x9d\x33\xb1\x5d\x2a\x51\x37\xc4\xe7\x7e\xef\x16\xd7\x6f\x6c\xc9\x90\xd1\xf1\x7f\x00\x00\x00\xff\xff\x53\xaa\xa5\xd9\x3e\x04\x00\x00" func TransactionsShardedcollectionBatch_from_shardedCdcBytes() ([]byte, error) { @@ -1635,7 +1909,7 @@ func TransactionsShardedcollectionBatch_from_shardedCdc() (*asset, error) { return a, nil } -var _TransactionsShardedcollectionSetup_sharded_collectionCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xbc\x52\x4d\x6b\xdb\x40\x14\xbc\xeb\x57\x4c\x73\x08\x0a\x24\x56\x0f\xa5\x87\xe0\x04\xdc\xda\x90\x1e\x4a\x4c\xe4\xfe\x80\xe7\xf5\x53\xb4\x58\xbb\x2b\x76\x9f\x9a\x98\xe0\xff\x5e\x56\xf2\x87\x64\x63\x68\x2f\xdd\x83\x10\xcb\xbc\x99\xd9\x99\xa7\x4d\xed\xbc\x60\xe1\xea\xbc\x74\x82\xc2\x3b\x83\xcf\xef\x8b\xe7\x79\xfe\xf4\xbc\x98\x4c\xa7\x2f\xb3\x3c\x4f\x86\xa0\xbc\x24\xbf\xe2\xd5\x77\x57\x55\xac\x44\x3b\xbb\x9f\xca\x9f\x26\x2f\xd3\xd9\x74\x3f\x95\x64\x19\x16\xa5\x0e\x10\x4f\x36\x50\x07\x55\x9e\x49\x38\x80\xec\x0a\x41\x9c\x6f\x7f\xc1\xa6\x96\x0d\x8c\x33\x6c\x05\xea\x48\x1c\x29\x22\xf2\x30\x85\xba\x59\x56\x5a\x41\x51\x4d\x4b\x5d\x69\xd9\xa0\x70\x1e\x5a\x46\x11\xfa\xb3\x25\x08\x20\xcf\x08\x75\xa5\x05\xda\x8a\x03\xc1\x36\x66\xc9\x1e\xae\xc0\xb2\x51\x6b\x96\x70\xf0\x66\x68\xcd\xa1\x75\x42\xaf\x0c\xe3\x3c\x83\x8b\x42\x2b\x1d\x9d\x44\xe9\x9a\x7d\xe1\xbc\x21\x2b\xed\x83\xe6\xe4\xc9\xb0\xb0\x8f\x14\xf1\xc2\x36\xe6\x5b\xc7\x79\x8f\x45\xc9\xe7\x52\x10\xb7\x33\xb3\xb7\x17\x4d\x25\x49\x2f\x95\xb4\x4f\xf2\xeb\x87\x95\xaf\x5f\x6e\xf0\x91\x24\x00\x50\x7b\xae\xc9\x73\x4a\x4a\xc9\x3d\x26\x8d\x94\x13\xa5\x5c\x63\xe5\x80\x88\x47\x17\x88\x80\xd1\xd2\x79\xef\xde\xc6\xd7\x97\xaa\x1a\x9d\xdd\x3c\xa6\xb1\xbd\x7b\x64\xbb\x0c\xb2\x1d\xa2\x33\x7b\xc4\xdd\xe0\xe1\x01\x56\x57\x7d\xd5\x78\x2a\x1e\x34\x36\xbe\xbb\xb8\x26\xa3\xae\xc5\x59\xec\xfa\x78\x3b\x78\xfb\xf1\xff\x66\x20\x12\x83\x6f\x24\x16\xc9\x6f\xe8\x2d\x9e\xb6\xfb\xea\x06\xf0\x36\x8a\x40\xbf\x39\x1d\xdf\x1d\xbd\xdd\x42\xdc\x5f\xbc\x33\x39\x55\xee\x6c\x5f\xdc\x3d\x29\xb9\x17\xc0\x60\x78\xdf\x4a\xa5\xed\x7a\x7c\xfd\xb1\x0b\x66\x74\x2a\x39\x6f\x79\xb7\x8f\x69\xd6\x29\x64\xa7\x80\x5b\x08\xf9\x57\x96\x7f\x6a\x09\x27\xa7\x75\xd2\xd8\xe8\xe5\xa2\xd0\x30\xf5\x6d\x72\x9e\xea\x7f\x7c\xca\x41\x7c\x0b\xae\x02\x9f\x2e\x5e\x4d\x56\xab\xf4\x6a\x37\xdd\xdf\x0a\xaa\x3c\xd3\x6a\x03\x7e\xd7\x41\xc2\xa7\xab\x1e\x53\xd2\x7d\xb7\x7f\x02\x00\x00\xff\xff\xc6\x90\x5b\xe5\xf7\x04\x00\x00" +var _TransactionsShardedcollectionSetup_sharded_collectionCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xbc\x54\x4d\x6f\xda\x40\x10\xbd\xfb\x57\x4c\x73\x88\x8c\x44\xec\x1e\xaa\x1e\x10\x89\x44\x0b\x51\x7a\x68\x82\xb0\xfb\x03\xd6\xcb\x18\xaf\xd8\x0f\x6b\x77\x9c\x04\x45\xfc\xf7\x6a\x6d\x63\x6c\x23\xa4\xf6\x92\x3d\xa0\xd5\xea\xcd\x9b\x37\xef\x0d\x16\xaa\x34\x96\x20\x35\x65\x52\x18\x82\xdc\x1a\x05\x5f\xdf\xd3\x97\x75\xf2\xf4\x92\x2e\x96\xcb\xcd\x2a\x49\x82\x21\x28\x29\x98\xdd\xe2\xf6\xa7\x91\x12\x39\x09\xa3\x4f\x55\xc9\xd3\x62\xb3\x5c\x2d\x47\x55\xcf\x46\x3f\x56\x7a\x27\x32\x89\xa9\xd9\x63\x87\x7e\x7e\xec\xf8\x83\x38\x86\xb4\x10\x0e\xc8\x32\xed\x58\x43\xca\x2d\x32\x42\x07\x4c\x6f\xc1\x91\xb1\xf5\x15\x50\x95\x74\x00\x65\x14\x6a\x02\x7e\x96\xe0\x29\x3c\xb2\xab\x82\xb2\xca\xa4\xe0\xc0\x59\xc9\x32\x21\x05\x1d\x20\x37\x16\x04\x45\x1e\xfa\xbb\x26\x70\xc0\x2c\x82\x2b\xa5\x20\x10\x9a\x0c\x30\xd0\x95\xca\xd0\x82\xc9\x21\xab\xf8\x1e\xc9\x75\xda\x14\xdb\xa3\xab\x95\xb0\x1d\x82\x32\x16\x01\xf3\x5c\x70\xe1\x95\xf8\xd6\x25\xda\xdc\x58\xc5\x34\xd5\x03\xad\x99\x65\x0a\x09\xad\xa7\xf0\x0f\xba\x52\x3f\x1a\xce\x19\xa4\x05\x5e\xb6\x02\x32\xad\x98\x93\x3c\x2f\x2a\x08\x7a\xae\x84\x7d\x92\x3f\xbf\x34\x7d\xff\x36\x81\x8f\x20\x00\x00\x28\x2d\x96\xcc\x62\xc8\x38\xa7\x19\x2c\x2a\x2a\x16\x9c\x9b\x4a\x53\x87\xf0\x47\xe4\xe0\x01\x51\x66\xac\x35\x6f\xf3\xdb\x6b\xa1\x46\x17\x2f\x0f\xa1\x4f\x6e\x06\x71\xeb\x41\xdc\x22\x1a\xb1\x67\xdc\x04\xee\xef\x41\x0b\xd9\xef\xea\x8f\xc4\x41\x62\xf3\xbb\xab\x0b\x15\x35\x29\xae\x7c\xd6\xe7\xd7\xc1\xec\xe7\xfb\x64\xd0\xc4\x1b\x5f\x91\x0f\x12\xdf\xa0\xb7\xa2\x42\x9f\xa2\x1b\xc0\x6b\x2b\x1c\x7b\xc5\x70\x7e\x77\xd6\x36\x05\x32\xff\x30\x67\x30\xee\xdc\xc8\xbe\xba\x7b\x54\x60\xcf\x80\x41\xf1\x29\x15\x29\xf4\x7e\x7e\xfb\xd1\x1a\x13\x8d\x5b\xae\x6b\xde\xe3\x43\x18\x37\x1d\xe2\x31\x60\x0a\xc4\xec\x0e\xe9\xbf\x52\x82\xd1\xa9\x95\x54\xda\x6b\xb9\xda\x68\xe8\xfa\x31\xb8\x74\xb5\x1d\x65\xfc\xf7\x8f\x36\xc8\x51\xbc\xa2\x9d\x5e\x7c\x19\xa2\xf1\xa0\x53\xf8\x0c\x23\x3a\xe9\x47\x40\xe9\x70\xbc\xb6\x25\xd3\x82\x87\x37\x6d\x75\x7f\xa7\x98\xb4\xc8\xb6\x07\xc0\x77\xe1\xc8\x7d\xb9\xe9\x31\x05\xcd\xef\xf1\x6f\x00\x00\x00\xff\xff\xef\x9c\x00\x24\x5f\x05\x00\x00" func TransactionsShardedcollectionSetup_sharded_collectionCdcBytes() ([]byte, error) { return bindataRead( @@ -1651,7 +1925,7 @@ func TransactionsShardedcollectionSetup_sharded_collectionCdc() (*asset, error) } info := bindataFileInfo{name: "../../../transactions/shardedCollection/setup_sharded_collection.cdc", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x5, 0x5f, 0x46, 0xfe, 0x70, 0x79, 0xee, 0x71, 0x85, 0xf3, 0xa9, 0x79, 0x5f, 0x9b, 0xd, 0x8c, 0x3b, 0xc5, 0x50, 0xed, 0xea, 0xda, 0xe2, 0x6b, 0xb1, 0xec, 0xc2, 0x1, 0x5, 0xe7, 0x15, 0x96}} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa4, 0x76, 0x48, 0xc2, 0x89, 0x79, 0xef, 0x72, 0xd8, 0x6, 0x9d, 0xc5, 0xaf, 0x74, 0x9e, 0x1e, 0x11, 0x21, 0xc3, 0x82, 0x47, 0x5b, 0x4, 0xb1, 0x14, 0xbc, 0x1, 0x76, 0xb4, 0xba, 0x3d, 0xaf}} return a, nil } @@ -1755,6 +2029,26 @@ func TransactionsUserDestroy_momentsCdc() (*asset, error) { return a, nil } +var _TransactionsUserDestroy_moments_v2Cdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x74\x93\x5f\x6f\x9b\x3c\x18\xc5\xef\xf9\x14\xe7\xed\x45\x45\xa5\x77\xb0\x29\xd3\x2e\xd0\xba\x2a\x6a\x5a\x2d\x9a\xfa\x47\x85\xf5\x66\xda\x85\xc1\x0f\xc5\x2a\xd8\xc8\x7e\x58\x1b\x4d\xf9\xee\x93\x81\x84\x34\x69\xb8\x40\xb6\x75\x38\xfe\xf9\x1c\xac\x9a\xd6\x58\xc6\xad\xd1\xd7\x9d\x7e\x52\x79\x4d\x99\x79\x26\x8d\xd2\x9a\x06\x1f\x5f\x6f\xaf\xb3\xf9\x62\xf1\x70\x95\xa6\xc1\xa8\xcc\x4c\x9b\x56\x86\x37\x82\xec\xee\x3e\xfd\x7e\x77\x44\x74\x23\xec\x33\xf1\xe3\x6c\x23\xbe\x99\x3f\xfc\xb8\xca\x1e\x67\x1b\x75\x10\xc7\xc8\x2a\xe5\xc0\x56\x68\x27\x0a\x56\x46\x43\x92\x63\x6b\x56\x0e\x02\xba\x6b\x72\xb2\x30\x25\x1a\xd3\x90\x66\x07\xf3\xa2\x49\x22\x5f\x41\xa0\x73\x64\x7b\x87\x7b\x61\x45\x43\x4c\xd6\x05\x71\xec\x17\x06\xf1\x72\xe1\x12\x08\x0d\x61\xad\x58\x4d\x1e\x58\x2e\x9c\x9f\xdd\x5e\x67\x0e\x6c\x90\xd3\x66\x47\x92\x41\xb0\x03\x12\xee\xd8\xfc\xfa\xb9\xd4\xfc\xe5\xf3\xef\x33\xfc\x0d\x02\x00\xa8\x89\x51\x98\xba\xa6\x5e\xfa\x40\x65\x82\xd3\xf1\xd0\xd1\xe5\x76\xbd\x97\xf6\xaf\xd6\x52\x2b\x2c\x85\xa2\x28\x38\xc1\xbc\xe3\x6a\x5e\x14\xa6\xd3\xec\x1d\x31\x3e\x71\x0c\x49\xb5\x72\x0c\xa1\x7b\x62\xae\x68\x7b\x72\xae\x04\x43\x58\x82\x17\x90\x44\xc8\x3e\xb8\x41\xef\x50\x1a\x8b\xdc\x70\x85\x31\xf2\x4f\x10\x5a\x8e\x93\x3f\xb3\xb3\xed\x16\xaa\xec\xd1\xd9\xb4\xae\x32\x9c\x8a\x9a\x1e\x67\x13\x2f\xce\xe1\x01\xa3\xdc\x58\x6b\x5e\xbe\x9e\xee\xd5\x18\x79\xfd\xa4\xfe\x16\xfa\x5a\x93\xfd\xb2\xa3\xa6\x1f\xa4\x6c\xac\x78\xa2\x7b\xc1\xd5\xee\x19\xfd\xe3\x61\x95\x84\xd2\x53\x53\x7b\x8a\x11\xf5\x08\xe6\xc8\x77\xd3\x7f\x1c\x2a\x99\x40\xc9\x33\xfc\x77\x0e\xad\xea\x43\x9f\x31\xd9\x42\xe8\x82\xea\x9d\x48\x87\x9f\xd2\xcf\x9d\xa8\xe9\x7f\x3f\xb2\x94\xaf\x20\xe9\x83\xcf\x54\xe9\x27\x28\x7e\xd7\xed\x18\xd6\xb0\x85\x5f\x0e\xd9\x5f\xa2\xe5\xa2\x27\x3b\xf0\x58\x07\xef\xcf\xd6\xc1\x76\xe8\xa8\x2e\xa3\x37\x3f\xd8\x91\x6e\xa2\xc3\x3e\x62\x37\x44\x1f\x0f\x01\x4d\x82\xb7\x24\x17\x17\x68\x85\x56\x45\x78\x72\x69\xba\x5a\x42\x1b\xc6\x60\x3e\x24\xb3\xff\xb5\xef\x6b\x74\x3e\x19\x9c\x46\x5e\x7a\xa5\xa2\x63\xda\xa9\xf0\x90\x3e\x1a\xef\xd8\x60\xea\x42\x25\x5d\x32\xb5\xbf\xb1\x5b\x07\xff\x02\x00\x00\xff\xff\xc1\x76\x31\xe3\x8f\x04\x00\x00" + +func TransactionsUserDestroy_moments_v2CdcBytes() ([]byte, error) { + return bindataRead( + _TransactionsUserDestroy_moments_v2Cdc, + "../../../transactions/user/destroy_moments_v2.cdc", + ) +} + +func TransactionsUserDestroy_moments_v2Cdc() (*asset, error) { + bytes, err := TransactionsUserDestroy_moments_v2CdcBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "../../../transactions/user/destroy_moments_v2.cdc", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x56, 0x91, 0xe4, 0xd6, 0x3e, 0x98, 0xb8, 0xdb, 0xa2, 0xec, 0x2, 0x40, 0x4, 0x33, 0x7a, 0xd5, 0x9e, 0x11, 0x73, 0xf8, 0xab, 0x44, 0x9b, 0x99, 0xfc, 0x7c, 0xef, 0xa2, 0x67, 0x6e, 0x4a, 0x27}} + return a, nil +} + var _TransactionsUserLock_fake_nftCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x5c\x92\x51\x6f\xda\x30\x14\x85\xdf\xf3\x2b\x8e\xfa\x30\xa5\x52\x21\x7b\xa8\xfa\x10\xb1\x55\x55\x19\x1b\x5a\x07\x55\x49\x7f\x80\x71\x1c\x62\xcd\xf1\x8d\xae\x6f\x44\xab\xa9\xff\x7d\x72\x42\x28\xe0\x17\x4c\x7c\xce\x77\x8f\x7d\xaf\x6d\x5a\x62\x41\x41\xed\xa6\x26\x41\xc5\xd4\xe0\xeb\x5b\xb1\x7e\xde\xfc\x5a\x17\x0f\xf3\xf9\xcb\x8f\xcd\x26\x39\x17\x3d\x91\xfe\x6b\xfd\xee\x42\xfb\xb4\x7e\xfc\xbd\x5c\xfd\x1c\x2d\x49\x96\xa1\xa8\x6d\x80\xb0\xf2\x41\x69\xb1\xe4\xa1\x44\x4c\xd3\x4a\x80\x10\x82\xf1\x25\x94\xc7\x6a\x51\x40\x6a\x25\xb0\x01\xb6\x69\x0d\x07\xf2\x4a\x22\x5f\x1d\x53\xad\x16\x45\xe4\x09\x41\x6a\x03\x77\xa8\xaf\xc9\x0b\x2b\x2d\x37\xb0\x82\xa6\x0b\x82\x4a\x59\xd7\x57\x7e\x56\xac\x1a\x23\x86\x43\x92\x65\xf1\x83\x2d\xf3\xde\xbb\x70\xb4\xc7\x72\x0e\xaa\xfa\xbf\x63\x81\x86\x1a\xe3\x25\x0a\xcb\x8e\x55\xcc\x9a\xc3\x77\xcd\xd6\x70\x54\x06\xa3\xc9\x97\x61\x88\x19\x6d\x83\x1c\x7b\xeb\x1c\xb6\x43\x20\x53\xa2\x22\x4e\x92\x93\xeb\xa6\xb1\xe8\xeb\xd2\xcb\xdd\xed\xcd\x09\xf7\x75\x61\xdf\xee\x6e\xaf\xf1\x2f\x01\x80\x96\x4d\xab\xd8\xa4\x4a\x6b\xc9\xf1\xd0\x49\xfd\xa0\x35\x75\x5e\x46\x41\x5c\xce\x08\x34\x39\x67\x7a\xee\x8b\xa9\xf0\x0d\xd1\x30\xdd\x12\x33\xed\x67\x5f\x0e\xf7\x98\x3e\x1e\x45\xdf\xd3\xd8\x9e\x1c\x59\x10\x62\xb5\x33\xd9\x9f\x3e\xf3\xa7\xe0\xfa\x48\x8f\xeb\xfe\x1e\xad\xf2\x56\xa7\x57\x8f\xd4\xb9\x12\x9e\x04\x03\x7c\x68\xf3\xa5\x1b\xd6\xe3\x40\xbe\xba\x4e\xce\x82\xfa\x4a\x30\x9b\x9c\xe7\x9d\xee\xad\xd4\x25\xab\x7d\x3a\x6e\x96\xf3\x1c\xb6\xbc\xb0\x0e\x0f\x19\x27\x62\x36\xb9\x98\xb6\x69\x3c\x5b\x2d\x8a\xd4\x57\x92\x63\x36\xf1\x95\x9c\x3e\xea\xb8\x3b\x01\xc6\x66\x9a\x20\x4c\xef\xa8\x0d\x9b\x38\x3d\x3b\x23\x60\x5b\xc6\x9e\x3a\x0a\x21\xfe\xb2\x09\xd4\xb1\x36\x30\xcc\xc4\x98\x20\xd4\xc7\x07\x50\x5a\x3a\xe5\xdc\x7b\xef\x8b\x8c\x23\x7b\x04\xcf\x26\x9f\x99\xfb\xc3\x8f\xe4\x23\xf9\x1f\x00\x00\xff\xff\xb7\xac\x71\xf1\x53\x03\x00\x00" func TransactionsUserLock_fake_nftCdcBytes() ([]byte, error) { @@ -1795,7 +2089,7 @@ func TransactionsUserLock_momentCdc() (*asset, error) { return a, nil } -var _TransactionsUserSetup_accountCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x7c\x93\x4f\x6f\xe2\x30\x10\xc5\xef\xf9\x14\x6f\x2f\x15\x48\x94\xec\xb9\xa2\xd5\x46\x0b\x68\xf7\x40\x8b\x4a\xd4\x3d\x0f\x66\x00\x0b\x63\x47\xf6\xa4\x14\x55\x7c\xf7\x95\x03\x21\xfc\x6b\x39\x70\xc9\xef\x8d\x7f\xf3\x2c\xeb\x75\xe1\xbc\xe0\xd9\xd9\x61\x69\x17\x7a\x6a\x38\x77\x2b\xb6\x98\x7b\xb7\xc6\xcf\x8f\xe7\x61\x9e\xf5\xfb\xaf\x83\xc9\x24\x39\x90\xb9\x2b\x26\x4b\x27\x35\x90\xbf\x8c\x27\x7f\x5e\x2e\xa1\x11\x0b\xcd\x48\xe8\x4d\xf3\x26\xd4\xe8\x68\x90\x67\xfd\x2c\xcf\xde\xfe\x0e\xfe\x4d\xea\x40\x92\xa6\xc8\x97\x3a\x40\x3c\xd9\x40\x4a\xb4\xb3\x08\x2c\x01\x65\x01\xb2\x20\xa5\x5c\x69\x05\xe2\x50\x06\x8e\xa7\x23\x1e\x1f\x63\xd3\x2d\x82\x38\xaf\xed\x22\x82\xbc\x2e\x64\x8b\xb5\x5b\xb3\x15\x28\x67\x0c\xef\x67\x91\x9d\x41\x79\x26\xd1\x76\x11\x53\x84\xa2\x9c\x1a\xad\xa0\xa8\xa0\xa9\x36\x5a\xb6\x98\x3b\x0f\x2d\x49\x72\xea\xf0\x99\x24\x00\x50\x78\x2e\xc8\x73\x8b\x94\x92\x07\x64\xa5\x2c\xb3\xbd\x51\xbb\x26\xe2\x2f\x4d\x31\xd4\x3e\x48\x07\x6a\xc9\x6a\x15\x6d\x03\x33\xf4\x1c\x74\x4b\xc9\x78\xa6\xd9\x16\xfc\xa1\x83\x84\xe3\x90\x48\x2b\x25\xdd\xa9\xf3\xde\x6d\x7a\x77\x87\xa6\xbb\xbf\x8f\xc9\xa7\x56\xac\xf2\x01\x69\xdc\x9b\x16\x9c\x8e\xaa\xd9\x0d\xd0\xc6\xe3\x23\xac\x36\xa7\x6e\x07\xbf\xaa\x03\x06\xc1\xf2\xe6\x78\x89\x4d\xf2\x0c\x37\x7c\xe6\xdb\xbb\xaf\x03\xdd\xfd\x94\x41\xec\xba\xc9\xb6\xda\xa0\xf0\x03\xbf\xae\x85\xaf\x2c\xc6\xa5\x40\x96\x5c\x49\x34\x18\xb4\xc5\x61\xa5\xb3\x40\x55\x47\xa0\x77\x6e\xf5\xee\x1b\x9f\x0e\xc4\x7d\xd7\xc1\xd7\xab\xdf\xbe\xf9\xe8\xa3\x6e\x17\x51\x09\x18\x6d\x57\xbd\xbb\xcf\xcb\x27\x72\xb2\xe6\xb8\x9a\xdb\x39\xb6\x74\xa9\x54\x7f\x3f\x7b\x16\xdd\x57\x0e\xce\xbc\xb3\x6f\xb8\xdd\x53\x2b\xdd\x3b\x5e\x6d\xd5\x81\x90\x5f\xb0\x7c\xbb\x78\xad\xbd\x4b\xf6\xff\xbb\xff\x01\x00\x00\xff\xff\x19\x1f\x8d\xb2\xde\x03\x00\x00" +var _TransactionsUserSetup_accountCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x7c\x93\x4f\x6f\xe2\x30\x10\xc5\xef\xf9\x14\x6f\x2f\x15\x48\x94\xec\xb9\xa2\xd5\x46\x0b\x68\xf7\x40\x8b\x20\xea\x9e\x07\x33\x80\x45\xb0\x23\x7b\x02\x45\x15\xdf\x7d\xe5\x84\x10\xfe\xb5\x1c\xb8\xe4\xf7\xc6\xbf\x79\x96\xf5\x26\xb7\x4e\xf0\x6a\xcd\xb0\x30\x4b\x3d\xcb\x38\xb5\x6b\x36\x58\x38\xbb\xc1\xcf\x8f\xd7\x61\x9a\xf4\xfb\x93\xc1\x74\x1a\x1d\xc9\xd4\xe6\xd3\x95\x95\x1a\x48\xdf\xc6\xd3\x3f\x6f\xd7\xd0\x88\x85\xe6\x24\xf4\xae\x79\xe7\x6b\x74\x34\x48\x93\x7e\x92\x26\xef\x7f\x07\xff\xa6\x75\x20\x8a\x63\xa4\x2b\xed\x21\x8e\x8c\x27\x25\xda\x1a\x78\x16\x8f\x22\x07\x19\x90\x52\xb6\x30\x02\xb1\x28\x3c\x87\xd3\x11\x8e\x0f\xb1\xd9\x1e\x5e\xac\xd3\x66\x19\x40\xde\xe4\xb2\xc7\xc6\x6e\xd8\x08\x94\xcd\x32\xae\x66\x91\x99\x43\x39\x26\xd1\x66\x19\x52\x84\xbc\x98\x65\x5a\x41\x51\x4e\x33\x9d\x69\xd9\x63\x61\x1d\xb4\x44\xd1\xb9\xc3\x67\x14\x01\x40\xee\x38\x27\xc7\x2d\x52\x4a\x9e\x90\x14\xb2\x4a\x2a\xa3\x76\x4d\x84\x5f\x1c\x63\xa8\x9d\x97\x0e\xd4\x8a\xd5\x3a\xd8\x7a\x66\xe8\x05\xe8\x9e\x52\xe6\x98\xe6\x7b\xf0\x87\xf6\xe2\x4f\x43\x02\xad\x94\x74\x67\xd6\x39\xbb\xeb\x3d\x1c\x9b\xee\xfe\x3e\x25\x5f\x5a\xa1\xca\x27\xc4\x61\x6f\x5a\x72\x3c\x2a\x67\x37\x40\x1b\xcf\xcf\x30\x3a\x3b\x77\x3b\xfa\x95\x1d\x30\x08\x86\x77\xa7\x4b\x6c\x92\x17\x78\xc6\x17\xbe\xbd\xc7\x3a\xd0\xad\xa6\x0c\x42\xd7\x4d\xb6\xd5\x06\xf9\x1f\xf8\x75\x2b\x7c\x63\x31\x2e\x04\xb2\xe2\x52\xa2\xc1\xa0\x0d\x8e\x2b\x5d\x04\xca\x3a\x3c\x6d\xb9\xd5\x7b\x6c\x7c\x3a\x10\xfb\x5d\x07\x5f\xaf\x7e\xff\xe6\x83\x8f\xba\x5f\x44\x29\x90\x69\xb3\xee\x3d\x7c\x5e\x3f\x91\xee\x84\x15\xeb\x2d\xbb\xce\xcd\xeb\x39\x6b\x60\x5c\x1e\xd9\x39\x15\x78\x6d\x5b\x7f\xbf\x78\x31\xdd\x09\x7b\x9b\x6d\xd9\x35\xdc\xe1\xa5\x15\x57\xfa\x37\x0b\x77\x20\xe4\x96\x2c\xdf\x76\x52\x6f\x74\x88\xaa\xff\x43\xf4\x3f\x00\x00\xff\xff\xca\xab\x7b\xde\xfa\x03\x00\x00" func TransactionsUserSetup_accountCdcBytes() ([]byte, error) { return bindataRead( @@ -1811,7 +2105,7 @@ func TransactionsUserSetup_accountCdc() (*asset, error) { } info := bindataFileInfo{name: "../../../transactions/user/setup_account.cdc", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x95, 0xbe, 0x8e, 0x76, 0x92, 0x9, 0x74, 0x7e, 0x18, 0x73, 0x24, 0xc7, 0x3a, 0x93, 0x40, 0xd3, 0x96, 0x4c, 0x9a, 0x19, 0xe4, 0xf8, 0x72, 0x67, 0x2d, 0xfa, 0x15, 0x61, 0xd3, 0x45, 0x73, 0x8a}} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x4a, 0x4e, 0x4b, 0xc8, 0xb3, 0xa1, 0xae, 0x1b, 0x29, 0xe2, 0x54, 0x10, 0x21, 0x3, 0x84, 0x7d, 0xa8, 0x9, 0x4b, 0x80, 0x34, 0x48, 0x87, 0x60, 0x72, 0xc0, 0x98, 0xe7, 0xbc, 0x1, 0x94, 0xd8}} return a, nil } @@ -1969,19 +2263,27 @@ var _bindata = map[string]func() (*asset, error){ "../../../transactions/admin/add_play_to_set.cdc": TransactionsAdminAdd_play_to_setCdc, "../../../transactions/admin/add_plays_to_set.cdc": TransactionsAdminAdd_plays_to_setCdc, "../../../transactions/admin/batch_mint_moment.cdc": TransactionsAdminBatch_mint_momentCdc, + "../../../transactions/admin/batch_mint_moment_with_subedition.cdc": TransactionsAdminBatch_mint_moment_with_subeditionCdc, + "../../../transactions/admin/create_new_subedition_admin_resource.cdc": TransactionsAdminCreate_new_subedition_admin_resourceCdc, "../../../transactions/admin/create_play.cdc": TransactionsAdminCreate_playCdc, "../../../transactions/admin/create_set.cdc": TransactionsAdminCreate_setCdc, "../../../transactions/admin/create_set_and_play_struct.cdc": TransactionsAdminCreate_set_and_play_structCdc, + "../../../transactions/admin/create_subedition.cdc": TransactionsAdminCreate_subeditionCdc, "../../../transactions/admin/fulfill_pack.cdc": TransactionsAdminFulfill_packCdc, + "../../../transactions/admin/grant_topshot_locking_admin.cdc": TransactionsAdminGrant_topshot_locking_adminCdc, "../../../transactions/admin/lock_set.cdc": TransactionsAdminLock_setCdc, "../../../transactions/admin/mark_moment_unlockable.cdc": TransactionsAdminMark_moment_unlockableCdc, "../../../transactions/admin/mint_moment.cdc": TransactionsAdminMint_momentCdc, + "../../../transactions/admin/mint_moment_with_subedition.cdc": TransactionsAdminMint_moment_with_subeditionCdc, "../../../transactions/admin/retireAll_plays_from_set.cdc": TransactionsAdminRetireall_plays_from_setCdc, "../../../transactions/admin/retire_all.cdc": TransactionsAdminRetire_allCdc, "../../../transactions/admin/retire_play_from_set.cdc": TransactionsAdminRetire_play_from_setCdc, + "../../../transactions/admin/set_nft_subedition.cdc": TransactionsAdminSet_nft_subeditionCdc, + "../../../transactions/admin/set_nfts_lock_expiry.cdc": TransactionsAdminSet_nfts_lock_expiryCdc, "../../../transactions/admin/start_new_series.cdc": TransactionsAdminStart_new_seriesCdc, "../../../transactions/admin/transfer_admin.cdc": TransactionsAdminTransfer_adminCdc, "../../../transactions/admin/unlock_all_moments.cdc": TransactionsAdminUnlock_all_momentsCdc, + "../../../transactions/admin/update_tagline.cdc": TransactionsAdminUpdate_taglineCdc, "../../../transactions/market/change_percentage.cdc": TransactionsMarketChange_percentageCdc, "../../../transactions/market/change_price.cdc": TransactionsMarketChange_priceCdc, "../../../transactions/market/change_receiver.cdc": TransactionsMarketChange_receiverCdc, @@ -2009,6 +2311,7 @@ var _bindata = map[string]func() (*asset, error){ "../../../transactions/marketV3/start_sale.cdc": TransactionsMarketv3Start_saleCdc, "../../../transactions/marketV3/stop_sale.cdc": TransactionsMarketv3Stop_saleCdc, "../../../transactions/marketV3/upgrade_sale.cdc": TransactionsMarketv3Upgrade_saleCdc, + "../../../transactions/scripts/collections/borrow_nft_safe.cdc": TransactionsScriptsCollectionsBorrow_nft_safeCdc, "../../../transactions/scripts/collections/get_collection_ids.cdc": TransactionsScriptsCollectionsGet_collection_idsCdc, "../../../transactions/scripts/collections/get_id_in_Collection.cdc": TransactionsScriptsCollectionsGet_id_in_collectionCdc, "../../../transactions/scripts/collections/get_locked_nfts_length.cdc": TransactionsScriptsCollectionsGet_locked_nfts_lengthCdc, @@ -2039,6 +2342,10 @@ var _bindata = map[string]func() (*asset, error){ "../../../transactions/scripts/sets/get_setSeries.cdc": TransactionsScriptsSetsGet_setseriesCdc, "../../../transactions/scripts/sets/get_set_data.cdc": TransactionsScriptsSetsGet_set_dataCdc, "../../../transactions/scripts/sets/get_set_locked.cdc": TransactionsScriptsSetsGet_set_lockedCdc, + "../../../transactions/scripts/subeditions/get_all_subeditions.cdc": TransactionsScriptsSubeditionsGet_all_subeditionsCdc, + "../../../transactions/scripts/subeditions/get_nextSubeditionID.cdc": TransactionsScriptsSubeditionsGet_nextsubeditionidCdc, + "../../../transactions/scripts/subeditions/get_nft_subedition.cdc": TransactionsScriptsSubeditionsGet_nft_subeditionCdc, + "../../../transactions/scripts/subeditions/get_subedition_by_id.cdc": TransactionsScriptsSubeditionsGet_subedition_by_idCdc, "../../../transactions/shardedCollection/batch_from_sharded.cdc": TransactionsShardedcollectionBatch_from_shardedCdc, "../../../transactions/shardedCollection/setup_sharded_collection.cdc": TransactionsShardedcollectionSetup_sharded_collectionCdc, "../../../transactions/shardedCollection/transfer_from_sharded.cdc": TransactionsShardedcollectionTransfer_from_shardedCdc, @@ -2046,6 +2353,7 @@ var _bindata = map[string]func() (*asset, error){ "../../../transactions/user/batch_transfer.cdc": TransactionsUserBatch_transferCdc, "../../../transactions/user/batch_unlock_moments.cdc": TransactionsUserBatch_unlock_momentsCdc, "../../../transactions/user/destroy_moments.cdc": TransactionsUserDestroy_momentsCdc, + "../../../transactions/user/destroy_moments_v2.cdc": TransactionsUserDestroy_moments_v2Cdc, "../../../transactions/user/lock_fake_nft.cdc": TransactionsUserLock_fake_nftCdc, "../../../transactions/user/lock_moment.cdc": TransactionsUserLock_momentCdc, "../../../transactions/user/setup_account.cdc": TransactionsUserSetup_accountCdc, @@ -2106,19 +2414,27 @@ var _bintree = &bintree{nil, map[string]*bintree{ "add_play_to_set.cdc": {TransactionsAdminAdd_play_to_setCdc, map[string]*bintree{}}, "add_plays_to_set.cdc": {TransactionsAdminAdd_plays_to_setCdc, map[string]*bintree{}}, "batch_mint_moment.cdc": {TransactionsAdminBatch_mint_momentCdc, map[string]*bintree{}}, + "batch_mint_moment_with_subedition.cdc": {TransactionsAdminBatch_mint_moment_with_subeditionCdc, map[string]*bintree{}}, + "create_new_subedition_admin_resource.cdc": {TransactionsAdminCreate_new_subedition_admin_resourceCdc, map[string]*bintree{}}, "create_play.cdc": {TransactionsAdminCreate_playCdc, map[string]*bintree{}}, "create_set.cdc": {TransactionsAdminCreate_setCdc, map[string]*bintree{}}, "create_set_and_play_struct.cdc": {TransactionsAdminCreate_set_and_play_structCdc, map[string]*bintree{}}, + "create_subedition.cdc": {TransactionsAdminCreate_subeditionCdc, map[string]*bintree{}}, "fulfill_pack.cdc": {TransactionsAdminFulfill_packCdc, map[string]*bintree{}}, + "grant_topshot_locking_admin.cdc": {TransactionsAdminGrant_topshot_locking_adminCdc, map[string]*bintree{}}, "lock_set.cdc": {TransactionsAdminLock_setCdc, map[string]*bintree{}}, "mark_moment_unlockable.cdc": {TransactionsAdminMark_moment_unlockableCdc, map[string]*bintree{}}, "mint_moment.cdc": {TransactionsAdminMint_momentCdc, map[string]*bintree{}}, + "mint_moment_with_subedition.cdc": {TransactionsAdminMint_moment_with_subeditionCdc, map[string]*bintree{}}, "retireAll_plays_from_set.cdc": {TransactionsAdminRetireall_plays_from_setCdc, map[string]*bintree{}}, "retire_all.cdc": {TransactionsAdminRetire_allCdc, map[string]*bintree{}}, "retire_play_from_set.cdc": {TransactionsAdminRetire_play_from_setCdc, map[string]*bintree{}}, + "set_nft_subedition.cdc": {TransactionsAdminSet_nft_subeditionCdc, map[string]*bintree{}}, + "set_nfts_lock_expiry.cdc": {TransactionsAdminSet_nfts_lock_expiryCdc, map[string]*bintree{}}, "start_new_series.cdc": {TransactionsAdminStart_new_seriesCdc, map[string]*bintree{}}, "transfer_admin.cdc": {TransactionsAdminTransfer_adminCdc, map[string]*bintree{}}, "unlock_all_moments.cdc": {TransactionsAdminUnlock_all_momentsCdc, map[string]*bintree{}}, + "update_tagline.cdc": {TransactionsAdminUpdate_taglineCdc, map[string]*bintree{}}, }}, "market": {nil, map[string]*bintree{ "change_percentage.cdc": {TransactionsMarketChange_percentageCdc, map[string]*bintree{}}, @@ -2157,6 +2473,7 @@ var _bintree = &bintree{nil, map[string]*bintree{ }}, "scripts": {nil, map[string]*bintree{ "collections": {nil, map[string]*bintree{ + "borrow_nft_safe.cdc": {TransactionsScriptsCollectionsBorrow_nft_safeCdc, map[string]*bintree{}}, "get_collection_ids.cdc": {TransactionsScriptsCollectionsGet_collection_idsCdc, map[string]*bintree{}}, "get_id_in_Collection.cdc": {TransactionsScriptsCollectionsGet_id_in_collectionCdc, map[string]*bintree{}}, "get_locked_nfts_length.cdc": {TransactionsScriptsCollectionsGet_locked_nfts_lengthCdc, map[string]*bintree{}}, @@ -2192,6 +2509,12 @@ var _bintree = &bintree{nil, map[string]*bintree{ "get_set_data.cdc": {TransactionsScriptsSetsGet_set_dataCdc, map[string]*bintree{}}, "get_set_locked.cdc": {TransactionsScriptsSetsGet_set_lockedCdc, map[string]*bintree{}}, }}, + "subeditions": {nil, map[string]*bintree{ + "get_all_subeditions.cdc": {TransactionsScriptsSubeditionsGet_all_subeditionsCdc, map[string]*bintree{}}, + "get_nextSubeditionID.cdc": {TransactionsScriptsSubeditionsGet_nextsubeditionidCdc, map[string]*bintree{}}, + "get_nft_subedition.cdc": {TransactionsScriptsSubeditionsGet_nft_subeditionCdc, map[string]*bintree{}}, + "get_subedition_by_id.cdc": {TransactionsScriptsSubeditionsGet_subedition_by_idCdc, map[string]*bintree{}}, + }}, }}, "shardedCollection": {nil, map[string]*bintree{ "batch_from_sharded.cdc": {TransactionsShardedcollectionBatch_from_shardedCdc, map[string]*bintree{}}, @@ -2203,6 +2526,7 @@ var _bintree = &bintree{nil, map[string]*bintree{ "batch_transfer.cdc": {TransactionsUserBatch_transferCdc, map[string]*bintree{}}, "batch_unlock_moments.cdc": {TransactionsUserBatch_unlock_momentsCdc, map[string]*bintree{}}, "destroy_moments.cdc": {TransactionsUserDestroy_momentsCdc, map[string]*bintree{}}, + "destroy_moments_v2.cdc": {TransactionsUserDestroy_moments_v2Cdc, map[string]*bintree{}}, "lock_fake_nft.cdc": {TransactionsUserLock_fake_nftCdc, map[string]*bintree{}}, "lock_moment.cdc": {TransactionsUserLock_momentCdc, map[string]*bintree{}}, "setup_account.cdc": {TransactionsUserSetup_accountCdc, map[string]*bintree{}}, diff --git a/lib/go/templates/topshot_admin_templates.go b/lib/go/templates/topshot_admin_templates.go index 47ccfb1c..a8500d40 100644 --- a/lib/go/templates/topshot_admin_templates.go +++ b/lib/go/templates/topshot_admin_templates.go @@ -7,6 +7,7 @@ import ( const ( transactionsPath = "../../../transactions/" createPlayFilename = "admin/create_play.cdc" + updateTaglineFilename = "admin/update_tagline.cdc" createSetFilename = "admin/create_set.cdc" addPlayFilename = "admin/add_play_to_set.cdc" addPlaysFilename = "admin/add_plays_to_set.cdc" @@ -20,6 +21,12 @@ const ( createSetAndPlayFilename = "admin/create_set_and_play_struct.cdc" transferAdminFilename = "admin/transfer_admin.cdc" + + mintMomentWithSubeditionFilename = "admin/mint_moment_with_subedition.cdc" + batchMintMomentWithSubeditionFilename = "admin/batch_mint_moment_with_subedition.cdc" + createNewSubeditionAdminResourceFilename = "admin/create_new_subedition_admin_resource.cdc" + createSubeditionFilename = "admin/create_subedition.cdc" + setNFTsubedition = "admin/set_nft_subedition.cdc" ) // GenerateMintPlayScript creates a new play data struct @@ -30,6 +37,14 @@ func GenerateMintPlayScript(env Environment) []byte { return []byte(replaceAddresses(code, env)) } +// GenerateMintPlayScript creates a new play data struct +// and initializes it with metadata +func GenerateUpdateTaglineScript(env Environment) []byte { + code := assets.MustAssetString(transactionsPath + updateTaglineFilename) + + return []byte(replaceAddresses(code, env)) +} + // GenerateMintSetScript creates a new Set struct and initializes its metadata func GenerateMintSetScript(env Environment) []byte { code := assets.MustAssetString(transactionsPath + createSetFilename) @@ -118,6 +133,44 @@ func GenerateCreateSetandPlayDataScript(env Environment) []byte { return []byte(replaceAddresses(code, env)) } +// GenerateMintMomentWithSubeditionScript generates a script to mint a new moment +// with Subedition from a play-set-subedition combination +func GenerateMintMomentWithSubeditionScript(env Environment) []byte { + code := assets.MustAssetString(transactionsPath + mintMomentWithSubeditionFilename) + + return []byte(replaceAddresses(code, env)) +} + +// GenerateBatchMintMomentWithSubeditionScript mints multiple moments with Subedition +// of the same play-set-subedition combination +func GenerateBatchMintMomentWithSubeditionScript(env Environment) []byte { + code := assets.MustAssetString(transactionsPath + batchMintMomentWithSubeditionFilename) + + return []byte(replaceAddresses(code, env)) +} + +// GenerateCreateNewSubeditionAdminResourceScript creates new Subedition admin resource +// for minting with Subeditions +func GenerateCreateNewSubeditionAdminResourceScript(env Environment) []byte { + code := assets.MustAssetString(transactionsPath + createNewSubeditionAdminResourceFilename) + + return []byte(replaceAddresses(code, env)) +} + +// GenerateCreateSubeditionScript creates new Subedition struct +func GenerateCreateSubeditionScript(env Environment) []byte { + code := assets.MustAssetString(transactionsPath + createSubeditionFilename) + + return []byte(replaceAddresses(code, env)) +} + +// GenerateSetNFTsubedtitionScript creates new Subedition entity in map with NFTid as key +func GenerateSetNFTsubedtitionScript(env Environment) []byte { + code := assets.MustAssetString(transactionsPath + setNFTsubedition) + + return []byte(replaceAddresses(code, env)) +} + // GenerateInvalidChangePlaysScript tries to modify the playDatas dictionary // which should be invalid func GenerateInvalidChangePlaysScript(env Environment) []byte { diff --git a/lib/go/templates/topshot_locking_templates.go b/lib/go/templates/topshot_locking_templates.go index b66c5b25..253eb9ad 100644 --- a/lib/go/templates/topshot_locking_templates.go +++ b/lib/go/templates/topshot_locking_templates.go @@ -14,6 +14,8 @@ const ( adminMarkMomentUnlockableFilename = "admin/mark_moment_unlockable.cdc" adminUnlockAllMomentsFilename = "admin/unlock_all_moments.cdc" + adminGrantAdmin = "admin/grant_topshot_locking_admin.cdc" + adminSetLockNFTsExpiryFilename = "admin/set_nfts_lock_expiry.cdc" ) // GenerateTopShotLockingLockMomentScript creates a script that locks a moment. @@ -79,9 +81,23 @@ func GenerateAdminUnlockAllMomentsScript(env Environment) []byte { return []byte(replaceAddresses(code, env)) } +// GenerateTopShotLockingAdminGrantAdminScript creates a script that stores a new admin +func GenerateTopShotLockingAdminGrantAdminScript(env Environment) []byte { + code := assets.MustAssetString(transactionsPath + adminGrantAdmin) + + return []byte(replaceAddresses(code, env)) +} + // GenerateGetLockedNFTsLengthScript creates a script that returns the number of locked NFTs in the contract func GenerateGetLockedNFTsLengthScript(env Environment) []byte { code := assets.MustAssetString(scriptsPath + getLockedNFTsLengthFilename) return []byte(replaceAddresses(code, env)) } + +// GenerateTopShotLockingAdminSetLockedNFTsExpiryScript creates a script that sets the lock expiry timestamp of nfts +func GenerateTopShotLockingAdminSetLockedNFTsExpiryScript(env Environment) []byte { + code := assets.MustAssetString(transactionsPath + adminSetLockNFTsExpiryFilename) + + return []byte(replaceAddresses(code, env)) +} diff --git a/lib/go/templates/topshot_script_templates.go b/lib/go/templates/topshot_script_templates.go index e3ade344..28207d07 100644 --- a/lib/go/templates/topshot_script_templates.go +++ b/lib/go/templates/topshot_script_templates.go @@ -39,10 +39,17 @@ const ( momentSerialNumFilename = "collections/get_moment_serialNum.cdc" momentSetNameFilename = "collections/get_moment_setName.cdc" getSetPlaysAreOwnedFilename = "collections/get_setplays_are_owned.cdc" + borrowNFTSafeFilename = "collections/borrow_nft_safe.cdc" // metadata scripts getNFTMetadataFilename = "get_nft_metadata.cdc" getTopShotMetadataFilename = "get_topshot_metadata.cdc" + + //subedition scripts + getNFTSubeditionFilename = "subeditions/get_nft_subedition.cdc" + getAllSubeditionFilename = "subeditions/get_all_subeditions.cdc" + getSubeditionByIDFilename = "subeditions/get_subedition_by_id.cdc" + getNextSubeditionIDFilename = "subeditions/get_nextSubeditionID.cdc" ) // Global Data Gettetrs @@ -231,3 +238,37 @@ func GenerateGetTopShotMetadataScript(env Environment) []byte { return []byte(replaceAddresses(code, env)) } + +// GenerateGetNFTSubeditionScript creates a script that returns the subedition for an NFT. +func GenerateGetNFTSubeditionScript(env Environment) []byte { + code := assets.MustAssetString(scriptsPath + getNFTSubeditionFilename) + + return []byte(replaceAddresses(code, env)) +} + +// GenerateGetAllSubeditionScript creates a script that returns all subeditions. +func GenerateGetAllSubeditionScript(env Environment) []byte { + code := assets.MustAssetString(scriptsPath + getAllSubeditionFilename) + + return []byte(replaceAddresses(code, env)) +} + +// GenerateGetNextSubeditionIDScript creates a script that returns next subedition ID that will be used. +func GenerateGetNextSubeditionIDScript(env Environment) []byte { + code := assets.MustAssetString(scriptsPath + getNextSubeditionIDFilename) + + return []byte(replaceAddresses(code, env)) +} + +// GenerateGetSubeditionByIDScript creates a script that returns subedition struct by ID. +func GenerateGetSubeditionByIDScript(env Environment) []byte { + code := assets.MustAssetString(scriptsPath + getSubeditionByIDFilename) + + return []byte(replaceAddresses(code, env)) +} + +func GenerateBorrowNFTSafeScript(env Environment) []byte { + code := assets.MustAssetString(scriptsPath + borrowNFTSafeFilename) + + return []byte(replaceAddresses(code, env)) +} diff --git a/lib/go/templates/topshot_user_templates.go b/lib/go/templates/topshot_user_templates.go index fbb93a38..adac961c 100644 --- a/lib/go/templates/topshot_user_templates.go +++ b/lib/go/templates/topshot_user_templates.go @@ -10,7 +10,8 @@ const ( batchTransferFilename = "user/batch_transfer.cdc" transferMomentV3Filename = "user/transfer_moment_v3_sale.cdc" - destroyMomentsFilename = "user/destroy_moments.cdc" + destroyMomentsFilename = "user/destroy_moments.cdc" + destroyMomentsV2Filename = "user/destroy_moments_v2.cdc" ) // GenerateSetupAccountScript creates a script that sets up an account to use topshot @@ -49,3 +50,11 @@ func GenerateDestroyMomentsScript(env Environment) []byte { return []byte(replaceAddresses(code, env)) } + +// GenerateDestroyMomentsV2Script creates a script that destroys select +// moments from a user's collection using the Top Shot contract destroyMoments function +func GenerateDestroyMomentsV2Script(env Environment) []byte { + code := assets.MustAssetString(transactionsPath + destroyMomentsV2Filename) + + return []byte(replaceAddresses(code, env)) +} diff --git a/lib/go/test/borrowNFT_test.go b/lib/go/test/borrowNFT_test.go new file mode 100644 index 00000000..5280b954 --- /dev/null +++ b/lib/go/test/borrowNFT_test.go @@ -0,0 +1,109 @@ +package test + +import ( + "testing" + + "github.com/onflow/cadence" + jsoncdc "github.com/onflow/cadence/encoding/json" + + "github.com/dapperlabs/nba-smart-contracts/lib/go/templates" + + "github.com/onflow/flow-go-sdk/crypto" + + "github.com/onflow/flow-go-sdk" + "github.com/stretchr/testify/assert" +) + +func TestBorrowNFTSafe(t *testing.T) { + tb := NewTopShotTestBlockchain(t) + tb.genericBootstrapping(t) // TODO: Should be able to find a codeGen/declarative way to set things up + b := tb.Blockchain + env := tb.env + + t.Run("Should return non nil if the moment id in the collection", func(t *testing.T) { + for _, momentID := range []uint64{1, 2} { + r, err := b.ExecuteScript(templates.GenerateBorrowNFTSafeScript(env), [][]byte{jsoncdc.MustEncode(cadence.Address(tb.userAddress)), jsoncdc.MustEncode(cadence.UInt64(momentID))}) + assert.NoError(t, err) + assert.NoError(t, r.Error) + expectedValue := cadence.NewBool(true) + assert.Equal(t, expectedValue, r.Value) + } + }) + + t.Run("Should return nil/empty optional if the moment does not exist in the collection", func(t *testing.T) { + r, err := b.ExecuteScript(templates.GenerateBorrowNFTSafeScript(env), [][]byte{jsoncdc.MustEncode(cadence.Address(tb.userAddress)), jsoncdc.MustEncode(cadence.UInt64(3))}) + assert.NoError(t, err) + assert.NoError(t, r.Error) + expectedValue := cadence.NewBool(false) + assert.Equal(t, expectedValue, r.Value) + }) +} + +// genericBootstrapping should get us the blockchain in a state where we can run interesting tests against it +// will need to likely expose more of the generated ids for this to be generally useful +func (tb *topshotTestBlockchain) genericBootstrapping(t *testing.T) { + b := tb.Blockchain + serviceKeySigner := tb.serviceKeySigner + topshotAddr := tb.topshotAdminAddr + accountKeys := tb.accountKeys + topshotSigner := tb.topshotAdminSigner + env := tb.env + + // Create a new user account + joshAccountKey, joshSigner := accountKeys.NewWithSigner() + joshAddress, _ := b.CreateAccount([]*flow.AccountKey{joshAccountKey}, nil) + tb.userAddress = joshAddress + // Create moment collection + tx := createTxWithTemplateAndAuthorizer(b, templates.GenerateSetupAccountScript(env), joshAddress) + signAndSubmit( + t, b, tx, + []flow.Address{b.ServiceKey().Address, joshAddress}, []crypto.Signer{serviceKeySigner, joshSigner}, + false, + ) + + firstName := CadenceString("FullName") + lebron := CadenceString("Lebron") + hayward := CadenceString("Hayward") + antetokounmpo := CadenceString("Antetokounmpo") + + // Create plays + lebronPlayID := uint32(1) + haywardPlayID := uint32(2) + antetokounmpoPlayID := uint32(3) + + for _, metadata := range [][]cadence.KeyValuePair{ + {{Key: firstName, Value: lebron}}, + {{Key: firstName, Value: hayward}}, + {{Key: firstName, Value: antetokounmpo}}, + } { + tb.CreatePlay(t, metadata) + } + + // Create Set + genesisSetID := uint32(1) + tb.CreateSet(t, "Genesis") + + // Add plays to Set + tx = createTxWithTemplateAndAuthorizer(b, templates.GenerateAddPlaysToSetScript(env), topshotAddr) + + _ = tx.AddArgument(cadence.NewUInt32(genesisSetID)) + + plays := []cadence.Value{cadence.NewUInt32(lebronPlayID), cadence.NewUInt32(haywardPlayID), cadence.NewUInt32(antetokounmpoPlayID)} + _ = tx.AddArgument(cadence.NewArray(plays)) + + signAndSubmit( + t, b, tx, + []flow.Address{b.ServiceKey().Address, topshotAddr}, []crypto.Signer{serviceKeySigner, topshotSigner}, + false, + ) + + // Mint two moments to joshAddress + tb.MintMoment(t, genesisSetID, lebronPlayID, joshAddress) + tb.MintMoment(t, genesisSetID, haywardPlayID, joshAddress) + + //check that moments with ids 1 and 2 exist in josh's collection + result := executeScriptAndCheck(t, b, templates.GenerateIsIDInCollectionScript(env), [][]byte{jsoncdc.MustEncode(cadence.Address(joshAddress)), jsoncdc.MustEncode(cadence.UInt64(1))}) + assert.Equal(t, cadence.NewBool(true), result) + result = executeScriptAndCheck(t, b, templates.GenerateIsIDInCollectionScript(env), [][]byte{jsoncdc.MustEncode(cadence.Address(joshAddress)), jsoncdc.MustEncode(cadence.UInt64(2))}) + assert.Equal(t, cadence.NewBool(true), result) +} diff --git a/lib/go/test/go.mod b/lib/go/test/go.mod index c4687625..5cb416be 100644 --- a/lib/go/test/go.mod +++ b/lib/go/test/go.mod @@ -1,16 +1,157 @@ module github.com/dapperlabs/nba-smart-contracts/lib/go/test -go 1.16 +go 1.18 require ( - github.com/dapperlabs/nba-smart-contracts/lib/go/contracts v0.2.0 - github.com/dapperlabs/nba-smart-contracts/lib/go/templates v0.3.0 - github.com/onflow/cadence v0.24.3 - github.com/onflow/flow-emulator v0.33.1 + github.com/dapperlabs/nba-smart-contracts/lib/go/contracts v0.0.0-00010101000000-000000000000 + github.com/dapperlabs/nba-smart-contracts/lib/go/templates v0.0.0-00010101000000-000000000000 + github.com/onflow/cadence v0.31.3 + github.com/onflow/flow-emulator v0.42.0 github.com/onflow/flow-ft/lib/go/contracts v0.5.0 github.com/onflow/flow-ft/lib/go/templates v0.0.0-20200629211940-37a9fc480521 - github.com/onflow/flow-go-sdk v0.26.2 - github.com/stretchr/testify v1.7.1 + github.com/onflow/flow-go-sdk v0.31.3 + github.com/stretchr/testify v1.8.1 +) + +require ( + github.com/Microsoft/go-winio v0.6.0 // indirect + github.com/ProtonMail/go-crypto v0.0.0-20230124153114-0acdc8ae009b // indirect + github.com/acomagu/bufpipe v1.0.3 // indirect + github.com/bits-and-blooms/bitset v1.5.0 // indirect + github.com/btcsuite/btcd/btcec/v2 v2.3.2 // indirect + github.com/cenkalti/backoff/v4 v4.2.0 // indirect + github.com/cespare/xxhash v1.1.0 // indirect + github.com/cespare/xxhash/v2 v2.2.0 // indirect + github.com/cloudflare/circl v1.3.1 // indirect + github.com/davecgh/go-spew v1.1.1 // indirect + github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0 // indirect + github.com/dgraph-io/badger/v2 v2.2007.4 // indirect + github.com/dgraph-io/ristretto v0.1.1 // indirect + github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect + github.com/dustin/go-humanize v1.0.1 // indirect + github.com/ef-ds/deque v1.0.4 // indirect + github.com/emirpasic/gods v1.18.1 // indirect + github.com/ethereum/go-ethereum v1.10.26 // indirect + github.com/fsnotify/fsnotify v1.6.0 // indirect + github.com/fxamacker/cbor/v2 v2.4.1-0.20220515183430-ad2eae63303f // indirect + github.com/fxamacker/circlehash v0.3.0 // indirect + github.com/go-git/gcfg v1.5.0 // indirect + github.com/go-git/go-billy/v5 v5.4.0 // indirect + github.com/go-git/go-git/v5 v5.5.2 // indirect + github.com/go-logr/logr v1.2.3 // indirect + github.com/go-logr/stdr v1.2.2 // indirect + github.com/go-test/deep v1.1.0 // indirect + github.com/gogo/protobuf v1.3.2 // indirect + github.com/golang/glog v1.0.0 // indirect + github.com/golang/protobuf v1.5.2 // indirect + github.com/golang/snappy v0.0.4 // indirect + github.com/google/uuid v1.3.0 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.15.0 // indirect + github.com/hashicorp/errwrap v1.1.0 // indirect + github.com/hashicorp/go-multierror v1.1.1 // indirect + github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d // indirect + github.com/hashicorp/hcl v1.0.0 // indirect + github.com/imdario/mergo v0.3.13 // indirect + github.com/inconshreveable/mousetrap v1.1.0 // indirect + github.com/ipfs/bbloom v0.0.4 // indirect + github.com/ipfs/go-block-format v0.0.3 // indirect + github.com/ipfs/go-cid v0.3.2 // indirect + github.com/ipfs/go-datastore v0.6.0 // indirect + github.com/ipfs/go-ipfs-blockstore v1.2.0 // indirect + github.com/ipfs/go-ipfs-ds-help v1.1.0 // indirect + github.com/ipfs/go-ipfs-util v0.0.2 // indirect + github.com/ipfs/go-ipld-format v0.4.0 // indirect + github.com/ipfs/go-log v1.0.5 // indirect + github.com/ipfs/go-log/v2 v2.5.1 // indirect + github.com/ipfs/go-metrics-interface v0.0.1 // indirect + github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect + github.com/jbenet/goprocess v0.1.4 // indirect + github.com/kevinburke/go-bindata v3.24.0+incompatible // indirect + github.com/kevinburke/ssh_config v1.2.0 // indirect + github.com/klauspost/compress v1.15.15 // indirect + github.com/klauspost/cpuid/v2 v2.2.3 // indirect + github.com/libp2p/go-buffer-pool v0.1.0 // indirect + github.com/libp2p/go-libp2p v0.24.2 // indirect + github.com/libp2p/go-openssl v0.1.0 // indirect + github.com/logrusorgru/aurora v2.0.3+incompatible // indirect + github.com/magiconair/properties v1.8.7 // indirect + github.com/mattn/go-colorable v0.1.13 // indirect + github.com/mattn/go-isatty v0.0.17 // indirect + github.com/mattn/go-pointer v0.0.1 // indirect + github.com/minio/sha256-simd v1.0.0 // indirect + github.com/mitchellh/mapstructure v1.5.0 // indirect + github.com/mr-tron/base58 v1.2.0 // indirect + github.com/multiformats/go-base32 v0.1.0 // indirect + github.com/multiformats/go-base36 v0.2.0 // indirect + github.com/multiformats/go-multiaddr v0.8.0 // indirect + github.com/multiformats/go-multibase v0.1.1 // indirect + github.com/multiformats/go-multicodec v0.7.0 // indirect + github.com/multiformats/go-multihash v0.2.1 // indirect + github.com/multiformats/go-varint v0.0.7 // indirect + github.com/onflow/atree v0.4.0 // indirect + github.com/onflow/flow-core-contracts/lib/go/contracts v0.11.2-0.20221214150253-cb74e7764c12 // indirect + github.com/onflow/flow-core-contracts/lib/go/templates v0.11.2-0.20221214150253-cb74e7764c12 // indirect + github.com/onflow/flow-go v0.29.7 // indirect + github.com/onflow/flow-go/crypto v0.24.6 // indirect + github.com/onflow/flow/protobuf/go/flow v0.3.2-0.20221202093946-932d1c70e288 // indirect + github.com/onflow/sdks v0.4.4 // indirect + github.com/opentracing/opentracing-go v1.2.0 // indirect + github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 // indirect + github.com/pelletier/go-toml/v2 v2.0.6 // indirect + github.com/pierrec/lz4 v2.6.1+incompatible // indirect + github.com/pjbgf/sha1cd v0.2.3 // indirect + github.com/pkg/errors v0.9.1 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/psiemens/sconfig v0.1.0 // indirect + github.com/rivo/uniseg v0.4.3 // indirect + github.com/rs/zerolog v1.28.0 // indirect + github.com/sergi/go-diff v1.3.1 // indirect + github.com/sethvargo/go-retry v0.2.4 // indirect + github.com/skeema/knownhosts v1.1.0 // indirect + github.com/spacemonkeygo/spacelog v0.0.0-20180420211403-2296661a0572 // indirect + github.com/spaolacci/murmur3 v1.1.0 // indirect + github.com/spf13/afero v1.9.3 // indirect + github.com/spf13/cast v1.5.0 // indirect + github.com/spf13/cobra v1.6.1 // indirect + github.com/spf13/jwalterweatherman v1.1.0 // indirect + github.com/spf13/pflag v1.0.5 // indirect + github.com/spf13/viper v1.15.0 // indirect + github.com/subosito/gotenv v1.4.2 // indirect + github.com/texttheater/golang-levenshtein/levenshtein v0.0.0-20200805054039-cae8b0eaed6c // indirect + github.com/turbolent/prettier v0.0.0-20220320183459-661cc755135d // indirect + github.com/vmihailenco/msgpack v4.0.4+incompatible // indirect + github.com/vmihailenco/msgpack/v4 v4.3.12 // indirect + github.com/vmihailenco/tagparser v0.1.2 // indirect + github.com/x448/float16 v0.8.4 // indirect + github.com/xanzy/ssh-agent v0.3.3 // indirect + github.com/zeebo/blake3 v0.2.3 // indirect + go.opentelemetry.io/otel v1.11.2 // indirect + go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.11.2 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.11.2 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.11.2 // indirect + go.opentelemetry.io/otel/sdk v1.11.2 // indirect + go.opentelemetry.io/otel/trace v1.11.2 // indirect + go.opentelemetry.io/proto/otlp v0.19.0 // indirect + go.uber.org/atomic v1.10.0 // indirect + go.uber.org/multierr v1.9.0 // indirect + go.uber.org/zap v1.24.0 // indirect + golang.org/x/crypto v0.5.0 // indirect + golang.org/x/exp v0.0.0-20230125213027-672c09215c38 // indirect + golang.org/x/mod v0.7.0 // indirect + golang.org/x/net v0.5.0 // indirect + golang.org/x/sync v0.1.0 // indirect + golang.org/x/sys v0.4.0 // indirect + golang.org/x/text v0.6.0 // indirect + golang.org/x/tools v0.5.0 // indirect + golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect + google.golang.org/appengine v1.6.7 // indirect + google.golang.org/genproto v0.0.0-20230125152338-dcaf20b6aeaa // indirect + google.golang.org/grpc v1.52.3 // indirect + google.golang.org/protobuf v1.28.1 // indirect + gopkg.in/ini.v1 v1.67.0 // indirect + gopkg.in/warnings.v0 v0.1.2 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect + lukechampine.com/blake3 v1.1.7 // indirect ) replace github.com/dapperlabs/nba-smart-contracts/lib/go/templates => ../templates diff --git a/lib/go/test/go.sum b/lib/go/test/go.sum index dc8e4014..e374e379 100644 --- a/lib/go/test/go.sum +++ b/lib/go/test/go.sum @@ -1,8 +1,5 @@ -bazil.org/fuse v0.0.0-20160811212531-371fbbdaa898/go.mod h1:Xbm+BRKSBEpa4q4hTSxohYNQpsxXPbPry4JJWOB3LB8= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.31.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.37.0/go.mod h1:TS1dMSSfndXH133OKGwekG838Om/cQT0BUHV3HcBgoo= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= @@ -20,36 +17,18 @@ cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHOb cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= -cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= -cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= -cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= -cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY= -cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM= -cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= -cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= -cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= -cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= -cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= -cloud.google.com/go v0.98.0/go.mod h1:ua6Ush4NALrHk5QXDWnjvZHN93OuF0HfuEPq9I1X0cM= -cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= -cloud.google.com/go v0.100.1/go.mod h1:fs4QogzfH5n2pBXBP9vRiU+eCny7lD2vmFZy79Iuw1U= -cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A= +cloud.google.com/go v0.105.0 h1:DNtEKRBAAzeS4KyIory52wWHuClNaXJ5x1F7xa4q+5Y= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow= -cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM= +cloud.google.com/go/compute v1.14.0 h1:hfm2+FfxVmnRlh6LpB7cg1ZNU+5edAHmW679JePztk0= +cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= -cloud.google.com/go/firestore v1.6.1/go.mod h1:asNXNOzBdyVQmEU+ggO8UPodTkEVFW5Qx+rwHnAz+EY= -cloud.google.com/go/iam v0.1.0/go.mod h1:vcUNEa0pEm0qRVpmWepWaFMIAI8/hjB9mO8rNCJtF6c= -cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= -cloud.google.com/go/kms v1.0.0/go.mod h1:nhUehi+w7zht2XrUfvTRNpxrfayBHqP4lu2NSywui/0= -cloud.google.com/go/kms v1.4.0/go.mod h1:fajBHndQ+6ubNw6Ss2sSd+SWvjL26RNo/dr7uxsnnOA= +cloud.google.com/go/iam v0.8.0 h1:E2osAkZzxI/+8pZcxVLcDtAQx/u+hZXVryUaYQ5O0Kk= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= @@ -60,20 +39,11 @@ cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohl cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= -cloud.google.com/go/storage v1.16.0/go.mod h1:ieKBmUyzcftN5tbxwnXClMKH00CfcQ+xL6NN0r5QfmE= -dmitri.shuralyov.com/app/changes v0.0.0-20180602232624-0a106ad413e3/go.mod h1:Yl+fi1br7+Rr3LqpNJf1/uxUdtRUV+Tnj0o93V2B9MU= +cloud.google.com/go/storage v1.22.1 h1:F6IlQJZrZM++apn9V5/VfS3gbTUYg98PS3EMQAzqtfg= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -dmitri.shuralyov.com/html/belt v0.0.0-20180602232347-f7d459c86be0/go.mod h1:JLBrvjyP0v+ecvNYvCpyZgu5/xkfAUhi6wJj28eUfSU= -dmitri.shuralyov.com/service/change v0.0.0-20181023043359-a85b471d5412/go.mod h1:a1inKt/atXimZ4Mv927x+r7UpyzRUf4emIoiiSC2TN4= -dmitri.shuralyov.com/state v0.0.0-20180228185332-28bcc343414c/go.mod h1:0PRwlb0D6DFvNNtx+9ybjezNCa8XF0xaYcETyp6rHWU= -git.apache.org/thrift.git v0.0.0-20180902110319-2566ecd5d999/go.mod h1:fPE2ZNJGynbRyZ4dJvy6G277gSllfV2HJqblrnkyeyg= -github.com/AndreasBriese/bbloom v0.0.0-20180913140656-343706a395b7/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= -github.com/AndreasBriese/bbloom v0.0.0-20190306092124-e2d15f34fcf9/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= -github.com/AndreasBriese/bbloom v0.0.0-20190825152654-46b345b51c96/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= github.com/Azure/azure-pipeline-go v0.2.1/go.mod h1:UGSo8XybXnIGZ3epmeBw7Jdz+HiUVpqIlpz/HKHylF4= github.com/Azure/azure-pipeline-go v0.2.2/go.mod h1:4rQ/NZncSvGqNkkOsNpOU1tgoNuIlp9AfUH5G1tvCHc= github.com/Azure/azure-storage-blob-go v0.7.0/go.mod h1:f9YQKtsG1nMisotuTPpO0tjNuEjKRYAcJU8/ydDI++4= -github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0= github.com/Azure/go-autorest/autorest/adal v0.8.0/go.mod h1:Z6vX6WXXuyieHAXwMj0S6HY6e6wcHn37qQMBQlvY3lc= @@ -86,130 +56,68 @@ github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6L github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= -github.com/DataDog/zstd v1.4.1/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= -github.com/HdrHistogram/hdrhistogram-go v0.9.0/go.mod h1:nxrse8/Tzg2tg3DZcZjm6qEclQKK70g0KxO61gFFZD4= -github.com/HdrHistogram/hdrhistogram-go v1.1.2 h1:5IcZpTvzydCQeHzK4Ef/D5rrSqwxob0t8PQPMybUNFM= -github.com/HdrHistogram/hdrhistogram-go v1.1.2/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo= -github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= -github.com/Kubuxu/go-os-helper v0.0.1/go.mod h1:N8B+I7vPCT80IcP58r50u4+gEEcsZETFUpAzWW2ep1Y= -github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= -github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= -github.com/Microsoft/go-winio v0.4.16 h1:FtSW/jqD+l4ba5iPBj9CODVtgfYAD8w2wS923g/cFDk= -github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= -github.com/Microsoft/hcsshim v0.8.7/go.mod h1:OHd7sQqRFrYd3RmSgbgji+ctCwkbq2wbEYNSzOYtcBQ= +github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= +github.com/Microsoft/go-winio v0.6.0 h1:slsWYD/zyx7lCXoZVlvQrj0hPTM1HI4+v1sIda2yDvg= +github.com/Microsoft/go-winio v0.6.0/go.mod h1:cTAf44im0RAYeL23bpB+fzCyDH2MJiz2BO69KH/soAE= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/OneOfOne/xxhash v1.2.5 h1:zl/OfRA6nftbBK9qTohYBJ5xvw6C/oNKizR7cZGl3cI= github.com/OneOfOne/xxhash v1.2.5/go.mod h1:eZbhyaAYD41SGSSsnmcpxVoRiQ/MPUTjUdIIOT9Um7Q= -github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7 h1:YoJbenK9C67SkzkDfmQuVln04ygHj3vjZfd9FL+GmQQ= -github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7/go.mod h1:z4/9nQmJSSwwds7ejkxaJwO37dru3geImFUdJlaLzQo= -github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= -github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= +github.com/ProtonMail/go-crypto v0.0.0-20221026131551-cf6655e29de4/go.mod h1:UBYPn8k0D56RtnR8RFQMjmh4KrZzWJ5o7Z9SYjossQ8= +github.com/ProtonMail/go-crypto v0.0.0-20230124153114-0acdc8ae009b h1:1DHH9haxfhaVM8owXQjLdn7UP4AkDfzSdiRoLdcSCqE= +github.com/ProtonMail/go-crypto v0.0.0-20230124153114-0acdc8ae009b/go.mod h1:I0gYDMZ6Z5GRU7l58bNFSkPTFN6Yl12dsUlAZ8xy98g= github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= github.com/VictoriaMetrics/fastcache v1.5.3/go.mod h1:+jv9Ckb+za/P1ZRg/sulP5Ni1v49daAVERr0H3CuscE= -github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= github.com/acomagu/bufpipe v1.0.3 h1:fxAGrHZTgQ9w5QqVItgzwj235/uYZYgbXitB+dLupOk= github.com/acomagu/bufpipe v1.0.3/go.mod h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4= -github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII= -github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= -github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2ucNfQESPXM= -github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= +github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8= +github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/antlr/antlr4 v0.0.0-20191217191749-ff67971f8580/go.mod h1:T7PbCXFs94rrTttyxjbyT5+/1V8T2TYDejxUfHJjw1Y= github.com/antlr/antlr4 v0.0.0-20200503195918-621b933c7a7f/go.mod h1:T7PbCXFs94rrTttyxjbyT5+/1V8T2TYDejxUfHJjw1Y= -github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= -github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= github.com/aristanetworks/goarista v0.0.0-20170210015632-ea17b1a17847/go.mod h1:D/tb0zPVXnP7fmsLZjtdUhSsumbK/ij54UXjjVgMGxQ= -github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= -github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= -github.com/armon/go-metrics v0.3.10/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= -github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= -github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= -github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= -github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= github.com/aws/aws-sdk-go v1.25.48/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= -github.com/aws/aws-sdk-go-v2 v1.9.0/go.mod h1:cK/D0BBs0b/oWPIcX/Z/obahJK1TT7IPVjy53i/mX/4= -github.com/aws/aws-sdk-go-v2/config v1.8.0/go.mod h1:w9+nMZ7soXCe5nT46Ri354SNhXDQ6v+V5wqDjnZE+GY= -github.com/aws/aws-sdk-go-v2/credentials v1.4.0/go.mod h1:dgGR+Qq7Wjcd4AOAW5Rf5Tnv3+x7ed6kETXyS9WCuAY= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.5.0/go.mod h1:CpNzHK9VEFUCknu50kkB8z58AH2B5DvPP7ea1LHve/Y= -github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.5.1/go.mod h1:PLlnMiki//sGnCJiW+aVpvP/C8Kcm8mEj/IVm9+9qk4= -github.com/aws/aws-sdk-go-v2/internal/ini v1.2.2/go.mod h1:BQV0agm+JEhqR+2RT5e1XTFIDcAAV0eW6z2trp+iduw= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.3.0/go.mod h1:v8ygadNyATSm6elwJ/4gzJwcFhri9RqS8skgHKiwXPU= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.3.0/go.mod h1:R1KK+vY8AfalhG1AOu5e35pOD2SdoPKQCFLTvnxiohk= -github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.7.0/go.mod h1:LKb3cKNQIMh+itGnEpKGcnL/6OIjPZqrtYah1w5f+3o= -github.com/aws/aws-sdk-go-v2/service/s3 v1.15.0/go.mod h1:Iv2aJVtVSm/D22rFoX99cLG4q4uB7tppuCsulGe98k4= -github.com/aws/aws-sdk-go-v2/service/sso v1.4.0/go.mod h1:+1fpWnL96DL23aXPpMGbsmKe8jLTEfbjuQoA4WS1VaA= -github.com/aws/aws-sdk-go-v2/service/sts v1.7.0/go.mod h1:0qcSMCyASQPN2sk/1KQLQ2Fh6yq8wm0HSDAimPhzCoM= -github.com/aws/smithy-go v1.8.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E= -github.com/benbjohnson/clock v1.0.2/go.mod h1:bGMdMPoPVvcYyt1gHDf4J2KE153Yf9BuiUKYMaxlTDM= -github.com/benbjohnson/clock v1.0.3/go.mod h1:bGMdMPoPVvcYyt1gHDf4J2KE153Yf9BuiUKYMaxlTDM= +github.com/aws/aws-sdk-go-v2 v1.9.1 h1:ZbovGV/qo40nrOJ4q8G33AGICzaPI45FHQWJ9650pF4= +github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.5.1 h1:VGkV9KmhGqOQWnHyi4gLG98kE6OecT42fdrCGFWxJsc= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.3.0 h1:gceOysEWNNwLd6cki65IMBZ4WAM0MwgBQq2n7kejoT8= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.3.0 h1:VNJ5NLBteVXEwE2F1zEXVmyIH58mZ6kIQGJoC7C+vkg= +github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.7.0 h1:HWsM0YQWX76V6MOp07YuTYacm8k7h69ObJuw7Nck+og= +github.com/aws/aws-sdk-go-v2/service/s3 v1.15.0 h1:nPLfLPfglacc29Y949sDxpr3X/blaY40s3B85WT2yZU= +github.com/aws/smithy-go v1.8.0 h1:AEwwwXQZtUwP5Mz506FeXXrKBe0jA8gVM+1gEcSRooc= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= -github.com/benbjohnson/clock v1.3.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= +github.com/benbjohnson/clock v1.3.0 h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT8A= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= -github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= -github.com/blang/semver v3.1.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= -github.com/bradfitz/go-smtpd v0.0.0-20170404230938-deb6d6237625/go.mod h1:HYsPBTaaSFSlLx/70C2HPIMNZpVV8+vt/A+FMnYP11g= -github.com/bsipos/thist v1.0.0/go.mod h1:7i0xwRua1/bmUxcxi2xAxaFL895rLtOpKUwnw3NrT8I= +github.com/bits-and-blooms/bitset v1.5.0 h1:NpE8frKRLGHIcEzkR+gZhiioW1+WbYV6fKwD6ZIpQT8= +github.com/bits-and-blooms/bitset v1.5.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edYb8uY+O0FJTyyDA= github.com/btcsuite/btcd v0.0.0-20171128150713-2e60448ffcc6/go.mod h1:Dmm/EzmjnCiweXmzRIAiUWCInVmPgjkzgv5k4tVyXiQ= -github.com/btcsuite/btcd v0.0.0-20190213025234-306aecffea32/go.mod h1:DrZx5ec/dmnfpw9KyYoQyYo7d0KEvTkk/5M/vbZjAr8= -github.com/btcsuite/btcd v0.0.0-20190523000118-16327141da8c/go.mod h1:3J08xEfcugPacsc34/LKRU2yO7YmuT8yt28J8k2+rrI= -github.com/btcsuite/btcd v0.0.0-20190605094302-a0d1e3e36d50/go.mod h1:3J08xEfcugPacsc34/LKRU2yO7YmuT8yt28J8k2+rrI= -github.com/btcsuite/btcd v0.0.0-20190824003749-130ea5bddde3/go.mod h1:3J08xEfcugPacsc34/LKRU2yO7YmuT8yt28J8k2+rrI= -github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ= -github.com/btcsuite/btcd v0.21.0-beta/go.mod h1:ZSWyehm27aAuS9bvkATT+Xte3hjHZ+MRgMY/8NJ7K94= -github.com/btcsuite/btcd v0.22.0-beta h1:LTDpDKUM5EeOFBPM8IXpinEcmZ6FWfNZbE3lfrfdnWo= -github.com/btcsuite/btcd v0.22.0-beta/go.mod h1:9n5ntfhhHQBIhUvlhDvD3Qg6fRUj4jkN0VB8L8svzOA= -github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f/go.mod h1:TdznJufoqS23FtqVCzL0ZqgP5MqXbb4fg/WgDys70nA= -github.com/btcsuite/btcutil v0.0.0-20190207003914-4c204d697803/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= -github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= -github.com/btcsuite/btcutil v1.0.2/go.mod h1:j9HUFwoQRsZL3V4n+qG+CUnEGHOarIxfC3Le2Yhbcts= -github.com/btcsuite/btcutil v1.0.3-0.20201208143702-a53e38424cce/go.mod h1:0DVlHczLPewLcPGEIeUEzfOJhqGPQ0mJJRDBtD307+o= -github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd/go.mod h1:HHNXQzUsZCxOoE+CPiyCTO6x34Zs86zZUiwtpXoGdtg= -github.com/btcsuite/goleveldb v0.0.0-20160330041536-7834afc9e8cd/go.mod h1:F+uVaaLLH7j4eDXPRvw78tMflu7Ie2bzYOH4Y8rRKBY= -github.com/btcsuite/goleveldb v1.0.0/go.mod h1:QiK9vBlgftBg6rWQIj6wFzbPfRjiykIEhBH4obrXJ/I= -github.com/btcsuite/snappy-go v0.0.0-20151229074030-0bdef8d06723/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc= -github.com/btcsuite/snappy-go v1.0.0/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc= -github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtEyQwv5/p4Mg4C0fgbePVuGr935/5ddU9Z3TmDRY= -github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs= -github.com/buger/jsonparser v0.0.0-20181115193947-bf1c66bbce23/go.mod h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s= -github.com/bytecodealliance/wasmtime-go v0.22.0/go.mod h1:q320gUxqyI8yB+ZqRuaJOEnGkAnHh6WtJjMaT2CW4wI= +github.com/btcsuite/btcd/btcec/v2 v2.3.2 h1:5n0X6hX0Zk+6omWcihdYvdAlGf2DfasC0GMf7DClJ3U= +github.com/btcsuite/btcd/btcec/v2 v2.3.2/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= +github.com/bwesterb/go-ristretto v1.2.0/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= github.com/c-bata/go-prompt v0.2.3/go.mod h1:VzqtzE2ksDBcdln8G7mk2RX9QyGjH+OVqOCSiVIqS34= -github.com/c-bata/go-prompt v0.2.5/go.mod h1:vFnjEGDIIA/Lib7giyE4E9c50Lvl8j0S+7FVlAwDAVw= -github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= -github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= +github.com/cenkalti/backoff/v4 v4.2.0 h1:HN5dHm3WBOgndBH6E8V0q2jIYIR3s9yglV8k/+MN3u4= +github.com/cenkalti/backoff/v4 v4.2.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/cp v0.1.0/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW+s= github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.0.1-0.20190104013014-3767db7a7e18/go.mod h1:HD5P3vAIAh+Y2GAxg0PrPN1P8WkepXGpjbUPDHJqqKM= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE= -github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/cheekybits/genny v1.0.0/go.mod h1:+tQajlRqAUrPI7DOSpB0XAqZYtQakVtB7wXkRAgjxjQ= +github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= +github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= -github.com/cilium/ebpf v0.2.0/go.mod h1:To2CFviqOWL/M0gIMsvSMlqe7em/l1ALkX1PyjrX2Qs= -github.com/cilium/ebpf v0.4.0/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs= -github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= -github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= -github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cloudflare/circl v1.1.0/go.mod h1:prBCrKB9DV4poKZY1l9zBXg2QJY7mvgRvtMxxK7fi4I= +github.com/cloudflare/circl v1.3.1 h1:4OVCZRL62ijwEwxnF6I7hLwxvIYi3VaZt8TflkqtrtA= +github.com/cloudflare/circl v1.3.1/go.mod h1:+CauBF6R70Jqcyl8N2hC8pAXYbWkGIezuSbuGLtRhnw= github.com/cloudflare/cloudflare-go v0.10.2-0.20190916151808-a80f83b9add9/go.mod h1:1MxXX1Ux4x6mqPmjkUgTP1CdXIBXKX7T+Jk9Gxrmx+U= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= @@ -218,207 +126,117 @@ github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XP github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211130200136-a8f946100490/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= -github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= -github.com/codahale/hdrhistogram v0.9.0/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= -github.com/containerd/cgroups v0.0.0-20190919134610-bf292b21730f/go.mod h1:OApqhQ4XNSNC13gXIwDjhOQxjWa/NxkwZXJ1EvqT0ko= -github.com/containerd/cgroups v0.0.0-20201119153540-4cbc285b3327/go.mod h1:ZJeTFisyysqgcCdecO57Dj79RfL0LNeGiFUqLYQRYLE= -github.com/containerd/cgroups v1.0.3/go.mod h1:/ofk34relqNjSGyqPrmEULrO4Sc8LJhvJmWbUCUKqj8= -github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= -github.com/containerd/containerd v1.3.0-beta.2.0.20190828155532-0293cbd26c69/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/continuity v0.0.0-20190426062206-aaeac12a7ffc/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= -github.com/containerd/continuity v0.0.0-20200107194136-26c1120b8d41/go.mod h1:Dq467ZllaHgAtVp4p1xUQWBrFXR9s/wyoTpG8zOJGkY= -github.com/containerd/fifo v0.0.0-20190226154929-a9fb20d87448/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI= -github.com/containerd/fifo v0.0.0-20191213151349-ff969a566b00/go.mod h1:jPQ2IAeZRCYxpS/Cm1495vGFww6ecHmMk1YJH2Q5ln0= -github.com/containerd/go-runc v0.0.0-20180907222934-5a6d9f37cfa3/go.mod h1:IV7qH3hrUgRmyYrtgEeGWJfWbgcHL9CSRruz2Vqcph0= -github.com/containerd/ttrpc v0.0.0-20190828154514-0e0f228740de/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o= -github.com/containerd/typeurl v0.0.0-20180627222232-a93fcdb778cd/go.mod h1:Cm3kwCdlkCfMSHURc+r6fwoGH6/F1hH3S4sg0rLFWPc= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/go-systemd v0.0.0-20181012123002-c6f51f82210d/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/go-systemd/v22 v22.1.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= -github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= -github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/coreos/go-systemd/v22 v22.3.3-0.20220203105225-a9a7ef127534/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/cpuguy83/go-md2man/v2 v2.0.1/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= +github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/cskr/pubsub v1.0.2/go.mod h1:/8MzYXk/NJAz782G8RPkFzXTZVu63VotefPnR9TIRis= -github.com/dapperlabs/testingdock v0.4.4/go.mod h1:HeTbuHG1J4yt4n7NlZSyuk5c5fmyz6hECbyV+36Ku7Q= -github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-xdr v0.0.0-20161123171359-e6a2ba005892/go.mod h1:CTDl0pzVzE5DEzZhPfvhY/9sPFMQIxaJ9VAMs9AagrE= -github.com/davidlazar/go-crypto v0.0.0-20170701192655-dcfb0a7ac018/go.mod h1:rQYf4tfk5sSwFsnDg3qYaBxSjsD9S8+59vW0dKUgme4= -github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c/go.mod h1:6UhI8N9EjYm1c2odKpFpAYeR8dsBeM7PtzQhRgxRr9U= github.com/deckarep/golang-set v0.0.0-20180603214616-504e848d77ea/go.mod h1:93vsz/8Wt4joVM7c2AVqh+YRMiUSc14yDtF28KmMOgQ= -github.com/decred/dcrd/lru v1.0.0/go.mod h1:mxKOwFd7lFjN2GZYsiz/ecgqR6kkYAl+0pz0tEMk218= -github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f/go.mod h1:xH/i4TFMt8koVQZ6WFms69WAsDWr2XsYL3Hkl7jkoLE= -github.com/dgraph-io/badger v1.5.5-0.20190226225317-8115aed38f8f/go.mod h1:VZxzAIRPHRVNRKRo6AXrX9BJegn6il06VMTZVJYCIjQ= -github.com/dgraph-io/badger v1.6.0-rc1/go.mod h1:zwt7syl517jmP8s94KqSxTlM6IMsdhYy6psNgSztDR4= -github.com/dgraph-io/badger v1.6.0/go.mod h1:zwt7syl517jmP8s94KqSxTlM6IMsdhYy6psNgSztDR4= -github.com/dgraph-io/badger v1.6.1/go.mod h1:FRmFw3uxvcpa8zG3Rxs0th+hCLIuaQg8HlNV5bjgnuU= -github.com/dgraph-io/badger v1.6.2 h1:mNw0qs90GVgGGWylh0umH5iag1j6n/PeJtNvL6KY/x8= -github.com/dgraph-io/badger v1.6.2/go.mod h1:JW2yswe3V058sS0kZ2h/AXeDSqFjxnZcRrVH//y2UQE= -github.com/dgraph-io/badger/v2 v2.0.3/go.mod h1:3KY8+bsP8wI0OEnQJAKpd4wIJW/Mm32yw2j/9FUVnIM= -github.com/dgraph-io/badger/v2 v2.2007.3/go.mod h1:26P/7fbL4kUZVEVKLAKXkBXKOydDmM2p1e+NhhnBCAE= +github.com/decred/dcrd/crypto/blake256 v1.0.0 h1:/8DMNYp9SGi5f0w7uCm6d6M4OU2rGFK09Y2A4Xv7EE0= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0 h1:HbphB4TFFXpv7MNrT52FGrrgVXF1owhMVTHFZIlnvd4= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0/go.mod h1:DZGJHZMqrU4JJqFAWUS2UO1+lbSKsdiOoYi9Zzey7Fc= github.com/dgraph-io/badger/v2 v2.2007.4 h1:TRWBQg8UrlUhaFdco01nO2uXwzKS7zd+HVdwV/GHc4o= github.com/dgraph-io/badger/v2 v2.2007.4/go.mod h1:vSw/ax2qojzbN6eXHIx6KPKtCSHJN/Uz0X0VPruTIhk= -github.com/dgraph-io/ristretto v0.0.2-0.20200115201040-8f368f2f2ab3/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= -github.com/dgraph-io/ristretto v0.0.2/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= -github.com/dgraph-io/ristretto v0.0.3-0.20200630154024-f66de99634de h1:t0UHb5vdojIDUqktM6+xJAfScFBsVpXZmqC9dsgJmeA= github.com/dgraph-io/ristretto v0.0.3-0.20200630154024-f66de99634de/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= +github.com/dgraph-io/ristretto v0.1.1 h1:6CWw5tJNgpegArSHpNHJKldNeq03FQCwYvfMVWajOK8= +github.com/dgraph-io/ristretto v0.1.1/go.mod h1:S1GPSBCYCIhmVNfcth17y2zZtQT6wzkzgwUve0VDWWA= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/dgryski/go-farm v0.0.0-20190104051053-3adb47b1fb0f/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= -github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2 h1:tdlZCpZ/P9DhczCTSixgIKmwPv6+wP5DGjqLYw5SUiA= github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= +github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 h1:fAjc9m62+UWV/WAFKLNi6ZS0675eEUC9y3AlwSbQu1Y= +github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/dlclark/regexp2 v1.2.0/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc= -github.com/docker/cli v0.0.0-20191105005515-99c5edceb48d/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= -github.com/docker/distribution v2.6.0-rc.1.0.20171207180435-f4118485915a+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/docker v1.4.2-0.20180625184442-8e610b2b55bf/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker v1.4.2-0.20190513124817-8c8457b0f2f8/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker-credential-helpers v0.6.3/go.mod h1:WRaJzqw3CTB9bk10avuGsjVBZsD05qeibJ1/TYlvc0Y= -github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= -github.com/docker/go-metrics v0.0.1/go.mod h1:cG1hvH2utMXtqgqqYE9plW6lDxS3/5ayHzueweSI3Vw= -github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/dop251/goja v0.0.0-20200219165308-d1232e640a87/go.mod h1:Mw6PkjjMXWbTj+nnj4s3QPXq1jaT0s5pC0iFD4+BOAA= -github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= -github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= -github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= +github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= +github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= github.com/edsrzf/mmap-go v0.0.0-20160512033002-935e0e8a636c/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= -github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= github.com/ef-ds/deque v1.0.4 h1:iFAZNmveMT9WERAkqLJ+oaABF9AcVQ5AjXem/hroniI= github.com/ef-ds/deque v1.0.4/go.mod h1:gXDnTC3yqvBcHbq2lcExjtAcVrOnJCbMcZXmuj8Z4tg= github.com/elastic/gosigar v0.8.1-0.20180330100440-37f05ff46ffa/go.mod h1:cdorVVzy1fhmEqmtgqkoE3bYtCfSCkVyjTyCIo22xvs= -github.com/elastic/gosigar v0.12.0/go.mod h1:iXRIGg2tLnu7LBdpqzyQfGDEidKCfWcCMS0WKyPWoMs= -github.com/elastic/gosigar v0.14.2/go.mod h1:iXRIGg2tLnu7LBdpqzyQfGDEidKCfWcCMS0WKyPWoMs= -github.com/emirpasic/gods v1.12.0 h1:QAUIPSaCu4G+POclxeqb3F+WPpdKqFGlw36+yOzGlrg= -github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o= -github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= +github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= +github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= -github.com/envoyproxy/go-control-plane v0.10.1/go.mod h1:AY7fTTXNdv/aJ2O5jwpxAPOWUZ7hQAEvzN5Pf27BkQQ= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/envoyproxy/protoc-gen-validate v0.6.2/go.mod h1:2t7qjJNvHPx8IjnBOzl9E9/baC+qXE/TeeyBRzgJDws= github.com/ethereum/go-ethereum v1.9.9/go.mod h1:a9TqabFudpDu1nucId+k9S8R9whYaHnGBLKFouA5EAo= -github.com/ethereum/go-ethereum v1.9.13 h1:rOPqjSngvs1VSYH2H+PMPiWt4VEulvNRbFgqiGqJM3E= github.com/ethereum/go-ethereum v1.9.13/go.mod h1:qwN9d1GLyDh0N7Ab8bMGd0H9knaji2jOBm2RrMGjXls= +github.com/ethereum/go-ethereum v1.10.26 h1:i/7d9RBBwiXCEuyduBQzJw/mKmnvzsN14jqBmytw72s= +github.com/ethereum/go-ethereum v1.10.26/go.mod h1:EYFyF19u3ezGLD4RqOkLq+ZCXzYbLoNDdZlMt7kyKFg= github.com/fatih/color v1.3.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= -github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/fjl/memsize v0.0.0-20180418122429-ca190fb6ffbc/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0= -github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= -github.com/flynn/noise v0.0.0-20180327030543-2492fe189ae6/go.mod h1:1i71OnUq3iUe1ma7Lr6yG6/rjvM3emb6yoL7xLFzcVQ= -github.com/flynn/noise v1.0.0/go.mod h1:xbMo+0i6+IGbYdJhF31t2eR1BIU0CYc12+BNAKwUTag= -github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= -github.com/francoispqt/gojay v1.2.13/go.mod h1:ehT5mTG4ua4581f1++1WLG0vPdaA9HaiDsoyrBGkyDY= -github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= -github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= -github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= -github.com/frankban/quicktest v1.14.0/go.mod h1:NeW+ay9A/U67EYXNFA1nPE8e/tnQv/09mUdL/ijj8og= +github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= -github.com/fsnotify/fsnotify v1.5.1 h1:mZcQUHVQUQWoPXXtuf9yuEXKudkV2sx1E06UadKWpgI= -github.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5Ai1i3InKU= +github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= +github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= github.com/fxamacker/cbor/v2 v2.2.0/go.mod h1:TA1xS00nchWmaBnEIxPSE5oHLuJBAVvqrtAnWBwBCVo= -github.com/fxamacker/cbor/v2 v2.2.1-0.20201006223149-25f67fca9803/go.mod h1:TA1xS00nchWmaBnEIxPSE5oHLuJBAVvqrtAnWBwBCVo= -github.com/fxamacker/cbor/v2 v2.2.1-0.20210510192846-c3f3c69e7bc8/go.mod h1:TA1xS00nchWmaBnEIxPSE5oHLuJBAVvqrtAnWBwBCVo= -github.com/fxamacker/cbor/v2 v2.2.1-0.20210927235116-3d6d5d1de29b/go.mod h1:TA1xS00nchWmaBnEIxPSE5oHLuJBAVvqrtAnWBwBCVo= -github.com/fxamacker/cbor/v2 v2.4.1-0.20220314011055-12f5cb4b5eb0/go.mod h1:TA1xS00nchWmaBnEIxPSE5oHLuJBAVvqrtAnWBwBCVo= github.com/fxamacker/cbor/v2 v2.4.1-0.20220515183430-ad2eae63303f h1:dxTR4AaxCwuQv9LAVTAC2r1szlS+epeuPT5ClLKT6ZY= github.com/fxamacker/cbor/v2 v2.4.1-0.20220515183430-ad2eae63303f/go.mod h1:TA1xS00nchWmaBnEIxPSE5oHLuJBAVvqrtAnWBwBCVo= -github.com/fxamacker/circlehash v0.1.0/go.mod h1:3aq3OfVvsWtkWMb6A1owjOQFA+TLsD5FgJflnaQwtMM= github.com/fxamacker/circlehash v0.3.0 h1:XKdvTtIJV9t7DDUtsf0RIpC1OcxZtPbmgIH7ekx28WA= github.com/fxamacker/circlehash v0.3.0/go.mod h1:3aq3OfVvsWtkWMb6A1owjOQFA+TLsD5FgJflnaQwtMM= -github.com/gammazero/deque v0.1.0/go.mod h1:KQw7vFau1hHuM8xmI9RbgKFbAsQFWmBpqQ2KenFLk6M= -github.com/gammazero/workerpool v1.1.2/go.mod h1:UelbXcO0zCIGFcufcirHhq2/xtLXJdQ29qZNlXG9OjQ= github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff/go.mod h1:x7DCsMOv1taUwEWCzT4cmDeAkigA5/QCwUodaVOe8Ww= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= -github.com/gin-gonic/gin v1.5.0/go.mod h1:Nd6IXA8m5kNZdNEHMBd93KT+mdY3+bewLgRvmCsR2Do= -github.com/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= -github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= -github.com/go-check/check v0.0.0-20180628173108-788fd7840127/go.mod h1:9ES+weclKsC9YodN5RgxqK/VD9HM9JsCSh7rNhMZE98= -github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= +github.com/gliderlabs/ssh v0.3.5 h1:OcaySEmAQJgyYcArR+gGGTHCyE7nvhEMTlYY+Dp8CpY= +github.com/gliderlabs/ssh v0.3.5/go.mod h1:8XB4KraRrX39qHhT6yxPsHedjA08I/uBVwj4xC+/+z4= github.com/go-git/gcfg v1.5.0 h1:Q5ViNfGF8zFgyJWPqYwA7qGFoMTEiBmdlkcfRmpIMa4= github.com/go-git/gcfg v1.5.0/go.mod h1:5m20vg6GwYabIxaOonVkTdrILxQMpEShl1xiMF4ua+E= -github.com/go-git/go-billy/v5 v5.2.0/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0= -github.com/go-git/go-billy/v5 v5.3.1 h1:CPiOUAzKtMRvolEKw+bG1PLRpT7D3LIs3/3ey4Aiu34= github.com/go-git/go-billy/v5 v5.3.1/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0= -github.com/go-git/go-git-fixtures/v4 v4.2.1/go.mod h1:K8zd3kDUAykwTdDCr+I0per6Y6vMiRR/nnVTBtavnB0= -github.com/go-git/go-git/v5 v5.4.2 h1:BXyZu9t0VkbiHtqrsvdq39UDhGJTl1h55VW6CSC4aY4= -github.com/go-git/go-git/v5 v5.4.2/go.mod h1:gQ1kArt6d+n+BGd+/B/I74HwRTLhth2+zti4ihgckDc= +github.com/go-git/go-billy/v5 v5.4.0 h1:Vaw7LaSTRJOUric7pe4vnzBSgyuf2KrLsu2Y4ZpQBDE= +github.com/go-git/go-billy/v5 v5.4.0/go.mod h1:vjbugF6Fz7JIflbVpl1hJsGjSHNltrSw45YK/ukIvQg= +github.com/go-git/go-git-fixtures/v4 v4.3.1 h1:y5z6dd3qi8Hl+stezc8p3JxDkoTRqMAlKnXHuzrfjTQ= +github.com/go-git/go-git-fixtures/v4 v4.3.1/go.mod h1:8LHG1a3SRW71ettAD/jW13h8c6AqjVSeL11RAdgaqpo= +github.com/go-git/go-git/v5 v5.5.2 h1:v8lgZa5k9ylUw+OR/roJHTxR4QItsNFI5nKtAXFuynw= +github.com/go-git/go-git/v5 v5.5.2/go.mod h1:BE5hUJ5yaV2YMxhmaP4l6RBQ08kMxKSPD4BlxtH7OjI= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-kit/kit v0.10.0 h1:dXFJfIHVvUcpSgDOV+Ne6t7jXri8Tfv2uOLHUZ2XNuo= -github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= -github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= -github.com/go-kit/log v0.2.0/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= +github.com/go-kit/kit v0.12.0 h1:e4o3o3IsBfAKQh5Qbbiqyfu97Ku7jrO/JbohvztANh4= +github.com/go-kit/log v0.2.1 h1:MRVx0/zhvdseW+Gza6N9rVzU/IVzaeE1SFI4raAhmBU= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= -github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= github.com/go-logfmt/logfmt v0.5.1 h1:otpy5pqBCBZ1ng9RQ0dPu4PN7ba75Y/aA+UpowDyNVA= -github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= +github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0= +github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-ole/go-ole v1.2.1/go.mod h1:7FAglXiTm7HKlQRDeOQ6ZNUHidzCWXuZWq/1dTyBNF8= -github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= -github.com/go-playground/locales v0.12.1/go.mod h1:IUMDtCfWo/w/mtMfIE/IG2K+Ey3ygWanZIBtBW0W2TM= -github.com/go-playground/universal-translator v0.16.0/go.mod h1:1AnU7NaIRDWWzGEKwgtJRd2xk99HeFyHw3yid4rvQIY= github.com/go-sourcemap/sourcemap v2.1.2+incompatible/go.mod h1:F8jJfvm2KbVjc5NqelyYJmf/v5J0dwNLS2mL4sNA1Jg= -github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= -github.com/go-test/deep v1.0.5 h1:AKODKU3pDH1RzZzm6YZu77YWtEAq6uh1rLIAQlay2qc= github.com/go-test/deep v1.0.5/go.mod h1:QV8Hv/iy04NyLBxAdO9njL0iVPN1S4d/A3NVv1V36o8= -github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= -github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/go-test/deep v1.1.0 h1:WOcxcdHcvdgThNXjw0t76K42FXTU7HpNQWHpA2HHNlg= +github.com/go-test/deep v1.1.0/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= -github.com/gogo/protobuf v1.3.0/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= -github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/glog v1.0.0 h1:nfP3RFugxnNRyKgeWd4oI1nYvXpxrx8ck8ZrcizshdQ= github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= -github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20191027212112-611e8accdfc9/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:tluoj9z5200jBnyusfRPU2LqT6J+DAorxEvtC7LHB+E= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= @@ -426,10 +244,8 @@ github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= -github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= -github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= +github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.0/go.mod h1:Qd/q+1AKNOZr9uGQzbzCmRO6sUih6GTPZv6a1/R87v0= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2-0.20190517061210-b285ee9cfc6c/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -445,14 +261,12 @@ github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QD github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.2/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.3 h1:fHPg5GQYlCeLIPB9BZqMVR5nR9A+IM5zcgeTdjMYmLA= github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= +github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= @@ -463,21 +277,14 @@ github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.7 h1:81/ik6ipDQS2aGcBfIN5dHDB36BwrStyeAQquSYCV4o= -github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= -github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= -github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= -github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/gopacket v1.1.17/go.mod h1:UdDNZ1OO62aGYVnPhxT1U6aI7ukYtA/kB8vaU0diBUM= -github.com/google/gopacket v1.1.19/go.mod h1:iJ8V8n6KS+z2U1A8pUwu8bW5SyEMkXJB8Yo/Vo+TKTo= +github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= @@ -488,1052 +295,326 @@ github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hf github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/googleapis/gax-go v2.0.0+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= -github.com/googleapis/gax-go/v2 v2.0.3/go.mod h1:LLvjysVCY1JZeum8Z6l8qUty8fiNwE08qbEPm1M08qg= +github.com/googleapis/enterprise-certificate-proxy v0.2.1 h1:RY7tHKZcRlk788d5WSo/e83gOyyy742E8GSs771ySpg= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= -github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= -github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= +github.com/googleapis/gax-go/v2 v2.7.0 h1:IcsPKeInNvYi7eqSaDjiZqDDKu5rsmunY0Y1YupQSSQ= +github.com/googleapis/go-type-adapters v1.0.0 h1:9XdMn+d/G57qq1s8dNc5IesGCXHf6V2HZ2JwRxfA2tA= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= -github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gopherjs/gopherjs v0.0.0-20190430165422-3e4dfb77656c/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= -github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= -github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.1-0.20190629185528-ae1634f6a989/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/graph-gophers/graphql-go v0.0.0-20191115155744-f33e81362277/go.mod h1:9CQHMSxwO4MprSdzoIEobiHpoLtHm77vfxsvsIN5Vuc= -github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-middleware/providers/zerolog/v2 v2.0.0-rc.2/go.mod h1:BL7w7qd2l/j9jgY6WMhYutfOFQc0I8RTVwtjpnAMoTM= -github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.0.0-20200501113911-9a95f0fdbfea/go.mod h1:GugMBs30ZSAkckqXEAIEGyYdDH6EgqowG8ppA3Zt+AY= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway v1.5.0/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw= github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.6.0/go.mod h1:qrJPVzv9YlhsrxJc3P/Q85nr0w1lIRikTl4JlhdDH5w= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0/go.mod h1:hgWBS7lorOAVIJEQMi4ZsPv9hVvWI6+ch50m39Pf2Ks= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.15.0 h1:1JYBfzqrWPcCclBwxFCPAou9n+q86mfnu7NAeHfte7A= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.15.0/go.mod h1:YDZoGHuwE+ov0c8smSH49WLF3F2LaWnYYuDVd+EWrc0= github.com/gxed/hashland/keccakpg v0.0.1/go.mod h1:kRzw3HkwxFU1mpmPP8v1WyQzwdGfmKFJ6tItnhQ67kU= github.com/gxed/hashland/murmur3 v0.0.1/go.mod h1:KjXop02n4/ckmZSnY2+HKcLud/tcmvhST0bie/0lS48= -github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= -github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= -github.com/hashicorp/consul/api v1.11.0/go.mod h1:XjsvQN+RJGWI2TWy1/kqaE16HrR2J/FWgkYjdZQsX9M= -github.com/hashicorp/consul/api v1.12.0/go.mod h1:6pVBMo0ebnYdt2S3H87XhekM/HHrUoTD2XXb/VrZVy0= -github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= -github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= -github.com/hashicorp/consul/sdk v0.8.0/go.mod h1:GBvyrGALthsZObzUGsfgHZQDXjg4lOjagTIwIR1vPms= -github.com/hashicorp/errwrap v0.0.0-20141028054710-7554cd9344ce/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= -github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= -github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= -github.com/hashicorp/go-hclog v0.12.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= -github.com/hashicorp/go-hclog v1.0.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= -github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= -github.com/hashicorp/go-multierror v0.0.0-20161216184304-ed905158d874/go.mod h1:JMRHfdO9jKNzS/+BTlxCjKNQHg/jZAft8U7LloJvN7I= -github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= -github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= -github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= -github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= -github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= -github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= -github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= -github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.0.0-20160813221303-0a025b7e63ad/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc= github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d h1:dg1dEPuWpEqDnvIw251EVy4zlP8gWbsGj4BsUKCRpYs= +github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= -github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= -github.com/hashicorp/mdns v1.0.1/go.mod h1:4gW7WsVCke5TE7EPeYliwHlRUyBtfCwuFwuMg2DmyNY= -github.com/hashicorp/mdns v1.0.4/go.mod h1:mtBihi+LeNXGtG8L9dX59gAEa12BDtBQSp4v/YAJqrc= -github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= -github.com/hashicorp/memberlist v0.2.2/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= -github.com/hashicorp/memberlist v0.3.0/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= -github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= -github.com/hashicorp/serf v0.9.5/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKENpqIUyk= -github.com/hashicorp/serf v0.9.6/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= -github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= github.com/huin/goupnp v0.0.0-20161224104101-679507af18f3/go.mod h1:MZ2ZmwcBpvOoJ22IJsc7va19ZwoheaBk43rKg12SKag= -github.com/huin/goupnp v1.0.0/go.mod h1:n9v9KO1tAxYH82qOn+UTIFQDmx5n1Zxd/ClZDMX7Bnc= -github.com/huin/goupnp v1.0.2/go.mod h1:0dxJBVBHqTMjIUMkESDTNgOOx/Mw5wYIfyFmdzSamkM= -github.com/huin/goupnp v1.0.3/go.mod h1:ZxNlw5WqJj6wSsRK5+YfflQGXYfccj5VgQsMNixHM7Y= -github.com/huin/goutil v0.0.0-20170803182201-1ca381bf3150/go.mod h1:PpLOETDnJ0o3iZrZfqZzyLl6l7F3c6L1oWn7OICBi6o= -github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU= -github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= -github.com/improbable-eng/grpc-web v0.12.0/go.mod h1:6hRR09jOEG81ADP5wCQju1z71g6OL4eEvELdran/3cs= -github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= +github.com/imdario/mergo v0.3.13 h1:lFzP57bqS/wsqKssCGmtLAb8A0wKjLGrve2q3PPVcBk= +github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/inconshreveable/mousetrap v1.0.1/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= +github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/influxdata/influxdb v1.2.3-0.20180221223340-01288bdb0883/go.mod h1:qZna6X/4elxqT3yI9iZYdZrWWdeFOOprn86kgg4+IzY= -github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= -github.com/ipfs/bbloom v0.0.1/go.mod h1:oqo8CVWsJFMOZqTglBG4wydCE4IQA/G2/SEofB0rjUI= +github.com/ipfs/bbloom v0.0.4 h1:Gi+8EGJ2y5qiD5FbsbpX/TMNcJw8gSqr7eyjHa4Fhvs= github.com/ipfs/bbloom v0.0.4/go.mod h1:cS9YprKXpoZ9lT0n/Mw/a6/aFV6DTjTLYHeA+gyqMG0= -github.com/ipfs/go-bitswap v0.1.8/go.mod h1:TOWoxllhccevbWFUR2N7B1MTSVVge1s6XSMiCSA4MzM= -github.com/ipfs/go-bitswap v0.3.4/go.mod h1:4T7fvNv/LmOys+21tnLzGKncMeeXUYUd1nUiJ2teMvI= -github.com/ipfs/go-bitswap v0.5.0/go.mod h1:WwyyYD33RHCpczgHjpx+xjWYIy8l41K+l5EMy4/ctSM= -github.com/ipfs/go-block-format v0.0.1/go.mod h1:DK/YYcsSUIVAFNwo/KZCdIIbpN0ROH/baNLgayt4pFc= github.com/ipfs/go-block-format v0.0.2/go.mod h1:AWR46JfpcObNfg3ok2JHDUfdiHRgWhJgCQF+KIgOPJY= github.com/ipfs/go-block-format v0.0.3 h1:r8t66QstRp/pd/or4dpnbVfXT5Gt7lOqRvC+/dDTpMc= github.com/ipfs/go-block-format v0.0.3/go.mod h1:4LmD4ZUw0mhO+JSKdpWwrzATiEfM7WWgQ8H5l6P8MVk= -github.com/ipfs/go-blockservice v0.1.4/go.mod h1:OTZhFpkgY48kNzbgyvcexW9cHrpjBYIjSR0KoDOFOLU= -github.com/ipfs/go-blockservice v0.2.0/go.mod h1:Vzvj2fAnbbyly4+T7D5+p9n3+ZKVHA2bRMMo1QoILtQ= github.com/ipfs/go-cid v0.0.1/go.mod h1:GHWU/WuQdMPmIosc4Yn1bcCT7dSeX4lBafM7iqUPQvM= github.com/ipfs/go-cid v0.0.2/go.mod h1:GHWU/WuQdMPmIosc4Yn1bcCT7dSeX4lBafM7iqUPQvM= -github.com/ipfs/go-cid v0.0.3/go.mod h1:GHWU/WuQdMPmIosc4Yn1bcCT7dSeX4lBafM7iqUPQvM= -github.com/ipfs/go-cid v0.0.4/go.mod h1:4LLaPOQwmk5z9LBgQnpkivrx8BJjUyGwTXCd5Xfj6+M= github.com/ipfs/go-cid v0.0.5/go.mod h1:plgt+Y5MnOey4vO4UlUazGqdbEXuFYitED67FexhXog= -github.com/ipfs/go-cid v0.0.6/go.mod h1:6Ux9z5e+HpkQdckYoX1PG/6xqKspzlEIR5SDmgqgC/I= github.com/ipfs/go-cid v0.0.7/go.mod h1:6Ux9z5e+HpkQdckYoX1PG/6xqKspzlEIR5SDmgqgC/I= -github.com/ipfs/go-cid v0.1.0 h1:YN33LQulcRHjfom/i25yoOZR4Telp1Hr/2RU3d0PnC0= -github.com/ipfs/go-cid v0.1.0/go.mod h1:rH5/Xv83Rfy8Rw6xG+id3DYAMUVmem1MowoKwdXmN2o= -github.com/ipfs/go-cidutil v0.0.2/go.mod h1:ewllrvrxG6AMYStla3GD7Cqn+XYSLqjK0vc+086tB6s= -github.com/ipfs/go-datastore v0.0.1/go.mod h1:d4KVXhMt913cLBEI/PXAy6ko+W7e9AhyAKBGh803qeE= -github.com/ipfs/go-datastore v0.0.5/go.mod h1:d4KVXhMt913cLBEI/PXAy6ko+W7e9AhyAKBGh803qeE= -github.com/ipfs/go-datastore v0.1.0/go.mod h1:d4KVXhMt913cLBEI/PXAy6ko+W7e9AhyAKBGh803qeE= -github.com/ipfs/go-datastore v0.1.1/go.mod h1:w38XXW9kVFNp57Zj5knbKWM2T+KOZCGDRVNdgPHtbHw= -github.com/ipfs/go-datastore v0.4.0/go.mod h1:SX/xMIKoCszPqp+z9JhPYCmoOoXTvaa13XEbGtsFUhA= -github.com/ipfs/go-datastore v0.4.1/go.mod h1:SX/xMIKoCszPqp+z9JhPYCmoOoXTvaa13XEbGtsFUhA= -github.com/ipfs/go-datastore v0.4.4/go.mod h1:SX/xMIKoCszPqp+z9JhPYCmoOoXTvaa13XEbGtsFUhA= -github.com/ipfs/go-datastore v0.4.5/go.mod h1:eXTcaaiN6uOlVCLS9GjJUJtlvJfM3xk23w3fyfrmmJs= +github.com/ipfs/go-cid v0.3.2 h1:OGgOd+JCFM+y1DjWPmVH+2/4POtpDzwcr7VgnB7mZXc= +github.com/ipfs/go-cid v0.3.2/go.mod h1:gQ8pKqT/sUxGY+tIwy1RPpAojYu7jAyCp5Tz1svoupw= github.com/ipfs/go-datastore v0.5.0/go.mod h1:9zhEApYMTl17C8YDp7JmU7sQZi2/wqiYh73hakZ90Bk= -github.com/ipfs/go-datastore v0.5.1 h1:WkRhLuISI+XPD0uk3OskB0fYFSyqK8Ob5ZYew9Qa1nQ= -github.com/ipfs/go-datastore v0.5.1/go.mod h1:9zhEApYMTl17C8YDp7JmU7sQZi2/wqiYh73hakZ90Bk= +github.com/ipfs/go-datastore v0.6.0 h1:JKyz+Gvz1QEZw0LsX1IBn+JFCJQH4SJVFtM4uWU0Myk= +github.com/ipfs/go-datastore v0.6.0/go.mod h1:rt5M3nNbSO/8q1t4LNkLyUwRs8HupMeN/8O4Vn9YAT8= github.com/ipfs/go-detect-race v0.0.1 h1:qX/xay2W3E4Q1U7d9lNs1sU9nvguX0a7319XbyQ6cOk= github.com/ipfs/go-detect-race v0.0.1/go.mod h1:8BNT7shDZPo99Q74BpGMK+4D8Mn4j46UU0LZ723meps= -github.com/ipfs/go-ds-badger v0.0.2/go.mod h1:Y3QpeSFWQf6MopLTiZD+VT6IC1yZqaGmjvRcKeSGij8= -github.com/ipfs/go-ds-badger v0.0.5/go.mod h1:g5AuuCGmr7efyzQhLL8MzwqcauPojGPUaHzfGTzuE3s= -github.com/ipfs/go-ds-badger v0.0.7/go.mod h1:qt0/fWzZDoPW6jpQeqUjR5kBfhDNB65jd9YlmAvpQBk= -github.com/ipfs/go-ds-badger v0.2.1/go.mod h1:Tx7l3aTph3FMFrRS838dcSJh+jjA7cX9DrGVwx/NOwE= -github.com/ipfs/go-ds-badger v0.2.3/go.mod h1:pEYw0rgg3FIrywKKnL+Snr+w/LjJZVMTBRn4FS6UHUk= -github.com/ipfs/go-ds-badger v0.2.7/go.mod h1:02rnztVKA4aZwDuaRPTf8mpqcKmXP7mLl6JPxd14JHA= -github.com/ipfs/go-ds-badger v0.3.0/go.mod h1:1ke6mXNqeV8K3y5Ak2bAA0osoTfmxUdupVCGm4QUIek= -github.com/ipfs/go-ds-badger2 v0.1.3/go.mod h1:TPhhljfrgewjbtuL/tczP8dNrBYwwk+SdPYbms/NO9w= -github.com/ipfs/go-ds-leveldb v0.0.1/go.mod h1:feO8V3kubwsEF22n0YRQCffeb79OOYIykR4L04tMOYc= -github.com/ipfs/go-ds-leveldb v0.1.0/go.mod h1:hqAW8y4bwX5LWcCtku2rFNX3vjDZCy5LZCg+cSZvYb8= -github.com/ipfs/go-ds-leveldb v0.4.1/go.mod h1:jpbku/YqBSsBc1qgME8BkWS4AxzF2cEu1Ii2r79Hh9s= -github.com/ipfs/go-ds-leveldb v0.4.2/go.mod h1:jpbku/YqBSsBc1qgME8BkWS4AxzF2cEu1Ii2r79Hh9s= -github.com/ipfs/go-ds-leveldb v0.5.0/go.mod h1:d3XG9RUDzQ6V4SHi8+Xgj9j1XuEk1z82lquxrVbml/Q= -github.com/ipfs/go-fetcher v1.5.0/go.mod h1:5pDZ0393oRF/fHiLmtFZtpMNBQfHOYNPtryWedVuSWE= -github.com/ipfs/go-ipfs-blockstore v0.0.1/go.mod h1:d3WClOmRQKFnJ0Jz/jj/zmksX0ma1gROTlovZKBmN08= -github.com/ipfs/go-ipfs-blockstore v0.1.4/go.mod h1:Jxm3XMVjh6R17WvxFEiyKBLUGr86HgIYJW/D/MwqeYQ= -github.com/ipfs/go-ipfs-blockstore v0.2.0/go.mod h1:SNeEpz/ICnMYZQYr7KNZTjdn7tEPB/99xpe8xI1RW7o= -github.com/ipfs/go-ipfs-blocksutil v0.0.1/go.mod h1:Yq4M86uIOmxmGPUHv/uI7uKqZNtLb449gwKqXjIsnRk= +github.com/ipfs/go-ipfs-blockstore v1.2.0 h1:n3WTeJ4LdICWs/0VSfjHrlqpPpl6MZ+ySd3j8qz0ykw= +github.com/ipfs/go-ipfs-blockstore v1.2.0/go.mod h1:eh8eTFLiINYNSNawfZOC7HOxNTxpB1PFuA5E1m/7exE= github.com/ipfs/go-ipfs-delay v0.0.0-20181109222059-70721b86a9a8/go.mod h1:8SP1YXK1M1kXuc4KJZINY3TQQ03J2rwBG9QfXmbRPrw= -github.com/ipfs/go-ipfs-delay v0.0.1/go.mod h1:8SP1YXK1M1kXuc4KJZINY3TQQ03J2rwBG9QfXmbRPrw= -github.com/ipfs/go-ipfs-ds-help v0.0.1/go.mod h1:gtP9xRaZXqIQRh1HRpp595KbBEdgqWFxefeVKOV8sxo= -github.com/ipfs/go-ipfs-ds-help v0.1.1/go.mod h1:SbBafGJuGsPI/QL3j9Fc5YPLeAu+SzOkI0gFwAg+mOs= +github.com/ipfs/go-ipfs-ds-help v1.1.0 h1:yLE2w9RAsl31LtfMt91tRZcrx+e61O5mDxFRR994w4Q= github.com/ipfs/go-ipfs-ds-help v1.1.0/go.mod h1:YR5+6EaebOhfcqVCyqemItCLthrpVNot+rsOU/5IatU= -github.com/ipfs/go-ipfs-exchange-interface v0.0.1/go.mod h1:c8MwfHjtQjPoDyiy9cFquVtVHkO9b9Ob3FG91qJnWCM= -github.com/ipfs/go-ipfs-exchange-interface v0.1.0/go.mod h1:ych7WPlyHqFvCi/uQI48zLZuAWVP5iTQPXEfVaw5WEI= -github.com/ipfs/go-ipfs-exchange-offline v0.0.1/go.mod h1:WhHSFCVYX36H/anEKQboAzpUws3x7UeEGkzQc3iNkM0= -github.com/ipfs/go-ipfs-exchange-offline v0.1.0/go.mod h1:YdJXa+yPF1na+gfYHYejtLwHFpuKv22eatApNiSfanM= -github.com/ipfs/go-ipfs-pq v0.0.1/go.mod h1:LWIqQpqfRG3fNc5XsnIhz/wQ2XXGyugQwls7BgUmUfY= -github.com/ipfs/go-ipfs-pq v0.0.2/go.mod h1:LWIqQpqfRG3fNc5XsnIhz/wQ2XXGyugQwls7BgUmUfY= -github.com/ipfs/go-ipfs-provider v0.7.0/go.mod h1:mgjsWgDt9j19N1REPxRa31p+eRIQmjNt5McNdQQ5CsA= -github.com/ipfs/go-ipfs-routing v0.1.0/go.mod h1:hYoUkJLyAUKhF58tysKpids8RNDPO42BVMgK5dNsoqY= -github.com/ipfs/go-ipfs-routing v0.2.0/go.mod h1:384byD/LHKhAgKE3NmwOjXCpDzhczROMBzidoYV7tfM= github.com/ipfs/go-ipfs-util v0.0.1/go.mod h1:spsl5z8KUnrve+73pOhSVZND1SIxPW5RyBCNzQxlJBc= github.com/ipfs/go-ipfs-util v0.0.2 h1:59Sswnk1MFaiq+VcaknX7aYEyGyGDAA73ilhEK2POp8= github.com/ipfs/go-ipfs-util v0.0.2/go.mod h1:CbPtkWJzjLdEcezDns2XYaehFVNXG9zrdrtMecczcsQ= -github.com/ipfs/go-ipns v0.1.2/go.mod h1:ioQ0j02o6jdIVW+bmi18f4k2gRf0AV3kZ9KeHYHICnQ= +github.com/ipfs/go-ipld-format v0.3.0/go.mod h1:co/SdBE8h99968X0hViiw1MNlh6fvxxnHpvVLnH7jSM= +github.com/ipfs/go-ipld-format v0.4.0 h1:yqJSaJftjmjc9jEOFYlpkwOLVKv68OD27jFLlSghBlQ= +github.com/ipfs/go-ipld-format v0.4.0/go.mod h1:co/SdBE8h99968X0hViiw1MNlh6fvxxnHpvVLnH7jSM= github.com/ipfs/go-log v0.0.1/go.mod h1:kL1d2/hzSpI0thNYjiKfjanbVNU+IIGA/WnNESY9leM= -github.com/ipfs/go-log v1.0.2/go.mod h1:1MNjMxe0u6xvJZgeqbJ8vdo2TKaGwZ1a0Bpza+sr2Sk= -github.com/ipfs/go-log v1.0.3/go.mod h1:OsLySYkwIbiSUR/yBTdv1qPtcE4FW3WPWk/ewz9Ru+A= -github.com/ipfs/go-log v1.0.4/go.mod h1:oDCg2FkjogeFOhqqb+N39l2RpTNPL6F/StPkB3kPgcs= +github.com/ipfs/go-log v1.0.5 h1:2dOuUCB1Z7uoczMWgAyDck5JLb72zHzrMnGnCNNbvY8= github.com/ipfs/go-log v1.0.5/go.mod h1:j0b8ZoR+7+R99LD9jZ6+AJsrzkPbSXbZfGakb5JPtIo= -github.com/ipfs/go-log/v2 v2.0.2/go.mod h1:O7P1lJt27vWHhOwQmcFEvlmo49ry2VY2+JfBWFaa9+0= -github.com/ipfs/go-log/v2 v2.0.3/go.mod h1:O7P1lJt27vWHhOwQmcFEvlmo49ry2VY2+JfBWFaa9+0= -github.com/ipfs/go-log/v2 v2.0.5/go.mod h1:eZs4Xt4ZUJQFM3DlanGhy7TkwwawCZcSByscwkWG+dw= -github.com/ipfs/go-log/v2 v2.1.1/go.mod h1:2v2nsGfZsvvAJz13SyFzf9ObaqwHiHxsPLEHntrv9KM= github.com/ipfs/go-log/v2 v2.1.3/go.mod h1:/8d0SH3Su5Ooc31QlL1WysJhvyOTDCjcCZ9Axpmri6g= -github.com/ipfs/go-log/v2 v2.3.0/go.mod h1:QqGoj30OTpnKaG/LKTGTxoP2mmQtjVMEnK72gynbe/g= -github.com/ipfs/go-log/v2 v2.5.0/go.mod h1:prSpmC1Gpllc9UYWxDiZDreBYw7zp4Iqp1kOLU9U5UI= +github.com/ipfs/go-log/v2 v2.5.1 h1:1XdUzF7048prq4aBjDQQ4SL5RxftpRGdXhNRwKSAlcY= github.com/ipfs/go-log/v2 v2.5.1/go.mod h1:prSpmC1Gpllc9UYWxDiZDreBYw7zp4Iqp1kOLU9U5UI= +github.com/ipfs/go-metrics-interface v0.0.1 h1:j+cpbjYvu4R8zbleSs36gvB7jR+wsL2fGD6n0jO4kdg= github.com/ipfs/go-metrics-interface v0.0.1/go.mod h1:6s6euYU4zowdslK0GKHmqaIZ3j/b/tL7HTWtJ4VPgWY= -github.com/ipfs/go-peertaskqueue v0.1.1/go.mod h1:Jmk3IyCcfl1W3jTW3YpghSwSEC6IJ3Vzz/jUmWw8Z0U= -github.com/ipfs/go-peertaskqueue v0.2.0/go.mod h1:5/eNrBEbtSKWCG+kQK8K8fGNixoYUnr+P7jivavs9lY= -github.com/ipfs/go-peertaskqueue v0.7.0/go.mod h1:M/akTIE/z1jGNXMU7kFB4TeSEFvj68ow0Rrb04donIU= -github.com/ipfs/go-verifcid v0.0.1/go.mod h1:5Hrva5KBeIog4A+UpqlaIU+DEstipcJYQQZc0g37pY0= -github.com/ipld/go-ipld-prime v0.9.0/go.mod h1:KvBLMr4PX1gWptgkzRjVZCrLmSGcZCb/jioOQwCqZN8= -github.com/ipld/go-ipld-prime v0.11.0/go.mod h1:+WIAkokurHmZ/KwzDOMUuoeJgaRQktHtEaLglS3ZeV8= -github.com/ipld/go-ipld-prime v0.14.1/go.mod h1:QcE4Y9n/ZZr8Ijg5bGPT0GqYWgZ1704nH0RDcQtgTP0= -github.com/jackpal/gateway v1.0.5/go.mod h1:lTpwd4ACLXmpyiCTRtfiNyVnUmqT9RivzCDQetPfnjA= -github.com/jackpal/go-nat-pmp v1.0.1/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= github.com/jackpal/go-nat-pmp v1.0.2-0.20160603034137-1fa385a6f458/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= -github.com/jackpal/go-nat-pmp v1.0.2/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= -github.com/jbenet/go-cienv v0.0.0-20150120210510-1bb1476777ec/go.mod h1:rGaEvXB4uRSZMmzKNLoXvTu1sfx+1kv/DojUlPrSZGs= github.com/jbenet/go-cienv v0.1.0/go.mod h1:TqNnHUmJgXau0nCzC7kXWeotg3J9W34CUv5Djy1+FlA= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= -github.com/jbenet/go-temp-err-catcher v0.0.0-20150120210811-aac704a3f4f2/go.mod h1:8GXXJV31xl8whumTzdZsTt3RnUIiPqzkyf7mxToRCMs= -github.com/jbenet/go-temp-err-catcher v0.1.0/go.mod h1:0kJRvmDZXNMIiJirNPEYfhpPwbGVtZVWC34vc5WLsDk= -github.com/jbenet/goprocess v0.0.0-20160826012719-b497e2f366b8/go.mod h1:Ly/wlsjFq/qrU3Rar62tu1gASgGw6chQbSh/XgIIXCY= -github.com/jbenet/goprocess v0.1.3/go.mod h1:5yspPrukOVuOLORacaBi858NqyClJPQxYZlqdZVfqY4= github.com/jbenet/goprocess v0.1.4 h1:DRGOFReOMqqDNXwW70QkacFW0YN9QnwLV0Vqk+3oU0o= github.com/jbenet/goprocess v0.1.4/go.mod h1:5yspPrukOVuOLORacaBi858NqyClJPQxYZlqdZVfqY4= -github.com/jellevandenhooff/dkim v0.0.0-20150330215556-f50fe3d243e1/go.mod h1:E0B/fFc00Y+Rasa88328GlI/XbtyysCtTHZS8h7IrBU= -github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= -github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= -github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= -github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= +github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= -github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= -github.com/jrick/bitset v1.0.0/go.mod h1:ZOYB5Uvkla7wIEY4FEssPVi3IQXa02arznRaYaAEPe4= -github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ= -github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= -github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/julienschmidt/httprouter v1.1.1-0.20170430222011-975b5c4c7c21/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= -github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= -github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= -github.com/k0kubun/go-ansi v0.0.0-20180517002512-3bf9e2903213/go.mod h1:vNUNkEQ1e29fT/6vq2aBdFsgNPmy8qMdSay1npru+Sw= -github.com/kami-zh/go-capturer v0.0.0-20171211120116-e492ea43421d/go.mod h1:P2viExyCEfeWGU259JnaQ34Inuec4R38JCyBx2edgD0= github.com/karalabe/usb v0.0.0-20190919080040-51dc0efba356/go.mod h1:Od972xHfMJowv7NGVDiWVxk2zxnWgjLlJzE+F4F7AGU= github.com/kevinburke/go-bindata v3.21.0+incompatible/go.mod h1:/pEEZ72flUW2p0yi30bslSp9YqD9pysLxunQDdb2CPM= -github.com/kevinburke/go-bindata v3.22.0+incompatible h1:/JmqEhIWQ7GRScV0WjX/0tqBrC5D21ALg0H0U/KZ/ts= github.com/kevinburke/go-bindata v3.22.0+incompatible/go.mod h1:/pEEZ72flUW2p0yi30bslSp9YqD9pysLxunQDdb2CPM= -github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351 h1:DowS9hvgyYSX4TO5NpyC606/Z4SxnNYbT+WX27or6Ck= -github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= +github.com/kevinburke/go-bindata v3.24.0+incompatible h1:qajFA3D0pH94OTLU4zcCCKCDgR+Zr2cZK/RPJHDdFoY= +github.com/kevinburke/go-bindata v3.24.0+incompatible/go.mod h1:/pEEZ72flUW2p0yi30bslSp9YqD9pysLxunQDdb2CPM= +github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4= +github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= -github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4= -github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= -github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= -github.com/klauspost/compress v1.15.1 h1:y9FcTHGyrebwfP0ZZqFiaxTaiDnUrGkJkI+f583BL1A= -github.com/klauspost/compress v1.15.1/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= +github.com/klauspost/compress v1.15.15 h1:EF27CXIuDsYJ6mmvtBRlEuB2UVOqHG1tAXgZ7yIO+lw= +github.com/klauspost/compress v1.15.15/go.mod h1:ZcK2JAFqKOpnBlxcLsJzYfrS9X1akm9fHZNnD9+Vo/4= github.com/klauspost/cpuid/v2 v2.0.4/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= -github.com/klauspost/cpuid/v2 v2.0.6/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= -github.com/klauspost/cpuid/v2 v2.0.12 h1:p9dKCg8i4gmOxtv35DvrYoWqYzQrvEVdjQ762Y0OqZE= github.com/klauspost/cpuid/v2 v2.0.12/go.mod h1:g2LTdtYhdyuGPqyWyv7qRAmj1WBqxuObKfj5c0PQa7c= +github.com/klauspost/cpuid/v2 v2.2.3 h1:sxCkb+qR91z4vsqw4vGGZlDgPz3G7gjaLyK3V8y70BU= +github.com/klauspost/cpuid/v2 v2.2.3/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/koron/go-ssdp v0.0.0-20180514024734-4a0ed625a78b/go.mod h1:5Ky9EC2xfoUKUor0Hjgi2BJhCSXJfMOFlmyYrVKGQMk= -github.com/koron/go-ssdp v0.0.0-20191105050749-2e1c40ed0b5d/go.mod h1:5Ky9EC2xfoUKUor0Hjgi2BJhCSXJfMOFlmyYrVKGQMk= -github.com/koron/go-ssdp v0.0.2/go.mod h1:XoLfkAiA2KeZsYh4DbHxD7h3nR2AZNqVQOa+LJuqPYs= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= -github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/pty v1.1.3/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/leanovate/gopter v0.2.9 h1:fQjYxZaynp97ozCzfOyOuAGOU4aU/z37zf/tOujFk7c= -github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8= -github.com/leodido/go-urn v1.1.0/go.mod h1:+cyI34gQWZcE1eQU7NVgKkkzdXDQHr1dBMtdAPozLkw= -github.com/lib/pq v0.0.0-20170810061220-e42267488fe3/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/libp2p/go-addr-util v0.0.1/go.mod h1:4ac6O7n9rIAKB1dnd+s8IbbMXkt+oBpzX4/+RACcnlQ= -github.com/libp2p/go-addr-util v0.0.2/go.mod h1:Ecd6Fb3yIuLzq4bD7VcywcVSBtefcAwnUISBM3WG15E= -github.com/libp2p/go-addr-util v0.1.0/go.mod h1:6I3ZYuFr2O/9D+SoyM0zEw0EF3YkldtTX406BpdQMqw= -github.com/libp2p/go-buffer-pool v0.0.1/go.mod h1:xtyIz9PMobb13WaxR6Zo1Pd1zXJKYg0a8KiIvDp3TzQ= -github.com/libp2p/go-buffer-pool v0.0.2 h1:QNK2iAFa8gjAe1SPz6mHSMuCcjs+X1wlHzeOSqcmlfs= -github.com/libp2p/go-buffer-pool v0.0.2/go.mod h1:MvaB6xw5vOrDl8rYZGLFdKAuk/hRoRZd1Vi32+RXyFM= -github.com/libp2p/go-cidranger v1.1.0/go.mod h1:KWZTfSr+r9qEo9OkI9/SIEeAtw+NNoU0dXIXt15Okic= -github.com/libp2p/go-conn-security-multistream v0.1.0/go.mod h1:aw6eD7LOsHEX7+2hJkDxw1MteijaVcI+/eP2/x3J1xc= -github.com/libp2p/go-conn-security-multistream v0.2.0/go.mod h1:hZN4MjlNetKD3Rq5Jb/P5ohUnFLNzEAR4DLSzpn2QLU= -github.com/libp2p/go-conn-security-multistream v0.2.1/go.mod h1:cR1d8gA0Hr59Fj6NhaTpFhJZrjSYuNmhpT2r25zYR70= -github.com/libp2p/go-conn-security-multistream v0.3.0/go.mod h1:EEP47t4fw/bTelVmEzIDqSe69hO/ip52xBEhZMLWAHM= -github.com/libp2p/go-eventbus v0.1.0/go.mod h1:vROgu5cs5T7cv7POWlWxBaVLxfSegC5UGQf8A2eEmx4= -github.com/libp2p/go-eventbus v0.2.1/go.mod h1:jc2S4SoEVPP48H9Wpzm5aiGwUCBMfGhVhhBjyhhCJs8= -github.com/libp2p/go-flow-metrics v0.0.1/go.mod h1:Iv1GH0sG8DtYN3SVJ2eG221wMiNpZxBdp967ls1g+k8= -github.com/libp2p/go-flow-metrics v0.0.2/go.mod h1:HeoSNUrOJVK1jEpDqVEiUOIXqhbnS27omG0uWU5slZs= -github.com/libp2p/go-flow-metrics v0.0.3/go.mod h1:HeoSNUrOJVK1jEpDqVEiUOIXqhbnS27omG0uWU5slZs= -github.com/libp2p/go-libp2p v0.1.1/go.mod h1:I00BRo1UuUSdpuc8Q2mN7yDF/oTUTRAX6JWpTiK9Rp8= -github.com/libp2p/go-libp2p v0.6.1/go.mod h1:CTFnWXogryAHjXAKEbOf1OWY+VeAP3lDMZkfEI5sT54= -github.com/libp2p/go-libp2p v0.7.0/go.mod h1:hZJf8txWeCduQRDC/WSqBGMxaTHCOYHt2xSU1ivxn0k= -github.com/libp2p/go-libp2p v0.7.4/go.mod h1:oXsBlTLF1q7pxr+9w6lqzS1ILpyHsaBPniVO7zIHGMw= -github.com/libp2p/go-libp2p v0.8.1/go.mod h1:QRNH9pwdbEBpx5DTJYg+qxcVaDMAz3Ee/qDKwXujH5o= -github.com/libp2p/go-libp2p v0.13.0/go.mod h1:pM0beYdACRfHO1WcJlp65WXyG2A6NqYM+t2DTVAJxMo= -github.com/libp2p/go-libp2p v0.14.1/go.mod h1:0PQMADQEjCM2l8cSMYDpTgsb8gr6Zq7i4LUgq1mlW2E= -github.com/libp2p/go-libp2p v0.14.3/go.mod h1:d12V4PdKbpL0T1/gsUNN8DfgMuRPDX8bS2QxCZlwRH0= -github.com/libp2p/go-libp2p v0.14.4/go.mod h1:EIRU0Of4J5S8rkockZM7eJp2S0UrCyi55m2kJVru3rM= -github.com/libp2p/go-libp2p v0.16.0/go.mod h1:ump42BsirwAWxKzsCiFnTtN1Yc+DuPu76fyMX364/O4= -github.com/libp2p/go-libp2p v0.19.0/go.mod h1:Ki9jJXLO2YqrTIFxofV7Twyd3INWPT97+r8hGt7XPjI= -github.com/libp2p/go-libp2p-asn-util v0.0.0-20200825225859-85005c6cf052/go.mod h1:nRMRTab+kZuk0LnKZpxhOVH/ndsdr2Nr//Zltc/vwgo= -github.com/libp2p/go-libp2p-asn-util v0.1.0/go.mod h1:wu+AnM9Ii2KgO5jMmS1rz9dvzTdj8BXqsPR9HR0XB7I= -github.com/libp2p/go-libp2p-autonat v0.1.0/go.mod h1:1tLf2yXxiE/oKGtDwPYWTSYG3PtvYlJmg7NeVtPRqH8= -github.com/libp2p/go-libp2p-autonat v0.1.1/go.mod h1:OXqkeGOY2xJVWKAGV2inNF5aKN/djNA3fdpCWloIudE= -github.com/libp2p/go-libp2p-autonat v0.2.0/go.mod h1:DX+9teU4pEEoZUqR1PiMlqliONQdNbfzE1C718tcViI= -github.com/libp2p/go-libp2p-autonat v0.2.1/go.mod h1:MWtAhV5Ko1l6QBsHQNSuM6b1sRkXrpk0/LqCr+vCVxI= -github.com/libp2p/go-libp2p-autonat v0.2.2/go.mod h1:HsM62HkqZmHR2k1xgX34WuWDzk/nBwNHoeyyT4IWV6A= -github.com/libp2p/go-libp2p-autonat v0.4.0/go.mod h1:YxaJlpr81FhdOv3W3BTconZPfhaYivRdf53g+S2wobk= -github.com/libp2p/go-libp2p-autonat v0.4.2/go.mod h1:YxaJlpr81FhdOv3W3BTconZPfhaYivRdf53g+S2wobk= -github.com/libp2p/go-libp2p-autonat v0.6.0/go.mod h1:bFC6kY8jwzNNWoqc8iGE57vsfwyJ/lP4O4DOV1e0B2o= -github.com/libp2p/go-libp2p-blankhost v0.1.1/go.mod h1:pf2fvdLJPsC1FsVrNP3DUUvMzUts2dsLLBEpo1vW1ro= -github.com/libp2p/go-libp2p-blankhost v0.1.4/go.mod h1:oJF0saYsAXQCSfDq254GMNmLNz6ZTHTOvtF4ZydUvwU= -github.com/libp2p/go-libp2p-blankhost v0.2.0/go.mod h1:eduNKXGTioTuQAUcZ5epXi9vMl+t4d8ugUBRQ4SqaNQ= -github.com/libp2p/go-libp2p-blankhost v0.3.0/go.mod h1:urPC+7U01nCGgJ3ZsV8jdwTp6Ji9ID0dMTvq+aJ+nZU= -github.com/libp2p/go-libp2p-circuit v0.1.0/go.mod h1:Ahq4cY3V9VJcHcn1SBXjr78AbFkZeIRmfunbA7pmFh8= -github.com/libp2p/go-libp2p-circuit v0.1.4/go.mod h1:CY67BrEjKNDhdTk8UgBX1Y/H5c3xkAcs3gnksxY7osU= -github.com/libp2p/go-libp2p-circuit v0.2.1/go.mod h1:BXPwYDN5A8z4OEY9sOfr2DUQMLQvKt/6oku45YUmjIo= -github.com/libp2p/go-libp2p-circuit v0.4.0/go.mod h1:t/ktoFIUzM6uLQ+o1G6NuBl2ANhBKN9Bc8jRIk31MoA= -github.com/libp2p/go-libp2p-circuit v0.6.0/go.mod h1:kB8hY+zCpMeScyvFrKrGicRdid6vNXbunKE4rXATZ0M= -github.com/libp2p/go-libp2p-connmgr v0.2.4/go.mod h1:YV0b/RIm8NGPnnNWM7hG9Q38OeQiQfKhHCCs1++ufn0= -github.com/libp2p/go-libp2p-core v0.0.1/go.mod h1:g/VxnTZ/1ygHxH3dKok7Vno1VfpvGcGip57wjTU4fco= -github.com/libp2p/go-libp2p-core v0.0.2/go.mod h1:9dAcntw/n46XycV4RnlBq3BpgrmyUi9LuoTNdPrbUco= -github.com/libp2p/go-libp2p-core v0.0.3/go.mod h1:j+YQMNz9WNSkNezXOsahp9kwZBKBvxLpKD316QWSJXE= -github.com/libp2p/go-libp2p-core v0.0.4/go.mod h1:jyuCQP356gzfCFtRKyvAbNkyeuxb7OlyhWZ3nls5d2I= -github.com/libp2p/go-libp2p-core v0.2.0/go.mod h1:X0eyB0Gy93v0DZtSYbEM7RnMChm9Uv3j7yRXjO77xSI= -github.com/libp2p/go-libp2p-core v0.2.2/go.mod h1:8fcwTbsG2B+lTgRJ1ICZtiM5GWCWZVoVrLaDRvIRng0= -github.com/libp2p/go-libp2p-core v0.2.4/go.mod h1:STh4fdfa5vDYr0/SzYYeqnt+E6KfEV5VxfIrm0bcI0g= -github.com/libp2p/go-libp2p-core v0.2.5/go.mod h1:6+5zJmKhsf7yHn1RbmYDu08qDUpIUxGdqHuEZckmZOA= -github.com/libp2p/go-libp2p-core v0.3.0/go.mod h1:ACp3DmS3/N64c2jDzcV429ukDpicbL6+TrrxANBjPGw= -github.com/libp2p/go-libp2p-core v0.3.1/go.mod h1:thvWy0hvaSBhnVBaW37BvzgVV68OUhgJJLAa6almrII= -github.com/libp2p/go-libp2p-core v0.4.0/go.mod h1:49XGI+kc38oGVwqSBhDEwytaAxgZasHhFfQKibzTls0= -github.com/libp2p/go-libp2p-core v0.5.0/go.mod h1:49XGI+kc38oGVwqSBhDEwytaAxgZasHhFfQKibzTls0= -github.com/libp2p/go-libp2p-core v0.5.1/go.mod h1:uN7L2D4EvPCvzSH5SrhR72UWbnSGpt5/a35Sm4upn4Y= -github.com/libp2p/go-libp2p-core v0.5.3/go.mod h1:uN7L2D4EvPCvzSH5SrhR72UWbnSGpt5/a35Sm4upn4Y= -github.com/libp2p/go-libp2p-core v0.5.4/go.mod h1:uN7L2D4EvPCvzSH5SrhR72UWbnSGpt5/a35Sm4upn4Y= -github.com/libp2p/go-libp2p-core v0.5.5/go.mod h1:vj3awlOr9+GMZJFH9s4mpt9RHHgGqeHCopzbYKZdRjM= -github.com/libp2p/go-libp2p-core v0.5.6/go.mod h1:txwbVEhHEXikXn9gfC7/UDDw7rkxuX0bJvM49Ykaswo= -github.com/libp2p/go-libp2p-core v0.5.7/go.mod h1:txwbVEhHEXikXn9gfC7/UDDw7rkxuX0bJvM49Ykaswo= -github.com/libp2p/go-libp2p-core v0.6.0/go.mod h1:txwbVEhHEXikXn9gfC7/UDDw7rkxuX0bJvM49Ykaswo= -github.com/libp2p/go-libp2p-core v0.6.1/go.mod h1:FfewUH/YpvWbEB+ZY9AQRQ4TAD8sJBt/G1rVvhz5XT8= -github.com/libp2p/go-libp2p-core v0.7.0/go.mod h1:FfewUH/YpvWbEB+ZY9AQRQ4TAD8sJBt/G1rVvhz5XT8= -github.com/libp2p/go-libp2p-core v0.8.0/go.mod h1:FfewUH/YpvWbEB+ZY9AQRQ4TAD8sJBt/G1rVvhz5XT8= -github.com/libp2p/go-libp2p-core v0.8.1/go.mod h1:FfewUH/YpvWbEB+ZY9AQRQ4TAD8sJBt/G1rVvhz5XT8= -github.com/libp2p/go-libp2p-core v0.8.2/go.mod h1:FfewUH/YpvWbEB+ZY9AQRQ4TAD8sJBt/G1rVvhz5XT8= -github.com/libp2p/go-libp2p-core v0.8.5/go.mod h1:FfewUH/YpvWbEB+ZY9AQRQ4TAD8sJBt/G1rVvhz5XT8= -github.com/libp2p/go-libp2p-core v0.8.6/go.mod h1:dgHr0l0hIKfWpGpqAMbpo19pen9wJfdCGv51mTmdpmM= -github.com/libp2p/go-libp2p-core v0.9.0/go.mod h1:ESsbz31oC3C1AvMJoGx26RTuCkNhmkSRCqZ0kQtJ2/8= -github.com/libp2p/go-libp2p-core v0.10.0/go.mod h1:ECdxehoYosLYHgDDFa2N4yE8Y7aQRAMf0sX9mf2sbGg= -github.com/libp2p/go-libp2p-core v0.11.0/go.mod h1:ECdxehoYosLYHgDDFa2N4yE8Y7aQRAMf0sX9mf2sbGg= -github.com/libp2p/go-libp2p-core v0.12.0/go.mod h1:ECdxehoYosLYHgDDFa2N4yE8Y7aQRAMf0sX9mf2sbGg= -github.com/libp2p/go-libp2p-core v0.14.0/go.mod h1:tLasfcVdTXnixsLB0QYaT1syJOhsbrhG7q6pGrHtBg8= -github.com/libp2p/go-libp2p-core v0.15.1 h1:0RY+Mi/ARK9DgG1g9xVQLb8dDaaU8tCePMtGALEfBnM= -github.com/libp2p/go-libp2p-core v0.15.1/go.mod h1:agSaboYM4hzB1cWekgVReqV5M4g5M+2eNNejV+1EEhs= -github.com/libp2p/go-libp2p-crypto v0.1.0/go.mod h1:sPUokVISZiy+nNuTTH/TY+leRSxnFj/2GLjtOTW90hI= -github.com/libp2p/go-libp2p-discovery v0.1.0/go.mod h1:4F/x+aldVHjHDHuX85x1zWoFTGElt8HnoDzwkFZm29g= -github.com/libp2p/go-libp2p-discovery v0.2.0/go.mod h1:s4VGaxYMbw4+4+tsoQTqh7wfxg97AEdo4GYBt6BadWg= -github.com/libp2p/go-libp2p-discovery v0.3.0/go.mod h1:o03drFnz9BVAZdzC/QUQ+NeQOu38Fu7LJGEOK2gQltw= -github.com/libp2p/go-libp2p-discovery v0.5.0/go.mod h1:+srtPIU9gDaBNu//UHvcdliKBIcr4SfDcm0/PfPJLug= -github.com/libp2p/go-libp2p-discovery v0.6.0/go.mod h1:/u1voHt0tKIe5oIA1RHBKQLVCWPna2dXmPNHc2zR9S8= -github.com/libp2p/go-libp2p-kad-dht v0.15.0/go.mod h1:rZtPxYu1TnHHz6n1RggdGrxUX/tA1C2/Wiw3ZMUDrU0= -github.com/libp2p/go-libp2p-kbucket v0.3.1/go.mod h1:oyjT5O7tS9CQurok++ERgc46YLwEpuGoFq9ubvoUOio= -github.com/libp2p/go-libp2p-kbucket v0.4.7/go.mod h1:XyVo99AfQH0foSf176k4jY1xUJ2+jUJIZCSDm7r2YKk= -github.com/libp2p/go-libp2p-loggables v0.1.0/go.mod h1:EyumB2Y6PrYjr55Q3/tiJ/o3xoDasoRYM7nOzEpoa90= -github.com/libp2p/go-libp2p-mplex v0.2.0/go.mod h1:Ejl9IyjvXJ0T9iqUTE1jpYATQ9NM3g+OtR+EMMODbKo= -github.com/libp2p/go-libp2p-mplex v0.2.1/go.mod h1:SC99Rxs8Vuzrf/6WhmH41kNn13TiYdAWNYHrwImKLnE= -github.com/libp2p/go-libp2p-mplex v0.2.2/go.mod h1:74S9eum0tVQdAfFiKxAyKzNdSuLqw5oadDq7+L/FELo= -github.com/libp2p/go-libp2p-mplex v0.2.3/go.mod h1:CK3p2+9qH9x+7ER/gWWDYJ3QW5ZxWDkm+dVvjfuG3ek= -github.com/libp2p/go-libp2p-mplex v0.4.0/go.mod h1:yCyWJE2sc6TBTnFpjvLuEJgTSw/u+MamvzILKdX7asw= -github.com/libp2p/go-libp2p-mplex v0.4.1/go.mod h1:cmy+3GfqfM1PceHTLL7zQzAAYaryDu6iPSC+CIb094g= -github.com/libp2p/go-libp2p-mplex v0.5.0/go.mod h1:eLImPJLkj3iG5t5lq68w3Vm5NAQ5BcKwrrb2VmOYb3M= -github.com/libp2p/go-libp2p-nat v0.0.4/go.mod h1:N9Js/zVtAXqaeT99cXgTV9e75KpnWCvVOiGzlcHmBbY= -github.com/libp2p/go-libp2p-nat v0.0.5/go.mod h1:1qubaE5bTZMJE+E/uu2URroMbzdubFz1ChgiN79yKPE= -github.com/libp2p/go-libp2p-nat v0.0.6/go.mod h1:iV59LVhB3IkFvS6S6sauVTSOrNEANnINbI/fkaLimiw= -github.com/libp2p/go-libp2p-nat v0.1.0/go.mod h1:DQzAG+QbDYjN1/C3B6vXucLtz3u9rEonLVPtZVzQqks= -github.com/libp2p/go-libp2p-netutil v0.1.0/go.mod h1:3Qv/aDqtMLTUyQeundkKsA+YCThNdbQD54k3TqjpbFU= -github.com/libp2p/go-libp2p-noise v0.1.1/go.mod h1:QDFLdKX7nluB7DEnlVPbz7xlLHdwHFA9HiohJRr3vwM= -github.com/libp2p/go-libp2p-noise v0.2.0/go.mod h1:IEbYhBBzGyvdLBoxxULL/SGbJARhUeqlO8lVSREYu2Q= -github.com/libp2p/go-libp2p-noise v0.3.0/go.mod h1:JNjHbociDJKHD64KTkzGnzqJ0FEV5gHJa6AB00kbCNQ= -github.com/libp2p/go-libp2p-noise v0.4.0/go.mod h1:BzzY5pyzCYSyJbQy9oD8z5oP2idsafjt4/X42h9DjZU= -github.com/libp2p/go-libp2p-peer v0.2.0/go.mod h1:RCffaCvUyW2CJmG2gAWVqwePwW7JMgxjsHm7+J5kjWY= -github.com/libp2p/go-libp2p-peerstore v0.1.0/go.mod h1:2CeHkQsr8svp4fZ+Oi9ykN1HBb6u0MOvdJ7YIsmcwtY= -github.com/libp2p/go-libp2p-peerstore v0.1.3/go.mod h1:BJ9sHlm59/80oSkpWgr1MyY1ciXAXV397W6h1GH/uKI= -github.com/libp2p/go-libp2p-peerstore v0.1.4/go.mod h1:+4BDbDiiKf4PzpANZDAT+knVdLxvqh7hXOujessqdzs= -github.com/libp2p/go-libp2p-peerstore v0.2.0/go.mod h1:N2l3eVIeAitSg3Pi2ipSrJYnqhVnMNQZo9nkSCuAbnQ= -github.com/libp2p/go-libp2p-peerstore v0.2.1/go.mod h1:NQxhNjWxf1d4w6PihR8btWIRjwRLBr4TYKfNgrUkOPA= -github.com/libp2p/go-libp2p-peerstore v0.2.2/go.mod h1:NQxhNjWxf1d4w6PihR8btWIRjwRLBr4TYKfNgrUkOPA= -github.com/libp2p/go-libp2p-peerstore v0.2.6/go.mod h1:ss/TWTgHZTMpsU/oKVVPQCGuDHItOpf2W8RxAi50P2s= -github.com/libp2p/go-libp2p-peerstore v0.2.7/go.mod h1:ss/TWTgHZTMpsU/oKVVPQCGuDHItOpf2W8RxAi50P2s= -github.com/libp2p/go-libp2p-peerstore v0.2.8/go.mod h1:gGiPlXdz7mIHd2vfAsHzBNAMqSDkt2UBFwgcITgw1lA= -github.com/libp2p/go-libp2p-peerstore v0.4.0/go.mod h1:rDJUFyzEWPpXpEwywkcTYYzDHlwza8riYMaUzaN6hX0= -github.com/libp2p/go-libp2p-peerstore v0.6.0/go.mod h1:DGEmKdXrcYpK9Jha3sS7MhqYdInxJy84bIPtSu65bKc= -github.com/libp2p/go-libp2p-pnet v0.2.0/go.mod h1:Qqvq6JH/oMZGwqs3N1Fqhv8NVhrdYcO0BW4wssv21LA= -github.com/libp2p/go-libp2p-pubsub v0.4.1/go.mod h1:izkeMLvz6Ht8yAISXjx60XUQZMq9ZMe5h2ih4dLIBIQ= -github.com/libp2p/go-libp2p-pubsub v0.6.0/go.mod h1:nJv87QM2cU0w45KPR1rZicq+FmFIOD16zmT+ep1nOmg= -github.com/libp2p/go-libp2p-pubsub v0.6.2-0.20220530164708-06b5ba47636c/go.mod h1:EuyBJFtF8qF67IEA98biwK8Xnw5MNJpJ/Z+8iWCMFwc= -github.com/libp2p/go-libp2p-quic-transport v0.10.0/go.mod h1:RfJbZ8IqXIhxBRm5hqUEJqjiiY8xmEuq3HUDS993MkA= -github.com/libp2p/go-libp2p-quic-transport v0.11.2/go.mod h1:wlanzKtIh6pHrq+0U3p3DY9PJfGqxMgPaGKaK5LifwQ= -github.com/libp2p/go-libp2p-quic-transport v0.13.0/go.mod h1:39/ZWJ1TW/jx1iFkKzzUg00W6tDJh73FC0xYudjr7Hc= -github.com/libp2p/go-libp2p-quic-transport v0.15.0/go.mod h1:wv4uGwjcqe8Mhjj7N/Ic0aKjA+/10UnMlSzLO0yRpYQ= -github.com/libp2p/go-libp2p-quic-transport v0.16.0/go.mod h1:1BXjVMzr+w7EkPfiHkKnwsWjPjtfaNT0q8RS3tGDvEQ= -github.com/libp2p/go-libp2p-quic-transport v0.17.0/go.mod h1:x4pw61P3/GRCcSLypcQJE/Q2+E9f4X+5aRcZLXf20LM= -github.com/libp2p/go-libp2p-record v0.1.0/go.mod h1:ujNc8iuE5dlKWVy6wuL6dd58t0n7xI4hAIl8pE6wu5Q= -github.com/libp2p/go-libp2p-record v0.1.2/go.mod h1:pal0eNcT5nqZaTV7UGhqeGqxFgGdsU/9W//C8dqjQDk= -github.com/libp2p/go-libp2p-record v0.1.3/go.mod h1:yNUff/adKIfPnYQXgp6FQmNu3gLJ6EMg7+/vv2+9pY4= -github.com/libp2p/go-libp2p-resource-manager v0.2.1/go.mod h1:K+eCkiapf+ey/LADO4TaMpMTP9/Qde/uLlrnRqV4PLQ= -github.com/libp2p/go-libp2p-routing-helpers v0.2.3/go.mod h1:795bh+9YeoFl99rMASoiVgHdi5bjack0N1+AFAdbvBw= -github.com/libp2p/go-libp2p-secio v0.1.0/go.mod h1:tMJo2w7h3+wN4pgU2LSYeiKPrfqBgkOsdiKK77hE7c8= -github.com/libp2p/go-libp2p-secio v0.2.0/go.mod h1:2JdZepB8J5V9mBp79BmwsaPQhRPNN2NrnB2lKQcdy6g= -github.com/libp2p/go-libp2p-secio v0.2.1/go.mod h1:cWtZpILJqkqrSkiYcDBh5lA3wbT2Q+hz3rJQq3iftD8= -github.com/libp2p/go-libp2p-secio v0.2.2/go.mod h1:wP3bS+m5AUnFA+OFO7Er03uO1mncHG0uVwGrwvjYlNY= -github.com/libp2p/go-libp2p-swarm v0.1.0/go.mod h1:wQVsCdjsuZoc730CgOvh5ox6K8evllckjebkdiY5ta4= -github.com/libp2p/go-libp2p-swarm v0.2.2/go.mod h1:fvmtQ0T1nErXym1/aa1uJEyN7JzaTNyBcHImCxRpPKU= -github.com/libp2p/go-libp2p-swarm v0.2.3/go.mod h1:P2VO/EpxRyDxtChXz/VPVXyTnszHvokHKRhfkEgFKNM= -github.com/libp2p/go-libp2p-swarm v0.2.8/go.mod h1:JQKMGSth4SMqonruY0a8yjlPVIkb0mdNSwckW7OYziM= -github.com/libp2p/go-libp2p-swarm v0.3.0/go.mod h1:hdv95GWCTmzkgeJpP+GK/9D9puJegb7H57B5hWQR5Kk= -github.com/libp2p/go-libp2p-swarm v0.3.1/go.mod h1:hdv95GWCTmzkgeJpP+GK/9D9puJegb7H57B5hWQR5Kk= -github.com/libp2p/go-libp2p-swarm v0.4.0/go.mod h1:XVFcO52VoLoo0eitSxNQWYq4D6sydGOweTOAjJNraCw= -github.com/libp2p/go-libp2p-swarm v0.5.0/go.mod h1:sU9i6BoHE0Ve5SKz3y9WfKrh8dUat6JknzUehFx8xW4= -github.com/libp2p/go-libp2p-swarm v0.5.3/go.mod h1:NBn7eNW2lu568L7Ns9wdFrOhgRlkRnIDg0FLKbuu3i8= -github.com/libp2p/go-libp2p-swarm v0.8.0/go.mod h1:sOMp6dPuqco0r0GHTzfVheVBh6UEL0L1lXUZ5ot2Fvc= -github.com/libp2p/go-libp2p-swarm v0.10.0/go.mod h1:71ceMcV6Rg/0rIQ97rsZWMzto1l9LnNquef+efcRbmA= -github.com/libp2p/go-libp2p-swarm v0.10.2/go.mod h1:Pdkq0QU5a+qu+oyqIV3bknMsnzk9lnNyKvB9acJ5aZs= -github.com/libp2p/go-libp2p-testing v0.0.2/go.mod h1:gvchhf3FQOtBdr+eFUABet5a4MBLK8jM3V4Zghvmi+E= -github.com/libp2p/go-libp2p-testing v0.0.3/go.mod h1:gvchhf3FQOtBdr+eFUABet5a4MBLK8jM3V4Zghvmi+E= -github.com/libp2p/go-libp2p-testing v0.0.4/go.mod h1:gvchhf3FQOtBdr+eFUABet5a4MBLK8jM3V4Zghvmi+E= -github.com/libp2p/go-libp2p-testing v0.1.0/go.mod h1:xaZWMJrPUM5GlDBxCeGUi7kI4eqnjVyavGroI2nxEM0= -github.com/libp2p/go-libp2p-testing v0.1.1/go.mod h1:xaZWMJrPUM5GlDBxCeGUi7kI4eqnjVyavGroI2nxEM0= -github.com/libp2p/go-libp2p-testing v0.1.2-0.20200422005655-8775583591d8/go.mod h1:Qy8sAncLKpwXtS2dSnDOP8ktexIAHKu+J+pnZOFZLTc= -github.com/libp2p/go-libp2p-testing v0.3.0/go.mod h1:efZkql4UZ7OVsEfaxNHZPzIehtsBXMrXnCfJIgDti5g= -github.com/libp2p/go-libp2p-testing v0.4.0/go.mod h1:Q+PFXYoiYFN5CAEG2w3gLPEzotlKsNSbKQ/lImlOWF0= -github.com/libp2p/go-libp2p-testing v0.4.2/go.mod h1:Q+PFXYoiYFN5CAEG2w3gLPEzotlKsNSbKQ/lImlOWF0= -github.com/libp2p/go-libp2p-testing v0.5.0/go.mod h1:QBk8fqIL1XNcno/l3/hhaIEn4aLRijpYOR+zVjjlh+A= -github.com/libp2p/go-libp2p-testing v0.7.0/go.mod h1:OLbdn9DbgdMwv00v+tlp1l3oe2Cl+FAjoWIA2pa0X6E= -github.com/libp2p/go-libp2p-testing v0.9.0/go.mod h1:Td7kbdkWqYTJYQGTwzlgXwaqldraIanyjuRiAbK/XQU= -github.com/libp2p/go-libp2p-testing v0.9.2/go.mod h1:Td7kbdkWqYTJYQGTwzlgXwaqldraIanyjuRiAbK/XQU= -github.com/libp2p/go-libp2p-tls v0.1.3/go.mod h1:wZfuewxOndz5RTnCAxFliGjvYSDA40sKitV4c50uI1M= -github.com/libp2p/go-libp2p-tls v0.3.0/go.mod h1:fwF5X6PWGxm6IDRwF3V8AVCCj/hOd5oFlg+wo2FxJDY= -github.com/libp2p/go-libp2p-tls v0.3.1/go.mod h1:fwF5X6PWGxm6IDRwF3V8AVCCj/hOd5oFlg+wo2FxJDY= -github.com/libp2p/go-libp2p-tls v0.4.1/go.mod h1:EKCixHEysLNDlLUoKxv+3f/Lp90O2EXNjTr0UQDnrIw= -github.com/libp2p/go-libp2p-transport-upgrader v0.1.1/go.mod h1:IEtA6or8JUbsV07qPW4r01GnTenLW4oi3lOPbUMGJJA= -github.com/libp2p/go-libp2p-transport-upgrader v0.2.0/go.mod h1:mQcrHj4asu6ArfSoMuyojOdjx73Q47cYD7s5+gZOlns= -github.com/libp2p/go-libp2p-transport-upgrader v0.3.0/go.mod h1:i+SKzbRnvXdVbU3D1dwydnTmKRPXiAR/fyvi1dXuL4o= -github.com/libp2p/go-libp2p-transport-upgrader v0.4.0/go.mod h1:J4ko0ObtZSmgn5BX5AmegP+dK3CSnU2lMCKsSq/EY0s= -github.com/libp2p/go-libp2p-transport-upgrader v0.4.2/go.mod h1:NR8ne1VwfreD5VIWIU62Agt/J18ekORFU/j1i2y8zvk= -github.com/libp2p/go-libp2p-transport-upgrader v0.4.3/go.mod h1:bpkldbOWXMrXhpZbSV1mQxTrefOg2Fi+k1ClDSA4ppw= -github.com/libp2p/go-libp2p-transport-upgrader v0.4.6/go.mod h1:JE0WQuQdy+uLZ5zOaI3Nw9dWGYJIA7mywEtP2lMvnyk= -github.com/libp2p/go-libp2p-transport-upgrader v0.5.0/go.mod h1:Rc+XODlB3yce7dvFV4q/RmyJGsFcCZRkeZMu/Zdg0mo= -github.com/libp2p/go-libp2p-transport-upgrader v0.7.0/go.mod h1:GIR2aTRp1J5yjVlkUoFqMkdobfob6RnAwYg/RZPhrzg= -github.com/libp2p/go-libp2p-transport-upgrader v0.7.1/go.mod h1:GIR2aTRp1J5yjVlkUoFqMkdobfob6RnAwYg/RZPhrzg= -github.com/libp2p/go-libp2p-xor v0.0.0-20210714161855-5c005aca55db/go.mod h1:LSTM5yRnjGZbWNTA/hRwq2gGFrvRIbQJscoIL/u6InY= -github.com/libp2p/go-libp2p-yamux v0.2.0/go.mod h1:Db2gU+XfLpm6E4rG5uGCFX6uXA8MEXOxFcRoXUODaK8= -github.com/libp2p/go-libp2p-yamux v0.2.1/go.mod h1:1FBXiHDk1VyRM1C0aez2bCfHQ4vMZKkAQzZbkSQt5fI= -github.com/libp2p/go-libp2p-yamux v0.2.2/go.mod h1:lIohaR0pT6mOt0AZ0L2dFze9hds9Req3OfS+B+dv4qw= -github.com/libp2p/go-libp2p-yamux v0.2.5/go.mod h1:Zpgj6arbyQrmZ3wxSZxfBmbdnWtbZ48OpsfmQVTErwA= -github.com/libp2p/go-libp2p-yamux v0.2.7/go.mod h1:X28ENrBMU/nm4I3Nx4sZ4dgjZ6VhLEn0XhIoZ5viCwU= -github.com/libp2p/go-libp2p-yamux v0.2.8/go.mod h1:/t6tDqeuZf0INZMTgd0WxIRbtK2EzI2h7HbFm9eAKI4= -github.com/libp2p/go-libp2p-yamux v0.4.0/go.mod h1:+DWDjtFMzoAwYLVkNZftoucn7PelNoy5nm3tZ3/Zw30= -github.com/libp2p/go-libp2p-yamux v0.5.0/go.mod h1:AyR8k5EzyM2QN9Bbdg6X1SkVVuqLwTGf0L4DFq9g6po= -github.com/libp2p/go-libp2p-yamux v0.5.1/go.mod h1:dowuvDu8CRWmr0iqySMiSxK+W0iL5cMVO9S94Y6gkv4= -github.com/libp2p/go-libp2p-yamux v0.5.4/go.mod h1:tfrXbyaTqqSU654GTvK3ocnSZL3BuHoeTSqhcel1wsE= -github.com/libp2p/go-libp2p-yamux v0.6.0/go.mod h1:MRhd6mAYnFRnSISp4M8i0ClV/j+mWHo2mYLifWGw33k= -github.com/libp2p/go-libp2p-yamux v0.8.0/go.mod h1:yTkPgN2ib8FHyU1ZcVD7aelzyAqXXwEPbyx+aSKm9h8= -github.com/libp2p/go-libp2p-yamux v0.8.1/go.mod h1:rUozF8Jah2dL9LLGyBaBeTQeARdwhefMCTQVQt6QobE= -github.com/libp2p/go-libp2p-yamux v0.9.1/go.mod h1:wRc6wvyxQINFcKe7daL4BeQ02Iyp+wxyC8WCNfngBrA= -github.com/libp2p/go-maddr-filter v0.0.4/go.mod h1:6eT12kSQMA9x2pvFQa+xesMKUBlj9VImZbj3B9FBH/Q= -github.com/libp2p/go-maddr-filter v0.0.5/go.mod h1:Jk+36PMfIqCJhAnaASRH83bdAvfDRp/w6ENFaC9bG+M= -github.com/libp2p/go-maddr-filter v0.1.0/go.mod h1:VzZhTXkMucEGGEOSKddrwGiOv0tUhgnKqNEmIAz/bPU= -github.com/libp2p/go-mplex v0.0.3/go.mod h1:pK5yMLmOoBR1pNCqDlA2GQrdAVTMkqFalaTWe7l4Yd0= -github.com/libp2p/go-mplex v0.1.0/go.mod h1:SXgmdki2kwCUlCCbfGLEgHjC4pFqhTp0ZoV6aiKgxDU= -github.com/libp2p/go-mplex v0.1.1/go.mod h1:Xgz2RDCi3co0LeZfgjm4OgUF15+sVR8SRcu3SFXI1lk= -github.com/libp2p/go-mplex v0.1.2/go.mod h1:Xgz2RDCi3co0LeZfgjm4OgUF15+sVR8SRcu3SFXI1lk= -github.com/libp2p/go-mplex v0.2.0/go.mod h1:0Oy/A9PQlwBytDRp4wSkFnzHYDKcpLot35JQ6msjvYQ= -github.com/libp2p/go-mplex v0.3.0/go.mod h1:0Oy/A9PQlwBytDRp4wSkFnzHYDKcpLot35JQ6msjvYQ= -github.com/libp2p/go-mplex v0.4.0/go.mod h1:y26Lx+wNVtMYMaPu300Cbot5LkEZ4tJaNYeHeT9dh6E= -github.com/libp2p/go-msgio v0.0.2/go.mod h1:63lBBgOTDKQL6EWazRMCwXsEeEeK9O2Cd+0+6OOuipQ= -github.com/libp2p/go-msgio v0.0.4/go.mod h1:63lBBgOTDKQL6EWazRMCwXsEeEeK9O2Cd+0+6OOuipQ= -github.com/libp2p/go-msgio v0.0.6/go.mod h1:4ecVB6d9f4BDSL5fqvPiC4A3KivjWn+Venn/1ALLMWA= -github.com/libp2p/go-msgio v0.1.0/go.mod h1:eNlv2vy9V2X/kNldcZ+SShFE++o2Yjxwx6RAYsmgJnE= -github.com/libp2p/go-msgio v0.2.0/go.mod h1:dBVM1gW3Jk9XqHkU4eKdGvVHdLa51hoGfll6jMJMSlY= -github.com/libp2p/go-nat v0.0.3/go.mod h1:88nUEt0k0JD45Bk93NIwDqjlhiOwOoV36GchpcVc1yI= -github.com/libp2p/go-nat v0.0.4/go.mod h1:Nmw50VAvKuk38jUBcmNh6p9lUJLoODbJRvYAa/+KSDo= -github.com/libp2p/go-nat v0.0.5/go.mod h1:B7NxsVNPZmRLvMOwiEO1scOSyjA56zxYAGv1yQgRkEU= -github.com/libp2p/go-nat v0.1.0/go.mod h1:X7teVkwRHNInVNWQiO/tAiAVRwSr5zoRz4YSTC3uRBM= -github.com/libp2p/go-netroute v0.1.2/go.mod h1:jZLDV+1PE8y5XxBySEBgbuVAXbhtuHSdmLPL2n9MKbk= -github.com/libp2p/go-netroute v0.1.3/go.mod h1:jZLDV+1PE8y5XxBySEBgbuVAXbhtuHSdmLPL2n9MKbk= -github.com/libp2p/go-netroute v0.1.5/go.mod h1:V1SR3AaECRkEQCoFFzYwVYWvYIEtlxx89+O3qcpCl4A= -github.com/libp2p/go-netroute v0.1.6/go.mod h1:AqhkMh0VuWmfgtxKPp3Oc1LdU5QSWS7wl0QLhSZqXxQ= -github.com/libp2p/go-netroute v0.2.0/go.mod h1:Vio7LTzZ+6hoT4CMZi5/6CpY3Snzh2vgZhWgxMNwlQI= -github.com/libp2p/go-openssl v0.0.2/go.mod h1:v8Zw2ijCSWBQi8Pq5GAixw6DbFfa9u6VIYDXnvOXkc0= -github.com/libp2p/go-openssl v0.0.3/go.mod h1:unDrJpgy3oFr+rqXsarWifmJuNnJR4chtO1HmaZjggc= -github.com/libp2p/go-openssl v0.0.4/go.mod h1:unDrJpgy3oFr+rqXsarWifmJuNnJR4chtO1HmaZjggc= -github.com/libp2p/go-openssl v0.0.5/go.mod h1:unDrJpgy3oFr+rqXsarWifmJuNnJR4chtO1HmaZjggc= -github.com/libp2p/go-openssl v0.0.7 h1:eCAzdLejcNVBzP/iZM9vqHnQm+XyCEbSSIheIPRGNsw= -github.com/libp2p/go-openssl v0.0.7/go.mod h1:unDrJpgy3oFr+rqXsarWifmJuNnJR4chtO1HmaZjggc= -github.com/libp2p/go-reuseport v0.0.1/go.mod h1:jn6RmB1ufnQwl0Q1f+YxAj8isJgDCQzaaxIFYDhcYEA= -github.com/libp2p/go-reuseport v0.0.2/go.mod h1:SPD+5RwGC7rcnzngoYC86GjPzjSywuQyMVAheVBD9nQ= -github.com/libp2p/go-reuseport v0.1.0/go.mod h1:bQVn9hmfcTaoo0c9v5pBhOarsU1eNOBZdaAd2hzXRKU= -github.com/libp2p/go-reuseport-transport v0.0.2/go.mod h1:YkbSDrvjUVDL6b8XqriyA20obEtsW9BLkuOUyQAOCbs= -github.com/libp2p/go-reuseport-transport v0.0.3/go.mod h1:Spv+MPft1exxARzP2Sruj2Wb5JSyHNncjf1Oi2dEbzM= -github.com/libp2p/go-reuseport-transport v0.0.4/go.mod h1:trPa7r/7TJK/d+0hdBLOCGvpQQVOU74OXbNCIMkufGw= -github.com/libp2p/go-reuseport-transport v0.0.5/go.mod h1:TC62hhPc8qs5c/RoXDZG6YmjK+/YWUPC0yYmeUecbjc= -github.com/libp2p/go-reuseport-transport v0.1.0/go.mod h1:vev0C0uMkzriDY59yFHD9v+ujJvYmDQVLowvAjEOmfw= -github.com/libp2p/go-sockaddr v0.0.2/go.mod h1:syPvOmNs24S3dFVGJA1/mrqdeijPxLV2Le3BRLKd68k= -github.com/libp2p/go-sockaddr v0.1.0/go.mod h1:syPvOmNs24S3dFVGJA1/mrqdeijPxLV2Le3BRLKd68k= -github.com/libp2p/go-sockaddr v0.1.1/go.mod h1:syPvOmNs24S3dFVGJA1/mrqdeijPxLV2Le3BRLKd68k= -github.com/libp2p/go-stream-muxer v0.0.1/go.mod h1:bAo8x7YkSpadMTbtTaxGVHWUQsR/l5MEaHbKaliuT14= -github.com/libp2p/go-stream-muxer-multistream v0.2.0/go.mod h1:j9eyPol/LLRqT+GPLSxvimPhNph4sfYfMoDPd7HkzIc= -github.com/libp2p/go-stream-muxer-multistream v0.3.0/go.mod h1:yDh8abSIzmZtqtOt64gFJUXEryejzNb0lisTt+fAMJA= -github.com/libp2p/go-stream-muxer-multistream v0.4.0/go.mod h1:nb+dGViZleRP4XcyHuZSVrJCBl55nRBOMmiSL/dyziw= -github.com/libp2p/go-tcp-transport v0.1.0/go.mod h1:oJ8I5VXryj493DEJ7OsBieu8fcg2nHGctwtInJVpipc= -github.com/libp2p/go-tcp-transport v0.1.1/go.mod h1:3HzGvLbx6etZjnFlERyakbaYPdfjg2pWP97dFZworkY= -github.com/libp2p/go-tcp-transport v0.2.0/go.mod h1:vX2U0CnWimU4h0SGSEsg++AzvBcroCGYw28kh94oLe0= -github.com/libp2p/go-tcp-transport v0.2.1/go.mod h1:zskiJ70MEfWz2MKxvFB/Pv+tPIB1PpPUrHIWQ8aFw7M= -github.com/libp2p/go-tcp-transport v0.2.3/go.mod h1:9dvr03yqrPyYGIEN6Dy5UvdJZjyPFvl1S/igQ5QD1SU= -github.com/libp2p/go-tcp-transport v0.2.4/go.mod h1:9dvr03yqrPyYGIEN6Dy5UvdJZjyPFvl1S/igQ5QD1SU= -github.com/libp2p/go-tcp-transport v0.2.7/go.mod h1:lue9p1b3VmZj1MhhEGB/etmvF/nBQ0X9CW2DutBT3MM= -github.com/libp2p/go-tcp-transport v0.4.0/go.mod h1:0y52Rwrn4076xdJYu/51/qJIdxz+EWDAOG2S45sV3VI= -github.com/libp2p/go-tcp-transport v0.5.0/go.mod h1:UPPL0DIjQqiWRwVAb+CEQlaAG0rp/mCqJfIhFcLHc4Y= -github.com/libp2p/go-tcp-transport v0.5.1/go.mod h1:UPPL0DIjQqiWRwVAb+CEQlaAG0rp/mCqJfIhFcLHc4Y= -github.com/libp2p/go-ws-transport v0.1.0/go.mod h1:rjw1MG1LU9YDC6gzmwObkPd/Sqwhw7yT74kj3raBFuo= -github.com/libp2p/go-ws-transport v0.2.0/go.mod h1:9BHJz/4Q5A9ludYWKoGCFC5gUElzlHoKzu0yY9p/klM= -github.com/libp2p/go-ws-transport v0.3.0/go.mod h1:bpgTJmRZAvVHrgHybCVyqoBmyLQ1fiZuEaBYusP5zsk= -github.com/libp2p/go-ws-transport v0.4.0/go.mod h1:EcIEKqf/7GDjth6ksuS/6p7R49V4CBY6/E7R/iyhYUA= -github.com/libp2p/go-ws-transport v0.5.0/go.mod h1:I2juo1dNTbl8BKSBYo98XY85kU2xds1iamArLvl8kNg= -github.com/libp2p/go-ws-transport v0.6.0/go.mod h1:dXqtI9e2JV9FtF1NOtWVZSKXh5zXvnuwPXfj8GPBbYU= -github.com/libp2p/go-yamux v1.2.2/go.mod h1:FGTiPvoV/3DVdgWpX+tM0OW3tsM+W5bSE3gZwqQTcow= -github.com/libp2p/go-yamux v1.2.3/go.mod h1:FGTiPvoV/3DVdgWpX+tM0OW3tsM+W5bSE3gZwqQTcow= -github.com/libp2p/go-yamux v1.3.0/go.mod h1:FGTiPvoV/3DVdgWpX+tM0OW3tsM+W5bSE3gZwqQTcow= -github.com/libp2p/go-yamux v1.3.3/go.mod h1:FGTiPvoV/3DVdgWpX+tM0OW3tsM+W5bSE3gZwqQTcow= -github.com/libp2p/go-yamux v1.3.5/go.mod h1:FGTiPvoV/3DVdgWpX+tM0OW3tsM+W5bSE3gZwqQTcow= -github.com/libp2p/go-yamux v1.3.7/go.mod h1:fr7aVgmdNGJK+N1g+b6DW6VxzbRCjCOejR/hkmpooHE= -github.com/libp2p/go-yamux v1.4.0/go.mod h1:fr7aVgmdNGJK+N1g+b6DW6VxzbRCjCOejR/hkmpooHE= -github.com/libp2p/go-yamux v1.4.1/go.mod h1:fr7aVgmdNGJK+N1g+b6DW6VxzbRCjCOejR/hkmpooHE= -github.com/libp2p/go-yamux/v2 v2.0.0/go.mod h1:NVWira5+sVUIU6tu1JWvaRn1dRnG+cawOJiflsAM+7U= -github.com/libp2p/go-yamux/v2 v2.2.0/go.mod h1:3So6P6TV6r75R9jiBpiIKgU/66lOarCZjqROGxzPpPQ= -github.com/libp2p/go-yamux/v2 v2.3.0/go.mod h1:iTU+lOIn/2h0AgKcL49clNTwfEw+WSfDYrXe05EyKIs= -github.com/libp2p/go-yamux/v3 v3.0.1/go.mod h1:s2LsDhHbh+RfCsQoICSYt58U2f8ijtPANFD8BmE74Bo= -github.com/libp2p/go-yamux/v3 v3.0.2/go.mod h1:s2LsDhHbh+RfCsQoICSYt58U2f8ijtPANFD8BmE74Bo= -github.com/libp2p/go-yamux/v3 v3.1.1/go.mod h1:jeLEQgLXqE2YqX1ilAClIfCMDY+0uXQUKmmb/qp0gT4= -github.com/libp2p/zeroconf/v2 v2.1.1/go.mod h1:fuJqLnUwZTshS3U/bMRJ3+ow/v9oid1n0DmyYyNO1Xs= -github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= -github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= +github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6cdF0Y8= +github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg= +github.com/libp2p/go-libp2p v0.24.2 h1:iMViPIcLY0D6zr/f+1Yq9EavCZu2i7eDstsr1nEwSAk= +github.com/libp2p/go-libp2p v0.24.2/go.mod h1:WuxtL2V8yGjam03D93ZBC19tvOUiPpewYv1xdFGWu1k= +github.com/libp2p/go-openssl v0.1.0 h1:LBkKEcUv6vtZIQLVTegAil8jbNpJErQ9AnT+bWV+Ooo= +github.com/libp2p/go-openssl v0.1.0/go.mod h1:OiOxwPpL3n4xlenjx2h7AwSGaFSC/KZvf6gNdOBQMtc= github.com/lithammer/dedent v1.1.0/go.mod h1:jrXYCQtgg0nJiN+StA2KgR7w6CiQNv9Fd/Z9BP0jIOc= github.com/logrusorgru/aurora v0.0.0-20200102142835-e9ef32dff381/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4= github.com/logrusorgru/aurora v2.0.3+incompatible h1:tOpm7WcpBTn4fjmVfgpQq0EfczGlG91VSDkswnjF5A8= github.com/logrusorgru/aurora v2.0.3+incompatible/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4= -github.com/lucas-clemente/quic-go v0.19.3/go.mod h1:ADXpNbTQjq1hIzCpB+y/k5iz4n4z4IwqoLb94Kh5Hu8= -github.com/lucas-clemente/quic-go v0.21.2/go.mod h1:vF5M1XqhBAHgbjKcJOXY3JZz3GP0T3FQhz/uyOUS38Q= -github.com/lucas-clemente/quic-go v0.23.0/go.mod h1:paZuzjXCE5mj6sikVLMvqXk8lJV2AsqtJ6bDhjEfxx0= -github.com/lucas-clemente/quic-go v0.24.0/go.mod h1:paZuzjXCE5mj6sikVLMvqXk8lJV2AsqtJ6bDhjEfxx0= -github.com/lucas-clemente/quic-go v0.25.0/go.mod h1:YtzP8bxRVCBlO77yRanE264+fY/T2U9ZlW1AaHOsMOg= -github.com/lucas-clemente/quic-go v0.27.0/go.mod h1:AzgQoPda7N+3IqMMMkywBKggIFo2KT6pfnlrQ2QieeI= -github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= -github.com/lunixbochs/vtclean v1.0.0/go.mod h1:pHhQNgMf3btfWnGBVipUOjRYhoOsdGqdm/+2c2E2WMI= -github.com/lyft/protoc-gen-star v0.5.3/go.mod h1:V0xaHgaf5oCCqmcxYcWiDfTiKsZsRc87/1qhoTACD8w= -github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= -github.com/m4ksio/wal v1.0.0 h1:PucHOZPz58BgWowe+Gf+gZUbgEdd4zFx+He45SGkHG0= -github.com/m4ksio/wal v1.0.0/go.mod h1:S3UyatBTuMdoI5QTuz2DWb8Csd9568vYrFAmMI/bnMw= +github.com/m4ksio/wal v1.0.1-0.20221209164835-154a17396e4c h1:OqVcb1Dkheracn4fgCjxlfhuSnM8jmPbrWkJbRIC4fo= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/magiconair/properties v1.8.5 h1:b6kJs+EmPFMYGkow9GiUyCyOvIwYetYJ3fSaWak/Gls= -github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= -github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/marten-seemann/qpack v0.2.1/go.mod h1:F7Gl5L1jIgN1D11ucXefiuJS9UMVP2opoCp2jDKb7wc= -github.com/marten-seemann/qtls v0.10.0/go.mod h1:UvMd1oaYDACI99/oZUYLzMCkBXQVT0aGm99sJhbT8hs= -github.com/marten-seemann/qtls-go1-15 v0.1.1/go.mod h1:GyFwywLKkRt+6mfU99csTEY1joMZz5vmB1WNZH3P81I= -github.com/marten-seemann/qtls-go1-15 v0.1.4/go.mod h1:GyFwywLKkRt+6mfU99csTEY1joMZz5vmB1WNZH3P81I= -github.com/marten-seemann/qtls-go1-15 v0.1.5/go.mod h1:GyFwywLKkRt+6mfU99csTEY1joMZz5vmB1WNZH3P81I= -github.com/marten-seemann/qtls-go1-16 v0.1.4/go.mod h1:gNpI2Ol+lRS3WwSOtIUUtRwZEQMXjYK+dQSBFbethAk= -github.com/marten-seemann/qtls-go1-16 v0.1.5/go.mod h1:gNpI2Ol+lRS3WwSOtIUUtRwZEQMXjYK+dQSBFbethAk= -github.com/marten-seemann/qtls-go1-17 v0.1.0-rc.1/go.mod h1:fz4HIxByo+LlWcreM4CZOYNuz3taBQ8rN2X6FqvaWo8= -github.com/marten-seemann/qtls-go1-17 v0.1.0/go.mod h1:fz4HIxByo+LlWcreM4CZOYNuz3taBQ8rN2X6FqvaWo8= -github.com/marten-seemann/qtls-go1-17 v0.1.1/go.mod h1:C2ekUKcDdz9SDWxec1N/MvcXBpaX9l3Nx67XaR84L5s= -github.com/marten-seemann/qtls-go1-18 v0.1.0-beta.1/go.mod h1:PUhIQk19LoFt2174H4+an8TYvWOGjb/hHwphBeaDHwI= -github.com/marten-seemann/qtls-go1-18 v0.1.1/go.mod h1:mJttiymBAByA49mhlNZZGrH5u1uXYZJ+RW28Py7f4m4= -github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd/go.mod h1:QuCEs1Nt24+FYQEqAAncTDPJIuGs+LxK1MCiFL25pMU= +github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= +github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= +github.com/matryer/is v1.2.0 h1:92UTHpy8CDwaJ08GqLDzhhuixiBUUD1p3AU6PHddz4A= github.com/matryer/is v1.2.0/go.mod h1:2fLPjFQM9rhQ15aVEtbuwhJinnOqrmgXPNdZsdwlWXA= -github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.0/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= -github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-colorable v0.1.7/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= +github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-ieproxy v0.0.0-20190610004146-91bb50d98149/go.mod h1:31jz6HNzdxOmlERGGEc4v/dMssOfmp2p5bT/okiKFFc= github.com/mattn/go-ieproxy v0.0.0-20190702010315-6dee0af9227d/go.mod h1:31jz6HNzdxOmlERGGEc4v/dMssOfmp2p5bT/okiKFFc= -github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.5-0.20180830101745-3fb116b82035/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ= github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84= -github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= -github.com/mattn/go-isatty v0.0.13/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= -github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng= +github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-pointer v0.0.1 h1:n+XhsuGeVO6MEAp7xyEukFINEa+Quek5psIR/ylA6o0= +github.com/mattn/go-pointer v0.0.1/go.mod h1:2zXcozF6qYGgmsG+SeTZz3oAbFLdD3OWqnUbNvJZAlc= github.com/mattn/go-runewidth v0.0.3/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.6/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= -github.com/mattn/go-runewidth v0.0.10/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk= -github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/mattn/go-runewidth v0.0.13 h1:lTGmDsbAYt5DmK6OnoV7EuIF1wEIFAcxld6ypU4OSgU= github.com/mattn/go-tty v0.0.3/go.mod h1:ihxohKRERHTVzN+aSVRwACLCeqIoZAWpoICkkvrWyR0= -github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE= -github.com/microcosm-cc/bluemonday v1.0.1/go.mod h1:hsXNsILzKxV+sX77C5b8FSuKF00vh2OMYv+xgHpAMF4= -github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/miekg/dns v1.1.12/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= -github.com/miekg/dns v1.1.28/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= -github.com/miekg/dns v1.1.31/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= -github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= -github.com/miekg/dns v1.1.43/go.mod h1:+evo5L0630/F6ca/Z9+GAqzhjGyn8/c+TBaOyfEl0V4= -github.com/miekg/dns v1.1.48/go.mod h1:e3IlAVfNqAllflbibAZEWOXOQ+Ynzk/dDozDxY7XnME= -github.com/mikioh/tcp v0.0.0-20190314235350-803a9b46060c/go.mod h1:0SQS9kMwD2VsyFEB++InYyBJroV/FRmBgcydeSUcJms= -github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b/go.mod h1:lxPUiZwKoFL8DUUmalo2yJJUCxbPKtm8OKfqr2/FTNU= -github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc/go.mod h1:cGKTAVKx4SxOuR/czcZ/E2RSJ3sfHs8FpHhQ5CWMf9s= -github.com/minio/blake2b-simd v0.0.0-20160723061019-3f5f724cb5b1 h1:lYpkrQH5ajf0OXOcUbGjvZxxijuBwbbmlSxLiuofa+g= +github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= github.com/minio/blake2b-simd v0.0.0-20160723061019-3f5f724cb5b1/go.mod h1:pD8RvIylQ358TN4wwqatJ8rNavkEINozVn9DtGI3dfQ= github.com/minio/sha256-simd v0.0.0-20190131020904-2d45a736cd16/go.mod h1:2FMWW+8GMoPweT6+pI63m9YE3Lmw4J71hV56Chs1E/U= -github.com/minio/sha256-simd v0.0.0-20190328051042-05b4dd3047e5/go.mod h1:2FMWW+8GMoPweT6+pI63m9YE3Lmw4J71hV56Chs1E/U= -github.com/minio/sha256-simd v0.1.0/go.mod h1:2FMWW+8GMoPweT6+pI63m9YE3Lmw4J71hV56Chs1E/U= github.com/minio/sha256-simd v0.1.1-0.20190913151208-6de447530771/go.mod h1:B5e1o+1/KgNmWrSQK08Y6Z1Vb5pwIktudl0J58iy0KM= -github.com/minio/sha256-simd v0.1.1/go.mod h1:B5e1o+1/KgNmWrSQK08Y6Z1Vb5pwIktudl0J58iy0KM= github.com/minio/sha256-simd v1.0.0 h1:v1ta+49hkWZyvaKwrQB8elexRqm6Y0aMLjCNsrYxo6g= github.com/minio/sha256-simd v1.0.0/go.mod h1:OuYzVNI5vcoYIAmbIvHPl3N3jUzVedXbKy5RFepssQM= -github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= -github.com/mitchellh/cli v1.1.0/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI= -github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db/go.mod h1:l0dey0ia/Uv7NcFFVbCLtqEBQbrT4OCwCSKTEv6enCw= -github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= +github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db h1:62I3jR2EmQ4l5rM/4FEfDWcRD+abF5XlKShorW5LRoQ= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= -github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= -github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= -github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.4.3 h1:OVowDSCllw/YjdLkam3/sm7wEtOy59d8ndGgCcyj8cs= -github.com/mitchellh/mapstructure v1.4.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= -github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= +github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= +github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mr-tron/base58 v1.1.0/go.mod h1:xcD2VGqlgYjBdcBLw+TuYLr8afG+Hj8g2eTVqeSzSU8= -github.com/mr-tron/base58 v1.1.1/go.mod h1:xcD2VGqlgYjBdcBLw+TuYLr8afG+Hj8g2eTVqeSzSU8= -github.com/mr-tron/base58 v1.1.2/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= github.com/mr-tron/base58 v1.1.3/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= github.com/mr-tron/base58 v1.2.0 h1:T/HDJBh4ZCPbU39/+c3rRvE0uKBQlU27+QI8LJ4t64o= github.com/mr-tron/base58 v1.2.0/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= github.com/multiformats/go-base32 v0.0.3/go.mod h1:pLiuGC8y0QR3Ue4Zug5UzK9LjgbkL8NSQj0zQ5Nz/AA= -github.com/multiformats/go-base32 v0.0.4 h1:+qMh4a2f37b4xTNs6mqitDinryCI+tfO2dRVMN9mjSE= -github.com/multiformats/go-base32 v0.0.4/go.mod h1:jNLFzjPZtp3aIARHbJRZIaPuspdH0J6q39uUM5pnABM= -github.com/multiformats/go-base36 v0.1.0 h1:JR6TyF7JjGd3m6FbLU2cOxhC0Li8z8dLNGQ89tUg4F4= +github.com/multiformats/go-base32 v0.1.0 h1:pVx9xoSPqEIQG8o+UbAe7DNi51oej1NtK+aGkbLYxPE= +github.com/multiformats/go-base32 v0.1.0/go.mod h1:Kj3tFY6zNr+ABYMqeUNeGvkIC/UYgtWibDcT0rExnbI= github.com/multiformats/go-base36 v0.1.0/go.mod h1:kFGE83c6s80PklsHO9sRn2NCoffoRdUUOENyW/Vv6sM= -github.com/multiformats/go-multiaddr v0.0.1/go.mod h1:xKVEak1K9cS1VdmPZW3LSIb6lgmoS58qz/pzqmAxV44= -github.com/multiformats/go-multiaddr v0.0.2/go.mod h1:xKVEak1K9cS1VdmPZW3LSIb6lgmoS58qz/pzqmAxV44= -github.com/multiformats/go-multiaddr v0.0.4/go.mod h1:xKVEak1K9cS1VdmPZW3LSIb6lgmoS58qz/pzqmAxV44= -github.com/multiformats/go-multiaddr v0.1.0/go.mod h1:xKVEak1K9cS1VdmPZW3LSIb6lgmoS58qz/pzqmAxV44= -github.com/multiformats/go-multiaddr v0.1.1/go.mod h1:aMKBKNEYmzmDmxfX88/vz+J5IU55txyt0p4aiWVohjo= -github.com/multiformats/go-multiaddr v0.2.0/go.mod h1:0nO36NvPpyV4QzvTLi/lafl2y95ncPj0vFwVF6k6wJ4= -github.com/multiformats/go-multiaddr v0.2.1/go.mod h1:s/Apk6IyxfvMjDafnhJgJ3/46z7tZ04iMk5wP4QMGGE= -github.com/multiformats/go-multiaddr v0.2.2/go.mod h1:NtfXiOtHvghW9KojvtySjH5y0u0xW5UouOmQQrn6a3Y= -github.com/multiformats/go-multiaddr v0.3.0/go.mod h1:dF9kph9wfJ+3VLAaeBqo9Of8x4fJxp6ggJGteB8HQTI= -github.com/multiformats/go-multiaddr v0.3.1/go.mod h1:uPbspcUPd5AfaP6ql3ujFY+QWzmBD8uLLL4bXW0XfGc= -github.com/multiformats/go-multiaddr v0.3.3/go.mod h1:lCKNGP1EQ1eZ35Za2wlqnabm9xQkib3fyB+nZXHLag0= -github.com/multiformats/go-multiaddr v0.4.0/go.mod h1:YcpyLH8ZPudLxQlemYBPhSm0/oCXAT8Z4mzFpyoPyRc= -github.com/multiformats/go-multiaddr v0.4.1/go.mod h1:3afI9HfVW8csiF8UZqtpYRiDyew8pRX7qLIGHu9FLuM= -github.com/multiformats/go-multiaddr v0.5.0 h1:i/JuOoVg4szYQ4YEzDGtb2h0o8M7CG/Yq6cGlcjWZpM= -github.com/multiformats/go-multiaddr v0.5.0/go.mod h1:3KAxNkUqLTJ20AAwN4XVX4kZar+bR+gh4zgbfr3SNug= -github.com/multiformats/go-multiaddr-dns v0.0.1/go.mod h1:9kWcqw/Pj6FwxAwW38n/9403szc57zJPs45fmnznu3Q= -github.com/multiformats/go-multiaddr-dns v0.0.2/go.mod h1:9kWcqw/Pj6FwxAwW38n/9403szc57zJPs45fmnznu3Q= -github.com/multiformats/go-multiaddr-dns v0.2.0/go.mod h1:TJ5pr5bBO7Y1B18djPuRsVkduhQH2YqYSbxWJzYGdK0= -github.com/multiformats/go-multiaddr-dns v0.3.1/go.mod h1:G/245BRQ6FJGmryJCrOuTdB37AMA5AMOVuO6NY3JwTk= -github.com/multiformats/go-multiaddr-fmt v0.0.1/go.mod h1:aBYjqL4T/7j4Qx+R73XSv/8JsgnRFlf0w2KGLCmXl3Q= -github.com/multiformats/go-multiaddr-fmt v0.1.0/go.mod h1:hGtDIW4PU4BqJ50gW2quDuPVjyWNZxToGUh/HwTZYJo= -github.com/multiformats/go-multiaddr-net v0.0.1/go.mod h1:nw6HSxNmCIQH27XPGBuX+d1tnvM7ihcFwHMSstNAVUU= -github.com/multiformats/go-multiaddr-net v0.1.0/go.mod h1:5JNbcfBOP4dnhoZOv10JJVkJO0pCCEf8mTnipAo2UZQ= -github.com/multiformats/go-multiaddr-net v0.1.1/go.mod h1:5JNbcfBOP4dnhoZOv10JJVkJO0pCCEf8mTnipAo2UZQ= -github.com/multiformats/go-multiaddr-net v0.1.2/go.mod h1:QsWt3XK/3hwvNxZJp92iMQKME1qHfpYmyIjFVsSOY6Y= -github.com/multiformats/go-multiaddr-net v0.1.3/go.mod h1:ilNnaM9HbmVFqsb/qcNysjCu4PVONlrBZpHIrw/qQuA= -github.com/multiformats/go-multiaddr-net v0.1.4/go.mod h1:ilNnaM9HbmVFqsb/qcNysjCu4PVONlrBZpHIrw/qQuA= -github.com/multiformats/go-multiaddr-net v0.1.5/go.mod h1:ilNnaM9HbmVFqsb/qcNysjCu4PVONlrBZpHIrw/qQuA= -github.com/multiformats/go-multiaddr-net v0.2.0/go.mod h1:gGdH3UXny6U3cKKYCvpXI5rnK7YaOIEOPVDI9tsJbEA= +github.com/multiformats/go-base36 v0.2.0 h1:lFsAbNOGeKtuKozrtBsAkSVhv1p9D0/qedU9rQyccr0= +github.com/multiformats/go-base36 v0.2.0/go.mod h1:qvnKE++v+2MWCfePClUEjE78Z7P2a1UV0xHgWc0hkp4= +github.com/multiformats/go-multiaddr v0.8.0 h1:aqjksEcqK+iD/Foe1RRFsGZh8+XFiGo7FgUCZlpv3LU= +github.com/multiformats/go-multiaddr v0.8.0/go.mod h1:Fs50eBDWvZu+l3/9S6xAE7ZYj6yhxlvaVZjakWN7xRs= github.com/multiformats/go-multibase v0.0.1/go.mod h1:bja2MqRZ3ggyXtZSEDKpl0uO/gviWFaSteVbWT51qgs= -github.com/multiformats/go-multibase v0.0.3 h1:l/B6bJDQjvQ5G52jw4QGSYeOTZoAwIO77RblWplfIqk= github.com/multiformats/go-multibase v0.0.3/go.mod h1:5+1R4eQrT3PkYZ24C3W2Ue2tPwIdYQD509ZjSb5y9Oc= -github.com/multiformats/go-multicodec v0.2.0/go.mod h1:/y4YVwkfMyry5kFbMTbLJKErhycTIftytRV+llXdyS4= -github.com/multiformats/go-multicodec v0.3.0/go.mod h1:qGGaQmioCDh+TeFOnxrbU0DaIPw8yFgAZgFG0V7p1qQ= -github.com/multiformats/go-multicodec v0.4.1 h1:BSJbf+zpghcZMZrwTYBGwy0CPcVZGWiC72Cp8bBd4R4= -github.com/multiformats/go-multicodec v0.4.1/go.mod h1:1Hj/eHRaVWSXiSNNfcEPcwZleTmdNP81xlxDLnWU9GQ= +github.com/multiformats/go-multibase v0.1.1 h1:3ASCDsuLX8+j4kx58qnJ4YFq/JWTJpCyDW27ztsVTOI= +github.com/multiformats/go-multibase v0.1.1/go.mod h1:ZEjHE+IsUrgp5mhlEAYjMtZwK1k4haNkcaPg9aoe1a8= +github.com/multiformats/go-multicodec v0.7.0 h1:rTUjGOwjlhGHbEMbPoSUJowG1spZTVsITRANCjKTUAQ= +github.com/multiformats/go-multicodec v0.7.0/go.mod h1:GUC8upxSBE4oG+q3kWZRw/+6yC1BqO550bjhWsJbZlw= github.com/multiformats/go-multihash v0.0.1/go.mod h1:w/5tugSrLEbWqlcgJabL3oHFKTwfvkofsjW2Qa1ct4U= -github.com/multiformats/go-multihash v0.0.5/go.mod h1:lt/HCbqlQwlPBz7lv0sQCdtfcMtlJvakRUn/0Ual8po= -github.com/multiformats/go-multihash v0.0.8/go.mod h1:YSLudS+Pi8NHE7o6tb3D8vrpKa63epEDmG8nTduyAew= -github.com/multiformats/go-multihash v0.0.9/go.mod h1:YSLudS+Pi8NHE7o6tb3D8vrpKa63epEDmG8nTduyAew= -github.com/multiformats/go-multihash v0.0.10/go.mod h1:YSLudS+Pi8NHE7o6tb3D8vrpKa63epEDmG8nTduyAew= github.com/multiformats/go-multihash v0.0.13/go.mod h1:VdAWLKTwram9oKAatUcLxBNUjdtcVwxObEQBtRfuyjc= github.com/multiformats/go-multihash v0.0.14/go.mod h1:VdAWLKTwram9oKAatUcLxBNUjdtcVwxObEQBtRfuyjc= -github.com/multiformats/go-multihash v0.0.15/go.mod h1:D6aZrWNLFTV/ynMpKsNtB40mJzmCl4jb1alC0OvHiHg= -github.com/multiformats/go-multihash v0.0.16/go.mod h1:zhfEIgVnB/rPMfxgFw15ZmGoNaKyNUIE4IWHG/kC+Ag= -github.com/multiformats/go-multihash v0.1.0 h1:CgAgwqk3//SVEw3T+6DqI4mWMyRuDwZtOWcJT0q9+EA= -github.com/multiformats/go-multihash v0.1.0/go.mod h1:RJlXsxt6vHGaia+S8We0ErjhojtKzPP2AH4+kYM7k84= -github.com/multiformats/go-multistream v0.1.0/go.mod h1:fJTiDfXJVmItycydCnNx4+wSzZ5NwG2FEVAI30fiovg= -github.com/multiformats/go-multistream v0.1.1/go.mod h1:KmHZ40hzVxiaiwlj3MEbYgK9JFk2/9UktWZAF54Du38= -github.com/multiformats/go-multistream v0.2.0/go.mod h1:5GZPQZbkWOLOn3J2y4Y99vVW7vOfsAflxARk3x14o6k= -github.com/multiformats/go-multistream v0.2.1/go.mod h1:5GZPQZbkWOLOn3J2y4Y99vVW7vOfsAflxARk3x14o6k= -github.com/multiformats/go-multistream v0.2.2/go.mod h1:UIcnm7Zuo8HKG+HkWgfQsGL+/MIEhyTqbODbIUwSXKs= -github.com/multiformats/go-multistream v0.3.0/go.mod h1:ODRoqamLUsETKS9BNcII4gcRsJBU5VAwRIv7O39cEXg= -github.com/multiformats/go-varint v0.0.1/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE= -github.com/multiformats/go-varint v0.0.2/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE= +github.com/multiformats/go-multihash v0.2.1 h1:aem8ZT0VA2nCHHk7bPJ1BjUbHNciqZC/d16Vve9l108= +github.com/multiformats/go-multihash v0.2.1/go.mod h1:WxoMcYG85AZVQUyRyo9s4wULvW5qrI9vb2Lt6evduFc= github.com/multiformats/go-varint v0.0.5/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE= -github.com/multiformats/go-varint v0.0.6 h1:gk85QWKxh3TazbLxED/NlDVv8+q+ReFJk7Y2W/KhfNY= -github.com/multiformats/go-varint v0.0.6/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE= +github.com/multiformats/go-varint v0.0.7 h1:sWSGR+f/eu5ABZA2ZpYKBILXTTs9JWpdEM/nEGOHFS8= +github.com/multiformats/go-varint v0.0.7/go.mod h1:r8PUYw/fD/SjBCiKOoDlGF6QawOELpZAu9eioSos/OU= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/naoina/go-stringutil v0.1.0/go.mod h1:XJ2SJL9jCtBh+P9q5btrd/Ylo8XwT/h1USek5+NqSA0= github.com/naoina/toml v0.1.2-0.20170918210437-9fafd6967416/go.mod h1:NBIhNtsFMo3G2szEBne+bO4gS192HuIYRqfvOWb4i1E= -github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= -github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= -github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k= -github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= -github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= -github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= -github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= -github.com/neelance/astrewrite v0.0.0-20160511093645-99348263ae86/go.mod h1:kHJEU3ofeGjhHklVoIGuVj85JJwZ6kWPaJwCIxgnFmo= -github.com/neelance/sourcemap v0.0.0-20151028013722-8c68805598ab/go.mod h1:Qr6/a/Q4r9LP1IltGz7tA7iOK1WonHEYhu1HRBA7ZiM= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= -github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= -github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= -github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= -github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= github.com/olekukonko/tablewriter v0.0.1/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= github.com/olekukonko/tablewriter v0.0.2-0.20190409134802-7e037d187b0c/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= -github.com/onflow/atree v0.1.0-beta1.0.20211027184039-559ee654ece9/go.mod h1:+6x071HgCF/0v5hQcaE5qqjc2UqN5gCU8h5Mk6uqpOg= -github.com/onflow/atree v0.3.0/go.mod h1:tSPKjdmbNOQyVrSvcxKZG8+EDL4jdjoJBGAjNVk8zkA= -github.com/onflow/atree v0.3.1-0.20220531231935-525fbc26f40a h1:ldQ7U2iddVJCwJA2ckK7y6AdH4INzxOSu2VnejkcBro= -github.com/onflow/atree v0.3.1-0.20220531231935-525fbc26f40a/go.mod h1:PZESmRR4bI/w/9nEDCqRoWxBq/jFNUEzkfypHf0j8cw= +github.com/onflow/atree v0.4.0 h1:+TbNisavAkukAKhgQ4plWnvR9o5+SkwPIsi3jaeAqKs= +github.com/onflow/atree v0.4.0/go.mod h1:7Qe1xaW0YewvouLXrugzMFUYXNoRQ8MT/UsVAWx1Ndo= github.com/onflow/cadence v0.4.0-beta1/go.mod h1:gaPtSctdMzT5NAoJgzsRuwUkdgRswVHsRXFNNmCTn3I= github.com/onflow/cadence v0.4.0/go.mod h1:gaPtSctdMzT5NAoJgzsRuwUkdgRswVHsRXFNNmCTn3I= -github.com/onflow/cadence v0.15.0/go.mod h1:KMzDF6cIv6nb5PJW9aITaqazbmJX8MMeibFcpPP385M= -github.com/onflow/cadence v0.17.0/go.mod h1:iR/tZpP+1YhM8iRnOBPiBIs7on5dE3hk2ZfunCRQswE= -github.com/onflow/cadence v0.20.1/go.mod h1:7mzUvPZUIJztIbr9eTvs+fQjWWHTF8veC+yk4ihcNIA= -github.com/onflow/cadence v0.21.3-0.20220419065337-d5202c162010/go.mod h1:vNIxF13e1Ty50KnkQSm6LVwvxGGLTQ4kpldvTL+2S6s= -github.com/onflow/cadence v0.21.3-0.20220511225809-808fe14141df/go.mod h1:vNIxF13e1Ty50KnkQSm6LVwvxGGLTQ4kpldvTL+2S6s= -github.com/onflow/cadence v0.21.3-0.20220513161637-08b93d4bb7b9/go.mod h1:vNIxF13e1Ty50KnkQSm6LVwvxGGLTQ4kpldvTL+2S6s= -github.com/onflow/cadence v0.21.3-0.20220601002855-8b113c539a2c/go.mod h1:FliGP1FZLEuSemnSf8pKItDzW7E2cvPukx/SsE1+oCo= -github.com/onflow/cadence v0.24.0/go.mod h1:tIJiQ4RIq1WUTXdBewv8p+gNUETN93Eb7jSFedjqs5w= -github.com/onflow/cadence v0.24.1/go.mod h1:tIJiQ4RIq1WUTXdBewv8p+gNUETN93Eb7jSFedjqs5w= -github.com/onflow/cadence v0.24.3 h1:UhggdTeTbxZraB9vkR7TlRv3i05nHDisFzo8SNzDZ0c= -github.com/onflow/cadence v0.24.3/go.mod h1:tIJiQ4RIq1WUTXdBewv8p+gNUETN93Eb7jSFedjqs5w= -github.com/onflow/flow v0.2.4/go.mod h1:lzyAYmbu1HfkZ9cfnL5/sjrrsnJiUU8fRL26CqLP7+c= -github.com/onflow/flow v0.2.5/go.mod h1:lzyAYmbu1HfkZ9cfnL5/sjrrsnJiUU8fRL26CqLP7+c= -github.com/onflow/flow v0.3.1 h1:kL/tNvCXeBw4yCVPys/m9rxvKxrO7Ck/mVNqHFtkTrI= -github.com/onflow/flow v0.3.1/go.mod h1:lzyAYmbu1HfkZ9cfnL5/sjrrsnJiUU8fRL26CqLP7+c= -github.com/onflow/flow-core-contracts/lib/go/contracts v0.7.3-0.20210527134022-58c25247091a/go.mod h1:IZ2e7UyLCYmpQ8Kd7k0A32uXqdqfiV1r2sKs5/riblo= -github.com/onflow/flow-core-contracts/lib/go/contracts v0.11.2-0.20220413172500-d89ca96e6db3/go.mod h1:T6yhM+kWrFxiP6F3hh8lh9DcocHfmv48P4ITnjLhKSk= -github.com/onflow/flow-core-contracts/lib/go/contracts v0.11.2-0.20220422202806-92ad02a996cc/go.mod h1:T6yhM+kWrFxiP6F3hh8lh9DcocHfmv48P4ITnjLhKSk= -github.com/onflow/flow-core-contracts/lib/go/contracts v0.11.2-0.20220513155751-c4c1f8d59f83 h1:mpJirFu/JWMLV0IhKDZleVrVdN5B8QERV4gSXDef5bA= -github.com/onflow/flow-core-contracts/lib/go/contracts v0.11.2-0.20220513155751-c4c1f8d59f83/go.mod h1:T6yhM+kWrFxiP6F3hh8lh9DcocHfmv48P4ITnjLhKSk= -github.com/onflow/flow-core-contracts/lib/go/templates v0.11.2-0.20220413172500-d89ca96e6db3/go.mod h1:JB2hWVxUjhMshUDNVQKfn4dzhhawOO+i3XjlhLMV5MM= -github.com/onflow/flow-core-contracts/lib/go/templates v0.11.2-0.20220422202806-92ad02a996cc/go.mod h1:JB2hWVxUjhMshUDNVQKfn4dzhhawOO+i3XjlhLMV5MM= -github.com/onflow/flow-core-contracts/lib/go/templates v0.11.2-0.20220513155751-c4c1f8d59f83 h1:w4uXFTvjQmLtA/X50H4YXVlzbdsoL3vDI3Y86jtJOMM= -github.com/onflow/flow-core-contracts/lib/go/templates v0.11.2-0.20220513155751-c4c1f8d59f83/go.mod h1:JB2hWVxUjhMshUDNVQKfn4dzhhawOO+i3XjlhLMV5MM= -github.com/onflow/flow-emulator v0.20.3/go.mod h1:xNdVsrMJiAaYJ59Dwo+xvj0ENdvk/bI14zkGN4V0ozs= -github.com/onflow/flow-emulator v0.30.1-0.20220421153717-0a0abc4d580b/go.mod h1:5IsytpArI/wN2ZZXCRAAcIp/223PmVDnmPxbRZO6IbU= -github.com/onflow/flow-emulator v0.31.2-0.20220421202209-eb83f9bfda53/go.mod h1:4jyaXs+wHHI0JlBi3/+K9DciPzIve3+MFrNXRAnBEl4= -github.com/onflow/flow-emulator v0.31.2-0.20220513151845-ef7513cb1cd0/go.mod h1:XLZfTEaYX2151TcTvZPIj7taBN0qpsOoyvEBRZzlXtQ= -github.com/onflow/flow-emulator v0.32.1-0.20220608200416-af3f5ba3f673/go.mod h1:1HEDTQqXL2PUFRAJmKKs0/YgPUKgGSeIziwBeIBOTjM= -github.com/onflow/flow-emulator v0.33.0/go.mod h1:LdwNLQPNOUlB5extFJohIOzsnhbZhPhC7HzrStex6L8= -github.com/onflow/flow-emulator v0.33.1 h1:OR4ZMKJKwTFD+INY5kICSmN16N1LFGzR0uDb+Qq92us= -github.com/onflow/flow-emulator v0.33.1/go.mod h1:+nQeTdyc+mUtSVc182fOYBvgmjIQFRtUu0h1yf1R4Tk= +github.com/onflow/cadence v0.31.3 h1:lTHTBnoFi/ahGk1cQ9JAC+tfYir4kjRVIqtTVCjbe6E= +github.com/onflow/cadence v0.31.3/go.mod h1:oRgWkvau1RH15m3NuDlZCPHFQzwvC72jEstCGu8OJ98= +github.com/onflow/flow-core-contracts/lib/go/contracts v0.11.2-0.20221214150253-cb74e7764c12 h1:tbWMfGrpVEKslasBLe/dEQ3ufgw0Q/8p+R7gpMW8xyM= +github.com/onflow/flow-core-contracts/lib/go/contracts v0.11.2-0.20221214150253-cb74e7764c12/go.mod h1:9nrgjIF/noY2jJ7LP8bKLHTpcdHOa2yO0ryCKTQpxvs= +github.com/onflow/flow-core-contracts/lib/go/templates v0.11.2-0.20221214150253-cb74e7764c12 h1:HrrDWFi3KdS54Mwayo9XkH8Z/yf6/8K1SKwjcJSSXB0= +github.com/onflow/flow-core-contracts/lib/go/templates v0.11.2-0.20221214150253-cb74e7764c12/go.mod h1:WMmeggH/H9Xb/SsT+4QFMtGYf+p1S2LXzbZAIaQQWAk= +github.com/onflow/flow-emulator v0.42.0 h1:paQ5wqEdaBqDiS1GxAPH4spn2tZCWgSMVcBu7Evzf6s= +github.com/onflow/flow-emulator v0.42.0/go.mod h1:owTQVgUfweB039WAoZUwFfN3ECeg0VMDYuuWbcTPICs= github.com/onflow/flow-ft/contracts v0.1.3/go.mod h1:IKe3yEurEKpg/J15q5WBlHkuMmt1iRECSHgnIa1gvRw= github.com/onflow/flow-ft/lib/go/contracts v0.0.0-20200625213016-c4c920e336d5/go.mod h1:Mf//HSOJUSzr4Z7QmW4BZGSweoqlrJJJ92KvKnqGGQk= github.com/onflow/flow-ft/lib/go/contracts v0.5.0 h1:Cg4gHGVblxcejfNNG5Mfj98Wf4zbY76O0Y28QB0766A= github.com/onflow/flow-ft/lib/go/contracts v0.5.0/go.mod h1:1zoTjp1KzNnOPkyqKmWKerUyf0gciw+e6tAEt0Ks3JE= github.com/onflow/flow-ft/lib/go/templates v0.0.0-20200629211940-37a9fc480521 h1:LT9tcbkaIztozJCvXWyeCl4Ce7EQ6W0rC0LJcDnfQCQ= github.com/onflow/flow-ft/lib/go/templates v0.0.0-20200629211940-37a9fc480521/go.mod h1:lbG88pW3ERo5l4/t8XuYMGFzHEKTjH01m0eQILAKH1k= -github.com/onflow/flow-go v0.18.0/go.mod h1:cQpvFoqth9PR7tarWDa36R/dDOqUK5QYfeYzCdXPLII= -github.com/onflow/flow-go v0.25.8-0.20220420171205-833e2e8849b1/go.mod h1:tXHoKoHvUoS+xqmNI+5rJ1bzvWPLkFgH4GAs8iRESC0= -github.com/onflow/flow-go v0.25.13-0.20220421201202-a0a5911268b6/go.mod h1:DhXeK/9n3dAe7b1hxdxdq0BNbv53+2IwoYGJ1VK5MFc= -github.com/onflow/flow-go v0.25.13-0.20220513151142-7858f76e703b/go.mod h1:GU4O0LFkSHnuTvyi03bax+ANAUVf3EZ5YsH8biZQsG4= -github.com/onflow/flow-go v0.25.13-0.20220609230330-ac8d2d78c212/go.mod h1:sYytNEocAABNMNEPxvtbhYxhHpd4ljtHYn3AC9UUC1I= -github.com/onflow/flow-go v0.26.2/go.mod h1:RCc7ztvK/XEuN5G6CYyO7x50Lfz+hSvS/HSdVsLf/Wk= -github.com/onflow/flow-go v0.26.3 h1:q1af+gkJd4xzxICtzkOHAopcX4kntozuNgr53iKcVHI= -github.com/onflow/flow-go v0.26.3/go.mod h1:MDUuR+YWgmiW9XY1bW7FOFcsULBCoG5VNr87EQbtyDk= +github.com/onflow/flow-go v0.29.7 h1:GYTMyo0G0vqFinC37iDfMAelC9gT/i3o5Mp8Dc2iqfc= +github.com/onflow/flow-go v0.29.7/go.mod h1:uGmboSl2tMwz6C89J9vtgK0vPXz7ibeWxY9luI5LzBk= github.com/onflow/flow-go-sdk v0.4.0/go.mod h1:MHn8oQCkBNcl2rXdYSm9VYYK4ogwEpyrdM/XK/czdlM= -github.com/onflow/flow-go-sdk v0.20.0-alpha.1/go.mod h1:52QZyLwU3p3UZ2FXOy+sRl4JPdtvJoae1spIUBOFxA8= -github.com/onflow/flow-go-sdk v0.20.0/go.mod h1:52QZyLwU3p3UZ2FXOy+sRl4JPdtvJoae1spIUBOFxA8= -github.com/onflow/flow-go-sdk v0.24.1-0.20220419204316-4f7efebeb2e9/go.mod h1:8LExIqsYMJHkC/h1OKd7XkRmPR6jA7bFv5eFtFXpv14= -github.com/onflow/flow-go-sdk v0.24.1-0.20220421152843-9ce4d554036e/go.mod h1:d0tO4l/bpLhISgYw1or2p5ee5xeJbnWgnU9CGUkvLO8= -github.com/onflow/flow-go-sdk v0.24.1-0.20220512181452-dec47e8451bb/go.mod h1:KQXwCCKgKE5JO9AlgQwFE3u4kFlQO/zSmlVSwcA8I+4= -github.com/onflow/flow-go-sdk v0.24.1-0.20220513205729-d1f58d47c4e3/go.mod h1:cDUwD383pSyvlKueB7lxNI10/mfS+2EWeZOmeJaxZiE= -github.com/onflow/flow-go-sdk v0.26.0/go.mod h1:PzRE6FkdcIEl10M3H/cRnsj8SRJzKgaXqQCvLO1cOL0= -github.com/onflow/flow-go-sdk v0.26.1/go.mod h1:Z0SxMQgapt5aBgIdI3trG+IvAAux8WAvCKhgZ7tP6dQ= -github.com/onflow/flow-go-sdk v0.26.2 h1:60wimtE4NX1poBtUiEYa2+FrtYGkwVd7Sl4L/GVgaiw= -github.com/onflow/flow-go-sdk v0.26.2/go.mod h1:wjeLjPVcZ2z3xNwvtRDj3ojqnJEoqGoxQOa3eHHXo18= -github.com/onflow/flow-go/crypto v0.12.0/go.mod h1:oXuvU0Dr4lHKgye6nHEFbBXIWNv+dBQUzoVW5Go38+o= -github.com/onflow/flow-go/crypto v0.18.0/go.mod h1:3Ah843iPyjIL+7nH9EillV3OWNptrL+DrQUbVKgg2E4= -github.com/onflow/flow-go/crypto v0.24.3 h1:5puosmiy853m1GPmBLJr4PiLVcCzE4n5o60hRPo9kYA= -github.com/onflow/flow-go/crypto v0.24.3/go.mod h1:dkVL98P6GHR48iD9zCB6XlnkJX8IQd00FKgt1reV90w= -github.com/onflow/flow-nft/lib/go/contracts v0.0.0-20210915191154-12ee8c507a0e/go.mod h1:epgW8P53PDpHaqBQCmMgJqdet4h7ONaoIL3kVD/nnzU= +github.com/onflow/flow-go-sdk v0.31.3 h1:CytMRiTayXRlkRNXQ9Cw6ZcKoOIK6+QtXk4iUb8f0zQ= +github.com/onflow/flow-go-sdk v0.31.3/go.mod h1:cqj2QShwC4DqxWzrg0+U7KxE2k7OJDGBxh8XZrJ4v5E= +github.com/onflow/flow-go/crypto v0.24.6 h1:krts+8LJa7GvOURjHibV95CLpDZg+cyJTrTOWhb2zrw= +github.com/onflow/flow-go/crypto v0.24.6/go.mod h1:fqCzkIBBMRRkciVrvW21rECKq1oD7Q6u+bCI78lfNX0= github.com/onflow/flow/protobuf/go/flow v0.1.5-0.20200601215056-34a11def1d6b/go.mod h1:kRugbzZjwQqvevJhrnnCFMJZNmoSJmxlKt6hTGXZojM= -github.com/onflow/flow/protobuf/go/flow v0.1.9/go.mod h1:kRugbzZjwQqvevJhrnnCFMJZNmoSJmxlKt6hTGXZojM= -github.com/onflow/flow/protobuf/go/flow v0.2.0/go.mod h1:kRugbzZjwQqvevJhrnnCFMJZNmoSJmxlKt6hTGXZojM= -github.com/onflow/flow/protobuf/go/flow v0.2.2/go.mod h1:gQxYqCfkI8lpnKsmIjwtN2mV/N2PIwc1I+RUK4HPIc8= -github.com/onflow/flow/protobuf/go/flow v0.2.4/go.mod h1:gQxYqCfkI8lpnKsmIjwtN2mV/N2PIwc1I+RUK4HPIc8= -github.com/onflow/flow/protobuf/go/flow v0.2.5/go.mod h1:gQxYqCfkI8lpnKsmIjwtN2mV/N2PIwc1I+RUK4HPIc8= -github.com/onflow/flow/protobuf/go/flow v0.3.1 h1:4I8ykG6naR3n8Or6eXrZDaGVaoztb3gP2KJ6XKyDufg= -github.com/onflow/flow/protobuf/go/flow v0.3.1/go.mod h1:gQxYqCfkI8lpnKsmIjwtN2mV/N2PIwc1I+RUK4HPIc8= -github.com/onflow/fusd/lib/go/contracts v0.0.0-20211021081023-ae9de8fb2c7e/go.mod h1:CRX9eXtc9zHaRVTW1Xh4Cf5pZgKkQuu1NuSEVyHXr/0= -github.com/onflow/sdks v0.4.2/go.mod h1:F0dj0EyHC55kknLkeD10js4mo14yTdMotnWMslPirrU= +github.com/onflow/flow/protobuf/go/flow v0.3.2-0.20221202093946-932d1c70e288 h1:haWv3D5loiH+zcOoWEvDXtWQvXt5U8PLliQjwhv9sfw= +github.com/onflow/flow/protobuf/go/flow v0.3.2-0.20221202093946-932d1c70e288/go.mod h1:gQxYqCfkI8lpnKsmIjwtN2mV/N2PIwc1I+RUK4HPIc8= github.com/onflow/sdks v0.4.4 h1:aJPGJJLAN+mlBWAQxsyuJXeRRMFeLwU6Mp4e/YL6bdU= github.com/onflow/sdks v0.4.4/go.mod h1:F0dj0EyHC55kknLkeD10js4mo14yTdMotnWMslPirrU= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.12.0/go.mod h1:oUhWkIvk5aDxtKvDDuw8gItl8pKl42LzjC9KZE0HfGg= -github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= -github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= -github.com/onsi/ginkgo v1.16.2/go.mod h1:CObGmKUOKaSC0RjmoAK7tKyn4Azo5P2IWuoMnvwxz1E= -github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= -github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= -github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= -github.com/onsi/gomega v1.9.0/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA= -github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/onsi/gomega v1.13.0/go.mod h1:lRk9szgn8TxENtWd0Tp4c3wjlRfMTMH27I+3Je41yGY= -github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= -github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= -github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= -github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= -github.com/opencontainers/runc v0.0.0-20190115041553-12f6a991201f/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= -github.com/opencontainers/runc v0.1.1/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= -github.com/opencontainers/runtime-spec v0.1.2-0.20190507144316-5b71a03e2700/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opencontainers/runtime-spec v1.0.2/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opencontainers/runtime-tools v0.0.0-20181011054405-1d69bd0f9c39/go.mod h1:r3f7wjNzSs2extwzU3Y+6pKfobzPh+kKFJ3ofN+3nfs= -github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= -github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs= github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= -github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxSfWAKL3wpBW7V8scJMt8N8gnaMCS9E/cA= -github.com/openzipkin/zipkin-go v0.1.1/go.mod h1:NtoC/o8u3JlF1lSlyPNswIbeQH9bJTmOf0Erfk+hxe8= -github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= -github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= -github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= -github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= -github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= +github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 h1:onHthvaw9LFnH4t2DcNVpwGmV9E1BkGknEliJkfwQj0= github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58/go.mod h1:DXv8WO4yhMYhSNPKjeNKa5WY9YCIEBRbNzFFPJbWO6Y= github.com/pborman/uuid v0.0.0-20170112150404-1b00554d8222/go.mod h1:VyrYX9gd7irzKovcSS6BIIEwPRkP2Wm2m9ufcdFSJ34= -github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= -github.com/pelletier/go-toml v1.9.4 h1:tjENF6MfZAg8e4ZmZTeWaWiT2vXtsoO6+iuOjFhECwM= -github.com/pelletier/go-toml v1.9.4/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= -github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= +github.com/pelletier/go-toml/v2 v2.0.6 h1:nrzqCb7j9cDFj2coyLNLaZuJTLjWjlaz6nvTvIwycIU= +github.com/pelletier/go-toml/v2 v2.0.6/go.mod h1:eumQOmlWiOPt5WriQQqoM5y18pDHwha2N+QD+EUNTek= github.com/peterh/liner v1.1.1-0.20190123174540-a2c9a5303de7/go.mod h1:CRroGNssyjTd/qIG2FyxByd2S8JEAZXBl4qUrZf8GS0= -github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= -github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= +github.com/pierrec/lz4 v2.6.1+incompatible h1:9UY3+iC23yxF0UfGaYrGplQ+79Rg+h/q9FV9ix19jjM= github.com/pierrec/lz4 v2.6.1+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= -github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= +github.com/pjbgf/sha1cd v0.2.3 h1:uKQP/7QOzNtKYH7UTohZLcjF5/55EnTw0jO/Ru4jZwI= +github.com/pjbgf/sha1cd v0.2.3/go.mod h1:HOK9QrgzdHpbc2Kzip0Q1yi3M2MFGPADtR6HjG65m5M= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.8.1-0.20171018195549-f15c970de5b7/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= -github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= github.com/pkg/term v0.0.0-20190109203006-aa71e9d9e942/go.mod h1:eCbImbZ95eXtAUIbLAuAVnBnwf83mjf6QIVH8SHYwqQ= -github.com/pkg/term v1.1.0/go.mod h1:E25nymQcrSllhX42Ok8MRm1+hyBdHY0dCeiKZ9jpNGw= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/polydawn/refmt v0.0.0-20190807091052-3d65705ee9f1/go.mod h1:uIp+gprXxxrWSjjklXD+mN4wed/tMfjMMmN/9+JsA9o= -github.com/polydawn/refmt v0.0.0-20201211092308-30ac6d18308e/go.mod h1:uIp+gprXxxrWSjjklXD+mN4wed/tMfjMMmN/9+JsA9o= -github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= -github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s= -github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= -github.com/prometheus/client_golang v0.8.0/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= -github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= -github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g= -github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= -github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= -github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.9.0/go.mod h1:FqZLKOZnGdFAhOK4nqGHa7D66IdsO+O441Eve7ptJDU= -github.com/prometheus/client_golang v1.10.0/go.mod h1:WJM3cc3yu7XKBKa/I8WeZm+V3eltZnBwfENSU7mdogU= -github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= -github.com/prometheus/client_golang v1.12.1 h1:ZiaPsmm9uiBeaSMRznKsCDNtPCS0T3JVDGF+06gjBzk= -github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= +github.com/prometheus/client_golang v1.14.0 h1:nJdhIvne2eSX/XRAFV9PcvFFRbrjbcTUj0VP62TMhnw= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= -github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/common v0.0.0-20180801064454-c7de2306084e/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/client_model v0.3.0 h1:UBgGFHqYdG/TPFD1B1ogZywDqEkwp3fBMvqdiQ7Xew4= github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc= -github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= -github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= -github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= -github.com/prometheus/common v0.14.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.18.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= -github.com/prometheus/common v0.30.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= -github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= -github.com/prometheus/common v0.33.0 h1:rHgav/0a6+uYgGdNt3jwz8FNSesO/Hsang3O0T9A5SE= -github.com/prometheus/common v0.33.0/go.mod h1:gB3sOl7P0TvJabZpLY5uQMpUqRCPPCyRLCZYc7JZTNE= -github.com/prometheus/procfs v0.0.0-20180725123919-05ee40e3a273/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/common v0.37.0 h1:ccBbHCgIiT9uSoFY0vX8H3zsNR5eLt17/RQLUvn8pXE= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= -github.com/prometheus/procfs v0.0.5/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= -github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= -github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/procfs v0.7.3 h1:4jVXhlkAyzOScmCkXBTOLRLTz8EeU+eyjrwB/EPq0VU= -github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= +github.com/prometheus/procfs v0.8.0 h1:ODq8ZFEaYeCaZOJlZZdJA2AbQR98dSHSM1KW/You5mo= github.com/prometheus/tsdb v0.6.2-0.20190402121629-4f204dcbc150/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= -github.com/psiemens/graceland v1.0.0/go.mod h1:1Tof+vt1LbmcZFE0lzgdwMN0QBymAChG3FRgDx8XisU= -github.com/psiemens/sconfig v0.0.0-20190623041652-6e01eb1354fc/go.mod h1:+MLKqdledP/8G3rOBpknbLh0IclCf4WneJUtS26JB2U= github.com/psiemens/sconfig v0.1.0 h1:xfWqW+TRpih7mXZIqKYTmpRhlZLQ1kbxV8EjllPv76s= github.com/psiemens/sconfig v0.1.0/go.mod h1:+MLKqdledP/8G3rOBpknbLh0IclCf4WneJUtS26JB2U= -github.com/raulk/clock v1.1.0/go.mod h1:3MpVxdZ/ODBQDxbN+kzshf5OSZwPjtMDx6BBXBmOeY0= -github.com/raulk/go-watchdog v1.2.0/go.mod h1:lzSbAl5sh4rtI8tYHU01BWIDzgzqaQLj6RcA1i4mlqI= github.com/raviqqe/hamt v0.0.0-20190615202029-864fb7caef85/go.mod h1:I9elsTaXMhu41qARmzefHy7v2KmAV2TB1yH4E+nBSf0= -github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= -github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= -github.com/rivo/uniseg v0.2.1-0.20211004051800-57c86be7915a h1:s7GrsqeorVkFR1vGmQ6WVL9nup0eyQCC+YVUeSQLH/Q= -github.com/rivo/uniseg v0.2.1-0.20211004051800-57c86be7915a/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= +github.com/rivo/uniseg v0.4.3 h1:utMvzDsuh3suAEnhH0RdHmoPbU648o6CvXxTx4SBMOw= +github.com/rivo/uniseg v0.4.3/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= github.com/rjeczalik/notify v0.9.1/go.mod h1:rKwnCoCGeuQnwBtTSPL9Dad03Vh2n40ePRrjvIXnJho= github.com/robertkrimen/otto v0.0.0-20170205013659-6a77b7cbc37d/go.mod h1:xvqspoSXJTIpemEonrMDFq6XzwHYYgToXWj5eRX1OtY= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/rogpeppe/go-internal v1.8.0 h1:FCbCCtXNOY3UtUuHUYaghJg4y7Fd14rXifAYUAtL9R8= -github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE= github.com/rs/cors v0.0.0-20160617231935-a62a804a8a00/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= -github.com/rs/cors v1.8.0/go.mod h1:EBwu+T5AvHOcXwvZIkQFjUN6s8Czyqw12GL/Y0tUyRM= github.com/rs/xhandler v0.0.0-20160618193221-ed27b6fd6521/go.mod h1:RvLn4FgxWubrpZHtQLnOf6EwhN2hEMusxZOhcW9H3UQ= -github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= -github.com/rs/xid v1.3.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= -github.com/rs/zerolog v1.19.0/go.mod h1:IzD0RJ65iWH0w97OQQebJEvTZYvsCUm9WVLWBQrJRjo= -github.com/rs/zerolog v1.26.1 h1:/ihwxqH+4z8UxyI70wM1z9yCvkWcfz/a3mj48k/Zngc= -github.com/rs/zerolog v1.26.1/go.mod h1:/wSSJWX7lVrsOwlbyTRSOJvqRlc+WjWlfes+CiJ+tmc= +github.com/rs/xid v1.4.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= +github.com/rs/zerolog v1.28.0 h1:MirSo27VyNi7RJYP3078AA1+Cyzd2GB66qy3aUHvsWY= +github.com/rs/zerolog v1.28.0/go.mod h1:NILgTygv/Uej1ra5XxGf82ZFSLk58MFGAUS2o6usyD0= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/sagikazarmark/crypt v0.3.0/go.mod h1:uD/D+6UF4SrIR1uGEv7bBNkNqLGqUr43MRiaGWX1Nig= -github.com/sagikazarmark/crypt v0.4.0/go.mod h1:ALv2SRj7GxYV4HO9elxH9nS6M9gW+xDNxqmyJ6RfDFM= -github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= -github.com/schollz/progressbar/v3 v3.7.6/go.mod h1:Y9mmL2knZj3LUaBDyBEzFdPrymIr08hnlFMZmfxwbx4= -github.com/schollz/progressbar/v3 v3.8.3/go.mod h1:pWnVCjSBZsT2X3nx9HfRdnCDrpbevliMeoEVhStwHko= -github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= +github.com/schollz/progressbar/v3 v3.8.3 h1:FnLGl3ewlDUP+YdSwveXBaXs053Mem/du+wr7XSYKl8= github.com/segmentio/fasthash v1.0.1/go.mod h1:tm/wZFQ8e24NYaBGIlnO2WGCAi67re4HHuOm0sftE/M= github.com/segmentio/fasthash v1.0.2/go.mod h1:waKX8l2N8yckOgmSsXJi7x1ZfdKZ4x7KRMzBtS3oedY= -github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= -github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0= github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= -github.com/sethvargo/go-retry v0.1.0/go.mod h1:JzIOdZqQDNpPkQDmcqgtteAcxFLtYpNF/zJCM1ysDg8= -github.com/sethvargo/go-retry v0.2.3 h1:oYlgvIvsju3jNbottWABtbnoLC+GDtLdBHxKWxQm/iU= -github.com/sethvargo/go-retry v0.2.3/go.mod h1:1afjQuvh7s4gflMObvjLPaWgluLLyhA1wmVZ6KLpICw= -github.com/shirou/gopsutil/v3 v3.22.2/go.mod h1:WapW1AOOPlHyXr+yOyw3uYx36enocrtSoSBy0L5vUHY= -github.com/shurcooL/component v0.0.0-20170202220835-f88ec8f54cc4/go.mod h1:XhFIlyj5a1fBNx5aJTbKoIq0mNaPvOagO+HjB3EtxrY= -github.com/shurcooL/events v0.0.0-20181021180414-410e4ca65f48/go.mod h1:5u70Mqkb5O5cxEA8nxTsgrgLehJeAw6Oc4Ab1c/P1HM= -github.com/shurcooL/github_flavored_markdown v0.0.0-20181002035957-2122de532470/go.mod h1:2dOwnU2uBioM+SGy2aZoq1f/Sd1l9OkAeAUvjSyvgU0= -github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= -github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ= -github.com/shurcooL/gofontwoff v0.0.0-20180329035133-29b52fc0a18d/go.mod h1:05UtEgK5zq39gLST6uB0cf3NEHjETfB4Fgr3Gx5R9Vw= -github.com/shurcooL/gopherjslib v0.0.0-20160914041154-feb6d3990c2c/go.mod h1:8d3azKNyqcHP1GaQE/c6dDgjkgSx2BZ4IoEi4F1reUI= -github.com/shurcooL/highlight_diff v0.0.0-20170515013008-09bb4053de1b/go.mod h1:ZpfEhSmds4ytuByIcDnOLkTHGUI6KNqRNPDLHDk+mUU= -github.com/shurcooL/highlight_go v0.0.0-20181028180052-98c3abbbae20/go.mod h1:UDKB5a1T23gOMUJrI+uSuH0VRDStOiUVSjBTRDVBVag= -github.com/shurcooL/home v0.0.0-20181020052607-80b7ffcb30f9/go.mod h1:+rgNQw2P9ARFAs37qieuu7ohDNQ3gds9msbT2yn85sg= -github.com/shurcooL/htmlg v0.0.0-20170918183704-d01228ac9e50/go.mod h1:zPn1wHpTIePGnXSHpsVPWEktKXHr6+SS6x/IKRb7cpw= -github.com/shurcooL/httperror v0.0.0-20170206035902-86b7830d14cc/go.mod h1:aYMfkZ6DWSJPJ6c4Wwz3QtW22G7mf/PEgaB9k/ik5+Y= -github.com/shurcooL/httpfs v0.0.0-20171119174359-809beceb2371/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg= -github.com/shurcooL/httpgzip v0.0.0-20180522190206-b1c53ac65af9/go.mod h1:919LwcH0M7/W4fcZ0/jy0qGght1GIhqyS/EgWGH2j5Q= -github.com/shurcooL/issues v0.0.0-20181008053335-6292fdc1e191/go.mod h1:e2qWDig5bLteJ4fwvDAc2NHzqFEthkqn7aOZAOpj+PQ= -github.com/shurcooL/issuesapp v0.0.0-20180602232740-048589ce2241/go.mod h1:NPpHK2TI7iSaM0buivtFUc9offApnI0Alt/K8hcHy0I= -github.com/shurcooL/notifications v0.0.0-20181007000457-627ab5aea122/go.mod h1:b5uSkrEVM1jQUspwbixRBhaIjIzL2xazXp6kntxYle0= -github.com/shurcooL/octicon v0.0.0-20181028054416-fa4f57f9efb2/go.mod h1:eWdoE5JD4R5UVWDucdOPg1g2fqQRq78IQa9zlOV1vpQ= -github.com/shurcooL/reactions v0.0.0-20181006231557-f2e0b4ca5b82/go.mod h1:TCR1lToEk4d2s07G3XGfz2QrgHXg4RJBvjrOozvoWfk= -github.com/shurcooL/sanitized_anchor_name v0.0.0-20170918181015-86672fcb3f95/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/sergi/go-diff v1.3.1 h1:xkr+Oxo4BOQKmkn/B9eMK0g5Kg/983T9DqqPHwYqD+8= +github.com/sergi/go-diff v1.3.1/go.mod h1:aMJSSKb2lpPvRNec0+w3fl7LP9IOFzdc9Pa4NFbPK1I= +github.com/sethvargo/go-retry v0.2.4 h1:T+jHEQy/zKJf5s95UkguisicE0zuF9y7+/vgz08Ocec= +github.com/sethvargo/go-retry v0.2.4/go.mod h1:1afjQuvh7s4gflMObvjLPaWgluLLyhA1wmVZ6KLpICw= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= -github.com/shurcooL/users v0.0.0-20180125191416-49c67e49c537/go.mod h1:QJTqeLYEDaXHZDBsXlPCDqdhQuJkuw4NOtaxYe3xii4= -github.com/shurcooL/webdavfs v0.0.0-20170829043945-18c3829fa133/go.mod h1:hKmq5kWdCj2z2KEozexVbfEZIWiTjhE0+UjmZgPqehw= -github.com/sirupsen/logrus v1.0.4-0.20170822132746-89742aefa4b2/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= -github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= -github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE= -github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -github.com/smartystreets/assertions v1.0.0/go.mod h1:kHHU4qYBaI3q23Pp3VPrmWhuIUrLW/7eUrw0BU5VaoM= -github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= -github.com/smola/gocompat v0.2.0/go.mod h1:1B0MlxbmoZNo3h8guHp8HztB3BSYR5itql9qtVc0ypY= +github.com/skeema/knownhosts v1.1.0 h1:Wvr9V0MxhjRbl3f9nMnKnFfiWTJmtECJ9Njkea3ysW0= +github.com/skeema/knownhosts v1.1.0/go.mod h1:sKFq3RD6/TKZkSWn8boUbDC7Qkgcv+8XXijpFO6roag= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= -github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= -github.com/sourcegraph/annotate v0.0.0-20160123013949-f4cad6c6324d/go.mod h1:UdhH50NIW0fCiwBSr0co2m7BnFLdv4fQTgdqdJTHFeE= -github.com/sourcegraph/syntaxhighlight v0.0.0-20170531221838-bd320f5d308e/go.mod h1:HuIsMU8RRBOtsCgI77wP899iHVBQpCmg4ErYMZB+2IA= -github.com/spacemonkeygo/openssl v0.0.0-20181017203307-c2dcc5cca94a/go.mod h1:7AyxJNCJ7SBZ1MfVQCWD6Uqo2oubI2Eq2y2eqf+A5r0= github.com/spacemonkeygo/spacelog v0.0.0-20180420211403-2296661a0572 h1:RC6RW7j+1+HkWaX/Yh71Ee5ZHaHYt7ZP4sQgUrm6cDU= github.com/spacemonkeygo/spacelog v0.0.0-20180420211403-2296661a0572/go.mod h1:w0SWMsp6j9O/dk4/ZpIhL+3CkG8ofA2vuv7k+ltqUMc= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= @@ -1541,113 +622,68 @@ github.com/spaolacci/murmur3 v1.0.1-0.20190317074736-539464a789e9/go.mod h1:JwIa github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4= -github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= -github.com/spf13/afero v1.8.0 h1:5MmtuhAgYeU6qpa7w7bP0dv6MBYuup0vekhSpSkoq60= -github.com/spf13/afero v1.8.0/go.mod h1:CtAatgMJh6bJEIs48Ay/FOnkljP3WeGUG0MC1RfAqwo= +github.com/spf13/afero v1.9.3 h1:41FoI0fD7OR7mGcKE/aOiLkGreyf8ifIOQmJANWogMk= +github.com/spf13/afero v1.9.3/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cast v1.4.1 h1:s0hze+J0196ZfEMTs80N7UlFt0BDuQ7Q+JDnHiMWKdA= -github.com/spf13/cast v1.4.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cobra v0.0.2-0.20171109065643-2da4a54c5cee/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= +github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w= +github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= -github.com/spf13/cobra v0.0.6/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= -github.com/spf13/cobra v1.1.3/go.mod h1:pGADOWyqRD/YMrPZigI/zbliZ2wVD/23d+is3pSWzOo= -github.com/spf13/cobra v1.3.0 h1:R7cSvGu+Vv+qX0gW5R/85dx2kmmJT5z5NM8ifdYjdn0= -github.com/spf13/cobra v1.3.0/go.mod h1:BrRVncBjOJa/eUcVVm9CE+oC6as8k+VYr4NY7WCi9V4= +github.com/spf13/cobra v1.6.1 h1:o94oiPyS4KD1mPy2fmcYYHHfCxLqYjJOhGsCHFZtEzA= +github.com/spf13/cobra v1.6.1/go.mod h1:IOw/AERYS7UzyrGinqmz6HLUo219MORXGxhbaJUqzrY= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= -github.com/spf13/pflag v1.0.1-0.20171106142849-4c012f6dcd95/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= -github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= -github.com/spf13/viper v1.10.0/go.mod h1:SoyBPwAtKDzypXNDFKN5kzH7ppppbGZtls1UpIy5AsM= -github.com/spf13/viper v1.10.1 h1:nuJZuYpG7gTj/XqiUwg8bA0cp1+M2mC3J4g5luUYBKk= -github.com/spf13/viper v1.10.1/go.mod h1:IGlFPqhNAPKRxohIzWpI5QEy4kuI7tcl5WvR+8qy1rU= -github.com/src-d/envconfig v1.0.0/go.mod h1:Q9YQZ7BKITldTBnoxsE5gOeB5y66RyPXeue/R4aaNBc= +github.com/spf13/viper v1.15.0 h1:js3yy885G8xwJa6iOISGFwd+qlUo5AvyXb7CiihdtiU= +github.com/spf13/viper v1.15.0/go.mod h1:fFcTBJxvhhzSJiZy8n+PeW6t8l+KeT/uTARa0jHOQLA= github.com/status-im/keycard-go v0.0.0-20190316090335-8537d3370df4/go.mod h1:RZLeN1LMWmRsyYjvAu+I6Dm9QmlDaIIt+Y+4Kd7Tp+Q= github.com/steakknife/bloomfilter v0.0.0-20180922174646-6819c0d2a570/go.mod h1:8OR4w3TdeIHIh1g6EMY5p0gVNOovcWC+1vpc7naMuAw= github.com/steakknife/hamming v0.0.0-20180906055917-c99c65617cd3/go.mod h1:hpGUWaI9xL8pRQCTXQgocU38Qw1g0Us7n5PxxTwTCYU= -github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= -github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= -github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.2.0 h1:Hbg2NidpLE8veEBkEZTL3CvlkUIVzuU9jDplZO54c48= -github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.1-0.20210824115523-ab6dc3262822/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.1 h1:5TQK59W5E3v0r2duFAb7P95B6hEeOyEnHRa8MjYSMTY= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= -github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= -github.com/supranational/blst v0.3.4 h1:iZE9lBMoywK2uy2U/5hDOvobQk9FnOQ2wNlu9GmRCoA= -github.com/supranational/blst v0.3.4/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3/j+w+fVonLw= -github.com/syndtr/gocapability v0.0.0-20170704070218-db04d3cc01c8/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= -github.com/syndtr/goleveldb v1.0.0/go.mod h1:ZVVdQEZoIme9iO1Ch2Jdy24qqXrMMOU6lpPAyBWyWuQ= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/subosito/gotenv v1.4.2 h1:X1TuBLAMDFbaTAChgCBLu3DU3UPyELpnF2jjJ2cz/S8= +github.com/subosito/gotenv v1.4.2/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= +github.com/supranational/blst v0.3.10 h1:CMciDZ/h4pXDDXQASe8ZGTNKUiVNxVVA5hpci2Uuhuk= github.com/syndtr/goleveldb v1.0.1-0.20190923125748-758128399b1d/go.mod h1:9OrXJhf154huy1nPWmuSrkgjPUtUNhA+Zmy+6AESzuA= -github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cbyO7IOYJZWg1U88JhDg3PB6klq9Hg2pA= -github.com/tklauser/go-sysconf v0.3.9/go.mod h1:11DU/5sG7UexIrp/O6g35hrWzu0JxlwQ3LSFUzyeuhs= -github.com/tklauser/numcpus v0.3.0/go.mod h1:yFGUr7TUHQRAhyqBcEg0Ge34zDBAsIvJJcyE6boqnA8= -github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/texttheater/golang-levenshtein/levenshtein v0.0.0-20200805054039-cae8b0eaed6c h1:HelZ2kAFadG0La9d+4htN4HzQ68Bm2iM9qKMSMES6xg= +github.com/texttheater/golang-levenshtein/levenshtein v0.0.0-20200805054039-cae8b0eaed6c/go.mod h1:JlzghshsemAMDGZLytTFY8C1JQxQPhnatWqNwUXjggo= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/turbolent/prettier v0.0.0-20210613180524-3a3f5a5b49ba h1:GPg+SVJURgCt6b4IwuRQupixdBM+KzjXPGvawnaQ15E= -github.com/turbolent/prettier v0.0.0-20210613180524-3a3f5a5b49ba/go.mod h1:Nlx5Y115XQvNcIdIy7dZXaNSUpzwBSge4/Ivk93/Yog= -github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= +github.com/turbolent/prettier v0.0.0-20220320183459-661cc755135d h1:5JInRQbk5UBX8JfUvKh2oYTLMVwj3p6n+wapDDm7hko= +github.com/turbolent/prettier v0.0.0-20220320183459-661cc755135d/go.mod h1:Nlx5Y115XQvNcIdIy7dZXaNSUpzwBSge4/Ivk93/Yog= github.com/tyler-smith/go-bip39 v1.0.1-0.20181017060643-dbb3b84ba2ef/go.mod h1:sJ5fKU0s6JVwZjjcUEX2zFOnvq0ASQ2K9Zr6cf67kNs= -github.com/uber/jaeger-client-go v2.22.1+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= -github.com/uber/jaeger-client-go v2.29.1+incompatible h1:R9ec3zO3sGpzs0abd43Y+fBZRJ9uiH6lXyR/+u6brW4= -github.com/uber/jaeger-client-go v2.29.1+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= -github.com/uber/jaeger-lib v2.3.0+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U= -github.com/uber/jaeger-lib v2.4.0+incompatible h1:fY7QsGQWiCt8pajv4r7JEvmATdCVaWxXbjwyYwsNaLQ= -github.com/uber/jaeger-lib v2.4.0+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= -github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= -github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= -github.com/urfave/cli v0.0.0-20171014202726-7bc6a0acffa5/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= -github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/viant/assertly v0.4.8/go.mod h1:aGifi++jvCrUaklKEKT0BU95igDNaqkvz+49uaYMPRU= -github.com/viant/toolbox v0.24.0/go.mod h1:OxMCG57V0PXuIP2HNQrtJf2CjqdmbrOx5EkMILuUhzM= github.com/vmihailenco/msgpack v4.0.4+incompatible h1:dSLoQfGFAo3F6OoNhwUmLwVgaUXK79GlxNBwueZn0xI= github.com/vmihailenco/msgpack v4.0.4+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= -github.com/vmihailenco/msgpack/v4 v4.3.11 h1:Q47CePddpNGNhk4GCnAx9DDtASi2rasatE0cd26cZoE= -github.com/vmihailenco/msgpack/v4 v4.3.11/go.mod h1:gborTTJjAo/GWTqqRjrLCn9pgNN+NXzzngzBKDPIqw4= -github.com/vmihailenco/tagparser v0.1.1 h1:quXMXlA39OCbd2wAdTsGDlK9RkOk6Wuw+x37wVyIuWY= +github.com/vmihailenco/msgpack/v4 v4.3.12 h1:07s4sz9IReOgdikxLTKNbBdqDMLsjPKXwvCazn8G65U= +github.com/vmihailenco/msgpack/v4 v4.3.12/go.mod h1:gborTTJjAo/GWTqqRjrLCn9pgNN+NXzzngzBKDPIqw4= github.com/vmihailenco/tagparser v0.1.1/go.mod h1:OeAg3pn3UbLjkWt+rN9oFYB6u/cQgqMEUPoW2WPyhdI= -github.com/wangjia184/sortedset v0.0.0-20160527075905-f5d03557ba30/go.mod h1:YkocrP2K2tcw938x9gCOmT5G5eCD6jsTz0SZuyAqwIE= -github.com/warpfork/go-testmark v0.3.0/go.mod h1:jhEf8FVxd+F17juRubpmut64NEG6I2rgkUhlcqqXwE0= -github.com/warpfork/go-wish v0.0.0-20200122115046-b9ea61034e4a/go.mod h1:x6AKhvSSexNrVSrViXSHUEbICjmGXhtgABaHIySUSGw= -github.com/whyrusleeping/go-keyspace v0.0.0-20160322163242-5b898ac5add1/go.mod h1:8UvriyWtv5Q5EOgjHaSseUEdkQfvwFv1I/In/O2M9gc= +github.com/vmihailenco/tagparser v0.1.2 h1:gnjoVuB/kljJ5wICEEOpx98oXMWPLj22G67Vbd1qPqc= +github.com/vmihailenco/tagparser v0.1.2/go.mod h1:OeAg3pn3UbLjkWt+rN9oFYB6u/cQgqMEUPoW2WPyhdI= github.com/whyrusleeping/go-logging v0.0.0-20170515211332-0457bb6b88fc/go.mod h1:bopw91TMyo8J3tvftk8xmU2kPmlrt4nScJQZU2hE5EM= -github.com/whyrusleeping/go-logging v0.0.1/go.mod h1:lDPYj54zutzG1XYfHAhcc7oNXEburHQBn+Iqd4yS4vE= -github.com/whyrusleeping/go-notifier v0.0.0-20170827234753-097c5d47330f/go.mod h1:cZNvX9cFybI01GriPRMXDtczuvUhgbcYr9iCGaNlRv8= -github.com/whyrusleeping/mafmt v1.2.8/go.mod h1:faQJFPbLSxzD9xpA02ttW/tS9vZykNvXwGvqIpk20FA= -github.com/whyrusleeping/mdns v0.0.0-20180901202407-ef14215e6b30/go.mod h1:j4l84WPFclQPj320J9gp0XwNKBb3U0zt5CBqjPp22G4= -github.com/whyrusleeping/mdns v0.0.0-20190826153040-b9b60ed33aa9/go.mod h1:j4l84WPFclQPj320J9gp0XwNKBb3U0zt5CBqjPp22G4= -github.com/whyrusleeping/multiaddr-filter v0.0.0-20160516205228-e903e4adabd7/go.mod h1:X2c0RVCI1eSUFI8eLcY3c0423ykwiUdxLJtkDvruhjI= -github.com/whyrusleeping/timecache v0.0.0-20160911033111-cfcb2f1abfee/go.mod h1:m2aV4LZI4Aez7dP5PMyVKEHhUyEJ/RjmPEDOpDvudHg= github.com/wsddn/go-ecdh v0.0.0-20161211032359-48726bab9208/go.mod h1:IotVbo4F+mw0EzQ08zFqg7pK3FebNXpaMsRy2RT+Ees= -github.com/x-cray/logrus-prefixed-formatter v0.5.2/go.mod h1:2duySbKsL6M18s5GU7VPsoEPHyzalCE06qoARUCeBBE= github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= -github.com/xanzy/ssh-agent v0.3.0 h1:wUMzuKtKilRgBAD1sUb8gOwwRr2FGoBVumcjoOACClI= -github.com/xanzy/ssh-agent v0.3.0/go.mod h1:3s9xbODqPuuhK9JV1R321M/FlMZSBvE5aY6eAcqrDh0= -github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= -github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= -github.com/xeipuuv/gojsonschema v0.0.0-20180618132009-1d523034197f/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4myDekKRoLuqhs= +github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= +github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= @@ -1655,121 +691,77 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -github.com/yusufpapurcu/wmi v1.2.2/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/zeebo/assert v1.1.0 h1:hU1L1vLTHsnO8x8c9KAR5GmM5QscxHg5RNU5z5qbUWY= github.com/zeebo/assert v1.1.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0= -github.com/zeebo/blake3 v0.2.0/go.mod h1:G9pM4qQwjRzF1/v7+vabMj/c5mWpGZ2Wzo3Eb4z0pb4= -github.com/zeebo/blake3 v0.2.2/go.mod h1:TSQ0KjMH+pht+bRyvVooJ1rBpvvngSGaPISafq9MxJk= github.com/zeebo/blake3 v0.2.3 h1:TFoLXsjeXqRNFxSbk35Dk4YtszE/MQQGK10BH4ptoTg= github.com/zeebo/blake3 v0.2.3/go.mod h1:mjJjZpnsyIVtVgTOSpJ9vmRE4wgDeyt2HU3qXvvKCaQ= -github.com/zeebo/pcg v1.0.0/go.mod h1:09F0S9iiKrwn9rlI5yjLkmrug154/YRW6KnnXVDM/l4= github.com/zeebo/pcg v1.0.1 h1:lyqfGeWiv4ahac6ttHs+I5hwtH/+1mrhlCtVNQM2kHo= github.com/zeebo/pcg v1.0.1/go.mod h1:09F0S9iiKrwn9rlI5yjLkmrug154/YRW6KnnXVDM/l4= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= -go.etcd.io/etcd/api/v3 v3.5.1/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= -go.etcd.io/etcd/client/pkg/v3 v3.5.1/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= -go.etcd.io/etcd/client/v2 v2.305.1/go.mod h1:pMEacxZW7o8pg4CrFE7pquyCJJzZvkvdD2RibOCCCGs= -go.opencensus.io v0.18.0/go.mod h1:vKdFvxhtzZ9onBp9VKHK8z/sRpBMnKAsufL7wlDrCOA= -go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= -go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= -go.opencensus.io v0.22.1/go.mod h1:Ap50jQcDJrx6rB6VgeeFPtuPIf3wMRvRfrfYDO6+BmA= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= -go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= -go.opentelemetry.io/otel v0.20.0/go.mod h1:Y3ugLH2oa81t5QO+Lty+zXf8zC9L26ax4Nzoxm/dooo= -go.opentelemetry.io/otel/metric v0.20.0/go.mod h1:598I5tYlH1vzBjn+BTuhzTCSb/9debfNp6R3s7Pr1eU= -go.opentelemetry.io/otel/oteltest v0.20.0/go.mod h1:L7bgKf9ZB7qCwT9Up7i9/pn0PWIa9FqQ2IQ8LoxiGnw= -go.opentelemetry.io/otel/trace v0.20.0/go.mod h1:6GjCW8zgDjwGHGa6GkyeB8+/5vjT16gUEi0Nf1iBdgw= +go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= +go.opentelemetry.io/otel v1.11.2 h1:YBZcQlsVekzFsFbjygXMOXSs6pialIZxcjfO/mBDmR0= +go.opentelemetry.io/otel v1.11.2/go.mod h1:7p4EUV+AqgdlNV9gL97IgUZiVR3yrFXYo53f9BM3tRI= +go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.11.2 h1:htgM8vZIF8oPSCxa341e3IZ4yr/sKxgu8KZYllByiVY= +go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.11.2/go.mod h1:rqbht/LlhVBgn5+k3M5QK96K5Xb0DvXpMJ5SFQpY6uw= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.11.2 h1:fqR1kli93643au1RKo0Uma3d2aPQKT+WBKfTSBaKbOc= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.11.2/go.mod h1:5Qn6qvgkMsLDX+sYK64rHb1FPhpn0UtxF+ouX1uhyJE= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.11.2 h1:ERwKPn9Aer7Gxsc0+ZlutlH1bEEAUXAUhqm3Y45ABbk= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.11.2/go.mod h1:jWZUM2MWhWCJ9J9xVbRx7tzK1mXKpAlze4CeulycwVY= +go.opentelemetry.io/otel/sdk v1.11.2 h1:GF4JoaEx7iihdMFu30sOyRx52HDHOkl9xQ8SMqNXUiU= +go.opentelemetry.io/otel/sdk v1.11.2/go.mod h1:wZ1WxImwpq+lVRo4vsmSOxdd+xwoUJ6rqyLc3SyX9aU= +go.opentelemetry.io/otel/trace v1.11.2 h1:Xf7hWSF2Glv0DE3MH7fBHvtpSBsjcBUe5MYAmZM/+y0= +go.opentelemetry.io/otel/trace v1.11.2/go.mod h1:4N+yC7QEz7TTsG9BSRLNAa63eg5E06ObSbKPmxQ/pKA= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= -go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.opentelemetry.io/proto/otlp v0.19.0 h1:IVN6GR+mhC4s5yfcTbmzHYODqvWAp3ZedA2SJPI1Nnw= +go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= -go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE= -go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/atomic v1.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ= +go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= go.uber.org/goleak v1.0.0/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= -go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= go.uber.org/goleak v1.1.11-0.20210813005559-691160354723/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= -go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= -go.uber.org/goleak v1.1.12 h1:gZAh5/EyT/HQwlpkCy6wTpqfH9H8Lz8zbm3dZh+OyzA= -go.uber.org/goleak v1.1.12/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= +go.uber.org/goleak v1.2.0 h1:xqgm/S+aQvhWFTtR0XK3Jvg7z8kGV8P4X14IzwN3Eqk= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= -go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= -go.uber.org/multierr v1.7.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak= -go.uber.org/multierr v1.8.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak= +go.uber.org/multierr v1.9.0 h1:7fIwc/ZtS0q++VgcfqFDxSBZVv/Xo49/SYnDFupUwlI= +go.uber.org/multierr v1.9.0/go.mod h1:X2jQV1h+kxSjClGpnseKVIxpmcjrj7MNnI0bnlfKTVQ= go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= -go.uber.org/zap v1.14.1/go.mod h1:Mb2vm2krFEG5DV0W9qcHBYFtp/Wku1cvYaqPsS/WYfc= -go.uber.org/zap v1.15.0/go.mod h1:Mb2vm2krFEG5DV0W9qcHBYFtp/Wku1cvYaqPsS/WYfc= go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ= -go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= -go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= -go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI= -go.uber.org/zap v1.21.0/go.mod h1:wjWOCqI0f2ZZrJF/UufIOkiC8ii6tm1iqIsLo76RfJw= -go4.org v0.0.0-20180809161055-417644f6feb5/go.mod h1:MkTOUMDaeVYJUOUsaDXIhWPZYa1yOyC1qaOBpL57BhE= -golang.org/x/build v0.0.0-20190111050920-041ab4dc3f9d/go.mod h1:OWs+y06UdEOHN4y+MfF/py+xQ/tYqIWW03b70/CG9Rw= -golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20171113213409-9f005a07e0d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60= +go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181030102418-4d3f4d9ffa16/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190219172222-a4c6cb3142f2/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190225124518-7f87c0fbb88b/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190313024323-a1f597ede03a/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190513172903-22d7a77e9e5f/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190530122614-20be4c3c3ed5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190618222545-ea8f1a30c443/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200115085410-6d4e4cb37c7d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200117160349-530e935923ad/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200221231518-2aa609cf4a9d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200311171314-f7b00557c8c4/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200423211502-4bdfaf469ed5/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200429183012-4b2356b1ed79/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200602180216-279210d13fed/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= -golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= -golang.org/x/crypto v0.0.0-20210506145944-38f3c27a63bf/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8= -golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8= -golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20210813211128-0a44fdfbc16e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20211215165025-cf75a172585e/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8= -golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4 h1:kUhD7nTDoI3fVd9G4ORWrbV5NY0liEs/Jg2pv5f+bBA= -golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220826181053-bd7e27e6170d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= +golang.org/x/crypto v0.5.0 h1:U/0M97KRkSFvyD/3FSmdP5W5swImpNgle/EHFhOsQPE= +golang.org/x/crypto v0.5.0/go.mod h1:NK/OQwhpMQP3MwtdjgLlYHnH9ebylxKWv3e0fK+mkQU= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= @@ -1779,10 +771,10 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= +golang.org/x/exp v0.0.0-20230125213027-672c09215c38 h1:EyNO+6YHkRoTFWQaeKajXuyPCxKHSyJqMKQOAjQAFqs= +golang.org/x/exp v0.0.0-20230125213027-672c09215c38/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -1794,7 +786,6 @@ golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRu golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= @@ -1806,38 +797,26 @@ golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= -golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3 h1:kQgndtyPBW/JIYERgdxfwMYh3AVStj88WQTlNDi2a+o= -golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= -golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.7.0 h1:LapD9S96VoQRhi/GrNTqeBJFrUjs5UHCAtTlgwA5oZA= +golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181011144130-49bb7cea24b1/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181029044818-c44066c5c816/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181106065722-10aee1819953/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190227160552-c95aed5357e7/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190313220215-9f648a60d977/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= -golang.org/x/net v0.0.0-20190611141213-3f473d35a33a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -1848,39 +827,23 @@ golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/ golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200904194848-62affa334b73/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= -golang.org/x/net v0.0.0-20210326060303-6b1517762897/go.mod h1:uSPa2vr4CLtc/ILN5odXGNXS6mhrKVzTaCXzk9m6W3k= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20210410081132-afb366fc7cd1/go.mod h1:9tjilg8BloeKEkVJvy7fQ90B1CfIiPueXVOjqfkSzI8= -golang.org/x/net v0.0.0-20210423184538-5f58ad60dda6/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= -golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= -golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210726213435-c6fcb2dbf985/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220418201149-a630d4f3e7a2 h1:6mzvA99KwZxbOrxww4EvWVQUnN1+xEu9tafK5ZxkYeA= -golang.org/x/net v0.0.0-20220418201149-a630d4f3e7a2/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220826154423-83b083e8dc8b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= +golang.org/x/net v0.5.0 h1:GyT4nK/YDHSqa1c4753ouYCDajOYKTja9Xb/OHtgvSw= +golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1889,17 +852,8 @@ golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210615190721-d04028783cf1/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20211005180243-6b3c2da341f1/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/perf v0.0.0-20180704124530-6e6d33e29852/go.mod h1:JLpeXjPJfIyPr5TlbXLkXWLhP8nz10XfvxElABhCtcw= +golang.org/x/oauth2 v0.3.0 h1:6l90koy8/LaBLmLu8jpHeHexzMwEita0zFfYlggy2F8= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1911,60 +865,36 @@ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20180810173357-98c5dad5d1a0/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181029174526-d69651ed3497/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190219092855-153ac476189d/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190228124157-a34e9553db1e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190316082340-a2f829d7f35f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190405154228-4b34438f7a67/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190514135907-3a4b5fb9f71f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190526052359-791d8a0f4d09/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190602015325-4c4f7f33c9ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190610200419-93c9922d18ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190712062909-fae7ac547cb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191206220618-eeba5f6aabab/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191210023423-ac6580df4449/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200107162124-548cf772de50/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1975,77 +905,43 @@ golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200501145240-bc7a7d42d5c3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200602225109-6fdc65e7d980/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200828194041-157a740278f4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200909081042-eff7692f9009/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200918174421-af09f7315aff/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201008064518-c1f3e3309c71/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201014080544-cc95f250f6bc/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201214210602-f9fddec55a1e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210223095934-7937bea0104d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210309074719-68d13333faf2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210317225723-c4fcb01b228e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210426080607-c94f62235c83/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210502180810-71e4cd670f79/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210511113859-b0526f3d8744/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210816074244-15123e1e1f71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210816183151-1e6c022a8912/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210910150752-751e447fb3d0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211025112917-711f33c9992c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211205182925-97ca703d548d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220111092808-5a964db01320/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220412211240-33da011f77ad h1:ntjMns5wyP/fN65tdBD4g8J5w8n015+iIIs9rtjXkY0= -golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220825204002-c680a09ffe64/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.4.0 h1:Zr2JFtRQNX3BCZ8YtxRE9hNJYC8J6I1MVbMg6owUp18= +golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.0.0-20220722155259-a9ba230a4035/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= +golang.org/x/term v0.4.0 h1:O7UWfv5+A2qiuulQk30kVinPoMtoIPeVaKLEgLpVkvg= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -2054,52 +950,39 @@ golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.6.0 h1:3XmdazWV+ubf7QgHSTWeykHOci5oeekaGJBLkrkaw4k= +golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181030000716-a0a13e073c7b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181130052023-1c3d964395ce/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190606050223-4d9ae51c2468/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190828213141-aed303cbaa74/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191216052735-49a3e744a425/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= @@ -2120,42 +1003,25 @@ golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roY golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200828161849-5deb26317202/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= -golang.org/x/tools v0.0.0-20201020161133-226fd2f889ca/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= -golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.6-0.20210726203631-07bc1bf47fb2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.7/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo= -golang.org/x/tools v0.1.10 h1:QjFRCZxdOhBJ/UNgnBZLbNV13DlbnK0quyivTnXJM20= -golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.5.0 h1:+bSpV5HIeWkuvgaMfI3UmKRThoTA5ODJTUd8T17NO+4= +golang.org/x/tools v0.5.0/go.mod h1:N+Kgy78s5I24c24dU8OfWNEotWjutIs8SnJvn5IDq+k= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f h1:GGU+dLjvlC3qDwqYgL6UgRmHXhOOgns0bZu2Ty5mm6U= -golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= -gonum.org/v1/gonum v0.6.1/go.mod h1:9mxDZsDKxgMAuccQkewq682L+0eCu4dCN2yonUJTCLU= +golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= +golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= gonum.org/v1/gonum v0.8.2 h1:CCXrcPKiGGotvnN6jfUsKk4rRqm7q09/YbKb5xCEvtM= -gonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0= -gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= -gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc= -google.golang.org/api v0.0.0-20180910000450-7ca32eb868bf/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= -google.golang.org/api v0.0.0-20181030000543-1d582fd0359e/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= -google.golang.org/api v0.1.0/go.mod h1:UGEZY7KEX120AnNLIHFMKIo4obdJhkp2tPbaPlQx13Y= -google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= @@ -2172,30 +1038,11 @@ google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0M google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= -google.golang.org/api v0.31.0/go.mod h1:CL+9IBCa2WWU6gRuBWaKqGWLFFwbEUXkfeMkHLQWYWo= google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= -google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= -google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= -google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= -google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= -google.golang.org/api v0.49.0/go.mod h1:BECiH72wsfwUvOVn3+btPD5WHi0LzavZReBndi42L18= -google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= -google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU= -google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= -google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= -google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= -google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= -google.golang.org/api v0.59.0/go.mod h1:sT2boj7M9YJxZzgeZqXogmhfmRWDtPzT31xkieUbuZU= -google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= -google.golang.org/api v0.62.0/go.mod h1:dKmwPCydfsad4qCH08MSdgWjfHOyfpd4VtDGgRFdavw= -google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo= -google.golang.org/api v0.67.0/go.mod h1:ShHKP8E60yPsKNw/w8w+VYaj9H6buA5UqDp8dhbQZ6g= -google.golang.org/api v0.70.0/go.mod h1:Bs4ZM2HGifEvXwd50TtW70ovgJffJYw2oRCOFU/SkfA= +google.golang.org/api v0.107.0 h1:I2SlFjD8ZWabaIFOfeEDg3pf0BHJDh6iYQ1ic3Yu/UU= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= -google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.3.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= @@ -2204,15 +1051,10 @@ google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCID google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20181029155118-b69ba1387ce2/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20181202183823-bd91e49a0898/go.mod h1:7Ep/1NZk928CDR8SjdVbjWNpdIf6nzjE3BTgJDr2Atg= -google.golang.org/genproto v0.0.0-20190306203927-b5d61aea6440/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= @@ -2238,68 +1080,26 @@ google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7Fc google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200831141814-d751682dd103/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= -google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= -google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210617175327-b9e0b3197ced/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= -google.golang.org/genproto v0.0.0-20210624174822-c5cf32407d0a/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= -google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= -google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= -google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= -google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= -google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210921142501-181ce0d877f6/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211008145708-270636b82663/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211028162531-8db9c33dc351/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211129164237-f09f9a12af12/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211203200212-54befc351ae9/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220126215142-9970aeb2e350/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220207164111-0872dc986b00/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220218161850-94dd64e39d7c/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220222213610-43724f9ea8cf h1:SVYXkUz2yZS9FWb2Gm8ivSlbNQzL2Z/NpPKE3RG2jWk= -google.golang.org/genproto v0.0.0-20220222213610-43724f9ea8cf/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= -google.golang.org/grpc v1.16.0/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9MZMio= -google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= +google.golang.org/genproto v0.0.0-20230125152338-dcaf20b6aeaa h1:qQPhfbPO23fwm/9lQr91L1u62Zo6cm+zI+slZT+uf+o= +google.golang.org/genproto v0.0.0-20230125152338-dcaf20b6aeaa/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= -google.golang.org/grpc v1.28.1/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= @@ -2309,20 +1109,10 @@ google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= -google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= -google.golang.org/grpc v1.43.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= -google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= -google.golang.org/grpc v1.45.0 h1:NEpgUqV3Z+ZjkqMsxMg11IaDrXY4RY6CQukSGK0uI1M= -google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= -google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= +google.golang.org/grpc v1.52.3 h1:pf7sOysg4LdgBqduXveGKrcEwbStiK2rtfghdzlUYDQ= +google.golang.org/grpc v1.52.3/go.mod h1:pu6fVzoFb+NBYNAvQL08ic+lvB2IojljRYuun5vorUY= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -2336,9 +1126,8 @@ google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlba google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.28.0 h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw= -google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U= +google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w= +google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -2346,24 +1135,15 @@ gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= -gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= -gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= -gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2/go.mod h1:Xk6kEKp8OKb+X14hQBKWaSkCsqBpgog8nAV2xsGOxlo= -gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE= -gopkg.in/go-playground/validator.v9 v9.29.1/go.mod h1:+c9/zcJMFNgbLvly1L1V+PpxWdVbfP1avr/N00E2vyQ= -gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= -gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/ini.v1 v1.66.2 h1:XfR1dOYubytKy4Shzc2LHrrGhU0lDCfDGG1yLPmpgsI= -gopkg.in/ini.v1 v1.66.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= +gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce/go.mod h1:5AcXVHNjg+BDxry382+8OKon8SEWiKktQR07RKPsv1c= gopkg.in/olebedev/go-duktape.v3 v3.0.0-20190213234257-ec84240a7772/go.mod h1:uAJfkITjFhyEEuUfm7bsmCZRbW5WRq8s9EY8HZ6hCns= gopkg.in/olebedev/go-duktape.v3 v3.0.0-20200316214253-d7b0ff38cac9/go.mod h1:uAJfkITjFhyEEuUfm7bsmCZRbW5WRq8s9EY8HZ6hCns= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/sourcemap.v1 v1.0.5/go.mod h1:2RlvNNSMglmRrcvhfuzp4hQHwOtjxlbjX7UPY/GXb78= -gopkg.in/src-d/go-cli.v0 v0.0.0-20181105080154-d492247bbc0d/go.mod h1:z+K8VcOYVYcSwSjGebuDL6176A1XskgbtNl64NSg+n8= -gopkg.in/src-d/go-log.v1 v1.0.1/go.mod h1:GN34hKP0g305ysm2/hctJ0Y8nWP3zxXXJ8GFabTyABE= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/urfave/cli.v1 v1.20.0/go.mod h1:vuBzUtMdQeixQj8LVd+/98pzhxNGQoyuPBlsXHOQNO0= gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= @@ -2373,19 +1153,15 @@ gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= -grpc.go4.org v0.0.0-20170609214715-11d0a25b4919/go.mod h1:77eQGdRu53HpSqPFJFmuJdjuHRquDANNeA4x7B8WQ9o= -honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= @@ -2393,17 +1169,9 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -k8s.io/kubernetes v1.13.0/go.mod h1:ocZa8+6APFNC2tX1DZASIbocyYT5jHzqFVsY5aoB7Jk= -lukechampine.com/blake3 v1.1.6/go.mod h1:tkKEOtDkNtklkXtLNEOGNq5tcV90tJiA1vAA12R78LA= lukechampine.com/blake3 v1.1.7 h1:GgRMhmdsuK8+ii6UZFDL8Nb+VyMwadAgcJyfYHxG6n0= lukechampine.com/blake3 v1.1.7/go.mod h1:tkKEOtDkNtklkXtLNEOGNq5tcV90tJiA1vAA12R78LA= pgregory.net/rapid v0.4.7 h1:MTNRktPuv5FNqOO151TM9mDTa+XHcX6ypYeISDVD14g= -pgregory.net/rapid v0.4.7/go.mod h1:UYpPVyjFHzYBGHIxLFoupi8vwk6rXNzRY9OMvVxFIOU= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= -rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= -sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= -sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= -sourcegraph.com/sourcegraph/go-diff v0.5.0/go.mod h1:kuch7UrkMzY0X+p9CRK03kfuPQ2zzQcaEFbx8wA8rck= -sourcegraph.com/sqs/pbtypes v0.0.0-20180604144634-d3ebe8f20ae4/go.mod h1:ketZ/q3QxT9HOBeFhu6RdvsftgpsbFHBF5Cas6cDKZ0= diff --git a/lib/go/test/locking_test.go b/lib/go/test/locking_test.go index ca1b2243..508d14a8 100644 --- a/lib/go/test/locking_test.go +++ b/lib/go/test/locking_test.go @@ -1,6 +1,11 @@ package test import ( + "fmt" + "strings" + "testing" + "time" + "github.com/dapperlabs/nba-smart-contracts/lib/go/contracts" "github.com/dapperlabs/nba-smart-contracts/lib/go/templates" "github.com/onflow/cadence" @@ -12,9 +17,6 @@ import ( sdktemplates "github.com/onflow/flow-go-sdk/templates" "github.com/onflow/flow-go-sdk/test" "github.com/stretchr/testify/assert" - "strings" - "testing" - "time" ) const CadenceUFix64Factor = 100000000 @@ -66,8 +68,10 @@ func TestTopShotLocking(t *testing.T) { }) env.TopShotLockingAddress = topShotLockingAddr.String() + topShotRoyaltyAddr, err := b.CreateAccount([]*flow.AccountKey{lockingKey}, []sdktemplates.Contract{}) + // Deploy the topshot contract - topshotCode := contracts.GenerateTopShotContract(nftAddr.String(), metadataViewsAddr.String(), topShotLockingAddr.String()) + topshotCode := contracts.GenerateTopShotContract(defaultfungibleTokenAddr, nftAddr.String(), metadataViewsAddr.String(), topShotLockingAddr.String(), topShotRoyaltyAddr.String(), Network) topshotAccountKey, topshotSigner := accountKeys.NewWithSigner() topshotAddr, _ := b.CreateAccount([]*flow.AccountKey{topshotAccountKey}, []sdktemplates.Contract{ { @@ -103,13 +107,14 @@ func TestTopShotLocking(t *testing.T) { env.TopShotMarketAddress = marketAddr.String() // Should be able to deploy the third market contract - marketV3Code := contracts.GenerateTopShotMarketV3Contract(defaultfungibleTokenAddr, nftAddr.String(), topshotAddr.String(), marketAddr.String(), env.DUCAddress, topShotLockingAddr.String()) + marketV3Code := contracts.GenerateTopShotMarketV3Contract(defaultfungibleTokenAddr, nftAddr.String(), topshotAddr.String(), marketAddr.String(), env.DUCAddress, topShotLockingAddr.String(), metadataViewsAddr.String()) marketV3Addr, err := b.CreateAccount(nil, []sdktemplates.Contract{ { Name: "TopShotMarketV3", Source: string(marketV3Code), }, }) + assert.NoError(t, err) env.TopShotMarketV3Address = marketV3Addr.String() firstName := CadenceString("FullName") @@ -461,7 +466,7 @@ func TestTopShotLocking(t *testing.T) { t.Run("Should not be able to lock a non-TopShot.NFT", func(t *testing.T) { // Deploy a copy of the TopShot to a new address contract - fakeTopshotCode := contracts.GenerateTopShotContract(nftAddr.String(), metadataViewsAddr.String(), topShotLockingAddr.String()) + fakeTopshotCode := contracts.GenerateTopShotContract(defaultfungibleTokenAddr, nftAddr.String(), metadataViewsAddr.String(), topShotLockingAddr.String(), topShotRoyaltyAddr.String(), Network) fakeTopshotAccountKey, fakeTopshotSigner := accountKeys.NewWithSigner() fakeTopshotAddress, _ := b.CreateAccount([]*flow.AccountKey{fakeTopshotAccountKey}, []sdktemplates.Contract{ { @@ -534,4 +539,29 @@ func TestTopShotLocking(t *testing.T) { true, ) }) + + t.Run("Admin should be able to set the expiry of an NFT", func(t *testing.T) { + expectedExpiryTime := time.Now().Add(31536000 * time.Second) + + tx := createTxWithTemplateAndAuthorizer(b, templates.GenerateTopShotLockingAdminSetLockedNFTsExpiryScript(env), topShotLockingAddr) + ids := []cadence.Value{cadence.NewUInt64(momentId)} + _ = tx.AddArgument(cadence.NewArray(ids)) + expectedExpiryString := fmt.Sprintf("%.2f", float64(expectedExpiryTime.Unix())) + expiry, _ := cadence.NewUFix64(expectedExpiryString) + _ = tx.AddArgument(expiry) + + signAndSubmit( + t, b, tx, + []flow.Address{b.ServiceKey().Address, topShotLockingAddr}, []crypto.Signer{serviceKeySigner, lockingSigner}, + false, + ) + + // Verify moment is locked for 1 year + result := executeScriptAndCheck(t, b, templates.GenerateGetMomentLockExpiryScript(env), [][]byte{ + jsoncdc.MustEncode(cadence.Address(topshotAddr)), + jsoncdc.MustEncode(cadence.UInt64(momentId)), + }) + resultTime := time.Unix(int64(result.ToGoValue().(uint64)/CadenceUFix64Factor), 0) + assert.WithinDuration(t, expectedExpiryTime, resultTime, 10*time.Second) + }) } diff --git a/lib/go/test/market_test.go b/lib/go/test/market_test.go index 357505d5..a5c4280f 100644 --- a/lib/go/test/market_test.go +++ b/lib/go/test/market_test.go @@ -77,9 +77,11 @@ func TestMarketDeployment(t *testing.T) { _, err = b.CommitBlock() assert.NoError(t, err) + royaltyAddr, err := b.CreateAccount(nil, []sdktemplates.Contract{}) + // Should be able to deploy the topshot contract // as a new account with no keys. - topshotCode := contracts.GenerateTopShotContract(nftAddr.String(), metadataViewsAddr.String(), topShotLockingAddr.String()) + topshotCode := contracts.GenerateTopShotContract(defaultfungibleTokenAddr, nftAddr.String(), metadataViewsAddr.String(), topShotLockingAddr.String(), royaltyAddr.String(), Network) topshotAddr, err := b.CreateAccount(nil, []sdktemplates.Contract{ { Name: "TopShot", @@ -120,7 +122,7 @@ func TestMarketDeployment(t *testing.T) { _, err = b.CommitBlock() require.NoError(t, err) - marketV3Code := contracts.GenerateTopShotMarketV3Contract(defaultfungibleTokenAddr, nftAddr.String(), topshotAddr.String(), marketAddr.String(), tokenAddr.String(), topShotLockingAddr.String()) + marketV3Code := contracts.GenerateTopShotMarketV3Contract(defaultfungibleTokenAddr, nftAddr.String(), topshotAddr.String(), marketAddr.String(), tokenAddr.String(), topShotLockingAddr.String(), metadataViewsAddr.String()) _, err = b.CreateAccount(nil, []sdktemplates.Contract{ { Name: "TopShotMarketV3", @@ -195,8 +197,10 @@ func TestMarketV1(t *testing.T) { env.TopShotLockingAddress = topShotLockingAddr.String() + royaltyAddr, err := b.CreateAccount(nil, []sdktemplates.Contract{}) + // Should be able to deploy the topshot contract - topshotCode := contracts.GenerateTopShotContract(nftAddr.String(), metadataViewsAddr.String(), topShotLockingAddr.String()) + topshotCode := contracts.GenerateTopShotContract(defaultfungibleTokenAddr, nftAddr.String(), metadataViewsAddr.String(), topShotLockingAddr.String(), royaltyAddr.String(), Network) topshotAccountKey, topshotSigner := accountKeys.NewWithSigner() topshotAddr, err := b.CreateAccount([]*flow.AccountKey{topshotAccountKey}, []sdktemplates.Contract{ { @@ -746,8 +750,10 @@ func TestMarketV3(t *testing.T) { env.TopShotLockingAddress = topShotLockingAddr.String() + royaltyAddr, err := b.CreateAccount(nil, []sdktemplates.Contract{}) + // Should be able to deploy the topshot contract - topshotCode := contracts.GenerateTopShotContract(nftAddr.String(), metadataViewsAddr.String(), topShotLockingAddr.String()) + topshotCode := contracts.GenerateTopShotContract(defaultfungibleTokenAddr, nftAddr.String(), metadataViewsAddr.String(), topShotLockingAddr.String(), royaltyAddr.String(), Network) topshotAccountKey, topshotSigner := accountKeys.NewWithSigner() topshotAddr, err := b.CreateAccount([]*flow.AccountKey{topshotAccountKey}, []sdktemplates.Contract{ { @@ -797,7 +803,7 @@ func TestMarketV3(t *testing.T) { env.TopShotMarketAddress = marketAddr.String() // Should be able to deploy the third market contract - marketV3Code := contracts.GenerateTopShotMarketV3Contract(defaultfungibleTokenAddr, nftAddr.String(), topshotAddr.String(), marketAddr.String(), env.DUCAddress, topShotLockingAddr.String()) + marketV3Code := contracts.GenerateTopShotMarketV3Contract(defaultfungibleTokenAddr, nftAddr.String(), topshotAddr.String(), marketAddr.String(), env.DUCAddress, topShotLockingAddr.String(), metadataViewsAddr.String()) marketV3Addr, err := b.CreateAccount(nil, []sdktemplates.Contract{ { Name: "TopShotMarketV3", diff --git a/lib/go/test/subedition_test.go b/lib/go/test/subedition_test.go new file mode 100644 index 00000000..ecdf821e --- /dev/null +++ b/lib/go/test/subedition_test.go @@ -0,0 +1,720 @@ +package test + +import ( + "testing" + + "github.com/onflow/cadence" + jsoncdc "github.com/onflow/cadence/encoding/json" + + "github.com/dapperlabs/nba-smart-contracts/lib/go/templates" + + "github.com/onflow/flow-go-sdk" + "github.com/onflow/flow-go-sdk/crypto" + "github.com/stretchr/testify/assert" +) + +// This test tests the pure functionality of the smart contract +func TestSubeditions(t *testing.T) { + tb := NewTopShotTestBlockchain(t) + b := tb.Blockchain + env := tb.env + accountKeys := tb.accountKeys + topshotAddr := tb.topshotAdminAddr + serviceKeySigner := tb.serviceKeySigner + topshotSigner := tb.topshotAdminSigner + + // Create a new user account + joshAccountKey, joshSigner := accountKeys.NewWithSigner() + joshAddress, _ := b.CreateAccount([]*flow.AccountKey{joshAccountKey}, nil) + + firstName := CadenceString("FullName") + + lebron := CadenceString("Lebron") + oladipo := CadenceString("Oladipo") + hayward := CadenceString("Hayward") + durant := CadenceString("Durant") + + playType := CadenceString("PlayType") + dunk := CadenceString("Dunk") + + playIDString := CadenceString("PlayID") + setIDString := CadenceString("SetID") + value1 := CadenceString("1") + value3 := CadenceString("3") + subedition111Name := CadenceString("Subedition PlayID:1 SetID:1 SubeditionID: 1") + subedition112Name := CadenceString("Subedition PlayID:1 SetID:1 SubeditionID: 2") + subedition133Name := CadenceString("Subedition PlayID:3 SetID:1 SubeditionID: 3") + subedition134Name := CadenceString("Subedition PlayID:3 SetID:1 SubeditionID: 4") + var result cadence.Value + // Admin sends a transaction to create a play + t.Run("Should be able to create a new Play", func(t *testing.T) { + tx := createTxWithTemplateAndAuthorizer(b, templates.GenerateMintPlayScript(env), topshotAddr) + + metadata := []cadence.KeyValuePair{{Key: firstName, Value: lebron}, {Key: playType, Value: dunk}} + play := cadence.NewDictionary(metadata) + _ = tx.AddArgument(play) + + signAndSubmit( + t, b, tx, + []flow.Address{b.ServiceKey().Address, topshotAddr}, []crypto.Signer{serviceKeySigner, topshotSigner}, + false, + ) + }) + + // Admin sends transactions to create multiple plays + t.Run("Should be able to create multiple new Plays", func(t *testing.T) { + tx := createTxWithTemplateAndAuthorizer(b, templates.GenerateMintPlayScript(env), topshotAddr) + + metadata := []cadence.KeyValuePair{{Key: firstName, Value: oladipo}} + play := cadence.NewDictionary(metadata) + _ = tx.AddArgument(play) + + signAndSubmit( + t, b, tx, + []flow.Address{b.ServiceKey().Address, topshotAddr}, []crypto.Signer{serviceKeySigner, topshotSigner}, + false, + ) + + tx = createTxWithTemplateAndAuthorizer(b, templates.GenerateMintPlayScript(env), topshotAddr) + + metadata = []cadence.KeyValuePair{{Key: firstName, Value: hayward}} + play = cadence.NewDictionary(metadata) + _ = tx.AddArgument(play) + + signAndSubmit( + t, b, tx, + []flow.Address{b.ServiceKey().Address, topshotAddr}, []crypto.Signer{serviceKeySigner, topshotSigner}, + false, + ) + + tx = createTxWithTemplateAndAuthorizer(b, templates.GenerateMintPlayScript(env), topshotAddr) + + metadata = []cadence.KeyValuePair{{Key: firstName, Value: durant}} + play = cadence.NewDictionary(metadata) + _ = tx.AddArgument(play) + + signAndSubmit( + t, b, tx, + []flow.Address{b.ServiceKey().Address, topshotAddr}, []crypto.Signer{serviceKeySigner, topshotSigner}, + false, + ) + + // Check that the return all plays script doesn't fail + // and that we can return metadata about the plays + executeScriptAndCheck(t, b, templates.GenerateGetAllPlaysScript(env), nil) + + result = executeScriptAndCheck(t, b, templates.GenerateGetPlayMetadataFieldScript(env), [][]byte{jsoncdc.MustEncode(cadence.UInt32(1)), jsoncdc.MustEncode(cadence.String("FullName"))}) + assert.Equal(t, CadenceString("Lebron"), result) + }) + + // Admin creates a new Set with the name Genesis + t.Run("Should be able to create a new Set", func(t *testing.T) { + tx := createTxWithTemplateAndAuthorizer(b, templates.GenerateMintSetScript(env), topshotAddr) + + _ = tx.AddArgument(CadenceString("Genesis")) + + signAndSubmit( + t, b, tx, + []flow.Address{b.ServiceKey().Address, topshotAddr}, []crypto.Signer{serviceKeySigner, topshotSigner}, + false, + ) + + // Check that the set name, ID, and series were initialized correctly. + result := executeScriptAndCheck(t, b, templates.GenerateGetSetNameScript(env), [][]byte{jsoncdc.MustEncode(cadence.UInt32(1))}) + assert.Equal(t, CadenceString("Genesis"), result) + + result = executeScriptAndCheck(t, b, templates.GenerateGetSetIDsByNameScript(env), [][]byte{jsoncdc.MustEncode(cadence.String("Genesis"))}) + assert.Equal(t, UInt32Array(1), result) + + result = executeScriptAndCheck(t, b, templates.GenerateGetSetSeriesScript(env), [][]byte{jsoncdc.MustEncode(cadence.UInt32(1))}) + assert.Equal(t, cadence.NewUInt32(0), result) + }) + + t.Run("Should not be able to create set and play data structs that increment the id counter", func(t *testing.T) { + tx := createTxWithTemplateAndAuthorizer(b, templates.GenerateCreateSetandPlayDataScript(env), topshotAddr) + + signAndSubmit( + t, b, tx, + []flow.Address{b.ServiceKey().Address, topshotAddr}, []crypto.Signer{serviceKeySigner, topshotSigner}, + false, + ) + + // Check that the play ID and set ID were not incremented + result = executeScriptAndCheck(t, b, templates.GenerateGetNextPlayIDScript(env), nil) + assert.Equal(t, cadence.NewUInt32(5), result) + + result = executeScriptAndCheck(t, b, templates.GenerateGetNextSetIDScript(env), nil) + assert.Equal(t, cadence.NewUInt32(2), result) + + }) + + // Admin sends a transaction that adds play 1 to the set + t.Run("Should be able to add a play to a Set", func(t *testing.T) { + tx := createTxWithTemplateAndAuthorizer(b, templates.GenerateAddPlayToSetScript(env), topshotAddr) + + _ = tx.AddArgument(cadence.NewUInt32(1)) + _ = tx.AddArgument(cadence.NewUInt32(1)) + + signAndSubmit( + t, b, tx, + []flow.Address{b.ServiceKey().Address, topshotAddr}, []crypto.Signer{serviceKeySigner, topshotSigner}, + false, + ) + }) + + // Admin sends a transaction that adds plays 2 and 3 to the set + t.Run("Should be able to add multiple plays to a Set", func(t *testing.T) { + tx := createTxWithTemplateAndAuthorizer(b, templates.GenerateAddPlaysToSetScript(env), topshotAddr) + + _ = tx.AddArgument(cadence.NewUInt32(1)) + + plays := []cadence.Value{cadence.NewUInt32(2), cadence.NewUInt32(3)} + _ = tx.AddArgument(cadence.NewArray(plays)) + + signAndSubmit( + t, b, tx, + []flow.Address{b.ServiceKey().Address, topshotAddr}, []crypto.Signer{serviceKeySigner, topshotSigner}, + false, + ) + + // Make sure the plays were added correctly and the edition isn't retired or locked + result := executeScriptAndCheck(t, b, templates.GenerateGetPlaysInSetScript(env), [][]byte{jsoncdc.MustEncode(cadence.UInt32(1))}) + playsArray := UInt32Array(1, 2, 3) + assert.Equal(t, playsArray, result) + + result = executeScriptAndCheck(t, b, templates.GenerateGetIsEditionRetiredScript(env), [][]byte{jsoncdc.MustEncode(cadence.UInt32(1)), jsoncdc.MustEncode(cadence.UInt32(1))}) + assert.Equal(t, cadence.NewBool(false), result) + + result = executeScriptAndCheck(t, b, templates.GenerateGetIsSetLockedScript(env), [][]byte{jsoncdc.MustEncode(cadence.UInt32(1))}) + assert.Equal(t, cadence.NewBool(false), result) + + }) + + // Admin sends a transaction that creates a new sharded collection for the admin + t.Run("Should be able to create new sharded moment collection and store it", func(t *testing.T) { + tx := createTxWithTemplateAndAuthorizer(b, templates.GenerateSetupShardedCollectionScript(env), topshotAddr) + + _ = tx.AddArgument(cadence.NewUInt64(32)) + + signAndSubmit( + t, b, tx, + []flow.Address{b.ServiceKey().Address, topshotAddr}, []crypto.Signer{serviceKeySigner, topshotSigner}, + false, + ) + }) + + t.Run("Should be able to create new subedition admin resource", func(t *testing.T) { + tx := createTxWithTemplateAndAuthorizer(b, templates.GenerateCreateNewSubeditionAdminResourceScript(env), topshotAddr) + + signAndSubmit( + t, b, tx, + []flow.Address{b.ServiceKey().Address, topshotAddr}, []crypto.Signer{serviceKeySigner, topshotSigner}, + false, + ) + }) + + t.Run("Should be able to create multiple new Subeditions", func(t *testing.T) { + tx := createTxWithTemplateAndAuthorizer(b, templates.GenerateCreateSubeditionScript(env), topshotAddr) + + name := subedition111Name + metadata := []cadence.KeyValuePair{{Key: setIDString, Value: value1}, {Key: playIDString, Value: value1}} + subeditionMetadata := cadence.NewDictionary(metadata) + _ = tx.AddArgument(name) + _ = tx.AddArgument(subeditionMetadata) + + signAndSubmit( + t, b, tx, + []flow.Address{b.ServiceKey().Address, topshotAddr}, []crypto.Signer{serviceKeySigner, topshotSigner}, + false, + ) + + tx = createTxWithTemplateAndAuthorizer(b, templates.GenerateCreateSubeditionScript(env), topshotAddr) + + name = subedition112Name + metadata = []cadence.KeyValuePair{{Key: setIDString, Value: value1}, {Key: playIDString, Value: value1}} + subeditionMetadata = cadence.NewDictionary(metadata) + _ = tx.AddArgument(name) + _ = tx.AddArgument(subeditionMetadata) + + signAndSubmit( + t, b, tx, + []flow.Address{b.ServiceKey().Address, topshotAddr}, []crypto.Signer{serviceKeySigner, topshotSigner}, + false, + ) + + tx = createTxWithTemplateAndAuthorizer(b, templates.GenerateCreateSubeditionScript(env), topshotAddr) + + name = subedition133Name + metadata = []cadence.KeyValuePair{{Key: setIDString, Value: value1}, {Key: playIDString, Value: value3}} + subeditionMetadata = cadence.NewDictionary(metadata) + _ = tx.AddArgument(name) + _ = tx.AddArgument(subeditionMetadata) + + signAndSubmit( + t, b, tx, + []flow.Address{b.ServiceKey().Address, topshotAddr}, []crypto.Signer{serviceKeySigner, topshotSigner}, + false, + ) + + tx = createTxWithTemplateAndAuthorizer(b, templates.GenerateCreateSubeditionScript(env), topshotAddr) + + name = subedition134Name + metadata = []cadence.KeyValuePair{{Key: setIDString, Value: value1}, {Key: playIDString, Value: value3}} + subeditionMetadata = cadence.NewDictionary(metadata) + _ = tx.AddArgument(name) + _ = tx.AddArgument(subeditionMetadata) + + signAndSubmit( + t, b, tx, + []flow.Address{b.ServiceKey().Address, topshotAddr}, []crypto.Signer{serviceKeySigner, topshotSigner}, + false, + ) + + result = executeScriptAndCheck(t, b, templates.GenerateGetNextSubeditionIDScript(env), nil) + assert.Equal(t, cadence.NewUInt32(5), result) + + // Check that the return all subeditions script works properly + // and that we can return metadata about the plays + result = executeScriptAndCheck(t, b, templates.GenerateGetAllSubeditionScript(env), nil) + + result = executeScriptAndCheck(t, b, templates.GenerateGetSubeditionByIDScript(env), [][]byte{jsoncdc.MustEncode(cadence.UInt32(1))}) + + metadataFields := result.(cadence.Struct).Fields + + metadata = []cadence.KeyValuePair{{Key: playIDString, Value: value1}, {Key: setIDString, Value: value1}} + subeditionMetadata = CadenceStringDictionary(metadata) + assert.Equal(t, cadence.NewUInt32(1), metadataFields[0]) + assert.Equal(t, subedition111Name, metadataFields[1]) + assert.Equal(t, subeditionMetadata, metadataFields[2]) + }) + + t.Run("Should be able to link nft to subedition", func(t *testing.T) { + tx := createTxWithTemplateAndAuthorizer(b, templates.GenerateSetNFTsubedtitionScript(env), topshotAddr) + + _ = tx.AddArgument(cadence.NewUInt64(100)) + _ = tx.AddArgument(cadence.NewUInt32(1)) + _ = tx.AddArgument(cadence.NewUInt32(1)) + _ = tx.AddArgument(cadence.NewUInt32(1)) + + signAndSubmit( + t, b, tx, + []flow.Address{b.ServiceKey().Address, topshotAddr}, []crypto.Signer{serviceKeySigner, topshotSigner}, + false, + ) + + result = executeScriptAndCheck(t, b, templates.GenerateGetNFTSubeditionScript(env), [][]byte{jsoncdc.MustEncode(cadence.UInt64(100))}) + assert.Equal(t, cadence.NewUInt32(1), result) + }) + + // Admin mints a moment that stores it in the admin's collection + t.Run("Should be able to mint a moment with subedition #1", func(t *testing.T) { + tx := createTxWithTemplateAndAuthorizer(b, templates.GenerateMintMomentWithSubeditionScript(env), topshotAddr) + + _ = tx.AddArgument(cadence.NewUInt32(1)) + _ = tx.AddArgument(cadence.NewUInt32(1)) + _ = tx.AddArgument(cadence.NewUInt32(1)) + _ = tx.AddArgument(cadence.NewAddress(topshotAddr)) + + signAndSubmit( + t, b, tx, + []flow.Address{b.ServiceKey().Address, topshotAddr}, []crypto.Signer{serviceKeySigner, topshotSigner}, + false, + ) + + // make sure the moment was minted correctly and is stored in the collection with the correct data + result := executeScriptAndCheck(t, b, templates.GenerateIsIDInCollectionScript(env), [][]byte{jsoncdc.MustEncode(cadence.Address(topshotAddr)), jsoncdc.MustEncode(cadence.UInt64(1))}) + assert.Equal(t, cadence.NewBool(true), result) + + result = executeScriptAndCheck(t, b, templates.GenerateGetCollectionIDsScript(env), [][]byte{jsoncdc.MustEncode(cadence.Address(topshotAddr))}) + CadenceIntArrayContains(t, result, 1) + + result = executeScriptAndCheck(t, b, templates.GenerateGetMomentSetScript(env), [][]byte{jsoncdc.MustEncode(cadence.Address(topshotAddr)), jsoncdc.MustEncode(cadence.UInt64(1))}) + assert.Equal(t, cadence.NewUInt32(1), result) + + }) + + t.Run("Should be able to mint a moment with subedition #2", func(t *testing.T) { + tx := createTxWithTemplateAndAuthorizer(b, templates.GenerateMintMomentWithSubeditionScript(env), topshotAddr) + + _ = tx.AddArgument(cadence.NewUInt32(1)) + _ = tx.AddArgument(cadence.NewUInt32(1)) + _ = tx.AddArgument(cadence.NewUInt32(2)) + _ = tx.AddArgument(cadence.NewAddress(topshotAddr)) + + signAndSubmit( + t, b, tx, + []flow.Address{b.ServiceKey().Address, topshotAddr}, []crypto.Signer{serviceKeySigner, topshotSigner}, + false, + ) + + // make sure the moment was minted correctly and is stored in the collection with the correct data + result := executeScriptAndCheck(t, b, templates.GenerateIsIDInCollectionScript(env), [][]byte{jsoncdc.MustEncode(cadence.Address(topshotAddr)), jsoncdc.MustEncode(cadence.UInt64(1))}) + assert.Equal(t, cadence.NewBool(true), result) + + result = executeScriptAndCheck(t, b, templates.GenerateGetCollectionIDsScript(env), [][]byte{jsoncdc.MustEncode(cadence.Address(topshotAddr))}) + CadenceIntArrayContains(t, result, 1, 2) + + result = executeScriptAndCheck(t, b, templates.GenerateGetMomentSetScript(env), [][]byte{jsoncdc.MustEncode(cadence.Address(topshotAddr)), jsoncdc.MustEncode(cadence.UInt64(1))}) + assert.Equal(t, cadence.NewUInt32(1), result) + + }) + + t.Run("Should be able to get moments metadata", func(t *testing.T) { + // Tests to ensure that all core metadataviews are resolvable + expectedMetadataName := "Lebron Dunk" + expectedMetadataDescription := "A series 0 Genesis moment with serial number 1" + expectedMetadataThumbnail := "https://assets.nbatopshot.com/media/1?width=256" + expectedMetadataExternalURL := "https://nbatopshot.com/moment/1" + expectedStoragePath := "/storage/MomentCollection" + expectedPublicPath := "/public/MomentCollection" + expectedPrivatePath := "/private/MomentCollection" + expectedCollectionName := "NBA-Top-Shot" + expectedCollectionDescription := "NBA Top Shot is your chance to own, sell, and trade official digital collectibles of the NBA and WNBA's greatest plays and players" + expectedCollectionSquareImage := "https://nbatopshot.com/static/img/og/og.png" + expectedCollectionBannerImage := "https://nbatopshot.com/static/img/top-shot-logo-horizontal-white.svg" + expectedRoyaltyReceiversCount := 1 + expectedTraitsCount := 6 + expectedVideoURL := "https://assets.nbatopshot.com/media/1/video" + + resultNFT := executeScriptAndCheck(t, b, templates.GenerateGetNFTMetadataScript(env), [][]byte{jsoncdc.MustEncode(cadence.Address(topshotAddr)), jsoncdc.MustEncode(cadence.UInt64(1))}) + metadataViewNFT := resultNFT.(cadence.Struct) + assert.Equal(t, cadence.String(expectedMetadataName), metadataViewNFT.Fields[0]) + assert.Equal(t, cadence.String(expectedMetadataDescription), metadataViewNFT.Fields[1]) + assert.Equal(t, cadence.String(expectedMetadataThumbnail), metadataViewNFT.Fields[2]) + assert.Equal(t, cadence.String(expectedMetadataExternalURL), metadataViewNFT.Fields[5]) + assert.Equal(t, cadence.String(expectedStoragePath), metadataViewNFT.Fields[6]) + assert.Equal(t, cadence.String(expectedPublicPath), metadataViewNFT.Fields[7]) + assert.Equal(t, cadence.String(expectedPrivatePath), metadataViewNFT.Fields[8]) + assert.Equal(t, cadence.String(expectedCollectionName), metadataViewNFT.Fields[9]) + assert.Equal(t, cadence.String(expectedCollectionDescription), metadataViewNFT.Fields[10]) + assert.Equal(t, cadence.String(expectedCollectionSquareImage), metadataViewNFT.Fields[11]) + assert.Equal(t, cadence.String(expectedCollectionBannerImage), metadataViewNFT.Fields[12]) + assert.Equal(t, cadence.UInt32(expectedRoyaltyReceiversCount), metadataViewNFT.Fields[13]) + assert.Equal(t, cadence.UInt32(expectedTraitsCount), metadataViewNFT.Fields[14]) + assert.Equal(t, cadence.String(expectedVideoURL), metadataViewNFT.Fields[15]) + + // Tests that top-shot specific metadata is discoverable on-chain + expectedPlayID := 1 + expectedSetID := 1 + expectedSerialNumber := 1 + + resultTopShot := executeScriptAndCheck(t, b, templates.GenerateGetTopShotMetadataScript(env), [][]byte{jsoncdc.MustEncode(cadence.Address(topshotAddr)), jsoncdc.MustEncode(cadence.UInt64(1))}) + metadataViewTopShot := resultTopShot.(cadence.Struct) + assert.Equal(t, cadence.UInt32(expectedSerialNumber), metadataViewTopShot.Fields[26]) + assert.Equal(t, cadence.UInt32(expectedPlayID), metadataViewTopShot.Fields[27]) + assert.Equal(t, cadence.UInt32(expectedSetID), metadataViewTopShot.Fields[28]) + }) + + // Admin sends a transaction that locks the set + t.Run("Should be able to lock a set which stops plays from being added", func(t *testing.T) { + tx := createTxWithTemplateAndAuthorizer(b, templates.GenerateLockSetScript(env), topshotAddr) + + _ = tx.AddArgument(cadence.NewUInt32(1)) + + signAndSubmit( + t, b, tx, + []flow.Address{b.ServiceKey().Address, topshotAddr}, []crypto.Signer{serviceKeySigner, topshotSigner}, + false, + ) + + // This should fail because the set is locked + tx = createTxWithTemplateAndAuthorizer(b, templates.GenerateAddPlayToSetScript(env), topshotAddr) + + _ = tx.AddArgument(cadence.NewUInt32(1)) + _ = tx.AddArgument(cadence.NewUInt32(4)) + + signAndSubmit( + t, b, tx, + []flow.Address{b.ServiceKey().Address, topshotAddr}, []crypto.Signer{serviceKeySigner, topshotSigner}, + true, + ) + + // Script should return that the set is locked + result := executeScriptAndCheck(t, b, templates.GenerateGetIsSetLockedScript(env), [][]byte{jsoncdc.MustEncode(cadence.UInt32(1))}) + assert.Equal(t, cadence.NewBool(true), result) + }) + + // Admin sends a transaction that mints a batch of moments + t.Run("Should be able to mint a batch of moments with subedition #1", func(t *testing.T) { + tx := createTxWithTemplateAndAuthorizer(b, templates.GenerateBatchMintMomentWithSubeditionScript(env), topshotAddr) + + _ = tx.AddArgument(cadence.NewUInt32(1)) + _ = tx.AddArgument(cadence.NewUInt32(3)) + _ = tx.AddArgument(cadence.NewUInt64(5)) + _ = tx.AddArgument(cadence.NewUInt32(3)) + _ = tx.AddArgument(cadence.NewAddress(topshotAddr)) + + signAndSubmit( + t, b, tx, + []flow.Address{b.ServiceKey().Address, topshotAddr}, []crypto.Signer{serviceKeySigner, topshotSigner}, + false, + ) + + // Ensure that the correct number of moments have been minted for each edition + result := executeScriptAndCheck(t, b, templates.GenerateGetNumMomentsInEditionScript(env), [][]byte{jsoncdc.MustEncode(cadence.UInt32(1)), jsoncdc.MustEncode(cadence.UInt32(1))}) + assert.Equal(t, cadence.NewUInt32(2), result) + + result = executeScriptAndCheck(t, b, templates.GenerateGetNumMomentsInEditionScript(env), [][]byte{jsoncdc.MustEncode(cadence.UInt32(1)), jsoncdc.MustEncode(cadence.UInt32(3))}) + assert.Equal(t, cadence.NewUInt32(5), result) + + result = executeScriptAndCheck(t, b, templates.GenerateIsIDInCollectionScript(env), [][]byte{jsoncdc.MustEncode(cadence.Address(topshotAddr)), jsoncdc.MustEncode(cadence.UInt64(1))}) + assert.Equal(t, cadence.NewBool(true), result) + + result = executeScriptAndCheck(t, b, templates.GenerateGetCollectionIDsScript(env), [][]byte{jsoncdc.MustEncode(cadence.Address(topshotAddr))}) + CadenceIntArrayContains(t, result, 3, 5, 4, 2, 6, 7, 1) + + result = executeScriptAndCheck(t, b, templates.GenerateGetMomentSetScript(env), [][]byte{jsoncdc.MustEncode(cadence.Address(topshotAddr)), jsoncdc.MustEncode(cadence.UInt64(1))}) + assert.Equal(t, cadence.NewUInt32(1), result) + + }) + + t.Run("Should be able to mint a batch of moments with subedition #2", func(t *testing.T) { + tx := createTxWithTemplateAndAuthorizer(b, templates.GenerateBatchMintMomentWithSubeditionScript(env), topshotAddr) + + _ = tx.AddArgument(cadence.NewUInt32(1)) + _ = tx.AddArgument(cadence.NewUInt32(3)) + _ = tx.AddArgument(cadence.NewUInt64(5)) + _ = tx.AddArgument(cadence.NewUInt32(4)) + _ = tx.AddArgument(cadence.NewAddress(topshotAddr)) + + signAndSubmit( + t, b, tx, + []flow.Address{b.ServiceKey().Address, topshotAddr}, []crypto.Signer{serviceKeySigner, topshotSigner}, + false, + ) + + // Ensure that the correct number of moments have been minted for each edition + result := executeScriptAndCheck(t, b, templates.GenerateGetNumMomentsInEditionScript(env), [][]byte{jsoncdc.MustEncode(cadence.UInt32(1)), jsoncdc.MustEncode(cadence.UInt32(1))}) + assert.Equal(t, cadence.NewUInt32(2), result) + + result = executeScriptAndCheck(t, b, templates.GenerateGetNumMomentsInEditionScript(env), [][]byte{jsoncdc.MustEncode(cadence.UInt32(1)), jsoncdc.MustEncode(cadence.UInt32(3))}) + assert.Equal(t, cadence.NewUInt32(10), result) + + result = executeScriptAndCheck(t, b, templates.GenerateIsIDInCollectionScript(env), [][]byte{jsoncdc.MustEncode(cadence.Address(topshotAddr)), jsoncdc.MustEncode(cadence.UInt64(1))}) + assert.Equal(t, cadence.NewBool(true), result) + + result = executeScriptAndCheck(t, b, templates.GenerateGetCollectionIDsScript(env), [][]byte{jsoncdc.MustEncode(cadence.Address(topshotAddr))}) + CadenceIntArrayContains(t, result, 3, 8, 9, 10, 12, 4, 2, 6, 11, 7, 1, 5) + + result = executeScriptAndCheck(t, b, templates.GenerateGetMomentSetScript(env), [][]byte{jsoncdc.MustEncode(cadence.Address(topshotAddr)), jsoncdc.MustEncode(cadence.UInt64(1))}) + assert.Equal(t, cadence.NewUInt32(1), result) + + }) + + t.Run("Should be able to get moment's subedition", func(t *testing.T) { + //check separately minted moments + result = executeScriptAndCheck(t, b, templates.GenerateGetNFTSubeditionScript(env), [][]byte{jsoncdc.MustEncode(cadence.UInt64(1))}) + assert.Equal(t, cadence.NewUInt32(1), result) + + result = executeScriptAndCheck(t, b, templates.GenerateGetNFTSubeditionScript(env), [][]byte{jsoncdc.MustEncode(cadence.UInt64(2))}) + assert.Equal(t, cadence.NewUInt32(2), result) + + //check batch minted moments + result = executeScriptAndCheck(t, b, templates.GenerateGetNFTSubeditionScript(env), [][]byte{jsoncdc.MustEncode(cadence.UInt64(3))}) + assert.Equal(t, cadence.NewUInt32(3), result) + + result = executeScriptAndCheck(t, b, templates.GenerateGetNFTSubeditionScript(env), [][]byte{jsoncdc.MustEncode(cadence.UInt64(8))}) + assert.Equal(t, cadence.NewUInt32(4), result) + }) + + t.Run("Should be able to check moment's serial number", func(t *testing.T) { + result = executeScriptAndCheck(t, b, templates.GenerateGetMomentSerialNumScript(env), [][]byte{jsoncdc.MustEncode(cadence.Address(topshotAddr)), jsoncdc.MustEncode(cadence.UInt64(3))}) + assert.Equal(t, cadence.NewUInt32(1), result) + + result = executeScriptAndCheck(t, b, templates.GenerateGetMomentSerialNumScript(env), [][]byte{jsoncdc.MustEncode(cadence.Address(topshotAddr)), jsoncdc.MustEncode(cadence.UInt64(4))}) + assert.Equal(t, cadence.NewUInt32(2), result) + + result = executeScriptAndCheck(t, b, templates.GenerateGetMomentSerialNumScript(env), [][]byte{jsoncdc.MustEncode(cadence.Address(topshotAddr)), jsoncdc.MustEncode(cadence.UInt64(5))}) + assert.Equal(t, cadence.NewUInt32(3), result) + + result = executeScriptAndCheck(t, b, templates.GenerateGetMomentSerialNumScript(env), [][]byte{jsoncdc.MustEncode(cadence.Address(topshotAddr)), jsoncdc.MustEncode(cadence.UInt64(6))}) + assert.Equal(t, cadence.NewUInt32(4), result) + + result = executeScriptAndCheck(t, b, templates.GenerateGetMomentSerialNumScript(env), [][]byte{jsoncdc.MustEncode(cadence.Address(topshotAddr)), jsoncdc.MustEncode(cadence.UInt64(7))}) + assert.Equal(t, cadence.NewUInt32(5), result) + + result = executeScriptAndCheck(t, b, templates.GenerateGetMomentSerialNumScript(env), [][]byte{jsoncdc.MustEncode(cadence.Address(topshotAddr)), jsoncdc.MustEncode(cadence.UInt64(8))}) + assert.Equal(t, cadence.NewUInt32(1), result) + + result = executeScriptAndCheck(t, b, templates.GenerateGetMomentSerialNumScript(env), [][]byte{jsoncdc.MustEncode(cadence.Address(topshotAddr)), jsoncdc.MustEncode(cadence.UInt64(9))}) + assert.Equal(t, cadence.NewUInt32(2), result) + + result = executeScriptAndCheck(t, b, templates.GenerateGetMomentSerialNumScript(env), [][]byte{jsoncdc.MustEncode(cadence.Address(topshotAddr)), jsoncdc.MustEncode(cadence.UInt64(10))}) + assert.Equal(t, cadence.NewUInt32(3), result) + + result = executeScriptAndCheck(t, b, templates.GenerateGetMomentSerialNumScript(env), [][]byte{jsoncdc.MustEncode(cadence.Address(topshotAddr)), jsoncdc.MustEncode(cadence.UInt64(11))}) + assert.Equal(t, cadence.NewUInt32(4), result) + + result = executeScriptAndCheck(t, b, templates.GenerateGetMomentSerialNumScript(env), [][]byte{jsoncdc.MustEncode(cadence.Address(topshotAddr)), jsoncdc.MustEncode(cadence.UInt64(12))}) + assert.Equal(t, cadence.NewUInt32(5), result) + }) + + t.Run("Should be able to mint a batch of moments with subedition and fulfill a pack", func(t *testing.T) { + tx := createTxWithTemplateAndAuthorizer(b, templates.GenerateBatchMintMomentWithSubeditionScript(env), topshotAddr) + + _ = tx.AddArgument(cadence.NewUInt32(1)) + _ = tx.AddArgument(cadence.NewUInt32(3)) + _ = tx.AddArgument(cadence.NewUInt64(5)) + _ = tx.AddArgument(cadence.NewUInt32(1)) + _ = tx.AddArgument(cadence.NewAddress(topshotAddr)) + + signAndSubmit( + t, b, tx, + []flow.Address{b.ServiceKey().Address, topshotAddr}, []crypto.Signer{serviceKeySigner, topshotSigner}, + false, + ) + + tx = createTxWithTemplateAndAuthorizer(b, templates.GenerateFulfillPackScript(env), topshotAddr) + + _ = tx.AddArgument(cadence.NewAddress(topshotAddr)) + + ids := []cadence.Value{cadence.NewUInt64(6), cadence.NewUInt64(7), cadence.NewUInt64(8)} + _ = tx.AddArgument(cadence.NewArray(ids)) + + signAndSubmit( + t, b, tx, + []flow.Address{b.ServiceKey().Address, topshotAddr}, []crypto.Signer{serviceKeySigner, topshotSigner}, + false, + ) + + }) + + // Admin sends a transaction to retire a play + t.Run("Should be able to retire a Play which stops minting", func(t *testing.T) { + tx := createTxWithTemplateAndAuthorizer(b, templates.GenerateRetirePlayScript(env), topshotAddr) + + _ = tx.AddArgument(cadence.NewUInt32(1)) + _ = tx.AddArgument(cadence.NewUInt32(1)) + + signAndSubmit( + t, b, tx, + []flow.Address{b.ServiceKey().Address, topshotAddr}, []crypto.Signer{serviceKeySigner, topshotSigner}, + false, + ) + + // Minting from this play should fail becuase it is retired + tx = createTxWithTemplateAndAuthorizer(b, templates.GenerateMintMomentWithSubeditionScript(env), topshotAddr) + + _ = tx.AddArgument(cadence.NewUInt32(1)) + _ = tx.AddArgument(cadence.NewUInt32(1)) + _ = tx.AddArgument(cadence.NewAddress(topshotAddr)) + + signAndSubmit( + t, b, tx, + []flow.Address{b.ServiceKey().Address, topshotAddr}, []crypto.Signer{serviceKeySigner, topshotSigner}, + true, + ) + + // Make sure this edition is retired + result := executeScriptAndCheck(t, b, templates.GenerateGetIsEditionRetiredScript(env), [][]byte{jsoncdc.MustEncode(cadence.UInt32(1)), jsoncdc.MustEncode(cadence.UInt32(1))}) + assert.Equal(t, cadence.NewBool(true), result) + }) + + // Admin sends a transaction that retires all the plays in a set + t.Run("Should be able to retire all Plays which stops minting", func(t *testing.T) { + tx := createTxWithTemplateAndAuthorizer(b, templates.GenerateRetireAllPlaysScript(env), topshotAddr) + + _ = tx.AddArgument(cadence.NewUInt32(1)) + + signAndSubmit( + t, b, tx, + []flow.Address{b.ServiceKey().Address, topshotAddr}, []crypto.Signer{serviceKeySigner, topshotSigner}, + false, + ) + + // minting should fail + tx = createTxWithTemplateAndAuthorizer(b, templates.GenerateMintMomentWithSubeditionScript(env), topshotAddr) + + _ = tx.AddArgument(cadence.NewUInt32(1)) + _ = tx.AddArgument(cadence.NewUInt32(3)) + _ = tx.AddArgument(cadence.NewAddress(topshotAddr)) + + signAndSubmit( + t, b, tx, + []flow.Address{b.ServiceKey().Address, topshotAddr}, []crypto.Signer{serviceKeySigner, topshotSigner}, + true, + ) + + verifyQuerySetMetadata(t, b, env, + SetMetadata{ + setID: 1, + name: "Genesis", + series: 0, + plays: []uint32{1, 2, 3}, + //retired {UInt32: Bool} + locked: true, + //numberMintedPerPlay {UInt32: UInt32}}) + }) + }) + + // create a new Collection for a user address + t.Run("Should be able to create a moment Collection", func(t *testing.T) { + tx := createTxWithTemplateAndAuthorizer(b, templates.GenerateSetupAccountScript(env), joshAddress) + signAndSubmit( + t, b, tx, + []flow.Address{b.ServiceKey().Address, joshAddress}, []crypto.Signer{serviceKeySigner, joshSigner}, + false, + ) + }) + + // Admin sends a transaction to transfer a moment to a user + t.Run("Should be able to transfer a moment", func(t *testing.T) { + tx := createTxWithTemplateAndAuthorizer(b, templates.GenerateTransferMomentfromShardedCollectionScript(env), topshotAddr) + + _ = tx.AddArgument(cadence.NewAddress(joshAddress)) + _ = tx.AddArgument(cadence.NewUInt64(1)) + + signAndSubmit( + t, b, tx, + []flow.Address{b.ServiceKey().Address, topshotAddr}, []crypto.Signer{serviceKeySigner, topshotSigner}, + false, + ) + // make sure the user received it + result = executeScriptAndCheck(t, b, templates.GenerateIsIDInCollectionScript(env), [][]byte{jsoncdc.MustEncode(cadence.Address(joshAddress)), jsoncdc.MustEncode(cadence.UInt64(1))}) + assert.Equal(t, cadence.NewBool(true), result) + }) + + // Admin sends a transaction to transfer a batch of moments to a user + t.Run("Should be able to batch transfer moments from a sharded collection", func(t *testing.T) { + tx := createTxWithTemplateAndAuthorizer(b, templates.GenerateBatchTransferMomentfromShardedCollectionScript(env), topshotAddr) + + _ = tx.AddArgument(cadence.NewAddress(joshAddress)) + + ids := []cadence.Value{cadence.NewUInt64(2), cadence.NewUInt64(3), cadence.NewUInt64(4)} + _ = tx.AddArgument(cadence.NewArray(ids)) + + signAndSubmit( + t, b, tx, + []flow.Address{b.ServiceKey().Address, topshotAddr}, []crypto.Signer{serviceKeySigner, topshotSigner}, + false, + ) + // make sure the user received them + result = executeScriptAndCheck(t, b, templates.GenerateGetMomentSetScript(env), [][]byte{jsoncdc.MustEncode(cadence.Address(joshAddress)), jsoncdc.MustEncode(cadence.UInt64(2))}) + assert.Equal(t, cadence.NewUInt32(1), result) + }) + + // Admin sends a transaction to update the current series + t.Run("Should be able to change the current series", func(t *testing.T) { + tx := createTxWithTemplateAndAuthorizer(b, templates.GenerateChangeSeriesScript(env), topshotAddr) + + signAndSubmit( + t, b, tx, + []flow.Address{b.ServiceKey().Address, topshotAddr}, []crypto.Signer{serviceKeySigner, topshotSigner}, + false, + ) + }) + + // Make sure the contract fields are correct + result = executeScriptAndCheck(t, b, templates.GenerateGetSeriesScript(env), nil) + assert.Equal(t, cadence.NewUInt32(1), result) + + result = executeScriptAndCheck(t, b, templates.GenerateGetNextPlayIDScript(env), nil) + assert.Equal(t, cadence.NewUInt32(5), result) + + result = executeScriptAndCheck(t, b, templates.GenerateGetNextSetIDScript(env), nil) + assert.Equal(t, cadence.NewUInt32(2), result) + + result = executeScriptAndCheck(t, b, templates.GenerateGetSupplyScript(env), nil) + assert.Equal(t, cadence.NewUInt64(17), result) + +} diff --git a/lib/go/test/test_helpers.go b/lib/go/test/test_helpers.go index ca0ff35a..89ec2c0a 100644 --- a/lib/go/test/test_helpers.go +++ b/lib/go/test/test_helpers.go @@ -1,10 +1,12 @@ package test import ( + "testing" + sdk "github.com/onflow/flow-go-sdk" "github.com/onflow/flow-go-sdk/crypto" sdktemplates "github.com/onflow/flow-go-sdk/templates" - "testing" + "github.com/stretchr/testify/assert" "github.com/onflow/cadence" jsoncdc "github.com/onflow/cadence/encoding/json" @@ -13,7 +15,7 @@ import ( "github.com/dapperlabs/nba-smart-contracts/lib/go/templates" ) -/// Used to verify set metadata in tests +// / Used to verify set metadata in tests type SetMetadata struct { setID uint32 name string @@ -24,7 +26,7 @@ type SetMetadata struct { //numberMintedPerPlay {UInt32: UInt32} } -/// Verifies that the epoch metadata is equal to the provided expected values +// / Verifies that the epoch metadata is equal to the provided expected values func verifyQuerySetMetadata( t *testing.T, b *emulator.Blockchain, @@ -105,3 +107,41 @@ func updateContract(b *emulator.Blockchain, address sdk.Address, signer crypto.S return nil } + +func VariableArray(cadenceType cadence.Type, values ...cadence.Value) cadence.Array { + return cadence.NewArray(values).WithType(cadence.NewVariableSizedArrayType(cadenceType)) +} + +func UInt32Array(values ...int) cadence.Array { + mapped := make([]cadence.Value, len(values)) + for i, v := range values { + mapped[i] = cadence.NewUInt32(uint32(v)) + } + return VariableArray(cadence.NewUInt32Type(), mapped...) +} + +func UInt64Array(values ...int) cadence.Array { + mapped := make([]cadence.Value, len(values)) + for i, v := range values { + mapped[i] = cadence.NewUInt64(uint64(v)) + } + return VariableArray(cadence.NewUInt64Type(), mapped...) +} + +func CadenceStringDictionary(pairs []cadence.KeyValuePair) cadence.Dictionary { + return cadence.NewDictionary(pairs). + WithType(cadence.DictionaryType{KeyType: cadence.StringType{}, ElementType: cadence.StringType{}}) +} + +func CadenceIntArrayContains(t assert.TestingT, result cadence.Value, vals ...int) { + interfaceArray := result.ToGoValue().([]interface{}) + assert.Equal(t, len(vals), len(interfaceArray)) + for _, intValue := range interfaceArray { + switch v := intValue.(type) { + case uint64: + assert.Contains(t, vals, int(v)) + case int: + assert.Contains(t, vals, v) + } + } +} diff --git a/lib/go/test/topshot_test.go b/lib/go/test/topshot_test.go index 00eeee6b..dff3c3a8 100644 --- a/lib/go/test/topshot_test.go +++ b/lib/go/test/topshot_test.go @@ -1,13 +1,13 @@ package test import ( - "strings" - "testing" - "github.com/onflow/cadence" jsoncdc "github.com/onflow/cadence/encoding/json" + emulator "github.com/onflow/flow-emulator" fungibleToken "github.com/onflow/flow-ft/lib/go/contracts" fungibleTokenTemplates "github.com/onflow/flow-ft/lib/go/templates" + "strings" + "testing" "github.com/dapperlabs/nba-smart-contracts/lib/go/contracts" "github.com/dapperlabs/nba-smart-contracts/lib/go/templates" @@ -30,117 +30,24 @@ const ( emulatorFTAddress = "ee82856bf20e2aa6" emulatorFlowTokenAddress = "0ae53cb6e3f42a79" - MetadataFTReplaceAddress = `"./utility/FungibleToken.cdc"` - MetadataNFTReplaceAddress = `"./NonFungibleToken.cdc"` + MetadataFTReplaceAddress = `"FungibleToken"` + MetadataNFTReplaceAddress = `"NonFungibleToken"` + Network = `"mainnet"` ) -// This test is for testing the deployment the topshot smart contracts -func TestNFTDeployment(t *testing.T) { - b := newBlockchain() - - // Should be able to deploy the NFT contract - // as a new account with no keys. - nftCode, _ := DownloadFile(NonFungibleTokenContractsBaseURL + NonFungibleTokenInterfaceFile) - nftAddr, err := b.CreateAccount(nil, []sdktemplates.Contract{ - { - Name: "NonFungibleToken", - Source: string(nftCode), - }, - }) - if !assert.NoError(t, err) { - t.Log(err.Error()) - } - _, err = b.CommitBlock() - assert.NoError(t, err) - - // Should be able to deploy the MetadataViews contract - // as a new account with no keys. - metadataViewsCode, _ := DownloadFile(MetadataViewsContractsBaseURL + MetadataViewsInterfaceFile) - parsedMetadataContract := strings.Replace(string(metadataViewsCode), MetadataFTReplaceAddress, "0x"+emulatorFTAddress, 1) - parsedMetadataContract = strings.Replace(parsedMetadataContract, MetadataNFTReplaceAddress, "0x"+nftAddr.String(), 1) - metadataViewsAddr, err := b.CreateAccount(nil, []sdktemplates.Contract{ - { - Name: "MetadataViews", - Source: parsedMetadataContract, - }, - }) - if !assert.NoError(t, err) { - t.Log(err.Error()) - } - _, err = b.CommitBlock() - assert.NoError(t, err) - - // Should be able to deploy the TopShot Locking contract - // as a new account with no keys. - lockingKey, lockingSigner := test.AccountKeyGenerator().NewWithSigner() - topshotLockingCode := contracts.GenerateTopShotLockingContract(nftAddr.String()) - topShotLockingAddr, err := b.CreateAccount([]*flow.AccountKey{lockingKey}, []sdktemplates.Contract{ - { - Name: "TopShotLocking", - Source: string(topshotLockingCode), - }, - }) - if !assert.NoError(t, err) { - t.Log(err.Error()) - } - _, err = b.CommitBlock() - assert.NoError(t, err) - - // Should be able to deploy the topshot contract - // as a new account with no keys. - topshotCode := contracts.GenerateTopShotContract(nftAddr.String(), metadataViewsAddr.String(), topShotLockingAddr.String()) - topshotAddr, err := b.CreateAccount(nil, []sdktemplates.Contract{ - { - Name: "TopShot", - Source: string(topshotCode), - }, - }) - if !assert.NoError(t, err) { - t.Log(err.Error()) - } - _, err = b.CommitBlock() - assert.NoError(t, err) - - // Should be able to update the locking contract - // with the address of TopShot contract to perform runtime type checking - topShotLockingCodeWithRuntimeAddr := contracts.GenerateTopShotLockingContractWithTopShotRuntimeAddr(nftAddr.String(), topshotAddr.String()) - err = updateContract(b, topShotLockingAddr, lockingSigner, "TopShotLocking", topShotLockingCodeWithRuntimeAddr) - if !assert.NoError(t, err) { - t.Log(err.Error()) - } - - // deploy the sharded collection contract - shardedCollectionCode := contracts.GenerateTopShotShardedCollectionContract(nftAddr.String(), topshotAddr.String()) - shardedAddr, err := b.CreateAccount(nil, []sdktemplates.Contract{ - { - Name: "TopShotShardedCollection", - Source: string(shardedCollectionCode), - }, - }) - if !assert.NoError(t, err) { - t.Log(err.Error()) - } - _, err = b.CommitBlock() - assert.NoError(t, err) +// topshotTestContext will expose sugar for common actions needed to bootstrap testing +type topshotTestBlockchain struct { + *emulator.Blockchain + env templates.Environment + topshotAdminAddr flow.Address + serviceKeySigner crypto.Signer + topshotAdminSigner crypto.Signer + accountKeys *test.AccountKeys - // Should be able to deploy the admin receiver contract - // as a new account with no keys. - adminReceiverCode := contracts.GenerateTopshotAdminReceiverContract(topshotAddr.String(), shardedAddr.String()) - _, err = b.CreateAccount(nil, []sdktemplates.Contract{ - { - Name: "TopshotAdminReceiver", - Source: string(adminReceiverCode), - }, - }) - if !assert.NoError(t, err) { - t.Log(err.Error()) - } - _, err = b.CommitBlock() - assert.NoError(t, err) + userAddress flow.Address } -// This test tests the pure functionality of the smart contract -func TestMintNFTs(t *testing.T) { +func NewTopShotTestBlockchain(t *testing.T) topshotTestBlockchain { b := newBlockchain() serviceKeySigner, err := b.ServiceKey().Signer() @@ -181,18 +88,26 @@ func TestMintNFTs(t *testing.T) { env.MetadataViewsAddress = metadataViewsAddr.String() // Deploy TopShot Locking contract + lockingKey, lockingSigner := test.AccountKeyGenerator().NewWithSigner() topshotLockingCode := contracts.GenerateTopShotLockingContract(nftAddr.String()) - topShotLockingAddr, err := b.CreateAccount(nil, []sdktemplates.Contract{ + topShotLockingAddr, err := b.CreateAccount([]*flow.AccountKey{lockingKey}, []sdktemplates.Contract{ { Name: "TopShotLocking", Source: string(topshotLockingCode), }, }) + royaltyAddr, err := b.CreateAccount(nil, []sdktemplates.Contract{}) + if !assert.NoError(t, err) { + t.Log(err.Error()) + } + _, err = b.CommitBlock() + assert.NoError(t, err) + env.TopShotLockingAddress = topShotLockingAddr.String() // Deploy the topshot contract - topshotCode := contracts.GenerateTopShotContract(nftAddr.String(), metadataViewsAddr.String(), topShotLockingAddr.String()) + topshotCode := contracts.GenerateTopShotContract(emulatorFTAddress, nftAddr.String(), metadataViewsAddr.String(), topShotLockingAddr.String(), royaltyAddr.String(), Network) topshotAccountKey, topshotSigner := accountKeys.NewWithSigner() topshotAddr, _ := b.CreateAccount([]*flow.AccountKey{topshotAccountKey}, []sdktemplates.Contract{ { @@ -203,6 +118,23 @@ func TestMintNFTs(t *testing.T) { env.TopShotAddress = topshotAddr.String() + // Update the locking contract with topshot address + topShotLockingCodeWithRuntimeAddr := contracts.GenerateTopShotLockingContractWithTopShotRuntimeAddr(nftAddr.String(), topshotAddr.String()) + err = updateContract(b, topShotLockingAddr, lockingSigner, "TopShotLocking", topShotLockingCodeWithRuntimeAddr) + assert.Nil(t, err) + + // Grant the TopShot account a TopShotLocking admin + // In testnet/mainnet the TopShotLocking contract is in the same account as TopShot contract + tx := createTxWithTemplateAndAuthorizer(b, templates.GenerateTopShotLockingAdminGrantAdminScript(env), topShotLockingAddr) + tx.AddAuthorizer(topshotAddr) + + signAndSubmit( + t, b, tx, + []flow.Address{b.ServiceKey().Address, topShotLockingAddr, topshotAddr}, + []crypto.Signer{serviceKeySigner, lockingSigner, topshotSigner}, + false, + ) + // Check that that main contract fields were initialized correctly result := executeScriptAndCheck(t, b, templates.GenerateGetSeriesScript(env), nil) assert.Equal(t, cadence.NewUInt32(0), result) @@ -228,6 +160,46 @@ func TestMintNFTs(t *testing.T) { env.ShardedAddress = shardedAddr.String() + return topshotTestBlockchain{ + Blockchain: b, + env: env, + topshotAdminAddr: topshotAddr, + serviceKeySigner: serviceKeySigner, + topshotAdminSigner: topshotSigner, + accountKeys: accountKeys} +} + +// This test is for testing the deployment the topshot smart contracts +func TestNFTDeployment(t *testing.T) { + // all core contracts should be deployed on the test blockchain + b := NewTopShotTestBlockchain(t) + env := b.env + // Should be able to deploy the admin receiver contract + // as a new account with no keys. + adminReceiverCode := contracts.GenerateTopshotAdminReceiverContract(env.TopShotAddress, env.ShardedAddress) + _, err := b.CreateAccount(nil, []sdktemplates.Contract{ + { + Name: "TopshotAdminReceiver", + Source: string(adminReceiverCode), + }, + }) + if !assert.NoError(t, err) { + t.Log(err.Error()) + } + _, err = b.CommitBlock() + assert.NoError(t, err) +} + +// This test tests the pure functionality of the smart contract +func TestMintNFTs(t *testing.T) { + tb := NewTopShotTestBlockchain(t) + b := tb.Blockchain + env := tb.env + accountKeys := tb.accountKeys + topshotAddr := tb.topshotAdminAddr + serviceKeySigner := tb.serviceKeySigner + topshotSigner := tb.topshotAdminSigner + // Create a new user account joshAccountKey, joshSigner := accountKeys.NewWithSigner() joshAddress, _ := b.CreateAccount([]*flow.AccountKey{joshAccountKey}, nil) @@ -243,83 +215,47 @@ func TestMintNFTs(t *testing.T) { // Admin sends a transaction to create a play t.Run("Should be able to create a new Play", func(t *testing.T) { - tx := createTxWithTemplateAndAuthorizer(b, templates.GenerateMintPlayScript(env), topshotAddr) + tb.CreatePlay(t, []cadence.KeyValuePair{{Key: firstName, Value: lebron}, {Key: playType, Value: dunk}}) + }) - metadata := []cadence.KeyValuePair{{Key: firstName, Value: lebron}, {Key: playType, Value: dunk}} - play := cadence.NewDictionary(metadata) - _ = tx.AddArgument(play) + t.Run("Should be able to update an existing Play", func(t *testing.T) { + result := executeScriptAndCheck(t, b, templates.GenerateGetPlayMetadataFieldScript(env), [][]byte{jsoncdc.MustEncode(cadence.UInt32(1)), jsoncdc.MustEncode(cadence.String("FullName"))}) + assert.Equal(t, CadenceString("Lebron"), result) - signAndSubmit( - t, b, tx, - []flow.Address{b.ServiceKey().Address, topshotAddr}, []crypto.Signer{serviceKeySigner, topshotSigner}, - false, - ) + tb.UpdateTagline(t, []cadence.KeyValuePair{{Key: cadence.UInt32(1), Value: CadenceString("lorem ipsum")}}) + result = executeScriptAndCheck(t, b, templates.GenerateGetPlayMetadataFieldScript(env), [][]byte{jsoncdc.MustEncode(cadence.UInt32(1)), jsoncdc.MustEncode(cadence.String("Tagline"))}) + assert.Equal(t, CadenceString("lorem ipsum"), result) }) // Admin sends transactions to create multiple plays t.Run("Should be able to create multiple new Plays", func(t *testing.T) { - tx := createTxWithTemplateAndAuthorizer(b, templates.GenerateMintPlayScript(env), topshotAddr) - - metadata := []cadence.KeyValuePair{{Key: firstName, Value: oladipo}} - play := cadence.NewDictionary(metadata) - _ = tx.AddArgument(play) - - signAndSubmit( - t, b, tx, - []flow.Address{b.ServiceKey().Address, topshotAddr}, []crypto.Signer{serviceKeySigner, topshotSigner}, - false, - ) - - tx = createTxWithTemplateAndAuthorizer(b, templates.GenerateMintPlayScript(env), topshotAddr) - - metadata = []cadence.KeyValuePair{{Key: firstName, Value: hayward}} - play = cadence.NewDictionary(metadata) - _ = tx.AddArgument(play) - - signAndSubmit( - t, b, tx, - []flow.Address{b.ServiceKey().Address, topshotAddr}, []crypto.Signer{serviceKeySigner, topshotSigner}, - false, - ) - - tx = createTxWithTemplateAndAuthorizer(b, templates.GenerateMintPlayScript(env), topshotAddr) - - metadata = []cadence.KeyValuePair{{Key: firstName, Value: durant}} - play = cadence.NewDictionary(metadata) - _ = tx.AddArgument(play) - - signAndSubmit( - t, b, tx, - []flow.Address{b.ServiceKey().Address, topshotAddr}, []crypto.Signer{serviceKeySigner, topshotSigner}, - false, - ) + metadatas := [][]cadence.KeyValuePair{ + {{Key: firstName, Value: oladipo}}, + {{Key: firstName, Value: hayward}}, + {{Key: firstName, Value: durant}}, + } + for _, metadata := range metadatas { + tb.CreatePlay(t, metadata) + } // Check that the return all plays script doesn't fail // and that we can return metadata about the plays executeScriptAndCheck(t, b, templates.GenerateGetAllPlaysScript(env), nil) - result = executeScriptAndCheck(t, b, templates.GenerateGetPlayMetadataFieldScript(env), [][]byte{jsoncdc.MustEncode(cadence.UInt32(1)), jsoncdc.MustEncode(cadence.String("FullName"))}) + result := executeScriptAndCheck(t, b, templates.GenerateGetPlayMetadataFieldScript(env), [][]byte{jsoncdc.MustEncode(cadence.UInt32(1)), jsoncdc.MustEncode(cadence.String("FullName"))}) assert.Equal(t, CadenceString("Lebron"), result) }) // Admin creates a new Set with the name Genesis t.Run("Should be able to create a new Set", func(t *testing.T) { - tx := createTxWithTemplateAndAuthorizer(b, templates.GenerateMintSetScript(env), topshotAddr) - - _ = tx.AddArgument(CadenceString("Genesis")) - - signAndSubmit( - t, b, tx, - []flow.Address{b.ServiceKey().Address, topshotAddr}, []crypto.Signer{serviceKeySigner, topshotSigner}, - false, - ) + tb.CreateSet(t, "Genesis") // Check that the set name, ID, and series were initialized correctly. result := executeScriptAndCheck(t, b, templates.GenerateGetSetNameScript(env), [][]byte{jsoncdc.MustEncode(cadence.UInt32(1))}) assert.Equal(t, CadenceString("Genesis"), result) result = executeScriptAndCheck(t, b, templates.GenerateGetSetIDsByNameScript(env), [][]byte{jsoncdc.MustEncode(cadence.String("Genesis"))}) - idsArray := cadence.NewArray([]cadence.Value{cadence.NewUInt32(1)}) + idsArray := UInt32Array(1) assert.Equal(t, idsArray, result) result = executeScriptAndCheck(t, b, templates.GenerateGetSetSeriesScript(env), [][]byte{jsoncdc.MustEncode(cadence.UInt32(1))}) @@ -336,7 +272,7 @@ func TestMintNFTs(t *testing.T) { ) // Check that the play ID and set ID were not incremented - result = executeScriptAndCheck(t, b, templates.GenerateGetNextPlayIDScript(env), nil) + result := executeScriptAndCheck(t, b, templates.GenerateGetNextPlayIDScript(env), nil) assert.Equal(t, cadence.NewUInt32(5), result) result = executeScriptAndCheck(t, b, templates.GenerateGetNextSetIDScript(env), nil) @@ -375,7 +311,7 @@ func TestMintNFTs(t *testing.T) { // Make sure the plays were added correctly and the edition isn't retired or locked result := executeScriptAndCheck(t, b, templates.GenerateGetPlaysInSetScript(env), [][]byte{jsoncdc.MustEncode(cadence.UInt32(1))}) - playsArray := cadence.NewArray([]cadence.Value{cadence.NewUInt32(1), cadence.NewUInt32(2), cadence.NewUInt32(3)}) + playsArray := UInt32Array(1, 2, 3) assert.Equal(t, playsArray, result) result = executeScriptAndCheck(t, b, templates.GenerateGetIsEditionRetiredScript(env), [][]byte{jsoncdc.MustEncode(cadence.UInt32(1)), jsoncdc.MustEncode(cadence.UInt32(1))}) @@ -401,24 +337,14 @@ func TestMintNFTs(t *testing.T) { // Admin mints a moment that stores it in the admin's collection t.Run("Should be able to mint a moment", func(t *testing.T) { - tx := createTxWithTemplateAndAuthorizer(b, templates.GenerateMintMomentScript(env), topshotAddr) - - _ = tx.AddArgument(cadence.NewUInt32(1)) - _ = tx.AddArgument(cadence.NewUInt32(1)) - _ = tx.AddArgument(cadence.NewAddress(topshotAddr)) - - signAndSubmit( - t, b, tx, - []flow.Address{b.ServiceKey().Address, topshotAddr}, []crypto.Signer{serviceKeySigner, topshotSigner}, - false, - ) + tb.MintMoment(t, 1, 1, topshotAddr) // make sure the moment was minted correctly and is stored in the collection with the correct data result := executeScriptAndCheck(t, b, templates.GenerateIsIDInCollectionScript(env), [][]byte{jsoncdc.MustEncode(cadence.Address(topshotAddr)), jsoncdc.MustEncode(cadence.UInt64(1))}) assert.Equal(t, cadence.NewBool(true), result) result = executeScriptAndCheck(t, b, templates.GenerateGetCollectionIDsScript(env), [][]byte{jsoncdc.MustEncode(cadence.Address(topshotAddr))}) - idsArray := cadence.NewArray([]cadence.Value{cadence.NewUInt64(1)}) + idsArray := UInt64Array(1) assert.Equal(t, idsArray, result) result = executeScriptAndCheck(t, b, templates.GenerateGetMomentSetScript(env), [][]byte{jsoncdc.MustEncode(cadence.Address(topshotAddr)), jsoncdc.MustEncode(cadence.UInt64(1))}) @@ -427,18 +353,43 @@ func TestMintNFTs(t *testing.T) { }) t.Run("Should be able to get moments metadata", func(t *testing.T) { + // Tests to ensure that all core metadataviews are resolvable expectedMetadataName := "Lebron Dunk" - expectedMetadataDescription := "A series 0 Genesis moment with serial number 1" - expectedMetadataThumbnail := "https://ipfs.dapperlabs.com/ipfs/Qmbdj1agtbzpPWZ81wCGaDiMKRFaRN3TU6cfztVCu6nh4o" - expectedPlayID := 1 - expectedSetID := 1 - expectedSerialNumber := 1 + expectedMetadataDescription := "lorem ipsum" + expectedMetadataThumbnail := "https://assets.nbatopshot.com/media/1?width=256" + expectedMetadataExternalURL := "https://nbatopshot.com/moment/1" + expectedStoragePath := "/storage/MomentCollection" + expectedPublicPath := "/public/MomentCollection" + expectedPrivatePath := "/private/MomentCollection" + expectedCollectionName := "NBA-Top-Shot" + expectedCollectionDescription := "NBA Top Shot is your chance to own, sell, and trade official digital collectibles of the NBA and WNBA's greatest plays and players" + expectedCollectionSquareImage := "https://nbatopshot.com/static/img/og/og.png" + expectedCollectionBannerImage := "https://nbatopshot.com/static/img/top-shot-logo-horizontal-white.svg" + expectedRoyaltyReceiversCount := 1 + expectedTraitsCount := 7 + expectedVideoURL := "https://assets.nbatopshot.com/media/1/video" resultNFT := executeScriptAndCheck(t, b, templates.GenerateGetNFTMetadataScript(env), [][]byte{jsoncdc.MustEncode(cadence.Address(topshotAddr)), jsoncdc.MustEncode(cadence.UInt64(1))}) metadataViewNFT := resultNFT.(cadence.Struct) assert.Equal(t, cadence.String(expectedMetadataName), metadataViewNFT.Fields[0]) assert.Equal(t, cadence.String(expectedMetadataDescription), metadataViewNFT.Fields[1]) assert.Equal(t, cadence.String(expectedMetadataThumbnail), metadataViewNFT.Fields[2]) + assert.Equal(t, cadence.String(expectedMetadataExternalURL), metadataViewNFT.Fields[5]) + assert.Equal(t, cadence.String(expectedStoragePath), metadataViewNFT.Fields[6]) + assert.Equal(t, cadence.String(expectedPublicPath), metadataViewNFT.Fields[7]) + assert.Equal(t, cadence.String(expectedPrivatePath), metadataViewNFT.Fields[8]) + assert.Equal(t, cadence.String(expectedCollectionName), metadataViewNFT.Fields[9]) + assert.Equal(t, cadence.String(expectedCollectionDescription), metadataViewNFT.Fields[10]) + assert.Equal(t, cadence.String(expectedCollectionSquareImage), metadataViewNFT.Fields[11]) + assert.Equal(t, cadence.String(expectedCollectionBannerImage), metadataViewNFT.Fields[12]) + assert.Equal(t, cadence.UInt32(expectedRoyaltyReceiversCount), metadataViewNFT.Fields[13]) + assert.Equal(t, cadence.UInt32(expectedTraitsCount), metadataViewNFT.Fields[14]) + assert.Equal(t, cadence.String(expectedVideoURL), metadataViewNFT.Fields[15]) + + // Tests that top-shot specific metadata is discoverable on-chain + expectedPlayID := 1 + expectedSetID := 1 + expectedSerialNumber := 1 resultTopShot := executeScriptAndCheck(t, b, templates.GenerateGetTopShotMetadataScript(env), [][]byte{jsoncdc.MustEncode(cadence.Address(topshotAddr)), jsoncdc.MustEncode(cadence.UInt64(1))}) metadataViewTopShot := resultTopShot.(cadence.Struct) @@ -502,8 +453,7 @@ func TestMintNFTs(t *testing.T) { assert.Equal(t, cadence.NewBool(true), result) result = executeScriptAndCheck(t, b, templates.GenerateGetCollectionIDsScript(env), [][]byte{jsoncdc.MustEncode(cadence.Address(topshotAddr))}) - idsArray := cadence.NewArray([]cadence.Value{cadence.NewUInt64(3), cadence.NewUInt64(5), cadence.NewUInt64(4), cadence.NewUInt64(2), cadence.NewUInt64(6), cadence.NewUInt64(1)}) - assert.Equal(t, idsArray, result) + CadenceIntArrayContains(t, result, 1, 2, 3, 4, 5, 6) result = executeScriptAndCheck(t, b, templates.GenerateGetMomentSetScript(env), [][]byte{jsoncdc.MustEncode(cadence.Address(topshotAddr)), jsoncdc.MustEncode(cadence.UInt64(1))}) assert.Equal(t, cadence.NewUInt32(1), result) @@ -630,7 +580,7 @@ func TestMintNFTs(t *testing.T) { false, ) // make sure the user received it - result = executeScriptAndCheck(t, b, templates.GenerateIsIDInCollectionScript(env), [][]byte{jsoncdc.MustEncode(cadence.Address(joshAddress)), jsoncdc.MustEncode(cadence.UInt64(1))}) + result := executeScriptAndCheck(t, b, templates.GenerateIsIDInCollectionScript(env), [][]byte{jsoncdc.MustEncode(cadence.Address(joshAddress)), jsoncdc.MustEncode(cadence.UInt64(1))}) assert.Equal(t, cadence.NewBool(true), result) }) @@ -649,7 +599,7 @@ func TestMintNFTs(t *testing.T) { false, ) // make sure the user received them - result = executeScriptAndCheck(t, b, templates.GenerateGetMomentSetScript(env), [][]byte{jsoncdc.MustEncode(cadence.Address(joshAddress)), jsoncdc.MustEncode(cadence.UInt64(2))}) + result := executeScriptAndCheck(t, b, templates.GenerateGetMomentSetScript(env), [][]byte{jsoncdc.MustEncode(cadence.Address(joshAddress)), jsoncdc.MustEncode(cadence.UInt64(2))}) assert.Equal(t, cadence.NewUInt32(1), result) }) @@ -665,7 +615,7 @@ func TestMintNFTs(t *testing.T) { }) // Make sure the contract fields are correct - result = executeScriptAndCheck(t, b, templates.GenerateGetSeriesScript(env), nil) + result := executeScriptAndCheck(t, b, templates.GenerateGetSeriesScript(env), nil) assert.Equal(t, cadence.NewUInt32(1), result) result = executeScriptAndCheck(t, b, templates.GenerateGetNextPlayIDScript(env), nil) @@ -679,6 +629,57 @@ func TestMintNFTs(t *testing.T) { } +func (b *topshotTestBlockchain) CreatePlay(t *testing.T, metadata []cadence.KeyValuePair) { + tx := createTxWithTemplateAndAuthorizer(b.Blockchain, templates.GenerateMintPlayScript(b.env), b.topshotAdminAddr) + play := cadence.NewDictionary(metadata) + _ = tx.AddArgument(play) + + signAndSubmit( + t, b.Blockchain, tx, + []flow.Address{b.ServiceKey().Address, b.topshotAdminAddr}, []crypto.Signer{b.serviceKeySigner, b.topshotAdminSigner}, + false, + ) +} + +func (b *topshotTestBlockchain) UpdateTagline(t *testing.T, plays []cadence.KeyValuePair) { + tx := createTxWithTemplateAndAuthorizer(b.Blockchain, templates.GenerateUpdateTaglineScript(b.env), b.topshotAdminAddr) + tags := cadence.NewDictionary(plays) + _ = tx.AddArgument(tags) + + signAndSubmit( + t, b.Blockchain, tx, + []flow.Address{b.ServiceKey().Address, b.topshotAdminAddr}, []crypto.Signer{b.serviceKeySigner, b.topshotAdminSigner}, + false, + ) +} + +func (b *topshotTestBlockchain) CreateSet(t *testing.T, setName string) { + tx := createTxWithTemplateAndAuthorizer(b.Blockchain, templates.GenerateMintSetScript(b.env), b.topshotAdminAddr) + + _ = tx.AddArgument(CadenceString(setName)) + + signAndSubmit( + t, b.Blockchain, tx, + []flow.Address{b.ServiceKey().Address, b.topshotAdminAddr}, []crypto.Signer{b.serviceKeySigner, b.topshotAdminSigner}, + false, + ) +} + +// MintMoment will mint a moment from the supplied set and play id into the recipients account +func (b *topshotTestBlockchain) MintMoment(t *testing.T, setID uint32, playID uint32, recipient flow.Address) { + tx := createTxWithTemplateAndAuthorizer(b.Blockchain, templates.GenerateMintMomentScript(b.env), b.topshotAdminAddr) + + _ = tx.AddArgument(cadence.NewUInt32(setID)) + _ = tx.AddArgument(cadence.NewUInt32(playID)) + _ = tx.AddArgument(cadence.NewAddress(recipient)) + + signAndSubmit( + t, b.Blockchain, tx, + []flow.Address{b.ServiceKey().Address, b.topshotAdminAddr}, []crypto.Signer{b.serviceKeySigner, b.topshotAdminSigner}, + false, + ) +} + // This test is for ensuring that admin receiver smart contract works correctly func TestTransferAdmin(t *testing.T) { b := newBlockchain() @@ -726,10 +727,17 @@ func TestTransferAdmin(t *testing.T) { }, }) + royaltyAddr, err := b.CreateAccount(nil, []sdktemplates.Contract{}) + if !assert.NoError(t, err) { + t.Log(err.Error()) + } + _, err = b.CommitBlock() + assert.NoError(t, err) + env.TopShotLockingAddress = topShotLockingAddr.String() // First, deploy the topshot contract - topshotCode := contracts.GenerateTopShotContract(nftAddr.String(), metadataViewsAddr.String(), topShotLockingAddr.String()) + topshotCode := contracts.GenerateTopShotContract(emulatorFTAddress, nftAddr.String(), metadataViewsAddr.String(), topShotLockingAddr.String(), royaltyAddr.String(), Network) topshotAccountKey, topshotSigner := accountKeys.NewWithSigner() topshotAddr, _ := b.CreateAccount([]*flow.AccountKey{topshotAccountKey}, []sdktemplates.Contract{ { @@ -779,95 +787,40 @@ func TestTransferAdmin(t *testing.T) { ) }) + tb := topshotTestBlockchain{ + Blockchain: b, + env: env, + topshotAdminAddr: adminAddr, + serviceKeySigner: serviceKeySigner, + topshotAdminSigner: adminSigner, + accountKeys: accountKeys, + } // can create a new play with the new admin t.Run("Should be able to create a new Play with the new Admin account", func(t *testing.T) { - - tx := createTxWithTemplateAndAuthorizer(b, templates.GenerateMintPlayScript(env), adminAddr) - - metadata := []cadence.KeyValuePair{{Key: firstName, Value: lebron}} - play := cadence.NewDictionary(metadata) - _ = tx.AddArgument(play) - - signAndSubmit( - t, b, tx, - []flow.Address{b.ServiceKey().Address, adminAddr}, []crypto.Signer{serviceKeySigner, adminSigner}, - false, - ) + tb.CreatePlay(t, []cadence.KeyValuePair{{Key: firstName, Value: lebron}}) }) } func TestSetPlaysOwnedByAddressScript(t *testing.T) { // Setup - b := newBlockchain() - - serviceKeySigner, err := b.ServiceKey().Signer() - assert.NoError(t, err) + tb := NewTopShotTestBlockchain(t) + b := tb.Blockchain + env := tb.env + serviceKeySigner := tb.serviceKeySigner + topshotAddr := tb.topshotAdminAddr + topshotSigner := tb.topshotAdminSigner - accountKeys := test.AccountKeyGenerator() + // Create a new user account + joshAccountKey, joshSigner := tb.accountKeys.NewWithSigner() + joshAddress, _ := b.CreateAccount([]*flow.AccountKey{joshAccountKey}, nil) - env := templates.Environment{ - FungibleTokenAddress: emulatorFTAddress, - FlowTokenAddress: emulatorFlowTokenAddress, - } - - // Should be able to deploy a contract as a new account with no keys. - nftCode, _ := DownloadFile(NonFungibleTokenContractsBaseURL + NonFungibleTokenInterfaceFile) - nftAddr, _ := b.CreateAccount(nil, []sdktemplates.Contract{ - { - Name: "NonFungibleToken", - Source: string(nftCode), - }, - }) - - env.NFTAddress = nftAddr.String() - - // Should be able to deploy a contract as a new account with no keys. - metadataViewsCode, _ := DownloadFile(MetadataViewsContractsBaseURL + MetadataViewsInterfaceFile) - parsedMetadataContract := strings.Replace(string(metadataViewsCode), MetadataFTReplaceAddress, "0x"+emulatorFTAddress, 1) - parsedMetadataContract = strings.Replace(parsedMetadataContract, MetadataNFTReplaceAddress, "0x"+nftAddr.String(), 1) - metadataViewsAddr, _ := b.CreateAccount(nil, []sdktemplates.Contract{ - { - Name: "MetadataViews", - Source: parsedMetadataContract, - }, - }) - - env.MetadataViewsAddress = metadataViewsAddr.String() - - // Deploy TopShot Locking contract - topshotLockingCode := contracts.GenerateTopShotLockingContract(nftAddr.String()) - topShotLockingAddr, err := b.CreateAccount(nil, []sdktemplates.Contract{ - { - Name: "TopShotLocking", - Source: string(topshotLockingCode), - }, - }) - - env.TopShotLockingAddress = topShotLockingAddr.String() - - // First, deploy the topshot contract - topshotCode := contracts.GenerateTopShotContract(nftAddr.String(), metadataViewsAddr.String(), topShotLockingAddr.String()) - topshotAccountKey, topshotSigner := accountKeys.NewWithSigner() - topshotAddr, _ := b.CreateAccount([]*flow.AccountKey{topshotAccountKey}, []sdktemplates.Contract{ - { - Name: "TopShot", - Source: string(topshotCode), - }, - }) - - env.TopShotAddress = topshotAddr.String() - - // Create a new user account - joshAccountKey, joshSigner := accountKeys.NewWithSigner() - joshAddress, _ := b.CreateAccount([]*flow.AccountKey{joshAccountKey}, nil) - - // Create moment collection - tx := createTxWithTemplateAndAuthorizer(b, templates.GenerateSetupAccountScript(env), joshAddress) - signAndSubmit( - t, b, tx, - []flow.Address{b.ServiceKey().Address, joshAddress}, []crypto.Signer{serviceKeySigner, joshSigner}, - false, - ) + // Create moment collection + tx := createTxWithTemplateAndAuthorizer(b, templates.GenerateSetupAccountScript(env), joshAddress) + signAndSubmit( + t, b, tx, + []flow.Address{b.ServiceKey().Address, joshAddress}, []crypto.Signer{serviceKeySigner, joshSigner}, + false, + ) firstName := CadenceString("FullName") lebron := CadenceString("Lebron") @@ -876,53 +829,20 @@ func TestSetPlaysOwnedByAddressScript(t *testing.T) { // Create plays lebronPlayID := uint32(1) - tx = createTxWithTemplateAndAuthorizer(b, templates.GenerateMintPlayScript(env), topshotAddr) - - metadata := []cadence.KeyValuePair{{Key: firstName, Value: lebron}} - play := cadence.NewDictionary(metadata) - _ = tx.AddArgument(play) - - signAndSubmit( - t, b, tx, - []flow.Address{b.ServiceKey().Address, topshotAddr}, []crypto.Signer{serviceKeySigner, topshotSigner}, - false, - ) haywardPlayID := uint32(2) - tx = createTxWithTemplateAndAuthorizer(b, templates.GenerateMintPlayScript(env), topshotAddr) - - metadata = []cadence.KeyValuePair{{Key: firstName, Value: hayward}} - play = cadence.NewDictionary(metadata) - _ = tx.AddArgument(play) - - signAndSubmit( - t, b, tx, - []flow.Address{b.ServiceKey().Address, topshotAddr}, []crypto.Signer{serviceKeySigner, topshotSigner}, - false, - ) antetokounmpoPlayID := uint32(3) - tx = createTxWithTemplateAndAuthorizer(b, templates.GenerateMintPlayScript(env), topshotAddr) - - metadata = []cadence.KeyValuePair{{Key: firstName, Value: antetokounmpo}} - play = cadence.NewDictionary(metadata) - _ = tx.AddArgument(play) - - signAndSubmit( - t, b, tx, - []flow.Address{b.ServiceKey().Address, topshotAddr}, []crypto.Signer{serviceKeySigner, topshotSigner}, - false, - ) + metadatas := [][]cadence.KeyValuePair{ + {{Key: firstName, Value: lebron}}, + {{Key: firstName, Value: hayward}}, + {{Key: firstName, Value: antetokounmpo}}, + } + for _, metadata := range metadatas { + tb.CreatePlay(t, metadata) + } // Create Set genesisSetID := uint32(1) - tx = createTxWithTemplateAndAuthorizer(b, templates.GenerateMintSetScript(env), topshotAddr) - - _ = tx.AddArgument(CadenceString("Genesis")) - - signAndSubmit( - t, b, tx, - []flow.Address{b.ServiceKey().Address, topshotAddr}, []crypto.Signer{serviceKeySigner, topshotSigner}, - false, - ) + tb.CreateSet(t, "Genesis") // Add plays to Set tx = createTxWithTemplateAndAuthorizer(b, templates.GenerateAddPlaysToSetScript(env), topshotAddr) @@ -939,40 +859,11 @@ func TestSetPlaysOwnedByAddressScript(t *testing.T) { ) // Mint two moments to joshAddress - tx = createTxWithTemplateAndAuthorizer(b, templates.GenerateMintMomentScript(env), topshotAddr) - - _ = tx.AddArgument(cadence.NewUInt32(genesisSetID)) - _ = tx.AddArgument(cadence.NewUInt32(lebronPlayID)) - _ = tx.AddArgument(cadence.NewAddress(joshAddress)) - - signAndSubmit( - t, b, tx, - []flow.Address{b.ServiceKey().Address, topshotAddr}, []crypto.Signer{serviceKeySigner, topshotSigner}, - false, - ) - tx = createTxWithTemplateAndAuthorizer(b, templates.GenerateMintMomentScript(env), topshotAddr) - - _ = tx.AddArgument(cadence.NewUInt32(genesisSetID)) - _ = tx.AddArgument(cadence.NewUInt32(haywardPlayID)) - _ = tx.AddArgument(cadence.NewAddress(joshAddress)) - signAndSubmit( - t, b, tx, - []flow.Address{b.ServiceKey().Address, topshotAddr}, []crypto.Signer{serviceKeySigner, topshotSigner}, - false, - ) + tb.MintMoment(t, genesisSetID, lebronPlayID, joshAddress) + tb.MintMoment(t, genesisSetID, haywardPlayID, joshAddress) // Mint one moment to topshotAddress - tx = createTxWithTemplateAndAuthorizer(b, templates.GenerateMintMomentScript(env), topshotAddr) - - _ = tx.AddArgument(cadence.NewUInt32(genesisSetID)) - _ = tx.AddArgument(cadence.NewUInt32(lebronPlayID)) - _ = tx.AddArgument(cadence.NewAddress(topshotAddr)) - - signAndSubmit( - t, b, tx, - []flow.Address{b.ServiceKey().Address, topshotAddr}, []crypto.Signer{serviceKeySigner, topshotSigner}, - false, - ) + tb.MintMoment(t, genesisSetID, lebronPlayID, topshotAddr) t.Run("Should return true if the address owns moments corresponding to each SetPlay", func(t *testing.T) { script := templates.GenerateSetPlaysOwnedByAddressScript(env) @@ -1010,64 +901,13 @@ func TestSetPlaysOwnedByAddressScript(t *testing.T) { func TestDestroyMoments(t *testing.T) { // Setup - b := newBlockchain() - - serviceKeySigner, err := b.ServiceKey().Signer() - assert.NoError(t, err) - - accountKeys := test.AccountKeyGenerator() - - env := templates.Environment{ - FungibleTokenAddress: emulatorFTAddress, - FlowTokenAddress: emulatorFlowTokenAddress, - } - - // Should be able to deploy a contract as a new account with no keys. - nftCode, _ := DownloadFile(NonFungibleTokenContractsBaseURL + NonFungibleTokenInterfaceFile) - nftAddr, _ := b.CreateAccount(nil, []sdktemplates.Contract{ - { - Name: "NonFungibleToken", - Source: string(nftCode), - }, - }) - - env.NFTAddress = nftAddr.String() - - // Should be able to deploy a contract as a new account with no keys. - metadataViewsCode, _ := DownloadFile(MetadataViewsContractsBaseURL + MetadataViewsInterfaceFile) - parsedMetadataContract := strings.Replace(string(metadataViewsCode), MetadataFTReplaceAddress, "0x"+emulatorFTAddress, 1) - parsedMetadataContract = strings.Replace(parsedMetadataContract, MetadataNFTReplaceAddress, "0x"+nftAddr.String(), 1) - metadataViewsAddr, _ := b.CreateAccount(nil, []sdktemplates.Contract{ - { - Name: "MetadataViews", - Source: parsedMetadataContract, - }, - }) - - env.MetadataViewsAddress = metadataViewsAddr.String() - - // Deploy TopShot Locking contract - topshotLockingCode := contracts.GenerateTopShotLockingContract(nftAddr.String()) - topShotLockingAddr, err := b.CreateAccount(nil, []sdktemplates.Contract{ - { - Name: "TopShotLocking", - Source: string(topshotLockingCode), - }, - }) - - env.TopShotLockingAddress = topShotLockingAddr.String() - - // First, deploy the topshot contract - topshotCode := contracts.GenerateTopShotContract(nftAddr.String(), metadataViewsAddr.String(), topShotLockingAddr.String()) - topshotAccountKey, topshotSigner := accountKeys.NewWithSigner() - topshotAddr, _ := b.CreateAccount([]*flow.AccountKey{topshotAccountKey}, []sdktemplates.Contract{ - { - Name: "TopShot", - Source: string(topshotCode), - }, - }) - - env.TopShotAddress = topshotAddr.String() + tb := NewTopShotTestBlockchain(t) + b := tb.Blockchain + serviceKeySigner := tb.serviceKeySigner + topshotAddr := tb.topshotAdminAddr + accountKeys := tb.accountKeys + topshotSigner := tb.topshotAdminSigner + env := tb.env // Should be able to deploy the token contract tokenCode := fungibleToken.CustomToken(defaultfungibleTokenAddr, defaultTokenName, defaultTokenStorage, "1000.0") @@ -1087,7 +927,7 @@ func TestDestroyMoments(t *testing.T) { env.DUCAddress = tokenAddr.String() // Setup with the first market contract - marketCode := contracts.GenerateTopShotMarketContract(defaultfungibleTokenAddr, nftAddr.String(), topshotAddr.String(), env.DUCAddress) + marketCode := contracts.GenerateTopShotMarketContract(defaultfungibleTokenAddr, env.NFTAddress, topshotAddr.String(), env.DUCAddress) marketAddr, err := b.CreateAccount(nil, []sdktemplates.Contract{ { Name: "Market", @@ -1103,7 +943,7 @@ func TestDestroyMoments(t *testing.T) { env.TopShotMarketAddress = marketAddr.String() // Should be able to deploy the third market contract - marketV3Code := contracts.GenerateTopShotMarketV3Contract(defaultfungibleTokenAddr, nftAddr.String(), topshotAddr.String(), marketAddr.String(), env.DUCAddress, topShotLockingAddr.String()) + marketV3Code := contracts.GenerateTopShotMarketV3Contract(defaultfungibleTokenAddr, env.NFTAddress, topshotAddr.String(), marketAddr.String(), env.DUCAddress, env.TopShotLockingAddress, env.MetadataViewsAddress) marketV3Addr, err := b.CreateAccount(nil, []sdktemplates.Contract{ { Name: "TopShotMarketV3", @@ -1169,53 +1009,20 @@ func TestDestroyMoments(t *testing.T) { // Create plays lebronPlayID := uint32(1) - tx = createTxWithTemplateAndAuthorizer(b, templates.GenerateMintPlayScript(env), topshotAddr) - - metadata := []cadence.KeyValuePair{{Key: firstName, Value: lebron}} - play := cadence.NewDictionary(metadata) - _ = tx.AddArgument(play) - - signAndSubmit( - t, b, tx, - []flow.Address{b.ServiceKey().Address, topshotAddr}, []crypto.Signer{serviceKeySigner, topshotSigner}, - false, - ) haywardPlayID := uint32(2) - tx = createTxWithTemplateAndAuthorizer(b, templates.GenerateMintPlayScript(env), topshotAddr) - - metadata = []cadence.KeyValuePair{{Key: firstName, Value: hayward}} - play = cadence.NewDictionary(metadata) - _ = tx.AddArgument(play) - - signAndSubmit( - t, b, tx, - []flow.Address{b.ServiceKey().Address, topshotAddr}, []crypto.Signer{serviceKeySigner, topshotSigner}, - false, - ) antetokounmpoPlayID := uint32(3) - tx = createTxWithTemplateAndAuthorizer(b, templates.GenerateMintPlayScript(env), topshotAddr) - metadata = []cadence.KeyValuePair{{Key: firstName, Value: antetokounmpo}} - play = cadence.NewDictionary(metadata) - _ = tx.AddArgument(play) - - signAndSubmit( - t, b, tx, - []flow.Address{b.ServiceKey().Address, topshotAddr}, []crypto.Signer{serviceKeySigner, topshotSigner}, - false, - ) + for _, metadata := range [][]cadence.KeyValuePair{ + {{Key: firstName, Value: lebron}}, + {{Key: firstName, Value: hayward}}, + {{Key: firstName, Value: antetokounmpo}}, + } { + tb.CreatePlay(t, metadata) + } // Create Set genesisSetID := uint32(1) - tx = createTxWithTemplateAndAuthorizer(b, templates.GenerateMintSetScript(env), topshotAddr) - - _ = tx.AddArgument(CadenceString("Genesis")) - - signAndSubmit( - t, b, tx, - []flow.Address{b.ServiceKey().Address, topshotAddr}, []crypto.Signer{serviceKeySigner, topshotSigner}, - false, - ) + tb.CreateSet(t, "Genesis") // Add plays to Set tx = createTxWithTemplateAndAuthorizer(b, templates.GenerateAddPlaysToSetScript(env), topshotAddr) @@ -1232,27 +1039,8 @@ func TestDestroyMoments(t *testing.T) { ) // Mint two moments to joshAddress - tx = createTxWithTemplateAndAuthorizer(b, templates.GenerateMintMomentScript(env), topshotAddr) - - _ = tx.AddArgument(cadence.NewUInt32(genesisSetID)) - _ = tx.AddArgument(cadence.NewUInt32(lebronPlayID)) - _ = tx.AddArgument(cadence.NewAddress(joshAddress)) - - signAndSubmit( - t, b, tx, - []flow.Address{b.ServiceKey().Address, topshotAddr}, []crypto.Signer{serviceKeySigner, topshotSigner}, - false, - ) - tx = createTxWithTemplateAndAuthorizer(b, templates.GenerateMintMomentScript(env), topshotAddr) - - _ = tx.AddArgument(cadence.NewUInt32(genesisSetID)) - _ = tx.AddArgument(cadence.NewUInt32(haywardPlayID)) - _ = tx.AddArgument(cadence.NewAddress(joshAddress)) - signAndSubmit( - t, b, tx, - []flow.Address{b.ServiceKey().Address, topshotAddr}, []crypto.Signer{serviceKeySigner, topshotSigner}, - false, - ) + tb.MintMoment(t, genesisSetID, lebronPlayID, joshAddress) + tb.MintMoment(t, genesisSetID, haywardPlayID, joshAddress) //check that moments with ids 1 and 2 exist in josh's collection result := executeScriptAndCheck(t, b, templates.GenerateIsIDInCollectionScript(env), [][]byte{jsoncdc.MustEncode(cadence.Address(joshAddress)), jsoncdc.MustEncode(cadence.UInt64(1))}) @@ -1326,3 +1114,219 @@ func TestDestroyMoments(t *testing.T) { assertEqual(t, cadence.NewInt(0), result) }) } + +func TestDestroyMomentsV2(t *testing.T) { + // Setup + tb := NewTopShotTestBlockchain(t) + b := tb.Blockchain + serviceKeySigner := tb.serviceKeySigner + topshotAddr := tb.topshotAdminAddr + accountKeys := tb.accountKeys + topshotSigner := tb.topshotAdminSigner + env := tb.env + + // Should be able to deploy the token contract + tokenCode := fungibleToken.CustomToken(defaultfungibleTokenAddr, defaultTokenName, defaultTokenStorage, "1000.0") + tokenAccountKey, tokenSigner := accountKeys.NewWithSigner() + tokenAddr, err := b.CreateAccount([]*flow.AccountKey{tokenAccountKey}, []sdktemplates.Contract{ + { + Name: "DapperUtilityCoin", + Source: string(tokenCode), + }, + }) + if !assert.NoError(t, err) { + t.Log(err.Error()) + } + _, err = b.CommitBlock() + assert.NoError(t, err) + + env.DUCAddress = tokenAddr.String() + + // Setup with the first market contract + marketCode := contracts.GenerateTopShotMarketContract(defaultfungibleTokenAddr, env.NFTAddress, topshotAddr.String(), env.DUCAddress) + marketAddr, err := b.CreateAccount(nil, []sdktemplates.Contract{ + { + Name: "Market", + Source: string(marketCode), + }, + }) + if !assert.Nil(t, err) { + t.Log(err.Error()) + } + _, err = b.CommitBlock() + require.NoError(t, err) + + env.TopShotMarketAddress = marketAddr.String() + + // Should be able to deploy the third market contract + marketV3Code := contracts.GenerateTopShotMarketV3Contract(defaultfungibleTokenAddr, env.NFTAddress, topshotAddr.String(), marketAddr.String(), env.DUCAddress, env.TopShotLockingAddress, env.MetadataViewsAddress) + marketV3Addr, err := b.CreateAccount(nil, []sdktemplates.Contract{ + { + Name: "TopShotMarketV3", + Source: string(marketV3Code), + }, + }) + if !assert.Nil(t, err) { + t.Log(err.Error()) + } + _, err = b.CommitBlock() + require.NoError(t, err) + + env.TopShotMarketV3Address = marketV3Addr.String() + + // Should be able to deploy the token forwarding contract + forwardingCode := fungibleToken.CustomTokenForwarding(defaultfungibleTokenAddr, defaultTokenName, defaultTokenStorage) + forwardingAddr, err := b.CreateAccount(nil, []sdktemplates.Contract{ + { + Name: "TokenForwarding", + Source: string(forwardingCode), + }, + }) + if !assert.NoError(t, err) { + t.Log(err.Error()) + } + _, err = b.CommitBlock() + assert.NoError(t, err) + + env.ForwardingAddress = forwardingAddr.String() + + // Create a new user account + joshAccountKey, joshSigner := accountKeys.NewWithSigner() + joshAddress, _ := b.CreateAccount([]*flow.AccountKey{joshAccountKey}, nil) + + tx := createTxWithTemplateAndAuthorizer(b, fungibleTokenTemplates.GenerateCreateTokenScript(flow.HexToAddress(defaultfungibleTokenAddr), tokenAddr, defaultTokenName), joshAddress) + + signAndSubmit( + t, b, tx, + []flow.Address{b.ServiceKey().Address, joshAddress}, []crypto.Signer{serviceKeySigner, joshSigner}, + false, + ) + + tx = createTxWithTemplateAndAuthorizer(b, fungibleTokenTemplates.GenerateMintTokensScript(flow.HexToAddress(defaultfungibleTokenAddr), tokenAddr, joshAddress, defaultTokenName, 80), tokenAddr) + + signAndSubmit( + t, b, tx, + []flow.Address{b.ServiceKey().Address, tokenAddr}, []crypto.Signer{serviceKeySigner, tokenSigner}, + false, + ) + + // Create moment collection + tx = createTxWithTemplateAndAuthorizer(b, templates.GenerateSetupAccountScript(env), joshAddress) + signAndSubmit( + t, b, tx, + []flow.Address{b.ServiceKey().Address, joshAddress}, []crypto.Signer{serviceKeySigner, joshSigner}, + false, + ) + + firstName := CadenceString("FullName") + lebron := CadenceString("Lebron") + hayward := CadenceString("Hayward") + antetokounmpo := CadenceString("Antetokounmpo") + + // Create plays + lebronPlayID := uint32(1) + haywardPlayID := uint32(2) + antetokounmpoPlayID := uint32(3) + + for _, metadata := range [][]cadence.KeyValuePair{ + {{Key: firstName, Value: lebron}}, + {{Key: firstName, Value: hayward}}, + {{Key: firstName, Value: antetokounmpo}}, + } { + tb.CreatePlay(t, metadata) + } + + // Create Set + genesisSetID := uint32(1) + tb.CreateSet(t, "Genesis") + + // Add plays to Set + tx = createTxWithTemplateAndAuthorizer(b, templates.GenerateAddPlaysToSetScript(env), topshotAddr) + + _ = tx.AddArgument(cadence.NewUInt32(genesisSetID)) + + plays := []cadence.Value{cadence.NewUInt32(lebronPlayID), cadence.NewUInt32(haywardPlayID), cadence.NewUInt32(antetokounmpoPlayID)} + _ = tx.AddArgument(cadence.NewArray(plays)) + + signAndSubmit( + t, b, tx, + []flow.Address{b.ServiceKey().Address, topshotAddr}, []crypto.Signer{serviceKeySigner, topshotSigner}, + false, + ) + + // Mint three moments to joshAddress + tb.MintMoment(t, genesisSetID, lebronPlayID, joshAddress) + tb.MintMoment(t, genesisSetID, haywardPlayID, joshAddress) + tb.MintMoment(t, genesisSetID, haywardPlayID, joshAddress) + + ducPublicPath := cadence.Path{Domain: "public", Identifier: "dapperUtilityCoinReceiver"} + + // Create a marketv1 sale collection for Josh + // setting himself as the beneficiary with a 15% cut + tx = createTxWithTemplateAndAuthorizer(b, templates.GenerateCreateAndStartSaleScript(env), joshAddress) + + _ = tx.AddArgument(ducPublicPath) + _ = tx.AddArgument(cadence.NewAddress(joshAddress)) + _ = tx.AddArgument(CadenceUFix64("0.15")) + _ = tx.AddArgument(cadence.NewUInt64(2)) + _ = tx.AddArgument(CadenceUFix64("50.0")) + + signAndSubmit( + t, b, tx, + []flow.Address{b.ServiceKey().Address, joshAddress}, []crypto.Signer{serviceKeySigner, joshSigner}, + false, + ) + + // Create a sale collection for josh's account, setting josh as the beneficiary + // and with a 15% cut + tx = createTxWithTemplateAndAuthorizer(b, templates.GenerateCreateAndStartSaleV3Script(env), joshAddress) + + _ = tx.AddArgument(ducPublicPath) + _ = tx.AddArgument(cadence.NewAddress(joshAddress)) + _ = tx.AddArgument(CadenceUFix64("0.15")) + _ = tx.AddArgument(cadence.NewUInt64(1)) + _ = tx.AddArgument(CadenceUFix64("50.0")) + + signAndSubmit( + t, b, tx, + []flow.Address{b.ServiceKey().Address, joshAddress}, []crypto.Signer{serviceKeySigner, joshSigner}, + false, + ) + + // lock the third moment + tx = createTxWithTemplateAndAuthorizer(b, templates.GenerateTopShotLockingLockMomentScript(env), joshAddress) + + _ = tx.AddArgument(cadence.NewUInt64(3)) + duration, _ := cadence.NewUFix64("31536000.0") + _ = tx.AddArgument(duration) + + signAndSubmit( + t, b, tx, + []flow.Address{b.ServiceKey().Address, joshAddress}, []crypto.Signer{serviceKeySigner, joshSigner}, + false, + ) + + // Verify moment is locked + result := executeScriptAndCheck(t, b, templates.GenerateGetMomentIsLockedScript(env), [][]byte{ + jsoncdc.MustEncode(cadence.Address(joshAddress)), + jsoncdc.MustEncode(cadence.UInt64(3)), + }) + assertEqual(t, cadence.NewBool(true), result) + + t.Run("Should destroy the 3 moments created in Josh account, including locked", func(t *testing.T) { + tx = createTxWithTemplateAndAuthorizer(b, templates.GenerateDestroyMomentsV2Script(env), joshAddress) + _ = tx.AddArgument(cadence.NewArray([]cadence.Value{cadence.NewUInt64(1), cadence.NewUInt64(2), cadence.NewUInt64(3)})) + signAndSubmit( + t, b, tx, + []flow.Address{b.ServiceKey().Address, joshAddress}, []crypto.Signer{serviceKeySigner, joshSigner}, + false, + ) + + // verify that the moments no longer exist in josh's collection + for _, momentID := range []uint64{1, 2, 3} { + r, err := b.ExecuteScript(templates.GenerateIsIDInCollectionScript(env), [][]byte{jsoncdc.MustEncode(cadence.Address(joshAddress)), jsoncdc.MustEncode(cadence.UInt64(momentID))}) + assert.NoError(t, err) + assert.Contains(t, r.Error.Error(), "NFT does not exist in the collection") + } + }) +} diff --git a/transactions/admin/batch_mint_moment_with_subedition.cdc b/transactions/admin/batch_mint_moment_with_subedition.cdc new file mode 100644 index 00000000..c81aeb45 --- /dev/null +++ b/transactions/admin/batch_mint_moment_with_subedition.cdc @@ -0,0 +1,43 @@ +import TopShot from 0xTOPSHOTADDRESS + +// This transaction mints multiple moments +// from a single set/play/subedition combination + +// Parameters: +// +// setID: the ID of the set to be minted from +// playID: the ID of the Play from which the Moments are minted +// subeditionID: the ID of play's subedition +// quantity: the quantity of Moments to be minted +// recipientAddr: the Flow address of the account receiving the collection of minted moments + +transaction(setID: UInt32, playID: UInt32, quantity: UInt64, subeditionID: UInt32, recipientAddr: Address) { + + // Local variable for the topshot Admin object + let adminRef: &TopShot.Admin + + prepare(acct: AuthAccount) { + + // borrow a reference to the Admin resource in storage + self.adminRef = acct.borrow<&TopShot.Admin>(from: /storage/TopShotAdmin)! + } + + execute { + + // borrow a reference to the set to be minted from + let setRef = self.adminRef.borrowSet(setID: setID) + + // Mint all the new NFTs with Subeditions + let collection <- setRef.batchMintMomentWithSubedition(playID: playID, quantity: quantity, subeditionID: subeditionID) + + // Get the account object for the recipient of the minted tokens + let recipient = getAccount(recipientAddr) + + // get the Collection reference for the receiver + let receiverRef = recipient.getCapability(/public/MomentCollection).borrow<&{TopShot.MomentCollectionPublic}>() + ?? panic("Cannot borrow a reference to the recipient's collection") + + // deposit the NFT in the receivers collection + receiverRef.batchDeposit(tokens: <-collection) + } +} \ No newline at end of file diff --git a/transactions/admin/create_new_subedition_admin_resource.cdc b/transactions/admin/create_new_subedition_admin_resource.cdc new file mode 100644 index 00000000..9319abec --- /dev/null +++ b/transactions/admin/create_new_subedition_admin_resource.cdc @@ -0,0 +1,21 @@ +import TopShot from 0xTOPSHOTADDRESS + +// This transaction is for the admin to create a new subedition admin resource +// and store it in the top shot smart contract + +transaction() { + + // Local variable for the topshot Admin object + let adminRef: &TopShot.Admin + + prepare(acct: AuthAccount) { + + // borrow a reference to the Admin resource in storage + self.adminRef = acct.borrow<&TopShot.Admin>(from: /storage/TopShotAdmin) + ?? panic("Could not borrow a reference to the Admin resource") + } + + execute { + self.adminRef.createSubeditionAdminResource() + } +} \ No newline at end of file diff --git a/transactions/admin/create_subedition.cdc b/transactions/admin/create_subedition.cdc new file mode 100644 index 00000000..2fd737c8 --- /dev/null +++ b/transactions/admin/create_subedition.cdc @@ -0,0 +1,36 @@ +import TopShot from 0xTOPSHOTADDRESS + +// This transaction creates a new subedition struct +// and stores it in the Top Shot smart contract + +// Parameters: +// +// name: the name of a new Subedition to be created +// metadata: A dictionary of all the play metadata associated + +transaction(name:String, metadata:{String:String}) { + + // Local variable for the topshot Admin object + let adminRef: &TopShot.Admin + let currSubeditionID: UInt32 + + prepare(acct: AuthAccount) { + + // borrow a reference to the admin resource + self.currSubeditionID = TopShot.getNextSubeditionID(); + self.adminRef = acct.borrow<&TopShot.Admin>(from: /storage/TopShotAdmin) + ?? panic("No admin resource in storage") + } + + execute { + + // Create a subedition with the specified metadata + self.adminRef.createSubedition(name: name, metadata: metadata) + } + + post { + + TopShot.getSubeditionByID(subeditionID: self.currSubeditionID) != nil: + "SubedititonID doesnt exist" + } +} \ No newline at end of file diff --git a/transactions/admin/grant_topshot_locking_admin.cdc b/transactions/admin/grant_topshot_locking_admin.cdc new file mode 100644 index 00000000..2134b0bd --- /dev/null +++ b/transactions/admin/grant_topshot_locking_admin.cdc @@ -0,0 +1,14 @@ +import TopShot from 0xTOPSHOTADDRESS +import TopShotLocking from 0xTOPSHOTLOCKINGADDRESS + +// this transaction takes a TopShot Locking Admin resource and +// saves it to the account storage of the account second authorizer + +transaction { + prepare(acct: AuthAccount, acct2: AuthAccount) { + let topShotLockingAdmin = acct.borrow<&TopShotLocking.Admin>(from: TopShotLocking.AdminStoragePath()) + ?? panic("could not borrow admin reference") + + acct2.save(<- topShotLockingAdmin.createNewAdmin(), to: TopShotLocking.AdminStoragePath()) + } +} diff --git a/transactions/admin/mint_moment_with_subedition.cdc b/transactions/admin/mint_moment_with_subedition.cdc new file mode 100644 index 00000000..123fdd74 --- /dev/null +++ b/transactions/admin/mint_moment_with_subedition.cdc @@ -0,0 +1,39 @@ +import TopShot from 0xTOPSHOTADDRESS + +// This transaction is what an admin would use to mint a single new moment +// and deposit it in a user's collection + +// Parameters: +// +// setID: the ID of a set containing the target play +// playID: the ID of a play from which a new moment is minted +// subeditionID: the ID of play's subedition +// recipientAddr: the Flow address of the account receiving the newly minted moment + +transaction(setID: UInt32, playID: UInt32, subeditionID: UInt32, recipientAddr: Address) { + // local variable for the admin reference + let adminRef: &TopShot.Admin + + prepare(acct: AuthAccount) { + // borrow a reference to the Admin resource in storage + self.adminRef = acct.borrow<&TopShot.Admin>(from: /storage/TopShotAdmin)! + } + + execute { + // Borrow a reference to the specified set + let setRef = self.adminRef.borrowSet(setID: setID) + + // Mint a new NFT with Subedition + let moment1 <- setRef.mintMomentWithSubedition(playID: playID, subeditionID: subeditionID) + + // get the public account object for the recipient + let recipient = getAccount(recipientAddr) + + // get the Collection reference for the receiver + let receiverRef = recipient.getCapability(/public/MomentCollection).borrow<&{TopShot.MomentCollectionPublic}>() + ?? panic("Cannot borrow a reference to the recipient's moment collection") + + // deposit the NFT in the receivers collection + receiverRef.deposit(token: <-moment1) + } +} \ No newline at end of file diff --git a/transactions/admin/set_nft_subedition.cdc b/transactions/admin/set_nft_subedition.cdc new file mode 100644 index 00000000..9c78e02c --- /dev/null +++ b/transactions/admin/set_nft_subedition.cdc @@ -0,0 +1,25 @@ +import TopShot from 0xTOPSHOTADDRESS + +// This transaction links nft to subedititon + +// Parameters: +// +// nftID: the unique ID of nft +// subeditionID: the unique ID of subedition + +transaction(nftID: UInt64, subeditionID: UInt32, setID: UInt32, playID: UInt32) { + + // Local variable for the topshot Admin object + let adminRef: &TopShot.Admin + + prepare(acct: AuthAccount) { + // borrow a reference to the admin resource + self.adminRef = acct.borrow<&TopShot.Admin>(from: /storage/TopShotAdmin) + ?? panic("No admin resource in storage") + } + + execute { + // Create a subedition with the specified metadata + self.adminRef.setMomentsSubedition(nftID: nftID, subeditionID: subeditionID, setID: setID, playID: playID) + } +} \ No newline at end of file diff --git a/transactions/admin/set_nfts_lock_expiry.cdc b/transactions/admin/set_nfts_lock_expiry.cdc new file mode 100644 index 00000000..5bc55ecb --- /dev/null +++ b/transactions/admin/set_nfts_lock_expiry.cdc @@ -0,0 +1,17 @@ +import TopShotLocking from 0xTOPSHOTLOCKINGADDRESS + +transaction(ids: [UInt64], expiryTimestamp: UFix64) { + let adminRef: &TopShotLocking.Admin + + prepare(acct: AuthAccount) { + // Set TopShotLocking admin ref + self.adminRef = acct.borrow<&TopShotLocking.Admin>(from: /storage/TopShotLockingAdmin) + ?? panic("Could not find reference to TopShotLocking Admin resource") + } + + execute { + for id in ids { + self.adminRef.setLockExpiryByID(id: id, expiryTimestamp: expiryTimestamp) + } + } +} diff --git a/transactions/admin/update_tagline.cdc b/transactions/admin/update_tagline.cdc new file mode 100644 index 00000000..783fb860 --- /dev/null +++ b/transactions/admin/update_tagline.cdc @@ -0,0 +1,39 @@ +import TopShot from 0xTOPSHOTADDRESS + +// This transaction updates multiple existing plays' taglines +// and stores them in the Top Shot smart contract + +// Parameters: +// +// plays: A dictionary of {playID: tagline} pairs + +transaction(plays: {UInt32: String}) { + + // Local variable for the topshot Admin object + let adminRef: &TopShot.Admin + let firstKey: UInt32 + let lastKey: UInt32 + + prepare(acct: AuthAccount) { + + // borrow a reference to the admin resource + self.adminRef = acct.borrow<&TopShot.Admin>(from: /storage/TopShotAdmin) + ?? panic("No admin resource in storage") + self.firstKey = plays.keys[0] + self.lastKey = plays.keys[plays.keys.length - 1] + } + + execute { + // update multiple plays with the specified metadata + for key in plays.keys { + self.adminRef.updatePlayTagline(playID: key, tagline: plays[key] ?? panic("No tagline for play")) + } + } + + post { + TopShot.getPlayMetaDataByField(playID: self.firstKey, field: "Tagline") != nil: + "First play's tagline does not exist" + TopShot.getPlayMetaDataByField(playID: self.lastKey, field: "Tagline") != nil: + "Last play's tagline does not exist" + } +} diff --git a/transactions/scripts/collections/borrow_nft_safe.cdc b/transactions/scripts/collections/borrow_nft_safe.cdc new file mode 100644 index 00000000..c76417b3 --- /dev/null +++ b/transactions/scripts/collections/borrow_nft_safe.cdc @@ -0,0 +1,32 @@ +import TopShot from 0xTOPSHOTADDRESS +import NonFungibleToken from 0xNFTADDRESS + +// This is a script to get a boolean value safely to see if a moment exists in a collection +// We expect this will not panic if the NFT is not in the collection +// Change the `account` to whatever account you want +// and as long as they have a published Collection receiver, you can +// get reference to the NFTs they own. + +// Parameters: +// +// account: The Flow Address of the account whose moment data needs to be read +// nftID: The ID of the NFT to return + +// Returns: Boolean value indicating if the NFT is in the collection + +pub fun main(account: Address, nftID: UInt64 ): Bool { + + let acct = getAccount(account) + + let collectionRef = acct.getCapability(/public/MomentCollection) + .borrow<&{NonFungibleToken.CollectionPublic}>()! + + let optionalNFT = collectionRef.borrowNFTSafe(id: nftID) + + // optional binding + if let nft = optionalNFT { + return true + } else { + return false + } +} \ No newline at end of file diff --git a/transactions/scripts/get_nft_metadata.cdc b/transactions/scripts/get_nft_metadata.cdc index 8f4a900b..9603a50a 100644 --- a/transactions/scripts/get_nft_metadata.cdc +++ b/transactions/scripts/get_nft_metadata.cdc @@ -7,19 +7,52 @@ pub struct NFT { pub let thumbnail: String pub let owner: Address pub let type: String + pub let externalURL: String + pub let storagePath: String + pub let publicPath: String + pub let privatePath: String + pub let collectionName: String + pub let collectionDescription: String + pub let collectionSquareImage: String + pub let collectionBannerImage: String + pub let royaltyReceiversCount: UInt32 + pub let traitsCount: UInt32 + pub let videoURL: String init( - name: String, - description: String, - thumbnail: String, - owner: Address, - nftType: String, + name: String, + description: String, + thumbnail: String, + owner: Address, + type: String, + externalURL: String, + storagePath: String, + publicPath: String, + privatePath: String, + collectionName: String, + collectionDescription: String, + collectionSquareImage: String, + collectionBannerImage: String, + royaltyReceiversCount: UInt32, + traitsCount: UInt32, + videoURL: String ) { self.name = name self.description = description self.thumbnail = thumbnail self.owner = owner - self.type = nftType + self.type = type + self.externalURL = externalURL + self.storagePath = storagePath + self.publicPath = publicPath + self.privatePath = privatePath + self.collectionName = collectionName + self.collectionDescription = collectionDescription + self.collectionSquareImage = collectionSquareImage + self.collectionBannerImage = collectionBannerImage + self.royaltyReceiversCount = royaltyReceiversCount + self.traitsCount = traitsCount + self.videoURL = videoURL } } @@ -31,19 +64,34 @@ pub fun main(address: Address, id: UInt64): NFT { let nft = collectionRef.borrowMoment(id: id)! - // Get the basic display information for this NFT - let view = nft.resolveView(Type())! + // Get all core views for this TopShot NFT + let displayView = nft.resolveView(Type())! as! MetadataViews.Display + let collectionDisplayView = nft.resolveView(Type())! as! MetadataViews.NFTCollectionDisplay + let collectionDataView = nft.resolveView(Type())! as! MetadataViews.NFTCollectionData + let royaltiesView = nft.resolveView(Type())! as! MetadataViews.Royalties + let externalURLView = nft.resolveView(Type())! as! MetadataViews.ExternalURL + let traitsView = nft.resolveView(Type())! as! MetadataViews.Traits + let mediasView = nft.resolveView(Type())! as! MetadataViews.Medias - let display = view as! MetadataViews.Display - let owner: Address = nft.owner!.address! let nftType = nft.getType() return NFT( - name: display.name, - description: display.description, - thumbnail: display.thumbnail.uri(), + name: displayView.name, + description: displayView.description, + thumbnail: displayView.thumbnail.uri(), owner: owner, - nftType: nftType.identifier, + type: nftType.identifier, + externalURL: externalURLView.url, + storagePath: collectionDataView.storagePath.toString(), + publicPath: collectionDataView.publicPath.toString(), + privatePath: collectionDataView.providerPath.toString(), + collectionName: collectionDisplayView.name, + collectionDescription: collectionDisplayView.description, + collectionSquareImage: collectionDisplayView.squareImage.file.uri(), + collectionBannerImage: collectionDisplayView.bannerImage.file.uri(), + royaltyReceiversCount: UInt32(royaltiesView.getRoyalties().length), + traitsCount: UInt32(traitsView.traits.length), + videoURL: mediasView.items[1].file.uri() ) -} \ No newline at end of file +} diff --git a/transactions/scripts/subeditions/get_all_subeditions.cdc b/transactions/scripts/subeditions/get_all_subeditions.cdc new file mode 100644 index 00000000..17385cdf --- /dev/null +++ b/transactions/scripts/subeditions/get_all_subeditions.cdc @@ -0,0 +1,12 @@ +import TopShot from 0xTOPSHOTADDRESS + +// This script returns an array of all the plays +// that have ever been created for Top Shot + +// Returns: [TopShot.Play] +// array of all plays created for Topshot + +pub fun main(): [TopShot.Subedition] { + + return TopShot.getAllSubeditions() +} \ No newline at end of file diff --git a/transactions/scripts/subeditions/get_nextSubeditionID.cdc b/transactions/scripts/subeditions/get_nextSubeditionID.cdc new file mode 100644 index 00000000..9d6c6b20 --- /dev/null +++ b/transactions/scripts/subeditions/get_nextSubeditionID.cdc @@ -0,0 +1,12 @@ +import TopShot from 0xTOPSHOTADDRESS + +// This script reads the nextSubeditionID from the SubeditionAdmin resource and +// returns that number to the caller + +// Returns: UInt32 +// the next number in nextSubeditionID from the SubeditionAdmin resource + +pub fun main(): UInt32 { + + return TopShot.getNextSubeditionID() +} \ No newline at end of file diff --git a/transactions/scripts/subeditions/get_nft_subedition.cdc b/transactions/scripts/subeditions/get_nft_subedition.cdc new file mode 100644 index 00000000..17a50211 --- /dev/null +++ b/transactions/scripts/subeditions/get_nft_subedition.cdc @@ -0,0 +1,8 @@ +import TopShot from 0xTOPSHOTADDRESS + +pub fun main(nftID: UInt64): UInt32 { + + let subedition = TopShot.getMomentsSubedition(nftID: nftID) + ?? panic("Could not find the specified moment") + return subedition +} \ No newline at end of file diff --git a/transactions/scripts/subeditions/get_subedition_by_id.cdc b/transactions/scripts/subeditions/get_subedition_by_id.cdc new file mode 100644 index 00000000..b7b68b05 --- /dev/null +++ b/transactions/scripts/subeditions/get_subedition_by_id.cdc @@ -0,0 +1,18 @@ +import TopShot from 0xTOPSHOTADDRESS + +// This script returns the full Subedition entity from +// the TopShot smart contract + +// Parameters: +// +// subeditionID: The unique ID for the subedition whose data needs to be read + +// Returns: Subedition +// struct from TopShot contract + +pub fun main(subeditionID: UInt32): TopShot.Subedition { + + let subedititon = TopShot.getSubeditionByID(subeditionID: subeditionID) + + return subedititon +} \ No newline at end of file diff --git a/transactions/shardedCollection/setup_sharded_collection.cdc b/transactions/shardedCollection/setup_sharded_collection.cdc index e11c29f4..8ace9cda 100644 --- a/transactions/shardedCollection/setup_sharded_collection.cdc +++ b/transactions/shardedCollection/setup_sharded_collection.cdc @@ -1,5 +1,6 @@ import TopShot from 0xTOPSHOTADDRESS import TopShotShardedCollection from 0xSHARDEDADDRESS +import NonFungibleToken from 0xNFTADDRESS // This transaction creates and stores an empty moment collection // and creates a public capability for it. @@ -25,7 +26,7 @@ transaction(numBuckets: UInt64) { acct.unlink(/public/MomentCollection) } - acct.link<&{TopShot.MomentCollectionPublic}>(/public/MomentCollection, target: /storage/ShardedMomentCollection) + acct.link<&{NonFungibleToken.Receiver, NonFungibleToken.CollectionPublic, TopShot.MomentCollectionPublic}>(/public/MomentCollection, target: /storage/ShardedMomentCollection) } else { panic("Sharded Collection already exists!") diff --git a/transactions/user/destroy_moments_v2.cdc b/transactions/user/destroy_moments_v2.cdc new file mode 100644 index 00000000..92b36d3a --- /dev/null +++ b/transactions/user/destroy_moments_v2.cdc @@ -0,0 +1,33 @@ +import NonFungibleToken from 0xNFTADDRESS +import TopShot from 0xTOPSHOTADDRESS +import TopShotMarketV3 from 0xMARKETV3ADDRESS + +// This transaction destroys a number of moments owned by a user + +// Parameters +// +// momentIDs: an array of moment IDs of NFTs to be destroyed + +transaction(momentIDs: [UInt64]) { + + let collectionRef: &TopShot.Collection + + prepare(acct: AuthAccount) { + // delist any of the moments that are listed (this delists for both MarketV1 and Marketv3) + if let topshotSaleV3Collection = acct.borrow<&TopShotMarketV3.SaleCollection>(from: TopShotMarketV3.marketStoragePath) { + for id in momentIDs { + if topshotSaleV3Collection.borrowMoment(id: id) != nil{ + // cancel the moment from the sale, thereby de-listing it + topshotSaleV3Collection.cancelSale(tokenID: id) + } + } + } + + self.collectionRef = acct.borrow<&TopShot.Collection>(from: /storage/MomentCollection) + ?? panic("Could not borrow from MomentCollection in storage") + } + + execute { + self.collectionRef.destroyMoments(ids: momentIDs) + } +} diff --git a/transactions/user/setup_account.cdc b/transactions/user/setup_account.cdc index 1eb22815..d5a62a2d 100644 --- a/transactions/user/setup_account.cdc +++ b/transactions/user/setup_account.cdc @@ -20,7 +20,7 @@ transaction { acct.save(<-collection, to: /storage/MomentCollection) // create a public capability for the collection - acct.link<&{NonFungibleToken.CollectionPublic, TopShot.MomentCollectionPublic, MetadataViews.ResolverCollection}>(/public/MomentCollection, target: /storage/MomentCollection) + acct.link<&{NonFungibleToken.Receiver, NonFungibleToken.CollectionPublic, TopShot.MomentCollectionPublic, MetadataViews.ResolverCollection}>(/public/MomentCollection, target: /storage/MomentCollection) } } -} \ No newline at end of file +}