{"version":3,"file":"static/chunks/6779-a270d2b2ebcf6432.js","mappings":"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","sources":["webpack://_N_E/./src/context/AuthContext.tsx","webpack://_N_E/./src/context/UserContext.tsx","webpack://_N_E/../client/stream.ts","webpack://_N_E/../client/mod.ts","webpack://_N_E/../contracts/mod.ts","webpack://_N_E/../stateManager/mod.ts","webpack://_N_E/./src/app/ClientWithStateManager.ts","webpack://_N_E/./src/app/utils.ts","webpack://_N_E/./src/types/index.ts","webpack://_N_E/../schema/compiled.js","webpack://_N_E/../schema/mod.ts","webpack://_N_E/../stateManager/types.ts","webpack://_N_E/../utils/mod.ts","webpack://_N_E/<anon>"],"sourcesContent":["// SPDX-FileCopyrightText: 2024 Mass Labs\n//\n// SPDX-License-Identifier: GPL-3.0-or-later\n\nimport React, { Dispatch, SetStateAction } from \"react\";\nimport { createContext, useContext, useState } from \"react\";\nimport { Status } from \"@/types\";\nexport type IAuthContext = {\n  clientConnected: Status;\n  setIsConnected: Dispatch<SetStateAction<Status>>;\n  isMerchantView: boolean;\n  setIsMerchantView: Dispatch<SetStateAction<boolean>>;\n};\nexport const AuthContext = createContext<IAuthContext>({\n  clientConnected: Status.Pending,\n  setIsConnected: () => {},\n  isMerchantView: false,\n  setIsMerchantView: () => {}\n});\ntype Props = {\n  children: React.ReactNode;\n};\nexport const AuthProvider = (props: Props) => {\n  const [clientConnected, setIsConnected] = useState<Status>(Status.Pending);\n  const [isMerchantView, setIsMerchantView] = useState<boolean>(false);\n  return <AuthContext.Provider value={{\n    clientConnected,\n    setIsConnected,\n    isMerchantView,\n    setIsMerchantView\n  }} data-sentry-element=\"unknown\" data-sentry-component=\"AuthProvider\" data-sentry-source-file=\"AuthContext.tsx\">\n      {props.children}\n    </AuthContext.Provider>;\n};\nexport const useClient = () => useContext(AuthContext);","// SPDX-FileCopyrightText: 2024 Mass Labs\n//\n// SPDX-License-Identifier: GPL-3.0-or-later\n\nimport React, { createContext, useContext, useEffect, useRef, useState } from \"react\";\nimport { useEnsAvatar, useWalletClient } from \"wagmi\";\nimport { hardhat, mainnet, sepolia } from \"viem/chains\";\nimport { usePathname, useSearchParams } from \"next/navigation\";\nimport { discoverRelay, type RelayEndpoint } from \"@massmarket/client\";\nimport { logger } from \"@massmarket/utils\";\nimport * as abi from \"@massmarket/contracts\";\nimport { createGuestWalletClientForChain, createPublicClientForChain } from \"@/app/utils\";\nimport { useClient } from \"@/context/AuthContext\";\nimport { type ClientContext } from \"@/context/types\";\nimport { ShopId, Status } from \"@/types\";\nimport { ClientWithStateManager } from \"@/app/ClientWithStateManager\";\nexport const UserContext = createContext<ClientContext>({\n  walletAddress: null,\n  avatar: null,\n  ensName: null,\n  clientWallet: null,\n  shopPublicClient: null,\n  inviteSecret: null,\n  shopId: \"0x\",\n  relayEndpoint: null,\n  clientWithStateManager: null,\n  setWallet: () => {},\n  setInviteSecret: () => {},\n  setShopId: () => {},\n  checkPermissions: () => new Promise(() => {\n    return false;\n  }),\n  upgradeGuestToCustomer: () => new Promise(() => {}),\n  setClientStateManager: () => {}\n});\nconst namespace = \"frontend:user-context\";\nconst debug = logger(namespace);\nexport const UserContextProvider = (props: React.HTMLAttributes<HTMLDivElement>) => {\n  const pathname = usePathname();\n  const {\n    data: _wallet,\n    status: walletStatus\n  } = useWalletClient();\n  const {\n    setIsConnected,\n    setIsMerchantView,\n    clientConnected\n  } = useClient();\n  const searchParams = useSearchParams();\n  const [walletAddress, setWalletAddress] = useState<`0x${string}` | null>(null);\n  const [avatar, setAvatar] = useState<string | null>(null);\n  const [ensName, setEnsName] = useState<string | null>(null);\n  const [clientWallet, setWallet] = useState(null);\n  const [inviteSecret, setInviteSecret] = useState<`0x${string}` | null>(null);\n  const [shopId, setShopId] = useState<ShopId | null>(null);\n  const [merchantKC, setmerchantKC] = useState<`0x${string}` | null>(null);\n  const [guestCheckoutKC, setGuestKC] = useState<`0x${string}` | null>(null);\n  const [clientWithStateManager, setClientStateManager] = useState<ClientWithStateManager | null>(null);\n  const [relayEndpoint, setRelayEndpoint] = useState<RelayEndpoint | null>(null);\n  const authenticated = useRef(false);\n  const ensAvatar = useEnsAvatar({\n    name: ensName!\n  })?.data;\n  const isMerchantPath = [\"/merchants/\", \"/create-store/\", \"/merchants/connect/\"].includes(pathname);\n  useEffect(() => {\n    if (process && process.env[\"NEXT_PUBLIC_RELAY_TOKEN_ID\"]) {\n      const re = {\n        url: new URL(process.env[\"NEXT_PUBLIC_RELAY_ENDPOINT\"] as string),\n        tokenId: process.env[\"NEXT_PUBLIC_RELAY_TOKEN_ID\"] as `0x${string}`\n      };\n      setRelayEndpoint(re);\n      debug(`using environment variables for relay endpoint ${re.url}`);\n    } else {\n      discoverRelay(\"ws://localhost:4444/v3\").then(discovered => {\n        if (!discovered.url) throw new Error(\"Relay endpoint URL not set\");\n        if (!discovered.tokenId) {\n          throw new Error(\"Relay endpoint tokenId not set\");\n        }\n        setRelayEndpoint(discovered);\n        debug(`using testing relay endpoint ${discovered.url}`);\n      });\n    }\n  }, []);\n  useEffect(() => {\n    if (isMerchantPath) {\n      localStorage.removeItem(\"merchantKC\");\n      localStorage.removeItem(\"guestCheckoutKC\");\n    }\n    //If shopId is provided as a query, set it as shopId, otherwise check for storeId in localStorage.\n    const _shopId = searchParams!.get(\"shopId\") as `0x${string}` || localStorage.getItem(\"shopId\");\n    if (_shopId && !isMerchantPath) {\n      localStorage.setItem(\"shopId\", _shopId);\n      setShopId(_shopId);\n    }\n\n    //Load cached keycards\n    const mKC = localStorage.getItem(\"merchantKC\") as `0x${string}`;\n    const gKC = localStorage.getItem(\"guestCheckoutKC\") as `0x${string}`;\n    if (mKC) {\n      setmerchantKC(mKC);\n    } else if (gKC) {\n      setGuestKC(gKC);\n    }\n  }, []);\n  function getUsedChain() {\n    const chainName = process.env.NEXT_PUBLIC_CHAIN_NAME!;\n    switch (chainName) {\n      case \"hardhat\":\n        return hardhat;\n      case \"sepolia\":\n        return sepolia;\n      case \"mainnet\":\n        return mainnet;\n      default:\n        throw new Error(`unhandled chain name ${chainName}`);\n    }\n  }\n  const shopPublicClient = createPublicClientForChain(getUsedChain());\n  async function checkPermissions() {\n    if (walletAddress) {\n      const hasAccess = (await shopPublicClient.readContract({\n        address: abi.addresses.ShopReg as `0x${string}`,\n        abi: abi.ShopReg,\n        functionName: \"hasPermission\",\n        args: [shopId, walletAddress, abi.permissions.updateRootHash]\n      })) as boolean;\n      return hasAccess;\n    } else return false;\n  }\n  useEffect(() => {\n    if (_wallet && walletStatus == \"success\") {\n      setWallet(_wallet);\n    }\n  }, [walletStatus]);\n  useEffect(() => {\n    if (clientWallet) {\n      setWalletAddress(clientWallet.account.address);\n      ensAvatar && setAvatar(ensAvatar);\n      ensName && setEnsName(clientWallet.account.address);\n    }\n  }, [clientWallet, ensAvatar]);\n  useEffect(() => {\n    if (!shopId || !relayEndpoint ||\n    //If it's the connect merchant page we return, because this useEffect will rerun after setShopId is called in that component and reset the ClientWithStateManager, which we don't want.\n    pathname === \"/merchants/connect/\" || clientConnected !== Status.Pending || authenticated.current) {\n      return;\n    }\n    const clientStateManager = new ClientWithStateManager(shopPublicClient, shopId, relayEndpoint);\n    debug(\"ClientWithStateManager set\");\n    setClientStateManager(clientStateManager);\n    if (isMerchantPath) return;\n    (async () => {\n      //If merchantKC is cached, double check that the KC has permission, then connect & authenticate.\n      if (merchantKC && walletAddress) {\n        debug(\"Connecting with merchant keycard\");\n        await clientStateManager.setClientAndConnect(merchantKC);\n        const hasAccess = await checkPermissions();\n        if (hasAccess) {\n          setIsMerchantView(true);\n          await clientStateManager.sendMerchantSubscriptionRequest();\n          setIsConnected(Status.Complete);\n        }\n      } else if (!merchantKC && !guestCheckoutKC) {\n        //If no keycards are cached, create relayClient with guest wallet, then connect without enrolling a kc or authenticating.\n        await clientStateManager.sendGuestSubscriptionRequest();\n        debug(\"connected without keycard\");\n        setIsConnected(Status.Complete);\n      } else if (guestCheckoutKC) {\n        authenticated.current = true;\n\n        //If guestCheckout keycard is cached, connect, authenticate, and subscribe to orders.\n        await clientStateManager.setClientAndConnect(guestCheckoutKC);\n        await clientStateManager.sendGuestCheckoutSubscriptionRequest();\n        debug(`connected with guest checkout keycard ${guestCheckoutKC}`);\n        setIsConnected(Status.Complete);\n      }\n    })();\n  }, [relayEndpoint, walletAddress, shopId, merchantKC, guestCheckoutKC]);\n  async function upgradeGuestToCustomer() {\n    //Enroll KC with guest wallet.\n    const guestWallet = createGuestWalletClientForChain(getUsedChain());\n    const keyCard = localStorage.getItem(\"keyCardToEnroll\");\n    debug(`Enrolling KC ${keyCard}`);\n    const res = await clientWithStateManager!.relayClient!.enrollKeycard(guestWallet, true, shopId!, new URL(globalThis.location.href));\n    if (!res.ok) {\n      throw new Error(`Failed to enroll keycard: ${res.error}`);\n    }\n    debug(\"Keycard enrolled\");\n    //Cancel and renew subscription with orders\n    await clientWithStateManager!.relayClient!.cancelSubscriptionRequest();\n    const {\n      response\n    } = await clientWithStateManager!.relayClient!.authenticate();\n    if (response.error) {\n      throw new Error(`Error while authenticating: ${response.error}`);\n    }\n    await clientWithStateManager!.sendGuestCheckoutSubscriptionRequest();\n    localStorage.setItem(\"guestCheckoutKC\", keyCard!);\n    debug(\"Success: upgradeGuestToCustomer\");\n    setIsConnected(Status.Complete);\n  }\n  const value = {\n    walletAddress,\n    avatar,\n    ensName,\n    clientWallet,\n    shopPublicClient,\n    inviteSecret,\n    shopId,\n    relayEndpoint,\n    clientWithStateManager,\n    setWallet,\n    setInviteSecret,\n    setShopId,\n    checkPermissions,\n    upgradeGuestToCustomer,\n    setClientStateManager\n  };\n  return <UserContext.Provider value={value} data-sentry-element=\"unknown\" data-sentry-component=\"UserContextProvider\" data-sentry-source-file=\"UserContext.tsx\">{props.children}</UserContext.Provider>;\n};\nexport const useUserContext = () => useContext(UserContext);","// SPDX-FileCopyrightText: 2024 Mass Labs\n//\n// SPDX-License-Identifier: MIT\nimport { ReadableStream } from \"web-streams-polyfill\";\nimport { recoverMessageAddress } from \"viem\";\nimport Long from \"long\";\n\nimport schema from \"@massmarket/schema\";\n\nimport { type RelayClient, SequencedEventWithRecoveredSigner } from \"./mod.ts\";\nimport { assert, assertField } from \"@massmarket/utils\";\n\n// TODO: better name. it's basically a push request but with class values instead of interfaces\ntype SequencedEventsWithRequestId = {\n  requestId: schema.RequestId;\n  events: schema.SubscriptionPushRequest.SequencedEvent[];\n};\n\n/**\n * This class is a Simple wrapper around a ReadableStream that expose the controller\n * so that a third party can enqueue events into the stream.\n */\nexport class ReadableEventStream {\n  public stream;\n  private resolve!: () => void;\n  private nextPushReq: Promise<void>;\n  // TODO: this isn't thread safe\n  private queue: SequencedEventsWithRequestId[] = [];\n\n  constructor(public client: Pick<RelayClient, \"encodeAndSendNoWait\">) {\n    // deno-lint-ignore no-this-alias\n    const parent = this;\n\n    this.nextPushReq = new Promise((resolve) => {\n      this.resolve = resolve;\n    });\n\n    this.stream = new ReadableStream<SequencedEventWithRecoveredSigner>({\n      start(_controller) {},\n      // if pull returns a promise it will not be called again untill the promise is resolved regardless of the highwatermark\n      // here we are using a recursive pull that will never resolve so that we have full control over when it is being called\n      // and when to ask for the next chunk of data\n      async pull(controller) {\n        const pushReq = parent.queue.shift();\n        if (pushReq) {\n          const requestId = pushReq.requestId;\n          for (const anyEvt of pushReq.events) {\n            assert(anyEvt.event, \"event is required\");\n            assert(\n              anyEvt.seqNo < Long.fromNumber(Number.MAX_SAFE_INTEGER),\n              \"seqNo is required\",\n            );\n            const shopSeqNo = Number(anyEvt.seqNo ?? 0); // this is stupid. protobuf zero value is not 0. it's undefined\n            assert(anyEvt.event.event, \"event.event is required\");\n            assert(anyEvt.event.signature, \"event.signature is required\");\n            assert(anyEvt.event.event.value, \"event.event.value is required\");\n            assertField(anyEvt.event.signature, \"event.signature\");\n            const event = schema.ShopEvent.decode(anyEvt.event.event.value);\n            const signer = await recoverMessageAddress({\n              message: { raw: anyEvt.event.event.value },\n              signature: anyEvt.event.signature.raw,\n            });\n            controller.enqueue(\n              new SequencedEventWithRecoveredSigner(shopSeqNo, event, signer),\n            );\n          }\n          // Send a response to the relay to indicate that we have processed the events\n          parent.client.encodeAndSendNoWait({\n            requestId,\n            response: {},\n          });\n        }\n        await parent.nextPushReq;\n        return this.pull!(controller);\n      },\n    });\n  }\n\n  // This method is meant to be used by the client to enqueue events into the stream\n  enqueue(pushReq: SequencedEventsWithRequestId) {\n    this.queue.push(pushReq);\n    this.resolve();\n    this.nextPushReq = new Promise((resolve) => {\n      this.resolve = resolve;\n    });\n  }\n}\n","// SPDX-FileCopyrightText: 2024 Mass Labs\n//\n// SPDX-License-Identifier: MIT\n\nimport { EventEmitter } from \"events\";\nimport { Buffer } from \"buffer\";\nimport { WebSocket } from \"isows\";\nimport { hexToBigInt, hexToBytes, toBytes } from \"viem\";\nimport type { PrivateKeyAccount } from \"viem/accounts\";\nimport { createSiweMessage } from \"viem/siwe\";\n\nimport schema, { EnvelopMessageTypes } from \"@massmarket/schema\";\nimport type { ConcreteWalletClient } from \"@massmarket/blockchain\";\nimport {\n  assert,\n  decodeBufferToString,\n  hexToBase64,\n  logger,\n} from \"@massmarket/utils\";\n\nimport { ReadableEventStream } from \"./stream.ts\";\n\nconst debug = logger(\"relayClient\");\n\nexport type RelayEndpoint = {\n  url: URL; // the websocket URL to talk to\n  tokenId: `0x${string}`;\n};\n\nexport type EventId = {\n  signer: `0x${string}`;\n  nonce: number;\n};\n\nexport function eventIdEqual(a: EventId, b: EventId) {\n  return a.signer === b.signer && a.nonce === b.nonce;\n}\n\nexport class SequencedEventWithRecoveredSigner {\n  readonly shopSeqNo: number;\n  readonly event: schema.ShopEvent;\n  readonly signer: `0x${string}`;\n\n  constructor(\n    shopSeqNo: number,\n    event: schema.ShopEvent,\n    signer: `0x${string}`,\n  ) {\n    this.shopSeqNo = shopSeqNo;\n    this.event = event;\n    this.signer = signer;\n  }\n\n  id(): EventId {\n    return {\n      signer: this.signer,\n      nonce: Number(this.event.nonce),\n    };\n  }\n}\n\nexport class RelayClient extends EventEmitter {\n  connection!: WebSocket;\n  private keyCardWallet: PrivateKeyAccount;\n  public readonly relayEndpoint: RelayEndpoint;\n  private subscriptionId: Uint8Array | null;\n  // TODO: type these out? apparently not inferred? - maybe just two different LSPs in my editor?\n  private useTLS;\n  private eventStream;\n  private requestCounter;\n  private eventNonceCounter;\n  constructor({\n    relayEndpoint,\n    keyCardWallet,\n  }: {\n    relayEndpoint: RelayEndpoint;\n    keyCardWallet: PrivateKeyAccount;\n  }) {\n    super();\n    this.keyCardWallet = keyCardWallet;\n    this.relayEndpoint = relayEndpoint;\n    this.useTLS = relayEndpoint.url.protocol === \"wss:\" ||\n      relayEndpoint.url.protocol === \"https:\";\n    this.eventStream = new ReadableEventStream(this);\n    this.requestCounter = 1;\n    this.eventNonceCounter = 1;\n    this.subscriptionId = null;\n  }\n\n  createEventStream() {\n    return this.eventStream.stream;\n  }\n\n  // like encodeAndSend but doesn't wait for a response.\n  encodeAndSendNoWait(envelope: schema.IEnvelope = {}): schema.RequestId {\n    if (!envelope.requestId) {\n      envelope.requestId = { raw: this.requestCounter };\n    }\n    const err = schema.Envelope.verify(envelope);\n    if (err) {\n      throw new Error(`unable to verify envelope: ${err}`);\n    }\n    // Turns json into binary\n    const payload = schema.Envelope.encode(envelope).finish();\n    this.connection.send(payload);\n    const requestType =\n      Object.keys(envelope).filter((k) => k !== \"requestId\")[0];\n    debug(`network request ${requestType} sent id: ${envelope.requestId!.raw}`);\n    this.requestCounter++;\n    return schema.RequestId.create(envelope.requestId);\n  }\n\n  // encode and send a message and then wait for a response\n  encodeAndSend(envelope: schema.IEnvelope = {}): Promise<schema.Envelope> {\n    const id = this.encodeAndSendNoWait(envelope);\n    return new Promise((resolve, reject) => {\n      this.once(id.raw.toString(), (response: schema.Envelope) => {\n        const requestType = Object.keys(response).filter((k) =>\n          k !== \"requestId\"\n        )[0];\n        if (response.response?.error) {\n          const { code, message } = response.response.error;\n          assert(code, \"code is required\");\n          assert(message, \"message is required\");\n          debug(\n            `network request ${requestType} id: ${id.raw} failed with error[${code}]: ${message}`,\n          );\n          reject(new Error(message));\n        } else {\n          debug(\n            `network request ${requestType} id: ${id.raw} received response`,\n          );\n          resolve(response);\n        }\n      });\n    });\n  }\n\n  async sendShopEvent(shopEvent: schema.IShopEvent): Promise<EventId> {\n    await this.connect();\n\n    // prepare for signing\n    shopEvent.nonce = this.eventNonceCounter++;\n    shopEvent.timestamp = { seconds: Date.now() / 1000 };\n    const shopEventBytes = schema.ShopEvent.encode(shopEvent).finish();\n\n    // create signature for new event\n    const sig = await this.keyCardWallet.signMessage({\n      message: { raw: shopEventBytes },\n    });\n\n    const signedEvent = {\n      signature: { raw: hexToBytes(sig) },\n      event: {\n        type_url: \"type.googleapis.com/market.mass.ShopEvent\",\n        value: shopEventBytes,\n      },\n    };\n    const envelope = {\n      eventWriteRequest: {\n        events: [signedEvent],\n      },\n    };\n    await this.encodeAndSend(envelope);\n    return {\n      signer: this.keyCardWallet.address,\n      nonce: shopEvent.nonce,\n    };\n  }\n\n  set nonce(counter: number) {\n    this.eventNonceCounter = counter;\n  }\n\n  shopManifest(manifest: schema.IManifest, shopId: `0x${string}`) {\n    manifest.tokenId = { raw: hexToBytes(shopId) };\n    return this.sendShopEvent({\n      manifest: manifest,\n    });\n  }\n\n  updateShopManifest(update: schema.IUpdateManifest) {\n    return this.sendShopEvent({\n      updateManifest: update,\n    });\n  }\n\n  listing(item: schema.IListing) {\n    return this.sendShopEvent({\n      listing: item,\n    });\n  }\n\n  updateListing(item: schema.IUpdateListing) {\n    return this.sendShopEvent({\n      updateListing: item,\n    });\n  }\n\n  tag(tag: schema.ITag) {\n    return this.sendShopEvent({\n      tag: tag,\n    });\n  }\n\n  updateTag(tag: schema.IUpdateTag) {\n    return this.sendShopEvent({\n      updateTag: tag,\n    });\n  }\n\n  createOrder(order: schema.ICreateOrder) {\n    return this.sendShopEvent({\n      createOrder: order,\n    });\n  }\n\n  updateOrder(order: schema.IUpdateOrder) {\n    return this.sendShopEvent({\n      updateOrder: order,\n    });\n  }\n\n  changeInventory(stock: schema.IChangeInventory) {\n    return this.sendShopEvent({\n      changeInventory: stock,\n    });\n  }\n\n  async #decodeMessage(me: MessageEvent) {\n    const _data = me.data instanceof Blob\n      ? await new Response(me.data).arrayBuffer()\n      : me.data;\n    const payload = new Uint8Array(_data);\n\n    const envelope = schema.Envelope.decode(payload);\n    assert(envelope.requestId?.raw, \"requestId is required\");\n    const requestType =\n      Object.keys(envelope).filter((k) => k !== \"requestId\")[0];\n    debug(\n      `network request ${requestType} id: ${envelope.requestId!.raw} received`,\n    );\n    switch (envelope.message) {\n      case EnvelopMessageTypes.PingRequest:\n        this.#handlePingRequest(envelope);\n        break;\n      case EnvelopMessageTypes.SubscriptionPushRequest:\n        assert(\n          envelope.subscriptionPushRequest,\n          \"subscriptionPushRequest is required\",\n        );\n        {\n          const events = envelope.subscriptionPushRequest.events!.map((evt) =>\n            schema.SubscriptionPushRequest.SequencedEvent.create(evt)\n          );\n          debug(`pushing ${events.length} events to event stream`);\n          this.eventStream.enqueue({\n            requestId: schema.RequestId.create(envelope.requestId),\n            events,\n          });\n        }\n        break;\n      default:\n        this.emit(envelope.requestId.raw.toString(), envelope);\n    }\n  }\n\n  #handlePingRequest(ping: schema.Envelope) {\n    // relay ends connection if ping is not responded to 3 times.\n    this.encodeAndSendNoWait({\n      requestId: ping.requestId,\n      response: {},\n    });\n  }\n\n  async sendMerchantSubscriptionRequest(shopId: `0x${string}`, seqNo = 0) {\n    assert(\n      this.subscriptionId == null,\n      \"subscriptionId is already set. cancel first.\",\n    );\n    const filters = [\n      { objectType: schema.ObjectType.OBJECT_TYPE_LISTING },\n      { objectType: schema.ObjectType.OBJECT_TYPE_TAG },\n      { objectType: schema.ObjectType.OBJECT_TYPE_ORDER },\n      { objectType: schema.ObjectType.OBJECT_TYPE_ACCOUNT },\n      { objectType: schema.ObjectType.OBJECT_TYPE_MANIFEST },\n      { objectType: schema.ObjectType.OBJECT_TYPE_INVENTORY },\n    ];\n    const { response } = await this.encodeAndSend({\n      subscriptionRequest: {\n        startShopSeqNo: seqNo,\n        shopId: { raw: hexToBytes(shopId) },\n        filters,\n      },\n    });\n    assert(response, \"response is required\");\n    assert(response.payload, \"response.payload is required\");\n    this.subscriptionId = response.payload;\n  }\n  async sendGuestCheckoutSubscriptionRequest(shopId: `0x${string}`, seqNo = 0) {\n    assert(\n      this.subscriptionId == null,\n      \"subscriptionId is already set. cancel first.\",\n    );\n    const filters = [\n      { objectType: schema.ObjectType.OBJECT_TYPE_LISTING },\n      { objectType: schema.ObjectType.OBJECT_TYPE_TAG },\n      { objectType: schema.ObjectType.OBJECT_TYPE_ORDER },\n      { objectType: schema.ObjectType.OBJECT_TYPE_ACCOUNT },\n      { objectType: schema.ObjectType.OBJECT_TYPE_MANIFEST },\n    ];\n    const { response } = await this.encodeAndSend({\n      subscriptionRequest: {\n        startShopSeqNo: seqNo,\n        shopId: { raw: hexToBytes(shopId) },\n        filters,\n      },\n    });\n    assert(response?.payload, \"response.payload is required\");\n    this.subscriptionId = response.payload;\n  }\n\n  async sendGuestSubscriptionRequest(shopId: `0x${string}`, seqNo = 0) {\n    assert(\n      this.subscriptionId == null,\n      \"subscriptionId is already set. cancel first.\",\n    );\n    const filters = [\n      { objectType: schema.ObjectType.OBJECT_TYPE_LISTING },\n      { objectType: schema.ObjectType.OBJECT_TYPE_TAG },\n      { objectType: schema.ObjectType.OBJECT_TYPE_MANIFEST },\n      { objectType: schema.ObjectType.OBJECT_TYPE_ACCOUNT },\n    ];\n    const { response } = await this.encodeAndSend({\n      subscriptionRequest: {\n        startShopSeqNo: seqNo,\n        shopId: { raw: hexToBytes(shopId) },\n        filters,\n      },\n    });\n    assert(response?.payload, \"response.payload is required\");\n    this.subscriptionId = response.payload;\n  }\n\n  async cancelSubscriptionRequest() {\n    await this.encodeAndSend({\n      subscriptionCancelRequest: {\n        subscriptionId: this.subscriptionId,\n      },\n    });\n    this.subscriptionId = null;\n  }\n\n  async authenticate() {\n    const { response } = await this.encodeAndSend({\n      authRequest: {\n        publicKey: {\n          raw: toBytes(this.keyCardWallet.publicKey).slice(1),\n        },\n      },\n    });\n    assert(response?.payload, \"response.payload is required\");\n    const sig = await this.keyCardWallet.signMessage({\n      message: {\n        raw: response.payload,\n      },\n    });\n    return this.encodeAndSend({\n      challengeSolutionRequest: {\n        signature: { raw: toBytes(sig) },\n      },\n    });\n  }\n\n  // TODO: make an enum of the possible events\n  connect(): Promise<Event | string> {\n    if (\n      !this.connection ||\n      this.connection.readyState === WebSocket.CLOSING ||\n      this.connection.readyState === WebSocket.CLOSED\n    ) {\n      this.connection = new WebSocket(this.relayEndpoint.url + \"/sessions\");\n      this.connection.addEventListener(\"error\", (error: Event) => {\n        console.error(\"WebSocket error!\");\n        console.error(error);\n      });\n      this.connection.addEventListener(\n        \"message\",\n        this.#decodeMessage.bind(this),\n      );\n    }\n    return new Promise((resolve) => {\n      if (this.connection.readyState === WebSocket.OPEN) {\n        resolve(\"already open\");\n      } else {\n        this.connection.addEventListener(\"open\", (evt: Event) => {\n          // TODO: unbox event to concrete values\n          resolve(evt);\n        });\n      }\n    });\n  }\n\n  disconnect(): Promise<CloseEvent | string> {\n    return new Promise((resolve) => {\n      if (\n        typeof this.connection === \"undefined\" ||\n        this.connection.readyState === WebSocket.CLOSED\n      ) {\n        resolve(\"already closed\");\n        return;\n      }\n      this.connection.addEventListener(\"close\", resolve);\n      this.connection.close(1000);\n    });\n  }\n\n  async enrollKeycard(\n    wallet: ConcreteWalletClient,\n    isGuest: boolean = true,\n    shopId: `0x${string}`,\n    location?: URL,\n  ) {\n    const publicKey = toBytes(this.keyCardWallet.publicKey).slice(1);\n    const endpointURL = new URL(this.relayEndpoint.url);\n    endpointURL.protocol = this.useTLS ? \"https\" : \"http\";\n    endpointURL.pathname += `/enroll_key_card`;\n    endpointURL.search = `guest=${isGuest ? 1 : 0}`;\n    const signInURL: URL = location ?? endpointURL;\n\n    const message = createSiweMessage({\n      address: wallet.account.address,\n      chainId: 1, // not really used\n      domain: signInURL.host,\n      nonce: \"00000000\",\n      uri: signInURL.href,\n      version: \"1\",\n      resources: [\n        `mass-relayid:${hexToBigInt(this.relayEndpoint.tokenId)}`,\n        `mass-shopid:${hexToBigInt(shopId)}`,\n        `mass-keycard:${Buffer.from(publicKey).toString(\"hex\")}`,\n      ],\n    });\n    const signature = await wallet.signMessage({\n      message: { raw: Buffer.from(message) },\n    });\n    const body = JSON.stringify({\n      message,\n      signature: hexToBase64(signature),\n    });\n    const response = await fetch(endpointURL.href, {\n      method: \"POST\",\n      body,\n    });\n    return response;\n  }\n\n  async uploadBlob(blob: FormData) {\n    await this.connect();\n    const envelope = await this.encodeAndSend({\n      getBlobUploadUrlRequest: {},\n    });\n    assert(envelope.response, \"envelope.response is required\");\n\n    if (envelope.response.error) {\n      const { code, message } = envelope.response.error;\n      throw new Error(\n        `Failed to get blob upload URL - code: ${code} message: ${message}`,\n      );\n    }\n    assert(envelope.response?.payload, \"envelope.response.payload is required\");\n\n    const url = decodeBufferToString(envelope.response.payload);\n    const uploadResp = await fetch(url, {\n      method: \"POST\",\n      body: blob,\n    });\n    if (uploadResp.status !== 201) {\n      throw new Error(\n        `unexpected status: ${uploadResp.statusText} (${uploadResp.status})`,\n      );\n    }\n    return uploadResp.json();\n  }\n}\n\n// testing helper\nexport async function discoverRelay(url: string): Promise<RelayEndpoint> {\n  const discoveryURL = url\n    .replace(\"ws\", \"http\")\n    .replace(\"/v3\", \"/testing/discovery\");\n  const testingResponse = await fetch(discoveryURL);\n  const testingData = await testingResponse.json();\n  return {\n    url: new URL(url),\n    tokenId: testingData.relay_token_id,\n  };\n}\n","// SPDX-FileCopyrightText: 2024 Mass Labs\n//\n// SPDX-License-Identifier: Unlicense\n\nimport addresses from \"./deploymentAddresses.json\" with { type: \"json\" };\nexport { addresses };\nimport tokenAddresses from \"./tokenAddresses.json\" with { type: \"json\" };\nexport { tokenAddresses };\nimport Payments from \"./abi/Payments.json\" with { type: \"json\" };\nexport { Payments };\n\nimport PaymentsByAddress from \"./abi/PaymentsByAddress.json\" with {\n  type: \"json\",\n};\nexport { PaymentsByAddress };\nimport RelayReg from \"./abi/RelayReg.json\" with { type: \"json\" };\nexport { RelayReg };\nimport ShopReg from \"./abi/ShopReg.json\" with { type: \"json\" };\nexport { ShopReg };\nimport ERC20 from \"./abi/ERC20.json\" with { type: \"json\" };\nexport { ERC20 };\nimport Eddies from \"./abi/Eddies.json\" with { type: \"json\" };\nexport { Eddies };\nexport const permissions = {\n  addPermission: 0,\n  removePermission: 1,\n  updateRootHash: 2,\n  addRelay: 3,\n  removeRelay: 4,\n  replaceRelay: 5,\n  registerUser: 6,\n  removeUser: 7,\n  publishInviteVerifier: 8,\n};\nexport const zeroAddress = \"0x0000000000000000000000000000000000000000\";\n","import { EventEmitter } from \"events\";\nimport { Address } from \"@ethereumjs/util\";\nimport {\n  bytesToBigInt,\n  bytesToHex,\n  fromBytes,\n  hexToBytes,\n  type PublicClient,\n  toHex,\n} from \"viem\";\n\nimport {\n  type ChoosePayment,\n  type CreateShopManifest,\n  type IError,\n  type IRelayClient,\n  type KeyCard,\n  type Listing,\n  ListingViewState,\n  type Order,\n  type OrderEventTypes,\n  type OrderPriceModifier,\n  type OrdersByStatus,\n  OrderState,\n  type SeqNo,\n  type ShippingDetails,\n  type ShopCurrencies,\n  type ShopManifest,\n  type ShopObjectTypes,\n  type Tag,\n  type UpdateShopManifest,\n} from \"./types.ts\";\nimport * as abi from \"@massmarket/contracts\";\nimport schema from \"@massmarket/schema\";\nimport {\n  type EventId,\n  eventIdEqual,\n  type SequencedEventWithRecoveredSigner,\n} from \"@massmarket/client\";\nimport {\n  addressesToUint256,\n  addressToUint256,\n  assert,\n  assertField,\n  logger,\n  objectId,\n  padUint256,\n  priceToUint256,\n} from \"@massmarket/utils\";\n\nconst debug = logger(\"stateManager\");\n\n// This is an interface that is used to retrieve and store objects from a persistant layer\nexport type Store<T extends ShopObjectTypes> = {\n  put(key: string | `0x${string}` | OrderState, value: T): Promise<void>;\n  get(key: string | `0x${string}` | OrderState): Promise<T>;\n  iterator(): AsyncIterable<[string | `0x${string}` | OrderState, T]>;\n};\n\n// Given an requestId which is the returned value of the network event\n// This returns a promise that resolves once the event has been emitted as js event\nfunction eventListenAndResolve<T = ShopObjectTypes>(\n  waitingForId: EventId,\n  em: EventEmitter,\n  eventName: string,\n): Promise<T> {\n  return new Promise((resolve, _) => {\n    function onUpdate(update: T, updatedId: EventId) {\n      if (eventIdEqual(waitingForId, updatedId)) {\n        resolve(update);\n        em.removeListener(eventName, onUpdate);\n      }\n    }\n    em.on(eventName, onUpdate);\n  });\n}\nasync function storeOrdersByStatus(\n  orderId: `0x${string}`,\n  store: Store<Order | OrdersByStatus>,\n  status: OrderState,\n) {\n  let orders: OrdersByStatus = [];\n\n  try {\n    orders = (await store.get(status)) as OrdersByStatus;\n    orders.push(orderId);\n  } catch (error) {\n    const e = error as IError;\n    if (e.notFound) {\n      orders.push(orderId);\n    } else {\n      throw new Error(e.code);\n    }\n  }\n  return store.put(status, orders);\n}\n\nabstract class PublicObjectManager<\n  T extends ShopObjectTypes,\n> extends EventEmitter {\n  constructor(protected store: Store<T>, protected client: IRelayClient) {\n    super();\n  }\n\n  abstract _processEvent(\n    event: SequencedEventWithRecoveredSigner,\n  ): Promise<void>;\n  abstract get(key?: string | `0x${string}`): Promise<T>;\n  get iterator() {\n    return this.store.iterator.bind(this.store);\n  }\n}\n\n//We should always make sure the network call is successful before updating the store with store.put\nclass ListingManager extends PublicObjectManager<Listing> {\n  constructor(store: Store<Listing>, client: IRelayClient) {\n    super(store, client);\n  }\n  // Process all events for listings.\n  // Convert bytes to hex and save l object to listings store.\n  async _processEvent(\n    seqEvt: SequencedEventWithRecoveredSigner,\n  ): Promise<void> {\n    const event = seqEvt.event;\n    if (event.listing) {\n      const cl = event.listing;\n      assertField(cl.id, \"listing.id\");\n      assertField(cl.price, \"listing.price\");\n      assert(cl.metadata, `listing.metadata ${bytesToHex(cl.id.raw)}`);\n      assert(cl.metadata.title, \"listing.metadata.title\");\n      assert(cl.metadata.description, \"listing.metadata.description\");\n      assert((cl.metadata.images ?? []).length > 0, \"listing.metadata.images\");\n      assert(cl.viewState, \"listing.viewState\");\n      const id = bytesToHex(cl.id.raw);\n      const l = {\n        id,\n        price: fromBytes(cl.price.raw, \"bigint\").toString(),\n        metadata: {\n          title: cl.metadata.title,\n          description: cl.metadata.description,\n          images: cl.metadata.images ?? [],\n        },\n        tags: [],\n        quantity: 0,\n        viewState: cl.viewState,\n      };\n      await this.store.put(id, l);\n      this.emit(\"create\", l, seqEvt.id());\n      return;\n    } else if (event.updateListing) {\n      const ul = event.updateListing;\n      assertField(ul.id, \"updateListing.id\");\n      const id = bytesToHex(ul.id.raw);\n      const l = await this.store.get(id);\n      if (ul.metadata) {\n        assert(ul.metadata, \"updateListing.metadata\");\n        assert(ul.metadata.title, \"updateListing.metadata.title\");\n        assert(ul.metadata.description, \"updateListing.metadata.description\");\n        assert(ul.metadata.images, \"updateListing.metadata.images\");\n        assert(\n          (ul.metadata.images ?? []).length > 0,\n          \"updateListing.metadata.images\",\n        );\n        l.metadata = {\n          title: ul.metadata.title,\n          description: ul.metadata.description,\n          images: ul.metadata.images,\n        };\n      }\n      if (ul.price) {\n        assertField(ul.price, \"updateListing.price\");\n        l.price = fromBytes(ul.price.raw, \"bigint\").toString();\n      }\n      if (ul.viewState) {\n        // assert is valid value for viewState\n        if (!Object.values(ListingViewState).includes(ul.viewState)) {\n          throw new Error(\"Invalid viewState\");\n        }\n        l.viewState = ul.viewState;\n      }\n      await this.store.put(id, l);\n      this.emit(\"update\", l, seqEvt.id());\n      return;\n    } else if (event.changeInventory) {\n      const cs = event.changeInventory;\n      assertField(cs.id, \"changeInventory.id\");\n      assert(cs.diff, \"changeInventory.diff\");\n      const lId = bytesToHex(cs.id.raw);\n      const l = await this.store.get(lId);\n      l.quantity = l.quantity + cs.diff;\n      await this.store.put(lId, l);\n      this.emit(\"changeInventory\", lId, seqEvt.id());\n      return;\n    } else if (event.updateTag) {\n      // Add or remove tagId to l\n      const ut = event.updateTag;\n      assertField(ut.id, \"updateTag.id\");\n      const tagId = bytesToHex(ut.id.raw);\n      if (ut.addListingIds) {\n        const lIds = ut.addListingIds;\n        await Promise.all(\n          lIds.map(async (lId) => {\n            assertField(lId, \"updateTag.addListingIds\");\n            const iid = bytesToHex(lId.raw);\n            const l = await this.store.get(iid);\n            l.tags.push(tagId);\n            this.emit(\"addListingId\", iid, seqEvt.id());\n            return await this.store.put(iid, l);\n          }),\n        );\n      }\n      if (ut.removeListingIds) {\n        const lIds = ut.removeListingIds;\n        await Promise.all(\n          lIds.map(async (lId) => {\n            assertField(lId, \"updateTag.removeListingIds\");\n            const iid = bytesToHex(lId.raw);\n            const l = await this.store.get(iid);\n            // remove `tagId` from l.tags array\n            l.tags = [...l.tags.filter((id: `0x${string}`) => id !== tagId)];\n            this.emit(\"removeListingId\", tagId, seqEvt.id());\n            await this.store.put(iid, l);\n          }),\n        );\n      }\n    }\n  }\n\n  async create(l: Partial<Listing>, decimals?: number) {\n    const eventId = await this.client.listing({\n      id: { raw: objectId() },\n      price: { raw: priceToUint256(l.price!, decimals) },\n      metadata: l.metadata,\n      viewState: l.viewState,\n    });\n    // resolves after the `listing` event has been fired in _processEvent, which happens after the relay accepts the update and has written to the database.\n    return eventListenAndResolve<Listing>(eventId, this, \"create\");\n  }\n\n  //update argument passed here will only contain the fields to update.\n  async update(update: Partial<Listing>, decimals?: number) {\n    //ui object to be passed to the network with converted network data types.\n    //we are declaring the update object as type schema.IUpdateListing since we are changing values from hex to bytes and is no longer a interface l\n    const ui: schema.IUpdateListing = {\n      id: { raw: hexToBytes(update.id!) },\n    };\n    if (update.price) {\n      ui.price = { raw: priceToUint256(update.price, decimals) };\n    }\n    if (update.metadata) {\n      ui.metadata = update.metadata;\n    }\n    if (update.viewState !== undefined) {\n      assert(\n        Object.values(ListingViewState).includes(update.viewState),\n        `update.viewState ${update.viewState} must be a valid ListingViewState`,\n      );\n      ui.viewState = update.viewState;\n    }\n    const requestId = await this.client.updateListing(ui);\n    // resolves after the `updateListing` event has been fired, which happens after the relay accepts the update and has written to the database.\n    return eventListenAndResolve<Listing>(requestId, this, \"update\");\n  }\n\n  async addListingToTag(tagId: `0x${string}`, lId: `0x${string}`) {\n    const requestId = await this.client.updateTag({\n      id: { raw: hexToBytes(tagId) },\n      addListingIds: [{ raw: hexToBytes(lId) }],\n    });\n    return eventListenAndResolve<Listing>(requestId, this, \"addListingId\");\n  }\n\n  async removeListingFromTag(tagId: `0x${string}`, lId: `0x${string}`) {\n    const requestId = await this.client.updateTag({\n      id: { raw: hexToBytes(tagId) },\n      removeListingIds: [{ raw: hexToBytes(lId) }],\n    });\n    return eventListenAndResolve<Listing>(requestId, this, \"removeListingId\");\n  }\n\n  async changeInventory(lId: `0x${string}`, diff: number) {\n    const requestId = await this.client.changeInventory({\n      id: { raw: hexToBytes(lId) },\n      diff,\n    });\n    return eventListenAndResolve<Listing>(requestId, this, \"changeInventory\");\n  }\n  get(key: `0x${string}`) {\n    return this.store.get(key);\n  }\n}\n\nclass ShopManifestManager extends PublicObjectManager<ShopManifest | SeqNo> {\n  constructor(store: Store<ShopManifest | SeqNo>, client: IRelayClient) {\n    super(store, client);\n  }\n  //Process all manifest events. Convert bytes to hex, wait for database update, then emit event name\n  async _processEvent(seqEvt: SequencedEventWithRecoveredSigner) {\n    const event = seqEvt.event;\n    if (event.manifest) {\n      const sm = event.manifest;\n      assertField(sm.tokenId, \"manifest.tokenId\");\n      const manifest: ShopManifest = {\n        tokenId: bytesToHex(sm.tokenId.raw),\n        acceptedCurrencies: [],\n        payees: [],\n        shippingRegions: [],\n      };\n      if (sm.acceptedCurrencies) {\n        manifest.acceptedCurrencies = sm.acceptedCurrencies.map(\n          (a: schema.IShopCurrency) => {\n            assertField(a.address, \"manifest.acceptedCurrencies.address\");\n            return {\n              address: bytesToHex(a.address.raw),\n              chainId: Number(a.chainId),\n            };\n          },\n        );\n      }\n      if (sm.pricingCurrency) {\n        assertField(\n          sm.pricingCurrency.address,\n          \"manifest.pricingCurrency.address\",\n        );\n        manifest.pricingCurrency = {\n          chainId: Number(sm.pricingCurrency.chainId),\n          address: bytesToHex(sm.pricingCurrency.address.raw),\n        };\n      }\n      if (sm.payees) {\n        manifest.payees = sm.payees.map((p: schema.IPayee) => {\n          assert(p.callAsContract, \"manifest.payees.callAsContract\");\n          assert(p.name, \"manifest.payees.name\");\n          assertField(p.address, \"manifest.payees.address\");\n          // TODO: sadly can't use ...p because of the weak type inference\n          return {\n            name: p.name,\n            callAsContract: p.callAsContract,\n            chainId: Number(p.chainId),\n            address: bytesToHex(p.address.raw),\n          };\n        });\n      }\n      if (sm.shippingRegions) {\n        manifest.shippingRegions = sm.shippingRegions.map(\n          (sr: schema.IShippingRegion) => {\n            assert(\n              sr.orderPriceModifiers,\n              \"manifest.shippingRegions.orderPriceModifiers\",\n            );\n            assert(sr.name, \"manifest.shippingRegions.name\");\n            assert(sr.country, \"manifest.shippingRegions.country\");\n            assert(sr.postalCode, \"manifest.shippingRegions.postalCode\");\n            assert(sr.city, \"manifest.shippingRegions.city\");\n            return {\n              name: sr.name,\n              country: sr.country,\n              postalCode: sr.postalCode,\n              city: sr.city,\n              orderPriceModifiers: sr.orderPriceModifiers.map(\n                (pm: schema.IOrderPriceModifier) => {\n                  assert(\n                    pm.title,\n                    \"manifest.shippingRegions.orderPriceModifiers.title\",\n                  );\n                  const m: OrderPriceModifier = {\n                    title: pm.title,\n                  };\n                  if (pm.percentage) {\n                    assertField(\n                      pm.percentage,\n                      \"manifest.shippingRegions.orderPriceModifiers.percentage\",\n                    );\n                    m.percentage = bytesToHex(pm.percentage.raw);\n                  }\n                  if (pm.absolute) {\n                    assertField(\n                      pm.absolute.diff,\n                      \"manifest.shippingRegions.orderPriceModifiers.absolute.diff\",\n                    );\n                    assert(\n                      pm.absolute.plusSign,\n                      \"manifest.shippingRegions.orderPriceModifiers.absolute.plusSign\",\n                    );\n                    m.absolute = {\n                      plusSign: pm.absolute.plusSign,\n                      diff: bytesToHex(pm.absolute.diff.raw),\n                    };\n                  }\n                  return m;\n                },\n              ),\n            };\n          },\n        );\n      }\n      await this.store.put(\"shopManifest\", manifest);\n      this.emit(\"create\", manifest, seqEvt.id());\n      return;\n    } else if (event.updateManifest) {\n      const um = event.updateManifest;\n      const manifest = (await this.store.get(\"shopManifest\")) as ShopManifest;\n      if (um.setPricingCurrency) {\n        assertField(\n          um.setPricingCurrency.address,\n          \"manifest.setPricingCurrency.address\",\n        );\n        manifest.pricingCurrency = {\n          chainId: Number(um.setPricingCurrency.chainId),\n          address: bytesToHex(um.setPricingCurrency.address.raw),\n        };\n      }\n      if (um.addAcceptedCurrencies) {\n        const currencies = [...manifest.acceptedCurrencies];\n        um.addAcceptedCurrencies.forEach((a: schema.IShopCurrency) => {\n          assertField(a.address, \"manifest.addAcceptedCurrencies.address\");\n          currencies.push({\n            address: bytesToHex(a.address.raw),\n            chainId: Number(a.chainId),\n          });\n        });\n        manifest.acceptedCurrencies = currencies;\n      }\n      if (um.removeAcceptedCurrencies) {\n        let filtered = [...manifest.acceptedCurrencies!];\n        for (const rm of um.removeAcceptedCurrencies) {\n          filtered = manifest.acceptedCurrencies!.filter((cur, idx) => {\n            assertField(\n              rm.address,\n              `manifest.removeAcceptedCurrencies[${idx}].address`,\n            );\n            return (\n              cur.address !== bytesToHex(rm.address.raw) ||\n              cur.chainId !== Number(rm.chainId)\n            );\n          });\n        }\n\n        manifest.acceptedCurrencies = filtered;\n      }\n      if (um.addPayee) {\n        assert(um.addPayee.callAsContract, \"manifest.addPayee.callAsContract\");\n        assert(um.addPayee.name, \"manifest.addPayee.name\");\n        assertField(um.addPayee.address, \"manifest.addPayee.address\");\n        manifest.payees.push({\n          name: um.addPayee.name,\n          callAsContract: um.addPayee.callAsContract,\n          chainId: Number(um.addPayee.chainId),\n          address: bytesToHex(um.addPayee.address.raw),\n        });\n      }\n      if (um.removePayee) {\n        const ur = um.removePayee;\n        assertField(ur.address, \"manifest.removePayee.address\");\n        assert(ur.chainId, \"manifest.removePayee.chainId\");\n        const wantAddr = bytesToHex(ur.address!.raw!);\n        manifest.payees = manifest.payees.filter((p) => {\n          // TODO: this doesn't complain about ur.chainId being Long sometimes!\n          const isEqual = p.address.toLowerCase() === wantAddr.toLowerCase() &&\n            p.chainId === Number(ur.chainId);\n          return !isEqual;\n        });\n      }\n      if (um.addShippingRegions) {\n        um.addShippingRegions.forEach((sr: schema.IShippingRegion) => {\n          assert(\n            sr.orderPriceModifiers,\n            \"manifest.addShippingRegions.orderPriceModifiers\",\n          );\n          assert(sr.name, \"manifest.addShippingRegions.name\");\n          assert(sr.country, \"manifest.addShippingRegions.country\");\n          assert(sr.postalCode, \"manifest.addShippingRegions.postalCode\");\n          assert(sr.city, \"manifest.addShippingRegions.city\");\n          manifest.shippingRegions.push({\n            name: sr.name,\n            country: sr.country,\n            postalCode: sr.postalCode,\n            city: sr.city,\n            orderPriceModifiers: sr.orderPriceModifiers.map(\n              (pm: schema.IOrderPriceModifier) => {\n                assert(\n                  pm.title,\n                  \"manifest.addShippingRegions.orderPriceModifiers.title\",\n                );\n                const m: OrderPriceModifier = {\n                  title: pm.title,\n                };\n                if (pm.percentage) {\n                  assertField(\n                    pm.percentage,\n                    \"manifest.addShippingRegions.orderPriceModifiers.percentage\",\n                  );\n                  m.percentage = bytesToHex(pm.percentage.raw);\n                }\n                if (pm.absolute) {\n                  assertField(\n                    pm.absolute.diff,\n                    \"manifest.addShippingRegions.orderPriceModifiers.absolute.diff\",\n                  );\n                  assert(\n                    pm.absolute.plusSign,\n                    \"manifest.addShippingRegions.orderPriceModifiers.absolute.plusSign\",\n                  );\n                  m.absolute = {\n                    plusSign: pm.absolute.plusSign,\n                    diff: bytesToHex(pm.absolute.diff.raw),\n                  };\n                }\n                return m;\n              },\n            ),\n          });\n        });\n      }\n      await this.store.put(\"shopManifest\", manifest);\n      this.emit(\"update\", manifest, seqEvt.id());\n      return;\n    }\n  }\n\n  async create(manifest: CreateShopManifest, shopId: `0x${string}`) {\n    const m: schema.Manifest = schema.Manifest.create({});\n    assert(manifest.pricingCurrency, \"manifest.pricingCurrency is required\");\n    m.pricingCurrency = addressToUint256(\n      manifest.pricingCurrency as ShopCurrencies,\n    );\n\n    assert(manifest.pricingCurrency, \"manifest.pricingCurrency is required\");\n    m.pricingCurrency = addressToUint256(\n      manifest.pricingCurrency as ShopCurrencies,\n    );\n\n    assert(\n      manifest.acceptedCurrencies,\n      \"manifest.acceptedCurrencies is required\",\n    );\n    m.acceptedCurrencies = addressesToUint256(manifest.acceptedCurrencies);\n\n    assert(manifest.payees, \"manifest.payees is required\");\n    m.payees = addressesToUint256(manifest.payees);\n\n    assert(manifest.shippingRegions, \"manifest.shippingRegions is required\");\n    m.shippingRegions = manifest.shippingRegions.map((sr) => {\n      assert(sr.name, \"shippingRegion.name is required\");\n      assert(sr.country, \"shippingRegion.country is required\");\n      assert(sr.postalCode, \"shippingRegion.postalCode is required\");\n      assert(sr.city, \"shippingRegion.city is required\");\n      assert(\n        sr.orderPriceModifiers,\n        \"shippingRegion.orderPriceModifiers is required\",\n      );\n      return {\n        ...sr,\n        orderPriceModifiers: sr.orderPriceModifiers.map(\n          (pm: OrderPriceModifier) => {\n            assert(pm.title, \"orderPriceModifier.title is required\");\n            const priceMod: schema.IOrderPriceModifier = {\n              title: pm.title,\n            };\n            if (pm.percentage) {\n              assert(\n                pm.percentage,\n                \"orderPriceModifier.percentage is required\",\n              );\n              priceMod.percentage = { raw: hexToBytes(pm.percentage) };\n            } else if (pm.absolute) {\n              assert(pm.absolute, \"orderPriceModifier.absolute is required\");\n              assert(\n                pm.absolute.plusSign !== undefined,\n                \"orderPriceModifier.absolute.plusSign is required\",\n              );\n              assert(\n                pm.absolute.diff,\n                \"orderPriceModifier.absolute.diff is required\",\n              );\n              priceMod.absolute = {\n                ...pm.absolute,\n                diff: { raw: hexToBytes(pm.absolute.diff) },\n              };\n            } else {\n              throw new Error(\n                \"Either percentage or absolute must be provided for orderPriceModifier\",\n              );\n            }\n            return priceMod;\n          },\n        ),\n      };\n    });\n    const eventId = await this.client.shopManifest(m, shopId);\n    // resolves after the `createShopManifest` event has been fired above in _processEvent, which happens after the relay accepts the update and has written to the database.\n    return eventListenAndResolve<ShopManifest>(eventId, this, \"create\");\n  }\n\n  async update(um: UpdateShopManifest) {\n    const update: schema.IUpdateManifest = {};\n    //Convert address to bytes before sending to client.\n    //We have to explicitly declare the update object as type schema.IUpdateShopManifest since we are changing hex to bytes and is no longer a type ShopManifest\n    if (um.addPayee) {\n      update.addPayee = addressToUint256(um.addPayee);\n    }\n    if (um.removePayee) {\n      update.removePayee = addressToUint256(um.removePayee);\n    }\n    if (um.setPricingCurrency) {\n      update.setPricingCurrency = addressToUint256(um.setPricingCurrency);\n    }\n    if (um.addAcceptedCurrencies) {\n      update.addAcceptedCurrencies = addressesToUint256(\n        um.addAcceptedCurrencies,\n      );\n    }\n    if (um.removeAcceptedCurrencies) {\n      update.removeAcceptedCurrencies = addressesToUint256(\n        um.removeAcceptedCurrencies,\n      );\n    }\n    if (um.addShippingRegions) {\n      update.addShippingRegions = um.addShippingRegions.map((sr) => ({\n        ...sr,\n        orderPriceModifiers: sr.orderPriceModifiers.map((pm) => ({\n          ...pm,\n          absolute: pm.absolute\n            ? {\n              ...pm.absolute,\n              diff: { raw: hexToBytes(pm.absolute.diff) },\n            }\n            : undefined,\n          percentage: pm.percentage\n            ? { raw: hexToBytes(pm.percentage) }\n            : undefined,\n        })),\n      }));\n    }\n    // resolves after the `update` event has been fired above in _processEvent, which happens after the relay accepts the update and has written to the database.\n    const requestId = await this.client.updateShopManifest(update);\n    return eventListenAndResolve<ShopManifest>(requestId, this, \"update\");\n  }\n\n  get(): Promise<ShopManifest> {\n    return this.store.get(\"shopManifest\") as Promise<ShopManifest>;\n  }\n  addSeqNo(no: number) {\n    return this.store.put(\"seqNo\", no);\n  }\n\n  async getSeqNo() {\n    let no = 0;\n    try {\n      no = (await this.store.get(\"seqNo\")) as number;\n    } catch (error) {\n      const e = error as IError;\n      if (!e.notFound) {\n        throw new Error(e.code);\n      }\n    }\n    return no;\n  }\n}\n\nclass OrderManager extends PublicObjectManager<Order | OrdersByStatus> {\n  constructor(store: Store<Order | OrdersByStatus>, client: IRelayClient) {\n    super(store, client);\n  }\n  //Process all Order events. Convert bytes to hex, waits for database update, then emits event\n  async _processEvent(\n    seqEvt: SequencedEventWithRecoveredSigner,\n  ): Promise<void> {\n    const event = seqEvt.event;\n    if (event.createOrder) {\n      const co = event.createOrder;\n      assertField(co.id, \"createOrder.id\");\n      const id = bytesToHex(co.id.raw);\n      const o = {\n        id: id,\n        items: {},\n        status: OrderState.STATE_OPEN,\n      };\n      await this.store.put(id, o);\n      await storeOrdersByStatus(id, this.store, OrderState.STATE_OPEN);\n      this.emit(\"create\", o, seqEvt.id());\n      return;\n    } else if (event.updateOrder) {\n      const uo = event.updateOrder;\n      assertField(uo.id, \"updateOrder.id\");\n      const id = bytesToHex(uo.id.raw);\n      const order = (await this.store.get(id)) as Order;\n      order.timestamp = event.timestamp?.seconds as number;\n      if (uo.changeItems) {\n        const ci = uo.changeItems;\n        if (ci.adds) {\n          ci.adds.map((orderl: schema.IOrderedItem) => {\n            assertField(\n              orderl.listingId,\n              \"updateOrder.changeItems.adds.listingId\",\n            );\n            assert(orderl.quantity, \"updateOrder.changeItems.adds.quantity\");\n            const listingId = bytesToHex(orderl.listingId.raw);\n            //Check if l is already selected. If it is, add quantity to already selected quantity.\n            const currentQuantity = order.items[listingId] ?? 0;\n            if (currentQuantity) {\n              order.items[listingId] = (orderl.quantity ?? 0) + currentQuantity;\n            } else {\n              order.items[listingId] = orderl.quantity ?? 0;\n            }\n          });\n        }\n        if (ci.removes) {\n          ci.removes.map((orderl: schema.IOrderedItem) => {\n            assertField(\n              orderl.listingId,\n              \"updateOrder.changeItems.removes.listingId\",\n            );\n            const listingId = bytesToHex(orderl.listingId.raw);\n            const currentQuantity = order.items[listingId] ?? 0;\n            if (currentQuantity) {\n              order.items[listingId] = currentQuantity - (orderl.quantity ?? 0);\n            }\n          });\n        }\n        await this.store.put(id, order);\n        this.emit(\"update\", [\"changeItems\", order], seqEvt.id());\n        return;\n      } else if (uo.cancel) {\n        const currentState = order.status;\n        order.status = OrderState.STATE_CANCELED;\n        //Save status as cancelled\n        await this.store.put(id, order);\n        await storeOrdersByStatus(id, this.store, OrderState.STATE_CANCELED);\n        //remove the orderId from state of orders before this event.\n        let orders = (await this.store.get(currentState)) as OrdersByStatus;\n        orders = orders.filter((oId) => oId !== id);\n        await this.store.put(currentState, orders);\n        this.emit(\"update\", [\"orderCanceled\", order], seqEvt.id());\n\n        return;\n      } else if (uo.setInvoiceAddress) {\n        const update = uo.setInvoiceAddress;\n        const sd = order.invoiceAddress ? order.invoiceAddress : {\n          name: \"\",\n          address1: \"\",\n          city: \"\",\n          postalCode: \"\",\n          country: \"\",\n          phoneNumber: \"\",\n          emailAddress: \"\",\n        };\n        if (update.name) {\n          sd.name = update.name;\n        }\n        if (update.address1) {\n          sd.address1 = update.address1;\n        }\n        if (update.city) {\n          sd.city = update.city;\n        }\n        if (update.postalCode) {\n          sd.postalCode = update.postalCode;\n        }\n        if (update.country) {\n          sd.country = update.country;\n        }\n        if (update.phoneNumber) {\n          sd.phoneNumber = update.phoneNumber;\n        }\n        if (update.emailAddress) {\n          sd.emailAddress = update.emailAddress;\n        }\n        order.invoiceAddress = sd;\n        await this.store.put(id, order);\n        this.emit(\"update\", [\"invoiceAddress\", order], seqEvt.id());\n        return;\n      } else if (uo.setShippingAddress) {\n        const update = uo.setShippingAddress;\n        // shippingDetails may be null. If null, create an initial shipping details object to update.\n        const sd = order.shippingDetails ? order.shippingDetails : {\n          name: \"\",\n          address1: \"\",\n          city: \"\",\n          postalCode: \"\",\n          country: \"\",\n          phoneNumber: \"\",\n          emailAddress: \"\",\n        };\n        if (update.name) {\n          sd.name = update.name;\n        }\n        if (update.address1) {\n          sd.address1 = update.address1;\n        }\n        if (update.city) {\n          sd.city = update.city;\n        }\n        if (update.postalCode) {\n          sd.postalCode = update.postalCode;\n        }\n        if (update.country) {\n          sd.country = update.country;\n        }\n        if (update.phoneNumber) {\n          sd.phoneNumber = update.phoneNumber;\n        }\n        if (update.emailAddress) {\n          sd.emailAddress = update.emailAddress;\n        }\n        order.shippingDetails = sd;\n        await this.store.put(id, order);\n        this.emit(\"update\", [\"shippingAddress\", order], seqEvt.id());\n        return;\n      } else if (uo.commitItems) {\n        const currentState = order.status;\n        order.status = OrderState.STATE_COMMITED;\n        await this.store.put(id, order);\n        await storeOrdersByStatus(id, this.store, OrderState.STATE_COMMITED);\n        //remove the orderId from state of orders before this event.\n        let orders = (await this.store.get(currentState)) as OrdersByStatus;\n        orders = orders.filter((oId) => oId !== id);\n        await this.store.put(currentState, orders);\n        this.emit(\"update\", [\"commitItems\", order], seqEvt.id());\n        return;\n      } else if (uo.choosePayment) {\n        const cp = uo.choosePayment;\n        assert(\n          cp.currency?.chainId,\n          \"updateOrder.choosePayment.currency.chainId\",\n        );\n        assertField(\n          cp.currency?.address,\n          \"updateOrder.choosePayment.currency.address\",\n        );\n        assert(cp.payee, \"updateOrder.choosePayment.payee\");\n        assert(cp.payee.name, \"updateOrder.choosePayment.payee.name\");\n        assert(cp.payee.chainId, \"updateOrder.choosePayment.payee.chainId\");\n        assertField(\n          cp.payee.address,\n          \"updateOrder.choosePayment.payee.address\",\n        );\n        const { chainId, address } = cp.currency;\n        const choosePayment = {\n          currency: {\n            chainId: Number(chainId),\n            address: bytesToHex(address.raw),\n          },\n          payee: {\n            name: cp.payee.name,\n            address: bytesToHex(cp.payee.address.raw),\n            chainId: Number(cp.payee.chainId),\n          },\n        };\n        order.choosePayment = choosePayment;\n        await this.store.put(id, order);\n        this.emit(\"update\", [\"choosePayment\", order], seqEvt.id());\n        return;\n      } else if (uo.setPaymentDetails) {\n        const pd = uo.setPaymentDetails;\n        assertField(pd.paymentId, \"updateOrder.setPaymentDetails.paymentId\");\n        assertField(pd.total, \"updateOrder.setPaymentDetails.total\");\n        assertField(\n          pd.shopSignature,\n          \"updateOrder.setPaymentDetails.shopSignature\",\n        );\n        assert(pd.ttl, \"updateOrder.setPaymentDetails.ttl\");\n        const paymentDetails = {\n          paymentId: toHex(padUint256(bytesToBigInt(pd.paymentId.raw))),\n          total: fromBytes(pd.total.raw, \"bigint\").toString(),\n          shopSignature: bytesToHex(pd.shopSignature.raw),\n          ttl: pd.ttl,\n        };\n        order.paymentDetails = paymentDetails;\n        await this.store.put(id, order);\n        this.emit(\"update\", [\"paymentDetails\", order], seqEvt.id());\n        return;\n      } else if (uo.addPaymentTx) {\n        assertField(\n          uo.addPaymentTx.blockHash,\n          \"updateOrder.addPaymentTx.blockHash\",\n        );\n        const currentState = order.status;\n        order.status = OrderState.STATE_PAYMENT_TX;\n        if (uo.addPaymentTx.blockHash) {\n          order.blockHash = bytesToHex(uo.addPaymentTx.blockHash.raw);\n        }\n        if (uo.addPaymentTx.txHash) {\n          assertField(\n            uo.addPaymentTx.txHash,\n            \"updateOrder.addPaymentTx.txHash\",\n          );\n          order.txHash = bytesToHex(uo.addPaymentTx.txHash.raw);\n        }\n        await this.store.put(id, order);\n        await storeOrdersByStatus(id, this.store, OrderState.STATE_PAYMENT_TX);\n        //remove the orderId from state of orders before this event.\n        let orders = (await this.store.get(currentState)) as OrdersByStatus;\n        orders = orders.filter((oId) => oId !== id);\n        await this.store.put(currentState, orders);\n        this.emit(\"update\", [\"addPaymentTx\", order], seqEvt.id());\n        return;\n      }\n    }\n  }\n\n  get(key: `0x${string}`) {\n    return this.store.get(key) as Promise<Order>;\n  }\n\n  getStatus(key: OrderState): Promise<OrdersByStatus> {\n    try {\n      return this.store.get(key) as Promise<OrdersByStatus>;\n    } catch (error) {\n      const e = error as IError;\n      if (e.notFound) {\n        return Promise.resolve([]);\n      } else {\n        throw new Error(e.code);\n      }\n    }\n  }\n\n  async create() {\n    const eventId = await this.client.createOrder({\n      id: { raw: objectId() },\n    });\n    // resolves after the `createOrder` event has been fired in processEvent, which happens after the relay accepts the update and has written to the database.\n    return eventListenAndResolve<Order>(eventId, this, \"create\");\n  }\n\n  async addItems(\n    orderId: `0x${string}`,\n    ls: { listingId: `0x${string}`; quantity: number }[],\n  ) {\n    const eventId = await this.client.updateOrder({\n      id: { raw: hexToBytes(orderId) },\n      changeItems: {\n        adds: ls.map((i) => {\n          return {\n            listingId: { raw: hexToBytes(i.listingId) },\n            quantity: i.quantity,\n          };\n        }),\n      },\n    });\n    // resolves after the `changeItems` event has been fired, which happens after the relay accepts the update and has written to the database.\n    return eventListenAndResolve<[OrderEventTypes, Order]>(\n      eventId,\n      this,\n      \"update\",\n    );\n  }\n  async removeItems(\n    orderId: `0x${string}`,\n    ls: { listingId: `0x${string}`; quantity: number }[],\n  ) {\n    const eventId = await this.client.updateOrder({\n      id: { raw: hexToBytes(orderId) },\n      changeItems: {\n        removes: ls.map((i) => {\n          return {\n            listingId: { raw: hexToBytes(i.listingId) },\n            quantity: i.quantity,\n          };\n        }),\n      },\n    });\n    // resolves after the `changeItems` event has been fired, which happens after the relay accepts the update and has written to the database.\n    return eventListenAndResolve<[OrderEventTypes, Order]>(\n      eventId,\n      this,\n      \"update\",\n    );\n  }\n  async updateShippingDetails(\n    orderId: `0x${string}`,\n    update: Partial<ShippingDetails>,\n  ) {\n    const eventId = await this.client.updateOrder({\n      id: { raw: hexToBytes(orderId) },\n      setShippingAddress: update,\n    });\n    return eventListenAndResolve<[OrderEventTypes, Order]>(\n      eventId,\n      this,\n      \"update\",\n    );\n  }\n  async updateInvoiceAddress(\n    orderId: `0x${string}`,\n    update: Partial<ShippingDetails>,\n  ) {\n    const eventId = await this.client.updateOrder({\n      id: { raw: hexToBytes(orderId) },\n      setInvoiceAddress: update,\n    });\n    return eventListenAndResolve<[OrderEventTypes, Order]>(\n      eventId,\n      this,\n      \"update\",\n    );\n  }\n\n  async cancel(orderId: `0x${string}`) {\n    const eventId = await this.client.updateOrder({\n      id: { raw: hexToBytes(orderId) },\n      cancel: {},\n    });\n    return eventListenAndResolve<[OrderEventTypes, Order]>(\n      eventId,\n      this,\n      \"update\",\n    );\n  }\n  async choosePayment(orderId: `0x${string}`, payment: ChoosePayment) {\n    const eventId = await this.client.updateOrder({\n      id: { raw: hexToBytes(orderId) },\n      choosePayment: {\n        currency: addressToUint256(payment.currency),\n        payee: addressToUint256(payment.payee),\n      },\n    });\n    return eventListenAndResolve<[OrderEventTypes, Order]>(\n      eventId,\n      this,\n      \"update\",\n    );\n  }\n  async commit(orderId: `0x${string}`) {\n    const eventId = await this.client.updateOrder({\n      id: { raw: hexToBytes(orderId) },\n      commitItems: {},\n    });\n    return eventListenAndResolve<[OrderEventTypes, Order]>(\n      eventId,\n      this,\n      \"update\",\n    );\n  }\n}\nclass TagManager extends PublicObjectManager<Tag> {\n  constructor(store: Store<Tag>, client: IRelayClient) {\n    super(store, client);\n  }\n  async _processEvent(\n    seqEvt: SequencedEventWithRecoveredSigner,\n  ): Promise<void> {\n    const event = seqEvt.event;\n    if (event.tag) {\n      const ct = event.tag;\n      assert(ct.name, \"tag.name\");\n      assertField(ct.id, \"tag.id\");\n      const id = bytesToHex(ct.id.raw);\n      const tag = {\n        id: id,\n        name: ct.name,\n      };\n      await this.store.put(id, tag);\n      this.emit(\"create\", tag, seqEvt.id());\n      return;\n    }\n    if (event.updateTag) {\n      const ut = event.updateTag;\n      assertField(ut.id, \"updateTag.id\");\n      const id = bytesToHex(ut.id.raw);\n      const tag = await this.store.get(id);\n      if (ut.rename) {\n        tag.name = ut.rename;\n      }\n      await this.store.put(id, tag);\n      this.emit(\"update\", tag, seqEvt.id());\n    }\n  }\n  async create(name: string) {\n    const eventId = await this.client.tag({\n      id: { raw: objectId() },\n      name,\n    });\n    // resolves after the `tag` event has been fired, which happens after the relay accepts the update and has written to the database.\n    return eventListenAndResolve<Tag>(eventId, this, \"create\");\n  }\n\n  get(key: `0x${string}`) {\n    return this.store.get(key);\n  }\n\n  override get iterator() {\n    return this.store.iterator.bind(this.store) as () => AsyncIterable<\n      [string, Tag]\n    >;\n  }\n}\n\nclass KeyCardManager extends PublicObjectManager<KeyCard> {\n  constructor(store: Store<KeyCard>, client: IRelayClient) {\n    super(store, client);\n  }\n\n  async _processEvent(\n    seqEvt: SequencedEventWithRecoveredSigner,\n  ): Promise<void> {\n    const event = seqEvt.event;\n    if (event.account) {\n      const a = event.account;\n      assertField(\n        a.enrollKeycard?.keycardPubkey,\n        \"account.enrollKeycard.keycardPubkey\",\n      );\n      const addressFromPubKey = Address.fromPublicKey(\n        a.enrollKeycard.keycardPubkey.raw,\n      ).toString() as `0x${string}`;\n      await this.addAddress(addressFromPubKey);\n      this.emit(\"newKeyCard\", addressFromPubKey, seqEvt.id());\n      return;\n    }\n  }\n\n  get() {\n    return this.store.get(\"cardPublicKey\");\n  }\n\n  async verify(address: `0x${string}`) {\n    let keys: `0x${string}`[];\n    try {\n      keys = await this.store.get(\"cardPublicKey\");\n    } catch (error) {\n      const e = error as IError;\n      if (e.notFound) {\n        keys = [];\n      } else {\n        throw new Error(e.code);\n      }\n    }\n    if (keys.includes(address.toLowerCase() as `0x${string}`)) {\n      return;\n    }\n    throw new Error(`Unverified Event: signed by unknown address ${address}`);\n  }\n\n  async addAddress(key: `0x${string}`) {\n    const k = key.toLowerCase() as `0x${string}`;\n    let publicKeys: `0x${string}`[] = [];\n    try {\n      publicKeys = await this.store.get(\"cardPublicKey\");\n      if (!publicKeys.includes(k)) {\n        publicKeys.push(k);\n      }\n    } catch (error) {\n      const e = error as IError;\n      if (e.notFound) {\n        publicKeys.push(k);\n      } else {\n        throw new Error(e.code);\n      }\n    }\n    return this.store.put(\"cardPublicKey\", publicKeys);\n  }\n}\n\nclass KeycardNonceManager extends PublicObjectManager<number> {\n  constructor(store: Store<number>, client: IRelayClient) {\n    super(store, client);\n  }\n\n  async _processEvent(\n    seqEvt: SequencedEventWithRecoveredSigner,\n  ): Promise<void> {\n    await this.store.put(seqEvt.signer, Number(seqEvt.event.nonce));\n  }\n\n  async get(key: `0x${string}`) {\n    let nonce: number;\n    try {\n      nonce = await this.store.get(key);\n    } catch (error) {\n      const e = error as IError;\n      if (e.notFound) {\n        nonce = 1;\n      } else {\n        throw new Error(e.code);\n      }\n    }\n    return nonce;\n  }\n}\n\n// This class creates the state of a store from an event stream\n// It also handles the states persistence, retrieval and updates\nexport class StateManager {\n  readonly listings: ListingManager;\n  readonly tags: TagManager;\n  readonly manifest: ShopManifestManager;\n  readonly orders: OrderManager;\n  readonly keycards: KeyCardManager;\n  readonly keycardNonce: KeycardNonceManager;\n  readonly shopId;\n  readonly publicClient;\n  constructor(\n    public client: IRelayClient,\n    listingStore: Store<Listing>,\n    tagStore: Store<Tag>,\n    shopManifestStore: Store<ShopManifest | SeqNo>,\n    orderStore: Store<Order | OrdersByStatus>,\n    keycardStore: Store<KeyCard>,\n    keycardNonceStore: Store<number>,\n    shopId: `0x${string}`,\n    publicClient: PublicClient,\n  ) {\n    this.listings = new ListingManager(listingStore, client);\n    this.tags = new TagManager(tagStore, client);\n    this.manifest = new ShopManifestManager(shopManifestStore, client);\n    this.orders = new OrderManager(orderStore, client);\n    this.keycards = new KeyCardManager(keycardStore, client);\n    this.keycardNonce = new KeycardNonceManager(keycardNonceStore, client);\n    this.shopId = shopId;\n    this.publicClient = publicClient;\n  }\n\n  //TODO: Watch for new relays being added. We also need to invalidate addresses from old relay.\n  async addRelaysToKeycards() {\n    //When we inititally create a shop, we are saving the relay tokenId => shopId.\n    //Here, we are retrieving all the relay addresses associated with the shopId and saving them to keycards store.\n    //Since some shopEvents are signed by a relay, we need to include these addresses when verifying the event signer.\n    const count = (await this.publicClient.readContract({\n      address: abi.addresses.ShopReg as `0x${string}`,\n      abi: abi.ShopReg,\n      functionName: \"getRelayCount\",\n      args: [this.shopId],\n    })) as number;\n\n    if (count > 0) {\n      const tokenIds = (await this.publicClient.readContract({\n        address: abi.addresses.ShopReg as `0x${string}`,\n        abi: abi.ShopReg,\n        functionName: \"getAllRelays\",\n        args: [this.shopId],\n      })) as `0x${string}`[];\n      for await (const tokenId of tokenIds) {\n        const ownerAdd = (await this.publicClient!.readContract({\n          address: abi.addresses.RelayReg as `0x${string}`,\n          abi: abi.RelayReg,\n          functionName: \"ownerOf\",\n          args: [tokenId],\n        })) as `0x${string}`;\n        debug(`adding relay: ${ownerAdd}`);\n        await this.keycards.addAddress(ownerAdd);\n      }\n    }\n  }\n\n  async eventStreamProcessing() {\n    const storeObjects = [\n      this.listings,\n      this.tags,\n      this.manifest,\n      this.orders,\n      this.keycards,\n      this.keycardNonce,\n    ];\n\n    const stream = this.client.createEventStream();\n\n    //Each event will go through all the storeObjects and update the relevant stores.\n    let event: SequencedEventWithRecoveredSigner;\n    for await (event of stream) {\n      await this.manifest.addSeqNo(event.shopSeqNo);\n      //fromPublicKey in KeyCard manager returns the address from public key as all lowercase.\n      await this.keycards.verify(event.signer);\n      for (const storeObject of storeObjects) {\n        await storeObject._processEvent(event);\n      }\n      debug(`processed event ${event.shopSeqNo}`);\n    }\n  }\n}\n","\"use client\";\nimport { PublicClient } from \"viem\";\nimport { privateKeyToAccount } from \"viem/accounts\";\nimport { BrowserLevel } from \"browser-level\";\nimport { RelayClient, type RelayEndpoint } from \"@massmarket/client\";\nimport { StateManager } from \"@massmarket/stateManager\";\nimport { logger, random32BytesHex } from \"@massmarket/utils\";\n\nimport { KeyCard, Listing, Order, ShopId, ShopManifest, Tag } from \"@/types\";\n\nconst namespace = \"frontend:ClientWithStateManager\";\nconst debug = logger(namespace);\nconst logerr = logger(namespace, \"error\");\n\nexport class ClientWithStateManager {\n  readonly publicClient: PublicClient;\n  readonly shopId: ShopId;\n  public stateManager: StateManager | null;\n  public relayClient: RelayClient | null;\n\n  constructor(\n    publicClient: PublicClient,\n    shopId: ShopId,\n    public relayEndpoint: RelayEndpoint,\n  ) {\n    this.stateManager = null;\n    this.relayClient = null;\n    this.publicClient = publicClient;\n    this.shopId = shopId;\n    this.relayEndpoint = relayEndpoint;\n  }\n\n  async createStateManager() {\n    const merchantKC = localStorage.getItem(\"merchantKC\");\n    const dbName = `${this.shopId.slice(0, 7)}${\n      merchantKC ? merchantKC.slice(0, 5) : \"-guest\"\n    }`;\n    debug(`using level db: ${dbName}`);\n    const encOption = { valueEncoding: \"json\" };\n    const db = new BrowserLevel(`./${dbName}`, encOption);\n    // Set up all the stores via sublevel\n    const listingStore = db.sublevel<string, Listing>(\n      \"listingStore\",\n      encOption,\n    );\n    const tagStore = db.sublevel<string, Tag>(\"tagStore\", encOption);\n    const shopManifestStore = db.sublevel<string, ShopManifest>(\n      \"shopManifestStore\",\n      encOption,\n    );\n    const orderStore = db.sublevel<string, Order>(\"orderStore\", encOption);\n    const keycardStore = db.sublevel<string, KeyCard>(\n      \"keycardStore\",\n      encOption,\n    );\n    const keycardNonceStore = db.sublevel<string, number>(\n      \"keycardNonceStore\",\n      encOption,\n    );\n\n    this.stateManager = new StateManager(\n      this.relayClient!,\n      listingStore,\n      tagStore,\n      shopManifestStore,\n      orderStore,\n      keycardStore,\n      keycardNonceStore,\n      this.shopId,\n      this.publicClient,\n    );\n\n    // Wait for relay address to be added to verified addresses before we return stateManager\n    await this.stateManager.addRelaysToKeycards();\n\n    // Only start the stream once relay address is added\n    this.stateManager\n      .eventStreamProcessing()\n      .then()\n      /* infinite loop*/\n      .catch((err: Error) => {\n        logerr(\"Error something bad happened in the stream\", err);\n      });\n\n    if (window && db) {\n      globalThis.addEventListener(\"beforeunload\", () => {\n        db.close().then(() => {\n          debug(\"level db closed\");\n        });\n      });\n    }\n\n    return this.stateManager;\n  }\n\n  createNewRelayClient() {\n    if (!this.relayEndpoint?.url) throw new Error(\"Relay endpoint URL not set\");\n    if (!this.relayEndpoint?.tokenId) {\n      throw new Error(\"Relay endpoint tokenId not set\");\n    }\n    const keyCard = random32BytesHex();\n    const keyCardWallet = privateKeyToAccount(keyCard);\n    localStorage.setItem(\"keyCardToEnroll\", keyCard);\n    this.relayClient = new RelayClient({\n      relayEndpoint: this.relayEndpoint,\n      keyCardWallet,\n    });\n    return this.relayClient;\n  }\n\n  async setClientAndConnect(kc: `0x${string}`) {\n    if (!this.relayEndpoint?.url) throw new Error(\"Relay endpoint URL not set\");\n    if (!this.relayEndpoint?.tokenId) {\n      throw new Error(\"Relay endpoint tokenId not set\");\n    }\n    const keyCardWallet = privateKeyToAccount(kc);\n    this.relayClient = new RelayClient({\n      relayEndpoint: this.relayEndpoint!,\n      keyCardWallet,\n    });\n    await this.createStateManager();\n    const eventNonceCounter = await this.stateManager!.keycardNonce.get(\n      keyCardWallet.address,\n    );\n    debug(`Setting nonce counter to: ${eventNonceCounter + 1}`);\n    this.relayClient.nonce = eventNonceCounter + 1;\n    await this.relayClient.connect();\n    await this.relayClient.authenticate();\n    return this.relayClient;\n  }\n\n  async sendMerchantSubscriptionRequest() {\n    const seqNo = await this.stateManager!.manifest.getSeqNo();\n    return this.relayClient!.sendMerchantSubscriptionRequest(\n      this.shopId,\n      seqNo,\n    );\n  }\n\n  async sendGuestCheckoutSubscriptionRequest() {\n    const seqNo = await this.stateManager!.manifest.getSeqNo();\n    return this.relayClient!.sendGuestCheckoutSubscriptionRequest(\n      this.shopId,\n      seqNo,\n    );\n  }\n\n  async sendGuestSubscriptionRequest() {\n    this.createNewRelayClient();\n    await this.createStateManager();\n    await this.relayClient!.connect();\n    const seqNo = await this.stateManager!.manifest.getSeqNo();\n    return this.relayClient!.sendGuestSubscriptionRequest(this.shopId, seqNo);\n  }\n}\n","// SPDX-FileCopyrightText: 2024 Mass Labs\n//\n// SPDX-License-Identifier: GPL-3.0-or-later\n\nimport { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\nimport {\n  Address,\n  type Chain,\n  createPublicClient,\n  createWalletClient,\n  http,\n  PublicClient,\n} from \"viem\";\nimport { privateKeyToAccount } from \"viem/accounts\";\nimport { hardhat } from \"wagmi/chains\";\n\nimport { assert, random32BytesHex, zeroAddress } from \"@massmarket/utils\";\nimport * as abi from \"@massmarket/contracts\";\n\nimport { Metadata } from \"@/types\";\n\nexport const cn = (...inputs: ClassValue[]) => {\n  return twMerge(clsx(inputs));\n};\n\nexport const formatEthAdd = (walletAdd: string) => {\n  return `${walletAdd.slice(0, 6)}...${walletAdd.slice(-4)}`;\n};\n\nexport const formatPK = (pk: `0x${string}`) => {\n  return `${pk.slice(0, 3)}...${pk.slice(-3)}`;\n};\n\nexport const parseMetadata = (metadata: Uint8Array) => {\n  const textDecoder = new TextDecoder();\n  const result = textDecoder.decode(metadata);\n  const _meta: Metadata = JSON.parse(result);\n  return _meta;\n};\n\nexport const decodeMetadata = (metadata: Uint8Array) => {\n  const textDecoder = new TextDecoder();\n  return textDecoder.decode(metadata);\n};\n\nexport const createQueryString = (name: string, value: string) => {\n  const params = new URLSearchParams();\n  params.set(name, value);\n\n  return params.toString();\n};\n\nexport const isValidHex = (hex: string) => {\n  return Boolean(hex.match(/^0x[0-9a-f]+$/i));\n};\n\nconst defaultRPC =\n  (process && process.env && process.env.NEXT_PUBLIC_ETH_RPC_URL) || undefined;\n\nexport function createPublicClientForChain(chain: Chain) {\n  return createPublicClient({\n    chain,\n    transport: http(defaultRPC),\n  });\n}\n\nexport function createGuestWalletClientForChain(chain: Chain) {\n  return createWalletClient({\n    account: privateKeyToAccount(random32BytesHex()),\n    chain,\n    transport: http(defaultRPC),\n  });\n}\n\nexport const getTokenInformation = (\n  publicClient: PublicClient,\n  tokenAddress: `0x${string}`,\n): Promise<[string, number]> => {\n  assert(publicClient.chain, \"publicClient.chain is undefined\");\n  const chainId = publicClient.chain.id;\n  if (tokenAddress === zeroAddress) {\n    return new Promise((resolve) => {\n      resolve([\"ETH\", 18]);\n    });\n  } else if (chainId === hardhat.id) {\n    return new Promise((resolve) => {\n      resolve([\"USDC\", 6]);\n    });\n  }\n  const symbol = publicClient.readContract({\n    address: tokenAddress,\n    abi: abi.ERC20,\n    functionName: \"symbol\",\n    args: [],\n  }) as Promise<string>;\n  const decimal = publicClient.readContract({\n    address: tokenAddress,\n    abi: abi.ERC20,\n    functionName: \"decimals\",\n    args: [],\n  }) as Promise<number>;\n  return Promise.all([symbol, decimal]);\n};\n\nexport const getTokenAddress = (symbol: string, chainId: string): Address => {\n  if (symbol === \"ETH\") return zeroAddress;\n  const addresses: {\n    [key: string]: {\n      [key: string]: string;\n    };\n  } = abi.tokenAddresses;\n  const tokenAddress = addresses[chainId][symbol] as Address;\n\n  if (!tokenAddress) {\n    throw new Error(`Token not found for ${symbol} on chainId: ${chainId}`);\n  }\n  return tokenAddress;\n};\n","// SPDX-FileCopyrightText: 2024 Mass Labs\n//\n// SPDX-License-Identifier: GPL-3.0-or-later\n\nimport {\n  KeyCard,\n  Listing,\n  ListingViewState,\n  Metadata,\n  Order,\n  OrderEventTypes,\n  OrderState,\n  Payee,\n  ShippingDetails,\n  ShopCurrencies,\n  ShopManifest,\n  Tag,\n} from \"@massmarket/stateManager/types\";\n\nexport {\n  type KeyCard,\n  type Listing,\n  ListingViewState,\n  type Metadata,\n  type Order,\n  OrderEventTypes,\n  OrderState,\n  type Payee,\n  type ShippingDetails,\n  type ShopCurrencies,\n  type ShopManifest,\n  type Tag,\n};\nexport type ListingId = `0x${string}`;\nexport type TagId = `0x${string}`;\nexport type OrderId = `0x${string}`;\nexport type TokenAddr = `0x${string}`;\nexport type ShopId = `0x${string}`;\n\nexport enum RelayStatus {\n  Available = \"AVAILABLE\",\n  Unavailable = \"UNAVAILABLE\",\n}\n\nexport enum Role {\n  Owner = \"OWNER\",\n  Admin = \"ADMIN\",\n  Clerk = \"CLERK\",\n}\n\nexport interface Contributor {\n  id: number;\n  role: Role;\n  name: string;\n  keyCardId: string;\n  thumbnail: string;\n  walletAddress: string;\n}\n\nexport interface Relay {\n  id: `0x${string}`;\n  name: string;\n  location: string;\n  status: RelayStatus;\n  provisioned: boolean;\n}\n\nexport enum SortOption {\n  priceLow = \"Price Low\",\n  priceHigh = \"Price High\",\n  newest = \"Newest\",\n  default = \"Default\",\n  available = \"Available\",\n  hidden = \"Hidden\",\n  unavailable = \"Unavailable\",\n}\nexport enum Status {\n  Failed = \"FAILED\",\n  Pending = \"PENDING\",\n  Complete = \"COMPLETE\",\n}\nexport interface BaseTokenDetails {\n  decimal: number;\n  symbol: string;\n}\nexport interface ShopDetails {\n  name: string;\n  profilePictureUrl: string;\n}\n\nexport interface CurrencyChainOption {\n  label: string;\n  value: string | number;\n  address?: `0x${string}`;\n  chainId?: number;\n}\nexport enum CheckoutStep {\n  cart = \"cart\",\n  shippingDetails = \"shippingDetails\",\n  paymentDetails = \"paymentDetails\",\n  confirmation = \"confirmation\",\n  expired = \"expired\",\n}\n","/*eslint-disable block-scoped-var, id-length, no-control-regex, no-magic-numbers, no-prototype-builtins, no-redeclare, no-shadow, no-var, sort-vars*/\nimport $protobuf from \"protobufjs/minimal.js\";\n\n// Common aliases\nvar $Reader = $protobuf.Reader,\n  $Writer = $protobuf.Writer,\n  $util = $protobuf.util;\n\n// Exported root namespace\nvar $root = $protobuf.roots[\"market.mass\"] ||\n  ($protobuf.roots[\"market.mass\"] = {});\n\n$root.market = (function () {\n  /**\n   * Namespace market.\n   * @exports market\n   * @namespace\n   */\n  var market = {};\n\n  market.mass = (function () {\n    /**\n     * Namespace mass.\n     * @memberof market\n     * @namespace\n     */\n    var mass = {};\n\n    mass.AuthenticateRequest = (function () {\n      /**\n       * Properties of an AuthenticateRequest.\n       * @memberof market.mass\n       * @interface IAuthenticateRequest\n       * @property {market.mass.IPublicKey|null} [publicKey] AuthenticateRequest publicKey\n       */\n\n      /**\n       * Constructs a new AuthenticateRequest.\n       * @memberof market.mass\n       * @classdesc Represents an AuthenticateRequest.\n       * @implements IAuthenticateRequest\n       * @constructor\n       * @param {market.mass.IAuthenticateRequest=} [properties] Properties to set\n       */\n      function AuthenticateRequest(properties) {\n        if (properties) {\n          for (\n            var keys = Object.keys(properties), i = 0;\n            i < keys.length;\n            ++i\n          ) {\n            if (properties[keys[i]] != null) {\n              this[keys[i]] = properties[keys[i]];\n            }\n          }\n        }\n      }\n\n      /**\n       * AuthenticateRequest publicKey.\n       * @member {market.mass.IPublicKey|null|undefined} publicKey\n       * @memberof market.mass.AuthenticateRequest\n       * @instance\n       */\n      AuthenticateRequest.prototype.publicKey = null;\n\n      /**\n       * Creates a new AuthenticateRequest instance using the specified properties.\n       * @function create\n       * @memberof market.mass.AuthenticateRequest\n       * @static\n       * @param {market.mass.IAuthenticateRequest=} [properties] Properties to set\n       * @returns {market.mass.AuthenticateRequest} AuthenticateRequest instance\n       */\n      AuthenticateRequest.create = function create(properties) {\n        return new AuthenticateRequest(properties);\n      };\n\n      /**\n       * Encodes the specified AuthenticateRequest message. Does not implicitly {@link market.mass.AuthenticateRequest.verify|verify} messages.\n       * @function encode\n       * @memberof market.mass.AuthenticateRequest\n       * @static\n       * @param {market.mass.IAuthenticateRequest} message AuthenticateRequest message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      AuthenticateRequest.encode = function encode(message, writer) {\n        if (!writer) {\n          writer = $Writer.create();\n        }\n        if (\n          message.publicKey != null &&\n          Object.hasOwnProperty.call(message, \"publicKey\")\n        ) {\n          $root.market.mass.PublicKey.encode(\n            message.publicKey,\n            writer.uint32(/* id 2, wireType 2 =*/ 18).fork(),\n          ).ldelim();\n        }\n        return writer;\n      };\n\n      /**\n       * Encodes the specified AuthenticateRequest message, length delimited. Does not implicitly {@link market.mass.AuthenticateRequest.verify|verify} messages.\n       * @function encodeDelimited\n       * @memberof market.mass.AuthenticateRequest\n       * @static\n       * @param {market.mass.IAuthenticateRequest} message AuthenticateRequest message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      AuthenticateRequest.encodeDelimited = function encodeDelimited(\n        message,\n        writer,\n      ) {\n        return this.encode(message, writer).ldelim();\n      };\n\n      /**\n       * Decodes an AuthenticateRequest message from the specified reader or buffer.\n       * @function decode\n       * @memberof market.mass.AuthenticateRequest\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @param {number} [length] Message length if known beforehand\n       * @returns {market.mass.AuthenticateRequest} AuthenticateRequest\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      AuthenticateRequest.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader)) {\n          reader = $Reader.create(reader);\n        }\n        var end = length === undefined ? reader.len : reader.pos + length,\n          message = new $root.market.mass.AuthenticateRequest();\n        while (reader.pos < end) {\n          var tag = reader.uint32();\n          switch (tag >>> 3) {\n            case 2: {\n              message.publicKey = $root.market.mass.PublicKey.decode(\n                reader,\n                reader.uint32(),\n              );\n              break;\n            }\n            default:\n              reader.skipType(tag & 7);\n              break;\n          }\n        }\n        return message;\n      };\n\n      /**\n       * Decodes an AuthenticateRequest message from the specified reader or buffer, length delimited.\n       * @function decodeDelimited\n       * @memberof market.mass.AuthenticateRequest\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @returns {market.mass.AuthenticateRequest} AuthenticateRequest\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      AuthenticateRequest.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader)) {\n          reader = new $Reader(reader);\n        }\n        return this.decode(reader, reader.uint32());\n      };\n\n      /**\n       * Verifies an AuthenticateRequest message.\n       * @function verify\n       * @memberof market.mass.AuthenticateRequest\n       * @static\n       * @param {Object.<string,*>} message Plain object to verify\n       * @returns {string|null} `null` if valid, otherwise the reason why it is not\n       */\n      AuthenticateRequest.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null) {\n          return \"object expected\";\n        }\n        if (message.publicKey != null && message.hasOwnProperty(\"publicKey\")) {\n          var error = $root.market.mass.PublicKey.verify(message.publicKey);\n          if (error) {\n            return \"publicKey.\" + error;\n          }\n        }\n        return null;\n      };\n\n      /**\n       * Creates an AuthenticateRequest message from a plain object. Also converts values to their respective internal types.\n       * @function fromObject\n       * @memberof market.mass.AuthenticateRequest\n       * @static\n       * @param {Object.<string,*>} object Plain object\n       * @returns {market.mass.AuthenticateRequest} AuthenticateRequest\n       */\n      AuthenticateRequest.fromObject = function fromObject(object) {\n        if (object instanceof $root.market.mass.AuthenticateRequest) {\n          return object;\n        }\n        var message = new $root.market.mass.AuthenticateRequest();\n        if (object.publicKey != null) {\n          if (typeof object.publicKey !== \"object\") {\n            throw TypeError(\n              \".market.mass.AuthenticateRequest.publicKey: object expected\",\n            );\n          }\n          message.publicKey = $root.market.mass.PublicKey.fromObject(\n            object.publicKey,\n          );\n        }\n        return message;\n      };\n\n      /**\n       * Creates a plain object from an AuthenticateRequest message. Also converts values to other types if specified.\n       * @function toObject\n       * @memberof market.mass.AuthenticateRequest\n       * @static\n       * @param {market.mass.AuthenticateRequest} message AuthenticateRequest\n       * @param {$protobuf.IConversionOptions} [options] Conversion options\n       * @returns {Object.<string,*>} Plain object\n       */\n      AuthenticateRequest.toObject = function toObject(message, options) {\n        if (!options) {\n          options = {};\n        }\n        var object = {};\n        if (options.defaults) {\n          object.publicKey = null;\n        }\n        if (message.publicKey != null && message.hasOwnProperty(\"publicKey\")) {\n          object.publicKey = $root.market.mass.PublicKey.toObject(\n            message.publicKey,\n            options,\n          );\n        }\n        return object;\n      };\n\n      /**\n       * Converts this AuthenticateRequest to JSON.\n       * @function toJSON\n       * @memberof market.mass.AuthenticateRequest\n       * @instance\n       * @returns {Object.<string,*>} JSON object\n       */\n      AuthenticateRequest.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n      };\n\n      /**\n       * Gets the default type url for AuthenticateRequest\n       * @function getTypeUrl\n       * @memberof market.mass.AuthenticateRequest\n       * @static\n       * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n       * @returns {string} The default type url\n       */\n      AuthenticateRequest.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n        if (typeUrlPrefix === undefined) {\n          typeUrlPrefix = \"type.googleapis.com\";\n        }\n        return typeUrlPrefix + \"/market.mass.AuthenticateRequest\";\n      };\n\n      return AuthenticateRequest;\n    })();\n\n    mass.ChallengeSolvedRequest = (function () {\n      /**\n       * Properties of a ChallengeSolvedRequest.\n       * @memberof market.mass\n       * @interface IChallengeSolvedRequest\n       * @property {market.mass.ISignature|null} [signature] ChallengeSolvedRequest signature\n       */\n\n      /**\n       * Constructs a new ChallengeSolvedRequest.\n       * @memberof market.mass\n       * @classdesc Represents a ChallengeSolvedRequest.\n       * @implements IChallengeSolvedRequest\n       * @constructor\n       * @param {market.mass.IChallengeSolvedRequest=} [properties] Properties to set\n       */\n      function ChallengeSolvedRequest(properties) {\n        if (properties) {\n          for (\n            var keys = Object.keys(properties), i = 0;\n            i < keys.length;\n            ++i\n          ) {\n            if (properties[keys[i]] != null) {\n              this[keys[i]] = properties[keys[i]];\n            }\n          }\n        }\n      }\n\n      /**\n       * ChallengeSolvedRequest signature.\n       * @member {market.mass.ISignature|null|undefined} signature\n       * @memberof market.mass.ChallengeSolvedRequest\n       * @instance\n       */\n      ChallengeSolvedRequest.prototype.signature = null;\n\n      /**\n       * Creates a new ChallengeSolvedRequest instance using the specified properties.\n       * @function create\n       * @memberof market.mass.ChallengeSolvedRequest\n       * @static\n       * @param {market.mass.IChallengeSolvedRequest=} [properties] Properties to set\n       * @returns {market.mass.ChallengeSolvedRequest} ChallengeSolvedRequest instance\n       */\n      ChallengeSolvedRequest.create = function create(properties) {\n        return new ChallengeSolvedRequest(properties);\n      };\n\n      /**\n       * Encodes the specified ChallengeSolvedRequest message. Does not implicitly {@link market.mass.ChallengeSolvedRequest.verify|verify} messages.\n       * @function encode\n       * @memberof market.mass.ChallengeSolvedRequest\n       * @static\n       * @param {market.mass.IChallengeSolvedRequest} message ChallengeSolvedRequest message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      ChallengeSolvedRequest.encode = function encode(message, writer) {\n        if (!writer) {\n          writer = $Writer.create();\n        }\n        if (\n          message.signature != null &&\n          Object.hasOwnProperty.call(message, \"signature\")\n        ) {\n          $root.market.mass.Signature.encode(\n            message.signature,\n            writer.uint32(/* id 2, wireType 2 =*/ 18).fork(),\n          ).ldelim();\n        }\n        return writer;\n      };\n\n      /**\n       * Encodes the specified ChallengeSolvedRequest message, length delimited. Does not implicitly {@link market.mass.ChallengeSolvedRequest.verify|verify} messages.\n       * @function encodeDelimited\n       * @memberof market.mass.ChallengeSolvedRequest\n       * @static\n       * @param {market.mass.IChallengeSolvedRequest} message ChallengeSolvedRequest message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      ChallengeSolvedRequest.encodeDelimited = function encodeDelimited(\n        message,\n        writer,\n      ) {\n        return this.encode(message, writer).ldelim();\n      };\n\n      /**\n       * Decodes a ChallengeSolvedRequest message from the specified reader or buffer.\n       * @function decode\n       * @memberof market.mass.ChallengeSolvedRequest\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @param {number} [length] Message length if known beforehand\n       * @returns {market.mass.ChallengeSolvedRequest} ChallengeSolvedRequest\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      ChallengeSolvedRequest.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader)) {\n          reader = $Reader.create(reader);\n        }\n        var end = length === undefined ? reader.len : reader.pos + length,\n          message = new $root.market.mass.ChallengeSolvedRequest();\n        while (reader.pos < end) {\n          var tag = reader.uint32();\n          switch (tag >>> 3) {\n            case 2: {\n              message.signature = $root.market.mass.Signature.decode(\n                reader,\n                reader.uint32(),\n              );\n              break;\n            }\n            default:\n              reader.skipType(tag & 7);\n              break;\n          }\n        }\n        return message;\n      };\n\n      /**\n       * Decodes a ChallengeSolvedRequest message from the specified reader or buffer, length delimited.\n       * @function decodeDelimited\n       * @memberof market.mass.ChallengeSolvedRequest\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @returns {market.mass.ChallengeSolvedRequest} ChallengeSolvedRequest\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      ChallengeSolvedRequest.decodeDelimited = function decodeDelimited(\n        reader,\n      ) {\n        if (!(reader instanceof $Reader)) {\n          reader = new $Reader(reader);\n        }\n        return this.decode(reader, reader.uint32());\n      };\n\n      /**\n       * Verifies a ChallengeSolvedRequest message.\n       * @function verify\n       * @memberof market.mass.ChallengeSolvedRequest\n       * @static\n       * @param {Object.<string,*>} message Plain object to verify\n       * @returns {string|null} `null` if valid, otherwise the reason why it is not\n       */\n      ChallengeSolvedRequest.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null) {\n          return \"object expected\";\n        }\n        if (message.signature != null && message.hasOwnProperty(\"signature\")) {\n          var error = $root.market.mass.Signature.verify(message.signature);\n          if (error) {\n            return \"signature.\" + error;\n          }\n        }\n        return null;\n      };\n\n      /**\n       * Creates a ChallengeSolvedRequest message from a plain object. Also converts values to their respective internal types.\n       * @function fromObject\n       * @memberof market.mass.ChallengeSolvedRequest\n       * @static\n       * @param {Object.<string,*>} object Plain object\n       * @returns {market.mass.ChallengeSolvedRequest} ChallengeSolvedRequest\n       */\n      ChallengeSolvedRequest.fromObject = function fromObject(object) {\n        if (object instanceof $root.market.mass.ChallengeSolvedRequest) {\n          return object;\n        }\n        var message = new $root.market.mass.ChallengeSolvedRequest();\n        if (object.signature != null) {\n          if (typeof object.signature !== \"object\") {\n            throw TypeError(\n              \".market.mass.ChallengeSolvedRequest.signature: object expected\",\n            );\n          }\n          message.signature = $root.market.mass.Signature.fromObject(\n            object.signature,\n          );\n        }\n        return message;\n      };\n\n      /**\n       * Creates a plain object from a ChallengeSolvedRequest message. Also converts values to other types if specified.\n       * @function toObject\n       * @memberof market.mass.ChallengeSolvedRequest\n       * @static\n       * @param {market.mass.ChallengeSolvedRequest} message ChallengeSolvedRequest\n       * @param {$protobuf.IConversionOptions} [options] Conversion options\n       * @returns {Object.<string,*>} Plain object\n       */\n      ChallengeSolvedRequest.toObject = function toObject(message, options) {\n        if (!options) {\n          options = {};\n        }\n        var object = {};\n        if (options.defaults) {\n          object.signature = null;\n        }\n        if (message.signature != null && message.hasOwnProperty(\"signature\")) {\n          object.signature = $root.market.mass.Signature.toObject(\n            message.signature,\n            options,\n          );\n        }\n        return object;\n      };\n\n      /**\n       * Converts this ChallengeSolvedRequest to JSON.\n       * @function toJSON\n       * @memberof market.mass.ChallengeSolvedRequest\n       * @instance\n       * @returns {Object.<string,*>} JSON object\n       */\n      ChallengeSolvedRequest.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n      };\n\n      /**\n       * Gets the default type url for ChallengeSolvedRequest\n       * @function getTypeUrl\n       * @memberof market.mass.ChallengeSolvedRequest\n       * @static\n       * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n       * @returns {string} The default type url\n       */\n      ChallengeSolvedRequest.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n        if (typeUrlPrefix === undefined) {\n          typeUrlPrefix = \"type.googleapis.com\";\n        }\n        return typeUrlPrefix + \"/market.mass.ChallengeSolvedRequest\";\n      };\n\n      return ChallengeSolvedRequest;\n    })();\n\n    mass.RequestId = (function () {\n      /**\n       * Properties of a RequestId.\n       * @memberof market.mass\n       * @interface IRequestId\n       * @property {number|Long|null} [raw] RequestId raw\n       */\n\n      /**\n       * Constructs a new RequestId.\n       * @memberof market.mass\n       * @classdesc Represents a RequestId.\n       * @implements IRequestId\n       * @constructor\n       * @param {market.mass.IRequestId=} [properties] Properties to set\n       */\n      function RequestId(properties) {\n        if (properties) {\n          for (\n            var keys = Object.keys(properties), i = 0;\n            i < keys.length;\n            ++i\n          ) {\n            if (properties[keys[i]] != null) {\n              this[keys[i]] = properties[keys[i]];\n            }\n          }\n        }\n      }\n\n      /**\n       * RequestId raw.\n       * @member {number|Long} raw\n       * @memberof market.mass.RequestId\n       * @instance\n       */\n      RequestId.prototype.raw = $util.Long\n        ? $util.Long.fromBits(0, 0, false)\n        : 0;\n\n      /**\n       * Creates a new RequestId instance using the specified properties.\n       * @function create\n       * @memberof market.mass.RequestId\n       * @static\n       * @param {market.mass.IRequestId=} [properties] Properties to set\n       * @returns {market.mass.RequestId} RequestId instance\n       */\n      RequestId.create = function create(properties) {\n        return new RequestId(properties);\n      };\n\n      /**\n       * Encodes the specified RequestId message. Does not implicitly {@link market.mass.RequestId.verify|verify} messages.\n       * @function encode\n       * @memberof market.mass.RequestId\n       * @static\n       * @param {market.mass.IRequestId} message RequestId message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      RequestId.encode = function encode(message, writer) {\n        if (!writer) {\n          writer = $Writer.create();\n        }\n        if (message.raw != null && Object.hasOwnProperty.call(message, \"raw\")) {\n          writer.uint32(/* id 1, wireType 0 =*/ 8).sint64(message.raw);\n        }\n        return writer;\n      };\n\n      /**\n       * Encodes the specified RequestId message, length delimited. Does not implicitly {@link market.mass.RequestId.verify|verify} messages.\n       * @function encodeDelimited\n       * @memberof market.mass.RequestId\n       * @static\n       * @param {market.mass.IRequestId} message RequestId message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      RequestId.encodeDelimited = function encodeDelimited(message, writer) {\n        return this.encode(message, writer).ldelim();\n      };\n\n      /**\n       * Decodes a RequestId message from the specified reader or buffer.\n       * @function decode\n       * @memberof market.mass.RequestId\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @param {number} [length] Message length if known beforehand\n       * @returns {market.mass.RequestId} RequestId\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      RequestId.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader)) {\n          reader = $Reader.create(reader);\n        }\n        var end = length === undefined ? reader.len : reader.pos + length,\n          message = new $root.market.mass.RequestId();\n        while (reader.pos < end) {\n          var tag = reader.uint32();\n          switch (tag >>> 3) {\n            case 1: {\n              message.raw = reader.sint64();\n              break;\n            }\n            default:\n              reader.skipType(tag & 7);\n              break;\n          }\n        }\n        return message;\n      };\n\n      /**\n       * Decodes a RequestId message from the specified reader or buffer, length delimited.\n       * @function decodeDelimited\n       * @memberof market.mass.RequestId\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @returns {market.mass.RequestId} RequestId\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      RequestId.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader)) {\n          reader = new $Reader(reader);\n        }\n        return this.decode(reader, reader.uint32());\n      };\n\n      /**\n       * Verifies a RequestId message.\n       * @function verify\n       * @memberof market.mass.RequestId\n       * @static\n       * @param {Object.<string,*>} message Plain object to verify\n       * @returns {string|null} `null` if valid, otherwise the reason why it is not\n       */\n      RequestId.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null) {\n          return \"object expected\";\n        }\n        if (message.raw != null && message.hasOwnProperty(\"raw\")) {\n          if (\n            !$util.isInteger(message.raw) &&\n            !(message.raw && $util.isInteger(message.raw.low) &&\n              $util.isInteger(message.raw.high))\n          ) {\n            return \"raw: integer|Long expected\";\n          }\n        }\n        return null;\n      };\n\n      /**\n       * Creates a RequestId message from a plain object. Also converts values to their respective internal types.\n       * @function fromObject\n       * @memberof market.mass.RequestId\n       * @static\n       * @param {Object.<string,*>} object Plain object\n       * @returns {market.mass.RequestId} RequestId\n       */\n      RequestId.fromObject = function fromObject(object) {\n        if (object instanceof $root.market.mass.RequestId) {\n          return object;\n        }\n        var message = new $root.market.mass.RequestId();\n        if (object.raw != null) {\n          if ($util.Long) {\n            (message.raw = $util.Long.fromValue(object.raw)).unsigned = false;\n          } else if (typeof object.raw === \"string\") {\n            message.raw = parseInt(object.raw, 10);\n          } else if (typeof object.raw === \"number\") {\n            message.raw = object.raw;\n          } else if (typeof object.raw === \"object\") {\n            message.raw = new $util.LongBits(\n              object.raw.low >>> 0,\n              object.raw.high >>> 0,\n            ).toNumber();\n          }\n        }\n        return message;\n      };\n\n      /**\n       * Creates a plain object from a RequestId message. Also converts values to other types if specified.\n       * @function toObject\n       * @memberof market.mass.RequestId\n       * @static\n       * @param {market.mass.RequestId} message RequestId\n       * @param {$protobuf.IConversionOptions} [options] Conversion options\n       * @returns {Object.<string,*>} Plain object\n       */\n      RequestId.toObject = function toObject(message, options) {\n        if (!options) {\n          options = {};\n        }\n        var object = {};\n        if (options.defaults) {\n          if ($util.Long) {\n            var long = new $util.Long(0, 0, false);\n            object.raw = options.longs === String\n              ? long.toString()\n              : options.longs === Number\n              ? long.toNumber()\n              : long;\n          } else {\n            object.raw = options.longs === String ? \"0\" : 0;\n          }\n        }\n        if (message.raw != null && message.hasOwnProperty(\"raw\")) {\n          if (typeof message.raw === \"number\") {\n            object.raw = options.longs === String\n              ? String(message.raw)\n              : message.raw;\n          } else {\n            object.raw = options.longs === String\n              ? $util.Long.prototype.toString.call(message.raw)\n              : options.longs === Number\n              ? new $util.LongBits(\n                message.raw.low >>> 0,\n                message.raw.high >>> 0,\n              ).toNumber()\n              : message.raw;\n          }\n        }\n        return object;\n      };\n\n      /**\n       * Converts this RequestId to JSON.\n       * @function toJSON\n       * @memberof market.mass.RequestId\n       * @instance\n       * @returns {Object.<string,*>} JSON object\n       */\n      RequestId.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n      };\n\n      /**\n       * Gets the default type url for RequestId\n       * @function getTypeUrl\n       * @memberof market.mass.RequestId\n       * @static\n       * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n       * @returns {string} The default type url\n       */\n      RequestId.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n        if (typeUrlPrefix === undefined) {\n          typeUrlPrefix = \"type.googleapis.com\";\n        }\n        return typeUrlPrefix + \"/market.mass.RequestId\";\n      };\n\n      return RequestId;\n    })();\n\n    mass.ObjectId = (function () {\n      /**\n       * Properties of an ObjectId.\n       * @memberof market.mass\n       * @interface IObjectId\n       * @property {Uint8Array|null} [raw] ObjectId raw\n       */\n\n      /**\n       * Constructs a new ObjectId.\n       * @memberof market.mass\n       * @classdesc Represents an ObjectId.\n       * @implements IObjectId\n       * @constructor\n       * @param {market.mass.IObjectId=} [properties] Properties to set\n       */\n      function ObjectId(properties) {\n        if (properties) {\n          for (\n            var keys = Object.keys(properties), i = 0;\n            i < keys.length;\n            ++i\n          ) {\n            if (properties[keys[i]] != null) {\n              this[keys[i]] = properties[keys[i]];\n            }\n          }\n        }\n      }\n\n      /**\n       * ObjectId raw.\n       * @member {Uint8Array} raw\n       * @memberof market.mass.ObjectId\n       * @instance\n       */\n      ObjectId.prototype.raw = $util.newBuffer([]);\n\n      /**\n       * Creates a new ObjectId instance using the specified properties.\n       * @function create\n       * @memberof market.mass.ObjectId\n       * @static\n       * @param {market.mass.IObjectId=} [properties] Properties to set\n       * @returns {market.mass.ObjectId} ObjectId instance\n       */\n      ObjectId.create = function create(properties) {\n        return new ObjectId(properties);\n      };\n\n      /**\n       * Encodes the specified ObjectId message. Does not implicitly {@link market.mass.ObjectId.verify|verify} messages.\n       * @function encode\n       * @memberof market.mass.ObjectId\n       * @static\n       * @param {market.mass.IObjectId} message ObjectId message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      ObjectId.encode = function encode(message, writer) {\n        if (!writer) {\n          writer = $Writer.create();\n        }\n        if (message.raw != null && Object.hasOwnProperty.call(message, \"raw\")) {\n          writer.uint32(/* id 1, wireType 2 =*/ 10).bytes(message.raw);\n        }\n        return writer;\n      };\n\n      /**\n       * Encodes the specified ObjectId message, length delimited. Does not implicitly {@link market.mass.ObjectId.verify|verify} messages.\n       * @function encodeDelimited\n       * @memberof market.mass.ObjectId\n       * @static\n       * @param {market.mass.IObjectId} message ObjectId message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      ObjectId.encodeDelimited = function encodeDelimited(message, writer) {\n        return this.encode(message, writer).ldelim();\n      };\n\n      /**\n       * Decodes an ObjectId message from the specified reader or buffer.\n       * @function decode\n       * @memberof market.mass.ObjectId\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @param {number} [length] Message length if known beforehand\n       * @returns {market.mass.ObjectId} ObjectId\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      ObjectId.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader)) {\n          reader = $Reader.create(reader);\n        }\n        var end = length === undefined ? reader.len : reader.pos + length,\n          message = new $root.market.mass.ObjectId();\n        while (reader.pos < end) {\n          var tag = reader.uint32();\n          switch (tag >>> 3) {\n            case 1: {\n              message.raw = reader.bytes();\n              break;\n            }\n            default:\n              reader.skipType(tag & 7);\n              break;\n          }\n        }\n        return message;\n      };\n\n      /**\n       * Decodes an ObjectId message from the specified reader or buffer, length delimited.\n       * @function decodeDelimited\n       * @memberof market.mass.ObjectId\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @returns {market.mass.ObjectId} ObjectId\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      ObjectId.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader)) {\n          reader = new $Reader(reader);\n        }\n        return this.decode(reader, reader.uint32());\n      };\n\n      /**\n       * Verifies an ObjectId message.\n       * @function verify\n       * @memberof market.mass.ObjectId\n       * @static\n       * @param {Object.<string,*>} message Plain object to verify\n       * @returns {string|null} `null` if valid, otherwise the reason why it is not\n       */\n      ObjectId.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null) {\n          return \"object expected\";\n        }\n        if (message.raw != null && message.hasOwnProperty(\"raw\")) {\n          if (\n            !(message.raw && typeof message.raw.length === \"number\" ||\n              $util.isString(message.raw))\n          ) {\n            return \"raw: buffer expected\";\n          }\n        }\n        return null;\n      };\n\n      /**\n       * Creates an ObjectId message from a plain object. Also converts values to their respective internal types.\n       * @function fromObject\n       * @memberof market.mass.ObjectId\n       * @static\n       * @param {Object.<string,*>} object Plain object\n       * @returns {market.mass.ObjectId} ObjectId\n       */\n      ObjectId.fromObject = function fromObject(object) {\n        if (object instanceof $root.market.mass.ObjectId) {\n          return object;\n        }\n        var message = new $root.market.mass.ObjectId();\n        if (object.raw != null) {\n          if (typeof object.raw === \"string\") {\n            $util.base64.decode(\n              object.raw,\n              message.raw = $util.newBuffer($util.base64.length(object.raw)),\n              0,\n            );\n          } else if (object.raw.length >= 0) {\n            message.raw = object.raw;\n          }\n        }\n        return message;\n      };\n\n      /**\n       * Creates a plain object from an ObjectId message. Also converts values to other types if specified.\n       * @function toObject\n       * @memberof market.mass.ObjectId\n       * @static\n       * @param {market.mass.ObjectId} message ObjectId\n       * @param {$protobuf.IConversionOptions} [options] Conversion options\n       * @returns {Object.<string,*>} Plain object\n       */\n      ObjectId.toObject = function toObject(message, options) {\n        if (!options) {\n          options = {};\n        }\n        var object = {};\n        if (options.defaults) {\n          if (options.bytes === String) {\n            object.raw = \"\";\n          } else {\n            object.raw = [];\n            if (options.bytes !== Array) {\n              object.raw = $util.newBuffer(object.raw);\n            }\n          }\n        }\n        if (message.raw != null && message.hasOwnProperty(\"raw\")) {\n          object.raw = options.bytes === String\n            ? $util.base64.encode(message.raw, 0, message.raw.length)\n            : options.bytes === Array\n            ? Array.prototype.slice.call(message.raw)\n            : message.raw;\n        }\n        return object;\n      };\n\n      /**\n       * Converts this ObjectId to JSON.\n       * @function toJSON\n       * @memberof market.mass.ObjectId\n       * @instance\n       * @returns {Object.<string,*>} JSON object\n       */\n      ObjectId.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n      };\n\n      /**\n       * Gets the default type url for ObjectId\n       * @function getTypeUrl\n       * @memberof market.mass.ObjectId\n       * @static\n       * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n       * @returns {string} The default type url\n       */\n      ObjectId.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n        if (typeUrlPrefix === undefined) {\n          typeUrlPrefix = \"type.googleapis.com\";\n        }\n        return typeUrlPrefix + \"/market.mass.ObjectId\";\n      };\n\n      return ObjectId;\n    })();\n\n    mass.Signature = (function () {\n      /**\n       * Properties of a Signature.\n       * @memberof market.mass\n       * @interface ISignature\n       * @property {Uint8Array|null} [raw] Signature raw\n       */\n\n      /**\n       * Constructs a new Signature.\n       * @memberof market.mass\n       * @classdesc Represents a Signature.\n       * @implements ISignature\n       * @constructor\n       * @param {market.mass.ISignature=} [properties] Properties to set\n       */\n      function Signature(properties) {\n        if (properties) {\n          for (\n            var keys = Object.keys(properties), i = 0;\n            i < keys.length;\n            ++i\n          ) {\n            if (properties[keys[i]] != null) {\n              this[keys[i]] = properties[keys[i]];\n            }\n          }\n        }\n      }\n\n      /**\n       * Signature raw.\n       * @member {Uint8Array} raw\n       * @memberof market.mass.Signature\n       * @instance\n       */\n      Signature.prototype.raw = $util.newBuffer([]);\n\n      /**\n       * Creates a new Signature instance using the specified properties.\n       * @function create\n       * @memberof market.mass.Signature\n       * @static\n       * @param {market.mass.ISignature=} [properties] Properties to set\n       * @returns {market.mass.Signature} Signature instance\n       */\n      Signature.create = function create(properties) {\n        return new Signature(properties);\n      };\n\n      /**\n       * Encodes the specified Signature message. Does not implicitly {@link market.mass.Signature.verify|verify} messages.\n       * @function encode\n       * @memberof market.mass.Signature\n       * @static\n       * @param {market.mass.ISignature} message Signature message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      Signature.encode = function encode(message, writer) {\n        if (!writer) {\n          writer = $Writer.create();\n        }\n        if (message.raw != null && Object.hasOwnProperty.call(message, \"raw\")) {\n          writer.uint32(/* id 1, wireType 2 =*/ 10).bytes(message.raw);\n        }\n        return writer;\n      };\n\n      /**\n       * Encodes the specified Signature message, length delimited. Does not implicitly {@link market.mass.Signature.verify|verify} messages.\n       * @function encodeDelimited\n       * @memberof market.mass.Signature\n       * @static\n       * @param {market.mass.ISignature} message Signature message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      Signature.encodeDelimited = function encodeDelimited(message, writer) {\n        return this.encode(message, writer).ldelim();\n      };\n\n      /**\n       * Decodes a Signature message from the specified reader or buffer.\n       * @function decode\n       * @memberof market.mass.Signature\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @param {number} [length] Message length if known beforehand\n       * @returns {market.mass.Signature} Signature\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      Signature.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader)) {\n          reader = $Reader.create(reader);\n        }\n        var end = length === undefined ? reader.len : reader.pos + length,\n          message = new $root.market.mass.Signature();\n        while (reader.pos < end) {\n          var tag = reader.uint32();\n          switch (tag >>> 3) {\n            case 1: {\n              message.raw = reader.bytes();\n              break;\n            }\n            default:\n              reader.skipType(tag & 7);\n              break;\n          }\n        }\n        return message;\n      };\n\n      /**\n       * Decodes a Signature message from the specified reader or buffer, length delimited.\n       * @function decodeDelimited\n       * @memberof market.mass.Signature\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @returns {market.mass.Signature} Signature\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      Signature.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader)) {\n          reader = new $Reader(reader);\n        }\n        return this.decode(reader, reader.uint32());\n      };\n\n      /**\n       * Verifies a Signature message.\n       * @function verify\n       * @memberof market.mass.Signature\n       * @static\n       * @param {Object.<string,*>} message Plain object to verify\n       * @returns {string|null} `null` if valid, otherwise the reason why it is not\n       */\n      Signature.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null) {\n          return \"object expected\";\n        }\n        if (message.raw != null && message.hasOwnProperty(\"raw\")) {\n          if (\n            !(message.raw && typeof message.raw.length === \"number\" ||\n              $util.isString(message.raw))\n          ) {\n            return \"raw: buffer expected\";\n          }\n        }\n        return null;\n      };\n\n      /**\n       * Creates a Signature message from a plain object. Also converts values to their respective internal types.\n       * @function fromObject\n       * @memberof market.mass.Signature\n       * @static\n       * @param {Object.<string,*>} object Plain object\n       * @returns {market.mass.Signature} Signature\n       */\n      Signature.fromObject = function fromObject(object) {\n        if (object instanceof $root.market.mass.Signature) {\n          return object;\n        }\n        var message = new $root.market.mass.Signature();\n        if (object.raw != null) {\n          if (typeof object.raw === \"string\") {\n            $util.base64.decode(\n              object.raw,\n              message.raw = $util.newBuffer($util.base64.length(object.raw)),\n              0,\n            );\n          } else if (object.raw.length >= 0) {\n            message.raw = object.raw;\n          }\n        }\n        return message;\n      };\n\n      /**\n       * Creates a plain object from a Signature message. Also converts values to other types if specified.\n       * @function toObject\n       * @memberof market.mass.Signature\n       * @static\n       * @param {market.mass.Signature} message Signature\n       * @param {$protobuf.IConversionOptions} [options] Conversion options\n       * @returns {Object.<string,*>} Plain object\n       */\n      Signature.toObject = function toObject(message, options) {\n        if (!options) {\n          options = {};\n        }\n        var object = {};\n        if (options.defaults) {\n          if (options.bytes === String) {\n            object.raw = \"\";\n          } else {\n            object.raw = [];\n            if (options.bytes !== Array) {\n              object.raw = $util.newBuffer(object.raw);\n            }\n          }\n        }\n        if (message.raw != null && message.hasOwnProperty(\"raw\")) {\n          object.raw = options.bytes === String\n            ? $util.base64.encode(message.raw, 0, message.raw.length)\n            : options.bytes === Array\n            ? Array.prototype.slice.call(message.raw)\n            : message.raw;\n        }\n        return object;\n      };\n\n      /**\n       * Converts this Signature to JSON.\n       * @function toJSON\n       * @memberof market.mass.Signature\n       * @instance\n       * @returns {Object.<string,*>} JSON object\n       */\n      Signature.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n      };\n\n      /**\n       * Gets the default type url for Signature\n       * @function getTypeUrl\n       * @memberof market.mass.Signature\n       * @static\n       * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n       * @returns {string} The default type url\n       */\n      Signature.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n        if (typeUrlPrefix === undefined) {\n          typeUrlPrefix = \"type.googleapis.com\";\n        }\n        return typeUrlPrefix + \"/market.mass.Signature\";\n      };\n\n      return Signature;\n    })();\n\n    mass.PublicKey = (function () {\n      /**\n       * Properties of a PublicKey.\n       * @memberof market.mass\n       * @interface IPublicKey\n       * @property {Uint8Array|null} [raw] PublicKey raw\n       */\n\n      /**\n       * Constructs a new PublicKey.\n       * @memberof market.mass\n       * @classdesc Represents a PublicKey.\n       * @implements IPublicKey\n       * @constructor\n       * @param {market.mass.IPublicKey=} [properties] Properties to set\n       */\n      function PublicKey(properties) {\n        if (properties) {\n          for (\n            var keys = Object.keys(properties), i = 0;\n            i < keys.length;\n            ++i\n          ) {\n            if (properties[keys[i]] != null) {\n              this[keys[i]] = properties[keys[i]];\n            }\n          }\n        }\n      }\n\n      /**\n       * PublicKey raw.\n       * @member {Uint8Array} raw\n       * @memberof market.mass.PublicKey\n       * @instance\n       */\n      PublicKey.prototype.raw = $util.newBuffer([]);\n\n      /**\n       * Creates a new PublicKey instance using the specified properties.\n       * @function create\n       * @memberof market.mass.PublicKey\n       * @static\n       * @param {market.mass.IPublicKey=} [properties] Properties to set\n       * @returns {market.mass.PublicKey} PublicKey instance\n       */\n      PublicKey.create = function create(properties) {\n        return new PublicKey(properties);\n      };\n\n      /**\n       * Encodes the specified PublicKey message. Does not implicitly {@link market.mass.PublicKey.verify|verify} messages.\n       * @function encode\n       * @memberof market.mass.PublicKey\n       * @static\n       * @param {market.mass.IPublicKey} message PublicKey message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      PublicKey.encode = function encode(message, writer) {\n        if (!writer) {\n          writer = $Writer.create();\n        }\n        if (message.raw != null && Object.hasOwnProperty.call(message, \"raw\")) {\n          writer.uint32(/* id 1, wireType 2 =*/ 10).bytes(message.raw);\n        }\n        return writer;\n      };\n\n      /**\n       * Encodes the specified PublicKey message, length delimited. Does not implicitly {@link market.mass.PublicKey.verify|verify} messages.\n       * @function encodeDelimited\n       * @memberof market.mass.PublicKey\n       * @static\n       * @param {market.mass.IPublicKey} message PublicKey message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      PublicKey.encodeDelimited = function encodeDelimited(message, writer) {\n        return this.encode(message, writer).ldelim();\n      };\n\n      /**\n       * Decodes a PublicKey message from the specified reader or buffer.\n       * @function decode\n       * @memberof market.mass.PublicKey\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @param {number} [length] Message length if known beforehand\n       * @returns {market.mass.PublicKey} PublicKey\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      PublicKey.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader)) {\n          reader = $Reader.create(reader);\n        }\n        var end = length === undefined ? reader.len : reader.pos + length,\n          message = new $root.market.mass.PublicKey();\n        while (reader.pos < end) {\n          var tag = reader.uint32();\n          switch (tag >>> 3) {\n            case 1: {\n              message.raw = reader.bytes();\n              break;\n            }\n            default:\n              reader.skipType(tag & 7);\n              break;\n          }\n        }\n        return message;\n      };\n\n      /**\n       * Decodes a PublicKey message from the specified reader or buffer, length delimited.\n       * @function decodeDelimited\n       * @memberof market.mass.PublicKey\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @returns {market.mass.PublicKey} PublicKey\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      PublicKey.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader)) {\n          reader = new $Reader(reader);\n        }\n        return this.decode(reader, reader.uint32());\n      };\n\n      /**\n       * Verifies a PublicKey message.\n       * @function verify\n       * @memberof market.mass.PublicKey\n       * @static\n       * @param {Object.<string,*>} message Plain object to verify\n       * @returns {string|null} `null` if valid, otherwise the reason why it is not\n       */\n      PublicKey.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null) {\n          return \"object expected\";\n        }\n        if (message.raw != null && message.hasOwnProperty(\"raw\")) {\n          if (\n            !(message.raw && typeof message.raw.length === \"number\" ||\n              $util.isString(message.raw))\n          ) {\n            return \"raw: buffer expected\";\n          }\n        }\n        return null;\n      };\n\n      /**\n       * Creates a PublicKey message from a plain object. Also converts values to their respective internal types.\n       * @function fromObject\n       * @memberof market.mass.PublicKey\n       * @static\n       * @param {Object.<string,*>} object Plain object\n       * @returns {market.mass.PublicKey} PublicKey\n       */\n      PublicKey.fromObject = function fromObject(object) {\n        if (object instanceof $root.market.mass.PublicKey) {\n          return object;\n        }\n        var message = new $root.market.mass.PublicKey();\n        if (object.raw != null) {\n          if (typeof object.raw === \"string\") {\n            $util.base64.decode(\n              object.raw,\n              message.raw = $util.newBuffer($util.base64.length(object.raw)),\n              0,\n            );\n          } else if (object.raw.length >= 0) {\n            message.raw = object.raw;\n          }\n        }\n        return message;\n      };\n\n      /**\n       * Creates a plain object from a PublicKey message. Also converts values to other types if specified.\n       * @function toObject\n       * @memberof market.mass.PublicKey\n       * @static\n       * @param {market.mass.PublicKey} message PublicKey\n       * @param {$protobuf.IConversionOptions} [options] Conversion options\n       * @returns {Object.<string,*>} Plain object\n       */\n      PublicKey.toObject = function toObject(message, options) {\n        if (!options) {\n          options = {};\n        }\n        var object = {};\n        if (options.defaults) {\n          if (options.bytes === String) {\n            object.raw = \"\";\n          } else {\n            object.raw = [];\n            if (options.bytes !== Array) {\n              object.raw = $util.newBuffer(object.raw);\n            }\n          }\n        }\n        if (message.raw != null && message.hasOwnProperty(\"raw\")) {\n          object.raw = options.bytes === String\n            ? $util.base64.encode(message.raw, 0, message.raw.length)\n            : options.bytes === Array\n            ? Array.prototype.slice.call(message.raw)\n            : message.raw;\n        }\n        return object;\n      };\n\n      /**\n       * Converts this PublicKey to JSON.\n       * @function toJSON\n       * @memberof market.mass.PublicKey\n       * @instance\n       * @returns {Object.<string,*>} JSON object\n       */\n      PublicKey.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n      };\n\n      /**\n       * Gets the default type url for PublicKey\n       * @function getTypeUrl\n       * @memberof market.mass.PublicKey\n       * @static\n       * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n       * @returns {string} The default type url\n       */\n      PublicKey.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n        if (typeUrlPrefix === undefined) {\n          typeUrlPrefix = \"type.googleapis.com\";\n        }\n        return typeUrlPrefix + \"/market.mass.PublicKey\";\n      };\n\n      return PublicKey;\n    })();\n\n    mass.Hash = (function () {\n      /**\n       * Properties of a Hash.\n       * @memberof market.mass\n       * @interface IHash\n       * @property {Uint8Array|null} [raw] Hash raw\n       */\n\n      /**\n       * Constructs a new Hash.\n       * @memberof market.mass\n       * @classdesc Represents a Hash.\n       * @implements IHash\n       * @constructor\n       * @param {market.mass.IHash=} [properties] Properties to set\n       */\n      function Hash(properties) {\n        if (properties) {\n          for (\n            var keys = Object.keys(properties), i = 0;\n            i < keys.length;\n            ++i\n          ) {\n            if (properties[keys[i]] != null) {\n              this[keys[i]] = properties[keys[i]];\n            }\n          }\n        }\n      }\n\n      /**\n       * Hash raw.\n       * @member {Uint8Array} raw\n       * @memberof market.mass.Hash\n       * @instance\n       */\n      Hash.prototype.raw = $util.newBuffer([]);\n\n      /**\n       * Creates a new Hash instance using the specified properties.\n       * @function create\n       * @memberof market.mass.Hash\n       * @static\n       * @param {market.mass.IHash=} [properties] Properties to set\n       * @returns {market.mass.Hash} Hash instance\n       */\n      Hash.create = function create(properties) {\n        return new Hash(properties);\n      };\n\n      /**\n       * Encodes the specified Hash message. Does not implicitly {@link market.mass.Hash.verify|verify} messages.\n       * @function encode\n       * @memberof market.mass.Hash\n       * @static\n       * @param {market.mass.IHash} message Hash message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      Hash.encode = function encode(message, writer) {\n        if (!writer) {\n          writer = $Writer.create();\n        }\n        if (message.raw != null && Object.hasOwnProperty.call(message, \"raw\")) {\n          writer.uint32(/* id 1, wireType 2 =*/ 10).bytes(message.raw);\n        }\n        return writer;\n      };\n\n      /**\n       * Encodes the specified Hash message, length delimited. Does not implicitly {@link market.mass.Hash.verify|verify} messages.\n       * @function encodeDelimited\n       * @memberof market.mass.Hash\n       * @static\n       * @param {market.mass.IHash} message Hash message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      Hash.encodeDelimited = function encodeDelimited(message, writer) {\n        return this.encode(message, writer).ldelim();\n      };\n\n      /**\n       * Decodes a Hash message from the specified reader or buffer.\n       * @function decode\n       * @memberof market.mass.Hash\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @param {number} [length] Message length if known beforehand\n       * @returns {market.mass.Hash} Hash\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      Hash.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader)) {\n          reader = $Reader.create(reader);\n        }\n        var end = length === undefined ? reader.len : reader.pos + length,\n          message = new $root.market.mass.Hash();\n        while (reader.pos < end) {\n          var tag = reader.uint32();\n          switch (tag >>> 3) {\n            case 1: {\n              message.raw = reader.bytes();\n              break;\n            }\n            default:\n              reader.skipType(tag & 7);\n              break;\n          }\n        }\n        return message;\n      };\n\n      /**\n       * Decodes a Hash message from the specified reader or buffer, length delimited.\n       * @function decodeDelimited\n       * @memberof market.mass.Hash\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @returns {market.mass.Hash} Hash\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      Hash.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader)) {\n          reader = new $Reader(reader);\n        }\n        return this.decode(reader, reader.uint32());\n      };\n\n      /**\n       * Verifies a Hash message.\n       * @function verify\n       * @memberof market.mass.Hash\n       * @static\n       * @param {Object.<string,*>} message Plain object to verify\n       * @returns {string|null} `null` if valid, otherwise the reason why it is not\n       */\n      Hash.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null) {\n          return \"object expected\";\n        }\n        if (message.raw != null && message.hasOwnProperty(\"raw\")) {\n          if (\n            !(message.raw && typeof message.raw.length === \"number\" ||\n              $util.isString(message.raw))\n          ) {\n            return \"raw: buffer expected\";\n          }\n        }\n        return null;\n      };\n\n      /**\n       * Creates a Hash message from a plain object. Also converts values to their respective internal types.\n       * @function fromObject\n       * @memberof market.mass.Hash\n       * @static\n       * @param {Object.<string,*>} object Plain object\n       * @returns {market.mass.Hash} Hash\n       */\n      Hash.fromObject = function fromObject(object) {\n        if (object instanceof $root.market.mass.Hash) {\n          return object;\n        }\n        var message = new $root.market.mass.Hash();\n        if (object.raw != null) {\n          if (typeof object.raw === \"string\") {\n            $util.base64.decode(\n              object.raw,\n              message.raw = $util.newBuffer($util.base64.length(object.raw)),\n              0,\n            );\n          } else if (object.raw.length >= 0) {\n            message.raw = object.raw;\n          }\n        }\n        return message;\n      };\n\n      /**\n       * Creates a plain object from a Hash message. Also converts values to other types if specified.\n       * @function toObject\n       * @memberof market.mass.Hash\n       * @static\n       * @param {market.mass.Hash} message Hash\n       * @param {$protobuf.IConversionOptions} [options] Conversion options\n       * @returns {Object.<string,*>} Plain object\n       */\n      Hash.toObject = function toObject(message, options) {\n        if (!options) {\n          options = {};\n        }\n        var object = {};\n        if (options.defaults) {\n          if (options.bytes === String) {\n            object.raw = \"\";\n          } else {\n            object.raw = [];\n            if (options.bytes !== Array) {\n              object.raw = $util.newBuffer(object.raw);\n            }\n          }\n        }\n        if (message.raw != null && message.hasOwnProperty(\"raw\")) {\n          object.raw = options.bytes === String\n            ? $util.base64.encode(message.raw, 0, message.raw.length)\n            : options.bytes === Array\n            ? Array.prototype.slice.call(message.raw)\n            : message.raw;\n        }\n        return object;\n      };\n\n      /**\n       * Converts this Hash to JSON.\n       * @function toJSON\n       * @memberof market.mass.Hash\n       * @instance\n       * @returns {Object.<string,*>} JSON object\n       */\n      Hash.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n      };\n\n      /**\n       * Gets the default type url for Hash\n       * @function getTypeUrl\n       * @memberof market.mass.Hash\n       * @static\n       * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n       * @returns {string} The default type url\n       */\n      Hash.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n        if (typeUrlPrefix === undefined) {\n          typeUrlPrefix = \"type.googleapis.com\";\n        }\n        return typeUrlPrefix + \"/market.mass.Hash\";\n      };\n\n      return Hash;\n    })();\n\n    mass.EthereumAddress = (function () {\n      /**\n       * Properties of an EthereumAddress.\n       * @memberof market.mass\n       * @interface IEthereumAddress\n       * @property {Uint8Array|null} [raw] EthereumAddress raw\n       */\n\n      /**\n       * Constructs a new EthereumAddress.\n       * @memberof market.mass\n       * @classdesc Represents an EthereumAddress.\n       * @implements IEthereumAddress\n       * @constructor\n       * @param {market.mass.IEthereumAddress=} [properties] Properties to set\n       */\n      function EthereumAddress(properties) {\n        if (properties) {\n          for (\n            var keys = Object.keys(properties), i = 0;\n            i < keys.length;\n            ++i\n          ) {\n            if (properties[keys[i]] != null) {\n              this[keys[i]] = properties[keys[i]];\n            }\n          }\n        }\n      }\n\n      /**\n       * EthereumAddress raw.\n       * @member {Uint8Array} raw\n       * @memberof market.mass.EthereumAddress\n       * @instance\n       */\n      EthereumAddress.prototype.raw = $util.newBuffer([]);\n\n      /**\n       * Creates a new EthereumAddress instance using the specified properties.\n       * @function create\n       * @memberof market.mass.EthereumAddress\n       * @static\n       * @param {market.mass.IEthereumAddress=} [properties] Properties to set\n       * @returns {market.mass.EthereumAddress} EthereumAddress instance\n       */\n      EthereumAddress.create = function create(properties) {\n        return new EthereumAddress(properties);\n      };\n\n      /**\n       * Encodes the specified EthereumAddress message. Does not implicitly {@link market.mass.EthereumAddress.verify|verify} messages.\n       * @function encode\n       * @memberof market.mass.EthereumAddress\n       * @static\n       * @param {market.mass.IEthereumAddress} message EthereumAddress message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      EthereumAddress.encode = function encode(message, writer) {\n        if (!writer) {\n          writer = $Writer.create();\n        }\n        if (message.raw != null && Object.hasOwnProperty.call(message, \"raw\")) {\n          writer.uint32(/* id 1, wireType 2 =*/ 10).bytes(message.raw);\n        }\n        return writer;\n      };\n\n      /**\n       * Encodes the specified EthereumAddress message, length delimited. Does not implicitly {@link market.mass.EthereumAddress.verify|verify} messages.\n       * @function encodeDelimited\n       * @memberof market.mass.EthereumAddress\n       * @static\n       * @param {market.mass.IEthereumAddress} message EthereumAddress message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      EthereumAddress.encodeDelimited = function encodeDelimited(\n        message,\n        writer,\n      ) {\n        return this.encode(message, writer).ldelim();\n      };\n\n      /**\n       * Decodes an EthereumAddress message from the specified reader or buffer.\n       * @function decode\n       * @memberof market.mass.EthereumAddress\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @param {number} [length] Message length if known beforehand\n       * @returns {market.mass.EthereumAddress} EthereumAddress\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      EthereumAddress.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader)) {\n          reader = $Reader.create(reader);\n        }\n        var end = length === undefined ? reader.len : reader.pos + length,\n          message = new $root.market.mass.EthereumAddress();\n        while (reader.pos < end) {\n          var tag = reader.uint32();\n          switch (tag >>> 3) {\n            case 1: {\n              message.raw = reader.bytes();\n              break;\n            }\n            default:\n              reader.skipType(tag & 7);\n              break;\n          }\n        }\n        return message;\n      };\n\n      /**\n       * Decodes an EthereumAddress message from the specified reader or buffer, length delimited.\n       * @function decodeDelimited\n       * @memberof market.mass.EthereumAddress\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @returns {market.mass.EthereumAddress} EthereumAddress\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      EthereumAddress.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader)) {\n          reader = new $Reader(reader);\n        }\n        return this.decode(reader, reader.uint32());\n      };\n\n      /**\n       * Verifies an EthereumAddress message.\n       * @function verify\n       * @memberof market.mass.EthereumAddress\n       * @static\n       * @param {Object.<string,*>} message Plain object to verify\n       * @returns {string|null} `null` if valid, otherwise the reason why it is not\n       */\n      EthereumAddress.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null) {\n          return \"object expected\";\n        }\n        if (message.raw != null && message.hasOwnProperty(\"raw\")) {\n          if (\n            !(message.raw && typeof message.raw.length === \"number\" ||\n              $util.isString(message.raw))\n          ) {\n            return \"raw: buffer expected\";\n          }\n        }\n        return null;\n      };\n\n      /**\n       * Creates an EthereumAddress message from a plain object. Also converts values to their respective internal types.\n       * @function fromObject\n       * @memberof market.mass.EthereumAddress\n       * @static\n       * @param {Object.<string,*>} object Plain object\n       * @returns {market.mass.EthereumAddress} EthereumAddress\n       */\n      EthereumAddress.fromObject = function fromObject(object) {\n        if (object instanceof $root.market.mass.EthereumAddress) {\n          return object;\n        }\n        var message = new $root.market.mass.EthereumAddress();\n        if (object.raw != null) {\n          if (typeof object.raw === \"string\") {\n            $util.base64.decode(\n              object.raw,\n              message.raw = $util.newBuffer($util.base64.length(object.raw)),\n              0,\n            );\n          } else if (object.raw.length >= 0) {\n            message.raw = object.raw;\n          }\n        }\n        return message;\n      };\n\n      /**\n       * Creates a plain object from an EthereumAddress message. Also converts values to other types if specified.\n       * @function toObject\n       * @memberof market.mass.EthereumAddress\n       * @static\n       * @param {market.mass.EthereumAddress} message EthereumAddress\n       * @param {$protobuf.IConversionOptions} [options] Conversion options\n       * @returns {Object.<string,*>} Plain object\n       */\n      EthereumAddress.toObject = function toObject(message, options) {\n        if (!options) {\n          options = {};\n        }\n        var object = {};\n        if (options.defaults) {\n          if (options.bytes === String) {\n            object.raw = \"\";\n          } else {\n            object.raw = [];\n            if (options.bytes !== Array) {\n              object.raw = $util.newBuffer(object.raw);\n            }\n          }\n        }\n        if (message.raw != null && message.hasOwnProperty(\"raw\")) {\n          object.raw = options.bytes === String\n            ? $util.base64.encode(message.raw, 0, message.raw.length)\n            : options.bytes === Array\n            ? Array.prototype.slice.call(message.raw)\n            : message.raw;\n        }\n        return object;\n      };\n\n      /**\n       * Converts this EthereumAddress to JSON.\n       * @function toJSON\n       * @memberof market.mass.EthereumAddress\n       * @instance\n       * @returns {Object.<string,*>} JSON object\n       */\n      EthereumAddress.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n      };\n\n      /**\n       * Gets the default type url for EthereumAddress\n       * @function getTypeUrl\n       * @memberof market.mass.EthereumAddress\n       * @static\n       * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n       * @returns {string} The default type url\n       */\n      EthereumAddress.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n        if (typeUrlPrefix === undefined) {\n          typeUrlPrefix = \"type.googleapis.com\";\n        }\n        return typeUrlPrefix + \"/market.mass.EthereumAddress\";\n      };\n\n      return EthereumAddress;\n    })();\n\n    mass.IPFSAddress = (function () {\n      /**\n       * Properties of a IPFSAddress.\n       * @memberof market.mass\n       * @interface IIPFSAddress\n       * @property {string|null} [cid] IPFSAddress cid\n       */\n\n      /**\n       * Constructs a new IPFSAddress.\n       * @memberof market.mass\n       * @classdesc Represents a IPFSAddress.\n       * @implements IIPFSAddress\n       * @constructor\n       * @param {market.mass.IIPFSAddress=} [properties] Properties to set\n       */\n      function IPFSAddress(properties) {\n        if (properties) {\n          for (\n            var keys = Object.keys(properties), i = 0;\n            i < keys.length;\n            ++i\n          ) {\n            if (properties[keys[i]] != null) {\n              this[keys[i]] = properties[keys[i]];\n            }\n          }\n        }\n      }\n\n      /**\n       * IPFSAddress cid.\n       * @member {string} cid\n       * @memberof market.mass.IPFSAddress\n       * @instance\n       */\n      IPFSAddress.prototype.cid = \"\";\n\n      /**\n       * Creates a new IPFSAddress instance using the specified properties.\n       * @function create\n       * @memberof market.mass.IPFSAddress\n       * @static\n       * @param {market.mass.IIPFSAddress=} [properties] Properties to set\n       * @returns {market.mass.IPFSAddress} IPFSAddress instance\n       */\n      IPFSAddress.create = function create(properties) {\n        return new IPFSAddress(properties);\n      };\n\n      /**\n       * Encodes the specified IPFSAddress message. Does not implicitly {@link market.mass.IPFSAddress.verify|verify} messages.\n       * @function encode\n       * @memberof market.mass.IPFSAddress\n       * @static\n       * @param {market.mass.IIPFSAddress} message IPFSAddress message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      IPFSAddress.encode = function encode(message, writer) {\n        if (!writer) {\n          writer = $Writer.create();\n        }\n        if (message.cid != null && Object.hasOwnProperty.call(message, \"cid\")) {\n          writer.uint32(/* id 1, wireType 2 =*/ 10).string(message.cid);\n        }\n        return writer;\n      };\n\n      /**\n       * Encodes the specified IPFSAddress message, length delimited. Does not implicitly {@link market.mass.IPFSAddress.verify|verify} messages.\n       * @function encodeDelimited\n       * @memberof market.mass.IPFSAddress\n       * @static\n       * @param {market.mass.IIPFSAddress} message IPFSAddress message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      IPFSAddress.encodeDelimited = function encodeDelimited(message, writer) {\n        return this.encode(message, writer).ldelim();\n      };\n\n      /**\n       * Decodes a IPFSAddress message from the specified reader or buffer.\n       * @function decode\n       * @memberof market.mass.IPFSAddress\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @param {number} [length] Message length if known beforehand\n       * @returns {market.mass.IPFSAddress} IPFSAddress\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      IPFSAddress.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader)) {\n          reader = $Reader.create(reader);\n        }\n        var end = length === undefined ? reader.len : reader.pos + length,\n          message = new $root.market.mass.IPFSAddress();\n        while (reader.pos < end) {\n          var tag = reader.uint32();\n          switch (tag >>> 3) {\n            case 1: {\n              message.cid = reader.string();\n              break;\n            }\n            default:\n              reader.skipType(tag & 7);\n              break;\n          }\n        }\n        return message;\n      };\n\n      /**\n       * Decodes a IPFSAddress message from the specified reader or buffer, length delimited.\n       * @function decodeDelimited\n       * @memberof market.mass.IPFSAddress\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @returns {market.mass.IPFSAddress} IPFSAddress\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      IPFSAddress.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader)) {\n          reader = new $Reader(reader);\n        }\n        return this.decode(reader, reader.uint32());\n      };\n\n      /**\n       * Verifies a IPFSAddress message.\n       * @function verify\n       * @memberof market.mass.IPFSAddress\n       * @static\n       * @param {Object.<string,*>} message Plain object to verify\n       * @returns {string|null} `null` if valid, otherwise the reason why it is not\n       */\n      IPFSAddress.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null) {\n          return \"object expected\";\n        }\n        if (message.cid != null && message.hasOwnProperty(\"cid\")) {\n          if (!$util.isString(message.cid)) {\n            return \"cid: string expected\";\n          }\n        }\n        return null;\n      };\n\n      /**\n       * Creates a IPFSAddress message from a plain object. Also converts values to their respective internal types.\n       * @function fromObject\n       * @memberof market.mass.IPFSAddress\n       * @static\n       * @param {Object.<string,*>} object Plain object\n       * @returns {market.mass.IPFSAddress} IPFSAddress\n       */\n      IPFSAddress.fromObject = function fromObject(object) {\n        if (object instanceof $root.market.mass.IPFSAddress) {\n          return object;\n        }\n        var message = new $root.market.mass.IPFSAddress();\n        if (object.cid != null) {\n          message.cid = String(object.cid);\n        }\n        return message;\n      };\n\n      /**\n       * Creates a plain object from a IPFSAddress message. Also converts values to other types if specified.\n       * @function toObject\n       * @memberof market.mass.IPFSAddress\n       * @static\n       * @param {market.mass.IPFSAddress} message IPFSAddress\n       * @param {$protobuf.IConversionOptions} [options] Conversion options\n       * @returns {Object.<string,*>} Plain object\n       */\n      IPFSAddress.toObject = function toObject(message, options) {\n        if (!options) {\n          options = {};\n        }\n        var object = {};\n        if (options.defaults) {\n          object.cid = \"\";\n        }\n        if (message.cid != null && message.hasOwnProperty(\"cid\")) {\n          object.cid = message.cid;\n        }\n        return object;\n      };\n\n      /**\n       * Converts this IPFSAddress to JSON.\n       * @function toJSON\n       * @memberof market.mass.IPFSAddress\n       * @instance\n       * @returns {Object.<string,*>} JSON object\n       */\n      IPFSAddress.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n      };\n\n      /**\n       * Gets the default type url for IPFSAddress\n       * @function getTypeUrl\n       * @memberof market.mass.IPFSAddress\n       * @static\n       * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n       * @returns {string} The default type url\n       */\n      IPFSAddress.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n        if (typeUrlPrefix === undefined) {\n          typeUrlPrefix = \"type.googleapis.com\";\n        }\n        return typeUrlPrefix + \"/market.mass.IPFSAddress\";\n      };\n\n      return IPFSAddress;\n    })();\n\n    mass.Uint256 = (function () {\n      /**\n       * Properties of an Uint256.\n       * @memberof market.mass\n       * @interface IUint256\n       * @property {Uint8Array|null} [raw] Uint256 raw\n       */\n\n      /**\n       * Constructs a new Uint256.\n       * @memberof market.mass\n       * @classdesc Represents an Uint256.\n       * @implements IUint256\n       * @constructor\n       * @param {market.mass.IUint256=} [properties] Properties to set\n       */\n      function Uint256(properties) {\n        if (properties) {\n          for (\n            var keys = Object.keys(properties), i = 0;\n            i < keys.length;\n            ++i\n          ) {\n            if (properties[keys[i]] != null) {\n              this[keys[i]] = properties[keys[i]];\n            }\n          }\n        }\n      }\n\n      /**\n       * Uint256 raw.\n       * @member {Uint8Array} raw\n       * @memberof market.mass.Uint256\n       * @instance\n       */\n      Uint256.prototype.raw = $util.newBuffer([]);\n\n      /**\n       * Creates a new Uint256 instance using the specified properties.\n       * @function create\n       * @memberof market.mass.Uint256\n       * @static\n       * @param {market.mass.IUint256=} [properties] Properties to set\n       * @returns {market.mass.Uint256} Uint256 instance\n       */\n      Uint256.create = function create(properties) {\n        return new Uint256(properties);\n      };\n\n      /**\n       * Encodes the specified Uint256 message. Does not implicitly {@link market.mass.Uint256.verify|verify} messages.\n       * @function encode\n       * @memberof market.mass.Uint256\n       * @static\n       * @param {market.mass.IUint256} message Uint256 message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      Uint256.encode = function encode(message, writer) {\n        if (!writer) {\n          writer = $Writer.create();\n        }\n        if (message.raw != null && Object.hasOwnProperty.call(message, \"raw\")) {\n          writer.uint32(/* id 1, wireType 2 =*/ 10).bytes(message.raw);\n        }\n        return writer;\n      };\n\n      /**\n       * Encodes the specified Uint256 message, length delimited. Does not implicitly {@link market.mass.Uint256.verify|verify} messages.\n       * @function encodeDelimited\n       * @memberof market.mass.Uint256\n       * @static\n       * @param {market.mass.IUint256} message Uint256 message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      Uint256.encodeDelimited = function encodeDelimited(message, writer) {\n        return this.encode(message, writer).ldelim();\n      };\n\n      /**\n       * Decodes an Uint256 message from the specified reader or buffer.\n       * @function decode\n       * @memberof market.mass.Uint256\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @param {number} [length] Message length if known beforehand\n       * @returns {market.mass.Uint256} Uint256\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      Uint256.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader)) {\n          reader = $Reader.create(reader);\n        }\n        var end = length === undefined ? reader.len : reader.pos + length,\n          message = new $root.market.mass.Uint256();\n        while (reader.pos < end) {\n          var tag = reader.uint32();\n          switch (tag >>> 3) {\n            case 1: {\n              message.raw = reader.bytes();\n              break;\n            }\n            default:\n              reader.skipType(tag & 7);\n              break;\n          }\n        }\n        return message;\n      };\n\n      /**\n       * Decodes an Uint256 message from the specified reader or buffer, length delimited.\n       * @function decodeDelimited\n       * @memberof market.mass.Uint256\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @returns {market.mass.Uint256} Uint256\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      Uint256.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader)) {\n          reader = new $Reader(reader);\n        }\n        return this.decode(reader, reader.uint32());\n      };\n\n      /**\n       * Verifies an Uint256 message.\n       * @function verify\n       * @memberof market.mass.Uint256\n       * @static\n       * @param {Object.<string,*>} message Plain object to verify\n       * @returns {string|null} `null` if valid, otherwise the reason why it is not\n       */\n      Uint256.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null) {\n          return \"object expected\";\n        }\n        if (message.raw != null && message.hasOwnProperty(\"raw\")) {\n          if (\n            !(message.raw && typeof message.raw.length === \"number\" ||\n              $util.isString(message.raw))\n          ) {\n            return \"raw: buffer expected\";\n          }\n        }\n        return null;\n      };\n\n      /**\n       * Creates an Uint256 message from a plain object. Also converts values to their respective internal types.\n       * @function fromObject\n       * @memberof market.mass.Uint256\n       * @static\n       * @param {Object.<string,*>} object Plain object\n       * @returns {market.mass.Uint256} Uint256\n       */\n      Uint256.fromObject = function fromObject(object) {\n        if (object instanceof $root.market.mass.Uint256) {\n          return object;\n        }\n        var message = new $root.market.mass.Uint256();\n        if (object.raw != null) {\n          if (typeof object.raw === \"string\") {\n            $util.base64.decode(\n              object.raw,\n              message.raw = $util.newBuffer($util.base64.length(object.raw)),\n              0,\n            );\n          } else if (object.raw.length >= 0) {\n            message.raw = object.raw;\n          }\n        }\n        return message;\n      };\n\n      /**\n       * Creates a plain object from an Uint256 message. Also converts values to other types if specified.\n       * @function toObject\n       * @memberof market.mass.Uint256\n       * @static\n       * @param {market.mass.Uint256} message Uint256\n       * @param {$protobuf.IConversionOptions} [options] Conversion options\n       * @returns {Object.<string,*>} Plain object\n       */\n      Uint256.toObject = function toObject(message, options) {\n        if (!options) {\n          options = {};\n        }\n        var object = {};\n        if (options.defaults) {\n          if (options.bytes === String) {\n            object.raw = \"\";\n          } else {\n            object.raw = [];\n            if (options.bytes !== Array) {\n              object.raw = $util.newBuffer(object.raw);\n            }\n          }\n        }\n        if (message.raw != null && message.hasOwnProperty(\"raw\")) {\n          object.raw = options.bytes === String\n            ? $util.base64.encode(message.raw, 0, message.raw.length)\n            : options.bytes === Array\n            ? Array.prototype.slice.call(message.raw)\n            : message.raw;\n        }\n        return object;\n      };\n\n      /**\n       * Converts this Uint256 to JSON.\n       * @function toJSON\n       * @memberof market.mass.Uint256\n       * @instance\n       * @returns {Object.<string,*>} JSON object\n       */\n      Uint256.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n      };\n\n      /**\n       * Gets the default type url for Uint256\n       * @function getTypeUrl\n       * @memberof market.mass.Uint256\n       * @static\n       * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n       * @returns {string} The default type url\n       */\n      Uint256.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n        if (typeUrlPrefix === undefined) {\n          typeUrlPrefix = \"type.googleapis.com\";\n        }\n        return typeUrlPrefix + \"/market.mass.Uint256\";\n      };\n\n      return Uint256;\n    })();\n\n    mass.ShopCurrency = (function () {\n      /**\n       * Properties of a ShopCurrency.\n       * @memberof market.mass\n       * @interface IShopCurrency\n       * @property {number|Long|null} [chainId] ShopCurrency chainId\n       * @property {market.mass.IEthereumAddress|null} [address] ShopCurrency address\n       */\n\n      /**\n       * Constructs a new ShopCurrency.\n       * @memberof market.mass\n       * @classdesc Represents a ShopCurrency.\n       * @implements IShopCurrency\n       * @constructor\n       * @param {market.mass.IShopCurrency=} [properties] Properties to set\n       */\n      function ShopCurrency(properties) {\n        if (properties) {\n          for (\n            var keys = Object.keys(properties), i = 0;\n            i < keys.length;\n            ++i\n          ) {\n            if (properties[keys[i]] != null) {\n              this[keys[i]] = properties[keys[i]];\n            }\n          }\n        }\n      }\n\n      /**\n       * ShopCurrency chainId.\n       * @member {number|Long} chainId\n       * @memberof market.mass.ShopCurrency\n       * @instance\n       */\n      ShopCurrency.prototype.chainId = $util.Long\n        ? $util.Long.fromBits(0, 0, true)\n        : 0;\n\n      /**\n       * ShopCurrency address.\n       * @member {market.mass.IEthereumAddress|null|undefined} address\n       * @memberof market.mass.ShopCurrency\n       * @instance\n       */\n      ShopCurrency.prototype.address = null;\n\n      /**\n       * Creates a new ShopCurrency instance using the specified properties.\n       * @function create\n       * @memberof market.mass.ShopCurrency\n       * @static\n       * @param {market.mass.IShopCurrency=} [properties] Properties to set\n       * @returns {market.mass.ShopCurrency} ShopCurrency instance\n       */\n      ShopCurrency.create = function create(properties) {\n        return new ShopCurrency(properties);\n      };\n\n      /**\n       * Encodes the specified ShopCurrency message. Does not implicitly {@link market.mass.ShopCurrency.verify|verify} messages.\n       * @function encode\n       * @memberof market.mass.ShopCurrency\n       * @static\n       * @param {market.mass.IShopCurrency} message ShopCurrency message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      ShopCurrency.encode = function encode(message, writer) {\n        if (!writer) {\n          writer = $Writer.create();\n        }\n        if (\n          message.chainId != null &&\n          Object.hasOwnProperty.call(message, \"chainId\")\n        ) {\n          writer.uint32(/* id 1, wireType 0 =*/ 8).uint64(message.chainId);\n        }\n        if (\n          message.address != null &&\n          Object.hasOwnProperty.call(message, \"address\")\n        ) {\n          $root.market.mass.EthereumAddress.encode(\n            message.address,\n            writer.uint32(/* id 2, wireType 2 =*/ 18).fork(),\n          ).ldelim();\n        }\n        return writer;\n      };\n\n      /**\n       * Encodes the specified ShopCurrency message, length delimited. Does not implicitly {@link market.mass.ShopCurrency.verify|verify} messages.\n       * @function encodeDelimited\n       * @memberof market.mass.ShopCurrency\n       * @static\n       * @param {market.mass.IShopCurrency} message ShopCurrency message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      ShopCurrency.encodeDelimited = function encodeDelimited(message, writer) {\n        return this.encode(message, writer).ldelim();\n      };\n\n      /**\n       * Decodes a ShopCurrency message from the specified reader or buffer.\n       * @function decode\n       * @memberof market.mass.ShopCurrency\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @param {number} [length] Message length if known beforehand\n       * @returns {market.mass.ShopCurrency} ShopCurrency\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      ShopCurrency.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader)) {\n          reader = $Reader.create(reader);\n        }\n        var end = length === undefined ? reader.len : reader.pos + length,\n          message = new $root.market.mass.ShopCurrency();\n        while (reader.pos < end) {\n          var tag = reader.uint32();\n          switch (tag >>> 3) {\n            case 1: {\n              message.chainId = reader.uint64();\n              break;\n            }\n            case 2: {\n              message.address = $root.market.mass.EthereumAddress.decode(\n                reader,\n                reader.uint32(),\n              );\n              break;\n            }\n            default:\n              reader.skipType(tag & 7);\n              break;\n          }\n        }\n        return message;\n      };\n\n      /**\n       * Decodes a ShopCurrency message from the specified reader or buffer, length delimited.\n       * @function decodeDelimited\n       * @memberof market.mass.ShopCurrency\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @returns {market.mass.ShopCurrency} ShopCurrency\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      ShopCurrency.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader)) {\n          reader = new $Reader(reader);\n        }\n        return this.decode(reader, reader.uint32());\n      };\n\n      /**\n       * Verifies a ShopCurrency message.\n       * @function verify\n       * @memberof market.mass.ShopCurrency\n       * @static\n       * @param {Object.<string,*>} message Plain object to verify\n       * @returns {string|null} `null` if valid, otherwise the reason why it is not\n       */\n      ShopCurrency.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null) {\n          return \"object expected\";\n        }\n        if (message.chainId != null && message.hasOwnProperty(\"chainId\")) {\n          if (\n            !$util.isInteger(message.chainId) &&\n            !(message.chainId && $util.isInteger(message.chainId.low) &&\n              $util.isInteger(message.chainId.high))\n          ) {\n            return \"chainId: integer|Long expected\";\n          }\n        }\n        if (message.address != null && message.hasOwnProperty(\"address\")) {\n          var error = $root.market.mass.EthereumAddress.verify(message.address);\n          if (error) {\n            return \"address.\" + error;\n          }\n        }\n        return null;\n      };\n\n      /**\n       * Creates a ShopCurrency message from a plain object. Also converts values to their respective internal types.\n       * @function fromObject\n       * @memberof market.mass.ShopCurrency\n       * @static\n       * @param {Object.<string,*>} object Plain object\n       * @returns {market.mass.ShopCurrency} ShopCurrency\n       */\n      ShopCurrency.fromObject = function fromObject(object) {\n        if (object instanceof $root.market.mass.ShopCurrency) {\n          return object;\n        }\n        var message = new $root.market.mass.ShopCurrency();\n        if (object.chainId != null) {\n          if ($util.Long) {\n            (message.chainId = $util.Long.fromValue(object.chainId)).unsigned =\n              true;\n          } else if (typeof object.chainId === \"string\") {\n            message.chainId = parseInt(object.chainId, 10);\n          } else if (typeof object.chainId === \"number\") {\n            message.chainId = object.chainId;\n          } else if (typeof object.chainId === \"object\") {\n            message.chainId = new $util.LongBits(\n              object.chainId.low >>> 0,\n              object.chainId.high >>> 0,\n            ).toNumber(true);\n          }\n        }\n        if (object.address != null) {\n          if (typeof object.address !== \"object\") {\n            throw TypeError(\n              \".market.mass.ShopCurrency.address: object expected\",\n            );\n          }\n          message.address = $root.market.mass.EthereumAddress.fromObject(\n            object.address,\n          );\n        }\n        return message;\n      };\n\n      /**\n       * Creates a plain object from a ShopCurrency message. Also converts values to other types if specified.\n       * @function toObject\n       * @memberof market.mass.ShopCurrency\n       * @static\n       * @param {market.mass.ShopCurrency} message ShopCurrency\n       * @param {$protobuf.IConversionOptions} [options] Conversion options\n       * @returns {Object.<string,*>} Plain object\n       */\n      ShopCurrency.toObject = function toObject(message, options) {\n        if (!options) {\n          options = {};\n        }\n        var object = {};\n        if (options.defaults) {\n          if ($util.Long) {\n            var long = new $util.Long(0, 0, true);\n            object.chainId = options.longs === String\n              ? long.toString()\n              : options.longs === Number\n              ? long.toNumber()\n              : long;\n          } else {\n            object.chainId = options.longs === String ? \"0\" : 0;\n          }\n          object.address = null;\n        }\n        if (message.chainId != null && message.hasOwnProperty(\"chainId\")) {\n          if (typeof message.chainId === \"number\") {\n            object.chainId = options.longs === String\n              ? String(message.chainId)\n              : message.chainId;\n          } else {\n            object.chainId = options.longs === String\n              ? $util.Long.prototype.toString.call(message.chainId)\n              : options.longs === Number\n              ? new $util.LongBits(\n                message.chainId.low >>> 0,\n                message.chainId.high >>> 0,\n              ).toNumber(true)\n              : message.chainId;\n          }\n        }\n        if (message.address != null && message.hasOwnProperty(\"address\")) {\n          object.address = $root.market.mass.EthereumAddress.toObject(\n            message.address,\n            options,\n          );\n        }\n        return object;\n      };\n\n      /**\n       * Converts this ShopCurrency to JSON.\n       * @function toJSON\n       * @memberof market.mass.ShopCurrency\n       * @instance\n       * @returns {Object.<string,*>} JSON object\n       */\n      ShopCurrency.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n      };\n\n      /**\n       * Gets the default type url for ShopCurrency\n       * @function getTypeUrl\n       * @memberof market.mass.ShopCurrency\n       * @static\n       * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n       * @returns {string} The default type url\n       */\n      ShopCurrency.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n        if (typeUrlPrefix === undefined) {\n          typeUrlPrefix = \"type.googleapis.com\";\n        }\n        return typeUrlPrefix + \"/market.mass.ShopCurrency\";\n      };\n\n      return ShopCurrency;\n    })();\n\n    mass.Payee = (function () {\n      /**\n       * Properties of a Payee.\n       * @memberof market.mass\n       * @interface IPayee\n       * @property {string|null} [name] Payee name\n       * @property {market.mass.IEthereumAddress|null} [address] Payee address\n       * @property {number|Long|null} [chainId] Payee chainId\n       * @property {boolean|null} [callAsContract] Payee callAsContract\n       */\n\n      /**\n       * Constructs a new Payee.\n       * @memberof market.mass\n       * @classdesc Represents a Payee.\n       * @implements IPayee\n       * @constructor\n       * @param {market.mass.IPayee=} [properties] Properties to set\n       */\n      function Payee(properties) {\n        if (properties) {\n          for (\n            var keys = Object.keys(properties), i = 0;\n            i < keys.length;\n            ++i\n          ) {\n            if (properties[keys[i]] != null) {\n              this[keys[i]] = properties[keys[i]];\n            }\n          }\n        }\n      }\n\n      /**\n       * Payee name.\n       * @member {string} name\n       * @memberof market.mass.Payee\n       * @instance\n       */\n      Payee.prototype.name = \"\";\n\n      /**\n       * Payee address.\n       * @member {market.mass.IEthereumAddress|null|undefined} address\n       * @memberof market.mass.Payee\n       * @instance\n       */\n      Payee.prototype.address = null;\n\n      /**\n       * Payee chainId.\n       * @member {number|Long} chainId\n       * @memberof market.mass.Payee\n       * @instance\n       */\n      Payee.prototype.chainId = $util.Long\n        ? $util.Long.fromBits(0, 0, true)\n        : 0;\n\n      /**\n       * Payee callAsContract.\n       * @member {boolean} callAsContract\n       * @memberof market.mass.Payee\n       * @instance\n       */\n      Payee.prototype.callAsContract = false;\n\n      /**\n       * Creates a new Payee instance using the specified properties.\n       * @function create\n       * @memberof market.mass.Payee\n       * @static\n       * @param {market.mass.IPayee=} [properties] Properties to set\n       * @returns {market.mass.Payee} Payee instance\n       */\n      Payee.create = function create(properties) {\n        return new Payee(properties);\n      };\n\n      /**\n       * Encodes the specified Payee message. Does not implicitly {@link market.mass.Payee.verify|verify} messages.\n       * @function encode\n       * @memberof market.mass.Payee\n       * @static\n       * @param {market.mass.IPayee} message Payee message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      Payee.encode = function encode(message, writer) {\n        if (!writer) {\n          writer = $Writer.create();\n        }\n        if (\n          message.name != null && Object.hasOwnProperty.call(message, \"name\")\n        ) {\n          writer.uint32(/* id 1, wireType 2 =*/ 10).string(message.name);\n        }\n        if (\n          message.address != null &&\n          Object.hasOwnProperty.call(message, \"address\")\n        ) {\n          $root.market.mass.EthereumAddress.encode(\n            message.address,\n            writer.uint32(/* id 2, wireType 2 =*/ 18).fork(),\n          ).ldelim();\n        }\n        if (\n          message.chainId != null &&\n          Object.hasOwnProperty.call(message, \"chainId\")\n        ) {\n          writer.uint32(/* id 3, wireType 0 =*/ 24).uint64(message.chainId);\n        }\n        if (\n          message.callAsContract != null &&\n          Object.hasOwnProperty.call(message, \"callAsContract\")\n        ) {\n          writer.uint32(/* id 4, wireType 0 =*/ 32).bool(\n            message.callAsContract,\n          );\n        }\n        return writer;\n      };\n\n      /**\n       * Encodes the specified Payee message, length delimited. Does not implicitly {@link market.mass.Payee.verify|verify} messages.\n       * @function encodeDelimited\n       * @memberof market.mass.Payee\n       * @static\n       * @param {market.mass.IPayee} message Payee message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      Payee.encodeDelimited = function encodeDelimited(message, writer) {\n        return this.encode(message, writer).ldelim();\n      };\n\n      /**\n       * Decodes a Payee message from the specified reader or buffer.\n       * @function decode\n       * @memberof market.mass.Payee\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @param {number} [length] Message length if known beforehand\n       * @returns {market.mass.Payee} Payee\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      Payee.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader)) {\n          reader = $Reader.create(reader);\n        }\n        var end = length === undefined ? reader.len : reader.pos + length,\n          message = new $root.market.mass.Payee();\n        while (reader.pos < end) {\n          var tag = reader.uint32();\n          switch (tag >>> 3) {\n            case 1: {\n              message.name = reader.string();\n              break;\n            }\n            case 2: {\n              message.address = $root.market.mass.EthereumAddress.decode(\n                reader,\n                reader.uint32(),\n              );\n              break;\n            }\n            case 3: {\n              message.chainId = reader.uint64();\n              break;\n            }\n            case 4: {\n              message.callAsContract = reader.bool();\n              break;\n            }\n            default:\n              reader.skipType(tag & 7);\n              break;\n          }\n        }\n        return message;\n      };\n\n      /**\n       * Decodes a Payee message from the specified reader or buffer, length delimited.\n       * @function decodeDelimited\n       * @memberof market.mass.Payee\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @returns {market.mass.Payee} Payee\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      Payee.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader)) {\n          reader = new $Reader(reader);\n        }\n        return this.decode(reader, reader.uint32());\n      };\n\n      /**\n       * Verifies a Payee message.\n       * @function verify\n       * @memberof market.mass.Payee\n       * @static\n       * @param {Object.<string,*>} message Plain object to verify\n       * @returns {string|null} `null` if valid, otherwise the reason why it is not\n       */\n      Payee.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null) {\n          return \"object expected\";\n        }\n        if (message.name != null && message.hasOwnProperty(\"name\")) {\n          if (!$util.isString(message.name)) {\n            return \"name: string expected\";\n          }\n        }\n        if (message.address != null && message.hasOwnProperty(\"address\")) {\n          var error = $root.market.mass.EthereumAddress.verify(message.address);\n          if (error) {\n            return \"address.\" + error;\n          }\n        }\n        if (message.chainId != null && message.hasOwnProperty(\"chainId\")) {\n          if (\n            !$util.isInteger(message.chainId) &&\n            !(message.chainId && $util.isInteger(message.chainId.low) &&\n              $util.isInteger(message.chainId.high))\n          ) {\n            return \"chainId: integer|Long expected\";\n          }\n        }\n        if (\n          message.callAsContract != null &&\n          message.hasOwnProperty(\"callAsContract\")\n        ) {\n          if (typeof message.callAsContract !== \"boolean\") {\n            return \"callAsContract: boolean expected\";\n          }\n        }\n        return null;\n      };\n\n      /**\n       * Creates a Payee message from a plain object. Also converts values to their respective internal types.\n       * @function fromObject\n       * @memberof market.mass.Payee\n       * @static\n       * @param {Object.<string,*>} object Plain object\n       * @returns {market.mass.Payee} Payee\n       */\n      Payee.fromObject = function fromObject(object) {\n        if (object instanceof $root.market.mass.Payee) {\n          return object;\n        }\n        var message = new $root.market.mass.Payee();\n        if (object.name != null) {\n          message.name = String(object.name);\n        }\n        if (object.address != null) {\n          if (typeof object.address !== \"object\") {\n            throw TypeError(\".market.mass.Payee.address: object expected\");\n          }\n          message.address = $root.market.mass.EthereumAddress.fromObject(\n            object.address,\n          );\n        }\n        if (object.chainId != null) {\n          if ($util.Long) {\n            (message.chainId = $util.Long.fromValue(object.chainId)).unsigned =\n              true;\n          } else if (typeof object.chainId === \"string\") {\n            message.chainId = parseInt(object.chainId, 10);\n          } else if (typeof object.chainId === \"number\") {\n            message.chainId = object.chainId;\n          } else if (typeof object.chainId === \"object\") {\n            message.chainId = new $util.LongBits(\n              object.chainId.low >>> 0,\n              object.chainId.high >>> 0,\n            ).toNumber(true);\n          }\n        }\n        if (object.callAsContract != null) {\n          message.callAsContract = Boolean(object.callAsContract);\n        }\n        return message;\n      };\n\n      /**\n       * Creates a plain object from a Payee message. Also converts values to other types if specified.\n       * @function toObject\n       * @memberof market.mass.Payee\n       * @static\n       * @param {market.mass.Payee} message Payee\n       * @param {$protobuf.IConversionOptions} [options] Conversion options\n       * @returns {Object.<string,*>} Plain object\n       */\n      Payee.toObject = function toObject(message, options) {\n        if (!options) {\n          options = {};\n        }\n        var object = {};\n        if (options.defaults) {\n          object.name = \"\";\n          object.address = null;\n          if ($util.Long) {\n            var long = new $util.Long(0, 0, true);\n            object.chainId = options.longs === String\n              ? long.toString()\n              : options.longs === Number\n              ? long.toNumber()\n              : long;\n          } else {\n            object.chainId = options.longs === String ? \"0\" : 0;\n          }\n          object.callAsContract = false;\n        }\n        if (message.name != null && message.hasOwnProperty(\"name\")) {\n          object.name = message.name;\n        }\n        if (message.address != null && message.hasOwnProperty(\"address\")) {\n          object.address = $root.market.mass.EthereumAddress.toObject(\n            message.address,\n            options,\n          );\n        }\n        if (message.chainId != null && message.hasOwnProperty(\"chainId\")) {\n          if (typeof message.chainId === \"number\") {\n            object.chainId = options.longs === String\n              ? String(message.chainId)\n              : message.chainId;\n          } else {\n            object.chainId = options.longs === String\n              ? $util.Long.prototype.toString.call(message.chainId)\n              : options.longs === Number\n              ? new $util.LongBits(\n                message.chainId.low >>> 0,\n                message.chainId.high >>> 0,\n              ).toNumber(true)\n              : message.chainId;\n          }\n        }\n        if (\n          message.callAsContract != null &&\n          message.hasOwnProperty(\"callAsContract\")\n        ) {\n          object.callAsContract = message.callAsContract;\n        }\n        return object;\n      };\n\n      /**\n       * Converts this Payee to JSON.\n       * @function toJSON\n       * @memberof market.mass.Payee\n       * @instance\n       * @returns {Object.<string,*>} JSON object\n       */\n      Payee.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n      };\n\n      /**\n       * Gets the default type url for Payee\n       * @function getTypeUrl\n       * @memberof market.mass.Payee\n       * @static\n       * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n       * @returns {string} The default type url\n       */\n      Payee.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n        if (typeUrlPrefix === undefined) {\n          typeUrlPrefix = \"type.googleapis.com\";\n        }\n        return typeUrlPrefix + \"/market.mass.Payee\";\n      };\n\n      return Payee;\n    })();\n\n    mass.ShippingRegion = (function () {\n      /**\n       * Properties of a ShippingRegion.\n       * @memberof market.mass\n       * @interface IShippingRegion\n       * @property {string|null} [name] ShippingRegion name\n       * @property {string|null} [country] ShippingRegion country\n       * @property {string|null} [postalCode] ShippingRegion postalCode\n       * @property {string|null} [city] ShippingRegion city\n       * @property {Array.<market.mass.IOrderPriceModifier>|null} [orderPriceModifiers] ShippingRegion orderPriceModifiers\n       */\n\n      /**\n       * Constructs a new ShippingRegion.\n       * @memberof market.mass\n       * @classdesc Represents a ShippingRegion.\n       * @implements IShippingRegion\n       * @constructor\n       * @param {market.mass.IShippingRegion=} [properties] Properties to set\n       */\n      function ShippingRegion(properties) {\n        this.orderPriceModifiers = [];\n        if (properties) {\n          for (\n            var keys = Object.keys(properties), i = 0;\n            i < keys.length;\n            ++i\n          ) {\n            if (properties[keys[i]] != null) {\n              this[keys[i]] = properties[keys[i]];\n            }\n          }\n        }\n      }\n\n      /**\n       * ShippingRegion name.\n       * @member {string} name\n       * @memberof market.mass.ShippingRegion\n       * @instance\n       */\n      ShippingRegion.prototype.name = \"\";\n\n      /**\n       * ShippingRegion country.\n       * @member {string} country\n       * @memberof market.mass.ShippingRegion\n       * @instance\n       */\n      ShippingRegion.prototype.country = \"\";\n\n      /**\n       * ShippingRegion postalCode.\n       * @member {string} postalCode\n       * @memberof market.mass.ShippingRegion\n       * @instance\n       */\n      ShippingRegion.prototype.postalCode = \"\";\n\n      /**\n       * ShippingRegion city.\n       * @member {string} city\n       * @memberof market.mass.ShippingRegion\n       * @instance\n       */\n      ShippingRegion.prototype.city = \"\";\n\n      /**\n       * ShippingRegion orderPriceModifiers.\n       * @member {Array.<market.mass.IOrderPriceModifier>} orderPriceModifiers\n       * @memberof market.mass.ShippingRegion\n       * @instance\n       */\n      ShippingRegion.prototype.orderPriceModifiers = $util.emptyArray;\n\n      /**\n       * Creates a new ShippingRegion instance using the specified properties.\n       * @function create\n       * @memberof market.mass.ShippingRegion\n       * @static\n       * @param {market.mass.IShippingRegion=} [properties] Properties to set\n       * @returns {market.mass.ShippingRegion} ShippingRegion instance\n       */\n      ShippingRegion.create = function create(properties) {\n        return new ShippingRegion(properties);\n      };\n\n      /**\n       * Encodes the specified ShippingRegion message. Does not implicitly {@link market.mass.ShippingRegion.verify|verify} messages.\n       * @function encode\n       * @memberof market.mass.ShippingRegion\n       * @static\n       * @param {market.mass.IShippingRegion} message ShippingRegion message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      ShippingRegion.encode = function encode(message, writer) {\n        if (!writer) {\n          writer = $Writer.create();\n        }\n        if (\n          message.name != null && Object.hasOwnProperty.call(message, \"name\")\n        ) {\n          writer.uint32(/* id 1, wireType 2 =*/ 10).string(message.name);\n        }\n        if (\n          message.country != null &&\n          Object.hasOwnProperty.call(message, \"country\")\n        ) {\n          writer.uint32(/* id 2, wireType 2 =*/ 18).string(message.country);\n        }\n        if (\n          message.postalCode != null &&\n          Object.hasOwnProperty.call(message, \"postalCode\")\n        ) {\n          writer.uint32(/* id 3, wireType 2 =*/ 26).string(message.postalCode);\n        }\n        if (\n          message.city != null && Object.hasOwnProperty.call(message, \"city\")\n        ) {\n          writer.uint32(/* id 4, wireType 2 =*/ 34).string(message.city);\n        }\n        if (\n          message.orderPriceModifiers != null &&\n          message.orderPriceModifiers.length\n        ) {\n          for (var i = 0; i < message.orderPriceModifiers.length; ++i) {\n            $root.market.mass.OrderPriceModifier.encode(\n              message.orderPriceModifiers[i],\n              writer.uint32(/* id 5, wireType 2 =*/ 42).fork(),\n            ).ldelim();\n          }\n        }\n        return writer;\n      };\n\n      /**\n       * Encodes the specified ShippingRegion message, length delimited. Does not implicitly {@link market.mass.ShippingRegion.verify|verify} messages.\n       * @function encodeDelimited\n       * @memberof market.mass.ShippingRegion\n       * @static\n       * @param {market.mass.IShippingRegion} message ShippingRegion message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      ShippingRegion.encodeDelimited = function encodeDelimited(\n        message,\n        writer,\n      ) {\n        return this.encode(message, writer).ldelim();\n      };\n\n      /**\n       * Decodes a ShippingRegion message from the specified reader or buffer.\n       * @function decode\n       * @memberof market.mass.ShippingRegion\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @param {number} [length] Message length if known beforehand\n       * @returns {market.mass.ShippingRegion} ShippingRegion\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      ShippingRegion.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader)) {\n          reader = $Reader.create(reader);\n        }\n        var end = length === undefined ? reader.len : reader.pos + length,\n          message = new $root.market.mass.ShippingRegion();\n        while (reader.pos < end) {\n          var tag = reader.uint32();\n          switch (tag >>> 3) {\n            case 1: {\n              message.name = reader.string();\n              break;\n            }\n            case 2: {\n              message.country = reader.string();\n              break;\n            }\n            case 3: {\n              message.postalCode = reader.string();\n              break;\n            }\n            case 4: {\n              message.city = reader.string();\n              break;\n            }\n            case 5: {\n              if (\n                !(message.orderPriceModifiers &&\n                  message.orderPriceModifiers.length)\n              ) {\n                message.orderPriceModifiers = [];\n              }\n              message.orderPriceModifiers.push(\n                $root.market.mass.OrderPriceModifier.decode(\n                  reader,\n                  reader.uint32(),\n                ),\n              );\n              break;\n            }\n            default:\n              reader.skipType(tag & 7);\n              break;\n          }\n        }\n        return message;\n      };\n\n      /**\n       * Decodes a ShippingRegion message from the specified reader or buffer, length delimited.\n       * @function decodeDelimited\n       * @memberof market.mass.ShippingRegion\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @returns {market.mass.ShippingRegion} ShippingRegion\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      ShippingRegion.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader)) {\n          reader = new $Reader(reader);\n        }\n        return this.decode(reader, reader.uint32());\n      };\n\n      /**\n       * Verifies a ShippingRegion message.\n       * @function verify\n       * @memberof market.mass.ShippingRegion\n       * @static\n       * @param {Object.<string,*>} message Plain object to verify\n       * @returns {string|null} `null` if valid, otherwise the reason why it is not\n       */\n      ShippingRegion.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null) {\n          return \"object expected\";\n        }\n        if (message.name != null && message.hasOwnProperty(\"name\")) {\n          if (!$util.isString(message.name)) {\n            return \"name: string expected\";\n          }\n        }\n        if (message.country != null && message.hasOwnProperty(\"country\")) {\n          if (!$util.isString(message.country)) {\n            return \"country: string expected\";\n          }\n        }\n        if (\n          message.postalCode != null && message.hasOwnProperty(\"postalCode\")\n        ) {\n          if (!$util.isString(message.postalCode)) {\n            return \"postalCode: string expected\";\n          }\n        }\n        if (message.city != null && message.hasOwnProperty(\"city\")) {\n          if (!$util.isString(message.city)) {\n            return \"city: string expected\";\n          }\n        }\n        if (\n          message.orderPriceModifiers != null &&\n          message.hasOwnProperty(\"orderPriceModifiers\")\n        ) {\n          if (!Array.isArray(message.orderPriceModifiers)) {\n            return \"orderPriceModifiers: array expected\";\n          }\n          for (var i = 0; i < message.orderPriceModifiers.length; ++i) {\n            var error = $root.market.mass.OrderPriceModifier.verify(\n              message.orderPriceModifiers[i],\n            );\n            if (error) {\n              return \"orderPriceModifiers.\" + error;\n            }\n          }\n        }\n        return null;\n      };\n\n      /**\n       * Creates a ShippingRegion message from a plain object. Also converts values to their respective internal types.\n       * @function fromObject\n       * @memberof market.mass.ShippingRegion\n       * @static\n       * @param {Object.<string,*>} object Plain object\n       * @returns {market.mass.ShippingRegion} ShippingRegion\n       */\n      ShippingRegion.fromObject = function fromObject(object) {\n        if (object instanceof $root.market.mass.ShippingRegion) {\n          return object;\n        }\n        var message = new $root.market.mass.ShippingRegion();\n        if (object.name != null) {\n          message.name = String(object.name);\n        }\n        if (object.country != null) {\n          message.country = String(object.country);\n        }\n        if (object.postalCode != null) {\n          message.postalCode = String(object.postalCode);\n        }\n        if (object.city != null) {\n          message.city = String(object.city);\n        }\n        if (object.orderPriceModifiers) {\n          if (!Array.isArray(object.orderPriceModifiers)) {\n            throw TypeError(\n              \".market.mass.ShippingRegion.orderPriceModifiers: array expected\",\n            );\n          }\n          message.orderPriceModifiers = [];\n          for (var i = 0; i < object.orderPriceModifiers.length; ++i) {\n            if (typeof object.orderPriceModifiers[i] !== \"object\") {\n              throw TypeError(\n                \".market.mass.ShippingRegion.orderPriceModifiers: object expected\",\n              );\n            }\n            message.orderPriceModifiers[i] = $root.market.mass\n              .OrderPriceModifier.fromObject(object.orderPriceModifiers[i]);\n          }\n        }\n        return message;\n      };\n\n      /**\n       * Creates a plain object from a ShippingRegion message. Also converts values to other types if specified.\n       * @function toObject\n       * @memberof market.mass.ShippingRegion\n       * @static\n       * @param {market.mass.ShippingRegion} message ShippingRegion\n       * @param {$protobuf.IConversionOptions} [options] Conversion options\n       * @returns {Object.<string,*>} Plain object\n       */\n      ShippingRegion.toObject = function toObject(message, options) {\n        if (!options) {\n          options = {};\n        }\n        var object = {};\n        if (options.arrays || options.defaults) {\n          object.orderPriceModifiers = [];\n        }\n        if (options.defaults) {\n          object.name = \"\";\n          object.country = \"\";\n          object.postalCode = \"\";\n          object.city = \"\";\n        }\n        if (message.name != null && message.hasOwnProperty(\"name\")) {\n          object.name = message.name;\n        }\n        if (message.country != null && message.hasOwnProperty(\"country\")) {\n          object.country = message.country;\n        }\n        if (\n          message.postalCode != null && message.hasOwnProperty(\"postalCode\")\n        ) {\n          object.postalCode = message.postalCode;\n        }\n        if (message.city != null && message.hasOwnProperty(\"city\")) {\n          object.city = message.city;\n        }\n        if (message.orderPriceModifiers && message.orderPriceModifiers.length) {\n          object.orderPriceModifiers = [];\n          for (var j = 0; j < message.orderPriceModifiers.length; ++j) {\n            object.orderPriceModifiers[j] = $root.market.mass.OrderPriceModifier\n              .toObject(message.orderPriceModifiers[j], options);\n          }\n        }\n        return object;\n      };\n\n      /**\n       * Converts this ShippingRegion to JSON.\n       * @function toJSON\n       * @memberof market.mass.ShippingRegion\n       * @instance\n       * @returns {Object.<string,*>} JSON object\n       */\n      ShippingRegion.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n      };\n\n      /**\n       * Gets the default type url for ShippingRegion\n       * @function getTypeUrl\n       * @memberof market.mass.ShippingRegion\n       * @static\n       * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n       * @returns {string} The default type url\n       */\n      ShippingRegion.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n        if (typeUrlPrefix === undefined) {\n          typeUrlPrefix = \"type.googleapis.com\";\n        }\n        return typeUrlPrefix + \"/market.mass.ShippingRegion\";\n      };\n\n      return ShippingRegion;\n    })();\n\n    mass.OrderPriceModifier = (function () {\n      /**\n       * Properties of an OrderPriceModifier.\n       * @memberof market.mass\n       * @interface IOrderPriceModifier\n       * @property {string|null} [title] OrderPriceModifier title\n       * @property {market.mass.IUint256|null} [percentage] OrderPriceModifier percentage\n       * @property {market.mass.IPlusMinus|null} [absolute] OrderPriceModifier absolute\n       */\n\n      /**\n       * Constructs a new OrderPriceModifier.\n       * @memberof market.mass\n       * @classdesc Represents an OrderPriceModifier.\n       * @implements IOrderPriceModifier\n       * @constructor\n       * @param {market.mass.IOrderPriceModifier=} [properties] Properties to set\n       */\n      function OrderPriceModifier(properties) {\n        if (properties) {\n          for (\n            var keys = Object.keys(properties), i = 0;\n            i < keys.length;\n            ++i\n          ) {\n            if (properties[keys[i]] != null) {\n              this[keys[i]] = properties[keys[i]];\n            }\n          }\n        }\n      }\n\n      /**\n       * OrderPriceModifier title.\n       * @member {string} title\n       * @memberof market.mass.OrderPriceModifier\n       * @instance\n       */\n      OrderPriceModifier.prototype.title = \"\";\n\n      /**\n       * OrderPriceModifier percentage.\n       * @member {market.mass.IUint256|null|undefined} percentage\n       * @memberof market.mass.OrderPriceModifier\n       * @instance\n       */\n      OrderPriceModifier.prototype.percentage = null;\n\n      /**\n       * OrderPriceModifier absolute.\n       * @member {market.mass.IPlusMinus|null|undefined} absolute\n       * @memberof market.mass.OrderPriceModifier\n       * @instance\n       */\n      OrderPriceModifier.prototype.absolute = null;\n\n      // OneOf field names bound to virtual getters and setters\n      var $oneOfFields;\n\n      /**\n       * OrderPriceModifier modification.\n       * @member {\"percentage\"|\"absolute\"|undefined} modification\n       * @memberof market.mass.OrderPriceModifier\n       * @instance\n       */\n      Object.defineProperty(OrderPriceModifier.prototype, \"modification\", {\n        get: $util.oneOfGetter($oneOfFields = [\"percentage\", \"absolute\"]),\n        set: $util.oneOfSetter($oneOfFields),\n      });\n\n      /**\n       * Creates a new OrderPriceModifier instance using the specified properties.\n       * @function create\n       * @memberof market.mass.OrderPriceModifier\n       * @static\n       * @param {market.mass.IOrderPriceModifier=} [properties] Properties to set\n       * @returns {market.mass.OrderPriceModifier} OrderPriceModifier instance\n       */\n      OrderPriceModifier.create = function create(properties) {\n        return new OrderPriceModifier(properties);\n      };\n\n      /**\n       * Encodes the specified OrderPriceModifier message. Does not implicitly {@link market.mass.OrderPriceModifier.verify|verify} messages.\n       * @function encode\n       * @memberof market.mass.OrderPriceModifier\n       * @static\n       * @param {market.mass.IOrderPriceModifier} message OrderPriceModifier message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      OrderPriceModifier.encode = function encode(message, writer) {\n        if (!writer) {\n          writer = $Writer.create();\n        }\n        if (\n          message.title != null && Object.hasOwnProperty.call(message, \"title\")\n        ) {\n          writer.uint32(/* id 1, wireType 2 =*/ 10).string(message.title);\n        }\n        if (\n          message.percentage != null &&\n          Object.hasOwnProperty.call(message, \"percentage\")\n        ) {\n          $root.market.mass.Uint256.encode(\n            message.percentage,\n            writer.uint32(/* id 2, wireType 2 =*/ 18).fork(),\n          ).ldelim();\n        }\n        if (\n          message.absolute != null &&\n          Object.hasOwnProperty.call(message, \"absolute\")\n        ) {\n          $root.market.mass.PlusMinus.encode(\n            message.absolute,\n            writer.uint32(/* id 3, wireType 2 =*/ 26).fork(),\n          ).ldelim();\n        }\n        return writer;\n      };\n\n      /**\n       * Encodes the specified OrderPriceModifier message, length delimited. Does not implicitly {@link market.mass.OrderPriceModifier.verify|verify} messages.\n       * @function encodeDelimited\n       * @memberof market.mass.OrderPriceModifier\n       * @static\n       * @param {market.mass.IOrderPriceModifier} message OrderPriceModifier message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      OrderPriceModifier.encodeDelimited = function encodeDelimited(\n        message,\n        writer,\n      ) {\n        return this.encode(message, writer).ldelim();\n      };\n\n      /**\n       * Decodes an OrderPriceModifier message from the specified reader or buffer.\n       * @function decode\n       * @memberof market.mass.OrderPriceModifier\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @param {number} [length] Message length if known beforehand\n       * @returns {market.mass.OrderPriceModifier} OrderPriceModifier\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      OrderPriceModifier.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader)) {\n          reader = $Reader.create(reader);\n        }\n        var end = length === undefined ? reader.len : reader.pos + length,\n          message = new $root.market.mass.OrderPriceModifier();\n        while (reader.pos < end) {\n          var tag = reader.uint32();\n          switch (tag >>> 3) {\n            case 1: {\n              message.title = reader.string();\n              break;\n            }\n            case 2: {\n              message.percentage = $root.market.mass.Uint256.decode(\n                reader,\n                reader.uint32(),\n              );\n              break;\n            }\n            case 3: {\n              message.absolute = $root.market.mass.PlusMinus.decode(\n                reader,\n                reader.uint32(),\n              );\n              break;\n            }\n            default:\n              reader.skipType(tag & 7);\n              break;\n          }\n        }\n        return message;\n      };\n\n      /**\n       * Decodes an OrderPriceModifier message from the specified reader or buffer, length delimited.\n       * @function decodeDelimited\n       * @memberof market.mass.OrderPriceModifier\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @returns {market.mass.OrderPriceModifier} OrderPriceModifier\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      OrderPriceModifier.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader)) {\n          reader = new $Reader(reader);\n        }\n        return this.decode(reader, reader.uint32());\n      };\n\n      /**\n       * Verifies an OrderPriceModifier message.\n       * @function verify\n       * @memberof market.mass.OrderPriceModifier\n       * @static\n       * @param {Object.<string,*>} message Plain object to verify\n       * @returns {string|null} `null` if valid, otherwise the reason why it is not\n       */\n      OrderPriceModifier.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null) {\n          return \"object expected\";\n        }\n        var properties = {};\n        if (message.title != null && message.hasOwnProperty(\"title\")) {\n          if (!$util.isString(message.title)) {\n            return \"title: string expected\";\n          }\n        }\n        if (\n          message.percentage != null && message.hasOwnProperty(\"percentage\")\n        ) {\n          properties.modification = 1;\n          {\n            var error = $root.market.mass.Uint256.verify(message.percentage);\n            if (error) {\n              return \"percentage.\" + error;\n            }\n          }\n        }\n        if (message.absolute != null && message.hasOwnProperty(\"absolute\")) {\n          if (properties.modification === 1) {\n            return \"modification: multiple values\";\n          }\n          properties.modification = 1;\n          {\n            var error = $root.market.mass.PlusMinus.verify(message.absolute);\n            if (error) {\n              return \"absolute.\" + error;\n            }\n          }\n        }\n        return null;\n      };\n\n      /**\n       * Creates an OrderPriceModifier message from a plain object. Also converts values to their respective internal types.\n       * @function fromObject\n       * @memberof market.mass.OrderPriceModifier\n       * @static\n       * @param {Object.<string,*>} object Plain object\n       * @returns {market.mass.OrderPriceModifier} OrderPriceModifier\n       */\n      OrderPriceModifier.fromObject = function fromObject(object) {\n        if (object instanceof $root.market.mass.OrderPriceModifier) {\n          return object;\n        }\n        var message = new $root.market.mass.OrderPriceModifier();\n        if (object.title != null) {\n          message.title = String(object.title);\n        }\n        if (object.percentage != null) {\n          if (typeof object.percentage !== \"object\") {\n            throw TypeError(\n              \".market.mass.OrderPriceModifier.percentage: object expected\",\n            );\n          }\n          message.percentage = $root.market.mass.Uint256.fromObject(\n            object.percentage,\n          );\n        }\n        if (object.absolute != null) {\n          if (typeof object.absolute !== \"object\") {\n            throw TypeError(\n              \".market.mass.OrderPriceModifier.absolute: object expected\",\n            );\n          }\n          message.absolute = $root.market.mass.PlusMinus.fromObject(\n            object.absolute,\n          );\n        }\n        return message;\n      };\n\n      /**\n       * Creates a plain object from an OrderPriceModifier message. Also converts values to other types if specified.\n       * @function toObject\n       * @memberof market.mass.OrderPriceModifier\n       * @static\n       * @param {market.mass.OrderPriceModifier} message OrderPriceModifier\n       * @param {$protobuf.IConversionOptions} [options] Conversion options\n       * @returns {Object.<string,*>} Plain object\n       */\n      OrderPriceModifier.toObject = function toObject(message, options) {\n        if (!options) {\n          options = {};\n        }\n        var object = {};\n        if (options.defaults) {\n          object.title = \"\";\n        }\n        if (message.title != null && message.hasOwnProperty(\"title\")) {\n          object.title = message.title;\n        }\n        if (\n          message.percentage != null && message.hasOwnProperty(\"percentage\")\n        ) {\n          object.percentage = $root.market.mass.Uint256.toObject(\n            message.percentage,\n            options,\n          );\n          if (options.oneofs) {\n            object.modification = \"percentage\";\n          }\n        }\n        if (message.absolute != null && message.hasOwnProperty(\"absolute\")) {\n          object.absolute = $root.market.mass.PlusMinus.toObject(\n            message.absolute,\n            options,\n          );\n          if (options.oneofs) {\n            object.modification = \"absolute\";\n          }\n        }\n        return object;\n      };\n\n      /**\n       * Converts this OrderPriceModifier to JSON.\n       * @function toJSON\n       * @memberof market.mass.OrderPriceModifier\n       * @instance\n       * @returns {Object.<string,*>} JSON object\n       */\n      OrderPriceModifier.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n      };\n\n      /**\n       * Gets the default type url for OrderPriceModifier\n       * @function getTypeUrl\n       * @memberof market.mass.OrderPriceModifier\n       * @static\n       * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n       * @returns {string} The default type url\n       */\n      OrderPriceModifier.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n        if (typeUrlPrefix === undefined) {\n          typeUrlPrefix = \"type.googleapis.com\";\n        }\n        return typeUrlPrefix + \"/market.mass.OrderPriceModifier\";\n      };\n\n      return OrderPriceModifier;\n    })();\n\n    mass.PlusMinus = (function () {\n      /**\n       * Properties of a PlusMinus.\n       * @memberof market.mass\n       * @interface IPlusMinus\n       * @property {boolean|null} [plusSign] PlusMinus plusSign\n       * @property {market.mass.IUint256|null} [diff] PlusMinus diff\n       */\n\n      /**\n       * Constructs a new PlusMinus.\n       * @memberof market.mass\n       * @classdesc Represents a PlusMinus.\n       * @implements IPlusMinus\n       * @constructor\n       * @param {market.mass.IPlusMinus=} [properties] Properties to set\n       */\n      function PlusMinus(properties) {\n        if (properties) {\n          for (\n            var keys = Object.keys(properties), i = 0;\n            i < keys.length;\n            ++i\n          ) {\n            if (properties[keys[i]] != null) {\n              this[keys[i]] = properties[keys[i]];\n            }\n          }\n        }\n      }\n\n      /**\n       * PlusMinus plusSign.\n       * @member {boolean} plusSign\n       * @memberof market.mass.PlusMinus\n       * @instance\n       */\n      PlusMinus.prototype.plusSign = false;\n\n      /**\n       * PlusMinus diff.\n       * @member {market.mass.IUint256|null|undefined} diff\n       * @memberof market.mass.PlusMinus\n       * @instance\n       */\n      PlusMinus.prototype.diff = null;\n\n      /**\n       * Creates a new PlusMinus instance using the specified properties.\n       * @function create\n       * @memberof market.mass.PlusMinus\n       * @static\n       * @param {market.mass.IPlusMinus=} [properties] Properties to set\n       * @returns {market.mass.PlusMinus} PlusMinus instance\n       */\n      PlusMinus.create = function create(properties) {\n        return new PlusMinus(properties);\n      };\n\n      /**\n       * Encodes the specified PlusMinus message. Does not implicitly {@link market.mass.PlusMinus.verify|verify} messages.\n       * @function encode\n       * @memberof market.mass.PlusMinus\n       * @static\n       * @param {market.mass.IPlusMinus} message PlusMinus message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      PlusMinus.encode = function encode(message, writer) {\n        if (!writer) {\n          writer = $Writer.create();\n        }\n        if (\n          message.plusSign != null &&\n          Object.hasOwnProperty.call(message, \"plusSign\")\n        ) {\n          writer.uint32(/* id 1, wireType 0 =*/ 8).bool(message.plusSign);\n        }\n        if (\n          message.diff != null && Object.hasOwnProperty.call(message, \"diff\")\n        ) {\n          $root.market.mass.Uint256.encode(\n            message.diff,\n            writer.uint32(/* id 2, wireType 2 =*/ 18).fork(),\n          ).ldelim();\n        }\n        return writer;\n      };\n\n      /**\n       * Encodes the specified PlusMinus message, length delimited. Does not implicitly {@link market.mass.PlusMinus.verify|verify} messages.\n       * @function encodeDelimited\n       * @memberof market.mass.PlusMinus\n       * @static\n       * @param {market.mass.IPlusMinus} message PlusMinus message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      PlusMinus.encodeDelimited = function encodeDelimited(message, writer) {\n        return this.encode(message, writer).ldelim();\n      };\n\n      /**\n       * Decodes a PlusMinus message from the specified reader or buffer.\n       * @function decode\n       * @memberof market.mass.PlusMinus\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @param {number} [length] Message length if known beforehand\n       * @returns {market.mass.PlusMinus} PlusMinus\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      PlusMinus.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader)) {\n          reader = $Reader.create(reader);\n        }\n        var end = length === undefined ? reader.len : reader.pos + length,\n          message = new $root.market.mass.PlusMinus();\n        while (reader.pos < end) {\n          var tag = reader.uint32();\n          switch (tag >>> 3) {\n            case 1: {\n              message.plusSign = reader.bool();\n              break;\n            }\n            case 2: {\n              message.diff = $root.market.mass.Uint256.decode(\n                reader,\n                reader.uint32(),\n              );\n              break;\n            }\n            default:\n              reader.skipType(tag & 7);\n              break;\n          }\n        }\n        return message;\n      };\n\n      /**\n       * Decodes a PlusMinus message from the specified reader or buffer, length delimited.\n       * @function decodeDelimited\n       * @memberof market.mass.PlusMinus\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @returns {market.mass.PlusMinus} PlusMinus\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      PlusMinus.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader)) {\n          reader = new $Reader(reader);\n        }\n        return this.decode(reader, reader.uint32());\n      };\n\n      /**\n       * Verifies a PlusMinus message.\n       * @function verify\n       * @memberof market.mass.PlusMinus\n       * @static\n       * @param {Object.<string,*>} message Plain object to verify\n       * @returns {string|null} `null` if valid, otherwise the reason why it is not\n       */\n      PlusMinus.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null) {\n          return \"object expected\";\n        }\n        if (message.plusSign != null && message.hasOwnProperty(\"plusSign\")) {\n          if (typeof message.plusSign !== \"boolean\") {\n            return \"plusSign: boolean expected\";\n          }\n        }\n        if (message.diff != null && message.hasOwnProperty(\"diff\")) {\n          var error = $root.market.mass.Uint256.verify(message.diff);\n          if (error) {\n            return \"diff.\" + error;\n          }\n        }\n        return null;\n      };\n\n      /**\n       * Creates a PlusMinus message from a plain object. Also converts values to their respective internal types.\n       * @function fromObject\n       * @memberof market.mass.PlusMinus\n       * @static\n       * @param {Object.<string,*>} object Plain object\n       * @returns {market.mass.PlusMinus} PlusMinus\n       */\n      PlusMinus.fromObject = function fromObject(object) {\n        if (object instanceof $root.market.mass.PlusMinus) {\n          return object;\n        }\n        var message = new $root.market.mass.PlusMinus();\n        if (object.plusSign != null) {\n          message.plusSign = Boolean(object.plusSign);\n        }\n        if (object.diff != null) {\n          if (typeof object.diff !== \"object\") {\n            throw TypeError(\".market.mass.PlusMinus.diff: object expected\");\n          }\n          message.diff = $root.market.mass.Uint256.fromObject(object.diff);\n        }\n        return message;\n      };\n\n      /**\n       * Creates a plain object from a PlusMinus message. Also converts values to other types if specified.\n       * @function toObject\n       * @memberof market.mass.PlusMinus\n       * @static\n       * @param {market.mass.PlusMinus} message PlusMinus\n       * @param {$protobuf.IConversionOptions} [options] Conversion options\n       * @returns {Object.<string,*>} Plain object\n       */\n      PlusMinus.toObject = function toObject(message, options) {\n        if (!options) {\n          options = {};\n        }\n        var object = {};\n        if (options.defaults) {\n          object.plusSign = false;\n          object.diff = null;\n        }\n        if (message.plusSign != null && message.hasOwnProperty(\"plusSign\")) {\n          object.plusSign = message.plusSign;\n        }\n        if (message.diff != null && message.hasOwnProperty(\"diff\")) {\n          object.diff = $root.market.mass.Uint256.toObject(\n            message.diff,\n            options,\n          );\n        }\n        return object;\n      };\n\n      /**\n       * Converts this PlusMinus to JSON.\n       * @function toJSON\n       * @memberof market.mass.PlusMinus\n       * @instance\n       * @returns {Object.<string,*>} JSON object\n       */\n      PlusMinus.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n      };\n\n      /**\n       * Gets the default type url for PlusMinus\n       * @function getTypeUrl\n       * @memberof market.mass.PlusMinus\n       * @static\n       * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n       * @returns {string} The default type url\n       */\n      PlusMinus.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n        if (typeUrlPrefix === undefined) {\n          typeUrlPrefix = \"type.googleapis.com\";\n        }\n        return typeUrlPrefix + \"/market.mass.PlusMinus\";\n      };\n\n      return PlusMinus;\n    })();\n\n    mass.ListingMetadata = (function () {\n      /**\n       * Properties of a ListingMetadata.\n       * @memberof market.mass\n       * @interface IListingMetadata\n       * @property {string|null} [title] ListingMetadata title\n       * @property {string|null} [description] ListingMetadata description\n       * @property {Array.<string>|null} [images] ListingMetadata images\n       */\n\n      /**\n       * Constructs a new ListingMetadata.\n       * @memberof market.mass\n       * @classdesc Represents a ListingMetadata.\n       * @implements IListingMetadata\n       * @constructor\n       * @param {market.mass.IListingMetadata=} [properties] Properties to set\n       */\n      function ListingMetadata(properties) {\n        this.images = [];\n        if (properties) {\n          for (\n            var keys = Object.keys(properties), i = 0;\n            i < keys.length;\n            ++i\n          ) {\n            if (properties[keys[i]] != null) {\n              this[keys[i]] = properties[keys[i]];\n            }\n          }\n        }\n      }\n\n      /**\n       * ListingMetadata title.\n       * @member {string} title\n       * @memberof market.mass.ListingMetadata\n       * @instance\n       */\n      ListingMetadata.prototype.title = \"\";\n\n      /**\n       * ListingMetadata description.\n       * @member {string} description\n       * @memberof market.mass.ListingMetadata\n       * @instance\n       */\n      ListingMetadata.prototype.description = \"\";\n\n      /**\n       * ListingMetadata images.\n       * @member {Array.<string>} images\n       * @memberof market.mass.ListingMetadata\n       * @instance\n       */\n      ListingMetadata.prototype.images = $util.emptyArray;\n\n      /**\n       * Creates a new ListingMetadata instance using the specified properties.\n       * @function create\n       * @memberof market.mass.ListingMetadata\n       * @static\n       * @param {market.mass.IListingMetadata=} [properties] Properties to set\n       * @returns {market.mass.ListingMetadata} ListingMetadata instance\n       */\n      ListingMetadata.create = function create(properties) {\n        return new ListingMetadata(properties);\n      };\n\n      /**\n       * Encodes the specified ListingMetadata message. Does not implicitly {@link market.mass.ListingMetadata.verify|verify} messages.\n       * @function encode\n       * @memberof market.mass.ListingMetadata\n       * @static\n       * @param {market.mass.IListingMetadata} message ListingMetadata message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      ListingMetadata.encode = function encode(message, writer) {\n        if (!writer) {\n          writer = $Writer.create();\n        }\n        if (\n          message.title != null && Object.hasOwnProperty.call(message, \"title\")\n        ) {\n          writer.uint32(/* id 1, wireType 2 =*/ 10).string(message.title);\n        }\n        if (\n          message.description != null &&\n          Object.hasOwnProperty.call(message, \"description\")\n        ) {\n          writer.uint32(/* id 2, wireType 2 =*/ 18).string(message.description);\n        }\n        if (message.images != null && message.images.length) {\n          for (var i = 0; i < message.images.length; ++i) {\n            writer.uint32(/* id 3, wireType 2 =*/ 26).string(message.images[i]);\n          }\n        }\n        return writer;\n      };\n\n      /**\n       * Encodes the specified ListingMetadata message, length delimited. Does not implicitly {@link market.mass.ListingMetadata.verify|verify} messages.\n       * @function encodeDelimited\n       * @memberof market.mass.ListingMetadata\n       * @static\n       * @param {market.mass.IListingMetadata} message ListingMetadata message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      ListingMetadata.encodeDelimited = function encodeDelimited(\n        message,\n        writer,\n      ) {\n        return this.encode(message, writer).ldelim();\n      };\n\n      /**\n       * Decodes a ListingMetadata message from the specified reader or buffer.\n       * @function decode\n       * @memberof market.mass.ListingMetadata\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @param {number} [length] Message length if known beforehand\n       * @returns {market.mass.ListingMetadata} ListingMetadata\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      ListingMetadata.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader)) {\n          reader = $Reader.create(reader);\n        }\n        var end = length === undefined ? reader.len : reader.pos + length,\n          message = new $root.market.mass.ListingMetadata();\n        while (reader.pos < end) {\n          var tag = reader.uint32();\n          switch (tag >>> 3) {\n            case 1: {\n              message.title = reader.string();\n              break;\n            }\n            case 2: {\n              message.description = reader.string();\n              break;\n            }\n            case 3: {\n              if (!(message.images && message.images.length)) {\n                message.images = [];\n              }\n              message.images.push(reader.string());\n              break;\n            }\n            default:\n              reader.skipType(tag & 7);\n              break;\n          }\n        }\n        return message;\n      };\n\n      /**\n       * Decodes a ListingMetadata message from the specified reader or buffer, length delimited.\n       * @function decodeDelimited\n       * @memberof market.mass.ListingMetadata\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @returns {market.mass.ListingMetadata} ListingMetadata\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      ListingMetadata.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader)) {\n          reader = new $Reader(reader);\n        }\n        return this.decode(reader, reader.uint32());\n      };\n\n      /**\n       * Verifies a ListingMetadata message.\n       * @function verify\n       * @memberof market.mass.ListingMetadata\n       * @static\n       * @param {Object.<string,*>} message Plain object to verify\n       * @returns {string|null} `null` if valid, otherwise the reason why it is not\n       */\n      ListingMetadata.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null) {\n          return \"object expected\";\n        }\n        if (message.title != null && message.hasOwnProperty(\"title\")) {\n          if (!$util.isString(message.title)) {\n            return \"title: string expected\";\n          }\n        }\n        if (\n          message.description != null && message.hasOwnProperty(\"description\")\n        ) {\n          if (!$util.isString(message.description)) {\n            return \"description: string expected\";\n          }\n        }\n        if (message.images != null && message.hasOwnProperty(\"images\")) {\n          if (!Array.isArray(message.images)) {\n            return \"images: array expected\";\n          }\n          for (var i = 0; i < message.images.length; ++i) {\n            if (!$util.isString(message.images[i])) {\n              return \"images: string[] expected\";\n            }\n          }\n        }\n        return null;\n      };\n\n      /**\n       * Creates a ListingMetadata message from a plain object. Also converts values to their respective internal types.\n       * @function fromObject\n       * @memberof market.mass.ListingMetadata\n       * @static\n       * @param {Object.<string,*>} object Plain object\n       * @returns {market.mass.ListingMetadata} ListingMetadata\n       */\n      ListingMetadata.fromObject = function fromObject(object) {\n        if (object instanceof $root.market.mass.ListingMetadata) {\n          return object;\n        }\n        var message = new $root.market.mass.ListingMetadata();\n        if (object.title != null) {\n          message.title = String(object.title);\n        }\n        if (object.description != null) {\n          message.description = String(object.description);\n        }\n        if (object.images) {\n          if (!Array.isArray(object.images)) {\n            throw TypeError(\n              \".market.mass.ListingMetadata.images: array expected\",\n            );\n          }\n          message.images = [];\n          for (var i = 0; i < object.images.length; ++i) {\n            message.images[i] = String(object.images[i]);\n          }\n        }\n        return message;\n      };\n\n      /**\n       * Creates a plain object from a ListingMetadata message. Also converts values to other types if specified.\n       * @function toObject\n       * @memberof market.mass.ListingMetadata\n       * @static\n       * @param {market.mass.ListingMetadata} message ListingMetadata\n       * @param {$protobuf.IConversionOptions} [options] Conversion options\n       * @returns {Object.<string,*>} Plain object\n       */\n      ListingMetadata.toObject = function toObject(message, options) {\n        if (!options) {\n          options = {};\n        }\n        var object = {};\n        if (options.arrays || options.defaults) {\n          object.images = [];\n        }\n        if (options.defaults) {\n          object.title = \"\";\n          object.description = \"\";\n        }\n        if (message.title != null && message.hasOwnProperty(\"title\")) {\n          object.title = message.title;\n        }\n        if (\n          message.description != null && message.hasOwnProperty(\"description\")\n        ) {\n          object.description = message.description;\n        }\n        if (message.images && message.images.length) {\n          object.images = [];\n          for (var j = 0; j < message.images.length; ++j) {\n            object.images[j] = message.images[j];\n          }\n        }\n        return object;\n      };\n\n      /**\n       * Converts this ListingMetadata to JSON.\n       * @function toJSON\n       * @memberof market.mass.ListingMetadata\n       * @instance\n       * @returns {Object.<string,*>} JSON object\n       */\n      ListingMetadata.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n      };\n\n      /**\n       * Gets the default type url for ListingMetadata\n       * @function getTypeUrl\n       * @memberof market.mass.ListingMetadata\n       * @static\n       * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n       * @returns {string} The default type url\n       */\n      ListingMetadata.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n        if (typeUrlPrefix === undefined) {\n          typeUrlPrefix = \"type.googleapis.com\";\n        }\n        return typeUrlPrefix + \"/market.mass.ListingMetadata\";\n      };\n\n      return ListingMetadata;\n    })();\n\n    mass.ListingOption = (function () {\n      /**\n       * Properties of a ListingOption.\n       * @memberof market.mass\n       * @interface IListingOption\n       * @property {market.mass.IObjectId|null} [id] ListingOption id\n       * @property {string|null} [title] ListingOption title\n       * @property {Array.<market.mass.IListingVariation>|null} [variations] ListingOption variations\n       */\n\n      /**\n       * Constructs a new ListingOption.\n       * @memberof market.mass\n       * @classdesc Represents a ListingOption.\n       * @implements IListingOption\n       * @constructor\n       * @param {market.mass.IListingOption=} [properties] Properties to set\n       */\n      function ListingOption(properties) {\n        this.variations = [];\n        if (properties) {\n          for (\n            var keys = Object.keys(properties), i = 0;\n            i < keys.length;\n            ++i\n          ) {\n            if (properties[keys[i]] != null) {\n              this[keys[i]] = properties[keys[i]];\n            }\n          }\n        }\n      }\n\n      /**\n       * ListingOption id.\n       * @member {market.mass.IObjectId|null|undefined} id\n       * @memberof market.mass.ListingOption\n       * @instance\n       */\n      ListingOption.prototype.id = null;\n\n      /**\n       * ListingOption title.\n       * @member {string} title\n       * @memberof market.mass.ListingOption\n       * @instance\n       */\n      ListingOption.prototype.title = \"\";\n\n      /**\n       * ListingOption variations.\n       * @member {Array.<market.mass.IListingVariation>} variations\n       * @memberof market.mass.ListingOption\n       * @instance\n       */\n      ListingOption.prototype.variations = $util.emptyArray;\n\n      /**\n       * Creates a new ListingOption instance using the specified properties.\n       * @function create\n       * @memberof market.mass.ListingOption\n       * @static\n       * @param {market.mass.IListingOption=} [properties] Properties to set\n       * @returns {market.mass.ListingOption} ListingOption instance\n       */\n      ListingOption.create = function create(properties) {\n        return new ListingOption(properties);\n      };\n\n      /**\n       * Encodes the specified ListingOption message. Does not implicitly {@link market.mass.ListingOption.verify|verify} messages.\n       * @function encode\n       * @memberof market.mass.ListingOption\n       * @static\n       * @param {market.mass.IListingOption} message ListingOption message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      ListingOption.encode = function encode(message, writer) {\n        if (!writer) {\n          writer = $Writer.create();\n        }\n        if (message.id != null && Object.hasOwnProperty.call(message, \"id\")) {\n          $root.market.mass.ObjectId.encode(\n            message.id,\n            writer.uint32(/* id 1, wireType 2 =*/ 10).fork(),\n          ).ldelim();\n        }\n        if (\n          message.title != null && Object.hasOwnProperty.call(message, \"title\")\n        ) {\n          writer.uint32(/* id 2, wireType 2 =*/ 18).string(message.title);\n        }\n        if (message.variations != null && message.variations.length) {\n          for (var i = 0; i < message.variations.length; ++i) {\n            $root.market.mass.ListingVariation.encode(\n              message.variations[i],\n              writer.uint32(/* id 3, wireType 2 =*/ 26).fork(),\n            ).ldelim();\n          }\n        }\n        return writer;\n      };\n\n      /**\n       * Encodes the specified ListingOption message, length delimited. Does not implicitly {@link market.mass.ListingOption.verify|verify} messages.\n       * @function encodeDelimited\n       * @memberof market.mass.ListingOption\n       * @static\n       * @param {market.mass.IListingOption} message ListingOption message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      ListingOption.encodeDelimited = function encodeDelimited(\n        message,\n        writer,\n      ) {\n        return this.encode(message, writer).ldelim();\n      };\n\n      /**\n       * Decodes a ListingOption message from the specified reader or buffer.\n       * @function decode\n       * @memberof market.mass.ListingOption\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @param {number} [length] Message length if known beforehand\n       * @returns {market.mass.ListingOption} ListingOption\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      ListingOption.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader)) {\n          reader = $Reader.create(reader);\n        }\n        var end = length === undefined ? reader.len : reader.pos + length,\n          message = new $root.market.mass.ListingOption();\n        while (reader.pos < end) {\n          var tag = reader.uint32();\n          switch (tag >>> 3) {\n            case 1: {\n              message.id = $root.market.mass.ObjectId.decode(\n                reader,\n                reader.uint32(),\n              );\n              break;\n            }\n            case 2: {\n              message.title = reader.string();\n              break;\n            }\n            case 3: {\n              if (!(message.variations && message.variations.length)) {\n                message.variations = [];\n              }\n              message.variations.push(\n                $root.market.mass.ListingVariation.decode(\n                  reader,\n                  reader.uint32(),\n                ),\n              );\n              break;\n            }\n            default:\n              reader.skipType(tag & 7);\n              break;\n          }\n        }\n        return message;\n      };\n\n      /**\n       * Decodes a ListingOption message from the specified reader or buffer, length delimited.\n       * @function decodeDelimited\n       * @memberof market.mass.ListingOption\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @returns {market.mass.ListingOption} ListingOption\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      ListingOption.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader)) {\n          reader = new $Reader(reader);\n        }\n        return this.decode(reader, reader.uint32());\n      };\n\n      /**\n       * Verifies a ListingOption message.\n       * @function verify\n       * @memberof market.mass.ListingOption\n       * @static\n       * @param {Object.<string,*>} message Plain object to verify\n       * @returns {string|null} `null` if valid, otherwise the reason why it is not\n       */\n      ListingOption.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null) {\n          return \"object expected\";\n        }\n        if (message.id != null && message.hasOwnProperty(\"id\")) {\n          var error = $root.market.mass.ObjectId.verify(message.id);\n          if (error) {\n            return \"id.\" + error;\n          }\n        }\n        if (message.title != null && message.hasOwnProperty(\"title\")) {\n          if (!$util.isString(message.title)) {\n            return \"title: string expected\";\n          }\n        }\n        if (\n          message.variations != null && message.hasOwnProperty(\"variations\")\n        ) {\n          if (!Array.isArray(message.variations)) {\n            return \"variations: array expected\";\n          }\n          for (var i = 0; i < message.variations.length; ++i) {\n            var error = $root.market.mass.ListingVariation.verify(\n              message.variations[i],\n            );\n            if (error) {\n              return \"variations.\" + error;\n            }\n          }\n        }\n        return null;\n      };\n\n      /**\n       * Creates a ListingOption message from a plain object. Also converts values to their respective internal types.\n       * @function fromObject\n       * @memberof market.mass.ListingOption\n       * @static\n       * @param {Object.<string,*>} object Plain object\n       * @returns {market.mass.ListingOption} ListingOption\n       */\n      ListingOption.fromObject = function fromObject(object) {\n        if (object instanceof $root.market.mass.ListingOption) {\n          return object;\n        }\n        var message = new $root.market.mass.ListingOption();\n        if (object.id != null) {\n          if (typeof object.id !== \"object\") {\n            throw TypeError(\".market.mass.ListingOption.id: object expected\");\n          }\n          message.id = $root.market.mass.ObjectId.fromObject(object.id);\n        }\n        if (object.title != null) {\n          message.title = String(object.title);\n        }\n        if (object.variations) {\n          if (!Array.isArray(object.variations)) {\n            throw TypeError(\n              \".market.mass.ListingOption.variations: array expected\",\n            );\n          }\n          message.variations = [];\n          for (var i = 0; i < object.variations.length; ++i) {\n            if (typeof object.variations[i] !== \"object\") {\n              throw TypeError(\n                \".market.mass.ListingOption.variations: object expected\",\n              );\n            }\n            message.variations[i] = $root.market.mass.ListingVariation\n              .fromObject(object.variations[i]);\n          }\n        }\n        return message;\n      };\n\n      /**\n       * Creates a plain object from a ListingOption message. Also converts values to other types if specified.\n       * @function toObject\n       * @memberof market.mass.ListingOption\n       * @static\n       * @param {market.mass.ListingOption} message ListingOption\n       * @param {$protobuf.IConversionOptions} [options] Conversion options\n       * @returns {Object.<string,*>} Plain object\n       */\n      ListingOption.toObject = function toObject(message, options) {\n        if (!options) {\n          options = {};\n        }\n        var object = {};\n        if (options.arrays || options.defaults) {\n          object.variations = [];\n        }\n        if (options.defaults) {\n          object.id = null;\n          object.title = \"\";\n        }\n        if (message.id != null && message.hasOwnProperty(\"id\")) {\n          object.id = $root.market.mass.ObjectId.toObject(message.id, options);\n        }\n        if (message.title != null && message.hasOwnProperty(\"title\")) {\n          object.title = message.title;\n        }\n        if (message.variations && message.variations.length) {\n          object.variations = [];\n          for (var j = 0; j < message.variations.length; ++j) {\n            object.variations[j] = $root.market.mass.ListingVariation.toObject(\n              message.variations[j],\n              options,\n            );\n          }\n        }\n        return object;\n      };\n\n      /**\n       * Converts this ListingOption to JSON.\n       * @function toJSON\n       * @memberof market.mass.ListingOption\n       * @instance\n       * @returns {Object.<string,*>} JSON object\n       */\n      ListingOption.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n      };\n\n      /**\n       * Gets the default type url for ListingOption\n       * @function getTypeUrl\n       * @memberof market.mass.ListingOption\n       * @static\n       * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n       * @returns {string} The default type url\n       */\n      ListingOption.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n        if (typeUrlPrefix === undefined) {\n          typeUrlPrefix = \"type.googleapis.com\";\n        }\n        return typeUrlPrefix + \"/market.mass.ListingOption\";\n      };\n\n      return ListingOption;\n    })();\n\n    mass.ListingVariation = (function () {\n      /**\n       * Properties of a ListingVariation.\n       * @memberof market.mass\n       * @interface IListingVariation\n       * @property {market.mass.IObjectId|null} [id] ListingVariation id\n       * @property {market.mass.IListingMetadata|null} [variationInfo] ListingVariation variationInfo\n       * @property {market.mass.IPlusMinus|null} [diff] ListingVariation diff\n       */\n\n      /**\n       * Constructs a new ListingVariation.\n       * @memberof market.mass\n       * @classdesc Represents a ListingVariation.\n       * @implements IListingVariation\n       * @constructor\n       * @param {market.mass.IListingVariation=} [properties] Properties to set\n       */\n      function ListingVariation(properties) {\n        if (properties) {\n          for (\n            var keys = Object.keys(properties), i = 0;\n            i < keys.length;\n            ++i\n          ) {\n            if (properties[keys[i]] != null) {\n              this[keys[i]] = properties[keys[i]];\n            }\n          }\n        }\n      }\n\n      /**\n       * ListingVariation id.\n       * @member {market.mass.IObjectId|null|undefined} id\n       * @memberof market.mass.ListingVariation\n       * @instance\n       */\n      ListingVariation.prototype.id = null;\n\n      /**\n       * ListingVariation variationInfo.\n       * @member {market.mass.IListingMetadata|null|undefined} variationInfo\n       * @memberof market.mass.ListingVariation\n       * @instance\n       */\n      ListingVariation.prototype.variationInfo = null;\n\n      /**\n       * ListingVariation diff.\n       * @member {market.mass.IPlusMinus|null|undefined} diff\n       * @memberof market.mass.ListingVariation\n       * @instance\n       */\n      ListingVariation.prototype.diff = null;\n\n      /**\n       * Creates a new ListingVariation instance using the specified properties.\n       * @function create\n       * @memberof market.mass.ListingVariation\n       * @static\n       * @param {market.mass.IListingVariation=} [properties] Properties to set\n       * @returns {market.mass.ListingVariation} ListingVariation instance\n       */\n      ListingVariation.create = function create(properties) {\n        return new ListingVariation(properties);\n      };\n\n      /**\n       * Encodes the specified ListingVariation message. Does not implicitly {@link market.mass.ListingVariation.verify|verify} messages.\n       * @function encode\n       * @memberof market.mass.ListingVariation\n       * @static\n       * @param {market.mass.IListingVariation} message ListingVariation message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      ListingVariation.encode = function encode(message, writer) {\n        if (!writer) {\n          writer = $Writer.create();\n        }\n        if (message.id != null && Object.hasOwnProperty.call(message, \"id\")) {\n          $root.market.mass.ObjectId.encode(\n            message.id,\n            writer.uint32(/* id 1, wireType 2 =*/ 10).fork(),\n          ).ldelim();\n        }\n        if (\n          message.variationInfo != null &&\n          Object.hasOwnProperty.call(message, \"variationInfo\")\n        ) {\n          $root.market.mass.ListingMetadata.encode(\n            message.variationInfo,\n            writer.uint32(/* id 2, wireType 2 =*/ 18).fork(),\n          ).ldelim();\n        }\n        if (\n          message.diff != null && Object.hasOwnProperty.call(message, \"diff\")\n        ) {\n          $root.market.mass.PlusMinus.encode(\n            message.diff,\n            writer.uint32(/* id 3, wireType 2 =*/ 26).fork(),\n          ).ldelim();\n        }\n        return writer;\n      };\n\n      /**\n       * Encodes the specified ListingVariation message, length delimited. Does not implicitly {@link market.mass.ListingVariation.verify|verify} messages.\n       * @function encodeDelimited\n       * @memberof market.mass.ListingVariation\n       * @static\n       * @param {market.mass.IListingVariation} message ListingVariation message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      ListingVariation.encodeDelimited = function encodeDelimited(\n        message,\n        writer,\n      ) {\n        return this.encode(message, writer).ldelim();\n      };\n\n      /**\n       * Decodes a ListingVariation message from the specified reader or buffer.\n       * @function decode\n       * @memberof market.mass.ListingVariation\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @param {number} [length] Message length if known beforehand\n       * @returns {market.mass.ListingVariation} ListingVariation\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      ListingVariation.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader)) {\n          reader = $Reader.create(reader);\n        }\n        var end = length === undefined ? reader.len : reader.pos + length,\n          message = new $root.market.mass.ListingVariation();\n        while (reader.pos < end) {\n          var tag = reader.uint32();\n          switch (tag >>> 3) {\n            case 1: {\n              message.id = $root.market.mass.ObjectId.decode(\n                reader,\n                reader.uint32(),\n              );\n              break;\n            }\n            case 2: {\n              message.variationInfo = $root.market.mass.ListingMetadata.decode(\n                reader,\n                reader.uint32(),\n              );\n              break;\n            }\n            case 3: {\n              message.diff = $root.market.mass.PlusMinus.decode(\n                reader,\n                reader.uint32(),\n              );\n              break;\n            }\n            default:\n              reader.skipType(tag & 7);\n              break;\n          }\n        }\n        return message;\n      };\n\n      /**\n       * Decodes a ListingVariation message from the specified reader or buffer, length delimited.\n       * @function decodeDelimited\n       * @memberof market.mass.ListingVariation\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @returns {market.mass.ListingVariation} ListingVariation\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      ListingVariation.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader)) {\n          reader = new $Reader(reader);\n        }\n        return this.decode(reader, reader.uint32());\n      };\n\n      /**\n       * Verifies a ListingVariation message.\n       * @function verify\n       * @memberof market.mass.ListingVariation\n       * @static\n       * @param {Object.<string,*>} message Plain object to verify\n       * @returns {string|null} `null` if valid, otherwise the reason why it is not\n       */\n      ListingVariation.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null) {\n          return \"object expected\";\n        }\n        if (message.id != null && message.hasOwnProperty(\"id\")) {\n          var error = $root.market.mass.ObjectId.verify(message.id);\n          if (error) {\n            return \"id.\" + error;\n          }\n        }\n        if (\n          message.variationInfo != null &&\n          message.hasOwnProperty(\"variationInfo\")\n        ) {\n          var error = $root.market.mass.ListingMetadata.verify(\n            message.variationInfo,\n          );\n          if (error) {\n            return \"variationInfo.\" + error;\n          }\n        }\n        if (message.diff != null && message.hasOwnProperty(\"diff\")) {\n          var error = $root.market.mass.PlusMinus.verify(message.diff);\n          if (error) {\n            return \"diff.\" + error;\n          }\n        }\n        return null;\n      };\n\n      /**\n       * Creates a ListingVariation message from a plain object. Also converts values to their respective internal types.\n       * @function fromObject\n       * @memberof market.mass.ListingVariation\n       * @static\n       * @param {Object.<string,*>} object Plain object\n       * @returns {market.mass.ListingVariation} ListingVariation\n       */\n      ListingVariation.fromObject = function fromObject(object) {\n        if (object instanceof $root.market.mass.ListingVariation) {\n          return object;\n        }\n        var message = new $root.market.mass.ListingVariation();\n        if (object.id != null) {\n          if (typeof object.id !== \"object\") {\n            throw TypeError(\n              \".market.mass.ListingVariation.id: object expected\",\n            );\n          }\n          message.id = $root.market.mass.ObjectId.fromObject(object.id);\n        }\n        if (object.variationInfo != null) {\n          if (typeof object.variationInfo !== \"object\") {\n            throw TypeError(\n              \".market.mass.ListingVariation.variationInfo: object expected\",\n            );\n          }\n          message.variationInfo = $root.market.mass.ListingMetadata.fromObject(\n            object.variationInfo,\n          );\n        }\n        if (object.diff != null) {\n          if (typeof object.diff !== \"object\") {\n            throw TypeError(\n              \".market.mass.ListingVariation.diff: object expected\",\n            );\n          }\n          message.diff = $root.market.mass.PlusMinus.fromObject(object.diff);\n        }\n        return message;\n      };\n\n      /**\n       * Creates a plain object from a ListingVariation message. Also converts values to other types if specified.\n       * @function toObject\n       * @memberof market.mass.ListingVariation\n       * @static\n       * @param {market.mass.ListingVariation} message ListingVariation\n       * @param {$protobuf.IConversionOptions} [options] Conversion options\n       * @returns {Object.<string,*>} Plain object\n       */\n      ListingVariation.toObject = function toObject(message, options) {\n        if (!options) {\n          options = {};\n        }\n        var object = {};\n        if (options.defaults) {\n          object.id = null;\n          object.variationInfo = null;\n          object.diff = null;\n        }\n        if (message.id != null && message.hasOwnProperty(\"id\")) {\n          object.id = $root.market.mass.ObjectId.toObject(message.id, options);\n        }\n        if (\n          message.variationInfo != null &&\n          message.hasOwnProperty(\"variationInfo\")\n        ) {\n          object.variationInfo = $root.market.mass.ListingMetadata.toObject(\n            message.variationInfo,\n            options,\n          );\n        }\n        if (message.diff != null && message.hasOwnProperty(\"diff\")) {\n          object.diff = $root.market.mass.PlusMinus.toObject(\n            message.diff,\n            options,\n          );\n        }\n        return object;\n      };\n\n      /**\n       * Converts this ListingVariation to JSON.\n       * @function toJSON\n       * @memberof market.mass.ListingVariation\n       * @instance\n       * @returns {Object.<string,*>} JSON object\n       */\n      ListingVariation.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n      };\n\n      /**\n       * Gets the default type url for ListingVariation\n       * @function getTypeUrl\n       * @memberof market.mass.ListingVariation\n       * @static\n       * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n       * @returns {string} The default type url\n       */\n      ListingVariation.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n        if (typeUrlPrefix === undefined) {\n          typeUrlPrefix = \"type.googleapis.com\";\n        }\n        return typeUrlPrefix + \"/market.mass.ListingVariation\";\n      };\n\n      return ListingVariation;\n    })();\n\n    /**\n     * ListingViewState enum.\n     * @name market.mass.ListingViewState\n     * @enum {number}\n     * @property {number} LISTING_VIEW_STATE_UNSPECIFIED=0 LISTING_VIEW_STATE_UNSPECIFIED value\n     * @property {number} LISTING_VIEW_STATE_PUBLISHED=1 LISTING_VIEW_STATE_PUBLISHED value\n     * @property {number} LISTING_VIEW_STATE_DELETED=2 LISTING_VIEW_STATE_DELETED value\n     */\n    mass.ListingViewState = (function () {\n      var valuesById = {}, values = Object.create(valuesById);\n      values[valuesById[0] = \"LISTING_VIEW_STATE_UNSPECIFIED\"] = 0;\n      values[valuesById[1] = \"LISTING_VIEW_STATE_PUBLISHED\"] = 1;\n      values[valuesById[2] = \"LISTING_VIEW_STATE_DELETED\"] = 2;\n      return values;\n    })();\n\n    mass.ListingStockStatus = (function () {\n      /**\n       * Properties of a ListingStockStatus.\n       * @memberof market.mass\n       * @interface IListingStockStatus\n       * @property {Array.<market.mass.IObjectId>|null} [variationIds] ListingStockStatus variationIds\n       * @property {boolean|null} [inStock] ListingStockStatus inStock\n       * @property {google.protobuf.ITimestamp|null} [expectedInStockBy] ListingStockStatus expectedInStockBy\n       */\n\n      /**\n       * Constructs a new ListingStockStatus.\n       * @memberof market.mass\n       * @classdesc Represents a ListingStockStatus.\n       * @implements IListingStockStatus\n       * @constructor\n       * @param {market.mass.IListingStockStatus=} [properties] Properties to set\n       */\n      function ListingStockStatus(properties) {\n        this.variationIds = [];\n        if (properties) {\n          for (\n            var keys = Object.keys(properties), i = 0;\n            i < keys.length;\n            ++i\n          ) {\n            if (properties[keys[i]] != null) {\n              this[keys[i]] = properties[keys[i]];\n            }\n          }\n        }\n      }\n\n      /**\n       * ListingStockStatus variationIds.\n       * @member {Array.<market.mass.IObjectId>} variationIds\n       * @memberof market.mass.ListingStockStatus\n       * @instance\n       */\n      ListingStockStatus.prototype.variationIds = $util.emptyArray;\n\n      /**\n       * ListingStockStatus inStock.\n       * @member {boolean|null|undefined} inStock\n       * @memberof market.mass.ListingStockStatus\n       * @instance\n       */\n      ListingStockStatus.prototype.inStock = null;\n\n      /**\n       * ListingStockStatus expectedInStockBy.\n       * @member {google.protobuf.ITimestamp|null|undefined} expectedInStockBy\n       * @memberof market.mass.ListingStockStatus\n       * @instance\n       */\n      ListingStockStatus.prototype.expectedInStockBy = null;\n\n      // OneOf field names bound to virtual getters and setters\n      var $oneOfFields;\n\n      /**\n       * ListingStockStatus status.\n       * @member {\"inStock\"|\"expectedInStockBy\"|undefined} status\n       * @memberof market.mass.ListingStockStatus\n       * @instance\n       */\n      Object.defineProperty(ListingStockStatus.prototype, \"status\", {\n        get: $util.oneOfGetter($oneOfFields = [\"inStock\", \"expectedInStockBy\"]),\n        set: $util.oneOfSetter($oneOfFields),\n      });\n\n      /**\n       * Creates a new ListingStockStatus instance using the specified properties.\n       * @function create\n       * @memberof market.mass.ListingStockStatus\n       * @static\n       * @param {market.mass.IListingStockStatus=} [properties] Properties to set\n       * @returns {market.mass.ListingStockStatus} ListingStockStatus instance\n       */\n      ListingStockStatus.create = function create(properties) {\n        return new ListingStockStatus(properties);\n      };\n\n      /**\n       * Encodes the specified ListingStockStatus message. Does not implicitly {@link market.mass.ListingStockStatus.verify|verify} messages.\n       * @function encode\n       * @memberof market.mass.ListingStockStatus\n       * @static\n       * @param {market.mass.IListingStockStatus} message ListingStockStatus message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      ListingStockStatus.encode = function encode(message, writer) {\n        if (!writer) {\n          writer = $Writer.create();\n        }\n        if (message.variationIds != null && message.variationIds.length) {\n          for (var i = 0; i < message.variationIds.length; ++i) {\n            $root.market.mass.ObjectId.encode(\n              message.variationIds[i],\n              writer.uint32(/* id 1, wireType 2 =*/ 10).fork(),\n            ).ldelim();\n          }\n        }\n        if (\n          message.inStock != null &&\n          Object.hasOwnProperty.call(message, \"inStock\")\n        ) {\n          writer.uint32(/* id 2, wireType 0 =*/ 16).bool(message.inStock);\n        }\n        if (\n          message.expectedInStockBy != null &&\n          Object.hasOwnProperty.call(message, \"expectedInStockBy\")\n        ) {\n          $root.google.protobuf.Timestamp.encode(\n            message.expectedInStockBy,\n            writer.uint32(/* id 3, wireType 2 =*/ 26).fork(),\n          ).ldelim();\n        }\n        return writer;\n      };\n\n      /**\n       * Encodes the specified ListingStockStatus message, length delimited. Does not implicitly {@link market.mass.ListingStockStatus.verify|verify} messages.\n       * @function encodeDelimited\n       * @memberof market.mass.ListingStockStatus\n       * @static\n       * @param {market.mass.IListingStockStatus} message ListingStockStatus message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      ListingStockStatus.encodeDelimited = function encodeDelimited(\n        message,\n        writer,\n      ) {\n        return this.encode(message, writer).ldelim();\n      };\n\n      /**\n       * Decodes a ListingStockStatus message from the specified reader or buffer.\n       * @function decode\n       * @memberof market.mass.ListingStockStatus\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @param {number} [length] Message length if known beforehand\n       * @returns {market.mass.ListingStockStatus} ListingStockStatus\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      ListingStockStatus.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader)) {\n          reader = $Reader.create(reader);\n        }\n        var end = length === undefined ? reader.len : reader.pos + length,\n          message = new $root.market.mass.ListingStockStatus();\n        while (reader.pos < end) {\n          var tag = reader.uint32();\n          switch (tag >>> 3) {\n            case 1: {\n              if (!(message.variationIds && message.variationIds.length)) {\n                message.variationIds = [];\n              }\n              message.variationIds.push(\n                $root.market.mass.ObjectId.decode(reader, reader.uint32()),\n              );\n              break;\n            }\n            case 2: {\n              message.inStock = reader.bool();\n              break;\n            }\n            case 3: {\n              message.expectedInStockBy = $root.google.protobuf.Timestamp\n                .decode(reader, reader.uint32());\n              break;\n            }\n            default:\n              reader.skipType(tag & 7);\n              break;\n          }\n        }\n        return message;\n      };\n\n      /**\n       * Decodes a ListingStockStatus message from the specified reader or buffer, length delimited.\n       * @function decodeDelimited\n       * @memberof market.mass.ListingStockStatus\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @returns {market.mass.ListingStockStatus} ListingStockStatus\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      ListingStockStatus.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader)) {\n          reader = new $Reader(reader);\n        }\n        return this.decode(reader, reader.uint32());\n      };\n\n      /**\n       * Verifies a ListingStockStatus message.\n       * @function verify\n       * @memberof market.mass.ListingStockStatus\n       * @static\n       * @param {Object.<string,*>} message Plain object to verify\n       * @returns {string|null} `null` if valid, otherwise the reason why it is not\n       */\n      ListingStockStatus.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null) {\n          return \"object expected\";\n        }\n        var properties = {};\n        if (\n          message.variationIds != null && message.hasOwnProperty(\"variationIds\")\n        ) {\n          if (!Array.isArray(message.variationIds)) {\n            return \"variationIds: array expected\";\n          }\n          for (var i = 0; i < message.variationIds.length; ++i) {\n            var error = $root.market.mass.ObjectId.verify(\n              message.variationIds[i],\n            );\n            if (error) {\n              return \"variationIds.\" + error;\n            }\n          }\n        }\n        if (message.inStock != null && message.hasOwnProperty(\"inStock\")) {\n          properties.status = 1;\n          if (typeof message.inStock !== \"boolean\") {\n            return \"inStock: boolean expected\";\n          }\n        }\n        if (\n          message.expectedInStockBy != null &&\n          message.hasOwnProperty(\"expectedInStockBy\")\n        ) {\n          if (properties.status === 1) {\n            return \"status: multiple values\";\n          }\n          properties.status = 1;\n          {\n            var error = $root.google.protobuf.Timestamp.verify(\n              message.expectedInStockBy,\n            );\n            if (error) {\n              return \"expectedInStockBy.\" + error;\n            }\n          }\n        }\n        return null;\n      };\n\n      /**\n       * Creates a ListingStockStatus message from a plain object. Also converts values to their respective internal types.\n       * @function fromObject\n       * @memberof market.mass.ListingStockStatus\n       * @static\n       * @param {Object.<string,*>} object Plain object\n       * @returns {market.mass.ListingStockStatus} ListingStockStatus\n       */\n      ListingStockStatus.fromObject = function fromObject(object) {\n        if (object instanceof $root.market.mass.ListingStockStatus) {\n          return object;\n        }\n        var message = new $root.market.mass.ListingStockStatus();\n        if (object.variationIds) {\n          if (!Array.isArray(object.variationIds)) {\n            throw TypeError(\n              \".market.mass.ListingStockStatus.variationIds: array expected\",\n            );\n          }\n          message.variationIds = [];\n          for (var i = 0; i < object.variationIds.length; ++i) {\n            if (typeof object.variationIds[i] !== \"object\") {\n              throw TypeError(\n                \".market.mass.ListingStockStatus.variationIds: object expected\",\n              );\n            }\n            message.variationIds[i] = $root.market.mass.ObjectId.fromObject(\n              object.variationIds[i],\n            );\n          }\n        }\n        if (object.inStock != null) {\n          message.inStock = Boolean(object.inStock);\n        }\n        if (object.expectedInStockBy != null) {\n          if (typeof object.expectedInStockBy !== \"object\") {\n            throw TypeError(\n              \".market.mass.ListingStockStatus.expectedInStockBy: object expected\",\n            );\n          }\n          message.expectedInStockBy = $root.google.protobuf.Timestamp\n            .fromObject(object.expectedInStockBy);\n        }\n        return message;\n      };\n\n      /**\n       * Creates a plain object from a ListingStockStatus message. Also converts values to other types if specified.\n       * @function toObject\n       * @memberof market.mass.ListingStockStatus\n       * @static\n       * @param {market.mass.ListingStockStatus} message ListingStockStatus\n       * @param {$protobuf.IConversionOptions} [options] Conversion options\n       * @returns {Object.<string,*>} Plain object\n       */\n      ListingStockStatus.toObject = function toObject(message, options) {\n        if (!options) {\n          options = {};\n        }\n        var object = {};\n        if (options.arrays || options.defaults) {\n          object.variationIds = [];\n        }\n        if (message.variationIds && message.variationIds.length) {\n          object.variationIds = [];\n          for (var j = 0; j < message.variationIds.length; ++j) {\n            object.variationIds[j] = $root.market.mass.ObjectId.toObject(\n              message.variationIds[j],\n              options,\n            );\n          }\n        }\n        if (message.inStock != null && message.hasOwnProperty(\"inStock\")) {\n          object.inStock = message.inStock;\n          if (options.oneofs) {\n            object.status = \"inStock\";\n          }\n        }\n        if (\n          message.expectedInStockBy != null &&\n          message.hasOwnProperty(\"expectedInStockBy\")\n        ) {\n          object.expectedInStockBy = $root.google.protobuf.Timestamp.toObject(\n            message.expectedInStockBy,\n            options,\n          );\n          if (options.oneofs) {\n            object.status = \"expectedInStockBy\";\n          }\n        }\n        return object;\n      };\n\n      /**\n       * Converts this ListingStockStatus to JSON.\n       * @function toJSON\n       * @memberof market.mass.ListingStockStatus\n       * @instance\n       * @returns {Object.<string,*>} JSON object\n       */\n      ListingStockStatus.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n      };\n\n      /**\n       * Gets the default type url for ListingStockStatus\n       * @function getTypeUrl\n       * @memberof market.mass.ListingStockStatus\n       * @static\n       * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n       * @returns {string} The default type url\n       */\n      ListingStockStatus.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n        if (typeUrlPrefix === undefined) {\n          typeUrlPrefix = \"type.googleapis.com\";\n        }\n        return typeUrlPrefix + \"/market.mass.ListingStockStatus\";\n      };\n\n      return ListingStockStatus;\n    })();\n\n    mass.AddressDetails = (function () {\n      /**\n       * Properties of an AddressDetails.\n       * @memberof market.mass\n       * @interface IAddressDetails\n       * @property {string|null} [name] AddressDetails name\n       * @property {string|null} [address1] AddressDetails address1\n       * @property {string|null} [address2] AddressDetails address2\n       * @property {string|null} [city] AddressDetails city\n       * @property {string|null} [postalCode] AddressDetails postalCode\n       * @property {string|null} [country] AddressDetails country\n       * @property {string|null} [emailAddress] AddressDetails emailAddress\n       * @property {string|null} [phoneNumber] AddressDetails phoneNumber\n       */\n\n      /**\n       * Constructs a new AddressDetails.\n       * @memberof market.mass\n       * @classdesc Represents an AddressDetails.\n       * @implements IAddressDetails\n       * @constructor\n       * @param {market.mass.IAddressDetails=} [properties] Properties to set\n       */\n      function AddressDetails(properties) {\n        if (properties) {\n          for (\n            var keys = Object.keys(properties), i = 0;\n            i < keys.length;\n            ++i\n          ) {\n            if (properties[keys[i]] != null) {\n              this[keys[i]] = properties[keys[i]];\n            }\n          }\n        }\n      }\n\n      /**\n       * AddressDetails name.\n       * @member {string} name\n       * @memberof market.mass.AddressDetails\n       * @instance\n       */\n      AddressDetails.prototype.name = \"\";\n\n      /**\n       * AddressDetails address1.\n       * @member {string} address1\n       * @memberof market.mass.AddressDetails\n       * @instance\n       */\n      AddressDetails.prototype.address1 = \"\";\n\n      /**\n       * AddressDetails address2.\n       * @member {string} address2\n       * @memberof market.mass.AddressDetails\n       * @instance\n       */\n      AddressDetails.prototype.address2 = \"\";\n\n      /**\n       * AddressDetails city.\n       * @member {string} city\n       * @memberof market.mass.AddressDetails\n       * @instance\n       */\n      AddressDetails.prototype.city = \"\";\n\n      /**\n       * AddressDetails postalCode.\n       * @member {string} postalCode\n       * @memberof market.mass.AddressDetails\n       * @instance\n       */\n      AddressDetails.prototype.postalCode = \"\";\n\n      /**\n       * AddressDetails country.\n       * @member {string} country\n       * @memberof market.mass.AddressDetails\n       * @instance\n       */\n      AddressDetails.prototype.country = \"\";\n\n      /**\n       * AddressDetails emailAddress.\n       * @member {string} emailAddress\n       * @memberof market.mass.AddressDetails\n       * @instance\n       */\n      AddressDetails.prototype.emailAddress = \"\";\n\n      /**\n       * AddressDetails phoneNumber.\n       * @member {string|null|undefined} phoneNumber\n       * @memberof market.mass.AddressDetails\n       * @instance\n       */\n      AddressDetails.prototype.phoneNumber = null;\n\n      // OneOf field names bound to virtual getters and setters\n      var $oneOfFields;\n\n      // Virtual OneOf for proto3 optional field\n      Object.defineProperty(AddressDetails.prototype, \"_phoneNumber\", {\n        get: $util.oneOfGetter($oneOfFields = [\"phoneNumber\"]),\n        set: $util.oneOfSetter($oneOfFields),\n      });\n\n      /**\n       * Creates a new AddressDetails instance using the specified properties.\n       * @function create\n       * @memberof market.mass.AddressDetails\n       * @static\n       * @param {market.mass.IAddressDetails=} [properties] Properties to set\n       * @returns {market.mass.AddressDetails} AddressDetails instance\n       */\n      AddressDetails.create = function create(properties) {\n        return new AddressDetails(properties);\n      };\n\n      /**\n       * Encodes the specified AddressDetails message. Does not implicitly {@link market.mass.AddressDetails.verify|verify} messages.\n       * @function encode\n       * @memberof market.mass.AddressDetails\n       * @static\n       * @param {market.mass.IAddressDetails} message AddressDetails message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      AddressDetails.encode = function encode(message, writer) {\n        if (!writer) {\n          writer = $Writer.create();\n        }\n        if (\n          message.name != null && Object.hasOwnProperty.call(message, \"name\")\n        ) {\n          writer.uint32(/* id 1, wireType 2 =*/ 10).string(message.name);\n        }\n        if (\n          message.address1 != null &&\n          Object.hasOwnProperty.call(message, \"address1\")\n        ) {\n          writer.uint32(/* id 2, wireType 2 =*/ 18).string(message.address1);\n        }\n        if (\n          message.address2 != null &&\n          Object.hasOwnProperty.call(message, \"address2\")\n        ) {\n          writer.uint32(/* id 3, wireType 2 =*/ 26).string(message.address2);\n        }\n        if (\n          message.city != null && Object.hasOwnProperty.call(message, \"city\")\n        ) {\n          writer.uint32(/* id 4, wireType 2 =*/ 34).string(message.city);\n        }\n        if (\n          message.postalCode != null &&\n          Object.hasOwnProperty.call(message, \"postalCode\")\n        ) {\n          writer.uint32(/* id 5, wireType 2 =*/ 42).string(message.postalCode);\n        }\n        if (\n          message.country != null &&\n          Object.hasOwnProperty.call(message, \"country\")\n        ) {\n          writer.uint32(/* id 6, wireType 2 =*/ 50).string(message.country);\n        }\n        if (\n          message.emailAddress != null &&\n          Object.hasOwnProperty.call(message, \"emailAddress\")\n        ) {\n          writer.uint32(/* id 7, wireType 2 =*/ 58).string(\n            message.emailAddress,\n          );\n        }\n        if (\n          message.phoneNumber != null &&\n          Object.hasOwnProperty.call(message, \"phoneNumber\")\n        ) {\n          writer.uint32(/* id 8, wireType 2 =*/ 66).string(message.phoneNumber);\n        }\n        return writer;\n      };\n\n      /**\n       * Encodes the specified AddressDetails message, length delimited. Does not implicitly {@link market.mass.AddressDetails.verify|verify} messages.\n       * @function encodeDelimited\n       * @memberof market.mass.AddressDetails\n       * @static\n       * @param {market.mass.IAddressDetails} message AddressDetails message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      AddressDetails.encodeDelimited = function encodeDelimited(\n        message,\n        writer,\n      ) {\n        return this.encode(message, writer).ldelim();\n      };\n\n      /**\n       * Decodes an AddressDetails message from the specified reader or buffer.\n       * @function decode\n       * @memberof market.mass.AddressDetails\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @param {number} [length] Message length if known beforehand\n       * @returns {market.mass.AddressDetails} AddressDetails\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      AddressDetails.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader)) {\n          reader = $Reader.create(reader);\n        }\n        var end = length === undefined ? reader.len : reader.pos + length,\n          message = new $root.market.mass.AddressDetails();\n        while (reader.pos < end) {\n          var tag = reader.uint32();\n          switch (tag >>> 3) {\n            case 1: {\n              message.name = reader.string();\n              break;\n            }\n            case 2: {\n              message.address1 = reader.string();\n              break;\n            }\n            case 3: {\n              message.address2 = reader.string();\n              break;\n            }\n            case 4: {\n              message.city = reader.string();\n              break;\n            }\n            case 5: {\n              message.postalCode = reader.string();\n              break;\n            }\n            case 6: {\n              message.country = reader.string();\n              break;\n            }\n            case 7: {\n              message.emailAddress = reader.string();\n              break;\n            }\n            case 8: {\n              message.phoneNumber = reader.string();\n              break;\n            }\n            default:\n              reader.skipType(tag & 7);\n              break;\n          }\n        }\n        return message;\n      };\n\n      /**\n       * Decodes an AddressDetails message from the specified reader or buffer, length delimited.\n       * @function decodeDelimited\n       * @memberof market.mass.AddressDetails\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @returns {market.mass.AddressDetails} AddressDetails\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      AddressDetails.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader)) {\n          reader = new $Reader(reader);\n        }\n        return this.decode(reader, reader.uint32());\n      };\n\n      /**\n       * Verifies an AddressDetails message.\n       * @function verify\n       * @memberof market.mass.AddressDetails\n       * @static\n       * @param {Object.<string,*>} message Plain object to verify\n       * @returns {string|null} `null` if valid, otherwise the reason why it is not\n       */\n      AddressDetails.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null) {\n          return \"object expected\";\n        }\n        var properties = {};\n        if (message.name != null && message.hasOwnProperty(\"name\")) {\n          if (!$util.isString(message.name)) {\n            return \"name: string expected\";\n          }\n        }\n        if (message.address1 != null && message.hasOwnProperty(\"address1\")) {\n          if (!$util.isString(message.address1)) {\n            return \"address1: string expected\";\n          }\n        }\n        if (message.address2 != null && message.hasOwnProperty(\"address2\")) {\n          if (!$util.isString(message.address2)) {\n            return \"address2: string expected\";\n          }\n        }\n        if (message.city != null && message.hasOwnProperty(\"city\")) {\n          if (!$util.isString(message.city)) {\n            return \"city: string expected\";\n          }\n        }\n        if (\n          message.postalCode != null && message.hasOwnProperty(\"postalCode\")\n        ) {\n          if (!$util.isString(message.postalCode)) {\n            return \"postalCode: string expected\";\n          }\n        }\n        if (message.country != null && message.hasOwnProperty(\"country\")) {\n          if (!$util.isString(message.country)) {\n            return \"country: string expected\";\n          }\n        }\n        if (\n          message.emailAddress != null && message.hasOwnProperty(\"emailAddress\")\n        ) {\n          if (!$util.isString(message.emailAddress)) {\n            return \"emailAddress: string expected\";\n          }\n        }\n        if (\n          message.phoneNumber != null && message.hasOwnProperty(\"phoneNumber\")\n        ) {\n          properties._phoneNumber = 1;\n          if (!$util.isString(message.phoneNumber)) {\n            return \"phoneNumber: string expected\";\n          }\n        }\n        return null;\n      };\n\n      /**\n       * Creates an AddressDetails message from a plain object. Also converts values to their respective internal types.\n       * @function fromObject\n       * @memberof market.mass.AddressDetails\n       * @static\n       * @param {Object.<string,*>} object Plain object\n       * @returns {market.mass.AddressDetails} AddressDetails\n       */\n      AddressDetails.fromObject = function fromObject(object) {\n        if (object instanceof $root.market.mass.AddressDetails) {\n          return object;\n        }\n        var message = new $root.market.mass.AddressDetails();\n        if (object.name != null) {\n          message.name = String(object.name);\n        }\n        if (object.address1 != null) {\n          message.address1 = String(object.address1);\n        }\n        if (object.address2 != null) {\n          message.address2 = String(object.address2);\n        }\n        if (object.city != null) {\n          message.city = String(object.city);\n        }\n        if (object.postalCode != null) {\n          message.postalCode = String(object.postalCode);\n        }\n        if (object.country != null) {\n          message.country = String(object.country);\n        }\n        if (object.emailAddress != null) {\n          message.emailAddress = String(object.emailAddress);\n        }\n        if (object.phoneNumber != null) {\n          message.phoneNumber = String(object.phoneNumber);\n        }\n        return message;\n      };\n\n      /**\n       * Creates a plain object from an AddressDetails message. Also converts values to other types if specified.\n       * @function toObject\n       * @memberof market.mass.AddressDetails\n       * @static\n       * @param {market.mass.AddressDetails} message AddressDetails\n       * @param {$protobuf.IConversionOptions} [options] Conversion options\n       * @returns {Object.<string,*>} Plain object\n       */\n      AddressDetails.toObject = function toObject(message, options) {\n        if (!options) {\n          options = {};\n        }\n        var object = {};\n        if (options.defaults) {\n          object.name = \"\";\n          object.address1 = \"\";\n          object.address2 = \"\";\n          object.city = \"\";\n          object.postalCode = \"\";\n          object.country = \"\";\n          object.emailAddress = \"\";\n        }\n        if (message.name != null && message.hasOwnProperty(\"name\")) {\n          object.name = message.name;\n        }\n        if (message.address1 != null && message.hasOwnProperty(\"address1\")) {\n          object.address1 = message.address1;\n        }\n        if (message.address2 != null && message.hasOwnProperty(\"address2\")) {\n          object.address2 = message.address2;\n        }\n        if (message.city != null && message.hasOwnProperty(\"city\")) {\n          object.city = message.city;\n        }\n        if (\n          message.postalCode != null && message.hasOwnProperty(\"postalCode\")\n        ) {\n          object.postalCode = message.postalCode;\n        }\n        if (message.country != null && message.hasOwnProperty(\"country\")) {\n          object.country = message.country;\n        }\n        if (\n          message.emailAddress != null && message.hasOwnProperty(\"emailAddress\")\n        ) {\n          object.emailAddress = message.emailAddress;\n        }\n        if (\n          message.phoneNumber != null && message.hasOwnProperty(\"phoneNumber\")\n        ) {\n          object.phoneNumber = message.phoneNumber;\n          if (options.oneofs) {\n            object._phoneNumber = \"phoneNumber\";\n          }\n        }\n        return object;\n      };\n\n      /**\n       * Converts this AddressDetails to JSON.\n       * @function toJSON\n       * @memberof market.mass.AddressDetails\n       * @instance\n       * @returns {Object.<string,*>} JSON object\n       */\n      AddressDetails.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n      };\n\n      /**\n       * Gets the default type url for AddressDetails\n       * @function getTypeUrl\n       * @memberof market.mass.AddressDetails\n       * @static\n       * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n       * @returns {string} The default type url\n       */\n      AddressDetails.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n        if (typeUrlPrefix === undefined) {\n          typeUrlPrefix = \"type.googleapis.com\";\n        }\n        return typeUrlPrefix + \"/market.mass.AddressDetails\";\n      };\n\n      return AddressDetails;\n    })();\n\n    mass.PaymentDetails = (function () {\n      /**\n       * Properties of a PaymentDetails.\n       * @memberof market.mass\n       * @interface IPaymentDetails\n       * @property {market.mass.IHash|null} [paymentId] PaymentDetails paymentId\n       * @property {market.mass.IUint256|null} [total] PaymentDetails total\n       * @property {Array.<market.mass.IIPFSAddress>|null} [listingHashes] PaymentDetails listingHashes\n       * @property {string|null} [ttl] PaymentDetails ttl\n       * @property {market.mass.ISignature|null} [shopSignature] PaymentDetails shopSignature\n       * @property {market.mass.IShippingRegion|null} [shippingRegion] PaymentDetails shippingRegion\n       */\n\n      /**\n       * Constructs a new PaymentDetails.\n       * @memberof market.mass\n       * @classdesc Represents a PaymentDetails.\n       * @implements IPaymentDetails\n       * @constructor\n       * @param {market.mass.IPaymentDetails=} [properties] Properties to set\n       */\n      function PaymentDetails(properties) {\n        this.listingHashes = [];\n        if (properties) {\n          for (\n            var keys = Object.keys(properties), i = 0;\n            i < keys.length;\n            ++i\n          ) {\n            if (properties[keys[i]] != null) {\n              this[keys[i]] = properties[keys[i]];\n            }\n          }\n        }\n      }\n\n      /**\n       * PaymentDetails paymentId.\n       * @member {market.mass.IHash|null|undefined} paymentId\n       * @memberof market.mass.PaymentDetails\n       * @instance\n       */\n      PaymentDetails.prototype.paymentId = null;\n\n      /**\n       * PaymentDetails total.\n       * @member {market.mass.IUint256|null|undefined} total\n       * @memberof market.mass.PaymentDetails\n       * @instance\n       */\n      PaymentDetails.prototype.total = null;\n\n      /**\n       * PaymentDetails listingHashes.\n       * @member {Array.<market.mass.IIPFSAddress>} listingHashes\n       * @memberof market.mass.PaymentDetails\n       * @instance\n       */\n      PaymentDetails.prototype.listingHashes = $util.emptyArray;\n\n      /**\n       * PaymentDetails ttl.\n       * @member {string} ttl\n       * @memberof market.mass.PaymentDetails\n       * @instance\n       */\n      PaymentDetails.prototype.ttl = \"\";\n\n      /**\n       * PaymentDetails shopSignature.\n       * @member {market.mass.ISignature|null|undefined} shopSignature\n       * @memberof market.mass.PaymentDetails\n       * @instance\n       */\n      PaymentDetails.prototype.shopSignature = null;\n\n      /**\n       * PaymentDetails shippingRegion.\n       * @member {market.mass.IShippingRegion|null|undefined} shippingRegion\n       * @memberof market.mass.PaymentDetails\n       * @instance\n       */\n      PaymentDetails.prototype.shippingRegion = null;\n\n      /**\n       * Creates a new PaymentDetails instance using the specified properties.\n       * @function create\n       * @memberof market.mass.PaymentDetails\n       * @static\n       * @param {market.mass.IPaymentDetails=} [properties] Properties to set\n       * @returns {market.mass.PaymentDetails} PaymentDetails instance\n       */\n      PaymentDetails.create = function create(properties) {\n        return new PaymentDetails(properties);\n      };\n\n      /**\n       * Encodes the specified PaymentDetails message. Does not implicitly {@link market.mass.PaymentDetails.verify|verify} messages.\n       * @function encode\n       * @memberof market.mass.PaymentDetails\n       * @static\n       * @param {market.mass.IPaymentDetails} message PaymentDetails message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      PaymentDetails.encode = function encode(message, writer) {\n        if (!writer) {\n          writer = $Writer.create();\n        }\n        if (\n          message.paymentId != null &&\n          Object.hasOwnProperty.call(message, \"paymentId\")\n        ) {\n          $root.market.mass.Hash.encode(\n            message.paymentId,\n            writer.uint32(/* id 1, wireType 2 =*/ 10).fork(),\n          ).ldelim();\n        }\n        if (\n          message.total != null && Object.hasOwnProperty.call(message, \"total\")\n        ) {\n          $root.market.mass.Uint256.encode(\n            message.total,\n            writer.uint32(/* id 2, wireType 2 =*/ 18).fork(),\n          ).ldelim();\n        }\n        if (message.listingHashes != null && message.listingHashes.length) {\n          for (var i = 0; i < message.listingHashes.length; ++i) {\n            $root.market.mass.IPFSAddress.encode(\n              message.listingHashes[i],\n              writer.uint32(/* id 3, wireType 2 =*/ 26).fork(),\n            ).ldelim();\n          }\n        }\n        if (message.ttl != null && Object.hasOwnProperty.call(message, \"ttl\")) {\n          writer.uint32(/* id 4, wireType 2 =*/ 34).string(message.ttl);\n        }\n        if (\n          message.shopSignature != null &&\n          Object.hasOwnProperty.call(message, \"shopSignature\")\n        ) {\n          $root.market.mass.Signature.encode(\n            message.shopSignature,\n            writer.uint32(/* id 5, wireType 2 =*/ 42).fork(),\n          ).ldelim();\n        }\n        if (\n          message.shippingRegion != null &&\n          Object.hasOwnProperty.call(message, \"shippingRegion\")\n        ) {\n          $root.market.mass.ShippingRegion.encode(\n            message.shippingRegion,\n            writer.uint32(/* id 6, wireType 2 =*/ 50).fork(),\n          ).ldelim();\n        }\n        return writer;\n      };\n\n      /**\n       * Encodes the specified PaymentDetails message, length delimited. Does not implicitly {@link market.mass.PaymentDetails.verify|verify} messages.\n       * @function encodeDelimited\n       * @memberof market.mass.PaymentDetails\n       * @static\n       * @param {market.mass.IPaymentDetails} message PaymentDetails message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      PaymentDetails.encodeDelimited = function encodeDelimited(\n        message,\n        writer,\n      ) {\n        return this.encode(message, writer).ldelim();\n      };\n\n      /**\n       * Decodes a PaymentDetails message from the specified reader or buffer.\n       * @function decode\n       * @memberof market.mass.PaymentDetails\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @param {number} [length] Message length if known beforehand\n       * @returns {market.mass.PaymentDetails} PaymentDetails\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      PaymentDetails.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader)) {\n          reader = $Reader.create(reader);\n        }\n        var end = length === undefined ? reader.len : reader.pos + length,\n          message = new $root.market.mass.PaymentDetails();\n        while (reader.pos < end) {\n          var tag = reader.uint32();\n          switch (tag >>> 3) {\n            case 1: {\n              message.paymentId = $root.market.mass.Hash.decode(\n                reader,\n                reader.uint32(),\n              );\n              break;\n            }\n            case 2: {\n              message.total = $root.market.mass.Uint256.decode(\n                reader,\n                reader.uint32(),\n              );\n              break;\n            }\n            case 3: {\n              if (!(message.listingHashes && message.listingHashes.length)) {\n                message.listingHashes = [];\n              }\n              message.listingHashes.push(\n                $root.market.mass.IPFSAddress.decode(reader, reader.uint32()),\n              );\n              break;\n            }\n            case 4: {\n              message.ttl = reader.string();\n              break;\n            }\n            case 5: {\n              message.shopSignature = $root.market.mass.Signature.decode(\n                reader,\n                reader.uint32(),\n              );\n              break;\n            }\n            case 6: {\n              message.shippingRegion = $root.market.mass.ShippingRegion.decode(\n                reader,\n                reader.uint32(),\n              );\n              break;\n            }\n            default:\n              reader.skipType(tag & 7);\n              break;\n          }\n        }\n        return message;\n      };\n\n      /**\n       * Decodes a PaymentDetails message from the specified reader or buffer, length delimited.\n       * @function decodeDelimited\n       * @memberof market.mass.PaymentDetails\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @returns {market.mass.PaymentDetails} PaymentDetails\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      PaymentDetails.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader)) {\n          reader = new $Reader(reader);\n        }\n        return this.decode(reader, reader.uint32());\n      };\n\n      /**\n       * Verifies a PaymentDetails message.\n       * @function verify\n       * @memberof market.mass.PaymentDetails\n       * @static\n       * @param {Object.<string,*>} message Plain object to verify\n       * @returns {string|null} `null` if valid, otherwise the reason why it is not\n       */\n      PaymentDetails.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null) {\n          return \"object expected\";\n        }\n        if (message.paymentId != null && message.hasOwnProperty(\"paymentId\")) {\n          var error = $root.market.mass.Hash.verify(message.paymentId);\n          if (error) {\n            return \"paymentId.\" + error;\n          }\n        }\n        if (message.total != null && message.hasOwnProperty(\"total\")) {\n          var error = $root.market.mass.Uint256.verify(message.total);\n          if (error) {\n            return \"total.\" + error;\n          }\n        }\n        if (\n          message.listingHashes != null &&\n          message.hasOwnProperty(\"listingHashes\")\n        ) {\n          if (!Array.isArray(message.listingHashes)) {\n            return \"listingHashes: array expected\";\n          }\n          for (var i = 0; i < message.listingHashes.length; ++i) {\n            var error = $root.market.mass.IPFSAddress.verify(\n              message.listingHashes[i],\n            );\n            if (error) {\n              return \"listingHashes.\" + error;\n            }\n          }\n        }\n        if (message.ttl != null && message.hasOwnProperty(\"ttl\")) {\n          if (!$util.isString(message.ttl)) {\n            return \"ttl: string expected\";\n          }\n        }\n        if (\n          message.shopSignature != null &&\n          message.hasOwnProperty(\"shopSignature\")\n        ) {\n          var error = $root.market.mass.Signature.verify(message.shopSignature);\n          if (error) {\n            return \"shopSignature.\" + error;\n          }\n        }\n        if (\n          message.shippingRegion != null &&\n          message.hasOwnProperty(\"shippingRegion\")\n        ) {\n          var error = $root.market.mass.ShippingRegion.verify(\n            message.shippingRegion,\n          );\n          if (error) {\n            return \"shippingRegion.\" + error;\n          }\n        }\n        return null;\n      };\n\n      /**\n       * Creates a PaymentDetails message from a plain object. Also converts values to their respective internal types.\n       * @function fromObject\n       * @memberof market.mass.PaymentDetails\n       * @static\n       * @param {Object.<string,*>} object Plain object\n       * @returns {market.mass.PaymentDetails} PaymentDetails\n       */\n      PaymentDetails.fromObject = function fromObject(object) {\n        if (object instanceof $root.market.mass.PaymentDetails) {\n          return object;\n        }\n        var message = new $root.market.mass.PaymentDetails();\n        if (object.paymentId != null) {\n          if (typeof object.paymentId !== \"object\") {\n            throw TypeError(\n              \".market.mass.PaymentDetails.paymentId: object expected\",\n            );\n          }\n          message.paymentId = $root.market.mass.Hash.fromObject(\n            object.paymentId,\n          );\n        }\n        if (object.total != null) {\n          if (typeof object.total !== \"object\") {\n            throw TypeError(\n              \".market.mass.PaymentDetails.total: object expected\",\n            );\n          }\n          message.total = $root.market.mass.Uint256.fromObject(object.total);\n        }\n        if (object.listingHashes) {\n          if (!Array.isArray(object.listingHashes)) {\n            throw TypeError(\n              \".market.mass.PaymentDetails.listingHashes: array expected\",\n            );\n          }\n          message.listingHashes = [];\n          for (var i = 0; i < object.listingHashes.length; ++i) {\n            if (typeof object.listingHashes[i] !== \"object\") {\n              throw TypeError(\n                \".market.mass.PaymentDetails.listingHashes: object expected\",\n              );\n            }\n            message.listingHashes[i] = $root.market.mass.IPFSAddress.fromObject(\n              object.listingHashes[i],\n            );\n          }\n        }\n        if (object.ttl != null) {\n          message.ttl = String(object.ttl);\n        }\n        if (object.shopSignature != null) {\n          if (typeof object.shopSignature !== \"object\") {\n            throw TypeError(\n              \".market.mass.PaymentDetails.shopSignature: object expected\",\n            );\n          }\n          message.shopSignature = $root.market.mass.Signature.fromObject(\n            object.shopSignature,\n          );\n        }\n        if (object.shippingRegion != null) {\n          if (typeof object.shippingRegion !== \"object\") {\n            throw TypeError(\n              \".market.mass.PaymentDetails.shippingRegion: object expected\",\n            );\n          }\n          message.shippingRegion = $root.market.mass.ShippingRegion.fromObject(\n            object.shippingRegion,\n          );\n        }\n        return message;\n      };\n\n      /**\n       * Creates a plain object from a PaymentDetails message. Also converts values to other types if specified.\n       * @function toObject\n       * @memberof market.mass.PaymentDetails\n       * @static\n       * @param {market.mass.PaymentDetails} message PaymentDetails\n       * @param {$protobuf.IConversionOptions} [options] Conversion options\n       * @returns {Object.<string,*>} Plain object\n       */\n      PaymentDetails.toObject = function toObject(message, options) {\n        if (!options) {\n          options = {};\n        }\n        var object = {};\n        if (options.arrays || options.defaults) {\n          object.listingHashes = [];\n        }\n        if (options.defaults) {\n          object.paymentId = null;\n          object.total = null;\n          object.ttl = \"\";\n          object.shopSignature = null;\n          object.shippingRegion = null;\n        }\n        if (message.paymentId != null && message.hasOwnProperty(\"paymentId\")) {\n          object.paymentId = $root.market.mass.Hash.toObject(\n            message.paymentId,\n            options,\n          );\n        }\n        if (message.total != null && message.hasOwnProperty(\"total\")) {\n          object.total = $root.market.mass.Uint256.toObject(\n            message.total,\n            options,\n          );\n        }\n        if (message.listingHashes && message.listingHashes.length) {\n          object.listingHashes = [];\n          for (var j = 0; j < message.listingHashes.length; ++j) {\n            object.listingHashes[j] = $root.market.mass.IPFSAddress.toObject(\n              message.listingHashes[j],\n              options,\n            );\n          }\n        }\n        if (message.ttl != null && message.hasOwnProperty(\"ttl\")) {\n          object.ttl = message.ttl;\n        }\n        if (\n          message.shopSignature != null &&\n          message.hasOwnProperty(\"shopSignature\")\n        ) {\n          object.shopSignature = $root.market.mass.Signature.toObject(\n            message.shopSignature,\n            options,\n          );\n        }\n        if (\n          message.shippingRegion != null &&\n          message.hasOwnProperty(\"shippingRegion\")\n        ) {\n          object.shippingRegion = $root.market.mass.ShippingRegion.toObject(\n            message.shippingRegion,\n            options,\n          );\n        }\n        return object;\n      };\n\n      /**\n       * Converts this PaymentDetails to JSON.\n       * @function toJSON\n       * @memberof market.mass.PaymentDetails\n       * @instance\n       * @returns {Object.<string,*>} JSON object\n       */\n      PaymentDetails.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n      };\n\n      /**\n       * Gets the default type url for PaymentDetails\n       * @function getTypeUrl\n       * @memberof market.mass.PaymentDetails\n       * @static\n       * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n       * @returns {string} The default type url\n       */\n      PaymentDetails.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n        if (typeUrlPrefix === undefined) {\n          typeUrlPrefix = \"type.googleapis.com\";\n        }\n        return typeUrlPrefix + \"/market.mass.PaymentDetails\";\n      };\n\n      return PaymentDetails;\n    })();\n\n    mass.OrderTransaction = (function () {\n      /**\n       * Properties of an OrderTransaction.\n       * @memberof market.mass\n       * @interface IOrderTransaction\n       * @property {market.mass.IHash|null} [txHash] OrderTransaction txHash\n       * @property {market.mass.IHash|null} [blockHash] OrderTransaction blockHash\n       */\n\n      /**\n       * Constructs a new OrderTransaction.\n       * @memberof market.mass\n       * @classdesc Represents an OrderTransaction.\n       * @implements IOrderTransaction\n       * @constructor\n       * @param {market.mass.IOrderTransaction=} [properties] Properties to set\n       */\n      function OrderTransaction(properties) {\n        if (properties) {\n          for (\n            var keys = Object.keys(properties), i = 0;\n            i < keys.length;\n            ++i\n          ) {\n            if (properties[keys[i]] != null) {\n              this[keys[i]] = properties[keys[i]];\n            }\n          }\n        }\n      }\n\n      /**\n       * OrderTransaction txHash.\n       * @member {market.mass.IHash|null|undefined} txHash\n       * @memberof market.mass.OrderTransaction\n       * @instance\n       */\n      OrderTransaction.prototype.txHash = null;\n\n      /**\n       * OrderTransaction blockHash.\n       * @member {market.mass.IHash|null|undefined} blockHash\n       * @memberof market.mass.OrderTransaction\n       * @instance\n       */\n      OrderTransaction.prototype.blockHash = null;\n\n      /**\n       * Creates a new OrderTransaction instance using the specified properties.\n       * @function create\n       * @memberof market.mass.OrderTransaction\n       * @static\n       * @param {market.mass.IOrderTransaction=} [properties] Properties to set\n       * @returns {market.mass.OrderTransaction} OrderTransaction instance\n       */\n      OrderTransaction.create = function create(properties) {\n        return new OrderTransaction(properties);\n      };\n\n      /**\n       * Encodes the specified OrderTransaction message. Does not implicitly {@link market.mass.OrderTransaction.verify|verify} messages.\n       * @function encode\n       * @memberof market.mass.OrderTransaction\n       * @static\n       * @param {market.mass.IOrderTransaction} message OrderTransaction message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      OrderTransaction.encode = function encode(message, writer) {\n        if (!writer) {\n          writer = $Writer.create();\n        }\n        if (\n          message.txHash != null &&\n          Object.hasOwnProperty.call(message, \"txHash\")\n        ) {\n          $root.market.mass.Hash.encode(\n            message.txHash,\n            writer.uint32(/* id 1, wireType 2 =*/ 10).fork(),\n          ).ldelim();\n        }\n        if (\n          message.blockHash != null &&\n          Object.hasOwnProperty.call(message, \"blockHash\")\n        ) {\n          $root.market.mass.Hash.encode(\n            message.blockHash,\n            writer.uint32(/* id 2, wireType 2 =*/ 18).fork(),\n          ).ldelim();\n        }\n        return writer;\n      };\n\n      /**\n       * Encodes the specified OrderTransaction message, length delimited. Does not implicitly {@link market.mass.OrderTransaction.verify|verify} messages.\n       * @function encodeDelimited\n       * @memberof market.mass.OrderTransaction\n       * @static\n       * @param {market.mass.IOrderTransaction} message OrderTransaction message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      OrderTransaction.encodeDelimited = function encodeDelimited(\n        message,\n        writer,\n      ) {\n        return this.encode(message, writer).ldelim();\n      };\n\n      /**\n       * Decodes an OrderTransaction message from the specified reader or buffer.\n       * @function decode\n       * @memberof market.mass.OrderTransaction\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @param {number} [length] Message length if known beforehand\n       * @returns {market.mass.OrderTransaction} OrderTransaction\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      OrderTransaction.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader)) {\n          reader = $Reader.create(reader);\n        }\n        var end = length === undefined ? reader.len : reader.pos + length,\n          message = new $root.market.mass.OrderTransaction();\n        while (reader.pos < end) {\n          var tag = reader.uint32();\n          switch (tag >>> 3) {\n            case 1: {\n              message.txHash = $root.market.mass.Hash.decode(\n                reader,\n                reader.uint32(),\n              );\n              break;\n            }\n            case 2: {\n              message.blockHash = $root.market.mass.Hash.decode(\n                reader,\n                reader.uint32(),\n              );\n              break;\n            }\n            default:\n              reader.skipType(tag & 7);\n              break;\n          }\n        }\n        return message;\n      };\n\n      /**\n       * Decodes an OrderTransaction message from the specified reader or buffer, length delimited.\n       * @function decodeDelimited\n       * @memberof market.mass.OrderTransaction\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @returns {market.mass.OrderTransaction} OrderTransaction\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      OrderTransaction.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader)) {\n          reader = new $Reader(reader);\n        }\n        return this.decode(reader, reader.uint32());\n      };\n\n      /**\n       * Verifies an OrderTransaction message.\n       * @function verify\n       * @memberof market.mass.OrderTransaction\n       * @static\n       * @param {Object.<string,*>} message Plain object to verify\n       * @returns {string|null} `null` if valid, otherwise the reason why it is not\n       */\n      OrderTransaction.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null) {\n          return \"object expected\";\n        }\n        if (message.txHash != null && message.hasOwnProperty(\"txHash\")) {\n          var error = $root.market.mass.Hash.verify(message.txHash);\n          if (error) {\n            return \"txHash.\" + error;\n          }\n        }\n        if (message.blockHash != null && message.hasOwnProperty(\"blockHash\")) {\n          var error = $root.market.mass.Hash.verify(message.blockHash);\n          if (error) {\n            return \"blockHash.\" + error;\n          }\n        }\n        return null;\n      };\n\n      /**\n       * Creates an OrderTransaction message from a plain object. Also converts values to their respective internal types.\n       * @function fromObject\n       * @memberof market.mass.OrderTransaction\n       * @static\n       * @param {Object.<string,*>} object Plain object\n       * @returns {market.mass.OrderTransaction} OrderTransaction\n       */\n      OrderTransaction.fromObject = function fromObject(object) {\n        if (object instanceof $root.market.mass.OrderTransaction) {\n          return object;\n        }\n        var message = new $root.market.mass.OrderTransaction();\n        if (object.txHash != null) {\n          if (typeof object.txHash !== \"object\") {\n            throw TypeError(\n              \".market.mass.OrderTransaction.txHash: object expected\",\n            );\n          }\n          message.txHash = $root.market.mass.Hash.fromObject(object.txHash);\n        }\n        if (object.blockHash != null) {\n          if (typeof object.blockHash !== \"object\") {\n            throw TypeError(\n              \".market.mass.OrderTransaction.blockHash: object expected\",\n            );\n          }\n          message.blockHash = $root.market.mass.Hash.fromObject(\n            object.blockHash,\n          );\n        }\n        return message;\n      };\n\n      /**\n       * Creates a plain object from an OrderTransaction message. Also converts values to other types if specified.\n       * @function toObject\n       * @memberof market.mass.OrderTransaction\n       * @static\n       * @param {market.mass.OrderTransaction} message OrderTransaction\n       * @param {$protobuf.IConversionOptions} [options] Conversion options\n       * @returns {Object.<string,*>} Plain object\n       */\n      OrderTransaction.toObject = function toObject(message, options) {\n        if (!options) {\n          options = {};\n        }\n        var object = {};\n        if (options.defaults) {\n          object.txHash = null;\n          object.blockHash = null;\n        }\n        if (message.txHash != null && message.hasOwnProperty(\"txHash\")) {\n          object.txHash = $root.market.mass.Hash.toObject(\n            message.txHash,\n            options,\n          );\n        }\n        if (message.blockHash != null && message.hasOwnProperty(\"blockHash\")) {\n          object.blockHash = $root.market.mass.Hash.toObject(\n            message.blockHash,\n            options,\n          );\n        }\n        return object;\n      };\n\n      /**\n       * Converts this OrderTransaction to JSON.\n       * @function toJSON\n       * @memberof market.mass.OrderTransaction\n       * @instance\n       * @returns {Object.<string,*>} JSON object\n       */\n      OrderTransaction.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n      };\n\n      /**\n       * Gets the default type url for OrderTransaction\n       * @function getTypeUrl\n       * @memberof market.mass.OrderTransaction\n       * @static\n       * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n       * @returns {string} The default type url\n       */\n      OrderTransaction.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n        if (typeUrlPrefix === undefined) {\n          typeUrlPrefix = \"type.googleapis.com\";\n        }\n        return typeUrlPrefix + \"/market.mass.OrderTransaction\";\n      };\n\n      return OrderTransaction;\n    })();\n\n    mass.OrderedItem = (function () {\n      /**\n       * Properties of an OrderedItem.\n       * @memberof market.mass\n       * @interface IOrderedItem\n       * @property {market.mass.IObjectId|null} [listingId] OrderedItem listingId\n       * @property {Array.<market.mass.IObjectId>|null} [variationIds] OrderedItem variationIds\n       * @property {number|null} [quantity] OrderedItem quantity\n       */\n\n      /**\n       * Constructs a new OrderedItem.\n       * @memberof market.mass\n       * @classdesc Represents an OrderedItem.\n       * @implements IOrderedItem\n       * @constructor\n       * @param {market.mass.IOrderedItem=} [properties] Properties to set\n       */\n      function OrderedItem(properties) {\n        this.variationIds = [];\n        if (properties) {\n          for (\n            var keys = Object.keys(properties), i = 0;\n            i < keys.length;\n            ++i\n          ) {\n            if (properties[keys[i]] != null) {\n              this[keys[i]] = properties[keys[i]];\n            }\n          }\n        }\n      }\n\n      /**\n       * OrderedItem listingId.\n       * @member {market.mass.IObjectId|null|undefined} listingId\n       * @memberof market.mass.OrderedItem\n       * @instance\n       */\n      OrderedItem.prototype.listingId = null;\n\n      /**\n       * OrderedItem variationIds.\n       * @member {Array.<market.mass.IObjectId>} variationIds\n       * @memberof market.mass.OrderedItem\n       * @instance\n       */\n      OrderedItem.prototype.variationIds = $util.emptyArray;\n\n      /**\n       * OrderedItem quantity.\n       * @member {number} quantity\n       * @memberof market.mass.OrderedItem\n       * @instance\n       */\n      OrderedItem.prototype.quantity = 0;\n\n      /**\n       * Creates a new OrderedItem instance using the specified properties.\n       * @function create\n       * @memberof market.mass.OrderedItem\n       * @static\n       * @param {market.mass.IOrderedItem=} [properties] Properties to set\n       * @returns {market.mass.OrderedItem} OrderedItem instance\n       */\n      OrderedItem.create = function create(properties) {\n        return new OrderedItem(properties);\n      };\n\n      /**\n       * Encodes the specified OrderedItem message. Does not implicitly {@link market.mass.OrderedItem.verify|verify} messages.\n       * @function encode\n       * @memberof market.mass.OrderedItem\n       * @static\n       * @param {market.mass.IOrderedItem} message OrderedItem message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      OrderedItem.encode = function encode(message, writer) {\n        if (!writer) {\n          writer = $Writer.create();\n        }\n        if (\n          message.listingId != null &&\n          Object.hasOwnProperty.call(message, \"listingId\")\n        ) {\n          $root.market.mass.ObjectId.encode(\n            message.listingId,\n            writer.uint32(/* id 1, wireType 2 =*/ 10).fork(),\n          ).ldelim();\n        }\n        if (message.variationIds != null && message.variationIds.length) {\n          for (var i = 0; i < message.variationIds.length; ++i) {\n            $root.market.mass.ObjectId.encode(\n              message.variationIds[i],\n              writer.uint32(/* id 2, wireType 2 =*/ 18).fork(),\n            ).ldelim();\n          }\n        }\n        if (\n          message.quantity != null &&\n          Object.hasOwnProperty.call(message, \"quantity\")\n        ) {\n          writer.uint32(/* id 3, wireType 0 =*/ 24).uint32(message.quantity);\n        }\n        return writer;\n      };\n\n      /**\n       * Encodes the specified OrderedItem message, length delimited. Does not implicitly {@link market.mass.OrderedItem.verify|verify} messages.\n       * @function encodeDelimited\n       * @memberof market.mass.OrderedItem\n       * @static\n       * @param {market.mass.IOrderedItem} message OrderedItem message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      OrderedItem.encodeDelimited = function encodeDelimited(message, writer) {\n        return this.encode(message, writer).ldelim();\n      };\n\n      /**\n       * Decodes an OrderedItem message from the specified reader or buffer.\n       * @function decode\n       * @memberof market.mass.OrderedItem\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @param {number} [length] Message length if known beforehand\n       * @returns {market.mass.OrderedItem} OrderedItem\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      OrderedItem.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader)) {\n          reader = $Reader.create(reader);\n        }\n        var end = length === undefined ? reader.len : reader.pos + length,\n          message = new $root.market.mass.OrderedItem();\n        while (reader.pos < end) {\n          var tag = reader.uint32();\n          switch (tag >>> 3) {\n            case 1: {\n              message.listingId = $root.market.mass.ObjectId.decode(\n                reader,\n                reader.uint32(),\n              );\n              break;\n            }\n            case 2: {\n              if (!(message.variationIds && message.variationIds.length)) {\n                message.variationIds = [];\n              }\n              message.variationIds.push(\n                $root.market.mass.ObjectId.decode(reader, reader.uint32()),\n              );\n              break;\n            }\n            case 3: {\n              message.quantity = reader.uint32();\n              break;\n            }\n            default:\n              reader.skipType(tag & 7);\n              break;\n          }\n        }\n        return message;\n      };\n\n      /**\n       * Decodes an OrderedItem message from the specified reader or buffer, length delimited.\n       * @function decodeDelimited\n       * @memberof market.mass.OrderedItem\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @returns {market.mass.OrderedItem} OrderedItem\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      OrderedItem.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader)) {\n          reader = new $Reader(reader);\n        }\n        return this.decode(reader, reader.uint32());\n      };\n\n      /**\n       * Verifies an OrderedItem message.\n       * @function verify\n       * @memberof market.mass.OrderedItem\n       * @static\n       * @param {Object.<string,*>} message Plain object to verify\n       * @returns {string|null} `null` if valid, otherwise the reason why it is not\n       */\n      OrderedItem.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null) {\n          return \"object expected\";\n        }\n        if (message.listingId != null && message.hasOwnProperty(\"listingId\")) {\n          var error = $root.market.mass.ObjectId.verify(message.listingId);\n          if (error) {\n            return \"listingId.\" + error;\n          }\n        }\n        if (\n          message.variationIds != null && message.hasOwnProperty(\"variationIds\")\n        ) {\n          if (!Array.isArray(message.variationIds)) {\n            return \"variationIds: array expected\";\n          }\n          for (var i = 0; i < message.variationIds.length; ++i) {\n            var error = $root.market.mass.ObjectId.verify(\n              message.variationIds[i],\n            );\n            if (error) {\n              return \"variationIds.\" + error;\n            }\n          }\n        }\n        if (message.quantity != null && message.hasOwnProperty(\"quantity\")) {\n          if (!$util.isInteger(message.quantity)) {\n            return \"quantity: integer expected\";\n          }\n        }\n        return null;\n      };\n\n      /**\n       * Creates an OrderedItem message from a plain object. Also converts values to their respective internal types.\n       * @function fromObject\n       * @memberof market.mass.OrderedItem\n       * @static\n       * @param {Object.<string,*>} object Plain object\n       * @returns {market.mass.OrderedItem} OrderedItem\n       */\n      OrderedItem.fromObject = function fromObject(object) {\n        if (object instanceof $root.market.mass.OrderedItem) {\n          return object;\n        }\n        var message = new $root.market.mass.OrderedItem();\n        if (object.listingId != null) {\n          if (typeof object.listingId !== \"object\") {\n            throw TypeError(\n              \".market.mass.OrderedItem.listingId: object expected\",\n            );\n          }\n          message.listingId = $root.market.mass.ObjectId.fromObject(\n            object.listingId,\n          );\n        }\n        if (object.variationIds) {\n          if (!Array.isArray(object.variationIds)) {\n            throw TypeError(\n              \".market.mass.OrderedItem.variationIds: array expected\",\n            );\n          }\n          message.variationIds = [];\n          for (var i = 0; i < object.variationIds.length; ++i) {\n            if (typeof object.variationIds[i] !== \"object\") {\n              throw TypeError(\n                \".market.mass.OrderedItem.variationIds: object expected\",\n              );\n            }\n            message.variationIds[i] = $root.market.mass.ObjectId.fromObject(\n              object.variationIds[i],\n            );\n          }\n        }\n        if (object.quantity != null) {\n          message.quantity = object.quantity >>> 0;\n        }\n        return message;\n      };\n\n      /**\n       * Creates a plain object from an OrderedItem message. Also converts values to other types if specified.\n       * @function toObject\n       * @memberof market.mass.OrderedItem\n       * @static\n       * @param {market.mass.OrderedItem} message OrderedItem\n       * @param {$protobuf.IConversionOptions} [options] Conversion options\n       * @returns {Object.<string,*>} Plain object\n       */\n      OrderedItem.toObject = function toObject(message, options) {\n        if (!options) {\n          options = {};\n        }\n        var object = {};\n        if (options.arrays || options.defaults) {\n          object.variationIds = [];\n        }\n        if (options.defaults) {\n          object.listingId = null;\n          object.quantity = 0;\n        }\n        if (message.listingId != null && message.hasOwnProperty(\"listingId\")) {\n          object.listingId = $root.market.mass.ObjectId.toObject(\n            message.listingId,\n            options,\n          );\n        }\n        if (message.variationIds && message.variationIds.length) {\n          object.variationIds = [];\n          for (var j = 0; j < message.variationIds.length; ++j) {\n            object.variationIds[j] = $root.market.mass.ObjectId.toObject(\n              message.variationIds[j],\n              options,\n            );\n          }\n        }\n        if (message.quantity != null && message.hasOwnProperty(\"quantity\")) {\n          object.quantity = message.quantity;\n        }\n        return object;\n      };\n\n      /**\n       * Converts this OrderedItem to JSON.\n       * @function toJSON\n       * @memberof market.mass.OrderedItem\n       * @instance\n       * @returns {Object.<string,*>} JSON object\n       */\n      OrderedItem.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n      };\n\n      /**\n       * Gets the default type url for OrderedItem\n       * @function getTypeUrl\n       * @memberof market.mass.OrderedItem\n       * @static\n       * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n       * @returns {string} The default type url\n       */\n      OrderedItem.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n        if (typeUrlPrefix === undefined) {\n          typeUrlPrefix = \"type.googleapis.com\";\n        }\n        return typeUrlPrefix + \"/market.mass.OrderedItem\";\n      };\n\n      return OrderedItem;\n    })();\n\n    mass.Envelope = (function () {\n      /**\n       * Properties of an Envelope.\n       * @memberof market.mass\n       * @interface IEnvelope\n       * @property {market.mass.IRequestId|null} [requestId] Envelope requestId\n       * @property {market.mass.Envelope.IGenericResponse|null} [response] Envelope response\n       * @property {market.mass.IEventWriteRequest|null} [eventWriteRequest] Envelope eventWriteRequest\n       * @property {market.mass.ISubscriptionRequest|null} [subscriptionRequest] Envelope subscriptionRequest\n       * @property {market.mass.ISubscriptionCancelRequest|null} [subscriptionCancelRequest] Envelope subscriptionCancelRequest\n       * @property {market.mass.ISubscriptionPushRequest|null} [subscriptionPushRequest] Envelope subscriptionPushRequest\n       * @property {market.mass.ISyncStatusRequest|null} [syncStatusRequest] Envelope syncStatusRequest\n       * @property {market.mass.IPingRequest|null} [pingRequest] Envelope pingRequest\n       * @property {market.mass.IGetBlobUploadURLRequest|null} [getBlobUploadUrlRequest] Envelope getBlobUploadUrlRequest\n       * @property {market.mass.IAuthenticateRequest|null} [authRequest] Envelope authRequest\n       * @property {market.mass.IChallengeSolvedRequest|null} [challengeSolutionRequest] Envelope challengeSolutionRequest\n       */\n\n      /**\n       * Constructs a new Envelope.\n       * @memberof market.mass\n       * @classdesc Represents an Envelope.\n       * @implements IEnvelope\n       * @constructor\n       * @param {market.mass.IEnvelope=} [properties] Properties to set\n       */\n      function Envelope(properties) {\n        if (properties) {\n          for (\n            var keys = Object.keys(properties), i = 0;\n            i < keys.length;\n            ++i\n          ) {\n            if (properties[keys[i]] != null) {\n              this[keys[i]] = properties[keys[i]];\n            }\n          }\n        }\n      }\n\n      /**\n       * Envelope requestId.\n       * @member {market.mass.IRequestId|null|undefined} requestId\n       * @memberof market.mass.Envelope\n       * @instance\n       */\n      Envelope.prototype.requestId = null;\n\n      /**\n       * Envelope response.\n       * @member {market.mass.Envelope.IGenericResponse|null|undefined} response\n       * @memberof market.mass.Envelope\n       * @instance\n       */\n      Envelope.prototype.response = null;\n\n      /**\n       * Envelope eventWriteRequest.\n       * @member {market.mass.IEventWriteRequest|null|undefined} eventWriteRequest\n       * @memberof market.mass.Envelope\n       * @instance\n       */\n      Envelope.prototype.eventWriteRequest = null;\n\n      /**\n       * Envelope subscriptionRequest.\n       * @member {market.mass.ISubscriptionRequest|null|undefined} subscriptionRequest\n       * @memberof market.mass.Envelope\n       * @instance\n       */\n      Envelope.prototype.subscriptionRequest = null;\n\n      /**\n       * Envelope subscriptionCancelRequest.\n       * @member {market.mass.ISubscriptionCancelRequest|null|undefined} subscriptionCancelRequest\n       * @memberof market.mass.Envelope\n       * @instance\n       */\n      Envelope.prototype.subscriptionCancelRequest = null;\n\n      /**\n       * Envelope subscriptionPushRequest.\n       * @member {market.mass.ISubscriptionPushRequest|null|undefined} subscriptionPushRequest\n       * @memberof market.mass.Envelope\n       * @instance\n       */\n      Envelope.prototype.subscriptionPushRequest = null;\n\n      /**\n       * Envelope syncStatusRequest.\n       * @member {market.mass.ISyncStatusRequest|null|undefined} syncStatusRequest\n       * @memberof market.mass.Envelope\n       * @instance\n       */\n      Envelope.prototype.syncStatusRequest = null;\n\n      /**\n       * Envelope pingRequest.\n       * @member {market.mass.IPingRequest|null|undefined} pingRequest\n       * @memberof market.mass.Envelope\n       * @instance\n       */\n      Envelope.prototype.pingRequest = null;\n\n      /**\n       * Envelope getBlobUploadUrlRequest.\n       * @member {market.mass.IGetBlobUploadURLRequest|null|undefined} getBlobUploadUrlRequest\n       * @memberof market.mass.Envelope\n       * @instance\n       */\n      Envelope.prototype.getBlobUploadUrlRequest = null;\n\n      /**\n       * Envelope authRequest.\n       * @member {market.mass.IAuthenticateRequest|null|undefined} authRequest\n       * @memberof market.mass.Envelope\n       * @instance\n       */\n      Envelope.prototype.authRequest = null;\n\n      /**\n       * Envelope challengeSolutionRequest.\n       * @member {market.mass.IChallengeSolvedRequest|null|undefined} challengeSolutionRequest\n       * @memberof market.mass.Envelope\n       * @instance\n       */\n      Envelope.prototype.challengeSolutionRequest = null;\n\n      // OneOf field names bound to virtual getters and setters\n      var $oneOfFields;\n\n      /**\n       * Envelope message.\n       * @member {\"response\"|\"eventWriteRequest\"|\"subscriptionRequest\"|\"subscriptionCancelRequest\"|\"subscriptionPushRequest\"|\"syncStatusRequest\"|\"pingRequest\"|\"getBlobUploadUrlRequest\"|\"authRequest\"|\"challengeSolutionRequest\"|undefined} message\n       * @memberof market.mass.Envelope\n       * @instance\n       */\n      Object.defineProperty(Envelope.prototype, \"message\", {\n        get: $util.oneOfGetter(\n          $oneOfFields = [\n            \"response\",\n            \"eventWriteRequest\",\n            \"subscriptionRequest\",\n            \"subscriptionCancelRequest\",\n            \"subscriptionPushRequest\",\n            \"syncStatusRequest\",\n            \"pingRequest\",\n            \"getBlobUploadUrlRequest\",\n            \"authRequest\",\n            \"challengeSolutionRequest\",\n          ],\n        ),\n        set: $util.oneOfSetter($oneOfFields),\n      });\n\n      /**\n       * Creates a new Envelope instance using the specified properties.\n       * @function create\n       * @memberof market.mass.Envelope\n       * @static\n       * @param {market.mass.IEnvelope=} [properties] Properties to set\n       * @returns {market.mass.Envelope} Envelope instance\n       */\n      Envelope.create = function create(properties) {\n        return new Envelope(properties);\n      };\n\n      /**\n       * Encodes the specified Envelope message. Does not implicitly {@link market.mass.Envelope.verify|verify} messages.\n       * @function encode\n       * @memberof market.mass.Envelope\n       * @static\n       * @param {market.mass.IEnvelope} message Envelope message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      Envelope.encode = function encode(message, writer) {\n        if (!writer) {\n          writer = $Writer.create();\n        }\n        if (\n          message.requestId != null &&\n          Object.hasOwnProperty.call(message, \"requestId\")\n        ) {\n          $root.market.mass.RequestId.encode(\n            message.requestId,\n            writer.uint32(/* id 1, wireType 2 =*/ 10).fork(),\n          ).ldelim();\n        }\n        if (\n          message.response != null &&\n          Object.hasOwnProperty.call(message, \"response\")\n        ) {\n          $root.market.mass.Envelope.GenericResponse.encode(\n            message.response,\n            writer.uint32(/* id 2, wireType 2 =*/ 18).fork(),\n          ).ldelim();\n        }\n        if (\n          message.eventWriteRequest != null &&\n          Object.hasOwnProperty.call(message, \"eventWriteRequest\")\n        ) {\n          $root.market.mass.EventWriteRequest.encode(\n            message.eventWriteRequest,\n            writer.uint32(/* id 3, wireType 2 =*/ 26).fork(),\n          ).ldelim();\n        }\n        if (\n          message.subscriptionRequest != null &&\n          Object.hasOwnProperty.call(message, \"subscriptionRequest\")\n        ) {\n          $root.market.mass.SubscriptionRequest.encode(\n            message.subscriptionRequest,\n            writer.uint32(/* id 4, wireType 2 =*/ 34).fork(),\n          ).ldelim();\n        }\n        if (\n          message.subscriptionCancelRequest != null &&\n          Object.hasOwnProperty.call(message, \"subscriptionCancelRequest\")\n        ) {\n          $root.market.mass.SubscriptionCancelRequest.encode(\n            message.subscriptionCancelRequest,\n            writer.uint32(/* id 5, wireType 2 =*/ 42).fork(),\n          ).ldelim();\n        }\n        if (\n          message.subscriptionPushRequest != null &&\n          Object.hasOwnProperty.call(message, \"subscriptionPushRequest\")\n        ) {\n          $root.market.mass.SubscriptionPushRequest.encode(\n            message.subscriptionPushRequest,\n            writer.uint32(/* id 6, wireType 2 =*/ 50).fork(),\n          ).ldelim();\n        }\n        if (\n          message.syncStatusRequest != null &&\n          Object.hasOwnProperty.call(message, \"syncStatusRequest\")\n        ) {\n          $root.market.mass.SyncStatusRequest.encode(\n            message.syncStatusRequest,\n            writer.uint32(/* id 7, wireType 2 =*/ 58).fork(),\n          ).ldelim();\n        }\n        if (\n          message.pingRequest != null &&\n          Object.hasOwnProperty.call(message, \"pingRequest\")\n        ) {\n          $root.market.mass.PingRequest.encode(\n            message.pingRequest,\n            writer.uint32(/* id 8, wireType 2 =*/ 66).fork(),\n          ).ldelim();\n        }\n        if (\n          message.getBlobUploadUrlRequest != null &&\n          Object.hasOwnProperty.call(message, \"getBlobUploadUrlRequest\")\n        ) {\n          $root.market.mass.GetBlobUploadURLRequest.encode(\n            message.getBlobUploadUrlRequest,\n            writer.uint32(/* id 9, wireType 2 =*/ 74).fork(),\n          ).ldelim();\n        }\n        if (\n          message.authRequest != null &&\n          Object.hasOwnProperty.call(message, \"authRequest\")\n        ) {\n          $root.market.mass.AuthenticateRequest.encode(\n            message.authRequest,\n            writer.uint32(/* id 10, wireType 2 =*/ 82).fork(),\n          ).ldelim();\n        }\n        if (\n          message.challengeSolutionRequest != null &&\n          Object.hasOwnProperty.call(message, \"challengeSolutionRequest\")\n        ) {\n          $root.market.mass.ChallengeSolvedRequest.encode(\n            message.challengeSolutionRequest,\n            writer.uint32(/* id 11, wireType 2 =*/ 90).fork(),\n          ).ldelim();\n        }\n        return writer;\n      };\n\n      /**\n       * Encodes the specified Envelope message, length delimited. Does not implicitly {@link market.mass.Envelope.verify|verify} messages.\n       * @function encodeDelimited\n       * @memberof market.mass.Envelope\n       * @static\n       * @param {market.mass.IEnvelope} message Envelope message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      Envelope.encodeDelimited = function encodeDelimited(message, writer) {\n        return this.encode(message, writer).ldelim();\n      };\n\n      /**\n       * Decodes an Envelope message from the specified reader or buffer.\n       * @function decode\n       * @memberof market.mass.Envelope\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @param {number} [length] Message length if known beforehand\n       * @returns {market.mass.Envelope} Envelope\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      Envelope.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader)) {\n          reader = $Reader.create(reader);\n        }\n        var end = length === undefined ? reader.len : reader.pos + length,\n          message = new $root.market.mass.Envelope();\n        while (reader.pos < end) {\n          var tag = reader.uint32();\n          switch (tag >>> 3) {\n            case 1: {\n              message.requestId = $root.market.mass.RequestId.decode(\n                reader,\n                reader.uint32(),\n              );\n              break;\n            }\n            case 2: {\n              message.response = $root.market.mass.Envelope.GenericResponse\n                .decode(reader, reader.uint32());\n              break;\n            }\n            case 3: {\n              message.eventWriteRequest = $root.market.mass.EventWriteRequest\n                .decode(reader, reader.uint32());\n              break;\n            }\n            case 4: {\n              message.subscriptionRequest = $root.market.mass\n                .SubscriptionRequest.decode(reader, reader.uint32());\n              break;\n            }\n            case 5: {\n              message.subscriptionCancelRequest = $root.market.mass\n                .SubscriptionCancelRequest.decode(reader, reader.uint32());\n              break;\n            }\n            case 6: {\n              message.subscriptionPushRequest = $root.market.mass\n                .SubscriptionPushRequest.decode(reader, reader.uint32());\n              break;\n            }\n            case 7: {\n              message.syncStatusRequest = $root.market.mass.SyncStatusRequest\n                .decode(reader, reader.uint32());\n              break;\n            }\n            case 8: {\n              message.pingRequest = $root.market.mass.PingRequest.decode(\n                reader,\n                reader.uint32(),\n              );\n              break;\n            }\n            case 9: {\n              message.getBlobUploadUrlRequest = $root.market.mass\n                .GetBlobUploadURLRequest.decode(reader, reader.uint32());\n              break;\n            }\n            case 10: {\n              message.authRequest = $root.market.mass.AuthenticateRequest\n                .decode(reader, reader.uint32());\n              break;\n            }\n            case 11: {\n              message.challengeSolutionRequest = $root.market.mass\n                .ChallengeSolvedRequest.decode(reader, reader.uint32());\n              break;\n            }\n            default:\n              reader.skipType(tag & 7);\n              break;\n          }\n        }\n        return message;\n      };\n\n      /**\n       * Decodes an Envelope message from the specified reader or buffer, length delimited.\n       * @function decodeDelimited\n       * @memberof market.mass.Envelope\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @returns {market.mass.Envelope} Envelope\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      Envelope.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader)) {\n          reader = new $Reader(reader);\n        }\n        return this.decode(reader, reader.uint32());\n      };\n\n      /**\n       * Verifies an Envelope message.\n       * @function verify\n       * @memberof market.mass.Envelope\n       * @static\n       * @param {Object.<string,*>} message Plain object to verify\n       * @returns {string|null} `null` if valid, otherwise the reason why it is not\n       */\n      Envelope.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null) {\n          return \"object expected\";\n        }\n        var properties = {};\n        if (message.requestId != null && message.hasOwnProperty(\"requestId\")) {\n          var error = $root.market.mass.RequestId.verify(message.requestId);\n          if (error) {\n            return \"requestId.\" + error;\n          }\n        }\n        if (message.response != null && message.hasOwnProperty(\"response\")) {\n          properties.message = 1;\n          {\n            var error = $root.market.mass.Envelope.GenericResponse.verify(\n              message.response,\n            );\n            if (error) {\n              return \"response.\" + error;\n            }\n          }\n        }\n        if (\n          message.eventWriteRequest != null &&\n          message.hasOwnProperty(\"eventWriteRequest\")\n        ) {\n          if (properties.message === 1) {\n            return \"message: multiple values\";\n          }\n          properties.message = 1;\n          {\n            var error = $root.market.mass.EventWriteRequest.verify(\n              message.eventWriteRequest,\n            );\n            if (error) {\n              return \"eventWriteRequest.\" + error;\n            }\n          }\n        }\n        if (\n          message.subscriptionRequest != null &&\n          message.hasOwnProperty(\"subscriptionRequest\")\n        ) {\n          if (properties.message === 1) {\n            return \"message: multiple values\";\n          }\n          properties.message = 1;\n          {\n            var error = $root.market.mass.SubscriptionRequest.verify(\n              message.subscriptionRequest,\n            );\n            if (error) {\n              return \"subscriptionRequest.\" + error;\n            }\n          }\n        }\n        if (\n          message.subscriptionCancelRequest != null &&\n          message.hasOwnProperty(\"subscriptionCancelRequest\")\n        ) {\n          if (properties.message === 1) {\n            return \"message: multiple values\";\n          }\n          properties.message = 1;\n          {\n            var error = $root.market.mass.SubscriptionCancelRequest.verify(\n              message.subscriptionCancelRequest,\n            );\n            if (error) {\n              return \"subscriptionCancelRequest.\" + error;\n            }\n          }\n        }\n        if (\n          message.subscriptionPushRequest != null &&\n          message.hasOwnProperty(\"subscriptionPushRequest\")\n        ) {\n          if (properties.message === 1) {\n            return \"message: multiple values\";\n          }\n          properties.message = 1;\n          {\n            var error = $root.market.mass.SubscriptionPushRequest.verify(\n              message.subscriptionPushRequest,\n            );\n            if (error) {\n              return \"subscriptionPushRequest.\" + error;\n            }\n          }\n        }\n        if (\n          message.syncStatusRequest != null &&\n          message.hasOwnProperty(\"syncStatusRequest\")\n        ) {\n          if (properties.message === 1) {\n            return \"message: multiple values\";\n          }\n          properties.message = 1;\n          {\n            var error = $root.market.mass.SyncStatusRequest.verify(\n              message.syncStatusRequest,\n            );\n            if (error) {\n              return \"syncStatusRequest.\" + error;\n            }\n          }\n        }\n        if (\n          message.pingRequest != null && message.hasOwnProperty(\"pingRequest\")\n        ) {\n          if (properties.message === 1) {\n            return \"message: multiple values\";\n          }\n          properties.message = 1;\n          {\n            var error = $root.market.mass.PingRequest.verify(\n              message.pingRequest,\n            );\n            if (error) {\n              return \"pingRequest.\" + error;\n            }\n          }\n        }\n        if (\n          message.getBlobUploadUrlRequest != null &&\n          message.hasOwnProperty(\"getBlobUploadUrlRequest\")\n        ) {\n          if (properties.message === 1) {\n            return \"message: multiple values\";\n          }\n          properties.message = 1;\n          {\n            var error = $root.market.mass.GetBlobUploadURLRequest.verify(\n              message.getBlobUploadUrlRequest,\n            );\n            if (error) {\n              return \"getBlobUploadUrlRequest.\" + error;\n            }\n          }\n        }\n        if (\n          message.authRequest != null && message.hasOwnProperty(\"authRequest\")\n        ) {\n          if (properties.message === 1) {\n            return \"message: multiple values\";\n          }\n          properties.message = 1;\n          {\n            var error = $root.market.mass.AuthenticateRequest.verify(\n              message.authRequest,\n            );\n            if (error) {\n              return \"authRequest.\" + error;\n            }\n          }\n        }\n        if (\n          message.challengeSolutionRequest != null &&\n          message.hasOwnProperty(\"challengeSolutionRequest\")\n        ) {\n          if (properties.message === 1) {\n            return \"message: multiple values\";\n          }\n          properties.message = 1;\n          {\n            var error = $root.market.mass.ChallengeSolvedRequest.verify(\n              message.challengeSolutionRequest,\n            );\n            if (error) {\n              return \"challengeSolutionRequest.\" + error;\n            }\n          }\n        }\n        return null;\n      };\n\n      /**\n       * Creates an Envelope message from a plain object. Also converts values to their respective internal types.\n       * @function fromObject\n       * @memberof market.mass.Envelope\n       * @static\n       * @param {Object.<string,*>} object Plain object\n       * @returns {market.mass.Envelope} Envelope\n       */\n      Envelope.fromObject = function fromObject(object) {\n        if (object instanceof $root.market.mass.Envelope) {\n          return object;\n        }\n        var message = new $root.market.mass.Envelope();\n        if (object.requestId != null) {\n          if (typeof object.requestId !== \"object\") {\n            throw TypeError(\".market.mass.Envelope.requestId: object expected\");\n          }\n          message.requestId = $root.market.mass.RequestId.fromObject(\n            object.requestId,\n          );\n        }\n        if (object.response != null) {\n          if (typeof object.response !== \"object\") {\n            throw TypeError(\".market.mass.Envelope.response: object expected\");\n          }\n          message.response = $root.market.mass.Envelope.GenericResponse\n            .fromObject(object.response);\n        }\n        if (object.eventWriteRequest != null) {\n          if (typeof object.eventWriteRequest !== \"object\") {\n            throw TypeError(\n              \".market.mass.Envelope.eventWriteRequest: object expected\",\n            );\n          }\n          message.eventWriteRequest = $root.market.mass.EventWriteRequest\n            .fromObject(object.eventWriteRequest);\n        }\n        if (object.subscriptionRequest != null) {\n          if (typeof object.subscriptionRequest !== \"object\") {\n            throw TypeError(\n              \".market.mass.Envelope.subscriptionRequest: object expected\",\n            );\n          }\n          message.subscriptionRequest = $root.market.mass.SubscriptionRequest\n            .fromObject(object.subscriptionRequest);\n        }\n        if (object.subscriptionCancelRequest != null) {\n          if (typeof object.subscriptionCancelRequest !== \"object\") {\n            throw TypeError(\n              \".market.mass.Envelope.subscriptionCancelRequest: object expected\",\n            );\n          }\n          message.subscriptionCancelRequest = $root.market.mass\n            .SubscriptionCancelRequest.fromObject(\n              object.subscriptionCancelRequest,\n            );\n        }\n        if (object.subscriptionPushRequest != null) {\n          if (typeof object.subscriptionPushRequest !== \"object\") {\n            throw TypeError(\n              \".market.mass.Envelope.subscriptionPushRequest: object expected\",\n            );\n          }\n          message.subscriptionPushRequest = $root.market.mass\n            .SubscriptionPushRequest.fromObject(object.subscriptionPushRequest);\n        }\n        if (object.syncStatusRequest != null) {\n          if (typeof object.syncStatusRequest !== \"object\") {\n            throw TypeError(\n              \".market.mass.Envelope.syncStatusRequest: object expected\",\n            );\n          }\n          message.syncStatusRequest = $root.market.mass.SyncStatusRequest\n            .fromObject(object.syncStatusRequest);\n        }\n        if (object.pingRequest != null) {\n          if (typeof object.pingRequest !== \"object\") {\n            throw TypeError(\n              \".market.mass.Envelope.pingRequest: object expected\",\n            );\n          }\n          message.pingRequest = $root.market.mass.PingRequest.fromObject(\n            object.pingRequest,\n          );\n        }\n        if (object.getBlobUploadUrlRequest != null) {\n          if (typeof object.getBlobUploadUrlRequest !== \"object\") {\n            throw TypeError(\n              \".market.mass.Envelope.getBlobUploadUrlRequest: object expected\",\n            );\n          }\n          message.getBlobUploadUrlRequest = $root.market.mass\n            .GetBlobUploadURLRequest.fromObject(object.getBlobUploadUrlRequest);\n        }\n        if (object.authRequest != null) {\n          if (typeof object.authRequest !== \"object\") {\n            throw TypeError(\n              \".market.mass.Envelope.authRequest: object expected\",\n            );\n          }\n          message.authRequest = $root.market.mass.AuthenticateRequest\n            .fromObject(object.authRequest);\n        }\n        if (object.challengeSolutionRequest != null) {\n          if (typeof object.challengeSolutionRequest !== \"object\") {\n            throw TypeError(\n              \".market.mass.Envelope.challengeSolutionRequest: object expected\",\n            );\n          }\n          message.challengeSolutionRequest = $root.market.mass\n            .ChallengeSolvedRequest.fromObject(object.challengeSolutionRequest);\n        }\n        return message;\n      };\n\n      /**\n       * Creates a plain object from an Envelope message. Also converts values to other types if specified.\n       * @function toObject\n       * @memberof market.mass.Envelope\n       * @static\n       * @param {market.mass.Envelope} message Envelope\n       * @param {$protobuf.IConversionOptions} [options] Conversion options\n       * @returns {Object.<string,*>} Plain object\n       */\n      Envelope.toObject = function toObject(message, options) {\n        if (!options) {\n          options = {};\n        }\n        var object = {};\n        if (options.defaults) {\n          object.requestId = null;\n        }\n        if (message.requestId != null && message.hasOwnProperty(\"requestId\")) {\n          object.requestId = $root.market.mass.RequestId.toObject(\n            message.requestId,\n            options,\n          );\n        }\n        if (message.response != null && message.hasOwnProperty(\"response\")) {\n          object.response = $root.market.mass.Envelope.GenericResponse.toObject(\n            message.response,\n            options,\n          );\n          if (options.oneofs) {\n            object.message = \"response\";\n          }\n        }\n        if (\n          message.eventWriteRequest != null &&\n          message.hasOwnProperty(\"eventWriteRequest\")\n        ) {\n          object.eventWriteRequest = $root.market.mass.EventWriteRequest\n            .toObject(message.eventWriteRequest, options);\n          if (options.oneofs) {\n            object.message = \"eventWriteRequest\";\n          }\n        }\n        if (\n          message.subscriptionRequest != null &&\n          message.hasOwnProperty(\"subscriptionRequest\")\n        ) {\n          object.subscriptionRequest = $root.market.mass.SubscriptionRequest\n            .toObject(message.subscriptionRequest, options);\n          if (options.oneofs) {\n            object.message = \"subscriptionRequest\";\n          }\n        }\n        if (\n          message.subscriptionCancelRequest != null &&\n          message.hasOwnProperty(\"subscriptionCancelRequest\")\n        ) {\n          object.subscriptionCancelRequest = $root.market.mass\n            .SubscriptionCancelRequest.toObject(\n              message.subscriptionCancelRequest,\n              options,\n            );\n          if (options.oneofs) {\n            object.message = \"subscriptionCancelRequest\";\n          }\n        }\n        if (\n          message.subscriptionPushRequest != null &&\n          message.hasOwnProperty(\"subscriptionPushRequest\")\n        ) {\n          object.subscriptionPushRequest = $root.market.mass\n            .SubscriptionPushRequest.toObject(\n              message.subscriptionPushRequest,\n              options,\n            );\n          if (options.oneofs) {\n            object.message = \"subscriptionPushRequest\";\n          }\n        }\n        if (\n          message.syncStatusRequest != null &&\n          message.hasOwnProperty(\"syncStatusRequest\")\n        ) {\n          object.syncStatusRequest = $root.market.mass.SyncStatusRequest\n            .toObject(message.syncStatusRequest, options);\n          if (options.oneofs) {\n            object.message = \"syncStatusRequest\";\n          }\n        }\n        if (\n          message.pingRequest != null && message.hasOwnProperty(\"pingRequest\")\n        ) {\n          object.pingRequest = $root.market.mass.PingRequest.toObject(\n            message.pingRequest,\n            options,\n          );\n          if (options.oneofs) {\n            object.message = \"pingRequest\";\n          }\n        }\n        if (\n          message.getBlobUploadUrlRequest != null &&\n          message.hasOwnProperty(\"getBlobUploadUrlRequest\")\n        ) {\n          object.getBlobUploadUrlRequest = $root.market.mass\n            .GetBlobUploadURLRequest.toObject(\n              message.getBlobUploadUrlRequest,\n              options,\n            );\n          if (options.oneofs) {\n            object.message = \"getBlobUploadUrlRequest\";\n          }\n        }\n        if (\n          message.authRequest != null && message.hasOwnProperty(\"authRequest\")\n        ) {\n          object.authRequest = $root.market.mass.AuthenticateRequest.toObject(\n            message.authRequest,\n            options,\n          );\n          if (options.oneofs) {\n            object.message = \"authRequest\";\n          }\n        }\n        if (\n          message.challengeSolutionRequest != null &&\n          message.hasOwnProperty(\"challengeSolutionRequest\")\n        ) {\n          object.challengeSolutionRequest = $root.market.mass\n            .ChallengeSolvedRequest.toObject(\n              message.challengeSolutionRequest,\n              options,\n            );\n          if (options.oneofs) {\n            object.message = \"challengeSolutionRequest\";\n          }\n        }\n        return object;\n      };\n\n      /**\n       * Converts this Envelope to JSON.\n       * @function toJSON\n       * @memberof market.mass.Envelope\n       * @instance\n       * @returns {Object.<string,*>} JSON object\n       */\n      Envelope.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n      };\n\n      /**\n       * Gets the default type url for Envelope\n       * @function getTypeUrl\n       * @memberof market.mass.Envelope\n       * @static\n       * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n       * @returns {string} The default type url\n       */\n      Envelope.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n        if (typeUrlPrefix === undefined) {\n          typeUrlPrefix = \"type.googleapis.com\";\n        }\n        return typeUrlPrefix + \"/market.mass.Envelope\";\n      };\n\n      Envelope.GenericResponse = (function () {\n        /**\n         * Properties of a GenericResponse.\n         * @memberof market.mass.Envelope\n         * @interface IGenericResponse\n         * @property {market.mass.IError|null} [error] GenericResponse error\n         * @property {Uint8Array|null} [payload] GenericResponse payload\n         */\n\n        /**\n         * Constructs a new GenericResponse.\n         * @memberof market.mass.Envelope\n         * @classdesc Represents a GenericResponse.\n         * @implements IGenericResponse\n         * @constructor\n         * @param {market.mass.Envelope.IGenericResponse=} [properties] Properties to set\n         */\n        function GenericResponse(properties) {\n          if (properties) {\n            for (\n              var keys = Object.keys(properties), i = 0;\n              i < keys.length;\n              ++i\n            ) {\n              if (properties[keys[i]] != null) {\n                this[keys[i]] = properties[keys[i]];\n              }\n            }\n          }\n        }\n\n        /**\n         * GenericResponse error.\n         * @member {market.mass.IError|null|undefined} error\n         * @memberof market.mass.Envelope.GenericResponse\n         * @instance\n         */\n        GenericResponse.prototype.error = null;\n\n        /**\n         * GenericResponse payload.\n         * @member {Uint8Array|null|undefined} payload\n         * @memberof market.mass.Envelope.GenericResponse\n         * @instance\n         */\n        GenericResponse.prototype.payload = null;\n\n        // OneOf field names bound to virtual getters and setters\n        var $oneOfFields;\n\n        /**\n         * GenericResponse response.\n         * @member {\"error\"|\"payload\"|undefined} response\n         * @memberof market.mass.Envelope.GenericResponse\n         * @instance\n         */\n        Object.defineProperty(GenericResponse.prototype, \"response\", {\n          get: $util.oneOfGetter($oneOfFields = [\"error\", \"payload\"]),\n          set: $util.oneOfSetter($oneOfFields),\n        });\n\n        /**\n         * Creates a new GenericResponse instance using the specified properties.\n         * @function create\n         * @memberof market.mass.Envelope.GenericResponse\n         * @static\n         * @param {market.mass.Envelope.IGenericResponse=} [properties] Properties to set\n         * @returns {market.mass.Envelope.GenericResponse} GenericResponse instance\n         */\n        GenericResponse.create = function create(properties) {\n          return new GenericResponse(properties);\n        };\n\n        /**\n         * Encodes the specified GenericResponse message. Does not implicitly {@link market.mass.Envelope.GenericResponse.verify|verify} messages.\n         * @function encode\n         * @memberof market.mass.Envelope.GenericResponse\n         * @static\n         * @param {market.mass.Envelope.IGenericResponse} message GenericResponse message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        GenericResponse.encode = function encode(message, writer) {\n          if (!writer) {\n            writer = $Writer.create();\n          }\n          if (\n            message.error != null &&\n            Object.hasOwnProperty.call(message, \"error\")\n          ) {\n            $root.market.mass.Error.encode(\n              message.error,\n              writer.uint32(/* id 1, wireType 2 =*/ 10).fork(),\n            ).ldelim();\n          }\n          if (\n            message.payload != null &&\n            Object.hasOwnProperty.call(message, \"payload\")\n          ) {\n            writer.uint32(/* id 2, wireType 2 =*/ 18).bytes(message.payload);\n          }\n          return writer;\n        };\n\n        /**\n         * Encodes the specified GenericResponse message, length delimited. Does not implicitly {@link market.mass.Envelope.GenericResponse.verify|verify} messages.\n         * @function encodeDelimited\n         * @memberof market.mass.Envelope.GenericResponse\n         * @static\n         * @param {market.mass.Envelope.IGenericResponse} message GenericResponse message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        GenericResponse.encodeDelimited = function encodeDelimited(\n          message,\n          writer,\n        ) {\n          return this.encode(message, writer).ldelim();\n        };\n\n        /**\n         * Decodes a GenericResponse message from the specified reader or buffer.\n         * @function decode\n         * @memberof market.mass.Envelope.GenericResponse\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @param {number} [length] Message length if known beforehand\n         * @returns {market.mass.Envelope.GenericResponse} GenericResponse\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        GenericResponse.decode = function decode(reader, length) {\n          if (!(reader instanceof $Reader)) {\n            reader = $Reader.create(reader);\n          }\n          var end = length === undefined ? reader.len : reader.pos + length,\n            message = new $root.market.mass.Envelope.GenericResponse();\n          while (reader.pos < end) {\n            var tag = reader.uint32();\n            switch (tag >>> 3) {\n              case 1: {\n                message.error = $root.market.mass.Error.decode(\n                  reader,\n                  reader.uint32(),\n                );\n                break;\n              }\n              case 2: {\n                message.payload = reader.bytes();\n                break;\n              }\n              default:\n                reader.skipType(tag & 7);\n                break;\n            }\n          }\n          return message;\n        };\n\n        /**\n         * Decodes a GenericResponse message from the specified reader or buffer, length delimited.\n         * @function decodeDelimited\n         * @memberof market.mass.Envelope.GenericResponse\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @returns {market.mass.Envelope.GenericResponse} GenericResponse\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        GenericResponse.decodeDelimited = function decodeDelimited(reader) {\n          if (!(reader instanceof $Reader)) {\n            reader = new $Reader(reader);\n          }\n          return this.decode(reader, reader.uint32());\n        };\n\n        /**\n         * Verifies a GenericResponse message.\n         * @function verify\n         * @memberof market.mass.Envelope.GenericResponse\n         * @static\n         * @param {Object.<string,*>} message Plain object to verify\n         * @returns {string|null} `null` if valid, otherwise the reason why it is not\n         */\n        GenericResponse.verify = function verify(message) {\n          if (typeof message !== \"object\" || message === null) {\n            return \"object expected\";\n          }\n          var properties = {};\n          if (message.error != null && message.hasOwnProperty(\"error\")) {\n            properties.response = 1;\n            {\n              var error = $root.market.mass.Error.verify(message.error);\n              if (error) {\n                return \"error.\" + error;\n              }\n            }\n          }\n          if (message.payload != null && message.hasOwnProperty(\"payload\")) {\n            if (properties.response === 1) {\n              return \"response: multiple values\";\n            }\n            properties.response = 1;\n            if (\n              !(message.payload && typeof message.payload.length === \"number\" ||\n                $util.isString(message.payload))\n            ) {\n              return \"payload: buffer expected\";\n            }\n          }\n          return null;\n        };\n\n        /**\n         * Creates a GenericResponse message from a plain object. Also converts values to their respective internal types.\n         * @function fromObject\n         * @memberof market.mass.Envelope.GenericResponse\n         * @static\n         * @param {Object.<string,*>} object Plain object\n         * @returns {market.mass.Envelope.GenericResponse} GenericResponse\n         */\n        GenericResponse.fromObject = function fromObject(object) {\n          if (object instanceof $root.market.mass.Envelope.GenericResponse) {\n            return object;\n          }\n          var message = new $root.market.mass.Envelope.GenericResponse();\n          if (object.error != null) {\n            if (typeof object.error !== \"object\") {\n              throw TypeError(\n                \".market.mass.Envelope.GenericResponse.error: object expected\",\n              );\n            }\n            message.error = $root.market.mass.Error.fromObject(object.error);\n          }\n          if (object.payload != null) {\n            if (typeof object.payload === \"string\") {\n              $util.base64.decode(\n                object.payload,\n                message.payload = $util.newBuffer(\n                  $util.base64.length(object.payload),\n                ),\n                0,\n              );\n            } else if (object.payload.length >= 0) {\n              message.payload = object.payload;\n            }\n          }\n          return message;\n        };\n\n        /**\n         * Creates a plain object from a GenericResponse message. Also converts values to other types if specified.\n         * @function toObject\n         * @memberof market.mass.Envelope.GenericResponse\n         * @static\n         * @param {market.mass.Envelope.GenericResponse} message GenericResponse\n         * @param {$protobuf.IConversionOptions} [options] Conversion options\n         * @returns {Object.<string,*>} Plain object\n         */\n        GenericResponse.toObject = function toObject(message, options) {\n          if (!options) {\n            options = {};\n          }\n          var object = {};\n          if (message.error != null && message.hasOwnProperty(\"error\")) {\n            object.error = $root.market.mass.Error.toObject(\n              message.error,\n              options,\n            );\n            if (options.oneofs) {\n              object.response = \"error\";\n            }\n          }\n          if (message.payload != null && message.hasOwnProperty(\"payload\")) {\n            object.payload = options.bytes === String\n              ? $util.base64.encode(message.payload, 0, message.payload.length)\n              : options.bytes === Array\n              ? Array.prototype.slice.call(message.payload)\n              : message.payload;\n            if (options.oneofs) {\n              object.response = \"payload\";\n            }\n          }\n          return object;\n        };\n\n        /**\n         * Converts this GenericResponse to JSON.\n         * @function toJSON\n         * @memberof market.mass.Envelope.GenericResponse\n         * @instance\n         * @returns {Object.<string,*>} JSON object\n         */\n        GenericResponse.prototype.toJSON = function toJSON() {\n          return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n        };\n\n        /**\n         * Gets the default type url for GenericResponse\n         * @function getTypeUrl\n         * @memberof market.mass.Envelope.GenericResponse\n         * @static\n         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n         * @returns {string} The default type url\n         */\n        GenericResponse.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n          if (typeUrlPrefix === undefined) {\n            typeUrlPrefix = \"type.googleapis.com\";\n          }\n          return typeUrlPrefix + \"/market.mass.Envelope.GenericResponse\";\n        };\n\n        return GenericResponse;\n      })();\n\n      return Envelope;\n    })();\n\n    mass.Error = (function () {\n      /**\n       * Properties of an Error.\n       * @memberof market.mass\n       * @interface IError\n       * @property {market.mass.ErrorCodes|null} [code] Error code\n       * @property {string|null} [message] Error message\n       */\n\n      /**\n       * Constructs a new Error.\n       * @memberof market.mass\n       * @classdesc Represents an Error.\n       * @implements IError\n       * @constructor\n       * @param {market.mass.IError=} [properties] Properties to set\n       */\n      function Error(properties) {\n        if (properties) {\n          for (\n            var keys = Object.keys(properties), i = 0;\n            i < keys.length;\n            ++i\n          ) {\n            if (properties[keys[i]] != null) {\n              this[keys[i]] = properties[keys[i]];\n            }\n          }\n        }\n      }\n\n      /**\n       * Error code.\n       * @member {market.mass.ErrorCodes} code\n       * @memberof market.mass.Error\n       * @instance\n       */\n      Error.prototype.code = 0;\n\n      /**\n       * Error message.\n       * @member {string} message\n       * @memberof market.mass.Error\n       * @instance\n       */\n      Error.prototype.message = \"\";\n\n      /**\n       * Creates a new Error instance using the specified properties.\n       * @function create\n       * @memberof market.mass.Error\n       * @static\n       * @param {market.mass.IError=} [properties] Properties to set\n       * @returns {market.mass.Error} Error instance\n       */\n      Error.create = function create(properties) {\n        return new Error(properties);\n      };\n\n      /**\n       * Encodes the specified Error message. Does not implicitly {@link market.mass.Error.verify|verify} messages.\n       * @function encode\n       * @memberof market.mass.Error\n       * @static\n       * @param {market.mass.IError} message Error message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      Error.encode = function encode(message, writer) {\n        if (!writer) {\n          writer = $Writer.create();\n        }\n        if (\n          message.code != null && Object.hasOwnProperty.call(message, \"code\")\n        ) {\n          writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.code);\n        }\n        if (\n          message.message != null &&\n          Object.hasOwnProperty.call(message, \"message\")\n        ) {\n          writer.uint32(/* id 2, wireType 2 =*/ 18).string(message.message);\n        }\n        return writer;\n      };\n\n      /**\n       * Encodes the specified Error message, length delimited. Does not implicitly {@link market.mass.Error.verify|verify} messages.\n       * @function encodeDelimited\n       * @memberof market.mass.Error\n       * @static\n       * @param {market.mass.IError} message Error message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      Error.encodeDelimited = function encodeDelimited(message, writer) {\n        return this.encode(message, writer).ldelim();\n      };\n\n      /**\n       * Decodes an Error message from the specified reader or buffer.\n       * @function decode\n       * @memberof market.mass.Error\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @param {number} [length] Message length if known beforehand\n       * @returns {market.mass.Error} Error\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      Error.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader)) {\n          reader = $Reader.create(reader);\n        }\n        var end = length === undefined ? reader.len : reader.pos + length,\n          message = new $root.market.mass.Error();\n        while (reader.pos < end) {\n          var tag = reader.uint32();\n          switch (tag >>> 3) {\n            case 1: {\n              message.code = reader.int32();\n              break;\n            }\n            case 2: {\n              message.message = reader.string();\n              break;\n            }\n            default:\n              reader.skipType(tag & 7);\n              break;\n          }\n        }\n        return message;\n      };\n\n      /**\n       * Decodes an Error message from the specified reader or buffer, length delimited.\n       * @function decodeDelimited\n       * @memberof market.mass.Error\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @returns {market.mass.Error} Error\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      Error.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader)) {\n          reader = new $Reader(reader);\n        }\n        return this.decode(reader, reader.uint32());\n      };\n\n      /**\n       * Verifies an Error message.\n       * @function verify\n       * @memberof market.mass.Error\n       * @static\n       * @param {Object.<string,*>} message Plain object to verify\n       * @returns {string|null} `null` if valid, otherwise the reason why it is not\n       */\n      Error.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null) {\n          return \"object expected\";\n        }\n        if (message.code != null && message.hasOwnProperty(\"code\")) {\n          switch (message.code) {\n            default:\n              return \"code: enum value expected\";\n            case 0:\n            case 1:\n            case 2:\n            case 3:\n            case 4:\n            case 5:\n            case 6:\n            case 7:\n            case 8:\n            case 9:\n            case 10:\n            case 11:\n              break;\n          }\n        }\n        if (message.message != null && message.hasOwnProperty(\"message\")) {\n          if (!$util.isString(message.message)) {\n            return \"message: string expected\";\n          }\n        }\n        return null;\n      };\n\n      /**\n       * Creates an Error message from a plain object. Also converts values to their respective internal types.\n       * @function fromObject\n       * @memberof market.mass.Error\n       * @static\n       * @param {Object.<string,*>} object Plain object\n       * @returns {market.mass.Error} Error\n       */\n      Error.fromObject = function fromObject(object) {\n        if (object instanceof $root.market.mass.Error) {\n          return object;\n        }\n        var message = new $root.market.mass.Error();\n        switch (object.code) {\n          default:\n            if (typeof object.code === \"number\") {\n              message.code = object.code;\n              break;\n            }\n            break;\n          case \"ERROR_CODES_UNSPECIFIED\":\n          case 0:\n            message.code = 0;\n            break;\n          case \"ERROR_CODES_NOT_FOUND\":\n          case 1:\n            message.code = 1;\n            break;\n          case \"ERROR_CODES_INVALID\":\n          case 2:\n            message.code = 2;\n            break;\n          case \"ERROR_CODES_NOT_AUTHENTICATED\":\n          case 3:\n            message.code = 3;\n            break;\n          case \"ERROR_CODES_ALREADY_AUTHENTICATED\":\n          case 4:\n            message.code = 4;\n            break;\n          case \"ERROR_CODES_ALREADY_CONNECTED\":\n          case 5:\n            message.code = 5;\n            break;\n          case \"ERROR_CODES_TOO_MANY_CONCURRENT_REQUESTS\":\n          case 6:\n            message.code = 6;\n            break;\n          case \"ERROR_CODES_UNLINKED_KEYCARD\":\n          case 7:\n            message.code = 7;\n            break;\n          case \"ERROR_CODES_MINUMUM_VERSION_NOT_REACHED\":\n          case 8:\n            message.code = 8;\n            break;\n          case \"ERROR_CODES_OUT_OF_STOCK\":\n          case 9:\n            message.code = 9;\n            break;\n          case \"ERROR_CODES_SIMULATED\":\n          case 10:\n            message.code = 10;\n            break;\n          case \"ERROR_CODES_CLOSE_SUBSCRIPTION\":\n          case 11:\n            message.code = 11;\n            break;\n        }\n        if (object.message != null) {\n          message.message = String(object.message);\n        }\n        return message;\n      };\n\n      /**\n       * Creates a plain object from an Error message. Also converts values to other types if specified.\n       * @function toObject\n       * @memberof market.mass.Error\n       * @static\n       * @param {market.mass.Error} message Error\n       * @param {$protobuf.IConversionOptions} [options] Conversion options\n       * @returns {Object.<string,*>} Plain object\n       */\n      Error.toObject = function toObject(message, options) {\n        if (!options) {\n          options = {};\n        }\n        var object = {};\n        if (options.defaults) {\n          object.code = options.enums === String\n            ? \"ERROR_CODES_UNSPECIFIED\"\n            : 0;\n          object.message = \"\";\n        }\n        if (message.code != null && message.hasOwnProperty(\"code\")) {\n          object.code = options.enums === String\n            ? $root.market.mass.ErrorCodes[message.code] === undefined\n              ? message.code\n              : $root.market.mass.ErrorCodes[message.code]\n            : message.code;\n        }\n        if (message.message != null && message.hasOwnProperty(\"message\")) {\n          object.message = message.message;\n        }\n        return object;\n      };\n\n      /**\n       * Converts this Error to JSON.\n       * @function toJSON\n       * @memberof market.mass.Error\n       * @instance\n       * @returns {Object.<string,*>} JSON object\n       */\n      Error.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n      };\n\n      /**\n       * Gets the default type url for Error\n       * @function getTypeUrl\n       * @memberof market.mass.Error\n       * @static\n       * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n       * @returns {string} The default type url\n       */\n      Error.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n        if (typeUrlPrefix === undefined) {\n          typeUrlPrefix = \"type.googleapis.com\";\n        }\n        return typeUrlPrefix + \"/market.mass.Error\";\n      };\n\n      return Error;\n    })();\n\n    /**\n     * ErrorCodes enum.\n     * @name market.mass.ErrorCodes\n     * @enum {number}\n     * @property {number} ERROR_CODES_UNSPECIFIED=0 ERROR_CODES_UNSPECIFIED value\n     * @property {number} ERROR_CODES_NOT_FOUND=1 ERROR_CODES_NOT_FOUND value\n     * @property {number} ERROR_CODES_INVALID=2 ERROR_CODES_INVALID value\n     * @property {number} ERROR_CODES_NOT_AUTHENTICATED=3 ERROR_CODES_NOT_AUTHENTICATED value\n     * @property {number} ERROR_CODES_ALREADY_AUTHENTICATED=4 ERROR_CODES_ALREADY_AUTHENTICATED value\n     * @property {number} ERROR_CODES_ALREADY_CONNECTED=5 ERROR_CODES_ALREADY_CONNECTED value\n     * @property {number} ERROR_CODES_TOO_MANY_CONCURRENT_REQUESTS=6 ERROR_CODES_TOO_MANY_CONCURRENT_REQUESTS value\n     * @property {number} ERROR_CODES_UNLINKED_KEYCARD=7 ERROR_CODES_UNLINKED_KEYCARD value\n     * @property {number} ERROR_CODES_MINUMUM_VERSION_NOT_REACHED=8 ERROR_CODES_MINUMUM_VERSION_NOT_REACHED value\n     * @property {number} ERROR_CODES_OUT_OF_STOCK=9 ERROR_CODES_OUT_OF_STOCK value\n     * @property {number} ERROR_CODES_SIMULATED=10 ERROR_CODES_SIMULATED value\n     * @property {number} ERROR_CODES_CLOSE_SUBSCRIPTION=11 ERROR_CODES_CLOSE_SUBSCRIPTION value\n     */\n    mass.ErrorCodes = (function () {\n      var valuesById = {}, values = Object.create(valuesById);\n      values[valuesById[0] = \"ERROR_CODES_UNSPECIFIED\"] = 0;\n      values[valuesById[1] = \"ERROR_CODES_NOT_FOUND\"] = 1;\n      values[valuesById[2] = \"ERROR_CODES_INVALID\"] = 2;\n      values[valuesById[3] = \"ERROR_CODES_NOT_AUTHENTICATED\"] = 3;\n      values[valuesById[4] = \"ERROR_CODES_ALREADY_AUTHENTICATED\"] = 4;\n      values[valuesById[5] = \"ERROR_CODES_ALREADY_CONNECTED\"] = 5;\n      values[valuesById[6] = \"ERROR_CODES_TOO_MANY_CONCURRENT_REQUESTS\"] = 6;\n      values[valuesById[7] = \"ERROR_CODES_UNLINKED_KEYCARD\"] = 7;\n      values[valuesById[8] = \"ERROR_CODES_MINUMUM_VERSION_NOT_REACHED\"] = 8;\n      values[valuesById[9] = \"ERROR_CODES_OUT_OF_STOCK\"] = 9;\n      values[valuesById[10] = \"ERROR_CODES_SIMULATED\"] = 10;\n      values[valuesById[11] = \"ERROR_CODES_CLOSE_SUBSCRIPTION\"] = 11;\n      return values;\n    })();\n\n    mass.GetBlobUploadURLRequest = (function () {\n      /**\n       * Properties of a GetBlobUploadURLRequest.\n       * @memberof market.mass\n       * @interface IGetBlobUploadURLRequest\n       */\n\n      /**\n       * Constructs a new GetBlobUploadURLRequest.\n       * @memberof market.mass\n       * @classdesc Represents a GetBlobUploadURLRequest.\n       * @implements IGetBlobUploadURLRequest\n       * @constructor\n       * @param {market.mass.IGetBlobUploadURLRequest=} [properties] Properties to set\n       */\n      function GetBlobUploadURLRequest(properties) {\n        if (properties) {\n          for (\n            var keys = Object.keys(properties), i = 0;\n            i < keys.length;\n            ++i\n          ) {\n            if (properties[keys[i]] != null) {\n              this[keys[i]] = properties[keys[i]];\n            }\n          }\n        }\n      }\n\n      /**\n       * Creates a new GetBlobUploadURLRequest instance using the specified properties.\n       * @function create\n       * @memberof market.mass.GetBlobUploadURLRequest\n       * @static\n       * @param {market.mass.IGetBlobUploadURLRequest=} [properties] Properties to set\n       * @returns {market.mass.GetBlobUploadURLRequest} GetBlobUploadURLRequest instance\n       */\n      GetBlobUploadURLRequest.create = function create(properties) {\n        return new GetBlobUploadURLRequest(properties);\n      };\n\n      /**\n       * Encodes the specified GetBlobUploadURLRequest message. Does not implicitly {@link market.mass.GetBlobUploadURLRequest.verify|verify} messages.\n       * @function encode\n       * @memberof market.mass.GetBlobUploadURLRequest\n       * @static\n       * @param {market.mass.IGetBlobUploadURLRequest} message GetBlobUploadURLRequest message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      GetBlobUploadURLRequest.encode = function encode(message, writer) {\n        if (!writer) {\n          writer = $Writer.create();\n        }\n        return writer;\n      };\n\n      /**\n       * Encodes the specified GetBlobUploadURLRequest message, length delimited. Does not implicitly {@link market.mass.GetBlobUploadURLRequest.verify|verify} messages.\n       * @function encodeDelimited\n       * @memberof market.mass.GetBlobUploadURLRequest\n       * @static\n       * @param {market.mass.IGetBlobUploadURLRequest} message GetBlobUploadURLRequest message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      GetBlobUploadURLRequest.encodeDelimited = function encodeDelimited(\n        message,\n        writer,\n      ) {\n        return this.encode(message, writer).ldelim();\n      };\n\n      /**\n       * Decodes a GetBlobUploadURLRequest message from the specified reader or buffer.\n       * @function decode\n       * @memberof market.mass.GetBlobUploadURLRequest\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @param {number} [length] Message length if known beforehand\n       * @returns {market.mass.GetBlobUploadURLRequest} GetBlobUploadURLRequest\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      GetBlobUploadURLRequest.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader)) {\n          reader = $Reader.create(reader);\n        }\n        var end = length === undefined ? reader.len : reader.pos + length,\n          message = new $root.market.mass.GetBlobUploadURLRequest();\n        while (reader.pos < end) {\n          var tag = reader.uint32();\n          switch (tag >>> 3) {\n            default:\n              reader.skipType(tag & 7);\n              break;\n          }\n        }\n        return message;\n      };\n\n      /**\n       * Decodes a GetBlobUploadURLRequest message from the specified reader or buffer, length delimited.\n       * @function decodeDelimited\n       * @memberof market.mass.GetBlobUploadURLRequest\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @returns {market.mass.GetBlobUploadURLRequest} GetBlobUploadURLRequest\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      GetBlobUploadURLRequest.decodeDelimited = function decodeDelimited(\n        reader,\n      ) {\n        if (!(reader instanceof $Reader)) {\n          reader = new $Reader(reader);\n        }\n        return this.decode(reader, reader.uint32());\n      };\n\n      /**\n       * Verifies a GetBlobUploadURLRequest message.\n       * @function verify\n       * @memberof market.mass.GetBlobUploadURLRequest\n       * @static\n       * @param {Object.<string,*>} message Plain object to verify\n       * @returns {string|null} `null` if valid, otherwise the reason why it is not\n       */\n      GetBlobUploadURLRequest.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null) {\n          return \"object expected\";\n        }\n        return null;\n      };\n\n      /**\n       * Creates a GetBlobUploadURLRequest message from a plain object. Also converts values to their respective internal types.\n       * @function fromObject\n       * @memberof market.mass.GetBlobUploadURLRequest\n       * @static\n       * @param {Object.<string,*>} object Plain object\n       * @returns {market.mass.GetBlobUploadURLRequest} GetBlobUploadURLRequest\n       */\n      GetBlobUploadURLRequest.fromObject = function fromObject(object) {\n        if (object instanceof $root.market.mass.GetBlobUploadURLRequest) {\n          return object;\n        }\n        return new $root.market.mass.GetBlobUploadURLRequest();\n      };\n\n      /**\n       * Creates a plain object from a GetBlobUploadURLRequest message. Also converts values to other types if specified.\n       * @function toObject\n       * @memberof market.mass.GetBlobUploadURLRequest\n       * @static\n       * @param {market.mass.GetBlobUploadURLRequest} message GetBlobUploadURLRequest\n       * @param {$protobuf.IConversionOptions} [options] Conversion options\n       * @returns {Object.<string,*>} Plain object\n       */\n      GetBlobUploadURLRequest.toObject = function toObject() {\n        return {};\n      };\n\n      /**\n       * Converts this GetBlobUploadURLRequest to JSON.\n       * @function toJSON\n       * @memberof market.mass.GetBlobUploadURLRequest\n       * @instance\n       * @returns {Object.<string,*>} JSON object\n       */\n      GetBlobUploadURLRequest.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n      };\n\n      /**\n       * Gets the default type url for GetBlobUploadURLRequest\n       * @function getTypeUrl\n       * @memberof market.mass.GetBlobUploadURLRequest\n       * @static\n       * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n       * @returns {string} The default type url\n       */\n      GetBlobUploadURLRequest.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n        if (typeUrlPrefix === undefined) {\n          typeUrlPrefix = \"type.googleapis.com\";\n        }\n        return typeUrlPrefix + \"/market.mass.GetBlobUploadURLRequest\";\n      };\n\n      return GetBlobUploadURLRequest;\n    })();\n\n    /**\n     * ObjectType enum.\n     * @name market.mass.ObjectType\n     * @enum {number}\n     * @property {number} OBJECT_TYPE_UNSPECIFIED=0 OBJECT_TYPE_UNSPECIFIED value\n     * @property {number} OBJECT_TYPE_LISTING=1 OBJECT_TYPE_LISTING value\n     * @property {number} OBJECT_TYPE_TAG=2 OBJECT_TYPE_TAG value\n     * @property {number} OBJECT_TYPE_ORDER=3 OBJECT_TYPE_ORDER value\n     * @property {number} OBJECT_TYPE_ACCOUNT=4 OBJECT_TYPE_ACCOUNT value\n     * @property {number} OBJECT_TYPE_MANIFEST=5 OBJECT_TYPE_MANIFEST value\n     * @property {number} OBJECT_TYPE_INVENTORY=6 OBJECT_TYPE_INVENTORY value\n     */\n    mass.ObjectType = (function () {\n      var valuesById = {}, values = Object.create(valuesById);\n      values[valuesById[0] = \"OBJECT_TYPE_UNSPECIFIED\"] = 0;\n      values[valuesById[1] = \"OBJECT_TYPE_LISTING\"] = 1;\n      values[valuesById[2] = \"OBJECT_TYPE_TAG\"] = 2;\n      values[valuesById[3] = \"OBJECT_TYPE_ORDER\"] = 3;\n      values[valuesById[4] = \"OBJECT_TYPE_ACCOUNT\"] = 4;\n      values[valuesById[5] = \"OBJECT_TYPE_MANIFEST\"] = 5;\n      values[valuesById[6] = \"OBJECT_TYPE_INVENTORY\"] = 6;\n      return values;\n    })();\n\n    mass.SubscriptionRequest = (function () {\n      /**\n       * Properties of a SubscriptionRequest.\n       * @memberof market.mass\n       * @interface ISubscriptionRequest\n       * @property {number|Long|null} [startShopSeqNo] SubscriptionRequest startShopSeqNo\n       * @property {market.mass.IUint256|null} [shopId] SubscriptionRequest shopId\n       * @property {Array.<market.mass.SubscriptionRequest.IFilter>|null} [filters] SubscriptionRequest filters\n       */\n\n      /**\n       * Constructs a new SubscriptionRequest.\n       * @memberof market.mass\n       * @classdesc Represents a SubscriptionRequest.\n       * @implements ISubscriptionRequest\n       * @constructor\n       * @param {market.mass.ISubscriptionRequest=} [properties] Properties to set\n       */\n      function SubscriptionRequest(properties) {\n        this.filters = [];\n        if (properties) {\n          for (\n            var keys = Object.keys(properties), i = 0;\n            i < keys.length;\n            ++i\n          ) {\n            if (properties[keys[i]] != null) {\n              this[keys[i]] = properties[keys[i]];\n            }\n          }\n        }\n      }\n\n      /**\n       * SubscriptionRequest startShopSeqNo.\n       * @member {number|Long} startShopSeqNo\n       * @memberof market.mass.SubscriptionRequest\n       * @instance\n       */\n      SubscriptionRequest.prototype.startShopSeqNo = $util.Long\n        ? $util.Long.fromBits(0, 0, true)\n        : 0;\n\n      /**\n       * SubscriptionRequest shopId.\n       * @member {market.mass.IUint256|null|undefined} shopId\n       * @memberof market.mass.SubscriptionRequest\n       * @instance\n       */\n      SubscriptionRequest.prototype.shopId = null;\n\n      /**\n       * SubscriptionRequest filters.\n       * @member {Array.<market.mass.SubscriptionRequest.IFilter>} filters\n       * @memberof market.mass.SubscriptionRequest\n       * @instance\n       */\n      SubscriptionRequest.prototype.filters = $util.emptyArray;\n\n      /**\n       * Creates a new SubscriptionRequest instance using the specified properties.\n       * @function create\n       * @memberof market.mass.SubscriptionRequest\n       * @static\n       * @param {market.mass.ISubscriptionRequest=} [properties] Properties to set\n       * @returns {market.mass.SubscriptionRequest} SubscriptionRequest instance\n       */\n      SubscriptionRequest.create = function create(properties) {\n        return new SubscriptionRequest(properties);\n      };\n\n      /**\n       * Encodes the specified SubscriptionRequest message. Does not implicitly {@link market.mass.SubscriptionRequest.verify|verify} messages.\n       * @function encode\n       * @memberof market.mass.SubscriptionRequest\n       * @static\n       * @param {market.mass.ISubscriptionRequest} message SubscriptionRequest message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      SubscriptionRequest.encode = function encode(message, writer) {\n        if (!writer) {\n          writer = $Writer.create();\n        }\n        if (\n          message.startShopSeqNo != null &&\n          Object.hasOwnProperty.call(message, \"startShopSeqNo\")\n        ) {\n          writer.uint32(/* id 1, wireType 0 =*/ 8).uint64(\n            message.startShopSeqNo,\n          );\n        }\n        if (\n          message.shopId != null &&\n          Object.hasOwnProperty.call(message, \"shopId\")\n        ) {\n          $root.market.mass.Uint256.encode(\n            message.shopId,\n            writer.uint32(/* id 2, wireType 2 =*/ 18).fork(),\n          ).ldelim();\n        }\n        if (message.filters != null && message.filters.length) {\n          for (var i = 0; i < message.filters.length; ++i) {\n            $root.market.mass.SubscriptionRequest.Filter.encode(\n              message.filters[i],\n              writer.uint32(/* id 3, wireType 2 =*/ 26).fork(),\n            ).ldelim();\n          }\n        }\n        return writer;\n      };\n\n      /**\n       * Encodes the specified SubscriptionRequest message, length delimited. Does not implicitly {@link market.mass.SubscriptionRequest.verify|verify} messages.\n       * @function encodeDelimited\n       * @memberof market.mass.SubscriptionRequest\n       * @static\n       * @param {market.mass.ISubscriptionRequest} message SubscriptionRequest message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      SubscriptionRequest.encodeDelimited = function encodeDelimited(\n        message,\n        writer,\n      ) {\n        return this.encode(message, writer).ldelim();\n      };\n\n      /**\n       * Decodes a SubscriptionRequest message from the specified reader or buffer.\n       * @function decode\n       * @memberof market.mass.SubscriptionRequest\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @param {number} [length] Message length if known beforehand\n       * @returns {market.mass.SubscriptionRequest} SubscriptionRequest\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      SubscriptionRequest.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader)) {\n          reader = $Reader.create(reader);\n        }\n        var end = length === undefined ? reader.len : reader.pos + length,\n          message = new $root.market.mass.SubscriptionRequest();\n        while (reader.pos < end) {\n          var tag = reader.uint32();\n          switch (tag >>> 3) {\n            case 1: {\n              message.startShopSeqNo = reader.uint64();\n              break;\n            }\n            case 2: {\n              message.shopId = $root.market.mass.Uint256.decode(\n                reader,\n                reader.uint32(),\n              );\n              break;\n            }\n            case 3: {\n              if (!(message.filters && message.filters.length)) {\n                message.filters = [];\n              }\n              message.filters.push(\n                $root.market.mass.SubscriptionRequest.Filter.decode(\n                  reader,\n                  reader.uint32(),\n                ),\n              );\n              break;\n            }\n            default:\n              reader.skipType(tag & 7);\n              break;\n          }\n        }\n        return message;\n      };\n\n      /**\n       * Decodes a SubscriptionRequest message from the specified reader or buffer, length delimited.\n       * @function decodeDelimited\n       * @memberof market.mass.SubscriptionRequest\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @returns {market.mass.SubscriptionRequest} SubscriptionRequest\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      SubscriptionRequest.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader)) {\n          reader = new $Reader(reader);\n        }\n        return this.decode(reader, reader.uint32());\n      };\n\n      /**\n       * Verifies a SubscriptionRequest message.\n       * @function verify\n       * @memberof market.mass.SubscriptionRequest\n       * @static\n       * @param {Object.<string,*>} message Plain object to verify\n       * @returns {string|null} `null` if valid, otherwise the reason why it is not\n       */\n      SubscriptionRequest.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null) {\n          return \"object expected\";\n        }\n        if (\n          message.startShopSeqNo != null &&\n          message.hasOwnProperty(\"startShopSeqNo\")\n        ) {\n          if (\n            !$util.isInteger(message.startShopSeqNo) &&\n            !(message.startShopSeqNo &&\n              $util.isInteger(message.startShopSeqNo.low) &&\n              $util.isInteger(message.startShopSeqNo.high))\n          ) {\n            return \"startShopSeqNo: integer|Long expected\";\n          }\n        }\n        if (message.shopId != null && message.hasOwnProperty(\"shopId\")) {\n          var error = $root.market.mass.Uint256.verify(message.shopId);\n          if (error) {\n            return \"shopId.\" + error;\n          }\n        }\n        if (message.filters != null && message.hasOwnProperty(\"filters\")) {\n          if (!Array.isArray(message.filters)) {\n            return \"filters: array expected\";\n          }\n          for (var i = 0; i < message.filters.length; ++i) {\n            var error = $root.market.mass.SubscriptionRequest.Filter.verify(\n              message.filters[i],\n            );\n            if (error) {\n              return \"filters.\" + error;\n            }\n          }\n        }\n        return null;\n      };\n\n      /**\n       * Creates a SubscriptionRequest message from a plain object. Also converts values to their respective internal types.\n       * @function fromObject\n       * @memberof market.mass.SubscriptionRequest\n       * @static\n       * @param {Object.<string,*>} object Plain object\n       * @returns {market.mass.SubscriptionRequest} SubscriptionRequest\n       */\n      SubscriptionRequest.fromObject = function fromObject(object) {\n        if (object instanceof $root.market.mass.SubscriptionRequest) {\n          return object;\n        }\n        var message = new $root.market.mass.SubscriptionRequest();\n        if (object.startShopSeqNo != null) {\n          if ($util.Long) {\n            (message.startShopSeqNo = $util.Long.fromValue(\n              object.startShopSeqNo,\n            )).unsigned = true;\n          } else if (typeof object.startShopSeqNo === \"string\") {\n            message.startShopSeqNo = parseInt(object.startShopSeqNo, 10);\n          } else if (typeof object.startShopSeqNo === \"number\") {\n            message.startShopSeqNo = object.startShopSeqNo;\n          } else if (typeof object.startShopSeqNo === \"object\") {\n            message.startShopSeqNo = new $util.LongBits(\n              object.startShopSeqNo.low >>> 0,\n              object.startShopSeqNo.high >>> 0,\n            ).toNumber(true);\n          }\n        }\n        if (object.shopId != null) {\n          if (typeof object.shopId !== \"object\") {\n            throw TypeError(\n              \".market.mass.SubscriptionRequest.shopId: object expected\",\n            );\n          }\n          message.shopId = $root.market.mass.Uint256.fromObject(object.shopId);\n        }\n        if (object.filters) {\n          if (!Array.isArray(object.filters)) {\n            throw TypeError(\n              \".market.mass.SubscriptionRequest.filters: array expected\",\n            );\n          }\n          message.filters = [];\n          for (var i = 0; i < object.filters.length; ++i) {\n            if (typeof object.filters[i] !== \"object\") {\n              throw TypeError(\n                \".market.mass.SubscriptionRequest.filters: object expected\",\n              );\n            }\n            message.filters[i] = $root.market.mass.SubscriptionRequest.Filter\n              .fromObject(object.filters[i]);\n          }\n        }\n        return message;\n      };\n\n      /**\n       * Creates a plain object from a SubscriptionRequest message. Also converts values to other types if specified.\n       * @function toObject\n       * @memberof market.mass.SubscriptionRequest\n       * @static\n       * @param {market.mass.SubscriptionRequest} message SubscriptionRequest\n       * @param {$protobuf.IConversionOptions} [options] Conversion options\n       * @returns {Object.<string,*>} Plain object\n       */\n      SubscriptionRequest.toObject = function toObject(message, options) {\n        if (!options) {\n          options = {};\n        }\n        var object = {};\n        if (options.arrays || options.defaults) {\n          object.filters = [];\n        }\n        if (options.defaults) {\n          if ($util.Long) {\n            var long = new $util.Long(0, 0, true);\n            object.startShopSeqNo = options.longs === String\n              ? long.toString()\n              : options.longs === Number\n              ? long.toNumber()\n              : long;\n          } else {\n            object.startShopSeqNo = options.longs === String ? \"0\" : 0;\n          }\n          object.shopId = null;\n        }\n        if (\n          message.startShopSeqNo != null &&\n          message.hasOwnProperty(\"startShopSeqNo\")\n        ) {\n          if (typeof message.startShopSeqNo === \"number\") {\n            object.startShopSeqNo = options.longs === String\n              ? String(message.startShopSeqNo)\n              : message.startShopSeqNo;\n          } else {\n            object.startShopSeqNo = options.longs === String\n              ? $util.Long.prototype.toString.call(message.startShopSeqNo)\n              : options.longs === Number\n              ? new $util.LongBits(\n                message.startShopSeqNo.low >>> 0,\n                message.startShopSeqNo.high >>> 0,\n              ).toNumber(true)\n              : message.startShopSeqNo;\n          }\n        }\n        if (message.shopId != null && message.hasOwnProperty(\"shopId\")) {\n          object.shopId = $root.market.mass.Uint256.toObject(\n            message.shopId,\n            options,\n          );\n        }\n        if (message.filters && message.filters.length) {\n          object.filters = [];\n          for (var j = 0; j < message.filters.length; ++j) {\n            object.filters[j] = $root.market.mass.SubscriptionRequest.Filter\n              .toObject(message.filters[j], options);\n          }\n        }\n        return object;\n      };\n\n      /**\n       * Converts this SubscriptionRequest to JSON.\n       * @function toJSON\n       * @memberof market.mass.SubscriptionRequest\n       * @instance\n       * @returns {Object.<string,*>} JSON object\n       */\n      SubscriptionRequest.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n      };\n\n      /**\n       * Gets the default type url for SubscriptionRequest\n       * @function getTypeUrl\n       * @memberof market.mass.SubscriptionRequest\n       * @static\n       * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n       * @returns {string} The default type url\n       */\n      SubscriptionRequest.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n        if (typeUrlPrefix === undefined) {\n          typeUrlPrefix = \"type.googleapis.com\";\n        }\n        return typeUrlPrefix + \"/market.mass.SubscriptionRequest\";\n      };\n\n      SubscriptionRequest.Filter = (function () {\n        /**\n         * Properties of a Filter.\n         * @memberof market.mass.SubscriptionRequest\n         * @interface IFilter\n         * @property {market.mass.ObjectType|null} [objectType] Filter objectType\n         * @property {market.mass.IObjectId|null} [objectId] Filter objectId\n         */\n\n        /**\n         * Constructs a new Filter.\n         * @memberof market.mass.SubscriptionRequest\n         * @classdesc Represents a Filter.\n         * @implements IFilter\n         * @constructor\n         * @param {market.mass.SubscriptionRequest.IFilter=} [properties] Properties to set\n         */\n        function Filter(properties) {\n          if (properties) {\n            for (\n              var keys = Object.keys(properties), i = 0;\n              i < keys.length;\n              ++i\n            ) {\n              if (properties[keys[i]] != null) {\n                this[keys[i]] = properties[keys[i]];\n              }\n            }\n          }\n        }\n\n        /**\n         * Filter objectType.\n         * @member {market.mass.ObjectType} objectType\n         * @memberof market.mass.SubscriptionRequest.Filter\n         * @instance\n         */\n        Filter.prototype.objectType = 0;\n\n        /**\n         * Filter objectId.\n         * @member {market.mass.IObjectId|null|undefined} objectId\n         * @memberof market.mass.SubscriptionRequest.Filter\n         * @instance\n         */\n        Filter.prototype.objectId = null;\n\n        // OneOf field names bound to virtual getters and setters\n        var $oneOfFields;\n\n        // Virtual OneOf for proto3 optional field\n        Object.defineProperty(Filter.prototype, \"_objectId\", {\n          get: $util.oneOfGetter($oneOfFields = [\"objectId\"]),\n          set: $util.oneOfSetter($oneOfFields),\n        });\n\n        /**\n         * Creates a new Filter instance using the specified properties.\n         * @function create\n         * @memberof market.mass.SubscriptionRequest.Filter\n         * @static\n         * @param {market.mass.SubscriptionRequest.IFilter=} [properties] Properties to set\n         * @returns {market.mass.SubscriptionRequest.Filter} Filter instance\n         */\n        Filter.create = function create(properties) {\n          return new Filter(properties);\n        };\n\n        /**\n         * Encodes the specified Filter message. Does not implicitly {@link market.mass.SubscriptionRequest.Filter.verify|verify} messages.\n         * @function encode\n         * @memberof market.mass.SubscriptionRequest.Filter\n         * @static\n         * @param {market.mass.SubscriptionRequest.IFilter} message Filter message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        Filter.encode = function encode(message, writer) {\n          if (!writer) {\n            writer = $Writer.create();\n          }\n          if (\n            message.objectType != null &&\n            Object.hasOwnProperty.call(message, \"objectType\")\n          ) {\n            writer.uint32(/* id 3, wireType 0 =*/ 24).int32(message.objectType);\n          }\n          if (\n            message.objectId != null &&\n            Object.hasOwnProperty.call(message, \"objectId\")\n          ) {\n            $root.market.mass.ObjectId.encode(\n              message.objectId,\n              writer.uint32(/* id 4, wireType 2 =*/ 34).fork(),\n            ).ldelim();\n          }\n          return writer;\n        };\n\n        /**\n         * Encodes the specified Filter message, length delimited. Does not implicitly {@link market.mass.SubscriptionRequest.Filter.verify|verify} messages.\n         * @function encodeDelimited\n         * @memberof market.mass.SubscriptionRequest.Filter\n         * @static\n         * @param {market.mass.SubscriptionRequest.IFilter} message Filter message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        Filter.encodeDelimited = function encodeDelimited(message, writer) {\n          return this.encode(message, writer).ldelim();\n        };\n\n        /**\n         * Decodes a Filter message from the specified reader or buffer.\n         * @function decode\n         * @memberof market.mass.SubscriptionRequest.Filter\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @param {number} [length] Message length if known beforehand\n         * @returns {market.mass.SubscriptionRequest.Filter} Filter\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        Filter.decode = function decode(reader, length) {\n          if (!(reader instanceof $Reader)) {\n            reader = $Reader.create(reader);\n          }\n          var end = length === undefined ? reader.len : reader.pos + length,\n            message = new $root.market.mass.SubscriptionRequest.Filter();\n          while (reader.pos < end) {\n            var tag = reader.uint32();\n            switch (tag >>> 3) {\n              case 3: {\n                message.objectType = reader.int32();\n                break;\n              }\n              case 4: {\n                message.objectId = $root.market.mass.ObjectId.decode(\n                  reader,\n                  reader.uint32(),\n                );\n                break;\n              }\n              default:\n                reader.skipType(tag & 7);\n                break;\n            }\n          }\n          return message;\n        };\n\n        /**\n         * Decodes a Filter message from the specified reader or buffer, length delimited.\n         * @function decodeDelimited\n         * @memberof market.mass.SubscriptionRequest.Filter\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @returns {market.mass.SubscriptionRequest.Filter} Filter\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        Filter.decodeDelimited = function decodeDelimited(reader) {\n          if (!(reader instanceof $Reader)) {\n            reader = new $Reader(reader);\n          }\n          return this.decode(reader, reader.uint32());\n        };\n\n        /**\n         * Verifies a Filter message.\n         * @function verify\n         * @memberof market.mass.SubscriptionRequest.Filter\n         * @static\n         * @param {Object.<string,*>} message Plain object to verify\n         * @returns {string|null} `null` if valid, otherwise the reason why it is not\n         */\n        Filter.verify = function verify(message) {\n          if (typeof message !== \"object\" || message === null) {\n            return \"object expected\";\n          }\n          var properties = {};\n          if (\n            message.objectType != null && message.hasOwnProperty(\"objectType\")\n          ) {\n            switch (message.objectType) {\n              default:\n                return \"objectType: enum value expected\";\n              case 0:\n              case 1:\n              case 2:\n              case 3:\n              case 4:\n              case 5:\n              case 6:\n                break;\n            }\n          }\n          if (message.objectId != null && message.hasOwnProperty(\"objectId\")) {\n            properties._objectId = 1;\n            {\n              var error = $root.market.mass.ObjectId.verify(message.objectId);\n              if (error) {\n                return \"objectId.\" + error;\n              }\n            }\n          }\n          return null;\n        };\n\n        /**\n         * Creates a Filter message from a plain object. Also converts values to their respective internal types.\n         * @function fromObject\n         * @memberof market.mass.SubscriptionRequest.Filter\n         * @static\n         * @param {Object.<string,*>} object Plain object\n         * @returns {market.mass.SubscriptionRequest.Filter} Filter\n         */\n        Filter.fromObject = function fromObject(object) {\n          if (object instanceof $root.market.mass.SubscriptionRequest.Filter) {\n            return object;\n          }\n          var message = new $root.market.mass.SubscriptionRequest.Filter();\n          switch (object.objectType) {\n            default:\n              if (typeof object.objectType === \"number\") {\n                message.objectType = object.objectType;\n                break;\n              }\n              break;\n            case \"OBJECT_TYPE_UNSPECIFIED\":\n            case 0:\n              message.objectType = 0;\n              break;\n            case \"OBJECT_TYPE_LISTING\":\n            case 1:\n              message.objectType = 1;\n              break;\n            case \"OBJECT_TYPE_TAG\":\n            case 2:\n              message.objectType = 2;\n              break;\n            case \"OBJECT_TYPE_ORDER\":\n            case 3:\n              message.objectType = 3;\n              break;\n            case \"OBJECT_TYPE_ACCOUNT\":\n            case 4:\n              message.objectType = 4;\n              break;\n            case \"OBJECT_TYPE_MANIFEST\":\n            case 5:\n              message.objectType = 5;\n              break;\n            case \"OBJECT_TYPE_INVENTORY\":\n            case 6:\n              message.objectType = 6;\n              break;\n          }\n          if (object.objectId != null) {\n            if (typeof object.objectId !== \"object\") {\n              throw TypeError(\n                \".market.mass.SubscriptionRequest.Filter.objectId: object expected\",\n              );\n            }\n            message.objectId = $root.market.mass.ObjectId.fromObject(\n              object.objectId,\n            );\n          }\n          return message;\n        };\n\n        /**\n         * Creates a plain object from a Filter message. Also converts values to other types if specified.\n         * @function toObject\n         * @memberof market.mass.SubscriptionRequest.Filter\n         * @static\n         * @param {market.mass.SubscriptionRequest.Filter} message Filter\n         * @param {$protobuf.IConversionOptions} [options] Conversion options\n         * @returns {Object.<string,*>} Plain object\n         */\n        Filter.toObject = function toObject(message, options) {\n          if (!options) {\n            options = {};\n          }\n          var object = {};\n          if (options.defaults) {\n            object.objectType = options.enums === String\n              ? \"OBJECT_TYPE_UNSPECIFIED\"\n              : 0;\n          }\n          if (\n            message.objectType != null && message.hasOwnProperty(\"objectType\")\n          ) {\n            object.objectType = options.enums === String\n              ? $root.market.mass.ObjectType[message.objectType] === undefined\n                ? message.objectType\n                : $root.market.mass.ObjectType[message.objectType]\n              : message.objectType;\n          }\n          if (message.objectId != null && message.hasOwnProperty(\"objectId\")) {\n            object.objectId = $root.market.mass.ObjectId.toObject(\n              message.objectId,\n              options,\n            );\n            if (options.oneofs) {\n              object._objectId = \"objectId\";\n            }\n          }\n          return object;\n        };\n\n        /**\n         * Converts this Filter to JSON.\n         * @function toJSON\n         * @memberof market.mass.SubscriptionRequest.Filter\n         * @instance\n         * @returns {Object.<string,*>} JSON object\n         */\n        Filter.prototype.toJSON = function toJSON() {\n          return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n        };\n\n        /**\n         * Gets the default type url for Filter\n         * @function getTypeUrl\n         * @memberof market.mass.SubscriptionRequest.Filter\n         * @static\n         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n         * @returns {string} The default type url\n         */\n        Filter.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n          if (typeUrlPrefix === undefined) {\n            typeUrlPrefix = \"type.googleapis.com\";\n          }\n          return typeUrlPrefix + \"/market.mass.SubscriptionRequest.Filter\";\n        };\n\n        return Filter;\n      })();\n\n      return SubscriptionRequest;\n    })();\n\n    mass.SubscriptionPushRequest = (function () {\n      /**\n       * Properties of a SubscriptionPushRequest.\n       * @memberof market.mass\n       * @interface ISubscriptionPushRequest\n       * @property {Uint8Array|null} [subscriptionId] SubscriptionPushRequest subscriptionId\n       * @property {Array.<market.mass.SubscriptionPushRequest.ISequencedEvent>|null} [events] SubscriptionPushRequest events\n       */\n\n      /**\n       * Constructs a new SubscriptionPushRequest.\n       * @memberof market.mass\n       * @classdesc Represents a SubscriptionPushRequest.\n       * @implements ISubscriptionPushRequest\n       * @constructor\n       * @param {market.mass.ISubscriptionPushRequest=} [properties] Properties to set\n       */\n      function SubscriptionPushRequest(properties) {\n        this.events = [];\n        if (properties) {\n          for (\n            var keys = Object.keys(properties), i = 0;\n            i < keys.length;\n            ++i\n          ) {\n            if (properties[keys[i]] != null) {\n              this[keys[i]] = properties[keys[i]];\n            }\n          }\n        }\n      }\n\n      /**\n       * SubscriptionPushRequest subscriptionId.\n       * @member {Uint8Array} subscriptionId\n       * @memberof market.mass.SubscriptionPushRequest\n       * @instance\n       */\n      SubscriptionPushRequest.prototype.subscriptionId = $util.newBuffer([]);\n\n      /**\n       * SubscriptionPushRequest events.\n       * @member {Array.<market.mass.SubscriptionPushRequest.ISequencedEvent>} events\n       * @memberof market.mass.SubscriptionPushRequest\n       * @instance\n       */\n      SubscriptionPushRequest.prototype.events = $util.emptyArray;\n\n      /**\n       * Creates a new SubscriptionPushRequest instance using the specified properties.\n       * @function create\n       * @memberof market.mass.SubscriptionPushRequest\n       * @static\n       * @param {market.mass.ISubscriptionPushRequest=} [properties] Properties to set\n       * @returns {market.mass.SubscriptionPushRequest} SubscriptionPushRequest instance\n       */\n      SubscriptionPushRequest.create = function create(properties) {\n        return new SubscriptionPushRequest(properties);\n      };\n\n      /**\n       * Encodes the specified SubscriptionPushRequest message. Does not implicitly {@link market.mass.SubscriptionPushRequest.verify|verify} messages.\n       * @function encode\n       * @memberof market.mass.SubscriptionPushRequest\n       * @static\n       * @param {market.mass.ISubscriptionPushRequest} message SubscriptionPushRequest message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      SubscriptionPushRequest.encode = function encode(message, writer) {\n        if (!writer) {\n          writer = $Writer.create();\n        }\n        if (\n          message.subscriptionId != null &&\n          Object.hasOwnProperty.call(message, \"subscriptionId\")\n        ) {\n          writer.uint32(/* id 1, wireType 2 =*/ 10).bytes(\n            message.subscriptionId,\n          );\n        }\n        if (message.events != null && message.events.length) {\n          for (var i = 0; i < message.events.length; ++i) {\n            $root.market.mass.SubscriptionPushRequest.SequencedEvent.encode(\n              message.events[i],\n              writer.uint32(/* id 2, wireType 2 =*/ 18).fork(),\n            ).ldelim();\n          }\n        }\n        return writer;\n      };\n\n      /**\n       * Encodes the specified SubscriptionPushRequest message, length delimited. Does not implicitly {@link market.mass.SubscriptionPushRequest.verify|verify} messages.\n       * @function encodeDelimited\n       * @memberof market.mass.SubscriptionPushRequest\n       * @static\n       * @param {market.mass.ISubscriptionPushRequest} message SubscriptionPushRequest message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      SubscriptionPushRequest.encodeDelimited = function encodeDelimited(\n        message,\n        writer,\n      ) {\n        return this.encode(message, writer).ldelim();\n      };\n\n      /**\n       * Decodes a SubscriptionPushRequest message from the specified reader or buffer.\n       * @function decode\n       * @memberof market.mass.SubscriptionPushRequest\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @param {number} [length] Message length if known beforehand\n       * @returns {market.mass.SubscriptionPushRequest} SubscriptionPushRequest\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      SubscriptionPushRequest.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader)) {\n          reader = $Reader.create(reader);\n        }\n        var end = length === undefined ? reader.len : reader.pos + length,\n          message = new $root.market.mass.SubscriptionPushRequest();\n        while (reader.pos < end) {\n          var tag = reader.uint32();\n          switch (tag >>> 3) {\n            case 1: {\n              message.subscriptionId = reader.bytes();\n              break;\n            }\n            case 2: {\n              if (!(message.events && message.events.length)) {\n                message.events = [];\n              }\n              message.events.push(\n                $root.market.mass.SubscriptionPushRequest.SequencedEvent.decode(\n                  reader,\n                  reader.uint32(),\n                ),\n              );\n              break;\n            }\n            default:\n              reader.skipType(tag & 7);\n              break;\n          }\n        }\n        return message;\n      };\n\n      /**\n       * Decodes a SubscriptionPushRequest message from the specified reader or buffer, length delimited.\n       * @function decodeDelimited\n       * @memberof market.mass.SubscriptionPushRequest\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @returns {market.mass.SubscriptionPushRequest} SubscriptionPushRequest\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      SubscriptionPushRequest.decodeDelimited = function decodeDelimited(\n        reader,\n      ) {\n        if (!(reader instanceof $Reader)) {\n          reader = new $Reader(reader);\n        }\n        return this.decode(reader, reader.uint32());\n      };\n\n      /**\n       * Verifies a SubscriptionPushRequest message.\n       * @function verify\n       * @memberof market.mass.SubscriptionPushRequest\n       * @static\n       * @param {Object.<string,*>} message Plain object to verify\n       * @returns {string|null} `null` if valid, otherwise the reason why it is not\n       */\n      SubscriptionPushRequest.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null) {\n          return \"object expected\";\n        }\n        if (\n          message.subscriptionId != null &&\n          message.hasOwnProperty(\"subscriptionId\")\n        ) {\n          if (\n            !(message.subscriptionId &&\n                typeof message.subscriptionId.length === \"number\" ||\n              $util.isString(message.subscriptionId))\n          ) {\n            return \"subscriptionId: buffer expected\";\n          }\n        }\n        if (message.events != null && message.hasOwnProperty(\"events\")) {\n          if (!Array.isArray(message.events)) {\n            return \"events: array expected\";\n          }\n          for (var i = 0; i < message.events.length; ++i) {\n            var error = $root.market.mass.SubscriptionPushRequest.SequencedEvent\n              .verify(message.events[i]);\n            if (error) {\n              return \"events.\" + error;\n            }\n          }\n        }\n        return null;\n      };\n\n      /**\n       * Creates a SubscriptionPushRequest message from a plain object. Also converts values to their respective internal types.\n       * @function fromObject\n       * @memberof market.mass.SubscriptionPushRequest\n       * @static\n       * @param {Object.<string,*>} object Plain object\n       * @returns {market.mass.SubscriptionPushRequest} SubscriptionPushRequest\n       */\n      SubscriptionPushRequest.fromObject = function fromObject(object) {\n        if (object instanceof $root.market.mass.SubscriptionPushRequest) {\n          return object;\n        }\n        var message = new $root.market.mass.SubscriptionPushRequest();\n        if (object.subscriptionId != null) {\n          if (typeof object.subscriptionId === \"string\") {\n            $util.base64.decode(\n              object.subscriptionId,\n              message.subscriptionId = $util.newBuffer(\n                $util.base64.length(object.subscriptionId),\n              ),\n              0,\n            );\n          } else if (object.subscriptionId.length >= 0) {\n            message.subscriptionId = object.subscriptionId;\n          }\n        }\n        if (object.events) {\n          if (!Array.isArray(object.events)) {\n            throw TypeError(\n              \".market.mass.SubscriptionPushRequest.events: array expected\",\n            );\n          }\n          message.events = [];\n          for (var i = 0; i < object.events.length; ++i) {\n            if (typeof object.events[i] !== \"object\") {\n              throw TypeError(\n                \".market.mass.SubscriptionPushRequest.events: object expected\",\n              );\n            }\n            message.events[i] = $root.market.mass.SubscriptionPushRequest\n              .SequencedEvent.fromObject(object.events[i]);\n          }\n        }\n        return message;\n      };\n\n      /**\n       * Creates a plain object from a SubscriptionPushRequest message. Also converts values to other types if specified.\n       * @function toObject\n       * @memberof market.mass.SubscriptionPushRequest\n       * @static\n       * @param {market.mass.SubscriptionPushRequest} message SubscriptionPushRequest\n       * @param {$protobuf.IConversionOptions} [options] Conversion options\n       * @returns {Object.<string,*>} Plain object\n       */\n      SubscriptionPushRequest.toObject = function toObject(message, options) {\n        if (!options) {\n          options = {};\n        }\n        var object = {};\n        if (options.arrays || options.defaults) {\n          object.events = [];\n        }\n        if (options.defaults) {\n          if (options.bytes === String) {\n            object.subscriptionId = \"\";\n          } else {\n            object.subscriptionId = [];\n            if (options.bytes !== Array) {\n              object.subscriptionId = $util.newBuffer(object.subscriptionId);\n            }\n          }\n        }\n        if (\n          message.subscriptionId != null &&\n          message.hasOwnProperty(\"subscriptionId\")\n        ) {\n          object.subscriptionId = options.bytes === String\n            ? $util.base64.encode(\n              message.subscriptionId,\n              0,\n              message.subscriptionId.length,\n            )\n            : options.bytes === Array\n            ? Array.prototype.slice.call(message.subscriptionId)\n            : message.subscriptionId;\n        }\n        if (message.events && message.events.length) {\n          object.events = [];\n          for (var j = 0; j < message.events.length; ++j) {\n            object.events[j] = $root.market.mass.SubscriptionPushRequest\n              .SequencedEvent.toObject(message.events[j], options);\n          }\n        }\n        return object;\n      };\n\n      /**\n       * Converts this SubscriptionPushRequest to JSON.\n       * @function toJSON\n       * @memberof market.mass.SubscriptionPushRequest\n       * @instance\n       * @returns {Object.<string,*>} JSON object\n       */\n      SubscriptionPushRequest.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n      };\n\n      /**\n       * Gets the default type url for SubscriptionPushRequest\n       * @function getTypeUrl\n       * @memberof market.mass.SubscriptionPushRequest\n       * @static\n       * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n       * @returns {string} The default type url\n       */\n      SubscriptionPushRequest.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n        if (typeUrlPrefix === undefined) {\n          typeUrlPrefix = \"type.googleapis.com\";\n        }\n        return typeUrlPrefix + \"/market.mass.SubscriptionPushRequest\";\n      };\n\n      SubscriptionPushRequest.SequencedEvent = (function () {\n        /**\n         * Properties of a SequencedEvent.\n         * @memberof market.mass.SubscriptionPushRequest\n         * @interface ISequencedEvent\n         * @property {market.mass.ISignedEvent|null} [event] SequencedEvent event\n         * @property {number|Long|null} [seqNo] SequencedEvent seqNo\n         */\n\n        /**\n         * Constructs a new SequencedEvent.\n         * @memberof market.mass.SubscriptionPushRequest\n         * @classdesc Represents a SequencedEvent.\n         * @implements ISequencedEvent\n         * @constructor\n         * @param {market.mass.SubscriptionPushRequest.ISequencedEvent=} [properties] Properties to set\n         */\n        function SequencedEvent(properties) {\n          if (properties) {\n            for (\n              var keys = Object.keys(properties), i = 0;\n              i < keys.length;\n              ++i\n            ) {\n              if (properties[keys[i]] != null) {\n                this[keys[i]] = properties[keys[i]];\n              }\n            }\n          }\n        }\n\n        /**\n         * SequencedEvent event.\n         * @member {market.mass.ISignedEvent|null|undefined} event\n         * @memberof market.mass.SubscriptionPushRequest.SequencedEvent\n         * @instance\n         */\n        SequencedEvent.prototype.event = null;\n\n        /**\n         * SequencedEvent seqNo.\n         * @member {number|Long} seqNo\n         * @memberof market.mass.SubscriptionPushRequest.SequencedEvent\n         * @instance\n         */\n        SequencedEvent.prototype.seqNo = $util.Long\n          ? $util.Long.fromBits(0, 0, true)\n          : 0;\n\n        /**\n         * Creates a new SequencedEvent instance using the specified properties.\n         * @function create\n         * @memberof market.mass.SubscriptionPushRequest.SequencedEvent\n         * @static\n         * @param {market.mass.SubscriptionPushRequest.ISequencedEvent=} [properties] Properties to set\n         * @returns {market.mass.SubscriptionPushRequest.SequencedEvent} SequencedEvent instance\n         */\n        SequencedEvent.create = function create(properties) {\n          return new SequencedEvent(properties);\n        };\n\n        /**\n         * Encodes the specified SequencedEvent message. Does not implicitly {@link market.mass.SubscriptionPushRequest.SequencedEvent.verify|verify} messages.\n         * @function encode\n         * @memberof market.mass.SubscriptionPushRequest.SequencedEvent\n         * @static\n         * @param {market.mass.SubscriptionPushRequest.ISequencedEvent} message SequencedEvent message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        SequencedEvent.encode = function encode(message, writer) {\n          if (!writer) {\n            writer = $Writer.create();\n          }\n          if (\n            message.event != null &&\n            Object.hasOwnProperty.call(message, \"event\")\n          ) {\n            $root.market.mass.SignedEvent.encode(\n              message.event,\n              writer.uint32(/* id 1, wireType 2 =*/ 10).fork(),\n            ).ldelim();\n          }\n          if (\n            message.seqNo != null &&\n            Object.hasOwnProperty.call(message, \"seqNo\")\n          ) {\n            writer.uint32(/* id 2, wireType 0 =*/ 16).uint64(message.seqNo);\n          }\n          return writer;\n        };\n\n        /**\n         * Encodes the specified SequencedEvent message, length delimited. Does not implicitly {@link market.mass.SubscriptionPushRequest.SequencedEvent.verify|verify} messages.\n         * @function encodeDelimited\n         * @memberof market.mass.SubscriptionPushRequest.SequencedEvent\n         * @static\n         * @param {market.mass.SubscriptionPushRequest.ISequencedEvent} message SequencedEvent message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        SequencedEvent.encodeDelimited = function encodeDelimited(\n          message,\n          writer,\n        ) {\n          return this.encode(message, writer).ldelim();\n        };\n\n        /**\n         * Decodes a SequencedEvent message from the specified reader or buffer.\n         * @function decode\n         * @memberof market.mass.SubscriptionPushRequest.SequencedEvent\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @param {number} [length] Message length if known beforehand\n         * @returns {market.mass.SubscriptionPushRequest.SequencedEvent} SequencedEvent\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        SequencedEvent.decode = function decode(reader, length) {\n          if (!(reader instanceof $Reader)) {\n            reader = $Reader.create(reader);\n          }\n          var end = length === undefined ? reader.len : reader.pos + length,\n            message = new $root.market.mass.SubscriptionPushRequest\n              .SequencedEvent();\n          while (reader.pos < end) {\n            var tag = reader.uint32();\n            switch (tag >>> 3) {\n              case 1: {\n                message.event = $root.market.mass.SignedEvent.decode(\n                  reader,\n                  reader.uint32(),\n                );\n                break;\n              }\n              case 2: {\n                message.seqNo = reader.uint64();\n                break;\n              }\n              default:\n                reader.skipType(tag & 7);\n                break;\n            }\n          }\n          return message;\n        };\n\n        /**\n         * Decodes a SequencedEvent message from the specified reader or buffer, length delimited.\n         * @function decodeDelimited\n         * @memberof market.mass.SubscriptionPushRequest.SequencedEvent\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @returns {market.mass.SubscriptionPushRequest.SequencedEvent} SequencedEvent\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        SequencedEvent.decodeDelimited = function decodeDelimited(reader) {\n          if (!(reader instanceof $Reader)) {\n            reader = new $Reader(reader);\n          }\n          return this.decode(reader, reader.uint32());\n        };\n\n        /**\n         * Verifies a SequencedEvent message.\n         * @function verify\n         * @memberof market.mass.SubscriptionPushRequest.SequencedEvent\n         * @static\n         * @param {Object.<string,*>} message Plain object to verify\n         * @returns {string|null} `null` if valid, otherwise the reason why it is not\n         */\n        SequencedEvent.verify = function verify(message) {\n          if (typeof message !== \"object\" || message === null) {\n            return \"object expected\";\n          }\n          if (message.event != null && message.hasOwnProperty(\"event\")) {\n            var error = $root.market.mass.SignedEvent.verify(message.event);\n            if (error) {\n              return \"event.\" + error;\n            }\n          }\n          if (message.seqNo != null && message.hasOwnProperty(\"seqNo\")) {\n            if (\n              !$util.isInteger(message.seqNo) &&\n              !(message.seqNo && $util.isInteger(message.seqNo.low) &&\n                $util.isInteger(message.seqNo.high))\n            ) {\n              return \"seqNo: integer|Long expected\";\n            }\n          }\n          return null;\n        };\n\n        /**\n         * Creates a SequencedEvent message from a plain object. Also converts values to their respective internal types.\n         * @function fromObject\n         * @memberof market.mass.SubscriptionPushRequest.SequencedEvent\n         * @static\n         * @param {Object.<string,*>} object Plain object\n         * @returns {market.mass.SubscriptionPushRequest.SequencedEvent} SequencedEvent\n         */\n        SequencedEvent.fromObject = function fromObject(object) {\n          if (\n            object instanceof\n              $root.market.mass.SubscriptionPushRequest.SequencedEvent\n          ) {\n            return object;\n          }\n          var message = new $root.market.mass.SubscriptionPushRequest\n            .SequencedEvent();\n          if (object.event != null) {\n            if (typeof object.event !== \"object\") {\n              throw TypeError(\n                \".market.mass.SubscriptionPushRequest.SequencedEvent.event: object expected\",\n              );\n            }\n            message.event = $root.market.mass.SignedEvent.fromObject(\n              object.event,\n            );\n          }\n          if (object.seqNo != null) {\n            if ($util.Long) {\n              (message.seqNo = $util.Long.fromValue(object.seqNo)).unsigned =\n                true;\n            } else if (typeof object.seqNo === \"string\") {\n              message.seqNo = parseInt(object.seqNo, 10);\n            } else if (typeof object.seqNo === \"number\") {\n              message.seqNo = object.seqNo;\n            } else if (typeof object.seqNo === \"object\") {\n              message.seqNo = new $util.LongBits(\n                object.seqNo.low >>> 0,\n                object.seqNo.high >>> 0,\n              ).toNumber(true);\n            }\n          }\n          return message;\n        };\n\n        /**\n         * Creates a plain object from a SequencedEvent message. Also converts values to other types if specified.\n         * @function toObject\n         * @memberof market.mass.SubscriptionPushRequest.SequencedEvent\n         * @static\n         * @param {market.mass.SubscriptionPushRequest.SequencedEvent} message SequencedEvent\n         * @param {$protobuf.IConversionOptions} [options] Conversion options\n         * @returns {Object.<string,*>} Plain object\n         */\n        SequencedEvent.toObject = function toObject(message, options) {\n          if (!options) {\n            options = {};\n          }\n          var object = {};\n          if (options.defaults) {\n            object.event = null;\n            if ($util.Long) {\n              var long = new $util.Long(0, 0, true);\n              object.seqNo = options.longs === String\n                ? long.toString()\n                : options.longs === Number\n                ? long.toNumber()\n                : long;\n            } else {\n              object.seqNo = options.longs === String ? \"0\" : 0;\n            }\n          }\n          if (message.event != null && message.hasOwnProperty(\"event\")) {\n            object.event = $root.market.mass.SignedEvent.toObject(\n              message.event,\n              options,\n            );\n          }\n          if (message.seqNo != null && message.hasOwnProperty(\"seqNo\")) {\n            if (typeof message.seqNo === \"number\") {\n              object.seqNo = options.longs === String\n                ? String(message.seqNo)\n                : message.seqNo;\n            } else {\n              object.seqNo = options.longs === String\n                ? $util.Long.prototype.toString.call(message.seqNo)\n                : options.longs === Number\n                ? new $util.LongBits(\n                  message.seqNo.low >>> 0,\n                  message.seqNo.high >>> 0,\n                ).toNumber(true)\n                : message.seqNo;\n            }\n          }\n          return object;\n        };\n\n        /**\n         * Converts this SequencedEvent to JSON.\n         * @function toJSON\n         * @memberof market.mass.SubscriptionPushRequest.SequencedEvent\n         * @instance\n         * @returns {Object.<string,*>} JSON object\n         */\n        SequencedEvent.prototype.toJSON = function toJSON() {\n          return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n        };\n\n        /**\n         * Gets the default type url for SequencedEvent\n         * @function getTypeUrl\n         * @memberof market.mass.SubscriptionPushRequest.SequencedEvent\n         * @static\n         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n         * @returns {string} The default type url\n         */\n        SequencedEvent.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n          if (typeUrlPrefix === undefined) {\n            typeUrlPrefix = \"type.googleapis.com\";\n          }\n          return typeUrlPrefix +\n            \"/market.mass.SubscriptionPushRequest.SequencedEvent\";\n        };\n\n        return SequencedEvent;\n      })();\n\n      return SubscriptionPushRequest;\n    })();\n\n    mass.SubscriptionCancelRequest = (function () {\n      /**\n       * Properties of a SubscriptionCancelRequest.\n       * @memberof market.mass\n       * @interface ISubscriptionCancelRequest\n       * @property {Uint8Array|null} [subscriptionId] SubscriptionCancelRequest subscriptionId\n       */\n\n      /**\n       * Constructs a new SubscriptionCancelRequest.\n       * @memberof market.mass\n       * @classdesc Represents a SubscriptionCancelRequest.\n       * @implements ISubscriptionCancelRequest\n       * @constructor\n       * @param {market.mass.ISubscriptionCancelRequest=} [properties] Properties to set\n       */\n      function SubscriptionCancelRequest(properties) {\n        if (properties) {\n          for (\n            var keys = Object.keys(properties), i = 0;\n            i < keys.length;\n            ++i\n          ) {\n            if (properties[keys[i]] != null) {\n              this[keys[i]] = properties[keys[i]];\n            }\n          }\n        }\n      }\n\n      /**\n       * SubscriptionCancelRequest subscriptionId.\n       * @member {Uint8Array} subscriptionId\n       * @memberof market.mass.SubscriptionCancelRequest\n       * @instance\n       */\n      SubscriptionCancelRequest.prototype.subscriptionId = $util.newBuffer([]);\n\n      /**\n       * Creates a new SubscriptionCancelRequest instance using the specified properties.\n       * @function create\n       * @memberof market.mass.SubscriptionCancelRequest\n       * @static\n       * @param {market.mass.ISubscriptionCancelRequest=} [properties] Properties to set\n       * @returns {market.mass.SubscriptionCancelRequest} SubscriptionCancelRequest instance\n       */\n      SubscriptionCancelRequest.create = function create(properties) {\n        return new SubscriptionCancelRequest(properties);\n      };\n\n      /**\n       * Encodes the specified SubscriptionCancelRequest message. Does not implicitly {@link market.mass.SubscriptionCancelRequest.verify|verify} messages.\n       * @function encode\n       * @memberof market.mass.SubscriptionCancelRequest\n       * @static\n       * @param {market.mass.ISubscriptionCancelRequest} message SubscriptionCancelRequest message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      SubscriptionCancelRequest.encode = function encode(message, writer) {\n        if (!writer) {\n          writer = $Writer.create();\n        }\n        if (\n          message.subscriptionId != null &&\n          Object.hasOwnProperty.call(message, \"subscriptionId\")\n        ) {\n          writer.uint32(/* id 1, wireType 2 =*/ 10).bytes(\n            message.subscriptionId,\n          );\n        }\n        return writer;\n      };\n\n      /**\n       * Encodes the specified SubscriptionCancelRequest message, length delimited. Does not implicitly {@link market.mass.SubscriptionCancelRequest.verify|verify} messages.\n       * @function encodeDelimited\n       * @memberof market.mass.SubscriptionCancelRequest\n       * @static\n       * @param {market.mass.ISubscriptionCancelRequest} message SubscriptionCancelRequest message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      SubscriptionCancelRequest.encodeDelimited = function encodeDelimited(\n        message,\n        writer,\n      ) {\n        return this.encode(message, writer).ldelim();\n      };\n\n      /**\n       * Decodes a SubscriptionCancelRequest message from the specified reader or buffer.\n       * @function decode\n       * @memberof market.mass.SubscriptionCancelRequest\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @param {number} [length] Message length if known beforehand\n       * @returns {market.mass.SubscriptionCancelRequest} SubscriptionCancelRequest\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      SubscriptionCancelRequest.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader)) {\n          reader = $Reader.create(reader);\n        }\n        var end = length === undefined ? reader.len : reader.pos + length,\n          message = new $root.market.mass.SubscriptionCancelRequest();\n        while (reader.pos < end) {\n          var tag = reader.uint32();\n          switch (tag >>> 3) {\n            case 1: {\n              message.subscriptionId = reader.bytes();\n              break;\n            }\n            default:\n              reader.skipType(tag & 7);\n              break;\n          }\n        }\n        return message;\n      };\n\n      /**\n       * Decodes a SubscriptionCancelRequest message from the specified reader or buffer, length delimited.\n       * @function decodeDelimited\n       * @memberof market.mass.SubscriptionCancelRequest\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @returns {market.mass.SubscriptionCancelRequest} SubscriptionCancelRequest\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      SubscriptionCancelRequest.decodeDelimited = function decodeDelimited(\n        reader,\n      ) {\n        if (!(reader instanceof $Reader)) {\n          reader = new $Reader(reader);\n        }\n        return this.decode(reader, reader.uint32());\n      };\n\n      /**\n       * Verifies a SubscriptionCancelRequest message.\n       * @function verify\n       * @memberof market.mass.SubscriptionCancelRequest\n       * @static\n       * @param {Object.<string,*>} message Plain object to verify\n       * @returns {string|null} `null` if valid, otherwise the reason why it is not\n       */\n      SubscriptionCancelRequest.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null) {\n          return \"object expected\";\n        }\n        if (\n          message.subscriptionId != null &&\n          message.hasOwnProperty(\"subscriptionId\")\n        ) {\n          if (\n            !(message.subscriptionId &&\n                typeof message.subscriptionId.length === \"number\" ||\n              $util.isString(message.subscriptionId))\n          ) {\n            return \"subscriptionId: buffer expected\";\n          }\n        }\n        return null;\n      };\n\n      /**\n       * Creates a SubscriptionCancelRequest message from a plain object. Also converts values to their respective internal types.\n       * @function fromObject\n       * @memberof market.mass.SubscriptionCancelRequest\n       * @static\n       * @param {Object.<string,*>} object Plain object\n       * @returns {market.mass.SubscriptionCancelRequest} SubscriptionCancelRequest\n       */\n      SubscriptionCancelRequest.fromObject = function fromObject(object) {\n        if (object instanceof $root.market.mass.SubscriptionCancelRequest) {\n          return object;\n        }\n        var message = new $root.market.mass.SubscriptionCancelRequest();\n        if (object.subscriptionId != null) {\n          if (typeof object.subscriptionId === \"string\") {\n            $util.base64.decode(\n              object.subscriptionId,\n              message.subscriptionId = $util.newBuffer(\n                $util.base64.length(object.subscriptionId),\n              ),\n              0,\n            );\n          } else if (object.subscriptionId.length >= 0) {\n            message.subscriptionId = object.subscriptionId;\n          }\n        }\n        return message;\n      };\n\n      /**\n       * Creates a plain object from a SubscriptionCancelRequest message. Also converts values to other types if specified.\n       * @function toObject\n       * @memberof market.mass.SubscriptionCancelRequest\n       * @static\n       * @param {market.mass.SubscriptionCancelRequest} message SubscriptionCancelRequest\n       * @param {$protobuf.IConversionOptions} [options] Conversion options\n       * @returns {Object.<string,*>} Plain object\n       */\n      SubscriptionCancelRequest.toObject = function toObject(message, options) {\n        if (!options) {\n          options = {};\n        }\n        var object = {};\n        if (options.defaults) {\n          if (options.bytes === String) {\n            object.subscriptionId = \"\";\n          } else {\n            object.subscriptionId = [];\n            if (options.bytes !== Array) {\n              object.subscriptionId = $util.newBuffer(object.subscriptionId);\n            }\n          }\n        }\n        if (\n          message.subscriptionId != null &&\n          message.hasOwnProperty(\"subscriptionId\")\n        ) {\n          object.subscriptionId = options.bytes === String\n            ? $util.base64.encode(\n              message.subscriptionId,\n              0,\n              message.subscriptionId.length,\n            )\n            : options.bytes === Array\n            ? Array.prototype.slice.call(message.subscriptionId)\n            : message.subscriptionId;\n        }\n        return object;\n      };\n\n      /**\n       * Converts this SubscriptionCancelRequest to JSON.\n       * @function toJSON\n       * @memberof market.mass.SubscriptionCancelRequest\n       * @instance\n       * @returns {Object.<string,*>} JSON object\n       */\n      SubscriptionCancelRequest.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n      };\n\n      /**\n       * Gets the default type url for SubscriptionCancelRequest\n       * @function getTypeUrl\n       * @memberof market.mass.SubscriptionCancelRequest\n       * @static\n       * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n       * @returns {string} The default type url\n       */\n      SubscriptionCancelRequest.getTypeUrl = function getTypeUrl(\n        typeUrlPrefix,\n      ) {\n        if (typeUrlPrefix === undefined) {\n          typeUrlPrefix = \"type.googleapis.com\";\n        }\n        return typeUrlPrefix + \"/market.mass.SubscriptionCancelRequest\";\n      };\n\n      return SubscriptionCancelRequest;\n    })();\n\n    mass.SignedEvent = (function () {\n      /**\n       * Properties of a SignedEvent.\n       * @memberof market.mass\n       * @interface ISignedEvent\n       * @property {google.protobuf.IAny|null} [event] SignedEvent event\n       * @property {market.mass.ISignature|null} [signature] SignedEvent signature\n       */\n\n      /**\n       * Constructs a new SignedEvent.\n       * @memberof market.mass\n       * @classdesc Represents a SignedEvent.\n       * @implements ISignedEvent\n       * @constructor\n       * @param {market.mass.ISignedEvent=} [properties] Properties to set\n       */\n      function SignedEvent(properties) {\n        if (properties) {\n          for (\n            var keys = Object.keys(properties), i = 0;\n            i < keys.length;\n            ++i\n          ) {\n            if (properties[keys[i]] != null) {\n              this[keys[i]] = properties[keys[i]];\n            }\n          }\n        }\n      }\n\n      /**\n       * SignedEvent event.\n       * @member {google.protobuf.IAny|null|undefined} event\n       * @memberof market.mass.SignedEvent\n       * @instance\n       */\n      SignedEvent.prototype.event = null;\n\n      /**\n       * SignedEvent signature.\n       * @member {market.mass.ISignature|null|undefined} signature\n       * @memberof market.mass.SignedEvent\n       * @instance\n       */\n      SignedEvent.prototype.signature = null;\n\n      /**\n       * Creates a new SignedEvent instance using the specified properties.\n       * @function create\n       * @memberof market.mass.SignedEvent\n       * @static\n       * @param {market.mass.ISignedEvent=} [properties] Properties to set\n       * @returns {market.mass.SignedEvent} SignedEvent instance\n       */\n      SignedEvent.create = function create(properties) {\n        return new SignedEvent(properties);\n      };\n\n      /**\n       * Encodes the specified SignedEvent message. Does not implicitly {@link market.mass.SignedEvent.verify|verify} messages.\n       * @function encode\n       * @memberof market.mass.SignedEvent\n       * @static\n       * @param {market.mass.ISignedEvent} message SignedEvent message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      SignedEvent.encode = function encode(message, writer) {\n        if (!writer) {\n          writer = $Writer.create();\n        }\n        if (\n          message.event != null && Object.hasOwnProperty.call(message, \"event\")\n        ) {\n          $root.google.protobuf.Any.encode(\n            message.event,\n            writer.uint32(/* id 1, wireType 2 =*/ 10).fork(),\n          ).ldelim();\n        }\n        if (\n          message.signature != null &&\n          Object.hasOwnProperty.call(message, \"signature\")\n        ) {\n          $root.market.mass.Signature.encode(\n            message.signature,\n            writer.uint32(/* id 2, wireType 2 =*/ 18).fork(),\n          ).ldelim();\n        }\n        return writer;\n      };\n\n      /**\n       * Encodes the specified SignedEvent message, length delimited. Does not implicitly {@link market.mass.SignedEvent.verify|verify} messages.\n       * @function encodeDelimited\n       * @memberof market.mass.SignedEvent\n       * @static\n       * @param {market.mass.ISignedEvent} message SignedEvent message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      SignedEvent.encodeDelimited = function encodeDelimited(message, writer) {\n        return this.encode(message, writer).ldelim();\n      };\n\n      /**\n       * Decodes a SignedEvent message from the specified reader or buffer.\n       * @function decode\n       * @memberof market.mass.SignedEvent\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @param {number} [length] Message length if known beforehand\n       * @returns {market.mass.SignedEvent} SignedEvent\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      SignedEvent.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader)) {\n          reader = $Reader.create(reader);\n        }\n        var end = length === undefined ? reader.len : reader.pos + length,\n          message = new $root.market.mass.SignedEvent();\n        while (reader.pos < end) {\n          var tag = reader.uint32();\n          switch (tag >>> 3) {\n            case 1: {\n              message.event = $root.google.protobuf.Any.decode(\n                reader,\n                reader.uint32(),\n              );\n              break;\n            }\n            case 2: {\n              message.signature = $root.market.mass.Signature.decode(\n                reader,\n                reader.uint32(),\n              );\n              break;\n            }\n            default:\n              reader.skipType(tag & 7);\n              break;\n          }\n        }\n        return message;\n      };\n\n      /**\n       * Decodes a SignedEvent message from the specified reader or buffer, length delimited.\n       * @function decodeDelimited\n       * @memberof market.mass.SignedEvent\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @returns {market.mass.SignedEvent} SignedEvent\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      SignedEvent.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader)) {\n          reader = new $Reader(reader);\n        }\n        return this.decode(reader, reader.uint32());\n      };\n\n      /**\n       * Verifies a SignedEvent message.\n       * @function verify\n       * @memberof market.mass.SignedEvent\n       * @static\n       * @param {Object.<string,*>} message Plain object to verify\n       * @returns {string|null} `null` if valid, otherwise the reason why it is not\n       */\n      SignedEvent.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null) {\n          return \"object expected\";\n        }\n        if (message.event != null && message.hasOwnProperty(\"event\")) {\n          var error = $root.google.protobuf.Any.verify(message.event);\n          if (error) {\n            return \"event.\" + error;\n          }\n        }\n        if (message.signature != null && message.hasOwnProperty(\"signature\")) {\n          var error = $root.market.mass.Signature.verify(message.signature);\n          if (error) {\n            return \"signature.\" + error;\n          }\n        }\n        return null;\n      };\n\n      /**\n       * Creates a SignedEvent message from a plain object. Also converts values to their respective internal types.\n       * @function fromObject\n       * @memberof market.mass.SignedEvent\n       * @static\n       * @param {Object.<string,*>} object Plain object\n       * @returns {market.mass.SignedEvent} SignedEvent\n       */\n      SignedEvent.fromObject = function fromObject(object) {\n        if (object instanceof $root.market.mass.SignedEvent) {\n          return object;\n        }\n        var message = new $root.market.mass.SignedEvent();\n        if (object.event != null) {\n          if (typeof object.event !== \"object\") {\n            throw TypeError(\".market.mass.SignedEvent.event: object expected\");\n          }\n          message.event = $root.google.protobuf.Any.fromObject(object.event);\n        }\n        if (object.signature != null) {\n          if (typeof object.signature !== \"object\") {\n            throw TypeError(\n              \".market.mass.SignedEvent.signature: object expected\",\n            );\n          }\n          message.signature = $root.market.mass.Signature.fromObject(\n            object.signature,\n          );\n        }\n        return message;\n      };\n\n      /**\n       * Creates a plain object from a SignedEvent message. Also converts values to other types if specified.\n       * @function toObject\n       * @memberof market.mass.SignedEvent\n       * @static\n       * @param {market.mass.SignedEvent} message SignedEvent\n       * @param {$protobuf.IConversionOptions} [options] Conversion options\n       * @returns {Object.<string,*>} Plain object\n       */\n      SignedEvent.toObject = function toObject(message, options) {\n        if (!options) {\n          options = {};\n        }\n        var object = {};\n        if (options.defaults) {\n          object.event = null;\n          object.signature = null;\n        }\n        if (message.event != null && message.hasOwnProperty(\"event\")) {\n          object.event = $root.google.protobuf.Any.toObject(\n            message.event,\n            options,\n          );\n        }\n        if (message.signature != null && message.hasOwnProperty(\"signature\")) {\n          object.signature = $root.market.mass.Signature.toObject(\n            message.signature,\n            options,\n          );\n        }\n        return object;\n      };\n\n      /**\n       * Converts this SignedEvent to JSON.\n       * @function toJSON\n       * @memberof market.mass.SignedEvent\n       * @instance\n       * @returns {Object.<string,*>} JSON object\n       */\n      SignedEvent.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n      };\n\n      /**\n       * Gets the default type url for SignedEvent\n       * @function getTypeUrl\n       * @memberof market.mass.SignedEvent\n       * @static\n       * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n       * @returns {string} The default type url\n       */\n      SignedEvent.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n        if (typeUrlPrefix === undefined) {\n          typeUrlPrefix = \"type.googleapis.com\";\n        }\n        return typeUrlPrefix + \"/market.mass.SignedEvent\";\n      };\n\n      return SignedEvent;\n    })();\n\n    mass.EventWriteRequest = (function () {\n      /**\n       * Properties of an EventWriteRequest.\n       * @memberof market.mass\n       * @interface IEventWriteRequest\n       * @property {Array.<market.mass.ISignedEvent>|null} [events] EventWriteRequest events\n       */\n\n      /**\n       * Constructs a new EventWriteRequest.\n       * @memberof market.mass\n       * @classdesc Represents an EventWriteRequest.\n       * @implements IEventWriteRequest\n       * @constructor\n       * @param {market.mass.IEventWriteRequest=} [properties] Properties to set\n       */\n      function EventWriteRequest(properties) {\n        this.events = [];\n        if (properties) {\n          for (\n            var keys = Object.keys(properties), i = 0;\n            i < keys.length;\n            ++i\n          ) {\n            if (properties[keys[i]] != null) {\n              this[keys[i]] = properties[keys[i]];\n            }\n          }\n        }\n      }\n\n      /**\n       * EventWriteRequest events.\n       * @member {Array.<market.mass.ISignedEvent>} events\n       * @memberof market.mass.EventWriteRequest\n       * @instance\n       */\n      EventWriteRequest.prototype.events = $util.emptyArray;\n\n      /**\n       * Creates a new EventWriteRequest instance using the specified properties.\n       * @function create\n       * @memberof market.mass.EventWriteRequest\n       * @static\n       * @param {market.mass.IEventWriteRequest=} [properties] Properties to set\n       * @returns {market.mass.EventWriteRequest} EventWriteRequest instance\n       */\n      EventWriteRequest.create = function create(properties) {\n        return new EventWriteRequest(properties);\n      };\n\n      /**\n       * Encodes the specified EventWriteRequest message. Does not implicitly {@link market.mass.EventWriteRequest.verify|verify} messages.\n       * @function encode\n       * @memberof market.mass.EventWriteRequest\n       * @static\n       * @param {market.mass.IEventWriteRequest} message EventWriteRequest message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      EventWriteRequest.encode = function encode(message, writer) {\n        if (!writer) {\n          writer = $Writer.create();\n        }\n        if (message.events != null && message.events.length) {\n          for (var i = 0; i < message.events.length; ++i) {\n            $root.market.mass.SignedEvent.encode(\n              message.events[i],\n              writer.uint32(/* id 1, wireType 2 =*/ 10).fork(),\n            ).ldelim();\n          }\n        }\n        return writer;\n      };\n\n      /**\n       * Encodes the specified EventWriteRequest message, length delimited. Does not implicitly {@link market.mass.EventWriteRequest.verify|verify} messages.\n       * @function encodeDelimited\n       * @memberof market.mass.EventWriteRequest\n       * @static\n       * @param {market.mass.IEventWriteRequest} message EventWriteRequest message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      EventWriteRequest.encodeDelimited = function encodeDelimited(\n        message,\n        writer,\n      ) {\n        return this.encode(message, writer).ldelim();\n      };\n\n      /**\n       * Decodes an EventWriteRequest message from the specified reader or buffer.\n       * @function decode\n       * @memberof market.mass.EventWriteRequest\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @param {number} [length] Message length if known beforehand\n       * @returns {market.mass.EventWriteRequest} EventWriteRequest\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      EventWriteRequest.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader)) {\n          reader = $Reader.create(reader);\n        }\n        var end = length === undefined ? reader.len : reader.pos + length,\n          message = new $root.market.mass.EventWriteRequest();\n        while (reader.pos < end) {\n          var tag = reader.uint32();\n          switch (tag >>> 3) {\n            case 1: {\n              if (!(message.events && message.events.length)) {\n                message.events = [];\n              }\n              message.events.push(\n                $root.market.mass.SignedEvent.decode(reader, reader.uint32()),\n              );\n              break;\n            }\n            default:\n              reader.skipType(tag & 7);\n              break;\n          }\n        }\n        return message;\n      };\n\n      /**\n       * Decodes an EventWriteRequest message from the specified reader or buffer, length delimited.\n       * @function decodeDelimited\n       * @memberof market.mass.EventWriteRequest\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @returns {market.mass.EventWriteRequest} EventWriteRequest\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      EventWriteRequest.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader)) {\n          reader = new $Reader(reader);\n        }\n        return this.decode(reader, reader.uint32());\n      };\n\n      /**\n       * Verifies an EventWriteRequest message.\n       * @function verify\n       * @memberof market.mass.EventWriteRequest\n       * @static\n       * @param {Object.<string,*>} message Plain object to verify\n       * @returns {string|null} `null` if valid, otherwise the reason why it is not\n       */\n      EventWriteRequest.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null) {\n          return \"object expected\";\n        }\n        if (message.events != null && message.hasOwnProperty(\"events\")) {\n          if (!Array.isArray(message.events)) {\n            return \"events: array expected\";\n          }\n          for (var i = 0; i < message.events.length; ++i) {\n            var error = $root.market.mass.SignedEvent.verify(message.events[i]);\n            if (error) {\n              return \"events.\" + error;\n            }\n          }\n        }\n        return null;\n      };\n\n      /**\n       * Creates an EventWriteRequest message from a plain object. Also converts values to their respective internal types.\n       * @function fromObject\n       * @memberof market.mass.EventWriteRequest\n       * @static\n       * @param {Object.<string,*>} object Plain object\n       * @returns {market.mass.EventWriteRequest} EventWriteRequest\n       */\n      EventWriteRequest.fromObject = function fromObject(object) {\n        if (object instanceof $root.market.mass.EventWriteRequest) {\n          return object;\n        }\n        var message = new $root.market.mass.EventWriteRequest();\n        if (object.events) {\n          if (!Array.isArray(object.events)) {\n            throw TypeError(\n              \".market.mass.EventWriteRequest.events: array expected\",\n            );\n          }\n          message.events = [];\n          for (var i = 0; i < object.events.length; ++i) {\n            if (typeof object.events[i] !== \"object\") {\n              throw TypeError(\n                \".market.mass.EventWriteRequest.events: object expected\",\n              );\n            }\n            message.events[i] = $root.market.mass.SignedEvent.fromObject(\n              object.events[i],\n            );\n          }\n        }\n        return message;\n      };\n\n      /**\n       * Creates a plain object from an EventWriteRequest message. Also converts values to other types if specified.\n       * @function toObject\n       * @memberof market.mass.EventWriteRequest\n       * @static\n       * @param {market.mass.EventWriteRequest} message EventWriteRequest\n       * @param {$protobuf.IConversionOptions} [options] Conversion options\n       * @returns {Object.<string,*>} Plain object\n       */\n      EventWriteRequest.toObject = function toObject(message, options) {\n        if (!options) {\n          options = {};\n        }\n        var object = {};\n        if (options.arrays || options.defaults) {\n          object.events = [];\n        }\n        if (message.events && message.events.length) {\n          object.events = [];\n          for (var j = 0; j < message.events.length; ++j) {\n            object.events[j] = $root.market.mass.SignedEvent.toObject(\n              message.events[j],\n              options,\n            );\n          }\n        }\n        return object;\n      };\n\n      /**\n       * Converts this EventWriteRequest to JSON.\n       * @function toJSON\n       * @memberof market.mass.EventWriteRequest\n       * @instance\n       * @returns {Object.<string,*>} JSON object\n       */\n      EventWriteRequest.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n      };\n\n      /**\n       * Gets the default type url for EventWriteRequest\n       * @function getTypeUrl\n       * @memberof market.mass.EventWriteRequest\n       * @static\n       * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n       * @returns {string} The default type url\n       */\n      EventWriteRequest.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n        if (typeUrlPrefix === undefined) {\n          typeUrlPrefix = \"type.googleapis.com\";\n        }\n        return typeUrlPrefix + \"/market.mass.EventWriteRequest\";\n      };\n\n      return EventWriteRequest;\n    })();\n\n    mass.SyncStatusRequest = (function () {\n      /**\n       * Properties of a SyncStatusRequest.\n       * @memberof market.mass\n       * @interface ISyncStatusRequest\n       * @property {number|Long|null} [unpushedEvents] SyncStatusRequest unpushedEvents\n       */\n\n      /**\n       * Constructs a new SyncStatusRequest.\n       * @memberof market.mass\n       * @classdesc Represents a SyncStatusRequest.\n       * @implements ISyncStatusRequest\n       * @constructor\n       * @param {market.mass.ISyncStatusRequest=} [properties] Properties to set\n       */\n      function SyncStatusRequest(properties) {\n        if (properties) {\n          for (\n            var keys = Object.keys(properties), i = 0;\n            i < keys.length;\n            ++i\n          ) {\n            if (properties[keys[i]] != null) {\n              this[keys[i]] = properties[keys[i]];\n            }\n          }\n        }\n      }\n\n      /**\n       * SyncStatusRequest unpushedEvents.\n       * @member {number|Long} unpushedEvents\n       * @memberof market.mass.SyncStatusRequest\n       * @instance\n       */\n      SyncStatusRequest.prototype.unpushedEvents = $util.Long\n        ? $util.Long.fromBits(0, 0, true)\n        : 0;\n\n      /**\n       * Creates a new SyncStatusRequest instance using the specified properties.\n       * @function create\n       * @memberof market.mass.SyncStatusRequest\n       * @static\n       * @param {market.mass.ISyncStatusRequest=} [properties] Properties to set\n       * @returns {market.mass.SyncStatusRequest} SyncStatusRequest instance\n       */\n      SyncStatusRequest.create = function create(properties) {\n        return new SyncStatusRequest(properties);\n      };\n\n      /**\n       * Encodes the specified SyncStatusRequest message. Does not implicitly {@link market.mass.SyncStatusRequest.verify|verify} messages.\n       * @function encode\n       * @memberof market.mass.SyncStatusRequest\n       * @static\n       * @param {market.mass.ISyncStatusRequest} message SyncStatusRequest message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      SyncStatusRequest.encode = function encode(message, writer) {\n        if (!writer) {\n          writer = $Writer.create();\n        }\n        if (\n          message.unpushedEvents != null &&\n          Object.hasOwnProperty.call(message, \"unpushedEvents\")\n        ) {\n          writer.uint32(/* id 1, wireType 0 =*/ 8).uint64(\n            message.unpushedEvents,\n          );\n        }\n        return writer;\n      };\n\n      /**\n       * Encodes the specified SyncStatusRequest message, length delimited. Does not implicitly {@link market.mass.SyncStatusRequest.verify|verify} messages.\n       * @function encodeDelimited\n       * @memberof market.mass.SyncStatusRequest\n       * @static\n       * @param {market.mass.ISyncStatusRequest} message SyncStatusRequest message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      SyncStatusRequest.encodeDelimited = function encodeDelimited(\n        message,\n        writer,\n      ) {\n        return this.encode(message, writer).ldelim();\n      };\n\n      /**\n       * Decodes a SyncStatusRequest message from the specified reader or buffer.\n       * @function decode\n       * @memberof market.mass.SyncStatusRequest\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @param {number} [length] Message length if known beforehand\n       * @returns {market.mass.SyncStatusRequest} SyncStatusRequest\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      SyncStatusRequest.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader)) {\n          reader = $Reader.create(reader);\n        }\n        var end = length === undefined ? reader.len : reader.pos + length,\n          message = new $root.market.mass.SyncStatusRequest();\n        while (reader.pos < end) {\n          var tag = reader.uint32();\n          switch (tag >>> 3) {\n            case 1: {\n              message.unpushedEvents = reader.uint64();\n              break;\n            }\n            default:\n              reader.skipType(tag & 7);\n              break;\n          }\n        }\n        return message;\n      };\n\n      /**\n       * Decodes a SyncStatusRequest message from the specified reader or buffer, length delimited.\n       * @function decodeDelimited\n       * @memberof market.mass.SyncStatusRequest\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @returns {market.mass.SyncStatusRequest} SyncStatusRequest\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      SyncStatusRequest.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader)) {\n          reader = new $Reader(reader);\n        }\n        return this.decode(reader, reader.uint32());\n      };\n\n      /**\n       * Verifies a SyncStatusRequest message.\n       * @function verify\n       * @memberof market.mass.SyncStatusRequest\n       * @static\n       * @param {Object.<string,*>} message Plain object to verify\n       * @returns {string|null} `null` if valid, otherwise the reason why it is not\n       */\n      SyncStatusRequest.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null) {\n          return \"object expected\";\n        }\n        if (\n          message.unpushedEvents != null &&\n          message.hasOwnProperty(\"unpushedEvents\")\n        ) {\n          if (\n            !$util.isInteger(message.unpushedEvents) &&\n            !(message.unpushedEvents &&\n              $util.isInteger(message.unpushedEvents.low) &&\n              $util.isInteger(message.unpushedEvents.high))\n          ) {\n            return \"unpushedEvents: integer|Long expected\";\n          }\n        }\n        return null;\n      };\n\n      /**\n       * Creates a SyncStatusRequest message from a plain object. Also converts values to their respective internal types.\n       * @function fromObject\n       * @memberof market.mass.SyncStatusRequest\n       * @static\n       * @param {Object.<string,*>} object Plain object\n       * @returns {market.mass.SyncStatusRequest} SyncStatusRequest\n       */\n      SyncStatusRequest.fromObject = function fromObject(object) {\n        if (object instanceof $root.market.mass.SyncStatusRequest) {\n          return object;\n        }\n        var message = new $root.market.mass.SyncStatusRequest();\n        if (object.unpushedEvents != null) {\n          if ($util.Long) {\n            (message.unpushedEvents = $util.Long.fromValue(\n              object.unpushedEvents,\n            )).unsigned = true;\n          } else if (typeof object.unpushedEvents === \"string\") {\n            message.unpushedEvents = parseInt(object.unpushedEvents, 10);\n          } else if (typeof object.unpushedEvents === \"number\") {\n            message.unpushedEvents = object.unpushedEvents;\n          } else if (typeof object.unpushedEvents === \"object\") {\n            message.unpushedEvents = new $util.LongBits(\n              object.unpushedEvents.low >>> 0,\n              object.unpushedEvents.high >>> 0,\n            ).toNumber(true);\n          }\n        }\n        return message;\n      };\n\n      /**\n       * Creates a plain object from a SyncStatusRequest message. Also converts values to other types if specified.\n       * @function toObject\n       * @memberof market.mass.SyncStatusRequest\n       * @static\n       * @param {market.mass.SyncStatusRequest} message SyncStatusRequest\n       * @param {$protobuf.IConversionOptions} [options] Conversion options\n       * @returns {Object.<string,*>} Plain object\n       */\n      SyncStatusRequest.toObject = function toObject(message, options) {\n        if (!options) {\n          options = {};\n        }\n        var object = {};\n        if (options.defaults) {\n          if ($util.Long) {\n            var long = new $util.Long(0, 0, true);\n            object.unpushedEvents = options.longs === String\n              ? long.toString()\n              : options.longs === Number\n              ? long.toNumber()\n              : long;\n          } else {\n            object.unpushedEvents = options.longs === String ? \"0\" : 0;\n          }\n        }\n        if (\n          message.unpushedEvents != null &&\n          message.hasOwnProperty(\"unpushedEvents\")\n        ) {\n          if (typeof message.unpushedEvents === \"number\") {\n            object.unpushedEvents = options.longs === String\n              ? String(message.unpushedEvents)\n              : message.unpushedEvents;\n          } else {\n            object.unpushedEvents = options.longs === String\n              ? $util.Long.prototype.toString.call(message.unpushedEvents)\n              : options.longs === Number\n              ? new $util.LongBits(\n                message.unpushedEvents.low >>> 0,\n                message.unpushedEvents.high >>> 0,\n              ).toNumber(true)\n              : message.unpushedEvents;\n          }\n        }\n        return object;\n      };\n\n      /**\n       * Converts this SyncStatusRequest to JSON.\n       * @function toJSON\n       * @memberof market.mass.SyncStatusRequest\n       * @instance\n       * @returns {Object.<string,*>} JSON object\n       */\n      SyncStatusRequest.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n      };\n\n      /**\n       * Gets the default type url for SyncStatusRequest\n       * @function getTypeUrl\n       * @memberof market.mass.SyncStatusRequest\n       * @static\n       * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n       * @returns {string} The default type url\n       */\n      SyncStatusRequest.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n        if (typeUrlPrefix === undefined) {\n          typeUrlPrefix = \"type.googleapis.com\";\n        }\n        return typeUrlPrefix + \"/market.mass.SyncStatusRequest\";\n      };\n\n      return SyncStatusRequest;\n    })();\n\n    mass.PingRequest = (function () {\n      /**\n       * Properties of a PingRequest.\n       * @memberof market.mass\n       * @interface IPingRequest\n       */\n\n      /**\n       * Constructs a new PingRequest.\n       * @memberof market.mass\n       * @classdesc Represents a PingRequest.\n       * @implements IPingRequest\n       * @constructor\n       * @param {market.mass.IPingRequest=} [properties] Properties to set\n       */\n      function PingRequest(properties) {\n        if (properties) {\n          for (\n            var keys = Object.keys(properties), i = 0;\n            i < keys.length;\n            ++i\n          ) {\n            if (properties[keys[i]] != null) {\n              this[keys[i]] = properties[keys[i]];\n            }\n          }\n        }\n      }\n\n      /**\n       * Creates a new PingRequest instance using the specified properties.\n       * @function create\n       * @memberof market.mass.PingRequest\n       * @static\n       * @param {market.mass.IPingRequest=} [properties] Properties to set\n       * @returns {market.mass.PingRequest} PingRequest instance\n       */\n      PingRequest.create = function create(properties) {\n        return new PingRequest(properties);\n      };\n\n      /**\n       * Encodes the specified PingRequest message. Does not implicitly {@link market.mass.PingRequest.verify|verify} messages.\n       * @function encode\n       * @memberof market.mass.PingRequest\n       * @static\n       * @param {market.mass.IPingRequest} message PingRequest message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      PingRequest.encode = function encode(message, writer) {\n        if (!writer) {\n          writer = $Writer.create();\n        }\n        return writer;\n      };\n\n      /**\n       * Encodes the specified PingRequest message, length delimited. Does not implicitly {@link market.mass.PingRequest.verify|verify} messages.\n       * @function encodeDelimited\n       * @memberof market.mass.PingRequest\n       * @static\n       * @param {market.mass.IPingRequest} message PingRequest message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      PingRequest.encodeDelimited = function encodeDelimited(message, writer) {\n        return this.encode(message, writer).ldelim();\n      };\n\n      /**\n       * Decodes a PingRequest message from the specified reader or buffer.\n       * @function decode\n       * @memberof market.mass.PingRequest\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @param {number} [length] Message length if known beforehand\n       * @returns {market.mass.PingRequest} PingRequest\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      PingRequest.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader)) {\n          reader = $Reader.create(reader);\n        }\n        var end = length === undefined ? reader.len : reader.pos + length,\n          message = new $root.market.mass.PingRequest();\n        while (reader.pos < end) {\n          var tag = reader.uint32();\n          switch (tag >>> 3) {\n            default:\n              reader.skipType(tag & 7);\n              break;\n          }\n        }\n        return message;\n      };\n\n      /**\n       * Decodes a PingRequest message from the specified reader or buffer, length delimited.\n       * @function decodeDelimited\n       * @memberof market.mass.PingRequest\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @returns {market.mass.PingRequest} PingRequest\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      PingRequest.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader)) {\n          reader = new $Reader(reader);\n        }\n        return this.decode(reader, reader.uint32());\n      };\n\n      /**\n       * Verifies a PingRequest message.\n       * @function verify\n       * @memberof market.mass.PingRequest\n       * @static\n       * @param {Object.<string,*>} message Plain object to verify\n       * @returns {string|null} `null` if valid, otherwise the reason why it is not\n       */\n      PingRequest.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null) {\n          return \"object expected\";\n        }\n        return null;\n      };\n\n      /**\n       * Creates a PingRequest message from a plain object. Also converts values to their respective internal types.\n       * @function fromObject\n       * @memberof market.mass.PingRequest\n       * @static\n       * @param {Object.<string,*>} object Plain object\n       * @returns {market.mass.PingRequest} PingRequest\n       */\n      PingRequest.fromObject = function fromObject(object) {\n        if (object instanceof $root.market.mass.PingRequest) {\n          return object;\n        }\n        return new $root.market.mass.PingRequest();\n      };\n\n      /**\n       * Creates a plain object from a PingRequest message. Also converts values to other types if specified.\n       * @function toObject\n       * @memberof market.mass.PingRequest\n       * @static\n       * @param {market.mass.PingRequest} message PingRequest\n       * @param {$protobuf.IConversionOptions} [options] Conversion options\n       * @returns {Object.<string,*>} Plain object\n       */\n      PingRequest.toObject = function toObject() {\n        return {};\n      };\n\n      /**\n       * Converts this PingRequest to JSON.\n       * @function toJSON\n       * @memberof market.mass.PingRequest\n       * @instance\n       * @returns {Object.<string,*>} JSON object\n       */\n      PingRequest.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n      };\n\n      /**\n       * Gets the default type url for PingRequest\n       * @function getTypeUrl\n       * @memberof market.mass.PingRequest\n       * @static\n       * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n       * @returns {string} The default type url\n       */\n      PingRequest.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n        if (typeUrlPrefix === undefined) {\n          typeUrlPrefix = \"type.googleapis.com\";\n        }\n        return typeUrlPrefix + \"/market.mass.PingRequest\";\n      };\n\n      return PingRequest;\n    })();\n\n    mass.Manifest = (function () {\n      /**\n       * Properties of a Manifest.\n       * @memberof market.mass\n       * @interface IManifest\n       * @property {market.mass.IUint256|null} [tokenId] Manifest tokenId\n       * @property {Array.<market.mass.IPayee>|null} [payees] Manifest payees\n       * @property {Array.<market.mass.IShopCurrency>|null} [acceptedCurrencies] Manifest acceptedCurrencies\n       * @property {market.mass.IShopCurrency|null} [pricingCurrency] Manifest pricingCurrency\n       * @property {Array.<market.mass.IShippingRegion>|null} [shippingRegions] Manifest shippingRegions\n       */\n\n      /**\n       * Constructs a new Manifest.\n       * @memberof market.mass\n       * @classdesc Represents a Manifest.\n       * @implements IManifest\n       * @constructor\n       * @param {market.mass.IManifest=} [properties] Properties to set\n       */\n      function Manifest(properties) {\n        this.payees = [];\n        this.acceptedCurrencies = [];\n        this.shippingRegions = [];\n        if (properties) {\n          for (\n            var keys = Object.keys(properties), i = 0;\n            i < keys.length;\n            ++i\n          ) {\n            if (properties[keys[i]] != null) {\n              this[keys[i]] = properties[keys[i]];\n            }\n          }\n        }\n      }\n\n      /**\n       * Manifest tokenId.\n       * @member {market.mass.IUint256|null|undefined} tokenId\n       * @memberof market.mass.Manifest\n       * @instance\n       */\n      Manifest.prototype.tokenId = null;\n\n      /**\n       * Manifest payees.\n       * @member {Array.<market.mass.IPayee>} payees\n       * @memberof market.mass.Manifest\n       * @instance\n       */\n      Manifest.prototype.payees = $util.emptyArray;\n\n      /**\n       * Manifest acceptedCurrencies.\n       * @member {Array.<market.mass.IShopCurrency>} acceptedCurrencies\n       * @memberof market.mass.Manifest\n       * @instance\n       */\n      Manifest.prototype.acceptedCurrencies = $util.emptyArray;\n\n      /**\n       * Manifest pricingCurrency.\n       * @member {market.mass.IShopCurrency|null|undefined} pricingCurrency\n       * @memberof market.mass.Manifest\n       * @instance\n       */\n      Manifest.prototype.pricingCurrency = null;\n\n      /**\n       * Manifest shippingRegions.\n       * @member {Array.<market.mass.IShippingRegion>} shippingRegions\n       * @memberof market.mass.Manifest\n       * @instance\n       */\n      Manifest.prototype.shippingRegions = $util.emptyArray;\n\n      /**\n       * Creates a new Manifest instance using the specified properties.\n       * @function create\n       * @memberof market.mass.Manifest\n       * @static\n       * @param {market.mass.IManifest=} [properties] Properties to set\n       * @returns {market.mass.Manifest} Manifest instance\n       */\n      Manifest.create = function create(properties) {\n        return new Manifest(properties);\n      };\n\n      /**\n       * Encodes the specified Manifest message. Does not implicitly {@link market.mass.Manifest.verify|verify} messages.\n       * @function encode\n       * @memberof market.mass.Manifest\n       * @static\n       * @param {market.mass.IManifest} message Manifest message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      Manifest.encode = function encode(message, writer) {\n        if (!writer) {\n          writer = $Writer.create();\n        }\n        if (\n          message.tokenId != null &&\n          Object.hasOwnProperty.call(message, \"tokenId\")\n        ) {\n          $root.market.mass.Uint256.encode(\n            message.tokenId,\n            writer.uint32(/* id 1, wireType 2 =*/ 10).fork(),\n          ).ldelim();\n        }\n        if (message.payees != null && message.payees.length) {\n          for (var i = 0; i < message.payees.length; ++i) {\n            $root.market.mass.Payee.encode(\n              message.payees[i],\n              writer.uint32(/* id 2, wireType 2 =*/ 18).fork(),\n            ).ldelim();\n          }\n        }\n        if (\n          message.acceptedCurrencies != null &&\n          message.acceptedCurrencies.length\n        ) {\n          for (var i = 0; i < message.acceptedCurrencies.length; ++i) {\n            $root.market.mass.ShopCurrency.encode(\n              message.acceptedCurrencies[i],\n              writer.uint32(/* id 3, wireType 2 =*/ 26).fork(),\n            ).ldelim();\n          }\n        }\n        if (\n          message.pricingCurrency != null &&\n          Object.hasOwnProperty.call(message, \"pricingCurrency\")\n        ) {\n          $root.market.mass.ShopCurrency.encode(\n            message.pricingCurrency,\n            writer.uint32(/* id 4, wireType 2 =*/ 34).fork(),\n          ).ldelim();\n        }\n        if (message.shippingRegions != null && message.shippingRegions.length) {\n          for (var i = 0; i < message.shippingRegions.length; ++i) {\n            $root.market.mass.ShippingRegion.encode(\n              message.shippingRegions[i],\n              writer.uint32(/* id 5, wireType 2 =*/ 42).fork(),\n            ).ldelim();\n          }\n        }\n        return writer;\n      };\n\n      /**\n       * Encodes the specified Manifest message, length delimited. Does not implicitly {@link market.mass.Manifest.verify|verify} messages.\n       * @function encodeDelimited\n       * @memberof market.mass.Manifest\n       * @static\n       * @param {market.mass.IManifest} message Manifest message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      Manifest.encodeDelimited = function encodeDelimited(message, writer) {\n        return this.encode(message, writer).ldelim();\n      };\n\n      /**\n       * Decodes a Manifest message from the specified reader or buffer.\n       * @function decode\n       * @memberof market.mass.Manifest\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @param {number} [length] Message length if known beforehand\n       * @returns {market.mass.Manifest} Manifest\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      Manifest.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader)) {\n          reader = $Reader.create(reader);\n        }\n        var end = length === undefined ? reader.len : reader.pos + length,\n          message = new $root.market.mass.Manifest();\n        while (reader.pos < end) {\n          var tag = reader.uint32();\n          switch (tag >>> 3) {\n            case 1: {\n              message.tokenId = $root.market.mass.Uint256.decode(\n                reader,\n                reader.uint32(),\n              );\n              break;\n            }\n            case 2: {\n              if (!(message.payees && message.payees.length)) {\n                message.payees = [];\n              }\n              message.payees.push(\n                $root.market.mass.Payee.decode(reader, reader.uint32()),\n              );\n              break;\n            }\n            case 3: {\n              if (\n                !(message.acceptedCurrencies &&\n                  message.acceptedCurrencies.length)\n              ) {\n                message.acceptedCurrencies = [];\n              }\n              message.acceptedCurrencies.push(\n                $root.market.mass.ShopCurrency.decode(reader, reader.uint32()),\n              );\n              break;\n            }\n            case 4: {\n              message.pricingCurrency = $root.market.mass.ShopCurrency.decode(\n                reader,\n                reader.uint32(),\n              );\n              break;\n            }\n            case 5: {\n              if (\n                !(message.shippingRegions && message.shippingRegions.length)\n              ) {\n                message.shippingRegions = [];\n              }\n              message.shippingRegions.push(\n                $root.market.mass.ShippingRegion.decode(\n                  reader,\n                  reader.uint32(),\n                ),\n              );\n              break;\n            }\n            default:\n              reader.skipType(tag & 7);\n              break;\n          }\n        }\n        return message;\n      };\n\n      /**\n       * Decodes a Manifest message from the specified reader or buffer, length delimited.\n       * @function decodeDelimited\n       * @memberof market.mass.Manifest\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @returns {market.mass.Manifest} Manifest\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      Manifest.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader)) {\n          reader = new $Reader(reader);\n        }\n        return this.decode(reader, reader.uint32());\n      };\n\n      /**\n       * Verifies a Manifest message.\n       * @function verify\n       * @memberof market.mass.Manifest\n       * @static\n       * @param {Object.<string,*>} message Plain object to verify\n       * @returns {string|null} `null` if valid, otherwise the reason why it is not\n       */\n      Manifest.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null) {\n          return \"object expected\";\n        }\n        if (message.tokenId != null && message.hasOwnProperty(\"tokenId\")) {\n          var error = $root.market.mass.Uint256.verify(message.tokenId);\n          if (error) {\n            return \"tokenId.\" + error;\n          }\n        }\n        if (message.payees != null && message.hasOwnProperty(\"payees\")) {\n          if (!Array.isArray(message.payees)) {\n            return \"payees: array expected\";\n          }\n          for (var i = 0; i < message.payees.length; ++i) {\n            var error = $root.market.mass.Payee.verify(message.payees[i]);\n            if (error) {\n              return \"payees.\" + error;\n            }\n          }\n        }\n        if (\n          message.acceptedCurrencies != null &&\n          message.hasOwnProperty(\"acceptedCurrencies\")\n        ) {\n          if (!Array.isArray(message.acceptedCurrencies)) {\n            return \"acceptedCurrencies: array expected\";\n          }\n          for (var i = 0; i < message.acceptedCurrencies.length; ++i) {\n            var error = $root.market.mass.ShopCurrency.verify(\n              message.acceptedCurrencies[i],\n            );\n            if (error) {\n              return \"acceptedCurrencies.\" + error;\n            }\n          }\n        }\n        if (\n          message.pricingCurrency != null &&\n          message.hasOwnProperty(\"pricingCurrency\")\n        ) {\n          var error = $root.market.mass.ShopCurrency.verify(\n            message.pricingCurrency,\n          );\n          if (error) {\n            return \"pricingCurrency.\" + error;\n          }\n        }\n        if (\n          message.shippingRegions != null &&\n          message.hasOwnProperty(\"shippingRegions\")\n        ) {\n          if (!Array.isArray(message.shippingRegions)) {\n            return \"shippingRegions: array expected\";\n          }\n          for (var i = 0; i < message.shippingRegions.length; ++i) {\n            var error = $root.market.mass.ShippingRegion.verify(\n              message.shippingRegions[i],\n            );\n            if (error) {\n              return \"shippingRegions.\" + error;\n            }\n          }\n        }\n        return null;\n      };\n\n      /**\n       * Creates a Manifest message from a plain object. Also converts values to their respective internal types.\n       * @function fromObject\n       * @memberof market.mass.Manifest\n       * @static\n       * @param {Object.<string,*>} object Plain object\n       * @returns {market.mass.Manifest} Manifest\n       */\n      Manifest.fromObject = function fromObject(object) {\n        if (object instanceof $root.market.mass.Manifest) {\n          return object;\n        }\n        var message = new $root.market.mass.Manifest();\n        if (object.tokenId != null) {\n          if (typeof object.tokenId !== \"object\") {\n            throw TypeError(\".market.mass.Manifest.tokenId: object expected\");\n          }\n          message.tokenId = $root.market.mass.Uint256.fromObject(\n            object.tokenId,\n          );\n        }\n        if (object.payees) {\n          if (!Array.isArray(object.payees)) {\n            throw TypeError(\".market.mass.Manifest.payees: array expected\");\n          }\n          message.payees = [];\n          for (var i = 0; i < object.payees.length; ++i) {\n            if (typeof object.payees[i] !== \"object\") {\n              throw TypeError(\".market.mass.Manifest.payees: object expected\");\n            }\n            message.payees[i] = $root.market.mass.Payee.fromObject(\n              object.payees[i],\n            );\n          }\n        }\n        if (object.acceptedCurrencies) {\n          if (!Array.isArray(object.acceptedCurrencies)) {\n            throw TypeError(\n              \".market.mass.Manifest.acceptedCurrencies: array expected\",\n            );\n          }\n          message.acceptedCurrencies = [];\n          for (var i = 0; i < object.acceptedCurrencies.length; ++i) {\n            if (typeof object.acceptedCurrencies[i] !== \"object\") {\n              throw TypeError(\n                \".market.mass.Manifest.acceptedCurrencies: object expected\",\n              );\n            }\n            message.acceptedCurrencies[i] = $root.market.mass.ShopCurrency\n              .fromObject(object.acceptedCurrencies[i]);\n          }\n        }\n        if (object.pricingCurrency != null) {\n          if (typeof object.pricingCurrency !== \"object\") {\n            throw TypeError(\n              \".market.mass.Manifest.pricingCurrency: object expected\",\n            );\n          }\n          message.pricingCurrency = $root.market.mass.ShopCurrency.fromObject(\n            object.pricingCurrency,\n          );\n        }\n        if (object.shippingRegions) {\n          if (!Array.isArray(object.shippingRegions)) {\n            throw TypeError(\n              \".market.mass.Manifest.shippingRegions: array expected\",\n            );\n          }\n          message.shippingRegions = [];\n          for (var i = 0; i < object.shippingRegions.length; ++i) {\n            if (typeof object.shippingRegions[i] !== \"object\") {\n              throw TypeError(\n                \".market.mass.Manifest.shippingRegions: object expected\",\n              );\n            }\n            message.shippingRegions[i] = $root.market.mass.ShippingRegion\n              .fromObject(object.shippingRegions[i]);\n          }\n        }\n        return message;\n      };\n\n      /**\n       * Creates a plain object from a Manifest message. Also converts values to other types if specified.\n       * @function toObject\n       * @memberof market.mass.Manifest\n       * @static\n       * @param {market.mass.Manifest} message Manifest\n       * @param {$protobuf.IConversionOptions} [options] Conversion options\n       * @returns {Object.<string,*>} Plain object\n       */\n      Manifest.toObject = function toObject(message, options) {\n        if (!options) {\n          options = {};\n        }\n        var object = {};\n        if (options.arrays || options.defaults) {\n          object.payees = [];\n          object.acceptedCurrencies = [];\n          object.shippingRegions = [];\n        }\n        if (options.defaults) {\n          object.tokenId = null;\n          object.pricingCurrency = null;\n        }\n        if (message.tokenId != null && message.hasOwnProperty(\"tokenId\")) {\n          object.tokenId = $root.market.mass.Uint256.toObject(\n            message.tokenId,\n            options,\n          );\n        }\n        if (message.payees && message.payees.length) {\n          object.payees = [];\n          for (var j = 0; j < message.payees.length; ++j) {\n            object.payees[j] = $root.market.mass.Payee.toObject(\n              message.payees[j],\n              options,\n            );\n          }\n        }\n        if (message.acceptedCurrencies && message.acceptedCurrencies.length) {\n          object.acceptedCurrencies = [];\n          for (var j = 0; j < message.acceptedCurrencies.length; ++j) {\n            object.acceptedCurrencies[j] = $root.market.mass.ShopCurrency\n              .toObject(message.acceptedCurrencies[j], options);\n          }\n        }\n        if (\n          message.pricingCurrency != null &&\n          message.hasOwnProperty(\"pricingCurrency\")\n        ) {\n          object.pricingCurrency = $root.market.mass.ShopCurrency.toObject(\n            message.pricingCurrency,\n            options,\n          );\n        }\n        if (message.shippingRegions && message.shippingRegions.length) {\n          object.shippingRegions = [];\n          for (var j = 0; j < message.shippingRegions.length; ++j) {\n            object.shippingRegions[j] = $root.market.mass.ShippingRegion\n              .toObject(message.shippingRegions[j], options);\n          }\n        }\n        return object;\n      };\n\n      /**\n       * Converts this Manifest to JSON.\n       * @function toJSON\n       * @memberof market.mass.Manifest\n       * @instance\n       * @returns {Object.<string,*>} JSON object\n       */\n      Manifest.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n      };\n\n      /**\n       * Gets the default type url for Manifest\n       * @function getTypeUrl\n       * @memberof market.mass.Manifest\n       * @static\n       * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n       * @returns {string} The default type url\n       */\n      Manifest.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n        if (typeUrlPrefix === undefined) {\n          typeUrlPrefix = \"type.googleapis.com\";\n        }\n        return typeUrlPrefix + \"/market.mass.Manifest\";\n      };\n\n      return Manifest;\n    })();\n\n    mass.UpdateManifest = (function () {\n      /**\n       * Properties of an UpdateManifest.\n       * @memberof market.mass\n       * @interface IUpdateManifest\n       * @property {market.mass.IPayee|null} [addPayee] UpdateManifest addPayee\n       * @property {market.mass.IPayee|null} [removePayee] UpdateManifest removePayee\n       * @property {Array.<market.mass.IShopCurrency>|null} [addAcceptedCurrencies] UpdateManifest addAcceptedCurrencies\n       * @property {Array.<market.mass.IShopCurrency>|null} [removeAcceptedCurrencies] UpdateManifest removeAcceptedCurrencies\n       * @property {market.mass.IShopCurrency|null} [setPricingCurrency] UpdateManifest setPricingCurrency\n       * @property {Array.<market.mass.IShippingRegion>|null} [addShippingRegions] UpdateManifest addShippingRegions\n       * @property {Array.<string>|null} [removeShippingRegions] UpdateManifest removeShippingRegions\n       */\n\n      /**\n       * Constructs a new UpdateManifest.\n       * @memberof market.mass\n       * @classdesc Represents an UpdateManifest.\n       * @implements IUpdateManifest\n       * @constructor\n       * @param {market.mass.IUpdateManifest=} [properties] Properties to set\n       */\n      function UpdateManifest(properties) {\n        this.addAcceptedCurrencies = [];\n        this.removeAcceptedCurrencies = [];\n        this.addShippingRegions = [];\n        this.removeShippingRegions = [];\n        if (properties) {\n          for (\n            var keys = Object.keys(properties), i = 0;\n            i < keys.length;\n            ++i\n          ) {\n            if (properties[keys[i]] != null) {\n              this[keys[i]] = properties[keys[i]];\n            }\n          }\n        }\n      }\n\n      /**\n       * UpdateManifest addPayee.\n       * @member {market.mass.IPayee|null|undefined} addPayee\n       * @memberof market.mass.UpdateManifest\n       * @instance\n       */\n      UpdateManifest.prototype.addPayee = null;\n\n      /**\n       * UpdateManifest removePayee.\n       * @member {market.mass.IPayee|null|undefined} removePayee\n       * @memberof market.mass.UpdateManifest\n       * @instance\n       */\n      UpdateManifest.prototype.removePayee = null;\n\n      /**\n       * UpdateManifest addAcceptedCurrencies.\n       * @member {Array.<market.mass.IShopCurrency>} addAcceptedCurrencies\n       * @memberof market.mass.UpdateManifest\n       * @instance\n       */\n      UpdateManifest.prototype.addAcceptedCurrencies = $util.emptyArray;\n\n      /**\n       * UpdateManifest removeAcceptedCurrencies.\n       * @member {Array.<market.mass.IShopCurrency>} removeAcceptedCurrencies\n       * @memberof market.mass.UpdateManifest\n       * @instance\n       */\n      UpdateManifest.prototype.removeAcceptedCurrencies = $util.emptyArray;\n\n      /**\n       * UpdateManifest setPricingCurrency.\n       * @member {market.mass.IShopCurrency|null|undefined} setPricingCurrency\n       * @memberof market.mass.UpdateManifest\n       * @instance\n       */\n      UpdateManifest.prototype.setPricingCurrency = null;\n\n      /**\n       * UpdateManifest addShippingRegions.\n       * @member {Array.<market.mass.IShippingRegion>} addShippingRegions\n       * @memberof market.mass.UpdateManifest\n       * @instance\n       */\n      UpdateManifest.prototype.addShippingRegions = $util.emptyArray;\n\n      /**\n       * UpdateManifest removeShippingRegions.\n       * @member {Array.<string>} removeShippingRegions\n       * @memberof market.mass.UpdateManifest\n       * @instance\n       */\n      UpdateManifest.prototype.removeShippingRegions = $util.emptyArray;\n\n      // OneOf field names bound to virtual getters and setters\n      var $oneOfFields;\n\n      // Virtual OneOf for proto3 optional field\n      Object.defineProperty(UpdateManifest.prototype, \"_addPayee\", {\n        get: $util.oneOfGetter($oneOfFields = [\"addPayee\"]),\n        set: $util.oneOfSetter($oneOfFields),\n      });\n\n      // Virtual OneOf for proto3 optional field\n      Object.defineProperty(UpdateManifest.prototype, \"_removePayee\", {\n        get: $util.oneOfGetter($oneOfFields = [\"removePayee\"]),\n        set: $util.oneOfSetter($oneOfFields),\n      });\n\n      // Virtual OneOf for proto3 optional field\n      Object.defineProperty(UpdateManifest.prototype, \"_setPricingCurrency\", {\n        get: $util.oneOfGetter($oneOfFields = [\"setPricingCurrency\"]),\n        set: $util.oneOfSetter($oneOfFields),\n      });\n\n      /**\n       * Creates a new UpdateManifest instance using the specified properties.\n       * @function create\n       * @memberof market.mass.UpdateManifest\n       * @static\n       * @param {market.mass.IUpdateManifest=} [properties] Properties to set\n       * @returns {market.mass.UpdateManifest} UpdateManifest instance\n       */\n      UpdateManifest.create = function create(properties) {\n        return new UpdateManifest(properties);\n      };\n\n      /**\n       * Encodes the specified UpdateManifest message. Does not implicitly {@link market.mass.UpdateManifest.verify|verify} messages.\n       * @function encode\n       * @memberof market.mass.UpdateManifest\n       * @static\n       * @param {market.mass.IUpdateManifest} message UpdateManifest message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      UpdateManifest.encode = function encode(message, writer) {\n        if (!writer) {\n          writer = $Writer.create();\n        }\n        if (\n          message.addPayee != null &&\n          Object.hasOwnProperty.call(message, \"addPayee\")\n        ) {\n          $root.market.mass.Payee.encode(\n            message.addPayee,\n            writer.uint32(/* id 1, wireType 2 =*/ 10).fork(),\n          ).ldelim();\n        }\n        if (\n          message.removePayee != null &&\n          Object.hasOwnProperty.call(message, \"removePayee\")\n        ) {\n          $root.market.mass.Payee.encode(\n            message.removePayee,\n            writer.uint32(/* id 2, wireType 2 =*/ 18).fork(),\n          ).ldelim();\n        }\n        if (\n          message.addAcceptedCurrencies != null &&\n          message.addAcceptedCurrencies.length\n        ) {\n          for (var i = 0; i < message.addAcceptedCurrencies.length; ++i) {\n            $root.market.mass.ShopCurrency.encode(\n              message.addAcceptedCurrencies[i],\n              writer.uint32(/* id 3, wireType 2 =*/ 26).fork(),\n            ).ldelim();\n          }\n        }\n        if (\n          message.removeAcceptedCurrencies != null &&\n          message.removeAcceptedCurrencies.length\n        ) {\n          for (var i = 0; i < message.removeAcceptedCurrencies.length; ++i) {\n            $root.market.mass.ShopCurrency.encode(\n              message.removeAcceptedCurrencies[i],\n              writer.uint32(/* id 4, wireType 2 =*/ 34).fork(),\n            ).ldelim();\n          }\n        }\n        if (\n          message.setPricingCurrency != null &&\n          Object.hasOwnProperty.call(message, \"setPricingCurrency\")\n        ) {\n          $root.market.mass.ShopCurrency.encode(\n            message.setPricingCurrency,\n            writer.uint32(/* id 5, wireType 2 =*/ 42).fork(),\n          ).ldelim();\n        }\n        if (\n          message.addShippingRegions != null &&\n          message.addShippingRegions.length\n        ) {\n          for (var i = 0; i < message.addShippingRegions.length; ++i) {\n            $root.market.mass.ShippingRegion.encode(\n              message.addShippingRegions[i],\n              writer.uint32(/* id 6, wireType 2 =*/ 50).fork(),\n            ).ldelim();\n          }\n        }\n        if (\n          message.removeShippingRegions != null &&\n          message.removeShippingRegions.length\n        ) {\n          for (var i = 0; i < message.removeShippingRegions.length; ++i) {\n            writer.uint32(/* id 7, wireType 2 =*/ 58).string(\n              message.removeShippingRegions[i],\n            );\n          }\n        }\n        return writer;\n      };\n\n      /**\n       * Encodes the specified UpdateManifest message, length delimited. Does not implicitly {@link market.mass.UpdateManifest.verify|verify} messages.\n       * @function encodeDelimited\n       * @memberof market.mass.UpdateManifest\n       * @static\n       * @param {market.mass.IUpdateManifest} message UpdateManifest message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      UpdateManifest.encodeDelimited = function encodeDelimited(\n        message,\n        writer,\n      ) {\n        return this.encode(message, writer).ldelim();\n      };\n\n      /**\n       * Decodes an UpdateManifest message from the specified reader or buffer.\n       * @function decode\n       * @memberof market.mass.UpdateManifest\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @param {number} [length] Message length if known beforehand\n       * @returns {market.mass.UpdateManifest} UpdateManifest\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      UpdateManifest.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader)) {\n          reader = $Reader.create(reader);\n        }\n        var end = length === undefined ? reader.len : reader.pos + length,\n          message = new $root.market.mass.UpdateManifest();\n        while (reader.pos < end) {\n          var tag = reader.uint32();\n          switch (tag >>> 3) {\n            case 1: {\n              message.addPayee = $root.market.mass.Payee.decode(\n                reader,\n                reader.uint32(),\n              );\n              break;\n            }\n            case 2: {\n              message.removePayee = $root.market.mass.Payee.decode(\n                reader,\n                reader.uint32(),\n              );\n              break;\n            }\n            case 3: {\n              if (\n                !(message.addAcceptedCurrencies &&\n                  message.addAcceptedCurrencies.length)\n              ) {\n                message.addAcceptedCurrencies = [];\n              }\n              message.addAcceptedCurrencies.push(\n                $root.market.mass.ShopCurrency.decode(reader, reader.uint32()),\n              );\n              break;\n            }\n            case 4: {\n              if (\n                !(message.removeAcceptedCurrencies &&\n                  message.removeAcceptedCurrencies.length)\n              ) {\n                message.removeAcceptedCurrencies = [];\n              }\n              message.removeAcceptedCurrencies.push(\n                $root.market.mass.ShopCurrency.decode(reader, reader.uint32()),\n              );\n              break;\n            }\n            case 5: {\n              message.setPricingCurrency = $root.market.mass.ShopCurrency\n                .decode(reader, reader.uint32());\n              break;\n            }\n            case 6: {\n              if (\n                !(message.addShippingRegions &&\n                  message.addShippingRegions.length)\n              ) {\n                message.addShippingRegions = [];\n              }\n              message.addShippingRegions.push(\n                $root.market.mass.ShippingRegion.decode(\n                  reader,\n                  reader.uint32(),\n                ),\n              );\n              break;\n            }\n            case 7: {\n              if (\n                !(message.removeShippingRegions &&\n                  message.removeShippingRegions.length)\n              ) {\n                message.removeShippingRegions = [];\n              }\n              message.removeShippingRegions.push(reader.string());\n              break;\n            }\n            default:\n              reader.skipType(tag & 7);\n              break;\n          }\n        }\n        return message;\n      };\n\n      /**\n       * Decodes an UpdateManifest message from the specified reader or buffer, length delimited.\n       * @function decodeDelimited\n       * @memberof market.mass.UpdateManifest\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @returns {market.mass.UpdateManifest} UpdateManifest\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      UpdateManifest.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader)) {\n          reader = new $Reader(reader);\n        }\n        return this.decode(reader, reader.uint32());\n      };\n\n      /**\n       * Verifies an UpdateManifest message.\n       * @function verify\n       * @memberof market.mass.UpdateManifest\n       * @static\n       * @param {Object.<string,*>} message Plain object to verify\n       * @returns {string|null} `null` if valid, otherwise the reason why it is not\n       */\n      UpdateManifest.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null) {\n          return \"object expected\";\n        }\n        var properties = {};\n        if (message.addPayee != null && message.hasOwnProperty(\"addPayee\")) {\n          properties._addPayee = 1;\n          {\n            var error = $root.market.mass.Payee.verify(message.addPayee);\n            if (error) {\n              return \"addPayee.\" + error;\n            }\n          }\n        }\n        if (\n          message.removePayee != null && message.hasOwnProperty(\"removePayee\")\n        ) {\n          properties._removePayee = 1;\n          {\n            var error = $root.market.mass.Payee.verify(message.removePayee);\n            if (error) {\n              return \"removePayee.\" + error;\n            }\n          }\n        }\n        if (\n          message.addAcceptedCurrencies != null &&\n          message.hasOwnProperty(\"addAcceptedCurrencies\")\n        ) {\n          if (!Array.isArray(message.addAcceptedCurrencies)) {\n            return \"addAcceptedCurrencies: array expected\";\n          }\n          for (var i = 0; i < message.addAcceptedCurrencies.length; ++i) {\n            var error = $root.market.mass.ShopCurrency.verify(\n              message.addAcceptedCurrencies[i],\n            );\n            if (error) {\n              return \"addAcceptedCurrencies.\" + error;\n            }\n          }\n        }\n        if (\n          message.removeAcceptedCurrencies != null &&\n          message.hasOwnProperty(\"removeAcceptedCurrencies\")\n        ) {\n          if (!Array.isArray(message.removeAcceptedCurrencies)) {\n            return \"removeAcceptedCurrencies: array expected\";\n          }\n          for (var i = 0; i < message.removeAcceptedCurrencies.length; ++i) {\n            var error = $root.market.mass.ShopCurrency.verify(\n              message.removeAcceptedCurrencies[i],\n            );\n            if (error) {\n              return \"removeAcceptedCurrencies.\" + error;\n            }\n          }\n        }\n        if (\n          message.setPricingCurrency != null &&\n          message.hasOwnProperty(\"setPricingCurrency\")\n        ) {\n          properties._setPricingCurrency = 1;\n          {\n            var error = $root.market.mass.ShopCurrency.verify(\n              message.setPricingCurrency,\n            );\n            if (error) {\n              return \"setPricingCurrency.\" + error;\n            }\n          }\n        }\n        if (\n          message.addShippingRegions != null &&\n          message.hasOwnProperty(\"addShippingRegions\")\n        ) {\n          if (!Array.isArray(message.addShippingRegions)) {\n            return \"addShippingRegions: array expected\";\n          }\n          for (var i = 0; i < message.addShippingRegions.length; ++i) {\n            var error = $root.market.mass.ShippingRegion.verify(\n              message.addShippingRegions[i],\n            );\n            if (error) {\n              return \"addShippingRegions.\" + error;\n            }\n          }\n        }\n        if (\n          message.removeShippingRegions != null &&\n          message.hasOwnProperty(\"removeShippingRegions\")\n        ) {\n          if (!Array.isArray(message.removeShippingRegions)) {\n            return \"removeShippingRegions: array expected\";\n          }\n          for (var i = 0; i < message.removeShippingRegions.length; ++i) {\n            if (!$util.isString(message.removeShippingRegions[i])) {\n              return \"removeShippingRegions: string[] expected\";\n            }\n          }\n        }\n        return null;\n      };\n\n      /**\n       * Creates an UpdateManifest message from a plain object. Also converts values to their respective internal types.\n       * @function fromObject\n       * @memberof market.mass.UpdateManifest\n       * @static\n       * @param {Object.<string,*>} object Plain object\n       * @returns {market.mass.UpdateManifest} UpdateManifest\n       */\n      UpdateManifest.fromObject = function fromObject(object) {\n        if (object instanceof $root.market.mass.UpdateManifest) {\n          return object;\n        }\n        var message = new $root.market.mass.UpdateManifest();\n        if (object.addPayee != null) {\n          if (typeof object.addPayee !== \"object\") {\n            throw TypeError(\n              \".market.mass.UpdateManifest.addPayee: object expected\",\n            );\n          }\n          message.addPayee = $root.market.mass.Payee.fromObject(\n            object.addPayee,\n          );\n        }\n        if (object.removePayee != null) {\n          if (typeof object.removePayee !== \"object\") {\n            throw TypeError(\n              \".market.mass.UpdateManifest.removePayee: object expected\",\n            );\n          }\n          message.removePayee = $root.market.mass.Payee.fromObject(\n            object.removePayee,\n          );\n        }\n        if (object.addAcceptedCurrencies) {\n          if (!Array.isArray(object.addAcceptedCurrencies)) {\n            throw TypeError(\n              \".market.mass.UpdateManifest.addAcceptedCurrencies: array expected\",\n            );\n          }\n          message.addAcceptedCurrencies = [];\n          for (var i = 0; i < object.addAcceptedCurrencies.length; ++i) {\n            if (typeof object.addAcceptedCurrencies[i] !== \"object\") {\n              throw TypeError(\n                \".market.mass.UpdateManifest.addAcceptedCurrencies: object expected\",\n              );\n            }\n            message.addAcceptedCurrencies[i] = $root.market.mass.ShopCurrency\n              .fromObject(object.addAcceptedCurrencies[i]);\n          }\n        }\n        if (object.removeAcceptedCurrencies) {\n          if (!Array.isArray(object.removeAcceptedCurrencies)) {\n            throw TypeError(\n              \".market.mass.UpdateManifest.removeAcceptedCurrencies: array expected\",\n            );\n          }\n          message.removeAcceptedCurrencies = [];\n          for (var i = 0; i < object.removeAcceptedCurrencies.length; ++i) {\n            if (typeof object.removeAcceptedCurrencies[i] !== \"object\") {\n              throw TypeError(\n                \".market.mass.UpdateManifest.removeAcceptedCurrencies: object expected\",\n              );\n            }\n            message.removeAcceptedCurrencies[i] = $root.market.mass.ShopCurrency\n              .fromObject(object.removeAcceptedCurrencies[i]);\n          }\n        }\n        if (object.setPricingCurrency != null) {\n          if (typeof object.setPricingCurrency !== \"object\") {\n            throw TypeError(\n              \".market.mass.UpdateManifest.setPricingCurrency: object expected\",\n            );\n          }\n          message.setPricingCurrency = $root.market.mass.ShopCurrency\n            .fromObject(object.setPricingCurrency);\n        }\n        if (object.addShippingRegions) {\n          if (!Array.isArray(object.addShippingRegions)) {\n            throw TypeError(\n              \".market.mass.UpdateManifest.addShippingRegions: array expected\",\n            );\n          }\n          message.addShippingRegions = [];\n          for (var i = 0; i < object.addShippingRegions.length; ++i) {\n            if (typeof object.addShippingRegions[i] !== \"object\") {\n              throw TypeError(\n                \".market.mass.UpdateManifest.addShippingRegions: object expected\",\n              );\n            }\n            message.addShippingRegions[i] = $root.market.mass.ShippingRegion\n              .fromObject(object.addShippingRegions[i]);\n          }\n        }\n        if (object.removeShippingRegions) {\n          if (!Array.isArray(object.removeShippingRegions)) {\n            throw TypeError(\n              \".market.mass.UpdateManifest.removeShippingRegions: array expected\",\n            );\n          }\n          message.removeShippingRegions = [];\n          for (var i = 0; i < object.removeShippingRegions.length; ++i) {\n            message.removeShippingRegions[i] = String(\n              object.removeShippingRegions[i],\n            );\n          }\n        }\n        return message;\n      };\n\n      /**\n       * Creates a plain object from an UpdateManifest message. Also converts values to other types if specified.\n       * @function toObject\n       * @memberof market.mass.UpdateManifest\n       * @static\n       * @param {market.mass.UpdateManifest} message UpdateManifest\n       * @param {$protobuf.IConversionOptions} [options] Conversion options\n       * @returns {Object.<string,*>} Plain object\n       */\n      UpdateManifest.toObject = function toObject(message, options) {\n        if (!options) {\n          options = {};\n        }\n        var object = {};\n        if (options.arrays || options.defaults) {\n          object.addAcceptedCurrencies = [];\n          object.removeAcceptedCurrencies = [];\n          object.addShippingRegions = [];\n          object.removeShippingRegions = [];\n        }\n        if (message.addPayee != null && message.hasOwnProperty(\"addPayee\")) {\n          object.addPayee = $root.market.mass.Payee.toObject(\n            message.addPayee,\n            options,\n          );\n          if (options.oneofs) {\n            object._addPayee = \"addPayee\";\n          }\n        }\n        if (\n          message.removePayee != null && message.hasOwnProperty(\"removePayee\")\n        ) {\n          object.removePayee = $root.market.mass.Payee.toObject(\n            message.removePayee,\n            options,\n          );\n          if (options.oneofs) {\n            object._removePayee = \"removePayee\";\n          }\n        }\n        if (\n          message.addAcceptedCurrencies && message.addAcceptedCurrencies.length\n        ) {\n          object.addAcceptedCurrencies = [];\n          for (var j = 0; j < message.addAcceptedCurrencies.length; ++j) {\n            object.addAcceptedCurrencies[j] = $root.market.mass.ShopCurrency\n              .toObject(message.addAcceptedCurrencies[j], options);\n          }\n        }\n        if (\n          message.removeAcceptedCurrencies &&\n          message.removeAcceptedCurrencies.length\n        ) {\n          object.removeAcceptedCurrencies = [];\n          for (var j = 0; j < message.removeAcceptedCurrencies.length; ++j) {\n            object.removeAcceptedCurrencies[j] = $root.market.mass.ShopCurrency\n              .toObject(message.removeAcceptedCurrencies[j], options);\n          }\n        }\n        if (\n          message.setPricingCurrency != null &&\n          message.hasOwnProperty(\"setPricingCurrency\")\n        ) {\n          object.setPricingCurrency = $root.market.mass.ShopCurrency.toObject(\n            message.setPricingCurrency,\n            options,\n          );\n          if (options.oneofs) {\n            object._setPricingCurrency = \"setPricingCurrency\";\n          }\n        }\n        if (message.addShippingRegions && message.addShippingRegions.length) {\n          object.addShippingRegions = [];\n          for (var j = 0; j < message.addShippingRegions.length; ++j) {\n            object.addShippingRegions[j] = $root.market.mass.ShippingRegion\n              .toObject(message.addShippingRegions[j], options);\n          }\n        }\n        if (\n          message.removeShippingRegions && message.removeShippingRegions.length\n        ) {\n          object.removeShippingRegions = [];\n          for (var j = 0; j < message.removeShippingRegions.length; ++j) {\n            object.removeShippingRegions[j] = message.removeShippingRegions[j];\n          }\n        }\n        return object;\n      };\n\n      /**\n       * Converts this UpdateManifest to JSON.\n       * @function toJSON\n       * @memberof market.mass.UpdateManifest\n       * @instance\n       * @returns {Object.<string,*>} JSON object\n       */\n      UpdateManifest.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n      };\n\n      /**\n       * Gets the default type url for UpdateManifest\n       * @function getTypeUrl\n       * @memberof market.mass.UpdateManifest\n       * @static\n       * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n       * @returns {string} The default type url\n       */\n      UpdateManifest.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n        if (typeUrlPrefix === undefined) {\n          typeUrlPrefix = \"type.googleapis.com\";\n        }\n        return typeUrlPrefix + \"/market.mass.UpdateManifest\";\n      };\n\n      return UpdateManifest;\n    })();\n\n    mass.Account = (function () {\n      /**\n       * Properties of an Account.\n       * @memberof market.mass\n       * @interface IAccount\n       * @property {market.mass.Account.IOnchainAction|null} [add] Account add\n       * @property {market.mass.Account.IOnchainAction|null} [remove] Account remove\n       * @property {market.mass.Account.IKeyCardEnroll|null} [enrollKeycard] Account enrollKeycard\n       * @property {market.mass.IPublicKey|null} [revokeKeycard] Account revokeKeycard\n       */\n\n      /**\n       * Constructs a new Account.\n       * @memberof market.mass\n       * @classdesc Represents an Account.\n       * @implements IAccount\n       * @constructor\n       * @param {market.mass.IAccount=} [properties] Properties to set\n       */\n      function Account(properties) {\n        if (properties) {\n          for (\n            var keys = Object.keys(properties), i = 0;\n            i < keys.length;\n            ++i\n          ) {\n            if (properties[keys[i]] != null) {\n              this[keys[i]] = properties[keys[i]];\n            }\n          }\n        }\n      }\n\n      /**\n       * Account add.\n       * @member {market.mass.Account.IOnchainAction|null|undefined} add\n       * @memberof market.mass.Account\n       * @instance\n       */\n      Account.prototype.add = null;\n\n      /**\n       * Account remove.\n       * @member {market.mass.Account.IOnchainAction|null|undefined} remove\n       * @memberof market.mass.Account\n       * @instance\n       */\n      Account.prototype.remove = null;\n\n      /**\n       * Account enrollKeycard.\n       * @member {market.mass.Account.IKeyCardEnroll|null|undefined} enrollKeycard\n       * @memberof market.mass.Account\n       * @instance\n       */\n      Account.prototype.enrollKeycard = null;\n\n      /**\n       * Account revokeKeycard.\n       * @member {market.mass.IPublicKey|null|undefined} revokeKeycard\n       * @memberof market.mass.Account\n       * @instance\n       */\n      Account.prototype.revokeKeycard = null;\n\n      // OneOf field names bound to virtual getters and setters\n      var $oneOfFields;\n\n      /**\n       * Account action.\n       * @member {\"add\"|\"remove\"|\"enrollKeycard\"|\"revokeKeycard\"|undefined} action\n       * @memberof market.mass.Account\n       * @instance\n       */\n      Object.defineProperty(Account.prototype, \"action\", {\n        get: $util.oneOfGetter(\n          $oneOfFields = [\"add\", \"remove\", \"enrollKeycard\", \"revokeKeycard\"],\n        ),\n        set: $util.oneOfSetter($oneOfFields),\n      });\n\n      /**\n       * Creates a new Account instance using the specified properties.\n       * @function create\n       * @memberof market.mass.Account\n       * @static\n       * @param {market.mass.IAccount=} [properties] Properties to set\n       * @returns {market.mass.Account} Account instance\n       */\n      Account.create = function create(properties) {\n        return new Account(properties);\n      };\n\n      /**\n       * Encodes the specified Account message. Does not implicitly {@link market.mass.Account.verify|verify} messages.\n       * @function encode\n       * @memberof market.mass.Account\n       * @static\n       * @param {market.mass.IAccount} message Account message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      Account.encode = function encode(message, writer) {\n        if (!writer) {\n          writer = $Writer.create();\n        }\n        if (message.add != null && Object.hasOwnProperty.call(message, \"add\")) {\n          $root.market.mass.Account.OnchainAction.encode(\n            message.add,\n            writer.uint32(/* id 1, wireType 2 =*/ 10).fork(),\n          ).ldelim();\n        }\n        if (\n          message.remove != null &&\n          Object.hasOwnProperty.call(message, \"remove\")\n        ) {\n          $root.market.mass.Account.OnchainAction.encode(\n            message.remove,\n            writer.uint32(/* id 2, wireType 2 =*/ 18).fork(),\n          ).ldelim();\n        }\n        if (\n          message.enrollKeycard != null &&\n          Object.hasOwnProperty.call(message, \"enrollKeycard\")\n        ) {\n          $root.market.mass.Account.KeyCardEnroll.encode(\n            message.enrollKeycard,\n            writer.uint32(/* id 3, wireType 2 =*/ 26).fork(),\n          ).ldelim();\n        }\n        if (\n          message.revokeKeycard != null &&\n          Object.hasOwnProperty.call(message, \"revokeKeycard\")\n        ) {\n          $root.market.mass.PublicKey.encode(\n            message.revokeKeycard,\n            writer.uint32(/* id 4, wireType 2 =*/ 34).fork(),\n          ).ldelim();\n        }\n        return writer;\n      };\n\n      /**\n       * Encodes the specified Account message, length delimited. Does not implicitly {@link market.mass.Account.verify|verify} messages.\n       * @function encodeDelimited\n       * @memberof market.mass.Account\n       * @static\n       * @param {market.mass.IAccount} message Account message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      Account.encodeDelimited = function encodeDelimited(message, writer) {\n        return this.encode(message, writer).ldelim();\n      };\n\n      /**\n       * Decodes an Account message from the specified reader or buffer.\n       * @function decode\n       * @memberof market.mass.Account\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @param {number} [length] Message length if known beforehand\n       * @returns {market.mass.Account} Account\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      Account.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader)) {\n          reader = $Reader.create(reader);\n        }\n        var end = length === undefined ? reader.len : reader.pos + length,\n          message = new $root.market.mass.Account();\n        while (reader.pos < end) {\n          var tag = reader.uint32();\n          switch (tag >>> 3) {\n            case 1: {\n              message.add = $root.market.mass.Account.OnchainAction.decode(\n                reader,\n                reader.uint32(),\n              );\n              break;\n            }\n            case 2: {\n              message.remove = $root.market.mass.Account.OnchainAction.decode(\n                reader,\n                reader.uint32(),\n              );\n              break;\n            }\n            case 3: {\n              message.enrollKeycard = $root.market.mass.Account.KeyCardEnroll\n                .decode(reader, reader.uint32());\n              break;\n            }\n            case 4: {\n              message.revokeKeycard = $root.market.mass.PublicKey.decode(\n                reader,\n                reader.uint32(),\n              );\n              break;\n            }\n            default:\n              reader.skipType(tag & 7);\n              break;\n          }\n        }\n        return message;\n      };\n\n      /**\n       * Decodes an Account message from the specified reader or buffer, length delimited.\n       * @function decodeDelimited\n       * @memberof market.mass.Account\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @returns {market.mass.Account} Account\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      Account.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader)) {\n          reader = new $Reader(reader);\n        }\n        return this.decode(reader, reader.uint32());\n      };\n\n      /**\n       * Verifies an Account message.\n       * @function verify\n       * @memberof market.mass.Account\n       * @static\n       * @param {Object.<string,*>} message Plain object to verify\n       * @returns {string|null} `null` if valid, otherwise the reason why it is not\n       */\n      Account.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null) {\n          return \"object expected\";\n        }\n        var properties = {};\n        if (message.add != null && message.hasOwnProperty(\"add\")) {\n          properties.action = 1;\n          {\n            var error = $root.market.mass.Account.OnchainAction.verify(\n              message.add,\n            );\n            if (error) {\n              return \"add.\" + error;\n            }\n          }\n        }\n        if (message.remove != null && message.hasOwnProperty(\"remove\")) {\n          if (properties.action === 1) {\n            return \"action: multiple values\";\n          }\n          properties.action = 1;\n          {\n            var error = $root.market.mass.Account.OnchainAction.verify(\n              message.remove,\n            );\n            if (error) {\n              return \"remove.\" + error;\n            }\n          }\n        }\n        if (\n          message.enrollKeycard != null &&\n          message.hasOwnProperty(\"enrollKeycard\")\n        ) {\n          if (properties.action === 1) {\n            return \"action: multiple values\";\n          }\n          properties.action = 1;\n          {\n            var error = $root.market.mass.Account.KeyCardEnroll.verify(\n              message.enrollKeycard,\n            );\n            if (error) {\n              return \"enrollKeycard.\" + error;\n            }\n          }\n        }\n        if (\n          message.revokeKeycard != null &&\n          message.hasOwnProperty(\"revokeKeycard\")\n        ) {\n          if (properties.action === 1) {\n            return \"action: multiple values\";\n          }\n          properties.action = 1;\n          {\n            var error = $root.market.mass.PublicKey.verify(\n              message.revokeKeycard,\n            );\n            if (error) {\n              return \"revokeKeycard.\" + error;\n            }\n          }\n        }\n        return null;\n      };\n\n      /**\n       * Creates an Account message from a plain object. Also converts values to their respective internal types.\n       * @function fromObject\n       * @memberof market.mass.Account\n       * @static\n       * @param {Object.<string,*>} object Plain object\n       * @returns {market.mass.Account} Account\n       */\n      Account.fromObject = function fromObject(object) {\n        if (object instanceof $root.market.mass.Account) {\n          return object;\n        }\n        var message = new $root.market.mass.Account();\n        if (object.add != null) {\n          if (typeof object.add !== \"object\") {\n            throw TypeError(\".market.mass.Account.add: object expected\");\n          }\n          message.add = $root.market.mass.Account.OnchainAction.fromObject(\n            object.add,\n          );\n        }\n        if (object.remove != null) {\n          if (typeof object.remove !== \"object\") {\n            throw TypeError(\".market.mass.Account.remove: object expected\");\n          }\n          message.remove = $root.market.mass.Account.OnchainAction.fromObject(\n            object.remove,\n          );\n        }\n        if (object.enrollKeycard != null) {\n          if (typeof object.enrollKeycard !== \"object\") {\n            throw TypeError(\n              \".market.mass.Account.enrollKeycard: object expected\",\n            );\n          }\n          message.enrollKeycard = $root.market.mass.Account.KeyCardEnroll\n            .fromObject(object.enrollKeycard);\n        }\n        if (object.revokeKeycard != null) {\n          if (typeof object.revokeKeycard !== \"object\") {\n            throw TypeError(\n              \".market.mass.Account.revokeKeycard: object expected\",\n            );\n          }\n          message.revokeKeycard = $root.market.mass.PublicKey.fromObject(\n            object.revokeKeycard,\n          );\n        }\n        return message;\n      };\n\n      /**\n       * Creates a plain object from an Account message. Also converts values to other types if specified.\n       * @function toObject\n       * @memberof market.mass.Account\n       * @static\n       * @param {market.mass.Account} message Account\n       * @param {$protobuf.IConversionOptions} [options] Conversion options\n       * @returns {Object.<string,*>} Plain object\n       */\n      Account.toObject = function toObject(message, options) {\n        if (!options) {\n          options = {};\n        }\n        var object = {};\n        if (message.add != null && message.hasOwnProperty(\"add\")) {\n          object.add = $root.market.mass.Account.OnchainAction.toObject(\n            message.add,\n            options,\n          );\n          if (options.oneofs) {\n            object.action = \"add\";\n          }\n        }\n        if (message.remove != null && message.hasOwnProperty(\"remove\")) {\n          object.remove = $root.market.mass.Account.OnchainAction.toObject(\n            message.remove,\n            options,\n          );\n          if (options.oneofs) {\n            object.action = \"remove\";\n          }\n        }\n        if (\n          message.enrollKeycard != null &&\n          message.hasOwnProperty(\"enrollKeycard\")\n        ) {\n          object.enrollKeycard = $root.market.mass.Account.KeyCardEnroll\n            .toObject(message.enrollKeycard, options);\n          if (options.oneofs) {\n            object.action = \"enrollKeycard\";\n          }\n        }\n        if (\n          message.revokeKeycard != null &&\n          message.hasOwnProperty(\"revokeKeycard\")\n        ) {\n          object.revokeKeycard = $root.market.mass.PublicKey.toObject(\n            message.revokeKeycard,\n            options,\n          );\n          if (options.oneofs) {\n            object.action = \"revokeKeycard\";\n          }\n        }\n        return object;\n      };\n\n      /**\n       * Converts this Account to JSON.\n       * @function toJSON\n       * @memberof market.mass.Account\n       * @instance\n       * @returns {Object.<string,*>} JSON object\n       */\n      Account.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n      };\n\n      /**\n       * Gets the default type url for Account\n       * @function getTypeUrl\n       * @memberof market.mass.Account\n       * @static\n       * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n       * @returns {string} The default type url\n       */\n      Account.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n        if (typeUrlPrefix === undefined) {\n          typeUrlPrefix = \"type.googleapis.com\";\n        }\n        return typeUrlPrefix + \"/market.mass.Account\";\n      };\n\n      Account.OnchainAction = (function () {\n        /**\n         * Properties of an OnchainAction.\n         * @memberof market.mass.Account\n         * @interface IOnchainAction\n         * @property {market.mass.IEthereumAddress|null} [accountAddress] OnchainAction accountAddress\n         * @property {market.mass.IHash|null} [tx] OnchainAction tx\n         */\n\n        /**\n         * Constructs a new OnchainAction.\n         * @memberof market.mass.Account\n         * @classdesc Represents an OnchainAction.\n         * @implements IOnchainAction\n         * @constructor\n         * @param {market.mass.Account.IOnchainAction=} [properties] Properties to set\n         */\n        function OnchainAction(properties) {\n          if (properties) {\n            for (\n              var keys = Object.keys(properties), i = 0;\n              i < keys.length;\n              ++i\n            ) {\n              if (properties[keys[i]] != null) {\n                this[keys[i]] = properties[keys[i]];\n              }\n            }\n          }\n        }\n\n        /**\n         * OnchainAction accountAddress.\n         * @member {market.mass.IEthereumAddress|null|undefined} accountAddress\n         * @memberof market.mass.Account.OnchainAction\n         * @instance\n         */\n        OnchainAction.prototype.accountAddress = null;\n\n        /**\n         * OnchainAction tx.\n         * @member {market.mass.IHash|null|undefined} tx\n         * @memberof market.mass.Account.OnchainAction\n         * @instance\n         */\n        OnchainAction.prototype.tx = null;\n\n        /**\n         * Creates a new OnchainAction instance using the specified properties.\n         * @function create\n         * @memberof market.mass.Account.OnchainAction\n         * @static\n         * @param {market.mass.Account.IOnchainAction=} [properties] Properties to set\n         * @returns {market.mass.Account.OnchainAction} OnchainAction instance\n         */\n        OnchainAction.create = function create(properties) {\n          return new OnchainAction(properties);\n        };\n\n        /**\n         * Encodes the specified OnchainAction message. Does not implicitly {@link market.mass.Account.OnchainAction.verify|verify} messages.\n         * @function encode\n         * @memberof market.mass.Account.OnchainAction\n         * @static\n         * @param {market.mass.Account.IOnchainAction} message OnchainAction message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        OnchainAction.encode = function encode(message, writer) {\n          if (!writer) {\n            writer = $Writer.create();\n          }\n          if (\n            message.accountAddress != null &&\n            Object.hasOwnProperty.call(message, \"accountAddress\")\n          ) {\n            $root.market.mass.EthereumAddress.encode(\n              message.accountAddress,\n              writer.uint32(/* id 1, wireType 2 =*/ 10).fork(),\n            ).ldelim();\n          }\n          if (message.tx != null && Object.hasOwnProperty.call(message, \"tx\")) {\n            $root.market.mass.Hash.encode(\n              message.tx,\n              writer.uint32(/* id 2, wireType 2 =*/ 18).fork(),\n            ).ldelim();\n          }\n          return writer;\n        };\n\n        /**\n         * Encodes the specified OnchainAction message, length delimited. Does not implicitly {@link market.mass.Account.OnchainAction.verify|verify} messages.\n         * @function encodeDelimited\n         * @memberof market.mass.Account.OnchainAction\n         * @static\n         * @param {market.mass.Account.IOnchainAction} message OnchainAction message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        OnchainAction.encodeDelimited = function encodeDelimited(\n          message,\n          writer,\n        ) {\n          return this.encode(message, writer).ldelim();\n        };\n\n        /**\n         * Decodes an OnchainAction message from the specified reader or buffer.\n         * @function decode\n         * @memberof market.mass.Account.OnchainAction\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @param {number} [length] Message length if known beforehand\n         * @returns {market.mass.Account.OnchainAction} OnchainAction\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        OnchainAction.decode = function decode(reader, length) {\n          if (!(reader instanceof $Reader)) {\n            reader = $Reader.create(reader);\n          }\n          var end = length === undefined ? reader.len : reader.pos + length,\n            message = new $root.market.mass.Account.OnchainAction();\n          while (reader.pos < end) {\n            var tag = reader.uint32();\n            switch (tag >>> 3) {\n              case 1: {\n                message.accountAddress = $root.market.mass.EthereumAddress\n                  .decode(reader, reader.uint32());\n                break;\n              }\n              case 2: {\n                message.tx = $root.market.mass.Hash.decode(\n                  reader,\n                  reader.uint32(),\n                );\n                break;\n              }\n              default:\n                reader.skipType(tag & 7);\n                break;\n            }\n          }\n          return message;\n        };\n\n        /**\n         * Decodes an OnchainAction message from the specified reader or buffer, length delimited.\n         * @function decodeDelimited\n         * @memberof market.mass.Account.OnchainAction\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @returns {market.mass.Account.OnchainAction} OnchainAction\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        OnchainAction.decodeDelimited = function decodeDelimited(reader) {\n          if (!(reader instanceof $Reader)) {\n            reader = new $Reader(reader);\n          }\n          return this.decode(reader, reader.uint32());\n        };\n\n        /**\n         * Verifies an OnchainAction message.\n         * @function verify\n         * @memberof market.mass.Account.OnchainAction\n         * @static\n         * @param {Object.<string,*>} message Plain object to verify\n         * @returns {string|null} `null` if valid, otherwise the reason why it is not\n         */\n        OnchainAction.verify = function verify(message) {\n          if (typeof message !== \"object\" || message === null) {\n            return \"object expected\";\n          }\n          if (\n            message.accountAddress != null &&\n            message.hasOwnProperty(\"accountAddress\")\n          ) {\n            var error = $root.market.mass.EthereumAddress.verify(\n              message.accountAddress,\n            );\n            if (error) {\n              return \"accountAddress.\" + error;\n            }\n          }\n          if (message.tx != null && message.hasOwnProperty(\"tx\")) {\n            var error = $root.market.mass.Hash.verify(message.tx);\n            if (error) {\n              return \"tx.\" + error;\n            }\n          }\n          return null;\n        };\n\n        /**\n         * Creates an OnchainAction message from a plain object. Also converts values to their respective internal types.\n         * @function fromObject\n         * @memberof market.mass.Account.OnchainAction\n         * @static\n         * @param {Object.<string,*>} object Plain object\n         * @returns {market.mass.Account.OnchainAction} OnchainAction\n         */\n        OnchainAction.fromObject = function fromObject(object) {\n          if (object instanceof $root.market.mass.Account.OnchainAction) {\n            return object;\n          }\n          var message = new $root.market.mass.Account.OnchainAction();\n          if (object.accountAddress != null) {\n            if (typeof object.accountAddress !== \"object\") {\n              throw TypeError(\n                \".market.mass.Account.OnchainAction.accountAddress: object expected\",\n              );\n            }\n            message.accountAddress = $root.market.mass.EthereumAddress\n              .fromObject(object.accountAddress);\n          }\n          if (object.tx != null) {\n            if (typeof object.tx !== \"object\") {\n              throw TypeError(\n                \".market.mass.Account.OnchainAction.tx: object expected\",\n              );\n            }\n            message.tx = $root.market.mass.Hash.fromObject(object.tx);\n          }\n          return message;\n        };\n\n        /**\n         * Creates a plain object from an OnchainAction message. Also converts values to other types if specified.\n         * @function toObject\n         * @memberof market.mass.Account.OnchainAction\n         * @static\n         * @param {market.mass.Account.OnchainAction} message OnchainAction\n         * @param {$protobuf.IConversionOptions} [options] Conversion options\n         * @returns {Object.<string,*>} Plain object\n         */\n        OnchainAction.toObject = function toObject(message, options) {\n          if (!options) {\n            options = {};\n          }\n          var object = {};\n          if (options.defaults) {\n            object.accountAddress = null;\n            object.tx = null;\n          }\n          if (\n            message.accountAddress != null &&\n            message.hasOwnProperty(\"accountAddress\")\n          ) {\n            object.accountAddress = $root.market.mass.EthereumAddress.toObject(\n              message.accountAddress,\n              options,\n            );\n          }\n          if (message.tx != null && message.hasOwnProperty(\"tx\")) {\n            object.tx = $root.market.mass.Hash.toObject(message.tx, options);\n          }\n          return object;\n        };\n\n        /**\n         * Converts this OnchainAction to JSON.\n         * @function toJSON\n         * @memberof market.mass.Account.OnchainAction\n         * @instance\n         * @returns {Object.<string,*>} JSON object\n         */\n        OnchainAction.prototype.toJSON = function toJSON() {\n          return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n        };\n\n        /**\n         * Gets the default type url for OnchainAction\n         * @function getTypeUrl\n         * @memberof market.mass.Account.OnchainAction\n         * @static\n         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n         * @returns {string} The default type url\n         */\n        OnchainAction.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n          if (typeUrlPrefix === undefined) {\n            typeUrlPrefix = \"type.googleapis.com\";\n          }\n          return typeUrlPrefix + \"/market.mass.Account.OnchainAction\";\n        };\n\n        return OnchainAction;\n      })();\n\n      Account.KeyCardEnroll = (function () {\n        /**\n         * Properties of a KeyCardEnroll.\n         * @memberof market.mass.Account\n         * @interface IKeyCardEnroll\n         * @property {market.mass.IPublicKey|null} [keycardPubkey] KeyCardEnroll keycardPubkey\n         * @property {market.mass.IEthereumAddress|null} [userWallet] KeyCardEnroll userWallet\n         */\n\n        /**\n         * Constructs a new KeyCardEnroll.\n         * @memberof market.mass.Account\n         * @classdesc Represents a KeyCardEnroll.\n         * @implements IKeyCardEnroll\n         * @constructor\n         * @param {market.mass.Account.IKeyCardEnroll=} [properties] Properties to set\n         */\n        function KeyCardEnroll(properties) {\n          if (properties) {\n            for (\n              var keys = Object.keys(properties), i = 0;\n              i < keys.length;\n              ++i\n            ) {\n              if (properties[keys[i]] != null) {\n                this[keys[i]] = properties[keys[i]];\n              }\n            }\n          }\n        }\n\n        /**\n         * KeyCardEnroll keycardPubkey.\n         * @member {market.mass.IPublicKey|null|undefined} keycardPubkey\n         * @memberof market.mass.Account.KeyCardEnroll\n         * @instance\n         */\n        KeyCardEnroll.prototype.keycardPubkey = null;\n\n        /**\n         * KeyCardEnroll userWallet.\n         * @member {market.mass.IEthereumAddress|null|undefined} userWallet\n         * @memberof market.mass.Account.KeyCardEnroll\n         * @instance\n         */\n        KeyCardEnroll.prototype.userWallet = null;\n\n        /**\n         * Creates a new KeyCardEnroll instance using the specified properties.\n         * @function create\n         * @memberof market.mass.Account.KeyCardEnroll\n         * @static\n         * @param {market.mass.Account.IKeyCardEnroll=} [properties] Properties to set\n         * @returns {market.mass.Account.KeyCardEnroll} KeyCardEnroll instance\n         */\n        KeyCardEnroll.create = function create(properties) {\n          return new KeyCardEnroll(properties);\n        };\n\n        /**\n         * Encodes the specified KeyCardEnroll message. Does not implicitly {@link market.mass.Account.KeyCardEnroll.verify|verify} messages.\n         * @function encode\n         * @memberof market.mass.Account.KeyCardEnroll\n         * @static\n         * @param {market.mass.Account.IKeyCardEnroll} message KeyCardEnroll message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        KeyCardEnroll.encode = function encode(message, writer) {\n          if (!writer) {\n            writer = $Writer.create();\n          }\n          if (\n            message.keycardPubkey != null &&\n            Object.hasOwnProperty.call(message, \"keycardPubkey\")\n          ) {\n            $root.market.mass.PublicKey.encode(\n              message.keycardPubkey,\n              writer.uint32(/* id 1, wireType 2 =*/ 10).fork(),\n            ).ldelim();\n          }\n          if (\n            message.userWallet != null &&\n            Object.hasOwnProperty.call(message, \"userWallet\")\n          ) {\n            $root.market.mass.EthereumAddress.encode(\n              message.userWallet,\n              writer.uint32(/* id 2, wireType 2 =*/ 18).fork(),\n            ).ldelim();\n          }\n          return writer;\n        };\n\n        /**\n         * Encodes the specified KeyCardEnroll message, length delimited. Does not implicitly {@link market.mass.Account.KeyCardEnroll.verify|verify} messages.\n         * @function encodeDelimited\n         * @memberof market.mass.Account.KeyCardEnroll\n         * @static\n         * @param {market.mass.Account.IKeyCardEnroll} message KeyCardEnroll message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        KeyCardEnroll.encodeDelimited = function encodeDelimited(\n          message,\n          writer,\n        ) {\n          return this.encode(message, writer).ldelim();\n        };\n\n        /**\n         * Decodes a KeyCardEnroll message from the specified reader or buffer.\n         * @function decode\n         * @memberof market.mass.Account.KeyCardEnroll\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @param {number} [length] Message length if known beforehand\n         * @returns {market.mass.Account.KeyCardEnroll} KeyCardEnroll\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        KeyCardEnroll.decode = function decode(reader, length) {\n          if (!(reader instanceof $Reader)) {\n            reader = $Reader.create(reader);\n          }\n          var end = length === undefined ? reader.len : reader.pos + length,\n            message = new $root.market.mass.Account.KeyCardEnroll();\n          while (reader.pos < end) {\n            var tag = reader.uint32();\n            switch (tag >>> 3) {\n              case 1: {\n                message.keycardPubkey = $root.market.mass.PublicKey.decode(\n                  reader,\n                  reader.uint32(),\n                );\n                break;\n              }\n              case 2: {\n                message.userWallet = $root.market.mass.EthereumAddress.decode(\n                  reader,\n                  reader.uint32(),\n                );\n                break;\n              }\n              default:\n                reader.skipType(tag & 7);\n                break;\n            }\n          }\n          return message;\n        };\n\n        /**\n         * Decodes a KeyCardEnroll message from the specified reader or buffer, length delimited.\n         * @function decodeDelimited\n         * @memberof market.mass.Account.KeyCardEnroll\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @returns {market.mass.Account.KeyCardEnroll} KeyCardEnroll\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        KeyCardEnroll.decodeDelimited = function decodeDelimited(reader) {\n          if (!(reader instanceof $Reader)) {\n            reader = new $Reader(reader);\n          }\n          return this.decode(reader, reader.uint32());\n        };\n\n        /**\n         * Verifies a KeyCardEnroll message.\n         * @function verify\n         * @memberof market.mass.Account.KeyCardEnroll\n         * @static\n         * @param {Object.<string,*>} message Plain object to verify\n         * @returns {string|null} `null` if valid, otherwise the reason why it is not\n         */\n        KeyCardEnroll.verify = function verify(message) {\n          if (typeof message !== \"object\" || message === null) {\n            return \"object expected\";\n          }\n          if (\n            message.keycardPubkey != null &&\n            message.hasOwnProperty(\"keycardPubkey\")\n          ) {\n            var error = $root.market.mass.PublicKey.verify(\n              message.keycardPubkey,\n            );\n            if (error) {\n              return \"keycardPubkey.\" + error;\n            }\n          }\n          if (\n            message.userWallet != null && message.hasOwnProperty(\"userWallet\")\n          ) {\n            var error = $root.market.mass.EthereumAddress.verify(\n              message.userWallet,\n            );\n            if (error) {\n              return \"userWallet.\" + error;\n            }\n          }\n          return null;\n        };\n\n        /**\n         * Creates a KeyCardEnroll message from a plain object. Also converts values to their respective internal types.\n         * @function fromObject\n         * @memberof market.mass.Account.KeyCardEnroll\n         * @static\n         * @param {Object.<string,*>} object Plain object\n         * @returns {market.mass.Account.KeyCardEnroll} KeyCardEnroll\n         */\n        KeyCardEnroll.fromObject = function fromObject(object) {\n          if (object instanceof $root.market.mass.Account.KeyCardEnroll) {\n            return object;\n          }\n          var message = new $root.market.mass.Account.KeyCardEnroll();\n          if (object.keycardPubkey != null) {\n            if (typeof object.keycardPubkey !== \"object\") {\n              throw TypeError(\n                \".market.mass.Account.KeyCardEnroll.keycardPubkey: object expected\",\n              );\n            }\n            message.keycardPubkey = $root.market.mass.PublicKey.fromObject(\n              object.keycardPubkey,\n            );\n          }\n          if (object.userWallet != null) {\n            if (typeof object.userWallet !== \"object\") {\n              throw TypeError(\n                \".market.mass.Account.KeyCardEnroll.userWallet: object expected\",\n              );\n            }\n            message.userWallet = $root.market.mass.EthereumAddress.fromObject(\n              object.userWallet,\n            );\n          }\n          return message;\n        };\n\n        /**\n         * Creates a plain object from a KeyCardEnroll message. Also converts values to other types if specified.\n         * @function toObject\n         * @memberof market.mass.Account.KeyCardEnroll\n         * @static\n         * @param {market.mass.Account.KeyCardEnroll} message KeyCardEnroll\n         * @param {$protobuf.IConversionOptions} [options] Conversion options\n         * @returns {Object.<string,*>} Plain object\n         */\n        KeyCardEnroll.toObject = function toObject(message, options) {\n          if (!options) {\n            options = {};\n          }\n          var object = {};\n          if (options.defaults) {\n            object.keycardPubkey = null;\n            object.userWallet = null;\n          }\n          if (\n            message.keycardPubkey != null &&\n            message.hasOwnProperty(\"keycardPubkey\")\n          ) {\n            object.keycardPubkey = $root.market.mass.PublicKey.toObject(\n              message.keycardPubkey,\n              options,\n            );\n          }\n          if (\n            message.userWallet != null && message.hasOwnProperty(\"userWallet\")\n          ) {\n            object.userWallet = $root.market.mass.EthereumAddress.toObject(\n              message.userWallet,\n              options,\n            );\n          }\n          return object;\n        };\n\n        /**\n         * Converts this KeyCardEnroll to JSON.\n         * @function toJSON\n         * @memberof market.mass.Account.KeyCardEnroll\n         * @instance\n         * @returns {Object.<string,*>} JSON object\n         */\n        KeyCardEnroll.prototype.toJSON = function toJSON() {\n          return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n        };\n\n        /**\n         * Gets the default type url for KeyCardEnroll\n         * @function getTypeUrl\n         * @memberof market.mass.Account.KeyCardEnroll\n         * @static\n         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n         * @returns {string} The default type url\n         */\n        KeyCardEnroll.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n          if (typeUrlPrefix === undefined) {\n            typeUrlPrefix = \"type.googleapis.com\";\n          }\n          return typeUrlPrefix + \"/market.mass.Account.KeyCardEnroll\";\n        };\n\n        return KeyCardEnroll;\n      })();\n\n      return Account;\n    })();\n\n    mass.Listing = (function () {\n      /**\n       * Properties of a Listing.\n       * @memberof market.mass\n       * @interface IListing\n       * @property {market.mass.IObjectId|null} [id] Listing id\n       * @property {market.mass.IUint256|null} [price] Listing price\n       * @property {market.mass.IListingMetadata|null} [metadata] Listing metadata\n       * @property {market.mass.ListingViewState|null} [viewState] Listing viewState\n       * @property {Array.<market.mass.IListingOption>|null} [options] Listing options\n       * @property {Array.<market.mass.IListingStockStatus>|null} [stockStatuses] Listing stockStatuses\n       */\n\n      /**\n       * Constructs a new Listing.\n       * @memberof market.mass\n       * @classdesc Represents a Listing.\n       * @implements IListing\n       * @constructor\n       * @param {market.mass.IListing=} [properties] Properties to set\n       */\n      function Listing(properties) {\n        this.options = [];\n        this.stockStatuses = [];\n        if (properties) {\n          for (\n            var keys = Object.keys(properties), i = 0;\n            i < keys.length;\n            ++i\n          ) {\n            if (properties[keys[i]] != null) {\n              this[keys[i]] = properties[keys[i]];\n            }\n          }\n        }\n      }\n\n      /**\n       * Listing id.\n       * @member {market.mass.IObjectId|null|undefined} id\n       * @memberof market.mass.Listing\n       * @instance\n       */\n      Listing.prototype.id = null;\n\n      /**\n       * Listing price.\n       * @member {market.mass.IUint256|null|undefined} price\n       * @memberof market.mass.Listing\n       * @instance\n       */\n      Listing.prototype.price = null;\n\n      /**\n       * Listing metadata.\n       * @member {market.mass.IListingMetadata|null|undefined} metadata\n       * @memberof market.mass.Listing\n       * @instance\n       */\n      Listing.prototype.metadata = null;\n\n      /**\n       * Listing viewState.\n       * @member {market.mass.ListingViewState} viewState\n       * @memberof market.mass.Listing\n       * @instance\n       */\n      Listing.prototype.viewState = 0;\n\n      /**\n       * Listing options.\n       * @member {Array.<market.mass.IListingOption>} options\n       * @memberof market.mass.Listing\n       * @instance\n       */\n      Listing.prototype.options = $util.emptyArray;\n\n      /**\n       * Listing stockStatuses.\n       * @member {Array.<market.mass.IListingStockStatus>} stockStatuses\n       * @memberof market.mass.Listing\n       * @instance\n       */\n      Listing.prototype.stockStatuses = $util.emptyArray;\n\n      /**\n       * Creates a new Listing instance using the specified properties.\n       * @function create\n       * @memberof market.mass.Listing\n       * @static\n       * @param {market.mass.IListing=} [properties] Properties to set\n       * @returns {market.mass.Listing} Listing instance\n       */\n      Listing.create = function create(properties) {\n        return new Listing(properties);\n      };\n\n      /**\n       * Encodes the specified Listing message. Does not implicitly {@link market.mass.Listing.verify|verify} messages.\n       * @function encode\n       * @memberof market.mass.Listing\n       * @static\n       * @param {market.mass.IListing} message Listing message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      Listing.encode = function encode(message, writer) {\n        if (!writer) {\n          writer = $Writer.create();\n        }\n        if (message.id != null && Object.hasOwnProperty.call(message, \"id\")) {\n          $root.market.mass.ObjectId.encode(\n            message.id,\n            writer.uint32(/* id 1, wireType 2 =*/ 10).fork(),\n          ).ldelim();\n        }\n        if (\n          message.price != null && Object.hasOwnProperty.call(message, \"price\")\n        ) {\n          $root.market.mass.Uint256.encode(\n            message.price,\n            writer.uint32(/* id 2, wireType 2 =*/ 18).fork(),\n          ).ldelim();\n        }\n        if (\n          message.metadata != null &&\n          Object.hasOwnProperty.call(message, \"metadata\")\n        ) {\n          $root.market.mass.ListingMetadata.encode(\n            message.metadata,\n            writer.uint32(/* id 3, wireType 2 =*/ 26).fork(),\n          ).ldelim();\n        }\n        if (\n          message.viewState != null &&\n          Object.hasOwnProperty.call(message, \"viewState\")\n        ) {\n          writer.uint32(/* id 4, wireType 0 =*/ 32).int32(message.viewState);\n        }\n        if (message.options != null && message.options.length) {\n          for (var i = 0; i < message.options.length; ++i) {\n            $root.market.mass.ListingOption.encode(\n              message.options[i],\n              writer.uint32(/* id 5, wireType 2 =*/ 42).fork(),\n            ).ldelim();\n          }\n        }\n        if (message.stockStatuses != null && message.stockStatuses.length) {\n          for (var i = 0; i < message.stockStatuses.length; ++i) {\n            $root.market.mass.ListingStockStatus.encode(\n              message.stockStatuses[i],\n              writer.uint32(/* id 6, wireType 2 =*/ 50).fork(),\n            ).ldelim();\n          }\n        }\n        return writer;\n      };\n\n      /**\n       * Encodes the specified Listing message, length delimited. Does not implicitly {@link market.mass.Listing.verify|verify} messages.\n       * @function encodeDelimited\n       * @memberof market.mass.Listing\n       * @static\n       * @param {market.mass.IListing} message Listing message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      Listing.encodeDelimited = function encodeDelimited(message, writer) {\n        return this.encode(message, writer).ldelim();\n      };\n\n      /**\n       * Decodes a Listing message from the specified reader or buffer.\n       * @function decode\n       * @memberof market.mass.Listing\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @param {number} [length] Message length if known beforehand\n       * @returns {market.mass.Listing} Listing\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      Listing.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader)) {\n          reader = $Reader.create(reader);\n        }\n        var end = length === undefined ? reader.len : reader.pos + length,\n          message = new $root.market.mass.Listing();\n        while (reader.pos < end) {\n          var tag = reader.uint32();\n          switch (tag >>> 3) {\n            case 1: {\n              message.id = $root.market.mass.ObjectId.decode(\n                reader,\n                reader.uint32(),\n              );\n              break;\n            }\n            case 2: {\n              message.price = $root.market.mass.Uint256.decode(\n                reader,\n                reader.uint32(),\n              );\n              break;\n            }\n            case 3: {\n              message.metadata = $root.market.mass.ListingMetadata.decode(\n                reader,\n                reader.uint32(),\n              );\n              break;\n            }\n            case 4: {\n              message.viewState = reader.int32();\n              break;\n            }\n            case 5: {\n              if (!(message.options && message.options.length)) {\n                message.options = [];\n              }\n              message.options.push(\n                $root.market.mass.ListingOption.decode(reader, reader.uint32()),\n              );\n              break;\n            }\n            case 6: {\n              if (!(message.stockStatuses && message.stockStatuses.length)) {\n                message.stockStatuses = [];\n              }\n              message.stockStatuses.push(\n                $root.market.mass.ListingStockStatus.decode(\n                  reader,\n                  reader.uint32(),\n                ),\n              );\n              break;\n            }\n            default:\n              reader.skipType(tag & 7);\n              break;\n          }\n        }\n        return message;\n      };\n\n      /**\n       * Decodes a Listing message from the specified reader or buffer, length delimited.\n       * @function decodeDelimited\n       * @memberof market.mass.Listing\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @returns {market.mass.Listing} Listing\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      Listing.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader)) {\n          reader = new $Reader(reader);\n        }\n        return this.decode(reader, reader.uint32());\n      };\n\n      /**\n       * Verifies a Listing message.\n       * @function verify\n       * @memberof market.mass.Listing\n       * @static\n       * @param {Object.<string,*>} message Plain object to verify\n       * @returns {string|null} `null` if valid, otherwise the reason why it is not\n       */\n      Listing.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null) {\n          return \"object expected\";\n        }\n        if (message.id != null && message.hasOwnProperty(\"id\")) {\n          var error = $root.market.mass.ObjectId.verify(message.id);\n          if (error) {\n            return \"id.\" + error;\n          }\n        }\n        if (message.price != null && message.hasOwnProperty(\"price\")) {\n          var error = $root.market.mass.Uint256.verify(message.price);\n          if (error) {\n            return \"price.\" + error;\n          }\n        }\n        if (message.metadata != null && message.hasOwnProperty(\"metadata\")) {\n          var error = $root.market.mass.ListingMetadata.verify(\n            message.metadata,\n          );\n          if (error) {\n            return \"metadata.\" + error;\n          }\n        }\n        if (message.viewState != null && message.hasOwnProperty(\"viewState\")) {\n          switch (message.viewState) {\n            default:\n              return \"viewState: enum value expected\";\n            case 0:\n            case 1:\n            case 2:\n              break;\n          }\n        }\n        if (message.options != null && message.hasOwnProperty(\"options\")) {\n          if (!Array.isArray(message.options)) {\n            return \"options: array expected\";\n          }\n          for (var i = 0; i < message.options.length; ++i) {\n            var error = $root.market.mass.ListingOption.verify(\n              message.options[i],\n            );\n            if (error) {\n              return \"options.\" + error;\n            }\n          }\n        }\n        if (\n          message.stockStatuses != null &&\n          message.hasOwnProperty(\"stockStatuses\")\n        ) {\n          if (!Array.isArray(message.stockStatuses)) {\n            return \"stockStatuses: array expected\";\n          }\n          for (var i = 0; i < message.stockStatuses.length; ++i) {\n            var error = $root.market.mass.ListingStockStatus.verify(\n              message.stockStatuses[i],\n            );\n            if (error) {\n              return \"stockStatuses.\" + error;\n            }\n          }\n        }\n        return null;\n      };\n\n      /**\n       * Creates a Listing message from a plain object. Also converts values to their respective internal types.\n       * @function fromObject\n       * @memberof market.mass.Listing\n       * @static\n       * @param {Object.<string,*>} object Plain object\n       * @returns {market.mass.Listing} Listing\n       */\n      Listing.fromObject = function fromObject(object) {\n        if (object instanceof $root.market.mass.Listing) {\n          return object;\n        }\n        var message = new $root.market.mass.Listing();\n        if (object.id != null) {\n          if (typeof object.id !== \"object\") {\n            throw TypeError(\".market.mass.Listing.id: object expected\");\n          }\n          message.id = $root.market.mass.ObjectId.fromObject(object.id);\n        }\n        if (object.price != null) {\n          if (typeof object.price !== \"object\") {\n            throw TypeError(\".market.mass.Listing.price: object expected\");\n          }\n          message.price = $root.market.mass.Uint256.fromObject(object.price);\n        }\n        if (object.metadata != null) {\n          if (typeof object.metadata !== \"object\") {\n            throw TypeError(\".market.mass.Listing.metadata: object expected\");\n          }\n          message.metadata = $root.market.mass.ListingMetadata.fromObject(\n            object.metadata,\n          );\n        }\n        switch (object.viewState) {\n          default:\n            if (typeof object.viewState === \"number\") {\n              message.viewState = object.viewState;\n              break;\n            }\n            break;\n          case \"LISTING_VIEW_STATE_UNSPECIFIED\":\n          case 0:\n            message.viewState = 0;\n            break;\n          case \"LISTING_VIEW_STATE_PUBLISHED\":\n          case 1:\n            message.viewState = 1;\n            break;\n          case \"LISTING_VIEW_STATE_DELETED\":\n          case 2:\n            message.viewState = 2;\n            break;\n        }\n        if (object.options) {\n          if (!Array.isArray(object.options)) {\n            throw TypeError(\".market.mass.Listing.options: array expected\");\n          }\n          message.options = [];\n          for (var i = 0; i < object.options.length; ++i) {\n            if (typeof object.options[i] !== \"object\") {\n              throw TypeError(\".market.mass.Listing.options: object expected\");\n            }\n            message.options[i] = $root.market.mass.ListingOption.fromObject(\n              object.options[i],\n            );\n          }\n        }\n        if (object.stockStatuses) {\n          if (!Array.isArray(object.stockStatuses)) {\n            throw TypeError(\n              \".market.mass.Listing.stockStatuses: array expected\",\n            );\n          }\n          message.stockStatuses = [];\n          for (var i = 0; i < object.stockStatuses.length; ++i) {\n            if (typeof object.stockStatuses[i] !== \"object\") {\n              throw TypeError(\n                \".market.mass.Listing.stockStatuses: object expected\",\n              );\n            }\n            message.stockStatuses[i] = $root.market.mass.ListingStockStatus\n              .fromObject(object.stockStatuses[i]);\n          }\n        }\n        return message;\n      };\n\n      /**\n       * Creates a plain object from a Listing message. Also converts values to other types if specified.\n       * @function toObject\n       * @memberof market.mass.Listing\n       * @static\n       * @param {market.mass.Listing} message Listing\n       * @param {$protobuf.IConversionOptions} [options] Conversion options\n       * @returns {Object.<string,*>} Plain object\n       */\n      Listing.toObject = function toObject(message, options) {\n        if (!options) {\n          options = {};\n        }\n        var object = {};\n        if (options.arrays || options.defaults) {\n          object.options = [];\n          object.stockStatuses = [];\n        }\n        if (options.defaults) {\n          object.id = null;\n          object.price = null;\n          object.metadata = null;\n          object.viewState = options.enums === String\n            ? \"LISTING_VIEW_STATE_UNSPECIFIED\"\n            : 0;\n        }\n        if (message.id != null && message.hasOwnProperty(\"id\")) {\n          object.id = $root.market.mass.ObjectId.toObject(message.id, options);\n        }\n        if (message.price != null && message.hasOwnProperty(\"price\")) {\n          object.price = $root.market.mass.Uint256.toObject(\n            message.price,\n            options,\n          );\n        }\n        if (message.metadata != null && message.hasOwnProperty(\"metadata\")) {\n          object.metadata = $root.market.mass.ListingMetadata.toObject(\n            message.metadata,\n            options,\n          );\n        }\n        if (message.viewState != null && message.hasOwnProperty(\"viewState\")) {\n          object.viewState = options.enums === String\n            ? $root.market.mass.ListingViewState[message.viewState] ===\n                undefined\n              ? message.viewState\n              : $root.market.mass.ListingViewState[message.viewState]\n            : message.viewState;\n        }\n        if (message.options && message.options.length) {\n          object.options = [];\n          for (var j = 0; j < message.options.length; ++j) {\n            object.options[j] = $root.market.mass.ListingOption.toObject(\n              message.options[j],\n              options,\n            );\n          }\n        }\n        if (message.stockStatuses && message.stockStatuses.length) {\n          object.stockStatuses = [];\n          for (var j = 0; j < message.stockStatuses.length; ++j) {\n            object.stockStatuses[j] = $root.market.mass.ListingStockStatus\n              .toObject(message.stockStatuses[j], options);\n          }\n        }\n        return object;\n      };\n\n      /**\n       * Converts this Listing to JSON.\n       * @function toJSON\n       * @memberof market.mass.Listing\n       * @instance\n       * @returns {Object.<string,*>} JSON object\n       */\n      Listing.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n      };\n\n      /**\n       * Gets the default type url for Listing\n       * @function getTypeUrl\n       * @memberof market.mass.Listing\n       * @static\n       * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n       * @returns {string} The default type url\n       */\n      Listing.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n        if (typeUrlPrefix === undefined) {\n          typeUrlPrefix = \"type.googleapis.com\";\n        }\n        return typeUrlPrefix + \"/market.mass.Listing\";\n      };\n\n      return Listing;\n    })();\n\n    mass.UpdateListing = (function () {\n      /**\n       * Properties of an UpdateListing.\n       * @memberof market.mass\n       * @interface IUpdateListing\n       * @property {market.mass.IObjectId|null} [id] UpdateListing id\n       * @property {market.mass.IUint256|null} [price] UpdateListing price\n       * @property {market.mass.IListingMetadata|null} [metadata] UpdateListing metadata\n       * @property {market.mass.ListingViewState|null} [viewState] UpdateListing viewState\n       * @property {Array.<market.mass.IListingOption>|null} [addOptions] UpdateListing addOptions\n       * @property {Array.<market.mass.IObjectId>|null} [removeOptionIds] UpdateListing removeOptionIds\n       * @property {Array.<market.mass.UpdateListing.IAddVariation>|null} [addVariations] UpdateListing addVariations\n       * @property {Array.<market.mass.IObjectId>|null} [removeVariationIds] UpdateListing removeVariationIds\n       * @property {Array.<market.mass.IListingStockStatus>|null} [stockUpdates] UpdateListing stockUpdates\n       */\n\n      /**\n       * Constructs a new UpdateListing.\n       * @memberof market.mass\n       * @classdesc Represents an UpdateListing.\n       * @implements IUpdateListing\n       * @constructor\n       * @param {market.mass.IUpdateListing=} [properties] Properties to set\n       */\n      function UpdateListing(properties) {\n        this.addOptions = [];\n        this.removeOptionIds = [];\n        this.addVariations = [];\n        this.removeVariationIds = [];\n        this.stockUpdates = [];\n        if (properties) {\n          for (\n            var keys = Object.keys(properties), i = 0;\n            i < keys.length;\n            ++i\n          ) {\n            if (properties[keys[i]] != null) {\n              this[keys[i]] = properties[keys[i]];\n            }\n          }\n        }\n      }\n\n      /**\n       * UpdateListing id.\n       * @member {market.mass.IObjectId|null|undefined} id\n       * @memberof market.mass.UpdateListing\n       * @instance\n       */\n      UpdateListing.prototype.id = null;\n\n      /**\n       * UpdateListing price.\n       * @member {market.mass.IUint256|null|undefined} price\n       * @memberof market.mass.UpdateListing\n       * @instance\n       */\n      UpdateListing.prototype.price = null;\n\n      /**\n       * UpdateListing metadata.\n       * @member {market.mass.IListingMetadata|null|undefined} metadata\n       * @memberof market.mass.UpdateListing\n       * @instance\n       */\n      UpdateListing.prototype.metadata = null;\n\n      /**\n       * UpdateListing viewState.\n       * @member {market.mass.ListingViewState|null|undefined} viewState\n       * @memberof market.mass.UpdateListing\n       * @instance\n       */\n      UpdateListing.prototype.viewState = null;\n\n      /**\n       * UpdateListing addOptions.\n       * @member {Array.<market.mass.IListingOption>} addOptions\n       * @memberof market.mass.UpdateListing\n       * @instance\n       */\n      UpdateListing.prototype.addOptions = $util.emptyArray;\n\n      /**\n       * UpdateListing removeOptionIds.\n       * @member {Array.<market.mass.IObjectId>} removeOptionIds\n       * @memberof market.mass.UpdateListing\n       * @instance\n       */\n      UpdateListing.prototype.removeOptionIds = $util.emptyArray;\n\n      /**\n       * UpdateListing addVariations.\n       * @member {Array.<market.mass.UpdateListing.IAddVariation>} addVariations\n       * @memberof market.mass.UpdateListing\n       * @instance\n       */\n      UpdateListing.prototype.addVariations = $util.emptyArray;\n\n      /**\n       * UpdateListing removeVariationIds.\n       * @member {Array.<market.mass.IObjectId>} removeVariationIds\n       * @memberof market.mass.UpdateListing\n       * @instance\n       */\n      UpdateListing.prototype.removeVariationIds = $util.emptyArray;\n\n      /**\n       * UpdateListing stockUpdates.\n       * @member {Array.<market.mass.IListingStockStatus>} stockUpdates\n       * @memberof market.mass.UpdateListing\n       * @instance\n       */\n      UpdateListing.prototype.stockUpdates = $util.emptyArray;\n\n      // OneOf field names bound to virtual getters and setters\n      var $oneOfFields;\n\n      // Virtual OneOf for proto3 optional field\n      Object.defineProperty(UpdateListing.prototype, \"_price\", {\n        get: $util.oneOfGetter($oneOfFields = [\"price\"]),\n        set: $util.oneOfSetter($oneOfFields),\n      });\n\n      // Virtual OneOf for proto3 optional field\n      Object.defineProperty(UpdateListing.prototype, \"_metadata\", {\n        get: $util.oneOfGetter($oneOfFields = [\"metadata\"]),\n        set: $util.oneOfSetter($oneOfFields),\n      });\n\n      // Virtual OneOf for proto3 optional field\n      Object.defineProperty(UpdateListing.prototype, \"_viewState\", {\n        get: $util.oneOfGetter($oneOfFields = [\"viewState\"]),\n        set: $util.oneOfSetter($oneOfFields),\n      });\n\n      /**\n       * Creates a new UpdateListing instance using the specified properties.\n       * @function create\n       * @memberof market.mass.UpdateListing\n       * @static\n       * @param {market.mass.IUpdateListing=} [properties] Properties to set\n       * @returns {market.mass.UpdateListing} UpdateListing instance\n       */\n      UpdateListing.create = function create(properties) {\n        return new UpdateListing(properties);\n      };\n\n      /**\n       * Encodes the specified UpdateListing message. Does not implicitly {@link market.mass.UpdateListing.verify|verify} messages.\n       * @function encode\n       * @memberof market.mass.UpdateListing\n       * @static\n       * @param {market.mass.IUpdateListing} message UpdateListing message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      UpdateListing.encode = function encode(message, writer) {\n        if (!writer) {\n          writer = $Writer.create();\n        }\n        if (message.id != null && Object.hasOwnProperty.call(message, \"id\")) {\n          $root.market.mass.ObjectId.encode(\n            message.id,\n            writer.uint32(/* id 1, wireType 2 =*/ 10).fork(),\n          ).ldelim();\n        }\n        if (\n          message.price != null && Object.hasOwnProperty.call(message, \"price\")\n        ) {\n          $root.market.mass.Uint256.encode(\n            message.price,\n            writer.uint32(/* id 2, wireType 2 =*/ 18).fork(),\n          ).ldelim();\n        }\n        if (\n          message.metadata != null &&\n          Object.hasOwnProperty.call(message, \"metadata\")\n        ) {\n          $root.market.mass.ListingMetadata.encode(\n            message.metadata,\n            writer.uint32(/* id 3, wireType 2 =*/ 26).fork(),\n          ).ldelim();\n        }\n        if (\n          message.viewState != null &&\n          Object.hasOwnProperty.call(message, \"viewState\")\n        ) {\n          writer.uint32(/* id 4, wireType 0 =*/ 32).int32(message.viewState);\n        }\n        if (message.addOptions != null && message.addOptions.length) {\n          for (var i = 0; i < message.addOptions.length; ++i) {\n            $root.market.mass.ListingOption.encode(\n              message.addOptions[i],\n              writer.uint32(/* id 5, wireType 2 =*/ 42).fork(),\n            ).ldelim();\n          }\n        }\n        if (message.removeOptionIds != null && message.removeOptionIds.length) {\n          for (var i = 0; i < message.removeOptionIds.length; ++i) {\n            $root.market.mass.ObjectId.encode(\n              message.removeOptionIds[i],\n              writer.uint32(/* id 6, wireType 2 =*/ 50).fork(),\n            ).ldelim();\n          }\n        }\n        if (message.addVariations != null && message.addVariations.length) {\n          for (var i = 0; i < message.addVariations.length; ++i) {\n            $root.market.mass.UpdateListing.AddVariation.encode(\n              message.addVariations[i],\n              writer.uint32(/* id 7, wireType 2 =*/ 58).fork(),\n            ).ldelim();\n          }\n        }\n        if (\n          message.removeVariationIds != null &&\n          message.removeVariationIds.length\n        ) {\n          for (var i = 0; i < message.removeVariationIds.length; ++i) {\n            $root.market.mass.ObjectId.encode(\n              message.removeVariationIds[i],\n              writer.uint32(/* id 8, wireType 2 =*/ 66).fork(),\n            ).ldelim();\n          }\n        }\n        if (message.stockUpdates != null && message.stockUpdates.length) {\n          for (var i = 0; i < message.stockUpdates.length; ++i) {\n            $root.market.mass.ListingStockStatus.encode(\n              message.stockUpdates[i],\n              writer.uint32(/* id 9, wireType 2 =*/ 74).fork(),\n            ).ldelim();\n          }\n        }\n        return writer;\n      };\n\n      /**\n       * Encodes the specified UpdateListing message, length delimited. Does not implicitly {@link market.mass.UpdateListing.verify|verify} messages.\n       * @function encodeDelimited\n       * @memberof market.mass.UpdateListing\n       * @static\n       * @param {market.mass.IUpdateListing} message UpdateListing message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      UpdateListing.encodeDelimited = function encodeDelimited(\n        message,\n        writer,\n      ) {\n        return this.encode(message, writer).ldelim();\n      };\n\n      /**\n       * Decodes an UpdateListing message from the specified reader or buffer.\n       * @function decode\n       * @memberof market.mass.UpdateListing\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @param {number} [length] Message length if known beforehand\n       * @returns {market.mass.UpdateListing} UpdateListing\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      UpdateListing.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader)) {\n          reader = $Reader.create(reader);\n        }\n        var end = length === undefined ? reader.len : reader.pos + length,\n          message = new $root.market.mass.UpdateListing();\n        while (reader.pos < end) {\n          var tag = reader.uint32();\n          switch (tag >>> 3) {\n            case 1: {\n              message.id = $root.market.mass.ObjectId.decode(\n                reader,\n                reader.uint32(),\n              );\n              break;\n            }\n            case 2: {\n              message.price = $root.market.mass.Uint256.decode(\n                reader,\n                reader.uint32(),\n              );\n              break;\n            }\n            case 3: {\n              message.metadata = $root.market.mass.ListingMetadata.decode(\n                reader,\n                reader.uint32(),\n              );\n              break;\n            }\n            case 4: {\n              message.viewState = reader.int32();\n              break;\n            }\n            case 5: {\n              if (!(message.addOptions && message.addOptions.length)) {\n                message.addOptions = [];\n              }\n              message.addOptions.push(\n                $root.market.mass.ListingOption.decode(reader, reader.uint32()),\n              );\n              break;\n            }\n            case 6: {\n              if (\n                !(message.removeOptionIds && message.removeOptionIds.length)\n              ) {\n                message.removeOptionIds = [];\n              }\n              message.removeOptionIds.push(\n                $root.market.mass.ObjectId.decode(reader, reader.uint32()),\n              );\n              break;\n            }\n            case 7: {\n              if (!(message.addVariations && message.addVariations.length)) {\n                message.addVariations = [];\n              }\n              message.addVariations.push(\n                $root.market.mass.UpdateListing.AddVariation.decode(\n                  reader,\n                  reader.uint32(),\n                ),\n              );\n              break;\n            }\n            case 8: {\n              if (\n                !(message.removeVariationIds &&\n                  message.removeVariationIds.length)\n              ) {\n                message.removeVariationIds = [];\n              }\n              message.removeVariationIds.push(\n                $root.market.mass.ObjectId.decode(reader, reader.uint32()),\n              );\n              break;\n            }\n            case 9: {\n              if (!(message.stockUpdates && message.stockUpdates.length)) {\n                message.stockUpdates = [];\n              }\n              message.stockUpdates.push(\n                $root.market.mass.ListingStockStatus.decode(\n                  reader,\n                  reader.uint32(),\n                ),\n              );\n              break;\n            }\n            default:\n              reader.skipType(tag & 7);\n              break;\n          }\n        }\n        return message;\n      };\n\n      /**\n       * Decodes an UpdateListing message from the specified reader or buffer, length delimited.\n       * @function decodeDelimited\n       * @memberof market.mass.UpdateListing\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @returns {market.mass.UpdateListing} UpdateListing\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      UpdateListing.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader)) {\n          reader = new $Reader(reader);\n        }\n        return this.decode(reader, reader.uint32());\n      };\n\n      /**\n       * Verifies an UpdateListing message.\n       * @function verify\n       * @memberof market.mass.UpdateListing\n       * @static\n       * @param {Object.<string,*>} message Plain object to verify\n       * @returns {string|null} `null` if valid, otherwise the reason why it is not\n       */\n      UpdateListing.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null) {\n          return \"object expected\";\n        }\n        var properties = {};\n        if (message.id != null && message.hasOwnProperty(\"id\")) {\n          var error = $root.market.mass.ObjectId.verify(message.id);\n          if (error) {\n            return \"id.\" + error;\n          }\n        }\n        if (message.price != null && message.hasOwnProperty(\"price\")) {\n          properties._price = 1;\n          {\n            var error = $root.market.mass.Uint256.verify(message.price);\n            if (error) {\n              return \"price.\" + error;\n            }\n          }\n        }\n        if (message.metadata != null && message.hasOwnProperty(\"metadata\")) {\n          properties._metadata = 1;\n          {\n            var error = $root.market.mass.ListingMetadata.verify(\n              message.metadata,\n            );\n            if (error) {\n              return \"metadata.\" + error;\n            }\n          }\n        }\n        if (message.viewState != null && message.hasOwnProperty(\"viewState\")) {\n          properties._viewState = 1;\n          switch (message.viewState) {\n            default:\n              return \"viewState: enum value expected\";\n            case 0:\n            case 1:\n            case 2:\n              break;\n          }\n        }\n        if (\n          message.addOptions != null && message.hasOwnProperty(\"addOptions\")\n        ) {\n          if (!Array.isArray(message.addOptions)) {\n            return \"addOptions: array expected\";\n          }\n          for (var i = 0; i < message.addOptions.length; ++i) {\n            var error = $root.market.mass.ListingOption.verify(\n              message.addOptions[i],\n            );\n            if (error) {\n              return \"addOptions.\" + error;\n            }\n          }\n        }\n        if (\n          message.removeOptionIds != null &&\n          message.hasOwnProperty(\"removeOptionIds\")\n        ) {\n          if (!Array.isArray(message.removeOptionIds)) {\n            return \"removeOptionIds: array expected\";\n          }\n          for (var i = 0; i < message.removeOptionIds.length; ++i) {\n            var error = $root.market.mass.ObjectId.verify(\n              message.removeOptionIds[i],\n            );\n            if (error) {\n              return \"removeOptionIds.\" + error;\n            }\n          }\n        }\n        if (\n          message.addVariations != null &&\n          message.hasOwnProperty(\"addVariations\")\n        ) {\n          if (!Array.isArray(message.addVariations)) {\n            return \"addVariations: array expected\";\n          }\n          for (var i = 0; i < message.addVariations.length; ++i) {\n            var error = $root.market.mass.UpdateListing.AddVariation.verify(\n              message.addVariations[i],\n            );\n            if (error) {\n              return \"addVariations.\" + error;\n            }\n          }\n        }\n        if (\n          message.removeVariationIds != null &&\n          message.hasOwnProperty(\"removeVariationIds\")\n        ) {\n          if (!Array.isArray(message.removeVariationIds)) {\n            return \"removeVariationIds: array expected\";\n          }\n          for (var i = 0; i < message.removeVariationIds.length; ++i) {\n            var error = $root.market.mass.ObjectId.verify(\n              message.removeVariationIds[i],\n            );\n            if (error) {\n              return \"removeVariationIds.\" + error;\n            }\n          }\n        }\n        if (\n          message.stockUpdates != null && message.hasOwnProperty(\"stockUpdates\")\n        ) {\n          if (!Array.isArray(message.stockUpdates)) {\n            return \"stockUpdates: array expected\";\n          }\n          for (var i = 0; i < message.stockUpdates.length; ++i) {\n            var error = $root.market.mass.ListingStockStatus.verify(\n              message.stockUpdates[i],\n            );\n            if (error) {\n              return \"stockUpdates.\" + error;\n            }\n          }\n        }\n        return null;\n      };\n\n      /**\n       * Creates an UpdateListing message from a plain object. Also converts values to their respective internal types.\n       * @function fromObject\n       * @memberof market.mass.UpdateListing\n       * @static\n       * @param {Object.<string,*>} object Plain object\n       * @returns {market.mass.UpdateListing} UpdateListing\n       */\n      UpdateListing.fromObject = function fromObject(object) {\n        if (object instanceof $root.market.mass.UpdateListing) {\n          return object;\n        }\n        var message = new $root.market.mass.UpdateListing();\n        if (object.id != null) {\n          if (typeof object.id !== \"object\") {\n            throw TypeError(\".market.mass.UpdateListing.id: object expected\");\n          }\n          message.id = $root.market.mass.ObjectId.fromObject(object.id);\n        }\n        if (object.price != null) {\n          if (typeof object.price !== \"object\") {\n            throw TypeError(\n              \".market.mass.UpdateListing.price: object expected\",\n            );\n          }\n          message.price = $root.market.mass.Uint256.fromObject(object.price);\n        }\n        if (object.metadata != null) {\n          if (typeof object.metadata !== \"object\") {\n            throw TypeError(\n              \".market.mass.UpdateListing.metadata: object expected\",\n            );\n          }\n          message.metadata = $root.market.mass.ListingMetadata.fromObject(\n            object.metadata,\n          );\n        }\n        switch (object.viewState) {\n          default:\n            if (typeof object.viewState === \"number\") {\n              message.viewState = object.viewState;\n              break;\n            }\n            break;\n          case \"LISTING_VIEW_STATE_UNSPECIFIED\":\n          case 0:\n            message.viewState = 0;\n            break;\n          case \"LISTING_VIEW_STATE_PUBLISHED\":\n          case 1:\n            message.viewState = 1;\n            break;\n          case \"LISTING_VIEW_STATE_DELETED\":\n          case 2:\n            message.viewState = 2;\n            break;\n        }\n        if (object.addOptions) {\n          if (!Array.isArray(object.addOptions)) {\n            throw TypeError(\n              \".market.mass.UpdateListing.addOptions: array expected\",\n            );\n          }\n          message.addOptions = [];\n          for (var i = 0; i < object.addOptions.length; ++i) {\n            if (typeof object.addOptions[i] !== \"object\") {\n              throw TypeError(\n                \".market.mass.UpdateListing.addOptions: object expected\",\n              );\n            }\n            message.addOptions[i] = $root.market.mass.ListingOption.fromObject(\n              object.addOptions[i],\n            );\n          }\n        }\n        if (object.removeOptionIds) {\n          if (!Array.isArray(object.removeOptionIds)) {\n            throw TypeError(\n              \".market.mass.UpdateListing.removeOptionIds: array expected\",\n            );\n          }\n          message.removeOptionIds = [];\n          for (var i = 0; i < object.removeOptionIds.length; ++i) {\n            if (typeof object.removeOptionIds[i] !== \"object\") {\n              throw TypeError(\n                \".market.mass.UpdateListing.removeOptionIds: object expected\",\n              );\n            }\n            message.removeOptionIds[i] = $root.market.mass.ObjectId.fromObject(\n              object.removeOptionIds[i],\n            );\n          }\n        }\n        if (object.addVariations) {\n          if (!Array.isArray(object.addVariations)) {\n            throw TypeError(\n              \".market.mass.UpdateListing.addVariations: array expected\",\n            );\n          }\n          message.addVariations = [];\n          for (var i = 0; i < object.addVariations.length; ++i) {\n            if (typeof object.addVariations[i] !== \"object\") {\n              throw TypeError(\n                \".market.mass.UpdateListing.addVariations: object expected\",\n              );\n            }\n            message.addVariations[i] = $root.market.mass.UpdateListing\n              .AddVariation.fromObject(object.addVariations[i]);\n          }\n        }\n        if (object.removeVariationIds) {\n          if (!Array.isArray(object.removeVariationIds)) {\n            throw TypeError(\n              \".market.mass.UpdateListing.removeVariationIds: array expected\",\n            );\n          }\n          message.removeVariationIds = [];\n          for (var i = 0; i < object.removeVariationIds.length; ++i) {\n            if (typeof object.removeVariationIds[i] !== \"object\") {\n              throw TypeError(\n                \".market.mass.UpdateListing.removeVariationIds: object expected\",\n              );\n            }\n            message.removeVariationIds[i] = $root.market.mass.ObjectId\n              .fromObject(object.removeVariationIds[i]);\n          }\n        }\n        if (object.stockUpdates) {\n          if (!Array.isArray(object.stockUpdates)) {\n            throw TypeError(\n              \".market.mass.UpdateListing.stockUpdates: array expected\",\n            );\n          }\n          message.stockUpdates = [];\n          for (var i = 0; i < object.stockUpdates.length; ++i) {\n            if (typeof object.stockUpdates[i] !== \"object\") {\n              throw TypeError(\n                \".market.mass.UpdateListing.stockUpdates: object expected\",\n              );\n            }\n            message.stockUpdates[i] = $root.market.mass.ListingStockStatus\n              .fromObject(object.stockUpdates[i]);\n          }\n        }\n        return message;\n      };\n\n      /**\n       * Creates a plain object from an UpdateListing message. Also converts values to other types if specified.\n       * @function toObject\n       * @memberof market.mass.UpdateListing\n       * @static\n       * @param {market.mass.UpdateListing} message UpdateListing\n       * @param {$protobuf.IConversionOptions} [options] Conversion options\n       * @returns {Object.<string,*>} Plain object\n       */\n      UpdateListing.toObject = function toObject(message, options) {\n        if (!options) {\n          options = {};\n        }\n        var object = {};\n        if (options.arrays || options.defaults) {\n          object.addOptions = [];\n          object.removeOptionIds = [];\n          object.addVariations = [];\n          object.removeVariationIds = [];\n          object.stockUpdates = [];\n        }\n        if (options.defaults) {\n          object.id = null;\n        }\n        if (message.id != null && message.hasOwnProperty(\"id\")) {\n          object.id = $root.market.mass.ObjectId.toObject(message.id, options);\n        }\n        if (message.price != null && message.hasOwnProperty(\"price\")) {\n          object.price = $root.market.mass.Uint256.toObject(\n            message.price,\n            options,\n          );\n          if (options.oneofs) {\n            object._price = \"price\";\n          }\n        }\n        if (message.metadata != null && message.hasOwnProperty(\"metadata\")) {\n          object.metadata = $root.market.mass.ListingMetadata.toObject(\n            message.metadata,\n            options,\n          );\n          if (options.oneofs) {\n            object._metadata = \"metadata\";\n          }\n        }\n        if (message.viewState != null && message.hasOwnProperty(\"viewState\")) {\n          object.viewState = options.enums === String\n            ? $root.market.mass.ListingViewState[message.viewState] ===\n                undefined\n              ? message.viewState\n              : $root.market.mass.ListingViewState[message.viewState]\n            : message.viewState;\n          if (options.oneofs) {\n            object._viewState = \"viewState\";\n          }\n        }\n        if (message.addOptions && message.addOptions.length) {\n          object.addOptions = [];\n          for (var j = 0; j < message.addOptions.length; ++j) {\n            object.addOptions[j] = $root.market.mass.ListingOption.toObject(\n              message.addOptions[j],\n              options,\n            );\n          }\n        }\n        if (message.removeOptionIds && message.removeOptionIds.length) {\n          object.removeOptionIds = [];\n          for (var j = 0; j < message.removeOptionIds.length; ++j) {\n            object.removeOptionIds[j] = $root.market.mass.ObjectId.toObject(\n              message.removeOptionIds[j],\n              options,\n            );\n          }\n        }\n        if (message.addVariations && message.addVariations.length) {\n          object.addVariations = [];\n          for (var j = 0; j < message.addVariations.length; ++j) {\n            object.addVariations[j] = $root.market.mass.UpdateListing\n              .AddVariation.toObject(message.addVariations[j], options);\n          }\n        }\n        if (message.removeVariationIds && message.removeVariationIds.length) {\n          object.removeVariationIds = [];\n          for (var j = 0; j < message.removeVariationIds.length; ++j) {\n            object.removeVariationIds[j] = $root.market.mass.ObjectId.toObject(\n              message.removeVariationIds[j],\n              options,\n            );\n          }\n        }\n        if (message.stockUpdates && message.stockUpdates.length) {\n          object.stockUpdates = [];\n          for (var j = 0; j < message.stockUpdates.length; ++j) {\n            object.stockUpdates[j] = $root.market.mass.ListingStockStatus\n              .toObject(message.stockUpdates[j], options);\n          }\n        }\n        return object;\n      };\n\n      /**\n       * Converts this UpdateListing to JSON.\n       * @function toJSON\n       * @memberof market.mass.UpdateListing\n       * @instance\n       * @returns {Object.<string,*>} JSON object\n       */\n      UpdateListing.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n      };\n\n      /**\n       * Gets the default type url for UpdateListing\n       * @function getTypeUrl\n       * @memberof market.mass.UpdateListing\n       * @static\n       * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n       * @returns {string} The default type url\n       */\n      UpdateListing.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n        if (typeUrlPrefix === undefined) {\n          typeUrlPrefix = \"type.googleapis.com\";\n        }\n        return typeUrlPrefix + \"/market.mass.UpdateListing\";\n      };\n\n      UpdateListing.AddVariation = (function () {\n        /**\n         * Properties of an AddVariation.\n         * @memberof market.mass.UpdateListing\n         * @interface IAddVariation\n         * @property {market.mass.IObjectId|null} [optionId] AddVariation optionId\n         * @property {market.mass.IListingVariation|null} [variation] AddVariation variation\n         */\n\n        /**\n         * Constructs a new AddVariation.\n         * @memberof market.mass.UpdateListing\n         * @classdesc Represents an AddVariation.\n         * @implements IAddVariation\n         * @constructor\n         * @param {market.mass.UpdateListing.IAddVariation=} [properties] Properties to set\n         */\n        function AddVariation(properties) {\n          if (properties) {\n            for (\n              var keys = Object.keys(properties), i = 0;\n              i < keys.length;\n              ++i\n            ) {\n              if (properties[keys[i]] != null) {\n                this[keys[i]] = properties[keys[i]];\n              }\n            }\n          }\n        }\n\n        /**\n         * AddVariation optionId.\n         * @member {market.mass.IObjectId|null|undefined} optionId\n         * @memberof market.mass.UpdateListing.AddVariation\n         * @instance\n         */\n        AddVariation.prototype.optionId = null;\n\n        /**\n         * AddVariation variation.\n         * @member {market.mass.IListingVariation|null|undefined} variation\n         * @memberof market.mass.UpdateListing.AddVariation\n         * @instance\n         */\n        AddVariation.prototype.variation = null;\n\n        /**\n         * Creates a new AddVariation instance using the specified properties.\n         * @function create\n         * @memberof market.mass.UpdateListing.AddVariation\n         * @static\n         * @param {market.mass.UpdateListing.IAddVariation=} [properties] Properties to set\n         * @returns {market.mass.UpdateListing.AddVariation} AddVariation instance\n         */\n        AddVariation.create = function create(properties) {\n          return new AddVariation(properties);\n        };\n\n        /**\n         * Encodes the specified AddVariation message. Does not implicitly {@link market.mass.UpdateListing.AddVariation.verify|verify} messages.\n         * @function encode\n         * @memberof market.mass.UpdateListing.AddVariation\n         * @static\n         * @param {market.mass.UpdateListing.IAddVariation} message AddVariation message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        AddVariation.encode = function encode(message, writer) {\n          if (!writer) {\n            writer = $Writer.create();\n          }\n          if (\n            message.optionId != null &&\n            Object.hasOwnProperty.call(message, \"optionId\")\n          ) {\n            $root.market.mass.ObjectId.encode(\n              message.optionId,\n              writer.uint32(/* id 1, wireType 2 =*/ 10).fork(),\n            ).ldelim();\n          }\n          if (\n            message.variation != null &&\n            Object.hasOwnProperty.call(message, \"variation\")\n          ) {\n            $root.market.mass.ListingVariation.encode(\n              message.variation,\n              writer.uint32(/* id 2, wireType 2 =*/ 18).fork(),\n            ).ldelim();\n          }\n          return writer;\n        };\n\n        /**\n         * Encodes the specified AddVariation message, length delimited. Does not implicitly {@link market.mass.UpdateListing.AddVariation.verify|verify} messages.\n         * @function encodeDelimited\n         * @memberof market.mass.UpdateListing.AddVariation\n         * @static\n         * @param {market.mass.UpdateListing.IAddVariation} message AddVariation message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        AddVariation.encodeDelimited = function encodeDelimited(\n          message,\n          writer,\n        ) {\n          return this.encode(message, writer).ldelim();\n        };\n\n        /**\n         * Decodes an AddVariation message from the specified reader or buffer.\n         * @function decode\n         * @memberof market.mass.UpdateListing.AddVariation\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @param {number} [length] Message length if known beforehand\n         * @returns {market.mass.UpdateListing.AddVariation} AddVariation\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        AddVariation.decode = function decode(reader, length) {\n          if (!(reader instanceof $Reader)) {\n            reader = $Reader.create(reader);\n          }\n          var end = length === undefined ? reader.len : reader.pos + length,\n            message = new $root.market.mass.UpdateListing.AddVariation();\n          while (reader.pos < end) {\n            var tag = reader.uint32();\n            switch (tag >>> 3) {\n              case 1: {\n                message.optionId = $root.market.mass.ObjectId.decode(\n                  reader,\n                  reader.uint32(),\n                );\n                break;\n              }\n              case 2: {\n                message.variation = $root.market.mass.ListingVariation.decode(\n                  reader,\n                  reader.uint32(),\n                );\n                break;\n              }\n              default:\n                reader.skipType(tag & 7);\n                break;\n            }\n          }\n          return message;\n        };\n\n        /**\n         * Decodes an AddVariation message from the specified reader or buffer, length delimited.\n         * @function decodeDelimited\n         * @memberof market.mass.UpdateListing.AddVariation\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @returns {market.mass.UpdateListing.AddVariation} AddVariation\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        AddVariation.decodeDelimited = function decodeDelimited(reader) {\n          if (!(reader instanceof $Reader)) {\n            reader = new $Reader(reader);\n          }\n          return this.decode(reader, reader.uint32());\n        };\n\n        /**\n         * Verifies an AddVariation message.\n         * @function verify\n         * @memberof market.mass.UpdateListing.AddVariation\n         * @static\n         * @param {Object.<string,*>} message Plain object to verify\n         * @returns {string|null} `null` if valid, otherwise the reason why it is not\n         */\n        AddVariation.verify = function verify(message) {\n          if (typeof message !== \"object\" || message === null) {\n            return \"object expected\";\n          }\n          if (message.optionId != null && message.hasOwnProperty(\"optionId\")) {\n            var error = $root.market.mass.ObjectId.verify(message.optionId);\n            if (error) {\n              return \"optionId.\" + error;\n            }\n          }\n          if (\n            message.variation != null && message.hasOwnProperty(\"variation\")\n          ) {\n            var error = $root.market.mass.ListingVariation.verify(\n              message.variation,\n            );\n            if (error) {\n              return \"variation.\" + error;\n            }\n          }\n          return null;\n        };\n\n        /**\n         * Creates an AddVariation message from a plain object. Also converts values to their respective internal types.\n         * @function fromObject\n         * @memberof market.mass.UpdateListing.AddVariation\n         * @static\n         * @param {Object.<string,*>} object Plain object\n         * @returns {market.mass.UpdateListing.AddVariation} AddVariation\n         */\n        AddVariation.fromObject = function fromObject(object) {\n          if (object instanceof $root.market.mass.UpdateListing.AddVariation) {\n            return object;\n          }\n          var message = new $root.market.mass.UpdateListing.AddVariation();\n          if (object.optionId != null) {\n            if (typeof object.optionId !== \"object\") {\n              throw TypeError(\n                \".market.mass.UpdateListing.AddVariation.optionId: object expected\",\n              );\n            }\n            message.optionId = $root.market.mass.ObjectId.fromObject(\n              object.optionId,\n            );\n          }\n          if (object.variation != null) {\n            if (typeof object.variation !== \"object\") {\n              throw TypeError(\n                \".market.mass.UpdateListing.AddVariation.variation: object expected\",\n              );\n            }\n            message.variation = $root.market.mass.ListingVariation.fromObject(\n              object.variation,\n            );\n          }\n          return message;\n        };\n\n        /**\n         * Creates a plain object from an AddVariation message. Also converts values to other types if specified.\n         * @function toObject\n         * @memberof market.mass.UpdateListing.AddVariation\n         * @static\n         * @param {market.mass.UpdateListing.AddVariation} message AddVariation\n         * @param {$protobuf.IConversionOptions} [options] Conversion options\n         * @returns {Object.<string,*>} Plain object\n         */\n        AddVariation.toObject = function toObject(message, options) {\n          if (!options) {\n            options = {};\n          }\n          var object = {};\n          if (options.defaults) {\n            object.optionId = null;\n            object.variation = null;\n          }\n          if (message.optionId != null && message.hasOwnProperty(\"optionId\")) {\n            object.optionId = $root.market.mass.ObjectId.toObject(\n              message.optionId,\n              options,\n            );\n          }\n          if (\n            message.variation != null && message.hasOwnProperty(\"variation\")\n          ) {\n            object.variation = $root.market.mass.ListingVariation.toObject(\n              message.variation,\n              options,\n            );\n          }\n          return object;\n        };\n\n        /**\n         * Converts this AddVariation to JSON.\n         * @function toJSON\n         * @memberof market.mass.UpdateListing.AddVariation\n         * @instance\n         * @returns {Object.<string,*>} JSON object\n         */\n        AddVariation.prototype.toJSON = function toJSON() {\n          return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n        };\n\n        /**\n         * Gets the default type url for AddVariation\n         * @function getTypeUrl\n         * @memberof market.mass.UpdateListing.AddVariation\n         * @static\n         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n         * @returns {string} The default type url\n         */\n        AddVariation.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n          if (typeUrlPrefix === undefined) {\n            typeUrlPrefix = \"type.googleapis.com\";\n          }\n          return typeUrlPrefix + \"/market.mass.UpdateListing.AddVariation\";\n        };\n\n        return AddVariation;\n      })();\n\n      return UpdateListing;\n    })();\n\n    mass.ChangeInventory = (function () {\n      /**\n       * Properties of a ChangeInventory.\n       * @memberof market.mass\n       * @interface IChangeInventory\n       * @property {market.mass.IObjectId|null} [id] ChangeInventory id\n       * @property {Array.<market.mass.IObjectId>|null} [variationIds] ChangeInventory variationIds\n       * @property {number|null} [diff] ChangeInventory diff\n       */\n\n      /**\n       * Constructs a new ChangeInventory.\n       * @memberof market.mass\n       * @classdesc Represents a ChangeInventory.\n       * @implements IChangeInventory\n       * @constructor\n       * @param {market.mass.IChangeInventory=} [properties] Properties to set\n       */\n      function ChangeInventory(properties) {\n        this.variationIds = [];\n        if (properties) {\n          for (\n            var keys = Object.keys(properties), i = 0;\n            i < keys.length;\n            ++i\n          ) {\n            if (properties[keys[i]] != null) {\n              this[keys[i]] = properties[keys[i]];\n            }\n          }\n        }\n      }\n\n      /**\n       * ChangeInventory id.\n       * @member {market.mass.IObjectId|null|undefined} id\n       * @memberof market.mass.ChangeInventory\n       * @instance\n       */\n      ChangeInventory.prototype.id = null;\n\n      /**\n       * ChangeInventory variationIds.\n       * @member {Array.<market.mass.IObjectId>} variationIds\n       * @memberof market.mass.ChangeInventory\n       * @instance\n       */\n      ChangeInventory.prototype.variationIds = $util.emptyArray;\n\n      /**\n       * ChangeInventory diff.\n       * @member {number} diff\n       * @memberof market.mass.ChangeInventory\n       * @instance\n       */\n      ChangeInventory.prototype.diff = 0;\n\n      /**\n       * Creates a new ChangeInventory instance using the specified properties.\n       * @function create\n       * @memberof market.mass.ChangeInventory\n       * @static\n       * @param {market.mass.IChangeInventory=} [properties] Properties to set\n       * @returns {market.mass.ChangeInventory} ChangeInventory instance\n       */\n      ChangeInventory.create = function create(properties) {\n        return new ChangeInventory(properties);\n      };\n\n      /**\n       * Encodes the specified ChangeInventory message. Does not implicitly {@link market.mass.ChangeInventory.verify|verify} messages.\n       * @function encode\n       * @memberof market.mass.ChangeInventory\n       * @static\n       * @param {market.mass.IChangeInventory} message ChangeInventory message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      ChangeInventory.encode = function encode(message, writer) {\n        if (!writer) {\n          writer = $Writer.create();\n        }\n        if (message.id != null && Object.hasOwnProperty.call(message, \"id\")) {\n          $root.market.mass.ObjectId.encode(\n            message.id,\n            writer.uint32(/* id 1, wireType 2 =*/ 10).fork(),\n          ).ldelim();\n        }\n        if (message.variationIds != null && message.variationIds.length) {\n          for (var i = 0; i < message.variationIds.length; ++i) {\n            $root.market.mass.ObjectId.encode(\n              message.variationIds[i],\n              writer.uint32(/* id 2, wireType 2 =*/ 18).fork(),\n            ).ldelim();\n          }\n        }\n        if (\n          message.diff != null && Object.hasOwnProperty.call(message, \"diff\")\n        ) {\n          writer.uint32(/* id 3, wireType 0 =*/ 24).sint32(message.diff);\n        }\n        return writer;\n      };\n\n      /**\n       * Encodes the specified ChangeInventory message, length delimited. Does not implicitly {@link market.mass.ChangeInventory.verify|verify} messages.\n       * @function encodeDelimited\n       * @memberof market.mass.ChangeInventory\n       * @static\n       * @param {market.mass.IChangeInventory} message ChangeInventory message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      ChangeInventory.encodeDelimited = function encodeDelimited(\n        message,\n        writer,\n      ) {\n        return this.encode(message, writer).ldelim();\n      };\n\n      /**\n       * Decodes a ChangeInventory message from the specified reader or buffer.\n       * @function decode\n       * @memberof market.mass.ChangeInventory\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @param {number} [length] Message length if known beforehand\n       * @returns {market.mass.ChangeInventory} ChangeInventory\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      ChangeInventory.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader)) {\n          reader = $Reader.create(reader);\n        }\n        var end = length === undefined ? reader.len : reader.pos + length,\n          message = new $root.market.mass.ChangeInventory();\n        while (reader.pos < end) {\n          var tag = reader.uint32();\n          switch (tag >>> 3) {\n            case 1: {\n              message.id = $root.market.mass.ObjectId.decode(\n                reader,\n                reader.uint32(),\n              );\n              break;\n            }\n            case 2: {\n              if (!(message.variationIds && message.variationIds.length)) {\n                message.variationIds = [];\n              }\n              message.variationIds.push(\n                $root.market.mass.ObjectId.decode(reader, reader.uint32()),\n              );\n              break;\n            }\n            case 3: {\n              message.diff = reader.sint32();\n              break;\n            }\n            default:\n              reader.skipType(tag & 7);\n              break;\n          }\n        }\n        return message;\n      };\n\n      /**\n       * Decodes a ChangeInventory message from the specified reader or buffer, length delimited.\n       * @function decodeDelimited\n       * @memberof market.mass.ChangeInventory\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @returns {market.mass.ChangeInventory} ChangeInventory\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      ChangeInventory.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader)) {\n          reader = new $Reader(reader);\n        }\n        return this.decode(reader, reader.uint32());\n      };\n\n      /**\n       * Verifies a ChangeInventory message.\n       * @function verify\n       * @memberof market.mass.ChangeInventory\n       * @static\n       * @param {Object.<string,*>} message Plain object to verify\n       * @returns {string|null} `null` if valid, otherwise the reason why it is not\n       */\n      ChangeInventory.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null) {\n          return \"object expected\";\n        }\n        if (message.id != null && message.hasOwnProperty(\"id\")) {\n          var error = $root.market.mass.ObjectId.verify(message.id);\n          if (error) {\n            return \"id.\" + error;\n          }\n        }\n        if (\n          message.variationIds != null && message.hasOwnProperty(\"variationIds\")\n        ) {\n          if (!Array.isArray(message.variationIds)) {\n            return \"variationIds: array expected\";\n          }\n          for (var i = 0; i < message.variationIds.length; ++i) {\n            var error = $root.market.mass.ObjectId.verify(\n              message.variationIds[i],\n            );\n            if (error) {\n              return \"variationIds.\" + error;\n            }\n          }\n        }\n        if (message.diff != null && message.hasOwnProperty(\"diff\")) {\n          if (!$util.isInteger(message.diff)) {\n            return \"diff: integer expected\";\n          }\n        }\n        return null;\n      };\n\n      /**\n       * Creates a ChangeInventory message from a plain object. Also converts values to their respective internal types.\n       * @function fromObject\n       * @memberof market.mass.ChangeInventory\n       * @static\n       * @param {Object.<string,*>} object Plain object\n       * @returns {market.mass.ChangeInventory} ChangeInventory\n       */\n      ChangeInventory.fromObject = function fromObject(object) {\n        if (object instanceof $root.market.mass.ChangeInventory) {\n          return object;\n        }\n        var message = new $root.market.mass.ChangeInventory();\n        if (object.id != null) {\n          if (typeof object.id !== \"object\") {\n            throw TypeError(\".market.mass.ChangeInventory.id: object expected\");\n          }\n          message.id = $root.market.mass.ObjectId.fromObject(object.id);\n        }\n        if (object.variationIds) {\n          if (!Array.isArray(object.variationIds)) {\n            throw TypeError(\n              \".market.mass.ChangeInventory.variationIds: array expected\",\n            );\n          }\n          message.variationIds = [];\n          for (var i = 0; i < object.variationIds.length; ++i) {\n            if (typeof object.variationIds[i] !== \"object\") {\n              throw TypeError(\n                \".market.mass.ChangeInventory.variationIds: object expected\",\n              );\n            }\n            message.variationIds[i] = $root.market.mass.ObjectId.fromObject(\n              object.variationIds[i],\n            );\n          }\n        }\n        if (object.diff != null) {\n          message.diff = object.diff | 0;\n        }\n        return message;\n      };\n\n      /**\n       * Creates a plain object from a ChangeInventory message. Also converts values to other types if specified.\n       * @function toObject\n       * @memberof market.mass.ChangeInventory\n       * @static\n       * @param {market.mass.ChangeInventory} message ChangeInventory\n       * @param {$protobuf.IConversionOptions} [options] Conversion options\n       * @returns {Object.<string,*>} Plain object\n       */\n      ChangeInventory.toObject = function toObject(message, options) {\n        if (!options) {\n          options = {};\n        }\n        var object = {};\n        if (options.arrays || options.defaults) {\n          object.variationIds = [];\n        }\n        if (options.defaults) {\n          object.id = null;\n          object.diff = 0;\n        }\n        if (message.id != null && message.hasOwnProperty(\"id\")) {\n          object.id = $root.market.mass.ObjectId.toObject(message.id, options);\n        }\n        if (message.variationIds && message.variationIds.length) {\n          object.variationIds = [];\n          for (var j = 0; j < message.variationIds.length; ++j) {\n            object.variationIds[j] = $root.market.mass.ObjectId.toObject(\n              message.variationIds[j],\n              options,\n            );\n          }\n        }\n        if (message.diff != null && message.hasOwnProperty(\"diff\")) {\n          object.diff = message.diff;\n        }\n        return object;\n      };\n\n      /**\n       * Converts this ChangeInventory to JSON.\n       * @function toJSON\n       * @memberof market.mass.ChangeInventory\n       * @instance\n       * @returns {Object.<string,*>} JSON object\n       */\n      ChangeInventory.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n      };\n\n      /**\n       * Gets the default type url for ChangeInventory\n       * @function getTypeUrl\n       * @memberof market.mass.ChangeInventory\n       * @static\n       * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n       * @returns {string} The default type url\n       */\n      ChangeInventory.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n        if (typeUrlPrefix === undefined) {\n          typeUrlPrefix = \"type.googleapis.com\";\n        }\n        return typeUrlPrefix + \"/market.mass.ChangeInventory\";\n      };\n\n      return ChangeInventory;\n    })();\n\n    mass.Tag = (function () {\n      /**\n       * Properties of a Tag.\n       * @memberof market.mass\n       * @interface ITag\n       * @property {market.mass.IObjectId|null} [id] Tag id\n       * @property {string|null} [name] Tag name\n       * @property {Array.<market.mass.IObjectId>|null} [listingIds] Tag listingIds\n       * @property {boolean|null} [deleted] Tag deleted\n       */\n\n      /**\n       * Constructs a new Tag.\n       * @memberof market.mass\n       * @classdesc Represents a Tag.\n       * @implements ITag\n       * @constructor\n       * @param {market.mass.ITag=} [properties] Properties to set\n       */\n      function Tag(properties) {\n        this.listingIds = [];\n        if (properties) {\n          for (\n            var keys = Object.keys(properties), i = 0;\n            i < keys.length;\n            ++i\n          ) {\n            if (properties[keys[i]] != null) {\n              this[keys[i]] = properties[keys[i]];\n            }\n          }\n        }\n      }\n\n      /**\n       * Tag id.\n       * @member {market.mass.IObjectId|null|undefined} id\n       * @memberof market.mass.Tag\n       * @instance\n       */\n      Tag.prototype.id = null;\n\n      /**\n       * Tag name.\n       * @member {string} name\n       * @memberof market.mass.Tag\n       * @instance\n       */\n      Tag.prototype.name = \"\";\n\n      /**\n       * Tag listingIds.\n       * @member {Array.<market.mass.IObjectId>} listingIds\n       * @memberof market.mass.Tag\n       * @instance\n       */\n      Tag.prototype.listingIds = $util.emptyArray;\n\n      /**\n       * Tag deleted.\n       * @member {boolean} deleted\n       * @memberof market.mass.Tag\n       * @instance\n       */\n      Tag.prototype.deleted = false;\n\n      /**\n       * Creates a new Tag instance using the specified properties.\n       * @function create\n       * @memberof market.mass.Tag\n       * @static\n       * @param {market.mass.ITag=} [properties] Properties to set\n       * @returns {market.mass.Tag} Tag instance\n       */\n      Tag.create = function create(properties) {\n        return new Tag(properties);\n      };\n\n      /**\n       * Encodes the specified Tag message. Does not implicitly {@link market.mass.Tag.verify|verify} messages.\n       * @function encode\n       * @memberof market.mass.Tag\n       * @static\n       * @param {market.mass.ITag} message Tag message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      Tag.encode = function encode(message, writer) {\n        if (!writer) {\n          writer = $Writer.create();\n        }\n        if (message.id != null && Object.hasOwnProperty.call(message, \"id\")) {\n          $root.market.mass.ObjectId.encode(\n            message.id,\n            writer.uint32(/* id 1, wireType 2 =*/ 10).fork(),\n          ).ldelim();\n        }\n        if (\n          message.name != null && Object.hasOwnProperty.call(message, \"name\")\n        ) {\n          writer.uint32(/* id 2, wireType 2 =*/ 18).string(message.name);\n        }\n        if (message.listingIds != null && message.listingIds.length) {\n          for (var i = 0; i < message.listingIds.length; ++i) {\n            $root.market.mass.ObjectId.encode(\n              message.listingIds[i],\n              writer.uint32(/* id 3, wireType 2 =*/ 26).fork(),\n            ).ldelim();\n          }\n        }\n        if (\n          message.deleted != null &&\n          Object.hasOwnProperty.call(message, \"deleted\")\n        ) {\n          writer.uint32(/* id 4, wireType 0 =*/ 32).bool(message.deleted);\n        }\n        return writer;\n      };\n\n      /**\n       * Encodes the specified Tag message, length delimited. Does not implicitly {@link market.mass.Tag.verify|verify} messages.\n       * @function encodeDelimited\n       * @memberof market.mass.Tag\n       * @static\n       * @param {market.mass.ITag} message Tag message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      Tag.encodeDelimited = function encodeDelimited(message, writer) {\n        return this.encode(message, writer).ldelim();\n      };\n\n      /**\n       * Decodes a Tag message from the specified reader or buffer.\n       * @function decode\n       * @memberof market.mass.Tag\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @param {number} [length] Message length if known beforehand\n       * @returns {market.mass.Tag} Tag\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      Tag.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader)) {\n          reader = $Reader.create(reader);\n        }\n        var end = length === undefined ? reader.len : reader.pos + length,\n          message = new $root.market.mass.Tag();\n        while (reader.pos < end) {\n          var tag = reader.uint32();\n          switch (tag >>> 3) {\n            case 1: {\n              message.id = $root.market.mass.ObjectId.decode(\n                reader,\n                reader.uint32(),\n              );\n              break;\n            }\n            case 2: {\n              message.name = reader.string();\n              break;\n            }\n            case 3: {\n              if (!(message.listingIds && message.listingIds.length)) {\n                message.listingIds = [];\n              }\n              message.listingIds.push(\n                $root.market.mass.ObjectId.decode(reader, reader.uint32()),\n              );\n              break;\n            }\n            case 4: {\n              message.deleted = reader.bool();\n              break;\n            }\n            default:\n              reader.skipType(tag & 7);\n              break;\n          }\n        }\n        return message;\n      };\n\n      /**\n       * Decodes a Tag message from the specified reader or buffer, length delimited.\n       * @function decodeDelimited\n       * @memberof market.mass.Tag\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @returns {market.mass.Tag} Tag\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      Tag.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader)) {\n          reader = new $Reader(reader);\n        }\n        return this.decode(reader, reader.uint32());\n      };\n\n      /**\n       * Verifies a Tag message.\n       * @function verify\n       * @memberof market.mass.Tag\n       * @static\n       * @param {Object.<string,*>} message Plain object to verify\n       * @returns {string|null} `null` if valid, otherwise the reason why it is not\n       */\n      Tag.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null) {\n          return \"object expected\";\n        }\n        if (message.id != null && message.hasOwnProperty(\"id\")) {\n          var error = $root.market.mass.ObjectId.verify(message.id);\n          if (error) {\n            return \"id.\" + error;\n          }\n        }\n        if (message.name != null && message.hasOwnProperty(\"name\")) {\n          if (!$util.isString(message.name)) {\n            return \"name: string expected\";\n          }\n        }\n        if (\n          message.listingIds != null && message.hasOwnProperty(\"listingIds\")\n        ) {\n          if (!Array.isArray(message.listingIds)) {\n            return \"listingIds: array expected\";\n          }\n          for (var i = 0; i < message.listingIds.length; ++i) {\n            var error = $root.market.mass.ObjectId.verify(\n              message.listingIds[i],\n            );\n            if (error) {\n              return \"listingIds.\" + error;\n            }\n          }\n        }\n        if (message.deleted != null && message.hasOwnProperty(\"deleted\")) {\n          if (typeof message.deleted !== \"boolean\") {\n            return \"deleted: boolean expected\";\n          }\n        }\n        return null;\n      };\n\n      /**\n       * Creates a Tag message from a plain object. Also converts values to their respective internal types.\n       * @function fromObject\n       * @memberof market.mass.Tag\n       * @static\n       * @param {Object.<string,*>} object Plain object\n       * @returns {market.mass.Tag} Tag\n       */\n      Tag.fromObject = function fromObject(object) {\n        if (object instanceof $root.market.mass.Tag) {\n          return object;\n        }\n        var message = new $root.market.mass.Tag();\n        if (object.id != null) {\n          if (typeof object.id !== \"object\") {\n            throw TypeError(\".market.mass.Tag.id: object expected\");\n          }\n          message.id = $root.market.mass.ObjectId.fromObject(object.id);\n        }\n        if (object.name != null) {\n          message.name = String(object.name);\n        }\n        if (object.listingIds) {\n          if (!Array.isArray(object.listingIds)) {\n            throw TypeError(\".market.mass.Tag.listingIds: array expected\");\n          }\n          message.listingIds = [];\n          for (var i = 0; i < object.listingIds.length; ++i) {\n            if (typeof object.listingIds[i] !== \"object\") {\n              throw TypeError(\".market.mass.Tag.listingIds: object expected\");\n            }\n            message.listingIds[i] = $root.market.mass.ObjectId.fromObject(\n              object.listingIds[i],\n            );\n          }\n        }\n        if (object.deleted != null) {\n          message.deleted = Boolean(object.deleted);\n        }\n        return message;\n      };\n\n      /**\n       * Creates a plain object from a Tag message. Also converts values to other types if specified.\n       * @function toObject\n       * @memberof market.mass.Tag\n       * @static\n       * @param {market.mass.Tag} message Tag\n       * @param {$protobuf.IConversionOptions} [options] Conversion options\n       * @returns {Object.<string,*>} Plain object\n       */\n      Tag.toObject = function toObject(message, options) {\n        if (!options) {\n          options = {};\n        }\n        var object = {};\n        if (options.arrays || options.defaults) {\n          object.listingIds = [];\n        }\n        if (options.defaults) {\n          object.id = null;\n          object.name = \"\";\n          object.deleted = false;\n        }\n        if (message.id != null && message.hasOwnProperty(\"id\")) {\n          object.id = $root.market.mass.ObjectId.toObject(message.id, options);\n        }\n        if (message.name != null && message.hasOwnProperty(\"name\")) {\n          object.name = message.name;\n        }\n        if (message.listingIds && message.listingIds.length) {\n          object.listingIds = [];\n          for (var j = 0; j < message.listingIds.length; ++j) {\n            object.listingIds[j] = $root.market.mass.ObjectId.toObject(\n              message.listingIds[j],\n              options,\n            );\n          }\n        }\n        if (message.deleted != null && message.hasOwnProperty(\"deleted\")) {\n          object.deleted = message.deleted;\n        }\n        return object;\n      };\n\n      /**\n       * Converts this Tag to JSON.\n       * @function toJSON\n       * @memberof market.mass.Tag\n       * @instance\n       * @returns {Object.<string,*>} JSON object\n       */\n      Tag.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n      };\n\n      /**\n       * Gets the default type url for Tag\n       * @function getTypeUrl\n       * @memberof market.mass.Tag\n       * @static\n       * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n       * @returns {string} The default type url\n       */\n      Tag.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n        if (typeUrlPrefix === undefined) {\n          typeUrlPrefix = \"type.googleapis.com\";\n        }\n        return typeUrlPrefix + \"/market.mass.Tag\";\n      };\n\n      return Tag;\n    })();\n\n    mass.UpdateTag = (function () {\n      /**\n       * Properties of an UpdateTag.\n       * @memberof market.mass\n       * @interface IUpdateTag\n       * @property {market.mass.IObjectId|null} [id] UpdateTag id\n       * @property {string|null} [rename] UpdateTag rename\n       * @property {Array.<market.mass.IObjectId>|null} [addListingIds] UpdateTag addListingIds\n       * @property {Array.<market.mass.IObjectId>|null} [removeListingIds] UpdateTag removeListingIds\n       * @property {boolean|null} [\"delete\"] UpdateTag delete\n       */\n\n      /**\n       * Constructs a new UpdateTag.\n       * @memberof market.mass\n       * @classdesc Represents an UpdateTag.\n       * @implements IUpdateTag\n       * @constructor\n       * @param {market.mass.IUpdateTag=} [properties] Properties to set\n       */\n      function UpdateTag(properties) {\n        this.addListingIds = [];\n        this.removeListingIds = [];\n        if (properties) {\n          for (\n            var keys = Object.keys(properties), i = 0;\n            i < keys.length;\n            ++i\n          ) {\n            if (properties[keys[i]] != null) {\n              this[keys[i]] = properties[keys[i]];\n            }\n          }\n        }\n      }\n\n      /**\n       * UpdateTag id.\n       * @member {market.mass.IObjectId|null|undefined} id\n       * @memberof market.mass.UpdateTag\n       * @instance\n       */\n      UpdateTag.prototype.id = null;\n\n      /**\n       * UpdateTag rename.\n       * @member {string|null|undefined} rename\n       * @memberof market.mass.UpdateTag\n       * @instance\n       */\n      UpdateTag.prototype.rename = null;\n\n      /**\n       * UpdateTag addListingIds.\n       * @member {Array.<market.mass.IObjectId>} addListingIds\n       * @memberof market.mass.UpdateTag\n       * @instance\n       */\n      UpdateTag.prototype.addListingIds = $util.emptyArray;\n\n      /**\n       * UpdateTag removeListingIds.\n       * @member {Array.<market.mass.IObjectId>} removeListingIds\n       * @memberof market.mass.UpdateTag\n       * @instance\n       */\n      UpdateTag.prototype.removeListingIds = $util.emptyArray;\n\n      /**\n       * UpdateTag delete.\n       * @member {boolean|null|undefined} delete\n       * @memberof market.mass.UpdateTag\n       * @instance\n       */\n      UpdateTag.prototype[\"delete\"] = null;\n\n      // OneOf field names bound to virtual getters and setters\n      var $oneOfFields;\n\n      // Virtual OneOf for proto3 optional field\n      Object.defineProperty(UpdateTag.prototype, \"_rename\", {\n        get: $util.oneOfGetter($oneOfFields = [\"rename\"]),\n        set: $util.oneOfSetter($oneOfFields),\n      });\n\n      // Virtual OneOf for proto3 optional field\n      Object.defineProperty(UpdateTag.prototype, \"_delete\", {\n        get: $util.oneOfGetter($oneOfFields = [\"delete\"]),\n        set: $util.oneOfSetter($oneOfFields),\n      });\n\n      /**\n       * Creates a new UpdateTag instance using the specified properties.\n       * @function create\n       * @memberof market.mass.UpdateTag\n       * @static\n       * @param {market.mass.IUpdateTag=} [properties] Properties to set\n       * @returns {market.mass.UpdateTag} UpdateTag instance\n       */\n      UpdateTag.create = function create(properties) {\n        return new UpdateTag(properties);\n      };\n\n      /**\n       * Encodes the specified UpdateTag message. Does not implicitly {@link market.mass.UpdateTag.verify|verify} messages.\n       * @function encode\n       * @memberof market.mass.UpdateTag\n       * @static\n       * @param {market.mass.IUpdateTag} message UpdateTag message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      UpdateTag.encode = function encode(message, writer) {\n        if (!writer) {\n          writer = $Writer.create();\n        }\n        if (message.id != null && Object.hasOwnProperty.call(message, \"id\")) {\n          $root.market.mass.ObjectId.encode(\n            message.id,\n            writer.uint32(/* id 1, wireType 2 =*/ 10).fork(),\n          ).ldelim();\n        }\n        if (\n          message.rename != null &&\n          Object.hasOwnProperty.call(message, \"rename\")\n        ) {\n          writer.uint32(/* id 2, wireType 2 =*/ 18).string(message.rename);\n        }\n        if (message.addListingIds != null && message.addListingIds.length) {\n          for (var i = 0; i < message.addListingIds.length; ++i) {\n            $root.market.mass.ObjectId.encode(\n              message.addListingIds[i],\n              writer.uint32(/* id 3, wireType 2 =*/ 26).fork(),\n            ).ldelim();\n          }\n        }\n        if (\n          message.removeListingIds != null && message.removeListingIds.length\n        ) {\n          for (var i = 0; i < message.removeListingIds.length; ++i) {\n            $root.market.mass.ObjectId.encode(\n              message.removeListingIds[i],\n              writer.uint32(/* id 4, wireType 2 =*/ 34).fork(),\n            ).ldelim();\n          }\n        }\n        if (\n          message[\"delete\"] != null &&\n          Object.hasOwnProperty.call(message, \"delete\")\n        ) {\n          writer.uint32(/* id 5, wireType 0 =*/ 40).bool(message[\"delete\"]);\n        }\n        return writer;\n      };\n\n      /**\n       * Encodes the specified UpdateTag message, length delimited. Does not implicitly {@link market.mass.UpdateTag.verify|verify} messages.\n       * @function encodeDelimited\n       * @memberof market.mass.UpdateTag\n       * @static\n       * @param {market.mass.IUpdateTag} message UpdateTag message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      UpdateTag.encodeDelimited = function encodeDelimited(message, writer) {\n        return this.encode(message, writer).ldelim();\n      };\n\n      /**\n       * Decodes an UpdateTag message from the specified reader or buffer.\n       * @function decode\n       * @memberof market.mass.UpdateTag\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @param {number} [length] Message length if known beforehand\n       * @returns {market.mass.UpdateTag} UpdateTag\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      UpdateTag.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader)) {\n          reader = $Reader.create(reader);\n        }\n        var end = length === undefined ? reader.len : reader.pos + length,\n          message = new $root.market.mass.UpdateTag();\n        while (reader.pos < end) {\n          var tag = reader.uint32();\n          switch (tag >>> 3) {\n            case 1: {\n              message.id = $root.market.mass.ObjectId.decode(\n                reader,\n                reader.uint32(),\n              );\n              break;\n            }\n            case 2: {\n              message.rename = reader.string();\n              break;\n            }\n            case 3: {\n              if (!(message.addListingIds && message.addListingIds.length)) {\n                message.addListingIds = [];\n              }\n              message.addListingIds.push(\n                $root.market.mass.ObjectId.decode(reader, reader.uint32()),\n              );\n              break;\n            }\n            case 4: {\n              if (\n                !(message.removeListingIds && message.removeListingIds.length)\n              ) {\n                message.removeListingIds = [];\n              }\n              message.removeListingIds.push(\n                $root.market.mass.ObjectId.decode(reader, reader.uint32()),\n              );\n              break;\n            }\n            case 5: {\n              message[\"delete\"] = reader.bool();\n              break;\n            }\n            default:\n              reader.skipType(tag & 7);\n              break;\n          }\n        }\n        return message;\n      };\n\n      /**\n       * Decodes an UpdateTag message from the specified reader or buffer, length delimited.\n       * @function decodeDelimited\n       * @memberof market.mass.UpdateTag\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @returns {market.mass.UpdateTag} UpdateTag\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      UpdateTag.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader)) {\n          reader = new $Reader(reader);\n        }\n        return this.decode(reader, reader.uint32());\n      };\n\n      /**\n       * Verifies an UpdateTag message.\n       * @function verify\n       * @memberof market.mass.UpdateTag\n       * @static\n       * @param {Object.<string,*>} message Plain object to verify\n       * @returns {string|null} `null` if valid, otherwise the reason why it is not\n       */\n      UpdateTag.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null) {\n          return \"object expected\";\n        }\n        var properties = {};\n        if (message.id != null && message.hasOwnProperty(\"id\")) {\n          var error = $root.market.mass.ObjectId.verify(message.id);\n          if (error) {\n            return \"id.\" + error;\n          }\n        }\n        if (message.rename != null && message.hasOwnProperty(\"rename\")) {\n          properties._rename = 1;\n          if (!$util.isString(message.rename)) {\n            return \"rename: string expected\";\n          }\n        }\n        if (\n          message.addListingIds != null &&\n          message.hasOwnProperty(\"addListingIds\")\n        ) {\n          if (!Array.isArray(message.addListingIds)) {\n            return \"addListingIds: array expected\";\n          }\n          for (var i = 0; i < message.addListingIds.length; ++i) {\n            var error = $root.market.mass.ObjectId.verify(\n              message.addListingIds[i],\n            );\n            if (error) {\n              return \"addListingIds.\" + error;\n            }\n          }\n        }\n        if (\n          message.removeListingIds != null &&\n          message.hasOwnProperty(\"removeListingIds\")\n        ) {\n          if (!Array.isArray(message.removeListingIds)) {\n            return \"removeListingIds: array expected\";\n          }\n          for (var i = 0; i < message.removeListingIds.length; ++i) {\n            var error = $root.market.mass.ObjectId.verify(\n              message.removeListingIds[i],\n            );\n            if (error) {\n              return \"removeListingIds.\" + error;\n            }\n          }\n        }\n        if (message[\"delete\"] != null && message.hasOwnProperty(\"delete\")) {\n          properties._delete = 1;\n          if (typeof message[\"delete\"] !== \"boolean\") {\n            return \"delete: boolean expected\";\n          }\n        }\n        return null;\n      };\n\n      /**\n       * Creates an UpdateTag message from a plain object. Also converts values to their respective internal types.\n       * @function fromObject\n       * @memberof market.mass.UpdateTag\n       * @static\n       * @param {Object.<string,*>} object Plain object\n       * @returns {market.mass.UpdateTag} UpdateTag\n       */\n      UpdateTag.fromObject = function fromObject(object) {\n        if (object instanceof $root.market.mass.UpdateTag) {\n          return object;\n        }\n        var message = new $root.market.mass.UpdateTag();\n        if (object.id != null) {\n          if (typeof object.id !== \"object\") {\n            throw TypeError(\".market.mass.UpdateTag.id: object expected\");\n          }\n          message.id = $root.market.mass.ObjectId.fromObject(object.id);\n        }\n        if (object.rename != null) {\n          message.rename = String(object.rename);\n        }\n        if (object.addListingIds) {\n          if (!Array.isArray(object.addListingIds)) {\n            throw TypeError(\n              \".market.mass.UpdateTag.addListingIds: array expected\",\n            );\n          }\n          message.addListingIds = [];\n          for (var i = 0; i < object.addListingIds.length; ++i) {\n            if (typeof object.addListingIds[i] !== \"object\") {\n              throw TypeError(\n                \".market.mass.UpdateTag.addListingIds: object expected\",\n              );\n            }\n            message.addListingIds[i] = $root.market.mass.ObjectId.fromObject(\n              object.addListingIds[i],\n            );\n          }\n        }\n        if (object.removeListingIds) {\n          if (!Array.isArray(object.removeListingIds)) {\n            throw TypeError(\n              \".market.mass.UpdateTag.removeListingIds: array expected\",\n            );\n          }\n          message.removeListingIds = [];\n          for (var i = 0; i < object.removeListingIds.length; ++i) {\n            if (typeof object.removeListingIds[i] !== \"object\") {\n              throw TypeError(\n                \".market.mass.UpdateTag.removeListingIds: object expected\",\n              );\n            }\n            message.removeListingIds[i] = $root.market.mass.ObjectId.fromObject(\n              object.removeListingIds[i],\n            );\n          }\n        }\n        if (object[\"delete\"] != null) {\n          message[\"delete\"] = Boolean(object[\"delete\"]);\n        }\n        return message;\n      };\n\n      /**\n       * Creates a plain object from an UpdateTag message. Also converts values to other types if specified.\n       * @function toObject\n       * @memberof market.mass.UpdateTag\n       * @static\n       * @param {market.mass.UpdateTag} message UpdateTag\n       * @param {$protobuf.IConversionOptions} [options] Conversion options\n       * @returns {Object.<string,*>} Plain object\n       */\n      UpdateTag.toObject = function toObject(message, options) {\n        if (!options) {\n          options = {};\n        }\n        var object = {};\n        if (options.arrays || options.defaults) {\n          object.addListingIds = [];\n          object.removeListingIds = [];\n        }\n        if (options.defaults) {\n          object.id = null;\n        }\n        if (message.id != null && message.hasOwnProperty(\"id\")) {\n          object.id = $root.market.mass.ObjectId.toObject(message.id, options);\n        }\n        if (message.rename != null && message.hasOwnProperty(\"rename\")) {\n          object.rename = message.rename;\n          if (options.oneofs) {\n            object._rename = \"rename\";\n          }\n        }\n        if (message.addListingIds && message.addListingIds.length) {\n          object.addListingIds = [];\n          for (var j = 0; j < message.addListingIds.length; ++j) {\n            object.addListingIds[j] = $root.market.mass.ObjectId.toObject(\n              message.addListingIds[j],\n              options,\n            );\n          }\n        }\n        if (message.removeListingIds && message.removeListingIds.length) {\n          object.removeListingIds = [];\n          for (var j = 0; j < message.removeListingIds.length; ++j) {\n            object.removeListingIds[j] = $root.market.mass.ObjectId.toObject(\n              message.removeListingIds[j],\n              options,\n            );\n          }\n        }\n        if (message[\"delete\"] != null && message.hasOwnProperty(\"delete\")) {\n          object[\"delete\"] = message[\"delete\"];\n          if (options.oneofs) {\n            object._delete = \"delete\";\n          }\n        }\n        return object;\n      };\n\n      /**\n       * Converts this UpdateTag to JSON.\n       * @function toJSON\n       * @memberof market.mass.UpdateTag\n       * @instance\n       * @returns {Object.<string,*>} JSON object\n       */\n      UpdateTag.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n      };\n\n      /**\n       * Gets the default type url for UpdateTag\n       * @function getTypeUrl\n       * @memberof market.mass.UpdateTag\n       * @static\n       * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n       * @returns {string} The default type url\n       */\n      UpdateTag.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n        if (typeUrlPrefix === undefined) {\n          typeUrlPrefix = \"type.googleapis.com\";\n        }\n        return typeUrlPrefix + \"/market.mass.UpdateTag\";\n      };\n\n      return UpdateTag;\n    })();\n\n    mass.CreateOrder = (function () {\n      /**\n       * Properties of a CreateOrder.\n       * @memberof market.mass\n       * @interface ICreateOrder\n       * @property {market.mass.IObjectId|null} [id] CreateOrder id\n       */\n\n      /**\n       * Constructs a new CreateOrder.\n       * @memberof market.mass\n       * @classdesc Represents a CreateOrder.\n       * @implements ICreateOrder\n       * @constructor\n       * @param {market.mass.ICreateOrder=} [properties] Properties to set\n       */\n      function CreateOrder(properties) {\n        if (properties) {\n          for (\n            var keys = Object.keys(properties), i = 0;\n            i < keys.length;\n            ++i\n          ) {\n            if (properties[keys[i]] != null) {\n              this[keys[i]] = properties[keys[i]];\n            }\n          }\n        }\n      }\n\n      /**\n       * CreateOrder id.\n       * @member {market.mass.IObjectId|null|undefined} id\n       * @memberof market.mass.CreateOrder\n       * @instance\n       */\n      CreateOrder.prototype.id = null;\n\n      /**\n       * Creates a new CreateOrder instance using the specified properties.\n       * @function create\n       * @memberof market.mass.CreateOrder\n       * @static\n       * @param {market.mass.ICreateOrder=} [properties] Properties to set\n       * @returns {market.mass.CreateOrder} CreateOrder instance\n       */\n      CreateOrder.create = function create(properties) {\n        return new CreateOrder(properties);\n      };\n\n      /**\n       * Encodes the specified CreateOrder message. Does not implicitly {@link market.mass.CreateOrder.verify|verify} messages.\n       * @function encode\n       * @memberof market.mass.CreateOrder\n       * @static\n       * @param {market.mass.ICreateOrder} message CreateOrder message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      CreateOrder.encode = function encode(message, writer) {\n        if (!writer) {\n          writer = $Writer.create();\n        }\n        if (message.id != null && Object.hasOwnProperty.call(message, \"id\")) {\n          $root.market.mass.ObjectId.encode(\n            message.id,\n            writer.uint32(/* id 1, wireType 2 =*/ 10).fork(),\n          ).ldelim();\n        }\n        return writer;\n      };\n\n      /**\n       * Encodes the specified CreateOrder message, length delimited. Does not implicitly {@link market.mass.CreateOrder.verify|verify} messages.\n       * @function encodeDelimited\n       * @memberof market.mass.CreateOrder\n       * @static\n       * @param {market.mass.ICreateOrder} message CreateOrder message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      CreateOrder.encodeDelimited = function encodeDelimited(message, writer) {\n        return this.encode(message, writer).ldelim();\n      };\n\n      /**\n       * Decodes a CreateOrder message from the specified reader or buffer.\n       * @function decode\n       * @memberof market.mass.CreateOrder\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @param {number} [length] Message length if known beforehand\n       * @returns {market.mass.CreateOrder} CreateOrder\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      CreateOrder.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader)) {\n          reader = $Reader.create(reader);\n        }\n        var end = length === undefined ? reader.len : reader.pos + length,\n          message = new $root.market.mass.CreateOrder();\n        while (reader.pos < end) {\n          var tag = reader.uint32();\n          switch (tag >>> 3) {\n            case 1: {\n              message.id = $root.market.mass.ObjectId.decode(\n                reader,\n                reader.uint32(),\n              );\n              break;\n            }\n            default:\n              reader.skipType(tag & 7);\n              break;\n          }\n        }\n        return message;\n      };\n\n      /**\n       * Decodes a CreateOrder message from the specified reader or buffer, length delimited.\n       * @function decodeDelimited\n       * @memberof market.mass.CreateOrder\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @returns {market.mass.CreateOrder} CreateOrder\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      CreateOrder.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader)) {\n          reader = new $Reader(reader);\n        }\n        return this.decode(reader, reader.uint32());\n      };\n\n      /**\n       * Verifies a CreateOrder message.\n       * @function verify\n       * @memberof market.mass.CreateOrder\n       * @static\n       * @param {Object.<string,*>} message Plain object to verify\n       * @returns {string|null} `null` if valid, otherwise the reason why it is not\n       */\n      CreateOrder.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null) {\n          return \"object expected\";\n        }\n        if (message.id != null && message.hasOwnProperty(\"id\")) {\n          var error = $root.market.mass.ObjectId.verify(message.id);\n          if (error) {\n            return \"id.\" + error;\n          }\n        }\n        return null;\n      };\n\n      /**\n       * Creates a CreateOrder message from a plain object. Also converts values to their respective internal types.\n       * @function fromObject\n       * @memberof market.mass.CreateOrder\n       * @static\n       * @param {Object.<string,*>} object Plain object\n       * @returns {market.mass.CreateOrder} CreateOrder\n       */\n      CreateOrder.fromObject = function fromObject(object) {\n        if (object instanceof $root.market.mass.CreateOrder) {\n          return object;\n        }\n        var message = new $root.market.mass.CreateOrder();\n        if (object.id != null) {\n          if (typeof object.id !== \"object\") {\n            throw TypeError(\".market.mass.CreateOrder.id: object expected\");\n          }\n          message.id = $root.market.mass.ObjectId.fromObject(object.id);\n        }\n        return message;\n      };\n\n      /**\n       * Creates a plain object from a CreateOrder message. Also converts values to other types if specified.\n       * @function toObject\n       * @memberof market.mass.CreateOrder\n       * @static\n       * @param {market.mass.CreateOrder} message CreateOrder\n       * @param {$protobuf.IConversionOptions} [options] Conversion options\n       * @returns {Object.<string,*>} Plain object\n       */\n      CreateOrder.toObject = function toObject(message, options) {\n        if (!options) {\n          options = {};\n        }\n        var object = {};\n        if (options.defaults) {\n          object.id = null;\n        }\n        if (message.id != null && message.hasOwnProperty(\"id\")) {\n          object.id = $root.market.mass.ObjectId.toObject(message.id, options);\n        }\n        return object;\n      };\n\n      /**\n       * Converts this CreateOrder to JSON.\n       * @function toJSON\n       * @memberof market.mass.CreateOrder\n       * @instance\n       * @returns {Object.<string,*>} JSON object\n       */\n      CreateOrder.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n      };\n\n      /**\n       * Gets the default type url for CreateOrder\n       * @function getTypeUrl\n       * @memberof market.mass.CreateOrder\n       * @static\n       * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n       * @returns {string} The default type url\n       */\n      CreateOrder.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n        if (typeUrlPrefix === undefined) {\n          typeUrlPrefix = \"type.googleapis.com\";\n        }\n        return typeUrlPrefix + \"/market.mass.CreateOrder\";\n      };\n\n      return CreateOrder;\n    })();\n\n    mass.UpdateOrder = (function () {\n      /**\n       * Properties of an UpdateOrder.\n       * @memberof market.mass\n       * @interface IUpdateOrder\n       * @property {market.mass.IObjectId|null} [id] UpdateOrder id\n       * @property {market.mass.UpdateOrder.ICancel|null} [cancel] UpdateOrder cancel\n       * @property {market.mass.UpdateOrder.IChangeItems|null} [changeItems] UpdateOrder changeItems\n       * @property {market.mass.UpdateOrder.ICommitItems|null} [commitItems] UpdateOrder commitItems\n       * @property {market.mass.IAddressDetails|null} [setInvoiceAddress] UpdateOrder setInvoiceAddress\n       * @property {market.mass.IAddressDetails|null} [setShippingAddress] UpdateOrder setShippingAddress\n       * @property {market.mass.UpdateOrder.IChoosePaymentMethod|null} [choosePayment] UpdateOrder choosePayment\n       * @property {market.mass.IPaymentDetails|null} [setPaymentDetails] UpdateOrder setPaymentDetails\n       * @property {market.mass.IOrderTransaction|null} [addPaymentTx] UpdateOrder addPaymentTx\n       * @property {string|null} [setShippingStatus] UpdateOrder setShippingStatus\n       */\n\n      /**\n       * Constructs a new UpdateOrder.\n       * @memberof market.mass\n       * @classdesc Represents an UpdateOrder.\n       * @implements IUpdateOrder\n       * @constructor\n       * @param {market.mass.IUpdateOrder=} [properties] Properties to set\n       */\n      function UpdateOrder(properties) {\n        if (properties) {\n          for (\n            var keys = Object.keys(properties), i = 0;\n            i < keys.length;\n            ++i\n          ) {\n            if (properties[keys[i]] != null) {\n              this[keys[i]] = properties[keys[i]];\n            }\n          }\n        }\n      }\n\n      /**\n       * UpdateOrder id.\n       * @member {market.mass.IObjectId|null|undefined} id\n       * @memberof market.mass.UpdateOrder\n       * @instance\n       */\n      UpdateOrder.prototype.id = null;\n\n      /**\n       * UpdateOrder cancel.\n       * @member {market.mass.UpdateOrder.ICancel|null|undefined} cancel\n       * @memberof market.mass.UpdateOrder\n       * @instance\n       */\n      UpdateOrder.prototype.cancel = null;\n\n      /**\n       * UpdateOrder changeItems.\n       * @member {market.mass.UpdateOrder.IChangeItems|null|undefined} changeItems\n       * @memberof market.mass.UpdateOrder\n       * @instance\n       */\n      UpdateOrder.prototype.changeItems = null;\n\n      /**\n       * UpdateOrder commitItems.\n       * @member {market.mass.UpdateOrder.ICommitItems|null|undefined} commitItems\n       * @memberof market.mass.UpdateOrder\n       * @instance\n       */\n      UpdateOrder.prototype.commitItems = null;\n\n      /**\n       * UpdateOrder setInvoiceAddress.\n       * @member {market.mass.IAddressDetails|null|undefined} setInvoiceAddress\n       * @memberof market.mass.UpdateOrder\n       * @instance\n       */\n      UpdateOrder.prototype.setInvoiceAddress = null;\n\n      /**\n       * UpdateOrder setShippingAddress.\n       * @member {market.mass.IAddressDetails|null|undefined} setShippingAddress\n       * @memberof market.mass.UpdateOrder\n       * @instance\n       */\n      UpdateOrder.prototype.setShippingAddress = null;\n\n      /**\n       * UpdateOrder choosePayment.\n       * @member {market.mass.UpdateOrder.IChoosePaymentMethod|null|undefined} choosePayment\n       * @memberof market.mass.UpdateOrder\n       * @instance\n       */\n      UpdateOrder.prototype.choosePayment = null;\n\n      /**\n       * UpdateOrder setPaymentDetails.\n       * @member {market.mass.IPaymentDetails|null|undefined} setPaymentDetails\n       * @memberof market.mass.UpdateOrder\n       * @instance\n       */\n      UpdateOrder.prototype.setPaymentDetails = null;\n\n      /**\n       * UpdateOrder addPaymentTx.\n       * @member {market.mass.IOrderTransaction|null|undefined} addPaymentTx\n       * @memberof market.mass.UpdateOrder\n       * @instance\n       */\n      UpdateOrder.prototype.addPaymentTx = null;\n\n      /**\n       * UpdateOrder setShippingStatus.\n       * @member {string|null|undefined} setShippingStatus\n       * @memberof market.mass.UpdateOrder\n       * @instance\n       */\n      UpdateOrder.prototype.setShippingStatus = null;\n\n      // OneOf field names bound to virtual getters and setters\n      var $oneOfFields;\n\n      /**\n       * UpdateOrder action.\n       * @member {\"cancel\"|\"changeItems\"|\"commitItems\"|\"setInvoiceAddress\"|\"setShippingAddress\"|\"choosePayment\"|\"setPaymentDetails\"|\"addPaymentTx\"|\"setShippingStatus\"|undefined} action\n       * @memberof market.mass.UpdateOrder\n       * @instance\n       */\n      Object.defineProperty(UpdateOrder.prototype, \"action\", {\n        get: $util.oneOfGetter(\n          $oneOfFields = [\n            \"cancel\",\n            \"changeItems\",\n            \"commitItems\",\n            \"setInvoiceAddress\",\n            \"setShippingAddress\",\n            \"choosePayment\",\n            \"setPaymentDetails\",\n            \"addPaymentTx\",\n            \"setShippingStatus\",\n          ],\n        ),\n        set: $util.oneOfSetter($oneOfFields),\n      });\n\n      /**\n       * Creates a new UpdateOrder instance using the specified properties.\n       * @function create\n       * @memberof market.mass.UpdateOrder\n       * @static\n       * @param {market.mass.IUpdateOrder=} [properties] Properties to set\n       * @returns {market.mass.UpdateOrder} UpdateOrder instance\n       */\n      UpdateOrder.create = function create(properties) {\n        return new UpdateOrder(properties);\n      };\n\n      /**\n       * Encodes the specified UpdateOrder message. Does not implicitly {@link market.mass.UpdateOrder.verify|verify} messages.\n       * @function encode\n       * @memberof market.mass.UpdateOrder\n       * @static\n       * @param {market.mass.IUpdateOrder} message UpdateOrder message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      UpdateOrder.encode = function encode(message, writer) {\n        if (!writer) {\n          writer = $Writer.create();\n        }\n        if (message.id != null && Object.hasOwnProperty.call(message, \"id\")) {\n          $root.market.mass.ObjectId.encode(\n            message.id,\n            writer.uint32(/* id 1, wireType 2 =*/ 10).fork(),\n          ).ldelim();\n        }\n        if (\n          message.cancel != null &&\n          Object.hasOwnProperty.call(message, \"cancel\")\n        ) {\n          $root.market.mass.UpdateOrder.Cancel.encode(\n            message.cancel,\n            writer.uint32(/* id 2, wireType 2 =*/ 18).fork(),\n          ).ldelim();\n        }\n        if (\n          message.changeItems != null &&\n          Object.hasOwnProperty.call(message, \"changeItems\")\n        ) {\n          $root.market.mass.UpdateOrder.ChangeItems.encode(\n            message.changeItems,\n            writer.uint32(/* id 3, wireType 2 =*/ 26).fork(),\n          ).ldelim();\n        }\n        if (\n          message.commitItems != null &&\n          Object.hasOwnProperty.call(message, \"commitItems\")\n        ) {\n          $root.market.mass.UpdateOrder.CommitItems.encode(\n            message.commitItems,\n            writer.uint32(/* id 4, wireType 2 =*/ 34).fork(),\n          ).ldelim();\n        }\n        if (\n          message.setInvoiceAddress != null &&\n          Object.hasOwnProperty.call(message, \"setInvoiceAddress\")\n        ) {\n          $root.market.mass.AddressDetails.encode(\n            message.setInvoiceAddress,\n            writer.uint32(/* id 5, wireType 2 =*/ 42).fork(),\n          ).ldelim();\n        }\n        if (\n          message.setShippingAddress != null &&\n          Object.hasOwnProperty.call(message, \"setShippingAddress\")\n        ) {\n          $root.market.mass.AddressDetails.encode(\n            message.setShippingAddress,\n            writer.uint32(/* id 6, wireType 2 =*/ 50).fork(),\n          ).ldelim();\n        }\n        if (\n          message.choosePayment != null &&\n          Object.hasOwnProperty.call(message, \"choosePayment\")\n        ) {\n          $root.market.mass.UpdateOrder.ChoosePaymentMethod.encode(\n            message.choosePayment,\n            writer.uint32(/* id 7, wireType 2 =*/ 58).fork(),\n          ).ldelim();\n        }\n        if (\n          message.setPaymentDetails != null &&\n          Object.hasOwnProperty.call(message, \"setPaymentDetails\")\n        ) {\n          $root.market.mass.PaymentDetails.encode(\n            message.setPaymentDetails,\n            writer.uint32(/* id 8, wireType 2 =*/ 66).fork(),\n          ).ldelim();\n        }\n        if (\n          message.addPaymentTx != null &&\n          Object.hasOwnProperty.call(message, \"addPaymentTx\")\n        ) {\n          $root.market.mass.OrderTransaction.encode(\n            message.addPaymentTx,\n            writer.uint32(/* id 9, wireType 2 =*/ 74).fork(),\n          ).ldelim();\n        }\n        if (\n          message.setShippingStatus != null &&\n          Object.hasOwnProperty.call(message, \"setShippingStatus\")\n        ) {\n          writer.uint32(/* id 10, wireType 2 =*/ 82).string(\n            message.setShippingStatus,\n          );\n        }\n        return writer;\n      };\n\n      /**\n       * Encodes the specified UpdateOrder message, length delimited. Does not implicitly {@link market.mass.UpdateOrder.verify|verify} messages.\n       * @function encodeDelimited\n       * @memberof market.mass.UpdateOrder\n       * @static\n       * @param {market.mass.IUpdateOrder} message UpdateOrder message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      UpdateOrder.encodeDelimited = function encodeDelimited(message, writer) {\n        return this.encode(message, writer).ldelim();\n      };\n\n      /**\n       * Decodes an UpdateOrder message from the specified reader or buffer.\n       * @function decode\n       * @memberof market.mass.UpdateOrder\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @param {number} [length] Message length if known beforehand\n       * @returns {market.mass.UpdateOrder} UpdateOrder\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      UpdateOrder.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader)) {\n          reader = $Reader.create(reader);\n        }\n        var end = length === undefined ? reader.len : reader.pos + length,\n          message = new $root.market.mass.UpdateOrder();\n        while (reader.pos < end) {\n          var tag = reader.uint32();\n          switch (tag >>> 3) {\n            case 1: {\n              message.id = $root.market.mass.ObjectId.decode(\n                reader,\n                reader.uint32(),\n              );\n              break;\n            }\n            case 2: {\n              message.cancel = $root.market.mass.UpdateOrder.Cancel.decode(\n                reader,\n                reader.uint32(),\n              );\n              break;\n            }\n            case 3: {\n              message.changeItems = $root.market.mass.UpdateOrder.ChangeItems\n                .decode(reader, reader.uint32());\n              break;\n            }\n            case 4: {\n              message.commitItems = $root.market.mass.UpdateOrder.CommitItems\n                .decode(reader, reader.uint32());\n              break;\n            }\n            case 5: {\n              message.setInvoiceAddress = $root.market.mass.AddressDetails\n                .decode(reader, reader.uint32());\n              break;\n            }\n            case 6: {\n              message.setShippingAddress = $root.market.mass.AddressDetails\n                .decode(reader, reader.uint32());\n              break;\n            }\n            case 7: {\n              message.choosePayment = $root.market.mass.UpdateOrder\n                .ChoosePaymentMethod.decode(reader, reader.uint32());\n              break;\n            }\n            case 8: {\n              message.setPaymentDetails = $root.market.mass.PaymentDetails\n                .decode(reader, reader.uint32());\n              break;\n            }\n            case 9: {\n              message.addPaymentTx = $root.market.mass.OrderTransaction.decode(\n                reader,\n                reader.uint32(),\n              );\n              break;\n            }\n            case 10: {\n              message.setShippingStatus = reader.string();\n              break;\n            }\n            default:\n              reader.skipType(tag & 7);\n              break;\n          }\n        }\n        return message;\n      };\n\n      /**\n       * Decodes an UpdateOrder message from the specified reader or buffer, length delimited.\n       * @function decodeDelimited\n       * @memberof market.mass.UpdateOrder\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @returns {market.mass.UpdateOrder} UpdateOrder\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      UpdateOrder.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader)) {\n          reader = new $Reader(reader);\n        }\n        return this.decode(reader, reader.uint32());\n      };\n\n      /**\n       * Verifies an UpdateOrder message.\n       * @function verify\n       * @memberof market.mass.UpdateOrder\n       * @static\n       * @param {Object.<string,*>} message Plain object to verify\n       * @returns {string|null} `null` if valid, otherwise the reason why it is not\n       */\n      UpdateOrder.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null) {\n          return \"object expected\";\n        }\n        var properties = {};\n        if (message.id != null && message.hasOwnProperty(\"id\")) {\n          var error = $root.market.mass.ObjectId.verify(message.id);\n          if (error) {\n            return \"id.\" + error;\n          }\n        }\n        if (message.cancel != null && message.hasOwnProperty(\"cancel\")) {\n          properties.action = 1;\n          {\n            var error = $root.market.mass.UpdateOrder.Cancel.verify(\n              message.cancel,\n            );\n            if (error) {\n              return \"cancel.\" + error;\n            }\n          }\n        }\n        if (\n          message.changeItems != null && message.hasOwnProperty(\"changeItems\")\n        ) {\n          if (properties.action === 1) {\n            return \"action: multiple values\";\n          }\n          properties.action = 1;\n          {\n            var error = $root.market.mass.UpdateOrder.ChangeItems.verify(\n              message.changeItems,\n            );\n            if (error) {\n              return \"changeItems.\" + error;\n            }\n          }\n        }\n        if (\n          message.commitItems != null && message.hasOwnProperty(\"commitItems\")\n        ) {\n          if (properties.action === 1) {\n            return \"action: multiple values\";\n          }\n          properties.action = 1;\n          {\n            var error = $root.market.mass.UpdateOrder.CommitItems.verify(\n              message.commitItems,\n            );\n            if (error) {\n              return \"commitItems.\" + error;\n            }\n          }\n        }\n        if (\n          message.setInvoiceAddress != null &&\n          message.hasOwnProperty(\"setInvoiceAddress\")\n        ) {\n          if (properties.action === 1) {\n            return \"action: multiple values\";\n          }\n          properties.action = 1;\n          {\n            var error = $root.market.mass.AddressDetails.verify(\n              message.setInvoiceAddress,\n            );\n            if (error) {\n              return \"setInvoiceAddress.\" + error;\n            }\n          }\n        }\n        if (\n          message.setShippingAddress != null &&\n          message.hasOwnProperty(\"setShippingAddress\")\n        ) {\n          if (properties.action === 1) {\n            return \"action: multiple values\";\n          }\n          properties.action = 1;\n          {\n            var error = $root.market.mass.AddressDetails.verify(\n              message.setShippingAddress,\n            );\n            if (error) {\n              return \"setShippingAddress.\" + error;\n            }\n          }\n        }\n        if (\n          message.choosePayment != null &&\n          message.hasOwnProperty(\"choosePayment\")\n        ) {\n          if (properties.action === 1) {\n            return \"action: multiple values\";\n          }\n          properties.action = 1;\n          {\n            var error = $root.market.mass.UpdateOrder.ChoosePaymentMethod\n              .verify(message.choosePayment);\n            if (error) {\n              return \"choosePayment.\" + error;\n            }\n          }\n        }\n        if (\n          message.setPaymentDetails != null &&\n          message.hasOwnProperty(\"setPaymentDetails\")\n        ) {\n          if (properties.action === 1) {\n            return \"action: multiple values\";\n          }\n          properties.action = 1;\n          {\n            var error = $root.market.mass.PaymentDetails.verify(\n              message.setPaymentDetails,\n            );\n            if (error) {\n              return \"setPaymentDetails.\" + error;\n            }\n          }\n        }\n        if (\n          message.addPaymentTx != null && message.hasOwnProperty(\"addPaymentTx\")\n        ) {\n          if (properties.action === 1) {\n            return \"action: multiple values\";\n          }\n          properties.action = 1;\n          {\n            var error = $root.market.mass.OrderTransaction.verify(\n              message.addPaymentTx,\n            );\n            if (error) {\n              return \"addPaymentTx.\" + error;\n            }\n          }\n        }\n        if (\n          message.setShippingStatus != null &&\n          message.hasOwnProperty(\"setShippingStatus\")\n        ) {\n          if (properties.action === 1) {\n            return \"action: multiple values\";\n          }\n          properties.action = 1;\n          if (!$util.isString(message.setShippingStatus)) {\n            return \"setShippingStatus: string expected\";\n          }\n        }\n        return null;\n      };\n\n      /**\n       * Creates an UpdateOrder message from a plain object. Also converts values to their respective internal types.\n       * @function fromObject\n       * @memberof market.mass.UpdateOrder\n       * @static\n       * @param {Object.<string,*>} object Plain object\n       * @returns {market.mass.UpdateOrder} UpdateOrder\n       */\n      UpdateOrder.fromObject = function fromObject(object) {\n        if (object instanceof $root.market.mass.UpdateOrder) {\n          return object;\n        }\n        var message = new $root.market.mass.UpdateOrder();\n        if (object.id != null) {\n          if (typeof object.id !== \"object\") {\n            throw TypeError(\".market.mass.UpdateOrder.id: object expected\");\n          }\n          message.id = $root.market.mass.ObjectId.fromObject(object.id);\n        }\n        if (object.cancel != null) {\n          if (typeof object.cancel !== \"object\") {\n            throw TypeError(\".market.mass.UpdateOrder.cancel: object expected\");\n          }\n          message.cancel = $root.market.mass.UpdateOrder.Cancel.fromObject(\n            object.cancel,\n          );\n        }\n        if (object.changeItems != null) {\n          if (typeof object.changeItems !== \"object\") {\n            throw TypeError(\n              \".market.mass.UpdateOrder.changeItems: object expected\",\n            );\n          }\n          message.changeItems = $root.market.mass.UpdateOrder.ChangeItems\n            .fromObject(object.changeItems);\n        }\n        if (object.commitItems != null) {\n          if (typeof object.commitItems !== \"object\") {\n            throw TypeError(\n              \".market.mass.UpdateOrder.commitItems: object expected\",\n            );\n          }\n          message.commitItems = $root.market.mass.UpdateOrder.CommitItems\n            .fromObject(object.commitItems);\n        }\n        if (object.setInvoiceAddress != null) {\n          if (typeof object.setInvoiceAddress !== \"object\") {\n            throw TypeError(\n              \".market.mass.UpdateOrder.setInvoiceAddress: object expected\",\n            );\n          }\n          message.setInvoiceAddress = $root.market.mass.AddressDetails\n            .fromObject(object.setInvoiceAddress);\n        }\n        if (object.setShippingAddress != null) {\n          if (typeof object.setShippingAddress !== \"object\") {\n            throw TypeError(\n              \".market.mass.UpdateOrder.setShippingAddress: object expected\",\n            );\n          }\n          message.setShippingAddress = $root.market.mass.AddressDetails\n            .fromObject(object.setShippingAddress);\n        }\n        if (object.choosePayment != null) {\n          if (typeof object.choosePayment !== \"object\") {\n            throw TypeError(\n              \".market.mass.UpdateOrder.choosePayment: object expected\",\n            );\n          }\n          message.choosePayment = $root.market.mass.UpdateOrder\n            .ChoosePaymentMethod.fromObject(object.choosePayment);\n        }\n        if (object.setPaymentDetails != null) {\n          if (typeof object.setPaymentDetails !== \"object\") {\n            throw TypeError(\n              \".market.mass.UpdateOrder.setPaymentDetails: object expected\",\n            );\n          }\n          message.setPaymentDetails = $root.market.mass.PaymentDetails\n            .fromObject(object.setPaymentDetails);\n        }\n        if (object.addPaymentTx != null) {\n          if (typeof object.addPaymentTx !== \"object\") {\n            throw TypeError(\n              \".market.mass.UpdateOrder.addPaymentTx: object expected\",\n            );\n          }\n          message.addPaymentTx = $root.market.mass.OrderTransaction.fromObject(\n            object.addPaymentTx,\n          );\n        }\n        if (object.setShippingStatus != null) {\n          message.setShippingStatus = String(object.setShippingStatus);\n        }\n        return message;\n      };\n\n      /**\n       * Creates a plain object from an UpdateOrder message. Also converts values to other types if specified.\n       * @function toObject\n       * @memberof market.mass.UpdateOrder\n       * @static\n       * @param {market.mass.UpdateOrder} message UpdateOrder\n       * @param {$protobuf.IConversionOptions} [options] Conversion options\n       * @returns {Object.<string,*>} Plain object\n       */\n      UpdateOrder.toObject = function toObject(message, options) {\n        if (!options) {\n          options = {};\n        }\n        var object = {};\n        if (options.defaults) {\n          object.id = null;\n        }\n        if (message.id != null && message.hasOwnProperty(\"id\")) {\n          object.id = $root.market.mass.ObjectId.toObject(message.id, options);\n        }\n        if (message.cancel != null && message.hasOwnProperty(\"cancel\")) {\n          object.cancel = $root.market.mass.UpdateOrder.Cancel.toObject(\n            message.cancel,\n            options,\n          );\n          if (options.oneofs) {\n            object.action = \"cancel\";\n          }\n        }\n        if (\n          message.changeItems != null && message.hasOwnProperty(\"changeItems\")\n        ) {\n          object.changeItems = $root.market.mass.UpdateOrder.ChangeItems\n            .toObject(message.changeItems, options);\n          if (options.oneofs) {\n            object.action = \"changeItems\";\n          }\n        }\n        if (\n          message.commitItems != null && message.hasOwnProperty(\"commitItems\")\n        ) {\n          object.commitItems = $root.market.mass.UpdateOrder.CommitItems\n            .toObject(message.commitItems, options);\n          if (options.oneofs) {\n            object.action = \"commitItems\";\n          }\n        }\n        if (\n          message.setInvoiceAddress != null &&\n          message.hasOwnProperty(\"setInvoiceAddress\")\n        ) {\n          object.setInvoiceAddress = $root.market.mass.AddressDetails.toObject(\n            message.setInvoiceAddress,\n            options,\n          );\n          if (options.oneofs) {\n            object.action = \"setInvoiceAddress\";\n          }\n        }\n        if (\n          message.setShippingAddress != null &&\n          message.hasOwnProperty(\"setShippingAddress\")\n        ) {\n          object.setShippingAddress = $root.market.mass.AddressDetails.toObject(\n            message.setShippingAddress,\n            options,\n          );\n          if (options.oneofs) {\n            object.action = \"setShippingAddress\";\n          }\n        }\n        if (\n          message.choosePayment != null &&\n          message.hasOwnProperty(\"choosePayment\")\n        ) {\n          object.choosePayment = $root.market.mass.UpdateOrder\n            .ChoosePaymentMethod.toObject(message.choosePayment, options);\n          if (options.oneofs) {\n            object.action = \"choosePayment\";\n          }\n        }\n        if (\n          message.setPaymentDetails != null &&\n          message.hasOwnProperty(\"setPaymentDetails\")\n        ) {\n          object.setPaymentDetails = $root.market.mass.PaymentDetails.toObject(\n            message.setPaymentDetails,\n            options,\n          );\n          if (options.oneofs) {\n            object.action = \"setPaymentDetails\";\n          }\n        }\n        if (\n          message.addPaymentTx != null && message.hasOwnProperty(\"addPaymentTx\")\n        ) {\n          object.addPaymentTx = $root.market.mass.OrderTransaction.toObject(\n            message.addPaymentTx,\n            options,\n          );\n          if (options.oneofs) {\n            object.action = \"addPaymentTx\";\n          }\n        }\n        if (\n          message.setShippingStatus != null &&\n          message.hasOwnProperty(\"setShippingStatus\")\n        ) {\n          object.setShippingStatus = message.setShippingStatus;\n          if (options.oneofs) {\n            object.action = \"setShippingStatus\";\n          }\n        }\n        return object;\n      };\n\n      /**\n       * Converts this UpdateOrder to JSON.\n       * @function toJSON\n       * @memberof market.mass.UpdateOrder\n       * @instance\n       * @returns {Object.<string,*>} JSON object\n       */\n      UpdateOrder.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n      };\n\n      /**\n       * Gets the default type url for UpdateOrder\n       * @function getTypeUrl\n       * @memberof market.mass.UpdateOrder\n       * @static\n       * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n       * @returns {string} The default type url\n       */\n      UpdateOrder.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n        if (typeUrlPrefix === undefined) {\n          typeUrlPrefix = \"type.googleapis.com\";\n        }\n        return typeUrlPrefix + \"/market.mass.UpdateOrder\";\n      };\n\n      UpdateOrder.Cancel = (function () {\n        /**\n         * Properties of a Cancel.\n         * @memberof market.mass.UpdateOrder\n         * @interface ICancel\n         */\n\n        /**\n         * Constructs a new Cancel.\n         * @memberof market.mass.UpdateOrder\n         * @classdesc Represents a Cancel.\n         * @implements ICancel\n         * @constructor\n         * @param {market.mass.UpdateOrder.ICancel=} [properties] Properties to set\n         */\n        function Cancel(properties) {\n          if (properties) {\n            for (\n              var keys = Object.keys(properties), i = 0;\n              i < keys.length;\n              ++i\n            ) {\n              if (properties[keys[i]] != null) {\n                this[keys[i]] = properties[keys[i]];\n              }\n            }\n          }\n        }\n\n        /**\n         * Creates a new Cancel instance using the specified properties.\n         * @function create\n         * @memberof market.mass.UpdateOrder.Cancel\n         * @static\n         * @param {market.mass.UpdateOrder.ICancel=} [properties] Properties to set\n         * @returns {market.mass.UpdateOrder.Cancel} Cancel instance\n         */\n        Cancel.create = function create(properties) {\n          return new Cancel(properties);\n        };\n\n        /**\n         * Encodes the specified Cancel message. Does not implicitly {@link market.mass.UpdateOrder.Cancel.verify|verify} messages.\n         * @function encode\n         * @memberof market.mass.UpdateOrder.Cancel\n         * @static\n         * @param {market.mass.UpdateOrder.ICancel} message Cancel message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        Cancel.encode = function encode(message, writer) {\n          if (!writer) {\n            writer = $Writer.create();\n          }\n          return writer;\n        };\n\n        /**\n         * Encodes the specified Cancel message, length delimited. Does not implicitly {@link market.mass.UpdateOrder.Cancel.verify|verify} messages.\n         * @function encodeDelimited\n         * @memberof market.mass.UpdateOrder.Cancel\n         * @static\n         * @param {market.mass.UpdateOrder.ICancel} message Cancel message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        Cancel.encodeDelimited = function encodeDelimited(message, writer) {\n          return this.encode(message, writer).ldelim();\n        };\n\n        /**\n         * Decodes a Cancel message from the specified reader or buffer.\n         * @function decode\n         * @memberof market.mass.UpdateOrder.Cancel\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @param {number} [length] Message length if known beforehand\n         * @returns {market.mass.UpdateOrder.Cancel} Cancel\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        Cancel.decode = function decode(reader, length) {\n          if (!(reader instanceof $Reader)) {\n            reader = $Reader.create(reader);\n          }\n          var end = length === undefined ? reader.len : reader.pos + length,\n            message = new $root.market.mass.UpdateOrder.Cancel();\n          while (reader.pos < end) {\n            var tag = reader.uint32();\n            switch (tag >>> 3) {\n              default:\n                reader.skipType(tag & 7);\n                break;\n            }\n          }\n          return message;\n        };\n\n        /**\n         * Decodes a Cancel message from the specified reader or buffer, length delimited.\n         * @function decodeDelimited\n         * @memberof market.mass.UpdateOrder.Cancel\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @returns {market.mass.UpdateOrder.Cancel} Cancel\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        Cancel.decodeDelimited = function decodeDelimited(reader) {\n          if (!(reader instanceof $Reader)) {\n            reader = new $Reader(reader);\n          }\n          return this.decode(reader, reader.uint32());\n        };\n\n        /**\n         * Verifies a Cancel message.\n         * @function verify\n         * @memberof market.mass.UpdateOrder.Cancel\n         * @static\n         * @param {Object.<string,*>} message Plain object to verify\n         * @returns {string|null} `null` if valid, otherwise the reason why it is not\n         */\n        Cancel.verify = function verify(message) {\n          if (typeof message !== \"object\" || message === null) {\n            return \"object expected\";\n          }\n          return null;\n        };\n\n        /**\n         * Creates a Cancel message from a plain object. Also converts values to their respective internal types.\n         * @function fromObject\n         * @memberof market.mass.UpdateOrder.Cancel\n         * @static\n         * @param {Object.<string,*>} object Plain object\n         * @returns {market.mass.UpdateOrder.Cancel} Cancel\n         */\n        Cancel.fromObject = function fromObject(object) {\n          if (object instanceof $root.market.mass.UpdateOrder.Cancel) {\n            return object;\n          }\n          return new $root.market.mass.UpdateOrder.Cancel();\n        };\n\n        /**\n         * Creates a plain object from a Cancel message. Also converts values to other types if specified.\n         * @function toObject\n         * @memberof market.mass.UpdateOrder.Cancel\n         * @static\n         * @param {market.mass.UpdateOrder.Cancel} message Cancel\n         * @param {$protobuf.IConversionOptions} [options] Conversion options\n         * @returns {Object.<string,*>} Plain object\n         */\n        Cancel.toObject = function toObject() {\n          return {};\n        };\n\n        /**\n         * Converts this Cancel to JSON.\n         * @function toJSON\n         * @memberof market.mass.UpdateOrder.Cancel\n         * @instance\n         * @returns {Object.<string,*>} JSON object\n         */\n        Cancel.prototype.toJSON = function toJSON() {\n          return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n        };\n\n        /**\n         * Gets the default type url for Cancel\n         * @function getTypeUrl\n         * @memberof market.mass.UpdateOrder.Cancel\n         * @static\n         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n         * @returns {string} The default type url\n         */\n        Cancel.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n          if (typeUrlPrefix === undefined) {\n            typeUrlPrefix = \"type.googleapis.com\";\n          }\n          return typeUrlPrefix + \"/market.mass.UpdateOrder.Cancel\";\n        };\n\n        return Cancel;\n      })();\n\n      UpdateOrder.ChangeItems = (function () {\n        /**\n         * Properties of a ChangeItems.\n         * @memberof market.mass.UpdateOrder\n         * @interface IChangeItems\n         * @property {Array.<market.mass.IOrderedItem>|null} [adds] ChangeItems adds\n         * @property {Array.<market.mass.IOrderedItem>|null} [removes] ChangeItems removes\n         */\n\n        /**\n         * Constructs a new ChangeItems.\n         * @memberof market.mass.UpdateOrder\n         * @classdesc Represents a ChangeItems.\n         * @implements IChangeItems\n         * @constructor\n         * @param {market.mass.UpdateOrder.IChangeItems=} [properties] Properties to set\n         */\n        function ChangeItems(properties) {\n          this.adds = [];\n          this.removes = [];\n          if (properties) {\n            for (\n              var keys = Object.keys(properties), i = 0;\n              i < keys.length;\n              ++i\n            ) {\n              if (properties[keys[i]] != null) {\n                this[keys[i]] = properties[keys[i]];\n              }\n            }\n          }\n        }\n\n        /**\n         * ChangeItems adds.\n         * @member {Array.<market.mass.IOrderedItem>} adds\n         * @memberof market.mass.UpdateOrder.ChangeItems\n         * @instance\n         */\n        ChangeItems.prototype.adds = $util.emptyArray;\n\n        /**\n         * ChangeItems removes.\n         * @member {Array.<market.mass.IOrderedItem>} removes\n         * @memberof market.mass.UpdateOrder.ChangeItems\n         * @instance\n         */\n        ChangeItems.prototype.removes = $util.emptyArray;\n\n        /**\n         * Creates a new ChangeItems instance using the specified properties.\n         * @function create\n         * @memberof market.mass.UpdateOrder.ChangeItems\n         * @static\n         * @param {market.mass.UpdateOrder.IChangeItems=} [properties] Properties to set\n         * @returns {market.mass.UpdateOrder.ChangeItems} ChangeItems instance\n         */\n        ChangeItems.create = function create(properties) {\n          return new ChangeItems(properties);\n        };\n\n        /**\n         * Encodes the specified ChangeItems message. Does not implicitly {@link market.mass.UpdateOrder.ChangeItems.verify|verify} messages.\n         * @function encode\n         * @memberof market.mass.UpdateOrder.ChangeItems\n         * @static\n         * @param {market.mass.UpdateOrder.IChangeItems} message ChangeItems message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        ChangeItems.encode = function encode(message, writer) {\n          if (!writer) {\n            writer = $Writer.create();\n          }\n          if (message.adds != null && message.adds.length) {\n            for (var i = 0; i < message.adds.length; ++i) {\n              $root.market.mass.OrderedItem.encode(\n                message.adds[i],\n                writer.uint32(/* id 1, wireType 2 =*/ 10).fork(),\n              ).ldelim();\n            }\n          }\n          if (message.removes != null && message.removes.length) {\n            for (var i = 0; i < message.removes.length; ++i) {\n              $root.market.mass.OrderedItem.encode(\n                message.removes[i],\n                writer.uint32(/* id 2, wireType 2 =*/ 18).fork(),\n              ).ldelim();\n            }\n          }\n          return writer;\n        };\n\n        /**\n         * Encodes the specified ChangeItems message, length delimited. Does not implicitly {@link market.mass.UpdateOrder.ChangeItems.verify|verify} messages.\n         * @function encodeDelimited\n         * @memberof market.mass.UpdateOrder.ChangeItems\n         * @static\n         * @param {market.mass.UpdateOrder.IChangeItems} message ChangeItems message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        ChangeItems.encodeDelimited = function encodeDelimited(\n          message,\n          writer,\n        ) {\n          return this.encode(message, writer).ldelim();\n        };\n\n        /**\n         * Decodes a ChangeItems message from the specified reader or buffer.\n         * @function decode\n         * @memberof market.mass.UpdateOrder.ChangeItems\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @param {number} [length] Message length if known beforehand\n         * @returns {market.mass.UpdateOrder.ChangeItems} ChangeItems\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        ChangeItems.decode = function decode(reader, length) {\n          if (!(reader instanceof $Reader)) {\n            reader = $Reader.create(reader);\n          }\n          var end = length === undefined ? reader.len : reader.pos + length,\n            message = new $root.market.mass.UpdateOrder.ChangeItems();\n          while (reader.pos < end) {\n            var tag = reader.uint32();\n            switch (tag >>> 3) {\n              case 1: {\n                if (!(message.adds && message.adds.length)) {\n                  message.adds = [];\n                }\n                message.adds.push(\n                  $root.market.mass.OrderedItem.decode(reader, reader.uint32()),\n                );\n                break;\n              }\n              case 2: {\n                if (!(message.removes && message.removes.length)) {\n                  message.removes = [];\n                }\n                message.removes.push(\n                  $root.market.mass.OrderedItem.decode(reader, reader.uint32()),\n                );\n                break;\n              }\n              default:\n                reader.skipType(tag & 7);\n                break;\n            }\n          }\n          return message;\n        };\n\n        /**\n         * Decodes a ChangeItems message from the specified reader or buffer, length delimited.\n         * @function decodeDelimited\n         * @memberof market.mass.UpdateOrder.ChangeItems\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @returns {market.mass.UpdateOrder.ChangeItems} ChangeItems\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        ChangeItems.decodeDelimited = function decodeDelimited(reader) {\n          if (!(reader instanceof $Reader)) {\n            reader = new $Reader(reader);\n          }\n          return this.decode(reader, reader.uint32());\n        };\n\n        /**\n         * Verifies a ChangeItems message.\n         * @function verify\n         * @memberof market.mass.UpdateOrder.ChangeItems\n         * @static\n         * @param {Object.<string,*>} message Plain object to verify\n         * @returns {string|null} `null` if valid, otherwise the reason why it is not\n         */\n        ChangeItems.verify = function verify(message) {\n          if (typeof message !== \"object\" || message === null) {\n            return \"object expected\";\n          }\n          if (message.adds != null && message.hasOwnProperty(\"adds\")) {\n            if (!Array.isArray(message.adds)) {\n              return \"adds: array expected\";\n            }\n            for (var i = 0; i < message.adds.length; ++i) {\n              var error = $root.market.mass.OrderedItem.verify(message.adds[i]);\n              if (error) {\n                return \"adds.\" + error;\n              }\n            }\n          }\n          if (message.removes != null && message.hasOwnProperty(\"removes\")) {\n            if (!Array.isArray(message.removes)) {\n              return \"removes: array expected\";\n            }\n            for (var i = 0; i < message.removes.length; ++i) {\n              var error = $root.market.mass.OrderedItem.verify(\n                message.removes[i],\n              );\n              if (error) {\n                return \"removes.\" + error;\n              }\n            }\n          }\n          return null;\n        };\n\n        /**\n         * Creates a ChangeItems message from a plain object. Also converts values to their respective internal types.\n         * @function fromObject\n         * @memberof market.mass.UpdateOrder.ChangeItems\n         * @static\n         * @param {Object.<string,*>} object Plain object\n         * @returns {market.mass.UpdateOrder.ChangeItems} ChangeItems\n         */\n        ChangeItems.fromObject = function fromObject(object) {\n          if (object instanceof $root.market.mass.UpdateOrder.ChangeItems) {\n            return object;\n          }\n          var message = new $root.market.mass.UpdateOrder.ChangeItems();\n          if (object.adds) {\n            if (!Array.isArray(object.adds)) {\n              throw TypeError(\n                \".market.mass.UpdateOrder.ChangeItems.adds: array expected\",\n              );\n            }\n            message.adds = [];\n            for (var i = 0; i < object.adds.length; ++i) {\n              if (typeof object.adds[i] !== \"object\") {\n                throw TypeError(\n                  \".market.mass.UpdateOrder.ChangeItems.adds: object expected\",\n                );\n              }\n              message.adds[i] = $root.market.mass.OrderedItem.fromObject(\n                object.adds[i],\n              );\n            }\n          }\n          if (object.removes) {\n            if (!Array.isArray(object.removes)) {\n              throw TypeError(\n                \".market.mass.UpdateOrder.ChangeItems.removes: array expected\",\n              );\n            }\n            message.removes = [];\n            for (var i = 0; i < object.removes.length; ++i) {\n              if (typeof object.removes[i] !== \"object\") {\n                throw TypeError(\n                  \".market.mass.UpdateOrder.ChangeItems.removes: object expected\",\n                );\n              }\n              message.removes[i] = $root.market.mass.OrderedItem.fromObject(\n                object.removes[i],\n              );\n            }\n          }\n          return message;\n        };\n\n        /**\n         * Creates a plain object from a ChangeItems message. Also converts values to other types if specified.\n         * @function toObject\n         * @memberof market.mass.UpdateOrder.ChangeItems\n         * @static\n         * @param {market.mass.UpdateOrder.ChangeItems} message ChangeItems\n         * @param {$protobuf.IConversionOptions} [options] Conversion options\n         * @returns {Object.<string,*>} Plain object\n         */\n        ChangeItems.toObject = function toObject(message, options) {\n          if (!options) {\n            options = {};\n          }\n          var object = {};\n          if (options.arrays || options.defaults) {\n            object.adds = [];\n            object.removes = [];\n          }\n          if (message.adds && message.adds.length) {\n            object.adds = [];\n            for (var j = 0; j < message.adds.length; ++j) {\n              object.adds[j] = $root.market.mass.OrderedItem.toObject(\n                message.adds[j],\n                options,\n              );\n            }\n          }\n          if (message.removes && message.removes.length) {\n            object.removes = [];\n            for (var j = 0; j < message.removes.length; ++j) {\n              object.removes[j] = $root.market.mass.OrderedItem.toObject(\n                message.removes[j],\n                options,\n              );\n            }\n          }\n          return object;\n        };\n\n        /**\n         * Converts this ChangeItems to JSON.\n         * @function toJSON\n         * @memberof market.mass.UpdateOrder.ChangeItems\n         * @instance\n         * @returns {Object.<string,*>} JSON object\n         */\n        ChangeItems.prototype.toJSON = function toJSON() {\n          return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n        };\n\n        /**\n         * Gets the default type url for ChangeItems\n         * @function getTypeUrl\n         * @memberof market.mass.UpdateOrder.ChangeItems\n         * @static\n         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n         * @returns {string} The default type url\n         */\n        ChangeItems.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n          if (typeUrlPrefix === undefined) {\n            typeUrlPrefix = \"type.googleapis.com\";\n          }\n          return typeUrlPrefix + \"/market.mass.UpdateOrder.ChangeItems\";\n        };\n\n        return ChangeItems;\n      })();\n\n      UpdateOrder.CommitItems = (function () {\n        /**\n         * Properties of a CommitItems.\n         * @memberof market.mass.UpdateOrder\n         * @interface ICommitItems\n         */\n\n        /**\n         * Constructs a new CommitItems.\n         * @memberof market.mass.UpdateOrder\n         * @classdesc Represents a CommitItems.\n         * @implements ICommitItems\n         * @constructor\n         * @param {market.mass.UpdateOrder.ICommitItems=} [properties] Properties to set\n         */\n        function CommitItems(properties) {\n          if (properties) {\n            for (\n              var keys = Object.keys(properties), i = 0;\n              i < keys.length;\n              ++i\n            ) {\n              if (properties[keys[i]] != null) {\n                this[keys[i]] = properties[keys[i]];\n              }\n            }\n          }\n        }\n\n        /**\n         * Creates a new CommitItems instance using the specified properties.\n         * @function create\n         * @memberof market.mass.UpdateOrder.CommitItems\n         * @static\n         * @param {market.mass.UpdateOrder.ICommitItems=} [properties] Properties to set\n         * @returns {market.mass.UpdateOrder.CommitItems} CommitItems instance\n         */\n        CommitItems.create = function create(properties) {\n          return new CommitItems(properties);\n        };\n\n        /**\n         * Encodes the specified CommitItems message. Does not implicitly {@link market.mass.UpdateOrder.CommitItems.verify|verify} messages.\n         * @function encode\n         * @memberof market.mass.UpdateOrder.CommitItems\n         * @static\n         * @param {market.mass.UpdateOrder.ICommitItems} message CommitItems message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        CommitItems.encode = function encode(message, writer) {\n          if (!writer) {\n            writer = $Writer.create();\n          }\n          return writer;\n        };\n\n        /**\n         * Encodes the specified CommitItems message, length delimited. Does not implicitly {@link market.mass.UpdateOrder.CommitItems.verify|verify} messages.\n         * @function encodeDelimited\n         * @memberof market.mass.UpdateOrder.CommitItems\n         * @static\n         * @param {market.mass.UpdateOrder.ICommitItems} message CommitItems message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        CommitItems.encodeDelimited = function encodeDelimited(\n          message,\n          writer,\n        ) {\n          return this.encode(message, writer).ldelim();\n        };\n\n        /**\n         * Decodes a CommitItems message from the specified reader or buffer.\n         * @function decode\n         * @memberof market.mass.UpdateOrder.CommitItems\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @param {number} [length] Message length if known beforehand\n         * @returns {market.mass.UpdateOrder.CommitItems} CommitItems\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        CommitItems.decode = function decode(reader, length) {\n          if (!(reader instanceof $Reader)) {\n            reader = $Reader.create(reader);\n          }\n          var end = length === undefined ? reader.len : reader.pos + length,\n            message = new $root.market.mass.UpdateOrder.CommitItems();\n          while (reader.pos < end) {\n            var tag = reader.uint32();\n            switch (tag >>> 3) {\n              default:\n                reader.skipType(tag & 7);\n                break;\n            }\n          }\n          return message;\n        };\n\n        /**\n         * Decodes a CommitItems message from the specified reader or buffer, length delimited.\n         * @function decodeDelimited\n         * @memberof market.mass.UpdateOrder.CommitItems\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @returns {market.mass.UpdateOrder.CommitItems} CommitItems\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        CommitItems.decodeDelimited = function decodeDelimited(reader) {\n          if (!(reader instanceof $Reader)) {\n            reader = new $Reader(reader);\n          }\n          return this.decode(reader, reader.uint32());\n        };\n\n        /**\n         * Verifies a CommitItems message.\n         * @function verify\n         * @memberof market.mass.UpdateOrder.CommitItems\n         * @static\n         * @param {Object.<string,*>} message Plain object to verify\n         * @returns {string|null} `null` if valid, otherwise the reason why it is not\n         */\n        CommitItems.verify = function verify(message) {\n          if (typeof message !== \"object\" || message === null) {\n            return \"object expected\";\n          }\n          return null;\n        };\n\n        /**\n         * Creates a CommitItems message from a plain object. Also converts values to their respective internal types.\n         * @function fromObject\n         * @memberof market.mass.UpdateOrder.CommitItems\n         * @static\n         * @param {Object.<string,*>} object Plain object\n         * @returns {market.mass.UpdateOrder.CommitItems} CommitItems\n         */\n        CommitItems.fromObject = function fromObject(object) {\n          if (object instanceof $root.market.mass.UpdateOrder.CommitItems) {\n            return object;\n          }\n          return new $root.market.mass.UpdateOrder.CommitItems();\n        };\n\n        /**\n         * Creates a plain object from a CommitItems message. Also converts values to other types if specified.\n         * @function toObject\n         * @memberof market.mass.UpdateOrder.CommitItems\n         * @static\n         * @param {market.mass.UpdateOrder.CommitItems} message CommitItems\n         * @param {$protobuf.IConversionOptions} [options] Conversion options\n         * @returns {Object.<string,*>} Plain object\n         */\n        CommitItems.toObject = function toObject() {\n          return {};\n        };\n\n        /**\n         * Converts this CommitItems to JSON.\n         * @function toJSON\n         * @memberof market.mass.UpdateOrder.CommitItems\n         * @instance\n         * @returns {Object.<string,*>} JSON object\n         */\n        CommitItems.prototype.toJSON = function toJSON() {\n          return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n        };\n\n        /**\n         * Gets the default type url for CommitItems\n         * @function getTypeUrl\n         * @memberof market.mass.UpdateOrder.CommitItems\n         * @static\n         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n         * @returns {string} The default type url\n         */\n        CommitItems.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n          if (typeUrlPrefix === undefined) {\n            typeUrlPrefix = \"type.googleapis.com\";\n          }\n          return typeUrlPrefix + \"/market.mass.UpdateOrder.CommitItems\";\n        };\n\n        return CommitItems;\n      })();\n\n      UpdateOrder.ChoosePaymentMethod = (function () {\n        /**\n         * Properties of a ChoosePaymentMethod.\n         * @memberof market.mass.UpdateOrder\n         * @interface IChoosePaymentMethod\n         * @property {market.mass.IShopCurrency|null} [currency] ChoosePaymentMethod currency\n         * @property {market.mass.IPayee|null} [payee] ChoosePaymentMethod payee\n         */\n\n        /**\n         * Constructs a new ChoosePaymentMethod.\n         * @memberof market.mass.UpdateOrder\n         * @classdesc Represents a ChoosePaymentMethod.\n         * @implements IChoosePaymentMethod\n         * @constructor\n         * @param {market.mass.UpdateOrder.IChoosePaymentMethod=} [properties] Properties to set\n         */\n        function ChoosePaymentMethod(properties) {\n          if (properties) {\n            for (\n              var keys = Object.keys(properties), i = 0;\n              i < keys.length;\n              ++i\n            ) {\n              if (properties[keys[i]] != null) {\n                this[keys[i]] = properties[keys[i]];\n              }\n            }\n          }\n        }\n\n        /**\n         * ChoosePaymentMethod currency.\n         * @member {market.mass.IShopCurrency|null|undefined} currency\n         * @memberof market.mass.UpdateOrder.ChoosePaymentMethod\n         * @instance\n         */\n        ChoosePaymentMethod.prototype.currency = null;\n\n        /**\n         * ChoosePaymentMethod payee.\n         * @member {market.mass.IPayee|null|undefined} payee\n         * @memberof market.mass.UpdateOrder.ChoosePaymentMethod\n         * @instance\n         */\n        ChoosePaymentMethod.prototype.payee = null;\n\n        /**\n         * Creates a new ChoosePaymentMethod instance using the specified properties.\n         * @function create\n         * @memberof market.mass.UpdateOrder.ChoosePaymentMethod\n         * @static\n         * @param {market.mass.UpdateOrder.IChoosePaymentMethod=} [properties] Properties to set\n         * @returns {market.mass.UpdateOrder.ChoosePaymentMethod} ChoosePaymentMethod instance\n         */\n        ChoosePaymentMethod.create = function create(properties) {\n          return new ChoosePaymentMethod(properties);\n        };\n\n        /**\n         * Encodes the specified ChoosePaymentMethod message. Does not implicitly {@link market.mass.UpdateOrder.ChoosePaymentMethod.verify|verify} messages.\n         * @function encode\n         * @memberof market.mass.UpdateOrder.ChoosePaymentMethod\n         * @static\n         * @param {market.mass.UpdateOrder.IChoosePaymentMethod} message ChoosePaymentMethod message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        ChoosePaymentMethod.encode = function encode(message, writer) {\n          if (!writer) {\n            writer = $Writer.create();\n          }\n          if (\n            message.currency != null &&\n            Object.hasOwnProperty.call(message, \"currency\")\n          ) {\n            $root.market.mass.ShopCurrency.encode(\n              message.currency,\n              writer.uint32(/* id 1, wireType 2 =*/ 10).fork(),\n            ).ldelim();\n          }\n          if (\n            message.payee != null &&\n            Object.hasOwnProperty.call(message, \"payee\")\n          ) {\n            $root.market.mass.Payee.encode(\n              message.payee,\n              writer.uint32(/* id 2, wireType 2 =*/ 18).fork(),\n            ).ldelim();\n          }\n          return writer;\n        };\n\n        /**\n         * Encodes the specified ChoosePaymentMethod message, length delimited. Does not implicitly {@link market.mass.UpdateOrder.ChoosePaymentMethod.verify|verify} messages.\n         * @function encodeDelimited\n         * @memberof market.mass.UpdateOrder.ChoosePaymentMethod\n         * @static\n         * @param {market.mass.UpdateOrder.IChoosePaymentMethod} message ChoosePaymentMethod message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        ChoosePaymentMethod.encodeDelimited = function encodeDelimited(\n          message,\n          writer,\n        ) {\n          return this.encode(message, writer).ldelim();\n        };\n\n        /**\n         * Decodes a ChoosePaymentMethod message from the specified reader or buffer.\n         * @function decode\n         * @memberof market.mass.UpdateOrder.ChoosePaymentMethod\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @param {number} [length] Message length if known beforehand\n         * @returns {market.mass.UpdateOrder.ChoosePaymentMethod} ChoosePaymentMethod\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        ChoosePaymentMethod.decode = function decode(reader, length) {\n          if (!(reader instanceof $Reader)) {\n            reader = $Reader.create(reader);\n          }\n          var end = length === undefined ? reader.len : reader.pos + length,\n            message = new $root.market.mass.UpdateOrder.ChoosePaymentMethod();\n          while (reader.pos < end) {\n            var tag = reader.uint32();\n            switch (tag >>> 3) {\n              case 1: {\n                message.currency = $root.market.mass.ShopCurrency.decode(\n                  reader,\n                  reader.uint32(),\n                );\n                break;\n              }\n              case 2: {\n                message.payee = $root.market.mass.Payee.decode(\n                  reader,\n                  reader.uint32(),\n                );\n                break;\n              }\n              default:\n                reader.skipType(tag & 7);\n                break;\n            }\n          }\n          return message;\n        };\n\n        /**\n         * Decodes a ChoosePaymentMethod message from the specified reader or buffer, length delimited.\n         * @function decodeDelimited\n         * @memberof market.mass.UpdateOrder.ChoosePaymentMethod\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @returns {market.mass.UpdateOrder.ChoosePaymentMethod} ChoosePaymentMethod\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        ChoosePaymentMethod.decodeDelimited = function decodeDelimited(reader) {\n          if (!(reader instanceof $Reader)) {\n            reader = new $Reader(reader);\n          }\n          return this.decode(reader, reader.uint32());\n        };\n\n        /**\n         * Verifies a ChoosePaymentMethod message.\n         * @function verify\n         * @memberof market.mass.UpdateOrder.ChoosePaymentMethod\n         * @static\n         * @param {Object.<string,*>} message Plain object to verify\n         * @returns {string|null} `null` if valid, otherwise the reason why it is not\n         */\n        ChoosePaymentMethod.verify = function verify(message) {\n          if (typeof message !== \"object\" || message === null) {\n            return \"object expected\";\n          }\n          if (message.currency != null && message.hasOwnProperty(\"currency\")) {\n            var error = $root.market.mass.ShopCurrency.verify(message.currency);\n            if (error) {\n              return \"currency.\" + error;\n            }\n          }\n          if (message.payee != null && message.hasOwnProperty(\"payee\")) {\n            var error = $root.market.mass.Payee.verify(message.payee);\n            if (error) {\n              return \"payee.\" + error;\n            }\n          }\n          return null;\n        };\n\n        /**\n         * Creates a ChoosePaymentMethod message from a plain object. Also converts values to their respective internal types.\n         * @function fromObject\n         * @memberof market.mass.UpdateOrder.ChoosePaymentMethod\n         * @static\n         * @param {Object.<string,*>} object Plain object\n         * @returns {market.mass.UpdateOrder.ChoosePaymentMethod} ChoosePaymentMethod\n         */\n        ChoosePaymentMethod.fromObject = function fromObject(object) {\n          if (\n            object instanceof $root.market.mass.UpdateOrder.ChoosePaymentMethod\n          ) {\n            return object;\n          }\n          var message = new $root.market.mass.UpdateOrder.ChoosePaymentMethod();\n          if (object.currency != null) {\n            if (typeof object.currency !== \"object\") {\n              throw TypeError(\n                \".market.mass.UpdateOrder.ChoosePaymentMethod.currency: object expected\",\n              );\n            }\n            message.currency = $root.market.mass.ShopCurrency.fromObject(\n              object.currency,\n            );\n          }\n          if (object.payee != null) {\n            if (typeof object.payee !== \"object\") {\n              throw TypeError(\n                \".market.mass.UpdateOrder.ChoosePaymentMethod.payee: object expected\",\n              );\n            }\n            message.payee = $root.market.mass.Payee.fromObject(object.payee);\n          }\n          return message;\n        };\n\n        /**\n         * Creates a plain object from a ChoosePaymentMethod message. Also converts values to other types if specified.\n         * @function toObject\n         * @memberof market.mass.UpdateOrder.ChoosePaymentMethod\n         * @static\n         * @param {market.mass.UpdateOrder.ChoosePaymentMethod} message ChoosePaymentMethod\n         * @param {$protobuf.IConversionOptions} [options] Conversion options\n         * @returns {Object.<string,*>} Plain object\n         */\n        ChoosePaymentMethod.toObject = function toObject(message, options) {\n          if (!options) {\n            options = {};\n          }\n          var object = {};\n          if (options.defaults) {\n            object.currency = null;\n            object.payee = null;\n          }\n          if (message.currency != null && message.hasOwnProperty(\"currency\")) {\n            object.currency = $root.market.mass.ShopCurrency.toObject(\n              message.currency,\n              options,\n            );\n          }\n          if (message.payee != null && message.hasOwnProperty(\"payee\")) {\n            object.payee = $root.market.mass.Payee.toObject(\n              message.payee,\n              options,\n            );\n          }\n          return object;\n        };\n\n        /**\n         * Converts this ChoosePaymentMethod to JSON.\n         * @function toJSON\n         * @memberof market.mass.UpdateOrder.ChoosePaymentMethod\n         * @instance\n         * @returns {Object.<string,*>} JSON object\n         */\n        ChoosePaymentMethod.prototype.toJSON = function toJSON() {\n          return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n        };\n\n        /**\n         * Gets the default type url for ChoosePaymentMethod\n         * @function getTypeUrl\n         * @memberof market.mass.UpdateOrder.ChoosePaymentMethod\n         * @static\n         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n         * @returns {string} The default type url\n         */\n        ChoosePaymentMethod.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n          if (typeUrlPrefix === undefined) {\n            typeUrlPrefix = \"type.googleapis.com\";\n          }\n          return typeUrlPrefix + \"/market.mass.UpdateOrder.ChoosePaymentMethod\";\n        };\n\n        return ChoosePaymentMethod;\n      })();\n\n      return UpdateOrder;\n    })();\n\n    mass.ShopEvent = (function () {\n      /**\n       * Properties of a ShopEvent.\n       * @memberof market.mass\n       * @interface IShopEvent\n       * @property {number|Long|null} [nonce] ShopEvent nonce\n       * @property {market.mass.IUint256|null} [shopId] ShopEvent shopId\n       * @property {google.protobuf.ITimestamp|null} [timestamp] ShopEvent timestamp\n       * @property {market.mass.IManifest|null} [manifest] ShopEvent manifest\n       * @property {market.mass.IUpdateManifest|null} [updateManifest] ShopEvent updateManifest\n       * @property {market.mass.IAccount|null} [account] ShopEvent account\n       * @property {market.mass.IListing|null} [listing] ShopEvent listing\n       * @property {market.mass.IUpdateListing|null} [updateListing] ShopEvent updateListing\n       * @property {market.mass.IChangeInventory|null} [changeInventory] ShopEvent changeInventory\n       * @property {market.mass.ITag|null} [tag] ShopEvent tag\n       * @property {market.mass.IUpdateTag|null} [updateTag] ShopEvent updateTag\n       * @property {market.mass.ICreateOrder|null} [createOrder] ShopEvent createOrder\n       * @property {market.mass.IUpdateOrder|null} [updateOrder] ShopEvent updateOrder\n       */\n\n      /**\n       * Constructs a new ShopEvent.\n       * @memberof market.mass\n       * @classdesc Represents a ShopEvent.\n       * @implements IShopEvent\n       * @constructor\n       * @param {market.mass.IShopEvent=} [properties] Properties to set\n       */\n      function ShopEvent(properties) {\n        if (properties) {\n          for (\n            var keys = Object.keys(properties), i = 0;\n            i < keys.length;\n            ++i\n          ) {\n            if (properties[keys[i]] != null) {\n              this[keys[i]] = properties[keys[i]];\n            }\n          }\n        }\n      }\n\n      /**\n       * ShopEvent nonce.\n       * @member {number|Long} nonce\n       * @memberof market.mass.ShopEvent\n       * @instance\n       */\n      ShopEvent.prototype.nonce = $util.Long\n        ? $util.Long.fromBits(0, 0, true)\n        : 0;\n\n      /**\n       * ShopEvent shopId.\n       * @member {market.mass.IUint256|null|undefined} shopId\n       * @memberof market.mass.ShopEvent\n       * @instance\n       */\n      ShopEvent.prototype.shopId = null;\n\n      /**\n       * ShopEvent timestamp.\n       * @member {google.protobuf.ITimestamp|null|undefined} timestamp\n       * @memberof market.mass.ShopEvent\n       * @instance\n       */\n      ShopEvent.prototype.timestamp = null;\n\n      /**\n       * ShopEvent manifest.\n       * @member {market.mass.IManifest|null|undefined} manifest\n       * @memberof market.mass.ShopEvent\n       * @instance\n       */\n      ShopEvent.prototype.manifest = null;\n\n      /**\n       * ShopEvent updateManifest.\n       * @member {market.mass.IUpdateManifest|null|undefined} updateManifest\n       * @memberof market.mass.ShopEvent\n       * @instance\n       */\n      ShopEvent.prototype.updateManifest = null;\n\n      /**\n       * ShopEvent account.\n       * @member {market.mass.IAccount|null|undefined} account\n       * @memberof market.mass.ShopEvent\n       * @instance\n       */\n      ShopEvent.prototype.account = null;\n\n      /**\n       * ShopEvent listing.\n       * @member {market.mass.IListing|null|undefined} listing\n       * @memberof market.mass.ShopEvent\n       * @instance\n       */\n      ShopEvent.prototype.listing = null;\n\n      /**\n       * ShopEvent updateListing.\n       * @member {market.mass.IUpdateListing|null|undefined} updateListing\n       * @memberof market.mass.ShopEvent\n       * @instance\n       */\n      ShopEvent.prototype.updateListing = null;\n\n      /**\n       * ShopEvent changeInventory.\n       * @member {market.mass.IChangeInventory|null|undefined} changeInventory\n       * @memberof market.mass.ShopEvent\n       * @instance\n       */\n      ShopEvent.prototype.changeInventory = null;\n\n      /**\n       * ShopEvent tag.\n       * @member {market.mass.ITag|null|undefined} tag\n       * @memberof market.mass.ShopEvent\n       * @instance\n       */\n      ShopEvent.prototype.tag = null;\n\n      /**\n       * ShopEvent updateTag.\n       * @member {market.mass.IUpdateTag|null|undefined} updateTag\n       * @memberof market.mass.ShopEvent\n       * @instance\n       */\n      ShopEvent.prototype.updateTag = null;\n\n      /**\n       * ShopEvent createOrder.\n       * @member {market.mass.ICreateOrder|null|undefined} createOrder\n       * @memberof market.mass.ShopEvent\n       * @instance\n       */\n      ShopEvent.prototype.createOrder = null;\n\n      /**\n       * ShopEvent updateOrder.\n       * @member {market.mass.IUpdateOrder|null|undefined} updateOrder\n       * @memberof market.mass.ShopEvent\n       * @instance\n       */\n      ShopEvent.prototype.updateOrder = null;\n\n      // OneOf field names bound to virtual getters and setters\n      var $oneOfFields;\n\n      /**\n       * ShopEvent union.\n       * @member {\"manifest\"|\"updateManifest\"|\"account\"|\"listing\"|\"updateListing\"|\"changeInventory\"|\"tag\"|\"updateTag\"|\"createOrder\"|\"updateOrder\"|undefined} union\n       * @memberof market.mass.ShopEvent\n       * @instance\n       */\n      Object.defineProperty(ShopEvent.prototype, \"union\", {\n        get: $util.oneOfGetter(\n          $oneOfFields = [\n            \"manifest\",\n            \"updateManifest\",\n            \"account\",\n            \"listing\",\n            \"updateListing\",\n            \"changeInventory\",\n            \"tag\",\n            \"updateTag\",\n            \"createOrder\",\n            \"updateOrder\",\n          ],\n        ),\n        set: $util.oneOfSetter($oneOfFields),\n      });\n\n      /**\n       * Creates a new ShopEvent instance using the specified properties.\n       * @function create\n       * @memberof market.mass.ShopEvent\n       * @static\n       * @param {market.mass.IShopEvent=} [properties] Properties to set\n       * @returns {market.mass.ShopEvent} ShopEvent instance\n       */\n      ShopEvent.create = function create(properties) {\n        return new ShopEvent(properties);\n      };\n\n      /**\n       * Encodes the specified ShopEvent message. Does not implicitly {@link market.mass.ShopEvent.verify|verify} messages.\n       * @function encode\n       * @memberof market.mass.ShopEvent\n       * @static\n       * @param {market.mass.IShopEvent} message ShopEvent message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      ShopEvent.encode = function encode(message, writer) {\n        if (!writer) {\n          writer = $Writer.create();\n        }\n        if (\n          message.nonce != null && Object.hasOwnProperty.call(message, \"nonce\")\n        ) {\n          writer.uint32(/* id 1, wireType 0 =*/ 8).uint64(message.nonce);\n        }\n        if (\n          message.shopId != null &&\n          Object.hasOwnProperty.call(message, \"shopId\")\n        ) {\n          $root.market.mass.Uint256.encode(\n            message.shopId,\n            writer.uint32(/* id 2, wireType 2 =*/ 18).fork(),\n          ).ldelim();\n        }\n        if (\n          message.timestamp != null &&\n          Object.hasOwnProperty.call(message, \"timestamp\")\n        ) {\n          $root.google.protobuf.Timestamp.encode(\n            message.timestamp,\n            writer.uint32(/* id 3, wireType 2 =*/ 26).fork(),\n          ).ldelim();\n        }\n        if (\n          message.manifest != null &&\n          Object.hasOwnProperty.call(message, \"manifest\")\n        ) {\n          $root.market.mass.Manifest.encode(\n            message.manifest,\n            writer.uint32(/* id 4, wireType 2 =*/ 34).fork(),\n          ).ldelim();\n        }\n        if (\n          message.updateManifest != null &&\n          Object.hasOwnProperty.call(message, \"updateManifest\")\n        ) {\n          $root.market.mass.UpdateManifest.encode(\n            message.updateManifest,\n            writer.uint32(/* id 5, wireType 2 =*/ 42).fork(),\n          ).ldelim();\n        }\n        if (\n          message.account != null &&\n          Object.hasOwnProperty.call(message, \"account\")\n        ) {\n          $root.market.mass.Account.encode(\n            message.account,\n            writer.uint32(/* id 6, wireType 2 =*/ 50).fork(),\n          ).ldelim();\n        }\n        if (\n          message.listing != null &&\n          Object.hasOwnProperty.call(message, \"listing\")\n        ) {\n          $root.market.mass.Listing.encode(\n            message.listing,\n            writer.uint32(/* id 7, wireType 2 =*/ 58).fork(),\n          ).ldelim();\n        }\n        if (\n          message.updateListing != null &&\n          Object.hasOwnProperty.call(message, \"updateListing\")\n        ) {\n          $root.market.mass.UpdateListing.encode(\n            message.updateListing,\n            writer.uint32(/* id 8, wireType 2 =*/ 66).fork(),\n          ).ldelim();\n        }\n        if (\n          message.changeInventory != null &&\n          Object.hasOwnProperty.call(message, \"changeInventory\")\n        ) {\n          $root.market.mass.ChangeInventory.encode(\n            message.changeInventory,\n            writer.uint32(/* id 9, wireType 2 =*/ 74).fork(),\n          ).ldelim();\n        }\n        if (message.tag != null && Object.hasOwnProperty.call(message, \"tag\")) {\n          $root.market.mass.Tag.encode(\n            message.tag,\n            writer.uint32(/* id 10, wireType 2 =*/ 82).fork(),\n          ).ldelim();\n        }\n        if (\n          message.updateTag != null &&\n          Object.hasOwnProperty.call(message, \"updateTag\")\n        ) {\n          $root.market.mass.UpdateTag.encode(\n            message.updateTag,\n            writer.uint32(/* id 11, wireType 2 =*/ 90).fork(),\n          ).ldelim();\n        }\n        if (\n          message.createOrder != null &&\n          Object.hasOwnProperty.call(message, \"createOrder\")\n        ) {\n          $root.market.mass.CreateOrder.encode(\n            message.createOrder,\n            writer.uint32(/* id 12, wireType 2 =*/ 98).fork(),\n          ).ldelim();\n        }\n        if (\n          message.updateOrder != null &&\n          Object.hasOwnProperty.call(message, \"updateOrder\")\n        ) {\n          $root.market.mass.UpdateOrder.encode(\n            message.updateOrder,\n            writer.uint32(/* id 13, wireType 2 =*/ 106).fork(),\n          ).ldelim();\n        }\n        return writer;\n      };\n\n      /**\n       * Encodes the specified ShopEvent message, length delimited. Does not implicitly {@link market.mass.ShopEvent.verify|verify} messages.\n       * @function encodeDelimited\n       * @memberof market.mass.ShopEvent\n       * @static\n       * @param {market.mass.IShopEvent} message ShopEvent message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      ShopEvent.encodeDelimited = function encodeDelimited(message, writer) {\n        return this.encode(message, writer).ldelim();\n      };\n\n      /**\n       * Decodes a ShopEvent message from the specified reader or buffer.\n       * @function decode\n       * @memberof market.mass.ShopEvent\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @param {number} [length] Message length if known beforehand\n       * @returns {market.mass.ShopEvent} ShopEvent\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      ShopEvent.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader)) {\n          reader = $Reader.create(reader);\n        }\n        var end = length === undefined ? reader.len : reader.pos + length,\n          message = new $root.market.mass.ShopEvent();\n        while (reader.pos < end) {\n          var tag = reader.uint32();\n          switch (tag >>> 3) {\n            case 1: {\n              message.nonce = reader.uint64();\n              break;\n            }\n            case 2: {\n              message.shopId = $root.market.mass.Uint256.decode(\n                reader,\n                reader.uint32(),\n              );\n              break;\n            }\n            case 3: {\n              message.timestamp = $root.google.protobuf.Timestamp.decode(\n                reader,\n                reader.uint32(),\n              );\n              break;\n            }\n            case 4: {\n              message.manifest = $root.market.mass.Manifest.decode(\n                reader,\n                reader.uint32(),\n              );\n              break;\n            }\n            case 5: {\n              message.updateManifest = $root.market.mass.UpdateManifest.decode(\n                reader,\n                reader.uint32(),\n              );\n              break;\n            }\n            case 6: {\n              message.account = $root.market.mass.Account.decode(\n                reader,\n                reader.uint32(),\n              );\n              break;\n            }\n            case 7: {\n              message.listing = $root.market.mass.Listing.decode(\n                reader,\n                reader.uint32(),\n              );\n              break;\n            }\n            case 8: {\n              message.updateListing = $root.market.mass.UpdateListing.decode(\n                reader,\n                reader.uint32(),\n              );\n              break;\n            }\n            case 9: {\n              message.changeInventory = $root.market.mass.ChangeInventory\n                .decode(reader, reader.uint32());\n              break;\n            }\n            case 10: {\n              message.tag = $root.market.mass.Tag.decode(\n                reader,\n                reader.uint32(),\n              );\n              break;\n            }\n            case 11: {\n              message.updateTag = $root.market.mass.UpdateTag.decode(\n                reader,\n                reader.uint32(),\n              );\n              break;\n            }\n            case 12: {\n              message.createOrder = $root.market.mass.CreateOrder.decode(\n                reader,\n                reader.uint32(),\n              );\n              break;\n            }\n            case 13: {\n              message.updateOrder = $root.market.mass.UpdateOrder.decode(\n                reader,\n                reader.uint32(),\n              );\n              break;\n            }\n            default:\n              reader.skipType(tag & 7);\n              break;\n          }\n        }\n        return message;\n      };\n\n      /**\n       * Decodes a ShopEvent message from the specified reader or buffer, length delimited.\n       * @function decodeDelimited\n       * @memberof market.mass.ShopEvent\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @returns {market.mass.ShopEvent} ShopEvent\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      ShopEvent.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader)) {\n          reader = new $Reader(reader);\n        }\n        return this.decode(reader, reader.uint32());\n      };\n\n      /**\n       * Verifies a ShopEvent message.\n       * @function verify\n       * @memberof market.mass.ShopEvent\n       * @static\n       * @param {Object.<string,*>} message Plain object to verify\n       * @returns {string|null} `null` if valid, otherwise the reason why it is not\n       */\n      ShopEvent.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null) {\n          return \"object expected\";\n        }\n        var properties = {};\n        if (message.nonce != null && message.hasOwnProperty(\"nonce\")) {\n          if (\n            !$util.isInteger(message.nonce) &&\n            !(message.nonce && $util.isInteger(message.nonce.low) &&\n              $util.isInteger(message.nonce.high))\n          ) {\n            return \"nonce: integer|Long expected\";\n          }\n        }\n        if (message.shopId != null && message.hasOwnProperty(\"shopId\")) {\n          var error = $root.market.mass.Uint256.verify(message.shopId);\n          if (error) {\n            return \"shopId.\" + error;\n          }\n        }\n        if (message.timestamp != null && message.hasOwnProperty(\"timestamp\")) {\n          var error = $root.google.protobuf.Timestamp.verify(message.timestamp);\n          if (error) {\n            return \"timestamp.\" + error;\n          }\n        }\n        if (message.manifest != null && message.hasOwnProperty(\"manifest\")) {\n          properties.union = 1;\n          {\n            var error = $root.market.mass.Manifest.verify(message.manifest);\n            if (error) {\n              return \"manifest.\" + error;\n            }\n          }\n        }\n        if (\n          message.updateManifest != null &&\n          message.hasOwnProperty(\"updateManifest\")\n        ) {\n          if (properties.union === 1) {\n            return \"union: multiple values\";\n          }\n          properties.union = 1;\n          {\n            var error = $root.market.mass.UpdateManifest.verify(\n              message.updateManifest,\n            );\n            if (error) {\n              return \"updateManifest.\" + error;\n            }\n          }\n        }\n        if (message.account != null && message.hasOwnProperty(\"account\")) {\n          if (properties.union === 1) {\n            return \"union: multiple values\";\n          }\n          properties.union = 1;\n          {\n            var error = $root.market.mass.Account.verify(message.account);\n            if (error) {\n              return \"account.\" + error;\n            }\n          }\n        }\n        if (message.listing != null && message.hasOwnProperty(\"listing\")) {\n          if (properties.union === 1) {\n            return \"union: multiple values\";\n          }\n          properties.union = 1;\n          {\n            var error = $root.market.mass.Listing.verify(message.listing);\n            if (error) {\n              return \"listing.\" + error;\n            }\n          }\n        }\n        if (\n          message.updateListing != null &&\n          message.hasOwnProperty(\"updateListing\")\n        ) {\n          if (properties.union === 1) {\n            return \"union: multiple values\";\n          }\n          properties.union = 1;\n          {\n            var error = $root.market.mass.UpdateListing.verify(\n              message.updateListing,\n            );\n            if (error) {\n              return \"updateListing.\" + error;\n            }\n          }\n        }\n        if (\n          message.changeInventory != null &&\n          message.hasOwnProperty(\"changeInventory\")\n        ) {\n          if (properties.union === 1) {\n            return \"union: multiple values\";\n          }\n          properties.union = 1;\n          {\n            var error = $root.market.mass.ChangeInventory.verify(\n              message.changeInventory,\n            );\n            if (error) {\n              return \"changeInventory.\" + error;\n            }\n          }\n        }\n        if (message.tag != null && message.hasOwnProperty(\"tag\")) {\n          if (properties.union === 1) {\n            return \"union: multiple values\";\n          }\n          properties.union = 1;\n          {\n            var error = $root.market.mass.Tag.verify(message.tag);\n            if (error) {\n              return \"tag.\" + error;\n            }\n          }\n        }\n        if (message.updateTag != null && message.hasOwnProperty(\"updateTag\")) {\n          if (properties.union === 1) {\n            return \"union: multiple values\";\n          }\n          properties.union = 1;\n          {\n            var error = $root.market.mass.UpdateTag.verify(message.updateTag);\n            if (error) {\n              return \"updateTag.\" + error;\n            }\n          }\n        }\n        if (\n          message.createOrder != null && message.hasOwnProperty(\"createOrder\")\n        ) {\n          if (properties.union === 1) {\n            return \"union: multiple values\";\n          }\n          properties.union = 1;\n          {\n            var error = $root.market.mass.CreateOrder.verify(\n              message.createOrder,\n            );\n            if (error) {\n              return \"createOrder.\" + error;\n            }\n          }\n        }\n        if (\n          message.updateOrder != null && message.hasOwnProperty(\"updateOrder\")\n        ) {\n          if (properties.union === 1) {\n            return \"union: multiple values\";\n          }\n          properties.union = 1;\n          {\n            var error = $root.market.mass.UpdateOrder.verify(\n              message.updateOrder,\n            );\n            if (error) {\n              return \"updateOrder.\" + error;\n            }\n          }\n        }\n        return null;\n      };\n\n      /**\n       * Creates a ShopEvent message from a plain object. Also converts values to their respective internal types.\n       * @function fromObject\n       * @memberof market.mass.ShopEvent\n       * @static\n       * @param {Object.<string,*>} object Plain object\n       * @returns {market.mass.ShopEvent} ShopEvent\n       */\n      ShopEvent.fromObject = function fromObject(object) {\n        if (object instanceof $root.market.mass.ShopEvent) {\n          return object;\n        }\n        var message = new $root.market.mass.ShopEvent();\n        if (object.nonce != null) {\n          if ($util.Long) {\n            (message.nonce = $util.Long.fromValue(object.nonce)).unsigned =\n              true;\n          } else if (typeof object.nonce === \"string\") {\n            message.nonce = parseInt(object.nonce, 10);\n          } else if (typeof object.nonce === \"number\") {\n            message.nonce = object.nonce;\n          } else if (typeof object.nonce === \"object\") {\n            message.nonce = new $util.LongBits(\n              object.nonce.low >>> 0,\n              object.nonce.high >>> 0,\n            ).toNumber(true);\n          }\n        }\n        if (object.shopId != null) {\n          if (typeof object.shopId !== \"object\") {\n            throw TypeError(\".market.mass.ShopEvent.shopId: object expected\");\n          }\n          message.shopId = $root.market.mass.Uint256.fromObject(object.shopId);\n        }\n        if (object.timestamp != null) {\n          if (typeof object.timestamp !== \"object\") {\n            throw TypeError(\n              \".market.mass.ShopEvent.timestamp: object expected\",\n            );\n          }\n          message.timestamp = $root.google.protobuf.Timestamp.fromObject(\n            object.timestamp,\n          );\n        }\n        if (object.manifest != null) {\n          if (typeof object.manifest !== \"object\") {\n            throw TypeError(\".market.mass.ShopEvent.manifest: object expected\");\n          }\n          message.manifest = $root.market.mass.Manifest.fromObject(\n            object.manifest,\n          );\n        }\n        if (object.updateManifest != null) {\n          if (typeof object.updateManifest !== \"object\") {\n            throw TypeError(\n              \".market.mass.ShopEvent.updateManifest: object expected\",\n            );\n          }\n          message.updateManifest = $root.market.mass.UpdateManifest.fromObject(\n            object.updateManifest,\n          );\n        }\n        if (object.account != null) {\n          if (typeof object.account !== \"object\") {\n            throw TypeError(\".market.mass.ShopEvent.account: object expected\");\n          }\n          message.account = $root.market.mass.Account.fromObject(\n            object.account,\n          );\n        }\n        if (object.listing != null) {\n          if (typeof object.listing !== \"object\") {\n            throw TypeError(\".market.mass.ShopEvent.listing: object expected\");\n          }\n          message.listing = $root.market.mass.Listing.fromObject(\n            object.listing,\n          );\n        }\n        if (object.updateListing != null) {\n          if (typeof object.updateListing !== \"object\") {\n            throw TypeError(\n              \".market.mass.ShopEvent.updateListing: object expected\",\n            );\n          }\n          message.updateListing = $root.market.mass.UpdateListing.fromObject(\n            object.updateListing,\n          );\n        }\n        if (object.changeInventory != null) {\n          if (typeof object.changeInventory !== \"object\") {\n            throw TypeError(\n              \".market.mass.ShopEvent.changeInventory: object expected\",\n            );\n          }\n          message.changeInventory = $root.market.mass.ChangeInventory\n            .fromObject(object.changeInventory);\n        }\n        if (object.tag != null) {\n          if (typeof object.tag !== \"object\") {\n            throw TypeError(\".market.mass.ShopEvent.tag: object expected\");\n          }\n          message.tag = $root.market.mass.Tag.fromObject(object.tag);\n        }\n        if (object.updateTag != null) {\n          if (typeof object.updateTag !== \"object\") {\n            throw TypeError(\n              \".market.mass.ShopEvent.updateTag: object expected\",\n            );\n          }\n          message.updateTag = $root.market.mass.UpdateTag.fromObject(\n            object.updateTag,\n          );\n        }\n        if (object.createOrder != null) {\n          if (typeof object.createOrder !== \"object\") {\n            throw TypeError(\n              \".market.mass.ShopEvent.createOrder: object expected\",\n            );\n          }\n          message.createOrder = $root.market.mass.CreateOrder.fromObject(\n            object.createOrder,\n          );\n        }\n        if (object.updateOrder != null) {\n          if (typeof object.updateOrder !== \"object\") {\n            throw TypeError(\n              \".market.mass.ShopEvent.updateOrder: object expected\",\n            );\n          }\n          message.updateOrder = $root.market.mass.UpdateOrder.fromObject(\n            object.updateOrder,\n          );\n        }\n        return message;\n      };\n\n      /**\n       * Creates a plain object from a ShopEvent message. Also converts values to other types if specified.\n       * @function toObject\n       * @memberof market.mass.ShopEvent\n       * @static\n       * @param {market.mass.ShopEvent} message ShopEvent\n       * @param {$protobuf.IConversionOptions} [options] Conversion options\n       * @returns {Object.<string,*>} Plain object\n       */\n      ShopEvent.toObject = function toObject(message, options) {\n        if (!options) {\n          options = {};\n        }\n        var object = {};\n        if (options.defaults) {\n          if ($util.Long) {\n            var long = new $util.Long(0, 0, true);\n            object.nonce = options.longs === String\n              ? long.toString()\n              : options.longs === Number\n              ? long.toNumber()\n              : long;\n          } else {\n            object.nonce = options.longs === String ? \"0\" : 0;\n          }\n          object.shopId = null;\n          object.timestamp = null;\n        }\n        if (message.nonce != null && message.hasOwnProperty(\"nonce\")) {\n          if (typeof message.nonce === \"number\") {\n            object.nonce = options.longs === String\n              ? String(message.nonce)\n              : message.nonce;\n          } else {\n            object.nonce = options.longs === String\n              ? $util.Long.prototype.toString.call(message.nonce)\n              : options.longs === Number\n              ? new $util.LongBits(\n                message.nonce.low >>> 0,\n                message.nonce.high >>> 0,\n              ).toNumber(true)\n              : message.nonce;\n          }\n        }\n        if (message.shopId != null && message.hasOwnProperty(\"shopId\")) {\n          object.shopId = $root.market.mass.Uint256.toObject(\n            message.shopId,\n            options,\n          );\n        }\n        if (message.timestamp != null && message.hasOwnProperty(\"timestamp\")) {\n          object.timestamp = $root.google.protobuf.Timestamp.toObject(\n            message.timestamp,\n            options,\n          );\n        }\n        if (message.manifest != null && message.hasOwnProperty(\"manifest\")) {\n          object.manifest = $root.market.mass.Manifest.toObject(\n            message.manifest,\n            options,\n          );\n          if (options.oneofs) {\n            object.union = \"manifest\";\n          }\n        }\n        if (\n          message.updateManifest != null &&\n          message.hasOwnProperty(\"updateManifest\")\n        ) {\n          object.updateManifest = $root.market.mass.UpdateManifest.toObject(\n            message.updateManifest,\n            options,\n          );\n          if (options.oneofs) {\n            object.union = \"updateManifest\";\n          }\n        }\n        if (message.account != null && message.hasOwnProperty(\"account\")) {\n          object.account = $root.market.mass.Account.toObject(\n            message.account,\n            options,\n          );\n          if (options.oneofs) {\n            object.union = \"account\";\n          }\n        }\n        if (message.listing != null && message.hasOwnProperty(\"listing\")) {\n          object.listing = $root.market.mass.Listing.toObject(\n            message.listing,\n            options,\n          );\n          if (options.oneofs) {\n            object.union = \"listing\";\n          }\n        }\n        if (\n          message.updateListing != null &&\n          message.hasOwnProperty(\"updateListing\")\n        ) {\n          object.updateListing = $root.market.mass.UpdateListing.toObject(\n            message.updateListing,\n            options,\n          );\n          if (options.oneofs) {\n            object.union = \"updateListing\";\n          }\n        }\n        if (\n          message.changeInventory != null &&\n          message.hasOwnProperty(\"changeInventory\")\n        ) {\n          object.changeInventory = $root.market.mass.ChangeInventory.toObject(\n            message.changeInventory,\n            options,\n          );\n          if (options.oneofs) {\n            object.union = \"changeInventory\";\n          }\n        }\n        if (message.tag != null && message.hasOwnProperty(\"tag\")) {\n          object.tag = $root.market.mass.Tag.toObject(message.tag, options);\n          if (options.oneofs) {\n            object.union = \"tag\";\n          }\n        }\n        if (message.updateTag != null && message.hasOwnProperty(\"updateTag\")) {\n          object.updateTag = $root.market.mass.UpdateTag.toObject(\n            message.updateTag,\n            options,\n          );\n          if (options.oneofs) {\n            object.union = \"updateTag\";\n          }\n        }\n        if (\n          message.createOrder != null && message.hasOwnProperty(\"createOrder\")\n        ) {\n          object.createOrder = $root.market.mass.CreateOrder.toObject(\n            message.createOrder,\n            options,\n          );\n          if (options.oneofs) {\n            object.union = \"createOrder\";\n          }\n        }\n        if (\n          message.updateOrder != null && message.hasOwnProperty(\"updateOrder\")\n        ) {\n          object.updateOrder = $root.market.mass.UpdateOrder.toObject(\n            message.updateOrder,\n            options,\n          );\n          if (options.oneofs) {\n            object.union = \"updateOrder\";\n          }\n        }\n        return object;\n      };\n\n      /**\n       * Converts this ShopEvent to JSON.\n       * @function toJSON\n       * @memberof market.mass.ShopEvent\n       * @instance\n       * @returns {Object.<string,*>} JSON object\n       */\n      ShopEvent.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n      };\n\n      /**\n       * Gets the default type url for ShopEvent\n       * @function getTypeUrl\n       * @memberof market.mass.ShopEvent\n       * @static\n       * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n       * @returns {string} The default type url\n       */\n      ShopEvent.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n        if (typeUrlPrefix === undefined) {\n          typeUrlPrefix = \"type.googleapis.com\";\n        }\n        return typeUrlPrefix + \"/market.mass.ShopEvent\";\n      };\n\n      return ShopEvent;\n    })();\n\n    mass.Order = (function () {\n      /**\n       * Properties of an Order.\n       * @memberof market.mass\n       * @interface IOrder\n       * @property {market.mass.IObjectId|null} [id] Order id\n       * @property {Array.<market.mass.IOrderedItem>|null} [items] Order items\n       * @property {string|null} [shippingStatus] Order shippingStatus\n       * @property {google.protobuf.ITimestamp|null} [canceledAt] Order canceledAt\n       * @property {google.protobuf.ITimestamp|null} [commitedAt] Order commitedAt\n       * @property {market.mass.IAddressDetails|null} [invoiceAddress] Order invoiceAddress\n       * @property {market.mass.IAddressDetails|null} [shippingAddress] Order shippingAddress\n       * @property {google.protobuf.ITimestamp|null} [addressUpdatedAt] Order addressUpdatedAt\n       * @property {market.mass.IPayee|null} [chosenPayee] Order chosenPayee\n       * @property {market.mass.IShopCurrency|null} [chosenCurrency] Order chosenCurrency\n       * @property {market.mass.IPaymentDetails|null} [paymentDetails] Order paymentDetails\n       * @property {google.protobuf.ITimestamp|null} [paymentDetailsCreatedAt] Order paymentDetailsCreatedAt\n       * @property {Array.<market.mass.IOrderTransaction>|null} [paymentTransactions] Order paymentTransactions\n       */\n\n      /**\n       * Constructs a new Order.\n       * @memberof market.mass\n       * @classdesc Represents an Order.\n       * @implements IOrder\n       * @constructor\n       * @param {market.mass.IOrder=} [properties] Properties to set\n       */\n      function Order(properties) {\n        this.items = [];\n        this.paymentTransactions = [];\n        if (properties) {\n          for (\n            var keys = Object.keys(properties), i = 0;\n            i < keys.length;\n            ++i\n          ) {\n            if (properties[keys[i]] != null) {\n              this[keys[i]] = properties[keys[i]];\n            }\n          }\n        }\n      }\n\n      /**\n       * Order id.\n       * @member {market.mass.IObjectId|null|undefined} id\n       * @memberof market.mass.Order\n       * @instance\n       */\n      Order.prototype.id = null;\n\n      /**\n       * Order items.\n       * @member {Array.<market.mass.IOrderedItem>} items\n       * @memberof market.mass.Order\n       * @instance\n       */\n      Order.prototype.items = $util.emptyArray;\n\n      /**\n       * Order shippingStatus.\n       * @member {string} shippingStatus\n       * @memberof market.mass.Order\n       * @instance\n       */\n      Order.prototype.shippingStatus = \"\";\n\n      /**\n       * Order canceledAt.\n       * @member {google.protobuf.ITimestamp|null|undefined} canceledAt\n       * @memberof market.mass.Order\n       * @instance\n       */\n      Order.prototype.canceledAt = null;\n\n      /**\n       * Order commitedAt.\n       * @member {google.protobuf.ITimestamp|null|undefined} commitedAt\n       * @memberof market.mass.Order\n       * @instance\n       */\n      Order.prototype.commitedAt = null;\n\n      /**\n       * Order invoiceAddress.\n       * @member {market.mass.IAddressDetails|null|undefined} invoiceAddress\n       * @memberof market.mass.Order\n       * @instance\n       */\n      Order.prototype.invoiceAddress = null;\n\n      /**\n       * Order shippingAddress.\n       * @member {market.mass.IAddressDetails|null|undefined} shippingAddress\n       * @memberof market.mass.Order\n       * @instance\n       */\n      Order.prototype.shippingAddress = null;\n\n      /**\n       * Order addressUpdatedAt.\n       * @member {google.protobuf.ITimestamp|null|undefined} addressUpdatedAt\n       * @memberof market.mass.Order\n       * @instance\n       */\n      Order.prototype.addressUpdatedAt = null;\n\n      /**\n       * Order chosenPayee.\n       * @member {market.mass.IPayee|null|undefined} chosenPayee\n       * @memberof market.mass.Order\n       * @instance\n       */\n      Order.prototype.chosenPayee = null;\n\n      /**\n       * Order chosenCurrency.\n       * @member {market.mass.IShopCurrency|null|undefined} chosenCurrency\n       * @memberof market.mass.Order\n       * @instance\n       */\n      Order.prototype.chosenCurrency = null;\n\n      /**\n       * Order paymentDetails.\n       * @member {market.mass.IPaymentDetails|null|undefined} paymentDetails\n       * @memberof market.mass.Order\n       * @instance\n       */\n      Order.prototype.paymentDetails = null;\n\n      /**\n       * Order paymentDetailsCreatedAt.\n       * @member {google.protobuf.ITimestamp|null|undefined} paymentDetailsCreatedAt\n       * @memberof market.mass.Order\n       * @instance\n       */\n      Order.prototype.paymentDetailsCreatedAt = null;\n\n      /**\n       * Order paymentTransactions.\n       * @member {Array.<market.mass.IOrderTransaction>} paymentTransactions\n       * @memberof market.mass.Order\n       * @instance\n       */\n      Order.prototype.paymentTransactions = $util.emptyArray;\n\n      // OneOf field names bound to virtual getters and setters\n      var $oneOfFields;\n\n      // Virtual OneOf for proto3 optional field\n      Object.defineProperty(Order.prototype, \"_canceledAt\", {\n        get: $util.oneOfGetter($oneOfFields = [\"canceledAt\"]),\n        set: $util.oneOfSetter($oneOfFields),\n      });\n\n      // Virtual OneOf for proto3 optional field\n      Object.defineProperty(Order.prototype, \"_commitedAt\", {\n        get: $util.oneOfGetter($oneOfFields = [\"commitedAt\"]),\n        set: $util.oneOfSetter($oneOfFields),\n      });\n\n      // Virtual OneOf for proto3 optional field\n      Object.defineProperty(Order.prototype, \"_invoiceAddress\", {\n        get: $util.oneOfGetter($oneOfFields = [\"invoiceAddress\"]),\n        set: $util.oneOfSetter($oneOfFields),\n      });\n\n      // Virtual OneOf for proto3 optional field\n      Object.defineProperty(Order.prototype, \"_shippingAddress\", {\n        get: $util.oneOfGetter($oneOfFields = [\"shippingAddress\"]),\n        set: $util.oneOfSetter($oneOfFields),\n      });\n\n      // Virtual OneOf for proto3 optional field\n      Object.defineProperty(Order.prototype, \"_addressUpdatedAt\", {\n        get: $util.oneOfGetter($oneOfFields = [\"addressUpdatedAt\"]),\n        set: $util.oneOfSetter($oneOfFields),\n      });\n\n      // Virtual OneOf for proto3 optional field\n      Object.defineProperty(Order.prototype, \"_chosenPayee\", {\n        get: $util.oneOfGetter($oneOfFields = [\"chosenPayee\"]),\n        set: $util.oneOfSetter($oneOfFields),\n      });\n\n      // Virtual OneOf for proto3 optional field\n      Object.defineProperty(Order.prototype, \"_chosenCurrency\", {\n        get: $util.oneOfGetter($oneOfFields = [\"chosenCurrency\"]),\n        set: $util.oneOfSetter($oneOfFields),\n      });\n\n      // Virtual OneOf for proto3 optional field\n      Object.defineProperty(Order.prototype, \"_paymentDetails\", {\n        get: $util.oneOfGetter($oneOfFields = [\"paymentDetails\"]),\n        set: $util.oneOfSetter($oneOfFields),\n      });\n\n      // Virtual OneOf for proto3 optional field\n      Object.defineProperty(Order.prototype, \"_paymentDetailsCreatedAt\", {\n        get: $util.oneOfGetter($oneOfFields = [\"paymentDetailsCreatedAt\"]),\n        set: $util.oneOfSetter($oneOfFields),\n      });\n\n      /**\n       * Creates a new Order instance using the specified properties.\n       * @function create\n       * @memberof market.mass.Order\n       * @static\n       * @param {market.mass.IOrder=} [properties] Properties to set\n       * @returns {market.mass.Order} Order instance\n       */\n      Order.create = function create(properties) {\n        return new Order(properties);\n      };\n\n      /**\n       * Encodes the specified Order message. Does not implicitly {@link market.mass.Order.verify|verify} messages.\n       * @function encode\n       * @memberof market.mass.Order\n       * @static\n       * @param {market.mass.IOrder} message Order message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      Order.encode = function encode(message, writer) {\n        if (!writer) {\n          writer = $Writer.create();\n        }\n        if (message.id != null && Object.hasOwnProperty.call(message, \"id\")) {\n          $root.market.mass.ObjectId.encode(\n            message.id,\n            writer.uint32(/* id 1, wireType 2 =*/ 10).fork(),\n          ).ldelim();\n        }\n        if (message.items != null && message.items.length) {\n          for (var i = 0; i < message.items.length; ++i) {\n            $root.market.mass.OrderedItem.encode(\n              message.items[i],\n              writer.uint32(/* id 2, wireType 2 =*/ 18).fork(),\n            ).ldelim();\n          }\n        }\n        if (\n          message.shippingStatus != null &&\n          Object.hasOwnProperty.call(message, \"shippingStatus\")\n        ) {\n          writer.uint32(/* id 3, wireType 2 =*/ 26).string(\n            message.shippingStatus,\n          );\n        }\n        if (\n          message.canceledAt != null &&\n          Object.hasOwnProperty.call(message, \"canceledAt\")\n        ) {\n          $root.google.protobuf.Timestamp.encode(\n            message.canceledAt,\n            writer.uint32(/* id 4, wireType 2 =*/ 34).fork(),\n          ).ldelim();\n        }\n        if (\n          message.commitedAt != null &&\n          Object.hasOwnProperty.call(message, \"commitedAt\")\n        ) {\n          $root.google.protobuf.Timestamp.encode(\n            message.commitedAt,\n            writer.uint32(/* id 5, wireType 2 =*/ 42).fork(),\n          ).ldelim();\n        }\n        if (\n          message.invoiceAddress != null &&\n          Object.hasOwnProperty.call(message, \"invoiceAddress\")\n        ) {\n          $root.market.mass.AddressDetails.encode(\n            message.invoiceAddress,\n            writer.uint32(/* id 6, wireType 2 =*/ 50).fork(),\n          ).ldelim();\n        }\n        if (\n          message.shippingAddress != null &&\n          Object.hasOwnProperty.call(message, \"shippingAddress\")\n        ) {\n          $root.market.mass.AddressDetails.encode(\n            message.shippingAddress,\n            writer.uint32(/* id 7, wireType 2 =*/ 58).fork(),\n          ).ldelim();\n        }\n        if (\n          message.addressUpdatedAt != null &&\n          Object.hasOwnProperty.call(message, \"addressUpdatedAt\")\n        ) {\n          $root.google.protobuf.Timestamp.encode(\n            message.addressUpdatedAt,\n            writer.uint32(/* id 8, wireType 2 =*/ 66).fork(),\n          ).ldelim();\n        }\n        if (\n          message.chosenPayee != null &&\n          Object.hasOwnProperty.call(message, \"chosenPayee\")\n        ) {\n          $root.market.mass.Payee.encode(\n            message.chosenPayee,\n            writer.uint32(/* id 9, wireType 2 =*/ 74).fork(),\n          ).ldelim();\n        }\n        if (\n          message.chosenCurrency != null &&\n          Object.hasOwnProperty.call(message, \"chosenCurrency\")\n        ) {\n          $root.market.mass.ShopCurrency.encode(\n            message.chosenCurrency,\n            writer.uint32(/* id 10, wireType 2 =*/ 82).fork(),\n          ).ldelim();\n        }\n        if (\n          message.paymentDetails != null &&\n          Object.hasOwnProperty.call(message, \"paymentDetails\")\n        ) {\n          $root.market.mass.PaymentDetails.encode(\n            message.paymentDetails,\n            writer.uint32(/* id 11, wireType 2 =*/ 90).fork(),\n          ).ldelim();\n        }\n        if (\n          message.paymentDetailsCreatedAt != null &&\n          Object.hasOwnProperty.call(message, \"paymentDetailsCreatedAt\")\n        ) {\n          $root.google.protobuf.Timestamp.encode(\n            message.paymentDetailsCreatedAt,\n            writer.uint32(/* id 12, wireType 2 =*/ 98).fork(),\n          ).ldelim();\n        }\n        if (\n          message.paymentTransactions != null &&\n          message.paymentTransactions.length\n        ) {\n          for (var i = 0; i < message.paymentTransactions.length; ++i) {\n            $root.market.mass.OrderTransaction.encode(\n              message.paymentTransactions[i],\n              writer.uint32(/* id 13, wireType 2 =*/ 106).fork(),\n            ).ldelim();\n          }\n        }\n        return writer;\n      };\n\n      /**\n       * Encodes the specified Order message, length delimited. Does not implicitly {@link market.mass.Order.verify|verify} messages.\n       * @function encodeDelimited\n       * @memberof market.mass.Order\n       * @static\n       * @param {market.mass.IOrder} message Order message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      Order.encodeDelimited = function encodeDelimited(message, writer) {\n        return this.encode(message, writer).ldelim();\n      };\n\n      /**\n       * Decodes an Order message from the specified reader or buffer.\n       * @function decode\n       * @memberof market.mass.Order\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @param {number} [length] Message length if known beforehand\n       * @returns {market.mass.Order} Order\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      Order.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader)) {\n          reader = $Reader.create(reader);\n        }\n        var end = length === undefined ? reader.len : reader.pos + length,\n          message = new $root.market.mass.Order();\n        while (reader.pos < end) {\n          var tag = reader.uint32();\n          switch (tag >>> 3) {\n            case 1: {\n              message.id = $root.market.mass.ObjectId.decode(\n                reader,\n                reader.uint32(),\n              );\n              break;\n            }\n            case 2: {\n              if (!(message.items && message.items.length)) {\n                message.items = [];\n              }\n              message.items.push(\n                $root.market.mass.OrderedItem.decode(reader, reader.uint32()),\n              );\n              break;\n            }\n            case 3: {\n              message.shippingStatus = reader.string();\n              break;\n            }\n            case 4: {\n              message.canceledAt = $root.google.protobuf.Timestamp.decode(\n                reader,\n                reader.uint32(),\n              );\n              break;\n            }\n            case 5: {\n              message.commitedAt = $root.google.protobuf.Timestamp.decode(\n                reader,\n                reader.uint32(),\n              );\n              break;\n            }\n            case 6: {\n              message.invoiceAddress = $root.market.mass.AddressDetails.decode(\n                reader,\n                reader.uint32(),\n              );\n              break;\n            }\n            case 7: {\n              message.shippingAddress = $root.market.mass.AddressDetails.decode(\n                reader,\n                reader.uint32(),\n              );\n              break;\n            }\n            case 8: {\n              message.addressUpdatedAt = $root.google.protobuf.Timestamp.decode(\n                reader,\n                reader.uint32(),\n              );\n              break;\n            }\n            case 9: {\n              message.chosenPayee = $root.market.mass.Payee.decode(\n                reader,\n                reader.uint32(),\n              );\n              break;\n            }\n            case 10: {\n              message.chosenCurrency = $root.market.mass.ShopCurrency.decode(\n                reader,\n                reader.uint32(),\n              );\n              break;\n            }\n            case 11: {\n              message.paymentDetails = $root.market.mass.PaymentDetails.decode(\n                reader,\n                reader.uint32(),\n              );\n              break;\n            }\n            case 12: {\n              message.paymentDetailsCreatedAt = $root.google.protobuf.Timestamp\n                .decode(reader, reader.uint32());\n              break;\n            }\n            case 13: {\n              if (\n                !(message.paymentTransactions &&\n                  message.paymentTransactions.length)\n              ) {\n                message.paymentTransactions = [];\n              }\n              message.paymentTransactions.push(\n                $root.market.mass.OrderTransaction.decode(\n                  reader,\n                  reader.uint32(),\n                ),\n              );\n              break;\n            }\n            default:\n              reader.skipType(tag & 7);\n              break;\n          }\n        }\n        return message;\n      };\n\n      /**\n       * Decodes an Order message from the specified reader or buffer, length delimited.\n       * @function decodeDelimited\n       * @memberof market.mass.Order\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @returns {market.mass.Order} Order\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      Order.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader)) {\n          reader = new $Reader(reader);\n        }\n        return this.decode(reader, reader.uint32());\n      };\n\n      /**\n       * Verifies an Order message.\n       * @function verify\n       * @memberof market.mass.Order\n       * @static\n       * @param {Object.<string,*>} message Plain object to verify\n       * @returns {string|null} `null` if valid, otherwise the reason why it is not\n       */\n      Order.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null) {\n          return \"object expected\";\n        }\n        var properties = {};\n        if (message.id != null && message.hasOwnProperty(\"id\")) {\n          var error = $root.market.mass.ObjectId.verify(message.id);\n          if (error) {\n            return \"id.\" + error;\n          }\n        }\n        if (message.items != null && message.hasOwnProperty(\"items\")) {\n          if (!Array.isArray(message.items)) {\n            return \"items: array expected\";\n          }\n          for (var i = 0; i < message.items.length; ++i) {\n            var error = $root.market.mass.OrderedItem.verify(message.items[i]);\n            if (error) {\n              return \"items.\" + error;\n            }\n          }\n        }\n        if (\n          message.shippingStatus != null &&\n          message.hasOwnProperty(\"shippingStatus\")\n        ) {\n          if (!$util.isString(message.shippingStatus)) {\n            return \"shippingStatus: string expected\";\n          }\n        }\n        if (\n          message.canceledAt != null && message.hasOwnProperty(\"canceledAt\")\n        ) {\n          properties._canceledAt = 1;\n          {\n            var error = $root.google.protobuf.Timestamp.verify(\n              message.canceledAt,\n            );\n            if (error) {\n              return \"canceledAt.\" + error;\n            }\n          }\n        }\n        if (\n          message.commitedAt != null && message.hasOwnProperty(\"commitedAt\")\n        ) {\n          properties._commitedAt = 1;\n          {\n            var error = $root.google.protobuf.Timestamp.verify(\n              message.commitedAt,\n            );\n            if (error) {\n              return \"commitedAt.\" + error;\n            }\n          }\n        }\n        if (\n          message.invoiceAddress != null &&\n          message.hasOwnProperty(\"invoiceAddress\")\n        ) {\n          properties._invoiceAddress = 1;\n          {\n            var error = $root.market.mass.AddressDetails.verify(\n              message.invoiceAddress,\n            );\n            if (error) {\n              return \"invoiceAddress.\" + error;\n            }\n          }\n        }\n        if (\n          message.shippingAddress != null &&\n          message.hasOwnProperty(\"shippingAddress\")\n        ) {\n          properties._shippingAddress = 1;\n          {\n            var error = $root.market.mass.AddressDetails.verify(\n              message.shippingAddress,\n            );\n            if (error) {\n              return \"shippingAddress.\" + error;\n            }\n          }\n        }\n        if (\n          message.addressUpdatedAt != null &&\n          message.hasOwnProperty(\"addressUpdatedAt\")\n        ) {\n          properties._addressUpdatedAt = 1;\n          {\n            var error = $root.google.protobuf.Timestamp.verify(\n              message.addressUpdatedAt,\n            );\n            if (error) {\n              return \"addressUpdatedAt.\" + error;\n            }\n          }\n        }\n        if (\n          message.chosenPayee != null && message.hasOwnProperty(\"chosenPayee\")\n        ) {\n          properties._chosenPayee = 1;\n          {\n            var error = $root.market.mass.Payee.verify(message.chosenPayee);\n            if (error) {\n              return \"chosenPayee.\" + error;\n            }\n          }\n        }\n        if (\n          message.chosenCurrency != null &&\n          message.hasOwnProperty(\"chosenCurrency\")\n        ) {\n          properties._chosenCurrency = 1;\n          {\n            var error = $root.market.mass.ShopCurrency.verify(\n              message.chosenCurrency,\n            );\n            if (error) {\n              return \"chosenCurrency.\" + error;\n            }\n          }\n        }\n        if (\n          message.paymentDetails != null &&\n          message.hasOwnProperty(\"paymentDetails\")\n        ) {\n          properties._paymentDetails = 1;\n          {\n            var error = $root.market.mass.PaymentDetails.verify(\n              message.paymentDetails,\n            );\n            if (error) {\n              return \"paymentDetails.\" + error;\n            }\n          }\n        }\n        if (\n          message.paymentDetailsCreatedAt != null &&\n          message.hasOwnProperty(\"paymentDetailsCreatedAt\")\n        ) {\n          properties._paymentDetailsCreatedAt = 1;\n          {\n            var error = $root.google.protobuf.Timestamp.verify(\n              message.paymentDetailsCreatedAt,\n            );\n            if (error) {\n              return \"paymentDetailsCreatedAt.\" + error;\n            }\n          }\n        }\n        if (\n          message.paymentTransactions != null &&\n          message.hasOwnProperty(\"paymentTransactions\")\n        ) {\n          if (!Array.isArray(message.paymentTransactions)) {\n            return \"paymentTransactions: array expected\";\n          }\n          for (var i = 0; i < message.paymentTransactions.length; ++i) {\n            var error = $root.market.mass.OrderTransaction.verify(\n              message.paymentTransactions[i],\n            );\n            if (error) {\n              return \"paymentTransactions.\" + error;\n            }\n          }\n        }\n        return null;\n      };\n\n      /**\n       * Creates an Order message from a plain object. Also converts values to their respective internal types.\n       * @function fromObject\n       * @memberof market.mass.Order\n       * @static\n       * @param {Object.<string,*>} object Plain object\n       * @returns {market.mass.Order} Order\n       */\n      Order.fromObject = function fromObject(object) {\n        if (object instanceof $root.market.mass.Order) {\n          return object;\n        }\n        var message = new $root.market.mass.Order();\n        if (object.id != null) {\n          if (typeof object.id !== \"object\") {\n            throw TypeError(\".market.mass.Order.id: object expected\");\n          }\n          message.id = $root.market.mass.ObjectId.fromObject(object.id);\n        }\n        if (object.items) {\n          if (!Array.isArray(object.items)) {\n            throw TypeError(\".market.mass.Order.items: array expected\");\n          }\n          message.items = [];\n          for (var i = 0; i < object.items.length; ++i) {\n            if (typeof object.items[i] !== \"object\") {\n              throw TypeError(\".market.mass.Order.items: object expected\");\n            }\n            message.items[i] = $root.market.mass.OrderedItem.fromObject(\n              object.items[i],\n            );\n          }\n        }\n        if (object.shippingStatus != null) {\n          message.shippingStatus = String(object.shippingStatus);\n        }\n        if (object.canceledAt != null) {\n          if (typeof object.canceledAt !== \"object\") {\n            throw TypeError(\".market.mass.Order.canceledAt: object expected\");\n          }\n          message.canceledAt = $root.google.protobuf.Timestamp.fromObject(\n            object.canceledAt,\n          );\n        }\n        if (object.commitedAt != null) {\n          if (typeof object.commitedAt !== \"object\") {\n            throw TypeError(\".market.mass.Order.commitedAt: object expected\");\n          }\n          message.commitedAt = $root.google.protobuf.Timestamp.fromObject(\n            object.commitedAt,\n          );\n        }\n        if (object.invoiceAddress != null) {\n          if (typeof object.invoiceAddress !== \"object\") {\n            throw TypeError(\n              \".market.mass.Order.invoiceAddress: object expected\",\n            );\n          }\n          message.invoiceAddress = $root.market.mass.AddressDetails.fromObject(\n            object.invoiceAddress,\n          );\n        }\n        if (object.shippingAddress != null) {\n          if (typeof object.shippingAddress !== \"object\") {\n            throw TypeError(\n              \".market.mass.Order.shippingAddress: object expected\",\n            );\n          }\n          message.shippingAddress = $root.market.mass.AddressDetails.fromObject(\n            object.shippingAddress,\n          );\n        }\n        if (object.addressUpdatedAt != null) {\n          if (typeof object.addressUpdatedAt !== \"object\") {\n            throw TypeError(\n              \".market.mass.Order.addressUpdatedAt: object expected\",\n            );\n          }\n          message.addressUpdatedAt = $root.google.protobuf.Timestamp.fromObject(\n            object.addressUpdatedAt,\n          );\n        }\n        if (object.chosenPayee != null) {\n          if (typeof object.chosenPayee !== \"object\") {\n            throw TypeError(\".market.mass.Order.chosenPayee: object expected\");\n          }\n          message.chosenPayee = $root.market.mass.Payee.fromObject(\n            object.chosenPayee,\n          );\n        }\n        if (object.chosenCurrency != null) {\n          if (typeof object.chosenCurrency !== \"object\") {\n            throw TypeError(\n              \".market.mass.Order.chosenCurrency: object expected\",\n            );\n          }\n          message.chosenCurrency = $root.market.mass.ShopCurrency.fromObject(\n            object.chosenCurrency,\n          );\n        }\n        if (object.paymentDetails != null) {\n          if (typeof object.paymentDetails !== \"object\") {\n            throw TypeError(\n              \".market.mass.Order.paymentDetails: object expected\",\n            );\n          }\n          message.paymentDetails = $root.market.mass.PaymentDetails.fromObject(\n            object.paymentDetails,\n          );\n        }\n        if (object.paymentDetailsCreatedAt != null) {\n          if (typeof object.paymentDetailsCreatedAt !== \"object\") {\n            throw TypeError(\n              \".market.mass.Order.paymentDetailsCreatedAt: object expected\",\n            );\n          }\n          message.paymentDetailsCreatedAt = $root.google.protobuf.Timestamp\n            .fromObject(object.paymentDetailsCreatedAt);\n        }\n        if (object.paymentTransactions) {\n          if (!Array.isArray(object.paymentTransactions)) {\n            throw TypeError(\n              \".market.mass.Order.paymentTransactions: array expected\",\n            );\n          }\n          message.paymentTransactions = [];\n          for (var i = 0; i < object.paymentTransactions.length; ++i) {\n            if (typeof object.paymentTransactions[i] !== \"object\") {\n              throw TypeError(\n                \".market.mass.Order.paymentTransactions: object expected\",\n              );\n            }\n            message.paymentTransactions[i] = $root.market.mass.OrderTransaction\n              .fromObject(object.paymentTransactions[i]);\n          }\n        }\n        return message;\n      };\n\n      /**\n       * Creates a plain object from an Order message. Also converts values to other types if specified.\n       * @function toObject\n       * @memberof market.mass.Order\n       * @static\n       * @param {market.mass.Order} message Order\n       * @param {$protobuf.IConversionOptions} [options] Conversion options\n       * @returns {Object.<string,*>} Plain object\n       */\n      Order.toObject = function toObject(message, options) {\n        if (!options) {\n          options = {};\n        }\n        var object = {};\n        if (options.arrays || options.defaults) {\n          object.items = [];\n          object.paymentTransactions = [];\n        }\n        if (options.defaults) {\n          object.id = null;\n          object.shippingStatus = \"\";\n        }\n        if (message.id != null && message.hasOwnProperty(\"id\")) {\n          object.id = $root.market.mass.ObjectId.toObject(message.id, options);\n        }\n        if (message.items && message.items.length) {\n          object.items = [];\n          for (var j = 0; j < message.items.length; ++j) {\n            object.items[j] = $root.market.mass.OrderedItem.toObject(\n              message.items[j],\n              options,\n            );\n          }\n        }\n        if (\n          message.shippingStatus != null &&\n          message.hasOwnProperty(\"shippingStatus\")\n        ) {\n          object.shippingStatus = message.shippingStatus;\n        }\n        if (\n          message.canceledAt != null && message.hasOwnProperty(\"canceledAt\")\n        ) {\n          object.canceledAt = $root.google.protobuf.Timestamp.toObject(\n            message.canceledAt,\n            options,\n          );\n          if (options.oneofs) {\n            object._canceledAt = \"canceledAt\";\n          }\n        }\n        if (\n          message.commitedAt != null && message.hasOwnProperty(\"commitedAt\")\n        ) {\n          object.commitedAt = $root.google.protobuf.Timestamp.toObject(\n            message.commitedAt,\n            options,\n          );\n          if (options.oneofs) {\n            object._commitedAt = \"commitedAt\";\n          }\n        }\n        if (\n          message.invoiceAddress != null &&\n          message.hasOwnProperty(\"invoiceAddress\")\n        ) {\n          object.invoiceAddress = $root.market.mass.AddressDetails.toObject(\n            message.invoiceAddress,\n            options,\n          );\n          if (options.oneofs) {\n            object._invoiceAddress = \"invoiceAddress\";\n          }\n        }\n        if (\n          message.shippingAddress != null &&\n          message.hasOwnProperty(\"shippingAddress\")\n        ) {\n          object.shippingAddress = $root.market.mass.AddressDetails.toObject(\n            message.shippingAddress,\n            options,\n          );\n          if (options.oneofs) {\n            object._shippingAddress = \"shippingAddress\";\n          }\n        }\n        if (\n          message.addressUpdatedAt != null &&\n          message.hasOwnProperty(\"addressUpdatedAt\")\n        ) {\n          object.addressUpdatedAt = $root.google.protobuf.Timestamp.toObject(\n            message.addressUpdatedAt,\n            options,\n          );\n          if (options.oneofs) {\n            object._addressUpdatedAt = \"addressUpdatedAt\";\n          }\n        }\n        if (\n          message.chosenPayee != null && message.hasOwnProperty(\"chosenPayee\")\n        ) {\n          object.chosenPayee = $root.market.mass.Payee.toObject(\n            message.chosenPayee,\n            options,\n          );\n          if (options.oneofs) {\n            object._chosenPayee = \"chosenPayee\";\n          }\n        }\n        if (\n          message.chosenCurrency != null &&\n          message.hasOwnProperty(\"chosenCurrency\")\n        ) {\n          object.chosenCurrency = $root.market.mass.ShopCurrency.toObject(\n            message.chosenCurrency,\n            options,\n          );\n          if (options.oneofs) {\n            object._chosenCurrency = \"chosenCurrency\";\n          }\n        }\n        if (\n          message.paymentDetails != null &&\n          message.hasOwnProperty(\"paymentDetails\")\n        ) {\n          object.paymentDetails = $root.market.mass.PaymentDetails.toObject(\n            message.paymentDetails,\n            options,\n          );\n          if (options.oneofs) {\n            object._paymentDetails = \"paymentDetails\";\n          }\n        }\n        if (\n          message.paymentDetailsCreatedAt != null &&\n          message.hasOwnProperty(\"paymentDetailsCreatedAt\")\n        ) {\n          object.paymentDetailsCreatedAt = $root.google.protobuf.Timestamp\n            .toObject(message.paymentDetailsCreatedAt, options);\n          if (options.oneofs) {\n            object._paymentDetailsCreatedAt = \"paymentDetailsCreatedAt\";\n          }\n        }\n        if (message.paymentTransactions && message.paymentTransactions.length) {\n          object.paymentTransactions = [];\n          for (var j = 0; j < message.paymentTransactions.length; ++j) {\n            object.paymentTransactions[j] = $root.market.mass.OrderTransaction\n              .toObject(message.paymentTransactions[j], options);\n          }\n        }\n        return object;\n      };\n\n      /**\n       * Converts this Order to JSON.\n       * @function toJSON\n       * @memberof market.mass.Order\n       * @instance\n       * @returns {Object.<string,*>} JSON object\n       */\n      Order.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n      };\n\n      /**\n       * Gets the default type url for Order\n       * @function getTypeUrl\n       * @memberof market.mass.Order\n       * @static\n       * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n       * @returns {string} The default type url\n       */\n      Order.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n        if (typeUrlPrefix === undefined) {\n          typeUrlPrefix = \"type.googleapis.com\";\n        }\n        return typeUrlPrefix + \"/market.mass.Order\";\n      };\n\n      return Order;\n    })();\n\n    return mass;\n  })();\n\n  return market;\n})();\n\n$root.google = (function () {\n  /**\n   * Namespace google.\n   * @exports google\n   * @namespace\n   */\n  var google = {};\n\n  google.protobuf = (function () {\n    /**\n     * Namespace protobuf.\n     * @memberof google\n     * @namespace\n     */\n    var protobuf = {};\n\n    protobuf.Timestamp = (function () {\n      /**\n       * Properties of a Timestamp.\n       * @memberof google.protobuf\n       * @interface ITimestamp\n       * @property {number|Long|null} [seconds] Timestamp seconds\n       * @property {number|null} [nanos] Timestamp nanos\n       */\n\n      /**\n       * Constructs a new Timestamp.\n       * @memberof google.protobuf\n       * @classdesc Represents a Timestamp.\n       * @implements ITimestamp\n       * @constructor\n       * @param {google.protobuf.ITimestamp=} [properties] Properties to set\n       */\n      function Timestamp(properties) {\n        if (properties) {\n          for (\n            var keys = Object.keys(properties), i = 0;\n            i < keys.length;\n            ++i\n          ) {\n            if (properties[keys[i]] != null) {\n              this[keys[i]] = properties[keys[i]];\n            }\n          }\n        }\n      }\n\n      /**\n       * Timestamp seconds.\n       * @member {number|Long} seconds\n       * @memberof google.protobuf.Timestamp\n       * @instance\n       */\n      Timestamp.prototype.seconds = $util.Long\n        ? $util.Long.fromBits(0, 0, false)\n        : 0;\n\n      /**\n       * Timestamp nanos.\n       * @member {number} nanos\n       * @memberof google.protobuf.Timestamp\n       * @instance\n       */\n      Timestamp.prototype.nanos = 0;\n\n      /**\n       * Creates a new Timestamp instance using the specified properties.\n       * @function create\n       * @memberof google.protobuf.Timestamp\n       * @static\n       * @param {google.protobuf.ITimestamp=} [properties] Properties to set\n       * @returns {google.protobuf.Timestamp} Timestamp instance\n       */\n      Timestamp.create = function create(properties) {\n        return new Timestamp(properties);\n      };\n\n      /**\n       * Encodes the specified Timestamp message. Does not implicitly {@link google.protobuf.Timestamp.verify|verify} messages.\n       * @function encode\n       * @memberof google.protobuf.Timestamp\n       * @static\n       * @param {google.protobuf.ITimestamp} message Timestamp message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      Timestamp.encode = function encode(message, writer) {\n        if (!writer) {\n          writer = $Writer.create();\n        }\n        if (\n          message.seconds != null &&\n          Object.hasOwnProperty.call(message, \"seconds\")\n        ) {\n          writer.uint32(/* id 1, wireType 0 =*/ 8).int64(message.seconds);\n        }\n        if (\n          message.nanos != null && Object.hasOwnProperty.call(message, \"nanos\")\n        ) {\n          writer.uint32(/* id 2, wireType 0 =*/ 16).int32(message.nanos);\n        }\n        return writer;\n      };\n\n      /**\n       * Encodes the specified Timestamp message, length delimited. Does not implicitly {@link google.protobuf.Timestamp.verify|verify} messages.\n       * @function encodeDelimited\n       * @memberof google.protobuf.Timestamp\n       * @static\n       * @param {google.protobuf.ITimestamp} message Timestamp message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      Timestamp.encodeDelimited = function encodeDelimited(message, writer) {\n        return this.encode(message, writer).ldelim();\n      };\n\n      /**\n       * Decodes a Timestamp message from the specified reader or buffer.\n       * @function decode\n       * @memberof google.protobuf.Timestamp\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @param {number} [length] Message length if known beforehand\n       * @returns {google.protobuf.Timestamp} Timestamp\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      Timestamp.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader)) {\n          reader = $Reader.create(reader);\n        }\n        var end = length === undefined ? reader.len : reader.pos + length,\n          message = new $root.google.protobuf.Timestamp();\n        while (reader.pos < end) {\n          var tag = reader.uint32();\n          switch (tag >>> 3) {\n            case 1: {\n              message.seconds = reader.int64();\n              break;\n            }\n            case 2: {\n              message.nanos = reader.int32();\n              break;\n            }\n            default:\n              reader.skipType(tag & 7);\n              break;\n          }\n        }\n        return message;\n      };\n\n      /**\n       * Decodes a Timestamp message from the specified reader or buffer, length delimited.\n       * @function decodeDelimited\n       * @memberof google.protobuf.Timestamp\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @returns {google.protobuf.Timestamp} Timestamp\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      Timestamp.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader)) {\n          reader = new $Reader(reader);\n        }\n        return this.decode(reader, reader.uint32());\n      };\n\n      /**\n       * Verifies a Timestamp message.\n       * @function verify\n       * @memberof google.protobuf.Timestamp\n       * @static\n       * @param {Object.<string,*>} message Plain object to verify\n       * @returns {string|null} `null` if valid, otherwise the reason why it is not\n       */\n      Timestamp.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null) {\n          return \"object expected\";\n        }\n        if (message.seconds != null && message.hasOwnProperty(\"seconds\")) {\n          if (\n            !$util.isInteger(message.seconds) &&\n            !(message.seconds && $util.isInteger(message.seconds.low) &&\n              $util.isInteger(message.seconds.high))\n          ) {\n            return \"seconds: integer|Long expected\";\n          }\n        }\n        if (message.nanos != null && message.hasOwnProperty(\"nanos\")) {\n          if (!$util.isInteger(message.nanos)) {\n            return \"nanos: integer expected\";\n          }\n        }\n        return null;\n      };\n\n      /**\n       * Creates a Timestamp message from a plain object. Also converts values to their respective internal types.\n       * @function fromObject\n       * @memberof google.protobuf.Timestamp\n       * @static\n       * @param {Object.<string,*>} object Plain object\n       * @returns {google.protobuf.Timestamp} Timestamp\n       */\n      Timestamp.fromObject = function fromObject(object) {\n        if (object instanceof $root.google.protobuf.Timestamp) {\n          return object;\n        }\n        var message = new $root.google.protobuf.Timestamp();\n        if (object.seconds != null) {\n          if ($util.Long) {\n            (message.seconds = $util.Long.fromValue(object.seconds)).unsigned =\n              false;\n          } else if (typeof object.seconds === \"string\") {\n            message.seconds = parseInt(object.seconds, 10);\n          } else if (typeof object.seconds === \"number\") {\n            message.seconds = object.seconds;\n          } else if (typeof object.seconds === \"object\") {\n            message.seconds = new $util.LongBits(\n              object.seconds.low >>> 0,\n              object.seconds.high >>> 0,\n            ).toNumber();\n          }\n        }\n        if (object.nanos != null) {\n          message.nanos = object.nanos | 0;\n        }\n        return message;\n      };\n\n      /**\n       * Creates a plain object from a Timestamp message. Also converts values to other types if specified.\n       * @function toObject\n       * @memberof google.protobuf.Timestamp\n       * @static\n       * @param {google.protobuf.Timestamp} message Timestamp\n       * @param {$protobuf.IConversionOptions} [options] Conversion options\n       * @returns {Object.<string,*>} Plain object\n       */\n      Timestamp.toObject = function toObject(message, options) {\n        if (!options) {\n          options = {};\n        }\n        var object = {};\n        if (options.defaults) {\n          if ($util.Long) {\n            var long = new $util.Long(0, 0, false);\n            object.seconds = options.longs === String\n              ? long.toString()\n              : options.longs === Number\n              ? long.toNumber()\n              : long;\n          } else {\n            object.seconds = options.longs === String ? \"0\" : 0;\n          }\n          object.nanos = 0;\n        }\n        if (message.seconds != null && message.hasOwnProperty(\"seconds\")) {\n          if (typeof message.seconds === \"number\") {\n            object.seconds = options.longs === String\n              ? String(message.seconds)\n              : message.seconds;\n          } else {\n            object.seconds = options.longs === String\n              ? $util.Long.prototype.toString.call(message.seconds)\n              : options.longs === Number\n              ? new $util.LongBits(\n                message.seconds.low >>> 0,\n                message.seconds.high >>> 0,\n              ).toNumber()\n              : message.seconds;\n          }\n        }\n        if (message.nanos != null && message.hasOwnProperty(\"nanos\")) {\n          object.nanos = message.nanos;\n        }\n        return object;\n      };\n\n      /**\n       * Converts this Timestamp to JSON.\n       * @function toJSON\n       * @memberof google.protobuf.Timestamp\n       * @instance\n       * @returns {Object.<string,*>} JSON object\n       */\n      Timestamp.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n      };\n\n      /**\n       * Gets the default type url for Timestamp\n       * @function getTypeUrl\n       * @memberof google.protobuf.Timestamp\n       * @static\n       * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n       * @returns {string} The default type url\n       */\n      Timestamp.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n        if (typeUrlPrefix === undefined) {\n          typeUrlPrefix = \"type.googleapis.com\";\n        }\n        return typeUrlPrefix + \"/google.protobuf.Timestamp\";\n      };\n\n      return Timestamp;\n    })();\n\n    protobuf.Any = (function () {\n      /**\n       * Properties of an Any.\n       * @memberof google.protobuf\n       * @interface IAny\n       * @property {string|null} [type_url] Any type_url\n       * @property {Uint8Array|null} [value] Any value\n       */\n\n      /**\n       * Constructs a new Any.\n       * @memberof google.protobuf\n       * @classdesc Represents an Any.\n       * @implements IAny\n       * @constructor\n       * @param {google.protobuf.IAny=} [properties] Properties to set\n       */\n      function Any(properties) {\n        if (properties) {\n          for (\n            var keys = Object.keys(properties), i = 0;\n            i < keys.length;\n            ++i\n          ) {\n            if (properties[keys[i]] != null) {\n              this[keys[i]] = properties[keys[i]];\n            }\n          }\n        }\n      }\n\n      /**\n       * Any type_url.\n       * @member {string} type_url\n       * @memberof google.protobuf.Any\n       * @instance\n       */\n      Any.prototype.type_url = \"\";\n\n      /**\n       * Any value.\n       * @member {Uint8Array} value\n       * @memberof google.protobuf.Any\n       * @instance\n       */\n      Any.prototype.value = $util.newBuffer([]);\n\n      /**\n       * Creates a new Any instance using the specified properties.\n       * @function create\n       * @memberof google.protobuf.Any\n       * @static\n       * @param {google.protobuf.IAny=} [properties] Properties to set\n       * @returns {google.protobuf.Any} Any instance\n       */\n      Any.create = function create(properties) {\n        return new Any(properties);\n      };\n\n      /**\n       * Encodes the specified Any message. Does not implicitly {@link google.protobuf.Any.verify|verify} messages.\n       * @function encode\n       * @memberof google.protobuf.Any\n       * @static\n       * @param {google.protobuf.IAny} message Any message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      Any.encode = function encode(message, writer) {\n        if (!writer) {\n          writer = $Writer.create();\n        }\n        if (\n          message.type_url != null &&\n          Object.hasOwnProperty.call(message, \"type_url\")\n        ) {\n          writer.uint32(/* id 1, wireType 2 =*/ 10).string(message.type_url);\n        }\n        if (\n          message.value != null && Object.hasOwnProperty.call(message, \"value\")\n        ) {\n          writer.uint32(/* id 2, wireType 2 =*/ 18).bytes(message.value);\n        }\n        return writer;\n      };\n\n      /**\n       * Encodes the specified Any message, length delimited. Does not implicitly {@link google.protobuf.Any.verify|verify} messages.\n       * @function encodeDelimited\n       * @memberof google.protobuf.Any\n       * @static\n       * @param {google.protobuf.IAny} message Any message or plain object to encode\n       * @param {$protobuf.Writer} [writer] Writer to encode to\n       * @returns {$protobuf.Writer} Writer\n       */\n      Any.encodeDelimited = function encodeDelimited(message, writer) {\n        return this.encode(message, writer).ldelim();\n      };\n\n      /**\n       * Decodes an Any message from the specified reader or buffer.\n       * @function decode\n       * @memberof google.protobuf.Any\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @param {number} [length] Message length if known beforehand\n       * @returns {google.protobuf.Any} Any\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      Any.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader)) {\n          reader = $Reader.create(reader);\n        }\n        var end = length === undefined ? reader.len : reader.pos + length,\n          message = new $root.google.protobuf.Any();\n        while (reader.pos < end) {\n          var tag = reader.uint32();\n          switch (tag >>> 3) {\n            case 1: {\n              message.type_url = reader.string();\n              break;\n            }\n            case 2: {\n              message.value = reader.bytes();\n              break;\n            }\n            default:\n              reader.skipType(tag & 7);\n              break;\n          }\n        }\n        return message;\n      };\n\n      /**\n       * Decodes an Any message from the specified reader or buffer, length delimited.\n       * @function decodeDelimited\n       * @memberof google.protobuf.Any\n       * @static\n       * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n       * @returns {google.protobuf.Any} Any\n       * @throws {Error} If the payload is not a reader or valid buffer\n       * @throws {$protobuf.util.ProtocolError} If required fields are missing\n       */\n      Any.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader)) {\n          reader = new $Reader(reader);\n        }\n        return this.decode(reader, reader.uint32());\n      };\n\n      /**\n       * Verifies an Any message.\n       * @function verify\n       * @memberof google.protobuf.Any\n       * @static\n       * @param {Object.<string,*>} message Plain object to verify\n       * @returns {string|null} `null` if valid, otherwise the reason why it is not\n       */\n      Any.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null) {\n          return \"object expected\";\n        }\n        if (message.type_url != null && message.hasOwnProperty(\"type_url\")) {\n          if (!$util.isString(message.type_url)) {\n            return \"type_url: string expected\";\n          }\n        }\n        if (message.value != null && message.hasOwnProperty(\"value\")) {\n          if (\n            !(message.value && typeof message.value.length === \"number\" ||\n              $util.isString(message.value))\n          ) {\n            return \"value: buffer expected\";\n          }\n        }\n        return null;\n      };\n\n      /**\n       * Creates an Any message from a plain object. Also converts values to their respective internal types.\n       * @function fromObject\n       * @memberof google.protobuf.Any\n       * @static\n       * @param {Object.<string,*>} object Plain object\n       * @returns {google.protobuf.Any} Any\n       */\n      Any.fromObject = function fromObject(object) {\n        if (object instanceof $root.google.protobuf.Any) {\n          return object;\n        }\n        var message = new $root.google.protobuf.Any();\n        if (object.type_url != null) {\n          message.type_url = String(object.type_url);\n        }\n        if (object.value != null) {\n          if (typeof object.value === \"string\") {\n            $util.base64.decode(\n              object.value,\n              message.value = $util.newBuffer(\n                $util.base64.length(object.value),\n              ),\n              0,\n            );\n          } else if (object.value.length >= 0) {\n            message.value = object.value;\n          }\n        }\n        return message;\n      };\n\n      /**\n       * Creates a plain object from an Any message. Also converts values to other types if specified.\n       * @function toObject\n       * @memberof google.protobuf.Any\n       * @static\n       * @param {google.protobuf.Any} message Any\n       * @param {$protobuf.IConversionOptions} [options] Conversion options\n       * @returns {Object.<string,*>} Plain object\n       */\n      Any.toObject = function toObject(message, options) {\n        if (!options) {\n          options = {};\n        }\n        var object = {};\n        if (options.defaults) {\n          object.type_url = \"\";\n          if (options.bytes === String) {\n            object.value = \"\";\n          } else {\n            object.value = [];\n            if (options.bytes !== Array) {\n              object.value = $util.newBuffer(object.value);\n            }\n          }\n        }\n        if (message.type_url != null && message.hasOwnProperty(\"type_url\")) {\n          object.type_url = message.type_url;\n        }\n        if (message.value != null && message.hasOwnProperty(\"value\")) {\n          object.value = options.bytes === String\n            ? $util.base64.encode(message.value, 0, message.value.length)\n            : options.bytes === Array\n            ? Array.prototype.slice.call(message.value)\n            : message.value;\n        }\n        return object;\n      };\n\n      /**\n       * Converts this Any to JSON.\n       * @function toJSON\n       * @memberof google.protobuf.Any\n       * @instance\n       * @returns {Object.<string,*>} JSON object\n       */\n      Any.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n      };\n\n      /**\n       * Gets the default type url for Any\n       * @function getTypeUrl\n       * @memberof google.protobuf.Any\n       * @static\n       * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n       * @returns {string} The default type url\n       */\n      Any.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n        if (typeUrlPrefix === undefined) {\n          typeUrlPrefix = \"type.googleapis.com\";\n        }\n        return typeUrlPrefix + \"/google.protobuf.Any\";\n      };\n\n      return Any;\n    })();\n\n    return protobuf;\n  })();\n\n  return google;\n})();\n\nexport default $root;\n","// SPDX-FileCopyrightText: 2024 Mass Labs\n//\n// SPDX-License-Identifier: MIT\n// @ts-types=\"./compiled.d.ts\"\nimport pb from \"./compiled.js\";\nimport schema = pb.market.mass;\nimport google = pb.google;\n\nexport default schema;\nexport type { google };\n\nimport testVectors from \"./testVectors.json\" with { type: \"json\" };\nexport { testVectors };\n\n// a few concrete fields we need to handle in the client.\n// these are not generated from the proto files.\nexport const EnvelopMessageTypes = {\n  PingRequest: \"pingRequest\",\n  SubscriptionPushRequest: \"subscriptionPushRequest\",\n};\n","import type { RelayClient } from \"@massmarket/client\";\n\n/**\n * Define the Store Objects that are reified from the event stream\n */\n\nexport type IRelayClient = Pick<\n  RelayClient,\n  | \"encodeAndSendNoWait\"\n  | \"connect\"\n  | \"sendShopEvent\"\n  | \"createEventStream\"\n  | \"listing\"\n  | \"updateListing\"\n  | \"tag\"\n  | \"shopManifest\"\n  | \"updateShopManifest\"\n  | \"changeInventory\"\n  | \"createOrder\"\n  | \"updateOrder\"\n  | \"updateTag\"\n  | \"sendMerchantSubscriptionRequest\"\n  | \"sendGuestCheckoutSubscriptionRequest\"\n  | \"sendGuestSubscriptionRequest\"\n  | \"authenticate\"\n>;\nexport enum OrderState {\n  STATE_UNSPECIFIED = 0,\n  STATE_OPEN = 1,\n  STATE_CANCELED = 2,\n  STATE_COMMITED = 3,\n  STATE_PAYMENT_TX = 4,\n  STATE_PAID = 5,\n}\nexport enum ListingViewState {\n  LISTING_VIEW_STATE_UNSPECIFIED = 0,\n  LISTING_VIEW_STATE_PUBLISHED = 1,\n  LISTING_VIEW_STATE_DELETED = 2,\n}\nexport enum OrderEventTypes {\n  CANCELLED = \"orderCanceled\",\n  CHANGE_ITEMS = \"changeItems\",\n  INVOICE_ADDRESS = \"invoiceAddress\",\n  SHIPPING_ADDRESS = \"shippingAddress\",\n  COMMIT_ITEMS = \"commitItems\",\n  CHOOSE_PAYMENT = \"choosePayment\",\n  PAYMENT_DETAILS = \"paymentDetails\",\n  PAYMENT_TX = \"addPaymentTx\",\n}\nexport interface Metadata {\n  title: string;\n  description: string;\n  images: string[];\n}\nexport interface Listing {\n  id: `0x${string}`;\n  price: string;\n  metadata: Metadata;\n  tags: `0x${string}`[];\n  quantity: number;\n  viewState: ListingViewState;\n}\n\nexport interface Tag {\n  id: `0x${string}`;\n  name: string;\n}\n\nexport interface IError {\n  notFound: boolean;\n  code: string;\n}\nexport type OrdersByStatus = `0x${string}`[];\nexport type KeyCard = `0x${string}`[];\nexport interface ShippingDetails {\n  name: string;\n  address1: string;\n  city: string;\n  postalCode: string;\n  country: string;\n  phoneNumber: string;\n  emailAddress: string;\n}\n\nexport interface ChoosePayment {\n  currency: {\n    chainId: number;\n    address: `0x${string}`;\n  };\n  payee: {\n    name: string;\n    address: `0x${string}`;\n    chainId: number;\n  };\n}\n\nexport interface PaymentDetails {\n  paymentId: string;\n  total: string;\n  shopSignature: `0x${string}`;\n  ttl: string;\n}\nexport interface Order {\n  id: `0x${string}`;\n  //key: listingId; value: selected quantity\n  items: { [key: `0x${string}`]: number };\n  status: OrderState;\n  shippingDetails?: ShippingDetails;\n  invoiceAddress?: ShippingDetails;\n  txHash?: string;\n  blockHash?: string;\n  choosePayment?: ChoosePayment;\n  paymentDetails?: PaymentDetails;\n  timestamp?: number;\n}\nexport interface ShopCurrencies {\n  address: `0x${string}`;\n  chainId: number;\n}\nexport interface ShippingRegion {\n  name: string;\n  country: string;\n  postalCode: string;\n  city: string;\n  orderPriceModifiers: OrderPriceModifier[];\n}\nexport interface OrderPriceModifier {\n  title: string;\n  percentage?: `0x${string}`;\n  absolute?: {\n    plusSign: boolean;\n    diff: `0x${string}`;\n  };\n}\n//This interface is only for create manifest.\nexport interface CreateShopManifest {\n  pricingCurrency?: {\n    address: `0x${string}`;\n    chainId: number;\n  };\n  acceptedCurrencies: ShopCurrencies[];\n  payees: Payee[];\n  shippingRegions: ShippingRegion[];\n}\nexport interface Payee {\n  address: `0x${string}`;\n  callAsContract: boolean;\n  chainId: number;\n  name: string;\n}\n//This type is used to store and retrieve the manifest from db. All the fields are required in this case.\nexport type ShopManifest = CreateShopManifest & {\n  tokenId: `0x${string}` | null;\n};\n\n//These UpdateShopManifest properties are only for updating the manifest and not properties on the store state.\n//i.e. payees in type ShopManifest stores the actual state, while these update properties are for the update client request.\nexport interface UpdateShopManifest {\n  addPayee?: Payee;\n  removePayee?: Payee;\n  addAcceptedCurrencies?: ShopCurrencies[];\n  removeAcceptedCurrencies?: ShopCurrencies[];\n  setPricingCurrency?: ShopCurrencies | null;\n  addShippingRegions?: ShippingRegion[];\n  removeShippingRegions?: string[];\n}\nexport type SeqNo = number;\nexport type ShopObjectTypes =\n  | Listing\n  | Tag\n  | KeyCard\n  | Order\n  | OrdersByStatus\n  | ShopManifest\n  | SeqNo;\n","// SPDX-FileCopyrightText: 2024 Mass Labs\n//\n// SPDX-License-Identifier: MIT\n\nimport { Buffer } from \"buffer\";\nimport {\n  bytesToHex,\n  formatUnits,\n  hexToBytes,\n  numberToBytes,\n  pad,\n  parseUnits,\n  toBytes,\n} from \"viem\";\nimport * as Sentry from \"@sentry/nextjs\";\n\n// TODO: type case first argument to captureException\n// TODO: add extras arguments (https://docs.sentry.io/platforms/javascript/guides/nextjs/enriching-events/)\nexport function logger(\n  namespace: string,\n  level: \"debug\" | \"info\" | \"warn\" | \"error\" = \"debug\",\n) {\n  return (message: string, error?: Error) => {\n    // Sentry handling\n    // ===============\n    if (level === \"debug\") {\n      // https://docs.sentry.io/platforms/javascript/guides/nextjs/enriching-events/breadcrumbs/\n      // > Sentry uses breadcrumbs to create a trail of events that happened prior to an issue. These events are very similar to traditional logs, but can record more rich structured data.\n      Sentry.addBreadcrumb({\n        level: level as Sentry.SeverityLevel,\n        category: namespace,\n        message,\n      });\n    } else { // everything but debug get's reported directly\n      if (error) { // if we have an error, we capture that and add the message and namespace as extras\n        Sentry.captureException(error, {\n          extra: {\n            message,\n            namespace,\n          },\n        });\n      } else { // if we don't have an error, we just capture the message\n        Sentry.captureMessage(message, {\n          level: level as Sentry.SeverityLevel,\n          extra: {\n            namespace,\n          },\n        });\n      }\n    }\n    // standard console logging\n    // ========================\n    const stmt = `[${namespace}] ${message}`;\n    let fn = console.debug;\n    switch (level) {\n      case \"debug\":\n        fn = console.debug;\n        break;\n      case \"info\":\n        fn = console.info;\n        break;\n      case \"warn\":\n        fn = console.warn;\n        break;\n      case \"error\":\n        fn = console.error;\n        break;\n      default:\n        fn = console.log;\n    }\n    const args: [string, Error?] = [stmt];\n    if (error) {\n      args.push(error);\n    }\n    fn.call(console, ...args);\n  };\n}\n\n// Type predicate to narrow undefined | null | T to T\nfunction isDefined<T>(value: T | undefined | null): value is T {\n  return value !== undefined && value !== null;\n}\n\n// Custom assert function for protobuf optional fields\nexport function assert(value: unknown, message: string): asserts value {\n  if (!isDefined(value)) {\n    throw new Error(message);\n  }\n}\n\n// For nested optional fields, you can create a more specific version\nexport function assertField<T>(\n  value: { raw?: T | null } | undefined | null,\n  fieldName: string,\n): asserts value is { raw: T } {\n  if (!isDefined(value) || !isDefined(value.raw)) {\n    throw new Error(`${fieldName} is required`);\n  }\n}\n\nexport function objectId() {\n  return randomBytes(8);\n}\n\nexport function randomBytes(n: number) {\n  const b = new Uint8Array(n);\n  crypto.getRandomValues(b);\n  return b;\n}\n\n// Pad a value to 32 bytes, useful for uint256\nexport function pad32Bytes(value: Uint8Array) {\n  // return padBytes(value, 32, false);\n  return pad(value, { dir: \"right\", size: 32 });\n}\n\nexport function padUint256(value: bigint) {\n  return numberToBytes(value, { size: 32 });\n}\n\nexport function random32BytesHex() {\n  return bytesToHex(randomBytes(32));\n}\n\nexport function randomAddress() {\n  return bytesToHex(randomBytes(20));\n}\n\nexport function hexToBase64(hex: string) {\n  const u8 = new Uint8Array(toBytes(hex));\n  return Buffer.from(u8).toString(\"base64\");\n}\n\nexport function bufferToJSON(metadata: Uint8Array) {\n  return JSON.parse(new TextDecoder().decode(metadata));\n}\n\n//This is used to get the string value from an array buffer\nexport function decodeBufferToString(buffer: Uint8Array) {\n  const textDecoder = new TextDecoder();\n  return textDecoder.decode(buffer);\n}\n\nexport function priceToUint256(priceString: string, decimals = 18) {\n  // Parse the price string to a bigint\n  const priceInSmallestUnit = parseUnits(priceString, decimals);\n  // Convert bigint to 32 byte directly\n  return numberToBytes(priceInSmallestUnit, { size: 32 });\n}\n\n//Since we are currently storing price as a string, convert string to bigint, then calculate the decimal point.\nexport function formatUnitsFromString(price: string, decimal: number) {\n  return formatUnits(BigInt(price), decimal);\n}\n\ninterface AdressObj {\n  address: `0x${string}`;\n  chainId: number;\n  callAsContract?: boolean;\n  name?: string;\n}\n\n// TODO: what does this do?\nexport function addressToUint256(addressObject: AdressObj) {\n  return {\n    ...addressObject,\n    address: { raw: hexToBytes(addressObject.address) },\n  };\n}\n\nexport function addressesToUint256(addressObject: AdressObj[]) {\n  if (!Array.isArray(addressObject)) {\n    throw new Error(\"addressesToUint256 expects an array of AdressObj\");\n  }\n  return addressObject.map((c) => {\n    return {\n      ...c,\n      address: { raw: hexToBytes(c.address) },\n    };\n  });\n}\n\nexport const zeroAddress: `0x${string}` =\n  \"0x0000000000000000000000000000000000000000\";\nexport const anvilPrivateKey =\n  \"0x2a871d0798f97d79848a013d4936a73bf4cc922c825d33c1cf7073dff6d409c6\";\nexport const anvilPrivateKey2 =\n  \"0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80\";\nexport const anvilAddress = \"0xa0Ee7A142d267C1f36714E4a8F75612F20a79720\";\n"],"names":["AuthContext","createContext","clientConnected","Status","Pending","setIsConnected","isMerchantView","setIsMerchantView","AuthProvider","useState","react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__","jsx","Provider","value","data-sentry-element","data-sentry-component","data-sentry-source-file","props","children","useClient","useContext","UserContext","walletAddress","avatar","ensName","clientWallet","shopPublicClient","inviteSecret","shopId","relayEndpoint","clientWithStateManager","setWallet","setInviteSecret","setShopId","checkPermissions","Promise","upgradeGuestToCustomer","setClientStateManager","debug","logger","UserContextProvider","useEnsAvatar","pathname","usePathname","data","_wallet","status","walletStatus","useWalletClient","searchParams","useSearchParams","setWalletAddress","setAvatar","setEnsName","merchantKC","setmerchantKC","guestCheckoutKC","setGuestKC","setRelayEndpoint","authenticated","useRef","ensAvatar","name","isMerchantPath","includes","getUsedChain","chainName","process","hardhat","sepolia","mainnet","concat","useEffect","re","url","URL","tokenId","discoverRelay","then","discovered","localStorage","removeItem","_shopId","get","getItem","setItem","mKC","gKC","createPublicClientForChain","readContract","address","abi","ShopReg","functionName","args","updateRootHash","guestWallet","createGuestWalletClientForChain","keyCard","res","relayClient","enrollKeycard","globalThis","location","href","ok","error","cancelSubscriptionRequest","response","authenticate","sendGuestCheckoutSubscriptionRequest","Complete","account","current","clientStateManager","ClientWithStateManager","setClientAndConnect","sendMerchantSubscriptionRequest","sendGuestSubscriptionRequest","useUserContext","ReadableEventStream","enqueue","pushReq","queue","push","resolve","nextPushReq","constructor","client","parent","stream","ReadableStream","start","_controller","pull","controller","shift","requestId","anyEvt","events","assert","event","seqNo","Long","fromNumber","Number","MAX_SAFE_INTEGER","shopSeqNo","signature","assertField","schema","ShopEvent","decode","signer","recoverMessageAddress","message","raw","SequencedEventWithRecoveredSigner","encodeAndSendNoWait","eventIdEqual","a","b","nonce","id","_decodeMessage","WeakSet","_handlePingRequest","RelayClient","EventEmitter","createEventStream","eventStream","envelope","requestCounter","err","Envelope","verify","payload","encode","finish","connection","send","requestType","Object","keys","filter","k","RequestId","create","encodeAndSend","reject","once","toString","code","sendShopEvent","shopEvent","connect","eventNonceCounter","timestamp","seconds","Date","now","shopEventBytes","sig","keyCardWallet","signMessage","signedEvent","hexToBytes","type_url","eventWriteRequest","counter","shopManifest","manifest","updateShopManifest","update","updateManifest","listing","item","updateListing","tag","updateTag","createOrder","order","updateOrder","changeInventory","stock","subscriptionId","filters","objectType","ObjectType","OBJECT_TYPE_LISTING","OBJECT_TYPE_TAG","OBJECT_TYPE_ORDER","OBJECT_TYPE_ACCOUNT","OBJECT_TYPE_MANIFEST","OBJECT_TYPE_INVENTORY","subscriptionRequest","startShopSeqNo","subscriptionCancelRequest","authRequest","publicKey","toBytes","slice","challengeSolutionRequest","readyState","WebSocket","CLOSING","CLOSED","addEventListener","console","_class_private_method_get","_","decodeMessage","bind","OPEN","evt","disconnect","close","wallet","isGuest","endpointURL","protocol","useTLS","search","signInURL","createSiweMessage","chainId","domain","host","uri","version","resources","hexToBigInt","Buffer","from","body","JSON","stringify","hexToBase64","fetch","method","uploadBlob","blob","getBlobUploadUrlRequest","decodeBufferToString","uploadResp","statusText","json","_class_private_method_init","me","_data","Blob","Response","arrayBuffer","Uint8Array","EnvelopMessageTypes","PingRequest","handlePingRequest","SubscriptionPushRequest","subscriptionPushRequest","map","SequencedEvent","length","emit","ping","discoveryURL","replace","testingResponse","testingData","relay_token_id","permissions","addPermission","removePermission","addRelay","removeRelay","replaceRelay","registerUser","removeUser","publishInviteVerifier","zeroAddress","eventListenAndResolve","waitingForId","em","eventName","on","onUpdate","updatedId","removeListener","storeOrdersByStatus","orderId","store","orders","e","notFound","put","PublicObjectManager","iterator","ListingManager","_processEvent","seqEvt","cl","ul","price","metadata","bytesToHex","title","description","images","viewState","l","fromBytes","tags","quantity","values","ListingViewState","cs","diff","lId","ut","tagId","addListingIds","lIds","all","iid","removeListingIds","decimals","objectId","priceToUint256","ui","undefined","addListingToTag","removeListingFromTag","key","ShopManifestManager","sm","acceptedCurrencies","payees","shippingRegions","pricingCurrency","p","callAsContract","sr","orderPriceModifiers","country","postalCode","city","pm","m","percentage","absolute","plusSign","um","setPricingCurrency","addAcceptedCurrencies","currencies","forEach","removeAcceptedCurrencies","filtered","rm","cur","idx","addPayee","removePayee","ur","wantAddr","toLowerCase","addShippingRegions","Manifest","addressToUint256","addressesToUint256","priceMod","addSeqNo","no","getSeqNo","OrderManager","co","o","items","OrderState","STATE_OPEN","cp","uo","changeItems","ci","adds","orderl","listingId","currentQuantity","removes","cancel","currentState","STATE_CANCELED","oId","setInvoiceAddress","sd","invoiceAddress","address1","phoneNumber","emailAddress","setShippingAddress","shippingDetails","commitItems","STATE_COMMITED","choosePayment","currency","payee","setPaymentDetails","pd","paymentId","total","shopSignature","ttl","paymentDetails","toHex","padUint256","bytesToBigInt","addPaymentTx","blockHash","STATE_PAYMENT_TX","txHash","getStatus","addItems","ls","i","removeItems","updateShippingDetails","updateInvoiceAddress","payment","commit","TagManager","ct","rename","KeyCardManager","keycardPubkey","addressFromPubKey","Address","fromPublicKey","addAddress","publicKeys","KeycardNonceManager","StateManager","addRelaysToKeycards","count","publicClient","ownerAdd","RelayReg","keycards","eventStreamProcessing","storeObjects","listings","keycardNonce","storeObject","listingStore","tagStore","shopManifestStore","orderStore","keycardStore","keycardNonceStore","namespace","logerr","createStateManager","dbName","encOption","valueEncoding","db","BrowserLevel","sublevel","stateManager","catch","window","createNewRelayClient","_this_relayEndpoint","_this_relayEndpoint1","random32BytesHex","privateKeyToAccount","kc","createQueryString","params","URLSearchParams","set","isValidHex","Boolean","hex","match","defaultRPC","env","NEXT_PUBLIC_ETH_RPC_URL","chain","createPublicClient","transport","http","createWalletClient","getTokenInformation","tokenAddress","getTokenAddress","symbol","addresses","RelayStatus","Role","SortOption","CheckoutStep","market","mass","valuesById","google","protobuf","$Reader","$protobuf","$Writer","$util","$root","AuthenticateRequest","properties","prototype","writer","hasOwnProperty","call","PublicKey","uint32","fork","ldelim","encodeDelimited","reader","end","len","pos","skipType","decodeDelimited","fromObject","object","TypeError","toObject","options","defaults","toJSON","toJSONOptions","getTypeUrl","typeUrlPrefix","ChallengeSolvedRequest","Signature","fromBits","sint64","isInteger","low","high","fromValue","unsigned","parseInt","LongBits","toNumber","long","longs","String","ObjectId","newBuffer","bytes","isString","base64","Array","Hash","EthereumAddress","IPFSAddress","cid","string","Uint256","ShopCurrency","uint64","Payee","bool","ShippingRegion","emptyArray","OrderPriceModifier","isArray","arrays","j","$oneOfFields","defineProperty","oneOfGetter","oneOfSetter","PlusMinus","modification","oneofs","ListingMetadata","ListingOption","variations","ListingVariation","variationInfo","ListingStockStatus","variationIds","inStock","expectedInStockBy","Timestamp","AddressDetails","address2","_phoneNumber","PaymentDetails","listingHashes","shippingRegion","OrderTransaction","OrderedItem","syncStatusRequest","pingRequest","GenericResponse","EventWriteRequest","SubscriptionRequest","SubscriptionCancelRequest","SyncStatusRequest","GetBlobUploadURLRequest","Error","int32","enums","ErrorCodes","Filter","_objectId","SignedEvent","Any","unpushedEvents","UpdateManifest","removeShippingRegions","_addPayee","_removePayee","_setPricingCurrency","Account","add","remove","revokeKeycard","OnchainAction","KeyCardEnroll","action","accountAddress","tx","userWallet","Listing","stockStatuses","UpdateListing","addOptions","removeOptionIds","addVariations","removeVariationIds","stockUpdates","AddVariation","_price","_metadata","_viewState","optionId","variation","ChangeInventory","sint32","Tag","listingIds","deleted","UpdateTag","_rename","_delete","CreateOrder","UpdateOrder","setShippingStatus","Cancel","ChangeItems","CommitItems","ChoosePaymentMethod","union","Order","paymentTransactions","shippingStatus","canceledAt","commitedAt","shippingAddress","addressUpdatedAt","chosenPayee","chosenCurrency","paymentDetailsCreatedAt","_canceledAt","_commitedAt","_invoiceAddress","_shippingAddress","_addressUpdatedAt","_chosenPayee","_chosenCurrency","_paymentDetails","_paymentDetailsCreatedAt","nanos","int64","mod","compiled","OrderEventTypes","level","Sentry","category","extra","stmt","fn","info","warn","log","fieldName","randomBytes","n","crypto","getRandomValues","numberToBytes","size","u8","buffer","textDecoder","TextDecoder","priceString","priceInSmallestUnit","parseUnits","formatUnitsFromString","decimal","formatUnits","BigInt","addressObject","c"],"sourceRoot":""}