Each Range Filter parameter (see Section 3.3.2) carries a sequence of Ranges, encoded as follows:
Range {
Start (vi64),
[End (vi64)]
}
Length (vi64) is the byte count of all fields after itself. When Length is 0, there is no filter and no further fields are present. This can be used in REQUEST_UPDATE to remove a filter. The Object Property and Track Property Filters include a Property Type (vi64) which follows SetID.
Each Range is an inclusive Start/End pair. End is optional in the last pair; if omitted it indicates the last Range is open-ended.
Each Start is delta encoded from the prior Range's End (or from 0 for the
first Range), and End is delta encoded from its own Start. If adding the delta
would exceed 2^64-1, the request MUST be rejected with INVALID_FILTER.
For example, ranges 3-5 and 10-15 encode as: Start=3, End=2, Start=5, End=5.