/*eslint-disable block-scoped-var, id-length, no-control-regex, no-magic-numbers, no-prototype-builtins, no-redeclare, no-shadow, no-var, sort-vars*/
"use strict";

var $protobuf = require("protobufjs/minimal");

// Common aliases
var $Reader = $protobuf.Reader, $Writer = $protobuf.Writer, $util = $protobuf.util;

// Exported root namespace
var $root = $protobuf.roots["default"] || ($protobuf.roots["default"] = {});

$root.market = (function() {

    /**
     * Namespace market.
     * @exports market
     * @namespace
     */
    var market = {};

    market.v2 = (function() {

        /**
         * Namespace v2.
         * @memberof market
         * @namespace
         */
        var v2 = {};

        v2.trade = (function() {

            /**
             * Namespace trade.
             * @memberof market.v2
             * @namespace
             */
            var trade = {};

            trade.Response = (function() {

                /**
                 * Properties of a Response.
                 * @memberof market.v2.trade
                 * @interface IResponse
                 * @property {number|null} [code] Response code
                 * @property {string|null} [msg] Response msg
                 * @property {string|null} [status] Response status
                 * @property {number|Long|null} [ts] Response ts
                 * @property {string|null} [ch] Response ch
                 * @property {market.v2.trade.IKlineList|null} [klinelist] Response klinelist
                 * @property {market.v2.trade.ITradeDepthVO|null} [tradedepthvo] Response tradedepthvo
                 * @property {market.v2.trade.ITradeDetailList|null} [tradedetaillist] Response tradedetaillist
                 * @property {market.v2.trade.ITradeAreaPair|null} [tradeareapair] Response tradeareapair
                 * @property {market.v2.trade.IMainPair|null} [mainpair] Response mainpair
                 * @property {market.v2.trade.IRecommendPair|null} [recommendpair] Response recommendpair
                 * @property {market.v2.trade.IUpPair|null} [uppair] Response uppair
                 * @property {market.v2.trade.IAmtPair|null} [amtpair] Response amtpair
                 * @property {market.v2.trade.IStarPair|null} [starpair] Response starpair
                 * @property {market.v2.trade.ITradeTickerVO|null} [tradetickervo] Response tradetickervo
                 * @property {market.v2.trade.IEntrustVO|null} [entrustvo] Response entrustvo
                 * @property {market.v2.trade.IUserAssetBalance|null} [userassetbalance] Response userassetbalance
                 * @property {market.v2.trade.IMarketTickerList|null} [markettickerlist] Response markettickerlist
                 * @property {market.v2.trade.IMarginCrossAssetVO|null} [margincrossassetvo] Response margincrossassetvo
                 * @property {market.v2.trade.IMarginIsolatedAssetVO|null} [marginisolatedassetvo] Response marginisolatedassetvo
                 * @property {market.v2.trade.INewListingPair|null} [newlistingpair] Response newlistingpair
                 * @property {market.v2.trade.IChgdistributions|null} [chgdistributions] Response chgdistributions
                 * @property {market.v2.trade.IMarketZones|null} [marketzones] Response marketzones
                 * @property {market.v2.trade.IKlineOrders|null} [klineorders] Response klineorders
                 * @property {market.v2.trade.INotificationPush|null} [notificationpush] Response notificationpush
                 * @property {market.v2.trade.ITradeHotListing|null} [tradehotlisting] Response tradehotlisting
                 * @property {market.v2.trade.ICtcGoingOrderNum|null} [ctcgoingordernum] Response ctcgoingordernum
                 * @property {market.v2.trade.IMultiChange|null} [multichange] Response multichange
                 * @property {market.v2.trade.IHeatmap|null} [heatmap] Response heatmap
                 * @property {market.v2.trade.IDownPair|null} [downpair] Response downpair
                 * @property {market.v2.trade.IHeatVol|null} [heatvol] Response heatvol
                 * @property {market.v2.trade.ICurrencyRate|null} [currencyrate] Response currencyrate
                 * @property {market.v2.trade.IMarketMonit|null} [marketmonit] Response marketmonit
                 */

                /**
                 * Constructs a new Response.
                 * @memberof market.v2.trade
                 * @classdesc Represents a Response.
                 * @implements IResponse
                 * @constructor
                 * @param {market.v2.trade.IResponse=} [properties] Properties to set
                 */
                function Response(properties) {
                    if (properties)
                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                            if (properties[keys[i]] != null)
                                this[keys[i]] = properties[keys[i]];
                }

                /**
                 * Response code.
                 * @member {number} code
                 * @memberof market.v2.trade.Response
                 * @instance
                 */
                Response.prototype.code = 0;

                /**
                 * Response msg.
                 * @member {string} msg
                 * @memberof market.v2.trade.Response
                 * @instance
                 */
                Response.prototype.msg = "";

                /**
                 * Response status.
                 * @member {string} status
                 * @memberof market.v2.trade.Response
                 * @instance
                 */
                Response.prototype.status = "";

                /**
                 * Response ts.
                 * @member {number|Long} ts
                 * @memberof market.v2.trade.Response
                 * @instance
                 */
                Response.prototype.ts = $util.Long ? $util.Long.fromBits(0,0,false) : 0;

                /**
                 * Response ch.
                 * @member {string} ch
                 * @memberof market.v2.trade.Response
                 * @instance
                 */
                Response.prototype.ch = "";

                /**
                 * Response klinelist.
                 * @member {market.v2.trade.IKlineList|null|undefined} klinelist
                 * @memberof market.v2.trade.Response
                 * @instance
                 */
                Response.prototype.klinelist = null;

                /**
                 * Response tradedepthvo.
                 * @member {market.v2.trade.ITradeDepthVO|null|undefined} tradedepthvo
                 * @memberof market.v2.trade.Response
                 * @instance
                 */
                Response.prototype.tradedepthvo = null;

                /**
                 * Response tradedetaillist.
                 * @member {market.v2.trade.ITradeDetailList|null|undefined} tradedetaillist
                 * @memberof market.v2.trade.Response
                 * @instance
                 */
                Response.prototype.tradedetaillist = null;

                /**
                 * Response tradeareapair.
                 * @member {market.v2.trade.ITradeAreaPair|null|undefined} tradeareapair
                 * @memberof market.v2.trade.Response
                 * @instance
                 */
                Response.prototype.tradeareapair = null;

                /**
                 * Response mainpair.
                 * @member {market.v2.trade.IMainPair|null|undefined} mainpair
                 * @memberof market.v2.trade.Response
                 * @instance
                 */
                Response.prototype.mainpair = null;

                /**
                 * Response recommendpair.
                 * @member {market.v2.trade.IRecommendPair|null|undefined} recommendpair
                 * @memberof market.v2.trade.Response
                 * @instance
                 */
                Response.prototype.recommendpair = null;

                /**
                 * Response uppair.
                 * @member {market.v2.trade.IUpPair|null|undefined} uppair
                 * @memberof market.v2.trade.Response
                 * @instance
                 */
                Response.prototype.uppair = null;

                /**
                 * Response amtpair.
                 * @member {market.v2.trade.IAmtPair|null|undefined} amtpair
                 * @memberof market.v2.trade.Response
                 * @instance
                 */
                Response.prototype.amtpair = null;

                /**
                 * Response starpair.
                 * @member {market.v2.trade.IStarPair|null|undefined} starpair
                 * @memberof market.v2.trade.Response
                 * @instance
                 */
                Response.prototype.starpair = null;

                /**
                 * Response tradetickervo.
                 * @member {market.v2.trade.ITradeTickerVO|null|undefined} tradetickervo
                 * @memberof market.v2.trade.Response
                 * @instance
                 */
                Response.prototype.tradetickervo = null;

                /**
                 * Response entrustvo.
                 * @member {market.v2.trade.IEntrustVO|null|undefined} entrustvo
                 * @memberof market.v2.trade.Response
                 * @instance
                 */
                Response.prototype.entrustvo = null;

                /**
                 * Response userassetbalance.
                 * @member {market.v2.trade.IUserAssetBalance|null|undefined} userassetbalance
                 * @memberof market.v2.trade.Response
                 * @instance
                 */
                Response.prototype.userassetbalance = null;

                /**
                 * Response markettickerlist.
                 * @member {market.v2.trade.IMarketTickerList|null|undefined} markettickerlist
                 * @memberof market.v2.trade.Response
                 * @instance
                 */
                Response.prototype.markettickerlist = null;

                /**
                 * Response margincrossassetvo.
                 * @member {market.v2.trade.IMarginCrossAssetVO|null|undefined} margincrossassetvo
                 * @memberof market.v2.trade.Response
                 * @instance
                 */
                Response.prototype.margincrossassetvo = null;

                /**
                 * Response marginisolatedassetvo.
                 * @member {market.v2.trade.IMarginIsolatedAssetVO|null|undefined} marginisolatedassetvo
                 * @memberof market.v2.trade.Response
                 * @instance
                 */
                Response.prototype.marginisolatedassetvo = null;

                /**
                 * Response newlistingpair.
                 * @member {market.v2.trade.INewListingPair|null|undefined} newlistingpair
                 * @memberof market.v2.trade.Response
                 * @instance
                 */
                Response.prototype.newlistingpair = null;

                /**
                 * Response chgdistributions.
                 * @member {market.v2.trade.IChgdistributions|null|undefined} chgdistributions
                 * @memberof market.v2.trade.Response
                 * @instance
                 */
                Response.prototype.chgdistributions = null;

                /**
                 * Response marketzones.
                 * @member {market.v2.trade.IMarketZones|null|undefined} marketzones
                 * @memberof market.v2.trade.Response
                 * @instance
                 */
                Response.prototype.marketzones = null;

                /**
                 * Response klineorders.
                 * @member {market.v2.trade.IKlineOrders|null|undefined} klineorders
                 * @memberof market.v2.trade.Response
                 * @instance
                 */
                Response.prototype.klineorders = null;

                /**
                 * Response notificationpush.
                 * @member {market.v2.trade.INotificationPush|null|undefined} notificationpush
                 * @memberof market.v2.trade.Response
                 * @instance
                 */
                Response.prototype.notificationpush = null;

                /**
                 * Response tradehotlisting.
                 * @member {market.v2.trade.ITradeHotListing|null|undefined} tradehotlisting
                 * @memberof market.v2.trade.Response
                 * @instance
                 */
                Response.prototype.tradehotlisting = null;

                /**
                 * Response ctcgoingordernum.
                 * @member {market.v2.trade.ICtcGoingOrderNum|null|undefined} ctcgoingordernum
                 * @memberof market.v2.trade.Response
                 * @instance
                 */
                Response.prototype.ctcgoingordernum = null;

                /**
                 * Response multichange.
                 * @member {market.v2.trade.IMultiChange|null|undefined} multichange
                 * @memberof market.v2.trade.Response
                 * @instance
                 */
                Response.prototype.multichange = null;

                /**
                 * Response heatmap.
                 * @member {market.v2.trade.IHeatmap|null|undefined} heatmap
                 * @memberof market.v2.trade.Response
                 * @instance
                 */
                Response.prototype.heatmap = null;

                /**
                 * Response downpair.
                 * @member {market.v2.trade.IDownPair|null|undefined} downpair
                 * @memberof market.v2.trade.Response
                 * @instance
                 */
                Response.prototype.downpair = null;

                /**
                 * Response heatvol.
                 * @member {market.v2.trade.IHeatVol|null|undefined} heatvol
                 * @memberof market.v2.trade.Response
                 * @instance
                 */
                Response.prototype.heatvol = null;

                /**
                 * Response currencyrate.
                 * @member {market.v2.trade.ICurrencyRate|null|undefined} currencyrate
                 * @memberof market.v2.trade.Response
                 * @instance
                 */
                Response.prototype.currencyrate = null;

                /**
                 * Response marketmonit.
                 * @member {market.v2.trade.IMarketMonit|null|undefined} marketmonit
                 * @memberof market.v2.trade.Response
                 * @instance
                 */
                Response.prototype.marketmonit = null;

                /**
                 * Creates a new Response instance using the specified properties.
                 * @function create
                 * @memberof market.v2.trade.Response
                 * @static
                 * @param {market.v2.trade.IResponse=} [properties] Properties to set
                 * @returns {market.v2.trade.Response} Response instance
                 */
                Response.create = function create(properties) {
                    return new Response(properties);
                };

                /**
                 * Encodes the specified Response message. Does not implicitly {@link market.v2.trade.Response.verify|verify} messages.
                 * @function encode
                 * @memberof market.v2.trade.Response
                 * @static
                 * @param {market.v2.trade.IResponse} message Response message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                Response.encode = function encode(message, writer) {
                    if (!writer)
                        writer = $Writer.create();
                    if (message.code != null && Object.hasOwnProperty.call(message, "code"))
                        writer.uint32(/* id 1, wireType 0 =*/8).int32(message.code);
                    if (message.msg != null && Object.hasOwnProperty.call(message, "msg"))
                        writer.uint32(/* id 2, wireType 2 =*/18).string(message.msg);
                    if (message.status != null && Object.hasOwnProperty.call(message, "status"))
                        writer.uint32(/* id 3, wireType 2 =*/26).string(message.status);
                    if (message.ts != null && Object.hasOwnProperty.call(message, "ts"))
                        writer.uint32(/* id 4, wireType 0 =*/32).int64(message.ts);
                    if (message.ch != null && Object.hasOwnProperty.call(message, "ch"))
                        writer.uint32(/* id 5, wireType 2 =*/42).string(message.ch);
                    if (message.klinelist != null && Object.hasOwnProperty.call(message, "klinelist"))
                        $root.market.v2.trade.KlineList.encode(message.klinelist, writer.uint32(/* id 21, wireType 2 =*/170).fork()).ldelim();
                    if (message.tradedepthvo != null && Object.hasOwnProperty.call(message, "tradedepthvo"))
                        $root.market.v2.trade.TradeDepthVO.encode(message.tradedepthvo, writer.uint32(/* id 22, wireType 2 =*/178).fork()).ldelim();
                    if (message.tradedetaillist != null && Object.hasOwnProperty.call(message, "tradedetaillist"))
                        $root.market.v2.trade.TradeDetailList.encode(message.tradedetaillist, writer.uint32(/* id 23, wireType 2 =*/186).fork()).ldelim();
                    if (message.tradeareapair != null && Object.hasOwnProperty.call(message, "tradeareapair"))
                        $root.market.v2.trade.TradeAreaPair.encode(message.tradeareapair, writer.uint32(/* id 24, wireType 2 =*/194).fork()).ldelim();
                    if (message.mainpair != null && Object.hasOwnProperty.call(message, "mainpair"))
                        $root.market.v2.trade.MainPair.encode(message.mainpair, writer.uint32(/* id 25, wireType 2 =*/202).fork()).ldelim();
                    if (message.recommendpair != null && Object.hasOwnProperty.call(message, "recommendpair"))
                        $root.market.v2.trade.RecommendPair.encode(message.recommendpair, writer.uint32(/* id 26, wireType 2 =*/210).fork()).ldelim();
                    if (message.uppair != null && Object.hasOwnProperty.call(message, "uppair"))
                        $root.market.v2.trade.UpPair.encode(message.uppair, writer.uint32(/* id 27, wireType 2 =*/218).fork()).ldelim();
                    if (message.amtpair != null && Object.hasOwnProperty.call(message, "amtpair"))
                        $root.market.v2.trade.AmtPair.encode(message.amtpair, writer.uint32(/* id 28, wireType 2 =*/226).fork()).ldelim();
                    if (message.starpair != null && Object.hasOwnProperty.call(message, "starpair"))
                        $root.market.v2.trade.StarPair.encode(message.starpair, writer.uint32(/* id 29, wireType 2 =*/234).fork()).ldelim();
                    if (message.tradetickervo != null && Object.hasOwnProperty.call(message, "tradetickervo"))
                        $root.market.v2.trade.TradeTickerVO.encode(message.tradetickervo, writer.uint32(/* id 30, wireType 2 =*/242).fork()).ldelim();
                    if (message.entrustvo != null && Object.hasOwnProperty.call(message, "entrustvo"))
                        $root.market.v2.trade.EntrustVO.encode(message.entrustvo, writer.uint32(/* id 31, wireType 2 =*/250).fork()).ldelim();
                    if (message.userassetbalance != null && Object.hasOwnProperty.call(message, "userassetbalance"))
                        $root.market.v2.trade.UserAssetBalance.encode(message.userassetbalance, writer.uint32(/* id 32, wireType 2 =*/258).fork()).ldelim();
                    if (message.markettickerlist != null && Object.hasOwnProperty.call(message, "markettickerlist"))
                        $root.market.v2.trade.MarketTickerList.encode(message.markettickerlist, writer.uint32(/* id 33, wireType 2 =*/266).fork()).ldelim();
                    if (message.marketmonit != null && Object.hasOwnProperty.call(message, "marketmonit"))
                        $root.market.v2.trade.MarketMonit.encode(message.marketmonit, writer.uint32(/* id 34, wireType 2 =*/274).fork()).ldelim();
                    if (message.margincrossassetvo != null && Object.hasOwnProperty.call(message, "margincrossassetvo"))
                        $root.market.v2.trade.MarginCrossAssetVO.encode(message.margincrossassetvo, writer.uint32(/* id 35, wireType 2 =*/282).fork()).ldelim();
                    if (message.marginisolatedassetvo != null && Object.hasOwnProperty.call(message, "marginisolatedassetvo"))
                        $root.market.v2.trade.MarginIsolatedAssetVO.encode(message.marginisolatedassetvo, writer.uint32(/* id 36, wireType 2 =*/290).fork()).ldelim();
                    if (message.newlistingpair != null && Object.hasOwnProperty.call(message, "newlistingpair"))
                        $root.market.v2.trade.NewListingPair.encode(message.newlistingpair, writer.uint32(/* id 37, wireType 2 =*/298).fork()).ldelim();
                    if (message.chgdistributions != null && Object.hasOwnProperty.call(message, "chgdistributions"))
                        $root.market.v2.trade.Chgdistributions.encode(message.chgdistributions, writer.uint32(/* id 38, wireType 2 =*/306).fork()).ldelim();
                    if (message.marketzones != null && Object.hasOwnProperty.call(message, "marketzones"))
                        $root.market.v2.trade.MarketZones.encode(message.marketzones, writer.uint32(/* id 39, wireType 2 =*/314).fork()).ldelim();
                    if (message.klineorders != null && Object.hasOwnProperty.call(message, "klineorders"))
                        $root.market.v2.trade.KlineOrders.encode(message.klineorders, writer.uint32(/* id 40, wireType 2 =*/322).fork()).ldelim();
                    if (message.notificationpush != null && Object.hasOwnProperty.call(message, "notificationpush"))
                        $root.market.v2.trade.NotificationPush.encode(message.notificationpush, writer.uint32(/* id 41, wireType 2 =*/330).fork()).ldelim();
                    if (message.tradehotlisting != null && Object.hasOwnProperty.call(message, "tradehotlisting"))
                        $root.market.v2.trade.TradeHotListing.encode(message.tradehotlisting, writer.uint32(/* id 42, wireType 2 =*/338).fork()).ldelim();
                    if (message.ctcgoingordernum != null && Object.hasOwnProperty.call(message, "ctcgoingordernum"))
                        $root.market.v2.trade.CtcGoingOrderNum.encode(message.ctcgoingordernum, writer.uint32(/* id 43, wireType 2 =*/346).fork()).ldelim();
                    if (message.multichange != null && Object.hasOwnProperty.call(message, "multichange"))
                        $root.market.v2.trade.MultiChange.encode(message.multichange, writer.uint32(/* id 44, wireType 2 =*/354).fork()).ldelim();
                    if (message.heatmap != null && Object.hasOwnProperty.call(message, "heatmap"))
                        $root.market.v2.trade.Heatmap.encode(message.heatmap, writer.uint32(/* id 45, wireType 2 =*/362).fork()).ldelim();
                    if (message.downpair != null && Object.hasOwnProperty.call(message, "downpair"))
                        $root.market.v2.trade.DownPair.encode(message.downpair, writer.uint32(/* id 46, wireType 2 =*/370).fork()).ldelim();
                    if (message.heatvol != null && Object.hasOwnProperty.call(message, "heatvol"))
                        $root.market.v2.trade.HeatVol.encode(message.heatvol, writer.uint32(/* id 47, wireType 2 =*/378).fork()).ldelim();
                    if (message.currencyrate != null && Object.hasOwnProperty.call(message, "currencyrate"))
                        $root.market.v2.trade.CurrencyRate.encode(message.currencyrate, writer.uint32(/* id 48, wireType 2 =*/386).fork()).ldelim();
                    return writer;
                };

                /**
                 * Encodes the specified Response message, length delimited. Does not implicitly {@link market.v2.trade.Response.verify|verify} messages.
                 * @function encodeDelimited
                 * @memberof market.v2.trade.Response
                 * @static
                 * @param {market.v2.trade.IResponse} message Response message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                Response.encodeDelimited = function encodeDelimited(message, writer) {
                    return this.encode(message, writer).ldelim();
                };

                /**
                 * Decodes a Response message from the specified reader or buffer.
                 * @function decode
                 * @memberof market.v2.trade.Response
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @param {number} [length] Message length if known beforehand
                 * @returns {market.v2.trade.Response} Response
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                Response.decode = function decode(reader, length) {
                    if (!(reader instanceof $Reader))
                        reader = $Reader.create(reader);
                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.market.v2.trade.Response();
                    while (reader.pos < end) {
                        var tag = reader.uint32();
                        switch (tag >>> 3) {
                        case 1: {
                                message.code = reader.int32();
                                break;
                            }
                        case 2: {
                                message.msg = reader.string();
                                break;
                            }
                        case 3: {
                                message.status = reader.string();
                                break;
                            }
                        case 4: {
                                message.ts = reader.int64();
                                break;
                            }
                        case 5: {
                                message.ch = reader.string();
                                break;
                            }
                        case 21: {
                                message.klinelist = $root.market.v2.trade.KlineList.decode(reader, reader.uint32());
                                break;
                            }
                        case 22: {
                                message.tradedepthvo = $root.market.v2.trade.TradeDepthVO.decode(reader, reader.uint32());
                                break;
                            }
                        case 23: {
                                message.tradedetaillist = $root.market.v2.trade.TradeDetailList.decode(reader, reader.uint32());
                                break;
                            }
                        case 24: {
                                message.tradeareapair = $root.market.v2.trade.TradeAreaPair.decode(reader, reader.uint32());
                                break;
                            }
                        case 25: {
                                message.mainpair = $root.market.v2.trade.MainPair.decode(reader, reader.uint32());
                                break;
                            }
                        case 26: {
                                message.recommendpair = $root.market.v2.trade.RecommendPair.decode(reader, reader.uint32());
                                break;
                            }
                        case 27: {
                                message.uppair = $root.market.v2.trade.UpPair.decode(reader, reader.uint32());
                                break;
                            }
                        case 28: {
                                message.amtpair = $root.market.v2.trade.AmtPair.decode(reader, reader.uint32());
                                break;
                            }
                        case 29: {
                                message.starpair = $root.market.v2.trade.StarPair.decode(reader, reader.uint32());
                                break;
                            }
                        case 30: {
                                message.tradetickervo = $root.market.v2.trade.TradeTickerVO.decode(reader, reader.uint32());
                                break;
                            }
                        case 31: {
                                message.entrustvo = $root.market.v2.trade.EntrustVO.decode(reader, reader.uint32());
                                break;
                            }
                        case 32: {
                                message.userassetbalance = $root.market.v2.trade.UserAssetBalance.decode(reader, reader.uint32());
                                break;
                            }
                        case 33: {
                                message.markettickerlist = $root.market.v2.trade.MarketTickerList.decode(reader, reader.uint32());
                                break;
                            }
                        case 35: {
                                message.margincrossassetvo = $root.market.v2.trade.MarginCrossAssetVO.decode(reader, reader.uint32());
                                break;
                            }
                        case 36: {
                                message.marginisolatedassetvo = $root.market.v2.trade.MarginIsolatedAssetVO.decode(reader, reader.uint32());
                                break;
                            }
                        case 37: {
                                message.newlistingpair = $root.market.v2.trade.NewListingPair.decode(reader, reader.uint32());
                                break;
                            }
                        case 38: {
                                message.chgdistributions = $root.market.v2.trade.Chgdistributions.decode(reader, reader.uint32());
                                break;
                            }
                        case 39: {
                                message.marketzones = $root.market.v2.trade.MarketZones.decode(reader, reader.uint32());
                                break;
                            }
                        case 40: {
                                message.klineorders = $root.market.v2.trade.KlineOrders.decode(reader, reader.uint32());
                                break;
                            }
                        case 41: {
                                message.notificationpush = $root.market.v2.trade.NotificationPush.decode(reader, reader.uint32());
                                break;
                            }
                        case 42: {
                                message.tradehotlisting = $root.market.v2.trade.TradeHotListing.decode(reader, reader.uint32());
                                break;
                            }
                        case 43: {
                                message.ctcgoingordernum = $root.market.v2.trade.CtcGoingOrderNum.decode(reader, reader.uint32());
                                break;
                            }
                        case 44: {
                                message.multichange = $root.market.v2.trade.MultiChange.decode(reader, reader.uint32());
                                break;
                            }
                        case 45: {
                                message.heatmap = $root.market.v2.trade.Heatmap.decode(reader, reader.uint32());
                                break;
                            }
                        case 46: {
                                message.downpair = $root.market.v2.trade.DownPair.decode(reader, reader.uint32());
                                break;
                            }
                        case 47: {
                                message.heatvol = $root.market.v2.trade.HeatVol.decode(reader, reader.uint32());
                                break;
                            }
                        case 48: {
                                message.currencyrate = $root.market.v2.trade.CurrencyRate.decode(reader, reader.uint32());
                                break;
                            }
                        case 34: {
                                message.marketmonit = $root.market.v2.trade.MarketMonit.decode(reader, reader.uint32());
                                break;
                            }
                        default:
                            reader.skipType(tag & 7);
                            break;
                        }
                    }
                    return message;
                };

                /**
                 * Decodes a Response message from the specified reader or buffer, length delimited.
                 * @function decodeDelimited
                 * @memberof market.v2.trade.Response
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @returns {market.v2.trade.Response} Response
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                Response.decodeDelimited = function decodeDelimited(reader) {
                    if (!(reader instanceof $Reader))
                        reader = new $Reader(reader);
                    return this.decode(reader, reader.uint32());
                };

                /**
                 * Verifies a Response message.
                 * @function verify
                 * @memberof market.v2.trade.Response
                 * @static
                 * @param {Object.<string,*>} message Plain object to verify
                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
                 */
                Response.verify = function verify(message) {
                    if (typeof message !== "object" || message === null)
                        return "object expected";
                    if (message.code != null && message.hasOwnProperty("code"))
                        if (!$util.isInteger(message.code))
                            return "code: integer expected";
                    if (message.msg != null && message.hasOwnProperty("msg"))
                        if (!$util.isString(message.msg))
                            return "msg: string expected";
                    if (message.status != null && message.hasOwnProperty("status"))
                        if (!$util.isString(message.status))
                            return "status: string expected";
                    if (message.ts != null && message.hasOwnProperty("ts"))
                        if (!$util.isInteger(message.ts) && !(message.ts && $util.isInteger(message.ts.low) && $util.isInteger(message.ts.high)))
                            return "ts: integer|Long expected";
                    if (message.ch != null && message.hasOwnProperty("ch"))
                        if (!$util.isString(message.ch))
                            return "ch: string expected";
                    if (message.klinelist != null && message.hasOwnProperty("klinelist")) {
                        var error = $root.market.v2.trade.KlineList.verify(message.klinelist);
                        if (error)
                            return "klinelist." + error;
                    }
                    if (message.tradedepthvo != null && message.hasOwnProperty("tradedepthvo")) {
                        var error = $root.market.v2.trade.TradeDepthVO.verify(message.tradedepthvo);
                        if (error)
                            return "tradedepthvo." + error;
                    }
                    if (message.tradedetaillist != null && message.hasOwnProperty("tradedetaillist")) {
                        var error = $root.market.v2.trade.TradeDetailList.verify(message.tradedetaillist);
                        if (error)
                            return "tradedetaillist." + error;
                    }
                    if (message.tradeareapair != null && message.hasOwnProperty("tradeareapair")) {
                        var error = $root.market.v2.trade.TradeAreaPair.verify(message.tradeareapair);
                        if (error)
                            return "tradeareapair." + error;
                    }
                    if (message.mainpair != null && message.hasOwnProperty("mainpair")) {
                        var error = $root.market.v2.trade.MainPair.verify(message.mainpair);
                        if (error)
                            return "mainpair." + error;
                    }
                    if (message.recommendpair != null && message.hasOwnProperty("recommendpair")) {
                        var error = $root.market.v2.trade.RecommendPair.verify(message.recommendpair);
                        if (error)
                            return "recommendpair." + error;
                    }
                    if (message.uppair != null && message.hasOwnProperty("uppair")) {
                        var error = $root.market.v2.trade.UpPair.verify(message.uppair);
                        if (error)
                            return "uppair." + error;
                    }
                    if (message.amtpair != null && message.hasOwnProperty("amtpair")) {
                        var error = $root.market.v2.trade.AmtPair.verify(message.amtpair);
                        if (error)
                            return "amtpair." + error;
                    }
                    if (message.starpair != null && message.hasOwnProperty("starpair")) {
                        var error = $root.market.v2.trade.StarPair.verify(message.starpair);
                        if (error)
                            return "starpair." + error;
                    }
                    if (message.tradetickervo != null && message.hasOwnProperty("tradetickervo")) {
                        var error = $root.market.v2.trade.TradeTickerVO.verify(message.tradetickervo);
                        if (error)
                            return "tradetickervo." + error;
                    }
                    if (message.entrustvo != null && message.hasOwnProperty("entrustvo")) {
                        var error = $root.market.v2.trade.EntrustVO.verify(message.entrustvo);
                        if (error)
                            return "entrustvo." + error;
                    }
                    if (message.userassetbalance != null && message.hasOwnProperty("userassetbalance")) {
                        var error = $root.market.v2.trade.UserAssetBalance.verify(message.userassetbalance);
                        if (error)
                            return "userassetbalance." + error;
                    }
                    if (message.markettickerlist != null && message.hasOwnProperty("markettickerlist")) {
                        var error = $root.market.v2.trade.MarketTickerList.verify(message.markettickerlist);
                        if (error)
                            return "markettickerlist." + error;
                    }
                    if (message.margincrossassetvo != null && message.hasOwnProperty("margincrossassetvo")) {
                        var error = $root.market.v2.trade.MarginCrossAssetVO.verify(message.margincrossassetvo);
                        if (error)
                            return "margincrossassetvo." + error;
                    }
                    if (message.marginisolatedassetvo != null && message.hasOwnProperty("marginisolatedassetvo")) {
                        var error = $root.market.v2.trade.MarginIsolatedAssetVO.verify(message.marginisolatedassetvo);
                        if (error)
                            return "marginisolatedassetvo." + error;
                    }
                    if (message.newlistingpair != null && message.hasOwnProperty("newlistingpair")) {
                        var error = $root.market.v2.trade.NewListingPair.verify(message.newlistingpair);
                        if (error)
                            return "newlistingpair." + error;
                    }
                    if (message.chgdistributions != null && message.hasOwnProperty("chgdistributions")) {
                        var error = $root.market.v2.trade.Chgdistributions.verify(message.chgdistributions);
                        if (error)
                            return "chgdistributions." + error;
                    }
                    if (message.marketzones != null && message.hasOwnProperty("marketzones")) {
                        var error = $root.market.v2.trade.MarketZones.verify(message.marketzones);
                        if (error)
                            return "marketzones." + error;
                    }
                    if (message.klineorders != null && message.hasOwnProperty("klineorders")) {
                        var error = $root.market.v2.trade.KlineOrders.verify(message.klineorders);
                        if (error)
                            return "klineorders." + error;
                    }
                    if (message.notificationpush != null && message.hasOwnProperty("notificationpush")) {
                        var error = $root.market.v2.trade.NotificationPush.verify(message.notificationpush);
                        if (error)
                            return "notificationpush." + error;
                    }
                    if (message.tradehotlisting != null && message.hasOwnProperty("tradehotlisting")) {
                        var error = $root.market.v2.trade.TradeHotListing.verify(message.tradehotlisting);
                        if (error)
                            return "tradehotlisting." + error;
                    }
                    if (message.ctcgoingordernum != null && message.hasOwnProperty("ctcgoingordernum")) {
                        var error = $root.market.v2.trade.CtcGoingOrderNum.verify(message.ctcgoingordernum);
                        if (error)
                            return "ctcgoingordernum." + error;
                    }
                    if (message.multichange != null && message.hasOwnProperty("multichange")) {
                        var error = $root.market.v2.trade.MultiChange.verify(message.multichange);
                        if (error)
                            return "multichange." + error;
                    }
                    if (message.heatmap != null && message.hasOwnProperty("heatmap")) {
                        var error = $root.market.v2.trade.Heatmap.verify(message.heatmap);
                        if (error)
                            return "heatmap." + error;
                    }
                    if (message.downpair != null && message.hasOwnProperty("downpair")) {
                        var error = $root.market.v2.trade.DownPair.verify(message.downpair);
                        if (error)
                            return "downpair." + error;
                    }
                    if (message.heatvol != null && message.hasOwnProperty("heatvol")) {
                        var error = $root.market.v2.trade.HeatVol.verify(message.heatvol);
                        if (error)
                            return "heatvol." + error;
                    }
                    if (message.currencyrate != null && message.hasOwnProperty("currencyrate")) {
                        var error = $root.market.v2.trade.CurrencyRate.verify(message.currencyrate);
                        if (error)
                            return "currencyrate." + error;
                    }
                    if (message.marketmonit != null && message.hasOwnProperty("marketmonit")) {
                        var error = $root.market.v2.trade.MarketMonit.verify(message.marketmonit);
                        if (error)
                            return "marketmonit." + error;
                    }
                    return null;
                };

                /**
                 * Creates a Response message from a plain object. Also converts values to their respective internal types.
                 * @function fromObject
                 * @memberof market.v2.trade.Response
                 * @static
                 * @param {Object.<string,*>} object Plain object
                 * @returns {market.v2.trade.Response} Response
                 */
                Response.fromObject = function fromObject(object) {
                    if (object instanceof $root.market.v2.trade.Response)
                        return object;
                    var message = new $root.market.v2.trade.Response();
                    if (object.code != null)
                        message.code = object.code | 0;
                    if (object.msg != null)
                        message.msg = String(object.msg);
                    if (object.status != null)
                        message.status = String(object.status);
                    if (object.ts != null)
                        if ($util.Long)
                            (message.ts = $util.Long.fromValue(object.ts)).unsigned = false;
                        else if (typeof object.ts === "string")
                            message.ts = parseInt(object.ts, 10);
                        else if (typeof object.ts === "number")
                            message.ts = object.ts;
                        else if (typeof object.ts === "object")
                            message.ts = new $util.LongBits(object.ts.low >>> 0, object.ts.high >>> 0).toNumber();
                    if (object.ch != null)
                        message.ch = String(object.ch);
                    if (object.klinelist != null) {
                        if (typeof object.klinelist !== "object")
                            throw TypeError(".market.v2.trade.Response.klinelist: object expected");
                        message.klinelist = $root.market.v2.trade.KlineList.fromObject(object.klinelist);
                    }
                    if (object.tradedepthvo != null) {
                        if (typeof object.tradedepthvo !== "object")
                            throw TypeError(".market.v2.trade.Response.tradedepthvo: object expected");
                        message.tradedepthvo = $root.market.v2.trade.TradeDepthVO.fromObject(object.tradedepthvo);
                    }
                    if (object.tradedetaillist != null) {
                        if (typeof object.tradedetaillist !== "object")
                            throw TypeError(".market.v2.trade.Response.tradedetaillist: object expected");
                        message.tradedetaillist = $root.market.v2.trade.TradeDetailList.fromObject(object.tradedetaillist);
                    }
                    if (object.tradeareapair != null) {
                        if (typeof object.tradeareapair !== "object")
                            throw TypeError(".market.v2.trade.Response.tradeareapair: object expected");
                        message.tradeareapair = $root.market.v2.trade.TradeAreaPair.fromObject(object.tradeareapair);
                    }
                    if (object.mainpair != null) {
                        if (typeof object.mainpair !== "object")
                            throw TypeError(".market.v2.trade.Response.mainpair: object expected");
                        message.mainpair = $root.market.v2.trade.MainPair.fromObject(object.mainpair);
                    }
                    if (object.recommendpair != null) {
                        if (typeof object.recommendpair !== "object")
                            throw TypeError(".market.v2.trade.Response.recommendpair: object expected");
                        message.recommendpair = $root.market.v2.trade.RecommendPair.fromObject(object.recommendpair);
                    }
                    if (object.uppair != null) {
                        if (typeof object.uppair !== "object")
                            throw TypeError(".market.v2.trade.Response.uppair: object expected");
                        message.uppair = $root.market.v2.trade.UpPair.fromObject(object.uppair);
                    }
                    if (object.amtpair != null) {
                        if (typeof object.amtpair !== "object")
                            throw TypeError(".market.v2.trade.Response.amtpair: object expected");
                        message.amtpair = $root.market.v2.trade.AmtPair.fromObject(object.amtpair);
                    }
                    if (object.starpair != null) {
                        if (typeof object.starpair !== "object")
                            throw TypeError(".market.v2.trade.Response.starpair: object expected");
                        message.starpair = $root.market.v2.trade.StarPair.fromObject(object.starpair);
                    }
                    if (object.tradetickervo != null) {
                        if (typeof object.tradetickervo !== "object")
                            throw TypeError(".market.v2.trade.Response.tradetickervo: object expected");
                        message.tradetickervo = $root.market.v2.trade.TradeTickerVO.fromObject(object.tradetickervo);
                    }
                    if (object.entrustvo != null) {
                        if (typeof object.entrustvo !== "object")
                            throw TypeError(".market.v2.trade.Response.entrustvo: object expected");
                        message.entrustvo = $root.market.v2.trade.EntrustVO.fromObject(object.entrustvo);
                    }
                    if (object.userassetbalance != null) {
                        if (typeof object.userassetbalance !== "object")
                            throw TypeError(".market.v2.trade.Response.userassetbalance: object expected");
                        message.userassetbalance = $root.market.v2.trade.UserAssetBalance.fromObject(object.userassetbalance);
                    }
                    if (object.markettickerlist != null) {
                        if (typeof object.markettickerlist !== "object")
                            throw TypeError(".market.v2.trade.Response.markettickerlist: object expected");
                        message.markettickerlist = $root.market.v2.trade.MarketTickerList.fromObject(object.markettickerlist);
                    }
                    if (object.margincrossassetvo != null) {
                        if (typeof object.margincrossassetvo !== "object")
                            throw TypeError(".market.v2.trade.Response.margincrossassetvo: object expected");
                        message.margincrossassetvo = $root.market.v2.trade.MarginCrossAssetVO.fromObject(object.margincrossassetvo);
                    }
                    if (object.marginisolatedassetvo != null) {
                        if (typeof object.marginisolatedassetvo !== "object")
                            throw TypeError(".market.v2.trade.Response.marginisolatedassetvo: object expected");
                        message.marginisolatedassetvo = $root.market.v2.trade.MarginIsolatedAssetVO.fromObject(object.marginisolatedassetvo);
                    }
                    if (object.newlistingpair != null) {
                        if (typeof object.newlistingpair !== "object")
                            throw TypeError(".market.v2.trade.Response.newlistingpair: object expected");
                        message.newlistingpair = $root.market.v2.trade.NewListingPair.fromObject(object.newlistingpair);
                    }
                    if (object.chgdistributions != null) {
                        if (typeof object.chgdistributions !== "object")
                            throw TypeError(".market.v2.trade.Response.chgdistributions: object expected");
                        message.chgdistributions = $root.market.v2.trade.Chgdistributions.fromObject(object.chgdistributions);
                    }
                    if (object.marketzones != null) {
                        if (typeof object.marketzones !== "object")
                            throw TypeError(".market.v2.trade.Response.marketzones: object expected");
                        message.marketzones = $root.market.v2.trade.MarketZones.fromObject(object.marketzones);
                    }
                    if (object.klineorders != null) {
                        if (typeof object.klineorders !== "object")
                            throw TypeError(".market.v2.trade.Response.klineorders: object expected");
                        message.klineorders = $root.market.v2.trade.KlineOrders.fromObject(object.klineorders);
                    }
                    if (object.notificationpush != null) {
                        if (typeof object.notificationpush !== "object")
                            throw TypeError(".market.v2.trade.Response.notificationpush: object expected");
                        message.notificationpush = $root.market.v2.trade.NotificationPush.fromObject(object.notificationpush);
                    }
                    if (object.tradehotlisting != null) {
                        if (typeof object.tradehotlisting !== "object")
                            throw TypeError(".market.v2.trade.Response.tradehotlisting: object expected");
                        message.tradehotlisting = $root.market.v2.trade.TradeHotListing.fromObject(object.tradehotlisting);
                    }
                    if (object.ctcgoingordernum != null) {
                        if (typeof object.ctcgoingordernum !== "object")
                            throw TypeError(".market.v2.trade.Response.ctcgoingordernum: object expected");
                        message.ctcgoingordernum = $root.market.v2.trade.CtcGoingOrderNum.fromObject(object.ctcgoingordernum);
                    }
                    if (object.multichange != null) {
                        if (typeof object.multichange !== "object")
                            throw TypeError(".market.v2.trade.Response.multichange: object expected");
                        message.multichange = $root.market.v2.trade.MultiChange.fromObject(object.multichange);
                    }
                    if (object.heatmap != null) {
                        if (typeof object.heatmap !== "object")
                            throw TypeError(".market.v2.trade.Response.heatmap: object expected");
                        message.heatmap = $root.market.v2.trade.Heatmap.fromObject(object.heatmap);
                    }
                    if (object.downpair != null) {
                        if (typeof object.downpair !== "object")
                            throw TypeError(".market.v2.trade.Response.downpair: object expected");
                        message.downpair = $root.market.v2.trade.DownPair.fromObject(object.downpair);
                    }
                    if (object.heatvol != null) {
                        if (typeof object.heatvol !== "object")
                            throw TypeError(".market.v2.trade.Response.heatvol: object expected");
                        message.heatvol = $root.market.v2.trade.HeatVol.fromObject(object.heatvol);
                    }
                    if (object.currencyrate != null) {
                        if (typeof object.currencyrate !== "object")
                            throw TypeError(".market.v2.trade.Response.currencyrate: object expected");
                        message.currencyrate = $root.market.v2.trade.CurrencyRate.fromObject(object.currencyrate);
                    }
                    if (object.marketmonit != null) {
                        if (typeof object.marketmonit !== "object")
                            throw TypeError(".market.v2.trade.Response.marketmonit: object expected");
                        message.marketmonit = $root.market.v2.trade.MarketMonit.fromObject(object.marketmonit);
                    }
                    return message;
                };

                /**
                 * Creates a plain object from a Response message. Also converts values to other types if specified.
                 * @function toObject
                 * @memberof market.v2.trade.Response
                 * @static
                 * @param {market.v2.trade.Response} message Response
                 * @param {$protobuf.IConversionOptions} [options] Conversion options
                 * @returns {Object.<string,*>} Plain object
                 */
                Response.toObject = function toObject(message, options) {
                    if (!options)
                        options = {};
                    var object = {};
                    if (options.defaults) {
                        object.code = 0;
                        object.msg = "";
                        object.status = "";
                        if ($util.Long) {
                            var long = new $util.Long(0, 0, false);
                            object.ts = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
                        } else
                            object.ts = options.longs === String ? "0" : 0;
                        object.ch = "";
                        object.klinelist = null;
                        object.tradedepthvo = null;
                        object.tradedetaillist = null;
                        object.tradeareapair = null;
                        object.mainpair = null;
                        object.recommendpair = null;
                        object.uppair = null;
                        object.amtpair = null;
                        object.starpair = null;
                        object.tradetickervo = null;
                        object.entrustvo = null;
                        object.userassetbalance = null;
                        object.markettickerlist = null;
                        object.marketmonit = null;
                        object.margincrossassetvo = null;
                        object.marginisolatedassetvo = null;
                        object.newlistingpair = null;
                        object.chgdistributions = null;
                        object.marketzones = null;
                        object.klineorders = null;
                        object.notificationpush = null;
                        object.tradehotlisting = null;
                        object.ctcgoingordernum = null;
                        object.multichange = null;
                        object.heatmap = null;
                        object.downpair = null;
                        object.heatvol = null;
                        object.currencyrate = null;
                    }
                    if (message.code != null && message.hasOwnProperty("code"))
                        object.code = message.code;
                    if (message.msg != null && message.hasOwnProperty("msg"))
                        object.msg = message.msg;
                    if (message.status != null && message.hasOwnProperty("status"))
                        object.status = message.status;
                    if (message.ts != null && message.hasOwnProperty("ts"))
                        if (typeof message.ts === "number")
                            object.ts = options.longs === String ? String(message.ts) : message.ts;
                        else
                            object.ts = options.longs === String ? $util.Long.prototype.toString.call(message.ts) : options.longs === Number ? new $util.LongBits(message.ts.low >>> 0, message.ts.high >>> 0).toNumber() : message.ts;
                    if (message.ch != null && message.hasOwnProperty("ch"))
                        object.ch = message.ch;
                    if (message.klinelist != null && message.hasOwnProperty("klinelist"))
                        object.klinelist = $root.market.v2.trade.KlineList.toObject(message.klinelist, options);
                    if (message.tradedepthvo != null && message.hasOwnProperty("tradedepthvo"))
                        object.tradedepthvo = $root.market.v2.trade.TradeDepthVO.toObject(message.tradedepthvo, options);
                    if (message.tradedetaillist != null && message.hasOwnProperty("tradedetaillist"))
                        object.tradedetaillist = $root.market.v2.trade.TradeDetailList.toObject(message.tradedetaillist, options);
                    if (message.tradeareapair != null && message.hasOwnProperty("tradeareapair"))
                        object.tradeareapair = $root.market.v2.trade.TradeAreaPair.toObject(message.tradeareapair, options);
                    if (message.mainpair != null && message.hasOwnProperty("mainpair"))
                        object.mainpair = $root.market.v2.trade.MainPair.toObject(message.mainpair, options);
                    if (message.recommendpair != null && message.hasOwnProperty("recommendpair"))
                        object.recommendpair = $root.market.v2.trade.RecommendPair.toObject(message.recommendpair, options);
                    if (message.uppair != null && message.hasOwnProperty("uppair"))
                        object.uppair = $root.market.v2.trade.UpPair.toObject(message.uppair, options);
                    if (message.amtpair != null && message.hasOwnProperty("amtpair"))
                        object.amtpair = $root.market.v2.trade.AmtPair.toObject(message.amtpair, options);
                    if (message.starpair != null && message.hasOwnProperty("starpair"))
                        object.starpair = $root.market.v2.trade.StarPair.toObject(message.starpair, options);
                    if (message.tradetickervo != null && message.hasOwnProperty("tradetickervo"))
                        object.tradetickervo = $root.market.v2.trade.TradeTickerVO.toObject(message.tradetickervo, options);
                    if (message.entrustvo != null && message.hasOwnProperty("entrustvo"))
                        object.entrustvo = $root.market.v2.trade.EntrustVO.toObject(message.entrustvo, options);
                    if (message.userassetbalance != null && message.hasOwnProperty("userassetbalance"))
                        object.userassetbalance = $root.market.v2.trade.UserAssetBalance.toObject(message.userassetbalance, options);
                    if (message.markettickerlist != null && message.hasOwnProperty("markettickerlist"))
                        object.markettickerlist = $root.market.v2.trade.MarketTickerList.toObject(message.markettickerlist, options);
                    if (message.marketmonit != null && message.hasOwnProperty("marketmonit"))
                        object.marketmonit = $root.market.v2.trade.MarketMonit.toObject(message.marketmonit, options);
                    if (message.margincrossassetvo != null && message.hasOwnProperty("margincrossassetvo"))
                        object.margincrossassetvo = $root.market.v2.trade.MarginCrossAssetVO.toObject(message.margincrossassetvo, options);
                    if (message.marginisolatedassetvo != null && message.hasOwnProperty("marginisolatedassetvo"))
                        object.marginisolatedassetvo = $root.market.v2.trade.MarginIsolatedAssetVO.toObject(message.marginisolatedassetvo, options);
                    if (message.newlistingpair != null && message.hasOwnProperty("newlistingpair"))
                        object.newlistingpair = $root.market.v2.trade.NewListingPair.toObject(message.newlistingpair, options);
                    if (message.chgdistributions != null && message.hasOwnProperty("chgdistributions"))
                        object.chgdistributions = $root.market.v2.trade.Chgdistributions.toObject(message.chgdistributions, options);
                    if (message.marketzones != null && message.hasOwnProperty("marketzones"))
                        object.marketzones = $root.market.v2.trade.MarketZones.toObject(message.marketzones, options);
                    if (message.klineorders != null && message.hasOwnProperty("klineorders"))
                        object.klineorders = $root.market.v2.trade.KlineOrders.toObject(message.klineorders, options);
                    if (message.notificationpush != null && message.hasOwnProperty("notificationpush"))
                        object.notificationpush = $root.market.v2.trade.NotificationPush.toObject(message.notificationpush, options);
                    if (message.tradehotlisting != null && message.hasOwnProperty("tradehotlisting"))
                        object.tradehotlisting = $root.market.v2.trade.TradeHotListing.toObject(message.tradehotlisting, options);
                    if (message.ctcgoingordernum != null && message.hasOwnProperty("ctcgoingordernum"))
                        object.ctcgoingordernum = $root.market.v2.trade.CtcGoingOrderNum.toObject(message.ctcgoingordernum, options);
                    if (message.multichange != null && message.hasOwnProperty("multichange"))
                        object.multichange = $root.market.v2.trade.MultiChange.toObject(message.multichange, options);
                    if (message.heatmap != null && message.hasOwnProperty("heatmap"))
                        object.heatmap = $root.market.v2.trade.Heatmap.toObject(message.heatmap, options);
                    if (message.downpair != null && message.hasOwnProperty("downpair"))
                        object.downpair = $root.market.v2.trade.DownPair.toObject(message.downpair, options);
                    if (message.heatvol != null && message.hasOwnProperty("heatvol"))
                        object.heatvol = $root.market.v2.trade.HeatVol.toObject(message.heatvol, options);
                    if (message.currencyrate != null && message.hasOwnProperty("currencyrate"))
                        object.currencyrate = $root.market.v2.trade.CurrencyRate.toObject(message.currencyrate, options);
                    return object;
                };

                /**
                 * Converts this Response to JSON.
                 * @function toJSON
                 * @memberof market.v2.trade.Response
                 * @instance
                 * @returns {Object.<string,*>} JSON object
                 */
                Response.prototype.toJSON = function toJSON() {
                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
                };

                /**
                 * Gets the default type url for Response
                 * @function getTypeUrl
                 * @memberof market.v2.trade.Response
                 * @static
                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns {string} The default type url
                 */
                Response.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
                    if (typeUrlPrefix === undefined) {
                        typeUrlPrefix = "type.googleapis.com";
                    }
                    return typeUrlPrefix + "/market.v2.trade.Response";
                };

                return Response;
            })();

            trade.KlineList = (function() {

                /**
                 * Properties of a KlineList.
                 * @memberof market.v2.trade
                 * @interface IKlineList
                 */

                /**
                 * Constructs a new KlineList.
                 * @memberof market.v2.trade
                 * @classdesc Represents a KlineList.
                 * @implements IKlineList
                 * @constructor
                 * @param {market.v2.trade.IKlineList=} [properties] Properties to set
                 */
                function KlineList(properties) {
                    if (properties)
                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                            if (properties[keys[i]] != null)
                                this[keys[i]] = properties[keys[i]];
                }

                /**
                 * Creates a new KlineList instance using the specified properties.
                 * @function create
                 * @memberof market.v2.trade.KlineList
                 * @static
                 * @param {market.v2.trade.IKlineList=} [properties] Properties to set
                 * @returns {market.v2.trade.KlineList} KlineList instance
                 */
                KlineList.create = function create(properties) {
                    return new KlineList(properties);
                };

                /**
                 * Encodes the specified KlineList message. Does not implicitly {@link market.v2.trade.KlineList.verify|verify} messages.
                 * @function encode
                 * @memberof market.v2.trade.KlineList
                 * @static
                 * @param {market.v2.trade.IKlineList} message KlineList message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                KlineList.encode = function encode(message, writer) {
                    if (!writer)
                        writer = $Writer.create();
                    return writer;
                };

                /**
                 * Encodes the specified KlineList message, length delimited. Does not implicitly {@link market.v2.trade.KlineList.verify|verify} messages.
                 * @function encodeDelimited
                 * @memberof market.v2.trade.KlineList
                 * @static
                 * @param {market.v2.trade.IKlineList} message KlineList message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                KlineList.encodeDelimited = function encodeDelimited(message, writer) {
                    return this.encode(message, writer).ldelim();
                };

                /**
                 * Decodes a KlineList message from the specified reader or buffer.
                 * @function decode
                 * @memberof market.v2.trade.KlineList
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @param {number} [length] Message length if known beforehand
                 * @returns {market.v2.trade.KlineList} KlineList
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                KlineList.decode = function decode(reader, length) {
                    if (!(reader instanceof $Reader))
                        reader = $Reader.create(reader);
                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.market.v2.trade.KlineList();
                    while (reader.pos < end) {
                        var tag = reader.uint32();
                        switch (tag >>> 3) {
                        default:
                            reader.skipType(tag & 7);
                            break;
                        }
                    }
                    return message;
                };

                /**
                 * Decodes a KlineList message from the specified reader or buffer, length delimited.
                 * @function decodeDelimited
                 * @memberof market.v2.trade.KlineList
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @returns {market.v2.trade.KlineList} KlineList
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                KlineList.decodeDelimited = function decodeDelimited(reader) {
                    if (!(reader instanceof $Reader))
                        reader = new $Reader(reader);
                    return this.decode(reader, reader.uint32());
                };

                /**
                 * Verifies a KlineList message.
                 * @function verify
                 * @memberof market.v2.trade.KlineList
                 * @static
                 * @param {Object.<string,*>} message Plain object to verify
                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
                 */
                KlineList.verify = function verify(message) {
                    if (typeof message !== "object" || message === null)
                        return "object expected";
                    return null;
                };

                /**
                 * Creates a KlineList message from a plain object. Also converts values to their respective internal types.
                 * @function fromObject
                 * @memberof market.v2.trade.KlineList
                 * @static
                 * @param {Object.<string,*>} object Plain object
                 * @returns {market.v2.trade.KlineList} KlineList
                 */
                KlineList.fromObject = function fromObject(object) {
                    if (object instanceof $root.market.v2.trade.KlineList)
                        return object;
                    return new $root.market.v2.trade.KlineList();
                };

                /**
                 * Creates a plain object from a KlineList message. Also converts values to other types if specified.
                 * @function toObject
                 * @memberof market.v2.trade.KlineList
                 * @static
                 * @param {market.v2.trade.KlineList} message KlineList
                 * @param {$protobuf.IConversionOptions} [options] Conversion options
                 * @returns {Object.<string,*>} Plain object
                 */
                KlineList.toObject = function toObject() {
                    return {};
                };

                /**
                 * Converts this KlineList to JSON.
                 * @function toJSON
                 * @memberof market.v2.trade.KlineList
                 * @instance
                 * @returns {Object.<string,*>} JSON object
                 */
                KlineList.prototype.toJSON = function toJSON() {
                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
                };

                /**
                 * Gets the default type url for KlineList
                 * @function getTypeUrl
                 * @memberof market.v2.trade.KlineList
                 * @static
                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns {string} The default type url
                 */
                KlineList.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
                    if (typeUrlPrefix === undefined) {
                        typeUrlPrefix = "type.googleapis.com";
                    }
                    return typeUrlPrefix + "/market.v2.trade.KlineList";
                };

                return KlineList;
            })();

            trade.TradeDepthVO = (function() {

                /**
                 * Properties of a TradeDepthVO.
                 * @memberof market.v2.trade
                 * @interface ITradeDepthVO
                 * @property {market.v2.trade.TradeDepthVO.IBids|null} [bids] TradeDepthVO bids
                 * @property {market.v2.trade.TradeDepthVO.IAsks|null} [asks] TradeDepthVO asks
                 * @property {string|null} [last] TradeDepthVO last
                 * @property {string|null} [open] TradeDepthVO open
                 * @property {string|null} [cny] TradeDepthVO cny
                 * @property {string|null} [netvalue] TradeDepthVO netvalue
                 * @property {string|null} [buyorsellcnyprice] TradeDepthVO buyorsellcnyprice
                 * @property {boolean|null} [isfiatconvert] TradeDepthVO isfiatconvert
                 * @property {boolean|null} [isrisktip] TradeDepthVO isrisktip
                 */

                /**
                 * Constructs a new TradeDepthVO.
                 * @memberof market.v2.trade
                 * @classdesc Represents a TradeDepthVO.
                 * @implements ITradeDepthVO
                 * @constructor
                 * @param {market.v2.trade.ITradeDepthVO=} [properties] Properties to set
                 */
                function TradeDepthVO(properties) {
                    if (properties)
                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                            if (properties[keys[i]] != null)
                                this[keys[i]] = properties[keys[i]];
                }

                /**
                 * TradeDepthVO bids.
                 * @member {market.v2.trade.TradeDepthVO.IBids|null|undefined} bids
                 * @memberof market.v2.trade.TradeDepthVO
                 * @instance
                 */
                TradeDepthVO.prototype.bids = null;

                /**
                 * TradeDepthVO asks.
                 * @member {market.v2.trade.TradeDepthVO.IAsks|null|undefined} asks
                 * @memberof market.v2.trade.TradeDepthVO
                 * @instance
                 */
                TradeDepthVO.prototype.asks = null;

                /**
                 * TradeDepthVO last.
                 * @member {string} last
                 * @memberof market.v2.trade.TradeDepthVO
                 * @instance
                 */
                TradeDepthVO.prototype.last = "";

                /**
                 * TradeDepthVO open.
                 * @member {string} open
                 * @memberof market.v2.trade.TradeDepthVO
                 * @instance
                 */
                TradeDepthVO.prototype.open = "";

                /**
                 * TradeDepthVO cny.
                 * @member {string} cny
                 * @memberof market.v2.trade.TradeDepthVO
                 * @instance
                 */
                TradeDepthVO.prototype.cny = "";

                /**
                 * TradeDepthVO netvalue.
                 * @member {string} netvalue
                 * @memberof market.v2.trade.TradeDepthVO
                 * @instance
                 */
                TradeDepthVO.prototype.netvalue = "";

                /**
                 * TradeDepthVO buyorsellcnyprice.
                 * @member {string} buyorsellcnyprice
                 * @memberof market.v2.trade.TradeDepthVO
                 * @instance
                 */
                TradeDepthVO.prototype.buyorsellcnyprice = "";

                /**
                 * TradeDepthVO isfiatconvert.
                 * @member {boolean} isfiatconvert
                 * @memberof market.v2.trade.TradeDepthVO
                 * @instance
                 */
                TradeDepthVO.prototype.isfiatconvert = false;

                /**
                 * TradeDepthVO isrisktip.
                 * @member {boolean} isrisktip
                 * @memberof market.v2.trade.TradeDepthVO
                 * @instance
                 */
                TradeDepthVO.prototype.isrisktip = false;

                /**
                 * Creates a new TradeDepthVO instance using the specified properties.
                 * @function create
                 * @memberof market.v2.trade.TradeDepthVO
                 * @static
                 * @param {market.v2.trade.ITradeDepthVO=} [properties] Properties to set
                 * @returns {market.v2.trade.TradeDepthVO} TradeDepthVO instance
                 */
                TradeDepthVO.create = function create(properties) {
                    return new TradeDepthVO(properties);
                };

                /**
                 * Encodes the specified TradeDepthVO message. Does not implicitly {@link market.v2.trade.TradeDepthVO.verify|verify} messages.
                 * @function encode
                 * @memberof market.v2.trade.TradeDepthVO
                 * @static
                 * @param {market.v2.trade.ITradeDepthVO} message TradeDepthVO message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                TradeDepthVO.encode = function encode(message, writer) {
                    if (!writer)
                        writer = $Writer.create();
                    if (message.bids != null && Object.hasOwnProperty.call(message, "bids"))
                        $root.market.v2.trade.TradeDepthVO.Bids.encode(message.bids, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
                    if (message.asks != null && Object.hasOwnProperty.call(message, "asks"))
                        $root.market.v2.trade.TradeDepthVO.Asks.encode(message.asks, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
                    if (message.last != null && Object.hasOwnProperty.call(message, "last"))
                        writer.uint32(/* id 3, wireType 2 =*/26).string(message.last);
                    if (message.open != null && Object.hasOwnProperty.call(message, "open"))
                        writer.uint32(/* id 4, wireType 2 =*/34).string(message.open);
                    if (message.cny != null && Object.hasOwnProperty.call(message, "cny"))
                        writer.uint32(/* id 5, wireType 2 =*/42).string(message.cny);
                    if (message.netvalue != null && Object.hasOwnProperty.call(message, "netvalue"))
                        writer.uint32(/* id 6, wireType 2 =*/50).string(message.netvalue);
                    if (message.buyorsellcnyprice != null && Object.hasOwnProperty.call(message, "buyorsellcnyprice"))
                        writer.uint32(/* id 7, wireType 2 =*/58).string(message.buyorsellcnyprice);
                    if (message.isfiatconvert != null && Object.hasOwnProperty.call(message, "isfiatconvert"))
                        writer.uint32(/* id 8, wireType 0 =*/64).bool(message.isfiatconvert);
                    if (message.isrisktip != null && Object.hasOwnProperty.call(message, "isrisktip"))
                        writer.uint32(/* id 9, wireType 0 =*/72).bool(message.isrisktip);
                    return writer;
                };

                /**
                 * Encodes the specified TradeDepthVO message, length delimited. Does not implicitly {@link market.v2.trade.TradeDepthVO.verify|verify} messages.
                 * @function encodeDelimited
                 * @memberof market.v2.trade.TradeDepthVO
                 * @static
                 * @param {market.v2.trade.ITradeDepthVO} message TradeDepthVO message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                TradeDepthVO.encodeDelimited = function encodeDelimited(message, writer) {
                    return this.encode(message, writer).ldelim();
                };

                /**
                 * Decodes a TradeDepthVO message from the specified reader or buffer.
                 * @function decode
                 * @memberof market.v2.trade.TradeDepthVO
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @param {number} [length] Message length if known beforehand
                 * @returns {market.v2.trade.TradeDepthVO} TradeDepthVO
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                TradeDepthVO.decode = function decode(reader, length) {
                    if (!(reader instanceof $Reader))
                        reader = $Reader.create(reader);
                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.market.v2.trade.TradeDepthVO();
                    while (reader.pos < end) {
                        var tag = reader.uint32();
                        switch (tag >>> 3) {
                        case 1: {
                                message.bids = $root.market.v2.trade.TradeDepthVO.Bids.decode(reader, reader.uint32());
                                break;
                            }
                        case 2: {
                                message.asks = $root.market.v2.trade.TradeDepthVO.Asks.decode(reader, reader.uint32());
                                break;
                            }
                        case 3: {
                                message.last = reader.string();
                                break;
                            }
                        case 4: {
                                message.open = reader.string();
                                break;
                            }
                        case 5: {
                                message.cny = reader.string();
                                break;
                            }
                        case 6: {
                                message.netvalue = reader.string();
                                break;
                            }
                        case 7: {
                                message.buyorsellcnyprice = reader.string();
                                break;
                            }
                        case 8: {
                                message.isfiatconvert = reader.bool();
                                break;
                            }
                        case 9: {
                                message.isrisktip = reader.bool();
                                break;
                            }
                        default:
                            reader.skipType(tag & 7);
                            break;
                        }
                    }
                    return message;
                };

                /**
                 * Decodes a TradeDepthVO message from the specified reader or buffer, length delimited.
                 * @function decodeDelimited
                 * @memberof market.v2.trade.TradeDepthVO
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @returns {market.v2.trade.TradeDepthVO} TradeDepthVO
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                TradeDepthVO.decodeDelimited = function decodeDelimited(reader) {
                    if (!(reader instanceof $Reader))
                        reader = new $Reader(reader);
                    return this.decode(reader, reader.uint32());
                };

                /**
                 * Verifies a TradeDepthVO message.
                 * @function verify
                 * @memberof market.v2.trade.TradeDepthVO
                 * @static
                 * @param {Object.<string,*>} message Plain object to verify
                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
                 */
                TradeDepthVO.verify = function verify(message) {
                    if (typeof message !== "object" || message === null)
                        return "object expected";
                    if (message.bids != null && message.hasOwnProperty("bids")) {
                        var error = $root.market.v2.trade.TradeDepthVO.Bids.verify(message.bids);
                        if (error)
                            return "bids." + error;
                    }
                    if (message.asks != null && message.hasOwnProperty("asks")) {
                        var error = $root.market.v2.trade.TradeDepthVO.Asks.verify(message.asks);
                        if (error)
                            return "asks." + error;
                    }
                    if (message.last != null && message.hasOwnProperty("last"))
                        if (!$util.isString(message.last))
                            return "last: string expected";
                    if (message.open != null && message.hasOwnProperty("open"))
                        if (!$util.isString(message.open))
                            return "open: string expected";
                    if (message.cny != null && message.hasOwnProperty("cny"))
                        if (!$util.isString(message.cny))
                            return "cny: string expected";
                    if (message.netvalue != null && message.hasOwnProperty("netvalue"))
                        if (!$util.isString(message.netvalue))
                            return "netvalue: string expected";
                    if (message.buyorsellcnyprice != null && message.hasOwnProperty("buyorsellcnyprice"))
                        if (!$util.isString(message.buyorsellcnyprice))
                            return "buyorsellcnyprice: string expected";
                    if (message.isfiatconvert != null && message.hasOwnProperty("isfiatconvert"))
                        if (typeof message.isfiatconvert !== "boolean")
                            return "isfiatconvert: boolean expected";
                    if (message.isrisktip != null && message.hasOwnProperty("isrisktip"))
                        if (typeof message.isrisktip !== "boolean")
                            return "isrisktip: boolean expected";
                    return null;
                };

                /**
                 * Creates a TradeDepthVO message from a plain object. Also converts values to their respective internal types.
                 * @function fromObject
                 * @memberof market.v2.trade.TradeDepthVO
                 * @static
                 * @param {Object.<string,*>} object Plain object
                 * @returns {market.v2.trade.TradeDepthVO} TradeDepthVO
                 */
                TradeDepthVO.fromObject = function fromObject(object) {
                    if (object instanceof $root.market.v2.trade.TradeDepthVO)
                        return object;
                    var message = new $root.market.v2.trade.TradeDepthVO();
                    if (object.bids != null) {
                        if (typeof object.bids !== "object")
                            throw TypeError(".market.v2.trade.TradeDepthVO.bids: object expected");
                        message.bids = $root.market.v2.trade.TradeDepthVO.Bids.fromObject(object.bids);
                    }
                    if (object.asks != null) {
                        if (typeof object.asks !== "object")
                            throw TypeError(".market.v2.trade.TradeDepthVO.asks: object expected");
                        message.asks = $root.market.v2.trade.TradeDepthVO.Asks.fromObject(object.asks);
                    }
                    if (object.last != null)
                        message.last = String(object.last);
                    if (object.open != null)
                        message.open = String(object.open);
                    if (object.cny != null)
                        message.cny = String(object.cny);
                    if (object.netvalue != null)
                        message.netvalue = String(object.netvalue);
                    if (object.buyorsellcnyprice != null)
                        message.buyorsellcnyprice = String(object.buyorsellcnyprice);
                    if (object.isfiatconvert != null)
                        message.isfiatconvert = Boolean(object.isfiatconvert);
                    if (object.isrisktip != null)
                        message.isrisktip = Boolean(object.isrisktip);
                    return message;
                };

                /**
                 * Creates a plain object from a TradeDepthVO message. Also converts values to other types if specified.
                 * @function toObject
                 * @memberof market.v2.trade.TradeDepthVO
                 * @static
                 * @param {market.v2.trade.TradeDepthVO} message TradeDepthVO
                 * @param {$protobuf.IConversionOptions} [options] Conversion options
                 * @returns {Object.<string,*>} Plain object
                 */
                TradeDepthVO.toObject = function toObject(message, options) {
                    if (!options)
                        options = {};
                    var object = {};
                    if (options.defaults) {
                        object.bids = null;
                        object.asks = null;
                        object.last = "";
                        object.open = "";
                        object.cny = "";
                        object.netvalue = "";
                        object.buyorsellcnyprice = "";
                        object.isfiatconvert = false;
                        object.isrisktip = false;
                    }
                    if (message.bids != null && message.hasOwnProperty("bids"))
                        object.bids = $root.market.v2.trade.TradeDepthVO.Bids.toObject(message.bids, options);
                    if (message.asks != null && message.hasOwnProperty("asks"))
                        object.asks = $root.market.v2.trade.TradeDepthVO.Asks.toObject(message.asks, options);
                    if (message.last != null && message.hasOwnProperty("last"))
                        object.last = message.last;
                    if (message.open != null && message.hasOwnProperty("open"))
                        object.open = message.open;
                    if (message.cny != null && message.hasOwnProperty("cny"))
                        object.cny = message.cny;
                    if (message.netvalue != null && message.hasOwnProperty("netvalue"))
                        object.netvalue = message.netvalue;
                    if (message.buyorsellcnyprice != null && message.hasOwnProperty("buyorsellcnyprice"))
                        object.buyorsellcnyprice = message.buyorsellcnyprice;
                    if (message.isfiatconvert != null && message.hasOwnProperty("isfiatconvert"))
                        object.isfiatconvert = message.isfiatconvert;
                    if (message.isrisktip != null && message.hasOwnProperty("isrisktip"))
                        object.isrisktip = message.isrisktip;
                    return object;
                };

                /**
                 * Converts this TradeDepthVO to JSON.
                 * @function toJSON
                 * @memberof market.v2.trade.TradeDepthVO
                 * @instance
                 * @returns {Object.<string,*>} JSON object
                 */
                TradeDepthVO.prototype.toJSON = function toJSON() {
                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
                };

                /**
                 * Gets the default type url for TradeDepthVO
                 * @function getTypeUrl
                 * @memberof market.v2.trade.TradeDepthVO
                 * @static
                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns {string} The default type url
                 */
                TradeDepthVO.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
                    if (typeUrlPrefix === undefined) {
                        typeUrlPrefix = "type.googleapis.com";
                    }
                    return typeUrlPrefix + "/market.v2.trade.TradeDepthVO";
                };

                TradeDepthVO.Bids = (function() {

                    /**
                     * Properties of a Bids.
                     * @memberof market.v2.trade.TradeDepthVO
                     * @interface IBids
                     */

                    /**
                     * Constructs a new Bids.
                     * @memberof market.v2.trade.TradeDepthVO
                     * @classdesc Represents a Bids.
                     * @implements IBids
                     * @constructor
                     * @param {market.v2.trade.TradeDepthVO.IBids=} [properties] Properties to set
                     */
                    function Bids(properties) {
                        if (properties)
                            for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                                if (properties[keys[i]] != null)
                                    this[keys[i]] = properties[keys[i]];
                    }

                    /**
                     * Creates a new Bids instance using the specified properties.
                     * @function create
                     * @memberof market.v2.trade.TradeDepthVO.Bids
                     * @static
                     * @param {market.v2.trade.TradeDepthVO.IBids=} [properties] Properties to set
                     * @returns {market.v2.trade.TradeDepthVO.Bids} Bids instance
                     */
                    Bids.create = function create(properties) {
                        return new Bids(properties);
                    };

                    /**
                     * Encodes the specified Bids message. Does not implicitly {@link market.v2.trade.TradeDepthVO.Bids.verify|verify} messages.
                     * @function encode
                     * @memberof market.v2.trade.TradeDepthVO.Bids
                     * @static
                     * @param {market.v2.trade.TradeDepthVO.IBids} message Bids message or plain object to encode
                     * @param {$protobuf.Writer} [writer] Writer to encode to
                     * @returns {$protobuf.Writer} Writer
                     */
                    Bids.encode = function encode(message, writer) {
                        if (!writer)
                            writer = $Writer.create();
                        return writer;
                    };

                    /**
                     * Encodes the specified Bids message, length delimited. Does not implicitly {@link market.v2.trade.TradeDepthVO.Bids.verify|verify} messages.
                     * @function encodeDelimited
                     * @memberof market.v2.trade.TradeDepthVO.Bids
                     * @static
                     * @param {market.v2.trade.TradeDepthVO.IBids} message Bids message or plain object to encode
                     * @param {$protobuf.Writer} [writer] Writer to encode to
                     * @returns {$protobuf.Writer} Writer
                     */
                    Bids.encodeDelimited = function encodeDelimited(message, writer) {
                        return this.encode(message, writer).ldelim();
                    };

                    /**
                     * Decodes a Bids message from the specified reader or buffer.
                     * @function decode
                     * @memberof market.v2.trade.TradeDepthVO.Bids
                     * @static
                     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                     * @param {number} [length] Message length if known beforehand
                     * @returns {market.v2.trade.TradeDepthVO.Bids} Bids
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    Bids.decode = function decode(reader, length) {
                        if (!(reader instanceof $Reader))
                            reader = $Reader.create(reader);
                        var end = length === undefined ? reader.len : reader.pos + length, message = new $root.market.v2.trade.TradeDepthVO.Bids();
                        while (reader.pos < end) {
                            var tag = reader.uint32();
                            switch (tag >>> 3) {
                            default:
                                reader.skipType(tag & 7);
                                break;
                            }
                        }
                        return message;
                    };

                    /**
                     * Decodes a Bids message from the specified reader or buffer, length delimited.
                     * @function decodeDelimited
                     * @memberof market.v2.trade.TradeDepthVO.Bids
                     * @static
                     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                     * @returns {market.v2.trade.TradeDepthVO.Bids} Bids
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    Bids.decodeDelimited = function decodeDelimited(reader) {
                        if (!(reader instanceof $Reader))
                            reader = new $Reader(reader);
                        return this.decode(reader, reader.uint32());
                    };

                    /**
                     * Verifies a Bids message.
                     * @function verify
                     * @memberof market.v2.trade.TradeDepthVO.Bids
                     * @static
                     * @param {Object.<string,*>} message Plain object to verify
                     * @returns {string|null} `null` if valid, otherwise the reason why it is not
                     */
                    Bids.verify = function verify(message) {
                        if (typeof message !== "object" || message === null)
                            return "object expected";
                        return null;
                    };

                    /**
                     * Creates a Bids message from a plain object. Also converts values to their respective internal types.
                     * @function fromObject
                     * @memberof market.v2.trade.TradeDepthVO.Bids
                     * @static
                     * @param {Object.<string,*>} object Plain object
                     * @returns {market.v2.trade.TradeDepthVO.Bids} Bids
                     */
                    Bids.fromObject = function fromObject(object) {
                        if (object instanceof $root.market.v2.trade.TradeDepthVO.Bids)
                            return object;
                        return new $root.market.v2.trade.TradeDepthVO.Bids();
                    };

                    /**
                     * Creates a plain object from a Bids message. Also converts values to other types if specified.
                     * @function toObject
                     * @memberof market.v2.trade.TradeDepthVO.Bids
                     * @static
                     * @param {market.v2.trade.TradeDepthVO.Bids} message Bids
                     * @param {$protobuf.IConversionOptions} [options] Conversion options
                     * @returns {Object.<string,*>} Plain object
                     */
                    Bids.toObject = function toObject() {
                        return {};
                    };

                    /**
                     * Converts this Bids to JSON.
                     * @function toJSON
                     * @memberof market.v2.trade.TradeDepthVO.Bids
                     * @instance
                     * @returns {Object.<string,*>} JSON object
                     */
                    Bids.prototype.toJSON = function toJSON() {
                        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
                    };

                    /**
                     * Gets the default type url for Bids
                     * @function getTypeUrl
                     * @memberof market.v2.trade.TradeDepthVO.Bids
                     * @static
                     * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns {string} The default type url
                     */
                    Bids.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
                        if (typeUrlPrefix === undefined) {
                            typeUrlPrefix = "type.googleapis.com";
                        }
                        return typeUrlPrefix + "/market.v2.trade.TradeDepthVO.Bids";
                    };

                    return Bids;
                })();

                TradeDepthVO.Asks = (function() {

                    /**
                     * Properties of an Asks.
                     * @memberof market.v2.trade.TradeDepthVO
                     * @interface IAsks
                     * @property {Array.<market.v2.trade.TradeDepthVO.Asks.IAskData>|null} [askdataList] Asks askdataList
                     */

                    /**
                     * Constructs a new Asks.
                     * @memberof market.v2.trade.TradeDepthVO
                     * @classdesc Represents an Asks.
                     * @implements IAsks
                     * @constructor
                     * @param {market.v2.trade.TradeDepthVO.IAsks=} [properties] Properties to set
                     */
                    function Asks(properties) {
                        this.askdataList = [];
                        if (properties)
                            for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                                if (properties[keys[i]] != null)
                                    this[keys[i]] = properties[keys[i]];
                    }

                    /**
                     * Asks askdataList.
                     * @member {Array.<market.v2.trade.TradeDepthVO.Asks.IAskData>} askdataList
                     * @memberof market.v2.trade.TradeDepthVO.Asks
                     * @instance
                     */
                    Asks.prototype.askdataList = $util.emptyArray;

                    /**
                     * Creates a new Asks instance using the specified properties.
                     * @function create
                     * @memberof market.v2.trade.TradeDepthVO.Asks
                     * @static
                     * @param {market.v2.trade.TradeDepthVO.IAsks=} [properties] Properties to set
                     * @returns {market.v2.trade.TradeDepthVO.Asks} Asks instance
                     */
                    Asks.create = function create(properties) {
                        return new Asks(properties);
                    };

                    /**
                     * Encodes the specified Asks message. Does not implicitly {@link market.v2.trade.TradeDepthVO.Asks.verify|verify} messages.
                     * @function encode
                     * @memberof market.v2.trade.TradeDepthVO.Asks
                     * @static
                     * @param {market.v2.trade.TradeDepthVO.IAsks} message Asks message or plain object to encode
                     * @param {$protobuf.Writer} [writer] Writer to encode to
                     * @returns {$protobuf.Writer} Writer
                     */
                    Asks.encode = function encode(message, writer) {
                        if (!writer)
                            writer = $Writer.create();
                        if (message.askdataList != null && message.askdataList.length)
                            for (var i = 0; i < message.askdataList.length; ++i)
                                $root.market.v2.trade.TradeDepthVO.Asks.AskData.encode(message.askdataList[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
                        return writer;
                    };

                    /**
                     * Encodes the specified Asks message, length delimited. Does not implicitly {@link market.v2.trade.TradeDepthVO.Asks.verify|verify} messages.
                     * @function encodeDelimited
                     * @memberof market.v2.trade.TradeDepthVO.Asks
                     * @static
                     * @param {market.v2.trade.TradeDepthVO.IAsks} message Asks message or plain object to encode
                     * @param {$protobuf.Writer} [writer] Writer to encode to
                     * @returns {$protobuf.Writer} Writer
                     */
                    Asks.encodeDelimited = function encodeDelimited(message, writer) {
                        return this.encode(message, writer).ldelim();
                    };

                    /**
                     * Decodes an Asks message from the specified reader or buffer.
                     * @function decode
                     * @memberof market.v2.trade.TradeDepthVO.Asks
                     * @static
                     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                     * @param {number} [length] Message length if known beforehand
                     * @returns {market.v2.trade.TradeDepthVO.Asks} Asks
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    Asks.decode = function decode(reader, length) {
                        if (!(reader instanceof $Reader))
                            reader = $Reader.create(reader);
                        var end = length === undefined ? reader.len : reader.pos + length, message = new $root.market.v2.trade.TradeDepthVO.Asks();
                        while (reader.pos < end) {
                            var tag = reader.uint32();
                            switch (tag >>> 3) {
                            case 1: {
                                    if (!(message.askdataList && message.askdataList.length))
                                        message.askdataList = [];
                                    message.askdataList.push($root.market.v2.trade.TradeDepthVO.Asks.AskData.decode(reader, reader.uint32()));
                                    break;
                                }
                            default:
                                reader.skipType(tag & 7);
                                break;
                            }
                        }
                        return message;
                    };

                    /**
                     * Decodes an Asks message from the specified reader or buffer, length delimited.
                     * @function decodeDelimited
                     * @memberof market.v2.trade.TradeDepthVO.Asks
                     * @static
                     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                     * @returns {market.v2.trade.TradeDepthVO.Asks} Asks
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    Asks.decodeDelimited = function decodeDelimited(reader) {
                        if (!(reader instanceof $Reader))
                            reader = new $Reader(reader);
                        return this.decode(reader, reader.uint32());
                    };

                    /**
                     * Verifies an Asks message.
                     * @function verify
                     * @memberof market.v2.trade.TradeDepthVO.Asks
                     * @static
                     * @param {Object.<string,*>} message Plain object to verify
                     * @returns {string|null} `null` if valid, otherwise the reason why it is not
                     */
                    Asks.verify = function verify(message) {
                        if (typeof message !== "object" || message === null)
                            return "object expected";
                        if (message.askdataList != null && message.hasOwnProperty("askdataList")) {
                            if (!Array.isArray(message.askdataList))
                                return "askdataList: array expected";
                            for (var i = 0; i < message.askdataList.length; ++i) {
                                var error = $root.market.v2.trade.TradeDepthVO.Asks.AskData.verify(message.askdataList[i]);
                                if (error)
                                    return "askdataList." + error;
                            }
                        }
                        return null;
                    };

                    /**
                     * Creates an Asks message from a plain object. Also converts values to their respective internal types.
                     * @function fromObject
                     * @memberof market.v2.trade.TradeDepthVO.Asks
                     * @static
                     * @param {Object.<string,*>} object Plain object
                     * @returns {market.v2.trade.TradeDepthVO.Asks} Asks
                     */
                    Asks.fromObject = function fromObject(object) {
                        if (object instanceof $root.market.v2.trade.TradeDepthVO.Asks)
                            return object;
                        var message = new $root.market.v2.trade.TradeDepthVO.Asks();
                        if (object.askdataList) {
                            if (!Array.isArray(object.askdataList))
                                throw TypeError(".market.v2.trade.TradeDepthVO.Asks.askdataList: array expected");
                            message.askdataList = [];
                            for (var i = 0; i < object.askdataList.length; ++i) {
                                if (typeof object.askdataList[i] !== "object")
                                    throw TypeError(".market.v2.trade.TradeDepthVO.Asks.askdataList: object expected");
                                message.askdataList[i] = $root.market.v2.trade.TradeDepthVO.Asks.AskData.fromObject(object.askdataList[i]);
                            }
                        }
                        return message;
                    };

                    /**
                     * Creates a plain object from an Asks message. Also converts values to other types if specified.
                     * @function toObject
                     * @memberof market.v2.trade.TradeDepthVO.Asks
                     * @static
                     * @param {market.v2.trade.TradeDepthVO.Asks} message Asks
                     * @param {$protobuf.IConversionOptions} [options] Conversion options
                     * @returns {Object.<string,*>} Plain object
                     */
                    Asks.toObject = function toObject(message, options) {
                        if (!options)
                            options = {};
                        var object = {};
                        if (options.arrays || options.defaults)
                            object.askdataList = [];
                        if (message.askdataList && message.askdataList.length) {
                            object.askdataList = [];
                            for (var j = 0; j < message.askdataList.length; ++j)
                                object.askdataList[j] = $root.market.v2.trade.TradeDepthVO.Asks.AskData.toObject(message.askdataList[j], options);
                        }
                        return object;
                    };

                    /**
                     * Converts this Asks to JSON.
                     * @function toJSON
                     * @memberof market.v2.trade.TradeDepthVO.Asks
                     * @instance
                     * @returns {Object.<string,*>} JSON object
                     */
                    Asks.prototype.toJSON = function toJSON() {
                        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
                    };

                    /**
                     * Gets the default type url for Asks
                     * @function getTypeUrl
                     * @memberof market.v2.trade.TradeDepthVO.Asks
                     * @static
                     * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns {string} The default type url
                     */
                    Asks.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
                        if (typeUrlPrefix === undefined) {
                            typeUrlPrefix = "type.googleapis.com";
                        }
                        return typeUrlPrefix + "/market.v2.trade.TradeDepthVO.Asks";
                    };

                    Asks.AskData = (function() {

                        /**
                         * Properties of an AskData.
                         * @memberof market.v2.trade.TradeDepthVO.Asks
                         * @interface IAskData
                         */

                        /**
                         * Constructs a new AskData.
                         * @memberof market.v2.trade.TradeDepthVO.Asks
                         * @classdesc Represents an AskData.
                         * @implements IAskData
                         * @constructor
                         * @param {market.v2.trade.TradeDepthVO.Asks.IAskData=} [properties] Properties to set
                         */
                        function AskData(properties) {
                            if (properties)
                                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                                    if (properties[keys[i]] != null)
                                        this[keys[i]] = properties[keys[i]];
                        }

                        /**
                         * Creates a new AskData instance using the specified properties.
                         * @function create
                         * @memberof market.v2.trade.TradeDepthVO.Asks.AskData
                         * @static
                         * @param {market.v2.trade.TradeDepthVO.Asks.IAskData=} [properties] Properties to set
                         * @returns {market.v2.trade.TradeDepthVO.Asks.AskData} AskData instance
                         */
                        AskData.create = function create(properties) {
                            return new AskData(properties);
                        };

                        /**
                         * Encodes the specified AskData message. Does not implicitly {@link market.v2.trade.TradeDepthVO.Asks.AskData.verify|verify} messages.
                         * @function encode
                         * @memberof market.v2.trade.TradeDepthVO.Asks.AskData
                         * @static
                         * @param {market.v2.trade.TradeDepthVO.Asks.IAskData} message AskData message or plain object to encode
                         * @param {$protobuf.Writer} [writer] Writer to encode to
                         * @returns {$protobuf.Writer} Writer
                         */
                        AskData.encode = function encode(message, writer) {
                            if (!writer)
                                writer = $Writer.create();
                            return writer;
                        };

                        /**
                         * Encodes the specified AskData message, length delimited. Does not implicitly {@link market.v2.trade.TradeDepthVO.Asks.AskData.verify|verify} messages.
                         * @function encodeDelimited
                         * @memberof market.v2.trade.TradeDepthVO.Asks.AskData
                         * @static
                         * @param {market.v2.trade.TradeDepthVO.Asks.IAskData} message AskData message or plain object to encode
                         * @param {$protobuf.Writer} [writer] Writer to encode to
                         * @returns {$protobuf.Writer} Writer
                         */
                        AskData.encodeDelimited = function encodeDelimited(message, writer) {
                            return this.encode(message, writer).ldelim();
                        };

                        /**
                         * Decodes an AskData message from the specified reader or buffer.
                         * @function decode
                         * @memberof market.v2.trade.TradeDepthVO.Asks.AskData
                         * @static
                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                         * @param {number} [length] Message length if known beforehand
                         * @returns {market.v2.trade.TradeDepthVO.Asks.AskData} AskData
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        AskData.decode = function decode(reader, length) {
                            if (!(reader instanceof $Reader))
                                reader = $Reader.create(reader);
                            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.market.v2.trade.TradeDepthVO.Asks.AskData();
                            while (reader.pos < end) {
                                var tag = reader.uint32();
                                switch (tag >>> 3) {
                                default:
                                    reader.skipType(tag & 7);
                                    break;
                                }
                            }
                            return message;
                        };

                        /**
                         * Decodes an AskData message from the specified reader or buffer, length delimited.
                         * @function decodeDelimited
                         * @memberof market.v2.trade.TradeDepthVO.Asks.AskData
                         * @static
                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                         * @returns {market.v2.trade.TradeDepthVO.Asks.AskData} AskData
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        AskData.decodeDelimited = function decodeDelimited(reader) {
                            if (!(reader instanceof $Reader))
                                reader = new $Reader(reader);
                            return this.decode(reader, reader.uint32());
                        };

                        /**
                         * Verifies an AskData message.
                         * @function verify
                         * @memberof market.v2.trade.TradeDepthVO.Asks.AskData
                         * @static
                         * @param {Object.<string,*>} message Plain object to verify
                         * @returns {string|null} `null` if valid, otherwise the reason why it is not
                         */
                        AskData.verify = function verify(message) {
                            if (typeof message !== "object" || message === null)
                                return "object expected";
                            return null;
                        };

                        /**
                         * Creates an AskData message from a plain object. Also converts values to their respective internal types.
                         * @function fromObject
                         * @memberof market.v2.trade.TradeDepthVO.Asks.AskData
                         * @static
                         * @param {Object.<string,*>} object Plain object
                         * @returns {market.v2.trade.TradeDepthVO.Asks.AskData} AskData
                         */
                        AskData.fromObject = function fromObject(object) {
                            if (object instanceof $root.market.v2.trade.TradeDepthVO.Asks.AskData)
                                return object;
                            return new $root.market.v2.trade.TradeDepthVO.Asks.AskData();
                        };

                        /**
                         * Creates a plain object from an AskData message. Also converts values to other types if specified.
                         * @function toObject
                         * @memberof market.v2.trade.TradeDepthVO.Asks.AskData
                         * @static
                         * @param {market.v2.trade.TradeDepthVO.Asks.AskData} message AskData
                         * @param {$protobuf.IConversionOptions} [options] Conversion options
                         * @returns {Object.<string,*>} Plain object
                         */
                        AskData.toObject = function toObject() {
                            return {};
                        };

                        /**
                         * Converts this AskData to JSON.
                         * @function toJSON
                         * @memberof market.v2.trade.TradeDepthVO.Asks.AskData
                         * @instance
                         * @returns {Object.<string,*>} JSON object
                         */
                        AskData.prototype.toJSON = function toJSON() {
                            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
                        };

                        /**
                         * Gets the default type url for AskData
                         * @function getTypeUrl
                         * @memberof market.v2.trade.TradeDepthVO.Asks.AskData
                         * @static
                         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns {string} The default type url
                         */
                        AskData.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
                            if (typeUrlPrefix === undefined) {
                                typeUrlPrefix = "type.googleapis.com";
                            }
                            return typeUrlPrefix + "/market.v2.trade.TradeDepthVO.Asks.AskData";
                        };

                        return AskData;
                    })();

                    return Asks;
                })();

                return TradeDepthVO;
            })();

            trade.TradeDetailList = (function() {

                /**
                 * Properties of a TradeDetailList.
                 * @memberof market.v2.trade
                 * @interface ITradeDetailList
                 * @property {Array.<market.v2.trade.ITradeDetailInfo>|null} [list] TradeDetailList list
                 */

                /**
                 * Constructs a new TradeDetailList.
                 * @memberof market.v2.trade
                 * @classdesc Represents a TradeDetailList.
                 * @implements ITradeDetailList
                 * @constructor
                 * @param {market.v2.trade.ITradeDetailList=} [properties] Properties to set
                 */
                function TradeDetailList(properties) {
                    this.list = [];
                    if (properties)
                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                            if (properties[keys[i]] != null)
                                this[keys[i]] = properties[keys[i]];
                }

                /**
                 * TradeDetailList list.
                 * @member {Array.<market.v2.trade.ITradeDetailInfo>} list
                 * @memberof market.v2.trade.TradeDetailList
                 * @instance
                 */
                TradeDetailList.prototype.list = $util.emptyArray;

                /**
                 * Creates a new TradeDetailList instance using the specified properties.
                 * @function create
                 * @memberof market.v2.trade.TradeDetailList
                 * @static
                 * @param {market.v2.trade.ITradeDetailList=} [properties] Properties to set
                 * @returns {market.v2.trade.TradeDetailList} TradeDetailList instance
                 */
                TradeDetailList.create = function create(properties) {
                    return new TradeDetailList(properties);
                };

                /**
                 * Encodes the specified TradeDetailList message. Does not implicitly {@link market.v2.trade.TradeDetailList.verify|verify} messages.
                 * @function encode
                 * @memberof market.v2.trade.TradeDetailList
                 * @static
                 * @param {market.v2.trade.ITradeDetailList} message TradeDetailList message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                TradeDetailList.encode = function encode(message, writer) {
                    if (!writer)
                        writer = $Writer.create();
                    if (message.list != null && message.list.length)
                        for (var i = 0; i < message.list.length; ++i)
                            $root.market.v2.trade.TradeDetailInfo.encode(message.list[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
                    return writer;
                };

                /**
                 * Encodes the specified TradeDetailList message, length delimited. Does not implicitly {@link market.v2.trade.TradeDetailList.verify|verify} messages.
                 * @function encodeDelimited
                 * @memberof market.v2.trade.TradeDetailList
                 * @static
                 * @param {market.v2.trade.ITradeDetailList} message TradeDetailList message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                TradeDetailList.encodeDelimited = function encodeDelimited(message, writer) {
                    return this.encode(message, writer).ldelim();
                };

                /**
                 * Decodes a TradeDetailList message from the specified reader or buffer.
                 * @function decode
                 * @memberof market.v2.trade.TradeDetailList
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @param {number} [length] Message length if known beforehand
                 * @returns {market.v2.trade.TradeDetailList} TradeDetailList
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                TradeDetailList.decode = function decode(reader, length) {
                    if (!(reader instanceof $Reader))
                        reader = $Reader.create(reader);
                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.market.v2.trade.TradeDetailList();
                    while (reader.pos < end) {
                        var tag = reader.uint32();
                        switch (tag >>> 3) {
                        case 1: {
                                if (!(message.list && message.list.length))
                                    message.list = [];
                                message.list.push($root.market.v2.trade.TradeDetailInfo.decode(reader, reader.uint32()));
                                break;
                            }
                        default:
                            reader.skipType(tag & 7);
                            break;
                        }
                    }
                    return message;
                };

                /**
                 * Decodes a TradeDetailList message from the specified reader or buffer, length delimited.
                 * @function decodeDelimited
                 * @memberof market.v2.trade.TradeDetailList
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @returns {market.v2.trade.TradeDetailList} TradeDetailList
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                TradeDetailList.decodeDelimited = function decodeDelimited(reader) {
                    if (!(reader instanceof $Reader))
                        reader = new $Reader(reader);
                    return this.decode(reader, reader.uint32());
                };

                /**
                 * Verifies a TradeDetailList message.
                 * @function verify
                 * @memberof market.v2.trade.TradeDetailList
                 * @static
                 * @param {Object.<string,*>} message Plain object to verify
                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
                 */
                TradeDetailList.verify = function verify(message) {
                    if (typeof message !== "object" || message === null)
                        return "object expected";
                    if (message.list != null && message.hasOwnProperty("list")) {
                        if (!Array.isArray(message.list))
                            return "list: array expected";
                        for (var i = 0; i < message.list.length; ++i) {
                            var error = $root.market.v2.trade.TradeDetailInfo.verify(message.list[i]);
                            if (error)
                                return "list." + error;
                        }
                    }
                    return null;
                };

                /**
                 * Creates a TradeDetailList message from a plain object. Also converts values to their respective internal types.
                 * @function fromObject
                 * @memberof market.v2.trade.TradeDetailList
                 * @static
                 * @param {Object.<string,*>} object Plain object
                 * @returns {market.v2.trade.TradeDetailList} TradeDetailList
                 */
                TradeDetailList.fromObject = function fromObject(object) {
                    if (object instanceof $root.market.v2.trade.TradeDetailList)
                        return object;
                    var message = new $root.market.v2.trade.TradeDetailList();
                    if (object.list) {
                        if (!Array.isArray(object.list))
                            throw TypeError(".market.v2.trade.TradeDetailList.list: array expected");
                        message.list = [];
                        for (var i = 0; i < object.list.length; ++i) {
                            if (typeof object.list[i] !== "object")
                                throw TypeError(".market.v2.trade.TradeDetailList.list: object expected");
                            message.list[i] = $root.market.v2.trade.TradeDetailInfo.fromObject(object.list[i]);
                        }
                    }
                    return message;
                };

                /**
                 * Creates a plain object from a TradeDetailList message. Also converts values to other types if specified.
                 * @function toObject
                 * @memberof market.v2.trade.TradeDetailList
                 * @static
                 * @param {market.v2.trade.TradeDetailList} message TradeDetailList
                 * @param {$protobuf.IConversionOptions} [options] Conversion options
                 * @returns {Object.<string,*>} Plain object
                 */
                TradeDetailList.toObject = function toObject(message, options) {
                    if (!options)
                        options = {};
                    var object = {};
                    if (options.arrays || options.defaults)
                        object.list = [];
                    if (message.list && message.list.length) {
                        object.list = [];
                        for (var j = 0; j < message.list.length; ++j)
                            object.list[j] = $root.market.v2.trade.TradeDetailInfo.toObject(message.list[j], options);
                    }
                    return object;
                };

                /**
                 * Converts this TradeDetailList to JSON.
                 * @function toJSON
                 * @memberof market.v2.trade.TradeDetailList
                 * @instance
                 * @returns {Object.<string,*>} JSON object
                 */
                TradeDetailList.prototype.toJSON = function toJSON() {
                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
                };

                /**
                 * Gets the default type url for TradeDetailList
                 * @function getTypeUrl
                 * @memberof market.v2.trade.TradeDetailList
                 * @static
                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns {string} The default type url
                 */
                TradeDetailList.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
                    if (typeUrlPrefix === undefined) {
                        typeUrlPrefix = "type.googleapis.com";
                    }
                    return typeUrlPrefix + "/market.v2.trade.TradeDetailList";
                };

                return TradeDetailList;
            })();

            trade.TradeDetailInfo = (function() {

                /**
                 * Properties of a TradeDetailInfo.
                 * @memberof market.v2.trade
                 * @interface ITradeDetailInfo
                 * @property {number|Long|null} [tradeid] TradeDetailInfo tradeid
                 * @property {string|null} [amount] TradeDetailInfo amount
                 * @property {string|null} [ts] TradeDetailInfo ts
                 * @property {string|null} [price] TradeDetailInfo price
                 * @property {string|null} [direction] TradeDetailInfo direction
                 */

                /**
                 * Constructs a new TradeDetailInfo.
                 * @memberof market.v2.trade
                 * @classdesc Represents a TradeDetailInfo.
                 * @implements ITradeDetailInfo
                 * @constructor
                 * @param {market.v2.trade.ITradeDetailInfo=} [properties] Properties to set
                 */
                function TradeDetailInfo(properties) {
                    if (properties)
                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                            if (properties[keys[i]] != null)
                                this[keys[i]] = properties[keys[i]];
                }

                /**
                 * TradeDetailInfo tradeid.
                 * @member {number|Long} tradeid
                 * @memberof market.v2.trade.TradeDetailInfo
                 * @instance
                 */
                TradeDetailInfo.prototype.tradeid = $util.Long ? $util.Long.fromBits(0,0,false) : 0;

                /**
                 * TradeDetailInfo amount.
                 * @member {string} amount
                 * @memberof market.v2.trade.TradeDetailInfo
                 * @instance
                 */
                TradeDetailInfo.prototype.amount = "";

                /**
                 * TradeDetailInfo ts.
                 * @member {string} ts
                 * @memberof market.v2.trade.TradeDetailInfo
                 * @instance
                 */
                TradeDetailInfo.prototype.ts = "";

                /**
                 * TradeDetailInfo price.
                 * @member {string} price
                 * @memberof market.v2.trade.TradeDetailInfo
                 * @instance
                 */
                TradeDetailInfo.prototype.price = "";

                /**
                 * TradeDetailInfo direction.
                 * @member {string} direction
                 * @memberof market.v2.trade.TradeDetailInfo
                 * @instance
                 */
                TradeDetailInfo.prototype.direction = "";

                /**
                 * Creates a new TradeDetailInfo instance using the specified properties.
                 * @function create
                 * @memberof market.v2.trade.TradeDetailInfo
                 * @static
                 * @param {market.v2.trade.ITradeDetailInfo=} [properties] Properties to set
                 * @returns {market.v2.trade.TradeDetailInfo} TradeDetailInfo instance
                 */
                TradeDetailInfo.create = function create(properties) {
                    return new TradeDetailInfo(properties);
                };

                /**
                 * Encodes the specified TradeDetailInfo message. Does not implicitly {@link market.v2.trade.TradeDetailInfo.verify|verify} messages.
                 * @function encode
                 * @memberof market.v2.trade.TradeDetailInfo
                 * @static
                 * @param {market.v2.trade.ITradeDetailInfo} message TradeDetailInfo message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                TradeDetailInfo.encode = function encode(message, writer) {
                    if (!writer)
                        writer = $Writer.create();
                    if (message.tradeid != null && Object.hasOwnProperty.call(message, "tradeid"))
                        writer.uint32(/* id 1, wireType 0 =*/8).int64(message.tradeid);
                    if (message.amount != null && Object.hasOwnProperty.call(message, "amount"))
                        writer.uint32(/* id 2, wireType 2 =*/18).string(message.amount);
                    if (message.ts != null && Object.hasOwnProperty.call(message, "ts"))
                        writer.uint32(/* id 3, wireType 2 =*/26).string(message.ts);
                    if (message.price != null && Object.hasOwnProperty.call(message, "price"))
                        writer.uint32(/* id 4, wireType 2 =*/34).string(message.price);
                    if (message.direction != null && Object.hasOwnProperty.call(message, "direction"))
                        writer.uint32(/* id 5, wireType 2 =*/42).string(message.direction);
                    return writer;
                };

                /**
                 * Encodes the specified TradeDetailInfo message, length delimited. Does not implicitly {@link market.v2.trade.TradeDetailInfo.verify|verify} messages.
                 * @function encodeDelimited
                 * @memberof market.v2.trade.TradeDetailInfo
                 * @static
                 * @param {market.v2.trade.ITradeDetailInfo} message TradeDetailInfo message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                TradeDetailInfo.encodeDelimited = function encodeDelimited(message, writer) {
                    return this.encode(message, writer).ldelim();
                };

                /**
                 * Decodes a TradeDetailInfo message from the specified reader or buffer.
                 * @function decode
                 * @memberof market.v2.trade.TradeDetailInfo
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @param {number} [length] Message length if known beforehand
                 * @returns {market.v2.trade.TradeDetailInfo} TradeDetailInfo
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                TradeDetailInfo.decode = function decode(reader, length) {
                    if (!(reader instanceof $Reader))
                        reader = $Reader.create(reader);
                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.market.v2.trade.TradeDetailInfo();
                    while (reader.pos < end) {
                        var tag = reader.uint32();
                        switch (tag >>> 3) {
                        case 1: {
                                message.tradeid = reader.int64();
                                break;
                            }
                        case 2: {
                                message.amount = reader.string();
                                break;
                            }
                        case 3: {
                                message.ts = reader.string();
                                break;
                            }
                        case 4: {
                                message.price = reader.string();
                                break;
                            }
                        case 5: {
                                message.direction = reader.string();
                                break;
                            }
                        default:
                            reader.skipType(tag & 7);
                            break;
                        }
                    }
                    return message;
                };

                /**
                 * Decodes a TradeDetailInfo message from the specified reader or buffer, length delimited.
                 * @function decodeDelimited
                 * @memberof market.v2.trade.TradeDetailInfo
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @returns {market.v2.trade.TradeDetailInfo} TradeDetailInfo
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                TradeDetailInfo.decodeDelimited = function decodeDelimited(reader) {
                    if (!(reader instanceof $Reader))
                        reader = new $Reader(reader);
                    return this.decode(reader, reader.uint32());
                };

                /**
                 * Verifies a TradeDetailInfo message.
                 * @function verify
                 * @memberof market.v2.trade.TradeDetailInfo
                 * @static
                 * @param {Object.<string,*>} message Plain object to verify
                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
                 */
                TradeDetailInfo.verify = function verify(message) {
                    if (typeof message !== "object" || message === null)
                        return "object expected";
                    if (message.tradeid != null && message.hasOwnProperty("tradeid"))
                        if (!$util.isInteger(message.tradeid) && !(message.tradeid && $util.isInteger(message.tradeid.low) && $util.isInteger(message.tradeid.high)))
                            return "tradeid: integer|Long expected";
                    if (message.amount != null && message.hasOwnProperty("amount"))
                        if (!$util.isString(message.amount))
                            return "amount: string expected";
                    if (message.ts != null && message.hasOwnProperty("ts"))
                        if (!$util.isString(message.ts))
                            return "ts: string expected";
                    if (message.price != null && message.hasOwnProperty("price"))
                        if (!$util.isString(message.price))
                            return "price: string expected";
                    if (message.direction != null && message.hasOwnProperty("direction"))
                        if (!$util.isString(message.direction))
                            return "direction: string expected";
                    return null;
                };

                /**
                 * Creates a TradeDetailInfo message from a plain object. Also converts values to their respective internal types.
                 * @function fromObject
                 * @memberof market.v2.trade.TradeDetailInfo
                 * @static
                 * @param {Object.<string,*>} object Plain object
                 * @returns {market.v2.trade.TradeDetailInfo} TradeDetailInfo
                 */
                TradeDetailInfo.fromObject = function fromObject(object) {
                    if (object instanceof $root.market.v2.trade.TradeDetailInfo)
                        return object;
                    var message = new $root.market.v2.trade.TradeDetailInfo();
                    if (object.tradeid != null)
                        if ($util.Long)
                            (message.tradeid = $util.Long.fromValue(object.tradeid)).unsigned = false;
                        else if (typeof object.tradeid === "string")
                            message.tradeid = parseInt(object.tradeid, 10);
                        else if (typeof object.tradeid === "number")
                            message.tradeid = object.tradeid;
                        else if (typeof object.tradeid === "object")
                            message.tradeid = new $util.LongBits(object.tradeid.low >>> 0, object.tradeid.high >>> 0).toNumber();
                    if (object.amount != null)
                        message.amount = String(object.amount);
                    if (object.ts != null)
                        message.ts = String(object.ts);
                    if (object.price != null)
                        message.price = String(object.price);
                    if (object.direction != null)
                        message.direction = String(object.direction);
                    return message;
                };

                /**
                 * Creates a plain object from a TradeDetailInfo message. Also converts values to other types if specified.
                 * @function toObject
                 * @memberof market.v2.trade.TradeDetailInfo
                 * @static
                 * @param {market.v2.trade.TradeDetailInfo} message TradeDetailInfo
                 * @param {$protobuf.IConversionOptions} [options] Conversion options
                 * @returns {Object.<string,*>} Plain object
                 */
                TradeDetailInfo.toObject = function toObject(message, options) {
                    if (!options)
                        options = {};
                    var object = {};
                    if (options.defaults) {
                        if ($util.Long) {
                            var long = new $util.Long(0, 0, false);
                            object.tradeid = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
                        } else
                            object.tradeid = options.longs === String ? "0" : 0;
                        object.amount = "";
                        object.ts = "";
                        object.price = "";
                        object.direction = "";
                    }
                    if (message.tradeid != null && message.hasOwnProperty("tradeid"))
                        if (typeof message.tradeid === "number")
                            object.tradeid = options.longs === String ? String(message.tradeid) : message.tradeid;
                        else
                            object.tradeid = options.longs === String ? $util.Long.prototype.toString.call(message.tradeid) : options.longs === Number ? new $util.LongBits(message.tradeid.low >>> 0, message.tradeid.high >>> 0).toNumber() : message.tradeid;
                    if (message.amount != null && message.hasOwnProperty("amount"))
                        object.amount = message.amount;
                    if (message.ts != null && message.hasOwnProperty("ts"))
                        object.ts = message.ts;
                    if (message.price != null && message.hasOwnProperty("price"))
                        object.price = message.price;
                    if (message.direction != null && message.hasOwnProperty("direction"))
                        object.direction = message.direction;
                    return object;
                };

                /**
                 * Converts this TradeDetailInfo to JSON.
                 * @function toJSON
                 * @memberof market.v2.trade.TradeDetailInfo
                 * @instance
                 * @returns {Object.<string,*>} JSON object
                 */
                TradeDetailInfo.prototype.toJSON = function toJSON() {
                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
                };

                /**
                 * Gets the default type url for TradeDetailInfo
                 * @function getTypeUrl
                 * @memberof market.v2.trade.TradeDetailInfo
                 * @static
                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns {string} The default type url
                 */
                TradeDetailInfo.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
                    if (typeUrlPrefix === undefined) {
                        typeUrlPrefix = "type.googleapis.com";
                    }
                    return typeUrlPrefix + "/market.v2.trade.TradeDetailInfo";
                };

                return TradeDetailInfo;
            })();

            trade.TradeAreaPair = (function() {

                /**
                 * Properties of a TradeAreaPair.
                 * @memberof market.v2.trade
                 * @interface ITradeAreaPair
                 * @property {Array.<market.v2.trade.ITradeAreaPairInfo>|null} [listList] TradeAreaPair listList
                 */

                /**
                 * Constructs a new TradeAreaPair.
                 * @memberof market.v2.trade
                 * @classdesc Represents a TradeAreaPair.
                 * @implements ITradeAreaPair
                 * @constructor
                 * @param {market.v2.trade.ITradeAreaPair=} [properties] Properties to set
                 */
                function TradeAreaPair(properties) {
                    this.listList = [];
                    if (properties)
                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                            if (properties[keys[i]] != null)
                                this[keys[i]] = properties[keys[i]];
                }

                /**
                 * TradeAreaPair listList.
                 * @member {Array.<market.v2.trade.ITradeAreaPairInfo>} listList
                 * @memberof market.v2.trade.TradeAreaPair
                 * @instance
                 */
                TradeAreaPair.prototype.listList = $util.emptyArray;

                /**
                 * Creates a new TradeAreaPair instance using the specified properties.
                 * @function create
                 * @memberof market.v2.trade.TradeAreaPair
                 * @static
                 * @param {market.v2.trade.ITradeAreaPair=} [properties] Properties to set
                 * @returns {market.v2.trade.TradeAreaPair} TradeAreaPair instance
                 */
                TradeAreaPair.create = function create(properties) {
                    return new TradeAreaPair(properties);
                };

                /**
                 * Encodes the specified TradeAreaPair message. Does not implicitly {@link market.v2.trade.TradeAreaPair.verify|verify} messages.
                 * @function encode
                 * @memberof market.v2.trade.TradeAreaPair
                 * @static
                 * @param {market.v2.trade.ITradeAreaPair} message TradeAreaPair message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                TradeAreaPair.encode = function encode(message, writer) {
                    if (!writer)
                        writer = $Writer.create();
                    if (message.listList != null && message.listList.length)
                        for (var i = 0; i < message.listList.length; ++i)
                            $root.market.v2.trade.TradeAreaPairInfo.encode(message.listList[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
                    return writer;
                };

                /**
                 * Encodes the specified TradeAreaPair message, length delimited. Does not implicitly {@link market.v2.trade.TradeAreaPair.verify|verify} messages.
                 * @function encodeDelimited
                 * @memberof market.v2.trade.TradeAreaPair
                 * @static
                 * @param {market.v2.trade.ITradeAreaPair} message TradeAreaPair message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                TradeAreaPair.encodeDelimited = function encodeDelimited(message, writer) {
                    return this.encode(message, writer).ldelim();
                };

                /**
                 * Decodes a TradeAreaPair message from the specified reader or buffer.
                 * @function decode
                 * @memberof market.v2.trade.TradeAreaPair
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @param {number} [length] Message length if known beforehand
                 * @returns {market.v2.trade.TradeAreaPair} TradeAreaPair
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                TradeAreaPair.decode = function decode(reader, length) {
                    if (!(reader instanceof $Reader))
                        reader = $Reader.create(reader);
                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.market.v2.trade.TradeAreaPair();
                    while (reader.pos < end) {
                        var tag = reader.uint32();
                        switch (tag >>> 3) {
                        case 1: {
                                if (!(message.listList && message.listList.length))
                                    message.listList = [];
                                message.listList.push($root.market.v2.trade.TradeAreaPairInfo.decode(reader, reader.uint32()));
                                break;
                            }
                        default:
                            reader.skipType(tag & 7);
                            break;
                        }
                    }
                    return message;
                };

                /**
                 * Decodes a TradeAreaPair message from the specified reader or buffer, length delimited.
                 * @function decodeDelimited
                 * @memberof market.v2.trade.TradeAreaPair
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @returns {market.v2.trade.TradeAreaPair} TradeAreaPair
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                TradeAreaPair.decodeDelimited = function decodeDelimited(reader) {
                    if (!(reader instanceof $Reader))
                        reader = new $Reader(reader);
                    return this.decode(reader, reader.uint32());
                };

                /**
                 * Verifies a TradeAreaPair message.
                 * @function verify
                 * @memberof market.v2.trade.TradeAreaPair
                 * @static
                 * @param {Object.<string,*>} message Plain object to verify
                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
                 */
                TradeAreaPair.verify = function verify(message) {
                    if (typeof message !== "object" || message === null)
                        return "object expected";
                    if (message.listList != null && message.hasOwnProperty("listList")) {
                        if (!Array.isArray(message.listList))
                            return "listList: array expected";
                        for (var i = 0; i < message.listList.length; ++i) {
                            var error = $root.market.v2.trade.TradeAreaPairInfo.verify(message.listList[i]);
                            if (error)
                                return "listList." + error;
                        }
                    }
                    return null;
                };

                /**
                 * Creates a TradeAreaPair message from a plain object. Also converts values to their respective internal types.
                 * @function fromObject
                 * @memberof market.v2.trade.TradeAreaPair
                 * @static
                 * @param {Object.<string,*>} object Plain object
                 * @returns {market.v2.trade.TradeAreaPair} TradeAreaPair
                 */
                TradeAreaPair.fromObject = function fromObject(object) {
                    if (object instanceof $root.market.v2.trade.TradeAreaPair)
                        return object;
                    var message = new $root.market.v2.trade.TradeAreaPair();
                    if (object.listList) {
                        if (!Array.isArray(object.listList))
                            throw TypeError(".market.v2.trade.TradeAreaPair.listList: array expected");
                        message.listList = [];
                        for (var i = 0; i < object.listList.length; ++i) {
                            if (typeof object.listList[i] !== "object")
                                throw TypeError(".market.v2.trade.TradeAreaPair.listList: object expected");
                            message.listList[i] = $root.market.v2.trade.TradeAreaPairInfo.fromObject(object.listList[i]);
                        }
                    }
                    return message;
                };

                /**
                 * Creates a plain object from a TradeAreaPair message. Also converts values to other types if specified.
                 * @function toObject
                 * @memberof market.v2.trade.TradeAreaPair
                 * @static
                 * @param {market.v2.trade.TradeAreaPair} message TradeAreaPair
                 * @param {$protobuf.IConversionOptions} [options] Conversion options
                 * @returns {Object.<string,*>} Plain object
                 */
                TradeAreaPair.toObject = function toObject(message, options) {
                    if (!options)
                        options = {};
                    var object = {};
                    if (options.arrays || options.defaults)
                        object.listList = [];
                    if (message.listList && message.listList.length) {
                        object.listList = [];
                        for (var j = 0; j < message.listList.length; ++j)
                            object.listList[j] = $root.market.v2.trade.TradeAreaPairInfo.toObject(message.listList[j], options);
                    }
                    return object;
                };

                /**
                 * Converts this TradeAreaPair to JSON.
                 * @function toJSON
                 * @memberof market.v2.trade.TradeAreaPair
                 * @instance
                 * @returns {Object.<string,*>} JSON object
                 */
                TradeAreaPair.prototype.toJSON = function toJSON() {
                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
                };

                /**
                 * Gets the default type url for TradeAreaPair
                 * @function getTypeUrl
                 * @memberof market.v2.trade.TradeAreaPair
                 * @static
                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns {string} The default type url
                 */
                TradeAreaPair.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
                    if (typeUrlPrefix === undefined) {
                        typeUrlPrefix = "type.googleapis.com";
                    }
                    return typeUrlPrefix + "/market.v2.trade.TradeAreaPair";
                };

                return TradeAreaPair;
            })();

            trade.TradeAreaPairInfo = (function() {

                /**
                 * Properties of a TradeAreaPairInfo.
                 * @memberof market.v2.trade
                 * @interface ITradeAreaPairInfo
                 * @property {number|null} [tradeid] TradeAreaPairInfo tradeid
                 * @property {string|null} [cny] TradeAreaPairInfo cny
                 * @property {string|null} [buy] TradeAreaPairInfo buy
                 * @property {string|null} [lever] TradeAreaPairInfo lever
                 * @property {string|null} [sell] TradeAreaPairInfo sell
                 * @property {string|null} [last] TradeAreaPairInfo last
                 * @property {string|null} [volume] TradeAreaPairInfo volume
                 * @property {string|null} [change] TradeAreaPairInfo change
                 * @property {string|null} [high] TradeAreaPairInfo high
                 * @property {string|null} [low] TradeAreaPairInfo low
                 * @property {string|null} [isopen] TradeAreaPairInfo isopen
                 * @property {string|null} [open] TradeAreaPairInfo open
                 * @property {string|null} [amount] TradeAreaPairInfo amount
                 * @property {boolean|null} [isfiatconvert] TradeAreaPairInfo isfiatconvert
                 */

                /**
                 * Constructs a new TradeAreaPairInfo.
                 * @memberof market.v2.trade
                 * @classdesc Represents a TradeAreaPairInfo.
                 * @implements ITradeAreaPairInfo
                 * @constructor
                 * @param {market.v2.trade.ITradeAreaPairInfo=} [properties] Properties to set
                 */
                function TradeAreaPairInfo(properties) {
                    if (properties)
                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                            if (properties[keys[i]] != null)
                                this[keys[i]] = properties[keys[i]];
                }

                /**
                 * TradeAreaPairInfo tradeid.
                 * @member {number} tradeid
                 * @memberof market.v2.trade.TradeAreaPairInfo
                 * @instance
                 */
                TradeAreaPairInfo.prototype.tradeid = 0;

                /**
                 * TradeAreaPairInfo cny.
                 * @member {string} cny
                 * @memberof market.v2.trade.TradeAreaPairInfo
                 * @instance
                 */
                TradeAreaPairInfo.prototype.cny = "";

                /**
                 * TradeAreaPairInfo buy.
                 * @member {string} buy
                 * @memberof market.v2.trade.TradeAreaPairInfo
                 * @instance
                 */
                TradeAreaPairInfo.prototype.buy = "";

                /**
                 * TradeAreaPairInfo lever.
                 * @member {string} lever
                 * @memberof market.v2.trade.TradeAreaPairInfo
                 * @instance
                 */
                TradeAreaPairInfo.prototype.lever = "";

                /**
                 * TradeAreaPairInfo sell.
                 * @member {string} sell
                 * @memberof market.v2.trade.TradeAreaPairInfo
                 * @instance
                 */
                TradeAreaPairInfo.prototype.sell = "";

                /**
                 * TradeAreaPairInfo last.
                 * @member {string} last
                 * @memberof market.v2.trade.TradeAreaPairInfo
                 * @instance
                 */
                TradeAreaPairInfo.prototype.last = "";

                /**
                 * TradeAreaPairInfo volume.
                 * @member {string} volume
                 * @memberof market.v2.trade.TradeAreaPairInfo
                 * @instance
                 */
                TradeAreaPairInfo.prototype.volume = "";

                /**
                 * TradeAreaPairInfo change.
                 * @member {string} change
                 * @memberof market.v2.trade.TradeAreaPairInfo
                 * @instance
                 */
                TradeAreaPairInfo.prototype.change = "";

                /**
                 * TradeAreaPairInfo high.
                 * @member {string} high
                 * @memberof market.v2.trade.TradeAreaPairInfo
                 * @instance
                 */
                TradeAreaPairInfo.prototype.high = "";

                /**
                 * TradeAreaPairInfo low.
                 * @member {string} low
                 * @memberof market.v2.trade.TradeAreaPairInfo
                 * @instance
                 */
                TradeAreaPairInfo.prototype.low = "";

                /**
                 * TradeAreaPairInfo isopen.
                 * @member {string} isopen
                 * @memberof market.v2.trade.TradeAreaPairInfo
                 * @instance
                 */
                TradeAreaPairInfo.prototype.isopen = "";

                /**
                 * TradeAreaPairInfo open.
                 * @member {string} open
                 * @memberof market.v2.trade.TradeAreaPairInfo
                 * @instance
                 */
                TradeAreaPairInfo.prototype.open = "";

                /**
                 * TradeAreaPairInfo amount.
                 * @member {string} amount
                 * @memberof market.v2.trade.TradeAreaPairInfo
                 * @instance
                 */
                TradeAreaPairInfo.prototype.amount = "";

                /**
                 * TradeAreaPairInfo isfiatconvert.
                 * @member {boolean} isfiatconvert
                 * @memberof market.v2.trade.TradeAreaPairInfo
                 * @instance
                 */
                TradeAreaPairInfo.prototype.isfiatconvert = false;

                /**
                 * Creates a new TradeAreaPairInfo instance using the specified properties.
                 * @function create
                 * @memberof market.v2.trade.TradeAreaPairInfo
                 * @static
                 * @param {market.v2.trade.ITradeAreaPairInfo=} [properties] Properties to set
                 * @returns {market.v2.trade.TradeAreaPairInfo} TradeAreaPairInfo instance
                 */
                TradeAreaPairInfo.create = function create(properties) {
                    return new TradeAreaPairInfo(properties);
                };

                /**
                 * Encodes the specified TradeAreaPairInfo message. Does not implicitly {@link market.v2.trade.TradeAreaPairInfo.verify|verify} messages.
                 * @function encode
                 * @memberof market.v2.trade.TradeAreaPairInfo
                 * @static
                 * @param {market.v2.trade.ITradeAreaPairInfo} message TradeAreaPairInfo message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                TradeAreaPairInfo.encode = function encode(message, writer) {
                    if (!writer)
                        writer = $Writer.create();
                    if (message.tradeid != null && Object.hasOwnProperty.call(message, "tradeid"))
                        writer.uint32(/* id 1, wireType 0 =*/8).int32(message.tradeid);
                    if (message.cny != null && Object.hasOwnProperty.call(message, "cny"))
                        writer.uint32(/* id 2, wireType 2 =*/18).string(message.cny);
                    if (message.buy != null && Object.hasOwnProperty.call(message, "buy"))
                        writer.uint32(/* id 3, wireType 2 =*/26).string(message.buy);
                    if (message.lever != null && Object.hasOwnProperty.call(message, "lever"))
                        writer.uint32(/* id 4, wireType 2 =*/34).string(message.lever);
                    if (message.sell != null && Object.hasOwnProperty.call(message, "sell"))
                        writer.uint32(/* id 5, wireType 2 =*/42).string(message.sell);
                    if (message.last != null && Object.hasOwnProperty.call(message, "last"))
                        writer.uint32(/* id 6, wireType 2 =*/50).string(message.last);
                    if (message.volume != null && Object.hasOwnProperty.call(message, "volume"))
                        writer.uint32(/* id 7, wireType 2 =*/58).string(message.volume);
                    if (message.change != null && Object.hasOwnProperty.call(message, "change"))
                        writer.uint32(/* id 8, wireType 2 =*/66).string(message.change);
                    if (message.high != null && Object.hasOwnProperty.call(message, "high"))
                        writer.uint32(/* id 9, wireType 2 =*/74).string(message.high);
                    if (message.low != null && Object.hasOwnProperty.call(message, "low"))
                        writer.uint32(/* id 10, wireType 2 =*/82).string(message.low);
                    if (message.isopen != null && Object.hasOwnProperty.call(message, "isopen"))
                        writer.uint32(/* id 11, wireType 2 =*/90).string(message.isopen);
                    if (message.open != null && Object.hasOwnProperty.call(message, "open"))
                        writer.uint32(/* id 12, wireType 2 =*/98).string(message.open);
                    if (message.amount != null && Object.hasOwnProperty.call(message, "amount"))
                        writer.uint32(/* id 13, wireType 2 =*/106).string(message.amount);
                    if (message.isfiatconvert != null && Object.hasOwnProperty.call(message, "isfiatconvert"))
                        writer.uint32(/* id 14, wireType 0 =*/112).bool(message.isfiatconvert);
                    return writer;
                };

                /**
                 * Encodes the specified TradeAreaPairInfo message, length delimited. Does not implicitly {@link market.v2.trade.TradeAreaPairInfo.verify|verify} messages.
                 * @function encodeDelimited
                 * @memberof market.v2.trade.TradeAreaPairInfo
                 * @static
                 * @param {market.v2.trade.ITradeAreaPairInfo} message TradeAreaPairInfo message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                TradeAreaPairInfo.encodeDelimited = function encodeDelimited(message, writer) {
                    return this.encode(message, writer).ldelim();
                };

                /**
                 * Decodes a TradeAreaPairInfo message from the specified reader or buffer.
                 * @function decode
                 * @memberof market.v2.trade.TradeAreaPairInfo
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @param {number} [length] Message length if known beforehand
                 * @returns {market.v2.trade.TradeAreaPairInfo} TradeAreaPairInfo
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                TradeAreaPairInfo.decode = function decode(reader, length) {
                    if (!(reader instanceof $Reader))
                        reader = $Reader.create(reader);
                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.market.v2.trade.TradeAreaPairInfo();
                    while (reader.pos < end) {
                        var tag = reader.uint32();
                        switch (tag >>> 3) {
                        case 1: {
                                message.tradeid = reader.int32();
                                break;
                            }
                        case 2: {
                                message.cny = reader.string();
                                break;
                            }
                        case 3: {
                                message.buy = reader.string();
                                break;
                            }
                        case 4: {
                                message.lever = reader.string();
                                break;
                            }
                        case 5: {
                                message.sell = reader.string();
                                break;
                            }
                        case 6: {
                                message.last = reader.string();
                                break;
                            }
                        case 7: {
                                message.volume = reader.string();
                                break;
                            }
                        case 8: {
                                message.change = reader.string();
                                break;
                            }
                        case 9: {
                                message.high = reader.string();
                                break;
                            }
                        case 10: {
                                message.low = reader.string();
                                break;
                            }
                        case 11: {
                                message.isopen = reader.string();
                                break;
                            }
                        case 12: {
                                message.open = reader.string();
                                break;
                            }
                        case 13: {
                                message.amount = reader.string();
                                break;
                            }
                        case 14: {
                                message.isfiatconvert = reader.bool();
                                break;
                            }
                        default:
                            reader.skipType(tag & 7);
                            break;
                        }
                    }
                    return message;
                };

                /**
                 * Decodes a TradeAreaPairInfo message from the specified reader or buffer, length delimited.
                 * @function decodeDelimited
                 * @memberof market.v2.trade.TradeAreaPairInfo
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @returns {market.v2.trade.TradeAreaPairInfo} TradeAreaPairInfo
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                TradeAreaPairInfo.decodeDelimited = function decodeDelimited(reader) {
                    if (!(reader instanceof $Reader))
                        reader = new $Reader(reader);
                    return this.decode(reader, reader.uint32());
                };

                /**
                 * Verifies a TradeAreaPairInfo message.
                 * @function verify
                 * @memberof market.v2.trade.TradeAreaPairInfo
                 * @static
                 * @param {Object.<string,*>} message Plain object to verify
                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
                 */
                TradeAreaPairInfo.verify = function verify(message) {
                    if (typeof message !== "object" || message === null)
                        return "object expected";
                    if (message.tradeid != null && message.hasOwnProperty("tradeid"))
                        if (!$util.isInteger(message.tradeid))
                            return "tradeid: integer expected";
                    if (message.cny != null && message.hasOwnProperty("cny"))
                        if (!$util.isString(message.cny))
                            return "cny: string expected";
                    if (message.buy != null && message.hasOwnProperty("buy"))
                        if (!$util.isString(message.buy))
                            return "buy: string expected";
                    if (message.lever != null && message.hasOwnProperty("lever"))
                        if (!$util.isString(message.lever))
                            return "lever: string expected";
                    if (message.sell != null && message.hasOwnProperty("sell"))
                        if (!$util.isString(message.sell))
                            return "sell: string expected";
                    if (message.last != null && message.hasOwnProperty("last"))
                        if (!$util.isString(message.last))
                            return "last: string expected";
                    if (message.volume != null && message.hasOwnProperty("volume"))
                        if (!$util.isString(message.volume))
                            return "volume: string expected";
                    if (message.change != null && message.hasOwnProperty("change"))
                        if (!$util.isString(message.change))
                            return "change: string expected";
                    if (message.high != null && message.hasOwnProperty("high"))
                        if (!$util.isString(message.high))
                            return "high: string expected";
                    if (message.low != null && message.hasOwnProperty("low"))
                        if (!$util.isString(message.low))
                            return "low: string expected";
                    if (message.isopen != null && message.hasOwnProperty("isopen"))
                        if (!$util.isString(message.isopen))
                            return "isopen: string expected";
                    if (message.open != null && message.hasOwnProperty("open"))
                        if (!$util.isString(message.open))
                            return "open: string expected";
                    if (message.amount != null && message.hasOwnProperty("amount"))
                        if (!$util.isString(message.amount))
                            return "amount: string expected";
                    if (message.isfiatconvert != null && message.hasOwnProperty("isfiatconvert"))
                        if (typeof message.isfiatconvert !== "boolean")
                            return "isfiatconvert: boolean expected";
                    return null;
                };

                /**
                 * Creates a TradeAreaPairInfo message from a plain object. Also converts values to their respective internal types.
                 * @function fromObject
                 * @memberof market.v2.trade.TradeAreaPairInfo
                 * @static
                 * @param {Object.<string,*>} object Plain object
                 * @returns {market.v2.trade.TradeAreaPairInfo} TradeAreaPairInfo
                 */
                TradeAreaPairInfo.fromObject = function fromObject(object) {
                    if (object instanceof $root.market.v2.trade.TradeAreaPairInfo)
                        return object;
                    var message = new $root.market.v2.trade.TradeAreaPairInfo();
                    if (object.tradeid != null)
                        message.tradeid = object.tradeid | 0;
                    if (object.cny != null)
                        message.cny = String(object.cny);
                    if (object.buy != null)
                        message.buy = String(object.buy);
                    if (object.lever != null)
                        message.lever = String(object.lever);
                    if (object.sell != null)
                        message.sell = String(object.sell);
                    if (object.last != null)
                        message.last = String(object.last);
                    if (object.volume != null)
                        message.volume = String(object.volume);
                    if (object.change != null)
                        message.change = String(object.change);
                    if (object.high != null)
                        message.high = String(object.high);
                    if (object.low != null)
                        message.low = String(object.low);
                    if (object.isopen != null)
                        message.isopen = String(object.isopen);
                    if (object.open != null)
                        message.open = String(object.open);
                    if (object.amount != null)
                        message.amount = String(object.amount);
                    if (object.isfiatconvert != null)
                        message.isfiatconvert = Boolean(object.isfiatconvert);
                    return message;
                };

                /**
                 * Creates a plain object from a TradeAreaPairInfo message. Also converts values to other types if specified.
                 * @function toObject
                 * @memberof market.v2.trade.TradeAreaPairInfo
                 * @static
                 * @param {market.v2.trade.TradeAreaPairInfo} message TradeAreaPairInfo
                 * @param {$protobuf.IConversionOptions} [options] Conversion options
                 * @returns {Object.<string,*>} Plain object
                 */
                TradeAreaPairInfo.toObject = function toObject(message, options) {
                    if (!options)
                        options = {};
                    var object = {};
                    if (options.defaults) {
                        object.tradeid = 0;
                        object.cny = "";
                        object.buy = "";
                        object.lever = "";
                        object.sell = "";
                        object.last = "";
                        object.volume = "";
                        object.change = "";
                        object.high = "";
                        object.low = "";
                        object.isopen = "";
                        object.open = "";
                        object.amount = "";
                        object.isfiatconvert = false;
                    }
                    if (message.tradeid != null && message.hasOwnProperty("tradeid"))
                        object.tradeid = message.tradeid;
                    if (message.cny != null && message.hasOwnProperty("cny"))
                        object.cny = message.cny;
                    if (message.buy != null && message.hasOwnProperty("buy"))
                        object.buy = message.buy;
                    if (message.lever != null && message.hasOwnProperty("lever"))
                        object.lever = message.lever;
                    if (message.sell != null && message.hasOwnProperty("sell"))
                        object.sell = message.sell;
                    if (message.last != null && message.hasOwnProperty("last"))
                        object.last = message.last;
                    if (message.volume != null && message.hasOwnProperty("volume"))
                        object.volume = message.volume;
                    if (message.change != null && message.hasOwnProperty("change"))
                        object.change = message.change;
                    if (message.high != null && message.hasOwnProperty("high"))
                        object.high = message.high;
                    if (message.low != null && message.hasOwnProperty("low"))
                        object.low = message.low;
                    if (message.isopen != null && message.hasOwnProperty("isopen"))
                        object.isopen = message.isopen;
                    if (message.open != null && message.hasOwnProperty("open"))
                        object.open = message.open;
                    if (message.amount != null && message.hasOwnProperty("amount"))
                        object.amount = message.amount;
                    if (message.isfiatconvert != null && message.hasOwnProperty("isfiatconvert"))
                        object.isfiatconvert = message.isfiatconvert;
                    return object;
                };

                /**
                 * Converts this TradeAreaPairInfo to JSON.
                 * @function toJSON
                 * @memberof market.v2.trade.TradeAreaPairInfo
                 * @instance
                 * @returns {Object.<string,*>} JSON object
                 */
                TradeAreaPairInfo.prototype.toJSON = function toJSON() {
                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
                };

                /**
                 * Gets the default type url for TradeAreaPairInfo
                 * @function getTypeUrl
                 * @memberof market.v2.trade.TradeAreaPairInfo
                 * @static
                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns {string} The default type url
                 */
                TradeAreaPairInfo.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
                    if (typeUrlPrefix === undefined) {
                        typeUrlPrefix = "type.googleapis.com";
                    }
                    return typeUrlPrefix + "/market.v2.trade.TradeAreaPairInfo";
                };

                return TradeAreaPairInfo;
            })();

            trade.MainPair = (function() {

                /**
                 * Properties of a MainPair.
                 * @memberof market.v2.trade
                 * @interface IMainPair
                 * @property {Array.<market.v2.trade.IMainPairInfo>|null} [listList] MainPair listList
                 */

                /**
                 * Constructs a new MainPair.
                 * @memberof market.v2.trade
                 * @classdesc Represents a MainPair.
                 * @implements IMainPair
                 * @constructor
                 * @param {market.v2.trade.IMainPair=} [properties] Properties to set
                 */
                function MainPair(properties) {
                    this.listList = [];
                    if (properties)
                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                            if (properties[keys[i]] != null)
                                this[keys[i]] = properties[keys[i]];
                }

                /**
                 * MainPair listList.
                 * @member {Array.<market.v2.trade.IMainPairInfo>} listList
                 * @memberof market.v2.trade.MainPair
                 * @instance
                 */
                MainPair.prototype.listList = $util.emptyArray;

                /**
                 * Creates a new MainPair instance using the specified properties.
                 * @function create
                 * @memberof market.v2.trade.MainPair
                 * @static
                 * @param {market.v2.trade.IMainPair=} [properties] Properties to set
                 * @returns {market.v2.trade.MainPair} MainPair instance
                 */
                MainPair.create = function create(properties) {
                    return new MainPair(properties);
                };

                /**
                 * Encodes the specified MainPair message. Does not implicitly {@link market.v2.trade.MainPair.verify|verify} messages.
                 * @function encode
                 * @memberof market.v2.trade.MainPair
                 * @static
                 * @param {market.v2.trade.IMainPair} message MainPair message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                MainPair.encode = function encode(message, writer) {
                    if (!writer)
                        writer = $Writer.create();
                    if (message.listList != null && message.listList.length)
                        for (var i = 0; i < message.listList.length; ++i)
                            $root.market.v2.trade.MainPairInfo.encode(message.listList[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
                    return writer;
                };

                /**
                 * Encodes the specified MainPair message, length delimited. Does not implicitly {@link market.v2.trade.MainPair.verify|verify} messages.
                 * @function encodeDelimited
                 * @memberof market.v2.trade.MainPair
                 * @static
                 * @param {market.v2.trade.IMainPair} message MainPair message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                MainPair.encodeDelimited = function encodeDelimited(message, writer) {
                    return this.encode(message, writer).ldelim();
                };

                /**
                 * Decodes a MainPair message from the specified reader or buffer.
                 * @function decode
                 * @memberof market.v2.trade.MainPair
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @param {number} [length] Message length if known beforehand
                 * @returns {market.v2.trade.MainPair} MainPair
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                MainPair.decode = function decode(reader, length) {
                    if (!(reader instanceof $Reader))
                        reader = $Reader.create(reader);
                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.market.v2.trade.MainPair();
                    while (reader.pos < end) {
                        var tag = reader.uint32();
                        switch (tag >>> 3) {
                        case 1: {
                                if (!(message.listList && message.listList.length))
                                    message.listList = [];
                                message.listList.push($root.market.v2.trade.MainPairInfo.decode(reader, reader.uint32()));
                                break;
                            }
                        default:
                            reader.skipType(tag & 7);
                            break;
                        }
                    }
                    return message;
                };

                /**
                 * Decodes a MainPair message from the specified reader or buffer, length delimited.
                 * @function decodeDelimited
                 * @memberof market.v2.trade.MainPair
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @returns {market.v2.trade.MainPair} MainPair
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                MainPair.decodeDelimited = function decodeDelimited(reader) {
                    if (!(reader instanceof $Reader))
                        reader = new $Reader(reader);
                    return this.decode(reader, reader.uint32());
                };

                /**
                 * Verifies a MainPair message.
                 * @function verify
                 * @memberof market.v2.trade.MainPair
                 * @static
                 * @param {Object.<string,*>} message Plain object to verify
                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
                 */
                MainPair.verify = function verify(message) {
                    if (typeof message !== "object" || message === null)
                        return "object expected";
                    if (message.listList != null && message.hasOwnProperty("listList")) {
                        if (!Array.isArray(message.listList))
                            return "listList: array expected";
                        for (var i = 0; i < message.listList.length; ++i) {
                            var error = $root.market.v2.trade.MainPairInfo.verify(message.listList[i]);
                            if (error)
                                return "listList." + error;
                        }
                    }
                    return null;
                };

                /**
                 * Creates a MainPair message from a plain object. Also converts values to their respective internal types.
                 * @function fromObject
                 * @memberof market.v2.trade.MainPair
                 * @static
                 * @param {Object.<string,*>} object Plain object
                 * @returns {market.v2.trade.MainPair} MainPair
                 */
                MainPair.fromObject = function fromObject(object) {
                    if (object instanceof $root.market.v2.trade.MainPair)
                        return object;
                    var message = new $root.market.v2.trade.MainPair();
                    if (object.listList) {
                        if (!Array.isArray(object.listList))
                            throw TypeError(".market.v2.trade.MainPair.listList: array expected");
                        message.listList = [];
                        for (var i = 0; i < object.listList.length; ++i) {
                            if (typeof object.listList[i] !== "object")
                                throw TypeError(".market.v2.trade.MainPair.listList: object expected");
                            message.listList[i] = $root.market.v2.trade.MainPairInfo.fromObject(object.listList[i]);
                        }
                    }
                    return message;
                };

                /**
                 * Creates a plain object from a MainPair message. Also converts values to other types if specified.
                 * @function toObject
                 * @memberof market.v2.trade.MainPair
                 * @static
                 * @param {market.v2.trade.MainPair} message MainPair
                 * @param {$protobuf.IConversionOptions} [options] Conversion options
                 * @returns {Object.<string,*>} Plain object
                 */
                MainPair.toObject = function toObject(message, options) {
                    if (!options)
                        options = {};
                    var object = {};
                    if (options.arrays || options.defaults)
                        object.listList = [];
                    if (message.listList && message.listList.length) {
                        object.listList = [];
                        for (var j = 0; j < message.listList.length; ++j)
                            object.listList[j] = $root.market.v2.trade.MainPairInfo.toObject(message.listList[j], options);
                    }
                    return object;
                };

                /**
                 * Converts this MainPair to JSON.
                 * @function toJSON
                 * @memberof market.v2.trade.MainPair
                 * @instance
                 * @returns {Object.<string,*>} JSON object
                 */
                MainPair.prototype.toJSON = function toJSON() {
                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
                };

                /**
                 * Gets the default type url for MainPair
                 * @function getTypeUrl
                 * @memberof market.v2.trade.MainPair
                 * @static
                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns {string} The default type url
                 */
                MainPair.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
                    if (typeUrlPrefix === undefined) {
                        typeUrlPrefix = "type.googleapis.com";
                    }
                    return typeUrlPrefix + "/market.v2.trade.MainPair";
                };

                return MainPair;
            })();

            trade.MainPairInfo = (function() {

                /**
                 * Properties of a MainPairInfo.
                 * @memberof market.v2.trade
                 * @interface IMainPairInfo
                 * @property {number|null} [tradeId] MainPairInfo tradeId
                 * @property {string|null} [cny] MainPairInfo cny
                 * @property {string|null} [totalamount] MainPairInfo totalamount
                 * @property {string|null} [last] MainPairInfo last
                 * @property {string|null} [volume] MainPairInfo volume
                 * @property {string|null} [change] MainPairInfo change
                 */

                /**
                 * Constructs a new MainPairInfo.
                 * @memberof market.v2.trade
                 * @classdesc Represents a MainPairInfo.
                 * @implements IMainPairInfo
                 * @constructor
                 * @param {market.v2.trade.IMainPairInfo=} [properties] Properties to set
                 */
                function MainPairInfo(properties) {
                    if (properties)
                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                            if (properties[keys[i]] != null)
                                this[keys[i]] = properties[keys[i]];
                }

                /**
                 * MainPairInfo tradeId.
                 * @member {number} tradeId
                 * @memberof market.v2.trade.MainPairInfo
                 * @instance
                 */
                MainPairInfo.prototype.tradeId = 0;

                /**
                 * MainPairInfo cny.
                 * @member {string} cny
                 * @memberof market.v2.trade.MainPairInfo
                 * @instance
                 */
                MainPairInfo.prototype.cny = "";

                /**
                 * MainPairInfo totalamount.
                 * @member {string} totalamount
                 * @memberof market.v2.trade.MainPairInfo
                 * @instance
                 */
                MainPairInfo.prototype.totalamount = "";

                /**
                 * MainPairInfo last.
                 * @member {string} last
                 * @memberof market.v2.trade.MainPairInfo
                 * @instance
                 */
                MainPairInfo.prototype.last = "";

                /**
                 * MainPairInfo volume.
                 * @member {string} volume
                 * @memberof market.v2.trade.MainPairInfo
                 * @instance
                 */
                MainPairInfo.prototype.volume = "";

                /**
                 * MainPairInfo change.
                 * @member {string} change
                 * @memberof market.v2.trade.MainPairInfo
                 * @instance
                 */
                MainPairInfo.prototype.change = "";

                /**
                 * Creates a new MainPairInfo instance using the specified properties.
                 * @function create
                 * @memberof market.v2.trade.MainPairInfo
                 * @static
                 * @param {market.v2.trade.IMainPairInfo=} [properties] Properties to set
                 * @returns {market.v2.trade.MainPairInfo} MainPairInfo instance
                 */
                MainPairInfo.create = function create(properties) {
                    return new MainPairInfo(properties);
                };

                /**
                 * Encodes the specified MainPairInfo message. Does not implicitly {@link market.v2.trade.MainPairInfo.verify|verify} messages.
                 * @function encode
                 * @memberof market.v2.trade.MainPairInfo
                 * @static
                 * @param {market.v2.trade.IMainPairInfo} message MainPairInfo message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                MainPairInfo.encode = function encode(message, writer) {
                    if (!writer)
                        writer = $Writer.create();
                    if (message.tradeId != null && Object.hasOwnProperty.call(message, "tradeId"))
                        writer.uint32(/* id 1, wireType 0 =*/8).int32(message.tradeId);
                    if (message.cny != null && Object.hasOwnProperty.call(message, "cny"))
                        writer.uint32(/* id 2, wireType 2 =*/18).string(message.cny);
                    if (message.totalamount != null && Object.hasOwnProperty.call(message, "totalamount"))
                        writer.uint32(/* id 3, wireType 2 =*/26).string(message.totalamount);
                    if (message.last != null && Object.hasOwnProperty.call(message, "last"))
                        writer.uint32(/* id 4, wireType 2 =*/34).string(message.last);
                    if (message.volume != null && Object.hasOwnProperty.call(message, "volume"))
                        writer.uint32(/* id 5, wireType 2 =*/42).string(message.volume);
                    if (message.change != null && Object.hasOwnProperty.call(message, "change"))
                        writer.uint32(/* id 6, wireType 2 =*/50).string(message.change);
                    return writer;
                };

                /**
                 * Encodes the specified MainPairInfo message, length delimited. Does not implicitly {@link market.v2.trade.MainPairInfo.verify|verify} messages.
                 * @function encodeDelimited
                 * @memberof market.v2.trade.MainPairInfo
                 * @static
                 * @param {market.v2.trade.IMainPairInfo} message MainPairInfo message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                MainPairInfo.encodeDelimited = function encodeDelimited(message, writer) {
                    return this.encode(message, writer).ldelim();
                };

                /**
                 * Decodes a MainPairInfo message from the specified reader or buffer.
                 * @function decode
                 * @memberof market.v2.trade.MainPairInfo
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @param {number} [length] Message length if known beforehand
                 * @returns {market.v2.trade.MainPairInfo} MainPairInfo
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                MainPairInfo.decode = function decode(reader, length) {
                    if (!(reader instanceof $Reader))
                        reader = $Reader.create(reader);
                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.market.v2.trade.MainPairInfo();
                    while (reader.pos < end) {
                        var tag = reader.uint32();
                        switch (tag >>> 3) {
                        case 1: {
                                message.tradeId = reader.int32();
                                break;
                            }
                        case 2: {
                                message.cny = reader.string();
                                break;
                            }
                        case 3: {
                                message.totalamount = reader.string();
                                break;
                            }
                        case 4: {
                                message.last = reader.string();
                                break;
                            }
                        case 5: {
                                message.volume = reader.string();
                                break;
                            }
                        case 6: {
                                message.change = reader.string();
                                break;
                            }
                        default:
                            reader.skipType(tag & 7);
                            break;
                        }
                    }
                    return message;
                };

                /**
                 * Decodes a MainPairInfo message from the specified reader or buffer, length delimited.
                 * @function decodeDelimited
                 * @memberof market.v2.trade.MainPairInfo
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @returns {market.v2.trade.MainPairInfo} MainPairInfo
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                MainPairInfo.decodeDelimited = function decodeDelimited(reader) {
                    if (!(reader instanceof $Reader))
                        reader = new $Reader(reader);
                    return this.decode(reader, reader.uint32());
                };

                /**
                 * Verifies a MainPairInfo message.
                 * @function verify
                 * @memberof market.v2.trade.MainPairInfo
                 * @static
                 * @param {Object.<string,*>} message Plain object to verify
                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
                 */
                MainPairInfo.verify = function verify(message) {
                    if (typeof message !== "object" || message === null)
                        return "object expected";
                    if (message.tradeId != null && message.hasOwnProperty("tradeId"))
                        if (!$util.isInteger(message.tradeId))
                            return "tradeId: integer expected";
                    if (message.cny != null && message.hasOwnProperty("cny"))
                        if (!$util.isString(message.cny))
                            return "cny: string expected";
                    if (message.totalamount != null && message.hasOwnProperty("totalamount"))
                        if (!$util.isString(message.totalamount))
                            return "totalamount: string expected";
                    if (message.last != null && message.hasOwnProperty("last"))
                        if (!$util.isString(message.last))
                            return "last: string expected";
                    if (message.volume != null && message.hasOwnProperty("volume"))
                        if (!$util.isString(message.volume))
                            return "volume: string expected";
                    if (message.change != null && message.hasOwnProperty("change"))
                        if (!$util.isString(message.change))
                            return "change: string expected";
                    return null;
                };

                /**
                 * Creates a MainPairInfo message from a plain object. Also converts values to their respective internal types.
                 * @function fromObject
                 * @memberof market.v2.trade.MainPairInfo
                 * @static
                 * @param {Object.<string,*>} object Plain object
                 * @returns {market.v2.trade.MainPairInfo} MainPairInfo
                 */
                MainPairInfo.fromObject = function fromObject(object) {
                    if (object instanceof $root.market.v2.trade.MainPairInfo)
                        return object;
                    var message = new $root.market.v2.trade.MainPairInfo();
                    if (object.tradeId != null)
                        message.tradeId = object.tradeId | 0;
                    if (object.cny != null)
                        message.cny = String(object.cny);
                    if (object.totalamount != null)
                        message.totalamount = String(object.totalamount);
                    if (object.last != null)
                        message.last = String(object.last);
                    if (object.volume != null)
                        message.volume = String(object.volume);
                    if (object.change != null)
                        message.change = String(object.change);
                    return message;
                };

                /**
                 * Creates a plain object from a MainPairInfo message. Also converts values to other types if specified.
                 * @function toObject
                 * @memberof market.v2.trade.MainPairInfo
                 * @static
                 * @param {market.v2.trade.MainPairInfo} message MainPairInfo
                 * @param {$protobuf.IConversionOptions} [options] Conversion options
                 * @returns {Object.<string,*>} Plain object
                 */
                MainPairInfo.toObject = function toObject(message, options) {
                    if (!options)
                        options = {};
                    var object = {};
                    if (options.defaults) {
                        object.tradeId = 0;
                        object.cny = "";
                        object.totalamount = "";
                        object.last = "";
                        object.volume = "";
                        object.change = "";
                    }
                    if (message.tradeId != null && message.hasOwnProperty("tradeId"))
                        object.tradeId = message.tradeId;
                    if (message.cny != null && message.hasOwnProperty("cny"))
                        object.cny = message.cny;
                    if (message.totalamount != null && message.hasOwnProperty("totalamount"))
                        object.totalamount = message.totalamount;
                    if (message.last != null && message.hasOwnProperty("last"))
                        object.last = message.last;
                    if (message.volume != null && message.hasOwnProperty("volume"))
                        object.volume = message.volume;
                    if (message.change != null && message.hasOwnProperty("change"))
                        object.change = message.change;
                    return object;
                };

                /**
                 * Converts this MainPairInfo to JSON.
                 * @function toJSON
                 * @memberof market.v2.trade.MainPairInfo
                 * @instance
                 * @returns {Object.<string,*>} JSON object
                 */
                MainPairInfo.prototype.toJSON = function toJSON() {
                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
                };

                /**
                 * Gets the default type url for MainPairInfo
                 * @function getTypeUrl
                 * @memberof market.v2.trade.MainPairInfo
                 * @static
                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns {string} The default type url
                 */
                MainPairInfo.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
                    if (typeUrlPrefix === undefined) {
                        typeUrlPrefix = "type.googleapis.com";
                    }
                    return typeUrlPrefix + "/market.v2.trade.MainPairInfo";
                };

                return MainPairInfo;
            })();

            trade.RecommendPair = (function() {

                /**
                 * Properties of a RecommendPair.
                 * @memberof market.v2.trade
                 * @interface IRecommendPair
                 * @property {Array.<market.v2.trade.IRecommendPairInfo>|null} [listList] RecommendPair listList
                 */

                /**
                 * Constructs a new RecommendPair.
                 * @memberof market.v2.trade
                 * @classdesc Represents a RecommendPair.
                 * @implements IRecommendPair
                 * @constructor
                 * @param {market.v2.trade.IRecommendPair=} [properties] Properties to set
                 */
                function RecommendPair(properties) {
                    this.listList = [];
                    if (properties)
                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                            if (properties[keys[i]] != null)
                                this[keys[i]] = properties[keys[i]];
                }

                /**
                 * RecommendPair listList.
                 * @member {Array.<market.v2.trade.IRecommendPairInfo>} listList
                 * @memberof market.v2.trade.RecommendPair
                 * @instance
                 */
                RecommendPair.prototype.listList = $util.emptyArray;

                /**
                 * Creates a new RecommendPair instance using the specified properties.
                 * @function create
                 * @memberof market.v2.trade.RecommendPair
                 * @static
                 * @param {market.v2.trade.IRecommendPair=} [properties] Properties to set
                 * @returns {market.v2.trade.RecommendPair} RecommendPair instance
                 */
                RecommendPair.create = function create(properties) {
                    return new RecommendPair(properties);
                };

                /**
                 * Encodes the specified RecommendPair message. Does not implicitly {@link market.v2.trade.RecommendPair.verify|verify} messages.
                 * @function encode
                 * @memberof market.v2.trade.RecommendPair
                 * @static
                 * @param {market.v2.trade.IRecommendPair} message RecommendPair message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                RecommendPair.encode = function encode(message, writer) {
                    if (!writer)
                        writer = $Writer.create();
                    if (message.listList != null && message.listList.length)
                        for (var i = 0; i < message.listList.length; ++i)
                            $root.market.v2.trade.RecommendPairInfo.encode(message.listList[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
                    return writer;
                };

                /**
                 * Encodes the specified RecommendPair message, length delimited. Does not implicitly {@link market.v2.trade.RecommendPair.verify|verify} messages.
                 * @function encodeDelimited
                 * @memberof market.v2.trade.RecommendPair
                 * @static
                 * @param {market.v2.trade.IRecommendPair} message RecommendPair message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                RecommendPair.encodeDelimited = function encodeDelimited(message, writer) {
                    return this.encode(message, writer).ldelim();
                };

                /**
                 * Decodes a RecommendPair message from the specified reader or buffer.
                 * @function decode
                 * @memberof market.v2.trade.RecommendPair
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @param {number} [length] Message length if known beforehand
                 * @returns {market.v2.trade.RecommendPair} RecommendPair
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                RecommendPair.decode = function decode(reader, length) {
                    if (!(reader instanceof $Reader))
                        reader = $Reader.create(reader);
                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.market.v2.trade.RecommendPair();
                    while (reader.pos < end) {
                        var tag = reader.uint32();
                        switch (tag >>> 3) {
                        case 1: {
                                if (!(message.listList && message.listList.length))
                                    message.listList = [];
                                message.listList.push($root.market.v2.trade.RecommendPairInfo.decode(reader, reader.uint32()));
                                break;
                            }
                        default:
                            reader.skipType(tag & 7);
                            break;
                        }
                    }
                    return message;
                };

                /**
                 * Decodes a RecommendPair message from the specified reader or buffer, length delimited.
                 * @function decodeDelimited
                 * @memberof market.v2.trade.RecommendPair
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @returns {market.v2.trade.RecommendPair} RecommendPair
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                RecommendPair.decodeDelimited = function decodeDelimited(reader) {
                    if (!(reader instanceof $Reader))
                        reader = new $Reader(reader);
                    return this.decode(reader, reader.uint32());
                };

                /**
                 * Verifies a RecommendPair message.
                 * @function verify
                 * @memberof market.v2.trade.RecommendPair
                 * @static
                 * @param {Object.<string,*>} message Plain object to verify
                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
                 */
                RecommendPair.verify = function verify(message) {
                    if (typeof message !== "object" || message === null)
                        return "object expected";
                    if (message.listList != null && message.hasOwnProperty("listList")) {
                        if (!Array.isArray(message.listList))
                            return "listList: array expected";
                        for (var i = 0; i < message.listList.length; ++i) {
                            var error = $root.market.v2.trade.RecommendPairInfo.verify(message.listList[i]);
                            if (error)
                                return "listList." + error;
                        }
                    }
                    return null;
                };

                /**
                 * Creates a RecommendPair message from a plain object. Also converts values to their respective internal types.
                 * @function fromObject
                 * @memberof market.v2.trade.RecommendPair
                 * @static
                 * @param {Object.<string,*>} object Plain object
                 * @returns {market.v2.trade.RecommendPair} RecommendPair
                 */
                RecommendPair.fromObject = function fromObject(object) {
                    if (object instanceof $root.market.v2.trade.RecommendPair)
                        return object;
                    var message = new $root.market.v2.trade.RecommendPair();
                    if (object.listList) {
                        if (!Array.isArray(object.listList))
                            throw TypeError(".market.v2.trade.RecommendPair.listList: array expected");
                        message.listList = [];
                        for (var i = 0; i < object.listList.length; ++i) {
                            if (typeof object.listList[i] !== "object")
                                throw TypeError(".market.v2.trade.RecommendPair.listList: object expected");
                            message.listList[i] = $root.market.v2.trade.RecommendPairInfo.fromObject(object.listList[i]);
                        }
                    }
                    return message;
                };

                /**
                 * Creates a plain object from a RecommendPair message. Also converts values to other types if specified.
                 * @function toObject
                 * @memberof market.v2.trade.RecommendPair
                 * @static
                 * @param {market.v2.trade.RecommendPair} message RecommendPair
                 * @param {$protobuf.IConversionOptions} [options] Conversion options
                 * @returns {Object.<string,*>} Plain object
                 */
                RecommendPair.toObject = function toObject(message, options) {
                    if (!options)
                        options = {};
                    var object = {};
                    if (options.arrays || options.defaults)
                        object.listList = [];
                    if (message.listList && message.listList.length) {
                        object.listList = [];
                        for (var j = 0; j < message.listList.length; ++j)
                            object.listList[j] = $root.market.v2.trade.RecommendPairInfo.toObject(message.listList[j], options);
                    }
                    return object;
                };

                /**
                 * Converts this RecommendPair to JSON.
                 * @function toJSON
                 * @memberof market.v2.trade.RecommendPair
                 * @instance
                 * @returns {Object.<string,*>} JSON object
                 */
                RecommendPair.prototype.toJSON = function toJSON() {
                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
                };

                /**
                 * Gets the default type url for RecommendPair
                 * @function getTypeUrl
                 * @memberof market.v2.trade.RecommendPair
                 * @static
                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns {string} The default type url
                 */
                RecommendPair.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
                    if (typeUrlPrefix === undefined) {
                        typeUrlPrefix = "type.googleapis.com";
                    }
                    return typeUrlPrefix + "/market.v2.trade.RecommendPair";
                };

                return RecommendPair;
            })();

            trade.RecommendPairInfo = (function() {

                /**
                 * Properties of a RecommendPairInfo.
                 * @memberof market.v2.trade
                 * @interface IRecommendPairInfo
                 * @property {number|null} [tradeId] RecommendPairInfo tradeId
                 * @property {string|null} [cny] RecommendPairInfo cny
                 * @property {string|null} [totalamount] RecommendPairInfo totalamount
                 * @property {string|null} [last] RecommendPairInfo last
                 * @property {string|null} [volume] RecommendPairInfo volume
                 * @property {string|null} [change] RecommendPairInfo change
                 */

                /**
                 * Constructs a new RecommendPairInfo.
                 * @memberof market.v2.trade
                 * @classdesc Represents a RecommendPairInfo.
                 * @implements IRecommendPairInfo
                 * @constructor
                 * @param {market.v2.trade.IRecommendPairInfo=} [properties] Properties to set
                 */
                function RecommendPairInfo(properties) {
                    if (properties)
                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                            if (properties[keys[i]] != null)
                                this[keys[i]] = properties[keys[i]];
                }

                /**
                 * RecommendPairInfo tradeId.
                 * @member {number} tradeId
                 * @memberof market.v2.trade.RecommendPairInfo
                 * @instance
                 */
                RecommendPairInfo.prototype.tradeId = 0;

                /**
                 * RecommendPairInfo cny.
                 * @member {string} cny
                 * @memberof market.v2.trade.RecommendPairInfo
                 * @instance
                 */
                RecommendPairInfo.prototype.cny = "";

                /**
                 * RecommendPairInfo totalamount.
                 * @member {string} totalamount
                 * @memberof market.v2.trade.RecommendPairInfo
                 * @instance
                 */
                RecommendPairInfo.prototype.totalamount = "";

                /**
                 * RecommendPairInfo last.
                 * @member {string} last
                 * @memberof market.v2.trade.RecommendPairInfo
                 * @instance
                 */
                RecommendPairInfo.prototype.last = "";

                /**
                 * RecommendPairInfo volume.
                 * @member {string} volume
                 * @memberof market.v2.trade.RecommendPairInfo
                 * @instance
                 */
                RecommendPairInfo.prototype.volume = "";

                /**
                 * RecommendPairInfo change.
                 * @member {string} change
                 * @memberof market.v2.trade.RecommendPairInfo
                 * @instance
                 */
                RecommendPairInfo.prototype.change = "";

                /**
                 * Creates a new RecommendPairInfo instance using the specified properties.
                 * @function create
                 * @memberof market.v2.trade.RecommendPairInfo
                 * @static
                 * @param {market.v2.trade.IRecommendPairInfo=} [properties] Properties to set
                 * @returns {market.v2.trade.RecommendPairInfo} RecommendPairInfo instance
                 */
                RecommendPairInfo.create = function create(properties) {
                    return new RecommendPairInfo(properties);
                };

                /**
                 * Encodes the specified RecommendPairInfo message. Does not implicitly {@link market.v2.trade.RecommendPairInfo.verify|verify} messages.
                 * @function encode
                 * @memberof market.v2.trade.RecommendPairInfo
                 * @static
                 * @param {market.v2.trade.IRecommendPairInfo} message RecommendPairInfo message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                RecommendPairInfo.encode = function encode(message, writer) {
                    if (!writer)
                        writer = $Writer.create();
                    if (message.tradeId != null && Object.hasOwnProperty.call(message, "tradeId"))
                        writer.uint32(/* id 1, wireType 0 =*/8).int32(message.tradeId);
                    if (message.cny != null && Object.hasOwnProperty.call(message, "cny"))
                        writer.uint32(/* id 2, wireType 2 =*/18).string(message.cny);
                    if (message.totalamount != null && Object.hasOwnProperty.call(message, "totalamount"))
                        writer.uint32(/* id 3, wireType 2 =*/26).string(message.totalamount);
                    if (message.last != null && Object.hasOwnProperty.call(message, "last"))
                        writer.uint32(/* id 4, wireType 2 =*/34).string(message.last);
                    if (message.volume != null && Object.hasOwnProperty.call(message, "volume"))
                        writer.uint32(/* id 5, wireType 2 =*/42).string(message.volume);
                    if (message.change != null && Object.hasOwnProperty.call(message, "change"))
                        writer.uint32(/* id 6, wireType 2 =*/50).string(message.change);
                    return writer;
                };

                /**
                 * Encodes the specified RecommendPairInfo message, length delimited. Does not implicitly {@link market.v2.trade.RecommendPairInfo.verify|verify} messages.
                 * @function encodeDelimited
                 * @memberof market.v2.trade.RecommendPairInfo
                 * @static
                 * @param {market.v2.trade.IRecommendPairInfo} message RecommendPairInfo message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                RecommendPairInfo.encodeDelimited = function encodeDelimited(message, writer) {
                    return this.encode(message, writer).ldelim();
                };

                /**
                 * Decodes a RecommendPairInfo message from the specified reader or buffer.
                 * @function decode
                 * @memberof market.v2.trade.RecommendPairInfo
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @param {number} [length] Message length if known beforehand
                 * @returns {market.v2.trade.RecommendPairInfo} RecommendPairInfo
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                RecommendPairInfo.decode = function decode(reader, length) {
                    if (!(reader instanceof $Reader))
                        reader = $Reader.create(reader);
                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.market.v2.trade.RecommendPairInfo();
                    while (reader.pos < end) {
                        var tag = reader.uint32();
                        switch (tag >>> 3) {
                        case 1: {
                                message.tradeId = reader.int32();
                                break;
                            }
                        case 2: {
                                message.cny = reader.string();
                                break;
                            }
                        case 3: {
                                message.totalamount = reader.string();
                                break;
                            }
                        case 4: {
                                message.last = reader.string();
                                break;
                            }
                        case 5: {
                                message.volume = reader.string();
                                break;
                            }
                        case 6: {
                                message.change = reader.string();
                                break;
                            }
                        default:
                            reader.skipType(tag & 7);
                            break;
                        }
                    }
                    return message;
                };

                /**
                 * Decodes a RecommendPairInfo message from the specified reader or buffer, length delimited.
                 * @function decodeDelimited
                 * @memberof market.v2.trade.RecommendPairInfo
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @returns {market.v2.trade.RecommendPairInfo} RecommendPairInfo
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                RecommendPairInfo.decodeDelimited = function decodeDelimited(reader) {
                    if (!(reader instanceof $Reader))
                        reader = new $Reader(reader);
                    return this.decode(reader, reader.uint32());
                };

                /**
                 * Verifies a RecommendPairInfo message.
                 * @function verify
                 * @memberof market.v2.trade.RecommendPairInfo
                 * @static
                 * @param {Object.<string,*>} message Plain object to verify
                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
                 */
                RecommendPairInfo.verify = function verify(message) {
                    if (typeof message !== "object" || message === null)
                        return "object expected";
                    if (message.tradeId != null && message.hasOwnProperty("tradeId"))
                        if (!$util.isInteger(message.tradeId))
                            return "tradeId: integer expected";
                    if (message.cny != null && message.hasOwnProperty("cny"))
                        if (!$util.isString(message.cny))
                            return "cny: string expected";
                    if (message.totalamount != null && message.hasOwnProperty("totalamount"))
                        if (!$util.isString(message.totalamount))
                            return "totalamount: string expected";
                    if (message.last != null && message.hasOwnProperty("last"))
                        if (!$util.isString(message.last))
                            return "last: string expected";
                    if (message.volume != null && message.hasOwnProperty("volume"))
                        if (!$util.isString(message.volume))
                            return "volume: string expected";
                    if (message.change != null && message.hasOwnProperty("change"))
                        if (!$util.isString(message.change))
                            return "change: string expected";
                    return null;
                };

                /**
                 * Creates a RecommendPairInfo message from a plain object. Also converts values to their respective internal types.
                 * @function fromObject
                 * @memberof market.v2.trade.RecommendPairInfo
                 * @static
                 * @param {Object.<string,*>} object Plain object
                 * @returns {market.v2.trade.RecommendPairInfo} RecommendPairInfo
                 */
                RecommendPairInfo.fromObject = function fromObject(object) {
                    if (object instanceof $root.market.v2.trade.RecommendPairInfo)
                        return object;
                    var message = new $root.market.v2.trade.RecommendPairInfo();
                    if (object.tradeId != null)
                        message.tradeId = object.tradeId | 0;
                    if (object.cny != null)
                        message.cny = String(object.cny);
                    if (object.totalamount != null)
                        message.totalamount = String(object.totalamount);
                    if (object.last != null)
                        message.last = String(object.last);
                    if (object.volume != null)
                        message.volume = String(object.volume);
                    if (object.change != null)
                        message.change = String(object.change);
                    return message;
                };

                /**
                 * Creates a plain object from a RecommendPairInfo message. Also converts values to other types if specified.
                 * @function toObject
                 * @memberof market.v2.trade.RecommendPairInfo
                 * @static
                 * @param {market.v2.trade.RecommendPairInfo} message RecommendPairInfo
                 * @param {$protobuf.IConversionOptions} [options] Conversion options
                 * @returns {Object.<string,*>} Plain object
                 */
                RecommendPairInfo.toObject = function toObject(message, options) {
                    if (!options)
                        options = {};
                    var object = {};
                    if (options.defaults) {
                        object.tradeId = 0;
                        object.cny = "";
                        object.totalamount = "";
                        object.last = "";
                        object.volume = "";
                        object.change = "";
                    }
                    if (message.tradeId != null && message.hasOwnProperty("tradeId"))
                        object.tradeId = message.tradeId;
                    if (message.cny != null && message.hasOwnProperty("cny"))
                        object.cny = message.cny;
                    if (message.totalamount != null && message.hasOwnProperty("totalamount"))
                        object.totalamount = message.totalamount;
                    if (message.last != null && message.hasOwnProperty("last"))
                        object.last = message.last;
                    if (message.volume != null && message.hasOwnProperty("volume"))
                        object.volume = message.volume;
                    if (message.change != null && message.hasOwnProperty("change"))
                        object.change = message.change;
                    return object;
                };

                /**
                 * Converts this RecommendPairInfo to JSON.
                 * @function toJSON
                 * @memberof market.v2.trade.RecommendPairInfo
                 * @instance
                 * @returns {Object.<string,*>} JSON object
                 */
                RecommendPairInfo.prototype.toJSON = function toJSON() {
                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
                };

                /**
                 * Gets the default type url for RecommendPairInfo
                 * @function getTypeUrl
                 * @memberof market.v2.trade.RecommendPairInfo
                 * @static
                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns {string} The default type url
                 */
                RecommendPairInfo.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
                    if (typeUrlPrefix === undefined) {
                        typeUrlPrefix = "type.googleapis.com";
                    }
                    return typeUrlPrefix + "/market.v2.trade.RecommendPairInfo";
                };

                return RecommendPairInfo;
            })();

            trade.UpPair = (function() {

                /**
                 * Properties of an UpPair.
                 * @memberof market.v2.trade
                 * @interface IUpPair
                 */

                /**
                 * Constructs a new UpPair.
                 * @memberof market.v2.trade
                 * @classdesc Represents an UpPair.
                 * @implements IUpPair
                 * @constructor
                 * @param {market.v2.trade.IUpPair=} [properties] Properties to set
                 */
                function UpPair(properties) {
                    if (properties)
                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                            if (properties[keys[i]] != null)
                                this[keys[i]] = properties[keys[i]];
                }

                /**
                 * Creates a new UpPair instance using the specified properties.
                 * @function create
                 * @memberof market.v2.trade.UpPair
                 * @static
                 * @param {market.v2.trade.IUpPair=} [properties] Properties to set
                 * @returns {market.v2.trade.UpPair} UpPair instance
                 */
                UpPair.create = function create(properties) {
                    return new UpPair(properties);
                };

                /**
                 * Encodes the specified UpPair message. Does not implicitly {@link market.v2.trade.UpPair.verify|verify} messages.
                 * @function encode
                 * @memberof market.v2.trade.UpPair
                 * @static
                 * @param {market.v2.trade.IUpPair} message UpPair message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                UpPair.encode = function encode(message, writer) {
                    if (!writer)
                        writer = $Writer.create();
                    return writer;
                };

                /**
                 * Encodes the specified UpPair message, length delimited. Does not implicitly {@link market.v2.trade.UpPair.verify|verify} messages.
                 * @function encodeDelimited
                 * @memberof market.v2.trade.UpPair
                 * @static
                 * @param {market.v2.trade.IUpPair} message UpPair message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                UpPair.encodeDelimited = function encodeDelimited(message, writer) {
                    return this.encode(message, writer).ldelim();
                };

                /**
                 * Decodes an UpPair message from the specified reader or buffer.
                 * @function decode
                 * @memberof market.v2.trade.UpPair
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @param {number} [length] Message length if known beforehand
                 * @returns {market.v2.trade.UpPair} UpPair
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                UpPair.decode = function decode(reader, length) {
                    if (!(reader instanceof $Reader))
                        reader = $Reader.create(reader);
                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.market.v2.trade.UpPair();
                    while (reader.pos < end) {
                        var tag = reader.uint32();
                        switch (tag >>> 3) {
                        default:
                            reader.skipType(tag & 7);
                            break;
                        }
                    }
                    return message;
                };

                /**
                 * Decodes an UpPair message from the specified reader or buffer, length delimited.
                 * @function decodeDelimited
                 * @memberof market.v2.trade.UpPair
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @returns {market.v2.trade.UpPair} UpPair
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                UpPair.decodeDelimited = function decodeDelimited(reader) {
                    if (!(reader instanceof $Reader))
                        reader = new $Reader(reader);
                    return this.decode(reader, reader.uint32());
                };

                /**
                 * Verifies an UpPair message.
                 * @function verify
                 * @memberof market.v2.trade.UpPair
                 * @static
                 * @param {Object.<string,*>} message Plain object to verify
                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
                 */
                UpPair.verify = function verify(message) {
                    if (typeof message !== "object" || message === null)
                        return "object expected";
                    return null;
                };

                /**
                 * Creates an UpPair message from a plain object. Also converts values to their respective internal types.
                 * @function fromObject
                 * @memberof market.v2.trade.UpPair
                 * @static
                 * @param {Object.<string,*>} object Plain object
                 * @returns {market.v2.trade.UpPair} UpPair
                 */
                UpPair.fromObject = function fromObject(object) {
                    if (object instanceof $root.market.v2.trade.UpPair)
                        return object;
                    return new $root.market.v2.trade.UpPair();
                };

                /**
                 * Creates a plain object from an UpPair message. Also converts values to other types if specified.
                 * @function toObject
                 * @memberof market.v2.trade.UpPair
                 * @static
                 * @param {market.v2.trade.UpPair} message UpPair
                 * @param {$protobuf.IConversionOptions} [options] Conversion options
                 * @returns {Object.<string,*>} Plain object
                 */
                UpPair.toObject = function toObject() {
                    return {};
                };

                /**
                 * Converts this UpPair to JSON.
                 * @function toJSON
                 * @memberof market.v2.trade.UpPair
                 * @instance
                 * @returns {Object.<string,*>} JSON object
                 */
                UpPair.prototype.toJSON = function toJSON() {
                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
                };

                /**
                 * Gets the default type url for UpPair
                 * @function getTypeUrl
                 * @memberof market.v2.trade.UpPair
                 * @static
                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns {string} The default type url
                 */
                UpPair.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
                    if (typeUrlPrefix === undefined) {
                        typeUrlPrefix = "type.googleapis.com";
                    }
                    return typeUrlPrefix + "/market.v2.trade.UpPair";
                };

                return UpPair;
            })();

            trade.AmtPair = (function() {

                /**
                 * Properties of an AmtPair.
                 * @memberof market.v2.trade
                 * @interface IAmtPair
                 */

                /**
                 * Constructs a new AmtPair.
                 * @memberof market.v2.trade
                 * @classdesc Represents an AmtPair.
                 * @implements IAmtPair
                 * @constructor
                 * @param {market.v2.trade.IAmtPair=} [properties] Properties to set
                 */
                function AmtPair(properties) {
                    if (properties)
                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                            if (properties[keys[i]] != null)
                                this[keys[i]] = properties[keys[i]];
                }

                /**
                 * Creates a new AmtPair instance using the specified properties.
                 * @function create
                 * @memberof market.v2.trade.AmtPair
                 * @static
                 * @param {market.v2.trade.IAmtPair=} [properties] Properties to set
                 * @returns {market.v2.trade.AmtPair} AmtPair instance
                 */
                AmtPair.create = function create(properties) {
                    return new AmtPair(properties);
                };

                /**
                 * Encodes the specified AmtPair message. Does not implicitly {@link market.v2.trade.AmtPair.verify|verify} messages.
                 * @function encode
                 * @memberof market.v2.trade.AmtPair
                 * @static
                 * @param {market.v2.trade.IAmtPair} message AmtPair message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                AmtPair.encode = function encode(message, writer) {
                    if (!writer)
                        writer = $Writer.create();
                    return writer;
                };

                /**
                 * Encodes the specified AmtPair message, length delimited. Does not implicitly {@link market.v2.trade.AmtPair.verify|verify} messages.
                 * @function encodeDelimited
                 * @memberof market.v2.trade.AmtPair
                 * @static
                 * @param {market.v2.trade.IAmtPair} message AmtPair message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                AmtPair.encodeDelimited = function encodeDelimited(message, writer) {
                    return this.encode(message, writer).ldelim();
                };

                /**
                 * Decodes an AmtPair message from the specified reader or buffer.
                 * @function decode
                 * @memberof market.v2.trade.AmtPair
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @param {number} [length] Message length if known beforehand
                 * @returns {market.v2.trade.AmtPair} AmtPair
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                AmtPair.decode = function decode(reader, length) {
                    if (!(reader instanceof $Reader))
                        reader = $Reader.create(reader);
                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.market.v2.trade.AmtPair();
                    while (reader.pos < end) {
                        var tag = reader.uint32();
                        switch (tag >>> 3) {
                        default:
                            reader.skipType(tag & 7);
                            break;
                        }
                    }
                    return message;
                };

                /**
                 * Decodes an AmtPair message from the specified reader or buffer, length delimited.
                 * @function decodeDelimited
                 * @memberof market.v2.trade.AmtPair
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @returns {market.v2.trade.AmtPair} AmtPair
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                AmtPair.decodeDelimited = function decodeDelimited(reader) {
                    if (!(reader instanceof $Reader))
                        reader = new $Reader(reader);
                    return this.decode(reader, reader.uint32());
                };

                /**
                 * Verifies an AmtPair message.
                 * @function verify
                 * @memberof market.v2.trade.AmtPair
                 * @static
                 * @param {Object.<string,*>} message Plain object to verify
                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
                 */
                AmtPair.verify = function verify(message) {
                    if (typeof message !== "object" || message === null)
                        return "object expected";
                    return null;
                };

                /**
                 * Creates an AmtPair message from a plain object. Also converts values to their respective internal types.
                 * @function fromObject
                 * @memberof market.v2.trade.AmtPair
                 * @static
                 * @param {Object.<string,*>} object Plain object
                 * @returns {market.v2.trade.AmtPair} AmtPair
                 */
                AmtPair.fromObject = function fromObject(object) {
                    if (object instanceof $root.market.v2.trade.AmtPair)
                        return object;
                    return new $root.market.v2.trade.AmtPair();
                };

                /**
                 * Creates a plain object from an AmtPair message. Also converts values to other types if specified.
                 * @function toObject
                 * @memberof market.v2.trade.AmtPair
                 * @static
                 * @param {market.v2.trade.AmtPair} message AmtPair
                 * @param {$protobuf.IConversionOptions} [options] Conversion options
                 * @returns {Object.<string,*>} Plain object
                 */
                AmtPair.toObject = function toObject() {
                    return {};
                };

                /**
                 * Converts this AmtPair to JSON.
                 * @function toJSON
                 * @memberof market.v2.trade.AmtPair
                 * @instance
                 * @returns {Object.<string,*>} JSON object
                 */
                AmtPair.prototype.toJSON = function toJSON() {
                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
                };

                /**
                 * Gets the default type url for AmtPair
                 * @function getTypeUrl
                 * @memberof market.v2.trade.AmtPair
                 * @static
                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns {string} The default type url
                 */
                AmtPair.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
                    if (typeUrlPrefix === undefined) {
                        typeUrlPrefix = "type.googleapis.com";
                    }
                    return typeUrlPrefix + "/market.v2.trade.AmtPair";
                };

                return AmtPair;
            })();

            trade.StarPair = (function() {

                /**
                 * Properties of a StarPair.
                 * @memberof market.v2.trade
                 * @interface IStarPair
                 */

                /**
                 * Constructs a new StarPair.
                 * @memberof market.v2.trade
                 * @classdesc Represents a StarPair.
                 * @implements IStarPair
                 * @constructor
                 * @param {market.v2.trade.IStarPair=} [properties] Properties to set
                 */
                function StarPair(properties) {
                    if (properties)
                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                            if (properties[keys[i]] != null)
                                this[keys[i]] = properties[keys[i]];
                }

                /**
                 * Creates a new StarPair instance using the specified properties.
                 * @function create
                 * @memberof market.v2.trade.StarPair
                 * @static
                 * @param {market.v2.trade.IStarPair=} [properties] Properties to set
                 * @returns {market.v2.trade.StarPair} StarPair instance
                 */
                StarPair.create = function create(properties) {
                    return new StarPair(properties);
                };

                /**
                 * Encodes the specified StarPair message. Does not implicitly {@link market.v2.trade.StarPair.verify|verify} messages.
                 * @function encode
                 * @memberof market.v2.trade.StarPair
                 * @static
                 * @param {market.v2.trade.IStarPair} message StarPair message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                StarPair.encode = function encode(message, writer) {
                    if (!writer)
                        writer = $Writer.create();
                    return writer;
                };

                /**
                 * Encodes the specified StarPair message, length delimited. Does not implicitly {@link market.v2.trade.StarPair.verify|verify} messages.
                 * @function encodeDelimited
                 * @memberof market.v2.trade.StarPair
                 * @static
                 * @param {market.v2.trade.IStarPair} message StarPair message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                StarPair.encodeDelimited = function encodeDelimited(message, writer) {
                    return this.encode(message, writer).ldelim();
                };

                /**
                 * Decodes a StarPair message from the specified reader or buffer.
                 * @function decode
                 * @memberof market.v2.trade.StarPair
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @param {number} [length] Message length if known beforehand
                 * @returns {market.v2.trade.StarPair} StarPair
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                StarPair.decode = function decode(reader, length) {
                    if (!(reader instanceof $Reader))
                        reader = $Reader.create(reader);
                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.market.v2.trade.StarPair();
                    while (reader.pos < end) {
                        var tag = reader.uint32();
                        switch (tag >>> 3) {
                        default:
                            reader.skipType(tag & 7);
                            break;
                        }
                    }
                    return message;
                };

                /**
                 * Decodes a StarPair message from the specified reader or buffer, length delimited.
                 * @function decodeDelimited
                 * @memberof market.v2.trade.StarPair
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @returns {market.v2.trade.StarPair} StarPair
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                StarPair.decodeDelimited = function decodeDelimited(reader) {
                    if (!(reader instanceof $Reader))
                        reader = new $Reader(reader);
                    return this.decode(reader, reader.uint32());
                };

                /**
                 * Verifies a StarPair message.
                 * @function verify
                 * @memberof market.v2.trade.StarPair
                 * @static
                 * @param {Object.<string,*>} message Plain object to verify
                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
                 */
                StarPair.verify = function verify(message) {
                    if (typeof message !== "object" || message === null)
                        return "object expected";
                    return null;
                };

                /**
                 * Creates a StarPair message from a plain object. Also converts values to their respective internal types.
                 * @function fromObject
                 * @memberof market.v2.trade.StarPair
                 * @static
                 * @param {Object.<string,*>} object Plain object
                 * @returns {market.v2.trade.StarPair} StarPair
                 */
                StarPair.fromObject = function fromObject(object) {
                    if (object instanceof $root.market.v2.trade.StarPair)
                        return object;
                    return new $root.market.v2.trade.StarPair();
                };

                /**
                 * Creates a plain object from a StarPair message. Also converts values to other types if specified.
                 * @function toObject
                 * @memberof market.v2.trade.StarPair
                 * @static
                 * @param {market.v2.trade.StarPair} message StarPair
                 * @param {$protobuf.IConversionOptions} [options] Conversion options
                 * @returns {Object.<string,*>} Plain object
                 */
                StarPair.toObject = function toObject() {
                    return {};
                };

                /**
                 * Converts this StarPair to JSON.
                 * @function toJSON
                 * @memberof market.v2.trade.StarPair
                 * @instance
                 * @returns {Object.<string,*>} JSON object
                 */
                StarPair.prototype.toJSON = function toJSON() {
                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
                };

                /**
                 * Gets the default type url for StarPair
                 * @function getTypeUrl
                 * @memberof market.v2.trade.StarPair
                 * @static
                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns {string} The default type url
                 */
                StarPair.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
                    if (typeUrlPrefix === undefined) {
                        typeUrlPrefix = "type.googleapis.com";
                    }
                    return typeUrlPrefix + "/market.v2.trade.StarPair";
                };

                return StarPair;
            })();

            trade.TradeTickerVO = (function() {

                /**
                 * Properties of a TradeTickerVO.
                 * @memberof market.v2.trade
                 * @interface ITradeTickerVO
                 * @property {number|null} [tradeid] TradeTickerVO tradeid
                 * @property {string|null} [high] TradeTickerVO high
                 * @property {string|null} [open] TradeTickerVO open
                 * @property {string|null} [low] TradeTickerVO low
                 * @property {string|null} [close] TradeTickerVO close
                 * @property {string|null} [volume] TradeTickerVO volume
                 * @property {string|null} [change] TradeTickerVO change
                 * @property {string|null} [cny] TradeTickerVO cny
                 * @property {string|null} [last] TradeTickerVO last
                 * @property {string|null} [netvalue] TradeTickerVO netvalue
                 * @property {string|null} [amount] TradeTickerVO amount
                 * @property {boolean|null} [isfiatconvert] TradeTickerVO isfiatconvert
                 */

                /**
                 * Constructs a new TradeTickerVO.
                 * @memberof market.v2.trade
                 * @classdesc Represents a TradeTickerVO.
                 * @implements ITradeTickerVO
                 * @constructor
                 * @param {market.v2.trade.ITradeTickerVO=} [properties] Properties to set
                 */
                function TradeTickerVO(properties) {
                    if (properties)
                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                            if (properties[keys[i]] != null)
                                this[keys[i]] = properties[keys[i]];
                }

                /**
                 * TradeTickerVO tradeid.
                 * @member {number} tradeid
                 * @memberof market.v2.trade.TradeTickerVO
                 * @instance
                 */
                TradeTickerVO.prototype.tradeid = 0;

                /**
                 * TradeTickerVO high.
                 * @member {string} high
                 * @memberof market.v2.trade.TradeTickerVO
                 * @instance
                 */
                TradeTickerVO.prototype.high = "";

                /**
                 * TradeTickerVO open.
                 * @member {string} open
                 * @memberof market.v2.trade.TradeTickerVO
                 * @instance
                 */
                TradeTickerVO.prototype.open = "";

                /**
                 * TradeTickerVO low.
                 * @member {string} low
                 * @memberof market.v2.trade.TradeTickerVO
                 * @instance
                 */
                TradeTickerVO.prototype.low = "";

                /**
                 * TradeTickerVO close.
                 * @member {string} close
                 * @memberof market.v2.trade.TradeTickerVO
                 * @instance
                 */
                TradeTickerVO.prototype.close = "";

                /**
                 * TradeTickerVO volume.
                 * @member {string} volume
                 * @memberof market.v2.trade.TradeTickerVO
                 * @instance
                 */
                TradeTickerVO.prototype.volume = "";

                /**
                 * TradeTickerVO change.
                 * @member {string} change
                 * @memberof market.v2.trade.TradeTickerVO
                 * @instance
                 */
                TradeTickerVO.prototype.change = "";

                /**
                 * TradeTickerVO cny.
                 * @member {string} cny
                 * @memberof market.v2.trade.TradeTickerVO
                 * @instance
                 */
                TradeTickerVO.prototype.cny = "";

                /**
                 * TradeTickerVO last.
                 * @member {string} last
                 * @memberof market.v2.trade.TradeTickerVO
                 * @instance
                 */
                TradeTickerVO.prototype.last = "";

                /**
                 * TradeTickerVO netvalue.
                 * @member {string} netvalue
                 * @memberof market.v2.trade.TradeTickerVO
                 * @instance
                 */
                TradeTickerVO.prototype.netvalue = "";

                /**
                 * TradeTickerVO amount.
                 * @member {string} amount
                 * @memberof market.v2.trade.TradeTickerVO
                 * @instance
                 */
                TradeTickerVO.prototype.amount = "";

                /**
                 * TradeTickerVO isfiatconvert.
                 * @member {boolean} isfiatconvert
                 * @memberof market.v2.trade.TradeTickerVO
                 * @instance
                 */
                TradeTickerVO.prototype.isfiatconvert = false;

                /**
                 * Creates a new TradeTickerVO instance using the specified properties.
                 * @function create
                 * @memberof market.v2.trade.TradeTickerVO
                 * @static
                 * @param {market.v2.trade.ITradeTickerVO=} [properties] Properties to set
                 * @returns {market.v2.trade.TradeTickerVO} TradeTickerVO instance
                 */
                TradeTickerVO.create = function create(properties) {
                    return new TradeTickerVO(properties);
                };

                /**
                 * Encodes the specified TradeTickerVO message. Does not implicitly {@link market.v2.trade.TradeTickerVO.verify|verify} messages.
                 * @function encode
                 * @memberof market.v2.trade.TradeTickerVO
                 * @static
                 * @param {market.v2.trade.ITradeTickerVO} message TradeTickerVO message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                TradeTickerVO.encode = function encode(message, writer) {
                    if (!writer)
                        writer = $Writer.create();
                    if (message.tradeid != null && Object.hasOwnProperty.call(message, "tradeid"))
                        writer.uint32(/* id 1, wireType 0 =*/8).int32(message.tradeid);
                    if (message.high != null && Object.hasOwnProperty.call(message, "high"))
                        writer.uint32(/* id 2, wireType 2 =*/18).string(message.high);
                    if (message.open != null && Object.hasOwnProperty.call(message, "open"))
                        writer.uint32(/* id 3, wireType 2 =*/26).string(message.open);
                    if (message.low != null && Object.hasOwnProperty.call(message, "low"))
                        writer.uint32(/* id 4, wireType 2 =*/34).string(message.low);
                    if (message.close != null && Object.hasOwnProperty.call(message, "close"))
                        writer.uint32(/* id 5, wireType 2 =*/42).string(message.close);
                    if (message.volume != null && Object.hasOwnProperty.call(message, "volume"))
                        writer.uint32(/* id 6, wireType 2 =*/50).string(message.volume);
                    if (message.change != null && Object.hasOwnProperty.call(message, "change"))
                        writer.uint32(/* id 7, wireType 2 =*/58).string(message.change);
                    if (message.cny != null && Object.hasOwnProperty.call(message, "cny"))
                        writer.uint32(/* id 8, wireType 2 =*/66).string(message.cny);
                    if (message.last != null && Object.hasOwnProperty.call(message, "last"))
                        writer.uint32(/* id 9, wireType 2 =*/74).string(message.last);
                    if (message.netvalue != null && Object.hasOwnProperty.call(message, "netvalue"))
                        writer.uint32(/* id 10, wireType 2 =*/82).string(message.netvalue);
                    if (message.amount != null && Object.hasOwnProperty.call(message, "amount"))
                        writer.uint32(/* id 11, wireType 2 =*/90).string(message.amount);
                    if (message.isfiatconvert != null && Object.hasOwnProperty.call(message, "isfiatconvert"))
                        writer.uint32(/* id 12, wireType 0 =*/96).bool(message.isfiatconvert);
                    return writer;
                };

                /**
                 * Encodes the specified TradeTickerVO message, length delimited. Does not implicitly {@link market.v2.trade.TradeTickerVO.verify|verify} messages.
                 * @function encodeDelimited
                 * @memberof market.v2.trade.TradeTickerVO
                 * @static
                 * @param {market.v2.trade.ITradeTickerVO} message TradeTickerVO message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                TradeTickerVO.encodeDelimited = function encodeDelimited(message, writer) {
                    return this.encode(message, writer).ldelim();
                };

                /**
                 * Decodes a TradeTickerVO message from the specified reader or buffer.
                 * @function decode
                 * @memberof market.v2.trade.TradeTickerVO
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @param {number} [length] Message length if known beforehand
                 * @returns {market.v2.trade.TradeTickerVO} TradeTickerVO
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                TradeTickerVO.decode = function decode(reader, length) {
                    if (!(reader instanceof $Reader))
                        reader = $Reader.create(reader);
                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.market.v2.trade.TradeTickerVO();
                    while (reader.pos < end) {
                        var tag = reader.uint32();
                        switch (tag >>> 3) {
                        case 1: {
                                message.tradeid = reader.int32();
                                break;
                            }
                        case 2: {
                                message.high = reader.string();
                                break;
                            }
                        case 3: {
                                message.open = reader.string();
                                break;
                            }
                        case 4: {
                                message.low = reader.string();
                                break;
                            }
                        case 5: {
                                message.close = reader.string();
                                break;
                            }
                        case 6: {
                                message.volume = reader.string();
                                break;
                            }
                        case 7: {
                                message.change = reader.string();
                                break;
                            }
                        case 8: {
                                message.cny = reader.string();
                                break;
                            }
                        case 9: {
                                message.last = reader.string();
                                break;
                            }
                        case 10: {
                                message.netvalue = reader.string();
                                break;
                            }
                        case 11: {
                                message.amount = reader.string();
                                break;
                            }
                        case 12: {
                                message.isfiatconvert = reader.bool();
                                break;
                            }
                        default:
                            reader.skipType(tag & 7);
                            break;
                        }
                    }
                    return message;
                };

                /**
                 * Decodes a TradeTickerVO message from the specified reader or buffer, length delimited.
                 * @function decodeDelimited
                 * @memberof market.v2.trade.TradeTickerVO
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @returns {market.v2.trade.TradeTickerVO} TradeTickerVO
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                TradeTickerVO.decodeDelimited = function decodeDelimited(reader) {
                    if (!(reader instanceof $Reader))
                        reader = new $Reader(reader);
                    return this.decode(reader, reader.uint32());
                };

                /**
                 * Verifies a TradeTickerVO message.
                 * @function verify
                 * @memberof market.v2.trade.TradeTickerVO
                 * @static
                 * @param {Object.<string,*>} message Plain object to verify
                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
                 */
                TradeTickerVO.verify = function verify(message) {
                    if (typeof message !== "object" || message === null)
                        return "object expected";
                    if (message.tradeid != null && message.hasOwnProperty("tradeid"))
                        if (!$util.isInteger(message.tradeid))
                            return "tradeid: integer expected";
                    if (message.high != null && message.hasOwnProperty("high"))
                        if (!$util.isString(message.high))
                            return "high: string expected";
                    if (message.open != null && message.hasOwnProperty("open"))
                        if (!$util.isString(message.open))
                            return "open: string expected";
                    if (message.low != null && message.hasOwnProperty("low"))
                        if (!$util.isString(message.low))
                            return "low: string expected";
                    if (message.close != null && message.hasOwnProperty("close"))
                        if (!$util.isString(message.close))
                            return "close: string expected";
                    if (message.volume != null && message.hasOwnProperty("volume"))
                        if (!$util.isString(message.volume))
                            return "volume: string expected";
                    if (message.change != null && message.hasOwnProperty("change"))
                        if (!$util.isString(message.change))
                            return "change: string expected";
                    if (message.cny != null && message.hasOwnProperty("cny"))
                        if (!$util.isString(message.cny))
                            return "cny: string expected";
                    if (message.last != null && message.hasOwnProperty("last"))
                        if (!$util.isString(message.last))
                            return "last: string expected";
                    if (message.netvalue != null && message.hasOwnProperty("netvalue"))
                        if (!$util.isString(message.netvalue))
                            return "netvalue: string expected";
                    if (message.amount != null && message.hasOwnProperty("amount"))
                        if (!$util.isString(message.amount))
                            return "amount: string expected";
                    if (message.isfiatconvert != null && message.hasOwnProperty("isfiatconvert"))
                        if (typeof message.isfiatconvert !== "boolean")
                            return "isfiatconvert: boolean expected";
                    return null;
                };

                /**
                 * Creates a TradeTickerVO message from a plain object. Also converts values to their respective internal types.
                 * @function fromObject
                 * @memberof market.v2.trade.TradeTickerVO
                 * @static
                 * @param {Object.<string,*>} object Plain object
                 * @returns {market.v2.trade.TradeTickerVO} TradeTickerVO
                 */
                TradeTickerVO.fromObject = function fromObject(object) {
                    if (object instanceof $root.market.v2.trade.TradeTickerVO)
                        return object;
                    var message = new $root.market.v2.trade.TradeTickerVO();
                    if (object.tradeid != null)
                        message.tradeid = object.tradeid | 0;
                    if (object.high != null)
                        message.high = String(object.high);
                    if (object.open != null)
                        message.open = String(object.open);
                    if (object.low != null)
                        message.low = String(object.low);
                    if (object.close != null)
                        message.close = String(object.close);
                    if (object.volume != null)
                        message.volume = String(object.volume);
                    if (object.change != null)
                        message.change = String(object.change);
                    if (object.cny != null)
                        message.cny = String(object.cny);
                    if (object.last != null)
                        message.last = String(object.last);
                    if (object.netvalue != null)
                        message.netvalue = String(object.netvalue);
                    if (object.amount != null)
                        message.amount = String(object.amount);
                    if (object.isfiatconvert != null)
                        message.isfiatconvert = Boolean(object.isfiatconvert);
                    return message;
                };

                /**
                 * Creates a plain object from a TradeTickerVO message. Also converts values to other types if specified.
                 * @function toObject
                 * @memberof market.v2.trade.TradeTickerVO
                 * @static
                 * @param {market.v2.trade.TradeTickerVO} message TradeTickerVO
                 * @param {$protobuf.IConversionOptions} [options] Conversion options
                 * @returns {Object.<string,*>} Plain object
                 */
                TradeTickerVO.toObject = function toObject(message, options) {
                    if (!options)
                        options = {};
                    var object = {};
                    if (options.defaults) {
                        object.tradeid = 0;
                        object.high = "";
                        object.open = "";
                        object.low = "";
                        object.close = "";
                        object.volume = "";
                        object.change = "";
                        object.cny = "";
                        object.last = "";
                        object.netvalue = "";
                        object.amount = "";
                        object.isfiatconvert = false;
                    }
                    if (message.tradeid != null && message.hasOwnProperty("tradeid"))
                        object.tradeid = message.tradeid;
                    if (message.high != null && message.hasOwnProperty("high"))
                        object.high = message.high;
                    if (message.open != null && message.hasOwnProperty("open"))
                        object.open = message.open;
                    if (message.low != null && message.hasOwnProperty("low"))
                        object.low = message.low;
                    if (message.close != null && message.hasOwnProperty("close"))
                        object.close = message.close;
                    if (message.volume != null && message.hasOwnProperty("volume"))
                        object.volume = message.volume;
                    if (message.change != null && message.hasOwnProperty("change"))
                        object.change = message.change;
                    if (message.cny != null && message.hasOwnProperty("cny"))
                        object.cny = message.cny;
                    if (message.last != null && message.hasOwnProperty("last"))
                        object.last = message.last;
                    if (message.netvalue != null && message.hasOwnProperty("netvalue"))
                        object.netvalue = message.netvalue;
                    if (message.amount != null && message.hasOwnProperty("amount"))
                        object.amount = message.amount;
                    if (message.isfiatconvert != null && message.hasOwnProperty("isfiatconvert"))
                        object.isfiatconvert = message.isfiatconvert;
                    return object;
                };

                /**
                 * Converts this TradeTickerVO to JSON.
                 * @function toJSON
                 * @memberof market.v2.trade.TradeTickerVO
                 * @instance
                 * @returns {Object.<string,*>} JSON object
                 */
                TradeTickerVO.prototype.toJSON = function toJSON() {
                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
                };

                /**
                 * Gets the default type url for TradeTickerVO
                 * @function getTypeUrl
                 * @memberof market.v2.trade.TradeTickerVO
                 * @static
                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns {string} The default type url
                 */
                TradeTickerVO.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
                    if (typeUrlPrefix === undefined) {
                        typeUrlPrefix = "type.googleapis.com";
                    }
                    return typeUrlPrefix + "/market.v2.trade.TradeTickerVO";
                };

                return TradeTickerVO;
            })();

            trade.EntrustVO = (function() {

                /**
                 * Properties of an EntrustVO.
                 * @memberof market.v2.trade
                 * @interface IEntrustVO
                 * @property {number|Long|null} [id] EntrustVO id
                 * @property {number|null} [tradeid] EntrustVO tradeid
                 * @property {number|Long|null} [entrusttime] EntrustVO entrusttime
                 * @property {string|null} [buycoinshortname] EntrustVO buycoinshortname
                 * @property {string|null} [sellcoinshortname] EntrustVO sellcoinshortname
                 * @property {number|null} [type] EntrustVO type
                 * @property {number|null} [direction] EntrustVO direction
                 * @property {number|null} [matchtype] EntrustVO matchtype
                 * @property {string|null} [pricetype] EntrustVO pricetype
                 * @property {string|null} [entrustprice] EntrustVO entrustprice
                 * @property {string|null} [count] EntrustVO count
                 * @property {string|null} [successcount] EntrustVO successcount
                 * @property {string|null} [averageprice] EntrustVO averageprice
                 * @property {number|null} [status] EntrustVO status
                 * @property {boolean|null} [history] EntrustVO history
                 * @property {number|Long|null} [pushversion] EntrustVO pushversion
                 * @property {boolean|null} [remove] EntrustVO remove
                 * @property {string|null} [amount] EntrustVO amount
                 * @property {string|null} [marketunit] EntrustVO marketunit
                 * @property {string|null} [funds] EntrustVO funds
                 * @property {string|null} [leftfunds] EntrustVO leftfunds
                 * @property {string|null} [triggerprice] EntrustVO triggerprice
                 * @property {string|null} [marginmode] EntrustVO marginmode
                 * @property {string|null} [margintrademode] EntrustVO margintrademode
                 * @property {boolean|null} [forcedliquidation] EntrustVO forcedliquidation
                 * @property {string|null} [remark] EntrustVO remark
                 * @property {string|null} [successamount] EntrustVO successamount
                 * @property {number|null} [tradearea] EntrustVO tradearea
                 * @property {string|null} [fee] EntrustVO fee
                 * @property {string|null} [trailingdelta] EntrustVO trailingdelta
                 * @property {string|null} [activationprice] EntrustVO activationprice
                 * @property {number|Long|null} [activationtime] EntrustVO activationtime
                 * @property {number|null} [triggersign] EntrustVO triggersign
                 * @property {string|null} [orderid] EntrustVO orderid
                 */

                /**
                 * Constructs a new EntrustVO.
                 * @memberof market.v2.trade
                 * @classdesc Represents an EntrustVO.
                 * @implements IEntrustVO
                 * @constructor
                 * @param {market.v2.trade.IEntrustVO=} [properties] Properties to set
                 */
                function EntrustVO(properties) {
                    if (properties)
                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                            if (properties[keys[i]] != null)
                                this[keys[i]] = properties[keys[i]];
                }

                /**
                 * EntrustVO id.
                 * @member {number|Long} id
                 * @memberof market.v2.trade.EntrustVO
                 * @instance
                 */
                EntrustVO.prototype.id = $util.Long ? $util.Long.fromBits(0,0,false) : 0;

                /**
                 * EntrustVO tradeid.
                 * @member {number} tradeid
                 * @memberof market.v2.trade.EntrustVO
                 * @instance
                 */
                EntrustVO.prototype.tradeid = 0;

                /**
                 * EntrustVO entrusttime.
                 * @member {number|Long} entrusttime
                 * @memberof market.v2.trade.EntrustVO
                 * @instance
                 */
                EntrustVO.prototype.entrusttime = $util.Long ? $util.Long.fromBits(0,0,false) : 0;

                /**
                 * EntrustVO buycoinshortname.
                 * @member {string} buycoinshortname
                 * @memberof market.v2.trade.EntrustVO
                 * @instance
                 */
                EntrustVO.prototype.buycoinshortname = "";

                /**
                 * EntrustVO sellcoinshortname.
                 * @member {string} sellcoinshortname
                 * @memberof market.v2.trade.EntrustVO
                 * @instance
                 */
                EntrustVO.prototype.sellcoinshortname = "";

                /**
                 * EntrustVO type.
                 * @member {number} type
                 * @memberof market.v2.trade.EntrustVO
                 * @instance
                 */
                EntrustVO.prototype.type = 0;

                /**
                 * EntrustVO direction.
                 * @member {number} direction
                 * @memberof market.v2.trade.EntrustVO
                 * @instance
                 */
                EntrustVO.prototype.direction = 0;

                /**
                 * EntrustVO matchtype.
                 * @member {number} matchtype
                 * @memberof market.v2.trade.EntrustVO
                 * @instance
                 */
                EntrustVO.prototype.matchtype = 0;

                /**
                 * EntrustVO pricetype.
                 * @member {string} pricetype
                 * @memberof market.v2.trade.EntrustVO
                 * @instance
                 */
                EntrustVO.prototype.pricetype = "";

                /**
                 * EntrustVO entrustprice.
                 * @member {string} entrustprice
                 * @memberof market.v2.trade.EntrustVO
                 * @instance
                 */
                EntrustVO.prototype.entrustprice = "";

                /**
                 * EntrustVO count.
                 * @member {string} count
                 * @memberof market.v2.trade.EntrustVO
                 * @instance
                 */
                EntrustVO.prototype.count = "";

                /**
                 * EntrustVO successcount.
                 * @member {string} successcount
                 * @memberof market.v2.trade.EntrustVO
                 * @instance
                 */
                EntrustVO.prototype.successcount = "";

                /**
                 * EntrustVO averageprice.
                 * @member {string} averageprice
                 * @memberof market.v2.trade.EntrustVO
                 * @instance
                 */
                EntrustVO.prototype.averageprice = "";

                /**
                 * EntrustVO status.
                 * @member {number} status
                 * @memberof market.v2.trade.EntrustVO
                 * @instance
                 */
                EntrustVO.prototype.status = 0;

                /**
                 * EntrustVO history.
                 * @member {boolean} history
                 * @memberof market.v2.trade.EntrustVO
                 * @instance
                 */
                EntrustVO.prototype.history = false;

                /**
                 * EntrustVO pushversion.
                 * @member {number|Long} pushversion
                 * @memberof market.v2.trade.EntrustVO
                 * @instance
                 */
                EntrustVO.prototype.pushversion = $util.Long ? $util.Long.fromBits(0,0,false) : 0;

                /**
                 * EntrustVO remove.
                 * @member {boolean} remove
                 * @memberof market.v2.trade.EntrustVO
                 * @instance
                 */
                EntrustVO.prototype.remove = false;

                /**
                 * EntrustVO amount.
                 * @member {string} amount
                 * @memberof market.v2.trade.EntrustVO
                 * @instance
                 */
                EntrustVO.prototype.amount = "";

                /**
                 * EntrustVO marketunit.
                 * @member {string} marketunit
                 * @memberof market.v2.trade.EntrustVO
                 * @instance
                 */
                EntrustVO.prototype.marketunit = "";

                /**
                 * EntrustVO funds.
                 * @member {string} funds
                 * @memberof market.v2.trade.EntrustVO
                 * @instance
                 */
                EntrustVO.prototype.funds = "";

                /**
                 * EntrustVO leftfunds.
                 * @member {string} leftfunds
                 * @memberof market.v2.trade.EntrustVO
                 * @instance
                 */
                EntrustVO.prototype.leftfunds = "";

                /**
                 * EntrustVO triggerprice.
                 * @member {string} triggerprice
                 * @memberof market.v2.trade.EntrustVO
                 * @instance
                 */
                EntrustVO.prototype.triggerprice = "";

                /**
                 * EntrustVO marginmode.
                 * @member {string} marginmode
                 * @memberof market.v2.trade.EntrustVO
                 * @instance
                 */
                EntrustVO.prototype.marginmode = "";

                /**
                 * EntrustVO margintrademode.
                 * @member {string} margintrademode
                 * @memberof market.v2.trade.EntrustVO
                 * @instance
                 */
                EntrustVO.prototype.margintrademode = "";

                /**
                 * EntrustVO forcedliquidation.
                 * @member {boolean} forcedliquidation
                 * @memberof market.v2.trade.EntrustVO
                 * @instance
                 */
                EntrustVO.prototype.forcedliquidation = false;

                /**
                 * EntrustVO remark.
                 * @member {string} remark
                 * @memberof market.v2.trade.EntrustVO
                 * @instance
                 */
                EntrustVO.prototype.remark = "";

                /**
                 * EntrustVO successamount.
                 * @member {string} successamount
                 * @memberof market.v2.trade.EntrustVO
                 * @instance
                 */
                EntrustVO.prototype.successamount = "";

                /**
                 * EntrustVO tradearea.
                 * @member {number} tradearea
                 * @memberof market.v2.trade.EntrustVO
                 * @instance
                 */
                EntrustVO.prototype.tradearea = 0;

                /**
                 * EntrustVO fee.
                 * @member {string} fee
                 * @memberof market.v2.trade.EntrustVO
                 * @instance
                 */
                EntrustVO.prototype.fee = "";

                /**
                 * EntrustVO trailingdelta.
                 * @member {string} trailingdelta
                 * @memberof market.v2.trade.EntrustVO
                 * @instance
                 */
                EntrustVO.prototype.trailingdelta = "";

                /**
                 * EntrustVO activationprice.
                 * @member {string} activationprice
                 * @memberof market.v2.trade.EntrustVO
                 * @instance
                 */
                EntrustVO.prototype.activationprice = "";

                /**
                 * EntrustVO activationtime.
                 * @member {number|Long} activationtime
                 * @memberof market.v2.trade.EntrustVO
                 * @instance
                 */
                EntrustVO.prototype.activationtime = $util.Long ? $util.Long.fromBits(0,0,false) : 0;

                /**
                 * EntrustVO triggersign.
                 * @member {number} triggersign
                 * @memberof market.v2.trade.EntrustVO
                 * @instance
                 */
                EntrustVO.prototype.triggersign = 0;

                /**
                 * EntrustVO orderid.
                 * @member {string} orderid
                 * @memberof market.v2.trade.EntrustVO
                 * @instance
                 */
                EntrustVO.prototype.orderid = "";

                /**
                 * Creates a new EntrustVO instance using the specified properties.
                 * @function create
                 * @memberof market.v2.trade.EntrustVO
                 * @static
                 * @param {market.v2.trade.IEntrustVO=} [properties] Properties to set
                 * @returns {market.v2.trade.EntrustVO} EntrustVO instance
                 */
                EntrustVO.create = function create(properties) {
                    return new EntrustVO(properties);
                };

                /**
                 * Encodes the specified EntrustVO message. Does not implicitly {@link market.v2.trade.EntrustVO.verify|verify} messages.
                 * @function encode
                 * @memberof market.v2.trade.EntrustVO
                 * @static
                 * @param {market.v2.trade.IEntrustVO} message EntrustVO message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                EntrustVO.encode = function encode(message, writer) {
                    if (!writer)
                        writer = $Writer.create();
                    if (message.id != null && Object.hasOwnProperty.call(message, "id"))
                        writer.uint32(/* id 1, wireType 0 =*/8).int64(message.id);
                    if (message.tradeid != null && Object.hasOwnProperty.call(message, "tradeid"))
                        writer.uint32(/* id 2, wireType 0 =*/16).int32(message.tradeid);
                    if (message.entrusttime != null && Object.hasOwnProperty.call(message, "entrusttime"))
                        writer.uint32(/* id 3, wireType 0 =*/24).int64(message.entrusttime);
                    if (message.buycoinshortname != null && Object.hasOwnProperty.call(message, "buycoinshortname"))
                        writer.uint32(/* id 4, wireType 2 =*/34).string(message.buycoinshortname);
                    if (message.sellcoinshortname != null && Object.hasOwnProperty.call(message, "sellcoinshortname"))
                        writer.uint32(/* id 5, wireType 2 =*/42).string(message.sellcoinshortname);
                    if (message.type != null && Object.hasOwnProperty.call(message, "type"))
                        writer.uint32(/* id 6, wireType 0 =*/48).int32(message.type);
                    if (message.direction != null && Object.hasOwnProperty.call(message, "direction"))
                        writer.uint32(/* id 7, wireType 0 =*/56).int32(message.direction);
                    if (message.matchtype != null && Object.hasOwnProperty.call(message, "matchtype"))
                        writer.uint32(/* id 8, wireType 0 =*/64).int32(message.matchtype);
                    if (message.pricetype != null && Object.hasOwnProperty.call(message, "pricetype"))
                        writer.uint32(/* id 9, wireType 2 =*/74).string(message.pricetype);
                    if (message.entrustprice != null && Object.hasOwnProperty.call(message, "entrustprice"))
                        writer.uint32(/* id 10, wireType 2 =*/82).string(message.entrustprice);
                    if (message.count != null && Object.hasOwnProperty.call(message, "count"))
                        writer.uint32(/* id 11, wireType 2 =*/90).string(message.count);
                    if (message.successcount != null && Object.hasOwnProperty.call(message, "successcount"))
                        writer.uint32(/* id 12, wireType 2 =*/98).string(message.successcount);
                    if (message.averageprice != null && Object.hasOwnProperty.call(message, "averageprice"))
                        writer.uint32(/* id 13, wireType 2 =*/106).string(message.averageprice);
                    if (message.status != null && Object.hasOwnProperty.call(message, "status"))
                        writer.uint32(/* id 14, wireType 0 =*/112).int32(message.status);
                    if (message.history != null && Object.hasOwnProperty.call(message, "history"))
                        writer.uint32(/* id 15, wireType 0 =*/120).bool(message.history);
                    if (message.pushversion != null && Object.hasOwnProperty.call(message, "pushversion"))
                        writer.uint32(/* id 16, wireType 0 =*/128).int64(message.pushversion);
                    if (message.remove != null && Object.hasOwnProperty.call(message, "remove"))
                        writer.uint32(/* id 17, wireType 0 =*/136).bool(message.remove);
                    if (message.amount != null && Object.hasOwnProperty.call(message, "amount"))
                        writer.uint32(/* id 18, wireType 2 =*/146).string(message.amount);
                    if (message.marketunit != null && Object.hasOwnProperty.call(message, "marketunit"))
                        writer.uint32(/* id 19, wireType 2 =*/154).string(message.marketunit);
                    if (message.funds != null && Object.hasOwnProperty.call(message, "funds"))
                        writer.uint32(/* id 20, wireType 2 =*/162).string(message.funds);
                    if (message.leftfunds != null && Object.hasOwnProperty.call(message, "leftfunds"))
                        writer.uint32(/* id 21, wireType 2 =*/170).string(message.leftfunds);
                    if (message.triggerprice != null && Object.hasOwnProperty.call(message, "triggerprice"))
                        writer.uint32(/* id 22, wireType 2 =*/178).string(message.triggerprice);
                    if (message.marginmode != null && Object.hasOwnProperty.call(message, "marginmode"))
                        writer.uint32(/* id 23, wireType 2 =*/186).string(message.marginmode);
                    if (message.margintrademode != null && Object.hasOwnProperty.call(message, "margintrademode"))
                        writer.uint32(/* id 24, wireType 2 =*/194).string(message.margintrademode);
                    if (message.forcedliquidation != null && Object.hasOwnProperty.call(message, "forcedliquidation"))
                        writer.uint32(/* id 25, wireType 0 =*/200).bool(message.forcedliquidation);
                    if (message.remark != null && Object.hasOwnProperty.call(message, "remark"))
                        writer.uint32(/* id 26, wireType 2 =*/210).string(message.remark);
                    if (message.successamount != null && Object.hasOwnProperty.call(message, "successamount"))
                        writer.uint32(/* id 27, wireType 2 =*/218).string(message.successamount);
                    if (message.tradearea != null && Object.hasOwnProperty.call(message, "tradearea"))
                        writer.uint32(/* id 28, wireType 0 =*/224).int32(message.tradearea);
                    if (message.fee != null && Object.hasOwnProperty.call(message, "fee"))
                        writer.uint32(/* id 29, wireType 2 =*/234).string(message.fee);
                    if (message.trailingdelta != null && Object.hasOwnProperty.call(message, "trailingdelta"))
                        writer.uint32(/* id 30, wireType 2 =*/242).string(message.trailingdelta);
                    if (message.activationprice != null && Object.hasOwnProperty.call(message, "activationprice"))
                        writer.uint32(/* id 31, wireType 2 =*/250).string(message.activationprice);
                    if (message.activationtime != null && Object.hasOwnProperty.call(message, "activationtime"))
                        writer.uint32(/* id 32, wireType 0 =*/256).int64(message.activationtime);
                    if (message.triggersign != null && Object.hasOwnProperty.call(message, "triggersign"))
                        writer.uint32(/* id 33, wireType 0 =*/264).int32(message.triggersign);
                    if (message.orderid != null && Object.hasOwnProperty.call(message, "orderid"))
                        writer.uint32(/* id 34, wireType 2 =*/274).string(message.orderid);
                    return writer;
                };

                /**
                 * Encodes the specified EntrustVO message, length delimited. Does not implicitly {@link market.v2.trade.EntrustVO.verify|verify} messages.
                 * @function encodeDelimited
                 * @memberof market.v2.trade.EntrustVO
                 * @static
                 * @param {market.v2.trade.IEntrustVO} message EntrustVO message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                EntrustVO.encodeDelimited = function encodeDelimited(message, writer) {
                    return this.encode(message, writer).ldelim();
                };

                /**
                 * Decodes an EntrustVO message from the specified reader or buffer.
                 * @function decode
                 * @memberof market.v2.trade.EntrustVO
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @param {number} [length] Message length if known beforehand
                 * @returns {market.v2.trade.EntrustVO} EntrustVO
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                EntrustVO.decode = function decode(reader, length) {
                    if (!(reader instanceof $Reader))
                        reader = $Reader.create(reader);
                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.market.v2.trade.EntrustVO();
                    while (reader.pos < end) {
                        var tag = reader.uint32();
                        switch (tag >>> 3) {
                        case 1: {
                                message.id = reader.int64();
                                break;
                            }
                        case 2: {
                                message.tradeid = reader.int32();
                                break;
                            }
                        case 3: {
                                message.entrusttime = reader.int64();
                                break;
                            }
                        case 4: {
                                message.buycoinshortname = reader.string();
                                break;
                            }
                        case 5: {
                                message.sellcoinshortname = reader.string();
                                break;
                            }
                        case 6: {
                                message.type = reader.int32();
                                break;
                            }
                        case 7: {
                                message.direction = reader.int32();
                                break;
                            }
                        case 8: {
                                message.matchtype = reader.int32();
                                break;
                            }
                        case 9: {
                                message.pricetype = reader.string();
                                break;
                            }
                        case 10: {
                                message.entrustprice = reader.string();
                                break;
                            }
                        case 11: {
                                message.count = reader.string();
                                break;
                            }
                        case 12: {
                                message.successcount = reader.string();
                                break;
                            }
                        case 13: {
                                message.averageprice = reader.string();
                                break;
                            }
                        case 14: {
                                message.status = reader.int32();
                                break;
                            }
                        case 15: {
                                message.history = reader.bool();
                                break;
                            }
                        case 16: {
                                message.pushversion = reader.int64();
                                break;
                            }
                        case 17: {
                                message.remove = reader.bool();
                                break;
                            }
                        case 18: {
                                message.amount = reader.string();
                                break;
                            }
                        case 19: {
                                message.marketunit = reader.string();
                                break;
                            }
                        case 20: {
                                message.funds = reader.string();
                                break;
                            }
                        case 21: {
                                message.leftfunds = reader.string();
                                break;
                            }
                        case 22: {
                                message.triggerprice = reader.string();
                                break;
                            }
                        case 23: {
                                message.marginmode = reader.string();
                                break;
                            }
                        case 24: {
                                message.margintrademode = reader.string();
                                break;
                            }
                        case 25: {
                                message.forcedliquidation = reader.bool();
                                break;
                            }
                        case 26: {
                                message.remark = reader.string();
                                break;
                            }
                        case 27: {
                                message.successamount = reader.string();
                                break;
                            }
                        case 28: {
                                message.tradearea = reader.int32();
                                break;
                            }
                        case 29: {
                                message.fee = reader.string();
                                break;
                            }
                        case 30: {
                                message.trailingdelta = reader.string();
                                break;
                            }
                        case 31: {
                                message.activationprice = reader.string();
                                break;
                            }
                        case 32: {
                                message.activationtime = reader.int64();
                                break;
                            }
                        case 33: {
                                message.triggersign = reader.int32();
                                break;
                            }
                        case 34: {
                                message.orderid = reader.string();
                                break;
                            }
                        default:
                            reader.skipType(tag & 7);
                            break;
                        }
                    }
                    return message;
                };

                /**
                 * Decodes an EntrustVO message from the specified reader or buffer, length delimited.
                 * @function decodeDelimited
                 * @memberof market.v2.trade.EntrustVO
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @returns {market.v2.trade.EntrustVO} EntrustVO
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                EntrustVO.decodeDelimited = function decodeDelimited(reader) {
                    if (!(reader instanceof $Reader))
                        reader = new $Reader(reader);
                    return this.decode(reader, reader.uint32());
                };

                /**
                 * Verifies an EntrustVO message.
                 * @function verify
                 * @memberof market.v2.trade.EntrustVO
                 * @static
                 * @param {Object.<string,*>} message Plain object to verify
                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
                 */
                EntrustVO.verify = function verify(message) {
                    if (typeof message !== "object" || message === null)
                        return "object expected";
                    if (message.id != null && message.hasOwnProperty("id"))
                        if (!$util.isInteger(message.id) && !(message.id && $util.isInteger(message.id.low) && $util.isInteger(message.id.high)))
                            return "id: integer|Long expected";
                    if (message.tradeid != null && message.hasOwnProperty("tradeid"))
                        if (!$util.isInteger(message.tradeid))
                            return "tradeid: integer expected";
                    if (message.entrusttime != null && message.hasOwnProperty("entrusttime"))
                        if (!$util.isInteger(message.entrusttime) && !(message.entrusttime && $util.isInteger(message.entrusttime.low) && $util.isInteger(message.entrusttime.high)))
                            return "entrusttime: integer|Long expected";
                    if (message.buycoinshortname != null && message.hasOwnProperty("buycoinshortname"))
                        if (!$util.isString(message.buycoinshortname))
                            return "buycoinshortname: string expected";
                    if (message.sellcoinshortname != null && message.hasOwnProperty("sellcoinshortname"))
                        if (!$util.isString(message.sellcoinshortname))
                            return "sellcoinshortname: string expected";
                    if (message.type != null && message.hasOwnProperty("type"))
                        if (!$util.isInteger(message.type))
                            return "type: integer expected";
                    if (message.direction != null && message.hasOwnProperty("direction"))
                        if (!$util.isInteger(message.direction))
                            return "direction: integer expected";
                    if (message.matchtype != null && message.hasOwnProperty("matchtype"))
                        if (!$util.isInteger(message.matchtype))
                            return "matchtype: integer expected";
                    if (message.pricetype != null && message.hasOwnProperty("pricetype"))
                        if (!$util.isString(message.pricetype))
                            return "pricetype: string expected";
                    if (message.entrustprice != null && message.hasOwnProperty("entrustprice"))
                        if (!$util.isString(message.entrustprice))
                            return "entrustprice: string expected";
                    if (message.count != null && message.hasOwnProperty("count"))
                        if (!$util.isString(message.count))
                            return "count: string expected";
                    if (message.successcount != null && message.hasOwnProperty("successcount"))
                        if (!$util.isString(message.successcount))
                            return "successcount: string expected";
                    if (message.averageprice != null && message.hasOwnProperty("averageprice"))
                        if (!$util.isString(message.averageprice))
                            return "averageprice: string expected";
                    if (message.status != null && message.hasOwnProperty("status"))
                        if (!$util.isInteger(message.status))
                            return "status: integer expected";
                    if (message.history != null && message.hasOwnProperty("history"))
                        if (typeof message.history !== "boolean")
                            return "history: boolean expected";
                    if (message.pushversion != null && message.hasOwnProperty("pushversion"))
                        if (!$util.isInteger(message.pushversion) && !(message.pushversion && $util.isInteger(message.pushversion.low) && $util.isInteger(message.pushversion.high)))
                            return "pushversion: integer|Long expected";
                    if (message.remove != null && message.hasOwnProperty("remove"))
                        if (typeof message.remove !== "boolean")
                            return "remove: boolean expected";
                    if (message.amount != null && message.hasOwnProperty("amount"))
                        if (!$util.isString(message.amount))
                            return "amount: string expected";
                    if (message.marketunit != null && message.hasOwnProperty("marketunit"))
                        if (!$util.isString(message.marketunit))
                            return "marketunit: string expected";
                    if (message.funds != null && message.hasOwnProperty("funds"))
                        if (!$util.isString(message.funds))
                            return "funds: string expected";
                    if (message.leftfunds != null && message.hasOwnProperty("leftfunds"))
                        if (!$util.isString(message.leftfunds))
                            return "leftfunds: string expected";
                    if (message.triggerprice != null && message.hasOwnProperty("triggerprice"))
                        if (!$util.isString(message.triggerprice))
                            return "triggerprice: string expected";
                    if (message.marginmode != null && message.hasOwnProperty("marginmode"))
                        if (!$util.isString(message.marginmode))
                            return "marginmode: string expected";
                    if (message.margintrademode != null && message.hasOwnProperty("margintrademode"))
                        if (!$util.isString(message.margintrademode))
                            return "margintrademode: string expected";
                    if (message.forcedliquidation != null && message.hasOwnProperty("forcedliquidation"))
                        if (typeof message.forcedliquidation !== "boolean")
                            return "forcedliquidation: boolean expected";
                    if (message.remark != null && message.hasOwnProperty("remark"))
                        if (!$util.isString(message.remark))
                            return "remark: string expected";
                    if (message.successamount != null && message.hasOwnProperty("successamount"))
                        if (!$util.isString(message.successamount))
                            return "successamount: string expected";
                    if (message.tradearea != null && message.hasOwnProperty("tradearea"))
                        if (!$util.isInteger(message.tradearea))
                            return "tradearea: integer expected";
                    if (message.fee != null && message.hasOwnProperty("fee"))
                        if (!$util.isString(message.fee))
                            return "fee: string expected";
                    if (message.trailingdelta != null && message.hasOwnProperty("trailingdelta"))
                        if (!$util.isString(message.trailingdelta))
                            return "trailingdelta: string expected";
                    if (message.activationprice != null && message.hasOwnProperty("activationprice"))
                        if (!$util.isString(message.activationprice))
                            return "activationprice: string expected";
                    if (message.activationtime != null && message.hasOwnProperty("activationtime"))
                        if (!$util.isInteger(message.activationtime) && !(message.activationtime && $util.isInteger(message.activationtime.low) && $util.isInteger(message.activationtime.high)))
                            return "activationtime: integer|Long expected";
                    if (message.triggersign != null && message.hasOwnProperty("triggersign"))
                        if (!$util.isInteger(message.triggersign))
                            return "triggersign: integer expected";
                    if (message.orderid != null && message.hasOwnProperty("orderid"))
                        if (!$util.isString(message.orderid))
                            return "orderid: string expected";
                    return null;
                };

                /**
                 * Creates an EntrustVO message from a plain object. Also converts values to their respective internal types.
                 * @function fromObject
                 * @memberof market.v2.trade.EntrustVO
                 * @static
                 * @param {Object.<string,*>} object Plain object
                 * @returns {market.v2.trade.EntrustVO} EntrustVO
                 */
                EntrustVO.fromObject = function fromObject(object) {
                    if (object instanceof $root.market.v2.trade.EntrustVO)
                        return object;
                    var message = new $root.market.v2.trade.EntrustVO();
                    if (object.id != null)
                        if ($util.Long)
                            (message.id = $util.Long.fromValue(object.id)).unsigned = false;
                        else if (typeof object.id === "string")
                            message.id = parseInt(object.id, 10);
                        else if (typeof object.id === "number")
                            message.id = object.id;
                        else if (typeof object.id === "object")
                            message.id = new $util.LongBits(object.id.low >>> 0, object.id.high >>> 0).toNumber();
                    if (object.tradeid != null)
                        message.tradeid = object.tradeid | 0;
                    if (object.entrusttime != null)
                        if ($util.Long)
                            (message.entrusttime = $util.Long.fromValue(object.entrusttime)).unsigned = false;
                        else if (typeof object.entrusttime === "string")
                            message.entrusttime = parseInt(object.entrusttime, 10);
                        else if (typeof object.entrusttime === "number")
                            message.entrusttime = object.entrusttime;
                        else if (typeof object.entrusttime === "object")
                            message.entrusttime = new $util.LongBits(object.entrusttime.low >>> 0, object.entrusttime.high >>> 0).toNumber();
                    if (object.buycoinshortname != null)
                        message.buycoinshortname = String(object.buycoinshortname);
                    if (object.sellcoinshortname != null)
                        message.sellcoinshortname = String(object.sellcoinshortname);
                    if (object.type != null)
                        message.type = object.type | 0;
                    if (object.direction != null)
                        message.direction = object.direction | 0;
                    if (object.matchtype != null)
                        message.matchtype = object.matchtype | 0;
                    if (object.pricetype != null)
                        message.pricetype = String(object.pricetype);
                    if (object.entrustprice != null)
                        message.entrustprice = String(object.entrustprice);
                    if (object.count != null)
                        message.count = String(object.count);
                    if (object.successcount != null)
                        message.successcount = String(object.successcount);
                    if (object.averageprice != null)
                        message.averageprice = String(object.averageprice);
                    if (object.status != null)
                        message.status = object.status | 0;
                    if (object.history != null)
                        message.history = Boolean(object.history);
                    if (object.pushversion != null)
                        if ($util.Long)
                            (message.pushversion = $util.Long.fromValue(object.pushversion)).unsigned = false;
                        else if (typeof object.pushversion === "string")
                            message.pushversion = parseInt(object.pushversion, 10);
                        else if (typeof object.pushversion === "number")
                            message.pushversion = object.pushversion;
                        else if (typeof object.pushversion === "object")
                            message.pushversion = new $util.LongBits(object.pushversion.low >>> 0, object.pushversion.high >>> 0).toNumber();
                    if (object.remove != null)
                        message.remove = Boolean(object.remove);
                    if (object.amount != null)
                        message.amount = String(object.amount);
                    if (object.marketunit != null)
                        message.marketunit = String(object.marketunit);
                    if (object.funds != null)
                        message.funds = String(object.funds);
                    if (object.leftfunds != null)
                        message.leftfunds = String(object.leftfunds);
                    if (object.triggerprice != null)
                        message.triggerprice = String(object.triggerprice);
                    if (object.marginmode != null)
                        message.marginmode = String(object.marginmode);
                    if (object.margintrademode != null)
                        message.margintrademode = String(object.margintrademode);
                    if (object.forcedliquidation != null)
                        message.forcedliquidation = Boolean(object.forcedliquidation);
                    if (object.remark != null)
                        message.remark = String(object.remark);
                    if (object.successamount != null)
                        message.successamount = String(object.successamount);
                    if (object.tradearea != null)
                        message.tradearea = object.tradearea | 0;
                    if (object.fee != null)
                        message.fee = String(object.fee);
                    if (object.trailingdelta != null)
                        message.trailingdelta = String(object.trailingdelta);
                    if (object.activationprice != null)
                        message.activationprice = String(object.activationprice);
                    if (object.activationtime != null)
                        if ($util.Long)
                            (message.activationtime = $util.Long.fromValue(object.activationtime)).unsigned = false;
                        else if (typeof object.activationtime === "string")
                            message.activationtime = parseInt(object.activationtime, 10);
                        else if (typeof object.activationtime === "number")
                            message.activationtime = object.activationtime;
                        else if (typeof object.activationtime === "object")
                            message.activationtime = new $util.LongBits(object.activationtime.low >>> 0, object.activationtime.high >>> 0).toNumber();
                    if (object.triggersign != null)
                        message.triggersign = object.triggersign | 0;
                    if (object.orderid != null)
                        message.orderid = String(object.orderid);
                    return message;
                };

                /**
                 * Creates a plain object from an EntrustVO message. Also converts values to other types if specified.
                 * @function toObject
                 * @memberof market.v2.trade.EntrustVO
                 * @static
                 * @param {market.v2.trade.EntrustVO} message EntrustVO
                 * @param {$protobuf.IConversionOptions} [options] Conversion options
                 * @returns {Object.<string,*>} Plain object
                 */
                EntrustVO.toObject = function toObject(message, options) {
                    if (!options)
                        options = {};
                    var object = {};
                    if (options.defaults) {
                        if ($util.Long) {
                            var long = new $util.Long(0, 0, false);
                            object.id = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
                        } else
                            object.id = options.longs === String ? "0" : 0;
                        object.tradeid = 0;
                        if ($util.Long) {
                            var long = new $util.Long(0, 0, false);
                            object.entrusttime = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
                        } else
                            object.entrusttime = options.longs === String ? "0" : 0;
                        object.buycoinshortname = "";
                        object.sellcoinshortname = "";
                        object.type = 0;
                        object.direction = 0;
                        object.matchtype = 0;
                        object.pricetype = "";
                        object.entrustprice = "";
                        object.count = "";
                        object.successcount = "";
                        object.averageprice = "";
                        object.status = 0;
                        object.history = false;
                        if ($util.Long) {
                            var long = new $util.Long(0, 0, false);
                            object.pushversion = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
                        } else
                            object.pushversion = options.longs === String ? "0" : 0;
                        object.remove = false;
                        object.amount = "";
                        object.marketunit = "";
                        object.funds = "";
                        object.leftfunds = "";
                        object.triggerprice = "";
                        object.marginmode = "";
                        object.margintrademode = "";
                        object.forcedliquidation = false;
                        object.remark = "";
                        object.successamount = "";
                        object.tradearea = 0;
                        object.fee = "";
                        object.trailingdelta = "";
                        object.activationprice = "";
                        if ($util.Long) {
                            var long = new $util.Long(0, 0, false);
                            object.activationtime = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
                        } else
                            object.activationtime = options.longs === String ? "0" : 0;
                        object.triggersign = 0;
                        object.orderid = "";
                    }
                    if (message.id != null && message.hasOwnProperty("id"))
                        if (typeof message.id === "number")
                            object.id = options.longs === String ? String(message.id) : message.id;
                        else
                            object.id = options.longs === String ? $util.Long.prototype.toString.call(message.id) : options.longs === Number ? new $util.LongBits(message.id.low >>> 0, message.id.high >>> 0).toNumber() : message.id;
                    if (message.tradeid != null && message.hasOwnProperty("tradeid"))
                        object.tradeid = message.tradeid;
                    if (message.entrusttime != null && message.hasOwnProperty("entrusttime"))
                        if (typeof message.entrusttime === "number")
                            object.entrusttime = options.longs === String ? String(message.entrusttime) : message.entrusttime;
                        else
                            object.entrusttime = options.longs === String ? $util.Long.prototype.toString.call(message.entrusttime) : options.longs === Number ? new $util.LongBits(message.entrusttime.low >>> 0, message.entrusttime.high >>> 0).toNumber() : message.entrusttime;
                    if (message.buycoinshortname != null && message.hasOwnProperty("buycoinshortname"))
                        object.buycoinshortname = message.buycoinshortname;
                    if (message.sellcoinshortname != null && message.hasOwnProperty("sellcoinshortname"))
                        object.sellcoinshortname = message.sellcoinshortname;
                    if (message.type != null && message.hasOwnProperty("type"))
                        object.type = message.type;
                    if (message.direction != null && message.hasOwnProperty("direction"))
                        object.direction = message.direction;
                    if (message.matchtype != null && message.hasOwnProperty("matchtype"))
                        object.matchtype = message.matchtype;
                    if (message.pricetype != null && message.hasOwnProperty("pricetype"))
                        object.pricetype = message.pricetype;
                    if (message.entrustprice != null && message.hasOwnProperty("entrustprice"))
                        object.entrustprice = message.entrustprice;
                    if (message.count != null && message.hasOwnProperty("count"))
                        object.count = message.count;
                    if (message.successcount != null && message.hasOwnProperty("successcount"))
                        object.successcount = message.successcount;
                    if (message.averageprice != null && message.hasOwnProperty("averageprice"))
                        object.averageprice = message.averageprice;
                    if (message.status != null && message.hasOwnProperty("status"))
                        object.status = message.status;
                    if (message.history != null && message.hasOwnProperty("history"))
                        object.history = message.history;
                    if (message.pushversion != null && message.hasOwnProperty("pushversion"))
                        if (typeof message.pushversion === "number")
                            object.pushversion = options.longs === String ? String(message.pushversion) : message.pushversion;
                        else
                            object.pushversion = options.longs === String ? $util.Long.prototype.toString.call(message.pushversion) : options.longs === Number ? new $util.LongBits(message.pushversion.low >>> 0, message.pushversion.high >>> 0).toNumber() : message.pushversion;
                    if (message.remove != null && message.hasOwnProperty("remove"))
                        object.remove = message.remove;
                    if (message.amount != null && message.hasOwnProperty("amount"))
                        object.amount = message.amount;
                    if (message.marketunit != null && message.hasOwnProperty("marketunit"))
                        object.marketunit = message.marketunit;
                    if (message.funds != null && message.hasOwnProperty("funds"))
                        object.funds = message.funds;
                    if (message.leftfunds != null && message.hasOwnProperty("leftfunds"))
                        object.leftfunds = message.leftfunds;
                    if (message.triggerprice != null && message.hasOwnProperty("triggerprice"))
                        object.triggerprice = message.triggerprice;
                    if (message.marginmode != null && message.hasOwnProperty("marginmode"))
                        object.marginmode = message.marginmode;
                    if (message.margintrademode != null && message.hasOwnProperty("margintrademode"))
                        object.margintrademode = message.margintrademode;
                    if (message.forcedliquidation != null && message.hasOwnProperty("forcedliquidation"))
                        object.forcedliquidation = message.forcedliquidation;
                    if (message.remark != null && message.hasOwnProperty("remark"))
                        object.remark = message.remark;
                    if (message.successamount != null && message.hasOwnProperty("successamount"))
                        object.successamount = message.successamount;
                    if (message.tradearea != null && message.hasOwnProperty("tradearea"))
                        object.tradearea = message.tradearea;
                    if (message.fee != null && message.hasOwnProperty("fee"))
                        object.fee = message.fee;
                    if (message.trailingdelta != null && message.hasOwnProperty("trailingdelta"))
                        object.trailingdelta = message.trailingdelta;
                    if (message.activationprice != null && message.hasOwnProperty("activationprice"))
                        object.activationprice = message.activationprice;
                    if (message.activationtime != null && message.hasOwnProperty("activationtime"))
                        if (typeof message.activationtime === "number")
                            object.activationtime = options.longs === String ? String(message.activationtime) : message.activationtime;
                        else
                            object.activationtime = options.longs === String ? $util.Long.prototype.toString.call(message.activationtime) : options.longs === Number ? new $util.LongBits(message.activationtime.low >>> 0, message.activationtime.high >>> 0).toNumber() : message.activationtime;
                    if (message.triggersign != null && message.hasOwnProperty("triggersign"))
                        object.triggersign = message.triggersign;
                    if (message.orderid != null && message.hasOwnProperty("orderid"))
                        object.orderid = message.orderid;
                    return object;
                };

                /**
                 * Converts this EntrustVO to JSON.
                 * @function toJSON
                 * @memberof market.v2.trade.EntrustVO
                 * @instance
                 * @returns {Object.<string,*>} JSON object
                 */
                EntrustVO.prototype.toJSON = function toJSON() {
                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
                };

                /**
                 * Gets the default type url for EntrustVO
                 * @function getTypeUrl
                 * @memberof market.v2.trade.EntrustVO
                 * @static
                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns {string} The default type url
                 */
                EntrustVO.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
                    if (typeUrlPrefix === undefined) {
                        typeUrlPrefix = "type.googleapis.com";
                    }
                    return typeUrlPrefix + "/market.v2.trade.EntrustVO";
                };

                return EntrustVO;
            })();

            trade.UserAssetBalance = (function() {

                /**
                 * Properties of a UserAssetBalance.
                 * @memberof market.v2.trade
                 * @interface IUserAssetBalance
                 * @property {string|null} [usdtassets] UserAssetBalance usdtassets
                 * @property {string|null} [usdtavailableassets] UserAssetBalance usdtavailableassets
                 * @property {string|null} [totalassets] UserAssetBalance totalassets
                 * @property {string|null} [btcassets] UserAssetBalance btcassets
                 * @property {Array.<market.v2.trade.IUserWallet>|null} [userwalletlist] UserAssetBalance userwalletlist
                 */

                /**
                 * Constructs a new UserAssetBalance.
                 * @memberof market.v2.trade
                 * @classdesc Represents a UserAssetBalance.
                 * @implements IUserAssetBalance
                 * @constructor
                 * @param {market.v2.trade.IUserAssetBalance=} [properties] Properties to set
                 */
                function UserAssetBalance(properties) {
                    this.userwalletlist = [];
                    if (properties)
                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                            if (properties[keys[i]] != null)
                                this[keys[i]] = properties[keys[i]];
                }

                /**
                 * UserAssetBalance usdtassets.
                 * @member {string} usdtassets
                 * @memberof market.v2.trade.UserAssetBalance
                 * @instance
                 */
                UserAssetBalance.prototype.usdtassets = "";

                /**
                 * UserAssetBalance usdtavailableassets.
                 * @member {string} usdtavailableassets
                 * @memberof market.v2.trade.UserAssetBalance
                 * @instance
                 */
                UserAssetBalance.prototype.usdtavailableassets = "";

                /**
                 * UserAssetBalance totalassets.
                 * @member {string} totalassets
                 * @memberof market.v2.trade.UserAssetBalance
                 * @instance
                 */
                UserAssetBalance.prototype.totalassets = "";

                /**
                 * UserAssetBalance btcassets.
                 * @member {string} btcassets
                 * @memberof market.v2.trade.UserAssetBalance
                 * @instance
                 */
                UserAssetBalance.prototype.btcassets = "";

                /**
                 * UserAssetBalance userwalletlist.
                 * @member {Array.<market.v2.trade.IUserWallet>} userwalletlist
                 * @memberof market.v2.trade.UserAssetBalance
                 * @instance
                 */
                UserAssetBalance.prototype.userwalletlist = $util.emptyArray;

                /**
                 * Creates a new UserAssetBalance instance using the specified properties.
                 * @function create
                 * @memberof market.v2.trade.UserAssetBalance
                 * @static
                 * @param {market.v2.trade.IUserAssetBalance=} [properties] Properties to set
                 * @returns {market.v2.trade.UserAssetBalance} UserAssetBalance instance
                 */
                UserAssetBalance.create = function create(properties) {
                    return new UserAssetBalance(properties);
                };

                /**
                 * Encodes the specified UserAssetBalance message. Does not implicitly {@link market.v2.trade.UserAssetBalance.verify|verify} messages.
                 * @function encode
                 * @memberof market.v2.trade.UserAssetBalance
                 * @static
                 * @param {market.v2.trade.IUserAssetBalance} message UserAssetBalance message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                UserAssetBalance.encode = function encode(message, writer) {
                    if (!writer)
                        writer = $Writer.create();
                    if (message.usdtassets != null && Object.hasOwnProperty.call(message, "usdtassets"))
                        writer.uint32(/* id 1, wireType 2 =*/10).string(message.usdtassets);
                    if (message.usdtavailableassets != null && Object.hasOwnProperty.call(message, "usdtavailableassets"))
                        writer.uint32(/* id 2, wireType 2 =*/18).string(message.usdtavailableassets);
                    if (message.totalassets != null && Object.hasOwnProperty.call(message, "totalassets"))
                        writer.uint32(/* id 3, wireType 2 =*/26).string(message.totalassets);
                    if (message.btcassets != null && Object.hasOwnProperty.call(message, "btcassets"))
                        writer.uint32(/* id 4, wireType 2 =*/34).string(message.btcassets);
                    if (message.userwalletlist != null && message.userwalletlist.length)
                        for (var i = 0; i < message.userwalletlist.length; ++i)
                            $root.market.v2.trade.UserWallet.encode(message.userwalletlist[i], writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim();
                    return writer;
                };

                /**
                 * Encodes the specified UserAssetBalance message, length delimited. Does not implicitly {@link market.v2.trade.UserAssetBalance.verify|verify} messages.
                 * @function encodeDelimited
                 * @memberof market.v2.trade.UserAssetBalance
                 * @static
                 * @param {market.v2.trade.IUserAssetBalance} message UserAssetBalance message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                UserAssetBalance.encodeDelimited = function encodeDelimited(message, writer) {
                    return this.encode(message, writer).ldelim();
                };

                /**
                 * Decodes a UserAssetBalance message from the specified reader or buffer.
                 * @function decode
                 * @memberof market.v2.trade.UserAssetBalance
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @param {number} [length] Message length if known beforehand
                 * @returns {market.v2.trade.UserAssetBalance} UserAssetBalance
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                UserAssetBalance.decode = function decode(reader, length) {
                    if (!(reader instanceof $Reader))
                        reader = $Reader.create(reader);
                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.market.v2.trade.UserAssetBalance();
                    while (reader.pos < end) {
                        var tag = reader.uint32();
                        switch (tag >>> 3) {
                        case 1: {
                                message.usdtassets = reader.string();
                                break;
                            }
                        case 2: {
                                message.usdtavailableassets = reader.string();
                                break;
                            }
                        case 3: {
                                message.totalassets = reader.string();
                                break;
                            }
                        case 4: {
                                message.btcassets = reader.string();
                                break;
                            }
                        case 5: {
                                if (!(message.userwalletlist && message.userwalletlist.length))
                                    message.userwalletlist = [];
                                message.userwalletlist.push($root.market.v2.trade.UserWallet.decode(reader, reader.uint32()));
                                break;
                            }
                        default:
                            reader.skipType(tag & 7);
                            break;
                        }
                    }
                    return message;
                };

                /**
                 * Decodes a UserAssetBalance message from the specified reader or buffer, length delimited.
                 * @function decodeDelimited
                 * @memberof market.v2.trade.UserAssetBalance
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @returns {market.v2.trade.UserAssetBalance} UserAssetBalance
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                UserAssetBalance.decodeDelimited = function decodeDelimited(reader) {
                    if (!(reader instanceof $Reader))
                        reader = new $Reader(reader);
                    return this.decode(reader, reader.uint32());
                };

                /**
                 * Verifies a UserAssetBalance message.
                 * @function verify
                 * @memberof market.v2.trade.UserAssetBalance
                 * @static
                 * @param {Object.<string,*>} message Plain object to verify
                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
                 */
                UserAssetBalance.verify = function verify(message) {
                    if (typeof message !== "object" || message === null)
                        return "object expected";
                    if (message.usdtassets != null && message.hasOwnProperty("usdtassets"))
                        if (!$util.isString(message.usdtassets))
                            return "usdtassets: string expected";
                    if (message.usdtavailableassets != null && message.hasOwnProperty("usdtavailableassets"))
                        if (!$util.isString(message.usdtavailableassets))
                            return "usdtavailableassets: string expected";
                    if (message.totalassets != null && message.hasOwnProperty("totalassets"))
                        if (!$util.isString(message.totalassets))
                            return "totalassets: string expected";
                    if (message.btcassets != null && message.hasOwnProperty("btcassets"))
                        if (!$util.isString(message.btcassets))
                            return "btcassets: string expected";
                    if (message.userwalletlist != null && message.hasOwnProperty("userwalletlist")) {
                        if (!Array.isArray(message.userwalletlist))
                            return "userwalletlist: array expected";
                        for (var i = 0; i < message.userwalletlist.length; ++i) {
                            var error = $root.market.v2.trade.UserWallet.verify(message.userwalletlist[i]);
                            if (error)
                                return "userwalletlist." + error;
                        }
                    }
                    return null;
                };

                /**
                 * Creates a UserAssetBalance message from a plain object. Also converts values to their respective internal types.
                 * @function fromObject
                 * @memberof market.v2.trade.UserAssetBalance
                 * @static
                 * @param {Object.<string,*>} object Plain object
                 * @returns {market.v2.trade.UserAssetBalance} UserAssetBalance
                 */
                UserAssetBalance.fromObject = function fromObject(object) {
                    if (object instanceof $root.market.v2.trade.UserAssetBalance)
                        return object;
                    var message = new $root.market.v2.trade.UserAssetBalance();
                    if (object.usdtassets != null)
                        message.usdtassets = String(object.usdtassets);
                    if (object.usdtavailableassets != null)
                        message.usdtavailableassets = String(object.usdtavailableassets);
                    if (object.totalassets != null)
                        message.totalassets = String(object.totalassets);
                    if (object.btcassets != null)
                        message.btcassets = String(object.btcassets);
                    if (object.userwalletlist) {
                        if (!Array.isArray(object.userwalletlist))
                            throw TypeError(".market.v2.trade.UserAssetBalance.userwalletlist: array expected");
                        message.userwalletlist = [];
                        for (var i = 0; i < object.userwalletlist.length; ++i) {
                            if (typeof object.userwalletlist[i] !== "object")
                                throw TypeError(".market.v2.trade.UserAssetBalance.userwalletlist: object expected");
                            message.userwalletlist[i] = $root.market.v2.trade.UserWallet.fromObject(object.userwalletlist[i]);
                        }
                    }
                    return message;
                };

                /**
                 * Creates a plain object from a UserAssetBalance message. Also converts values to other types if specified.
                 * @function toObject
                 * @memberof market.v2.trade.UserAssetBalance
                 * @static
                 * @param {market.v2.trade.UserAssetBalance} message UserAssetBalance
                 * @param {$protobuf.IConversionOptions} [options] Conversion options
                 * @returns {Object.<string,*>} Plain object
                 */
                UserAssetBalance.toObject = function toObject(message, options) {
                    if (!options)
                        options = {};
                    var object = {};
                    if (options.arrays || options.defaults)
                        object.userwalletlist = [];
                    if (options.defaults) {
                        object.usdtassets = "";
                        object.usdtavailableassets = "";
                        object.totalassets = "";
                        object.btcassets = "";
                    }
                    if (message.usdtassets != null && message.hasOwnProperty("usdtassets"))
                        object.usdtassets = message.usdtassets;
                    if (message.usdtavailableassets != null && message.hasOwnProperty("usdtavailableassets"))
                        object.usdtavailableassets = message.usdtavailableassets;
                    if (message.totalassets != null && message.hasOwnProperty("totalassets"))
                        object.totalassets = message.totalassets;
                    if (message.btcassets != null && message.hasOwnProperty("btcassets"))
                        object.btcassets = message.btcassets;
                    if (message.userwalletlist && message.userwalletlist.length) {
                        object.userwalletlist = [];
                        for (var j = 0; j < message.userwalletlist.length; ++j)
                            object.userwalletlist[j] = $root.market.v2.trade.UserWallet.toObject(message.userwalletlist[j], options);
                    }
                    return object;
                };

                /**
                 * Converts this UserAssetBalance to JSON.
                 * @function toJSON
                 * @memberof market.v2.trade.UserAssetBalance
                 * @instance
                 * @returns {Object.<string,*>} JSON object
                 */
                UserAssetBalance.prototype.toJSON = function toJSON() {
                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
                };

                /**
                 * Gets the default type url for UserAssetBalance
                 * @function getTypeUrl
                 * @memberof market.v2.trade.UserAssetBalance
                 * @static
                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns {string} The default type url
                 */
                UserAssetBalance.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
                    if (typeUrlPrefix === undefined) {
                        typeUrlPrefix = "type.googleapis.com";
                    }
                    return typeUrlPrefix + "/market.v2.trade.UserAssetBalance";
                };

                return UserAssetBalance;
            })();

            trade.UserWallet = (function() {

                /**
                 * Properties of a UserWallet.
                 * @memberof market.v2.trade
                 * @interface IUserWallet
                 * @property {Array.<market.v2.trade.IUserWalletPairInfo>|null} [listList] UserWallet listList
                 */

                /**
                 * Constructs a new UserWallet.
                 * @memberof market.v2.trade
                 * @classdesc Represents a UserWallet.
                 * @implements IUserWallet
                 * @constructor
                 * @param {market.v2.trade.IUserWallet=} [properties] Properties to set
                 */
                function UserWallet(properties) {
                    this.listList = [];
                    if (properties)
                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                            if (properties[keys[i]] != null)
                                this[keys[i]] = properties[keys[i]];
                }

                /**
                 * UserWallet listList.
                 * @member {Array.<market.v2.trade.IUserWalletPairInfo>} listList
                 * @memberof market.v2.trade.UserWallet
                 * @instance
                 */
                UserWallet.prototype.listList = $util.emptyArray;

                /**
                 * Creates a new UserWallet instance using the specified properties.
                 * @function create
                 * @memberof market.v2.trade.UserWallet
                 * @static
                 * @param {market.v2.trade.IUserWallet=} [properties] Properties to set
                 * @returns {market.v2.trade.UserWallet} UserWallet instance
                 */
                UserWallet.create = function create(properties) {
                    return new UserWallet(properties);
                };

                /**
                 * Encodes the specified UserWallet message. Does not implicitly {@link market.v2.trade.UserWallet.verify|verify} messages.
                 * @function encode
                 * @memberof market.v2.trade.UserWallet
                 * @static
                 * @param {market.v2.trade.IUserWallet} message UserWallet message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                UserWallet.encode = function encode(message, writer) {
                    if (!writer)
                        writer = $Writer.create();
                    if (message.listList != null && message.listList.length)
                        for (var i = 0; i < message.listList.length; ++i)
                            $root.market.v2.trade.UserWalletPairInfo.encode(message.listList[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
                    return writer;
                };

                /**
                 * Encodes the specified UserWallet message, length delimited. Does not implicitly {@link market.v2.trade.UserWallet.verify|verify} messages.
                 * @function encodeDelimited
                 * @memberof market.v2.trade.UserWallet
                 * @static
                 * @param {market.v2.trade.IUserWallet} message UserWallet message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                UserWallet.encodeDelimited = function encodeDelimited(message, writer) {
                    return this.encode(message, writer).ldelim();
                };

                /**
                 * Decodes a UserWallet message from the specified reader or buffer.
                 * @function decode
                 * @memberof market.v2.trade.UserWallet
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @param {number} [length] Message length if known beforehand
                 * @returns {market.v2.trade.UserWallet} UserWallet
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                UserWallet.decode = function decode(reader, length) {
                    if (!(reader instanceof $Reader))
                        reader = $Reader.create(reader);
                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.market.v2.trade.UserWallet();
                    while (reader.pos < end) {
                        var tag = reader.uint32();
                        switch (tag >>> 3) {
                        case 1: {
                                if (!(message.listList && message.listList.length))
                                    message.listList = [];
                                message.listList.push($root.market.v2.trade.UserWalletPairInfo.decode(reader, reader.uint32()));
                                break;
                            }
                        default:
                            reader.skipType(tag & 7);
                            break;
                        }
                    }
                    return message;
                };

                /**
                 * Decodes a UserWallet message from the specified reader or buffer, length delimited.
                 * @function decodeDelimited
                 * @memberof market.v2.trade.UserWallet
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @returns {market.v2.trade.UserWallet} UserWallet
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                UserWallet.decodeDelimited = function decodeDelimited(reader) {
                    if (!(reader instanceof $Reader))
                        reader = new $Reader(reader);
                    return this.decode(reader, reader.uint32());
                };

                /**
                 * Verifies a UserWallet message.
                 * @function verify
                 * @memberof market.v2.trade.UserWallet
                 * @static
                 * @param {Object.<string,*>} message Plain object to verify
                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
                 */
                UserWallet.verify = function verify(message) {
                    if (typeof message !== "object" || message === null)
                        return "object expected";
                    if (message.listList != null && message.hasOwnProperty("listList")) {
                        if (!Array.isArray(message.listList))
                            return "listList: array expected";
                        for (var i = 0; i < message.listList.length; ++i) {
                            var error = $root.market.v2.trade.UserWalletPairInfo.verify(message.listList[i]);
                            if (error)
                                return "listList." + error;
                        }
                    }
                    return null;
                };

                /**
                 * Creates a UserWallet message from a plain object. Also converts values to their respective internal types.
                 * @function fromObject
                 * @memberof market.v2.trade.UserWallet
                 * @static
                 * @param {Object.<string,*>} object Plain object
                 * @returns {market.v2.trade.UserWallet} UserWallet
                 */
                UserWallet.fromObject = function fromObject(object) {
                    if (object instanceof $root.market.v2.trade.UserWallet)
                        return object;
                    var message = new $root.market.v2.trade.UserWallet();
                    if (object.listList) {
                        if (!Array.isArray(object.listList))
                            throw TypeError(".market.v2.trade.UserWallet.listList: array expected");
                        message.listList = [];
                        for (var i = 0; i < object.listList.length; ++i) {
                            if (typeof object.listList[i] !== "object")
                                throw TypeError(".market.v2.trade.UserWallet.listList: object expected");
                            message.listList[i] = $root.market.v2.trade.UserWalletPairInfo.fromObject(object.listList[i]);
                        }
                    }
                    return message;
                };

                /**
                 * Creates a plain object from a UserWallet message. Also converts values to other types if specified.
                 * @function toObject
                 * @memberof market.v2.trade.UserWallet
                 * @static
                 * @param {market.v2.trade.UserWallet} message UserWallet
                 * @param {$protobuf.IConversionOptions} [options] Conversion options
                 * @returns {Object.<string,*>} Plain object
                 */
                UserWallet.toObject = function toObject(message, options) {
                    if (!options)
                        options = {};
                    var object = {};
                    if (options.arrays || options.defaults)
                        object.listList = [];
                    if (message.listList && message.listList.length) {
                        object.listList = [];
                        for (var j = 0; j < message.listList.length; ++j)
                            object.listList[j] = $root.market.v2.trade.UserWalletPairInfo.toObject(message.listList[j], options);
                    }
                    return object;
                };

                /**
                 * Converts this UserWallet to JSON.
                 * @function toJSON
                 * @memberof market.v2.trade.UserWallet
                 * @instance
                 * @returns {Object.<string,*>} JSON object
                 */
                UserWallet.prototype.toJSON = function toJSON() {
                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
                };

                /**
                 * Gets the default type url for UserWallet
                 * @function getTypeUrl
                 * @memberof market.v2.trade.UserWallet
                 * @static
                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns {string} The default type url
                 */
                UserWallet.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
                    if (typeUrlPrefix === undefined) {
                        typeUrlPrefix = "type.googleapis.com";
                    }
                    return typeUrlPrefix + "/market.v2.trade.UserWallet";
                };

                return UserWallet;
            })();

            trade.UserWalletPairInfo = (function() {

                /**
                 * Properties of a UserWalletPairInfo.
                 * @memberof market.v2.trade
                 * @interface IUserWalletPairInfo
                 * @property {number|null} [coinid] UserWalletPairInfo coinid
                 * @property {string|null} [totalAmount] UserWalletPairInfo totalAmount
                 * @property {string|null} [total] UserWalletPairInfo total
                 * @property {string|null} [frozen] UserWalletPairInfo frozen
                 * @property {string|null} [borrow] UserWalletPairInfo borrow
                 * @property {string|null} [coinname] UserWalletPairInfo coinname
                 * @property {string|null} [shortName] UserWalletPairInfo shortName
                 * @property {boolean|null} [withdraw] UserWalletPairInfo withdraw
                 * @property {boolean|null} [recharge] UserWalletPairInfo recharge
                 * @property {string|null} [usdtprice] UserWalletPairInfo usdtprice
                 * @property {string|null} [price] UserWalletPairInfo price
                 * @property {number|null} [sortid] UserWalletPairInfo sortid
                 */

                /**
                 * Constructs a new UserWalletPairInfo.
                 * @memberof market.v2.trade
                 * @classdesc Represents a UserWalletPairInfo.
                 * @implements IUserWalletPairInfo
                 * @constructor
                 * @param {market.v2.trade.IUserWalletPairInfo=} [properties] Properties to set
                 */
                function UserWalletPairInfo(properties) {
                    if (properties)
                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                            if (properties[keys[i]] != null)
                                this[keys[i]] = properties[keys[i]];
                }

                /**
                 * UserWalletPairInfo coinid.
                 * @member {number} coinid
                 * @memberof market.v2.trade.UserWalletPairInfo
                 * @instance
                 */
                UserWalletPairInfo.prototype.coinid = 0;

                /**
                 * UserWalletPairInfo totalAmount.
                 * @member {string} totalAmount
                 * @memberof market.v2.trade.UserWalletPairInfo
                 * @instance
                 */
                UserWalletPairInfo.prototype.totalAmount = "";

                /**
                 * UserWalletPairInfo total.
                 * @member {string} total
                 * @memberof market.v2.trade.UserWalletPairInfo
                 * @instance
                 */
                UserWalletPairInfo.prototype.total = "";

                /**
                 * UserWalletPairInfo frozen.
                 * @member {string} frozen
                 * @memberof market.v2.trade.UserWalletPairInfo
                 * @instance
                 */
                UserWalletPairInfo.prototype.frozen = "";

                /**
                 * UserWalletPairInfo borrow.
                 * @member {string} borrow
                 * @memberof market.v2.trade.UserWalletPairInfo
                 * @instance
                 */
                UserWalletPairInfo.prototype.borrow = "";

                /**
                 * UserWalletPairInfo coinname.
                 * @member {string} coinname
                 * @memberof market.v2.trade.UserWalletPairInfo
                 * @instance
                 */
                UserWalletPairInfo.prototype.coinname = "";

                /**
                 * UserWalletPairInfo shortName.
                 * @member {string} shortName
                 * @memberof market.v2.trade.UserWalletPairInfo
                 * @instance
                 */
                UserWalletPairInfo.prototype.shortName = "";

                /**
                 * UserWalletPairInfo withdraw.
                 * @member {boolean} withdraw
                 * @memberof market.v2.trade.UserWalletPairInfo
                 * @instance
                 */
                UserWalletPairInfo.prototype.withdraw = false;

                /**
                 * UserWalletPairInfo recharge.
                 * @member {boolean} recharge
                 * @memberof market.v2.trade.UserWalletPairInfo
                 * @instance
                 */
                UserWalletPairInfo.prototype.recharge = false;

                /**
                 * UserWalletPairInfo usdtprice.
                 * @member {string} usdtprice
                 * @memberof market.v2.trade.UserWalletPairInfo
                 * @instance
                 */
                UserWalletPairInfo.prototype.usdtprice = "";

                /**
                 * UserWalletPairInfo price.
                 * @member {string} price
                 * @memberof market.v2.trade.UserWalletPairInfo
                 * @instance
                 */
                UserWalletPairInfo.prototype.price = "";

                /**
                 * UserWalletPairInfo sortid.
                 * @member {number} sortid
                 * @memberof market.v2.trade.UserWalletPairInfo
                 * @instance
                 */
                UserWalletPairInfo.prototype.sortid = 0;

                /**
                 * Creates a new UserWalletPairInfo instance using the specified properties.
                 * @function create
                 * @memberof market.v2.trade.UserWalletPairInfo
                 * @static
                 * @param {market.v2.trade.IUserWalletPairInfo=} [properties] Properties to set
                 * @returns {market.v2.trade.UserWalletPairInfo} UserWalletPairInfo instance
                 */
                UserWalletPairInfo.create = function create(properties) {
                    return new UserWalletPairInfo(properties);
                };

                /**
                 * Encodes the specified UserWalletPairInfo message. Does not implicitly {@link market.v2.trade.UserWalletPairInfo.verify|verify} messages.
                 * @function encode
                 * @memberof market.v2.trade.UserWalletPairInfo
                 * @static
                 * @param {market.v2.trade.IUserWalletPairInfo} message UserWalletPairInfo message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                UserWalletPairInfo.encode = function encode(message, writer) {
                    if (!writer)
                        writer = $Writer.create();
                    if (message.coinid != null && Object.hasOwnProperty.call(message, "coinid"))
                        writer.uint32(/* id 1, wireType 0 =*/8).int32(message.coinid);
                    if (message.totalAmount != null && Object.hasOwnProperty.call(message, "totalAmount"))
                        writer.uint32(/* id 2, wireType 2 =*/18).string(message.totalAmount);
                    if (message.total != null && Object.hasOwnProperty.call(message, "total"))
                        writer.uint32(/* id 3, wireType 2 =*/26).string(message.total);
                    if (message.frozen != null && Object.hasOwnProperty.call(message, "frozen"))
                        writer.uint32(/* id 4, wireType 2 =*/34).string(message.frozen);
                    if (message.borrow != null && Object.hasOwnProperty.call(message, "borrow"))
                        writer.uint32(/* id 5, wireType 2 =*/42).string(message.borrow);
                    if (message.coinname != null && Object.hasOwnProperty.call(message, "coinname"))
                        writer.uint32(/* id 6, wireType 2 =*/50).string(message.coinname);
                    if (message.shortName != null && Object.hasOwnProperty.call(message, "shortName"))
                        writer.uint32(/* id 7, wireType 2 =*/58).string(message.shortName);
                    if (message.withdraw != null && Object.hasOwnProperty.call(message, "withdraw"))
                        writer.uint32(/* id 8, wireType 0 =*/64).bool(message.withdraw);
                    if (message.recharge != null && Object.hasOwnProperty.call(message, "recharge"))
                        writer.uint32(/* id 9, wireType 0 =*/72).bool(message.recharge);
                    if (message.usdtprice != null && Object.hasOwnProperty.call(message, "usdtprice"))
                        writer.uint32(/* id 10, wireType 2 =*/82).string(message.usdtprice);
                    if (message.price != null && Object.hasOwnProperty.call(message, "price"))
                        writer.uint32(/* id 11, wireType 2 =*/90).string(message.price);
                    if (message.sortid != null && Object.hasOwnProperty.call(message, "sortid"))
                        writer.uint32(/* id 12, wireType 0 =*/96).int32(message.sortid);
                    return writer;
                };

                /**
                 * Encodes the specified UserWalletPairInfo message, length delimited. Does not implicitly {@link market.v2.trade.UserWalletPairInfo.verify|verify} messages.
                 * @function encodeDelimited
                 * @memberof market.v2.trade.UserWalletPairInfo
                 * @static
                 * @param {market.v2.trade.IUserWalletPairInfo} message UserWalletPairInfo message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                UserWalletPairInfo.encodeDelimited = function encodeDelimited(message, writer) {
                    return this.encode(message, writer).ldelim();
                };

                /**
                 * Decodes a UserWalletPairInfo message from the specified reader or buffer.
                 * @function decode
                 * @memberof market.v2.trade.UserWalletPairInfo
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @param {number} [length] Message length if known beforehand
                 * @returns {market.v2.trade.UserWalletPairInfo} UserWalletPairInfo
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                UserWalletPairInfo.decode = function decode(reader, length) {
                    if (!(reader instanceof $Reader))
                        reader = $Reader.create(reader);
                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.market.v2.trade.UserWalletPairInfo();
                    while (reader.pos < end) {
                        var tag = reader.uint32();
                        switch (tag >>> 3) {
                        case 1: {
                                message.coinid = reader.int32();
                                break;
                            }
                        case 2: {
                                message.totalAmount = reader.string();
                                break;
                            }
                        case 3: {
                                message.total = reader.string();
                                break;
                            }
                        case 4: {
                                message.frozen = reader.string();
                                break;
                            }
                        case 5: {
                                message.borrow = reader.string();
                                break;
                            }
                        case 6: {
                                message.coinname = reader.string();
                                break;
                            }
                        case 7: {
                                message.shortName = reader.string();
                                break;
                            }
                        case 8: {
                                message.withdraw = reader.bool();
                                break;
                            }
                        case 9: {
                                message.recharge = reader.bool();
                                break;
                            }
                        case 10: {
                                message.usdtprice = reader.string();
                                break;
                            }
                        case 11: {
                                message.price = reader.string();
                                break;
                            }
                        case 12: {
                                message.sortid = reader.int32();
                                break;
                            }
                        default:
                            reader.skipType(tag & 7);
                            break;
                        }
                    }
                    return message;
                };

                /**
                 * Decodes a UserWalletPairInfo message from the specified reader or buffer, length delimited.
                 * @function decodeDelimited
                 * @memberof market.v2.trade.UserWalletPairInfo
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @returns {market.v2.trade.UserWalletPairInfo} UserWalletPairInfo
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                UserWalletPairInfo.decodeDelimited = function decodeDelimited(reader) {
                    if (!(reader instanceof $Reader))
                        reader = new $Reader(reader);
                    return this.decode(reader, reader.uint32());
                };

                /**
                 * Verifies a UserWalletPairInfo message.
                 * @function verify
                 * @memberof market.v2.trade.UserWalletPairInfo
                 * @static
                 * @param {Object.<string,*>} message Plain object to verify
                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
                 */
                UserWalletPairInfo.verify = function verify(message) {
                    if (typeof message !== "object" || message === null)
                        return "object expected";
                    if (message.coinid != null && message.hasOwnProperty("coinid"))
                        if (!$util.isInteger(message.coinid))
                            return "coinid: integer expected";
                    if (message.totalAmount != null && message.hasOwnProperty("totalAmount"))
                        if (!$util.isString(message.totalAmount))
                            return "totalAmount: string expected";
                    if (message.total != null && message.hasOwnProperty("total"))
                        if (!$util.isString(message.total))
                            return "total: string expected";
                    if (message.frozen != null && message.hasOwnProperty("frozen"))
                        if (!$util.isString(message.frozen))
                            return "frozen: string expected";
                    if (message.borrow != null && message.hasOwnProperty("borrow"))
                        if (!$util.isString(message.borrow))
                            return "borrow: string expected";
                    if (message.coinname != null && message.hasOwnProperty("coinname"))
                        if (!$util.isString(message.coinname))
                            return "coinname: string expected";
                    if (message.shortName != null && message.hasOwnProperty("shortName"))
                        if (!$util.isString(message.shortName))
                            return "shortName: string expected";
                    if (message.withdraw != null && message.hasOwnProperty("withdraw"))
                        if (typeof message.withdraw !== "boolean")
                            return "withdraw: boolean expected";
                    if (message.recharge != null && message.hasOwnProperty("recharge"))
                        if (typeof message.recharge !== "boolean")
                            return "recharge: boolean expected";
                    if (message.usdtprice != null && message.hasOwnProperty("usdtprice"))
                        if (!$util.isString(message.usdtprice))
                            return "usdtprice: string expected";
                    if (message.price != null && message.hasOwnProperty("price"))
                        if (!$util.isString(message.price))
                            return "price: string expected";
                    if (message.sortid != null && message.hasOwnProperty("sortid"))
                        if (!$util.isInteger(message.sortid))
                            return "sortid: integer expected";
                    return null;
                };

                /**
                 * Creates a UserWalletPairInfo message from a plain object. Also converts values to their respective internal types.
                 * @function fromObject
                 * @memberof market.v2.trade.UserWalletPairInfo
                 * @static
                 * @param {Object.<string,*>} object Plain object
                 * @returns {market.v2.trade.UserWalletPairInfo} UserWalletPairInfo
                 */
                UserWalletPairInfo.fromObject = function fromObject(object) {
                    if (object instanceof $root.market.v2.trade.UserWalletPairInfo)
                        return object;
                    var message = new $root.market.v2.trade.UserWalletPairInfo();
                    if (object.coinid != null)
                        message.coinid = object.coinid | 0;
                    if (object.totalAmount != null)
                        message.totalAmount = String(object.totalAmount);
                    if (object.total != null)
                        message.total = String(object.total);
                    if (object.frozen != null)
                        message.frozen = String(object.frozen);
                    if (object.borrow != null)
                        message.borrow = String(object.borrow);
                    if (object.coinname != null)
                        message.coinname = String(object.coinname);
                    if (object.shortName != null)
                        message.shortName = String(object.shortName);
                    if (object.withdraw != null)
                        message.withdraw = Boolean(object.withdraw);
                    if (object.recharge != null)
                        message.recharge = Boolean(object.recharge);
                    if (object.usdtprice != null)
                        message.usdtprice = String(object.usdtprice);
                    if (object.price != null)
                        message.price = String(object.price);
                    if (object.sortid != null)
                        message.sortid = object.sortid | 0;
                    return message;
                };

                /**
                 * Creates a plain object from a UserWalletPairInfo message. Also converts values to other types if specified.
                 * @function toObject
                 * @memberof market.v2.trade.UserWalletPairInfo
                 * @static
                 * @param {market.v2.trade.UserWalletPairInfo} message UserWalletPairInfo
                 * @param {$protobuf.IConversionOptions} [options] Conversion options
                 * @returns {Object.<string,*>} Plain object
                 */
                UserWalletPairInfo.toObject = function toObject(message, options) {
                    if (!options)
                        options = {};
                    var object = {};
                    if (options.defaults) {
                        object.coinid = 0;
                        object.totalAmount = "";
                        object.total = "";
                        object.frozen = "";
                        object.borrow = "";
                        object.coinname = "";
                        object.shortName = "";
                        object.withdraw = false;
                        object.recharge = false;
                        object.usdtprice = "";
                        object.price = "";
                        object.sortid = 0;
                    }
                    if (message.coinid != null && message.hasOwnProperty("coinid"))
                        object.coinid = message.coinid;
                    if (message.totalAmount != null && message.hasOwnProperty("totalAmount"))
                        object.totalAmount = message.totalAmount;
                    if (message.total != null && message.hasOwnProperty("total"))
                        object.total = message.total;
                    if (message.frozen != null && message.hasOwnProperty("frozen"))
                        object.frozen = message.frozen;
                    if (message.borrow != null && message.hasOwnProperty("borrow"))
                        object.borrow = message.borrow;
                    if (message.coinname != null && message.hasOwnProperty("coinname"))
                        object.coinname = message.coinname;
                    if (message.shortName != null && message.hasOwnProperty("shortName"))
                        object.shortName = message.shortName;
                    if (message.withdraw != null && message.hasOwnProperty("withdraw"))
                        object.withdraw = message.withdraw;
                    if (message.recharge != null && message.hasOwnProperty("recharge"))
                        object.recharge = message.recharge;
                    if (message.usdtprice != null && message.hasOwnProperty("usdtprice"))
                        object.usdtprice = message.usdtprice;
                    if (message.price != null && message.hasOwnProperty("price"))
                        object.price = message.price;
                    if (message.sortid != null && message.hasOwnProperty("sortid"))
                        object.sortid = message.sortid;
                    return object;
                };

                /**
                 * Converts this UserWalletPairInfo to JSON.
                 * @function toJSON
                 * @memberof market.v2.trade.UserWalletPairInfo
                 * @instance
                 * @returns {Object.<string,*>} JSON object
                 */
                UserWalletPairInfo.prototype.toJSON = function toJSON() {
                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
                };

                /**
                 * Gets the default type url for UserWalletPairInfo
                 * @function getTypeUrl
                 * @memberof market.v2.trade.UserWalletPairInfo
                 * @static
                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns {string} The default type url
                 */
                UserWalletPairInfo.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
                    if (typeUrlPrefix === undefined) {
                        typeUrlPrefix = "type.googleapis.com";
                    }
                    return typeUrlPrefix + "/market.v2.trade.UserWalletPairInfo";
                };

                return UserWalletPairInfo;
            })();

            trade.MarketTickerList = (function() {

                /**
                 * Properties of a MarketTickerList.
                 * @memberof market.v2.trade
                 * @interface IMarketTickerList
                 */

                /**
                 * Constructs a new MarketTickerList.
                 * @memberof market.v2.trade
                 * @classdesc Represents a MarketTickerList.
                 * @implements IMarketTickerList
                 * @constructor
                 * @param {market.v2.trade.IMarketTickerList=} [properties] Properties to set
                 */
                function MarketTickerList(properties) {
                    if (properties)
                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                            if (properties[keys[i]] != null)
                                this[keys[i]] = properties[keys[i]];
                }

                /**
                 * Creates a new MarketTickerList instance using the specified properties.
                 * @function create
                 * @memberof market.v2.trade.MarketTickerList
                 * @static
                 * @param {market.v2.trade.IMarketTickerList=} [properties] Properties to set
                 * @returns {market.v2.trade.MarketTickerList} MarketTickerList instance
                 */
                MarketTickerList.create = function create(properties) {
                    return new MarketTickerList(properties);
                };

                /**
                 * Encodes the specified MarketTickerList message. Does not implicitly {@link market.v2.trade.MarketTickerList.verify|verify} messages.
                 * @function encode
                 * @memberof market.v2.trade.MarketTickerList
                 * @static
                 * @param {market.v2.trade.IMarketTickerList} message MarketTickerList message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                MarketTickerList.encode = function encode(message, writer) {
                    if (!writer)
                        writer = $Writer.create();
                    return writer;
                };

                /**
                 * Encodes the specified MarketTickerList message, length delimited. Does not implicitly {@link market.v2.trade.MarketTickerList.verify|verify} messages.
                 * @function encodeDelimited
                 * @memberof market.v2.trade.MarketTickerList
                 * @static
                 * @param {market.v2.trade.IMarketTickerList} message MarketTickerList message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                MarketTickerList.encodeDelimited = function encodeDelimited(message, writer) {
                    return this.encode(message, writer).ldelim();
                };

                /**
                 * Decodes a MarketTickerList message from the specified reader or buffer.
                 * @function decode
                 * @memberof market.v2.trade.MarketTickerList
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @param {number} [length] Message length if known beforehand
                 * @returns {market.v2.trade.MarketTickerList} MarketTickerList
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                MarketTickerList.decode = function decode(reader, length) {
                    if (!(reader instanceof $Reader))
                        reader = $Reader.create(reader);
                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.market.v2.trade.MarketTickerList();
                    while (reader.pos < end) {
                        var tag = reader.uint32();
                        switch (tag >>> 3) {
                        default:
                            reader.skipType(tag & 7);
                            break;
                        }
                    }
                    return message;
                };

                /**
                 * Decodes a MarketTickerList message from the specified reader or buffer, length delimited.
                 * @function decodeDelimited
                 * @memberof market.v2.trade.MarketTickerList
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @returns {market.v2.trade.MarketTickerList} MarketTickerList
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                MarketTickerList.decodeDelimited = function decodeDelimited(reader) {
                    if (!(reader instanceof $Reader))
                        reader = new $Reader(reader);
                    return this.decode(reader, reader.uint32());
                };

                /**
                 * Verifies a MarketTickerList message.
                 * @function verify
                 * @memberof market.v2.trade.MarketTickerList
                 * @static
                 * @param {Object.<string,*>} message Plain object to verify
                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
                 */
                MarketTickerList.verify = function verify(message) {
                    if (typeof message !== "object" || message === null)
                        return "object expected";
                    return null;
                };

                /**
                 * Creates a MarketTickerList message from a plain object. Also converts values to their respective internal types.
                 * @function fromObject
                 * @memberof market.v2.trade.MarketTickerList
                 * @static
                 * @param {Object.<string,*>} object Plain object
                 * @returns {market.v2.trade.MarketTickerList} MarketTickerList
                 */
                MarketTickerList.fromObject = function fromObject(object) {
                    if (object instanceof $root.market.v2.trade.MarketTickerList)
                        return object;
                    return new $root.market.v2.trade.MarketTickerList();
                };

                /**
                 * Creates a plain object from a MarketTickerList message. Also converts values to other types if specified.
                 * @function toObject
                 * @memberof market.v2.trade.MarketTickerList
                 * @static
                 * @param {market.v2.trade.MarketTickerList} message MarketTickerList
                 * @param {$protobuf.IConversionOptions} [options] Conversion options
                 * @returns {Object.<string,*>} Plain object
                 */
                MarketTickerList.toObject = function toObject() {
                    return {};
                };

                /**
                 * Converts this MarketTickerList to JSON.
                 * @function toJSON
                 * @memberof market.v2.trade.MarketTickerList
                 * @instance
                 * @returns {Object.<string,*>} JSON object
                 */
                MarketTickerList.prototype.toJSON = function toJSON() {
                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
                };

                /**
                 * Gets the default type url for MarketTickerList
                 * @function getTypeUrl
                 * @memberof market.v2.trade.MarketTickerList
                 * @static
                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns {string} The default type url
                 */
                MarketTickerList.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
                    if (typeUrlPrefix === undefined) {
                        typeUrlPrefix = "type.googleapis.com";
                    }
                    return typeUrlPrefix + "/market.v2.trade.MarketTickerList";
                };

                return MarketTickerList;
            })();

            trade.MarketMonit = (function() {

                /**
                 * Properties of a MarketMonit.
                 * @memberof market.v2.trade
                 * @interface IMarketMonit
                 * @property {number|Long|null} [id] MarketMonit id
                 * @property {string|null} [indexkey] MarketMonit indexkey
                 * @property {number|null} [scope] MarketMonit scope
                 * @property {number|null} [tradeid] MarketMonit tradeid
                 * @property {string|null} [tradecode] MarketMonit tradecode
                 * @property {string|null} [indexbase] MarketMonit indexbase
                 * @property {string|null} [quote] MarketMonit quote
                 * @property {string|null} [lever] MarketMonit lever
                 * @property {string|null} [chg] MarketMonit chg
                 * @property {string|null} [last] MarketMonit last
                 * @property {string|null} [cny] MarketMonit cny
                 * @property {string|null} [createtime] MarketMonit createtime
                 * @property {string|null} [biztype] MarketMonit biztype
                 * @property {string|null} [contracttype] MarketMonit contracttype
                 * @property {number|Long|null} [liquidationdate] MarketMonit liquidationdate
                 * @property {number|Long|null} [movetime] MarketMonit movetime
                 */

                /**
                 * Constructs a new MarketMonit.
                 * @memberof market.v2.trade
                 * @classdesc Represents a MarketMonit.
                 * @implements IMarketMonit
                 * @constructor
                 * @param {market.v2.trade.IMarketMonit=} [properties] Properties to set
                 */
                function MarketMonit(properties) {
                    if (properties)
                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                            if (properties[keys[i]] != null)
                                this[keys[i]] = properties[keys[i]];
                }

                /**
                 * MarketMonit id.
                 * @member {number|Long} id
                 * @memberof market.v2.trade.MarketMonit
                 * @instance
                 */
                MarketMonit.prototype.id = $util.Long ? $util.Long.fromBits(0,0,false) : 0;

                /**
                 * MarketMonit indexkey.
                 * @member {string} indexkey
                 * @memberof market.v2.trade.MarketMonit
                 * @instance
                 */
                MarketMonit.prototype.indexkey = "";

                /**
                 * MarketMonit scope.
                 * @member {number} scope
                 * @memberof market.v2.trade.MarketMonit
                 * @instance
                 */
                MarketMonit.prototype.scope = 0;

                /**
                 * MarketMonit tradeid.
                 * @member {number} tradeid
                 * @memberof market.v2.trade.MarketMonit
                 * @instance
                 */
                MarketMonit.prototype.tradeid = 0;

                /**
                 * MarketMonit tradecode.
                 * @member {string} tradecode
                 * @memberof market.v2.trade.MarketMonit
                 * @instance
                 */
                MarketMonit.prototype.tradecode = "";

                /**
                 * MarketMonit indexbase.
                 * @member {string} indexbase
                 * @memberof market.v2.trade.MarketMonit
                 * @instance
                 */
                MarketMonit.prototype.indexbase = "";

                /**
                 * MarketMonit quote.
                 * @member {string} quote
                 * @memberof market.v2.trade.MarketMonit
                 * @instance
                 */
                MarketMonit.prototype.quote = "";

                /**
                 * MarketMonit lever.
                 * @member {string} lever
                 * @memberof market.v2.trade.MarketMonit
                 * @instance
                 */
                MarketMonit.prototype.lever = "";

                /**
                 * MarketMonit chg.
                 * @member {string} chg
                 * @memberof market.v2.trade.MarketMonit
                 * @instance
                 */
                MarketMonit.prototype.chg = "";

                /**
                 * MarketMonit last.
                 * @member {string} last
                 * @memberof market.v2.trade.MarketMonit
                 * @instance
                 */
                MarketMonit.prototype.last = "";

                /**
                 * MarketMonit cny.
                 * @member {string} cny
                 * @memberof market.v2.trade.MarketMonit
                 * @instance
                 */
                MarketMonit.prototype.cny = "";

                /**
                 * MarketMonit createtime.
                 * @member {string} createtime
                 * @memberof market.v2.trade.MarketMonit
                 * @instance
                 */
                MarketMonit.prototype.createtime = "";

                /**
                 * MarketMonit biztype.
                 * @member {string} biztype
                 * @memberof market.v2.trade.MarketMonit
                 * @instance
                 */
                MarketMonit.prototype.biztype = "";

                /**
                 * MarketMonit contracttype.
                 * @member {string} contracttype
                 * @memberof market.v2.trade.MarketMonit
                 * @instance
                 */
                MarketMonit.prototype.contracttype = "";

                /**
                 * MarketMonit liquidationdate.
                 * @member {number|Long} liquidationdate
                 * @memberof market.v2.trade.MarketMonit
                 * @instance
                 */
                MarketMonit.prototype.liquidationdate = $util.Long ? $util.Long.fromBits(0,0,false) : 0;

                /**
                 * MarketMonit movetime.
                 * @member {number|Long} movetime
                 * @memberof market.v2.trade.MarketMonit
                 * @instance
                 */
                MarketMonit.prototype.movetime = $util.Long ? $util.Long.fromBits(0,0,false) : 0;

                /**
                 * Creates a new MarketMonit instance using the specified properties.
                 * @function create
                 * @memberof market.v2.trade.MarketMonit
                 * @static
                 * @param {market.v2.trade.IMarketMonit=} [properties] Properties to set
                 * @returns {market.v2.trade.MarketMonit} MarketMonit instance
                 */
                MarketMonit.create = function create(properties) {
                    return new MarketMonit(properties);
                };

                /**
                 * Encodes the specified MarketMonit message. Does not implicitly {@link market.v2.trade.MarketMonit.verify|verify} messages.
                 * @function encode
                 * @memberof market.v2.trade.MarketMonit
                 * @static
                 * @param {market.v2.trade.IMarketMonit} message MarketMonit message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                MarketMonit.encode = function encode(message, writer) {
                    if (!writer)
                        writer = $Writer.create();
                    if (message.id != null && Object.hasOwnProperty.call(message, "id"))
                        writer.uint32(/* id 1, wireType 0 =*/8).int64(message.id);
                    if (message.indexkey != null && Object.hasOwnProperty.call(message, "indexkey"))
                        writer.uint32(/* id 2, wireType 2 =*/18).string(message.indexkey);
                    if (message.scope != null && Object.hasOwnProperty.call(message, "scope"))
                        writer.uint32(/* id 3, wireType 0 =*/24).int32(message.scope);
                    if (message.tradeid != null && Object.hasOwnProperty.call(message, "tradeid"))
                        writer.uint32(/* id 4, wireType 0 =*/32).int32(message.tradeid);
                    if (message.tradecode != null && Object.hasOwnProperty.call(message, "tradecode"))
                        writer.uint32(/* id 5, wireType 2 =*/42).string(message.tradecode);
                    if (message.indexbase != null && Object.hasOwnProperty.call(message, "indexbase"))
                        writer.uint32(/* id 6, wireType 2 =*/50).string(message.indexbase);
                    if (message.quote != null && Object.hasOwnProperty.call(message, "quote"))
                        writer.uint32(/* id 7, wireType 2 =*/58).string(message.quote);
                    if (message.lever != null && Object.hasOwnProperty.call(message, "lever"))
                        writer.uint32(/* id 8, wireType 2 =*/66).string(message.lever);
                    if (message.chg != null && Object.hasOwnProperty.call(message, "chg"))
                        writer.uint32(/* id 9, wireType 2 =*/74).string(message.chg);
                    if (message.last != null && Object.hasOwnProperty.call(message, "last"))
                        writer.uint32(/* id 10, wireType 2 =*/82).string(message.last);
                    if (message.cny != null && Object.hasOwnProperty.call(message, "cny"))
                        writer.uint32(/* id 11, wireType 2 =*/90).string(message.cny);
                    if (message.createtime != null && Object.hasOwnProperty.call(message, "createtime"))
                        writer.uint32(/* id 12, wireType 2 =*/98).string(message.createtime);
                    if (message.biztype != null && Object.hasOwnProperty.call(message, "biztype"))
                        writer.uint32(/* id 13, wireType 2 =*/106).string(message.biztype);
                    if (message.contracttype != null && Object.hasOwnProperty.call(message, "contracttype"))
                        writer.uint32(/* id 14, wireType 2 =*/114).string(message.contracttype);
                    if (message.liquidationdate != null && Object.hasOwnProperty.call(message, "liquidationdate"))
                        writer.uint32(/* id 15, wireType 0 =*/120).int64(message.liquidationdate);
                    if (message.movetime != null && Object.hasOwnProperty.call(message, "movetime"))
                        writer.uint32(/* id 16, wireType 0 =*/128).int64(message.movetime);
                    return writer;
                };

                /**
                 * Encodes the specified MarketMonit message, length delimited. Does not implicitly {@link market.v2.trade.MarketMonit.verify|verify} messages.
                 * @function encodeDelimited
                 * @memberof market.v2.trade.MarketMonit
                 * @static
                 * @param {market.v2.trade.IMarketMonit} message MarketMonit message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                MarketMonit.encodeDelimited = function encodeDelimited(message, writer) {
                    return this.encode(message, writer).ldelim();
                };

                /**
                 * Decodes a MarketMonit message from the specified reader or buffer.
                 * @function decode
                 * @memberof market.v2.trade.MarketMonit
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @param {number} [length] Message length if known beforehand
                 * @returns {market.v2.trade.MarketMonit} MarketMonit
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                MarketMonit.decode = function decode(reader, length) {
                    if (!(reader instanceof $Reader))
                        reader = $Reader.create(reader);
                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.market.v2.trade.MarketMonit();
                    while (reader.pos < end) {
                        var tag = reader.uint32();
                        switch (tag >>> 3) {
                        case 1: {
                                message.id = reader.int64();
                                break;
                            }
                        case 2: {
                                message.indexkey = reader.string();
                                break;
                            }
                        case 3: {
                                message.scope = reader.int32();
                                break;
                            }
                        case 4: {
                                message.tradeid = reader.int32();
                                break;
                            }
                        case 5: {
                                message.tradecode = reader.string();
                                break;
                            }
                        case 6: {
                                message.indexbase = reader.string();
                                break;
                            }
                        case 7: {
                                message.quote = reader.string();
                                break;
                            }
                        case 8: {
                                message.lever = reader.string();
                                break;
                            }
                        case 9: {
                                message.chg = reader.string();
                                break;
                            }
                        case 10: {
                                message.last = reader.string();
                                break;
                            }
                        case 11: {
                                message.cny = reader.string();
                                break;
                            }
                        case 12: {
                                message.createtime = reader.string();
                                break;
                            }
                        case 13: {
                                message.biztype = reader.string();
                                break;
                            }
                        case 14: {
                                message.contracttype = reader.string();
                                break;
                            }
                        case 15: {
                                message.liquidationdate = reader.int64();
                                break;
                            }
                        case 16: {
                                message.movetime = reader.int64();
                                break;
                            }
                        default:
                            reader.skipType(tag & 7);
                            break;
                        }
                    }
                    return message;
                };

                /**
                 * Decodes a MarketMonit message from the specified reader or buffer, length delimited.
                 * @function decodeDelimited
                 * @memberof market.v2.trade.MarketMonit
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @returns {market.v2.trade.MarketMonit} MarketMonit
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                MarketMonit.decodeDelimited = function decodeDelimited(reader) {
                    if (!(reader instanceof $Reader))
                        reader = new $Reader(reader);
                    return this.decode(reader, reader.uint32());
                };

                /**
                 * Verifies a MarketMonit message.
                 * @function verify
                 * @memberof market.v2.trade.MarketMonit
                 * @static
                 * @param {Object.<string,*>} message Plain object to verify
                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
                 */
                MarketMonit.verify = function verify(message) {
                    if (typeof message !== "object" || message === null)
                        return "object expected";
                    if (message.id != null && message.hasOwnProperty("id"))
                        if (!$util.isInteger(message.id) && !(message.id && $util.isInteger(message.id.low) && $util.isInteger(message.id.high)))
                            return "id: integer|Long expected";
                    if (message.indexkey != null && message.hasOwnProperty("indexkey"))
                        if (!$util.isString(message.indexkey))
                            return "indexkey: string expected";
                    if (message.scope != null && message.hasOwnProperty("scope"))
                        if (!$util.isInteger(message.scope))
                            return "scope: integer expected";
                    if (message.tradeid != null && message.hasOwnProperty("tradeid"))
                        if (!$util.isInteger(message.tradeid))
                            return "tradeid: integer expected";
                    if (message.tradecode != null && message.hasOwnProperty("tradecode"))
                        if (!$util.isString(message.tradecode))
                            return "tradecode: string expected";
                    if (message.indexbase != null && message.hasOwnProperty("indexbase"))
                        if (!$util.isString(message.indexbase))
                            return "indexbase: string expected";
                    if (message.quote != null && message.hasOwnProperty("quote"))
                        if (!$util.isString(message.quote))
                            return "quote: string expected";
                    if (message.lever != null && message.hasOwnProperty("lever"))
                        if (!$util.isString(message.lever))
                            return "lever: string expected";
                    if (message.chg != null && message.hasOwnProperty("chg"))
                        if (!$util.isString(message.chg))
                            return "chg: string expected";
                    if (message.last != null && message.hasOwnProperty("last"))
                        if (!$util.isString(message.last))
                            return "last: string expected";
                    if (message.cny != null && message.hasOwnProperty("cny"))
                        if (!$util.isString(message.cny))
                            return "cny: string expected";
                    if (message.createtime != null && message.hasOwnProperty("createtime"))
                        if (!$util.isString(message.createtime))
                            return "createtime: string expected";
                    if (message.biztype != null && message.hasOwnProperty("biztype"))
                        if (!$util.isString(message.biztype))
                            return "biztype: string expected";
                    if (message.contracttype != null && message.hasOwnProperty("contracttype"))
                        if (!$util.isString(message.contracttype))
                            return "contracttype: string expected";
                    if (message.liquidationdate != null && message.hasOwnProperty("liquidationdate"))
                        if (!$util.isInteger(message.liquidationdate) && !(message.liquidationdate && $util.isInteger(message.liquidationdate.low) && $util.isInteger(message.liquidationdate.high)))
                            return "liquidationdate: integer|Long expected";
                    if (message.movetime != null && message.hasOwnProperty("movetime"))
                        if (!$util.isInteger(message.movetime) && !(message.movetime && $util.isInteger(message.movetime.low) && $util.isInteger(message.movetime.high)))
                            return "movetime: integer|Long expected";
                    return null;
                };

                /**
                 * Creates a MarketMonit message from a plain object. Also converts values to their respective internal types.
                 * @function fromObject
                 * @memberof market.v2.trade.MarketMonit
                 * @static
                 * @param {Object.<string,*>} object Plain object
                 * @returns {market.v2.trade.MarketMonit} MarketMonit
                 */
                MarketMonit.fromObject = function fromObject(object) {
                    if (object instanceof $root.market.v2.trade.MarketMonit)
                        return object;
                    var message = new $root.market.v2.trade.MarketMonit();
                    if (object.id != null)
                        if ($util.Long)
                            (message.id = $util.Long.fromValue(object.id)).unsigned = false;
                        else if (typeof object.id === "string")
                            message.id = parseInt(object.id, 10);
                        else if (typeof object.id === "number")
                            message.id = object.id;
                        else if (typeof object.id === "object")
                            message.id = new $util.LongBits(object.id.low >>> 0, object.id.high >>> 0).toNumber();
                    if (object.indexkey != null)
                        message.indexkey = String(object.indexkey);
                    if (object.scope != null)
                        message.scope = object.scope | 0;
                    if (object.tradeid != null)
                        message.tradeid = object.tradeid | 0;
                    if (object.tradecode != null)
                        message.tradecode = String(object.tradecode);
                    if (object.indexbase != null)
                        message.indexbase = String(object.indexbase);
                    if (object.quote != null)
                        message.quote = String(object.quote);
                    if (object.lever != null)
                        message.lever = String(object.lever);
                    if (object.chg != null)
                        message.chg = String(object.chg);
                    if (object.last != null)
                        message.last = String(object.last);
                    if (object.cny != null)
                        message.cny = String(object.cny);
                    if (object.createtime != null)
                        message.createtime = String(object.createtime);
                    if (object.biztype != null)
                        message.biztype = String(object.biztype);
                    if (object.contracttype != null)
                        message.contracttype = String(object.contracttype);
                    if (object.liquidationdate != null)
                        if ($util.Long)
                            (message.liquidationdate = $util.Long.fromValue(object.liquidationdate)).unsigned = false;
                        else if (typeof object.liquidationdate === "string")
                            message.liquidationdate = parseInt(object.liquidationdate, 10);
                        else if (typeof object.liquidationdate === "number")
                            message.liquidationdate = object.liquidationdate;
                        else if (typeof object.liquidationdate === "object")
                            message.liquidationdate = new $util.LongBits(object.liquidationdate.low >>> 0, object.liquidationdate.high >>> 0).toNumber();
                    if (object.movetime != null)
                        if ($util.Long)
                            (message.movetime = $util.Long.fromValue(object.movetime)).unsigned = false;
                        else if (typeof object.movetime === "string")
                            message.movetime = parseInt(object.movetime, 10);
                        else if (typeof object.movetime === "number")
                            message.movetime = object.movetime;
                        else if (typeof object.movetime === "object")
                            message.movetime = new $util.LongBits(object.movetime.low >>> 0, object.movetime.high >>> 0).toNumber();
                    return message;
                };

                /**
                 * Creates a plain object from a MarketMonit message. Also converts values to other types if specified.
                 * @function toObject
                 * @memberof market.v2.trade.MarketMonit
                 * @static
                 * @param {market.v2.trade.MarketMonit} message MarketMonit
                 * @param {$protobuf.IConversionOptions} [options] Conversion options
                 * @returns {Object.<string,*>} Plain object
                 */
                MarketMonit.toObject = function toObject(message, options) {
                    if (!options)
                        options = {};
                    var object = {};
                    if (options.defaults) {
                        if ($util.Long) {
                            var long = new $util.Long(0, 0, false);
                            object.id = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
                        } else
                            object.id = options.longs === String ? "0" : 0;
                        object.indexkey = "";
                        object.scope = 0;
                        object.tradeid = 0;
                        object.tradecode = "";
                        object.indexbase = "";
                        object.quote = "";
                        object.lever = "";
                        object.chg = "";
                        object.last = "";
                        object.cny = "";
                        object.createtime = "";
                        object.biztype = "";
                        object.contracttype = "";
                        if ($util.Long) {
                            var long = new $util.Long(0, 0, false);
                            object.liquidationdate = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
                        } else
                            object.liquidationdate = options.longs === String ? "0" : 0;
                        if ($util.Long) {
                            var long = new $util.Long(0, 0, false);
                            object.movetime = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
                        } else
                            object.movetime = options.longs === String ? "0" : 0;
                    }
                    if (message.id != null && message.hasOwnProperty("id"))
                        if (typeof message.id === "number")
                            object.id = options.longs === String ? String(message.id) : message.id;
                        else
                            object.id = options.longs === String ? $util.Long.prototype.toString.call(message.id) : options.longs === Number ? new $util.LongBits(message.id.low >>> 0, message.id.high >>> 0).toNumber() : message.id;
                    if (message.indexkey != null && message.hasOwnProperty("indexkey"))
                        object.indexkey = message.indexkey;
                    if (message.scope != null && message.hasOwnProperty("scope"))
                        object.scope = message.scope;
                    if (message.tradeid != null && message.hasOwnProperty("tradeid"))
                        object.tradeid = message.tradeid;
                    if (message.tradecode != null && message.hasOwnProperty("tradecode"))
                        object.tradecode = message.tradecode;
                    if (message.indexbase != null && message.hasOwnProperty("indexbase"))
                        object.indexbase = message.indexbase;
                    if (message.quote != null && message.hasOwnProperty("quote"))
                        object.quote = message.quote;
                    if (message.lever != null && message.hasOwnProperty("lever"))
                        object.lever = message.lever;
                    if (message.chg != null && message.hasOwnProperty("chg"))
                        object.chg = message.chg;
                    if (message.last != null && message.hasOwnProperty("last"))
                        object.last = message.last;
                    if (message.cny != null && message.hasOwnProperty("cny"))
                        object.cny = message.cny;
                    if (message.createtime != null && message.hasOwnProperty("createtime"))
                        object.createtime = message.createtime;
                    if (message.biztype != null && message.hasOwnProperty("biztype"))
                        object.biztype = message.biztype;
                    if (message.contracttype != null && message.hasOwnProperty("contracttype"))
                        object.contracttype = message.contracttype;
                    if (message.liquidationdate != null && message.hasOwnProperty("liquidationdate"))
                        if (typeof message.liquidationdate === "number")
                            object.liquidationdate = options.longs === String ? String(message.liquidationdate) : message.liquidationdate;
                        else
                            object.liquidationdate = options.longs === String ? $util.Long.prototype.toString.call(message.liquidationdate) : options.longs === Number ? new $util.LongBits(message.liquidationdate.low >>> 0, message.liquidationdate.high >>> 0).toNumber() : message.liquidationdate;
                    if (message.movetime != null && message.hasOwnProperty("movetime"))
                        if (typeof message.movetime === "number")
                            object.movetime = options.longs === String ? String(message.movetime) : message.movetime;
                        else
                            object.movetime = options.longs === String ? $util.Long.prototype.toString.call(message.movetime) : options.longs === Number ? new $util.LongBits(message.movetime.low >>> 0, message.movetime.high >>> 0).toNumber() : message.movetime;
                    return object;
                };

                /**
                 * Converts this MarketMonit to JSON.
                 * @function toJSON
                 * @memberof market.v2.trade.MarketMonit
                 * @instance
                 * @returns {Object.<string,*>} JSON object
                 */
                MarketMonit.prototype.toJSON = function toJSON() {
                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
                };

                /**
                 * Gets the default type url for MarketMonit
                 * @function getTypeUrl
                 * @memberof market.v2.trade.MarketMonit
                 * @static
                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns {string} The default type url
                 */
                MarketMonit.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
                    if (typeUrlPrefix === undefined) {
                        typeUrlPrefix = "type.googleapis.com";
                    }
                    return typeUrlPrefix + "/market.v2.trade.MarketMonit";
                };

                return MarketMonit;
            })();

            trade.MarginCrossAssetVO = (function() {

                /**
                 * Properties of a MarginCrossAssetVO.
                 * @memberof market.v2.trade
                 * @interface IMarginCrossAssetVO
                 */

                /**
                 * Constructs a new MarginCrossAssetVO.
                 * @memberof market.v2.trade
                 * @classdesc Represents a MarginCrossAssetVO.
                 * @implements IMarginCrossAssetVO
                 * @constructor
                 * @param {market.v2.trade.IMarginCrossAssetVO=} [properties] Properties to set
                 */
                function MarginCrossAssetVO(properties) {
                    if (properties)
                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                            if (properties[keys[i]] != null)
                                this[keys[i]] = properties[keys[i]];
                }

                /**
                 * Creates a new MarginCrossAssetVO instance using the specified properties.
                 * @function create
                 * @memberof market.v2.trade.MarginCrossAssetVO
                 * @static
                 * @param {market.v2.trade.IMarginCrossAssetVO=} [properties] Properties to set
                 * @returns {market.v2.trade.MarginCrossAssetVO} MarginCrossAssetVO instance
                 */
                MarginCrossAssetVO.create = function create(properties) {
                    return new MarginCrossAssetVO(properties);
                };

                /**
                 * Encodes the specified MarginCrossAssetVO message. Does not implicitly {@link market.v2.trade.MarginCrossAssetVO.verify|verify} messages.
                 * @function encode
                 * @memberof market.v2.trade.MarginCrossAssetVO
                 * @static
                 * @param {market.v2.trade.IMarginCrossAssetVO} message MarginCrossAssetVO message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                MarginCrossAssetVO.encode = function encode(message, writer) {
                    if (!writer)
                        writer = $Writer.create();
                    return writer;
                };

                /**
                 * Encodes the specified MarginCrossAssetVO message, length delimited. Does not implicitly {@link market.v2.trade.MarginCrossAssetVO.verify|verify} messages.
                 * @function encodeDelimited
                 * @memberof market.v2.trade.MarginCrossAssetVO
                 * @static
                 * @param {market.v2.trade.IMarginCrossAssetVO} message MarginCrossAssetVO message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                MarginCrossAssetVO.encodeDelimited = function encodeDelimited(message, writer) {
                    return this.encode(message, writer).ldelim();
                };

                /**
                 * Decodes a MarginCrossAssetVO message from the specified reader or buffer.
                 * @function decode
                 * @memberof market.v2.trade.MarginCrossAssetVO
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @param {number} [length] Message length if known beforehand
                 * @returns {market.v2.trade.MarginCrossAssetVO} MarginCrossAssetVO
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                MarginCrossAssetVO.decode = function decode(reader, length) {
                    if (!(reader instanceof $Reader))
                        reader = $Reader.create(reader);
                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.market.v2.trade.MarginCrossAssetVO();
                    while (reader.pos < end) {
                        var tag = reader.uint32();
                        switch (tag >>> 3) {
                        default:
                            reader.skipType(tag & 7);
                            break;
                        }
                    }
                    return message;
                };

                /**
                 * Decodes a MarginCrossAssetVO message from the specified reader or buffer, length delimited.
                 * @function decodeDelimited
                 * @memberof market.v2.trade.MarginCrossAssetVO
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @returns {market.v2.trade.MarginCrossAssetVO} MarginCrossAssetVO
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                MarginCrossAssetVO.decodeDelimited = function decodeDelimited(reader) {
                    if (!(reader instanceof $Reader))
                        reader = new $Reader(reader);
                    return this.decode(reader, reader.uint32());
                };

                /**
                 * Verifies a MarginCrossAssetVO message.
                 * @function verify
                 * @memberof market.v2.trade.MarginCrossAssetVO
                 * @static
                 * @param {Object.<string,*>} message Plain object to verify
                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
                 */
                MarginCrossAssetVO.verify = function verify(message) {
                    if (typeof message !== "object" || message === null)
                        return "object expected";
                    return null;
                };

                /**
                 * Creates a MarginCrossAssetVO message from a plain object. Also converts values to their respective internal types.
                 * @function fromObject
                 * @memberof market.v2.trade.MarginCrossAssetVO
                 * @static
                 * @param {Object.<string,*>} object Plain object
                 * @returns {market.v2.trade.MarginCrossAssetVO} MarginCrossAssetVO
                 */
                MarginCrossAssetVO.fromObject = function fromObject(object) {
                    if (object instanceof $root.market.v2.trade.MarginCrossAssetVO)
                        return object;
                    return new $root.market.v2.trade.MarginCrossAssetVO();
                };

                /**
                 * Creates a plain object from a MarginCrossAssetVO message. Also converts values to other types if specified.
                 * @function toObject
                 * @memberof market.v2.trade.MarginCrossAssetVO
                 * @static
                 * @param {market.v2.trade.MarginCrossAssetVO} message MarginCrossAssetVO
                 * @param {$protobuf.IConversionOptions} [options] Conversion options
                 * @returns {Object.<string,*>} Plain object
                 */
                MarginCrossAssetVO.toObject = function toObject() {
                    return {};
                };

                /**
                 * Converts this MarginCrossAssetVO to JSON.
                 * @function toJSON
                 * @memberof market.v2.trade.MarginCrossAssetVO
                 * @instance
                 * @returns {Object.<string,*>} JSON object
                 */
                MarginCrossAssetVO.prototype.toJSON = function toJSON() {
                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
                };

                /**
                 * Gets the default type url for MarginCrossAssetVO
                 * @function getTypeUrl
                 * @memberof market.v2.trade.MarginCrossAssetVO
                 * @static
                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns {string} The default type url
                 */
                MarginCrossAssetVO.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
                    if (typeUrlPrefix === undefined) {
                        typeUrlPrefix = "type.googleapis.com";
                    }
                    return typeUrlPrefix + "/market.v2.trade.MarginCrossAssetVO";
                };

                return MarginCrossAssetVO;
            })();

            trade.MarginIsolatedAssetVO = (function() {

                /**
                 * Properties of a MarginIsolatedAssetVO.
                 * @memberof market.v2.trade
                 * @interface IMarginIsolatedAssetVO
                 */

                /**
                 * Constructs a new MarginIsolatedAssetVO.
                 * @memberof market.v2.trade
                 * @classdesc Represents a MarginIsolatedAssetVO.
                 * @implements IMarginIsolatedAssetVO
                 * @constructor
                 * @param {market.v2.trade.IMarginIsolatedAssetVO=} [properties] Properties to set
                 */
                function MarginIsolatedAssetVO(properties) {
                    if (properties)
                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                            if (properties[keys[i]] != null)
                                this[keys[i]] = properties[keys[i]];
                }

                /**
                 * Creates a new MarginIsolatedAssetVO instance using the specified properties.
                 * @function create
                 * @memberof market.v2.trade.MarginIsolatedAssetVO
                 * @static
                 * @param {market.v2.trade.IMarginIsolatedAssetVO=} [properties] Properties to set
                 * @returns {market.v2.trade.MarginIsolatedAssetVO} MarginIsolatedAssetVO instance
                 */
                MarginIsolatedAssetVO.create = function create(properties) {
                    return new MarginIsolatedAssetVO(properties);
                };

                /**
                 * Encodes the specified MarginIsolatedAssetVO message. Does not implicitly {@link market.v2.trade.MarginIsolatedAssetVO.verify|verify} messages.
                 * @function encode
                 * @memberof market.v2.trade.MarginIsolatedAssetVO
                 * @static
                 * @param {market.v2.trade.IMarginIsolatedAssetVO} message MarginIsolatedAssetVO message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                MarginIsolatedAssetVO.encode = function encode(message, writer) {
                    if (!writer)
                        writer = $Writer.create();
                    return writer;
                };

                /**
                 * Encodes the specified MarginIsolatedAssetVO message, length delimited. Does not implicitly {@link market.v2.trade.MarginIsolatedAssetVO.verify|verify} messages.
                 * @function encodeDelimited
                 * @memberof market.v2.trade.MarginIsolatedAssetVO
                 * @static
                 * @param {market.v2.trade.IMarginIsolatedAssetVO} message MarginIsolatedAssetVO message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                MarginIsolatedAssetVO.encodeDelimited = function encodeDelimited(message, writer) {
                    return this.encode(message, writer).ldelim();
                };

                /**
                 * Decodes a MarginIsolatedAssetVO message from the specified reader or buffer.
                 * @function decode
                 * @memberof market.v2.trade.MarginIsolatedAssetVO
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @param {number} [length] Message length if known beforehand
                 * @returns {market.v2.trade.MarginIsolatedAssetVO} MarginIsolatedAssetVO
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                MarginIsolatedAssetVO.decode = function decode(reader, length) {
                    if (!(reader instanceof $Reader))
                        reader = $Reader.create(reader);
                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.market.v2.trade.MarginIsolatedAssetVO();
                    while (reader.pos < end) {
                        var tag = reader.uint32();
                        switch (tag >>> 3) {
                        default:
                            reader.skipType(tag & 7);
                            break;
                        }
                    }
                    return message;
                };

                /**
                 * Decodes a MarginIsolatedAssetVO message from the specified reader or buffer, length delimited.
                 * @function decodeDelimited
                 * @memberof market.v2.trade.MarginIsolatedAssetVO
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @returns {market.v2.trade.MarginIsolatedAssetVO} MarginIsolatedAssetVO
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                MarginIsolatedAssetVO.decodeDelimited = function decodeDelimited(reader) {
                    if (!(reader instanceof $Reader))
                        reader = new $Reader(reader);
                    return this.decode(reader, reader.uint32());
                };

                /**
                 * Verifies a MarginIsolatedAssetVO message.
                 * @function verify
                 * @memberof market.v2.trade.MarginIsolatedAssetVO
                 * @static
                 * @param {Object.<string,*>} message Plain object to verify
                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
                 */
                MarginIsolatedAssetVO.verify = function verify(message) {
                    if (typeof message !== "object" || message === null)
                        return "object expected";
                    return null;
                };

                /**
                 * Creates a MarginIsolatedAssetVO message from a plain object. Also converts values to their respective internal types.
                 * @function fromObject
                 * @memberof market.v2.trade.MarginIsolatedAssetVO
                 * @static
                 * @param {Object.<string,*>} object Plain object
                 * @returns {market.v2.trade.MarginIsolatedAssetVO} MarginIsolatedAssetVO
                 */
                MarginIsolatedAssetVO.fromObject = function fromObject(object) {
                    if (object instanceof $root.market.v2.trade.MarginIsolatedAssetVO)
                        return object;
                    return new $root.market.v2.trade.MarginIsolatedAssetVO();
                };

                /**
                 * Creates a plain object from a MarginIsolatedAssetVO message. Also converts values to other types if specified.
                 * @function toObject
                 * @memberof market.v2.trade.MarginIsolatedAssetVO
                 * @static
                 * @param {market.v2.trade.MarginIsolatedAssetVO} message MarginIsolatedAssetVO
                 * @param {$protobuf.IConversionOptions} [options] Conversion options
                 * @returns {Object.<string,*>} Plain object
                 */
                MarginIsolatedAssetVO.toObject = function toObject() {
                    return {};
                };

                /**
                 * Converts this MarginIsolatedAssetVO to JSON.
                 * @function toJSON
                 * @memberof market.v2.trade.MarginIsolatedAssetVO
                 * @instance
                 * @returns {Object.<string,*>} JSON object
                 */
                MarginIsolatedAssetVO.prototype.toJSON = function toJSON() {
                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
                };

                /**
                 * Gets the default type url for MarginIsolatedAssetVO
                 * @function getTypeUrl
                 * @memberof market.v2.trade.MarginIsolatedAssetVO
                 * @static
                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns {string} The default type url
                 */
                MarginIsolatedAssetVO.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
                    if (typeUrlPrefix === undefined) {
                        typeUrlPrefix = "type.googleapis.com";
                    }
                    return typeUrlPrefix + "/market.v2.trade.MarginIsolatedAssetVO";
                };

                return MarginIsolatedAssetVO;
            })();

            trade.NewListingPair = (function() {

                /**
                 * Properties of a NewListingPair.
                 * @memberof market.v2.trade
                 * @interface INewListingPair
                 */

                /**
                 * Constructs a new NewListingPair.
                 * @memberof market.v2.trade
                 * @classdesc Represents a NewListingPair.
                 * @implements INewListingPair
                 * @constructor
                 * @param {market.v2.trade.INewListingPair=} [properties] Properties to set
                 */
                function NewListingPair(properties) {
                    if (properties)
                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                            if (properties[keys[i]] != null)
                                this[keys[i]] = properties[keys[i]];
                }

                /**
                 * Creates a new NewListingPair instance using the specified properties.
                 * @function create
                 * @memberof market.v2.trade.NewListingPair
                 * @static
                 * @param {market.v2.trade.INewListingPair=} [properties] Properties to set
                 * @returns {market.v2.trade.NewListingPair} NewListingPair instance
                 */
                NewListingPair.create = function create(properties) {
                    return new NewListingPair(properties);
                };

                /**
                 * Encodes the specified NewListingPair message. Does not implicitly {@link market.v2.trade.NewListingPair.verify|verify} messages.
                 * @function encode
                 * @memberof market.v2.trade.NewListingPair
                 * @static
                 * @param {market.v2.trade.INewListingPair} message NewListingPair message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                NewListingPair.encode = function encode(message, writer) {
                    if (!writer)
                        writer = $Writer.create();
                    return writer;
                };

                /**
                 * Encodes the specified NewListingPair message, length delimited. Does not implicitly {@link market.v2.trade.NewListingPair.verify|verify} messages.
                 * @function encodeDelimited
                 * @memberof market.v2.trade.NewListingPair
                 * @static
                 * @param {market.v2.trade.INewListingPair} message NewListingPair message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                NewListingPair.encodeDelimited = function encodeDelimited(message, writer) {
                    return this.encode(message, writer).ldelim();
                };

                /**
                 * Decodes a NewListingPair message from the specified reader or buffer.
                 * @function decode
                 * @memberof market.v2.trade.NewListingPair
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @param {number} [length] Message length if known beforehand
                 * @returns {market.v2.trade.NewListingPair} NewListingPair
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                NewListingPair.decode = function decode(reader, length) {
                    if (!(reader instanceof $Reader))
                        reader = $Reader.create(reader);
                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.market.v2.trade.NewListingPair();
                    while (reader.pos < end) {
                        var tag = reader.uint32();
                        switch (tag >>> 3) {
                        default:
                            reader.skipType(tag & 7);
                            break;
                        }
                    }
                    return message;
                };

                /**
                 * Decodes a NewListingPair message from the specified reader or buffer, length delimited.
                 * @function decodeDelimited
                 * @memberof market.v2.trade.NewListingPair
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @returns {market.v2.trade.NewListingPair} NewListingPair
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                NewListingPair.decodeDelimited = function decodeDelimited(reader) {
                    if (!(reader instanceof $Reader))
                        reader = new $Reader(reader);
                    return this.decode(reader, reader.uint32());
                };

                /**
                 * Verifies a NewListingPair message.
                 * @function verify
                 * @memberof market.v2.trade.NewListingPair
                 * @static
                 * @param {Object.<string,*>} message Plain object to verify
                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
                 */
                NewListingPair.verify = function verify(message) {
                    if (typeof message !== "object" || message === null)
                        return "object expected";
                    return null;
                };

                /**
                 * Creates a NewListingPair message from a plain object. Also converts values to their respective internal types.
                 * @function fromObject
                 * @memberof market.v2.trade.NewListingPair
                 * @static
                 * @param {Object.<string,*>} object Plain object
                 * @returns {market.v2.trade.NewListingPair} NewListingPair
                 */
                NewListingPair.fromObject = function fromObject(object) {
                    if (object instanceof $root.market.v2.trade.NewListingPair)
                        return object;
                    return new $root.market.v2.trade.NewListingPair();
                };

                /**
                 * Creates a plain object from a NewListingPair message. Also converts values to other types if specified.
                 * @function toObject
                 * @memberof market.v2.trade.NewListingPair
                 * @static
                 * @param {market.v2.trade.NewListingPair} message NewListingPair
                 * @param {$protobuf.IConversionOptions} [options] Conversion options
                 * @returns {Object.<string,*>} Plain object
                 */
                NewListingPair.toObject = function toObject() {
                    return {};
                };

                /**
                 * Converts this NewListingPair to JSON.
                 * @function toJSON
                 * @memberof market.v2.trade.NewListingPair
                 * @instance
                 * @returns {Object.<string,*>} JSON object
                 */
                NewListingPair.prototype.toJSON = function toJSON() {
                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
                };

                /**
                 * Gets the default type url for NewListingPair
                 * @function getTypeUrl
                 * @memberof market.v2.trade.NewListingPair
                 * @static
                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns {string} The default type url
                 */
                NewListingPair.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
                    if (typeUrlPrefix === undefined) {
                        typeUrlPrefix = "type.googleapis.com";
                    }
                    return typeUrlPrefix + "/market.v2.trade.NewListingPair";
                };

                return NewListingPair;
            })();

            trade.Chgdistributions = (function() {

                /**
                 * Properties of a Chgdistributions.
                 * @memberof market.v2.trade
                 * @interface IChgdistributions
                 * @property {number|Long|null} [upnum] Chgdistributions upnum
                 * @property {number|Long|null} [flatnum] Chgdistributions flatnum
                 * @property {number|Long|null} [downnum] Chgdistributions downnum
                 * @property {Array.<market.v2.trade.IDistributionPb>|null} [list] Chgdistributions list
                 */

                /**
                 * Constructs a new Chgdistributions.
                 * @memberof market.v2.trade
                 * @classdesc Represents a Chgdistributions.
                 * @implements IChgdistributions
                 * @constructor
                 * @param {market.v2.trade.IChgdistributions=} [properties] Properties to set
                 */
                function Chgdistributions(properties) {
                    this.list = [];
                    if (properties)
                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                            if (properties[keys[i]] != null)
                                this[keys[i]] = properties[keys[i]];
                }

                /**
                 * Chgdistributions upnum.
                 * @member {number|Long} upnum
                 * @memberof market.v2.trade.Chgdistributions
                 * @instance
                 */
                Chgdistributions.prototype.upnum = $util.Long ? $util.Long.fromBits(0,0,false) : 0;

                /**
                 * Chgdistributions flatnum.
                 * @member {number|Long} flatnum
                 * @memberof market.v2.trade.Chgdistributions
                 * @instance
                 */
                Chgdistributions.prototype.flatnum = $util.Long ? $util.Long.fromBits(0,0,false) : 0;

                /**
                 * Chgdistributions downnum.
                 * @member {number|Long} downnum
                 * @memberof market.v2.trade.Chgdistributions
                 * @instance
                 */
                Chgdistributions.prototype.downnum = $util.Long ? $util.Long.fromBits(0,0,false) : 0;

                /**
                 * Chgdistributions list.
                 * @member {Array.<market.v2.trade.IDistributionPb>} list
                 * @memberof market.v2.trade.Chgdistributions
                 * @instance
                 */
                Chgdistributions.prototype.list = $util.emptyArray;

                /**
                 * Creates a new Chgdistributions instance using the specified properties.
                 * @function create
                 * @memberof market.v2.trade.Chgdistributions
                 * @static
                 * @param {market.v2.trade.IChgdistributions=} [properties] Properties to set
                 * @returns {market.v2.trade.Chgdistributions} Chgdistributions instance
                 */
                Chgdistributions.create = function create(properties) {
                    return new Chgdistributions(properties);
                };

                /**
                 * Encodes the specified Chgdistributions message. Does not implicitly {@link market.v2.trade.Chgdistributions.verify|verify} messages.
                 * @function encode
                 * @memberof market.v2.trade.Chgdistributions
                 * @static
                 * @param {market.v2.trade.IChgdistributions} message Chgdistributions message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                Chgdistributions.encode = function encode(message, writer) {
                    if (!writer)
                        writer = $Writer.create();
                    if (message.upnum != null && Object.hasOwnProperty.call(message, "upnum"))
                        writer.uint32(/* id 1, wireType 0 =*/8).int64(message.upnum);
                    if (message.flatnum != null && Object.hasOwnProperty.call(message, "flatnum"))
                        writer.uint32(/* id 2, wireType 0 =*/16).int64(message.flatnum);
                    if (message.downnum != null && Object.hasOwnProperty.call(message, "downnum"))
                        writer.uint32(/* id 3, wireType 0 =*/24).int64(message.downnum);
                    if (message.list != null && message.list.length)
                        for (var i = 0; i < message.list.length; ++i)
                            $root.market.v2.trade.DistributionPb.encode(message.list[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();
                    return writer;
                };

                /**
                 * Encodes the specified Chgdistributions message, length delimited. Does not implicitly {@link market.v2.trade.Chgdistributions.verify|verify} messages.
                 * @function encodeDelimited
                 * @memberof market.v2.trade.Chgdistributions
                 * @static
                 * @param {market.v2.trade.IChgdistributions} message Chgdistributions message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                Chgdistributions.encodeDelimited = function encodeDelimited(message, writer) {
                    return this.encode(message, writer).ldelim();
                };

                /**
                 * Decodes a Chgdistributions message from the specified reader or buffer.
                 * @function decode
                 * @memberof market.v2.trade.Chgdistributions
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @param {number} [length] Message length if known beforehand
                 * @returns {market.v2.trade.Chgdistributions} Chgdistributions
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                Chgdistributions.decode = function decode(reader, length) {
                    if (!(reader instanceof $Reader))
                        reader = $Reader.create(reader);
                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.market.v2.trade.Chgdistributions();
                    while (reader.pos < end) {
                        var tag = reader.uint32();
                        switch (tag >>> 3) {
                        case 1: {
                                message.upnum = reader.int64();
                                break;
                            }
                        case 2: {
                                message.flatnum = reader.int64();
                                break;
                            }
                        case 3: {
                                message.downnum = reader.int64();
                                break;
                            }
                        case 4: {
                                if (!(message.list && message.list.length))
                                    message.list = [];
                                message.list.push($root.market.v2.trade.DistributionPb.decode(reader, reader.uint32()));
                                break;
                            }
                        default:
                            reader.skipType(tag & 7);
                            break;
                        }
                    }
                    return message;
                };

                /**
                 * Decodes a Chgdistributions message from the specified reader or buffer, length delimited.
                 * @function decodeDelimited
                 * @memberof market.v2.trade.Chgdistributions
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @returns {market.v2.trade.Chgdistributions} Chgdistributions
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                Chgdistributions.decodeDelimited = function decodeDelimited(reader) {
                    if (!(reader instanceof $Reader))
                        reader = new $Reader(reader);
                    return this.decode(reader, reader.uint32());
                };

                /**
                 * Verifies a Chgdistributions message.
                 * @function verify
                 * @memberof market.v2.trade.Chgdistributions
                 * @static
                 * @param {Object.<string,*>} message Plain object to verify
                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
                 */
                Chgdistributions.verify = function verify(message) {
                    if (typeof message !== "object" || message === null)
                        return "object expected";
                    if (message.upnum != null && message.hasOwnProperty("upnum"))
                        if (!$util.isInteger(message.upnum) && !(message.upnum && $util.isInteger(message.upnum.low) && $util.isInteger(message.upnum.high)))
                            return "upnum: integer|Long expected";
                    if (message.flatnum != null && message.hasOwnProperty("flatnum"))
                        if (!$util.isInteger(message.flatnum) && !(message.flatnum && $util.isInteger(message.flatnum.low) && $util.isInteger(message.flatnum.high)))
                            return "flatnum: integer|Long expected";
                    if (message.downnum != null && message.hasOwnProperty("downnum"))
                        if (!$util.isInteger(message.downnum) && !(message.downnum && $util.isInteger(message.downnum.low) && $util.isInteger(message.downnum.high)))
                            return "downnum: integer|Long expected";
                    if (message.list != null && message.hasOwnProperty("list")) {
                        if (!Array.isArray(message.list))
                            return "list: array expected";
                        for (var i = 0; i < message.list.length; ++i) {
                            var error = $root.market.v2.trade.DistributionPb.verify(message.list[i]);
                            if (error)
                                return "list." + error;
                        }
                    }
                    return null;
                };

                /**
                 * Creates a Chgdistributions message from a plain object. Also converts values to their respective internal types.
                 * @function fromObject
                 * @memberof market.v2.trade.Chgdistributions
                 * @static
                 * @param {Object.<string,*>} object Plain object
                 * @returns {market.v2.trade.Chgdistributions} Chgdistributions
                 */
                Chgdistributions.fromObject = function fromObject(object) {
                    if (object instanceof $root.market.v2.trade.Chgdistributions)
                        return object;
                    var message = new $root.market.v2.trade.Chgdistributions();
                    if (object.upnum != null)
                        if ($util.Long)
                            (message.upnum = $util.Long.fromValue(object.upnum)).unsigned = false;
                        else if (typeof object.upnum === "string")
                            message.upnum = parseInt(object.upnum, 10);
                        else if (typeof object.upnum === "number")
                            message.upnum = object.upnum;
                        else if (typeof object.upnum === "object")
                            message.upnum = new $util.LongBits(object.upnum.low >>> 0, object.upnum.high >>> 0).toNumber();
                    if (object.flatnum != null)
                        if ($util.Long)
                            (message.flatnum = $util.Long.fromValue(object.flatnum)).unsigned = false;
                        else if (typeof object.flatnum === "string")
                            message.flatnum = parseInt(object.flatnum, 10);
                        else if (typeof object.flatnum === "number")
                            message.flatnum = object.flatnum;
                        else if (typeof object.flatnum === "object")
                            message.flatnum = new $util.LongBits(object.flatnum.low >>> 0, object.flatnum.high >>> 0).toNumber();
                    if (object.downnum != null)
                        if ($util.Long)
                            (message.downnum = $util.Long.fromValue(object.downnum)).unsigned = false;
                        else if (typeof object.downnum === "string")
                            message.downnum = parseInt(object.downnum, 10);
                        else if (typeof object.downnum === "number")
                            message.downnum = object.downnum;
                        else if (typeof object.downnum === "object")
                            message.downnum = new $util.LongBits(object.downnum.low >>> 0, object.downnum.high >>> 0).toNumber();
                    if (object.list) {
                        if (!Array.isArray(object.list))
                            throw TypeError(".market.v2.trade.Chgdistributions.list: array expected");
                        message.list = [];
                        for (var i = 0; i < object.list.length; ++i) {
                            if (typeof object.list[i] !== "object")
                                throw TypeError(".market.v2.trade.Chgdistributions.list: object expected");
                            message.list[i] = $root.market.v2.trade.DistributionPb.fromObject(object.list[i]);
                        }
                    }
                    return message;
                };

                /**
                 * Creates a plain object from a Chgdistributions message. Also converts values to other types if specified.
                 * @function toObject
                 * @memberof market.v2.trade.Chgdistributions
                 * @static
                 * @param {market.v2.trade.Chgdistributions} message Chgdistributions
                 * @param {$protobuf.IConversionOptions} [options] Conversion options
                 * @returns {Object.<string,*>} Plain object
                 */
                Chgdistributions.toObject = function toObject(message, options) {
                    if (!options)
                        options = {};
                    var object = {};
                    if (options.arrays || options.defaults)
                        object.list = [];
                    if (options.defaults) {
                        if ($util.Long) {
                            var long = new $util.Long(0, 0, false);
                            object.upnum = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
                        } else
                            object.upnum = options.longs === String ? "0" : 0;
                        if ($util.Long) {
                            var long = new $util.Long(0, 0, false);
                            object.flatnum = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
                        } else
                            object.flatnum = options.longs === String ? "0" : 0;
                        if ($util.Long) {
                            var long = new $util.Long(0, 0, false);
                            object.downnum = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
                        } else
                            object.downnum = options.longs === String ? "0" : 0;
                    }
                    if (message.upnum != null && message.hasOwnProperty("upnum"))
                        if (typeof message.upnum === "number")
                            object.upnum = options.longs === String ? String(message.upnum) : message.upnum;
                        else
                            object.upnum = options.longs === String ? $util.Long.prototype.toString.call(message.upnum) : options.longs === Number ? new $util.LongBits(message.upnum.low >>> 0, message.upnum.high >>> 0).toNumber() : message.upnum;
                    if (message.flatnum != null && message.hasOwnProperty("flatnum"))
                        if (typeof message.flatnum === "number")
                            object.flatnum = options.longs === String ? String(message.flatnum) : message.flatnum;
                        else
                            object.flatnum = options.longs === String ? $util.Long.prototype.toString.call(message.flatnum) : options.longs === Number ? new $util.LongBits(message.flatnum.low >>> 0, message.flatnum.high >>> 0).toNumber() : message.flatnum;
                    if (message.downnum != null && message.hasOwnProperty("downnum"))
                        if (typeof message.downnum === "number")
                            object.downnum = options.longs === String ? String(message.downnum) : message.downnum;
                        else
                            object.downnum = options.longs === String ? $util.Long.prototype.toString.call(message.downnum) : options.longs === Number ? new $util.LongBits(message.downnum.low >>> 0, message.downnum.high >>> 0).toNumber() : message.downnum;
                    if (message.list && message.list.length) {
                        object.list = [];
                        for (var j = 0; j < message.list.length; ++j)
                            object.list[j] = $root.market.v2.trade.DistributionPb.toObject(message.list[j], options);
                    }
                    return object;
                };

                /**
                 * Converts this Chgdistributions to JSON.
                 * @function toJSON
                 * @memberof market.v2.trade.Chgdistributions
                 * @instance
                 * @returns {Object.<string,*>} JSON object
                 */
                Chgdistributions.prototype.toJSON = function toJSON() {
                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
                };

                /**
                 * Gets the default type url for Chgdistributions
                 * @function getTypeUrl
                 * @memberof market.v2.trade.Chgdistributions
                 * @static
                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns {string} The default type url
                 */
                Chgdistributions.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
                    if (typeUrlPrefix === undefined) {
                        typeUrlPrefix = "type.googleapis.com";
                    }
                    return typeUrlPrefix + "/market.v2.trade.Chgdistributions";
                };

                return Chgdistributions;
            })();

            trade.DistributionPb = (function() {

                /**
                 * Properties of a DistributionPb.
                 * @memberof market.v2.trade
                 * @interface IDistributionPb
                 * @property {string|null} [name] DistributionPb name
                 * @property {number|null} [chgType] DistributionPb chgType
                 * @property {number|Long|null} [num] DistributionPb num
                 */

                /**
                 * Constructs a new DistributionPb.
                 * @memberof market.v2.trade
                 * @classdesc Represents a DistributionPb.
                 * @implements IDistributionPb
                 * @constructor
                 * @param {market.v2.trade.IDistributionPb=} [properties] Properties to set
                 */
                function DistributionPb(properties) {
                    if (properties)
                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                            if (properties[keys[i]] != null)
                                this[keys[i]] = properties[keys[i]];
                }

                /**
                 * DistributionPb name.
                 * @member {string} name
                 * @memberof market.v2.trade.DistributionPb
                 * @instance
                 */
                DistributionPb.prototype.name = "";

                /**
                 * DistributionPb chgType.
                 * @member {number} chgType
                 * @memberof market.v2.trade.DistributionPb
                 * @instance
                 */
                DistributionPb.prototype.chgType = 0;

                /**
                 * DistributionPb num.
                 * @member {number|Long} num
                 * @memberof market.v2.trade.DistributionPb
                 * @instance
                 */
                DistributionPb.prototype.num = $util.Long ? $util.Long.fromBits(0,0,false) : 0;

                /**
                 * Creates a new DistributionPb instance using the specified properties.
                 * @function create
                 * @memberof market.v2.trade.DistributionPb
                 * @static
                 * @param {market.v2.trade.IDistributionPb=} [properties] Properties to set
                 * @returns {market.v2.trade.DistributionPb} DistributionPb instance
                 */
                DistributionPb.create = function create(properties) {
                    return new DistributionPb(properties);
                };

                /**
                 * Encodes the specified DistributionPb message. Does not implicitly {@link market.v2.trade.DistributionPb.verify|verify} messages.
                 * @function encode
                 * @memberof market.v2.trade.DistributionPb
                 * @static
                 * @param {market.v2.trade.IDistributionPb} message DistributionPb message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                DistributionPb.encode = function encode(message, writer) {
                    if (!writer)
                        writer = $Writer.create();
                    if (message.name != null && Object.hasOwnProperty.call(message, "name"))
                        writer.uint32(/* id 1, wireType 2 =*/10).string(message.name);
                    if (message.chgType != null && Object.hasOwnProperty.call(message, "chgType"))
                        writer.uint32(/* id 2, wireType 0 =*/16).int32(message.chgType);
                    if (message.num != null && Object.hasOwnProperty.call(message, "num"))
                        writer.uint32(/* id 3, wireType 0 =*/24).int64(message.num);
                    return writer;
                };

                /**
                 * Encodes the specified DistributionPb message, length delimited. Does not implicitly {@link market.v2.trade.DistributionPb.verify|verify} messages.
                 * @function encodeDelimited
                 * @memberof market.v2.trade.DistributionPb
                 * @static
                 * @param {market.v2.trade.IDistributionPb} message DistributionPb message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                DistributionPb.encodeDelimited = function encodeDelimited(message, writer) {
                    return this.encode(message, writer).ldelim();
                };

                /**
                 * Decodes a DistributionPb message from the specified reader or buffer.
                 * @function decode
                 * @memberof market.v2.trade.DistributionPb
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @param {number} [length] Message length if known beforehand
                 * @returns {market.v2.trade.DistributionPb} DistributionPb
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                DistributionPb.decode = function decode(reader, length) {
                    if (!(reader instanceof $Reader))
                        reader = $Reader.create(reader);
                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.market.v2.trade.DistributionPb();
                    while (reader.pos < end) {
                        var tag = reader.uint32();
                        switch (tag >>> 3) {
                        case 1: {
                                message.name = reader.string();
                                break;
                            }
                        case 2: {
                                message.chgType = reader.int32();
                                break;
                            }
                        case 3: {
                                message.num = reader.int64();
                                break;
                            }
                        default:
                            reader.skipType(tag & 7);
                            break;
                        }
                    }
                    return message;
                };

                /**
                 * Decodes a DistributionPb message from the specified reader or buffer, length delimited.
                 * @function decodeDelimited
                 * @memberof market.v2.trade.DistributionPb
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @returns {market.v2.trade.DistributionPb} DistributionPb
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                DistributionPb.decodeDelimited = function decodeDelimited(reader) {
                    if (!(reader instanceof $Reader))
                        reader = new $Reader(reader);
                    return this.decode(reader, reader.uint32());
                };

                /**
                 * Verifies a DistributionPb message.
                 * @function verify
                 * @memberof market.v2.trade.DistributionPb
                 * @static
                 * @param {Object.<string,*>} message Plain object to verify
                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
                 */
                DistributionPb.verify = function verify(message) {
                    if (typeof message !== "object" || message === null)
                        return "object expected";
                    if (message.name != null && message.hasOwnProperty("name"))
                        if (!$util.isString(message.name))
                            return "name: string expected";
                    if (message.chgType != null && message.hasOwnProperty("chgType"))
                        if (!$util.isInteger(message.chgType))
                            return "chgType: integer expected";
                    if (message.num != null && message.hasOwnProperty("num"))
                        if (!$util.isInteger(message.num) && !(message.num && $util.isInteger(message.num.low) && $util.isInteger(message.num.high)))
                            return "num: integer|Long expected";
                    return null;
                };

                /**
                 * Creates a DistributionPb message from a plain object. Also converts values to their respective internal types.
                 * @function fromObject
                 * @memberof market.v2.trade.DistributionPb
                 * @static
                 * @param {Object.<string,*>} object Plain object
                 * @returns {market.v2.trade.DistributionPb} DistributionPb
                 */
                DistributionPb.fromObject = function fromObject(object) {
                    if (object instanceof $root.market.v2.trade.DistributionPb)
                        return object;
                    var message = new $root.market.v2.trade.DistributionPb();
                    if (object.name != null)
                        message.name = String(object.name);
                    if (object.chgType != null)
                        message.chgType = object.chgType | 0;
                    if (object.num != null)
                        if ($util.Long)
                            (message.num = $util.Long.fromValue(object.num)).unsigned = false;
                        else if (typeof object.num === "string")
                            message.num = parseInt(object.num, 10);
                        else if (typeof object.num === "number")
                            message.num = object.num;
                        else if (typeof object.num === "object")
                            message.num = new $util.LongBits(object.num.low >>> 0, object.num.high >>> 0).toNumber();
                    return message;
                };

                /**
                 * Creates a plain object from a DistributionPb message. Also converts values to other types if specified.
                 * @function toObject
                 * @memberof market.v2.trade.DistributionPb
                 * @static
                 * @param {market.v2.trade.DistributionPb} message DistributionPb
                 * @param {$protobuf.IConversionOptions} [options] Conversion options
                 * @returns {Object.<string,*>} Plain object
                 */
                DistributionPb.toObject = function toObject(message, options) {
                    if (!options)
                        options = {};
                    var object = {};
                    if (options.defaults) {
                        object.name = "";
                        object.chgType = 0;
                        if ($util.Long) {
                            var long = new $util.Long(0, 0, false);
                            object.num = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
                        } else
                            object.num = options.longs === String ? "0" : 0;
                    }
                    if (message.name != null && message.hasOwnProperty("name"))
                        object.name = message.name;
                    if (message.chgType != null && message.hasOwnProperty("chgType"))
                        object.chgType = message.chgType;
                    if (message.num != null && message.hasOwnProperty("num"))
                        if (typeof message.num === "number")
                            object.num = options.longs === String ? String(message.num) : message.num;
                        else
                            object.num = options.longs === String ? $util.Long.prototype.toString.call(message.num) : options.longs === Number ? new $util.LongBits(message.num.low >>> 0, message.num.high >>> 0).toNumber() : message.num;
                    return object;
                };

                /**
                 * Converts this DistributionPb to JSON.
                 * @function toJSON
                 * @memberof market.v2.trade.DistributionPb
                 * @instance
                 * @returns {Object.<string,*>} JSON object
                 */
                DistributionPb.prototype.toJSON = function toJSON() {
                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
                };

                /**
                 * Gets the default type url for DistributionPb
                 * @function getTypeUrl
                 * @memberof market.v2.trade.DistributionPb
                 * @static
                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns {string} The default type url
                 */
                DistributionPb.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
                    if (typeUrlPrefix === undefined) {
                        typeUrlPrefix = "type.googleapis.com";
                    }
                    return typeUrlPrefix + "/market.v2.trade.DistributionPb";
                };

                return DistributionPb;
            })();

            trade.MarketZones = (function() {

                /**
                 * Properties of a MarketZones.
                 * @memberof market.v2.trade
                 * @interface IMarketZones
                 */

                /**
                 * Constructs a new MarketZones.
                 * @memberof market.v2.trade
                 * @classdesc Represents a MarketZones.
                 * @implements IMarketZones
                 * @constructor
                 * @param {market.v2.trade.IMarketZones=} [properties] Properties to set
                 */
                function MarketZones(properties) {
                    if (properties)
                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                            if (properties[keys[i]] != null)
                                this[keys[i]] = properties[keys[i]];
                }

                /**
                 * Creates a new MarketZones instance using the specified properties.
                 * @function create
                 * @memberof market.v2.trade.MarketZones
                 * @static
                 * @param {market.v2.trade.IMarketZones=} [properties] Properties to set
                 * @returns {market.v2.trade.MarketZones} MarketZones instance
                 */
                MarketZones.create = function create(properties) {
                    return new MarketZones(properties);
                };

                /**
                 * Encodes the specified MarketZones message. Does not implicitly {@link market.v2.trade.MarketZones.verify|verify} messages.
                 * @function encode
                 * @memberof market.v2.trade.MarketZones
                 * @static
                 * @param {market.v2.trade.IMarketZones} message MarketZones message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                MarketZones.encode = function encode(message, writer) {
                    if (!writer)
                        writer = $Writer.create();
                    return writer;
                };

                /**
                 * Encodes the specified MarketZones message, length delimited. Does not implicitly {@link market.v2.trade.MarketZones.verify|verify} messages.
                 * @function encodeDelimited
                 * @memberof market.v2.trade.MarketZones
                 * @static
                 * @param {market.v2.trade.IMarketZones} message MarketZones message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                MarketZones.encodeDelimited = function encodeDelimited(message, writer) {
                    return this.encode(message, writer).ldelim();
                };

                /**
                 * Decodes a MarketZones message from the specified reader or buffer.
                 * @function decode
                 * @memberof market.v2.trade.MarketZones
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @param {number} [length] Message length if known beforehand
                 * @returns {market.v2.trade.MarketZones} MarketZones
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                MarketZones.decode = function decode(reader, length) {
                    if (!(reader instanceof $Reader))
                        reader = $Reader.create(reader);
                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.market.v2.trade.MarketZones();
                    while (reader.pos < end) {
                        var tag = reader.uint32();
                        switch (tag >>> 3) {
                        default:
                            reader.skipType(tag & 7);
                            break;
                        }
                    }
                    return message;
                };

                /**
                 * Decodes a MarketZones message from the specified reader or buffer, length delimited.
                 * @function decodeDelimited
                 * @memberof market.v2.trade.MarketZones
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @returns {market.v2.trade.MarketZones} MarketZones
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                MarketZones.decodeDelimited = function decodeDelimited(reader) {
                    if (!(reader instanceof $Reader))
                        reader = new $Reader(reader);
                    return this.decode(reader, reader.uint32());
                };

                /**
                 * Verifies a MarketZones message.
                 * @function verify
                 * @memberof market.v2.trade.MarketZones
                 * @static
                 * @param {Object.<string,*>} message Plain object to verify
                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
                 */
                MarketZones.verify = function verify(message) {
                    if (typeof message !== "object" || message === null)
                        return "object expected";
                    return null;
                };

                /**
                 * Creates a MarketZones message from a plain object. Also converts values to their respective internal types.
                 * @function fromObject
                 * @memberof market.v2.trade.MarketZones
                 * @static
                 * @param {Object.<string,*>} object Plain object
                 * @returns {market.v2.trade.MarketZones} MarketZones
                 */
                MarketZones.fromObject = function fromObject(object) {
                    if (object instanceof $root.market.v2.trade.MarketZones)
                        return object;
                    return new $root.market.v2.trade.MarketZones();
                };

                /**
                 * Creates a plain object from a MarketZones message. Also converts values to other types if specified.
                 * @function toObject
                 * @memberof market.v2.trade.MarketZones
                 * @static
                 * @param {market.v2.trade.MarketZones} message MarketZones
                 * @param {$protobuf.IConversionOptions} [options] Conversion options
                 * @returns {Object.<string,*>} Plain object
                 */
                MarketZones.toObject = function toObject() {
                    return {};
                };

                /**
                 * Converts this MarketZones to JSON.
                 * @function toJSON
                 * @memberof market.v2.trade.MarketZones
                 * @instance
                 * @returns {Object.<string,*>} JSON object
                 */
                MarketZones.prototype.toJSON = function toJSON() {
                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
                };

                /**
                 * Gets the default type url for MarketZones
                 * @function getTypeUrl
                 * @memberof market.v2.trade.MarketZones
                 * @static
                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns {string} The default type url
                 */
                MarketZones.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
                    if (typeUrlPrefix === undefined) {
                        typeUrlPrefix = "type.googleapis.com";
                    }
                    return typeUrlPrefix + "/market.v2.trade.MarketZones";
                };

                return MarketZones;
            })();

            trade.KlineOrders = (function() {

                /**
                 * Properties of a KlineOrders.
                 * @memberof market.v2.trade
                 * @interface IKlineOrders
                 */

                /**
                 * Constructs a new KlineOrders.
                 * @memberof market.v2.trade
                 * @classdesc Represents a KlineOrders.
                 * @implements IKlineOrders
                 * @constructor
                 * @param {market.v2.trade.IKlineOrders=} [properties] Properties to set
                 */
                function KlineOrders(properties) {
                    if (properties)
                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                            if (properties[keys[i]] != null)
                                this[keys[i]] = properties[keys[i]];
                }

                /**
                 * Creates a new KlineOrders instance using the specified properties.
                 * @function create
                 * @memberof market.v2.trade.KlineOrders
                 * @static
                 * @param {market.v2.trade.IKlineOrders=} [properties] Properties to set
                 * @returns {market.v2.trade.KlineOrders} KlineOrders instance
                 */
                KlineOrders.create = function create(properties) {
                    return new KlineOrders(properties);
                };

                /**
                 * Encodes the specified KlineOrders message. Does not implicitly {@link market.v2.trade.KlineOrders.verify|verify} messages.
                 * @function encode
                 * @memberof market.v2.trade.KlineOrders
                 * @static
                 * @param {market.v2.trade.IKlineOrders} message KlineOrders message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                KlineOrders.encode = function encode(message, writer) {
                    if (!writer)
                        writer = $Writer.create();
                    return writer;
                };

                /**
                 * Encodes the specified KlineOrders message, length delimited. Does not implicitly {@link market.v2.trade.KlineOrders.verify|verify} messages.
                 * @function encodeDelimited
                 * @memberof market.v2.trade.KlineOrders
                 * @static
                 * @param {market.v2.trade.IKlineOrders} message KlineOrders message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                KlineOrders.encodeDelimited = function encodeDelimited(message, writer) {
                    return this.encode(message, writer).ldelim();
                };

                /**
                 * Decodes a KlineOrders message from the specified reader or buffer.
                 * @function decode
                 * @memberof market.v2.trade.KlineOrders
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @param {number} [length] Message length if known beforehand
                 * @returns {market.v2.trade.KlineOrders} KlineOrders
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                KlineOrders.decode = function decode(reader, length) {
                    if (!(reader instanceof $Reader))
                        reader = $Reader.create(reader);
                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.market.v2.trade.KlineOrders();
                    while (reader.pos < end) {
                        var tag = reader.uint32();
                        switch (tag >>> 3) {
                        default:
                            reader.skipType(tag & 7);
                            break;
                        }
                    }
                    return message;
                };

                /**
                 * Decodes a KlineOrders message from the specified reader or buffer, length delimited.
                 * @function decodeDelimited
                 * @memberof market.v2.trade.KlineOrders
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @returns {market.v2.trade.KlineOrders} KlineOrders
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                KlineOrders.decodeDelimited = function decodeDelimited(reader) {
                    if (!(reader instanceof $Reader))
                        reader = new $Reader(reader);
                    return this.decode(reader, reader.uint32());
                };

                /**
                 * Verifies a KlineOrders message.
                 * @function verify
                 * @memberof market.v2.trade.KlineOrders
                 * @static
                 * @param {Object.<string,*>} message Plain object to verify
                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
                 */
                KlineOrders.verify = function verify(message) {
                    if (typeof message !== "object" || message === null)
                        return "object expected";
                    return null;
                };

                /**
                 * Creates a KlineOrders message from a plain object. Also converts values to their respective internal types.
                 * @function fromObject
                 * @memberof market.v2.trade.KlineOrders
                 * @static
                 * @param {Object.<string,*>} object Plain object
                 * @returns {market.v2.trade.KlineOrders} KlineOrders
                 */
                KlineOrders.fromObject = function fromObject(object) {
                    if (object instanceof $root.market.v2.trade.KlineOrders)
                        return object;
                    return new $root.market.v2.trade.KlineOrders();
                };

                /**
                 * Creates a plain object from a KlineOrders message. Also converts values to other types if specified.
                 * @function toObject
                 * @memberof market.v2.trade.KlineOrders
                 * @static
                 * @param {market.v2.trade.KlineOrders} message KlineOrders
                 * @param {$protobuf.IConversionOptions} [options] Conversion options
                 * @returns {Object.<string,*>} Plain object
                 */
                KlineOrders.toObject = function toObject() {
                    return {};
                };

                /**
                 * Converts this KlineOrders to JSON.
                 * @function toJSON
                 * @memberof market.v2.trade.KlineOrders
                 * @instance
                 * @returns {Object.<string,*>} JSON object
                 */
                KlineOrders.prototype.toJSON = function toJSON() {
                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
                };

                /**
                 * Gets the default type url for KlineOrders
                 * @function getTypeUrl
                 * @memberof market.v2.trade.KlineOrders
                 * @static
                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns {string} The default type url
                 */
                KlineOrders.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
                    if (typeUrlPrefix === undefined) {
                        typeUrlPrefix = "type.googleapis.com";
                    }
                    return typeUrlPrefix + "/market.v2.trade.KlineOrders";
                };

                return KlineOrders;
            })();

            trade.NotificationPush = (function() {

                /**
                 * Properties of a NotificationPush.
                 * @memberof market.v2.trade
                 * @interface INotificationPush
                 * @property {number|null} [userid] NotificationPush userid
                 * @property {string|null} [title] NotificationPush title
                 * @property {string|null} [body] NotificationPush body
                 * @property {number|null} [badge] NotificationPush badge
                 * @property {string|null} [group] NotificationPush group
                 * @property {Object.<string,string>|null} [extrasMap] NotificationPush extrasMap
                 */

                /**
                 * Constructs a new NotificationPush.
                 * @memberof market.v2.trade
                 * @classdesc Represents a NotificationPush.
                 * @implements INotificationPush
                 * @constructor
                 * @param {market.v2.trade.INotificationPush=} [properties] Properties to set
                 */
                function NotificationPush(properties) {
                    this.extrasMap = {};
                    if (properties)
                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                            if (properties[keys[i]] != null)
                                this[keys[i]] = properties[keys[i]];
                }

                /**
                 * NotificationPush userid.
                 * @member {number} userid
                 * @memberof market.v2.trade.NotificationPush
                 * @instance
                 */
                NotificationPush.prototype.userid = 0;

                /**
                 * NotificationPush title.
                 * @member {string} title
                 * @memberof market.v2.trade.NotificationPush
                 * @instance
                 */
                NotificationPush.prototype.title = "";

                /**
                 * NotificationPush body.
                 * @member {string} body
                 * @memberof market.v2.trade.NotificationPush
                 * @instance
                 */
                NotificationPush.prototype.body = "";

                /**
                 * NotificationPush badge.
                 * @member {number} badge
                 * @memberof market.v2.trade.NotificationPush
                 * @instance
                 */
                NotificationPush.prototype.badge = 0;

                /**
                 * NotificationPush group.
                 * @member {string} group
                 * @memberof market.v2.trade.NotificationPush
                 * @instance
                 */
                NotificationPush.prototype.group = "";

                /**
                 * NotificationPush extrasMap.
                 * @member {Object.<string,string>} extrasMap
                 * @memberof market.v2.trade.NotificationPush
                 * @instance
                 */
                NotificationPush.prototype.extrasMap = $util.emptyObject;

                /**
                 * Creates a new NotificationPush instance using the specified properties.
                 * @function create
                 * @memberof market.v2.trade.NotificationPush
                 * @static
                 * @param {market.v2.trade.INotificationPush=} [properties] Properties to set
                 * @returns {market.v2.trade.NotificationPush} NotificationPush instance
                 */
                NotificationPush.create = function create(properties) {
                    return new NotificationPush(properties);
                };

                /**
                 * Encodes the specified NotificationPush message. Does not implicitly {@link market.v2.trade.NotificationPush.verify|verify} messages.
                 * @function encode
                 * @memberof market.v2.trade.NotificationPush
                 * @static
                 * @param {market.v2.trade.INotificationPush} message NotificationPush message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                NotificationPush.encode = function encode(message, writer) {
                    if (!writer)
                        writer = $Writer.create();
                    if (message.userid != null && Object.hasOwnProperty.call(message, "userid"))
                        writer.uint32(/* id 1, wireType 0 =*/8).int32(message.userid);
                    if (message.title != null && Object.hasOwnProperty.call(message, "title"))
                        writer.uint32(/* id 2, wireType 2 =*/18).string(message.title);
                    if (message.body != null && Object.hasOwnProperty.call(message, "body"))
                        writer.uint32(/* id 3, wireType 2 =*/26).string(message.body);
                    if (message.badge != null && Object.hasOwnProperty.call(message, "badge"))
                        writer.uint32(/* id 4, wireType 0 =*/32).int32(message.badge);
                    if (message.group != null && Object.hasOwnProperty.call(message, "group"))
                        writer.uint32(/* id 5, wireType 2 =*/42).string(message.group);
                    if (message.extrasMap != null && Object.hasOwnProperty.call(message, "extrasMap"))
                        for (var keys = Object.keys(message.extrasMap), i = 0; i < keys.length; ++i)
                            writer.uint32(/* id 6, wireType 2 =*/50).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]).uint32(/* id 2, wireType 2 =*/18).string(message.extrasMap[keys[i]]).ldelim();
                    return writer;
                };

                /**
                 * Encodes the specified NotificationPush message, length delimited. Does not implicitly {@link market.v2.trade.NotificationPush.verify|verify} messages.
                 * @function encodeDelimited
                 * @memberof market.v2.trade.NotificationPush
                 * @static
                 * @param {market.v2.trade.INotificationPush} message NotificationPush message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                NotificationPush.encodeDelimited = function encodeDelimited(message, writer) {
                    return this.encode(message, writer).ldelim();
                };

                /**
                 * Decodes a NotificationPush message from the specified reader or buffer.
                 * @function decode
                 * @memberof market.v2.trade.NotificationPush
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @param {number} [length] Message length if known beforehand
                 * @returns {market.v2.trade.NotificationPush} NotificationPush
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                NotificationPush.decode = function decode(reader, length) {
                    if (!(reader instanceof $Reader))
                        reader = $Reader.create(reader);
                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.market.v2.trade.NotificationPush(), key, value;
                    while (reader.pos < end) {
                        var tag = reader.uint32();
                        switch (tag >>> 3) {
                        case 1: {
                                message.userid = reader.int32();
                                break;
                            }
                        case 2: {
                                message.title = reader.string();
                                break;
                            }
                        case 3: {
                                message.body = reader.string();
                                break;
                            }
                        case 4: {
                                message.badge = reader.int32();
                                break;
                            }
                        case 5: {
                                message.group = reader.string();
                                break;
                            }
                        case 6: {
                                if (message.extrasMap === $util.emptyObject)
                                    message.extrasMap = {};
                                var end2 = reader.uint32() + reader.pos;
                                key = "";
                                value = "";
                                while (reader.pos < end2) {
                                    var tag2 = reader.uint32();
                                    switch (tag2 >>> 3) {
                                    case 1:
                                        key = reader.string();
                                        break;
                                    case 2:
                                        value = reader.string();
                                        break;
                                    default:
                                        reader.skipType(tag2 & 7);
                                        break;
                                    }
                                }
                                message.extrasMap[key] = value;
                                break;
                            }
                        default:
                            reader.skipType(tag & 7);
                            break;
                        }
                    }
                    return message;
                };

                /**
                 * Decodes a NotificationPush message from the specified reader or buffer, length delimited.
                 * @function decodeDelimited
                 * @memberof market.v2.trade.NotificationPush
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @returns {market.v2.trade.NotificationPush} NotificationPush
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                NotificationPush.decodeDelimited = function decodeDelimited(reader) {
                    if (!(reader instanceof $Reader))
                        reader = new $Reader(reader);
                    return this.decode(reader, reader.uint32());
                };

                /**
                 * Verifies a NotificationPush message.
                 * @function verify
                 * @memberof market.v2.trade.NotificationPush
                 * @static
                 * @param {Object.<string,*>} message Plain object to verify
                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
                 */
                NotificationPush.verify = function verify(message) {
                    if (typeof message !== "object" || message === null)
                        return "object expected";
                    if (message.userid != null && message.hasOwnProperty("userid"))
                        if (!$util.isInteger(message.userid))
                            return "userid: integer expected";
                    if (message.title != null && message.hasOwnProperty("title"))
                        if (!$util.isString(message.title))
                            return "title: string expected";
                    if (message.body != null && message.hasOwnProperty("body"))
                        if (!$util.isString(message.body))
                            return "body: string expected";
                    if (message.badge != null && message.hasOwnProperty("badge"))
                        if (!$util.isInteger(message.badge))
                            return "badge: integer expected";
                    if (message.group != null && message.hasOwnProperty("group"))
                        if (!$util.isString(message.group))
                            return "group: string expected";
                    if (message.extrasMap != null && message.hasOwnProperty("extrasMap")) {
                        if (!$util.isObject(message.extrasMap))
                            return "extrasMap: object expected";
                        var key = Object.keys(message.extrasMap);
                        for (var i = 0; i < key.length; ++i)
                            if (!$util.isString(message.extrasMap[key[i]]))
                                return "extrasMap: string{k:string} expected";
                    }
                    return null;
                };

                /**
                 * Creates a NotificationPush message from a plain object. Also converts values to their respective internal types.
                 * @function fromObject
                 * @memberof market.v2.trade.NotificationPush
                 * @static
                 * @param {Object.<string,*>} object Plain object
                 * @returns {market.v2.trade.NotificationPush} NotificationPush
                 */
                NotificationPush.fromObject = function fromObject(object) {
                    if (object instanceof $root.market.v2.trade.NotificationPush)
                        return object;
                    var message = new $root.market.v2.trade.NotificationPush();
                    if (object.userid != null)
                        message.userid = object.userid | 0;
                    if (object.title != null)
                        message.title = String(object.title);
                    if (object.body != null)
                        message.body = String(object.body);
                    if (object.badge != null)
                        message.badge = object.badge | 0;
                    if (object.group != null)
                        message.group = String(object.group);
                    if (object.extrasMap) {
                        if (typeof object.extrasMap !== "object")
                            throw TypeError(".market.v2.trade.NotificationPush.extrasMap: object expected");
                        message.extrasMap = {};
                        for (var keys = Object.keys(object.extrasMap), i = 0; i < keys.length; ++i)
                            message.extrasMap[keys[i]] = String(object.extrasMap[keys[i]]);
                    }
                    return message;
                };

                /**
                 * Creates a plain object from a NotificationPush message. Also converts values to other types if specified.
                 * @function toObject
                 * @memberof market.v2.trade.NotificationPush
                 * @static
                 * @param {market.v2.trade.NotificationPush} message NotificationPush
                 * @param {$protobuf.IConversionOptions} [options] Conversion options
                 * @returns {Object.<string,*>} Plain object
                 */
                NotificationPush.toObject = function toObject(message, options) {
                    if (!options)
                        options = {};
                    var object = {};
                    if (options.objects || options.defaults)
                        object.extrasMap = {};
                    if (options.defaults) {
                        object.userid = 0;
                        object.title = "";
                        object.body = "";
                        object.badge = 0;
                        object.group = "";
                    }
                    if (message.userid != null && message.hasOwnProperty("userid"))
                        object.userid = message.userid;
                    if (message.title != null && message.hasOwnProperty("title"))
                        object.title = message.title;
                    if (message.body != null && message.hasOwnProperty("body"))
                        object.body = message.body;
                    if (message.badge != null && message.hasOwnProperty("badge"))
                        object.badge = message.badge;
                    if (message.group != null && message.hasOwnProperty("group"))
                        object.group = message.group;
                    var keys2;
                    if (message.extrasMap && (keys2 = Object.keys(message.extrasMap)).length) {
                        object.extrasMap = {};
                        for (var j = 0; j < keys2.length; ++j)
                            object.extrasMap[keys2[j]] = message.extrasMap[keys2[j]];
                    }
                    return object;
                };

                /**
                 * Converts this NotificationPush to JSON.
                 * @function toJSON
                 * @memberof market.v2.trade.NotificationPush
                 * @instance
                 * @returns {Object.<string,*>} JSON object
                 */
                NotificationPush.prototype.toJSON = function toJSON() {
                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
                };

                /**
                 * Gets the default type url for NotificationPush
                 * @function getTypeUrl
                 * @memberof market.v2.trade.NotificationPush
                 * @static
                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns {string} The default type url
                 */
                NotificationPush.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
                    if (typeUrlPrefix === undefined) {
                        typeUrlPrefix = "type.googleapis.com";
                    }
                    return typeUrlPrefix + "/market.v2.trade.NotificationPush";
                };

                return NotificationPush;
            })();

            trade.TradeHotListing = (function() {

                /**
                 * Properties of a TradeHotListing.
                 * @memberof market.v2.trade
                 * @interface ITradeHotListing
                 */

                /**
                 * Constructs a new TradeHotListing.
                 * @memberof market.v2.trade
                 * @classdesc Represents a TradeHotListing.
                 * @implements ITradeHotListing
                 * @constructor
                 * @param {market.v2.trade.ITradeHotListing=} [properties] Properties to set
                 */
                function TradeHotListing(properties) {
                    if (properties)
                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                            if (properties[keys[i]] != null)
                                this[keys[i]] = properties[keys[i]];
                }

                /**
                 * Creates a new TradeHotListing instance using the specified properties.
                 * @function create
                 * @memberof market.v2.trade.TradeHotListing
                 * @static
                 * @param {market.v2.trade.ITradeHotListing=} [properties] Properties to set
                 * @returns {market.v2.trade.TradeHotListing} TradeHotListing instance
                 */
                TradeHotListing.create = function create(properties) {
                    return new TradeHotListing(properties);
                };

                /**
                 * Encodes the specified TradeHotListing message. Does not implicitly {@link market.v2.trade.TradeHotListing.verify|verify} messages.
                 * @function encode
                 * @memberof market.v2.trade.TradeHotListing
                 * @static
                 * @param {market.v2.trade.ITradeHotListing} message TradeHotListing message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                TradeHotListing.encode = function encode(message, writer) {
                    if (!writer)
                        writer = $Writer.create();
                    return writer;
                };

                /**
                 * Encodes the specified TradeHotListing message, length delimited. Does not implicitly {@link market.v2.trade.TradeHotListing.verify|verify} messages.
                 * @function encodeDelimited
                 * @memberof market.v2.trade.TradeHotListing
                 * @static
                 * @param {market.v2.trade.ITradeHotListing} message TradeHotListing message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                TradeHotListing.encodeDelimited = function encodeDelimited(message, writer) {
                    return this.encode(message, writer).ldelim();
                };

                /**
                 * Decodes a TradeHotListing message from the specified reader or buffer.
                 * @function decode
                 * @memberof market.v2.trade.TradeHotListing
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @param {number} [length] Message length if known beforehand
                 * @returns {market.v2.trade.TradeHotListing} TradeHotListing
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                TradeHotListing.decode = function decode(reader, length) {
                    if (!(reader instanceof $Reader))
                        reader = $Reader.create(reader);
                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.market.v2.trade.TradeHotListing();
                    while (reader.pos < end) {
                        var tag = reader.uint32();
                        switch (tag >>> 3) {
                        default:
                            reader.skipType(tag & 7);
                            break;
                        }
                    }
                    return message;
                };

                /**
                 * Decodes a TradeHotListing message from the specified reader or buffer, length delimited.
                 * @function decodeDelimited
                 * @memberof market.v2.trade.TradeHotListing
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @returns {market.v2.trade.TradeHotListing} TradeHotListing
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                TradeHotListing.decodeDelimited = function decodeDelimited(reader) {
                    if (!(reader instanceof $Reader))
                        reader = new $Reader(reader);
                    return this.decode(reader, reader.uint32());
                };

                /**
                 * Verifies a TradeHotListing message.
                 * @function verify
                 * @memberof market.v2.trade.TradeHotListing
                 * @static
                 * @param {Object.<string,*>} message Plain object to verify
                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
                 */
                TradeHotListing.verify = function verify(message) {
                    if (typeof message !== "object" || message === null)
                        return "object expected";
                    return null;
                };

                /**
                 * Creates a TradeHotListing message from a plain object. Also converts values to their respective internal types.
                 * @function fromObject
                 * @memberof market.v2.trade.TradeHotListing
                 * @static
                 * @param {Object.<string,*>} object Plain object
                 * @returns {market.v2.trade.TradeHotListing} TradeHotListing
                 */
                TradeHotListing.fromObject = function fromObject(object) {
                    if (object instanceof $root.market.v2.trade.TradeHotListing)
                        return object;
                    return new $root.market.v2.trade.TradeHotListing();
                };

                /**
                 * Creates a plain object from a TradeHotListing message. Also converts values to other types if specified.
                 * @function toObject
                 * @memberof market.v2.trade.TradeHotListing
                 * @static
                 * @param {market.v2.trade.TradeHotListing} message TradeHotListing
                 * @param {$protobuf.IConversionOptions} [options] Conversion options
                 * @returns {Object.<string,*>} Plain object
                 */
                TradeHotListing.toObject = function toObject() {
                    return {};
                };

                /**
                 * Converts this TradeHotListing to JSON.
                 * @function toJSON
                 * @memberof market.v2.trade.TradeHotListing
                 * @instance
                 * @returns {Object.<string,*>} JSON object
                 */
                TradeHotListing.prototype.toJSON = function toJSON() {
                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
                };

                /**
                 * Gets the default type url for TradeHotListing
                 * @function getTypeUrl
                 * @memberof market.v2.trade.TradeHotListing
                 * @static
                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns {string} The default type url
                 */
                TradeHotListing.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
                    if (typeUrlPrefix === undefined) {
                        typeUrlPrefix = "type.googleapis.com";
                    }
                    return typeUrlPrefix + "/market.v2.trade.TradeHotListing";
                };

                return TradeHotListing;
            })();

            trade.CtcGoingOrderNum = (function() {

                /**
                 * Properties of a CtcGoingOrderNum.
                 * @memberof market.v2.trade
                 * @interface ICtcGoingOrderNum
                 * @property {number|null} [ordernum] CtcGoingOrderNum ordernum
                 */

                /**
                 * Constructs a new CtcGoingOrderNum.
                 * @memberof market.v2.trade
                 * @classdesc Represents a CtcGoingOrderNum.
                 * @implements ICtcGoingOrderNum
                 * @constructor
                 * @param {market.v2.trade.ICtcGoingOrderNum=} [properties] Properties to set
                 */
                function CtcGoingOrderNum(properties) {
                    if (properties)
                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                            if (properties[keys[i]] != null)
                                this[keys[i]] = properties[keys[i]];
                }

                /**
                 * CtcGoingOrderNum ordernum.
                 * @member {number} ordernum
                 * @memberof market.v2.trade.CtcGoingOrderNum
                 * @instance
                 */
                CtcGoingOrderNum.prototype.ordernum = 0;

                /**
                 * Creates a new CtcGoingOrderNum instance using the specified properties.
                 * @function create
                 * @memberof market.v2.trade.CtcGoingOrderNum
                 * @static
                 * @param {market.v2.trade.ICtcGoingOrderNum=} [properties] Properties to set
                 * @returns {market.v2.trade.CtcGoingOrderNum} CtcGoingOrderNum instance
                 */
                CtcGoingOrderNum.create = function create(properties) {
                    return new CtcGoingOrderNum(properties);
                };

                /**
                 * Encodes the specified CtcGoingOrderNum message. Does not implicitly {@link market.v2.trade.CtcGoingOrderNum.verify|verify} messages.
                 * @function encode
                 * @memberof market.v2.trade.CtcGoingOrderNum
                 * @static
                 * @param {market.v2.trade.ICtcGoingOrderNum} message CtcGoingOrderNum message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                CtcGoingOrderNum.encode = function encode(message, writer) {
                    if (!writer)
                        writer = $Writer.create();
                    if (message.ordernum != null && Object.hasOwnProperty.call(message, "ordernum"))
                        writer.uint32(/* id 1, wireType 0 =*/8).int32(message.ordernum);
                    return writer;
                };

                /**
                 * Encodes the specified CtcGoingOrderNum message, length delimited. Does not implicitly {@link market.v2.trade.CtcGoingOrderNum.verify|verify} messages.
                 * @function encodeDelimited
                 * @memberof market.v2.trade.CtcGoingOrderNum
                 * @static
                 * @param {market.v2.trade.ICtcGoingOrderNum} message CtcGoingOrderNum message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                CtcGoingOrderNum.encodeDelimited = function encodeDelimited(message, writer) {
                    return this.encode(message, writer).ldelim();
                };

                /**
                 * Decodes a CtcGoingOrderNum message from the specified reader or buffer.
                 * @function decode
                 * @memberof market.v2.trade.CtcGoingOrderNum
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @param {number} [length] Message length if known beforehand
                 * @returns {market.v2.trade.CtcGoingOrderNum} CtcGoingOrderNum
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                CtcGoingOrderNum.decode = function decode(reader, length) {
                    if (!(reader instanceof $Reader))
                        reader = $Reader.create(reader);
                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.market.v2.trade.CtcGoingOrderNum();
                    while (reader.pos < end) {
                        var tag = reader.uint32();
                        switch (tag >>> 3) {
                        case 1: {
                                message.ordernum = reader.int32();
                                break;
                            }
                        default:
                            reader.skipType(tag & 7);
                            break;
                        }
                    }
                    return message;
                };

                /**
                 * Decodes a CtcGoingOrderNum message from the specified reader or buffer, length delimited.
                 * @function decodeDelimited
                 * @memberof market.v2.trade.CtcGoingOrderNum
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @returns {market.v2.trade.CtcGoingOrderNum} CtcGoingOrderNum
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                CtcGoingOrderNum.decodeDelimited = function decodeDelimited(reader) {
                    if (!(reader instanceof $Reader))
                        reader = new $Reader(reader);
                    return this.decode(reader, reader.uint32());
                };

                /**
                 * Verifies a CtcGoingOrderNum message.
                 * @function verify
                 * @memberof market.v2.trade.CtcGoingOrderNum
                 * @static
                 * @param {Object.<string,*>} message Plain object to verify
                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
                 */
                CtcGoingOrderNum.verify = function verify(message) {
                    if (typeof message !== "object" || message === null)
                        return "object expected";
                    if (message.ordernum != null && message.hasOwnProperty("ordernum"))
                        if (!$util.isInteger(message.ordernum))
                            return "ordernum: integer expected";
                    return null;
                };

                /**
                 * Creates a CtcGoingOrderNum message from a plain object. Also converts values to their respective internal types.
                 * @function fromObject
                 * @memberof market.v2.trade.CtcGoingOrderNum
                 * @static
                 * @param {Object.<string,*>} object Plain object
                 * @returns {market.v2.trade.CtcGoingOrderNum} CtcGoingOrderNum
                 */
                CtcGoingOrderNum.fromObject = function fromObject(object) {
                    if (object instanceof $root.market.v2.trade.CtcGoingOrderNum)
                        return object;
                    var message = new $root.market.v2.trade.CtcGoingOrderNum();
                    if (object.ordernum != null)
                        message.ordernum = object.ordernum | 0;
                    return message;
                };

                /**
                 * Creates a plain object from a CtcGoingOrderNum message. Also converts values to other types if specified.
                 * @function toObject
                 * @memberof market.v2.trade.CtcGoingOrderNum
                 * @static
                 * @param {market.v2.trade.CtcGoingOrderNum} message CtcGoingOrderNum
                 * @param {$protobuf.IConversionOptions} [options] Conversion options
                 * @returns {Object.<string,*>} Plain object
                 */
                CtcGoingOrderNum.toObject = function toObject(message, options) {
                    if (!options)
                        options = {};
                    var object = {};
                    if (options.defaults)
                        object.ordernum = 0;
                    if (message.ordernum != null && message.hasOwnProperty("ordernum"))
                        object.ordernum = message.ordernum;
                    return object;
                };

                /**
                 * Converts this CtcGoingOrderNum to JSON.
                 * @function toJSON
                 * @memberof market.v2.trade.CtcGoingOrderNum
                 * @instance
                 * @returns {Object.<string,*>} JSON object
                 */
                CtcGoingOrderNum.prototype.toJSON = function toJSON() {
                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
                };

                /**
                 * Gets the default type url for CtcGoingOrderNum
                 * @function getTypeUrl
                 * @memberof market.v2.trade.CtcGoingOrderNum
                 * @static
                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns {string} The default type url
                 */
                CtcGoingOrderNum.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
                    if (typeUrlPrefix === undefined) {
                        typeUrlPrefix = "type.googleapis.com";
                    }
                    return typeUrlPrefix + "/market.v2.trade.CtcGoingOrderNum";
                };

                return CtcGoingOrderNum;
            })();

            trade.MultiChange = (function() {

                /**
                 * Properties of a MultiChange.
                 * @memberof market.v2.trade
                 * @interface IMultiChange
                 */

                /**
                 * Constructs a new MultiChange.
                 * @memberof market.v2.trade
                 * @classdesc Represents a MultiChange.
                 * @implements IMultiChange
                 * @constructor
                 * @param {market.v2.trade.IMultiChange=} [properties] Properties to set
                 */
                function MultiChange(properties) {
                    if (properties)
                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                            if (properties[keys[i]] != null)
                                this[keys[i]] = properties[keys[i]];
                }

                /**
                 * Creates a new MultiChange instance using the specified properties.
                 * @function create
                 * @memberof market.v2.trade.MultiChange
                 * @static
                 * @param {market.v2.trade.IMultiChange=} [properties] Properties to set
                 * @returns {market.v2.trade.MultiChange} MultiChange instance
                 */
                MultiChange.create = function create(properties) {
                    return new MultiChange(properties);
                };

                /**
                 * Encodes the specified MultiChange message. Does not implicitly {@link market.v2.trade.MultiChange.verify|verify} messages.
                 * @function encode
                 * @memberof market.v2.trade.MultiChange
                 * @static
                 * @param {market.v2.trade.IMultiChange} message MultiChange message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                MultiChange.encode = function encode(message, writer) {
                    if (!writer)
                        writer = $Writer.create();
                    return writer;
                };

                /**
                 * Encodes the specified MultiChange message, length delimited. Does not implicitly {@link market.v2.trade.MultiChange.verify|verify} messages.
                 * @function encodeDelimited
                 * @memberof market.v2.trade.MultiChange
                 * @static
                 * @param {market.v2.trade.IMultiChange} message MultiChange message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                MultiChange.encodeDelimited = function encodeDelimited(message, writer) {
                    return this.encode(message, writer).ldelim();
                };

                /**
                 * Decodes a MultiChange message from the specified reader or buffer.
                 * @function decode
                 * @memberof market.v2.trade.MultiChange
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @param {number} [length] Message length if known beforehand
                 * @returns {market.v2.trade.MultiChange} MultiChange
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                MultiChange.decode = function decode(reader, length) {
                    if (!(reader instanceof $Reader))
                        reader = $Reader.create(reader);
                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.market.v2.trade.MultiChange();
                    while (reader.pos < end) {
                        var tag = reader.uint32();
                        switch (tag >>> 3) {
                        default:
                            reader.skipType(tag & 7);
                            break;
                        }
                    }
                    return message;
                };

                /**
                 * Decodes a MultiChange message from the specified reader or buffer, length delimited.
                 * @function decodeDelimited
                 * @memberof market.v2.trade.MultiChange
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @returns {market.v2.trade.MultiChange} MultiChange
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                MultiChange.decodeDelimited = function decodeDelimited(reader) {
                    if (!(reader instanceof $Reader))
                        reader = new $Reader(reader);
                    return this.decode(reader, reader.uint32());
                };

                /**
                 * Verifies a MultiChange message.
                 * @function verify
                 * @memberof market.v2.trade.MultiChange
                 * @static
                 * @param {Object.<string,*>} message Plain object to verify
                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
                 */
                MultiChange.verify = function verify(message) {
                    if (typeof message !== "object" || message === null)
                        return "object expected";
                    return null;
                };

                /**
                 * Creates a MultiChange message from a plain object. Also converts values to their respective internal types.
                 * @function fromObject
                 * @memberof market.v2.trade.MultiChange
                 * @static
                 * @param {Object.<string,*>} object Plain object
                 * @returns {market.v2.trade.MultiChange} MultiChange
                 */
                MultiChange.fromObject = function fromObject(object) {
                    if (object instanceof $root.market.v2.trade.MultiChange)
                        return object;
                    return new $root.market.v2.trade.MultiChange();
                };

                /**
                 * Creates a plain object from a MultiChange message. Also converts values to other types if specified.
                 * @function toObject
                 * @memberof market.v2.trade.MultiChange
                 * @static
                 * @param {market.v2.trade.MultiChange} message MultiChange
                 * @param {$protobuf.IConversionOptions} [options] Conversion options
                 * @returns {Object.<string,*>} Plain object
                 */
                MultiChange.toObject = function toObject() {
                    return {};
                };

                /**
                 * Converts this MultiChange to JSON.
                 * @function toJSON
                 * @memberof market.v2.trade.MultiChange
                 * @instance
                 * @returns {Object.<string,*>} JSON object
                 */
                MultiChange.prototype.toJSON = function toJSON() {
                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
                };

                /**
                 * Gets the default type url for MultiChange
                 * @function getTypeUrl
                 * @memberof market.v2.trade.MultiChange
                 * @static
                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns {string} The default type url
                 */
                MultiChange.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
                    if (typeUrlPrefix === undefined) {
                        typeUrlPrefix = "type.googleapis.com";
                    }
                    return typeUrlPrefix + "/market.v2.trade.MultiChange";
                };

                return MultiChange;
            })();

            trade.Heatmap = (function() {

                /**
                 * Properties of a Heatmap.
                 * @memberof market.v2.trade
                 * @interface IHeatmap
                 */

                /**
                 * Constructs a new Heatmap.
                 * @memberof market.v2.trade
                 * @classdesc Represents a Heatmap.
                 * @implements IHeatmap
                 * @constructor
                 * @param {market.v2.trade.IHeatmap=} [properties] Properties to set
                 */
                function Heatmap(properties) {
                    if (properties)
                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                            if (properties[keys[i]] != null)
                                this[keys[i]] = properties[keys[i]];
                }

                /**
                 * Creates a new Heatmap instance using the specified properties.
                 * @function create
                 * @memberof market.v2.trade.Heatmap
                 * @static
                 * @param {market.v2.trade.IHeatmap=} [properties] Properties to set
                 * @returns {market.v2.trade.Heatmap} Heatmap instance
                 */
                Heatmap.create = function create(properties) {
                    return new Heatmap(properties);
                };

                /**
                 * Encodes the specified Heatmap message. Does not implicitly {@link market.v2.trade.Heatmap.verify|verify} messages.
                 * @function encode
                 * @memberof market.v2.trade.Heatmap
                 * @static
                 * @param {market.v2.trade.IHeatmap} message Heatmap message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                Heatmap.encode = function encode(message, writer) {
                    if (!writer)
                        writer = $Writer.create();
                    return writer;
                };

                /**
                 * Encodes the specified Heatmap message, length delimited. Does not implicitly {@link market.v2.trade.Heatmap.verify|verify} messages.
                 * @function encodeDelimited
                 * @memberof market.v2.trade.Heatmap
                 * @static
                 * @param {market.v2.trade.IHeatmap} message Heatmap message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                Heatmap.encodeDelimited = function encodeDelimited(message, writer) {
                    return this.encode(message, writer).ldelim();
                };

                /**
                 * Decodes a Heatmap message from the specified reader or buffer.
                 * @function decode
                 * @memberof market.v2.trade.Heatmap
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @param {number} [length] Message length if known beforehand
                 * @returns {market.v2.trade.Heatmap} Heatmap
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                Heatmap.decode = function decode(reader, length) {
                    if (!(reader instanceof $Reader))
                        reader = $Reader.create(reader);
                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.market.v2.trade.Heatmap();
                    while (reader.pos < end) {
                        var tag = reader.uint32();
                        switch (tag >>> 3) {
                        default:
                            reader.skipType(tag & 7);
                            break;
                        }
                    }
                    return message;
                };

                /**
                 * Decodes a Heatmap message from the specified reader or buffer, length delimited.
                 * @function decodeDelimited
                 * @memberof market.v2.trade.Heatmap
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @returns {market.v2.trade.Heatmap} Heatmap
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                Heatmap.decodeDelimited = function decodeDelimited(reader) {
                    if (!(reader instanceof $Reader))
                        reader = new $Reader(reader);
                    return this.decode(reader, reader.uint32());
                };

                /**
                 * Verifies a Heatmap message.
                 * @function verify
                 * @memberof market.v2.trade.Heatmap
                 * @static
                 * @param {Object.<string,*>} message Plain object to verify
                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
                 */
                Heatmap.verify = function verify(message) {
                    if (typeof message !== "object" || message === null)
                        return "object expected";
                    return null;
                };

                /**
                 * Creates a Heatmap message from a plain object. Also converts values to their respective internal types.
                 * @function fromObject
                 * @memberof market.v2.trade.Heatmap
                 * @static
                 * @param {Object.<string,*>} object Plain object
                 * @returns {market.v2.trade.Heatmap} Heatmap
                 */
                Heatmap.fromObject = function fromObject(object) {
                    if (object instanceof $root.market.v2.trade.Heatmap)
                        return object;
                    return new $root.market.v2.trade.Heatmap();
                };

                /**
                 * Creates a plain object from a Heatmap message. Also converts values to other types if specified.
                 * @function toObject
                 * @memberof market.v2.trade.Heatmap
                 * @static
                 * @param {market.v2.trade.Heatmap} message Heatmap
                 * @param {$protobuf.IConversionOptions} [options] Conversion options
                 * @returns {Object.<string,*>} Plain object
                 */
                Heatmap.toObject = function toObject() {
                    return {};
                };

                /**
                 * Converts this Heatmap to JSON.
                 * @function toJSON
                 * @memberof market.v2.trade.Heatmap
                 * @instance
                 * @returns {Object.<string,*>} JSON object
                 */
                Heatmap.prototype.toJSON = function toJSON() {
                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
                };

                /**
                 * Gets the default type url for Heatmap
                 * @function getTypeUrl
                 * @memberof market.v2.trade.Heatmap
                 * @static
                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns {string} The default type url
                 */
                Heatmap.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
                    if (typeUrlPrefix === undefined) {
                        typeUrlPrefix = "type.googleapis.com";
                    }
                    return typeUrlPrefix + "/market.v2.trade.Heatmap";
                };

                return Heatmap;
            })();

            trade.DownPair = (function() {

                /**
                 * Properties of a DownPair.
                 * @memberof market.v2.trade
                 * @interface IDownPair
                 */

                /**
                 * Constructs a new DownPair.
                 * @memberof market.v2.trade
                 * @classdesc Represents a DownPair.
                 * @implements IDownPair
                 * @constructor
                 * @param {market.v2.trade.IDownPair=} [properties] Properties to set
                 */
                function DownPair(properties) {
                    if (properties)
                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                            if (properties[keys[i]] != null)
                                this[keys[i]] = properties[keys[i]];
                }

                /**
                 * Creates a new DownPair instance using the specified properties.
                 * @function create
                 * @memberof market.v2.trade.DownPair
                 * @static
                 * @param {market.v2.trade.IDownPair=} [properties] Properties to set
                 * @returns {market.v2.trade.DownPair} DownPair instance
                 */
                DownPair.create = function create(properties) {
                    return new DownPair(properties);
                };

                /**
                 * Encodes the specified DownPair message. Does not implicitly {@link market.v2.trade.DownPair.verify|verify} messages.
                 * @function encode
                 * @memberof market.v2.trade.DownPair
                 * @static
                 * @param {market.v2.trade.IDownPair} message DownPair message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                DownPair.encode = function encode(message, writer) {
                    if (!writer)
                        writer = $Writer.create();
                    return writer;
                };

                /**
                 * Encodes the specified DownPair message, length delimited. Does not implicitly {@link market.v2.trade.DownPair.verify|verify} messages.
                 * @function encodeDelimited
                 * @memberof market.v2.trade.DownPair
                 * @static
                 * @param {market.v2.trade.IDownPair} message DownPair message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                DownPair.encodeDelimited = function encodeDelimited(message, writer) {
                    return this.encode(message, writer).ldelim();
                };

                /**
                 * Decodes a DownPair message from the specified reader or buffer.
                 * @function decode
                 * @memberof market.v2.trade.DownPair
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @param {number} [length] Message length if known beforehand
                 * @returns {market.v2.trade.DownPair} DownPair
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                DownPair.decode = function decode(reader, length) {
                    if (!(reader instanceof $Reader))
                        reader = $Reader.create(reader);
                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.market.v2.trade.DownPair();
                    while (reader.pos < end) {
                        var tag = reader.uint32();
                        switch (tag >>> 3) {
                        default:
                            reader.skipType(tag & 7);
                            break;
                        }
                    }
                    return message;
                };

                /**
                 * Decodes a DownPair message from the specified reader or buffer, length delimited.
                 * @function decodeDelimited
                 * @memberof market.v2.trade.DownPair
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @returns {market.v2.trade.DownPair} DownPair
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                DownPair.decodeDelimited = function decodeDelimited(reader) {
                    if (!(reader instanceof $Reader))
                        reader = new $Reader(reader);
                    return this.decode(reader, reader.uint32());
                };

                /**
                 * Verifies a DownPair message.
                 * @function verify
                 * @memberof market.v2.trade.DownPair
                 * @static
                 * @param {Object.<string,*>} message Plain object to verify
                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
                 */
                DownPair.verify = function verify(message) {
                    if (typeof message !== "object" || message === null)
                        return "object expected";
                    return null;
                };

                /**
                 * Creates a DownPair message from a plain object. Also converts values to their respective internal types.
                 * @function fromObject
                 * @memberof market.v2.trade.DownPair
                 * @static
                 * @param {Object.<string,*>} object Plain object
                 * @returns {market.v2.trade.DownPair} DownPair
                 */
                DownPair.fromObject = function fromObject(object) {
                    if (object instanceof $root.market.v2.trade.DownPair)
                        return object;
                    return new $root.market.v2.trade.DownPair();
                };

                /**
                 * Creates a plain object from a DownPair message. Also converts values to other types if specified.
                 * @function toObject
                 * @memberof market.v2.trade.DownPair
                 * @static
                 * @param {market.v2.trade.DownPair} message DownPair
                 * @param {$protobuf.IConversionOptions} [options] Conversion options
                 * @returns {Object.<string,*>} Plain object
                 */
                DownPair.toObject = function toObject() {
                    return {};
                };

                /**
                 * Converts this DownPair to JSON.
                 * @function toJSON
                 * @memberof market.v2.trade.DownPair
                 * @instance
                 * @returns {Object.<string,*>} JSON object
                 */
                DownPair.prototype.toJSON = function toJSON() {
                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
                };

                /**
                 * Gets the default type url for DownPair
                 * @function getTypeUrl
                 * @memberof market.v2.trade.DownPair
                 * @static
                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns {string} The default type url
                 */
                DownPair.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
                    if (typeUrlPrefix === undefined) {
                        typeUrlPrefix = "type.googleapis.com";
                    }
                    return typeUrlPrefix + "/market.v2.trade.DownPair";
                };

                return DownPair;
            })();

            trade.HeatVol = (function() {

                /**
                 * Properties of a HeatVol.
                 * @memberof market.v2.trade
                 * @interface IHeatVol
                 */

                /**
                 * Constructs a new HeatVol.
                 * @memberof market.v2.trade
                 * @classdesc Represents a HeatVol.
                 * @implements IHeatVol
                 * @constructor
                 * @param {market.v2.trade.IHeatVol=} [properties] Properties to set
                 */
                function HeatVol(properties) {
                    if (properties)
                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                            if (properties[keys[i]] != null)
                                this[keys[i]] = properties[keys[i]];
                }

                /**
                 * Creates a new HeatVol instance using the specified properties.
                 * @function create
                 * @memberof market.v2.trade.HeatVol
                 * @static
                 * @param {market.v2.trade.IHeatVol=} [properties] Properties to set
                 * @returns {market.v2.trade.HeatVol} HeatVol instance
                 */
                HeatVol.create = function create(properties) {
                    return new HeatVol(properties);
                };

                /**
                 * Encodes the specified HeatVol message. Does not implicitly {@link market.v2.trade.HeatVol.verify|verify} messages.
                 * @function encode
                 * @memberof market.v2.trade.HeatVol
                 * @static
                 * @param {market.v2.trade.IHeatVol} message HeatVol message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                HeatVol.encode = function encode(message, writer) {
                    if (!writer)
                        writer = $Writer.create();
                    return writer;
                };

                /**
                 * Encodes the specified HeatVol message, length delimited. Does not implicitly {@link market.v2.trade.HeatVol.verify|verify} messages.
                 * @function encodeDelimited
                 * @memberof market.v2.trade.HeatVol
                 * @static
                 * @param {market.v2.trade.IHeatVol} message HeatVol message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                HeatVol.encodeDelimited = function encodeDelimited(message, writer) {
                    return this.encode(message, writer).ldelim();
                };

                /**
                 * Decodes a HeatVol message from the specified reader or buffer.
                 * @function decode
                 * @memberof market.v2.trade.HeatVol
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @param {number} [length] Message length if known beforehand
                 * @returns {market.v2.trade.HeatVol} HeatVol
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                HeatVol.decode = function decode(reader, length) {
                    if (!(reader instanceof $Reader))
                        reader = $Reader.create(reader);
                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.market.v2.trade.HeatVol();
                    while (reader.pos < end) {
                        var tag = reader.uint32();
                        switch (tag >>> 3) {
                        default:
                            reader.skipType(tag & 7);
                            break;
                        }
                    }
                    return message;
                };

                /**
                 * Decodes a HeatVol message from the specified reader or buffer, length delimited.
                 * @function decodeDelimited
                 * @memberof market.v2.trade.HeatVol
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @returns {market.v2.trade.HeatVol} HeatVol
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                HeatVol.decodeDelimited = function decodeDelimited(reader) {
                    if (!(reader instanceof $Reader))
                        reader = new $Reader(reader);
                    return this.decode(reader, reader.uint32());
                };

                /**
                 * Verifies a HeatVol message.
                 * @function verify
                 * @memberof market.v2.trade.HeatVol
                 * @static
                 * @param {Object.<string,*>} message Plain object to verify
                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
                 */
                HeatVol.verify = function verify(message) {
                    if (typeof message !== "object" || message === null)
                        return "object expected";
                    return null;
                };

                /**
                 * Creates a HeatVol message from a plain object. Also converts values to their respective internal types.
                 * @function fromObject
                 * @memberof market.v2.trade.HeatVol
                 * @static
                 * @param {Object.<string,*>} object Plain object
                 * @returns {market.v2.trade.HeatVol} HeatVol
                 */
                HeatVol.fromObject = function fromObject(object) {
                    if (object instanceof $root.market.v2.trade.HeatVol)
                        return object;
                    return new $root.market.v2.trade.HeatVol();
                };

                /**
                 * Creates a plain object from a HeatVol message. Also converts values to other types if specified.
                 * @function toObject
                 * @memberof market.v2.trade.HeatVol
                 * @static
                 * @param {market.v2.trade.HeatVol} message HeatVol
                 * @param {$protobuf.IConversionOptions} [options] Conversion options
                 * @returns {Object.<string,*>} Plain object
                 */
                HeatVol.toObject = function toObject() {
                    return {};
                };

                /**
                 * Converts this HeatVol to JSON.
                 * @function toJSON
                 * @memberof market.v2.trade.HeatVol
                 * @instance
                 * @returns {Object.<string,*>} JSON object
                 */
                HeatVol.prototype.toJSON = function toJSON() {
                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
                };

                /**
                 * Gets the default type url for HeatVol
                 * @function getTypeUrl
                 * @memberof market.v2.trade.HeatVol
                 * @static
                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns {string} The default type url
                 */
                HeatVol.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
                    if (typeUrlPrefix === undefined) {
                        typeUrlPrefix = "type.googleapis.com";
                    }
                    return typeUrlPrefix + "/market.v2.trade.HeatVol";
                };

                return HeatVol;
            })();

            trade.CurrencyRate = (function() {

                /**
                 * Properties of a CurrencyRate.
                 * @memberof market.v2.trade
                 * @interface ICurrencyRate
                 */

                /**
                 * Constructs a new CurrencyRate.
                 * @memberof market.v2.trade
                 * @classdesc Represents a CurrencyRate.
                 * @implements ICurrencyRate
                 * @constructor
                 * @param {market.v2.trade.ICurrencyRate=} [properties] Properties to set
                 */
                function CurrencyRate(properties) {
                    if (properties)
                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                            if (properties[keys[i]] != null)
                                this[keys[i]] = properties[keys[i]];
                }

                /**
                 * Creates a new CurrencyRate instance using the specified properties.
                 * @function create
                 * @memberof market.v2.trade.CurrencyRate
                 * @static
                 * @param {market.v2.trade.ICurrencyRate=} [properties] Properties to set
                 * @returns {market.v2.trade.CurrencyRate} CurrencyRate instance
                 */
                CurrencyRate.create = function create(properties) {
                    return new CurrencyRate(properties);
                };

                /**
                 * Encodes the specified CurrencyRate message. Does not implicitly {@link market.v2.trade.CurrencyRate.verify|verify} messages.
                 * @function encode
                 * @memberof market.v2.trade.CurrencyRate
                 * @static
                 * @param {market.v2.trade.ICurrencyRate} message CurrencyRate message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                CurrencyRate.encode = function encode(message, writer) {
                    if (!writer)
                        writer = $Writer.create();
                    return writer;
                };

                /**
                 * Encodes the specified CurrencyRate message, length delimited. Does not implicitly {@link market.v2.trade.CurrencyRate.verify|verify} messages.
                 * @function encodeDelimited
                 * @memberof market.v2.trade.CurrencyRate
                 * @static
                 * @param {market.v2.trade.ICurrencyRate} message CurrencyRate message or plain object to encode
                 * @param {$protobuf.Writer} [writer] Writer to encode to
                 * @returns {$protobuf.Writer} Writer
                 */
                CurrencyRate.encodeDelimited = function encodeDelimited(message, writer) {
                    return this.encode(message, writer).ldelim();
                };

                /**
                 * Decodes a CurrencyRate message from the specified reader or buffer.
                 * @function decode
                 * @memberof market.v2.trade.CurrencyRate
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @param {number} [length] Message length if known beforehand
                 * @returns {market.v2.trade.CurrencyRate} CurrencyRate
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                CurrencyRate.decode = function decode(reader, length) {
                    if (!(reader instanceof $Reader))
                        reader = $Reader.create(reader);
                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.market.v2.trade.CurrencyRate();
                    while (reader.pos < end) {
                        var tag = reader.uint32();
                        switch (tag >>> 3) {
                        default:
                            reader.skipType(tag & 7);
                            break;
                        }
                    }
                    return message;
                };

                /**
                 * Decodes a CurrencyRate message from the specified reader or buffer, length delimited.
                 * @function decodeDelimited
                 * @memberof market.v2.trade.CurrencyRate
                 * @static
                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                 * @returns {market.v2.trade.CurrencyRate} CurrencyRate
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                CurrencyRate.decodeDelimited = function decodeDelimited(reader) {
                    if (!(reader instanceof $Reader))
                        reader = new $Reader(reader);
                    return this.decode(reader, reader.uint32());
                };

                /**
                 * Verifies a CurrencyRate message.
                 * @function verify
                 * @memberof market.v2.trade.CurrencyRate
                 * @static
                 * @param {Object.<string,*>} message Plain object to verify
                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
                 */
                CurrencyRate.verify = function verify(message) {
                    if (typeof message !== "object" || message === null)
                        return "object expected";
                    return null;
                };

                /**
                 * Creates a CurrencyRate message from a plain object. Also converts values to their respective internal types.
                 * @function fromObject
                 * @memberof market.v2.trade.CurrencyRate
                 * @static
                 * @param {Object.<string,*>} object Plain object
                 * @returns {market.v2.trade.CurrencyRate} CurrencyRate
                 */
                CurrencyRate.fromObject = function fromObject(object) {
                    if (object instanceof $root.market.v2.trade.CurrencyRate)
                        return object;
                    return new $root.market.v2.trade.CurrencyRate();
                };

                /**
                 * Creates a plain object from a CurrencyRate message. Also converts values to other types if specified.
                 * @function toObject
                 * @memberof market.v2.trade.CurrencyRate
                 * @static
                 * @param {market.v2.trade.CurrencyRate} message CurrencyRate
                 * @param {$protobuf.IConversionOptions} [options] Conversion options
                 * @returns {Object.<string,*>} Plain object
                 */
                CurrencyRate.toObject = function toObject() {
                    return {};
                };

                /**
                 * Converts this CurrencyRate to JSON.
                 * @function toJSON
                 * @memberof market.v2.trade.CurrencyRate
                 * @instance
                 * @returns {Object.<string,*>} JSON object
                 */
                CurrencyRate.prototype.toJSON = function toJSON() {
                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
                };

                /**
                 * Gets the default type url for CurrencyRate
                 * @function getTypeUrl
                 * @memberof market.v2.trade.CurrencyRate
                 * @static
                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns {string} The default type url
                 */
                CurrencyRate.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
                    if (typeUrlPrefix === undefined) {
                        typeUrlPrefix = "type.googleapis.com";
                    }
                    return typeUrlPrefix + "/market.v2.trade.CurrencyRate";
                };

                return CurrencyRate;
            })();

            return trade;
        })();

        return v2;
    })();

    return market;
})();

module.exports = $root;
